【问题标题】:When making read request to DRAM, why we need to read tag and data, not data only?在向 DRAM 发出读取请求时,为什么我们需要读取标签和数据,而不仅仅是数据?
【发布时间】:2018-12-31 21:02:28
【问题描述】:

我正在阅读 David Patterson 和 John Hennessy 的计算机体系结构书。在第 2 章中提到,如果我们将标签存储在 DRAM 中,我们可能需要在两个周期内分别发出两次读取标签和数据的请求。我的问题是为什么我们需要请求标签?标签不只是地址的更高位吗?

【问题讨论】:

  • 这仅适用于您有一个将标签存储在 DRAM 中的缓存,这有悖于缓存的目的,除非它是一个比主内存快得多的单独的快速 DRAM。如果即使在缓存命中时也必须访问主存 DRAM,为什么不直接访问它来获取数据呢?一些缓存使用外部(片外)RAM 存储数据,通常是 SRAM。并且绝对与主内存分开。但更典型的是,较旧的 CPU 将使用片上标签和片外 SRAM 来存储数据,因此缓存命中/未命中确定非常快。

标签: memory cpu-architecture cpu-cache micro-architecture


【解决方案1】:

哇 - 很久很久以前,我在研究生院读过 Patterson 和 Hennessy 的书;)感谢沿着 Memory Lane 的旅行;)

这是怎么回事:

https://www.webopedia.com/TERM/T/tag_RAM.html

L2 高速缓存中的区域,用于标识来自主存储器的哪些数据是 当前存储在每个缓存行中。实际数据存储在一个 缓存的不同部分,称为数据存储。存储的值 在标记 RAM 中确定缓存查找是否导致命中或 错过。

换句话说,在两个不同的“位置”(缓存行和数据存储)中有两个不同的“事物”(标签和数据)。如果是“命中”,则只需进行一次查找(到缓存行)。

那么为什么要有一个“标签”呢?因为内存的不同区域可能会映射到一个块中,所以使用标签来区分它们。

【讨论】:

  • 那么标签就像地址吗?但如果存储在一个块中,它表示为行/列?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-31
  • 2016-06-25
  • 1970-01-01
  • 2021-08-31
相关资源
最近更新 更多