用于调用多线程加速器的装置和方法

文档序号:9221608阅读:588来源:国知局
用于调用多线程加速器的装置和方法
【专利说明】用于调用多线程加速器的装置和方法发明领域
[0001]本发明的领域总体上涉及计算系统设计并且更具体地涉及用于调用多线程加速器的装置和方法。
[0002]背景
[0003]随着半导体制造工艺正在到达接近每管芯一万亿个晶体管的时代,设计工程师面临如何最有效地使用所有可用晶体管的问题。一种设计方法是用管芯上的专用硬件“加速”以及一个或多个通用CPU核实现特定计算密集型功能。
[0004]加速是用被设计成用于执行特定计算密集型功能的专用逻辑块实现的。将密集型计算迀移到这种专用逻辑块将CPU核从执行大量指令中释放,由此提高了 CPU核的有效性和效率。
[0005]尽管协处理器(诸如图形协处理器)形式的“加速”在本领域中是已知的,这种传统的协处理器被OS视为位于OS运行所在的CPU核外部的单独的“设备”(在更大的计算系统内)。因此通过特殊设备驱动软件访问这些协处理器并且其不在与CPU核相同的存储器空间之外操作。这样,传统的协处理器不共享或考虑在CPU核上实现的虚拟地址到物理地址转换方案。
[0006]而且,当任务被OS分流到传统的协处理器时,遇到较大等待时间。确切地,因为CPU核和传统的协处理器本质上与单独的隔离的子系统相对应,当在GPP核上的主OS内定义的任务被传递到协处理器的“内核”软件时,耗费大量的通信资源。这种较大等待时间有利于如下系统设计:该系统设计在协处理器上从主OS调用相对不频繁的任务但是对于每个任务具有大的相关联的数据块。事实上,传统的协处理器主要以粗粒度方式而不是细粒度方式被利用。
[0007]因为当前系统设计人员对向计算系统引入具有更细粒度使用的更多加速感兴趣,保证了用于在计算系统内集成加速的新范例。
[0008]附图
[0009]通过举例而非通过限制在附图的图示中展示本发明,在附图中,类似的参考表示类似的元素,并且在附图中:
[0010]图1示出其处理核各自包括通用处理核和紧密地耦合到通用处理核的加速器的计算系统;
[0011]图2示出用于从主通用CPU核调用多线程加速器核的过程;
[0012]图3示出具有通用CPU核和加速器的处理器的实施例,其中通用CPU核包括用于为加速器的多个微线程创建主线程的上下文的多个副本的逻辑电路;
[0013]图4示出用于异常和/或中断处理的方法。
[0014]详细描述
[0015]尽管协处理器(诸如图形协处理器)形式的“加速”在本领域中是已知的,这种传统的协处理器被OS视为位于OS运行所在的CPU核外部的单独的“设备”(在更大的计算系统内)。因此通过特殊设备驱动软件访问这些协处理器并且其不在与CPU核相同的存储器空间之外操作。这样,传统的协处理器不共享或考虑在CPU核上实现的虚拟地址到物理地址转换方案。
[0016]而且,当任务被OS分流到传统的协处理器时,遇到较大等待时间。确切地,因为CPU核和传统的协处理器本质上与单独的隔离的子系统相对应,当在GPP核上的主OS内定义的任务被传递到协处理器的“内核”软件时,耗费大量的通信资源。这种较大等待时间有利于如下系统设计:该系统设计在协处理器上从主OS调用相对不频繁的任务但是对于每个任务具有大的相关联的数据块。事实上,传统的协处理器主要以粗粒度方式而不是细粒度方式被利用。
[0017]因为当前系统设计人员对向计算系统引入具有更细粒度使用的更多加速感兴趣,保证了用于在计算系统内集成加速的新范例。
[0018]图1示出新的处理核100_1架构,其中加速器101_1至101_N被设计为类似于耦合到核的传统通用CPU 102的大标量功能单元。多个这种核100_1至100_Q可布置在单个处理器120上,该单个处理器布置在如图1所示的半导体芯片上。
[0019]在此,从存储器读取标准指令并且其由CPU核102中的核的传统功能单元执行。然而,处理核100_1所接收的其他类型的指令将触发加速器动作。在特定实现方式中,底层硬件支持软件用代码调用特定加速器的能力。即,特定命令可由软件编程人员(或由编译器)体现为代码,其中该特定命令调用特定加速器单元并定义输入操作数。
[0020]该命令最终以某种目标代码的形式展现。在运行时期间,底层硬件“执行”该目标代码并且在这样做时用相关联的输入数据调用该特定加速器。
[0021]当被调用时,该加速器在与CPU核102相同的存储器空间之外操作。这样,可为具有虚拟地址的加速器标识数据操作数,这些虚拟地址到物理地址空间的相应转换与CPU核102所使用的那些相同。而且,通常,加速器单元执行命令的执行时间长于传统/标准指令(由于所执行的任务的复杂性质)。输入操作数和/或产物也可大于CPU 102内的指令执行流水线的标准寄存器尺寸。
[0022]加速器因此可通常被视为比CPU 102的传统功能单元和指令的粒度更粗糙(具有更大的执行时间和/或在更大的数据块上操作)。同时,加速器还可通常被视为粒度更细,或者至少比传统协处理器更紧密地耦合到CPU核102。
[0023]确切地,避免耗时的“驱动器调用”以便由加速器和通用CPU 102调用加速器和/或共享相同的存储器空间,这对应于到通用CPU 102和加速器之间的与传统协处理器相比更紧密耦合。此外,加速器被调用执行的特定各个任务也可比传统上由协处理器执行的更大的批量任务的粒度更细。适合作为单个“可调用”操作通过加速器实现的特定各个任务包括纹理采样、运动搜索或运动补偿、安全相关计算(例如,密码术、加密等等)、特定金融计算和/或特定科学计算。
[0024]通用CPU核102可具有一个或多个指令执行流水线。现代CPU核通常能够并发地执行多个线程。通过多个流水线的多个线程并发执行是直接的概念。而且,单个流水线还可被设计成用于支持多个线程的并发执行。
[0025]因为加速器的目的是为特定计算提供比通用CPU核能够提供的性能更高的性能,可如何获得“更高的性能”的某种讨论是值得的。图2示出在通用CPU核上执行的示例性线程201_1。注意,通用CPU核是并发地支持至少一个其他线程201_X的执行的多线程核。与线程的共同理解相一致,如图2所示,线程201_1至201_X各自是单个指令流。
[0026]在点202,线程201_1调用加速器。在典型的实现方式中,加速器包括被特殊地设计成用于执行复杂任务的一个或多个专用执行单元。这些专用执行单元的调用提供由加速器提供的某些加速。然而,如图2所示,加速器的调用还产生多个“微线程”203_1至203_Y。
[0027]微线程203_1至203_Y有待与微代码区分。微代码是位于执行单元内部的执行单元用于执行其被设计成用于执行的指令的原子程序代码。加速器的执行单元可以是微代码化的,但这并非必须。对比之下,微线程203_1至203_Υ是类似于线程201_1至201_Χ的指令流。也就是,微线程203_1至203_Υ指定有待由加速器的执行单元
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1