AMBA总线协议-axi

1.outstanding,out-of-order,interleaving

outstanding:前一笔数据发送完之前就能发送别的地址的能力(针对ddr的bank interleaving)

out-of-order:回来的数据和发送的命令可以顺序不一样(针对读操作,效率提升同样是针对ddr)

interleaving:不同命令之间回来的数据可以相互交叉(针对读操作)

2.关于id的使用

一些基本的点:

outstanding可以通过id相同的方式来处理,out-of-order需要id不同;

一个transaction可以有多个transfer,transaction的不同transfer可以是相同的id,也可以是不同的id,但是transfer内部的数据一定是相同的id;一个master内部如果支持多线程,那么针对不同的线程其id应该不同;slave实际的id应该是可以配置的,也就是master的id+配置id,这个配置id主要反应了slave回应内容给master的时候返回路径+这个转换器上具体的哪一个master。

(1)多个master和多个slave之间的id使用(假设回来的数据和发过去的命令顺序是一致的)

(2)outstanding:可以针对读和写操作,写操作的化需要master有一个FIFO来存在BRESP,outstanding depth是8的化,那就需要8个FIFO,每隔FIFO的深度要保证一个outsanding回来的resp能够全部被存下来。这样做的目的是因为尽量将这种数据处理放在master内部,而不用valid或ready来反压总线,反压总线会导致效率下降。

(3)out-of-order:乱序的时候需要使用buffer存储,而不能仅仅使用fifo,由于顺序不一致。

(4)重排序的时候需要有两个缓冲区,分别是事务缓存区和数据缓冲区。事务缓冲区按照到达顺序存放读事务(存放的事务信息一般包含id和地址),就绪的数据与缓冲区中首个事务进行比较(比较地址是否相同),若地址匹配则直接输出,否则进入数据缓存区。

具体参考:https://zhuanlan.zhihu.com/p/149071260

(5)对于多个master和多个slave之间的互联:需要注意扩展id问题,id=master给的id+转换器的id+转换器上的具体那一个master标记,因此slave的id一般比master的id位数宽;支持仲裁机制,内部存在缓冲区;支持重排序 (由interconnect保证重排序的顺序)

具体参考:深入 AXI4 总线(五B)多主机传输事务场景 - 知乎 (zhihu.com)

3.原子操作(解决的是一次读写必须连续的问题):

一次的读写操作是被绑定的,其他的读写操作是不能插入这个读写过程的;

原子操作主要分为两种:lock access,exclusive access

lock access:(1)lock transaction传输前需要这个master没有其他的outstanding transaction还没有完成(2)总线会保证只有这个master才能访问这个slave,总线会在协议上提供一个ar block和aw block。总线通过这个信息告诉其他master有一个lock 的transaction正在进行,如果有其他master访问这个slave,总线会通过这两个信号将其反压住,直到lock被释放了才会继续进行访问(这个过程被这两个信号和arbiter等组件保证)(3)master必须保证在一次lock 传输过程中的ARID和AWID相同。

exclusive access

(1)transaction必须要有多个data transfer(2)transaction必须要有相同的地址通道信息(3)地址必须和此次传输的数据是对齐的(4)需要exclusive access monitor

关于monitor的工作原理:monitor有不同的种类,有的记录多种信息,有的可能只会记录id和address,根据实际需要来。读操作后,会将这个读操作的相关信息记录下,具有相同信息的写操作来的时候会将这部分记录的信息清除并且给exokay的回应。需要注意的是,清除是将monitor所有内容都清除,而不是仅仅针对某一个id的信息进行清除。

实际上exclusive access monitor属于global monitor,也就是会接在互联结构之后,除此以外在ARM体系中还存在一个lock monitor。

lock monitor主要针对cacheable属性的数据进行检测,这其中还分是否为shareable;

global monitor主要针对的non-cacheable和device类型的检测。

具体参考:

ARMv8之exclusive操作(三) exclusive monitor | 骏的世界 (lujun.org.cn)

4.一些设计过程中需要注意的点:

write issuing capablity:写的过程中,在没有收到response之间最多能往外发送多少transaction(也就是w通道的数据)

write interleave capabilty(axi3 only):没收到response之前就发送write的id的能力,从这个角度来说,master如果具备这种能力,那么相应的slave应该配置相应的buffer用来存储这部分命令。原因在于如果不设置相应的buffer,比如先发送了id0的数据,如果此时interleave了,那么会在id0没有发送完之前就会发送id1的相关内容,如果salve不设置这样的buffer,那么就会一致在等id0的信息,系统可能就会死锁。

write acceptance capability:slave在没有给respnse之前能接收数据的能力

write interleave depth(axi3 only):slave用来表征没有接收到response之前能接收多少个不同AWID的数据。

read issuing capablity:类似于write issuing capablity,针对master的读操作。

read acceptace capablity:类似于write acceptance capability,针对于slave的读操作,接收能力。

read data reorder depth:Slave可以用于存储乱序地址的地方,其数量表示能存储多少个,如果为1表示不能reorder

5.实际设计过程中重排序模型:

在axi3中针对写操作的乱序命令发送的模型如下:

假设aw的id和w的id仅仅有两位,也就是针对aw和w的id每个都有一个FIFO,用来存相应的地址和数据,当这两个FIFO都满的时候,对应id的valid信号拉高,对于arbiter来说,输入有四个valid、data(这个data包含aw通道的信息和w通道的信息),通过仲裁输出唯一的valid和data。

从顶层上来看就是就是输入的id信息是乱序的,但是最终输出的id信息是对齐的。这种方式十分消耗资源,并且应用场景不多,因此axi4将其取消掉了。

针对读操作的乱序模型:首先读命令的id(ar-id)输入给slave的时候需要记录下来(存在id_write_fifo中),slave通过自己的调度机制实现往外发出对应的乱序的id,axi_slave通过自己调度机制实现对id重新排序的这个顺序,需要依次的存在id_read_fifo中。这里假设我发出去的1号命令,那么先回来的数据一定是1号命令对应的数据。而数据回来的时候,将id_read_fifo中的id号退出来作为buffer(也就是sram)的地址,将数据写道对应地址空间去。同时这个数据位还有一个有效位标志,当数据写入的时候该有效位拉高。对于id_write_fifo来说,将先进的id推出来(这个id是r_id),去检查buffer中对应地址的有效位是否为高,如果为高,那么就将数据送出去,并且id_write_fifo推出下一id。

 这样通过buffer的操作是较为简单的,除此以外还可以强行使用fifo来实现,也就是将id_read_fifo推出来的id和id_write_fifo中推出来的id进行比较,只有相同id的情况下才会将数据给出,不同的化则需要将这个数据再用一个FIFO存起来,这种比较麻烦。

具体参考:深入 AXI4 总线(五A)单机多传输事务场景 - 知乎 (zhihu.com)

outstanding操作模型:针对aw通道,也就是aw通道的命令发送出去可以不用等待B通道的相应回来就直接发送下一个aw通道的命令。这种模型需要在axi_slave中例化一个buffer,这个buffer的地址是id,每个地址的数据是一个flag信息,对于不同的地址直接存到buffer里就可以了,对于相同的id需要保证当前id位置上的flag为低才能继续传输。而这个flag只有在B通道对于的相应的id回来以后才会将这个flag拉低。比如id为'b10,对于buffer的地址为3,在3地址的数据上写1,如果B通道的相应没有回来的时候,那么这个地址3的数据始终为1,只有回来的时候才会对这一位写0.而当地址3的数据为1,同时又来了一个id为'b10的命令,那么会反压master直到之前的那部分响应回来后才会接收这个数据。

总的来说,针对id需要有如下使用的准则:

(1)对于具有相同的awid,slave需要保证完成每个id的顺序是和master发出的地址顺序相同;对于不同的master但是id相同或者说不同id的情况,没有顺序要求(因为写过程存在地址,而axi4的master保证了发的数据和地址的顺序是一致的,直接根据地址来分配即可)。

??这里是不是指BID???

(2)对于ARID,由于返回读数据给master的时候需要辨别回给哪个master,因此存在两种情况,对于来自相同slave的相同arid,slave需要保证回地址的顺序一定是按照master发送地址的顺序,而对于不同slave但是具有相同id的情况,bus_matrix需要保证这一点(将id位进行扩展确保回来的数据知道是那个id)

疑问:

1.乱序传输的时候回来数据实际上是通过返回的扩展id来区分是来自那个命令的吧,只是说由于回来顺序不一样master中我可能需要一个buffer把顺序不一样的数据处理一下,在进行操作是这个意思吗,我看网上强调如果有这种乱序的传输的时候master和slave都应该有相应的buffer来把这个数据存储一下,这个buffer该怎么理解呢?out of order处理的时候为什么一定要设置buffer用fifo不可以吗,你有ID不就能直接对应上吗,我用每个id做一个FIFO,对应的id的数据到这个id对应的FIFO去不就可以了吗,另外如果通过buffer来写的化,是不是就是相当于写一个存储器?

参考重排序模型。

2.exclusive monitor先读后写  为什么要先读后写  是模仿软件的操作吗  清除的时候是把所有内容都清掉吗?

3.interleave depth的概念,是不是只在读过程中起作用 ,在master和slave中的interleave depth是不是表示为没有接收response之前发送和接收AWID的能力?为什么是指存储ID的能力呢,interleave不是表示数据交错的情况的深度吗?

4.write acceptance capability:slave在没有给respnse之前能接收数据的能力,这里的接收数据的能力是指w通道的data吗?

是的

5.read data reorder depth:Slave可以用于存储乱序地址的地方,其数量表示能存储多少个,如果为1表示不能reorder?这个该怎么理解呢,是不是这个参数表示的是id相同的时候回来的数据顺序不同,需要slave或者bus matrix来实现对这个回来的数据重新排序?

  • 8
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
协同过滤算法(Collaborative Filtering)是一种经典的推荐算法,其基本原理是“协同大家的反馈、评价和意见,一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息”。它主要依赖于用户和物品之间的行为关系进行推荐。 协同过滤算法主要分为两类: 基于物品的协同过滤算法:给用户推荐与他之前喜欢的物品相似的物品。 基于用户的协同过滤算法:给用户推荐与他兴趣相似的用户喜欢的物品。 协同过滤算法的优点包括: 无需事先对商品或用户进行分类或标注,适用于各种类型的数据。 算法简单易懂,容易实现和部署。 推荐结果准确性较高,能够为用户提供个性化的推荐服务。 然而,协同过滤算法也存在一些缺点: 对数据量和数据质量要求较高,需要大量的历史数据和较高的数据质量。 容易受到“冷启动”问题的影响,即对新用户或新商品的推荐效果较差。 存在“同质化”问题,即推荐结果容易出现重复或相似的情况。 协同过滤算法在多个场景中有广泛的应用,如电商推荐系统、社交网络推荐和视频推荐系统等。在这些场景中,协同过滤算法可以根据用户的历史行为数据,推荐与用户兴趣相似的商品、用户或内容,从而提高用户的购买转化率、活跃度和社交体验。 未来,协同过滤算法的发展方向可能是结合其他推荐算法形成混合推荐系统,以充分发挥各算法的优势。
AMBA协议是指Advanced Microcontroller Bus Architecture(高级微控制器总线结构)协议,其中包括多个不同的总线协议,用于在现代SoC(系统级芯片)设计中实现高效的内部通信。其中,AMBA的第四代是AXI(Advanced eXtensible Interface)协议AXI协议AMBA协议中的一种,被广泛应用于现代SoC设计中。它提供了一种高性能,灵活且可扩展的总线接口,用于在处理器、外设设备和内存之间进行高效的数据传输。AXI协议具有多个特性,包括支持高带宽、流水线设计、分层模型和端到端数据保护等。 AXI协议的主要特点包括: 1. 高带宽:AXI协议支持高频率的数据传输,能够满足现代SoC设计对于大量数据的处理需求。 2. 流水线设计:AXI协议使用流水线技术,可以同时进行多个传输操作,提高了总线的效率和吞吐量。 3. 分层模型:AXI协议采用分层的结构,可以灵活地连接多个从属设备,并支持多个处理器之间的共享内存访问。 4. 端到端数据保护:AXI协议引入了一些机制,如校验和和错误检测,以确保数据在传输过程中的完整性和可靠性。 总的来说,AMBA协议中的AXI协议是一种用于现代SoC设计的高性能、灵活和可扩展的总线接口协议,通过提供高带宽、流水线设计和端到端数据保护等特性,满足了现代SoC设计对于高效数据传输的需求。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [AMBA协议- AXI协议指南(1)](https://blog.csdn.net/ygyglg/article/details/129937804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值