CN102411982A - 内存控制器及命令控制方法 - Google Patents

内存控制器及命令控制方法 Download PDF

Info

Publication number
CN102411982A
CN102411982A CN2010102915558A CN201010291555A CN102411982A CN 102411982 A CN102411982 A CN 102411982A CN 2010102915558 A CN2010102915558 A CN 2010102915558A CN 201010291555 A CN201010291555 A CN 201010291555A CN 102411982 A CN102411982 A CN 102411982A
Authority
CN
China
Prior art keywords
order
rate
dram
visit
bank
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
Application number
CN2010102915558A
Other languages
English (en)
Other versions
CN102411982B (zh
Inventor
任凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN201010291555.8A priority Critical patent/CN102411982B/zh
Priority to US13/242,554 priority patent/US20120079180A1/en
Publication of CN102411982A publication Critical patent/CN102411982A/zh
Application granted granted Critical
Publication of CN102411982B publication Critical patent/CN102411982B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dram (AREA)

Abstract

本发明公开了一种内存控制器及命令控制方法。本发明在需要访问外部DRAM中未激活的BANK时,针对该BANK并行产生较低速率的一ACT命令和一访问命令,并将较低速率的并行ACT命令和访问命令,以较高速率顺序串行输出至外部DRAM的总线,从而,不但能够确保BANK交错访问时的较高性能,还能够同时避免内存控制器的内部工作频率过高而导致难以实现、以及电源和散热问题。

Description

内存控制器及命令控制方法
技术领域
本发明涉及内存控制器(Memory Controller)技术,特别涉及主要适用于第2代双倍数据速率(Double Data Rate2,DDR2)同步动态随机接入存储器(Synchronous Dynamic Random Access Memory,SDRAM)和第3代双倍数据速率(Double Data Rate 3,DDR3)SDRAM的一种内存控制器、以及可用于实现该内存控制器的一种命令控制方法。
背景技术
在当今的计算机系统中,如图1所示,CPU和I/O器件需要通过内存控制器来访问外部内存系统中的数据,其中,内存控制器连接的外部内存系统由DRAM器件实现,目前应用最为广泛的是DDR2 SDRAM和DDR3SDRAM,由此,外部内存系统也可称之为外部DRAM系统。
内存控制器主要负责从内存系统中的DRAM器件(例如DDR2 SDRAM或DDR3 SDRAM等)读取数据,以及向内存系统中的DRAM器件写入数据,在读取和写入数据的过程中,内存控制器需要确保访问DRAM器件的协议正确,同时需要满足DRAM器件的接口电气特性和时序特性,有时还需要具有错误检测和纠正的功能。
内存控制器决定了计算机系统的内存性能,从而也对计算机系统的整体性能产生较大影响,因此,绝大多数内存控制器都是以高性能作为设计目标。
由于现今的计算机系统的CPU基本上都采用多线程、多核技术,各个线程和各个CPU核会独立的实现某一个特定的应用(例如线程0在从硬盘向外部DRAM器件搬移数据,而线程1从外部DRAM系统读取数据),因此会频繁出现多个线程(或多个CPU核)同时通过内存控制器访问同一个外部DRAM器件,也就是说,对外部DRAM器件的访问是各个线程和CPU核交错进行的。进而由于各线程(或CPU核)实现的功能完全不同,因而各线程(或CPU核)对外部DRAM器件的访问命令也就不会是连续地址的访问,基于这种情况,以高性能作为设计目标的内存控制器就需要针对随机地址访问进行优化。
通过内存控制器对外部DRAM器件的随机访问,大致可以分为如下的两种情况:
第一种情况,连续的多个访问都发生在DRAM器件相同存储体(Bank)的不同行(Row)。如图2a所示,以DDR2 SDRAM为例,当连续访问Bank0中各Row时,先通过激活(ACT)命令打开需要读访问的Bank0中的对应Row、然后再发送读(RD)命令,当Bank0中对应Row的数据D0~D3读取完成后,通过预充电(Precharge)命令关闭该Row,以便于再次发送ACT命令打开Bank0中的下一个Row、并再次发送RD命令。在图2a中,两个RD命令之间有12个时钟周期的间隔,而每个RD命令所对应的数据传输仅占用2个时钟周期,从而导致上述读访问时的DRAM总线效率仅有16.7%(2/12=16.7%)。
第二种情况,连续的多个访问都发生DRAM器件不同Bank的不同Row,由于DRAM器件的各个Bank是由独立的对应电路进行控制的,因此连续访问不同Bank时不会受到DRAM器件的固有时序参数的影响。如图2b所示,以DDR2 SDRAM为例,当连续访问Bank0、Bank1、Bank2、Bank3、Bank4、Bank5、Bank6中不同Row时,在时钟周期0、2、4、6、8、10、12依次为各Bank产生ACT命令,时钟周期1、3、5、7、9、11、13则依次为相应Bank产生的读自动预充电(Read with AutoPrecharge,RD+AP)命令,经过读延时周期后,时钟周期6、7出现Bank0读数据D0a~D0d,时钟周期8、9出现Bank1读数据D1a~D1d,时钟周期10、11出现Bank2读数据D2a~D2d),依此类推。各Bank的读数据首尾连接,使时钟周期6开始后的DRAM总线没有空闲周期,此时DRAM总线效率为100%。
如上可见,第二种情况的DRAM总线效率明显高于第一种情况,因此,为了确保DRAM总线的高效率,如图3所示,当今的计算机系统通常会在CPU/IO设备与内存控制器增设一命令调度器,由命令调度器中的仲裁器将调度各个CPU线程(或各个CPU核)、以及IO设备针对不同Bank的命令分别缓存至对应的队列中,再由内存控制器轮询读取各Bank所对应队列中的命令,从而避免上述的第一种情况、并满足上述的第二种情况。
然而,即便通过命令调度器能够满足上述第二种情况的BANK交错访问方式,但由于内存控制器与外部DRAM器件分别具有各自的工作频率,因而现有技术中还进一步存在由工作频率所导致的其他问题。
如图4所示,以DDR2 SDRAM为例,内存控制器的内部工作频率为133MHz,外部DDR2 SDRAM的总线频率为266MHz,故图4中的内存控制器可称之为半速率内存控制器(本文中全文出现的“半速率”、“单速率”、“双速率”等均是以外部DRAM总线速率为参照)。该半速率内存控制器主要包括运行在133MHz的控制(Ctrl)模块、写数据路径(Write data path)模块、读数据路径(Read data path)模块,该半速率内存控制器还包括可与用户逻辑(User Logic)交互的用户接口(User Interface)模块,以及,连接DDR2SDRAM的外部总线、并实现内部工作频率与外部总线频率转换的DRAM IO接口(DRAM IO Interface)模块,其中:
Ctrl模块主要用于实现所有DRAM接口协议、DRAM接口时序参数的匹配、以及产生各类命令(Command,CMD);具体说,Ctrl模块可依据用户逻辑的指令,按照如图5所示的状态机进行状态迁移,并在迁移至相应的状态时产生相应的CMD,本文仅在下文对图5所示状态机中相关的状态进行说明、而对于其他与本文无关的状态则不再赘述;
Write data path模块主要用于缓存用户逻辑的写数据、并将写数据以半速率写入到DRAM IO接口模块;Read data path模块主要用于缓存DRAM IO接口模块从外部DRAM器件读出的半速率读数据发送给User Interface模块;
DRAM IO接口模块中具有一半速率与单速率转换(HDR to SDR)子模块,其主要用于将Ctrl模块产生的半速率命令转换为单速率命令、并输出至外部DDR2 SDRAM总线;
DRAM IO接口模块中还具有另一HDR to SDR子模块和一单速率与双倍数据速率转换(SDR to DDR)子模块,该另一HDR to SDR子模块用于将Write data path模块的半速率写数据转换为单速率写数据后传递至SDR toDDR子模块、将来自SDR to DDR子模块的单速率读数据转换为半速率读数据后提供给Read data path模块,SDR to DDR子模块用于将单速率写数据转换为双速率后输出至外部DDR2 SDRAM总线、将外部DDR2 SDRAM总线的双速率读数据转换为单速率读数据后传递至该另一HDR to SDR子模块。
参见图6并结合图4和图5,当交错读访问Bank0、Bank1、Bank2、Bank3时,Ctrl模块在周期0~周期7的状态机状态,依次针对Bank0、Bank1、Bank2、Bank3进行如下状态循环迁移:空闲状态(IDLE)→状态激活状态(ACTIVE)→Bank激活状态(BANK ACTIVE)→读自动预充电状态(Readwith AutoPrecharge,RDA)→预充电状态(PRE)→IDLE。从而,Ctrl模块即可交替产生针对不同Bank的ACT命令和RD+AP命令,相应地,在DDR2SDRAM的命令总线也交替输出针对不同Bank的ACT命令和RD+AP命令。
由于半速率内存控制器中Ctrl模块的工作频率为外部DDR2 SDRAM总线频率的一半,因而Ctrl模块交替产生的半速率ACT命令和半速率RD+AP命令被转换为DDR2 SDRAM的命令总线上交替的单速率ACT命令和单速率RD+AP命令,从而在外部DDR2 SDRAM命令总线上每两个相邻的单速率ACT命令和单速率RD+AP命令之间均间隔1个周期,进而使外部DDR2SDRAM数据总线上针对每两个Bank的读数据之间间隔4个周期,导致外部DDR2 SDRAM的总线效率仅为50%、而无法达到如图2b中所示的100%。
同理,当连续写访问Bank0、Bank1、Bank2、Bank3中不同Row时,Ctrl模块针对每一Bank的写访问的状态迁移可以为IDLE→ACTIVE→BANKACTIV E→写自动预充电状态(Write with AutoPrecharge,WRA)→PRE→IDLE,并交替产生半速率ACT命令和半速率写自动预充电(Write withAutoPrecharge,WR+AP)命令,总线效率也同样无法达到如图2b中所示的100%。
为了解决半速率内存控制器存在的总线效率低的问题,现有技术中还提出了一种单速率内存控制器。
如图7所示,以DDR2 SDRAM为例,内存控制器的内部工作频率、以及外部DDR2 SDRAM的总线频率均为266MHz,故图7中的内存控制器可称之为单速率内存控制器。该单速率内存控制器仍包括与半速率内存控制器具有相同原理的Ctrl模块(基于如图5所示的状态机)、Write data path模块、Read data path模块、以及用户逻辑,但全速内存控制器的DRAM IO接口模块略有改进,具体说:
DRAM IO接口模块中仅具有一SDR to DDR子模块,其用于将Writedata path模块的单速率写数据转换后输出至外部DDR2 SDRAM总线、将外部DDR2SDRAM总线的读数据转换为单速率读数据后直接传递至Readdata path模块;此外,Ctrl模块产生的单速率命令可直接输出至外部DDR2SDRAM总线。
参见图8并结合图7,当交错读访问Bank0、Bank1、Bank2、Bank3时,Ctrl模块从周期0~周期7交替产生针对不同Bank的ACT命令和RD+AP命令,相应地,在DDR2SDRAM的命令总线也交替输出针对不同Bank的ACT命令和RD+AP命令。
由于单速率内存控制器中Ctrl模块的工作频率与外部DDR2 SDRAM总线频率相同,从而在外部DDR2 SDRAM命令总线上每两个相邻的单速率ACT命令和单速率RD+AP命令之间不存在间隔,进而使外部DDR2 SDRAM数据总线上针对每两个Bank的读数据之间间隔4个周期,确保外部DDR2SDRAM的总线效率能够达到如图2b中所示的100%。
虽然如图7所示的单速率内存控制器能够以100%的总线效率实现高性能的Bank交错访问,但是,单速率内存控制器中Ctrl模块的工作频率必须与外部DDR2 SDRAM总线工作频率相同,当外部DDR2SDRAM总线工作在较高频率时,Ctrl模块也必须工作在较高频率,而由于Ctrl模块的逻辑功能非常复杂,当其工作在高频率时很难满足逻辑寄存器间的建立时间和保持时间。例如,如果利用目前最高端的Xilinx或Altera的FPGA器件实现Ctrl模块,其IO接口可以满足1GMHz以上的频率、但其内部逻辑一般只能运行在300MHz以下,这显然无法满足目前流行的333MHz DDR2 SDRAM和400MHz DDR2 SDRAM的运行要求。此外,当功能复杂的Ctrl模块工作在很高的频率时,会使整个内存控制器的功耗很大,从而带来电源和散热问题。
可见,现有技术中无法以较低频率确保DDR2 SDRAM的BANK交错访问性能。同样地,对于DDR3 SDRAM的内存控制器来说也存在相同的问题。
发明内容
有鉴于此,本发明提供了一种内存控制器、以及一种命令控制方法,使内存控制器能够以较低的内部工作频率确保BANK交错访问时的性能。
本发明提供的一种内存控制器,包括:
控制模块,其在需要访问外部DRAM中未激活的BANK时,针对该BANK并行产生第一速率的一ACT命令和一访问命令;
DRAM IO接口模块,其将第一速率的并行ACT命令和访问命令,以第二速率顺序串行输出至外部DRAM的总线;其中,对应控制模块工作频率的所述第一速率低于对应外部DRAM总线频率的第二速率;
写数据路径模块,其将待写入外部DRAM的写数据以第一速率写入至DRAM IO接口模块、由DRAM IO接口模块转换为双倍的第二速率后输出至外部DRAM总线;
读数据路径模块,其从DRAM IO接口模块接收第一速率的读数据,该第一速率的读数据是由DRAM IO接口模块读取自外部DRAM总线的双倍的第二速率读数据转换得到的。
优选地,控制模块进一步在需要访问外部DRAM中已激活的BANK时,针对该BANK产生第一速率的一访问命令;DRAM IO接口模块进一步将第一速率的一访问命令,以第二速率输出至外部DRAM的总线。
优选地,所述访问为读访问时,所述访问命令为读RD命令、或读自动预充电RD+AP命令;所述访问为写访问时,所述访问命令为写WR命令、或写自动预充电WR+AP命令。
优选地,所述外部DRAM为DDR2 SDRAM,所述第一速率为所述第二速率的一半。或者,所述外部DRAM为DDR3 SDRAM,所述第一速率为所述第二速率的四分之一,以第二速率顺序串行输出的ACT命令和访问命令之间、以及访问命令之后,分别插入有一个空命令。
本发明提供的一种命令控制方法,包括:
在需要访问外部DRAM中未激活的BANK时,针对该BANK并行产生第一速率的一ACT命令和一访问命令;
将第一速率的并行ACT命令和访问命令,以第二速率顺序串行输出至外部DRAM的总线;
其中,对应控制模块工作频率的所述第一速率低于对应外部DRAM总线频率的第二速率。
优选地,该方法进一步在需要访问外部DRAM中已激活的BANK时,针对该BANK产生第一速率的一访问命令,并进一步将第一速率的一访问命令以第二速率输出至外部DRAM的总线。
优选地,所述访问为读访问时,所述访问命令为读RD命令、或读自动预充电RD+AP命令;所述访问为写访问时,所述访问命令为写WR命令、或写自动预充电WR+AP命令。
优选地,所述外部DRAM为DDR2 SDRAM,所述第一速率为所述第二速率的一半。或者,所述外部DRAM为DDR3 SDRAM,所述第一速率为所述第二速率的四分之一,以第二速率顺序串行输出的ACT命令和访问命令之间、以及访问命令之后分别插入有一个空命令。
由上述技术方案可见,本发明在需要访问外部DRAM中未激活的BANK时,针对该BANK并行产生较低速率的一ACT命令和一访问命令,并将较低速率的并行ACT命令和访问命令,以较高速率顺序串行输出至外部DRAM的总线,从而,不但能够确保BANK交错访问时的较高性能,还能够同时避免内存控制器的内部工作频率过高而导致难以实现、以及电源和散热问题。
附图说明
图1为现有技术中包含内存控制器的计算机系统示意图;
图2a为现有技术中连续访问相同Bank不同Row的读命令在DRAM总线上的时序图;
图2b为现有技术中连续访问不同Bank不同Row的读命令在DRAM总线上的时序图;
图3为现有技术中的计算机系统进行命令调度的示意图;
图4为现有技术中的一种半速率内存控制器的结构示意图;
图5为如图4所示半速率内存控制器的状态机示意图;
图6为如图4所示半速率内存控制器的内部时序以及DRAM总线上相应时序的示意图;
图7为现有技术中的一种单速率内存控制器的结构示意图;
图8为如图7所示单速率内存控制器的内部时序以及DRAM总线上相应时序的示意图;
图9为本发明中内存控制器的状态机示意图;
图10为本发明实施例一中的内存控制器的结构示意图;
图11为本发明实施例一中的内存控制器的内部时序以及DRAM总线上相应时序的示意图;
图12为本发明实施例二中的内存控制器的结构示意图;
图13为本发明实施例二中的内存控制器的内部时序以及DRAM总线上相应时序的示意图;
图14为本发明中内存控制器的命令控制方法的示例性流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
本发明的各实施例中,首先使内存控制器的内部工作频率低于外部DRAM总线频率,从而避免内存控制器的内部工作频率过高而导致难以实现、以及电源和散热问题;其次,Ctrl模块可针对某一BANK并行产生低速率的ACT命令,以及,低速率的RD、RD+AP、WR、WR+AP中的任一种访问命令,并由DRAM IO接口模块将Ctrl模块产生的两条低速率并行命令转换为符合外部DRAM总线频率的两条串行的高速率命令,从而提高外部DRAM总线效率、以确保BANK交错访问时的性能。
具体说,为了使Ctrl模块能够针对任一BANK并行产生低速率的ACT命令、以及任一种访问命令,本发明的各实施例中改进了Ctrl模块的状态机。
具体参见图9,该状态机包括如下的状态(为了区别于现有状态机中的各状态,本发明中状态机的各状态之前辅以“s_”):
初始化状态(s_INIT),该状态的作用可与现有如图6所示状态机中的INIT相同;
空闲状态(s_IDLE),该状态的作用可与现有如图6所示状态机中的IDLE相同,该状态下的所有Bank均已完成预充电;
模式寄存器设置状态(s_SETTING_(E)MR),该状态的作用可与现有如图6所示状态机中的SETTING_(E)MR相同、主要用于配置各类模式寄存器;
自动更新状态(s_AUTO_REF),该状态的作用可与现有如图6所示状态机中的REF相同;
激活写状态(s_ACT_WR)和激活读状态(s_ACT_RD),这两种状态不同于现有如图6所示状态机中的任一状态,当用户逻辑针对未激活的某BANK发送ACT+WR/WRA的指令时,Ctrl模块可以此为转移条件从s_IDLE或s_ACT_RD转移至s_ACT_WR,并在s_ACT_WR时针对未激活的该BANK并行产生低速率的ACT命令、以及低速率的WR/WR+AP命令;当用户逻辑针对未激活的某BANK发送ACT+RD/RDA的指令时,Ctrl模块可以此为转移条件从s_IDLE或s_ACT_WR转移至s_ACT_RD,并在s_ACT_RD时针对未激活的该BANK并行产生低速率的ACT命令、以及低速率的RD/RD+AP命令;
写状态(s_WR)和读状态(s_RD),这两种状态的作用可以分别等效于如图6所示状态机中的WR与WRA的结合、RD与RDA的结合,但状态转移过程不同于如图6所示状态机,当某一BANK已在s_ACT_WR/s_ACT_RD下被激活时,用户逻辑可发送WR/WRA的指令、而无需再次发送ACT的指令,此时,Ctrl模块可以WR/WRA的指令为转移条件,从s_ACT_WR/s_ACT_RD/s_RD转移至s_WR,并在s_WR时针对该BANK产生低速率的WR/WR+AP命令、以便于继续对已被激活的BANK写访问;当某一BANK已在s_ACT_WR/s_ACT_RD下被激活时,用户逻辑还可发送RD/RDA的指令、而无需再次发送ACT的指令,此时,Ctrl模块可以RD/RDA的指令为转移条件,从s_ACT_WR/s_WR/s_ACT_RD转移至s_RD,并在s_RD时针对该BANK产生低速率的RD/RD+AP命令、以便于继续对已被激活的BANK读访问;
预充电状态(s_PRE),该状态的作用可与现有如图6所示状态机中的PRE相同、主要用于对已完成读/写访问的Bank进行预充电,Ctrl模块可在完成访问后从s_ACT_WR/s_WR/s_ACT_RD/s_RD转移至s_PRE,并在预充电结束后再转移回s_IDLE。
如上可见,如图9所示的状态机相比于如图6所示状态机最大的区别就在于增加了用于并行产生低速率命令的s_ACT_WR和s_ACT_RD;而且,如图9所示的状态机中的s_WR和s_RD、以及s_WR和s_RD的转移条件,也不同于现有的WR/WRA、RD/RDA,这主要是为了配合s_ACT_WR和s_ACT_RD实现激活后的访问。
此外,由于图6中示出的激活电源关闭状态(ACT Power Down)、自更新状态(SELF REF)、预充电电源关闭状态(PRE Power Down)等状态所对应的功能相对独立,且与本发明无太大关联,故在图9所示的状态机中予以省略。
下面,结合不同的DRAM器件进行详细说明。
实施例一
本实施例以DDR2 SDRAM为例。
如图10所示,本实施例中针对DDR2 SDRAM的内存控制器包括运行在133MHz这一内部工作频率的Ctrl模块、Write data path模块、Read datapath模块,该内存控制器还包括可与用户逻辑交互的用户接口模块,以及,连接DDR2 SDRAM的外部总线、并实现内部工作频率与外部总线频率转换的DRAM IO接口模块。
Ctrl模块主要用于实现所有DRAM接口协议、DRAM接口时序参数的匹配、以及产生各类CMD;Ctrl模块具有两路输出令CMD[0]和CMD[1],该Ctrl模块可依据用户逻辑的指令,按照如图9所示的状态机进行状态迁移,并在迁移至s_ACT_WR/s_ACT_RD时于CMD[0]和CMD[1]并行产生两个133MHz所对应的半速率的ACT命令和RD/RD+AP/WR/WR+AP。
具体说:
Ctrl模块可针对未激活的任意BANK,从s_IDLE/s_ACT_RD直接转移至s_ACT_WR,且在s_ACT_WR时同时输出ACT命令和WR/WR+AP命令,而无需再像现有如图6所示的状态机那样先经过BANK ACT状态产生ACT命令后才能够到达WR/WRA状态;
Ctrl模块可针对未激活的任意BANK,从s_IDLE/s_ACT_WR直接转移至s_ACT_RD,且在s_ACT_RD时同时输出ACT命令和WR/WR+AP命令,而无需再像现有如图6所示的状态机那样先经过BANK ACT状态产生ACT命令后才能够到达RD/RDA状态;
Ctrl模块可针对已激活的任意BANK,从s_ACT_RD/s_ACT_WR/s_RD直接转移至s_WR,且在s_WR时仅输出WR/WR+AP命令;
Ctrl模块可针对已激活的任意BANK,从s_ACT_RD/s_ACT_WR/s_WR直接转移至s_RD,且在s_RD时仅输出RD/RD+AP命令。
DRAM IO接口模块中具有一双路半速率与单速率转换(Dual HDR toSDR)子模块,其主要用于将Ctrl模块产生的两个半速率命令CMD[0]和CMD[1]转换成连续的两个串行单速率命令,具体说,Dual HDR to SDR子模块将Ctrl模块产生的半速率的并行ACT命令和WR/WR+AP/RD/RD+AP命令,以外部DDR2 SDRAM总线频率266MHz所对应的单速率,顺序串行输出至外部DDR2 SDRAM总线。
Write data path模块主要用于缓存用户逻辑待写入外部DRAM的写数据、并将待写入外部DRAM的写数据以半速率写入到DRAM IO接口模块;
Read data path模块主要用于从DRAM IO接口模块接收半速率的读数据并缓存、以待用户逻辑获取。
此外,DRAM IO接口模块中还具有一HDR to SDR子模块和一SDR toDDR子模块,其中:
HDR to SDR子模块用于将Write data path模块的半速率写数据转换为单速率写数据后传递至SDR to DDR子模块、将来自SDR to DDR子模块的单速率读数据转换为半速率读数据后提供给Read data path模块;
SDR to DDR子模块用于将单速率写数据转换为双速率后输出至外部DDR2 SDRAM总线、将外部DDR2 SDRAM总线的双速率读数据转换为单速率读数据后传递至该另一HDR to SDR子模块。
上述Write data path模块和Read data path模块、以及HDR to SDR子模块和SDR to DDR子模块的基本原理相比于现有技术未做改进,故此处不再详细说明。
参见图11并结合图10:
当交错读访问Bank0、Bank1、Bank2、Bank3时,Bank0、Bank1、Bank2、Bank3均属于未激活的BANK,Ctrl模块在其内部工作频率的周期0~周期3时,其内部状态机状态迁移顺序为s_ACT_RD→s_ACT_RD→s_ACT_RD→s_ACT_RD,在每个时钟周期分别在CMD[0]上发送ACT命令、CMD[1]上发送RD命令;
由于Ctrl模块输出的命令经过Dual HDR to SDR子模块后,CMD[0]上的ACT命令转换成外部DDR2 SDRAM总线前一个周期的命令、CMD[1]上的RD命令转换成外部DDR2 SDRAM总线后一个周期命令,因此,外部DDR2 SDRAM的命令总线上,在其外部总线频率的时钟周期0~时钟周期7连续输出ACT命令→RD命令→ACT命令→RD命令......
经过读延时周期后,外部DDR2 SDRAM的数据总线上,其外部总线频率的时钟周期6、7出现Bank0读数据D0a~D0d,周期8、9出现Bank1读数据D1a~D1d,如此类推,每两个Bank的读数据之间首尾连接、无空闲时钟周期,此时外部DDR2 SDRAM的总线效率为100%。
在实际实现本实施例时,需要配置DDR2 SDRAM的内存颗粒的附加延时(Posted CAS additive latency,AL)参数,使其等于激活至读写延时(act->read/write delay,tRCD,通常约为15纳秒)参数的最小值与1倍的外部DDR2 SDRAM总线的单位时钟周期tCK之差,具体可以表示为函数式AL=tRCD(MIN)-1×tCK,这样可以保证ACT命令后紧跟WR/WR+AP/RD/RD+AP命令。
实施例二
本实施例以DDR3 SDRAM为例。DDR3 SDRAM与DDR2 SDRAM的内部结构基本相同、接口协议也基本相同,因此本实施例中针对DDR3SDRAM的内存控制器与实施例一中针对DDR2 SDRAM内存控制器的实现方式基本相同。
如图12所示,本实施例中针对DDR3 SDRAM的内存控制器包括运行在167MHz这一内部工作频率的Ctrl模块、Write data path模块、Read datapath模块,该内存控制器还包括可与用户逻辑交互的用户接口模块,以及,连接DDR3 SDRAM的外部总线、并实现内部工作频率与外部总线频率转换的DRAM IO接口模块。
Ctrl模块主要用于实现所有DRAM接口协议、DRAM接口时序参数的匹配、以及产生各类CMD;Ctrl模块具有两路输出令CMD[0]和CMD[1],该Ctrl模块可依据用户逻辑的指令,按照如图9所示的状态机进行状态迁移,并在迁移至s_ACT_WR/s_ACT_RD时于CMD[0]和CMD[1]并行产生两个133MHz所对应的四分之一速率的ACT命令和RD/RD+AP/WR/WR+AP。
具体说:
Ctrl模块可针对未激活的任意BANK,从s_IDLE/s_ACT_RD直接转移至s_ACT_WR,且在s_ACT_WR时同时输出ACT命令和WR/WR+AP命令,而无需再像现有如图6所示的状态机那样先经过BANK ACT状态产生ACT命令后才能够到达WR/WRA状态;
Ctrl模块可针对未激活的任意BANK,从s_IDLE/s_ACT_WR直接转移至s_ACT_RD,且在s_ACT_RD时同时输出ACT命令和WR/WR+AP命令,而无需再像现有如图6所示的状态机那样先经过BANK ACT状态产生ACT命令后才能够到达RD/RDA状态;
Ctrl模块可针对已激活的任意BANK,从s_ACT_RD/s_ACT_WR/s_RD直接转移至s_WR,且在s_WR时仅输出WR/WR+AP命令;
Ctrl模块可针对已激活的任意BANK,从s_ACT_RD/s_ACT_WR/s_WR直接转移至s_RD,且在s_RD时仅输出RD/RD+AP命令。
DRAM IO接口模块中具有一双路四分之一速率与单速率转换(DualQDR to SDR)子模块,其主要用于将Ctrl模块产生的两个四分之一速率命令CMD[0]和CMD[1]转换成连续的“CMD[0]→NOP→CMD[1]→NOP”,即,两个串行单速率命令之间、以及后一个单速率命令之后分别插入有一个空命令;具体说,Dual QDR to SDR子模块将Ctrl模块产生的四分之一速率的并行ACT命令和WR/WR+AP/RD/RD+AP命令,以外部DDR3 SDRAM总线频率667MHz所对应的单速率,顺序串行输出至外部DDR3 SDRAM总线。
Write data path模块主要用于缓存用户逻辑待写入外部DRAM的写数据、并将待写入外部DRAM的写数据以四分之一速率写入到DRAM IO接口模块;
Read data path模块主要用于从DRAM IO接口模块接收四分之一速率的读数据并缓存、以待用户逻辑获取。
此外,DRAM IO接口模块中还具有一四分之一速率与单速率转换(QDRto SDR)子模块和一SDR to DDR子模块,其中:
QDR to SDR子模块用于将Write data path模块的四分之一速率写数据转换为单速率写数据后传递至SDR to DDR子模块、将来自SDR to DDR子模块的单速率读数据转换为四分之一速率读数据后提供给Read data path模块;
SDR to DDR子模块用于将单速率写数据转换为双速率后输出至外部DDR3 SDRAM总线、将外部DDR3 SDRAM总线的双速率读数据转换为单速率读数据后传递至该另一HDR to SDR子模块。
上述Write data path模块和Read data path模块、以及HDR to SDR子模块和SDR to DDR子模块的基本原理相比于现有技术未做改进,故此处不再详细说明。
参见图13并结合图12:
当交错读访问Bank0、Bank1、Bank2、Bank3时,Bank0、Bank1、Bank2、Bank3均属于未激活的BANK,Ctrl模块在其内部工作频率的周期0~周期3时,其内部状态机状态迁移顺序为s_ACT_RD→s_ACT_RD→s_ACT_RD→s_ACT_RD,在每个时钟周期分别在CMD[0]上发送ACT命令、CMD[1]上发送RD命令;
由于Ctrl模块输出的命令经过Dual QDR to SDR子模块后,CMD[0]上的ACT命令转换成外部DDR3 SDRAM总线前一个周期的命令、CMD[1]上的RD命令转换成外部DDR3 SDRAM总线后一个周期命令、且前一个周期的命令与后一个周期命令之间还间隔有一个空命令NOP,因此,外部DDR3SDRAM的命令总线上,在其外部总线频率的时钟周期0~时钟周期15,以一个时钟周期为间隔地连续输出ACT命令→RD命令→ACT命令→RD命令......
经过读延时周期后,外部DDR3SDRAM的数据总线上,其外部总线频率的时钟周期20~23出现Bank0读数据D0a~D0h,从周期24开始出现Bank1读数据D1a~D1h,如此类推,每两个Bank的读数据之间首尾连接、无空闲时钟周期,此时外部DDR3 SDRAM的总线效率为100%。
在实际实现本实施例时,需要配置DDR3 SDRAM的内存颗粒的AL参数,使其等于tRCD参数的最小值与2倍的外部DDR3 SDRAM总线的单位时钟周期tCK之差,具体可以表示为函数式AL=tRCD(MIN)-2×tCK,这样可以保证ACT命令后紧跟WR/WR+AP/RD/RD+AP命令。
本实施例中针对DDR3 SDRAM的内存控制器,Ctrl模块的工作频率为外部DDR3 SDRAM总线频率的四分之一,因而当DDR3 SDRAM外部总线频率运行在最高的800MHz时,Ctrl模块的工作频率可以只为200MHz,这使内存控制器非常易于实现。
基于上述两个实施例中的内存控制器的基本原理,本发明还提供了一种内存控制器的命令控制方法,如图14所示,该命令控制方法可以针对外部DRAM的任意BANK执行如下的步骤:
步骤1401,需要访问外部DRAM中的BANK尚未激活,针对该BANK并行产生低速率的ACT命令和访问命令,该低速命令对应内存控制器内部的工作频率;
当读访问时,本步骤中的访问命令为RD命令、或RD+AP命令;
当写访问时,本步骤中的访问命令为写WR命令、或WR+AP命令。
步骤1402,将低速率的并行ACT命令和访问命令,以高速率顺序串行输出至外部DRAM的总线,该高速率对应外部DRAM器件的总线频率。
如果外部DRAM为DDR2 SDRAM,则低速率为高速率的一半;
如果外部DRAM为DDR3 SDRAM,则低速率为高速率的四分之一,此时,本步骤中就需要在高速率顺序串行输出的ACT命令和访问命令之间、以及访问命令之后分别插入一个空命令。
步骤1403,需要访问外部DRAM中的BANK已被激活,针对该BANK产生低速率的一访问命令。
步骤1404,将低率的一访问命令以高速率输出至外部DRAM的总线。
至此,对一个BANK的处理过程结束。
在完成对一个BANK的上述处理过程之后,即可参照内存控制器的基本原理,对该BANK执行读/写数据的传输。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种内存控制器,其特征在于,包括:
控制模块,其在需要访问外部DRAM中未激活的BANK时,针对该BANK并行产生第一速率的一ACT命令和一访问命令;
DRAM IO接口模块,其将第一速率的并行ACT命令和访问命令,以第二速率顺序串行输出至外部DRAM的总线;其中,对应控制模块工作频率的所述第一速率低于对应外部DRAM总线频率的第二速率;
写数据路径模块,其将待写入外部DRAM的写数据以第一速率写入至DRAM IO接口模块、由DRAM IO接口模块转换为双倍的第二速率后输出至外部DRAM总线;
读数据路径模块,其从DRAM IO接口模块接收第一速率的读数据,该第一速率的读数据是由DRAM IO接口模块读取自外部DRAM总线的双倍的第二速率读数据转换得到的。
2.如权利要求1所述的内存控制器,其特征在于,控制模块进一步在需要访问外部DRAM中已激活的BANK时,针对该BANK产生第一速率的一访问命令;
DRAM IO接口模块进一步将第一速率的一访问命令,以第二速率输出至外部DRAM的总线。
3.如权利要求1或2所述的内存控制器,其特征在于,
所述访问为读访问时,所述访问命令为读RD命令、或读自动预充电RD+AP命令;
所述访问为写访问时,所述访问命令为写WR命令、或写自动预充电WR+AP命令。
4.如权利要求1或2所述的内存控制器,其特征在于,所述外部DRAM为DDR2 SDRAM,所述第一速率为所述第二速率的一半。
5.如权利要求1或2所述的内存控制器,其特征在于,所述外部DRAM为DDR3 SDRAM,所述第一速率为所述第二速率的四分之一;
且,以第二速率顺序串行输出的ACT命令和访问命令之间、以及访问命令之后,分别插入有一个空命令。
6.一种内存控制器的命令控制方法,其特征在于,包括:
在需要访问外部DRAM中未激活的BANK时,针对该BANK并行产生第一速率的一ACT命令和一访问命令;
将第一速率的并行ACT命令和访问命令,以第二速率顺序串行输出至外部DRAM的总线;
其中,对应控制模块工作频率的所述第一速率低于对应外部DRAM总线频率的第二速率。
7.如权利要求6所述的命令控制方法,其特征在于,该方法进一步在需要访问外部DRAM中已激活的BANK时,针对该BANK产生第一速率的一访问命令,并进一步将第一速率的一访问命令以第二速率输出至外部DRAM的总线。
8.如权利要求6或7所述的内存控制器,其特征在于,
所述访问为读访问时,所述访问命令为读RD命令、或读自动预充电RD+AP命令;
所述访问为写访问时,所述访问命令为写WR命令、或写自动预充电WR+AP命令。
9.如权利要求6所述的命令控制方法,其特征在于,所述外部DRAM为DDR2 SDRAM,所述第一速率为所述第二速率的一半。
10.如权利要求6所述的命令控制方法,其特征在于,所述外部DRAM为DDR3 SDRAM,所述第一速率为所述第二速率的四分之一;
且,以第二速率顺序串行输出的ACT命令和访问命令之间、以及访问命令之后,分别插入有一个空命令。
CN201010291555.8A 2010-09-25 2010-09-25 内存控制器及命令控制方法 Active CN102411982B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201010291555.8A CN102411982B (zh) 2010-09-25 2010-09-25 内存控制器及命令控制方法
US13/242,554 US20120079180A1 (en) 2010-09-25 2011-09-23 DRAM Controller and a method for command controlling

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010291555.8A CN102411982B (zh) 2010-09-25 2010-09-25 内存控制器及命令控制方法

Publications (2)

Publication Number Publication Date
CN102411982A true CN102411982A (zh) 2012-04-11
CN102411982B CN102411982B (zh) 2014-12-10

Family

ID=45871834

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010291555.8A Active CN102411982B (zh) 2010-09-25 2010-09-25 内存控制器及命令控制方法

Country Status (2)

Country Link
US (1) US20120079180A1 (zh)
CN (1) CN102411982B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391564A (zh) * 2014-11-28 2015-03-04 福州瑞芯微电子有限公司 功耗控制方法和装置
CN104391801A (zh) * 2014-11-07 2015-03-04 北京海尔集成电路设计有限公司 Ddrii控制器的读写、状态转换、物理地址分配方法
CN105426324A (zh) * 2014-05-29 2016-03-23 展讯通信(上海)有限公司 终端设备的内存访问控制方法与装置
CN106415511A (zh) * 2014-01-24 2017-02-15 高通股份有限公司 动态随机存取存储器(dram)接口的串行数据传输
CN107545919A (zh) * 2016-06-23 2018-01-05 联发科技股份有限公司 动态随机存取存储器、以及其存取方法和操作方法
WO2018027535A1 (zh) * 2016-08-09 2018-02-15 华为技术有限公司 访问存储设备的方法和存储设备
CN109284231A (zh) * 2018-07-24 2019-01-29 江苏微锐超算科技有限公司 内存访问请求的处理方法、装置及内存控制器
CN109815161A (zh) * 2018-12-29 2019-05-28 西安紫光国芯半导体有限公司 Nvdimm和实现nvdimm ddr4控制器的方法
CN110867203A (zh) * 2019-11-19 2020-03-06 上海华力微电子有限公司 存储器读取速度调节电路
CN113094310A (zh) * 2019-12-23 2021-07-09 华为技术有限公司 内存管理器、处理器内存子系统、处理器和电子设备

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011227834A (ja) * 2010-04-22 2011-11-10 Sony Corp 信号制御装置及び信号制御方法
US11513923B2 (en) 2019-06-25 2022-11-29 Micron Technology, Inc. Dynamic fail-safe redundancy in aggregated and virtualized solid state drives
US11768613B2 (en) * 2019-06-25 2023-09-26 Micron Technology, Inc. Aggregation and virtualization of solid state drives
US11573708B2 (en) 2019-06-25 2023-02-07 Micron Technology, Inc. Fail-safe redundancy in aggregated and virtualized solid state drives
US10942846B2 (en) 2019-06-25 2021-03-09 Micron Technology, Inc. Aggregated and virtualized solid state drives accessed via multiple logical address spaces
US10942881B2 (en) 2019-06-25 2021-03-09 Micron Technology, Inc. Parallel operations in aggregated and virtualized solid state drives
US11055249B2 (en) 2019-06-25 2021-07-06 Micron Technology, Inc. Access optimization in aggregated and virtualized solid state drives
US11762798B2 (en) * 2019-06-25 2023-09-19 Micron Technology, Inc. Aggregated and virtualized solid state drives with multiple host interfaces

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6340973B1 (en) * 1998-02-04 2002-01-22 Matsushita Electric Industrial Co., Ltd. Memory control unit and memory control method and medium containing program for realizing the same
CN1859282A (zh) * 2005-10-22 2006-11-08 华为技术有限公司 一种存储器的控制器及控制方法
CN101340580A (zh) * 2008-08-15 2009-01-07 上海龙晶微电子有限公司 视频硬件解码器的片外动态存储器的地址映射方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7243254B1 (en) * 2003-11-05 2007-07-10 Lsi Corporation Low power memory controller that is adaptable to either double data rate DRAM or single data rate synchronous DRAM circuits
DE102005001894A1 (de) * 2005-01-14 2006-08-03 Infineon Technologies Ag Synchroner Parallel-Serienwandler
US7661010B2 (en) * 2006-05-31 2010-02-09 Mosaid Technologies Incorporated Apparatus and method for interfacing to a memory
US7788414B2 (en) * 2007-01-16 2010-08-31 Lantiq Deutschland Gmbh Memory controller and method of controlling a memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6340973B1 (en) * 1998-02-04 2002-01-22 Matsushita Electric Industrial Co., Ltd. Memory control unit and memory control method and medium containing program for realizing the same
CN1859282A (zh) * 2005-10-22 2006-11-08 华为技术有限公司 一种存储器的控制器及控制方法
CN101340580A (zh) * 2008-08-15 2009-01-07 上海龙晶微电子有限公司 视频硬件解码器的片外动态存储器的地址映射方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张永志: "DDR2内存控制器的模块设计和验证平台技术研究", 《中国优秀硕士学位论文全文数据库》 *

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106415511B (zh) * 2014-01-24 2020-08-28 高通股份有限公司 动态随机存取存储器接口的串行数据传输
CN106415511A (zh) * 2014-01-24 2017-02-15 高通股份有限公司 动态随机存取存储器(dram)接口的串行数据传输
CN105426324B (zh) * 2014-05-29 2018-04-27 展讯通信(上海)有限公司 终端设备的内存访问控制方法与装置
CN105426324A (zh) * 2014-05-29 2016-03-23 展讯通信(上海)有限公司 终端设备的内存访问控制方法与装置
CN104391801B (zh) * 2014-11-07 2018-09-25 北京海尔集成电路设计有限公司 Ddrii控制器的读写、状态转换、物理地址分配方法
CN104391801A (zh) * 2014-11-07 2015-03-04 北京海尔集成电路设计有限公司 Ddrii控制器的读写、状态转换、物理地址分配方法
CN104391564B (zh) * 2014-11-28 2018-02-13 福州瑞芯微电子股份有限公司 功耗控制方法和装置
CN104391564A (zh) * 2014-11-28 2015-03-04 福州瑞芯微电子有限公司 功耗控制方法和装置
CN107545919A (zh) * 2016-06-23 2018-01-05 联发科技股份有限公司 动态随机存取存储器、以及其存取方法和操作方法
WO2018027535A1 (zh) * 2016-08-09 2018-02-15 华为技术有限公司 访问存储设备的方法和存储设备
CN109284231A (zh) * 2018-07-24 2019-01-29 江苏微锐超算科技有限公司 内存访问请求的处理方法、装置及内存控制器
CN109284231B (zh) * 2018-07-24 2023-05-23 江苏微锐超算科技有限公司 内存访问请求的处理方法、装置及内存控制器
CN109815161A (zh) * 2018-12-29 2019-05-28 西安紫光国芯半导体有限公司 Nvdimm和实现nvdimm ddr4控制器的方法
CN109815161B (zh) * 2018-12-29 2024-03-15 西安紫光国芯半导体有限公司 Nvdimm和实现nvdimm ddr4控制器的方法
CN110867203A (zh) * 2019-11-19 2020-03-06 上海华力微电子有限公司 存储器读取速度调节电路
CN110867203B (zh) * 2019-11-19 2021-12-14 上海华力微电子有限公司 存储器读取速度调节电路
CN113094310A (zh) * 2019-12-23 2021-07-09 华为技术有限公司 内存管理器、处理器内存子系统、处理器和电子设备

Also Published As

Publication number Publication date
CN102411982B (zh) 2014-12-10
US20120079180A1 (en) 2012-03-29

Similar Documents

Publication Publication Date Title
CN102411982B (zh) 内存控制器及命令控制方法
CN113553277B (zh) 一种ddr5 sdram的高吞吐率、低延迟phy接口电路装置
US9465557B2 (en) Load reduction dual in-line memory module (LRDIMM) and method for programming the same
JP5956089B2 (ja) 開放されたロウの好適する数をもつメモリ装置
CN102981776B (zh) 双倍数据率虚拟静态随机存取存储器及其控制器、存取与操作方法、写入与读取方法
CN109582596B (zh) 从具有不同读取和写入定时的模式寄存器进行读取
CN101788963B (zh) Dram存储控制方法及装置
US20030182513A1 (en) Memory system with burst length shorter than prefetch length
US9087568B1 (en) Memory with merged control input
WO2016185879A1 (ja) メモリ制御回路およびメモリ制御方法
KR20210098831A (ko) 비휘발성 메모리에서의 구성가능한 기입 커맨드 지연
US20130103917A1 (en) Efficient command mapping scheme for short data burst length memory devices
CN102339261B (zh) 一种ddr2sdram控制器
US20050182908A1 (en) Method and apparatus of interleaving memory bank in multi-layer bus system
CN101894584B (zh) 一种动态随机存储器读写模式信号时序参数的实现方法
CN117099075A (zh) 针对长突发长度的存储器数据传送的双倍取得
CN103632708A (zh) 同步动态随机存储器的自刷新控制装置及方法
JP2012059184A (ja) メモリコントローラ、これを備えたメモリシステム及びメモリデバイスの制御方法
CN102708059A (zh) 提高sdram数据传输效率的方法
CN102522113B (zh) 一种sdram桥接电路
JP2004127305A (ja) メモリ制御装置
CN214253209U (zh) 一种sdram控制器用户接口模块ip核
US11854602B2 (en) Read clock start and stop for synchronous memories
US7941594B2 (en) SDRAM sharing using a control surrogate
CN204331714U (zh) 一种新型sdram控制器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: Xinhua three Technology Co., Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: Huasan Communication Technology Co., Ltd.