17得票1回答
PREFETCH指令和PREFETCHNTA指令的区别

PREFETCHNTA指令主要用于通过预取器将数据从主存储器带到高速缓存中,但带有NT后缀的指令被认为是跳过高速缓存和避免高速缓存污染。 那么PREFETCHNTA与PREFETCH指令有何不同之处呢?

16得票7回答
设计代码以适应CPU缓存?

当编写模拟程序时,我的朋友说他喜欢尝试将程序编写得足够小,以适应缓存。这是否有任何实际意义?我知道缓存比RAM和主内存更快。是否可能指定要求程序从缓存运行,或者至少将变量加载到缓存中?我们正在编写模拟程序,因此任何性能/优化增益都是巨大的好处。 如果您知道任何解释CPU缓存的好链接,请指向那...

16得票1回答
现代x86/amd64芯片上的L1、L2、L3 CPU缓存如何关闭?

每个现代高性能的x86/x86_64架构CPU都有一些数据缓存层次结构:L1、L2,有时还有L3(在非常罕见的情况下还有L4),从/到主RAM加载的数据会被缓存在其中一些缓存中。 有时程序员可能希望某些数据不要被缓存在某些或所有缓存级别中(例如,当想要memset 16 GB的RAM并仍然保...

15得票4回答
如何在Linux中获取CPU缓存的大小

我执行了以下查询:free -m 运行该命令的输出结果为: total used free shared buffers cached Mem: 2048 2018 29 ...

15得票2回答
C优化:条件存储以避免污染缓存行

在libuv源代码中,我发现了这段代码: /* The if statement lets the compiler compile it to a conditional store. * Avoids dirtying a cache line. */ if (loop-...

15得票4回答
测量L1和L2缓存的大小和路由顺序

我如何以编程方式测量(而非查询操作系统)L1和L2缓存(数据缓存)的大小和关联顺序? 对系统的假设: - 它具有L1和L2高速缓存(也可能有L3,可能共享高速缓存), - 它可能具有类似于P4 +的硬件预取单元, - 它具有稳定的时钟源(tickcounter或良好的HPET以进行gett...

15得票2回答
文件支持的内存映射的CPU缓存行为/策略是什么?

有没有人知道在现代x86系统上,哪种类型的CPU缓存行为或策略(例如非缓存写组合)分配给内存映射的文件支持区域? 是否有任何方法可以检测这种情况,并可能覆盖默认行为? Windows和Linux是主要关注的操作系统。 (编辑注:该问题先前被表述为内存映射I/O,但是当涉及到CPU缓存时,...

15得票1回答
CPU缓存如何影响C程序的性能

我正试图更好地理解CPU缓存如何影响性能。作为一个简单的测试,我正在对一个带有不同总列数的矩阵的第一列的值进行求和。// compiled with: gcc -Wall -Wextra -Ofast -march=native cache.c // tested with: for n in...

15得票3回答
写合并缓冲区位于哪里?x86

写合并缓冲区是如何物理连接的?我看过一些块图,说明了一些变体: 在L1缓存和内存控制器之间 在CPU的存储缓存和内存控制器之间 在CPU的AGU和/或存储单元之间 它是否与微架构有关?

15得票4回答
缓存内存和紧密耦合内存有什么区别?

由于处于CPU内部,TCM采用哈佛体系结构,因此有ITCM(指令TCM)和DTCM(数据TCM)。 DTCM不能包含任何指令,但ITCM实际上可以包含数据。 DTCM或ITCM的大小最小为4KiB,因此典型的最小配置是4KiB ITCM和4KiB DTCM。 看起来TCM与缓存存储器具有相同...