用于缓存的 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 "