处理器可以直接使用RAM还是不可以?

时间:2019-02-28 05:41:36

标签: computer-science ram cpu-architecture processor motherboard

是否有一段时间处理器直接使用ram进行操作,而不涉及高速缓存? 还是类似Processor总是从缓存中获取数据而从Ram中获取缓存?

2 个答案:

答案 0 :(得分:2)

通常,不是,除非软件有意绕过或禁用现代CPU上的缓存。

DRAM的延迟可能为70 ns,在4GHz CPU上为280个周期。 Skylake CPU有足够的时间以每个周期4条指令的速度执行1100条指令。但是它对内存并行性的限制是大约12个未决的高速缓存未命中。因此,即使执行顺序混乱,高速缓存对于性能也非常重要。

不过,有趣的事实是:是的,在TLB丢失后访问页表时,P5 Pentium CPU和更早版本的MMU绕过了缓存。资料来源:前Intel CPU架构师Andy Glew的答案,他曾从事P6:Are page table walks cached?

包括现代x86 do 在内的现代CPU通过其数据缓存访问页表,但是:What happens after a L2 TLB miss?


x86具有movnt条指令,用于绕过缓存的存储,以避免大内存集的缓存污染。需要权衡带宽。有关具有ERMSB功能的CPU上来自rep movsb的NT存储和无RFO存储的更多信息,请参见Enhanced REP MOVSB for memcpy。可能其他一些架构也具有类似的功能。


您还可以将一系列物理地址空间设置为不可缓存。 (或在x86上,每4k虚拟页面在页面表条目中具有页面属性表设置。)

通常,这是针对MMIO区域(内存映射的I / O)完成的,在该区域中,“ DRAM”实际上是网卡等设备上的I / O寄存器,而不是DRAM。因此,每次加载/存储都是明显的副作用,因此必须禁止进行推测性的预取。 (而且每个存储区都必须导致单独的内核外写事务,例如PCIe消息。)


此外,x86 CPU具有控制寄存器,可让您禁用高速缓存,这使其非常慢。 How can the L1, L2, L3 CPU caches be turned off on modern x86/amd64 chips?。同样,我假设其他ISA具有类似的功能。

答案 1 :(得分:0)

CPU的处理速度远高于RAM的速度,这就是为什么我们使用可以在1个周期内获取数据的缓存的原因。如果存在高速缓存未命中,则将数据从内存中取出并移至高速缓存中,然后执行该过程。可以说处理器直接与ram一起工作。例如,RAM需要10个周期来获取数据块,而CPU停顿了剩余的9个周期。如果将其移到高速缓存中,则数据整体上将可用而不会停顿。这就是为什么它不使用RAM。

RAM也更快,唯一的原因是查找数据需要更多时间。如果发现剩余数据则速度更快。