计算机的核心是cpu,但是光有cpu还不行,它还需从其它组建获取数据。所以cpu读取数据的时间就会影响到系统的性能。在现代计算机中,分级存储大幅提升了这个性能。
数据和分析
来自stackoverflow的数据:
目前主流cpu的频率都在2GHZ左右,按频率2GHZ换算了一下周期和延时。
Core i7 Xeon 5500 Series Data Source Latency (approximate)
L1 CACHE hit, ~4 cycles 一级缓存,命中,4个周期,2纳秒
L2 CACHE hit, ~10 cycles 二级缓存,命中,10个周期,5纳秒
L3 CACHE hit, line unshared ~40 cycles 三级缓存,命中,非共享,40个周期,20纳秒
L3 CACHE hit, shared line in another core ~65 cycles 三级缓存,命中,数据被另一个核心共享,65个周期,32.5纳秒
L3 CACHE hit, modified in another core ~75 cycles remote 三级缓存,命中,数据被另一个核心修改。75个周期,37.5纳秒
remote L3 CACHE ~100-300 cycles 远程L3缓存,100~300个周期,50~150纳秒
Local Dram ~60 ns 本地内存,120个周期,60纳秒
Remote Dram ~100 ns 远程内存,200个周期,100纳秒
SSD 30~300us 固态硬盘,6万~60万个周期,30~300微秒
HDD 13.0ms 机械硬盘,2600万个周期,13毫秒
一张截图:
总结
可以看出,访问周期在逐级递增。硬盘和内存访问周期存在巨大的差距。
还有就是远程访问内存的延时会比本地多上接近一倍,所以现在产生了numa技术,禁止远程内存访问。
在硬盘和内存之间如果有一个中间性能的存储,或许能减缓持久化存储和易失性存储在速度上的差距。
转载请注明:旅途@KryptosX » CPU访问计算机各组件周期