CN106104483B - 微处理器系统、操作微处理器系统的方法、可读介质 - Google Patents
微处理器系统、操作微处理器系统的方法、可读介质 Download PDFInfo
- Publication number
- CN106104483B CN106104483B CN201580014083.2A CN201580014083A CN106104483B CN 106104483 B CN106104483 B CN 106104483B CN 201580014083 A CN201580014083 A CN 201580014083A CN 106104483 B CN106104483 B CN 106104483B
- Authority
- CN
- China
- Prior art keywords
- exception
- thread
- task
- processing
- threads
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 81
- 230000008569 process Effects 0.000 claims description 15
- 230000001960 triggered effect Effects 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 10
- 238000005516 engineering process Methods 0.000 description 12
- 230000015654 memory Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 239000000725 suspension Substances 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000001364 causal effect Effects 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 230000002547 anomalous effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000002922 simulated annealing Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000008685 targeting 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/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
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)
- Multi Processors (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
Abstract
微处理器系统、操作微处理器系统的方法、可读介质。一种微处理器系统(1)包括主机处理器(2)、包括多个处理内核(4)的图形处理单元(3)以及异常处理机。当在处理机内核(4)上执行的线程在它的指令序列中遭遇异常时,线程被重新导向至该异常处理机。然而,异常事件还被传递到图形处理单元(3)的任务管理器(5)。该任务管理器(5)然后向各处理内核(4)广播原因异常消息。各处理内核然后标识其当前执行且与原因异常消息有关的线程,并且将这些线程重新导向到该异常处理机。这样,由单个线程所引起的异常被广播到任务内的全部线程。
Description
技术领域
这里所描述的技术涉及微处理器系统中的异常处理,具体涉及可以独立并行执行多个线程的微处理器系统中的异常处理。
背景技术
已知提供一种异常处理机制,其中触发异常的线程将在限定存储器位置处设置数据状态,例如,其他执行线程定期轮询该数据状态该以确定异常是否已经被触发。虽然这种类型的异常处理可以满足仅存在有限数量个并行执行的线程的情况,但申请人已经意识到,这种结构在存在大量独立并行执行的线程的情况下不太适用(并且各线程可能需要跟随所触发的异常)。此外,申请人还已经意识到,大量线程可以并行执行的情况在微处理器系统中变得越来越普遍。例如,这可能在使用包括用于(例如,使用OpenCL)高度并行数据处理运算的一个或更多个图形处理内核(图形处理器)的图形处理系统时出现。在这种情况下,各图形处理内核可以支持例如多达256个独立线程。
因此,申请人相信还存在针对微处理器系统中异常处理的改进结构的范围。
发明内容
本发明提供一种微处理器系统,该微处理器系统包括:一个或更多个处理内核,各处理内核能够操作为并行执行多个执行线程;任务管理器,该任务管理器能够操作为向所述处理内核发布任务以处理;以及异常处理机,该异常处理机能够操作为处理在执行期间遭遇异常的线程;其中:所述处理内核中的至少一个处理内核能够在所述至少一个处理内核执行的线程遭遇异常或希望产生异常时向所述任务管理器触发异常事件;所述任务管理器能够在从处理内核中的所述至少一个处理内核接收到异常事件的指示时向所述处理内核中的任意处理内核的至少一个处理内核广播原因异常消息;并且所述处理内核中的任意处理内核的所述至少一个处理内核能够在所述处理内核从所述任务管理器接收到所广播的原因异常消息时标识所述处理内核当前执行且所述原因异常消息应用于并且因此应被终止或暂停的任何线程,并且将任何这种所标识的线程重新导向到所述异常处理机以处理,其中,所述异常处理机进行的处理包括终止或暂停执行被重新导向到所述异常处理机的线程。
本发明提供一种操作微处理器系统的方法,该微处理器系统包括:一个或更多个处理内核,各处理内核可操作为并行执行多个执行线程;任务管理器,该任务管理器可操作为向所述处理内核发布任务以处理;以及异常处理机,该异常处理机可操作为处理在执行期间遭遇异常的线程;所述方法包括以下步骤:处理内核在所述处理内核执行的线程遭遇异常或希望产生异常时将所述线程重新导向到所述异常处理机并向所述任务管理器触发异常事件;所述任务管理器在从所述处理内核中的至少一个处理内核接收到异常事件的指示时向所述处理内核中的任意处理内核的至少一个处理内核广播原因异常消息;以及从所述任务管理器接收到所广播的原因异常消息的所述处理内核中的任意处理内核的所述至少一个处理内核标识所述处理内核当前执行且所述原因异常消息应用于并且因此应被终止或暂停的任何线程,并且将任何这种所标识的线程重新导向到所述异常处理机以处理,其中,所述异常处理机进行的处理包括终止或暂停执行被重新导向到所述异常处理机的线程。
附图说明
现在将仅以示例的方式并参照附图来描述这里所描述的技术的多个实施方式,附图中:
图1示意性示出了可以以这里所描述的技术的方式操作的微处理系统;和
图2和图3示意性示出了这里所描述的技术的实施方式中的图1的微处理器系统的操作。
类似的附图标记在附图中适当的情况下用于类似的部件。
具体实施方式
这里所描述的技术的第一实施方式包括一种微处理器系统,该微处理器系统包括:
一个或更多个处理内核,各内核可操作为并行执行多个执行线程;
任务管理器,该任务管理器可操作为向处理内核发布任务以处理;以及
异常处理机,该异常处理机可操作为处理在执行期间遭遇异常的线程;
其中:
处理内核中的至少一个处理内核被构造成使得如果所述处理内核执行的线程遭遇异常或希望产生异常,则处理内核可以向任务管理器触发异常事件;
任务管理器被构造成使得如果所述任务管理器从处理内核接收到异常事件的指示,则向处理内核中的至少一个处理内核广播原因异常消息;并且
处理内核被构造成:如果所述处理内核从任务管理器接收到所广播的原因异常消息,则标识内核当前执行且原因异常消息应用于的任何线程,并且将任何这种所标识的线程重新导向到所述异常处理机以处理。
这里所描述的技术的第二实施方式包括一种操作微处理器系统的方法,该微处理器系统包括:
一个或更多个处理内核,各内核可操作为并行执行多个执行线程;
任务管理器,该任务管理器可操作为向处理内核发布任务以处理;以及
异常处理机,该异常处理机可操作为处理在执行期间遭遇异常的线程;
所述方法包括以下步骤:
处理内核在所述处理内核执行的线程遭遇异常或希望产生异常时将所述线程重新导向到异常处理机并向任务管理器触发异常事件;
任务管理器在从处理内核接收到异常事件的指示时向处理内核中的至少一个处理内核广播原因异常消息;以及
从任务管理器接收到所广播的原因异常消息的各处理内核标识内核当前执行且所述原因异常消息应用于的任何线程,并且将任何这种所标识的线程重新导向到所述异常处理机以处理。
这里所描述的技术涉及一种微处理器系统,该微处理器系统包括一个或更多个处理内核,该一个或更多个处理内核执行要执行的执行线程;和异常处理机,该异常处理机用于处理遭遇异常的线程。然而,与传统系统中不同,在这里所描述的技术中,如果执行的线程遭遇异常或将产生异常,则可以向控制向处理内核分配任务的任务管理器指示该事件,并且任务管理器然后向处理内核广播异常事件。
如下面将进一步讨论的,这然后允许将处理内核中的(单个)线程遭遇或触发的单个异常有效地指示给多个其他线程(无论是在同一处理内核还是不同处理内核中的)。这然后帮助例如支持且并行执行大量独立线程的系统中的更高效且有效异常处理。例如,这里所描述的技术可以用于高效地终止跨许多独立执行线程(和例如跨多个处理内核)分布的并行搜索或其他目标驱动算法。
这里所描述的技术的微处理器系统的处理内核可以为任何合适的处理内核,诸如通用处理内核、图形处理内核(例如,着色器内核)、可以起OpenCL“计算单元”作用的任何事物等。在实施方式中,处理内核为图形处理内核。各内核在实施方式中能够并行执行多个独立执行线程。在实施方式中,内核可以并行执行多达256个独立线程(立即)。
这里所描述的技术特别适用于处理多个(且大量)独立执行线程的系统中,因为在这种环境中,例如用于在异常发生时轮询独立线程的成本会显著增加。这里所描述的技术因此还将在存在大量独立处理内核、线程组(线程翘曲(thread warp))的情况下是有利的。然而,尽管这样描述,但是这里所描述的技术还可以用于全部线程被组织成单个线程组(翘曲)的情况或实际上仅存在一个或几个线程的情况(如果期望)。
该系统可以仅包括单个处理内核,但在实施方式中,存在多个处理内核。在实施方式中,存在4至8个处理内核。在存在多个处理内核的情况下,各内核在实施方式中可以按照本文所描述的技术的方式来操作。各内核在实施方式中为相同类型的(例如,图形处理内核)。
任务管理器可操作为向处理内核发布要由处理内核执行的任务。任务管理器可操作为以任意合适且期望的方式这样做。任务管理器可以根据期望实现,例如作为在微控制器(MCU)上执行的处理。
在一个实施方式中,任务管理器被实现为固定功能硬件块,该固定功能硬件块在实施方式中操作为在任务的线程索引空间上重复,以将任务细分为较小部分以执行。
任务管理器(及其功能)可以(如果期望)以“分布式”方式实现,例如,以“任务分布网络”的形式实现。在这些结构中,任务管理器可以包括多个级或层,其例如各将要执行的任务逐渐细分为较小的分组以执行。
可以使用用于任务管理器和向处理内核的任务分发的其他结构(如果期望)。
在实施方式中,任务管理器从需要任务由处理内核执行的主机处理器(例如,主CPU)接收任务(例如,对于在主机处理器上执行的应用)。任务管理器将从主机接收任务,然后以适当方式向处理内核发布与这些任务关联的处理。主机处理器例如可以借助任务命令向任务管理器传递任务。
由此,在实施方式中,这里描述的技术的系统还包括主机处理器,该主机处理器可操作为向任务管理器指示要执行的任务以向处理内核发布。
在实施方式中,处理内核全部为同一、整体处理单元的一部分,处理单元诸如图形处理单元(GPU),并且在实施方式中为图形处理单元(GPU)。由此,在实施方式中,系统包括主机处理器和任务管理器,该主机处理器与处理单元通信且向处理单元发送任务,该处理单元包括处理内核。
任务管理器可以以任何合适且期望的方式向处理内核分配用于要执行的任务的处理。在存在仅单个处理内核的情况下,那么任务管理器应以适当的方式向处理内核仅传递要执行的任务。
在存在多个处理内核的情况下,那么实施方式中的任务管理器在多个处理内核之间分配用于关注的任务的处理。在这种情况下,在不同处理内核之间分配用于任务的处理可以根据期望来进行。例如,在用于任务的处理已划分为可标识的部分或处理组的情况下,例如,并且在实施方式中划分为可标识且不同的线程组(诸如将为已划分为工作组的OpenCL核心的情况),那么任务管理器在实施方式中操作为使用现有的任务划分在不同处理内核之间分配用于任务的处理。
由此,在实施方式中,用于任务的处理被划分为独立不同的线程组(例如,OpenCL工作组),并且任务内的不同线程组(工作组)被指派给不同的处理内核。在实施方式中,各独立线程组(工作组)整体地指派给给定处理内核(即,使得独立的线程组(工作组)将不在多个处理内核之间划分)。
在实施方式中,任务管理器将任务细分为线程组。由此,在实施方式中,任务管理器可操作为取得OpenCL NDRange并将它们细分为要向处理内核发布的工作组。
任务管理器可以以任何期望且合适的方式与处理内核通信,例如,经由适当的任务控制总线。
要执行的任务可以为可以由关注的处理内核执行的任何合适且期望的任务。例如,各任务可以为OpenCL“核心”(并且在一个实施方式中,是这种情况)。任务可以同样地为OpenCL核心(诸如直接计算(Direct Compute)中的核心等)的对应构造。
如现有技术中已知的,在OpenCL API下,“核心”为被很多次调用的(通常小的)程序。核心的典型应用为并行执行大计算,其中,核心的各调用仅执行计算的一小部分(例如,对于要处理图像或要压缩纹理的给定区域)。各核心调用可以被执行为独立的执行线程,并且可以并行执行核心调用(并且由此并行执行线程)。
OpenCL的典型用途是使用图形处理单元来进行高度并行数据处理操作,诸如图像处理(例如,滤波)、纹理或其他数据阵列压缩、迭代地解微分方程、迭代搜索处理等。
要执行的任务在实施方式中为需要执行大量独立执行线程和/或线程组的任务,诸如并且在实施方式中为目标驱动算法,诸如并且在实施方式中为并行搜索。在并行搜索的情况下,搜索可以为任何期望的搜索形式,诸如简单的强力搜索或基于启发的搜索(例如,模拟退火)。在实施方式中其为任务端点(例如,目标)很可能由线程和/或线程组在不同时间到达的任务(即,使得任务端点将不对于全部独立线程和/或线程组立即发生)。
向处理内核(向任务管理器)发布的各任务应如现有技术中已知的关联有对于正常操作任务执行的程序(指令序列)(例如且在实施方式中,使得在任务被执行时,各执行线程运行关注的程序)。
从任务管理器接收任务以执行的处理内核应可操作为执行用于执行关注的任务(或至少内核要执行的任务的该部分)的适当执行线程。由此,例如,在执行OpenCL“核心”的情况下,各处理内核将执行用于处理内核要处理的核心的各调用的线程。在这种情况下各线程将对应于OpenCL工作项。
为了帮助处理、分配并标识独立线程及其关于的任务,实施方式中的线程携带并关联有适当的索引,诸如OpenCL情况下的适当核心调用索引(ID)。
实施方式中的各处理内核包括线程执行控制单元,该线程执行控制单元可操作为从任务管理器接收任务有关命令并将用于执行用于该任务的处理的线程进而发布到关注的处理内核上(并且控制)。实施方式中的线程执行控制单元取得一个或更多个线程组(例如,工作组)且将对应的线程(工作项)发布到其关联处理内核上。
异常处理机可以以任任何期望且合适的方式来构造并实现。异常处理机在实施方式中在包括处理内核的处理单元(例如,GPU)上执行。在实施方式中针对遭遇异常的每个硬件线程存在异常处理机的唯一实例。由此,在系统中可以存在并且在实施方式中存在异常处理机的多个实例(多个“异常处理机”)。如果期望,则异常处理机还可以以“分布式”形式来实施,例如在整个处理单元(例如,GPU)的不同处理级和/或单元和/或处理内核一起用来提供整体“异常处理机”(异常处理过程)。
线程可以根据任何期望且合适的方式被重新导向来到达异常处理机。在实施方式中,结构是使得随着线程完成它的当前指令,线程借助线程处理层次结构(在实施方式中为上面执行该线程的处理内核的线程执行控制单元)中的点来循环,其然后作用于异常(若有的话)以将该线程重新导向到异常处理机。这允许线程以高效但“懒散”方式到达异常处理机。
异常处理机可以以任何期望且合适的方式来处理它接收到的线程,并且可以以任何期望且合适的方式来构造成处理重新导向至异常处理机的线程。在实施方式中,由异常处理机处理线程依赖于造成线程被重新导向至异常处理机的异常的性质。
在实施方式中,异常处理机可以关于它接收到的线程(例如并且在实施方式中,依赖于使得线程被重新导向至异常处理机的异常的性质)执行以下各项中的一个或更多个(并且在实施方式中为全部):终止线程;暂停线程的执行;恢复线程的执行;以及存储用于线程的追踪数据(并且在实施方式中然后使得恢复线程主程序的执行)。异常处理机在实施方式中还可以并且在实施方式中确实还存储与关注的线程和/或任务有关的状态信息,至少在暂停操作的情况下,以例如如果期望则允许(立即或稍后)恢复线程和/或任务。
在异常处理机写出追踪数据的情况下,该追踪数据在实施方式中被写到被指示为用于追踪数据的目的地的适当存储器位置(例如,缓冲器)。
异常处理机在实施方式中执行用于处理它接收到的线程的一个或更多个程序。在实施方式中,异常处理机在它接收到要处理的线程时执行与该线程有关的任务关联的程序。
为了帮助该操作,在实施方式中,除了要对于正常操作任务执行的程序(指令序列)之外,各任务还关联有第二程序(指令序列)和第三程序,该第二程序用于在与任务关联的线程被重新导向至异常处理机时暂停和/或终止要被调用(执行)程序的线程,并且如果(并且当)与任务关联的线程在重新导向至异常处理机之后恢复(时)第三程序要被调用(执行)。
由此,在实施方式中,向任务管理器发布的各任务含有对三个程序的引用,对于正常操作任务而调用的程序、在用于任务的线程被重新导向至异常处理机以暂停/终止时调用的程序、以及在要恢复已重新导向至异常处理机的线程时调用的程序。在实施方式中,对这些程序的引用(与任务关联的程序的标识)在与关注的任务关联且用于关注的任务的元数据中指示,元数据诸如任务描述符。
异常处理机可以被构造成以任何期望且合适的方式对它接收到的线程执行适当处理。例如且在实施方式中,在要触发终止被重新导向至异常处理机的用于任务的线程的事件的情况下(例如,因为并行搜索或一个线程到达一些其他目标完成),那么触发异常的初始线程在实施方式中使得该任务的所关联内部状态被更新,以标识异常(从而以指示可以终止关注的线程)。这然后将造成随后(相关)线程有条件地重新导向至异常处理机以在对于随后指令调度时终止。
异常处理机在实施方式中基于触发了将线程重新导向至异常处理机的异常来完成期望的行为。
由此,在实施方式中,在向异常处理机的重新导向是由于由一个线程完成并行搜索或到达目标而造成的情况下,当第一线程触发异常时,任务状态在实施方式中被更新以对此进行指示,并且异常处理机(异常处理软件)然后在实施方式中使用该状态来重新导向并终止线程。
如果异常处理机的重新导向是由于断点或暂停操作而造成,那么与任务有关的状态在实施方式中被存储以允许任务稍后恢复。在这种情况下,如果异常由处理内核指令引起,则存储器中的值在实施方式中还被设置为以由主CPU应用来检查。
在向异常处理机的重新导向是由于追踪点而造成的情况下,那么异常处理机在实施方式中向附加缓冲器写出追踪数据(例如,由恒定寄存器引用的),然后恢复主程序。在实施方式中,追踪是针对飞行中的全部线程(从而跨线程“空间”(例如,OpenCL中的NDRange)给出任务状态的“快照”)。
触发线程向异常处理机的重新导向和原因异常消息的(潜在)广播的异常可以为任何期望且合适形式的异常(即,指示线程需要经受另选处理(特殊处理)的事件)。
申请人已经意识到,这里描述的技术对于在发生不精确故障(即,对于全部独立线程或线程组不必立即发生的故障)的情况下的异常行为或终止诸如搜索这样的任务特别有用。由此,在实施方式中,触发到异常处理机的重新导向的异常为可以对于线程独立发生的事件,不必须对于与关注的任务关联的其他线程或线程组立即或同时发生。
这里所描述的技术还帮助结构,其中程序员可以在程序中标识线程正在执行需要向工作在任务上的其他线程或线程组通知的异常。由此,在实施方式中,触发线程至异常处理机的重新导向和原因异常消息的(潜在的)广播的异常包括异常指令,该异常指令(由程序员)包括在用于任务的指令流中。在这一点上,将理解,这里所描述的技术可以用于高效追踪任务进展,例如通过在指令流中包括适当追踪点指令来以触发由对于任务执行的多个独立线程写出任务进展信息。
在实施方式中,异常为以下各项中的一个:线程到达某一需要的条件,在实施方式中为选择的条件,在实施方式中为预定义的条件,诸如完成搜索处理或其他目标驱动算法;线程到达执行流程中的断点;线程到达执行流程中的暂停点;以及线程到达执行流程中的追踪点。
异常在实施方式中由线程执行的指令来触发,指令诸如完成指示线程到达某一需要的先决条件的指令、断点指令、追踪点指令等。
在实施方式中,除了由用于线程的指令序列中的适当指令引起的异常(由线程到达指令序列中的适当指令引起),异常还可能由主机处理器向用于处理内核的任务管理器发布的命令引起。在这种情况下,主机处理器将向任务管理器发布异常触发命令,并且任务管理器然后将响应于从主机处理器接收到该异常命令而在适当情况下向处理内核广播原因异常事件消息。
由此,在实施方式中,异常可以以两种方式来引起:由处理内核指令流中的(线程执行的指令流中的)指令和由主机处理器向任务管理器发布的命令。
在执行在处理内核上的线程遭遇异常时的异常事件可以以任意合适且期望的方式指示(传递)给任务管理器。在实施方式中,事件被首先传递到处理内核的线程执行控制单元(若有),然后由该线程执行控制单元(例如,跨任务控制总线)传递到任务管理器。
任务管理器在接收到异常事件指示时然后向处理内核中的至少一个处理内核广播原因异常消息。在存在多个处理内核的情况下,可以向多个处理内核中的仅一个或向多个处理内核中的所选择的数量(但不是全部)发送原因异常消息,但在实施方式中,向全部处理内核(向各处理内核)广播原因异常消息。
原因异常消息可以以任意合适且期望的方式向处理内核广播,例如,经由任务管理器与处理内核之间的总线连接。
处理内核在从任务管理器接收到所广播的原因异常消息时,可以操作为以任意合适且期望的方式识别处理内核当前执行且原因异常消息适用于的线程,例如,基于与原因异常消息关联的任务识别信息。在实施方式中,处理内核的线程执行控制单元(若有)识别原因异常消息所应用于的线程。
处理内核可以类似地操作为以任何期望且合适的方式将原因异常消息被标识为应用于的、当前执行的全部线程重新导向到异常处理机。
在实施方式中,执行触发异常事件的线程的处理内核在从线程接收到异常事件指示时,在不等待从任务管理器接收到任何广播原因异常消息的情况下,立即标识处理内核执行且异常事件应用于的线程,并迫使这些线程到异常处理机中。
虽然每当任何线程遭遇异常时都将可以执行这里所描述的技术的操作,但在实施方式中,仅对于特定(在实施方式中为选择的)异常事件(异常的形式)执行以这里所描述的技术的方式进行的操作(即,向任务管理器指示异常事件,以及随后广播原因异常消息)。这然后将允许系统避免广播异常事件消息,例如在所遭遇的异常仅可应用于关注的线程的情况下。
该操作可以根据期望来实现。在一个实施方式中,线程执行的指令序列中触发异常的指令被构造成指示该异常(如果被触发)是否还应触发异常事件消息的广播。例如且在实施方式中,“异常”指令可以包括是否设置触发异常事件消息的广播的修饰符或标记。
相应地,在实施方式中,可以使所广播的异常事件消息可应用于与关注的任务有关的线程的一些线程但不是全部线程,和/或可应用于关注的任务内的线程的不同分组。在实施方式中,系统支持:每线程异常、线程组(例如,工作组)异常、任务异常以及任务链异常(即,多个任务顺序关联或“链接”成序列)中的一个或更多个,并且在实施方式中支持全部。允许异常被广播(并由此应用于)给定任务和/或任务链内的线程的不同分辨率将对于追踪是有利的,因为将允许生成用于任务内的线程的不同分辨率的追踪。
再次地,该操作可以根据期望来实现,但在实施方式中,线程执行的指令序列中触发异常的指令和/或所广播异常事件消息(并且在实施方式中为这两者)被构造成指示指令和/或消息应用于的线程“分辨率”,例如且在实施方式中,指示其应用于线程组(工作组)、任务还是任务链(或仅应用于单个线程))。例如,所广播消息可以被修改为到达工作组、任务或链(或如果异常仅旨在应用于单个线程,则没有修改)。
由此,在实施方式中,异常指令可以包括在要由用于任务的线程执行的指令序列中,该异常指令可以指示异常是仅应用于关注的线程还是还应向其他线程广播。在实施方式中,异常指令还可以指示如果要被广播给其他线程、应广播给什么级别的线程分组(即,异常应用于的“范围”)。
在异常要仅应用于触发了该异常的线程所属的线程组(工作组)的情况下,那么在实施方式中,异常被广播给关注的处理内核内的线程组,而不传递回任务管理器(处理内核的外部)。
在实施方式中,系统附加或另选地被设置为使得任何所广播的异常事件消息和异常初始应用于用于任务的线程的下一较大分组(例如,应用于触发该异常的线程所属的工作组),并且使得如果该线程组中的全部线程然后以相同的异常状态退出,则异常广播然后传播到下一较高级别的线程分组(例如且在实施方式中,传播到关注的任务),以此类推。
还将可以基于触发异常的线程是否从异常处理机返回(即,恢复线程处理)(并且在实施方式中,这样进行)来控制异常事件消息的广播。在这种情况下,如果触发该异常的线程从异常处理机返回,那么在实施方式中该异常不向其他线程广播,但如果在异常处理机中终止该线程,则在实施方式中该异常然后向其他(并且在实施方式中为全部其他)线程广播。
在要仅应用于单个线程(例如,追踪点)的异常的情况下,该单个线程将造成异常,线程然后将跳到异常处理机,并且例如从异常处理机返回或被终止。
在全部有关线程被导向到异常处理机时,那么如果全部线程被终止,则在全部异常处理机退出时,有关工作组、线程组、任务和/或任务链将终止,或者如果发布来自异常指令的返回(并且在实施方式中异常处理机可以执行来自异常指令的返回,其将恢复被重新导向至异常处理机的线程的正常处理),则它或它们可以恢复。
这里所描述的技术可以在基于任何适当构造的微处理器的系统中实施。
这里所描述的技术的各种功能可以以任何期望且合适的方式执行。例如,这里所描述的技术的功能可以实现在硬件或软件中(根据期望)。由此,例如,除非以其他方式指示,这里所描述的技术的各种功能元件和“装置”可以包括合适的处理器、控制器、功能单元、电路、处理逻辑、微处理器结构等,它们可操作以进行各种功能等,诸如适当专用硬件元件和/或可以被编程以期望方式操作的可编程硬件元件。
这里还应当注意的是,如本领域技术人员将理解的,这里所描述的技术的各种功能等可以在给定处理器上重复和/或并行执行。等同地,各种处理阶段可以共享处理电路等(如果期望)。
受制于必须执行上面讨论的特定功能的任意硬件,微处理器系统可以以其他方式包括微处理器系统包括的所有通常功能单元等中的任意一个或更多个或所有。
在实施方式中,微处理器系统包括存储这里所述数据和/或存储用于执行这里所述处理的一个或更多个存储器或存储装置,和/或与存储器或存储装置通信。
如本领域技术人员还将理解的,这里所描述的技术的所有描述实施方式可以(且在实施方式中确实)酌情包括这里描述的所有特征中的任意一个或更多个。
根据这里所描述的技术的方法至少部分地可以使用软件(例如,计算机程序)实现。由此将看到当从其他方面看时,这里所描述的技术提供计算机软件,该计算机软件当安装在数据处理器上时专门适用于执行这里描述的方法;计算机程序,该计算机程序包括计算机软件代码,用于在程序在数据处理器上运行时执行这里描述的方法;和计算机程序,该计算机程序包括代码,该代码当程序在数据处理系统上运行时适用于执行这里描述的方法的所有步骤。数据处理器可以是微处理器系统、可编程FPGA(场可编程门阵列)等。
这里所描述的技术还扩展到计算机软件载体,该计算机软件载体包括这种软件,这种软件当用于操作处理器或包括数据处理器的微处理器系统时与所述数据处理器结合使所述处理器或系统执行这里所描述的技术的方法的步骤。这种计算机软件载体可以是物理存储介质,诸如ROM芯片、CD ROM、RAM、闪速存储器或盘,或可以是信号,诸如电线上的电信号、光信号或无线电信号,诸如卫星等。
还将进一步理解的是,不是这里所描述的技术的方法的所有步骤都需要由计算机软件执行,并且由此根据更宽实施方式,这里所描述的技术提供了计算机软件并且这种软件安装在计算机软件载体上,用于执行这里阐述的方法的步骤中的至少一个。
这里所描述的技术可以因此适当地具体实施为用于与计算机系统一起使用的计算机程序产品。这种实现可以包括一系列计算机可读指令,该一系列计算机可读指令固定在有形、永久介质上,诸如计算机可读介质,例如,磁盘、CD-ROM、ROM、RAM、闪速存储器或硬盘。还应当包括一系列计算机可读指令,在有形介质(包括但不限于,光学或模拟通信线)上,或无形地使用无线技术(包括但不限于,微波、红外或其他传输技术),这些指令经由调制解调器或其他接口装置可发送到计算机系统,。该系列计算机可读指令具体实施这里之前描述的功能的所有或一部分。
本领域技术人员将理解这种计算机可读指令可以以多种编程语言来写,用于与许多计算机架构或操作系统一起使用。进一步地,这种指令可以使用任意存储技术来存储(存储技术现在或将来包括但不限于半导体、磁或光),或使用任意通信技术来发送(通信技术现在或将来包括但不限于光学、红外或微波)。预期的是,这种计算机程序产品可以作为可去除介质来分发,附有已打印的文档或电子文档,例如,现成软件;例如在系统ROM或固定盘上预加载有计算机系统;或在网络(例如,因特网或万维网)上从服务器或电子公告栏分发。
现在将描述这里所描述的技术的多个实施方式。本实施方式可以主要参照OpenCL概念和术语来描述,但本领域技术人员将理解:在本实施方式处(和这里所描述的技术)可以等同地可以应用于可以以对应方式执行的其他形式的处理。
图1示出了可以以这里所描述的技术的方式操作的示例微处理器系统1。
如图1所示,微处理器系统1包括主机处理器2和图形处理单元(GPU)3,该GPU 3可以响应于来自主机处理器2的命令(例如,对于在主机处理器2上执行的应用)执行处理操作。
GPU 3包括多个处理内核4(在本情况下为着色器内核的形式)。GPU 3可以包括比图1中所示的多或少的着色器内核4,并且在一些实施方式中,GPU 3可以仅包括单个着色器内核4。(在OpenCL术语中,各着色器内核4将对应于OpenCL“计算单元”,并且GPU 3将对应于OpenCL“装置”。)
图形处理单元3还包括作业(任务)管理器5,该作业(任务)管理器5充当向着色器内核4分配和发布从主机处理器2接收的处理任务的任务管理单元。任务管理器5在任务(作业)控制总线7上向着色器内核4的各线程执行控制单元(计算端点)6分配用于任务的处理。任务管理器5可以例如实施为适当编程的微控制器(MCU)。
在本实施方式中,用于主机处理器2的任务通过在GPU 3的着色器内核4上执行执行线程来进行。GPU 3能够每内核执行多个独立硬件线程(例如,每着色器内核4多达256个独立线程)。着色器内核4将各具有准备好执行的任务的流水线,各个任务随着变得可用(即,完成它们之前的工作)而将工作引入到独立线程中。线程在着色器内核上执行时将执行着色器指令的序列(即,OpenCL的核心指令)。
当任务要由GPU 3执行(该任务例如可以经由命令从主机处理器2传递给GPU3)时,任务管理器5将该任务划分为向要各着色器内核4发布的线程组。(由此,在OpenCL计算任务的情况下,任务管理器5将取得用于任务的OpenCL NDRange并将其细分为要发布给各着色器内核4的工作组。)
任务管理器5经由任务控制总线7向各着色器内核4的各计算端点(线程执行控制单元)6发布各线程组(工作组)。着色器内核4的各线程执行控制单元(计算端点)6然后取得它所接收到的线程组(工作组)并将对应的线程(工作项)发布到它的对应着色器内核上以执行。
微处理器系统1还包括异常处理机,在处理中遭遇异常的线程被重新导向至该异常处理机,以被特殊处理(如现有技术已知的)。异常处理机执行软件例程来适当处理被重新导向至异常处理机的任何线程。
在本实施方式中,异常处理机和异常处理过程在微处理器系统1的多个部件中并使用该多个部件来实施。图1中已示意性示出异常处理“部件”8、9以及10,以例示这一点。
具体地,任务管理器5和线程执行控制单元6用来广播异常消息,处理内核4中的异常处理硬件然后用来基于该广播异常消息和与该消息或与线程关联的任何状态将线程重新导向至异常处理软件例程。用于异常处理的软件例程运行在各处理内核4上,并且在异常处理例程完成时,在完成处理内核级别异常处理(例如,暂停操作)的线程执行控制单元6中存在固定功能硬件。党在各线程执行控制单元6上完成内核级别异常处理时,任务管理器5相应地完成任务级别执行处理(例如,暂停或者终止任务)。
用于异常处理机和异常处理过程的其他结构当然会是可以的。
本实施方式中的异常处理机根据遭遇的异常的类型来处理被重新导向至异常处理机的线程。例如,如果异常是由于完成并行搜索或一个线程到达目标,那么存储器中的值被设置以指示这一点,并且异常处理机(异常处理软件)检查该值并立即终止该值应用于的线程。
如果异常是由于断点或暂停操作而产生,那么异常处理机存储与任务有关的状态,以允许在稍后点恢复任务。在异常由执行指令的线程触发的情况下,还在存储器中设置值以由主CPU应用检查。
如果异常是由于追踪点而产生,那么异常处理机向缓冲器写出追踪数据,然后恢复主程序执行。追踪可以用于飞行中的全部线程(并且这里所描述的技术的操作帮助该形式的操作)。
图2示意性示出了所描述的实施方式中的微处理器系统1的各种部件的操作。虽然图2仅例示了单个着色器内核4和计算端点(线程执行控制单元6),但将理解,各个着色器内核4和GPU 3的计算端点6以对应的方式来操作。
以本实施方式的方式、在图1中所示的微处理器系统1的操作中,主机处理器2将向GPU 2的任务管理器5发布命令以执行任务。任务管理器5然后将要执行的任务细分为适当的线程组,并且向各着色器内核的线程执行控制单元6发布这些线程组。各线程执行控制单元6然后将取得它的线程组并将来自线程组的线程适当发布到它的着色器内核4上以执行。
在本实施方式中,发布到GPU 3的各任务含有对三个程序(要执行的指令序列)的引用。第一程序为对于正常操作任务而调用的程序(即,当执行任务时,执行任务的各线程运行该程序)。第二程序为在线程被重新导向至异常处理机以暂停/终止时在异常处理机中调用的程序。第三程序为在线程在被重新导向至异常处理机之后要恢复它们的正常处理时调用的程序。这些程序引用在与关注的任务关联的元数据(“任务报头”)中指示。
图2示出了任务管理器5向各着色器内核4发布任务20使得各着色器内核4的线程执行控制单元(计算端点)6向它们的各着色器内核4发布线程21以执行22。在实施方式中,在着色器内核4上执行的线程为真正独立的硬件线程。本实施方式还可以特别有用地尤其用于具有多个独立线程组来处理的结构中(例如,在所谓的“翘曲”或“波前”)。
如图2所示,随着着色器内核4执行它的活跃线程22,假定执行的线程在某点在它的指令序列中遭遇23异常。该异常可以例如由陷阱、断点、暂停或追踪点指令或由于完成并行搜索或线程到达目标而触发。
响应于异常23,遭遇异常的线程将因此如图2所示被重新导向到异常(暂停)处理机24(即,线程执行的程序将分支至异常处理机)。然而,根据这里所描述的技术,异常还将传递25至用于关注的着色器内核4的线程执行控制单元(计算端点)6。
响应于此,如图2所示,线程执行控制单元(计算端点)6将向任务(作业)管理器5相应地传递26异常事件。然后,响应于接收异常事件消息,任务管理器5将向各着色器内核4的线程执行控制单元(计算端点)6广播27“原因异常消息”。
各个着色器内核线程执行控制单元(计算端点)6然后(通过参照适当任务标识符)标识它的着色器内核当前执行且原因异常消息有关的线程,然后向这些线程中的全部广播28原因异常消息28,以将这些线程重新导向至异常处理机。这样,可以并向任务内的全部线程广播由单个线程引起的异常。
如图2所示,该操作将继续29,直到用于任务的全部相关线程被重新导向至用于给定着色器内核的异常处理机为止,并且相应地直到已暂停并消耗30用于任务的全部着色器内核处理线程为止。由此,全部着色器内核4将迫使它们全部的线程到异常处理机中,并且在全部线程退出异常处理机时,可以终止任务。
如图2所示,在对于着色器内核内的线程完成31异常处理过程时,这被指示回着色器内核的线程执行控制单元6。相应地,在用于着色器内核的全部线程组完成33它们的异常处理时,这被指示回任务管理器5,并且相应地,在完成35用于关注的全部任务的异常处理(在异常与多个任务有关的情况下)时,这被指示回主机36。
在全部相关线程被导向到异常处理机时,如果全部线程被终止,那么在全部异常处理机退出时,相关工作组、线程组、任务和/或任务链将终止。另选地,如果来自异常指令的返回被发布,则它或它们可以恢复(并且在实施方式中异常处理机可以执行来自异常指令的返回,其将恢复被重新导向到异常处理机的线程的正常处理)。
图3是示出了这里所描述的技术的实施方式中的图1中所示微处理器系统1的操作。
如图3所示,当用于任务的线程遭遇异常时(步骤50),然后线程被重新导向至异常处理机24,并且异常事件被指示给用于关注的着色器内核的线程执行控制单元(计算端点)6(步骤51)。线程执行控制单元(计算端点)6然后标识由异常应用于的着色器内核当前执行的线程,并且将这些线程重新导向至异常处理机24(步骤52)。线程执行控制单元还向任务管理器5指示异常事件(步骤52)。
响应于来自线程执行控制单元的异常事件指示,任务管理器5向全部着色器内核广播原因异常消息(步骤53)。
响应于所广播的原因异常消息,全部着色器内核的线程执行控制单元(计算端点)标识原因异常消息应用于的、处于它们控制下的线程,并且因此将这些线程重新导向至异常处理机(步骤54)。
异常处理机适当处理被重新导向至异常处理机的任何线程,直到完成全部经重新导向的线程为止(步骤55)。
在本实施方式中,线程执行的指令序列中触发异常的指令被构造成指示异常(如果被触发)是否应触发异常事件消息的广播。为了帮助这一点,引起“异常”的各指令包括修饰符或标记,如果该修饰符或标记被设置则触发异常事件消息的广播。这然后允许系统避免广播异常事件消息,例如在所遭遇的异常仅可应用于关注的线程的情况下。
线程执行的指令序列中触发异常的指令还被构造成指示异常应用于的线程“分辨率”(异常的范围),例如且在实施方式中,异常是应用于线程组(工作组)、任务还是任务链(或仅应用于单个线程)。
所广播的异常事件消息还被构造成指示广播应用于的线程“分辨率”。例如,所广播消息可以被修改为到达工作组、任务或链(如果异常仅旨在应用于单个线程,则没有修改)。
这帮助广播可应用于与关注的任务有关的线程中的一些线程但不是全部线程和/或应用于关注的任务内的线程的不同分组的异常事件消息。在本实施方式中,系统支持:每线程异常、线程组(例如,工作组)异常、任务异常以及任务链异常(即,在多个任务顺序关联或“链接”在一起的情况下)。
在仅应用于单个线程(例如,追踪点)的异常的情况下,单个线程将引起异常,该线程然后将跳到异常处理机,并且例如从异常处理机返回或被终止。
本实施方式还借助由主机处理器2向GPU 3(GPU 3上的任务管理器5)发布的命令来支持触发异常并广播异常事件消息。
图2例示了该操作,并且示出了例如可以从在主机2上执行的调试器/调度器发送的示例原因异常命令40。响应于来自主机2的该原因异常命令,任务管理器5将再次在任务控制总线7上向全部着色器内核广播27适当的原因异常消息,着色器内核然后用来以上面讨论的方式将相关线程重新导向到异常处理机。
上述实施方式的操作的各种另选方案和修改方案将是可以的(如果期望)。
例如,在异常仅应用于触发异常的线程所属的线程组(工作组)的情况下,那么该异常可以在不传递回任务管理器(处理内核外部)的情况下向关注的处理内核内的线程组广播。
所广播的异常事件消息和异常可以初始应用于用于任务的线程的下一较大分组(例如,应用于触发异常的线程所属的工作组),异常广播然后仅在该线程组中的全部线程(例如,全部工作组线程)以相同的异常状态退出时,才传播到下一较高级别的线程分组(例如且在实施方式中,传播到关注的任务)(以此类推)。
还将可以基于触发异常的线程是否从异常处理机返回(即,恢复线程处理)来控制异常事件消息的广播。在这种情况下,如果触发异常的线程从异常处理机返回,那么在实施方式中异常不向其他线程广播,但如果在异常处理机中终止线程,则在实施方式中异常然后向其他线程广播。
如可以从上述看到的,这里所描述的技术在其实施方式中至少提供一种用于高效处理并行执行多个独立线程的许多线程化处理器中的异常的机制。这然后可以帮助例如高效终止并行搜索或其他目标驱动算法、状态性地(statefully)暂停包括许多线程的程序以及处理由许多线程组成的程序中的断点和程序的剖析。在许多线程化并行处理操作中,各线程可以以最早的机会以高效的方式到达异常处理机(例如,异常然后可以从该处理机适当恢复)。
这至少在这里所描述的技术的实施方式中通过向任务内的其他(并且在实施方式中为全部其他)线程广播由任务内的单个线程引起的异常来实现。
对这里所描述的技术的上述详细说明是为了例示和说明的目的而提供的。并非旨在对这里所描述的技术进行穷尽,或者将这里所描述的技术限于所公开的精确形式。很多修改例和变型例鉴于上述示教而是可以的。选择了所述实施方式以最好地解释这里所描述的技术的原理及其实际应用,以使本领域技术人员能够将这里所描述的技术最佳用于各种实施方式,以及适合于所设想的具体用途的各种变型。
Claims (25)
1.一种微处理器系统,该微处理器系统包括:
一个或更多个处理内核,各处理内核能够操作为并行执行多个执行线程;
任务管理器,该任务管理器能够操作为向所述处理内核发布任务以处理;以及
异常处理机,该异常处理机能够操作为处理在执行期间遭遇异常的线程;
其中:
所述处理内核中的至少一个处理内核能够在所述至少一个处理内核执行的线程遭遇异常或希望产生异常时向所述任务管理器触发异常事件;
所述任务管理器能够在从处理内核中的所述至少一个处理内核接收到异常事件的指示时向所述处理内核中的任意处理内核的至少一个处理内核广播原因异常消息;并且
所述处理内核中的任意处理内核的所述至少一个处理内核能够在所述至少一个处理内核从所述任务管理器接收到响应于当由同一或其他处理内核执行的线程遭遇异常或希望产生异常时由该同一或其他处理内核向所述任务管理器触发异常事件而广播的原因异常消息时标识所述处理内核当前执行且所述原因异常消息应用于并且因此应被终止或暂停的任何线程,并且将任何这种所标识的线程重新导向到所述异常处理机以处理,其中,所述异常处理机进行的处理包括终止或暂停执行被重新导向到所述异常处理机的所标识线程。
2.根据权利要求1所述的系统,其中,所述处理内核为图形处理内核。
3.根据权利要求1所述的系统,所述系统还包括主机处理器,该主机处理器能够操作为向所述任务管理器指示要执行的任务以向所述处理内核发布。
4.根据权利要求1所述的系统,其中,要执行的所述任务为并行搜索或其他目标驱动算法。
5.根据权利要求1所述的系统,其中,所述异常处理机关于所述异常处理机接收到的线程执行以下各项中的一个:恢复所述线程的执行;存储用于所述线程的跟踪数据;以及存储与所关注的所述线程和/或任务有关的状态信息。
6.根据权利要求1所述的系统,其中,要向所述处理内核发布的各任务关联有:用于所述任务的正常操作而执行的第一程序;用于在与所述任务关联的线程被重新导向至所述异常处理机以暂停和/或终止时暂停和/或终止线程的第二程序;以及用于在重新导向到所述异常处理机之后恢复线程的第三程序。
7.根据权利要求1所述的系统,其中,触发将线程重新导向至所述异常处理机的所述异常为以下各项中的一个:所述线程到达搜索处理或其他目标驱动算法的完成;所述线程到达其执行流程中的断点;所述线程到达其执行流程中的暂停点;以及所述线程到达其执行流程中的追踪点。
8.根据权利要求1所述的系统,其中,异常能够由线程执行的指令流中的指令引起;以及由主机处理器向所述任务管理器发布的命令引起。
9.根据权利要求1所述的系统,其中,所述处理内核仅针对所选择的形式的异常向所述任务管理器指示异常事件。
10.根据权利要求1所述的系统,其中,任务的处理包括由所述一个或更多个处理内核执行相应的执行线程,并且其中,广播异常事件消息能够应用于正在被处理的任务内的执行线程中的一些线程但不是全部执行线程,和/或能够应用于正在被处理的任务内的不同分组的执行线程。
11.根据权利要求1所述的系统,其中,针对能够触发异常的任务而要由线程执行的指令序列中所包括的指令能够指示所述异常仅应用于触发了异常的所述线程还是还应被广播到其他线程。
12.根据权利要求1所述的系统,其中,要被广播到其他线程的异常指令还指示所述异常应被广播到的线程分组的级别。
13.一种操作微处理器系统的方法,该微处理器系统包括:
一个或更多个处理内核,各处理内核能够操作为并行执行多个执行线程;
任务管理器,该任务管理器能够操作为向所述处理内核发布任务以处理;以及
异常处理机,该异常处理机能够操作为处理在执行期间遭遇异常的线程;
所述方法包括以下步骤:
处理内核在所述处理内核执行的线程遭遇异常或希望产生异常时将所述线程重新导向到所述异常处理机并向所述任务管理器触发异常事件;
所述任务管理器在从所述处理内核中的至少一个处理内核接收到异常事件的指示时向所述处理内核中的任意处理内核的至少一个处理内核广播原因异常消息;以及
从所述任务管理器接收到响应于当由同一或其他处理内核执行的线程遭遇异常或希望产生异常时由该同一或其他处理内核向所述任务管理器触发异常事件而广播的原因异常消息的所述处理内核中的任意处理内核的所述至少一个处理内核标识所述处理内核当前执行且所述原因异常消息应用于并且因此应被终止或暂停的任何线程,并且将任何这种所标识的线程重新导向到所述异常处理机以处理,其中,所述异常处理机进行的处理包括终止或暂停执行被重新导向到所述异常处理机的所标识的线程。
14.根据权利要求13所述的方法,其中,所述处理内核为图形处理内核。
15.根据权利要求13所述的方法,所述方法还包括以下步骤:主机处理器向所述任务管理器指示要执行的任务以向所述处理内核发布。
16.根据权利要求13所述的方法,其中,由所述处理内核执行的所述任务为并行搜索或其他目标驱动算法。
17.根据权利要求13所述的方法,其中,所述异常处理机关于所述异常处理机接收到的线程执行以下各项中的一个或更多个:恢复所述线程的执行;存储用于所述线程的跟踪数据;以及存储与所关注的所述线程和/或任务有关的状态信息。
18.根据权利要求13所述的方法,所述方法包括以下步骤:对向所述处理内核发布的任务关联:用于所述任务的正常操作而执行的第一程序;用于在与所述任务关联的线程被重新导向至所述异常处理机以暂停和/或终止时暂停和/或终止线程的第二程序;以及用于在重新导向到所述异常处理机之后恢复线程的第三程序。
19.根据权利要求13所述的方法,其中,触发将所述线程重新导向至所述异常处理机的所述异常为以下各项中的一个:所述线程到达搜索处理或其他目标驱动算法的完成;所述线程到达其执行流程中的断点;所述线程到达执行流程中的暂停点;以及所述线程到达其执行流程中的追踪点。
20.根据权利要求13所述的方法,其中,异常能够由线程执行的指令流中的指令引起;以及由主机处理器向所述任务管理器发布的命令引起。
21.根据权利要求13所述的方法,所述方法包括以下步骤:所述处理内核仅针对所选择的形式的异常向所述任务管理器指示异常事件。
22.根据权利要求13所述的方法,其中,任务的处理包括由所述一个或更多个处理内核执行相应的执行线程,并且其中,广播异常事件消息能够应用于正在被处理的任务内的执行线程中的一些线程但不是全部执行线程。
23.根据权利要求13所述的方法,所述方法包括以下步骤:使用触发所述异常的指令中的指示来确定所述异常仅应用于触发异常的所述线程还是还应被广播到其他线程。
24.根据权利要求13所述的方法,所述方法包括以下步骤:使用触发所述异常的指令中的指示来确定所述异常应被广播到的线程分组的级别。
25.一种存储有软件代码的计算机可读介质,该软件代码在执行时使得执行根据权利要求13至24中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1404585.0A GB2524085B (en) | 2014-03-14 | 2014-03-14 | Exception handling in microprocessor systems |
GB1404585.0 | 2014-03-14 | ||
PCT/GB2015/050712 WO2015136283A1 (en) | 2014-03-14 | 2015-03-11 | Exception handling in microprocessor systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106104483A CN106104483A (zh) | 2016-11-09 |
CN106104483B true CN106104483B (zh) | 2020-07-14 |
Family
ID=50634785
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580014083.2A Active CN106104483B (zh) | 2014-03-14 | 2015-03-11 | 微处理器系统、操作微处理器系统的方法、可读介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11003489B2 (zh) |
KR (1) | KR102333341B1 (zh) |
CN (1) | CN106104483B (zh) |
GB (1) | GB2524085B (zh) |
WO (1) | WO2015136283A1 (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10360264B2 (en) | 2016-04-08 | 2019-07-23 | Wmware, Inc. | Access control for user accounts using a bidirectional search approach |
US10104087B2 (en) * | 2016-04-08 | 2018-10-16 | Vmware, Inc. | Access control for user accounts using a parallel search approach |
US10536476B2 (en) * | 2016-07-21 | 2020-01-14 | Sap Se | Realtime triggering framework |
US10482241B2 (en) | 2016-08-24 | 2019-11-19 | Sap Se | Visualization of data distributed in multiple dimensions |
US10542016B2 (en) | 2016-08-31 | 2020-01-21 | Sap Se | Location enrichment in enterprise threat detection |
US10353766B2 (en) * | 2016-09-09 | 2019-07-16 | International Business Machines Corporation | Managing execution of computer tasks under time constraints |
US10673879B2 (en) | 2016-09-23 | 2020-06-02 | Sap Se | Snapshot of a forensic investigation for enterprise threat detection |
US10630705B2 (en) | 2016-09-23 | 2020-04-21 | Sap Se | Real-time push API for log events in enterprise threat detection |
US10534908B2 (en) | 2016-12-06 | 2020-01-14 | Sap Se | Alerts based on entities in security information and event management products |
US10530792B2 (en) | 2016-12-15 | 2020-01-07 | Sap Se | Using frequency analysis in enterprise threat detection to detect intrusions in a computer system |
US10534907B2 (en) | 2016-12-15 | 2020-01-14 | Sap Se | Providing semantic connectivity between a java application server and enterprise threat detection system using a J2EE data |
US11470094B2 (en) | 2016-12-16 | 2022-10-11 | Sap Se | Bi-directional content replication logic for enterprise threat detection |
US10552605B2 (en) | 2016-12-16 | 2020-02-04 | Sap Se | Anomaly detection in enterprise threat detection |
US10764306B2 (en) | 2016-12-19 | 2020-09-01 | Sap Se | Distributing cloud-computing platform content to enterprise threat detection systems |
US10530794B2 (en) | 2017-06-30 | 2020-01-07 | Sap Se | Pattern creation in enterprise threat detection |
US9934287B1 (en) * | 2017-07-25 | 2018-04-03 | Capital One Services, Llc | Systems and methods for expedited large file processing |
CN108021463B (zh) * | 2017-11-24 | 2021-07-16 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于有限状态机的gpu故障管理方法 |
US10986111B2 (en) | 2017-12-19 | 2021-04-20 | Sap Se | Displaying a series of events along a time axis in enterprise threat detection |
US10681064B2 (en) | 2017-12-19 | 2020-06-09 | Sap Se | Analysis of complex relationships among information technology security-relevant entities using a network graph |
CN108563581A (zh) * | 2018-04-25 | 2018-09-21 | 咪咕文化科技有限公司 | 异常检测处理方法及装置、电子设备及计算机存储介质 |
CN110287020A (zh) * | 2019-05-10 | 2019-09-27 | 中国船舶重工集团公司第七一五研究所 | 一种实时操作系统平台下的高效并行计算方法 |
US11386518B2 (en) * | 2019-09-24 | 2022-07-12 | Advanced Micro Devices, Inc. | Exception handler for sampling draw dispatch identifiers |
US11675785B2 (en) | 2020-01-31 | 2023-06-13 | Oracle International Corporation | Dynamic asynchronous traversals for distributed graph queries |
US11340942B2 (en) * | 2020-03-19 | 2022-05-24 | Raytheon Company | Cooperative work-stealing scheduler |
US11461130B2 (en) * | 2020-05-26 | 2022-10-04 | Oracle International Corporation | Methodology for fast and seamless task cancelation and error handling in distributed processing of large graph data |
US11456946B2 (en) | 2020-06-11 | 2022-09-27 | Oracle International Corporation | Regular path queries (RPQS) for distributed graphs |
US12001425B2 (en) | 2020-12-09 | 2024-06-04 | Oracle International Corporation | Duplication elimination in depth based searches for distributed systems |
CN112817760A (zh) * | 2021-01-28 | 2021-05-18 | 深圳宏芯宇电子股份有限公司 | 多核处理器及多核处理器信号处理方法 |
US11782602B2 (en) | 2021-06-24 | 2023-10-10 | Western Digital Technologies, Inc. | Providing priority indicators for NVMe data communication streams |
US11960730B2 (en) * | 2021-06-28 | 2024-04-16 | Western Digital Technologies, Inc. | Distributed exception handling in solid state drives |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6199179B1 (en) * | 1998-06-10 | 2001-03-06 | Compaq Computer Corporation | Method and apparatus for failure recovery in a multi-processor computer system |
CN1326037C (zh) * | 2004-02-06 | 2007-07-11 | 智慧第一公司 | 用于更正微处理器中的内部调用或返回堆栈的方法与装置 |
CN101292226A (zh) * | 2005-10-19 | 2008-10-22 | 英特尔公司 | 线程通信和同步技术 |
CN101341548A (zh) * | 2005-12-13 | 2009-01-07 | 格姆普拉斯公司 | 存储器扇区异常破坏的检测器 |
CN101639803A (zh) * | 2008-07-30 | 2010-02-03 | 株式会社日立制作所 | 多线程应用系统的异常处理方法和异常处理装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03156559A (ja) * | 1989-11-14 | 1991-07-04 | Nec Corp | マルチプロセッサシステムに於ける割込み処理方式 |
US5555420A (en) * | 1990-12-21 | 1996-09-10 | Intel Corporation | Multiprocessor programmable interrupt controller system with separate interrupt bus and bus retry management |
US5802371A (en) * | 1994-09-29 | 1998-09-01 | International Business Machines Corporation | Method of walking-up a call stack for a client/server program that uses remote procedure call |
CN1326037A (zh) | 2000-05-28 | 2001-12-12 | 陈旭如 | 下水管道防回流阀门 |
US7171663B2 (en) * | 2002-12-09 | 2007-01-30 | International Business Machines Corporation | External event interrupt for server-side programs |
US7418585B2 (en) * | 2003-08-28 | 2008-08-26 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7849297B2 (en) * | 2003-08-28 | 2010-12-07 | Mips Technologies, Inc. | Software emulation of directed exceptions in a multithreading processor |
US20050149711A1 (en) * | 2003-12-30 | 2005-07-07 | Zimmer Vincent J. | Method and system for firmware-based run time exception filtering |
US7162666B2 (en) * | 2004-03-26 | 2007-01-09 | Emc Corporation | Multi-processor system having a watchdog for interrupting the multiple processors and deferring preemption until release of spinlocks |
US7577962B2 (en) * | 2004-12-03 | 2009-08-18 | Microsoft Corporation | Routing exceptions to operating system subsystems |
US7861072B2 (en) * | 2007-06-25 | 2010-12-28 | Microsoft Corporation | Throwing one selected representative exception among aggregated multiple exceptions of same root cause received from concurrent tasks and discarding the rest |
US8146085B2 (en) * | 2007-06-25 | 2012-03-27 | Microsoft Corporation | Concurrent exception handling using an aggregated exception structure |
US8365198B2 (en) * | 2008-12-09 | 2013-01-29 | Microsoft Corporation | Handling exceptions in a data parallel system |
US8522000B2 (en) * | 2009-09-29 | 2013-08-27 | Nvidia Corporation | Trap handler architecture for a parallel processing unit |
GB2484729A (en) * | 2010-10-22 | 2012-04-25 | Advanced Risc Mach Ltd | Exception control in a multiprocessor system |
US9513975B2 (en) * | 2012-05-02 | 2016-12-06 | Nvidia Corporation | Technique for computational nested parallelism |
US9298497B2 (en) | 2012-07-13 | 2016-03-29 | Wisconsin Alumni Research Foundation | Computer processor providing exception handling with reduced state storage |
-
2014
- 2014-03-14 GB GB1404585.0A patent/GB2524085B/en active Active
-
2015
- 2015-03-11 CN CN201580014083.2A patent/CN106104483B/zh active Active
- 2015-03-11 US US15/125,661 patent/US11003489B2/en active Active
- 2015-03-11 WO PCT/GB2015/050712 patent/WO2015136283A1/en active Application Filing
- 2015-03-11 KR KR1020167028039A patent/KR102333341B1/ko active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6199179B1 (en) * | 1998-06-10 | 2001-03-06 | Compaq Computer Corporation | Method and apparatus for failure recovery in a multi-processor computer system |
CN1326037C (zh) * | 2004-02-06 | 2007-07-11 | 智慧第一公司 | 用于更正微处理器中的内部调用或返回堆栈的方法与装置 |
CN101292226A (zh) * | 2005-10-19 | 2008-10-22 | 英特尔公司 | 线程通信和同步技术 |
CN101341548A (zh) * | 2005-12-13 | 2009-01-07 | 格姆普拉斯公司 | 存储器扇区异常破坏的检测器 |
CN101639803A (zh) * | 2008-07-30 | 2010-02-03 | 株式会社日立制作所 | 多线程应用系统的异常处理方法和异常处理装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2015136283A1 (en) | 2015-09-17 |
US20170004005A1 (en) | 2017-01-05 |
KR20160132437A (ko) | 2016-11-18 |
KR102333341B1 (ko) | 2021-12-01 |
GB2524085B (en) | 2021-01-20 |
GB201404585D0 (en) | 2014-04-30 |
CN106104483A (zh) | 2016-11-09 |
GB2524085A (en) | 2015-09-16 |
US11003489B2 (en) | 2021-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106104483B (zh) | 微处理器系统、操作微处理器系统的方法、可读介质 | |
Han et al. | Microsecond-scale preemption for concurrent {GPU-accelerated}{DNN} inferences | |
EP2620873B1 (en) | Resource allocation method and apparatus of GPU | |
KR102024283B1 (ko) | 다중스레드 컴퓨팅 | |
US10861125B2 (en) | Preparing and executing command streams in data processing systems | |
JP2017518575A (ja) | ソフトウェア援助コンテキストスイッチを有するミッドスレッドプリエンプション | |
US20140143524A1 (en) | Information processing apparatus, information processing apparatus control method, and a computer-readable storage medium storing a control program for controlling an information processing apparatus | |
US9122522B2 (en) | Software mechanisms for managing task scheduling on an accelerated processing device (APD) | |
US9471387B2 (en) | Scheduling in job execution | |
CN114895965A (zh) | 实现工作负载的静态映射的乱序流水线执行的方法和装置 | |
CN101599009A (zh) | 一种异构多处理器上并行执行任务的方法 | |
US10846088B2 (en) | Control of instruction execution in a data processor | |
GB2610242A (en) | Graphics processing | |
KR20130080663A (ko) | 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치 | |
US20100269119A1 (en) | Event-based dynamic resource provisioning | |
US20220300322A1 (en) | Cascading of Graph Streaming Processors | |
KR20140131781A (ko) | 메모리 제어 장치 및 방법 | |
US7899995B1 (en) | Apparatus, system, and method for dependent computations of streaming multiprocessors | |
Patil | Data transfer optimization in CPU/GPGPU Communication | |
KR102719968B1 (ko) | 데이터 처리 시스템 | |
CN103197959A (zh) | 一种多核cpu的切换方法 | |
TWI428833B (zh) | 多執行緒處理器及其指令執行及同步方法及其電腦程式產品 | |
JP7257407B2 (ja) | 外部例外処理 | |
US20220382587A1 (en) | Data processing systems | |
KR20220077484A (ko) | 능동적 스케줄링 방법과 컴퓨팅 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |