计组存储系统笔记

        计算机的主存一般使用DRAM芯片,内存条的结构可分成:译码驱动电路、存储矩阵和读写控制电路三部分。需要说明的是,DRAM芯片的每一个存储元由一个电容和一个MOS管组成,存储的01信息在电容内。

译码驱动电路:

        该部分接受由CPU的MAR寄存器传过来的地址,由多路选择器将传过来的地址对应存储矩阵的那一行的字选择线激活。由于一个内存条对应多个存储芯片,所以在读或者写时要选择一个芯片,因此需要一个芯片选择的控制信号CS(Chip Select)或CE(Chip Enable)来对多路选择器进行选择,故每个芯片都要有此输入信号,此外,还需要分辨此次是读操作还是写操作,因此每个芯片还需要WE(Write Enable)信号和OE(Output Enable)来判断此次是读还是写操作,也可以将俩信号合并为一个WE信号,为1时为写,为0时为读。

存储矩阵:

        译码驱动激活对应的字选择线时,该行的所有存储元通过MOS管的半导体特性将电容内存储的0/1信息读取出来,一整行的信息(一个存储单元)被读取出来以后通过读写控制电路,再通过数据总线发往MDR寄存器。现代计算机支持字节寻址、半字寻址、字寻址和双字寻址,因此在寻址时根据寻址方式的不同每个存储单元有不同的地址。当地址位数变得很长(设为n)时,译码器另一端就得接2^n个输出端,如若有16位的地址,则另一端就得有64K个输出端,会使工程难度非常大,因此将存储矩阵分成两个维度,将地址的前8位用作标识行,后8位用作标识列,根据行和列唯一标识一个存储单元,这样就会使原本的一行有多个存储单元。再使用两个译码器分别选择对应的行和列(行地址译码器和列地址译码器)。不过实际应用时一般将同一个译码器分为两个周期,先根据地址的前8位确定行,再根据后8位确定列,称为地址线复用技术,若使用地址复用技术,则CS控制位会被:行控制位+列控制位所代替

SRAM芯片和DRAM芯片的对比:

        SRAM芯片的一个存储元由6根MOS管组成,该六根MOS管组成了一个双稳态触发器,而DRAM芯片由1根MOS管和一个栅极电容组成。因此造成了SRAM芯片造价比DRAM高,而读写速度又比DRAM芯片更快。而DRAM芯片由于造价低,且结构较为简单,决定了它的集成度可以比SRAM芯片更高,但是由于栅极电容的电一般只能维持2ms左右,因此必须在2ms之内刷新一次,将栅极电容重新充电。为每行充电的时间一般占一个存取周期。如果我们根据存取周期将2ms均匀分为多份,我们必须在这2ms之内将所有的行都刷新一遍才能保证不会有数据被破坏。在这2ms内,我们肯定需要进行读写操作,因此会有多种策略来分配读写和刷新操作。假设当前芯片有128行。

        分散刷新:在2ms的时间内,每进行一次读写操作就对一行进行一次刷新,这样会使实际的存取周期变为之前的2倍,显然这种分配策略并不理想。

        集中刷新:在2ms的时间内,将前面的时间都分给正常读写操作,保留最后的时间对整个芯片的128行集中进行刷新,这样可以使存取周期不变,但是在2ms的时间内,存取操作时可能当前正在刷新,这时必须得等待总体刷新完成以后再读取,这种策略也不太理想。

        异步刷新:在2ms的时间平均分成128个块,每个块对一行进行一次刷新,在每个块内,又分为存取操作和刷新操作两部分,将前面的块都分给正常读写操作,保留每个块的最后一段时间来刷新,这样就会使一次读取操作在遇到刷新时不会等待太久,在实际应用中可以在CPU的译码阶段进行刷新。

        除了刷新以外,DRAM芯片的读取数据的方式为破坏性读出,即在读数据以后原本的数据会被破坏,因此需要重新给该存储单元进行写入操作(重写)。但是不管是SRAM还是DRAM,这两种存储器都是断电即失型的存储器。

        之前提到了DRAM由于是破坏性读出数据,所以每次的访存需要恢复时间,一般来说恢复时间要比存取时间长,因此访存时性能受恢复时间的影响,为了使恢复时间的影响降低。可以使用多体并行存储器或者单体多字存储器。

        多体并行存储器:由多个模块构成,每个模块都有自己独立的读写控制电路、地址寄存器和数据寄存器。可以视为多根内存条,根据其与CPU的连接方式分成:高位交叉编址和低位交叉编址两种方式。

        1、高位交叉编址:将CPU的MAR地址寄存器的低位与每个内存条的地址位连接,高位用于区分不同的内存条,与内存条的CS使能端连接。采用高位交叉编址时,对于地址连续的多个存储单元进行访存操作的时候,由于是高位区分内存条,因此对于连续访存,还是由其中的一个内存条来承担全部的访问任务,故此方法并不能降低恢复时间带来的影响。因此如果存取周期为T,存取时间为r时,该方法平均存取时间依旧为T。

        2、低位交叉编址:将CPU的MAR地址寄存器的高位与每个内存条地址位连接,低位用于区分不同的内存条,与内存条的CS使能端连接。采用低位交叉编址时,对于连续访存,就可以使访存任务分别落在不同的内存条上,由于每根内存条拥有自己独立的读写控制电路、地址寄存器和数据寄存器,因此在对第一个地址访存完成之后,在其恢复时继续访问下一个内存条的连续地址,在第一根内存条还在恢复的时候就可以取到下一个内存地址的数据了,各个内存条相互协调工作,会以流水线的方式访存,此时对于n个连续地址的访问时间就会降低为T+(n-1)r,对于单个地址的访问的平均时间降低为r。为了保证流水线具有最高的效率,因保证m>=T/r。

        单体多字存储器:此系统的特点是存储器中只有一个存储体,每个存储单元存储n个字,总线宽度也为n个字,在访存时将n个字一并取出。由于计算机程序具有空间局部性,对于连续n个字的数据,在之后很有可能会访问到,因此这也能提高访存效率,若有n个连续地址的数据需要被访问,对于单个地址的访问时间也为r,但是该方法的缺点是对于跳转指令或操作数不是连续存放的情况,并不能很好地提高效率。

你可能感兴趣的:(考研)