深入理解计算机系统第六章--存储器层次结构与性能

一.存储器分层

    微机原理中对存储器分层描述为:最顶端是cpu内的寄存器,第二的是效率最高但是造价也最高,从而在一般系统中最小但是最核心的sram,然后是性能稍差,但是造价稍低,系统中稍大一点的dram,再然后是本地磁盘(硬盘,光盘),最后是远程存储(分布式文件系统,web服务器)。

二.为什么要尽量保证字节对齐

    字节对齐的内存,cpu访问的时候,可以直接取出------>dram的读取方式为,每次读取一个dram块儿的一个小块,然后将多个小块拼接成一个大块,字节对齐的内存,cpu只要发出一次访问,而内存控制器也只需要读取一次进行构造,所以访问会很快。

三.旋转磁盘//暂时没兴趣,待续。

四.局部性

    程序倾向于引用邻近与其他最近引用过的数据项的数项,或者最近引用过的数据项本身。局部性有两种形式:时间局部性和空间局部性。

    在一个时间局部性良好的程序中,被引用过一次的存储器位置很可能不远的将来被多次引用。在一个空间局部性良好的程序中,如果一个存储器位置被引用了一次,那么程序很可能在不远的将来引用附近的一个存储器位置。

    局部性有两种表现,一种是对程序数据引用的局部性,另一种是取指令的局部性。

    评价一个程序局部性的简单原则:(1)重复引用同一个变量的程序具有良好的时间局部性。(2)对于具有步长为k的引用模式的程序,步长越小,空间局部性越好。(3)对于取指令来说,循环有号的时间和空间局部性。

五.缓存//工作方式只做了解,待续。

     缓存参数的性能影响:不命中率,命中率,命中时间,不命中处罚。因素:缓存的大小,块的大小,相联度,写策略。

     编写高速缓存友好的代码:(1)让最常见的情况运行的快。(2)在每个循环内部缓存不命中数量最小。------>主要在步长上,这里指每次访问对存储器的位置的增量,最好保持尽量小,保持尽量一致。

   

你可能感兴趣的:(深入理解计算机系统)