CN108363637A - 事务缓冲存储器中的错误处理 - Google Patents

事务缓冲存储器中的错误处理 Download PDF

Info

Publication number
CN108363637A
CN108363637A CN201810004370.0A CN201810004370A CN108363637A CN 108363637 A CN108363637 A CN 108363637A CN 201810004370 A CN201810004370 A CN 201810004370A CN 108363637 A CN108363637 A CN 108363637A
Authority
CN
China
Prior art keywords
microplate
data
header
memory
link
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.)
Pending
Application number
CN201810004370.0A
Other languages
English (en)
Inventor
B.S.莫里斯
B.纳尔
R.G.布兰肯希普
E.L.亨德里克森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN108363637A publication Critical patent/CN108363637A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1608Error detection by comparing the output signals of redundant hardware
    • G06F11/1625Error detection by comparing the output signals of redundant hardware in communications, e.g. transmission, interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1654Error detection by comparing the output of redundant processing systems where the output of only one of the redundant processing components can drive the attached hardware, e.g. memory or I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • G06F11/167Error detection by comparing the memory output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0078Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
    • H04L1/0079Formats for control data
    • H04L1/0082Formats for control data fields explicitly indicating existence of error in data being transmitted, e.g. so that downstream stations can avoid decoding erroneous packet; relays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1835Buffer management
    • H04L1/1838Buffer management for semi-reliable protocols, e.g. for less sensitive applications such as streaming video
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0097Relays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

通过链路从存储器缓冲器设备向主机设备发送数据。确定数据中的错误。向主机设备发送读取响应取消信号以向主机设备指示错误,其中将在数据从存储器缓冲器设备发送到主机设备之后发送读取响应取消信号。

Description

事务缓冲存储器中的错误处理
本案为分案申请。其母案的发明名称为“事务缓冲存储器中的错误处理”,申请日为2015年11月23日,申请号为201580063240.9。
相关申请的交叉引用
本申请要求2014年12月20日提交的题为“ERROR HANDLING IN TRANSACTIONALBUFFERED MEMORY”的美国非临时专利申请号14/578,413的权益和优先权,该美国非临时专利申请被整体地通过引用结合到本文中。
技术领域
本公开一般地涉及计算架构领域,并且更具体地涉及缓冲存储器协议。
背景技术
半导体处理和逻辑设计方面的进步使得在集成电路设备上可以存在的逻辑的量中的增加有可能。作为必然的结果,计算机系统配置已经从系统中的单个或多个集成电路演进到在单独集成电路上存在的多个核、多个硬件线程和多个逻辑处理器以及集成在这样的处理器内的其它接口。处理器或集成电路通常包括单个物理处理器管芯,其中处理器管芯可以包括任何数目的核、硬件线程、逻辑处理器、接口、存储器、控制器集线器等。
作为在较小封装中装配较多处理能力的较强能力的结果,较小计算设备已经在流行性方面增加。智能电话、平板电脑、超薄笔记本及其它用户设备已呈指数增长。然而,这些较小设备依赖于用于超过形状因子的复杂处理和数据存储两者的服务器。因此,高性能计算市场(即服务器空间)中的需求也已增加。例如,在现代服务器中,通常不仅存在具有多个核的单个处理器,而且存在多个物理处理器(也称为多个插座)以增加计算能力。但是随着处理能力随着计算系统中的设备的数目一起增加,插座与其它设备之间的通信变得更关键。
事实上,互连已从主要处理电通信的更传统的多分支总线发展成促进快速通信的充分发展的互连架构。遗憾的是,如对未来处理器以甚至更高的速率进行消耗的需求一样,对现有互连架构的能力寄予相应需求。
附图说明
图1图示了根据一个实施例的包括用以连接计算机系统中的I/O设备的串行点到点互连的系统的简化框图。
图2图示了根据一个实施例的分层协议栈的简化框图。
图3图示了事务描述符的实施例。
图4图示了串行点到点链路的实施例。
图5图示了潜在的高性能互连(HPI)系统配置的实施例。
图6图示了与HPI相关联的分层协议栈的实施例。
图7图示了示例状态机的表示。
图8图示了在示例二十通道数据链路上发送的示例微片的表示。
图9图示了在示例八通道数据链路上发送的示例微片的表示。
图10图示了示例多槽(slot)微片的表示。
图11图示了在示例八通道数据链路上发送的示例微片的表示。
图12图示了包括调试消息的示例多层微片的表示。
图13图示了利用缓冲存储器协议的系统的表示。
图14图示了支持缓冲存储器协议的缓冲器设备的表示。
图15A-15C图示了缓冲存储器协议中的示例微片的表示。
图16图示了根据某些实现的缓冲器设备与主机设备之间的示例通信。
图17图示了用于包括多个处理器插座的计算系统的块的实施例。
各种图中同样的参考号码和名称指示同样的元件。
具体实施方式
在以下描述中,阐述了许多特定细节,诸如特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定处理器流水线级、特定互连层、特定分组/事务配置、特定事务名称、特定协议交换、特定链路宽度、特定实现以及操作等的示例,以便提供对本发明的透彻理解。然而,对于本领域技术人员而言可能显而易见的是不一定需要采用这些特定细节来实践本公开的主题。在其它情况下,已避免了已知组件或方法的充分详细的描述,诸如特定和替代处理器架构、用于所描述的算法的特定逻辑电路/代码、特定固件代码、低级互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、用代码的算法的特定表达、特定掉电和选通技术/逻辑及计算机系统的其它特定操作细节,以便避免不必要地使本公开模糊。
虽然可以参考特定集成电路中(诸如计算平台或微处理器中)的能量节省、能量效率、处理效率等来描述以下实施例,但其它实施例适用于其它类型的集成电路和逻辑设备。本文中描述的实施例的类似技术和教导可以应用于也可以受益于这样的特征的其它类型的电路或半导体设备。例如,所公开的实施例不限于服务器计算机系统、台式计算机系统、膝上型计算机、Ultrabooks™,而且可以在其它设备中使用,所述其它设备诸如手持设备、智能电话、平板电脑、其它薄笔记本、片上系统(SOC)设备以及嵌入式应用。手持设备的某些示例包括蜂窝电话、因特网协议设备、数字相机、个人数字助理(PDA)以及手持PC。这里,可以应用用于高性能互连的类似技术来增加低功率互连中的性能(或甚至节省功率)。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或者可以执行下面教导的功能和操作的任何其它系统。此外,本文中描述的装置、方法以及系统不限于物理计算设备,而且可以涉及软件优化以用于能量节省和效率。如在下面的描述中可以容易地变得显而易见的,可以认为本文中描述的方法、装置以及系统的实施例(无论是关于硬件、固件、软件还是其组合)对于与性能考虑平衡的“绿色技术”未来而言是至关重要的。
随着计算系统进步,其中的组件正在变得更复杂。用以在组件之间进行耦合和通信的互连架构在复杂性方面也已增加以确保带宽需求被满足以用于最优组件操作。此外,不同的市场段需要互连架构的不同方面以适合相应市场。例如,服务器要求较高性能,而移动生态系统有时能够为了能量节省而牺牲总体性能。然而,以最大的功率节省提供最高的可能性能是大多数结构的单一目的。进一步地,多种不同的互连可以潜在地受益于本文中描述的主题。
除了其它示例之外,根据本文中描述的一个或多个原理还可以潜在地改进除了其它示例之外的快速外围组件互连(PCI)(PCIe)互连结构架构和快速路径互连(QPI)结构架构。例如,PCIe的主要目标是使得来自不同供应商的组件和设备能够在开放架构中进行互操作,跨越多个市场段;客户端(台式机和移动设备)、服务器(标准和企业)以及嵌入式和通信设备。快速PCI是针对很多种未来计算和通信平台定义的高性能、通用I/O互连。某些PCI属性(诸如其使用模型、加载-存储架构以及软件接口)已通过其校正而被维持,而先前的并行总线实现已被高度可扩展、完全串行的接口替换。快速PCI的最新版本利用点到点互连、基于交换机(switch)的技术以及分组化协议中的进步来递送新的性能和特征水平。功率管理、服务质量(QoS)、热拔插/热调换支持、数据完整性以及错误处理在快速PCI所支持的某些高级特征之中。虽然本文中的主要讨论关于新的高性能互连(HPI)架构,但本文中描述的本发明的各方面可以应用于其它互连架构,诸如PCIe依从架构、QPI依从架构、MIPI依从架构、高性能架构或其它已知互连架构。
参考图1,图示了由将一组组件互连的点到点链路构成的结构的实施例。系统100包括被耦合到控制器集线器115的处理器105和系统存储器110。处理器105可以包括任何处理元件,诸如微处理器、主机处理器、嵌入式处理器、协处理器或其它处理器。处理器105通过前侧总线(FSB)106耦合到控制器集线器115。在一个实施例中,FSB 106是如下面描述的串行点到点互连。在另一实施例中,链路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,所述MCH被耦合到ICH。交换机120并且因此I/O设备125然后被耦合到ICH。I/O模块131和118也将实现分层协议栈以在图形加速器130与控制器集线器115之间通信。类似于上面的MCH讨论,图形控制器或图形加速器130本身可以被集成在处理器105中。
转到图2,图示了分层协议栈的实施例。分层协议栈200可以包括任何形式的分层通信堆栈,诸如QPI栈、PCIe栈、下一代高性能计算互连(HP I)栈或其它分层栈。在一个实施例中,协议栈200可以包括事务层205、链路层210以及物理层220。可以将接口(诸如图1中的接口117、118、121、122、126和131)表示为通信协议栈200。作为通信协议栈的表示还可以称为实现/包括协议栈的模块或接口。
可以使用分组在组件之间传送信息。可以在事务层205和数据链路层210中形成分组以将信息从传输组件载送到接收组件。随着传输的分组流过其它层,其被用在那些层处用来处理分组的附加信息进行扩展。在接收侧处,发生倒转过程,并且分组被从其物理层220表示变换成数据链路层210表示且最终(针对事务层分组)变换成可以被接收设备的事务层205处理的形式。
在一个实施例中,事务层205可以提供设备的处理核与互连架构之间的接口,诸如数据链路层210和物理层220。在该点上,事务层205的主要职责可以包括分组(即,事务层分组或TLP)的装配和分解。事务层还可以管理用于TLP的基于信用的流控制。在某些实现中,可以利用分离事务,即具有被按时间分离的请求和响应的事务,除了其它示例之外还允许链路在目标设备收集用于响应的数据的同时载送其它业务。
基于信用的流控制可以用来利用互连结构而实现虚拟信道和网络。在一个示例中,设备可以针对事务层205中的每个接收缓冲器通告初始信用量。在链路的相对端处的外部设备(诸如图1中的控制器集线器115)可以对每个TLP所消耗的信用的数目进行计数。如果事务未超过信用限制,则事务可以被传输。在接收到响应时,信用的量被恢复。除了其它潜在优点之外,这样的信用方案的优点的一个示例是假如未遭遇信用限制则信用返回的等待时间不影响性能。
在一个实施例中,四个事务地址空间可以包括配置地址空间、存储器地址空间、输入/输出地址空间以及消息地址空间。存储器空间事务包括用以向/从存储器映射位置传送数据的读取请求和写入请求中的一个或多个。在一个实施例中,存储器空间事务能够使用两个不同的地址格式,例如短地址格式(诸如32位地址)或长地址格式(诸如64位地址)。配置空间事务可以用来访问被连接到互连的各种设备的配置空间。到配置空间的事务可以包括读取请求和写入请求。消息空间事务(或者简单地称作消息)还可以被定义成支持互连代理之间的带内通信。因此,在一个示例实施例中,事务层205可以装配分组报头/净荷206。
快速地参考图3,图示了事务层分组描述符的示例实施例。在一个实施例中,事务描述符300可以是用于载送事务信息的机制。在该点上,事务描述符300支持系统中的事务的标识。其它潜在使用包括跟踪默认事务排序的修改和事务与信道的关联。例如,事务描述符300可以包括全局标识符字段302、属性字段304和信道标识符字段306。在所图示的示例中,描绘了全局标识符字段302,其包括本地事务标识符字段308和源标识符字段310。在一个实施例中,全局事务标识符302对于所有未完成请求而言是唯一的。
根据一个实现,本地事务标识符字段308是由请求代理生成的字段,并且对于针对该请求代理要求完成的所有未完成请求而言可以是唯一的。此外,在本示例中,源标识符310唯一地标识互连层级内的请求代理。因此,连同源ID 310一起,本地事务标识符308字段提供层级域内的事务的全局标识。
属性字段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,即标识号或分组号,计算并应用错误检测码,即CRC 212,并且将修改的TLP提交到物理层220以用于跨物理设备至外部设备的传送。
在一个示例中,物理层220包括逻辑子块221和电的子块222,其用以物理上向外部设备传输分组。这里,逻辑子块221负责物理层221的“数字”功能。在该点上,逻辑子块可以包括用以准备外传信息供物理子块222传输的传输部分,以及用以在将接收到的信息传递至链路层210之前对其进行标识和准备的接收部分。
物理块222包括发射机和接收机。发射机被逻辑子块221供应符号,发射机将该符号串行化并传输到外部设备上。接收机被供应来自外部设备的串行化符号并将接收到的信号变换成位流。该位流被反串行化并供应给逻辑子块221。在一个示例实施例中,采用8b/10b传输码,其中传输/接收十位符号。这里,使用特殊符号来设计(frame)具有帧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)不可知论者(agnostic)(即能够在多个不同设备中实现HPI)。在另一场景下,还可以利用HPI来连接高性能I/O设备,不仅仅是处理器或加速器。例如,可以通过适当的转换桥(即HPI至PCIe)将高性能PCIe设备耦合到HPI。此外,许多基于HPI的设备(诸如处理器)可以以各种方式(例如星形、环形、网状等)利用HPI链路。图5图示了多电位多插座配置的示例实现。如所描绘的双插座配置505可以包括两个HPI链路;然而,在其它实现中,可以利用一个HPI链路。对于较大拓扑而言,可以利用任何配置,除了其它附加或代替特征之外,只要标识符(ID)是可分配的且存在某种形式的虚拟路径即可。如所示,在一个示例中,四插座配置510具有从每个处理器到另一个的HPI链路。但是在配置515中所示的八插座实现中,并非每个插座都通过HPI链路相互直接地连接。然而,如果在处理器之间存在虚拟路径或信道,则支持该配置。所支持的处理器的范围在本地域中包括2-32个。除了其它示例之外,还可以通过多个域或节点控制器之间的其它互连的使用来达到较高数目的处理器。
HPI架构包括分层协议架构的定义,其在某些示例中包括协议层(一致、非一致以及可选地包括其它基于存储器的协议)、路由层、链路层以及物理层。此外,除了其他示例之外,HPI还可以进一步包括与功率管理器(诸如功率控制单元(PCU))、用于测试和调试的设计(DFT)、故障处理、寄存器、安全等有关的增强。图5图示了示例HPI分层协议栈的实施例。在某些实现中,图5中图示的层中的至少某些可以是可选的。每个层处理它自己的信息粒度或量水平(协议层605a、b具有分组630、链路层610a、b具有微片635,并且物理层605a、b具有物理微片(phit)640)。注意,在某些实施例中,分组可以基于实现而包括部分微片、单个微片或者多个微片。
作为第一示例,物理微片640的宽度包括链路宽度到位的1对1映射(例如20位链路宽度包括20位的物理微片等)。微片可具有更大的尺寸,诸如184、192或200位。注意,如果物理微片640为20位宽度并且微片635大小为184位,则其采用分数数目的物理微片640来传输一个微片635(除了其他示例之外,还例如采用20位下的9.2个物理微片传输184位微片635或采用20位下的9.6个物理微片传输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可支持多个消息,除了其他示例之外,还诸如请求、监听、响应、写回、非一致数据。
HPI的物理层605a、b(或PHY)可被实现在电层(即连接两个组件的电导体)之上和链路层610a、b之下,如图6中图示的那样。物理层和相应逻辑可驻留于每个代理上并连接在(例如在链路任一侧上的设备上的)相互分离的两个代理(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一致协议的事务。首先,协议可以在代理的高速缓存中的数据之间和在那些数据与存储器中的数据之间基于每个地址(作为示例)来维持数据一致性。非正式地,数据一致性可以指的是代理的高速缓存中的每个有效数据行表示数据的最新值,并且在一致协议分组中传输的数据可以表示数据的在其被发送时的最新值。当在高速缓存中或者在传输中不存在数据的有效拷贝时,协议可以确保数据的最新值驻留在存储器中。其次,协议可以提供用于请求的良好定义的承诺(commitment)点。用于读取的承诺点可以指示数据何时是可使用的;并且对于写入而言,其可以指示写入的数据何时是全局可观察的并将被后续读取加载。协议可以支持一致存储器空间中的用于可高速缓存和不可高速缓存(UC)请求两者的这些承诺点。
在某些实现中,HPI可利用嵌入时钟。时钟信号可嵌入在使用互连传输的数据中。利用嵌入数据中的时钟信号,有区别的和专用的时钟通道可被省略。这可以是有用的,例如,由于其允许专用于数据传送的更多的设备引脚,特别是在用于引脚的空间非常珍贵的系统中。
链路可被建立在互连的任一侧上的两个代理之间。发送数据的代理可以是本地代理并且接收数据的代理可以是远程代理。状态机可以被两个代理用来管理链路的各种方面。在一个实施例中,物理层数据路径可以将微片从链路层传输至电前端。在一个实现中,控制路径包括状态机(也称为链路训练状态机或类似物)。状态机的动作和从状态的退出可取决于内部信号、定时器、外部信号或其他信息。实际上,某些状态,诸如几个初始化状态,可具有定时器,以提供超时值来退出状态。注意,在某些实施例中,检测指的是检测通道的两个分支上的事件;但不一定同时检测。然而,在其他实施例,检测指的是通过参考代理来检测事件。作为一个示例,防反跳(debounce)指的是对信号的持续断言。在一个实施例中,HPI支持非功能通道的事件中的操作。这里,通道可落在特定状态处。
除了其他分类和子分类之外,状态机中定义的状态还可包括重置状态、初始化状态和操作状态。在一个示例中,某些初始化状态可具有辅助定时器,其用于在超时时退出状态(本质上由于未能在状态中取得进展而中止)。中止可包括诸如状态寄存器之类的寄存器的更新。某些状态还可具有(一个或多个)主要定时器,其用于对状态中的主要功能进行定时。除了其他示例之外,其他状态还可被定义成使得内部或外部信号(诸如握手协议)驱动从该状态到另一状态的转变。
状态机还可支持通过单个步骤的调试、对初始化中止的冻结以及测试器的使用。这里,状态退出可被延迟/保持,直到调试软件就绪。在某些情况下,退出可被延迟/保持直到辅助超时。在一个实施例中,动作和退出可基于训练序列的交换。在一个实施例中,链路状态机将在本地代理时钟域中运行,并且从一个状态到下一状态的转变符合发射机训练序列边界。状态寄存器可被用来反映当前状态。
图7图示了在HPI的一个示例实现中由代理使用的至少一部分状态机的表示。应当领会,包括在图7的状态表中的状态包括可能状态的非穷举列表。例如,某些转变被省略以简化图。并且,某些状态可被组合、划分或省略,而其他状态可被增加。这样的状态可包括:
事件重置状态:在暖或冷重置事件时被输入。恢复默认值。初始化计数器(例如,同步计数器)。可退出至另一状态,诸如另一重置状态。
定时重置状态:用于带内重置的定时状态。可驱动预定义的电有序集合(EOS),因此远程接收机能够检测EOS并同样进入定时重置。接收机具有保持电设置的通道。可退出至代理以校准重置状态。
校准重置状态:不在通道上有信令(例如接收机校准状态)或关闭驱动器情况下的校准。可以是基于定时器的在状态中的预定时间量。可设置操作速度。可充当端口未被使能时的等待状态。可包括最小驻留时间。接收机调节或错开(stagger off)可基于设计发生。可在校准的完成和/或超时之后退出至接收机检测状态。
接收机检测状态:检测(一个或多个)通道上的接收机的存在。可寻找接收机终止(例如接收机下拉插入)。可在指定值被设置时或另一指定值未被设置时退出至校准重置状态。如果检测到接收机或达到超时,则可退出至发射机校准状态。
发射机校准状态:用于发射机校准。可以是分配用于发射机校准的定时状态。可包括通道上的信令。可连续地驱动EOS,诸如电空闲退出有序集合(或者EIEOS)。当完成校准时或定时器终止时可退出至依从状态。如果计数器已经终止或已经发生辅助超时,则可退出至发射机检测状态。
发射机检测状态:限定有效信令。可以是握手状态,其中代理基于远程代理信令完成动作并退出至下一状态。接收机可限定来自发射机的有效信令。在一个实施例中,接收机寻找唤醒检测,并且如果在一个或多个通道上防反跳,则在其他通道上寻找它。发射机驱动检测信号。响应于针对所有通道完成防反跳和/或超时或如果所有通道上的防反跳未完成并且存在超时,则可退出至轮询状态。这里,一个或多个监视通道可保持觉醒,以对唤醒信号防反跳。并且如果被防反跳,则潜在地对其他通道防反跳。这可以使能低功率状态中的功率节省。
轮询状态:接收机适配、锁定位(例如,通过初始化漂移缓冲器)、锁定字节(例如,通过标识符号边界)并锁定训练序列边界(例如,通过锁定到电有序集合(EOS)和/或训练序列报头)。然后可以对通道进行偏斜校正。还可以完成握手以退出轮询至若干潜在状态中的一个。例如,可以(由代理)使得退出到链路宽度状态、依从状态、环回标记状态或重置状态中的任何一个。握手可以包括完成各种定义的接收机动作或条件和发送确认消息(ACK)以触发到与动作的已完成集合和ACK对应的状态的退出。针对轮询偏斜校正,可以以针对最高速度的第一长度和针对缓慢速度的第二长度处覆盖(cap)远程发射机处的通道至通道偏斜。偏斜校正可以在缓慢模式以及操作模式下执行。接收机可以具有用以对通道至通道偏斜进行偏斜校正的特定最大值,诸如偏斜的8、16或32个间隔。在某些实现中,接收机动作还可以包括等待时间固定。在一个实施例中,接收机动作可以在有效通道映射的成功偏斜校正时完成。在一个示例中,当与确认一起接收到多个连续训练序列报头且在接收机已完成其动作之后传输具有确认的多个训练序列时,可以实现成功的握手。
依从状态:从轮询状态进入。可以使得代理为用于验证目的的依从主设备或从设备。设备(充当主设备)可以向另一设备(从设备)发送依从模式,并且从设备可以在将其重新定时到其本地时钟之后环回到该模式(例如,没有任何极性倒转或通道逆转的取消)。依从模式可以用来表征当环回不可运行或者不期望时的通道的某个子集上的模拟前端的操作。例如,进入环回可以以成功的字节锁定、TS锁定、偏斜校正、等待时间测试以及依赖于若干片数字逻辑的适当运行的其它测试为先决条件。在实现了位锁定的情况下,可以进入依从,并且除了其它调节之外,依从还可以用于抖动或噪声调查、调试、探索链路。换言之,依从可以在轮询的结果不允许直接进入环回的情况下充当用于轮询的替代退出。依从状态可以用来自主设备的发射机来驱动超序列。接收机在监视器通道上寻找唤醒,对该唤醒进行防反跳,放弃坏通道,适配以及位锁定等。从设备发射机可以驱动依从模式直至其接收机动作完成。然后环回被重新定时且未偏斜校正。从设备接收机完成类似的监视和防反跳等动作。除了其他示例之外,退出还可以是到重置状态(诸如定时重置)或者到用以开始测试的环回模式状态。在退出到环回模式状态的情况下,可以(例如,由软件控制器)将主设备发送到环回模式状态以试验更特殊化的模式。
代理环回标记状态:环回标记是代理状态,但是不同于其它代理状态,主设备和从设备动作和退出可以是不同的。环回从设备可以取消任何极性倒转和/或通道逆转,但是可能不可解扰或再加扰环回位。确认交换不可应用于从设备,因为其正在环回。因为从设备可以在符号边界上环回之前进行偏斜校正,所以可以不迫使主设备进行重新字节锁定或重新偏斜校正,但是主设备可以重新锁定训练序列以避免锁定到某个别名。用以做这的手段可以包括LFSR的重新播种、比较TS和/或EIEOS或者这些的某个组合。SDS的结束标志着环回设置的结束和模式生成、检查和计数的开始。
代理环回模式状态(或阻塞链路状态):从环回标志状态或依从状态进入。在环回模式状态而不是控制模式下,主设备发射机可以发送附加特殊化模式以补充依从或环回模式状态下的那些环回。接收机可以在环回模式中接收特殊化模式并检查接收到的模式中的错误。针对发射机适配,两个代理都可以是主设备。针对预定时段,发射机可以发送模式,并且远程接收机可以比较该模式并确定用于记录在存储元件(诸如寄存器)中的接收到的模式的品质因数或度量。比较方法和度量可以是设计相关的(例如,具有抖动注入的BER)。在该时段结束时,两个代理可以退出至用于反向信道的重置,以检查度量并设置发射机适配的下一个迭代。
链路宽度状态:代理与到远程发射机的最终通道映射进行通信。接收机接收信息并解码。接收机可在第二结构中的先前通道映射值的检查点之后将配置的通道映射记录在结构中。接收机还可利用确认(“ACK”)进行响应。可发起带内重置。作为一个示例,第一状态发起带内重置。在一个实施例中,响应于ACK来执行退出至下一状态,诸如微片配置状态。进一步地,在进入低功率状态之前,如果唤醒检测信号发生的频率降至指定值(例如单位间隔(UI)的每个数目为1,诸如4K UI)之下,则重置信号也可被生成。接收机可保持当前的和先前的通道映射。基于具有不同值的训练序列,发射机可使用不同的通道组。在某些实施例中,通道映射可不修改某些状态寄存器。
微片锁定配置状态:当发射机和接收机两者退出至阻塞链路状态或其他链路状态时,由发射机进入但状态被认为退出(即辅助超时无实际意义)。在一个实施例中,至链路状态的发射机退出包括在接收行星(planetary)对准信号之后的数据序列(SDS)和训练序列(TS)边界的开始。这里,接收机退出可基于从远程发射机接收SDS。该状态可以是从代理到链路状态的桥。接收机标识SDS。如果SDS在去加扰器被初始化之后被接收,则接收机可退出至阻塞链路状态(BLS)(或控制窗口)。如果超时发生,退出可以到重置状态。发射机利用配置信号驱动通道。基于条件或超时,发射机退出可以到重置、BLS或其他状态。
传输链路状态:链路状态。微片被发送至远程代理。可从阻塞链路状态进入并在诸如超时之类的事件时返回到阻塞链路状态。发射机传输微片。接收机接收微片。还可退出至低功率链路状态。在某些实现中,传输链路状态(TLS)可以被称为L0状态。
阻塞链路状态:链路状态。发射机和接收机以统一的方式进行操作。可以是定时状态,在此期间链路层微片被拖延而物理层信息被传送至远程代理。可退出至低功率链路状态(或基于设计的其他链路状态)。在一个实施例中,阻塞链路状态(BLS)周期性地发生。该周期被称为BLS间隔并且可被定时,以及可在缓慢速度和操作速度之间有所不同。注意,可周期性地阻塞链路层以免发送微片,使得一定长度的物理层控制序列可被发送,诸如在传输链路状态或部分宽度传输链路状态期间。在某些实现中,阻塞链路状态(BLS)可称为L0控制或L0c状态。
部分宽度传输链路状态:链路状态。可通过进入部分宽度状态而节省功率。在一个实施例中,非对称部分宽度指的是具有不同的宽度的双向链路的每个方向,其可在某些设计中被支持。在图9的示例中示出了诸如发射机之类的发起器的示例,其发送部分宽度指示以进入部分宽度传输链路状态。这里,部分宽度指示被发送,同时利用第一宽度在链路上传输,以将链路进行转变以在新的第二宽度下进行传输。失配可导致重置。注意,速度可能不改变但宽度可能改变。因此,潜在地以不同的宽度发送微片。可类似于逻辑地传输链路状态;然而,因为存在更小的宽度,所以可能花费较长时间传输微片。可退出至其他链路状态,诸如基于某些接收和发送的消息的低功率链路状态,或者基于其他事件的部分宽度传输链路状态或链路阻塞状态的退出。在一个实施例中,发射机端口可以交错的方式将空闲通道关闭以提供如时序图中示出的更好的信号完整性(即噪声减轻)。这里,可在链路宽度改变的时段期间利用非可重试微片,诸如空微片。相应接收机可丢弃这些空微片并以交错方式关闭空闲通道,以及在一个或多个结构中记录当前的和先前的通道映射。注意,状态和相关联的状态寄存器可保持不变。在某些实现中,部分宽度传输链路状态可称为部分L0或L0p状态。
退出部分宽度传输链路状态:退出部分宽度状态。在某些实现中,可使用或可不使用阻塞链路状态。在一个实施例中,发射机通过在空闲通道上发送部分宽度退出模式来发起退出以对其进行训练和偏斜校正。作为一个示例,退出模式开始于EIEOS,其被检测并对通道准备好开始进入完全传输链路状态的信号防反跳,并可以以空闲通道上的SDS或快速训练序列(FTS)结束。在退出序列期间的任何失败(接收机动作,诸如在超时之前偏斜校正未完成)停止到链路层的微片传送并且断言重置,其通过在下一阻塞链路状态发生时重置链路来处理。SDS还可将通道上的加扰器/去加扰器初始化为适当的值。
低功率链路状态:是较低功率状态。在一个实施例中,其是比部分宽度链路状态更低的功率,因为在该实施例中信令在所有通道上和双方向上被停止。发射机可使用阻塞链路状态以用于请求低功率链路状态。这里,接收机可解码请求并用ACK或NAK进行响应;否则重置可被触发。在某些实现中,低功率链路状态可称为L1状态。
在某些实现中,例如当状态的状态动作(诸如某些校准和配置)已被完成时,状态转变可被促进以允许状态被绕过。链路的先前状态结果和配置可被存储并重用于链路的后续初始化和配置中。可绕过相应状态,而不是重复这样的配置和状态动作。然而,实现状态绕过的传统系统常常实现复杂的设计和昂贵的验证转义(escape)。在一个示例中,诸如在状态动作不需要被重复的情况下,HPI可利用一定状态中的短定时器,而不是使用传统绕过。除了其他潜在优点之外,这还可以潜在地虑及较多统一和同步的状态机转变。
在一个示例中,基于软件的控制器(如,通过针对物理层的外部控制点)可以使能针对一个或多个特定状态的短定时器。例如,针对动作已被执行和存储的状态,该状态可被短定时,以促进从该状态快速退出至下一状态。然而,如果先前状态动作失败或不能应用在短定时器持续时间内,则状态退出可被执行。进一步地,例如当状态动作应当被重新执行时,控制器可禁用短定时器。可以针对每个相应状态设置长的或默认的定时器。如果在该状态下的配置动作不能在长定时器内完成,则状态退出可能发生。长定时器可被设置到合理的持续时间以便允许状态动作的完成。相反,短定时器可能相当更短,从而使其在某些情况下不可能在没有向后参考先前执行状态动作的情况下执行该状态动作,除了其他示例之外。
在某些情况下,在链路的初始化(或重新初始化)期间,随着代理通过状态机朝着操作链路状态前进,可能发生使得状态重置(例如,至重置或其它状态)的一个或多个故障或状态退出。实际上,链路的初始化可以在没有完成初始化并进入链路状态的情况下循环通过一个或多个状态。在一个示例中,可以针对链路的初始化内的状态转变中的无结果的循环的数目维持计数。例如,每当初始化在没有到达链路状态的情况下返回至重置状态时,计数器可以加1。一旦链路成功地进入链路状态,就可以针对该链路重置计数器。这样的计数器可以由在链路的两侧上的代理维持。进一步地,可以由例如基于软件的控制器利用一个或多个外部控制点来设置阈值。当无结果的循环的计数满足(或超过)定义的阈值时,可以挂起(例如,在重置状态时或之前设置并保持)链路的初始化。在某些实现中,为了重新开始初始化并将初始化从挂起状态释放,基于软件的控制器可以触发链路的重新开始或重新初始化。在某些情况下,基于软件的工具可以分析挂起的初始化的性质并执行诊断、设置寄存器值以及执行其它操作,以便防止初始化的进一步循环。事实上,在某些实现中,控制器可以设置较高计数器阈值或者甚至除了其他示例之外还与重新开始挂起的链路初始化相结合地覆写计数器。
在HPI的某些实现中,超序列的可被定义,每个超序列对应于相应状态或进入到相应状态/从相应状态退出。超序列可包括数据集合和符号的重复序列。在某些情况下,序列可重复,除了其他示例之外,直到状态或状态转变的完成或相应事件的通信。在某些情况下,超序列的重复序列可根据定义的频率,诸如定义的单位间隔(UI)的数目,进行重复。单位间隔(UI)可对应于用于在链路或系统的通道上传输单个位的时间间隔。在某些实现中,重复序列可开始于电有序集合(EOS)。因此,可预期EOS的实例根据预定义的频率进行重复。除了其他示例之外,这样的有序集合还可被实现为定义的16字节代码,其可按十六进制格式来表示。在一个示例中,超序列的EOS可以是EIEIOS。在一个示例中,EIEOS可类似低频率时钟信号(例如,重复FF00或FFF000十六进制符号,等等)。预定义的数据集合可遵循EOS,诸如预定义数目的训练序列或其他数据。除了其他示例之外,这样的超序列还可被用于状态转变中,所述状态转变包括链路状态转变和初始化。
在互连的某些实现中,诸如在QPI中,诸如当链路被重置或初始化时,可以引起并完成串行数据链路的终止。该方法可以向链路的初始化中引入复杂性和时间。在HPI的某些实现中,可以维持包括在链路的重置或重新初始化期间的链路的终止。进一步地,HPI可以允许设备的热拔插。当通过热拔插或者以其它方式引入另一设备时,其上被添加新远程代理的通道的电压特性将改变。本地代理可以感测通道电压中的这些变化以检测远程代理的存在和促进链路的初始化。可以在状态机中定义状态机状态和定时器以在没有终止的情况下协调链路的检测、配置以及初始化。
在一个实现中,HPI可以通过由接收代理针对传入信令进行通道的筛查、在不改变终止值的情况下、支持带内重置时的重新初始化。该信令可以用来标识好通道。作为示例,可以针对将由发射机设备发送以促进链路的发现和配置的一组预定义信号中的任何一个来筛查通道。在一个示例中,可以定义对应于一个或多个初始化或重新初始化任务的超序列。预定义序列可以包括电空闲退出有序集合(EIEOS),后面是附加序列数据。在某些情况下,随着在通道的任一侧上的每个设备变成活动的,设备可以开始发送对应于特定初始化状态的超序列等。在一个实施例中,可以支持两个类型的引脚重置;通电(或“冷”)重置和热重置。由软件发起或源自于一个代理上(在物理或另一层中)的重置可以被带内传送至另一代理。然而,由于嵌入式时钟的使用,可以通过使用有序集合(诸如特定电有序集合或EIOS)至另一代理的传送来处理带内重置。
可以在初始化期间发送有序集合,并且可以在初始化之后发送PHY控制序列(或“阻塞链路状态”)。阻塞链路状态可以阻止链路层发送微片。作为另一示例,可以阻止链路层业务发送可以在接收机处丢弃的几个空微片。
如上面介绍的,在一个实施例中,最初可以以低速完成初始化,后面是以快速的初始化。以低速的初始化将默认值用于寄存器和定时器。软件然后使用低速链路来设置寄存器、定时器和电参数,并且将校准信号清零以便为快速初始化做好准备。作为一个示例,初始化可以由诸如重置、检测、轮询、依从和配置之类的状态或任务组成,除了潜在地其它的之外。
在一个示例中,链路层阻塞控制序列(即阻塞链路状态(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等。半字节中的位可被发送以便进行重叠或被交织(例如,“拌和(swizzle)”),除了其他考虑之外,还使得微片的较高优先级字段被较早地呈现,错误检测属性(例如,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可被发送。半字节0、2、4、6、8、11、13、16、18、21、23、26、28、31、33、36、38、41、43和46可在下一4UI期间被发送。在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.6个UI周期内发送每个微片。
在某些情况下,拌和可导致周期性的“整洁的(clean)”微片边界。例如,在图8的示例中,开始的5个微片边界(第一微片的顶行)也可称为整洁的微片边界,因为所有通道都传输来自同一微片的开始的半字节。代理链路层逻辑可被配置成标识通道的拌和并可从拌和的位重建微片。另外,物理层逻辑可包括用于基于当时使用的通道数目标识何时以及如何拌和微片数据的流的功能。事实上,在从一个链路宽度状态至另一个的转变中,代理可将它们本身配置成标识数据流的拌和将如何被采用。
如上面提到的那样,链路可在通道宽度之间转变,在某些情况下以原始的或完全的宽度进行操作,并稍后转变为利用更少通道的部分宽度(以及从其转变)。在某些情况下,微片的定义宽度可以是由通道数目可除的。例如,图9的示例图示了这样的示例,其中在8通道链路上传输先前示例的192位微片。如图9中表示的那样,192位微片的4位半字节可在8通道上均匀地分布和传输(即,因为192是8的倍数)。事实上,当以8通道部分宽度进行操作时,可通过24 UI来发送单个微片。进一步地,每个微片边界在图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以处理不利用较大消息净荷的那些消息,诸如确认、信用返回等。另外,可以提供浮动(floating)净荷字段,其允许替代地应用附加的11位以补充槽0或槽1的净荷字段。
继续图10的特定示例,其它字段对于微片而言可以是全局的(即,跨微片应用而不应用于特定槽)。例如,可以提供报头位连同4位微片控制字段,除了其他示例之外,其还可以被用来指定诸如微片的虚拟网络之类的信息,标识微片将被如何编码。另外,除了其它潜在示例之外,还可以诸如通过16位循环CRC字段来提供错误控制功能。
可以定义微片格式,从而优化链路层上的消息的吞吐量。某些传统协议已利用无槽的较小微片。例如,在QPI中利用80位微片。虽然较大(例如,192位微片)的微片吞吐量可能较低,但可以通过优化微片数据的使用来增加消息或分组吞吐量。例如,在QPI的某些实现中,利用整个80位微片空间而不管消息尺寸或类型。通过将较大微片细分成预定长度和字段的槽,可以优化192微片长度,甚至在当可用槽中的一个或多个有时未使用时的情况下实现较高效率。事实上,可以将链路层业务假设成包括许多不同类型的消息和业务,其包括具有不同的报头长度和字段的消息和分组。可以定义在微片中定义的槽的相应长度和组织,从而与各种消息的统计或预期频率及这些消息的需要对应。例如,可以针对每个小槽定义两个较大槽,除了其他示例之外,还用以使用这些较大消息类型和报头长度来适应消息传送的预期统计频率。进一步地,还可以提供灵活性以进一步适应变化的业务,诸如通过使净荷字段浮动,如在图10的示例中那样。在某些情况下,微片格式可以是固定的,包括专用于微片中的特定槽的位。
在图10的示例中,可以一般地为微片提供“Hdr”字段且“Hdr”字段表示用于微片的报头指示。在某些情况下,Hdr字段可以指示微片是报头微片还是数据微片。在数据微片中,微片仍可以保持有槽,但是省略或者用净荷数据来替换某些字段的使用。在某些情况下,数据字段可以包括操作码和净荷数据。在报头微片的情况下,可以提供多种报头字段。在图10的示例中,可以针对每个槽提供“Oc”字段,Qc字段表示操作码。类似地,一个或多个槽可以具有表示将包括在槽中的相应分组的消息类型的相应“msg”字段,假如槽被设计成处理这样的分组类型等的话。除了其它潜在字段之外,“DNID”字段可以表示目的节点ID,“TID”字段可以表示事务或跟踪器ID,“RHTID”字段可以表示请求者节点ID或归属跟踪器ID。进一步地,可以给一个或多个槽提供净荷字段。另外,除了其他示例之外,还可以在微片内包括CRC字段以为微片提供CRC值。
在某些实现中,链路宽度可以在链路的寿命期间变化。例如,物理层可以在链路宽度状态之间(诸如向和从全或原始通道宽度和不同或部分通道宽度)转变。例如,在某些实现中,可以将链路初始化以在20个通道上传送数据。稍后,链路可以转变至部分宽度传输状态,其中只有8个通道被主动地使用,除了许多其它潜在示例。除了其他示例之外,还可以例如结合由一个或多个功率控制单元(PCU)支配的功率管理任务来利用这样的通道宽度转变。
如上面提到的那样,链路宽度可以影响微片吞吐速率。图11是在8通道链路上发送的导致24 UI下的微片的吞吐量的示例192位微片的表示。进一步地,如图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位或“半字节”的连续分组来传输微片的位。在本示例中,将在8通道链路上传送192位微片。因为192是8的倍数,所以可以在24 UI中通过8通道链路来整洁地传送整个微片。在其它情况下,微片宽度可以不是活动通道的数目的倍数。例如,图9示出了通过20个通道传送的示例192位的另一表示。因为192不可被20均匀地除,所以整个微片的传送将要求非整数个间隔(例如,9.6 UI)。在这样的情况下,可以用前一微片的最后几位来传送第二重叠微片,而不是浪费在传送的第10 UI期间未被利用的“额外”通道。在某些实现中,微片的这样的重叠或搅和可能导致交错的微片边界和无序地发送的微片位。被用于传送的模式可以被配置成允许在微片中较早地传送微片的较时间敏感的字段、保留错误检测和校正,除了其它考虑之外。可以在物理和链路层中的一者或两者中提供逻辑以根据这样的模式来传送微片位并基于当前链路宽度而动态地在模式之间改变。除了其他示例之外,还可以提供另一逻辑以将这样的搅和或排序的位流重新排序并从其重构微片。
在某些实现中,可以将微片表征为报头微片(例如,承载分组报头数据)或数据微片(例如,承载分组净荷数据)。返回图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位)内并使带宽的利用率最大化。在一个情况下,微片可以包括三个槽;槽0、1和2。槽0和1中的每个可以包括50位净荷字段。可以提供浮动字段以替代地通过浮动字段的字段长度(例如,11位)来扩展槽0或槽1的净荷字段。浮动字段的使用可以进一步扩展通过定义的多槽微片格式提供的效率增益。微片内的槽的尺寸确定以及可以置于每个槽中的消息的类型可以潜在地甚至在降低的微片速率的情况下提供增加的带宽。
在图10的特定示例中,可以优化可以使用槽1和2的消息,以减少要留出以对这些槽的操作码进行编码的位的数目。当具有槽0可以提供的较多位的报头进入链路层时,可以提供开槽(slotting)算法以允许其接管用于附加空间的槽1净荷位。还可以提供特殊控制(例如LLCTRL)微片,其消耗值用于其需要的位的全部三个槽。针对其中链路部分地忙碌的情况,还可以存在开槽算法以允许利用单独的槽,而其它槽不承载信息。
在一个实施例中,链路层可以另外定义可以例如用于调试消息及其它用途的特殊控制微片。在一个示例中,当使能调试控制字段被设置时,可以通过链路层传输LLCTRL-调试微片。当该位未被设置时,不可在链路上发送LLCTRL-调试微片。调试分组可能对于暴露被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-l。如上面提到的那样,在某些实现中,缓冲存储器协议互连可以基于GPIO协议,因为缓冲存储器协议的物理和链路层基于GPIO协议(例如,HPI)的相同物理和链路层定义。虽然在图13中未图示,但CPU 1305、1310可以进一步连接到使用GPIO协议的一个或多个下游设备。
如在图13的示例中进一步所示,缓冲器设备1315a-l可以被连接到存储器设备,诸如双列直插式存储器模块(DIMM)设备。可以认为对应于每个缓冲器设备的存储器对于缓冲器设备被连接到的CPU(例如,1305、1301)而言是本地的。然而,其它设备(包括另一CPU)可以使用GPIO协议依从链路用其它插座来访问存储器。在某些实现中,运行缓冲存储器协议的端口可能仅支持用于与存储器通信的命令,并且仅支持缓冲存储器协议(即,不是GPIO协议和缓冲存储器协议)。另外,在某些实现中,GPIO互连协议可以支持路由并指示这样的信息(例如,在其分组中),诸如请求和目的地节点标识符。另一方面,缓冲存储器协议可以是不利用路由的点到点接口。因此,可以在使用缓冲存储器接口中发送的分组中省去在GPIO协议中使用的某些字段。代之以,除了其他示例之外,还可以指定供在载送地址解码信息主机至缓冲器时使用的字段。
在其它实现中,缓冲器设备1315a-l可以支持两级存储器拓扑,其具有充当用于较大、较慢存储器(例如,非易失性存储器)的高速缓存的一定量的快速存储器(例如,DRAM)。在一个这样的实现中,除了其他示例之外,缓冲器设备1315a-l中的一个或多个可以使用DDR作近的快速存储器并使用事务DDR DIMM作为较大的“远”存储器。事务DIMM可以利用协议(例如,DDR事务(DDR-T))来使用事务命令向易失性存储器单列直插式存储器模块(SIMM)进行通信。
转到图14,呈现了简化框图1400,其示出了被连接到近和远存储器模块(例如,1405、1410)的缓冲器芯片1315的较详细表示。如在上面的示例中提到的那样,缓冲器芯片1315可以通过利用定义的缓冲存储器协议的缓冲存储器协议互连链路1415通信地耦合到CPU设备1305。缓冲器芯片1315可以包括用以执行附加功能的逻辑。例如,缓冲器芯片1315的实现可以包括存储器控制器1420、调度器1425、流控制逻辑1430以及错误检测逻辑1435。可以使用硬件电路、固件和/或软件来实现逻辑。
在某些实现中,存储器控制器1420可以包括用以将请求转换成其存储器设备的存储器特定协议(例如,DDR4)的逻辑。存储器控制器1420可以从使用链路1415与缓冲器芯片1315通信的CPU 1305(或另一主机)的主机控制器逻辑1440提取这些存储器特定协议的细节。主机控制器逻辑1440可以将CPU(或主机)地址翻译成存储器地址,除了其它功能之外还包括跨信道和插座的置换。调度器1425可以包括用以将对请求的响应重排序并进行冲裁以便实现更高性能的逻辑。缓冲器芯片1315可以另外提供诸如流控制和错误检测之类的特征。在某些实现中,流控制逻辑1430可以体现在调度器1425中或者否则与调度器1425互操作以确保缓冲器芯片1315的更高效率和更高性能。错误检测逻辑1440可以包括用以支持错误校正码检测方案的逻辑以及用于发起对检测到的错误的校正或处理的逻辑。
如上面提到的那样,缓冲存储器协议的链路层可以基于GPIO协议的链路层。例如,在缓冲存储器协议中可以利用(例如,在图10中描述和示出的)HPI协议的192位3槽微片。缓冲存储器协议中的分组可以体现整个命令。可以将分组实现为一个或多个微片。图15A-15C可以表示缓冲存储器协议中的微片的实现。在某些实现中,可以经由有报头和无报头存储器数据(MemData)分组的组合将读取数据从缓冲器设备发送回到主机。可以在三个无报头微片(而不是五个,如同有报头微片那样)中传送整个高速缓存线。无报头分组从而可以在可能是接口的最受约束的部分的东西上提供较高吞吐量。为了适配到三个微片中,无报头分组去除多个字段并做出关于其值的假设。做出的假设可能对于大多数但并非所有读取返回而言为真。如果任何假设都为真,则将使用有报头分组,其包含所有字段。在某些实现中,有报头分组可以开始读取返回序列以允许及早地标识跟踪器标识符(例如,HTID、RTID等),供在事务缓冲存储器协议中将读取返回映射成读取请求时使用。
在某些实现中,无报头分组可以包含表1中概述的信息:
表1:无报头分组字段
字段 描述
数据 512 64字节高速缓存线数据
目录 2 两个目录位,其被与数据一起存储,一般地作为ECC位的部分
HTID 11 请求事务ID。由于及早的HTID,分组包含用于下一读取数据分组的HTID
CRC 48 16位/每个微片的CRC
HIB 3 报头指示位。每个微片一个。该位对于无报头分组的每个微片而言始终是零。
进一步地,图15A-15C图示了可以用来在读取返回中传输整个高速缓存线的三个微片(例如,微片0(在图15A处)、微片1(在图15B处)以及微片2(在图15C处))的序列。表2提供了在无报头分组中利用的三个微片的示例的概要:
表2:无报头分组
微片 内容
数据微片0 来自高速缓存线的第一32字节的数据
数据微片1 第一32字节的其余部分加上第二32字节的第一部分
数据微片2 第二32字节的其余部分
HIB位可以被设置成指示分组是有报头还是无报头的。HIB可以被设置成指示仅用于在报头微片之后的数据微片的无报头分组。这允许某些其它分组在分组的中间被交织。当交织的分组完成时,可以在微片中用HIB=0发送原始有报头分组的数据部分。此技术还可以用来通过插入空微片来延迟数据分组。在某些实现中,当将正常地要求报头时,通过为0的HIB位用信号发送无报头分组的开始。所有其它分组(包括空微片)可以包含具有设置的HIB位的报头。
如上面介绍的那样,有报头分组在长度上可以为总共五个微片,并且可以包括一个报头微片和4个数据微片。为了减少空闲等待时间,有报头微片可以发送数据微片1两次。第一次将其与仅来自第一32字节的数据一起发送,并且称为微片1a。这允许在数据的第二32字节可从存储器设备获得之前发送微片。结果是数据的关键32字节大块针对空闲情况更早地到达主机处。然后可以第二次发送微片1,这次完成。其将包含第一32字节数据部分的重复加第二32字节部分。表3描述了有报头分组的五个微片:
表3:有报头分组
微片 内容
报头 分组报头
数据微片0 来自高速缓存线的第一32字节的数据
数据微片1a 仅第一32字节的其余部分。第二32字节部分被保留。其它微片净荷位(RTID[6:3])与数据微片1相同。
数据微片1 完成微片1。第一32字节部分被重新发送。还包括第二32字节部分。
数据微片2 第二32字节的其余部分
在某些实现中,有报头MemData分组可以不取消,并且后面是数据微片。直到知道还可以发送数据才将不发送报头。在报头被发送之前,全高速缓存线可能未被累积在缓冲器中。
系统可能对等待时间特别敏感。存储器等待时间可能对于CPU性能而言是关键的。在某些实现中,可以对由缓冲器设备向CPU返回或者要返回的数据检查错误,使得错误在被发送到其它设备上之前被校正或包含。这样的错误监视、检测以及处理可以引入附加等待时间开销。某些解决方案可能涉及在缓冲器设备和/或CPU处保持数据,直至保证检测到并包含任何数据错误。在某些情况下,除了其它缺陷之外,某些类型的错误可能特别罕见,并且通过在允许转发进展之前保持用于数据检测的每个微片或分组引入的附加开销可能不证明保持要保证每个微片的益处合理。
在某些实现中,缓冲器设备的存储器控制器可以在数据一从相应存储器设备到达(即,在数据已被检查错误之前)就将数据发送到CPU。虽然如此,缓冲器设备可以处理发送的数据的拷贝以确定发送的数据是否拥有任何错误。例如,缓冲器设备错误检测逻辑可以针对ECC、CRC或其它错误而检查发送的数据。在另一情况下,可以分析与高速缓存线数据相关联的元数据以除了其他示例之外还基于数据的高速缓存状态、目录状态或另一属性来确定是否可以使用该数据。可以由缓冲器设备与由CPU发送的数据的处理并行地执行错误分析。如果检测到错误,则缓冲器设备可以向CPU发送取消消息以使得数据在被从CPU向前发送之前取消。
转到图16,示出了图1600,其表示存储器数据通过(诸如上面在示例中描述的)缓冲存储器接口从缓冲器设备1315到CPU 1305的发送。CPU 1305然后可以将返回的数据转发到目的地设备1605上,诸如另一CPU或另一主机设备。
可以响应于CPU 1305的读取请求而将存储器数据作为读取返回从缓冲器设备1315发送到CPU 1305。例如,缓冲器芯片1315可以从已连接存储器设备(未示出)获取数据并在读取响应1610中发送数据。在本示例中,可以在由缓冲器设备1315对数据检查错误之前在读取响应1610中发送数据。在发送读取响应1610之后,缓冲器设备1315可以执行数据的错误检查1615。同时,可以在CPU 1305处接收读取响应1610。CPU 1305可以处理1620读取响应,为将数据发送到目的地设备1605做准备。处理1620可以包括与如下有关的任务:除了其他示例之外,标识读取响应1610所属于的事务、执行路由确定以评定将在哪里转发读取响应数据。可以在CPU继续处理1620读取响应1610的同时完成错误检查1615。在检测到错误的情况下,缓冲器设备1315可以发送消息以提醒CPU。然而,在错误检查1615的示例中,未确定错误,并且CPU 1305不间断地继续以将已处理数据(例如,在1625处)发送到目的地设备1605。
继续图16的示例,可以响应于读取请求而使另一读取响应1635返回到CPU1305。可以在读取响应1635在到CPU 1305的运送中的同时在缓冲器设备1315处执行相应错误检查1630。然而,在本示例中,在CPU 1305处理1640读取响应1635的同时,缓冲器设备1630可以检测到涉及读取响应1635的错误,并且可以向CPU 1305发送取消消息1645。与确定错误(在1630处)相关联的等待时间可以小于用于传输读取响应1635并在CPU 1305处对其进行处理(在1640处)的组合等待时间。因此,取消消息1645可以在CPU 1305将数据向前发送到其它设备(例如,1605)之前到达CPU 1305,并且CPU可以响应于取消消息1645而取消响应数据的进一步传输。缓冲器设备1315可以记录存储器错误,并且CPU可以丢弃响应并等待其被重新发送。
在某些情况下,可以发送早读取的标识符以帮助减少CPU处的等待时间。例如,存储器访问链路协议可以提供早事务标识符的发送,诸如在2014年12月20日提交且被通过引用结合到本文中的题为“Early Identification in Transactional Buffered Memory”的美国专利申请序号14/578,407中所描述的那样。在某些实现中,缓冲器设备甚至可以取消已发送这样的早读取标识符或其数据的部分的事务。得到的等待时间优化流水线因此在发送读取数据之前不等待所有相关性被解决,有效地虑及读取数据的推测返回(即,因为可以在目的地主机设备(例如,1305)处的接收之后取消返回的读取数据)。这可以涉及将主机设备(或缓冲器设备)配置成能够响应于读取返回取消消息(例如,1645)而丢弃正在运行的事务(例如,使其数据的一部分而不是全部被从缓冲器设备发送到主机的事务)。
HPI和关联缓冲存储器访问协议可以被结合在任何种类的计算设备和系统中,除了其他示例之外,所述计算设备和系统还包括主机、服务器系统、个人计算机、移动计算机(诸如平板电脑、智能电话、个人数字系统等)、智能器具、游戏或娱乐控制台和机顶盒。例如,参考图17,示出了根据本发明的实施例的第二系统1700的框图。如图17中所示,多处理器系统1700是点到点互连系统,并且包括经由点到点互连1750耦合的第一处理器1770和第二处理器1780。处理器1770和1780中的每个可以是处理器的某个版本。在一个实施例中,1752和1754是串行点到点一致互连结构(诸如高性能架构)的部分。因此,可以在QPI架构内实现本发明。
虽然仅被示出具有两个处理器1770、1780,但应理解,本发明的范围不被如此限制。在其它实施例中,在给定处理器中可以存在一个或多个附加处理器。处理器1770和1780被示出分别地包括集成存储器控制器单元1772和1782。处理器1770还包括点到点(P-P)接口1776和1778,作为其总线控制器单元的部分;类似地,第二处理器1780包括P-P接口1786和1788。处理器1770、1780可以使用P-P接口电路1778、1788经由点到点(P-P)接口1750来交换信息。如图17中所示,IMC 1772和1782将处理器耦合到相应存储器,即存储器1732和存储器1734,其可以是被本地附着到相应处理器的主存储器的部分。
处理器1770、1780每个使用点到点接口电路1776、1794、1786、1798经由单独P-P接口1752、1754与芯片组1790交换信息。芯片组1790还沿着高性能图形互连1739经由接口电路1792与高性能图形电路1738交换信息。
共享高速缓存(未示出)可以被包括在任一处理器中或者在两个处理器外部;但是经由P-P互连与处理器连接,使得如果处理器被置于低功率模式中,则任一个或两个处理器的本地高速缓存信息可以被存储在共享高速缓存中。
芯片组1790可以经由接口1796耦合到第一总线1716。在一个实施例中,第一总线1716可以是外围组件互连(PCI)总线,或者诸如快速PCI总线或另一第三代I/O互连总线之类的总线,但本发明的范围不被如此限制。
如图17中所示,各种I/O设备被耦合到第一总线1716连同将第一总线1716耦合到第二总线1720的总线桥接器1718。在一个实施例中,第二总线1720包括低引脚计数(LPC)总线。在一个实施例中,各种设备被耦合到第二总线1720,包括例如键盘和/或鼠标1722、通信设备1727和存储单元1728,诸如盘驱动器或常常包括指令/代码和数据1730的其它大容量存储设备。进一步地,示出了被耦合到第二总线1720的音频I/O 1724。注意,其它架构是可能的,其中所包括的组件和互连架构变化。例如,代替图17的点到点架构,系统可以实现多分支总线或其它这样的架构。
虽然已经相对于有限数目的实施例描述了本发明,但是本领域技术人员将领会从其的许多修改和变型。意图所附权利要求涵盖所有这样的修改和变型,如落入本发明的真正精神和范围内。
设计可经历各种阶段,从创建到仿真到制造。表示设计的数据可以以多个方式表示设计。首先,如在仿真中有用的,可以使用硬件描述语言或另一功能描述语言来表示硬件。另外,可在设计过程的某些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计,在某个阶段,在硬件模型中达到表示各种设备的物理放置的数据的水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定针对用于用来产生集成电路的掩模的不同掩模层上的各种特征的存在或缺乏的数据。在设计的任何表示中,可以以任何形式的机器可读介质来存储数据。存储器或者磁或光贮存器,诸如盘,可以是机器可读介质,用以存储经由光或电波传输的信息,光或电波被调制或否则生成以传输这样的信息。当指示或携带代码或设计的电载波被传输时,在电信号的复制、缓冲或重传被执行的程度上,进行新的复制。因此,通信提供者或网络提供者可在有形的机器可读介质上至少暂时存储诸如编码到载波中的信息的物品,以体现本发明的实施例的技术。
如本文中使用的模块指的是硬件、软件和/或固件的任何组合。作为示例,模块包括与非瞬时介质相关联的硬件,诸如微控制器,以存储被适配成由微控制器执行的代码,因此,在一个实施例中,对模块的引用指的是硬件,其被具体配置成识别和/或执行将保持在非瞬时介质上的代码。此外,在另一实施例中,模块的使用指的是包括代码的非瞬时介质,所述代码被具体适配成由微控制器执行以实行预定操作。并且如可以推断的,在又一实施例中,术语模块(在该示例中)可以指的是微控制器和非瞬时介质的组合。常常被图示为分离的模块边界通常变化并且潜在地重叠。例如,第一和第二模块可共享硬件、软件、固件或其组合,同时潜在地保留某些独立硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,诸如晶体管、寄存器或其他硬件,诸如可编程逻辑器件。
在一个实施例中,用语“被配置成”的使用指的是布置、放一起、制造,许诺销售、进口和/或设计装置、硬件、逻辑或元件以执行指定的或确定的任务。在该示例中,如果未正在操作的装置或其元件被设计、耦合和/或互连以执行所述指定的任务,则其仍“被配置成”执行指定的任务。作为纯粹说明性的示例,逻辑门可在操作期间提供0或1。但“被配置成”向时钟提供使能信号的逻辑门不包括可提供1或0的每个潜在逻辑门。代之以,逻辑门是以在操作期间1或0输出将使能时钟的某种方式耦合的逻辑门。再一次注意,术语“被配置成”的使用不需要操作,但代之以集中在装置、硬件和/或元件的潜在状态,其中装置、硬件和/或元件的潜在状态被设计成当装置、硬件和/或元件操作时执行特定任务。
此外,在一个实施例中,用语“以”、“能够/有能力”和/或“可操作以”指的是以使能以指定方式使用装置、逻辑、硬件和/或元件的这样的方式设计的某些装置、逻辑、硬件和/或元件。如上面注意的,在一个实施例中,以、有能力或可操作以的使用指的是装置、逻辑、硬件和/或元件的潜在状态,其中装置、逻辑、硬件和/或元件未正在操作但被以使能以指定方式使用装置的这样的方式来设计。
如本文所使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。常常,逻辑电平、逻辑值或逻辑上的值的使用也称为1和0,其仅表示二进制逻辑状态。例如,1指的是高逻辑电平并且0指的是低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元可以能够保持单个逻辑值或多个逻辑值。然而,计算机系统中的值的其他表示已被使用。例如十进制数10还可被表示为二进制值1010和十六进制字母A。因此,值包括能够被保持在计算机系统中的信息的任何表示。
此外,状态可由值或值的部分来表示。例如,第一值,诸如逻辑1,可表示默认或初始状态,而第二值,诸如逻辑0,可表示非默认状态。此外,在一个实施例中,术语重置和设置分别指的是默认和更新的值或状态。例如,默认值潜在地包括高逻辑值,即重置,而更新的值潜在地包括低逻辑值,即设置。注意,值的任何组合可被用于表示任何数目的状态。
上面阐述的方法、硬件、软件、固件或代码的实施例可经由存储在可由处理元件执行的机器可访问、机器可读、计算机可访问或计算机可读的介质上的指令或代码来实现。非瞬时机器可访问/可读介质包括提供(即,存储和/或传输)以由诸如计算机或电子系统之类的机器可读形式的信息的任何机构。例如,非瞬时机器可访问介质包括随机存取存储器(RAM),诸如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声学存储设备;用于保持从自瞬时(传播的)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等等,其将区别于可从其中接收信息的非瞬时介质。
可以用于将逻辑编程以执行本发明的实施例的指令存储在系统中的存储器内,所述存储器诸如DRAM、高速缓存、闪存或其他贮存器。此外,指令可经由网络或借助于其他计算机可读介质来分发。因此机器可读介质可包括用于以由机器(例如,计算机)可读的形式存储或传输信息的任何机构,但不限于软盘、光盘、致密盘只读存储器(CD-ROM)、以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光学卡、闪存或有形机器可读贮存器,其用在经由电、光、声学或其他形式的传播的信号(例如,载波、红外信号、数字信号等)通过因特网信息的传输中。因此,计算机可读介质包括任何类型的有形机器可读介质,其适于存储或传输以由机器(例如,计算机)可读的形式的电子指令或信息。
以下示例关于根据本说明书的实施例。一个或多个实施例可以提供用以通过链路从存储器缓冲器设备向主机设备发送数据、确定数据中的错误并且向主机设备发送读取响应取消信号以向主机设备指示错误的装置、系统、机器可读贮存器、机器可读介质、基于硬件和/或软件的逻辑以及方法,其中将在数据从存储器缓冲器设备发送到主机设备之后发送读取响应取消信号。
在至少一个示例中,读取响应取消信号将取消由主机设备进行的数据的进一步传输。
在至少一个示例中,将在事务中在多个微片中发送数据,并针对所述多个微片中的特定一个检测错误。
在至少一个示例中,保持在错误的检测之后在所述多个微片中的至少一个附加微片中发送数据的至少一部分。
在至少一个示例中,将基于错误的检测而取消所述至少一个附加微片。
在至少一个示例中,链路包括事务缓冲存储器链路。
在至少一个示例中,错误包括错误校正码(ECC)错误。
在至少一个示例中,错误检测器和事务取消逻辑被包括在存储器缓冲器设备中。
在至少一个示例中,用以确定错误的等待时间小于用以向主机设备发送数据并在主机设备要将数据转发到另一设备之前在主机设备处处理数据的等待时间。
在至少一个示例中,数据包括响应于主机设备的读取请求的读取返回。
在至少一个示例中,通过链路从主机设备接收读取返回。
在至少一个示例中,将通过链路发送读取响应取消信号。
一个或多个实施例可以提供包括如下的方法、装置、系统、机器可读贮存器、机器可读介质、基于硬件和/或软件的逻辑:通过存储器访问链路向缓冲器设备发送读取请求的缓冲存储器发射机、响应于读取请求而接收读取返回的缓冲存储器接收机,以及处理读取返回以用于通过另一互连链路发送到主机设备的路由逻辑。缓冲存储器接收机进一步将在读取返回的处理期间从缓冲器设备接收取消信号,该取消信号将指示缓冲器设备检测到读取返回的数据中的错误,并且提供取消逻辑以基于取消信号而取消数据到主机设备的发送。
在至少一个示例中,存储器访问链路遵守缓冲存储器链路协议,并且另一互连线路遵守不同的链路协议。
在至少一个示例中,存储器链路协议包括事务存储器链路协议。
在至少一个示例中,存储器链路协议结合不同的链路协议的物理层和链路层。
在至少一个示例中,所述不同的链路协议包括通用输入/输出(GPIO)互连协议。
一个或多个实施例可以提供一种系统,其包括第一主机设备、使用遵守通用输入/输出(GPIO)链路协议的特定链路连接到第一主机设备的第二主机设备,以及使用遵守存储器访问链路协议的缓冲存储器链路连接到第一主机设备的缓冲器设备。缓冲器设备将通过缓冲存储器链路从存储器缓冲器设备向第一主机设备发送数据,确定数据中的错误,并且向第一主机设备发送取消信号以向主机设备指示错误。将在数据被从缓冲器设备发送到第一主机设备之后发送取消信号。
在至少一个示例中,第一主机设备将向缓冲器设备发送读取请求,并且将响应于读取请求由缓冲器设备返回数据。
在至少一个示例中,数据将被第一主机设备通过特定链路转发到第二主机设备,第一主机设备在接收到取消信号之前开始处理数据,并且将基于取消信号而取消数据到第二主机设备的转发。
贯穿本说明书对“一个实施例”或“实施例”的引用意味着结合实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,贯穿说明书在各个地方中出现用语“在一个实施例中”或“在实施例中”不一定全部指的是相同的实施例。此外,可以在一个或多个实施例中以任何合适的方式组合特定特征、结构或特性。
在前述说明书中,已参考特定示例性实施例给出详细描述。然而,将显然的是,可以在不脱离如所附权利要求中阐述的本发明较广泛的精神和范围的情况下,对其进行各种修改和改变。因此,将在说明性意义而不是限制性意义上看待说明书和附图。此外,实施例的前述用途和其他示例性语言不一定指的是相同实施例或相同示例,并且可指的是不同的和有区别的实施例,也潜在地指的是相同实施例。

Claims (25)

1.一种装置,包括:
缓冲器芯片,其包括:
存储器控制器,用以与存储器对接并将存储器请求转换成与存储器对应的存储器特定协议;
接收机,用以通过事务存储器链路从处理器设备接收特定存储器请求;
发射机,用以向处理器设备发送读取返回,读取返回包括多个分组,其中所述多个分组包括初始的有报头分组,后面是无报头分组,有报头分组包括报头微片和第一数目的数据微片,无报头分组包括第二数目的数据微片,第二数目小于第一数目,报头微片包括与第一数目的数据微片中的数据对应的请求事务标识符(TID),第一数目的数据微片中的每个包括与第二数目的数据微片中的数据对应的TID,并且第二数目的数据微片中的每个包括针对后续无报头分组中的数据的TID。
2.权利要求1的装置,其中第一数目的数据微片包括四个数据微片,并且第二数目的数据微片包括三个数据微片。
3.权利要求1-2中任一项的装置,其中无报头分组省略报头微片。
4.权利要求1-3中任一项的装置,其中无报头分组中的数据微片中的每个省略有报头分组的数据微片中包括的字段。
5.权利要求1-4中任一项的装置,其中报头微片的报头标识位(HIB)是二进制1,并且数据微片中的每个的HIB是二进制0。
6.权利要求1-5中任一项的装置,其中要在有报头分组和无报头分组中的一个或二者的微片之间发送一个或多个空微片。
7.权利要求1-6中任一项的装置,其中存储器特定协议包括DDR4。
8.一种方法,包括:
通过事务存储器链路从处理器设备接收特定存储器请求,其中特定存储器请求与特定存储器对应;
生成到处理器设备的读取返回,读取返回包括多个分组,其中所述多个分组包括初始的有报头分组,后面是无报头分组,有报头分组包括报头微片和第一数目的数据微片,无报头分组包括第二数目的数据微片,第二数目小于第一数目,报头微片包括与第一数目的数据微片中的数据对应的请求事务标识符(TID),第一数目的数据微片中的每个包括与第二数目的数据微片中的数据对应的TID,并且第二数目的数据微片中的每个包括针对后续无报头分组中的数据的TID;以及
响应于特定存储器请求,向处理器设备发送读取返回。
9.权利要求8的方法,进一步包括将特定存储器请求转换成与存储器对应的存储器特定协议。
10.权利要求9的方法,其中存储器特定协议包括DDR4。
11.权利要求8-10中任一项的方法,其中第一数目的数据微片包括四个数据微片,并且第二数目的数据微片包括三个数据微片。
12.权利要求8-11中任一项的方法,其中无报头分组省略报头微片。
13.权利要求8-12中任一项的方法,其中无报头分组中的数据微片中的每个省略有报头分组的数据微片中包括的字段。
14.权利要求8-13中任一项的方法,其中报头微片的报头标识位(HIB)是二进制1,并且数据微片中的每个的HIB是二进制0。
15.权利要求8-14中任一项的方法,其中要在有报头分组和无报头分组中的一个或二者的微片之间发送一个或多个空微片。
16.一种系统,包括用以执行权利要求8-15中任一项的方法的部件。
17.权利要求16的系统,其中部件包括其上存储有指令的计算机可读存储介质,指令在被机器执行时使得机器实行权利要求8-15中任一项的方法的至少一部分。
18.一种系统,包括:
第一设备;
存储器元件;以及
事务存储器缓冲器芯片,其包括:
存储器控制器,用以与存储器元件对接并将存储器请求转换成与存储器元件对应的存储器特定协议;
接收机,用以通过事务存储器链路从第一设备接收特定存储器请求;
发射机,用以向第一设备发送读取返回,读取返回包括多个分组,其中所述多个分组包括初始的有报头分组,后面是无报头分组,有报头分组包括报头微片和第一数目的数据微片,无报头分组包括第二数目的数据微片,第二数目小于第一数目,报头微片包括与第一数目的数据微片中的数据对应的请求事务标识符(TID),第一数目的数据微片中的每个包括与第二数目的数据微片中的数据对应的TID,并且第二数目的数据微片中的每个包括针对后续无报头分组中的数据的TID。
19.权利要求18的系统,其中第一设备包括处理器设备。
20.权利要求18的系统,其中第一数目的数据微片包括四个数据微片,并且第二数目的数据微片包括三个数据微片。
21.权利要求18的系统,其中无报头分组省略报头微片。
22.权利要求18的系统,其中无报头分组中的数据微片中的每个省略有报头分组的数据微片中包括的字段。
23.权利要求18的系统,其中报头微片的报头标识位(HIB)是二进制1,并且数据微片中的每个的HIB是二进制0。
24.权利要求18的系统,其中要在有报头分组和无报头分组中的一个或二者的微片之间发送一个或多个空微片。
25.权利要求18的系统,其中存储器特定协议包括DDR4。
CN201810004370.0A 2014-12-20 2015-11-23 事务缓冲存储器中的错误处理 Pending CN108363637A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/578413 2014-12-20
US14/578,413 US9632862B2 (en) 2014-12-20 2014-12-20 Error handling in transactional buffered memory
CN201580063240.9A CN107005371B (zh) 2014-12-20 2015-11-23 事务缓冲存储器中的错误处理

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201580063240.9A Division CN107005371B (zh) 2014-12-20 2015-11-23 事务缓冲存储器中的错误处理

Publications (1)

Publication Number Publication Date
CN108363637A true CN108363637A (zh) 2018-08-03

Family

ID=56127298

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201810004370.0A Pending CN108363637A (zh) 2014-12-20 2015-11-23 事务缓冲存储器中的错误处理
CN201580063240.9A Active CN107005371B (zh) 2014-12-20 2015-11-23 事务缓冲存储器中的错误处理

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201580063240.9A Active CN107005371B (zh) 2014-12-20 2015-11-23 事务缓冲存储器中的错误处理

Country Status (5)

Country Link
US (2) US9632862B2 (zh)
EP (2) EP3373146A1 (zh)
CN (2) CN108363637A (zh)
TW (2) TWI605464B (zh)
WO (1) WO2016099813A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109271108A (zh) * 2018-09-03 2019-01-25 青岛镕铭半导体有限公司 一种存储器控制装置及数据存储设备

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9632862B2 (en) 2014-12-20 2017-04-25 Intel Corporation Error handling in transactional buffered memory
US10838898B2 (en) * 2017-12-05 2020-11-17 Qualcomm Incorporated Bit-interleaved bi-directional transmissions on a multi-drop bus for time-critical data exchange
TWI671637B (zh) * 2018-04-25 2019-09-11 點序科技股份有限公司 記憶體管理裝置及其操作方法
CN109508247B (zh) * 2018-11-09 2022-02-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
US11775470B2 (en) * 2019-11-20 2023-10-03 Intel Corporation Transaction layer packet format
US11740958B2 (en) 2019-11-27 2023-08-29 Intel Corporation Multi-protocol support on common physical layer
US11886312B2 (en) * 2020-04-07 2024-01-30 Intel Corporation Characterizing error correlation based on error logging for computer buses
US12056029B2 (en) 2020-07-27 2024-08-06 Intel Corporation In-system validation of interconnects by error injection and measurement
US11539623B2 (en) 2020-08-31 2022-12-27 Micron Technology, Inc. Single field for encoding multiple elements
US11360920B2 (en) 2020-08-31 2022-06-14 Micron Technology, Inc. Mapping high-speed, point-to-point interface channels to packet virtual channels
US11418455B2 (en) 2020-08-31 2022-08-16 Micron Technology, Inc. Transparent packet splitting and recombining
US11412075B2 (en) 2020-08-31 2022-08-09 Micron Technology, Inc. Multiple protocol header processing
US11296995B2 (en) 2020-08-31 2022-04-05 Micron Technology, Inc. Reduced sized encoding of packet length field

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101326494A (zh) * 2005-12-15 2008-12-17 英特尔公司 协调硬件事务存储器事务和软件事务存储器事务对存储单元的访问
CN101673255A (zh) * 2009-10-21 2010-03-17 威盛电子股份有限公司 通用串行总线主机控制器和通用串行总线主机控制方法
US7734980B2 (en) * 2005-06-24 2010-06-08 Intel Corporation Mitigating silent data corruption in a buffered memory module architecture
CN102436490A (zh) * 2010-10-28 2012-05-02 微软公司 多功能存储器内数据库恢复
CN102819503A (zh) * 2011-06-01 2012-12-12 国际商业机器公司 光纤信道输入/输出数据路由系统和方法
CN103597453A (zh) * 2011-06-10 2014-02-19 国际商业机器公司 用于测试耦合设施的操作员消息命令
US20140115208A1 (en) * 2012-10-22 2014-04-24 Jeff Willey Control messaging in multislot link layer flit
CN104137083A (zh) * 2012-12-28 2014-11-05 松下电器产业株式会社 接口装置及存储器总线系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5165023A (en) * 1986-12-17 1992-11-17 Massachusetts Institute Of Technology Parallel processing system with processor array and network communications system for transmitting messages of variable length
US6370621B1 (en) 1998-12-21 2002-04-09 Advanced Micro Devices, Inc. Memory cancel response optionally cancelling memory controller's providing of data in response to a read operation
US6493843B1 (en) * 1999-10-28 2002-12-10 Hewlett-Packard Company Chipkill for a low end server or workstation
US7818646B1 (en) * 2003-11-12 2010-10-19 Hewlett-Packard Development Company, L.P. Expectation based event verification
US7562285B2 (en) 2006-01-11 2009-07-14 Rambus Inc. Unidirectional error code transfer for a bidirectional data link
US8127309B1 (en) * 2006-11-10 2012-02-28 Marvell International Ltd. Secure digital input/output interface system
US7949931B2 (en) * 2007-01-02 2011-05-24 International Business Machines Corporation Systems and methods for error detection in a memory system
JP5035176B2 (ja) * 2008-08-21 2012-09-26 富士通株式会社 伝送システム、伝送装置および伝送方法
US8250435B2 (en) 2009-09-15 2012-08-21 Intel Corporation Memory error detection and/or correction
CN102480346B (zh) * 2010-11-26 2014-12-10 中国科学院声学研究所 一种网络数据可靠传输方法
CN103141050B (zh) * 2011-12-28 2014-11-05 华为技术有限公司 快速通道互联系统中数据包重传方法、节点
CN102629898B (zh) * 2012-04-11 2014-12-10 华为技术有限公司 数据传输方法、设备及系统
US9479196B2 (en) * 2012-10-22 2016-10-25 Intel Corporation High performance interconnect link layer
KR101861312B1 (ko) * 2012-10-22 2018-05-28 인텔 코포레이션 다중슬롯 링크 계층 플릿에서의 제어 메시징
US8990640B2 (en) 2012-11-16 2015-03-24 International Business Machines Corporation Selective posted data error detection based on request type
US9298525B2 (en) * 2012-12-04 2016-03-29 Accenture Global Services Limited Adaptive fault diagnosis
US9176799B2 (en) * 2012-12-31 2015-11-03 Advanced Micro Devices, Inc. Hop-by-hop error detection in a server system
US9632862B2 (en) 2014-12-20 2017-04-25 Intel Corporation Error handling in transactional buffered memory

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7734980B2 (en) * 2005-06-24 2010-06-08 Intel Corporation Mitigating silent data corruption in a buffered memory module architecture
CN101326494A (zh) * 2005-12-15 2008-12-17 英特尔公司 协调硬件事务存储器事务和软件事务存储器事务对存储单元的访问
CN101673255A (zh) * 2009-10-21 2010-03-17 威盛电子股份有限公司 通用串行总线主机控制器和通用串行总线主机控制方法
CN102436490A (zh) * 2010-10-28 2012-05-02 微软公司 多功能存储器内数据库恢复
CN102819503A (zh) * 2011-06-01 2012-12-12 国际商业机器公司 光纤信道输入/输出数据路由系统和方法
CN103597453A (zh) * 2011-06-10 2014-02-19 国际商业机器公司 用于测试耦合设施的操作员消息命令
US20140115208A1 (en) * 2012-10-22 2014-04-24 Jeff Willey Control messaging in multislot link layer flit
CN104137083A (zh) * 2012-12-28 2014-11-05 松下电器产业株式会社 接口装置及存储器总线系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109271108A (zh) * 2018-09-03 2019-01-25 青岛镕铭半导体有限公司 一种存储器控制装置及数据存储设备
CN109271108B (zh) * 2018-09-03 2021-11-30 青岛镕铭半导体有限公司 一种存储器控制装置及数据存储设备

Also Published As

Publication number Publication date
EP3373146A1 (en) 2018-09-12
EP3234778A1 (en) 2017-10-25
EP3234778B1 (en) 2023-08-09
US9632862B2 (en) 2017-04-25
WO2016099813A1 (en) 2016-06-23
CN107005371A (zh) 2017-08-01
TWI605464B (zh) 2017-11-11
US20160179610A1 (en) 2016-06-23
TWI671751B (zh) 2019-09-11
TW201824294A (zh) 2018-07-01
US20170322841A1 (en) 2017-11-09
CN107005371B (zh) 2021-10-15
EP3234778A4 (en) 2018-08-22
TW201631600A (zh) 2016-09-01
US10360096B2 (en) 2019-07-23

Similar Documents

Publication Publication Date Title
CN108363637A (zh) 事务缓冲存储器中的错误处理
US11741030B2 (en) High performance interconnect
CN105718391B (zh) 事务性缓冲式存储器中的提早识别
CN108829614B (zh) 缓冲存储器中的推测性读
CN107438838B (zh) 打包的写完成
KR101848379B1 (ko) 공유 메모리 링크 내의 저전력 진입
US10140213B2 (en) Two level memory full line writes
US10248325B2 (en) Implied directory state updates
TWI710222B (zh) 高性能中繼器

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