【问题标题】:Armv8 address fields for cache?用于缓存的 Armv8 地址字段?
【发布时间】:2019-10-28 06:32:29
【问题描述】:

我正在阅读,ARM Cortex-A Series Programmer’s Guide for ARMv8-A

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

例子:

缓存是 4-way 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。

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

【问题讨论】:

  • 是的,8 位索引意味着 256 组。通常,您不想将单一方式分组到多个集合中,因此“256 行 in 每种方式”是一种非常奇怪的表达方式。 “256 组(4 种方式)”如果您从这些开始并将大小计算为组 * 方式,那将是一个更正常的措辞。

标签: caching arm cpu-architecture armv8


【解决方案1】:

有人在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 "

【讨论】:

    猜你喜欢
    • 2017-06-24
    • 2015-08-13
    • 2021-01-12
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 2020-10-12
    • 2016-04-29
    相关资源
    最近更新 更多