CN104205042B - 用于具有通用cpu核心和紧密耦合的加速器的处理核心的上下文切换机制 - Google Patents
用于具有通用cpu核心和紧密耦合的加速器的处理核心的上下文切换机制 Download PDFInfo
- Publication number
- CN104205042B CN104205042B CN201280072154.0A CN201280072154A CN104205042B CN 104205042 B CN104205042 B CN 104205042B CN 201280072154 A CN201280072154 A CN 201280072154A CN 104205042 B CN104205042 B CN 104205042B
- Authority
- CN
- China
- Prior art keywords
- accelerator
- thread
- processor
- core
- instruction
- 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
- 238000012545 processing Methods 0.000 title description 17
- 230000007246 mechanism Effects 0.000 title description 6
- 238000003860 storage Methods 0.000 claims description 57
- 239000013598 vector Substances 0.000 claims description 29
- 238000000034 method Methods 0.000 claims description 26
- 230000004044 response Effects 0.000 claims description 7
- 230000001133 acceleration Effects 0.000 claims description 5
- 238000009826 distribution Methods 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000004321 preservation Methods 0.000 claims description 2
- 230000003213 activating effect Effects 0.000 claims 2
- 230000008569 process Effects 0.000 description 11
- 230000000694 effects Effects 0.000 description 9
- 238000013461 design Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000006854 communication Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000014616 translation Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 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 4
- 239000004065 semiconductor Substances 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000002779 inactivation Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 239000011800 void material Substances 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/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
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
- G06F9/3881—Arrangements for communication of instructions and data
-
- 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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
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)
- Mathematical Physics (AREA)
- Advance Control (AREA)
Abstract
描述具有多个核心的装置,每一核心具有:a)加速器;以及b)耦合到加速器的通用CPU。该通用CPU具有功能单元逻辑电路,用于执行返回用于存储加速器的上下文信息的存储空间量的指令。
Description
发明领域
本发明的领域通常涉及计算***设计,且尤其涉及用于具有通用CPU核心和紧密耦合的加速器的处理核心的上下文切换机制。
背景
协处理器的常规集成
随着半导体制造工艺达到接近每个管芯1万亿个晶体管的时代,设计工程师面临着如何最有效地利用使用所有可用晶体管的问题。一种设计方法在管芯上用专用硬件“加速”以及一个或多个通用CPU核心实现特定计算密集功能。
借助于被设计为执行特定计算密集功能的专用逻辑块,实现了加速。把密集计算迁移到这样的专用逻辑块使得(各)CPU核心免于执行大量的指令,由此增加了CPU核心的效能和效率。
尽管本领域中已知以协处理器(例如图形协处理器))的形式的“加速”,但这样的传统协处理器被OS看作是外置于OS在其上运行的(各)CPU核心的独立“设备”(在较大的计算***内)。因此通过专用的设备驱动程序软件访问这些协处理器,且这些协处理器不在与CPU核心相同的存储器空间外操作。因而,传统的协处理器不共享或期待在CPU核心上实现的虚拟地址-物理地址转换方案。
此外,在由OS把任务卸载到传统的协处理器时,遭遇大的等待时间。具体地,当CPU核心和传统的协处理器本质上对应于分离的、隔离的子***时,在把GPP核心上的主OS中的定义的任务传送给协处理器的“内核”软件时,耗费大量的通信资源。这样的大等待时间有利于这样的***设计:从主OS在协处理器上调用相对少见的任务,但每个任务具有大的关联数据块。实际上,主要以粗粒度方式而非细粒度方式使用传统的协处理器。
随着当前的***设计者对以细粒度的使用方式把更多加速引入到计算***感兴趣,用于在计算***中集成加速的新范式是必要的。
CPUID/XSAVE/XRSTORE指令和XCR0寄存器
当前由英特尔公司提供的指令集架构(ISA)支持允许、外部保存和再次存储对ISA的传统指令集的特定硬件支持的“扩展”的状态的机制。具体地,根据一种实现,带有3种操作数指令格式(AVX)的ISA的浮点数指令(x87)、128位向量指令(SSE)和256位向量指令均被看作是对ISA的传统指令集(x86)的独立“扩展”。
可以由软件写入内置于处理器的控制寄存器XCR0,以便启用这些扩展中的任何一种或多种。具体地,XCR0寄存器为三种扩展中的每一种维护一个比特(即,x87位、SSE位和AVX位)。软件(例如,操作***(OS))准许软件根据其自己的意图个别地设置各种比特以便个别地启用x87/SSE/AVX扩展。XCR0寄存器被认为是具有附加的、当前未定义的比特位置,以使得将来可以添加附加的扩展并相应地启用/禁用。
已经在ISA中实现了CPUID指令,软件可以使用CPUID指令来判断外部存储已启用的扩展的状态信息需要多少存储器空间。例如,带有各种输入操作数值,CPUID指令可以由软件执行以判断:i)存储所有已启用的扩展的所有状态信息所需要的存储器空间的总量;ii)存储已启用的扩展中的任何具体一个的所有状态信息所需要的存储器空间的总量。因而,例如,如果启用了x87和SSE扩展,则CPUID指令可以用来确定:i)存储x87和SSE扩展的所有状态信息所需要的存储器空间的总量;ii)仅存储x87扩展的所有状态信息所需要的存储器空间的总量;以及,iii)仅存储SSE扩展的所有状态信息所需要的存储器空间的总量。
在这里,由于扩展的状态信息主要对应于该扩展的关联数据寄存器(即,x87扩展的浮点寄存器、SSE扩展的128位寄存器、AVX扩展的256位寄存器)中所存储的信息,CPU硬件知道“多大”寄存器空间用于其扩展中的每一种且可以容易地作为CPUID指令的结果提供/返回这样的信息。
因而,在典型的情况中,软件将执行CPUID指令以便理解需要为它已经启用的各种扩展的状态信息分配多少存储器空间,然后,进行到分配这样的存储器空间。
由软件调用XSTORE指令,以便外部地保存任何/所有启用的扩展的状态信息。在这里,把其中保存状态信息的存储器地址作为输入值提供给指令,且处理器核心引起把(各)扩展的状态信息写入到该地址处的***存储器。在XSTORE指令的任何具体执行中,不是所有已启用的扩展都可以保存它们的状态信息。执行XSTORE指令所利用的、其比特位置基本上对应于XCR0寄存器中的那些位置的掩码寄存器,被用来有选择地指定通过XSTORE指令把哪些经启用扩展的状态信息存储起来。外部存储的信息也包括对应于掩码寄存器信息的XSTATE_BV向量字段。即是说,XSTATE_BV向量字段指示哪些扩展已经把它们的状态信息外部存储在存储器中。
XRSTOR指令对应于XSTORE指令的逻辑逆。在XRSTOR指令的情况下,指令的输入值指定把(各)扩展的状态信息存储在***存储器中的何处。该指令的执行引起处理器核在该地址处从存储器读取状态信息,并把该状态信息加载到适当的扩展寄存器空间中。作为加载过程的一部分,处理器首先读取存储器中所存储的XSTATE_BV向量字段的内容,以便理解哪些扩展已经把它们的状态信息存储在存储器中。然后,处理器从存储器把如XSTATE_BV向量字段中所指示的已经把它们的状态信息外部存储在存储器中的那些扩展的状态信息加载到其本身。理想的情况是,向XRSTOR指令提供由掩码向量,该掩码向量匹配从存储器读取的XSTATE_BV向量的内容,且其已设定的比特对应于XCR0寄存器中已启用的扩展。
附图简述
在附图中作为示例而非限制阐述本发明,附图中,相似的标号指示类似的元素,且附图中:
图1示出一种计算***,其处理核心均包括一个通用处理核心和紧密耦合到该通用处理核心的加速器;
图2示出用于对使用紧密耦合到GPP核心的加速器的线程进行上下文切换的过程;
图3示出图2的过程的实施例。
图4示出第一计算***实施例;
图5示出第二计算***实施例;
图6示出第三计算***实施例;
图7示出第四计算***实施例;
图8示出软件指令转换器。
详细描述
图1示出新的处理核心100_1架构,其中加速器101_1到101_N被设计为类似于耦合到核心的传统通用CPU 102的大规模功能单元。如图1中可见,多个这样的核心100_1到100_Q可以被放置在单个处理器120上,而处理器120被放置在半导体芯片上。
在这里,从存储器读取标准指令,且在CPU核心102中由该核心的传统功能单元执行标准指令。然而,处理核心100_1所接收到的其他类型的指令将触发加速器动作。在特定实现中,底层硬件支持软件以代码调用特定加速器的能力。即是说,可以由软件编程器(或由编译器)把特定命令实现到代码中,其中,该特定命令调用并定义特定加速器单元的(多个)输入操作数。
最终以某种形式的目标代码表示该命令。在运行时期间,底层硬件“执行”目标代码,且在这样做时,借助于关联的输入数据调用特定的加速器。
在被调用时,加速器在与CPU核心102相同的存储器空间外操作。因而,可以借助于虚拟地址向加速器标识数据操作数,这些虚拟地址到物理地址空间的相应转换与CPU核心102所使用的那些相同。此外,一般地,加速器单元执行命令的执行时间比传统/标准指令更长(由于正在执行的任务的复杂本质)。(多个)输入操作数和/或结果也可以大于在CPU 102内的(多个)指令执行管线的标准寄存器尺寸。
因此,加速器通常可以被看作是具有比传统功能单元和CPU 102的指令更粗的粒度(具有较大的执行时间和/或在较大的数据块上操作)。同时,加速器通常也可以被看作是细粒度的,或者至少比传统的协处理器更紧密耦合到CPU核心102。
具体地,相比于传统的协处理器,避免为了调用加速器而进行的时间昂贵的“驱动程序调用”和/或加速器和通用CPU 102共享相同的存储器空间对应于在通用CPU 102和加速器之间的更紧密的耦合。此外,调用加速器来执行的特定的个体任务也可以比传统上由协处理器执行的较大的、大规模的任务具有更细的粒度。适用于借助于加速器实现为单个“可调用”操作的特定的个体任务包括纹理采样、运动搜索或运动补偿、与安全相关的计算(例如,密码学、加密等等)、特定财务计算和/或特定科学计算。
通用CPU核心102可以具有一个或多个指令执行管线。现代的CPU核心通常能够并发地执行多个线程。借助于多个管线并发执行多个线程是直观概念。然而,单个管线也可以被设计为支持并发执行多个线程。
另外,现代的CPU核心和/或OS通常能够维护/理解可以比同时活动的线程更多的线程。例如,CPU核心可以认为8个线程当前是活动的,然而,允许存在附加的8个更多的线程存在(它们只是当前不活动)。作为一种可能性,随着时间的推移,CPU核心102在活动线程和不活动线程之间来回切换所有16个线程。因而,理论上,CPU核心102可以在一段时间跨度内把一些资源投入到所有16个线程。
在活动线程和不活动线程之间的差别在于,活动线程将其上下文信息本地存储在CPU核心102的寄存器中,而不活动线程将其上下文信息存储在这样的寄存器外,例如存储在***存储器104中。线程的“上下文”包括线程的操作信息,例如线程的程序代码正在操作的特定变量的值。
因而,作为在活动状态和不活动状态之间来回切换线程的活动的一部分,通用CPU核心102的活动包括:i)对于从活动切换到不活动的线程,把来自CPU 102寄存器103的上下文信息外部保存到***存储器104;ii)对于从不活动切换到活动的线程,把来自***存储器104的上下文信息内部加载到CPU 102寄存器。
取决于实现,判断哪些线程活动、哪些线程不活动,并且控制关联的切换,可以以软件(例如,在OS中)、通用CPU核心102或其他关联硬件或两者的某种组合来实现。在一种实施例中,CPU核心的寄存器103保存由线程的程序代码调用的管线的功能单元所执行的整数指令、浮点指令和向量指令中的一种或多种的数据操作数和/或结果。CPU寄存器也可以保存线程专用的控制信息,例如页面表和目录的位置等等。
问题在于,迄今为止,加速器单元通常还没有与通用CPU核心紧密耦合。因而,在图1的新方法中,线程的上下文信息容易不仅具有执行单元和CPU核心102的管线的操作数和/或其他信息(例如,寄存器103中的整数、浮点和向量功能单元的上下文),而且还具有一个或多个加速器的操作数和/或其他信息(例如,在加速器寄存器105中)。因而,图1的新方法的操作的一部分包括在处理核心100和***存储器104之间交换加速器相关的上下文信息,这与在CPU核心寄存器103和***存储器104之间交换传统的上下文信息相称。换句话说,可以把在CPU核心和加速器寄存器103、105两者内的上下文信息切换到/切换出***存储器104,以便支持单个线程的激活/失活。
在继续之前,值得一提的是,许多如今的计算***实现“虚拟化”。在典型的实现中,在操作***107软件和CPU硬件120之间施加了软件层106。这种软件层106通常包括在虚拟机监视器(VMM)109上“运行”的一个或多个虚拟机(VM)108_1–108_Z。尽管不是严格要求,但图1示出一种普通配置,其中均给不同的软件应用实例110_1–110_Z提供了在相应的专用虚拟机108_1–108_N上运行的其自己的操作***实例107_1–107_N。
VM向在其上运行的软件呈现CPU的存在。结果,至少作为第一种近似,在虚拟机上运行的软件可以“认为”它本身拥有整个计算机***的资源。VMM 109负责在底层多处理器CPU 120上支持多个VM。因而,VMM 109协调多个VM在多处理器CPU 120上的并发请求/需求。这包括使得底层计算***的实际资源(例如,CPU线程、***存储器空间、盘驱动器存储空间等等)与在VM上运行的软件所引用的“虚拟”计算***资源的分配相互关联。线程激活/失活和关联的上下文切换控制可以至少部分由OS实例、VMM或两者的某种组合执行。因而,简单起见,术语“OS”将被用来指代操作***实例、虚拟化层或两者的某种组合。
图2示出活动/不活动线程切换过程,其包括标准通用CPU核心线程上下文信息以及加速器相关的上下文信息两者在内部寄存器和***存储器之间的交换。
如图2中的过程可见,在运行时之前期间(即,在通用CPU核心实际执行线程的程序代码之前),例如在程序器正在编写代码时和/或作为把线程的源代码编译成目标代码的一部分,定义线程201。线程的定义的一部分包括关于线程是否使用任何加速器以及在进一步的实施例中如果是这样则使用哪些加速器的指示。在这里,如在图1的新核心100方法中可见,多个加速器101_1到101_N“挂上(hang off)”通用CPU核心102。取决于线程的目的/角色,线程可以不使用、使用一些或全部这样的加速器。
在这里,作为典型的情况,线程被定义为在操作***上“运行”的应用软件程序的一部分(例如,在OS实例107_1上运行的应用110_1,OS实例107_1在VMM 109上运行)。在运行时期间,OS负责把线程分派给具体的CPU核心。作为分派过程的一部分,在线程包含使用加速器的程序代码的情况中,OS把指示使用一个或多个加速器201的信息写入到CPU核心。
随后,处理器向OS告知为了外部保存一个或多个加速器202的状态信息而需要在***存储器中分配的空间量。作为响应,OS进行到分配存储器空间203。
当线程在通用CPU核心上实际激活和执行时,该线程使用一个或多个加速器。一个或多个加速器的实际操作引起生成与一个或多个加速器相关联的状态信息204。一旦做出线程应去往不活动状态的随后决定205,作为线程从活动到不活动状态的改变的一部分,把一个或多个加速器的上下文信息存储206在先前在过程203中分配了的存储器空间中。
尽管图2中未叙述,但可以把线程的其他状态信息(例如通用CPU核心寄存器的状态信息(例如,整数寄存器、浮点寄存器、向量寄存器等等))外部保存到***存储器,这与保存加速器的状态信息相称。
一旦以后决定恢复线程并将其从不活动转换到活动状态207,就从***存储器恢复过程206中所保存的与线程的一个或多个加速器相关联的状态信息,并将其加载到一个或多个加速器的关联的寄存器空间208。
取决于实现,在活动到不活动线程状态过渡期间,例如因变于线程是否实际上已经使用了特定的加速器,可以个别地保存或不保存特定加速器的状态信息。例如,OS可以允许三个加速器用于具体的线程,然而,在线程的最初执行到其首次活动至不活动过渡之后,该线程实际上只是用了一个加速器。在这种情况中,仅需要把实际使用的线程的状态信息外部保存到存储器。
因而,在一种实施例中,线程跟踪它实际上使用了哪些加速器,并在做出把线程从活动切换到不活动状态的决定时采取措施仅保存已被经使用的加速器的状态信息。根据一种方法,每当线程进入到活动状态时(例如,在首次创建线程时以及每当线程从不活动切换到活动状态时),“清除”对已经使用的那些加速器的跟踪。
在一种实施例中,线程维护具有用于核心中的每一加速器的比特位置的向量。在线程进入活动状态时,所有加速器比特被设置为0,且自线程进入到活动状态以来每当随后首次使用加速器时,该加速器的比特位置被设置为1。在做出使得线程进入不活动状态的决定时,使用该向量来确定实际上需要把哪些加速器的状态从内部寄存器保存到外部***存储器。
可以(但不必定)借助于英特尔ISA指令执行以上所描述的处理。图3示出借助于基于英特尔的技术执行的图2的过程的实施例,其中,改进当前现有英特尔指令以便包含一个或多个加速器的上下文切换。本质上,每一加速器被看作是x87、SSE和AVX之外的扩展。如图3可见,作为把线程分派给核心的一部分,且在线程包括使用加速器的程序代码时,OS把启用一个或多个加速器的信息写入到通用CPU的XCR0寄存器301。通过在XCR0寄存器中设置其他扩展的特定比特,也可以启用其他扩展(例如,可以启用x87、SSE和AVX扩展中的任何/所有)。
然后,通过具有执行指令的功能单元逻辑电路的通用CPU,OS执行CPUID指令302。所返回的信息向OS告知为了外部保存一个或多个所启用的加速器的状态信息而需要分配的***存储器的空间量。作为响应,OS进行到分配存储器空间303。
当线程在通用CPU上实际激活且执行时,线程使用已启用的加速器中的一个或多个,这引起生成与加速器相关联的状态信息304。一旦后续做出线程应去往不活动状态的决定305,在通用CPU上执行XSAVE指令306,该指令把加速器的状态信息存储到为该状态信息而分配的存储器空间。输入操作数对应于OS在过程303中分配存储器空间时有效标识的存储器位置。
作为XSAVE指令的一部分,存储XSTATE_BV向量,带有状态信息,用于指示哪些加速器的状态信息已经存储在存储器中。在一种实施例中,在执行XSAVE指令时,XSTATE_BV中的信息被用作指示要外部保存哪些特定加速器的各自的状态信息的掩码。此外,在进一步的实施例中,XSTATE_BV向量连同加速器状态信息一起外部保存在***存储器中。XSTATE_BV向量也可以指示使用其他扩展,例如使用x87、SSE和/或AVX扩展。
与XSAVE指令的执行相称,在GPP核心管线内,线程所使用的其他“扩展”的状态信息,例如浮点数和/或向量寄存器状态(包括不同大小的向量状态,例如128位向量(SSE)和256位向量(AVX)),也可以被外部存储到***存储器中。在一种实施例中,相同的XSAVE指令被用来保存所有这样的状态信息(加速器、浮点和向量(两种尺寸))。此外,与XSAVE指令的执行相称,除与扩展相关联的状态信息外,线程的状态信息(例如,整数寄存器状态、GPP核心管线状态等等)也可以被外部存储到***存储器。
一旦以后决定把线程从不活动恢复到活动状态307,就执行XRSTOR指令308,以便从***存储器恢复加速器状态,并将其加载到其关联的一个或多个加速器。在这里,首先从***存储器读取XSTATE_BV向量309,并检查,以便理解要通过前述XSAVE指令把哪些扩展的状态写入到存储器。在检查XSTATE_BV向量时,处理器理解已经外部存储其状态的那些扩展的状态,并从***存储器把它们调用到自身。各扩展可以包括一个或多个加速器。因而,可以把一个或多个加速器的状态信息调用到处理器中(例如,连同诸如x87、SSE和AVX等的其他扩展一起)。
再次,也可以把该线程的其他状态信息调用到通用CPU核心中,以便完整地还原线程。
示例性计算机架构
图4-图7是示例性计算机架构的框图。本领域中已知用于膝上型计算机、台式机、手持式PC、个人数字助理、工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝式电话、便携式媒体播放器、手持式设备和各种其他电子设备的其他***设计和配置也合适的。通常,能够合并在此公开的处理器和/或其他执行逻辑的多种多样的***或电子设备通常是合适的。
现在参见图4,所示出的是根据本发明的一种实施例的***400的框图。***400可以包括耦合控制器中枢420的一个或多个处理器410、415。在一种实施例中,控制器中枢420包括图形存储器控制器中枢(GMCH)490和输入/输出中枢(IOH)450(它们可以是在单独的芯片上);GMCH 490包括耦合到存储器440和协处理器445的存储器和图形控制器;IOH 450把输入/输出(I/O)设备460耦合到GMCH490。替代地,存储器和图形控制器中的一种或两者集成在处理器内(如在此描述的),存储器440和协处理器445直接耦合到处理器410,且控制器中枢420处于与IOH 450相同的单个芯片中。
图4中用虚线指示了附加的处理器415的可选性质。每一处理器410、415可以包括在此描述的处理核心中的一个或多个,且可以是某种版本的处理器1100。
存储器440可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一种实施例,控制器中枢420经由多点式总线与(多个)处理器410、415通信,多点式总线例如前端总线(FSB)、点对点接口,例如快速通道互连(QPI)或类似的连接495。
在一种实施例中,协处理器445是专用处理器,诸如例如高吞吐量话筒处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。在一种实施例中,控制器中枢420可以包括集成图形加速器。
在包括架构、微架构、热特性、功耗特性等等的指标谱方面,在物理资源410、415之间可以存在各种差异。
在一种实施例中,处理器410执行控制一般类型的操作的数据处理的指令。嵌入在指令内的可以是协处理器指令。处理器410把这些协处理器指令识别为属于应由附加协处理器445执行的类型。相应地,处理器410在协处理器总线或其他互连上把这些协处理器指令(或表示协处理器指令的控制信号)发送给协处理器445。(各)协处理器445接受和执行所接收的协处理器指令。
现在参见图5,所示出的是根据本发明的一种实施例的第一更具体的示例性***500的框图。如图5中所示出,多处理器***500是点对点互连***,且包括经由点对点互连550耦合的第一处理器570和第二处理器580。处理器570和580中的每一个可以是某种版本的处理器1100。在本发明的一种实施例中,处理器570和580分别是处理器410和415,而协处理器538是协处理器445。在另一实施例中,处理器570和580分别是处理器410和协处理器445。
处理器570和580被示出为分别包括集成存储器控制器(IMC)单元572和582。处理器570也包括作为其总线控制器单元的一部分的点对点(P-P)接口576和578;类似地,第二处理器580包括P-P接口586和588。处理器570、580可以经由点对点(P-P)接口550使用P-P接口电路578、588来交换信息。如图5中所示出,IMC 572和582把处理器耦合到各自的存储器,即存储器532和存储器534,它们可以是本地附加到个各自的处理器的主存储器的各部分。
处理器570、580均可以经由各个P-P接口552、554使用点对点接口电路576、594、586、598与芯片组590交换信息。芯片组590可以可选地经由高性能接口539与协处理器538交换信息。在一种实施例中,协处理器538是专用处理器,诸如例如高吞吐量话筒处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。
共享高速缓存(未示出)可以被包括在任一种处理器中或者在两种处理器外,然而经由P-P互连与处理器连接,以使得如果处理器被置于低功率模式则可以把处理器中的任一种或者两种的本地高速缓存信息存储在共享高速缓存中。
芯片组590可以经由接口596耦合到第一总线516。在一种实施例中,第一总线516可以是***组件互连(PCI)总线,或诸如PCI EXPRESS总线或另一第三代I/O互连总线等的总线,但本发明的范围不限于此。
如图中所示出5,各种I/O设备514连同总线桥518一起可以耦合到第一总线516,总线桥518把第一总线516耦合到第二总线520。在一种实施例中,诸如协处理器、高吞吐量话筒处理器、GPGPU、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器等的一个或多个附加的处理器515被耦合到第一总线516。在一种实施例中,第二总线520可以是低针数(LPC)总线。各种设备可以被耦合到第二总线520,这些设备包括例如键盘和/或鼠标522、通信设备527和诸如在一种实施例中可以包括指令/代码和数据530的盘驱动器或其他大容量存储设备等的存储单元528。进一步,音频I/O 524可以耦合到第二总线520。注意,其他架构是可能的。例如,代替图5中的点对点架构,***可以实现多点式总线或其他这样的架构。
现在参见图6,所示出的是根据本发明的一种实施例的第二更具体的示例性***600的框图。图5和6中的类似的元素带有类似的标号,且已经从图6忽略了图5的某些方面,以便避免模糊图6的其他方面。
图6阐释,处理器570、580分别可以包括集成存储器和I/O控制逻辑(“CL”)572和582。因而,CL 572、582包括集成存储器控制器单元且包括I/O控制逻辑。图6阐释,不仅是存储器532、534耦合到CL 572、582,I/O设备614也耦合到控制逻辑572、582。陈旧I/O设备615耦合到芯片组590。
现在参见图7,所示出的是根据本发明的一种实施例的SoC 700的框图。虚线框是更高级的SoC的可选特征。在图7中,(多个)互连单元702耦合到:应用处理器710,其包括一组一个或多个核心702A-N和(多个)共享高速缓存单元706;***代理单元710;(多个)总线控制器单元716;(多个)集成存储器控制器单元714;一组或一个或多个协处理器720,其可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元730;直接存储器访问(DMA)单元732;以及显示单元740,其用于耦合到一个或多个外置显示器。在一种实施例中,(多个)协处理器720包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量话筒处理器、嵌入式处理器等等。
在此公开的机制的实施例可以以硬件、软件、固件或这样的实现方法的组合实现。本发明的各实施例可以被实现为在可编程***上执行计算机程序或程序代码,可编程***包括至少一个处理器、存储***(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备。
可以把程序代码例如图5中所阐释的代码530应用到输入指令,以便执行此描述的功能并生成输出信息。可以以已知方式把输出信息应用到一个或多个输出设备。对于本申请的目的,处理***包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器等的处理器的任何***。
可以以高级过程编程语言或对象面向编程语言实现程序代码以便与处理***通信。如果期望的话,也可以以汇编语言或机器语言实现程序代码。事实上,在此描述的机制不限于任何具体的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一种实施例的一个或多个方面可以通过存储在一种机器可读介质上的表示性指令来实现,该机器可读介质表示在处理器内的各种逻辑,在由机器读取时,表示性指令引起机器制造执行在此描述的技术的逻辑。这样的表示被称为“IP核”,可以被存储在有形机器可读介质上并被提供给各种消费者或制造设施,以便加载到实际上制成逻辑或处理器的制造机器。
这样的机器可读存储介质可以包括但不限于由机器或设备制造或形成的制品的非暂态有形配置,包括存储介质,例如硬盘、任何其他盘、半导体设备或适用于存储电子指令的任何其他介质,任何其他盘包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)和磁光盘,半导体设备例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁卡或光卡。
相应地,本发明的各实施例也包括包含诸如硬件描述语言(HDL)等的指令或包含设计数据的非暂态有形机器可读介质,硬件描述语言(HDL)定义在此描述的结构、电路、装置、处理器和/或***特征。这样的实施例也可以被称为程序产品。
仿真(包括二进制翻译、代码拟态等等)
在一些情况中,可以使用指令转换器用来把指令从源指令集转换成目标指令集。例如,指令转换器可以把指令翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、拟态、仿真或以另外方式转换成要由核心处理的一个或多个其他指令。指令转换器可以以软件、硬件、固件或其组合实现。指令转换器可以是在处理器上、在处理器外或部分在处理器上且部分在处理器外。
图8是对比根据本发明的各实施例使用软件指令转换器来把以源指令集的二进制指令转换成以目标指令集的二进制指令的框图。在所阐释的实施例中,指令转换器是软件指令转换器,但替代地指令转换器可以以软件、固件、硬件或其各种组合实现。图8示出使用x86编译器804来编译以高级语言802的程序,以便生成可以由带有至少一个x86指令集核心的处理器816本机执行的x86二进制代码806。带有至少一个x86指令集核心的处理器816表示可以执行与带有至少一个x86指令集核心的英特尔处理器基本相同的功能的任何处理器,该处理器兼容地执行或以另外方式处理(1)英特尔x86指令集核心的指令集的主要部分或(2)应用或其他软件的目标代码版本,其目标为在带有至少一个x86指令集核心的英特尔处理器上运行,以便取得带有至少一个x86指令集核心的英特尔处理器基本相同的结果。x86编译器804表示编译器,该编译器可操作为生成可以借助于或无需附加的联动装置处理带有至少一个x86指令集核心的处理器816上执行的x86二进制代码806(例如,目标代码)。类似地,图8示出可以使用替代指令集编译器808编译以高级语言802的程序,以便生成可以由不带有至少一个x86指令集核心的处理器814(例如,带有执行加利福尼亚州桑尼维尔市的MIPS技术的MIPS指令集和/或执行加利福尼亚州桑尼维尔市的ARM控股的ARM指令集的核心的处理器)本机执行的替代指令集二进制代码810。指令转换器812用来把x86二进制代码806转换成可以由不带有x86指令集核心的处理器814的本机执行的代码。这种经转换的代码不可能与替代指令集二进制代码810相同,这是因为难以制制造允许这一单的指令转换器;然而,经转换的代码将完成一般的操作,且由来自替代指令集的指令构成。因而,指令转换器812表示通过允许不具有x86指令集处理器或核心的处理器或其他电子设备执行x86二进制代码806的软件、固件、硬件或其组合的仿真、模拟或任何其他过程。
Claims (18)
1.一种用于具有加速器的处理器的上下文信息切换方法,包括:
创建线程,并标识所述线程将利用加速器;
从包括所述加速器的处理器,接收用于存储所述加速器的上下文的存储空间的量;
通过分配所述量的存储空间,创建所分配的存储空间;
在所述处理器上执行所述线程,并利用所述加速器,以创建用于所述线程的所述加速器的上下文信息;以及
响应于把所述线程置于不活动状态的决定,把所述上下文信息存储在所述所分配的存储空间中,
其中,所述加速器和所述处理器的CPU共享相同的存储器空间。
2.如权利要求1所述的方法,其特征在于,所述加速器使用与带有执行所述线程的任务的所述处理器的核心相同的虚拟-物理地址转换。
3.如权利要求2所述的方法,其特征在于,响应于把所述线程置于不活动状态的决定,所述线程的所述核心的上下文也被存储在存储空间中。
4.如权利要求1所述的方法,进一步包括:作为所述标识的一部分,启用所述加速器。
5.如权利要求1所述的方法,进一步包括:与所述上下文信息的所述存储相称,存储向量,其中所述向量标识所述加速器。
6.如权利要求5所述的方法,进一步包括,响应于再次激活所述线程的决定,读取所述向量,以便确定所述加速器已经保存了上下文信息,并且从所述所分配的存储空间读取用于所述线程的所述加速器的所述上下文信息,并且把所述上下文信息重新合并到所述加速器。
7.一种用于具有加速器的处理器的上下文信息切换装置,包括:
处理器的多个核心,每一核心具有:
加速器;
第一功能单元逻辑电路,其耦合至所述加速器,并用于执行返回用于存储所述加速器的上下文信息的存储空间的量的第一指令;以及
第二功能单元逻辑电路,用于执行第二指令,所述第二指令把所述加速器的所述上下文信息保存到为所述加速器的所述上下文信息分配的所述量的存储空间,
其中,每一核心的所述加速器和CPU共享相同的存储器空间。
8.如权利要求7所述的装置,其特征在于,所述第二指令也保存用所述加速器的所述上下文信息标识所述加速器的向量。
9.如权利要求8所述的装置,其特征在于,每个核心进一步包括用于执行第三指令的第三功能单元逻辑电路,所述第三指令读取所述向量以便确定为所述加速器保存的上下文信息,以读取所保存的上下文信息,并把所述所保存的上下文信息重新存储到所述加速器。
10.如权利要求7-9中任一项所述的装置,其特征在于,每一核心具有多个加速器。
11.如权利要求10所述的装置,其特征在于,每个核心包括寄存器,所述寄存器具有个别地启用所述加速器中的某些的字段。
12.一种用于具有加速器的处理器的上下文信息切换设备,包括:
线程创建和标识装置,用于创建线程,并标识所述线程将利用加速器;
存储空间量接收装置,用于从包括所述加速器的处理器,接收用于存储所述加速器的上下文的存储空间的量;
存储空间创建装置,用于通过分配所述量的存储空间,创建所分配的存储空间;
线程执行和上下文信息创建装置,用于在所述处理器上执行所述线程,并利用所述加速器,以创建用于所述线程的所述加速器的上下文信息;以及
上下文信息存储装置,用于响应于把所述线程置于不活动状态的决定,把所述上下文信息存储在所述所分配的存储空间中,
其中,所述加速器和所述处理器的CPU共享相同的存储器空间。
13.如权利要求12所述的设备,其特征在于,所述加速器使用与带有执行所述线程的任务的所述处理器的核心相同的虚拟-物理地址转换。
14.如权利要求13所述的设备,其特征在于,所述上下文信息存储装置进一步用于响应于把所述线程置于不活动状态的决定,所述线程的所述核心的上下文也被存储在存储空间中。
15.如权利要求12所述的设备,其特征在于,还包括:加速器启用装置,用于作为所述标识的一部分,启用所述加速器。
16.如权利要求12所述的设备,其特征在于,还包括:向量存储装置,用于与所述上下文信息的所述存储相称,存储向量,其中所述向量标识所述加速器。
17.如权利要求16所述的设备,其特征在于,还包括,读取装置,用于响应于再次激活所述线程的决定,读取所述向量,以便确定所述加速器已经保存了上下文信息,并且从所述所分配的存储空间读取用于所述线程的所述加速器的所述上下文信息,并且把所述上下文信息重新合并到所述加速器。
18.一种机器可读介质,包括指令,所述指令当被执行时,使计算设备执行如权利要求1-6中的任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2012/031681 WO2013147887A1 (en) | 2012-03-30 | 2012-03-30 | Context switching mechanism for a processing core having a general purpose cpu core and a tightly coupled accelerator |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104205042A CN104205042A (zh) | 2014-12-10 |
CN104205042B true CN104205042B (zh) | 2019-01-08 |
Family
ID=49260941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280072154.0A Active CN104205042B (zh) | 2012-03-30 | 2012-03-30 | 用于具有通用cpu核心和紧密耦合的加速器的处理核心的上下文切换机制 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9396020B2 (zh) |
EP (1) | EP2831721B1 (zh) |
CN (1) | CN104205042B (zh) |
WO (1) | WO2013147887A1 (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9836316B2 (en) * | 2012-09-28 | 2017-12-05 | Intel Corporation | Flexible acceleration of code execution |
US9417873B2 (en) | 2012-12-28 | 2016-08-16 | Intel Corporation | Apparatus and method for a hybrid latency-throughput processor |
US10140129B2 (en) | 2012-12-28 | 2018-11-27 | Intel Corporation | Processing core having shared front end unit |
US9361116B2 (en) | 2012-12-28 | 2016-06-07 | Intel Corporation | Apparatus and method for low-latency invocation of accelerators |
US10346195B2 (en) | 2012-12-29 | 2019-07-09 | Intel Corporation | Apparatus and method for invocation of a multi threaded accelerator |
US10031773B2 (en) * | 2014-02-20 | 2018-07-24 | Nxp Usa, Inc. | Method to communicate task context information and device therefor |
US9928094B2 (en) | 2014-11-25 | 2018-03-27 | Microsoft Technology Licensing, Llc | Hardware accelerated virtual context switching |
CN104657308A (zh) * | 2015-03-04 | 2015-05-27 | 浪潮电子信息产业股份有限公司 | 一种用fpga实现的服务器硬件加速的方法 |
EP3089035A1 (en) * | 2015-04-30 | 2016-11-02 | Virtual Open Systems | Virtualization manager for reconfigurable hardware accelerators |
EP3136645A1 (en) * | 2015-08-27 | 2017-03-01 | Gemalto Sa | Mixed hardware and software instructions for cryptographic functionalities implementation |
CN105938438B (zh) * | 2015-11-24 | 2022-07-01 | 杭州迪普科技股份有限公司 | 一种数据报文处理方法及装置 |
US10013212B2 (en) * | 2015-11-30 | 2018-07-03 | Samsung Electronics Co., Ltd. | System architecture with memory channel DRAM FPGA module |
US10691634B2 (en) | 2015-11-30 | 2020-06-23 | Pezy Computing K.K. | Die and package |
US10818638B2 (en) * | 2015-11-30 | 2020-10-27 | Pezy Computing K.K. | Die and package |
US20190044809A1 (en) * | 2017-08-30 | 2019-02-07 | Intel Corporation | Technologies for managing a flexible host interface of a network interface controller |
US11068281B2 (en) * | 2018-03-02 | 2021-07-20 | Fastly, Inc. | Isolating applications at the edge |
US10877766B2 (en) * | 2018-05-24 | 2020-12-29 | Xilinx, Inc. | Embedded scheduling of hardware resources for hardware acceleration |
US10705993B2 (en) | 2018-11-19 | 2020-07-07 | Xilinx, Inc. | Programming and controlling compute units in an integrated circuit |
US11216259B1 (en) * | 2020-03-31 | 2022-01-04 | Xilinx, Inc. | Performing multiple functions in single accelerator program without reload overhead in heterogenous computing system |
US11461098B2 (en) | 2020-06-27 | 2022-10-04 | Intel Corporation | Apparatuses, methods, and systems for instructions for operating system transparent instruction state management of new instructions for application threads |
US11386034B2 (en) | 2020-10-30 | 2022-07-12 | Xilinx, Inc. | High throughput circuit architecture for hardware acceleration |
CN114579288B (zh) * | 2022-05-09 | 2022-09-02 | 成都登临科技有限公司 | 一种任务处理的方法、装置以及计算机设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1423196A (zh) * | 2001-11-30 | 2003-06-11 | 日本电气株式会社 | 堆栈使用的方法 |
Family Cites Families (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7272703B2 (en) * | 1997-08-01 | 2007-09-18 | Micron Technology, Inc. | Program controlled embedded-DRAM-DSP architecture and methods |
US6437788B1 (en) * | 1999-07-16 | 2002-08-20 | International Business Machines Corporation | Synchronizing graphics texture management in a computer system using threads |
US6412050B1 (en) | 1999-12-30 | 2002-06-25 | Intel Corporation | Memory record update filtering |
US6671795B1 (en) | 2000-01-21 | 2003-12-30 | Intel Corporation | Method and apparatus for pausing execution in a processor or the like |
US6931641B1 (en) | 2000-04-04 | 2005-08-16 | International Business Machines Corporation | Controller for multiple instruction thread processors |
US7137117B2 (en) | 2000-06-02 | 2006-11-14 | Microsoft Corporation | Dynamically variable idle time thread scheduling |
US7448025B2 (en) | 2000-12-29 | 2008-11-04 | Intel Corporation | Qualification of event detection by thread ID and thread privilege level |
US7260684B2 (en) | 2001-01-16 | 2007-08-21 | Intel Corporation | Trace cache filtering |
US6928645B2 (en) | 2001-03-30 | 2005-08-09 | Intel Corporation | Software-based speculative pre-computation and multithreading |
US20020166042A1 (en) | 2001-05-01 | 2002-11-07 | Yoav Almog | Speculative branch target allocation |
US6845501B2 (en) | 2001-07-27 | 2005-01-18 | Hewlett-Packard Development Company, L.P. | Method and apparatus for enabling a compiler to reduce cache misses by performing pre-fetches in the event of context switch |
US20030028751A1 (en) | 2001-08-03 | 2003-02-06 | Mcdonald Robert G. | Modular accelerator framework |
US6804632B2 (en) | 2001-12-06 | 2004-10-12 | Intel Corporation | Distribution of processing activity across processing hardware based on power consumption considerations |
US7363474B2 (en) | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
US7024542B2 (en) | 2002-01-02 | 2006-04-04 | Intel Corporation | System and method of reducing the number of copies from alias registers to real registers in the commitment of instructions |
US20030033345A1 (en) * | 2002-06-27 | 2003-02-13 | Keefer Christopher E. | Thread-based methods and systems for using the idle processing power of one or more networked computers to solve complex scientific problems |
US6952214B2 (en) | 2002-07-12 | 2005-10-04 | Sun Microsystems, Inc. | Method for context switching a graphics accelerator comprising multiple rendering pipelines |
US7219241B2 (en) | 2002-11-30 | 2007-05-15 | Intel Corporation | Method for managing virtual and actual performance states of logical processors in a multithreaded processor using system management mode |
US20040128489A1 (en) | 2002-12-31 | 2004-07-01 | Hong Wang | Transformation of single-threaded code to speculative precomputation enabled code |
US7502910B2 (en) | 2003-01-28 | 2009-03-10 | Sun Microsystems, Inc. | Sideband scout thread processor for reducing latency associated with a main processor |
US7849465B2 (en) | 2003-02-19 | 2010-12-07 | Intel Corporation | Programmable event driven yield mechanism which may activate service threads |
US7404067B2 (en) | 2003-09-08 | 2008-07-22 | Intel Corporation | Method and apparatus for efficient utilization for prescient instruction prefetch |
US20050071438A1 (en) | 2003-09-30 | 2005-03-31 | Shih-Wei Liao | Methods and apparatuses for compiler-creating helper threads for multi-threading |
US7631307B2 (en) | 2003-12-05 | 2009-12-08 | Intel Corporation | User-programmable low-overhead multithreading |
US7493621B2 (en) | 2003-12-18 | 2009-02-17 | International Business Machines Corporation | Context switch data prefetching in multithreaded computer |
US7617499B2 (en) | 2003-12-18 | 2009-11-10 | International Business Machines Corporation | Context switch instruction prefetching in multithreaded computer |
US8984517B2 (en) | 2004-02-04 | 2015-03-17 | Intel Corporation | Sharing idled processor execution resources |
US7451333B2 (en) | 2004-09-03 | 2008-11-11 | Intel Corporation | Coordinating idle state transitions in multi-core processors |
US7966511B2 (en) | 2004-07-27 | 2011-06-21 | Intel Corporation | Power management coordination in multi-core processors |
US7257679B2 (en) | 2004-10-01 | 2007-08-14 | Advanced Micro Devices, Inc. | Sharing monitored cache lines across multiple cores |
US8719819B2 (en) | 2005-06-30 | 2014-05-06 | Intel Corporation | Mechanism for instruction set based thread execution on a plurality of instruction sequencers |
US7415595B2 (en) * | 2005-05-24 | 2008-08-19 | Coresonic Ab | Data processing without processor core intervention by chain of accelerators selectively coupled by programmable interconnect network and to memory |
US7313673B2 (en) | 2005-06-16 | 2007-12-25 | International Business Machines Corporation | Fine grained multi-thread dispatch block mechanism |
US9003421B2 (en) | 2005-11-28 | 2015-04-07 | Intel Corporation | Acceleration threads on idle OS-visible thread execution units |
US7941791B2 (en) * | 2007-04-13 | 2011-05-10 | Perry Wang | Programming environment for heterogeneous processor resource integration |
US8055872B2 (en) * | 2008-02-21 | 2011-11-08 | Arm Limited | Data processor with hardware accelerator, accelerator interface and shared memory management unit |
US8458498B2 (en) | 2008-12-23 | 2013-06-04 | Intel Corporation | Method and apparatus of power management of processor |
US8627017B2 (en) | 2008-12-30 | 2014-01-07 | Intel Corporation | Read and write monitoring attributes in transactional memory (TM) systems |
US8627014B2 (en) | 2008-12-30 | 2014-01-07 | Intel Corporation | Memory model for hardware attributes within a transactional memory system |
US8451281B2 (en) | 2009-06-23 | 2013-05-28 | Intel Corporation | Shared virtual memory between a host and discrete graphics device in a computing system |
US8359453B2 (en) * | 2010-09-13 | 2013-01-22 | International Business Machines Corporation | Real address accessing in a coprocessor executing on behalf of an unprivileged process |
US9026829B2 (en) | 2010-09-25 | 2015-05-05 | Intel Corporation | Package level power state optimization |
US9552206B2 (en) * | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
US20120233439A1 (en) | 2011-03-11 | 2012-09-13 | Boris Ginzburg | Implementing TLB Synchronization for Systems with Shared Virtual Memory Between Processing Devices |
US20130027416A1 (en) | 2011-07-25 | 2013-01-31 | Karthikeyan Vaithianathan | Gather method and apparatus for media processing accelerators |
US9633407B2 (en) | 2011-07-29 | 2017-04-25 | Intel Corporation | CPU/GPU synchronization mechanism |
US9075610B2 (en) | 2011-12-15 | 2015-07-07 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including thread consolidation |
WO2013101168A1 (en) | 2011-12-30 | 2013-07-04 | Intel Corporation | Translation lookaside buffer for multiple context compute engine |
WO2013101139A1 (en) | 2011-12-30 | 2013-07-04 | Intel Corporation | Providing an asymmetric multicore processor system transparently to an operating system |
-
2012
- 2012-03-30 US US13/993,273 patent/US9396020B2/en active Active
- 2012-03-30 WO PCT/US2012/031681 patent/WO2013147887A1/en active Application Filing
- 2012-03-30 CN CN201280072154.0A patent/CN104205042B/zh active Active
- 2012-03-30 EP EP12873375.5A patent/EP2831721B1/en active Active
-
2016
- 2016-07-19 US US15/214,270 patent/US10120691B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1423196A (zh) * | 2001-11-30 | 2003-06-11 | 日本电气株式会社 | 堆栈使用的方法 |
Also Published As
Publication number | Publication date |
---|---|
US9396020B2 (en) | 2016-07-19 |
US20160328234A1 (en) | 2016-11-10 |
CN104205042A (zh) | 2014-12-10 |
WO2013147887A1 (en) | 2013-10-03 |
EP2831721B1 (en) | 2020-08-26 |
US20140344815A1 (en) | 2014-11-20 |
US10120691B2 (en) | 2018-11-06 |
EP2831721A4 (en) | 2016-01-13 |
EP2831721A1 (en) | 2015-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104205042B (zh) | 用于具有通用cpu核心和紧密耦合的加速器的处理核心的上下文切换机制 | |
JP7052170B2 (ja) | プロセッサおよびシステム | |
US11954036B2 (en) | Prefetch kernels on data-parallel processors | |
US9830156B2 (en) | Temporal SIMT execution optimization through elimination of redundant operations | |
US20180329724A1 (en) | Instruction and Logic for Programmable Fabric Hierarchy and Cache | |
US20200218568A1 (en) | Mechanism for issuing requests to an accelerator from multiple threads | |
KR102187912B1 (ko) | 인터럽트들의 세트들을 구성하는 장치 및 방법 | |
US10503550B2 (en) | Dynamic performance biasing in a processor | |
CN104813279B (zh) | 用于减少具有步幅式访问模式的向量寄存器中的元素的指令 | |
US9891936B2 (en) | Method and apparatus for page-level monitoring | |
JP2015534188A (ja) | ユーザレベルのスレッディングのために即時のコンテキスト切り替えを可能とする新規の命令および高度に効率的なマイクロアーキテクチャ | |
US11188341B2 (en) | System, apparatus and method for symbolic store address generation for data-parallel processor | |
KR20220151134A (ko) | 이종 처리 자원들에 대한 작업을 적응적으로 스케줄링하기 위한 장치 및 방법 | |
CN108694057A (zh) | 用于改善主机到设备通信以获得最优功率和性能的高效型基于范围的存储器回写 | |
US20170024210A1 (en) | Extension of CPU Context-State Management for Micro-Architecture State | |
US11531562B2 (en) | Systems, methods, and apparatuses for resource monitoring | |
CN113448724A (zh) | 用于微处理器配置的动态控制的装置和方法 | |
US10241885B2 (en) | System, apparatus and method for multi-kernel performance monitoring in a field programmable gate array | |
US10083033B2 (en) | Apparatus and method for efficient register allocation and reclamation | |
US20160378471A1 (en) | Instruction and logic for execution context groups for parallel processing | |
CN108681519A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |