【发布时间】:2021-01-17 20:21:29
【问题描述】:
在学习虚拟内存概念时,我了解到虚拟地址(由处理器生成以访问内存位置)包含页码和页偏移量。我们使用页表来获取这个页码对应的物理地址(本质上是帧号)。
现在,如果这些地址(物理/虚拟)以页/帧的形式运行,处理器如何访问以块/线为单位的高速缓存?
另外,如果虚拟地址只包含页码和页偏移量,那么用于检查缓存集(由索引/集位指定)是否包含所需数据的标记位来自哪里?
【问题讨论】:
-
同一个地址的不同用途可能会以不同的方式分解它。如果您坚持将其视为具有固定字段的 C 数据结构,请将其视为多个不同结构的
union {}。 -
@PeterCordes 你能解释一下如何使用相同的位来访问两种不同的寻址方案吗?这两种地址的重叠到底在哪里?类型1:PageNumber + PageOffset 类型2:Tag + Set/Index + Offset
-
Virtually indexed physically tagged cache Synonym 展示了一个系统以 2 种不同方式分解地址的示例,用于分页(页码/页偏移)和缓存(标记/索引/偏移)
-
@PeterCordes 假设缓存和 RAM 之间的数据传输以块为单位,而 RAM 和磁盘之间的传输以页为单位,是否安全?再问一个问题,当 CPU 发出内存访问请求时,它试图操作的数据单元是什么?字节/字或块或页?我假设它只是试图访问一个字节/单词。
标签: caching memory-management cpu-architecture memory-address virtual-memory