CN102279821B - Ddr控制器端口命令传输的方法及系统 - Google Patents
Ddr控制器端口命令传输的方法及系统 Download PDFInfo
- Publication number
- CN102279821B CN102279821B CN201110219419.2A CN201110219419A CN102279821B CN 102279821 B CN102279821 B CN 102279821B CN 201110219419 A CN201110219419 A CN 201110219419A CN 102279821 B CN102279821 B CN 102279821B
- Authority
- CN
- China
- Prior art keywords
- arbitration
- port
- double data
- dynamic random
- synchronous dynamic
- 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
- Memory System (AREA)
- Dram (AREA)
Abstract
本发明公开了一种双倍速率同步动态随机存储器(DDR)控制器端口命令传输的方法及系统,方法包括:A、预设每个高级高性能总线主设备连接的双倍速率同步动态随机存储器控制器的端口获得双倍速率同步动态随机存储器控制器仲裁的仲裁率上限值及下限值;B、双倍速率同步动态随机存储器控制器对多个端口进行轮排仲裁,获取当前每个端口的仲裁率;C、根据预设的仲裁率上限值及下限值,以及获取的当前每个端口的仲裁率,控制多个高级高性能总线主设备通过多个端口与双倍速率同步动态随机存储器控制器之间的命令传输。借此,本发明提高了双倍速率同步动态随机存储器控制器端口仲裁的效能及其工作性能,优化双倍速率同步动态随机存储器控制器端口命令传输。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种DDR控制器端口命令传输的方法及系统。
背景技术
基于AHB(Advanced High-performance Bus,高级高性能总线)总线的DDR为(Double Data Rate SDRAM,双倍速率同步动态随机存储器)控制器通常有多个AHB总线端口,每个端口都连接了一个AHB MASTER(高级高性能总线主设备),当多个MASTER同时访问DDR控制器时,DDR控制器需要恰当的处理这些MASTER的请求。DDR控制器高效的处理来自AHB MASTER的命令请求,能大大提高DDR控制器的工作效率。
目前处理多个MASTER的命令请求,通常使用的是round robin(轮排)+端口优先级设置算法。以8个AHB端口为例,设置端口的优先级从端口0到端口7依次降低,该算法处理端口请求的方法如表1所示。其中有8个AHB端口,端口0到端口7分别连接了8个AHB MASTER,DDR控制器内有一个内部计数器,每次有一个端口获得了DDR控制器仲裁响应,则计数器加一,否则保持当前值不变。DDR控制器从端口0开始,依次对各个端口进行仲裁,每轮可以获得仲裁响应的端口编号和计数器当前值一致,若此轮仲裁中,可以获得的仲裁端口有端口命令请求,则该端口获得DDR控制仲裁,否则剩余的优先级高并且有发出端口命令请求的端口获得DDR控制仲裁。DDR控制命令仲裁以此循环往复的对各个端口的命令进行仲裁。
此算法的一个缺陷就是,当计数器当前值对应的端口无命令请求时,总是由有请求的优先级最高的端口获得仲裁,优先级低的有请求的端口无法获得DDR控制器的仲裁,这样可能会造成优先级高的端口获得DDR仲裁的几率远远高于优先级低的端口,从而降低DDR控制器的仲裁效率。
表1
综上可知,现有的DDR控制器端口命令传输技术在实际使用上,显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的目的在于提供一种双倍速率同步动态随机存储器(DDR)控制器端口命令传输的方法及系统,以提高双倍速率同步动态随机存储器控制器端口仲裁的效能及其工作性能,优化双倍速率同步动态随机存储器控制器端口命令传输。
为了实现上述目的,本发明提供一种双倍速率同步动态随机存储(DDR)控制器端口命令传输的方法,所述双倍速率同步动态随机存储器控制器包括多个端口,多个高级高性能总线主设备分别连接于所述多个端口中的一个端口,包括:
A、预设每个所述高级高性能总线主设备连接的所述双倍速率同步动态随机存储器控制器的端口获得所述双倍速率同步动态随机存储器控制器仲裁的仲裁率上限值及下限值;
B、所述双倍速率同步动态随机存储器控制器对所述多个端口进行轮排仲裁,获取当前每个所述端口的仲裁率;
C、根据所述预设的仲裁率上限值及下限值,以及获取的当前每个所述端口的仲裁率,控制所述多个高级高性能总线主设备通过所述多个端口与所述双倍速率同步动态随机存储器控制器之间的命令传输。
根据所述的方法,所述步骤C包括:
C1、对所述多个高级高性能总线主设备连接的所述双倍速率同步动态随机存储器控制器的端口进行轮排仲裁;
C2、判断轮排到的所述双倍速率同步动态随机存储器控制器的端口是否有命令请求,若有则执行步骤C3;若无则执行步骤C4;
C3、判定轮排到的所述双倍速率同步动态随机存储器控制器的端口当前的仲裁率是否高于该端口仲裁率的上限值;
若高于该端口仲裁率上限值,则所述双倍速率同步动态随机存储器控制器移向下一个有命令请求且优先权最高的端口进行其仲裁率是否高于该端口仲裁率上限值的判定,直到遇到判定仲裁率低于其仲裁率上限值且有命令请求的端口,所述双倍速率同步动态随机存储器控制器对该端口进行仲裁;
若低于或等于该端口仲裁率的上限值,则该端口获得所述双倍速率同步动态随机存储器控制器的仲裁;
C4、判断没有轮排到的所述双倍速率同步动态随机存储器控制器的端口中,是否有有命令请求且仲裁率低于其仲裁率下限值的端口;
若有则将这些仲裁率低于其仲裁率下限值的端口进行优先级排序,其中优先级最高的端口获得所述双倍速率同步动态随机存储器控制器的仲裁;
若无则所述双倍速率同步动态随机存储器控制器的仲裁移向其他剩余的有命令请求且优先级最高的端口,判断该端口仲裁率是否高于其仲裁率上限值;
若该端口仲裁率高于其仲裁率上限值,则所述双倍速率同步动态随机存储器控制器移向下一个所述其他剩余的有命令请求且优先级最高的端口进行仲裁,直到移向仲裁率低于仲裁率上限值的端口,该端口获得所述双倍速率同步动态随机存储器控制器的仲裁;
若该端口仲裁率低于其仲裁率上限值,则该端口获得所述双倍速率同步动态随机存储器控制器的仲裁。
根据所述的方法,所述仲裁率的上限值及下限值均在0%~100%之间;和/或
每个所述双倍速率同步动态随机存储器控制器的端口均有编号,多个所述双倍速率同步动态随机存储器控制器的端口从端口编号小的端口开始优先级依次减小。
根据所述的方法,所述双倍速率同步动态随机存储器控制器包括第一仲裁计数器;
在所述步骤C1中,所述多个高级高性能总线主设备连接的所述双倍速率同步动态随机存储器控制器的端口进行轮排仲裁的过程中,每轮被轮排到的端口的编号与所述第一仲裁计数器的计数值一致;
在所述步骤C3中,当被轮排到的所述双倍速率同步动态随机存储器控制器的端口的仲裁率低于其仲裁率上限值,获得所述双倍速率同步动态随机存储器控制器的仲裁后,所述双倍速率同步动态随机存储器控制器的第一仲裁计数器值加一;若没有遇到判定仲裁率低于其仲裁率上限值且有命令请求的端口,则该轮所述双倍速率同步动态随机存储器控制器的第一仲裁计数器值均保持不变;
在所述步骤C4中,所述双倍速率同步动态随机存储器控制器的第一仲裁计数器值保持不变。
根据所述的方法,所述双倍速率同步动态随机存储器控制器的仲裁包括仲裁总循环周期与刷新周期,并且所述仲裁总循环周期值是所述刷新周期值的整数倍;每隔一个刷新周期则刷新一次所述每个端口仲裁率;
所述双倍速率同步动态随机存储器控制器包括第一寄存器和第二积存器,以及多个第二仲裁计数器;所述第一寄存器和第二积存器分别存储所述仲裁总循环周期值与刷新周期值;每个所述第二仲裁计数器在每个刷新周期内对所述每个端口的仲裁进行计数,并统计所述每个端口的仲裁率。
根据所述的方法,所述双倍速率同步动态随机存储器控制器的每个端口分别对应于一个第三寄存器和一个第四寄存器;所述第三寄存器存储所述每个端口的仲裁率上限值,所述第四寄存器存储所述每个端口的仲裁率下限值。
为了实现本发明的另一发明目的,本发明还提供了一种用于上述任意一项所述的双倍速率同步动态随机存储(DDR)控制器端口命令传输的方法的系统,所述双倍速率同步动态随机存储器控制器包括多个端口,多个高级高性能总线主设备分别连接于所述多个端口中的一个端口,包括:
预设模块,预设每个所述高级高性能总线主设备连接的所述双倍速率同步动态随机存储器控制器的端口获得所述双倍速率同步动态随机存储器控制器仲裁的仲裁率上限值及下限值;
仲裁率获取模块,在所述双倍速率同步动态随机存储器控制器对所述多个端口进行轮排仲裁后,获取当前每个所述端口的仲裁率;
访问控制模块,根据所述预设模块预设的仲裁率上限值及下限值,以及所述仲裁率获取模块获取的当前每个所述端口的仲裁率,控制所述多个高级高性能总线主设备通过所述多个端口与所述双倍速率同步动态随机存储器控制器之间的命令传输。
根据所述的系统,所述预设模块包括:
预设子模块,用于分别设置多个第三寄存器中对应的所述每个端口的仲裁率上限值和多个第四寄存器中对应的所述每个端口的仲裁率下限值;
多个第三寄存器,设置于所述双倍速率同步动态随机存储器控制器内,用于存储所述每个端口的仲裁率上限值;
多个第四寄存器,设置于所述双倍速率同步动态随机存储器控制器内,用于存储所述每个端口的仲裁率下限值。
根据所述的系统,所述仲裁率获取模块包括:
周期设置子模块,用于设置第一寄存器中的仲裁总循环周期值和第二积存器中的刷新周期值;
第一寄存器,设置于所述双倍速率同步动态随机存储器控制器内,用于存储所述双倍速率同步动态随机存储器控制器仲裁总循环周期值;
第二积存器,设置于所述双倍速率同步动态随机存储器控制器内,用于存储所述双倍速率同步动态随机存储器控制器刷新周期值;
第一仲裁计数器,设置于所述双倍速率同步动态随机存储器控制器内,统计所述端口获得所述双倍速率同步动态随机存储器控制器仲裁响应的次数;
多个第二仲裁计数器,设置于所述双倍速率同步动态随机存储器控制器内,用于分别在每个刷新周期内对所述每个端口的仲裁进行计数,并计算每个刷新周期内所述每个端口的仲裁率。
根据所述的系统,每隔一个刷新周期则刷新一次所述每个端口仲裁率;和/或
所述仲裁率的上限值及下限值均在0%~100%之间。
本发明通过预先设置每个所述高级高性能总线主设备连接的所述双倍速率同步动态随机存储器控制器的端口获得所述双倍速率同步动态随机存储器控制器仲裁的仲裁率上限值及下限值;以及获取当前每个所述端口的仲裁率;控制所述多个高级高性能总线主设备通过所述多个端口与所述双倍速率同步动态随机存储器控制器之间的命令传输。该方法使双倍速率同步动态随机存储器控制器更加高效的工作,提高了双倍速率同步动态随机存储器控制器的性能。通过端口仲裁率上下限判断仲裁双倍速率同步动态随机存储器控制器端口,可以有效的控制各个端口被双倍速率同步动态随机存储器控制器仲裁的几率。另外,每个端口的仲裁率在每个刷新周期内进行刷新,保证了各种端口获得仲裁的几率。相应的本发明还提供了实现双倍速率同步动态随机存储器控制器命令传输的系统,该系统包括了预设模块、仲裁率获取模块以及访问控制模块。通过该系统利用在round robin+端口优先级设置的基础上仲裁率获取模块对每个端口在一定仲裁周期中获得仲裁的概率进行统计,并且预设模块对每个端口的仲裁率设置上限和下限。访问控制模块判断若有端口的仲裁率高于它的仲裁率上限,则其不能获得双倍速率同步动态随机存储器控制器命令仲裁,若有端口的仲裁率低于它的仲裁率下限,则其可以优先获得双倍速率同步动态随机存储器控制器命令仲裁。这种系统可以更好的均衡每个端口的优先级设置,更好的分配双倍速率同步动态随机存储器控制器端口仲裁率,从而实现更高的双倍速率同步动态随机存储器控制器工作效率。
附图说明
图1是本发明提供的DDR控制器端口命令传输的方法流程图;
图2是本发明一个实施例提供的DDR控制器端口命令传输的方法流程图;
图3是本发明提供的DDR控制器端口命令传输的系统组成示意图;
图4是本发明一个实施例提供的DDR控制器端口命令传输的系统组成示意图;
图5是本发明一个实施例提供的DDR控制器端口的仲裁周期与仲裁关系图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参见图3,本发明提供了一种双倍速率同步动态随机存储器(DDR)控制器端口命令传输的系统100,所述双倍速率同步动态随机存储器控制器包括多个端口,多个高级高性能总线主设备分别连接于所述多个端口中的一个端口,包括:
预设模块10,预设每个所述高级高性能总线主设备连接的所述双倍速率同步动态随机存储器控制器的端口获得所述双倍速率同步动态随机存储器控制器仲裁的仲裁率上限值及下限值;
仲裁率获取模块20,在所述双倍速率同步动态随机存储器控制器对所述多个端口进行轮排仲裁后,获取当前每个所述端口的仲裁率;
访问控制模块30,根据预设模块10预设的仲裁率上限值及下限值,以及仲裁率获取模块20获取的当前每个所述端口的仲裁率,控制所述多个高级高性能总线主设备通过所述多个端口与所述双倍速率同步动态随机存储器控制器之间的命令传输。
在本发明中,在round robin+端口优先级设置的基础上对每个端口在一定仲裁周期中获得仲裁的概率进行统计,并且对每个端口的仲裁率设置上限和下限。若有端口的仲裁率高于它的仲裁率上限,则其不能获得DDR控制器命令仲裁,若有端口的仲裁率低于它的仲裁率下限,则其可以优先获得DDR控制器命令仲裁。这种算法可以更好的均衡每个端口的优先级设置,更好的分配DDR控制器端口仲裁率,从而实现更高的DDR控制器工作效率。具体的,首先通过预设模块10预设多个双倍速率同步动态随机存储器控制器的端口的仲裁率上限值及下限值,然后由仲裁率获取模块20获取当前每个所述端口的仲裁率;最后通过访问控制模块30根据预设模块10预设的仲裁率上限值及下限值,以及仲裁率获取模块20获取的当前每个所述端口的仲裁率,控制每个端口获得双倍速率同步动态随机存储器控制器的仲裁。
在本发明的一个优选实施例中,所述预设模块10包括:
预设子模块101,用于分别设置多个第三寄存器102中对应的所述每个端口的仲裁率上限值和多个第四寄存器中对应的所述每个端口的仲裁率下限值;
多个第三寄存器102,设置于所述双倍速率同步动态随机存储器控制器内,用于存储所述每个端口的仲裁率上限值;
多个第四寄存器103,设置于所述双倍速率同步动态随机存储器控制器内,用于存储所述每个端口的仲裁率下限值。
在DDR控制器中,每个端口都对应了两个可读可写的第三寄存器102和第四寄存器103;第三寄存器102用于存储该端口的仲裁率上限值,第四寄存器103用于存储该端口仲裁率的下限值。在DDR控制器初始化时,通过AHB总线对仲裁率上下限寄存器访问,可以设置每个端口的仲裁率上限值和下限值,范围可以为0到100%之间的任意值,利用该仲裁率上限值和下限值,可以调整各个端口被仲裁的概率,提高DDR控制器的控制性能。
所述仲裁率获取模块20包括:
周期设置子模块201,用于设置第一寄存器202中的仲裁总循环周期值和第二积存器203中的刷新周期值;
第一寄存器202,设置于所述双倍速率同步动态随机存储器控制器内,用于存储所述双倍速率同步动态随机存储器控制器仲裁总循环周期值;
第二积存器203,设置于所述双倍速率同步动态随机存储器控制器内,用于存储所述双倍速率同步动态随机存储器控制器刷新周期值;
第一仲裁计数器204,设置于所述双倍速率同步动态随机存储器控制器内,统计所述端口获得所述双倍速率同步动态随机存储器控制器仲裁响应的次数;
多个第二仲裁计数器205;设置于所述双倍速率同步动态随机存储器控制器内,用于分别在每个刷新周期内对所述每个端口的仲裁进行计数,并计算每个刷新周期内所述每个端口的仲裁率。
周期设置子模块201设置第一寄存器202和第二积存器203分别存储的仲裁总循环周期值和刷新周期值,其中仲裁总循环周期值是刷新周期值的整数倍,多个第二仲裁计数器205每隔一个刷新周期则刷新一次所述每个端口仲裁率。
第一仲裁计数器204统计所述端口获得所述双倍速率同步动态随机存储器控制器仲裁响应的次数。
参见图1,本发明提供了一种双倍速率同步动态随机存储器(DDR)控制器端口命令传输的方法,所述双倍速率同步动态随机存储器控制器包括多个端口,多个高级高性能总线主设备分别连接于所述多个端口中的一个端口,包括:
步骤S101中,预设每个所述高级高性能总线主设备连接的所述双倍速率同步动态随机存储器控制器的端口获得所述双倍速率同步动态随机存储器控制器仲裁的仲裁率上限值及下限值;
步骤S102中,所述双倍速率同步动态随机存储器控制器对所述多个端口进行轮排仲裁,获取当前每个所述端口的仲裁率;
步骤S103中,根据所述预设的仲裁率上限值及下限值,以及获取的当前每个所述端口的仲裁率,控制所述多个高级高性能总线主设备通过所述多个端口与所述双倍速率同步动态随机存储器控制器之间的命令传输。
在该实施例中,通过预设模块10设置仲裁率上限值和下限值,并且仲裁率获取模块20获取当前每个所述端口的仲裁率;最后,访问控制模块30根据所述仲裁率上限值及下限值,以及当前每个所述端口的仲裁率控制多个端口的仲裁,在仲裁成功后传送高级高性能总线主设备与所述双倍速率同步动态随机存储器控制器之间的命令。本发明以round robin轮排算法和优先权设置为基础,加入仲裁率上下限判断的DDR控制器多AHB端口命令仲裁算法,通过roundrobin轮排算法、DDR控制AHB端口优先权设置和DDR控制器AHB端口仲裁率上下限设置,有效的控制DDR控制各个端口被仲裁响应的概率,此算法能使DDR控制器更加高效的工作,提高了DDR控制器的工作性能。
在本发明的一个优选实施例中,步骤S103包括:
对所述多个高级高性能总线主设备连接的所述双倍速率同步动态随机存储器控制器的端口进行轮排仲裁的步骤;其中所述双倍速率同步动态随机存储器控制器包括第一仲裁计数器;在该步骤中,所述多个高级高性能总线主设备连接的所述双倍速率同步动态随机存储器控制器的端口进行轮排仲裁的过程中,每轮被轮排到的端口的编号与所述第一仲裁计数器的计数值一致;以及
判断轮排到的所述双倍速率同步动态随机存储器控制器的端口是否有命令请求的步骤;
若有则判定轮排到的所述双倍速率同步动态随机存储器控制器的端口当前的仲裁率是否高于该端口仲裁率的上限值;若高于该端口仲裁率上限值,则所述双倍速率同步动态随机存储器控制器移向下一个有命令请求且优先权最高的端口进行其仲裁率是否高于该端口仲裁率上限值的判定,直到遇到判定仲裁率低于其仲裁率上限值且有命令请求的端口,所述双倍速率同步动态随机存储器控制器对该端口进行仲裁;若低于或等于该端口仲裁率的上限值,则该端口获得所述双倍速率同步动态随机存储器控制器的仲裁;
若无则判断没有轮排到的所述双倍速率同步动态随机存储器控制器的端口中,是否有有命令请求且仲裁率低于其仲裁率下限值的端口;若有则将这些仲裁率低于其仲裁率下限值的端口进行优先级排序,其中优先级最高的端口获得所述双倍速率同步动态随机存储器控制器的仲裁;若无则所述双倍速率同步动态随机存储器控制器的仲裁移向其他剩余的有命令请求且优先级最高的端口,判断该端口仲裁率是否高于其仲裁率上限值;若该端口仲裁率高于其仲裁率上限值,则所述双倍速率同步动态随机存储器控制器移向下一个所述其他剩余的有命令请求且优先级最高的端口进行仲裁,直到移向仲裁率低于仲裁率上限值的端口,该端口获得所述双倍速率同步动态随机存储器控制器的仲裁;若该端口仲裁率低于其仲裁率上限值,则该端口获得所述双倍速率同步动态随机存储器控制器的仲裁。并且所述双倍速率同步动态随机存储器控制器的第一仲裁计数器值保持不变。
在上述多个实施例中,每个所述双倍速率同步动态随机存储器控制器的端口均有编号,多个所述双倍速率同步动态随机存储器控制器的端口从端口编号小的端口开始优先级依次减小。所述双倍速率同步动态随机存储器控制器的仲裁包括仲裁总循环周期与刷新周期,并且所述仲裁总循环周期值是所述刷新周期值的整数倍;每隔一个刷新周期则刷新一次所述每个端口仲裁率。仲裁率刷新周期和总循环仲裁周期大小可通过DDR控制器内部寄存器配置,能根据需求灵活的获得DDR控制器端口仲裁率大小。
所述双倍速率同步动态随机存储器控制器包括第一寄存器202、第二积存器203、第一仲裁计数器204以及多个第二仲裁计数器205;所述第一寄存器202和第二积存器203分别存储所述仲裁总循环周期值与刷新周期值;第一仲裁计数器204统计多个所述端口获得所述双倍速率同步动态随机存储器控制器仲裁响应的次数;每个所述第二仲裁计数器205在每个刷新周期内对所述每个端口的仲裁进行计数,并统计所述每个端口的仲裁率,因此各个端口仲裁率的获得是通过第二仲裁计数器205的统计获得。而第一仲裁计数器204则记录轮排周期数值。
优选的,所述双倍速率同步动态随机存储器控制器的每个端口分别对应于一个第三寄存器102和第四寄存器103;所述第三寄存器102存储所述每个端口的仲裁率上限值,所述第四寄存器103存储所述每个端口的仲裁率下限值。本发明通过round robin算法、优先权判断以及端口仲裁率上下限判断,协同仲裁DDR控制器端口,提高了DDR控制器的端口仲裁性能。
参见图2,在本发明的一个实施例中,提供了双倍速率同步动态随机存储器(DDR)控制器端口命令传输的方法,
步骤S201中,首先进行round robin轮排仲裁;
步骤S202中,判断仲裁端口是否有命令请求,有则执行步骤203,无则执行步骤209;
步骤S203中,判断该端口的仲裁率是否高于仲裁率上限值,是则执行步骤S204,否则执行步骤S208;
步骤S204中,仲裁移向剩余有命令请求且优先级最高的端口;
步骤S205中,判断该端口的仲裁率是否高于仲裁率上限值;是则执行步骤S206,否则执行步骤S215;
步骤S206中,仲裁移向剩余有命令请求且优先级最高的端口;
步骤S207中,直至判断该端口的仲裁率是否高于仲裁率上限值时,判断仲裁率低于仲裁率上限值,执行步骤S215;
步骤S208中,该端口获得仲裁并且第一仲裁计数器204值加一;
步骤S209中,判断剩余端口中是否有命令请求且仲裁率低于仲裁率下限值的端口;是执行步骤S211,否则执行步骤S210;
步骤S210中,仲裁移向剩余有命令请求且优先级最高的端口;
步骤S211中,符合要求的端口进行优先级排序,优先级最高的端口获得仲裁;
步骤S212中,判断该端口的仲裁率是否高于仲裁率上限值;是则执行步骤S213,否则执行步骤S212;
步骤S213中,仲裁移向剩余有命令请求且优先级最高的端口;
步骤S214中,直至判断该端口的仲裁率是否高于仲裁率上限值时,判断仲裁率低于仲裁率上限值,执行步骤S215;
步骤S215中,该端口获得仲裁,并且第一仲裁计数器204值不变。
在该实施例中,DDR控制器开始进行仲裁判断时,进行round robin轮排仲裁,若被轮排到的端口有命令请求,判定该端口当前的仲裁率是否高于对其设置的上限,若低于设置的上限,则该端口获得仲裁,并且第一仲裁计数器204值加一,若高于对其设置的仲裁率上限,则DDR控制器仲裁移向下一个有命令请求且优先权最高的端口,进行同上的判定,直到遇到低于仲裁率上限且有命令请求的端口,若无则该轮每个仲裁计数器的值均保持不变。若被轮排到的端口无命令请求,则判断剩余的有命令请求的端口中是否有仲裁率低于它的仲裁率下限的端口,若有则将这些低于仲裁率的端口进行优先级排序,优先级最高的端口获得DDR控制器仲裁,内部第一仲裁计数器204值保持不变;若剩余端口中无仲裁率低于设置下限的端口,则仲裁移向剩余的有命令请求且优先级最高的端口,判断该端口仲裁率是否高于对其设置的上限,若低于设置上限,则该端口获得DDR控制器仲裁,第一仲裁计数器204值保持不变,若该端口仲裁率高于设置上限,则仲裁移向下一个剩余的有命令请求并且优先级最高的端口进行判定仲裁,直到仲裁移向满足条件的端口,即仲裁率低于设置上限,该端口获得仲裁,第一仲裁计数器204值保持不变。
在本发明的一个优选实施例中,每个端口的仲裁率获得是通过计算一定仲裁周期数,定义任意一个端口获得一次DDR控制器仲裁,为一个仲裁周期内,每个端口获得仲裁的次数。在DDR控制器中,有两个可读可写寄存器分别用于存储仲裁总循周期值和刷新周期值,即第一寄存器202和第二积存器203,可以通过AHB总线对这两个第一寄存器202和第二积存器203的访问来设置期望的总循环周期数和刷新周期,设置时需注意总循环周期数必须为刷新周期的整数倍。
如图5所示,以总循环周期为50个仲裁周期,刷新周期为10个仲裁周期,4AHB端口的DDR控制器为例,仲裁率每隔10个仲裁周期刷新一次,每隔十个周期,都有单独第二仲裁计数器205的对其以下的50个周期内仲裁情况进行计数,然后将对应的仲裁率计算好反馈给DDR控制器。反馈的各个端口在0到90周期数内的仲裁率如表2所示。
表2
每个端口的仲裁率上限值和下限值可以通过DDR控制器的第三寄存器102和第四寄存器103配置,以用于仲裁判断的比较。这样可以有效的控制DDR控制器各个端口的仲裁率,达到期望的仲裁率效果。
仍然以4个AHB端口的DDR控制器为例,在DDR控制器初始化时,通过寄存器配置端口0仲裁率上限为60%,下限为30%;端口1仲裁率上限为20%,下限为20%;端口2仲裁率上限为25%,下限为10%;端口3仲裁率上限为20%,下限为0%。这时在DDR端口仲裁时,会进行DDR端口仲裁率的判定,那么在相同条件和命令请求情况下,图5中各个端口的仲裁次数会根据对端口仲裁率上下限的设置而改变。在进行了50个周期的仲裁周期后,各个端口的第二仲裁计数器205已统计出各个端口的仲裁率,如表3所示,由于目前端口0的仲裁率低于它的仲裁率下限,那么在被轮排端口无命令请求时,端口0若有命令请求,可以优先获得仲裁;其次考虑端口1,由于其仲裁率在其设置的上下限之间,则其不会受到仲裁率上下限判定的影响;端口2仲裁率高于其设置的仲裁率上限25%,所以端口2在以下的十个周期内,将不会得到DDR控制器仲裁;端口3与端口2一样,在50-59周期内,将不能获得DDR控制器仲裁。
表3
在这种配置下,端口0可以获得更高的DDR控制器仲裁率,端口2和端口3获得仲裁率的几率被有效的控制在一个较低的范围内。通过设置DDR控制端口的仲裁率上下限,可以有效控制指定端口获得DDR仲裁的几率。
本发明提出了一种基于round robin轮排算法的DDR控制器端口仲裁算法,在round robin轮排算法的基础上,对DDR控制器每个端口的仲裁率上下限进行的设置,在仲裁判断中,将仲裁率的大小作为一个仲裁判定的条件。在DDR控制器端口命令仲裁中,避免了在某些情况下低优先级端口仲裁率极低的不良情况,能更有效的平衡各个端口被仲裁的几率,也可以根据对端口优先权和仲裁率上下限的设置,去合理的控制各个端口的仲裁情况。
每个端口的第二仲裁计数器205个数是通过对仲裁率刷新周期和总循环周期数的大小获得的,其每个端口第二仲裁计数器205个数为总循环周期数除以仲裁率刷新周期。DDR控制器会根据寄存器中总循环周期数和刷新周期数,去自动计算每个端口需要的内部仲裁计算器个数,以总循环周期数为100,刷新周期数为20为例,此时DDR控制器会自动给每个端口配置5个内部仲裁计数器,用于统计每个端口仲裁率的大小。
综上所述,本发明通过预先设置每个所述高级高性能总线主设备连接的所述双倍速率同步动态随机存储器控制器的端口获得所述双倍速率同步动态随机存储器控制器仲裁的仲裁率上限值及下限值;以及获取当前每个所述端口的仲裁率;控制所述多个高级高性能总线主设备通过所述多个端口与所述双倍速率同步动态随机存储器控制器之间的命令传输。该方法使双倍速率同步动态随机存储器控制器更加高效的工作,提高了双倍速率同步动态随机存储器控制器的性能。通过端口仲裁率上下限判断仲裁双倍速率同步动态随机存储器控制器端口,可以有效的控制各个端口被双倍速率同步动态随机存储器控制器仲裁的几率。另外,每个端口的仲裁率在每个刷新周期内进行刷新,保证了各种端口获得仲裁的几率。相应的本发明还提供了实现双倍速率同步动态随机存储器控制器命令传输的系统,该系统包括了预设模块、仲裁率获取模块以及访问控制模块。通过该系统利用在round robin+端口优先级设置的基础上仲裁率获取模块对每个端口在一定仲裁周期中获得仲裁的概率进行统计,并且预设模块对每个端口的仲裁率设置上限和下限。访问控制模块判断若有端口的仲裁率高于它的仲裁率上限,则其不能获得双倍速率同步动态随机存储器控制器命令仲裁,若有端口的仲裁率低于它的仲裁率下限,则其可以优先获得双倍速率同步动态随机存储器控制器命令仲裁。这种系统可以更好的均衡每个端口的优先级设置,更好的分配双倍速率同步动态随机存储器控制器端口仲裁率,从而实现更高的双倍速率同步动态随机存储器控制器工作效率。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (10)
1.一种双倍速率同步动态随机存储(DDR)控制器端口命令传输的方法,所述双倍速率同步动态随机存储器控制器包括多个端口,多个高级高性能总线主设备分别连接于所述多个端口中的一个端口,其特征在于,包括:
A、预设每个所述高级高性能总线主设备连接的所述双倍速率同步动态随机存储器控制器的端口获得所述双倍速率同步动态随机存储器控制器仲裁的仲裁率上限值及下限值;
B、所述双倍速率同步动态随机存储器控制器对所述多个端口进行轮排仲裁,获取当前每个所述端口的仲裁率;
C、根据所述仲裁率上限值及下限值,以及获取的当前每个所述端口的仲裁率,控制所述多个高级高性能总线主设备通过所述多个端口与所述双倍速率同步动态随机存储器控制器之间的命令传输。
2.根据权利要求1所述的方法,其特征在于,所述步骤C包括:
C1、对所述多个高级高性能总线主设备连接的所述双倍速率同步动态随机存储器控制器的端口进行轮排仲裁;
C2、判断轮排到的所述双倍速率同步动态随机存储器控制器的端口是否有命令请求,若有则执行步骤C3;若无则执行步骤C4;
C3、判定轮排到的所述双倍速率同步动态随机存储器控制器的端口当前的仲裁率是否高于该端口仲裁率的上限值;
若高于该端口仲裁率上限值,则所述双倍速率同步动态随机存储器控制器移向下一个有命令请求且优先权最高的端口进行其仲裁率是否高于该端口仲裁率上限值的判定,直到遇到判定仲裁率低于其仲裁率上限值且有命令请求的端口,所述双倍速率同步动态随机存储器控制器对该端口进行仲裁;
若低于或等于该端口仲裁率的上限值,则该端口获得所述双倍速率同步动态随机存储器控制器的仲裁;
C4、判断没有轮排到的所述双倍速率同步动态随机存储器控制器的端口中,是否有有命令请求且仲裁率低于其仲裁率下限值的端口;
若有则将这些仲裁率低于其仲裁率下限值的端口进行优先级排序,其中优先级最高的端口获得所述双倍速率同步动态随机存储器控制器的仲裁;
若无则所述双倍速率同步动态随机存储器控制器的仲裁移向其他剩余的有命令请求且优先级最高的端口,判断该端口仲裁率是否高于其仲裁率上限值;
若该端口仲裁率高于其仲裁率上限值,则所述双倍速率同步动态随机存储器控制器移向下一个所述其他剩余的有命令请求且优先级最高的端口进行仲裁,直到移向仲裁率低于仲裁率上限值的端口,该端口获得所述双倍速率同步动态随机存储器控制器的仲裁;
若该端口仲裁率低于其仲裁率上限值,则该端口获得所述双倍速率同步动态随机存储器控制器的仲裁。
3.根据权利要求2所述的方法,其特征在于,所述仲裁率的上限值及下限值均在0%~100%之间;和/或
每个所述双倍速率同步动态随机存储器控制器的端口均有编号,多个所述双倍速率同步动态随机存储器控制器的端口从端口编号小的端口开始优先级依次减小。
4.根据权利要求3所述的方法,其特征在于,所述双倍速率同步动态随机存储器控制器包括第一仲裁计数器;
在所述步骤C1中,所述多个高级高性能总线主设备连接的所述双倍速率同步动态随机存储器控制器的端口进行轮排仲裁的过程中,每轮被轮排到的端口的编号与所述第一仲裁计数器的计数值一致;
在所述步骤C3中,当被轮排到的所述双倍速率同步动态随机存储器控制器的端口的仲裁率低于其仲裁率上限值,获得所述双倍速率同步动态随机存储器控制器的仲裁后,所述双倍速率同步动态随机存储器控制器的第一仲裁计数器值加一;若没有遇到判定仲裁率低于其仲裁率上限值且有命令请求的端口,则该轮所述双倍速率同步动态随机存储器控制器的第一仲裁计数器值均保持不变;
在所述步骤C4中,所述双倍速率同步动态随机存储器控制器的第一仲裁计数器值保持不变。
5.根据权利要求1所述的方法,其特征在于,所述双倍速率同步动态随机存储器控制器的仲裁包括仲裁总循环周期与刷新周期,并且所述仲裁总循环周期值是所述刷新周期值的整数倍;每隔一个刷新周期则刷新一次所述每个端口仲裁率;
所述双倍速率同步动态随机存储器控制器包括第一寄存器和第二寄存器,以及多个第二仲裁计数器;所述第一寄存器和第二寄存器分别存储所述仲裁总循环周期值与刷新周期值;每个所述第二仲裁计数器在每个刷新周期内对所述每个端口的仲裁进行计数,并统计所述每个端口的仲裁率。
6.根据权利要求1所述的方法,其特征在于,所述双倍速率同步动态随机存储器控制器的每个端口分别对应于一个第三寄存器和一个第四寄存器;所述第三寄存器存储所述每个端口的仲裁率上限值,所述第四寄存器存储所述每个端口的仲裁率下限值。
7.一种用于权利要求1~6任意一项所述的双倍速率同步动态随机存储(DDR)控制器端口命令传输的方法的系统,所述双倍速率同步动态随机存储器控制器包括多个端口,多个高级高性能总线主设备分别连接于所述多个端口中的一个端口,其特征在于,包括:
预设模块,预设每个所述高级高性能总线主设备连接的所述双倍速率同步动态随机存储器控制器的端口获得所述双倍速率同步动态随机存储器控制器仲裁的仲裁率上限值及下限值;
仲裁率获取模块,在所述双倍速率同步动态随机存储器控制器对所述多个端口进行轮排仲裁后,获取当前每个所述端口的仲裁率;
访问控制模块,根据所述预设模块获得的仲裁率上限值及下限值,以及所述仲裁率获取模块获取的当前每个所述端口的仲裁率,控制所述多个高级高性能总线主设备通过所述多个端口与所述双倍速率同步动态随机存储器控制器之间的命令传输。
8.根据权利要求7所述的系统,其特征在于,所述预设模块包括:
预设子模块,用于分别设置多个第三寄存器中对应的所述每个端口的仲裁率上限值和多个第四寄存器中对应的所述每个端口的仲裁率下限值;
多个第三寄存器,设置于所述双倍速率同步动态随机存储器控制器内,用于存储所述每个端口的仲裁率上限值;
多个第四寄存器,设置于所述双倍速率同步动态随机存储器控制器内,用于存储所述每个端口的仲裁率下限值。
9.根据权利要求7所述的系统,其特征在于,所述仲裁率获取模块包括:
周期设置子模块,用于设置第一寄存器中的仲裁总循环周期值和第二寄存器中的刷新周期值;
第一寄存器,设置于所述双倍速率同步动态随机存储器控制器内,用于存储所述双倍速率同步动态随机存储器控制器仲裁总循环周期值;
第二寄存器,设置于所述双倍速率同步动态随机存储器控制器内,用于存储所述双倍速率同步动态随机存储器控制器刷新周期值;
第一仲裁计数器,设置于所述双倍速率同步动态随机存储器控制器内,统计多个所述端口获得所述双倍速率同步动态随机存储器控制器仲裁响应的次数;
多个第二仲裁计数器,设置于所述双倍速率同步动态随机存储器控制器内,用于分别在每个刷新周期内对所述每个端口的仲裁进行计数,并计算每个刷新周期内所述每个端口的仲裁率。
10.根据权利要求9所述的系统,其特征在于,每隔一个刷新周期则刷新一次所述每个端口仲裁率;和/或
所述仲裁率的上限值及下限值均在0%~100%之间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110219419.2A CN102279821B (zh) | 2011-08-02 | 2011-08-02 | Ddr控制器端口命令传输的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110219419.2A CN102279821B (zh) | 2011-08-02 | 2011-08-02 | Ddr控制器端口命令传输的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102279821A CN102279821A (zh) | 2011-12-14 |
CN102279821B true CN102279821B (zh) | 2014-01-08 |
Family
ID=45105279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110219419.2A Active CN102279821B (zh) | 2011-08-02 | 2011-08-02 | Ddr控制器端口命令传输的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102279821B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106325759A (zh) * | 2015-06-18 | 2017-01-11 | 中兴通讯股份有限公司 | 一种可动态配置端口带宽的ddr控制方法及装置 |
CN107579934A (zh) * | 2017-08-30 | 2018-01-12 | 天津津航计算技术研究所 | 一种适用于命令响应型网络的转发器 |
CN113052748B (zh) * | 2021-03-02 | 2023-05-16 | 长沙景嘉微电子股份有限公司 | 图形处理器以及视频解码显示方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7260688B1 (en) * | 2004-04-15 | 2007-08-21 | Xilinx, Inc. | Method and apparatus for controlling access to memory circuitry |
CN101814012A (zh) * | 2010-05-20 | 2010-08-25 | 锐迪科科技有限公司 | Sdram存储器结构及数据读写方法 |
CN102033832B (zh) * | 2010-12-02 | 2013-12-18 | 杭州国芯科技股份有限公司 | 一种同步动态存储器访存控制方法 |
-
2011
- 2011-08-02 CN CN201110219419.2A patent/CN102279821B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN102279821A (zh) | 2011-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107657581B (zh) | 一种卷积神经网络cnn硬件加速器及加速方法 | |
CA3069185C (en) | Operation accelerator | |
US20210271610A1 (en) | System and method for optimizing dram bus switching using llc | |
US8380916B2 (en) | Control of page access in memory | |
CN107124472A (zh) | 负载均衡方法及装置、计算机可读存储介质 | |
CN101271435B (zh) | 一种访问外部存储器的方法 | |
US8213461B2 (en) | Method of designating slots in a transmission frame for controlling transmission of data over an interconnect coupling a plurality of master units with a plurality of slave units | |
CN102362464A (zh) | 内存访问监测方法和装置 | |
CN113342615B (zh) | 命令监控方法、装置、控制器、系统、设备和存储介质 | |
CN102279821B (zh) | Ddr控制器端口命令传输的方法及系统 | |
US11687144B2 (en) | System and methods for on-chip memory (OCM) port throttling for machine learning operations | |
CN116724287A (zh) | 一种内存控制方法及内存控制装置 | |
TWI708193B (zh) | 應用於卷積神經網路之記憶體適應性處理方法及其系統 | |
CN101273380A (zh) | 图形处理器的交织虚拟本地存储器 | |
CN101341471B (zh) | 动态高速缓存管理的设备和方法 | |
US20150032926A1 (en) | Storage apparatus, and system and method for executing access operations | |
CN111260042B (zh) | 数据选择器、数据处理方法、芯片及电子设备 | |
US10452574B2 (en) | Read performance on a SATA storage device behind a host bus adapter | |
US11467973B1 (en) | Fine-grained access memory controller | |
WO2016023276A1 (zh) | 一种存储卡的数据处理方法及装置 | |
US11169937B2 (en) | Memory control device | |
US9367491B2 (en) | Method and apparatus for on-the-fly learning traffic control scheme | |
EP2829028B1 (en) | Memory architecture determining the number of replicas stored in memory banks or devices according to a packet size | |
CN106484642A (zh) | 一种具有运算能力的直接存储器访问控制器 | |
US20190354315A1 (en) | Semiconductor system including various memory devices capable of processing data |
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 |