Memory Hierarchy

现代计算机都把存储器分成若干级,称为Memory Hierarchy,按照离CPU由近到远的顺序依次是CPU寄存器、 Cache、内存、硬盘,越靠近CPU的存储器容量越小但访问速度越快,下图给出了各种存储器的容量和访问速度的典型值:

寄存器、 Cache和内存中的数据都是掉电丢失的,这称为易失性存储器(Volatile Memory) ,与之相对的,硬盘是一种非易失性存储器( Non-volatile Memory) 。

除了访问寄存器由程序指令直接控制之外,访问其它存储器都不是由指令直接控制的,有些是硬件自动完成的,有些是操作系统配合硬件完成的。Cache从内存取数据时一次取一个Cache Line缓存起来,操作系统从硬盘取数据时一次取几KB缓存起来,都是希望这些数据以后会被访问到。大多数程序的行为都具有局部性( Locality) 的特点:它们会花费大量的时间反复执行一小段代码(例如循环),或者反复访问一个很小的地址范围中的数据(例如访问一个数组)。所以预读缓存的办法是很有效的: CPU取一条指令,我把它相邻的指令也都缓存起来, CPU很可能马上就会取到;CPU访问一个数据,我把它相邻的数据也都缓存起来, CPU很可能马上就会访问到。

posted @ 2018-04-07 15:23  刘-皇叔  阅读(2122)  评论(0)    收藏  举报