计算机组成原理-第3章(6)双端口RAM和多模块存储器

(六)双端口RAM和多模块存储器

存取周期包括存取时间和恢复时间,一般情况下,DRAM芯片的恢复时间都远大于存取时间,且可能为存取时间的好几倍。因为DRAM芯片的存储元为电容结构,它的读数据是破坏性读出,读完数据后需重新写入数据,所以恢复时间较长。

问题:

1.如果多个CPU都要访问这个内存怎么办

因为多个CPU要访问的是同一个内存条,在第一个CPU访问完后,需等到一个存取周期结束(也就是存取完后需等到恢复时间结束)第二个CPU才能访问该内存条。

2.CPU的读写速度要比主存快很多,对同一个内存条连续进行读/写操作,进行完第一个操作后,由于恢复时间较长,需等到恢复时间结束后才可进行第二次访问操作。

本节就是对这两个问题的解决办法进行学习

 

第一种解决办法——双端口RAM

在存储器上设置两组/多组相同的端口(数据线、地址线、控制线),可供两个/多个CPU同时访问,两组/多组端口完全独立,互不影响。

两个端口对同一主存操作有以下四种情况:

1.两个端口同时对不同的地址单元存取数据  

2.两个端口同时对同一地址单元读出数据    

3.两个端口同时对同一地址单元写入数据   会导致写入错误

4.两个端口同时对同一地址,一个写入数据,另一个读出数据   会导致读出错误

上面出现的写入错误和读出错误两个问题的解决办法是:

设置一个“忙”信号,当进行上述两种操作时,置“忙”信号为0,由判断逻辑决定暂时关闭一个端口(即被延时),未被关闭的端口正常访问,被关闭的端口延长一个很短的时间段后再访问

 

第二种解决办法——多体并行存储器

多体并行存储器可分为高位交叉编址和低位交叉编址,下图中左边为高位,右边为低位

所谓高位交叉编制就是在地址位的高位来表示多根内存条编号,例如下图,地址位共有5位,内存条有4根,需要两位比特位来为4根内存条编号,第一根内存条为00,第二根为01,第三根为10,第四根为11,剩下三位地址位用来对每根内存条内的存储单元进行编址。低位交叉编址的相关操作也一样,这里就不具体说明。

按照以上的编址方式进行编址可见,高位交叉编址读取连续的地址空间是竖着读的,即按顺序读取完第一个内存条再按顺序读取第二个,以此类推。按低位交叉编址的编址方式,读取连续的地址空间是横着读的,即读取第一个内存条内的第一个字,再读取第二个内存条的第一个字,以此类推,读完所有内存条第一个字的时候,再回来读取第一个内存条的第二个字...

假定现在要连续取5个存储字,存取周期为T,存取时间为r,假设T=4r,即恢复时间为3r,连续访问的情况下,耗时多少。

采用高位交叉编制:

连续访问5个存储字,按高位交叉编制的方式,连续地址空间读/取时竖着进行,即先按顺序读取某一个内存条内的存储单元,读取同一个内存条内的数据,需要等待上一个存取周期(恢复时间结束)结束后才能进行下一个存储字的读取,因此耗时如下图左下角坐标图所示,耗时为5T。

采用低位交叉编制:

连续访问5个存储字,按低位交叉编制的方式,连续地址空间读/取时横着进行,即先读取某一个内存条内的第一个存储单元,再读取下一个内存条内的第一个存储单元,无需等待恢复时间结束,因为它们在不同的内存条,当第五个存储字的存取时间(注意是存取时间而不是存取周期)结束后,第一个存储字的存取周期(恢复时间)正好结束,所以可接着访问第一个内存条的第二个存储单元。因此耗时如下图右下角坐标图所示,耗时为T+4r。

因此可以推断,存/取n个存储字时,高位交叉编址耗时nT,低位交叉编址耗时T+(n-1)r。

事实上,当n趋向于无穷大时,低位交叉编址的耗时接近r。

应该取几个体(即取几个内存条)

根据上面所讲可知,存取周期为4r,存取时间为r时,采用了4个内存条,获得了完美衔接的效果,因此最好的模块数(内存条)m=T/r,但是m大于等于T/r可是可以的

下图中说存取时间为r和总线传输周期为r说法可视为一样,m都大于等于T/r

 

多模块并行存储器和单体存储器对比

单体存储器没有多模块存储器灵活,但两者的耗时都趋近于r。

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值