CN103197918A - 多通道时间片组 - Google Patents
多通道时间片组 Download PDFInfo
- Publication number
- CN103197918A CN103197918A CN2012105285766A CN201210528576A CN103197918A CN 103197918 A CN103197918 A CN 103197918A CN 2012105285766 A CN2012105285766 A CN 2012105285766A CN 201210528576 A CN201210528576 A CN 201210528576A CN 103197918 A CN103197918 A CN 103197918A
- Authority
- CN
- China
- Prior art keywords
- passage
- processing unit
- task
- tsg
- described processing
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 claims abstract description 135
- 238000000034 method Methods 0.000 claims description 30
- 238000003860 storage Methods 0.000 description 60
- 238000004891 communication Methods 0.000 description 12
- 238000007726 management method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000013507 mapping Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000013316 zoning Methods 0.000 description 9
- 238000009826 distribution Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000011156 evaluation Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 4
- 230000008676 import Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004040 coloring Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009183 running Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000000853 adhesive Substances 0.000 description 1
- 230000001070 adhesive effect Effects 0.000 description 1
- 238000012884 algebraic function Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000003760 hair shine Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005293 physical law Methods 0.000 description 1
- 238000002203 pretreatment Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, 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/461—Saving or restoring of program or task context
Abstract
时间片组(TSG)是共享相同的上下文信息的不同工作流(本文称之为“通道”)的分组。按预先确定的顺序处理属于TSG的通道集合。但是,当在执行时通道停滞,则可切换至具有独立工作的下一个通道以完全加载并行处理单元。重要的是,因为TSG中的每个通道均共享相同的上下文信息,所以当TSG中的特定通道的处理停止并且TSG中的下一个通道的处理开始时,不需要上下文切换操作。因此,允许在单个上下文内并发运行多个独立的工作流,增加了并行处理单元的利用率。
Description
技术领域
本发明总地涉及任务执行,并且更具体地,涉及多通道(Multi-channel)时间片(time slice)组。
背景技术
图形处理单元(GPU)包括大量的流多处理器(SM),所述流多处理器配置为执行由系统中的不同应用程序所生成的工作。用于在GPU内执行的由应用程序所生成的工作可属于若干个类别,包括图形工作、计算工作、射线跟踪工作等等。这些工作的类别中的每一个均有不同的特征。
计算工作一般组织为,使得计算工作内的不同的任务分组可以并发执行。然而,GPU中的主机单元顺序启动计算工作任务。因此,如果特定的任务正等待前一个的任务完成,并且前一个任务只使用了一小部分SM,那么未被使用的SM是闲置的。由于当SM保持闲置时SM的处理能力被浪费,并且花费更长的时间来处理可以更有效地处理的计算工作,因此这样的场景是非常不受欢迎的。
如果本领域所知,针对以上问题的解决方案是在不同通道中包括每个任务组,使得当一个通道停滞时,由不同通道所指定的任务可以开始执行。然而,在这种实现方案中,每次切换通道时,SM都必须是闲置的并且需要上下文切换操作。如本领域技术人员所熟知的,不必要地使并行机闲置是低效的,并且上下文切换操作在时间和处理上均是密集的。因此,每次通道切换均需要上下文切换操作,这造成系统的不必要的性能下降。
因此,本领域所需要的是用于允许多个独立工作流在单个上下文内并发运行的系统和方法。
发明内容
本发明的一个实施例是用于调度任务以在处理单元内执行的方法。所述方法包括确定指定将要在处理单元内所执行的任务的通道集合与时间片组相关联,其中每个通道均指定不同的任务集合,并且和与所述时间片组相关联的每个通道相对应的上下文信息是相同的;选择包括在所述通道集合中的第一通道用于下一个在处理单元内执行;确定是否需要在所述处理单元内设置与所述第一通道相对应的上下文信息,其中,当由所述处理单元所执行的前一个通道包括在所述通道集合中时,不需要在所述处理单元内设置与所述第一通道相对应的上下文信息,并且,当由所述处理单元所执行的所述前一个通道未包括在所述通道集合中时,需要在所述处理单元内设置与所述第一通道相对应的上下文信息;以及调度由所述第一通道所指定的第一任务集合用于在所述处理单元内执行。
本发明的一个优点在于,可以由GPC 208执行共享相同的上下文信息的不同的工作通道,而无需介入上下文切换操作。因此,如果通道停滞,可调度不同的通道用于执行,而不会导致上下文切换开销,从而增加了系统的总体吞吐量和性能。
附图说明
为了详细地理解本发明的上述特征,对于以上简要概括的发明,可以参照实施例进行更为具体的描述,其中一些实施例示出于附图中。然而,应注意的是,附图中示出的只是本发明的代表性实施例,因此不应被认为是对本发明的范围的限制,本发明可以适用于其他同等有效的实施例。
图1是示出了配置为实现本发明的一个或多个方面的计算机系统的框图;
图2是根据本发明一个实施例的、用于图1的计算机系统的并行处理子系统的框图;
图3A是根据本发明一个实施例的、图2的前端的框图;
图3B是根据本发明一个实施例的、图2的一个并行处理单元内的通用处理集群的框图;
图3C是根据本发明一个实施例的、图3B的流多处理器的一部分的框图;
图4是根据本发明一个实施例的、基于调度哪些任务用于在GPC内进行处理的运行列表、通道映射和每通道上下文信息的示例;
图5是根据本发明一个实施例的、图2的主机接口的更详细的示例,所述主机接口配置为选择工作用于在处理集群阵列内执行;以及
图6A和6B阐述了根据本发明一个实施例的、用于识别下一个通道用于执行的方法步骤的流程图。
具体实施方式
在下面的描述中,将阐述大量的特定细节以提供对本发明更深入的理解。然而,本技术领域的技术人员应该清楚,本发明可以在没有一个或多个这些具体细节的情况下得以实施。在其他例子中,没有描述公知的特征以避免对本发明造成混淆。
系统概述
图1是示出了配置为实现本发明的一个或多个方面的计算机系统100的框图。计算机系统100包括中央处理单元(CPU)102和系统存储器104,两者经由可包括存储器桥105的互连路径通信。存储器桥105例如可以是北桥芯片,经由总线或其他通信路径106(例如,超传输链接)连接到I/O(输入/输出)桥107。I/O桥107例如可以是南桥芯片,从一个或多个用户输入设备108(例如,键盘、鼠标)接收用户输入,并将该输入经由路径106和存储器桥105转发至CPU 102。并行处理子系统112经由总线或其他通信路径113(例如,外围部件互连(PCI)Express、加速图形端口或超传输链接)耦合至存储器桥105;在一个实施例中,并行处理子系统112是将像素传递到显示设备110(例如,常规的基于阴极射线管或液晶显示器的监视器)的图形子系统。系统盘114还连接到I/O桥107。开关116为I/O桥107和诸如网络适配器118以及各种外插卡(add-in card)120和121的其他部件之间提供了连接。其他部件(未明确示出)也可以连接到I/O桥107,包括通用串行总线(USB)或其他端口连接、压缩光盘(CD)驱动器、数字视频光盘(DVD)驱动器、胶片记录设备等。图1中互联各种部件的通信路径可以使用任何合适的协议来实现,诸如PCI Express、AGP(加速图形端口)、超传输或任何其他总线或点对点通信协议,并且不同设备之间的连接可以使用本领域已知的不同协议。
在一个实施例中,并行处理子系统112包含被优化用于图形和视频处理的电路,例如包括视频输出电路,并且构成图形处理单元(GPU)。在另一个实施例中,并行处理子系统112包含被优化用于通用处理的电路,同时保留底层的(underlying)计算架构,本文将进行更为详细的描述。在又一个实施例中,并行处理子系统112可与一个或多个其他系统元件集成,诸如存储器桥105、CPU 102和I/O桥107,以形成片上系统(SoC)。
应理解的是,本文所示系统是例示性的,可以对其进行变形和修改。可根据需要修改连接拓扑结构,包括桥的数量和布置、CPU 102的数量以及并行处理子系统112的数量。例如,在一些实施例中,系统存储器104直接连接到CPU 102而非通过桥连接,并且其他器件经由存储器桥105和CPU 102与系统存储器104通信。在其他替代拓扑结构中,并行处理子系统112连接到I/O桥107或者直接连接到CPU 102,而非连接到存储器桥105。在又一些实施例中,I/O桥107和存储器桥105可能被集成到单个芯片中。大型实施例可包括两个或更多CPU 102以及包括两个或更多并行处理子系统112。本文所示具体部件是可选的;例如,任何数量的外插卡或外围设备都可能得到支持。在一些实施例中,开关116被省去,并且网络适配器118和外插卡120、121直接连接到I/O桥107。
图2示出了根据本发明一个实施例的并行处理子系统112。如图所示,并行处理子系统112包括一个或多个并行处理单元(PPU)202,其每一个均耦合至本地并行处理(PP)存储器204。一般来讲,并行处理子系统包括U个PPU,其中U≥1。(本文中,相似对象的多个实体用标识该对象的参考数字并根据需要结合标识该实体的带括号的数字加以表示)。PPU 202和并行处理存储器204可用一个或多个诸如可编程处理器、专用集成电路(ASIC)或存储器器件这类集成电路器件来实现,或者以任何其他在技术上可行的方式来实现。
再次参照图1以及图2,在一些实施例中,并行处理子系统112中的一些或所有PPU 202是具有渲染管线的图形处理器,可以配置为实施与下述各项相关的各种任务:由图形数据生成像素数据,所述图形数据是由CPU 102和/或系统存储器104经由存储器桥105和总线113而供给的;与本地并行处理存储器204(可以作为图形存储器加以使用,包括例如常规的帧缓冲区)交互,以存储和更新像素数据;将像素数据传递到显示设备110;等等。在一些实施例中,并行处理子系统112可包括作为图形处理器而操作的一个或多个PPU 202以及供通用计算使用的一个或多个其他PPU202。这些PPU可相同或不同,并且每个PPU均可具有其自己的专用的并行处理存储器器件或非专用并行处理存储器器件。一个或多个PPU 202可向显示设备110输出数据,或者每个PPU 202均可向一个或多个显示设备110输出数据。
现在返回参照图2以及图1。操作中,CPU 102是计算机系统100的主处理器,控制并协调其他系统部件的操作。具体来讲,CPU 102发出控制PPU 202的操作的命令。在一些实施例中,CPU 102将针对每个PPU 202的命令流写入到数据结构(图1和图2中均未明确示出)中,所述数据结构可位于系统存储器104、并行处理存储器204或者CPU 102和PPU 202均可访问的另一个存储位置中。对入栈缓冲区(pushbuffer)写入指向每个数据结构的指针来开始数据结构中命令流的处理。PPU 202从一个或多个入栈缓冲区读取命令流,然后相对于CPU 102的操作异步地执行命令。可为每个入栈缓冲区指定执行优先级,以控制不同入栈缓冲区的调度。
每个PPU 202均包括I/O(输入/输出)单元205,该I/O单元205经由通信路径113与计算机系统100的其余部分通信,其连接到存储器桥105(或者,在一个替代实施例中,直接连接到CPU 102)。PPU 202到计算机系统100的其余部分的连接也可以变化。在一些实施例中,并行处理子系统112实现为可以被插入到计算机系统100的扩展槽中的外插卡。在另一些实施例中,PPU 202可以集成在具有诸如存储器桥105或I/O桥107这类总线桥的单个芯片上。在又一些实施例中,PPU 202中的一些或全部元件可集成在具有CPU 102的单个芯片上。
在一个实施例中,通信路径113是PCI Express链接,其中给每个PPU202分配有专用通道(lane),如本领域已知的。也可使用其他通信路径。I/O单元205生成数据包(或其他信号)用于在通信路径113上传输,并且也从通信路径113接收所有传入的数据包(或其他信号),将传入的数据包引向PPU 202的适当部件。例如,可将与处理任务相关的命令引向主机接口206,而可将与存储器操作相关的命令(例如,对并行处理存储器204的读取或写入)引向存储器交叉开关(crossbar)单元210。主机接口206对每个入栈缓冲区进行读取并将存储在入栈缓冲区中的命令流输出到前端212。
每个PPU 202均有利地实现高度并行的处理架构。如图中详细所示,PPU 202(0)包括处理集群阵列230,该阵列包括C个通用处理集群(GPC)208,其中C≥1。每个GPC 208均能够并发执行大量(例如,数百个或数千个)线程,其中每个线程均为程序的实例(instance)。在各种应用中,可分配不同的GPC 208,用于处理不同类型的程序或用于实施不同类型的计算。GPC 208的分配可依据每个类型的程序或计算产生的工作量而变化。
GPC 208从在任务/工作单元207内的工作分布单元接收将要执行的处理任务。工作分布单元接收指向被编码为任务元数据(TMD)并存储在存储器中的处理任务的指针。指向TMD的指针包括在命令流中,所述命令流被存储为入栈缓冲区并由前端单元212从主机接口206接收。可编码为TMD的处理任务包括将要处理的数据的索引以及定义将如何处理数据(例如,将执行什么程序)的命令和状态参数。任务/工作单元207从前端212接收任务并保证GPC 208在由每一个TMD所指定的处理开始前被配置为有效状态。可为每个用于调度处理任务的执行的TMD指定优先级。
存储器接口214包括D个分区单元215,这些分区单元每一个均直接耦合至并行处理存储器204的一部分,其中D≥1。如图所示,分区单元215的数量通常等于动态随机存取存储器(DRAM)220的数量。在另一些实施例中,分区单元215的数量可以不等于存储器器件的数量。本领域的普通技术人员将认识到,DRAM 220可用其他合适的存储器件代替,并且可以采用一般常规设计。因此省略详细描述。可跨DRAM 220来存储诸如帧缓冲区或纹理映射这样的渲染对象,允许分区单元215并行地写入每个渲染对象的各部分,以高效地使用并行处理存储器204的可用带宽。
GPC 208中的任何一个都可处理将被写入并行处理存储器204内任何DRAM 220的数据。交叉开关单元210配置为将每个GPC 208的输出路由(route)至任何分区单元215的输入或路由至另一GPC 208,用于进一步处理。GPC 208通过交叉开关单元210与存储器接口214通信,以对各种外部存储器器件进行读写。在一个实施例中,交叉开关单元210具有至存储器接口214的连接以与I/O单元205通信,以及具有至本地并行处理存储器204的连接从而使不同GPC 208内的处理内核能够与系统存储器104或相对于PPU 202来讲非本地的其他存储器通信。在图2所示实施例中,交叉开关单元210与I/O单元205直接连接。交叉开关单元210可使用虚拟信道在GPC 208和分区单元215之间分割业务(traffic)流。
再者,GPC 208可以编程为执行与种类繁多的应用相关的处理任务,包括但不限于线性和非线性数据变换、视频和/或音频数据的过滤、建模操作(例如,运用物理定律确定对象的位置、速率和其他属性)、图像渲染操作(例如,曲面细分着色、顶点着色、几何着色和/或像素着色程序)等等。PPU 202可将数据从系统存储器104和/或本地并行处理存储器204转移到内部(片上)存储器中,对数据进行处理,并将结果数据写回到系统存储器104和/或本地并行处理存储器204,在这里这类数据可以由其他系统部件访问,包括CPU 102或另一并行处理子系统112。
PPU 202可设置具有任何容量(amount)的本地并行处理存储器204,包括不设置本地存储器,并且可以任何组合方式来使用本地存储器和系统存储器。例如,在统一存储器架构(UMA)实施例中,PPU 202可以是图形处理器。在这样的实施例中,将会提供极少的甚至不提供专用图形(并行处理)存储器,并且PPU 202将以排他的方式或者几乎以排他的方式使用系统存储器。在UMA实施例中,PPU 202可集成到桥式芯片或处理器芯片中,或者可被提供为具有高速链接(例如,PCI EXPRESS)的分立芯片,所述高速链接经由桥式芯片或其他通信手段将PPU 202连接到系统存储器。
如上所述,并行处理子系统112中可以包括有任何数量的PPU 202。例如,可以在单个外插卡上提供多个PPU 202,或者多个外插卡可以连接到通信路径113,或者PPU 202中的一个或多个可以集成到桥式芯片中。多PPU系统中的PPU 202可彼此相同或不同。例如,不同的PPU 202可能具有不同数量的处理内核、不同容量的本地并行处理存储器等。在存在有多个PPU 202的情况下,可以并行地操作这些PPU从而以高于单个PPU202可能达到的吞吐量来处理数据。包含一个或多个PPU 202的系统可以以各种配置和形式因素来加以实现,包括桌上型电脑、膝上型电脑或者手持式个人计算机、服务器、工作站、游戏控制台、嵌入式系统等。
多个并发任务调度
可在GPC 208上并发执行多个处理任务,并且处理任务可在执行期间生成一个或多个“子”处理任务。任务/工作单元207接收任务并动态调度处理任务和子处理任务用于由GPC 208执行。
图3A是根据本发明的一个实施例的、图2的任务/工作单元207的框图。任务/工作单元207包括任务管理单元300和工作分布单元340。任务管理单元300基于执行优先级级别来组织将要调度的任务。对于每个优先级级别,任务管理单元300都存储指向与在调度器表321中的任务相对应的TMD 322的指针的链接列表。TMD 322可存储在PP存储器204或系统存储器104中。任务管理单元300接受任务和将任务存储在调度器表321中的速率与任务管理单元300调度任务用于执行的速率解耦,使得任务管理单元300能够基于优先级信息或使用其他技术来调度任务。
工作分布单元340包括具有槽的任务表345,所述槽可各自被TMD322占用,用于正在执行的任务。当任务表345中存在空闲槽时,任务管理单元300可调度任务用于执行。当没有空闲槽时,未占用槽的较高优先级任务可驱逐占用槽的较低优先级任务。当任务被驱逐时,该任务停止,并且如果该任务的执行未完成,那么任务被添加到调度器表321中的链接列表。当子处理任务被生成时,该子任务被添加到调度器表321中的链接列表。当任务被驱逐时,从槽移除该任务。
任务处理概述
图3B是根据本发明一个实施例的、图2的一个PPU 202内的GPC 208的框图。每个GPC 208均可配置为并行地执行大量线程,其中术语“线程”是指对特定的一组输入数据执行的特定程序的实例。在一些实施例中,使用单指令多数据(SIMD)指令发送技术来支持大量线程的并行执行,而无需提供多个独立指令单元。在另一些实施例中,采用单指令多线程(SIMT)技术,使用配置为发送指令到每一个GPC 208内一组处理引擎的公共指令单元,来支持大量通常同步化的线程的并行执行。不同于其中所有处理引擎一般都执行相同指令的SIMD执行机制,SIMT执行允许不同的线程更容易跟随(follow)通过给定线程程序的发散的执行路径。本领域的普通技术人员将理解的是,SIMD处理机制代表SIMT处理机制的功能子集。
经由管线管理器305来有利地控制GPC 208的操作,所述管线管理器305将处理任务分布到流多处理器(SM)310。管线管理器305也可配置为通过为由SM 310输出的经处理的数据指定目的地来控制工作分布交叉开关330。
在一个实施例中,每个GPC 208均包括M个SM 310,其中M≥1,每个SM 310均配置为处理一个或多个线程组。而且,每个SM 310还最好包括同样的一组可被管线化的功能执行单元(例如,执行单元和加载-存储单元等,如图3C中的Exec单元302和LSU 303所示),从而允许在前一个指令结束之前发送新的指令,如本领域所已公知的。可提供功能执行单元的任何组合。在一个实施例中,这些功能单元支持各种操作,包括整数和浮点算法(例如,加法和乘法)、比较操作、布尔操作(AND、OR、XOR)、位移以及各种代数函数的计算(例如,平面插值、三角、指数和对数函数等);并且相同的功能单元硬件可均衡地用于(be leveraged to)执行不同操作。
传输到特定GPC 208的一系列指令构成线程,如本文前面所定义的,并且跨SM 310内并行处理引擎(未示出)的一定数量并发执行的线程的集合在本文中被称为“卷绕包(warp)”或“线程组”。如本文所使用的,“线程组”是指对不同的输入数据并发执行同一程序的一组线程,且该组中有一个线程被指派给SM 310内不同的处理引擎。线程组可包括比SM 310内处理引擎的数量少的线程,在此情况下,在正在处理该线程组的周期内,一些处理引擎将处于闲置状态。线程组也可包括比SM 310内处理引擎的数量多的线程,在此情况下,处理将在连续的时钟周期上进行。由于每个SM310均可以并发地支持多达G个线程组,所以在任何给定时间都可以允许多达G×M个线程组在GPC 208中执行。
另外,在SM 310内,多个相关的线程组可同时处于激活状态(处于不同执行阶段)。这种线程组的集合在本文中被称为“协作线程阵列”(“CTA”)或“线程阵列”。特定CTA的大小等于m×k,其中k是线程组中并发执行的线程的数量,并且一般是SM 310内并行处理引擎的数量的整数倍,m是SM 310内同时处于激活状态的线程组的数量。CTA的大小通常由编程人员和CTA可用的硬件资源例如存储器或寄存器的容量决定。
每个SM 310均含有一级(L1)高速缓存(图3C中示出),或使用在SM 310之外的相应L1高速缓存中用以执行加载和存储操作的空间。每个SM 310也均有权访问二级(L2)高速缓存,所述二级高速缓存在所有GPC208之间共享并且可用于在线程之间转移数据。最后,SM 310也有权访问片外“全局”存储器,该存储器可以包括例如并行处理存储器204和/或系统存储器104。应予以理解的是,PPU 202外部的任何存储器都可用作全局存储器。此外,一点五级(L1.5)高速缓存335可包括在GPC 208之内,配置为经由存储器接口214来接收和保持从存储器中所获取的、SM 310所请求的数据,包括指令、一致性(uniform)数据以及常数数据,以及向SM 310提供所请求的数据。在GPC 208中具有多个SM 310的实施例有益地共享被高速缓存于L1.5高速缓存335中的公共指令和数据。
每个GPC 208均可包括存储器管理单元(MMU)328,该单元配置为将虚拟地址映射到物理地址。在其他实施例中,MMU 328可驻留在存储器接口214内。MMU 328包括页表条目(PTE)集合以及可选地包括高速缓存线索引,该PTE集合用于将虚拟地址映射到像素块(tile)的物理地址。MMU 328可包括地址转译后备缓冲区(translation lookaside buffer,TLB)或高速缓存,其可驻留在多处理器SM 310或L1高速缓存或GPC 208内。处理物理地址以分布表面数据访问位置,从而允许在分区单元之间交错的高效请求。高速缓存线索引可用于确定对于高速缓存线的请求是否命中或未命中。
在图形和计算应用中,GPC 208可配置为使得每个SM 310均耦合至纹理单元315,用于实施纹理映射操作,例如,确定纹理采样位置、读取纹理数据以及过滤纹理数据。纹理数据是从内部纹理L1高速缓存(未示出)读取的,或者在一些实施例中是从SM 310内的L1高速缓存读取的,并且根据需要从L2高速缓存、并行处理存储器204或系统存储器104所获取。每个SM 310均将处理后的任务输出到工作分布交叉开关330,以便将处理后的任务提供到另一GPC 208用于进一步处理,或者经由交叉开关单元210将处理后的任务存储在L2高速缓存、并行处理存储器204或系统存储器104中。preROP(pre-raster operations,预光栅操作)325配置为从SM 310接收数据,将数据引向分区单元215内的ROP单元,并实施对色彩混合的优化、组织像素色彩数据以及实施地址转译。
应予以理解的是,本文所描述的内核架构是例示性的,可以对其进行各种变形和修改。GPC 208内可包括任何数量的处理单元,例如,SM 310或纹理单元315、preROP 325。此外,虽然仅示出一个GPC 208,但PPU 202可包括任何数量的GPC 208,这些GPC 208最好在功能上彼此相似,以使执行行为不依赖于接收特定处理任务的GPC 208。此外,每个GPC 208最好使用单独的且各异的处理单元、L1高速缓存等,相对于其他GPC 208独立地操作。
本领域普通技术人员应理解的是,图1、2、3A和3B中所描述的架构决非限制本发明的范围,并且在不脱离本发明的范围的情况下,本文所教导的技术可在任何适当配置的处理单元上实现,这些处理单元包括但不限于一个或多个CPU、一个或多个多核CPU、一个或多个PPU 202、一个或多个GPC 208、一个或多个图形或专用处理单元等。
在本发明的实施例中,所期望的是,使用PPU 202或计算系统的其他处理器采用线程阵列来执行通用计算。给线程阵列中的每个线程都指派唯一的线程标识符(“线程ID”),所述线程标识符在线程执行期间可由该线程访问。线程ID可以被定义为一维或多维数值,控制线程的处理行为的各个方面。例如,线程ID可用于确定线程将要处理输入数据集中哪个部分和/或确定线程将要产生或写入输出数据集中的哪个部分。
每线程的指令序列均可包括至少一个指令,所述至少一个指令定义线程阵列中代表性线程和一个或多个其他线程之间的协作行为。例如,每线程的指令序列均可包括下列指令:指示在序列中的特定点处暂停执行代表性线程的操作直至一个或多个其他线程到达该特定点时为止的指令;指示代表性线程将数据存储在一个或多个其他线程有权访问的共享存储器中的指令;指示代表性线程原子地读取和更新存储在共享存储器中的数据的指令,一个或多个其他线程基于它们的线程ID有权访问所述共享存储器;等等。CTA程序也可以包括计算将从中读取数据的共享存储器中的地址的指令,其中地址为线程ID的函数。通过定义合适的函数并提供同步技术,可以以可预测的方式通过CTA的一个线程将数据写入到共享存储器中的给定位置,并且通过同一CTA的不同线程从该位置读取出来。因此,线程之间任何期望模式的数据共享都可以得到支持,并且CTA中的任何线程都可以与同一CTA中的任何其他线程共享数据。CTA的线程之间如果存在数据共享,则数据共享的程度由CTA程序决定;因而,应予以理解的是,在使用CTA的具体应用中,取决于CTA程序,CTA的线程实际上可能彼此共享或者不共享数据,并且术语“CTA”和“线程阵列”在本文中具有相同含义。
图3C为根据本发明的一个实施例的、图3B的SM 310的框图。该SM310包括指令L1高速缓存370,其配置为经由L1.5高速缓存335从存储器接收指令和常数。Warp调度器和指令单元312从指令L1高速缓存370接收指令和常数,并且根据该指令和常数来控制本地寄存器堆304和SM 310功能单元。SM 310功能单元包括N个exec(执行或处理)单元302以及P个加载-存储单元(LSU)303。
SM 310提供具有不同可访问级别的片上(内部)数据存储。专用寄存器(未示出)对于LSU 303可读但不可写,并用于存储定义每个线程的“位置”的参数。在一个实施例中,专用寄存器包括每线程(或SM 310内每exec单元302)一个的存储线程ID的寄存器;每个线程ID寄存器均仅可由各自的一个exec单元302所访问。专用寄存器还可以包括附加寄存器,其对于同一个栅格或队列中的所有线程(或由所有LSU 303)可读,所述附加寄存器存储CTA标识符、CTA维度、CTA所属的栅格(grid)的维度(或队列位置,如果是队列)以及CTA所属的栅格或队列的标识符。属于栅格的CTA具有指示在栅格内的各自CTA的位置的隐性x,y,z参数。专用寄存器在初始化期间响应经由前端212从设备驱动程序103接收的命令被写入,并且在处理任务的执行期间不改变。前端212调度每个处理任务用于作为栅格或者队列来执行。每个CTA都与用于一个或多个任务的并发执行的特定栅格或队列相关联。另外,单个GPC 208可并发执行多个任务。
参数存储器(未示出)存储运行时间参数(常数),这些参数可由在同一CTA内的任意线程(或任意LSU 303)读取但不可由其写入。在一个实施例中,设备驱动程序103在指引SM 310开始执行使用这些参数的任务之前将这些参数提供给参数存储器。任意CTA内的任意线程(或者SM310内的任意exec单元302)均可以通过存储器接口214访问全局存储器。该全局存储器的一部分可存储在L1高速缓存320中。
每个线程均可使用本地寄存器堆304作为临时空间(scratch space);每个寄存器均被分配用于一个线程的排他性使用,并且任何本地寄存器堆304中的数据均只可由其被分配给的线程所访问。本地寄存器堆304可实现为在物理上或逻辑上划分为P个通路(lane)的寄存器堆,每个通路均具有某一数量的条目(其中每个条目可能存储例如32比特字)。给N个exec单元302和P个加载-存储单元LSU 303中的每一个指派一个通路,并且不同通路中对应的条目可以填充有供执行同一程序的不同线程使用的数据,以利于SIMD执行。可以将这些通路的不同部分分配给G个并发线程组中的不同的线程组,以使本地寄存器堆304中的给定条目只可由特定线程访问。在一个实施例中,本地寄存器堆304内的某些条目被保留用于存储线程标识符,实现专用寄存器之一。另外,一致性L1高速缓存375为N个exec单元302和P个加载-存储单元LSU 303的每个通路存储一致性或常数值。
在单个CTA内的线程可访问共享存储器306;换句话说,共享存储器306中的任意位置均可由同一CTA内的任意线程(或由SM 310内任意处理引擎)所访问。共享存储器306可实现为具有互连的共享片上高速缓存存储器或共享寄存器堆,所述互连允许任意处理引擎对该共享存储器中任意位置进行读写。在其他一些实施例中,共享的状态空间可能映射到片外存储器的每CTA区域上,并被高速缓存在L1高速缓存320中。参数存储器可以实现为在同一共享寄存器堆内或者在实现了共享存储器306的共享高速缓存存储器内的指定区段(section),或者实现为LSU 303只能以只读方式访问的单独的共享寄存器堆或片上高速缓存存储器。在一个实施例中,也可使用实现参数存储器的区域来存储CTA ID和任务ID,以及CTA和栅格维度或队列位置,从而实现专用寄存器的一部分。在SM 310中的每个LSU 303都耦合到统一地址映射单元352,其将为在统一存储器空间中指定的加载和存储指令所提供的地址转换为在每个各异的存储器空间中的地址。因此,指令可用来通过在统一存储器空间中指定地址来访问任意本地、共享或全局存储器空间。
可以使用每个SM 310中的L1高速缓存320来高速缓存私有的每线程的本地数据以及每应用程序的全局数据。在一些实施例中,每CTA的共享数据可以在L1高速缓存320中被高速缓存。LSU 303经由存储器和高速缓存互连380耦合到共享存储器306以及L1高速缓存320。
多通道时间片组
时间片组(TSG)是共享相同的上下文信息的不同的工作流(本文称之为“通道”)的分组。在一个实施例中,按循环(round-robin)顺序来处理属于TSG的通道集合。重要的是,由于TSG中的每个通道均共享相同的上下文信息,所以当TSG中特定通道的处理停止并且TSG中下一个通道的处理开始时,不需要上下文切换操作。因此,在特定处理周期中,对处理TSG中的通道所需要的相关上下文信息进行设置的上下文切换操作,仅在选择第一通道用于处理的时候被执行一次。
图4是根据本发明一个实施例的,基于调度哪些任务用于在GPC 208内处理的运行列表402、通道映射404和每通道上下文信息406的示例。
如本文以上所述,应用程序生成用于在PPU 202内执行的任务,其中每个任务均与特定的通道相关联。通道可以与计算任务或图形任务相关联。任何其他类型的任务或其组合均在本发明的范围内。通道的处理顺序由应用程序来定义。驱动程序103一旦接收到来自应用程序的通道,便将共享相同的上下文信息的通道分组为单个时间片组(TSG)。在一个实施例中,可属于特定TSG的通道的数目限于预先确定的数目。
基于通道和相应的TSG,驱动程序103内的资源管理器(未示出)随后生成运行列表402。运行列表402包括运行列表条目集合,其每个条目均包括条目类型504和条目内容506。有两种运行列表条目类型,即诸如运行列表条目410的通道运行列表条目,或诸如运行列表条目408的TSG运行列表条目。通道运行列表条目具有通道条目类型412并且在条目内容414中存储与特定通道相关联的通道标识符。TSG条目具有TSG条目类型412并且在条目内容414中存储TSG头。TSG头指定TSG标识符(ID)、在运行列表条目中的TSG的长度和运行列表时间片,所述在运行列表条目中的TSG的长度指示属于该TSG的通道的数目,所述运行列表时间片指示可以在单个处理周期内执行属于该TSG的通道的时间量。
运行列表402组织为,使得与属于特定TSG的通道相关联的通道运行列表条目被直接包括在与该特定TSG相关联的TSG运行列表条目后面。例如,如果运行列表条目408的TSG头指示与运行列表条目408相关联的TSG具有两个通道,那么直接跟随运行列表条目408的两个条目是与这两个通道相关联的通道运行列表条目。调度属于特定TSG的通道用于按预先定义的顺序执行。可以基于在运行列表406内的运行列表条目的顺序或任意其他排序机制来指定顺序。熟悉本领域的人将认识到,运行列表仅是如何将可以共享上下文概念的通道分组在一起的范例,对可以共享上下文概念的通道进行分组的任何机制均属于本专利的范围。在一个实施例中,与属于TSG的通道相关联的每个通道条目均包括指示该通道是否是TSG中的“下一个”通道的部分。该“下一个”部分保证TSG在TSG最后正在处理的同一个通道上开始处理。
通道映射404是通道和相应的上下文信息之间的映射。通道映射404包括映射条目集合,其中每个映射条目均与不同的通道相关联,并且包括通道标识符和指向与通道相关联的上下文信息的指针。包括在运行列表402中的每个通道运行列表条目均与在通道映射404内的映射条目相关联。因此,存储在包括在运行列表402中的通道运行列表条目的条目内容414中的通道ID与存储在包括在通道映射404中的映射条目中的通道ID相对应。进一步,在通道映射404中的每个映射条目均包括指针,其指向和与映射条目相关联的通道相对应的上下文信息。例如,映射条目416与由通道ID 418所标识并且还与通道运行列表条目410相关联的特定通道相关联。映射条目416包括上下文指针420,其指向与特定通道相关联的每通道上下文信息406。每通道上下文信息406包括但不限于,执行包括在特定通道中的任务所需要的主机状态、存储器管理状态、引擎状态等等。
图5是根据本发明一个实施例的,图2中主机接口206的更详细的示例,其配置为选择工作用于在处理集群阵列230内执行。如图所示,主机接口206包括运行列表处理器502和上下文切换器504。此外,主机接口206有权访问运行列表402、通道映射404和每通道上下文信息406。
当需要调度新的工作用于在GPC 208内执行时,运行列表处理器502分析运行列表402以选择所要调度用于下一个执行的通道。一般来说,在可以处理与特定通道相关联的任务之前,必须在GPC 208内设置与该通道相关联的每通道上下文信息408。因此,一旦选择了下一个所要调度的通道,运行列表处理器502确定是否需要上下文切换用于执行与所选择的通道相关联的任务。如果需要上下文切换,那么上下文切换器404基于与所选择的通道相关联的每通道上下文信息408发出所要执行的上下文切换操作。然而,如果不需要上下文切换,则不需要上下文切换操作并且调度与所选择的通道相关联的任务用于执行。重要的是,因为属于同一个TSG的通道与相同的每通道上下文信息相关联,所以可以调度这些通道用于一个接一个地执行,而在其间不需要上下文切换操作。
在操作中,运行列表处理器502以循环方式遍历在运行列表402内的表项。当确定应该调度哪个通道用于下一个执行时,运行列表处理器502检索运行列表402中的下一个表项。如果运行列表402中的下一个表项是TSG运行列表表项,那么运行列表处理器502读取包括在表项内容414中的TSG头。基于TSG头中所指定的长度,运行列表处理器502识别属于该TSG的通道运行列表表项。基于TSG头,运行列表处理器502还确定分配给TSG的时间片,使得以循环顺序处理在TSG中的通道,直到时间片期满、TSG运行完它可以开始的任务或由系统抢占。运行列表处理器502随后识别与对应于应被调度用于下一个执行的TSG的通道运行列表表项相关联的特定的通道。在一个实施例中,基于在通道运行列表表项的表项内容414中的比特的存在来识别在TSG中所加载的第一通道,所述比特的存在指示TSG中的特定通道应被调度用于下一个执行。
一旦特定通道被识别,运行列表处理器502指示上下文切换器504加载与特定通道相关的上下文信息。上下文切换器504基于通道映射404来识别与特定通道相关联的每通道上下文信息406,并且相应地在GPC 208中切换上下文。一旦加载了与特定通道相关联的上下文信息,则分配给TSG的时间片开始,并且与特定通道相关联的任务可以由GPC 208开始执行。
与TSG内的特定通道相关联的任务继续执行,直到(ⅰ)需要至TSG内的不同的通道的通道切换或(ⅱ)需要至TSG外面的通道的通道切换。当特定通道内的任务的执行完成时,或者当由于旗语(semaphore)获取失败而停滞执行时,需要从特定通道至TSG内的不同通道的通道切换。在这样的场景,选择TSG内的下一个通道用于执行。由于TSG内的所有通道均共享相同的上下文信息,因此当在同一个TSG内的通道之间进行切换时,不需要上下文切换操作。因此,可在GPC 208上执行与新选择的通道相关联的任务,而无需介入上下文切换操作。重要的是,因为当任务完成时或当旗语获取失败时,TSG可以从一个通道切换至另一个,所以通道之间的任务是无序的,除非由旗语明确地加以排序。
在一个实施例中,TSG内的通道可以有权访问多种不同的处理集群类型,例如,计算集群、图形集群、复制集群、2d集群等等。在优选实施例中,每个集群都能够同时工作在独立的通道上。然而,在其他实施例中,一些集群可以是相互排斥的。例如,计算集群在执行任务之前可能需要等待,直到图形集群闲置。在另一些实施例中,集群可能每次只能处理单个任务。例如,复制集群可以只处置单个复制。在一些实施例中,通道可以每次仅有权访问单个处理集群。在一些实施例中,在处理第一TSG任务之前,独立的集群需要具有其独立加载的上下文。
进一步,当调度属于TSG的通道用于在GPC 208内执行时,复制引擎(未示出)利用任务执行和基于当前设置的上下文信息来并发实施复制操作。对于异步复制引擎,因为该复制引擎不需要单独地上下文切换,因此这相当于性能增强。
如果满足数个条件之一,那么需要至TSG外面的通道的通道切换。这些条件包括,但不限于:(ⅰ)分配给TSG的时间片期满,(ⅱ)TSG内的每个通道均被完全执行并且因此而闲置,(ⅲ)TSG内的每个通道均因为旗语获取失败而停滞或者是闲置的,(ⅳ)遇到使分配给TSG的时间片有效地期满的控制权转移(yield)方法,和(ⅵ)强制选择新的通道或不同的运行列表的抢占条件。如果出现需要至TSG外面的通道的通道切换的条件,那么运行列表处理器502首先保存TSG的当前状态,包括至少被部分执行的TSG内上一个的通道的身份。随后运行列表处理器502选择在所要处理的TSG外面的下一个通道。因为与TSG外面的通道相关的上下文信息是不同的,因此当切换至TSG外面的通道时需要上下文切换操作。
本领域技术人员将认识到,可以使用用于在TSG中或在TSG外的通道之间进行切换的其他标准,只要该标准允许软件针对在通道中的特定的连续的任务,其将作为原子操作执行。换言之,通道需要一种方式来保证建立状态的任务和在该状态上执行的第二任务按顺序运行而无需切换至在另一个TSG中的通道。
在一个实施例中,TSG内的每个通道均具有工作挂起(pending)比特,其指示与通道相关的任何工作是否是未完成的。在这样的实施例中,如果当通道切换发生时与通道相关的工作仍然是挂起的,那么工作挂起比特设置为指示与该通道相关的工作仍然是挂起的。
图6A和6B阐述根据本发明一个实施例的,用于对用于执行的下一个通道进行识别的方法步骤的流程图。虽然结合图1-5的系统来描述方法步骤,但本领域技术人员将理解,配置为按任何顺序实施该方法步骤的任意系统均在本发明的范围内。
方法600开始于步骤602,其中当运行列表处理器502确定应该调度哪个通道用于下一个执行时,其检索在运行列表402中的下一个表项。在步骤604,运行列表处理器502确定所检索的表项是否是TSG类型。如果所检索的表项不是TSG类型,那么方法600进行到步骤605,其中运行列表处理器502调度与所检索的表项相关联的通道用于执行。然而,如果所检索的表项是TSG类型,那么方法600进行到步骤606。
在步骤606,运行列表处理器502解析包括在所检索的表项中的TSG头来确定与所检索的表项相关联的TSG的TSG ID、TSG长度和TSG时间片。如本文以上所述,TSG长度指示属于TSG的通道的数目,并且TSG时间片指示可在单个处理周期中执行属于TSG的通道的时间量。
在步骤608,运行列表处理器502基于TSG长度来识别属于TSG的通道的集合。另外,运行列表402组织为,使得与属于TSG的通道相关联的通道运行列表表项被直接包括在所检索的表项后面。在步骤610,运行列表处理器502选择所要调度用于下一个执行的在通道集合内的通道。在一个实施例中,每个通道均包括“下一个”标识符,当其被设置时,指示应被调度用于下一个执行的特定通道。该比特仅在步骤610中使用。
在步骤610,上下文切换器504加载与所选择的通道相关的每通道上下文信息406。由于所选择的通道是属于将在当前处理周期中调度的TSG的第一通道,因此需要在GPC内设置上下文信息,使得可以执行由该通道所指定的任务。当与所选择的通道相关的每通道上下文信息406被加载时,分配给TSG的时间片开始。在该时间片内,可以执行属于该TSG的通道,除非被中断。在步骤612,运行列表处理器206发出由所选择的通道所指定的任务,用于在GPC 208内执行。
在步骤616,运行列表处理器502确定是否满足针对切换至TSG外面的通道的一个或多个条件。如本文以上所讨论的,针对切换至TSG外面的通道的条件包括但不限于:(ⅰ)分配给TSG的时间片期满,(ⅱ)TSG内的每个通道均被完全执行并且因此而闲置,(ⅲ)TSG内的每个通道均因为旗语获取失败而停滞或者是闲置的,(ⅳ)遇到使分配给TSG的时间片有效地期满的控制权转移方法,和(ⅵ)强制选择新的通道或不同的运行列表的抢占条件。
如果满足至TSG外面的通道的通道切换所要求的条件,那么方法600进行到步骤618,其中运行列表处理器502保存TSG的当前状态。随后方法600返回至步骤602,其中检索在运行列表内的下一个表项来选择在所要执行的TSG外面的下一个通道。因为与TSG外面的通道相关的每通道上下文信息不同于当前所设置的上下文信息,因此当切换至TSG外面的通道时需要上下文切换操作。
如果不满足至TSG外面的通道的通道切换所要求的条件,那么方法600进行到步骤620。在步骤620,运行列表处理器502确定是否满足针对切换至TSG内的不同通道的一个或多个条件。另外,当特定通道内的任务的执行完成时或当执行由于旗语获取失败而停滞时,需要从特定通道至TSG内的不同通道的通道切换。如果不满足至TSG内的不同通道的通道切换所要求的条件,那么方法返回至本文前面所述的步骤614。
然而,如果满足至TSG内的不同通道的通道切换所要求的条件,那么方法进行到步骤622,其中在一个实施例中,运行列表处理器502清除用于当前通道的下一个比特、在属于TSG的通道集合中选择下一个通道并且在新的通道中设置下一个比特。在步骤624,运行列表处理器206发出由所选择的通道所指定的任务,用于在GPC 208内执行。重要的是,由于TSG中的每个通道均共享相同的上下文信息,因此当TSG中特定通道的处理停止并且该TSG中的下一个通道的处理开始时,不需要上下文切换操作。随后方法返回到本文以上所述的步骤616。
本发明的一个优点在于,可以由GPC 208执行共享相同的上下文信息的不同的工作通道,而无需介入上下文切换操作。因此,如果通道停滞,可调度不同的通道用于执行,而不会导致上下文切换开销,从而增加了系统的总体吞吐量、效率和性能。
本发明的一个实施例可被实施为与计算机系统一起使用的程序产品。该程序产品的程序定义实施例的各功能(包括本文中描述的方法)并且可以被包含在各种计算机可读存储介质上。示出的计算机可读存储介质包括但不限于:(i)不可写入的存储介质(例如,计算机内的只读存储器器件,诸如可由CD-ROM驱动器读取的光盘只读存储器(CD-ROM)盘、闪存、只读存储器(ROM)芯片或任何类型的固态非易失性半导体存储器),在其上存储永久性信息;和(ii)可写入的存储介质(例如,磁盘驱动器或硬盘驱动器内的软盘或者任何类型的固态随机存取半导体存储器),在其上存储可更改的信息。
以上已参照特定实施例对本发明进行了描述。然而,本领域技术人员将理解的是,在不脱离如随附权利要求书中所阐释的本发明的较宽精神和范围的情况下,可对此做出各种修改和变化。因此,前面的描述以及附图应被视为是例示性而非限制性的。
Claims (10)
1.用于调度任务用于在处理单元内执行的计算机实现的方法,所述方法包括:
确定指定在所述处理单元内所要执行的任务的通道集合与时间片组相关联,其中每个通道均指定不同的任务集合,并且和与所述时间片组相关联的每个通道相对应的上下文信息是相同的;
选择包括在所述通道集合中的第一通道用于下一个在所述处理单元内执行;
确定是否需要在所述处理单元内设置与所述第一通道相对应的上下文信息,其中,当由所述处理单元所执行的前一个通道包括在所述通道集合中时,不需要在所述处理单元内设置与所述第一通道相对应的上下文信息,并且,当由所述处理单元所执行的所述前一个通道没有包括在所述通道集合中时,需要在所述处理单元内设置与所述第一通道相对应的上下文信息;以及
调度由所述第一通道所指定的第一任务集合用于在所述处理单元内执行。
2.一种计算机系统,包括:
处理单元,其配置为执行任务;以及
主机接口,其配置为通过执行以下步骤来调度任务用于在所述处理单元内执行:
确定指定在所述处理单元内所要执行的任务的通道集合与时间片组相关联,其中每个通道均指定不同的任务集合,并且和与所述时间片组相关联的每个通道相对应的上下文信息是相同的;
选择包括在所述通道集合中的第一通道用于下一个在所述处理单元内执行;
确定是否需要在所述处理单元内设置与所述第一通道相对应的上下文信息,其中,当由所述处理单元所执行的前一个通道包括在所述通道集合中时,不需要在所述处理单元内设置与所述第一通道相对应的上下文信息,并且,当由所述处理单元所执行的所述前一个通道没有包括在所述通道集合中时,需要在所述处理单元内设置与所述第一通道相对应的上下文信息;以及
调度由所述第一通道所指定的第一任务集合用于在所述处理单元内执行。
3.根据权利要求2所述的计算机系统,其中确定所述通道集合与所述时间片组相关联包括对与标识所述通道集合的所述时间片组相关联的时间片组头进行解析。
4.根据权利要求2所述的计算机系统,进一步包括确定所述处理单元是否应该停止执行由在所述通道集合中的通道所指定的任务。
5.根据权利要求4所述的计算机系统,其中所述时间片组与允许由所述通道集合所指定的任务在被调度之后运行的时间量相关联。
6.根据权利要求5所述的计算机系统,其中当所述时间量期满时,所述处理单元应该停止执行由在所述通道集合中的通道所指定的任务。
7.根据权利要求5所述的计算机系统,其中当在所述通道集合中的每个通道均在等待任务完成或者闲置时,所述处理单元应该停止执行由在所述通道集合中的通道所指定的任务。
8.根据权利要求5所述的计算机系统,进一步包括,当所述处理单元应该停止执行由在所述通道集合中的通道所指定的任务时,保存与时间片组相关联的状态,并且选择不与所述时间片组相关联的第二通道用于下一个在所述处理单元内执行。
9.根据权利要求2所述的计算机系统,进一步包括,在选择所述第一通道之前,确定是否应该选择包括在所述通道集合中的下一个通道用于在所述处理单元内执行。
10.根据权利要求9所述的计算机系统,其中当在所述处理单元内执行的前一个通道是闲置的或正等待任务完成时,应该选择包括在所述通道集合中的下一个通道用于执行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/316,334 US9442759B2 (en) | 2011-12-09 | 2011-12-09 | Concurrent execution of independent streams in multi-channel time slice groups |
US13/316,334 | 2011-12-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103197918A true CN103197918A (zh) | 2013-07-10 |
CN103197918B CN103197918B (zh) | 2016-01-20 |
Family
ID=48464972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210528576.6A Active CN103197918B (zh) | 2011-12-09 | 2012-12-10 | 多通道时间片组 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9442759B2 (zh) |
CN (1) | CN103197918B (zh) |
DE (1) | DE102012222391B4 (zh) |
TW (1) | TWI501156B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105446798A (zh) * | 2014-07-31 | 2016-03-30 | 展讯通信(上海)有限公司 | 一种多核处理系统及方法以及移动终端 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9069609B2 (en) * | 2012-01-18 | 2015-06-30 | Nvidia Corporation | Scheduling and execution of compute tasks |
US9632844B2 (en) * | 2013-12-12 | 2017-04-25 | International Business Machines Corporation | Non-preemption of a group of interchangeable tasks in a computing device |
JP7183545B2 (ja) * | 2018-02-27 | 2022-12-06 | オムロン株式会社 | 制御システムおよび機能ユニット |
US10861126B1 (en) | 2019-06-21 | 2020-12-08 | Intel Corporation | Asynchronous execution mechanism |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5596578A (en) * | 1993-10-04 | 1997-01-21 | Fostex Corporation Of America | Time division multiplexing data transfer system for digital audio data distribution |
JP2004220070A (ja) * | 2003-01-09 | 2004-08-05 | Japan Science & Technology Agency | コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体 |
US7839948B2 (en) * | 2005-12-02 | 2010-11-23 | Qualcomm Incorporated | Time slicing techniques for variable data rate encoding |
US8589943B2 (en) * | 2007-08-15 | 2013-11-19 | Sony Computer Entertainment Inc. | Multi-threaded processing with reduced context switching |
US10169072B2 (en) * | 2009-09-23 | 2019-01-01 | Nvidia Corporation | Hardware for parallel command list generation |
TWI574155B (zh) * | 2010-03-29 | 2017-03-11 | 威盛電子股份有限公司 | 資料預取方法、電腦程式產品以及微處理器 |
US8291172B2 (en) * | 2010-04-27 | 2012-10-16 | Via Technologies, Inc. | Multi-modal data prefetcher |
-
2011
- 2011-12-09 US US13/316,334 patent/US9442759B2/en active Active
-
2012
- 2012-12-05 TW TW101145699A patent/TWI501156B/zh not_active IP Right Cessation
- 2012-12-06 DE DE102012222391.6A patent/DE102012222391B4/de active Active
- 2012-12-10 CN CN201210528576.6A patent/CN103197918B/zh active Active
Non-Patent Citations (3)
Title |
---|
DAVID B.KIRK AND WEN-MEI W. HWU: "《Programming Massively Parallel Processors》", 31 December 2010, ELSEVIER INC. * |
DAVID TARJAN: "Efficient Throughput Cores for Asymmetric Manycore Processors", 《PHD THESIS OF THE FACULTY OF THE SCHOOL OF ENGINEERING AND APPLIED SCIENCE, UNIVERSITY OF VIRGINIA》 * |
LINDHOLM, E.,ETC: "NVIDIA Tesla: A Unified Graphics and Computer Architecture", 《MICRO, IEEE》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105446798A (zh) * | 2014-07-31 | 2016-03-30 | 展讯通信(上海)有限公司 | 一种多核处理系统及方法以及移动终端 |
Also Published As
Publication number | Publication date |
---|---|
TW201337767A (zh) | 2013-09-16 |
US9442759B2 (en) | 2016-09-13 |
CN103197918B (zh) | 2016-01-20 |
US20130152093A1 (en) | 2013-06-13 |
TWI501156B (zh) | 2015-09-21 |
DE102012222391A1 (de) | 2013-06-13 |
DE102012222391B4 (de) | 2022-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103207774B (zh) | 用于解决线程发散的方法和系统 | |
CN103218208B (zh) | 用于实施成形的存储器访问操作的系统和方法 | |
CN103197916A (zh) | 用于源操作数收集器高速缓存的方法和装置 | |
CN103365631B (zh) | 用于存储器访问的动态库模式寻址 | |
CN103226481A (zh) | 自动从属任务启动 | |
CN103197953A (zh) | 推测执行和回滚 | |
CN103777926A (zh) | 多线程处理单元中的高效存储器虚拟化 | |
CN103778072A (zh) | 多线程处理单元中的高效存储器虚拟化 | |
CN103309702A (zh) | 用于并行线程子集的一致加载处理 | |
CN103729167A (zh) | 用于改进多线程处理单元中的性能的技术 | |
CN103226463A (zh) | 用于使用预解码数据调度指令的方法和装置 | |
CN103777925A (zh) | 多线程处理单元中的高效存储器虚拟化 | |
CN103425533A (zh) | 用于管理嵌套执行流的方法和系统 | |
CN103218309A (zh) | 多级指令高速缓存预取 | |
CN103279379A (zh) | 用于在没有指令解码的情况下调度指令的方法和装置 | |
CN103019810A (zh) | 具有不同执行优先级的计算任务的调度和管理 | |
CN103294536A (zh) | 控制用于处理任务的工作分布 | |
US9069609B2 (en) | Scheduling and execution of compute tasks | |
CN103559088A (zh) | 维持公平性和顺序的资源管理子系统 | |
US9069664B2 (en) | Unified streaming multiprocessor memory | |
CN104050033A (zh) | 用于有索引的屏障的硬件调度的系统和方法 | |
CN103197955A (zh) | 处理系统中动态生成的任务的信令、排序和执行 | |
CN103294753A (zh) | 无锁先入先出 | |
CN103425534A (zh) | 在许多应用之间共享的图形处理单元 | |
CN103176848A (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 |