用于缓存的 Armv8 地址字段?
Armv8 address fields for cache?
我正在阅读,ARM Cortex-A Series Programmer’s Guide for ARMv8-A。
在11.1.2缓存标签和物理地址中,有一个缓存地址字段的例子。
示例:
缓存为 4 路 32KB
缓存行 = 16 字(64 字节)
以及文档中所述的地址字段:
Set(index) = 8 位,Offset = 6 位,Tag = 30 位
根据我的理解,8 位索引将对应于每个方式的 256 个缓存行(示例中已正确说明)。偏移量是 6 位 (2^6 = 64),用于正确寻址行内的字节(64 字节)。
但是缓存是 4 路,这意味着缓存大小是 4*256*64 = 64KB 而不是 32KB。
我的分析是正确的还是遗漏了什么?
有人在 arm 社区网站上问了同样的问题:https://community.arm.com/developer/ip-products/processors/f/cortex-a-forum/8159/how-to-compute-a-cache-size
这是对他问题的回复:
" 得到 ARM 的回复。这是文档错误。应该是 2-way set-associative 缓存。16KB * 2 = 32 KB "
我正在阅读,ARM Cortex-A Series Programmer’s Guide for ARMv8-A。
在11.1.2缓存标签和物理地址中,有一个缓存地址字段的例子。
示例:
缓存为 4 路 32KB
缓存行 = 16 字(64 字节)
以及文档中所述的地址字段: Set(index) = 8 位,Offset = 6 位,Tag = 30 位
根据我的理解,8 位索引将对应于每个方式的 256 个缓存行(示例中已正确说明)。偏移量是 6 位 (2^6 = 64),用于正确寻址行内的字节(64 字节)。
但是缓存是 4 路,这意味着缓存大小是 4*256*64 = 64KB 而不是 32KB。
我的分析是正确的还是遗漏了什么?
有人在 arm 社区网站上问了同样的问题:https://community.arm.com/developer/ip-products/processors/f/cortex-a-forum/8159/how-to-compute-a-cache-size
这是对他问题的回复:
" 得到 ARM 的回复。这是文档错误。应该是 2-way set-associative 缓存。16KB * 2 = 32 KB "