cpu-cache

有没有办法在 Linux 中查看 CPU opcache 参数信息,例如大小或关联性?
cpu-cache

有没有办法在 Linux 中查看 CPU opcache 参数信息,例如大小或关联性?

我最近用perf它来对程序进行基准测试。它有一个事件 de_dis_uops_from_decoder.opcache_dispatched显示“从 OpCache 调度的操作数”。(这里是相关源代码)。然后我想获取 L2 缓存在 op 缓存中使用的缓存行大小之类的信息。维基芯片显示 zen2(我使用 ryzen 7 4800h cpu)具有有关 op 缓存的“8 Op 行大小”和“每个条目包含最多 8 个连续指令”(wikichip 引用的 amd 专利文件也说明了 op 缓存的实现方式)。 我在网上搜索后知道如何获取 L1~L3 缓存信息。 我想获取更多...

Admin

Linux ARM 环境下的多核多进程性能问题
cpu-cache

Linux ARM 环境下的多核多进程性能问题

我正在 4 核 ARM CPU 上开发 Linux 应用程序。应用程序中有两个进程,我将每个进程分配给 CPU,如下所示。 核心1:进程1(GUI) core2-4 : precess2 (实时应用) 没有进程1,进程2可以轻松处理其进程,无需担心。但问题是,当我运行进程1时,它对进程2的性能产生了巨大的影响,进程2根本无法正常工作。 这可能是什么原因造成的? 附加信息: cpu2-4 与 isolcpus=1-3 隔离 我跟踪了整个系统的线程,发现只有当进程1存在时,进程2才会在core1上唤醒大量名为rcu_preempt的任务。不过这两个进程不...

Admin

我在网上看到的任何内容是否都暂时存在于 RAM 中?
cpu-cache

我在网上看到的任何内容是否都暂时存在于 RAM 中?

无论我在互联网上浏览什么,无论浏览什么页面,都会存储在硬盘上的浏览器缓存中。浏览器缓存存储在硬盘 C 盘的 Temporary Internet Files 文件夹中。但它是否也暂时(在我浏览时)存储在 RAM 中,但现在被覆盖了? 也就是说,RAM 和浏览器缓存以及我访问的网页有关系吗? ...

Admin

CPU 如何确定将数据放入 L1i 还是 L1d
cpu-cache

CPU 如何确定将数据放入 L1i 还是 L1d

CPU 如何决定使用哪个缓存来存储刚从内存中检索的数据? 据我所知,CPU 可以访问(读取或写入)的最小内存单位是 64 字节(x86_64、DDR3/DDR4),以 8 次传输(64 位 x 8 次)突发传输。这个 64B 单元称为缓存行,因为它一到达就立即存储到 L1 中(每个条目为 64B + 标签)。 编译后的代码充满了交错的指令和数据 - 许多指令将数据作为指令本身的一部分 - 操作码后面跟着立即数据。这是否被视为完整的指令并因此存储在 L1i 中?L1i 和 L1d 条目都是 64B 宽吗?整个缓存行是存储在 L1i 还是 L1d 中?或者 ...

Admin

一个核心可以在一个时钟周期内执行多个操作/指令吗(因为核心有不同的执行单元)?
cpu-cache

一个核心可以在一个时钟周期内执行多个操作/指令吗(因为核心有不同的执行单元)?

核心有自己的执行单元和加载/存储缓冲区(额外的“缓存” - 除 L1 之外)。 这些执行单元有自己的寄存器吗?内核也有自己的专用寄存器吗?还是所有内核(及其执行单元)都共享 CPU 寄存器?或者我们有共享寄存器,而其他一些寄存器是内核专用的? 是否可以在一个核心上的一个刻度内执行多个 CPU 机器指令(但核心的执行单元不同 - 在超线程模式下也可以并行执行)? 每个核心是否真的都有自己的 (专用) FPU 和 ALU 作为执行单元?我以为 CPU 只有一个 FPU(无论核心数量多少)。 ...

Admin

程序如何在具有三级缓存的 CPU 上执行?
cpu-cache

程序如何在具有三级缓存的 CPU 上执行?

我们有一个系统优化问题,需要明确 CPU 执行的工作流程。具有多级缓存的现代 CPU(例如 Intel Xeon)如何执行原本存储在计算机硬盘上的程序? 我知道程序大致是先加载到内存中,然后 CPU 解码指令并从内存中获取所需的数据。但是,CPU 从 DRAM 加载指令的详细工作流程是什么,其中涉及所有可能的缓存级别(可能是从 DRAM 到 L3 缓存、L2 缓存和 L1 指令缓存,或者直接从 DRAM 到 L1 指令缓存),以及 CPU 加载数据的详细工作流程(从 DRAM 到 L3->L2->...

Admin

微操作缓存是如何标记的?
cpu-cache

微操作缓存是如何标记的?

根据现实世界的技术' 文章“英特尔的 Sandy Bridge 微架构”: “Sandy Bridge 的 uop 缓存分为 32 组和 8 路,每行 6 uop,总共 1.5K uop 容量。uop 缓存严格包含在 L1 指令缓存中。每行还保存元数据,包括行中有效 uop 的数量以及与 uop 缓存行相对应的 x86 指令的长度。映射到 uop 缓存中的每个 32B 窗口可以跨越一组 8 路中的 3 路,最多 18 uop - 大约 1.8B/uop。如果 32B 窗口有超过 18 uop,则它无法放入 uop 缓存中,必须使用传统的前端。微码指令...

Admin

进程是否在不同的核心之间切换?
cpu-cache

进程是否在不同的核心之间切换?

进程是否会在不同核心之间切换以提高性能?如果进程确实在核心之间切换,那么哪些组件是跨核心共享的?L1-L3 缓存、寄存器还是内存? ...

Admin

Windows Server 上的 Opteron 6274 中“缺少”L3 缓存
cpu-cache

Windows Server 上的 Opteron 6274 中“缺少”L3 缓存

我在 HP DL585 G7 服务器中安装了 4 个 AMD Opteron 6274 CPU。Windows Server 2016 仅显示这些 CPU 具有 12MB 的 L3 缓存,尽管互联网上的每个来源都说它们应该具有 16MB(2x8MB)的 L3 缓存。 当服务器启动时,它会显示 CPU 具有预期的 16MB L3 缓存。 Windows Server 2016 正确报告其 16MB (8x2MB) 的 L2缓存。 CPU-z 认为每个 CPU 只有 6MB 的 L3 缓存(或者这可能是 CPU-z 的一个错误,因为它至少应该报告 2x6M...

Admin

CPU 实际上从哪个内存读取数据?
cpu-cache

CPU 实际上从哪个内存读取数据?

按照我自己的理解,对于需要CPU处理的数据,应该放在内存与此同时,CPU 本身也高速缓存存储器,也用于访问数据。众所周知,CPU 缓存比任何其他类型的内存都“更接近”CPU 并且速度更快。但我不太清楚,数据是否必须放在 CPU 缓存中才能处理?如果是,缓存如何保存大量数据?(与 RAM 相比,缓存大小往往很小,最多几 MB,通常小于 1)如果不是,CPU 如何决定将哪部分数据保存在其缓存中? 我对交换也有点困惑。CPU 是否可以将其视为 RAM 的一部分并直接从 HDD 处理保存在那里的数据? ...

Admin

直接映射缓存:如何确定地址分解
cpu-cache

直接映射缓存:如何确定地址分解

假设我有一个 32 位可寻址内存和一个 4 kib 直接映射缓存。假设缓存的每个条目(行)都由一个唯一字(32 位)组成。 我们可以推断索引的大小为 10 位,因为 4*2^10 字节 / 4 = 2^10 字 = 2^10 行。 现在,由于每行只有一个字,我假设我们不需要偏移字段。因此,缓存的地址按以下方式分解: 位 0 至 9 :索引 位 10 至 31:标签 我的逻辑有错误吗? ...

Admin

内存缓存 - 各个级别的大小
cpu-cache

内存缓存 - 各个级别的大小

我只是想知道,当 CPU-Z 或 CPU-ID 等程序检测到你的缓存级别时,它会说,例如: L1 D-Cache 大小:16Kb“x 8”(4 路组相联)L1 I-Cache 大小:64 Kb“x 4”(2 路组相联) x 8 和 x 4 指的是什么?如果可能的话,请提供一些背景信息。我对它可能意味着什么有一些想法,但不想继续不了解。 我对此很感兴趣,因为我已经在论文中描述了我的 CPU 的不同缓存级别。 对于那些欣赏视觉效果的人来说,以下是该程序的图像: http://image.prntscr.com/image/b6d216efd51449ef...

Admin

某些 CPU 上的 L4 缓存保存什么?
cpu-cache

某些 CPU 上的 L4 缓存保存什么?

所有现代多核 CPU 都至少有一个三级缓存(请参阅为什么我们需要多级缓存?)。 L1 速度最快,体积最小;L2 延迟稍大,但体积较大;L3 保存处理器中所有核心共享的数据(体积更大,速度更慢)。一切都很顺利。 但是,在谷歌上搜索短语“L4 Cache”不会得到空结果。显然有些 CPU 确实包含 L4 缓存(显然 Intel Broadwell i7-5775C 确实有 128MB eDRAM 作为 L4 缓存)。 有人知道 L4 缓存的用途吗?我找不到任何有关其用途和功能的文档。 ...

Admin

什么软件可以写入缓存内存?
cpu-cache

什么软件可以写入缓存内存?

我正在做一份高等计算的往年试卷,然后出现了以下问题 描述高速缓存不会提高处理器性能的情况(1分) 评分标准中给出的答案(我个人认为非常薄弱)是 当指令不在缓存中时,必须访问主内存 在思考其他答案时,我认为如果程序没有充分利用处理器缓存,它可能会变慢,就像 RAM 中的内存泄漏一样。然后我意识到我不知道程序是否能够控制写入或来自缓存的内容,一点研究都没有帮助。我想知道的是缓存是在什么级别处理的,软件程序、操作系统还是处理器本身?是否确实存在缓存不会改善甚至损害计算机性能的情况? 干杯,kerr_max ...

Admin

如何强制 MS Word 在打开大型文档时“缓存”?(而不是在开始处理之后)
cpu-cache

如何强制 MS Word 在打开大型文档时“缓存”?(而不是在开始处理之后)

我正在处理大型文档,这(可能)需要 Word 来“缓存”大量数据。因此,经过几分钟的编辑后,Word 会在几分钟内冻结(高 CPU、风扇)。冻结可能是在 Word 开始缓存时发生的。对于大型文档来说,这似乎很正常(同样的 docx 对我的同事也是如此,他的电脑更强大,只是冻结时间更长)。理论上,当我打开文档时它应该缓存,但事实并非如此。所以这让我无法工作。 只有在编辑一定量后,它才会冻结(因此会缓存)。要强制缓存,我需要编辑几分钟,然后它就会冻结,我必须等待它复活(这需要一段时间)。 有没有办法在我打开文档时强制 Word 缓存该文档(而不是在对其进行少...

Admin