Skip to content

存储系统

基础概念

存取时间

执行一次读操作或写操作的时间,分读出时间和写入时间两种。

存储周期

存储器进行连续两次独立的读或写操作所需最小时间间隔,通常大于存取时间(因为包括了恢复时间)。

注:存储周期直观理解就是,当启动某个存储体的后,只能等待一个存储周期后才能再次启动该存储体。

DRAM刷新

DRAM采用了地址复用技术。**刷新按行进行,每一行中的记忆单元同时被刷新,因此只需要行地址。**刷新的行号是由DRAM芯片的刷新控制电路中的刷新计数器产生。

**存储器的所有芯片的相同行同时进行刷新。**例如,有8个1024x1024x4位的DRAM芯片构成一个存储器,则只需要1024次刷新操作就可以把整个存储器刷新一遍。

取指令缺失步骤

每条指令执行的第一步是取指令。若在Cache中取当前指令时发生缺失,则处理器必须按如下步骤完成:

  1. 将程序计数器的内容恢复为当前指令的地址,并通过地址线送主存储器。
  2. 控制主存储器执行读操作(可能一次或多次),取出指令。对主存的访问要通过总线完成,一次总线事务完成一次读操作。
  3. 读出的指令写到Cache中,并把主存地址的高位写入Cache行的标记字段,最后设置有效位。
  4. 重新执行当前指令的第一步操作,即取指令,在Cache中命中。

逻辑地址到物理地址的转换

如果采用动态重定位,则执行指令的过程中只要进行存储访问,总要先进性逻辑地址到物理地址的转换。逻辑地址到物理地址的转换由专门的硬件(存储管理单元MMU)实现。

如果采用静态重定位,则指令中的地址已经是物理地址,存储访问时不需要进行地址转换。逻辑地址到物理地址的转换由软件(链接程序或加载程序)实现。

并行存储器结构技术

双端口存储器

多模块存储器

连续编址

主存地址的高位表示模块号,低位表示模块内地址

交叉编址

主存地址的低位表示模块号,高位表示模块内地址。(有m个模块,则主存地址低 $log_2m$ 位表示模块号)。

交叉编址的多模块存储器可采用轮流启动同时启动两种方式。

轮流启动

如果每个模块一次读写的位数(存储字长)正好等于系统总线中数据总线的位数,则采用轮流启动方式。

按每隔1/m个存储周期轮流启动各个模块进行读写。这样每隔1/m个存储周期就可以读出或者写入一个数据,存取速度提高m倍。

同时启动

如果所有存储模块一次并行读写的总位数正好等于系统总线中数据线数,则采用同时启动方式。

例如,64M x 64位的主存是利用8个64M x 8位DRAM芯片进行位扩展而得到的,这样8个存储模块一共可提供64位,正好构成一个存储字,应该同时启动这8个模块进行并行访问。

Released under the MIT License.