共享存储器链路中的低功率进入的制作方法_3

文档序号:9929479阅读:来源:国知局
供共享存储器链路(SML) 协议,通过该SML协议来支持低时延LD/ST存储器语义。例如,SML可以用于传送系统的各个 节点610a-610n(通过共享存储器控制器615)对于共享存储器605的读和写。在一些实现方 式中,SML可以采用结合图5的例子所描述的互连架构和协议的多个方面。
[0074] 举一个例子,SML可以是基于存储器访问协议,例如,可扩展存储器互连(SMI)第三 代(SMI3)。或者,也可以使用其它存储器访问协议,例如,诸如完全缓存的DnM(FB-DmM)之 类的事务型存储器访问协议、DDR事务型(DDR-T)等等其它示例。在其它实例中,SML可以是 基于具有额外目录扩展的本机PCIe存储器读/写语义。由于进行了裁剪以高速缓存线路存 储器访问,因此SML的基于存储器协议的实现方式可以提供带宽效率优势。虽然存在高性能 设备间通信协议(例如,PCIe),但这些协议的上层(例如,事务和链路层)可能引入时延,这 使得在用于LD/ST存储器事务时(其包括涉及共享存储器605的事务),整个协议的应用性能 降低。诸如SMI3之类的存储器链路协议,可以具有提供更低时延访问的潜在另外优点,这是 由于其旁路了另一协议栈(例如,PCIe)的大部分。因此,SML的实现方式可以使用SMI3或者 在另一个协议的逻辑和物理PHY上运行的另一种存储器协议,例如,PCI e上的SMI3。
[0075]如上所述,在一些实现方式中,可以提供共享存储器控制器(SMC)615,其包括用于 对系统中的节点61〇3-61〇11的装载/存储请求进行处理的逻辑单元。31扣615可以通过使用 SML并将节点610a-610n连接到SMC 615的链路,来接收装载/存储请求。在一些实现方式中, 可以将SMC 615实现为诸如专用集成电路(ASIC)之类的设备,其包括用于对节点610a-610n 针对共享存储器资源的访问请求进行服务的逻辑单元。在其它实例中,SMC 615(以及共享 存储器605)可以位于与节点610a-610n其中之一或多个(或者甚至全部)相分离的设备、芯 片或电路板上。SMC 615还可以包括:用于协调各个节点的涉及共享存储器605的事务的逻 辑单元。另外,SMC可以维持目录,以跟踪对于共享存储器605中包括的各个数据资源(例如, 每个高速缓存线路)的访问。例如,数据资源可以处于共享访问状态(比如,其能够同时地被 节点中的多个处理设备和/或I/O设备进行访问(如,装载或读取))、独占访问状态(比如,如 果不是临时的话,被节点中的单一处理设备和/或I/O设备进行独占地保留(如,用于存储或 写入操作))、未高速缓存状态等等其它潜在示例。此外,虽然每一个节点可以具有对于共享 存储器605的一个或多个部分的直接访问,但各个节点(例如,61 Oa-61 On)可以使用不同的 寻址方案和值,其导致:第一节点根据第一地址值(例如,在指令中)来引用相同的共享存储 器数据,而第二节点根据第二地址值来引用相同的数据。SMC 615可以包括用于允许SMC 615解释各个节点的各种访问请求的逻辑单元(其包括将节点的地址映射到共享存储器资 源的数据结构)。
[0076]另外,在一些情况下,共享存储器的一些部分(例如,某些划分、存储器块、记录、文 件等等)可以服从某些许可、规则和分配,使得(例如,SMC 615)只允许节点61 Oa-61 On中的 一部分访问相应的数据。事实上,可以向系统的节点610a-610n的相应子集(在一些情况下, 不同的子集)分配每个共享存储器资源。这些分配可以是动态的,且SMC 615可以修改这些 规则和许可(例如,按需地、动态地等等),以适应可应用于共享存储器605的给定部分的新 的或者改变的规则、许可、节点分配和所有权。
[0077] SMC 615的示例还可以跟踪各个事务,这些事务涉及系统中的节点(例如,610a-610n)访问一个或多个共享存储器资源。例如,SMC 615可以跟踪每一个共享存储器605事务 的信息,其包括:该事务中涉及的节点的标识、该事务的进度(例如,无论其是否已完成)等 等其它事务信息。这可以准许传统的分布式存储器架构的面向事务方面中的一些方面应用 于本文所描述的改进的多节点共享存储器架构。另外,(例如,SMC)可以使用事务跟踪来辅 助维持或者实施每一个相应节点的不同的和独立的故障域。例如,SMC可以在其内部数据结 构中(其包括在存储器中),维持每一个进行中事务的相应节点ID,以及使用该信息来实施 访问权利,并维持每一个节点的各个故障域。因此,当这些节点其中之一停止工作时(例如, 由于关键错误、触发的恢复序列或者其它故障或事件),仅仅该节点和其涉及共享存储器 605的事务被中断(例如,被SMC转出),剩余节点的涉及共享存储器605的事务则独立于所述 另一个节点的故障而继续。
[0078]系统可以包括多个节点。另外,一些示例性系统可以包括多个SMC。在一些情况下, 节点可以能够访问其没有直接连接到的远程SMC的共享存储器(即,该节点的本地SMC通过 一个或多个SML链路跳来连接到该远程SMC)。远程SMC可以处于相同的电路板中,也可以处 于不同的电路板中。在一些情况下,这些节点中的一些可以在系统外(例如,板外或片外), 但仍然访问共享存储器605。例如,一个或多个系统外节点可以使用遵循SML的链路来直接 连接到SMC,等等其它示例。另外,包括有它们自己的SMC和共享存储器的其它系统也可以与 SMC 610相连接,以便将存储器605的共享延伸到例如另一个电路板上包括的节点,其中所 述另一个电路板通过SML链路与连接到该SMC的另一SMC对接。另外,可以对网络连接隧道 化,以进一步将访问延伸到其它板外或片外节点。例如,SML可以在通信地耦合图6的示例系 统与另一个系统的以太网连接(例如,其通过网络控制器620来提供)上进行隧道化,其中, 该另一个系统还可以包括一个或多个其它节点,并允许这些节点也获得对于SMC 615和因 此的共享存储器605的访问,等等其它示例。
[0079]再举一个例子,如图7的简化框图700中所示,准许多个独立的节点根据LD/ST存储 器语义进行共享访问的改进的共享存储器架构,可以灵活地允许提供多种不同的多节点系 统设计。可以分配多个节点的各种组合,来共享该示例系统中提供的一个或多个共享存储 器块的多个部分。例如,图7的例子中所示出的另一个示例性系统可以包括被实现成例如单 独的管芯、板、芯片等等的多个设备705、710、715、720,每一个设备包括一个或多个独立的 CHJ节点(例如,610a-610h)。每一个节点可以包括其自己的本地存储器。所述多个设备705、 710、715、720其中之一或多个,还可以包括可以由系统的节点610a-610h中的两个或更多进 行访问的共享存储器。
[0080] 图7中所示出的系统是用于描绘可以通过改进的共享存储器架构来实现的变化性 中的一些的例子,例如,本文所不出和描述的。例如,设备A 705和设备C 715中的每一个可 以包括各自的共享存储器元件(例如,605a、605b)。因此,在一些实现方式中,不同的设备上 的每一个共享存储器元件还可以包括各自的共享存储器控制器(SMC)615a、615b。节点 610a-610h的各种组合可以通信地耦合到每一个SMC(例如,615a、615b),其允许这些节点访 问相应的共享存储器(例如,605 &、60513)。举例而言,设备4 705的51^615&可以使用支持 SML的直接数据链路,来连接到设备A上的节点610a、61 Ob。另外,另一个设备(例如,设备C 715)上的另一个节点610c也可以通过从节点610c(和/或其设备715)到SMC 615a的直接硬 连线连接(其支持SML ),来访问共享存储器605a。还可以使用间接的、基于网络的或者其它 这种连接来允许远程设备或板外设备(例如,设备D 720)的节点(例如,610f-610h)利用传 统协议栈与SMC 615a对接,从而也能访问共享存储器605a。例如,可以通过耦合设备A和设 备D的以太网、无线带宽或者其它连接,来建立SML隧道725。虽然建立和维持该隧道可能引 入一些另外的开销和时延,但与在其它欠软件管理的物理连接上运行的SML相比,该SML隧 道725(当建立时)可以操作为其它SML信道,并允许节点610f-610h通过SML与SMC 615a对接 和访问共享存储器605a,如同通过SML链路与SMC进行通信的任何其它节点可以一样。例如, SML信道中的分组的可靠性的排序可以由系统中的连网部件来实施,也可以在SMC之间进行 端到端实施。
[0081] 在其它示例中,与拥有共享存储器(例如,605a)的特定部分不同的设备上的节点 (例如,615d、615e)可以通过直接连接到另一个SMC(例如,615b),来间接地连接到相应的 SMC (例如,SMC 615a),其中所述另一个SMC自身(例如,使用SML链路)耦合到该相应的SMC (例如,615a)。链接两个或更多SMC(例如,615a、615b)可以有效地扩展可用于系统上的节点 610a-610h的共享存储的量。例如,在一些实现方式中,依靠图7的例子中的SMC 615a、615b 之间的链路,这些节点(例如,610a-610c、61 Of-61 Oh)中的能够通过SMC 615a来访问共享存 储器605a的任何节点,也可以通过SMC 615a和SMC 615b之间的连接来潜在地访问共享存储 器605b。同样,在一些实现方式中,间接地访问SMC 615b的每一个节点也可以通过SMC 615a 和SMC 615b之间的连接来访问可共享存储器605a,等等其它潜在示例。
[0082] 如上所述,一种改进的共享存储器架构可以包括基于存储器访问协议(例如, SMI3)的低时延链路协议(即,SML),提供该协议以有助于涉及共享存储器的装载/存储请 求。但是可以配置传统的SMI3和其它存储器访问协议以用于单一节点中的存储器共享,SML 可以将存储器访问语义扩展到多个节点,以允许多个节点之间的存储器共享。此外,SML还 可以潜在地用在任何物理通信链路上。SML可以使用支持LD/ST存储器语义的存储器访问协 议,其中该存储器访问协议覆盖在适于互连不同的设备(和节点)的物理层(和相应的物理 层逻辑单元)上。另外,SML的物理层逻辑单元可以提供无分组丢弃和差错重试功能等等其 它特征。
[0083] 在一些实现方式中,可以通过将SMI3覆盖在PCIe PHY上来实现SML。可以在流控制 和其它特征之前提供SML链路层(例如,替代传统的PCIe链路层),且SML链路层有助于更低 时延的存储器访问,如同传统的CPU存储器访问架构中的特性。举一个例子,SML链路层逻辑 单元可以在共享存储器事务和其它事务之间进行复用。例如,SML链路层逻辑单元可以在 SMI3和PCIe事务之间复用。例如,SMI3(或另一种存储器协议)可以覆盖在PCIe(或者另一种 互连协议)之上,使得链路可以在SMI3和PCIe事务之间动态地切换。在一些实例中,这允许 传统的PCIe业务有效地共存于与SML业务相同的链路上。
[0084] 转到图8的简化框图800,示出了 一种示例性计算节点(例如,610)的特征。计算节 点610可以使用通过将SMI3(或另一种存储器协议)覆盖在遵循PCIe(例如,PCIe 3.0)的电 子物理链路上所实现的示例性SML,与共享存储器控制器芯片615进行通信。节点610可以包 括多列分层的栈,其中该多列分层的栈包括一列用于存储器访问协议(例如,sno),而另一 列用于另一种互连协议(例如,诸如PCIe的串行通用互连协议)。每一列可以具有其自己的 链路层(例如,805、810),以及位于每个相应的链路层805、810之上的其它层,包括事务、路 由、协议和/或一致性层(没有示出)。在该示例中,存储器访问协议可以使用采用192比特微 片的链路层。可以在另一种协议的PHY上(在该情况下,使用本机128比特编码方案(如, 128b/130b)的遵循PCIe的PHY),来发送这些微片。因此,节点610的PCIe PHY逻辑单元可以 包括PCIe逻辑PHY 815、PCIe单板820(例如,坐落在数字域和模拟域之间的额外层)和PCIe 模拟前端(AFE)825,等等其它示例。
[0085]转换逻辑单元830可以将根据存储器访问协议所发送的192比特微片数据转换成 128比特PCIe有效载荷,以便在PCIe物理链路上携带。同样,可以(例如,使用逻辑单元835) 将128比特有效载荷转换回192比特微片数据。在该示例中,PCIe列可以包括模拟转换逻辑 单元840、845,以便将256b PCIe 3.0有效载荷转换成128比特数据。可以将垫层电路850提 供为链路层和PCIe物理层之间的接口。垫层850可以控制向物理层发送哪个链路层数据。在 一些实现方式中,可以选择性地配置垫层850(例如,通过设置节点610的硬件中的引信),使 得其只允许使用多个列中的单一列(以及链路层805、810中的单一链路层)。例如,可以对垫 层850进行设置,使得节点实现本机PCIe端口(即,只使用PCIe链路层805)或者SML端口(BP, 覆盖在PCIe物理层之上的存储器访问协议,并且只使用存储器访问协议链路层810)。在其 它实例中,垫层850可以实现对来自任一列的数据进行动态复用的功能,其造成数据流在 PCIe数据模式和SML数据模式之间进行切换。
[0086]图9示出了将存储器访问协议覆盖在另一种不同的串行互连协议(例如,PCIe)上 的例子。在图7A的例子中,可以使用物理层成帧令牌来用信号发送存储器访问和互连协议 业务之间的转换。成帧令牌(或者"令牌")可以是指定或者隐含在与该令牌相关联的数据流 中将包括的符号的数量的物理层数据封装。因此,成帧令牌可以标识流开始,以及隐含着其 将结束的位置,因此也可以用于标识下一个成帧令牌的位置。数据流的成帧令牌可以位于 数据流的第一数据块的第一通道(例如,通道0)的第一符号(符号0)中。可以使用现有符号 (如用于传输该业务的物理层的本机协议中所规定的)来实现该成帧令牌。例如,在PCIe的 例子中,可以规定五种成帧令牌,其包括:TLP业务的起始(STP)令牌、数据流的结束(EDS)令 牌、结束坏(EDB)令牌、DLLP的起始(SDP)令牌和逻辑空闲(IDL)令牌。
[0087] 在图9的例子中,可以通过将SMI3或另一种数据访问协议覆盖在PCI上来实现SML, 并且可以对标准PCIe STP令牌进行重用和编码以规定新的STP令牌,其中该新的STP令牌标 识SMI3 (替代TLP业务)将在该链路的通道上开始。在端口在SML中静态工作的情况下,可以 对STP令牌进行编码以指示该业务是SML。在可以将PCIe和SML业务复用在该链路上的情况 下,STP令牌可以指示PCIe业务的突发和SML业务的突发之间的转换,等等其它示例。
[0088] 举一个例子,可以对标准PCIe STP令牌的保留位进行修改,以规定SML业务STP令 牌(例如,"SML令牌")的起始。例如,规定的所允许分组或有效载荷长度(例如,所允许的 PCIe有效载荷的长度)集合可以被规定用于主机协议。STP令牌可以包括长度字段,且该长 度字段可以允许落在针对PCIe(或者物理层的另一种主机协议)所规定的允许长度集合之 外的编码方式。在一种实现方式中,利用不允许的值或者另一种规定的值(其落在所允许的 长度之外)对长度字段进行编码,可以用于将STP令牌标识为SML令牌。
[0089] 返回到图9的例子,示出了动态SML/PCIe复用,其中SML使用PCIe PHY协议上的 SMI3。例如,可以规定同步报头数据,以遵循针对传统PCIe 128b/130b编码所指定的编码方 式。例如,在915a-c处,接收到具有值10b的同步报头,其指示数据块即将到来。当接收到 PCIe STP(例如,920)时,预期PCIe TLP有效载荷,并相应地处理数据流。与PCIe STP 920中 标识的有效载荷长度相一致,PCIe TLP有效载荷可以使用分配的全部有效载荷长度。本质 上,可以在TLP有效载荷结束之后的数据块中的任何时间,接收另一个STP令牌。例如,在925 处,可以接收SMI3 STP,其用信号表明从PCIe TLP数据转换到SMI3微片数据。随后,例如只 要一识别PCIe分组数据结束,就可以发送SMI3 STP。
[0090] 关于PCIe TLP数据,SMI3 STP 925可以规定之后的SMI3微片有效载荷的长度。例 如,SMI3数据的有效载荷长度可以对应于将发送的SMI3微片的数量(或者相应的DW的数 量)。与有效载荷长度相对应的窗口(例如,其结束于通道3的符号15处)可以因此在这些通 道上进行规定,其中在这些通道中只发送SMI3数据。当该窗口结束时,可以发送其它数据, 例如,另一个PCIe STP重新开始发送TLP数据或其它数据(例如,有序集数据)。例如,如图9 的例子中所示,在SMI3 STP令牌925所规定的SMI3数据窗口的结束之后发送EDS令牌。EDS令 牌可以用
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1