与程序员相关的CPU缓存知识
好久没有写一些微观方面的文章了,今天写一篇关于CPU Cache相关的文章,这篇文章比较长,主要分成这么几个部分:基础知识、缓存的命中、缓存的一致性、相关的代码示例和延伸阅读。其中会讲述一些多核 CPU 的系统架构以及其原理,包括对程序性能上的影响,以及在进行并发编程的时候需要注意到的一些问题。这篇文章我会尽量地写简单和通俗易懂一些,主要是讲清楚相关的原理和问题,而对于一些细节和延伸阅读我会在文章最后会给出相关的资源。
因为无论你写什么样的代码都会交给CPU来执行,所以,如果你想写出性能比较高的代码,这篇文章中提到的技术还是值得认真学习的。另外,千万别觉得这些东西没用,这些东西非常有用,十多年前就是这些知识在性能调优上帮了我的很多大忙,从而跟很多人拉开了差距……
目录
基础知识
缓存的命中
缓存的一致性
程序性能
示例一
示例二
示例三
示例四
示例五
延伸阅读
基础知识
首先,我们都知道现在的CPU多核技术,都会有几级缓存,老的CPU会有两级内存( ...
7个示例科普CPU Cache
(感谢网友 @我的上铺叫路遥 翻译投稿)
CPU cache一直是理解计算机体系架构的重要知识点,也是并发编程设计中的技术难点,而且相关参考资料如同过江之鲫,浩瀚繁星,阅之如临深渊,味同嚼蜡,三言两语难以入门。正好网上有人推荐了微软大牛Igor Ostrovsky一篇博文《漫游处理器缓存效应》,文章不仅仅用7个最简单的源码示例就将CPU cache的原理娓娓道来,还附加图表量化分析做数学上的佐证,个人感觉这种案例教学的切入方式绝对是俺的菜,故而忍不住贸然译之,以飨列位看官。
原文地址:Gallery of Processor Cache Effects
大多数读者都知道cache是一种快速小型的内存,用以存储最近访问内存位置。这种描述合理而准确,但是更多地了解一些处理器缓存工作中的“烦人”细节对于理解程序运行性能有很大帮助。
在这篇博客中,我将运用代码示例来详解cache工作的方方面面,以及对现实世界中程序运行产生的影响。
下面的例子都是用C#写的,但语言的选择同程序运行状况以及得出的结论几乎没什么影响。
目录
示例1:内存访问和运行 ...
CPU的性价比
下面这个网站是关于CPU的性价比的,其中的性能数据来源于cpubenchmark.net,而价格数据来源于:newegg.com。
http://paulisageek.com/compare/cpu/
于是,得出了目前性价比最差的是:Intel Xeon X5570 @ 2.93GHz,最好的是:AMD Phenom 9850 Quad-Core,下面是一个性价比表格。
CPU类型
性能
价值
性价比
AMD Phenom 9850 Quad-Core
2864
89.99
31.8
AMD Athlon II X4 620
3084
99.00
31.2
AMD Athlon II X3 425
2366
76.00
31.1
AMD Athlon 64 X2 Dual Core 6000+
1577
53.99
...