【AXI】WRAP的地址

因为master对cache的访问通常是cache line中的某些bytes,但当发生cache miss时,从memory读回来的是整个cache line。而此时master发送的地址却不一定是cache line的起始地址,而可能位于中间,因此递增到upper boundary时需要回卷到lower boundary,才能将该cache line读完。

缓存未命中(Cache Miss)

缓存未命中是指处理器尝试从缓存中读取数据时,发现所需的数据不在缓存中。这种情况下,处理器必须从主内存(或更高层级的缓存)中读取数据,并将其加载到缓存中。缓存未命中通常会导致较高的延迟,因为访问主内存比访问缓存慢得多。

Cache Line

Cache Line是缓存的基本单位,通常包含多个字节的数据。例如,一个典型的缓存行大小可能是64字节。当发生缓存未命中时,处理器通常会从主内存中读取整个缓存行,而不仅仅是请求的那几个字节,以提高未来的访问效率。

Wrap Burst

Wrap Burst是AXI协议中的一种突发类型,用于处理循环地址空间的读写操作。在这种模式下,地址在达到某个上限(upper boundary)后会自动回卷到下限(lower boundary),从而形成一个循环的地址序列。

具体解释

假设一个缓存行的大小是64字节,地址对齐到64字节的边界。当发生缓存未命中时,处理器需要从主内存中读取整个64字节的缓存行。然而,处理器发送的地址不一定是缓存行的起始地址,而可能是中间的某个地址。

例如:

  • 缓存行的起始地址是 0x1000
  • 处理器请求的地址是 0x1010(即缓存行中的第16字节)。

在这种情况下,处理器需要读取从 0x1010 开始的64字节数据,但实际上需要读取的是从 0x10000x103F 的整个缓存行。为了实现这一点,AXI协议使用wrap突发类型。

Wrap Burst 的工作原理

  1. 初始地址

    • 处理器发送的初始地址是 0x1010
  2. 地址递增

    • AXI协议开始从 0x1010 读取数据,地址逐字节递增。
    • 当地址递增到 0x103F 时,达到了缓存行的上限。
  3. 地址回卷

    • 根据wrap突发类型的规则,地址在达到上限 0x103F 后会自动回卷到下限 0x1000
    • 继续从 0x1000 开始读取剩余的数据,直到读取完整个64字节的缓存行。

示例

假设处理器需要读取从 0x1010 开始的64字节数据:

  • 第一次读取:从 0x10100x103F(共48字节)。
  • 第二次读取:从 0x10000x100F(共16字节)。

通过这种方式,处理器可以读取完整的64字节缓存行,即使初始地址不是缓存行的起始地址。

总结

  • 缓存未命中:处理器需要从主内存中读取整个缓存行。
  • 初始地址:处理器发送的地址可能不是缓存行的起始地址。
  • 地址回卷:使用wrap突发类型,地址在达到上限后会自动回卷到下限,确保读取完整个缓存行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值