CN116318530A - 用于高速信令互连的硬件中的错误率中断 - Google Patents

用于高速信令互连的硬件中的错误率中断 Download PDF

Info

Publication number
CN116318530A
CN116318530A CN202211424315.XA CN202211424315A CN116318530A CN 116318530 A CN116318530 A CN 116318530A CN 202211424315 A CN202211424315 A CN 202211424315A CN 116318530 A CN116318530 A CN 116318530A
Authority
CN
China
Prior art keywords
logic
error
errors
time period
interrupt
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211424315.XA
Other languages
English (en)
Inventor
A·H·克里希纳穆尔蒂
I·查达
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN116318530A publication Critical patent/CN116318530A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0036Systems modifying transmission characteristics according to link quality, e.g. power backoff arrangements specific to the receiver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0745Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1679Temporal synchronisation or re-synchronisation of redundant processing components at clock signal level

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

本公开涉及用于高速信令互连的硬件中的错误率中断。接收器设备包括检测逻辑、错误计数器和中断逻辑。检测逻辑用于接收第一组数据帧并且检测所述第一组数据帧中的一个或更多个帧错误。错误计数器用于存储在第一组数据帧中检测到的所述一个或更多个帧错误的数量。中断逻辑可耦合到错误计数器。中断逻辑用于指定时间段,并且将在所述时间段期间的所述一个或更多个帧错误的数量与帧错误阈值数量进行比较,其中所述中断逻辑用于响应于在所述时间段内检测到的所述一个或更多个帧错误的数量满足所述帧错误阈值数量而指示中断。

Description

用于高速信令互连的硬件中的错误率中断
技术领域
至少一个实施例涉及用于执行和促进高速通信的处理资源。例如,至少一个实施例涉及用于高速互连(例如,地面参考信令(GRS)互连)的硬件中的错误率中断的技术。
背景技术
通信系统经由通信信道或介质(例如,电缆、印刷电路板、链路、无线等)将信号从发射器传送至接收器。在一些通信系统中,当从发射器向接收器传送信号时,可能发生错误。例如,由于耦合发射器和接收器的链路,在从发射器传送至接收器的帧(例如,一组比特)中可能发生错误。在一些常规通信系统中,如果满足阈值数量的错误,则接收器可将中断传送至软件栈。在这样的通信系统中,尽管满足阈值数量的错误,但链路仍可以继续稳定地传输数据。因而,在常规通信系统中,接收器可能正在传送过多的中断,导致通信系统的延时增加和性能降低。
附图说明
将参考附图描述根据本公开的各个实施例,在附图中:
图1是根据至少一些实施例的采用用于硬件中的错误率中断的方法的示例通信系统;
图2示出了根据至少一些实施例的在通信系统中通信的示例帧;
图3是根据至少一些实施例的采用用于硬件中的错误率中断的方法的示例接收器;
图4A和4B示出了根据至少一些实施例的用于硬件中的错误率中断的错误计数器和时间段逻辑的示例;
图5是根据至少一些实施例的示出硬件中的错误率中断的时序图;
图6是根据至少一些实施例的用于高速互连系统中的错误中断的方法的流程图;
图7示出了根据至少一些实施例的包括收发器的示例计算机系统,该收发器包括用于硬件中的错误率中断的芯片至芯片互连。
具体实施方式
通信系统经由通信信道或介质(例如,电缆、印刷电路板、链路、无线等)将信号从发射器传送至接收器。在一些通信系统中,当从发射器向接收器发送数据或信号时,该链路可导致错误发生。链路在可接受的错误范围内可以是可靠的—例如,如果发生的错误的数量在可接受的错误范围内,则链路可以是可靠的,并且如果发生的错误的数量在可接受的错误范围之外,则链路是不可靠的。可以在与链路相关联的制造过程期间确定可接受的错误范围。在常规通信系统中,当错误的数量超过阈值错误数量(例如,接收器检测到错误的数量在可接受的错误范围之外)时,接收器可以检测发生的错误的数量并且向与接收器相关联的软件栈(例如,引导或运行时软件、固件或控制链路和硬件的其他实体)引发中断。例如,数据可通过链路以固定长度的帧从发射器通信至接收器—例如,每个帧可以包括相同数量的比特。接收器可对接收到的帧执行错误检测操作以确定帧错误率(FER)。当帧错误率超过与链路相关联的帧错误率阈值时,接收器可以向软件栈传送中断。在这样的通信系统中,软件可以基于接收到中断来确定是否采取行动以降低帧错误率。
在某些通信系统中,在长时间段内,即使在超过帧错误率阈值时,链路仍可以可靠地传送数据。例如,如果在经过第一时间段之后超过帧错误率阈值,则链路可以继续可靠地传送数据—例如,该时间段足够长,即使接收器指示中断,软件栈也可以确定不采取动作。因而,如果接收器在每次满足阈值错误数量时引起中断,则接收器可将过多的中断传送至软件栈。对软件栈的过多中断会增加处理时间、软件开销以及周转延时—例如,处理过多中断会降低通信系统的性能。另外,由于中断与额外的处理时间相关联,因此可降低确定帧错误率的准确性。例如,归因于处理时间,在软件栈正在处理先前中断时,检测到的实际错误数量可能增加,从而降低由软件栈执行的处理的准确性。
有利地,本公开的各方面可以通过提供一种用于高速互连的硬件中的错误率中断的方法来解决上述缺陷和其他挑战。例如,接收器可包括中断逻辑,其在检测到的错误的数量满足可编程时间段内的阈值错误数量的情况下引发中断。在这样的示例中,软件栈(例如,启动或运行时软件、固件或控制链路和硬件的其他实体)可以将阈值错误数量和可编程时间段编程到中断逻辑。在一些示例中,中断逻辑可用两个阈值错误数量来编程。例如,中断逻辑可用与第一中断相关联的第一阈值错误数量和与第二中断相关联的第二阈值错误数量来编程。第一中断可以是软中断,其使软件栈能够为额外的错误做准备——例如,软件栈可减慢链路的速度或采取除重置或关闭链路之外的其他动作。第二中断可以是使软件栈关闭或重新训练链路的硬中断。
根据实施例,接收器可以对从发射器接收的传入帧执行错误检测操作。中断逻辑可以对发生的错误的数量(例如,帧错误的数量)进行计数。中断逻辑还可耦合到指示可编程时间段何时结束的时间段时钟。在这样的示例中,中断逻辑可在每一时间段结束之后重置或减少错误数量的计数(例如,对应于错误数量的存储值)。例如,中断逻辑可以在每次如时间段时钟所指示的时间段过去时将错误数量的计数重置为零(0)。在其他示例中,中断逻辑可以在每次时间段过去时将错误数量的计数减少一个设定值—例如,每次时间段过去时将错误数量的计数减少三(3)。如果中断逻辑确定在相应时间段内检测到的错误的数量满足第一阈值,则中断逻辑可以将第一中断传送到软件栈并继续检测额外的错误。如果中断逻辑确定在相应时间段内检测到的错误的数量满足第二阈值,则中断逻辑可以将第二中断传送到软件栈。因而,如果在可编程时间段内满足错误的数量,则接收器可在中断被引发时向软件栈发送更少的中断。
通过利用中断逻辑并且在可编程时间段内满足阈值错误数量时传送中断,通信系统可以减少处理时间、周转延时,并且改善通信系统的整体性能。另外,由于中断逻辑确定错误的数量和是否引起中断,因此中断逻辑可准确地将中断传送给软件栈。因而,本申请的实施例允许用于高速互连系统中的错误中断的更可靠的方法。
图1示出了根据至少一个示例性实施例的示例通信系统100。系统100包括主机102-a、主机102-b、第一设备104-a和第二设备104-b。系统100还包括耦合第一设备104-a和第二设备104-b的链路106。每个设备104可以包括收发器125,收发器125包括发射器130、接收器135、数字数据源140和处理电路145。每个发射器130可以包括事务层(TL)108、数据层(DL)110、物理层(PL)112,并且每个接收器135可以包括TL 114、DL 116和PL 118。
在至少一个示例中,主机102或设备104可以对应于个人计算机(PC)、膝上型计算机、平板计算机、智能电话、服务器、服务器的集合等中的一个或更多个。在一些示例中,主机102可以对应于与其他设备通信并且也连接到公共链路106的任何适当类型的设备。在一些示例中,主机102可将命令或数据传送至设备104。在这样的示例中,设备104可以基于由主机102接收的命令或数据来相互通信数据。作为另一特定但非限制性的示例,主机102和设备104可对应于将信息资源、服务和/或应用程序提供给用户设备、客户端设备或系统100中的其他主机的服务器。
在至少一个示例性实施例中,第一设备104-a和第二设备104-b可以是芯片的示例——例如,系统100可以是多芯片模块或芯片至芯片(C2C)互连的示例。在这样的示例中,设备104可以是单个芯片或芯片堆叠。在一些示例中,设备104可包括图形处理单元(GPU)、交换机(例如,高速网络交换机)、网络适配器、中央处理单元(CPU)等,用于执行从主机102接收的命令或功能。每个设备104可以包括用于发送和接收信号(例如,数据信号)的收发器125。数据信号可以是用数据调制的数字或光信号或用于承载数据的其他合适的信号。每个收发器125可包括接收器135和发射器130。发射器130包括适当的软件和/或硬件,用于从数字数据源140接收数字数据并且根据数字数据输出数据信号以通过链路106传送给设备104-b的接收器135。设备110和设备112的接收器104可以包括用于接收信号(例如,来自链路106的数据信号)的适当的硬件和/或软件。
在实施例中,设备104可以双向通信——例如,从主机102-a到主机102-b或从主机102-b到主机102-a。在一些示例中,设备104的每个接收器135或发射器130可独立地和/或同时地操作。例如,与第一设备104-a的发射器130-a向第二设备104-b的接收器135-b传送数据同时,第一设备104-a的接收器135-a可以从第二设备104-b的发射器130-b接收数据。
设备104中的每个发射器130和接收器135可以包括事务层(TL)。在一些示例中,发射器130的TL 108可以被配置成请求事务——例如,请求数据的传输。例如,发射器130的TL108可为设备104的其他组件传送功能或组装数据分组。在一些示例中,发射器130的TL 108可以生成可以被发送至DL 110进行进一步处理的事务层分组(TLP)。在一些示例中,设备104中的每个接收器135还可以包括事务层114。在一些示例中,接收器135的TL 114可以被配置成完成事务——例如,完成数据的传输。例如,接收器135的TL 114可从每个设备104的接收器的其他组件接收功能或拆解从每个设备104的接收器的其他组件接收的分组。在一些实施例中,接收器135的TL 114可验证传入TLP分组以确保所接收的分组是有效的——例如,没有错误。
设备104中的每个发射器130和接收器135还可以包括数据层。在一些示例中,DL110和DL 116可以被配置成确保通过链路106发送的数据是正确的并且没有错误。例如,发射器130的DL 110可对以错误码(例如,CRC值)发送的相应帧或分组进行编码。接收器125的DL 116可基于接收到的帧来生成错误码,并对嵌入在该帧中的CRC进行解码,以比较所生成的错误码是否与传送的CRC相匹配。在一些示例中,DL 116执行错误解码操作以查看所接收的数据是否正确且无错误。在一些示例中,发射器130的DL 110可被配置为将序列号作为报头添加到所发送的每一帧或分组,且接收器135的DL 116也可被配置为检查序列号。在一些示例中,发射器130的DL 110和接收器135的DL 116可以包括或耦合到控制器或控制流单元以对所接收的分组或帧执行错误解码操作—例如,处理电路145。
此外,设备104中的每个发射器130和接收器135可以包括物理层(PL)。在一些示例中,PL 112和PL 118可被配置为通过链路106传送和接收数据。例如,PL 112和PL 118可包括输入/输出(I/O)缓冲区、并行到串行和串行到并行转换器、阻抗匹配电路、逻辑电路等,以通过链路106传送和接收数据分组或帧。
每个收发器125可以包括数字数据源140以及控制收发器125的处理电路145。数字数据生成器140可包括用于以数字格式(例如,以二进制代码和/或温度计代码)输出数据的合适硬件和/或软件。数字数据源140输出的数字数据可从存储器(未示出)中检索或根据输入(例如,用户输入)生成。
处理电路145可以包括软件、硬件或其组合。例如,处理电路145可包括包含可执行指令的存储器和执行存储器上的指令的处理器(例如,微处理器)。存储器可对应于被配置为存储指令的任何合适类型的存储器设备或存储器设备的集合。可使用的合适存储器设备的非限制性示例包括闪存、随机存取存储器(RAM)、只读存储器(ROM)、其变体、其组合等。在一些实施例中,存储器和处理器可以被集成到共同的设备中(例如,微处理器可以包括集成存储器)。附加地或可替代地,处理电路145可包括硬件,诸如专用集成电路(ASIC)。处理电路145的其他非限制性示例包括集成电路(IC)芯片、中央处理单元(CPU)、通用处理单元(GPU)、微处理器、现场可编程门阵列(FPGA)、逻辑门或晶体管的集合、电阻器、电容器、电感器、二极管等。处理电路145中的一些或全部可设置在印刷电路板(PCB)或PCB的集合上。应当理解,任何适当类型的电气组件或电气组件的集合可以适合于包括在处理电路145中。处理电路145可向收发器125的其他元件发送信号和/或从收发器125的其他元件接收信号,以控制收发器125的整体操作。
收发器125或收发器125的选定元件可以采取用于设备104的可插拔卡或控制器的形式。例如,收发器125或收发器125的选定元件可在网络接口卡(NIC)上实现。
链路106可以是可用来连接设备104的通信网络的示例,如互联网协议(IP)网络、以太网、无限带宽(IB)网络、光纤通道网络、互联网、蜂窝通信网络、无线通信网络、其组合(例如,以太网光纤通道)、快速外围组件互连(PCIe)、其变体等。在一个特定但非限制性示例中,链路106是使得能够使用数据信号(例如,数字、光学、无线信号)在设备104之间进行数据传输的网络。
在实施例中,链路106可以被配置为在第一设备104-a与第二设备104-b之间传输请求、数据、功能、命令等。在一个示例中,链路106可以是电缆、印刷电路板、链路、无线等。在至少一个实施例中,链路106可以是地面参考信令(GRS)互连的示例。在这样的示例中,链路106可以包括RC主导通道和LC传输线。此外,GRS互连可以是片上链路、跨衬底(例如,有机封装)的链路、或印刷电路板(PCB)上的链路信令。在一些示例中,GRS可以使用接地网络作为信号参考电压——例如,接地可以是返回信令。尽管未明确示出,但应当理解,主机102和设备104可以包括通常与诸如发送和接收数据的计算任务相关联的其他处理设备、存储设备和/或通信接口。
在一些示例中,接收器的DL 116包括中断逻辑150。在一些实施例中,中断逻辑150可被配置为确定在接收数据时发生的错误的数量。例如,当从链路106接收帧时,中断逻辑150可以确定帧错误的数量(例如,帧错误率(FER))。在一些实施例中,中断逻辑可以对每个传入帧执行错误检测以确定FER。在至少一个实施例中,中断逻辑可将可编程时间段内的帧错误的数量与第一帧错误阈值数量和第二帧错误阈值数量进行比较—例如,在由处理电路145或控制接收器135的DL 116的其他软件指定的时间段内。在这样的实施例中,第一帧错误阈值数量可以与第一中断相关联,并且第二帧错误阈值数量可以与第二中断相关联。在一些实施例中,如果接收到第一中断(例如,减慢链路106),则控制接收器135的DL 116的处理电路145或其他软件可以采取除了链路106的重置或断电之外的补救动作,或者如果接收到第二中断,则对链路106断电和关闭。中断逻辑150可被配置为从与链路106不相关联的时钟接收指示可编程时间段何时结束的信号。当时间段结束时,中断逻辑150可以接收时间段指示并且将帧错误数量的计数减少指定值或者停止帧错误数量的计数。因此,如果在时间段内帧错误的数量满足第一阈值错误数量,则中断逻辑150可以引发第一中断,和/或如果在时间段内帧错误的数量满足第二阈值错误数量,则中断逻辑150可以引发第二中断。
图2示出了在如参考图1所描述的通信系统100中通信的示例帧200。例如,帧200可由发射器130从设备104-a至104-b或从设备104-b到设备104-a发送至接收器135。在实施例中,帧22可包括“N”个微片(flit)202。例如,给定帧200可包括十(10)个微片202。在一些示例中,每个微片202可包括相同数量的比特—例如,每个微片202为“X”个比特宽。例如,每个微片202可为128比特宽。在一些示例中,发射器130的DL 110可在每一时钟周期发送一(1)个微片。因而,可基于“N”个微片202在“N”个时钟周期中传送每个帧。此外,每个帧200可包括错误码CRC 208。DL 110被配置成为整个帧生成CRC 208。在这样的实施例中,接收器135的DL 116被配置成针对每个帧200跨“N”个微片202执行错误解码操作—例如,中断逻辑150被配置成在接收到与帧200的大小或宽度相对应的“N”个微片202之后执行一个错误解码操作。即,错误解码操作以帧粒度执行—例如,确定帧错误率(FER)。在一些实施例中,帧200可包括一个(1)微片202。在此类实施例中,因为每个帧200包括一个(1)微片202,因此错误解码操作可基本上以一个微片粒度执行。在一些实施例中,发射器130的DL 110可以产生不同的错误检测码—例如,除CRC之外的错误检测码。例如,发射器130的DL 110可以生成奇偶校验或校验和。在任一示例中,由发射器130选择的错误检测码可嵌入在帧200内并且发送至接收器135的DL 116。每一帧200还可包括报头204。
图3示出了根据至少一个示例性实施例的接收器的示例数据链路层(DL)120。在至少一个实施例中,DL 120是如参照图1描述的DL 120的示例。如参考图1所述,DL 120可以在接收器135中。在实施例中,DL120可包括错误逻辑305、错误计数器310、阈值逻辑315和时间段逻辑320。在实施例中,DL 120的组件可以从软件栈接收信号—例如,启动或运行时软件、固件或控制链路和DL 120的其他实体。
在一些实施例中,错误逻辑305可以被配置成接收一个或更多个帧200。在实施例中,错误逻辑305可以对所接收的帧200执行错误检测操作。例如,错误逻辑305可以使用嵌入在如参照图2所描述的帧200中的CRC码来执行CRC错误检测——例如,使用帧的比特的一部分来执行错误检测操作。在实施例中,错误逻辑305可以向错误计数器310传送错误308的指示。在实施例中,错误逻辑305可以由第一时钟325计时。在实施例中,第一时钟325可以是接收器135的时钟。在实施例中,第一时钟325可与数据或微片率相关联—例如与接收帧200相关联。
在实施例中,错误计数器310可以被配置成对错误308的数量进行计数——例如,错误计数器310可以存储与错误308的数量相对应的值。例如,错误计数器310可以跟踪由错误逻辑305确定的错误308的数量以确定错误计数312。在一些实施例中,错误计数器310可以确定时间段内的错误计数312。例如,错误计数器310可接收指示时间段何时结束的时间段标记360。在一些实施例中,当相应时间段结束时,例如当减量信号330为零时,错误计数器310可以重置错误计数312。在一些实施例中,当相应时间段结束时,错误计数器310可以减少错误计数312。例如,错误计数器310可以从软件栈接收减量信号330并且将错误计数312减小减量信号330中指示的值—例如,如果减量信号330指示值五(5),则错误计数器310可以将错误计数312减小五(5)。即,误差计数器310可以在减量信号具有值零(0)时重置错误计数312,或者在减量信号330是非零值时将错误计数312减小一个值。在一些实施例中,每次时间段结束时,错误计数器310可以将错误计数312减小一相同的值。在其他实施例中,错误计数器310可以基于减量信号330在每个时间段结束时将误差计数312减小不同的值。通过减小错误计数312,错误计数器310可以在滚动时间段内跟踪错误308的数量—例如,在每个时间段之后错误计数312不被重置,从而允许错误计数312跨越多个时间段。在一些实施例中,错误计数器310可以基于接收到重启信号350来重置错误计数312。在实施例中,错误计数器310可以被配置成将错误计数312发送至阈值逻辑315。在一些实施例中,错误计数器310可以由第一时钟325计时。参照图4A描述关于错误计数器310的额外细节。
在一些实施例中,阈值逻辑315可以将错误计数312(例如,所存储的与错误数量相关联的值)与一个或更多个错误阈值340进行比较。在实施例中,软件栈可以将错误阈值340编程至阈值逻辑315。阈值逻辑315可以将接收到的错误计数312与编程的错误阈值340进行比较。在一些实施例中,阈值逻辑315可以用两(2)个错误阈值340来编程。在这样的实施例中,第一错误阈值340可以与第一中断335(例如,软中断)相关联,并且第二错误阈值340可以与第二中断335(例如,硬中断)相关联。因此,阈值逻辑315可以在第一错误阈值340被满足(例如,错误计数312与第一错误阈值340相同或超过第一错误阈值340)时发送第一中断335,并且在第二错误阈值340被满足(例如,错误计数312与第二错误阈值340相同或超过第二错误阈值340)时发送第二中断335。在一些实施例中,当接收到软中断时,软件栈可以不采取动作。在其他实施例中,软件栈可以采取动作以减少在接收到软中断时发生的错误的数量--例如,采取预防性动作。例如,软件栈可降低链路速率(例如,链路运行的速度),这可减少发生的错误308的数量。在一些实施例中,当接收到硬中断时,软件栈可以重置或关闭设备(例如,设备106)或重新训练链路。在这样的实施例中,第二错误阈值340大于第一错误阈值340。
在一些实施例中,时间段逻辑320被配置成确定相应时间段何时结束。例如,时间段逻辑320可以经由软件栈发送的时间段指示345用时间段来编程。在实施例中,时间段逻辑320可以由第二时钟355计时。在一些实施例中,第二时钟355可独立于第一时钟325—例如,独立于数据或微片率。在一些实施例中,第二时钟355可比第一时钟235慢—例如,第二时钟355可具有比第一时钟325更慢的时钟速率或时钟速度。在一些实施例中,第二时钟355可具有第一频率,且第一时钟325可具有第二频率,其中第一频率小于第二频率。在一些实施例中,时间段逻辑320可对从上一时间段结束以来已经过去的时钟的数量进行计数。在这样的实施例中,当时钟数量的计数满足编程的时间段(例如,时间段指示345)时,时间段逻辑320可以生成时间段标记350。即,时间段逻辑320可确定时间段何时结束并将指示传送给错误计数器310。在一些实施例中,时间段逻辑320可接收重启信号350。在这种实施例中,时间段逻辑320可重置时钟的计数并且将时间段标记360发送至错误计数器310——例如,时间段逻辑320可重置时间段。参照图4B描述关于错误计数器310的另外的细节。
图4A示出了如参考图3所描述的示例错误计数器310。在一些实施例中,错误计数器310可以与错误逻辑305、阈值逻辑315和时间段逻辑320耦合,如参考图3所述。在一些实施例中,错误计数器310可以包括多路复用器405-a、多路复用器405-b、多路复用器405-c、减法逻辑410、加法逻辑415和逻辑420。在实施例中,错误计数器310的组件可以从软件栈接收信号—例如,启动或运行时软件、固件或控制链路和DL 120的其他实体。
在一些实施例中,错误计数器310被配置成确定指定时间段(例如,由如参照图3所描述的软件栈指示的可编程时间段)内的错误计数312(例如,对应于错误308的数量的值)。例如,错误计数器310可以从错误逻辑305接收错误308的指示。加法逻辑415可以被配置成当接收到错误308时将一(1)加至错误计数312——例如,每次接收到错误308时递增错误计数312(例如,所存储的值)。在一些实施例中,加法逻辑415可以是具有适当溢出策略的加法器的示例。加法逻辑415可以被配置成在将一(1)加至多路复用器405-a、多路复用器405-b和减法逻辑410之后发送错误计数312。
在一些实施例中,多路复用器405-a被配置成从加法逻辑415接收错误计数312。在一些示例中,多路复用器405-a可从软件栈接收减量信号330。在一些实施例中,减量信号330是由软件栈编程的配置值——例如,在编程之后保持恒定的伪静态值。在一些实施例中,多路复用器405-a可以选择减量信号330或由加法逻辑415提供的错误计数312来输出。例如,当减量信号330具有零值时,多路复用器可以选择由加法逻辑415提供的错误计数312。在其他示例中,多路复用器可在减量信号330具有非零值时选择减量信号330。因此,除非减量信号330具有非零值,否则错误计数312在时间段结束之后被重置。
在实施例中,减法逻辑410被配置成减小错误计数312。在一些实施例中,当错误计数器310接收到时间段标记360并且递减信号具有零(0)值时,减法逻辑410可以将错误计数312重置为零(0)。在一些实施例中,减法逻辑410可以将错误计数312减小减量信号330所指示的值。例如,如果减量信号330具有值四(4)并且接收到时间段标记360,则减法逻辑410可以将错误计数312减少四(4)。在其他实施例中,减法逻辑410可以基于减量信号330的值将错误计数312减小不同的值。即,减法逻辑410可以在多路复用器405-a从加法逻辑415中选择错误计数312时重置错误计数312,或者在多路复用器405-a选择减量信号330时将错误计数312减小一个值。
多路复用器405-b被配置成将错误计数312输出至多路复用器405-c。在实施例中,多路复用器405-b可以输出从加法逻辑415接收的错误计数312。在一些实施例中,多路复用器405-b可以输出错误计数312或从减法逻辑410接收的信号。例如,多路复用器405-b可以在接收到时间段标记360时输出来自减法逻辑410的错误计数312——例如,当时间段标记360指示时间段结束时,错误计数器310可以将计数减少到零(0)或将计数减少由减量信号330指定的值。
多路复用器405-c被配置成将错误计数312输出至逻辑420。在实施例中,多路复用器405-c可以输出从多路复用器405-b接收的错误计数312。在实施例中,多路复用器405-c可以基于从软件栈接收到重启信号350来指示重启(例如,重置)错误计数312。例如,软件栈可以确定重启时间段。在这种实施例中,多路复用器405-c可接收重启信号350并且将其输出给逻辑420。
逻辑420可以被配置成锁存错误计数312。在实施例中,逻辑420是延迟触发器(例如,DQ触发器)的示例。在这种实施例中,逻辑420可以在所接收的第一时钟325信号的每个上升沿输出错误计数312。即,逻辑420可以在每个时钟周期向阈值逻辑315传送更新后的错误计数312。逻辑420可被配置为在接收到重启信号350时将错误计数312重置为零(0)。
图4B示出了如参见图3所描述的示例时间段逻辑320。在一些实施例中,时间段逻辑320可以与错误计数器310耦合,如参考图3所述。在一些实施例中,时间段逻辑320可包括多路复用器405-d、逻辑425、比较逻辑435、加法逻辑440和逻辑430。在实施例中,时间段逻辑320的组件可以从软件栈接收信号—例如,启动或运行时软件、固件或控制链路和DL120的其他实体。
在一些实施例中,时间段逻辑320被配置成跟踪错误计数器310的时间段——例如,跟踪由如参见图3所描述的软件栈指示的可编程时间段。例如,时间段逻辑320可从软件栈接收指示可编程时间段的时间段指示345。在一些实施例中,由软件栈选择的时间段可以基于链路的特性—例如,基于链路的可容忍的错误范围。在至少一个实施例中,时间段320可对第二时钟355的时钟周期的数量进行计数,以确定相应的时间段是否已经过去。例如,可将第二时钟355信号输出到加法逻辑440。加法逻辑440可被配置为将一(1)加到自前一时间段过去以来过去的时钟周期的数量。在一些实施例中,第二时钟355可独立于第一时钟325。在至少一个实施例中,第二时钟355可以具有比第一时钟325更慢的时钟速率或时钟速度。例如,第二时钟355可具有两个或三个小时的可编程时间段。
在一些实施例中,逻辑430可以被配置成对所经过的时钟周期的数量的计数进行锁存。在至少一个实施例中,逻辑430被配置成在第二时钟355的每个时钟周期输出计数——例如,在第二时钟355的每个上升沿输出计数。在至少一个实施例中,逻辑430可接收重启信号350或时间段标记360。在任一实施例中,逻辑430可以将时钟周期的数量的计数重置为零—例如,开始跟踪新的时间段。
在至少一个实施例中,比较逻辑435被配置成将时钟周期的数量的计数与时间段指示345所指示的经编程的时间段进行比较。在至少一个实施例中,当时钟周期的数量的计数满足(例如,匹配或超过)可编程时间段(例如,满足与可编程时间段相关联的时钟周期的数量)时,比较逻辑435能够将计数重置(例如,减少计数)为零(0)。因此,比较逻辑435可以指示时间段结束,并且时间段逻辑320可以将时间段标记360传输到错误计数器310——例如,向错误计数器310指示时间段已过去。
逻辑425可以被配置成接收重启信号350或时间段标记360。例如,逻辑425可以是或门的示例。在这种实施例中,逻辑425可将重启信号350或时间段标记360发送至多路复用器405-d。在实施例中,多路复用器405-d将接收重启信号350、时间段标记360、或者到逻辑430的经过的时钟周期的数量的计数。在一些实施例中,当接收到重启信号350或时间段标记360时,多路复用器405-d输出值零(0)。因此,时间段逻辑320可对经过的时钟周期的数量进行计数,并且每当时间段已经过去时生成时间段标记360。
图5示出了时序图500,时序图500示出了用于高速互连的硬件中的错误中断的过程。图示的过程可以由包括硬件、软件、固件或其任意组合的处理逻辑执行。在至少一个实施例中,该过程由如参考图3所述的DL 120执行—例如,通过错误逻辑305、错误计数器310、阈值逻辑315和时间段逻辑320。尽管以特定的序列或顺序示出,但是除非另外指定,否则过程的顺序可以被修改。因此,所示出的实施例应该仅被理解为示例,并且所示出的过程可以以不同的顺序执行,并且一些过程可以并行执行。另外,在各个实施例中可以省略一个或更多个过程。因此,并非在每个实施例中都需要所有的过程。示出用于硬件中的错误中断的过程的其他示图是可能的。
在实施例中,在时间段505-a的开始,错误计数可以为0。例如,错误计数器310可以基于时间段505-a之前的时间段经过而将错误计数312重置为零(0)。在至少一个实施例中,在时间段505-a期间,错误逻辑305可以接收帧200并且对所接收的每个帧200执行错误检测操作。在一些实施例中,错误逻辑305可确定在接收帧200时发生的错误。在这种实施例中,错误逻辑305可以向错误计数器310传送错误308-a的指示。在一些实施例中,错误计数器310被配置成确定错误计数312(例如,存储对应于错误308的数量的值)。例如,当错误逻辑305确定错误308-a时,错误计数器310可以将错误计数312递增一(1)。在一些实施例中,错误计数器310可以在如参考图4A所描述的第一时钟的每个时钟周期,向阈值逻辑315发送错误计数312。在这种实施例中,如参考图3所描述的,阈值逻辑315可以将错误计数312与第一错误阈值和第二错误阈值进行比较。在至少一个实施例中,软件栈可以将第一错误阈值和第二错误阈值编程至阈值逻辑315。例如,软件栈可以编程第一错误阈值二(2)和第二错误阈值三(3)。软件栈可以基于与链路相关联的可容忍的错误范围来选择错误阈值。此外,在时间段505-a期间,时间段逻辑320可对经过的第二时钟的数量进行计数,以确定时间段505-a何时结束—例如,将经过的第二时钟的计数与被编程的时间段进行比较。在至少一个实施例中,错误逻辑305可以确定错误308-b,错误计数器310可以将计数增加一(1),并且阈值逻辑315可以将错误计数312与第一错误阈值进行比较。在至少一个实施例中,错误308-b之后的错误计数312可以满足第一错误阈值。在这样的实施例中,阈值逻辑315可以向软件栈指示中断405-a(例如,第一中断或软中断)。在一些实施例中,时间段逻辑320可确定在时间段505-a期间经过的时钟周期的数量满足编程的阈值。在此类实施例中,时间段逻辑320将时间段标记360-a传送到错误计数器310。在一些实施例中,错误计数器310可基于接收到时间段标记360-a而将错误计数312重置为零(0)。在一些实施例中,每个时间段505可以是三(3)小时。在其他实施例中,每个时间段505可以具有大于或小于三(3)小时的值。
在时间段505-b期间,错误逻辑305可以对所接收的帧200继续执行错误检测操作。在这样的实施例中,错误计数器310可以确定错误计数312,并且阈值逻辑315可以将错误计数312与第一错误阈值和第二错误阈值进行比较。例如,错误逻辑305可确定错误308-c、错误308-d和错误308-e,并且每当在时间段505-b期间确定错误308时,错误计数器310可将错误计数312递增一(1)。在一些实施例中,在错误308-d之后,阈值逻辑315可以确定错误计数312满足第一阈值。在这种实施例中,阈值逻辑315可以将中断405-b传送到软件栈——例如,将软中断传送到软件栈。在一些实施例中,如参考图3所描述的,在接收中断405-b之后,软件栈可以采取补救措施—例如,减慢链路。在实施例中,在错误308-e之后,阈值逻辑315可以确定错误计数312满足第二阈值。在这种实施例中,阈值逻辑315可以向软件栈传送第二中断410——例如,向软件栈传送硬中断。在一些实施例中,如参考图3所描述的,在接收到硬中断之后,软件栈可以关闭或重新启动设备106或重新训练链路。在一些实施例中,时间段逻辑320可确定在时间段505-b期间经过的第二时钟的数量。在至少一个实施例中,时间段逻辑320可确定经过的第二时钟的数量满足可编程时间段505-b。在此类实施例中,时间段逻辑320可将时间段标记360-b发送至错误计数器310。在一个实施例中,错误计数器310可以在时间段505-b期间接收减量信号330。在这样的实施例中,错误计数器310可以将错误计数312减小减量信号330所指示的值。例如,错误计数器310可以将错误计数312减少值“N”。通过将错误计数312减少一个值而不是将其重置,错误计数器310可以在多个时间段505上确定错误计数312。例如,错误计数312的一部分被滚动到时间段505-b(例如,计数“S-N”是时间段505-c的初始计数值)。
在操作505-c期间,错误逻辑305可以继续执行错误检测操作,并且错误计数器312可以相应地递增错误计数312。在一些实施例中,只要链路保持活动状态,DL 120就能够继续监测这些时间段内的错误—例如,继续执行本文中描述的过程直到链路不活动。通过仅在错误计数312在时间段505内满足第一错误阈值或第二错误阈值时才引发中断,DL 120可减少引发的中断的数量并改善通信系统的性能。
图6示出了用于高速互连的硬件中的错误率中断的方法600的示例流程图。方法600可由包括硬件、软件、固件或其任意组合的处理逻辑来执行。在至少一个实施例中,方法600由如参考图3所述的DL 120执行——例如,通过错误逻辑305、错误计数器310、阈值逻辑315和时间段逻辑320。尽管以特定的序列或顺序示出,但是除非另外指定,否则过程的顺序可以被修改。因此,所示出的实施例应该仅被理解为示例,并且所示出的过程可以以不同的顺序执行,并且一些过程可以并行执行。另外,在各个实施例中可以省略一个或更多个过程。因此,并非在每个实施例中都需要所有的过程。示出用于硬件中的错误率中断的方法的其他图是可能的。
在操作605,处理逻辑可以接收第一组数据帧。例如,错误逻辑305可以接收如参考图3所描述的第一组数据帧。在至少一个实施例中,可以在检测逻辑处接收第一组数据帧的集合。
在操作610,处理逻辑可以对所接收的第一组数据帧中的每个数据帧执行错误检测操作。在实施例中,错误逻辑305可以对第一组数据帧中的每个数据帧执行错误检测操作。在至少一个实施例中,错误检测操作可以是CRC操作。在至少一个实施例中,如参考图2所描述的,使用第一组帧中的每个帧中的一部分比特来执行错误检测操作。在实施例中,第一组帧中的每个帧包括一定数量的比特,比特的数量针对每个数据帧是相同的。
在操作615,处理逻辑可以基于执行错误检测操作来确定一个或更多个错误——例如,如参考图3描述的一个或更多个帧错误。在至少一个实施例中,处理逻辑可以响应于对每个数据帧执行错误检测操作而将计数器(例如,错误计数器310)处的计数器值更新为与检测到的错误的数量相对应的第一计数值——例如,错误计数器可以存储在第一组数据帧中检测到的一个或更多个帧错误的数量。例如,每次检测到错误时(例如,每次检测到帧错误时),错误计数器310可以将所检测到的错误的数量增加一(1)。
在操作620,处理逻辑可以指示中断。例如,阈值逻辑315可以指示如参考图3所描述的中断。在至少一个实施例中,处理逻辑可以是与错误计数器耦合的中断逻辑的示例。在至少一个实施例中,中断逻辑用于指定时间段,并且将在该时间段期间的错误的数量(例如,一个或更多个帧错误)与阈值错误数量(例如,帧错误)进行比较。在至少一个实施例中,中断逻辑可以响应于在时间段内检测到的错误(例如,一个或更多个帧错误)的数量满足帧错误的阈值数量来指示中断。在至少一个实施例中,中断逻辑包括比较逻辑,用于将时间段期间的错误计数器处的一个或更多个帧错误的数量与帧错误阈值数量进行比较。在实施例中,阈值错误数量是可编程的。在这种实施例中,中断逻辑用于从多个帧错误阈值数量中选择帧错误阈值数量。在一些实施例中,时间段逻辑用于向错误计数器传输信号以指定时间段——例如,时间段逻辑320可以向错误计数器310指示时间段标记360以指示时间段的结束。例如,计数器可以在与逻辑设备的时钟周期(例如,第二时钟355)相关联的一段时间之后接收信号。在一些实施例中,该时间段可以是可编程的。在这样的实施例中,中断逻辑可以从多个时间段中选择该时间段。在至少一个实施例中,中断逻辑可以指定与具有第一频率的第一时钟对应的时间段,其中第一频率小于具有大于第一频率的第二频率的接收器的第二时钟—例如,如参考图3所描述的,第二时钟355可以是比第一时钟325更慢的时钟。在一些实施例中,响应于在时间段内检测到的错误的数量满足帧错误阈值数量,中断逻辑可以将检测到的错误的数量(例如,一个或更多个帧错误)与第二阈值错误数量(例如,第二帧错误阈值数量)进行比较。在这样的实施例中,中断逻辑可以响应于检测到的错误满足第二阈值错误数量而指示第二中断。在一些实施例中,中断与软中断相关联,并且第二中断与硬中断相关联,如参考图3所述。例如,第一中断由第一软件中断处理程序处理,而第二中断由第二软件中断处理程序处理。在一些实施例中,第一软件处理程序和第二软件处理程序是相同的。在至少一个实施例中,第一软件处理程序可以响应于接收到第一中断而放慢耦合到接收器设备的链路。在至少一个实施例中,第二软件处理程序可以响应于接收到第二中断而重启接收器设备或重启链路。
在操作635,处理逻辑可以响应于接收到指示时间段结束的信号而将错误计数(例如,第一计数)减少至第二计数值。例如,处理逻辑可以将第一计数值减少到零(0)—例如,第二计数值是重置值。在其他实施例中,处理逻辑可以将第一计数减少由减量信号(例如,如参考图3所述的减量信号330)指示的值以达到第二计数值。在至少一个实施例中,处理逻辑可以继续执行错误检测操作、确定错误计数并且如果错误计数满足第一错误阈值或第二错误阈值则引发中断,如参照操作605-635所描述的。例如,处理逻辑可以接收第二组数据帧并对第二组数据帧中的每个数据帧执行错误检测操作。在这种实施例中,处理逻辑可以将计数器更新为第三值,并将第三值与阈值错误数量和第二阈值错误数量进行比较。如果处理逻辑确定第三计数满足阈值错误数量但不满足第二阈值错误数量,则处理逻辑可以传送第三计数满足阈值错误数量的指示,该指示与软中断相关联。如果处理逻辑确定第三计数满足第二阈值错误数量,则处理逻辑可以传送第三计数值满足第二阈值错误数量的指示,该指示与硬中断相关联。在一些实施例中,处理逻辑可在对第二组帧执行错误检测操作之后接收重置信号。在这种实施例中,处理逻辑可以将计数器值更新为重置值(例如,零)。在一些实施例中,处理逻辑可将时间段调整到与该时间段不同的第二时间段。在此类实施例中,处理逻辑可在第二时间段过去之后接收第二信号。
图7示出了根据至少一个实施例的计算机系统700,该计算机系统包括收发器,该收发器包括芯片至芯片互连。在至少一个实施例中,计算机系统700可以是具有互连的设备和组件、SOC或某种组合的系统。在至少一个实施例中,计算机系统700形成有处理器702,处理器702可以包括用于执行指令的执行单元。在至少一个实施例中,计算机系统700可以包括但不限于例如处理器702之类的组件,以采用包括逻辑的执行单元来执行用于处理数据的算法。在至少一个实施例中,计算机系统700可以包括处理器,诸如可从加利福尼亚州圣克拉拉市的英特尔公司获得的
Figure BDA0003941370230000181
处理器系列、XeonTM、/>
Figure BDA0003941370230000182
XScaleTM和/或StrongARMTM、/>
Figure BDA0003941370230000183
CoreTM或/>
Figure BDA0003941370230000184
NervanaTM微处理器,尽管也可以使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在至少一个实施例中,计算机系统700可执行可从华盛顿州雷蒙德市的微软公司获得的WINDOWS的操作系统的版本,但也可使用其他操作系统(例如UNIX和Linux)、嵌入式软件和/或图形用户界面。
在至少一个实施例中,计算机系统700可以用于其他设备中,如手持式设备和嵌入式应用。手持式设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(“PDA”)、以及手持式PC。在至少一个实施例中,嵌入式应用可以包括微控制器、数字信号处理器(DSP)、SoC、网络计算机(“Net PC”)、机顶盒、网络集线器、广域网(“WAN”)交换机、或可以执行一个或更多个指令的任何其他系统。在实施例中,计算机系统700可以用于诸如图形处理单元(GPU)、网络适配器、中央处理单元和诸如交换机(例如,高速直接GPU到GPU互连,诸如NVIDIA GH100NVLINK或NVIDIA量子2 64端口无限带宽NDR交换机)的网络设备中。
在至少一个实施例中,计算机系统700可以包括但不限于处理器702,其可以包括但不限于一个或更多个执行单元707,所述一个或更多个执行单元可以被配置成执行计算统一设备架构(“CUDA”)(
Figure BDA0003941370230000191
是由加利福尼亚州圣克拉拉市的NVIDIA公司开发的)程序。在至少一个实施例中,CUDA程序是用CUDA编程语言编写的软件应用的至少一部分。在至少一个实施例中,计算机系统700是单处理器桌面或服务器系统。在至少一个实施例中,计算机系统700可以是多处理器系统。在至少一个实施例中,处理器702可以包括但不限于CISC微处理器、RISC微处理器、VLIW微处理器、实现指令集的组合的处理器或任何其他处理器设备,诸如例如数字信号处理器。在至少一个实施例中,处理器702可以耦合到处理器总线710,处理器总线710可以在处理器702和计算机系统700中的其他组件之间传输数据信号。
在至少一个实施例中,处理器702可以包括但不限于1级(“L1”)内部高速缓存存储器(“高速缓存”)704。在至少一个实施例中,处理器702可以具有单个内部高速缓存或多个级别的内部高速缓存。在至少一个实施例中,高速缓存存储器可以驻留在处理器702的外部。在至少一个实施例中,处理器702还可以包括内部高速缓存和外部高速缓存两者的组合。在至少一个实施例中,寄存器文件706可以将不同类型的数据存储在各种寄存器中,包括但不限于整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。
在至少一个实施例中,执行单元707(包括但不限于用于执行整数和浮点运算的逻辑)还驻留在处理器702中。处理器702还可以包括存储用于某些宏指令的微代码的微代码(“ucode”)只读存储器(“ROM”)。在至少一个实施例中,执行单元702可以包括用于处理封装指令集709的逻辑。在至少一个实施例中,通过在通用处理器702的指令集中包括封装指令集709,以及用于执行指令的相关联电路,许多多媒体应用所使用的操作可以使用通用处理器702中的封装数据来执行。在至少一个实施例中,通过使用处理器的数据总线的全宽度来对封装数据执行操作,可以更高效地加速和执行许多多媒体应用,这可以消除跨处理器的数据总线传输更小的数据单元以便一次对一个数据元素执行一个或更多个操作的需要。
在至少一个实施例中,执行单元还可以用于微控制器、嵌入式处理器、图形设备、DSP、和其他类型的逻辑电路中。在至少一个实施例中,计算机系统700可以包括但不限于存储器720。在至少一个实施例中,存储器720可以实现为DRAM设备、SRAM设备、闪存设备或其他存储器设备。存储器720可存储指令719和/或由可由处理器702执行的数据信号表示的数据721。
在至少一个实施例中,系统逻辑芯片可以耦合至处理器总线710和存储器720。在至少一个实施例中,系统逻辑芯片可以包括但不限于存储器控制器集线器(“MCH”)716,并且处理器702可以经由处理器总线710与MCH716通信。在至少一个实施例中,MCH 716可以向存储器720提供高带宽存储器路径718,用于指令和数据存储以及用于存储图形命令、数据和纹理。在至少一个实施例中,MCH 716可以在处理器702、存储器720和计算机系统700中的其他组件之间引导数据信号,并在处理器总线710、存储器720和系统I/O 722之间桥接数据信号。在至少一个实施例中,系统逻辑芯片可以提供用于耦合到图形控制器的图形端口。在至少一个实施例中,MCH 716可以通过高带宽存储器路径718耦合到存储器720并且图形/视频卡712可以通过加速图形端口(“AGP”)互连714耦合到MCH 716。
在至少一个实施例中,计算机系统700可以使用作为专用集线器接口总线的系统I/O 722来将MCH 716耦合至I/O控制器集线器(“ICH”)730。在至少一个实施例中,ICH 730可以经由本地I/O总线提供与一些I/O设备的直接连接。在至少一个实施例中,本地I/O总线可以包括但不限于用于将外围设备连接到存储器720、芯片组和处理器702的高速I/O总线。示例可以包括但不限于音频控制器729、固件集线器(“闪存BIOS”)728、收发器726、数据存储724、包含用户输入接口725和键盘接口的传统I/O控制器723、串行扩展端口727(如USB)、以及网络控制器734。数据存储724可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备或其他大容量存储设备。在实施例中,收发器726包括受限FFE 708。
在至少一个实施例中,图7示出了一种系统,该系统包括收发器726中的互连的硬件设备或“芯片”,例如,收发器726包括芯片至芯片互连,该芯片至芯片互连包括第一设备110和第二设备112,如参见图1所描述的)。在至少一个实施例中,图7可示出示例性SoC。在至少一个实施例中,图7中所示出的设备可以与专有互连、标准化互连(例如,PCIe)、或它们的某种组合互连,并且利用如参见图2所描述的GRS链路220。在至少一个实施例中,系统700的一个或更多个部件使用快速计算链路(“CXL”)互连来互连。在一个实施例中,收发器726可以包括如参考图1所述的中断逻辑150。在这样的实施例中,如果在可编程时间段内检测到的错误的数量满足第一阈值错误数量,则中断逻辑150可以发送第一中断。在一些实施例中,如果在可编程时间段内检测到的错误的数量满足第二阈值错误数量,则中断逻辑150可以发送第二中断。因而,中断逻辑150可以促进用于高速互连的硬件中的错误率中断的方法。
其他变化形式在本公开的精神内。因此,虽然所公开的技术易受不同修改和替代构造的影响,但是其某些所示实施例在附图中示出并且在上文已经详细描述。然而,应当理解,并不旨在将本公开限于所公开的一种或多种具体形式,而是相反,旨在覆盖落入如所附权利要求所限定的本公开的精神和范围内的所有修改、替代构造和等同物。
在描述所公开的实施例的上下文中(尤其是在以下权利要求的上下文中)术语“一个”和“一种”以及“该”以及类似引用的使用应被解释为涵盖单数和复数两者,除非在此另外指示或与上下文明显矛盾,并且不是作为术语的定义。除非另外指出,否则术语“包含”、“具有”、“包括”和“含有”应被解释为开放式术语(意味着“包括但不限于”)。“连接”在未修改并且指代物理连接时,应被解释为部分地或完全地包含在…内、附接至或连接在一起,即使存在介入物。除非本文中另外指示,否则本文中对值范围的陈述仅意欲用作个别地指代落入所述范围内的每一单独值的速记方法,且每一单独值如同其在本文中个别陈述一样并入到说明书中。在至少一个实施例中,除非另外指明或上下文矛盾,否则术语“集合”(例如,“项目集合”)或“子集”的使用将被解释为包括一个或更多个成员的非空集合。此外,除非另有说明或与上下文矛盾,否则术语对应集合的“子集”不一定表示对应集合的合适子集,而是子集和对应集合可以相等。
除非另外明确说明或另外与上下文明显矛盾,否则连接语言(如“A、B和C中的至少一者”或“A、B和C中的至少一者”形式的短语)另外与上下文一起被理解为一般用于呈现项目、术语等可为A或B或C或A和B和C的集合的任何非空子集。例如,在具有三个成员的集合的说明性示例中,连接短语“A、B以及C中的至少一个”以及“A、B以及C中的至少一个”指以下集合中的任一个:{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}。因此,这种连接语言一般不旨在暗示某些实施例要求A中的至少一个、B中的至少一个以及C中的至少一个各自都存在。此外,除非上下文另有说明或与上下文矛盾,否则术语“多个”表示为多个的状态(例如,“多个项”表示多个项)。在至少一个实施例中,多个中的项的数目是至少两个,但是当显式地或通过上下文这样指示时可以更多。此外,除非另外陈述或另外从上下文清楚,否则短语“基于”是指“至少部分地基于”而不是“仅基于”。
在此描述的过程的操作可以按任何适合的顺序执行,除非在此另外指示或另外与上下文明显矛盾。在至少一个实施例中,诸如本文中描述的那些过程的过程(或其变型和/或组合)在配置有可执行指令的一个或更多个计算机系统的控制下执行,并且通过硬件或其组合实施为在一个或更多个处理器上共同执行的代码(例如,可执行指令、一个或更多个计算机程序或一个或更多个应用)。在至少一个实施例中,代码例如以包括可由一个或更多个处理器执行的多个指令的计算机程序的形式存储在计算机可读存储介质上。在至少一个实施例中,计算机可读存储介质是非暂态计算机可读存储介质,该非暂态计算机可读存储介质不包括暂态信号(例如,传播暂态电或电磁发送)但包括暂态信号的收发器内的非暂态数据存储电路(例如,缓冲器、高速缓存和队列)。在至少一个实施例中,代码(例如,可执行代码或源代码)存储在其上存储有可执行指令的一个或更多个非暂态计算机可读存储介质的集合上(或用于存储可执行指令的其他存储器),所述可执行指令当由计算机系统的一个或更多个处理器执行(即,由于被执行)时,使计算机系统执行本文中所描述的操作。在至少一个实施例中,一组非暂态计算机可读存储介质包括多个非暂态计算机可读存储介质,并且多个非暂态计算机可读存储介质中的个体非暂态存储介质中的一个或更多个缺少所有代码,而多个非暂态计算机可读存储介质共同地存储所有代码。在至少一个实施例中,可执行指令被执行,使得不同的指令被不同的处理器执行。
因此,在至少一个实施例中,计算机系统被配置成实现一个或更多个服务,该一个或更多个服务单独地或共同地执行在此所描述的过程的操作,并且此类计算机系统被配置有能够执行操作的适用硬件和/或软件。进一步,实现本公开的至少一个实施例的计算机系统是单个设备,并且在另一实施例中,是分布式计算机系统,其包括不同地操作的多个设备,使得分布式计算机系统执行本文描述的操作,并且使得单个设备不执行所有操作。
使用在此提供的任何和所有示例或示例性语言(例如,“诸如”)仅旨在更好地阐明本公开的实施例并且不对本公开的范围造成限制,除非另外要求。说明书中的语言不应被解释为指示任何未要求保护的元件对本公开的实践是必不可少的。
在此引用的所有参考文献(包括出版物、专利申请以及专利)通过引用合并在此,其程度如同每个参考文献被单独地并且确切地指明通过引用合并,并且以其全文在此列出。
在说明书和权利要求书中,可以使用术语“耦合”和“连接”及其派生词。应当理解,这些术语并不旨在作为彼此的同义词。相反,在具体示例中,“连接”或“耦合”可以用于指示两个或更多个元件彼此直接或间接物理或电接触。“耦合”还可以意味着两个或更多个元件彼此不直接接触,但仍彼此合作或交互。
除非另外确切地陈述,否则可以认识到贯穿说明书,术语如“处理”、“计算(computing)”、“计算(caculating)”、“确定”或类似术语是指计算机或计算系统或类似电子计算设备的动作和/或过程,该动作和/或过程将表示为计算系统的寄存器和/或存储器内的物理(如电子)量的数据操纵和/或转换为类似地表示为计算系统的存储器、寄存器或其他此类信息存储、发送或显示设备内的物理量的其他数据。
以类似的方式,术语“处理器”可以指处理来自寄存器和/或存储器的电子数据并且将该电子数据转换成可以存储在寄存器和/或存储器中的其他电子数据的任何设备或设备的一部分。“计算平台”可以包括一个或更多个处理器。如本文所使用的,“软件”过程可包括例如随时间执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。而且,每个过程可以指用于顺序地或并行地、连续地或间歇地执行指令的多个过程。在至少一个实施例中,术语“系统”和“方法”在此可互换地使用,只要该系统可以体现一种或更多种方法并且方法可以被认为是系统。
在本文件中,可以参考以获得、获取、接收或输入模拟或数字数据到子系统、计算机系统或计算机实现的机器中。在至少一个实施例中,获得、获取、接收或输入模拟和数字数据的过程可以以各种方式完成,诸如通过接收数据作为函数调用或对应用编程接口的调用的参数。在至少一个实施例中,获得、获取、接收或输入模拟或数字数据的过程可以通过经由串行或并行接口传送数据来完成。在至少一个实施例中,获得、获取、接收或输入模拟或数字数据的过程可通过经由计算机网络从提供实体向获取实体传送数据来完成。在至少一个实施例中,还可参考以提供、输出、传输、发送或呈现模拟或数字数据。在不同示例中,提供、输出、传输、发送或呈现模拟或数字数据的过程可以通过传送数据作为函数调用的输入或输出参数、应用编程接口或进程间通信机制的参数来实现。
尽管本文中的描述阐述了所描述的技术的示例实施例,但其他架构可以用于实现所描述的功能,并且旨在处于本公开的范围内。此外,尽管出于描述的目的可在上文定义职责的特定分布,但可根据环境以不同方式分布和划分各个功能和职责。
此外,尽管已经以特定于结构特征和/或方法动作的语言描述了本主题,但可以理解,所附权利要求书中所要求保护的主题不必限于所述的特定特征或动作。相反,特定特征和动作被公开为实现权利要求的示例性形式。

Claims (20)

1.一种接收器设备,包括:
检测逻辑,用于接收第一组数据帧并且检测所述第一组数据帧中的一个或更多个帧错误;
错误计数器,用于存储在所述第一组数据帧中检测到的所述一个或更多个帧错误的数量;以及
中断逻辑,其耦合至所述错误计数器,所述中断逻辑用于指定时间段并且将在所述时间段期间的所述一个或更多个帧错误的所述数量与帧错误阈值数量进行比较,其中所述中断逻辑用于响应于在所述时间段内检测到的所述一个或更多个帧错误的所述数量满足所述帧错误阈值数量而指示中断。
2.根据权利要求1所述的接收器设备,其中所述中断逻辑包括:
时间段逻辑,其被配置为将信号发送至所述错误计数器以指定所述时间段;以及
比较逻辑,其被配置为将所述时间段期间的所述错误计数器处的所述一个或更多个帧错误的所述数量与所述帧错误阈值数量进行比较。
3.根据权利要求1所述的接收器设备,其中所述中断逻辑进一步用于从多个时间段中选择所述时间段。
4.根据权利要求1所述的接收器设备,其中所述中断逻辑进一步用于从多个帧错误阈值数量中选择所述帧错误阈值数量。
5.根据权利要求1所述的接收器设备,其中所述中断逻辑指定与具有第一频率的第一时钟相对应的所述时间段,并且其中所述接收器设备包括具有大于所述第一频率的第二频率的第二时钟。
6.根据权利要求1所述的接收器设备,其中所述中断逻辑进一步用于:
响应于在所述时间段内检测到的所述一个或更多个帧错误的数量满足所述帧错误阈值数量,将检测到的所述一个或更多个帧错误的数量与第二帧错误阈值数量进行比较;以及
响应于检测到的所述一个或更多个帧错误的所述数量满足所述第二帧错误阈值数量,指示第二中断。
7.一种设备,包括:
数据链路DL接收器、逻辑设备和计数器,所述设备用于:
接收第一组数据帧;
对接收到的所述第一组数据帧中的每个数据帧执行错误检测操作;
将所述计数器处的计数器值更新为第一计数值,所述第一计数值与响应于对每个数据帧执行所述错误检测操作而检测到的错误的数量相对应;
在与所述逻辑设备的时钟周期相关联的时间段之后,在所述计数器处从所述逻辑设备接收信号;以及
响应于从所述逻辑设备接收所述信号而将所述第一计数值减小到第二计数值。
8.根据权利要求7所述的设备,其中所述设备进一步用于:
接收第二组数据帧;
对所述第二组数据帧中的每个数据帧执行所述错误检测操作;
响应于对所述第二组数据帧中的每个数据帧执行所述错误检测操作而将所述计数器处的所述计数器值更新为第三计数值;以及
响应于将所述计数器值更新为所述第三计数值,确定所述第三计数值满足阈值错误数量。
9.根据权利要求8所述的设备,其中所述设备进一步用于:
响应于将所述计数器值更新为所述第三计数值,确定所述第三计数值不满足第二阈值错误数量;以及
发送所述第三计数值满足所述阈值错误数量的指示,所述指示与第一中断相关联。
10.根据权利要求8所述的设备,其中所述设备进一步用于:
响应于将所述计数器值更新为所述第三计数值,确定所述第三计数值满足第二阈值错误数量;以及
发送所述第三计数值满足所述阈值错误数量和所述第二阈值错误数量的指示,所述指示与第二中断相关联。
11.根据权利要求7所述的设备,其中所述第二计数值是重置值。
12.根据权利要求7所述的设备,其中所述设备进一步用于:
将所述时间段调整到与所述时间段不同的第二时间段;以及
在所述第二时间段过去之后,在所述计数器处从所述逻辑设备接收第二信号。
13.根据权利要求7所述的设备,其中所述设备进一步用于:
接收第二组数据帧;
对所述第二组数据帧中的每个数据帧执行所述错误检测操作;
在对每个数据帧执行所述错误检测操作之后接收重置信号;以及
响应于接收所述重置信号而将所述计数器值从所述第二计数值更新为第三计数值。
14.一种方法,包括:
在包括计数器和逻辑设备的设备处接收第一组数据帧;
在所述设备处对接收到的所述第一组数据帧中的每个数据帧执行错误检测操作;
在所述计数器处将计数器值更新为第一计数值,所述第一计数值与响应于对每个数据帧执行所述错误检测操作而检测到的错误的数量相对应;
在与所述逻辑设备的时钟周期相关联的时间段之后,在所述计数器处接收来自所述逻辑设备的信号;以及
响应于从所述逻辑设备接收到所述信号而将所述第一计数值减小到第二计数值。
15.根据权利要求14所述的方法,还包括:
接收第二组数据帧;
对所述第二组数据帧中的每个数据帧执行所述错误检测操作;
响应于对所述第二组数据帧中的每个数据帧执行所述错误检测操作而在所述计数器处将所述计数器值更新为第三计数值;以及
响应于将所述计数器值更新为所述第三计数值,确定所述第三计数值满足阈值错误数量。
16.根据权利要求15所述的方法,还包括:
响应于将所述计数器值更新为所述第三计数值,确定所述第三计数值不满足第二阈值错误数量;以及
发送所述第三计数值满足所述阈值错误数量的指示,所述指示与第一中断相关联。
17.根据权利要求15所述的方法,还包括:
响应于将所述计数器值更新为所述第三计数值,确定所述第三计数值满足第二阈值错误数量;以及
发送所述第三计数值满足所述阈值错误数量和所述第二阈值错误数量的指示,所述指示与第二中断相关联。
18.一种方法,包括:
在包括逻辑设备的设备处接收第一组数据帧;
对接收到的所述第一组数据帧中的每个数据帧执行错误检测操作;以及
在计数器处,将由所述逻辑设备指示的时间段内检测到的错误数量与阈值错误数量进行比较,其中所述设备被配置为响应于在所述时间段内检测到的所述错误数量满足所述阈值错误数量而指示中断。
19.根据权利要求18所述的方法,还包括:
在所述计数器处从时间段逻辑接收指定所述时间段的信号,其中所述信号指定与具有第一频率的第一时钟相对应的时间段,且其中所述设备包括具有大于所述第一频率的第二频率的第二时钟。
20.根据权利要求18所述的方法,还包括:
响应于在所述时间段内检测到的所述错误数量满足所述阈值错误数量,将检测到的所述错误数量与第二阈值错误数量进行比较;以及
响应于所检测到的所述错误数量满足所述第二阈值错误数量而指示第二中断。
CN202211424315.XA 2021-12-21 2022-11-14 用于高速信令互连的硬件中的错误率中断 Pending CN116318530A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/557,836 US11880265B2 (en) 2021-12-21 2021-12-21 Error rate interrupts in hardware for high-speed signaling interconnect
US17/557,836 2021-12-21

Publications (1)

Publication Number Publication Date
CN116318530A true CN116318530A (zh) 2023-06-23

Family

ID=86606011

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211424315.XA Pending CN116318530A (zh) 2021-12-21 2022-11-14 用于高速信令互连的硬件中的错误率中断

Country Status (3)

Country Link
US (2) US11880265B2 (zh)
CN (1) CN116318530A (zh)
DE (1) DE102022213770A1 (zh)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7076573B2 (en) * 2003-11-20 2006-07-11 International Business Machines Corporation Method, apparatus, and program for detecting sequential and distributed path errors in MPIO
US7424666B2 (en) * 2005-09-26 2008-09-09 Intel Corporation Method and apparatus to detect/manage faults in a system
TWI527037B (zh) * 2014-04-10 2016-03-21 群聯電子股份有限公司 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置
CN105743731B (zh) * 2014-12-11 2019-03-29 国际商业机器公司 用于存储系统中的故障检测的方法和装置
US10289466B2 (en) * 2017-02-01 2019-05-14 International Business Machines Corporation Error data collection improvements in storage network components
JP7069936B2 (ja) * 2018-03-27 2022-05-18 富士通株式会社 送受信システム、データ受信装置、およびデータ受信方法
TWI686696B (zh) * 2018-08-14 2020-03-01 財團法人工業技術研究院 計算節點及其失效偵測方法與雲端資料處理系統

Also Published As

Publication number Publication date
US20230195551A1 (en) 2023-06-22
DE102022213770A1 (de) 2023-06-22
US20240103951A1 (en) 2024-03-28
US11880265B2 (en) 2024-01-23

Similar Documents

Publication Publication Date Title
US11632130B2 (en) PCI express enhancements
US20230350829A1 (en) Flexible on-die fabric interface
CN109614256B (zh) 现场错误恢复
US20200327088A1 (en) Streaming fabric interface
CN107078850B (zh) 边带奇偶校验处理
US20210232520A1 (en) Logical physical layer interface specification support for pcie 6.0, cxl 3.0, and upi 3.0 protocols
CN115858443A (zh) 用于通道裕量和表征的硬件记录
US20240111706A1 (en) Frame alignment recovery for a high-speed signaling interconnect
US20230209405A1 (en) Method and system for transmitting in-band cross-chip triggers to maintain high-speed interconnect
EP4135231A1 (en) Synchronizing a high-speed signaling interconnect
US11575494B1 (en) Link status detection for a high-speed signaling interconnect
US11880265B2 (en) Error rate interrupts in hardware for high-speed signaling interconnect
US20230362084A1 (en) Rational value rate limiter
US11784890B2 (en) Link training through handshake on high-speed interconnect
US20240111702A1 (en) Virtual wire protocol for transmitting side band channels
US20230362097A1 (en) Dynamic rate control
US20230342323A1 (en) Streaming fabric interface
US20230205254A1 (en) High-speed signaling system with ground referenced signaling (grs) over substrate
US11956342B2 (en) Reliable link management for a high-speed signaling interconnect
US20230353338A1 (en) Signal distortion correction with time-to-digital converter (tdc)
JP6552581B2 (ja) 装置、方法、およびシステム
JP2019192287A (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