用于在加速架构中的自动迁移的技术的制作方法

文档序号:17048776发布日期:2019-03-05 19:49阅读:175来源:国知局
用于在加速架构中的自动迁移的技术的制作方法

本申请要求2017年8月30日提交的印度临时专利申请no.201741030632和2017年11月10日提交的美国临时专利申请no.62/584,401的权益。



背景技术:

网络运营商和服务提供商通常依赖于各种加速器技术来加速复杂、大规模计算环境(诸如高性能计算(hpc)和云计算环境)中的工作载荷。这些加速器能配置成以有效率的、并行的方式执行专用计算(例如搜索、模式匹配、信号和图像处理、加密等)。一种此类加速器技术是由能被硬件编程为履行特定任务的逻辑门的阵列构成的现场可编程门阵列(fpga)。具体地说,fpga的时钟周期与处理器时钟速率相比相对低,这意味着fpga相对处理器核一般更功率有效。

相应地,在一些计算架构中,虽然应用的硬件线程正由处理器执行,但某些应用功能性(例如计算内核)可被卸载到fpga。通常,应用的硬件线程在等待计算内核在fpga中执行时被暂停。然而,因为硬件线程仅仅被暂停,因此要求软件堆栈对暂停/再继续进行判定,这在某些条件下可能是低效的解决方案。此外,暂停/再继续应用线程目前在毫秒数量级工作(例如通过软件交互来驱动),并且仅考虑二元的解决方案(即暂停/再继续),这在某些计算环境中可能是不灵活的解决方案。

附图说明

本文描述的概念在附图中作为示例而不作为限制被示出。为了示出的简洁和清晰,在图中示出的元件不一定按比例绘制。视情况而定,引用标记已经在图之间被重复以指示对应的或类似的元件。

图1是对于用解聚的资源(disaggregatedresource)执行工作载荷的数据中心的至少一个实施例的简化框图;

图2是图1的数据中心的舱(pod)的至少一个实施例的简化框图;

图3是可被包含在图2的舱中的支架的至少一个实施例的透视图;

图4是图3的支架的侧平面正视图;

图5是其中安装了滑撬(sled)的图3支架的透视图;

图6是图5的滑撬的顶侧的至少一个实施例的简化框图;

图7是图6的滑撬的底侧的至少一个实施例的简化框图;

图8是可用在图1的数据中心中的计算滑撬的至少一个实施例的简化框图;

图9是图8的计算滑撬的至少一个实施例的顶透视图;

图10是可用在图1的数据中心中的加速器滑撬的至少一个实施例的简化框图;

图11是图10的加速器滑撬的至少一个实施例的顶透视图;

图12是可用在图1的数据中心中的存储装置滑撬的至少一个实施例的简化框图;

图13是图12的存储装置滑撬的至少一个实施例的顶透视图;

图14是可用在图1的数据中心中的存储器滑撬的至少一个实施例的简化框图;以及

图15是可在图1的数据中心内建立的用于用由解聚的资源构成的管理的节点来执行工作载荷的系统的简化框图。

图16是用于在加速架构中的自动迁移的系统的至少一个实施例的简化框图,所述加速架构包含多个计算滑撬、存储装置滑撬、多个加速器滑撬、网络交换机和资源管理器服务器;

图17是图16的系统的计算滑撬之一的至少一个实施例的简化框图;

图18是可由图16和17的计算滑撬之一建立的环境的至少一个实施例的简化框图;

图19是图16的系统的网络交换机的至少一个实施例的简化框图;

图20是用于将计算内核卸载到现场可编程门阵列(fpga)的方法的至少一个实施例的简化流程图,所述计算内核可由目前在图16的系统的一个或更多个计算滑撬上执行的应用来执行;

图21a和21b是可由图16-18的计算滑撬之一执行的用于在加速架构中的自动迁移的方法的至少一个实施例的简化流程图;

图22a和22b是应用与具有高性能中央处理单元(cpu)的图16的系统的计算滑撬之一中的另一应用合并的自动迁移的至少一个实施例的简化框图;

图23a和23b是应用从图16的系统的计算滑撬之一的高性能cpu被迁移到具有低性能cpu的计算滑撬中的另一个的自动迁移的至少一个实施例的简化框图;以及

图24a和24b是应用和计算内核到图16的系统的加速器滑撬之一的自动迁移的至少一个实施例的简化框图。

具体实施方式

虽然本公开的概念易受各种修改和备选形式的影响,但其特定实施例已经在附图中作为示例被示出,并且将在本文中被详细描述。然而,应该理解到,没有意图将本公开的概念限制于所公开的具体形式,而是相反,本发明要涵盖与本公开和所附权利要求书一致的所有修改、等效和备选。

在说明书中对“一个实施例”、“一实施例”、“说明性实施例”等的引用指示所描述的实施例可包含具体特征、结构或特性,但每一个实施例可包含或者可能不一定包含该具体特征、结构或特性。而且,此类短语不一定指的是同一实施例。另外,当具体特征、结构或特性结合一实施例进行描述时,不管是否被明确描述,结合其它实施例来实现此类特征、结构或特性被认为在本领域技术人员的知识范围内。此外,应该认识到,以“至少一个a、b和c”形式的列表中包含的项能意味着(a);(b);(c);(a和b);(a和c);(b和c);或(a、b和c)。类似地,以“a、b或c中至少一个”形式的列表中包含的项可意味着(a);(b);(c);(a和b);(a和c);(b和c);或(a,b和c)。

所公开的实施例在一些情况下可以用硬件、固件、软件或它们的任何组合来实现。所公开的实施例也可实现为由易失性或非易失性机器可读(例如计算机可读)存储介质携带的或存储在所述易失性或非易失性机器可读存储介质上的指令,所述指令可由一个或更多个处理器读取和执行。机器可读存储介质可被实施为用于以由机器可读的形式对信息进行存储或传送的任何存储装置、机构或其它物理结构(例如易失性或非易失性存储器、媒体盘或其它媒体装置)。

在附图中,一些结构性或方法特征可在特定布置和/或排序中示出。然而,应该认识到,此类特定布置和/或排序可以不是必需的。而是,在一些实施例中,此类特征可按与说明性图中示出的不同的方式和/或次序来布置。此外,在具体图中包含结构性或方法特征不意图暗示此类特征在所有实施例中都是必需的,并且在一些实施例中,此类特征可能不被包含,或者可与其它特征组合。

现在参考图1,解聚的资源可在其中合作执行一个或更多个工作载荷(例如代表顾客的应用)的数据中心100包含多个舱110、120、130、140,其中的每个舱都包含一行或更多行支架。如本文更详细描述的,每个支架容纳多个滑撬,每个滑撬可被实施为主要配备有具体类型的资源(例如存储器装置、数据存储装置、加速器装置、通用处理器)的计算装置(诸如服务器)。在说明性实施例中,每个舱110、120、130、140中的滑撬连接到多个舱交换机(例如将数据通信路由往和来于舱内的滑撬的交换机)。舱交换机进而与脊柱交换机150连接,脊柱交换机150交换在数据中心100中的舱(例如舱110、120、130、140)之中的通信。在一些实施例中,滑撬可使用英特尔全路径技术与结构连接。如本文更详细描述的,数据中心100中的滑撬内的资源可被分配给含有来自要在工作载荷的执行中共同利用的一个或更多个其它滑撬的资源的组(在本文称为“管理的节点”)。工作载荷能好像属于管理的节点的资源位于同一滑撬上那样被执行。管理的节点中的资源甚至可归于属于不同支架并且甚至属于不同舱110、120、130、140的滑撬。单个滑撬的某些资源可被分配给一个管理的节点,而同一滑撬的其它资源被分配给不同管理的节点(例如一个处理器指配给一个管理的节点和同一滑撬的另一处理器指配给不同管理的节点)。通过将资源解聚的成主要由单个类型的资源构成的滑撬(例如主要包括计算资源的计算滑撬、主要含有存储器资源的存储器滑撬),并且选择性地分配和取消分配解聚的的资源以形成被指配用于执行工作载荷的管理的节点,数据中心100在由含有计算、存储器、存储装置可能还有附加资源的超会聚服务器构成的典型数据中心上提供更有效率的资源使用。因此,数据中心100可比具有相同数量资源的典型数据中心提供更好的性能(例如吞吐量、每秒的操作、时延等)。

现在参考图2,在说明性实施例中,舱110包含支架240的行200、210、220、230的集合。如本文更详细描述的,每个支架240可容纳多个滑撬(例如16个滑撬),并且向容纳的滑撬提供功率和数据连接。在说明性实施例中,每行200、210、220、230中的支架连接到多个舱交换机250、260。舱交换机250包含舱110的支架的滑撬连接到的一组端口252以及将舱110连接到脊柱交换机150以提供到数据中心100中其它舱的连接性的另一组端口254。类似地,舱交换机260包含舱110的支架的滑撬连接到的一组端口262以及将舱110连接到脊柱交换机150的另一组端口264。因此,该对交换机250、260的使用向舱110提供大量冗余。例如,如果交换机250、260中的任一个故障,则舱110中的滑撬仍可通过另一交换机250、260维持与数据中心100的剩余部分(例如其它舱的滑撬)的数据通信。另外,在说明性实施例中,交换机150、250、260可被实施为双模式光学交换机,能够经由光纤的光学信令介质将携带因特网协议(ip)分组的因特网协议通信和根据第二高性能链路层协议(例如英特尔的全路径架构,无限带)的通信两者进行路由。

应该认识到,其它舱120、130、140中的每个舱(以及数据中心100的任何附加舱)可类似地被结构化为在图2中示出的并且关于图2描述的舱110,并且具有类似于舱110的组件(例如每个舱可具有如上所述容纳多个滑撬的支架的行)。此外,虽然示出了两个舱交换机250、260,但应该理解到,在其它实施例中,每个舱110、120、130、140可连接到不同数量的舱交换机(例如提供甚至更多故障转移(failover)能力)。

现在参考图3-5,数据中心100的每个说明性支架240包含两个延长的支柱302、304,它们垂直布置。例如,延长的支柱302、304当部署时可从数据中心100的地板向上延伸。如下面所描述的,支架240还包含配置成支撑数据中心100滑撬的一对或更多对310水平延长的支臂312(在图3中经由虚线椭圆标识)。该对延长的支臂312的一个延长的支臂312从延长的支柱302向外延伸,并且另一延长的支臂312从延长的支柱304向外延伸。

在说明性实施例中,数据中心100的每个滑撬被示出为无底盘滑撬。也就是,每个滑撬具有其上安装了物理资源(例如处理器、存储器、加速器、存储装置等)的无底盘电路板衬底,如下面更详细论述的。因此,支架240配置成接收无底盘滑撬。例如,每对310延长的支臂312定义支架240的滑撬槽320,其配置成接收对应的无底盘滑撬。为了这么做,每个说明性延长的支臂312包含配置成接收滑撬的无底盘电路板衬底的电路板导轨330。每个电路板导轨330被固定到或以别的方式安装到对应延长的支臂312的顶侧332。例如,在说明性实施例中,每个电路板导轨330被安装在对应延长的支臂312的相对于对应延长的支柱302、304的远端。为了图的清晰起见,不是每一个电路板导轨330在每幅图中都可提及。

每个电路板导轨330包含内壁,其定义配置成当滑撬400在支架240的对应滑撬槽320中被接收时接收滑撬400的无底盘电路板衬底的电路板槽380。为了这么做,如图4中所示,用户(或机器人)将说明性无底盘滑撬400的无底盘电路板衬底与滑撬槽320对齐。用户或机器人然后可将无底盘电路板衬底向前滑进到滑撬槽320中,使得无底盘电路板衬底的每个侧边414被接收在定义对应滑撬槽320的该对310延长的支臂312的电路板导轨330的对应电路板槽380中,如图4中所示。通过具有包括解聚的资源的机器人可访问并且机器人可操纵的滑撬,每种类型的资源能独立于彼此并以它们自己的最优刷新率被升级。另外,滑撬配置成与每个支架240中的功率和数据通信线缆盲配对,增强它们的被快速移除、升级、重新安装和/或替代的能力。因此,在一些实施例中,数据中心100可在没有在数据中心层上的人工参与的情况下进行操作(例如执行工作载荷、经历维护和/或升级等)。在其它实施例中,人可以促进数据中心100中的一个或更多个维护或升级操作。

应该认识到,每个电路板导轨330是双侧的。也就是,每个电路板导轨330包含在电路板导轨330的每侧上定义电路板槽380的内壁。用这种方式,每个电路板导轨330能在每一侧上支撑无底盘电路板衬底。因此,可向支架240增加单个附加的延长的支柱,以将支架240变成双支架解决方案,其能容下的滑撬槽320是图3中所示的滑撬槽320两倍。说明性支架240包含七对310延长的支臂312,它们定义对应的七个滑撬槽320,每个滑撬槽配置成接收并支撑对应的滑撬400,如上面所论述的。当然,在其它实施例中,支架240可包含附加或更少对310延长的支臂312(即附加或更少滑撬槽320)。应该认识到,因为滑撬400是无底盘的,因此滑撬400可具有不同于典型服务器的总高度。因此,在一些实施例中,每个滑撬槽320的高度可短于典型服务器的高度(例如短于单个排单元“1u”)。也就是,在每对310延长的支臂312之间的垂直距离可小于标准支架单元“1u”。此外,由于滑撬槽320的高度中的相对减小,支架240的总高度在一些实施例中可比传统支架外壳的高度短。例如,在一些实施例中,每一个延长的支柱302、304可具有6英尺或更小的长度。再者,在其它实施例中,支架240可具有不同尺寸。另外,应该认识到,支架240不包含任何壁、外壳、或诸如此类。而且,支架240是对本地环境开放的无外壳支架。当然,在一些情况下,在支架240形成数据中心100中的行尾支架的那些情形下,端板可附连到延长的支柱302、304之一。

在一些实施例中,各种互连可通过延长的支柱302、304向上或向下路由。为了促进此类路由,每个延长的支柱302、304包含定义其中可定位互连的内部腔室的内壁。通过延长的支柱302、304路由的互连可被实施为任何类型的互连,包含但不限于向每个滑撬槽320提供通信连接的数据或通信互连、向每个滑撬槽320提供功率的功率互连和/或其它类型互连。

在说明性实施例中,支架240包含支撑平台,对应光学数据连接器(未示出)被安装所述支撑平台上。每个光学数据连接器与对应滑撬槽320关联,并且配置成当滑撬400被接收于对应滑撬槽320中时与对应滑撬400的光学数据连接器配对。在一些实施例中,数据中心100中的组件(例如滑撬、支架和交换机)之间的光学连接用盲配对光学连接进行。例如,每个线缆上的门可防止灰尘污染线缆内部的光纤。在连接到盲配对光学连接器机构的过程中,当线缆末端进入连接器机构时,门被推开。随后,线缆内部的光纤进入连接器机构内的凝胶,并且一个线缆的光纤开始与连接器机构内部的凝胶内的另一线缆的光纤接触。

说明性支架240还包含耦合到支架240的交叉支臂的风扇阵列370。风扇阵列370包含一行或更多行冷却风扇372,它们在延长的支柱302、304之间的水平线中对齐。在说明性实施例中,风扇阵列370对于支架240的每个滑撬槽320都包含一行冷却风扇372。如上面所论述的,在说明性实施例中,每个滑撬400都不包含任何板载的冷却系统,并且因此,风扇阵列370为在支架240中接收的每个滑撬400提供冷却。在说明性实施例中,每个支架240还包含与每个滑撬槽320关联的电源。每个电源被固定到定义对应滑撬槽320的该对310延长的支臂312的其中一个延长的支臂312。例如,支架240可包含耦合到或固定到从延长的支柱302延伸的每个延长的支臂312的电源。每个电源包含配置成当滑撬400被接收于对应滑撬槽320中时与滑撬400的功率连接器配对的功率连接器。在说明性实施例中,滑撬400不包含任何板载的电源,并且因此,支架240中提供的电源当对应滑撬400被安装到支架240时向对应滑撬400供电。

现在参考图6,在说明性实施例中,滑撬400配置成如上面所论述的被安装在数据中心100的对应支架240中。在一些实施例中,每个滑撬400可被优化或以别的方式配置用于执行具体任务,诸如计算任务、加速任务、数据存储任务等。例如,滑撬400可被实施为下面关于图8-9所论述的计算滑撬800、下面关于图10-11所论述的加速器滑撬1000、下面关于图12-13所论述的存储装置滑撬1200、或者被优化或以别的方式配置成执行其它专门任务的滑撬(诸如存储器滑撬1400)(下面关于图14被论述)。

如上面所论述的,说明性滑撬400包含无底盘电路板衬底602,其支撑安装在其上的各种物理资源(例如电气组件)。应该认识到,电路板衬底602是“无底盘的”,在于滑撬400不包含机壳或外壳。而是,无底盘电路板衬底602对本地环境开放。无底盘电路板衬底602可由能够支撑安装在其上的各种电气组件的任何材料形成。例如,在说明性实施例中,无底盘电路板衬底602由fr-4玻璃增强环氧树脂层压材料形成。当然,在其它实施例中,可使用其它材料形成无底盘电路板衬底602。

如下面更详细论述的,无底盘电路板衬底602包含改进安装在无底盘电路板衬底602上的各种电器组件的热冷却特性的多个部件。如所论述的,无底盘电路板衬底602不包含机壳或外壳,这可通过减少可能抑制空气流动的那些结构来改进滑撬400的电气组件上的空气流动。例如,因为无底盘电路板衬底602未定位在单独机壳或外壳中,所以没有到无底盘电路板衬底602的背板(例如底盘的背板),所述背板可能抑制电气组件上的空气流动。此外,无底盘电路板衬底602具有配置成减少跨安装到无底盘电路板衬底602的电气组件上的空气流动路径的长度的几何形状。例如,说明性无底盘电路板衬底602具有大于无底盘电路板衬底602的深度606的宽度604。在一个具体实施例中,例如,无底盘电路板衬底602具有大约21英寸的宽度和大约9英寸的深度,与具有大约17英寸的宽度和大约39英寸的深度的典型服务器形成对比。因此,从无底盘电路板衬底602的前缘610延伸向后缘612的空气流动路径608相对于典型服务器具有更短距离,这可改进滑撬400的热冷却特性。更进一步,尽管在图6中未示出,但安装到无底盘电路板衬底602的各种物理资源被安装在对应位置,使得没有两个实质上发热的电气组件彼此遮蔽(如下面更详细论述的)。也就是,没有两个在操作期间产生可观热量(即充分大于标称热量足以负面影响另一电气组件冷却)的电气组件沿气流流动路径608的方向(即沿从无底盘电路板衬底602的前缘610延伸向后缘612的方向)彼此线性成行地被安装到无底盘电路板衬底602。

如上面所论述的,说明性滑撬400包含安装到无底盘电路板衬底602的顶侧650的一个或更多个物理资源620。尽管在图6中示出了两个物理资源620,但应该认识到,在其它实施例中,滑撬400可包含一个、两个或更多个物理资源620。物理资源620可被实施为任何类型的处理器、控制器或能够执行各种任务(诸如计算功能和/或例如取决于滑撬400的类型或预计功能性来控制滑撬400的功能)的其它计算电路。例如,如下面更详细论述的,物理资源620在滑撬400被实施为计算滑撬的实施例中可被实施为高性能处理器,在滑撬400被实施为加速器滑撬的实施例中可被实施为加速器协处理器或电路,在滑撬400被实施为存储装置滑撬的实施例中被实施为存储装置控制器、或者在滑撬400被实施为存储器滑撬的实施例中被实施为存储器装置的集合。

滑撬400还包含安装到无底盘电路板衬底602的顶侧650的一个或更多个附加物理资源630。在说明性实施例中,附加物理资源包含如下面更详细论述的网络接口控制器(nic)。当然,取决于滑撬400的类型和功能性,在其它实施例中,物理资源630可包含附加或其它电气组件、电路和/或装置。

物理资源620经由输入/输出(i/o)子系统622通信地耦合到物理资源630。i/o子系统622可被实施为用于促进与滑撬400的物理资源620、物理资源630和/或其它组件的输入/输出操作的电路和/或组件。例如,i/o子系统622可被实施为或以别的方式包含用于促进输入/输出操作的存储器控制器中枢、输入/输出控制中枢、集成传感器中枢、固件装置、通信链路(例如点对点链路、总线链路、导线、线缆、光导、印刷电路板迹线等)、和/或其它组件和子系统。在说明性实施例中,i/o子系统622被示出为或以别的方式包含双倍数据率4(ddr4)数据总线或ddr5数据总线。

在一些实施例中,滑撬400还可包含资源对资源互连624。资源对资源互连624可被实施为能够促进资源对资源通信的任何类型的通信互连。在说明性实施例中,资源对资源互连624被实施为高速点对点互连(例如比i/o子系统622快)。例如,资源对资源互连624可被实施为快速路径互连(qpi)、超路径互连(upi)或者专用于资源对资源通信的其它高速点对点互连。

滑撬400还包含配置成当滑撬400被安装在对应支架240中时与支架240的对应功率连接器配对的功率连接器640。滑撬400经由功率连接器640从支架240的电源接收功率以向滑撬400的各种电气组件供电。也就是,滑撬400不包含用于向滑撬400的电气组件提供功率的任何本地电源(即板载的电源)。本地或板载的电源的排除促进了无底盘电路板衬底602的总占用面积(footprint)的减少,这如上面所论述的可增加安装在无底盘电路板衬底602上的各种电气组件的热冷却特性。在一些实施例中,功率通过直接在处理器820下面的通孔(例如通过无底盘电路板衬底602的底侧750)被提供给处理器820,提供增加的热预算、附加的电流和/或电压、以及在典型电路板之上的更好的电压控制。

在一些实施例中,滑撬400还可包含配置成与机器人的安装臂或其它结构配对以促进机器人将滑撬600放置在支架240中的安装部件642。安装部件642可被实施为允许机器人抓住滑撬400而不破坏无底盘电路板衬底602或安装到其上的电气组件的任何类型的物理结构。例如,在一些实施例中,安装部件642可被实施为附连到无底盘电路板衬底602的不导电焊盘。在其它实施例中,安装部件可被实施为附连到无底盘电路板衬底602的托架、夹子或其它类似结构。安装部件642的具体数量、形状、大小、和/或组成可取决于配置成管理滑撬400的机器人的设计。

现在参考图7,除了安装在无底盘电路板衬底602的顶侧650上的物理资源630之外,滑撬400还包含安装到无底盘电路板衬底602的底侧750的一个或更多个存储器装置720。也就是,无底盘电路板衬底602被实施为双侧电路板。物理资源620经由i/o子系统622通信地耦合到存储器装置720。例如,物理资源620和存储器装置720可由延伸穿过无底盘电路板衬底602的一个或更多个通孔来通信地耦合。在一些实施例中,每个物理资源620可以通信地耦合到一个或更多个存储器装置720的不同集合。备选地,在其它实施例中,每个物理资源620可以通信地耦合到每个存储器装置720。

存储器装置720可被实施为能够在滑撬400的操作期间存储用于物理资源620的数据的任何类型的存储器装置,诸如任何类型的易失性存储器(例如动态随机存取存储器(dram)等)或非易失性存储器。易失性存储器可以是需要功率来维持由介质存储的数据的状态的存储介质。易失性存储器的非限制示例可包含各种类型的随机存取存储器(ram),诸如动态随机存取存储器(dram)或静态随机存取存储器(sram)。可用在存储器模块中的一个具体类型的dram是同步动态随机存取存储器(sdram)。在具体实施例中,存储器组件的dram可符合由jedec颁布的标准,诸如对于ddrsdram的jesd79f、对于ddr2sdram的jesd79-2f、对于ddr3sdram的jesd79-3f、对于ddr4sdram的jesd79-4a、对于低功率ddr(lpddr)的jesd209、对于lpddr2的jesd209-2、对于lpddr3的jesd209-3、以及对于lpddr4的jesd209-4(这些标准可在www.jedec.org得到)。此类标准(以及类似标准)可被称为基于ddr的标准,并且实现此类标准的存储装置的通信接口可被称为基于ddr的接口。

在一个实施例中,存储器装置是块可寻址存储器装置,诸如基于nand或nor技术的那些存储器装置。存储器装置还可包含下一代非易失性装置,诸如英特尔3dxpointtm存储器或其它字节可寻址原地写(write-in-place)的非易失性存储器装置。在一个实施例中,存储器装置可以是或者可包含使用硫属玻璃的存储器装置、多阈级nand闪速存储器、nor闪速存储器、单级或多级相变存储器(pcm)、阻性存储器、纳米线存储器、铁电晶体管随机存取存储器(fetram)、反铁电存储器、结合了忆阻器技术的磁阻随机存取存储器(mram)存储器、包含金属氧化物基、氧空缺基和导电桥随机存取存储器(cb-ram)的阻性存储器、或者自旋转移扭矩(stt)-mram、基于电子自旋磁结存储器的装置、基于磁遂穿结(mtj)的装置、基于dw(畴壁)和sot(自旋轨道转移)的装置、基于晶闸管的存储器装置、或者上面任何的组合、或者其它存储器。存储器装置可指的是管芯本身和/或指的是封装的存储器产品。在一些实施例中,存储器装置可包括无晶体管可堆叠交叉点架构,其中存储器单元位于字线和位线的交点处,并且是单独可寻址的,并且其中位存储基于体积电阻的改变。

现在参考图8,在一些实施例中,滑撬400可被实施为计算滑撬800。计算滑撬800被优化或以别的方式配置成执行计算任务。当然,如上面所论述的,计算滑撬800可依赖于其它滑撬(诸如加速滑撬和/或存储装置滑撬)来执行此类计算任务。计算滑撬800包含类似于滑撬400的物理资源的各种物理资源(例如电气组件),它们在图8中已经使用相同引用号码标识了。上面关于图6和图7提供的此类组件的描述适用于计算滑撬800的对应组件,并且为了计算滑撬800描述的清晰起见,在本文不被重复。

在说明性计算滑撬800中,物理资源620被实施为处理器820。尽管在图8中仅示出了两个处理器820,但应该认识到,在其它实施例中,计算滑撬800可包含附加处理器820。说明性地,处理器820被实施为高性能处理器820,并且可配置成以相对高的额定功率进行操作。尽管以比典型处理器(其以大约155-230w操作)大的额定功率进行操作的处理器820生成附加热量,但上面论述的无底盘电路板衬底602的增强热冷却特性促进较高功率操作。例如,在说明性实施例中,处理器820配置成以至少250w的额定功率进行操作。在一些实施例中,处理器820可配置成以至少350w的额定功率进行操作。

在一些实施例中,计算滑撬800还可包含处理器对处理器互连842。类似于上面论述的滑撬400的资源对资源互连624,处理器对处理器互连842可被实施为能够促进处理器对处理器互连842通信的任何类型的通信互连。在说明性实施例中,处理器对处理器互连842被实施为高速点对点互连(例如比i/o子系统622快)。例如,处理器对处理器互连842可被实施为快速路径互连(qpi)、超路径互连(upi)或者专用于处理器对处理器通信的其它高速点对点互连。

计算滑撬800还包含通信电路830。说明性通信电路830包含网络接口控制器(nic)832,其也可被称为主机结构接口(hfi)。nic832可被实施为或者以别的方式包含任何类型的集成电路、离散电路、控制器芯片、芯片集、内插板、子卡、网络接口卡、可由计算滑撬800用于与另一计算装置(例如与其它滑撬400)连接的其它装置。在一些实施例中,nic832可被实施为包含一个或更多个处理器的片上系统(soc)的一部分,或者包含在也含有一个或更多个处理器的多芯片封装上。在一些实施例中,nic832可包含本地处理器(未示出)和/或本地存储器(未示出),它们对nci832都是本地的。在此类实施例中,nic832的本地处理器可以能够执行处理器820的功能中的一个或更多个功能。附加地或备选地,在此类实施例中,nic832的本地存储器可在板级、插口(socket)级、芯片级和/或其它级集成到计算滑撬的一个或更多个组件中。

通信电路830通信地耦合到光学数据连接器834。光学数据连接器834配置成当计算滑撬800被安装在支架240中时与支架240的对应光学数据连接器配对。说明性地,光学数据连接器834包含多个光纤,其从光学数据连接器834的配对表面引到光学收发器836。光学收发器836配置成将来自支架侧光学数据连接器的传入的光学信号转换成电气信号,和将电气信号转换成向支架侧光学数据连接器的传出的光学信号。尽管在说明性实施例中示出为形成光学数据连接器834的一部分,但在其它实施例中光学收发器836可形成通信电路830的一部分。

在一些实施例中,计算滑撬800还可包含扩充连接器840。在此类实施例中,扩充连接器840配置成与扩充无底盘电路板衬底的对应连接器配对,以向计算滑撬800提供附加物理资源。附加物理资源可例如由处理器820在计算滑撬800操作期间使用。扩充无底盘电路板衬底可基本上类似于上面论述的无底盘电路板衬底602,并且可包含安装到其上的各种电气组件。安装到扩充无底盘电路板衬底的具体电气组件可取决于扩充无底盘电路板衬底的预计功能性。例如,扩充无底盘电路板衬底可提供附加计算资源、存储器资源、和/或存储装置资源。因此,扩充无底盘电路板衬底的附加物理资源可包含但不限于处理器、存储器装置、存储装置、和/或加速器电路,包含例如现场可编程门阵列(fpga)、专用集成电路(asic)、安全性协处理器、图形处理单元(gpu)、机器学习电路、或者其它专门处理器、控制器、装置、和/或电路。

现在参考图9,示出了计算滑撬800的说明性实施例。如所示,处理器820、通信电路830和光学数据连接器834被安装到无底盘电路板衬底602的顶侧650。可使用任何适合的附连或安装技术将计算滑撬800的物理资源安装到无底盘电路板衬底602。例如,各种物理资源可被安装在对应插口(例如处理器插口)、支托或托架中。在一些情况下,其中一些电气组件可经由焊接或类似技术直接安装到无底盘电路板衬底602。

如上面所论述的,各个处理器820和通信电路830被安装到无底盘电路板衬底602的顶侧650,使得没有两个发热的电气组件彼此遮蔽。在说明性实施例中,处理器820和通信电路830被安装在无底盘电路板衬底602的顶侧650上的对应位置,使得那些物理资源中的没有两个沿空气流动路径608的方向与其它的物理资源线性成行。应该认识到,尽管光学数据连接器834与通信电路830成行,但光学数据连接器834在操作期间不产生热量或者产生标称热量。

计算滑撬800的存储器装置720被安装到上面关于滑撬400所论述的无底盘电路板衬底602的底侧750。尽管安装到底侧750,但存储器装置720经由i/o子系统622通信地耦合到位于顶侧650上的处理器820。因为无底盘电路板衬底602被实施为双侧电路板,因此存储器装置720和处理器820可以通信地由一个或更多个通孔、连接器或延伸穿过无底盘电路板衬底602的其它机构耦合。当然,在一些实施例中,每个处理器820可以通信地耦合到一个或更多个存储器装置720的不同集合。备选地,在其它实施例中,每个处理器820可以通信地耦合到每个存储器装置720。在一些实施例中,存储器装置720可被安装到无底盘电路板衬底602的底侧上的一个或更多个存储器夹层,并且可通过球栅阵列与对应处理器820互连。

每一个处理器820都包含固定到其上的散热器(heatsink)850。由于存储器装置720安装到无底盘电路板衬底602的底侧750(以及对应支架240中的滑撬400的垂直间距),无底盘电路板衬底602的顶侧650包含促进相对典型服务器中使用的传统散热器具有较大大小的散热器850的使用的附加“自由”区域或空间。此外,由于无底盘电路板衬底602的改进的热冷却特性,处理器散热器850都不包含附连到其上的冷却风扇。也就是,每一个散热器850都被实施为无风扇散热器。

现在参考图10,在一些实施例中,滑撬400可被实施为加速器滑撬1000。加速器滑撬1000被优化或以别的方式配置成执行专门计算任务,诸如机器学习、加密、散列或其它计算密集任务。在一些实施例中,例如,计算滑撬800可在操作期间将任务卸载到加速器滑撬1000。加速器滑撬1000包含类似于滑撬400和/或计算滑撬800的各种组件,它们在图10中已经使用相同引用号码标识了。上面关于图6、7和8提供的此类组件的描述适用于加速器滑撬1000的对应组件,并且为了加速器滑撬1000描述的清晰起见,在本文不被重复。

在说明性加速器滑撬1000中,物理资源620被实施为加速器电路1020。尽管在图10中仅示出了两个加速器电路1020,但应该认识到,在其它实施例中,加速器滑撬1000可包含附加加速器电路1020。例如,如图11中所示,在一些实施例中,加速器滑撬1000可包含4个加速器电路1020。加速器电路1020可被实施为任何类型的处理器、协处理器、计算电路、或能够执行计算或处理操作的其它装置。例如,加速器电路1020可被实施为例如现场可编程门阵列(fpga)、专用集成电路(asic)、安全性协处理器、图形处理单元(gpu)、机器学习电路、或者其它专门处理器、控制器、装置、和/或电路。

在一些实施例中,加速器滑撬1000还可包含加速器对加速器互连1042。类似于上面论述的滑撬600的资源对资源互连624,加速器对加速器互连1042可被实施为能够促进加速器对加速器通信的任何类型的通信互连。在说明性实施例中,加速器对加速器互连1042被实施为高速点对点互连(例如比i/o子系统622快)。例如,加速器对加速器互连1042可被实施为快速路径互连(qpi)、超路径互连(upi)或者专用于处理器对处理器通信的其它高速点对点互连。在一些实施例中,加速器电路1020可与通过i/o子系统622连接到nic832和存储器720的初级加速器电路1020和通过初级加速器电路1020连接到nic832和存储器720的次级加速器电路1020菊花式链接。

现在参考图11,示出了加速器滑撬1000的说明性实施例。如上面所论述的,加速器电路1020、通信电路830和光学数据连接器834被安装到无底盘电路板衬底602的顶侧650。再者,各个加速器电路1020和通信电路830被安装到无底盘电路板衬底602的顶侧650,使得没有两个发热的电气组件彼此遮蔽,如上面所论述的。加速器滑撬1000的存储器装置720如上面关于滑撬600所论述的被安装到无底盘电路板衬底602的底侧750。尽管安装到底侧750,但存储器装置720经由i/o子系统622(例如通过通孔)通信地耦合到位于顶侧650上的加速器电路1020。另外,每一个加速器电路1020可包含比在服务器中使用的传统散热器大的散热器1070。如上面参考散热器870所论述的,散热器1070可比传统散热器大,因为由存储器装置750提供的“自由”区域位于无底盘电路板衬底602的底侧750上,而不是顶侧650上。

现在参考图12,在一些实施例中,滑撬400可被实施为存储装置滑撬1200。存储装置滑撬1200被优化或以别的方式配置成将数据存储在对存储装置滑撬1200本地的数据存储装置1250中。例如,在操作期间,计算滑撬800或加速器滑撬1000可存储数据,和从存储装置滑撬1200的数据存储装置1250中检索数据。存储装置滑撬1200包含类似于滑撬400和/或计算滑撬800的各种组件,它们在图12中已经使用相同引用号码标识了。上面关于图6、7和8提供的此类组件的描述适用于存储装置滑撬1200的对应组件,并且为了存储装置滑撬1200描述的清晰起见,在本文不被重复。

在说明性存储装置滑撬1200中,物理资源620被实施为存储装置控制器1220。尽管在图12中仅示出两个存储装置控制器1220,但应该认识到,在其它实施例中,存储装置滑撬1200可包含附加存储装置控制器1220。存储装置控制器1220可被实施为任何类型的处理器、控制器或能够基于经由通信电路830接收的请求来控制到数据存储装置1250中的数据存储和检索的控制电路。在说明性实施例中,存储装置控制器1220被实施为相对低功率的处理器或控制器。例如,在一些实施例中,存储装置控制器1220可配置成以大约75瓦特的额定功率进行操作。

在一些实施例中,存储装置滑撬1200还可包含控制器对控制器互连1242。类似于上面论述的滑撬400的资源对资源互连624,控制器对控制器互连1242可被实施为能够促进控制器对控制器通信的任何类型的通信互连。在说明性实施例中,控制器对控制器互连1242被实施为高速点对点互连(例如比i/o子系统622快)。例如,控制器对控制器互连1242可被实施为快速路径互连(qpi)、超路径互连(upi)或者专用于处理器对处理器通信的其它高速点对点互连。

现在参考图13,示出了存储装置滑撬1200的说明性实施例。在说明性实施例中,数据存储装置1250被实施为或以别的方式包含配置成容纳一个或更多个固态驱动器(ssd)1254的存储装置笼1252。为了这么做,存储装置笼1252包含若干安装槽1256,每一个安装槽配置成接收对应固态驱动器1254。每一个安装槽1256包含合作以定义对应安装槽1256的接入开口1260的多个驱动器导轨1258。存储装置笼1252被固定到无底盘电路板衬底602,使得接入开口面向远离无底盘电路板衬底602(即朝无底盘电路板衬底602的前面)。因此,当存储装置滑撬1200被安装在对应支架204中时,固态驱动器1254是可接入的。例如,当存储装置滑撬1200保持安装在对应支架240中时,固态驱动器1254可从支架240被换掉(例如经由机器人)。

存储装置笼1252说明性地包含16个安装槽1256,并且能够安装并存储16个固态驱动器1254。当然,在其它实施例中,存储装置笼1252可配置成存储附加或更少的固态驱动器1254。此外,在说明性实施例中,固态驱动器被垂直安装在存储装置笼1252中,但在其它实施例中可能以不同方位安装在存储装置笼1252中。每个固态驱动器1254可被实施为能够存储长期数据的任何类型的数据存储装置。为了这么做,固态驱动器1254可包含上面论述的易失性和非易失性存储器装置。

如图13中所示,存储装置控制器1220、通信电路830和光学数据连接器834说明性地安装到无底盘电路板衬底602的顶侧650。再者,如上面所论述的,可使用任何适合的附连或安装技术将存储装置滑撬1200的电气组件安装到无底盘电路板衬底602,包含例如插口(例如处理器插口)、支托、托架、焊接连接和/或其它安装或固定技术。

如上面所论述的,各个存储装置控制器1220和通信电路830被安装到无底盘电路板衬底602的顶侧650,使得没有两个发热的电气组件彼此遮蔽。例如,存储装置控制器1220和通信电路830被安装在无底盘电路板衬底602的顶侧650上的对应位置,使得那些电气组件中的没有两个电气组件沿空气流动路径608的方向与其它的线性成行。

存储装置滑撬1200的存储器装置720如上面关于滑撬400所论述的被安装到无底盘电路板衬底602的底侧750。尽管安装到底侧750,但存储器装置720经由i/o子系统622通信地耦合到位于顶侧650上的存储装置控制器1220。再者,因为无底盘电路板衬底602被实施为双侧电路板,因此存储器装置720和存储装置控制器1220可以通信地由一个或更多个通孔、连接器或延伸穿过无底盘电路板衬底602的其它机构耦合。每一个存储装置控制器1220都包含固定到其上的散热器1270。如上面所论述的,由于存储装置滑撬1200的无底盘电路板衬底602的改进的热冷却特性,没有散热器1270包含附连到其上的冷却风扇。也就是,每一个散热器1270都被实施为无风扇散热器。

现在参考图14,在一些实施例中,滑撬400可被实施为存储器滑撬1400。存储装置滑撬1400被优化或以别的方式配置成给其它滑撬400(例如计算滑撬800、加速器滑撬1000等)提供到对存储器滑撬1200本地的存储器池(例如存储器装置720的两个或更多个集合1430、1432中)的访问。例如,在操作期间,计算滑撬800和加速器滑撬1000可使用映射到存储器集合1430、1432中的物理地址的逻辑地址空间来远程写入到和/或读取自存储器滑撬1200的存储器集合1430、1432中的一个或更多个集合。存储器滑撬1400包含类似于滑撬400和/或计算滑撬800的各种组件,它们在图14中已经使用相同引用号码标识了。上面关于图6、7和8提供的此类组件的描述适用于存储器滑撬1400的对应组件,并且为了存储器滑撬1400描述的清晰起见,在本文不被重复。

在说明性存储器滑撬1400中,物理资源620被实施为存储器控制器1420。尽管在图14中仅示出两个存储器控制器1420,但应该认识到,在其它实施例中,存储器滑撬1400可包含附加存储器控制器1420。存储器控制器1420可被实施为任何类型的处理器、控制器或能够基于经由通信电路830接收的请求来控制存储器集合1430、1432中的数据读取和写入的控制电路。在说明性实施例中,每个存储装置控制器1220连接到对应存储器集合1430、1432以写入到和读取自对应存储器集合1430、1432内的存储器装置720,并且强制执行与已经向存储器滑撬1400发送请求以执行存储器访问操作(例如读取或写入)的滑撬400关联的任何准许(例如读取、写入等)。

在一些实施例中,存储器滑撬1400还可包含控制器对控制器互连1442。类似于上面论述的滑撬400的资源对资源互连624,控制器对控制器互连1442可被实施为能够促进控制器对控制器通信的任何类型的通信互连。在说明性实施例中,控制器对控制器互连1442被实施为高速点对点互连(例如比i/o子系统622快)。例如,控制器对控制器互连1442可被实施为快速路径互连(qpi)、超路径互连(upi)或者专用于处理器对处理器通信的其它高速点对点互连。因此,在一些实施例中,存储器控制器1420可通过控制器对控制器互连1442访问在与另一存储器控制器1420关联的存储器集合1432内的存储器。在一些实施例中,可缩放存储器控制器由存储器滑撬(例如存储器滑撬1400)上的多个较小存储器控制器(本文中称为“小芯片(chiplet)”)构成。小芯片可被互连(例如使用emib(嵌入式多管芯互连桥))。组合的小芯片存储器控制器可放大到相当大数量的存储器控制器和i/o端口(例如高达16个存储器信道)。在一些实施例中,存储器控制器1420可实现存储器交织(例如,一个存储器地址被映射到存储器集合1430,下一存储器地址被映射到存储器集合1432,并且第三地址被映射到存储器集合1430等)。交织可在存储器控制器1420内或者从cpu插口(例如计算滑撬800的)跨到存储器集合1430、1432的网络链路被管理,并且与从同一存储器装置访问毗连的存储器地址相比较,可改进与执行存储器访问操作关联的时延。

另外,在一些实施例中,存储器滑撬1400可使用波导连接器1480通过波导连接到一个或更多个其它滑撬400(例如相同支架240或邻近支架240中的)。在说明性实施例中,波导是提供16个rx(即接收)道和16个rt(即传送)道的64毫米波导。在说明性实施例中,每条道都是16ghz或32ghz。在其它实施例中,频率可以不同。使用波导可向另一滑撬(例如在与存储器滑撬1400相同的支架240或邻近支架240中的滑撬400)提供对存储器池(例如存储器集合1430、1432)的高吞吐量访问,而不在光学数据连接器834上增加载荷。

现在参考图15,可按照数据中心100实现用于执行一个或更多个工作载荷(例如应用)的系统。在说明性实施例中,系统1510包含编排器(orchestrator)服务器1520,其可被实施为管理的节点,管理的节点包括执行管理软件(例如云操作环境,诸如openstack)的计算装置(例如计算滑撬800),其通信地耦合到多个滑撬400,包含大量计算滑撬1530(例如每个类似于计算滑撬800)、存储器滑撬1540(例如每个类似于存储器滑撬1400)、加速器滑撬1550(例如每个类似于存储器滑撬1000)以及存储装置滑撬1560(例如每个类似于存储装置滑撬1200)。滑撬1520、1540、1550、1560中的一个或更多个滑撬诸如可由编排器服务器1520分组成管理的节点1570,以共同执行工作载荷(例如在虚拟机中或容器中执行的应用1232)。管理的节点1570可被实施为来自相同或不同滑撬400的物理资源620的装配,物理资源620诸如处理器820、存储器资源720、加速器电路1020或数据存储装置1250。另外,管理的节点可在工作载荷被指配给管理的节点的时候或者在任何其它时间由编排器服务器1520建立、定义或“纺成(spinup)”,并且可以不管目前是否有任何工作载荷被指配给管理的节点而存在。在说明性实施例中,编排器服务器1520可按与对于工作载荷(例如应用1532)的服务级协定关联的服务质量(qos)目标(例如与吞吐量、时延、每秒指令等关联的性能目标)的函数,从滑撬400有选择地分配和/或取消分配物理资源620和/或从管理的节点1570添加和/或移除一个或更多个滑撬400。在这么做时,编排器服务器1520可接收指示管理的节点1570的每个滑撬400中的性能条件(例如吞吐量、时延、每秒指令等)的遥测数据,并将遥测数据与服务质量目标相比较以确定是否服务质量目标正被满足。如果满足,则编排器服务器1520可以附加地确定是否可从管理的节点1570取消分配一个或更多个物理资源,同时仍满足qos目标,由此释放那些物理资源以便用于另一管理的节点(例如执行不同的工作载荷)。备选地,如果qos目标目前未被满足,则编排器服务器1520可以确定动态分配附加物理资源以在工作载荷正在执行时辅助工作载荷(例如应用1532)的执行。

此外,在一些实施例中,编排器服务器1520可标识工作载荷(例如应用1532)的资源利用中的趋势,诸如通过标识工作载荷(例如应用1532)的执行阶段(例如执行不同操作的时间段,每个操作具有不同的资源利用特性),并且抢先标识数据中心100中的可用资源,并将它们分配给管理的节点1570(例如在关联的阶段开始的预定时间段内)。在一些实施例中,编排器服务器1520可基于各种时延和分布方案对性能建模,以将工作载荷放置在数据中心100中的计算滑撬和其它资源(例如加速器滑撬、存储器滑撬、存储装置滑撬)之中。例如,编排器服务器1520可利用考虑到滑撬400上的资源性能(例如fpga性能、存储器访问时延等)和通过网络到资源(例如fpga)的路径的性能(例如拥塞、时延、带宽)的模型。因此,编排器服务器1520可基于与在数据中心100中可用的每个潜在资源关联的总时延(例如与资源本身的性能关联的时延,还有与通过网络的在执行工作载荷的计算滑撬与资源位于其上的滑撬400之间的路径关联的时延)来确定哪个(哪些)资源应被用于哪些工作载荷。

在一些实施例中,编排器服务器1520可使用从滑撬400报告的遥测数据(例如温度、风扇速度等)生成数据中心100中的热生成图,并按热生成图和与不同工作载荷关联的预测的热生成的函数向管理的节点分配资源,以维持数据中心100中的目标温度和热分布。附加地或备选地,在一些实施例中,编排器服务器1520可将接收的遥测数据组织成层级模型,其指示管理的节点之间的关系(例如空间关系,诸如数据中心100内的管理的节点的资源的物理位置,和/或功能关系,诸如由管理的节点为其提供服务的顾客对管理的节点的分组、通常由管理的节点执行的功能类型、通常在彼此之间共享或交换工作载荷的管理的节点等)。基于管理的节点中的物理位置和资源的差异,给定工作载荷可跨不同管理的节点的资源来建立不同的资源利用(例如,引起不同内部温度,使用不同百分比的处理器或存储器容量)。编排器服务器1520可基于存储在层级模型中的遥测数据来确定差异,并将差异表示为预测工作载荷的未来资源利用的因子(如果工作载荷从一个管理的节点重新指配给另一管理的节点)以准确地平衡数据中心100中的资源利用。

为了减少编排器服务器1520上的计算载荷和网络上的数据转移载荷,在一些实施例中,编排器服务器1520可向滑撬400发送自测试信息,以使每个滑撬400能够在本地(例如在滑撬400上)确定由滑撬400生成的遥测数据是否满足一个或更多个条件(例如,满足预先定义的阈值的可用容量、满足预先定义的阈值的温度等)。每个滑撬400然后可将简化的结果(例如是或否)报告回编排器服务器1520,编排器服务器1520可利用该结果确定到管理的节点的资源分配。

现在参考图16,可按照上面参考图1所描述的数据中心100实现用于在加速架构中的自动迁移的系统1600。说明性系统1600包含经由网络交换机1612通信地耦合到多个计算滑撬、存储装置滑撬1614和多个加速器滑撬1618的资源硬件管理器1608。在使用时,各种软件应用在计算滑撬1602上执行以对数据执行所要求的计算。为了加速某些计算(例如减少计算功率的量、计算时间等),至少部分应用工作载荷(例如计算上密集的计算内核)能被卸载到加速器滑撬1618的现场可编程门阵列(fpga)(参见例如fpga1622(a)和1622(b))。因此,在主机(例如计算滑撬1602之一、加速器滑撬1618之一等)中执行的应用能在等待计算内核(即,为高吞吐量加速器编译的例程)完成时减少所要求的每周期指令(ipc)的量。

另外,当正在相应滑撬上执行应用工作载荷时,每个计算滑撬1602的阶段检测逻辑单元1610收集指示相应滑撬的资源使用和/或性能条件的遥测数据(例如自上而下微架构分析方法(tmam)度量)。阶段检测逻辑单元1610(其将在下面进一步详细描述)配置成分析所收集的数据以标识在计算滑撬1602或加速器滑撬1618的中央处理单元(cpu)上执行硬件线程的集合的给定应用何时改变到不同阶段,诸如计算界限阶段、fpga界限阶段、存储器界限阶段等中的一个阶段。

此外,阶段检测逻辑单元1610配置成确定给定应用是否需要被迁移到应用目前正在其上执行的计算滑撬1602或加速器滑撬1618的另一cpu,或者被迁移到不同计算滑撬1602或加速器滑撬1618的另一cpu。为了这么做,阶段检测逻辑单元1610进一步配置成确定停留在新的目前阶段的可能性是否高到足以将硬件线程和/或关联的计算内核迁移到另一滑撬或多个滑撬。此类确定可取决于目前阶段的预期持续时间或其它预测算法。如果阶段检测逻辑单元1610确定硬件线程和/或计算内核要被迁移,则阶段检测逻辑单元1610编排迁移过程,并且或者使先前使用的cpu离线,或者将先前使用的cpu返回给可应用滑撬的操作系统。应该认识到,如说明性示出的,阶段检测逻辑单元1610或者其至少一部分可取决于实施例而驻留在计算滑撬1602中的每个计算滑撬、网络交换机1612和/或资源硬件管理器1608上。应该进一步认识到,虽然说明性示出了在解聚(disaggregate)的架构中,但在其它实施例中,本文描述的功能可在本地多处理器计算装置或可配置平台(例如intel®离散可配置平台)上执行。

每一个计算装置1602可被实施为能够执行本文描述的功能的任何类型的计算装置。如图17中所示,说明性网络交换机1612包含计算引擎1702、输入/输出(i/o)子系统1710、一个或更多个数据存储装置1710、通信电路1712和一个或更多个外围装置1716。在一些实施例中,计算滑撬1602可包含其它或附加组件,诸如通常在计算装置中发现的那些组件。此外,在一些实施例中,说明性组件中的一个或更多个组件可被结合在另一组件中,或以别的方式形成另一组件的一部分。

计算引擎1702可被实施为能够执行本文所描述的各种计算功能的任何类型的装置或装置集合。在一些实施例中,计算引擎1702可被实施为单个装置,诸如集成电路、嵌入式系统、fpga、片上系统(soc)、专用集成电路(asic)、可重配置硬件或硬件电路、或者用于促进本文描述的功能的执行的其它专门硬件。此外,在一些实施例中,计算引擎1702可包含或可被实施为处理器1704(即中央处理单元(cpu))和存储器1706。

处理器1704可被实施为能够执行本文描述的功能的任何类型的处理器。例如,处理器1704可被实施为一个或更多个单核处理器、多核处理器、数字信号处理器、微控制器或其它处理器或处理/控制电路。在一些实施例中,处理器1704可被实施为、包含或以别的方式耦合到现场可编程门阵列(fpga)、专用集成电路(asic)、可重配置硬件或硬件电路、或者用于促进本文描述的功能的执行的其它专门硬件。

如说明性示出的,处理器1704可包含参考图16描述的阶段检测逻辑单元1610。阶段检测逻辑单元1610可被实施为用于执行本文描述的自动迁移操作(例如,当工作载荷正在其上执行时,收集和分析指示滑撬的性能条件的遥测数据,并且分析遥测数据以确定是否要由于检测的阶段改变而执行自动迁移)的专门装置,诸如协处理器、fpga或asic。

存储器1706可被实施为能够执行本文描述的功能的任何类型的易失性(例如动态随机存取存储器(dram)等)或非易失性存储器或数据存储装置。应该认识到,存储器1706可包含主存储器(即初级存储器)和/或高速缓冲存储器(即能比主存储器更快速地存取的存储器)。易失性存储器可以是需要电力来维持由介质存储的数据的状态的存储介质。易失性存储器的非限制示例可包含各种类型的随机存取存储器(ram),诸如动态随机存取存储器(dram)或静态随机存取存储器(sram)。

可用在存储器模块中的一个具体类型的dram是同步动态随机存取存储器(sdram)。在具体实施例中,存储器组件的dram可符合由jedec颁布的标准,诸如对于ddrsdram的jesd79f、对于ddr2sdram的jesd79-2f、对于ddr3sdram的jesd79-3f、对于ddr4sdram的jesd79-4a、对于低功率ddr(lpddr)的jesd209、对于lpddr2的jesd209-2、对于lpddr3的jesd209-3以及对于lpddr4的jesd209-4(这些标准可在www.jedec.org得到)。此类标准(以及类似标准)可被称为基于ddr的标准,并且实现此类标准的存储装置的通信接口可被称为基于ddr的接口。

在一个实施例中,存储器装置是块可寻址存储器装置,诸如基于nand或nor技术的那些存储器装置。存储器装置还可包含未来世代的非易失性装置,诸如三维交叉点存储器装置(例如英特尔3dxpointtm存储器)或其它字节可寻址原地写的非易失性存储器装置。在一个实施例中,存储器装置可以是或者可包含使用硫属玻璃的存储器装置、多阈级nand闪速存储器、nor闪速存储器、单级或多级相变存储器(pcm)、阻性存储器、纳米线存储器、铁电晶体管随机存取存储器(fetram)、反铁电存储器、结合了忆阻器技术的磁阻随机存取存储器(mram)存储器、包含金属氧化物基、氧空缺基和导电桥随机存取存储器(cb-ram)的阻性存储器或者自旋转移扭矩(stt)-mram、基于电子自旋磁结存储器的装置、基于磁遂穿结(mtj)的装置、基于dw(畴壁)和sot(自旋轨道转移)的装置、基于晶闸管的存储器装置、或者上面的任何装置的组合、或者其它存储器。存储器装置可指的是管芯本身和/或封装的存储器产品。

在一些实施例中,3d交叉点存储器(例如英特尔3dxpointtm存储器)可包括无晶体管可堆叠交叉点架构,其中存储器单元位于字线和位线的交点处,并且单独可寻址,并且其中位存储基于体电阻的改变。在一些实施例中,所有或部分存储器1706可被集成到处理器1704中。在操作中,存储器1706可存储在操作期间使用的各种软件和数据,诸如工作请求数据、内核图数据、遥测数据、应用、程序、库和驱动程序。

计算引擎1702经由i/o子系统1708通信地耦合到网络交换机1612的其它组件,i/o子系统1708可被实施为促进与处理器1704、存储器1706和网络交换机1612的其它组件的输入/输出操作的电路和/或组件。例如,i/o子系统1708可被实施为或以别的方式包含存储器控制器中枢、输入/输出控制中枢、集成传感器中枢、固件装置、通信链路(例如点对点链路、总线链路、导线、电缆、光导、印刷电路板迹线等)和/或其它组件和子系统以促进输入/输出操作。在一些实施例中,i/o子系统1708可形成片上系统(soc)的一部分,并与以下的一项或更多项一起结合在单个集成电路芯片上:处理器1704、存储器1706和网络交换机1612的其它组件。

一个或更多个数据存储装置1710可被实施为配置用于数据的短期存储或长期存储的任何类型的存储装置,诸如例如存储器装置和电路、存储卡、硬盘驱动器、固态驱动器或者其它数据存储装置。每个数据存储装置1710都可包含存储用于数据存储装置1710的数据和固件代码的系统分区。每个数据存储装置1710还可包含存储数据文件并对于操作系统可执行的操作系统分区。

通信电路1712可被实施为能够实现网络交换机1612与其它计算装置(例如计算滑撬1602、存储装置滑撬1614、加速器滑撬1618、资源硬件管理器1608等)之间的通信的任何通信电路、装置或它们的集合。相应地,通信电路1712可配置成使用任一种或更多种通信技术(例如有线或无线通信)以及关联的协议(例如以太网、bluetooth®、wi-fi®、wimax等)来实现此类通信。

说明性通信电路1712包含网络接口控制器(nic)1714,其也可被称为主机结构接口(hfi)。nic1714可被实施为一个或更多个内插板、子卡、网络接口卡、控制器芯片、芯片集或可由网络交换机1612用于与另一计算装置(例如图16的计算滑撬1602之一)连接的其它装置。在一些实施例中,nic1714可被实施为包含一个或更多个处理器的片上系统(soc)的一部分,或者被包含在也含有一个或更多个处理器的多芯片封装上。在一些实施例中,nic1714可包含本地处理器(未示出)和/或本地存储器(未示出),它们对nci1714都是本地的。在此类实施例中,nic1714的本地处理器可能能够执行本文描述的处理器1704的功能中的一个或更多个。附加地或备选地,在此类实施例中,nic1714的本地存储器可在板级、插座级、芯片级和/或其它级集成到网络交换机1612的一个或更多个组件中。

一个或更多个外围装置1716可包含可用于将信息输入到网络交换机1612、1606中和/或从网络交换机1612接收信息的任何类型的装置。外围装置1716可被实施为可用于将信息输入到网络交换机1612的任何辅助装置(诸如键盘、鼠标、麦克风、条码读取器、图像扫描仪等)或从网络交换机1612输出信息的任何辅助装置(诸如显示器、扬声器、图形电路、打印机、投影仪等)。应该认识到,在一些实施例中,外围装置1716中的一个或更多个外围装置可充当输入装置和输出装置两者(例如触摸显示器、显示屏顶上的数字化器等)。应该进一步认识到,连接到网络交换机1612的外围装置1716的类型可取决于例如网络交换机1612的类型和/或预计使用。附加地或备选地,在一些实施例中,外围装置1716可包含例如用于将外部外围装置连接到网络交换机1612的一个或更多个端口,诸如usb端口。

现在参考图18,计算滑撬1602可在操作期间建立环境1800。说明性环境1800包含网络连接管理器1810和图16的阶段检测逻辑单元1610。环境1800的每一个组件可被实施为硬件、固件、软件或它们的组合。因此,在一些实施例中,环境1800的组件中的一个或更多个组件可被实施为电气装置的集合或电路(例如网络连接管理电路1810、阶段检测逻辑电路1610等)。应该认识到,在此类实施例中,网络连接管理电路1810和阶段检测逻辑电路1610中的一个或二者可形成以下的一项或更多像的一部分:计算引擎1702、一个或更多个数据存储装置1710、通信电路1712、和/或网络交换机1612的任何其它组件。

在说明性实施例中,环境1800此外包含遥测数据1802、阶段改变数据1804和迁移策略数据1806,其每个可被实施为由网络交换机1612建立的任何数据。遥测数据1802可包含可用于计算滑撬1602或加速器滑撬1618的计算元件(例如cpu)的资源使用和/或性能的任何数据。在一些实施例中,遥测数据1802还可包含有关通过网络交换机1612的网络业务的信息,包含往来于计算滑撬1602、加速器滑撬1618、存储装置滑撬1614等的数据存取请求和响应的频率和网络拥塞信息。阶段改变数据1804可包含可用于标识各种应用的阶段改变的任何数据(例如阈限、期望持续时间、历史信息等)。迁移策略数据1806可包含可用于指令网络交换机1612如何迁移硬件线程和/或计算内核/将迁移硬件线程和/或计算内核到哪里(例如在某些条件下)的任何数据(例如规则或策略)。

网络连接管理器1810(其可被实施为硬件、固件、软件、虚拟化硬件、仿真架构和/或它们的组合,如上面所论述的)配置成分别促进往和来于网络交换机1612的入站和出站网络通信(例如网络业务、网络分组、网络流等)。为了这么做,网络连接管理器1810配置成接收和处理来自一个系统或计算装置(例如计算滑撬1602之一、资源硬件管理器1608、存储装置滑撬1614、加速器滑撬1618之一,等)的数据分组,并且准备数据分组和将数据分组发送到另一计算装置或系统(例如计算滑撬1602之一、资源硬件管理器1608、存储装置滑撬1614、加速器滑撬1618之一,等)。相应地,在一些实施例中,网络连接管理器1810的至少部分功能性可由通信电路1712执行,或者更具体地由nic1714执行。

如之前所描述的,阶段检测逻辑单元1610配置成分析所收集的遥测数据以确定阶段改变,并编排应用(即应用的硬件线程)的迁移以及在某些条件下编排与迁移的应用关联的计算内核(即,为高吞吐量加速器编译的例程)。为了这么做,说明性阶段检测逻辑单元1610包含遥测数据收集器1812、阶段改变检测器1814和迁移管理器1816。遥测数据收集器1812(其可被实施为硬件、固件、软件、虚拟化硬件、仿真架构和/或它们的组合)配置成收集由工作载荷在其上执行并且计算滑撬已经从中卸载的计算滑撬1602和加速器滑撬1618报告的遥测数据(例如遥测数据1802)。

如之前所描述的,阶段检测逻辑单元1610的至少部分可由网络交换机1612和/或资源硬件管理器1608执行。在由资源硬件管理器1608执行遥测数据收集的此类实施例中,例如,遥测数据可被送往资源硬件管理器1608并且在接收到时被收集。在由网络交换机1612收集遥测数据的此类实施例中,例如,当包含遥测数据的网络分组通过网络交换机1612(例如通过网络连接管理器1810)时,遥测数据标识那些网络分组,并将遥测数据本地存储在网络交换机1612中。应该认识到,在任一实施例中,与对应滑撬或者更具体地说该滑撬的对应计算元件(即cpu、fpga等)的标识符的关联与遥测数据一起被存储。

阶段改变检测器1814(其可被实施为硬件、固件、软件、虚拟化硬件、仿真架构和/或它们的组合)配置成在已经执行了计算内核之后检测应用的阶段改变。如之前所描述的,阶段包含但不限于cpu界限阶段、fpga界限阶段和存储器界限阶段。例如,阶段改变检测器1814配置成:在计算内核执行已经开始之后,检测应用何时将其行为从cpu界限阶段改变成不同阶段。为了这么做,阶段改变检测器1814配置成所分析收集的遥测数据(例如遥测数据1802)以确定是否存在指示阶段改变的某一条件或某些条件。例如,阶段改变检测器1814可配置成将ipc值与阈限峰值ipc值相比较。在另一示例中,阶段改变检测器1814可配置成标识具体阶段在历史上已经花费的时间量来确定是否能通过将应用的硬件线程迁移到另一计算元件来实现效率。

迁移管理器1816(其可被实施为硬件、固件、软件、虚拟化硬件、仿真架构和/或它们的组合)配置成将与应用关联的硬件线程迁移到另一计算元件。为了这么做,迁移管理器1816配置成(例如从阶段改变检测器1814)接收指示应用要被迁移的检测的阶段改变的指示。迁移管理器1816此外配置成通过向资源硬件管理器1608传送计算元件标识请求来标识应用要被迁移到的另一计算元件,所述计算元件标识请求可由资源硬件管理器1608用于标识另一计算元件(例如基于与硬件线程关联的工作载荷的要求)。另外,迁移管理器1816配置成暂停正运行的硬件线程,将它们的状况迁移到所标识的其它计算元件,并且再继续硬件线程。此外,迁移管理器1816配置成向适当的操作系统和/或资源管理器服务器1808通知完成的硬件线程迁移。

应该认识到,遥测数据收集器1812、阶段改变检测器1814和迁移管理器1816中的每个都可单独实施为硬件、固件、软件、虚拟化硬件、仿真架构和/或它们的组合。例如,遥测数据收集器1812可被实施为硬件组件,而阶段改变检测器1814和/或迁移管理器1816可被实施为虚拟化硬件组件,或者实施为硬件、固件、软件、虚拟化硬件、仿真架构和/或它们的组合的某种其它组合。另外,应该认识到,在其它实施例中,计算滑撬1602和/或资源硬件管理器1608可包含阶段检测逻辑单元1610的至少部分,并且因此可建立类似于本文描述的环境1800的环境。

回头参考图16,资源硬件管理器1608可被实施为能够监视和管理计算滑撬1602的资源以及执行本文描述的其它功能的任何类型的计算装置。例如,资源硬件管理器1608可被实施为计算机、分布式计算系统、一个或更多个滑撬(例如滑撬204-1、204-2、204-3、204-4等)、服务器(例如独立式、支架安装式、刀片等)、多处理器系统、网络设施(例如物理的或虚拟的)、桌上型计算机、工作站、膝上型计算机、笔记本计算机、基于处理器的系统或网络设施。如图19所示,说明性资源硬件管理器1608具有与图17的网络交换机1612的组件类似的组件,包含具有处理器1904和存储器1906的计算引擎1902、i/o子系统1908、具有nic1914的通信电路1912,以及在一些实施例中还有一个或更多个数据存储装置1910和/或一个或更多个外围装置1916。相应地,类似的或相似的组件在本文未描述以保持描述的清晰性。在一些实施例中,计算滑撬1602可包含其它或附加组件,诸如通常在计算装置中发现的那些组件。此外,在一些实施例中,说明性组件中的一个或更多个组件可被结合在另一组件中,或以别的方式形成另一组件的一部分。

网络交换机1612可被实施为能够执行本文描述的功能(包含在计算滑撬1602、资源硬件管理器1608、存储装置滑撬1614和加速器滑撬1618以及通信地耦合到网络交换机1612的任何其它计算装置之间交换网络分组)的任何类型的连网装置。取决于部署环境,网络交换机1612可被实施为架顶式(top-of-rack)交换机、架中式(middle-of-rack)交换机或其它以太网交换机。应该认识到,网络交换机1612可包含类似于在图16的说明性计算滑撬1602中描述的那些组件的组件(例如具有一个或更多个处理器1904、存储器1906的计算引擎1902、i/o子系统1908、一个或更多个数据存储装置1910、具有nic1914的通信电路1912、一个或更多个外围装置1916等)。相应地,类似的或相似的组件在本文未描述以保持描述的清晰性。应该进一步认识到,网络交换机1612可包含备选和/或附加组件,诸如通常在分组交换网络装置中发现的那些组件(例如各种输入/输出装置和/或其它组件)。

存储装置滑撬1614可被实施为能够执行本文描述的功能(诸如管理存储装置1616池(例如物理存储资源205-1))的任何类型的存储装置。为了这么做,存储装置滑撬1614可以是实施为虚拟和/或物理硬件、固件、软件或它们的组合的存储器池控制器(未示出),其配置成管理进和出存储装置1616的数据。应该认识到,虽然仅示出了单个存储装置滑撬1614,但其它实施例可包含多于一个存储装置滑撬1614。

存储装置1616可被实施为能够执行本文描述的功能的任何类型的易失性(例如动态随机存取存储器(dram)等)或非易失性存储器或数据存储装置。易失性存储器可以是需要电力来维持由介质存储的数据的状态的存储介质。易失性存储器的非限制示例可包含各种类型的随机存取存储器(ram),诸如动态随机存取存储器(dram)或静态随机存取存储器(sram)。

可用在存储器模块中的一个具体类型的dram是同步动态随机存取存储器(sdram)。在具体实施例中,存储器组件的dram可符合由jedec颁布的标准,诸如对于ddrsdram的jesd79f、对于ddr2sdram的jesd79-2f、对于ddr3sdram的jesd79-3f、对于ddr4sdram的jesd79-4a、对于低功率ddr(lpddr)的jesd209、对于lpddr2的jesd209-2、对于lpddr3的jesd209-3以及对于lpddr4的jesd209-4(这些标准可在www.jedec.org得到)。此类标准(以及类似标准)可被称为基于ddr的标准,并且实现此类标准的存储装置的通信接口可被称为基于ddr的接口。

在一个实施例中,存储装置1616可被实施为块可寻址存储器装置,诸如基于nand或nor技术的那些。存储器装置还可包含未来世代的非易失性装置,诸如三维(3d)交叉点存储器装置(例如英特尔3dxpointtm存储器)或其它字节可寻址原地写的非易失性存储器装置。在一些实施例中,3d交叉点存储器(例如英特尔3dxpointtm存储器)可包括无晶体管可堆叠交叉点架构,其中存储器单元位于字线和位线的交点处,并且单独可寻址,并且其中位存储基于体电阻的改变。

在另一实施例中,存储装置1616可以是或者可包含使用硫属玻璃的存储器装置、多阈级nand闪速存储器、nor闪速存储器、单级或多级相变存储器(pcm)、阻性存储器、纳米线存储器、铁电晶体管随机存取存储器(fetram)、反铁电存储器、结合了忆阻器技术的磁阻随机存取存储器(mram)存储器、包含金属氧化物基、氧空缺基和导电桥随机存取存储器(cb-ram)的阻性存储器或者自旋转移扭矩(stt)-mram、基于电子自旋磁结存储器的装置、基于磁遂穿结(mtj)的装置、基于dw(畴壁)和sot(自旋轨道转移)的装置、基于晶闸管的存储器装置、或者上面任何的组合、或者其它存储器。存储器装置可指的是管芯本身和/或封装的存储器产品。

如之前所描述的,计算滑撬1602可被池化,如在图11的高性能处理滑撬1134中说明性示出的。说明性计算滑撬1602包含第一计算滑撬(标示为计算滑撬(1)1602a)、第二计算滑撬(标示为计算滑撬(2)1602b)和第三计算滑撬(标示为计算滑撬(n)1602c)(例如,其中计算滑撬(n)1602c表示“第n个”计算滑撬1602,并且“n”是正整数)。说明性计算滑撬(1)1602a包含一个或更多个高性能cpu1604。说明性计算滑撬(2)1602b包含一个或更多个低性能cpu1606。应该认识到,高性能cpu1604相对于低性能cpu1606的特征的可比较的基准测试结果是“高性能的”。例如,高性能cpu可被定义为具有在阈值以上的时钟频率的cpu、在阈值以上的核数、在阈值以上的总额定功率和/或在对应参考阈值以上的其它cpu性能度量。在说明性示例中,高性能cpu1604可被实施为高性能intel®xeon®处理器,而低性能cpu1606可被实施为低性能intel®xeon®处理器。

如之前所描述的,加速器滑撬1618可被池化,如在图11的池化的加速器滑撬1130中说明性示出的。如在说明性系统1600中所示出的,加速器滑撬1618包含第一加速器滑撬(标示为加速器滑撬(1)1618a)、第二加速器滑撬(标示为加速器滑撬(2)1618b)和第三加速器滑撬(标示为加速器滑撬(n)1618c)(例如,其中加速器滑撬(n)1618c表示“第n个”加速器滑撬1602,并且“n”是正整数)。说明性加速器滑撬(1)1602a包含fpga1622(标示为fpga1622a)。说明性加速器滑撬(2)1618b包含另一fpga1622(标示为fpga1022b)以及低性能cpu1620。应该认识到,说明性加速器滑撬(2)1618b的低性能cpu1620可以是与说明性计算滑撬(2)1602b的低性能cpu1606相同或类似的“低性能”cpu。

应该认识到,在一些实施例中,计算滑撬1602和/或加速器滑撬1618中的一个或更多个可诸如由资源硬件管理器1608来分组成管理的节点,以共同执行工作载荷(例如应用)。管理的节点可被实施为来自相同或不同滑撬或支架的资源的装配,诸如计算资源、存储器资源、存储装置资源或者其它资源。

另外,管理的节点可在工作载荷被指配给管理的节点的时间或者在任何其它时间由资源硬件管理器1608建立、定义或“纺成”,并且可不管目前是否有任何工作载荷被指配给管理的节点而存在。资源硬件管理器1608在一些实施例中可执行支持云操作环境(诸如openstack)的一个或更多个编排操作,并且由资源硬件管理器1608建立的管理的节点可代表通信地耦合到资源硬件管理器1608(例如经由网络)的客户端装置(未示出)的用户诸如在vm或容器中执行一个或更多个应用或过程(即工作载荷)。

现在参考图20,在使用时,计算滑撬1602之一可执行用于由目前正在计算滑撬1602上执行的应用(参见例如图22a-24b的应用2202、2302和2402)将计算内核(参见例如图22a-b的计算内核2204、图23a-b的2304和图24a-b的2404)卸载到加速器滑撬1618之一的fpga1622的方法2000。方法2000开始于框2002,其中应用确定是否要卸载计算内核(即,为高吞吐量加速器编译的例程)。如果是,则方法2000前进到框2004,其中应用标识加速器滑撬1618之一的fpga以将计算内核(例如加速器功能单元)卸载到该fpga。应该认识到,在一些实施例中,为了标识fpga,该应用可将fpga标识请求传送到资源硬件管理器1608,其可执行fpga的实际标识,并向计算滑撬1602通知所标识的fpga。在框2006中,应用在所标识的fpga上执行计算内核。在框2008中,应用向阶段检测逻辑单元通知计算内核的执行。

现在参考图21a和21b,在使用时,计算滑撬(例如图16的计算滑撬1602之一)、或者更具体地说是计算滑撬1602的阶段检测逻辑单元1610,可执行用于在加速架构中的自动迁移的方法2100。方法2100开始于框2102,其中计算滑撬1602确定是否监视应用(即,与应用关联的硬件线程)。例如,计算滑撬1602可从应用接收指示已由应用卸载到fpga1622的计算内核的执行的指示。如果计算滑撬1602确定应用要被监视,则方法2100前进到框2104,其中计算滑撬1602监视与要被监视的应用关联的硬件线程。为了这么做,在框2106中,计算滑撬1602收集与要被监视的硬件线程对应的遥测数据。例如,在框2108中,计算滑撬1602收集资源使用信息。此外,在框2110中,计算滑撬1602收集cpu核性能数据,诸如在给定时间点正被执行的每周期指令的数量以及与应用的性能是cpu界限、存储器界限还是加速界限的相关的其它度量。

在框2112中,计算滑撬1602分析所收集的遥测以标阶段改变。为了这么做,在框2114中,计算滑撬1602将遥测数据的至少一部分与一个或更多个对应阈限相比较。例如,计算滑撬1602可将ipc值与对于具体计算元件(例如cpu)的峰值ipc阈限相比较。在框2116中,计算滑撬1602作为在框2112中执行的分析结果来确定是否已经检测到阶段改变。如之前所描述的,阶段包含但不限于cpu界限阶段、fpga界限阶段和存储器界限阶段。如果否,则方法2100返回到框2104以继续监视硬件线程;否则,如果已经检测到阶段改变(例如从cpu界限阶段变到另一阶段),则方法2100前进到框2118。在框2118中,计算滑撬1602标识要将硬件线程迁移到的新计算元件。

应该认识到,在一些实施例中,计算滑撬1602可能不能够标识新计算元件(例如由于计算滑撬1602没有必要资源信息可用于这么做)。相应地,在此类实施例中,计算滑撬1602可向资源硬件管理器1608传送请求资源硬件管理器1608标识新计算元件并返回所标识的计算元件的请求(例如计算元件标识请求)。应该认识到,在此类实施例中,资源硬件管理器1608可配置成基于硬件线程目前正在其上执行的计算滑撬1602的可用资源、其它计算滑撬1602的可用资源和与硬件线程关联的工作载荷的资源要求来标识新计算元件。

在框2120中,计算滑撬1602将硬件线程迁移到所标识的新计算元件。为了这么做,在框2122中,计算滑撬1602暂停在目前计算元件上运行的硬件线程。此外,在框2124中,计算滑撬1602将硬件线程状态迁移到另一新计算元件。另外,在框2126中,计算滑撬1602再继续迁移的硬件线程。最后,在框2128中,计算滑撬1602使之前使用的计算元件离线。在框2130中,计算滑撬1602向与应用关联的相应操作系统通知该迁移。在一些实施例中,计算滑撬1602可将离线的计算元件返回到相应操作系统。

在框2132中,计算滑撬1602确定是否还将与迁移的应用关联的计算内核从计算内核目前正在其上执行的fpga1622迁移到不同fpga1622(例如加速器滑撬1618中的不同加速器滑撬的fpga)。如果否,则方法2100分支到图21b的框2144,其在下面描述;否则,如果计算滑撬1602确定迁移计算内核,则方法2100分支到图21b的框2134。在框2134中,计算滑撬1602确定要将计算内核迁移到的另一fpga。类似于标识要将硬件线程迁移到的新计算元件,在一些实施例中,计算滑撬1602可能不能够确定fpga。相应地,在此类实施例中,计算滑撬1602可向资源硬件管理器1608传送请求资源硬件管理器1608标识新fpga并返回所标识的fpga的请求(例如fpga标识请求)。应该认识到,在此类实施例中,资源硬件管理器1608可配置成基于计算内核目前正在其上执行的加速器滑撬1618的可用资源、其它加速器滑撬1618的可用资源和计算内核的资源要求来标识新fpga。

在框2136中,计算滑撬1602将计算内核迁移到所确定的新fpga。在框2138中,计算滑撬1602向与计算内核关联的应用通知计算内核到新fpga的迁移。在框2140中,计算滑撬1602监视计算内核的完成状况。在框2142中,计算滑撬1602监视对应应用的阶段。在框2144中,计算滑撬1602确定是否从在框2120硬件线程被迁移到的新计算元件迁移该应用。为了这么做,例如,计算滑撬1602可响应于已经确定计算内核操作已经完成或者即将完成而确定要迁移该应用。附加地或备选地,计算滑撬1602可响应于已经检测到阶段已经改变回cpu界限阶段而确定要迁移该应用。

如果计算滑撬1602确定不迁移该应用,则方法2100返回到框2140以继续监视计算内核的完成状况,以及在框2142中继续监视对应应用的阶段。否则,如果计算滑撬1602确定迁移该应用,则方法2100前进到框2146,其中计算滑撬1602标识要将硬件线程迁移到的另一新计算元件。如之前所指出的,计算滑撬1602可依赖于资源硬件管理器1608来标识另一新计算元件,并向计算滑撬1602通知所标识的另一新计算元件。在框2148中,计算滑撬1602将硬件线程迁移到所标识的另一新计算元件。为了这么做,在框2150中,计算滑撬1602暂停在目前计算元件上运行的硬件线程。此外,在框2152中,计算滑撬1602将硬件线程状态迁移到另一新计算元件。另外,在框2154中,计算滑撬1602再继续迁移的硬件线程。最后,在框2156中,计算滑撬1602使之前使用的计算元件离线。在框2158中,计算滑撬1602向相应操作系统和关联的应用通知成功迁移。相应地,如由于迁移而可能要求的,应用能对应用的软件/网络参数进行任何重新配置改变。

如之前所指出的,在其它实施例中,阶段检测逻辑单元1610的至少一部分可在计算滑撬1602、资源硬件管理器1608和网络交换机1612中的一个或更多个中。相应地,应该认识到,在此类实施例中,除了如本文所描述的计算滑撬1602之外或对其的备选,方法2100的至少一部分还可由网络交换机1612和/或资源硬件管理器1608执行。应该进一步认识到,虽然方法2100已经被说明性描述为由解聚的架构执行,但本文描述的功能在其它实施例中可由包含本地多处理器计算装置和至少一个fpga的平台或者具有多个处理器和至少一个fpga的可配置平台(例如intel®离散可配置平台)执行。

如针对图20的方法2000所描述的,目前正在计算元件(例如高性能cpu1604)上执行的应用可将计算内核卸载到加速器滑撬128的fpga1622(例如,加速器滑撬(1)1618a的fpga1622a、加速器滑撬(2)1618b的fpga1622b等)。另外,应用可向阶段检测逻辑单元1620通知该卸载,使得如在图21的方法2100中所描述的,阶段检测逻辑单元1610能经由与该应用正在使用的资源关联的遥测数据的收集/分析来监视应用的阶段。此外,在检测到阶段改变时,阶段检测逻辑单元1610可以确定迁移该应用以及在某些条件下迁移关联的计算内核。相应地,图22a和22b、23a和23b以及24a和24b中的每个图都示出非限制示例应用/计算内核迁移。

现在参考图22a和22b,示出了用于应用的自动迁移的说明性示例,其中应用在一个计算滑撬1602之一中与另一应用合并。如在图22a的预迁移中说明性示出的,计算滑撬(1)1602a包含第一高性能cpu1604(标示为高性能cpu1604a)和第二高性能cpu1604(标示为高性能cpu1604b)。说明性地示出了正运行应用2202的高性能cpu1604a和1604b中的每个高性能cpu。第一应用2202(标示为应用(1)2202a)目前正在高性能cpu1604a上执行。第二应用2202(标示为应用(2)2202b)目前正在高性能cpu1604b上执行。此外,示出了加速器滑撬(1)1618a,具有目前正在加速器滑撬(1)1618a的fpga1622a中执行的计算内核2204。为了说明性示例的目的,应该认识到,计算内核2204与应用(1)2202a关联(即由其卸载)。

如在图22b的后迁移中说明性示出的,应用(1)2202已经从高性能cpu(1)1604a被迁移到高性能cpu(2)1604b(即,与应用(2)2202b合并)。此外,计算内核从加速器滑撬(a)1618a的fpga1622a被迁移到加速器滑撬(2)1618b的fpga1622b。如之前所描述的,在确定是否要将应用(2)2202b迁移到高性能cpu(2)1604b和是否要迁移计算内核2204时,阶段检测逻辑单元1610配置成当计算内核2204正在执行时标识应用(2)2202b的工作载荷的资源使用/性能,并且将所标识的资源使用与对应的使用/性能阈限以及应用的阶段相比较。例如,如之前所描述的,阶段检测逻辑单元1610可配置成标识目前ipc值,并将所标识的目前ipc值与ipc峰值阈值相比较,以及标识目前阶段(例如图22a中的fpga界限和图22b中的cpu界限)。

现在参考图23a和23b,示出了用于应用的自动迁移的说明性示例,其包含应用从计算滑撬1602a的高性能cpu1604被迁移到计算滑撬1602b的低性能cpu1606。如在图23a的预迁移中说明性示出的,应用2302目前由计算滑撬(1)1602a的高性能cpu1604执行。此外,计算内核2304目前正在加速器滑撬(1)1618a的fpga1622a上执行。如在图23b的后迁移中说明性示出的,应用2302已经被迁移到计算滑撬(2)1602b的低性能cpu1606,并且计算内核尚未被迁移。

现在参考图24a和24b,在对于自动迁移应用和计算内核的说明性示例中,二者都被迁移到同一加速器滑撬(例如加速器滑撬1618之一)。如在图24a的预迁移中说明性示出的,应用2402目前由计算滑撬(1)1602a的高性能cpu1604执行,并且计算内核2404目前正在加速器滑撬(1)1618a的fpga1622a上执行。如在图24b的后迁移中说明性示出的,应用2402已经被迁移到加速器滑撬(2)1618b的低性能cpu1620,并且计算内核2404已经从加速器滑撬(1)1618a的fpga1622a被迁移到加速器滑撬(2)1618b的fpga1622b。

示例

下面提供了本文所公开的技术的说明性示例。技术的实施例可包含下面描述的示例中的任一个或更多个以及它们的任何组合。

示例1包含一种用于在加速架构中的自动迁移的计算滑撬,所述计算滑撬包括:计算引擎,用于从在多个计算滑撬中的计算滑撬的第一计算元件上执行的应用接收与所述应用关联的计算内核已经被卸载到多个加速器滑撬中的加速器滑撬的现场可编程门阵列(fpga)的指示,其中所述多个加速器滑撬和所述多个计算滑撬中的每个滑撬通信地耦合到计算滑撬;监视与所述应用关联的多个硬件线程;检测按监视的硬件线程的功能是否已经检测到阶段改变;以及响应于检测到所述阶段改变的检测而将所述硬件线程迁移到第二计算元件。

示例2包含示例1的主题,并且其中监视所述多个硬件线程包括收集与由所述硬件线程在执行期间使用的一个或更多个硬件资源对应的遥测数据。

示例3包含示例1和2中任一示例的主题,并且其中收集遥测数据包含收集第一计算元件的每周期指令(ipc)值。

示例4包含示例1-3中任一示例的主题,并且其中检测是否已经检测到所述阶段改变包括将所述第一计算元件的所述ipc值与峰值ipc阈值相比较。

示例5包含示例1-4中任一示例的主题,并且其中检测是否已经检测到所述阶段改变包括将先前阶段标识为中央处理单元(cpu)界限阶段并将目前阶段标识为fpga界限阶段。

示例6包含示例1-5中任一示例的主题,并且其中检测是否已经检测到所述阶段改变包括将先前阶段标识为中央处理单元(cpu)界限阶段并将目前阶段标识为存储器界限阶段。

示例7包含示例1-6中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述计算滑撬的另一高性能cpu。

示例8包含示例1-7中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个计算滑撬中的另一计算滑撬的高性能cpu。

示例9包含示例1-8中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个计算滑撬中的另一计算滑撬的低性能cpu。

示例10包含示例1-9中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述加速器滑撬的低性能cpu。

示例11包含示例1-10中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个加速器滑撬中的另一加速器滑撬的低性能cpu。

示例12包含示例1-11中任一示例的主题,并且其中将所述硬件线程迁移到所述第二计算元件包括:在所述第一计算元件暂停所述硬件线程,将所述硬件线程的状态从所述第一计算元件迁移到所述第二计算元件,在所述第二计算元件再继续迁移的硬件线程,并且使所述第一计算元件离线。

示例13包含示例1-12中任一示例的主题,并且其中所述计算引擎进一步将所述计算内核迁移到所述多个加速器滑撬中的另一加速器滑撬的另一fpga。

示例14包含示例1-13中任一示例的主题,并且其中计算引擎进一步接收指示计算内核已经完成的指示;以及响应于已经接收到所述指示而将应用迁移到第三计算元件。

示例15包含示例1-14中任一示例的主题,并且其中将应用迁移到第三计算元件包括将所述应用迁移到所述多个计算滑撬之一的高性能cpu。

示例16包含示例1-15中任一示例的主题,并且其中将所述硬件线程迁移到所述第三计算元件包括:在所述第二计算元件暂停所述硬件线程,将所述硬件线程的状态从所述第二计算元件迁移到所述第三计算元件,在所述第三计算元件再继续迁移的硬件线程,并且使所述第二计算元件离线。

示例17包含一种用于在加速架构中的自动迁移的方法,所述方法包括:由计算滑撬从在多个计算滑撬中的计算滑撬的第一计算元件上执行的应用接收与所述应用关联的计算内核已经被卸载到多个加速器滑撬中的加速器滑撬的现场可编程门阵列(fpga)的指示,其中所述多个加速器滑撬和所述多个计算滑撬中的每个滑撬通信地耦合到计算滑撬;由计算滑撬监视与所述应用关联的多个硬件线程;由计算滑撬检测按监视的硬件线程的功能是否已经检测到阶段改变;以及由计算滑撬并响应于检测到所述阶段改变的检测而将所述硬件线程迁移到第二计算元件。

示例18包含示例17的主题,并且其中监视多个硬件线程包括收集与由所述硬件线程在执行期间使用的一个或更多个硬件资源对应的遥测数据。

示例19包含示例17和18中任一示例的主题,并且其中收集遥测数据包含收集第一计算元件的每周期指令(ipc)值。

示例20包含示例17-19中任一示例的主题,并且其中检测是否已经检测到所述阶段改变包括将所述第一计算元件的所述ipc值与峰值ipc阈值相比较。

示例21包含示例17-20中任一示例的主题,并且其中检测是否已经检测到所述阶段改变包括将先前阶段标识为中央处理单元(cpu)界限阶段并将目前阶段标识为fpga界限阶段。

示例22包含示例17-21中任一示例的主题,并且其中检测是否已经检测到所述阶段改变包括将先前阶段标识为中央处理单元(cpu)界限阶段并将目前阶段标识为存储器界限阶段。

示例23包含示例17-22中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述计算滑撬的另一高性能cpu。

示例24包含示例17-23中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个计算滑撬中的另一计算滑撬的高性能cpu。

示例25包含示例17-24中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个计算滑撬中的另一计算滑撬的低性能cpu。

示例26包含示例17-25中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述加速器滑撬的低性能cpu。

示例27包含示例17-26中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个加速器滑撬中的另一加速器滑撬的低性能cpu。

示例28包含示例17-27中任一示例的主题,并且其中将所述硬件线程迁移到所述第二计算元件包括:在所述第一计算元件暂停所述硬件线程;将所述硬件线程的状态从所述第一计算元件迁移到所述第二计算元件;在所述第二计算元件再继续迁移的硬件线程;以及使所述第一计算元件离线。

示例29包含示例17-28中任一示例的主题,并且进一步包含:由计算滑撬将所述计算内核迁移到所述多个加速器滑撬中的另一加速器滑撬的另一fpga。

示例30包含示例17-29中任一示例的主题,并且进一步包含:由计算滑撬接收指示计算内核已经完成的指示;以及由计算滑撬并响应于已经接收到所述指示而将应用迁移到第三计算元件。

示例31包含示例17-30中任一示例的主题,并且其中将应用迁移到第三计算元件包括将所述应用迁移到所述多个计算滑撬之一的高性能cpu。

示例32包含示例17-31中任一示例的主题,并且其中将所述硬件线程迁移到所述第三计算元件包括:在所述第二计算元件暂停所述硬件线程;将所述硬件线程的状态从所述第二计算元件迁移到所述第三计算元件;在所述第三计算元件再继续迁移的硬件线程;以及使所述第二计算元件离线。

示例33包含一个或更多个机器可读存储介质,其包括其上存储的多个指令,所述指令响应于被执行而促使计算滑撬执行示例17-32中任一示例的方法。

示例34包含一种用于改进网络中的吞吐量的计算滑撬,计算滑撬包括:一个或更多个处理器;一个或更多个存储器装置,其中存储有多个指令,所述指令当由所述一个或更多个处理器执行时促使计算滑撬执行示例17-32中任一示例的方法。

示例35包含一种用于在加速架构中的自动迁移的计算滑撬,所述计算滑撬包括:阶段检测逻辑电路,所述阶段检测逻辑电路用于从在多个计算滑撬中的计算滑撬的第一计算元件上执行的应用接收与所述应用关联的计算内核已经被卸载到多个加速器滑撬中的加速器滑撬的现场可编程门阵列(fpga)的指示,其中所述多个加速器滑撬和所述多个计算滑撬中的每个滑撬通信地耦合到计算滑撬;监视与所述应用关联的多个硬件线程;检测按监视的硬件线程的功能是否已经检测到阶段改变;以及响应于检测到所述阶段改变的检测而将所述硬件线程迁移到第二计算元件。

示例36包含示例35的主题,并且其中监视多个硬件线程包括收集与由所述硬件线程在执行期间使用的一个或更多个硬件资源对应的遥测数据。

示例37包含示例35和36中任一示例的主题,并且其中收集遥测数据包含收集第一计算元件的每周期指令(ipc)值。

示例38包含示例35-37中任一示例的主题,并且其中检测是否已经检测到所述阶段改变包括将所述第一计算元件的所述ipc值与峰值ipc阈值相比较。

示例39包含示例35-38中任一示例的主题,并且其中检测是否已经检测到所述阶段改变包括将先前阶段标识为中央处理单元(cpu)界限阶段并将目前阶段标识为fpga界限阶段。

示例40包含示例35-39中任一示例的主题,并且其中检测是否已经检测到所述阶段改变包括将先前阶段标识为中央处理单元(cpu)界限阶段并将目前阶段标识为存储器界限阶段。

示例41包含示例35-40中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述计算滑撬的另一高性能cpu。

示例42包含示例35-41中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个计算滑撬中的另一计算滑撬的高性能cpu。

示例43包含示例35-42中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个计算滑撬中的另一计算滑撬的低性能cpu。

示例44包含示例35-43中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述加速器滑撬的低性能cpu。

示例45包含示例35-44中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个加速器滑撬中的另一加速器滑撬的低性能cpu。

示例46包含示例35-45中任一示例的主题,并且其中将所述硬件线程迁移到所述第二计算元件包括:在所述第一计算元件暂停所述硬件线程,将所述硬件线程的状态从所述第一计算元件迁移到所述第二计算元件,在所述第二计算元件再继续迁移的硬件线程,并且使所述第一计算元件离线。

示例47包含示例35-46中任一示例的主题,并且其中阶段检测逻辑电路进一步将所述计算内核迁移到所述多个加速器滑撬中的另一加速器滑撬的另一fpga。

示例48包含示例35-47中任一示例的主题,并且其中计算引擎进一步接收指示计算内核已经完成的指示;以及响应于已经接收到所述指示而将应用迁移到第三计算元件。

示例49包含示例35-48中任一示例的主题,并且其中将应用迁移到第三计算元件包括将所述应用迁移到所述多个计算滑撬之一的高性能cpu。

示例50包含示例35-49中任一示例的主题,并且其中将所述硬件线程迁移到所述第三计算元件包括:在所述第二计算元件暂停所述硬件线程,将所述硬件线程的状态从所述第二计算元件迁移到所述第三计算元件,在所述第三计算元件再继续迁移的硬件线程,并且使所述第二计算元件离线。

示例35包含一种用于在加速架构中的自动迁移的计算滑撬,所述计算滑撬包括:用于从在多个计算滑撬中的计算滑撬的第一计算元件上执行的应用接收与所述应用关联的计算内核已经被卸载到多个加速器滑撬中的加速器滑撬的现场可编程门阵列(fpga)的指示的电路,其中所述多个加速器滑撬和所述多个计算滑撬中的每个通信地耦合到计算滑撬;用于监视与所述应用关联的多个硬件线程的部件;用于检测是否作为监视的硬件线程的函数已经检测到阶段改变的部件;以及用于响应于检测到所述阶段改变的检测而将所述硬件线程迁移到第二计算元件的电路。

示例36包含示例35的主题,并且其中用于监视多个硬件线程的部件包括用于收集与所述硬件线程在执行期间使用的一个或更多个硬件资源对应的遥测数据的部件。

示例37包含示例35和36中任一示例的主题,并且其中用于收集遥测数据的部件包含用于收集第一计算元件的每周期指令(ipc)值的部件。

示例38包含示例35-37中任一示例的主题,并且其中用于检测是否已经检测到所述阶段改变的部件包括用于将所述第一计算元件的所述ipc值与峰值ipc阈值相比较的部件。

示例39包含示例35-38中任一示例的主题,并且其中用于检测是否已经检测到所述阶段改变的部件包括用于将先前阶段标识为中央处理单元(cpu)界限阶段并将目前阶段标识为fpga界限阶段的部件。

示例40包含示例35-39中任一示例的主题,并且其中用于检测是否已经检测到所述阶段改变的部件包括用于将先前阶段标识为中央处理单元(cpu)界限阶段并将目前阶段标识为存储器界限阶段的部件。

示例41包含示例35-40中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述计算滑撬的另一高性能cpu。

示例42包含示例35-41中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个计算滑撬中的另一计算滑撬的高性能cpu。

示例43包含示例35-42中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个计算滑撬中的另一计算滑撬的低性能cpu。

示例44包含示例35-43中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述加速器滑撬的低性能cpu。

示例45包含示例35-44中任一示例的主题,并且其中所述应用目前正在其上执行的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个加速器滑撬中的另一加速器滑撬的低性能cpu。

示例46包含示例35-45中任一示例的主题,并且其中用于将所述硬件线程迁移到所述第二计算元件的电路包括:用于在所述第一计算元件暂停所述硬件线程的电路;用于将所述硬件线程的状态从所述第一计算元件迁移到所述第二计算元件的电路;用于在所述第二计算元件再继续迁移的硬件线程的电路;以及用于使所述第一计算元件离线的电路。

示例47包含示例35-46中任一示例的主题,并且进一步包含:用于由计算滑撬将所述计算内核迁移到所述多个加速器滑撬中的另一加速器滑撬的另一fpga的电路。

示例48包含示例35-47中任一示例的主题,并且进一步包含:用于由计算滑撬接收指示计算内核已经完成的指示的电路;以及用于由计算滑撬并响应于已经接收到所述指示而将应用迁移到第三计算元件的电路。

示例49包含示例35-48中任一示例的主题,并且其中用于将应用迁移到第三计算元件的电路包括用于将所述应用迁移到所述多个计算滑撬之一的高性能cpu的电路。

示例50包含示例35-49中任一示例的主题,并且其中用于将所述硬件线程迁移到所述第三计算元件的电路包括:用于在所述第二计算元件暂停所述硬件线程的电路;用于将所述硬件线程的状态从所述第二计算元件迁移到所述第三计算元件的电路;用于在所述第三计算元件再继续迁移的硬件线程的电路;以及用于使所述第第二计算元件离线的电路。

本发明还提供如下的技术方案:

1.一种用于在加速架构中的自动迁移的计算滑撬,所述计算滑撬包括:

通信电路;以及

计算引擎,所述计算引擎用于:

从在多个计算滑撬中的计算滑撬的第一计算元件上执行的应用接收与所述应用关联的计算内核已经被卸载到多个加速器滑撬中的加速器滑撬的现场可编程门阵列(fpga)的指示,其中所述多个加速器滑撬和所述多个计算滑撬中的每个滑撬通信地耦合到所述计算滑撬;

监视与所述应用关联的多个硬件线程;

检测按监视的硬件线程的功能是否已经检测到阶段改变;以及

响应于检测到所述阶段改变的检测而将所述硬件线程迁移到第二计算元件。

如技术方案1所述的计算滑撬,其中监视所述多个硬件线程包括收集与由所述硬件线程在执行期间使用的一个或更多个硬件资源对应的遥测数据,其中收集所述遥测数据包含收集所述第一计算元件的每周期指令(ipc)值,并且其中检测是否已经检测到所述阶段改变包括将所述第一计算元件的所述ipc值与峰值ipc阈值相比较。

如技术方案1所述的计算滑撬,其中检测是否已经检测到所述阶段改变包括将先前阶段标识为中央处理单元(cpu)界限阶段并将目前阶段标识为fpga界限阶段或存储器界限阶段之一。

如技术方案1所述的计算滑撬,其中所述应用目前正在执行所在的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述计算滑撬的另一高性能cpu。

如技术方案1所述的计算滑撬,其中所述应用目前正在执行所在的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个计算滑撬中的另一计算滑撬的高性能cpu。

如技术方案1所述的计算滑撬,其中所述应用目前正在执行所在的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个计算滑撬中的另一计算滑撬的低性能cpu。

如技术方案1所述的计算滑撬,其中所述应用目前正在执行所在的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述加速器滑撬的低性能cpu。

如技术方案1所述的计算滑撬,其中所述应用目前正在执行所在的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个加速器滑撬中的另一加速器滑撬的低性能cpu。

如技术方案1所述的计算滑撬,其中将所述硬件线程迁移到所述第二计算元件包括:在所述第一计算元件暂停所述硬件线程,将所述硬件线程的状态从所述第一计算元件迁移到所述第二计算元件,在所述第二计算元件再继续迁移的硬件线程,并且使所述第一计算元件离线。

如技术方案1所述的计算滑撬,其中所述计算引擎进一步将所述计算内核迁移到所述多个加速器滑撬中的另一加速器滑撬的另一fpga。

如技术方案1所述的计算滑撬,其中所述计算引擎进一步:

接收指示所述计算内核已经完成的指示;以及

响应于已经接收到所述指示而将所述应用迁移到所述多个计算滑撬之一的高性能cpu。

一个或更多个机器可读存储介质,包括存储在所述一个或更多个机器可读存储介质上多个指令,所述指令响应于被执行而促使计算滑撬:

从在多个计算滑撬中的计算滑撬的第一计算元件上执行的应用接收与所述应用关联的计算内核已经被卸载到多个加速器滑撬中的加速器滑撬的现场可编程门阵列(fpga)的指示,其中所述多个加速器滑撬和所述多个计算滑撬中的每个滑撬通信地耦合到所述计算滑撬;

监视与所述应用关联的多个硬件线程;

检测按监视的硬件线程的功能是否已经检测到阶段改变;以及

响应于检测到所述阶段改变的检测而将所述硬件线程迁移到第二计算元件。

如技术方案12所述的一个或更多个机器可读存储介质,其中监视所述多个硬件线程包括收集与所述硬件线程在执行期间使用的一个或更多个硬件资源对应的遥测数据,其中收集所述遥测数据包含收集所述第一计算元件的每周期指令(ipc)值,并且其中检测是否已经检测到所述阶段改变包括将所述第一计算元件的所述ipc值与峰值ipc阈值相比较。

如技术方案12所述的一个或更多个机器可读存储介质,其中检测是否已经检测到所述阶段改变包括将先前阶段标识为中央处理单元(cpu)界限阶段并将目前阶段标识为fpga界限阶段或存储器界限阶段之一。

如技术方案12所述的一个或更多个机器可读存储介质,其中所述应用目前正在执行所在的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述计算滑撬的另一高性能cpu。

如技术方案12所述的一个或更多个机器可读存储介质,其中所述应用目前正在执行所在的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个计算滑撬中的另一计算滑撬的高性能cpu。

如技术方案12所述的一个或更多个机器可读存储介质,其中所述应用目前正在执行所在的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个计算滑撬中的另一计算滑撬的低性能cpu。

如技术方案12所述的一个或更多个机器可读存储介质,其中所述应用目前正在执行所在的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述加速器滑撬的低性能cpu。

如技术方案12所述的一个或更多个机器可读存储介质,其中所述应用目前正在执行所在的所述第一计算元件包括高性能中央处理单元(cpu),并且其中响应于已经检测到所述阶段改变而将所述硬件线程迁移到第二计算元件包括将所述硬件线程迁移到所述多个加速器滑撬中的另一加速器滑撬的低性能cpu。

如技术方案12所述的一个或更多个机器可读存储介质,其中将所述硬件线程迁移到所述第二计算元件包括:在所述第一计算元件暂停所述硬件线程,将所述硬件线程的状态从所述第一计算元件迁移到所述第二计算元件,在所述第二计算元件再继续迁移的硬件线程,并且使所述第一计算元件离线。

如技术方案12所述的一个或更多个机器可读存储介质,其中所述多个指令进一步促使所述计算滑撬将所述计算内核迁移到所述多个加速器滑撬中的另一加速器滑撬的另一fpga。

如技术方案12所述的一个或更多个机器可读存储介质,其中所述多个指令进一步促使所述计算滑撬:

接收指示所述计算内核已经完成的指示;以及

响应于已经接收到所述指示而将所述应用迁移到所述多个计算滑撬之一的高性能cpu。

一种用于在加速架构中的自动迁移的计算滑撬,所述计算滑撬包括:

用于从在多个计算滑撬中的计算滑撬的第一计算元件上执行的应用接收与所述应用关联的计算内核已经被卸载到多个加速器滑撬中的加速器滑撬的现场可编程门阵列(fpga)的指示的电路,其中所述多个加速器滑撬和所述多个计算滑撬中的每个滑撬通信地耦合到所述计算滑撬;

用于监视与所述应用关联的多个硬件线程的部件;

用于检测按监视的硬件线程的功能是否已经检测到阶段改变的部件;以及

用于响应于检测到所述阶段改变的检测而将所述硬件线程迁移到第二计算元件的电路。

如技术方案23所述的计算滑撬,其中用于监视所述多个硬件线程的部件包括用于收集与所述硬件线程在执行期间使用的一个或更多个硬件资源对应的遥测数据的部件,其中用于收集所述遥测数据的部件包含用于收集所述第一计算元件的每周期指令(ipc)值的部件,并且其中用于检测是否已经检测到所述阶段改变的部件包括用于将所述第一计算元件的所述ipc值与峰值ipc阈值相比较的部件。

如技术方案23所述的计算滑撬,其中用于检测是否已经检测到所述阶段改变的部件包括用于将先前阶段标识为中央处理单元(cpu)界限阶段并将目前阶段标识为存储器界限阶段的部件。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1