处理非相干设备的原子操作的制作方法

文档序号:6358067阅读:92来源:国知局
专利名称:处理非相干设备的原子操作的制作方法
处理非相干设备的原子操作
背景技术
现代计算机系统是通过包括处理器、存储设备、外围设备等的各个组件的互连实现的。为了实现这些不同组件之间的通信,可出现多个链路以将一个或多个设备互连在一起。这些系统可包括许多不同类型的互连或链路。常见地,对每个特定类型的链路具有给定的通信协议,并且发生在这些链路上的通信遵守该协议。在许多系统中,链路可包括相干链路和非相干链路。相干链路常见地用于紧耦合的组件,其中相应协议提供相干交易以使可高速缓冲存储在各个位置的数据的统一概览得以维持。相反,在非相干通信协议中,通信可能不以高速缓冲存储器相干方式发生。原子操作允许在具有拟以非阻滞方式同步的多个制造商和/或消费者的情形下有益的同步机制。原子操作也允许无锁定统计计数器,例如在设备原子地将计数器递增并且主机软件原子地读取和清零计数器的情形下。相比锁定交易,原子操作能提供比其它互连业务更低的潜伏时间和更高的伸缩性。在外设部件互连Express (PCIe )协议中,原子操作初次介绍为2008年1月15日的题为“Atomic Operations (原子操作)”的工程变更通知(ECN)。尽管原子操作(在本文中另称为“原子”)的益处很大程度地取决于应用和使用模型,然而预计加速器、高端图形和高性能计算(HPC)能从支持原子的平台获益。总地来说,根据PCIe 协议的原子操作提供一次交易以确定存储器空间内的某一位置、读取该位置的值、潜在地将新值写至该位置,并返回最初值。对该位置的读修改和写序列是原子地执行的,同时处于比锁定操作更低的潜伏时间。在许多示例中,在复杂系统中执行原子可能使非常大和不确定性的潜伏时间发生,因为原子操作的结束可能需要未知潜伏时间的多次远端存储器交易。


图1是根据本发明一个实施例的系统的方框图。图2是根据本发明一个实施例的、详述通过根联合体执行的操作的方法的流程图。图3是根据本发明一个实施例的、详述通过请求方代理执行的操作的方法的流程图。图4是根据本发明一个实施例的、详述由接收相干原子请求的目标代理执行的操作的方法的流程图。
具体实施例方式在各实施例中,可提供多种技术以更有效地在平台上执行原子操作。在许多实现中,原子操作可根据PCIe 协议的原子操作能力。具体地说,诸实施例可特别侧重于支持设备发布原子(“总线主控器请求”),其中例如经由输入/输出(IO)控制器(IOH)耦合于平台的IO设备的设备是请求方,而IOH——在本文中一般另称为芯片集——是完成方。
这种原子操作请求可经由例如PCIe 链路等的非相干互连在平台中接收,并可使用平台的一个或多个相干互连在平台中予以处理。作为一个示例,Intel 快速路径互连 (QPI)链路可以是用来连接处理器和IOH的相干互连。对于一些实现来说,平台可使用其它内部相干互连以将一个或多个核连接于非核逻辑并使用QPI链路来连接各槽口(socket)。 使用节点控制器来连接多个节点以构建相干平台的其它平台可使用专用或标准底板/互连结构来传输数据。这些实施例也可应用于其它相干互连,例如HyperTransport 或 RapidIO 链路。这些实施例也同样适用于许多不同的平台类型,例如具有集成IO控制器 (IIO)的单槽口平台以及具有两个槽口以及在每个槽口中的集成IO控制器的双核处理器 (DP)平台,或者具有含IOH功能的独立芯片集的这些平台。如前所述,原子操作可允许在存在拟以非阻滞方式同步的多个制造商和消费者的情形下有益的先进同步机制。例如,多个制造商可安全地排入一公用队列而不会有任何显著的锁定。比较和置换(CAS)是一种原子操作,在这种操作中将目标位置的值与指定值比较。如果它们匹配,则将另一指定值回写至该位置。不管怎样,该位置的最初值被返回到请求方。在!^etchAdd操作中,取数和相加都发生。更具体地,使目标位置的值递增一指定值(例如使用忽略任何进位或溢出的2补码运算),并且其结果被回写至该位置。另外,该位置的最初值被返回到请求方。在置换中,可能发生无条件置换,其中将指定值写至目标位置并使该位置的最初值返回到请求方。为了支持原子,可响应输入的原子操作通过芯片集来执行如下操作。所描述的具体示例是下面形式的!^etchAdd操作TetchAdd (位置、加值),其中位置是作为操作目标的物理地址,而加值是加至该位置的值。然而,可将这些实施例应用于任何类型的原子操作。使用作为能用来履行原子请求的相干交易的示例的QPI存储器交易,由完成方执行以处理该原子的操作如下。首先,取得存储器位置上的锁定并可能停止所有流程以维持原子性。然后可执行下列操作,其中读出在请求位置的数据,执行算术操作并随后写交易发生,如下X = QPI_Read (位置)Y = X+加值QPIJVrite (位置,Y)。最后,将提供值X的完成返回给请求方。原始QPI_Read和QPI_Write在相干互连上执行监听或非监听读/写(R/W)存储器循环以访问作为操作目标的存储器范围。如可从前述步骤中看到的那样,取决于相干互连带宽、用途和负载因素,这些操作可能花费相对长的时间。另外,可能需要通过节点控制器跨相干链路地将操作路由至另一槽口。如此,通过使直接耦合于请求方的根联合体或其它实体扮演完成方的角色,原子操作的行为可能不具有确定性。该不确定性潜伏时间可能发生的部分原因是对于目标存储器存在于何处的不确定性。假设作为一个例子,具有耦合于芯片集的设备的多槽口平台充当根联合体。首先,芯片集确定由原子操作作为目标的地址范围的位置。该范围可能出现在耦合于不同处理器槽口的存储器中。因此主存该设备的根联合体的芯片集可访问直接存储器存取(DMA)映射引擎以根据请求的输入虚拟地址确定相应物理地址是远端存储器。然后,在相干互连上可能发生数次存储器交易。一旦接收到请求的数据,则芯片集(即设备的根联合体)将作为原子操作的完成方执行原子操作。因此这些根联合体不仅处理原子功能,还执行交易以获得所需的虚拟转换,如果不出现在根联合体的话。注意该功能可能导致一次或多次交易从芯片集送至相应处理器,并且如果处理器不具有与高速缓冲存储器中存在的请求地址关联的页面表,则需要更多的交易以获得要求的转换,这增加了原子操作的潜伏时间和不确定性。 在多槽口系统中,能格外减少潜伏时间,因为能免去在每个槽口中执行地址转换以确定目标存储器位置是否出现在本地的需要。相反,执行转换的唯一地点是在最终目的地——即目标存储器位置的拥有者——的槽口中。因此,在各实施例中,完成方可使用与接收的原子操作对应的相干操作码以将请求直接路由至拥有的存储器范围,在那里它结束并且这些值(如果有的话)作为相干完成的一部分返回。在一个实施例中,对用于执行!^etchAdd操作的QPI互连来说,用来路由请求的相干操作码可称为QPI_FetchAdd_Request,而被称为QPI_FetchAdd_Completion的另一操作码可用来指示请求的完成并提供任何数据。在一个实施例中,该QPI_FetchAdd_ Request的语法可与PCIe FetchAdd原子操作相同。为了提供各非相干原子操作和相干原子操作之间的这种映射,可在相干系统中使用相应操作码并且这可以是通过路由元件(例如CPU、IOH和节点控制器)的可路由跨接链路。如此,可提供相干可路由操作码以对非相干链路上的相应原子作出映射。在其它实施例中,可提供一类属的可路由操作码,该操作码具有足够的差分参数以隧穿对应于非相干原子的各个操作码并提供未来的活动空间。通过将来自非相干互连的操作码映射至相干互连上的等效操作码,可实现减少的存储器带宽。这些实施例因此允许减少为支持原子操作需要执行的存储器操作次数。也就是说,这些实施例不是将非相干原子操作变换成可能必须跨相干互连通信的至少两个相干存储器操作,而是提供充当非相干原子操作的代理的相应操作码(可路由)。当可路由操作码到达实际目的地时,该操作码在最终目的地(对应于目标存储器位置的拥有者)完成,在这种情形下以非常少的潜伏时间访问存储器并将结果跨相干互连地返回。一旦接收到结果,完成方可完成最初非相干原子交易并返回一完成(如果需要的话)。如此,非相干协议的原子可通过相干互连隧穿。现在参见图1,所示为根据本发明一个实施例的系统的框图。如图1所示,系统100 可以是多处理器系统。多处理器系统的许多种不同实现是可行的。例如,台式机或服务器平台可包括多处理器槽口,这些处理器槽口通过相干互连系统彼此通信。替代地,可存在多节点系统,其中每个处理器是独立节点并例如通过节点控制器或网络接口控制器(NIC)相连。如此,取决于具体平台架构,可以有许多不同的对系统100的组件进行互连的方式。为表示一般性,图1的多处理器系统描述为具有非相干(例如PCIe 链路)或相干(例如QPI或其它相干链路)的连接。因此如图1所示,处理器IlOa可经由相干互连125 与处理器IlOb通信。例如,该链路可以是例如QPI链路等的点对点链路,尽管基于总线的配置也是可能的。每个处理器110可包括一个或多个核。特别示出多个核11&-112η,这些核I^crIUn可例如经由相干链路直接互连或通过例如非核逻辑的其它组件相连。如进一步看到的那样,每个处理器可包括集成的IO控制器(IIO) 114,该集成的IO控制器(IIO) 114可用来提供集成的芯片集功能以允许与例如设备140等的外围设备通信,该设备140可以是任何类型合需的外围设备。如图所示,与设备140的通信可经由非相干互连130实现。如下文介绍的那样,IIO 114可包括操作码映射表115。另外,每个处理器110可进一步包括集成的存储器控制器(IMC) 118,集成的存储器控制器(IMC) 118可与本地耦合于相应处理器的一部分系统存储器通信。在一个实施例中,本地存储器120可以是动态随机存取存储器(DRAM),尽管本发明的范围不仅限于这方面。尽管为便于图1实施例的解说而通过该高级配置进行描述,然而要理解系统可包括许多其它组件。这些实施例旨在提高从例如设备140等的非相干连接设备发起的原子操作的效率。该操作流也示出于图1。为了开始操作,设备140可发布以要求的存储器位置为对象的原子操作。尽管该位置可以是系统中的任何位置,然而为解说目的假设该请求是针对本地耦合于处理器IlOb的存储器的目标位置。如图所示,该原子存储器请求(为了解释假设它是FetchAdd)的流指向IIO 1140, IIO IHtl充当设备140的根联合体。该原子操作的格式是=FetchAdd “位置X,值A”,其中位置X是请求的目标存储器位置(并可以虚拟地址的形式出现)而值A是拟用于原子操作中的操作数。由于IIO 114是设备140的根联合体,因此按惯例它会作为完成方处理原子操作,发送存储器请求以获得存储器位置的数据, 执行操作,潜在地发送更多存储器请求至目标存储器位置,并最终将完成送至设备140。如前所述,这些操作可能导致高的和不确定的潜伏时间。因此在各实施例中,为了避免这些潜伏时间和不确定性,IIO IHtl可将输入非相干原子操作映射至相干原子操作并将请求传送到请求的存储器位置的拥有者,以允许直接在存储器位置本地执行操作(例如通过存储器的拥有者代理)以避免不确定性行为和减少的潜伏时间。为此,Iio IHtl可访问操作码映射表以获得与接收的非相干原子操作码对应的相干原子操作码。因此如图1所示,IIO 1140可生成相干原子请求并经由互连125发送该相干原子请求。更具体地,可将相干FetchAdd请求发送至正确目的地,该相干FetchAdd请求包括允许路由该请求的所有信息。这样,可免去获得请求的数据并稍后将得到的数据回送至目标存储器位置的读/写操作的需求。仍然参见图1,可以看出,相干原子请求通过处理器IlOb接收并由IIOlH1处理以执行请求的操作。因此在该实例中,Iio IH1可充当完成方以在目标位置获得请求的数据, 执行请求的操作,将结果回送至存储器并随后经由互连125将完成回送至处理器110a。这样,由于IIO IH1处于目标存储器120b本地,因此为获得所需数据(例如第二操作数)并随后将结果回写至存储器而访问存储器的减少潜伏时间可能发生。为使这些操作能够发生在IIO IH1中,同样可对操作码映射表IK1作出访问以接收相干原子操作和执行请求的操作。再次使用该映射表,可经由从映射表获得的相干原子完成操作码将结果回传至处理器 110a。当IIO IHtl接收到完成时,对操作码映射表再次作出访问以获得非相干完成操作数以将结果经由互连130回传至设备140。尽管图1的实施例中示出了这种具体实现, 然而本发明的范围不局限于这个方面。
因此在各实施例中,可实现发起自非相干连接设备的原子操作的有效处理。如前面的讨论中所看到的,在一些实施例中执行操作时使用至少三个不同的代理,也就是发起代理、作为设备耦合至的根联合体的接收代理以及作为本地耦合于目标存储器位置的目标代理。当然,在许多情况下附加代理可在根联合体和目标代理之间互连。再进一步,在一些系统中,与这些原子操作对应的操作码可跨过连接相干系统中的多个设备的可伸缩节点控制器发送。这样,原子操作可针对由耦合于可伸缩节点控制器的处理器拥有的存储器位置。图2-4示出分别从接收代理(即根联合体)角度、请求代理角度和完成代理角度看到的处理原子操作的流程图。现在参见图2,其示出根据本发明一个实施例的详述通过根联合体执行的操作的方法的流程图。如图2所示,方法200可开始于经由非相干链路在IO 控制器中接收原子请求(方框210)。使用该请求,可访问映射表以将原子请求操作码变换成用于相干协议的原子请求操作码(方框220)。如前所述,在一种这样的实现中,接收的非相干原子请求可遵循PCIe 协议,而相干操作码可遵循QPI协议。接着可判断目标存储器的位置是否在IO控制器本地(菱形框230)。在一个实施例中,这种判断可参照路由表作出,该路由表可将请求方提供的虚拟地址范围与耦合于不同系统代理的不同系统存储器部分的地址范围作比较。如果确定该请求是针对处于IO控制器本地的位置,则IO控制器可响应原子请求来访问存储器(方框Mo)。例如,IO控制器可访问存在于IO控制器中的诸如直接存储器存取(DMA)映射等的映射表以将接收的虚拟地址转换成针对本地存储器中的位置的物理地址。如果这种映射不存在于映射表中,则可执行合适的页面遍历机制以获得转换。仍然参见图2,当IO控制器从本地存储器接收请求的数据时,它可执行原子请求的请求操作(方框250)。各种原子操作可如前所述地发生。一旦获得结果,除了将该结果回写至存储器以存储外,IO控制器可进一步将结果经由非相干链路发送至请求方(方框 280)。在一个实施例中,该结果可响应最初非相干原子操作经由非相干完成来传递。仍然参见图2,如果相反确定目标存储器的位置不是出现在本地,则控制进至方框沈0,在方框260相干原子请求可经由相干链路发送至另一代理,例如拥有目标存储器位置的家庭代理(方框260)。该代理然后可执行请求的原子操作并经由相干原子完成将结果返回给IO控制器(方框270)。该结果然后被返回,如方框280所示。从请求方的角度说可参照图3。如图3所示,方法300可通过经由非相干链路发送原子请求来实现(方框310)。该非相干设备可发送数个选定原子操作中的任何一个操作, 全部这些操作一般可包括与拟执行的原子操作对应的操作码;可能是用于原子操作的一个或多个操作数;以及拟获得操作数和/或拟写入结果的目标存储器位置。然后在原子操作结束后,外围设备可接收包含请求数据的原子完成(方框320)。注意尽管操作是在完成方的适当位置自动执行的,然而外围设备在执行其它作业前不需要等待结果返回。因此,在方框310和320之间的时间,外围设备可执行与原子操作无关的有用作业。现在参见图4,图中示出由接收相干原子操作的目标代理执行的操作的流程图。具体地说,方法400可开始于经由相干链路在第二 IO控制器中接收原子请求。回过头来参见图1,该第二控制器可以是出现在第二处理器IlO1中的IIO 11410仍然参见图4,当IO控制器从相干链路接收相干原子请求时,IO控制器可(通过参照指示目标存储器的物理位置的本地页面表)访问其本地存储器以获得目标存储器位置处的数据(方框420)。然后它可执行原子请求的请求操作(方框430)。各种原子操作可如前所述地发生。一旦获得结果, 除了将结果回传至其本地存储器以存储外,IO控制器可进一步经由相干链路将完成发送至最初的完成方,即直接耦合于设备请求方的IO控制器(方框440)。在一个实施例中,该完成可包括结果,并且可响应经由相干链路接收的相干原子请求藉由相干完成传递。尽管在图2-4所示实施例中示出具体的一组操作和代理,但是应理解本发明的范围不受这方面的限制。各实施例可以用代码实现,并可存储在其上存储有指令的存储介质上,这些指令可用来对系统编程以执行这些指令。存储介质可包括但不限于任何类型的盘,包括软盘、光盘、光碟、固态驱动器(SSD)、紧凑盘只读存储器(⑶-ROM)、可重写紧凑盘(⑶-RW)和磁光盘、诸如只读存储器(ROM)的的半导体器件、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、 电可擦除可编程只读存储器(EEPROM)、磁卡或者光学卡、或适于存储电子指令的任意其它类型的介质。尽管本发明已针对有限数量的实施例作了描述,然而本领域技术人员将会从其中领会到许多修改和变型。所附权利要求旨在覆盖所有这样的修改和变型,只要其落在本发明的真实精神和范围内。
权利要求
1.一种方法,包括在第一代理中经由非相干链路接收来自耦合于所述第一代理的设备的非相干原子请求;访问所述第一代理的映射表以将所述非相干原子请求变换成相干原子请求;以及经由相干链路将所述相干原子请求发送至经由所述相干链路耦合于所述第一代理的第二代理以使所述第二代理成为所述非相干原子请求的完成方。
2.如权利要求1所述的方法,其特征在于,还包括在所述第一代理中接收原子完成,所述原子完成包括对应于所述相干原子请求的、由所述第二代理执行的原子操作的结果。
3.如权利要求1所述的方法,其特征在于,还包括判断所述非相干原子请求的目标存储器位置是否在所述第一代理的本地,如果是的话就响应非相干原子请求访问在所述目标存储器位置的数据,否则将所述相干原子请求发送至所述第二代理。
4.如权利要求3所述的方法,其特征在于,所述第二代理处于包括所述目标存储器位置的存储器本地。
5.如权利要求4所述的方法,其特征在于,所述第二代理执行所述原子操作,将所述原子操作的结果存储在所述目标存储器位置,并将相干原子完成发送至所述第一代理以指示所述原子操作的完成。
6.如权利要求5所述的方法,其特征在于,还包括在所述第一代理中接收相干原子完成并访问所述第一代理的映射表以获得非相干原子完成。
7.如权利要求6所述的方法,其特征在于,还包括经由所述非相干链路将所述非相干原子完成内的结果发送至所述设备。
8.一种装置,包括第一代理,用来经由非相干链路接收来自耦合于所述第一代理的设备的对于请求的操作的原子请求,所述第一代理包括具有多个表目的映射表,所述每个表目将非相干交易映射至相干交易,至少一些表目包括非相干原子操作码和相应的相干原子操作码之间的映射,其中响应于所述原子请求的非相干原子操作码的接收,所述第一代理经由相干链路将所述相干原子操作码发送至耦合于所述第一代理的第二代理,以使所述第二代理执行所述原子请求的所述请求的操作。
9.如权利要求8所述的装置,其特征在于,所述第一代理包括所述设备的根联合体,并且所述原子请求具有要求将所述根联合体作为所述原子请求的完成方的协议。
10.如权利要求9所述的装置,其特征在于,所述相干原子操作码使所述第二代理作为所述原子请求的完成方。
11.如权利要求8所述的装置,其特征在于,所述第一代理经由所述相干链路从所述第二代理接收所述请求的操作的完成并产生非相干完成以传送至所述设备。
12.如权利要求8所述的装置,其特征在于,所述第一代理仅当所述原子请求的目标存储器位置处于所述第一代理本地时才响应于所述原子请求来执行所述请求的操作。
13.如权利要求12所述的装置,其特征在于,所述装置包括处理器,所述处理器包括与所述第一代理对应的多个核和集成的输入/输出控制器。
14.如权利要求13所述的装置,其特征在于,所述处理器经由所述相干链路耦合于第二处理器,所述第二处理器包括第二代理。
15.一种系统,包括第一处理器,其包括至少一个第一核;第一存储器控制器,其耦合于第一本地存储器; 以及第一控制器,用来与经由非相干链路耦合于所述第一处理器的设备通信,所述第一控制器从所述设备接收对请求的操作的原子请求并访问映射表以将所述原子请求的非相干原子操作码映射至相应的相干原子操作码,并经由相干链路将所述相干原子操作码发送至耦合于所述第一处理器的第二处理,以使所述第二处理器执行所述原子请求的所述请求的操作;第二处理器,其包括至少一个第二核;第二存储器控制器,其耦合于第二本地存储器; 以及第二控制器,其接收所述相干原子操作码,响应于所述相干原子操作码执行所述请求的操作以获得结果,将所述结果存储在所述第二本地存储器中,并将所述原子请求的完成提供给所述第一控制器;以及所述设备经由所述非相干链路耦合于所述第一处理器并产生所述原子请求,其中所述第一控制器包括所述设备的根联合体并且所述原子请求具有要求将所述根联合体作为所述原子请求的完成方的协议。
16.如权利要求15所述的系统,其特征在于,所述第一控制器包括具有多个条目的路由表,每个条目指示耦合于处理器的本地存储器的地址范围。
17.如权利要求16所述的系统,其特征在于,所述第一控制器基于所述路由表中的信息将所述相干原子操作路由至所述第二处理器。
18.如权利要求15所述的系统,其特征在于,所述第一控制器接收所述完成并访问所述映射表以获得与所述完成对应的非相干完成。
19.如权利要求18所述的系统,其特征在于,所述第一控制器将所述非相干完成送至所述设备以指示所述请求的操作的成功完成,并且所述设备在将所述原子请求传送至所述第一处理器后且在接收所述非相干完成前执行至少一个无关的操作。
20.如权利要求15所述的系统,其特征在于,还包括耦合于所述第一处理器的可伸缩节点控制器,所述可伸缩节点控制器从所述第一处理器接收第二原子请求以在耦合于由所述第一处理器所拥有的所述可伸缩节点控制器的存储器中执行请求的操作。
全文摘要
在一个实施例中,本发明包括一种方法,其经由非相干链路从耦合于代理的设备接收非相干原子请求;访问代理的映射表以将非相干原子请求变换成相干原子请求;并经由相干链路将相干原子请求发送至耦合于该代理的第二代理以使第二代理成为非相干原子请求的完成方。描述并要求保护其他实施例。
文档编号G06F9/46GK102214120SQ201110094419
公开日2011年10月12日 申请日期2011年4月7日 优先权日2010年4月8日
发明者R·萨里帕利 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1