专利名称:Dram存储控制方法及装置的制作方法
技术领域:
本发明涉及DRAM,具体涉及DRAM存储控制方法及装置。
背景技术:
申请文件中所使用的术语解释如下
BANK,存储单元阵列;
BC, bank controller, BANK控制单元;
MC, master controller, MC主控制单元。 目前,数据通信领域经常会使用SDRAM、 DDR SDRAM以及DDR2 SDRAM等大容量外部存储器。而外部存储器的总线带宽往往决定了一个数据通信系统在实际工作中的最大带宽处理能力,因此,提高DRAM的总线带宽是提高数据通信系统带宽处理能力的重要途径之 如图1所示,DRAM由存储单元阵列100、命令解码器101、BANK地址解码器103、行地址解码器102、列地址解码器104、10接口控制部分105和DLL单元106组成。存储单元阵列100位于DRAM的中心部分,通常每个DRAM芯片具有4个或8个存储单元阵列100 (即BANK),每个数据位独立存储在指定BANK的由行地址和列地址寻址的存储单元格内。所以,客户请求地址相应地分成3个部分,即BANK地址、行地址和列地址,分别由BANK地址解码器103、行地址解码器102和列地址解码器104来解码对应地址的存储单元。其中行地址和列地址分别在命令解码器101的RAS行选通和CAS列选通时被读入存储阵列的行地址缓冲器和列地址缓冲器。DRAM的所有存储指令在CS片选有效、CKE有效且时钟的上升沿时,由DRAM的3根命令线RAS、CAS和WEN和组合状态所确定,主要包括模式装载指令、刷新指令、写指令、读指令、激活指令和充电指令。DRAM的10接口控制部分105完成数据的双向数据传输及写入数据屏蔽功能。DLL单元106则是在高速时钟下校准DRAM的输入时钟和片内时钟,以减少由于片内、片外时钟差造成的数据AC时序差异。 DRAM的存取控制方法有多种,不同的控制方法其总线的利用效率是不同的。例如在完成读写操作后,是否对该已激活页面进行充电关闭就会影响总线的利用效率。已激活页面没有关闭之前,若后续的读写操作寻址到同一页,就可以直接进行读写,节省了激活时间,此称之为页命中(page hit);若后续的读写操作寻址到不同页面,就必须先关闭此页面,再激活要寻址的页面,然后才能进行读写,这就造成时间上很大的延时,称之为页缺失(page miss);另外,时间损耗介于页命中和页缺失之间的是存取操作要寻址的页面已经关闭,只需执行激活后就可以读写操作了,称之为页空闲(page idle)。 DRAM支持随机读写存取,即多个BANK乒乓存取。这表示某一 BANK做读写存取操作时,其他BANK可以做充电或激活命令,利用此特性,在避免数据总线冲突和命令总线冲突下,可以重叠发出指令给不同BANK,即BANK之间可以交错并行工作,而达到充分利用总线,这是改善DRAM存取性能的重要途径。 另外,DRAM由读切换为写或由写切换为读时,数据总线上都必定有时间损耗,而客户的读写指令又是随机的,若完全按客户请求顺序执行存取操作必然造成大量读写、写读切换,数据总线上产生大量的空闲状态,因此减少存取命令切换造成的带宽损耗也是提高DRAM存取特性重要途径。 另外,有一些特殊的客户读、写请求,这些请求的数据量不能按DRAM的整块数据进行存取,例如DDR2 SDRAM使用32bit位宽和BL4模式(Burst Lengthmode,含义是DDR2突发长度模式配置,可配置为4或8),即一次DDR块传输的数据量是4X 32bit (16BYTE),而某次请求只需处理14BYTE,那么DDR2在可以传输16BYTE的时间内只能有效传输14BYTE,因此降低了带宽利用率;甚至还有一些客户的读、写请求,一次需要传输的数据量只有1 BYTE ,例如将以太网帧存储到DDR2应用中,若按64BYTE作为 一 次传输的数据量,那么65BYTE的以太网帧的帧尾就只剩下一个BYTE,这会造成DRAM数据总线上的大量损耗,消除客户数据与DRAM数据块大小不匹配也是提高DRAM存取性能必须解决的问题。
由此可见,目前DRAM的总线效率有待进一步地提高。
发明内容
本发明所要解决的技术问题是解决进一步提高DRAM的总线效率的问题。 为了解决上述技术问题,本发明所采用的技术方案是提供一种DRAM存储控制方
法,包括以下步骤 A10、对客户的读、写请求进行地址解码后,根据BANK地址重新排列成多个基于各BANK的读、写请求队列,并将上述多个基于各BANK的读、写请求队列同步后并行发出;
A20、分别对每个基于各BANK的读、写请求队列中的多个读、写请求进行仲裁,并依据优先级顺序进行排队; A30、根据每个基于各BANK的读、写请求队列中的读、写请求,分别生成各自的读、写请求命令以及激活命令和/或预充电命令; A40、将读、写请求命令送至命令总线,并在满足DRAM读、写保护时限的前提下,在该BANK读、写请求队列中的读、写命令请求命令之前插入其他BANK读、写请求队列中的读、写命令请求的激活命令和/或预充电命令。 上述方案中,步骤AIO中基于各BANK的写请求队列通过以下步骤生成 A101、将收到的客户写请求放入具有一定配置深度的写请求信息队列中; A102、依次将写请求信息队列出口处的客户写请求进行地址解析; A103、根据解析后客户写请求的BANK地址将其重新排列组成多个基于各BANK的
写请求队列,分别写入写请求预处理单元中; A104、多个基于各BANK的写请求队列同步后并行发出。 基于各BANK的读请求队列通过以下步骤生成 Alll、将收到的客户读请求放入具有一定配置深度的读请求信息队列中; A112、顺序将读请求信息队列出口处的客户读请求进行地址解析; A113、根据解析后客户读请求的BANK地址将其重新排列组成多个基于各BANK的
读请求队列,分别写入读请求预处理单元中,此步骤中,设置第一指针指向读请求信息队列
的当前读出位置,设置第二指针指向该读请求在读请求预处理单元中的写入位置,与第一
指针对应的读请求写入第二指针指向的读请求预处理单元中的相应位置;
A114、将多个基于各BANK的读请求队列同步后并行发出。 在步骤A40中,根据当前送往命令总线的读、写请求状态标志依次读取各BANK读、写请求队列。 当一个读、写请求的数据宽度大于DRAM接口数据位宽时,将该读、写请求数据根据DRAM接口数据位宽进行分割,并依分割后各个读、写请求对应的数据大小和起始地址,按同页的模式连续向DRAM发出分割后的读、写请求。 本发明还提供了 一种DRAM存储控制装置,该DRAM由多个BANK组成,每个BANK中设有分别由行地址和列地址确定的多个基本存储单元,所述的存储控制装置包括若干读、写请求接口处理单元,异步转换单元,与BANK数目相对应的读、写请求队列仲裁单元和BANK控制单元以及读、写缓冲队列单元和MC主控制单元,所述的读、写请求接口处理单元中分别设有读、写请求地址解码器和读、写请求队列预处理单元,BANK地址、行地址和列地址解码器解析出客户的读、写请求地址,该地址与相应BANK的相应基本存储单元相对应,所述的读、写请求队列预处理单元根据解析后的客户读、写请求的BANK地址重新排列成多个基于各BANK的读、写请求队列,并将上述多个基于各BANK的读、写请求队列经异步转换单元同步后并行发往读、写请求队列仲裁单元;所述的读、写请求队列仲裁缓冲单元,分别将各BANK的读、写请求队列中的多个读、写请求进行仲裁,并依据优先级顺序生成多个读、写缓冲队列缓存在读、写缓冲队列单元中;所述的BANK控制单元,根据读、写缓冲队列单元中各BANK读、写请求队列中的读、写请求,分别生成各自的读、写请求命令以及激活命令和/或预充电命令,上述读、写请求命令以及激活命令和/或预充电命令并行发往MC主控制单元;MC主控制单元,将收到的读、写请求命令送至命令总线,并在满足DRAM读、写保护时限的前提下,在该BANK读、写请求队列中的读、写命令请求命令之前插入其他BANK读、写请求队列中的读、写命令请求的激活命令和/或预充电命令。 上述装置中,所述的读、写请求接口处理单元中还设有具有一定配置深度的请求信息队列单元。 客户读请求接口处理单元中设有第一、第二指针,分别指示客户读请求接口处理单元中读请求信息队列的读出位置和读请求预处理单元中的写入位置。
MC主控制单元内设有MC状态指示器和MC协同状态控制单元,该MC状态指示器具有写、写过渡、读、读过渡、刷新保护和刷新保护解除六种状态指示标志,BC控制单元内设有BC协同状态控制单元并针对每一个读、写请求均设置一 BC状态指示器,该BC状态指示器具有写选通、写到读过渡、读选通、读到写过渡、刷新和刷新保护六种状态指示标志;
当MC主控制单元向DRAM发出写请求或读请求时,将其状态指示器的状态标志设置为写或读,同时MC协同状态控制单元向BC协同状态控制单元发出写协同指示或读协同指示,BC协同状态控制单元将BC状态指示器的状态标志设置为写选通或读选通,并选通全部的写缓冲队列或读缓冲队列,关闭全部的读缓冲队列或写缓冲队列,此时MC主控制单元在配置的写或读时间段内只能响应写请求或读请求,不处理读请求或写请求,写或读时间段结束后将MC状态指示器的状态标志设置为写过渡或读过渡,每一个写请求或读请求发出后,该BC状态指示器的状态标志设置为写到读过渡或读到写过渡; 当MC状态指示器的状态标志为写过渡或读过渡时,MC协同状态控制单元向BC协同状态控制单元发出写过渡协同指示或读过渡协同指示,BC协同状态控制单元将BC状态指示器的状态标志设置为写到读过渡或读到写过渡,并选通剩余的写缓冲队列或读缓冲队列,关闭全部的读缓冲队列或写缓冲队列,等所有剩余的写请求或读请求都处理完之后,MC主控制单元向DRAM发出读请求或写请求,并将其状态标志设置为读或写,所有的BC状态指示器的状态标志均设置为读或写; 当MC状态指示器的状态标志为读或写时,MC协同状态控制单元向BC协同状态控制单元发出读协同指示或写协同指示,BC协同状态控制单元将BC状态指示器的状态标志设置为读或写,并选通全部的读缓冲队列或写缓冲队列,关闭全部的写缓冲队列或读缓冲队列,此时MC主控制单元在配置的读或写时间段内只能响应读请求或写请求,不处理写请求或读请求,读或写时间段结束后将MC状态指示器的状态标志设置为读过渡或写过渡,每一个读请求或写请求发出后,该BC状态指示器的状态标志设置为读到写过渡或写到读过渡; 当MC状态指示器的状态标志为读过渡或写过渡时,MC协同状态控制单元向BC协同状态控制单元发出读过渡协同指示或写过渡协同指示,BC协同状态控制单元将BC状态指示器的状态标志为读到写过渡或写到读过渡,等所有剩余的读请求或写请求都处理完之后,MC状态指示器的状态标志设置为写或读,所有的BC状态指示器的状态标志均设置为写选通或读选通; 当BC状态指示器的状态标志为刷新时,将BC状态指示器的状态标志设置为刷新保护,同时BC协同状态控制单元向MC协同状态控制单元发出保护指令,MC主控制单元单元响应刷新命令,等刷新命令执行结束后,BC协同状态控制单元向MC协同状态控制单元发出刷新保护解除指令,此时MC主控制单元处于接收读、写请求状态。 本装置中还包括数据分割单元,该数据分割单元以客户一个读、写请求的数据宽度是否大于DRAM接口数据位宽为判断依据获得是否对需要对该读、写请求数据块进行分割的判断结果,当判断结果表明需要对该读、写请求数据块进行分割时,将该读、写请求数据根据DRAM接口数据位宽进行分割,计算出分割后各个请求对应的数据块大小和起始地址,并按同页的模式连续向DRAM发出分割后的读写请求。 本发明,基于BANK地址将客户读、写请求转换成相应BANK的读、写请求,BANK分别基于各自的读、写请求队列,同时依次产生各自的读、写命令请求,且上述同时产生的BANK的读、写命令请求并行发出,按收到BANK的读、写命令请求的先后次序依次送往命令总线,并分别在当前BANK的读、写命令请求命令之前插入在后BANK的激活命令和预充电命令,这样,激活指令和预充电指令可以完全隐藏在数据传输过程中,表面上DRAM数据总线一直在进行数据传输,因此大大提高了 DRAM的总线效率。
图1 :传统的DRAM结构示意图; 图2 :本发明DRAM存储控制装置的结构示意图; 图3 :本发明DRAM存储控制装置中BC控制单元工作流程图; 图4 :本发明中MC控制单元和BC控制单元相互作用完成读写指令捆绑的流程图; 图5 :传统DRAM控制方法下的时序图; 图6 :本发明DRAM存储控制方法下的时序图。
8
具体实施例方式
针对目前DRAM外部存储器存储总线效率较低的问题,本发明提供了一种DRAM存储控制装置,该装置提高了 DRAM存储总线的利用效率,从而大大提高了数据通信系统在实际工作中的最大带宽处理能力。下面结合附图和具体实施例对本发明作出详细的说明。
图2为本发明DRAM存储控制装置的结构示意图,如图2所示,该装置200通过存储总线完成客户与DRAM220之间的数据存储,其中DRAM (DDR2或DDR) 220中具有多个BANK (本实施例为BANK1 、 BANK2、 BANK3和BANK4),每个BANK上具有多个基本存储单元。DRAM存储控制装置200包括客户写请求接口处理单元210、客户读请求接口处理单元211、写请求异步转换单元212、读请求异步转换单元213、写请求仲裁单元214、读请求仲裁单元215、写缓冲队列单元216、读缓冲队列单元217、 BC控制单元218和MC控制单元219 ;其中写请求接口处理单元210、客户读请求接口处理单元211根据客户数目可以有多个并行使用,写请求仲裁单元214、读请求仲裁单元215和BC控制单元218的个数与选用的DDR2的BANK数目相同。 客户写请求接口处理单元210中设有BANK地址、行地址和列地址解码器,上述解码器用于解析出客户的写请求地址,该地址与相应BANK的相应存储单元相对应。该客户写请求接口处理单元210中还设有具有一定调整深度的写请求信息队列和写请求队列预处理单元,写请求信息队列缓冲客户写请求接口处理单元210所接收到的客户写请求,在客户写请求出现峰值带宽时可以起到一定的"消峰"作用,写请求队列预处理单元根据解析后的客户读、写请求的BANK地址重新排列成多个基于各BANK的读、写请求队列,并将上述多个读、写请求队列并行地分散发往写异步转换单元,也就是说在同一时间将基于不同BANK的客户写请求并行地送给写异步转换单元,使得客户写请求在接口处就并行化了 。 客户读请求接口处理单元211与客户写请求接口处理单元210类似,其也设有BANK地址、行地址和列地址解码器,上述解码器用于解析出客户的读请求地址,该地址与相应BANK的相应存储单元相对应。客户读请求接口处理单元211中也设有具有一定深度的读请求信息队列和读请求队列预处理单元,读请求信息队列在客户读请求出现峰值带宽时起到"消峰"作用,而读请求队列预处理单元用来对读请求按读请求的输入顺序进行重新排序,使得客户可以直接使用读出的数据。具体做法是,通过设置第一、第二两套指针分别指示客户读请求接口处理单元中读请求信息队列的读出位置和读请求预处理单元中的写入位置,该第一、第二指针均由读客户端负责控制,如读出一个读请求对应的数据块后读指针才能加l,指示下一个待读位置,若该位置对应的读数据没有准备好而其他位置的读数据由于乱序执行而已经准备好的话,读客户仍不能读取该位置数据,直到该位置数据已经准备好。 实际的系统中,通常客户时钟域和DDR时钟域是不同的,一般而言,DDR采用很高的时钟以得到较高的性能,所以客户读、写请求进入DDR时钟域处理之前必须有异步转换过程;写请求异步转换单元212和读请求异步转换213采用通常的"打2拍"方式进行异步转换,使DDR时钟域与客户时钟域相匹配; 写请求仲裁单元214和读请求仲裁单元215分别决定客户写、读请求的优先次序,根据客户对带宽的需求决定最高优先级的请求先被处理,写请求仲裁单元214和读请求仲裁单元215分别将各BANK的读、写请求队列中的多个读、写请求进行仲裁,并依据优先级顺 序生成多个读、写缓冲队列缓存在读、写缓冲队列单元217、216中; 写缓冲队列216和读缓冲队列217是写、读命令管道,具有先进先出的功能;因为 上述的异步转换和仲裁会损耗一定处理时间,而后续的BC控制单元单元218和MC控制单 元单元219处理速度很快,这样会造成BC控制单元单元218和MC控制单元单元219经常处 于没有请求可以处理的"饥饿"状态;写缓冲队列216和读缓冲队列217可以保证单元218 和单元219的请求数目充分。 BC控制单元218用于产生DDR单个BANK体内所有的请求命令,图3为BC控制单 元218的工作流程图,其步骤如下 步骤310 :检查是否有读、写请求,如果有读、写请求,转至步骤311,否则返回开始 空闲状态; 步骤311 :检查读、写请求是否页命中,若是页命中直接转至步骤317,否则转至步 骤312 ; 步骤312 :检查读、写请求对应的BANK是否已经关闭,若已经关闭就转至
步骤315,否则转至步骤313 ;
步骤313 :生成第一次充电命令; 步骤314 :检查充电保护时间是否满足,若已满足转至步骤315,否则继续检查充
电保护时间是否满足; 步骤315 :生成激活命令; 步骤316 :检查激活保护时间是否满足,若已满足转至步骤317,否则继续检查激
活保护时间是否满足; 步骤317 :生成读、写命令; 步骤318:检查是否有新的读、写请求,若有新的读、写请求转至步骤311,否则转 至步骤319 ; 步骤319 :检查本BANK的激活到关闭最小保护时间是否满足,若满足转至步骤 320 ;否则转至步骤318 ; 步骤320 :生成第二次充电命令,此充电命令完成"闭页"功能,主动关闭BANK,目 的是为了节省下一次同BANK不同页读、写请求的关闭时间。 步骤321 :检查充电保护时间是否满足,若已满足转至结束步骤,否则继续检查充 电保护时间是否满足。 各个BC控制单元218并行同时执行上述流程,如果客户读、写请求能较好的分配 到不同的BANK,那么客户的读、写请求几乎可以并行被解析,极大地减少了等待阻塞时间。
BC控制单元218生成的命令不是直接送给DDR命令总线的,所以BC控制单元218 发出的命令不会立即执行,而需要MC主控制单元单元219汇总各个BANK的命令并考虑刷 新命令后由单元219产生DDR命令并送给DDR命令总线。 单元219执行命令的优先次序从高到低依次是刷新命令、读写命令、激活命令、 充电命令,装载配置命令只有在DDR初始化阶段才会用到,正常工作阶段不予考虑。MC主控 制单元单元219在没有刷新命令时,按BANK次序依次执行读、写命令,在保证DDR时间保护 参数条件下,激活命令和充电命令被塞入命令总线空闲的缝隙中,激活命令和充电命令好
10像被隐藏到数据总线有效传输窗口内。 DDR的读写切换频繁也会带来很大的数据总线损耗,如写切换到读,写突发最后一 个数据之后必须等待WTR个周期(DDR的时间参数)命令总线上才能出现读命令,读命令之 后又必须等待CL个周期(DDR的时间参数)DDR数据总线上才出现读出的数据;读切换到 写时,数据总线上也必须有l个时钟周期的转换空隙。因此减少不必要的读写切换是提高 DDR总线效率的重要举措,本发明中MC主控制单元单元219作为主动控制方,与各个BC控 制单元218 —起协同控制捆绑读、写命令,具体作法如图4所示,MC主控制单元219内设有 MC状态指示器和MC协同状态控制单元,该MC状态指示器具有写410、写过渡411、读412、 读过渡413、刷新保护414和刷新保护解除415六种状态指示标志,BC控制单元218内设有 BC协同状态控制单元并针对每一个读、写请求均设置一 BC状态指示器,该BC状态指示器具 有写选通420、写到读过渡421、读选通422、读到写过渡423、刷新424和刷新保护425六种 状态指示标志; 当MC主控制单元219向DRAM发出写请求时,将其状态指示器的状态标志设置为 写410,同时MC协同状态控制单元向BC协同状态控制单元发出写协同指示,BC协同状态控 制单元将BC状态指示器的状态标志设置为写选通420,并选通全部的写缓冲队列216,关闭 全部的读缓冲队列217,此时MC主控制单元219在配置的写时间段内只能响应写请求,不处 理读请求,写时间段结束后将MC状态指示器的状态标志设置为写过渡411,每一个写请求 发出后,该BC状态指示器的状态标志设置为写到读过渡421 ; 当MC状态指示器的状态标志为写过渡411时,MC协同状态控制单元向BC协同状 态控制单元发出写过渡协同指示,BC协同状态控制单元将BC状态指示器的状态标志设置 为写到读过渡421,并选通剩余的写缓冲队列,关闭全部的读缓冲队列,等所有剩余的写请 求都被处理之后,MC主控制单元219向DRAM发出读请求,并将其状态标志设置为读412,所 有的BC状态指示器的状态标志均设置为读422 ; 当MC状态指示器的状态标志为读412时,MC协同状态控制单元向BC协同状态控 制单元发出读协同指示,BC协同状态控制单元将BC状态指示器的状态标志设置为读422, 并选通全部的读缓冲队列217,关闭全部的写缓冲队列216,此时MC主控制单元219在配置 的读时间段内只能响应读请求,不处理写请求,读时间段结束后将MC状态指示器的状态标 志设置为读过渡413,每一个读请求发出后,该BC状态指示器的状态标志设置为读到写过 渡423 ; 当MC状态指示器的状态标志为读过渡413时,MC协同状态控制单元向BC协同 状态控制单元发出读过渡协同指示,BC协同状态控制单元将BC状态指示器的状态标志为 读到写过渡423,等所有剩余的读请求都被处理之后,MC状态指示器的状态标志设置为写 410,所有的BC状态指示器的状态标志均设置为写选通420。 当MC主控制单元219向DRAM发出读请求时,将其状态指示器的状态标志设置为 读412,同时MC协同状态控制单元向BC协同状态控制单元发出读协同指示,BC协同状态控 制单元将BC状态指示器的状态标志设置为读选通422,并选通全部的读缓冲队列217,关闭 全部的写缓冲队列216,此时MC主控制单元219在配置的写时间段内只能响应读请求,不处 理写请求,读时间段结束后将MC状态指示器的状态标志设置为读过渡413,每一个读请求 发出后,该BC状态指示器的状态标志设置为读到写过渡423 ;
当MC状态指示器的状态标志为读过渡413时,MC协同状态控制单元向BC协同状 态控制单元发出读过渡协同指示,BC协同状态控制单元将BC状态指示器的状态标志设置 为读到写过渡423,并选通剩余的读缓冲队列,关闭全部的写缓冲队列,等所有剩余的读请 求都被处理之后,MC主控制单元219向DRAM发出写请求,并将其状态标志设置为写410,所 有的BC状态指示器的状态标志均设置为写420 ; 当MC状态指示器的状态标志为写410时,MC协同状态控制单元向BC协同状态控 制单元发出写协同指示,BC协同状态控制单元将BC状态指示器的状态标志设置为写420, 并选通全部的写缓冲队列216,关闭全部的读缓冲队列217,此时MC主控制单元219在配置 的读时间段内只能响应写请求,不处理读请求,读时间段结束后将MC状态指示器的状态标 志设置为写过渡411,每一个写请求发出后,该BC状态指示器的状态标志设置为写到读过 渡421 ; 当MC状态指示器的状态标志为写过渡411时,MC协同状态控制单元向BC协同 状态控制单元发出写到读协同指示,BC协同状态控制单元将BC状态指示器的状态标志为 写到读过渡421,等所有剩余的写请求都被处理之后,MC状态指示器的状态标志设置为读 412,所有的BC状态指示器的状态标志均设置为读选通422。 当BC状态指示器的状态标志为刷新424时,将BC状态指示器的状态标志设置为 刷新保护425,同时BC协同状态控制单元向MC协同状态控制单元发出保护指令,MC主控制 单元单元219响应刷新命令,等刷新请求结束后BC协同状态控制单元向MC协同状态控制 单元发出保护解除指令,此时MC主控制单元可以接收读、写请求。 本发明中将刷新命令放在读命令之后执行,是因为读请求对延时的要求是高于写 请求的。通过上述2个协同状态控制单元协同工作,可以将客户读、写请求在一定时间内单 独捆绑,产生连写连读图案,消除了频繁切换带来带宽损耗;虽然命令捆绑的做法会引入一 定的响应延时,但带宽提升上来后控制单元对客户请求的响应速度也相应地提高了 。
对于客户读、写请求的数据量大于DRAM—次输出的数据量时,本发明可以对客户 的读、写请求进行切割,如果大量出现一次请求的数据量只有1BYTE的情况,本发明会减少 选用的DDR2的数据位宽,降低DDR2总线上损耗带宽,以满足DRAM接口的应用。MC主控制 单元内设有数据分割单元,该数据分割单元以客户一个读、写请求数据块的大小是否大于 DRAM的基本内存单元为判断依据获得是否对需要对该读、写请求数据块进行分割的判断结 果,当判断结果表明需要对该读、写请求数据块进行分割时,首先确定DRAM突发块(一次传 输的数据量)的地址边界,然后计算出分割后各个请求对应的数据块大小和起始地址,并 按同页的模式连续向DRAM发出分割后的读写请求。
本发明还提供了 DRAM存储控制方法,包括以下步骤 A10、对客户的读、写请求进行地址解码后,根据BANK地址重新排列成多个基于各
BANK的读、写请求队列,并将上述多个基于各BANK的读、写请求队列同步后并行发出; 该步骤中基于各BANK的写请求队列通过以下步骤生成 A101、将收到的客户写请求放入具有一定配置深度的写请求信息队列中; A102、依次将写请求信息队列出口处的客户写请求进行地址解析; A103、根据解析后客户写请求的BANK地址将其重新排列组成多个基于各BANK的
写请求队列,分别写入写请求预处理单元中;
A104、多个基于各BANK的写请求队列同步后并行发出。
基于各BANK的读请求队列通过以下步骤生成 Alll、将收到的客户读请求放入具有一定配置深度的读请求信息队列中; A112、顺序将读请求信息队列出口处的客户读请求进行地址解析; A113、根据解析后客户读请求的BANK地址将其重新排列组成多个基于各BANK的
读请求队列,分别写入读请求预处理单元中,此步骤中,设置第一指针指向读请求信息队列
的当前读出位置,设置第二指针指向该读请求在读请求预处理单元中的写入位置,与第一
指针对应的读请求写入第二指针指向的读请求预处理单元中的相应位置; A114、将多个基于各BANK的读请求队列同步后并行发出。 A20、分别对每个基于各BANK的读、写请求队列中的多个读、写请求进行仲裁,并 依据优先级顺序进行排队; A30、根据每个基于各BANK的读、写请求队列中的读、写请求,分别生成各自的读、 写请求命令以及激活命令和/或预充电命令; A40、将读、写请求命令送至命令总线,并在满足DRAM读、写保护时限的前提下,在 该BANK读、写请求队列中的读、写命令请求命令之前插入其他BANK读、写请求队列中的读、 写命令请求的激活命令和/或预充电命令。 上述方法中,MC主控制单元与BC控制单元协同处理,具体实现方法如前所述。
对于客户读、写请求的数据宽度大于DRAM接口数据位宽时,本方法可以对客户的 读、写请求进行切割,具体实现方法如前所述。 下面以一个具体实例对本发明提供的方法所带来的效果进行详细的说明。
该具体实例是, 一组客户请求按先后次序是W0/R0/W1/R1/W2/R2/W3/R3,其中WO 表示对BANKO的写请求,RO是对BANKO的读请求,但读写请求地址不同页,其他依此类推。 时序图5中DDR2的时序保护限制是CL(CAS潜伏期)为3T, Tras (激活到关闭时间)为 8T,Trrd(激活到激活时间)为2T, Twr (写数据到充电时间)为3T, Twtr (写数据到读命令 时间)为2T, Trcd(激活到读写命令时间)为3T, Trp(充电到激活时间)为3T, T为时钟 周期。 图5是按传统控制方法的时序图,由于没有支持多BANK乒乓操作和命令捆绑,存 取命令按顺序依次根据DRAM的时间保护限制逐步执行的,如图5所示,完成上面的一组客 户请求所需指令是8个激活ACT,8个充电PRE,4个写WR,4个读RD,共需要104T完成上述 8个客户请求。 图6是采用本发明的存取控制方法存取时序图,由于支持BANK并行乒乓操作和命 令捆绑,虽然所需指令与图5中指令个数一样,但充电和激活都隐藏到数据总线有效阶段, 仅捆绑后的写读切换时由于时间保护限制损耗了 5T,总共只需要42T就完成了所有客户请 求,大大提高了数据总线的利用率。 本发明不局限于上述最佳实施方式,任何人应该得知在本发明的启示下作出的结 构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。
1权利要求
DRAM存储控制方法,其特征在于包括以下步骤A10、对客户的读、写请求进行地址解码后,根据BANK地址重新排列成多个基于各BANK的读、写请求队列,并将上述多个基于各BANK的读、写请求队列同步后并行发出;A20、分别对每个基于各BANK的读、写请求队列中的多个读、写请求进行仲裁,并依据优先级顺序进行排队;A30、根据每个基于各BANK的读、写请求队列中的读、写请求,分别生成各自的读、写请求命令以及激活命令和/或预充电命令;A40、将读、写请求命令送至命令总线,并在满足DRAM读、写保护时限的前提下,在该BANK读、写请求队列中的读、写命令请求命令之前插入其他BANK读、写请求队列中的读、写命令请求的激活命令和/或预充电命令。
2. 如权利要求I所述的DRAM存储控制方法,其特征在于,步骤AIO中基于各BANK的写 请求队列通过以下步骤生成A101、将收到的客户写请求放入具有一定配置深度的写请求信息队列中; A102、依次将写请求信息队列出口处的客户写请求进行地址解析; A103、根据解析后客户写请求的BANK地址将其重新排列组成多个基于各BANK的写请 求队列,分别写入写请求预处理单元中;A104、多个基于各BANK的写请求队列同步后并行发出。
3. 如权利要求1所述的DRAM存储控制方法,其特征在于,步骤A10中,基于各BANK的 读请求队列通过以下步骤生成Alll、将收到的客户读请求放入具有一定配置深度的读请求信息队列中; A112、顺序将读请求信息队列出口处的客户读请求进行地址解析; A113、根据解析后客户读请求的BANK地址将其重新排列组成多个基于各BANK的读请 求队列,分别写入读请求预处理单元中,此步骤中,设置第一指针指向读请求信息队列的当 前读出位置,设置第二指针指向该读请求在读请求预处理单元中的写入位置,与第一指针 对应的读请求写入第二指针指向的读请求预处理单元中的相应位置; A114、将多个基于各BANK的读请求队列同步后并行发出。
4. 如权利要求1、2或3所述的DRAM存储控制方法,其特征在于,在步骤A40中,根据当 前送往命令总线的读、写请求状态标志依次读取各BANK读、写请求队列。
5. 如权利要求4所述的提高DRAM数据总线效率的存储控制方法,其特征在于,当一个 读、写请求的数据宽度大于DRAM接口数据位宽时,将该读、写请求数据根据DRAM接口数据 位宽进行分割,并依分割后各个读、写请求对应的数据大小和起始地址,按同页的模式连续 向DRAM发出分割后的读、写请求。
6. DRAM存储控制装置,该DRAM由多个BANK组成,每个BANK中设有分别由行地址和列 地址确定的多个基本存储单元,所述的存储控制装置包括若干读、写请求接口处理单元,异 步转换单元,与BANK数目相对应的读、写请求队列仲裁单元和BANK控制单元以及读、写缓 冲队列单元和MC主控制单元,其特征在于所述的读、写请求接口处理单元中分别设有读、写请求地址解码器和读、写请求队列预 处理单元,BANK地址、行地址和列地址解码器解析出客户的读、写请求地址,该地址与相应 BANK的相应基本存储单元相对应,所述的读、写请求队列预处理单元根据解析后的客户读、写请求的BANK地址重新排列成多个基于各BANK的读、写请求队列,并将上述多个基于各 BANK的读、写请求队列经异步转换单元同步后并行发往读、写请求队列仲裁单元;所述的读、写请求队列仲裁缓冲单元,分别将各BANK的读、写请求队列中的多个读、写 请求进行仲裁,并依据优先级顺序生成多个读、写缓冲队列缓存在读、写缓冲队列单元中;所述的BANK控制单元,根据读、写缓冲队列单元中各BANK读、写请求队列中的读、写请 求,分别生成各自的读、写请求命令以及激活命令和/或预充电命令,上述读、写请求命令 以及激活命令和/或预充电命令并行发往MC主控制单元;MC主控制单元,将收到的读、写请求命令送至命令总线,并在满足DRAM读、写保护时限 的前提下,在该BANK读、写请求队列中的读、写命令请求命令之前插入其他BANK读、写请求 队列中的读、写命令请求的激活命令和/或预充电命令。
7. 如权利要求6所述的DRAM存储控制装置,其特征在于所述的读、写请求接口处理单 元中还设有具有一定配置深度的请求信息队列单元。
8. 如权利要求6或7所述的DRAM存储控制装置,其特征在于客户读请求接口处理单元 中设有第一、第二指针,分别指示客户读请求接口处理单元中读请求信息队列的读出位置 和读请求预处理单元中的写入位置。
9. 如权利要求8所述的DRAM存储控制装置,其特征在于MC主控制单元内设有MC状态 指示器和MC协同状态控制单元,该MC状态指示器具有写、写过渡、读、读过渡、刷新保护和 刷新保护解除六种状态指示标志,BC控制单元内设有BC协同状态控制单元并针对每一个 读、写请求均设置一BC状态指示器,该BC状态指示器具有写选通、写到读过渡、读选通、读 到写过渡、刷新和刷新保护六种状态指示标志;当MC主控制单元向DRAM发出写请求或读请求时,将其状态指示器的状态标志设置为 写或读,同时MC协同状态控制单元向BC协同状态控制单元发出写协同指示或读协同指示, BC协同状态控制单元将BC状态指示器的状态标志设置为写选通或读选通,并选通全部的 写缓冲队列或读缓冲队列,关闭全部的读缓冲队列或写缓冲队列,此时MC主控制单元在配 置的写或读时间段内只能响应写请求或读请求,不处理读请求或写请求,写或读时间段结 束后将MC状态指示器的状态标志设置为写过渡或读过渡,每一个写请求或读请求发出后, 该BC状态指示器的状态标志设置为写到读过渡或读到写过渡;当MC状态指示器的状态标志为写过渡或读过渡时,MC协同状态控制单元向BC协同状 态控制单元发出写过渡协同指示或读过渡协同指示,BC协同状态控制单元将BC状态指示 器的状态标志设置为写到读过渡或读到写过渡,并选通剩余的写缓冲队列或读缓冲队列, 关闭全部的读缓冲队列或写缓冲队列,等所有剩余的写请求或读请求都处理完之后,MC主 控制单元向DRAM发出读请求或写请求,并将其状态标志设置为读或写,所有的BC状态指示 器的状态标志均设置为读或写;当MC状态指示器的状态标志为读或写时,MC协同状态控制单元向BC协同状态控制单 元发出读协同指示或写协同指示,BC协同状态控制单元将BC状态指示器的状态标志设置 为读或写,并选通全部的读缓冲队列或写缓冲队列,关闭全部的写缓冲队列或读缓冲队列, 此时MC主控制单元在配置的读或写时间段内只能响应读请求或写请求,不处理写请求或 读请求,读或写时间段结束后将MC状态指示器的状态标志设置为读过渡或写过渡,每一个 读请求或写请求发出后,该BC状态指示器的状态标志设置为读到写过渡或写到读过渡;当MC状态指示器的状态标志为读过渡或写过渡时,MC协同状态控制单元向BC协同状 态控制单元发出读过渡协同指示或写过渡协同指示,BC协同状态控制单元将BC状态指示 器的状态标志为读到写过渡或写到读过渡,等所有剩余的读请求或写请求都处理完之后, MC状态指示器的状态标志设置为写或读,所有的BC状态指示器的状态标志均设置为写选 通或读选通;当BC状态指示器的状态标志为刷新时,将BC状态指示器的状态标志设置为刷新保护, 同时BC协同状态控制单元向MC协同状态控制单元发出保护指令,MC主控制单元单元响应 刷新命令,等刷新命令执行结束后,BC协同状态控制单元向MC协同状态控制单元发出刷新 保护解除指令,此时MC主控制单元处于接收读、写请求状态。
10.如权利要求9所述的DRAM存储控制装置,其特征在于还包括数据分割单元,该数据 分割单元以客户一个读、写请求的数据宽度是否大于DRAM接口数据位宽为判断依据获得 是否对需要对该读、写请求数据块进行分割的判断结果,当判断结果表明需要对该读、写请 求数据块进行分割时,将该读、写请求数据根据DRAM接口数据位宽进行分割,计算出分割 后各个请求对应的数据块大小和起始地址,并按同页的模式连续向DRAM发出分割后的读 写请求。
全文摘要
本发明公开了一种DRAM存储控制方法及装置,该方法包括A10、对读、写请求解码,并根据BANK地址重新排列成多个基于各BANK的读、写请求队列;A20、分别对读、写请求进行仲裁;A30、分别生成各自的读、写请求命令以及激活命令和/或预充电命令;A40、将读、写请求命令送至命令总线,并在满足DRAM读、写保护时限的前提下,在该BANK读、写请求队列中的读、写命令请求命令之前插入其他BANK读、写请求队列中的读、写命令请求的激活命令和/或预充电命令。本发明,将激活指令和预充电指令可以完全隐藏在数据传输过程中,表面上DRAM数据总线一直在进行数据传输,因此大大提高了DRAM的总线效率。
文档编号G06F13/18GK101788963SQ201010126558
公开日2010年7月28日 申请日期2010年3月18日 优先权日2010年3月18日
发明者冯波, 张涛, 陶志飞 申请人:烽火通信科技股份有限公司