首页 > 解决方案 > 用于缓存的 Armv8 地址字段?

问题描述

我正在阅读ARM Cortex-A 系列 ARMv8-A 程序员指南

在 11.1.2 缓存标签和物理地址中,有一个缓存地址字段的示例。

例子:

缓存为4路32KB

高速缓存行 = 16 字(64 字节)

以及文档中说明的地址字段:Set(index) = 8 bits, Offset = 6 bits, Tag = 30 bits

根据我的理解,8 位索引将对应于每种方式的 256 个缓存行(在示例中正确说明)。偏移量是 6 位(2^6 = 64),用于正确寻址行内的字节(64 字节)。

但是缓存是 4 路的,这意味着缓存大小是 4*256*64 = 64KB 而不是 32KB。

我的分析是正确的还是我遗漏了什么?

标签: cachingarmcpu-architecturearmv8

解决方案


有人在 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 cache。16KB * 2 = 32 KB "


推荐阅读