当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于具有通用CPU核心和紧密耦合的加速器的处理核心的上下文切换机制制造技术

技术编号:10737314 阅读:120 留言:0更新日期:2014-12-10 12:41
本发明专利技术描述具有多个核心的装置,每一核心具有:a)加速器;以及b)耦合到加速器的通用CPU。该通用CPU具有功能单元逻辑电路,用于执行返回用于存储加速器的上下文信息的存储空间量的指令。

【技术实现步骤摘要】
【国外来华专利技术】【专利摘要】本专利技术描述具有多个核心的装置,每一核心具有:a)加速器;以及b)耦合到加速器的通用CPU。该通用CPU具有功能单元逻辑电路,用于执行返回用于存储加速器的上下文信息的存储空间量的指令。【专利说明】用于具有通用CPU核心和紧密耦合的加速器的处理核心的上下文切换机制专利
本专利技术的领域通常涉及计算系统设计,且尤其涉及用于具有通用CPU核心和紧密耦合的加速器的处理核心的上下文切换机制。背景协处理器的常规集成随着半导体制造工艺达到接近每个管芯I万亿个晶体管的时代,设计工程师面临着如何最有效地利用使用所有可用晶体管的问题。一种设计方法在管芯上用专用硬件“加速”以及一个或多个通用CPU核心实现特定计算密集功能。借助于被设计为执行特定计算密集功能的专用逻辑块,实现了加速。把密集计算迁移到这样的专用逻辑块使得(各)CPU核心免于执行大量的指令,由此增加了 CPU核心的效能和效率。尽管本领域中已知以协处理器(例如图形协处理器))的形式的“加速”,但这样的传统协处理器被OS看作是外置于OS在其上运行的(各)CPU核心的独立“设备”(在较大的计算系统内)。因此通过专用的设备驱动程序软件访问这些协处理器,且这些协处理器不在与CPU核心相同的存储器空间外操作。因而,传统的协处理器不共享或期待在CPU核心上实现的虚拟地址-物理地址转换方案。此外,在由OS把任务卸载到传统的协处理器时,遭遇大的等待时间。具体地,当CPU核心和传统的协处理器本质上对应于分离的、隔离的子系统时,在把GPP核心上的主OS中的定义的任务传送给协处理器的“内核”软件时,耗费大量的通信资源。这样的大等待时间有利于这样的系统设计:从主OS在协处理器上调用相对少见的任务,但每个任务具有大的关联数据块。实际上,主要以粗粒度方式而非细粒度方式使用传统的协处理器。随着当前的系统设计者对以细粒度的使用方式把更多加速引入到计算系统感兴趣,用于在计算系统中集成加速的新范式是必要的。CPUID/XSAVE/XRSTORE 指令和 XCRO 寄存器当前由英特尔公司提供的指令集架构(ISA)支持允许、外部保存和再次存储对ISA的传统指令集的特定硬件支持的“扩展”的状态的机制。具体地,根据一种实现,带有3种操作数指令格式(AVX)的ISA的浮点数指令(x87)、128位向量指令(SSE)和256位向量指令均被看作是对ISA的传统指令集(x86)的独立“扩展”。可以由软件写入内置于处理器的控制寄存器XCR0,以便启用这些扩展中的任何一种或多种。具体地,XCRO寄存器为三种扩展中的每一种维护一个比特(即,x87位、SSE位和AVX位)。软件(例如,操作系统(OS))准许软件根据其自己的意图个别地设置各种比特以便个别地启用X87/SSE/AVX扩展。XCRO寄存器被认为是具有附加的、当前未定义的比特位置,以使得将来可以添加附加的扩展并相应地启用/禁用。已经在ISA中实现了 CPWD指令,软件可以使用CPWD指令来判断外部存储已启用的扩展的状态信息需要多少存储器空间。例如,带有各种输入操作数值,CPWD指令可以由软件执行以判断:i)存储所有已启用的扩展的所有状态信息所需要的存储器空间的总量;ii)存储已启用的扩展中的任何具体一个的所有状态信息所需要的存储器空间的总量。因而,例如,如果启用了 x87和SSE扩展,则CPWD指令可以用来确定:i)存储x87和SSE扩展的所有状态信息所需要的存储器空间的总量;ii)仅存储x87扩展的所有状态信息所需要的存储器空间的总量;以及,iii)仅存储SSE扩展的所有状态信息所需要的存储器空间的总量。在这里,由于扩展的状态信息主要对应于该扩展的关联数据寄存器(即,x87扩展的浮点寄存器、SSE扩展的128位寄存器、AVX扩展的256位寄存器)中所存储的信息,CPU硬件知道“多大”寄存器空间用于其扩展中的每一种且可以容易地作为CPUID指令的结果提供/返回这样的信息。因而,在典型的情况中,软件将执行CPWD指令以便理解需要为它已经启用的各种扩展的状态信息分配多少存储器空间,然后,进行到分配这样的存储器空间。由软件调用XSTORE指令,以便外部地保存任何/所有启用的扩展的状态信息。在这里,把其中保存状态信息的存储器地址作为输入值提供给指令,且处理器核心引起把(各)扩展的状态信息写入到该地址处的系统存储器。在XSTORE指令的任何具体执行中,不是所有已启用的扩展都可以保存它们的状态信息。执行XSTORE指令所利用的、其比特位置基本上对应于XCRO寄存器中的那些位置的掩码寄存器,被用来有选择地指定通过XSTORE指令把哪些经启用扩展的状态信息存储起来。外部存储的信息也包括对应于掩码寄存器信息的XSTATE_BV向量字段。即是说,XSTATE_BV向量字段指示哪些扩展已经把它们的状态信息外部存储在存储器中。XRSTOR指令对应于XSTORE指令的逻辑逆。在XRSTOR指令的情况下,指令的输入值指定把(各)扩展的状态信息存储在系统存储器中的何处。该指令的执行引起处理器核在该地址处从存储器读取状态信息,并把该状态信息加载到适当的扩展寄存器空间中。作为加载过程的一部分,处理器首先读取存储器中所存储的XSTATE_BV向量字段的内容,以便理解哪些扩展已经把它们的状态信息存储在存储器中。然后,处理器从存储器把如XSTATE_BV向量字段中所指示的已经把它们的状态信息外部存储在存储器中的那些扩展的状态信息加载到其本身。理想的情况是,向XRSTOR指令提供由掩码向量,该掩码向量匹配从存储器读取的XSTATE_BV向量的内容,且其已设定的比特对应于XCRO寄存器中已启用的扩展。附图简述在附图中作为示例而非限制阐述本专利技术,附图中,相似的标号指示类似的元素,且附图中:图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所使本文档来自技高网...

【技术保护点】
一种方法,包括:创建线程并标识所述线程利用加速器;从具有所述加速器的处理器接收用于存储所述加速器的上下文的存储空间量;通过分配所述存储空间量,创建所分配的存储空间;在所述处理器上执行所述线程,并利用所述加速器,以便创建用于所述线程的所述加速器的上下文信息;响应于把所述线程置于不活动状态的决定,把所述上下文信息存储在所述已分配的存储空间中。

【技术特征摘要】
【国外来华专利技术】

【专利技术属性】
技术研发人员:R·罗恩E·威斯曼K·K·凡塞纳坦E·科恩B·靳兹伯格
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1