CN116257191A - 存储器的控制器、组件、电子设备及命令调度方法 - Google Patents
存储器的控制器、组件、电子设备及命令调度方法 Download PDFInfo
- Publication number
- CN116257191A CN116257191A CN202310545742.1A CN202310545742A CN116257191A CN 116257191 A CN116257191 A CN 116257191A CN 202310545742 A CN202310545742 A CN 202310545742A CN 116257191 A CN116257191 A CN 116257191A
- Authority
- CN
- China
- Prior art keywords
- command
- access
- queue
- memory
- type
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本公开提供一种存储器的控制器、组件、电子设备及命令调度方法。该控制器包括命令队列、信息维护模块和命令调度模块;命令队列,被配置为对各个访问命令进行缓存;信息维护模块,被配置为维护一个队列信息表,队列信息表中包括命令队列中各个访问命令在命令队列中的存储位置;命令调度模块,被配置为根据队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,以对存储器进行访问。大大缩短了控制器访问存储器的过程中的命令调度延时,提升了控制器芯片的工作频率。
Description
技术领域
本公开涉存储器技术领域,尤其涉及一种存储器的控制器、组件、电子设备及命令调度方法。
背景技术
同步动态随机存储器(Synchronous Dynamic Random Access Memory,SDRAM)、同步图形随机存储器(Synchronous Graphics Random Access Memory,SGRAM)、高带宽存储器(High Bandwidth Memory,HBM)等按存储单元(Bank)进行管理的存储器芯片,目前被广泛应用于片上系统(System on Chip,SoC)芯片、微控制单元 (Microcontroller Unit,MCU)等需要使用存储器芯片的芯片上。一个存储单元(Bank)为一个由行(Row)地址和列(Col)地址构成的二维地址的存储阵列,还可以按存储单元(Bank)地址编号组成的存储单元组(Bank Groups)。
目前现有的存储器的控制器的命令队列中,通常是按照接收命令的先后顺序将队列进行排列,在通过选择器进行命令仲裁时,由于选择器的输入端口数量有限,导致同时参加仲裁的命令数量有限,不能同时对整个队列进行仲裁,使得命令调度所需延时较长,导致控制器芯片的工作频率和存储器的访问效率受限。
发明内容
本公开的目的是提供一种存储器的控制器、组件、电子设备及命令调度方法,解决了现有技术中存储器的命令调度延时较长导致访问效率低的技术问题。
根据本公开的一个方面,提供一种存储器的控制器,控制器包括命令队列、信息维护模块和命令调度模块;
命令队列,被配置为对各个访问命令进行缓存;
信息维护模块,被配置为维护一个队列信息表,队列信息表中至少包括命令队列中各个访问命令在命令队列中的存储位置;
命令调度模块,被配置为根据队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,对存储器进行访问。
在一些实施例中,上述存储器的控制器中,命令调度模块,具体被配置为根据队列信息表中示出的目标访问命令在命令队列中的位置,读取目标访问命令的信息,以对存储器进行访问。
在一些实施例中,上述存储器的控制器中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的访问类型、存储单元地址以及行地址;命令调度模块,具体被配置为:
确定存储器的待访问类型,并判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令;
若有页命中的访问命令,则将页命中且访问类型为待访问类型的任一访问命令确定为目标访问命令,否则,从命令队列中待访问类型的访问命令中选择一访问命令作为目标访问命令。
在一些实施例中,上述存储器的控制器中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的访问类型、存储单元地址、行地址以及强制标志符;其中,一访问命令对应的强制标志符的有效和无效分别指示了该访问命令在命令队列中的缓存时间是否超过预设阈值;
命令调度模块,具体被配置为:
根据队列信息表,判断命令队列中是否有强制标志符为有效的访问命令;
若有强制标志符为有效的访问命令,则将强制标志符为有效的任一访问命令确定为目标访问命令,否则,确定存储器的待访问类型,并判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令;
若有页命中的访问命令,则将页命中且访问类型为待访问类型的任一访问命令确定为目标访问命令,否则,从命令队列中待访问类型的访问命令中选择一访问命令作为目标访问命令。
在一些实施例中,上述存储器的控制器中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的访问类型、存储单元地址、行地址以及强制标志符;其中,一访问命令对应的强制标志符的有效和无效分别指示了该访问命令在命令队列中的缓存时间是否超过预设阈值;
命令调度模块,具体被配置为:
根据队列信息表,判断命令队列中是否有强制标志符为有效的访问命令;
若命令队列中有强制标志符为有效的访问命令,则确定存储器的待访问类型,并判断强制标志符为有效的访问命令中是否有访问类型为待访问类型且页命中的访问命令;若有访问类型为待访问类型且页命中的访问命令,则将强制标志符为有效、访问类型为待访问类型且页命中的任一访问命令确定为目标访问命令,否则,在第一预设时间段内,判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令;
若有页命中的访问命令,则将页命中且访问类型为待访问类型的任一访问命令确定为目标访问命令,否则,判断强制标志符为有效的访问命令中是否有访问类型为待访问类型的访问命令;
若有访问类型为待访问类型的访问命令,则将强制标志符为有效且访问类型为待访问类型的任一访问命令确定为目标访问命令,否则,将强制标志符为有效的任一访问命令确定为目标访问命令;
在第一预设时间段后,将强制标志符为有效的任一访问命令确定为目标访问命令;
若命令队列中没有强制标志符为有效的访问命令,则确定存储器的待访问类型,并判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令;若是,则将页命中且访问类型为待访问类型的任一访问命令确定为目标访问命令,否则,从命令队列中待访问类型的访问命令中选择一访问命令作为目标访问命令。
在一些实施例中,上述存储器的控制器中,信息维护模块,还被配置为:
将命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;针对每种访问类型下每个存储单元地址,统计该访问类型下该存储单元地址对应的各个命令组中命令数最多的一个命令组的命令数,作为该访问类型下该存储单元地址对应的最大命令数;将每种访问类型下每个存储单元地址对应的最大命令数以及该最大命令数对应的命令组在命令队列中的存储位置记录于队列信息表中;
命令调度模块,被配置为从命令队列中待访问类型的访问命令中选择一访问命令作为目标访问命令,包括:命令调度模块,被配置为从队列信息表示出的待访问类型下各个存储单元地址对应的最大命令数中,选择值最大的一最大命令数,并将该最大命令数对应的命令组中的任一访问命令作为目标访问命令。
在一些实施例中,上述存储器的控制器中,一个命令组中的各个访问命令在命令队列中的存储位置是连续的;
一最大命令数对应的命令组在命令队列中的存储位置,为该最大命令数对应的一个命令组的起始存储位置。
在一些实施例中,上述存储器的控制器中,队列信息表中还包括每种访问类型下每个存储单元地址对应的页命中标志符,其中,一访问类型下一存储单元地址对应的页命中标志符的有效和无效分别指示了命令队列中对应该访问类型、该存储单元地址的访问命令中是否有页命中的访问命令;
当一访问类型下一存储单元地址对应的页命中标志符为有效时,队列信息表中还包括命令队列中对应该访问类型、该存储单元地址的页命中的访问命令在命令队列中的存储位置;
命令调度模块,被配置为判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令,包括:
命令调度模块,被配置为根据队列信息表示出的待访问类型下各个存储单元地址对应的页命中标志符,判断命令队列中待访问类型对应的访问命令中是否有页命中的访问命令。
在一些实施例中,上述存储器的控制器中,命令调度模块,还被配置为:
当存储器当前连续进行第一访问类型的访问操作的持续时间超过第一预设时长时,将存储器的待访问类型由当前的第一访问类型切换为第二访问类型,以对命令队列中第二访问类型的访问命令进行仲裁,从中选择目标访问命令;
当存储器当前进行第一访问类型的访问操作,且命令队列中第一访问类型的访问命令的数量为0时,将存储器的待访问类型由当前的第一访问类型切换为第二访问类型,以对命令队列中第二访问类型的访问命令进行仲裁,从中选择目标访问命令;
当当前命令队列结束空置状态且命令队列保持该空置状态的持续时间超过第二预设时长时,将命令队列当前缓存的第一个访问命令的访问类型确定为存储器的待访问类型,以对命令队列中待访问类型的访问命令进行仲裁,从中选择目标访问命令。
在一些实施例中,上述存储器的控制器中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的访问类型、存储单元地址以及行地址;
命令调度模块,具体被配置为:
按照第一预设时长,预测存储器的待访问类型由当前的第一访问类型切换为第二访问类型的切换时刻;
在切换时刻之前的第二预设时间段内,根据队列信息表,判断命令队列中第一访问类型的访问命令中是否有页命中的访问命令;其中,第二预设时间段的时长小于第一预设时长;
若有页命中的访问命令,则将页命中且访问类型为第一访问类型的任一访问命令确定为目标访问命令,否则,对命令队列中第二访问类型的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向存储器发出对应的激活命令或预充电命令;
在切换时刻,将存储器的待访问类型由第一访问类型切换为第二访问类型。
在一些实施例中,上述存储器的控制器中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的访问类型、存储单元地址以及行地址;
命令调度模块,具体被配置为:
当存储器当前连续进行第一访问类型的访问操作的持续时间达到第一预设时长时,在第二预设时间段内,根据队列信息表,判断命令队列中第一访问类型的访问命令中是否有页命中的访问命令;
若有页命中的访问命令,则将页命中且访问类型为第一访问类型的任一访问命令确定为目标访问命令,否则,对命令队列中第二访问类型的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向存储器发出对应的激活命令或预充电命令;
在第二预设时间段之后,将存储器的待访问类型由第一访问类型切换为第二访问类型。
在一些实施例中,上述存储器的控制器中,信息维护模块,还被配置为:
将命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;
队列信息表中还包括命令队列中各个访问命令对应的页命中结束标志符,一个访问命令的页命中结束标志符的有效和无效分别指示了该访问命令是否为其对应的命令组中的最后一个命令;
命令调度模块,被配置为将页命中且访问类型为第一访问类型的任一访问命令确定为目标访问命令,包括:
命令调度模块,还被配置为将页命中且访问类型为第一访问类型的任一访问命令确定为目标访问命令,且在队列信息表中示出的目标访问命令的页命中结束标志符为有效以及命令队列中第二访问类型的访问命令中不存在与目标访问命令对应同一存储单元地址、同一行地址的访问命令时,向目标访问命令访问的对应存储单元的对应行发出对应的预充电命令。
在一些实施例中,上述存储器的控制器中,命令调度模块,被配置为对命令队列中第二访问类型的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向存储器发出对应的激活命令或预充电命令,包括:
命令调度模块,被配置为对命令队列中访问类型为第二访问类型且与存储器中处于激活状态的行对应不同存储单元组地址的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向存储器发出对应的激活命令。
在一些实施例中,上述存储器的控制器中,信息维护模块,还被配置为:
将命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;针对每种访问类型下每个存储单元地址,统计该访问类型下该存储单元地址对应的各个命令组中命令数最多的一个命令组的命令数,作为该访问类型下该存储单元地址对应的最大命令数;将每种访问类型下每个存储单元地址对应的最大命令数以及该最大命令数对应的命令组在命令队列中的存储位置记录于队列信息表中;
命令调度模块,被配置为对命令队列中访问类型为第二访问类型且与存储器中处于激活状态的行对应不同存储单元组地址的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,包括:命令调度模块,被配置为从队列信息表示出的第二访问类型下,与存储器中处于激活状态的行对应的存储单元地址不同的存储单元地址对应的最大命令数中,选择值最大的一最大命令数,并将该最大命令数对应的命令组中的任一访问命令作为目标访问命令。
在一些实施例中,上述存储器的控制器中,存储器包括多个存储单元,每个存储单元包括多个行;
信息维护模块,还被配置为:
将命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;
队列信息表中还包括命令队列中各个访问命令对应的页命中结束标志符,一个访问命令的页命中结束标志符的有效和无效分别指示了该访问命令是否为其对应的命令组中的最后一个命令;
命令调度模块,还被配置为在目标访问命令是页命中的命令且在队列信息表中示出的目标访问命令的页命中结束标志符为有效时,向目标访问命令访问的对应存储单元的对应行发出对应的预充电命令。
在一些实施例中,上述存储器的控制器中,队列信息表中还包括命令队列中各个访问命令对应的时序标志符;
其中,一个访问命令的时序标志符的有效和无效分别指示了该访问命令是否满足当前的时序要求;
命令调度模块,具体被配置为根据队列信息表,对命令队列中时序标志符有效的各个访问命令进行仲裁,以从中选择目标访问命令。
在一些实施例中,上述存储器的控制器中,存储器包括多个存储单元,多个存储单元划分为多个存储单元组,队列信息表中还包括命令队列中各个访问命令对应的存储单元组地址;
命令调度模块,具体被配置为根据队列信息表,对命令队列中分别对应不同存储单元组地址的访问命令进行轮询仲裁,以从中选择目标访问命令,使得连续选择的两个目标访问命令分别对应不同的存储单元组地址。
在一些实施例中,上述存储器的控制器中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的存储单元地址以及行地址;
命令调度模块,具体被配置为在目标访问命令不是页命中的访问命令时,根据队列信息表中示出的目标访问命令对应的存储单元地址、行地址,判断目标访问命令将要访问的对应存储单元中是否有处于激活状态的行;
若是,则向目标访问命令将要访问的对应存储单元中处于激活状态的行发出预充电命令,再向目标访问命令将要访问的对应存储单元中的对应行发出激活命令;
否则,直接向目标访问命令将要访问的对应存储单元中的对应行发出激活命令。
在一些实施例中,上述存储器的控制器中,控制器还包括写控制模块,被配置为在接收到访问命令且命令队列中有存储空位时,将当前接收到的访问命令写入命令队列。
根据本公开的另一方面,提供一种存储器的访问系统,包括上述任一实施例的存储器的控制器。
根据本公开的另一方面,提供一种电子组件,包括上述任一实施例的存储器的访问系统。
根据本公开的另一方面,提供一种电子设备,包括上述任一实施例的电子组件。
根据本公开的另一方面,提供一种存储器的命令调度方法,该方法包括:
根据命令队列的队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,对存储器进行访问;其中,队列信息表中包括命令队列中各个访问命令在命令队列中的存储位置。
在一些实施例中,上述存储器的命令调度方法中,对存储器进行访问,包括以下步骤:
根据队列信息表中示出的目标访问命令在命令队列中的位置,读取目标访问命令的信息,以对存储器进行访问。
在一些实施例中,上述存储器的命令调度方法中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的访问类型、存储单元地址以及行地址;
根据命令队列的队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,包括以下步骤:
确定存储器的待访问类型,并判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令;
若有页命中的访问命令,则将页命中的任一访问命令确定为目标访问命令,否则,从命令队列中待访问类型的访问命令中选择一访问命令作为目标访问命令。
在一些实施例中,上述存储器的命令调度方法中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的访问类型、存储单元地址、行地址以及强制标志符;其中,一访问命令对应的强制标志符的有效和无效分别指示了该访问命令在命令队列中的缓存时间是否超过预设阈值;
根据命令队列的队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,包括以下步骤:
根据队列信息表,判断命令队列中是否有强制标志符为有效的访问命令;
若有强制标志符为有效的访问命令,则将强制标志符为有效的任一访问命令确定为目标访问命令,否则,确定存储器的待访问类型,并判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令;
若有页命中的访问命令,则将页命中的任一访问命令确定为目标访问命令,否则,从命令队列中待访问类型的访问命令中选择一访问命令作为目标访问命令。
在一些实施例中,上述存储器的命令调度方法中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的访问类型、存储单元地址、行地址以及强制标志符;其中,一访问命令对应的强制标志符的有效和无效分别指示了该访问命令在命令队列中的缓存时间是否超过预设阈值;
根据命令队列的队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,包括以下步骤:
根据队列信息表,判断命令队列中是否有强制标志符为有效的访问命令;
若命令队列中有强制标志符为有效的访问命令,则确定存储器的待访问类型,并判断强制标志符为有效的访问命令中是否有访问类型为待访问类型且页命中的访问命令;若有访问类型为待访问类型且页命中的访问命令,则将强制标志符为有效、访问类型为待访问类型且页命中的任一访问命令确定为目标访问命令,否则,在第一预设时间段内,判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令;
若有页命中的访问命令,则将页命中且访问类型为待访问类型的任一访问命令确定为目标访问命令,否则,判断强制标志符为有效的访问命令中是否有访问类型为待访问类型的访问命令;
若有访问类型为待访问类型的访问命令,则将强制标志符为有效且访问类型为待访问类型的任一访问命令确定为目标访问命令,否则,将强制标志符为有效的任一访问命令确定为目标访问命令;
在第一预设时间段后,将强制标志符为有效的任一访问命令确定为目标访问命令;
若命令队列中没有强制标志符为有效的访问命令,则确定存储器的待访问类型,并判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令;若是,则将页命中且访问类型为待访问类型的任一访问命令确定为目标访问命令,否则,从命令队列中待访问类型的访问命令中选择一访问命令作为目标访问命令。
在一些实施例中,上述存储器的命令调度方法中,命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;队列信息表中还包括命令队列中每种访问类型下每个存储单元地址对应的最大命令数以及该最大命令数对应的命令组在命令队列中的存储位置;
其中,一访问类型下一存储单元地址对应的最大命令数为该访问类型下该存储单元地址对应的各个命令组中命令数最多的一个命令组的命令数;
从命令队列中待访问类型的访问命令中选择一访问命令作为目标访问命令,包括以下步骤:
从队列信息表示出的待访问类型下各个存储单元地址对应的最大命令数中,选择值最大的一最大命令数,并将该最大命令数对应的命令组中的任一访问命令作为目标访问命令。
在一些实施例中,上述存储器的命令调度方法中,一个命令组中的各个访问命令在命令队列中的存储位置是连续的;
一最大命令数对应的命令组在命令队列中的存储位置,为该最大命令数对应的一个命令组的起始存储位置。
在一些实施例中,上述存储器的命令调度方法中,队列信息表中还包括每种访问类型下每个存储单元地址对应的页命中标志符,其中,一访问类型下一存储单元地址对应的页命中标志符的有效和无效分别指示了命令队列中对应该访问类型、该存储单元地址的访问命令中是否有页命中的访问命令;
当一访问类型下一存储单元地址对应的页命中标志符为有效时,队列信息表中还包括命令队列中对应该访问类型、该存储单元地址的页命中的访问命令在命令队列中的存储位置;
判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令,包括以下步骤:
根据队列信息表示出的待访问类型下各个存储单元地址对应的页命中标志符,判断命令队列中待访问类型对应的访问命令中是否有页命中的访问命令。
在一些实施例中,上述存储器的命令调度方法中,当存储器当前连续进行第一访问类型的访问操作的持续时间超过第一预设时长时,将存储器的待访问类型由当前的第一访问类型切换为第二访问类型,以对命令队列中第二访问类型的访问命令进行仲裁,从中选择目标访问命令;
当存储器当前进行第一访问类型的访问操作,且命令队列中第一访问类型的访问命令的数量为0时,将存储器的待访问类型由当前的第一访问类型切换为第二访问类型,以对命令队列中第二访问类型的访问命令进行仲裁,从中选择目标访问命令;
当当前命令队列结束空置状态且命令队列保持该空置状态的持续时间超过第二预设时长时,将命令队列当前缓存的第一个访问命令的访问类型确定为存储器的待访问类型,以对命令队列中待访问类型的访问命令进行仲裁,从中选择目标访问命令。
在一些实施例中,上述存储器的命令调度方法中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的访问类型、存储单元地址以及行地址;
根据命令队列的队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,包括以下步骤:
按照第一预设时长,预测存储器的待访问类型由当前的第一访问类型切换为第二访问类型的切换时刻;
在切换时刻之前的第二预设时间段内,根据队列信息表,判断命令队列中第一访问类型的访问命令中是否有页命中的访问命令;其中,第二预设时间段的时长小于第一预设时长;
若有页命中的访问命令,则将页命中且访问类型为第一访问类型的任一访问命令确定为目标访问命令,否则,对命令队列中第二访问类型的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向存储器发出对应的激活命令或预充电命令;
在切换时刻,将存储器的待访问类型由第一访问类型切换为第二访问类型。
在一些实施例中,上述存储器的命令调度方法中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的访问类型、存储单元地址以及行地址;
根据命令队列的队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,包括以下步骤:
当存储器当前连续进行第一访问类型的访问操作的持续时间达到第一预设时长时,在第二预设时间段内,根据队列信息表,判断命令队列中第一访问类型的访问命令中是否有页命中的访问命令;
若有页命中的访问命令,则将页命中且访问类型为第一访问类型的任一访问命令确定为目标访问命令,否则,对命令队列中第二访问类型的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向存储器发出对应的激活命令或预充电命令;
在第二预设时间段之后,将存储器的待访问类型由第一访问类型切换为第二访问类型。
在一些实施例中,上述存储器的命令调度方法中,将命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;
队列信息表中还包括命令队列中各个访问命令对应的页命中结束标志符,一个访问命令的页命中结束标志符的有效和无效分别指示了该访问命令是否为其对应的命令组中的最后一个命令;
将页命中且访问类型为第一访问类型的任一访问命令确定为目标访问命令,包括:
将页命中且访问类型为第一访问类型的任一访问命令确定为目标访问命令,且在队列信息表中示出的目标访问命令的页命中结束标志符为有效以及命令队列中第二访问类型的访问命令中不存在与目标访问命令对应同一存储单元地址、同一行地址的访问命令时,向目标访问命令访问的对应存储单元的对应行发出对应的预充电命令。
在一些实施例中,上述存储器的命令调度方法中,对命令队列中第二访问类型的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向存储器发出对应的激活命令或预充电命令,包括:
对命令队列中访问类型为第二访问类型且与存储器中处于激活状态的行对应不同存储单元组地址的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向存储器发出对应的激活命令。
在一些实施例中,上述存储器的命令调度方法中,信息维护模块,还被配置为:
将命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;针对每种访问类型下每个存储单元地址,统计该访问类型下该存储单元地址对应的各个命令组中命令数最多的一个命令组的命令数,作为该访问类型下该存储单元地址对应的最大命令数;将每种访问类型下每个存储单元地址对应的最大命令数以及该最大命令数对应的命令组在命令队列中的存储位置记录于队列信息表中;
命令调度模块,被配置为对命令队列中访问类型为第二访问类型且与存储器中处于激活状态的行对应不同存储单元组地址的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,包括:命令调度模块,被配置为从队列信息表示出的第二访问类型下,与存储器中处于激活状态的行对应的存储单元地址不同的存储单元地址对应的最大命令数中,选择值最大的一最大命令数,并将该最大命令数对应的命令组中的任一访问命令作为目标访问命令。
在一些实施例中,上述存储器的命令调度方法中,命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;
队列信息表中还包括命令队列中各个访问命令对应的页命中结束标志符,一个访问命令的页命中结束标志符的有效和无效分别指示了该访问命令是否为其对应的命令组中的最后一个命令;
对存储器进行访问,包括以下步骤:
在目标访问命令是页命中的命令时且在队列信息表中示出的目标访问命令的页命中结束标志符为有效时,向目标访问命令访问的对应存储单元的对应行发出对应的预充电命令。
在一些实施例中,上述存储器的命令调度方法中,队列信息表中还包括命令队列中各个访问命令对应的时序标志符;
其中,一个访问命令的时序标志符的有效和无效分别指示了该访问命令是否满足当前的时序要求;
根据队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,包括以下步骤:
根据队列信息表,对命令队列中时序标志符有效的各个访问命令进行仲裁,以从中选择目标访问命令。
在一些实施例中,上述存储器的命令调度方法中,多个存储单元划分为多个存储单元组,队列信息表中包括命令队列中各个访问命令对应的存储单元组地址;
根据队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,包括以下步骤:
根据队列信息表,对命令队列中分别对应不同存储单元组地址的访问命令进行轮询仲裁,以从中选择目标访问命令,使得连续选择的两个目标访问命令分别对应不同的存储单元组地址。
在一些实施例中,上述存储器的命令调度方法中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的存储单元地址以及行地址;
对存储器进行访问,包括以下步骤:
在目标访问命令不是页命中的访问命令时,根据队列信息表中示出的目标访问命令对应的存储单元地址、行地址,判断目标访问命令将要访问的对应存储单元中是否有处于激活状态的行;
若是,则向目标访问命令将要访问的对应存储单元中处于激活状态的行发出预充电命令,再向目标访问命令将要访问的对应存储单元中的对应行发出激活命令;
否则,直接向目标访问命令将要访问的对应存储单元中的对应行发出激活命令。
在一些实施例中,上述存储器的命令调度方法中,还包括:
在接收到访问命令且命令队列中有存储空位时,将当前接收到的访问命令写入命令队列。
附图说明
图1为本公开一个实施例提供的存储器的控制器的结构示意图;
图2为本公开一个实施例提供的存储器的访问系统的结构示意图;
图3为本公开一个实施例提供的存储器的命令调度方法的流程示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
根据访问命令所要访问的存储器的地址的不同,访问命令对存储器进行的访问被分为页命中、页错失和页冲突。页命中指的是当前要访问的行刚好处于激活状态,这样可以直接进行读写访问,不需要额外操作。页错失指的是当前所要访问的存储单元(Bank),没有任何行处于激活状态,需要先发激活命令(Active)来激活所要访问的行,然后再发起对这一行的访问。页冲突指的是当前所要访问的行所在的存储单元(Bank),有除所要访问的行以外的其它行处于激活状态,这样需要发预充电命令(Precharge)把处于激活状态的其它行关闭掉,然后发激活命令激活所要访问的行,然后再发起对所要访问的行的访问。当某一存储单元的某一行被访问之后,一定时间段内不会再被访问时,可以先通过预充电命令(precharge)将这一行关闭。
本公开的目的是提供一种存储器的控制器、组件、电子设备及命令调度方法,该控制器包括命令队列、信息维护模块和命令调度模块;命令队列,被配置为对各个访问命令进行缓存;信息维护模块,被配置为维护一个队列信息表,队列信息表中至少包括命令队列中各个访问命令在命令队列中的存储位置;命令调度模块,被配置为根据队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,对存储器进行访问。
这种方案中,基于队列信息表来对命令队列中的各个访问命令同时进行仲裁,在一定程度上加快访问命令的仲裁速度,可以快速仲裁出最优的访问命令(目标访问命令),大大缩短了控制器访问存储器的过程中的命令调度延时,提升了控制器芯片的工作频率,从而提升了存储器的访问效率。
本公开的一个实施例提供一种存储器的控制器,如图1所示,控制器包括命令队列、信息维护模块和命令调度模块;
命令队列,被配置为对各个访问命令进行缓存;
信息维护模块,被配置为维护一个队列信息表,队列信息表中至少包括命令队列中各个访问命令在命令队列中的存储位置;
命令调度模块,被配置为根据队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令对存储器进行访问。
其中,存储器包括多个存储单元(Bank),每个存储单元(Bank)为包括多行和多列的存储阵列,存储器中的多个存储单元被划分为多个存储单元组(Bank组)。
在一些实施例中,上述存储器包括不限于SDRAM、SGRAM、HBM等存储器,SDRAM包括但不限于双倍速率同步动态随机存储器(Double Data Rate SDRAM,DDR SDRAM)、图形双倍速率同步动态随机存储器(Graphics Double Data Rate Synchronous Dynamic RandomAccess Memory,GDDR SDRAM)和低功耗双倍速率同步动态随机存储器(Low Power DoubleData Rate SDRAM,LPDDR SDRAM)。
而存储器中存储单元(Bank)的数量和存储单元组(Bank group)的划分,是根据存储器的类型对应的规格文档的要求确定的,具体与存储器所遵循的标准协议规范有关。
示例性的,存储器可以有4个存储单元(Bank),这4个存储单元(Bank)会被划分为4个存储单元组(Bank group),一个存储单元组(Bank group)包括一个存储单元(Bank)。
示例性的,存储器可以有16个存储单元(Bank),这16个存储单元(Bank)会被划分为4个存储单元组(Bank group),一个存储单元组(Bank group)包括4个存储单元(Bank)。
在一些实施例中,一访问命令本身的信息中包括访问类型、该访问命令将要访问的存储器的行的地址(即对应的行地址)、列的地址(即列地址),以及将要访问的行和列所在的存储单元的地址(即对应的存储单元地址)。队列信息表中还可以包括命令队列中各个访问命令对应的访问类型、存储单元地址以及行地址,以使得命令调度模块在进行命令仲裁时,可以根据这些信息,选择目标访问命令。除此之外,队列信息表中也可以包括命令队列中各个访问命令对应的列地址。
在一些实施例中,命令调度模块,具体被配置为根据队列信息表中示出的目标访问命令在命令队列中的位置,读取目标访问命令的信息,以对存储器进行访问。
可以理解为,命令调度模块进行命令仲裁时,根据队列信息表就可以实现仲裁,但是访问命令本身的信息中还包括了其它相关信息(如数据大小等),控制器根据这些相关信息,可以更准确地对存储器进行访问,所以在访问存储器之前,根据队列信息表中示出的目标访问命令在命令队列中的位置,在命令队列中找到并读取目标访问命令的相关信息,以对存储器进行访问。
其中,访问命令对应的访问类型指读(R)或写(W),存储单元地址可以用存储单元的序号(Bank ID)表示,行地址可以用行的序号(Row ID)表示,命令队列中的各个存储位置可以用存储位置的序号(Entry ID)表示。
在一些实施例中,控制器还包括写控制模块,被配置为在接收到访问命令且命令队列中有存储空位时,将当前接收到的访问命令写入命令队列。
所以命令队列中各个访问命令的存储规则不限,命令调度模块都可以根据信息维护模块维护的队列信息表,对命令队列中各个访问命令进行仲裁。
在一些实施例中,命令队列可以为先进先出的队列,命令队列中的各个访问命令按照写入时间顺序存储于命令队列中,也可以按照访问命令对应的访问类型选择对应的存储位置,即,读访问命令在命令队列中的存储位置依次相邻,写访问命令在命令队列中的存储位置依次相邻。
示例性的,如表1所示的队列信息表,该命令队列中一共有16个存储位置(0~15)。
表1 命令队列的队列信息表
而上述队列信息表可以理解为命令队列中各个访问命令的索引信息。
在一些实施例中,存储器的控制器包括命令收集模块,被配置为接收上游设备发过来的访问命令,对接收到的访问命令译码之后再转发给写控制模块写入命令队列进行缓存。
在一些实施例中,命令调度模块,具体被配置为,当目标访问命令是页命中的命令时,直接对存储器进行访问;当目标访问命令不是页命中的命令时,根据目标访问命令发出对应的激活命令或预充电命令。
在一些实施例中,命令调度模块,具体被配置为在目标访问命令不是页命中的访问命令时,根据队列信息表中示出的目标访问命令对应的存储单元地址、行地址,判断目标访问命令将要访问的对应存储单元中是否有处于激活状态的行;
若是,则向目标访问命令将要访问的对应存储单元中处于激活状态的行发出预充电命令,再向目标访问命令将要访问的对应存储单元中的对应行发出激活命令;
否则,直接向目标访问命令将要访问的对应存储单元中的对应行发出激活命令。
可以理解为,目标访问命令不是页命中的访问命令时,也即,该目标访问命令所要访问的对应存储单元的对应行处于关闭状态时,命令调度模块不能直接从命令队列中读取该目标访问命令来访问存储器,而是需要向该目标访问命令将要访问的对应存储单元中处于激活状态的其它行发出预充电命令,将处于激活状态的其它行关闭(如果没有处于激活状态的其它行,可不发预充电命令),再对该存储单元中要访问的行发出激活命令,先把这一行激活,这一行激活之后,在命令调度模块之后的命令仲裁过程中,这一行可以作为页命中的访问命令的选择基准。
而上述提及的页命中的命令是指命令队列中与存储器中处于激活状态的行对应同一存储单元地址、同一行地址的访问命令。根据每个访问命令对应的存储单元地址和行地址,基于存储器中处于激活状态的行对应的存储单元地址和行地址,就可以确定每个访问命令是否为页命中的命令。
在一些实施例中,命令调度模块可以根据其发出的预充电命令和激活命令的信息,可以得到存储器中处于激活状态的行对应的存储单元地址和行地址。
在一些实施例中,信息维护模块,还被配置为维护一个激活状态表,其中至少包括了存储器中处于激活状态的行对应的存储单元地址和行地址。命令调度模块可以根据该激活状态表,实时确认存储器中处于激活状态的行对应的存储单元地址和行地址。
在一些实施例中,激活状态表还包括存储器中每个存储单元地址对应的激活状态标志符,该标志符的有效和无效分别指示了对应的存储单元中是否有处于激活状态的行,该标志符有效时,说明激活状态表中给出的该存储单元地址对应的行地址确实为处于激活状态的行的行地址。例如,若存储器中处于激活状态的行对应的存储单元地址和行地址分别为Bank 0和Row 0,那么对应的存储器的激活状态表如表2所示。
表2存储器的激活状态表
在一些实施例中,命令调度模块,具体被配置为(第一种命令调度方案):
确定存储器的待访问类型,并判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令;
若有页命中的访问命令,则该页命中的任一访问命令确定为目标访问命令,否则,从命令队列中待访问类型的访问命令中选择一访问命令作为目标访问命令。
其中,存储器的待访问类型是指存储器接下来的访问类型,该访问类型可能与存储器中处于激活状态的行对应的访问类型相同,也可能与存储器中处于激活状态的行对应的访问类型不同。
需要指出的是,当处于激活状态的行正在进行访问操作(读操作或写操作)时,该处于激活状态的行对应的访问类型为其正在进行的访问操作的访问类型;当处于激活状态的行没有正在进行访问操作时,说明该处于激活状态的行马上会进行访问操作或刚刚结束访问操作,则该处于激活状态的行对应的访问类型为其马上会进行的访问操作或刚刚结束的访问操作的访问类型。
上述命令调度方案可以理解为,由于页命中的访问命令(与存储器中处于激活状态的行对应同一存储单元地址、同一行地址)对存储器进行访问时,所需要的时间开销最小(不需要预充电以关闭对应的存储单元内的其它激活的行,也不需要激活要访问的行),所以,优先选择页命中的访问命令,没有页命中的访问命令时,再选择其它访问命令(非页命中的访问命令)。
例如,若待访问类型为读访问(R),存储器中处于激活状态的行对应的存储单元地址和行地址分别为Bank 0和Row 0,且命令队列的队列信息表如表1所示,命令队列中当前有页命中的读访问命令(存储位置0和1上的读访问命令),则将这两个读访问命令中的任一个确定为目标访问命令;若存储器中处于激活状态的行对应的存储单元地址和行地址分别为Bank 3和Row 0,当前命令队列中当前没有页命中的读访问命令,那么将读访问命令中的任一个确定为目标访问命令。
在一些实施例中,命令调度模块,还被配置为:
a)当存储器当前连续进行第一访问类型的访问操作的持续时间超过第一预设时长时,将存储器的待访问类型由当前的第一访问类型切换为第二访问类型,以对命令队列中第二访问类型的访问命令进行仲裁,从中选择目标访问命令;
b)当存储器当前进行第一访问类型的访问操作,且命令队列中第一访问类型的访问命令的数量为0时,将存储器的待访问类型由当前的第一访问类型切换为第二访问类型,以对命令队列中第二访问类型的访问命令进行仲裁,从中选择目标访问命令;
c)当当前命令队列结束空置状态且命令队列保持该空置状态的持续时间超过第二预设时长时,将命令队列当前缓存的第一个访问命令的访问类型确定为存储器的待访问类型,以对命令队列中待访问类型的访问命令进行仲裁,从中选择目标访问命令。
可以理解为,存储器的待访问类型默认是与存储器当前正在进行的访问操作的访问类型(第一访问类型)相同,避免读写切换频繁,产生额外开销。但是当出现上述三种情况中任一种时,说明这种默认情况不再适用,会根据对应的情况决定待访问类型。
上述情况a)中,当当前连续对存储器进行一访问类型的访问操作的持续时间超过第一预设时长时,说明当前已经连续对存储器进行读访问操作(或写访问操作)达一定时间了,如果继续进行读访问操作(或写访问操作),可能导致写访问命令(或读访问命令)等待时间过长,影响存储器的访问效率,所以接下来需要切换访问类型,即进行读写切换。具体的,可以通过倒计数、累加统计等的形式,一旦达到给定的限值,则进行读写命令的切换,即,从选择读访问命令切换到选择写访问命令,或是从选择写访问命令切换到选择读访问命令。比如采用倒计数的形式,每个时钟周期下都减去设定数量的值(如1,2,3,等等),当限值当达到0或不够减时归0(说明进行一访问类型的访问操作的持续时间超过第一预设时长),需要进行读写切换,切换后,倒计数重置。其中,当第一访问类型为读访问时,第二访问类型为写访问,当第一访问类型为写访问时,第二访问类型为读访问,第一访问类型为读访问或写访问时,对应的第一预设时长可以相同,也可以不同,可以根据实际需求进行设定。
上述情况b)中,当存储器当前进行第一访问类型的访问操作,且命令队列中第一访问类型的访问命令的数量为0时,说明存储器正在进行读访问操作(或写访问操作),但是当前命令队列中的读访问命令(或写访问命令)已经被读完了,所以接下来需要进行写访问操作(或读访问操作)。
上述情况c)中,当命令队列保持该空置状态的持续时间超过第二预设时长时,此时读写状态归零,可能是设备上电初始化的阶段,这时以命令队列当前缓存的第一个访问命令的访问类型作为接下来的待访问类型,以确定初始的访问类型。
而待访问类型可以通过类型标志符来指示,有效和无效分别指示读访问和写访问,或者,无效和有效分别指示读访问和写访问。类型标志符保存在对应的标志寄存器中,其有效和无效,根据上述四种确定方式来进行维护。命令调度模块在进行命令调度时,根据写该标志寄存器中给出的标志符来确定待访问类型。
在一些实施例中,队列信息表中除了包括命令队列中各个访问命令对应的访问类型、存储单元地址、行地址之外,还包括命令队列中各个访问命令对应的强制标志符;
其中,一访问命令对应的强制标志符的有效和无效分别指示了该访问命令在命令队列中的缓存时间是否超过预设阈值;
命令调度模块,具体被配置为(第二种命令调度方案):
根据队列信息表,判断命令队列中是否有强制标志符为有效的访问命令;
若有强制标志符为有效的访问命令,则将强制标志符为有效的任一访问命令确定为目标访问命令,否则,确定存储器的待访问类型,并判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令;
若有页命中的访问命令,则将页命中且访问类型为待访问类型的任一访问命令确定为目标访问命令,否则,从命令队列中待访问类型的访问命令中选择一访问命令作为目标访问命令。
上述命令调度方案可以理解为,为了尽量实现命令队列中的每个访问命令的等待时间(缓存时间)不会超过定值,避免影响上游设备对存储器的访问效率,所以等待时间(缓存时间)超过预设阈值的访问命令的优先级最高,命令调度模块需要优先执行这些访问命令。上述预设阈值可以稍小于上述定值,也即当访问命令的等待时间(缓存时间)达到预设阈值时,说明马上要超过上述定值了,需要在设定时间内将该访问命令执行。
当不存在等待时间(缓存时间)超过预设阈值的访问命令(强制标志符为有效的访问命令)时,再考虑页命中的访问命令(与存储器中处于激活状态的行对应同一存储单元地址、同一行地址的访问命令)。
其中,在表1所示的队列信息表中,加入强制标志符之后,得到的队列信息表如表3所示,N表示无效,Y表示有效。
表3命令队列的队列信息表
根据表3所示的队列信息表,首先确定命令队列的读访问命令中有强制标志符为有效的读访问命令(存储位置4上的读访问命令),那么直接将该读访问命令确定为目标访问命令。
在一些实施例中,在队列信息表中还包括命令队列中各个访问命令对应的强制标志符的场景下,命令调度模块,具体被配置为(第三种命令调度方案):
根据队列信息表,判断命令队列中是否有强制标志符为有效的访问命令;
若命令队列中有强制标志符为有效的访问命令,则确定存储器的待访问类型,并判断强制标志符为有效的访问命令中是否有访问类型为待访问类型且页命中的访问命令;若有访问类型为待访问类型且页命中的访问命令,则将强制标志符为有效、访问类型为待访问类型且页命中的任一访问命令确定为目标访问命令,否则,在第一预设时间段内,判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令;
若有页命中的访问命令,则将页命中且访问类型为待访问类型的任一访问命令确定为目标访问命令,否则,判断强制标志符为有效的访问命令中是否有访问类型为待访问类型的访问命令;
若有访问类型为待访问类型的访问命令,则将强制标志符为有效且访问类型为待访问类型的任一访问命令确定为目标访问命令,否则,将强制标志符为有效的任一访问命令确定为目标访问命令;
在第一预设时间段后,将强制标志符为有效的任一访问命令确定为目标访问命令;
若命令队列中没有强制标志符为有效的访问命令,则确定存储器的待访问类型,并判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令;若是,则将页命中且访问类型为待访问类型的任一访问命令确定为目标访问命令,否则,从命令队列中待访问类型的访问命令中选择一访问命令作为目标访问命令。
上述命令调度方案可以理解为,在队列信息表中还包括命令队列中各个访问命令对应的强制标志符的场景下,由于强制标志符为有效的访问命令所要访问的行很有可能还未激活,这些访问命令不能直接对存储器进行访问,需要先发出激活命令或预充电命令,所以在切换时刻之前的较短时间内(第一预设时间段内),在从命令队列中待访问类型的访问命令中仲裁出页命中的目标访问命令的过程中,若某一时钟周期命令队列中第一访问类型的访问命令中没有页命中的访问命令,此时可以选择强制标志符为有效且访问类型为待访问类型的访问命令,或强制标志符为有效且访问类型不为待访问类型的访问命令作为目标访问命令,从而提前向存储器发出对应的激活命令或预充电命令,提前将强制标志符为有效的访问命令所要访问的行激活,这样,那么强制标志符为有效的访问命令所要访问的行激活后(如第一预设时间段后),该强制标志符为有效的访问命令确定为目标访问命令时,目标访问命令正好为页命中的命令,这样可以缩短存储器的等待时间,进一步提升存储器的访问效率。
在一些实施例中,上述第一种命令调度方案至第三种命令调度方案中,在命令队列中没有页命中访问命令的情况下,为了使得接下来能够出现较多次的页命中,进一步提升存储器的访问效率,所以,信息维护模块,还被配置为:
将命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;针对每种访问类型下每个存储单元地址,统计该访问类型下该存储单元地址对应的各个命令组中命令数最多的一个命令组的命令数,作为该访问类型下该存储单元地址对应的最大命令数;将每种访问类型下每个存储单元地址对应的最大命令数以及该最大命令数对应的命令组在命令队列中的存储位置记录于队列信息表中。
其中,由于上述最大命令数是与每种访问类型下的各个存储单元地址对应的,所以,队列信息表中除了包括如表1所示的用于记录命令队列的每个存储位置的对应信息的信息表(第一信息表,也即记录命令队列中每个访问命令的对应信息的信息表)外,还可以包括用于记录每种访问类型下的各个存储单元地址的对应信息的信息表(第二信息表),如表4和表5分别示出了表1对应的读访问对应的第二信息表和写访问对应的第二信息表。当然,第一信息表和第二信息表可以合为一个队列信息表。
表4 读访问对应的第二信息表
表5 写访问对应的第二信息表
其中,为了便于上述第二信息表的维护,可以同时统计存储器中各个存储单元地址对应的信息,当命令队列中,没有对应某个存储单元地址的访问命令时,第二信息表中,该存储单元地址对应的信息为空即可,也可以为0,为0的话,第二信息表中需要加入每个单元地址对应的存储单元标志符,该标志符的有效和无效分别表示命令队列中有无对应该访问类型该存储单元地址的访问命令。
这时,表5可以更新为如下的表6。
表6 写访问对应的第二信息表
需要说明的是,第二信息表中存储单元地址的排列顺序可以根据实际需求进行设定,此处不做限制。
与上述最大命令数的方案对应的,命令调度模块,被配置为从命令队列中待访问类型的访问命令中选择一访问命令作为目标访问命令,包括:命令调度模块,被配置为从队列信息表示出的待访问类型下各个存储单元地址对应的最大命令数中,选择值最大的一最大命令数,并将该最大命令数对应的命令组中的任一访问命令作为目标访问命令。
也就是说,在每种访问类型下每个存储单元地址对应的最大命令数以及该最大命令数对应的命令组在命令队列中的存储位置记录于队列信息表(第二信息表)中之后,当命令队列中待访问类型的各个访问命令中,既不存在强制标志符为有效的访问命令也不存在页命中时,在选择其它访问命令时,命令调度模块根据这些存储单元地址对应的最大命令数来选择目标访问命令。
且每种访问类型下每个存储单元地址对应的最大命令数以及该最大命令数对应的命令组在命令队列中的存储位置记录于队列信息表(第二信息表)中,命令调度模块在选择其它访问命令时,可以通过该第二信息表,不仅可以快速确定目标访问命令,还可以快速确定目标访问命令在命令队列中的存储位置(即最大命令数对应的命令组在命令队列中的存储位置),直接根据目标访问命令在命令队列中的存储位置,读取该目标访问命令的对应信息,避免了每次都对第一信息表中的每个访问命令对应的信息进行遍历(避免每次都从头开始查找),进一步缩短了命令调度所需的时间,降低了延时需求,提升了存储器的访问效率。
在一些实施例中,一个命令组中的各个访问命令在命令队列中的存储位置是连续的,也即命令队列中对应同一访问类型、同一存储单元地址、同一行地址的各个访问命令在命令队列中的存储位置是连续,对应的,上述提及的一最大命令数对应的命令组在命令队列中的存储位置,为该最大命令数对应的一个命令组的起始存储位置。
也即,当一个命令组中的各个访问命令在命令队列中的存储位置是连续的场景下,在记录命令组在命令队列中的存储位置时,不需要记录命令组中每个访问指令的存储位置,可以记录该命令组的起始存储位置和命令数,这样也能根据记录的存储位置从命令队列中找到该命令组中的各个访问命令。
需要说明的是,若命令队列中的访问命令是从命令队列的队首(存储位置0)开始存储,那么一个命令组的起始存储位置,是指该命令组中各个访问命令的存储位置中的最小一个存储位置。对应的,表4和表5可以更新为如下的表7和表8。
表7 读访问对应的第二信息表
表8 写访问对应的第二信息表
而若命令队列中的访问命令是从命令队列的队尾(存储位置15)开始存储,那么一个命令组的起始存储位置,是指该命令组中各个访问命令的存储位置中的最大一个存储位置。
在一些实施例中,在队列信息表中包括强制标志符的场景下,除了在用于记录命令队列的每个存储位置的对应信息的信息表(第一信息表)中设置强制标志符,还可以在用于记录每种访问类型下的各个存储单元地址的对应信息的信息表中(第二信息表)中设置强制标志符,一访问类型下一存储单元地址的强制标志符的有效和无效,指示了命令队列中对应该访问类型该存储单元地址的访问命令中是否有缓存时间超过预设阈值的访问指令。如表9和表10分别示出了表3对应的读访问对应的第二信息表和写访问对应的第二信息表。
表9读访问对应的第二信息表
表10 写访问对应的第二信息表
这样,命令调度模块在进行命令调度时,根据第二信息表中每种访问类型每个存储单元地址的强制标志符,快速判断出命令队列中是否有缓存时间超过预设阈值的访问指令,若有,根据对应的访问类型和存储单元地址,继续对第一信息表中,该访问类型该存储单元地址对应的各个访问命令的强制标志符进行仲裁,从其中确定缓存时间超过预设阈值的访问指令(强制标志符为有效的访问命令),这种方式大大缩小命令调度模块进行命令仲裁的仲裁范围(参与仲裁的命令数),从而缩短命令调度所需的时间。
在一些实施例中,上述第一种命令调度方案至第三种命令调度方案中,命令调度模块在进行命令调度时,在判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令时,为了进一步缩短命令调度的时间,队列信息表中还包括每种访问类型下每个存储单元地址对应的页命中标志符,其中,一访问类型下一存储单元地址对应的页命中标志符的有效和无效分别指示了命令队列中对应该访问类型、该存储单元地址的访问命令中是否有页命中的访问命令;
当一访问类型下一存储单元地址对应的页命中标志符为有效时,队列信息表中还包括命令队列中对应该访问类型、该存储单元地址的页命中的访问命令在命令队列中的存储位置;
命令调度模块,被配置为判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令,包括:
命令调度模块,被配置为根据队列信息表示出的待访问类型下各个存储单元地址对应的页命中标志符,判断命令队列中待访问类型对应的访问命令中是否有页命中的访问命令。
其中,由于上述页命中标志符为每种访问类型下每个存储单元地址的对应信息,所以上述页命中标志符可以记录在第二信息表中,当一访问类型下一存储单元地址对应的页命中标志符为有效时,页命中的访问命令的存储位置也可以记录在第二信息表中。
可以理解为,信息维护模块会根据存储器中处于激活状态的行对应的存储单元地址和行地址,实时确认命令队列中是否有页命中的访问命令,若是,则将第二信息表存储器中处于激活状态的行对应的存储单元地对应的页命中标志符置为有效,且将页命中的访问命令的存储位置记录下来。一访问类型下一存储单元地址对应的访问命令有多个时,可以记录该多个页命中的访问命令的存储位置,当命令队列中对应同一访问类型、同一存储单元地址、同一行地址的各个访问命令在命令队列中的存储位置是连续的场景下(也即该多个页命中的访问命令的存储位置是连续的),也可以记录连续的多个页命中的访问命令的起始存储位置。
这种场景下,命令调度模块可以通过该第二信息表中的页命中标志符,快速确定待访问类型的访问命令中是否有页命中的命令,若是,则直接根据页命中的访问命令(目标访问命令)在命令队列中的存储位置(即第二信息表中示出的),直接读取该目标访问命令,避免了每次都对第一信息表中的每个访问命令对应的信息进行遍历(避免每次都从头开始查找),进一步缩短了命令调度所需的时间,降低了延时需求,提升了存储器的访问效率。
例如,若存储器中处于激活状态的行对应的存储单元地址和行地址分别为Bank 0和Row 0,那么表1对应的命令队列中,读队列中有页命中的访问命令,起始存储位置为存储位置0,写队列中也存在页命中的访问命令,起始存储位置为存储位置13。如表11和表12分别示出了表1对应的读访问对应的第二信息表和写访问对应的第二信息表。
表11读访问对应的第二信息表
表12 写访问对应的第二信息表
其中,第二信息表中,一访问类型下一存储单元地址对应的页命中标志符为无效时,对应的,其对应的页命中的访问命令的存储位置的对应信息为空或为0。
在一些实施例中,为了进一步缩短存储器进行行切换或存储单元切换所需的延时,信息维护模块,还被配置为:
将命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;
队列信息表中还包括命令队列中各个访问命令对应的页命中结束标志符,一个访问命令的页命中结束标志符的有效和无效分别指示了该访问命令是否为其对应的命令组中的最后一个命令;
命令调度模块,具体被配置为在目标访问命令是页命中的命令,且在队列信息表中示出的该目标访问命令的页命中结束标志符为有效时,向目标访问命令访问的对应存储单元的对应行发出对应的预充电命令。
可以理解为,在队列信息表中示出的目标访问命令的页命中结束标志符为有效时,说明该目标访问命令是其对应的命令组中的最后一个命令,在访问类型不变(不切换)的场景下,在下一次的命令调度过程中,命令队列中该访问类型下不存在页命中的访问命令了,需要进行行切换或存储单元切换,所以此时可以向当前的目标访问命令访问的对应存储单元的对应行发出对应的预充电命令,存储器在接收到预充电命令之后,会在执行完目标访问命令的访问操作之后,执行该预充电命令,以进一步缩短存储器进行行切换或存储单元切换所需的延时。
除此之外,在目标访问命令是页命中的命令,且在队列信息表中示出的该目标访问命令的页命中结束标志符为有效时,命令调度模块可以在向存储器发出目标访问命令的同时附带对应的自动预充电命令(auto precharge命令)。
其中,由于上述页命中结束标志符为命令队列中每个访问命令的对应信息,所以上述页命中结束标志符可以记录在第一信息表中。在表1所示的队列信息表(第一信息表)中,加入位置页命中结束标志符之后,得到的队列信息表如表13所示。
表13 命令队列的队列信息表(第一信息表)
在一些实施例中,在存储器当前连续进行第一访问类型的访问操作的持续时间超过第一预设时长时,将存储器的待访问类型由当前的第一访问类型切换为第二访问类型的场景下,存储器的待访问类型的切换时间是可以预测的(可通过计数器或计时器的方式实现),所以命令调度模块,具体被配置为(第四种命令调度方案):
按照第一预设时长,预测存储器的待访问类型由当前的第一访问类型切换为第二访问类型的切换时刻;
在切换时刻之前的第二预设时间段内,根据队列信息表,判断命令队列中第一访问类型的访问命令中是否有页命中的访问命令;其中,第二预设时间段的时长小于第一预设时长;
若有页命中的访问命令,则将页命中且访问类型为第一访问类型的任一访问命令确定为目标访问命令,否则,对命令队列中第二访问类型的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向存储器发出对应的激活命令或预充电命令;
在切换时刻,将存储器的待访问类型由第一访问类型切换为第二访问类型。
上述命令调度方案可以理解为,在存储器的待访问类型的切换时间是可以预测的场景下,在存储器的待访问类型由当前的第一访问类型切换为第二访问类型之前的较短时间内(第二预设时间段内),由于切换之后(上述切换时刻之后),第二访问类型的访问命令中很有可能没有页命中的命令,这些访问命令不能直接对存储器进行访问,需要先发出激活命令或预充电命令,所以在第二预设时间段内,在从第一访问类型的访问命令中仲裁出页命中的目标访问命令的过程中,若某一时钟周期命令队列中第一访问类型的访问命令中没有页命中的访问命令,此时可以对命令队列中第二访问类型的各个访问命令进行仲裁,以从中选择对应的目标访问命令,从而提前向存储器发出对应的激活命令或预充电命令,且第二预设时间段内,不再从第一访问类型的访问命令中仲裁出非页命中的访问命令。这样在上述切换时刻,存储器的待访问类型由当前的第一访问类型切换为第二访问类型,切换后,第二访问类型的访问命令中正好有页命中的访问命令(对应行已提前激活),其作为目标访问命令可以直接对存储器进行访问,这样也可以缩短存储器的等待时间,进一步提升存储器的访问效率。
在一些实施例中,在存储器当前连续进行第一访问类型的访问操作的持续时间超过第一预设时长时,将存储器的待访问类型由当前的第一访问类型切换为第二访问类型的场景下,所以命令调度模块,具体被配置为(第五种命令调度方案):
当存储器当前连续进行第一访问类型的访问操作的持续时间达到第一预设时长时,在第二预设时间段内,根据队列信息表,判断命令队列中第一访问类型的访问命令中是否有页命中的访问命令;
若有页命中的访问命令,则将页命中且访问类型为第一访问类型的任一访问命令确定为目标访问命令,否则,对命令队列中第二访问类型的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向存储器发出对应的激活命令或预充电命令;
在第二预设时间段之后,将存储器的待访问类型由第一访问类型切换为第二访问类型。
上述命令调度方案可以理解为,在存储器的待访问类型由当前的第一访问类型需要切换为第二访问类型的切换时刻(存储器当前连续进行第一访问类型的访问操作的持续时间达到第一预设时长的时刻)时,不立刻进行切换,而是将切换时刻推迟较短时间(第二预设时间段)。这是由于如果立刻将存储器的待访问类型由当前的第一访问类型切换为第二访问类型,此时,第二访问类型的访问命令中很有可能没有页命中的命令,这些访问命令不能直接对存储器进行访问,需要先发出激活命令或预充电命令,所以上述命令调度方案中可以将切换时刻推迟第二预设时间段,且在第二预设时间段内,继续从第一访问类型的访问命令中仲裁出页命中的目标访问命令,在此过程中,若某一时钟周期命令队列中第一访问类型的访问命令中没有页命中的访问命令,此时可以对命令队列中第二访问类型的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向存储器发出对应的激活命令或预充电命令,且第二预设时间段内,不再从第一访问类型的访问命令中仲裁出非页命中的访问命令。这样在第二预设时间段之后,存储器的待访问类型由当前的第一访问类型切换为第二访问类型后,第二访问类型的访问命令中正好有页命中的访问命令(对应行已提前激活),其作为目标访问命令可以直接对存储器进行访问,这样也可以缩短存储器的等待时间,同样可以进一步提升存储器的访问效率。
在一些实施例中,上述第四种命令调度方案和第五种命令调度方案中,在队列信息表中还包括命令队列中各个访问命令对应的页命中结束标志符的场景下,在第二预设时间段内,根据队列信息表,判断命令队列中第一访问类型的访问命令中是否有页命中的访问命令的过程中,若第一访问类型的访问命令中有页命中的访问命令,将页命中且访问类型为第一访问类型的任一访问命令确定为目标访问命令,且在队列信息表中示出的目标访问命令的页命中结束标志符为有效以及命令队列中第二访问类型的访问命令中不存在与目标访问命令对应同一存储单元地址、同一行地址的访问命令时,向目标访问命令访问的对应存储单元的对应行发出对应的预充电命令。
可以理解为,若将页命中且访问类型为第一访问类型的任一访问命令确定为目标访问命令,且命令队列中第二访问类型的访问命令中存在与目标访问命令对应同一存储单元地址、同一行地址的访问命令时,若该目标访问命令所要访问的存储单元的对应行在第二预设时间段内能保持激活状态,在第二预设时间段后,存储器的待访问类型由第一访问类型切换为第二访问类型时,命令队列中第二访问类型的访问命令中与上述目标访问命令(第一访问类型的页命中访问命令)对应同一存储单元地址、同一行地址的访问命令会变成页命中的命令。因此,在上述第二预设时间段内,当命令队列中第二访问类型的访问命令中存在与上述目标访问命令(第一访问类型的页命中访问命令)对应同一存储单元地址、同一行地址的访问命令时,即使上述目标访问命令的页命中结束标志符有效,也可以不向目标访问命令访问的对应存储单元的对应行发出对应的预充电命令,当队列信息表中示出的上述目标访问命令(第一访问类型的页命中访问命令)的页命中结束标志符为有效以及命令队列中第二访问类型的访问命令中不存在与目标访问命令对应同一存储单元地址、同一行地址的访问命令时,再向目标访问命令访问的对应存储单元的对应行发出对应的预充电命令,这样可以缩短存储器的等待时间,进一步提升存储器的访问效率。
除此之外,在上述第二预设时间段内,当队列信息表中示出的上述目标访问命令(第一访问类型的页命中访问命令)的页命中结束标志符为有效以及命令队列中第二访问类型的访问命令中不存在与目标访问命令对应同一存储单元地址、同一行地址的访问命令时,命令调度模块可以在向存储器发出目标访问命令的同时附带对应的自动预充电命令(auto precharge命令)。
在一些实施例中,上述第四种命令调度方案和第五种命令调度方案中,在第二预设时间段内,当命令队列中第一访问类型的访问命令中没有页命中的访问命令时,命令调度模块,被配置为对命令队列中第二访问类型的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向存储器发出对应的激活命令或预充电命令,包括:
命令调度模块,被配置为对命令队列中访问类型为第二访问类型且与存储器中处于激活状态的行对应不同存储单元组地址的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向存储器发出对应的激活命令。
可以理解为,由于在第二预设时间段内,存储器很有可能还在进行第一访问类型的访问操作,即存储器中处于激活状态的行很有可能正在进行数据传输,如果第二访问类型的各个访问命令仲裁选出的非页命中的目标访问命令正好与存储器中处于激活状态的行对应同一存储单元地址,那么第二访问类型的各个访问命令仲裁选出的非页命中的目标访问命令对应的预充电命令会将对应的存储器中处于激活状态的行关闭,影响数据传输,所以在对第二访问类型的访问命令进行仲裁时,可以选择与存储器中处于激活状态的行对应不同存储单元组地址的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,提前向存储器发出对应的激活命令,以进一步提升存储器的访问效率。
在一些实施例中,上述对命令队列中访问类型为第二访问类型且与存储器中处于激活状态的行对应不同存储单元组地址的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令的场景下,为了在第二预设时间段后,存储器的待访问类型由第一访问类型切换为第二访问类型后,能够出现较多的页命中,在队列信息表中还包括每个存储单元地址对应的最大命令数以及该最大命令数对应的命令组在命令队列中的存储位置的场景下:
上述命令调度模块,被配置为对命令队列中访问类型为第二访问类型且与存储器中处于激活状态的行对应不同存储单元组地址的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,包括:命令调度模块,被配置为从队列信息表示出的第二访问类型下,与存储器中处于激活状态的行对应的存储单元地址不同的存储单元地址对应的最大命令数中,选择值最大的一最大命令数,并将该最大命令数对应的命令组中的任一访问命令作为目标访问命令。
需要说明的是,上述命令调度模块进行命令仲裁时,命令队列中参与仲裁的访问命令均是符合当前的时序要求的,该时序要求是所使用的存储器所遵循的标准协议规范所要求的。一般是指,连续的两个访问命令(连续的两个访问命令是指命令调度模块连续两次从命令队列中仲裁选出的目标访问命令)去访问同一个存储单元组时该两个访问命令之间的时间间隔需大于等于规定的Tccdl,连续的两个访问命令(连续的两个访问命令是指命令调度模块连续两次从命令队列中仲裁选出的目标访问命令)去访问不同存储单元组时该两个访问命令之间的时间间隔需大于等于规定的Tccds。而通常Tccdl是大于Tccds的,可以理解为,命令调度模块连续从命令队列中仲裁选出的两个目标访问命令的最短时间间隔可以为Tccds(短于这个时间的话,命令队列中的访问命令均不符合时序要求)。若命令调度模块当前一次命令仲裁,确定的目标访问命令对应某个存储单元组地址,那么在命令调度模块之后进行命令仲裁时,命令队列中该存储单元组地址对应的访问命令可以参与命令仲裁的时刻会晚于其它存储单元组地址对应的访问命令可以参与命令仲裁的时刻,命令调度模块会先对命令队列中其它存储单元组地址对应的访问命令进行仲裁,从中选择目标访问命令。
例如,在存储器有4个存储单元(Bank),这4个存储单元(Bank)被划分为4个存储单元组(Bank group)的场景下,bank 0为bank group 0,bank 1为bank group 1,bank 2为bank group 2,bank 3为bank group 3。
那么,当命令调度模块当前一次命令仲裁,确定的目标访问命令对应的存储单元组地址为bank group 0,下一次可以选择访问命令时,命令队列中bank group 0(bank 0)对应的访问命令都不满足时序要求,这时需要对命令队列中存储单元组 bank group 0(bank 0)以外的访问命令进行仲裁。
在一些实施例中,队列信息表中还包括命令队列中各个访问命令对应的时序标志符;
其中,一个访问命令的时序标志符的有效和无效分别指示了该访问命令是否满足当前的时序要求;
命令调度模块,具体被配置为根据队列信息表,对命令队列中时序标志符有效的各个访问命令进行仲裁,以从中选择目标访问命令。
其中,命令队列中各个访问命令的时序可以通过控制器中的时序控制模块来监控,时序控制模块可以实时将各个访问命令的时序状态通知给信息维护模块,信息维护模块根据时序控制模块发来的各个访问命令的时序状态,更新队列信息表中的时序标志符。命令调度模块每次进行仲裁,选择目标访问命令之后,也会反馈选择的目标访问命令的信息(存储单元地址和存储单元组地址)给时序控制模块,以及时更新各个访问命令的时序状态。
其中,由于上述页命中结束标志符为命令队列中每个访问命令的对应信息,所以上述时序标志符可以记录在第一信息表中。在表1所示的队列信息表(第一信息表)中,加入位置时序标志符之后,得到的队列信息表如表14所示。表14对应存储器有4个存储单元(Bank),这4个存储单元(Bank)被划分为4个存储单元组(Bank group),且上一时钟周期确定的目标访问指令的存储单元地址为bank0的情形。
表14 命令队列的队列信息表(第一信息表)
另外,时序标志符也可以记录在第二信息表中,这样在确认符合时序要求的访问命令时,避免了每次都对第一信息表中的每个访问命令对应的信息进行遍历,进一步缩短了命令调度所需的时间。
在另一些实施例中,为了实现命令队列中参与仲裁的访问命令均是符合当前的时序要求的目的,队列信息表中包括命令队列中各个访问命令对应的存储单元组地址;
命令调度模块,具体被配置为根据队列信息表,对命令队列中分别对应不同存储单元组地址的访问命令进行轮询仲裁,以从中选择目标访问命令,使得连续选择的两个目标访问命令分别对应不同的存储单元组地址。
可以理解为,为了保证命令调度模块在进行仲裁时,参与仲裁的都是符合时序要求的(也即连续选择的两个目标访问命令分别对应不同的存储单元组地址),所以可以通过对命令队列中分别对应不同存储单元组地址的访问命令进行轮询仲裁的方式,来从中选择目标访问命令。比如,第一次从命令队列中对应bank group 0的访问命令中选择目标访问命令(没有的话,找bank group 1对应的访问命令),第二次从命令队列中对应bank group1的访问命令(没有的话,找bank group 2对应的访问命令)中选择目标访问命令,第三次从命令队列中对应bank group 2的访问命令(没有的话,找bank group3对应的访问命令)中选择目标访问命令,第四次从命令队列中对应bank group 3的访问命令(没有的话,找bankgroup 0对应的访问命令)中选择目标访问命令,以此类推。
但是从对应的存储单元组地址对应的访问命令(满足时序要求的访问命令)中选择目标访问命令时,还是按照前述的命令调度方案,根据存储器中当前处于激活状态的行对应的存储单元地址、行地址,或是强制标志符来进行具体判断,由于一个访问命令对存储器进制的访问所需时间通常为多个时钟周期的,且存储器中某一行的访问操作结束之后,该行在一定时间内仍然可以保持激活状态,所以时序要求和前述的命令调度方案并不冲突,两者是相互配合的关系,具体的命令调度方案,此处不再赘述。
与上述时序标志符类似,存储单元组地址可以记录于第一信息表和/或第二信息表中。
在一些实施例中,命令队列中对应同一访问类型、同一存储单元地址、同一行地址的各个访问命令在命令队列中的存储位置是连续的场景下,命令队列中对应同一访问类型、同一存储单元地址的各个访问命令在命令队列中的存储位置也可以是连续的,对应的,队列信息表中还包括每种访问类型下每个存储单元地址对应的所有访问命令的起始存储位置和命令数,由于每种访问类型下每个存储单元地址对应的所有访问命令的起始存储位置和命令数(即下表中的总命令数),是每种访问类型下每个存储单元地址的对应信息,所以这两个信息可以记录在第二信息表中。如表15和表16分别示出了表1对应的读访问对应的第二信息表和写访问对应的第二信息表。
表15读访问对应的第二信息表
表16 写访问对应的第二信息表
在一些实施中,当队列信息表中同时包括命令队列中各个命令队列对应的访问类型、存储单元地址、行地址以及在命令队列中的存储位置、强制标志符、页命中结束标志符、时序标志符、存储单元组地址、每种访问类型下每个存储单元地址对应的页命中标志符,以及每种访问类型下各个存储单元地址对应的最大命令数以及最大命令数对应的一个命令组在命令队列中的起始存储位置,以及每种访问类型下每个存储单元地址对应的所有访问命令的起始存储位置和命令数的场景下,根据表1对应的队列得到的队列信息表(第一信息表和第二信息表)如表17、表18和表19所示。
表17命令队列的队列信息表(第一信息表)
表18读访问对应的第二信息表
表19写访问对应的第二信息表
信息维护模块对命令队列中每个访问命令的信息(存储位置、行地址、存储单元地址、存储单元组地址、访问类型、缓存时间)进行监控,以对上述队列信息表中的相关信息进行实时更新,同时时序控制模块对各个访问命令的时序进行监控,以通知信息维护模块对上述队列信息表中的时序标志符进行实时更新,信息维护模块还可以对存储器中各个存储单元的各个行的运行状态进行监控,以实时对上述队列信息表中的页命中的相关信息进行更新。
在一些实施例中,为了降低信息维护模块维护队列信息表的时间开销,可以根据存储器的待访问类型,对对应的第二信息表进行更新,当存储器的待访问类型为写访问时,对写访问对应的第二信息表进行更新,读访问对应的第二信息表可以不更新,当存储器的待访问类型为读访问时,对读访问对应的第二信息表进行更新,写访问对应的第二信息表可以不更新。
在上述任一实施例中,任一标志符的有效、无效可以通过1bit的标志位来表示,1为有效,0为无效。
可以理解的是,在上述任一实施例中提及的命令调度模块将满足要求(页命中、访问类型为待访问类型、访问类型为第一访问类型强制符有效或值最大的最大命令数对应的命令组)的任一访问命令(或从中选择一访问命令)作为目标访问命令的场景下,可以从满足条件的访问命令中优先选择存储位置最靠前的访问命令作为目标访问命令,即,命令队列中满足条件的第一个访问命令作为目标访问命令。这种仲裁方式在一定程度上可以进一步缩短命令调度所需的时间。
例如,当一个命令组中的各个访问命令在命令队列中的存储位置是连续的场景下,队列信息表在记录命令组在命令队列中的存储位置时,可以记录该命令组的起始存储位置和命令数的情况下,命令调度模块需要将队列信息表中示出的值最大的最大命令数对应的命令组中的任一访问命令作为目标访问命令时,命令调度模块根据队列信息表中示出的值最大的最大命令数对应的命令组的起始存储位置,可以直接找到该命令组中的第一个访问命令作为目标访问命令,不需要继续往下找该命令组中的其它访问命令。
在一些实施例中,命令队列中的访问命令执行完成后,命令调度模块会将其从命令队列中删除或读走。
在一些实施例中,存储器的控制器还包括数据处理模块和数据发送模块,数据处理模块被配置为接收读访问命令从存储器中读出的数据,并进行跨时钟等处理之后,发送给数据发送模块。
数据发送模块被配置为,将接收到的数据转发给上游设备。
在一些实施例中,存储器的控制器通过DFI(DDR PHY Interface)接口模块与存储器协议连接。
如图2所示,本公开实施例还提供一种存储器的访问系统,包括上游设备、存储器和上述任一实施例的控制器。
上游设备通过控制器连接存储器,以通过控制器访问存储器。
在一些实施例中,上述存储器包括SDRAM、SGRAM、HBM等存储器。
在一些实施例中,上述系统还包括:端口物理层芯片(Physical,PHY),其连接于存储器与控制器之间,被配置为将控制器传输过来的访问命令的数字信号转换为存储器的接口物理信号。
在一些实施例中,控制器与端口物理层之间通过DFI(DDR PHY Interface)协议连接。
在一些使用场景下,存储器的访问系统的产品形式为GPU SOC系统。
基于相同的发明构思,本公开实施例还提供一种电子组件,该电子组件包括上述任一实施例中的存储器的访问系统。在一些使用场景下,该电子组件的产品形式体现为显卡;在另一些使用场景下,该电子组件的产品形式体现为CPU主板。
基于相同的发明构思,本公开实施例还提供一种电子设备,该电子设备包括上述的电子组件。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
基于相同的发明构思,本公开实施例还提供一种存储器的命令调度方法,存储器包括多个存储单元,每个存储单元包括多个行,如图3所示,该方法包括:
步骤S110:根据命令队列的队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,对存储器进行访问;其中,队列信息表中包括命令队列中各个访问命令在命令队列中的存储位置。
在一些实施例中,上述存储器的命令调度方法中,对存储器进行访问,包括以下步骤:
根据队列信息表中示出的目标访问命令在命令队列中的位置,读取目标访问命令的信息,以对存储器进行访问。
在一些实施例中,上述存储器的命令调度方法中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的访问类型、存储单元地址以及行地址;
根据命令队列的队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,包括以下步骤:
确定存储器的待访问类型,并判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令;
若有页命中的访问命令,则将页命中的任一访问命令确定为目标访问命令,否则,从命令队列中待访问类型的访问命令中选择一访问命令作为目标访问命令。
在一些实施例中,上述存储器的命令调度方法中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的访问类型、存储单元地址、行地址以及强制标志符;其中,一访问命令对应的强制标志符的有效和无效分别指示了该访问命令在命令队列中的缓存时间是否超过预设阈值;
根据命令队列的队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,包括以下步骤:
根据队列信息表,判断命令队列中是否有强制标志符为有效的访问命令;
若有强制标志符为有效的访问命令,则将强制标志符为有效的任一访问命令确定为目标访问命令,否则,确定存储器的待访问类型,并判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令;
若有页命中的访问命令,则将页命中的任一访问命令确定为目标访问命令,否则,从命令队列中待访问类型的访问命令中选择一访问命令作为目标访问命令。
在一些实施例中,上述存储器的命令调度方法中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的访问类型、存储单元地址、行地址以及强制标志符;其中,一访问命令对应的强制标志符的有效和无效分别指示了该访问命令在命令队列中的缓存时间是否超过预设阈值;
根据命令队列的队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,包括以下步骤:
根据队列信息表,判断命令队列中是否有强制标志符为有效的访问命令;
若命令队列中有强制标志符为有效的访问命令,则确定存储器的待访问类型,并判断强制标志符为有效的访问命令中是否有访问类型为待访问类型且页命中的访问命令;若有访问类型为待访问类型且页命中的访问命令,则将强制标志符为有效、访问类型为待访问类型且页命中的任一访问命令确定为目标访问命令,否则,在第一预设时间段内,判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令;
若有页命中的访问命令,则将页命中且访问类型为待访问类型的任一访问命令确定为目标访问命令,否则,判断强制标志符为有效的访问命令中是否有访问类型为待访问类型的访问命令;
若有访问类型为待访问类型的访问命令,则将强制标志符为有效且访问类型为待访问类型的任一访问命令确定为目标访问命令,否则,将强制标志符为有效的任一访问命令确定为目标访问命令;
在第一预设时间段后,将强制标志符为有效的任一访问命令确定为目标访问命令;
若命令队列中没有强制标志符为有效的访问命令,则确定存储器的待访问类型,并判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令;若是,则将页命中且访问类型为待访问类型的任一访问命令确定为目标访问命令,否则,从命令队列中待访问类型的访问命令中选择一访问命令作为目标访问命令。
在一些实施例中,上述存储器的命令调度方法中,命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;队列信息表中还包括命令队列中每种访问类型下每个存储单元地址对应的最大命令数以及该最大命令数对应的命令组在命令队列中的存储位置;
其中,一访问类型下一存储单元地址对应的最大命令数为该访问类型下该存储单元地址对应的各个命令组中命令数最多的一个命令组的命令数;
从命令队列中待访问类型的访问命令中选择一访问命令作为目标访问命令,包括以下步骤:
从队列信息表示出的待访问类型下各个存储单元地址对应的最大命令数中,选择值最大的一最大命令数,并将该最大命令数对应的命令组中的任一访问命令作为目标访问命令。
在一些实施例中,上述存储器的命令调度方法中,一个命令组中的各个访问命令在命令队列中的存储位置是连续的;
一最大命令数对应的命令组在命令队列中的存储位置,为该最大命令数对应的一个命令组的起始存储位置。
在一些实施例中,上述存储器的命令调度方法中,队列信息表中还包括每种访问类型下每个存储单元地址对应的页命中标志符,其中,一访问类型下一存储单元地址对应的页命中标志符的有效和无效分别指示了命令队列中对应该访问类型、该存储单元地址的访问命令中是否有页命中的访问命令;
当一访问类型下一存储单元地址对应的页命中标志符为有效时,队列信息表中还包括命令队列中对应该访问类型、该存储单元地址的页命中的访问命令在命令队列中的存储位置;
判断命令队列中待访问类型的访问命令中,是否有页命中的访问命令,包括以下步骤:
根据队列信息表示出的待访问类型下各个存储单元地址对应的页命中标志符,判断命令队列中待访问类型对应的访问命令中是否有页命中的访问命令。
在一些实施例中,上述存储器的命令调度方法中,当存储器当前连续进行第一访问类型的访问操作的持续时间超过第一预设时长时,将存储器的待访问类型由当前的第一访问类型切换为第二访问类型,以对命令队列中第二访问类型的访问命令进行仲裁,从中选择目标访问命令;
当存储器当前进行第一访问类型的访问操作,且命令队列中第一访问类型的访问命令的数量为0时,将存储器的待访问类型由当前的第一访问类型切换为第二访问类型,以对命令队列中第二访问类型的访问命令进行仲裁,从中选择目标访问命令;
当当前命令队列结束空置状态且命令队列保持该空置状态的持续时间超过第二预设时长时,将命令队列当前缓存的第一个访问命令的访问类型确定为存储器的待访问类型,以对命令队列中待访问类型的访问命令进行仲裁,从中选择目标访问命令。
在一些实施例中,上述存储器的命令调度方法中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的访问类型、存储单元地址以及行地址;
根据命令队列的队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,包括以下步骤:
按照第一预设时长,预测存储器的待访问类型由当前的第一访问类型切换为第二访问类型的切换时刻;
在切换时刻之前的第二预设时间段内,根据队列信息表,判断命令队列中第一访问类型的访问命令中是否有页命中的访问命令;其中,第二预设时间段的时长小于第一预设时长;
若有页命中的访问命令,则将页命中且访问类型为第一访问类型的任一访问命令确定为目标访问命令,否则,对命令队列中第二访问类型的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向存储器发出对应的激活命令或预充电命令;
在切换时刻,将存储器的待访问类型由第一访问类型切换为第二访问类型。
在一些实施例中,上述存储器的命令调度方法中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的访问类型、存储单元地址以及行地址;
根据命令队列的队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,包括以下步骤:
当存储器当前连续进行第一访问类型的访问操作的持续时间达到第一预设时长时,在第二预设时间段内,根据队列信息表,判断命令队列中第一访问类型的访问命令中是否有页命中的访问命令;
若有页命中的访问命令,则将页命中且访问类型为第一访问类型的任一访问命令确定为目标访问命令,否则,对命令队列中第二访问类型的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向存储器发出对应的激活命令或预充电命令;
在第二预设时间段之后,将存储器的待访问类型由第一访问类型切换为第二访问类型。
在一些实施例中,上述存储器的命令调度方法中,将命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;
队列信息表中还包括命令队列中各个访问命令对应的页命中结束标志符,一个访问命令的页命中结束标志符的有效和无效分别指示了该访问命令是否为其对应的命令组中的最后一个命令;
将页命中且访问类型为第一访问类型的任一访问命令确定为目标访问命令,包括:
将页命中且访问类型为第一访问类型的任一访问命令确定为目标访问命令,且在队列信息表中示出的目标访问命令的页命中结束标志符为有效以及命令队列中第二访问类型的访问命令中不存在与目标访问命令对应同一存储单元地址、同一行地址的访问命令时,向目标访问命令访问的对应存储单元的对应行发出对应的预充电命令。
在一些实施例中,上述存储器的命令调度方法中,对命令队列中第二访问类型的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向存储器发出对应的激活命令或预充电命令,包括:
对命令队列中访问类型为第二访问类型且与存储器中处于激活状态的行对应不同存储单元组地址的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向存储器发出对应的激活命令。
在一些实施例中,上述存储器的命令调度方法中,信息维护模块,还被配置为:
将命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;针对每种访问类型下每个存储单元地址,统计该访问类型下该存储单元地址对应的各个命令组中命令数最多的一个命令组的命令数,作为该访问类型下该存储单元地址对应的最大命令数;将每种访问类型下每个存储单元地址对应的最大命令数以及该最大命令数对应的命令组在命令队列中的存储位置记录于队列信息表中;
命令调度模块,被配置为对命令队列中访问类型为第二访问类型且与存储器中处于激活状态的行对应不同存储单元组地址的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,包括:命令调度模块,被配置为从队列信息表示出的第二访问类型下,与存储器中处于激活状态的行对应的存储单元地址不同的存储单元地址对应的最大命令数中,选择值最大的一最大命令数,并将该最大命令数对应的命令组中的任一访问命令作为目标访问命令。
在一些实施例中,上述存储器的命令调度方法中,命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;
队列信息表中还包括命令队列中各个访问命令对应的页命中结束标志符,一个访问命令的页命中结束标志符的有效和无效分别指示了该访问命令是否为其对应的命令组中的最后一个命令;
对存储器进行访问,包括以下步骤:
在目标访问命令是页命中的命令时且在队列信息表中示出的目标访问命令的页命中结束标志符为有效时,向目标访问命令访问的对应存储单元的对应行发出对应的预充电命令。
在一些实施例中,上述存储器的命令调度方法中,队列信息表中还包括命令队列中各个访问命令对应的时序标志符;
其中,一个访问命令的时序标志符的有效和无效分别指示了该访问命令是否满足当前的时序要求;
根据队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,包括以下步骤:
根据队列信息表,对命令队列中时序标志符有效的各个访问命令进行仲裁,以从中选择目标访问命令。
在一些实施例中,上述存储器的命令调度方法中,多个存储单元划分为多个存储单元组,队列信息表中包括命令队列中各个访问命令对应的存储单元组地址;
根据队列信息表,对命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,包括以下步骤:
根据队列信息表,对命令队列中分别对应不同存储单元组地址的访问命令进行轮询仲裁,以从中选择目标访问命令,使得连续选择的两个目标访问命令分别对应不同的存储单元组地址。
在一些实施例中,上述存储器的命令调度方法中,存储器包括多个存储单元,每个存储单元包括多个行;队列信息表中还包括命令队列中各个访问命令对应的存储单元地址以及行地址;
对存储器进行访问,包括以下步骤:
在目标访问命令不是页命中的访问命令时,根据队列信息表中示出的目标访问命令对应的存储单元地址、行地址,判断目标访问命令将要访问的对应存储单元中是否有处于激活状态的行;
若是,则向目标访问命令将要访问的对应存储单元中处于激活状态的行发出预充电命令,再向目标访问命令将要访问的对应存储单元中的对应行发出激活命令;
否则,直接向目标访问命令将要访问的对应存储单元中的对应行发出激活命令。
在一些实施例中,上述存储器的命令调度方法中,还包括:
在接收到访问命令且命令队列中有存储空位时,将当前接收到的访问命令写入命令队列。
上述存储器的命令调度方法的具体实施过程可参见上述存储器的控制器的任一实施例,此处不再赘述。
Claims (23)
1.一种存储器的控制器,所述控制器包括命令队列、信息维护模块和命令调度模块;
所述命令队列,被配置为对各个访问命令进行缓存;
所述信息维护模块,被配置为维护一个队列信息表,所述队列信息表中至少包括所述命令队列中各个访问命令在所述命令队列中的存储位置;
所述命令调度模块,被配置为根据所述队列信息表,对所述命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,对所述存储器进行访问。
2.根据权利要求1所述的存储器的控制器,所述命令调度模块,具体被配置为根据所述队列信息表中示出的所述目标访问命令在所述命令队列中的位置,读取所述目标访问命令的信息,以对所述存储器进行访问。
3.根据权利要求1所述的存储器的控制器,所述存储器包括多个存储单元,每个存储单元包括多个行;所述队列信息表中还包括所述命令队列中各个访问命令对应的访问类型、存储单元地址以及行地址;所述命令调度模块,具体被配置为:
确定所述存储器的待访问类型,并判断所述命令队列中所述待访问类型的访问命令中,是否有页命中的访问命令;
若有页命中的访问命令,则将页命中且访问类型为所述待访问类型的任一访问命令确定为目标访问命令,否则,从所述命令队列中所述待访问类型的访问命令中选择一访问命令作为目标访问命令。
4.根据权利要求1所述的存储器的控制器,所述存储器包括多个存储单元,每个存储单元包括多个行;所述队列信息表中还包括所述命令队列中各个访问命令对应的访问类型、存储单元地址、行地址以及强制标志符;其中,一访问命令对应的强制标志符的有效和无效分别指示了该访问命令在所述命令队列中的缓存时间是否超过预设阈值;
所述命令调度模块,具体被配置为:
根据所述队列信息表,判断所述命令队列中是否有强制标志符为有效的访问命令;
若有强制标志符为有效的访问命令,则将强制标志符为有效的任一访问命令确定为目标访问命令,否则,确定所述存储器的待访问类型,并判断所述命令队列中所述待访问类型的访问命令中,是否有页命中的访问命令;
若有页命中的访问命令,则将页命中且访问类型为所述待访问类型的任一访问命令确定为目标访问命令,否则,从所述命令队列中所述待访问类型的访问命令中选择一访问命令作为目标访问命令。
5.根据权利要求1所述的存储器的控制器,所述存储器包括多个存储单元,每个存储单元包括多个行;所述队列信息表中还包括所述命令队列中各个访问命令对应的访问类型、存储单元地址、行地址以及强制标志符;其中,一访问命令对应的强制标志符的有效和无效分别指示了该访问命令在所述命令队列中的缓存时间是否超过预设阈值;
所述命令调度模块,具体被配置为:
根据所述队列信息表,判断所述命令队列中是否有强制标志符为有效的访问命令;
若所述命令队列中有强制标志符为有效的访问命令,则确定所述存储器的待访问类型,并判断强制标志符为有效的访问命令中是否有访问类型为所述待访问类型且页命中的访问命令;若有访问类型为所述待访问类型且页命中的访问命令,则将强制标志符为有效、访问类型为所述待访问类型且页命中的任一访问命令确定为目标访问命令,否则,在第一预设时间段内,判断所述命令队列中所述待访问类型的访问命令中,是否有页命中的访问命令;
若有页命中的访问命令,则将页命中且访问类型为所述待访问类型的任一访问命令确定为目标访问命令,否则,判断强制标志符为有效的访问命令中是否有访问类型为所述待访问类型的访问命令;
若有访问类型为所述待访问类型的访问命令,则将强制标志符为有效且访问类型为所述待访问类型的任一访问命令确定为目标访问命令,否则,将强制标志符为有效的任一访问命令确定为目标访问命令;
在所述第一预设时间段后,将强制标志符为有效的任一访问命令确定为目标访问命令;
若所述命令队列中没有强制标志符为有效的访问命令,则确定所述存储器的待访问类型,并判断所述命令队列中所述待访问类型的访问命令中,是否有页命中的访问命令;若是,则将页命中且访问类型为所述待访问类型的任一访问命令确定为目标访问命令,否则,从所述命令队列中所述待访问类型的访问命令中选择一访问命令作为目标访问命令。
6.根据权利要求3至5中任意一项所述的存储器的控制器,所述信息维护模块,还被配置为:
将所述命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;针对每种访问类型下每个存储单元地址,统计该访问类型下该存储单元地址对应的各个命令组中命令数最多的一个命令组的命令数,作为该访问类型下该存储单元地址对应的最大命令数;将每种访问类型下每个存储单元地址对应的最大命令数以及该最大命令数对应的命令组在所述命令队列中的存储位置记录于所述队列信息表中;
所述命令调度模块,被配置为从所述命令队列中所述待访问类型的访问命令中选择一访问命令作为目标访问命令,包括:所述命令调度模块,被配置为从所述队列信息表示出的所述待访问类型下各个存储单元地址对应的最大命令数中,选择值最大的一最大命令数,并将该最大命令数对应的命令组中的任一访问命令作为目标访问命令。
7.根据权利要求6所述的存储器的控制器,一个命令组中的各个访问命令在所述命令队列中的存储位置是连续的;
一最大命令数对应的命令组在所述命令队列中的存储位置,为该最大命令数对应的一个命令组的起始存储位置。
8.根据权利要求3至5中任意一项所述的存储器的控制器,所述队列信息表中还包括每种访问类型下每个存储单元地址对应的页命中标志符,其中,一访问类型下一存储单元地址对应的页命中标志符的有效和无效分别指示了所述命令队列中对应该访问类型、该存储单元地址的访问命令中是否有页命中的访问命令;
当一访问类型下一存储单元地址对应的页命中标志符为有效时,所述队列信息表中还包括所述命令队列中对应该访问类型、该存储单元地址的页命中的访问命令在所述命令队列中的存储位置;
所述命令调度模块,被配置为判断所述命令队列中所述待访问类型的访问命令中,是否有页命中的访问命令,包括:
所述命令调度模块,被配置为根据所述队列信息表示出的所述待访问类型下各个存储单元地址对应的页命中标志符,判断所述命令队列中所述待访问类型对应的访问命令中是否有页命中的访问命令。
9.根据权利要求1所述的存储器的控制器,所述命令调度模块,还被配置为:
当所述存储器当前连续进行第一访问类型的访问操作的持续时间超过第一预设时长时,将所述存储器的待访问类型由当前的所述第一访问类型切换为第二访问类型,以对所述命令队列中所述第二访问类型的访问命令进行仲裁,从中选择目标访问命令;
当所述存储器当前进行第一访问类型的访问操作,且所述命令队列中所述第一访问类型的访问命令的数量为0时,将所述存储器的待访问类型由当前的所述第一访问类型切换为第二访问类型,以对所述命令队列中所述第二访问类型的访问命令进行仲裁,从中选择目标访问命令;
当当前所述命令队列结束空置状态且所述命令队列保持该空置状态的持续时间超过第二预设时长时,将所述命令队列当前缓存的第一个访问命令的访问类型确定为所述存储器的待访问类型,以对所述命令队列中所述待访问类型的访问命令进行仲裁,从中选择目标访问命令。
10.根据权利要求9所述的存储器的控制器,所述存储器包括多个存储单元,每个存储单元包括多个行;所述队列信息表中还包括所述命令队列中各个访问命令对应的访问类型、存储单元地址以及行地址;
所述命令调度模块,具体被配置为:
按照所述第一预设时长,预测所述存储器的所述待访问类型由当前的所述第一访问类型切换为所述第二访问类型的切换时刻;
在所述切换时刻之前的第二预设时间段内,根据所述队列信息表,判断所述命令队列中所述第一访问类型的访问命令中是否有页命中的访问命令;其中,所述第二预设时间段的时长小于所述第一预设时长;
若有页命中的访问命令,则将页命中且访问类型为所述第一访问类型的任一访问命令确定为目标访问命令,否则,对所述命令队列中所述第二访问类型的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向所述存储器发出对应的激活命令或预充电命令;
在所述切换时刻,将所述存储器的待访问类型由所述第一访问类型切换为所述第二访问类型。
11.根据权利要求9所述的存储器的控制器,所述存储器包括多个存储单元,每个存储单元包括多个行;所述队列信息表中还包括所述命令队列中各个访问命令对应的访问类型、存储单元地址以及行地址;
所述命令调度模块,具体被配置为:
当所述存储器当前连续进行第一访问类型的访问操作的持续时间达到所述第一预设时长时,在第二预设时间段内,根据所述队列信息表,判断所述命令队列中所述第一访问类型的访问命令中是否有页命中的访问命令;
若有页命中的访问命令,则将页命中且访问类型为所述第一访问类型的任一访问命令确定为目标访问命令,否则,对所述命令队列中所述第二访问类型的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向所述存储器发出对应的激活命令或预充电命令;
在所述第二预设时间段之后,将所述存储器的待访问类型由所述第一访问类型切换为所述第二访问类型。
12.根据权利要求10或11所述的存储器的控制器,所述信息维护模块,还被配置为:
将所述命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;
所述队列信息表中还包括所述命令队列中各个访问命令对应的页命中结束标志符,一个访问命令的页命中结束标志符的有效和无效分别指示了该访问命令是否为其对应的命令组中的最后一个命令;
所述命令调度模块,被配置为将页命中且访问类型为所述第一访问类型的任一访问命令确定为目标访问命令,包括:
所述命令调度模块,还被配置为将页命中且访问类型为所述第一访问类型的任一访问命令确定为目标访问命令,且在所述队列信息表中示出的所述目标访问命令的页命中结束标志符为有效以及所述命令队列中所述第二访问类型的访问命令中不存在与所述目标访问命令对应同一存储单元地址、同一行地址的访问命令时,向所述目标访问命令访问的对应存储单元的对应行发出对应的预充电命令。
13.根据权利要求10或11所述的存储器的控制器,所述命令调度模块,被配置为对所述命令队列中所述第二访问类型的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向所述存储器发出对应的激活命令或预充电命令,包括:
所述命令调度模块,被配置为对所述命令队列中访问类型为所述第二访问类型且与所述存储器中处于激活状态的行对应不同存储单元组地址的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,从而提前向所述存储器发出对应的激活命令。
14.根据权利要求13所述的存储器的控制器,所述信息维护模块,还被配置为:
将所述命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;针对每种访问类型下每个存储单元地址,统计该访问类型下该存储单元地址对应的各个命令组中命令数最多的一个命令组的命令数,作为该访问类型下该存储单元地址对应的最大命令数;将每种访问类型下每个存储单元地址对应的最大命令数以及该最大命令数对应的命令组在所述命令队列中的存储位置记录于所述队列信息表中;
所述命令调度模块,被配置为对所述命令队列中访问类型为所述第二访问类型且与所述存储器中处于激活状态的行对应不同存储单元组地址的各个访问命令进行仲裁,以从中选择非页命中的目标访问命令,包括:所述命令调度模块,被配置为从所述队列信息表示出的所述第二访问类型下,与所述存储器中处于激活状态的行对应的存储单元地址不同的存储单元地址对应的最大命令数中,选择值最大的一最大命令数,并将该最大命令数对应的命令组中的任一访问命令作为目标访问命令。
15.根据权利要求1所述的存储器的控制器,所述存储器包括多个存储单元,每个存储单元包括多个行;
所述信息维护模块,还被配置为:
将所述命令队列中对应同一访问类型、同一存储单元地址和同一行地址的访问命令划分为一个命令组;
所述队列信息表中还包括所述命令队列中各个访问命令对应的页命中结束标志符,一个访问命令的页命中结束标志符的有效和无效分别指示了该访问命令是否为其对应的命令组中的最后一个命令;
所述命令调度模块,具体被配置为在所述目标访问命令是页命中的命令且在所述队列信息表中示出的所述目标访问命令的页命中结束标志符为有效时,向所述目标访问命令访问的对应存储单元的对应行发出对应的预充电命令。
16.根据权利要求1所述的存储器的控制器,所述队列信息表中还包括所述命令队列中各个访问命令对应的时序标志符;
其中,一个访问命令的时序标志符的有效和无效分别指示了该访问命令是否满足当前的时序要求;
所述命令调度模块,具体被配置为根据所述队列信息表,对所述命令队列中时序标志符有效的各个访问命令进行仲裁,以从中选择目标访问命令。
17.根据权利要求1所述的存储器的控制器,所述存储器包括多个存储单元,所述多个存储单元划分为多个存储单元组,所述队列信息表中还包括所述命令队列中各个访问命令对应的存储单元组地址;
所述命令调度模块,具体被配置为根据所述队列信息表,对所述命令队列中分别对应不同存储单元组地址的访问命令进行轮询仲裁,以从中选择目标访问命令,使得连续选择的两个目标访问命令分别对应不同的存储单元组地址。
18.根据权利要求1所述的存储器的控制器,所述存储器包括多个存储单元,每个存储单元包括多个行;所述队列信息表中还包括所述命令队列中各个访问命令对应的存储单元地址以及行地址;
所述命令调度模块,具体被配置为在所述目标访问命令不是页命中的访问命令时,根据所述队列信息表中示出的所述目标访问命令对应的存储单元地址、行地址,判断所述目标访问命令将要访问的对应存储单元中是否有处于激活状态的行;
若是,则向所述目标访问命令将要访问的对应存储单元中处于激活状态的行发出预充电命令,再向所述目标访问命令将要访问的对应存储单元中的对应行发出激活命令;
否则,直接向所述目标访问命令将要访问的对应存储单元中的对应行发出激活命令。
19.根据权利要求1所述的存储器的控制器,所述控制器还包括写控制模块,被配置为在接收到访问命令且所述命令队列中有存储空位时,将当前接收到的访问命令写入所述命令队列。
20.一种存储器的访问系统,包括如权利要求1至19中任意一项所述的存储器的控制器。
21.一种电子组件,包括如权利要求20中所述的存储器的访问系统。
22.一种电子设备,包括如权利要求21中所述的电子组件。
23.一种存储器的命令调度方法,包括:
根据命令队列的队列信息表,对所述命令队列中各个访问命令进行仲裁,以从中选择目标访问命令,对所述存储器进行访问;
其中,所述队列信息表中包括所述命令队列中各个访问命令在所述命令队列中的存储位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310545742.1A CN116257191B (zh) | 2023-05-16 | 2023-05-16 | 存储器的控制器、组件、电子设备及命令调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310545742.1A CN116257191B (zh) | 2023-05-16 | 2023-05-16 | 存储器的控制器、组件、电子设备及命令调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116257191A true CN116257191A (zh) | 2023-06-13 |
CN116257191B CN116257191B (zh) | 2023-10-20 |
Family
ID=86682934
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310545742.1A Active CN116257191B (zh) | 2023-05-16 | 2023-05-16 | 存储器的控制器、组件、电子设备及命令调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116257191B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116719479A (zh) * | 2023-07-03 | 2023-09-08 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1713163A (zh) * | 2004-06-24 | 2005-12-28 | 三星电子株式会社 | 用于调度命令的存储器控制设备及方法 |
CN103593306A (zh) * | 2013-11-15 | 2014-02-19 | 浪潮电子信息产业股份有限公司 | 一种协议处理器Cache控制单元的设计方法 |
CN109564556A (zh) * | 2016-07-15 | 2019-04-02 | 超威半导体公司 | 具有条纹和读取/写入事务管理的存储器控制器仲裁器 |
CN109690508A (zh) * | 2016-07-15 | 2019-04-26 | 超威半导体公司 | 带虚拟控制器模式的存储器控制器 |
CN110825318A (zh) * | 2018-08-14 | 2020-02-21 | 爱思开海力士有限公司 | 控制器及其操作方法 |
CN115048142A (zh) * | 2022-03-22 | 2022-09-13 | 深圳云豹智能有限公司 | 缓存访问命令处理系统、方法、装置、设备和存储介质 |
US20220413759A1 (en) * | 2021-06-24 | 2022-12-29 | Advanced Micro Devices, Inc. | Efficient rank switching in multi-rank memory controller |
-
2023
- 2023-05-16 CN CN202310545742.1A patent/CN116257191B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1713163A (zh) * | 2004-06-24 | 2005-12-28 | 三星电子株式会社 | 用于调度命令的存储器控制设备及方法 |
CN103593306A (zh) * | 2013-11-15 | 2014-02-19 | 浪潮电子信息产业股份有限公司 | 一种协议处理器Cache控制单元的设计方法 |
CN109564556A (zh) * | 2016-07-15 | 2019-04-02 | 超威半导体公司 | 具有条纹和读取/写入事务管理的存储器控制器仲裁器 |
CN109690508A (zh) * | 2016-07-15 | 2019-04-26 | 超威半导体公司 | 带虚拟控制器模式的存储器控制器 |
CN110825318A (zh) * | 2018-08-14 | 2020-02-21 | 爱思开海力士有限公司 | 控制器及其操作方法 |
US20220413759A1 (en) * | 2021-06-24 | 2022-12-29 | Advanced Micro Devices, Inc. | Efficient rank switching in multi-rank memory controller |
CN115048142A (zh) * | 2022-03-22 | 2022-09-13 | 深圳云豹智能有限公司 | 缓存访问命令处理系统、方法、装置、设备和存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116719479A (zh) * | 2023-07-03 | 2023-09-08 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
CN116719479B (zh) * | 2023-07-03 | 2024-02-20 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116257191B (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4742116B2 (ja) | アウトオブオーダdramシーケンサ | |
US20200218662A1 (en) | Data caching device and control method therefor, data processing chip, and data processing system | |
CN116257191B (zh) | 存储器的控制器、组件、电子设备及命令调度方法 | |
CN108139994B (zh) | 内存访问方法及内存控制器 | |
US8806071B2 (en) | Continuous read burst support at high clock rates | |
CN106775477B (zh) | Ssd主控数据传输管理装置及方法 | |
CN113641603A (zh) | 一种基于axi协议的ddr仲裁与调度方法及系统 | |
CN101719104B (zh) | 一种同步动态存储器的控制系统及控制方法 | |
CN104252422A (zh) | 内存访问方法和内存控制器 | |
CN116724287A (zh) | 一种内存控制方法及内存控制装置 | |
CN117707994B (zh) | 请求缓冲器、系统、组件、设备及传输方法 | |
CN115481048A (zh) | 一种内存系统及芯片 | |
US20120185668A1 (en) | Memory management unit and apparatuses having same | |
US6247104B1 (en) | Memory access control circuit | |
CN114442908B (zh) | 一种用于数据处理的硬件加速系统及芯片 | |
CN107783909B (zh) | 一种内存地址总线扩展方法及装置 | |
CN100536021C (zh) | 大容量高速缓冲存储器 | |
WO2024087559A1 (zh) | 内存访问方法、装置、系统及电子设备 | |
US10031884B2 (en) | Storage apparatus and method for processing plurality of pieces of client data | |
US8452920B1 (en) | System and method for controlling a dynamic random access memory | |
CN102027424B (zh) | 用于控制从多个进程出发的对存储器的区域的访问的方法以及用于实现该方法的带有消息存储器的通信模块 | |
CN116301664B (zh) | 存储器的控制器、组件、电子设备及命令缓存方法 | |
US7050059B2 (en) | Method for a graphics chip to access data stored in a system memory of a computer device | |
CN113946435A (zh) | 内存管理技术及计算机系统 | |
CN112965816B (zh) | 内存管理技术及计算机系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |