预信息:

我相信有人沿着这些线路询问了一些东西,但无论我如何词,我似乎无法找到一个明确的答案

问题:

RAM会得到一些指示CPU所需的数据量或有多少数据,并且如果CPU需要更多,则需要再次调用(以及该设置量的数据)。< / p>

在缓存未命中期间,CPU将至少需要单个高速缓存行(32,64或128字节)。 CPU是否需要多次查询RAM以获得单个高速缓存行(假设设置量为8字节)或者RAM返回每个呼叫的更多数据或者RAM有一些通知所需数据的方法?

我知道CPU很可能会召唤多于单个缓存行,以避免来自RAM的冗长请求,如果在同一内存块中需要更多数据。

额外点:

如果您确实知道并有更多信息,则以下额外的额外可能会感兴趣:

  • 如果这取决于CPU的不同(生成差异也可能是有趣的,但如果您添加有关该信息,请跳过类似的几代)
  • 如果取决于RAM类型
  • 的不同
  • CPU如何请求不同的大小缓存行或块大小(仅适用于RAM返回固定大小,该大小为块或缓存行的大小)
  • 进一步阅读的任何其他有用的相关信息或资源

潜在答案:

在查看RAM的传输速率时,我似乎已经找到了答案的线索,具体就是如何计算来自规范的传输速率,并从“DDR SDRAM预取架构”中指示有多少64位“块“可以请求每个调用RAM(例如,对于DDR3和DDR2,DDR1的DDR4,4的8个)

有帮助吗?

解决方案

在大多数现代硬件中,主内存更像是外围设备。

我将在下面描述的是英特尔最适合的PC-ISH硬件,但它在其他系统上非常相似。

在初始启动期间,当首次应用电源时,CPU仅具有缓存,固件和一些内存映射I / O.第一份作业之一是将传统上称为“存储器控制器”或“存储器控制器集线器”(在PC硬件IT的WorthBridge的PC硬件中)初始化外部硬件(在PC硬件中)直接与RAM模块通信。

我说“RAM模块”,因为我说,他们真的像外围设备一样。硬件询问模块存在多少内存,并且还协商它们将用于将数据传输到主存储器的协议的细节。

与其他现代外设一样,现代RAM模块可以突发读写,即它们可以使用一个传输操作读取和写入更大的“块”。因此,即使缓存的“最后”高速缓存级别使用与较低级别的缓存相同的缓存行大小,它也可以将较大的数据块传输到RAM而不是RAM。

在执行像线性扫描通过内存块时,这是一个有用的优化。 CPU和高速缓存控制器的某些组合可以检测到这一点,并使用该信息从RAM发出预取。

其他提示

RAM只需获取数据以移动到CPU(真正MMU)的数据。数据以缓存行为单位移动。

目前,高速缓存大小通常如此大,即需要从RAC到缓存的多于一个转移来完全加载缓存行。但是从RAM读取的RAM需要时间来接收要读取的数据的地址,然后是实际传输的时间,并要求RAM执行的四个传输比访问四个随机内存位置快得多。

一些处理器具有允许它们告诉RAM的功能,以便在其中传输高速缓存行的不同部分。假设填充缓存行有四个传输,然后您希望首先加载季度缓存行,实际需要(然后填写其余)。

可以仅部分地填充高速缓存行(并继续填充不同的高速缓存行,而不是完全填充第一个)。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top