单体多字并行存储器及多体交叉并行存储器的原理

计算机硬件 TOMORROW 4个月前 (08-11) 487次浏览 1个评论 扫描二维码

 

存储器是计算机组成原理中的一个难点。因为许多计算机专业的人的硬件电路原理都是比较薄弱的。其中又数单体多字并行存储器多体交叉并行存储器(包括低位交叉编址高位交叉编址)的原理最难理解。本文就来讲述一下它们是如何工作的,它们能提高 CPU 访存速度的原因又是什么?

单体多字并行存储器

单体多字并行存储器就是将多个存储体并行工作,共用一套地址寄存器及地址编码电路,单体意思是将多个存储体视为一个整体。那它是如何提高 CPU 与主存交换数据的速率的呢?

首先,需要明确以下几个点:

  • CPU 的机器字长为 W 位
  • n 个 W 位存储字长的存储器并行
  • n 个存储体都是同时寻址地址寄存器 MAR 中的同一个地址
  • 数据寄存器 MDR 则是 n×W 位

 

单体多字并行存储器及多体交叉并行存储器的原理

当 CPU 送出 A 地址时,n 个存储体的 A 地址单元都被选中,然后一次性与数据寄存器 MDR 交换 n×W 位数据。也就是可以一次性往主存写入 n×W 位或者读出 n×W 位数据。MDR 中的 n×W 位数据由 CPU 按需访问,每次处理的数据是 W 位(机器字长)。

CPU 与主存数据交换速率的瓶颈正是在寻址到将数据读出或者写入存储器的这一过程,而 CPU 与 MDR 寄存器之间的数据交换是很快的。使用单体多字存储器后,可以一次性读出或者写入 n×W 位数据,所以可以大大的提升 CPU 与主存的交换速率。

 

按字编址与按字节编址

无论是按字节编址还是按字编址都是适用于单体多字存储器的。

  • 假设 CPU 的机器字长为 32 位,存储体的存储字长为 4B,4 个存储体并行,地址总线为 32 位;
  • 当只将地址总线的高 28 位送去 MAR 寄存器时,该存储系统则是按字节编址的;
  • 因为,4 个存储体并行的宽度为 4×4B=16B,而低 4 位地址刚好可以用来编址这 16 个字节(2^4=16),也就是 CPU 的每一个地址唯一确定了一个字节,所以是按字节编址的;
  • 当送去 MAR 寄存器的地址等于 30 位时,那么低 2 位地址只能编址 4 个存储单元(2^2=4),16 个字节被分成 4 份,也就是每一份是 4 个字节。也就是 CPU 的每一个地址唯一确定的一个存储单元大小为 4B,刚好等于 CPU 的机器字长,所以是按字编址的;
  • 这里有个疑问,当地址总线的地址全送去 MAR 寄存器寻址时,CPU 的每一个地址唯一确定的一个存储单元就是 16B 了,等于 4 倍的 CPU 机器字长了,那么像这样编址方式,究竟属不属于按字编址呢?

 

如果无法理解此部分内容的,请先阅读:按字节编址与按字编址的电路原理图图解

 

多体交叉并行存储器

多体并行存储器由多体模块组成。每个模块有相同的存储容量和存储速度,而且各个模块都有独立的读写控制电路、地址寄存器(MAR)、数据寄存器(MDR)。它们既可以并行工作,也可以交叉工作。

多体并行存储器又可以分为高位交叉编址低位交叉编址两种。

 

低位交叉编址

低位交叉编址方式其实类似于 字长大于等于 16 位的按字节编址。低位地址表示存储体的体号,高位地址表示体内地址。那它是怎么工作的呢?

单体多字并行存储器及多体交叉并行存储器的原理

  • 假设当前 CPU 需要顺序读取地址为 A、A+1、A+2、A+3 中的内容,并且 A 地址所在存储体的体号为 0;
  • CPU 首先给出 A 地址,A 地址的高位地址 a1 就送到了各个存储体的地址寄存器(MAR),所以此时,所有存储体被选中的都是 a1 地址单元;
  • 然后将各个存储体的 a1 地址单元中的内容读取到各自的数据寄存器(MDR),因为各自都有独立的存取控制电路,所以是并行读取的;(在 CPU 的工作周期中,此过程是最耗费时间的)
  • 此时低位地址为 a0,也就是选中的是体号为 0 的存储体,所以 CPU 可以直接从 0 号存储体的 MDR 寄存器中读取到 A 地址单元中的内容了;
  • 接着,CPU 给出 A+1 地址,高位地址不变还是 a1,低位地址则变成 a0+1;
  • 因为高位地址还是 a1,所以此时不需要重新从存储器中读取了;
  • 而低位地址加 1,则说明选中的是 1 号存储体,所以 CPU 可以直接从 1 号存储体的 MDR 寄存器中读取到 A+1 地址单元中的内容了;
  • 当 CPU 给出 A+2、A+3 地址时,也与读取 A+1 地址单元中的内容相似;

根据程序的局部性原理可以知道,CPU 给出连续地址是很高概率的情况,而 CPU 工作周期中占用时间最长的正是存储器的存储周期。

因此,低位交叉编址的多体寄存器将多个连续地址单元的存储周期并行了,可以很大程度地提高 CPU 的工作周期,提高 CPU 与存储器之间的数据交换速率。

 

按字编址与按字节编址

虽然但多数的教材和参考资料,在多模块存储器中的内容中都没有提到按字编址和按字节编址的内容,但是我认为,既然都是存储器的内容,那就应该结合来理解,才能真正的理解。

如果体号就是 CPU 给出的地址中的最低位(和上面所说的一样),那么该存储系统很可能是按字编址的,因为每一个地址唯一确定了一个字;

但是,如果在 CPU 给出的地址中,体号不是在最低位,而是还有比体号更低的位,那么该存储系统很可能就是按字节编址的;体内地址和体号唯一确定了一个字,而比体号更低的位则用来给每一个字中的每一个字节编址。

 

如果无法理解此部分内容的,请先阅读:按字节编址与按字编址的电路原理图图解

 

高位交叉编址

高位交叉编址字扩展法增加主存容量的方法类似,它是高位表示体号,低位表示体内地址。同样具有独立的存储控制电路、地址寄存器(MAR)、数据寄存器(MDR)。

所以,对于程序的局部性原理来说,这种存取器是没办法提高数据交换速率的。但是总有一些特殊的应用场景是适合这种存储器的,具体的。。。场景我就不知道了。

单体多字并行存储器及多体交叉并行存储器的原理

 

而关于按字编址与按字节编址,与上面的低位交叉编址类似,同样是看最低位。

 


TOMORROW 星辰 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:单体多字并行存储器及多体交叉并行存储器的原理
喜欢 (1)
TOMORROW
关于作者:
TOMORROW星辰第一作者。如有疑问或者发现错误,请留言作者。
光亮的帆布鞋发表我的评论  如需接收评论回复通知,请填写正确的 个人信息
取消评论
表情 加粗 斜体 签到
(1)个小伙伴在吐槽
  1. 有幸访问到贵站,“百万链”期待你的加入!
    百万链2018-08-14 07:50 回复 Windows 7 | Chrome 31.0.1650.63