双端口RAM和多模块存储器

双端口RAM

提高存储器访存速度一些措施。

存取周期

进行一次存取之后,是不能立即进入下一次存取的,存储器要进行一次恢复。

存取周期=存取时间+恢复时间

  1. 对不同时间进行不同存取操作,双端RAM
  2. 流水线的方式,多模块存储器

双端口RAM

置一个忙信号

多模块存储器

CPU的速度比存储器要快的,如果从存储器中同时存取n个字。可以提高cpu使用资源

补充:可以并行工作,如总线宽度为mW时,可以同时取出长度为mW的数据。

普通存储器

每行为1个存储单元

单体多字存储器

每个存储单元存储m个字,总线宽度也为m个字,一行并行读出m个字。

增加了存储器的带宽。

缺点:指令和数据在主存内必须连续存放。

多体并行的存储器

每个模块都有相同的容量和存取速度,各个模块都有独立的读写控制电路、地址寄存器和数据寄存器

编制方式:

高位交叉编址的多体存储器

高位是体号,低位是体内地址

假如有8个存储单元

相当于说,先确定是哪一个(存储体),然后在在那一个里面找相对应的一块。

低位交叉编址的多提存储器

低位是体号,高位是体内地址

假如有8个存储单元

先找到具体的位置,在看哪一个存储体。

为什么要这么弄?

假如每个存储体的存储周期为T

连续访问:

00000

00001

00010

00011

00100

高位

其实就是在M0里一直访问

时空图:

如果连续访问这个5个地址,需要花费5t个时间。并没有带来什么好处。

高位交叉编址相当于扩容,每个其实还是相当于独立的,并没有带来时间优势。

采用高位交叉编址,连续取n个存储字,耗时nT

低位

先访问M0的0号单元,接下来00001,是M1的0号单元,只需要间隔一小段时间。然后就是M2,M3.都是用一小段时间。可以相当于是同时访问。大大减少了存取时间。

时空图:

时间如何计算?

假设启动完M0后启动M1的时间间隔是τ,启动完M1在启动M2的时间间隔是τ、启动完M2在启动M3的时间间隔是τ,接下来启动完M3在启动M0的时间间隔也是τ

所以就有总时间T+4τ

假如连续存取n个存储字,采用低位交叉编址,耗时:T+(n-1)τ

流水线(考试常考)

微观(计算题)

有m个存储体,存储周期是T,字长W,每隔r时间启动下一个存储体,连续存放n个字,求存储器的存取速率。

\[连续存取n个字耗时=T+(n-1)r \]

\[!!!注意:m≥T/r \]

如果m<T/r

还需要在等多一个r

如果m>T/r

所以:

\[带宽=\frac{n*w}{T+(n-1)r} \]

如果n较大时,带宽->W/r

对比单个存储体的带宽:W/T

宏观(概念题)

一个存储周期内,交叉存储器可以提供的数据量为单个模块的m倍。

回顾

提出这样的存储器是为了提高CPU的访存速度

posted @ 2020-08-25 18:13  Jev_0987  阅读(1774)  评论(0编辑  收藏  举报