用于动态优先级控制的系统和方法

文档序号:6532902阅读:188来源:国知局
用于动态优先级控制的系统和方法
【专利摘要】提供了一种用于动态地管理系统控制器的先进先出(FIFO)命令队列的系统和方法。将一个或者多个命令接收到命令队列中,命令与优先级参数关联。确定将在命令队列中被执行的排在第一位的当前命令,该当前命令与第一优先级参数关联。确定与第二优先级参数关联的第二命令,第二优先级参数是在与该一个或者多个命令关联的优先级参数之中最大的。至少部分地基于第二优先级参数计算用于该当前命令的最终优先级参数。
【专利说明】用于动态优先级控制的系统和方法
[0001] 相关申请的夺叉引用
[0002] 本公开内容要求于2012年1月27日递交的、申请号为61/591,705的美国临时专 利申请的优先权和权益,该申请的全部内容通过引用并入于此。

【技术领域】
[0003] 在本专利文献中描述的技术总体上涉及数据处理,并且更特别地涉及数据处理中 的优先级控制。

【背景技术】
[0004] 存储器系统经常包括半导体存储器设备,比如动态随机存取存储器(DRAM)、同步 0狀1(50狀1〇、双数据速率(001?、001?2、001?3等)50狀1等。各种源设备(比如处理器、外围 设备(例如,输入/输出设备)、音频和视频设备)可以生成存储器操作命令,包括用于从存 储器设备向源设备传送数据的读取存储器操作和从源设备向存储器设备传送数据的写入 存储器操作。通常,存储器控制器被实施用于从源设备接收存储器操作命令以及控制存储 器设备以响应于命令执行存储器操作。存储器控制器经常包括用于捕获存储器操作命令的 命令队列。
[0005] 可以作为命令的部分向存储器控制器传输存储器操作命令的优先级参数(例如, 服务质量(QoS)参数)。存储器控制器可以在来自不同命令队列的存储器操作命令之中仲 裁并且基于它们的相应的优先级参数调度这样的命令的执行。图1图示了调度存储器操作 命令的执行的存储器控制器的示例。存储器控制器100中的仲裁器部件108基于存储器操 作命令104的优先级参数106调度来自多个命令队列102的存储器操作命令104的执行。 如在图1中所示,存储器控制器100包括分别对应于多个命令队列102的多个系统接口端 口(SIP) 110。命令队列存储各自包括优先级参数106 (例如,QoS)的一个或者多个存储器操 作命令104。每个命令队列具有在命令队列的顶部并且因此将排在第一位被服务的当前命 令。仲裁器部件108比较不同命令队列中的当前命令的优先级参数(例如,QoS),并且选择 将被服务的具有最高优先级参数的一个当前命令。例如,命令队列经常以先进先出(FIFO) 方式操作。也就是说,命令队列的当前命令是比命令队列中的其它命令更早被接收的命令。


【发明内容】

[0006] 根据这里描述的教导,提供了一种用于动态地管理系统控制器的先进先出(FIFO) 命令队列的系统和方法。将一个或者多个命令接收到命令队列中,命令与优先级参数关联。 确定将在命令队列中被执行的排在第一位的当前命令,该当前命令与第一优先级参数关 联。确定与第二优先级参数关联的第二命令,第二优先级参数是在与该一个或者多个命令 关联的优先级参数之中最大的。至少部分地基于第二优先级参数计算用于该当前命令的最 终优先级参数。
[0007] 在另一实施例中,一种用于动态地管理系统控制器的先进先出(FIFO)命令队列 的集成电路包括:接口电路,被配置用于将一个或者多个命令接收到命令队列中,命令与优 先级参数关联;监控电路,被配置用于确定将在命令队列中被执行的排在第一位的当前命 令以及确定与第二优先级参数关联的第二命令,该当前命令与第一优先级参数关联,第二 优先级参数是在与该一个或者多个命令关联的优先级参数之中最大的;以及选择电路,被 配置用于至少部分地基于第二优先级参数计算用于该当前命令的最终优先级参数,以及在 最终优先级参数满足预定条件时输出最终优先级参数以便该当前命令被选择用于执行。
[0008] 在又一实施例中,一种用于动态地管理系统控制器的先进先出(FIFO)命令队列 的系统包括一个或者多个数据处理器以及编码有编程指令的计算机可读存储器,该编程指 令用于命令该一个或者多个数据处理器执行步骤。该步骤包括:将一个或者多个命令接收 到命令队列中,命令与优先级参数关联;确定将在命令队列中被执行的排在第一位的当前 命令,该当前命令与第一优先级参数关联;以及确定与第二优先级参数关联的第二命令,第 二优先级参数是在与该一个或者多个命令关联的优先级参数之中最大的。该步骤还包括至 少部分地基于第二优先级参数计算用于该当前命令的最终优先级参数,以及在最终优先级 参数满足预定条件时输出最终优先级参数以便该当前命令被选择用于执行。

【专利附图】

【附图说明】
[0009] 图1图示了调度存储器操作命令的执行的存储器控制器的示例。
[0010] 图2图示了 FIFO命令队列的示例。
[0011] 图3图示了生成用于命令队列中的命令的动态优先级参数的示例。
[0012] 图4图示了生成用于命令队列中的命令的动态优先级参数的另一示例。
[0013] 图5图示了命令队列中的命令的用于生成动态优先级参数的示例数据字段。
[0014] 图6图示了基于与命令队列关联的动态优先级参数调度存储器操作命令的执行 的存储器控制器的示例。

【具体实施方式】
[0015] 再次参照图1,仲裁器部件108选择多个当前命令中的将被服务的、具有最高优先 级参数的当前命令。因此,如果特定命令队列的当前命令具有低优先级参数,则这样的当前 命令在其可以被服务之前可能需要等待长时间段。命令队列中的其它命令被当前命令阻 塞,即使它们可能具有高优先级参数。
[0016] 图2图示了 FIFO命令队列的示例。具有高优先级参数的命令(例如,命令204)被 具有低优先级参数的当前命令202阻塞。如在图2中所示,存储器操作命令包括用于对控 制排序的标识号("ID")、指示用于访问存储器中的数据的存储器位置的地址("Addr") 以及指示命令有多么紧急的优先级参数("QoS")。具有低优先级参数"1"(例如,QoS)的 存储器操作命令202位于命令队列200的顶部并且是命令队列200的当前命令。因为当前 命令202具有低优先级参数,其可能在长时间内不会被服务。因此,即使命令队列200中的 其它命令可能具有高优先级参数,它们也不能得以被服务。例如,另一存储器操作命令204 具有非常高的优先级参数" 15"(例如,QoS)。然而,命令204在命令队列200的中部,并且 因此直到在命令204之前的所有命令都被服务之前它将没有可能被服务。
[0017] 作为示例,液晶显示器(IXD)控制器发送用于从存储器读取数据的命令。起初, LCD缓冲器具有待显示的充足数据,并且LCD控制器向与LCD关联的命令队列发送具有低优 先级参数(例如,QoS)的读取命令。存储器控制器并未及时服务于这些读取命令,因为来 自其它命令队列的命令可能具有更高优先级参数。稍后,在缓冲器不具有待显示的充足数 据时,LCD控制器向与LCD关联的同一命令队列发送具有高优先级参数的读取命令。具有 低优先级参数的先前读取命令仍然在命令队列中等待执行,并且阻塞具有高优先级参数的 随后读取命令。这时,在缓冲器不具有待显示的数据时错误可能发生。
[0018] 经常使用用于特定系统接口端口的多个物理命令队列的虚拟通道方式或者多通 道方式可以改善该问题,因为具有不同优先级参数的命令可以被输入到不同命令队列中并 且具有高优先级参数的命令可以不被具有低优先级参数的命令阻塞。然而,实现虚拟通道 方式或者多通道方式非常昂贵。另外,这样的虚拟通道方式或者多通道方式通常将遭遇不 同问题。
[0019] 源设备经常需要访问存储器的多个连续位置。对于每个位置,源设备通常发送出 命令。来自源设备的这些命令共享同一标识号。通常,优选地按照发送出这些命令的顺序 执行它们,从而使得存储器的目标位置可以被连续地访问。用于特定系统接口端口的单个 FIFO命令队列可以经常实现这一方式而没有任何问题,因为首先被接收的问题将首先被服 务。然而,在虚拟通道方式或者多通道方式下,具有同一标识号的命令经常被发送到不同物 理命令队列。通常需要附加机制以按顺序执行具有同一标识号的命令,这将增加系统的复 杂性和成本。
[0020] 本公开内容呈现了一种方式,该方式允许命令队列中的命令根据命令队列的状态 被及时服务。图3图示了生成用于命令队列中的命令的动态优先级参数的示例。仲裁器部 件302接收基于命令队列306的状态被确定的动态优先级参数304 ( "Qos_arb")。如果动 态优先级参数304高于与其他命令队列关联的其它优先级参数,则仲裁器部件302选择命 令队列306的将被服务的当前命令308。在具有高优先级参数的命令晚于当前命令308被 接收到命令队列306中时,动态优先级参数304被增大以加速命令队列306的服务。在具 有高优先级参数的命令被服务时,动态优先级参数304被减小以减速命令队列306的服务。
[0021] 具体而言,可以实现算法以动态地确定命令队列306中的最高优先级参数。具 有最高优先级参数的命令已位于命令队列306中多久可以被考虑以确定动态优先级参数 304。作为示例,命令318被确定为在命令队列306中具有最高优先级参数316 ("QoS_Max")。 如果命令318已位于命令队列306中长于等待时间阈值,则动态优先级参数304被确定为 等于最高优先级参数316 ( "QoS_Max")。在另一方面,如果命令318已位于命令队列306 中不长于等待时间阈值,则动态优先级参数304被确定为等于最高优先级参数316 ( "Q〇S_ Max")和当前命令308的当前优先级参数314的总和的一半。备选地,在一些情形中,动态 优先级参数304被确定为等于最高优先级参数316 ( "QoS_Max"),无论命令318位于命令 队列306中多久。
[0022] 图4图示了生成用于命令队列中的命令的动态优先级参数的另一示例。如在图4 中所示,选择部件610(例如,可编程寄存器)向复用器612输出信号622("Q 〇S_sel")以 选择三个模式之一以用于生成用于命令队列606的动态优先级参数604。在第一模式下, 动态优先级参数604总是被确定为等于命令队列606中的当前命令608的当前优先级参数 614。在第二模式下,动态优先级参数604总是被确定为等于命令队列606中的最高优先级 参数616。另外,在第三模式下,复用器612输出修改的优先级参数620( "QoS")作为动态 优先级参数604。
[0023] 例如,修改的优先级参数620可以基于具有最高优先级参数616的命令已位于命 令队列606中多久被确定。如果命令618已位于命令606中长于第一等待时间阈值,则修 改的优先级参数620被确定为等于最大优先级参数616。在另一方面,如果命令618已位于 命令队列606中不长于第一等待时间阈值,则修改的优先级参数620被确定为等于最大优 先级参数616和当前优先级参数614的总和的一半。
[0024] 另外,当前命令608已位于命令队列606中多久可以被考虑以确定修改的优先级 参数620。作为示例,如果命令618已位于命令队列606中长于第一等待时间阈值并且当 前命令608已位于命令队列606中长于第二等待时间阈值,则修改的优先级参数620被确 定为等于第一值。如果命令618已位于命令队列606中不长于第一等待时间阈值并且当前 命令608已位于命令队列606中长于第二等待时间阈值,则修改的优先级参数620被确定 为等于第二值。如果命令618已位于命令队列606中长于第一等待时间阈值并且当前命令 608已位于命令队列606中不长于第二等待时间阈值,则修改的优先级参数620被确定为等 于第三值。另外,如果命令618已位于命令队列606中不长于第一等待时间阈值并且当前 命令608已位于命令队列606中不长于第二等待时间阈值,则修改的优先级参数620被确 定为等于第四值。例如,第一值和第三值等于最大优先级参数616,并且第二值和第四值等 于最大优先级参数616和当前优先级参数614的总和的一半。
[0025] 图5图示了命令队列中的命令的用于生成动态优先级参数的示例数据字段。命令 队列400中的每个命令包括与生成动态优先级参数有关的三个数据字段:指示命令是否有 效的有效性因素("V")、指示命令的等待时间(即,命令位于命令队列400中多久)的等待 时间因素("WT")以及原优先级参数("Q 〇S_〇rg")。例如,在命令的有效性因素为1时,命 令有效,以及在有效性因素为〇时,命令无效。在有效命令被接收到命令队列400中时该命 令的等待时间因素开始增加,直到达到最大值,并且在命令被弹出命令队列400时被清零。 读取指针410 ( "rd_ptr")指向当前命令412,并且在当前命令412被弹出命令队列400时 增加一。写入指针408( "wr_ptr")指向命令队列400中的用于接收新命令的下一可用位 置,并且在新命令被接收时增加一。作为示例,命令队列400以循环FIFO方式被管理。
[0026] 二维数组 QoS_Info[Q_Size_l : 0] [Entry_Size_l : 0]可以被定义用于存储用 于生成动态优先级参数的上述数据字段的信息,其中Q_Size指示在命令队列400中可以存 储多少命令,并且Entry_Si Ze代表有效性因素、等待时间因素和原优先级参数的大小的总 和。
[0027] 命令队列400中的有效命令的最大优先级参数可以被如下确定:
[0028] Qos_max=0; max-loc=0; For (i=0; I<Q_Size; i++){ If ((QoS_max<QoS_Info[i].QoS_org) & (QoS_info[i].V=l)) QoS_max=QoS_info[i].QoS_org, max_loc=i; }
[0029] 具有最大优先级参数的命令的等待时间因素被如下确定:
[0030] WT_Max_QoS = QoS_Info [max_loc]. WT
[0031] 当前命令的等待时间因素被如下确定:
[0032] WT_Cur = QoS_Info [rd_ptr]. WT
[0033] 对于在图3中讨论的第一模式,动态优先级参数被如下确定:
[0034] QoS, = QoS_Info[rd_ptr]. QoS_org
[0035] 对于第二模式,动态优先级参数被如下确定:
[0036] QoS' = QoS_max
[0037] 另外,对于第三模式,动态优先级参数基于第一等待时间阈值("THR1")和第二等 待时间阈值("THR2")被如下确定:
[0038]

【权利要求】
1. 一种用于动态地管理系统控制器的先进先出(FIFO)命令队列的方法,所述方法包 括: 将一个或者多个命令接收到所述命令队列中,命令与优先级参数关联; 确定将在所述命令队列中被执行的排在第一位的当前命令,所述当前命令与第一优先 级参数关联; 确定与第二优先级参数关联的第二命令,所述第二优先级参数是在与所述一个或者多 个命令关联的优先级参数之中最大的; 至少部分地基于所述第二优先级参数计算用于所述当前命令的最终优先级参数;以及 在所述最终优先级参数满足预定条件时输出所述最终优先级参数以便所述当前命令 被选择用于执行。
2. 根据权利要求1所述的方法,还包括: 计算用于所述系统控制器中的第二FIFO命令队列中的第二当前命令的第二最终优先 级参数; 其中如果所述最终优先级参数大于所述第二最终优先级参数,则所述最终优先级参数 满足所述预定条件以使得所述当前命令被选择用于执行。
3. 根据权利要求1所述的方法,还包括: 计算用于所述系统控制器中的第二FIFO命令队列中的第二当前命令的第二最终优先 级参数; 计算用于所述系统控制器中的第三FIFO命令队列中的第三当前命令的第三最终优先 级参数; 其中如果所述最终优先级参数大于所述第二最终优先级参数和所述第三最终优先级 参数二者,则所述最终优先级参数满足所述预定条件以使得所述当前命令被选择用于执 行。
4. 根据权利要求1所述的方法,其中: 所述当前命令与第一等待时间参数关联,所述第一等待时间参数指示所述当前命令在 所述命令队列中的持续时间;以及 所述第二命令与第二等待时间参数关联,所述第二等待时间参数指示所述第二命令在 所述命令队列中的持续时间。
5. 根据权利要求4所述的方法,其中: 在所述第二等待时间参数大于预定阈值时,将所述最终优先级参数计算为等于第一 值;以及 在所述第二等待时间参数小于或者等于所述预定阈值时,将所述最终优先级参数计算 为等于第二值。
6. 根据权利要求5所述的方法,其中所述第一值等于所述第二优先级参数,并且所述 第二值等于所述第二优先级参数和所述第一优先级参数的总和的一半。
7. 根据权利要求4所述的方法,其中: 在所述第二等待时间参数大于第一阈值并且所述第一等待时间参数大于第二阈值时, 将所述最终优先级参数计算为等于第一值; 在所述第二等待时间参数小于或者等于所述第一阈值并且所述第一等待时间参数大 于所述第二阈值时,将所述最终优先级参数计算为等于第二值; 在所述第二等待时间参数大于所述第一阈值并且所述第一等待时间参数小于或者等 于所述第二阈值时,将所述最终优先级参数计算为等于第三值;以及 在所述第二等待时间参数小于或者等于所述第一阈值并且所述第一等待时间参数小 于或者等于所述第二阈值时,将所述最终优先级参数计算为等于第四值。
8. 根据权利要求1所述的方法,其中将所述最终优先级参数计算为等于所述第二优先 级参数。
9. 一种用于动态地管理系统控制器的先进先出(FIFO)命令队列的集成电路,所述集 成电路包括: 接口电路,被配置用于将一个或者多个命令接收到所述命令队列中,命令与优先级参 数关联; 监控电路,被配置用于确定将在所述命令队列中被执行的排在第一位的当前命令以及 确定与第二优先级参数关联的第二命令,所述当前命令与第一优先级参数关联,所述第二 优先级参数是在与所述一个或者多个命令关联的优先级参数之中最大的;以及 选择电路,被配置用于至少部分地基于所述第二优先级参数计算用于所述当前命令的 最终优先级参数以及在所述最终优先级参数满足预定条件时输出所述最终优先级参数以 便所述当前命令被选择用于执行。
10. 根据权利要求9所述的集成电路,还包括: 第二选择电路,被配置用于计算用于所述系统控制器中的第二FIFO命令队列中的第 二当前命令的第二最终优先级参数; 其中如果所述最终优先级参数大于所述第二最终优先级参数,则所述最终优先级参数 满足所述预定条件以使得所述当前命令被选择用于执行。
11. 根据权利要求9所述的集成电路,还包括: 第二选择电路,被配置用于计算用于所述系统控制器中的第二FIFO命令队列中的第 二当前命令的第二最终优先级参数; 第三选择电路,被配置用于计算用于所述系统控制器中的第三FIFO命令队列中的第 三当前命令的第三最终优先级参数; 其中如果所述最终优先级参数大于所述第二最终优先级参数和所述第三最终优先级 参数二者,则所述最终优先级参数满足所述预定条件以使得所述当前命令被选择用于执 行。
12. 根据权利要求9所述的集成电路,其中: 所述当前命令与第一等待时间参数关联,所述第一等待时间参数指示所述当前命令在 所述命令队列中的持续时间;以及 所述第二命令与第二等待时间参数关联,所述第二等待时间参数指示所述第二命令在 所述命令队列中的持续时间。
13. 根据权利要求12所述的集成电路,其中: 在所述第二等待时间参数大于预定阈值时,所述选择电路还被配置用于将所述最终优 先级参数计算为等于第一值;以及 在所述第二等待时间参数小于或者等于所述预定阈值时,所述选择电路还被配置用于 将所述最终优先级参数计算为等于第二值。
14. 根据权利要求12所述的集成电路,其中: 在所述第二等待时间参数大于第一阈值并且所述第一等待时间参数大于第二阈值时, 所述选择电路还被配置用于将所述最终优先级参数计算为等于第一值; 在所述第二等待时间参数小于或者等于所述第一阈值并且所述第一等待时间参数大 于所述第二阈值时,所述选择电路还被配置用于将所述最终优先级参数计算为等于第二 值; 在所述第二等待时间参数大于所述第一阈值并且所述第一等待时间参数小于或者等 于所述第二阈值时,所述选择电路还被配置用于将所述最终优先级参数计算为等于第三 值;以及 在所述第二等待时间参数小于或者等于所述第一阈值并且所述第一等待时间参数小 于或者等于所述第二阈值时,所述选择电路还被配置用于将所述最终优先级参数计算为等 于第四值。
15. 根据权利要求9所述的集成电路,其中,所述选择电路还被配置用于将所述最终优 先级参数计算为等于所述第二优先级参数。
16. -种用于动态地管理系统控制器的先进先出(FIFO)命令队列的系统,所述系统包 括: 一个或者多个数据处理器; 编码有编程指令的计算机可读存储器,所述编程指令用于命令所述一个或者多个数据 处理器执行步骤,所述步骤包括: 将一个或者多个命令接收到所述命令队列中,命令与优先级参数关联; 确定将在所述命令队列中被执行的排在第一位的当前命令,所述当前命令与第一优先 级参数关联; 确定与第二优先级参数关联的第二命令,所述第二优先级参数是在与所述一个或者多 个命令关联的优先级参数之中最大的; 至少部分地基于所述第二优先级参数计算用于所述当前命令的最终优先级参数;以及 在所述最终优先级参数满足预定条件时输出所述最终优先级参数以便所述当前命令 被选择用于执行。
17. 根据权利要求16所述的系统,其中在所述计算机可读存储器中编码的所述编程指 令被适配用于命令所述一个或者多个数据处理器执行进一步的步骤,所述进一步的步骤包 括: 计算用于所述系统控制器中的第二FIFO命令队列中的第二当前命令的第二最终优先 级参数; 其中如果所述最终优先级参数大于所述第二最终优先级参数,则所述最终优先级参数 满足所述预定条件以使得所述当前命令被选择用于执行。
18. 根据权利要求16所述的系统,其中在所述计算机可读存储器中编码的所述编程指 令被适配用于命令所述一个或者多个数据处理器执行进一步的步骤,所述进一步的步骤包 括: 计算用于所述系统控制器中的第二FIFO命令队列中的第二当前命令的第二最终优先 级参数; 计算用于所述系统控制器中的第三FIFO命令队列中的第三当前命令的第三最终优先 级参数; 其中如果所述最终优先级参数大于所述第二最终优先级参数和所述第三最终优先级 参数二者,则所述最终优先级参数满足所述预定条件以使得所述当前命令被选择用于执 行。
19. 根据权利要求16所述的系统,其中: 所述当前命令与第一等待时间参数关联,所述第一等待时间参数指示所述当前命令在 所述命令队列中的持续时间;以及 所述第二命令与第二等待时间参数关联,所述第二等待时间参数指示所述第二命令在 所述命令队列中的持续时间。
20. 根据权利要求19所述的系统,其中: 在所述第二等待时间参数大于预定阈值时,将所述最终优先级参数计算为等于第一 值;以及 在所述第二等待时间参数小于或者等于所述预定阈值时,将所述最终优先级参数计算 为等于第二值。
【文档编号】G06F13/16GK104160384SQ201380007046
【公开日】2014年11月19日 申请日期:2013年1月25日 优先权日:2012年1月27日
【发明者】朱军, J·J·曹, T-J·扬, R·鲁 申请人:马维尔国际贸易有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1