CN107113084A - 首标奇偶错误处理 - Google Patents
首标奇偶错误处理 Download PDFInfo
- Publication number
- CN107113084A CN107113084A CN201580058051.2A CN201580058051A CN107113084A CN 107113084 A CN107113084 A CN 107113084A CN 201580058051 A CN201580058051 A CN 201580058051A CN 107113084 A CN107113084 A CN 107113084A
- Authority
- CN
- China
- Prior art keywords
- head
- queue
- field
- data
- parity error
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- 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
-
- 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/0078—Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
- H04L1/0079—Formats for control data
- H04L1/0082—Formats 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
-
- 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
- H04L2001/0092—Error control systems characterised by the topology of the transmission link
- H04L2001/0094—Bus
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Systems (AREA)
- Detection And Correction Of Errors (AREA)
- Theoretical Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
Abstract
在首标中检测奇偶校验,其中首标在多个队列的特定队列中,首标用于包括多个字段,并且队列中的每个用于对应于相应事务类型。对多个字段中的一个或多个生成构造的首标数据来指示奇偶错误并且替换多个字段中的一个或多个的数据。基于奇偶错误进入错误抑制模式。
Description
相关申请的交叉引用
该申请要求2014年11月25日提交的题为“HEADER PARITY ERROR HANDLING(首标奇偶错误处理)”的美国专利申请号14/553,692的权益和优先权,其通过引用全部合并于此。
技术领域
该公开关于计算系统,并且特别(但并不是排他性地)关于错误处理。
背景技术
半导体处理和逻辑设计的发展允许可在集成电路设备上存在的逻辑的数量增加。作为必然结果,计算机系统配置从系统中的单个或多个集成电路演变成在个体集成电路上存在的多个核、多个硬件线程和多个逻辑处理器,以及在这样的处理器内集成的其他接口。处理器或集成电路典型地包括单个物理处理器晶片,其中该处理器晶片可能包括任意数量的核、硬件线程、逻辑处理器、接口、存储器、控制器中枢(controller hub)等。
由于在较小封装件装配更多处理能力的较大能力,较小计算设备越来越流行。智能电话、平板电脑、超薄笔记本和其他用户设备呈指数增长。然而,这些较小设备依赖服务器,既用于数据存储又用于超出形状因子的复杂处理。因此,高性能计算市场(即,服务器空间)的需求也增加。例如,在现代服务器中,典型地不仅存在具有多个核的单个处理器,而且还存在多个物理处理器(也称为多个插槽)用于提高计算能力。但随着处理能力连同计算系统中设备的数量增加,插槽与其他设备之间的通信变得更加关键。
实际上,互连已经从主要处理电通信的更加传统的多点总线发展为全方位的互连架构,其促进快速通信。遗憾地是,由于对具有甚至更高速率的功耗的未来处理器的需求增加,对现有互连架构的能力也存在相应的需求。
附图说明
图1图示计算系统的实施例,该计算系统包括互连架构。
图2图示互连架构的实施例,该互连架构包括分层栈。
图3图示要在互连架构内生成或接收的分组的实施例。
图4图示对于互连架构的传送器和接收器对的实施例。
图5图示虚拟化系统的实施例。
图6是根复合体的简化框图。
图7是代表根据至少一个实施例的首标奇偶错误(header parity error)的处理的框图。
图8是示例分组首标的框图。
图9是图示错误抑制模式(error containment mode)的简化流程图。
图10是代表用于处理首标奇偶错误的一个或多个技术的简化流程图。
图11图示对于计算系统的块的实施例,该计算系统包括多个处理器。
各种图中的类似标号和名称指示类似元件。
具体实施方式
在下列描述中,阐述许多特定细节,例如特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统部件、特定测量/高度、特定处理器流水线阶段和操作等的示例,以便提供对本发明的全面理解。然而,不必采用这些特定细节来实践本发明,这对于本领域内技术人员将是明显的。在其他实例中,未详细描述众所周知的部件或方法,例如特定和备选处理器架构、对于描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、采用代码的算法的特定表达、特定掉电和选通技术/逻辑和计算机系统的其他特定操作细节,以避免不必要使本发明难以理解。
尽管下列实施例可以参考特定集成电路中(例如计算平台或微处理器中)的能量节约和能量效率描述,其他实施例能适用于其他类型的集成电路和逻辑设备。本文描述的实施例的相似技术和教导可以适用于其他类型的电路或半导体器件,其也可从较好能量效率和能量节约获益。例如,公开的实施例不限于台式计算机系统或Ultrabooks™。并且还可以在例如手持设备、平板电脑、其他薄笔记本电脑、芯片上系统(SOC)设备和嵌入式应用等其他设备中使用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字拍摄装置、个人数字助理(PDA)和手持PC。嵌入式应用典型地包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器(network hub)、广域网(WAN)交换机或可以执行下文教导的功能和操作的任何其他系统。此外,本文描述的装置、方法和系统不限于物理计算设备,而还可以涉及对于能量节约和效率的软件优化。如将在下文的描述中变得显而易见的,本文描述的方法、装置和系统的实施例(无论是关于硬件、固件、软件还是其组合)对于未来与性能考虑相权衡的 ‘绿色技术’是必不可少的。
由于计算设备在发展,其中的部件变得更复杂。因此,用于部件之间耦合和通信的互连架构在复杂性方面也增加来确保满足最佳部件操作的带宽要求。此外,不同细分市场需要互连架构的不同方面来满足市场需要。例如,服务器需要较高性能,而移动生态系统有时能够为了功率节省而牺牲整体性能。然而,大部分构造的单一目的还是以最大功率节省提供最高可能性能。在下文论述许多互连,其将潜在地从本文论述的本发明的方面获益。
一个互连构造架构包括外围部件互连(PCI)Express(PCIe)架构。PCIe的目标是使来自不同供应商的部件和设备能够在开放架构中互操作,从而跨越多个细分市场;客户端(台式机和手机)、服务器(标准和企业)以及嵌入式和通信设备。PCI Express是为很多种未来计算和通信平台定义的高性能、通用I/O互连。一些PCI属性(例如它的使用模型、负载-存储架构和软件接口)已经通过它的修订来维持,而先前的并行总线实现已经被高度可扩展完全串行接口所替换。PCI Express的更近版本利用点到点互连、基于交换机的技术和分组化协议的进步来交付新级别的性能和特征。功率管理、服务质量(QoS)、热插拔/热交换支持、数据完整性和错误管理是PCI Express所支持的一些高级特征之中的特征。
参考图1,图示构造的实施例,其由互连一组部件的点到点链路组成。系统100包括耦合于控制器中枢115的处理器105和系统存储器110。处理器105包括任何处理元件,例如微处理器、主处理器、嵌入式处理器、协处理器或其他处理器。处理器105通过前端总线(FSB)106耦合于控制器中枢115,例如根中枢(root hub)或根复合体。在一个实施例中,FSB106是如下文描述的串行点到点互连。在另一个实施例中,链路106包括串行差分互连架构,其与不同互连标准兼容。
系统存储器110包括任何存储器设备,例如随机存取存储器(RAM)、非易失性(NV)存储器或可由系统100中的设备访问的其他存储器。系统存储器110通过存储器接口116耦合于控制器中枢115。存储器接口的示例包括双数据速率(DDR)存储器接口、双通道DDR存储器接口和动态RAM(DRAM)存储器接口。
在一个实施例中,控制器中枢115是外围部件互连Express(PCIe或PCIE)互连层级中的根中枢、根复合体或根控制器。控制器中枢115的示例包括芯片集、存储器控制器中枢(MCH)、北桥、互连控制器中枢(ICH)、南桥和根控制器/中枢。术语芯片集通常指两个物理单独控制器中枢,例如耦合于互连控制器中枢(ICH)的存储器控制器中枢(MCH)。注意当前系统通常包括与处理器105集成的MCH,而控制器115采用如下文描述的相似的方式与I/O设备通信。在一些实施例中,对等路由可选地通过根复合体115来支持。
在这里,控制器中枢115通过串行链路119耦合于交换机/网桥(bridge)120。输入/输出模块117和121(其也可以称为接口/端口117和121)包括/实现分层协议栈以在控制器中枢115与交换机120之间提供通信。在一个实施例中,多个设备能够耦合于交换机120。
交换机/网桥120将分组/消息从设备125上游(即,朝着根复合体沿层级向上)路由到控制器中枢115和下游(即,远离根控制器沿层级向下)、从处理器105或系统存储器110到设备125路由。在一个实施例中,交换机120称为多个虚拟PCI到PCI网桥设备的逻辑组装件(assembly)。设备125包括要耦合于例如I/O设备、网络接口控制器(NIC)、插卡、音频处理器、网络处理器、硬驱动器、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、Firewire设备、通用串行总线(USB)设备、扫描仪和其他输入/输出设备等电子系统的任何内部或外部设备或部件。通常在PCIe通俗语中,例如设备称为端点。尽管未具体示出,设备125可以包括PCIe到PCI/PCI-X网桥,用于支持遗留或其他版本PCI设备。PCIe中的端点设备通常归类为遗留、PCIe或根复合体集成端点。
图形加速器130还通过串行链路132耦合于控制器中枢115。在一个实施例中,图形加速器130耦合于MCH,其耦合于ICH。交换机120以及相应地I/O设备125然后耦合于ICH。I/O模块131和118也实现分层协议栈以在图形加速器130与控制器中枢115之间通信。与上文的MCH论述相似,图形控制器或图形加速器130自身可在处理器105中集成。
转向图2,图示分层协议栈的实施例。分层协议栈200包括任何形式的分层通信栈,例如快速路径互连(QPI)栈、PCIe栈、下一代高性能计算互连栈或其他分层栈。尽管紧接着在下文参考图1-4的论述与PCIe栈有关,相同概念可以适用于其他互连栈。在一个实施例中,协议栈200是PCIe协议栈,其包括事务层205、链路层210和物理层220。接口(例如图1中的接口117、118、121、122、126和131)可以表示为通信协议栈200。作为通信协议栈的表示也可以称为实现/包括协议栈的模块或接口。
PCI Express使用分组以用于在部件之间传达信息。分组在事务层205和数据链路层210中形成以将信息从传送部件运送到接收部件。当传送的分组流过其他层时,它们被扩展为带有在那些层处处理分组所必需的额外信息。在接收侧处出现逆过程并且分组从它们的物理层220表示变换成数据链路层210表示并且最后(对于事务层分组)变换成可以由接收设备的事务层205处理的形式。
事务层
在一个实施例中,事务层205在设备的处理核与互连架构(例如数据链路层210与物理层220)之间提供接口。在该方面,事务层205的主要责任是组装和拆卸分组(即,事务层分组或TLP)。转换层205典型地管理对于TLP的基于信用的流控。PCIe实现分离事务,即具有通过时间分开的请求和响应的事务,从而允许链路在目标设备聚集对于响应的数据时运送其他业务。
另外PCIe使用基于信用的流控。在该方案中,设备对事务层205中的接收缓冲器中的每个公告初始信用量。链路的相对端处的外部设备(例如图1中的控制器中枢115)对每个TLP所消耗的信用数量计数。如果事务未超出信用极限,可以传送事务。在接收响应时恢复一定信用量。信用方案的优势是信用回归的延时不影响性能(假定未遇到信用极限)。
在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包括读请求和写请求中的一个或多个以将数据传输到存储器映射位点/从存储器映射位点传输数据。在一个实施例中,存储器空间事务能够使用两个不同的地址格式,例如短地址格式(例如32位地址)或长地址格式(例如64位地址)。配置空间事务用于访问PCIe设备的配置空间。对于配置空间的事务包括读请求和写请求。消息空间事务(或简单地,消息)定义成支持PCIe代理之间的带内通信。
因此,在一个实施例中,事务层205组装分组首标/有效载荷206。例如在图8中图示示例首标分组格式。其他示例分组首标/有效载荷可以基于各种协议规范而格式化,例如在PCIe规范网站处的PCIe规范中找到的首标/有效载荷格式。
快速参考图3,图示PCIe事务描述符的实施例。在一个实施例中,事务描述符300是用于运送事务信息的机构。在该方面,事务描述符300支持系统中事务的识别。其他潜在使用包括跟踪默认事务排序的修改和事务与通道的关联。
事务描述符300包括全局标识符字段302、属性字段304和通道标识符字段306。在图示的示例中,描绘全局标识符字段302,其包括本地事务描述符字段308和源标识符字段310。在一个实施例中,全局事务描述符302对于所有未完成请求是唯一的。
根据一个实现,本地事务标识符字段308是由请求代理生成的字段,并且它对于所有未完成请求(对于该请求代理需要完成)是唯一的。此外,在该示例中,源标识符310在PCIe层级内唯一地标识请求者代理。因此,连同源ID 310,本地事务标识符308字段提供层级域内事务的全局标识。
属性字段304规定事务的特性和关系。在该方面,属性字段304潜在地用于提供额外信息,其允许事务默认处理的修改。在一个实施例中,属性字段304包括优先级字段312、保留字段314、排序字段316和非窥探字段318。在这里,优先级子字段312可以由启动部件(initiator)修改来对事务指派优先级。保留属性字段314被保留以用于未来或供应商定义的使用。使用优先级或安全属性的可能使用模型可以使用保留的属性字段来实现。
在该示例中,排序属性字段316用于供应可选信息,其传达可以修改默认排序规则的排序类型。根据一个示例实现,排序属性“0”指示默认排序规则适用,其中排序属性“1”指示放宽排序,其中写可以在相同方向上超越写,并且读完成可以在相同方向上超越写。窥探属性字段318用于确定事务是否被窥探。如示出的,通道ID字段306识别事务与之关联的通道。
链路层
链路层210(也称为数据链路层210)充当事务层205与物理层220之间的中间阶段。在一个实施例中,数据链路层210的责任是提供用于在链路上的两个部件之间交换事务层分组(TLP)的可靠机制。数据链路层210的一侧接受事务层205所组装的TLP、应用分组序列标识符211(即,标识号或分组号)、计算并且应用检错码(即,CRC 212)并且将修改的TLP提交给物理层220用于跨物理到外部设备的传送。
物理层
在一个示例中,物理层220包括逻辑子块221和电气子块(electrical sub-block)222,用于将分组物理传送到外部设备。在这里,逻辑子块221负责物理层221的“数字”功能。在该方面,逻辑子块包括:传送段,用于准备出站信息以供物理子块222传送;和接收器段,用于在将接收的信息传递到链路层210之前识别并且预备接收的信息。
物理块222包括传送器和接收器。传送器由逻辑子块221供应符号,而传送器使这些符号串行化并且传送到外部设备上。接收器供应有来自外部设备的串行化符号并且将接收信号变换成位流。该位流被反串行化并且供应给逻辑子块221。在一个实施例中,采用8b/10b传送代码,其中传送/接收十位符号。在这里,特殊符号用于利用帧223来使分组成帧。另外,在一个示例中,接收器还提供从进入的串行流恢复的符号时钟。
如上文规定的,尽管事务层205、链路层210和物理层220参考PCIe协议栈的特定实施例论述,分层协议栈不这样受限制。实际上,可以包括/实现任何分层协议。作为示例,表示为分层协议的端口/接口包括:(1)用于组装分组的第一层,即事务层;使分组序列化的第二层,即链路层;和用于传送分组的第三层,即物理层。作为特定示例,使用共用标准接口(CSI)分层协议。
接着参考图4,图示PCIe串行点到点构造的示例实施例。尽管图示PCIe串行点到点链路的实施例,串行点对点链路因为它包括用于传送串行数据的任何传送路径而不这样受限制。在示出的实施例中,基本PCIe链路包括两个低压差分驱动信号对:传送对406/411和接收对412/407。因此,设备405包括用于将数据传送到设备410的传送逻辑406,和用于从设备410接收数据的接收逻辑407。也就是说,两个传送路径(即路径416和417)和两个接收路径(即路径418和419)包括在PCIe链路中。
传送路径指用于传送数据的任何路径,例如传送线、铜线、光学线、无线通信信道、红外通信链路或其他通信路径。两个设备(例如设备405和设备410)之间的连接称为链路,例如链路415。链路可支持一个通路-每个通路代表一组差分信号对(一对用于传送,一对用于接收)。为了扩展带宽,链路可以聚集由xN指示的多个通路,其中N是任何支持的链路带宽,例如1、2、4、8、12、16、32、64或更宽。
差分对指用于传送差分信号的两个传送路径(例如线路416和417)。作为示例,当线路416从低电压水平切换到高电压水平(即,上升沿)时,线路417从高逻辑水平驱动到低逻辑水平(即,下降沿)。差分信号潜在地证明更好的电特性,例如更好的信号完整性,即,交叉耦合、电压过冲/下冲、振铃。这允许更好的定时窗口,其实现更快传送频率。
计算系统可以虚拟化以允许在单个系统上运行多个环境。虚拟化性能已经得以发展使得实现虚拟化的服务器系统可以导致大量闲置容量,其可以用于使服务器系统的计算资源最大化。然而,虚拟化可以引入它自身的额外开销,例如通过预备虚拟化层。已经在寻求解决该开销的技术方案。例如,为此目的开发处理器、芯片集、I/O和互连增强来提高虚拟化平台的性能、效率和鲁棒性。
I/O虚拟化技术方案提供如果每个环境在单独物理机上运行则将存在的相同的隔离。技术方案还旨在对I/O操作提供接近本机性能。隔离应提供存储器空间的分离。隔离可以分离I/O流、中断,以及(在共享设备情况下)隔离控制操作、I/O操作和错误的能力。在软件共享方案中,隔离可以通过虚拟化层来实施。对于其中对I/O绕过虚拟化层的共享硬件设备,其他可以用于实施隔离。
在图5的简化框图中图示的一个示例中,系统500可以包括一个或多个I/O设备505、510、515,其可以通过互连520连接到虚拟机540、545、550上托管的访客驱动器525、530、535。可以提供虚拟机管理器(VMM)555来实现基于虚拟软件的交换机以将分组路由到合适的虚拟机以及从合适的虚拟机路由分组。地址转换层560可以用于在互连520与VMM555的仿真层之间提供接口。在一些情况下,明显的CPU开销可以由虚拟机管理器(VMM)用于实现基于虚拟软件的交换机,其中该CPU开销使I/O设备上的最大吞吐量减少。在一些实例中,处理通过软件交换机的每个分组可以使用多个CPU周期。因此,在一些实现中,VMM的I/O仿真层可以向I/O操作添加开销。
虚拟化地址转换560(例如Intel® VT-d技术)可以促进存储器转换并且确保存储器保护,其使设备能够执行到/从主机存储器的直接存储器访问(DMA)。虚拟化转换560可以允许绕过VMM 555的I/O仿真层,从而导致虚拟机吞吐量提高。在一个实现中,地址转换可以允许虚拟机直接访问物理地址(如这样通过VMM配置的话)。这可以允许虚拟机(例如,540、545、550)内的设备驱动器(例如,525、530、535)能够直接写入IO设备(例如,505、510、515)的寄存器。相似地,虚拟化转换560可以直接写入虚拟机的存储器空间,例如DMA操作。
在一些实现中,VMM 555使用并且配置虚拟化转换层560以在向/从I/O设备(例如,505、510、515)发送数据时执行地址转换。虚拟化转换层560可以提供基于硬件的机制来转换对于由I/O设备发出的DMA事务的地址。在一些情况下,访客操作系统(OS)看到的地址空间与主机的底层物理地址不相同。当访客OS直接与I/O设备对话时,它在命令和缓冲器描述符中提供访客物理地址(GPA)。GPA在I/O设备发出DMA事务时被I/O设备使用并且要转换成主机物理地址(HPA)使得DMA事务可以对准已经配置为DMA缓冲器的底层物理存储器页面。虚拟化转换可以使用分组中的值作为到由VMM创建的查找表的索引。字段可以对应于直接分配的功能中的一个并且识别关联的虚拟机。除其他示例外,通过识别虚拟机上下文并且使用查找表,芯片集还可以转换DMA地址使得它对准正确的物理页面并且它可以应用保护机制来确保DMA操作不会影响不相关虚拟机的存储器空间。
首标奇偶错误处理
根复合体可以用于实现大容量存储结构来存储首标和有效载荷数据,连同非常宽芯片上总线来传输该信息。为了检测首标或有效载荷数据的损坏,在这些存储结构和总线上可以采用奇偶。然而,在奇偶错误的情况下,在一些系统(例如对于PCIe根复合体)中,传统的实现通过立即关闭根复合体或通过简单地向软件报告错误来对首标奇偶错误作出响应。首标奇偶错误可以代表致命错误并且传统实现因为首标中的错误而冒着造成持久存储被损坏的风险和/或导致整个系统突然失灵。这两个情景在许多应用(例如数据中心)中都是不可接受的。在一些实现中,可以提供技术方案,例如本文描述的那些,其使根复合体能够实现错误抑制和系统的正常关机。
转向图6,示出计算环境600的一部分的简化框图,该计算环境600包括根复合体605、I/O设备610、615、一个或多个交换机620、CPU 625和相关存储器元件630。在一些实现中,根复合体605可以关于虚拟化系统实现。在本示例中,根复合体605可以包括实现逻辑来帮助检测和处理影响分组首标和数据的奇偶错误的额外部件。例如,如在图6的示例中示出的,根复合体605可以包括奇偶生成逻辑635和奇偶校验逻辑640以及响应于识别的奇偶错误的逻辑,例如首标构造逻辑645、首标传输逻辑650、无限队列逻辑655和错误报告逻辑670。另外的部件可以包括例如地址转换能力(包括对于虚拟化转换)、仲裁和控制逻辑、多个入站队列680(例如,对于多个事务类型)、多个出站队列685和一个或多个端口,根复合体通过该一个或多个端口可以与其他设备通信。
奇偶错误可以使用奇偶校验640和奇偶生成逻辑635检测,包括当首标数据驻存在根复合体605的队列680、685中时影响分组的首标的奇偶错误。为了实现高度错误抑制同时避免阻断或挂起状态,首标构造模块645可以生成“伪(dummy)”首标数据,其替换存在奇偶错误的首标的一个或多个字段。伪首标数据可以基于不同约束并且允许处理首标而没有产生致命错误。例如,首标传输逻辑650可以解释伪首标并且从构造字段中的至少一些识别首标实际上是响应于奇偶错误生成的伪首标。首标传输逻辑650然后可以执行动作来抑制错误并且减少阻断任何其他事务。在通过识别伪首标(例如使用无限队列模块650)进入的中止模式期间还可以管理存储与首标(以及队列680、685中的其他首标)关联的有效载荷数据的队列。无限队列模块还可以促使有效载荷队列自主返回信用以允许分组的正向进程并且使进入队列的新数据同步/忽略该新数据。另外,可以配置错误报告670使得避免不必要的错误升级(例如,基于从系统的接收伪首标并且对具有额外错误的伪首标的构造字段作出响应的部件以及其他设备检测的错误),同时仍记录在根复合体605处检测的奇偶错误。尽管传统系统可以采用有意或无意挂起对首标错误作出响应,具有例如在图6的示例中示出和描述的功能性的根复合体可以实现强大的错误抑制同时实现系统正常关机(例如,通过在其他子系统中智能避免挂起状态)。
图7图示采用根复合体的系统的更详细视图,该根复合体具有部件,例如奇偶生成逻辑635、奇偶校验640a-b、首标构造逻辑645a-b、无限队列模块655a-b、仲裁和控制逻辑665、地址转换逻辑660和首标传输逻辑650。可以提供队列705、710、715、720,其包括先进先出(FIFO)输入队列705、715以及输出队列710、720。可以对首标(例如,705、710)和它们的相应有效载荷数据(例如,715、720)提供单独队列。此外,可以基于分组(以及它的首标和数据)的事务类型对输入和输出首标队列以及输入和输出有效载荷(或“数据”)队列中的每个提供多个队列。例如,在一个示例中,图7代表PCIe根复合体的部件并且输入队列可以包括对于已公告(posted)(P)和非公告(NP)事务和完成(CMP)的首标队列705、710。可以对数据队列715、720提供相似类型特定队列(尽管在该示例中仅对输入提供非公告数据队列(例如,因为响应于非公告请求可不需要输出数据))。
图7的示例进一步代表系统的部件之间的示例流。例如,可以在根复合体处通过PCIe端口从设备(例如,730a)接收分组。在将分组的首标放在队列705中之前,可以通过奇偶生成逻辑635对首标数据(例如,通过对首标数据的XOR运算)计算奇偶值并且该奇偶值可以与队列705中的首标关联。数据的有效载荷可以存放在输入数据队列715中。(在一些情况下,还可以对有效载荷生成奇偶来检测在有效载荷数据在队列715中等待时可以引发的相似错误。)首标的一个或多个字段可以指示首标的分组的事务类型并且首标可以存放在与检测的事务类型关联的输入首标队列中。例如,如果首标识别为与非公告事务关联,首标可以放在非公告输入首标队列中。首标的字段在被根复合体接收时可以假设为无错的,例如基于用于预防损坏数据进入根复合体的事务层错误保护措施(例如,循环冗余校验(CRC))。
在一些实现中,在实际处理分组之前在根复合体内可以存在数据队列的多个阶段,在该情况下每个阶段应能够唯一识别对应分组类型。这样的阶段可以包括地址转换(例如,关于虚拟化计算环境)、用于确定分组的目的地的解码、用于从一致性存储器得到高速缓存行的所有权的预提取,以及其他事务和操作。这可以基于原始首标队列分配(例如,如果首标初始分配给公告、非公告或完成队列,等)实现。然而,可以出现错误,从而使预计用于识别首标的事务类型的首标的字段损坏。例如,在首标数据的寿命期间,它可以在分组处理的多个阶段多次被读取和访问,从而允许潜在出现某种数据损坏。
如上文介绍的,可以校验首标的奇偶(在这些阶段之后或之间)来识别首标数据是否损坏。奇偶校验可以牵涉重新计算奇偶值并且将它与之前对首标生成的奇偶值相比较。在识别首标奇偶错误时,根复合体的一个或多个端口可以置于特殊奇偶错误抑制模式中。在一些实例中,具有错误的首标可以映射到特定端口并且该特定端口可以是置于奇偶错误抑制模式中的端口。系统或一个或多个受影响端口可以保持在错误抑制模式直到系统重启。该模式的目标可以是预防其他事务被挂起或阻断并且没有出现超时。此外,错误记录和报告逻辑(例如,670)可以向系统的操作系统报告检测的奇偶错误作为致命错误,例如通过引发中断或使用另一个技术。操作系统然后可以对奇偶错误采取行动,例如通过停止其上看到奇偶错误的端口上的设备驱动器(例如,以避免对出错端口施加压力)并且正常完成进行中的任务并且发出重启。
在一些情况下,当首标奇偶错误触发进入奇偶错误抑制模式时,可以访问首标构造逻辑来对出现错误的首标构造新的字段来替换那些字段,其在损坏并且允许继续进行时可以在系统内引起灾难性错误。图8示出对于PCIe内的事务层分组(TLP)的示例分组首标格式。此外,使用PCIe作为示例,表1总结PCIe首标的首标字段中的一些的作用并且进一步总结这些字段中奇偶错误的影响。表1进一步总结可以构造来替换原始首标字段的伪首标数据的类型。在一些实现中,从奇偶错误识别首标的字段中的哪些实际上损坏,这是不可能的。在一些情况下,奇偶校验可以仅识别出现错误而不识别什么字段受影响。因此,在这样的实例中,多个首标字段(包括不受错误影响的字段)可以用伪数据替换。
作为说明性示例,可以对公告输入首标队列中的特定首标检测奇偶错误。受错误影响的确切字段可以是未知的,因此根复合体逻辑配置成解决首标字段中的任一个可受影响这一可能性。响应于检测奇偶错误,根复合体的一个或多个端口可以置于奇偶错误抑制模式并且可以触发首标构造逻辑645a。首标构造逻辑可以生成伪首标字段,其包括对类型和格式字段硬编码来确保它们与首标队列的事务类型一致。考虑到字段中的任一个可能包含错误这一可能性,字段值没有一个是可信。例如,因为在分组的长度字段中可能存在错误,分组的有效载荷的长度是未知的。因此,伪数据可以包括用“MemWrite” (假定首标来自公告的输入队列)编码的类型和格式字段并且长度字段还可以硬编码为任意恒定值,例如对应于单个高速缓存行的长度值。在一个示例中,事务中止逻辑忽略地址和长度字段,因此这些字段可以用预定义伪值编码,其包括仅在出现首标奇偶错误时设置的值(即,使得首标奇偶错误和对应的构造的伪首标可以从预定义字段值识别)。从而,伪编码可以被其他中止和控制逻辑读取来促使系统进入奇偶错误抑制模式并且伪值可以进一步由解码逻辑(例如,660)识别使得它绕过解码。未能替代出错地址字段可在地址解码中引起故障并且引起虚假错误,其可以导致系统突然关机。
其他字段中的错误可能造成较少风险使得根复合体可以处理从出错字段产生的错误。因此,在一些情况下首标构造逻辑(例如,645a)可以有效地使用原始首标值,即时它们确实包含错误也如此。作为示例,请求者ID和标签值可以在首标构造逻辑生成的伪首标字段中重新编码。PCIe首标的请求者ID和标签字段例如在非公告事务情况下具有重要用途。这些字段允许请求者使完成与对应的读请求相关。如上文指出的,在一些实现中,由于首标构造逻辑保持从首标队列读出相同值,这些字段中的任一个中的奇偶错误可以在伪首标中保留。因此,在一些示例中,如果在这两个字段中的任一个内发生错误,不正确的请求者ID和标签将发送到始发设备。然而,根复合体的事务中止逻辑(例如,奇偶校验逻辑)可以配置成识别首标包括奇偶错误并且可以在PCIe首标中生成具有设置的“未支持的请求”响应的完成。在始发设备尝试映射具有其未完成请求的完成并且失败(即,因为不正确的请求者ID和标签)时,始发设备可以引发它自己的错误或中断。然而,由于已进入奇偶错误抑制模式,根端口处的错误处理逻辑可以抑制从它下方/下游的其他设备的错误报告,并且阻断任何造成的虚假错误的升级。
可以在图7中示出和描述的示例根复合体中提供额外逻辑。例如,可以提供首标传输逻辑650来读取输入首标和数据队列(例如,705、715)的首标并且处理首标(原始(即,无错)和伪首标两者)使得首标(和对应的有效载荷)被引导到它们合适的目的地(例如另一个端口或系统代理(例如,740)等)。
应意识到关于上文的与在输入首标队列(例如,705)处检测的首标奇偶错误有关的示例描述的原理、操作和特征可以基本上同样适用于在输出队列(例如,710)处检测的首标奇偶错误。作为例外,当在输入队列处接收分组时,根复合体可以对输入首标使用地址解码逻辑来确定首标的目的地。然而,在输出队列(例如,710、720)的情况下,某一其他端口或系统代理已经对首标的目的地解码并且将分组发送到对应的输出队列。因此,输出队列中的分组和首标可以简单地从队列(例如,在任何错误处理后)发送到连接到对应端口的下游设备。
当基于首标奇偶错误(在输入首标队列705或输出首标队列710处)进入错误抑制模式时,可以触发数据队列无限模式逻辑(例如,655a、b)来防止事务由于在长度字段或指定数据队列(例如,715、720)中存储的有效载荷数据的字符的其他字段中提供的伪数据而挂起。在一个示例中,如在图9的流程图900中示出的,队列无限模式可以首先刷新(或重设)905对应数据队列中的所有现有条目。例如,一旦奇偶逻辑报告首标奇偶错误,该特定端口中数据队列中的全部可以将它们的相应指针重设为空条件。例如,对应于该分组类型的其上具有奇偶错误的数据队列可以被刷新。在其他实例中,其中检测到奇偶错误的特定端口的所有数据队列(输入和输出两者)可以被刷新。这可以预防后续奇偶错误(例如,与其他分组类型有关)。
此外,无限队列模式可以提供自主信用处理910。例如,无限队列逻辑可以促使在奇偶错误时对数据队列中的条目/信用的数量计数。这些信用然后可以全部返回总线的另一侧。因为数据队列条目全部已重设(即,在905中),还失去对应的信用信息。返回信用允许在系统重设时继续接收事务而没有抛出额外错误。此外,除响应于首标奇偶错误的初始信用返回外,自主信用处理910还可以对于在首标奇偶错误后在根复合体处接收的新的分组的任何“推送”数据提供信用返回处理。
除自主信用处理910外,无限队列模式逻辑可以另外促使将队列状态信号设置915为恒定值来保证任何后续事务的持续正向进程直到完成系统的正常关机。例如,无限队列模式逻辑可以依赖于对持续正向进程的数据队列的状态抢占式地向系统逻辑的余下部分报告队列状态值。例如,当采用队列无限模式时,对于该队列的状态可以自主设置成持续将队列状态示出为“非空”和“未满”两者。例如,“队列空”(或“FIFO空”)状态值可以被自主解除断言并且指示至少一个高速缓存行可用于读。另外,“队列满”(或“FIFO满”)状态也可以被解除断言并且设置成指示最大数量的条目可用于写。
无限队列模式可以进一步包括弹出请求920的处理。例如,由于首标构造逻辑将数据有效载荷大小硬编码为一个(或另一个任意数)高速缓存行,每个首标将试图弹出一个高速缓存行大小的数据(或使读指针移到队列的下一个条目),而不管对于该特定分组的数据的原始大小如何。无限队列模式可以通过避免从数据队列弹出数据来处理此。相反,在弹出尝试的情况下,无限队列模式逻辑可以阻止弹出,但通过构造成功弹出的指示并且在数据总线上返回恒定值来欺骗请求者。例如,成功弹出可以通过在读数据总线上指示“数据可用”(例如,使用定义的编码,例如对于数据的整个大小读出为全部1的恒定值)来指示。然而,在主控中止的情况下,数据可以从队列读出并且然后被丢弃(即,而不是使用)。
推送请求也可以由无限队列模式逻辑处理925。在首标奇偶错误事件后到达根复合体的后续事务可以尝试将数据推送到数据队列内。无限队列模式逻辑可以干预阻止(或者立即丢弃)试图被推送的数据并且可以通过构造对应于接收的数据的对应数量的信用来“欺骗”数据的始发者认为推送成功。例如,无限队列模式逻辑的自主数据信用处理逻辑可以对对应于试图被推送的数据的信用的数量计数并且促使这些信用自动返回到事务的始发者。
如上文论述的,伪首标数据可以由根复合体处的中止逻辑识别并且促使错误抑制开始。此外,可以在处理的各种阶段/段识别错误。根复合体的中止逻辑可以基于何时(即,在何阶段(例如,解码、预提取和提交)处或之前)出现奇偶错误来执行不同功能。作为示例,如果在解码段时或之前出现首标奇偶错误,在检测到奇偶错误时,地址解码或转换逻辑可以将事务解码为“主控中止”(或另一个中止模式)而不管事务的类型和目的地如何。如果出现首标奇偶错误,相反,在预提取时或之前但在解码后,特定事务可以在检测到奇偶错误时已经完成解码段,这是可能的。在该情况下,中止逻辑可以忽略目标目的地(在解码段中获得的)并且进入具有“主控中止”类型模式的自对等(SPP)。也就是说,可以执行伪预提取来使预提取流水线前进到下一个事务,例如通过使预提取指针移到下一个条目。最后,如果在提交段(例如,用于更新存储器和/或向系统的余下部分呈现行的最新副本)时或之前并且在预提取后检测到首标奇偶错误,对于发现为拥有首标奇偶错误的对于一致性存储器的事务,可以获得所有权并且一致性接口逻辑可以具有高速缓存行(例如,对应于事务)的最新版本。然而,由于奇偶错误,中止逻辑可以拒绝处理“提交”段并且相反可以执行提交段的“主控中止”。主控中止可以在处理的阶段或段中的任一个中发生,基于检测的首标校验错误而导致该段中止。在提交阶段期间的主控中止可以促使首标从首标队列弹出。然而,一致性逻辑仍可以保持对应的高速缓存行。在该情景中,高速缓存行可以写回或被给予另一个一致性代理(例如,如果对于对应高速缓存行接收窥探)。如果事务是对于另一个I/O设备,在预提取段中可以采取动作并且因此主控中止“提交”段可以是足够的。
在首标奇偶错误的情况下,可以提供错误和报告逻辑,其记录对于检测的奇偶错误的特殊不可矫正的致命错误(例如,在每根端口基础上)。在特定实现中,可以提供对应错误逻辑来触发中断(或其他动作)来使错误升级和/或向处理核报告错误并且将该特定错误告知核(和操作系统)。
如上文指出的,伪首标数据在它返回其他设备时可以促使抛出其他错误。错误记录和报告逻辑可以进一步包括用于过滤在已经进入奇偶错误抑制模式后出现的错误的功能性。例如,因为发送到设备的分组中的一些出错字段,错误可从根复合体下方的I/O设备升级。除其他潜在过滤动作外,错误过滤逻辑还可以允许从根复合体的下游端口过滤隐式错误消息(例如,过滤PCIe错误消息(FATAL、NONFATAL和CORR))和/或过滤来自下游端口的I/O设备的任何中断以避免直接从设备的错误升级。
返回图10,示出根据至少一些实现的流程图1000,其图示用于处理首标奇偶错误的技术。例如,奇偶检测逻辑可以检测1005根端口或其他系统部件的输入或输出队列中包括的首标中的奇偶错误。可以构造1010伪首标数据来替换其中发现奇偶错误的首标的一个或多个(或所有)字段。可以响应于检测到奇偶错误进入1015错误抑制模式并且错误抑制模式可以配置成允许系统正常关机。连同该错误抑制,构造的首标数据可以发送到目的地(例如,在伪首标的地址字段中指示的)。错误抑制可以处理并且减轻从构造的首标的伪字段产生的任何残余错误。
应注意尽管上文的许多原理和示例在PCIe和PCIe规范的特定修订的上下文内描述,本文描述的原理、技术方案和特征可以同样能适用于其他协议和系统。此外,注意上文描述的装置、方法和系统可以在如前面提到的任何电子设备或系统中实现。作为特定说明,下文的图提供用于利用如本文描述的本发明的示范性系统。由于在下文更详细描述系统,许多不同互连从上文的论述被公开、描述和再提及。并且如显而易见的,上文描述的进展可以适用于那些互连、构造或架构中的任一个。
参考图11,描绘对于计算系统1100的框图的实施例,该计算系统1100包括多处理器系统。如在图11中示出的,多处理器系统1100是点到点互连系统,并且包括经由点到点1150而耦合的第一处理器1170和第二处理器1180。处理器1170和1180中的每个可以是处理器的某一版本。在一个实施例中,1152和1154是串行点到点一致性互连构造(例如高性能架构)的部分。
尽管仅示出有两个处理器1170、1180,要理解本发明的范围不这样受限制。在其他实施例中,在指定处理器中可以存在一个或多个额外处理器。
示出处理器1170和1180,其分别包括集成存储器控制器单元1172和1182。处理器1170还包括点到点(P-P)接口1176和1178作为它的总线控制器单元的部分;相似地,第二处理器1180包括P-P接口1186和1188。处理器1170、1180可以使用P-P接口电路1178、1188经由点到点(P-P)接口1150来交换信息。如在图11中示出的,IMC 1172和1182使处理器耦合于相应的存储器,即存储器1132和存储器1134,其可以是本地附连到相应处理器的主存储器的部分。
处理器1170、1180每个使用点到点接口电路1176、1194、1186、1198经由个体P-P接口1152、1154而与芯片集1190交换信息。芯片集1190还经由接口电路1192沿高性能图形互连1139与高性能图形电路1138交换信息。
在任一处理器中或两个处理器外部可以包括共享高速缓存(未示出);仍然经由P-P互连与处理器连接,使得如果处理器被置于低功率模式则任一或两个处理器的本地高速缓存信息都可以存储在共享高速缓存中。
芯片集1190可以经由接口1196耦合于第一总线1116。在一个实施例中,第一总线1116可以是外围部件互连(PCI)总线,或例如PCI Express总线或另一个第三代I/O互连总线等总线,但本发明的范围不这样受限制。
如在图11中示出的,各种I/O设备1114连同总线桥1118一起耦合于第一总线1116,该总线桥1118可使第一总线1116耦合于第二总线1120。在一个实施例中,第二总线1120可以是低引脚计数(LPC)总线。各种设备耦合于第二总线1120,其包括例如键盘/鼠标1122、通信设备1127和存储单元1128,例如盘驱动器或其他大容量存储设备,其在一个实施例中通常包括指令/代码和数据1130。此外示出音频I/O 1124,其耦合于第二总线1120。注意其他架构是可能的,其中包括的部件和互连架构有改变。例如,代替图11的点到点架构,系统可以实现多点总线或其他这样的架构。
尽管已经关于有限数量的实施例描述本发明,本领域内技术人员将意识到从其中的许多修改和变化。规定附上的权利要求涵盖所有这样的修改和变化,它们落入本发明的真正精神和范围内。
设计可以经历各种阶段,从创建到模拟到制造。代表设计的数据可以采用许多方式来代表该设计。首先,如在模拟中有用的,硬件可以使用硬件描述语言(HDL)或另一个功能描述语言来表示。另外,具有逻辑和/或晶体管门的电路级模型可在设计过程的某些阶段产生。此外,大部分设计在某个阶段达到代表硬件模型中各种设备的物理布局的数据水平。在其中使用常规半导体制造技术的情况下,代表硬件模型的数据可以是规定对用于生产集成电路的掩模的不同掩模层上的各种特征存在或不存在的数据。在设计的任何表示中,数据可以采用机器可读介质的任何形式存储。存储器或磁或光存储(例如盘)可以是机器可读介质,其存储信息,该信息经由光或电波来传送,调制或用别的方式产生该光或电波来传送这样的信息。当传送指示或携带代码或设计的电载波时,就执行电信号的复制、缓冲或重传来说,形成新的副本。从而,通信提供商或网络提供商可以将例如编码到载波内的体现本发明的实施例的技术的信息等物品存储在有形、机器可读介质上(至少暂时地)。
如本文使用的模块指硬件、软件和/或固件的任何组合。作为示例,模块包括硬件,例如微控制器,其与非暂时性介质关联来存储适于由该微控制器执行的代码。因此,在一个实施例中对模块的引用指硬件,其具体配置成识别和/或执行在非暂时性介质上保持的代码。此外,在另一个实施例中,模块的使用指包括代码的非暂时性介质,该代码具体适于由微控制器执行来执行预定的操作。并且如可以推断的,在再另一个实施例中,术语模块(在该示例中)可指微控制器和非暂时性介质的组合。通常,图示为分开的模块边界通常变化并且潜在地重叠。例如,第一和第二模块可以共享硬件、软件、固件,或其组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括例如晶体管、寄存器等硬件或例如可编程逻辑设备等其他硬件。
在一个实施例中,短语‘配置成’的使用指设置、装配、制造、开价销售、进口和/或设计装置、硬件、逻辑或元件来执行指定或确定的任务。在该示例中,不在操作的装置或其元件如果它被设计、耦合和/或互连来执行所述指定任务则仍然‘配置成’执行指定任务。作为纯粹说明性的示例,逻辑门在操作期间可以提供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)、磁或光卡、闪速存储器或有形的机器可读存储,其在经由电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)通过互联网传送信息中使用。因此,计算机可读介质包括任何类型的有形机器可读介质,其适合于采用由机器(例如,计算机)可读的形式存储或传送电子指令或信息。
下面的示例关于根据该说明书的实施例。一个或多个实施例可以提供装置、系统、机器可读存储、机器可读介质、基于硬件和/或软件的逻辑和方法,用于检测首标中的奇偶错误,其中首标在多个队列的特定队列中,首标用于包括多个字段,并且队列中的每个用于对应于相应的事务类型。另外,构造的首标数据可以对多个字段中的一个或多个生成来指示奇偶错误并且替换多个字段中的一个或多个的数据,并且可以基于奇偶错误进入错误抑制模式。
在一个示例中,字段的至少一个特定字段要用构造的首标数据编码来防止特定字段中的不合法值。
在一个示例中,不合法值由于损坏特定字段的值的奇偶错误而产生。
在一个示例中,首标包括事务层分组的首标。
在一个示例中,多个字段包括格式字段、类型字段、长度字段、地址字段、请求者标识符字段和标签字段。
在一个示例中,构造的首标数据包括:对于格式和类型字段,对应于特定队列的事务类型的值;对于长度字段,第一恒定值;以及对于地址字段,在系统地址空间外的第二恒定值,其中请求者标识符字段和标签字段的值要保留。
在一个示例中,奇偶错误要基于第二恒定值来识别。
在一个示例中,多个字段进一步包括字节使能字段和错误/已破坏字段。构造的首标数据可以包括:对于字节使能字段,第三恒定值;并且对于错误/已破坏字段,假值。
在一个示例中,构造的首标数据用于维持多个字段的至少特定字段的值。
在一个示例中,过滤器防止由于在下游I/O设备处触发错误的特定字段中的构造的首标数据而产生的错误升级。
在一个示例中,特定队列包括首标队列并且在错误抑制模式期间,错误处理部件(handler)用于刷新对应于首标队列的数据队列、继奇偶错误后提供对于事务的信用以及将对于数据队列的队列状态信号设置为恒定值。信用可以响应于队列刷新而返回,以返回对应于从数据队列刷新的事务的信用。
在一个示例中,错误抑制模式包括处理弹出请求和处理推送请求。
在一个示例中,可以提供错误报告器来记录奇偶错误。
在一个示例中,错误抑制模式用于允许在检测奇偶错误时未决的事务在系统关机之前继续进行。
一个或多个实施例可以提供装置、系统、机器可读存储、机器可读介质、基于硬件和/或软件的逻辑,其包括根复合体,该根复合体具有多个首标队列和多个有效载荷数据队列。每个队列对应于相应事务类型,并且根复合体用于检测首标队列的特定队列中的首标中的奇偶错误、对首标的多个字段生成构造的首标数据来替换多个字段的数据以基于奇偶错误防止字段中的至少一个的不合法值并且将具有构造的首标数据的分组发送到另一个系统部件。
一个或多个实施例可以提供装置、系统、机器可读存储、机器可读介质、基于硬件和/或软件的逻辑,其包括一个或多个I/O设备和通信耦合于该一个或多个I/O设备的根复合体。根复合体用于检测首标队列的特定队列中的首标中的奇偶错误、对首标的一个或多个字段生成构造的首标数据来指示奇偶错误并且替换多个字段中的一个或多个的数据、促使进入错误抑制模式并且将包括构造的首标数据的分组发送到另一个系统部件。根复合体可以进一步包括多个队列,其包括输入队列和输出队列。
在该整个说明书中对“一个实施例”或“实施例”的引用意指连同实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。从而,短语“在一个实施例中”或“在实施例中”在该整个说明书中各种地方的出现不一定都指相同的实施例。此外,特定特征、结构或特性可以采用任何适合的方式在一个或多个实施例中组合。
在前面的说明书中,参考特定示范性实施例给出详细描述。然而,可对其做出各种修改和改变而不偏离如附上的权利要求中阐述的本发明更广泛的精神和范围,这将是明显的。说明书和附图因此要在说明性意义而非限制性意义上考虑。此外,实施例和其他示范性语言在前面的使用不一定都指相同的实施例或相同的示例,而可指不同且独特的实施例,以及潜在地可以指相同的实施例。
Claims (25)
1.一种装置,其包括:
奇偶错误检测器,用于检测首标中的奇偶错误,其中所述首标在多个队列的特定队列中,所述首标用于包括多个字段,并且所述队列中的每个用于对应于相应的事务类型;
首标构造器,用于对所述多个字段中的一个或多个生成构造的首标数据,其中所述构造的首标数据用于指示所述奇偶错误并且替换所述多个字段中的一个或多个的数据;以及
错误处理部件,用于基于所述奇偶错误进入错误抑制模式。
2.如权利要求1所述的装置,其中所述字段的至少一个特定字段要用所述构造的首标数据编码来防止所述特定字段中的不合法值。
3.如权利要求2所述的装置,其中所述不合法值由于损坏所述特定字段的值的奇偶错误而产生。
4.如权利要求1所述的装置,其中所述首标包括事务层分组的首标。
5.如权利要求4所述的装置,其中所述多个字段用于包括格式字段、类型字段、长度字段、地址字段、请求者标识符字段和标签字段。
6.如权利要求5所述的装置,其中所述构造的首标数据用于包括:
对于所述格式和类型字段,对应于所述特定队列的事务类型的值;
对于所述长度字段,第一恒定值;以及
对于所述地址字段,在系统地址空间外的第二恒定值;
其中所述请求者标识符字段和所述标签字段的值要保留。
7.如权利要求6所述的装置,其中所述奇偶错误要基于所述第二恒定值来识别。
8.如权利要求5所述的装置,其中所述多个字段进一步用于包括字节使能字段和错误/已破坏字段。
9. 如权利要求8所述的装置,其中所述构造的首标数据用于包括:
对于所述字节使能字段,第三恒定值;以及
对于所述错误/已破坏字段,假值。
10.如权利要求1所述的装置,其中所述构造的首标数据用于维持所述多个字段中的至少特定字段的值。
11.如权利要求10所述的装置,其中所述根复合体进一步用于包括过滤器,用于防止由于在下游I/O设备处触发错误的所述特定字段中的构造的首标数据而产生的错误升级。
12.如权利要求1所述的装置,其中所述特定队列包括首标队列并且在所述错误抑制模式期间,所述根复合体用于:
刷新对应于所述首标队列的数据队列;
继奇偶错误后提供对于事务的信用;以及
将对于所述数据队列的队列状态信号设置为恒定值。
13.如权利要求12所述的装置,其中所述根复合体在所述错误抑制模式期间进一步用于处理弹出请求以及处理推送请求。
14.如权利要求12所述的装置,其中所述根复合体响应于所述队列的刷新用于返回对应于从所述数据队列刷新的事务的信用。
15.如权利要求1所述的装置,其中所述根复合体进一步包括错误报告器来记录所述奇偶错误。
16.如权利要求1所述的装置,其中所述错误抑制模式用于允许在检测所述奇偶错误时未决的事务在系统关机之前继续进行。
17.一种方法,其包括:
检测首标中的奇偶错误,其中所述首标在多个首标队列的特定首标队列中,所述首标用于包括多个字段,并且所述首标队列中的每个对应于多个事务类型中的相应事务类型;
对所述多个字段生成构造的首标数据,其中所述构造的首标数据用于采用伪数据替换所述特定分组的至少一个字段的数据;以及
基于所述奇偶错误进入错误抑制模式。
18.如权利要求17所述的方法,其进一步包括向目的地发送所述构造的首标。
19.如权利要求18所述的方法,其中所述目的地包括另一个端口和系统代理中的一个。
20. 如权利要求18所述的方法,其进一步包括:
从所述目的地接收报告的错误,其中所述错误基于所述多个字段的特定字段中的构造的首标数据;以及
根据所述错误抑制模式阻断所述报告的错误。
21. 如权利要求17所述的方法,其中所述错误抑制模式用于维持正向进程并且包括:
刷新对应的数据队列;以及
设置对应于所述奇偶错误的队列中的特定队列的队列状态信号来指示所述队列要继续接收数据。
22.一种装置,其包括:
根复合体,其包括多个首标队列和多个有效载荷数据队列,其中每个队列对应于相应事务类型,并且所述根复合体用于:
检测所述首标队列的特定首标队列中的首标中的奇偶错误,其中所述首标用于包括多个字段;
对所述多个字段生成构造的首标数据,其中所述构造的首标数据用于替换所述多个字段的数据以基于所述奇偶错误防止所述字段中的至少一个的不合法值;以及
将包括所述构造的首标数据的分组发送到另一个系统部件。
23.如权利要求22所述的装置,其中所述根复合体进一步用于促使端口进入错误抑制模式。
24. 一种系统,其包括:
一个或多个I/O设备;以及
根复合体,其通信耦合于所述一个或多个I/O设备,其中所述根复合体用于:
检测所述首标队列的特定首标队列中的首标中的奇偶错误,其中所述首标用于包括多个字段;
对所述多个字段中的一个或多个生成构造的首标数据,其中所述构造的首标数据用于指示所述奇偶错误并且替换所述多个字段中的一个或多个的数据;
进入错误抑制模式;以及
将包括所述构造的首标数据的分组发送到另一个系统部件。
25.如权利要求24所述的系统,其中所述根复合体包括所述多个队列并且所述多个队列包括输入队列和输出队列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/553,692 US9749448B2 (en) | 2014-11-25 | 2014-11-25 | Header parity error handling |
US14/553692 | 2014-11-25 | ||
PCT/US2015/058957 WO2016085628A1 (en) | 2014-11-25 | 2015-11-04 | Header parity error handling |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107113084A true CN107113084A (zh) | 2017-08-29 |
CN107113084B CN107113084B (zh) | 2020-10-23 |
Family
ID=56010306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580058051.2A Active CN107113084B (zh) | 2014-11-25 | 2015-11-04 | 用于处理数据错误的装置和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9749448B2 (zh) |
EP (1) | EP3224958A4 (zh) |
CN (1) | CN107113084B (zh) |
TW (1) | TWI566088B (zh) |
WO (1) | WO2016085628A1 (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9749448B2 (en) | 2014-11-25 | 2017-08-29 | Intel Corporation | Header parity error handling |
GB2536199B (en) | 2015-03-02 | 2021-07-28 | Advanced Risc Mach Ltd | Memory management |
GB2536200B (en) * | 2015-03-02 | 2021-08-18 | Advanced Risc Mach Ltd | Memory management |
US10176126B1 (en) * | 2015-06-29 | 2019-01-08 | Cadence Design Systems, Inc. | Methods, systems, and computer program product for a PCI implementation handling multiple packets |
US9806904B2 (en) * | 2015-09-08 | 2017-10-31 | Oracle International Corporation | Ring controller for PCIe message handling |
US10390114B2 (en) | 2016-07-22 | 2019-08-20 | Intel Corporation | Memory sharing for physical accelerator resources in a data center |
JP6706180B2 (ja) * | 2016-09-14 | 2020-06-03 | ルネサスエレクトロニクス株式会社 | デバイス装置及びデータ転送システム |
US20180150256A1 (en) | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
US10496311B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Run-time instrumentation of guarded storage event processing |
US10725685B2 (en) | 2017-01-19 | 2020-07-28 | International Business Machines Corporation | Load logical and shift guarded instruction |
US10732858B2 (en) | 2017-01-19 | 2020-08-04 | International Business Machines Corporation | Loading and storing controls regulating the operation of a guarded storage facility |
US10496292B2 (en) * | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Saving/restoring guarded storage controls in a virtualized environment |
US10452288B2 (en) | 2017-01-19 | 2019-10-22 | International Business Machines Corporation | Identifying processor attributes based on detecting a guarded storage event |
US10579377B2 (en) | 2017-01-19 | 2020-03-03 | International Business Machines Corporation | Guarded storage event handling during transactional execution |
WO2019033422A1 (en) * | 2017-08-18 | 2019-02-21 | Nokia Solutions And Networks Oy | USE OF BASIC GRAPHICS LDPC FOR NR |
US10635350B2 (en) * | 2018-01-23 | 2020-04-28 | Western Digital Technologies, Inc. | Task tail abort for queued storage tasks |
TWI679531B (zh) * | 2018-04-18 | 2019-12-11 | 緯穎科技服務股份有限公司 | 熱插拔辨識方法及具有熱插拔辨識功能的伺服器 |
US10409680B1 (en) | 2018-05-24 | 2019-09-10 | Micron Technology, Inc. | Progressive length error control code |
US11614986B2 (en) * | 2018-08-07 | 2023-03-28 | Marvell Asia Pte Ltd | Non-volatile memory switch with host isolation |
US11544000B2 (en) | 2018-08-08 | 2023-01-03 | Marvell Asia Pte Ltd. | Managed switching between one or more hosts and solid state drives (SSDs) based on the NVMe protocol to provide host storage services |
US10970238B2 (en) * | 2019-04-19 | 2021-04-06 | Intel Corporation | Non-posted write transactions for a computer bus |
US20210013999A1 (en) * | 2020-06-04 | 2021-01-14 | Intel Corporation | Latency-Optimized Mechanisms for Handling Errors or Mis-Routed Packets for Computer Buses |
US12056029B2 (en) | 2020-07-27 | 2024-08-06 | Intel Corporation | In-system validation of interconnects by error injection and measurement |
CN113542052A (zh) * | 2021-06-07 | 2021-10-22 | 新华三信息技术有限公司 | 一种节点故障确定方法、装置和服务器 |
KR20230055614A (ko) | 2021-10-19 | 2023-04-26 | 삼성전자주식회사 | 반도체 메모리 장치 및 메모리 시스템 |
US20240244005A1 (en) * | 2023-01-12 | 2024-07-18 | Enfabrica Corporation | System and method for adaptive generic receive offload |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1630299A (zh) * | 2003-12-04 | 2005-06-22 | 因芬尼昂技术股份公司 | 用于按照二或多个通信协议进行通信的数据通信装置及方法 |
CN1703027A (zh) * | 2004-05-25 | 2005-11-30 | 惠普开发有限公司 | 传递调试信息 |
US20100251055A1 (en) * | 2009-03-31 | 2010-09-30 | Kabushiki Kaisha Toshiba | Pci.express communication system and communication method thereof |
CN102334324A (zh) * | 2009-03-03 | 2012-01-25 | 高通股份有限公司 | 可缩放的标头扩展 |
CN102474466A (zh) * | 2009-08-10 | 2012-05-23 | 美光科技公司 | 包解构/重构及链路控制 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6333929B1 (en) | 1997-08-29 | 2001-12-25 | Intel Corporation | Packet format for a distributed system |
EP0984451B1 (en) * | 1998-07-09 | 2005-12-14 | Hewlett-Packard Company, A Delaware Corporation | Improved data writing to data storage medium |
US6651193B1 (en) * | 2000-04-29 | 2003-11-18 | Hewlett-Packard Development Company, L.P. | Method for allowing distributed high performance coherent memory with full error containment |
US7468976B2 (en) * | 2002-06-25 | 2008-12-23 | Xocyst Transfer Ag L.L.C. | Efficiency improvement for shared communications networks |
US7424653B2 (en) | 2003-05-09 | 2008-09-09 | Hewlett-Packard Development Company, L.P. | System and method for error capture and logging in computer systems |
US7337371B2 (en) | 2003-12-30 | 2008-02-26 | Intel Corporation | Method and apparatus to handle parity errors in flow control channels |
US7809009B2 (en) | 2006-02-21 | 2010-10-05 | Cisco Technology, Inc. | Pipelined packet switching and queuing architecture |
US7500170B2 (en) * | 2006-08-14 | 2009-03-03 | Motorola, Inc. | Method and apparatus for error detection in a data block |
KR101405969B1 (ko) * | 2007-06-28 | 2014-06-13 | 엘지전자 주식회사 | 디지털 방송 시스템 및 데이터 처리 방법 |
US7792014B2 (en) * | 2007-09-28 | 2010-09-07 | Integrated Device Technology, Inc. | Method of skipping nullified packets during mass replay from replay buffer |
JP2009266119A (ja) * | 2008-04-28 | 2009-11-12 | Hitachi Ltd | ストレージ装置及びデータ転送方法 |
JP4985565B2 (ja) * | 2008-06-30 | 2012-07-25 | 富士通株式会社 | 送受信回路、受信回路及び送受信回路の制御方法 |
CA2751711C (en) * | 2009-03-15 | 2016-01-26 | Lg Electronics Inc. | Transmitting / receiving systems and broadcasting signal processing method |
US8095759B2 (en) | 2009-05-29 | 2012-01-10 | Cray Inc. | Error management firewall in a multiprocessor computer |
US8799550B2 (en) * | 2010-07-16 | 2014-08-05 | Advanced Micro Devices, Inc. | System and method for increased efficiency PCI express transaction |
US9749448B2 (en) | 2014-11-25 | 2017-08-29 | Intel Corporation | Header parity error handling |
-
2014
- 2014-11-25 US US14/553,692 patent/US9749448B2/en active Active
-
2015
- 2015-10-13 TW TW104133551A patent/TWI566088B/zh active
- 2015-11-04 WO PCT/US2015/058957 patent/WO2016085628A1/en active Application Filing
- 2015-11-04 CN CN201580058051.2A patent/CN107113084B/zh active Active
- 2015-11-04 EP EP15864037.5A patent/EP3224958A4/en not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1630299A (zh) * | 2003-12-04 | 2005-06-22 | 因芬尼昂技术股份公司 | 用于按照二或多个通信协议进行通信的数据通信装置及方法 |
CN1703027A (zh) * | 2004-05-25 | 2005-11-30 | 惠普开发有限公司 | 传递调试信息 |
CN102334324A (zh) * | 2009-03-03 | 2012-01-25 | 高通股份有限公司 | 可缩放的标头扩展 |
US20100251055A1 (en) * | 2009-03-31 | 2010-09-30 | Kabushiki Kaisha Toshiba | Pci.express communication system and communication method thereof |
CN102474466A (zh) * | 2009-08-10 | 2012-05-23 | 美光科技公司 | 包解构/重构及链路控制 |
Also Published As
Publication number | Publication date |
---|---|
EP3224958A4 (en) | 2018-07-18 |
TW201633121A (zh) | 2016-09-16 |
EP3224958A1 (en) | 2017-10-04 |
WO2016085628A1 (en) | 2016-06-02 |
US20160147592A1 (en) | 2016-05-26 |
TWI566088B (zh) | 2017-01-11 |
CN107113084B (zh) | 2020-10-23 |
US9749448B2 (en) | 2017-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107113084A (zh) | 首标奇偶错误处理 | |
TWI570563B (zh) | 後置中斷架構 | |
KR101686360B1 (ko) | 다중슬롯 링크 계층 플릿에서의 제어 메시징 | |
CN104823167B (zh) | 现场错误恢复 | |
US10360176B2 (en) | Techniques for command validation for access to a storage device by a remote client | |
US20210240655A1 (en) | Source ordering in device interconnects | |
CN101901205B (zh) | 在PCIExpress上启用基于ID的流的方法和装置 | |
CN112631959B (zh) | 用于一致性消息的高带宽链路层 | |
CN107430567A (zh) | 共享缓冲存储器路由 | |
CN109154924A (zh) | 多个上行链路端口设备 | |
CN108337910A (zh) | 用于软件定义的互连交换机的架构 | |
WO2012143953A4 (en) | Optimized multi-root input output virtualization aware switch | |
CN107925507A (zh) | 多芯片封装链路错误检测 | |
CN105793830A (zh) | 在节点之间共享存储器和i/o服务 | |
CN104932996B (zh) | 用于控制链路接口的未使用硬件的功率消耗的方法、装置和系统 | |
CN102446073A (zh) | 延迟对操作的确认直至操作完成的方法和系统 | |
CN108604209A (zh) | 扁平化端口桥 | |
US20120260005A1 (en) | Controller for direct access to a memory for the direct transfer of data between memories of several peripheral devices, method and computer program enabling the implementation of such a controller | |
CN107750476A (zh) | 边带导体谐振减轻 | |
CN107078850A (zh) | 边带奇偶校验处理 | |
CN103946822A (zh) | 用于促进定制在计算设备处的多用途互连代理的机制 | |
CN100438524C (zh) | 基于硬件支持的虚拟接口结构用户层网络通信系统 | |
CN107003838A (zh) | 解码信息库 | |
CN117692535A (zh) | 一种PCIe协议报文保序装置 | |
US20160350250A1 (en) | Input output data alignment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |