CN104937541A - 用于调用多线程加速器的装置和方法 - Google Patents
用于调用多线程加速器的装置和方法 Download PDFInfo
- Publication number
- CN104937541A CN104937541A CN201380062688.XA CN201380062688A CN104937541A CN 104937541 A CN104937541 A CN 104937541A CN 201380062688 A CN201380062688 A CN 201380062688A CN 104937541 A CN104937541 A CN 104937541A
- Authority
- CN
- China
- Prior art keywords
- thread
- accelerator
- micro
- cpu
- general
- 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
- 238000000034 method Methods 0.000 title claims description 47
- 230000008569 process Effects 0.000 claims description 16
- 230000002159 abnormal effect Effects 0.000 claims description 9
- 238000012545 processing Methods 0.000 claims description 7
- 238000007710 freezing Methods 0.000 claims description 6
- 230000008014 freezing Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 claims 3
- 230000002618 waking effect Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 10
- 238000003860 storage Methods 0.000 description 10
- 230000001133 acceleration Effects 0.000 description 8
- 238000002955 isolation Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- GVVPGTZRZFNKDS-JXMROGBWSA-N geranyl diphosphate Chemical group CC(C)=CCC\C(C)=C\CO[P@](O)(=O)OP(O)(O)=O GVVPGTZRZFNKDS-JXMROGBWSA-N 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000014616 translation Effects 0.000 description 2
- 208000035126 Facies Diseases 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction 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
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000003068 static effect 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/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
-
- 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/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
描述了一种处理器,该处理器具有通用CPU核的逻辑电路,该逻辑电路用于保存该通用CPU的线程的上下文的多个副本以便使多线程加速器的多个微线程准备好执行从而通过这些微线程的并行执行加速用于该线程的操作。
Description
发明领域
本发明的领域总体上涉及计算系统设计并且更具体地涉及用于调用多线程加速器的装置和方法。
背景
随着半导体制造工艺正在到达接近每管芯一万亿个晶体管的时代,设计工程师面临如何最有效地使用所有可用晶体管的问题。一种设计方法是用管芯上的专用硬件“加速”以及一个或多个通用CPU核实现特定计算密集型功能。
加速是用被设计成用于执行特定计算密集型功能的专用逻辑块实现的。将密集型计算迁移到这种专用逻辑块将CPU核从执行大量指令中释放,由此提高了CPU核的有效性和效率。
尽管协处理器(诸如图形协处理器)形式的“加速”在本领域中是已知的,这种传统的协处理器被OS视为位于OS运行所在的CPU核外部的单独的“设备”(在更大的计算系统内)。因此通过特殊设备驱动软件访问这些协处理器并且其不在与CPU核相同的存储器空间之外操作。这样,传统的协处理器不共享或考虑在CPU核上实现的虚拟地址到物理地址转换方案。
而且,当任务被OS分流到传统的协处理器时,遇到较大等待时间。确切地,因为CPU核和传统的协处理器本质上与单独的隔离的子系统相对应,当在GPP核上的主OS内定义的任务被传递到协处理器的“内核”软件时,耗费大量的通信资源。这种较大等待时间有利于如下系统设计:该系统设计在协处理器上从主OS调用相对不频繁的任务但是对于每个任务具有大的相关联的数据块。事实上,传统的协处理器主要以粗粒度方式而不是细粒度方式被利用。
因为当前系统设计人员对向计算系统引入具有更细粒度使用的更多加速感兴趣,保证了用于在计算系统内集成加速的新范例。
附图
通过举例而非通过限制在附图的图示中展示本发明,在附图中,类似的参考表示类似的元素,并且在附图中:
图1示出其处理核各自包括通用处理核和紧密地耦合到通用处理核的加速器的计算系统;
图2示出用于从主通用CPU核调用多线程加速器核的过程;
图3示出具有通用CPU核和加速器的处理器的实施例,其中通用CPU核包括用于为加速器的多个微线程创建主线程的上下文的多个副本的逻辑电路;
图4示出用于异常和/或中断处理的方法。
详细描述
尽管协处理器(诸如图形协处理器)形式的“加速”在本领域中是已知的,这种传统的协处理器被OS视为位于OS运行所在的CPU核外部的单独的“设备”(在更大的计算系统内)。因此通过特殊设备驱动软件访问这些协处理器并且其不在与CPU核相同的存储器空间之外操作。这样,传统的协处理器不共享或考虑在CPU核上实现的虚拟地址到物理地址转换方案。
而且,当任务被OS分流到传统的协处理器时,遇到较大等待时间。确切地,因为CPU核和传统的协处理器本质上与单独的隔离的子系统相对应,当在GPP核上的主OS内定义的任务被传递到协处理器的“内核”软件时,耗费大量的通信资源。这种较大等待时间有利于如下系统设计:该系统设计在协处理器上从主OS调用相对不频繁的任务但是对于每个任务具有大的相关联的数据块。事实上,传统的协处理器主要以粗粒度方式而不是细粒度方式被利用。
因为当前系统设计人员对向计算系统引入具有更细粒度使用的更多加速感兴趣,保证了用于在计算系统内集成加速的新范例。
图1示出新的处理核100_1架构,其中加速器101_1至101_N被设计为类似于耦合到核的传统通用CPU 102的大标量功能单元。多个这种核100_1至100_Q可布置在单个处理器120上,该单个处理器布置在如图1所示的半导体芯片上。
在此,从存储器读取标准指令并且其由CPU核102中的核的传统功能单元执行。然而,处理核100_1所接收的其他类型的指令将触发加速器动作。在特定实现方式中,底层硬件支持软件用代码调用特定加速器的能力。即,特定命令可由软件编程人员(或由编译器)体现为代码,其中该特定命令调用特定加速器单元并定义输入操作数。
该命令最终以某种目标代码的形式展现。在运行时期间,底层硬件“执行”该目标代码并且在这样做时用相关联的输入数据调用该特定加速器。
当被调用时,该加速器在与CPU核102相同的存储器空间之外操作。这样,可为具有虚拟地址的加速器标识数据操作数,这些虚拟地址到物理地址空间的相应转换与CPU核102所使用的那些相同。而且,通常,加速器单元执行命令的执行时间长于传统/标准指令(由于所执行的任务的复杂性质)。输入操作数和/或产物也可大于CPU 102内的指令执行流水线的标准寄存器尺寸。
加速器因此可通常被视为比CPU 102的传统功能单元和指令的粒度更粗糙(具有更大的执行时间和/或在更大的数据块上操作)。同时,加速器还可通常被视为粒度更细,或者至少比传统协处理器更紧密地耦合到CPU核102。
确切地,避免耗时的“驱动器调用”以便由加速器和通用CPU 102调用加速器和/或共享相同的存储器空间,这对应于到通用CPU 102和加速器之间的与传统协处理器相比更紧密耦合。此外,加速器被调用执行的特定各个任务也可比传统上由协处理器执行的更大的批量任务的粒度更细。适合作为单个“可调用”操作通过加速器实现的特定各个任务包括纹理采样、运动搜索或运动补偿、安全相关计算(例如,密码术、加密等等)、特定金融计算和/或特定科学计算。
通用CPU核102可具有一个或多个指令执行流水线。现代CPU核通常能够并发地执行多个线程。通过多个流水线的多个线程并发执行是直接的概念。而且,单个流水线还可被设计成用于支持多个线程的并发执行。
因为加速器的目的是为特定计算提供比通用CPU核能够提供的性能更高的性能,可如何获得“更高的性能”的某种讨论是值得的。图2示出在通用CPU核上执行的示例性线程201_1。注意,通用CPU核是并发地支持至少一个其他线程201_X的执行的多线程核。与线程的共同理解相一致,如图2所示,线程201_1至201_X各自是单个指令流。
在点202,线程201_1调用加速器。在典型的实现方式中,加速器包括被特殊地设计成用于执行复杂任务的一个或多个专用执行单元。这些专用执行单元的调用提供由加速器提供的某些加速。然而,如图2所示,加速器的调用还产生多个“微线程”203_1至203_Y。
微线程203_1至203_Y有待与微代码区分。微代码是位于执行单元内部的执行单元用于执行其被设计成用于执行的指令的原子程序代码。加速器的执行单元可以是微代码化的,但这并非必须。对比之下,微线程203_1至203_Y是类似于线程201_1至201_X的指令流。也就是,微线程203_1至203_Y指定有待由加速器的执行单元执行的指令,而不是与执行单元内的内部程序代码相对应。
参照图2,然后,加速器所提供的加速至少部分源自多个线程203_1至203_Y的并行执行,这与单个线程201_1的执行相对。换言之,在实施例中,加速器所提供的加速不仅通过调用专用执行单元而且通过它们并行执行多个线程来实现。在实施例中,例如,加速由多指令多数据(MIMD)加速器通过专用执行单元提供,而执行主线程201_1所在的CPU核与具有通用执行单元的单指令机器(诸如单指令单数据(SISD)和/或单指令多数据(SIMD))相对应。
将多个微线程203_1至203_Y散播到不同于主线程201_1的ISA的指令集架构(ISA)比将多个微指令散播到与主线程相同的ISA更常见。在加速器ISA不同于主线程ISA(例如,GPU)的典型情况下,加速器和主线程在不同的并且隔离的程序存储器区域和数据存储器区域之外执行。简言之,通用CPU核和加速器是各自具有其自身的对应程序代码和数据域的不同的隔离机器。
对比之下,在其中微线程203_1至203_Y在与主线程201_1相同的ISA上执行的情况中,加速器和主线程/通用CPU核之间的显著更紧密的关联是可能的。例如,参照图2和图3,加速器的微线程203_1至203_Y可在与主线程201_1相同的程序存储器空间301之外操作。另一种可能性是微线程203_1至203_Y可使用不仅来自与主线程201_1相同的数据存储器空间302而且可能来自相同的寄存器空间303的数据。也就是,加速器可以可想象地至少利用处理主线程201_1的通用CPU指令执行流水线的数据寄存器303。
为了支持多线程加速器的调用,其中与通用CPU相比ISA不改变,应当建立某些语义定义。这些包括用于以下内容的定义:i)初始微线程架构状态;ii)微架构状态的维护;iii)线程调度;以及iv)最终微线程架构状态。应当定义用于异常、中断和违规的其他语义定义。以下接着讨论这些定义中的每个定义。
微线程初始化、维护、调度和总结
微线程架构状态的初始化与其中启动每个微线程的环境相对应。在其中加速器和通用CPU核紧密关联的实施例中,可以以与子例程由在通用CPU核上作为典型/标准线程来执行的主程序调用的方式相同或类似的方式启动微线程。这样,通用CPU核ISA所支持的应用二进制接口(ABI)或嵌入式ABI(EABI)的某些(如果不是全部)方面用于启动微线程。这样,主线程调用加速器的方式和主线程调用在通用CPU核上执行的典型子例程的方式之间存在相似性。
ABI或EABI本质上定义如何进行从第一例程到第二子例程的函数调用。ABI或EABI的一部分(以下,简称“ABI”)指定用于嵌入式软件程序的文件格式、数据类型、寄存器使用、栈框架组织和函数参数传递的标准惯例。所考虑的另一个因素是通过定义,线程具有其自身的“上下文”,其中上下文与指令、数据和控制寄存器和/或存储器空间内的特定值相对应。除非其与在完全相同的数据上操作的完全相同的程序相对应,两个不同的线程被期望在其执行过程中具有不同的上下文。在此意义上,加速器的多个微线程可被视为具有其自身对应的上下文的独立线程。
这样,在实施例中,通用CPU核线程对多线程加速器的调用包括将主线程的上下文的多个实例传递到多个加速器线程中的每一个加速器线程,其中与主线程的ISA的ABI相一致地执行主线程的上下文的每次传递。在一种极端情况下,加速器具有其自身的相关联的寄存器330,包括用于每个单独微线程的专用寄存器空间,并且主线程的上下文的副本被多次复制331到每个微线程的专用加速器寄存器空间330。在这种情况下,通用CPU核包括用于将主线程的上下文的不同副本复制331到加速器的专用寄存器空间330中的第一逻辑电路310。
根据这种相同的方法,当加速器执行其任务时,主线程的上下文可后续被“切换出”通用CPU核。这样,例如另一个程序的另一个线程可将其上下文切换到通用CPU核中并且在加速器执行期间代替其执行。
在另一种极端情况下,加速器的多个微线程中的每个微线程仅可访问主线程的上下文,因为其位于主CPU核的寄存器空间340中。在这种情况下,主线程的上下文可或可不被切换出主CPU核,取决于设计者偏好,不管主线程的上下文对加速器微线程是永久地可用还是仅初始地可用。在后一种情况中主线程的上下文可被切换出,如上所述。
在其中微线程在通用CPU核的寄存器空间303之外操作的情况中,就在加速器代码的实际调用之前,主线程执行一个或多个分配指令以便在主CPU核寄存器空间303内为每个微线程分配栈区域和主线程的上下文的副本。所分配的栈为每个微线程保留空间以便进行其自身的函数调用。
相对于分配主线程的上下文,加速器的每个微线程在寄存器内具有其自身的主线程上下文的副本(为了绘图简单,未示出这些副本和加速器和寄存器空间303之间的耦合)。因此,再次,通用CPU核包括用于存储主线程的上下文的多个副本的逻辑电路310(尽管在这种情况下不同的副本存储在通用CPU核的寄存器空间303中)。技术上讲,寄存器空间303对应于执行主线程的指令执行流水线所使用的操作数和控制寄存器空间。在此,逻辑电路310可以是用于执行分配指令(aloc)的逻辑电路。
在另一种中间方法中,主线程的上下文被复制到加速器微线程所引用的中间缓冲器或存储区域(例如,备用寄存器和/或存储器空间(未在图3中示出))。在这种情况下,在其上下文已经被写入中间缓冲器之后,主线程的上下文可被切换出通用CPU核。
在进一步的实施例中,由于效率,可由逻辑电路310使得主线程的上下文的部分对微线程可用。例如,根据一种方法,如果加速器不使用具有特定类型的寄存器空间(诸如SIMD寄存器空间)的内容,不使得该寄存器类型的上下文对微线程可用(例如,不对微代码提供SIMD上下文)。
在另一个或相关实施例中,微线程仅从逻辑电路310提供,具有可由ABI标识和/或使用的上下文。在此,相关的是理解通过ABI进行函数调用的动态。通常,函数调用仅将少量“输入”参数传递到其调用的子例程。子例程然后执行其操作而无需对调用线程数据的任何进一步引用。这样,仅仅用于将输入参数传递到所调用的例程的有限寄存器空间集合实际上由ABI利用。因此,ABI可设置限制或以其他方式标识比调用线程的整个上下文更小的寄存器子集。
沿着类似的思路,当主线程调用加速器及其多个微线程时,主线程的被传递到微线程的上下文信息仅与ABI所允许的上下文信息的有限子集相对应。在支持多个不同的ABI的ISA的情况下,寄存器子集可与一个、多于一个或全部ABI相对应,可被选择为可被传递到微线程的允许的上下文集合。这样,通用CPU核或者重新使用用于为了调用加速器的目的实现通用CPU核所处理的线程之间的典型子例程函数调用的逻辑电路,或者已经添加用于实现与ABI一致的加速器的调用的逻辑电路。
在各实施例中,不管加速器如何被提供有主线程的上下文,主线程的上下文(例如,当加速器被调用时(例如,就在这之后),机器针对主线程的架构状态)未被修改,除了修改(例如,递增)指令指针以及调整某些寄存器以便反映执行状态(成功/失败以及相关细节)之外。换言之,对微线程中的主线程上下文/架构状态的任何改变对主线程的调用应用隐藏。这允许微线程按顺序执行。
在进一步的实施例中,由于加速器可在与主线程相同的程序存储器空间之外操作,作为调用过程的一部分,指令指针被改变为指向加速器代码的开始。这样,主线程的指令指针上下文未被复制,作为微线程在之外操作的加速器调用的一部分(在加速器已经完成其操作之后,其可被复制为将程序流返回主线程)。在此,值得指出的是期望编程微线程加速器具有其自身的指令取出单元,用于从程序存储器取出微线程指令。
取决于方法,加速器的微线程之一可被认为是在其他微线程之前开始操作并且控制其他微线程中的一个或多个微线程的开始的主微线程。在这种情况下,微线程调度本质上由创建微线程的编译器执行(通过其制作主微线程代码)。在实施例中,指令指针被改变为指向主微线程的开始。该方法可适合于线程之间存在某些相关性的情况(即,线程不完全隔离地操作)。
在替代实施例中,例如,其中微线程彼此不具有相关性或依赖性,一组指令指针被传递到加速器,每个指令指针具有用于多个微线程(诸如有待由加速器执行的代码的所有微线程)中的一个不同微线程的对应起始地址。微线程仅例如并行地通过直接引用其对应的指令指针开始。该组指令地址可被作为通用CPU核的主线程所进行的调用的输入参数传递。在此,允许由ABI使用的单独的寄存器可用于每个不同的起始地址。在另一种方法中,如果加速器代码能够引用SIMD寄存器空间,起始地址被保持在SIMD寄存器空间内的单个向量内。
如果微线程具有某种相关性,在实施例中,微线程调度提示由主线程作为加速器调用的输入参数提供给加速器。例如,描述不同微线程的起始序列顺序的某个方面的特定输入参数可被从主线程传递到加速器硬件。加速器硬件指令取出逻辑引用该信息以便理解或确定应当在哪个周期时间启动哪些微线程。用于各个微线程的指令地址指针可由上述任何技术传递到加速器。在实施例中,编译器向主线程代码添加提示。
在实施例中,加速器返回给主线程的特定结果也以与ABI一致的方式呈现。在实施例中,加速器的主微线程将多个微线程的结果组合和/或监督为单个结果。在实施例中,在加速器产物被返回到主线程之前,通用CPU核的寄存器空间内的任何微线程上下文被切换出通用CPU核的寄存器空间,并且如果主线程的上下文在加速器操作期间被切换出主CPU核的寄存器空间,其被切换回通用CPU核的寄存器空间。这样,主线程返回其调用加速器的状态并且重新唤醒以便找到从加速器返回的结果。该结果可以是在标量寄存器空间中提供的标量或者在向量寄存器空间(例如,SIMD寄存器空间)中提供的向量。
在此,对于上述上下文切换活动中的任何活动,其中主线程或微线程上下文被切换到/切换出通用CPU核的寄存器空间,通用CPU核具有被设计成用于实现对应的上下文切换活动的对应逻辑电路。
异常、中断和违规
异常是通常由微线程本身在加速器的微线程中的一个微线程内检测到的问题。中断是位于加速器外部的事件(例如,输入新的用户命令)。
在实施例中,参照图4,在或者异常或者中断的情况下,加速器微线程暂停执行401。针对每个微线程,将加速器内部的任何状态信息外部地保存到诸如存储器(例如,调用加速器的应用的存储器空间(例如,用户栈))、加速器私有的寄存器空间或主CPU核402的寄存器空间。本质上,微线程的状态被冻结并且被保存在外部。控制返回到主线程,该主线程在其调用加速器的时刻在其状态下唤醒(栈指针可被修改以便反映附加栈使用)403。在此,在异常的情况下,加速器可返回“异常”的结果以便通知主线程需要异常处理器。在中断的情况下,通用CPU核上的另一个活跃线程可触发加速器转储其状态并唤醒主线程。
然后主线程调用处理问题的异常和/或中断处理器(例如,通过在异常的情况下引用保存在外部的微线程状态信息)404。在问题被处理之后,中断/异常处理器将微线程的保存在外部的状态恢复到加速器405内。然后,加速器的微线程从原始中断/异常点重新开始操作406。
在替代方法中,在异常的情况下,不是返回主线程以便使其调用异常处理器,而是,加速器硬件直接调用异常处理器而不唤醒主线程并且将指针传递到异常线程的所保存状态信息的位置(在此,响应于异常,再次将加速器内的微线程的内部状态信息保存在外部)。根据该方法,异常处理器直接引用异常代码并解决问题。执行随后被返回到加速器,例如不涉及主CPU线程。加速器重新调用保存在外部的微线程状态信息并重新开始操作。
在实施例中,与主线程对加速器的原始调用相关联的状态信息被保存在寄存器或存储器空间内,从而使得程序控制可从异常处理器直接传递到加速器而不涉及主线程。根据一种方法,实现IRET指令(或用于确定当从中断处理器返回时将程序流指引到何处的类似指令)的逻辑电路包括使用所保存的调用状态信息将流返回到加速器的微代码或其他电路。这样,IRET指令具有表明中断是来自加速器并且作为响应将程序流返回加速器的某种类型的输入参数。在无需表明异常是来自加速器的输入参数的情况下,IRET指令逻辑/微代码将程序流返回主CPU线程。
在其他实施例中,异常处理器可被重新设计成用于使用所保存的调用状态信息将流返回到加速器,或者异常微线程被允许实际上尽可能继续操作,就像没有异常被丢弃。在后一种方法中,无需外部地保存加速器微线程状态。当加速器最终将其结果返回到主线程时,更早的异常致使主线程调用异常处理器。当异常处理器解决问题时,加速器被从头重新调用,仿佛加速器之前尚未被调用。在此,所保存的调用的所保存的状态信息可用于重新调用加速器。
从不符合底层机器所确立的要求的代码触发违规。根据一种可能性,加速器本身可强加限制,诸如对所加速的应用回调代码的限制(例如,仅64位模式等等)。在微线程代码不符合为加速器所确立的要求的情况下,违规可被如此标记但是与异常相同或类似地处理。
在一个实施例中,异常处理器可使用其中保存微线程状态的存储区域来在非加速模式下完成原始加速操作(例如,通过通用CPU核)。在操作完成时,异常处理器将执行返回到加速器调用之后的指令。可替代地或者结合地,触发违规的指令在软件中执行(例如,通过由通用CPU核执行的指令)以便实现其操作。当其操作重新开始时,引起违规的微线程如上所述由处理器用标记来保持其状态以便将操作返回违规指令之后的下一指令。
在另一种方法中,违规对软件(例如,调用加速器的主应用软件程序)隐藏。也就是,不存在异常处理器。而是,处理器使用微代码来以对软件隐藏的方式执行以下内容:1)冷冻线程的状态,犹如异常处理器被调用(例如,将微线程状态保存在外部);以及2)不调用异常处理器,而是继续在通用CPU(例如,其支持所有指令,所以没有问题)上从冷冻点执行(例如,用微代码)。在该点,恢复可或者将执行从“更新”点切换回加速器(“未冷冻”)(由于我们执行通用CPU内的至少一个指令)或者仅仅完成通用CPU上的所有微线程的执行而不切换回加速器。这与允许软件异常处理器使用通用CPU非常不同,因为不调用软件处理器。就软件而言,系统“只是工作”而没有任何异常。
在此,通用CPU和/或加速器可具有对应的一个或多个逻辑电路以便实现上述过程中的任何过程。
以上讨论所教导的过程中的任何过程可用软件、硬件逻辑电路或其某种组合执行。相信以上讨论所教导的过程还可用各种面向对象或非面向对象的计算机编程语言源级别程序代码中描述。制品可用于存储程序代码。存储程序代码的制品可被体现为但不限于一个或多个存储器(例如,一个或多个闪存、随机存取存储器(静态、动态或其他))、光盘、CD-ROM、DVD ROM、EPROM、EEPROM、磁卡或光卡或适合存储电子指令的其他类型的机器可读介质。还可通过体现在传播介质中的数据信号将程序代码从远程计算机(例如,服务器)下载到请求计算机(例如,客户端)(例如,经由通信链路(例如,网络连接))。
在前述说明书中,已经参照其特定示例性实施例描述了本发明。然而,将明显的是可对其作出各种修改和改变而不背离在所附权利要求书中陈述的本发明的更宽泛的精神和范围。因此,将以说明性而不是限制性的意义对待说明书和附图。
Claims (24)
1.一种处理器,包括:
通用CPU核的逻辑电路,所述逻辑电路用于保存所述通用CPU核的线程的上下文的多个副本以便使多线程加速器的多个微线程准备好执行从而通过所述微线程的并行执行来加速用于所述线程的操作。
2.如权利要求1所述的处理器,其中,所述通用CPU进一步包括用于通过所述通用CPU的应用二进制接口(ABI)所标识的一组寄存器从所述线程调用所述加速器的逻辑电路,所述应用二进制接口指定在所述通用CPU上一个例程对另一个例程的调用的语义。
3.如权利要求1所述的处理器,其中,所述多个副本被保存到所述CPU核的执行所述线程的指令执行流水线的寄存器空间。
4.如权利要求1所述的处理器,其中,所述通用CPU进一步包括用于将所述线程的上下文切换出所述线程运行所在的所述通用CPU的指令执行流水线的寄存器空间从而使得当所述加速器正在加速用于所述线程的操作时所述线程的上下文未在消耗所述指令执行流水线的寄存器空间的逻辑电路。
5.如权利要求1所述的处理器,其中,所述加速器包括用于从通过所述线程对所述加速器的调用提供的提示理解和/或确定所述微线程的启动序列的逻辑电路。
6.如权利要求1所述的处理器,其中,所述加速器包括用于响应于异常或中断在所述加速器的操作期间冷冻并保存所述微线程的状态信息的逻辑电路。
7.如权利要求6所述的处理器,其中,所述处理器包括用于从所述冷冻点重新调用所述加速器的逻辑电路。
8.如权利要求6所述的处理器,其中,所述加速器包括用于调用异常处理器而不唤醒所述线程的逻辑电路。
9.如权利要求1所述的处理器,其中,所述微线程中的任何微线程对所述线程的上下文进行的改变对所述线程的调用应用隐藏。
10.一种方法,包括:
保存通用CPU核的线程的多个副本;
调用加速器来加速所述通用CPU核的线程的操作;
并行执行所述加速器的多个微线程,每个多微线程被提供有所述副本中的一个对应的副本。
11.如权利要求10所述的方法,进一步包括所述线程通过所述通用CPU的指定在所述通用CPU上一个例程对另一个例程的调用的语义的应用二进制接口(ABI)所标识的一组寄存器调用所述加速器。
12.如权利要求10所述的方法,其中,所述多个副本被保存到所述CPU核的执行所述线程的指令执行流水线的寄存器空间。
13.如权利要求10所述的方法,进一步包括将所述线程的上下文切换出所述线程运行所在的所述通用CPU核的指令执行流水线的寄存器空间,从而使得当所述微线程正在执行时所述线程的上下文未在消耗所述寄存器空间。
14.如权利要求10所述的方法,进一步包括所述加速器从通过所述线程对所述加速器的调用提供的提示,理解和/或确定所述微线程的启动序列。
15.如权利要求10所述的方法,进一步包括所述加速器响应于异常或中断在所述加速器的操作期间冷冻并保存所述微线程的状态信息。
16.如权利要求15所述的方法,进一步包括从所述冷冻点重新调用所述加速器。
17.一种包含程序代码的机器可读存储介质,当被计算系统的处理器处理时,所述程序代码致使执行方法,所述方法包括:
保存通用CPU核的线程的多个副本;
调用加速器来加速所述通用CPU的线程的操作;
并行执行所述加速器的多个微线程,每个多微线程被提供有所述副本中的一个对应的副本。
18.如权利要求15所述的机器可读存储介质,其中,所述方法进一步包括所述线程通过所述通用CPU的指定在所述通用CPU上一个例程对另一个例程的调用的语义的应用二进制接口(ABI)所标识的一组寄存器调用所述加速器。
19.如权利要求15所述的机器可读存储介质,其中,所述方法进一步包括将所述线程的上下文切换出所述线程运行所在的所述通用CPU核的指令执行流水线的寄存器空间,从而使得当所述微线程正在执行时所述线程的上下文未在消耗所述寄存器空间。
20.如权利要求15所述的机器可读存储介质,其中,所述方法进一步包括通过所述线程对所述加速器的调用提供有关所述微线程的启动序列的信息。
21.如权利要求15所述的机器可读存储介质,其中,所述方法进一步包括响应于异常或中断在所述加速器的操作期间冷冻并保存所述微线程的状态信息。
22.如权利要求19所述的机器可读存储介质,其中,所述方法进一步包括从所述冷冻点重新调用所述加速器。
23.一种处理器,包括:
耦合到加速器的通用CPU核,所述加速器具有用于执行多个微线程以便加速所述通用CPU核的进程的多个执行单元,所述加速器还具有用于响应于异常或中断在所述加速器的操作期间冷冻并保存所述微线程的状态信息的逻辑电路。
24.一种方法,包括:
通过在通用CPU中执行致使微线程加速器的微线程代码的违规的指令,对所述违规做出响应,从而使得所述违规对在主CPU上运行的应用软件程序不可见。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/730,971 US10346195B2 (en) | 2012-12-29 | 2012-12-29 | Apparatus and method for invocation of a multi threaded accelerator |
US13/730,971 | 2012-12-29 | ||
PCT/US2013/048339 WO2014105196A1 (en) | 2012-12-29 | 2013-06-27 | Apparatus and method for invocation of a multi threaded accelerator |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104937541A true CN104937541A (zh) | 2015-09-23 |
CN104937541B CN104937541B (zh) | 2018-12-18 |
Family
ID=51018921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380062688.XA Expired - Fee Related CN104937541B (zh) | 2012-12-29 | 2013-06-27 | 用于调用多线程加速器的装置和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10346195B2 (zh) |
CN (1) | CN104937541B (zh) |
WO (1) | WO2014105196A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106066786A (zh) * | 2016-05-26 | 2016-11-02 | 上海兆芯集成电路有限公司 | 处理器以及处理器操作方法 |
CN109308215A (zh) * | 2017-07-28 | 2019-02-05 | 广联达科技股份有限公司 | 一种基于纤程的交互方法、交互系统及计算机装置 |
CN111258650A (zh) * | 2019-02-20 | 2020-06-09 | 上海天数智芯半导体有限公司 | 用于加速延迟敏感算法的恒定标量寄存器架构 |
CN116010116A (zh) * | 2023-03-28 | 2023-04-25 | 广东广宇科技发展有限公司 | 一种基于云计算的多线程数据处理方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10031773B2 (en) * | 2014-02-20 | 2018-07-24 | Nxp Usa, Inc. | Method to communicate task context information and device therefor |
US9747108B2 (en) | 2015-03-27 | 2017-08-29 | Intel Corporation | User-level fork and join processors, methods, systems, and instructions |
EP3136645A1 (en) * | 2015-08-27 | 2017-03-01 | Gemalto Sa | Mixed hardware and software instructions for cryptographic functionalities implementation |
US9977677B2 (en) * | 2016-04-07 | 2018-05-22 | International Business Machines Corporation | Execution slice with supplemental instruction port for an instruction using a source operand from another instruction port |
US9703603B1 (en) * | 2016-04-25 | 2017-07-11 | Nxp Usa, Inc. | System and method for executing accelerator call |
US20200334076A1 (en) * | 2019-04-19 | 2020-10-22 | Nvidia Corporation | Deep learning thread communication |
US11468001B1 (en) * | 2021-03-30 | 2022-10-11 | Advanced Micro Devices, Inc. | Processing-in-memory concurrent processing system and method |
US11663009B2 (en) * | 2021-10-14 | 2023-05-30 | International Business Machines Corporation | Supporting large-word operations in a reduced instruction set computer (“RISC”) processor |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6742104B2 (en) * | 2000-08-21 | 2004-05-25 | Texas Instruments Incorporated | Master/slave processing system with shared translation lookaside buffer |
CN1608246A (zh) * | 2001-12-31 | 2005-04-20 | 英特尔公司 | 多线程处理器中对线程执行的挂起 |
US20050149937A1 (en) * | 2003-12-19 | 2005-07-07 | Stmicroelectronics, Inc. | Accelerator for multi-processing system and method |
US20120239904A1 (en) * | 2011-03-15 | 2012-09-20 | International Business Machines Corporation | Seamless interface for multi-threaded core accelerators |
Family Cites Families (128)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4943915A (en) | 1987-09-29 | 1990-07-24 | Digital Equipment Corporation | Apparatus and method for synchronization of a coprocessor unit in a pipelined central processing unit |
US4982402A (en) | 1989-02-03 | 1991-01-01 | Digital Equipment Corporation | Method and apparatus for detecting and correcting errors in a pipelined computer system |
US5276798A (en) | 1990-09-14 | 1994-01-04 | Hughes Aircraft Company | Multifunction high performance graphics rendering processor |
CA2050658C (en) | 1990-09-14 | 1997-01-28 | John M. Peaslee | Dual hardware channels and hardware context switching in a graphics rendering processor |
US5329615A (en) | 1990-09-14 | 1994-07-12 | Hughes Aircraft Company | Concurrent general purpose and DMA processing in a graphics rendering processor |
US5444853A (en) | 1992-03-31 | 1995-08-22 | Seiko Epson Corporation | System and method for transferring data between a plurality of virtual FIFO's and a peripheral via a hardware FIFO and selectively updating control information associated with the virtual FIFO's |
US5423025A (en) | 1992-09-29 | 1995-06-06 | Amdahl Corporation | Error handling mechanism for a controller having a plurality of servers |
US5430841A (en) | 1992-10-29 | 1995-07-04 | International Business Machines Corporation | Context management in a graphics system |
JPH07219774A (ja) | 1994-02-07 | 1995-08-18 | Fujitsu Ltd | データ処理装置および例外処理方法 |
US5550988A (en) | 1994-03-01 | 1996-08-27 | Intel Corporation | Apparatus and method for performing error correction in a multi-processor system |
US6341324B1 (en) | 1995-10-06 | 2002-01-22 | Lsi Logic Corporation | Exception processing in superscalar microprocessor |
US5778211A (en) | 1996-02-15 | 1998-07-07 | Sun Microsystems, Inc. | Emulating a delayed exception on a digital computer having a corresponding precise exception mechanism |
US6061711A (en) | 1996-08-19 | 2000-05-09 | Samsung Electronics, Inc. | Efficient context saving and restoring in a multi-tasking computing system environment |
KR100500002B1 (ko) | 1996-08-27 | 2005-09-08 | 마츠시타 덴끼 산교 가부시키가이샤 | 복수의명령흐름을독립적으로처리하고,명령흐름단위로처리성능을유연하게제어하는멀티스레드프로세서 |
US6148326A (en) | 1996-09-30 | 2000-11-14 | Lsi Logic Corporation | Method and structure for independent disk and host transfer in a storage subsystem target device |
US6247040B1 (en) | 1996-09-30 | 2001-06-12 | Lsi Logic Corporation | Method and structure for automated switching between multiple contexts in a storage subsystem target device |
US6081849A (en) | 1996-10-01 | 2000-06-27 | Lsi Logic Corporation | Method and structure for switching multiple contexts in storage subsystem target device |
US6275497B1 (en) | 1997-02-10 | 2001-08-14 | Hybrid Networks, Inc. | Method and apparatus for controlling communication channels using contention and polling schemes |
US6075546A (en) | 1997-11-10 | 2000-06-13 | Silicon Grahphics, Inc. | Packetized command interface to graphics processor |
US6397240B1 (en) | 1999-02-18 | 2002-05-28 | Agere Systems Guardian Corp. | Programmable accelerator for a programmable processor system |
GB2352066B (en) | 1999-07-14 | 2003-11-05 | Element 14 Ltd | An instruction set for a computer |
US6543026B1 (en) | 1999-09-10 | 2003-04-01 | Lsi Logic Corporation | Forward error correction apparatus and methods |
JP3621315B2 (ja) | 1999-11-22 | 2005-02-16 | Necエレクトロニクス株式会社 | マイクロプロセッサシステム |
US6691143B2 (en) | 2000-05-11 | 2004-02-10 | Cyberguard Corporation | Accelerated montgomery multiplication using plural multipliers |
EP1182568A3 (en) | 2000-08-21 | 2004-07-21 | Texas Instruments Incorporated | TLB operation based on task-id |
EP1182569B8 (en) | 2000-08-21 | 2011-07-06 | Texas Instruments Incorporated | TLB lock and unlock operation |
JP3729087B2 (ja) | 2001-05-23 | 2005-12-21 | 日本電気株式会社 | マルチプロセッサシステム、データ依存投機実行制御装置およびその方法 |
JP2003015900A (ja) | 2001-06-28 | 2003-01-17 | Hitachi Ltd | 追走型多重化システム、及び追走により信頼性を高めるデータ処理方法 |
US20030028751A1 (en) | 2001-08-03 | 2003-02-06 | Mcdonald Robert G. | Modular accelerator framework |
US7248585B2 (en) | 2001-10-22 | 2007-07-24 | Sun Microsystems, Inc. | Method and apparatus for a packet classifier |
US7228401B2 (en) * | 2001-11-13 | 2007-06-05 | Freescale Semiconductor, Inc. | Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor |
US20030135718A1 (en) | 2002-01-14 | 2003-07-17 | International Business Machines Corporation | Method and system using hardware assistance for instruction tracing by revealing executed opcode or instruction |
US20030135719A1 (en) | 2002-01-14 | 2003-07-17 | International Business Machines Corporation | Method and system using hardware assistance for tracing instruction disposition information |
US7313734B2 (en) | 2002-01-14 | 2007-12-25 | International Business Machines Corporation | Method and system for instruction tracing with enhanced interrupt avoidance |
US20040215444A1 (en) | 2002-03-25 | 2004-10-28 | Patel Mukesh K. | Hardware-translator-based custom method invocation system and method |
US6944746B2 (en) | 2002-04-01 | 2005-09-13 | Broadcom Corporation | RISC processor supporting one or more uninterruptible co-processors |
US7200735B2 (en) | 2002-04-10 | 2007-04-03 | Tensilica, Inc. | High-performance hybrid processor with configurable execution units |
GB2388447B (en) | 2002-05-09 | 2005-07-27 | Sun Microsystems Inc | A computer system method and program product for performing a data access from low-level code |
US6952214B2 (en) | 2002-07-12 | 2005-10-04 | Sun Microsystems, Inc. | Method for context switching a graphics accelerator comprising multiple rendering pipelines |
US7313797B2 (en) | 2002-09-18 | 2007-12-25 | Wind River Systems, Inc. | Uniprocessor operating system design facilitating fast context switching |
US20040111594A1 (en) | 2002-12-05 | 2004-06-10 | International Business Machines Corporation | Multithreading recycle and dispatch mechanism |
US7673304B2 (en) | 2003-02-18 | 2010-03-02 | Microsoft Corporation | Multithreaded kernel for graphics processing unit |
US7079147B2 (en) | 2003-05-14 | 2006-07-18 | Lsi Logic Corporation | System and method for cooperative operation of a processor and coprocessor |
US7714870B2 (en) | 2003-06-23 | 2010-05-11 | Intel Corporation | Apparatus and method for selectable hardware accelerators in a data driven architecture |
US7082508B2 (en) | 2003-06-24 | 2006-07-25 | Intel Corporation | Dynamic TLB locking based on page usage metric |
US7765388B2 (en) | 2003-09-17 | 2010-07-27 | Broadcom Corporation | Interrupt verification support mechanism |
US7302627B1 (en) | 2004-04-05 | 2007-11-27 | Mimar Tibet | Apparatus for efficient LFSR calculation in a SIMD processor |
US20050257186A1 (en) | 2004-05-13 | 2005-11-17 | Michael Zilbershlag | Operation system for programmable hardware |
US7370243B1 (en) | 2004-06-30 | 2008-05-06 | Sun Microsystems, Inc. | Precise error handling in a fine grain multithreaded multicore processor |
US8190863B2 (en) | 2004-07-02 | 2012-05-29 | Intel Corporation | Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction |
US7388588B2 (en) | 2004-09-09 | 2008-06-17 | International Business Machines Corporation | Programmable graphics processing engine |
US7437581B2 (en) | 2004-09-28 | 2008-10-14 | Intel Corporation | Method and apparatus for varying energy per instruction according to the amount of available parallelism |
US8073974B2 (en) | 2004-10-01 | 2011-12-06 | Lockheed Martin Corporation | Object oriented mission framework and system and method |
US7350055B2 (en) * | 2004-10-20 | 2008-03-25 | Arm Limited | Tightly coupled accelerator |
US7598958B1 (en) | 2004-11-17 | 2009-10-06 | Nvidia Corporation | Multi-chip graphics processing unit apparatus, system, and method |
US8788787B2 (en) | 2005-03-02 | 2014-07-22 | The Boeing Company | Systems, methods and architecture for facilitating software access to acceleration technology |
US20060288193A1 (en) | 2005-06-03 | 2006-12-21 | Silicon Integrated System Corp. | Register-collecting mechanism for multi-threaded processors and method using the same |
US7426626B2 (en) | 2005-08-23 | 2008-09-16 | Qualcomm Incorporated | TLB lock indicator |
US7545381B2 (en) | 2005-11-10 | 2009-06-09 | Via Technologies, Inc. | Interruptible GPU and method for context saving and restoring |
US7583268B2 (en) | 2005-11-10 | 2009-09-01 | Via Technologies, Inc. | Graphics pipeline precise interrupt method and apparatus |
US8212824B1 (en) | 2005-12-19 | 2012-07-03 | Nvidia Corporation | Apparatus and method for serial save and restore of graphics processing unit state information |
US7725624B2 (en) | 2005-12-30 | 2010-05-25 | Intel Corporation | System and method for cryptography processing units and multiplier |
US7509481B2 (en) | 2006-03-03 | 2009-03-24 | Sun Microsystems, Inc. | Patchable and/or programmable pre-decode |
US7480838B1 (en) | 2006-03-23 | 2009-01-20 | Intel Corporation | Method, system and apparatus for detecting and recovering from timing errors |
US7746350B1 (en) | 2006-06-15 | 2010-06-29 | Nvidia Corporation | Cryptographic computations on general purpose graphics processing units |
US7487341B2 (en) * | 2006-06-29 | 2009-02-03 | Intel Corporation | Handling address translations and exceptions of a heterogeneous resource of a processor using another processor resource |
US8959311B2 (en) | 2006-08-25 | 2015-02-17 | Texas Instruments Incorporated | Methods and systems involving secure RAM |
US9478062B2 (en) | 2006-09-19 | 2016-10-25 | Imagination Technologies Limited | Memory allocation in distributed memories for multiprocessing |
US7949887B2 (en) | 2006-11-01 | 2011-05-24 | Intel Corporation | Independent power control of processing cores |
US8127113B1 (en) | 2006-12-01 | 2012-02-28 | Synopsys, Inc. | Generating hardware accelerators and processor offloads |
US7827383B2 (en) | 2007-03-09 | 2010-11-02 | Oracle America, Inc. | Efficient on-chip accelerator interfaces to reduce software overhead |
US7937568B2 (en) | 2007-07-11 | 2011-05-03 | International Business Machines Corporation | Adaptive execution cycle control method for enhanced instruction throughput |
US7743232B2 (en) | 2007-07-18 | 2010-06-22 | Advanced Micro Devices, Inc. | Multiple-core processor with hierarchical microcode store |
US8345052B1 (en) | 2007-11-08 | 2013-01-01 | Nvidia Corporation | Method and system for using a GPU frame buffer in a multi-GPU system as cache memory |
US8339404B2 (en) | 2007-11-29 | 2012-12-25 | Accelereyes, Llc | System for improving utilization of GPU resources |
US8140823B2 (en) | 2007-12-03 | 2012-03-20 | Qualcomm Incorporated | Multithreaded processor with lock indicator |
GB2455344B (en) | 2007-12-06 | 2012-06-13 | Advanced Risc Mach Ltd | Recovering from control path errors |
US7865675B2 (en) | 2007-12-06 | 2011-01-04 | Arm Limited | Controlling cleaning of data values within a hardware accelerator |
US8780123B2 (en) | 2007-12-17 | 2014-07-15 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US7793080B2 (en) | 2007-12-31 | 2010-09-07 | Globalfoundries Inc. | Processing pipeline having parallel dispatch and method thereof |
US7877582B2 (en) * | 2008-01-31 | 2011-01-25 | International Business Machines Corporation | Multi-addressable register file |
US8055872B2 (en) * | 2008-02-21 | 2011-11-08 | Arm Limited | Data processor with hardware accelerator, accelerator interface and shared memory management unit |
US8776077B2 (en) | 2008-04-02 | 2014-07-08 | Oracle America, Inc. | Method for multithreading an application using partitioning to allocate work to threads |
US8776030B2 (en) | 2008-04-09 | 2014-07-08 | Nvidia Corporation | Partitioning CUDA code for execution by a general purpose processor |
US8141102B2 (en) | 2008-09-04 | 2012-03-20 | International Business Machines Corporation | Data processing in a hybrid computing environment |
US8230442B2 (en) | 2008-09-05 | 2012-07-24 | International Business Machines Corporation | Executing an accelerator application program in a hybrid computing environment |
US8082426B2 (en) | 2008-11-06 | 2011-12-20 | Via Technologies, Inc. | Support of a plurality of graphic processing units |
US20100274972A1 (en) | 2008-11-24 | 2010-10-28 | Boris Babayan | Systems, methods, and apparatuses for parallel computing |
US7930519B2 (en) | 2008-12-17 | 2011-04-19 | Advanced Micro Devices, Inc. | Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit |
US8281185B2 (en) | 2009-06-30 | 2012-10-02 | Oracle America, Inc. | Advice-based feedback for transactional execution |
US20110040924A1 (en) | 2009-08-11 | 2011-02-17 | Selinger Robert D | Controller and Method for Detecting a Transmission Error Over a NAND Interface Using Error Detection Code |
US8458677B2 (en) * | 2009-08-20 | 2013-06-04 | International Business Machines Corporation | Generating code adapted for interlinking legacy scalar code and extended vector code |
US8719547B2 (en) | 2009-09-18 | 2014-05-06 | Intel Corporation | Providing hardware support for shared virtual memory between local and remote physical memory |
US8405666B2 (en) | 2009-10-08 | 2013-03-26 | Advanced Micro Devices, Inc. | Saving, transferring and recreating GPU context information across heterogeneous GPUs during hot migration of a virtual machine |
US8244946B2 (en) | 2009-10-16 | 2012-08-14 | Brocade Communications Systems, Inc. | Interrupt moderation |
US8095824B2 (en) | 2009-12-15 | 2012-01-10 | Intel Corporation | Performing mode switching in an unbounded transactional memory (UTM) system |
US8316194B2 (en) | 2009-12-15 | 2012-11-20 | Intel Corporation | Mechanisms to accelerate transactions using buffered stores |
US8166437B2 (en) | 2009-12-15 | 2012-04-24 | Apple Inc. | Automated pad ring generation for programmable logic device implementation of integrated circuit design |
US8970608B2 (en) | 2010-04-05 | 2015-03-03 | Nvidia Corporation | State objects for specifying dynamic state |
US9015443B2 (en) | 2010-04-30 | 2015-04-21 | International Business Machines Corporation | Reducing remote reads of memory in a hybrid computing environment |
JP4818450B1 (ja) | 2010-06-30 | 2011-11-16 | 株式会社東芝 | グラフィクスプロセッシングユニットおよび情報処理装置 |
US20120023314A1 (en) | 2010-07-21 | 2012-01-26 | Crum Matthew M | Paired execution scheduling of dependent micro-operations |
US8667253B2 (en) * | 2010-08-04 | 2014-03-04 | International Business Machines Corporation | Initiating assist thread upon asynchronous event for processing simultaneously with controlling thread and updating its running status in status register |
US9552206B2 (en) | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
EP2458510B1 (en) | 2010-11-29 | 2014-05-07 | NTT DoCoMo, Inc. | Method and apparatus for performing a cross-correlation |
US20120159090A1 (en) | 2010-12-16 | 2012-06-21 | Microsoft Corporation | Scalable multimedia computer system architecture with qos guarantees |
US20120166777A1 (en) | 2010-12-22 | 2012-06-28 | Advanced Micro Devices, Inc. | Method and apparatus for switching threads |
CN102567556A (zh) | 2010-12-27 | 2012-07-11 | 北京国睿中数科技股份有限公司 | 一种面向调试的处理器验证方法及验证设备 |
CN102270166A (zh) | 2011-02-22 | 2011-12-07 | 清华大学 | 基于模拟器的处理器故障注入及跟踪方法及模拟器 |
US8892924B2 (en) | 2011-05-31 | 2014-11-18 | Intel Corporation | Reducing power consumption of uncore circuitry of a processor |
US8793515B2 (en) | 2011-06-27 | 2014-07-29 | Intel Corporation | Increasing power efficiency of turbo mode operation in a processor |
US9003102B2 (en) | 2011-08-26 | 2015-04-07 | Sandisk Technologies Inc. | Controller with extended status register and method of use therewith |
SG11201402727WA (en) | 2011-12-01 | 2014-06-27 | Univ Singapore | Polymorphic heterogeneous multi-core architecture |
US20130159630A1 (en) | 2011-12-20 | 2013-06-20 | Ati Technologies Ulc | Selective cache for inter-operations in a processor-based environment |
US9436512B2 (en) | 2011-12-22 | 2016-09-06 | Board Of Supervisors Of Louisana State University And Agricultural And Mechanical College | Energy efficient job scheduling in heterogeneous chip multiprocessors based on dynamic program behavior using prim model |
US9268596B2 (en) | 2012-02-02 | 2016-02-23 | Intel Corparation | Instruction and logic to test transactional execution status |
US9396020B2 (en) | 2012-03-30 | 2016-07-19 | Intel Corporation | Context switching mechanism for a processing core having a general purpose CPU core and a tightly coupled accelerator |
CN104204990B (zh) | 2012-03-30 | 2018-04-10 | 英特尔公司 | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 |
US20130332937A1 (en) | 2012-05-29 | 2013-12-12 | Advanced Micro Devices, Inc. | Heterogeneous Parallel Primitives Programming Model |
US9753778B2 (en) | 2012-07-20 | 2017-09-05 | Microsoft Technology Licensing, Llc | Domain-agnostic resource allocation framework |
US9123128B2 (en) | 2012-12-21 | 2015-09-01 | Nvidia Corporation | Graphics processing unit employing a standard processing unit and a method of constructing a graphics processing unit |
US9053025B2 (en) | 2012-12-28 | 2015-06-09 | Intel Corporation | Apparatus and method for fast failure handling of instructions |
US9361116B2 (en) | 2012-12-28 | 2016-06-07 | Intel Corporation | Apparatus and method for low-latency invocation of accelerators |
US20140189333A1 (en) | 2012-12-28 | 2014-07-03 | Oren Ben-Kiki | Apparatus and method for task-switchable synchronous hardware accelerators |
US9417873B2 (en) | 2012-12-28 | 2016-08-16 | Intel Corporation | Apparatus and method for a hybrid latency-throughput processor |
US9086813B2 (en) | 2013-03-15 | 2015-07-21 | Qualcomm Incorporated | Method and apparatus to save and restore system memory management unit (MMU) contexts |
US10031770B2 (en) | 2014-04-30 | 2018-07-24 | Intel Corporation | System and method of delayed context switching in processor registers |
US9703603B1 (en) | 2016-04-25 | 2017-07-11 | Nxp Usa, Inc. | System and method for executing accelerator call |
-
2012
- 2012-12-29 US US13/730,971 patent/US10346195B2/en active Active
-
2013
- 2013-06-27 WO PCT/US2013/048339 patent/WO2014105196A1/en active Application Filing
- 2013-06-27 CN CN201380062688.XA patent/CN104937541B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6742104B2 (en) * | 2000-08-21 | 2004-05-25 | Texas Instruments Incorporated | Master/slave processing system with shared translation lookaside buffer |
CN1608246A (zh) * | 2001-12-31 | 2005-04-20 | 英特尔公司 | 多线程处理器中对线程执行的挂起 |
US20050149937A1 (en) * | 2003-12-19 | 2005-07-07 | Stmicroelectronics, Inc. | Accelerator for multi-processing system and method |
US20120239904A1 (en) * | 2011-03-15 | 2012-09-20 | International Business Machines Corporation | Seamless interface for multi-threaded core accelerators |
Non-Patent Citations (2)
Title |
---|
JAROSLAV SYKORA ET AL: "Microthreading as a Novel Method for Close Coupling of Custom Hardware Accelerators to SVP Processors", 《IEEE》 * |
TONG LI ET AL: "Operating System Support for Overlapping-ISA Heterogeneous Multi-core Architectures", 《IEEE》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106066786A (zh) * | 2016-05-26 | 2016-11-02 | 上海兆芯集成电路有限公司 | 处理器以及处理器操作方法 |
CN109308215A (zh) * | 2017-07-28 | 2019-02-05 | 广联达科技股份有限公司 | 一种基于纤程的交互方法、交互系统及计算机装置 |
CN111258650A (zh) * | 2019-02-20 | 2020-06-09 | 上海天数智芯半导体有限公司 | 用于加速延迟敏感算法的恒定标量寄存器架构 |
CN116010116A (zh) * | 2023-03-28 | 2023-04-25 | 广东广宇科技发展有限公司 | 一种基于云计算的多线程数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2014105196A1 (en) | 2014-07-03 |
US10346195B2 (en) | 2019-07-09 |
US20140189713A1 (en) | 2014-07-03 |
CN104937541B (zh) | 2018-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104937541A (zh) | 用于调用多线程加速器的装置和方法 | |
US11853763B2 (en) | Backward compatibility by restriction of hardware resources | |
US10120691B2 (en) | Context switching mechanism for a processor having a general purpose core and a tightly coupled accelerator | |
US8156307B2 (en) | Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set | |
Maruyama et al. | Sparc64 VIIIfx: A new-generation octocore processor for petascale computing | |
JP6837011B2 (ja) | アルゴリズム整合、機能無効化、または性能制限による後方互換性 | |
US9830158B2 (en) | Speculative execution and rollback | |
US9830156B2 (en) | Temporal SIMT execution optimization through elimination of redundant operations | |
US8122229B2 (en) | Dispatch mechanism for dispatching instructions from a host processor to a co-processor | |
US20080250227A1 (en) | General Purpose Multiprocessor Programming Apparatus And Method | |
US9600288B1 (en) | Result bypass cache | |
Keckler et al. | Concurrent event handling through multithreading | |
JPH07244589A (ja) | 述語、及びブール式を解くためのコンピュータ・システム、及び方法 | |
WO2002057908A2 (en) | A superscalar processor having content addressable memory structures for determining dependencies | |
US10146736B2 (en) | Presenting pipelines of multicore processors as separate processor cores to a programming framework | |
US9836323B1 (en) | Scalable hypervisor scheduling of polling tasks | |
US11422812B2 (en) | Method and apparatus for efficient programmable instructions in computer systems | |
US10620958B1 (en) | Crossbar between clients and a cache | |
Wang et al. | Central Processing Unit | |
Zmeev et al. | Features of the Architecture Implementing the Dataflow Computational Model and Its Application in the Creation of Microelectronic High-Performance Computing Systems | |
Du et al. | Breaking the interaction wall: A DLPU-centric deep learning computing system | |
KR102644951B1 (ko) | 산술 논리 장치 레지스터 시퀀싱 | |
US11630667B2 (en) | Dedicated vector sub-processor system | |
Omondi | Ideas for the design of multithreaded pipelines | |
Iannucci et al. | A Dataflow/von Neumann Hybrid |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181218 |
|
CF01 | Termination of patent right due to non-payment of annual fee |