恶补 CPU 知识之 Cache 和 TLB

即是知识回顾,也是最近学到知识的拓展延伸。 ARMv6 Manual: “The only architecturally-guaranteed way to invalidate all aliases of a physical address from a VIPT instruction cache is to invalidate the entire instruction cache.” Cache 的基本情况 Cache 也就是缓存,作为高速的 CPU 和低速的内存之间的缓冲,用于加速访问。 ...

2024 2月 18 · 6 分钟 · vaaandark

恶补 CPU 知识之分支预测

前因 最近看了一篇介绍 Ventana 的 Veyron V1 核心的博客 HotChips 2023: Ventana 不寻常的 Veyron V1 ,里面出现了很多我没听说过或者不甚了解的名词,在阅读这篇博客和查找资料的过程中,我学到了很多新的 CPU 知识。 ...

2024 2月 18 · 5 分钟 · vaaandark

PAC2023娱乐赛

7.6 举办了 PAC2023 的开幕赛,以轻松娱乐为主,我还没有体验过在短时间内完成优化工作(不过今天的工作量倒也不大)。这场娱乐赛给了我别样的体验,也让我发现了我有好的好多不足,以及一些以前没有注意到的坏习惯。 ...

2023 7月 06 · 4 分钟 · vaaandark

CPU 流水线

流水线级 一条流水线的每个分步骤被称为流水线级。它们被流水线寄存器分开。下文中没有说明是流水线寄存器的都是普通 CPU 寄存器。 现代计算机流水线级数已经达到了 10-20 级,在 2000-2010 年间,流水线级数的竞赛达到了最高峰,那时候的处理器甚至可以有高达 31 级的流水线。但是超深的流水线带来的是结构上的复杂和显著增大的动态调度模块设计难度,因此,从那以后就没有再出现过使用这么多级流水线的 CPU 了。 ...

2023 4月 22 · 5 分钟 · vaaandark

OpenMP进阶

继续学习 OpenMP 的使用,尤其是一些较新版本。 OpenMP 4.0 Controlling OpenMP thread Affinity 因为很多硬件如今是 NUMA 结构,分配线程的位置可以很大程度上影响性能。 与核绑定有关的 OpenMP 结构 proc_bind (master | close | spread) ...

2022 8月 02 · 4 分钟 · vaaandark

OpenMP入门

写 OpenMP 的时候总是感觉怪怪的,不知道什么时候该用什么,所以最近系统化地看一遍 OpenMP 的使用,主体为 OpenMP 2.0 和 3.0。 What is OpenMP? OpenMP Model 每个线程都有可以访问全局的共享内存。 数据可以是共享的也可以是私有的。 共享的数据可以被所有线程访问。 私有数据只能被拥有它的线程访问。 数据的传递对于编程者是透明的。 同步会发生,但是它大部分时候是隐式的。 ...

2022 7月 29 · 3 分钟 · vaaandark