在一次调用中将多少数据从内存传输到CPU

时间:2017-07-06 09:29:29

标签: hardware cpu-architecture

由于内存对CPU来说要慢得多,它应该以一些“x”字节为单位发送数据。

  1. 这个' x'
  2. 的大小是多少
  3. 数据线b / n内存和CPU是否也是x * 8位通道?
  4. 如果我访问地址' A'在内存上,是否会将所有下一个x-1内存地址发送到缓存?
  5. 内存总线的工作频率是多少?
  6. SIMD - SSE和MMX扩展是否会以某种方式利用此批量读取功能?
  7. 请随时提供任何参考资料。

    提前致谢。

1 个答案:

答案 0 :(得分:1)

  1. 尺寸' x'通常是缓存行的大小。缓存行大小取决于体系结构,但Intel和AMD使用64字节。

  2. 至少。如果您有更多频道,则可以从不同频道获取更多数据。

  3. 不完全是下一个x-1内存地址。你可以想到内存,分为64个字节的块。每次你想要访问一个字节,你将带来你的地址所属的块。让我们假设您要访问地址123(十进制)。地址的开头应该是64到127.所以,你将带来整个块。这意味着,您不仅要提供以下地址,还要提供以前的地址,具体取决于您当然可以访问的地址。

  4. 这取决于CPU支持的DDR版本。您可以在此处查看一些数字:https://en.wikipedia.org/wiki/Double_data_rate

  5. 是的,他们这样做。将内存中的数据带到缓存时,会带一个缓存行,SIMD扩展可以在一条指令中处理多个数据元素。这意味着如果您想在一条指令中添加4个值,您要查找的数据将在缓存中(因为您带来了整个块),而您只是从缓存中读取它。