阅读《深入理解计算机系统》的第6章,也还是有一些收获的。
首先在脑海中需要对计算机系统的存储器层次结构有个定性的认识,如下图所示:
从访问速率最高(容量最小)的寄存器到访问速率最低(容量最大)的分布式文件系统,计算机将不同类型的存储设备划分了多个层次。然后通过硬件和软件的协作,最终实现高性能的程序开发。每个层次的存储设备都会存储下一层次的设备中的部分数据,依赖于局部性原理,我们认为这种做法是可以提高程序性能的。
接下来就是,在写一些简单的程序的时候,需要思考如何更好的利用高速缓存的原理来进行加速。书中给出了矩阵相乘运算的例子:
上图中最后的f版本是性能最优的,因为它充分体现了空间局部性原则,缓存命中率最高。