计算机CPU缓存是如何工作的.docx
《计算机CPU缓存是如何工作的.docx》由会员分享,可在线阅读,更多相关《计算机CPU缓存是如何工作的.docx(4页珍藏版)》请在第一文库网上搜索。
1、代码都是由CPU跑起来的,我们代码写的好与坏就决定了CPU的执行效率,特别是在编写计算密集型的程序,更要注重CPU的执行效率,否则将会大大影响系统性能。CPU内部嵌入了CPUCaChe(高速缓存),它的存储容量很小,但是离CPU核心很近,所以缓存的读写速度是极快的,那么如果CPU运算时,直接从CPUCaChe读取数据,而不是从内存的话,运算速度就会很快。但是,大多数人不知道CPUCaehe的运行机制,以至于不知道如何才能够写出能够配合CPUCaChe工作机制的代码,一旦你掌握了它,你写代码的时候,就有新的优化思路了。那么,接下来我们就来看看,CPUCache到底是什么样的,是如何工作的呢,又该
2、如何写出让CPU执行更快的代码呢?根据摩尔定律,CPU的访问速度每18个月就会翻倍,相当于每年增长60%左右,内存的速度当然也会不断增长,但是增长的速度远小于CPU,平均每年只增长7%左右。于是,CPU与内存的访问性能的差距不断拉大。到现在,一次内存访问所需时间是200-300多个时钟周期,这意味着CPU和内存的访问速度已经相差2OO3OO多倍了。为了弥补CPU与内存两者之间的性能差异,就在CPU内部引入了CPUCaChe,也称高速缓存。CPUCache通常分为大小不等的三级缓存,分别是11Cache12Cache和13Cacheo由于CPUCaChe所使用的材料是SRAM,价格比内存使用的D
3、RAM高出很多,在当今每生产IMB大小的CPUCaChe需要7美金的成本,而内存只需要0.015美金的成本,成本方面相差了466倍,所以CPUCaChe不像内存那样动辄以GB计算,它的大小是以KB或MB来计算的。其中,11CaChe通常会分为数据缓存和指令缓存,这意味着数据和指令在11Cache这一层是分开缓存的,13Cache比11Cache和12Cache大很多,这是因为1ICaehe和12Cache都是每个CPU核心独有的,而13Cache是多个CPU核心共享的。程序执行时,会先将内存中的数据加载到共享的13Cache中,再加载到每个核心独有的12Cache,最后进入到最快的11CaCh
4、e,之后才会被CPU读取。他们之间的层级关系如下图所示:12Cache13Cache越靠近CPU核心的缓存其访问速度越快,CPU访问11Cache只需要24个时钟周期,访问12Cache大约10-20个时钟周期,访问13Cache大约20-60个时钟周期,而访问内存速度大概在200-300个时钟周期之间CPUCache的数据是从内存中读取过来的,它是以一小块一小块读取数据的,而不是按照单个数组元素来读取数据的,在CPUCaChe中的,这样一小块一小块的数据,称为CaChe1ine(缓存块),假如1ICaChe一次载入数据的大小是64字节,有一个imarray100的数组,当载入array时,由
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 CPU 缓存 如何 工作
