gpt4 book ai didi

c - rdtsc() 给出奇怪的结果

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:22:59 24 4
gpt4 key购买 nike

<分区>

我写了一个非常简单的 C 程序,试图理解 C (Linux) 中的 rdtsc。程序如下。

#include <stdio.h>

static inline unsigned long long tick()
{
unsigned long long d;
__asm__ __volatile__ ("rdtsc" : "=A" (d) );
return d;
}

int main()
{
long long res;
int a = 1;
int b = 3;
int c = 0;
res=tick();
c = (a + b)*11000;
res=tick()-res;
printf("%lld\n",res);
return 0;
}

我的处理器配置如下。

Architecture:          x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 30
Stepping: 5
CPU MHz: 1197.000
BogoMIPS: 5862.24
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-7

从输出来看,处理器似乎是 1.2GHz,据我所知,这意味着每秒将有 1200 x 10^6 个滴答。

当我在我的机器上运行时,上面程序的输出始终是 88。令人惊讶的是,即使我删除了 'c = (a + b)*11000;'在两个报价之间,输出仍然是 88。

1) 为什么输出没有增加。(根据执行上述语句所用的周期,它应该显示略高。)

2) 除了 CPU MHz 之外,上面 cpuinfo 中列出的任何其他参数是否影响此。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com