Skip to content

一些cpu性能术语

Posted on:June 17, 2025 at 10:06 AM

一个 CPU 周期(cycle) 的时长取决于 CPU 的主频(clock frequency),它是每秒钟产生的时钟脉冲数。 通俗来讲即是节拍数 时间(秒) = 周期数 / CPU 主频(Hz)

2.4 GHz = 2.4 × 10⁹ Hz

每个周期 = 1 / 2.4GHz ≈ 0.4167 ns

Arm测试节拍指令

// 读取 PMCCNTR_EL0(计数器)
static inline uint64_t read_cycles() {
    uint64_t value;
    asm volatile("isb; mrs %0, pmccntr_el0" : "=r"(value));
    return value;
}

x86测试节拍指令

//可用 GCC 内联汇编或 _rdtsc()
unsigned long long start = __rdtsc();
//或者
uint64_t read_tsc_serialized() {
    uint32_t lo, hi;
    __asm__ __volatile__ (
        "cpuid\n\t"        // 防止乱序
        "rdtsc\n\t"
        : "=a"(lo), "=d"(hi)
        : "a"(0)           // cpuid 参数 eax=0
        : "rbx", "rcx"     // 被 cpuid 修改
    );
    return ((uint64_t)hi << 32) | lo;
}