存储器层次结构
好的程序代码不仅要有好的算法,对计算机硬件的充分利用也是很关键的一步。
存储器系统(memorysystem)是一个具有不同容量、成本和访问时间的存储设备的层次结构。CPU寄存器保存着最常用的数据。靠近CPU的小的、快速的高速缓存存储器(cache memory)作为一部分存储在相对慢速的主存储器(mainmemory,简称主存)中的数据和 指令的缓冲区域。主存暂时存放存储在容量较大的、慢速磁盘上的数据,而这些磁盘常常又作为存储在通过网络连接的其他机器的磁盘或磁带上的数据的缓冲区域。
一般来说,如果你的程序需要的数据是存储在CPU寄存器中的,那么在指令的执行期间,在零个周期内就能访问到它们。如果存储在高速缓存中,需要1〜30个周期。如果存储在主存中,需要50〜200个周期。而如果存储在磁盘上,需要大约几千万个周期
6.1存储技术
6.1.1 随机访问存储器
随机访问存储器(Random-AccessMem)分为两类:静态的和动态的。静态RAM (SRAM)
比动态RAM(DRAM)更快,但也贵得多。SRAM用来作为高速缓存存储器,既可以在CPU芯片上,也可以在片下。
静态存储器
SRAM将每个位存储在一个双稳态的(bitable)存储器单元里。每个单元是用一个六晶体管电路来实现的。
动态RAM
DRAM将每个位存储为对一个电容的充电。这个电容非常小,通常只有大约30毫微微法拉 (femtofarad)——30*10^15法拉。不过,回想一下法拉是一个非常大的计量单位。DRAM存储 器可以制造得非常密集——每个单元由一个电容和一个访问晶体管组成。
非易失性存储器
如果断电,DRAM和SRAM会丢失它们的信息,从这个意义上说,它们是易失的(volatile)。另一方面,非易失性存储器(nonvolatilememory)即使是在关电后,也仍然保存着它们的信息。
PROM (Programmable ROM,可编程ROM)只能被编程一次。PROM的每个存储器单元有一种熔丝(fUse),它只能用高电流熔断一次。可擦写可编程ROM (Erasable Programmable ROM, EPROM)有一个透明的石英窗口,允许 光到达存储单元。EPROM能够被擦除和重编程的次数的数量级可 以达到 1000 次。电子可擦除 PROM (Electrically Erasable PROM, EEPROM)类似于 EPROM,但是它不需要一个物理上独立的编程设备,因此可以直接在印制电路卡上编程。EEPROM能够 被编程的次数的数量级可以达到105次。闪存(flash memory)是一类非易失性存储器,基于EEPROM,它已经成为了一种重要的存储技术。
访问主存
数据流通过称为总线(bus)的共享电子电路在处理器和DRAM主存之间来来回回。每次CPU和主存之间的数据传送都是通过一系列步骤来完成的,这些步骤称为总线事务(bustransaction)0 读事务(read transaction)从主存传送数据到 CPU。写事务(write transaction)从CPU传送数据到主存。
IO桥是将系统总线的电子信号翻译成存储器总线的电子信号。
6.1.2 磁盘存储
磁盘是由盘片(platter)构成的。每个盘片有两面或者称为表面(surface),表面覆盖着磁性记录材料。盘片中央有一个可以旋转的主轴(spindle),它使得盘片以固定的旋转速率 (rotational rate)旋转,通常是 5400〜15000 转每分钟(Revolution Per Minute, RPM)0磁盘通常包含一个或多个这样的盘片,并封装在一个密封的容器内。
一个典型的磁盘表面的结构。每个表面是由一组称为磁道(track)的同心圆组成的。每个磁道被划分为一组扇区(sector)。每个扇区包含相等数量的数据位(通常是512字 节),这些数据编码在扇区上的磁性材料中。扇区之间由一些间隙(gap)分隔开,这些间隙中不存储数据位。间隙存储用来标识扇区的格式化位。