高速串行链路的低延迟前向纠错

文档序号:1275474 发布日期:2020-08-25 浏览:7次 >En<

阅读说明:本技术 高速串行链路的低延迟前向纠错 (Low-delay forward error correction for high-speed serial links ) 是由 D·达斯夏尔马 于 2020-01-15 设计创作,主要内容包括:系统和设备可以包括用于发送数据的端口;以及耦合到该端口的链路。端口在准备跨链路发送数据块时用于确定要跨该链路发送的数据的突发的大小;基于数据的突发的大小,确定用于前向纠错的多个纠错码字;交织多个纠错码字中的每一个,以与数据的突发的连续符号相对应;以及跨链路发送包括交织的多个纠错码的数据的突发。(Systems and devices may include a port for transmitting data; and a link coupled to the port. A port, when ready to send a block of data across a link, for determining the size of a burst of data to be sent across the link; determining a plurality of error correction codewords for forward error correction based on a size of the burst of data; interleaving each of the plurality of error correction codewords to correspond to successive symbols of a burst of data; and transmitting across the link a burst of data comprising the interleaved plurality of error correction codes.)

具体实施方式

在以下描述中,阐述了许多具体细节(例如,特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器流水线级和操作等的示例),以便提供对本公开的透彻理解。然而,对于本领域技术人员将显而易见的是,不一定采用这些具体细节来实践本公开。在其他实例中,没有详细地描述公知的组件或方法(例如,特定的和可替代的处理器架构、用于所描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现方式、特定代码形式的算法表示、特定断电和门控技术/逻辑以及计算机系统的其他具体操作细节),以避免不必要地模糊本公开。

尽管可以参考在诸如计算平台或微处理器之类的特定集成电路中的能量节约和能量效率来描述以下实施例,但是其他实施例也适用于其他类型的集成电路和逻辑器件。本文所描述的实施例的类似技术和教导可以应用于其他类型的电路或半导体器件,其也可以受益于更好的能量效率和能量节约。例如,所公开的实施例不限于台式计算机系统或UltrabooksTM。并且还可以用于其他设备,例如,手持设备、平板式计算机、其他薄型笔记本、片上系统(SOC)设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字相机、个人数字助理(PDA)和手持PC。嵌入式应用典型地包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中心、广域网(WAN)交换机或可以执行下面教导的功能和操作的任何其他系统。此外,本文所描述的装置、方法和系统不限于物理计算设备,而是还可以涉及用于能量节约和效率的软件优化。如将在以下描述中变得显而易见的,本文所描述的方法、装置和系统的实施例(无论是参考硬件、固件、软件还是其组合)对于与性能考虑因素平衡的“绿色技术”未来是至关重要的。

随着计算系统的发展,其中的组件变得更加复杂。因此,用于在组件之间耦合和通信的互连架构的复杂度也在增加,以确保针对最佳组件操作满足带宽要求。此外,不同的市场细分要求互连架构的不同方面适合市场的需要。例如,服务器要求更高的性能,而移动生态系统有时能够牺牲整体性能以节约功率。然而,大多数结构的唯一目的是以最大功率节约来提供可能的最高性能。下面讨论了多种互连,这些互连将潜在地受益于本文所描述的公开的方面。

参考图1,描绘了包括多核心处理器的计算系统的框图的实施例。处理器100包括任何处理器或处理设备,例如,微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(SOC)或用于执行代码的其他设备。在一个实施例中,处理器100包括至少两个核心——核心101和核心102,其可以包括不对称核心或对称核心(所示实施例)。然而,处理器100可以包括任何数量的处理元件,这些处理元件可以是对称或不对称的。

在一个实施例中,处理元件指代用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核心和/或能够保持处理器的状态(例如,执行状态或架构状态)的任何其他元件。换言之,在一个实施例中,处理元件指代能够独立地与代码(例如,软件线程、操作系统、应用或其他代码)相关联的任何硬件。物理处理器(或处理器插座)典型地指代集成电路,该集成电路潜在地包括任何数量的其他处理元件,例如,核心或硬件线程。

核心通常指代位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立地维持的架构状态与至少一些专用执行资源相关联。与核心不同,硬件线程典型地指代位于集成电路上的能够维持独立架构状态的任何逻辑,其中独立地维持的架构状态共享对执行资源的访问权。如可以看出的,当某些资源是共享的并且其他资源专用于架构状态时,硬件线程和核心的命名法之间的界限重叠。然而通常地,核心和硬件线程被操作系统视为单独的逻辑处理器,其中操作系统能够单独地调度每个逻辑处理器上的操作。

如图1中示出的,物理处理器100包括两个核心——核心101和核心102。这里,核心101和核心102被认为是对称核心,即,具有相同配置、功能单元和/或逻辑的核心。在另一实施例中,核心101包括乱序处理器核心,而核心102包括有序处理器核心。然而,核心101和核心102可以从任何类型的核心(例如,本地核心、软件管理核心、适于执行本地指令集架构(ISA)的核心、适于执行转换指令集架构(ISA)的核心、共同设计的核心或其他已知的核心)中单独选择。在异构核心环境(即,非对称核心)中,可以利用某种形式的转换(例如,二进制转换)以在一个或两个核心上调度或执行代码。然而,为了进一步讨论,核心101中示出的功能单元在下面进一步详细描述,因为核心102中的单元在所描绘的实施例中以类似的方式操作。

如所描绘的,核心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、加载/存储缓冲器和队列。其他资源(例如,通用内部寄存器、(多个)页表基址寄存器、低级别数据高速缓存和数据TLB115、(多个)执行单元140以及乱序单元135的部分)是潜在地完全共享的。

处理器100通常包括其他资源,这些资源可以是完全共享的、通过分区共享的或由处理元件专用/专用于处理元件的。在图1中,示出了具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可以包括或省略这些功能单元中的任一个,以及包括未描绘出的任何其他已知的功能单元、逻辑或固件。如所示的,核心101包括简化的、代表性的乱序(OOO)处理器核心。但是可以在不同的实施例中利用有序处理器。OOO核心包括用于预测要执行/采用的分支的分支目标缓冲器120和用于存储用于指令的地址转换条目的指令转换缓冲器(I-TLB)120。

核心101还包括解码模块125,该解码模块125与获取单元120耦合以对所获取的元素解码。在一个实施例中,获取逻辑包括分别与线程槽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包括用于调度执行单元上的指令/操作的调度器单元。例如,浮点指令在具有可用的浮点执行单元的执行单元的端口上被调度。还包括与执行单元相关联的寄存器文件以存储信息指令处理结果。示例性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其他已知的执行单元。

较低级别数据高速缓存和数据转换缓冲器(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包括一个或多个控制器,用于与诸如存储器175或图形设备180之类的其他设备相接合。包括用于与这种设备相接合的互连和控制器的配置通常被称为核心上(或非核心配置)。作为示例,片上接口110包括用于片上通信的环形互连和用于片外通信的高速串行点对点链路105。然而,在SOC环境中,甚至更多的设备(例如,网络接口、协处理器、存储器175、图形处理器180和任何其他已知的计算机设备/接口)可以集成在单个管芯或集成电路上以提供具有高功能和低功耗的小形状因子。

在一个实施例中,处理器100能够执行编译器、优化和/或转换器代码177以编译、转换和/或优化应用代码176,以支持本文所描述的装置和方法或与其相接合。编译器通常包括用于将源文本/代码转换成目标文本/代码的程序或程序集。通常,利用编译器来编译程序/应用代码是在多个阶段和多遍中完成的,以将高级别编程语言代码变换为低级别机器或汇编语言代码。然而,单遍编译器仍然可以用于简单编译。编译器可以利用任何已知的编译技术并且执行任何已知的编译器操作,例如,词法分析、预处理、解析、语义分析、代码生成、代码变换和代码优化。

较大的编译器通常包括多个阶段,但是大多数情况下这些阶段被包括在两个一般阶段中:(1)前端,即,通常在该处可以进行句法处理、语义处理和一些变换/优化,以及(2)后端,即,通常在该处进行分析、变换、优化和代码生成。一些编译器指代中间部分,其说明了编译器的前端与后端之间的界定的模糊处。因此,对编译器的插入、关联、生成或其他操作的引用可以在前述阶段或遍中的任何一个以及编译器的任何其他已知的阶段或遍中进行。作为说明性示例,编译器潜在地在编译的一个或多个阶段中插入操作、调用、函数等,例如,在编译的前端阶段插入调用/操作,然后在变换阶段期间将调用/操作变换为较低级别的代码。注意,在动态编译期间,编译器代码或动态优化代码可以插入此类操作/调用,以及优化代码以便在运行时期间执行。作为特定说明性示例,可以在运行时期间动态地优化二进制代码(已编译的代码)。这里,程序代码可以包括动态优化代码、二进制代码或其组合。

下面的具体实施方式参考附图。在不同的附图中可以使用相同的附图标记来标识相同或类似的元素。在下面的描述中,出于解释而非限制的目的,阐述了具体细节(例如,特定的结构、架构、接口、技术等),以便提供对各个实施例的各个方面的透彻理解。然而,对于受益于本公开的本领域技术人员显而易见的是,可以在脱离这些具体细节的其他示例中实践各个实施例的各个方面。在某些实例中,省略了对公知的设备、电路和方法的描述,以免不必要的细节模糊对各个实施例的描述。

随着诸如PCIe之类的串行互连中的数据速率持续增加,可能难以跨每个片上系统(SoC)的数百个通道维持10-12的误码率(BER)。造成串扰、符号间干扰(ISI)和信道损耗的各种要素可能是由于插座、过孔、板、连接器和插入卡(AIC)而引起的。针对64GT/s的下一代互连技术(例如,PCIe Gen 6)可以使用脉冲幅度调制(PAM)-4,并且可以针对较低的BER(例如,10-6),类似于以太网已经针对50G和100G数据速率实现低至10-4的目标BER。

在诸如这些BER之类的较低的目标BER的情况下,可以采用前向纠错(FEC)来纠正错误,以将高效BER提升至期望的10-12或更好。本公开描述了使用FEC来降低BER同时解决由于纠错码(ECC)位引起的延迟和带宽损耗的系统和技术。

高延迟对于加载-存储应用(例如,PCIe)、一致性链路(例如,快速路径互连(QPI)/超路径互连(UPI))、串行存储器互连或聚合的I/O、存储器和一致性链路(例如,Intel加速器链路(IAL))可能是禁止的。这些接口将更宽但更慢地运行以避免为延迟付出代价,或者以更高的频率在受限信道中运行以避免为延迟付出代价。本公开通过具有并行FEC来减轻延迟问题,并且通过编码改变来减轻带宽损耗问题。

本公开的实施例可以通过使用前向纠错(FEC)促进处于较低的BER(误码率)的、超越PCI快速(PCIe)Gen 4的PCIe(例如,PCIe Gen 5、Gen 6)以及其他链路协议的速度增加。FEC可以扩展信道范围,同时维持完全的向后兼容性,即使在存在(多个)重定时器的情况下也是如此。虽然在PCIe Gen 6的上下文中描述了本发明,但是本领域技术人员将认识到,如果使用了FEC,则这些概念适用于其他互连(例如,下一代的多通道链路(例如,一致性/存储器链路、USB等))。

因为例如由于PCIe代的每次迭代而发生的串行互连中的数据速率,越来越难以针对每个片上系统(SoC)的数百个通道维持10-12的误码率(BER)。误码率的影响因素可以包括串扰、符号间干扰(ISI)和信道损耗,这些是由于插座、过孔、板、连接器、插入卡(AIC)等而引起的。普遍认为,针对64GT/s的PCIe(Gen 6)将使用PAM-4,并且可能期望或经历诸如10-6或10-7之类的BER。在诸如这些BER之类的BER的情况下,采用前向纠错(FEC)来纠正错误,以将高效BER降低到期望的10-12或更好。

联网FEC的缺点是由于ECC位而引起的延迟以及带宽损耗。例如,IEEE 802.3OIFCEI 50Gb/s和100GB/s PHY规范使用诸如(544,514)Reed-Solomon(RS)码之类的FEC来纠正多达15个符号错误,以将10-4的BER提升至优于10-15的高效BER。诸如RS码之类的多符号纠错码由于以下两个方面而导致附加的延迟:(i)ECC码需要在长的位集合上以分摊ECC开销以降低带宽开销,以及(ii)纠错电路的复杂度随着可以被纠正的符号的数量呈指数增长,从而导致了附加的流水线级。例如,(544,514)RS码在接收机处引入了大于100ns的延迟加法器。即使通过联网业务标准,这样的延迟也是很高的,该延迟水平对于加载-存储应用(例如,PCI快速(PCIe))、一致性链路(例如,快速路径互连(QPI)/超路径互连(UPI))、串行存储器互连或聚合的I/O、存储器和一致性链路(例如,计算快速链路(CXL))是禁止的。在这些较高数据速率下期望的错误的性质期望将在相同通道上的连续位之间相关(突发错误)。由于通道共享相同的错误源(例如,电源噪声、TX侧的时钟抖动等),因此还期望跨通道的错误之间具有相关性。

图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。重定时器1 204可以通过链路段210b耦合到重定时器2 206。并且重定时器2 206可以通过链路段210c耦合到下游组件上游端口208。

组件也可以通过边带链接来耦合。上游组件下游端口202可以通过边带链路212a耦合到重定时器1 204。重定时器1 204可以通过边带链路212b耦合到重定时器2 206。并且重定时器2 206可以通过边带链路212c耦合到下游组件上游端口208。

重定时器(缓冲器)设备的主要功能是信号重定时。这些功能由重定时器204和206执行。特定的重定时器设备电路将取决于用于链路的PHY。通常,重定时器电路被配置为恢复传入信号并且使用本地时钟和新的发送均衡化电路进行重传,并且可以典型地采用出于该目的的公知的电路,例如,锁相环。重定时器还可以包括发射机和接收机电路,该发射机和接收机电路包括一个或多个放大器电路,以及用于增加接收信号的驱动电平的各种类型的公知的信号调节电路。这种重定时器电路对于高速互连领域技术人员是公知的,并且因此本文没有示出或讨论进一步的细节。

每个重定时器204和206可以具有上游路径和下游路径。在一些实现方式中,重定时器可以包括两个伪端口,并且伪端口可以动态地确定其相应的下游/上游定向。此外,重定时器204和206可以支持包括转发模式和执行模式的操作模式。在某些实例中,重定时器204和206可以对在子链路上接收到的数据进行解码,并且对要在其另一子链路上向下游转发的数据进行重新编码。因此,重定时器可以捕获接收到的位流,之后重新生成位流并且将其重传到另一设备或甚至另一重定时器(或重驱动器或中继器)。在某些情况下,重定时器可以例如在处理并转发有序集合数据时修改其接收的数据中的某些值。另外地,重定时器可以潜在地支持任何宽度选项(例如,由诸如PCIe之类的规范定义的宽度选项集合)作为其最大宽度。

随着串行互连(例如,PCIe、UPI、USB等)的数据速率增加,越来越多地使用重定时器来扩展信道范围。多个重定时器可以级联,以达到甚至更长的信道范围。可以预期,随着信号速度增加,通常情况下,信道范围将典型地减小。因此,随着互连技术加速,重定时器的使用可以变得更加常见。作为示例,随着采用16GT/s的PCIe Gen-4来支持PCIe Gen-3(8GT/s),PCIe互连中重定时器的使用可能增加,随着速度增加,在其他互连中也可能出现这种情况。

在一种实现方式中,可以针对基于PCI快速Gen-4(16GT/s)的重定时器定义常见的BGA(球栅阵列)封装。这样的设计至少可以解决常规PCIe Gen-3(8GT/s)重定时器设备中发现的示例缺陷中的一些,以及采用PCIe Gen-4时出现的问题中的一些。此外,对于PCIeGen-4,期望重定时器供应商的数量和容量增加。由于来自加倍的数据速率(从8GT/s到16GT/s)的信号损耗,在Gen-4中可实现的互连长度显著降低。在这种和其他示例互连技术中,随着数据速率增加,重定时器可以由此具有增加的效用,因为重定时器可以用于显著地增加信道长度,该信道长度否则将受到增加的数据速率的限制。

尽管重定时器被示出为与上游组件和下游组件分离,但是重定时器可以是上游组件或下游组件的一部分、在上游组件或下游组件的板上或在下游组件的封装上。

上游组件下游端口202可以具有对存储元件222(例如,闪速存储装置、高速缓存或其他存储器设备)的访问权。重定时器1 204可以可选地包括类似的存储元件224。重定时器2 206可以可选地包括类似的存储元件226。下游组件上游端口208可以可选地包括类似的存储元件228。

图2B是示出根据本公开的实施例的带内上游端口和重定时器配置的连接系统250的示意图。如图2A中示出的,上游组件下游端口202可以通过链路210a-210c与下游组件上游端口208耦合,该链路210a-210c由两个重定时器204、206扩展。在该示例中,下游端口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被定义/修改为物理层生成的周期性模式,以将来自“重定时器配置寄存器地址/数据(Retimer Config Reg Addr/Data)”(例如,252)的命令/信息运送到重定时器,并且将来自重定时器的响应运送回来以加载到“重定时器配置数据返回(RetimerConfig Data Return)”(例如,254),其中一些位分配给CRC以用于保护数据。例如,在PCIe中,这可以包括增强现有的SKP有序集(例如,利用CSR访问和CSR返回(CRC保护的位))。此外,可以定义用于确保将命令/信息有保证地递送到重定时器以及返回对应的响应的流。物理层机制可以增强,以在重定时器需要某种服务的情况下还包括来自重定时器的通知(除了响应之外),以及其他示例特征。

本公开描述了用于在没有导致与多符号纠正Reed-Solomon码相关联的延迟的情况下解决每个通道上以及跨通道的错误突发的系统、方法、装置和计算机程序产品。本文所描述的系统、方法、装置和计算机程序产品可以通过引入具有在10纳秒范围内的目标延迟的单符号纠正FEC来减轻延迟问题。另外地,本公开引入了取决于链路的带宽利用率来动态地改变带宽效率以及延迟的能力。

本公开描述了交织多个ECC码字以避开突发错误问题并转换为单符号纠正FEC。本文所描述的设备和技术还促进了不同码大小之间的动态切换,以取决于带宽要求来对延迟与带宽进行权衡。

表1展示了如何在FEC码的帮助下将原始BER转换为高效BER。在原始BER大约为10-7的情况下,可以部署单符号纠正FEC以实现可靠的链路。在给定相关性可以跨通道存在的情况下,本公开还描述了一种使每个通道具有其自己的独立的ECC码字的机制。FEC应该能够纠正由于决策反馈均衡化器(DFE)而引起的预期的错误突发,其中一个位反转会导致后续的位反转。例如,如果预期突发错误为16,则突发的第一个错误和最后一个错误可以相隔14位,即使不是中间的所有14位在接收机处有错误。

表1.原始BER对具有符号错误纠正的高效BER

继续潜在错误位的16位突发的示例,本公开描述了将位流分成8位符号。因此,16位的突发可以跨越构成三个连续符号的位。图3是根据本公开的实施例的交织的前向纠正码位300的示意图。如果三个连续符号中的每一个与唯一的纠错码字重叠(如图3中示出的),则每个交织的FEC可以被设计用于纠正符号错误。由于码字上的错误的任何突发都会以可接受的高效BER影响最多一个符号,因此可以使用单符号纠正FEC来纠正位错误。

图3示出了B0、B1、B2和BN-1,它们各自跨多通道链路的每个通道交织。例如,字节B0,B1,B2,……BN-1 302(在图3中标记为对角线的块)可以包括3个交织的ECC字的第一集合。B0,B1,B2,……BN-1 304(在图3中标记为方格线的块)可以包括3个交织的ECC字的第二集合。B0,B1,B2,……BN-1 306(在图3中标记为交叉线的块)可以包括3个交织的ECC字的第三集合。交织的三个ECC字被包括并且跨越每个通道中的数据流的整体。生成器矩阵可以用于生成奇偶校验位,以用于为FEC创建纠错码。G矩阵可以对应于用于校验奇偶性和校验位的奇偶校验矩阵(H矩阵)。图4A-4B中示出了示例H矩阵。

图4A是示出根据本公开的实施例的用于前向纠错的示例H矩阵400的示意图。H矩阵可以是奇偶校验矩阵。第一行代表水平奇偶校验,并且第二行代表跨除0列以外的列的校验位。水平奇偶校验指示符号中已经反转的确切位。符号被定义为ECC码所基于的连续位(b)的集合。图4B是根据本公开的实施例的前向纠错码的位布置450的示意图。在图4B中示出的示例中,b=8。行代表每个符号,并且列代表多个符号。在给定符号内的位反转的情况下,校验位有助于标识已经反转的符号。存在N个符号。符号0是行(或水平)奇偶校验。行1是其余信息符号(2,3,……N-1)的校验位。因此,使用2个校验符号来纠正每个符号故障。

令α为次b的任何基元多项式的根,α的幂代表GF(2b)的元素,其对于0到2b-2的幂都是不同的(即,α0=1,α1,α2,……,α^(2b-2),(开始重复)α^(2b-1)=1,α^(2b)=α,……)。因此,当N<2b–b时,任何符号错误都会导致跨行奇偶校验和校验位的不同的校验子。

图5A是根据本公开的实施例的用于确定位错误的解码逻辑300的示意框图。解码逻辑300可以被实现为硬件电路、软件或硬件电路和软件的组合。解码逻辑300可以至少部分地使用查找502和减法逻辑504,如图5A中示出的。查找表502可以包括循环冗余校验(CRC)位列和对应的列号。解码逻辑300可以位于主机设备或下游连接的设备的接收机处。

接收机可以计算行奇偶校验和校验位,并且可以将行奇偶校验和校验位与跨链路接收到的行奇偶校验和校验位进行比较。如果行奇偶校验和校验位两者都匹配,则没有错误发生。如果行奇偶校验或校验位中的一个不匹配(但另一个匹配),则错误在列0或列1中。如果两者都不匹配,则错误在信息符号2……N中的一个中。行奇偶校验标识符号中已经反转的位。一旦从行奇偶校验中知道了错误符号的位反转,接收机就可以继续跨具有行奇偶校验不匹配的列(2……N-1)中的每一个乘以α的不同幂,并且与列1值匹配的任何一列都是错误的列。图5A示出了示例纠正机制,该纠正机制根据使用图4A中示出的H矩阵(或其他奇偶校验矩阵)执行的计算,假设行奇偶校验和校验位两者都为非0校验子。

在给定解码逻辑500的情况下,接收机中的延迟是FEC码的长度(或值N)。例如,如果每个3路交织的FEC每1280UI开始,则对于64GT/s链路,延迟大约为20ns,效率为0.96。648UI的长度将导致10ns的延迟,效率为0.93,并且312UI将具有5ns的延迟,效率为0.85。在实施例中,可以将10ns设置为默认FEC定时。如果带宽利用率很低(如由PHY层(基于其注入的IDLe符号)测量的),则链路可以切换到312UI FEC(其实际上是刚刚提前被截断的相同FEC)。如果开始大量利用链路,则链路可以切换到20ns FEC。

图5B是根据本公开的实施例的PHY令牌500的示意图。可以定义长度为1的PHY层令牌(“切换FEC令牌”),如图5B中示出的。该令牌应作为较早的FEC的最后DW跨所有通道发送。例如,在图5B中,可以将5ns、10ns、20ns FEC分别编码为长度N1、N2和N3。期望的FEC可以例如包括[26:20]中的位。示例FEC长度可以定义如下:

000_0001b:长度N_1FEC;

000_0010b:长度N_2FEC;

000_0011b:长度N_3FEC;

000_0100b:长度N_4FEC;

其余:保留。

因此,链路的两侧可以具有不同的FEC长度。如果链路进入恢复,则链路可以返回到默认的FEC。因此,即使“切换FEC”令牌被损坏,链路也将进入恢复并返回到默认的FEC。

图6A是根据本公开的实施例的用于将纠错码字交织到数据流中的过程流程图600。首先,发射机可以确定链路带宽和/或利用率(602)。可以使用已知技术(包括但不限于功率管理状态、温度、遥测数据、先前的带宽信息等)来确定链路带宽。然后,发射机可以基于链路利用率信息来确定在数据块中包括ECC字的长度、持续时间或定时(604)。发射机可以将ECC字的定时编码到PHY令牌(例如,切换FEC令牌)中(606)。例如,切换FEC令牌可以被包括在数据传输(其包括FEC位)中,并且可以运送对于接下来的数据传输所期望的FEC定时。切换FEC令牌可以是先前FEC传输的最后一个双字的一部分。

发射机可以基于数据流确定多个纠错码字(608)。在上面的示例中,可以针对被分成8位符号的16位突发生成三个纠错码字。可以将纠错码字交织到数据流中,使得每个码字与代表数据突发的连续位重叠或者与其叠置(610)。例如,对于错误位的16位突发,每个ECC字可以与8个连续位重叠,使得3个唯一的ECC字将与16位突发的整体重叠。然后,发射机可以跨链路发送数据流(612)。

图6B是根据本公开的实施例的用于对接收到的数据流中的交织的纠错码字进行解码的过程流程图650。接收机可以接收数据块的双字,该数据块包括指示接下来的数据块的前向纠错的长度的PHY令牌(652)。然后,接收机可以跨链路从发射机接收数据流(654)。接收到的数据流可以包括多个交织的纠错码字,多个纠错码字中的每一个对应于数据流的8个连续位。接收机可以对交织的纠错码字进行解码以执行奇偶校验(656)。接收机可以使用接收到的位和预定的奇偶校验矩阵来计算行奇偶校验和校验位(658)。接收机可以将计算出的行奇偶校验和校验位与利用数据流跨链路接收的那些行奇偶校验和校验位进行比较(660)。如果可能并且如果存在错误,则接收机然后可以纠正位错误(662)(如上面所描述的)。

虽然在PCIe Gen 6的上下文中描述了本公开,但是本领域技术人员将认识到,如果使用了FEC,则这些概念适用于其他互连(例如,下一代的多通道链路(例如,一致性/存储器链路、USB等))。

一种互连结构架构包括外围组件互连(PCI)快速(PCIe)架构。PCIe的主要目标是使得来自不同供应商的组件和设备能够在开放式架构中互操作,从而跨越多个市场细分:(台式的和移动的)客户端、(标准的和企业的)服务器以及嵌入式和通信设备。PCI快速是针对各种未来的计算和通信平台定义的高性能的通用I/O互连。某些PCI属性(例如,其使用模型、加载-存储架构和软件接口)已经通过其修订版进行维护,而先前的并行总线实现方式已经由高度可扩展的完全串行接口取代。PCI快速的最近的版本利用点对点互连、基于交换机的技术和分组协议中的改进,以递送新的性能和特征水平。PCI快速支持的高级特征中的一些包括功率管理、服务质量(QoS)、热插拔/热交换支持、数据完整性和错误处理。

参考图7,示出了由互连一组组件的点对点链路组成的结构的实施例。系统700包括与控制器中心715耦合的处理器705和系统存储器710。处理器705包括任何处理元件,例如,微处理器、主机处理器、嵌入式处理器、协处理器或其他处理器。处理器705通过前端总线(FSB)706与控制器中心715耦合。在一个实施例中,FSB 706是如下面所描述的串行点对点互连。在另一实施例中,链路706包括符合不同的互连标准的串行、差分互连架构。

系统存储器710包括任何存储器设备,例如,随机存取存储器(RAM)、非易失性(NV)存储器或可由系统700中的设备访问的其他存储器。系统存储器710通过存储器接口716与控制器中心715耦合。存储器接口的示例包括双倍数据速率(DDR)存储器接口、双通道DDR存储器接口和动态RAM(DRAM)存储器接口。

在一个实施例中,控制器中心715是外围组件互连快速(PCIe或PCIE)互连层级中的根中心、根联合体或根控制器。控制器中心715的示例包括芯片组、存储器控制器中心(MCH)、北桥、互连控制器中心(ICH)、南桥和根端口控制器/中心。术语芯片组经常指代两个物理上分离的控制器中心,即,存储器控制器中心(MCH)耦合到互连控制器中心(ICH)。注意,当前系统经常包括与处理器705集成的MCH,而控制器715以与下面所描述的方式类似的方式与I/O设备通信。在一些实施例中,可选地通过根联合体715来支持对等路由。

这里,控制器中心715通过串行链路719与交换机/桥接器720耦合。输入/输出模块717和721(也可以称为接口/端口717和721)包括/实现分层协议栈以提供控制器中心715与交换机720之间的通信。在一个实施例中,多个设备能够耦合到交换机720。

交换机/桥接器720将来自设备725的分组/消息向上游(即,沿着层级朝向根联合体向上)路由到控制器中心715,并且将来自处理器705或系统存储器710的分组/消息向下游(即,沿着层级远离根端口控制器向下)路由到设备725。在一个实施例中,交换机720被称为多个虚拟PCI到PCI桥接器设备的逻辑组装件。设备725包括要耦合到电子系统的任何内部或外部设备或组件,例如,I/O设备、网络接口控制器(NIC)、插入卡、音频处理器、网络处理器、硬盘驱动器、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线(Firewire)设备、通用串行总线(USB)设备、扫描仪和其他输入/输出设备。通常在PCIe中,诸如设备之类的日常用语被称为端点。尽管没有具体示出,但是设备725可以包括PCIe到PCI/PCI-X桥接器,以支持旧有的PCI设备或其他版本的PCI设备。PCIe中的端点设备通常被分类为旧有的集成端点、PCIe集成端点或根联合体集成端点。

图形加速器730也通过串行链路732与控制器中心715耦合。在一个实施例中,图形加速器730耦合到与ICH耦合的MCH。然后,将交换机720以及因此I/O设备725耦合到ICH。I/O模块731和718还用于实现分层协议栈以在图形加速器730与控制器中心715之间进行通信。类似于上面关于MCH的讨论,图形控制器或图形加速器730本身可以集成在处理器705中。

转到图8,示出了分层协议栈的实施例。分层协议栈800包括任何形式的分层通信栈,例如,快速路径互连(QPI)栈、PCIe栈、下一代高性能计算互连栈或其他分层栈。尽管紧接着下面参考图7-10进行的讨论涉及PCIe栈,但是相同的概念可以应用于其他互连栈。在一个实施例中,协议栈800是PCIe协议栈,其包括事务层805、链路层810和物理层820。接口(例如,图7中的接口717、718、721、722、726和731)可以表示为通信协议栈800。作为通信协议栈的表示也可以称为实现/包括协议栈的模块或接口。

PCI快速使用分组以在组件之间传送信息。在事务层805和数据链路层810中形成分组以将信息从发送组件运送到接收组件。当发送的分组流经其他层时,利用在这些层处处理分组所必需的附加信息来对发送的分组进行扩展。在接收侧,发生相反的过程,并且分组从其物理层820表示变换为数据链路层810表示,并且(针对事务层分组)最终变换为可以由接收设备的事务层805处理的形式。

事务层

在一个实施例中,事务层805用于提供设备的处理核心与互连架构(例如,数据链路层810和物理层820)之间的接口。就这一点而言,事务层805的主要责任是对分组(即,事务层分组或TLP)的组装和拆分。转换层805典型地管理针对TLP的基于信用的流控制。PCIe实现分离事务,即,请求和响应按时间分离的事务,从而在目标设备收集针对响应的数据时允许链路运送其他业务。

此外,PCIe利用基于信用的流控制。在该方案中,设备在事务层805中通告接收缓冲器中的每一个的初始信用量。在链路的相对端处的外部设备(例如,图7中的控制器中心715),对由每个TLP消耗的信用的数量进行计数。如果事务没有超过信用限制,则该事务可以被发送。在接收到响应后,将恢复信用量。信用方案的一个优点是,只要没有达到信用限制,则信用返还的延迟将不会影响性能。

在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包括用于将数据传送到存储器映射位置/从存储器映射位置传送数据的读取请求和写入请求中的一个或多个。在一个实施例中,存储器空间事务能够使用两种不同的地址格式,例如,短地址格式(例如,32位地址)或长地址格式(例如,64位地址)。配置空间事务用于访问PCIe设备的配置空间。针对配置空间的事务包括读取请求和写入请求。消息空间事务(或简称为消息)被定义以支持PCIe代理之间的带内通信。

因此,在一个实施例中,事务层805组装分组报头/有效载荷806。当前分组报头/有效载荷的格式可以在PCIe规范网站处的PCIe规范中找到。

快速参考图9,示出了PCIe事务描述符的实施例。在一个实施例中,事务描述符900是用于运送事务信息的机制。就这一点而言,事务描述符900支持对系统中的事务的标识。其他潜在用途包括跟踪对默认事务排序的修改以及事务与信道的关联。

事务描述符900包括全局标识符字段902、属性字段904和信道标识符字段906。在所示示例中,全局标识符字段902被描绘为包括本地事务标识符字段908和源标识符字段910。在一个实施例中,全局事务标识符902对于所有未完成的请求是唯一的。

根据一种实现方式,本地事务标识符字段908是由请求代理生成的字段,并且本地事务标识符字段908对于对该请求代理而言要求完成的所有未完成请求是唯一的。此外,在该示例中,源标识符910唯一地标识PCIe层级内的请求者代理。因此,本地事务标识符908字段连同源ID 910一起提供层级域内的事务的全局标识。

属性字段904指定事务的特性和关系。就这一点而言,属性字段904潜在地用于提供允许对事务的默认处理进行修改的附加信息。在一个实施例中,属性字段904包括优先级字段912、保留字段914、排序字段916和非窥探(no-snoop)字段918。这里,优先级子字段912可以由启动程序修改以向事务指派优先级。保留属性字段914被保留用于将来使用或供应商定义的使用。可以使用保留属性字段来实现使用优先级或安全属性的可能的使用模型。

在该示例中,排序属性字段916用于供应传达可以修改默认排序规则的排序类型的可选信息。根据一个示例实现方式,排序属性“0”表示要应用的默认排序规则,其中排序属性“1”表示放宽排序,其中写入可以在相同方向上传递写入,并且读取完成可以在相同方向上传递写入。窥探属性字段918用于确定事务是否被窥探。如所示的,信道ID字段906标识与事务相关联的信道。

链路层

链路层810(也称为数据链路层810)用作事务层805与物理层820之间的中间级。在一个实施例中,数据链路层810的责任是提供用于在链路的两个组件之间交换事务层分组(TLP)的可靠机制。数据链路层810的一侧接受由事务层805组装的TLP,应用分组序列标识符811(即,标识号或分组号),计算并应用错误检测码(即,CRC 812),并且将经修改的TLP提交给物理层820以用于跨物理到外部设备的传输。

物理层

在一个实施例中,物理层820包括逻辑子块821和电子块822,以将分组物理地发送到外部设备。这里,逻辑子块821负责物理层820的“数字”功能。就这一点而言,逻辑子块包括用于准备用于由物理子块822传输的传出信息的发送部分,以及用于在将接收到的信息传递到链路层810之前标识并准备接收到的信息的接收机部分。

物理块822包括发射机和接收机。发射机由逻辑子块821供应符号,发射机将该符号串行化并发送到外部设备上。接收机被供应有来自外部设备的经串行化的符号,并且将接收到的信号变换为位流。位流被解串行化并且供应给逻辑子块821。在一个实施例中,采用8b/10b传输码,其中发送/接收十位符号。这里,特殊符号用于利用帧823对分组进行组帧。此外,在一个示例中,接收机还提供从传入串行流中恢复的符号时钟。

如上面所陈述的,尽管参考PCIe协议栈的特定实施例讨论了事务层805、链路层810和物理层820,但是分层协议栈不限于此。实际上,可以包括/实现任何分层协议。作为示例,表示为分层协议的端口/接口包括:(1)用于组装分组的第一层(即,事务层);用于对分组进行排序的第二层(即,链路层);以及用于发送分组的第三层(即,物理层)。作为具体示例,使用公共标准接口(CSI)分层协议。

接下来参考图10,示出了PCIe串行点对点结构的实施例。尽管示出了PCIe串行点对点链路的实施例,但是串行点对点链路不限于此,因为串行点对点链路包括用于发送串行数据的任何传输路径。在所示的实施例中,基本PCIe链路包括两个低电压差分驱动信号对:发送对1006/1011和接收对1012/1007。因此,设备1005包括用于将数据发送到设备1010的发送逻辑1006以及用于从设备1010接收数据的接收逻辑1007。换言之,在PCIe链路中包括两个发送路径(即,路径1016和1017)以及两个接收路径(即,路径1018和1019)。

传输路径指代用于传输数据的任何路径,例如,传输线路、铜线路、光线路、无线通信信道、红外通信链路或其他通信路径。两个设备(例如,设备1005与设备1010)之间的连接被称为链路(例如,链路1015)。链路可以支持一个通道——每个通道表示差分信号对的集合(一对用于发送,一对用于接收)。为了扩展带宽,链路可以聚合由xN表示的多个通道,其中N是任何支持的链路宽度,例如,1、2、4、8、12、16、32、64或更宽。

差分对指代用于发送差分信号的两个传输路径,例如,线路1016和1017。作为示例,当线路1016从低电压电平切换到高电压电平(即,上升沿)时,线路1017从高逻辑电平驱动到低逻辑电平(即,下降沿)。差分信号潜在地展示出更好的电气特性,例如,更好的信号完整性(即,交叉耦合、电压过冲/下冲、振铃等)。这允许更好的时序窗口,从而实现更快的传输频率。

注意,上面所描述的装置、方法和系统可以在前述的任何电子设备或系统中实现。作为具体说明,以下附图提供了用于利用如本文所描述的本公开的示例性系统。由于更详细地描述了以下系统,因此根据上面的讨论公开、描述和重新考虑了许多不同的互连。并且显而易见的是,上面所描述的发展可以应用于那些互连、结构或架构中的任何一个。

转到图11,示出了根据本公开的一个实施例的由包括用于执行指令的执行单元的处理器形成的示例性计算机系统的框图,其中互连中的一个或多个实现一个或多个特征。系统1100包括诸如处理器1102之类的组件,以根据本公开(例如,在本文所描述的实施例中)采用包括逻辑的执行单元来执行用于处理数据的算法。系统1100是基于可从Intel公司(圣克拉拉,加利福尼亚州)获得的PENTIUM IIITM、PENTIUM 4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统的代表,尽管也可以使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统1100执行可从微软公司(雷德蒙,华盛顿州)获得的WINDOWSTM操作系统的版本,尽管也可以使用其他操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户接口。因此,本公开的实施例不限于硬件电路和软件的任何特定组合。

实施例不限于计算机系统。本公开的替代实施例可以用在诸如手持设备和嵌入式应用之类的其他设备中。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字相机、个人数字助理(PDA)和手持PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中心、广域网(WAN)交换机或可以根据至少一个实施例执行一个或多个指令的任何其他系统。

在该示出的实施例中,处理器1102包括一个或多个执行单元1108,以实现要执行至少一个指令的算法。可以在单处理器台式机或服务器系统的上下文中描述一个实施例,但是替代实施例可以包括在多处理器系统中。系统1100是“中心”系统架构的示例。计算机系统1100包括处理器1102以处理数据信号。作为一个说明性示例,处理器1102包括复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器或者任何其他处理器设备(例如,数字信号处理器)。处理器1102耦合到处理器总线1110,该处理器总线1110在处理器1102与系统1100中的其他组件之间传输数据信号。系统1100的元件(例如,图形加速器1112、存储器控制器中心1116、存储器1120、I/O控制器中心1124、无线收发器1126、闪速BIOS 1128、网络控制器1134、音频控制器1136、串行扩展端口1138、I/O控制器1140等)执行对本领域技术人员而言公知的其常规功能。

在一个实施例中,处理器1102包括级别1(L1)内部高速缓冲存储器1104。取决于架构,处理器1102可以具有单个内部高速缓存或多个级别的内部高速缓存。其他实施例包括取决于特定实现方式和需求的内部高速缓存和外部高速缓存两者的组合。寄存器文件1106用于将不同类型的数据存储在各种寄存器中,包括整数寄存器、浮点寄存器、向量寄存器、组寄存器、影子寄存器、检查点寄存器、状态寄存器和指令指针寄存器。

执行单元1108(其包括用于执行整数和浮点运算的逻辑)也位于处理器1102中。在一个实施例中,处理器1102包括用于存储微码(ucode)的微码ROM,该微码当被执行时将执行用于某些宏指令的算法或处理复杂的场景。这里,微码是潜在可更新的以处理处理器1102的逻辑错误/修复。对于一个实施例,执行单元1108包括用于处理打包的指令集1109的逻辑。通过将打包的指令集1109连同用于执行指令的相关联的电路一起包括在通用处理器1102的指令集中,可以在通用处理器1102中使用打包的数据来执行许多多媒体应用使用的操作。因此,通过使用处理器数据总线的全宽度对打包的数据执行操作,许多多媒体应用可以被加速并且更高效地执行。这潜在地消除了跨处理器的数据总线一次一个数据元素地传送数据的较小单元来执行一个或多个操作的需要。

执行单元1108的替代实施例也可以用在微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中。系统1100包括存储器1120。存储器1120包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备或其他存储器设备。存储器1120存储要由处理器1102执行的、由数据信号表示的指令和/或数据。

注意,本公开的前述特征或方面中的任一个可以在图11中示出的一个或多个互连上使用。例如,用于耦合处理器1102的内部单元的管芯上互连(ODI)(未示出)实现上面所描述的本公开的一个或多个方面。或者本公开与以下组件相关联:处理器总线1110(例如,Intel快速路径互连(QPI)或其他已知的高性能计算互连)、到存储器1120的高带宽存储器路径1118、到图形加速器1112的点对点链路(例如,符合外围组件互连快速(PCIe)的结构)、控制器中心互连1122、I/O或用于耦合其他示出的组件的其他互连(例如,USB、PCI、PCIe)。这种组件的一些示例包括音频控制器1136、固件中心(闪速BIOS)1128、无线收发器1126、数据存储装置1124、包含用户输入和键盘接口1142的旧有的I/O控制器1110、串行扩展端口1138(例如,通用串行总线(USB))和网络控制器1134。数据存储设备1124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪速存储器设备或其他大容量存储设备。

现在参考图12,示出了根据本公开的实施例的第二系统1200的框图。如图12中示出的,多处理器系统1200是点对点互连系统,并且包括经由点对点互连1250耦合的第一处理器1270和第二处理器1280。处理器1270和1280中的每一个可以是处理器的某个版本。在一个实施例中,1252和1254是串行点对点一致互连结构的一部分,例如,Intel快速路径互连(QPI)架构。因此,本公开可以在QPI架构内实现。

虽然仅示出了具有两个处理器1270、1280,但是应该理解的是,本公开的范围不限于此。在其他实施例中,一个或多个附加处理器可以存在于给定处理器中。

处理器1270和1280被示为分别包括集成存储器控制器单元1272和1282。处理器1270还包括作为其总线控制器单元的一部分的点对点(P-P)接口1276和1278;类似地,第二处理器1280包括P-P接口1286和1288。处理器1270、1280可以使用P-P接口电路1278、1288经由点对点(P-P)接口1250交换信息。如图12中示出的,IMC 1272和1282将处理器与相应的存储器(即,存储器1232和存储器1234)耦合,这些存储器可以是本地附接到相应处理器的主存储器的部分。

处理器1270、1280各自使用点对点接口电路1276、1294、1286、1298经由单独的P-P接口1252、1254与芯片组1290交换信息。芯片组1290还经由接口电路1292沿着高性能图形互连1239与高性能图形电路1238交换信息。

共享高速缓存(未示出)可以被包括在任一处理器中或两个处理器外部;而经由P-P互连与处理器连接,使得如果处理器被置于低功率模式,则任一处理器或两个处理器的本地高速缓存信息可以存储在共享高速缓存中。

芯片组1290可以经由接口1296耦合到第一总线1216。在一个实施例中,第一总线1216可以是外围组件互连(PCI)总线,或者诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但本公开的范围不限于此。

如图12中示出的,各种I/O设备1214连同将第一总线1216耦合到第二总线1220的总线桥1218一起耦合到第一总线1216。在一个实施例中,第二总线1220包括低引脚计数(LPC)总线。在一个实施例中,各种设备与第二总线1220耦合,包括例如,键盘和/或鼠标1222、通信设备1227和存储单元1228(例如,磁盘驱动器或其他大容量存储设备,其通常包括指令/代码和数据1230)。此外,音频I/O 1224被示为与第二总线1220耦合。注意,其他架构是可能的,其中所包括的组件和互连架构不同。例如,除了图12的点对点架构,系统可以实现多点分支总线或其他这样的架构。

使用平台中存在的各种惯性和环境传感器,可以实现许多不同的用例。这些用例实现包括感知计算的高级计算操作,并且还允许关于功率管理/电池寿命、安全性和系统响应性进行增强。

例如,关于功率管理/电池寿命问题,至少部分地基于来自环境光传感器的信息,确定平台位置中的环境光条件并相应地控制显示器的强度。因此,在特定光条件下减少操作显示器所消耗的功率。

关于安全性操作,基于从传感器获得的上下文信息(例如,位置信息),可以确定是否允许用户访问特定安全文档。例如,可以准许用户在工作场所或家庭位置访问这些文档。然而,当平台存在于公共位置时,阻止用户访问这些文档。在一个实施例中,该确定基于例如经由GPS传感器或对地标的相机识别确定的位置信息。其他安全性操作可以包括提供彼此靠近距离内的设备的配对,例如,如本文描述的便携式平台和用户的台式计算机、移动电话等。在一些实现方式中,当这些设备如此配对时,经由近场通信实现特定共享。然而,当设备超过特定距离时,可以禁用这种共享。此外,当将如本文描述的平台与智能电话配对时,当在公共位置时,警报可以被配置为当设备移动超过离彼此预确定的距离时触发。相反,当这些配对的设备处于安全位置(例如,工作场所或家庭位置)时,设备可以超过该预确定的限制而不触发这种警报。

还可以使用传感器信息来增强响应性。例如,即使当平台处于低功率状态时,仍然可以使得传感器能够以相对低的频率运行。因此,确定例如由惯性传感器、GPS传感器等确定的平台位置的任何变化。如果没有注册过任何这样的变化,则发生到前一无线中心(例如,Wi-FiTM接入点或类似无线使能器)的更快连接,因为在这种情况下不需要扫描可用的无线网络资源。因此,实现当从低功率状态唤醒时的更高级别的响应性。

应当理解,使用经由如本文描述的平台内的集成传感器获得的传感器信息,可以实现许多其他用例,并且以上示例仅用于说明的目的。使用如本文描述的系统,感知计算系统可以允许添加替代输入模态,包括手势识别,并且使得系统能够感测用户操作和意图。

在一些实施例中,可以存在一个或多个红外或其他热感测元件,或用于感测用户的存在或移动的任何其他元件。这种感测元件可以包括一起工作、按顺序工作或两者的多个不同元件。例如,感测元件包括通过例如超声飞行时间相机或图案化光相机提供诸如光或声音投影之类的初始感测、接下来感测手势检测的元件。

另外,在一些实施例中,该系统包括光发生器以产生照明线。在一些实施例中,该线提供关于虚拟边界的视觉提示,即空间中的虚构或虚拟位置,其中用户通过或突破虚拟边界或平面的动作被解释为与计算系统接合的意图。在一些实施例中,照明线可以随着计算系统关于用户转变到不同状态而改变颜色。照明线可以用于为用户提供空间中的虚拟边界的视觉提示,并且可以由系统用于确定计算机关于用户的状态转变,包括确定何时用户希望与计算机接合。

在一些实施例中,计算机感测用户位置并操作以将用户的手移动通过虚拟边界解释为指示用户与计算机接合的意图的手势。在一些实施例中,在用户经过虚拟线或平面时,由光发生器生成的光可以改变,从而向用户提供用户已经进入用于提供手势以向计算机提供输入的区域的视觉反馈。

显示屏可以提供计算系统关于用户的状态转变的视觉指示。在一些实施例中,以其中例如通过使用感测元件中的一个或多个感测元件由系统感测到用户的存在的第一状态提供第一屏幕。

在一些实现方式中,系统用于感测用户身份,例如,通过面部识别。这里,可以以其中计算系统已经识别出用户身份的第二状态提供到第二屏幕的转变,其中该第二屏幕向用户提供用户已经转变到新状态的视觉反馈。可以以其中用户已经确认对用户的识别的第三状态发生到第三屏幕的转变。

在一些实施例中,计算系统可以使用转变机制来确定针对用户的虚拟边界的位置,其中虚拟边界的位置可以随用户和上下文而变化。计算系统可以生成光(例如,照明线),以指示用于与系统接合的虚拟边界。在一些实施例中,计算系统可以处于等待状态,并且可以以第一颜色产生光。计算系统可以检测用户是否已经到达虚拟边界,例如,通过使用感测元件来感测用户的存在和移动。

在一些实施例中,如果检测到用户已经越过虚拟边界(例如,用户的手比虚拟边界线更靠近计算系统),则计算系统可以转变到用于从用户接收手势输入的状态,其中指示转变的机制可以包括光指示虚拟边界改变为第二颜色。

在一些实施例中,计算系统然后可以确定是否检测到手势移动。如果检测到手势移动,则计算系统可以继续进行手势识别过程,该过程可以包括使用来自手势数据库的数据,该手势数据库可以驻留在计算设备中的存储器中或者可以由计算设备以其他方式访问。

如果识别出用户的手势,则计算系统可以响应于输入而执行功能,并且如果用户在虚拟边界内则返回以接收附加手势。在一些实施例中,如果未识别到手势,则计算系统可以转变到错误状态,其中指示错误状态的机制可以包括光指示虚拟边界改变为第三颜色,其中如果用户在虚拟边界内以便与计算系统接合,则系统返回以接收附加的手势。

如上面提及的,在其他实施例中,系统可以被配置为可转换平板系统,其可以以至少两种不同的模式来使用:平板模式和笔记本模式。可转换系统可以具有两个面板,即显示面板和基底面板,从而在平板模式下,两个面板堆叠地布置在彼此顶部上。在平板模式下,显示面板面向外部,并且可以提供在常规平板中发现的触摸屏功能。在笔记本模式中,两个面板可以以打开的翻盖式配置来布置。

在各种实施例中,加速度计可以是具有至少50Hz的数据速率的3轴加速度计。还可以包括陀螺仪,其可以是3轴陀螺仪。另外,可以存在电子罗盘/磁力计。另外,可以提供一个或多个接近度传感器(例如,用于打开盖板以感测人何时接近(或不接近)系统并调节功率/性能以延长电池寿命)。对于一些OS的传感器融合能力(包括加速度计、陀螺仪和罗盘),可以提供增强的特征。另外,经由具有实时时钟(RTC)的传感器中心,可以实现从传感器唤醒机制,以在系统的其余部分处于低功率状态时接收传感器输入。

在一些实施例中,内部盖板/显示器打开开关或传感器用于指示盖板何时关闭/打开,并且可以用于将系统置于连接待机或自动从连接待机状态唤醒。其他系统传感器可以包括用于内部处理器、存储器和皮肤温度监测的ACPI传感器,以基于感测到的参数来实现处理器和系统操作状态的改变。

在实施例中,OS可以是实现连接待机(本文中也称为Win8 CS)的8OS。Windows 8连接待机或具有类似状态的另一OS可以经由如本文描述的平台提供非常低的超空闲功率,以使得应用能够以非常低的功耗保持连接到例如基于云的位置。该平台可以支持3个功率状态,即屏幕开启(正常);连接待机(作为默认“关闭”状态);以及关机(功耗为零瓦特)。因此,在连接待机状态下,即使屏幕关闭,平台也会在逻辑上开启(处于最小功率水平)。在这样的平台中,可以使功率管理对应用透明并维持持续连接,部分地由于卸载技术使得最低供电的部件能够执行操作。

尽管已经关于有限数量的实施例描述了本公开,但是本领域技术人员将理解由此产生的许多修改和变型。所附权利要求旨在覆盖落入本公开的真实精神和范围内的所有这些修改和变化。

设计可以经历从创建到仿真到制造的各个阶段。表示设计的数据可以以多种方式表示设计。首先,如在仿真中有用,可以使用硬件描述语言或另一种功能描述语言来表示硬件。另外地,可以在设计过程的某些阶段产生具有逻辑和/或晶体管栅极的电路级模型。此外,大多数设计在某个阶段达到表示各种设备在硬件模型中的物理放置的数据级别。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定对于用于制造集成电路的掩模而言在不同掩模层上存在或不存在各种特征的数据。在设计的任何表示中,数据可以存储在任何形式的机器可读介质中。存储器或诸如磁盘之类的磁或光存储装置可以是用于存储经由光波或电波发送的信息的机器可读介质,该光波或电波被调制或以其他方式生成以发送这样的信息。当发送指示或携带代码或设计的电载波时,在执行对电信号的复制、缓冲或重传的程度上,制作新的副本。因此,通信提供商或网络提供商可以将体现本公开的实施例的技术的诸如编码到载波中的信息之类的制品至少临时地存储在有形的机器可读介质上。

如本文所使用的模块指代硬件、软件和/或固件的任何组合。作为示例,模块包括硬件(例如,微控制器),其与用于存储适合于由微控制器执行的代码的非暂时性介质相关联。因此,在一个实施例中,对模块的引用指代特别地被配置用于识别和/或执行要保持在非暂时性介质上的代码的硬件。此外,在另一实施例中,对模块的使用指代包括特别适合于由微控制器执行以执行预定操作的代码的非暂时性介质。并且,如可以推断的,在又一实施例中,术语模块(在该示例中)可以指代微控制器和非暂时性介质的组合。通常,示出为分离的模块界限通常变化并且潜在地重叠。例如,第一模块和第二模块可以共享硬件、软件、固件或其组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,例如,晶体管、寄存器或其他硬件(例如,可编程逻辑器件)。

在一个实施例中,对短语“用于”或“被配置用于”的使用指代对装置、硬件、逻辑或元件进行布置、放在一起、制造、提供以售卖、导入和/或设计以执行指定或确定的任务。在该示例中,没有进行操作的装置或其元件仍“被配置用于”如果其被设计、耦合和/或互连以执行指定任务则执行所述指定任务。作为纯粹说明性的示例,逻辑门可以在操作期间提供0或1。但是“被配置用于”向时钟提供使能信号的逻辑门不包括可以提供1或0的每一个潜在的逻辑门。相反,逻辑门是以在操作期间1或0输出用于启用时钟的某种方式耦合的逻辑门。再次注意,对术语“被配置用于”的使用不要求操作,而是集中于装置、硬件和/或元件的潜在状态,其中在潜在状态下,装置、硬件和/或元件被设计为当装置、硬件和/或元件正在操作时执行特定任务。

此外,在一个实施例中,对短语“能够/能够用于”和/或“可操作用于”的使用是指以这样的方式被设计为使得能够以指定方式使用装置、逻辑、硬件和/或元件的某种装置、逻辑、硬件和/或元件。如上文所提到的,在一个实施例中,对用于、能够用于或可操作用于的使用指代装置、逻辑、硬件和/或元件的潜在状态,其中装置、逻辑、硬件和/或元件没有在操作,但是以这样的方式被设计为使得能够以指定方式使用装置。

如本文所使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,对逻辑电平、逻辑值(logic value)或逻辑上的值(logical value)的使用还称为对1和0的使用,其简单地表示二进制逻辑状态。例如,1指代高逻辑电平,并且0指代低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。然而,已经使用了计算机系统中的值的其他表示。例如,十进制数十也可以表示为二进制值1010和十六进制字母A。因此,值包括能够保持在计算机系统中的信息的任何表示。

此外,状态可以由值或值的部分表示。作为示例,诸如逻辑1之类的第一值可以表示默认或初始状态,而诸如逻辑0之类的第二值可以表示非默认状态。另外,在一个实施例中,术语重置和设置分别指代默认值或状态和更新后的值或状态。例如,默认值潜在地包括高逻辑值(即,重置),而更新后的值潜在地包括低逻辑值(即,设置)。注意,值的任何组合可以用于表示任意数量的状态。

上面所阐述的方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的、能够由处理元件执行的指令或代码来实现。非暂时性机器可访问/可读介质包括以诸如计算机或电子系统之类的机器可读的形式提供(即,存储和/或传输)信息的任何机制。例如,非暂时性机器可访问介质包括随机存取存储器(RAM)(例如,静态RAM(SRAM)或动态RAM(DRAM));ROM;磁或光存储介质;闪速存储器设备;电存储设备;光存储设备;声学存储设备;用于保持从暂时(传播)信号(例如,载波、红外信号、数字信号)接收到的信息的其他形式的存储设备(其用于区别于可以从其接收信息的非暂时性介质);等等。

用于对逻辑进行编程以执行本公开的实施例的指令可以存储在系统中的存储器(例如,DRAM、高速缓存、闪速存储器或其他存储装置)内。此外,可以经由网络或通过其他计算机可读介质的方式来分发指令。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,但不限于软盘、光盘、压缩盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器,或用于经由电、光、声学或其他形式的传播信号(例如,载波、红外信号、数字信号等)通过互联网传输信息的有形的机器可读存储装置。因此,计算机可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的有形机器可读介质。

贯穿本说明书对“一个实施例”或“实施例”的引用表示结合该实施例描述的特定的特征、结构或特性包括在本公开的至少一个实施例中。因此,贯穿本说明书各处出现的短语“在一个实施例中”或“在实施例中”不一定指代同一实施例。此外,特定的特征、结构或特性可以以任何适合的方式组合在一个或多个实施例中。

在前述说明书中,已经参考具体的示例性实施例进行了详细描述。然而,将显而易见的是,在不偏离如所附权利要求书中阐述的本公开的更宽泛的精神和范围的情况下,可以对其进行各种修改和改变。说明书和附图因此应被视为说明意义而非限制意义的。此外,对实施例和其他示范性语言的前述使用不一定指代同一实施例或同一示例,而是可以指代不同且独特的实施例以及潜在地指代同一实施例。

示例1是一种装置,包括用于发送数据的端口;以及耦合到该端口的链路,端口在准备跨链路发送数据块时用于确定要跨该链路发送的数据的突发;基于数据的突发的大小,确定用于前向纠错的多个纠错码字;交织多个纠错码字中的每一个,以与数据的突发的连续符号相对应;以及跨链路发送包括交织的多个纠错码的数据的突发。

示例2可以包括示例1的主题,其中,端口用于通过确定数据的突发将利用的多个连续符号,基于数据的突发的大小来确定多个纠错码;以及针对数据的突发的连续符号中的每一个标识多个纠错码字。

示例3可以包括示例1-2中任一项的主题,其中,端口用于将数据的突发分成符号的子集;确定形成符号的子集的多个连续符号,该符号的子集跨越形成数据的突发的全部数量的位;以及基于多个连续符号来确定多个纠错码字。

示例4可以包括示例3的主题,其中,来自多个纠错码字的一个纠错码字对应于来自多个连续符号的一个符号。

示例5可以包括示例1-4中任一项的主题,其中,端口用于确定链路的带宽利用率;使用带宽利用率来确定用于前向纠错的纠错码的长度;利用纠错码的长度编码物理层令牌;以及跨链路的每个通道发送物理层令牌。

示例6可以包括示例5的主题,其中,物理层令牌作为先前的前向纠错块的最后一个双字被发送。

示例7是一种方法,包括确定要跨链路发送的数据的突发的大小;基于数据的突发的大小,确定用于前向纠错的多个纠错码字;交织多个纠错码字中的每一个,以与数据的突发的连续符号相对应;以及跨链路发送包括交织的多个纠错码的数据的突发。

示例8可以包括示例7的主题,还包括通过确定数据的突发将利用的多个连续符号,基于数据的突发的大小来确定多个纠错码;以及针对数据的突发的连续符号中的每一个标识多个纠错码字。

示例9可以包括示例7-8中任一项的主题,还包括将数据的突发分成符号的子集;确定形成符号的子集的多个连续符号,该符号的子集跨越形成数据的突发的全部数量的位;以及基于多个连续符号来确定多个纠错码字。

示例10可以包括示例9的主题,其中,来自多个纠错码字的一个纠错码字对应于来自多个连续符号的一个符号。

示例11可以包括示例7-10中任一项的主题,还包括确定链路的带宽利用率;使用带宽利用率来确定用于前向纠错的纠错码的长度;利用纠错码的长度编码物理层令牌;以及跨链路的每个通道发送物理层令牌。

示例12可以包括示例11的主题,其中,物理层令牌作为先前的前向纠错块的最后一个双字被发送。

示例17是一种装置,包括用于接收数据的端口;以及耦合到该端口的链路,端口包括用于以下操作的硬件电路:从链路的另一边接收数据块;使用奇偶校验矩阵计算接收到的数据块的行奇偶校验和校验位;将计算出的行奇偶校验和校验位与在数据块中接收到的行奇偶校验和校验位进行比较,该数据块包括在数据块的连续符号之间交织的多个纠错码字;并且基于对计算出的行奇偶校验和校验位与在数据块中接收到的所接收的行奇偶校验和校验位的比较来纠正错误。

示例18可以包括示例17的主题,其中,硬件电路包括查找表和模数减法逻辑电路。

示例19可以包括示例18的主题,其中,查找表包括第一列和第二行,第一列包括循环冗余位,第二行包括与数据块相关联的列号;并且其中,硬件电路将一个或多个校验位和一个或多个奇偶校验位用作查找表的输入。

示例20可以包括示例18的主题,其中,硬件电路用于根据查找表确定要被纠正的列号。

示例21可以包括示例17-20中任一项的主题,端口用于基于由数据块的发射机确定的链路利用率值,跨链路接收标识纠错码字的长度的物理层令牌。

示例22是一种方法,包括从链路的另一边接收数据块,该数据块包括在数据块的连续符号之间交织的多个纠错码字;使用奇偶校验矩阵计算数据块的行奇偶校验和校验位;将计算出的行奇偶校验和校验位与在数据块中接收到的纠错码进行比较;以及基于对计算出的行奇偶校验和校验位与接收到的纠错码的比较来纠正错误。

示例23可以包括示例22的主题,还包括对来自接收到的数据块的多个纠错码字进行解码,多个纠错码字中的每一个与符号的一个或多个连续集合重叠,其中,每个符号包括多个连续位。

示例24可以包括示例23的主题,还包括使用奇偶校验矩阵对多个纠错码字进行解码。

示例25可以包括示例22-24中任一项的主题,还包括接收在物理层令牌中的每个纠错码字的长度,每个纠错码字的长度基于由发射机确定的链路利用率。

对一个或多个实现方式的前述描述提供了说明和描述,但并不旨在是详尽的或将实施例的范围限制为所公开的精确形式。根据上面的教导,修改和变化是可能的,或者可以从各种实施例的实践中获得。

39页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:实时控制比特率的方法及其电子装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类