AXI协议的transaction attributes和cache属性

本文详细探讨了缓存的读写机制,包括Cache的hit与miss处理方式,以及AXI总线的事务属性,如transaction的可见性、ID的作用、memory attribute属性、Out-of-Order completion和Outstanding issue的概念,深入分析了缓存和AXI总线的工作原理。

1.cache的读写

参考:http://www.mamicode.com/info-detail-2032670.html

allocate的理解,就是先让cache分配一个块,然后把write(CPU写)或read(CPU读)的date放进去

1.CPU读Cache时:

●若hit,则CPU直接从Cache中读取数据即可。

●若miss,有两种处理方式:

   >Read through,即直接从内存中读取数据;

   >Read allocate,先把数据读取到Cache中,再从Cache中读数据。

2.CPU写Cache时:

●若hit,有两种处理方式:

    >Write through:把数据同时写到Cache和内存中;

    >Write back:先把数据写到Cache中,再通过flush方式写入到内存中。

●若miss,有两种处理方式:

    >Write allocate:先把要写的数据载入到Cache中,写Cache,然后再通过flush方式写入到内存中;

    >No write allocate:直接把要写的数据写入到内存中。

2.AXI的事务属性

关于transaction 的及时可见:

对于write transaction,且是bufferable,可以在中间节点返回response,但是需要保持可见,什么叫做可见?即其他master事务发起的事务,在传输过程中能够看到该数据,即中间节点有一个地址比对的操作,若读地址和写地址相同,则可以直接在该节点读取相应的数据。

为什么同一个master需要发起多个ID的transaction?因为outstanding的能力,可以一次性发送多个事务请求,但是其中有些事务需要保持顺序,如何实现在发出多个事务后保证它们的顺序呢?使用transaction ID

http://bbs.eetop.cn/thread-614159-1-1.html

 为了提高总线数据传输带宽和利用率,AXI协议中masters可以outstanding传输,那么当多笔传输发生时,就需要保证每一笔都能按照预期的顺序来完成操作。AXI中当发生如下情况时,AXI必须做到保证先后顺序,即先发送的必须先到达

### Cache Miss的含义 Cache Miss指的是当CPU需要读取数据或者指令时,所需要的数据并不在Cache(高速缓冲存储器)中,此时CPU不得不从速度相对较慢的主存储器中读取数据,这会导致数据读取的延迟增加,降低系统的整体性能。与Cache Hit(数据在Cache中直接命中)相对,Cache Miss意味着Cache没有起到加速数据访问的作用 [^1]。 ### Cache Miss的原因 - **冷启动**:当系统刚刚启动或者程序刚开始运行时,Cache中还没有缓存任何数据,此时CPU的第一次访问必然会发生Cache Miss。例如,新打开一个大型游戏,游戏数据还未被加载到Cache中,CPU访问这些数据时就会出现Cache Miss。 - **工作集过大**:如果程序需要访问的数据量超过了Cache的容量,那么一部分数据就无法被缓存,当CPU访问这些未被缓存的数据时,就会发生Cache Miss。比如,处理大规模数据集的科学计算程序,其数据量可能远远超过Cache的容量。 - **随机访问**:如果程序的访问模式是随机的,缺乏时间局部性空间局部性,Cache就难以有效地缓存数据,从而导致Cache Miss频繁发生。例如,在数据库中进行随机的索引查找操作,每次查找的数据位置都没有规律,Cache很难提前缓存这些数据。 ### Cache Miss的影响 - **性能下降**:Cache Miss会显著增加数据访问的延迟,因为CPU需要从主存储器中读取数据,而主存储器的访问速度远低于Cache。这会导致程序的执行速度变慢,系统的响应时间变长。例如,在一个实时视频处理系统中,频繁的Cache Miss可能会导致视频播放卡顿。 - **能耗增加**:由于从主存储器中读取数据需要更多的能量,Cache Miss会导致系统的能耗增加。对于移动设备来说,这会缩短电池的续航时间。 ### Cache Miss的解决方法 - **优化Cache设计**:增加Cache的容量可以缓存更多的数据,减少因工作集过大导致的Cache Miss。同时,改进Cache的替换算法,如采用更智能的替换策略(如LRU - 最近最少使用算法),可以提高Cache的命中率。 - **优化程序代码**:通过优化程序的访问模式,提高数据访问的时间局部性空间局部性,可以减少Cache Miss的发生。例如,在编写循环代码时,尽量按顺序访问数组元素,避免随机访问。 ```python # 优化前:随机访问数组元素 arr = [i for i in range(1000)] for index in [500, 200, 800, 100]: print(arr[index]) # 优化后:顺序访问数组元素 arr = [i for i in range(1000)] for element in arr: print(element) ``` - **预取技术**:通过预取技术,提前将可能需要的数据从主存储器中加载到Cache中,可以减少Cache Miss的发生。例如,在CPU访问某个数据之前,预取器可以根据程序的访问模式预测下一个可能需要访问的数据,并将其提前加载到Cache中。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值