问题标签 [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 回答
2149 浏览

caching - 当 L1 未命中与 L2 访问有很大不同时...... TLB 相关?

我一直在对一些算法运行一些基准测试并分析它们的内存使用和效率(L1/L2/TLB 访问和未命中),其中一些结果对我来说非常有趣。

考虑到包容性缓存层次结构(L1 和 L2 缓存),L1 缓存未命中的数量不应该与L2 缓存访问 的数量一致吗?我发现的一种解释与 TLB 相关:当虚拟地址未映射到 TLB 中时,系统会自动跳过某些缓存级别中的搜索。这看起来合法吗?

0 投票
1 回答
469 浏览

tlb - 如何学习 TLB 的关联性(路数)?

我的任务是学习 TLB 缓存中的方式数量。我应该使用哪种算法?

0 投票
0 回答
181 浏览

android - 运行 Android 的 ARM beagleboard 没有缓存事件示例

我正在尝试收集有关 Beagleboard Rev C4 和 Beagleboard xM 的一些性能统计数据。

当我将分析事件设置为 CPU_CYCLE 时,Oprofile 运行完美,但是在两个板上,当我尝试分析任何与缓存相关的事件时,我得到一个空的示例文件夹并且没有结果。

当我运行 oprofile 时,我没有收到任何错误(甚至在内核消息中也没有)

但分析似乎失败了。对于所有其他与缓存相关的事件,情况也是如此。我做错了什么,还是这些 PMU 在 Beagleboards 上不可用?

0 投票
5 回答
31878 浏览

caching - 为什么需要单独的 icache 和 dcache

有人可以解释一下我们通过拥有单独的指令缓存和数据缓存可以获得什么。任何指向解释这一点的良好链接的指针也将不胜感激。

0 投票
2 回答
4242 浏览

caching - What is the best way to detect CPU cache misses when running an algorithm?

We have an algorithm which is performing poorly and we believe it's because of CPU cache misses. Nevertheless, we can't prove it because we don't have any way of detecting them. Is there any way to tell how many CPU cache misses an algorithm produces? We can port it to any language which could allow us to detect them.

Thanks in advance.

0 投票
2 回答
3438 浏览

c++ - 在 c/c++ 的 CPU 缓存中分配静态内存:可能吗?

是否可以在 CPU 缓存中显式创建静态对象,以确保这些对象始终保留在缓存中,这样就不会从一直到达 RAM 或上帝禁止 - hdd 虚拟内存对性能造成影响?

我对大型 L3 共享缓存特别感兴趣,而不是针对 L1、L2、指令或任何其他缓存,只是最大的片上内存块。

并且只是为了澄清以区别于我在发布此之前搜索的其他线程,我对私有化整个缓存不感兴趣,只是一个小的,几个类的区域。

0 投票
1 回答
752 浏览

multithreading - x86 上的两个后续 CPU 存储是否刷新到缓存以保持顺序?

假设有两个线程分别在 x86 CPU0 和 CPU1 上运行。CPU0 上运行的线程执行以下命令:

包含 CPU1 最初拥有的 A 和包含 CPU0 拥有的 B 的高速缓存行。

我有两个问题:

  1. 如果我理解正确,两个存储都将被放入 CPU 的存储缓冲区。但是,对于第一个存储A=1,CPU1 的缓存必须无效,而第二个存储B=1可以立即刷新,因为 CPU0 拥有包含它的缓存行。我知道 x86 CPU 尊重商店订单。这是否意味着B=1之前不会写入缓存A=1

  2. 假设在 CPU1 中执行了以下命令:

而(B=0);
打印一个

while在 CPU1 中的和print命令之间仅添加 lfence而不在 CPU0 之间A=1和中添加 sfenceB=1以使 1 始终在 x86 上打印就足够了吗?

0 投票
1 回答
2091 浏览

jpa - 分布式环境中的 JPA PersistenceContext

根据我的理解,交易完成后不会立即刷新。它们位于内存中的缓存中,并且仅在 EntityManager 确定这样做具有成本效益时才被写入数据库。我相信在这种情况下会使用 L1 缓存,但如果我错了,请纠正我。

我的问题是,在分布式环境中,持久性上下文使用的缓存是分布式的吗?

0 投票
2 回答
626 浏览

c++ - mmap 共享缓冲区读取问题

我有一个分配大量内存缓冲区的内核模块,然后将该缓冲区映射到用户空间中。
模块从硬件接收一些数据,然后将新数据放入带有标志的缓冲区中。(内存初始化为零,标志为1)。

用户空间程序在返回指向有效数据的指针之前循环读取标志

代码的简化版本:

内存区域被映射为共享,并且完整的缓冲区内存转储确认缓冲区已正确写入。

问题是在一定数量的正确读取后,此函数停止返回。
这可能是由于 CPU 缓存造成的吗?有没有办法避免这种情况并确保每次都直接从 RAM 读取而不是从缓存中读取?

0 投票
2 回答
105 浏览

compiler-construction - 解释堆栈、调用约定、寄存器、cpu 等内容的书籍或图形视频

有没有一本适合这一切的书……可悲的是,我可以就所有这些事情进行肤浅的对话。我去了大学,在所有这些科目中都获得了 A,但我他妈的不明白堆栈或内存到底是什么样子的。

我不“明白”一个线程到底是什么。CPU 缓存线如何工作,以及它如何因读/写障碍而失效。TLB之类的东西。

任何一本书或一小部分可供阅读的书籍都会有帮助。