cpu

CPU 操作的周期消耗一览

| 操作类型 | CPU 时间片(周期数) | |——————————|———————————-| | 简单寄存器操作(ADD, OR等) | 1 | | 内存写入 | 3-5 | | 延迟规避:整数与浮点之间切换 | 0-3 | | if 判断正确分支 | 1-2 | | 浮点/向量加法 | 1-3 | | 乘法(整数/浮点/向量) | 1-7 | | 返回错误与检查 | 1-7 | | L1 缓存读取 | 4-5 | | TLB Miss | 7-300 | | L2 缓存读取 | 12-15 | | if 判断错误分支(预测错误) | 15-25 | | 浮点除法 | 10-50 | | 128-bit 向量除法 | 10-70 | | 原子操作/CAS | 20-50 | | C 语言函数直接调用 | 10-20 | | 整数除法 | 20-50 | | C 语言函数间接调用 | 20-50 | | C++ 虚函数调用 | 20-40 | | L3 缓存读取 | 40-100 | | 主内存读取 | 200-400 | | NUMA:不同 Socket 的原子操作/CAS | 200-500 | | NUMA:不同 Socket 的 L3 读取 | 150-300 | | 分配与回收(小对象) | 200-500 | | NUMA:不同 Socket 的主内存读取 | 500-1000 | | 内核调用 | 1000-5000 | | 线程上下文切换(直接成本) | 2000-5000 | | C++ 异常抛出与捕获 | 5000-10000 | | 线程上下文切换(总成本,包括缓存失效) | 10000 - 1,000,000 |

补充说明

周期数基于 4GHz CPU(1 周期 = 0.25ns)。 实际性能需结合具体架构(如 Intel Golden Cove vs. AMD Zen4)。 向量操作(如 AVX-512)可能因降频(AVX Offset)产生额外开销。