并行存储器知识总结
CPU与存储之间的速度常常是不匹配的,数据存取常常成为计算瓶颈。解决这个问题一方面可以通过提高速度来解决,另一个方面可以通过优化存储结构来解决。
存储优化途径
存储优化有三个途径:
-
途径1: 并行存储器
- 双端口存储器
- 多存储器并行存储 途径 2: 设置各种缓冲器
- 通用寄存器 途径 3: 采用分层的存储系统
- cache
- 虚拟存储系统
对于第一种并行存储器,根据并行维度的不同,可以分为两种:
-
空间并行
- 双端口存储器 时间并行
- 多存储模块并行存储
这里讨论的是最后一种,多存储模块并行存储。这种存储器由多个模块组成,每个模块称为一个存储体。存储器的地址码包括存储体的体内地址和存储体号两部分。这种存储器又叫做LVM(local vector memory)
并行存储器
并行存储器有两种增加访问数据量的方法由两种:
增加存储器字长:并行访问存储器
增加存储体个数:交叉访问存储器,无冲突访问存储器
并行访问存储器
把地址码分成两个部分,其中一部分仍作为存储器的地址去访问存储器(因为存储器的字数减少了,因此访问存储器的地址码可以缩短),而另一部分则去控制一个多路选择器,从同时读出的n个数据中选择一个数据输出。
并行访问存储器的主要优点是实现非常简单、容易。主要缺点是访问的冲突比较大。
并行访问存储器的冲突主要来自如下几个方面:
(1)取指令冲突。在遇到转移指令,而且转移成功时,同一个存储周期中读出的n条指令,在转移指令后面的指令将无用。
(2)读操作数冲突。一次同时读出的n个操作数,不一定都有用。换一种说法,需要的多个操作数不一定正好都存放在同一个存储字中。
(3)写数据冲突。这种并行访问的存储器,必须凑齐了n个数之后才能一起写入存储器。如果只写一个字,必须先把属于同一个存储字的n个数据都读到数据寄存器中,然后在地址码的控制下修改其中的一个字,最后再把整个存储字写回存储器中。
(4)读写冲突。当要读出的一个字和要写入存储器的一个字处在同一个存储字内时,无法在一个存储周期内完成。
在这4种冲突中,第1种冲突的概率比较小,因为,程序在大多数情况下是顺序执行的。第2种冲突的概率比较大,因为操作数的随机性比程序要大。第3和第4种冲突,解决起来有一定困难,需要专门的控制电路。
分析发生这些冲突的原因,从存储器本身来看,主要是因为地址寄存器和控制逻辑只有一套。如果有n个独立的地址寄存器和n套独立的读写控制逻辑,那么,上述第3和第4种两种冲突也就自然解决了,第1和第2种冲突也有所缓解(减少位宽,增加存储体个数)。
交叉访问存储器
交叉访问存储器根据交叉位的不同,可以分为低位交叉和高位交叉
高位交叉
访问地址按顺序分配给各个模块,某个模块工作的时候其他模块不工作。
编码格式:
假设有n个存储体,每个存储体容量为m个存储单元,则编码格式为
logn2 l o g 2 n | logm2 l o g 2 m |
---|
高位选模块,低位选块内地址