2. 主存储器的并行读写技术

  主存储器的并行读写,是指在主存储器的一个工作周期可以读出多个主存字所采用的技术,在静态或动态存储器中均可使用。通常有两种可行方案。

  第一种方案,是一体多字方案,通过加宽每个主存单元的宽度,即增加每个主存单元所包括的数据位数(bits),使每个主存单元同时存储几个主存字,则每一次读操作就同时读出了几个主存字,使读出一个主存字的平均读出时间变为原来(每个单元存一个字)的几分之一。其缺点是,每次读出的几个主存字必须首先保存在一个位数足够长的寄存器中,等待分几次通过数据总线被取走。图4.14给出了这一方案的示意表示。


图4.14 主存的一体多字结构

  第二种方案,是更加常用的办法,称为多体交叉编址技术,把主存储器分成能独立读写的、字长为一个主存字的几个主体,这样就可以按读写需要情况,分别对每个存储体执行读写,通过合理的组织方式,使几个存储体协同运行,从而提供出比单个存储体更高的(几倍)读写速度。合理地对这多个存储体进行组织,涉及如下两个问题。

  首先是怎么对这些存储体执行读写,这可以用两种方式进行处理。一是在同一个读写周期同时启动所有体的读或写操作,这与前面讲的一体多字方案很类似;二是使这些存储体顺序地轮流启动各自的读写周期,能达到的最高读写速度,是在一个存储体的读写周期内,能启动每一个存储体的读写操作,即启动相邻两个存储体的最小时间间隔,要小于或等于一个读写周期除以存储体的个数。这种方案的优点,是依次读出来的每一个存储字,可以直接通过数据总线依次传送走,而不必设置专门的数据缓冲寄存器。

  其次是如何分配这些存储体各自工作的地址范围。合理的方案是交叉编址,即把连续地址的几个主存字依次分配在不同的存储体中,因为程序运行的局部性特性已经表明,程序运行过程中,在短时间内读写地址相邻的主存字的概率更大。假定有M个存储体,每个存储体的容量为L,则第m个存储体中存储的主存字的地址应为:

   m*j + i 其中 j=0,1,2,…,L-1, i=0,1,2,…,M-1

  在这种编址方式中,地址寄存器送到主存储器的地址的低几位(例如对4个存储体的情形为低2位),用于区分读写哪个存储体,其余高位部分送到每个存储体,用于区分读写每个存储体的哪一个存储字。图4.15给出了该方案的原理示意图。


图4.15 主存的多体交叉编址技术

  思考题:对多体结构的存储器,为什么不采用把前L个(地址范围在0~L-1之间)存储字安排在头一个存储体中,再把接下来的L个字安排在下一个体中,并以此类推,安排完全部的存储字呢?