0%

3.4_双端口RAM和多模块存储器.md

双端口RAM

拥有两个端口,可以同时访问不同的地址单元。

当连个端口访问同一个地址单元时:

  • 两个端口不同时对同一地址单元存取数据 ✔
  • 两个端口同时对同一地址单元读出数据 ✔
  • 两个端口同时对同一地址单元写入数据 ❌
  • 两个端口同时对同一地址单元,一个写入数据,另一个读出数据 ❌

可以通过忙信号解决这一问题,当有忙信号时,暂时关闭其中一个端口。

多模块存储器

单体多字存储器

  • 每个存储单元内存储m个字
  • 总线宽度为m个字
  • 一次并行读/写m个字

优缺点

  • 优点
    • 提高了带宽,增加了读写速度
  • 缺点
    • 指令和数据在主存内必须是连续存放
    • 对转移指令、不连续操作数据效果不明显

多体并行存储器

视频讲解:高位与低位区别

视频讲解:存储体数量设置

有多个存储模块,每个存储模块有相同的容量和存取速度;单独的读写控制器、地址寄存器和数据寄存器。

能并行工作,也能交叉工作

下面举例都是假设T = 4r, 其中r是存入时间,3r是恢复时间

高位交叉编制(也称顺序存储)

编码中前2位作为区分是第几个存储体,后三位是体内偏移地址,从上往下0,1,2……7

连续访问时还是在一个模块内进行,实际上仅仅实现了扩容不能提高访问速度

高位交叉编制不满足程序的局部性原理

低位交叉编制(也称交叉存储)

后2位作为存储体编号,前3位作为体内偏移地址

当连续访问时,在多个模块间切换,提高了吞吐效率。

低位交叉编制满足程序的局部性原理


举例:如何求带宽

例:模块数 ( m = 4 ),存储周期为 ( T ),字长 ( w ),数据总线宽度为 ( W ),总线传输周期为 ( r ),连续存储 ( n ) 个字,求交叉存储器的带宽。

连续存储 ( n ) 个字耗时: \(T + (n-1) \times (T + r)\) 前提: \(W \geq m \times r \times T\)

带宽: \(\frac{n \times W}{T + (n-1) \times (T + r)}\)

当 ( n ) 较大时,带宽趋近于: \(\frac{W}{r}\)

单个存储体的带宽: \(\frac{W}{T}\)