CN101625892B - 动态随机访问存储器的控制器及用户指令处理方法 - Google Patents
动态随机访问存储器的控制器及用户指令处理方法 Download PDFInfo
- Publication number
- CN101625892B CN101625892B CN2009100911028A CN200910091102A CN101625892B CN 101625892 B CN101625892 B CN 101625892B CN 2009100911028 A CN2009100911028 A CN 2009100911028A CN 200910091102 A CN200910091102 A CN 200910091102A CN 101625892 B CN101625892 B CN 101625892B
- Authority
- CN
- China
- Prior art keywords
- bank
- active
- precharge
- instruction
- user instruction
- 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.)
- Active
Links
Images
Landscapes
- Dram (AREA)
Abstract
本发明公开了一种动态随机访问存储器(DRAM)的控制器及用户指令处理方法。本发明同时对当前用户指令、及其下一条用户指令进行BANK冲突判别,并利用得到的当前用户指令及其下一条用户指令的判别信息生成对DRAM颗粒的控制命令和地址信号,从而能够提高DRAM的读写访问性能,进而提高DRAM的读写访问带宽利用率。而且,本发明还可为每一个BANK都设置有一对应BANK表项,并在表项中设置表示某些操作是否可执行的变量,从而实现了对各BANK及其对应行的可操作状态的有效管理。
Description
技术领域
本发明涉及存储控制技术,特别涉及一种动态随机访问存储器(DRAM)的控制器、以及一种DRAM的用户指令处理方法。
背景技术
DRAM主要分为同步动态随机接入存储器(Synchronous DynamicRandom Access Memory,SDRAM)、双倍数据速率(Double Data Rate,DDR)SDRAM、第2代双倍数据速率(Double Data Rate 2,DDR2)SDRAM、第3代双倍数据速率(Double Data Rate 3,DDR3)SDRAM等多种类型,无论是哪一种类型的DRAM,参见图1,实际应用系统都包括控制器和DRAM内存颗粒,控制器可向内存颗粒发送时钟信号、控制命令、以及地址信号,并可对内存颗粒进行数据信号的读写操作。
具体说,内存颗粒通常具有4或8个存储体(BANK),当控制器对某一个BANK进行数据信号的读写操作之前,需要用激活(ACTIVE)命令来打开该BANK一对应行,才能够读写该行内的数据;如果在该对应行被打开之前,该BANK的其他行已打开,则需要先利用预充电(PRECHARGE)命令关闭已打开的其他行,然后再利用ACTIVE命令打开该对应行。为了提高多BANK的DRAM的读写访问带宽利用率,控制器通常可以同时打开多个BANK、并对多个BANK的打开行穿插进行读写操作。
图2为现有DRAM控制器的一种逻辑结构示意图。如图2所示,现有DRAM的控制器具有用户侧接口和DRAM侧接口,并包括:用户指令缓存单元、BANK管理冲突判别单元、DRAM命令生成单元、以及数据通道单元。
用户指令缓存单元,顺序缓存从用户侧接口接收的若干条用户指令,并令最先缓存的当前用户指令对BANK管理冲突判别单元和DRAM命令生成单元可见,以将最先缓存的当前用户指令提供给BANK管理冲突判别单元和DRAM命令生成单元(如图2中标识有“A”的箭头所示);其中,用户指令中至少包含操作类型和目标地址等信息,操作类型至少可以包含读(READ)、写(WRITE)、包含自动预充电的读(READ+Auto PRECHARGE,READ/a)、包含自动预充电的写(WRITE+Auto PRECHARGE,WRITE/a)等,目标地址信息则至少包含片选空间(CS)、BANK空间、行地址(Row)、列地址(Col)等
BANK管理冲突判别单元,内部保存有DRAM中各BANK及其对应行的可操作状态,并依据内部保存的可操作状态对当前用户指令进行BANK冲突判别,得到当前用户指令的判别信息提供给DRAM命令生成单元(如图2中标识有“B”的箭头所示);
DRAM命令生成单元,依据预设DRAM参数、当前用户指令、以及当前用户指令的判别信息,生成对DRAM颗粒的控制命令和地址信号发送至DRAM侧接口,并更新BANK管理冲突判别单元中保存的可操作状态(如图2中标识有“C”的箭头所示),同时通知数据通道单元(如图2中标识有“D”的箭头所示)、以指示数据通道单元在用户侧接口和DRAM侧接口之间的与当前用户指令对应的数据传输;对当前用户指令处理完成后,从用户指令缓存单元中删除当前用户指令(如图2中标识有“E”的箭头所示),以使用户指令缓存单元中的下一条用户指令变为当前用户指令、并从用户侧接口补入新的用户指令。
上述DRAM控制器通过对DRAM颗粒的操作能够实现读写访问,但在连续访问的BANK和行地址随机性较大的情况下,会由于各操作间的延时造成DRAM读写访问带宽的空闲,从而使得DRAM读写访问带宽的利用率不高。
而且,上述DRAM控制器的BANK管理冲突判别单元中保存的信息有限,无法有效地管理多BANK的可操作状态。
发明内容
有鉴于此,本发明提供了一种DRAM的控制器、以及一种DRAM的用户指令处理方法,能够提高DRAM的读写访问带宽利用率。
本发明提供的一种DRAM控制器,用户指令缓存单元、BANK管理冲突判别单元、DRAM命令生成单元、以及数据通道单元,
用户指令缓存单元,顺序缓存有至少两条用户指令,并将最先缓存的当前用户指令、及其下一条用户指令提供给BANK管理冲突判别单元和DRAM命令生成单元;
BANK管理冲突判别单元,内部保存有DRAM中各BANK及其对应行的可操作状态,并依据内部保存的所述可操作状态同时对当前用户指令、及其下一条用户指令进行BANK冲突判别,得到当前用户指令及其下一条用户指令的判别信息;
DRAM命令生成单元,依据预设DRAM参数、当前用户指令及其下一条用户指令、以及当前用户指令及其下一条用户指令的判别信息,生成对DRAM颗粒的控制命令和地址信号、更新BANK管理冲突判别单元中保存的所述可操作状态、并配合数据通道单元对当前用户指令进行处理;对当前用户指令处理完成后,从用户指令缓存单元中删除当前用户指令,以使用户指令缓存单元中的下一条用户指令变为当前用户指令、并补入新的用户指令。
BANK管理冲突判别单元中保存有每一BANK的表项、用以表示该BANK及其对应行的可操作状态,每一BANK的表项中设置有:
BANK有效变量,记录该BANK是否已有一行通过激活ACTIVE操作打开,用于判别该BANK是否需要ACTIVE;
BANK打开行变量,记录该BANK中已经打开行的行地址,用于判别该BANK是否需要预充电PRECHARGE;
PRECHARGE定时器,记录该BANK被PRECHARGE操作之前需等待的时钟周期;
PRECHARGE允许变量,依据PRECHARGE定时器是否计时到达,表示该BANK是否可被PRECHARGE;
ACTIVE定时器,记录该BANK被执行ACTIVE之前需等待的时钟周期;
ACTIVE允许变量,依据ACTIVE定时器是否计时到达,表示该BANK是否可被ACTIVE;
且,当前用户指令的判别信息中包括:当前用户指令对应BANK表项中的BANK有效变量、PRECHARGE允许变量、ACTIVE允许变量、PRECHARGE定时器和ACTIVE定时器产生的定时信号;其下一条用户指令的判别信息中包括:下一条用户指令对应BANK表项中的BANK有效变量、PRECHARGE允许变量、ACTIVE允许变量、PRECHARGE定时器和ACTIVE定时器产生的定时信号。
BANK有效变量,在执行ACTIVE操作时设置为已打开;在执行PRECHARGE操作、或读写操作、或带有自动PRECHARGE的读写操作时设置为正在PRECHARGE;在ACTIVE定时器计时到达、或执行刷新REFRESH操作时设置为已关闭;
BANK打开行变量,在每次ACTIVE操作时更新;
PRECHARGE定时器,在执行ACTIVE操作时,设置为行有效至行预充电时间tRAS参数值;在执行读操作、或带有自动PRECHARGE的读操作时,如果当前数值小于读预充电时间tRTP参数值,则设置为tRTP参数值;在执行写操作、或带有自动PRECHARGE的写操作时,如果当前数值小于写预充电时间tWR参数值,则设置为tWR参数值;
PRECHARGE允许变量,在执行ACTIVE、读操作、带有自动PRECHARGE的读操作、写操作、或带有自动PRECHARGE的写操作时,设置为无效、用以表示对应BANK不可进行PRECHARGE操作;在PRECHARGE定时器达到预定值时,设置为有效、用以表示对应BANK可再次进行PRECHARGE操作;
ACTIVE定时器,在执行ACTIVE操作时,设置为tRAS参数值与行预充电时间tRP参数值之和;在执行PRECHARGE操作时,如果当前数值小于tRP参数值,则设置为tRP参数值;在执行读操作、或带有自动PRECHARGE的读操作时,如果当前数值小于tRTP参数值与tRP参数值之和,则设置为tRTP参数值与tRP参数值之和;在执行写操作、或带有自动PRECHARGE的写操作时,如果当前数值小于tWR参数值与tRP参数值之和,则设置为tWR参数值与tRP参数值之和;
ACTIVE允许变量,在执行ACTIVE操作时,设置为无效、用以表示对应BANK不可执行下一个ACTIVE操作;在ACTIVE定时器到达预定值、且对应BANK正在进行PRECHARGE操作时,设置为有效、用以表示对应BANK可再次进行ACTIVE操作。
BANK管理冲突判别单元中进一步设置有:
BANK相同变量,表示当前用户指令及其下一条用户指令的对应BANK是否相同的;
以及,行未命中变量,表示下一条用户指令与其对应BANK表项中记录的已打开行地址是否不同;
且,下一条用户指令的判别信息中进一步包括:BANK相同变量、以及行未命中变量。
DRAM命令生成单元包括:
参数定时器组,依据预设DRAM参数产生定时信号;
控制器状态机,依据参数定时器组产生的定时信号、当前用户指令及其下一条用户指令、当前用户指令及其下一条用户指令的判别信息,在各操作状态间切换、并更新参数定时器组;
信号产生子单元,根据控制器状态机的当前操作状态、以及当前用户指令及其下一条用户指令,生成对DRAM颗粒的控制命令和地址信号执行相应的操作、更新当前用户指令对应的BANK表项、并指示数据通道单元进行用户侧和DRAM侧之间的数据读写;对当前用户指令处理完成后,从用户指令缓存单元中删除当前用户指令,以使用户指令缓存单元中的下一条用户指令变为当前用户指令、并补入新的用户指令。
本发明提供的一种DRAM的用户指令处理方法,该用户指令处理方法包括:
顺序缓存至少两条用户指令,并提供最先缓存的当前用户指令、及其下一条用户指令;
依据保存的DRAM的各BANK及其对应行的可操作状态,同时对当前用户指令、及其下一条用户指令进行BANK冲突判别,得到当前用户指令及其下一条用户指令的判别信息;
依据预设DRAM参数、当前用户指令及其下一条用户指令、以及当前用户指令及其下一条用户指令的判别信息,生成对DRAM颗粒的控制命令和地址信号、更新保存的所述可操作状态、并配合数据传输对当前用户指令进行处理;
对当前用户指令处理完成后,删除缓存的当前用户指令,以使缓存下一条用户指令变为当前用户指令、并补入新的用户指令。
该用户指令处理方法设置有每一BANK的表项、用以表示该BANK及其对应行的可操作状态,每一BANK的表项中设置有:
BANK有效变量,记录该BANK是否已有一行通过激活ACTIVE操作打开,用于判别该BANK是否需要ACTIVE;
BANK打开行变量,记录该BANK中已经打开行的行地址,用于判别该BANK是否需要预充电PRECHARGE;
PRECHARGE定时器,记录该BANK被PRECHARGE操作之前需等待的时钟周期;
PRECHARGE允许变量,依据PRECHARGE定时器是否计时到达,表示该BANK是否可被PRECHARGE;
ACTIVE定时器,记录该BANK被执行ACTIVE之前需等待的时钟周期;
ACTIVE允许变量,依据ACTIVE定时器是否计时到达,表示该BANK是否可被ACTIVE;
且,当前用户指令的判别信息中包括:当前用户指令对应BANK表项中的BANK有效变量、PRECHARGE允许变量、ACTIVE允许变量、PRECHARGE定时器和ACTIVE定时器产生的定时信号;其下一条用户指令的判别信息中包括:下一条用户指令对应BANK表项中的BANK有效变量、PRECHARGE允许变量、ACTIVE允许变量、PRECHARGE定时器和ACTIVE定时器产生的定时信号。
BANK有效变量,在执行ACTIVE操作时设置为已打开;在执行PRECHARGE操作、或读写操作、或带有自动PRECHARGE的读写操作时设置为正在PRECHARGE;在ACTIVE定时器计时到达、或执行刷新REFRESH操作时设置为已关闭;
BANK打开行变量,在每次ACTIVE操作时更新;
PRECHARGE定时器,在执行ACTIVE操作时,设置为行有效至行预充电时间tRAS参数值;在执行读操作、或带有自动PRECHARGE的读操作时,如果当前数值小于读预充电时间tRTP参数值,则设置为tRTP参数值;在执行写操作、或带有自动PRECHARGE的写操作时,如果当前数值小于写预充电时间tWR参数值,则设置为tWR参数值;
PRECHARGE允许变量,在执行ACTIVE、读操作、带有自动PRECHARGE的读操作、写操作、或带有自动PRECHARGE的写操作时,设置为无效、用以表示对应BANK不可进行PRECHARGE操作;在PRECHARGE定时器达到预定值时,设置为有效、用以表示对应BANK可再次进行PRECHARGE操作;
ACTIVE定时器,在执行ACTIVE操作时,设置为tRAS参数值与行预充电时间tRP参数值之和;在执行PRECHARGE操作时,如果当前数值小于tRP参数值,则设置为tRP参数值;在执行读操作、或带有自动PRECHARGE的读操作时,如果当前数值小于tRTP参数值与tRP参数值之和,则设置为tRTP参数值与tRP参数值之和;在执行写操作、或带有自动PRECHARGE的写操作时,如果当前数值小于tWR参数值与tRP参数值之和,则设置为tWR参数值与tRP参数值之和;
ACTIVE允许变量,在执行ACTIVE操作时,设置为无效、用以表示对应BANK不可执行下一个ACTIVE操作;在ACTIVE定时器到达预定值、且对应BANK正在进行PRECHARGE操作时,设置为有效、用以表示对应BANK可再次进行ACTIVE操作。
该用户指令处理方法进一步设置有:
BANK相同变量,表示当前用户指令及其下一条用户指令的对应BANK是否相同的;
以及,行未命中变量,表示下一条用户指令与其对应BANK表项中记录的已打开行地址是否不同;
且,下一条用户指令的判别信息中进一步包括:BANK相同变量、以及行未命中变量。
所述依据预设DRAM参数、当前用户指令及其下一条用户指令、以及当前用户指令及其下一条用户指令的判别信息生成对DRAM颗粒的控制命令和地址信号包括:
依据预设DRAM参数产生定时信号;
依据参数定时器组产生的定时信号、当前用户指令及其下一条用户指令、当前用户指令及其下一条用户指令的判别信息,控制状态机在各操作状态间切换、并更新参数定时器组;
根据状态机的当前操作状态、以及当前用户指令及其下一条用户指令,生成对DRAM颗粒的控制命令和地址信号执行相应的操作、更新当前用户指令对应的BANK表项、并指示进行用户侧和DRAM侧之间的数据读写;对当前用户指令处理完成后,删除当前用户指令、以使下一条用户指令变为当前用户指令、并补入新的用户指令。
由上述技术方案可见,本发明同时对当前用户指令、及其下一条用户指令进行BANK冲突判别,并利用得到的当前用户指令及其下一条用户指令的判别信息生成对DRAM颗粒的控制命令和地址信号,从而能够提高DRAM的读写访问性能,进而提高DRAM的读写访问带宽利用率。
而且,本发明还可为每一个BANK都设置有一对应BANK表项,并在表项中设置表示各种操作是否可执行的变量,从而实现了对各BANK及其对应行的可操作状态的有效管理。
附图说明
图1为现有DRAM应用系统组成示意图;
图2为现有DRAM控制器的一种逻辑结构示意图;
图3为本发明实施例中DRAM控制器的一种逻辑结构示意图;
图4为如图3所示DRAM控制器中的DRAM命令生成单元的一种逻辑结构示意图;
图5为如图4所示DRAM命令生成单元中的控制器状态机的状态转移示意图;
图6为本发明实施例中DRAM控制器中用户指令处理方法的一种流程示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
本实施例相比于现有技术,主要的改进之处在于BANK管理冲突判别单元可同时对当前用户指令、及其下一条用户指令进行BANK冲突判别,且DRAM命令生成单元利用当前用户指令及其下一条用户指令的判别信息生成对DRAM颗粒的控制命令和地址信号,以提高DRAM命令生成单元的处理性能,从而能够提高DRAM的读写访问性能,进而提高DRAM的读写访问带宽利用率。
图3为本发明实施例中DRAM控制器的一种逻辑结构示意图。如图3所示,在本实施例中,DRAM控制器包括:用户指令缓存单元、BANK管理冲突判别单元、DRAM命令生成单元、以及数据通道单元。
用户指令缓存单元,顺序缓存从用户侧接口接收的至少两条用户指令,并令最先缓存的当前用户指令、及其下一条用户指令对BANK管理冲突判别单元和DRAM命令生成单元可见,以将最先缓存的当前用户指令、及其下一条用户指令提供给BANK管理冲突判别单元和DRAM命令生成单元(如图3中标识有“A1”和“A2”的箭头所示)。
BANK管理冲突判别单元,内部保存有DRAM中各BANK及其对应行的可操作状态,并依据内部保存的所述可操作状态同时对当前用户指令、及其下一条用户指令进行BANK冲突判别,得到当前用户指令及其下一条用户指令的判别信息提供给DRAM命令生成单元(如图3中标识有“B1”和“B2”的箭头所示);
DRAM命令生成单元,依据预设DRAM参数、当前用户指令及其下一条用户指令、以及当前用户指令及其下一条用户指令的判别信息,生成对DRAM颗粒的控制命令和地址信号(如何生成控制命令和地址信号可以按照现有原理来实现,本实施例只是更为充分地利用生成控制命令和地址信号所需的判断条件、并不改变生成控制命令和地址信号的原理)、并更新BANK管理冲突判别单元中保存的所述可操作状态(如图3中标识有“C”的箭头所示),同时通知数据通道单元(如图3中标识有“D”的箭头所示)、以指示数据通道单元在用户侧接口和DRAM侧接口之间的与当前用户指令对应的数据传输;
其中,当前用户指令及其下一条用户指令中至少包含操作类型和目标地址等信息,操作类型至少可以包含读(READ)、写(WRITE)、包含自动预充电的读(READ+Auto PRECHARGE,READ/a)、包含自动预充电的写(WRITE+Auto PRECHARGE,WRITE/a)等,目标地址信息则至少包含片选空间(CS)、BANK空间、行地址(Row)、列地址(Col)等,例如,32比特的用户指令可以如表1所示:
表1
DRAM命令生成单元还在对当前用户指令处理完成后,从用户指令缓存单元中删除当前用户指令(如图3中标识有“E”的箭头所示),以使用户指令缓存单元中的下一条用户指令变为当前用户指令、并从用户侧接口补入新的用户指令。
这样,DRAM命令生成单元在生成对DRAM颗粒的控制命令时,参照的是当前用户指令及其下一条用户指令的判别信息,而非仅仅是当前用户指令的判别信息,因而DRAM命令生成单元可以为了保证对下一条用户的处理能够尽可能早地开始,从而生成更加紧凑的控制指令系列,从而能够提高DRAM命令生成单元的性能,进而能够提高DRAM的读写访问带宽利用率。
具体说,BANK管理冲突判别单元可以采用多种方式实现多BANK管理,下面,本实施例中给出了一种利用BANK表项较佳的实现方式。
BANK管理冲突判别单元中保存有每一BANK的BANK表项,用以表示该BANK及其对应行的可操作状态,并进一步向DRAM命令生成单元指示,在针对当前用户指令和下一条用户指令向DRAM颗粒发出读/写操作命令前,是否需要先执行ACTIVE操作、是否需要先执行PRECHARGE操作、以及何时可针对对应BANK进行ACTIVE或PRECHARGE操作。
此外,BANK管理冲突判别单元可根据用户指令的CS和BANK的信息寻址到对应BANK表项。
其中,每一BANK的BANK表项中可设置如下变量:
BANK有效变量(BANK_valid_r),记录该BANK是否已有一行通过ACTIVE操作打开,用于判别该BANK是否需要ACTIVE;
BANK打开行变量(BANK_row_r),记录该BANK中已经打开行的行地址,用于判别该BANK是否需要PRECHARGE;
PRECHARGE定时器(precharge_cnt_r),用于记录该BANK被PRECHARGE操作之前需等待的时钟周期;
PRECHARGE允许变量(precharge_cnT_ok_r),依据precharge_cnt_r是否计时到达,记录该BANK是否可被PRECHARGE;
ACTIVE定时器(rp_cnt_r),记录该BANK被PRECHARGE之后、被再次ACTIVE之前需等待时钟周期;
ACTIVE允许变量(rp_cnt_ok_r),依据rp_cnt_r是否计时到达,即该BANK被PRECHARGE之后、被再次ACTIVE之前是否延时了足够的时钟周期,记录该BANK是否可被再次ACTIVE;
每一BANK的BANK表项中可如表2所示:
表2
上述如表2所示的BANK表项中:
(1)BANK_valid_r:
在ACTIVE操作时可标记为打开(例如其取值可设置为2’b01);
在其所属BANK打开后又被PRECHARGE操作(包含读/写+AutoPRECHARG)时,可标记为正在PRECHARGE(例如其取值可设置为2’b10);
在定时刷新(REFRESHE)操作、或其所属BANK打开后又被成功PRECHARGE、即已完成PRECHARGE时,可标记为关闭(例如其取值可设置为2’b00)。
(2)BANK_row_r:
在每次ACTIVE操作时更新,记录已经打开的BANK状态和对应行地址;针对当前用于指令和下一条用户指令进行比较,判断是否需要PRECHARGE;
此外,可选地,为了利用尽可能少的BANK表项来记录更多BANK及其对应行的可操作状态,BANK_row_r除了需要记录BANK已打开行的行地址外,可能还需要记录CS和BANK空间地址的一部分,此时称BANK_row_r为扩展行地址。
例如,假设有8个bank(3bit来表示BANK空间地址信息),采用4个BANK表项时,使用3bit的BANK空间地址信息中的2bit来映射管理表项,剩余1bit与行地址信息一起作为扩展行地址,从而可以只需要4个BANK表项而不是8个。
(3)precharge_cnt_r:
在执行ACTIVE操作时,可将对应BANK表项中的precharge_cn_r设置为DRAM参数中的行有效至行预充电时间(active->precharge delay,tRAS,通常约为40纳秒)参数值;
在执行READ、或READ/a操作时,如果对应BANK表项中precharge_cnt_r的当前数值小于DRAM参数中的读预充电时间(read->precharge delay,tRTP,通常约为7.5纳秒),则可将对应BANK表项中的precharge_cnt_r设置为tRTP参数值;
在执行WRITE、WRITE/a操作时,如果对应BANK表项中precharge_cnt_r的当前数值小于DRAM参数中的写预充电时间(write->precharge,tWR,通常约为15纳秒),则可将对应BANK表项中的precharge_cnt_r设置为tWR参数值;
此外,precharge_cnt_r可递减计数至零、并可在定时REFRESH操作时清零。
(4)precharge_cnt_ok_r:
在执行ACTIVE、READ/a、WRITE/a等操作时置为无效,表示对其所属BANK不可进行PRECHARGE操作;
precharge_cnt_r达到预定值(例如,precharge_cnt_r[bank_i]<=5′d3)时置为有效,表示可对其所属BANK进行PRECHARGE操作。
(5)rp_cnt_r:
在执行ACTIVE操作时,可将对应BANK表项中rp_cnt_r设置为tRC=(tRAS+tRP);
在执行PRECHARGE操作时,如果对应BANK表项中rp_cnt_r的当前数值小于DRAM参数中的行预充电时间(precharge->command delay,tRP,通常约为15纳秒)参数值,则可将对应BANK表项中rp_cnt_r设置为tRP参数值;
在执行READ、或READ/a操作时,如果对应BANK表项中rp_cnt_r的当前数值小于DRAM参数中的tRTP参数值与tRP参数值之和,则可将对应BANK表项中的rp_cnt_r设置为tRTP参数值与tRP参数值之和;
在执行WRITE、WRITE/a操作时,如果对应对应BANK表项中rp_cnt_r的当前数值小于DRAM参数中的tWR参数值与tRP参数值之和,则可将对应BANK表项中的rp_cnt_r设置为tWR参数值与tRP参数值之和;
此外,rp_cnt_r可递减计数至零、并可在定时REFRESH操作时清零。
(6)rp_cnt_ok_r:
在执行ACTIVE操作时设置无效,表示其所属BANK暂时还不能再次执行下一个ACTIVE操作;
rp_cnt_r达到预定值、且其所属BANK正在进行PRECHARGE操作(例如,(rp_cnt_r[bank_i]=5′d3)&&(bank_valid_r[bank_i]==2′b10))时置为有效,表示可对其所属BANK进行ACTIVE操作。
较佳地,上述如表2所示BANK表项中的所有变量,均可以由DRAM命令生成单元来实现设置更新,具体如何更新待后续予以说明。
基于如上所述的BANK表项管理方式,当前用户指令的判别信息中就会包括:当前用户指令对应BANK表项[Bi]中的BANK_valid_r[Bi]、precharge_cnt_ok_r[Bi]、rp_cnt_ok_r[Bi];下一条用户指令的判别信息中以及下一条用户指令对应BANK表项[Bj]中的BANK表项[Bj]中的BANK_valid_r[Bj]、precharge_cnt_ok_r[Bj]、rp_cnt_ok_r[Bj]。
一种可选的方式,BANK管理冲突判决单元可以按照如下方式将当前用户指令的判别信息提供给DRAM命令生成单元:
BANK_valid_r_cur_bank:当前用户指令的BANK状态;
precharge_cnt_ok_r_cur_bank:当前可否针对当前用户指令,向当前用户指令对应的DRAM颗粒地址空间发送PRECHARGE操作命令;
rp_cnt_ok_r_cur_bank:当前可否针对当前用户指令,向当前用户指令对应的DRAM颗粒地址空间发送ACTIVE操作命令。
同理,BANK管理冲突判决单元可以按照如下方式将下一条用户指令的判别信息提供给DRAM命令生成单元:
BANK_valid_r_next_bank:下一用户指令对应的BANk状态;
precharge_cnt_ok_r_next_bank:当前可否针对下一条用户指令,向下一条用户指令对应的DRAM颗粒地址空间发送PRECHARGE操作命令;
rp_cnt_ok_r_next_bank:当前可否针对下一条用户指令,向下一条用户指令对应的DRAM颗粒地址空间发送ACTIVE操作命令。
此外,当前用户指令的判别信息中,还可包含对应BANK表项中的各定时器计时到达时产生的定时信号;下一条用户指令的判别信息中,还可包含对应BANK表项中各定时器计时到达时产生的定时信号。
除了上述变量和定时器当前值之外,下一条用户指令的判决信息中,还可进一步增设如下两个变量:
BANK相同变量(next_row_miss[Bj]),表示当前用户指令及其下一条用户指令的对应BANK是否相同的、即是否使用相同的BANK表项;
以及,行未命中变量(next_bank_same[Bj]),表示下一条用户指令与其对应BANK表项中记录的已打开行地址、或扩展行地址是否不同。
next_row_miss[Bj]与next_bank_same[Bj]组合的物理意义如表3所示。
表3
以上,对本实施例中给出的一种利用BANK表项较佳的实现方式进行了详细说明。下面,再对本实施例中DRAM命令生成单元的一种较佳实现方式进行说明。
图4为如图3所示DRAM控制器中的DRAM命令生成单元的一种逻辑结构示意图。如图4所示,本实施例中的DRAM命令生成单元可以包括:
参数定时器组,依据预设DRAM参数,按照现有方式产生定时信号;
控制器状态机,依据参数定时器组产生的各种定时信号(如图4中标识有“F”的箭头所示)、当前用户指令及其下一条用户指令(如图4中标识有“A1”和“A2”的箭头所示)、当前用户指令及其下一条用户指令的判别信息(如图4中标识有“B1”和“B2”的箭头所示,包含有对应BANK表项中定时器计时到达时产生的定时信号)在各操作状态间切换(如何状态可以按照现有方式来实现,本实施例只是增加了切换状态的判断条件、并不改变状态机和切换状态的原理)、并更新参数定时器组(如图4中标识有“G”的箭头所示);
信号产生子单元,根据控制器状态机的当前操作状态、以及当前用户指令及其下一条用户指令(如图4中标识有“A1”和“A2”的箭头所示),生成对DRAM颗粒的控制命令和地址信号执行相应的操作(如何生成控制命令和地址信号可以按照现有原理来实现,本实施例并不改变生成控制命令和地址信号的原理)、更新BANK管理冲突判别单元中当前用户指令对应的BANK表项(如图4中标识有“C”的箭头所示)、并指示数据通道单元(如图4中标识有“D”的箭头所示)对当前用户指令对应数据进行处理;对当前用户指令处理完成后,从用户指令缓存单元中删除当前用户指令(如图4中标识有“E”的箭头所示),以使用户指令缓存单元中的下一条用户指令变为当前用户指令、并补入新的用户指令。
在图4中,除了前述BANK表项中各定时器,参数定时器组还会产生其它定时信号,其主要是按照现有方式对如下现有参数进行处理:激活至读写延时(act->read/write delay,tRCD,通常约为15纳秒)参数、不同BANK间激活延时(ACTIVATE-to-ACTIVATE delay different bank,tRRD)、附加延时(Posted CAS additive latency,AL)参数、自动刷新定时(auto refreshinterval,tREFI,通常约为7.8微秒)参数、刷新延时(refresh->refresh、refresh->active delay,tRFC,通常约为127.5纳秒)参数等。
上述参数定时器组中的定时器具体包括:
tRCD_cnt_r定时器,其可处理tRCD参数,考虑DDR2/DDR3的附加延时AL参数,可以使得ACTIVE操作与READ/WRITE之间无需等待;
tRRD_cnt_r定时器,其可处理tRRD参数,DDR2的tRRD一般为2个时钟周期,因可以ACTIVE+READ+ACTIVE+READ等连续操作,当打开超过4bank的设计,ACTIVE前还要考虑另一个参数tfaw=4-Bank激活周期(一般37.5~50纳秒);
tREFI_cnt_r定时器,处理TREFI参数,实现状态机定时触发REFRESH操作;
tRFC_cnt_r定时器,处理tRFC参数,满足REFRESH操作要求;
Rpa_cnt_r定时器,表示对全部BANK的PRECHARGE比对单个BANK的PRECHARGE多延时1个时钟周期。
在图4中,控制器状态机是DRAM命令生成单元的核心,其包含一组状态,这些状态分为动作状态和等待状态两大类,各状态间的切换转移关系可以与现有任意一种方式相同,以如图5所示的切换转移关系为例,则控制器状态机的各状态转移切换条件可以如表4所示。
表4
基于如上所述的表4,图4中的信号产生子单元可以按照现有方式更新参数定时器组,并按照如下方式对前述BANK表项中各变量进行更新:
(1)对于BANK表项中的bank_valid_r:
在执行ACTIVE操作时,将对应BANK表项中的bank_valid_r更新为已打开;
在执行PRECHARGE操作、或读写操作、或带有自动PRECHARGE的读写操作时,将对应BANK表项中的bank_valid_r更新为正在PRECHARGE;
在ACTIVE定时器计时到达、或执行刷新REFRESH操作时,将对应BANK表项中的bank_valid_r更新为已关闭。
(2)对于BANK表项中的BANK_row_r:
在每次ACTIVE操作时更新,记录已经打开的BANK状态和对应行地址;针对当前用于指令和下一条用户指令进行比较,判断是否需要PRECHARGE。
(3)对于BANK表项中的precharge_cnt_r:
在执行ACTIVE操作时,将对应BANK表项中的precharge_cnt_r更新为tRAS参数值;
在执行读操作、或带有自动PRECHARGE的读操作时,如果对应BANK表项中precharge_cnt_r的当前数值小于tRTP参数值,则将对应BANK表项中的precharge_cnt_r更新为tRTP参数值;
在执行写操作、或带有自动PRECHARGE的写操作时,如果对应BANK表项中precharge_cnt_r的当前数值小于DRAM参数中的tWR参数值,则将对应BANK表项中的precharge_cnt_r更新为tWR参数值。
(4)对于BANK表项中的precharge_ok_r:
在执行ACTIVE、READ/a、WRITE/a等操作时置为无效,表示对应BANK不可再次进行PRECHARGE操作;
precharge_cnt_r达到预定值时置为有效,表示可再次对其所属BANK进行PRECHARGE操作。
(5)、对于BANK表项中的rp_cnt_r:
在执行ACTIVE操作时,如果对应BANK表项中rp_cnt_r的当前数值,小于DRAM参数中的tRC=(tRAS+tRP),则将对应BANK表项中的rp_cnt_r更新为tRC=(tRAS+tRP);
在执行PRECHARGE操作时,如果对应BANK表项中rp_cnt_r的当前数值小于tRP参数值,则将对应BANK表项中的rp_cnt_r更新为tRP参数值;
在执行读操作、或带有自动PRECHARGE的读操作时,如果对应BANK表项中rp_cnt_r的当前数值小于tRTP+tRP,则将对应BANK表项中的rp_cnt_r更新为tRTP+tRP;
在执行写操作、或带有自动PRECHARGE的写操作时,如果对应BANK表项中rp_cnt_r的当前数值小于DRAM参数中的tWR+tRP,则将对应BANK表项中的rp_cnt_r更新为tWR+tRP。
(6)rp_cnt_ok_r:
在执行ACTIVE操作时设置无效,表示其所属BANK暂时还不可再次执行下一个ACTIVE操作;
rp_cnt_r达到预定值、且其所属BANK正在完成PRECHARGE时置为有效,表示可再次对其所属BANK进行ACTIVE操作。
以上是对本实施例DRAM的控制器的详细说明,下面,再举一实例对其工作原理进一步说明。
假设,Burst长度=4时,设置AL参数使得ACTIVE与读写操作之间无需等待,且具有连续8条类型为Read/a的用户指令:
用户指令A1为对应BANK0的Read/a;
用户指令A2为对应BANK1的Read/a;
用户指令A3为对应BANK2的Read/a;
…… …… ……
用户指令A8为对应BANK7的Read/a;
则实现连续用户指令的具体处理流程如下:
1)、用户指令缓存单元具有当前用户指令A1和下一用户指令A2,同时提供给BANK管理冲突判别单元和DRAM命令生成单元。
2)、BANK管理冲突判别单元根据当前用户指令A1索引其对应BANK0的BANK表项0,在BANK表项0中:
bank_valid_r[BANK0]、即bank_valid_r_cur_bank=2’b00,指示BANK0打开后已被成功PRECHARGE、处于关闭状态;
precharge_cnt_ok_r[BANK0]、即precharge_cnt_ok r_cur_bank=1’b1,指示有效、即可以对BANK0执行PRECHARGE操作;
rp_cnt_ok_r[BANK0]、即rp_cnt_ok_r_cur_bank=1’b1,指示有效、即可以对BANK0进行ACTIVE操作;
同时,BANK管理冲突判别单元根据下一条用户指令A2索引其对应BANK1的BANK表项1,在BANK表项1中:
bank_valid_r[BANK1]、即bank_valid_r_next_bank=2’b00,指示BANK1打开后已被成功PRECHARGE、处于关闭状态;;
precharge_cnt_ok_r[BANK1]、即precharge_cnt_ok_r_next_bank=1’b1,指示有效、即可以对BANK1执行PRECHARGE操作;
rp_cnt_ok_r[BANK1]、即rp_cnt_ok_r_next_bank=1’b1,指示有效、即可以对BANK1进行ACTIVE操作;
此外,BANK管理冲突判别单元根据两条指令A1和A2中的行地址和BANK地址间比较还设置next_bank_same=1’b0、next_row_miss=1’b0,指示下一条用户指令与当前用户指令访问不同BANK,下一条用户指令对应BANK空间无需换行。
3)、根据BANK管理冲突判别单元提供的判别信息,DRAM命令生成单元的控制器状态机中当前用户指令A1对应的变量为:
bank_valid_r_cur_bank=2’b00;
precharge_cnt_ok_r_cur_bank=1’b1;
rp_cnt_ok_r_cur_bank=1’b1;
因而DRAM命令生成单元的控制器状态机先进入ACTIVE状态;DRAM命令生成单元的控制器状态机处于ACTIVE状态时,DRAM命令生成单元的信号产生子单元向DRAM颗粒发ACTIVE命令,打开当前用户指令A1对应BANK0的对应行空间、控制器状态机更新参数定时器组中的相关定时器、信号产生子单元更新BANK表项0中的变量;且,DRAM命令生成单元的控制器状态机在ACTIVE状态时,根据当前用户指令A1、以及tRCD参数定时器产生的定时信号,指示ACTIVE与读写操作之间无需等待,立即判断下一状态为BURST_READ。
4)、DRAM命令生成单元的控制器状态机处于BURST_READ状态时,DRAM命令生成单元的信号产生子单元向DRAM颗粒发READ/a命令;当READ/a命令处理完毕后,信号产生子单元通知用户指令缓存单元当前指令已经处理完成并予以删除、更新当前用户指令A1对应的BANK表项0、并向数据通道单元发送读开始指示信号;
与此同时,DRAM命令生成单元的控制器状态机中下一条用户指令A2对应的变量为:
next_row_miss=1’b0;
next_bank_same=1’b0;
bank_valid_r_next_bank=2’b00;
precharge_ok_cnt_r_next_bank=1’b1;
rp_cnt_ok_r_next_bank=1’b1;
由于下一条用户指令A2为与当前用户指令A1访问不同BANK的READ/a命令、且下一条用户指令A2对应的BANK1处于关闭状态,因而判断下一状态为ACTIVE状态。
5)、用户指令缓存单元根据DRAM命令生成单元提供的当前用户指令A1完成信号、删除当前用户指令A1,从而使下一条用户指令A2变成当前用户指令,新补充一条用户指令A3作为A2的下一条用户指令,并同时提供当前用户指令A2和下一条用户指令A3给BANK管理冲突判别单元和DRAM命令生成单元,并按照与上述方式相同的原理进行处理即可。
由上述处理过程可见,DRAM命令生成单元的控制器状态机在ACTIVE、BURST_READ、ACTIVE、BURST_READ、ACTIVE、BURST_READ、……、ACTIVE、BURST_READ等状态间连续迁移,即便在BURST长度等于4的BANK访问随机性较大的情况下,也能加快状态机的迁移速度,从而提高DRAM命令生成单元的处理性能,进而提高DRAM的读写访问带宽利用率。
下面,再对本实施例DRAM控制器内用户指令处理方法进行详细说明。
图6为本发明实施例中DRAM用户指令处理方法的一种流程示意图。如图6所示,本实施例DRAM的用户指令处理方法中,包括如下步骤:
步骤601,从顺序缓存的至少两条用户指令中,提供最先缓存的当前用户指令、及其下一条用户指令;
步骤602,依据保存的DRAM中各BANK及其对应行的可操作状态,同时对当前用户指令、及其下一条用户指令进行BANK冲突判别,得到当前用户指令及其下一条用户指令的判别信息;
步骤603,依据预设DRAM参数、当前用户指令及其下一条用户指令、以及当前用户指令及其下一条用户指令的判别信息,生成对DRAM颗粒的控制命令和地址信号、更新保存的所述可操作状态、并配合数据传输对当前用户指令进行处理;
步骤604,对当前用户指令处理完成后,删除缓存的当前用户指令,以使缓存下一条用户指令变为当前用户指令、并补入新的用户指令后,返回步骤601。
至此,本流程结束。
在上述步骤602中,保存的各BANK及其对应行的可操作状态,可以通过前述控制器部分如表2所示的BANK表项来实现,且BANK表项中的每一变量、以及得到的判决信息,与前述控制器部分相同,在此不再赘述。
相应地,步骤603中的具体处理过程,可以与前述控制器部分的DRAM命令生成单元所执行的操作过程相同,在此也不再予以赘述。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种动态随机访问存储器DRAM的控制器,包括:用户指令缓存单元、BANK管理冲突判别单元、DRAM命令生成单元、以及数据通道单元,其特征在于,
用户指令缓存单元,顺序缓存有至少两条用户指令,并将最先缓存的当前用户指令、及其下一条用户指令提供给BANK管理冲突判别单元和DRAM命令生成单元;
BANK管理冲突判别单元,内部保存有DRAM中各BANK及其对应行的可操作状态,并依据内部保存的所述可操作状态同时对当前用户指令、及其下一条用户指令进行BANK冲突判别,得到当前用户指令及其下一条用户指令的判别信息;
DRAM命令生成单元,依据预设DRAM参数、当前用户指令及其下一条用户指令、以及当前用户指令及其下一条用户指令的判别信息,生成对DRAM颗粒的控制命令和地址信号、更新BANK管理冲突判别单元中保存的所述可操作状态、并配合数据通道单元对当前用户指令进行处理;对当前用户指令处理完成后,从用户指令缓存单元中删除当前用户指令,以使用户指令缓存单元中的下一条用户指令变为当前用户指令、并补入新的用户指令。
2.如权利要求1所述的控制器,其特征在于,BANK管理冲突判别单元中保存有每一BANK的表项、用以表示该BANK及其对应行的可操作状态,每一BANK的表项中设置有:
BANK有效变量,记录该BANK是否已有一行通过激活ACTIVE操作打开,用于判别该BANK是否需要ACTIVE;
BANK打开行变量,记录该BANK中已经打开行的行地址,用于判别该BANK是否需要预充电PRECHARGE;
PRECHARGE定时器,记录该BANK被PRECHARGE操作之前需等待的时钟周期;
PRECHARGE允许变量,依据PRECHARGE定时器是否计时到达,表示该BANK是否可被PRECHARGE;
ACTIVE定时器,记录该BANK被执行ACTIVE之前需等待的时钟周期;
ACTIVE允许变量,依据ACTIVE定时器是否计时到达,表示该BANK是否可被ACTIVE;
且,当前用户指令的判别信息中包括:当前用户指令对应BANK表项中的BANK有效变量、PRECHARGE允许变量、ACTIVE允许变量、PRECHARGE定时器和ACTIVE定时器产生的定时信号;其下一条用户指令的判别信息中包括:下一条用户指令对应BANK表项中的BANK有效变量、PRECHARGE允许变量、ACTIVE允许变量、PRECHARGE定时器和ACTIVE定时器产生的定时信号。
3.如权利要求2所述的控制器,其特征在于,
BANK有效变量,在执行ACTIVE操作时设置为已打开;在执行PRECHARGE操作、或读写操作、或带有自动PRECHARGE的读写操作时设置为正在PRECHARGE;在ACTIVE定时器计时到达、或执行刷新REFRESH操作时设置为已关闭;
BANK打开行变量,在每次ACTIVE操作时更新;
PRECHARGE定时器,在执行ACTIVE操作时,设置为行有效至行预充电时间tRAS参数值;在执行读操作、或带有自动PRECHARGE的读操作时,如果当前数值小于读预充电时间tRTP参数值,则设置为tRTP参数值;在执行写操作、或带有自动PRECHARGE的写操作时,如果当前数值小于写预充电时间tWR参数值,则设置为tWR参数值;
PRECHARGE允许变量,在执行ACTIVE、读操作、带有自动PRECHARGE的读操作、写操作、或带有自动PRECHARGE的写操作时,设置为无效、用以表示对应BANK不可进行PRECHARGE操作;在PRECHARGE定时器达到预定值时,设置为有效、用以表示对应BANK可再次进行PRECHARGE操作;
ACTIVE定时器,在执行ACTIVE操作时,设置为tRAS参数值与行预充电时间tRP参数值之和;在执行PRECHARGE操作时,如果当前数值小于tRP参数值,则设置为tRP参数值;在执行读操作、或带有自动PRECHARGE的读操作时,如果当前数值小于tRTP参数值与tRP参数值之和,则设置为tRTP参数值与tRP参数值之和;在执行写操作、或带有自动PRECHARGE的写操作时,如果当前数值小于tWR参数值与tRP参数值之和,则设置为tWR参数值与tRP参数值之和;
ACTIVE允许变量,在执行ACTIVE操作时,设置为无效、用以表示对应BANK不可执行下一个ACTIVE操作;在ACTIVE定时器到达预定值、且对应BANK正在进行PRECHARGE操作时,设置为有效、用以表示对应BANK可再次进行ACTIVE操作。
4.如权利要求3所述的控制器,其特征在于,BANK管理冲突判别单元中进一步设置有:
BANK相同变量,表示当前用户指令及其下一条用户指令的对应BANK是否相同的;
以及,行未命中变量,表示下一条用户指令与其对应BANK表项中记录的已打开行地址是否不同;
且,下一条用户指令的判别信息中进一步包括:BANK相同变量、以及行未命中变量。
5.如权利要求1至4中任一项所述的控制器,其特征在于,DRAM命令生成单元包括:
参数定时器组,依据预设DRAM参数产生定时信号;
控制器状态机,依据参数定时器组产生的定时信号、当前用户指令及其下一条用户指令、当前用户指令及其下一条用户指令的判别信息,在各操作状态间切换、并更新参数定时器组;
信号产生子单元,根据控制器状态机的当前操作状态、以及当前用户指令及其下一条用户指令,生成对DRAM颗粒的控制命令和地址信号执行相应的操作、更新当前用户指令对应的BANK表项、并指示数据通道单元进行用户侧和DRAM侧之间的数据读写;对当前用户指令处理完成后,从用户指令缓存单元中删除当前用户指令,以使用户指令缓存单元中的下一条用户指令变为当前用户指令、并补入新的用户指令。
6.一种动态随机访问存储器DRAM的用户指令处理方法,其特征在于,该用户指令处理方法包括:
顺序缓存至少两条用户指令,并提供最先缓存的当前用户指令、及其下一条用户指令;
依据保存的DRAM的各BANK及其对应行的可操作状态,同时对当前用户指令、及其下一条用户指令进行BANK冲突判别,得到当前用户指令及其下一条用户指令的判别信息;
依据预设DRAM参数、当前用户指令及其下一条用户指令、以及当前用户指令及其下一条用户指令的判别信息,生成对DRAM颗粒的控制命令和地址信号、更新保存的所述可操作状态、并配合数据传输对当前用户指令进行处理;
对当前用户指令处理完成后,删除缓存的当前用户指令,以使缓存下一条用户指令变为当前用户指令、并补入新的用户指令。
7.如权利要求6所述的用户指令处理方法,其特征在于,该用户指令处理方法设置有每一BANK的表项、用以表示该BANK及其对应行的可操作状态,每一BANK的表项中设置有:
BANK有效变量,记录该BANK是否已有一行通过激活ACTIVE操作打开,用于判别该BANK是否需要ACTIVE;
BANK打开行变量,记录该BANK中已经打开行的行地址,用于判别该BANK是否需要预充电PRECHARGE;
PRECHARGE定时器,记录该BANK被PRECHARGE操作之前需等待的时钟周期;
PRECHARGE允许变量,依据PRECHARGE定时器是否计时到达,表示该BANK是否可被PRECHARGE;
ACTIVE定时器,记录该BANK被执行ACTIVE之前需等待的时钟周期;
ACTIVE允许变量,依据ACTIVE定时器是否计时到达,表示该BANK是否可被ACTIVE;
且,当前用户指令的判别信息中包括:当前用户指令对应BANK表项中的BANK有效变量、PRECHARGE允许变量、ACTIVE允许变量、PRECHARGE定时器和ACTIVE定时器产生的定时信号;其下一条用户指令的判别信息中包括:下一条用户指令对应BANK表项中的BANK有效变量、PRECHARGE允许变量、ACTIVE允许变量、PRECHARGE定时器和ACTIVE定时器产生的定时信号。
8.如权利要求7所述的用户指令处理方法,其特征在于,
BANK有效变量,在执行ACTIVE操作时设置为已打开;在执行PRECHARGE操作、或读写操作、或带有自动PRECHARGE的读写操作时设置为正在PRECHARGE;在ACTIVE定时器计时到达、或执行刷新REFRESH操作时设置为已关闭;
BANK打开行变量,在每次ACTIVE操作时更新;
PRECHARGE定时器,在执行ACTIVE操作时,设置为行有效至行预充电时间tRAS参数值;在执行读操作、或带有自动PRECHARGE的读操作时,如果当前数值小于读预充电时间tRTP参数值,则设置为tRTP参数值;在执行写操作、或带有自动PRECHARGE的写操作时,如果当前数值小于写预充电时间tWR参数值,则设置为tWR参数值;
PRECHARGE允许变量,在执行ACTIVE、读操作、带有自动PRECHARGE的读操作、写操作、或带有自动PRECHARGE的写操作时,设置为无效、用以表示对应BANK不可进行PRECHARGE操作;在PRECHARGE定时器达到预定值时,设置为有效、用以表示对应BANK可再次进行PRECHARGE操作;
ACTIVE定时器,在执行ACTIVE操作时,设置为tRAS参数值与行预充电时间tRP参数值之和;在执行PRECHARGE操作时,如果当前数值小于tRP参数值,则设置为tRP参数值;在执行读操作、或带有自动PRECHARGE的读操作时,如果当前数值小于tRTP参数值与tRP参数值之和,则设置为tRTP参数值与tRP参数值之和;在执行写操作、或带有自动PRECHARGE的写操作时,如果当前数值小于tWR参数值与tRP参数值之和,则设置为tWR参数值与tRP参数值之和;
ACTIVE允许变量,在执行ACTIVE操作时,设置为无效、用以表示对应BANK不可执行下一个ACTIVE操作;在ACTIVE定时器到达预定值、且对应BANK正在进行PRECHARGE操作时,设置为有效、用以表示对应BANK可再次进行ACTIVE操作。
9.如权利要求8所述的用户指令处理方法,其特征在于,该用户指令处理方法进一步设置有:
BANK相同变量,表示当前用户指令及其下一条用户指令的对应BANK是否相同的;
以及,行未命中变量,表示下一条用户指令与其对应BANK表项中记录的已打开行地址是否不同;
且,下一条用户指令的判别信息中进一步包括:BANK相同变量、以及行未命中变量。
10.如权利要求6至9中任一项所述的用户指令处理方法,其特征在于,所述依据预设DRAM参数、当前用户指令及其下一条用户指令、以及当前用户指令及其下一条用户指令的判别信息生成对DRAM颗粒的控制命令和地址信号包括:
依据预设DRAM参数产生定时信号;
依据参数定时器组产生的定时信号、当前用户指令及其下一条用户指令、当前用户指令及其下一条用户指令的判别信息,控制状态机在各操作状态间切换、并更新参数定时器组;
根据状态机的当前操作状态、以及当前用户指令及其下一条用户指令,生成对DRAM颗粒的控制命令和地址信号执行相应的操作、更新当前用户指令对应的BANK表项、并指示进行用户侧和DRAM侧之间的数据读写;对当前用户指令处理完成后,删除当前用户指令、以使下一条用户指令变为当前用户指令、并补入新的用户指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100911028A CN101625892B (zh) | 2009-08-07 | 2009-08-07 | 动态随机访问存储器的控制器及用户指令处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100911028A CN101625892B (zh) | 2009-08-07 | 2009-08-07 | 动态随机访问存储器的控制器及用户指令处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101625892A CN101625892A (zh) | 2010-01-13 |
CN101625892B true CN101625892B (zh) | 2011-12-21 |
Family
ID=41521695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100911028A Active CN101625892B (zh) | 2009-08-07 | 2009-08-07 | 动态随机访问存储器的控制器及用户指令处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101625892B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096562A (zh) * | 2011-02-12 | 2011-06-15 | 华为技术有限公司 | 数据写入方法及装置 |
US8982649B2 (en) * | 2011-08-12 | 2015-03-17 | Gsi Technology, Inc. | Systems and methods involving multi-bank, dual- or multi-pipe SRAMs |
CN102591814A (zh) * | 2011-12-16 | 2012-07-18 | 中国科学院自动化研究所 | 支持多bank访问模式的dram访问控制装置和控制方法 |
CN102541782A (zh) * | 2011-12-16 | 2012-07-04 | 中国科学院自动化研究所 | Dram访问控制装置与控制方法 |
CN105988951B (zh) * | 2015-02-12 | 2019-10-15 | 瑞昱半导体股份有限公司 | 存储器控制器及相关的控制方法 |
CN106326145A (zh) * | 2015-06-26 | 2017-01-11 | 深圳市中兴微电子技术有限公司 | 一种存储器的控制方法和装置 |
CN110781107B (zh) * | 2019-09-16 | 2021-06-11 | 北京领芯迅飞科技有限公司 | 基于dram接口的低延迟融合io控制方法和装置 |
CN111522753B (zh) * | 2019-12-11 | 2022-12-09 | 中国船舶重工集团公司第七0九研究所 | 一种基于状态机的sdram控制方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1815626A (zh) * | 2005-01-31 | 2006-08-09 | 上海奇码数字信息有限公司 | 存储器存取控制器与存储器存取方法 |
CN101140797A (zh) * | 2007-08-20 | 2008-03-12 | 中兴通讯股份有限公司 | 同步动态存储器的读写方法和读写装置 |
-
2009
- 2009-08-07 CN CN2009100911028A patent/CN101625892B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1815626A (zh) * | 2005-01-31 | 2006-08-09 | 上海奇码数字信息有限公司 | 存储器存取控制器与存储器存取方法 |
CN101140797A (zh) * | 2007-08-20 | 2008-03-12 | 中兴通讯股份有限公司 | 同步动态存储器的读写方法和读写装置 |
Non-Patent Citations (1)
Title |
---|
JP特开2007-12270A 2007.01.18 |
Also Published As
Publication number | Publication date |
---|---|
CN101625892A (zh) | 2010-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101625892B (zh) | 动态随机访问存储器的控制器及用户指令处理方法 | |
KR100764633B1 (ko) | 메모리 제어장치, 데이터 처리시스템 및 반도체장치 | |
US7111143B2 (en) | Burst mode implementation in a memory device | |
CN1707694B (zh) | 用于多线程流水线总线系统的存储控制器 | |
JP2014154119A (ja) | メモリ制御装置及び半導体記憶装置 | |
US20040088472A1 (en) | Multi-mode memory controller | |
US7336551B2 (en) | Semiconductor memory devices and systems, and methods of using having reduced timers and registers | |
CN1788257B (zh) | 用于处理存储器事务的方法和装置 | |
CN102543159A (zh) | 一种ddr控制器及其实现方法和芯片 | |
US20050232060A1 (en) | Memory controller controlling cashed dram | |
US7778103B2 (en) | Semiconductor memory device for independently selecting mode of memory bank and method of controlling thereof | |
US6542958B1 (en) | Software control of DRAM refresh to reduce power consumption in a data processing system | |
EP0471462B1 (en) | Computer memory operating method and system | |
US6990036B2 (en) | Method and apparatus for multiple row caches per bank | |
JPH11353871A (ja) | 半導体装置 | |
JP2001256106A (ja) | メモリアクセスシステム | |
CN102073604B (zh) | 一种同步动态存储器读写控制方法、装置和系统 | |
US20070121398A1 (en) | Memory controller capable of handling precharge-to-precharge restrictions | |
JP2006099199A (ja) | メモリアクセス要求の調停 | |
JP2006107245A (ja) | メモリコントローラ | |
KR20230125706A (ko) | 메모리 장치 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 그것의 동작 방법 | |
KR100427723B1 (ko) | 메모리 서브시스템 | |
JP4936489B2 (ja) | 半導体装置 | |
JP2014093030A (ja) | Sdramコントローラ | |
JP2001282612A (ja) | メモリコントローラ |
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 |
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. |
|
CP03 | Change of name, title or address |