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

问题描述 投票:1回答:2

有没有时间处理器直接使用ram进行操作,而不涉及高速缓冲存储器?或者像处理器一样从Cache中获取数据,缓存从Ram获取?

computer-science ram cpu-architecture processor motherboard
2个回答
2
投票

除非软件故意绕过或禁用现代CPU上的缓存,否则通常不会。

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

但有趣的是:是的,P5奔腾CPU中的MMU和早先在TLB未命中时访问页表时绕过了缓存。资料来源:前英特尔CPU架构师Andy Glew的答案,他曾参与过P6:Are page table walks cached?

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


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


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

通常这是针对MMIO区域(存储器映射的I / O)完成的,其中“存储器”实际上是在诸如网卡之类的设备上的I / O寄存器而不是DRAM。因此,每个加载/存储都是可见的副作用,并且必须禁止推测预取。 (并且每个商店必须产生单独的非核心写入事务,例如PCIe消息。)


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


0
投票

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

RAM也更快,唯一的是它需要更多的时间来查找数据。如果它发现剩余的数据快一点。

© www.soinside.com 2019 - 2024. All rights reserved.