问题标签 [cpu-cache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
137 浏览

.net - 考虑到 CPU 缓存的影响,您如何分析 .net 应用程序?

我知道的所有 .net 分析器都没有考虑 CPU 缓存的影响。

鉴于从 CPU 缓存中读取字段比从主内存中读取字段快 100 倍,这可能是一个很大的因素。(我只需要在答案中解释这一点)

我见过太多人花很长时间来加速分析器认为很慢的循环,而在现实生活中,cpu 缓存使它们变得更快。


例如,我希望能够查看数据访问是否大量缺少 cpu 缓存,以及获得我可以更信任的基本分析结果。

在过去,我发现通过使我的数据更加紧凑,它会全部放入 CPU 缓存中,或者更改数据访问的其他数据会产生很大的影响。例如

那么更好

如果阵列不适合 CPU 缓存,但很难找到这种类型的改进。


花费更多的 cpu 周期来使数据更小,以便更好地适应 CPU 缓存可以分散很多系统,但大多数分析器会将您指向另一个方向。

0 投票
3 回答
35570 浏览

cpu-registers - CPU寄存器和CPU缓存有区别吗?

CPU寄存器和CPU缓存有区别吗?

0 投票
1 回答
4191 浏览

caching - 直接映射缓存

一个直接映射缓存由 16 个块组成。主存储器包含 16K 块,每个块 8 字节。主存地址格式是什么(意思是每个字段的大小)。

我知道这些字段是 Tag|Block|Offset 。我只是不知道如何获得每个的大小。

0 投票
1 回答
1240 浏览

memory-management - ARM Cortex-A8:如何测量缓存利用率?

我有一个飞思卡尔的 i.MX515EVK,一个 ARM Cortex-A8/Ubuntu 平台,不幸的是,板上的 Linux 内核不支持一些众所周知的分析器,如OprofilerZoom Profiler (Zoom 支持 ARM 处理器,但它在内部,使用 Oprofiler 驱动程序),它提供了有关缓存利用率的非常详细的报告。

Cortex-A8 具有 32KB 指令和数据缓存以及 256KB L2 缓存。目前,当我的图像处理算法正在运行时,我完全不知道它们的用法。

除了使用分析器找出缓存命中和未命中之外,还有其他方法吗?

0 投票
5 回答
95350 浏览

performance - 访问各种缓存和主存的大概成本?

谁能给我访问 L1、L2 和 L3 缓存以及 Intel i7 处理器上的主内存的大致时间(以纳秒为单位)?

虽然这不是一个专门的编程问题,但了解这些速度细节对于一些低延迟编程挑战是必要的。

0 投票
2 回答
853 浏览

c++ - LUT 等的 L1/L2 缓存行为是什么?

假设 LUT 是 512KB 的 64 位双精度类型。一般来说,CPU是如何缓存L1或L2中的结构的呢?

例如:我访问中间元素,它是否尝试缓存整个 LUT 或只是其中的一部分 - 比如说中间元素,然后是 n 个后续元素?

CPU 使用什么样的算法来确定它在 L2 缓存中保存的内容?它是否遵循某种前瞻性策略

注意:我假设 x86,但我有兴趣了解其他架构如何工作 POWER、SPARC 等。

0 投票
3 回答
361 浏览

linux-kernel - 重启前刷新Core Duo缓存?

假设我正在通过 L1/L2 缓存写入 Core Duo 系统上的 RAM 位置。

假设我要写入 RAM 中的一个持久位置,然后很快就会出现恐慌 Linux 内核。该位置是持久的,这意味着它不会在 CPU 重新启动期间重新启动,并且会在重新启动后被拾取。

作为重启/恐慌的一部分,Linux 会刷新 CPU 缓存吗?

CPU会在重启前刷新缓存吗?

还是我应该手动执行?如何?

更新:我的缓存不是直写的。

问题是,CPU 规范是否定义了这种行为?

0 投票
1 回答
131 浏览

profiler - Xen下的Cachegrind

我有一个用 C++ 编写的应用程序,其他人以一种应该最大限度地利用 cpu 缓存的方式编写的应用程序。此应用程序在使用半虚拟化的来宾 Ubuntu 操作系统上运行。我运行 cachegrind 并收到非常低的缓存未命中率。

由于我的操作系统是虚拟化的,我是否可以确定这些值实际上是正确的,表明 cpu 缓存正在被我的应用程序很好地使用?

0 投票
1 回答
111 浏览

cpu - 包含当时未执行的部分代码的较大二进制文件会影响 2 级 CPU 内存的使用吗?

如果 L2 没有被填满,CPU 的运行速度似乎要快得多。程序员是否会更好地编写最终会更小的二进制代码,即使部分代码并非一直执行?比如说,只在配置文件中打开的部分代码。

0 投票
7 回答
27114 浏览

caching - 为什么在大多数处理器中,L1 缓存的大小都小于 L2 缓存的大小?

为什么大多数处理器的 L1 缓存的大小都小于 L2 缓存的大小?