使用远程直接存储器访问(RDMA)和主动消息的异构输入/输出(I/O)的制作方法

文档序号:11530714阅读:467来源:国知局
使用远程直接存储器访问(RDMA)和主动消息的异构输入/输出(I/O)的制造方法与工艺

本公开总体上涉及电子领域。更具体地,一些实施例总体上涉及使用rdma(远程直接存储器访问)和/或主动消息的异构io(输入/输出)。



背景技术:

一般而言,嵌入式平台(例如,图形处理单元(gpu)或数字消费电子)与非嵌入式平台(例如,传统的工作站或台式计算机)相比可能具有相对非常有限的io(输入/输出)能力或带宽。因此,在嵌入式系统与外部存储设备(例如,硬盘驱动器)之间移动数据可能是繁琐的。此外,传统的解决方案可能涉及庞大和/或昂贵的存储协议(或集群文件系统),并可能产生令人失望的具有高开发成本的性能结果。

附图说明

参考附图提供了详细描述。在附图中,附图标记最左边的数字标识该附图标记第一次出现的附图。在不同的附图中使用相同的附图标记来指示类似或相同的项目。

图1、图2-a、图2-b以及图11-13示出了计算系统的实施例的框图,该计算系统可以用于实现本文描述的各种实施例。

图3-a、图3-b以及图4-10示出了根据一些实施例的用于执行各种操作的方法的流程图。

具体实施方式

在下面的描述中,阐述了大量具体细节,以便于提供对各种实施例的透彻理解。然而,可以在没有这些具体细节的情况下实践各种实施例。在其它实例中,没有详细描述公知的方法、过程、部件以及电路,以使得不模糊特定实施例。此外,可以使用各种单元来执行实施例的各个方面,例如,集成半导体电路(“硬件”)、组织到一个或多个程序中的计算机可读指令(“软件”)、或硬件与软件的一些组合。出于本公开的目的,提及“逻辑”将表示或者硬件、软件,或者其一些组合。

如上文所讨论的,嵌入式平台可能具有非常有限的io(输入/输出或i/o)能力。因此,在这些系统与其外部存储设备之间移动数据可能是繁琐的。传统的解决方案可能涉及庞大和/或昂贵的存储协议(或集群文件系统),并可能产生令人失望的具有高开发成本的性能结果。因此,许多用户和isv/ihv(独立解决方案供应商/独立硬件供应商)高度需求具有可以容易地裁剪以适应平台的主机系统(和运行时环境)的高性能的轻量解决方案。

为此,一些实施例提供了通过通信网络(例如,以太网或)的使用rdma(远程直接存储器访问)和/或主动消息的异构io(输入/输出;在本文中也被互换地称为“i/o”)。如本文所讨论的,“主动消息”一般是指自身能够执行处理的消息传送对象。在实施例中,rdma(远程直接存储器访问)和主动消息用于实现构建所描述的数据转移解决方案(即,参考图2所讨论的异构路径150加201)的目标,其不要求任何特定的存储协议和/或任何特定的文件系统支持。这可以在使开发成本最小化的情况下维持具有适应许多不同的运行时环境的灵活性的有竞争力的性能结果。

另外,在一些实施例中提供了异构且适应性的解决方案。例如,在没有预定义的协议约束的情况下,可以使用不同的格式将数据自由地重定向到不同的存储介质。还可以更容易地将数据取回并转换回其原始形式。在一些实施例中,本文所讨论的技术可以用于增强诸如便携式设备(例如,数字消费电子)或协处理器加速器(例如,公司的phitm产品系列)的嵌入式系统的io能力。

此外,可以在各种计算系统(例如,包括移动设备,举例来说,例如,智能电话、平板计算机、umpc(超级移动个人计算机)、膝上型计算机、ultrabooktm计算设备、智能手表、智能眼镜等)中提供本文所讨论的技术,例如,参考图1-13所讨论的技术。更具体地,图1示出了根据实施例的计算系统100的框图。系统100包括一个或多个处理器102-1到102-n(在本文中一般被称为“多个处理器102”或“处理器102”)。处理器102可以经由互连或总线104进行通信。每个处理器可以包括各种部件,为了清楚起见,仅参考处理器102-1讨论了其中一些部件。因此,剩余的处理器102-2到102-n中的每一个可以包括与参考处理器102-1所讨论的部件相同或类似的部件。

在实施例中,处理器102-1可以包括一个或多个处理器核心106-1到106-m(在本文中被称为“多个核心106”,或者更一般地称为“核心106”)、高速缓存108(在各种实施例中,其可以是共享的高速缓存或私有的高速缓存)、和/或路由器110。处理器核心106可以实现在单个集成电路(ic)芯片上。此外,芯片可以包括一个或多个共享的和/或私有的高速缓存(例如,高速缓存108)、总线或互连(例如,总线或互连112)、逻辑150/152、诸如参考图11-13所讨论的存储器控制器(包括nvm(非易失性存储器),例如,闪速存储器、固态驱动器(“sdd”,例如,具有nand存储单元)等)的存储器控制器、或者其它部件(例如,io控制器160及其实现对一个存储设备或存储设备池180的访问的互连170)。

在一些实施例中,可以出于i/o目的使用其它类型的接口(例如,针对io控制器160和互连170)。例如,串行附接的小型计算机系统接口(scsi)(或简称为sas,以及其它变型,例如,互联网scsi(iscsi))或快速外围部件互连(pcie)(如在pciexpressbase3.0规范中描述的)可以用于i/o接口。在一个实施例中,路由器110可以用于在处理器102-1和/或系统100的各种部件之间进行通信。此外,处理器102-1可以包括多于一个路由器110。此外,多个路由器110可以进行通信以实现在处理器102-1内部或外部的各种部件之间的数据路由。

高速缓存108可以存储由处理器102-1的一个或多个部件(例如,核心106)使用的数据(例如,包括指令)。例如,高速缓存108可以对存储在(易失性和/或非易失性)存储器114中的数据进行本地高速缓存,以用于由处理器102的部件更快地访问。如图1所示,存储器114可以经由互连104与处理器102通信。在实施例中,高速缓存108(可以是共享的)可以具有各种级别,例如,高速缓存108可以是中级高速缓存和/或末级高速缓存(llc)。另外,核心106中的每一个可以包括1级(l1)高速缓存(116-1)(在本文中一般被称为“l1高速缓存116”)。处理器102-1的各种部件可以通过总线(例如,总线112)、和/或存储器控制器或中心直接地与高速缓存108通信。

如图1所示,存储器114可以通过存储器控制器120耦合到系统100的其它部件上。还可以从io控制器160经由互连170访问存储子系统180。如本文将参考剩余的附图进一步讨论的,系统100还包括通信逻辑150,以耦合(并促进其之间的通信)嵌入式系统152(例如,gpu(图形处理单元)或公司的phitm平台,在本文中也被称为“信宿(sink)”设备)与系统100(在本文也称作“主机”或“信源(source)”计算系统)的各种部件。虽然逻辑150被示出为耦合在互连104与嵌入式系统152之间,但是逻辑150也可以位于别处,或者在系统100内部或者在系统100外部。例如,在各种实施例中,可以将逻辑150(或其一部分)设置在处理器102、控制器120等中的一个之内。

图2-a示出了根据实施例的具有异构io重定向的计算系统的框图。在图2-a中,嵌入式系统152(在本文中有时也被称为“信宿”)可以独立于主机系统100(也被称为“信源”)运行,如图1所示。信宿152可以或者通过将信源100用作代理设备以访问存储设备/池180来进行io;或者通过经由其自身的io连接(202)直接将数据转移到存储设备/池180来进行io。在该实施例中,只要链路150的转移速率合理地快于io链路201或202,经由异构路径(例如,路径150加路径201)在嵌入式系统152与存储设备180目的地(其可以与本文所讨论的存储器设备(例如,图1的存储器114)相同或类似)之间例如通过主机/服务器100移动数据(在本文中一般被称为io“重定向”)就可以胜过由信宿节点152执行的io路径202,这是由于其相对有限的io能力/吞吐量。

在本公开中导出的算法还可以用于其中信宿设备不具有对存储设备180(或存储器120)的直接访问的配置中。只要通信逻辑150如图2-b所示合理地快,就可以高效地将数据从信宿152转移到存储设备180(或存储器120)。

在各种实施例中,存储设备180包括一种或多种类型的存储设备或存储器,例如,在本文中参考图1-13所讨论的那些,例如包括以下中的一个或多个:网络附接存储(nas)设备、存储区域网络(san)设备、或直接附接存储(das)设备。

在本文公开的实施例中,rdma(远程直接存储器访问)和主动消息用于实现构建所描述的数据转移解决方案(即,异构路径150加201)的目标,其不要求任何特定的存储协议和/或任何特定的文件系统支持。这可以在使开发成本最小化的情况下维持具有适应许多不同的运行时环境的灵活性的有竞争力的性能结果。

关于性能考虑,现有的存储解决方案通常需要两种实现方式,例如,发起者对目标(例如,scsi(小型计算机系统接口))或客户端对服务器(nfs(网络文件系统)或集群文件系统)。这些解决方案由预定义的协议进行限定,其可能随着时间失去其竞争优势且难以适应硬件和/或软件技术的新改进。为此,本文描述的一些实施例仅使对路径201的限定最小化。例如,实施例用互连链路150替代总体路径的实质部分,互连链路150可以优于存储链路(链路201和202)若干个数量级。

此外,通过一些实施例提供了轻量、较低成本和/或更快的开发周期。例如,互连通常是最可能以模拟形式存在的嵌入式系统内的嵌入式平台对存储链路的最小支持特征中的一个。为此,实施例消除了在嵌入式平台内对这种模拟的需要。这进而引起更少的软件堆栈、更少的资源需求(高速缓存、存储器、功率等需求)、和/或更快和/或更容易的实现方式。

此外,在一些实施例中提供了异构且适应性的解决方案。例如,在没有预定义的协议约束的情况下,可以使用不同的格式将数据自由地重定向到不同的存储介质。还可以更容易地将数据取回并转换回其原始形式。

参考图3-a、图3-b以及图4(其示出了根据一些实施例的方法的流程图),将数据操作分组成三个类别:放(put)、取(get)以及控制(control)。“放”操作创建或修改包含数据的存储对象。存储对象可以是文件、目录、磁盘块、或存储设备的分立单元。“取”操作从存储对象取回内容。“控制”操作提供信源100与信宿152之间的实现专用机制以用于任务同步。存储对象是已知的,并且可由经由常规方法(例如,文件io)或存储协议(例如,nas或san协议)执行操作的信源访问。将在信宿上执行的“放”和“取”操作封装到经由通信(comm.)逻辑150(例如,根据ieee(电气与电子工程师协会)802.3的以太网)发送到信源100的主动消息中以用于实际操作。根据一些实施例,图3-a示出了与委托“取”操作相关联的流程;图3-b示出了与委托“放”操作相关联的流程;而图4示出了与完整路径相关联的流程。

如图3-a和图3-b所示,从信宿设备将“放”和“取”操作委托给信源(主机)。如图3-a所示,代表信宿设备152的委托“取”操作(从存储设备180源起数据)被实现为存储设备-读取(storage-read)(步骤1:从存储设备180到信源100),接下来是rdma-写入(rdma-write)(步骤2:将数据从信源100发送到嵌入式系统152)。如图3-b所示,代表信宿设备152的委托“放”操作被实现为rdma-读取(rdma-read)(步骤1:将数据从信宿152复制到信源100),接下来是存储设备-写入(storage-write)(步骤2:将数据从信源100发送到存储设备180)。此外,可以在信宿152与信源100之间执行“控制”操作以用于其它同步目的(例如,可以将锁定消息从信源发送到信宿以通知在另一个解锁消息到达之前不应对存储对象执行任何操作)。

图4示出了详细操作(封装在主动消息内或以其他方式与其相关联)主动消息从信宿发送以在代表发送方(例如,信宿设备或嵌入式系统152)的信源设备(即,主机/服务器100)上操作或执行。在嵌入式系统152与主机/服务器100之间的主动消息交换(其可以包括将由嵌入式系统执行的代码或者代替地到该代码的函数指针)可以包括命令(cmd)、数据长度、缓冲器位置、和/或数据内容。另外,可以将从信源设备100发送到存储设备180的命令转换为存储命令(例如,打开、搜索、锁定、读取、和/或写入)。在实施例中,可以使用操作系统rdma完成/回调操作实现主动消息。

图5-10提供了本文所讨论的操作的进一步细化。图5示出了根据一些实施例的用于初始化信宿设备和信源设备的方法的流程图。在一个实施例中,参考图1-4和图11-13所讨论的各种部件可以用于执行参考图5所讨论的操作中的一个或多个操作。在实施例中,图5的一个或多个操作在诸如逻辑150的逻辑(例如,固件)、嵌入式系统152、和/或主机/服务器100中实现。

参考图5,在操作502处,信宿设备通过生成控制消息以获得连接来开始初始化,并且在操作504处将控制消息发送到信源设备。在操作520处,信源设备通过构建函数指针列表(或fpl,其包括关于信源设备放和取函数的信息/指针)来开始初始化。在操作522处,信源等待连接(例如,从信宿设备发送的控制消息)。在操作524处,信源设备基于fpl构建回复消息,并随后在操作526处将回复消息发送到信宿设备。一旦在操作506处信宿设备接收到回复消息,其就在操作508处保存信源fpl。

图6和7示出了根据一些实施例的分别用于执行信宿放函数和信宿取函数的方法的流程图。在一个实施例中,参考图1-4和图11-13所讨论的各种部件可以用于执行参考图6或图7所讨论的操作中的一个或多个操作。在实施例中,图6或图7的一个或多个操作在诸如逻辑150的逻辑(例如,固件)、嵌入式系统152、和/或主机/服务器100中实现。在图6-7中,在初始化时(参见图5),信宿设备与信源设备经由“控制”操作进行握手,以获得信源设备“放”和“取”函数/操作指针。

参考图6,对于在信宿设备上触发的“放”请求,信宿设备构建/注册用于rdma操作的数据缓冲器(操作602),接下来利用存储器注册信息、数据缓冲器布局(例如,具有开始地址和长度)与先前获得的“放”函数指针一起封装/生成主动消息(操作604)。随后将主动消息发送到信源设备(操作606),并在操作620处由信源设备接收并解码(操作622)。在信源设备处通过执行对应的rdma-读取操作(从信宿设备到信源设备)来执行“放”操作(步骤624),接下来是对存储设备180的实际写入操作。在操作608处,信宿设备等待完成放操作/函数。

参考图7,对于信宿设备上的“取”函数/操作,信宿设备在信宿设备上构建/注册用于rdma操作的接收缓冲器(操作702),接下来利用存储器注册信息、接收缓冲器布局(例如,具有开始地址和长度)、存储元数据与先前获得的“取”函数指针一起生成/封装主动消息(操作704)。然后将消息发送到信源设备(操作706),其中信源设备在接收(操作720)并解码主动消息(操作722)后通过从存储设备180读取数据来执行请求(操作724),接下来是到如在主动消息中指定的信宿设备缓冲器的rdma写入操作。在操作708处,信宿设备等待完成取操作/函数。

此外,在一些实施例中,锁定适当地是信源设备上的“放”和“取”函数的一部分。其遵守由信源设备与存储子系统180之间的交互/链接所施加的实际存储操作需求(例如,用于文件io的posix(用于unix的便携式操作系统接口或另一个应用程序接口(api))锁定或用于nfs的nlm(网络锁定管理器)锁定)。在一些实施例中,可以预期,“放”操作将获取排他锁,而“取”操作将获取共享锁。

图8和图9示出了根据一些实施例的用于异步地委托放和取操作(以及参考图10的其完成)的方法的流程图。在一个实施例中,参考图1-4和图11-13所讨论的各种部件可以用于执行参考图8、图9或图10所讨论的操作中的一个或多个操作。在实施例中,图8、图9或图10的一个或多个操作在诸如逻辑150的逻辑(例如,固件)、嵌入式系统152、和/或主机/服务器100中实现。

参考图8-10,当且仅当已经预先布置了将具有缓冲器注册信息、信宿设备缓冲器布局、以及信宿设备的完成回调函数指针的请求从信宿设备发送到信源设备的“控制”操作时,可以由信源设备代表信宿设备异步地请求“放”和“取”操作二者。更具体地,信宿设备可以在操作802处开始委托放操作,在操作804处构建/生成主动消息(例如,类似于参考操作604所讨论的操作),并在操作806处将主动消息发送到信源设备的主动消息处理器。一旦接收(操作820),就对主动消息进行解码(操作822),并且在操作824处调度放委托操作(例如,通过执行队列请求以在基于存储器的队列中保存请求,以及调度信源来执行放操作)。然后,在操作830处,信源设备的主动消息调度器调度放操作以用于执行(例如,通过获得排他锁、来自信宿设备的rdma读取操作、到存储设备204的写入操作、以及通知完成(例如,参见图10))。如图8所示,操作830和操作802可以双向地交换信息以执行其任务。

另外(如图9-10所示),还可以异步地委托取操作。例如,信宿设备可以在操作902处开始取操作委托,在操作904处生成/构建主动消息(例如,类似于参考操作704所讨论的操作),并在操作906处将主动消息发送到信源设备的主动消息处理器。一旦接收(操作920),就对主动消息进行解码(操作922),并且在操作924处调度取委托操作(例如,通过执行队列请求以在基于存储器的队列中保存请求,以及调度信源来执行取操作)。然后,在操作930处,信源设备的主动消息调度器调度取操作以用于执行(例如,通过获得共享锁、从存储设备180进行读取、到信宿设备缓冲器的rdma写入操作、以及通知完成(例如,参见图10))。如图9所示,操作930和操作902可以双向地交换信息以执行其任务。

关于参考图8和图9提及的完成处理,图10示出了根据实施例的与完成处理相关联的操作。如图10所示,当在操作1002处完成异步“放”或异步“取”后,信源设备的主动消息调度器执行构建/生成主动消息(例如,使用信宿设备完成回调函数和与完成相关联的数据)的操作1004。在操作1006处,将主动消息发送到信宿设备的主动消息处理器。在操作1022处,信宿设备的主动消息处理器检测从信源设备接收到主动消息。在操作1024处对主动消息进行解码。在操作1026处,随后运行完成回调函数。

可以在协处理器及其主机系统(例如,intelxeonphi平台)的顶层构建一些实施例,其中可以提供协处理器卸载基础设施(coi)api扩展,协处理器卸载基础设施(coi)api扩展允许驻留在xeonphi平台上的数据在其主机计算系统(例如,参考图1-4和图11-13所讨论的计算系统)、物理存储设备(例如,存储设备/池180)、以及xeonphi本身之间高效地移动。因此,与通常基于相对庞大且昂贵的集群文件系统的mpi(消息传递接口)io相反,coi扩展可以是极其轻量的。此外,这种实施例不要求任何特定的文件系统支持。进一步解决现有的缺点,在运行时间期间,旧的方法还可能在缓冲器高速缓存(存储器)、功耗、以及握手协议开销方面消耗相当大的xeonphi资源。除了在产品质量以及开发成本方面提供对现有生产线的改进之外,这种轻量的实施例可以容易地适应大量不同的运行时环境,而不受任何特定的存储硬件/软件配置的约束。另外,其固有的异构性(heterogeneity)允许大量相异的信源设备、信宿设备、以及存储设备/池来实现数据流,而不管其单个的配置。这可以成为对于hpc(高性能计算)产品尤其相关的,其可以显著提高用于大规模集群的互连链路速度,可以容易地超过其存储设置速度。

图11示出了根据本发明的实施例的计算系统1100的框图。计算系统1100可以包括一个或多个中央处理单元(cpu)1102或处理器,一个或多个中央处理单元(cpu)1102或处理器经由互连网络(或总线)1104进行通信。处理器1102可以包括通用处理器、网络处理器(其处理通过计算机网络1103传送的数据)、应用处理器(例如,在手机、智能电话等中使用的应用处理器)、或其它类型的处理器(包括精简指令集计算机(risc)处理器或复杂指令集计算机(cisc)处理器)。可以使用各种类型的计算网络1103,包括有线网络(例如,以太网、千兆比特、光纤等)或无线网络(例如,蜂窝、3g(第三代手机技术或第三代无线格式(uwcc))、4g(第四代(无线/移动通信))、低功率嵌入(lpe)等)。此外,处理器1102可以具有单个或多个核心设计。具有多个核心设计的处理器1102可以在同一个集成电路(ic)管芯上集成不同类型的处理器核心。另外,具有多个核心设计的处理器1102可以被实现为对称或非对称多处理器。

在实施例中,处理器1102中的一个或多个处理器1102可以与图1的处理器102相同或类似。例如,处理器1102中的一个或多个处理器1102可以包括核心106和/或高速缓存108中的一个或多个。另外,参考图1-10所讨论的操作可以由系统1100的一个或多个部件执行。

芯片组1106也可以与互连网络1104通信。芯片组1106可以包括图形和存储器控制中心(gmch)1108。gmch1108可以包括与存储器114通信的存储器控制器1110(其在实施例中可以与图1的存储器控制器120相同或类似)。系统1100还可以包括在各种位置处(例如,图11所示的位置处,但是可以在系统1100内的其它位置处(未示出))的逻辑150(例如,耦合到嵌入式系统152)。存储器114可以存储数据,包括由cpu1102或包括在计算系统1100中的任何其它设备执行的指令序列。在本发明的一个实施例中,存储器114可以包括一个或多个易失性/非易失性存储(或存储器)设备,例如,随机存取存储器(ram)、动态ram(dram)、同步dram(sdram)、静态ram(sram)、或其它类型的存储设备(例如,硬盘、纳米线存储器、铁电晶体管随机存取存储器(fetram)、磁阻随机存取存储器(mram)、闪速存储器、旋转力矩转移随机存取存储器(sttram)、电阻随机存取存储器、3d交叉点存储器(例如,pcm(相变存储器))、具有nand/nor存储器的ssd等。附加的设备可以经由互连网络1104进行通信,例如,多个cpu和/或多个系统存储器。

gmch1108还可以包括与图形加速器1116通信的图形接口1114。在本发明的一个实施例中,图形接口1114可以经由加速图形端口(agp)或外围部件互连(pci)(或快速pci(pcie)接口)与图形加速器1116通信。在本发明的实施例中,显示器1117(例如,平板显示器、触摸屏等)可以例如通过信号转换器与图形接口1114通信,信号转换器将存储在存储设备(例如,视频存储器或系统存储器)内的图像的数字表示转换为由显示器解释并显示的显示信号。由显示设备产生的显示信号在被显示器1117解释并且随后在显示器1117上显示之前可以经过各种控制设备。

中心接口1118可以允许gmch1108和输入/输出控制中心(ich)1120通信。ich1120可以将接口提供给与计算系统1100通信的i/o设备。ich1120可以通过外围桥(或控制器)1124(例如,外围部件互连(pci)桥、通用串行总线(usb)控制器、或其它类型的外围桥或控制器)与总线1122通信。桥1124可以提供在cpu1102与外围设备之间的数据路径。可以使用其它类型的拓扑。另外,多个总线可以例如通过多个桥或控制器与ich1120通信。此外,在各种实施例中,与ich1120通信的其它外围部件可以包括:集成驱动电子(ide)或小型计算机系统接口(scsi)硬驱动器、usb端口、键盘、鼠标、并行端口、串行端口、软盘驱动器、数字输出支持(例如,数字视频接口(dvi))、或其它设备。

总线1122可以与音频设备1126、一个或多个磁盘驱动器1128、以及网络接口设备1130(其与计算机网络1103通信,例如,经由有线或无线接口)通信。如所示出的,可以将网络接口设备1130耦合到天线1131上以无线地(例如,经由电气与电子工程师协会(ieee)802.11接口(包括ieee802.11a/b/g/n等)、蜂窝接口、3g、11g、lpe等)与网络1103通信。其它设备可以经由总线1122进行通信。另外,在一些实施例中,各种部件(例如,网络接口设备1130)可以与gmch1108通信。另外,可以将处理器1102和gmch1108组合以形成单个芯片。此外,在其它实施例中,可以将图形加速器1116包括在gmch1108内。

此外,计算系统1100可以包括易失性和/或非易失性存储器(或存储设备)。例如,非易失性存储器可以包括以下中的一个或多个:只读存储器(rom)、可编程rom(prom)、可擦除prom(eprom)、电eprom(eeprom)、磁盘驱动器(例如,1128)、软盘、光盘rom(cd-rom)、数字通用盘(dvd)、闪速存储器、磁光盘、或能够存储电子数据(例如,包括指令)的其它类型的非易失性机器可读介质。

图12示出了根据实施例的以点对点(ptp)配置进行布置的计算系统1200。特别地,图12示出了这样的系统:其中处理器、存储器、以及输入/输出设备通过多个点对点接口互连。参考图1-11所讨论的操作可以由系统1200的一个或多个部件执行。

如图12所示,系统1200可以包括若干处理器,为了清楚起见,只示出了其中的两个(处理器1202和1204)。处理器1202和1204每个均可以包括本地存储器控制器中心(mch)1206和1208,以实现与存储器1210和1212的通信。存储器1210和/或1212可以存储各种数据,例如,参考图1和/或图11的存储器114所讨论的。另外,在一些实施例中,mch1206和1208可以包括图1的存储器控制器120和/或逻辑150。

在实施例中,处理器1202和1204可以是参考图11所讨论的处理器1102中的一个。处理器1202和1204可以经由点对点(ptp)接口1214分别使用ptp接口电路1216和1218交换数据。另外,处理器1202和1204每个均可以经由单独的ptp接口1222和1224使用点对点接口电路1226、1228、1230以及1232与芯片组1220交换数据。芯片组1220还可以经由高性能图形接口1236(例如,使用ptp接口电路1237)与高性能图形电路1234交换数据。如参考图1所讨论的,在一些实施例中,可以将图形接口1236耦合到显示设备(例如,显示器1117)。

如图12所示,图1的核心106和/或高速缓存108中的一个或多个可以位于处理器1202和1204内。然而,其它实施例可以存在于图12的系统1200内的其它电路、逻辑单元、或设备中。此外,其它实施例可以遍及图12所示的若干电路、逻辑单元、或设备分布。

芯片组1220可以使用ptp接口电路1241与总线1240通信。总线1240可以具有与其通信的一个或多个设备,例如,总线桥1242和i/o设备1243。总线桥1242可以经由总线1244与以下其它设备通信:例如,键盘/鼠标1245、通信设备1246(例如,调制解调器、网络接口设备、或与计算机网络1103通信的其它通信设备,例如,如参考网络接口设备1130所讨论的,包括经由天线1131)、音频i/o设备、和/或数据存储设备1248。数据存储设备1248可以存储可以由处理器1202和/或1204执行的代码1249。

在一些实施例中,本文所讨论的部件中的一个或多个可以在片上系统(soc)设备上实施。图13示出了根据实施例的soc封装的框图。如图13所示,soc1302包括一个或多个中央处理单元(cpu)核心1320、一个或多个图形处理器单元(gpu)核心1330、输入/输出(i/o)接口1340、以及存储器控制器1342。可以将soc封装1302的各种部件耦合到互连或总线上,例如,在本文中参考其它附图所讨论的。另外,soc封装1302可以包括更多或更少的部件,例如,在本文中参考其它附图所讨论的。此外,soc封装1302中的每个部件可以包括一个或多个其它部件,例如,如在本文中参考其它附图所讨论的。在一个实施例中,soc封装1302(及其部件)设置在一个或多个集成电路(ic)管芯上,例如,其被封装到单个半导体设备上。

如图13所示,soc封装1302经由存储器控制器1342耦合到存储器1360(其可以与在本文中参考其它附图所讨论的存储器类似或相同。)在实施例中,存储器1360(或其一部分)可以集成到soc封装1302中。

i/o接口1340可以例如经由互连和/或总线(例如,在本文中参考其它附图所讨论的)耦合到一个或多个i/o设备1370。i/o设备1370可以包括以下中的一个或多个:键盘、鼠标、触摸板、显示器、图像/视频捕获设备(例如,照像机或摄像机/录影机)、触摸屏、扬声器等。此外,在实施例中,soc封装1302可以包括/集成逻辑150。替代地,可以将逻辑150设置在soc封装1302的外部(即,作为分立逻辑)。

下面的示例属于另外的实施例。示例1包括一种装置,其包括:用于经由信源设备将嵌入式系统耦合到存储设备的逻辑,其中,响应于在嵌入式系统与信源设备之间耦合的第一链路的转移速率快于在信源设备与存储设备之间耦合的第二链路的转移速率,嵌入式系统和存储设备将通过第一链路和第二链路而不是第三链路来交换信息,其中第三链路能够直接耦合嵌入式系统和存储设备。示例2包括示例1的装置,其中,嵌入式系统和存储设备至少部分地基于rdma(远程直接存储器访问)消息或主动消息中的一个或多个经由信源设备来交换信息。示例3包括示例2的装置,其中,主动消息是自身能够执行处理的消息传送对象。示例4包括示例1的装置,其中,嵌入式系统和存储设备将在主动模式或被动模式中的一个模式下经由信源设备来交换信息。示例5包括示例4的装置,其中,主动模式将在调用过程的上下文中在信源设备处对数据进行操作。示例6包括示例4的装置,其中,被动模式使得与主动消息相关联的对数据的传输,数据是在代表嵌入式系统的信源设备处操作的。示例7包括示例1的装置,其中,嵌入式系统将包括图形处理单元平台或协处理器卸载基础设施平台中的一个。示例8包括示例1的装置,其中,存储设备将包括以下中的一个或多个:网络附接存储(nas)设备、存储区域网络(san)设备、或直接附接存储(das)设备。示例9包括示例1的装置,其中,信源设备将包括主机计算系统或计算机服务器。示例10包括示例1的装置,其中,一个或多个处理器核心被耦合到存储设备以访问存储在存储设备中的信息。示例11包括示例1的装置,其中,逻辑、一个或多个处理器核心、以及存储器中的一个或多个在同一个集成电路管芯上。示例12包括示例1的装置,其中,嵌入式系统和存储设备将至少部分地基于通过通信协议的rdma(远程直接存储器访问)消息或主动消息中的一个或多个经由信源设备来交换信息。

示例13包括一种方法,其包括:经由信源设备在嵌入式系统与存储设备之间交换信息,其中,响应于在嵌入式系统与信源设备之间耦合的第一链路的转移速率快于在信源设备与存储设备之间耦合的第二链路的转移速率,嵌入式系统和存储设备通过第一链路和第二链路而不是第三链路来交换信息,其中第三链路能够直接耦合嵌入式系统和存储设备。示例14包括示例13的方法,还包括,嵌入式系统和存储设备至少部分地基于rdma(远程直接存储器访问)消息或主动消息中的一个或多个经由信源设备来交换信息。示例15包括示例14的方法,其中,主动消息是自身能够执行处理的消息传送对象。示例16包括示例13的方法,还包括,嵌入式系统和存储设备在主动模式或被动模式中的一个模式下经由信源设备来交换信息。示例17包括示例16的方法,其中,主动模式在调用过程的上下文中在信源设备处对数据进行操作。示例18包括示例16的方法,其中,被动模式使得与主动消息相关联的对数据的传输,数据是在代表嵌入式系统的信源设备处操作的。示例19包括示例13的方法,其中,嵌入式系统包括图形处理单元平台或协处理器卸载基础设施平台中的一个。示例20包括示例13的方法,其中,存储设备包括以下中的一个或多个:网络附接存储(nas)设备、存储区域网络(san)设备、或直接附接存储(das)设备。示例21包括示例13的方法,其中,信源设备包括主机计算系统或计算机服务器。

示例22包括一种计算机可读介质,其包括一个或多个指令,当在处理器上被执行时,该指令将处理器配置为执行一个或多个操作以用于:经由信源设备在嵌入式系统与存储设备之间交换信息,其中,响应于在嵌入式系统与信源设备之间耦合的第一链路的转移速率快于在信源设备与存储设备之间耦合的第二链路的转移速率,嵌入式系统和存储设备通过第一链路和第二链路而不是第三链路来交换信息,其中第三链路能够直接耦合嵌入式系统和存储设备。示例23包括示例22的计算机可读介质,还包括一个或多个指令,当在处理器上被执行时,该指令将处理器配置为执行一个或多个操作,以使得嵌入式系统和存储设备至少部分地基于rdma(远程直接存储器访问)消息或主动消息中的一个或多个经由信源设备来交换信息。示例24包括示例22的计算机可读介质,其中,主动消息是自身能够执行处理的消息传送对象。示例25包括示例22的计算机可读介质,还包括一个或多个指令,当在处理器上被执行时,该指令将处理器配置为执行一个或多个操作,以使得嵌入式系统和存储设备在主动模式或被动模式中的一个模式下经由信源设备来交换信息。示例26包括示例22的计算机可读介质,其中,主动模式在调用过程的上下文中在信源设备处对数据进行操作,或者其中,被动模式使得与主动消息相关联的对数据的传输,数据是在代表嵌入式系统的信源设备处操作的。

示例27包括一种装置,其包括用于执行如在任何前述示例中所阐述的方法的单元。

示例28包括机器可读存储设备,其包括机器可读指令,当被执行时,该指令实现如任何前述示例所阐述的方法或实现如任何前述示例所阐述的装置。

在各种实施例中,本文所讨论的操作(例如,参考图1-13)可以被实现为硬件(例如,电路)、软件、固件、微代码、或其组合,其可以被设置为计算机程序产品,例如,包括有形的(例如,非暂时性的)机器可读或计算机可读介质,其上存储有用于将计算机编程为执行本文所讨论的过程的指令(或软件过程)。另外,术语“逻辑”可以包括(举例来说)软件、硬件、或者软件与硬件的组合。机器可读介质可以包括存储设备,例如,参考图1-13所讨论的存储设备。

另外,可以将这种有形的计算机可读介质下载为计算机程序产品,其中,可以借助于数据信号(例如,载波或其它传播介质中的)经由通信链路(例如,总线、调制解调器、或网络连接)将程序从远程计算机(例如,服务器)转移到请求计算机(例如,客户端)。

在说明书中提及“一个实施例”或“实施例”表示结合实施例描述的特定特征、结构或特性可以包括在至少一个实现方式中。在说明书中各处出现的短语“在一个实施例中”可以全部指代同一实施例或并非全部指代同一实施例。

另外,在说明书和权利要求书中,可以使用术语“耦合”和“连接”及其衍生词。在一些实施例中,“连接”可以用于指示两个或更多个元件彼此直接物理或电接触。“耦合”可以表示两个或更多个元件直接物理或电接触。然而,“耦合”还可以表示两个或更多个元件可以不彼此直接接触,但是仍然可以彼此协作或交互。

因此,虽然已经以专用于结构特征和/或方法动作的语言描述了实施例,但是可以理解,所要求保护的主题不限于所描述的特定特征或动作。相反,特定特征和动作作为实现所要求保护的主题的样本形式而公开。

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