AXI4与AXI3的主要区别

2024-03-04 16:20
文章标签 区别 主要 axi4 axi3

本文主要是介绍AXI4与AXI3的主要区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 前言

        在SOC各种总线中,AXI是最重要的总线,没有之一。不管是在工作中,还是在面试中,AXI协议是一个必须精通的知识点。ARM 从AMBA1到AMBA5一共五代的AMBA总线中,AXI有两代,分别是AMBA3 的AXI3和AMBA4的AXI4。可能很多刚入门的工程师即使把协议读了很多次,还是不能深入理解。这是因为,ARM 没有告诉你,需要你去了解CPU架构,了解cache,了解存储系统,了解系统架构等等知识。只有了解了这些知识才能理解USER/QOS/AxCACHE等信号的具体作用,因为AXI总线本来就是为了解决系统互联而产生的。

2. 区别

2.1 Burst support

        AXI4对burst length进行了扩展:

        AXI3最大burst length是16;AxLEN位宽是4bit。AXI4支持最大到256,AxLEN位宽是8bit;但是这也是有限制的:

  1. 只有INCR burst type支持超过16的Burst;WRAP and FIXED burst types 最大还是支持16的Burst,和AXI3保持一致;
  2. Exclusive accesses 的burst length 必须小于 16.

        但是在实际使用中,很少使用支持超过Burst Length超过16的命令,这是因为Burst Length太长会一直占用总线,影响了系统性能;而且AXI总线的一个限制就是Burst一旦开始是不能取消的,如果Burst太长,一旦出错,影响比较大;比如在ARM的CPU中,就没有使用超过16 beats的Burst。

2.2 Quality of service signaling

        AXI4 增加了2个4-bit QoS 命令信号:

        AWQOS 4-bit QoS identifier sent on the write address channel for each write transaction

        ARQOS 4-bit QoS identifier sent on the read address channel for each read transaction.

        但是AXI4协议并没有规定QoS的用法,也规定不了,因为这是一个系统全面考虑的特性。AXI4协议不可能规定某个master比如CPU必须是多少QoS,这和SoC的系统实现强相关,一般是架构师会定义。AXI4建议的QoS是AxQOS值越大,优先级约高;但是要注意的是,有些SoC恰恰相反,AxQOS值越大,优先级约低,所以要根据Spec来;

        QoS信号的增加是随着越来越多的master对总线需求冲突越来越明显,系统带宽就那么多,那么如何给不同的IP分配不同的QoS就是一个架构师必备的功底,而且没有不变的规律可以遵守。

2.3 Multiple region interfaces

        AXI4为了支持区域标识,增加了两个4-bits的区域标识符:

        AWREGION region identifier sent on the write address channel for each write transaction

        ARREGION region identifier sent on the read address channel for each read transaction.

        区域标识符的使用意味着slave不必支持不同逻辑接口之间的地址解码。如果一个slave把内部可访问地址分为多个区域,那么一般情况下,只需要通过高位地址来区分不同的区域;如果采用了区域标识符,那么就不需要采用地址解码区分了。

        另外,通过划分region,对某些physical allocation进行保护,例如某个region只能被non-secure write,某个region只能被secure write访问;这是一个可选的功能,一般用的比较少,而且ARM自己的CPU都很少支持。

2.4 Write interleaving

        AXI4协议去掉了WID信号,因此不再支持write interleaving。这是AXI4和AXI3的很重要和很大的一个改变。

        Write interleaving的去除使得在WID信号上传递的信息是多余的。所有写入数据必须与相关的写入地址顺序相同,任何需要WID信息都可以从写入地址通道信号AWID中获得这些信息。

        在AWID=0的数据还未发送完后,允许AWID=1的数据先发送;这样带来的代价是发送端必须要缓存多个ID的wdata,不管是maser还是总线interconnection都必须要增加大量的缓存,所以增加了面积;

        另外,Write interleaving增加了系统总线设计的复杂度,而且很容易造成死锁,所以虽然AXI3支持Write interleaving,但是大家在设计的时候,master基本都没支持Write interleaving。所以AXI4就把Write interleaving的支持去掉了。

2.5 Write response dependencies

        AXI4对Write response的产生做了更严格是限制。

        AXI3必须等到了WVALID和WREADY后才能把BVALID置高来响应,也就是说只要收到了所有数据,SLAVE就可以发写响应。

        AXI4规定,必须等到AWVALID,AWREADY,WVALID, WREADY, and WLAST 都为高(不是同一时刻都为高)后,SLAVE才能发BVALID进行写响应。也就是不仅仅要等数据通路,而且要等地址通路,并且明确了要等WLAST。这样能保证响应的时候Transaction是真正完成的。

        AXI3对BVALID的规定其实是有漏洞的,可能Transaction还未真正完成就发送了写响应。AXI4的更新更加合理和严谨。

2.6 User signals

        AXI4增加了user信号:

        AWUSER Write address channel User signals.

        ARUSER Read address channel User signals.

        WUSER Write data channel User signals.

        RUSER Read data channel User signals.

        BUSER Write response channel User signals.

        AMBA4中并未对USER信号做任何规定,只是建议不要使用这个信号,防止IP直接互联不兼容。但是实际soc中,这个信号使用的还是比较多的,用来传输sideband信号十分有用。AMBA5中进一步规定了USER信号的位宽:

        所以说,这个信号在SOC内部使用比较多,但是如果要和外部互联,比如IP 厂商一般都不会使用,防止兼容性问题。

2.7 Locked transactions

        AXI4去掉了对locked transaction的支持,对信号的影响就是AxLOCK从AXI3的2-bits减少到了1bit:

        如上图所示,AXI4去掉了Locked access。

        为什么会去掉Locked access,这是因为Locked access不好用,当然这是废话。Locked access和Exclusive access的区别是作用的对象不同。

        Locked access作用的对象是总线,一旦发生Locked access,那么其他的master都不能使用总线了,在一个复杂的SOC系统中,Locked access对系统的影响就太大了,万一发生Locked access的master出点啥问题,整个系统就挂死了。这种牺牲整个系统来成就某个master的机制当然就会被抵制,最后AXI4直接不再支持这种方式。

        Exclusive access 作用的对象是对应的Slave,支持Exclusive access的Slave会在slave中实现一个Exclusive access monitor,如果monitor记录了能够访问的master,那么对应的master就能通过Exclusive access来访问,其他的未记录的Exclusive access就都不能访问。Exclusive access对总线系统是没有要求的,只是对slave做了特殊要求,即使出错也不会影响系统其他部分,最多访问失败而已。

        现在一般的AXI master都不会支持Locked access,如果一个IP支持Locked access,大概率没人会买它了。对系统来说不仅实现麻烦,而且还存在挂死系统的风险。

2.8 AWCACHE and ARCACHE 

        AXI4的AWCACHE[3:0] 和ARCACHE[3:0]的含义较AXI3有很大的改变,如下图所示(括号内的是AXI3的编号):

        AWCACHE[3:0] 和ARCACHE[3:0]的属性的改变主要是有用ARM CPU架构的演进,定义的memory属性越来约多,越来越复杂,所以对AWCACHE[3:0] 和ARCACHE[3:0]的解释就越来越多。这些和CPU的架构,还有CPU存储系统有很大的相关性,这里就不详细解释了,如果要深入理解,必须去学习ARM CPU V8架构才行。

2.9 AXI-Lite

        AXI4相对于AXI3的另外一个改变就是定义了AXI-Lite协议。lite协议其实主要目的是简化protocol,用于系统上对register的访问,在实际工作中接触的比较少,这里就不详细解释了。

3. AXI3和AXI4的互联

        上面介绍了AXI3和AXI4的主要区别。实际SOC中,有些IP是AXI3接口的,有些IP是AXI4接口的,那么这些不同AXI版本之间的互联需要注意什么呢?可以分成下面两种情况:

3.1 AXI4 Master连接到AXI3 Slave

        AXI4 Master连接到AXI3 Slave要注意以下几点:

  1. 由于AXI4是没有WID信号的,不能直接把AXI4 Master的AWID直连到AXI3 Slave 的WID上,这是由于如果AXI4 Master能够发出outstanding的命令,当前AWID值和当前的WID值就不是同一个了。通常的做法是把AWID都存到一个FIFO中,等到数据传完了(WLAST收到了)再切换到下一个AWID. 把这样读出的AWID作为WID使用。
  2. AXI3的AxLOCK信号是2-bits的,做法就是直接将AxLOCK[2:0](slave) = {1’b0,AxLOCK(master)}即可。
  3. AXI4 Master不能产生超过16beat的burst,通常也不会,但是要注意;
  4. 系统总线要么统一用AXI3, 要么统一用AXI4;
  5. AXI3 Slave必须注意BVALID的产生要符合AXI4协议,需要修改逻辑,一般也不会有问题。
  6. QOS/USER/REGION信号等多余的信号需要做额外的处理。

3.2 AXI3 Master连接到AXI4 Slave

  1. 由于AXI4是没有WID信号的,所以直接把WID Floating就行;
  2. AXI4 Slave的AxLOCK[0] = AxLOCK[0](slave)即可;
  3. AXI4 Slave的AxLEN[7:4]=4’h0 即可;
  4. 系统总线要么统一用AXI3, 要么统一用AXI4;
  5. QOS/USER/REGION信号等多余的信号需要做额外的处理。
  6. AXI3 master必须不能支持Write interleaving,否则必须修改AXI3 master

        上面这些就是AXI3和AXI4互联的一些注意事项,在实际的工作中,很多IP都是AXI3兼容AXI4的,可以减少一些工作。否则就必须做AXI3和AXI4协议转换逻辑了。

4. 常用问题

1. 为什么有单独的写响应通道?
        VALID/READY握手机制只允许一个方向的数据流,所以对于读事务,数据(data和resp)从slave流向master,而对于写事务,数据从master流向slave,所以就需要单独的响应通道。

        同时,写回应信号的使用频率通常比写数据的使用频率要低,而读回应信号与读数据的使用频率是一样的。为什么呢?我们假设在写数据时,进行了一次突发式的传输,传输了16组数据,写回应只会在最后一个写数据时进行回应,前15组数据是不进行回应的。其原因是因为只有收到最后一组数据后,才能判断收到的写数据是完整的,写回应此时才有意义,写操作才有效。在这个例子中写回应的使用频率为1/16,如果突发传输的长度更大,使用频率将会更低。

        而读传输在16组数据的读取过程中将会回应16次,读取每个数据过后均会进行读回应。其原因是读回应的目的是指示SLAVE的一些状态,SLAVE可能在前8个读取数据时状态为OKAY,而后8个数据状态为ERROR,且状态值为ERROR时并非是MASTER未访问到SLAVE,而是SLAVE由于自身的状态想要返回给MASTER一个ERROR的状态值。也就是说读回应本身也是SLAVE想要返回的一种状态量,回应是以突发包数据为单位的,而不是像写回应一样是以传输任务为单位的,因此使用频率为16/16,将读回应放在读数据通道是符合现实情况,且节省资源的

2.为什么在burst 写中,不是每拍都有写响应。但是在burst 读中,每拍都有一个单独的读响应?

        所有的AXI信道只在1个方向传递信息 ,所以才需要一个单独的写响应通道。在大多数应用中不管slave能不能接受完整的数据这个burst传输都会执行完成,slave无需在每一拍都返回ERROR响应

3. Exclusive 读写事务是什么?在哪里使用?
        如果一个内存区域被多个master共享,某个master需要希望确保在没有其他master更改共享内存的情况下完成读然后写的序列,就可以使用Exclusive 传输

这篇关于AXI4与AXI3的主要区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/773745

相关文章

便携式气象仪器的主要特点

TH-BQX9】便携式气象仪器,也称为便携式气象仪或便携式自动气象站,是一款高度集成、低功耗、可快速安装、便于野外监测使用的高精度自动气象观测设备。以下是关于便携式气象仪器的详细介绍:   主要特点   高精度与多功能:便携式气象仪器能够采集多种气象参数,包括但不限于风速、风向、温度、湿度、气压等,部分高级型号还能监测雨量和辐射等。数据采集与存储:配备微电脑气象数据采集仪,具有实时时钟、数据存

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

native和static native区别

本文基于Hello JNI  如有疑惑,请看之前几篇文章。 native 与 static native java中 public native String helloJni();public native static String helloJniStatic();1212 JNI中 JNIEXPORT jstring JNICALL Java_com_test_g

Android fill_parent、match_parent、wrap_content三者的作用及区别

这三个属性都是用来适应视图的水平或者垂直大小,以视图的内容或尺寸为基础的布局,比精确的指定视图的范围更加方便。 1、fill_parent 设置一个视图的布局为fill_parent将强制性的使视图扩展至它父元素的大小 2、match_parent 和fill_parent一样,从字面上的意思match_parent更贴切一些,于是从2.2开始,两个属性都可以使用,但2.3版本以后的建议使

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

javascript中break与continue的区别

在javascript中,break是结束整个循环,break下面的语句不再执行了 for(let i=1;i<=5;i++){if(i===3){break}document.write(i) } 上面的代码中,当i=1时,执行打印输出语句,当i=2时,执行打印输出语句,当i=3时,遇到break了,整个循环就结束了。 执行结果是12 continue语句是停止当前循环,返回从头开始。

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository。如果采用原始直接打包放到lib目录的方式进行处理,便对项目的管理带来一些不必要的麻烦。例如版本升级后需要重新打包并,替换原有jar包等等一些额外的工作量和麻烦。为了避免这些不必要的麻烦,通常我们

ActiveMQ—Queue与Topic区别

Queue与Topic区别 转自:http://blog.csdn.net/qq_21033663/article/details/52458305 队列(Queue)和主题(Topic)是JMS支持的两种消息传递模型:         1、点对点(point-to-point,简称PTP)Queue消息传递模型:         通过该消息传递模型,一个应用程序(即消息生产者)可以

分布式系统的主要考虑

异构性:分布式系统由于基于不同的网路、操作系统、计算机硬件和编程语言来构造,必须要考虑一种通用的网络通讯协议来屏蔽异构系统之间的禅意。一般交由中间件来处理这些差异。缺乏全球时钟:在程序需要协作时,它们通过交换消息来协调它们的动作。紧密的协调经常依赖于对程序动作发生时间的共识,但是,实际上网络上计算机同步时钟的准确性受到极大的限制,即没有一个正确时间的全局概念。这是通过网络发送消息作为唯一的通信方式

深入探讨:ECMAScript与JavaScript的区别

在前端开发的世界中,JavaScript无疑是最受欢迎的编程语言之一。然而,很多开发者在使用JavaScript时,可能并不清楚ECMAScript与JavaScript之间的关系和区别。本文将深入探讨这两者的不同之处,并通过案例帮助大家更好地理解。 一、什么是ECMAScript? ECMAScript(简称ES)是一种脚本语言的标准,由ECMA国际组织制定。它定义了语言的语法、类型、语句、