专利名称:存储器请求调度的应用程序选择的利记博彩app
存储器请求调度的应用程序选择相关申请的引用本申请与下述共同待审申请相关2009年7月22日提交的申请序列号 12/507,696(代理案卷号 VXZ01-012-US),题为 “Batch Scheduling With Segregation"; 以及2009年7月23日提交的申请序列号12/508,457(代理案卷号ZAV01-013-US),题为 "Scheduling Of Threads By Batch Scheduling,,。
背景技术:
在芯片多处理器(CMP)系统中,DRAM系统在内核之间共享。在共享DRAM系统中, 来自一个线程的请求不但通过引起组(bank)冲突、总线冲突或行缓冲器冲突来延迟来自其他线程的请求,而且还破坏其他线程的DRAM组级别并行性。具有延迟的请求(否则,这些请求会交叠)实际上成为串行的。结果,公平性和系统吞吐量都会劣化,并且一些线程可能在较长时段上处于饥饿状态。一种提供公平和高性能存储器调度的方法是使用称为并行性意识批调度 (PAR-BS)的调度算法,如 Onur Mutlu禾口 Thomas Moscibroda 的"Parallelism—Aware Batch Scheduling :Enhancing both Performance and Fairness of Shared DRAM Systems,,, isca, pp. 63-74, 2008 (2008 International Symposium on Computer Architecture)中所示,其全部内容(除了其中与本申请不一致的内容)通过参考合并在此。PAR-BS设计基于两个思想(1)请求分批;以及(2)并行性意识存储器调度。首先,PAR-BS成批地处理DRAM 请求,以提供公平性和避免请求饥饿。其次,为优化系统吞吐量,PAR-BS采用并行性意识 DRAM调度策略,该策略旨在在DRAM组中并行处理来自线程的请求,从而减少线程经历的存储器有关滞延时间。PAR-BS结合了对系统级线程优先级的支持,并能够向具有不同优先级的线程提供不同的服务级别,包括纯机会主义的服务。
发明内容
在第一方面,本公开大体描述了一种对针对存储器中的数据的请求进行调度的方法,包括利用应用程序选择调度算法;指示存储器控制器使用所选调度算法来调度请求; 以及根据调度算法,利用存储器控制器来调度请求。在第二方面,本公开大体描述了一种对针对存储器中的数据的请求进行调度的计算机程序产品,具有在计算机可读介质中编码的软件。该软件包括在执行时可操作用于如下的指令利用应用程序选择调度算法;指示存储器控制器使用调度算法来调度请求;以及根据调度算法,利用存储器控制器来调度请求。在第三方面,本公开大体描述了一种计算机系统,具有多个内核、可操作性耦合至所述多个内核的包含数据的存储器、可操作性耦合至所述多个内核的存储器控制器、以及可操作性耦合至所述多个内核的计算机可读介质。计算机可读介质包括计算机可执行指令,当由计算机系统执行时,计算机可执行指令将计算机系统配置为利用应用程序选择调度算法;指示存储器控制器使用调度算法来调度请求;以及根据调度算法,利用存储器控
4制器来调度请求。以上发明内容仅仅是说明性的,而绝不是限制性的。除了上述示例性的各方案、 各实施例和各特征之外,参照附图和以下详细说明,将清楚其他方案、其他实施例和其他特征。
在本说明书的总结部分特别指出并明确要求保护主题。根据以下说明和所附权利要求,结合附图,本公开的前述和其他特征将更加清楚。在认识到这些附图仅仅示出了根据本公开的一些示例且因此不应被认为是限制本公开范围的前提下,通过使用附图更加具体和详细地描述本公开,附图中图1示出了计算机系统;图2示出了由操作系统执行应用程序;图3示出了将应用程序划分成线程的示意表示,包括图3A中存储器控制器的调度器的详细视图,其中线程发布发送给存储器控制器的请求;图4示出了带隔离的批调度的方法、装置(系统)和计算机程序产品的流程图示例;图5示出了针对带隔离的批调度,成批地布置来自线程的请求的示意表示;以及图6示出了全部根据本公开的至少一些实施例布置的方法、装置(系统)和计算机程序产品的流程图示例。
具体实施例方式下面描述给出了多种示例以及具体细节,以提供对所要求保护的主题的充分理解。然而,本领域技术人员将理解,可以在没有本文公开的一些或更多具体细节的情况下实施要求保护的主题。此外,在一些情况下,不详细描述已知的方法、过程、系统、部件和/或电路,以避免不必要地模糊要求保护的主题。在以下详细说明中,参考了作为详细说明的一部分的附图。在附图中,类似符号通常表示类似部件,除非上下文另行指明。
具体实施方式
部分、附图和权利要求书中记载的示例性实施例并不是限制性的。在不脱离在此所呈现主题的精神或范围的情况下,可以利用其他实施例,且可以进行其他改变。应当理解,在此一般性记载以及附图中图示的本公开的各方案可以多种不同配置来设置、替换、组合和设计, 它们全部都在本公开中明确考虑并形成本公开一部分。在以下描述中,可以提供对例如计算机和/或计算系统存储器等计算系统内存储的数据比特和/或二进制数字信号的操作的算法和/或符号表示。一般将算法看作引导至所需结果的自相一致的操作序列和/或类似处理,其中操作可以包括对物理量的物理操纵,物理量可以采用电、磁和/或电磁信号的形式,能够被存储、传送、组合、比较和/或以其他方式操纵。在多种情况下,这种信号可以称为比特、数据、值、元素、符号、字符、项、数、数值等。然而本领域技术人员将认识到,这些术语可以用于暗指物理量。因此,当在本说明书中使用例如“存储”、“处理”、“获取”、“计算”、“确定”等术语时,这些术语可以指例如计算机或类似电子计算设备(例如蜂窝电话)等计算平台的动作,该计算平台在计算机平台的处理器、存储器、寄存器等内操纵和/或变换表示为物理量(包括电子和/或磁量)的数据。
本公开尤其涉及与存储器请求调度的应用程序选择有关的方法、装置、系统和计算机程序产品。本公开大体上也利用如下发现使用应用程序从多个调度算法中选择用于调度请求的调度算法,并指示存储器控制器使用所选调度算法。图1示出了根据本公开至少一些实施例布置的计算机系统。图1示出了计算机 100包括处理器110、存储器120和一个或多个驱动130。驱动130及其关联的计算机存储介质可以提供为计算机100提供对计算机可读指令、数据结构、程序模块和其他数据的存储。驱动130可以包括操作系统140、应用程序150、程序模块160和数据库180。操作系统 140和/或应用程序150例如可以包括使计算机100执行图6所示的功能和/或操作的程序指令,例如作为应用的一部分的调度算法153。计算机100可以包括用户输入设备190, 通过用户输入设备190,用户可以输入命令和数据。输入设备可以包括电子数字化仪、麦克风、键盘和指定设备(指定设备通常称为鼠标、轨迹球或触摸板)。其他输入设备可以包括操纵杆、游戏板、圆盘卫星天线、扫描仪等。上述和其他输入设备可以通过用户输入接口耦接至处理器110,用户输入接口可以耦接至系统总线,或者可以通过其他接口或总线结构(例如并行端口、游戏端口或通用串行总线(USB)等)连接。计算机100可以包括外围输出设备,例如扬声器、打印机或显示器202,外围输出设备可以通过输出外围接口 194等连接。计算机100可以配置为在使用至一个或多个计算机(例如连接至网络接口 196的远程计算机)的逻辑连接的联网环境中操作。远程计算机可以是个人计算机(PC)、服务器、 路由器、网络PC、对等设备或其他常见网络节点,并且可以包括上述相对于计算机100所述的元件中的许多或者全部。联网环境可以包括办公室、企业广域网(WAN)、局域网(LAN)、内联网和互联网。在一个示例中,计算机100可以是数据从其迁出的源机器,而远程计算机可以包括目的地机器,反之亦然。源和目的地机器可以不通过网络108或任何其他手段连接,而是数据可以经由任何能够由源平台写入并由目的地平台读取的介质来迁出。在LAN或WLAN联网环境中, 计算机100可以通过网络接口 196或适配器连接至LAN或WAN。在WAN联网环境中,计算机 100可以包括调制解调器或用于通过例如互联网或网络108等WAN建立通信的其他手段。 可以使用在计算机之间建立通信链接的其他手段。计算机外围设备可以包括通过系统总线耦接至计算机100的处理器110和存储器 120的任何设备。计算机外围设备可以包括与输出外围接口连接的任何设备,包括显示器 202、打印机、扬声器、驱动130、用户输入设备190以及网络接口 196,用户输入设备190例如包括键盘、鼠标和麦克风。计算机外围设备的部件可以包括计算机外围设备内的任何设备,该设备可以使用电能并且可以是任何设备,例如扬声器、照明元件(例如发光二极管或用于为显示器提供照明的背光)、显示元件(例如IXD、LED、OLED、CRT或等离子体显示器)、 或者半导体芯片(例如中央处理器(CPU)、图像处理单元(GPU)、存储器)。图2示出了根据本公开至少一些实施例布置的由操作系统执行应用程序。如图2 所示,操作系统140可以执行来自驱动130的应用程序150。操作系统140和/或应用程序150可以包括用于使计算机100执行图6所指定的功能和/或操作的程序指令。应用程序150可以是可由多处理器111中的操作系统140执行的任何应用、程序、程序部分或线程。应用程序150可以使用存储器控制器210将数据230加载到存储器120中以及从存储
6器120存取数据。应用程序150可以布置为运行多个子应用调用的线程220,以完成任务, 例如使用一个或多个请求226向存储器120的存储器组122加载数据230和从存储器120 的存储器组122存取数据230。线程220可以由应用程序150执行。应用程序150可以布置为按照应用程序的需求将任务的执行划分成多个线程220来完成该任务。例如,如果应用程序150是针对具有多页的文档的word处理程序,并且应用程序150配置为完成每页文档的拼写检查任务,则应用程序150可以布置为将文档拼写检查任务划分成多个线程220, 使得每个线程220可以对文档的一部分进行拼写检查。可以将每个线程220发送给多处理器111以便执行。当在多处理器111内执行时,每个线程220可以产生对存储器120内数据230的请求226。可以将请求2 发送至存储器控制器210,存储器控制器210可以对请求2 进行组织,使得多处理器111可以配置为高效操作。在一些实施例中,如图2所示,多处理器111可以包括可以同时执行多于一个线程 220的处理器。多处理器111可以包括称作内核412和512的多个处理器,或者包括称为多线程处理器的可以同时运行多个线程220的单个处理器(只有412和512之一)。图2示出了包括两个内核412和512的示例多处理器111,但是不限于任何具体的内核数目。术语 “内核”可以用在本文中指可以处理单个线程的任何装置,并且可以指可以处理单个线程的处理器或处理器内的一部分。多线程处理器可以指具有多个内核的处理器。包括多个处理器的计算机100在本文中可以称为具有多个内核的计算机100。图3示出了根据本公开至少一些实施例的将应用程序划分成线程的示意表示,其中线程可以发布发送给存储器控制器的请求。如图3所示,应用150可以划分成多个线程 220a-220n,其中η可以表示线程220的数目,并且每个线程可以执行应用150的任务,并可以在例如图2的多处理器111上执行每个线程。多处理器可以配置为从应用程序150单独地或同时接收并执行多个线程220a-220n。在多处理器上执行的每个线程220可以与每个其他线程220相独立地执行,并且可以发布对于存储器120中存储的数据230的多个请求 220al-220n。,其中第一索引(a…η)表示与请求2 关联的线程220,第二索引(1…ο)表示与具体线程220关联的请求226的数目。每个线程220可以发布对于存储器120中存储的数据230的请求226,在一个示例中,请求2 是对于存储器120内存储器组122^12 中存储的数据230的请求,其中索引 (a,tr"m)可以表示存储器组122的数目。存储器120可以包括多个存储器组1223到12 , 多个存储器组122a到12 可以配置为如果多个未决存储器请求226寻求来自不同存储器组的数据230,则允许这些请求2 并行进行。由此,在接收到对于数据230的请求2 时, 存储器控制器210可以并发地访问第一存储器组122a和第二存储器12\。每个存储器组122可以是二维阵列,包括列C1到Ci以及行队到Rj,其中索引(L··· i)可以表示列数,索引(1…j)可以表示行数。行可以在连续存储位置中存储数据,并且大小可以例如是近似1-2千字节(KB)。可以从最多包含一行的行缓冲器&访问存储器组122 中的数据230。在一个示例中,每个存储器组122可以包含一个行缓冲器&。对每个数据 230请求2 进行服务所需的时间可以依据每个行缓冲器&的状态,并且可以落入三个类别之一。第一类别可以是行命中,其中请求2 针对每个行缓冲器&中当前开启的行,这允许存储器控制器210只发布至相应存储器组122的读或写命令,造成组访问等待时间ta。第二类别可以是行关闭,其中行缓冲器&可能没有开启的行,从而存储器控制器210需要首先发布开启所需行的激活命令,然后发布读/写命令,造成总等待时间tKm+ta, tKD是针对激活命令的等待时间,是针对读/写命令的等待时间。第三类别可以是行冲突,其中请求2 针对与相应行缓冲器&中的当前行不同的行,从而存储器控制器210需要首先发布预充电命令并开启所需行(通过激活该行),并发布针对所需行中数据的读/写命令。这些访问导致最大的总等待时间、^、^+{…{砠是针对行预充电(以关闭该行)的等待时间,tECD是针对激活命令的等待时间,tCL是针对读/写命令的等待时间。存储器控制器210可以布置为与存储器120和多处理器通信,并且可以位于沿系统的任何位置,包括在多处理器内。存储器控制器210可以包括存储器请求缓冲器211,存储器请求缓冲器211可以布置为在请求2 等待被服务时缓冲请求2 和数据230。存储器控制器210可以包括调度器212,调度器212可以配置为选择要被服务的下一请求226。 在一些实施例中,调度器212可以具有两级。当选择要被服务的下一请求226时,调度器 212可以配置为考虑存储器组122a-12\的状态、将存储器控制器210与每个存储器组122 连接的存储器总线214a-214m的状态、以及请求2 的状态。如果针对请求2 的存储器命令的调度不引起任何资源(例如存储器组122a-12\和地址/数据/系统总线)冲突,并且不违反任何存储器时序制约,则调度器212可以调度该针对请求226的存储器命令。可以认为不引起任何冲突的存储器命令准备好了。存在多种存储器请求调度算法。示例包括(A)先准备好先到先服务;(B)网络公平排队,以及其变型,开始时间公平排队;(C)滞延时间公平存储器调度器;以及(D)并行性意识批调度,其使用分批算法和批内调度算法两者,允许通过使用不同的分批算法(例如基于时间的静态分批和空时隙分批)和/或不同的批内调度算法(例如并行性意识批内调度,总体最大批内调度,随机批内调度,循环法批内调度,以及先准备好先到先服务批内调度)。另外,下面(图4和幻更加详细地描述了另一存储器请求调度算法(E)带隔离的批调度,其也可以使用分批算法和批内调度算法两者。在该算法中,可以将分批算法调整为基于例如发布了请求的线程的特性,对请求进行分组。对于线程,例如(1)基于线程被设计与并行存储器一起使用的良好程度,分为好设计线程和差设计线程;(2)基于线程与其他线程一起工作的高效程度,分为合作线程和不合作线程;(3)基于线程所发源的应用程序, 分为第一应用、第二应用和第三应用线程;(4)基于线程发布的请求的相对数目,分为大请求线程、中等请求线程(可选的)、以及小请求线程,例如大请求线程可以发布平均数目的请求或更多请求,小请求线程可以发布小于平均数目的个数的请求。与并行性意识批内调度类似,可以使用不同的批内调度算法来创建多个变型(例如并行性意识批内调度,总体最大批内调度,随机批内调度,循环法批内调度,以及先准备好先到先服务批内调度)。图3A包括可以与带隔离的批调度一起使用的调度器212的详细视图,示出了调度算法300的各部分,包括分批算法302、以及批内调度算法或并行性意识批内调度算法350。 备选地,调度算法可以采用批内调度算法和并行性意识批内调度算法两者。再次参照图3和图3A,为提高来自线程220a_220n的请求226al_2^n。的调度效率, 存储器控制器210和特别是调度器212可以适配为使用带隔离的批调度作为调度算法300, 这可以考虑到线程组内并行性,并且可以向每个线程220a-220n提供服务质量OioS)。服务质量可以看作是向不同220a-220n提供不同优先级的能力,和/或在执行线程220a-220n时提供基本等级性能的能力。调度算法300可以设计为为公平性、QoS和高CMP系统吞吐量提供可配置的基础。分批算法302可以适配为将多个未决存储器请求226al-2^n。分组成多个批。调度算法300可以适配为确保属于当前批的所有请求226al-2^5n。在后续批形成之前受到服务。分批算法302可以配置为同时形成多个批,其中可以使用本文描述的特定准则来形成每个批。分批算法可以布置为将存储器请求缓冲器中的未决请求分组成请求集合,称为批。存储器调度器可以通过使属于当前批的请求比其他请求优先,来避免在批之间进行请求重排序。一旦批中的所有请求都被服务了,例如,当批完成时,可以对下一批进行服务,该下一批可以包括存储器请求缓冲器中未包括在上一批中的未决请求。同时形成多个批可以允许对批内的请求进行重排序。分批算法可以如下工作。存储器请求缓冲器中的每个请求可以具有关联比特,该比特指示该请求属于当前批中的哪个批。例如,如果请求属于第一批,则关联比特可以设定为指示该请求属于第一批,并且可以认为该请求是被标记的。可以基于本文描述的特定准贝U,形成多个批,其中将每个请求标记以指示该请求要放置在多个批的哪一个批中,或者是多个批中哪一个批的一部分。当存储器请求缓冲器中没有未标记的请求留下时,例如当已经完全服务了来自当前批的所有请求时,可以形成新的批。在一些实施例中,当形成批时,分批算法可以针对每个线程,对每个存储器组的未决请求进行标记,一直标记到设定数目,即标记上限;这些请求可以形成一批。可以利用标记上限作为系统参数,该系统参数可以限制能够成为批的一部分的由线程针对某一组发布的请求的数目。例如,如果标记上限是5,并且线程具有针对存储器组的7个未决请求,则分批算法可以标记5个最早的请求(或者,如果存在少于5个请求,则标记更少的请求)。示例包括2、3、5、7、10、20、50或更大的标记上限。此外,对于不同类型的批,如本文所述,标记上限可以不同。在一些示例中,当未设定标记上限时,可以在形成一个或多个批时标记所有的未决请求。分批算法可以布置为在给定存储器组中使标记的请求(成批的请求)比未标记的请求优先。如果没有针对给定存储器组的标记的请求,则可以针对该组调度未决的未标记请求。可以采用任何现有或新的存储器调度算法,例如FR-FCFS,在两个标记的或两个未标记的请求中进行选择。图4和6是示出了根据本公开至少一些实施例布置的方法、设备(系统)和计算机程序产品的流程图。将理解,可以通过计算机程序指令来实现图4和6所示流程图的每个块、以及图4和6所示流程图的块的组合。可以将这些计算机程序指令加载到计算机、处理器或者其他可编程数据处理设备,以产生机器,使得在计算机或其他可编程数据处理设备上运行的指令创建用于实现流程图块或多块中指定的功能的装置。这些计算机程序指令也可以存储在存储设备中,存储设备可以弓丨导计算机、处理器或其他可编程数据处理设备以特定方式工作,使得存储设备中存储的指令产生制造品,该制造品包括用于实现流程图块或多块中指定的功能的指令装置。也可以将这些计算机程序指令加载到计算机、处理器或者其他可编程数据处理设备,以引起要在计算机、处理器或者其他可编程数据处理设备上执行的一系列操作步骤,从而产生计算机实现的过程,使得在计算机、处理器或者其他可编程数据处理设备上执行的指令提供用于实现流程图块或多块中指定的功能的步骤。
9
相应地,图4和6所示流程图的块支持用于执行指定功能/操作/动作的装置的组合、或者用于执行指定功能或操作的步骤与用于执行指定功能或操作的程序指令的组合。 将理解,可以通过专用的基于硬件的计算机系统或者专用硬件和计算机指令的组合,来实现图4和6所示流程图的每个块或者图4和6所示流程图的块的组合,其中专用的基于硬件的计算机系统执行指定功能/操作/动作或步骤。这种计算机指令可以固定在有形介质上,例如在计算机可读介质(例如,软盘、 ⑶-R0M、R0M或硬盘)上,或者是经由调制解调器或其他接口设备(例如通过介质连接至网络的通信适配器)可传输至计算机系统的。介质可以是有形介质(例如光或模拟通信线路),或者以无线技术(例如,微波、红外线或其他传输技术)实现的介质。计算机指令序列具体体现了在前相对于系统描述的全部功能性或其中一部分。本领域技术人员应该理解,这种计算机程序可以多种编程语言来编写,以与许多计算机架构或操作系统一起使用。此外,这种指令可以存储在任何存储器设备中,例如半导体、磁、光或其他存储器设备,并且可以使用任何通信技术来传输,例如光、红外线、微波或其他传输技术。预期的是这种计算机程序产品可以作为可移除介质连同印刷或电子的文档 (例如,收缩包装的软件)一起分发,预加载到计算机系统(例如,系统上ROM或硬盘),或者通过网络(例如,互联网或万维网)从服务器或电子公告板分发。图4示出了带隔离的批调度的示例。如图所示,可以在块501发起用于形成一个或多个线程请求批的方法500,其中每一批可以包括一个或多个请求。在发起方法500之后,在块502,可以将线程隔离成(标识为)线程类型,例如第一线程类型和第二线程类型, 或者第一、第二和第三线程类型。可以在块504形成一个或多个批,每一批可以包含从类似或相同线程类型的线程发布的请求。在形成一个或多个批(每一批可以包含一个或多个请求)之后,在块506,可以由存储器控制器执行这一个或多个批。可以一次执行这一个或多个批中的一个,或者如果计算机具有能力,可以一次执行多个。可以基于多个不同准则中的任意准则,进行线程隔离(标识)以及对来自不同线程类型的请求进行分批。例如,可以将线程隔离成(1)基于线程设计用于并行存储器的良好程序,分为好设计线程和差设计线程(2)基于线程与其他线程一起工作的效率,分为合作线程和非合作线程;(3)基于程序所发源的应用程序,分为第一应用、第二应用和第三应用线程;(4)基于线程发出的请求的相对个数,分为大请求线程、可选的中等请求线程、以及小请求线程,例如大请求线程可以发出平均个数或更多的请求,小请求线程可以发出个数少于平均个数的请求。许多其他变体也是可能的。因此,依据所选的准则,可以有第一线程类型、第二线程类型、可选的第三线程类型、可选的第四线程类型等。图5是使用可以产生两个线程类型的准则的带隔离的批调度的示例;如上所述, 依据所选的准则,可以存在多于两个的线程类型。可以将线程220a-220jS离成第一线程类型250和第二线程类型251。然后可以将每种线程类型发布的请求(例如从第一线程类型250发布的第一请求沈0,以及从第二线程类型251发布的第二请求沈1)形成一个或多个线程请求批232a-23&。每个批可以包括一种线程类型的请求,例如如图所示,第一批 232a可以包括第一请求沈0,最末批23 可以包括第二请求沈1。在另一示例中,每个批 232a-232x可以主要包含来自第一线程类型250的第一请求沈0,或者主要包含来自第二线程类型251的第二请求沈1。以这种方式,批232a-23&可以形成为对于来自每个线程类型的请求是同质的或主要是同质的。可以一次执行这一个或多个批中的一个,或者如果计算机具有能力,可以一次执行多个。本文所用的术语“主要”可以是多于大致50%、多于大致 80%、多于大致95%或者多于大致99%。—旦形成了一个或多个批,调度算法可以布置为采用批内调度算法或并行性意识批内调度算法,对批内的请求服务进行调度。可以使用任何批内调度算法,例如FR-FCFS。在批内,并行性意识批内调度算法可以布置为首先优先考虑行命中请求。其次,相比于来自较低等级的线程的请求,可以优先考虑来自较高等级的线程的请求。最后,所有其他请求都是平等的,可以相比于较新的请求,优先考虑较早的请求。并行性意识批内调度算法可以布置为在批内使用基于等级的线程优先化方案。当形成新的批时,存储器调度器可以布置为在具有该新批中的请求的所有线程之间计算等级排列。当处理该新批时,所计算的等级排列可以保持相同,相比于来自等级较低线程的请求,可以优先考虑来自等级较高线程的请求。虽然可以使用任何基于等级排列的方案,但是具体的等级排列过程可以对CMP吞吐量和公平性具有显著影响。好的等级排列方案可以有效地在存储器密集和非密集线程 (以及具有较高组并行性的线程)之间进行区分。在一些实施方式中,可以采用符合最短工作优先原则的等级排列方案可以将非密集线程的等级排列得比密集线程的等级高。图6示出了根据本公开的至少一些实施例布置的方法、设备(系统)和计算机程序产品的流程图。如图6所示,可以在框601发起用于存储器请求调度的方法600。在发起该方法600之后,可以在框602使用应用程序选择调度算法。例如,可以使用发布了线程 (该线程或这些线程发布了请求)的应用程序来选择调度算法。选择的调度算法可以是任何调度算法,例如那些如上所述的。应用程序可以选择相同的调度算法,或者可以基于在应用程序产生期间选定的准则来选择不同的调度算法。选择的调度算法可以是在计算机可读介质中编码的调度算法,并且可以是操作系统、应用程序的一部分,或者可以分离地提供。 例如,发布了线程的应用程序可以包含一个或多个调度算法,可以使用该应用程序来选择这一个或多个调度算法。一旦选定,则在框604可以指示存储器控制器使用选定的调度算法来调度请求。在框606,存储器控制器可以根据选定的调度算法来调度要被服务的请求。要求保护的主题内容在范围上不限于本文描述的具体实施方式
。例如,一些实施方式可以是硬件形式,例如用于在例如设备或设备的组合上操作,而其他实施方式可以是软件和/或固件形式。类似地,虽然在这方面要求保护的主题内容在范围上不受限,但是一些实施方式可以包括一个或多个物品,例如存储介质或存储媒介。存储介质例如CD-ROM、计算机盘、闪速存储器等,其上可以存储有指令,当由计算机系统、计算平台或其他系统之类的系统执行时,可以使处理器根据要求保护的主题内容来执行,例如上述实施方式之一。一个可能方式是计算平台可以包括一个或多个处理单元或处理器、一个或多个输入/输出设备(例如显示器、键盘和/或鼠标)、以及一个或多个存储器(例如静态随机存取存储器、动态随机存取存储器、闪速存储器、和/或硬驱)。说明书所述的“实施方式”、“ 一个实施方式”、“ 一些实施方式”或者“其他实施方式”可以表示与一个或多个实施方式相结合描述的具体特征、结构或特点可以包括在至少一些实施方式中,但是不一定在所有实施方式中。在以上描述中出现的多个“实施方式”、 “一个实施方式”或“一些实施方式”不一定全部是指相同的实施方式。此外,当本文或所附权利要求中使用例如“耦接”或“响应”或“响应于”或“与…通信”等术语或短语时,这些术语应该被广义地解释。例如,适合于短语所用的上下文,短语“耦接至”可以指通信性地、电和/或操作性地耦合。在以上描述中,描述了要求保护的主题内容的多个方面。为了说明目的,记载了具体数字、系统和/或配置,以提供对要求保护的主题内容的透彻理解。然而,对于受益于本公开的本领域技术人员而言,应该显而易见的是,可以在不具有这些具体细节的情况下实施要求保护的主题内容。在其他情况下,可以省略和/或简化已知特征,以避免模糊要求保护的主题内容。虽然本文示出了和/或描述了特定特征,但是许多修改、替换、改变和/或等同物目前或在将来是本领域技术人员可设想到的。因此,要理解,所附权利要求旨在覆盖落入要求保护的主题内容的真实精神内的所有这些修改和/或改变。在系统方案的硬件和软件实现方式之间存在一些小差别;硬件或软件的使用一般 (但并非总是,因为在特定情况下硬件和软件之间的选择可能变得很重要)是一种体现成本与效率之间权衡的设计选择。可以各种手段(例如,硬件、软件和/或固件)来实施这里所描述的工艺和/或系统和/或其他技术,并且优选的工艺将随着所述工艺和/或系统和 /或其他技术所应用的环境而改变。例如,如果实现方确定速度和准确性是最重要的,则实现方可以选择主要为硬件和/或固件的手段;如果灵活性是最重要的,则实现方可以选择主要是软件的实施方式;或者,同样也是可选地,实现方可以选择硬件、软件和/或固件的特定组合。以上的详细描述通过使用方框图、流程图和/或示例,已经阐述了设备和/或工艺的众多实施例。在这种方框图、流程图和/或示例包含一个或多个功能和/或操作的情况下,本领域技术人员应理解,这种方框图、流程图或示例中的每一功能和/或操作可以通过各种硬件、软件、固件或实质上它们的任意组合来单独和/或共同实现。在一个实施例中, 本公开所述主题的若干部分可以通过专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、或其他集成格式来实现。然而,本领域技术人员应认识到,这里所公开的实施例的一些方面在整体上或部分地可以等同地实现在集成电路中,实现为在一台或多台计算机上运行的一个或多个计算机程序(例如,实现为在一台或多台计算机系统上运行的一个或多个程序),实现为在一个或多个处理器上运行的一个或多个程序(例如,实现为在一个或多个微处理器上运行的一个或多个程序),实现为固件,或者实质上实现为上述方式的任意组合,并且本领域技术人员根据本公开,将具备设计电路和/或写入软件和/或固件代码的能力。此外,本领域技术人员将认识到,本公开所述主题的机制能够作为多种形式的程序产品进行分发,并且无论实际用来执行分发的信号承载介质的具体类型如何,本公开所述主题的示例性实施例均适用。信号承载介质的示例包括但不限于可记录型介质,如软盘、硬盘驱动器、紧致盘(CD)、数字通用盘(DVD)、数字磁带、计算机存储器等;以及传输型介质,如数字和/或模拟通信介质(例如,光纤光缆、波导、有线通信链路、无线通信链路
寸J ο本领域技术人员应认识到,上文详细描述了设备和/或工艺,此后使用工程实践来将所描述的设备和/或工艺集成到数据处理系统中是本领域的常用手段。也即,这里所述的设备和/或工艺的至少一部分可以通过合理数量的试验而被集成到数据处理系统中。 本领域技术人员将认识到,典型的数据处理系统一般包括以下各项中的一项或多项系统单元外壳;视频显示设备;存储器,如易失性和非易失性存储器;处理器,如微处理器和数字信号处理器;计算实体,如操作系统、驱动程序、图形用户接口、以及应用程序;一个或多个交互设备,如触摸板或屏幕;和/或控制系统,包括反馈环和控制电机(例如,用于感测位置和/或速度的反馈;用于移动和/或调节成分和/或数量的控制电机)。典型的数据处理系统可以利用任意合适的商用部件(如数据计算/通信和/或网络计算/通信系统中常用的部件)予以实现。本公开所述的主题有时说明不同部件包含在不同的其他部件内或者不同部件与不同的其他部件相连。应当理解,这样描述的架构只是示例,事实上可以实现许多能够实现相同功能的其他架构。在概念上,有效地“关联”用以实现相同功能的部件的任意设置,从而实现所需功能。因此,这里组合实现具体功能的任意两个部件可以被视为彼此“关联”从而实现所需功能,而无论架构或中间部件如何。同样,任意两个如此关联的部件也可以看作是彼此“可操作地连接”或“可操作地耦合”以实现所需功能,且能够如此关联的任意两个部件也可以被视为彼此“能可操作地耦合”以实现所需功能。能可操作地耦合的具体示例包括但不限于物理上可配对和/或物理上交互的部件,和/或无线交互和/或可无线交互的部件,和/或逻辑交互和/或可逻辑交互的部件。至于本文中任何关于多数和/或单数术语的使用,本领域技术人员可以从多数形式转换为单数形式,和/或从单数形式转换为多数形式,以适合具体环境和/或应用。为清楚起见,在此明确声明单数形式/多数形式可互换。本领域技术人员应当理解,一般而言,所使用的术语,特别是所附权利要求中(例如,在所附权利要求的主体部分中)使用的术语,一般地应理解为“开放”术语(例如,术语 “包括”应解释为“包括但不限于”,术语“具有”应解释为“至少具有”等)。本领域技术人员还应理解,如果意在所引入的权利要求中标明具体数目,则这种意图将在该权利要求中明确指出,而在没有这种明确标明的情况下,则不存在这种意图。例如,为帮助理解,所附权利要求可能使用了引导短语“至少一个”和“一个或多个”来引入权利要求中的特征。然而, 这种短语的使用不应被解释为暗示着由不定冠词“一”或“一个”引入的权利要求特征将包含该特征的任意特定权利要求限制为仅包含一个该特征的实施例,即便是该权利要求既包括引导短语“一个或多个”或“至少一个”又包括不定冠词如“一”或“一个”(例如,“一”和 /或“一个”应当被解释为意指“至少一个”或“一个或多个”);在使用定冠词来引入权利要求中的特征时,同样如此。另外,即使明确指出了所引入权利要求特征的具体数目,本领域技术人员应认识到,这种列举应解释为意指至少是所列数目(例如,不存在其他修饰语的短语“两个特征”意指至少两个该特征,或者两个或更多该特征)。另外,在使用类似于“A、 B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和 C、和/或具有A、B、C的系统等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“A或B”应当被理解为包括“A”或“B”、或“A和B”的可能性。
权利要求
1.一种对针对存储器中的数据的请求进行调度的方法,包括利用应用程序选择调度算法;指示存储器控制器使用所选调度算法来调度请求;以及根据调度算法,利用存储器控制器来调度请求。
2.根据权利要求1所述的方法,还包括执行来自应用程序的线程;以及从线程发布请求。
3.根据前述权利要求之一所述的方法,还包括执行请求。
4.根据前述权利要求之一所述的方法,其中调度包括将线程隔离成第一线程类型和第二线程类型,第一线程类型的每一个线程发布至少一个第一线程请求类型,第二线程类型的每一个线程发布至少一个第二线程请求类型;以及形成第一批,每一个第一批主要包括第一线程类型的请求。
5.根据前述权利要求之一所述的方法,还包括执行每一个第一批的请求。
6.根据前述权利要求之一所述的方法,其中从包括下述的组中选择调度算法先准备好先到先服务;网络公平排队;开始时间公平排队;滞延时间公平存储器调度器;并行性意识批调度;以及带隔离的批调度。
7.根据前述权利要求之一所述的方法,其中调度算法包括批算法和/或批内调度算法中的一个或多个。
8.根据前述权利要求之一所述的方法,其中调度算法对应于并行性意识批调度和/或带隔离的批调度中的一个或多个。
9.根据前述权利要求之一所述的方法,其中调度算法对应于带隔离的批调度。
10.根据前述权利要求之一所述的方法,其中从包括下述的组中选择批内调度算法 并行性意识批内调度;总体最大批内调度;随机批内调度;循环法批内调度;以及先准备好先到先服务批内调度。
11.根据前述权利要求之一所述的方法,其中隔离包括基于线程被设计与并行存储器一起使用的良好程度,来隔离线程;基于线程与其他线程一起工作的高效程度,来隔离线程;基于线程所发源的应用程序,来隔离线程;或者基于每个线程发布的请求的相对数目,来隔离线程。
12.—种计算机程序产品,包括在计算机可读介质中编码的软件,用于对针对存储器中的数据的请求进行调度,软件包括指令,当被执行时可操作为利用应用程序选择调度算法;指示存储器控制器使用所选调度算法来调度请求;以及根据调度算法,利用存储器控制器来调度请求。
13.根据前述权利要求之一所述的计算机程序产品,其中从包括下述的组中选择调度算法先准备好先到先服务;网络公平排队;开始时间公平排队;滞延时间公平存储器调度器;并行性意识批调度;以及带隔离的批调度。
14.根据前述权利要求之一所述的计算机程序产品,其中调度算法包括批算法和/或批内调度算法中的一个或多个。
15.根据前述权利要求之一所述的计算机程序产品,其中调度算法对应于并行性意识批调度或带隔离的批调度。
16.根据前述权利要求之一所述的计算机程序产品,其中从包括下述的组中选择批内调度算法并行性意识批内调度;总体最大批内调度;随机批内调度;循环法批内调度;以及先准备好先到先服务批内调度。
17.一种计算机系统,包括多个内核;存储器,包含数据,操作性耦接至所述多个内核;存储器控制器,操作性耦接至所述多个内核;计算机可读介质,操作性耦接至所述多个内核,其中计算机可读介质包括计算机可执行指令,当由计算机系统执行时,计算机可执行指令将计算机系统配置为利用应用程序选择调度算法;指示存储器控制器使用所选调度算法来调度请求;以及根据调度算法,利用存储器控制器来调度请求。
18.根据前述权利要求之一所述的计算机系统,其中从包括下述的组中选择调度算法 先准备好先到先服务;网络公平排队;开始时间公平排队;滞延时间公平存储器调度器;并行性意识批调度;以及带隔离的批调度。
19.根据前述权利要求之一所述的计算机系统,其中调度算法包括批算法和/或批内调度算法中的一个或多个。
20.根据前述权利要求之一所述的计算机系统,其中调度算法包括并行性意识批调度或带隔离的批调度。
全文摘要
本公开总体上描述了用于操作基于存储器调度的计算机系统的系统、方法和设备。计算机系统可以包括应用程序和与存储器组通信的存储器控制器中的一个或多个。存储器控制器可以包括用于调度请求的调度器。应用程序可以从多个调度算法中选择用于调度请求的调度算法。应用程序可以指示调度器使用所选调度算法来调度请求。
文档编号H01L29/66GK102484130SQ201080032151
公开日2012年5月30日 申请日期2010年6月25日 优先权日2009年7月22日
发明者塞达·奥格伦吉·梅米奇, 格克汗·梅米奇, 比尔·曼焦内-史密斯 申请人:英派尔科技开发有限公司