多模块存储器
是一种空间并行技术,利用多个结构完全相同的存储模块的并行工作来增加存储器的吞吐率。根据不同的编址方式,多模块存储器分为连续编址和交叉编址两种结构
- 连续编址方式:主存地址的高位表示模块号(体号),低位表示模块内地址(或体内地址)。地址在模块内连续
- 交叉编址方式:主存地址的低位表示模块(体)号,高位表示模块(体)内地址。在交叉编址方式下,总是把高位的体内地址送到由低位体号所确定的模块内进行译码
- 轮流启动:若每个存储模块一次读写的位数(即存储字)正好等于存储器总线中的数据位数(即总线传输单位),则采用轮流启动方式。即对于具有m个体的多模块存储器,若每隔
1
m
\frac{1}{m}
m1个存储周期启动一个体,则每隔
1
m
\frac{1}{m}
m1个存储周期就可以读出或写入一个数据,存取速度提高m倍。
- 这种情况下,每个体的存储周期并没有缩短,但由于交叉访问个体,所以在一个存储周期内向CPU提供了m个存储字,提高了存储器带宽
- 同时启动:若所有存储模块一次并行读写的总位数正好等于存储器总线中的数据位数(即总线传输单位),则可用同时启动方式。如对于下图所示内存条,每个存储模块(即每个DRAM芯片)提供8位数据,8个DRAM芯片一共提供64位数据,正好构成一个总线传输单位。因此可同时启动8个芯片进行并行读写,同时读写64位数据
- 上图解释:上图给出了用8个 16M
×
\times
× 8 的DRAM芯片扩展(位扩展)构成一个128MB内存条的示意图。DRAM芯片中有一个 4096
×
\times
× 4096
×
\times
× 8 位的存储阵列,行地址和列地址各12位,有8个位平面。
存储控制器会将CPU送出的主存地址转换为行地址i和列地址j,它们被分时送到DRAM芯片中的行地址译码器和列地址译码器,以选择行、列交叉处的8位数据同时进行读/写,因此一个芯片每次读/写8位,8个芯片就可以同时读取64位,组合成总线所需要的64位传输宽度
- 上图解释:上图给出了用8个 16M
×
\times
× 8 的DRAM芯片扩展(位扩展)构成一个128MB内存条的示意图。DRAM芯片中有一个 4096
×
\times
× 4096
×
\times
× 8 位的存储阵列,行地址和列地址各12位,有8个位平面。
- 轮流启动:若每个存储模块一次读写的位数(即存储字)正好等于存储器总线中的数据位数(即总线传输单位),则采用轮流启动方式。即对于具有m个体的多模块存储器,若每隔
1
m
\frac{1}{m}
m1个存储周期启动一个体,则每隔
1
m
\frac{1}{m}
m1个存储周期就可以读出或写入一个数据,存取速度提高m倍。
多通道
内存条插槽就是存储器总线,现在的计算机中可以有多条存储器总线同时进行数据传输,支持两条总线同时进行传输的内存条插槽为双通道内存插槽,还有三通道、四通道内存插槽。其总线的传输带宽可以分别提高到单通道的2倍、3倍、4倍。相同颜色内存条插槽可以并行传输(若用户只给电脑配了两个内存条,则应该插在两个相同颜色的内存条插槽上,其传输带宽可以增大一倍)
n通道就是实现低位交叉编址的多体存储器(CPU交替访问多个内存条),如“双通道内存”就是低位交叉的二体存储器
高位片选和低位交叉编址的区别
二者是完全不同的两个知识点。
片选默认高位,且这是芯片层面的概念,属于存储器芯片的扩展技术(即字扩展和位扩展)中的知识。
交叉编址默认低位交叉编址,属于多模块存储器的一种编址方式(见上)。这里的一个“模块”可以是一个内存条,也可以是一个芯片(没有规定,可以按这两个理解,两种说法都见过)。
两个知识点侧重点也不同:
“存储器芯片的扩展”是要解决芯片在容量或位数不满足存储器要求的问题:若位数不满足给定字长的内存条时,就进行位扩展;若容量不足,就进行字扩展。而进行字扩展时,就需要片选。由于字扩展就是单纯的存储地址不够,需要多个存储器串联,因此其默认高位片选,片内连续。
“交叉编址方式”是在多模块下,一种可以增加存储器吞吐率的编址方式。
交叉编址方式下,又分为轮流启动和同时启动,是哪一个就看存储器总线中的数据位数(即总线传输单位)是多少,如果总线传输单位是一个体的存储字长,就只能轮流启动;若是多个体的存储字长之和,就可相关题目以一次性读出。二者都是在一个存储周期内读出体数个存储字,整体来看效率一样。但若一个数据并非分配在同一“行”的存储体中,则两种启动方式的读取时间就不一样了(见下题25)。
位扩展和交叉编址-同时启动的关系见下题6的解析。
相关题目
选C
选A
选D
本题没有提到交叉编址方式,且从题目描述中也可看出其目的就是扩充存储容量,而非提高存取效率/存储器吞吐率。因此直接定位到芯片扩展这个知识点,而本题既要位扩展又要字扩展,字扩展4倍,需要4个芯片,因此是高两位用于片选
选D
选C
此题中总线宽度是64位(一次存取64bit),由于计算机是按字节编址的,所以一个地址中只有8bit数据(如果该内存条是采用位扩展,扩展成64位,那么一个地址中就64bit,不再是按字节编址),因此要同时读出连续的8个存储字,只能是低位交叉编址方式中的同时启动。因此B是对的。
由此题也可看出多模块交叉编址中的同时启动和位扩展的区别,二者虽然都是增加一次性读取数据的能力,但是前者是让芯片满足一个存储单元有64位的内存设定,后者是让一个8位存储单元的内存设定满足总线一次可传64位数据的能力