AXI协议不允许一次突发跨越4KB地址边界的原因可能跟当时的有些操作系统规定最小的文件就是4KB有关,AHB协议的1KB地址边界限制同样很可能跟早期的操作系统限制也有关系。AXI 协议中的 4KB 限制主要体现在地址边界和突发传输方面,以下是具体介绍:
4KB 边界的定义
在 AXI 协议中,4KB 边界是指地址的低 12 位全为 0 的地址。以 32 位地址为例,像 32’h00001000、32’h00002000、32’h00003000 等这些地址均为 4KB 边界。也就是说地址空间被划分为 4KB(即 4096)字节大小的块,(31:12) 位相等的地址都是同一个 page,属于同一个 4KB 空间。
限制内容
AXI 协议规定一次突发传输(burst transfer)不能跨越 4KB 边界。即访存操作的起始地址和终止地址必须处于相邻的两个 4K 边界对齐地址点(即 0x0000_0000、0x0000_1000、0x0000_2000 等)区间内。用公式表示为:start_address/4096==(start_address+(burst_size* burst_length)) / 4096。
限制原因
-
避免访问错误:系统中通常给每个 slave 划分 4KB 空间,若一次 burst 跨越 4KB 边界,可能会导致一部分数据访问到一个 slave,而另一部分访问到相邻的另一个 slave,但第二个 slave 未收到完整的地址和控制信息,不会响应,从而使传输无法完成。
-
简化缓存一致性设计:缓存行作为缓存和主存之间数据传输的最小单位,其大小通常为 4KB 及其倍数,且操作系统通常定义一个 page 为 4KB。4KB 地址边界对齐可使数据传输和缓存操作更规整,便于内存管理,减少缓存一致性问题。
实际应用影响
-
地址分配:在设计基于 AXI 协议的系统时,通常会将 slave 的地址空间按照 4KB 或其倍数来分配,以确保每个 slave 都有独立的、4KB 对齐的地址范围,便于进行地址译码和访问控制。
-
数据传输:如果 master 需要访问跨越 4KB 边界的数据,就需要将访问拆分成多个不跨越 4KB 边界的 transaction。例如,要访问 0x1FF0 – 0x200C 共 32byte 的数据(每次 beat 4B),系统会自动拆分成 0x1FF0 – 0x1FFF 和 0x2000 – 0x200C 两个 transaction。
没有回复内容