CN113900852A - 表征和裕度化用于互连的多电压信号编码 - Google Patents
表征和裕度化用于互连的多电压信号编码 Download PDFInfo
- Publication number
- CN113900852A CN113900852A CN202011563982.7A CN202011563982A CN113900852A CN 113900852 A CN113900852 A CN 113900852A CN 202011563982 A CN202011563982 A CN 202011563982A CN 113900852 A CN113900852 A CN 113900852A
- Authority
- CN
- China
- Prior art keywords
- error
- flit
- counter
- errors
- incrementing
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0057—Block codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0061—Error detection codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0061—Error detection codes
- H04L1/0063—Single parity check
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/007—Unequal error protection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/20—Arrangements for detecting or preventing errors in the information received using signal quality detector
- H04L1/203—Details of error rate determination, e.g. BER, FER or WER
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/20—Arrangements for detecting or preventing errors in the information received using signal quality detector
- H04L1/205—Arrangements for detecting or preventing errors in the information received using signal quality detector jitter monitoring
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0072—Error control for data other than payload data, e.g. control data
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Microcomputers (AREA)
Abstract
系统和装置可以包括接收器,该接收器包括用于跨链路接收流量控制单元(Flit)的端口,该链路包括多个通道。接收器还可以包括:错误检测电路,其用于确定Flit中的错误;错误计数器,其用于对接收到的错误的数量进行计数,该错误计数器用于基于由错误检测电路在Flit中检测到的错误而递增;Flit计数器,其用于对接收到的Flit的数量进行计数,该Flit计数器用于基于接收到Flit而递增;以及误比特率逻辑,其用于基于由错误计数器记录的计数和由Flit计数器指示的接收到的位数来确定误比特率。所述系统和装置可以应用所述过程以在接收器处执行直接BER测量。
Description
相关申请的交叉引用
根据美国专利法第119条e款,本申请要求享有于2020年7月6日提交的序列号为63/048,537的题为“CHARACTERIZING AND MARGINING MULTI-VOLTAGE SIGNAL ENCODINGFOR INTERCONNECTS”的美国临时专利申请的权益,该申请的全部内容通过引用被并入本文。
背景技术
随着针对每一代PCIe的串行互连中的数据速率的提高,跨链路的每个通道的误比特率(BER)被预期为10-12。随着链路的通道数的增加,BER可能受到以下各项的影响:串扰;符号间干扰(ISI);以及由插槽、通孔、板、连接器、和附加卡(AIC)等引起的信道损耗。在针对下一代数据速率(例如,64GT/s的PCIe Gen 6以及下一代的CXL和UPI数据速率)部署PAM-4编码的情况下,目标BER更高,为10-6。
附图说明
图1示出了包括多核处理器的计算系统的框图的实施例。
图2A-2B是根据本公开的实施例的包括一个或多个重定时器的示例链路的简化的框图。
图3是根据本公开的实施例的用于支持多个互连协议的公共物理层(公共PHY)的示意图。
图4A-4B是示出根据本公开的实施例的包括Flit错误计数器和抖动插入电路的协议栈内的示例电路和逻辑的示意图。
图5是示出根据本公开的实施例的用于对错误进行计数的各种示例计数器的示意图。
图6A是根据本公开的实施例的用于在接收器中递增计数器的过程流程图。
图6B是根据本公开的实施例的用于基于针对SKiP有序集合的奇偶错误校验来递增计数器的过程流程图。
图7是示出根据本公开的实施例的用于抖动信号生成的示例PAM-4电压电平、编码、以及DC0平衡值的示意图。
图8是根据本公开的实施例的用于在Flit中插入和处理抖动的发送器和接收器处的过程流程图。
图9是根据本公开的实施例的用于在接收器处执行链路测试的过程流程图。
图10示出了包括互连架构的计算系统的实施例。
图11示出了包括分层栈的互连架构的实施例。
图12示出了在互连架构内要被生成或接收的请求或分组的实施例。
图13示出了用于互连架构的发送器和接收器对的实施例。
图14示出了包括处理器的计算系统的框图的另一实施例。
图15示出了包括多个处理器插槽的计算系统的框的实施例。
附图未按比例进行绘制。
具体实施方式
在以下描述中,阐述了许多特定细节,例如以下各项的示例:特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器流水线阶段和操作等,以便提供对本公开的透彻的理解。然而,对于本领域技术人员将显而易见的是,不需要采用这些特定细节来实践本公开。在其他实例中,为了避免不必要地使本公开难以理解,尚未详细地描述公知的组件或方法(例如,特定和替代的处理器架构、针对所描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实施方式、代码中的算法的特定表达、特定掉电和门控技术/逻辑以及计算机系统的其他特定操作的细节)。
尽管以下实施例可以参考在特定集成电路中(例如,在计算平台或微处理器中)的节能和能效来描述,但是其他实施例是可应用于其他类型的集成电路和逻辑设备的。本文所描述的实施例的类似的技术和教导可以应用于其他类型的电路或半导体设备,这些电路或半导体设备也可以受益于更好的能效和节能。例如,所公开的实施例不限于台式计算机系统或UltrabooksTM。并且还可以在其他设备中使用,这些设备例如,手持设备、平板计算机、其他轻薄型笔记本电脑、片上系统(SOC)设备、以及嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或可以执行下面教导的功能和操作的任何其他系统。此外,本文所描述的装置、方法和系统不限于物理计算设备,而是还可以涉及用于节能和能效的软件优化。如在以下描述中将变得容易显而易见的,本文所描述的方法、装置和系统的实施例(无论是参考硬件、固件、软件还是其组合)对于用性能考量平衡的“绿色技术”未来是至关重要的。
随着计算系统正在发展,其中的组件正在变得越来越复杂。因此,用于在组件之间耦合和通信的互连架构的复杂性也在增加,以确保带宽要求被满足用于最佳的组件操作。此外,不同的市场细分需要互连架构的不同的方面来满足市场的需求。例如,服务器要求更高的性能,而移动生态系统有时能够牺牲整体性能来省电。但是,大多数结构的单一目的是在最大省电的情况下提供最高可能的性能。下面,讨论了多个互连,这将潜在地受益于本文所描述的公开的各个方面。
参考图1,描绘了包括多核处理器的计算系统的框图的实施例。处理器100包括任何处理器或处理设备(例如,微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(SOC)、或用于执行代码的其他设备)。在一个实施例中,处理器100包括至少两个核心——核心101和102,核心101和102可以包括非对称核心或对称核心(示出的实施例)。然而,处理器100可以包括可以是对称或非对称的任何数量的处理元件。
在一个实施例中,处理元件指代用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核心、和/或能够保持处理器状态(例如,执行状态或架构状态)的任何其他元件。换言之,在一个实施例中,处理元件指代能够独立地与诸如软件线程、操作系统、应用或其他代码之类的代码相关联的任何硬件。物理处理器(或处理器插槽)通常指代集成电路,该集成电路潜在地包括任何数量的其他处理元件(例如,核心或硬件线程)。
核心通常指代位于集成电路上的能够维持独立架构状态的逻辑,其中,每个独立维持的架构状态与至少一些专用执行资源相关联。与核心形成对比,硬件线程通常指代位于集成电路上的能够维持独立架构状态的任何逻辑,其中,独立维持的架构状态共享对执行资源的访问。如可以看出的,当某些资源被共享而其他资源专用于架构状态时,在硬件线程的命名法与核心之间的线重叠。但是通常,核心和硬件线程被操作系统视为个体的逻辑处理器,其中,操作系统能够个体地调度每个逻辑处理器上的操作。
如图1所示,物理处理器100包括两个核心——核心101和102。这里,核心101和102被认为是对称核心,即,具有相同配置、功能单元和/或逻辑的核心。在另一实施例中,核心101包括无序处理器核心,而核心102包括有序处理器核心。然而,可以从任何类型的核心(例如,原生核心、软件管理的核心、适于执行原生指令集合架构(ISA)的核心、适于执行转换后的指令集合架构(ISA)的核心、共同设计的核心、或其他已知的核心)中个体地选择核心101和102。在异构的核心环境(即,非对称核心)中,某种形式的转换(例如,二进制转换)可以用于在一个或两个核心上调度或执行代码。但是为了进一步的讨论,由于核心102中的单元在所描绘的实施例中以类似的方式进行操作,因此下面更详细地描述了在核心101中示出的功能单元。
如所描绘的,核心101包括两个硬件线程101a和101b,所述硬件线程也可以被称为硬件线程槽101a和101b。因此,在一个实施例中,诸如操作系统之类的软件实体潜在地将处理器100视为四个单独的处理器,即,能够同时执行四个软件线程的四个逻辑处理器或处理元件。如上所述,第一线程与架构状态寄存器101a相关联,第二线程与架构状态寄存器101b相关联,第三线程与架构状态寄存器102a相关联,并且第四线程与架构状态寄存器102b相关联。这里,如上面所描述的,可以将架构状态寄存器(101a、101b、102a和102b)中的每一个称为处理元件、线程槽或线程单元。如图所示,架构状态寄存器101a在架构状态寄存器101b中被复制,因此能够为逻辑处理器101a和逻辑处理器101b存储个体的架构状态/上下文。在核心101中,还可以针对线程101a和101b复制其他较小的资源(例如,分配器和重命名器块130中的指令指针和重命名逻辑)。可以通过分区来共享一些资源(例如,重排序/退役单元135中的重排序缓冲器、ILTB 120、加载/存储缓冲器、以及队列)。其他资源(例如,通用内部寄存器、页表基址寄存器、低级数据高速缓存和数据TLB 115、执行单元140、以及无序单元135的部分)是潜在地完全共享的。
处理器100通常包括其他资源,这些资源可以被完全共享、通过分区共享、或者由/对处理元件专用。在图1中,示出了具有处理器的说明性的逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可以包括或省略这些功能单元中的任一项,以及包括未描绘的任何其他已知的功能单元、逻辑或固件。如图所示,核心101包括简化的、代表性的无序(OOO)处理器核心。但是在不同的实施例中可以利用有序处理器。OOO核心包括:分支目标缓冲器120,其用于预测要被执行/采用的分支;以及指令转换缓冲器(I-TLB)120,其用于存储针对指令的地址转换条目。
核心101进一步包括被耦合到提取单元120以解码被提取的元素的解码模块125。在一个实施例中,提取逻辑包括分别与线程槽101a、101b相关联的个体的定序器。通常,核心101与第一ISA相关联,该第一ISA定义/指定在处理器100上可执行的指令。通常,作为第一ISA的一部分的机器代码指令包括指令的一部分(被称为操作码),其引用/指定了要被执行的指令或操作。解码逻辑125包括这样的电路:从其操作码识别这些指令,并且将解码后的指令传递到流水线中,以进行由第一ISA定义的处理。例如,如下面更详细地讨论的,在一个实施例中,解码器125包括被设计为或适于识别特定指令(例如,事务指令)的逻辑。作为由解码器125识别的结果,架构或核心101采取特定的预定义的行动来执行与适当的指令相关联的任务。重要的是要注意,本文所描述的任务、块、操作和方法中的任一项都可以响应于单个或多个指令来执行;其中的一些指令可以是新指令或旧指令。注意,在一个实施例中,解码器126识别相同的ISA(或其子集)。可替代地,在异构的核心环境中,解码器126识别第二ISA(第一ISA的子集或不同的ISA)。
在一个示例中,分配器和重命名器块130包括分配器,该分配器用于预留资源(例如,寄存器文件),以存储指令处理结果。然而,线程101a和101b潜在地能够无序执行,其中,分配器和重命名器块130还预留了其他资源(例如,重排序缓冲器)以跟踪指令结果。单元130还可以包括寄存器重命名器,以将程序/指令引用寄存器重命名为处理器100内部的其他寄存器。重排序/退役单元135包括诸如上面提到的重排序缓冲器、加载缓冲器和存储缓冲器之类的组件,以支持无序执行,以及无序执行的指令的之后的顺序退役。
在一个实施例中,调度器和执行单元块140包括调度器单元,该调度器单元用于调度执行单元上的指令/操作。例如,在具有可用的浮点执行单元的执行单元端口上调度浮点指令。还包括与执行单元相关联的寄存器文件,以存储信息指令处理结果。示例性执行单元包括浮点执行单元、整数执行单元、跳转(jump)执行单元、加载执行单元、存储执行单元、以及其他已知的执行单元。
较低级别的数据高速缓存和数据转换缓冲器(D-TLB)150被耦合到执行单元140。数据高速缓存用于存储近期使用/操作的元素(例如,数据操作数),这些元素被潜在地保持在存储器一致性状态中。D-TLB用于存储近期的虚拟/线性地址到物理地址的转换。作为特定示例,处理器可以包括页面表结构以将物理存储器分成多个虚拟的页面。
这里,核心101和102共享对更高级别或更远的高速缓存(例如,与片上接口110相关联的第二级高速缓存)的访问。注意,更高级别或更远指代增加或更远离执行单元的高速缓存级别。在一个实施例中,较高级别的高速缓存是最后一级数据高速缓存(处理器100上的存储器层级中的最后一级高速缓存,例如,第二或第三级数据高速缓存)。然而,较高级别的高速缓存不限于此,这是因为它可以与指令高速缓存相关联或者包括指令高速缓存。替代地,可以在解码器125之后耦合跟踪高速缓存(一种类型的指令高速缓存),以存储近期解码的跟踪。这里,指令潜在地指代宏指令(即,由解码器识别的一般指令),宏指令可以被解码为多个微指令(微操作)。
在所描绘的配置中,处理器100还包括片上接口模块110。在历史上,下面更详细描述的存储器控制器已经被包括在处理器100外部的计算系统中。在此场景中,片上接口110用于与处理器100外部的设备(例如,系统存储器175、芯片组(通常包括用于连接到存储器175的存储器控制器集线器和用于连接外围设备的I/O控制器集线器)、存储器控制器集线器、北桥、或其他集成电路)进行通信。并且在此场景中,总线105可以包括任何已知的互连(例如,多点总线、点对点互连、串行互连、并行总线、一致性(例如,缓存一致性)总线、分层协议架构、差分总线、以及GTL总线)。
存储器175可以专用于处理器100或者与系统中的其他设备共享。存储器175的类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)、以及其他已知的存储设备。注意,设备180可以包括:耦合到存储器控制器集线器的图形加速器、处理器或卡;耦合到I/O控制器集线器的数据存储装置;无线收发器;闪存设备;音频控制器;网络控制器;或其他已知的设备。
然而,近期地,随着更多的逻辑和设备被集成在单个管芯(例如,SOC)上,这些设备中的每一个都可以被合并在处理器100上。例如,在一个实施例中,存储器控制器集线器与处理器100位于相同的封装和/或管芯上。这里,核心110的一部分(核心上(on-core)部分)包括一个或多个控制器,以用于与诸如存储器175或图形设备180之类的其他设备接合。包括用于与这样的设备接合的互连和控制器的配置通常被称为核心上(或非核心(un-core)配置)。作为示例,片上接口110包括用于片上通信的环形互连和用于芯片外通信的高速串行点对点链路105。但是,在SOC环境中,甚至更多的设备(例如,网络接口、协处理器、存储器175、图形处理器180、以及任何其他已知的计算机设备/接口)可以被集成在单个管芯或集成电路上,以在高功能性和低功耗的情况下提供小外形规格。
在一个实施例中,处理器100能够执行编译器、优化和/或转换器代码177,以编译、转换和/或优化应用代码176,以支持本文所描述的装置和方法或者与其接合。编译器通常包括程序或程序的集合,以将源文本/代码转换为目标文本/代码。通常,用编译器对程序/应用代码进行编译是在多个阶段和多遍中完成的,以将高级编程语言代码变换为低级机器或汇编语言代码。但是,单遍(single pass)编译器仍然可以用于简单的编译。编译器可以利用任何已知的编译技术并且执行任何已知的编译器操作(例如,词法分析、预处理、解析、语义分析、代码生成、代码变换和代码优化)。
较大的编译器通常包括多个阶段,但是通常来说这些阶段被包括在两个一般的阶段内:(1)前端,即,通常其中可以进行句法处理、语义处理以及一些变换/优化;以及(2)后端,即,通常其中可以进行分析、变换、优化和代码生成。一些编译器引用中间部分,该中间部分示出了在编译器的前端和后端之间的模糊规定。因此,对编译器的插入、关联、生成或其他操作的引用可以发生在编译器的上述阶段或遍以及任何其他已知阶段或遍的任一个中。作为说明性的示例,编译器在编译的一个或多个阶段中潜在地插入操作、调用、函数等(例如,在编译的前端阶段中插入调用/操作,并且然后在变换阶段期间将调用/操作变换为较低级别的代码)。注意,在动态编译期间,编译器代码或动态优化代码可以插入这样的操作/调用,以及优化代码以用于在运行时期间执行。作为特定说明性的示例,二进制代码(已编译的代码)可以在运行时期间被动态地优化。这里,程序代码可以包括动态优化代码、二进制代码或其组合。
类似于编译器,转换器(例如,二进制转换器)静态地或动态地转换代码,以优化和/或转换代码。因此,对代码、应用代码、程序代码、或其他软件环境的执行的引用可以指代:(1)动态地或静态地执行编译器程序、优化代码优化器或转换器,以编译程序代码、维护软件结构、执行其他操作、优化代码、或者转换代码;(2)执行包括操作/调用的主程序代码(例如,已经被优化/编译的应用代码);(3)执行其他程序代码(例如,与主程序代码相关联的库),以维护软件结构、执行其他软件相关的操作、或者优化代码;或者(4)其组合。
随着串行互连的数据速率继续增加(加倍),例如,可以在每代PCIe中所看到的,由于各种元素会引起串扰、符号间干扰(ISI)、以及由插槽、通孔、板、连接器和附加卡(AIC)引起的信道损耗,因此在每个片上系统(SoC)的数百个通道的情况下,维持10-12或更好的误比特率(BER)变得困难。在针对下一代数据速率(例如,PCIe(64GT/s的Gen 6,以及下一代计算快速链路(CXL)和超路径互连(UPI)数据速率)部署PAM-4编码的情况下,目标BER高得多,为10-6。由于决策反馈均衡器(DFE),因此预期在这些更高的数据速率处预期的错误性质在相同的通道上的连续位之间相关(突发错误)。由于通道共享相同的错误源(例如,电源噪声、TX侧的时钟抖动等),因此还预期这些错误的性质具有跨通道的错误之间的相关性。
本公开描述了用于在链路的操作期间解决每个通道上以及跨通道的错误突发的机制和逻辑电路。另外,除了原始的第一突发错误率(FBER),本公开描述了用于促进对错误的错误相关性的评估的机制和逻辑电路,使得电路可以被调谐以减小相关性,或者可以在产品发货之前部署信道改进。此外,取决于通道内以及跨通道的错误的相关性的性质,可以部署不同的前向纠错(FEC)来解决错误;这种FEC可以包括一个或多个(交错的)纠错码(ECC)组和/或循环冗余校验(CRC)。
图2A-2B示出了样本多通道链路。如果存在一个或多个重定时器,则每个链路片段是电气独立的,并且会在每个接收器中独立地累积错误。因此,在一个重定时器的情况下,可能在重定时器的接收器中或端口的接收器中引入错误。重定时器在每通道的基础上进行操作,并且因此不会纠正或检测跨链路中的所有通道进行操作的Flit中的任何错误。尽管示出为包括重定时器,但是可以理解的是,重定时器的使用是特定于实施方式的。
图2A是示出根据本公开的实施例的在上游组件下游端口202与下游组件上游端口208之间具有两个重定时器204和206的样本拓扑结构200的示意图。上游组件下游端口202可以是用于基于PCIe的设备(例如,CPU或者能够生成数据分组并跨符合PCIe协议的数据链路发送数据分组的其他设备)的端口。下游组件上游端口208可以是用于外围组件的端口,该外围组件可以从符合PCIe协议的链路接收数据分组。可以理解的是,上游组件下游端口202和下游组件上游端口208可以跨PCIe链路(示出为PCIe链路210a-c)发送和接收数据分组。
拓扑结构200可以包括一个或多个重定时器204和206。重定时器204和206可以充当在物理层处操作的信号转发器,以微调来自上游组件下游端口202和/或下游组件上游端口208的信号。重定时器可以使用连续时间线性均衡(CTLE)、决策反馈均衡(DFE),并且发送脉冲响应均衡(Tx FIR EQ或仅TxEQ)。重定时器对于数据链路和事务层来说是透明的,但是实现了完整的物理层。
多通道PCIe链路在每个方向上被拆分为三个链路片段(LS)210a、210b和210c。上游组件下游端口202可以通过多通道PCIe链路210a被耦合到重定时器1 204。重定时器1204可以通过链路片段210b被耦合到重定时器2 206。并且重定时器2 206可以通过链路片段210c被耦合到下游组件上游端口208。
组件也可以通过边带链路进行耦合。上游组件下游端口202可以通过边带链路212a被耦合到重定时器1 204。重定时器1 204可以通过边带链路212b被耦合到重定时器2206。并且重定时器2 206可以通过边带链路212c被耦合到下游组件上游端口208。
重定时器(缓冲器)设备的主要功能是信号重定时。这些功能由重定时器204和206执行。特定的重定时器设备电路将取决于用于链路的PHY。通常,重定时器电路被配置为恢复传入的信号并且使用本地时钟和新的发送均衡电路进行重发,并且为此可以通常采用公知的电路(例如,锁相环)。重定时器可以进一步包括发送器和接收器电路,该发送器和接收器电路包括一个或多个放大器电路,以及用于增加接收到的信号的驱动电平的各种类型的公知信号调节电路。这种重定时器电路对于高速互连领域的技术人员来说是公知的,并且因此,本文没有示出或讨论进一步的细节。
每个重定时器204和206可以具有上游路径和下游路径。在一些实施方式中,重定时器可以包括两个伪端口,并且伪端口可以动态地确定它们相应的下游/上游朝向。此外,重定时器204和206可以支持包括转发模式和执行模式的操作模式。在一些实例中,重定时器204和206可以对在子链路上接收到的数据进行解码,并且对要在其另一子链路上向下游转发的数据进行重编码。这样,重定时器可以捕获接收到的位流,之后重新生成并且重新发送位流给另一设备或甚至另一重定时器(或重驱动器或转发器)。在一些情况下,例如,当处理和转发有序集合数据时,重定时器可以修改其接收到的数据中的一些值。另外地,重定时器可以潜在地支持任何宽度选项(例如,由诸如PCIe之类的规范定义的宽度选项的集合)作为其最大宽度。
随着串行互连(例如,PCIe、UPI、USB等)的数据速率增加,重定时器越来越多地用于扩展信道范围。多个重定时器可以被级联,以达到甚至更长的信道范围。可以预期的是,随着信号速度增加,一般情况下信道范围将通常减小。因此,随着互连技术加速,重定时器的使用可能变得更加常见。作为示例,由于采用的PCIe Gen-4其速率为16GT/s,而PCIeGen-3为8GT/s,因此在PCIe互连中重定时器的使用可能会增加,就像在其他互连中随着速度的增加的情况一样。
在一种实施方式中,可以针对基于PCI Express Gen-4(16GT/s)的重定时器定义通用的BGA(球栅阵列)占用空间(footprint)。这种设计可以解决常规的PCIe Gen-3(8GT/s)重定时器设备中发现的至少一些示例缺陷,以及在采用PCIe Gen-4的情况下出现的问题中的一些。此外,针对PCIe Gen-4,预期重定时器供应商的数量和容量将增加。由于来自双倍数据速率(从8GT/s到16GT/s)的信号损失,在Gen-4中可实现的互连长度被显著地减小。在这个和其他示例互连技术中,随着数据速率提高,重定时器可能已经由此增加了实用性,由于它们可以用于大大增加信道长度,而信道长度将以其他方式受到提高的数据速率的约束,例如,在PCIe Gen 5和Gen 6以及后续中。
尽管重定时器被示出为与上游组件和下游组件是分开的,但是重定时器可以是上游组件或下游组件的一部分、与上游组件或下游组件一起在板上、或者与下游组件一起在封装上。
上游组件下游端口202可以访问存储元件222(例如,闪速存储装置、高速缓存、或其他存储器设备)。重定时器1 204可以可选地包括类似的存储元件224。重定时器2 206可以可选地包括类似的存储元件226。下游组件上游端口208可以可选地包括类似的存储元件228。
图2B是示出根据本公开的实施例的带内上游端口和重定时器配置的连接系统250的示意图。如图2A所示,上游组件下游端口202可以通过由两个重定时器204、206扩展的链路210a-c被耦合到下游组件上游端口208。在此示例中,下游端口202可以被提供有重定时器配置寄存器地址/数据寄存器252,以保存要使用增强型SKP OS的字段来在配置访问命令中被发送给两个重定时器之一的数据。SKP OS的一个或多个位可以包括命令代码、数据或地址,以用于在重定时器(例如,分别为204、206)的配置寄存器(例如,分别为256、258)处使用,以从寄存器256、258读取数据或向寄存器256、258写入数据。重定时器可以通过以下方式来对通过在增强型SKP OS的实例中编码数据来发送的配置访问命令做出响应:其自己在增强型SKP OS的后续实例中编码响应数据。由重定时器(例如,204、206)编码的数据可以在下游端口处被提取并且被记录在重定时器配置数据返回寄存器(例如,254)中。可以通过系统软件和/或允许(间接)访问重定时器寄存器的系统的其他组件来对在上游设备下游端口202处维护的寄存器(例如,252、254)进行写入和读取:一个寄存器(例如,252),其将地址/数据/命令传达给重定时器;以及第二寄存器(例如,254),其存储从重定时器返回的响应。在其他实施方式中,代替或者除了将寄存器维持在上游组件下游端口202处之外,可以将这样的寄存器(例如,260)维持在下游组件上游端口208处,等等。
继续图2B的示例,结合用于提供对重定时器寄存器的带内访问的机制,重定时器可以具有架构的寄存器,这些寄存器是可用定义良好的位和特性寻址的。在此示例中,增强型SKP OS被定义/修改为物理层生成的周期性模式,以将命令/信息从“重定时器配置寄存器地址/数据”(例如,252)运送到重定时器,并且将响应从重定时器运送回以加载到“重定时器配置数据返回”(例如,254),其中,针对CRC分配了一些位以用于保护数据。例如,在PCIe中,这可以包括增强现存的SKP有序集合(例如,具有CSR访问和CSR返回(受CRC保护的位))。此外,可以定义用于确保将命令/信息有保证地递送给重定时器和对应的响应返回的流程。物理层机制可以被增强,以在其需要某种服务时也包括来自重定时器的通知(除了响应外),以及其他示例特征。
如果存在一个或多个重定时器,则每个链路片段都是电气独立的,并且会在每个接收器中独立地累积错误。因此,在一个重定时器的情况下,可能在重定时器的接收器中或端口的接收器中引入错误。重定时器在每通道的基础上进行操作,并且因此不会纠正或检测跨链路中的所有通道进行操作的Flit中的任何错误。
64.0GT/s的PCIe Gen 6(PCI Express第6代)、64.0GT/s的CXL 3.0(计算快速链路第3代)、以及诸如频率高于32.0GT/s(例如,48.0GT/s或56.0GT/s或64.0GT/s)的UPI(超路径互连)之类的CPU-CPU对称一致性链路是将需要FEC结合CRC工作的互连的示例。在SoC中,非常期望相同的PHY具有多协议功能,并且取决于作为链路伙伴连接的设备而被用作PCIe/CXL/UPI。
在本公开的实施例中,多个协议(例如,PCIe、CXL、UPI)可以共享公共PHY。然而,每个协议可能具有不同的延时容限(tolerance)和带宽需求。例如,PCIe可能比CXL更能容忍延时增加。CPU-CPU对称缓存一致性链路(例如,UPI)对延时增加最敏感。
诸如PCIe和CXL之类的链路可以被分区为较小的独立的子链路。例如,x16 PCIe/CXL链路可以被分区为高达8个独立的链路,每个链路x2。对称缓存一致性链路可能不支持该级别的分区。由于延时特性、分区支持的不同以及由于基本协议的不同,即使这些链路可以共享相同的物理层,这些链路也可能使用不同的流量控制单元(Flit)大小和Flit布置。
除了上面提到的各种协议的不同性能和操作条件之外,针对任何给定的协议,操作条件和性能要求也可能会改变。操作条件可能会影响错误率以及错误之间的相关性,这取决于系统以及过程、电压和温度的任何变化。类似地,不同的应用可以具有不同的延时和带宽要求。本公开描述了可以动态地适应这些变化的机制。
图3是根据本公开的实施例的用于支持多个互连协议的公共物理层(公共PHY)300的示意图。PHY是“物理层”的缩写,并且是可以实现OSI模型的物理层功能的电子电路。
图3示出了具有以更高的数据速率的PAM-4编码的示例公共PHY 300(模拟PHY以及逻辑PHY二者),其可以支持以不同数据速率操作的多种协议(例如,PCIe、CXL、UPI、用于加速器的缓存一致性互连(CCIX)、开放式一致性加速器处理器接口(CAPI)等)。模拟PHY 302和逻辑PHY 304二者对于所支持的每种协议是共有的。模拟PHY 302可以支持多通道链路(例如,x16 PCIe链路),48GT/s以及用于其他互连协议的56GT/s PAM-4。
逻辑PHY 304可以包括TX逻辑子块306和RX逻辑子块308。TX逻辑子块306可以包括用于准备数据流进行跨链路发送的逻辑。例如,TX逻辑子块306可以包括空闲Flit生成器312以生成Flit。可以基于协议、带宽、操作条件、所使用的协议等来确定Flit大小。循环冗余校验(CRC)代码生成器314可以包括一个或多个CRC代码生成器以及滚动CRC代码生成器以用于生成CRC代码。CRC代码是用于检测数据意外改变的错误检测代码。在实施例中,可以在维持时钟完整性的同时绕过CRC代码生成器314。TX逻辑子块306还可以包括前向纠错(FEC)编码器316,以用纠错码(ECC)对数据进行编码。FEC编码器316也可以被绕过而不损害时钟完整性。其他逻辑元件(例如,通道反转318、LFSR 320、符号对齐322等)也可以存在于TX逻辑子块306中。由于所有协议都是基于Flit的,因此逻辑PHY还可以包括公共重试缓冲器340。
逻辑PHY可以包括RX逻辑子块308。RX逻辑子块308可以包括FEC解码器/旁路322、CRC解码/旁路334、以及错误报告元件336。FEC解码器332可以对接收到的数据块中的ECC位进行解码并执行纠错。CRC解码逻辑334可以校验不可纠正错误,并且将错误报告给错误报告元件336。重试缓冲器340可以用于用信号通知具有不可纠正错误的数据块的重试。RX逻辑子块308中也可以存在其他逻辑元件(例如,通道反转330、LFSR 328、弹性/漂移缓冲器326、符号对齐324等)。
逻辑PHY 304还可以包括静态复用器(图中未示出),以在PHY 300支持的不同协议栈之间进行选择。静态复用器的使用促进了逻辑元件(包括传统上为链路层功能的实质部分,例如,CRC和重试)的重用,并且除了引脚效率和灵活的I/O支持外(取决于系统配置在不同协议之间进行选择的能力),还产生面积/功率效率。静态复用器可以基于与所使用的协议相关联的Flit大小来将数据引导至适当的物理和逻辑元件,并且将数据引导至适当的CRC编码器/解码器和FEC编码器/解码器。
公共PHY 300(模拟PHY 302加上逻辑PHY 304)、Flit大小、FEC和CRC的使用在不同协议和操作条件之间是潜在不同的。与针对每个协议多次复制逻辑PHY栈相比,用于促进公共PHY的任何附加的逻辑的成本更低。相反,可以基于所使用的协议来将数据在电气上引导至适当的编码器/解码器,该协议最初是在链路初始化期间被设置的。
本公开描述了在测试模式下以及在链路的正常操作期间(即,处于L0状态的链路)用于测量和表征链路的裕度的系统和技术。所公开的系统和技术使得能够表征链路,这将有助于使链路合格并且以上市时间优势解决任何问题。可以在不引入间接方案中固有的错误的情况下使链路裕度化,间接方案例如接收器裕度化,其中,对链路进行裕度化直到失败。TX抖动测量有助于PAM-4中的抖动测量。在第三种方法的情况下,可以通过从常规业务中窃取的周期来间歇地测试链路或者执行专门的测试。
由于决策反馈均衡器(DFE),在高数据速率处预期的错误的性质可能在相同的通道上的连续位之间相关(突发错误)。因为通道共享相同的错误源(例如,电源噪声、TX侧的时钟抖动等),所以预期跨通道的错误之间的相关性。理解错误并测量个体的组件以及在存在重定时器时系统级别处的裕度有助于在预测并解释错误的同时维持高数据速率。
图4A-B是示出根据本公开的实施例的包括错误记录机制的协议栈内的示例电路和逻辑的示意图。图4A-B展示了示例微架构,该示例微架构实现了诸如PCIe/CXL/UPI之类的串行互连的物理层、链路层和事务层。本公开描述了多种检测和记录机制,如图4A-B所示。
图4A示出了微架构的发送器侧的协议栈400的逻辑电路。协议栈400可以包括事务层(TL)队列408a、无操作(No Operation)事务层分组(NOP TLP)生成器410、以及TX重试缓冲器416。TL队列408a可以包括用于存储或缓冲对外分组的对外事务层信息、有效载荷数据、控制数据等的逻辑。NOP TLP生成器410可以生成NOP TLP,这些NOP TLP可以被包括在由发送器跨链路发送的NOP Flit中。NOP Flit可以被认为是不包含事务层分组的Flit。在一些实例中,NOP Flit可以不包括DLLP有效载荷(即,在DLLP有效载荷中全为零)。这将被称为空闲Flit。在一些实例中,NOP Flit(具体地,空闲Flit类型)可以被发送以供接收器用于校验错误并增加重试分组被纠正的可能性。来自TL队列408a的信息可以由复用器412与来自NOP TLP Gen 410的信息进行复用。
如果在先前的Flit或当前的Flit期间发生错误,则TX重试缓冲器416可以用于临时地存储分组(TLP有效载荷)以用于重发。在一些实施方式中(例如,没有可用的配置寄存器空间的那些实施方式中),TX重试缓冲器416的一部分可以被改用于存储错误信息。DLLP处理器438(在接收器侧协议栈440上)可以向重试缓冲器416提供ACK/NACK响应,以使得重试缓冲器416中的TLP被重新发送或清除。DLLP处理器438可以使用关于Flit中的错误的信息,以使得新的Flit跨链路被发送。
协议栈400可以包括数据链路层分组(DLLP)生成器420,以用于针对该分组生成DLLP信息。可以通过复用/合并422来将DLLP信息增加到TLP。可以通过复用器414来将TX重试缓冲器的输出与复用器412的输出进行复用。可以将复用器414的输出与全零418进行复用/合并(全零418可以用于之后描述的错误校验),或者与DLLP生成器420的结果进行复用/合并。
协议栈440还可以包括循环冗余校验(CRC)代码生成器424,该循环冗余校验(CRC)代码生成器424可以针对对外Flit生成CRC。可以将CRC代码与对外Flit进行复用/合并426。如上面所描述的,前向纠错(FEC)生成器428可以添加纠错码(ECC)。可以使用三组ECC来将ECC跨Flit的每个通道进行交错。
有序集合(OS)生成器430可以提供有序集合作为Flit有效载荷。例如,OS生成器430可以将SKiP(SKP)OS提供到Flit流中。SKP OS可以用于指示下一Flit是全零Flit,如下面所进一步描述的。
Flit可以从PHY输出434被发送出去,该PHY输出434可以包括模拟前端(AFE)、扰动操作、串行化等。
在一些实施例中,协议栈400可包括裕度控制和状态寄存器470。裕度控制和状态寄存器470可以用于通道裕度化以表征链路的通道。具体地,通道裕度化提供有关链路的每个通道的电气裕度信息。电气裕度信息可以向用户、测试人员和开发人员(以及其他人员)提供数据,以理解系统中的性能变化容限。
裕度控制和状态寄存器470通常可以存储裕度信息和关于通道以及关于系统的其他信息。裕度控制和状态寄存器470还可以用于激活和停用测试模式(例如,系统软件可以写入裕度控制和状态寄存器470以激活测试模式或者使得一个或多个错误日志或计数器被清除,这可以终止测试)。
在一些实施例中,裕度控制和状态寄存器是CPU寄存器。裕度控制和状态寄存器也可以位于重定时器中。
图4B示出了微架构的接收器侧的协议栈440的逻辑电路。Flit可以由接收器端口的PHY输入442接收。PHY输入442可以包括AFE、解扰操作、以及在PHY输入中找到的其他操作。可以通过解复用器444对Flit进行解复用,以用于成为通过OS校验446的OS Flit或有效载荷Flit。有效载荷Flit可以通过FEC逻辑448进行错误检测,该FEC逻辑448使用ECC来识别并纠正Flit内的错误。错误检测的结果可以被记录在错误日志452中,如下面更详细地描述的。Flit还可以通过CRC/SeqNo校验逻辑450进行CRC校验。CRC校验逻辑450可以使用在错误校验逻辑446中找到的功能来检测如下面所描述的日志错误处的错误。错误校验逻辑456还可以使用RX重播缓冲器454中的被存储的信息(如果存在),以识别不可纠正错误的比特位置。Flit被解合并器(demerge)460拆分,并且ACK/NACK通过DLLP处理器438被提供给TX重试缓冲器416。TLP处理器458可以将有效载荷发送给事务层队列408b。
在一些实施例中,错误校验逻辑456还可以基于以下各项来提供误比特率(BER):由一个或多个计数器472接收到的错误、由Flit计数器确定的接收到的位数以及由馈送到CRC/SeqNo校验逻辑450的FEC纠正逻辑448所报告的错误。在PCIe中,如在诸如CXL、UPI等的其他互连中一样,Flit包含固定数量的位,这意味着可以通过对接收到的Flit的数量进行计数来确定总位数。可以将错误与总位数进行比较以计算BER。
在实施例中,协议栈440可以包括一个或多个计数器472,以用于在Flit错误被接收器检测到时对它们进行计数。图5是示出根据本公开的实施例的用于对错误进行计数的各种示例计数器的示意图500。作为示例,协议栈可以包括接收器侧,该接收器侧包括用于错误校验和记录的某些电路。例如,协议栈接收器侧可以包括FEC纠正电路448,该FEC纠正电路448可以使用纠错码(ECC)来纠正在接收到的Flit或数据块中的错误。如果使用ECC检测并纠正了可纠正错误,则可以递增对应的每通道计数器502。CRC校验电路450可以指示在接收到的Flit或数据块中检测到不可纠正错误。当检测到不可纠正错误时,可以递增对应的CRC检测错误计数器504。与每通道相反,CRC检测错误计数器504可以用于整个链路。
有序集合(OS)校验电路446可以使得Ctrl SKP OS奇偶校验计数器506递增。OS奇偶校验计数器506可以是专用计数器,其用于校验有序集合中的每通道错误(例如,CtrlSKP OS中的错误)。在一些实施例中,每通道计数器502可以被改用于计数OS错误。
当Flit被接收到PHY中时,Flit计数器508可以对传入的Flit 510的数量进行计数,因此可以创建在错误数量和Flit数量之间的比较。
直接BER测量
根据表1中的观察结果来支持直接BER测量,即,具有高FBER(例如,10-6)的驻留时间可以支持错误率的直接测量。
表1.各种FBER速率的PCIe 6的驻留时间
PCIe 6 | |
位率[GB/s] | 64 |
PAM | 4 |
波特率[GB/s] | 32 |
原始BER目标 | 1.00e-6(FBER) |
FBER 1e-6的驻留时间(sec) | 94e-6 |
FBER 1e-8的驻留时间(sec) | 9.4e-3 |
FBER 1e-9的驻留时间(sec) | 94e-3 |
FBER 1e-10的驻留时间(sec) | .94 |
FBER 1e-11的驻留时间(sec) | 9.4 |
直接BER测量可以包括以下内容:
1.
16位每通道可纠正位错误计数器
每通道计数器(例如,每通道计数器502)随着ECC解码器纠正一个符号而递增。例如,FEC纠正电路系统448可以使用纠错码(ECC)来纠正接收到的Flit中的符号。每通道计数器502可配置用于对原始错误(例如,由ECC在Flit中纠正的所有错误)进行计数。在一些实施例中,每通道计数器502基于Flit边界来对第一错误进行计数。可以使用对可纠正错误进行计数的其他示例方式。
在实施例中,如果CRC校验通过,则计数器递增,这意味着在Flit中不存在不可纠正错误。
在一些实施例中,可以将每通道计数器502改用于通过每端口控制寄存器位来对在控制SKP OS边界上的奇偶不匹配的错误进行计数。
16位每端口不可纠正Flit错误计数器
在一些实施例中,可以在检测到每端口或每链路的不可纠正错误时递增不可纠正错误计数器504。每端口或每链路计数器504在CRC校验失败时(Flit重试)递增。每端口或每链路计数器504可配置用于基于Flit边界来对原始错误或第一错误进行计数(仅当连续Flit存在错误时才有错误的第一Flit进行计数)。
32位Flit事务计数器
Flit计数器508的目的是跟踪跨链路进行交易的位数。Flit计数器508基于接收到新的Flit 510而递增。Flit计数器508在全1时停止递增。一旦Flit计数器508已经达到其最大值,则计数器例如不会翻转以继续计数。
针对重定时器:16位每通道错误计数器
重定时器可以包括计数器的子集和作为协议栈发送器侧和接收器侧的其他电路,如图4A-B所示。与本公开内容密切相关的重定时器部分被标记为A-F。
在一些实施例中,重定时器可以包括OS计数器(例如,OS计数器506),可以使用奇偶不匹配来对skip OS边界上的原始每通道错误进行计数。在重定时器的情况下,可以在端口处的每个方向上测量链路上的BER,能够发现每个重定时器看到的错误。每个端口和重定时器将基于通过控制SKP OS进行奇偶错误检测来报告错误的数量。即使错误通过有错误的后续片段进行传播,片段中的错误计数的不匹配也意味着所有片段已经独立地看到了错误。
可以基于裕度命令来原子地清除重定时器计数器。增强裕度化命令,以允许访问重定时器寄存器。广播/个体地发送裕度命令到重定时器从而以原子方式开始、停止和清除所有计数器的能力可以使用例如表2中所示的编码来完成。
一般而言,并且涉及重定时器和主机/设备协议栈实施方式,可以使用裕度命令来完成以原子方式在端口中开始、停止和清除所有计数器的能力。
表2:针对链路表征和裕度化在控制SKP有续集合中增强裕度命令相关的字段
图6A是根据本公开的实施例的用于在接收器中递增计数器的过程流程图600。首先,可以在诸如端点设备或主机设备之类的接收设备的端口处接收Flit(602)。如果接收器中的FEC机制纠正了Flit中的错误(例如,使用ECC)(604),并且CRC校验通过(例如,没有不可纠正错误)(606),则针对与其上发生了错误的通道对应的计数器,可以递增用于对可纠正错误进行计数的每通道计数器(608)。如果CRC校验没有通过(606),则可以递增用于对不可纠正错误进行计数的基于链路的计数器(610)。在实施例中,如果CRC校验通过,则递增用于对可纠正错误进行计数的每通道计数器。
如果FEC机制未检测到错误(或未纠正错误)(604),则执行CRC校验(612)。如果CRC校验通过,则Flit可以被更高层电路消费(614)。如果Flit没有通过CRC校验,则可以递增用于对不可纠正错误进行计数的基于链路的计数器(610)。
Flit计数器可以被递增以对Flit的数量或接收到的位数进行计数(616)。
图6B是根据本公开的实施例的用于基于针对SKiP有序集合的奇偶错误校验来递增计数器的过程流程图620。在一些实施例中,SKP OS奇偶校验可以检测到奇偶校验错误(622)。如果在SKP OS边界处检测到奇偶校验错误,则可以递增SKP OS的每通道计数器(或改用的每通道计数器)(例如,针对发生错误的通道的计数器)(614)。如果没有检测到OS奇偶错误,则可以考虑每通道可纠正错误校验(604)。
Flit计数器可以被递增以对Flit的数量或接收到的位数进行计数(616)。
用PAM-4进行抖动测量
原则上,只要可以用某种去嵌入的方法移除信道影响,就可以仅使用伪随机二进制序列(PRBS)模式来测量抖动。在实践中,已经难以使用PRBS模式来实现准确性。这就是为什么在非归零(NRZ)编码中使用时钟模式来测量抖动的原因。
然而,PAM-4中的类似时钟的模式难以优化。诸如0-1、2-3、0-3之类的模式不是DC平衡的。图7中示出了2位编码符号和DC平衡值。图7是示出根据本公开的实施例的用于抖动信号生成的示例PAM-4电压电平、编码和DC0平衡值的示意图700。图示700可以是示出从0至3的电压电平、从00、01、11和10的2位编码、以及从-3至+3的DC平衡值的眼图。
抖动插入方法被概述如下:
0-3时钟模式将被用作(NRZ)抖动模式。
针对PAM-4编码,抖动模式被定义为021302310132012303120321的重复序列。这是最短的序列,它用相等的概率覆盖所有12个转换边缘(上升/下降),并且是DC平衡的。该模式为24UI或48位长。因此,在3个块(1个块为128位)上,它将重复8次或另外的次数,这取决于实施方式选择。
针对符合性模式设置,可以将抖动模式与长度为8192位的扰动模式和用于纠正扰动模式下的DC平衡的模式进行组合。这样,PAM-4抖动被抖动模式和符合性模式串扰条件二者覆盖。
图8是根据本公开的实施例的用于在Flit中插入和处理抖动的发送器和接收器处的过程流程图800。在实施例中,可以使用PAM-4编码,并且抖动模式可以包括021302310132012303120321的重复序列。
在发送器处,可以由发送器侧电路针对链路的通道的子集生成抖动测量模式(802)。可以由发送器侧电路针对剩余通道(例如,总通道减去将承载抖动测量模式的通道子集)生成符合性模式(804)。然后,发送器可以在通道的子集上发送抖动测量模式,并且可以在链路的剩余通道上将符合性模式发送给接收器(806)。
接收器可以在通道的子集上接收抖动测量模式,而在剩余通道上接收符合性模式(808)。接收器侧电路可以基于接收到的抖动测量模式并且在一些实施例中基于接收到的符合性模式来确定每通道的错误数量(810)。接收器可以在传出的符合性模式中报告错误(812)。
具有可预测模式的测试模式
现存的环回机制(其将在PCIe 6.0的PAM-4中被保留),在下述情况下工作良好:在解释高达6个接收器(如图2A-B所示,包括重定时器)处可以发生的SKP插入/删除之后,控制器可以校验它接收到被它发送的位。此机制允许控制器发送任何数据块模式。唯一的缺点是:在错误中,此机制不能指示哪个链路片段/接收器首先看到了错误。
具有空闲Flit的Flit模式(其中,所有TLP和DLLP字节均为0,并且有效的编码会引起在扰动前CRC字节为0和FEC字节为0)提供了一种测试方式。使用表2中的机制,本公开如下:
当在此模式下时,每个接收器将在解扰(无任何FEC或CRC计算)之后的数据流中的每个传入符号与00h进行比较。任何不匹配都是有错误的位并且被记录。
软件可以写入到任一端口中的现存的裕度控制寄存器,以使测试启动。端口在适当时广播具有有效载荷的控制SKP有序集合。
可以单独地或同时地测试链路中的每个方向。该提议的变型可以是对下一数据流进行空闲Flit测试(即,通过恢复重新进入到L0),并且可以在随后的数据流上停止(即,下次通过恢复重新进入到L0)。这可以通过将全1写入到裕度有效载荷来进行控制。
每个端口维护第一错误的细节(Flit偏移[15:0]和有错误的第一Flit中的第一位[11:0])以及错误的数量[15:0]。另外,如符号4N+2的位0和1所报告的,要求报告每个重定时器中的有错误的第一Flit[15:0]。由于重定时器对Flit偏移的报告可能不精确(并且如果第二重定时器与第一重定时器同时报告其第一错误,则第二重定时器可能没有可用的信息),因此端口将报告符号4N+3中报告的内容。
当在此模式下时,每个伪端口会重新生成空闲Flit,并且空闲Flit正在被发送(在先前的SKP OS中,符号4N+2的位2为1b)(即,错误不会通过接收器进行传播)。
测试用诸如清除错误日志之类的命令停止,该命令可以通过裕度命令寄存器设置来原子地设置。
图9是根据本公开的实施例的用于在接收器处执行链路测试的过程流程图900。首先,软件可以写入裕度控制寄存器以激活测试模式(902)。发送器可以生成空闲Flit,其中,所有TLP和DLLP字节均为0,并且有效的编码会引起扰动前CRC字节为0和FEC字节为0(904),并且可以跨链路发送空闲Flit(906)。
接收器可以跨链路接收空闲Flit(908)。接收器可以在解扰之后(没有任何FEC或CRC计算)将数据流中的每个传入符号与预定测试值(例如,00h)进行比较(910)。任何不匹配是有错误的位并且被记录(912)。
参考图10,示出了由对组件的集合进行互连的点对点链路构成的结构的实施例。系统1000包括耦合到控制器集线器1015的处理器1005和系统存储器1010。处理器1005包括任何处理元件(例如,微处理器、主机处理器、嵌入式处理器、协处理器、或其他处理器)。处理器1005通过前端总线(FSB)1006被耦合到控制器集线器1015。在一个实施例中,FSB 1006是如下面所描述的串行点对点互连。在另一实施例中,链路1006包括符合不同的互连标准的串行差分互连架构。
系统存储器1010包括任何存储器设备,例如,随机存取存储器(RAM)、非易失性(NV)存储器、或由系统1000中的设备可访问的其他存储器。系统存储器1010通过存储器接口1016被耦合到控制器集线器1015。存储器接口的示例包括双倍数据速率(DDR)存储器接口、双通道DDR存储器接口、以及动态RAM(DRAM)存储器接口。
在一个实施例中,控制器集线器1015是在快速外围组件互连(PCIe或PCIE)互连层级中的根集线器、根联合体或根控制器。控制器集线器1015的示例包括芯片组、存储器控制器集线器(MCH)、北桥、互连控制器集线器(ICH)、南桥、以及根端口控制器/集线器。通常,术语芯片组指代两个物理上分离的控制器集线器,即,耦合到互连控制器集线器(ICH)的存储器控制器集线器(MCH)。注意,当前的系统通常包括与处理器1005集成的MCH,而控制器1015用于以如下面所描述的类似的方式与I/O设备进行通信。在一些实施例中,通过根联合体1015来可选地支持对等路由。
这里,控制器集线器1015通过串行链路1019被耦合到交换机/桥接器1020。输入/输出模块1017和1021(其也可以被称为接口/端口1017和1021)包括/实现分层协议栈,以在控制器集线器1015和交换机1020之间提供通信。在一个实施例中,多个设备能够被耦合到交换机1020。
交换机/桥接器1020将分组/消息从设备1025向上游(即,朝着根联合体沿层级向上)路由到控制器集线器1015,以及从处理器1005或系统存储器1010向下游(即,远离根端口控制器沿层级向下)路由到设备1025。在一个实施例中,交换机1020被称为多个虚拟的PCI到PCI桥接器设备的逻辑组装件。设备1025包括要被耦合到电子系统的任何内部或外部的设备或组件(例如,I/O设备、网络接口控制器(NIC)、附加卡、音频处理器、网络处理器、硬盘驱动器、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(USB)设备、扫描仪、以及其他输入/输出设备)。通常在PCIe用语中,例如设备被称为端点。尽管未被具体示出,但是设备1025可以包括PCIe到PCI/PCI-X桥接器以支持旧式或其他版本的PCI设备。PCIe中的端点设备通常被分类为旧式、PCIe或根联合体集成端点。
图形加速器1030也通过串行链路1032被耦合到控制器集线器1015。在一个实施例中,图形加速器1030被耦合到MCH,该MCH被耦合到ICH。然后将交换机1020以及因此I/O设备1025耦合到ICH。I/O模块1031和1018还用于实现分层协议栈,以在图形加速器1030和控制器集线器1015之间进行通信。类似于上述MCH讨论,图形控制器或图形加速器1030本身可以被集成在处理器1005中。
转到图11,示出了分层协议栈的实施例。分层协议栈1100包括任何形式的分层通信栈(例如,快速路径互连(QPI)栈、PCIe栈、下一代高性能计算互连栈、或其他分层栈)。尽管紧接下面参考图10-15的讨论是与PCIe栈相关的,但是相同的构思可以应用于其他互连栈。在一个实施例中,协议栈1100是PCIe协议栈,其包括事务层1105、链路层1110、以及物理层1120。接口(例如,图10中的接口1017、1018、1021、1022、1026和1031)可以被表示为通信协议栈1100。作为通信协议栈的表示也可以被称为实现/包括协议栈的模块或接口。
PCI Express使用分组在组件之间传送信息。在事务层1105和数据链路层1110中形成了分组,以将信息从发送组件运送到接收组件。当被发送的分组流经其他层时,它们会被用在那些层处理分组所需的附加的信息进行扩展。在接收侧发生相反的过程,并且分组从其物理层1120表示变换为数据链路层1110表示,并且最终(针对事务层分组)变换为可以由接收设备的事务层705处理的形式。
事务层
在一个实施例中,事务层1105用于提供设备的处理核心与互连架构(例如,数据链路层1110和物理层1120)之间的接口。在这方面,事务层1105的主要责任是组装和拆卸分组(即,事务层分组或TLP)。事务层1105通常管理用于TLP的基于信用的流量控制。PCIe实现了拆分事务(即,具有通过时间分开的请求和响应的事务),以允许链路在目标设备收集响应数据的同时承载其他业务。
另外,PCIe利用基于信用的流量控制。在此方案中,设备会通知针对事务层1105中的接收缓冲器的每一个的初始信用量。在链路的相对端处的外部设备(例如,图10中的控制器集线器1015)对由每个TLP消费的信用量进行计数。如果事务不超过信用限制,则可以发送事务。在接收到响应后,恢复信用量。信用方案的优点在于:信用返回的延时不会影响性能,前提是不遇到信用限制。
在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间、以及消息地址空间。存储器空间事务包括读取请求和写入请求中的一个或多个,用以从/向存储器映射的位置传送数据。在一个实施例中,存储器空间事务能够使用两种不同的地址格式(例如,短地址格式(例如,32位地址)或长地址格式(例如,64位地址))。配置空间事务用于访问PCIe设备的配置空间。配置空间的事务包括读取请求和写入请求。消息空间事务(或被简称为消息)被定义为支持PCIe代理之间的带内通信。
因此,在一个实施例中,事务层1105组装分组报头/有效载荷1106。当前的分组报头/有效载荷的格式可以在PCIe规范网站处的PCIe规范中找到。
快速参考图12,示出了PCIe事务描述符的实施例。在一个实施例中,事务描述符1200是用于承载事务信息的机制。在这方面,事务描述符1200支持系统中的事务的标识。其他潜在的使用包括跟踪默认事务排序的修改以及事务与信道的关联。
事务描述符1200包括全局标识符字段1202、属性字段1204、以及信道标识符字段1206。在所示的示例中,描绘了全局标识符字段1202包括本地事务标识符字段1208和源标识符字段1210。在一个实施例中,全局事务标识符1202对于所有未完成的请求来说是唯一的。
根据一种实施方式,本地事务标识符字段1208是由请求方代理生成的字段,并且对于该请求方代理要求完成的所有未完成请求来说它是唯一的。此外,在此示例中,源标识符1210唯一地标识了PCIe层级内的请求者代理。因此,本地事务标识符1208字段与源ID1210一起提供了层级域内的事务的全局标识。
属性字段1204指定事务的特性和关系。在这方面,属性字段1204潜在地用于提供允许修改事务的默认处理的附加信息。在一个实施例中,属性字段1204包括优先级字段1212、被预留的字段1214、排序字段1216和无探听字段1218。这里,优先级子字段1212可以由发起者修改以向事务指派优先级。被预留的属性字段1214被预留以用于将来的或供应商定义的使用。使用优先级或安全性属性的可能的使用模型可以使用被预留的属性字段来实现。
在此示例中,排序属性字段1216用于供应可选的信息,该可选的信息传达可以修改默认排序规则的排序的类型。根据一种示例实施方式,排序属性“0”表示要应用的默认排序规则,其中,排序属性“1”表示宽松的排序,其中,写入可以超越在相同的方向上的写入,并且读取完成可以超越在相同的方向上的写入。探听属性字段1218用于确定是否探听事务。如图所示,信道ID字段1206标识事务与之相关联的信道。
链路层
链路层1110也被称为数据链路层1110,其充当在事务层1105和物理层1120之间的中间阶段。在一个实施例中,数据链路层1110的责任是提供一种用于在链路的两个组件之间交换事务层分组(TLP)的可靠机制。数据链路层1110的一侧接受由事务层1105组装的TLP,应用分组序列标识符1111(即,标识号或分组号),计算并应用错误检测代码(即,CRC1112),并且将经修改的TLP提交给物理层1120,以跨物理发送到外部设备。
物理层
在一个实施例中,物理层1120包括逻辑子块1121和电气子块1122,以将分组物理地发送到外部设备。这里,逻辑子块1121负责物理层1121的“数字”功能。在这方面,逻辑子块包括用于准备传出信息以供物理子块1122发送的发送部分和用于在将接收到的信息传递给链路层1110之前识别并准备接收到的信息的接收器部分。
物理块1122包括发送器和接收器。逻辑子块1121为发送器供应符号,发送器将符号串行化并发送到外部设备上。接收器被供应来自外部设备的串行化符号,并且将接收到的信号变换为位流。位流被并行化(de-serialize)并且被供应给逻辑子块1121。在一个实施例中,采用8b/10b发送码,其中,发送/接收十位符号。这里,特殊的符号用于用帧1123对分组进行帧化。另外,在一个示例中,接收器还提供从传入的串行流中恢复的符号时钟。
如上所述,尽管参考PCIe协议栈的特定实施例讨论了事务层1105、链路层1110和物理层1120,但是分层协议栈不限于此。事实上,可以包括/实现任何分层协议。作为示例,表示为分层协议的端口/接口包括:(1)用于组装分组的第一层,即,事务层;用于对分组进行排序的第二层,即,链路层;以及用于发送分组的第三层,即,物理层。作为特定示例,利用了通用标准接口(CSI)分层协议。
接下来参考图13,示出了PCIe串行点对点结构的实施例。尽管示出了PCIe串行点对点链路的实施例,但是串行点对点链路不限于此,这是由于它包括用于传送串行数据的任何传输路径。在所示的实施例中,基本PCIe链路包括两个低压差分驱动信号对:发送对1306/1311和接收对1312/1307。因此,设备1305包括用于将数据发送到设备1310的发送逻辑1306和用于从设备1310接收数据的接收逻辑1307。换言之,PCIe链路中包括了两条发送路径(即,路径1316和1317)以及两条接收路径(即,路径1318和1319)。
发送路径指代用于发送数据的任何路径(例如,传输线、铜线、光学线、无线通信信道、红外通信链路或其他通信路径)。在两个设备(例如,设备1305和设备1310)之间的连接被称为链路(例如,链路1315)。链路可以支持一条通道——每条通道表示差分信号对的集合(一对用于发送,一对用于接收)。为了扩展带宽,链路可以聚合由xN表示的多条通道,其中,N是任何被支持的链路宽度(例如,1、2、4、8、12、16、32、64或更宽)。
差分对指代两条发送路径(例如,线1316和1317),以发送差分信号。作为示例,当线1316从低电压电平切换到高电压电平(即,上升沿)时,线1317从高逻辑电平驱动到低逻辑电平(即,下降沿)。差分信号潜在地展示了更好的电气特性(例如,更好的信号完整性(即,交叉耦合)、电压过冲/下冲、振铃等)。这允许更好的定时窗口,其实现了更快的发送频率。
注意,如上面所描述的装置、方法和系统可以在如上所述的任何电子设备或系统中实现。作为特定说明,以下附图提供了用于利用本文所描述的公开的示例性系统。随着下面的系统被更详细地描述,根据上面的讨论公开、描述和重访了多个不同的互连。并且如显而易见的,上面描述的进展可以应用于那些互连、结构或架构中的任一项。
转到图14,示出了根据本公开的一个实施例的形成有处理器的示例性计算机系统的框图,该处理器包括用于执行指令的执行单元,其中,互连的一个或多个实现一个或多个特征。根据本公开(例如,在本文所描述的实施例中),系统1400包括诸如处理器1402之类的组件,以采用包括逻辑的执行单元来执行用于过程数据的算法。系统1400代表基于来自加利福尼亚州圣克拉拉市的英特尔公司提供的PENTIUM IIITM、PENTIUM 4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统,尽管也可以使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统1000执行可从华盛顿州雷德蒙德市的微软公司获得的一种版本的WINDOWSTM操作系统,尽管也可以使用其他操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户界面。因此,本公开的实施例不限于硬件电路和软件的任何特定组合。
实施例不限于计算机系统。本公开的替代实施例可以在其他设备(例如,手持设备和嵌入式应用)中使用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可以根据至少一个实施例执行一条或多条指令的任何其他系统。
在此示出的实施例中,处理器1402包括一个或多个执行单元1008,以实现用于执行至少一条指令的算法。可以在单处理器台式计算机或服务器系统的上下文中描述一个实施例,但是替代实施例可以被包括在多处理器系统中。系统1400是“集线器”系统架构的示例。计算机系统1400包括处理器1402以处理数据信号。作为一个说明性的示例,处理器1402包括复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集的组合的处理器、或任何其他处理器设备(例如,数字信号处理器)。处理器1402被耦合到处理器总线1410,该处理器总线1410在系统1400中的处理器1402和其他组件之间传送数据信号。系统1400的元件(例如,图形加速器1412、存储器控制器集线器1416、存储器1420、I/O控制器集线器1424、无线收发器1426、闪速BIOS 1028、网络控制器1434、音频控制器1436、串行扩展端口1438、I/O控制器1440等)执行本领域技术人员所熟知的其常规的功能。
在一个实施例中,处理器1402包括1级(L1)内部高速缓冲存储器1404。取决于架构,处理器1402可以具有单个内部高速缓存或多级别的内部高速缓存。其他实施例包括内部高速缓存和外部高速缓存二者的组合,这取决于特定的实施方式和需求。寄存器文件1406用于将不同类型的数据存储在各种寄存器(包括,整数寄存器、浮点寄存器、向量寄存器、存储体寄存器、影子寄存器、检查点寄存器、状态寄存器和指令指针寄存器)中。
执行单元1408包括用于执行整数和浮点运算的逻辑,该执行单元1408也驻留在处理器1402中。在一个实施例中,处理器1402包括微码(ucode)ROM,微码ROM用于存储微码,该微码当被执行时用于执行针对某些宏指令的算法或者处理复杂的场景。这里,微码是潜在地可更新的,以处理处理器1402的逻辑缺陷/修复。针对一个实施例,执行单元1408包括用于处理打包指令集1409的逻辑。通过将打包指令集1409包括在通用处理器1402的指令集中,连同用于执行指令的相关联的电路,可以在通用处理器1402中使用打包数据来执行由许多多媒体应用使用的操作。因此,可以通过使用处理器的数据总线的全部宽度来对打包数据执行操作而更高效地加速和执行许多多媒体应用。这潜在地消除了跨处理器的数据总线发送较小单位的数据(一次一个数据元素)以执行一个或多个操作的需要。
执行单元1408的替代实施例也可以在微控制器、嵌入式处理器、图形设备、DSP、以及其他类型的逻辑电路中使用。系统1400包括存储器1420。存储器1420包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备或其他存储器设备。存储器1420存储将由处理器1402执行的由数据信号表示的指令和/或数据。
注意,可以在图14所示的一个或多个互连上利用本公开的上述特征或方面中的任一个。例如,未示出的用于耦合处理器1402的内部单元的管芯上互连(ODI)实现了上面描述的公开的一个或多个方面。或者,本公开与以下各项相关联:处理器总线1410(例如,英特尔快速路径互连(QPI)或其他已知的高性能计算互连)、到存储器1420的高带宽存储器路径1418、到图形加速器1412的点对点链路(例如,符合快速外围组件互连(PCIe)的结构)、控制器集线器互连1422、I/O、或用于耦合其他示出的组件的其他互连(例如,USB、PCI、PCIe)。这样的组件的一些示例包括音频控制器1436、固件集线器(闪速BIOS)1428、无线收发器1426、数据存储装置1424、包含用户输入和键盘接口1442的旧式I/O控制器1440、串行扩展端口1438(例如,通用串行总线(USB))、以及网络控制器1434。数据存储设备1424可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪速存储器设备或其他大容量存储设备。
现在参考图15,示出的是根据本公开的实施例的第二系统1500的框图。如图15所示,多处理器系统1500是点对点互连系统,并且包括经由点对点互连1550耦合的第一处理器1570和第二处理器1580。处理器1570和1580中的每一个可以是某个版本的处理器。在一个实施例中,1552和1554是串行点对点一致性互连结构(例如,英特尔的快速路径互连(QPI)架构)的一部分。因此,可以在QPI架构内实现本公开。
尽管仅示出了两个处理器1570、1580,但是应当理解的是,本公开的范围不限于此。在其他实施例中,在给定的处理器中可以存在一个或多个附加的处理器。
处理器1570和1580被示出分别包括集成的存储器控制器单元1572和1582。处理器1570还包括作为其总线控制器单元的一部分的点对点(P-P)接口1576和1578;类似地,第二处理器1580包括P-P接口1586和1588。处理器1570、1580可以使用点对点(P-P)接口电路1578、1588经由P-P接口1550交换信息。如图15所示,IMC 1572和1582将处理器耦合到相应的存储器,即,存储器1532和存储器1534,这些存储器可以是本地地附接到相应的处理器的主存储器的部分。
处理器1570、1580各自使用点对点接口电路1576、1594、1586、1598经由个体的P-P接口1552、1554与芯片组1590交换信息。芯片组1590还经由接口电路1592沿着高性能图形互连1539与高性能图形电路1538交换信息。
共享高速缓存(未示出)可以被包括在任一处理器中或在两个处理器外部;但是经由P-P互连与处理器连接,使得如果处理器被置于低功率模式下时,任一个或两个处理器的本地高速缓存信息可以被存储在共享高速缓存中。
芯片组1590可以经由接口1596耦合到第一总线1516。在一个实施例中,第一总线1516可以是外围组件互连(PCI)总线,或者诸如PCI Express总线或另一第三代I/O互连总线之类的总线,尽管本公开的范围不限于此。
如图15所示,各种I/O设备1514连同总线桥接器1518被耦合到第一总线1516,该总线桥接器1518将第一总线1516耦合到第二总线1520。在一个实施例中,第二总线1520包括低引脚数(LPC)总线。在一个实施例中,各种设备被耦合到第二总线1520,设备包括:例如,键盘和/或鼠标1522、通信设备1527和存储设备1528(例如,磁盘驱动器或其他大容量存储设备,该存储单元1528通常包括指令/代码和数据1530)。此外,音频I/O 1524被示出耦合到第二总线1520。注意,其他架构是可能的,其中,被包括的组件和互连架构会有变化。例如,代替图15的点对点架构,系统可以实现多点总线或其他这种架构。
使用平台中存在的各种惯性和环境传感器,可以实现许多不同的用例。这些用例实现包括感知计算的高级计算操作,并且还允许关于电源管理/电池寿命、安全性和系统响应性的增强。
例如,关于电源管理/电池寿命问题,至少部分地基于来自环境光传感器的信息,确定平台的位置中的环境光条件,并且因此控制显示器的亮度。因此,在某些光照条件下减少了操作显示器的功耗。
关于安全性操作,基于从传感器获得的上下文信息(例如,位置信息),可以确定是否允许用户访问某些安全文档。例如,可以允许用户在工作场所或家庭位置处访问这样的文档。然而,当平台存在于公共场所时,用户被阻止访问这样的文档。在一个实施例中,此确定基于例如经由GPS传感器或地标的相机标识所确定的位置信息。其他安全性操作可以包括提供在彼此的近距离内的设备的配对,例如,如本文所描述的便携式平台和用户的台式计算机、移动电话等。在一些实施方式中,当这些设备被如此配对时,经由近场通信实现的某些共享。然而,当设备超过特定范围时,可能会禁用这种共享。此外,当将如本文所描述的平台与智能电话配对时,警报可以被配置为当设备在公共场所中移动超过距离彼此的预定距离时被触发。作为对比,当这些配对的设备处于安全位置(例如,工作场所或家庭位置)时,这些设备可以超过此预定限制而不会触发这种警报。
也可以使用传感器信息来增强响应性。例如,即使当平台处于低功率状态下时,仍然可以启用传感器以相对低的频率运行。因此,确定平台的位置的任何改变,例如,如由惯性传感器、GPS传感器等确定的。如果尚未注册这样的改变,则会发生到先前的无线集线器(例如,Wi-FiTM接入点或类似的无线使能器)的更快的连接,这是由于在这种情况下不存在扫描可用的无线网络资源的需要。因此,实现了当从低功率状态唤醒时的更高级别的响应性。
应当理解的是,可以使用传感器信息来实现许多其他用例,该传感器信息是经由本文所描述的平台内的集成传感器获得的,并且以上示例仅出于说明的目的。使用本文所描述的系统,感知计算系统可以允许添加替代输入模态(包括手势识别),并且使得系统能够感测用户操作和意图。
在一些实施例中,可以存在一个或多个红外或其他热感测元件,或者用于感测用户的存在或移动的任何其他元件。这样的感测元件可以包括一起工作、按顺序工作或二者的多个不同的元件。例如,感测元件包括这样的元件:提供初始感测(例如,光或声音投射),然后通过例如超声飞行时间相机或图案光相机来感测手势检测。
并且在一些实施例中,该系统包括产生照明线的光生成器。在一些实施例中,此线提供关于虚拟边界(即,空间中的虚构或虚拟位置)的视觉提示,其中,用户通过或突破虚拟边界或平面的行动被解释为与计算系统接触的意图。在一些实施例中,当计算系统转换到相对于用户的不同状态下时,照明线可以改变颜色。照明线可以用于向用户提供空间中虚拟边界的视觉提示,并且可以被系统用于确定计算机相对于用户的状态转换,包括确定用户何时希望与计算机接触。
在一些实施例中,计算机感测用户位置并且操作以将用户的手通过虚拟边界的移动解释为指示用户与计算机接触的意图的手势。在一些实施例中,在用户通过虚拟线或平面时,由光生成器生成的光可以改变,由此向用户提供视觉反馈,即,用户已经进入了用于提供手势以向计算机提供输入的区域。
显示屏可以提供计算系统相对于用户的状态转换的视觉指示。在一些实施例中,在第一状态下提供第一屏幕,其中,用户的存在由系统例如通过使用感测元件的一个或多个来感测。
在一些实施方式中,系统例如通过面部识别来感测用户身份。这里,可以在第二状态下提供到第二屏幕的转换,其中,计算系统已经识别出用户身份,其中,此第二屏幕向用户提供了视觉反馈,即,用户已经转换到新状态。到第三屏幕的转换可以第三状态下发生,其中,用户已经确认对用户的识别。
在一些实施例中,计算系统可以使用转换机制来确定针对用户的虚拟边界的位置,其中,虚拟边界的位置可以随用户和上下文而变化。计算系统可以生成光(例如,照明线),以指示用于与系统接触的虚拟边界。在一些实施例中,计算系统可以处于等待状态,并且光可以以第一颜色来产生。计算系统可以例如通过使用感测元件感测用户的存在和移动来检测用户是否已经到达经过虚拟边界。
在一些实施例中,如果已经检测到用户已经越过虚拟边界(例如,用户的手比虚拟边界线更靠近计算系统),则计算系统可以转换到用于接收来自用户的手势输入的状态,其中,用于指示转换的机制可以包括指示虚拟边界的光改变为第二颜色。
在一些实施例中,计算系统然后可以确定是否检测到手势移动。如果检测到手势移动,则计算系统可以进行手势识别过程,该过程可以包括使用来自手势数据库的数据,该手势数据库可以驻留在计算设备的存储器中,或者可以以其他方式由计算设备访问。
如果识别出用户的手势,则计算系统可以响应于输入而执行功能,并且如果用户在虚拟边界内,则返回以接收附加的手势。在一些实施例中,如果手势未被识别,则计算系统可以转换到错误状态,其中,用于指示错误状态的机制可以包括指示虚拟边界的光改变为第三颜色,其中,如果用户在用于与计算系统接触的虚拟边界内,则系统返回以接收附加的手势。
如上面所提到的,在其他实施例中,系统可以被配置为可以在至少两种不同的模式(平板模式和笔记本模式)下使用的可转换平板系统。可转换系统可以具有两个面板(即,显示面板和基板面板),使得在平板模式下,两个面板以堆叠的方式彼此叠置。在平板模式下,显示面板朝外,并且可以提供在常规的平板电脑中所具有的触摸屏功能。在笔记本模式下,两个面板可以以开启式翻盖配置来布置。
在各个实施例中,加速度计可以是具有至少50Hz的数据速率的3轴加速度计。还可以包括陀螺仪,其可以是3轴陀螺仪。另外,可以存在电子罗盘/磁力计。并且,可以提供一个或多个接近传感器(例如,用于打开盖子以感测人何时接近(或不接近)系统并调整功率/性能以延长电池寿命)。针对某些OS的传感器融合能力(包括加速度计、陀螺仪和罗盘),可以提供增强型特征。另外,经由具有实时时钟(RTC)的传感器集线器,当系统的剩余部分处于低功率状态下时,可以实现根据传感器机制的唤醒以接收传感器输入。
在一些实施例中,内部的盖子/显示器开启开关或传感器用于指示盖子何时关闭/打开,并且可以用于将系统置于连接待机(Connected Standby)状态或自动地从连接待机状态唤醒。其他系统传感器可以包括用于内部处理器、存储器和表面温度监控的ACPI传感器,以基于感测到的参数来实现对处理器和系统操作状态的改变。
在实施例中,OS可以是8 OS,其实现连接待机(在本文中也被称为Win8 CS)。Windows 8连接待机或具有类似的状态的另一OS可以经由本文所描述的平台提供非常低的超闲置功率,以使得应用能够以非常低的功耗保持被连接到例如基于云的位置。该平台可以支持3种功率状态,即,屏幕打开(正常);连接待机(作为默认“关闭”状态);以及关机(功耗为零瓦)。因此,在连接待机状态下,即使屏幕关闭,平台仍在逻辑上是打开的(以最小功率级别)。在这种平台上,可以使电源管理对于应用来说是透明的并且维持恒定的连接性,部分原因是卸载技术以使得最低上电的组件能够执行操作。
在一个示例中,PCIe物理层可以用于支持多个不同的协议。因此,PCIe LTSSM中的特定的训练状态可以用于链路上的设备之间的协议的协商。如上所述,甚至在链路以最低被支持的数据速率(例如,PCIe Gen 1数据速率)训练到活动状态(例如,L0)之前,也可能发生协议确定。在一个示例中,可以使用PCIe配置状态。实际上,PCIe LTSSM可以通过在链路宽度协商之后并且(至少部分地)与在配置状态期间执行的通道编号并行地使用经修改的PCIe训练集合(例如,TS1和TS2)来用于协商协议。协议栈可以包括电路来支持多个协议,例如PCIe和CXL。
尽管已经关于有限数量的实施例描述了本公开,但是本领域技术人员将理解由此进行的许多修改和变型。其意图是,所附权利要求覆盖落入本公开的精神和范围内的所有这样的修改和变型。
设计可能会经历从创建到模拟再到制造的各个阶段。表示设计的数据可以以多种方式表示设计。首先,如在模拟中有用的,可以使用硬件描述语言或另一种功能描述语言来表示硬件。另外地,可以在设计过程的一些阶段处产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段达到了表示硬件模型中各种设备的物理位置的数据级别。在使用常规的半导体制造技术的情况下,表示硬件模型的数据可以是规定用于产生集成电路的掩模的不同掩模层上的各种特征的存在或不存在的数据。在设计的任何表示中,数据可以以机器可读介质的任何形式来存储。存储器或诸如磁盘之类的磁性或光学存储装置可以是机器可读介质,其用于存储经由被调制或以其他方式被生成以发送这种信息的光波或电波发送的信息。当发送指示或承载代码或设计的电载波时,在对电信号执行复制、缓冲或重传的程度上,新的副本产生了。因此,通信提供商或网络提供商可以至少暂时地在有形的机器可读介质上存储体现本公开的实施例的技术的制品(例如,被编码到载波中的信息)。
如本文所使用的模块指代硬件、软件和/或固件的任何组合。作为示例,模块包括与非暂时性介质相关联的硬件(例如,微控制器),所述非暂时性介质用于存储适于由微控制器执行的代码。因此,在一个实施例中,对模块的引用指代具体被配置为识别和/或执行要被保存在非暂时性介质上的代码的硬件。此外,在另一实施例中,模块的使用指代包括代码的非暂时性介质,该代码具体适于由微控制器执行以执行预定的操作。并且如可以推断出的,在又一实施例中,术语模块(在此示例中)可以指代微控制器和非暂时性介质的组合。通常,被示为单独的模块边界通常会变化并且潜在地重叠。例如,第一和第二模块可以共享硬件、软件、固件或其组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件(例如,晶体管、寄存器,或诸如可编程逻辑器件之类的其他硬件)。
在一个实施例中,短语“用于”或“被配置为”的使用指代安排、组合、制造、许诺销售、进口和/或设计用于执行指定的或确定的任务的装置、硬件、逻辑或元件。在此示例中,如果未在操作的装置或其元件被设计、耦合和/或互连以执行指定的任务,则该未在操作的装置或其元件仍“被配置为”执行所述指定的任务。作为纯说明性的示例,逻辑门可以在操作期间提供0或1。但是“被配置为”向时钟提供使能信号的逻辑门不包括可以提供1或0的每个潜在的逻辑门。相反,逻辑门是以某种方式耦合的逻辑门,在操作期间,1或0输出用于启用时钟。再次注意,术语“被配置为”的使用不要求操作,而是专注于装置、硬件和/或元件的潜在状态,其中,在潜在状态下,装置、硬件和/或元件被设计为当装置、硬件和/或元件正在操作时执行特定的任务。
此外,在一个实施例中,短语“能够/用于”和/或“可操作用于”的使用指代一些装置、逻辑、硬件和/或元件是被使得能够以指定方式使用所述装置、逻辑、硬件和/或元件的这种方式来设计的。如上所述,在一个实施例中,用于、能够用于、或可操作用于的使用指代装置、逻辑、硬件和/或元件的潜在状态,其中,装置、逻辑、硬件和/或元件未正在操作,但是以使得能够以指定方式使用装置的这种方式来设计的。
如本文所使用的,值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,逻辑级别、逻辑值或逻辑上的值的使用也被称为1和0,它们简单地表示二进制逻辑状态。例如,1指代高逻辑电平,而0指代低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元可能能够保存单个逻辑值或多个逻辑值。然而,已经使用了计算机系统中的值的其他表示。例如,十进制数字十也可以被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
此外,状态可以由值或值的部分来表示。作为示例,第一值(例如,逻辑一)可以表示默认或初始状态,而第二值(例如,逻辑零)可以表示非默认状态。另外,在一个实施例中,术语重置和设置分别指代默认的和更新的值或状态。例如,默认值潜在地包括高逻辑值(即,重置),而更新值潜在地包括低逻辑值(即,设置)。注意,值的任何组合可以用于表示任何数量的状态。
上面阐述的方法、硬件、软件、固件或代码的实施例可以经由存储在可由处理元件执行的机器可访问、机器可读、计算机可访问或计算机可读介质上的指令或代码来实现。非暂时性机器可访问/可读介质包括以由机器(例如,计算机或电子系统)可读的形式提供(即,存储和/或传送)信息的任何机制。例如,非暂时性机器可访问介质包括:随机存取存储器(RAM),例如,静态RAM(SRAM)或动态RAM(DRAM);ROM;磁性或光学存储介质;闪速存储器设备;电气存储设备;光学存储设备;声学存储设备;其他形式的存储设备,以用于保存从暂时性(被传播的)信号(例如,载波、红外信号、数字信号)接收到的信息;等,这用于与可以从其接收信息的非暂时性介质区分开。
用于对逻辑进行编程以执行本公开的实施例的指令可以被存储在系统中的存储器(例如,DRAM、高速缓存、闪速存储器、或其他存储装置)内。此外,可以经由网络或通过其他计算机可读介质来分发指令。因此,机器可读介质可以包括用于以由机器(例如,计算机)可读的形式存储或传送信息的任何机制,但不限于:软盘;光盘;压缩盘;只读存储器(CD-ROM);以及磁光盘;只读存储器(ROM);随机存取存储器(RAM);可擦除可编程只读存储器(EPROM);电可擦除可编程只读存储器(EEPROM);磁卡或光卡;闪速存储器;或者经由电、光、声或其他形式的被传播的信号(例如,载波、红外信号、数字信号等)在互联网上的信息传输中使用的有形的机器可读存储装置。因此,计算机可读介质包括适合于以由机器(例如,计算机)可读的形式存储或传送电子指令或信息的任何类型的有形机器可读介质。
贯穿此说明书中对“一个实施例”或“实施例”的引用意指结合该实施例描述的特定的特征、结构或特性被包括在本公开的至少一个实施例中。因此,贯穿此说明书中各处出现的短语“在一个实施例中”或“在实施例中”不一定都指代相同的实施例。此外,在一个或多个实施例中,可以以任何合适的方式来组合特定的特征、结构或特性。
在前述说明书中,已经参考特定示例性的实施例给出了详细的描述。然而,将显而易见的是,在不背离所附权利要求书中所阐述的本发明的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。说明书和附图因此应当被认为是说明性意义的而不是限制性意义的。此外,实施例和其他示例性语言的前述使用不一定指代相同的实施例或相同的示例,而是可以指代不同且有区别的实施例,以及潜在地相同的实施例。
以上描述了实施例的各个方面和组合,其中的一些由以下示例表示:
示例1是一种装置,其包括协议栈电路。该协议栈电路用于:接收流量控制单元(Flit)报头和事务层分组(TLP)有效载荷,该TLP有效载荷包括第一部分和第二部分;基于Flit报头没有错误来将Flit报头和TLP有效载荷的第一部分转发给链路伙伴;识别Flit包含来自TLP有效载荷的第二部分的错误;以及向链路伙伴发送数据链路层分组(DLLP)以指示TLP有效载荷中的错误。
示例2可以包括示例1的主题,协议电路用于对Flit报头执行前向纠错(FEC)校验,以确定Flit报头没有错误。
示例3可以包括示例1-2中的任一项的主题,协议电路用于对Flit报头执行循环冗余校验(CRC),以确定Flit报头没有错误。
示例4可以包括示例1-3中的任一项的主题,协议电路用于对TLP有效载荷执行前向纠错(FEC)校验,以识别TLP有效载荷的第二部分中的错误。
示例5可以包括示例1-6中的任一项的主题,其中,协议电路用于对TLP有效载荷执行循环冗余校验(CRC)校验,以识别TLP有效载荷的第二部分中的错误。
示例6可以包括示例1-5中的任一项的主题,其中,TLP有效载荷中的错误由在TLP有效载荷的第二部分中设置的最近中毒位(late poison bit)来识别。
示例7可以包括示例1-6中的任一项的主题,其中,TLP有效载荷中的错误由在TLP有效载荷的第二部分中设置的结束数据不良位(end data bad bit)来识别。
示例8可以包括示例1-7中的任一项的主题,其中,端口用于在低延时模式下进行操作。
示例9可以包括示例8的主题,其中,端口用于使用低延时最近中毒模式或低延时结束数据不良模式或这二者进行操作。
示例10可以包括示例1-9中的任一项的主题,协议电路用于响应于识别出TLP有效载荷中的错误而以无操作(NOP)TLP来填充TLP有效载荷的第二部分;以及跨链路发送NOPTLP。
示例11可以包括示例1-10中的任一项的主题,协议电路用于在直通转发模式下进行操作。
示例12可以包括示例1-11中的任一项的主题,其中,DLLP包括链路管理DLLP。
示例13可以包括示例1-12中的任一项的主题,其中,错误由TLP有效载荷的第二部分中的结束数据不良位或TLP有效载荷的第二部分中的最近中毒位中的一个来指示。
示例14是一种方法,其包括:接收Flit报头和事务层分组(TLP)有效载荷;确定Flit报头不包括错误;将TLP有效载荷的第一部分发送给链路伙伴;基于来自TLP有效载荷的第二部分的错误指示来确定TLP有效载荷包含错误;以及向链路伙伴发送链路管理数据链路层分组(DLLP)以指示错误。
示例15可以包括示例14的主题,进一步包括:以无操作(NOP)TLP来填充TLP有效载荷的第二部分以指示错误。
示例16可以包括示例14-16中的任一项的主题,其中,Flit的第二部分包括TLP有效载荷的最后双字。
示例17可以包括示例16的主题,其中,TLP的最后双字包括结束数据不良指示符或最近中毒指示符中的一个,该结束数据不良指示符和最近中毒指示符用于指示TLP中的错误。
示例18可以包括示例14-17中的任一项的主题,进一步包括:基于Flit报头的前向纠错和循环冗余校验来确定Flit报头不包括错误。
示例19可以包括示例14-18中的任一项的主题,其中,DLLP包括链路管理类型DLLP。
示例20是一种系统,其包括:上游端口;下游端口;以及协议栈电路。协议电路用于接收包括事务层分组(TLP)报头和TLP有效载荷的流量控制单元(Flit),该TLP有效载荷包括第一部分和第二部分;将TLP报头和TLP有效载荷的第一部分转发给链路伙伴;以及确定TLP报头或TLP有效载荷是否包括错误。如果TLP报头包括错误,则在TLP有效载荷的第二部分中在链路管理数据链路层分组(DLLP)中设置结束数据不良(EDB)位;并且如果TLP有效载荷包括错误,则在链路管理DLLP中在EDB位或最近中毒位之一上进行设置;以及将TLP有效载荷的第二部分发送给链路伙伴。
示例21可以包括示例20的主题,其中,系统包括根端口、交换机联合体或端点中的一个。
示例22可以包括示例20-21中的任一项的主题,协议栈电路用于将无操作TLP编码到TLP有效载荷的第二部分中。
示例23可以包括示例20-22中的任一项的主题,协议栈包括物理层电路(PHY),该物理层电路(PHY)包括前向纠错电路和循环冗余校验电路,协议栈电路基于使用前向纠错电路和循环冗余校验电路对Flit报头的处理来确定Flit报头没有错误。
示例24可以包括示例20-23中的任一项的主题,其中,协议栈电路用于基于在TLP的第二部分的最后双字中识别出的结束数据不良信息或最近中毒信息来确定TLP的第二部分中的错误。
示例25可以包括示例20-24中的任一项的主题,其中,DLLP包括链路管理DLLP。
示例26可以包括示例1的主题,协议栈电路用于确定Flit报头没有错误。
示例27可以包括示例1的主题,协议栈电路用于确定TLP报头包括错误;并且在DLLP中设置结束数据不良(EDB)位,以指示TLP报头中的错误。
示例28可以包括示例1的主题,协议栈电路用于确定TLP的第一部分或第二部分中的一个包括错误;并且在DLLP中设置最近中毒位以指示错误。
示例29可以包括示例1的主题,协议栈电路用于确定TLP的第一部分或第二部分中的一个包括错误;并且在DLLP中设置EDB位以指示错误。
示例30可以包括示例1的主题,所述装置包括根端口,该根端口包括协议栈电路。该装置可以包括具有协议栈电路的发送器侧。发送器侧用于在TLP报头或TLP有效载荷中识别错误(例如,奇偶校验错误、ECC错误、CRC错误或其他错误)。在一些情况下,可以在已经发送TLP报头之后(单独或与TLP有效载荷一起)发现TLP报头中的错误。如果在TLP报头中发现错误,则在TLP有效载荷的最后DW的链路层DLLP中设置EDB位。也可以发送NOP TLP。如果(在任何时候)在TLP有效载荷中发现了错误,则可以取决于错误的严重性或性质来在有效载荷的最后DW中设置最近中毒位或者可以设置EDB。
Claims (25)
1.一种装置,包括:
接收器,其包括:
端口,其用于跨链路接收流量控制单元(Flit),所述链路包括多个通道;
错误检测电路,其用于确定所述Flit中的错误,
错误计数器,其用于对接收到的错误的数量进行计数,所述错误计数器用于基于由所述错误检测电路在所述Flit中检测到的错误而递增,
Flit计数器,其用于对接收到的Flit的数量进行计数,所述Flit计数器用于基于接收到Flit而递增,以及
误比特率逻辑,其用于基于由所述错误计数器记录的计数和由所述Flit计数器指示的接收到的位数来确定误比特率。
2.根据权利要求1所述的装置,其中,所述错误检测电路包括前向纠错(FEC)电路,所述FEC电路用于用纠错码来纠正所述Flit中的错误。
3.根据权利要求2所述的装置,其中,所述错误计数器用于基于所述FEC电路纠正所述Flit中的错误而递增。
4.根据权利要求2所述的装置,进一步包括循环冗余校验(CRC)电路,所述错误计数器用于基于所述FEC电路纠正所述Flit中的错误以及所述Flit通过由所述CRC电路执行的校验而递增。
5.根据权利要求2所述的装置,其中,所述FEC电路用于在每通道的基础上确定所述Flit中的可纠正错误,并且其中,所述错误计数器用于在每通道的基础上对可纠正错误的数量进行计数。
6.根据权利要求1-5中的任一项所述的装置,其中,所述错误检测电路包括循环冗余校验(CRC)电路,所述CRC电路用于确定所述Flit中的不可纠正错误,并且其中,所述错误计数器包括不可纠正错误计数器,所述不可纠正错误计数器用于基于包括不可纠正错误的Flit而递增。
7.根据权利要求1-6中的任一项所述的装置,其中,所述错误校验电路包括有序集合(OS)奇偶校验电路,以基于奇偶不匹配来确定OS中的错误,并且其中,所述错误计数器用于对由所述OS奇偶校验电路检测到的错误进行计数。
8.根据权利要求1-7中的任一项所述的装置,其中,所述错误计数器用于对在Flit边界之后处检测到的第一错误进行计数。
9.根据权利要求1-8中的任一项所述的装置,其中,所述错误计数器用于对所述Flit中的每个错误进行计数。
10.根据权利要求1-9中的任一项所述的装置,进一步包括裕度命令寄存器,所述裕度命令寄存器包括用于开始、停止或清除所述错误计数器的裕度命令信息。
11.一种方法,包括:
从多通道链路接收Flit;
通过错误检测电路来确定所述Flit中的错误;
基于确定所述错误并且基于错误类型来递增错误计数器;
递增Flit计数器;以及
基于由所述错误计数器记录的错误计数和由所述Flit计数器记录的接收到的位数来确定误比特率。
12.根据权利要求11所述的方法,其中,确定所述Flit中的错误包括:
通过前向纠错(FEC)电路来检测可纠正错误;以及
使用纠错码来纠正所述可纠正错误。
13.根据权利要求12所述的方法,其中,递增所述错误计数器包括:基于使用纠错码纠正所述可纠正错误来递增每通道可纠正错误计数器。
14.根据权利要求12所述的方法,其中,递增所述错误计数器包括:基于使用纠错码纠正所述可纠正错误以及所述Flit通过循环冗余校验,递增每通道可纠正错误计数器。
15.根据权利要求12所述的方法,进一步包括:针对在所述多通道链路的每个通道上纠正的错误,递增每通道可纠正错误计数器。
16.根据权利要求11-15中的任一项所述的方法,进一步包括:
确定所述Flit中的不可纠正错误;以及
递增所述错误计数器包括:基于确定所述Flit中的所述不可纠正错误来递增每端口不可纠正错误计数器。
17.根据权利要求11-16中的任一项所述的方法,进一步包括:
基于奇偶不匹配来确定在有序集合边界处的有序集合中的错误;
基于确定所述有序集合中的所述错误来递增所述错误计数器。
18.根据权利要求11-17中的任一项所述的方法,其中,递增所述错误计数器包括:基于在所述Flit中检测到的每个错误来递增所述错误计数器。
19.根据权利要求11-18中的任一项所述的方法,其中,递增所述错误计数器包括:基于在所述Flit中检测到的第一错误来递增所述错误计数器。
20.根据权利要求11-19中的任一项所述的方法,进一步包括:在裕度命令寄存器中设置信息以开始、停止或清除所述错误计数器。
21.一种系统,包括:
主机设备,其包括用于在多通道链路上发送流量控制单元(Flit)的发送器;
端点设备,其包括用于接收所述Flit的接收器端口,所述接收器端口包括:
错误检测电路,其用于确定所述Flit中的错误,
错误计数器,其用于对接收到的错误的数量进行计数,所述错误计数器基于由所述错误检测电路在所述Flit中检测到的错误而递增,
Flit计数器,其用于对接收到的Flit的数量进行计数,所述Flit计数器基于接收到Flit而递增,以及
误比特率逻辑,其用于基于由所述错误计数器记录的计数和由所述Flit计数器指示的接收到的位数来确定误比特率。
22.根据权利要求21所述的系统,进一步包括由所述主机设备下游和所述端点设备上游的多通道链路耦合的重定时器,所述重定时器包括:
有序集合(OS)错误检测电路,其用于确定Flit边界处的OS错误;以及
OS错误计数器,其用于对检测到的OS错误的数量进行计数,所述OS错误计数器用于基于OS错误而递增,所述OS错误是基于奇偶不匹配在Flit边界处检测到的。
23.根据权利要求22所述的系统,进一步包括裕度命令寄存器,其包括用于开始、停止或清除所述错误计数器或所述OS错误计数器的信息。
24.根据权利要求21-22中的任一项所述的系统,其中,所述错误检测电路包括前向纠错(FEC)电路,所述FEC电路用于用纠错码来纠正所述Flit中的错误;并且其中,所述错误计数器用于基于所述FEC电路纠正所述Flit中的错误而递增。
25.根据权利要求24所述的系统,所述接收器端口进一步包括循环冗余校验(CRC)电路,所述错误计数器用于基于所述FEC电路纠正所述Flit中的错误以及所述Flit通过由所述CRC电路执行的校验而递增。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063048537P | 2020-07-06 | 2020-07-06 | |
US63/048,537 | 2020-07-06 | ||
US17/086,085 US20210050941A1 (en) | 2020-07-06 | 2020-10-30 | Characterizing and margining multi-voltage signal encoding for interconnects |
US17/086,085 | 2020-10-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113900852A true CN113900852A (zh) | 2022-01-07 |
Family
ID=74567450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011563982.7A Pending CN113900852A (zh) | 2020-07-06 | 2020-12-25 | 表征和裕度化用于互连的多电压信号编码 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210050941A1 (zh) |
EP (1) | EP3937382A1 (zh) |
CN (1) | CN113900852A (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11397701B2 (en) * | 2019-04-30 | 2022-07-26 | Intel Corporation | Retimer mechanisms for in-band link management |
US11546128B2 (en) | 2020-06-16 | 2023-01-03 | SK Hynix Inc. | Device and computing system including the device |
KR102415309B1 (ko) | 2020-06-16 | 2022-07-01 | 에스케이하이닉스 주식회사 | 인터페이스 장치 및 그 동작 방법 |
KR102518285B1 (ko) | 2021-04-05 | 2023-04-06 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 및 인터페이스 시스템 |
KR102519480B1 (ko) * | 2021-04-01 | 2023-04-10 | 에스케이하이닉스 주식회사 | PCIe 장치 및 이를 포함하는 컴퓨팅 시스템 |
US20210089418A1 (en) * | 2020-07-27 | 2021-03-25 | Intel Corporation | In-system validation of interconnects by error injection and measurement |
US11496241B2 (en) * | 2021-03-31 | 2022-11-08 | Advanced Micro Devices, Inc. | Method and apparatus for data transmission mitigating interwire crosstalk |
EP4285264A1 (en) * | 2021-04-09 | 2023-12-06 | Google LLC | Secure chip-wide communication |
US20220012140A1 (en) * | 2021-09-24 | 2022-01-13 | Debendra Das Sharma | Hardware logging for lane margining and characterization |
WO2024092193A1 (en) * | 2022-10-27 | 2024-05-02 | Kandou Labs SA | Bus transaction security in multi-chip module |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7016304B2 (en) * | 2001-05-18 | 2006-03-21 | Intel Corporation | Link level retry scheme |
US9325449B2 (en) * | 2013-12-06 | 2016-04-26 | Intel Corporation | Lane error detection and lane removal mechanism to reduce the probability of data corruption |
US9648148B2 (en) * | 2013-12-24 | 2017-05-09 | Intel Corporation | Method, apparatus, and system for QoS within high performance fabrics |
US9552253B2 (en) * | 2014-09-24 | 2017-01-24 | Intel Corporation | Probabilistic flit error checking |
JP6458494B2 (ja) * | 2014-12-26 | 2019-01-30 | 富士通株式会社 | 情報処理装置、情報処理システムおよび通信装置 |
US10528421B2 (en) * | 2015-12-29 | 2020-01-07 | Arteris, Inc. | Protection scheme conversion |
US11296994B2 (en) * | 2019-05-13 | 2022-04-05 | Intel Corporation | Ordered sets for high-speed interconnects |
-
2020
- 2020-10-30 US US17/086,085 patent/US20210050941A1/en active Pending
- 2020-11-26 EP EP20209957.8A patent/EP3937382A1/en active Pending
- 2020-12-25 CN CN202011563982.7A patent/CN113900852A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210050941A1 (en) | 2021-02-18 |
EP3937382A1 (en) | 2022-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11740958B2 (en) | Multi-protocol support on common physical layer | |
EP3937382A1 (en) | Characterizing and margining multi-voltage signal encoding for interconnects | |
US10771189B2 (en) | Forward error correction mechanism for data transmission across multi-lane links | |
US11595318B2 (en) | Ordered sets for high-speed interconnects | |
JP6251806B2 (ja) | 装置、方法、プログラム、システム、およびコンピュータ可読ストレージ媒体 | |
US11637657B2 (en) | Low-latency forward error correction for high-speed serial links | |
US11886312B2 (en) | Characterizing error correlation based on error logging for computer buses | |
US20190258600A1 (en) | Retimer mechanisms for in-band link management | |
US20210089418A1 (en) | In-system validation of interconnects by error injection and measurement | |
US10250436B2 (en) | Applying framing rules for a high speed data link | |
WO2017052665A1 (en) | In-band margin probing on an operational interconnect | |
US10884758B2 (en) | Method, apparatus, and system for propagating PCIe hot reset across a non-transparent bridge on a PCIe add-in card | |
US20210013999A1 (en) | Latency-Optimized Mechanisms for Handling Errors or Mis-Routed Packets for Computer Buses | |
JP7163554B2 (ja) | 装置、方法、プログラム、システム、およびコンピュータ可読ストレージ媒体 | |
JP2018049658A (ja) | 装置、方法、およびシステム |
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 |