Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
aarch64 是否有不可缓存(=缓存旁路)加载或存储指令?
在sparc架构中 有一个ASI 地址空间指示符 被传递给加载 存储指令 因此如果ASI为0x20 则像IO访问一样绕过缓存 即使内存范围在页表中设置为可缓存 缓存也会被绕过 这有时非常方便 例如使用变量在核心之间同步时等 aarch64架
Assembly
arm
memoryaddress
ARM64
cpucache
为什么大多数处理器中L1缓存的大小都小于L2缓存的大小?
为什么大多数处理器的L1高速缓存的大小都小于L2高速缓存的大小 L1 与 CPU 核心紧密耦合 并且在每次内存访问时都会被访问 非常频繁 因此 它需要非常快地返回数据 通常在一个时钟周期内 延迟和吞吐量 带宽 对于 L1 数据缓存来说都是性
caching
memory
cpuarchitecture
processor
cpucache
具体是什么将 x86 缓存行标记为脏 - 任何写入,或者是否需要显式更改?
这个问题是具体来说针对现代 x86 64 缓存一致性架构 我很高兴答案在其他 CPU 上可能有所不同 如果我写入内存 MESI协议要求首先将缓存行读入缓存 然后在缓存中修改 该值被写入缓存行 然后标记为脏 在较旧的直写式微架构中 这将触发缓
x86
x8664
cpuarchitecture
cpucache
memorybandwidth
处理器在等待主内存读取时做什么
假设 L1 和 L2 缓存请求导致未命中 处理器是否会停止运行 直到访问主内存为止 我听说过切换到另一个线程的想法 如果是的话 用什么来唤醒停滞的线程 现代 CPU 中会同时发生很多很多事情 当然 任何需要内存访问结果的事情都无法进行 但可
CPU
cpuarchitecture
cpucache
C++ 优化矩阵乘法微内核中的 L1 缓存使用
我的任务是实现一个优化的矩阵乘法微内核 用于计算C A B在 C 中 从以下代码片段开始 我遇到了一些违反直觉的行为 我需要一些帮助来更好地理解正在发生的事情 void mat mul double A double B double C
c
Optimization
matrixmultiplication
avx
cpucache
关于超线程中 L1 缓存的自适应模式
我是一名学生 最近正在研究超线程 我对 L1 数据缓存上下文模式这个功能有点困惑 In the 架构优化手册 http www intel com content www us en architecture and technology
performance
intel
cpuarchitecture
cpucache
hyperthreading
我可以在多核 x86 CPU 上强制缓存一致性吗?
前一周 我编写了一个小线程类和一个单向消息管道 以允许线程之间进行通信 显然 每个线程有两个管道 用于双向通信 在我的 Athlon 64 X2 上一切正常 但我想知道如果两个线程都在查看同一个变量并且每个核心上该变量的本地缓存值不同步 我
c
Multithreading
x86
multicore
cpucache
Sandy-Bridge CPU规格
我能够将有关 Sandy Bridge E 架构的一些信息整合在一起 但我并不完全确定所有参数 例如L2 缓存的大小 任何人都可以确认它们都是正确的吗 我的主要来源是64 ia 32 架构 优化 手册 pdf http www intel
CPU
intel
cpuregisters
cpuarchitecture
cpucache
L2 取指未命中率远高于 L1 取指未命中率
我正在生成一个综合 C 基准测试 旨在通过以下 Python 脚本导致大量指令获取丢失 usr bin env python import tempfile import random import sys if name main fun
performance
intel
cpuarchitecture
cpucache
perf
MSI:为什么当其他CPU要覆盖该行时我们需要写回该行?
在 Hennessy Patterson 所著的 计算机架构 一书中 第 5 版 第 360 页 他们描述了 MSI 协议 并写道 如果线路处于 独占 已修改 状态 则在从总线接收到 写入未命中 时 当前 CPU 1 将该线路写回总线 然后
cpuarchitecture
cpucache
VIPT Cache:TLB 和 Cache 之间的连接?
我只是想澄清这个概念 并且可以找到足够详细的答案 这些答案可以帮助我们了解硬件中的所有内容实际上是如何工作的 请提供任何相关详细信息 对于 VIPT 缓存 内存请求会并行发送到 TLB 和缓存 从 TLB 中我们可以获得转换后的物理地址 从
caching
cpuarchitecture
cpucache
TLB
MMU
为什么循环顺序会影响二维数组迭代时的性能?
下面是两个几乎相同的程序 除了我切换了i and j周围的变数 它们运行的 时间不同 有人可以解释为什么会发生这种情况吗 版本1 include
c
performance
forloop
Optimization
cpucache
当对页面使用直写式缓存策略时
我正在阅读 MDS 攻击论文RIDL 流氓飞行数据加载 将页面设置为回写 直写 组合写入或不可缓存 并通过不同的实验确定行填充缓冲区是微架构泄漏的原因 切线 我知道内存可能是不可缓存的 但我假设可缓存的数据始终缓存在回写式缓存中 即我假设
Linuxkernel
x86
cpuarchitecture
cpucache
pagetables
如何编写最能利用 CPU 缓存来提高性能的代码?
这听起来像是一个主观问题 但我正在寻找的是特定的实例 您可能遇到过与此相关的实例 如何使代码 缓存有效 缓存友好 更多的缓存命中 尽可能少的缓存未命中 从两个角度来看 数据缓存 程序缓存 指令缓存 即代码中与数据结构和代码构造相关的哪些内容
caching
performance
cpucache
访问各种缓存和主内存的大致成本?
谁能给我访问 L1 L2 和 L3 缓存以及 Intel i7 处理器上主内存的大致时间 以纳秒为单位 虽然这不是一个具体的编程问题 但了解这些类型的速度细节对于一些低延迟编程挑战是必要的 每个人都应该知道的数字 0 5 ns CPU L1
performance
memory
latency
cpucache
lowlatency
cmpxchg 是否会在失败时写入目标缓存行?如果不是,对于自旋锁来说它比 xchg 更好吗?
我假设简单的自旋锁不会进入操作系统等待这个问题的目的 我发现简单的自旋锁通常使用以下方式实现lock xchg or lock bts代替lock cmpxchg 但没有cmpxchg如果期望不匹配 避免写入值 那么失败的尝试不是更便宜吗c
Assembly
x86
cpucache
microoptimization
compareandswap
程序员是否需要显式地刷新写入组合内存?
我知道写入组合写入将被缓存 并且不会直接到达内存 但是程序员是否有必要在其他人可以访问之前显式刷新该内存 我从图形驱动程序代码中得到了这个问题 例如 CPU填充顶点缓冲区 映射为WC 但在GPU访问它之前 我在代码中没有看到任何刷新操作 架
Linux
graphics
Architecture
cpucache
数据缓存如何路由本例中的对象?
考虑图示的数据缓存架构 ASCII 艺术如下 CPU core A CPU core B Devices Cache A1 Cache B1 with DMA Cache 2 RAM
caching
cpuarchitecture
cpucache
DMA
memorymodel
在固定不同 CPU 的 2 个线程之间传递一些变量的最佳方式
我有一个问题需要了解是否有更好的解决方案 我编写了以下代码 将一些变量从编写器线程传递到读取器线程 这些线程固定到共享相同 L2 缓存的不同 CPU 禁用超线程 writer thread h struct a few vars uint3
c
x86
intel
memoryalignment
cpucache
cpuid命令显示信息的问题
的信息llc缓存显示使用cpuid command在Linux上是 cache 3 cache type unified cache 3 cache level 0x3 3 self initializing cache level tru
caching
x86
cpuarchitecture
cpucache
cpuid
«
1
2
3
4
»