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

用户7902568

是否有一段时间处理器直接使用 ram 进行操作,而无需缓存内存的参与?或者它像处理器总是从缓存中获取数据而缓存从 Ram 中获取?

彼得·科德斯

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

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

不过有趣的事实是:是的,P5 Pentium CPU 和早期版本中的 MMU 在 TLB 未命中后访问页表时会绕过缓存来源:Andy Glew 的回答,前英特尔 CPU 架构师,曾参与 P6 的工作:页表遍历是否被缓存?

但是,包括现代 x86 在内的现代 CPU确实通过其数据缓存访问页表:L2 TLB 未命中后会发生什么?


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


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

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


此外,x86 CPU 具有控制寄存器,可让您禁用缓存,从而使其速度极慢。如何在现代 x86/amd64 芯片上关闭 L1、L2、L3 CPU 缓存?. 同样,我假设其他 ISA 具有类似的功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我们可以使用管理程序伪造处理器和RAM吗?

是否可以使用预处理器__file__在C语言中生成#define?

是否可以使用字符串检查预处理器定义?

IntelliJ IDEA是否可以在带有ARM处理器的Mac(Apple Silicone)上使用

Visual Studio是否可以在装有ARM处理器的Mac上使用(Apple Silicon)

是否可以选择在 i18next 中使用后处理器嵌套翻译?

可以在1GB RAM和1GHZ处理器上使用Ubuntu 16.04.3 LTS吗?请回答

Mycroft AI是否可以移植到ARM处理器

单个核心处理器是否仍可以引发ConcurrentModificationException?

是否可以通过Windows提高处理器速度?

是否可以 typedef 预处理器指令?

LiveUSB 可以在不同处理器的电脑上使用吗?

我可以安装频率低于处理器系统内存规范中指定频率的RAM吗?

使用多核处理器是否需要多线程算法?

确定Intel I处理器或RAM是否出现硬件故障?

Chapel编译器是否可以进行多处理器编译?

服务器处理器是否可以替代intel或amd?

VirtualBox使用的处理器多于分配的处理器

此RAM的有效速度将无法使用处理器正确吗?

2个处理器服务器和RAM

我的处理器是否支持PAE?

Linux中是否有一条命令可以知道加载进程的处理器号?

切换线程后,jvm是否可以保证处理器高速缓存的更新?

是否可以调试Apache Nifi自定义处理器?

是否可以在Fortran中找到矢量处理器的最大矢量长度?

Android Studio是否可以在带有ARM处理器的Mac上运行?

是否可以在ARM处理器上运行x86二进制文件?

注释处理器是否可以访问上一轮生成的类型?

当客户端对象被释放时,是否可以触发服务总线处理器?