阅读说明
笔记大部分截取自《深入理解计算机系统》,会有少许自己理解,在此仅作学习记录用途。想深入阅读请查阅书籍。
为什么会出现高速缓存
对于一个程序,系统会花费大量的时间把信息从一个地方挪到另一个地方。程序的机器指令最初是存储在磁盘上,当在shell中执行该程序时,它会被复制到主存;当处理器运行程序时,指令又从主存复制到处理器。
为什么不直接将程序复制到寄存器呢?这里涉及一个问题,通常一个典型的寄存器文件只存储几百字节的信息,即存储器容量特别小,而目前主流个人记本主存在8G-16G甚至更高,然而,处理器从寄存器文件中读取数据比从主存中读取数据几乎快100倍(最新数据可能会更夸张,感兴趣的可以自己查阅资料)。
什么是高速缓存
针对上述处理器和主存质检的差异,系统设计者采用了更小更快的存储设备,称为高速缓存存储器(cache memory),作为暂时的集结区域,存放处理器近期可能需要的信息。
一般的CPU会有三级的高速缓存: L1、L2和L3。系统可以获得一个很大的存储器,同时访问速度也很快,原因是利用了高速缓存的局部性原理,即程序具有访问局部区域里的数据和代码的趋势。通过让高速缓存里存放可能经常访问的数据,大部分的内存操作都能在快速的高速缓存中完成。
-- 深入理解计算机系统中讲:意识到高速缓存存储器存在的程序员能够利用高速缓存将程序的性能提高一个数量级。 详细资料阅读见深入理解计算机系统第6章。
个人理解
寄存器和高速缓存都是集成在CPU内部的组件,因为寄存器太小了,很难存储多少信息,会导致数据在主存和寄存器之间来回复制,为了减少数据来回复制传输之间的开销,就在CPU上添加了高速缓存组件,其中高速缓存组件分为三级,L1级的高速缓存执行速度和寄存器差不多,但是会比寄存器大的多(不精确猜测大约百倍左右),而L2级的高速缓存会比L1级的大的多,但是在容量扩大的同时,速度也减少了很多(书中说5倍),L3同理提升了容量,但是减小了执行速度。
高速缓存之后,就是主存了。主存容量更大,读取执行速度会远小于高速缓存。这也是为什么书中说能意识到高速缓存存在的程序员可以将程序性能提高一个数量级。
标签:存储器,主存,程序,cs01,处理器,寄存器,高速缓存 From: https://www.cnblogs.com/cpp-muggle/p/16841784.html