CN108334463B - 事务性缓冲式存储器中的提早识别 - Google Patents
事务性缓冲式存储器中的提早识别 Download PDFInfo
- Publication number
- CN108334463B CN108334463B CN201810076092.XA CN201810076092A CN108334463B CN 108334463 B CN108334463 B CN 108334463B CN 201810076092 A CN201810076092 A CN 201810076092A CN 108334463 B CN108334463 B CN 108334463B
- Authority
- CN
- China
- Prior art keywords
- read
- data
- link
- flit
- packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1678—Details of memory controller using bus width
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
Abstract
在事务性缓冲式存储器接口上向主机设备发送读取返回的序列,其中,所述序列将包括至少对第一读取请求的第一读取返回和对第二读取请求的第二读取返回。将所述第二读取返回的跟踪器标识符编码在所述第一读取返回中,以及将所述第一读取返回带着所述第二读取返回的所述跟踪器标识符来发送给所述主机设备。在发送所述第一读取返回之后向所述主机设备发送所述第二读取返回。
Description
本申请是提交于2015年11月20日的发明名称为“事务性缓冲式存储器中的提早识别”的发明专利申请201510812605.5的分案申请。
技术领域
本公开内容总体上涉及计算架构领域,并且更具体地涉及缓冲式存储器协议。
背景技术
半导体处理和逻辑器件设计的进步已允许可以出现在集成电路设备上的逻辑器件的量的增加。其必然结果是,计算机系统配置已从系统中的单个或多个集成电路演进为在单个集成电路上出现多个核、多个硬件线程以及多个逻辑处理器,以及其它接口被集成在这样的处理器内。处理器或集成电路典型地包括单个物理处理器管芯,其中,处理器管芯可以包括任意数量的核、硬件线程、逻辑处理器、接口、存储器、控制器集线器等。
由于用于将更多的处理功率安装在较小的封装中的更大能力,较小的计算设备已变得越来越流行。智能电话、平板电脑、超薄笔记本以及其它用户设备指数地增长。然而,这些较小的设备依赖于服务器来进行超出规格的数据存储和复杂处理二者。结果,对高性能计算市场(即,服务器空间)的需要也增加了。例如,在现代的服务器中,典型地不仅存在具有多个核的单个处理器,还具有多个物理处理器(也被称为多个插槽)以增加计算功率。但是随着处理功率和计算系统中的设备数量一起增长,在插槽和其它设备之间的通信变得更加关键。
事实上,互连已经从主要处理电通信的较传统的多点分支总线发展为促进快速通信的成熟的互连架构。遗憾的是,由于对未来处理器以甚至更高的速率来消耗的需求,因此对现有的互连架构的能力寄予了相应的需求。
附图说明
图1示出了根据一个实施例的包括用于连接计算机系统中的I/O设备的串行点对点互连的系统的简化框图;
图2示出了根据一个实施例的分层协议栈的简化框图;
图3示出了事务描述符的实施例。
图4示出了串行点对点链路的实施例。
图5示出了潜在的高性能互连(HPI)系统配置的实施例。
图6示出了与HPI相关联的分层协议栈的实施例。
图7示出了示例性状态机的表示。
图8示出了在示例性20通道数据链路上发送的示例性微片的表示。
图9示出了在示例性8通道数据链路上发送的示例性微片的表示。
图10示出了示例性多时隙微片的表示。
图11示出了在示例性8通道数据链路上发送的示例性微片的表示。
图12示出了包括调试消息的示例性多层微片的表示。
图13示出了利用缓冲式存储器协议的系统的表示。
图14示出了支持缓冲式存储器协议的缓冲器设备的表示。
图15A至图15C示出了缓冲式存储器协议中的示例性微片的表示。
图16是示出了根据至少一个实施例的在示例性缓冲器设备和主机设备之间的通信的图。
图17是示出了根据至少一个实施例的从缓冲器设备到主机设备的读取响应跟踪器标识符的提早通信的图。
图18示出了针对包括多个处理器插槽的计算系统的块的实施例。
在各个附图中,类似的参考标记和标志指示类似的要素。
具体实施方式
在下面的描述中,为了提供对本发明的更透彻的理解,阐述了大量特定细节,诸如特定类型的处理器和系统配置、特定的硬件结构、特定的架构和微架构细节、特定的寄存器配置、特定的指令类型、特定的系统部件、特定的处理器流水线阶段、特定的互连层、特定的分组/事务配置、特定的事务名称、特定的协议交换、特定的链路宽、特定的实现以及操作等的例子。然而,对于本领域技术人员明显的是,并不一定采用这些特定的细节来实施本公开内容的主题。在其它实例中,避免了对已知的部件或方法的非常详尽的描述,诸如特定的和替代的处理器架构、针对所描述的算法的特定的逻辑电路/代码、具体的固件代码、低级别互连操作、特定的逻辑配置、特定的制造技术和材料、特定的编译器实现、以代码形式的对算法的特定表达、特定的断电和选通技术/逻辑以及计算机系统的其它特定的操作细节,以便避免不必要地模糊本公开内容。
虽然可以参照专用集成电路中(诸如,计算平台或微处理器中)的节能、能量效率、处理效率等来描述下面的实施例,其它实施例可应用于其它类型的集成电路和逻辑设备。本文描述的实施例的类似的技术和教导可以被应用于也可以受益于这样的特征的其它类型的电路或半导体设备。例如,所公开的实施例不受限于服务器计算机系统、台式计算机系统、膝上型计算机、超级本TM,还可以用在其它设备中,诸如手持设备、智能电话、平板电脑、其它薄笔记本、片上系统(SOC)设备以及嵌入式应用。手持设备的一些例子包括蜂窝式电话、互联网协议设备、数字照相机、个人数字助理(PDA)以及手持PC。这里,可以应用针对高性能互连的类似的技术来提高低功率互连中的性能(或者甚至节省功率)。嵌入式应用典型地包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或者可以执行下面讲授的功能和操作的任何其它系统。此外,本文描述的装置、方法以及系统不受限于物理计算设备,还可以涉及针对节能和效率的软件优化。如可以在下面的描述中变得显而易见的,本文描述的方法、装置以及系统的实施例(不管参照硬件、固件、软件还是其组合)可以被认为是对于未来利用性能考虑来平衡的“绿色技术”是至关重要的。
随着计算系统的进步,其中的部件变得更加复杂。用来在部件之间进行耦合和通信的互连架构也已增加了复杂度以确保满足用于最优的部件操作的带宽需求。此外,不同的市场部分需要互连架构的不同的方面以适合相应的市场。例如,服务器要求较高的性能,而移动生态系统有时能够为了功率节省而牺牲整体性能。然而,大多数结构的突出目的是提供具有最大功率节省的最高可能的性能。此外,多种多样的不同的互连可以潜在地受益于本文描述的主题。
除其它例子之外,根据本文描述的一个或多个原则可以潜在地改善除其它例子之外的外围部件互连(PCI)快速互连(PCIe)结构架构和快速路径互连(QPI)结构架构。例如,PCIe的主要目标是实现来自于不同供应商的部件和设备在开放式架构中、跨多个市场部分来互操作;客户端(台式机和移动设备)、服务器(标准和企业)以及嵌入式和通信设备。快速PCI是针对广泛的多种多样的未来的计算和通信平台来定义的高性能、通用I/O互连。已经通过PCI的修订保持了一些PCI属性,诸如其使用模型、加载存储架构以及软件接口,然而,先前的并行总线实现已经被高可扩展的、全串行接口代替。快速PCI的较近版本利用了点对点互连、基于交换机的技术以及分组化协议中的进步以发布新水平的性能和特征。功率管理、服务质量(QoS)、热插拔/热交换支持、数据完整性以及错误处理是由快速PCI支持的先进特征中的一些特征。虽然本文主要的讨论参照新的高性能互连(HPI)架构,但是本文描述的发明的其它方面可以被应用于其它互连架构,诸如遵循PCIe的架构、遵循QPI的架构、遵循MIPI的架构、高性能架构或者其它已知的互连架构。
参照图1,示出了由互连部件的集合的点对点链路组成的结构的实施例。系统100包括耦合到控制器集线器115的处理器105和系统存储器110。处理器105可以包括任何处理元件,诸如微处理器、主机处理器、嵌入式处理器、协处理器或其它处理器。处理器105通过前侧总线(FSB)106耦合到控制器集线器115。在一个实施例中,FSB是如下面描述的串行点对点互连。在另一个实施例中,链路106包括遵循不同互连标准的串行、差分互连架构。
系统存储器110包括任何存储器设备,诸如随机存取存储器(RAM)、非易失性(NV)存储器或者可由系统100中的设备存取的其它存储器。系统存储器110通过存储器接口116耦合到控制器集线器115。存储器接口的例子包括双数据速率(DDR)存储器接口、双通道DDR存储器接口以及动态RAM(DRAM)存储器接口。
在一个实施例中,控制器集线器115可以包括诸如在PCIe互连层次中的根集线器、根复合体或根控制器。控制器集线器115的例子包括芯片集、存储器控制器集线器(MCH)、北桥、互连控制器集线器(ICH)、南桥以及根控制器/集线器。术语芯片集通常指代两个在物理上分离的控制器集线器,例如,耦合到互连控制器集线器(ICH)的存储器控制器集线器(MCH)。注意,当前的系统通常包括与处理器105集成的MCH,而控制器115以如下面描述的类似的方式来与I/O设备进行通信。在一些实施例中,可以通过根复合体115来可选择地支持对等路由。
这里,控制器集线器115通过串行链路119耦合到交换机/桥120。输入/输出模块117和121(其还可以被称为接口/端口117和121)可以包括/实现分层协议栈来提供控制器集线器115和交换机120之间的通信。在一个实施例中,多个设备能够被耦合到交换机120。
交换机/桥120将分组/消息从设备125上游地(即向根复合体朝上层)路由到控制器集线器115,以及下游地(即远离根控制器朝下层)从处理器105或系统存储器110路由到设备125。在一个实施例中,交换机120被称为多个虚拟PCI对PCI桥设备的逻辑集合。设备125包括将耦合到电系统的任何内部或外部设备或部件,诸如I/O设备、网络接口控制器(NIC)、插入卡、音频处理器、网络处理器、硬盘驱动器、存储设备、CD/DVD ROM、监控器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(USB)设备、扫描仪以及其它输入/输出设备。通常在PCIe术语中,像这样的设备被称为端点。虽然没有明确地示出,设备125可以包括桥(例如,PCIe或PCI/PCI-X桥)以支持由这样的设备所支持的设备或互连结构的传统或其它版本。
图形加速器130也可以通过串行链路132耦合到控制器集线器115。在一个实施例中,图形加速器130耦合到MCH,其耦合到ICH。交换机120以及相应的I/O设备125随后耦合到ICH。I/O模块131和118也要实现分层协议栈来在图形加速器130和控制器集线器115之间进行通信。与上面的MCH讨论相类似,图形控制器或图形加速器130本身可以被集成在处理器105中。
转向图2,示出了分层协议栈的实施例。分层协议栈200可以包括任何形式的分层通信栈,诸如QPI栈、PCIe栈、下一代高性能计算互连(HPI)栈或者其它分层栈。在一个实施例中,协议栈200可以包括事务层205、链路层210以及物理层220。诸如图1中的接口117、118、121、122、126以及131的接口可以被表示为通信协议栈200。作为通信协议栈的表示还可以被称为实现/包括协议栈的模块或接口。
分组可以用于在部件之间传送信息。分组可以在事务层205和数据链路层210中形成以从发送部件携带信息到接收部件。随着所发送的分组流过其它层,其被扩展为具有用于在那些层处处理分组的额外的信息。在接收侧处,发生反向过程,以及分组被从其物理层220表示转变为数据链路层210表示,以及最终(针对事务层分组)被转变为可由接收设备的事务层205处理的形式。
在一个实施例中,事务层205可以提供设备的处理核和互连架构(诸如数据链路层210和物理层220)之间的接口。在这点上,事务层205的主要责任可以包括组装和拆解分组(即,事务层分组或TLP)。转换层205还可以管理针对TLP的基于信用的流控制。除其它例子外,在一些实现中,可以利用分离事务,即,具有由时间分离的请求和响应的事务,其允许在目标设备收集针对响应的数据的同时链路携带其它业务。
基于信用的流控制可以用于实现利用互连结构的虚拟信道和网络。在一个例子中,设备可以通告针对事务层205中的接收缓冲器中的每一个接收缓冲器的初始信用量。在链路的对端处的外部设备,诸如在图1中的控制器集线器115,可以对由每一个TLP消耗的信用数进行计数。如果事务没有超出信用限度,那么可以发送事务。当接收到响应时恢复信用量。除其它潜在的优势外,这样的信用方案的优势的一个例子是信用返回的延时不影响性能,前提是没遇到信用限度。
在一个实施例中,四事务地址空间可以包括配置地址空间、存储器地址空间、输入/输出地址空间以及消息地址空间。存储器空间事务包括用于转移数据到存储器映射的位置或从存储器映射的位置转移数据的一个或多个读取请求和写入请求。在一个实施例中,存储器空间事务能够使用两个不同的地址格式,例如,诸如32比特地址的短地址格式,或者诸如64比特地址的长地址格式。配置空间事务可以用于访问连接到互连的各个设备的配置空间。到配置空间的事务可以包括读取请求和写入请求。消息空间事务(或简称为消息)还可以被定义用来支持互连代理之间的带内通信。因此,在一个示例性实施例中,事务层205可以组装分组报头/有效负载206。
快速地参照图3,示出了事务层分组描述符的示例性实施例。在一个实施例中,事务描述符300可以是用于携带事务信息的机制。在这一点上,事务描述符300支持对系统中的事务的标识。其它潜在的用途包括跟踪对默认事务排序的修改和事务与信道的关联。例如,事务描述符300可以包括全局标识符字段302、属性字段304以及信道标识符字段306。在所示出的例子中,全局标识符字段302被描绘为包括本地事务标识符字段308和源标识符字段310。在一个实施例中,全局事务标识符302对于所有未决的请求是唯一的。
根据一种实现,本地事务标识符字段308是由请求代理生成的字段,并且对于为了该请求代理需要完成的所有未决请求可以是唯一的。此外,在本例子中,源标识符310唯一地标识在互连层次内的请求器代理。相应地,本地事务标识符字段308连同源ID 310提供了在层次域内的对事务的全局标识。
属性字段304指定事务的特性和关系。在这一点上,属性字段304潜在地用于提供用于允许修改对事务的默认处理的额外的信息。在一个实施例中,属性字段304包括优先级字段312、保留字段314、排序字段316以及非监听字段318。这里,优先级子字段312可以被初始器修改以为事务分配优先级。保留属性字段314被保留下来用于将来或供应商定义的使用。可以使用保留属性字段来实现使用了优先级或安全属性的可能的使用模型。
在本例子中,排序属性字段316用于提供传送可以修改默认排序规则的排序类型的可选择的信息。根据一个示例性实现,排序属性为“0”指示将应用默认的排序规则,其中,排序属性为“1”指示宽松排序,其中,写入可以沿相同的方向传递写入,以及读取完成可以沿相同的方向传递写入。监听属性字段318用于确定事务是否被监听。如示出的,信道ID字段306标识与事务相关联的信道。
返回图2的讨论,链路层210(还被称为数据链路层210)可以用作事务层205和物理层220之间的中间阶段。在一个实施例中,数据链路层210的责任是提供用于在链路上的两个部件之间交换事务层分组(TLP)的可靠的机制。数据链路层210的一侧接收由事务层205组装的TLP、应用分组序列标识符211(即,识别号或分组号)、计算和应用错误检测码(即,CRC212)以及向物理层220提交所修改的TLP用于跨物理的到外部设备的传输。
在一个例子中,物理层220包括用于向外部设备物理地发送分组的逻辑子块221和电子块222。这里,逻辑子块221负责物理层221的“数字”功能。在这一点上,逻辑子块可以包括用于准备针对由物理子块222进行的传输的输出信息的发送部分,以及用于在将接收到的信息传递给链路层210之前识别和准备接收到的信息的接收机部分。
物理块222包括发射机和接收机。由逻辑子块221为发射机提供符号,发射机串行化该符号并且将其发送给外部设备。接收机被提供来自于外部设备的经串行化的符号并且将所接收到的信号转换为比特流。比特流被解串行化并且被提供给逻辑子块221。在一个示例性实施例中,采用了8b/10b传输码,其中,10比特符号被发送/被接收。这里,特殊符号用于利用帧223来构造分组。另外,在一个例子中,接收机还提供从输入串行流中恢复的符号时钟。
如上所述,虽然参照协议栈(诸如PCIe协议栈)的特定实施例来讨论了事务层205、链路层210以及物理层220,但是分层协议栈不局限于此。事实上,任何协议栈可以被包括/被实现并且可以采用本文所讨论的特征。作为例子,被表示为分层协议的端口/接口可以包括:(1)组装分组的第一层,即事务层;对分组排序的第二层,即链路层;以及发送分组的第三层,即物理层。如特定例子,利用了如本文中描述的高性能互连分层协议。
接下来参照图4,示出了串行点对点结构的示例性实施例。串行点对点链路可以包括用于发送串行数据的任何传输路径。在示出的实施例中,链路可以包括两个低电压差分驱动的信号对:发送对406/411和接收对412/407。相应地,设备405包括用于向设备410发送数据的发送逻辑单元406以及用于从设备410接收数据的接收逻辑单元407。换句话说,两条发送路径(即路径416和417)和两条接收路径(即路径418和419)被包括在链路的一些实现中。
传输路径指代用于发送数据的任何路径,诸如传输线、铜线、光线、无线通信信道、红外通信链路或其它通信路径。在两个设备(诸如设备405和设备410)之间的连接被称为链路,诸如链路415。链路可以支持一个通道-每一个通道表示差分信号对(一对用于发送、一对用于接收)的集合。为了扩展带宽,链路可以聚合多个信道,由xN表示,其中,N是任何所支持的链路宽度,诸如1、2、4、8、12、16、32、64或更宽。
差分对可以指代发送差分信号的两条发送路径,诸如线416和线417。作为示例,当线416从低电压电平切换到高电压电平时(即上升沿),线417从高逻辑电平驱动到低逻辑电平(即下降沿)。除其它示例性优势外,差分信号潜在地证明了较好的电特性,诸如较好的信号完整性,即交叉耦合、电压过冲/下冲、振铃。这允许较好的定时窗口,其实现更快的传输频率。
在一个实施例中,提供了新的高性能互连(HPI)。HPI可以包括下一代高速缓存一致的、基于链路的互连。作为示例,HPI可以用在高性能计算平台中(诸如工作站或服务器),包括在其中PCIe或另一个互连协议典型地用于连接处理器、加速器、I/O设备等的系统中。然而,HPI不受限于此。作为替代,HPI可以用在本文描述的任何系统或平台中。此外,发展的独特的想法可以应用于其它互连和平台,诸如PCIe、MIPI、QPI等。
在一个示例性实施例中,为了支持多个设备,HPI可以包括指令集架构(ISA)不可知(即HPI能够被实现在多个不同的设备中)。在另一个场景中,HPI还可以用于连接高性能I/O设备,不仅是处理器和加速器。例如,高性能PCIe设备可以通过适当的转换桥(即HPI到PCIe)耦合到HPI。此外,HPI链路可以被许多基于HPI的设备(诸如处理器)以不同的方式(例如星、环、网等)利用。图5示出了多个潜在的多插槽配置的示例性实现。如描绘的,两插槽配置505可以包括两个HPI链路;然而,在其它实现中,可以利用一个HPI链路。对于较大的拓扑,除其它额外的或替代的特征外,只要标识符(ID)是可分配的并且存在某种形式的虚拟路径,就可以利用任何配置。如示出的,在一个例子中,四插槽配置510具有从每一个处理器到另一个处理器的HPI链路。但是在配置515中示出的八插槽实现中,不是每一个插槽都通过HPI链路互相直接地连接。然而,如果在处理器之间存在虚拟路径或信道,那么该配置被支持。支持的本地域中的处理器的范围包括2至32个。除了其它例子外,可以通过使用多个域或者在节点控制器之间使用其它互连来实现更高数量的处理器。
HPI架构包括分层协议架构的定义,在一些例子中包括:协议层(一致、非一致、与、可选择地、其它基于存储器的协议)、路由层、链路层以及物理层。此外,除了其它例子外,HPI还可以包括与功率管理器(诸如功率控制单元(PCU))、针对测试和调试的设计(DFT)、错误处理、寄存器、安全相关的增强。图5示出了示例性HPI分层协议栈的实施例。在一些实现中,在图5中示出的层中的至少一些层可以是可选择的。每一个层处理其自身的信息粒度级别或信息量(具有分组630的协议层605a、b,具有微片635的链路层610a、b,以及具有物理微片(phit)640的物理层605a、b)。注意,在一些实施例中,分组可以基于实现包括部分微片、单个微片或多个微片。
作为第一例子,物理微片640的宽度包括链路宽度到比特的1对1映射(例如20比特链路宽度包括20比特的物理微片等)。微片可以具有较大的大小,诸如184、192或200比特。注意,如果物理微片640是20比特宽以及微片635的大小为184比特,那么需要分数个物理微片640来发送一个微片635(例如,除其它例子外,9.2个20比特的物理微片来发送184比特微片635,或者9.6个20比特来发送192比特微片)。注意,在物理层处的基础链路的宽度可以变化。例如,每个方向的信道的数量可以包括2个、4个、6个、8个、10个、12个、14个、16个、18个、20个、22个、24个等。在一个实施例中,链路层610a、b能够在单个微片中嵌入不同事务的多个部分,以及一个或多个报头(例如1个、2个、3个、4个)可以被嵌入在微片内。在一个例子中,HPI将报头分成相应的时隙以实现去往不同节点的微片中的多个消息。
在一个实施例中,物理层605a、b可以负责在物理介质(电的或光学的等)上的信息的快速转移。物理链路可以是在两个链路层实体(诸如层605a和605b)之间的点对点。链路层610a、b可以从上层抽象物理层605a、b并且提供用于可靠地转移数据(以及请求)和管理两个直接相连实体之间的流控制的能力。链路层还可以负责将物理信道虚拟化为多个虚拟信道和消息类。协议层620a、b依赖于链路层610a、b来在将协议消息递给物理层605a、b用于跨物理链路的转移之前,将协议消息映射成适当的消息类和虚拟信道。除其它例子外,链路层610a、b可以支持多个消息,诸如请求、监听、响应、回写、非一致数据。
如在图6中所示,可以在电层(即连接两个部件的电导体)之上和链路层610a、b之下实现HPI的物理层605a、b(或PHY)。物理层和相应的逻辑器件可以位于每一个代理上并且连接在彼此分离的两个代理(A和B)(例如在链路的两边的设备上)上的链路层。本地和远程电层通过物理介质(例如导线、导体、光学介质等)连接。在一个实施例中,物理层605a、b具有两个主相,初始化和操作。在初始化期间,连接对于链路层是不透明的,以及信令可以涉及计时状态和握手事件的组合。在操作期间,连接对于链路层是透明的以及信令是以一定速度的,同时所有通道作为单个链路一起操作。在操作相期间,物理层从代理A向代理B以及从代理B向代理A传送微片。连接还被称为链路以及从链路层抽象包括介质、宽度和速度的一些物理方面,同时与链路层交换微片和当前配置(例如,宽度)的控制/状态。初始化相包括次相,例如轮询、配置。操作相也包括次相(例如链路功率管理状态)。
在一个实施例中,可以实现链路层610a、b以便提供在两个协议或路由实体之间的可靠的数据转移。链路层可以从协议层620a、b抽象物理层605a、b、以及可以负责在两个协议代理(A、B)之间的流控制、以及向协议层(消息类)和路由层(虚拟网络)提供虚拟信道服务。在协议层620a、b和链路层610a、b之间的接口可以典型地以分组级别。在一个实施例中,在链路层处的最小转移单元被称为微片或某种其它名称,所述微片是所指定数量的比特,诸如192比特。链路层610a、b依赖于物理层605a、b来将物理层605a、b的转移单元(物理微片)构造成链路层610a、b的转移单元(微片)。另外,链路层610a、b可以被逻辑地拆分成两部分,发送机和接收机。在一个实体上的发送机/接收机对可以连接到在另一个实体上的发送机/接收机对。通常在微片和分组二者的基础上来执行流控制。还在微片级别的基础上来潜在地执行错误检测和纠正。
在一个实施例中,路由层615a、b可以提供将HPI事务从源路由到目的地的灵活的和分布式方法。方案是灵活的,这是因为可以通过在每一个路由器处的可编程的路由表来指定针对多个拓扑的路由算法(由固件、软件或其组合执行一个实施例中的程序)。路由功能可以是分布式的;可以通过一系列路由步骤来完成路由,其中通过对在源路由器、中间路由器或目的地路由器处的表的查找来定义每一个路由步骤。在源处的查找可以用于将HPI分组注入到HPI结构。在中间路由器处的查找可以用于将HPI分组从输入端口路由到输出端口。在目的地端口处的查找可以用于把目的地HPI协议代理定为目标。注意,在一些实现中,路由层可以是薄的,这是因为规范没有具体地定义路由表以及因此路由算法。这允许了灵活性和多种多样的使用模型,包括将由系统实现定义的灵活的平台架构拓扑。路由层615a、b依赖于链路层610a、b用于提供对多至三个(或更多)虚拟网络(VN)的使用-在一个例子中,在两个无死锁VN,VN0和VN1具有在每一个虚拟网路中定义的若干消息类。可以在链路层中定义共享的自适应虚拟网络(VNA),但是这个自适应虚拟网络可能不被直接地公开在路由概念中,这是由于除其它特征和例子外,每一个消息类和虚拟网络可以具有专用的资源和被保证的前向进程。
在一个实施例中,HPI可以包括支持缓存来自于存储器的数据线的代理的一致性协议层620a、b。想要缓存存储器数据的代理可以使用一致性协议来读取数据线以将数据线装载进其缓存中。想要修改在其缓存中的数据线的代理可以在修改数据之前使用一致性协议来获得线的所有权。在修改线之后,代理可以遵循将线保持在其缓存中,直到其将线写回存储器或将线包括在对外部请求的响应中为止的协议要求。最后,代理可以履行使其缓存中的线无效的外部请求。协议通过规定所有缓存代理可以遵守的规则来确保数据的一致性。其还为没有缓存的代理提供了用于一致地读取和写入存储器数据的手段。
两个情况可以促使支持利用HPI一致性协议的事务。第一,作为例子,协议可以在每个地址的基础上来在代理的缓存中的数据间和在那些数据和存储器中的数据之间保持数据一致性。非正式地,数据一致性可以指代在代理的缓存中的每一个有效的数据线表示数据的最新值,以及在一致性协议分组中被发送的数据可表示在其被发送时的数据的最新值。当在缓存中或在传输中不存在有效的数据副本时,协议可以确保数据的最新值位于存储器中。第二,协议可以提供针对请求的明确定义的约定点。针对读取的约定点可以指示数据何时可用;而针对写入,其可以指示写入的数据何时是全局可观察的以及何时将被随后的读取装载。协议可以支持针对一致存储器空间中的可缓存的和不可缓存的(UC)请求二者的这些约定点。
在一些实现中,HPI可以利用嵌入式时钟。可以在使用互连发送的数据中嵌入时钟信号。通过在数据中嵌入时钟信号时,可以省略单独的和专用的时钟通道。这可以是有用的,例如,因为其可以允许设备的更多的引脚被用于数据转移,尤其是在引脚的空间是非常珍贵的系统中。
可以在互连的两侧上的代理之间建立链路。发送数据的代理可以是本地代理,而接收数据的代理可以是远程代理。状态机可以被两个代理采用来管理链路的各个方面。在一个实施例中,物理层数据路径可以从链路层发送微片到电前端。在一种实现中,控制路径包括状态机(还被称为链路训练状态机等)。状态机的动作和从状态机退出可取决于内部信号、计时器、外部信号或其它信息。事实上,状态中一些状态(诸如几个初始化状态)可以具有计时器以提供超时值来退出状态。注意,在一些实施例中,检测指代在通道的两腿上检测事件;但是不一定要同时。然而,在其它实施例中,检测指代由参考代理进行的对事件的检测。作为一个例子,去抖动指代对信号的持续认定。在一个实施例中,如果发生非功能性通道,HPI支持操作。这里,可以在特定状态处放弃通道。
在状态机中定义的状态可以包括重置状态、初始化状态以及可操作状态,连同其它范畴和子范畴。在一个例子中,一些初始化状态可以具有辅计时器,其用于当超时时退出状态(基本上是由于没能在状态中取得进步导致的中止)。中止可以包括寄存器(诸如状态寄存器)的更新。一些状态还可以具有主计时器,其用于在状态中对主功能计时。除其它例子外,可以定义其它状态以使得内部或外部信号(诸如握手协议)驱动从一个状态到另一个状态的转变。
状态机还可以通过单个步骤、冻结初始化中止、以及测试器的使用来支持调试。这里,可以推迟/保持状态退出,直到调试软件准备就绪为止。在某个实例中,可以推迟/保持退出,直到辅超时为止。在一个实施例中,动作和退出可以基于训练序列的交换。在一个实施例中,将在本地代理时钟域中运行链路状态机,以及从一个状态到下一个状态的转变将与发射机训练序列边缘一致。状态寄存器可以用于反映当前状态。
图7示出了由在HPI的一个示例性实现中的代理使用的状态机的至少一部分的表示。应当认识到的是,在图7的状态表中包括的状态包括可能状态的非穷举列表。例如,省略了一些转变以简化图。此外,可以组合、拆分或省略一些状态,而添加其它状态。这样的状态可以包括:
事件重置状态:进入到温或冷重置事件上。恢复默认值。初始化计数器(例如,同步计数器)。可以退出到另一个状态,诸如另一个重置状态。
计时重置状态;针对带中重置的计时状态。可以驱动预先定义的电有序集(EOS),以致远程接收机能够检测EOS并且还进入计时重置。接收机具有保持电设置的通道。可以退出到代理以标定重置状态。
标定重置状态:通道上没有信令(例如接收机标定状态)或关闭驱动器的标定。可以是基于计时器的状态中的预先确定的时间量。可以设置可操作的速度。当未启用端口时可以用作等待状态。可以包括最小驻留时间。可以基于设计发生接收机调节或交错。可以在超时和/或标定完成之后,退出到接收机检测状态。
接收机检测状态:检测通道上接收机的存在。可以寻找接收机终止(例如接收机断开插入)。可以在指定的值被设置时或者当另一个指定的值未被设置时退出到标定重置状态。如果检测到接收机或者达到超时,那么可以退出到发射机标定状态。
发射机标定状态:用于发射机标定。可以是被分配用于发射机标定的计时状态。可以包括在通道上的信令。可以连续地驱动EOS,诸如电空闲退出有序集(或EIEIOS)。当标定完成时或者当计时器到期时,可以退出到遵循状态。如果计数器已到期或者辅超时已发生,那么可以退出到发射机检测状态。
发射机检测状态:批准有效的信令。可以是代理完成动作的握手状态,以及基于远程代理信令退出到下一个状态。接收机可以批准来自于发射机的有效的信令。在一个实施例中,接收机寻找唤醒检测,以及如果在一个或多个通道上去抖动,那么在其它通道上寻找唤醒检测。发射机驱动检测信号。可以响应于针对所有通道完成去抖动和/或超时、或者在所有通道上的去抖动未被完成并且存在超时来退出到轮询状态。这里,一个或多个监控器通道可以被保持醒来以去抖动唤醒信号。以及如果去抖动了,那么其它通道潜在地被去抖动。这可以实现低功率状态中的功率节省。
轮询状态:接收机适应、锁定比特(例如,通过初始化漂移缓冲器)、锁定字节(例如,通过识别符号边界)以及锁定训练序列边界(例如,通过锁定到电有序集(EOS)和/或训练序列报头)。通道可以随后被去偏斜。还可以完成握手以将轮询退出到若干潜在的状态中的一个状态。例如,可以(由代理)引发退出以到链路宽度状态、遵循状态、环回标志状态或重置状态中的任何一个状态。握手可以包括对各种经定义的接收机动作或状况的完成,以及发送确认消息(ACK)以触发退出到对应于所完成的动作的集合和ACK的状态。对于轮询去偏斜,可以以针对最高速度的第一长度和针对缓慢速度的第二长度来覆盖在远程发射机处的通道到通道偏斜。可以以缓慢模式以及可操作模式来执行去偏斜。接收机可以具有去偏斜通道到通道偏斜的特定的最大值,诸如8、16或32个偏斜间隔。在一些实现中,接收机动作还可以包括延时固定。在一个实施例中,可以在有效的通道映射的成功的去偏斜上完成接收机动作。在一个例子中,当有确认的情况下接收到多个连续的训练序列报头以及在接收机完成其动作之后发送具有确认的多个训练序列时,可以实现成功的握手。
遵循状态:从轮询状态进入。出于验证的目的,可以将代理设置为遵循主或从。设备(用作为主)可以向另一个设备(从)发送遵循模式,从可以在将模式重新定时到其本地时钟之后循环返回该模式(例如,不需要撤销任何极性反向或通道反转)。当环回不是功能性的或是不希望有的时,遵循模式可以用于表征在通道的一些子集上的模拟前端的操作。例如,可以在成功的字节锁定、TS锁定、去偏斜、时延测试以及依赖于若干数字逻辑部分的适当工作的其它测试的前提下进入环回。随着比特锁定的实现,可以进入遵循以及其可以被用于抖动或噪声调查、调试、探测链路,连同其它调节。换句话说,万一轮询的结果不允许直接进入到环回,那么遵循可以充当针对轮序的替代退出。遵循状态可以利用来自于主的发射机来驱动超级序列。接收机在监控器通道上寻找醒来、去抖动该醒来、丢弃差的通道、适应以及比特锁定等。从发射机可以驱动遵循模式,直到其接收机动作完成为止。随后环回是重新计时以及未被去偏斜的。从接收机进行类似的监控和去抖动等动作。除其它例子外,可以退出到诸如计时重置的重置状态或者到环回模式状态以开始测试。在退出到环回模式状态的情况下,主可以被发送(例如,被软件控制器)到环回模式状态以尝试更特殊化的模式。
代理环回标志状态:环回标志是代理状态,但是不像其它代理状态,主和从动作以及退出可以是不同的。环回从可以撤销任何极性反向和/或通道反转,但是不可以解扰或重加扰经循环返回的比特。确认可能不应用于从,这是由于其循环返回。由于从可以在符号边界上循环返回之前去偏斜,所以主可以不被强迫进行重新字节锁定或重新去偏斜,但是主可以重新锁定训练序列以避免锁定一些伪信号。这样做的手段可以包括重播LFSR、比较TS和/或EIEOS或者这些的某种组合。SDS的结束标志着环回设置的结束以及模式生成、检验和计数的开始。
代理环回模式状态(或封锁链路状态):从环回标志状态或遵循状态进入。处于环回模式状态而不是控制模式时,主发射机可以发送额外的特殊化的模式来补充处于遵循或环回模式状态的环回。接收机可以接收环回模式中的特殊化的模式以及检验所接收到的模式中的错误。对于发射机适应,两个代理都可以是主。对于预先确定的时段,发射机可以发送模式,以及远程接收机可以比较该模式并且确定所接收到的模式的优值或度量值,该所接收到的模式被记录在诸如寄存器的存储元件中。比较方法和度量可以依赖于设计(例如,具有抖动注入的BER)。在该时段的结束,两个代理都可以退出到针对反向信道的重置以检查度量以及设置发射机适应的下一个迭代。
链路宽度状态:代理利用最终的通道映射来向远程发射机传送。接收机接收信息以及解码。接收机可以在第二结构中的先前的通道映射值的检查点之后,记录第二结构中的经配置的通道映射。接收机还可以利用确认(“ACK”)来响应。可以发起带中重置。作为一个例子,第一状态发起带中重置。在一个实施例中,响应于ACK来执行退出到下一个状态,诸如微片配置状态。此外,在进入低功率状态之前,如果醒来检测信号发生的频率下降到指定值(例如每若干单元间隔(UI)(诸如4K UI)一次)以下,则还可以生成重置信号。接收机可以保持当前的和先前的通道映射。发射机可以基于具有不同的值的训练序列来使用不同的通道组。在一些实施例中,通道映射可以不修改一些状态寄存器。
微片锁定配置状态:由发射机进入,但是当发射机和接收机二者已退出到封锁链路状态和其它链路状态时,认为退出该状态(即未决辅超时)。在一个实施例中,发射机退出到链路状态包括在接收行星对齐信号之后的数据开始序列(SDS)和训练序列(TS)边界。这里,接收机退出可以基于接收来自于远程发射机的SDS。这个状态可以是从代理到链路状态的桥梁。接收机识别SDS。如果在初始化解扰器之后接收SDS,则接收机可以退出到封锁链路状态(BLS)(或控制窗口)。如果超时发生,则可以退出到重置状态。发射机利用配置信号来驱动通道。发射机可以基于状况或超时退出到重置、BLS或其它状态。
传输链路状态:一种链路状态。微片被发送到远程代理。可以从封锁链路状态进入以及在事件(诸如超时)上返回到封锁链路状态。发射机发送微片。接收机接收微片。还可以退出到低功率链路状态。在一些实现中,传输链路状态(TLS)可以被称为L0状态。
封锁链路状态:一种链路状态。发射机和接收机以统一的方式操作。可以是计时状态,在该计时状态期间,链路层微片被拖延,而物理层信息被传送到远程代理。可以退出到低功率链路状态(或基于设计的其它链路状态)。在一个实施例中,封锁链路状态(BLS)周期地发生。该时段被称为BLS间隔以及可以被计时,以及可以在缓慢速度和可操作速度之间不同。注意,可以周期地阻止链路层发送微片以使得可以发送一段物理层控制序列,诸如在传输链路状态或部分宽度传输链路状态期间。在一些实现中,封锁链路状态(BLS)可以被称为L0控制或L0c状态。
部分宽度传输链路状态:链路状态。可以通过进入部分宽度状态来节省功率。在一个实施例中,非对称部分带宽指代两个方向链路的每一个方向具有不同的宽度,这在一些设计中是支持的。在图9的例子中示出了起始器(诸如发射机)发送部分宽度指示以进入部分宽度传输链路状态的例子。这里,当利用第一宽度在链路上进行发送到转换该链路以第二、新的宽度进行发送时,可以发送部分宽度指示。不匹配可以导致重置。注意,可以不改变速度但是可以改变宽度。因此,潜在地以不同的宽度发送微片。在逻辑上可以与传输链路状态相似。但是,由于存在较小的宽度,所以可能需要更长的时间来发送微片。可以基于某些接收到的和发送的消息来退出到其它链路状态,诸如低功率链路状态,或者基于其它事件退出部分宽度传输链路状态或链路封锁状态。在一个实施例中,如定时图中示出的,发射机端口可以以交错的方式来关闭空闲通道以提供更好的信号完整性(即减噪)。这里,可以在宽度变化的时段期间利用诸如无效微片的不可重试微片。相应的接收机可以丢弃这些无效的微片以及以交错的方式来关闭空闲通道,以及记录一个或多个结构中的当前的和先前的通道映射。注意状态和相关联的状态寄存器可以保持不变。在一些实现中,部分宽度传输链路状态可以被称为部分L0或L0p状态。
退出部分宽度传输链路状态:退出部分宽度状态。在一些实现中,可以使用也可以不使用封锁链路状态。在一个实施例中,发射机通过在空闲通道上发送部分宽度退出模式以对其进行训练和去偏斜来发起退出。作为一个例子,退出模式开始于EIEOS,其被检测和被去抖动以用信号通知通道准备就绪开始进入到完全传输链路状态,以及可以结束于在空闲通道上的SDS或快速训练序列(FTS)。在退出序列期间的任何失败(接收机动作,诸如没有在超时之前完成去偏斜)阻止微片转移到链路层以及断言重置,这可以通过在下一个封锁链路状态发生上重置链路来处理。SDS还可以将在通道上的加扰器和解扰器初始化为适当的值。
低功率链路状态:是低功率状态。在一个实施例中,其为比部分宽度链路状态低的功率,这是由于在这个实施例中,信令在所有通道和两个方向上被阻止了。发射机可以使用封锁链路状态来请求低功率链路状态。这里,接收机可以解码该请求以及利用ACK或NCK来进行响应;否则可以触发重置。在一些实现中,低功率状态可以被称为L1状态。
在一些实现中,例如,当已经完成状态的状态动作(诸如某些标定和配置)时,可以促进状态转变以允许绕过状态。可以存储链路的先前的状态结果和配置以及在链路的随后的初始化和配置中对其进行重新使用。可以绕过相应的状态,而不是重复这样的配置和状态动作。然而,实现状态绕过的传统系统经常实现复杂的设计和昂贵的验证逃逸。在一个例子中,HPI可以在某些状态(诸如状态动作不需要被重复的状态)中利用短计时器,而不使用传统的绕过。除其它潜在的优势外,这样可以潜在地允许更加一致和同步的状态机器转变。
在一个例子中,基于软件的控制器(例如,通过针对物理层的外部控制点)可以实现针对一个或多个特定状态的短计时器。例如,对于动作已经被执行和存储的状态,该状态可以是短计时的以促进从该状态快速地退出到下一个状态。然而,如果先前的状态动作失败或者不能被应用在短计时器持续时间之内,则可以执行状态退出。此外,例如,当状态动作应当被再执行时,控制器可以停用短计时器。可以针对每一个相应的状态来设置长或默认计时器。如果不能在长计时器之内完成在状态处的配置动作,则可以发生状态退出。可以将长计时器设置为合理的持续时间使得允许状态动作的完成。相反,除其它例子外,短计时器可以相当地较短使得在一些情况下无法在不返回参考先前执行的状态动作的情况下执行状态动作。
在一些实例中,在链路的初始化(或重新初始化)期间,随着代理通过状态机器向可操作链路状态前进,可以发生使得状态重置(例如,到重置或其它状态)的一个或多个失败或状态退出。实际上,链路的初始化可以在没有完成初始化以及进入到链路状态的情况下循环经过一个或多个状态。在一个例子中,可以保持针对初始化链路之内的状态转变中的无用循环数量的计数。例如,每次初始化在没有到达链路状态时返回到重置状态,可以增加计数器。一旦链路成功地进入链路状态,就可以重置针对该链路的计数器。可以由链路两侧上的代理保持这样的计数器。此外,可以例如由利用一个或多个外部控制点的基于软件的控制器来设置阈值。当对无用循环的计数满足(或超出)所定义的阈值时,可以暂停链路的初始化(例如,在重置状态处或之前设置和保持)。在一些实现中,为了重新开始初始化以及将初始化从暂停的状态释放,基于软件的控制器可以触发链路的重启和重新初始化。在一些实例中,基于软件的工具可以分析所暂停的初始化的性质以及执行诊断、设置寄存器的值以及执行其它操作使得防止初始化的进一步循环。事实上,在一些实现中,除其它例子外,控制器可以结合重启暂停的链路初始化来设置较高的计数器阈值或者甚至改写计数器。
在HPI的一些实现中,可以定义超级序列,每一个超级序列对应于相应的状态或到/从相应的状态的进入/退出。超级序列可以包括数据集和符号的重复序列。在一些实例中,除其它例子外,序列可以重复,直到状态或状态转变的完成,或者对应的事件的通信为止。在一些实例中,超级序列的重复序列可以根据定义的频率来重复,诸如定义的多个单元间隔(UI)。单元间隔(UI)可以对应于用于在链路或系统的通道上发送单个比特的时间间隔。在一些实现中,重复序列可以开始于电有序集(EOS)。因此,可以期望EOS的实例根据所预先定义的频率来重复。除其它例子外,这样的有序集可以被实现为可以以十六进制格式表示的定义的16字节码。在一个例子中,EOS的超级序列可以是EIEOS。在一个例子中,EIEOS可以类似于低频时钟信号(例如,预先定义的多个重复FF00或FFF000十六进制符号等)。预先定义的数据集可以跟着EOS,诸如预先定义的多个训练序列或其它数据。除其它例子外,这样的超级序列可以用在包括链路状态转变的状态转变以及初始化中。
在互连的一些实现中,诸如在QPI中,诸如当重置或初始化链路时,可以引发或完成串行数据链路的终止。该方法可以将复杂性和时间引入到链路的初始化中。在HPI的一些实现中,可以保持链路的终止,包括在链路的重置或重新初始化期间。此外,HPI可以允许设备的热插拔。当通过热插拔或者以其它方式引入另一个设备时,在其上添加新的远程代理的通道的电压特性将变化。本地代理可以感知通道电压的这些变化以检测远程代理的存在以及促使链路的初始化。可以在状态机中定义状态机状态和计时器以在不终止的情况下协调检测、配置以及初始化链路。
在一个实现中,HPI可以通过由接收代理针对输入信令进行的通道的筛选来支持带中重置上的重新初始化,而不改变终止值。信令可以用于识别优的通道。作为例子,可以针对要被发射机设备发送的预先定义的信号的集合中的任何一个信号来筛选通道以促进链路的发现和配置。在一个例子中,可以对应于一个或多个初始化或重新初始化任务来定义超级序列。所预先定义的序列可以包括电空闲退出有序集(EIEOS),其后为额外的序列数据。在一些实例中,随着在通道任一侧上的每一个设备变为活动的,设备可以发送对应于特定的初始化状态等的超级序列。在一个实施例中,可以支持两种类型的引脚(pin)重置;电源启动(或“冷”)重置和暖重置。可以将由软件发起的或在一个代理(在物理或其它层中)上产生的重置在带中传送到其它代理。然而,由于嵌入式时钟的使用,可以通过使用有序集(诸如专用电有序集或EIOS)到另一个代理的通信来处理带中重置。
可以在初始化期间发送有序集以及可在初始化之后发送PHY控制序列(或“封锁链路状态”)。封锁链路状态可以阻止链路层发送微片。作为另一个例子,可以阻止链路层发送在接收机处可以被丢弃的若干无效(NULL)微片。
如上面介绍的,在一个实施例中,可以初始地以慢速、随后以快速的初始化来完成初始化。以慢速的初始化使用针对寄存器和计时器的默认值。软件随后使用慢速链路来设置寄存器、计时器和电参数,以及清除标定信号量来为快速初始化做准备。作为一个例子,初始化可以由诸如重置、检测、轮询、遵循以及配置连同潜在地其它的状态或任务组成。
在一个例子中,链路层封锁控制序列(即,封锁链路状态(BLS)或L0c状态)可以包括计时状态,在所述计时状态期间,延迟链路层微片,同时向远程代理传送PHY信息。这里,发射机和接收机可以开始封锁控制序列计时器。在计时器到期时,发射机和接收机就可以退出封锁状态以及采取其它动作,诸如退出到重置、退出到不同的链路状态(或其它状态),包括允许跨链路发送微片的状态。
在一个实施例中,链路训练可以被提供以及包括以下各项中的一项或多项:发送加扰训练序列、有序集、以及控制序列(诸如结合定义的序列)。训练序列符号可以包括以下各项中的一项或多项:报头、保留部分、目标时延、对号、物理通道映射码参考通道或通道组以及初始化状态。在一个实施例中,除其它例子外,可以将报头和ACK或NAK一起发送。作为例子,训练序列可以被作为超级序列的一部分来发送以及可以被加扰。
在一个实施例中,有序集和控制序列不被加扰或被交错以及在所有通道上被同一地、同时地和完全地发送。有序集的有效接收可以包括检验有序集的至少一部分(或针对部分有序集的整个有序集)。有序集可以包括电有序集(EOS),诸如电空闲有序集(EIOS)或EIEOS。超级序列可以包括数据开始序列(SDS)和快速训练序列(FTS)。这样的集合和控制超级序列可以被预先定义以及可以具有任意模式或十六进制表示以及任意长度。例如,有序集和超级序列的长度可以是8字节、16字节或32字节等。作为示例,在退出部分宽度传输链路状态期间,FTS可以额外地用于快速比特锁定。注意,可以每个通道来定义FTS以及可以利用旋转版本的FTS。
在一个实施例中,超级序列可以包括在训练序列流中插入EOS,诸如EIEOS。在一个实现中,当信令开始时,通道以交错的方式启动电源。然而,这可以导致在一些通道上的接收机处看见初始的超级序列被截。然而,可以在短时间间隔(例如,大约一千单元间隔(或者~1KUI))上重复超级序列。训练超级序列可以额外地用于去偏斜、配置中的一个或多个以及用于传送初始化目标、通道映射等。除其它例子外,EIEOS可以用于将通道从不活动转变为活动状态、筛选优的通道、识别符号和TS边界中的一个或多个。
在一个实施例中,可以在数据中嵌入时钟,所以不存在分别的时钟通道。在通道上发送的微片可以被加扰以促进时钟恢复。作为一个示例,接收机时钟恢复单元可以向接收机传递采样时钟(即,接收机从数据中恢复时钟以及用其对输入数据进行采样)。在一些实现中,接收机持续地适应输入比特流。通过嵌入时钟,可以潜在地减少引脚分配。然而,在带中数据中嵌入时钟会改变实现带中重置的方式。在一个实施例中,可以在初始化之后利用封锁链路状态(BLS)。此外,除其它考虑外,可以在初始化期间利用电有序集超级序列以促进重置(例如,如上所述)。嵌入式时钟可以在链路上的设备之间是公共的,以及可以在链路的标定和配置期间设置公共可操作时钟。例如,HPI链路可以参考具有漂移缓冲器的公共时钟。除其它潜在的优势外,这样的实现可以实现比用在非公共参考时钟中的弹性缓冲器更低的时延。此外,参考时钟分布段可以被匹配到指定的极限之内。
在一个实现中,HPI可以支持具有在一些情况下不是标称通道宽度的倍数的宽度的微片(例如作为单纯地说明性的例子,使用宽度为192比特的微片和20个通道)。事实上,在允许部分宽度传输状态的实现中,在其上传输微片的通道的数量可以波动,甚至在链路的寿命期间。例如,在一些实例中,微片宽度可以在一个时刻处是活动的通道的数量的倍数,但是在另一个时刻处不是活动的通道的数量的倍数(例如,由于链路改变状态和通道宽度)。在通道的数量不是当前通道宽度的倍数的实例中(例如,在20个通道上的微片宽度为192比特的例子),在一些实施例中,连续的微片可以被配置为被在通道上重叠发送来由此保存带宽(例如,在20个通道上重叠地发送五个连续的192比特微片)。
图8示出了在多个通道上重叠传输连续微片的表示。例如,图8示出了在20个通道链路(由列0至19表示通道)上发送的五个重叠的192-比特微片的表示。图8中的每一个单元格表示被包括在在4UI跨度上发送的微片中的相应的“半字节”或四比特组(例如,比特4n+3:4n)。例如,192比特微片可以被划分为48个四比特半字节。在一个例子中,半字节0包括比特0至3,半字节1包括比特4至7等。除其它考虑外,在半字节中的比特可以被发送使得重叠或被交织(例如,“被调配(swizzled)”),使得提前呈现较高优先级的微片字段、保留错误检测属性(例如,CRC)。事实上,调配方案还可以提供的是,以无序的方式发送一些半字节(以及其相应的比特)(例如,如在图8和9的例子中)。在一些实现中,调配方案可以取决于链路层的架构和在链路层中使用的微片的格式。
诸如根据图8的例子,具有的长度不是活动的通道的倍数的微片的比特(或半字节)可以被调配。例如,在第一4UI期间,可以发送半字节1、3、5、7、9、12、14、17、19、22、24、27、29、32、34、37、39、42、44和47。可以在下一个4UI期间发送半字节0、2、4、6、8、11、13、16、18、21、23、26、28、31、33、36、38、41、43和46。在UI 8至11中,仅保留第一微片的8个半字节。第一微片的这些最终的半字节(即,10、15、20、25、30、40、45)可以和第二微片的第一半字节(即,半字节2、4、7、9、12、16、20、25、30、35、40、45)同时发送,使得第一和第二微片重叠或被调配。在本例子中使用这样的技术,可以在48UI中发送五个完整的微片,其中在分数的9.6UI时段上发送每一个微片。
在一些实例中,调配可以产生周期的“干净的”微片边界。例如,在图8的例子中,起始的5微片边界(第一微片的最上线)还可以被称为干净的微片边界,这是由于所有通道正从同一个微片发送起始的半字节。代理链路层逻辑可以被配置为识别通道的调配以及可以从调配的比特中重建微片。因此,物理层逻辑可以包括用于基于此刻正在使用的通道的数量来识别何时以及如何调配微片数据流的功能。事实上,在从一个链路宽度状态到另一个链路宽度状态的转变中,代理可以将其配置为识别将如何采用数据流的调配。
如上面提及的,链路可以在通道宽度之间转变,在一些实例中,以原始的或完整的宽度操作以及随后转变到利用较少通道的部分宽度(以及从利用较少通道的部分宽度的转变)。在一些实例中,所定义的微片的宽度可以被通道的数量整除。例如,图9的例子示出了这样的例子,其中,在8通道链路上发送先前例子的192比特微片。如在图9中表示的,可以在8个通道上均匀地分布和发送192比特微片的4比特半字节(即,由于192是8的倍数)。事实上,当以8通道部分宽度操作时,可以在24UI上发送单个微片。此外,在图9的例子中,每一个微片边界可以是干净的。尽管干净的微片边界可以简化状态转变、决定论以及其它特征,但是允许调配和偶然的参差不齐的微片边界可以允许最小化链路上浪费的带宽。
另外,尽管图9的例子将通道0至7示为在部分宽度状态中保持活动的通道,但是可以潜在地使用任何8个通道的集合。还要注意,上面的例子仅是出于说明的目的。微片可以潜在地被定义为具有任意宽度。链路也可以潜在地具有任意链路宽度。此外,除其它考虑和例子外,可以根据微片的格式和字段、系统中的优选的通道宽度来灵活地构建系统的调配方案。
除其它考虑外,在时延不引起在链路层处的时延固定错误或超时的前提下,HPIPHY逻辑层的操作可以独立于下面的传输媒介。
链路层
链路层可以从协议层抽象物理层,处理在两个协议代理之间的流控制以及向协议层(消息类)和路由层(虚拟网络)提供虚拟信道服务。在一些实现中,链路层可以处理固定的信息量,称为微片。在一个例子中,微片可以被定义为192个比特长度。然而,可以在不同的变化中利用任何比特范围,诸如81至256个(或更多)。大微片尺寸(诸如192个比特)可以包括格式、循环冗余校验(CRC)、错误纠正代码(ECC)以及其它特征。例如,较大的微片长度还可以允许CRC字段被扩展(例如,至16比特)以处理较大的微片有效负载。用于传送单个微片的物理微片或单元间隔(UI)(例如,用于转移单个比特或物理微片等的时间)的数量可以随着链路宽度而变化。例如,除其它潜在的例子外,20通道或比特链路宽度可以在9.6个UI中转移单个192比特微片,而8通道宽度在24个UI中转移同一个微片。链路层信用和协议分组化也可以基于微片。
图10示出了针对8通道链路宽度的一般的微片的表示1000。表示1000的每一列可以代表链路通道以及每一行是相应的UI。在一些实现中,单个微片可以被再细分为两个或更多时隙。不同的消息或链路层报头可以被包括在每一个时隙中,这允许在单个微片中发送对应于潜在地不同的事务的多个不同的以及在一些情况下独立的消息。此外,除其它例子外,包括在单个微片的时隙中的多个消息还可以去往不同的目的地节点。例如,图10的例子示出了具有三个时隙的微片格式。阴影部分可以表示被包括在相应的时隙中的部分微片。
在图10的例子中,提供了时隙0、1和2三个时隙。可以为时隙0提供72个比特的微片空间,其中的22个比特专用于消息报头字段以及50个比特用于消息有效负载空间。时隙1可以被提供有70个比特的微片空间,其中的20个比特专用于消息报头字段以及50个比特用于消息有效负载空间。可以优化在消息报头字段空间之间的不同以提供的是,某些消息类型可以被指定用于在时隙0中包括的(例如,利用更多消息报头编码的地方)。第三时隙(时隙2)可以被提供以占用远比时隙0和1少的空间,在这种情况下利用18个比特的微片空间。可以优化时隙2以处理那些不利用较大的消息有效负载的消息,诸如确认、信用返回等。另外,可以提供浮动有效负载字段,这允许额外的11个比特被替代地应用于补充时隙0或时隙1的有效负载字段。
继续图10的特定例子,其它字段对于微片可以是全局的(即,跨微片应用而不是应用于特定的时隙)。例如,除其它例子外,可以提供报头比特连同4比特微片控制字段,其可以用于指定如微片的虚拟网络、标识微片将如何被编码这样的信息。另外,除其它潜在的例子外,可以提供错误控制功能,诸如通过16比特循环CRC字段。
可以定义微片格式使得优化在链路层上的消息的吞吐量。一些传统协议已利用了非时隙式的、较小的微片。例如,在QPI中利用了80比特微片。虽然较大的(例如,192比特微片)微片吞吐量可能是较低的,但是可以通过优化微片数据的使用来增加消息或分组吞吐量。例如,在QPI的一些实现中,不管消息大小或类型如何,利用整个80比特微片空间。通过将较大的微片再细分为预先确定的长度和字段的时隙,可以优化192微片长度,实现更高的效率,即使在当可用的时隙中的一个或多个时隙有时未用的实例中。事实上,可以假设链路层业务包括许多不同类型的消息和业务,包括具有不同报头长度和字段的消息和分组。可以定义在微片中定义的时隙的相应的长度和组织使得与不同消息的统计或预期频率以及对这些消息的需求相对应。例如,除其它例子外,可以针对每一个小的时隙来定义两个较大的时隙以适应使用这些较大的消息类型和报头长度来进行的消息传送的预期统计频率。此外,还可以提供灵活性来进一步地适应改变的业务,诸如通过浮动有效负载字段,如在图10的例子中。在一些实例中,微片格式可以是固定的,包括专用于微片中的特定时隙的比特。
在图10的例子中,通常可以为微片提供“Hdr”字段以及其表示针对微片的报头指示。在一些实例中,Hdr字段可以指示微片是报头微片还是数据微片。在数据微片中,微片可以仍然保持时隙式的,但是省略或者用有效负载数据替代某些字段的使用。在一些情况下,数据字段可以包括操作码和有效负载数据。在报头微片的情况下,可以提供多种多样的报头字段。在图10的例子中,可以为每一个时隙提供“Oc”字段,Oc字段表示操作码。类似地,一个或多个时隙可以具有表示将被包括在时隙中的相应的分组的消息类型的相应的“msg”字段,前提是该时隙被设计为处理这样的分组类型等。除其它潜在的字段外,“DNID”字段可以表示目的地节点ID,“TID”字段可以表示事务或跟踪器ID,“RHTID”字段可以表示请求器节点ID或归属跟踪器ID。此外,一个或多个时隙可以被提供有有效负载字段。另外,除其它示例外,CRC字段可以被包括在微片之内以提供针对微片的CRC值。
在一些实现中,链路宽度可以在链路的寿命期间变化。例如,物理层可以在链路宽度状态之间转变,诸如到和从完整的或原始的通道宽度以及不同的或部分通道宽度。例如,在一些实现中,链路可以被初始化为在20个通道上来转移数据。随后,除许多其它潜在的示例外,链路可以转变到活跃地使用仅8个通道的部分宽度传输状态。例如,除其它示例外,可以结合由一个或多个功率控制单元(PCU)来控制的功率管理任务来利用这样的通道宽度转变。
如上面提及的,链路宽度可以影响微片吞吐量速率。图11是在8通道链路上发送示例性192比特微片、产生在24UI处的微片的吞吐量的表示。此外,如在图11中的示例所示,在一些实例中,例如,除其它示例外,可以无序地发送微片的比特以在转移中提早发送更多的时间敏感字段(例如,微片类型字段(例如,数据或报头微片)、操作码等)、保留或促进特定的错误检测或者在微片中包含的其它功能。例如,在图11的示例中,在转移的第一UI(即,UI0)期间,在通道L7至L0上并行地发送比特191、167、143、119、95、71、47和23,而在微片转移的第24(或最终的)UI(即,UI23)期间发送比特168、144、120、96、72、48、24和0。应当认识到的是,可以在其它实现和示例中利用其它排序方案、微片长度、通道宽度等。
在一些实例中,微片的长度可以是活动的通道的数量的倍数。在这样的实例中,可以在所有活动的通道上均匀地发送微片以及可以在干净的(即非重叠的)边界处实质上同时结束微片。例如,如在图8的表示中所示,微片的比特被认为是在连续的4个比特组或“半字节”中被传输的。在该示例中,192比特微片是在8通道链路上来转移的。由于192是8的倍数,所以可以在24个UI中在8通道链路上来干净地转移整个微片。在其它实例中,微片宽度可能不是活动的通道的数量的倍数。例如,图9示出了在20个通道上来转移示例性192比特的另一表示。由于192不能被20整除,所以转移完整的微片会要求非整数间隔(例如,9.6个UI)。在这样的情况下,可以利用先前的微片的最终的比特来转移第二重叠微片,而不是浪费在转移的第10UI期间未被利用的“额外的”通道。在一些实现中,微片的这样的重叠或调配可以引起参差不齐的微片边界以及微片被无序地发送。除其它考虑外,用于转移的模式可以被配置为允许在微片中提早转移微片的更多的时间敏感字段,保留错误检测和纠正。可以在物理和链路层中的一个或二者中提供逻辑以根据这样的模式来转移微片比特以及基于当前的链路宽度来在模式之间动态地改变。除其它示例外,可以提供进一步的逻辑以重新排序以及从这样被调配或排序的比特流中重建微片。
在一些实现中,微片可以被表征为报头微片(例如,承载分组报头数据)或数据微片(例如,承载分组有效负载数据)。返回到图10,可以定义包括三(3)个不同的时隙(例如,0、1和2)的微片格式,其允许在单个微片中转移多至三个报头(例如,在每一个时隙中一个报头)。在图10的示例中,提供了时隙0、1和2三个时隙。可以为时隙0提供72个比特的微片空间,其中的22个比特专用于消息报头字段以及50个比特用于消息有效负载空间。时隙1可以被提供有70个比特的微片空间,其中的20个比特专用于消息报头字段以及50个比特用于消息有效负载空间。可以优化在消息报头字段空间之间的不同以提供的是,某些消息类型可以被指定用于在时隙0中包括的(例如,利用更多消息报头编码的地方)。第三时隙(时隙2)可以被提供以占用远比时隙0和1少的空间,在这种情况下利用18个比特的微片空间。可以优化时隙2以处理那些不利用较大的消息有效负载的消息,诸如确认、信用返回等。另外,可以提供浮动有效负载字段,这允许额外的11个比特被替代地应用于补充时隙0或时隙1的有效负载字段。
在一些实现中,通过允许字段在两个时隙之间浮动,可以提供被需要用于某些消息的额外的比特,同时仍然保持在预先定义的微片长度内(例如,192个比特)以及最大化的带宽的使用。在一个实例中,微片,例如在图10中所示的,可以包括三个时隙,时隙0、1和2。时隙0和1中的每一个时隙可以包括50比特有效负载字段。可以提供浮动字段以替代地将时隙0或时隙1的有效负载字段扩展浮动字段的字段长度(例如,11个比特)。浮动字段的使用可以进一步地扩大通过定义的、多时隙微片格式提供的效率增益。微片内的时隙的大小以及可以被置于每一个时隙中的消息的类型可以潜在地提供增加的带宽,甚至以降低的微片速率。
在图10的特定的示例中,可以优化可以使用时隙1和2的消息,减少留出来用于编码这些时隙的操作码的比特的数量。当具有比时隙0可以提供的更多的比特的报头进入链路层时,可以提供时隙化算法以允许其为了额外的空间接管时隙1的有效负载比特。还可以提供消耗所有三个时隙的比特价值以满足其需要的特殊控制(例如,LLCTRL)微片。对于链路部分地繁忙的情况,还可以存在时隙化算法以允许利用单独的时隙,而其它时隙不携带信息。
在一个实施例中,链路层可以额外地定义可以用于例如调试消息和其它用途的特殊控制微片。在一个示例中,当设置实现调试控制字段时,可以由链路层发送LLCTRL-DEBUG微片。当没有设置该比特时,不会在链路上传输LLCTRL-DEBUG微片。调试分组对于公开通过HPI连接的、以其它方式无法访问的设备的内部状态来说是重要的。调试分组的内容还可以是特定于实现的。内容可以包括如分支信息(源和目标IP)、时间戳、对内部事件触发器的指示之类的。公开的数据可以被例如监控设备(诸如逻辑分析器)用于后处理和失败分析。在图12中示出了编码调试消息类型的示例性微片。
在一些实现中,诸如HPI的通用I/O互连(GPIO)架构的原则和协议可以用于实现缓冲式存储器接口和相应的协议。例如,上面概述的物理和链路层定义还可以被实现在缓冲式存储器协议中。事实上,可以在支持缓冲式存储器协议的接口处重用用于支持GPIO协议的物理和链路层的逻辑。除其它示例外,缓冲式存储器协议还可以共享消息类,诸如请求、响应以及写回消息类。尽管可以以与HPI(或另一个GPIO协议)不同的方式来解释在缓冲式存储器协议消息内的操作码值,但是可以在缓冲式存储器协议和构建其所基于的GPIO互连二者中利用相同的通用分组格式。事实上,额外的分组和微片字段对于缓冲式存储器协议和GPIO互连协议二者可以是唯一的。
在一些实现中,利用HPI的物理和链路层的缓冲式存储器协议可以是事务性的接口和协议。这可以允许数据被无序地返回到一系列接收的请求(例如,读取请求)。在一些实现中,缓冲式存储器接口可以用于将缓冲器芯片互连到CPU。在一个实现中,虽然一些协议跨缓冲式存储器总线发送诸如激活、读取、写入以及刷新的DRAM命令,,但是在本文讨论的缓冲式存储器协议的一些实现中,可以简单地发送具有地址的读取或写入命令。缓冲器芯片可以随后解码特定存储排(rank)和存储体(bank),以及将请求分解为DRAM命令。还可以支持推测性和需求读取。
转向图13,示出了简化框图1300,其示出了包括由遵循HPI链路互连的CPU设备1305、1310的计算系统的示例性拓扑。每一个CPU 1305、1310可以使用相应的缓冲式存储器协议链路(“MemLink”)来同样地连接到一个或多个相应的缓冲器设备1315a-1。如上面提及的,在一些实现中,缓冲式存储器互连可以基于GPIO协议,这在于缓冲式存储器协议的物理和链路层基于GPIO协议的相同物理和链路层定义(例如,HPI)。尽管未在图13中示出,CPU1305、1310还可以使用GPIO协议连接到一个或多个下游设备。
如在图13的示例中进一步所示的,缓冲器设备1315a-1可以连接到存储器设备,诸如双列直插式存储器模块(DIMM)设备。对应于每一个缓冲器设备的存储器可以被认为对于该缓冲器设备所连接到的CPU(例如,1305、1301)而言是本地的。然而,其它设备(包括其它CPU)可以通过使用遵循GPIO协议链路的其它插槽来访问存储器。在一些实现中,运行缓冲式存储器协议的端口可以仅支持用于与存储器进行通信的命令以及仅支持缓冲式存储器协议(即,不是GPIO协议和缓冲式存储器协议)。另外,在一些实现中,GPIO互连协议可以支持路由以及(例如,在其分组中)指示诸如请求和目的地节点标识符这样的信息。另一方面,缓冲式存储器协议可以是不利用路由的对等(point-to-point)接口。从而,在使用缓冲式存储器接口发送的分组中,可以省略GPIO协议中使用的一些字段。替代地,除其它示例外,字段可以被指定用于携带地址解码信息主机到缓冲器。
在进一步的实现中,缓冲器设备1315a-1可以支持两级存储器拓扑,其中一些数量的快速存储器(例如,DRAM)用作针对较大、较慢存储器(例如,非易失性存储器)的缓存。在一个这样的实现中,除其它示例外,缓冲器设备1315a-1中的一个或多个缓冲器设备可以将DDR用作近、快速存储器以及将事务性DDR DIMM用作较大的、“远”存储器。事务性DIMM可以使用事务性命令来利用协议(例如,DDR-事务性(DDR-T))与易失性存储器单列直插式存储器模块(SIMM)进行通信。
转向图14,给出了显示连接到近和远存储器模块(例如,1405、1410)的缓冲器芯片1315的更加详细的表示的简化框图1400。如在上面的示例中提及的,缓冲器芯片1315可以通过利用了定义的缓冲式存储器协议的缓冲式存储器协议互连链路1415来通信地耦合到CPU设备1305。缓冲器芯片1315可以包括用于执行额外的功能的逻辑。例如,缓冲器芯片1315的实现可以包括存储器控制器1420、调度器1425、流控制逻辑1430以及错误检测逻辑1435。可以使用硬件电路、固件和/或软件来实现逻辑。
在一些实现中,存储器控制器1420可以包括用于将请求转换为其存储器设备的特定于存储器协议(例如,DDR4)的逻辑。存储器控制器1420可以从CPU 1305的主机控制器逻辑1440(或另一个主机)抽象这些特定于存储器协议的细节,所述CPU 1305使用链路1415来与缓冲器芯片1315进行通信。除其它功能外,主机控制器逻辑1440可以将CPU(或主机)地址翻译为存储器地址,包括跨信道和插槽的置换。调度器1425可以包括为了实现更高性能的用于对请求的响应做出重新排列和仲裁的逻辑。缓冲器芯片1315可以额外地提供诸如流控制和错误检测的特征。在一些实现中,流控制逻辑1430可以被包含在调度器1425中或以其它方式与调度器1425互操作以确保缓冲器芯片1315有更高的效率和性能。错误检测逻辑1440可以包括用于支持错误纠正代码检测方案的逻辑以及用于发起对经检测的错误的纠正或处理的逻辑。
如上面提及的,缓冲式存储器协议的链路层可以基于GPIO协议的链路层。例如,可以在缓冲式存储器协议中利用HPI协议的192比特、3时隙微片(例如,在图10中示出和描述的)。缓冲式存储器协议中的分组可以包含完整的命令。分组可以被实现为一个或多个微片。图15A至15C可以表示缓冲式存储器协议中的微片的实现。在一些实现中,可以经由带报头和不带报头的存储器数据(MemData)分组的组合来将读取的数据从缓冲器设备发回到主机。可以在三个不带报头的微片(而不是五个,如用带报头的微片)中转移一个完整的缓存线。不带报头分组可以因此规定较高的吞吐量,关于其可以是接口的最受约束的部分。为了装入三个微片,不带报头分组移除多个字段以及做出关于其值的假设。做出的假设大多数是真的,但是不是所有的读取返回,如果任何假设不是真的,则将使用带报头分组,其包含所有字段。在一些实现中,带报头分组可以开始读取返回的序列以允许对跟踪器标识符(例如,HTID、RTID等)的提早识别,所述跟踪器标识符用于将读取返回映射到事务性缓冲式存储器协议中的读取请求。
在一些实现中,不带报头分组可以包含在表1中概述的信息:
表1:不带报头分组字段
此外,图15A至15C示出了可以用于在读取返回中传输一个完整的缓存线的三个微片(例如,微片0(在图15A处)、微片1(在图15B处)以及微片2(在图15C处))的序列。表2提供了在不带报头分组中被利用的三个微片的例子的概要:
表2:不带报头分组
微片 | 内容 |
数据微片0 | 来自于缓存线的前32字节的数据 |
数据微片1 | 前32字节的剩余,加上第二32字节的第一部分 |
数据微片2 | 第二32字节的剩余 |
可以设置HIB比特来指示分组是带报头的还是不带报头的。可以设置HIB来指示仅用于报头微片之后的数据微片的不带报头分组。这允许在分组的中间交织某些其它分组。当完成交织的分组时,可以用微片中HIB=0来发送原始的带报头分组的数据部分。这个技术还可以用于通过插入无效的微片来延迟数据分组。在一些实现中,当一般地会需要报头时,通过HIB比特为0来用信号通知不带报头分组的开始。包括无效微片的所有其它分组可以包含HIB比特被设置的报头。
如上面介绍的,带报头分组可以是总共五个微片长度,以及可以包括一个报头微片和4个数据微片。为了减小空闲时延,带报头的微片可以发送数据微片1两次。第一次仅发送有来自于第一32字节的并被称为微片1a的数据。这允许该微片在数据的第二32字节从存储设备可用之前被发送。结果是,对于空闲的情况,数据的关键的32字节块提早到达主机处。随后可以第二次发送微片1,这次是完整的。其将包含第一32字节数据部分的重复加上第二32字节部分。表3描述了带报头分组的五个微片:
表3:带报头分组
在一些实现中,可以不取消带报头的存储器数据分组以及其后为数据微片。将不发送报头,直到已知还可以发送数据为止。在发送报头之前不在缓冲器中积累完整的缓存线。
系统对于时延可以是尤其敏感的。存储器时延对于CPU性能是至关重要的。在利用事务性缓冲式存储器接口的实现中,额外的CPU时延可以被专用于识别缓冲器设备的事务响应中的事务的跟踪器标识符(ID)(诸如HTID)以及将该响应与相应的事务请求匹配。在一些实现中,可以通过使缓冲器设备预发送即将到来的响应(诸如读取返回)的跟踪器标识符,以允许CPU预处理跟踪器标识符以及预先考虑相应响应的到达,来减小延时。此外,可以通过将跟踪器ID嵌入到当前的响应中来预发送即将到来的响应的跟踪器ID,而不是中断目前的响应传输。事实上,为了提早读取而中断数据传输以便发送提早读取标识符分组会减小链路的带宽。通过将针对即将到来的读取的跟踪器ID嵌入到已经被传输的针对读取的数据中,可以帮助实现高带宽、低时延的数据总线。
转向图16,示出了在缓冲器设备1315和CPU 1305之间的示例性通信的表示1600。可以从CPU 1305向缓冲器设备1315发送多个读取请求(例如,请求1、2和3)以从连接到缓冲器设备1315的存储器设备中获得数据。缓冲器设备1315和CPU 1305可以是事务感知的,这允许缓冲器设备1315潜在地返回无序的读取响应(例如,响应1、2和3),其中响应排序基于用于改善缓冲式存储器接口的性能的算法,而不是单纯的确定性协议。每一个读取请求可以包括跟踪器标识符,以及缓冲器可以为响应贴标签以使得CPU可以确定哪些响应对应于哪些请求。例如,在图16的示例中,在读取请求1之后立即向缓冲器设备1315发送读取请求2,然而,缓冲器设备1315在返回对读取请求1的响应(即,读取响应1)之前返回对读取请求2的响应(即,读取响应2)。CPU可以基于被包括在响应中的跟踪器标识符来识别哪些响应属于哪些请求。在一些实现中,跟踪器标识符可以被实现在用于向CPU发送数据的微片的字段(例如,HTID、RHTID、RTID字段等)中。
转向图17,示出了提早事务识别的示例。在该示例中,CPU 1305再一次发送一连串的三个读取请求(读取请求1、2和3)。在一些实例中,三个读取请求可以与完全不同的事务相关。在其它情况下,两个或更多读取请求可以是相关的(例如,与在CPU和另一个主机之间的公共事务相关等)。在图17的示例中,缓冲器设备1315可以再一次确定最好是返回对请求的无序响应,其中,在对请求1的响应的前面返回了对请求2的响应。在该情况下,缓冲器设备1315不可以发送针对读取响应2的提早标识符ID,这是因为紧邻在读取响应2前面,没有在缓冲式存储器链路上的从缓冲器设备1315到CPU 1305的通信。然而,在该实例中,缓冲器设备1315可以在发送读取响应2之前识别,读取响应1要跟随读取响应2。另外,缓冲器设备1315不仅可以将针对读取请求2的跟踪器ID嵌入到读取响应2中,缓冲器设备1315还可以进一步地编码读取响应2(例如,存储器微片的)的另一个字段以提供针对读取请求1的响应(即,读取响应1)的跟踪器ID的识别,来由此允许CPU在读取响应1的到来之前执行预处理步骤。此外,在该示例中,缓冲器设备1315还可以在发送读取响应2之前识别在读取响应2之后接下来将发送读取响应3。因此,缓冲器设备1315可以将针对读取响应3的跟踪器ID的提早识别嵌入到读取响应2内,以允许CPU在读取响应3的到来之前执行预处理步骤。例如,CPU可以在读取数据的到来之前查找用于向请求器发送数据所必须的路由信息。
发送提早跟踪器ID可以允许接收CPU(或其它主机)的主机控制器得到哪个读取被返回的预先的知识。在利用确定性接口的传统存储器系统中,存在读取数据何时被返回的预先的知识。在这样的系统中,主机由此能够使用该预先的知识来减小时延。因为事务缓冲式存储器接口允许读取数据被无序地返回(例如,通过提供缓冲器设备内的调度器),存在主机控制器将失去该预先的知识的风险。
继续图17的示例,在从缓冲器设备1315向CPU 1305发送读取响应3之后,在缓冲器设备1315处从CPU 1305接收到读取请求4。此外,不可以从CPU 1305接收竞争缓冲器设备1315的调度的其它请求,这允许缓冲器设备确定其可以将对读取请求4的响应(即,读取响应4)作为其下一个响应来发送。缓冲器设备1315还可以确定不存在发送针对读取响应4的提早跟踪器ID的机会,这是因为不存在可以在其中嵌入该响应的其它响应。在其它实现中,除其它实现外,缓冲器设备1315可以确定在将缓冲器设备1315连接到CPU 1305的缓冲式存储器链路上存在的带宽,来允许缓冲器设备向CPU 1305发送控制微片或其它微片以在发送读取响应4之前(以及在一些情况下,当缓冲器设备1315准备读取响应4时)预识别读取响应4的跟踪器ID。此外,因为当缓冲器设备1315准备用于发送的读取响应4时,没有其它响应被缓冲器设备1315识别为未决的,所以没有提早跟踪器ID随读取响应4一起被发送。
在一个示例性实现中,不带报头存储器数据分组和带报头存储器数据分组的数据部分可以被编码为包含下一个不带报头分组的跟踪器ID。例如,读取序列可以开始于带报头分组。该第一带报头分组可以包括其本身的跟踪器ID。在一个实现中,第一带报头分组的跟踪器ID可以被编码在其相应的报头微片中。其它分组的序列可以跟随该第一分组,以及该第一分组的数据微片可以被编码具有跟随序列中的第一分组的下一个分组的跟踪器ID。在一些实例中,可以在不破坏跟踪器ID链的情况下,在不带报头分组之间插入其它分组,其中,仅另一个带报头存储器数据分组能够破坏链(例如,通过指示新的第一分组跟踪器ID)。如果缓冲器设备不知道下一个不带报头数据分组的跟踪器ID(例如,分组尚未被缓冲器设备接收到或处理),则缓冲器设备可以插入哑的、无效的或其它等效值作为下一个分组的跟踪器ID。这可以触发将由缓冲器设备发送的下一个存储器读取分组作为下一个序列中的第一带报头分组。另外,如果在不带报头分组中发送跟踪器ID之后,缓冲器设备确定其不能发送该特定数据,则其可以简单地将带报头分组作为下一个存储器数据分组来发送。除其它示例和实现外,由主机设备(例如,CPU 1305)从缓冲器设备(例如,1315)对跟踪器ID的接收可能不保证该数据将下一个到达(例如,因为其可以被带报头存储器数据分组优先占用)。
表4示出了对应于至少5个事务(即,事务A、B、C、X、Y)的微片的序列,以及进一步示出了如何利用跟踪器ID字段来向主机发送即将到来的读取返回的跟踪器ID的提早识别:
表4:在微片的序列中的提早跟踪器ID
在表4的示例中,跟踪器ID(TID)被显示在数据的第一微片中(然而,实际上可以实际地跨同一个分组的所有三个或四个微片来散播跟踪器ID)。例如,针对事务A的读取返回的报头微片(报头A)包括针对事务A的TID。因为针对事务B的读取返回将立即跟随针对事务A的读取返回,所以可以识别用于发送针对事务B的提早TID的机会。因此,如在表4的示例中所示,事务A的数据微片数据0可以被编码具有针对事务B的TID。同样,事务B的读取返回的数据微片(例如,微片数据0B)可被编码为提供对针对事务C的即将到来的读取返回的TID的提早指示。
继续表4的示例,在发送针对事务C的读取返回之前,缓冲器设备可以确定不存在用于利用事务C的读取返回来发送提早TID的机会。事实上,微片12至49不包括读取数据。因此,不是利用事务C的读取返回来发送提早TID,而是可以将哑的数据编码在数据微片(例如,微片数据0C)的字段中以指示提早TID被编码在其中的字段将被忽略。
如上面提及的,非读取操作可以在不干扰针对随后的读取返回的提早TID识别的情况下中断一系列读取返回。例如,如在表4的示例中所示,微片5(数据0B)被编码具有针对读取返回C的提早TID,但是在针对事务B和C的读取返回之间发送介入其间的写入完成微片(微片8)。然而,除其它特征外,写入完成微片不干扰CPU的用于映射对应于最后发送的提早TID(例如,在微片数据0B中)的下一个读取返回(例如,读取返回C)的能力。作为另一个示例,如果错误状况发生使得不能发送针对已经被发送的TID的数据,则可以取消转移(例如,隐含地或明确地)。除其它示例外,当发送带报头存储器数据分组时,可以取消先前的TID(例如,为了考虑错误,诸如ECC错误等)。
如上面介绍的,可以采用替代的机制来增加或替代提早跟踪器ID识别解决方案的特征。例如,可以在缓冲器设备(例如,1315)和相应的主机(例如,CPU 1305)之间提供专用布线(例如,边带布线),在其上可以发送即将到来的读取响应的跟踪器ID。然而,在提早跟踪器ID识别是在带中被发送的、被嵌入到另一个读取请求的读取返回中的实现中,这样的边带通道可能是不必要的。
在事务缓冲式存储器接口的一个示例中,缓冲器设备(例如,1315)的存储器控制器可以知道何时精确地调度读取、数据将何时从相应的存储器中返回。因此,缓冲器设备可以通过尝试最小化读取时延来优化性能,其中,通过准备读取数据的到达来最小化读取时延,包括在读取数据已到达之前向CPU的系统代理发送指示以便允许针对读取数据的报头的提早组装。这可以最小化时延,因为读取数据可以在其一到达时就被转发。除其它示例性优势外,这样与用于向缓冲器设备的主机发送响应的跟踪器ID的提早识别的功能相结合可以通过减小时延来改善系统的效率和性能。
HPI和相关联的缓冲式存储器访问协议可以合并到任何的多种多样的计算设备和系统中,除其它示例外,包括主机、服务器系统、个人计算机、移动计算机(诸如平板电脑、智能电话、个人数字系统等)、智能装置、游戏或娱乐控制台以及机顶盒。例如,参照图18,示出了根据本发明的实施例的第二系统1800的框图。如在图18中所示,多处理器系统1800是对等互连系统,并包括经由对等互连1850耦合的第一处理器1870和第二处理器1880。处理器1870和1880中的每一个处理器可以是某个版本的处理器。在一个实施例中,1852和1854可以是诸如高性能架构的串行的、对等一致互连结构的一部分。因此,本发明可以被实现在QPI架构内。
虽然被示为仅具有两个处理器1870、1880,应当理解的是,本发明的范围并不受此限制。在其它实施例中,一个或多个额外的处理器可以出现在给定的处理器中。处理器1870和1880被示为分别包括集成存储器控制器单元1872和1882。处理器1870还包括作为其总线控制器单元的一部分的对等(P-P)接口1876和1878;类似地,第二处理器1880包括P-P接口1886和1888。处理器1870、1880可以使用P-P接口电路1878、1888经由对等(P-P)接口1850来交换信息。如在图18中所示,IMC 1872和1882将处理器耦合到相应的存储器(被称为存储器1832和存储器1834),其可以是本地地附着于相应的处理器的部分主存储器。
处理器1870、1880使用对等接口电路1876、1894、1886、1898经由各自的P-P接口1852、1854均与芯片集1890交换信息。芯片集1890还经由接口电路1892沿着高性能图形互连1839来与高性能图形电路1838来交换信息。
共享缓存(未示出)可以被包括在处理器中或者两个处理器之外;还经由P-P互连与处理器连接,使得如果处理器被置于低功率模式,则可以在共享缓存中存储任一个或两个处理器的本地缓存信息。
芯片集1890可以经由接口1896耦合到第一总线1816。在一个实施例中,尽管本发明的范围不受此限制,第一总线1816可以是外围部件互连(PCI)总线、或者诸如快速PCI总线或另一个第三代I/O互连总线的总线。
如在图18中所示,多个I/O设备1814耦合到第一总线1816,连同将第一总线1816耦合到第二总线1820的总线桥1818。在一个实现中,第二总线1820包括低引脚数(LPC)总线。多个设备耦合到第二总线1820,例如,在一个实施例中,包括键盘和/或鼠标1822、通信设备1827以及存储单元1828,诸如盘驱动或者经常包括指令/代码和数据1830的其它大容量存储设备。此外,音频I/O 1824被示为耦合到第二总线1820。注意,其它架构是可能的,其中所包括的部件和互连架构变化。例如,系统可以实现多点分支总线或者其它这样的架构,而不是图18的对等架构。
尽管针对有限数量的实施例描述了本发明,但是本领域技术人员将认识到的是源自其中的大量的修改和变形。所附权利要求书旨在覆盖落入本发明的真正的精神和范围内的所有这样的修改和变形。
设计可以经历各种阶段,从创造到仿真到制造。表示设计的数据可以以多种方式来表示该设计。首先,如在仿真中是有用的,可以使用硬件描述语言或另一种功能描述语言来表示硬件。另外,可以在设计过程中的一些阶段生产具有逻辑和/或晶体管门的电路级模型。此外,在某个阶段,大多数设计达到表示在硬件模型中的多个设备的物理布置的数据的水平。在使用常规的半导体制造技术的情况下,表示硬件模型的数据可以是指定在针对用于生产集成电路的掩膜的不同的掩膜层上的各种特征的存在或缺失的数据。在设计的任何表示中,可以在任何形式的机器可读介质中存储数据。存储器或磁或光存储(诸如盘)可以是用于存储信息的机器可读介质,经由为了传输这样的信息经调制的或者以其它方式生成的光或电波来传输所述信息。当传输指示或携带代码或设计的电载波时,在执行电信号的复制、缓冲或者重传这方面来说,制成了新的副本。因此,通信提供者或网络提供者可以至少暂时地在有形的、机器可读介质上存储制品,诸如被编码进载波的信息,包含本发明的实施例的技术。
本文使用的模块指代硬件、软件和/或固件的任意组合。作为示例,模块包括诸如微控制器的硬件,其与用于存储适用于由微控制器执行的代码的非暂时性介质相关联。因此,在一个实施例中,对模块的引用指代硬件,其特定地被配置为识别和/或执行被保持在非暂时性介质上的代码。此外,在另一个实施例中,对模块的使用指代包括代码的非暂时性介质,其特定地适用于由微控制器执行以执行预先确定的操作。以及可以推出的,在再一个示例中,术语模块(在本示例中)可以指代微控制器和非暂时性介质的组合。经常被示为分离的模块边界通常变化以及潜在地重叠。例如,第一和第二模块可以共享硬件、软件、固件或其组合,同时潜在地保留某些独立的硬件、软件或固件。在一个实施例中,对术语逻辑的使用包括硬件,诸如晶体管、寄存器或其它硬件,诸如可编程逻辑设备。
在一个实施例中,对短语‘被配置为’的使用指代安排、装配、制造、提供卖、引入和/或设计装置、硬件、逻辑或元件以执行指定的或确定的任务。在该示例中,如果装置或元件被设计、耦合、和/或被互连以执行所述的指定的任务,则其中不工作的装置或元件仍然‘被配置为’执行所指定的任务。作为单纯地说明性的示例,逻辑门可以在操作期间提供0或1。但是‘被配置为’向时钟提供启动信号的逻辑门不包括可以提供0或1的每一个潜在的逻辑门。事实上,逻辑门是在1或0输出将启动时钟的工作期间以某种方式的一种耦合。再一次注意,对术语‘被配置为’的使用不要求操作,但是集中在装置、硬件、和/或元件的潜在状态上,其中,在潜在状态中,装置、硬件、和/或元件被设计为,当装置、硬件、和/或元件工作时执行特定的任务。
此外,在一个实施例中,对短语‘以’、‘能够/以’以及或‘可操作的以’的使用指代以以指定的方式来实现对装置、逻辑、硬件、和/或元件的使用的这样的方式设计的装置、逻辑、硬件、和/或元件。如上面提及的,在一个实施例中,对以、能够或可操作的以的使用指代装置、逻辑、硬件、和/或元件的潜在状态,其中,装置、逻辑、硬件、和/或元件不工作,但是以以指定的方式实现对装置的使用这样的方式来设计。
本文使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任意已知的表示。通常,对逻辑电平、逻辑性值或逻辑值的使用被称为1和0,其简单地表示二进制逻辑状态。例如,1表示高逻辑电平,0表示低逻辑电平。在一个实施例中,存储单元(诸如晶体管或闪速单元)可以能够保持单个逻辑值或多个逻辑值。然而,在计算机系统中已使用了值的其它表示。例如,十进制数字10还可以被表示为二进制值1010以及十六进制字母A。因此,值包括能够被保持在计算机系统中的信息的任何表示。
此外,状态可以由值或值的部分表示。作为示例,第一值(诸如逻辑1)可以表示默认或初始状态,而第二值(诸如逻辑0)可以表述非默认状态。另外,在一个实施例中,术语重置和设置分别指代默认和经更新的值或状态。例如,默认值潜在地包括高逻辑电平,即重置,而经更新的值潜在地包括低逻辑电平,即设置。注意,可以利用值的任意组合来表示任意数量的状态。
可以经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的、可由处理元件执行的指令或代码来实现上面阐述的方法、硬件、软件、固件或代码的实施例。非暂时性机器可访问/可读介质包括提供(即,存储和/或传输)以机器(诸如计算机或电子系统)可读的形式的信息的任何机制。例如,非暂时性机器可访问介质包括随机访问存储器(RAM),诸如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪速存储器设备;电存储设备;光存储设备;声存储设备;用于保持从暂时性(传播)信号(例如,载波、红外信号、数字信号等)接收的信息的其它形式的存储设备等,将其与可以从那里接收信息的非暂时性介质区分开来。
用于编程逻辑以执行本发明的实施例的指令可以被存储在系统中的存储器内,诸如DRAM、缓存、闪速存储器或其它存储。此外,可以经由网络或通过其它计算机可读介质的方式来分布指令。因此,机器可读介质可以包括用于存储和传输以机器(例如,计算机)可读的形式的信息的任何机制,但不受限于软盘、光盘、压缩盘、只读存储器(CD-ROM)以及磁光盘、只读存储器(ROM)、随机访问存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁或光卡、闪速存储器或经由电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传输信息中使用的有形的、机器可读存储器。因此,计算机可读介质包括适用于存储和传输以机器(例如,计算机)可读的形式的电指令或信息的任何类型的有形的机器可读介质。
下面的示例属于根据本描述的实施例。一个或多个实施例可以提供用于识别将在事务性缓冲式存储器接口上被发送给主机设备的读取返回的序列的装置、系统、机器可读存储器、机器可读介质、基于硬件和/或软件的逻辑以及方法,其中,该序列至少包括对第一读取请求的第一读取返回和对第二读取请求的第二读取返回。可以将所述第二读取返回的跟踪器标识符编码到所述第一读取返回中,以及所述第一读取返回可以带着所述第二读取返回的所述跟踪器标识符被发送给所述主机设备。可以在发送所述第一读取返回之后向所述主机设备发送所述第二读取返回。
在至少一个示例中,所述接口将包括遵循缓冲式存储器链路协议的链路。
在至少一个示例中,所述缓冲式存储器链路协议并入通用输入/输出(GPIO)互连协议的物理层和链路层。
在至少一个示例中,所述存储器缓冲器设备将接收来自于所述主机设备的读取请求的序列以及所述读取请求的序列对应于所述读取返回的序列。
在至少一个示例中,在所述序列中的所述读取返回中的最后一个读取返回将被编码以指示针对提早事务标识符的哑的值。
在至少一个示例中,所述第一读取返回还将包括所第一读取返回的跟踪器标识符。
在至少一个示例中,所述第一读取返回将包括带报头分组以及所述第二读取返回将包括不带报头分组。
在至少一个示例中,所述第一读取返回将基于所述第一读取返回是所述序列中的所述第一读取返回来包括所述带报头分组,以及所述序列中的随后的读取返回包括不带报头分组。
在至少一个示例中,带报头分组均包括微片的集合以包括一个报头微片和四个数据微片,以及不带报头分组均包括三个数据微片的集合。
在至少一个示例中,所述第二读取返回的所述跟踪器标识符将被编码在所述第一读取返回的第一数据微片中,以及所述第一读取返回的所述跟踪器标识符将被编码在所述第一读取返回的所述报头微片中。
在至少一个示例中,所述第一读取请求和第一读取返回对应于第一事务,以及所述第二读取请求和第二读取返回对应于第二事务。
在至少一个示例中,所述序列还包括对应于第三读取请求的第三读取返回,以及所述第二读取返回将被编码有所述第三读取返回的跟踪器标识符。
一个或多个实施例可以提供用于向缓冲器设备发送第一事务的第一读取请求、向所述缓冲器设备发送第二事务的第二读取请求、以及从所述缓冲器设备接收第一读取返回的装置、系统、机器可读存储器、机器可读介质、基于硬件和/或软件的逻辑以及方法。所述第一读取返回将包括第一跟踪器标识符以指示所述第一读取返回对应于所述第一读取请求,以及还包括提早第二跟踪器标识符以指示下一个读取返回将对应于所述第二读取请求。
在至少一个示例中,所述接收机还从所述缓冲器设备接收所述下一个读取返回。
在至少一个示例中,所述主机设备还包括主机控制器以基于所述第一跟踪器标识符来将所述第一读取返回映射到所述第一读取请求,以及将所述第二读取返回映射到所述第二读取请求。
在至少一个示例中,所述主机设备包括中央处理单元。
一个或多个实施例可以提供用于包括第一主机设备、使用遵循存储器访问链路协议的缓冲式存储器链路来连接到所述第一主机设备的缓冲器设备、连接到所述缓冲器设备的一个或多个存储器设备、以及使用遵循通用输入/输出(GPIO)链路协议的特定链路来连接到所述第二主机设备的第二主机设备的系统。所述缓冲器设备可以识别将在所述缓冲式存储器链路上被发送给所述第一主机设备的读取返回的序列、将所述第二读取返回的跟踪器标识符编码到所述第一读取返回中、将所述第一读取返回带着所述第二读取返回的所述跟踪器标识符发送给所述第一主机设备、以及在发送所述第一读取返回之后向所述第一主机设备发送所述第二读取返回。
在至少一个示例中,所述主机设备还将在所述特定链路上来向所述第二主机设备转发所述第一和第二读取返回中的至少一个的数据。
在至少一个示例中,所述存储器访问链路协议不同于所述GPIO链路协议,所述GPIO链路协议包括物理层和链路层,所述存储器访问链路协议的物理层基于所述GPIO链路协议的所述物理层,以及所述存储器访问链路协议的链路层基于所述GPIO链路协议的所述链路层。
在至少一个示例中,所述第一主机设备包括计算设备的第一CPU,以及所述第二主机设备包括所述计算设备的第二CPU。
遍及本描述所引用的“一个实施例”或“实施例”意指结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,在遍及本描述的不同地方出现的短语“在一个实施例中”或“在实施例中”不一定都指代同一个实施例。此外,特定特征、结构或特性可以以任何适当的方式被组合在一个或多个实施例中。
在前述的描述中,参照特定实施例已给出了具体实施方式。然而,明显的是,可以在不脱离如在所附权利要求书中阐述的本发明的更广的精神和范围的情况下做出各种修改和改变。因此,本描述和附图被认为是说明性意义而非限制性意义。此外,对实施例和其它示例性语言的前述使用并不一定指代同一个实施例或同一个示例,而是可以指代不同的和个别的实施例,以及潜在相同的实施例。
Claims (23)
1.一种用于管理存储器的装置,所述装置包括:
缓冲器设备,包括:
调度器,用于:
识别将被发送到一个或多个主机设备的读取返回的序列,其中,所述读取返回的序列将至少包括第一读取返回分组和第二读取返回分组,所述第一读取返回分组将包括响应于第一读取请求的第一读取数据,所述第二读取返回分组将包括响应于第二读取请求的第二读取数据,并且所述第二读取返回分组将在所述序列中跟随所述第一读取返回分组;
读取返回逻辑,用于:
生成包括报头微片和所述第一读取数据的所述第一读取返回分组,其中,所述第一读取返回分组包括与所述第二读取请求相关联的第一事务标识符;以及
生成所述第二读取返回分组,其中,所述第二读取返回分组是不带报头分组并且包括所述第二读取数据。
2.根据权利要求1所述的装置,其中,所述第一读取返回分组还包括将跟随所述报头微片的一个或多个数据微片,并且所述一个或多个数据微片包括所述第一读取数据。
3.根据权利要求2所述的装置,其中,所述一个或多个数据微片中的至少一个数据微片是用与所述第二读取请求相关联的事务标识符来编码的。
4.根据权利要求3所述的装置,其中,所述报头微片是用与所述第一读取请求相关联的事务标识符来编码的。
5.根据权利要求2所述的装置,其中,所述一个或多个数据微片包括至少三个数据微片。
6.根据权利要求1所述的装置,其中,所述调度器还用于识别下一个读取返回的事务标识符是未知的,并且所述读取返回逻辑用于针对在所述下一个读取返回之前的读取请求,在读取返回分组中插入哑的事务标识符。
7.根据权利要求1所述的装置,其中,所述第一读取返回分组将在所述第二读取返回分组之前被发送。
8.一种用于管理存储器的方法,所述方法包括:
识别将被发送到一个或多个主机设备的读取返回的序列,其中,所述读取返回的序列将至少包括第一读取返回分组和第二读取返回分组,所述第一读取返回分组将包括响应于第一读取请求的第一读取数据,所述第二读取返回分组将包括响应于第二读取请求的第二读取数据,并且所述第二读取返回分组将在所述序列中跟随所述第一读取返回分组;
生成包括报头微片和所述第一读取数据的所述第一读取返回分组,其中,所述第一读取返回分组包括与所述第二读取请求相关联的第一事务标识符;以及
生成所述第二读取返回分组,其中,所述第二读取返回分组是不带报头分组并且包括所述第二读取数据。
9.根据权利要求8所述的方法,其中,所述第一读取返回分组还包括将跟随所述报头微片的一个或多个数据微片,并且所述一个或多个数据微片包括所述第一读取数据。
10.根据权利要求9所述的方法,其中,所述一个或多个数据微片中的至少一个数据微片是用与所述第二读取请求相关联的事务标识符来编码的。
11.根据权利要求10所述的方法,其中,所述报头微片是用与所述第一读取请求相关联的事务标识符来编码的。
12.根据权利要求9所述的方法,其中,所述一个或多个数据微片包括至少三个数据微片。
13.根据权利要求8所述的方法,还包括:
识别下一个读取返回的事务标识符是未知的;以及
针对在所述下一个读取返回之前的读取请求,在读取返回分组中插入哑的事务标识符。
14.根据权利要求8所述的方法,其中,所述第一读取返回分组将在所述第二读取返回分组之前被发送。
15.一种用于管理存储器的系统,包括用于执行根据权利要求8-14中任一项所述的方法的单元。
16.一种用于管理存储器的系统,包括:
第一主机设备;
缓冲器设备,其使用缓冲存储器链路连接到所述第一主机设备,其中所述缓冲器设备包括:
调度器,用于:
识别将被发送到一个或多个主机设备的读取返回的序列,其中,所述读取返回的序列将至少包括第一读取返回分组和第二读取返回分组,所述第一读取返回分组将包括响应于第一读取请求的第一读取数据,所述第二读取返回分组将包括响应于第二读取请求的第二读取数据,并且所述第二读取返回分组将在所述序列中跟随所述第一读取返回分组;
读取返回逻辑,用于:
生成包括报头微片和所述第一读取数据的所述第一读取返回分组,其中,所述第一读取返回分组包括与所述第二读取请求相关联的第一事务标识符;以及
生成所述第二读取返回分组,其中,所述第二读取返回分组是不带报头分组并且包括所述第二读取数据。
17.根据权利要求16所述的系统,其中,所述第一读取返回分组还包括将跟随所述报头微片的一个或多个数据微片,并且所述一个或多个数据微片包括所述第一读取数据。
18.根据权利要求17所述的系统,其中,所述一个或多个数据微片中的至少一个数据微片是用与所述第二读取请求相关联的事务标识符来编码的。
19.根据权利要求18所述的系统,其中,所述报头微片是用与所述第一读取请求相关联的事务标识符来编码的。
20.根据权利要求17所述的系统,其中,所述一个或多个数据微片包括至少三个数据微片。
21.根据权利要求16所述的系统,其中,所述调度器还用于识别下一个读取返回的事务标识符是未知的,并且所述读取返回逻辑用于针对在所述下一个读取返回之前的读取请求,在读取返回分组中插入哑的事务标识符。
22.根据权利要求16所述的系统,其中,所述第一读取返回分组将在所述第二读取返回分组之前被发送。
23.根据权利要求16所述的系统,其中,所述第一主机设备包括中央处理单元(CPU)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/578,407 | 2014-12-20 | ||
US14/578,407 US9740646B2 (en) | 2014-12-20 | 2014-12-20 | Early identification in transactional buffered memory |
CN201510812605.5A CN105718391B (zh) | 2014-12-20 | 2015-11-20 | 事务性缓冲式存储器中的提早识别 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510812605.5A Division CN105718391B (zh) | 2014-12-20 | 2015-11-20 | 事务性缓冲式存储器中的提早识别 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108334463A CN108334463A (zh) | 2018-07-27 |
CN108334463B true CN108334463B (zh) | 2021-07-13 |
Family
ID=54703769
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810076092.XA Active CN108334463B (zh) | 2014-12-20 | 2015-11-20 | 事务性缓冲式存储器中的提早识别 |
CN201510812605.5A Active CN105718391B (zh) | 2014-12-20 | 2015-11-20 | 事务性缓冲式存储器中的提早识别 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510812605.5A Active CN105718391B (zh) | 2014-12-20 | 2015-11-20 | 事务性缓冲式存储器中的提早识别 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9740646B2 (zh) |
EP (2) | EP3327578B1 (zh) |
KR (1) | KR101842568B1 (zh) |
CN (2) | CN108334463B (zh) |
TW (1) | TWI604312B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9747048B2 (en) * | 2014-06-02 | 2017-08-29 | Micron Technology, Inc. | Systems and methods for packing data in a scalable memory system protocol |
US10678719B2 (en) * | 2015-10-01 | 2020-06-09 | Rambus Inc. | Memory system with cached memory module operations |
US10644958B2 (en) * | 2016-01-30 | 2020-05-05 | Western Digital Technologies, Inc. | All-connected by virtual wires network of data processing nodes |
EP3825857B1 (en) | 2016-12-05 | 2023-05-03 | Huawei Technologies Co., Ltd. | Method, device, and system for controlling data read/write command in nvme over fabric architecture |
CN107077426B (zh) | 2016-12-05 | 2019-08-02 | 华为技术有限公司 | NVMe over Fabric架构中数据读写命令的控制方法、设备和系统 |
WO2018119778A1 (en) * | 2016-12-28 | 2018-07-05 | Intel Corporation | System and method for vector communication |
US10784986B2 (en) | 2017-02-28 | 2020-09-22 | Intel Corporation | Forward error correction mechanism for peripheral component interconnect-express (PCI-e) |
DE102018001574B4 (de) * | 2018-02-28 | 2019-09-05 | WAGO Verwaltungsgesellschaft mit beschränkter Haftung | Master-Slave Bussystem und Verfahren zum Betrieb eines Bussystems |
US11474967B2 (en) * | 2018-06-25 | 2022-10-18 | Intel Corporation | Systems, methods, and devices for dynamic high speed lane direction switching for asymmetrical interfaces |
KR20200066774A (ko) | 2018-12-03 | 2020-06-11 | 삼성전자주식회사 | 반도체 장치 |
US10771189B2 (en) * | 2018-12-18 | 2020-09-08 | Intel Corporation | Forward error correction mechanism for data transmission across multi-lane links |
US11637657B2 (en) | 2019-02-15 | 2023-04-25 | Intel Corporation | Low-latency forward error correction for high-speed serial links |
US11249837B2 (en) * | 2019-03-01 | 2022-02-15 | Intel Corporation | Flit-based parallel-forward error correction and parity |
US11296994B2 (en) | 2019-05-13 | 2022-04-05 | Intel Corporation | Ordered sets for high-speed interconnects |
CN110362516B (zh) * | 2019-07-23 | 2020-11-10 | 南京凯鼎电子科技有限公司 | 一种提高ddr存储总线利用率的方法和装置 |
US11740958B2 (en) | 2019-11-27 | 2023-08-29 | Intel Corporation | Multi-protocol support on common physical layer |
KR102521902B1 (ko) | 2021-03-23 | 2023-04-17 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 장치 및 그 동작 방법 |
KR102529761B1 (ko) | 2021-03-18 | 2023-05-09 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
KR102496994B1 (ko) | 2021-03-23 | 2023-02-09 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 장치 및 그 동작 방법 |
CN117222992A (zh) * | 2021-06-01 | 2023-12-12 | 微芯片技术股份有限公司 | 用于旁路存储器读取请求检测的系统和方法 |
CN114020662A (zh) * | 2021-11-02 | 2022-02-08 | 上海兆芯集成电路有限公司 | 桥接模块、数据传输系统和数据传输方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1527552A (zh) * | 2003-03-04 | 2004-09-08 | ���ǵ�����ʽ���� | 分组转发系统及其方法 |
JP2006113689A (ja) * | 2004-10-12 | 2006-04-27 | Fujitsu Ltd | バスブリッジ装置およびデータ転送方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7113523B1 (en) | 1997-06-11 | 2006-09-26 | Sony Corporation | Data multiplexing device, program distribution system, program transmission system, pay broadcast system, program transmission method, conditional access system, and data reception device |
US6728816B1 (en) * | 2001-02-09 | 2004-04-27 | Lsi Logic Corporation | Simple mechanism for guaranteeing in order read data return on a split transaction bus |
US7149857B2 (en) * | 2002-05-14 | 2006-12-12 | Micron Technology, Inc. | Out of order DRAM sequencer |
US7620694B2 (en) | 2005-09-27 | 2009-11-17 | Intel Corporation | Early issue of transaction ID |
US7949794B2 (en) * | 2006-11-02 | 2011-05-24 | Intel Corporation | PCI express enhancements and extensions |
US8683126B2 (en) | 2007-07-30 | 2014-03-25 | Nvidia Corporation | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory |
US8090967B2 (en) * | 2008-05-23 | 2012-01-03 | Intel Corporation | Power state transition initiation control of memory interconnect based on early warning signal, memory response time, and wakeup delay |
US8656117B1 (en) * | 2008-10-30 | 2014-02-18 | Nvidia Corporation | Read completion data management |
US8205111B2 (en) * | 2009-01-02 | 2012-06-19 | Intel Corporation | Communicating via an in-die interconnect |
US8713277B2 (en) * | 2010-06-01 | 2014-04-29 | Apple Inc. | Critical word forwarding with adaptive prediction |
CN107045479B (zh) | 2012-10-22 | 2020-09-01 | 英特尔公司 | 高性能互连物理层 |
-
2014
- 2014-12-20 US US14/578,407 patent/US9740646B2/en active Active
-
2015
- 2015-11-18 EP EP18151893.7A patent/EP3327578B1/en active Active
- 2015-11-18 EP EP15195264.5A patent/EP3035199B1/en active Active
- 2015-11-19 KR KR1020150162258A patent/KR101842568B1/ko active IP Right Grant
- 2015-11-19 TW TW104138272A patent/TWI604312B/zh active
- 2015-11-20 CN CN201810076092.XA patent/CN108334463B/zh active Active
- 2015-11-20 CN CN201510812605.5A patent/CN105718391B/zh active Active
-
2017
- 2017-08-04 US US15/669,197 patent/US10198379B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1527552A (zh) * | 2003-03-04 | 2004-09-08 | ���ǵ�����ʽ���� | 分组转发系统及其方法 |
JP2006113689A (ja) * | 2004-10-12 | 2006-04-27 | Fujitsu Ltd | バスブリッジ装置およびデータ転送方法 |
Also Published As
Publication number | Publication date |
---|---|
US10198379B2 (en) | 2019-02-05 |
CN108334463A (zh) | 2018-07-27 |
CN105718391A (zh) | 2016-06-29 |
US20160179718A1 (en) | 2016-06-23 |
US20180060259A1 (en) | 2018-03-01 |
CN105718391B (zh) | 2018-12-11 |
EP3035199B1 (en) | 2018-06-27 |
EP3035199A1 (en) | 2016-06-22 |
US9740646B2 (en) | 2017-08-22 |
TWI604312B (zh) | 2017-11-01 |
EP3327578A1 (en) | 2018-05-30 |
KR20160075312A (ko) | 2016-06-29 |
TW201633165A (zh) | 2016-09-16 |
KR101842568B1 (ko) | 2018-05-14 |
EP3327578B1 (en) | 2020-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108334463B (zh) | 事务性缓冲式存储器中的提早识别 | |
US20230367481A1 (en) | Implied directory state updates | |
CN108829614B (zh) | 缓冲存储器中的推测性读 | |
CN107005371B (zh) | 事务缓冲存储器中的错误处理 | |
CN107438838B (zh) | 打包的写完成 | |
WO2016160202A1 (en) | Two level memory full line writes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |