
自动从属任务启动的制作方法.docx
8页自动从属任务启动的制作方法专利名称:自动从属任务启动的制作方法技术领域:本发明总地涉及程序执行,并且,更具体地,涉及当第一任务的执行完成时从属任务的自动启动背景技术:从属任务的执行通常要求通过使用信号量(semaphore)来协调,其中第一任务释放从属任务随后所取得的信号量信号量的使用确保第一任务的执行在从属任务的执行开始之前完成因为从属任务依赖于由第一任务所计算的值或数据,所以从属任务必须等待直到第一任务的执行完成为止通过存储器读和写来实施对信号量的释放和取得信号量第一任务写存储器以释放信号量而从属任务读存储器以取得信号量一旦从属任务取得了信号量,则之后将从属任务输入到处理器并且之后可以启动从属任务的执行信号量释放和取得事务在第一任务的执行完成与从属任务的执行可以开始之间引入了大量的延迟,例如若干时钟周期信号量释放和取得操作还使得一个存储器写和通常数个存储器读成为必要存储器写和读消耗存储器带宽并且当可用存储器带宽受限时可降低处理性能因此,本领域所需的是用于在多线程执行期间从属任务的改进启动的系统和方法具体来讲,所期望的是降低第一任务的执行与第一任务的执行完成时从属任务的执行之间的过渡所带来的延迟发明内容 用于当第一任务的执行完成时自动启动从属任务的系统和方法降低了从第一任务到从属任务的过渡期间所带来的延迟。
将与从属任务相关联的信息编码为用于第一任务的元数据的一部分当第一任务的执行完成时通知任务调度单元以及在不要求任何信号量的释放或取得的情况下启动从属任务与从属任务相关联的信息包括使能标志和指向从属任务的指针一旦启动从属任务,就将第一任务标记为完成以使得存储所述用于第一任务的元数据的存储器可以重新用来存储用于新任务的元数据用于自动启动从属任务的本发明方法的各种实施例包括接收第一处理任务已经在多线程系统中完成执行的通知读取在编码第一处理任务的第一任务元数据中所存储的从属任务使能标志在第一处理任务的执行之前写入从属任务使能标志当第一处理任务的执行完成时,确定所要设置的指示应该执行从属任务的从属任务使能标志以及调度从属任务用于在多线程系统中执行本发明的各种实施例包括配置为自动启动从属任务的多线程系统多线程系统包括配置为存储编码第一处理任务的第一任务元数据的存储器、通用处理集群和耦连到通用处理集群的任务管理单元通用处理集群配置为执行第一处理任务以及当第一处理任务的执行完成时生成通知任务管理单元配置为接收第一处理任务已经完成执行的通知、读取存储在第一任务元数据中的从属任务使能标志,其中在第一处理任务的执行之前写入从属任务使能标志、确定从属任务使能标志指示当第一处理任务的执行完成时应该执行从属任务,以及调度从属任务用于由通用处理集群执行。
当第一任务完成执行时自动启动从属任务的执行,与使用信号量相比降低了从第一任务到从属任务的过渡期间所带来的延迟当编码第一任务的时候第一任务包括与从属任务相关联的信息因此,当执行第一任务时信息已经是已知和可用的此外,从属任务可以包括与将在从属任务的执行之后自动执行的第二从属任务相关联的信息因此,可以详细地理解本发明的上述特征,并且可以参考实施例得到对上面所简要概括的本发明更具体的描述,其中一些实施例在附图中示出然而,应当注意的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限制,本发明可以承认其他等效的实施例图1为示出了配置为实现本发明一个或多个方面的计算机系统的框图;图2为根据本发明一个实施例的、用于图1的计算机系统的并行处理子系统的框图;图3A为根据本发明一个实施例的、图2的任务/工作单元的框图;图3B为根·据本发明一个实施例的、在图2的并行处理单元之一内的通用处理集群的框图;图4A为根据本发明一个实施例的、图3A的TMD的内容的示意图;图4B示出了根据本发明一个实施例的原始任务和两个从属任务;以及图5示出了根据本发明一个实施例的、用于自动启动从属任务的方法具体实施例方式在下面的描述中,将阐述大量的具体细节以提供对本发明更透彻的理解。
然而,对本领域的技术人员来说显而易见的是,本发明可以在没有一个或多个这些具体细节的情况下得以实施在其他实例中,未描述公知的特征以避免对本发明造成混淆系统概述图1为示出了配置为实现本发明的一个或多个方面的计算机系统100的框图计算机系统100包括经由可以包括存储器桥105的互连路径通信的中央处理单元(CPU) 102和系统存储器104存储器桥105可以是例如北桥芯片,经由总线或其他通信路径106 (例如超传输(HyperTransport)链路)连接到I/O (输入/输出)桥107I/O桥107,其可以是例如南桥芯片,从一个或多个用户输入设备108 (例如键盘、鼠标)接收用户输入并且经由路径106和存储器桥105将该输入转发到CPU102并行处理子系统112经由总线或其他通信路径113 (例如PCIExpress、加速图形端口或超传输链路)耦连到存储器桥105 ;在一个实施例中,并行处理子系统112是将像素传递到显示设备110(例如传统的基于CRT或IXD的监视器)的图形子系统系统盘114也连接到I/O桥107交换器116提供I/O桥107与诸如网络适配器118以及各种插卡120和121的其他部件之间的连接。
其他部件(未明确示出),包括USB或其他端口连接、CD驱动器、DVD驱动器、胶片录制设备及类似部件,也可以连接到I/O桥107图1中互连各种部件的通信路径可以使用任何适合的协议实现,诸如PCI (外围部件互连)、PC1-Express、AGP (加速图形端口)、超传输或者任何其他总线或点到点通信协议,并且如本领域已知的,不同设备间的连接可使用不同协议在一个实施例中,并行处理子系统112包含经优化用于图形和视频处理的电路,包括例如视频输出电路,并且构成图形处理单元(GPU)在另一个实施例中,并行处理子系统112包含经优化用于通用处理的电路,同时保留底层(underlying)的计算架构,本文将更详细地进行描述在又一个实施例中,可以将并行处理子系统112与一个或多个其他系统元件诸如存储器桥105、CPU102以及I/O桥107集成在一起以形成片上系统(SoC)应该理解,本文所示系统是示例性的,并且变化和修改都是可能的连接拓扑,包括桥的数目和布置、CPU102的数目以及并行处理子系统112的数目,可根据需要修改例如,在一些实施例中,系统存储器104直接连接到CPU102而不是通过桥,并且其他设备经由存储器桥105和CPU102与系统存储器104通信。
在其他替代性拓扑中,并行处理子系统112连接到I/O桥107或直接连接到CPU102,而不是连接到存储器桥105而在其他实施例中,I/O桥107和存储器桥105可能被集成到单个芯片上大型实施例可以包括两个或两个以上的CPU102以及两个或两个以上的并行处理系统112本文所示的特定部件是可选的;例如,任意数目的插卡或外围设备都可能得到支持在一些实施例中,交换器116被去掉,网络适配器118和插卡120、121直接连接到I/O桥107图2示出了根据本 发明一个实施例的并行处理子系统112如所示的,并行处理子系统112包括一个或多个并行处理单元(PI3U) 202,每个并行处理单元202都耦连到本地并行处理(PP)存储器204通常,并行处理子系统包括U个PPU,其中US I本文中,类似对象的多个实例需要时以标识对象的参考数字和标识实例的括号中的数字来表示)PPU202和并行处理存储器204可使用一个或多个集成电路设备来实现,诸如可编程处理器、专用集成电路(ASIC)或存储器设备,或者以任何其他技术可行的方式来实现再次参考图1,在一些实施例中,并行处理子系统112中的一些或所有PPU202是具有渲染管线的图形处理器,其可以配置为实施与下述从属的各种操作:经由存储器桥105和总线113从CPU102和/或系统存储器104所供应的图形数据生成像素数据,与本地并行处理存储器204 (可被用作图形存储器,包括例如常规帧缓冲区(buffer))交互以存储和更新像素数据,传递像素数据到显示设备110等等。
在一些实施例中,并行处理子系统112可包括一个或多个作为图形处理器而操作的PPU202以及一个或多个用于通用计算的其他PPU202这些PTO可以是同样的或不同的,并且每个PPU均可具有其自己的专用并行处理存储器设备或不具有专用并行处理存储器设备一个或多个PPU202可输出数据到显示设备110,或者每个PPU202均可输出数据到一个或多个显示设备110在操作中,CPU102是计算机系统100的主处理器,控制和协调其他系统部件的操作具体地,CPU102发出控制PPU202的操作的命令在一些实施例中,CPU102写入用于每个PPU202的命令流到数据结构中(在图1或图2中未明确示出),该数据结构可位于系统存储器104、并行处理存储器204、或CPU102和PPU202都可访问的其他存储位置中将指向每个数据结构的指针写到入栈缓冲区(pushbuffer)以发起对数据结构中的命令流的处理PPU202从一个或多个入栈缓冲区读取命令流,然后相对于CPU102的操作异步地执行命令可以为每个入栈缓冲区指定执行优先级以控制对不同入栈缓冲区的调度现在返回参考图2B,每个PPU202均包括经由连接到存储器桥105 (或者,在一个替代性实施例中,直接连接到CPU102)的通信路径113与计算机系统100的其余部分通信的I/O (输入/输出)单元205。
PPU202到计算机系统100的其余部分的连接也可以变化在一些实施例中,并行处理子系统112可实现为可插入到计算机系统100的扩展槽中的插卡在其他实施例中,PPU202可以和诸如存储器桥105或I/O桥107的总线桥集成在单个芯片上而在其他实施例中,PPU202的一些或所有元件可以和CPU102集成在单个芯片上在一个实施例中,通信路径113是PC1-EXPRESS链路,如本领域所知的,其中专用通道被分配到每个PPU202也可以使用其他通信路径I/O单元205生成用于在通信路径113上传送的包(或其他信号),并且还从通信路径113接收所有传入的包(或其他信号),将传入的包引导到PPU202的适当部件例如,可将与处理任务相关的命令引导到主机接口206,而将与存储器操作相关的命令(例如,对并行处理存储器204的读取或写入)引导到存储器交叉开关单元210主机接口 206读取每个入栈缓冲区,并且将存储在入栈缓冲区中的命令流输出到前端212有利地,每个PPU202都实现高度并行处理架构如详细示出的,Pro202(0)包括处理集群阵列230,该阵列230包括C个通用处理集群(GPC)208,其中C彡I。
每个GPC208都能够并发执行大量的(例如,几百或几千)线程,其中每个线程均是程序的实例(instance)在各种应用中,可分配不同的G·PC208用于处理不同类型的程序或用于执行不同类型的计算GPC208的分配可以取决于因每种类型的程序或计算所产生的工作量而变化GPC208从任务/工作单元207内的工作分布单元接收所要执行的处理任务工作分布单元接收指向编码为任务元数据(TMD)并存储在存储器中的计算处理任务的指针指向TMD的任务指针包括在存储为入栈缓冲区并由前端单元212从主机接口 206接收的命令流中可以编码为TMD的处理任务包括所要处理的数据的索引,以及定义数据将被如何处理(例如,什么程序将被执行)的状态参数和命令任务/工作单元207从前端212接收任务并确保在每一个TMD所指定的处理发起前,将GPC208配置为有效状态可以为每个TMD指定用来调度处理任务的执行的优先级还可从处理集群阵列230接收处理任务可选地,TMD可包括控制将TMD添加到链表的头部还是尾部的参数,从而提供除优先级以外的另一级别的控制。
