第6章 存储器层次结构(深入理解计算机系统)

6.1 存储技术

6.1.1 随机访问存储器

随机访问存储器(Random-Access Memory,RAM)分为两类:静态的和动态的。静态(SRAM)比动态(DRAM)更快,但也贵很多。SRAM用来作为高速缓存存储器,既可以在CPU芯片上,也可以在片下。DRAM用来作为主存以及图形系统的帧缓冲区。典型的,一个桌面系统的SRAM不会超过几兆字节,但是DRAM却有几百或几千兆字节。

6.1.2 磁盘存储

磁盘是广为应用的保存大量数据的存储设备,存储数据的数量级可以达到几百到几千千兆字节,而基于RAM的存储器只能由几百或几千兆字节。不过,从磁盘上读取信息的时间为毫秒级,而从DRAM读取比从磁盘读快10万倍,从SRAM读比从磁盘读快100万倍。

设备可以自己执行读或者写总线事物,而不需要CPU的干涉的过程,称为直接存储器访问(Direct Memory Access),这种数据传送称为DMA传送。

6.1.3 固态硬盘

固态硬盘(Solid State Disk,SSD)是一种基于闪存的存储技术。一个SSD包由一个或多个闪存芯片和闪存翻译层组成,闪存芯片替代传统旋转磁盘中的机械驱动器,而闪存翻译层是一个硬件/固件设备,扮演与磁盘控制器相同的角色,将对逻辑块的请求翻译成对底层物理设备的访问。

6.2 局部性

一个编写良好的计算机程序常常具有良好的局部性。也即是说,它们倾向于引擎临近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。这种倾向性,被称为局部性原理(principle of locality),是一个持久的概念,对硬件和软件系统的设计和性能都有着极大的影响。

局部性通常有两种不同的形式,时间局部性(temporal locality)和空间局部性(spatial locality)。一般而言,有良好局部性的程序比局部性差的程序运行得更快。

小结:

  • 重复引用同一个变量的程序有良好的时间局部性
  • 对于具有步长为k的引擎模式的程序,步长越小,空间局部性越好。具有步长为1的应用模式的程序有很好的空间局部性。在存储器中以大步长跳来跳去的程序空间局部性会很差
  • 对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环次数越多,局部性越好。

6.3 存储器层次结构

猜你喜欢

转载自www.cnblogs.com/cinvzi/p/9358083.html