一种对动态内存进行动态读写访问分组的调度装置和方法.pdf

上传人:e2 文档编号:1005038 上传时间:2018-03-25 格式:PDF 页数:14 大小:747.04KB
返回 下载 相关 举报
摘要
申请专利号:

CN200910092107.2

申请日:

2009.09.02

公开号:

CN101667105A

公开日:

2010.03.10

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 3/06申请日:20090902|||公开

IPC分类号:

G06F3/06

主分类号:

G06F3/06

申请人:

北京龙芯中科技术服务中心有限公司

发明人:

许 彤; 陆 敏; 张广飞; 汪文祥

地址:

100190北京市海淀区科学院南路10号

优先权:

专利代理机构:

北京市隆安律师事务所

代理人:

史 霞

PDF下载: PDF下载
内容摘要

本发明公开了一种对动态内存进行动态读写访问分组的调度装置和方法,所述装置包括多路选择器、内存后端调度器,还包括:端口队列组模块,读/写裕量寄存器模块,读/写队列组裕量计算模块,读/写切换控制模块。所述方法通过设置读队列组或写队列组的权重、设置读队列组或写队列组中调度单位项的个数、设置读操作或写操作时调度单位项的最小连续长度,每个时钟周期内设置读队列组或写队列组中调度单位项的时间裕量值,并在每个调度周期执行如下步骤:对读、写队列组中设定数量的调度单位项的时间裕量值进行计算,根据上述计算得出的时

权利要求书

1: 一种对动态内存进行动态读写访问分组的调度装置,用于接收多个设 备的访存请求并将这些访存请求发送至内存芯片,其包括用于接收访存队列 组的多路选择器、及将上述多路选择器进一步选择出的访存操作发送至与内 存芯片连接的内存后端调度器, 其特征在于,还包括: 端口队列组模块,用于保存对应所述多个访存设备的读队列组和写队列 组; 读/写裕量寄存器模块,用于对端口队列组模块中的读队列中的调度单位 项的时间裕量值进行设置,以及,用于对端口队列组模块中的写队列中的调 度单位项的时间裕量值进行设置; 读/写队列组裕量计算模块,用于对端口队列组模块中的读队列中设定数 量的调度单位项的时间裕量值进行计算,以及,用于对端口队列组模块中的 写队列中设定数量的调度单位项的时间裕量值进行计算; 以及,读/写切换控制模块,用于根据所述读/写队列组裕量计算模块计算 的设定数量的调度单位项的时间裕量值选择对应的读队列组或写队列组发送 至多路选择器。
2: 如权利要求1所述的装置,其特征在于,所述读/写切换控制模块选择 读队列组或写队列组中时间裕量值小的访存队列组发送至多路选择器。
3: 如权利要求1所述的装置,其特征在于,还包括:连续长度控制模块, 该连续长度控制模块用于对当前读队列组或写队列组中的调度单位项的长度 进行统计; 所述读/写切换控制模块进一步根据该连续长度控制模块的统计结果选 择对应的读队列组或写队列组发送至多路选择器。
4: 如权利要求3所述的装置,其特征在于,若此时访问是读方向,则进 一步判断此时的读方向的操作是否超过最小连续操作长度,若未超过,则继 续原来方向,否则,依据读队列组或写队列组中时间裕量值进行判断;若此 时访问时写方向,则判断此时的写方向操作是否超过最小连续操作长度,若 未超过,则继续原来方向,否则,依据读队列组或写队列组中时间裕量值进 行判断。
5: 如权利要求3所述的装置,其特征在于,所述连续长度控制模块以读 队列组或写队列组中的调度单位项的操作数量计数或操作时间计时来统计其 长度。
6: 一种应用权利要求1所述装置进行对动态内存进行调度方法,其特征 在于,设置读队列组或写队列组的权重、设置读队列组或写队列组中调度单 位项的个数、设置读操作或写操作时调度单位项的最小连续长度,以及,每 个时钟周期内设置读队列组或写队列组中调度单位项的时间裕量值,并在每 个调度周期执行如下步骤: 步骤一,对读队列组中设定数量的调度单位项的时间裕量值进行计算, 以及,对写队列组中设定数量的调度单位项的时间裕量值进行计算; 步骤二,根据上述计算得出的时间裕量值选择对应的读队列组或写队列 组发送至多路选择器。
7: 如权利要求6所述的方法,其特征在于,所述步骤二中,所选择读队 列组或写队列组中时间裕量值小的访存队列组发送至多路选择器。
8: 如权利要求6所述的方法,其特征在于,以读队列组或写队列组中的 调度单位项的数量或操作时间统计其长度。
9: 如权利要求8所述的方法,其特征在于,所述步骤二中,进一步根据 读操作或写操作时调度单位项的最小连续长度选择对应的读队列组或写队列 组发送至多路选择器。
10: 如权利要求9所述的方法,其特征在于,若此时访问是读方向,则 进一步判断此时的读方向的操作是否超过最小连续操作长度,若未超过,则 继续原来方向,否则,依据读队列组或写队列组中时间裕量值进行判断;若 此时访问时写方向,则判断此时的写方向操作是否超过最小连续操作长度, 若未超过,则继续原来方向,否则,依据读队列组或写队列组中时间裕量值 进行判断。

说明书


一种对动态内存进行动态读写访问分组的调度装置和方法

    【技术领域】

    本发明涉及一种对动态内存进行调度的装置及方法,尤其涉及一种应用于计算机或片上系统的对动态内存进行动态读写访问分组的调度装置及应用该装置进行调度的方法。

    背景技术

    现代计算机系统中,存储子系统是多种设备共享的资源,来自不同设备的请求在发送至内存芯片前必须经过内存控制器的调度仲裁,被选出的请求才能发送给内存芯片。

    动态随机存储器是双向总线,读写切换的时间开销必不可少,当访存操作方向变化时产生的总线切换周期是不可利用的。如果访存序列频繁地切换操作方向,会导致系统可用带宽急剧下降,从而损害有强制性能要求的设备的服务质量。

    动态随机存储器的记忆单元是采用体、行和列地址索引的三维器件,其实际可用带宽极度依赖于具体访存序列。如果访存设备的读写操作比较分散,而且设备较多,那么在多设备交叉访存情况下会导致内存的读写操作频繁切换,切换的读写状态匹配,使服务质量不能达到预期。对于动态随机存储器而言,读写切换是不可避免的,其效率的关键是控制读写切换的频率。如果读写分组与访存请求本身的服务质量没有直接的关系,往往不能在请求延时和访存带宽之间取得平衡。

    针对动态内存访问中,现有的调度算法中或者不考虑读写方向的切换控制,或者设置静态域值进行固定的读写静态分组。这种分组切换固定值的设定,其值是经验性的,没有与应用建立直接联系,而且无法实现动态负载下的效率优化。当读写操作频繁交替发生,而且访存端口也在频繁切换的情况下,访存带宽和系统的服务质量都可能受到较大影响。

    【发明内容】

    本发明针对现有技术中的缺陷,提供一种对动态内存进行动态读写访问分组的内存调度装置和方法,对于读写混合操作较为频繁的系统,本发明可以大大减少动态随机存储器内存的读写切换开销,并将对系统延时的影响降低到最小,从而达到在不影响系统任务的延时情况下提高访存控制器的访存带宽效率的效果。发明可以用于具有服务质量要求或实时性要求的计算机系统及片上系统的内存控制器设计,实现系统级的服务质量的保证和访存效率的提高。

    本发明所述的对动态内存进行动态读写访问分组的调度装置,用于接收多个设备的访存请求并将这些访存请求发送至内存芯片,其包括用于接收访存队列组的多路选择器、及将上述多路选择器进一步选择出的访存操作发送至与内存芯片连接的内存后端调度器,还包括:

    端口队列组模块,用于保存对应所述多个访存设备的读队列组和写队列组;

    读/写裕量寄存器模块,用于对端口队列组模块中的读队列中的调度单位项的时间裕量值进行设置,以及,用于对端口队列组模块中的写队列中的调度单位项的时间裕量值进行设置;

    读/写队列组裕量计算模块,用于对端口队列组模块中的读队列中设定数量的调度单位项地时间裕量值进行计算,以及,用于对端口队列组模块中的写队列中设定数量的调度单位项的时间裕量值进行计算;

    以及,读/写切换控制模块,用于根据所述读/写队列组裕量计算模块计算的设定数量的调度单位项的时间裕量值选择对应的读队列组或写队列组发送至多路选择器。

    本发明所述的装置中,所述读/写切换控制模块选择读队列组或写队列组中时间裕量值小的访存队列组发送至多路选择器。

    本发明所述的装置中,还包括:连续长度控制模块,该连续长度控制模块用于对当前读队列组或写队列组中的调度单位项的长度进行统计;

    所述读/写切换控制模块进一步根据该连续长度控制模块的统计结果选择对应的读队列组或写队列组发送至多路选择器。若此时访问是读方向,则进一步判断此时的读方向的操作是否超过最小连续操作长度,若未超过,则继续原来方向,否则,依据读队列组或写队列组中时间裕量值进行判断;若此时访问时写方向,则判断此时的写方向操作是否超过最小连续操作长度,若未超过,则继续原来方向,否则,依据读队列组或写队列组中时间裕量值进行判断。

    本发明所述的装置中,所述连续长度控制模块以读队列组或写队列组中的调度单位项的操作数量计数或操作时间计时来统计其长度。

    本发明还提供一种应用前述装置进行对动态内存调度的方法,通过设置读队列组或写队列组的权重、设置读队列组或写队列组中调度单位项的个数、设置读操作或写操作时调度单位项的最小连续长度,以及,每个时钟周期内设置读队列组或写队列组中调度单位项的时间裕量值,并在每个调度周期执行如下步骤:

    步骤一,对读队列组中设定数量的调度单位项的时间裕量值进行计算,以及,对写队列组中设定数量的调度单位项的时间裕量值进行计算;

    步骤二,根据上述计算得出的时间裕量值选择对应的读队列组或写队列组发送至多路选择器。

    本发明所述方法的步骤二中,所选择读队列组或写队列组中时间裕量值小的访存队列组发送至多路选择器。

    本发明所述方法中,以读队列组或写队列组中的调度单位项的数量或操作时间统计其长度。

    本发明所述方法的步骤二中,进一步根据读操作或写操作时调度单位项的最小连续长度选择对应的读队列组或写队列组发送至多路选择器。若此时访问是读方向,则进一步判断此时的读方向的操作是否超过最小连续操作长度,若未超过,则继续原来方向,否则,依据读队列组或写队列组中时间裕量值进行判断;若此时访问时写方向,则判断此时的写方向操作是否超过最小连续操作长度,若未超过,则继续原来方向,否则,依据读队列组或写队列组中时间裕量值进行判断。

    本发明以组时间裕量的大小判定读写分组的长度,控制读写方向的动态切换,这种方法将完全属于后端调度的读写分组问题与系统任务的时间裕量结合了起来,调度通过考虑全局的时间裕量(组裕量),赋予了分组长度一个合理的意义,而且又加大了分组长度,因此能够达到减小切换开销、增加带宽同时又满足系统应用的延迟要求的效果。相比现有的固定长度读写分组方案而言,本发明相当灵活,避免很多不需要的调度等待,能够取得更好的服务质量和带宽效率。

    【附图说明】

    图1为本发明所述对动态内存进行动态读写访问分组的调度装置的结构示意图;

    图2为本发明所述应用所述调度装置进行调度的方法流程示意图。

    【具体实施方式】

    下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。

    本发明所述的的对动态内存进行动态读写访问分组的调度装置,支持多端口或多线程对共享动态随机存储器的访问。如图1所示,本发明所述的对动态内存进行动态读写访问分组的调度装置,包括了:端口队列模块、读/写裕量寄存器模块、读/写队列组裕量计算模块、读/写切换控制模块、以及多路选择器和内存后端调度器。

    其中,所述端口队列模块用于保存对应于所述多个访存设备的读队列组和写队列组。端口队列分为读队列和写队列两组,每组中含有多个同方向(即同时为读操作或写操作)的端口队列,分别存放对应于访存设备端口或线程的对应请求序列。当可以向后端发送访存请求时,读端口队列组根据预定的调度策略选择各端口读方向队列中适合的操作,写端口队列组根据预定的策略选择各端口写方向队列中适合的操作。

    所述读/写裕量寄存器模块,用于对端口队列组模块中的读队列中的调度单位项的时间裕量值进行设置,以及,用于对端口队列组模块中的写队列中的调度单位项的时间裕量值进行设置。该读/写裕量寄存器模块即可以为一体设置的对读队列及写队列中的调度单位项的时间裕量值都可设置的模块,也可为分体设置的可分别对读队列及写队列中的调度单位项的时间裕量值进行设置的模块。具体来说,对读队列中的调度单位项的时间裕量值进行设置时,是对时间裕量值进行更新和维护,该更新和维护的时间裕量值与读队列中的有效调度单位项对应;对写队列中的调度单位项的时间裕量值进行设置时,是对时间裕量值进行更新和维护,该更新和维护的时间裕量值与写队列中有效调度单位项对应。

    所述读/写队列组裕量计算模块,用于对端口队列组模块中的读队列中设定数量的调度单位项的时间裕量值进行计算,以及,用于对端口队列组模块中的写队列中设定数量的调度单位项的时间裕量值进行计算。所述读/写队列组裕量计算模块在对上述时间裕量值进行计算时,所述设定数量的读队列中的调度单位项所对应的读队列裕量标记为SRi,将该读队列裕量SRi分别与相应的预先设置的权重Wi相乘的积相加,得到所有读队列裕量的加权和,即为读队列组裕量,标记为SR。所述设定数量的写队列中的调度单位项所对应的写队列裕量标记为SWi,将该写队列裕量SWi分别与相应的预先设置的权重Wi相乘的积相加,得到所有写队列裕量的加权和,即为写队列组裕量,标记为SW。

    所述读/写切换控制模块,用于根据所述读/写队列组裕量计算模块计算的设定数量的调度单位项的时间裕量值选择对应的读队列组或写队列组发送至多路选择器。这里所述的设定数量的调度单位项,即为对应的访存队列组。所述读/写队列组裕量计算模块计算得出的读队列组裕量SR及写队列组裕量SW是读/写切换控制模块选择读队列组或写队列组的依据,该被选择出的读队列组或写队列组被发送至多路选择器,再由多路选择器接收后进行进一步选择并将对应的访存操作发送至连接内存芯片的内存后端调度器。

    所述读/写切换控制模块在根据前述计算得出的访存队列组的时间裕量值选择对应的读队列组或写队列组时,选择读队列组或写队列组中时间裕量值小的访存队列组。

    如图1所示,本发明所述的对动态内存进行动态读写访问分组的调度装置中,还可进一步包括连续长度控制模块,该连续长度控制模块用于对当前读队列组或写队列组中的调度单位项的长度进行统计,即对某个方向的操作进行统计以控制该方向最小的连续操作时间。其长度度量可以采用但不限于操作时间计时或者操作数量计数等方式。所述读/写切换控制模块在前述选择对应访存队列的基础上,进一步根据该连续长度控制模块的统计结果选择对应的读队列组或写队列组发送至多路选择器。若此时访问是读方向,则进一步判断此时的读方向的操作是否超过最小连续操作长度,若未超过,则继续原来方向,否则,依据读队列组或写队列组中时间裕量值进行判断;若此时访问是写方向,则判断此时的写方向操作是否超过最小连续操作长度,若未超过,则继续原来方向,否则,依据读队列组或写队列组中时间裕量值进行判断。多路选择器接收读/写切换控制模块发送的读写方向,再进一步选择访存操作发送至与内存芯片连接的内存后端调度器。

    本发明所述调度的装置根据端口的读写操作方向将端口队列分为读队列和写队列两组,每组内部又分为若干队列,与访问设备端口或线程对应。读/写裕量寄存器模块与每个访存队列中有效的调度单位项对应,而读/写队列组裕量计算模块用于计算各方向的整个队列组的时间裕量,和连续长度控制模块一起用于读/写切换控制模块的读写方向判定,多路选择器根据读写方向判定结果从目标方向队列中将应该传递的访存请求发给后端调度器。

    对于读写混合操作较为频繁的系统,本发明可以大大减少动态随机存储器内存的读写切换开销,并将对系统延时的影响降低到最小,从而达到在不影响系统任务的延时情况下提高访存控制器的访存带宽效率的效果。发明可以用于具有服务质量要求或实时性要求的计算机系统及片上系统的内存控制器设计,实现系统级的服务质量的保证和访存效率的提高。

    本发明还提供一种应用上述装置进行动态内存调度的方法,所述方法包括:

    设置读队列组或写队列组的权重、设置读队列组或写队列组中调度单位项的个数、设置读操作或写操作时调度单位项的最小连续长度,以及,每个时钟周期内设置读队列组或写队列组中调度单位项的时间裕量值,并在每个调度周期执行如下步骤:

    步骤一,对读队列组中设定数量的调度单位项的时间裕量值进行计算,以及,对写队列组中设定数量的调度单位项的时间裕量值进行计算;

    步骤二,根据上述计算得出的时间裕量值选择对应的读队列组或写队列组发送至多路选择器。

    具体步骤如图2所示,包括:

    步骤210,所述队列组的权重Wi根据系统应用的要求而定,组裕量计算中的队列项个数标记为K以及读写方向的最小连续操作长度分别标记为THR/THW。所述Wi值反映了端口i在组裕量计算中的权重,与K一起用于下述步骤中组裕量的计算,而THR值用于控制读方向上的最小连续传输长度,而THW值用于控制写方向上的最小连续传输长度。Wi的初始取值可以为1,K的取值建议在1-所有项之间,但是K越大,硬件开销越大。具体数值可以实验调整。

    步骤220,每个时钟周期,读/写裕量寄存器模块根据队列的请求进出情况和访存裕量计算算法设置、更新和维护所有有效的裕量寄存器,即对端口队列组模块中的读队列中的调度单位项的时间裕量值和写队列中的调度单位项的时间裕量值进行设置,得到每个有效调度单位项的时间裕量值。同时连续长度计时器每个时钟周期自加1。

    步骤230,在每个调度周期,读/写队列组裕量计算模块分别计算系统的读队列组裕量SR以及写队列组裕量SW。

    本步骤中,读/写队列组裕量计算模块将根据步骤220得到的每个读访存队列最早的前K项的有效请求裕量进行累加,得到每个读访存队列的队列裕量SRi,其中SRi表示端口i读队列的队列裕量;然后,将所得到的读队列裕量SRi分别与相应的权重Wi相乘的积相加,得到所有读队列裕量的加权和,即为读队列组裕量SR;

    所述读/写队列组裕量计算模块将根据步骤220得到的每个写访存队列最早的前K项的有效请求裕量进行累加,得到每个写访存队列的队列裕量SRiSWi表示端口i写队列的队列裕量;然后,将所得到的写队列裕量SWi分别与相应的权重Wi相乘的积相加,得到所有写队列裕量的加权和,即为写队列组裕量SW。

    步骤240,此时队列满空状态,若反方向队列为空,则维持原来方向,转到步骤270;否则,转到步骤250。

    步骤250,如果此时访问是读方向,则判断此时的读方向操作是否超过最小连续操作度量THR,如果未超过,继续原来方向,转到步骤270,否则转步骤260;如果访问是写方向,则判断此时的写方向操作是否超过了最小写连续度量THW,如果未超过,继续原来方向,转步骤270,否则转到步骤260。

    步骤260,如果此时访问是读方向,而且已经达到而且SR>SW,则切换到写,否则,保持读方向,转到步骤270;

    同样,如果此时访问是写方向,且已经达到而且SR<SW,则切换到读,否则,保持写方向,转到步骤270。

    上述选择读方向或写方向时,是选择读队列组或写队列组中时间裕量值小的访存队列组。

    步骤270,在确定读写方向后,从相应方向的队列中选择对应的访存请求操作发给后端调度器。

    步骤280,所述后端调度器根据内存状态和请求情况处理接收请求,并将相应操作翻译为存储器相应命令,更新内部状态。

    在上述实施方案中,对最小连续传输长度的控制是采用计时器的寄存器实现,即通过操作时间来控制该方向最小的连续操作长度。该最小连续长度的确定可以读队列组或写队列组中的调度单位项的数量或操作时间来统计。具体实施中不限于这种方法,其确定方法也可以视步骤220的调度方法而定,比如220中采用bank的方式,那么连续长度度量也可采用bank号的变化来衡量,比如一个内存有4个bank,则请求按地址落在bank0,bank1,bank2,bank3的顺序发送;发送请求的顺序也可以为bank0,bank1,bank3或者bank0,bank3。轮完一轮作为最小操作长度的度量。

    本发明以组时间裕量的大小判定读写分组的长度,控制读写方向的动态切换,这种方法将完全属于后端调度的读写分组问题与系统任务的时间裕量结合了起来,调度通过考虑全局的时间裕量(组裕量),赋予了分组长度一个合理的意义,而且又加大了分组长度,因此能够达到减小切换开销、增加带宽同时又满足系统应用的延迟要求的效果。相比现有的固定长度读写分组方案而言,本发明相当灵活,避免很多不需要的调度等待,能够取得更好的服务质量和带宽效率。

    尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。

一种对动态内存进行动态读写访问分组的调度装置和方法.pdf_第1页
第1页 / 共14页
一种对动态内存进行动态读写访问分组的调度装置和方法.pdf_第2页
第2页 / 共14页
一种对动态内存进行动态读写访问分组的调度装置和方法.pdf_第3页
第3页 / 共14页
点击查看更多>>
资源描述

《一种对动态内存进行动态读写访问分组的调度装置和方法.pdf》由会员分享,可在线阅读,更多相关《一种对动态内存进行动态读写访问分组的调度装置和方法.pdf(14页珍藏版)》请在专利查询网上搜索。

本发明公开了一种对动态内存进行动态读写访问分组的调度装置和方法,所述装置包括多路选择器、内存后端调度器,还包括:端口队列组模块,读/写裕量寄存器模块,读/写队列组裕量计算模块,读/写切换控制模块。所述方法通过设置读队列组或写队列组的权重、设置读队列组或写队列组中调度单位项的个数、设置读操作或写操作时调度单位项的最小连续长度,每个时钟周期内设置读队列组或写队列组中调度单位项的时间裕量值,并在每个调度。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1