CN102725734B - 基于隔离的线程批调度方法 - Google Patents
基于隔离的线程批调度方法 Download PDFInfo
- Publication number
- CN102725734B CN102725734B CN201080031695.XA CN201080031695A CN102725734B CN 102725734 B CN102725734 B CN 102725734B CN 201080031695 A CN201080031695 A CN 201080031695A CN 102725734 B CN102725734 B CN 102725734B
- Authority
- CN
- China
- Prior art keywords
- thread
- request
- type
- batch
- storer
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 55
- 238000002955 isolation Methods 0.000 title claims description 10
- 238000003860 storage Methods 0.000 claims description 11
- 230000015572 biosynthetic process Effects 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 abstract description 8
- 238000004422 calculation algorithm Methods 0.000 description 27
- 230000006870 function Effects 0.000 description 18
- 230000008569 process Effects 0.000 description 17
- 238000004590 computer program Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 8
- 230000004913 activation Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 238000005286 illumination Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009897 systematic effect Effects 0.000 description 2
- 235000017060 Arachis glabrata Nutrition 0.000 description 1
- 241001553178 Arachis glabrata Species 0.000 description 1
- 235000010777 Arachis hypogaea Nutrition 0.000 description 1
- 235000018262 Arachis monticola Nutrition 0.000 description 1
- 241000665848 Isca Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000005389 magnetism Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 235000020232 peanut Nutrition 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Investigating Or Analysing Biological Materials (AREA)
Abstract
根据公开的主题内容,描述了对计算机系统中运行的线程所发布的请求进行隔离的技术。
Description
相关申请的引用
本申请与下述共同待审申请相关:2009年7月23日提交的申请序列号12/508,457(代理案卷号ZAV01-013-US),题为“Scheduling of Threads By Batch Scheduling”;以及2009年7月22日提交的申请序列号12/507,671(代理案卷号BBV01-014-US),题为“Application Selection of Memory Request 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结合了对系统级线程优先级的支 持,并能够向具有不同优先级的线程提供不同的服务级别,包括纯机会主义的服务。
发明内容
在第一方面,本公开大体描述了一种用于执行针对存储器中的数据的请求的方法,包括:将线程隔离成第一线程类型和第二线程类型,第一线程类型的每一个线程发布针对存储器中的数据的至少一个第一线程请求类型,第二线程类型的每一个线程发布针对存储器中的数据的至少一个第二线程请求类型;形成第一批,每个第一批主要包括单一线程请求类型的请求;以及执行每个第一批的请求。
在第二方面,本公开大体描述了一种计算机程序产品,具有在计算机可读介质中编码的软件,用于执行针对存储器中的数据的请求。该软件包括在执行时可操作用于如下的指令:将线程隔离成第一线程类型和第二线程类型,第一线程类型的每一个线程发布针对存储器中的数据的至少一个第一线程请求类型,第二线程类型的每一个线程发布针对存储器中的数据的至少一个第二线程请求类型;形成第一批,每个第一批主要包括单一线程请求类型的请求;以及执行每个第一批的请求。
在第三方面,本公开大体描述了一种计算机系统,具有多个内核、可操作性耦合至所述多个内核的包含数据的存储器、以及可操作性耦合至所述多个内核的计算机可读介质。计算机可读介质包括计算机可执行指令,当由计算机系统执行时,计算机可执行指令将计算机系统配置为:将线程隔离成第一线程类型和第二线程类型,第一线程类型的每一个线程发布针对存储器中的数据的至少一个第一线程请求类型,第二线程类型的每一个线程发布针对存储器中的数据的至少一个第二线程请求类型;形成第一批,每个第一批主要包括单一线程请求类型的请求;以及执行每个第一批的请求。
以上发明内容仅仅是说明性的,而绝不是限制性的。除了上述示例性的各方案、各实施例和各特征之外,参照附图和以下详细说明,将清楚其他方案、其他实施例和其他特征。
附图说明
在本说明书的总结部分特别指出并明确要求保护主题。根据以下说明和所附权利要求,结合附图,本公开的前述和其他特征将更加清楚。在认识到这些附图仅仅示出了根据本公开的一些示例且因此不应被认为是限制本公开范围的前提下,通过使用附图更加具体和详细地描述本公开,附图中:
图1示出了计算机系统;
图2示出了由操作系统执行应用程序;
图3示出了将应用程序划分成线程的示意表示,包括图3A中存储器控制器的调度器的详细视图,其中线程发布发送给存储器控制器的请求;
图4示出了方法、装置(系统)和计算机程序产品的流程图示例;以及
图5示出了全部根据本公开的至少一些实施例的成批地布置来自线程的请求的示意表示。
具体实施方式
下面描述给出了多种示例以及具体细节,以提供对所要求保护的主题的充分理解。然而,本领域技术人员将理解,可以在没有本文公开的一些或更多具体细节的情况下实施要求保护的主题。此外,在一些情况下,不详细描述已知的方法、过程、系统、部件和/或电路,以避免不必要地模糊要求保护的主题。在以下详细说明中,参考了作为详细说明的一部分的附图。在附图中,类似符号通常表示类似部件,除非上下文另行指明。具体实施方式部分、附图和权利要求书中记载的示例性实施例并不是限制性的。在不脱离在此所呈现主题的精神或范围的情况下,可以利用其他实施例,且可以进行其他改变。应当理解,在此一般性记载以及附图中图示的本公开的各方案可以多种不同配置来设置、替换、组合和设计,它们全部都在本公开中明确考虑并形成本公开一部分。
在以下描述中,可以提供对例如计算机和/或计算系统存储器等计算系统内存储的数据比特和/或二进制数字信号的操作的算法和/或符号表示。一般将算法看作引导至所需结果的自相一致的操作序列和/或类似处理,其中操作可以包括对物理量的物理操纵,物理量可以采用电、磁和/或电磁信号的形式,能够被存储、传送、组合、比较和/或以其他方式操纵。在多种情况下,这种信号可以称为比特、数据、值、元素、符号、字符、项、数、数值等。然而本领域技术人员将认识到,这些术语可以用于暗指物理量。因此,当在本说明书中使用例如“存储”、“处理”、“获取”、“计算”、“确定”等术语时,这些术语可以指例如计算机或类似电子计算设备(例如蜂窝电话)等计算平台的动作,该计算平台在计算机平台的处理器、存储器、寄存器等内操纵和/或变换表示为物理量(包括电子和/或磁量)的数据。
本公开尤其涉及与带隔离的批调度有关的方法、装置、系统和计算机程序产品。本公开利用如下发现:基于特定准则,将来自线程的针对存储器中数据的请求分组成批。可以按照多种方式将请求分组成批,例如:(1)基于线程被设计与并行存储器一起使用的良好程度,分为好设计线程和差设计线程;(2)基于线程与其他线程一起工作的高效程度,分为合作线程和不合作线程;(3)基于线程所发源的应用程序,分为第一应用、第二应用和第三应用线程;(4)基于线程发布的请求的相对数目,分为大请求线程、中等请求线程(可选的)、以及小请求线程,例如大请求线程可以发布平均数目的请求或更多请求,小请求线程可以发布小于平均数目的个数的请求。也可以存在许多其他变体。
图1示出了根据本公开至少一些实施例布置的计算机系统。图1示出了计算机100包括处理器110、存储器120和一个或多个驱动130。驱动130及其关联的计算机存储介质可以为计算机100提供对计算机可读指令、数据结构、程序模块和其他数据的存储。驱动130可以包括操作系统140、应用程序150、程序模块160和数据库180。操作系统140和/或应用程序150例如可以包括使计算机100执行图4所示的功能和/或操作的程序指令,例如批调度应用程序155。计算机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例如包括键盘、鼠标和麦克风。计算机外围设备的部件可以包括计算机外围设备内的任何设备,该设备可以使用电能并且可以是任何设备,例如扬声器、照明元件(例如发光二极管或用于为显示器提供照明的背光)、 显示元件(例如LCD、LED、OLED、CRT或等离子体显示器)、或者半导体芯片(例如中央处理器(CPU)、图像处理单元(GPU)、存储器)。
图2示出了根据本公开至少一些实施例的由操作系统执行应用程序。如图2所示,操作系统140可以执行来自驱动130的应用程序150。操作系统140和/或应用程序150可以包括用于使计算机100执行图4所指定的功能和/或操作的程序指令。应用程序150可以是可由多处理器111中的操作系统140执行的任何应用、程序、程序部分或线程。应用程序150可以使用存储器控制器210将数据230加载到存储器120中以及从存储器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。可以将请求226发送至存储器控制器210,存储器控制器210可以配置为对请求226进行组织,使得多处理器111可以高效操作。
在一些实施例中,如图2所示,多处理器111可以包括可以同时执行多于一个线程220的处理器。多处理器111可以包括称作内核412和512的多个处理器,或者包括称为多线程处理器的可以同时运行多个线程220的单个处理器(只有412和512之一)。图2示出了包括两个内核412和512的示例多处理器111,但是不限于任何具体的内核数目。术语“内核”可以用在本文中指可以处理单个线程的任何装置,并且可以指可以处理单个线程的处理器或处理器内的一部分。多线程处理器可以指具有多个内核的处理器。包括多个处理器的计算机100 在本文中可以称为具有多个内核的计算机100。
图3示出了根据本公开一些实施例的将应用程序划分成线程的示意表示,其中线程可以发布发送给存储器控制器的请求。如图3所示,应用150可以划分成多个线程220a-220n,其中n可以表示线程220的数目,并且每个线程可以执行应用150的任务,并可以在例如图2的多处理器111上执行每个线程。多处理器可以配置为从应用程序150单独地或同时接收并执行多个线程220a-220n。在多处理器上执行的每个线程220可以与每个其他线程220相独立地执行,并且可以发布对于存储器120中存储的数据230的多个请求220a1-220no,其中第一索引(a…n)表示与请求226关联的线程220,第二索引(1…o)表示与具体线程220关联的请求226的数目。
每个线程220可以发布对于存储器120中存储的数据230的请求226,在一个示例中,请求226是对于存储器120内存储器组122a-122m中存储的数据230的请求,其中索引(a,b…m)可以表示存储器组122的数目。存储器120可以包括多个存储器组122a到122m,多个存储器组122a到122m可以为如果多个未决存储器请求226寻求来自不同存储器组的数据230,则允许这些请求226并行进行。由此,在接收到对于数据230的请求226时,存储器控制器210可以并发地访问第一存储器组122a和第二存储器122b。
每个存储器组122可以是二维阵列,包括列C1到Ci以及行R1到Rj,其中索引(1…i)表示列数,索引(1…j)表示行数。行可以在连续存储位置中存储数据,并且大小可以例如是1-2千字节(KB)。可以从最多包含一行的行缓冲器RB访问存储器组122中的数据230。在一个示例中,每个存储器组122可以包含一个行缓冲器RB。对每个数据230请求226进行服务所需的时间可以依据每个行缓冲器RB的状态,并且可以落入三个类别之一。第一类别可以是行命中,其中请求226针对每个行缓冲器RB中当前开启的行,这允许存储器控制器210只发布至相应存储器组122的读或写命令,造成组访问等待时间tCL。
第二类别可以是行关闭,其中行缓冲器RB可能没有开启的行,从而存储器控制器210需要首先发布开启所需行的激活命令,然后发 布读/写命令,造成总等待时间tRCD+tCL,tRCD是针对激活命令的等待时间,tCL是针对读/写命令的等待时间。第三类别可以是行冲突,其中请求226针对与相应行缓冲器RB中的当前行不同的行,从而存储器控制器210需要首先发布预充电命令并开启所需行(通过激活该行),并发布针对所需行中数据的读/写命令。这些访问导致最大的总等待时间tRP+tRCD+tCL,tRP是针对行预充电(以关闭该行)的等待时间,tRCD是针对激活命令的等待时间,tCL是针对读/写命令的等待时间。
存储器控制器210可以布置为与存储器120和多处理器通信,并且可以位于沿系统的任何位置,包括在多处理器内。存储器控制器210可以包括存储器请求缓冲器211,存储器请求缓冲器211可以布置为在请求226等待被服务时缓冲请求226和数据230。存储器控制器210可以包括调度器212,调度器212可以配置为选择要被服务的下一请求226。在一些实施例中,调度器212可以具有两级。当选择要被服务的下一请求226时,调度器212可以配置为考虑存储器组122a-122m的状态、将存储器控制器210与每个存储器组122连接的存储器总线214a-214m的状态、以及请求226的状态。如果针对请求226的存储器命令的调度不引起任何资源(例如存储器组122a-122m和地址/数据/系统总线)冲突,并且不违反任何存储器时序制约,则调度器212可以调度该针对请求226的存储器命令。可以认为不引起任何冲突的存储器命令准备好了。
图3A包括可以与带隔离的批调度一起使用的调度器212的详细视图,示出了调度算法300的各部分,包括分批算法302、以及批内调度算法或并行性意识批内调度算法350。备选地,调度算法可以采用批内调度算法和并行性意识批内调度算法两者。
在一些示例中,描述了对计算机系统中运行的线程所发布的请求进行隔离的方法。计算机系统可以包括与存储器组进行通信的存储器控制器。该方法可以包括基于线程的效率将线程隔离成好线程(第一线程)和差线程(第二线程)。可以并行地从存储器组中提取数据的线程可以是好线程,不可以从存储器组中提取数据的线程可以是差线程。 该方法还包括:形成第一批请求,第一批请求包括主要由好线程发布的请求;以及形成第二批请求,第二批请求包括主要由差线程发布的请求。
在其他示例中,描述了对计算机系统中运行的线程所发布的请求进行隔离的方法。计算机系统可以包括与存储器组进行通信的存储器控制器。该方法可以包括确定哪些线程彼此之间高效地操作以及哪些线程彼此之间不高效地操作。彼此之间高效操作的线程可以从不同存储器组中提取数据。彼此之间不高效操作的线程从相同存储器组中提取数据。该方法还可以包括:形成第一批请求,第一批请求包括主要由彼此之间高效操作的线程所发布的请求;以及形成第二批请求,第二批请求包括主要由彼此之间不高效操作的线程所发布的请求。
在另外的示例中,描述了对计算机系统中运行的线程所发布的请求进行隔离的方法。计算机系统可以包括与存储器组进行通信的存储器控制器。该方法可以包括基于线程所发布的请求的数目来隔离线程。可以向存储器组发布较大数目请求的线程可以视为是大线程,可以向存储器组发布较小数目请求的线程可以视为是小线程。该方法还可以包括:形成第一批请求,第一批请求包括主要由大线程发布的请求;以及形成第二批请求,第二批请求包括主要由小线程发布的请求。
再次参照图3和图3A,为提高来自线程220a-220n的请求226a1-226no的调度效率,存储器控制器210和特别是调度器212可以使用调度算法300,这可以考虑到线程组内并行性,并且可以向每个线程220a-220n提供服务质量(QoS)。服务质量可以看作是向不同220a-220n提供不同优先级的能力,和/或在执行线程220a-220n时提供基本等级性能的能力。调度算法300可以设计为为公平性、QoS和高CMP系统吞吐量提供可配置的基底。分批算法302可以布置为将多个未决存储器请求226a1-226no分组成多个批。调度算法300可以布置为确保属于当前批的所有请求226a1-226no在后续批形成之前受到服务。分批算法302可以同时形成多个批,其中可以使用本文描述的特定准则来形成每个批。分批不仅确保了公平性,还提供了方便的粒度(即,批),在该粒度内可以执行存储器命令调度优化,该优化对于线程而言 可能是不公平的,但是高性能的。
分批算法可以布置为将存储器请求缓冲器中的未决请求分组成请求集合,称为批。存储器调度器可以布置为通过使属于当前批的请求比其他请求优先,来避免在批之间进行请求重排序。一旦批中的请求都被服务了,例如,当批完成时,可以对下一批进行服务,该下一批可以包括存储器请求缓冲器中未包括在上一批中的未决请求。同时形成多个批可以允许对批内的请求进行重排序。
分批算法可以如下工作。存储器请求缓冲器中的每个请求可以具有关联比特,该比特指示该请求属于当前批中的哪个批。例如,如果请求属于第一批,则关联比特可以设定为指示该请求属于第一批,并且可以认为该请求是被标记的。可以基于本文描述的特定准则,形成多个批,其中将每个请求标记以指示该请求要放置在多个批的哪一个批中,或者是多个批中哪一个批的一部分。当存储器请求缓冲器中没有未标记的请求留下时,例如当已经完全服务了来自之前批的请求时,可以形成新的批。
在一些实施例中,当形成批时,分批算法可以针对每个线程,对每个存储器组的未决请求进行标记,一直标记到设定数目,即标记上限;这些请求可以形成一批。标记上限可以是系统参数,该系统参数可以限制能够成为批的一部分的由线程针对某一组发布的请求的数目。例如,如果标记上限是5,并且线程具有针对存储器组的7个未决请求,则分批算法可以仅标记5个最早的请求。示例包括2、3、5、7、10、20、50或更大的标记上限。此外,对于不同类型的批,如本文所述,标记上限可以不同。如果未设定标记上限时,可以在形成一个或多个批时标记所有的未决请求。
分批算法可以布置为在给定存储器组中使标记的请求(成批的请求)比未标记的请求优先。如果没有针对给定存储器组的标记的请求,则可以针对该组调度未决的未标记请求。可以采用任何现有或新的存储器调度算法,例如FR-FCFS,在两个标记的或两个未标记的请求中进行选择。
图4是示出了根据本公开至少一些实施例布置的方法、设备(系 统)和计算机程序产品的流程图。将理解,可以通过计算机程序指令来实现图4所示流程图的每个块、以及图4所示流程图的块的组合。可以将这些计算机程序指令加载到计算机、处理器或者其他可编程数据处理设备,以产生机器,使得在计算机、处理器或其他可编程数据处理设备上运行的指令创建用于实现流程图块或多块中指定的功能的装置。这些计算机程序指令也可以存储在存储设备中,存储设备可以引导计算机、处理器或其他可编程数据处理设备以特定方式工作或操作,使得存储设备中存储的指令产生制造品,该制造品包括用于实现流程图块或多块中指定的功能或操作的指令装置。也可以将这些计算机程序指令加载到计算机、处理器或者其他可编程数据处理设备,以引起要在计算机或者其他可编程数据处理设备上执行的一系列操作步骤,从而产生计算机实现的过程,使得在计算机、处理器或者其他可编程数据处理设备上执行的指令提供用于实现流程图块或多块中指定的功能的步骤。
相应地,图4所示流程图的块支持用于执行指定功能的装置的组合、或者用于执行指定功能的步骤与用于执行指定功能和/或操作的程序指令的组合。将理解,可以通过专用的基于硬件的计算机系统或者专用硬件和计算机指令的组合,来实现图4所示流程图的每个块或者图4所示流程图的块的组合,其中专用的基于硬件的计算机系统执行指定功能/操作/动作或步骤。
这种计算机指令可以固定在有形介质上,例如在计算机可读介质(例如,软盘、CD-ROM、ROM或硬盘)上,或者是经由调制解调器或其他接口设备(例如通过介质连接至网络的通信适配器)可传输至计算机系统的。介质可以是有形介质(例如光或模拟通信线路),或者以无线技术(例如,微波、红外线或其他传输技术)实现的介质。计算机指令序列具体体现了在前相对于系统描述的全部功能性或其中一部分。
本领域技术人员应该理解,这种计算机程序可以多种编程语言来编写,以与许多计算机架构或操作系统一起使用。此外,这种指令可以存储在任何存储器设备中,例如半导体、磁、光或其他存储器设备, 并且可以使用任何通信技术来传输,例如光、红外线、微波或其他传输技术。预期的是这种计算机程序产品可以作为可移除介质连同印刷或电子的文档(例如,收缩包装的软件)一起分发,预加载到计算机系统(例如,系统上ROM或硬盘),或者通过网络(例如,互联网或万维网)从服务器或电子公告板分发。
如图4所示,可以在块501发起用于形成一个或多个线程请求批的方法500,其中每一批可以包括一个或多个请求。在发起方法500之后,在块502,可以将线程隔离成(标识为)线程类型,例如第一线程类型和第二线程类型,或者第一、第二和第三线程类型。可以在块504形成一个或多个批,每一批可以包含从类似或相同线程类型的线程发布的请求。在形成一个或多个批(每一批可以包含一个或多个请求)之后,在块506,可以由存储器控制器执行这一个或多个批。可以一次执行这一个或多个批中的一个,或者如果计算机具有能力,可以一次执行多个。
可以基于多个不同准则中的任意准则,进行线程隔离(标识)以及对来自不同线程类型的请求进行分批。例如,可以将线程隔离成:(1)基于线程设计用于并行存储器的良好程序,分为好设计线程和差设计线程:(2)基于线程与其他线程一起工作的效率,分为合作线程和非合作线程;(3)基于程序所发源的应用程序,分为第一应用、第二应用和第三应用线程;(4)基于线程发出的请求的相对个数,分为大请求线程、可选的中等请求线程、以及小请求线程,例如大请求线程可以发出平均个数或更多的请求,小请求线程可以发出个数少于平均个数的请求。许多其他变体也是可能的。因此,依据所选的准则,可以有第一线程类型、第二线程类型、可选的第三线程类型、可选的第四线程类型等。
图5是使用可以产生两个线程类型的准则的示例;如上所述,依据所选的准则,可以存在多于两个的线程类型。可以将线程220a-220n隔离成第一线程类型250和第二线程类型251。然后可以将每种线程类型发布的请求(例如从第一线程类型250发布的第一请求260,以及从第二线程类型251发布的第二请求261)形成一个或多个线程请 求批232a-232x。每个批可以包括一种线程类型的请求,例如如图所示,第一批232a可以只包括第一请求260,最末批232x可以只包括第二请求261。在另一示例中,每个批232a-232x可以主要包含来自第一线程类型250的第一请求260,或者主要包含来自第二线程类型251的第二请求261。以这种方式,批232a-232x可以形成为对于来自每个线程类型的请求是同质的或主要是同质的。可以一次执行这一个或多个批中的一个,或者如果计算机具有能力,可以一次执行多个。本文所用的术语“主要”可以是多于大致50%、多于大致80%、多于大致95%或者多于大致99%。
一旦形成了一个或多个批,调度算法可以采用批内调度算法或并行性意识批内调度算法,对批内的请求服务进行调度。可以使用任何批内调度算法,例如FR-FCFS。
在批内,并行性意识批内调度算法可以首先优先考虑行命中请求。其次,相比于来自较低等级的线程的请求,可以优先考虑来自较高等级的线程的请求,以提高组级别上的并行性,如本文详细描述的。最后,所有其他请求都是平等的,可以相比于较新的请求,优先考虑较早的请求。
并行性意识批内调度算法可以在批内使用基于等级的线程优先化方案。当形成新的批时,存储器调度器可以在具有该新批中的请求的所有线程之间计算等级排列。当处理该新批时,所计算的等级排列保持相同,相比于来自等级较低线程的请求,可以优先考虑来自等级较高线程的请求。基于等级排列的调度的效果在于,在所有存储器组中按照相同次序对不同线程排列优先级,从而由所有组并行地对每个线程的请求进行服务的可能性更大。
虽然可以使用任何基于等级排列的方案,但是具体的等级排列过程可以对CMP吞吐量和公平性具有显著影响。好的等级排列方案可以有效地在存储器密集和非密集线程(以及具有较高组并行性的线程)之间进行区分。在一些实施方式中,可以采用符合最短工作优先原则的等级排列方案:可以将非密集线程的等级排列得比密集线程的等级高。
要求保护的主题内容在范围上不限于本文描述的具体实施方式。例如,一些实施方式可以是硬件形式,例如用于在例如设备或设备的组合上操作,而其他实施方式可以是软件和/或固件形式。类似地,虽然在这方面要求保护的主题内容在范围上不受限,但是一些实施方式可以包括一个或多个物品,例如存储介质或存储媒介。存储介质例如CD-ROM、计算机盘、闪速存储器等,其上可以存储有指令,当由计算机系统、计算平台或其他系统之类的系统执行时,可以使处理器根据要求保护的主题内容来执行,例如上述实施方式之一。一个可能方式是计算平台可以包括一个或多个处理单元或处理器、一个或多个输入/输出设备(例如显示器、键盘和/或鼠标)、以及一个或多个存储器(例如静态随机存取存储器、动态随机存取存储器、闪速存储器、和/或硬驱)。
说明书所述的“实施方式”、“一个实施方式”、“一些实施方式”或者“其他实施方式”可以表示与一个或多个实施方式相结合描述的具体特征、结构或特点可以包括在至少一些实施方式中,但是不一定在所有实施方式中。在以上描述中出现的多个“实施方式”、“一个实施方式”或“一些实施方式”不一定全部是指相同的实施方式。此外,当本文或所附权利要求中使用例如“耦接”或“响应”或“响应于”或“与…通信”等术语或短语时,这些术语应该被广义地解释。例如,适合于短语所用的上下文,短语“耦接至”可以指通信性地、电和/或操作性地耦合。
在以上描述中,描述了要求保护的主题内容的多个方面。为了说明目的,记载了具体数字、系统和/或配置,以提供对要求保护的主题内容的透彻理解。然而,对于受益于本公开的本领域技术人员而言,应该显而易见的是,可以在不具有这些具体细节的情况下实施要求保护的主题内容。在其他情况下,可以省略和/或简化已知特征,以避免模糊要求保护的主题内容。虽然本文示出了和/或描述了特定特征,但是许多修改、替换、改变和/或等同物目前或在将来是本领域技术人员可设想到的。因此,要理解,所附权利要求旨在覆盖落入要求保护的主题内容的真实精神内的所有这些修改和/或改变。
在系统方案的硬件和软件实现方式之间存在一些小差别;硬件或软件的使用一般(但并非总是,因为在特定情况下硬件和软件之间的选择可能变得很重要)是一种体现成本与效率之间权衡的设计选择。可以各种手段(例如,硬件、软件和/或固件)来实施这里所描述的工艺和/或系统和/或其他技术,并且优选的工艺将随着所述工艺和/或系统和/或其他技术所应用的环境而改变。例如,如果实现方确定速度和准确性是最重要的,则实现方可以选择主要为硬件和/或固件的手段;如果灵活性是最重要的,则实现方可以选择主要是软件的实施方式;或者,同样也是可选地,实现方可以选择硬件、软件和/或固件的特定组合。
以上的详细描述通过使用方框图、流程图和/或示例,已经阐述了设备和/或工艺的众多实施例。在这种方框图、流程图和/或示例包含一个或多个功能和/或操作的情况下,本领域技术人员应理解,这种方框图、流程图或示例中的每一功能和/或操作可以通过各种硬件、软件、固件或实质上它们的任意组合来单独和/或共同实现。在一个实施例中,本公开所述主题的若干部分可以通过专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、或其他集成格式来实现。然而,本领域技术人员应认识到,这里所公开的实施例的一些方面在整体上或部分地可以等同地实现在集成电路中,实现为在一台或多台计算机上运行的一个或多个计算机程序(例如,实现为在一台或多台计算机系统上运行的一个或多个程序),实现为在一个或多个处理器上运行的一个或多个程序(例如,实现为在一个或多个微处理器上运行的一个或多个程序),实现为固件,或者实质上实现为上述方式的任意组合,并且本领域技术人员根据本公开,将具备设计电路和/或写入软件和/或固件代码的能力。此外,本领域技术人员将认识到,本公开所述主题的机制能够作为多种形式的程序产品进行分发,并且无论实际用来执行分发的信号承载介质的具体类型如何,本公开所述主题的示例性实施例均适用。信号承载介质的示例包括但不限于:可记录型介质,如软盘、硬盘驱动器、紧致盘(CD)、数字通用盘(DVD)、数字磁带、计算机存储器等;以及传输型介质,如数字和/或模拟通信 介质(例如,光纤光缆、波导、有线通信链路、无线通信链路等)。
本领域技术人员应认识到,上文详细描述了设备和/或工艺,此后使用工程实践来将所描述的设备和/或工艺集成到数据处理系统中是本领域的常用手段。也即,这里所述的设备和/或工艺的至少一部分可以通过合理数量的试验而被集成到数据处理系统中。本领域技术人员将认识到,典型的数据处理系统一般包括以下各项中的一项或多项:系统单元外壳;视频显示设备;存储器,如易失性和非易失性存储器;处理器,如微处理器和数字信号处理器;计算实体,如操作系统、驱动程序、图形用户接口、以及应用程序;一个或多个交互设备,如触摸板或屏幕;和/或控制系统,包括反馈环和控制电机(例如,用于感测位置和/或速度的反馈;用于移动和/或调节成分和/或数量的控制电机)。典型的数据处理系统可以利用任意合适的商用部件(如数据计算/通信和/或网络计算/通信系统中常用的部件)予以实现。
本公开所述的主题有时说明不同部件包含在不同的其他部件内或者不同部件与不同的其他部件相连。应当理解,这样描述的架构只是示例,事实上可以实现许多能够实现相同功能的其他架构。在概念上,有效地“关联”用以实现相同功能的部件的任意设置,从而实现所需功能。因此,这里组合实现具体功能的任意两个部件可以被视为彼此“关联”从而实现所需功能,而无论架构或中间部件如何。同样,任意两个如此关联的部件也可以看作是彼此“可操作地连接”或“可操作地耦合”以实现所需功能,且能够如此关联的任意两个部件也可以被视为彼此“能可操作地耦合”以实现所需功能。能可操作地耦合的具体示例包括但不限于物理上可配对和/或物理上交互的部件,和/或无线交互和/或可无线交互的部件,和/或逻辑交互和/或可逻辑交互的部件。
至于本文中任何关于多数和/或单数术语的使用,本领域技术人员可以从多数形式转换为单数形式,和/或从单数形式转换为多数形式,以适合具体环境和/或应用。为清楚起见,在此明确声明单数形式/多数形式可互换。
本领域技术人员应当理解,一般而言,所使用的术语,特别是所 附权利要求中(例如,在所附权利要求的主体部分中)使用的术语,一般地应理解为“开放”术语(例如,术语“包括”应解释为“包括但不限于”,术语“具有”应解释为“至少具有”等)。本领域技术人员还应理解,如果意在所引入的权利要求中标明具体数目,则这种意图将在该权利要求中明确指出,而在没有这种明确标明的情况下,则不存在这种意图。例如,为帮助理解,所附权利要求可能使用了引导短语“至少一个”和“一个或多个”来引入权利要求中的特征。然而,这种短语的使用不应被解释为暗示着由不定冠词“一”或“一个”引入的权利要求特征将包含该特征的任意特定权利要求限制为仅包含一个该特征的实施例,即便是该权利要求既包括引导短语“一个或多个”或“至少一个”又包括不定冠词如“一”或“一个”(例如,“一”和/或“一个”应当被解释为意指“至少一个”或“一个或多个”);在使用定冠词来引入权利要求中的特征时,同样如此。另外,即使明确指出了所引入权利要求特征的具体数目,本领域技术人员应认识到,这种列举应解释为意指至少是所列数目(例如,不存在其他修饰语的短语“两个特征”意指至少两个该特征,或者两个或更多该特征)。另外,在使用类似于“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”的可能性。
Claims (9)
1.一种用于执行针对存储器中数据的请求的方法,包括:
将线程隔离成第一线程类型和第二线程类型,其中基于第一线程类型的线程彼此之间的工作高效程度和第二线程类型的线程彼此之间的工作高效程度来进行所述隔离,第一线程类型的每一个线程发布针对存储器中的数据的至少一个第一线程请求类型,第二线程类型的每一个线程发布针对存储器中的数据的至少一个第二线程请求类型;
形成第一批的请求,所述第一批的请求包括第一请求,其中,形成所述第一批的请求的步骤包括:对由每个存储器组的第一组线程中的每个线程发布的请求数量的第一标记上限,基于所述第一线程类型并基于由每个线程向所述第一批内的存储器的每个存储器组发布的请求的数量的限制来设置所述第一标记上限;以及
针对由第一组线程中的每个线程发布的第一标记上限数量的请求进行分批;
针对存储器中的数据的第一线程请求类型,执行第一批的请求的第一请求;
形成第二批的请求,所述第二批的请求包括第二请求,其中,形成所述第二批的请求的步骤包括:对由每个存储器组的第二组线程中的每个线程发布的请求数量的第二标记上限,基于所述第二线程类型并基于由每个线程向所述第二批内的存储器的每个存储器组发布的请求的数量的限制来设置所述第二标记上限;以及
针对由第二组线程中的每个线程发布的第二标记上限数量的请求进行分批;
针对存储器中的数据的第二线程请求类型,执行第二批的请求的第二请求;
其中在执行每个第二批的请求之前,执行每个第一批的请求。
2.根据前述权利要求1所述的方法,其中在形成第二批之前,执行每个第一批的请求。
3.根据前述权利要求1所述的方法,其中执行每个第一批的请求包括:在执行另一个批的任何请求之前,执行一个批的所有请求。
4.根据前述权利要求1所述的方法,其中每个第一批包括单一线程请求类型的请求。
5.根据前述权利要求1所述的方法,其中隔离包括:将线程隔离成所述第一线程类型、所述第二线程类型、以及第三线程类型,
第三线程类型的每个线程发布针对存储器中数据的至少一个第三线程请求类型。
6.根据前述权利要求1所述的方法,其中隔离包括:将线程只隔离成第一线程类型和第二线程类型。
7.根据前述权利要求1所述的方法,其中隔离包括:基于线程被设计与并行存储器一起使用的良好程度,来进行隔离。
8.根据前述权利要求1所述的方法,其中隔离包括:基于线程所发源的应用程序,来进行隔离。
9.根据前述权利要求1所述的方法,其中隔离包括:
基于每个线程发布的请求的相对数目,来进行隔离。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/507,696 | 2009-07-22 | ||
US12/507,696 US8607234B2 (en) | 2009-07-22 | 2009-07-22 | Batch scheduling with thread segregation and per thread type marking caps |
PCT/US2010/039912 WO2011011154A2 (en) | 2009-07-22 | 2010-06-25 | Batch scheduling with segregation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102725734A CN102725734A (zh) | 2012-10-10 |
CN102725734B true CN102725734B (zh) | 2015-08-26 |
Family
ID=43498400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080031695.XA Expired - Fee Related CN102725734B (zh) | 2009-07-22 | 2010-06-25 | 基于隔离的线程批调度方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8607234B2 (zh) |
JP (1) | JP5560331B2 (zh) |
KR (1) | KR101377850B1 (zh) |
CN (1) | CN102725734B (zh) |
WO (1) | WO2011011154A2 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8180975B2 (en) * | 2008-02-26 | 2012-05-15 | Microsoft Corporation | Controlling interference in shared memory systems using parallelism-aware batch scheduling |
US8799912B2 (en) * | 2009-07-22 | 2014-08-05 | Empire Technology Development Llc | Application selection of memory request scheduling |
US8839255B2 (en) * | 2009-07-23 | 2014-09-16 | Empire Technology Development Llc | Scheduling of threads by batch scheduling |
US9354944B2 (en) * | 2009-07-27 | 2016-05-31 | Advanced Micro Devices, Inc. | Mapping processing logic having data-parallel threads across processors |
US20150033234A1 (en) * | 2013-07-23 | 2015-01-29 | Qualcomm Incorporated | Providing queue barriers when unsupported by an i/o protocol or target device |
US9811453B1 (en) * | 2013-07-31 | 2017-11-07 | Juniper Networks, Inc. | Methods and apparatus for a scheduler for memory access |
WO2015089730A1 (en) * | 2013-12-17 | 2015-06-25 | Intel Corporation | Techniques for portable computing device virtualization |
US9626218B1 (en) * | 2014-03-10 | 2017-04-18 | Altera Corporation | Repartitioning and reordering of multiple threads into subsets based on possible access conflict, for sequential access to groups of memory banks in a shared memory |
US9378044B1 (en) * | 2015-03-28 | 2016-06-28 | Vmware, Inc. | Method and system that anticipates deleterious virtual-machine state changes within a virtualization layer |
CN106161393B (zh) * | 2015-04-17 | 2020-04-24 | 伊姆西Ip控股有限责任公司 | 实现多个内容管理服务操作的方法和装置 |
US10250715B2 (en) * | 2016-06-30 | 2019-04-02 | Salesforce.Com, Inc. | Dynamic adjustment of boxcarring of action requests from component-driven cloud applications |
US10250716B2 (en) * | 2016-06-30 | 2019-04-02 | Salesforce.Com, Inc. | Priority-driven boxcarring of action requests from component-driven cloud applications |
US10572399B2 (en) * | 2016-07-13 | 2020-02-25 | Qualcomm Incorporated | Memory request arbitration |
CN107103234B (zh) * | 2017-03-01 | 2020-06-26 | 北京龙鼎源科技股份有限公司 | 多任务隔离方法和装置 |
US11568236B2 (en) | 2018-01-25 | 2023-01-31 | The Research Foundation For The State University Of New York | Framework and methods of diverse exploration for fast and safe policy improvement |
US11422857B2 (en) | 2019-06-01 | 2022-08-23 | Apple Inc. | Multi-level scheduling |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1517872A (zh) * | 2003-01-16 | 2004-08-04 | 国际商业机器公司 | 动态分配计算机资源的方法和装置 |
CN1601474A (zh) * | 2003-09-26 | 2005-03-30 | 株式会社东芝 | 执行实时操作的方法和系统 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6243788B1 (en) * | 1998-06-17 | 2001-06-05 | International Business Machines Corporation | Cache architecture to enable accurate cache sensitivity |
US6286083B1 (en) * | 1998-07-08 | 2001-09-04 | Compaq Computer Corporation | Computer system with adaptive memory arbitration scheme |
US7065762B1 (en) | 1999-03-22 | 2006-06-20 | Cisco Technology, Inc. | Method, apparatus and computer program product for borrowed-virtual-time scheduling |
US6633298B2 (en) * | 1999-07-31 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | Creating column coherency for burst building in a memory access command stream |
US6817011B1 (en) * | 1999-12-14 | 2004-11-09 | International Business Machines Corporation | Memory allocation profiling to discover high frequency allocators |
US6711644B1 (en) * | 2000-07-27 | 2004-03-23 | International Business Machines Corporation | Apparatus and method for communicating the completion of asynchronous input/output |
US6961834B2 (en) | 2001-10-12 | 2005-11-01 | Sonics, Inc. | Method and apparatus for scheduling of requests to dynamic random access memory device |
US6578117B2 (en) | 2001-10-12 | 2003-06-10 | Sonics, Inc. | Method and apparatus for scheduling requests using ordered stages of scheduling criteria |
US7194561B2 (en) * | 2001-10-12 | 2007-03-20 | Sonics, Inc. | Method and apparatus for scheduling requests to a resource using a configurable threshold |
US7310722B2 (en) * | 2003-12-18 | 2007-12-18 | Nvidia Corporation | Across-thread out of order instruction dispatch in a multithreaded graphics processor |
US8230426B2 (en) | 2004-10-06 | 2012-07-24 | Digipede Technologies, Llc | Multicore distributed processing system using selection of available workunits based on the comparison of concurrency attributes with the parallel processing characteristics |
US7356631B2 (en) | 2005-01-21 | 2008-04-08 | Himax Technologies, Inc. | Apparatus and method for scheduling requests to source device in a memory access system |
JP2008541217A (ja) | 2005-05-04 | 2008-11-20 | エヌエックスピー ビー ヴィ | メモリーコントローラ、メモリーアクセスの制御方法、及びメモリーコントローラを具えたシステム |
JP4611830B2 (ja) | 2005-07-22 | 2011-01-12 | 優 喜連川 | データベース管理システム及び方法 |
US20070061805A1 (en) | 2005-09-15 | 2007-03-15 | Brenner Larry B | Method and apparatus for improving thread posting efficiency in a multiprocessor data processing system |
CN100373362C (zh) | 2005-12-22 | 2008-03-05 | 北京中星微电子有限公司 | 直接存储访问控制器 |
US7533236B1 (en) * | 2006-05-11 | 2009-05-12 | Nvidia Corporation | Off-chip out of order memory allocation for a unified shader |
US8019002B2 (en) | 2006-06-08 | 2011-09-13 | Qualcomm Incorporated | Parallel batch decoding of video blocks |
US20090031314A1 (en) | 2007-07-25 | 2009-01-29 | Microsoft Corporation | Fairness in memory systems |
US9588810B2 (en) | 2007-08-08 | 2017-03-07 | Microsoft Technology Licensing, Llc | Parallelism-aware memory request scheduling in shared memory controllers |
US20090158299A1 (en) | 2007-10-31 | 2009-06-18 | Carter Ernst B | System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed |
US8245232B2 (en) * | 2007-11-27 | 2012-08-14 | Microsoft Corporation | Software-configurable and stall-time fair memory access scheduling mechanism for shared memory systems |
US8174534B2 (en) | 2007-12-06 | 2012-05-08 | Via Technologies, Inc. | Shader processing systems and methods |
US20090165007A1 (en) | 2007-12-19 | 2009-06-25 | Microsoft Corporation | Task-level thread scheduling and resource allocation |
US8180975B2 (en) * | 2008-02-26 | 2012-05-15 | Microsoft Corporation | Controlling interference in shared memory systems using parallelism-aware batch scheduling |
US8296773B2 (en) * | 2008-06-30 | 2012-10-23 | International Business Machines Corporation | Systems and methods for thread assignment and core turn-off for integrated circuit energy efficiency and high-performance |
US8332854B2 (en) | 2009-05-19 | 2012-12-11 | Microsoft Corporation | Virtualized thread scheduling for hardware thread optimization based on hardware resource parameter summaries of instruction blocks in execution groups |
US8799912B2 (en) | 2009-07-22 | 2014-08-05 | Empire Technology Development Llc | Application selection of memory request scheduling |
US8839255B2 (en) | 2009-07-23 | 2014-09-16 | Empire Technology Development Llc | Scheduling of threads by batch scheduling |
-
2009
- 2009-07-22 US US12/507,696 patent/US8607234B2/en not_active Expired - Fee Related
-
2010
- 2010-06-25 JP JP2012521651A patent/JP5560331B2/ja not_active Expired - Fee Related
- 2010-06-25 KR KR1020117030903A patent/KR101377850B1/ko active IP Right Grant
- 2010-06-25 CN CN201080031695.XA patent/CN102725734B/zh not_active Expired - Fee Related
- 2010-06-25 WO PCT/US2010/039912 patent/WO2011011154A2/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1517872A (zh) * | 2003-01-16 | 2004-08-04 | 国际商业机器公司 | 动态分配计算机资源的方法和装置 |
CN1601474A (zh) * | 2003-09-26 | 2005-03-30 | 株式会社东芝 | 执行实时操作的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
KR101377850B1 (ko) | 2014-03-25 |
WO2011011154A2 (en) | 2011-01-27 |
US20110023038A1 (en) | 2011-01-27 |
US8607234B2 (en) | 2013-12-10 |
WO2011011154A3 (en) | 2012-04-05 |
KR20120017456A (ko) | 2012-02-28 |
JP5560331B2 (ja) | 2014-07-23 |
CN102725734A (zh) | 2012-10-10 |
JP2012533826A (ja) | 2012-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102725734B (zh) | 基于隔离的线程批调度方法 | |
CN102473109B (zh) | 利用批调度的线程调度方法及装置 | |
CN102484130B (zh) | 存储器请求调度的应用程序选择 | |
US9281026B2 (en) | Parallel processing computer systems with reduced power consumption and methods for providing the same | |
CN101606130B (zh) | 在处理器系统的指令级使能资源分配标识的方法和装置 | |
TWI397009B (zh) | 基本輸入輸出系統的資料處理裝置 | |
CN102870096B (zh) | 子缓冲器对象 | |
CN106371888A (zh) | 支持虚拟机的存储设备,包括其的存储系统和其操作方法 | |
CN102473137A (zh) | 线程节流 | |
CN100385389C (zh) | 可避免写后读的危险的存储器指令的发出和执行 | |
US20140375658A1 (en) | Processor Core to Graphics Processor Task Scheduling and Execution | |
CN110187835A (zh) | 用于管理访问请求的方法、装置、设备和存储介质 | |
CN105210038B (zh) | 核亲和性位掩码变换 | |
CN103218322A (zh) | 片上系统、电子系统以及操作其的方法 | |
CN118011183A (zh) | 实时响应多芯片多测试任务的并行调度方法、设备及介质 | |
CN100583064C (zh) | 用于从别名地址池中移除别名地址的方法和设备 | |
CN1947092B (zh) | 处理器 | |
Ober et al. | High-throughput multi-threaded sum-product network inference in the reconfigurable cloud | |
JP2021099785A (ja) | コンピュータアプリケーションを異種システムのために分配する自動学習技術 | |
CN110032489A (zh) | 通过基于命令集的重演收集性能信息的处理器设备 | |
CN102736949B (zh) | 改善对非连贯设备要执行的任务的调度 | |
CN100461090C (zh) | 利用代码共享进行堆栈高速缓存的系统、方法和设备 | |
US20230376844A1 (en) | Methods, systems, articles of manufacture and apparatus to build blocking-based batches for training machine learning models | |
CN1771486B (zh) | 用于可合成流水线控制的方法及设备 | |
CN100409221C (zh) | 具有笛卡尔控制器的数据处理系统以及处理数据的方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150826 Termination date: 20200625 |