CN103810123A - 内存控制装置及方法 - Google Patents
内存控制装置及方法 Download PDFInfo
- Publication number
- CN103810123A CN103810123A CN201410054491.8A CN201410054491A CN103810123A CN 103810123 A CN103810123 A CN 103810123A CN 201410054491 A CN201410054491 A CN 201410054491A CN 103810123 A CN103810123 A CN 103810123A
- Authority
- CN
- China
- Prior art keywords
- memory
- order
- memory access
- command
- internal memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Dram (AREA)
- Memory System (AREA)
Abstract
本发明提供了一种内存控制装置及方法,该内存控制装置包括:访存命令调度器和时序控制器,其中,所述访存命令调度器,用于接收访存装置对内存设备的访存命令,并对所述访存命令进行调度,然后将调度后的访存命令发送给所述时序控制器;所述时序控制器,用于根据所述内存设备的状态将所述调度后的访存命令译码为内存操作命令,并控制所述内存操作命令向所述内存设备的发送顺序和发送时机。本发明实施例的内存控制装置提高了对内存设备的访存效率,也增加了内存控制器的灵活性,便于进行升级改造。
Description
技术领域
本发明涉及计算机系统技术领域,尤其是一种内存控制装置及方法。
背景技术
内存(也称主存)是计算机系统的一个重要组成部分。计算机系统对内存的读写访问是由内存控制器控制完成的,内存控制器接收来自计算机系统其它部分(比如CPU、显卡等)的访存请求,然后将其转换成对内存的操作命令,并返回数据(针对读命令)或响应(针对写命令)给请求来源。内存控制器在计算机系统的位置如图1所示。
现代主流的内存系统是由DRAM(动态随机访问存储器)构成的。DRAM的典型结构是一个三维的存储空间,一个DRAM是由多个bank(也称为存储体)构成的,一个bank是一个二维的存储空间,可以划分为多个行(也称为页),每个行包含固定个数的存储单元。
对DRAM进行读写访问时,首先需要将目标单元所在的行打开(简称开页),然后发送列地址对目标单元进行访问。另外,在任何时刻一个bank中最多只能有一个行处于打开状态。因此,当一个bank中存在已经打开的行时,如果需要访问该bank中的其他行,首先需要发送一个PRE(precharge,预充电)命令将已经打开的行关闭(简称关页),然后再发送一个ACT(activate,激活)命令将目标行打开,然后再发送读写(RW,read/write)命令。当目标行已经处于打开状态时,此时可以直接发送读写命令。总的来说,对DRAM的一次读写访问可能涉及三种命令:PRE(precharge)、ACT(activate)、RW(read/write)。是否需要发送PRE和ACT命令是由当前DRAM所处的状态和目标地址决定的。
现有技术的内存控制器结构如图2所示,当内存控制器接收访存命令后,直接经过命令译码逻辑被转换成对应于DRAM设备的PRE/ACT/RW等操作,具有调度功能的内存控制器一般会包含一个命令队列,用来存储译码后的PRE/ACT/RW等DRAM操作命令,然后选择逻辑综合考虑访存命令优先级、页命中/页冲突信息、时序控制信息等因素,然后选出一个可发送的DRAM操作(PRE、ACT、RW等)发送给物理控制器。
这种传统的内存控制器将访存命令调度、时序调度以及时序控制的功能掺杂在一起,使得内存控制器设计起来十分复杂,并且给验证、物理实现都带来很大困难。特别是设计传统的内存控制器的选择逻辑同时需要考虑的因素太多,导致设计更加复杂,访存效率低下。
发明内容
本发明提供一种内存控制装置及方法,以解决现有技术中内存控制器的设计复杂和访存效率低的问题。
一方面,本发明提供的一种内存控制装置,包括:访存命令调度器和时序控制器,其中,所述访存命令调度器,用于接收访存装置对内存设备的访存命令,并对所述访存命令进行调度,然后将调度后的访存命令发送给所述时序控制器;所述时序控制器,用于根据所述内存设备的状态将所述调度后的访存命令译码为内存操作命令,并控制所述内存操作命令向所述内存设备的发送顺序和发送时机。
如上所述的内存控制装置,所述访存命令调度器与所述时序控制器经由时序控制接口连接,所述时序控制接口包括:访存命令总线,用于传递所述调度后的访存命令;读数据总线,用于传递从所述内存设备中读出的数据;以及写数据总线,用于传递待写入所述内存设备的数据。
如上所述的内存控制装置,所述访存命令调度器包括:访存命令地址预译码逻辑,用于将所述访存命令的访存地址译码成适于所述内存设备识别的地址信息,以形成译码后的访存命令;访存命令队列,用于存储所述译码后的访存命令;访存命令选择逻辑,根据预定策略确定所述访存命令队列中译码后的访存命令的发送顺序,并按照所述发送顺序将所述译码后的访存命令发送给所述时序控制器。
如上所述的内存控制装置,所述预定策略包括:特定源端口访存命令优先发送、行命中访存命令优先发送、同一类访存命令聚集发送以及bank分组调度发送。
如上所述的内存控制装置,所述访存命令调度器还包括:数据暂存模块,用于存储待写入所述内存设备的数据和从所述内存设备中读出但尚未返回给所述访存装置的数据。
如上所述的内存控制装置,所述时序控制器包括:内存操作译码逻辑,用于根据所述内存设备的状态将所述访存命令调度器调度后的访存命令译码为内存操作命令;内存操作命令队列,用于存储所述内存操作命令;以及操作命令发送控制逻辑,用于控制所述内存操作命令队列中的内存操作命令的发送顺序和发送时机。
如上所述的内存控制装置,所述操作命令发送控制逻辑包括:状态机模块,用于获取所述内存装置当前所处的状态,以获知允许的操作;计数器,用于控制所述内存操作命令的发送时机;时序控制模块,用于根据从所述状态机模块获知的所述内存装置所处的状态以及所述计数器的值来确定可发送的内存操作命令,以及当多个内存操作命令可发送时,确定所述多个内存操作命令的发送顺序。
如上所述的内存控制装置,所述时序控制器还包括:读数据控制模块,用于控制从所述内存设备中读出的数据的发送时机;以及写数据控制模块,用于控制待写入所述内存设备的数据的发送时机。
第二方面,本发明提供的一种内存控制方法,包括:调度访存装置对内存设备的访存命令;根据所述内存设备的状态将调度后的访存命令译码为内存操作命令;以及控制所述内存操作命令向所述内存设备的发送顺序和发送时机。
如上所述的内存控制方法,所述调度访存装置对内存设备的访存命令包括:将所述访存命令的访存地址译码成适于所述内存设备识别的地址信息,以形成译码后的访存命令;根据预定策略确定所述访存命令的发送顺序。
如上所述的内存访问控制方法,所述预定策略包括特定源端口访存命令优先发送、行命中访存命令优先发送、同一类访存命令聚集发送以及bank分组调度发送。
如上所述的内存访问控制方法,所述控制所述内存操作命令的发送顺序和发送时机包括:获取所述内存装置当前所处的状态,以获知允许的操作;控制所述内存操作命令的发送时机;根据获知的所述内存装置所处的状态以及内存操作命令的发送时机来确定可发送的内存操作命令,以及当多个内存操作命令可发送时,确定所述多个内存操作命令的发送顺序。
本发明实施例这种将访存命令调度与时序控制和调度分离的结构,简化了内存控制器的设计与验证,且便于进行分工合作。而且,对于访存命令调度器发送过来的任何读写命令序列,时序控制器都可以找到一种最快、最高效的发送方式,提高了发送效率;而且,时序控制器与访存命令调度器是相对独立的,也就是说,在不改变时序控制器的条件下,可将访存命令调度器替换成新的设计,使得时序控制器具有通用性。总的来说,本发明实施例的内存控制装置提高了对内存设备的访存效率,也增加了内存控制器的灵活性,便于进行升级改造。
附图说明
图1是内存控制器在计算机系统中的位置示意图;
图2是现有技术的内存控制器结构;
图3是本发明一实施例的内存控制装置的结构示意图;
图4是本发明一实施例的时序控制器对发送时机进行控制的示意图;
图5是本发明一实施例的内存控制装置的连接结构示意图;
图6是本发明一实施例的访存命令调度器的结构示意图;
图7是本发明一实施例的时序控制接口的示意图;
图8是本发明一实施例的时序控制器的结构示意图;
图9是本发明一实施例的操作命令发送控制逻辑的结构示意图;
图10是简化的bank状态机示意图;
图11是本发明一实施例的内存控制方法的流程图;
图12是本发明一实施例中控制内存操作命令的发送顺序和发送时机的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的内存访问控制装置和方法进行说明。本实施例中内存控制装置是一种改进的内存控制器,其可用以控制多种类型的内存设备,例如DRAM或NVM(非易失存储器)等,NVM可以是相变存储器(PCM)或磁阻存储器(MRAM)等。应当理解,以下所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图3为本发明一实施例提供的内存控制装置的结构框图。该内存控制装置31包括:访存命令调度器311和时序控制器312。
访存命令调度器311用于接收访存装置32对内存设备33的访存命令,并对访存命令进行调度,然后将调度后的访存命令发送给时序控制器312;时序控制器312用于根据内存设备33的状态将调度后的访存命令译码为内存操作命令,并控制内存操作命令向内存设备33的发送顺序和发送时机。
其中,访存命令调度器311接收到的访存命令(例如,读写命令),可能来自计算机系统中的多个访存装置,例如多个处理器核或显卡等,其对访存命令的调度包括对访存命令的顺序调度。具体地,访存命令中包括有操作码和与访存命令相关联的访存地址。
以下为访存命令调度器311对访存命令进行调度的三个实施例:
一、来自特定源端口的访存命令优先发送:若访存命令调度器311接收到的访存命令来自计算机系统中的多个访存装置,其可对接收到的至少一个访存命令根据其来源按照一定的优先级进行重新排队,例如使处理器核的访存命令优先于显卡等等,将重新排队后的访存命令发送给时序控制器312,以满足不同的访存装置对访存延迟和带宽的不同要求;
二、行命中访存命令优先发送:当读写命令对同一bank读写时,如果当前访问的行地址与上次访问的行地址相同,则此时可以直接发送读写命令,这种情况为行命中。如果当前访问的行地址与上次访问的行地址不同,则必须先关掉上次的行,再打开当前行,然后才能发送读写命令,这种情况为行冲突。显然,行冲突的访存时间会明显大于行命中的访存时间。这时,访存命令调度器311可改变读写命令的先后顺序,优先发送与上一条访存命令行地址相同的访存命令,以提高行命中的比例,从而提高针对内存设备的访存速度。
三、同一类访存命令聚集发送:从内存设备中读数据时是由内存设备来驱动数据总线,而向内存设备写数据时是由内存控制装置自身来驱动数据总线,内存设备的数据总线由读状态转换到写状态或者由写状态转换到读状态都需要额外的时钟周期,而连续的读操作或连续的写操作则不需要这样额外的转换时间。这时,访存命令调度器311可对访存命令重新排序,将同一类命令聚集,比如将读命令聚集在一起,连续发送给内存设备33,从而节省内存设备数据总线的读写切换时间,进而提高访存性能。
本领域技术人员可以理解,上述三种针对访存命令的调度仅为示例,而非局限。访存命令调度器311可根据需要针对访存命令进行多种调度。
时序控制器312在接收到访存命令调度器311发送过来的调度后的访存命令后,会根据内存设备33的状态将其译码为内存操作命令。例如,时序控制器312会根据当前内存设备所处的状态,来决定是否需要产生额外的PRE、ACT等命令,以形成访问内存设备的内存操作命令。
接下来,时序控制器312还会对内存操作命令的发送时机进行控制,例如时序调度:当一个针对内存设备33的PRE或ACT命令不违反任何时序限制且不与前面的bank访问存在冲突的时候,时序控制器312就可将其立即发送出去,而不必严格按照它们所属的访存命令的先后顺序,这并不改变访存命令的发送顺序,只改变PRE、ACT等额外命令的发送顺序。如图4所示,其为时序控制器312与内存设备33之间的命令总线(cmd bus)中的命令调度情况,其中RD代表读命令,RD1和RD2的目标是不同的bank。可以看出,调度后RD2可以提前4个周期发送出去,也就是说,总的访存时间减少了4个周期。从而,提高了内存设备的命令发送效率,节省了针对内存设备的操作发送时间。
此外,当内存设备33为DRAM时,DRAM的规范(比如JEDEC规范)会对不同命令的发送顺序及命令之间的时间间隔做出限制。比如tRRD(Active to active command period,激活到激活操作的时间间隔),规定了连续两个ACT命令之间的最小间隔时间,tRCD(RAS to CAS command delay,活到读写操作的时间间隔),规定了对同一bank的ACT命令和读写命令之间的最小时间间隔,tRTP(Read to Precharge command delay,读操作到预充电的时间间隔),规定了对同一bank的读命令和PRE命令之间的最小时间间隔。tFAW则规定了连续打开(Active)4个bank的最小时间窗口。还有一些限制规定的是最大时间间隔。比如tREFi(Average periodic refresh interval,平均刷新操作的时间间隔),规定了刷新命令必须发送的平均最大时间间隔,等等。这样,时序控制器312也可考虑需遵守的规范来控制内存操作命令的发送时机,进行时序控制。
由上述实施例的描述可以看出:本发明实施例中的访存命令调度器311仅调度接收到的访存命令(例如,读写命令),而不进行访存命令的译码;是由时序控制器312来将访存命令译码为内存操作命令,并控制内存操作命令的发送时机,即由时序控制器312来进行时序控制和时序调度。本发明实施例这种将访存命令调度与时序控制和调度分离的结构,简化了内存控制器的设计与验证,且便于进行分工合作。而且,对于访存命令调度器发送过来的任何读写命令序列,时序控制器都可以找到一种最快、最高效的发送方式,提高了发送效率;而且,时序控制器与访存命令调度器是相对独立的,也就是说,在不改变时序控制器的条件下,可将访存命令调度器替换成新的设计,使得时序控制器具有通用性。总的来说,本发明实施例的内存控制装置提高了对内存设备的访存效率,也增加了内存控制器的灵活性,便于进行升级改造。
如图5所示,在一个实施例中,访存命令调度器511通过内存子系统接口(比如AXI总线)52接收计算机系统的访存装置对内存设备53的访存命令;访存命令调度器511通过时序控制接口513向时序控制器512发送调度后的访存命令;时序控制器512与物理控制器(PHY)54通过PHY接口514相连,物理控制器54通过内存总线56连接内存设备53。
在如图6所示的实施例中,访存命令调度器600包括:访存命令地址预译码逻辑601、访存命令队列602和访存命令选择逻辑603。
其中,访存命令地址预译码逻辑601用于将访存命令中的访存地址译码成适于所述内存设备识别的地址信息,作为译码后的访存命令,可供访存命令选择逻辑603根据译码后的地址信息进行调度。在一实施例中,经访存命令地址预译码逻辑601译码后的地址信息可包括:bank地址、行地址和列地址;若内存设备中不止包含一组内存芯片,则译码后的地址信息还可包括片选(Chip Select)地址,用以选定将访问的一组内存芯片。
访存命令队列602用于存储译码后的访存命令,在图6所示的实施例中,访存命令队列602存储有N个访存命令。其中,每个访存命令可包括多个字段,以记录多种信息,例如记录访存命令接收时的先后顺序、访存命令当前所处的状态(是否有效、准备好发送、已发送等待)以及发送给时序控制器的先后顺序。
其中,访存命令队列602可以为1个,也可以为多个。当访存命令队列为多个时,可将访存命令队列分为读命令队列和写命令队列,以分别存储读命令和写命令。在一个实施例中,访存命令队列602还可包括多个bank队列,用以分别存储具有相同bank地址的访存命令。
访存命令选择逻辑603用于根据预先设置的策略确定访存命令队列602中存储的译码后的访存命令的发送顺序,并按照发送顺序将译码后的访存命令依次发送给时序控制器,其中,预先设置的策略包括但不限于上述实施例中提及的来自特定源端口的访存命令优先发送、行命中访存命令优先发送以及同一类访存命令聚集发送。
就行命中访存命令优先发送策略而言,在一实施例中,具体地,由于经访存命令地址预译码逻辑601译码后的地址信息可包括bank地址、行地址、列地址和/或片选地址,那么访存命令选择逻辑603可在访存命令队列602中选择与前一访存命令的片选地址、bank地址和行地址相同的访存命令作为下一条发送的访存命令。
当访存命令队列602中包括多个bank队列时,访存命令选择逻辑603可采用bank分组调度发送策略:优先选择不在同一个bank队列中的访存命令发送,以提高并发度。
而且,预先设置的各策略间的优先级高低也不同,例如,当某一访存命令既满足行命中访存命令优先发送策略又满足bank分组调度发送策略时,更优先采用行命中访存命令优先发送策略,即行命中访存命令优先发送策略的优先级高于bank分组调度发送策略的优先级。
具体地,访存命令选择逻辑603可根据预先设置的优先级策略对译码后的访存命令进行排序,并将访存命令的发送顺序信息更新到访存命令队列602中用于记录发送给时序控制器的先后顺序等信息的字段中,再依序发送。
可选地,访存命令调度器600还可包含数据暂存模块604,用于存储待写入内存设备的写数据和从内存设备中读出但尚未返回给访存装置的读数据。
可以看出,访存命令调度器并不关心访存命令队列中的访存命令是何时如何发送给内存设备的以及是否需要及何时发送PRE、ACT等额外命令,访存命令调度器只关心访存命令发送的先后顺序。
可选地,如图7所示,连接访存命令调度器与时序控制器的时序控制接口700包括访存命令总线701、读数据总线702、写数据总线703和其他控制信息传输线704。
其中,访存命令总线701用于传递调度后的访存命令,调度后的访存命令中可包括:bank地址、行地址、列地址和/或片选地址,以及读写长度等信息;读数据总线702用于传递从内存设备中读回的数据;写数据总线703用于传递待写入内存设备的数据。
另外,时序控制接口700还可包括其他控制信息传输线704,用于传送其他附加控制信息,其他附加信息包括开页或关页的预测信息。例如当访存命令调度器发现访存命令队列为空时,可以发送一个关页预测信息,这样当下一个访存命令到来时,如果该访存命令与上一个访存命令存在页冲突,那么由于该页已经被提前关掉,这样就省掉了关页的时间。
在如图8所示的实施例中,时序控制器800包括:内存操作译码逻辑801、内存操作命令队列802以及操作命令发送控制逻辑803。
其中,内存操作译码逻辑801用于根据内存设备的状态将访存命令调度器调度后的访存命令译码为内存操作命令;内存操作命令队列802用于存储内存操作命令;操作命令发送控制逻辑803用于控制内存操作命令队列803中内存操作命令的发送顺序和发送时机。
具体地,内存操作译码逻辑801根据内存设备所处的状态来决定是否产生PRE、ACT等额外命令,以形成访问内存设备的内存操作命令,这里,内存操作命令包括但不限于PRE、ACT、RW命令。例如,当内存操作译码逻辑801从访存命令调度器接收到对片选地址为0、bank地址为0、行地址为0的读命令时,其会首先检查当前目标bank的状态,如果该bank处于IDLE(空闲)态,则会发送一个(ACT/RD)命令(先发送ACT命令,再发送RD命令)给内存操作命令队列802,这时,ACT/RD命令为内存操作命令。如果接下来内存操作译码逻辑801从访存命令调度器接收到针对片选地址为0、bank地址为0、行地址为1的写命令,因为此时该bank已经处于ACTIVE(激活)态,且打开的行地址不是1,发生了行冲突,则内存操作译码逻辑801需发送一个(PRE/ACT/WR)命令(先发送PRE命令,再发送ACT命令,然后发送WR命令)给内存操作命令队列802,这时,PRE/ACT/WR命令为内存操作命令。
内存操作命令队列802用于存储内存操作译码逻辑801发送过来的内存操作命令。具体地,内存操作命令队列802可以包括1个内存操作命令,也可以包括多个内存操作命令。在一实施例中,内存操作命令队列802中包括多个内存操作命令,来对它们进行时序调度和时序控制。
可选地,如图9所示,操作命令发送控制逻辑803包括状态机模块8031、时序控制模块8032以及计数器8033。
其中,状态机模块8031用于获取内存装置当前所处的状态,以获知允许的操作。内存装置中可包括有多组内存芯片,一组内存芯片可包括多个bank,每个bank均有各自的bank状态,属于同一组的内存芯片又具有共享的CS状态。状态机模块8031包括用于获取CS状态的CS状态机和用于获取bank状态的bank状态机。在一实施例中,当对某个内存芯片发送读写命令后,其他内存芯片只有等待一定时钟周期后才能发送读写命令,由CS状态机来获取内存芯片的CS状态,以防止数据冲突。可选地,每个bank都由独立的bank状态机控制,以获知每个bank的状态。
请参阅如图10所示的bank状态机,其具有2个状态:IDLE、ACTIVE。状态转化和可发送的操作见图中箭头所示,可以看出,当bank处于IDLE态时,只能发送ACT命令,然后转入ACTIVE态。在ACTIVE态,可以发送PRE命令和读写命令,发送PRE命令后进入IDLE态,发送RW命令后还回到ACTIVE态。
计数器8032用于控制内存操作命令的发送时机。例如,JEDEC规范规定,当ACT命令发送后,需要经过tRCD个时钟周期后,bank才处于Active状态,此时才可以发送读写命令或PRE命令(Precharge命令还需要满足tRAS_min(行打开的最小保持时间)的条件)。因此,当ACT命令发送后,除了bank状态机的状态转变为Active态外,还需要将对应的计数器的值置为tRCD,如果计数器的值不等于0,则在每个时钟周期减1。当bank状态机处于Active态且对应的计数器的值为0时,才可以发送RW命令或者PRE命令(PRE命令还需要考虑其他时序限制,如tRAS_min),否则如果bank处于ACTIVE态但对应的计数器的值不等于0,则不可以发送任何命令。
时序控制模块8033用于根据从状态机模块8031获取的内存装置所处的状态以及计数器8032当前的值来确定内存操作命令是否可发送,以及当多个内存操作命令可发送时,确定其发送顺序。例如,当一个针对内存设备的PRE命令不违反任何时序限制且不与前面的bank访问存在冲突的时候,时序控制模块8033就可将其立即发送出去,而不必严格按照它所附属的访存命令的先后顺序。时序控制模块并不改变访存读写命令的发送顺序,只改变PRE、ACT等额外命令的发送顺序。可选地,当内存操作命令队列802中存在多个可以发送的内存操作命令时,时序控制单元8033按照命令的先后顺序进行发送。
可选地,时序控制器800还包括读数据控制模块804和写数据控制模块805,其中,读数据控制模块804用于控制从内存设备中读出的数据的发送时机;写数据控制模块805用于控制写数据的发送时机,例如,操作命令发送控制逻辑803选择一个WR命令发出去后,写数据控制模块805可控制经过固定的时间周期将写数据发送给内存设备。
请查阅图11所示,其为本发明一实施例提供的内存控制方法的流程图。该内存控制方法包括:
步骤S111:调度访存装置对内存设备的访存命令;
其中,访存命令(例如,读写命令),可能来自计算机系统中的多个访存装置,例如多个处理器核或显卡等。具体地,访存命令中包括有操作码和与访存命令相关联的访存地址。针对访存命令的调度包括针对访存命令的顺序调度。
例如,将来自特定源端口的访存命令优先发送、行命中访存命令优先发送、同一类访存命令聚集发送或bank分组调度发送等。
本领域技术人员可以理解,上述针对访存命令的调度仅为示例,而非局限。可根据需要针对访存命令进行多种调度。
步骤S112:根据内存设备的状态将调度后的访存命令译码为内存操作命令;
具体地,可根据当前内存设备所处的状态,来决定是否需要产生额外的PRE、ACT等命令,以形成访问内存设备的内存操作命令。这里,内存操作命令包括但不限于PRE、ACT、RW命令。例如,当接收到对片选地址为0、bank地址为0、行地址为0的读命令时,其会首先检查当前目标bank的状态,如果该bank处于IDLE(空闲)态,则会发送一个(ACT/RD)命令(先发送ACT命令,再发送RD命令)给内存操作命令队列802,这时,ACT/RD命令为内存操作命令。如果接下来接收到针对片选地址为0、bank地址为0、行地址为1的写命令,因为此时该bank已经处于ACTIVE(激活)态,且打开的行地址不是1,发生了行冲突,则需发送一个(PRE/ACT/WR)命令(先发送PRE命令,再发送ACT命令,然后发送WR命令),这时,PRE/ACT/WR命令为内存操作命令。
步骤S113:控制内存操作命令向内存设备的发送顺序和发送时机。
例如,当一个针对内存设备的PRE或ACT命令不违反任何时序限制且不与前面的bank访问存在冲突的时候,就可将其立即发送出去,而不必严格按照它们所属的访存命令的先后顺序,这并不改变访存命令的发送顺序,只改变PRE、ACT等额外命令的发送顺序。从而,提高了内存设备的命令发送效率,节省了针对内存设备的操作发送时间。
此外,当内存设备为DRAM时,DRAM的规范(比如JEDEC规范)会对不同命令的发送顺序及命令之间的时间间隔做出限制。比如tRRD(Active to active command period,激活到激活操作的时间间隔),规定了连续两个ACT命令之间的最小间隔时间,tRCD(RAS to CAS command delay,活到读写操作的时间间隔),规定了对同一bank的ACT命令和读写命令之间的最小时间间隔,tRTP(Read to Precharge command delay,读操作到预充电的时间间隔),规定了对同一bank的读命令和PRE命令之间的最小时间间隔。tFAW则规定了连续打开(Active)4个bank的最小时间窗口。还有一些限制规定的是最大时间间隔。比如tREFi(Average periodic refresh interval,平均刷新操作的时间间隔),规定了刷新命令必须发送的平均最大时间间隔,等等。这样,也可考虑需遵守的规范来控制内存操作命令的发送时机,进行时序控制。
由上述实施例的描述可以看出:本发明实施例这种将访存命令调度与时序控制和调度分离的内存控制方法,更便于进行分工合作,提高了访存效率。
如图12所示,在一实施例中,步骤S111可包括:
步骤S1111:将访存命令中的访存地址译码成适于内存设备识别的地址信息,作为译码后的访存命令,以供后续根据译码后的地址信息进行调度。在一实施例中,经译码后的地址信息可包括:bank地址、行地址和列地址;若内存设备中不止包含一组内存芯片,则译码后的地址信息还可包括片选(Chip Select)地址,用以选定将访问的一组内存芯片。
步骤S1112:根据预先设置的策略确定译码后的访存命令的发送顺序,并按照发送顺序将译码后的访存命令依次发送给时序控制器,其中,预先设置的策略包括但不限于上述实施例中提及的来自特定源端口的访存命令优先发送、行命中访存命令优先发送以及同一类访存命令聚集发送。
就行命中访存命令优先发送策略而言,在一实施例中,具体地,由于经译码后的地址信息可包括bank地址、行地址、列地址和/或片选地址,那么可选择与前一访存命令的片选地址、bank地址和行地址相同的访存命令作为下一条发送的访存命令。
在一实施例中,设置多个bank队列,用以分别存储具有相同bank地址的访存命令,并可采用bank分组调度发送策略:优先选择不在同一个bank队列中的访存命令发送,以提高并发度。
而且,预先设置的各策略间的优先级高低也不同,例如,当某一访存命令既满足行命中访存命令优先发送策略又满足bank分组调度发送策略时,更优先采用行命中访存命令优先发送策略,即行命中访存命令优先发送策略的优先级高于bank分组调度发送策略的优先级。
可以看出,在步骤S111中并不涉及访存命令队列中的访存命令是何时如何发送给内存设备的以及是否需要及何时发送PRE、ACT等额外命令,其只关心访存命令发送的先后顺序。
在如图12所示的实施例中,步骤S113控制内存操作命令向内存设备的发送顺序和发送时机包括:
步骤S1131:获取内存装置当前所处的状态,以获知允许的操作;
在一个实施例中,可通过状态机来获取内存装置当前所处的状态。可选地,每个bank都由独立的bank状态机控制,以获知每个bank的状态。
步骤S1132:控制所述内存操作命令的发送时机;
例如,JEDEC规范规定,当ACT命令发送后,需要经过tRCD个时钟周期后,bank才处于Active状态,此时才可以发送读写命令或PRE命令(Precharge命令还需要满足tRAS_min(行打开的最小保持时间)的条件)。这样,就需要对内存操作命令的发送时机做出控制。
可选地,由计数器来控制内存操作命令的发送时机。
步骤S1133:根据获知的所述内存装置所处的状态以及内存操作命令的发送时机来确定可发送的内存操作命令,以及当多个内存操作命令可发送时,确定所述多个内存操作命令的发送顺序。
例如,当一个针对内存设备的PRE命令不违反任何时序限制且不与前面的bank访问存在冲突的时候,就可将其立即发送出去,而不必严格按照它所附属的访存命令的先后顺序。这并不改变访存读写命令的发送顺序,只改变PRE、ACT等额外命令的发送顺序。可选地,当存在多个可以发送的内存操作命令时,可按照命令的先后顺序进行发送。
最后应当说明的是,很显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,如果本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型。
Claims (12)
1.一种内存控制装置,其特征在于,包括:访存命令调度器和时序控制器,其中,
所述访存命令调度器,用于接收访存装置对内存设备的访存命令,并对所述访存命令进行调度,然后将调度后的访存命令发送给所述时序控制器;
所述时序控制器,用于根据所述内存设备的状态将所述调度后的访存命令译码为内存操作命令,并控制所述内存操作命令向所述内存设备的发送顺序和发送时机。
2.根据权利要求1所述的内存控制装置,其特征在于,所述访存命令调度器与所述时序控制器经由时序控制接口连接,所述时序控制接口包括:
访存命令总线,用于传递所述调度后的访存命令;
读数据总线,用于传递从所述内存设备中读出的数据;以及
写数据总线,用于传递待写入所述内存设备的数据。
3.根据权利要求1所述的内存控制装置,其特征在于,所述访存命令调度器包括:
访存命令地址预译码逻辑,用于将所述访存命令的访存地址译码成适于所述内存设备识别的地址信息,以形成译码后的访存命令;
访存命令队列,用于存储所述译码后的访存命令;
访存命令选择逻辑,根据预定策略确定所述访存命令队列中译码后的访存命令的发送顺序,并按照所述发送顺序将所述译码后的访存命令发送给所述时序控制器。
4.根据权利要求3所述的内存控制装置,其特征在于,所述预定策略包括:特定源端口访存命令优先发送、行命中访存命令优先发送、同一类访存命令聚集发送以及bank分组调度发送。
5.根据权利要求3所述的内存控制装置,其特征在于,所述访存命令调度器还包括:
数据暂存模块,用于存储待写入所述内存设备的数据和从所述内存设备中读出但尚未返回给所述访存装置的数据。
6.根据权利要求1所述的内存控制装置,其特征在于,所述时序控制器包括:
内存操作译码逻辑,用于根据所述内存设备的状态将所述访存命令调度器调度后的访存命令译码为内存操作命令;
内存操作命令队列,用于存储所述内存操作命令;以及
操作命令发送控制逻辑,用于控制所述内存操作命令队列中的内存操作命令的发送顺序和发送时机。
7.根据权利要求6所述的内存控制装置,其特征在于,所述操作命令发送控制逻辑包括:
状态机模块,用于获取所述内存装置当前所处的状态,以获知允许的操作;
计数器,用于控制所述内存操作命令的发送时机;
时序控制模块,用于根据从所述状态机模块获知的所述内存装置所处的状态以及所述计数器的值来确定可发送的内存操作命令,以及当多个内存操作命令可发送时,确定所述多个内存操作命令的发送顺序。
8.根据权利要求6所述的内存控制装置,其特征在于,所述时序控制器还包括:
读数据控制模块,用于控制从所述内存设备中读出的数据的发送时机;以及
写数据控制模块,用于控制待写入所述内存设备的数据的发送时机。
9.一种内存控制方法,其特征在于,包括:
调度访存装置对内存设备的访存命令;
根据所述内存设备的状态将调度后的访存命令译码为内存操作命令;以及
控制所述内存操作命令向所述内存设备的发送顺序和发送时机。
10.根据权利要求9所述的内存控制方法,其特征在于,所述调度访存装置对内存设备的访存命令包括:
将所述访存命令的访存地址译码成适于所述内存设备识别的地址信息,以形成译码后的访存命令;
根据预定策略确定所述访存命令的发送顺序。
11.根据权利要求10所述的内存访问控制方法,其特征在于,所述预定策略包括特定源端口访存命令优先发送、行命中访存命令优先发送、同一类访存命令聚集发送以及bank分组调度发送。
12.根据权利要求9所述的内存访问控制方法,其特征在于,所述控制所述内存操作命令的发送顺序和发送时机包括:
获取所述内存装置当前所处的状态,以获知允许的操作;
控制所述内存操作命令的发送时机;
根据获知的所述内存装置所处的状态以及内存操作命令的发送时机来确定可发送的内存操作命令,以及当多个内存操作命令可发送时,确定所述多个内存操作命令的发送顺序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410054491.8A CN103810123B (zh) | 2014-02-18 | 2014-02-18 | 内存控制装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410054491.8A CN103810123B (zh) | 2014-02-18 | 2014-02-18 | 内存控制装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103810123A true CN103810123A (zh) | 2014-05-21 |
CN103810123B CN103810123B (zh) | 2017-12-29 |
Family
ID=50706917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410054491.8A Active CN103810123B (zh) | 2014-02-18 | 2014-02-18 | 内存控制装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103810123B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106919520A (zh) * | 2015-12-28 | 2017-07-04 | 龙芯中科技术有限公司 | 访存命令调度方法、装置和系统 |
CN107506152A (zh) * | 2017-09-12 | 2017-12-22 | 上海交通大学 | 一种提高pm访存请求并行度的解析装置与方法 |
CN107818192A (zh) * | 2016-09-10 | 2018-03-20 | 财团法人工业技术研究院 | 存储器事务层级模型模拟方法及系统 |
WO2022012143A1 (zh) * | 2020-07-17 | 2022-01-20 | 华为技术有限公司 | 内存管理技术及计算机系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1437660A2 (en) * | 2002-12-27 | 2004-07-14 | Nec Corporation | Semiconductor memory device and mount-type semiconductor device |
CN103198856A (zh) * | 2013-03-22 | 2013-07-10 | 烽火通信科技股份有限公司 | 一种ddr控制器及请求调度方法 |
-
2014
- 2014-02-18 CN CN201410054491.8A patent/CN103810123B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1437660A2 (en) * | 2002-12-27 | 2004-07-14 | Nec Corporation | Semiconductor memory device and mount-type semiconductor device |
CN103198856A (zh) * | 2013-03-22 | 2013-07-10 | 烽火通信科技股份有限公司 | 一种ddr控制器及请求调度方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106919520A (zh) * | 2015-12-28 | 2017-07-04 | 龙芯中科技术有限公司 | 访存命令调度方法、装置和系统 |
CN106919520B (zh) * | 2015-12-28 | 2019-11-05 | 龙芯中科技术有限公司 | 访存命令调度方法、装置和系统 |
CN107818192A (zh) * | 2016-09-10 | 2018-03-20 | 财团法人工业技术研究院 | 存储器事务层级模型模拟方法及系统 |
CN107506152A (zh) * | 2017-09-12 | 2017-12-22 | 上海交通大学 | 一种提高pm访存请求并行度的解析装置与方法 |
CN107506152B (zh) * | 2017-09-12 | 2020-05-08 | 上海交通大学 | 一种提高pm访存请求并行度的解析装置与方法 |
WO2022012143A1 (zh) * | 2020-07-17 | 2022-01-20 | 华为技术有限公司 | 内存管理技术及计算机系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103810123B (zh) | 2017-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7127574B2 (en) | Method and apparatus for out of order memory scheduling | |
US7870351B2 (en) | System, apparatus, and method for modifying the order of memory accesses | |
EP1540485B1 (en) | Out of order dram sequencer | |
KR102519019B1 (ko) | 액세스 효율에 기초한 메모리 요청의 순서화 | |
US9411757B2 (en) | Memory interface | |
US9489321B2 (en) | Scheduling memory accesses using an efficient row burst value | |
US7886117B2 (en) | Method of memory management | |
US7093059B2 (en) | Read-write switching method for a memory controller | |
US8341344B2 (en) | Techniques for accessing a resource in a processor system | |
US7461216B2 (en) | Memory controller | |
CN1707694B (zh) | 用于多线程流水线总线系统的存储控制器 | |
CN103810123A (zh) | 内存控制装置及方法 | |
CN101702326A (zh) | 内存控制器 | |
US20240069811A1 (en) | Efficient rank switching in multi-rank memory controller | |
CN115357377A (zh) | 内存控制调度方法、装置、计算机设备及存储介质 | |
US9620215B2 (en) | Efficiently accessing shared memory by scheduling multiple access requests transferable in bank interleave mode and continuous mode | |
US8484411B1 (en) | System and method for improving access efficiency to a dynamic random access memory | |
CN101625887B (zh) | 访存请求调度装置以及用该装置进行访存请求调度的方法 | |
CN112965816B (zh) | 内存管理技术及计算机系统 | |
GB2426841A (en) | Providing a plurality of copies of program data in memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |