用于具有通用cpu核心和紧密耦合的加速器的处理核心的上下文切换机制的制作方法

文档序号:6498479阅读:340来源:国知局
用于具有通用cpu核心和紧密耦合的加速器的处理核心的上下文切换机制的制作方法
【专利摘要】本发明描述具有多个核心的装置,每一核心具有:a)加速器;以及b)耦合到加速器的通用CPU。该通用CPU具有功能单元逻辑电路,用于执行返回用于存储加速器的上下文信息的存储空间量的指令。
【专利说明】用于具有通用CPU核心和紧密耦合的加速器的处理核心的上下文切换机制发明领域
[0001]本发明的领域通常涉及计算系统设计,且尤其涉及用于具有通用CPU核心和紧密耦合的加速器的处理核心的上下文切换机制。
[0002]背景
[0003]协处理器的常规集成
[0004]随着半导体制造工艺达到接近每个管芯I万亿个晶体管的时代,设计工程师面临着如何最有效地利用使用所有可用晶体管的问题。一种设计方法在管芯上用专用硬件“加速”以及一个或多个通用CPU核心实现特定计算密集功能。
[0005]借助于被设计为执行特定计算密集功能的专用逻辑块,实现了加速。把密集计算迁移到这样的专用逻辑块使得(各)CPU核心免于执行大量的指令,由此增加了 CPU核心的效能和效率。
[0006]尽管本领域中已知以协处理器(例如图形协处理器))的形式的“加速”,但这样的传统协处理器被OS看作是外置于OS在其上运行的(各)CPU核心的独立“设备”(在较大的计算系统内)。因此通过专用的设备驱动程序软件访问这些协处理器,且这些协处理器不在与CPU核心相同的存储器空间外操作。因而,传统的协处理器不共享或期待在CPU核心上实现的虚拟地址-物理地址转换方案。
[0007]此外,在由OS把任务卸载到传统的协处理器时,遭遇大的等待时间。具体地,当CPU核心和传统的协处理器本质上对应于分离的、隔离的子系统时,在把GPP核心上的主OS中的定义的任务传送给协处理器的“内核”软件时,耗费大量的通信资源。这样的大等待时间有利于这样的系统设计:从主OS在协处理器上调用相对少见的任务,但每个任务具有大的关联数据块。实际上,主要以粗粒度方式而非细粒度方式使用传统的协处理器。
[0008]随着当前的系统设计者对以细粒度的使用方式把更多加速引入到计算系统感兴趣,用于在计算系统中集成加速的新范式是必要的。
[0009]CPUID/XSAVE/XRSTORE 指令和 XCRO 寄存器
[0010]当前由英特尔公司提供的指令集架构(ISA)支持允许、外部保存和再次存储对ISA的传统指令集的特定硬件支持的“扩展”的状态的机制。具体地,根据一种实现,带有3种操作数指令格式(AVX)的ISA的浮点数指令(x87)、128位向量指令(SSE)和256位向量指令均被看作是对ISA的传统指令集(x86)的独立“扩展”。
[0011]可以由软件写入内置于处理器的控制寄存器XCR0,以便启用这些扩展中的任何一种或多种。具体地,XCRO寄存器为三种扩展中的每一种维护一个比特(即,x87位、SSE位和AVX位)。软件(例如,操作系统(OS))准许软件根据其自己的意图个别地设置各种比特以便个别地启用X87/SSE/AVX扩展。XCRO寄存器被认为是具有附加的、当前未定义的比特位置,以使得将来可以添加附加的扩展并相应地启用/禁用。
[0012]已经在ISA中实现了 CPWD指令,软件可以使用CPWD指令来判断外部存储已启用的扩展的状态信息需要多少存储器空间。例如,带有各种输入操作数值,CPWD指令可以由软件执行以判断:i)存储所有已启用的扩展的所有状态信息所需要的存储器空间的总量;ii)存储已启用的扩展中的任何具体一个的所有状态信息所需要的存储器空间的总量。因而,例如,如果启用了 x87和SSE扩展,则CPWD指令可以用来确定:i)存储x87和SSE扩展的所有状态信息所需要的存储器空间的总量;ii)仅存储x87扩展的所有状态信息所需要的存储器空间的总量;以及,iii)仅存储SSE扩展的所有状态信息所需要的存储器空间的总量。
[0013]在这里,由于扩展的状态信息主要对应于该扩展的关联数据寄存器(即,x87扩展的浮点寄存器、SSE扩展的128位寄存器、AVX扩展的256位寄存器)中所存储的信息,CPU硬件知道“多大”寄存器空间用于其扩展中的每一种且可以容易地作为CPUID指令的结果提供/返回这样的信息。
[0014]因而,在典型的情况中,软件将执行CPWD指令以便理解需要为它已经启用的各种扩展的状态信息分配多少存储器空间,然后,进行到分配这样的存储器空间。
[0015]由软件调用XSTORE指令,以便外部地保存任何/所有启用的扩展的状态信息。在这里,把其中保存状态信息的存储器地址作为输入值提供给指令,且处理器核心引起把(各)扩展的状态信息写入到该地址处的系统存储器。在XSTORE指令的任何具体执行中,不是所有已启用的扩展都可以保存它们的状态信息。执行XSTORE指令所利用的、其比特位置基本上对应于XCRO寄存器中的那些位置的掩码寄存器,被用来有选择地指定通过XSTORE指令把哪些经启用扩展的状态信息存储起来。外部存储的信息也包括对应于掩码寄存器信息的XSTATE_BV向量字段。即是说,XSTATE_BV向量字段指示哪些扩展已经把它们的状态信息外部存储在存储器中。
[0016]XRSTOR指令对应于XSTORE指令的逻辑逆。在XRSTOR指令的情况下,指令的输入值指定把(各)扩展的状态信息存储在系统存储器中的何处。该指令的执行引起处理器核在该地址处从存储器读取状态信息,并把该状态信息加载到适当的扩展寄存器空间中。作为加载过程的一部分,处理器首先读取存储器中所存储的XSTATE_BV向量字段的内容,以便理解哪些扩展已经把它们的状态信息存储在存储器中。然后,处理器从存储器把如XSTATE_BV向量字段中所指示的已经把它们的状态信息外部存储在存储器中的那些扩展的状态信息加载到其本身。理想的情况是,向XRSTOR指令提供由掩码向量,该掩码向量匹配从存储器读取的XSTATE_BV向量的内容,且其已设定的比特对应于XCRO寄存器中已启用的扩展。
[0017]附图简述
[0018]在附图中作为示例而非限制阐述本发明,附图中,相似的标号指示类似的元素,且附图中:
[0019]图1示出一种计算系统,其处理核心均包括一个通用处理核心和紧密耦合到该通用处理核心的加速器;
[0020]图2示出用于对使用紧密耦合到GPP核心的加速器的线程进行上下文切换的过程;
[0021]图3示出图2的过程的实施例。
[0022]图4示出第一计算系统实施例;
[0023]图5示出第二计算系统实施例;
[0024]图6示出第三计算系统实施例;
[0025]图7示出第四计算系统实施例;
[0026]图8示出软件指令转换器。
[0027]详细描述
[0028]图1示出新的处理核心100_1架构,其中加速器101_1到101_N被设计为类似于耦合到核心的传统通用CPU 102的大规模功能单元。如图1中可见,多个这样的核心100_1到100_Q可以被放置在单个处理器120上,而处理器120被放置在半导体芯片上。
[0029]在这里,从存储器读取标准指令,且在CPU核心102中由该核心的传统功能单元执行标准指令。然而,处理核心100_1所接收到的其他类型的指令将触发加速器动作。在特定实现中,底层硬件支持软件以代码调用特定加速器的能力。即是说,可以由软件编程器(或由编译器)把特定命令实现到代码中,其中,该特定命令调用并定义特定加速器单元的(多个)输入操作数。
[0030]最终以某种形式的目标代码表示该命令。在运行时期间,底层硬件“执行”目标代码,且在这样做时,借助于关联的输入数据调用特定的加速器。
[0031]在被调用时,加速器在与CPU核心102相同的存储器空间外操作。因而,可以借助于虚拟地址向加速器标识数据操作数,这些虚拟地址到物理地址空间的相应转换与CPU核心102所使用的那些相同。此外,一般地,加速器单元执行命令的执行时间比传统/标准指令更长(由于正在执行的任务的复杂本质)。(多个)输入操作数和/或结果也可以大于在CPU 102内的(多个)指令执行管线的标准寄存器尺寸。
[0032]因此,加速器通常可以被看作是具有比传统功能单元和CPU 102的指令更粗的粒度(具有较大的执行时间和/或在较大的数据块上操作)。同时,加速器通常也可以被看作是细粒度的,或者至少比传统的协处理器更紧密耦合到CPU核心102。
[0033]具体地,相比于传统的协处理器,避免为了调用加速器而进行的时间昂贵的“驱动程序调用”和/或加速器和通用CPU 102共享相同的存储器空间对应于在通用CPU 102和加速器之间的更紧密的耦合。此外,调用加速器来执行的特定的个体任务也可以比传统上由协处理器执行的较大的、大规模的任务具有更细的粒度。适用于借助于加速器实现为单个“可调用”操作的特定的个体任务包括纹理采样、运动搜索或运动补偿、与安全相关的计算(例如,密码学、加密等等)、特定财务计算和/或特定科学计算。
[0034]通用CPU核心102可以具有一个或多个指令执行管线。现代的CPU核心通常能够并发地执行多个线程。借助于多个管线并发执行多个线程是直观概念。然而,单个管线也可以被设计为支持并发执行多个线程。
[0035]另外,现代的CPU核心和/或OS通常能够维护/理解可以比同时活动的线程更多的线程。例如,CPU核心可以认为8个线程当前是活动的,然而,允许存在附加的8个更多的线程存在(它们只是当前不活动)。作为一种可能性,随着时间的推移,CPU核心102在活动线程和不活动线程之间来回切换所有16个线程。因而,理论上,CPU核心102可以在一段时间跨度内把一些资源投入到所有16个线程。
[0036]在活动线程和不活动线程之间的差别在于,活动线程将其上下文信息本地存储在CPU核心102的寄存器中,而不活动线程将其上下文信息存储在这样的寄存器外,例如存储在系统存储器104中。线程的“上下文”包括线程的操作信息,例如线程的程序代码正在操作的特定变量的值。
[0037]因而,作为在活动状态和不活动状态之间来回切换线程的活动的一部分,通用CPU核心102的活动包括:i)对于从活动切换到不活动的线程,把来自CPU 102寄存器103的上下文信息外部保存到系统存储器104 ;ii)对于从不活动切换到活动的线程,把来自系统存储器104的上下文信息内部加载到CPU 102寄存器。
[0038]取决于实现,判断哪些线程活动、哪些线程不活动,并且控制关联的切换,可以以软件(例如,在OS中)、通用CPU核心102或其他关联硬件或两者的某种组合来实现。在一种实施例中,CPU核心的寄存器103保存由线程的程序代码调用的管线的功能单元所执行的整数指令、浮点指令和向量指令中的一种或多种的数据操作数和/或结果。CPU寄存器也可以保存线程专用的控制信息,例如页面表和目录的位置等等。
[0039]问题在于,迄今为止,加速器单元通常还没有与通用CPU核心紧密耦合。因而,在图1的新方法中,线程的上下文信息容易不仅具有执行单元和CPU核心102的管线的操作数和/或其他信息(例如,寄存器103中的整数、浮点和向量功能单元的上下文),而且还具有一个或多个加速器的操作数和/或其他信息(例如,在加速器寄存器105中)。因而,图1的新方法的操作的一部分包括在处理核心100和系统存储器104之间交换加速器相关的上下文信息,这与在CPU核心寄存器103和系统存储器104之间交换传统的上下文信息相称。换句话说,可以把在CPU核心和加速器寄存器103、105两者内的上下文信息切换到/切换出系统存储器104,以便支持单个线程的激活/失活。
[0040]在继续之前,值得一提的是,许多如今的计算系统实现“虚拟化”。在典型的实现中,在操作系统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。
[0041]VM向在其上运行的软件呈现CPU的存在。结果,至少作为第一种近似,在虚拟机上运行的软件可以“认为”它本身拥有整个计算机系统的资源。VMM 109负责在底层多处理器CPU 120上支持多个VM。因而,VMM 109协调多个VM在多处理器CPU 120上的并发请求/需求。这包括使得底层计算系统的实际资源(例如,CPU线程、系统存储器空间、盘驱动器存储空间等等)与在VM上运行的软件所引用的“虚拟”计算系统资源的分配相互关联。线程激活/失活和关联的上下文切换控制可以至少部分由OS实例、VMM或两者的某种组合执行。因而,简单起见,术语“OS”将被用来指代操作系统实例、虚拟化层或两者的某种组合。
[0042]图2示出活动/不活动线程切换过程,其包括标准通用CPU核心线程上下文信息以及加速器相关的上下文信息两者在内部寄存器和系统存储器之间的交换。
[0043]如图2中的过程可见,在运行时之前期间(即,在通用CPU核心实际执行线程的程序代码之前),例如在程序器正在编写代码时和/或作为把线程的源代码编译成目标代码的一部分,定义线程201。线程的定义的一部分包括关于线程是否使用任何加速器以及在进一步的实施例中如果是这样则使用哪些加速器的指示。在这里,如在图1的新核心100方法中可见,多个加速器101_1到101_N “挂上(hang off) ”通用CPU核心102。取决于线程的目的/角色,线程可以不使用、使用一些或全部这样的加速器。
[0044]在这里,作为典型的情况,线程被定义为在操作系统上“运行”的应用软件程序的一部分(例如,在OS实例107_1上运行的应用110_1,0S实例107_1在VMM 109上运行)。在运行时期间,OS负责把线程分派给具体的CPU核心。作为分派过程的一部分,在线程包含使用加速器的程序代码的情况中,OS把指示使用一个或多个加速器201的信息写入到CPU核心。
[0045]随后,处理器向OS告知为了外部保存一个或多个加速器202的状态信息而需要在系统存储器中分配的空间量。作为响应,OS进行到分配存储器空间203。
[0046]当线程在通用CPU核心上实际激活和执行时,该线程使用一个或多个加速器。一个或多个加速器的实际操作引起生成与一个或多个加速器相关联的状态信息204。一旦做出线程应去往不活动状态的随后决定205,作为线程从活动到不活动状态的改变的一部分,把一个或多个加速器的上下文信息存储206在先前在过程203中分配了的存储器空间中。
[0047]尽管图2中未叙述,但可以把线程的其他状态信息(例如通用CPU核心寄存器的状态信息(例如,整数寄存器、浮点寄存器、向量寄存器等等))外部保存到系统存储器,这与保存加速器的状态信息相称。
[0048]一旦以后决定恢复线程并将其从不活动转换到活动状态207,就从系统存储器恢复过程206中所保存的与线程的一个或多个加速器相关联的状态信息,并将其加载到一个或多个加速器的关联的寄存器空间208。
[0049]取决于实现,在活动到不活动线程状态过渡期间,例如因变于线程是否实际上已经使用了特定的加速器,可以个别地保存或不保存特定加速器的状态信息。例如,OS可以允许三个加速器用于具体的线程,然而,在线程的最初执行到其首次活动至不活动过渡之后,该线程实际上只是用了一个加速器。在这种情况中,仅需要把实际使用的线程的状态信息外部保存到存储器。
[0050]因而,在一种实施例中,线程跟踪它实际上使用了哪些加速器,并在做出把线程从活动切换到不活动状态的决定时采取措施仅保存已被经使用的加速器的状态信息。根据一种方法,每当线程进入到活动状态时(例如,在首次创建线程时以及每当线程从不活动切换到活动状态时),“清除”对已经使用的那些加速器的跟踪。
[0051]在一种实施例中,线程维护具有用于核心中的每一加速器的比特位置的向量。在线程进入活动状态时,所有加速器比特被设置为0,且自线程进入到活动状态以来每当随后首次使用加速器时,该加速器的比特位置被设置为I。在做出使得线程进入不活动状态的决定时,使用该向量来确定实际上需要把哪些加速器的状态从内部寄存器保存到外部系统存储器。
[0052]可以(但不必定)借助于英特尔ISA指令执行以上所描述的处理。图3示出借助于基于英特尔的技术执行的图2的过程的实施例,其中,改进当前现有英特尔指令以便包含一个或多个加速器的上下文切换。本质上,每一加速器被看作是x87、SSE和AVX之外的扩展。如图3可见,作为把线程分派给核心的一部分,且在线程包括使用加速器的程序代码时,OS把启用一个或多个加速器的信息写入到通用CPU的XCRO寄存器301。通过在XCRO寄存器中设置其他扩展的特定比特,也可以启用其他扩展(例如,可以启用x87、SSE和AVX扩展中的任何/所有)。
[0053]然后,通过具有执行指令的功能单元逻辑电路的通用CPU,OS执行CPWD指令302。所返回的信息向OS告知为了外部保存一个或多个所启用的加速器的状态信息而需要分配的系统存储器的空间量。作为响应,OS进行到分配存储器空间303。
[0054]当线程在通用CPU上实际激活且执行时,线程使用已启用的加速器中的一个或多个,这引起生成与加速器相关联的状态信息304。一旦后续做出线程应去往不活动状态的决定305,在通用CPU上执行XSAVE指令306,该指令把加速器的状态信息存储到为该状态信息而分配的存储器空间。输入操作数对应于OS在过程303中分配存储器空间时有效标识的存储器位置。
[0055]作为XSAVE指令的一部分,存储XSTATE_BV向量,带有状态信息,用于指示哪些加速器的状态信息已经存储在存储器中。在一种实施例中,在执行XSAVE指令时,XSTATE_BV中的信息被用作指示要外部保存哪些特定加速器的各自的状态信息的掩码。此外,在进一步的实施例中,XSTATE_BV向量连同加速器状态信息一起外部保存在系统存储器中。XSTATE_BV向量也可以指示使用其他扩展,例如使用x87、SSE和/或AVX扩展。
[0056]与XSAVE指令的执行相称,在GPP核心管线内,线程所使用的其他“扩展”的状态信息,例如浮点数和/或向量寄存器状态(包括不同大小的向量状态,例如128位向量(SSE)和256位向量(AVX)),也可以被外部存储到系统存储器中。在一种实施例中,相同的XSAVE指令被用来保存所有这样的状态信息(加速器、浮点和向量(两种尺寸))。此外,与XSAVE指令的执行相称,除与扩展相关联的状态信息外,线程的状态信息(例如,整数寄存器状态、GPP核心管线状态等等)也可以被外部存储到系统存储器。
[0057]一旦以后决定把线程从不活动恢复到活动状态307,就执行XRSTOR指令308,以便从系统存储器恢复加速器状态,并将其加载到其关联的一个或多个加速器。在这里,首先从系统存储器读取XSTATE_BV向量309,并检查,以便理解要通过前述XSAVE指令把哪些扩展的状态写入到存储器。在检查XSTATE_BV向量时,处理器理解已经外部存储其状态的那些扩展的状态,并从系统存储器把它们调用到自身。各扩展可以包括一个或多个加速器。因而,可以把一个或多个加速器的状态信息调用到处理器中(例如,连同诸如x87、SSE和AVX等的其他扩展一起)。
[0058]再次,也可以把该线程的其他状态信息调用到通用CPU核心中,以便完整地还原线程。
[0059]示例性计算机架构
[0060]图4-图7是示例性计算机架构的框图。本领域中已知用于膝上型计算机、台式机、手持式PC、个人数字助理、工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝式电话、便携式媒体播放器、手持式设备和各种其他电子设备的其他系统设计和配置也合适的。通常,能够合并在此公开的处理器和/或其他执行逻辑的多种多样的系统或电子设备通常是合适的。
[0061]现在参见图4,所示出的是根据本发明的一种实施例的系统400的框图。系统400可以包括耦合控制器中枢420的一个或多个处理器410、415。在一种实施例中,控制器中枢420包括图形存储器控制器中枢(GMCH) 490和输入/输出中枢(1H) 450 (它们可以是在单独的芯片上);GMCH 490包括耦合到存储器440和协处理器445的存储器和图形控制器;1H 450把输入/输出(I/O)设备460耦合到GMCH490。替代地,存储器和图形控制器中的一种或两者集成在处理器内(如在此描述的),存储器440和协处理器445直接耦合到处理器410,且控制器中枢420处于与1H 450相同的单个芯片中。
[0062]图4中用虚线指示了附加的处理器415的可选性质。每一处理器410、415可以包括在此描述的处理核心中的一个或多个,且可以是某种版本的处理器1100。
[0063]存储器440可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一种实施例,控制器中枢420经由多点式总线与(多个)处理器410、415通信,多点式总线例如前端总线(FSB)、点对点接口,例如快速通道互连(QPI)或类似的连接 495。
[0064]在一种实施例中,协处理器445是专用处理器,诸如例如高吞吐量话筒处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。在一种实施例中,控制器中枢420可以包括集成图形加速器。
[0065]在包括架构、微架构、热特性、功耗特性等等的指标谱方面,在物理资源410、415之间可以存在各种差异。
[0066]在一种实施例中,处理器410执行控制一般类型的操作的数据处理的指令。嵌入在指令内的可以是协处理器指令。处理器410把这些协处理器指令识别为属于应由附加协处理器445执行的类型。相应地,处理器410在协处理器总线或其他互连上把这些协处理器指令(或表示协处理器指令的控制信号)发送给协处理器445。(各)协处理器445接受和执行所接收的协处理器指令。
[0067]现在参见图5,所示出的是根据本发明的一种实施例的第一更具体的示例性系统500的框图。如图5中所示出,多处理器系统500是点对点互连系统,且包括经由点对点互连550耦合的第一处理器570和第二处理器580。处理器570和580中的每一个可以是某种版本的处理器1100。在本发明的一种实施例中,处理器570和580分别是处理器410和415,而协处理器538是协处理器445。在另一实施例中,处理器570和580分别是处理器410和协处理器445。
[0068]处理器570和580被示出为分别包括集成存储器控制器(MC)单元572和582。处理器570也包括作为其总线控制器单元的一部分的点对点(P-P)接口 576和578 ;类似地,第二处理器580包括P-P接口 586和588。处理器570、580可以经由点对点(P-P)接口550使用P-P接口电路578、588来交换信息。如图5中所示出,MC 572和582把处理器耦合到各自的存储器,即存储器532和存储器534,它们可以是本地附加到个各自的处理器的主存储器的各部分。
[0069]处理器570、580均可以经由各个P-P接口 552、554使用点对点接口电路576、594、586,598与芯片组590交换信息。芯片组590可以可选地经由高性能接口 539与协处理器538交换信息。在一种实施例中,协处理器538是专用处理器,诸如例如高吞吐量话筒处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。
[0070]共享高速缓存(未示出)可以被包括在任一种处理器中或者在两种处理器外,然而经由P-P互连与处理器连接,以使得如果处理器被置于低功率模式则可以把处理器中的任一种或者两种的本地高速缓存信息存储在共享高速缓存中。
[0071]芯片组590可以经由接口 596耦合到第一总线516。在一种实施例中,第一总线516可以是外围组件互连(PCI)总线,或诸如PCI EXPRESS总线或另一第三代I/O互连总线等的总线,但本发明的范围不限于此。
[0072]如图中所不出5,各种I/O设备514连同总线桥518 —起可以I禹合到第一总线516,总线桥518把第一总线516稱合到第二总线520。在一种实施例中,诸如协处理器、高吞吐量话筒处理器、GPGPU、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器等的一个或多个附加的处理器515被耦合到第一总线516。在一种实施例中,第二总线520可以是低针数(LPC)总线。各种设备可以被耦合到第二总线520,这些设备包括例如键盘和/或鼠标522、通信设备527和诸如在一种实施例中可以包括指令/代码和数据530的盘驱动器或其他大容量存储设备等的存储单元528。进一步,音频I/O 524可以耦合到第二总线520。注意,其他架构是可能的。例如,代替图5中的点对点架构,系统可以实现多点式总线或其他这样的架构。
[0073]现在参见图6,所示出的是根据本发明的一种实施例的第二更具体的示例性系统600的框图。图5和6中的类似的元素带有类似的标号,且已经从图6忽略了图5的某些方面,以便避免模糊图6的其他方面。
[0074]图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。
[0075]现在参见图7,所示出的是根据本发明的一种实施例的SoC 700的框图。虚线框是更高级的SoC的可选特征。在图7中,(多个)互连单元702耦合到:应用处理器710,其包括一组一个或多个核心702A-N和(多个)共享高速缓存单元706 ;系统代理单元710 ;(多个)总线控制器单元716 ;(多个)集成存储器控制器单元714 ;—组或一个或多个协处理器720,其可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元730 ;直接存储器访问(DMA)单元732 ;以及显示单元740,其用于耦合到一个或多个外置显示器。在一种实施例中,(多个)协处理器720包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量话筒处理器、嵌入式处理器等等。
[0076]在此公开的机制的实施例可以以硬件、软件、固件或这样的实现方法的组合实现。本发明的各实施例可以被实现为在可编程系统上执行计算机程序或程序代码,可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备。
[0077]可以把程序代码例如图5中所阐释的代码530应用到输入指令,以便执行此描述的功能并生成输出信息。可以以已知方式把输出信息应用到一个或多个输出设备。对于本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器等的处理器的任何系统。
[0078]可以以高级过程编程语言或对象面向编程语言实现程序代码以便与处理系统通信。如果期望的话,也可以以汇编语言或机器语言实现程序代码。事实上,在此描述的机制不限于任何具体的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
[0079]至少一种实施例的一个或多个方面可以通过存储在一种机器可读介质上的表不性指令来实现,该机器可读介质表示在处理器内的各种逻辑,在由机器读取时,表示性指令引起机器制造执行在此描述的技术的逻辑。这样的表示被称为“IP核”,可以被存储在有形机器可读介质上并被提供给各种消费者或制造设施,以便加载到实际上制成逻辑或处理器的制造机器。
[0080]这样的机器可读存储介质可以包括但不限于由机器或设备制造或形成的制品的非暂态有形配置,包括存储介质,例如硬盘、任何其他盘、半导体设备或适用于存储电子指令的任何其他介质,任何其他盘包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)和磁光盘,半导体设备例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁卡或光卡。
[0081]相应地,本发明的各实施例也包括包含诸如硬件描述语言(HDL)等的指令或包含设计数据的非暂态有形机器可读介质,硬件描述语言(HDL)定义在此描述的结构、电路、装置、处理器和/或系统特征。这样的实施例也可以被称为程序产品。
[0082]仿真(包括二进制翻译、代码拟态等等)
[0083]在一些情况中,可以使用指令转换器用来把指令从源指令集转换成目标指令集。例如,指令转换器可以把指令翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、拟态、仿真或以另外方式转换成要由核心处理的一个或多个其他指令。指令转换器可以以软件、硬件、固件或其组合实现。指令转换器可以是在处理器上、在处理器外或部分在处理器上且部分在处理器外。
[0084]图8是对比根据本发明的各实施例使用软件指令转换器来把以源指令集的二进制指令转换成以目标指令集的二进制指令的框图。在所阐释的实施例中,指令转换器是软件指令转换器,但替代地指令转换器可以以软件、固件、硬件或其各种组合实现。图8示出使用x86编译器804来编译以高级语言802的程序,以便生成可以由带有至少一个x86指令集核心的处理器816本机执行的x86 二进制代码806。带有至少一个x86指令集核心的处理器816表示可以执行与带有至少一个x86指令集核心的英特尔处理器基本相同的功能的任何处理器,该处理器兼容地执行或以另外方式处理(I)英特尔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的软件、固件、硬件或其组合的仿真、模拟或任何其他过程。
【权利要求】
1.一种方法,包括: 创建线程并标识所述线程利用加速器; 从具有所述加速器的处理器接收用于存储所述加速器的上下文的存储空间量; 通过分配所述存储空间量,创建所分配的存储空间; 在所述处理器上执行所述线程,并利用所述加速器,以便创建用于所述线程的所述加速器的上下文信息; 响应于把所述线程置于不活动状态的决定,把所述上下文信息存储在所述已分配的存储空间中。
2.如权利要求1所述的方法,其特征在于,所述加速器使用与带有执行所述线程的任务的所述处理器的CPU核心相同的虚拟-物理地址转换。
3.如权利要求2所述的方法,其特征在于,与所述线程的所述加速器的上下文信息的所述存储相称,所述线程的所述CPU核心的上下文也被存储在第二存储空间中。
4.如权利要求1所述的方法,进一步包括作为所述标识的一部分启用所述加速器。
5.如权利要求1所述的方法,进一步包括与所述上下文信息的所述存储相称,存储向量,所述向量标识所述加速器。
6.如权利要求5所述的方法,进一步包括,响应于再次激活所述线程的决定,读取所述向量,以便理解所述加速器已经保存了上下文信息,并且从所述已分配的存储空间读取用于所述线程的所述加速器的所述上下文信息,并且把所述上下文信息重新合并到所述加速器。
7.一种机器可读介质,其包含程序指令,在由处理器处理时,所述指令引起执行一种方法,所述方法包括: 创建线程并标识所述线程利用加速器; 从具有所述加速器的处理器接收用于存储所述加速器的上下文的存储空间量; 通过分配所述存储空间量,创建所分配的存储空间; 在所述处理器上执行所述线程,并利用所述加速器,以便创建用于所述线程的所述加速器的上下文信息; 响应于把所述线程置于不活动状态的决定,把所述上下文信息存储在所述已分配的存储空间中。
8.如权利要求7所述的机器可读介质,其特征在于,所述加速器使用与带有执行所述线程的任务的所述处理器的CPU核心相同的虚拟-物理地址转换。
9.如权利要求8所述的机器可读介质,其特征在于,与所述线程的所述加速器的上下文信息的所述存储相称,所述线程的所述CPU核心的上下文也被存储在第二存储空间中。
10.如权利要求7所述的机器可读介质,其特征在于,所述方法进一步包括作为所述标识的一部分启用所述加速器。
11.如权利要求7所述的机器可读介质,其特征在于,所述方法进一步包括与所述上下文信息的所述存储相称,存储向量,所述向量标识所述加速器。
12.如权利要求11所述的机器可读介质,其特征在于,所述方法进一步包括,响应于再次激活所述线程的决定,读取所述向量,以便理解所述加速器已经保存了上下文信息,并且从所述已分配的存储空间读取用于所述线程的所述加速器的所述上下文信息,并且把所述上下文信息重新合并到所述加速器。
13.一种装置,包括: 多个核心,每一核心具有: a)加速器; b)耦合到所述加速器的通用CPU,所述通用CPU具有功能单元逻辑电路,用于执行返回用于存储所述加速器的上下文信息的存储空间量的指令。
14.如权利要求13所述的装置,其特征在于,所述通用CPU进一步包括执行第二指令的第二功能单元逻辑电路,所述第二指令把所述加速器的所述上下文信息保存到为所述加速器的所述上下文信息分配的所述存储空间量。
15.如权利要求14所述的装置,其特征在于,所述第二指令也保存用所述加速器的所述上下文信息标识所述加速器的向量。
16.如权利要求15所述的装置,其特征在于,所述通用CPU进一步包括执行第三指令的功能单元逻辑电路,所述第三指令读取所述向量以便理解为所述加速器保存了上下文信息,读取所述已保存上下文信息并把它重新存储到所述加速器。
17.如权利要求13所述的装置,其特征在于,每一核心具有耦合到所述通用的多个加速器。
18.如权利要求17所述的装置,其特征在于,所述通用CPU具有寄存器,所述寄存器具有个别地启用所述加速器中的某些的字段。
【文档编号】G06F12/10GK104205042SQ201280072154
【公开日】2014年12月10日 申请日期:2012年3月30日 优先权日:2012年3月30日
【发明者】R·罗恩, E·威斯曼, K·K·凡塞纳坦, E·科恩, B·靳兹伯格 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1