典型 PC 系统各种操作指令的大概时间

 

典型 PC 系统各种操作指令的大概时间

  execute typical instruction

  执行基本指令

1/1,000,000,000 sec = 1 nanosec

  fetch from L1 cache memory

  从一级缓存中读取数据

0. 5 nanosec

  branch misprediction

  分支误预测

5 nanosec

  fetch from L2 cache memory

  从二级缓存获取数据

7 nanosec

  Mutex lock/unlock

  互斥加锁/解锁

25 nanosec

  fetch from main memory

  从主内存获取数据

100 nanosec

  send 2K bytes over 1Gbps network

  通过 1G bps 的网络发送 2K 字节

20,000 nanosec

  read 1MB sequentially from memory

  从内存中顺序读取 1MB 数据

250,000 nanosec

  fetch from new disk location (seek)

  从新的磁盘位置获取数据(随机读取)

8,000,000 nanosec

  read 1MB sequentially from disk

  从磁盘中顺序读取 1MB 数据

20,000,000 nanosec

  send packet US to Europe and back

  从美国发送一个报文包到欧洲再返回

150 milliseconds = 150,000,000 nanosec

 

 

一般来说。CPU需要0个周期来访问其寄存器,1-30个周期来访问高速缓存,50-200个周期来访问主存。

对于Intel Core i7来说。这个值可以很具体。Intel Core i7的主频约在2-3GHz。可以计算出。

 L1—指令缓存L1-数据缓存L2-缓存L3-缓存内存
访问周期441130-4050-200
缓存大小32KB32KB256KB8MB若干GB
访问时间2ns2ns5ns14-18ns24-93ns

也就是说,访问内存的时间是ns级别的。

再来看看磁盘。

磁盘的访问时间=寻道时间+旋转延迟+数据传输时间。对于普通的7200转STAT磁盘。这个值是:9ms+4ms+0.02ms=13.02ms。

也就是说,如果从磁盘随机访问一个字节,需要13.02ms,比从内存获取的时间24-93ns,至少要多14万倍。相差5个数据级,何其巨大的差距。

顺序读写磁盘会快一些。 假设一个盘片有1000个扇区,每个扇区512字节,7200转。顺序读可以忽略掉寻道的时间。所以吞吐量是 扇区数×扇区大小×转速=1000*512/(60/7200)=58MB/s。这个数据似乎不咋样。如果使用多盘系统。STAT II的接口,吞吐量可以达到300MB/s。追求极限性能可以mount裸盘直接操作多盘。

 

比2600K强多少?Ivy Bridge Core i7-3770K性能详测

 

总结。

这些数据都不一定是所用机器的真实数据,但根据比例关系,可以了解到各个流程中的大概耗时。对于写的程序,也有一些参考依据。

不过若是实际项目,还是需要了解所用机器的真实性能。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值