存储器的分类

  1. 按存储介质分
    半导体存储器:如 ram、rom,用作主存
    磁表面存储器:如磁盘、磁带,用作辅存
    激光存储器:光盘,用作辅存
  2. 按存储方式分
    随机存储器(RAM):任何存储单元的内容都能被随机存取,且存取时间和存储单元的物理位置无关
    串行访问存储器(SAS):存储单元的内容只能按某种顺序来存取,存取时间与存储单元的物理位置有关,取决于访问存储单元的地址顺序
    只读存储器(ROM):对内容只能读不能写入的存储器。
  3. 按信息的可保存性分
    非永久性记忆的存储器:断电后信息即消失的存储器(RAM)
    永久性记忆的存储器:永久记忆性存储器(ROM)
  4. 按在计算机系统中的作用分
    主存储器、辅助存储器、高速缓存存储器、控制存储器

存储器的性能指标 : 速度 价格 容量

存储器的分级结构


如图所示辅存、主存和缓存的三级存储系统结构,一般来说,“Cache-主存”层次用来弥补主存速度的不足;“主存-辅存”层次用来弥补主存容量的不足。


主存储器

主存储器的性能指标

  • 存储容量:在一个存储器中可以容纳的出存储器的单元总数通常称为该存储器的存储容量(单位:字节 B)
  • 存取时间:存储器接受到命令到存储器读(写)出信息的时间
  • 存取周期:连续访问操作过程一次完整存取操作的时间。
  • 存储器带宽:单位时间内存储器所存取的信息量(位/秒,字节/秒)

半导体存储器芯片

SRAM:静态随机存取存储器,是随机存取存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。
DRAM:动态随机存取存储器,是一种半导体内存,主要的作用原理是利用电容内存储电荷的多寡来代表一个二进制比特(bit)是 1 还是 0(电容上电荷的有无)。由于在现实中电容会有漏电的现象,导致电位差不足而使记忆消失,因此除非电容经常周期性地充电,否则无法确保记忆长存。由于这种需要定时刷新的特性,因此被称为“动态”内存。相对来说,静态内存(SRAM)只要存入数据后,纵使不刷新也不会丢失记忆。
SRAM 的存取速度快,但集成度低,功耗较大,一般用来组成高速缓冲存储器。
DRAM 具有容易集成,位价低,容量大和功耗低等优点。但是存取速度比 SRAM 慢,一般用来组成大容量的主存系统。


动态 MOS 存储器 DRAM 的刷新

  • 采用读出的方式进行刷新,按行来刷新,(行:单个芯片的单个矩阵的行数)
  • 刷新有三种方式:集中式、分散式、异步式
    半导体只读存储器
  • MROM(掩模型):掩模工艺制作, 只能读出, 不能写,可靠性高, 集成度高, 不能重写
  • PROM: 可一次编程之盾存储器
  • EPROM: 可擦去可变成只读存储器(用紫外光擦去并且可以重复编程)
  • EEPROM: 电擦去可重写只读存储器
  • Flash Memoey(闪存存储器)
    新型的电擦去可编程 ROM, 在 EPROM 功能基础上增加了芯片的点擦除和重新编程能力强
    特点: 高密度, 可直接执行, 具有 RAM 的读写功能

存储器与 CPU 的连接

(见书本和笔记)

  • 位扩展
  • 字扩展

高速缓冲存储器

Cache 的功能与基本原理

  • Cache 是指位于 CPU 和主存之间的一个高速小容量的存储器,一般由 SRAM 构成。
  • Cache 功能:用于弥补 CPU 和主存之间的速度差异,提高 CPU 访问主存的平均速度。
  • 设置 Cache 的理论基础,是程序访问的局部性原理。
  • Cache 的内容是主存部分内容的副本,Cache 的功能均由硬件实现,对程序员是透明的。
    基本原理
  • CPU 与 Cache 之间的数据交换是以字为单位,而 Cache 与主存之间的数据交换是以块为单位。一个块由若干定长字组成的。
  • 当 CPU 读取主存中一个字时,便发出此字的内存地址到 Cache 和主存。
  • 此时 Cache 控制逻辑依据地址判断此字当前是否在 Cache 中:若在(称为 ~命中~ ),此字立即传送给 CPU;若不在(称为 ~不命中~ ),则用主存读周期把此字从主存读出送到 CPU,与此同时,把含有这个字的整个数据块从主存读出送到 Cache 中。由始终管理 Cache 使用情况的硬件逻辑电路来实现 LRU 替换算法。

主存与 Cache 的地址映射

三种方式:直接方式、全相联、组相联

  • 直接映射方式
    若主存的第 j 块一定映射到 Cache 的第 i 行,Cache 的行号 i 和主存的块号 j 有如下函数关系:i = j mod m(m 是 Cache 中的总行数。
    优点是硬件简单,成本低。
    缺点是每个主存块只有一个固定的行位置可存放,容易产生冲突。因此适合大容量 Cache 采用。
  • 全相联映射方式
    主存中一个块的地址与块的内容一起存于 Cache 的行中,其中块地址存于 Cache 行的标记部分中。
    这种方法可使主存的一个块直接拷贝到 Cache 中的任意一行上,非常灵活。
    它的主要缺点是比较器电路难于设计和实现,因此只适合于小容量 Cache 采用。
  • 组相联映射方式
    这是前两种方式的折衷方案。它把 Cache 存储器分为若干个组,每组包含若干个页面。组间采用直接映像,而组内的页面则采用全相联映像。
    组相联映射方式中的每组行数 v 一般取值较小,这种规模的 v 路比较器容易设计和实现。而块在组中的排放又有一定的灵活性,冲突减少。

多体交叉存储器

  • 出发点:能够实现同时从存储器取出 n 条指令
  • 特点:通过改进主存的组织方式,在不改变存储器存取周期的情况下,提高存储器的带宽。
  • 结构特点:多体交叉存储器由 M 个的存储体(或称存储模块)组成,每个存储体有相同的容量和存取速度,又有各自独立的地址寄存器、地址译码器、读写电路和驱动电路。
  • 每个模块各自以等同的方式与 CPU 传送信息。CPU 同时访问四个模块,由存储器控制部件控制它们分时使用数据总线进行信息传递。这是一种并行存储器结构。

虚拟存储器

基本概念

虚拟存储器是建立在主存——辅存物理结构基础之上,由附加硬件装置以及操作系统存储管理软件组成的一种存储体系,它把主存和辅存的地址空间统一编址,形成一个庞大的存储空间。

实地址和虚地址

  • 实地址:实际的主存储器单元的地址,即主存地址,或叫物理地址。
  • 虚地址:虚拟存储器的辅存部分也能让用户象内存一样使用,用户编程时指令地址允许涉及到辅存的空间范围,这种指令地址称为“虚地址”(即虚拟地址),或叫“逻辑地址”。
  • 虚拟存储器的用户程序以虚地址编址并存放在辅存里,程序运行时 CPU 以虚地址访问主存,由辅助硬件找出虚地址和物理地址的对应关系
  • 主存——外存层次和 Cache——主存层次用的地址变换映射方法和替换策略是相同的,都基于程序局部性原理。

虚拟存储器和 Cache 的区别

  • Cache 存储器采用与 CPU 速度匹配的快速存储元件来弥补主存和 CPU 之间的速度差距;而虚拟存储器的主要功能是弥补了主存和辅存之间的容量差距
  • 两个存储体系均以信息块作为存储层次之间基本信息的传递单位:Cache 存储器每次传递是定长的的信息块,长度只有几十字节;而虚拟存储器信息块划分方案很多,有页、段等等,长度均在几百 B~几百 KB左右。
  • CPU 访问快速 Cache 存储器的速度比访问慢速主存快 5~10 倍。虚拟存储器中主存的速度要比辅存快 100~1000 倍以上。
  • Cache 存储器存取信息的过程、地址变换和替换策略全部用硬件实现。主~辅层次的虚拟存储器基本上由操作系统存储管理软件辅助一些硬件进行信息块的划分和主~辅存之间的调度。
  • 主存~ Cache 存储体系中 CPU 与 Cache 和主存都建立了直接访问的通路,一旦在主存命中,CPU 将直接访问主存;辅助存储器与 CPU 之间没有直接通路,一旦在主存不命中,只能从辅存调度信息块到主存。同时因为辅存的速度相对 CPU 差距太大,调度需要毫秒级时间,因此 CPU 一般将改换执行另一个程序,等到调度完成后再返回原程序继续工作。

页式虚拟存储器

  • 页是主存物理空间中划分出来的等长的固定区域。
  • 页式虚拟存储系统中,虚拟空间分成页,称为逻辑页;主存空间也分成同样大小的页,称为物理页。
  • 虚存地址分为两个字段:逻辑页号 页内行地址
  • 实存地址也分两个字段:物理页号 页内行地址
  • ~虚拟存储器地址~到~主存地址~的变换是由放在主存的页表实现的。
  • 页表中每一个虚存逻辑页号有一个表目,表目内容包含该逻辑页所在的主存页面地址(物理页号),用它作为实存地址的高字段,与虚存地址的页内行地址字段相拼接,产生完整的实主存地址,据此来访问主存。
  • 为了避免页表已保存或已调入主存储器时对主存访问次数的增多,把页表的最活跃部分存放在高速存储器中组成快表。
  • 快表由硬件组成,比页表小得多,只是慢表的小副本。查表时,由逻辑页号同时去查快表和慢表,当在快表中有此逻辑页号时,就能很快地找到对应的物理页号送入实主存地址寄存器。
  • 优点是页面的起点和终点地址是固定的,方便造页表,新页调入主存也很容易掌握,比段式空间浪费小。
  • 缺点是处理、保护和共享都不及段式来得方便。

段式虚拟存储器

  • 段是按照程序的逻辑结构划分成的多个相对独立部分,作为独立的逻辑单位,各个段的长度因程序而异。
  • 虚拟地址由段号和段内地址组成,为了把虚拟地址变换成实主存地址,需要一个段表。
  • 优点是段的逻辑独立性使它易于编译、管理、修改和保护,也便于多道程序共享;某些类型的段具有动态可变长度,允许自由调度以便有效利用主存空间。
  • 缺点是因为段的长度各不相同,起点和终点不定,给主存空间分配带来麻烦,而且容易在段间留下许多空余的零碎存储空间,造成浪费。

段页式虚拟存储器

  • 段页式虚拟存储器是段式虚拟存储器和页式虚拟存储器的结合。
  • 它把程序按逻辑单位分段以后,再把每段分成固定大小的页。
  • 程序对主存的调入调出是按页面进行的,但它又可以按段实现共享和保护,兼备页式和段式的优点。
  • 缺点是在映象过程中需要多次查表。

存储校验技术

检错码

  • 奇偶校验包含奇校验和偶校验两种校验。
  • 奇校验约定的编码规律,是让整个校验码(包含有效信息和校验位)中“1”的个数为奇数。
  • 偶校验约定的编码规律,是让整个校验码中“1”的个数为偶数。
  • 这个校验位取“0” 还是取“1”的原则是:
    若是奇校验,则连同校验位在内编码里含“1”的个数共有奇数个;
    若是偶校验,则连同校验位在内编码里含“1”的个数是偶数个。

纠错码

  • 常用的纠错码有海明码、循环码等。
  • 只要使用足够的校验位,就可以达到对任何错误的检测和纠错水平。
  • 若需要校正字长 k位的单错,则必须添加 r个校验位,它能够指出k+r个错误及无错误的情况,r必须满足 2 的 r 次方 ≥k+r+1