双口ram和多模块存储器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.6 双口RAM和多模块存储器
CPU和主存储器的速度不匹配问题一直以来都是计算机系统发展的障碍,到现在,这个问题变得越来越严重,以至于主存的存储速度成为了计算机系统的瓶颈。为了解决这一瓶颈,尝试了多种办法,除通过寻找高速元件来提高访问速度外,还可以通过采用双口RAM和多模块存储器,使在一个存取周期内可以并行地读写多个字,从而提高存储器的访问速度。
1.双口RAM
双口RAM是因同一个RAM具有两组相对独立的读写控制线路而得名,它可以进行并行的独立操作。可以说双口RAM是具有两个独立端口的存储器,而每个端口又具有各自的地址线、数据线和控制线,可以对存储器中任何位置上的数据进行独立的存取操作。
双口RAM是常见的共享式多端口存储器,其最大的特点是存储数据共享。它允许两个独立的CPU或控制器同时异步访问存储单元。既然数据共享,就必须存在访问仲裁控制,否则就会出现错误或冲突。两个端口对同一内存操作有4种情况:
① 两个端口不同时对同一地址单元存取数据;
② 两个端口同时对同一地址单元读出数据;
③ 两个端口同时对同一地址单元写入数据;
④ 两个端口同时对同一地址单元,一个写入数据,另一个读出数据。
在第①、第②种情况时,两个端口的存取不会出现错误,第③种情况会出现写入错误,第④种情况会出现读出错误。为避免第③、第④种错误情况的出现,
双口RAM设计有硬件“”功能输出,其工作原理如下。
当左、右端口不对同一地址单元存取时,可正常存取;当左、右端口对同一地址单元存取时,有一个端口的禁止数据的存取。此时,两个端口中,哪个存取请求信号出现在前,则其对应的允许存取;哪个存取请求信号出现在后,则其对应的禁止其写入数据。
需要注意的是,两端口间的存取请求信号出现时间要相差在5ns以上,否则仲裁逻辑无法判定哪一个端口的存取请求信号在前;在无法判定哪个端口先出现存取
请求信号时,控制线和只有一个为低电平,不会同时为低电平。这样,就能保证对应于的端口能进行正常存取,对应于的端
口不存取,从而避免双端口存取出现错误。
2.多模块存储器
顾名思义,多模块存储器是指由多个模块组成的存储器,不过这些模块具有相同的容量和存取速度,各模块都有独立的地址寄存器、数据寄存器、地址译码、驱动电路和读/写电路,它们既能并行工作,又能交叉工作。
多模块存储器一般采用线性编制方式。对地址在各模块中有两种安排方式,分别是顺序方式和交叉方式。假设一个存储器容量为16个字,分成M0~M3这4个模块。
在顺序方式中,访问地址是按一个个模块顺序分配的,即先将1到4顺序分配给M0模块的4个字,然后再接着给模块M1的4个字分配访问地址5到8,以此类推完成地址分配。这样,存储16个字可由4位地址寄存器指示,高2位用于选择模块,低2位用于选择模块中的字,这样连续的地址分配在同一模块内。因此,在对顺序存储方式中某模块进行存取操作时,其他模块不工作,当该模块出现故障时,其他模块也能正常工作。使用这种方式易于扩充存储器容量,其缺点是各模块间只能进行串行工作,限制了存储器的带宽。
在交叉方式中,如果将16个字分成4个模块,其地址分配方案不同,它先将4个线性地址(0、1、2、3)依次分配给M0~M3,再将线性地址(4、5、6、7)依次分配给M0~M3,以此类推完成地址分配。这样,存储16个字也可由4位地址寄存器指示,不过其高2位用于选择模块中的字,而低2位用于选择模块,由此可见连续的地址分配在相邻的不同模块内,而同一模块内的地址是不连续的。因此,对连续字的成块传送,交叉方式的存储器可以实现多模块流水式并行存取,提高了存储器的带宽,从而提高了存储器的存取速度。
采用多模块交叉方式的存储器称为多模块交叉存储器。这种存储器采用分时启动的方法,可以在不改变每个模块存取周期的前提下,提高整个主存的速度。
在第一个存储周期的开始时刻启动模块M0,在时刻分别启动模块M1、M2、M3,如图3-12所示示意了模4交叉存取的时间关系。
在4个模块完全并行的理想情况下,整个主存的有效周期缩小到原来模块存
取周期的,数据传送的平均速度提高到原来的4倍。但是,在实际应用中,当出现数据相关和程序转移时,将破坏并行性,不可能达到上述理想值,但比顺序方式还是提高了不少。
简介
双口RAM 是在一个SRAM 存储器上具有两套完全独立的数据线、地址线和读写控制线,并允许两个独立的系统同时对该存储器进行随机性的访问。即共享式多端口存储器。
双口RAM最大的特点是存储数据共享。一个存储器配备两套独立的地址、数据和控制线,允许两个独立的CPU或控制器同时异步地访问存储单元。因为数据共享,就必须存在访问仲裁控制。内部仲裁逻辑控制提供以下功能:对同一地址单元访问的时序控制;存储单元数据块的访问权限分配;信令交换逻辑(例如中断信号)等。
双口RAM可用于提高RAM的吞吐率,适用于作于实时的数据缓存。
编辑本段特点
(1)对同一地址单元访问的竞争控制
如果同时访问双口RAM的同一存储单元,势必造成数据访问失真。为了防止冲突的发生,采用Busy逻辑控制,也称硬件地址仲裁逻辑。图2给出了地址总线发生匹配时的竞争时序。此处只给出了地址总线选通信信号先于片选脉冲信号的情况,而且,两端的片选信号至少相差tAPS——仲裁最小时间间隔(IDT7132为5ns),内部仲裁逻辑控制才可给后访问的一方输出Busy闭锁信号,将访问权交给另一方直至结束对该地址单元的访问,才撤消Busy闭锁信号,将访问权交给另一方直至结束对该地址单元的访问,才撤消Busy闭锁信号。即使在极限情况,两个CPU几乎同时访问同一单元——地址匹配时片选信号低跳变之差少于tAPS,Busy闭锁信号也仅输出给其中任一CPU,只允许一个CPU访问该地址单元。仲裁控制不会同时向两个CPU发Busy闭锁信号。
(2)存储单元数据块的访问权限分配
存储单元数据块的访问权限分配只允许在某一时间段内由1个CPU对自定义的某一数据块进行读写操作,这将有助于存储数据的保护,更有效地避免地址冲突。信号量(Semaphore,简称SEM)仲裁闭锁就是一种硬件电路结合软件实现访问权限分配方法。SEM单元是与存储单元无关的独立标志单元,图3给出了一个信号量闭锁逻辑框图。两个触发器在初始化时均使SEM允许输出为高电平,等待双方申请SEM。如果收到一方写入的SEM信号(通常低电平写入),如图3所示,仲裁电路将使其中一个触发器的SEM允许输出端为低电平,而闭锁另一个SEM允许输出端使其继续保持高电平。只有当先请求的一方撤消SEM信号,即写入高电平,才使另一SEM允许输出端的闭锁得到解除,恢复等待新的SEM申请。
(3)信令交换逻辑(signaling logic)
为了提高数据的交换能力,有些双口RAM采用信令交换逻辑来通知对方。IDT7130(1K容量)就是采用中断方式交换信令。利用两个特殊的单元(3FFH 和3FEH)作为信令字和中断源。假设左端CPU向3FFH写入信令,将由写信号和地址选通信号触发右端的中断输出,只有当右端的CPU响应中断并读取3FFH信令字单元,其中断才被双口RAM撤消。