BR102020019435A2 - suporte multiprotocolo em camada física comum - Google Patents

suporte multiprotocolo em camada física comum Download PDF

Info

Publication number
BR102020019435A2
BR102020019435A2 BR102020019435-6A BR102020019435A BR102020019435A2 BR 102020019435 A2 BR102020019435 A2 BR 102020019435A2 BR 102020019435 A BR102020019435 A BR 102020019435A BR 102020019435 A2 BR102020019435 A2 BR 102020019435A2
Authority
BR
Brazil
Prior art keywords
crc
encoders
ecc
protocol
link
Prior art date
Application number
BR102020019435-6A
Other languages
English (en)
Inventor
Debendra Das Sharma
Original Assignee
Intel Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corporation filed Critical Intel Corporation
Publication of BR102020019435A2 publication Critical patent/BR102020019435A2/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/405Coupling between buses using bus bridges where the bridge performs a synchronising function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • 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/0009Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Communication Control (AREA)
  • Multi Processors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

A presente invenção trata de sistemas e dispositivos podem incluir uma camada física (PHY) que inclui uma PHY lógica para suportar múltiplos protocolos de interconexão. A PHY lógica pode incluir um primeiro conjunto de codificadores de verificação de redundância cíclica (CRC) que corresponde a um primeiro protocolo de interconexão, e um segundo conjunto de codificadores de CRC que corresponde a um segundo protocolo de interconexão. Um multiplexador pode direcionar dados para o primeiro conjunto ou para o segundo conjunto de codificadores de CRC com base em um protocolo de interconexão selecionado. A PHY lógica pode incluir um primeiro conjunto de codificadores de código de correção de erros (ECC) que corresponde ao primeiro protocolo de interconexão e um segundo conjunto de codificadores de ECC que corresponde ao segundo protocolo de interconexão. O multiplexador pode direcionar dados para o primeiro conjunto ou para o segundo conjunto de codificadores de ECC com base no protocolo de interconexão selecionado. Nas modalidades, diferentes combinações de CRC/ECC podem ser usadas com base no protocolo de interconexão e nas condições operacionais de enlace.

Description

SUPORTE MULTIPROTOCOLO EM CAMADA FÍSICA COMUM REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS
[0001] De acordo com o Título 35 do U.S.C. § 119(e), este pedido reivindica o benefício do Pedido de Patente Provisório no de série U.S. 62/941.445, intitulado "MULTI-PROTOCOL SUPPORT ON COMMON PHYSICAL LAYER IN CONSIDERATION OF MODULATION WITH MULTIPLE FORWARD ERROR CORRECTION AND CYCLIC REDUNDANCY CHECK (CRC) CODES", depositado em 27 de novembro de 2019, cujo conteúdo completo está incorporado ao presente documento a título de referência.
HISTÓRICO
[0002] À medida que as taxas de dados para enlaces seriais ultrapassam 32,0 GT/s, Pulse Amplitude Modulation (PAM, como PAM-4) com Forward Error Correction (FEC) pode ser usado para limitar uma Bit Error Rate (BER) eficaz para um intervalo aceitável. A Correção de Erro de Encaminhamento (FEC) é uma técnica usada para controlar erros na transmissão de dados em canais de comunicação não confiáveis ou ruidosos. Um remetente pode codificar uma mensagem de maneira redundante usando um código de correção de erros (ECC). A redundância permite que o receptor detecte um número limitado de erros que podem ocorrer em qualquer parte da mensagem e, frequentemente, corrija esses erros sem retransmissão.
BREVE DESCRIÇÃO DOS DESENHOS
[0003] A Figura 1 ilustra uma modalidade de um diagrama de blocos para um sistema de computação que inclui um processador de múltiplos núcleos.
[0004] As Figuras 2A a 2B são diagramas de blocos simplificados de enlaces exemplificativos que incluem um ou mais ressincronizadores de acordo com modalidades da presente revelação.
[0005] A Figura 3 é um diagrama esquemático de uma camada física comum (PHY comum) para suportar múltiplos protocolos de interconexão de acordo com modalidades da presente revelação.
[0006] A Figura 4 é um diagrama esquemático de um sub-bloco lógico do lado do transmissor de uma PHY comum de acordo com modalidades da presente revelação.
[0007] A Figura 5 é um diagrama esquemático de um sub-bloco lógico do lado do receptor de uma PHY comum de acordo com modalidades da presente revelação.
[0008] A Figura 6 é um fluxograma de processo para alterar dinamicamente as condições operacionais de interconexão em uma PHY comum de acordo com modalidades da presente revelação.
[0009] A Figura 7 ilustra uma modalidade de um sistema de computação que inclui uma arquitetura de interconexão.
[0010] A Figura 8 ilustra uma modalidade de uma arquitetura de interconexão que inclui uma pilha em camadas.
[0011] A Figura 9 ilustra uma modalidade de uma solicitação ou pacote a serem gerados ou recebidos dentro de uma arquitetura de interconexão.
[0012] A Figura 10 ilustra uma modalidade de um par de transmissor e receptor para uma arquitetura de interconexão.
[0013] A Figura 11 ilustra outra modalidade de um diagrama de bloco para um sistema de computação que inclui um processador.
[0014] A Figura 12 ilustra uma modalidade de um bloco para um sistema de computação que inclui múltiplos soquetes de processador.
[0015] A Figura 13 é um diagrama esquemático que ilustra uma máquina de estado de treinamento de enlace exemplificativa de acordo com modalidades da presente revelação.
[0016] As Figuras não estão em escala.
DESCRIÇÃO DETALHADA
[0017] Na seguinte descrição, são apresentados inúmeros detalhes específicos, como exemplos de tipos específicos de processadores e configurações do sistema, estruturas de hardware específicas, detalhes de arquitetura e microarquitetura específicos, configurações de registro específicas, tipos de instrução específicos, componentes do sistema específicos, medições/alturas específicas, estágios de canal de processamento do processador específicos e operação específica, etc., a fim de fornecer um entendimento completo da presente revelação. Será evidente, entretanto, para um elemento versado na técnica que esses detalhes específicos não precisam ser empregados para praticar a presente revelação. Em outros casos, os métodos ou componentes bem conhecidos, como arquiteturas de processador alternativas e específicas, código/circuitos lógicos específicos para algoritmos descritos, código de firmware específico, operação de interconexão específica, configurações lógicas específicas, materiais e técnicas de fabricação específicas, implantações de compilador específicas, expressão específica de algoritmos em código, lógica/técnica de comutação e redução de potência específicas e outros detalhes operacionais específicos de sistema de computador que não foram descritos em detalhes de modo a evitar ocultar desnecessariamente a presente revelação.
[0018] Embora as seguintes modalidades possam ser descritas com referência à conservação de energia e eficiência energética em circuitos integrados específicos, como em plataformas de computação ou microprocessadores, outras modalidades são aplicáveis a outros tipos de circuitos integrados e dispositivos lógicos. Técnicas e instruções similares de modalidades descritas no presente documento podem ser aplicadas a outros tipos de circuitos ou dispositivos semicondutores que podem também se beneficiar da melhor eficiência energética e conservação de energia. Por exemplo, as modalidades reveladas não são limitadas a sistemas de computador de mesa ou Ultrabooks™. E também podem ser usadas em outros dispositivos, como dispositivos de mão, computadores do tipo tablet, outros computadores do tipo notebook finos, dispositivos de sistemas em um chip (SOC) e aplicativos embutidos. Alguns exemplos de dispositivos de mão incluem telefones celulares, dispositivos de protocolo de Internet, câmeras digitais, assistentes pessoais digitais (PDAs) e PCs de mão. Os aplicativos embutidos tipicamente incluem um microcontrolador, um processador de sinal digital (DSP), um sistema em um chip, computadores de rede (NetPC), conversores, hubs de rede, comutadores de rede de longa distância (WAN) ou qualquer outro sistema que possam realizar as funções e operações mostradas abaixo. Ademais, o aparelho, métodos e sistemas descritos no presente documento não se limitam a dispositivos de computação físicos, mas também podem se referir a otimizações de software para eficiência e conservação de energia. Conforme será prontamente evidente na descrição abaixo, as modalidades de métodos, aparelho e sistemas descritos no presente documento (com referência a hardware, firmware, software ou uma combinação dos mesmos) são vitais para um futuro de "tecnologia verde" equilibrado com considerações de desempenho.
[0019] À medida que os sistemas de computação estão avançando, os componentes no presente documento se tornam mais complexos. Como resultado, a arquitetura de interconexão para acoplar e se comunicar entre os componentes também está aumentando em complexidade para assegurar que os requisitos de largura de banda sejam atendidos para a operação de componente ideal. Adicionalmente, diferentes segmentos de mercado exigem diferentes aspectos de arquiteturas de interconexão para se adequar às necessidades do mercado . Por exemplo, os servidores exigem desempenho maior, enquanto que o ecossistema móvel é às vezes capaz de sacrificar o desempenho geral para economias de potência. No entanto, é um propósito singular da maioria das malhas fornecer o maior desempenho possível com economia de potência máxima. Abaixo, várias interconexões são discutidas, que iriam potencialmente se beneficiar dos aspectos da revelação descritos no presente documento.
[0020] Com referência à Figura 1, é representada uma modalidade de um diagrama de blocos para um sistema de computação que inclui um processador de múltiplos núcleos. O processador 100 inclui qualquer processador ou dispositivo de processamento, como um microprocessador, um processador embutido, um processador de sinal digital (DSP), um processador de rede, um processador de mão, um processador de aplicativo, um coprocessador, um sistema em um chip (SOC) ou outro dispositivo para executar código. O processador 100, em uma modalidade, inclui ao menos dois núcleos —núcleos 101 e 102, que podem incluir núcleos assimétricos ou núcleos simétricos (a modalidade ilustrada). Entretanto, o processador 100 pode incluir qualquer número de elementos de processamento que podem ser simétricos ou assimétricos.
[0021] Em uma modalidade, um elemento de processamento se refere a hardware ou lógica para suportar um thread de software. Os exemplos de elementos de processamento de hardware incluem: uma unidade de thread, um slot de thread, um thread, uma unidade de processo, um contexto, uma unidade de contexto, um processador lógico, um thread de hardware, um núcleo e/ou qualquer outro elemento, que tenha capacidade de reter um estado para um processador, como um estado de execução ou estado de arquitetura. Em outras palavras, um elemento de processamento, em uma modalidade, se refere a qualquer hardware capaz de ser independentemente associado ao código, como um thread de software, sistema operacional, aplicativo ou outro código. Um processador físico (ou soquete de processador) tipicamente se refere a um circuito integrado, que inclui potencialmente qualquer número de outros elementos de processamento, como núcleos ou threads de hardware.
[0022] Um núcleo muitas vezes se refere à lógica situada em um circuito integrado com capacidade para manter um estado de arquitetura independente, em que cada estado de arquitetura mantido independentemente está associado a ao menos alguns recursos de execução dedicados. Em contraste com os núcleos, um thread de hardware tipicamente se refere a qualquer lógica situada em um circuito integrado com capacidade para manter um estado de arquitetura independente, em que os estados de arquitetura mantidos independentemente compartilham acesso a recursos de execução. Conforme pode ser visto, quando determinados recursos são compartilhados e outros são dedicados a um estado de arquitetura, a linha entre a nomenclatura de um thread de hardware e núcleo se sobrepõe. Um núcleo e um thread de hardware são vistos ainda muitas vezes por um sistema operacional como processadores lógicos individuais, em que o sistema operacional tem capacidade para programar individualmente operações em cada processador lógico.
[0023] O processador físico 100, conforme ilustrado na Figura 1, inclui dois núcleos —núcleos 101 e 102. Aqui, os núcleos 101 e 102 são considerados núcleos simétricos, isto é, núcleos com as mesmas configurações, unidades funcionais e/ou lógica. Em uma outra modalidade, o núcleo 101 inclui um núcleo de processador fora de ordem, embora o núcleo 102 inclua um núcleo de processador em ordem. Entretanto, os núcleos 101 e 102 podem ser individualmente selecionados a partir de qualquer tipo de núcleo, como um núcleo nativo, um núcleo gerenciado por software, um núcleo adaptado para executar uma arquitetura de conjunto de instruções nativa (ISA), um núcleo adaptado para executar uma arquitetura de conjunto de instruções traduzida (ISA), um núcleo coprojetado ou outro núcleo conhecido. Em um ambiente de núcleo heterogêneo (isto é, núcleos assimétricos), alguma forma de tradução, como tradução binária, pode ser utilizada para programar ou executar código em um ou ambos os núcleos. Para promover ainda mais a discussão, as unidades funcionais ilustradas no núcleo 101 são descritas em detalhes adicionais abaixo, à medida que as unidades no núcleo 102 operam de uma maneira similar na modalidade representada.
[0024] Conforme representado, o núcleo 101 inclui dois threads de hardware 101a e 101b, que podem ser também mencionados como slots de thread de hardware 101a e 101b. Portanto, as entidades de software, como um sistema operacional, em uma modalidade, visualizam potencialmente o processador 100 como quatro processadores separados, isto é, quatro processadores lógicos ou elementos de processamento com capacidade para executar quatro threads de software de maneira simultânea. Conforme mencionado acima, um primeiro thread está associado a registros de estado de arquitetura 101a, um segundo thread está associado a registros de estado de arquitetura 101b, um terceiro thread pode estar associado a registros de estado de arquitetura 102a e um quarto thread pode estar associado a registros de estado de arquitetura 102b. Aqui, cada um dos registros de estado de arquitetura (101a, 101b, 102a e 102b) pode ser mencionado como elementos de processamento, slots de thread ou unidades de thread, conforme descrito acima. Conforme ilustrado, os registros de estado de arquitetura 101a são replicados em registros de estado de arquitetura 101b, assim, contextos/estados de arquitetura individuais têm capacidade para serem armazenados para o processador lógico 101a e o processador lógico 101b. No núcleo 101, outros recursos menores, como apontadores de instrução e lógica de renomeação no bloco de alocador e renomeador 130, também podem ser replicados para threads 101a e 101b. Alguns recursos, como armazenamentos temporários de reordenação na unidade de retirada/reordenação 135, ILTB 120, armazenamentos temporários de carregamento/armazenamento e filas podem ser compartilhadas através de partição. Outros recursos, como registros internos de propósito geral, registro (ou registros) de base de tabela de página, cache de dados de baixo nível e TLB de dados 115, unidade (ou unidades) de execução 140 e porções de unidade fora de ordem 135 são compartilhadas de maneira potencialmente completa.
[0025] O processador 100 muitas vezes inclui outros recursos, que podem ser completamente compartilhados, compartilhados através de partição ou dedicados por/a elementos de processamento. Na Figura 1, é ilustrada uma modalidade de um processador meramente exemplificador com recursos/unidades lógicas ilustrativas de um processador. Observe que um processador pode incluir, ou omitir, qualquer uma dessas unidades funcionais, bem como incluir quaisquer outras unidades funcionais conhecidas, lógica ou firmware não representado. Conforme ilustrado, o núcleo 101 inclui um núcleo de processador fora de ordem (OOO) representativo e simplificado. Porém, um processador em ordem pode ser utilizado em modalidades diferentes. O núcleo OOO inclui um armazenamento temporário de alvo de ramificação 120 para predizer ramificações a serem executadas/consideradas e um armazenamento temporário de tradução de instrução (I-TLB) 120 para armazenar entradas de tradução de endereço para instruções.
[0026] O núcleo 101 inclui, adicionalmente, o módulo de decodificação 125 acoplado à unidade de busca 120 para decodificar elementos buscados. A lógica de busca, em uma modalidade, inclui sequenciadores individuais associados a slots de thread 101a, 101b, respectivamente. Normalmente, o núcleo 101 está associado a uma primeira ISA, que define/especifica instruções executáveis no processador 100. Muitas vezes as instruções de código de máquina que são parte da primeira ISA incluem uma porção da instrução (mencionada como um opcode), que menciona/especifica uma instrução ou operação a ser realizada. A lógica de decodificação 125 inclui conjunto de circuitos que reconhece essas instruções a partir de seus opcodes e passa as instruções decodificadas no canal de processamento para o processamento conforme definido pela primeira ISA. Por exemplo, conforme discutido em mais detalhes abaixo, os decodificadores 125, em uma modalidade, incluem lógica projetada ou adaptada para reconhecer instruções específicas, como instrução transacional. Como resultado do reconhecimento através de decodificadores 125, a arquitetura ou núcleo 101 toma ações predefinidas específicas para realizar as tarefas associadas à instrução adequada. É importante observar que qualquer um dentre as tarefas, blocos, operações e métodos descritos no presente documento pode ser realizado em resposta a uma única ou múltiplas instruções; das quais algumas podem ser instruções novas ou antigas. Deve-se observar que os decodificadores 126, em uma modalidade, reconhecem a mesma ISA (ou um subconjunto da mesma). Alternativamente, em um ambiente de núcleo heterogêneo, os decodificadores 126 reconhecem uma segunda ISA (um subconjunto da primeira ISA ou uma ISA distinta).
[0027] Em um exemplo, o bloco de alocador e renomeador 130 inclui um alocador para reservar recursos, como arquivos de registro para armazenar resultados de processamento de instrução. Entretanto, os threads 101a e 101b têm potencialmente capacidade para execução fora de ordem, em que o bloco de alocador e renomeador 130 também reserva outros recursos, como armazenamentos temporários de reordenação para rastrear resultados de instrução. A unidade 130 também pode incluir um renomeador de registro para renomear registros de referência de programa/instrução para outros registros internos ao processador 100. A unidade de retirada/reordenação 135 inclui componentes, como armazenamentos temporários de reordenação mencionados acima, armazenamentos temporários de carregamento e armazenamentos temporários de armazenamento, para suportar a execução fora de ordem e retirada em ordem posterior de instruções executadas fora de ordem.
[0028] O bloco de unidade (ou unidades) de execução e programador 140, em uma modalidade, inclui uma unidade de programador para programar instruções/operação em unidades de execução. Por exemplo, uma instrução de ponto flutuante é programada em uma porta de uma unidade de execução que tem uma unidade de execução de ponto flutuante disponível. Os arquivos de registro associados às unidades de execução também são incluídos para armazenar resultados de processamento de instrução de informações. As unidades de execução exemplificadoras incluem uma unidade de execução de ponto flutuante, uma unidade de execução de número inteiro, uma unidade de execução de salto, uma unidade de execução de carregamento, uma unidade de execução de armazenamento e outras unidades de execução conhecidas.
[0029] O cache de dados de nível inferior e o armazenamento temporário de tradução de dados (D-TLB) 150 são acoplados à unidade (ou unidades) de execução 140. O cache de dados deve armazenar elementos recentemente usados/operados, como operandos de dados, que são potencialmente retidos em estados de coerência de memória. O D-TLB deve armazenar traduções de endereço virtual/ linear a físico recentes. Como um exemplo específico, um processador pode incluir uma estrutura de tabela de página para romper a memória física em uma pluralidade de páginas virtuais.
[0030] Aqui, os núcleos 101 e 102 compartilham o acesso a cache de nível superior ou mais avançado, como um cache de segundo nível associado à interface em chip 110. Deve-se observar que nível superior ou avançado se refere a níveis de cache que aumentam ou se afastam da unidade (ou unidades) de execução. Em uma modalidade, cache de nível superior é um cache de dados de último nível-último cache na hierarquia de memória no processador 100-como um cache de dados de segundo ou terceiro nível. Entretanto, o cache de nível superior não é assim limitado, à medida que pode ser associado a ou incluir um cache de instrução. Um cache de rastreamento-um tipo de cache de instrução-de preferência pode ser acoplado após o decodificador 125 para armazenar rastreamentos decodificados recentemente. Aqui, uma instrução se refere potencialmente a uma macroinstrução (isto é, uma instrução geral reconhecida pelos decodificadores), que pode se decodificar em várias microinstruções (micro-operações).
[0031] Na configuração representada, o processador 100 inclui também módulo de interface em chip 110. Historicamente, um controlador de memória, que é descrito em maiores detalhes abaixo, foi incluído em um sistema de computação externo ao processador 100. Nesse cenário, a interface em chip 11 deve se comunicar com dispositivos externos ao processador 100, como a memória de sistema 175, um conjunto de chips (que muitas vezes inclui um hub de controlador de memória para se conectar à memória 175 e um hub de controlador de E/S para conectar dispositivos periféricos), um hub de controlador de memória, um northbridge ou outro circuito integrado. E nesse cenário, o barramento 105 pode incluir qualquer interconexão conhecida, como barramento multi-drop, uma interconexão de ponto a ponto, uma interconexão serial, um barramento paralelo, um barramento coerente (por exemplo, coerente ao cache), uma arquitetura de protocolo em camadas, um barramento diferencial e um barramento GTL.
[0032] A memória 175 pode ser dedicada ao processador 100 ou compartilhada com outros dispositivos em um sistema. Os exemplos comuns de tipos de memória 175 incluem DRAM, SRAM, memória não volátil (memória NV) e outros dispositivos de armazenamento conhecidos. Deve-se observar que o dispositivo 180 pode incluir um acelerador de gráfico, processador ou cartão acoplado a um hub de controlador de memória, armazenamento de dados acoplado a um hub de controlador de E/S, um transceptor sem fio, um dispositivo flash, um controlador de áudio, um controlador de rede ou outro dispositivo conhecido.
[0033] Recentemente, entretanto, quanto mais dispositivos e lógicas estão sendo integrados em uma única matriz, como SOC, cada um desses dispositivos pode ser incorporado no processador 100. Por exemplo, em uma modalidade, um hub de controlador de memória está no mesmo pacote e/ou matriz com o processador 100. Aqui, uma porção do núcleo (uma porção em núcleo) 110 inclui um ou mais controlador (ou controladores) para fazer uma interface com outros dispositivos, como a memória 175 ou um dispositivo de gráficos 180. A configuração que inclui uma interconexão e controladores para fazer uma interface com tais dispositivos é muitas vezes mencionada como uma configuração em núcleo (ou configuração fora de núcleo). Como um exemplo, a interface em chip 110 inclui uma interconexão de anel para a comunicação em chip e um enlace de ponto a ponto serial de alta velocidade 105 para a comunicação fora de chip. Ainda, no ambiente de SOC, até mais dispositivos, como a interface de rede, coprocessadores, memória 175, processador de gráficos 180 e quaisquer outros dispositivos de computador/interface conhecidos podem ser integrados em uma única matriz ou circuito integrado para fornecer fator de forma pequena com alta funcionalidade e baixo consumo de potência.
[0034] Em uma modalidade, o processador 100 tem capacidade para executar um código de tradutor, otimização e/ou compilador 177 para compilar, traduzir e/ou otimizar o código de aplicativo 176 para suportar o aparelho e métodos descritos no presente documento ou para fazer interface com os mesmos. Um compilador inclui muitas vezes um programa ou conjunto de programas para traduzir código/texto de fonte em código/texto de alvo. Normalmente, a compilação de código de programa/aplicativo com um compilador é feita em múltiplas fases e passagens para transformar código de linguagem de programação de alto nível em código de linguagem de montagem ou máquina de baixo nível. Além disso, os compiladores de passagem única podem ser ainda utilizados para compilação simples. Um compilador pode utilizar quaisquer técnicas de compilação conhecidas e realizar quaisquer operações de compilador conhecidas, como análise léxica, pré-processamento, análise, análise semântica, geração de código, transformação de código e otimização de código.
[0035] Os compiladores maiores muitas vezes incluem múltiplas fases, mas essas fases são mais frequentemente incluídas em duas fases gerais: (1) uma front-end, isto é, em que, em geral, o processamento sintático, processamento semântico e alguma transformação/otimização pode ocorrer, e (2) um backend, isto é, em que, em geral, a análise, transformações, otimizações e geração de código ocorre. Alguns compiladores se referem a um intermediário que ilustra o embaçamento de delineação entre um front-end e back-end de um compilador. Como resultado, a referência à inserção, associação, geração ou outra operação de um compilador pode ocorrer em qualquer uma das fases ou passagens mencionadas anteriormente, bem como quaisquer outras fases ou passagens conhecidas de um compilador. Como um exemplo ilustrativo, um compilador insere potencialmente operações, chamadas, funções, etc. em uma ou mais fases de compilação, como a inserção de chamadas/operações em uma fase de front-end de compilação e, então, a transformação das chamadas/operações em código de nível inferior durante uma fase de transformação. Deve-se observar que durante a compilação dinâmica, o código de compilador ou código de otimização dinâmica pode inserir tais operações/chamadas, bem como otimiza o código para a execução durante o tempo de execução. Como um exemplo ilustrativo específico, o código binário (código já compilado) pode ser dinamicamente otimizado durante o tempo de execução. Aqui, o código do programa pode incluir o código de otimização dinâmica, o código binário ou uma combinação dos mesmos.
[0036] Similar a um compilador, um tradutor, como um tradutor binário, traduz código de maneira estática ou dinâmica para otimizar e/ou traduzir código. Portanto, a referência à execução de código, código de aplicativo, código do programa ou outro ambiente de software pode se referir a: (1) execução de um programa (ou programas) de compilador, otimizador de código de otimização ou tradutor de maneira dinâmica ou estática, para compilar código do programa, para manter estruturas de software, para realizar outras operações, para otimizar código ou para traduzir código; (2) execução de código do programa principal que inclui operações/chamadas, como código de aplicativo que foi otimizado/compilado; (3) execução de outro código do programa, como bibliotecas, associado ao código do programa principal para manter estruturas de software, para realizar outras operações relacionadas a software ou para otimizar o código; ou (4) uma combinação das mesmas.
[0037] A Figura 2A é um diagrama esquemático e de tempo que ilustra uma topologia de amostra 200 com dois ressincronizadores 204 e 206 entre uma porta a jusante de componente a montante 202 e uma porta a montante de componente a jusante 208 de acordo com modalidades da presente revelação. A porta a jusante do componente a montante 202 pode ser uma porta para um dispositivo baseado em PCIe, como uma CPU ou outro dispositivo capaz de gerar um pacote de dados e transmitir o pacote de dados através de um enlace de dados compatível com o protocolo PCIe. The porta a montante de componente a jusante 208 pode ser uma porta para um componente periférico que pode receber um pacote de dados de um Enlace compatível com o protocolo PCIe. Entende-se que a porta a jusante de componente a montante 202 e a porta a montante de componente a jusante 208 podem transmitir e receber pacotes de dados através de Enlace (ou enlaces) de PCIe, ilustrado como Enlace de PCIe 210a a 210c.
[0038] A topologia 200 pode incluir um ou mais ressincronizadores 204 e 206. Os ressincronizadores 204 e 206 pode servir como um repetidor de sinal que opera na camada física para justar finamente o sinal do componente a montante 202 e/ou da porta a montante de componente a jusante 208. Um ressincronizador pode usar Equalização Linear de Tempo Contínua (CTLE), Equalização de Retroalimentação de Decisão (DFE) e transmitir uma equalização de resposta de impulso (Tx FIR EQ ou apenas TxEQ). Os ressincronizadores são transparentes para o enlace de dados e as camadas de transação, mas implementam a camada física completa.
[0039] O Enlace de PCIe de múltiplas vias é dividido em três segmentos de Enlace (LS) 210a, 210b e 210c em cada direção. A porta a jusante de componente a montante 202 pode ser acoplada ao ressincronizador 1 204 por um Enlace de PCIe de múltiplas vias 210a. O ressincronizador 1 204 pode ser acoplado ao ressincronizador 2 206 pelo segmento de enlace 210b. E o ressincronizador 2 206 pode ser acoplado à porta a montante de componente a jusante 208 pelo segmento de enlace 210c.
[0040] Os componentes também podem ser acoplados por ligações de banda lateral. A porta a jusante de componente a montante 202 pode ser acoplada ao ressincronizador 1 204 por um enlace de banda lateral 212a. O ressincronizador 1 204 pode ser acoplado ao ressincronizador 2 206 pelo enlace de banda lateral 212b. E o ressincronizador 2 206 pode ser acoplado à porta a montante de componente a jusante 208 pelo enlace de banda lateral 212c.
[0041] Uma função primária de um dispositivo de ressincronizador (armazenamento temporário) é a retemporização de sinais. Essas funções são realizadas por ressincronizadores 204 e 206. Os circuitos de dispositivo de ressincronizador particulares dependerão da PHY sendo usada para o enlace. Geralmente, conjunto de circuitos de ressincronizador é configurado para recuperar o sinal de entrada e retransmitir usando um relógio local e um novo circuito de equalização de transmissão e pode, normalmente, empregar circuitos bem conhecidos para essa finalidade, como laços de bloqueio de fase. Um ressincronizador pode ainda compreender conjunto de circuitos de transmissor e receptor, incluindo um ou mais circuitos de amplificador, bem como vários tipos de conjuntos de circuitos de condicionamento de sinal bem conhecidos usados para aumentar o nível de acionamento de um sinal recebido. Tal conjunto de circuitos de ressincronizador é bem conhecido por pessoas versados na técnica de interconexão de alta velocidade e, consequentemente, nenhum detalhe adicional é mostrado ou discutido no presente documento.
[0042] Cada ressincronizador 204 e 206 pode ter um caminho a montante e um caminho a jusante. Em algumas implementações, um ressincronizador pode incluir duas pseudoportas e as pseudoportas podem determinar sua respectiva orientação a jusante/a montante dinamicamente. Adicionalmente, os ressincronizadores 204 e 206 podem suportar modos de operação que incluem um modo de encaminhamento e um modo de execução. Os ressincronizadores 204 e 206 em alguns casos, podem decodificar dados recebidos no subenlace e recodificar os dados que devem ser encaminhados a jusante em seu outro subenlace. Como tal, ressincronizadores podem capturar o fluxo de bits recebido antes de regenerar e retransmitir o fluxo de bits para outro dispositivo ou mesmo outro ressincronizador (ou reacionador ou repetidor). Em alguns casos, o ressincronizador pode modificar alguns valores nos dados que recebe, como ao processar e encaminhar dados do conjunto ordenado. Além disso, um ressincronizador pode oferecer suporte a qualquer opção de largura como sua largura máxima, como um conjunto de opções de largura definidas por uma especificação como PCIe.
[0043] Conforme as taxas de dados de interconexões seriais (por exemplo, PCIe, UPI, USB, etc.) aumentam, os ressincronizadores são cada vez mais usados para estender o alcance do canal. Múltiplos ressincronizadores podem ser colocados em cascata para um alcance de canal ainda maior. Espera-se que, à medida que a velocidade do sinal aumenta, o alcance do canal normalmente diminui. Consequentemente, conforme as tecnologias de interconexão se aceleram, o uso de ressincronizadores pode se tornar mais comum. Como um exemplo, como o PCIe Gen-4, com seus 16 GT/s, é adotado em favor de PCIe Gen-3 (8 GT/s), o uso de ressincronizadores em interconexões PCIe pode aumentar, como pode ser o caso em outras interconexões conforme as velocidades aumentam.
[0044] Em uma implementação, uma pegada BGA (Ball Grid Array) comum pode ser definida para ressincronizadores baseados em PCI Express Gen-4 (16 GT/s). Tal projeto pode abordar pelo menos algumas das deficiências de exemplo encontradas em dispositivos ressincronizadores PCIe Gen-3 (8 GT/s) convencionais, bem como alguns dos problemas que surgem com a adoção de PCIe Gen-4. Adicionalmente, para o PCIe Gen-4, espera-se o número de vendedores de ressincronizador e volume aumentem. Devido às perdas de sinal da taxa de dados dobrada (de 8 GT/s para 16 GT/s), o comprimento de interconexão alcançável é significativamente reduzido no Gen-4. Nesta e em outras tecnologias de interconexão de exemplo, conforme a taxa de dados aumenta, os ressincronizadores podem, portanto, ter maior utilidade, pois podem ser usados para aumentar drasticamente os comprimentos de canal que seriam de outra forma restringidos pela taxa de dados aumentada.
[0045] Embora mostrado ser separado do componente a montante e do componente a jusante, o ressincronizador pode ser parte dos componentes a montante ou a jusante, a bordo com os componentes a montante ou a jusante, ou no pacote com o componente a jusante.
[0046] A porta a jusante do componente a montante 202 pode ter acesso a um elemento de armazenamento 222, como um armazenamento flash, cache ou outro dispositivo de memória. O ressincronizador 1 204 pode opcionalmente incluir um elemento de armazenamento semelhante 224. O ressincronizador 2 206 pode opcionalmente incluir um elemento de armazenamento semelhante 226. A porta a montante de componente a jusante 208 pode opcionalmente incluir um elemento de armazenamento semelhante 228.
[0047] A Figura 2B é um diagrama esquemático de um sistema conectado 250 que ilustra a porta a montante em banda e a configuração do ressincronizador de acordo com modalidades da presente revelação. Como mostrado na Figura 2A, uma porta a jusante de componente a montante 202 pode ser acoplada à porta a montante de componente a jusante 208 por um enlace 210a-c que é estendido por dois ressincronizadores 204, 206. Nesse exemplo, a porta a jusante 202 pode ser dotada de um endereço de registro de configuração do ressincronizador/registro de dados 252 para reter os dados a serem enviados em um comando de acesso de configuração para um dos dois ressincronizadores que usam campos de um SKP OS aprimorado. Um ou mais bits do SKP OS pode incluir um código de comando, dados ou um endereço para uso em um registro de configuração (por exemplo, 256, 258) de um ressincronizador (por exemplo, 204, 206, respectivamente) para ler ou gravar dados a partir de/para o registro 256, 258. Os ressincronizadores podem responder aos comandos de acesso à configuração enviados pela codificação de dados em uma instância de um SKP OS aprimorado, por si só codificando os dados de resposta em uma instância subsequente de um SKP OS aprimorado. Os dados codificados pelo ressincronizador (por exemplo, 204, 206) podem ser extraídos na porta a jusante e registrados em um registro de retorno de dados de configuração do ressincronizador (por exemplo, 254). Os registros (por exemplo, 252, 254) mantidos na porta a jusante do dispositivo a montante 202 podem ser gravados e lidos pelo software do sistema e/ou outros componentes do sistema permitindo acesso (indireto) aos registros do ressincronizador: um registro (por exemplo, 252) que transmite o endereço]/dados/comando para o ressincronizador e um segundo registro (por exemplo, 254) que armazena as respostas que voltam do ressincronizador. Em outras implementações, tais registros (por exemplo, 260) podem ser mantidos na porta a montante do componente a jusante 208 em vez de ou além dos registros sendo mantidos na porta a jusante do componente a montante 202, entre outros exemplos.
[0048] Continuando com o exemplo da Figura 2B, em conexão com um mecanismo para fornecer acesso em banda aos registros de ressincronizador, o ressincronizador pode ter registros arquitetados que são endereçáveis com bits e características bem definidas. Neste exemplo, um SKP OS aprimorado é definido/modificado como o padrão periódico gerado pela camada física para transportar os comandos/informações de "Retimer Config Reg Addr/Data" (por exemplo, 252) para os ressincronizadores e portar as respostas dos ressincronizadores de volta para carregar para "Retimer Config Data Return" (por exemplo, 840), com alguns bits alocados para CRC para a proteção de dados. Por exemplo, em PCIe, isso pode incluir o aprimoramento do Conjunto Ordenado de SKP existente (por exemplo, com Acesso de CSR e Retorno de CSR (bits protegidos por CRC)). Além disso, um fluxo para garantir a entrega garantida dos comandos/informações ao ressincronizador e a resposta de retorno correspondente pode ser definida. O mecanismo da camada física pode ser aprimorado para incluir também notificações do ressincronizador (além da resposta) se ele precisar de algum tipo de serviço, entre outros exemplos de recursos.
[0049] PCIe Gen 6 (PCI Express 6a Geração) a 64,0 GT/s, CXL 3.0 (Enlace expresso de computação de 3a Geração) a 64,0 GT/s e enlaces de coerência simétrica CPU-CPU tal como UPI (Interconexão de Ultracaminho) a frequências acima de 32,0 GT/s (por exemplo, 48,0 GT/s ou 56,0 GT/s ou 64,0 GT/s) são exemplos de interconexões que precisarão de FEC para trabalhar em conjunção com CRC. Em SoCs, é altamente desejável que a mesma PHY tenha capacidade para multiprotocolo e seja usada como PCIe/CXL/UPI dependendo do dispositivo conectado como o parceiro de Enlace.
[0050] Nas modalidades desta revelação, múltiplos protocolos (por exemplo, PCIe, CXL, UPI) podem compartilhar uma PHY comum. Cada protocolo, no entanto, pode ter tolerância de latência e demandas de largura de banda diferentes. Por exemplo, PCIe pode ser mais tolerante para um aumento de latência do que CXL. Os enlaces coerentes de cache simétrico CPU-CPU, como UPI, são mais sensíveis a aumentos de latência.
[0051] Os enlaces como PCIe e CXL podem ser particionados em subenlaces menores independentes. Por exemplo, um enlace PCIe/CXL x16 pode ser particionado em até 8 enlaces independentes de x2 cada. Um enlace coerente de cache simétrico pode não suportar esse nível de particionamento. Devido às diferenças nas características de latência, suporte de particionamento, bem como devido a diferenças fundamentais de protocolo, esses enlaces podem usar diferentes tamanhos de unidade de controle de fluxo (flit) e disposições de flit, embora possam compartilhar a mesma camada física.
[0052] Além do desempenho e das condições operacionais diferentes dos vários protocolos mencionados acima, as condições operacionais e os requisitos de desempenho também podem ser alterados para qualquer protocolo. As condições operacionais podem ter um impacto na taxa de erro e na correlação entre os erros, dependendo do sistema e de quaisquer variações no processo, tensão e temperatura. Da mesma forma, diferentes aplicativos podem ter diferentes requisitos de latência e largura de banda. Esta revelação descreve mecanismos que podem se ajustar dinamicamente a essas variações.
[0053] Esta revelação descreve uma PHY com capacidade para multiprotocolo que pode suportar diferentes FEC, CRC e tamanhos de flit dinamicamente, dependendo dos requisitos de desempenho e condições operacionais do protocolo subjacente. Um PHY é uma abreviatura de "camada física" e é um circuito eletrônico que pode implementar funções de camada física do modelo OSI.
[0054] Esta revelação permite que o enlace escolha dinamicamente entre diferentes FEC, CRC e tamanhos de flits, de forma independente em cada direção, com base nas necessidades de desempenho nas condições operacionais. A seleção dinâmica de FEC, CRC e tamanhos de flit pode ser realizada de forma autônoma por hardware e/ou por hardware com ajuda de software.
[0055] A Figura 3 é um diagrama esquemático de uma camada física comum (PHY comum) 300 para suportar múltiplos protocolos de interconexão de acordo com modalidades da presente revelação. A Figura 3 ilustra um exemplo PHY comum 300 (tanto PHY analógica, quanto PHY Lógica) com codificação PAM-4 em taxas de dados mais altas que podem suportar vários protocolos (por exemplo, PCIe, CXL, UPI, Interconexão Coerente De Cache Para Aceleradores (CCIX), Interface Do Processador Do Acelerador Coerente Aberto (CAPI), etc.) operando em diferentes taxas de dados. Tanto o PHY 302 analógico quanto o PHY 304 lógico são comuns a cada protocolo compatível. A PHY 302 analógica pode suportar um enlace de várias vias, como um enlace PCIe x16, com 48 GT/s e PAM-4 de 56 GT/s para outros protocolos de interconexão.
[0056] A PHY lógica 304 pode incluir um sub-bloco lógico TX 306 e um sub-bloco lógico RX 308. O sub-bloco lógico TX 306 pode incluir lógica para preparar a transmissão contínua de dados para transmissão através do enlace. For exemplo, o sub-bloco lógico TX 306 pode incluir um Gerador de Flit Ocioso 312 para gerar flits. Os tamanhos de flits podem ser determinados com base no protocolo, largura de banda, condições de operação, protocolo sendo usado, etc. Um gerador de código de verificação de redundância cíclica (CRC) 314 pode incluir um ou mais geradores de código CRC e geradores de código CRC rotativo para gerar códigos CRC. Os códigos CRC são códigos de detecção de erros para detectar alterações acidentais nos dados. Nas modalidades, o gerador de código CRC 314 pode ser contornado enquanto mantém a integridade do relógio. O sub-bloco lógico TX 306 também pode incluir um codificador 316 de correção de erros direta (FEC), para codificar os dados com o código de correção de erros (ECC). O codificador FEC 316 também pode ser contornado sem comprometer a integridade do relógio. Outros elementos lógicos também podem estar presentes no sub-bloco lógico TX 306, como reversão de faixa 318, LFSR 320, alinhamento de símbolo 322, etc. O PHY lógico também pode incluir um armazenamento temporário de nova tentativa comum 340, uma vez que todos os protocolos são baseados em flit.
[0057] A PHY lógica pode incluir um sub-bloco lógico RX 308. O sub-bloco lógico RX 308 pode incluir um decodificador/desvio de FEC 322, decodificador/desvio de CRC 334 e um elemento de relatório de erro 336. O decodificador FEC 332 pode decodificar bits ECC em blocos de dados recebidos e realizar correção de erro. A lógica de decodificação CRC 334 pode verificar se há erros que não são corrigíveis e relatar erros para o elemento de relatório de erro 336. O armazenamento temporário de nova tentativa 340 pode ser usado para sinalizar a nova tentativa de blocos de dados com erros incorrigíveis. Outros elementos lógicos também podem estar presentes no sub-bloco lógico RX 308, como reversão de faixa 330, LFSR 328, elasticidade/armazenamento temporário de deriva 328, alinhamento de símbolo 324, etc.
[0058] A PHY 304 lógica também pode incluir um mux estático (não mostrado na figura) para escolher entre as diferentes pilhas de protocolo que a PHY 300 suporta. O uso de um MUX estático facilita a reutilização de elementos lógicos (incluindo parte substancial do que é tradicionalmente uma função de camada de enlace, como CRC e Repetição) e resulta em eficiência de área/energia além da eficiência de pino e suporte flexível de I/O (a capacidade de escolher entre os diferentes protocolos dependendo da configuração do sistema). O mux estático pode direcionar dados para os elementos físicos e lógicos apropriados com base no tamanho do flit associado ao protocolo que está sendo usado e direcionar os dados para os codificadores/decodificadores de CRC apropriados e codificadores/decodificadores FEC.
[0059] O uso de uma PHY 300 comum (PHY 302 analógica mais PHY 304 lógica), o tamanho do flit, FEC e CRC podem ser potencialmente diferentes entre protocolos e condições operacionais diferentes. Qualquer lógica adicional para facilitar a PHY comum é menos dispendiosa do que replicar a pilha PHY lógica várias vezes para cada protocolo. Em vez disso, os dados podem ser direcionados eletricamente para os codificadores/decodificadores apropriados com base no protocolo que está sendo usado, que é definido inicialmente durante a inicialização do enlace.
[0060] A Figura 4 é um diagrama esquemático de um sub-bloco lógico do lado do transmissor 400 de uma PHY comum de acordo com modalidades da presente revelação. O sub-bloco lógico 400 do lado do transmissor é semelhante ao sub-bloco 306 lógico TX descrito acima. A Figura 4 ilustra como os dados podem atravessar o sub-bloco lógico do lado do transmissor 400 com base nas condições operacionais.
[0061] Como exemplo, considere dois tamanhos de flits: 128B e 256B, que podem ser atribuídos a protocolos diferentes ou até mesmo ao mesmo protocolo. Por exemplo, PCIe pode ser executado com apenas 256B de tamanho de flit; CXL pode operar como 128B ou como tamanho de flit 256B dependendo das condições de operação (por exemplo, uma taxa de erro mais alta pode nos mover para o tamanho de flit 256B para melhor amortizar mais bits FEC para corrigir mais erros e mais bits CRC para um CRC mais forte), e UPI pode ser 128B. O caminho de dados, incluindo a lógica ECC e CRC, é capaz de lidar com vários tamanhos de flit. Mesmo embora dois tamanhos de flit sejam fornecidos como exemplo, aqueles versados na técnica reconhecerão que as técnicas funcionam para um único tamanho de flit, bem como para mais de dois tamanhos de flit.
[0062] Neste exemplo, o sub-bloco lógico do lado do transmissor 400 inclui dois geradores CRC: CRC n° 1 Gen 404 e CR n° 2 Gen 410. CRC n° 1 Gen é baseado em GF(2), o que é útil se os erros se manifestarem como erros independentes em cada faixa (ou seja, a correlação de erros em uma faixa após FEC é baixa). CRC n° 2 é baseado em GF(28), o que é útil se os erros em uma faixa forem intermitentes. Cada gerador de CRC também tem sua variação de CRC rotativo (por exemplo, Rolling CRC n° 1 Gen 406 e Rolling CRC n° 2 Gen 408), em que o CRC subjacente não é suficiente do ponto de vista da confiabilidade. Os geradores CRC rotativos podem gerar código CRC com base em seu respectivo gerador CRC, mas usando um polinômio diferente da mesma ordem.
[0063] Um flit recebido (F1) é aceito somente depois que seu CRC é bom e o CRC de seu flit subsequente (F2), depois de operar F1 com um polinômio diferente, também é bom. Também existe uma disposição para contornar o CRC aqui se a pilha da camada superior deseja ter sua própria verificação separada e não precisa do decodificador de CRC na PHY. Embora neste exemplo, quatro tipos de CRCs (dois tipos de CRCs, cada um com sua variante de CRC rotativa), aqueles versados na técnica reconhecerão que mais ou menos CRCs podem ser usados, dependendo dos requisitos.
[0064] Além disso, neste exemplo, são usados 3 tipos de codificadores FEC: ECC n° 1 414, ECC n° 2 416 e ECC n° 3 418. Uma opção para desviar do FEC também é fornecida se a taxa de erro medida for aceitável. Por exemplo, a demanda de largura de banda no enlace que executa um protocolo UPI pode ser tal que o enlace pode operar a 48,0 GT/s, e a taxa de erro de rajada bruta medida é de 10-9 a 48,0 GT/s. Nesse exemplo, o FEC pode ser contornado e o CRC com nova tentativa é usado para corrigir erros, em vez de pagar uma penalidade de latência e largura de banda para todos os flits. Assim, mesmo para qualquer tamanho de flit dado, o número de bits no flit que pode ser usado para os dados e/ou dados + carga de informação de controle pode ser diferente dependendo do número de bits usados para FEC (0 se não usarmos FEC) e o CRC.
[0065] ECC n° 1 414 neste exemplo, pode ser um ECC intercalado de 3 vias com capacidade correta de símbolo único. Este tipo de codificador de ECC pode ser usado se os erros em uma pista forem correlacionados o suficiente e ocorrerem com um comprimento de rajada de <= 16 com uma probabilidade alta o suficiente para atender às necessidades de confiabilidade. ECC n° 2 416 pode ser um código BCH de correção de bit duplo que seria usado se a pré-codificação com PAM-4 fosse usada e resulta em uma porcentagem muito alta de erros em uma determinada faixa convertendo-se em duas inversões bits. ECC n° 2 416 pode ter as mesmas características de baixa latência do ECC n° 1 414, mas é mais eficiente do que o ECC n° 1 414. ECC n° 2 416 também pode funcionar bem se o comprimento da rajada for >16. No entanto, ECC n° 1 414 é uma alternativa melhor se os erros após a pré-codificação não resultarem em duas inversões de bits, mas em múltiplas inversões de bits em uma pista. ECC n° 3 418 pode ser um código BCH de correção de símbolo duplo intercalado de 2 vias que será usado se a taxa de erro de rajada bruta for baixa (ou seja, intervalo 10-4 - 105) uma vez que pode haver uma alta probabilidade de erros de símbolos múltiplos, embora tenha uma penalidade de latência maior do que ECC n° 1 414 ou ECC n° 2 416. Embora neste exemplo, haja três sabores de ECCs, aqueles versados na técnica reconhecerão que o número de ECCs pode ser mais do que três ou menos do que três, dependendo dos requisitos.
[0066] Para acomodar vários tamanhos de flit, armazenamentos temporários podem ser usados. Por exemplo, para um flit de 128B, um único armazenamento temporário 402, 424 pode ser usado. Para um flit de 256B, dois armazenamentos temporários de 128B podem ser usados: 402 e 402a.
[0067] A Figura 5 é um diagrama esquemático de um sub-bloco lógico do lado do receptor 500 de uma PHY comum de acordo com modalidades da presente revelação. A Figura 5Erro! Fonte de referência não encontrada. demonstra o sub-bloco lógico do lado do receptor 500, correspondendo ao sub-bloco lógico do lado do transmissor 400, descrito acima. Uma vez que o sub-bloco lógico do lado do receptor 500 precisa corrigir erros e detectar quaisquer erros que não puderam ser corrigidos, o sub-bloco lógico do lado do receptor 500 inclui um mecanismo para registrar os erros (log de erros 518) e invocar uma nova tentativa de nível de enlace com seu parceiro de enlace conforme necessário.
[0068] O exemplo de sub-bloco lógico do lado do receptor 500 inclui três decodificadores FEC: Decodificador de ECC n° 1 504 correspondendo ao codificador de ECC n° 1 414, ECC n° 2 506 correspondendo ao codificador de ECC n° 2 416 e ECC n° 3 508 correspondendo ao codificador de ECC n° 3 416. Os decodificadores de ECC podem corrigir erros. Em modalidades, certos erros podem ser relatados ao log de erros 518 para nova tentativa, como o erro 530.
[0069] O sub-bloco lógico do lado do receptor 500 exemplificativo inclui quatro decodificadores de CRC, tal como o decodificador de verificação CRC n° 1 510 que corresponde a codificador de CRC n° 1 404, decodificador de verificação de CRC n° 1 rotativo 512 que corresponde ao codificador de CRC n° 1 rotativo 406, decodificador de verificação de CRC n° 2 516 que corresponde ao codificador de CRC n° 1 410, e decodificador de CRC n° 2 rotativo 514 que corresponde ao codificador de CRC n° 2 rotativo 408. Os decodificadores de CRC podem determinar erros incorrigíveis (por exemplo, erro 532) e relatar os erros incorrigíveis no registro de erros 518 para nova tentativa.
[0070] Os tamanhos de flit são abordados de modo semelhante pelo uso de armazenamentos temporários 502, 502a e 520 .
[0071] A Figura 6 é um fluxograma de processo para alterar dinamicamente as condições operacionais de interconexão em uma PHY comum de acordo com modalidades da presente revelação. A Figura 6Erro! Fonte de referência não encontrada. ilustra como um receptor pode ajustar o tamanho do flit, o tipo FEC (incluindo o desvio) e o tipo CRC com base em suas condições operacionais. Assim, dois componentes conectados por um Enlace podem escolher ter dois FEC/CRC/flits diferentes simultaneamente (ou negociar para ter o mesmo dependendo daquele com a pior necessidade de FEC/CRC). O tamanho do flit, tipo de FEC e tipos de CRC são alterados durante a recuperação. O receptor monitora seus erros da Figura 5, bem como seus requisitos de desempenho e faz uma determinação. Essa determinação pode ser feita de forma autônoma ou com ajuda de software, fornecendo notificação por meio da interface de registro de configuração e situação (CSR) 380, mostrada na Figura 3, se for necessário alterar a frequência do enlace, tamanho do flit, FEC e CRC.
[0072] No início, com base em um protocolo selecionado para uso durante a inicialização do enlace entre um dispositivo hospedeiro e um dispositivo de ponto final conectado, uma combinação inicial de FEC e CRC pode ser solicitada e definida (602). A combinação inicial FEC e CRC para o enlace também pode ser definida por instrução do BIOS ou definindo a combinação FEC/CRC para uma configuração anterior que resultou em uma condição de enlace estável e satisfatória. As combinações FEC/CRC são definidas enquanto o enlace está em recuperação. Se o enlace estiver em L0 (604), o enlace retorna para Recuperação antes de agir sobre as solicitações de alteração da combinação FEC/CRC.
[0073] Por exemplo, uma solicitação para um código FEC/CRC diferente (608) pode ser concedida colocando-se primeiro o enlace em recuperação na mesma velocidade em que estava (610) e alterando a combinação FEC/CRC. O enlace pode, em seguida, retornar para o estado L0 (612) para operação.
[0074] Se houver uma demanda de largura de banda inferior no enlace (614), o enlace pode entrar em Recuperação para comutar para uma velocidade mais baixa (616). Nas modalidades, comutar para uma velocidade mais baixa pode incluir a renúncia ao uso de FEC, desde que o enlace possa operar em uma frequência mais baixa sem FEC.
[0075] Se o enlace precisar entrar em Recuperação por outros motivos (618), o enlace pode entrar em Recuperação na mesma velocidade com os mesmos parâmetros FEC/CRC, incluindo sem FEC, se aplicável. O enlace pode então entrar no estado L0 e operar usando os mesmos parâmetros FEC/CRC (622). Em algumas modalidades, enquanto o enlace está em recuperação, o enlace pode ajustar os parâmetros FEC/CRC com base em outras entradas, conforme descrito em 608 e 614.
[0076] Enquanto o enlace está operando em L0, a PHY pode coletar estatísticas de erro (606). As estatísticas de erro podem ser coletadas por logs de erro da decodificação CRC e FEC no receptor (ou pelo transmissor, se aplicável).
[0077] Com referência à Figura 7, é ilustrada uma modalidade de uma malha composta de enlaces ponto a ponto que interconectam um conjunto de componentes. O sistema 700 inclui o processador 705 e a memória de sistema 710 acoplados ao hub de controlador 715. O processador 705 inclui qualquer elemento de processamento, como um microprocessador, um processador hospedeiro, um processador embutido, um coprocessador ou outro processador. O processador 705 é acoplado ao hub de controlador 715 através do barramento frontal (FSB) 706. Em uma modalidade, o FSB 706 é uma interconexão de ponto a ponto serial, conforme descrito abaixo. Em uma outra modalidade, o enlace 706 inclui uma arquitetura de interconexão serial diferencial que está de acordo com o padrão de interconexão diferente.
[0078] A memória de sistema 710 inclui qualquer dispositivo de memória, como memória de acesso aleatório (RAM), memória não volátil (NV) ou outra memória acessível por dispositivos no sistema 700. A memória de sistema 710 é acoplada ao hub de controlador 715 através da interface de memória 716. Os exemplos de interface de memória incluem uma interface de memória de taxa de dados dupla (DDR), interface de memória de DDR de canal duplo e uma interface de memória RAM dinâmica (DRAM).
[0079] Em uma modalidade, o hub de controlador 715 é um hub de raiz, complexo de raiz ou controlador de raiz em uma hierarquia de interconexão de interconexão de componente periférico expressa (PCIe ou PCIE). Os exemplos de concentrador de controlador 715 incluem um conjunto de chips, um concentrador de controlador de memória (MCH), um northbridge, um concentrador de controlador de interconexão (ICH), um southbridge e um controlador/concentrador de porta de raiz. Muitas vezes, o termo conjunto de chips se refere a dois hubs de controlador fisicamente separados, isto é, um hub de controlador de memória (MCH) acoplado a um hub de controlador de interconexão (ICH). Deve-se observar que os sistemas atuais muitas vezes incluem o MCH integrado com o processador 705, enquanto que o controlador 715 deve se comunicar com os dispositivos de E/S, de uma maneira similar conforme descrito abaixo. Em algumas modalidades, o roteamento par a par é opcionalmente suportado através do complexo de raiz 715.
[0080] Aqui, o hub de controlador 715 é acoplado ao comutador/ponte 720 através de enlace serial 719. Os módulos de entrada/saída 717 e 721, que também podem ser mencionados como interfaces/portas 717 e 721, incluem/implantam uma pilha de protocolo em camadas para fornecer comunicação entre o hub de controlador 715 e o comutador 720. Em uma modalidade, múltiplos dispositivos têm capacidade para serem acoplados ao comutador 720.
[0081] O comutador/ponte 720 encaminha pacotes/mensagens a partir do dispositivo 725 a montante, isto é, para cima em uma hierarquia em direção a um complexo de raiz, até o concentrador de controlador 715 e a jusante, isto é, para baixo em uma hierarquia para longe de um controlador de porta de raiz, a partir do processador 705 ou memória de sistema 710 até o dispositivo 725. O comutador 720, em uma modalidade, é mencionado como uma montagem lógica de múltiplos dispositivos de ponte PCI a PCI virtuais. O dispositivo 725 inclui qualquer componente ou dispositivo interno ou externo a ser acoplado a um sistema eletrônico, como um dispositivo de E/S, um controlador de interface de rede (NIC), uma placa adicional, um processador de áudio, um processador de rede, um disco rígido, um dispositivo de armazenamento, uma ROM de CD/DVD, um monitor, uma impressora, um mouse, um teclado, um roteador, um dispositivo de armazenamento portátil, um dispositivo Firewire, um dispositivo de barramento serial universal (USB), um dispositivo de varredura e outros dispositivos de entrada/saída. Muitas vezes no vernáculo de PCIe, tal como dispositivo, é mencionado como um ponto de extremidade. Embora não mostrado especificamente, o dispositivo 725 pode incluir uma ponte de PCIe a PCI/PCI-X para suportar dispositivos PCI herdados ou outras versões. Os dispositivos de ponto de extremidade em PCIe são muitas vezes classificados como pontos de extremidade integrados ao complexo de raiz, PCIe ou herdados.
[0082] O acelerador de gráficos 730 também é acoplado ao hub de controlador 715 através do enlace serial 732. Em uma modalidade, o acelerador de gráficos 730 é acoplado a um MCH, que é acoplado a um ICH. O comutador 720, e consequentemente o dispositivo de E/S 725, é, então, acoplado ao ICH. Os módulos de E/S 731 e 718 são também para implantar uma pilha de protocolo em camadas para se comunicar entre o acelerador de gráficos 730 e o hub de controlador 715. Similar à discussão de MCH acima, um controlador de gráficos ou o acelerador de gráficos 730 pode ser por si próprio integrado no processador 705.
[0083] Com referência à Figura 8, é ilustrada uma modalidade de uma pilha de protocolo em camadas. A pilha de protocolo em camadas 700 inclui qualquer forma de uma pilha de comunicação em camadas, como uma pilha de interconexão de trajetória rápida (QPI), uma pilha de PCIe, uma pilha de interconexão de computação de alto desempenho e da próxima geração ou outra pilha em camadas. Embora a discussão imediatamente abaixo com referência às Figuras 7 a 10 sejam em relação a uma pilha de PCIe, os mesmos conceitos podem ser aplicados a outras pilhas de interconexão. Em uma modalidade, a pilha de protocolo 800 é uma pilha de protocolo de PCIe que inclui camada de transação 805, camada de enlace 810 e camada física 820. Uma interface, como as interfaces 717, 718, 721, 722, 726 e 731 na Figura 7, pode ser representada como pilha de protocolo de comunicação 800. A representação como uma pilha de protocolo de comunicação também pode ser mencionada como um módulo ou interface que implanta/que inclui uma pilha de protocolo.
[0084] A PCI Express usa pacotes para comunicar informações entre componentes. Os pacotes são formados na camada de transação 805 e camada de enlace de dados 810 para transportar as informações a partir do componente de transmissão para o componente de recebimento. À medida que os pacotes transmitidos fluem através das outras camadas, são estendidos com informações adicionais necessárias para manusear pacotes naquelas camadas. No lado de recebimento, ocorre o processo inverso e os pacotes são transformados a partir de sua representação de camada física 820 para a representação de camada de enlace de dados 810 e finalmente (para pacotes de camada de transação) para a forma que pode ser processada pela camada de transação 705 do dispositivo de recebimento.
Camada de Transação
[0085] Em uma modalidade, a camada de transação 805 deve fornecer uma interface entre um núcleo de processamento do dispositivo e a arquitetura de interconexão, como a camada de enlace de dados 810 e camada física 820. Sob esse aspecto, uma responsabilidade primária da camada de transação 805 é a montagem e desmontagem de pacotes (isto é, pacotes de camada de transação ou TLPs). A camada de transação 805 tipicamente gerencia o controle de fluxo de base de crédito para TLPs. A PCIe implanta transações divididas, isto é, transações com solicitação e resposta separadas por tempo, permitindo que um enlace transporte outro tráfego, enquanto que o dispositivo alvo reúne dados para a resposta.
[0086] Além disso, a PCIe utiliza controle de fluxo à base de crédito. Nesse esquema, um dispositivo anuncia uma quantidade inicial de crédito para cada um dos armazenamentos temporários de recebimento na camada de transação 805. Um dispositivo externo na extremidade oposta do enlace, como o concentrador de controlador 715 na Figura 7, conta o número de créditos consumidos por cada TLP. Uma transação pode ser transmitida se a transação não exceder um limite de crédito. Mediante o recebimento de uma resposta, uma quantidade de crédito é restaurada. Uma vantagem de um esquema de crédito é que a latência de retorno de crédito não afeta o desempenho, desde que o limite de crédito não seja encontrado.
[0087] Em uma modalidade, quatro espaços de endereço de transação incluem um espaço de endereço de configuração, um espaço de endereço de memória, um espaço de endereço de entrada/saída e um espaço de endereço de mensagem. As transações de espaço de memória incluem uma ou mais dentre as solicitações de leitura e solicitações de escrita para transferir dados para/a partir de um local mapeado por memória. Em uma modalidade, as transações de espaço de memória têm capacidade para usar dois formatos de endereço diferentes, por exemplo, um formato de endereço curto, como um endereço de 32 bits ou um formato de endereço longo, como endereço de 64 bits. As transações de espaço de configuração são usadas para acessar o espaço de configuração dos dispositivos PCIe. As transações para o espaço de configuração incluem solicitações de leitura e solicitações de escrita. As transações de espaço de mensagem (ou simplesmente mensagens) são definidas para suportar comunicação em banda entre agentes de PCIe.
[0088] Portanto, em uma modalidade, a camada de transação 805 monta cabeçalho de pacote/carga útil 706. O formato para cabeçalhos de pacote/cargas úteis atuais pode ser encontrado na especificação de PCIe no site da web de especificação de PCIe.
[0089] Brevemente com referência à Figura 9, é ilustrada uma modalidade de um descritor de transação de PCIe. Em uma modalidade, o descritor de transação 900 é um mecanismo para carregar informações de transação. Sob esse aspecto, o descritor de transação 900 suporta identificação de transações em um sistema. Outros usos potenciais incluem rastrear modificações de ordenação de transação predefinida e associação de transação a canais.
[0090] O descritor de transação 900 inclui campo de identificador global 902, campo de atributos 904 e campo de identificador de canal 906. No exemplo ilustrado, o campo de identificador global 902 é representado compreendendo o campo de identificador de transação local 908 e o campo de identificador de origem 910. Em uma modalidade, o identificador de transação global 902 é exclusivo para todas as solicitações pendentes.
[0091] De acordo com uma implantação, o campo de identificador de transação local 908 é um campo gerado por um agente de solicitação e é exclusivo para todas as solicitações pendentes que exigem uma conclusão para aquele agente de solicitação. Adicionalmente, nesse exemplo, o identificador de origem 810 identifica exclusivamente o agente solicitante dentro de uma hierarquia de PCIe. Consequentemente, juntamente com o ID de origem 910, o campo de identificador de transação local 908 fornece a identificação global de uma transação dentro de um domínio de hierarquia.
[0092] O campo de atributos 904 especifica características e relações da transação. Sob esse aspecto, o campo de atributos 904 é potencialmente usado para fornecer informações adicionais que permitem a modificação do manuseio predefinido de transações. Em uma modalidade, o campo de atributos 904 inclui campo de prioridade 912, campo reservado 914, campo de ordenação 916 e campo sem espionagem 918. Aqui, o subcampo de prioridade 912 pode ser modificado por um iniciador para atribuir uma prioridade à transação. O campo de atributo reservado 914 é deixado reservado para uso futuro ou definido pelo vendedor. Os modelos de uso possíveis que usam atributos de prioridade ou segurança podem ser implantados com o uso do campo de atributo reservado.
[0093] Nesse exemplo, o campo de atributo de ordenação 916 é usado para suprir informações opcionais que transportam o tipo de ordenação que pode modificar as regras de ordenação predefinidas. De acordo com uma implantação exemplificativa, um atributo de ordenação de "0" denota que regras de ordenação predefinidas devem ser aplicadas, em que um atributo de ordenação de "1" denota ordenação relaxada, em que escritas podem passar escritas na mesma direção e conclusões de leitura podem passar escritas na mesma direção. O campo de atributo de espionagem 918 é utilizado para determinar se as transações são espionadas. Conforme mostrado, o campo de ID de canal 906 identifica um canal com o qual uma transação está associada.
Camada de Enlace
[0094] A camada de enlace 810, também mencionada como camada de enlace de dados 810, age como um estágio intermediário entre a camada de transação 805 e a camada física 820. Em uma modalidade, uma responsabilidade da camada de enlace de dados 810 é fornecer um mecanismo confiável para a troca de pacotes de camada de transação (TLPs) entre dois componentes e um enlace. Um lado da camada de enlace de dados 810 aceita TLPs reunidos pela camada de transação 805, aplica o identificador de sequência de pacote 811, isto é, um número de identificação ou número de pacote, calcula e aplica um código de detecção de erros, isto é, CRC 812, e apresenta os TLPs modificados para a camada física 820 para a transmissão através de um dispositivo físico para um dispositivo externo.
Camada Física
[0095] Em uma modalidade, a camada física 820 inclui sub-bloco lógico 821 e sub-bloco elétrico 822 para transmitir fisicamente um pacote para um dispositivo externo. Aqui, o sub-bloco lógico 821 é responsável pelas funções "digitais" da camada física 821. Sob esse aspecto, o sub-bloco lógico inclui uma seção de transmissão para preparar informações de saída para a transmissão por meio do sub-bloco físico 822, e uma seção de receptor para identificar e preparar informações recebidas antes de passar as mesmas para a camada de enlace 810.
[0096] O bloco físico 822 inclui um transmissor e um receptor. O transmissor é suprido por meio do sub-bloco lógico 821 com símbolos, os quais o transmissor serializa e transmite para um dispositivo externo. O receptor é suprido com símbolos serializados a partir de um dispositivo externo e transforma os sinais recebidos em um fluxo de bits. O fluxo de bits é desserializado e suprido para o sub-bloco lógico 821. Em uma modalidade, um código de transmissão 8b/10b é empregado, em que os símbolos de dez bits são transmitidos/recebidos. Aqui, os símbolos especiais são usados para dispor um pacote com quadros 823. Além disso, em um exemplo, o receptor também fornece um relógio de símbolo recuperado a partir do fluxo serial entrante.
[0097] Conforme declarado acima, embora a camada de transação 805, a camada de enlace 810 e a camada física 820 sejam discutidas com referência a uma modalidade específica de uma pilha de protocolo de PCIe, uma pilha de protocolo em camadas não é limitada. De fato, qualquer protocolo em camadas pode ser incluído/implantado. Como um exemplo, uma porta/interface que é representada como um protocolo em camadas inclui: (1) uma primeira camada para reunir pacotes, isto é, uma camada de transação; uma segunda camada para sequenciar pacotes, isto é, uma camada de enlace; e uma terceira camada para transmitir os pacotes, isto é, uma camada física. Como um exemplo específico, um protocolo em camadas de interface padrão comum (CSI) é utilizado.
[0098] Com referência a seguir à Figura 10, é ilustrada uma modalidade de uma malha de ponto a ponto serial de PCIe. Embora uma modalidade de um enlace ponto a ponto serial de PCIe seja ilustrado, um enlace ponto a ponto serial não é limitado, à medida que o mesmo inclui qualquer trajetória de transmissão para a transmissão de dados seriais. Na modalidade mostrada, um enlace de PCIe básico inclui dois pares de sinais de baixa tensão e acionados de modo diferencial: um par de transmissão 1006/1011 e um par de recebimento 1012/1007. Consequentemente, o dispositivo 1005 inclui a lógica de transmissão 1006 para transmitir dados para o dispositivo 1010 e a lógica de recebimento 1007 para receber dados a partir do dispositivo 1010. Em outras palavras, duas trajetórias de transmissão, isto é, as trajetórias 1016 e 1017, e duas trajetórias de recebimento, isto é, as trajetórias 1018 e 1019, são incluídas em um enlace de PCIe.
[0099] Uma trajetória de transmissão se refere a qualquer trajetória para a transmissão de dados, como uma linha de transmissão, uma linha de cobre, uma linha óptica, um canal de comunicação sem fio, um enlace de comunicação infravermelho ou outra trajetória de comunicação. Uma conexão entre dois dispositivos, como o dispositivo 1005 e o dispositivo 1010, é mencionada como um enlace, como o enlace 1015. Um enlace pode suportar uma faixa - sendo que cada faixa representa um conjunto de pares de sinais diferenciais (um par para a transmissão, um par para o recebimento). Para escalonar a largura de banda, um enlace pode agregar múltiplas faixas denotadas por xN, em que N é qualquer largura de enlace suportada, como 1, 2, 4, 8, 12, 16, 32, 64 ou mais larga.
[00100] Um par diferencial se refere a duas trajetórias de transmissão, como linhas 1016 e 1017, para transmitir sinais diferenciais. Como um exemplo, quando a linha 1016 alterna a partir de um nível de baixa tensão para um nivel de alta tensão, isto é, uma borda ascendente, a linha 1017 conduz a partir de um nível de lógica alto para um nível de lógica baixo, isto é, uma borda descendente. Os sinais diferenciais demonstram potencialmente melhores características elétricas, como melhor integridade de sinal, isto é, acoplamento cruzado, exceder/não alcançar a tensão, toque, etc. Isso permite janela de temporização melhor, a qual possibilita frequências de transmissão mais rápidas.
[00101] Observe que o aparelho, métodos e sistemas descritos acima podem ser implementados em qualquer dispositivo ou sistema eletrônico conforme mencionado acima. Como ilustrações específicas, as figuras abaixo fornecem sistemas exemplificativos para utilizar a revelação conforme descrito no presente documento. Como os sistemas abaixo são descritos em mais detalhes, uma série de diferentes interconexões são reveladas, descritas e revisitadas a partir da discussão acima. E, como é prontamente aparente, os avanços descritos acima podem ser aplicados a qualquer uma dessas interconexões, tecidos ou arquiteturas.
[00102] Voltando para a Figura 11, um diagrama de blocos de um sistema de computador exemplificativo formado com um processador que inclui unidades de execução para executar uma instrução, onde uma ou mais das interconexões implementam um ou mais recursos de acordo com uma modalidade da presente realização são ilustradas. O sistema 1100 inclui um componente, tal como um processador 1102 para empregar unidades de execução que incluem lógica para realizar algoritmos para processar dados, de acordo com a presente revelação, tal como na modalidade descrita no presente documento. O sistema 100 é representativo dos sistemas de processamento com base nos microprocessadores PENTIUM III™, PENTIUM 4™, Xeon™, Itanium, XScale™ e/ou StrongARM™ disponíveis pela Intel Corporation de Santa Clara, Califórnia, embora outros sistemas (o que inclui PCs que têm outros microprocessadores, estações de trabalho de engenharia, conversores e similares) possam também ser usados. Em uma modalidade, o sistema de amostra 1000 executa uma versão do operacional WINDOWS™ disponível pela Microsoft Corporation of Redmond, Washington, embora outros sistemas operacionais (UNIX e Linux, por exemplo), software embutido e/ou interface gráfica de usuário possam ser também utilizados. Desse modo, as modalidades da presente revelação não se limitam a qualquer combinação específica de conjunto de circuito de hardware e software.
[00103] As modalidades não são limitadas a sistemas de computador. As modalidades alternativas da presente revelação podem ser usadas em outros dispositivos, tal como dispositivos portáteis e aplicativos embutidas. Alguns exemplos de dispositivos portáteis incluem telefones celulares, dispositivos de protocolo de Internet, câmeras digitais, assistentes pessoais digitais (PDAs) e PCs portáteis. Os aplicativos embutidos podem incluir um microcontrolador, um processador de sinal digital (DSP), um sistema em um chip, computadores de rede (NetPC), conversores, hubs de rede, comutadores de rede de longa distância (WAN) ou qualquer outro sistema que possa realizar uma ou mais instruções de acordo com pelo menos uma modalidade.
[00104] Nesta modalidade ilustrada, o processador 1102 inclui uma ou mais unidades de execução 1008 para implementar um algoritmo que deve executar pelo menos uma instrução. Uma modalidade pode ser descrita no contexto de um sistema de servidor ou computador de mesa de processador único, mas modalidades alternativas podem ser incluídas em um sistema de multiprocessador. O sistema 1100 é um exemplo de uma arquitetura de sistema de "concentrador". O sistema de computador 1100 inclui um processador 1102 para processar sinais de dados. O processador 1102, como um exemplo ilustrativo, inclui um microprocessador de computador de conjunto de instruções complexas (CISC), um microprocessador de computação de conjunto de instruções reduzidas (RISC), um microprocessador de palavra de instrução muito longa (VLIW), um processador que implanta uma combinação de conjuntos de instruções, ou qualquer outro dispositivo de processador, tal como um processador de sinal digital, por exemplo. O processador 1102 é acoplado a um barramento de processador 1110 que transmite sinais de dados entre o processador 1102 e outros componentes no sistema 1100. Os elementos do sistema 1100 (por exemplo, acelerador gráfico 1112, concentrador de controlador de memória 1116, memória 1120, concentrador de controlador de I/O 1124, transceptor sem fio 1126, Flash BIOS 1028, controlador de rede 1134, controlador de áudio 1136, porta de expansão serial 1138, controlador de I/O 1140, etc.) executam suas funções convencionais que são bem conhecidas por aqueles familiarizados com a técnica.
[00105] Em uma modalidade, o processador 1102 inclui uma memória cache interna de Nível 1 (L1) 1104. Dependendo da arquitetura, o processador 1102 pode ter um cache interno único ou múltiplos níveis de caches internos. Outras modalidades incluem uma combinação de caches tanto internas quanto externas dependendo da implantação particular e necessidades. O arquivo de registro 1106 deve armazenar diferentes tipos de dados em vários registros, incluindo registros inteiros, registros de ponto flutuante, registros vetoriais, registros bancários, registros sombra, registros de ponto de verificação, registros de situação e registro de ponteiro de instrução.
[00106] A unidade de execução 1108, que inclui lógica para realizar operações inteiras e de ponto flutuante, também reside no processador 1102. O processador 1102, em uma modalidade, inclui um microcódigo (ucode) ROM para armazenar microcódigo, que quando executado, é para executar algoritmos para certas macroinstruções ou lidar com cenários complexos. Aqui, o microcódigo é potencialmente atualizável para lidar com bugs/correções lógicas para o processador 1102. Para uma modalidade, a unidade de execução 1108 inclui lógica para manejar um conjunto de instruções empacotadas 1109. Com a inclusão do conjunto de instruções empacotadas 1109 no conjunto de instruções de um processador de propósito geral 1102, junto com o conjunto de circuitos associado para executar as instruções, as operações usadas por muitos aplicativos de multimídia podem ser realizadas com o uso de dados empacotados em um processador de propósito geral 1102. Portanto, muitos aplicativos multimídia são acelerados e executados mais eficientemente com o uso da extensão completa de um barramento de dados de processador para realizar operações em dados empacotados. Isso potencialmente elimina a necessidade de transferir unidades menores de dados através do barramento de dados do processador para realizar uma ou mais operações um elemento de dados por vez.
[00107] As modalidades alternativas de uma unidade de execução 1108 podem também ser usadas em microcontroladores, processadores embutidos, dispositivos gráficos, DSPs e outros tipos de circuitos lógicos. O sistema 1100 inclui uma memória 1120. A memória 1020 inclui um dispositivo de memória de acesso aleatório dinâmica (DRAM), um dispositivo de memória de acesso aleatório estática (SRAM), um dispositivo de memória flash ou outro dispositivo de memória. Memória 1120 armazena instruções e/ou dados representados por sinais de dados que devem ser executados pelo processador 1102.
[00108] Observe que qualquer um dos recursos ou aspectos acima mencionados da revelação podem ser utilizados em uma ou mais interconexões ilustradas na Figura 11 Por exemplo, uma interconexão na matriz (ODI), que não é mostrada, para acoplar unidades internas do processador 1102 implementa um ou mais aspectos da revelação descrita acima. Ou a revelação está associada a um barramento de processador 1110 (por exemplo, - Interconexão de caminho rápido (QPI) da Intel ou outra interconexão de computação de alto desempenho conhecida), um caminho de memória de alta largura de banda 1118 para a memória 1120, um enlace ponto a ponto para o acelerador gráfico 1112 (por exemplo, uma malha compatível com interconexão expressa de componentes periféricos (PCIe)), uma interconexão de concentrador de controlador 1122, um I/O ou outra interconexão (por exemplo, USB, PCI, PCIe) para acoplamento os outros componentes ilustrados. Alguns exemplos de tais componentes incluem o controlador de áudio 1136, concentrador de firmware (flash BIOS) 1128, transceptor sem fio 1126, armazenamento de dados 1124, controlador de I/O legado 1110 contendo entrada de usuário e interfaces de teclado 1142, uma porta de expansão serial 1138, como Universal Serial Bus (USB) e um controlador de rede 1134. O dispositivo de armazenamento de dados 1124 pode compreender um disco rígido, um disquete, um dispositivo de CD-ROM, um dispositivo de memória flash, ou outros dispositivos de armazenamento em massa.
[00109] Referindo-se, agora, à Figura 12, um diagrama de blocos de um segundo sistema 1200 é mostrado de acordo com uma modalidade da presente revelação. Conforme mostrado na Figura 12, o sistema de multiprocessador 1200 é um sistema de interconexão ponto a ponto e inclui um primeiro processador 1270 e um segundo processador 1280 acoplados através de uma interconexão ponto a ponto 1250. Cada um dos processadores 1270 e 1280 pode ser alguma versão de um processador 200. Em uma modalidade, 1252 e 1254 são parte de uma malha de interconexão coerente ponto a ponto serial, como a arquitetura de Interconexão de caminho rápido (QPI) da Intel. Como resultado, a revelação pode ser implementada dentro da arquitetura QPI.
[00110] Embora mostrado com apenas dois processadores 1270, 1280, deve ser entendido que o escopo da presente revelação não é tão limitado desse modo. Em outras modalidades, um ou mais processadores adicionais podem estar presentes em um determinado processador.
[00111] Os processadores 1270 e 1280 são mostrados com unidades de controlador de memória integrada 1272 e 1282, respectivamente. O processador 1270 também inclui como parte de suas unidades de controlador de barramento ponto a ponto (P-P) interfaces 1276 e 1278; de forma semelhante, o segundo processador 1280 inclui interfaces P-P 1286 e 1288. Os processadores 1270, 1280 podem trocar informações através de uma interface 1250 ponto a ponto (P-P) com uso de circuitos de interface P-P 1278, 1288. Conforme mostrado na Figura 12, os MCHs 1272 e 1282 acoplam os processadores às respectivas memórias, a saber, uma memória 1232 e uma memória 1234, que podem ser porções de memória de sistema fixadas localmente aos respectivos processadores.
[00112] Os processadores 1270, 1280 trocam, cada um, informações com um chipset 1290 através de interfaces PP individuais 1252, 1254 com uso de circuitos de interface ponto a ponto 1276, 1294, 1286, 1298. O chipset 1290 também troca informações com um circuito gráfico de alto desempenho 1138 por meio de um circuito de interface 1292 ao longo de uma interconexão gráfica de alto desempenho 1239.
[00113] Um cache compartilhado (não mostrado) pode estar incluído em qualquer processador ou estar fora de ambos os processadores, ainda conectados com os processadores por meio de interconexões P-P, de modo que qualquer uma ou ambas as informações de cache local de processadores podem ser armazenadas no cache compartilhado se um processador para colocado em um modo de baixa potência.
[00114] O conjunto de chips 1290 pode ser acoplado a um primeiro barramento 1216 através de uma interface 1296. Em uma modalidade, o primeiro barramento 1216 pode ser um barramento de Interconexão de Componente Periférico (PCI) ou um barramento como um barramento expresso de PCI ou outro barramento de interconexão de I/O da terceira geração, embora o escopo da presente revelação não seja limitado ao mesmo.
[00115] Conforme mostrado na Figura 12, vários dispositivos I/O 1214 são acoplados ao primeiro barramento 1216, juntamente com uma ponte de barramento 1218 que acopla o primeiro barramento 1216 a um segundo barramento 1220. Em uma modalidade, o segundo barramento 1220 inclui um barramento de contagem de pino baixa (LPC). Vários dispositivos são acoplados ao segundo barramento 1220 incluindo, por exemplo, um teclado/mouse 1222, dispositivos de comunicação 1227 e uma unidade de armazenamento de dados 1228 como uma unidade de disco magnético ou outro dispositivo de armazenamento em massa que geralmente inclui o código/instruções e dados 1230, em uma modalidade. Além disso, uma I/O de áudio 1224 é mostrada acoplada ao segundo barramento 1220. Observe que outras arquiteturas são possíveis, onde os componentes incluídos e as arquiteturas de interconexão variam. Por exemplo, ao invés da arquitetura ponto a ponto da Figura 12, um sistema pode implantar um barramento de múltiplos pontos ou outra arquitetura.
[00116] Usando os vários sensores inerciais e ambientais presentes em uma plataforma, muitos casos de uso diferentes podem ser realizados. Esses casos de uso permitem operações de computação avançada, incluindo computação perceptual e também permitem melhorias em relação ao gerenciamento de energia/vida útil da bateria, segurança e capacidade de resposta do sistema.
[00117] Por exemplo, no que diz respeito a questões de gerenciamento de energia/vida útil da bateria, com base pelo menos em parte nas informações de um sensor de luz ambiente, as condições de luz ambiente em um local da plataforma são determinadas e a intensidade da tela controlada em conformidade. Portanto, a energia consumida na operação do monitor é reduzida em certas condições de iluminação.
[00118] Quanto às operações de segurança, com base nas informações de contexto obtidas dos sensores, como informações de localização, pode ser determinado se um usuário tem permissão para acessar certos documentos seguros. Por exemplo, um usuário pode ter permissão para acessar tais documentos em um local de trabalho ou residência. No entanto, o usuário é impedido de acessar tais documentos quando a plataforma está presente em um local público. Esta determinação, em uma modalidade, é baseada em informações de localização, por exemplo, determinada por meio de um sensor GPS ou reconhecimento de câmera de marcos. Outras operações de segurança podem incluir o fornecimento de emparelhamento de dispositivos dentro de uma faixa próxima um do outro, por exemplo, uma plataforma portátil conforme descrita no presente documento e um computador tipo desktop, telefone móvel ou assim por diante. Certos compartilhamentos, em algumas implementações, são realizados por meio de comunicação de campo próximo quando esses dispositivos estão emparelhados. No entanto, quando os dispositivos excedem um determinado intervalo, esse compartilhamento pode ser desativado. Além disso, ao emparelhar uma plataforma conforme descrito no presente documento e um telefone inteligente, um alarme pode ser configurado para ser acionado quando os dispositivos se movem mais do que uma distância predeterminada um do outro, quando em um local público. Em contraste, quando esses dispositivos pareados estão em um local seguro, por exemplo, um local de trabalho ou local de residência, os dispositivos podem exceder este limite predeterminado sem acionar tal alarme.
[00119] A capacidade de resposta também pode ser aprimorada usando as informações do sensor. Por exemplo, mesmo quando uma plataforma está em um estado de baixa energia, os sensores ainda podem ser habilitados para funcionar em uma frequência relativamente baixa. Consequentemente, quaisquer mudanças em uma localização da plataforma, por exemplo, conforme determinado por sensores inerciais, sensor GPS, ou assim por diante, são determinadas. Se nenhuma dessas alterações tiver sido registrada, ocorre uma conexão mais rápida a um concentrador sem fio anterior, como um ponto de acesso Wi-Fi™ ou um ativador sem fio semelhante, pois não há necessidade de verificar os recursos de rede sem fio disponíveis neste caso. Assim, um maior nível de responsividade ao acordar de um estado de baixa energia é alcançado.
[00120] Deve ser entendido que muitos outros casos de uso podem ser ativados usando informações do sensor obtidas por meio dos sensores integrados dentro de uma plataforma, conforme descrito no presente documento, e os exemplos acima são apenas para fins de ilustração. Ao usar um sistema conforme descrito no presente documento, um sistema de computação perceptual pode permitir a adição de modalidades de entrada alternativas, incluindo reconhecimento de gesto, e permitir que o sistema detecte as operações e a intenção do usuário.
[00121] Em algumas modalidades, um ou mais sensores infravermelho ou outros elementos sensores de calor, ou qualquer outro elemento para detectar a presença ou movimento de um usuário podem estar presentes. Esses elementos de detecção podem incluir vários elementos diferentes trabalhando juntos, trabalhando em sequência ou ambos. Por exemplo, os elementos de detecção incluem elementos que fornecem detecção inicial, como projeção de luz ou som, seguida por detecção de detecção de gesto por, por exemplo, uma câmera ultrassônica de tempo de voo ou uma câmera de luz padronizada.
[00122] Também em algumas modalidades, o sistema inclui um gerador de luz para produzir uma linha iluminada. Em algumas modalidades, esta linha fornece uma dica visual em relação a um limite virtual, ou seja, um local imaginário ou virtual no espaço, onde a ação do usuário para passar ou romper o limite ou plano virtual é interpretada como uma intenção de interagir com o sistema de computação. Em algumas modalidades, a linha iluminada pode mudar de cor conforme as transições do sistema de computação para diferentes estados em relação ao usuário. A linha iluminada pode ser usada para fornecer uma dica visual para o usuário de um limite virtual no espaço e pode ser usada pelo sistema para determinar as transições no estado do computador em relação ao usuário, incluindo a determinação de quando o usuário deseja interagir com o computador.
[00123] Em algumas modalidades, o computador detecta a posição do usuário e opera para interpretar o movimento de uma mão do usuário através do limite virtual como um gesto que indica a intenção do usuário de se envolver com o computador. Em algumas modalidades, quando o usuário passa pela linha ou plano virtual, a luz gerada pelo gerador de luz pode mudar, fornecendo assim uma retroalimentação visual ao usuário de que o usuário entrou em uma área para fornecer gestos para fornecer entrada para o computador.
[00124] As telas de exibição podem fornecer indicações visuais de transições de estado do sistema de computação em relação a um usuário. Em algumas modalidades, uma primeira tela é fornecida em um primeiro estado no qual a presença de um usuário é detectada pelo sistema, tal como através do uso de um ou mais dos elementos de detecção.
[00125] Em algumas implementações, o sistema atua para detectar a identidade do usuário, como por reconhecimento facial. Aqui, a transição para uma segunda tela pode ser fornecida em um segundo estado, no qual o sistema de computação reconheceu a identidade do usuário, onde neste segundo a tela fornece retroalimentação visual ao usuário de que o usuário fez a transição para um novo estado. A transição para uma terceira tela pode ocorrer em um terceiro estado no qual o usuário confirmou o reconhecimento do usuário.
[00126] Em algumas modalidades, o sistema de computação pode usar um mecanismo de transição para determinar um local de um limite virtual para um usuário, onde o local do limite virtual pode variar com o usuário e o contexto. O sistema de computação pode gerar uma luz, como uma linha iluminada, para indicar o limite virtual para engajar com o sistema. Em algumas modalidades, o sistema de computação pode estar em um estado de espera e a luz pode ser produzida em uma primeira cor. O sistema de computação pode detectar se o usuário ultrapassou o limite virtual, por exemplo, detectando a presença e o movimento do usuário usando elementos de detecção.
[00127] Em algumas modalidades, se o usuário for detectado como tendo cruzado o limite virtual (como as mãos do usuário estando mais perto do sistema de computação do que a linha limite virtual), o sistema de computação pode fazer a transição para um estado para receber entradas de gestos do usuário, onde um mecanismo para indicar a transição pode incluir a luz que indica o limite virtual mudando para uma segunda cor.
[00128] Em algumas modalidades, o sistema de computação pode então determinar se o movimento do gesto é detectado. Se o movimento do gesto for detectado, o sistema de computação pode prosseguir com um processo de reconhecimento de gesto, que pode incluir o uso de dados de uma biblioteca de dados de gesto, que pode residir na memória no dispositivo de computação ou pode ser acessada de outra forma pelo dispositivo de computação.
[00129] Se um gesto do usuário for reconhecido, o sistema de computação pode executar uma função em resposta à entrada e retornar para receber gestos adicionais se o usuário estiver dentro do limite virtual. Em algumas modalidades, se o gesto não for reconhecido, o sistema de computação pode fazer a transição para um estado de erro, onde um mecanismo para indicar o estado de erro pode incluir a luz que indica o limite virtual mudando para uma terceira cor, com o sistema retornando para receber gestos adicionais se o usuário estiver dentro do limite virtual para se envolver com o sistema de computação.
[00130] Conforme mencionado acima, em outras modalidades, o sistema pode ser configurado como um sistema de computador do tipo tablet conversível que pode ser usado em pelo menos dois modos diferentes, um modo de tablet e um modo de notebook. O sistema conversível pode ter dois painéis, ou seja, um painel de exibição e um painel de base, de modo que no modo de comprimido os dois painéis sejam dispostos em uma pilha em cima do outro. No modo tablet, o painel da tela fica voltado para fora e pode fornecer funcionalidade de tela de toque como encontrada em tablets convencionais. No modo notebook, os dois painéis podem ser dispostos em uma configuração de concha aberta.
[00131] Em várias modalidades, o acelerômetro pode ser um acelerômetro de 3 eixos geométricos com taxas de dados de pelo menos 50 Hz. Um giroscópio também pode ser incluído, que pode ser um giroscópio de 3 eixos geométricos. Além disso, uma bússola eletrônica/magnetômetro pode estar presente. Além disso, um ou mais sensores de proximidade podem ser fornecidos (por exemplo, para a tampa aberta para detectar quando uma pessoa está próxima (ou não) do sistema e ajustar a potência/desempenho para estender a vida útil da bateria). Para alguns recursos de fusão de sensor do sistema operacional, incluindo o acelerômetro, giroscópio e bússola pode fornecer recursos aprimorados. Além disso, por meio de um concentrador de sensor com um relógio em tempo real (RTC), um mecanismo de ativação de sensores pode ser realizado para receber a entrada do sensor quando um restante do sistema está em um estado de baixa energia.
[00132] Em algumas modalidades, uma tampa interna/interruptor de tela aberta ou sensor para indicar quando a tampa está fechada/aberta e pode ser usado para colocar o sistema em espera conectada ou despertar automaticamente do estado de espera conectada. Outros sensores do sistema podem incluir sensores ACPI para processador interno, memória e monitoramento da temperatura da pele para permitir alterações nos estados de operação do processador e do sistema com base nos parâmetros detectados.
[00133] Em uma modalidade, o sistema operacional pode ser um sistema operacional Microsoft® Windows® 8 que implementa o modo de espera conectado (também referido aqui como Win8 CS). O Windows 8 Connected Standby ou outro sistema operacional com um estado semelhante pode fornecer, por meio de uma plataforma conforme descrito no presente documento, energia ultra ociosa muito baixa para permitir que os aplicativos permaneçam conectados, por exemplo, a um local baseado em nuvem, com consumo de energia muito baixo. A plataforma pode suportar 3 estados de energia, ou seja, tela ligada (normal); Standby conectado (como um estado "desligado" padrão); e desligamento (zero watts de consumo de energia). Portanto, no estado Connected Standby, a plataforma está logicamente ligada (em níveis mínimos de energia), embora a tela esteja desligada. Em tal plataforma, o gerenciamento de energia pode ser transparente para os aplicativos e manter a conectividade constante, em parte devido à tecnologia de descarregamento para permitir que o componente de menor potência execute uma operação.
[00134] Voltando ao diagrama 1300 da Figura 13, um exemplo de máquina de estado de treinamento de enlace é mostrado, como o treinamento de enlace PCIe e máquina de estado de status (LTSSM). A Figura 13 é um diagrama esquemático que ilustra uma máquina de estado de treinamento de enlace exemplificativa de acordo com modalidades da presente revelação. Para um sistema que utiliza um PHY de acordo com um protocolo específico para suportar vários protocolos alternativos (ou seja, para executar em cima do PHY), conjuntos ordenados podem ser definidos para serem comunicados entre dois ou mais dispositivos em um enlace em conexão com o treinamento do enlace. Por exemplo, conjuntos ordenados (SOs) de conjunto de treinamento (TS) podem ser enviados. Em uma implementação que utiliza PCIe como o protocolo PHY, os conjuntos ordenados TS podem incluir um conjunto ordenado TS1 e TS2, entre outros conjuntos ordenados de exemplo. Os conjuntos ordenados e as sequências de treinamento enviadas durante o treinamento do enlace podem ser baseados no estado de treinamento do enlace específico, com vários estados de treinamento do enlace utilizados para realizar atividades e objetivos de treinamento do enlace correspondentes.
[00135] A máquina de estado de treinamento de enlace 1300 pode ilustrar um treinamento de enlace e máquina de situação de estado (LTSSM) representativa de vários estados de um enlace multifaixa, como aquele baseado no protocolo PCIe. Em um exemplo, como ilustrado na Figura 13, uma máquina de estado de treinamento de enlace 1300 pode incluir estados como um estado de reinicialização, um estado de Detecção (por exemplo, para detectar uma terminação de extremidade distante (por exemplo, outro dispositivo conectado às faixas), um estado de sondagem (por exemplo, para estabelecer o bloqueio de símbolo e configurar a polaridade da faixa), um estado de configuração (ou "Config") (por exemplo, para configurar as pistas físicas de uma conexão em um enlace com largura de faixa particular, numeração de faixa, etc., realizando enquadramento de faixa a faixa e outras atividades de configuração de enlace), um estado de Retrocircuito (por exemplo, para realizar testes, isolamento de falhas, equalização e outras tarefas), um estado de recuperação (por exemplo, para uso para alterar a taxa de dados de operação, restabelecer o bloqueio de bits, bloqueio de símbolo ou alinhamento de blocos, realizar desequilíbrio de faixa a faixa, etc.) entre outros estados, que podem ser utilizados para trazer o enlace para um estado de ativo (por exemplo, L0) . O LTSSM 1300 também ilustra vários estados de energia: estado totalmente ativo (L0), inativo elétrico ou estado de espera (L0s), L1 (estado de espera/suspensão de energia mais baixa), L2 (estado de suspensão de energia baixa) e L3 (estado de enlace desligado). O LTSSM 1300 também ilustra o estado parcial L0 (PL0), que é o subestado descrito no presente documento.
[00136] Em um exemplo, as sequências de treinamento a serem enviadas em um determinado (ou mais) dos estados de treinamento do enlace podem ser definidas para acomodar a negociação de um determinado um dos protocolos suportados de um determinado dispositivo. Por exemplo, o estado de treinamento específico pode ser um estado de treinamento anterior à entrada em um estado de enlace ativo ou um estado de treinamento no qual a taxa de dados pode ser aumentada (por exemplo, além daquela suportada por pelo menos um dos protocolos suportados), como um estado PCIe onde uma taxa de dados faz a transição de uma velocidade Gen1 para Gen3 e velocidades mais altas, entre outros exemplos. Por exemplo, no exemplo de implementação mostrado na Figura 13, um estado de configuração pode ser utilizado e aumentado para permitir a negociação de um determinado de vários protocolos em paralelo com as atividades de treinamento de enlace definidas nativamente no estado de treinamento (por exemplo, determinação da largura da faixa, numeração da faixa, enquadramento, equalização, etc.). Por exemplo, sequências de treinamento particulares podem ser definidas para o estado de treinamento e essas sequências de treinamento podem ser aumentadas para permitir que as informações sejam comunicadas (por exemplo, em um ou mais campos ou símbolos do conjunto ordenado) para identificar se cada dispositivo no enlace suporta protocolos múltiplos (por exemplo, pelo menos uma pilha de protocolo diferente da pilha de protocolo da camada física e a máquina de estado de treinamento de enlace correspondente), identificar os protocolos específicos que cada dispositivo suporta e concordar com um ou mais protocolos para empregar na PHY específica (por exemplo, por meio de um handshake realizado por meio da transmissão dessas sequências de treinamento através do enlace (nas direções a montante e a jusante)).
[00137] Em um exemplo, uma camada física PCIe pode ser utilizada para suportar vários protocolos diferentes. Consequentemente, um determinado estado de treinamento em um PCIe LTSSM pode ser utilizado para a negociação de protocolos entre dispositivos em um enlace. Conforme observado acima, a determinação do protocolo pode ocorrer mesmo antes do enlace treinar para um estado ativo (por exemplo, L0) na taxa de dados mais baixa suportada (por exemplo, a taxa de dados PCIe Gen 1) . Em um exemplo, o estado de Config de PCIe pode ser usado. Na verdade, o PCIe LTSSM pode ser usado para negociar o protocolo usando conjuntos de treinamento PCIe modificados (por exemplo, TS1 e TS2) após a negociação da largura do enlace e (pelo menos parcialmente) em paralelo com a numeração da faixa realizada durante o estado de Config.
[00138] Embora esta revelação tenha sido descrita a respeito de um número limitado de modalidades, aquelas pessoas versadas na técnica irão verificar inúmeras modificações e variações de tais modalidades. Pretende-se que as reivindicações anexas cubram todas essas modificações e variações tal que sejam abrangidas pelo espírito verdadeiro e pelo escopo dessa presente revelação.
[00139] Um projeto pode passar por vários estágios, da criação à simulação à fabricação. Os dados que representam um projeto podem representar o projeto de inúmeras maneiras. Primeiro, conforme é útil em simulações, o hardware pode ser representado com o uso de uma linguagem de descrição de hardware ou outra linguagem de descrição funcional. Adicionalmente, um modelo de nível de circuito com portas de lógica e/ou de transistor pode ser produzido em alguns estágios doprocesso de projeto. Além disso, a maioria dos projetos, em algum estágio, alcança um nível de dados que representa a colocação física de vários dispositivos no modelo de hardware. No caso em que técnicas de fabricações de semicondutor convencionais são usadas, os dados que representam o modelo de hardware podem ser os dados que especificam a presença ou ausência de vários recursos em camadas de mascaramento diferentes usadas para produzir o circuito integrado. Em qualquer representação do projeto, os dados podem ser armazenados de qualquer forma de uma mídia legível por máquina. Uma memória ou um armazenamento magnético ou óptico tal como um disco pode ser uma mídia legível por máquina para armazenar informações transmitidas através de onda elétrica ou magnética modulada ou, de outro modo, gerada para transmitir tais informações. Quando uma onda de portadora elétrica que indica ou carrega o código ou projeto é transmitida, até que um sinal elétrico seja copiado, carregado em memória intermediária ou retransmitido, uma nova cópia é produzida. Portanto, um fornecedor de comunicação ou um fornecedor de rede podem armazenar em uma mídia tangível, legível por máquina, pelo menos temporariamente, um artigo, tal como informações codificadas em uma onda de portadora, que incorpora técnicas de modalidades da presente revelação.
[00140] Um módulo, conforme usado neste documento, refere-se a qualquer combinação de hardware, software e/ou firmware. Como exemplo, um módulo inclui hardware, como um microcontrolador, associado a um meio não transitório para armazenar o código adaptado para ser executado pelo microcontrolador. Portanto, a referência a um módulo, em uma modalidade, refere-se ao hardware, que é especificamente configurado para reconhecer e/ou executar o código a ser mantido em um meio não transitório. Além disso, em outra modalidade, o uso de um módulo se refere ao meio não transitório, incluindo o código, que é especificamente adaptado para ser executado pelo microcontrolador para realizar operações predeterminadas. E como pode ser inferido, em ainda outra modalidade, o termo módulo (neste exemplo) pode referir-se à combinação do microcontrolador e do meio não transitório. Frequentemente, os limites do módulo que são ilustrados como separados geralmente variam e podem se sobrepor. Por exemplo, um primeiro e um segundo módulo podem compartilhar hardware, software, firmware ou uma combinação dos mesmos, embora potencialmente retendo algum hardware, software ou firmware independente. Em uma modalidade, o uso do termo lógica inclui hardware, como transistores, registros ou outro hardware, como dispositivos lógicos programáveis.
[00141] O uso da frase "para" ou "configurado para", em uma modalidade, refere-se a organizar, montar, fabricar, oferecer para vender, importar e/ou projetar um aparelho, hardware, lógica ou elemento para executar uma tarefa designada ou determinada. Neste exemplo, um aparelho ou elemento do mesmo que não está operando ainda está "configurado para" executar uma tarefa designada se for projetado, acoplado e/ou interconectado para executar a referida tarefa designada. Como um exemplo puramente ilustrativo, uma porta lógica pode fornecer um 0 ou um 1 durante a operação. Mas uma porta lógica "configurada para" fornecer um sinal de habilitação para um relógio não inclui todas as portas lógicas potenciais que podem fornecer 1 ou 0. Em vez disso, a porta lógica é acoplada de alguma maneira que, durante a operação, a saída 1 ou 0 é para habilitar o relógio. Observe mais uma vez que o uso do termo "configurado para" não requer operação, mas sim enfoca o estado latente de um aparelho, hardware e/ou elemento, onde no estado latente o aparelho, hardware e/ou elemento é projetado para executar uma tarefa particular quando o aparelho, hardware e/ou elemento está operando.
[00142] Além disso, o uso das frases ’capaz de/para’ e ou ’operável para’, em uma modalidade, refere-se a algum aparelho, lógica, hardware e/ou elemento projetado de modo a permitir o uso do aparelho, lógica, hardware e/ou elemento de uma maneira especificada. Observe como acima que o uso de para, capaz de ou operável para, em uma modalidade, refere-se ao estado latente de um aparelho, lógica, hardware e/ou elemento, onde o aparelho, lógica, hardware e/ou o elemento não está operando, mas é projetado de maneira a permitir o uso de um aparelho de uma maneira especificada.
[00143] Um valor, conforme usado no presente documento, inclui qualquer representação conhecida de um número, um estado, um estado lógico ou um estado lógico binário. Frequentemente, o uso de níveis lógicos, valores lógicos ou valores lógicos também é referido como 1 e 0, que simplesmente representa estados lógicos binários. Por exemplo, 1 se refere a um nível lógico alto e 0 se refere a um nivel lógico baixo. Em uma modalidade, uma célula de armazenamento, como um transistor ou célula flash, pode ser capaz de manter um único valor lógico ou vários valores lógicos. No entanto, outras representações de valores em sistemas de computador têm sido usadas. Por exemplo, o número decimal dez também pode ser representado como um valor binário de 1010 e uma letra hexadecimal A. Portanto, um valor inclui qualquer representação de informação capaz de ser mantida em um sistema de computador.
[00144] Além disso, os estados podem ser representados por valores ou porções de valores. Por exemplo, um primeiro valor, como um lógico, pode representar um estado padrão ou inicial, enquanto um segundo valor, como um zero lógico, pode representar um estado não padrão. Além disso, os termos redefinir e definir, em uma modalidade, referem-se a um padrão e um valor ou estado atualizado, respectivamente. Por exemplo, um valor padrão inclui potencialmente um valor lógico alto, ou seja, redefinir, enquanto um valor atualizado inclui potencialmente um valor lógico baixo, ou seja, definido. Observe que qualquer combinação de valores pode ser utilizada para representar qualquer número de estados.
[00145] As modalidades de métodos, hardware, software, firmware ou código estabelecidos acima podem ser implementados por meio de instruções ou código armazenado em um meio acessível por máquina, legível por máquina, acessível por computador ou legível por computador que são executáveis por um elemento de processamento. Um meio não transitório acessível/legível por máquina inclui qualquer mecanismo que fornece (ou seja, armazena e/ou transmite) informações em uma forma legível por uma máquina, como um computador ou sistema eletrônico. Por exemplo, um meio acessível por máquina não transitório inclui memória de acesso aleatório (RAM), como RAM estática (SRAM) ou RAM dinâmica (DRAM); ROM; meio de armazenamento magnético ou óptico; dispositivos de memória flash; Dispositivos elétricos de armazenamento; dispositivos de armazenamento óptico; dispositivos de armazenamento acústico; outra forma de dispositivos de armazenamento para reter informações recebidas de sinais transitórios (propagados) (por exemplo, ondas portadoras, sinais infravermelhos, sinais digitais); etc., que devem ser distinguidos dos médiuns não transitórios que podem receber informações deles.
[00146] As instruções usadas para realizar as modalidades da revelação podem ser armazenadas dentro de uma memória no sistema, de modo que DRAM, cache, memória flash, ou outro armazenamento. Além disso, as instruções podem ser distribuídas através de uma rede ou por meio de outra mídia legível por computador. Portanto, uma mídia legível por máquina pode incluir qualquer mecanismo para armazenar ou transmitir informações em uma forma legível por uma máquina (por exemplo, um computador), mas não se limita a, disquetes, discos ópticos, Disco Compacto, Memória Somente Leitura (CD-ROMs), e discos ópticos-magnéticos, Memória Somente Leitura (ROMs), Memória de Acesso Aleatório (RAM), Memória Somente Leitura Programável Apagável (EPROM), Memória Somente Leitura Programável Eletricamente Apagável (EEPROM), cartões ópticos ou magnéticos, memória flash, ou um armazenamento tangível, legível por máquina usado na transmissão de informações pela Internet através de sinais propagados de forma elétrica, óptica, acústica ou outras formas (por exemplo, ondas de portadora, sinais infravermelhos, sinais digitais, etc.). Consequentemente, a mídia legível por computador inclui qualquer tipo de mídia legível por máquina tangível adequada para armazenar ou transmitir instruções eletrônicas ou informações de uma forma legível por uma máquina (por exemplo, um computador).
[00147] Referências no decorrer desse relatório descritivo a "uma modalidade" ou "a modalidade" significam que um recurso, estrutura, ou característica particular descrita em conexão com a modalidade está incluída em pelo menos uma modalidade da presente invenção. Assim, as aparições das frases "em uma modalidade" ou "em uma modalidade" em vários lugares ao longo deste relatório descritivo não se referem necessariamente à mesma modalidade. Além disso, os recursos estruturas ou características particulares podem ser combinados de qualquer maneira adequada em uma ou mais modalidades.
[00148] Na especificação anterior, uma descrição detalhada foi dada com referência a modalidades exemplificativas específicas. Será evidente, entretanto, que várias modificações e mudanças podem ser feitas às mesmas sem se afastar do espírito e do escopo mais amplos da revelação, conforme estabelecido nas reivindicações anexas. O relatório descritivo e os desenhos devem, portanto, ser considerados em um sentido ilustrativo em vez de um sentido restritivo. Além disso, o uso anterior da modalidade e outra linguagem exemplificativa não se refere necessariamente à mesma modalidade ou ao mesmo exemplo, mas pode se referir a modalidades diferentes e distintas, bem como potencialmente à mesma modalidade.
[00149] Vários aspectos e combinações das modalidades são descritos acima, alguns dos quais são representados pelos seguintes exemplos:
[00150] Exemplo 1 é um aparelho que inclui uma camada física (PHY). A PHY pode suportar múltiplos protocolos de interconexão. A PHY pode incluir uma PHY lógica para suportar múltiplos protocolos de interconexão. A PHY lógica pode incluir um primeiro conjunto de codificadores de verificação de redundância cíclica (CRC) que corresponde a um primeiro protocolo de interconexão, e um segundo conjunto de codificadores de CRC que corresponde a um segundo protocolo de interconexão. A PHY pode incluir um multiplexador para direcionar dados para o pr imeiro conjunto de codificadores de CRC ou para o segundo conjunto de codificadores de CRC com base em um protocolo de interconexão selecionado.
[00151] Exemplo 2 pode incluir a matéria do exemplo 1, em que a PHY lógica compreende um desvio de codificador de CRC.
[00152] Exemplo 3 pode incluir a matéria de qualquer de exemplos 1-2, e também pode incluir um primeiro conjunto de decodificadores de verificação de redundância cíclica (CRC) que corresponde ao primeiro protocolo de interconexão, e um segundo conjunto de decodificadores de CRC que corresponde ao segundo protocolo de interconexão. O multiplexador para direcionar dados para o primeiro conjunto de decodificadores de CRC ou para o segundo conjunto de decodificadores de CRC com base no protocolo de interconexão selecionado.
[00153] Exemplo 4 pode incluir a matéria do exemplo 3, em que a PHY lógica compreende um desvio de decodificador de CRC.
[00154] Exemplo 5 pode incluir a matéria de qualquer um dos exemplos 1-3, e também pode incluir um primeiro conjunto de codificadores de código de correção de erros (ECC) que corresponde ao primeiro protocolo de interconexão; e um segundo conjunto de codificadores de ECC que corresponde ao segundo protocolo de interconexão. O multiplexador é para direcionar dados para o primeiro conjunto de codificadores de ECC ou para o segundo conjunto de codificadores de ECC com base no protocolo de interconexão selecionado.
[00155] Exemplo 6 pode incluir a matéria de exemplo 5, em que a PHY lógica compreende um desvio de codificador de ECC.
[00156] Exemplo 7 pode incluir a matéria de exemplo 5, e também pode incluir um primeiro conjunto de decodificadores de código de correção de erros (ECC) que corresponde ao primeiro protocolo de interconexão; e um segundo conjunto de decodificadores de ECC que corresponde ao segundo protocolo de interconexão. O multiplexador é para direcionar dados para o primeiro conjunto de decodificadores de ECC ou para o segundo conjunto de decodificadores de ECC com base no protocolo de interconexão selecionado.
[00157] Exemplo 8 pode incluir a matéria de exemplo 7, em que a PHY lógica compreende um desvio de decodificador de ECC.
[00158] Exemplo 9 pode incluir a matéria de qualquer um dos exemplos 1 ou 5, e também pode incluir um registro de erros para registrar erros incorrigíveis identificados por um decodificador de ECC ou um decodificador de CRC.
[00159] Exemplo 10 pode incluir a matéria de qualquer um dos exemplos 1-9, e também pode incluir um primeiro armazenamento temporário para armazenar temporariamente um primeiro flit de um primeiro tamanho que corresponde a um tamanho de flit associado com o primeiro protocolo de interconexão; e um segundo armazenamento temporário para armazenar temporariamente um segundo flit de um segundo tamanho que corresponde a um tamanho de flit associado com o segundo protocolo de interconexão.
[00160] Exemplo 11 pode incluir a matéria de qualquer um dos exemplos 1-10, em que o primeiro protocolo de interconexão ou o segundo protocolo de interconexão compreende um dentre um protocolo com base em interconexão expressa de componentes periféricos (PCIe), um protocolo de enlace expresso de computação (CXL) ou um protocolo de interconexão de ultracaminho (UPI).
[00161] Exemplo 12 é um método que inclui identificar, por um multiplexador de uma camada física, um protocolo de interconexão a partir de uma pluralidade de protocolos de interconexão com a qual deve-se operar um enlace; identificar um primeiro conjunto codificadores de verificação de redundância cíclica (CRC) a partir de uma pluralidade de conjuntos de codificadores de CRC com base no protocolo de interconexão identificado; e direcionar tráfego de dados por um multiplexador para o primeiro conjunto de codificadores de CRC.
[00162] Exemplo 13 pode incluir a matéria de exemplo 12, e também pode incluir receber uma solicitação para mudar o primeiro conjunto de codificadores de CRC para um segundo conjunto de codificadores de CRC; transicionar o enlace para um estado de recuperação; selecionar o segundo conjunto de codificadores de CRC; direcionar tráfego de dados para o segundo conjunto de codificadores de CRC; e transicionar o enlace para um estado de ativo.
[00163] Exemplo 14 pode incluir a matéria de qualquer um dos exemplos 12-13, e também pode incluir identificar um primeiro conjunto de codificadores de código de correção de erros (ECC) a partir de uma pluralidade de conjuntos de codificadores de ECC com base no protocolo de interconexão identificado; e direcionar tráfego de dados para o primeiro conjunto de codificadores de ECC.
[00164] Exemplo 15 pode incluir a matéria de exemplo 14, e também pode incluir receber uma solicitação para mudar o primeiro conjunto de codificadores de ECC para um segundo conjunto de codificadores de ECC; transicionar o enlace para um estado de recuperação; selecionar o segundo conjunto de codificadores de ECC; direcionar tráfego de dados para o segundo conjunto de codificadores de ECC; e transicionar o enlace para um estado de ativo.
[00165] Exemplo 16 pode incluir a matéria de exemplo 15, e também pode incluir receber uma solicitação para mudar o primeiro conjunto de codificadores de CRC para um segundo conjunto de codificadores de CRC; transicionar o enlace para um estado de recuperação; selecionar o segundo conjunto de codificadores de CRC; direcionar tráfego de dados para o segundo conjunto de codificadores de CRC; e transicionar o enlace para um estado de ativo.
[00166] Exemplo 17 pode incluir a matéria de exemplo 14, em que o enlace é para operar em um estado de ativo em uma primeira largura de banda, o método também pode incluir receber uma indicação de que o enlace pode operar em uma segunda largura de banda, a segunda largura de banda menor que a primeira largura de banda; receber uma indicação de que o enlace pode operar na segunda largura de banda sem correção de erro direta (FEC); transicionar o enlace para um estado de recuperação; desviar o primeiro conjunto de codificadores de ECC; e transicionar o enlace para um estado ativo.
[00167] Exemplo 18 pode incluir a matéria de qualquer um dos exemplos 12-17, em que o protocolo de interconexão compreende um dentre um protocolo com base em interconexão expressa de componentes periféricos (PCIe), um protocolo de enlace expresso de computação (CXL) ou um protocolo de interconexão de ultracaminho (UPI) .
[00168] Exemplo 19 é um sistema que inclui um dispositivo hospedeiro e um dispositivo de ponto final. O dispositivo hospedeiro pode incluir um núcleo de processador e uma camada física do lado de transmissão (PHY). A PHY do lado de transmissão pode incluir uma PHY lógica do lado de transmissão para suportar múltiplos protocolos de interconexão. A PHY lógica do lado de transmissão pode incluir um primeiro conjunto de codificadores de verificação de redundância cíclica (CRC) que corresponde a um primeiro protocolo de interconexão, e um segundo conjunto de codificadores de CRC que corresponde a um segundo protocolo de interconexão. A PHY do lado de transmissão pode incluir um multiplexador do lado do transmissor para direcionar dados para o primeiro conjunto de codificadores de CRC ou para o segundo conjunto de codificadores de CRC com base em um protocolo de interconexão selecionado. O dispositivo de ponto final pode incluir uma PHY do lado do receptor que inclui uma PHY lógica do lado do receptor, a PHY lógica do lado do receptor para suportar múltiplos protocolos de interconexão, sendo que os múltiplos protocolos de interconexão compreendem o primeiro protocolo de interconexão e o segundo protocolo de interconexão. A PHY lógica do lado do receptor pode incluir um primeiro conjunto de decodificadores de verificação de redundância cíclica (CRC) que corresponde ao primeiro protocolo de interconexão, e um segundo conjunto de decodificadores de CRC que corresponde ao segundo protocolo de interconexão. Um multiplexador do lado do receptor pode direcionar dados para o primeiro conjunto de decodificadores de CRC ou para o segundo conjunto de decodificadores de CRC com base no protocolo de interconexão selecionado.
[00169] Exemplo 20 pode incluir a matéria de exemplo 19, a PHY lógica do lado de transmissão para receber uma solicitação para mudar o primeiro conjunto de codificadores de CRC para um segundo conjunto de codificadores de CRC; transicionar o enlace para um estado de recuperação; selecionar o segundo conjunto de codificadores de CRC; direcionar tráfego de dados para o segundo conjunto de codificadores de CRC e transicionar o enlace para um estado ativo. A PHY lógica do lado do receptor para selecionar o segundo conjunto de decodificadores de CRC e direcionar tráfego de dados para o segundo conjunto de decodificadores de CRC.
[00170] Exemplo 21 pode incluir a matéria de qualquer um dos exemplos 19-20, em que a PHY lógica do lado de transmissão pode incluir um primeiro conjunto de codificadores de código de correção de erros (ECC) que corresponde ao primeiro protocolo de interconexão; e um segundo conjunto de codificadores de ECC que corresponde ao segundo protocolo de interconexão. O multiplexador do lado do transmissor é para direcionar dados para o primeiro conjunto de codificadores de ECC ou para o segundo conjunto de codificadores de ECC com base no protocolo de interconexão selecionado. A PHY lógica do lado do receptor pode incluir um primeiro conjunto de decodificadores de código de correção de erros (ECC) que corresponde ao primeiro protocolo de interconexão; e um segundo conjunto de decodificadores de ECC que corresponde ao segundo protocolo de interconexão, em que o multiplexador do lado do receptor é para direcionar dados para o primeiro conjunto de decodificadores de ECC ou para o segundo conjunto de decodificadores de ECC com base no protocolo de interconexão selecionado.
[00171] Exemplo 22 pode incluir a matéria de qualquer um dos exemplos 19-21, sendo que a PHY do lado do receptor compreende adicionalmente um registro de erros para registrar erros incorrigíveis identificados por um decodificador de ECC e um decodificador de CRC.
[00172] Exemplo 23 pode incluir a matéria de exemplo 21, a PHY lógica do lado de transmissão para receber uma solicitação para mudar o primeiro conjunto de codificadores de ECC para um segundo conjunto de codificadores de ECC; transicionar o enlace para um estado de recuperação, selecionar o segundo conjunto de codificadores de ECC, direcionar tráfego de dados para o segundo conjunto de codificadores de ECC e transicionar o enlace para um estado ativo. A PHY lógica do lado do receptor para selecionar o segundo conjunto de decodificadores de ECC e direcionar tráfego de dados para o segundo conjunto de decodificadores de ECC.
[00173] Exemplo 24 pode incluir a matéria de qualquer um dos exemplos 19-23, em que a PHY lógica do lado de transmissão compreende um desvio de codificador de ECC e a PHY lógica do lado do receptor compreende um desvio de decodificador de ECC.
[00174] Exemplo 25 pode incluir a matéria de qualquer um dos exemplos 19-24, em que a PHY lógica do lado de transmissão compreende um desvio de codificador de CRC e a PHY lógica do lado do receptor compreende um desvio de decodificador de CRC.
[00175] Exemplo 26 pode incluir a matéria de qualquer um dos exemplos 19-25, em que o primeiro protocolo de interconexão ou o segundo protocolo de interconexão compreende um dentre um protocolo com base em interconexão expressa de componentes periféricos (PCIe), um protocolo de enlace expresso de computação (CXL) ou um protocolo de interconexão de ultracaminho (UPI).
[00176] Exemplo 27 pode incluir a matéria de exemplo 1, o aparelho acoplado a múltiplos dispositivos ao longo do enlace, sendo a PHY suporta múltiplos protocolos de interconexão. A PHY pode suportar diferentes combinações de FEC/CRC, dependendo das características do enlace para cada dispositivo conectado e para cada protocolo usado para cada dispositivo.
[00177] Exemplo 28 pode incluir a matéria de exemplo 5, em que a PHY compreende uma primeira combinação de codificadores de ECC e codificadores de CRC que corresponde ao primeiro protocolo de interconexão suportado pela PHY e uma segunda combinação de codificadores de ECC e codificadores de CRC que corresponde ao segundo protocolo de interconexão suportado pela PHY.
[00178] Exemplo 29 pode incluir a matéria de exemplo 18, em que a PHY lógica do lado de transmissão compreende uma primeira combinação de codificadores de ECC e codificadores de CRC que correspondem ao primeiro protocolo de interconexão suportado pela PHY lógica do lado de transmissão e uma segunda combinação de codificadores de ECC e codificadores de CRC que correspondem ao segundo protocolo de interconexão suportado pela PHY lógica do lado de transmissão.
[00179] Exemplo 30 pode incluir a matéria de qualquer um dos exemplos 18 ou 29, em que a PHY lógica do lado do receptor compreende uma primeira combinação de codificadores de ECC e codificadores de CRC que correspondem ao primeiro protocolo de interconexão suportado pela PHY lógica do lado do receptor e uma segunda combinação de codificadores de ECC e codificadores de CRC que correspondem ao segundo protocolo de interconexão suportado pela PHY lógica do lado do receptor.
[00180] Exemplo 31 pode incluir a matéria de qualquer um dos exemplos 1, 11, ou 18, em que um tamanho de flit de carga útil pode depender de um número de bits usados para FEC (0 para nenhum FEC) e CRC.

Claims (25)

  1. Aparelho caracterizado por compreender:
    uma camada física (PHY) (300) que compreende:
    uma PHY lógica (304) para suportar múltiplos protocolos de interconexão, sendo que a PHY lógica compreende:
    um primeiro conjunto de codificadores de verificação de redundância cíclica (CRC) (404-410) que corresponde a um primeiro protocolo de interconexão suportado pela PHY, e
    um segundo conjunto de codificadores de CRC (404-410) que corresponde a um segundo protocolo de interconexão suportado pela PHY; e
    um multiplexador (412) para direcionar dados para o primeiro conjunto de codificadores de CRC ou para o segundo conjunto de codificadores de CRC com base em um protocolo de interconexão selecionado.
  2. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que a PHY lógica compreende um desvio de codificador de CRC.
  3. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente:
    um primeiro conjunto de decodificadores de verificação de redundância cíclica (CRC) que corresponde ao primeiro protocolo de interconexão, e
    um segundo conjunto de decodificadores de CRC que corresponde ao segundo protocolo de interconexão; e
    um multiplexador para direcionar dados para o primeiro conjunto de decodificadores de CRC ou para o segundo conjunto de decodificadores de CRC com base no protocolo de interconexão selecionado.
  4. Aparelho, de acordo com a reivindicação 3, caracterizado pelo fato de que a PHY lógica compreende um desvio de decodificador de CRC.
  5. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente:
    um primeiro conjunto de codificadores de código de correção de erros (ECC) que corresponde ao primeiro protocolo de interconexão; e
    um segundo conjunto de codificadores de ECC que corresponde ao segundo protocolo de interconexão;
    em que o multiplexador é para direcionar dados para o primeiro conjunto de codificadores de ECC ou para o segundo conjunto de codificadores de ECC com base no protocolo de interconexão selecionado.
  6. Aparelho, de acordo com a reivindicação 5, caracterizado pelo fato de que a PHY lógica compreende um desvio de codificador de ECC.
  7. Aparelho, de acordo com a reivindicação 5, caracterizado pelo fato de que compreende adicionalmente:
    um primeiro conjunto de decodificadores de código de correção de erros (ECC) que corresponde ao primeiro protocolo de interconexão; e
    um segundo conjunto de decodificadores de ECC que corresponde ao segundo protocolo de interconexão;
    em que o multiplexador é para direcionar dados para o primeiro conjunto de decodificadores de ECC ou para o segundo conjunto de decodificadores de ECC com base no protocolo de interconexão selecionado.
  8. Aparelho, de acordo com a reivindicação 5, caracterizado pelo fato de que compreende adicionalmente um registro de erros para registrar erros identificados por um decodificador de CRC ou por um decodificador de ECC.
  9. Aparelho, de acordo com a reivindicação 5, caracterizado pelo fato de que a PHY compreende uma primeira combinação de codificadores de ECC e codificadores de CRC que corresponde ao primeiro protocolo de interconexão suportado pela PHY e uma segunda combinação de codificadores de ECC e codificadores de CRC que corresponde ao segundo protocolo de interconexão suportado pela PHY.
  10. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente:
    um primeiro armazenamento temporário para armazenar temporariamente um primeiro flit de um primeiro tamanho que corresponde a um tamanho de flit associado com o primeiro protocolo de interconexão; e
    um segundo armazenamento temporário para armazenar temporariamente um segundo flit de um segundo tamanho que corresponde a um tamanho de flit associado com o segundo protocolo de interconexão.
  11. Método caracterizado por compreender:
    identificar, por um multiplexador de uma camada física, um protocolo de interconexão de uma pluralidade de protocolos de interconexão com o qual deve-se operar o enlace;
    identificar um primeiro conjunto codificadores de verificação de redundância cíclica (CRC) de uma pluralidade de conjuntos de codificadores de CRC com base no protocolo de interconexão identificado; e
    direcionar tráfego de dados por um multiplexador para o primeiro conjunto de codificadores de CRC.
  12. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que compreende adicionalmente:
    receber uma solicitação para mudar o primeiro conjunto de codificadores de CRC para um segundo conjunto de codificadores de CRC;
    transicionar o enlace para um estado de recuperação;
    selecionar o segundo conjunto de codificadores de CRC;
    direcionar tráfego de dados para o segundo conjunto de codificadores de CRC; e
    transicionar o enlace para um estado de ativo.
  13. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que compreende adicionalmente:
    identificar um primeiro conjunto de codificadores de código de correção de erros (ECC) a partir de uma pluralidade de conjuntos de codificadores de ECC com base no protocolo de interconexão identificado; e
    direcionar tráfego de dados para o primeiro conjunto de codificadores de ECC.
  14. Método, de acordo com a reivindicação 13, caracterizado pelo fato de que compreende adicionalmente:
    receber uma solicitação para mudar o primeiro conjunto de codificadores de ECC para um segundo conjunto de codificadores de ECC;
    transicionar o enlace para um estado de recuperação;
    selecionar o segundo conjunto de codificadores de ECC;
    direcionar tráfego de dados para o segundo conjunto de codificadores de ECC; e
    transicionar o enlace para um estado de ativo.
  15. Método, de acordo com a reivindicação 14, caracterizado pelo fato de que compreende adicionalmente:
    receber uma solicitação para mudar o primeiro conjunto de codificadores de CRC para um segundo conjunto de codificadores de CRC;
    transicionar o enlace para um estado de recuperação;
    selecionar o segundo conjunto de codificadores de CRC;
    direcionar tráfego de dados para o segundo conjunto de codificadores de CRC; e
    transicionar o enlace para um estado de ativo.
  16. Método, de acordo com a reivindicação 13, em que o enlace deve operar em um estado de ativo em uma primeira largura de banda, o método caracterizado pelo fato de que compreende:
    receber uma indicação de que o enlace pode operar em uma segunda largura de banda, a segunda largura de banda inferior à primeira largura de banda;
    receber uma indicação de que o enlace pode operar na segunda largura de banda sem correção de erro direta (FEC);
    transicionar o enlace para um estado de recuperação;
    desviar o primeiro conjunto de codificadores de ECC; e
    transicionar o enlace para um estado de ativo.
  17. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que o protocolo de interconexão compreende um dentre um protocolo com base em interconexão expressa de componentes periféricos (PCIe), um protocolo de enlace expresso de computação (CXL) ou um protocolo de interconexão de ultracaminho (UPI) .
  18. Sistema caracterizado por compreender:
    um dispositivo hospedeiro que compreende:
    um núcleo de processador,
    uma camada física do lado de transmissão (PHY) 300 que compreende:
    uma PHY 306 lógica do lado de transmissão para suportar múltiplos protocolos de interconexão, sendo que a PHY lógica do lado de transmissão compreende:
    um primeiro conjunto de codificadores de verificação de redundância cíclica (CRC) 404-410 que corresponde a um primeiro protocolo de interconexão suportado pela PHY lógica do lado de transmissão, e
    um segundo conjunto de codificadores de CRC 404-410 que corresponde a um segundo protocolo de interconexão suportado pela PHY lógica do lado de transmissão, e
    um multiplexador do lado do transmissor para direcionar dados para o primeiro conjunto de codificadores de CRC ou para o segundo conjunto de codificadores de CRC com base em um protocolo de interconexão selecionado;
    um dispositivo de ponto final que compreende uma PHY do lado do receptor que compreende:
    uma PHY lógica do lado do receptor 308 para suportar múltiplos protocolos de interconexão, em que os múltiplos protocolos de interconexão compreendem o primeiro protocolo de interconexão e o segundo protocolo de interconexão, sendo que a PHY lógica do lado do receptor compreende:
    um primeiro conjunto de decodificadores de verificação de redundância cíclica (CRC) 510-516 que corresponde ao primeiro protocolo de interconexão, e
    um segundo conjunto de decodificadores de CRC 510-516 que corresponde ao segundo protocolo de interconexão; e
    um multiplexador do lado do receptor para direcionar dados para o primeiro conjunto de decodificadores de CRC ou para o segundo conjunto de decodificadores de CRC com base no protocolo de interconexão selecionado.
  19. Sistema, de acordo com a reivindicação 18, caracterizado pelo fato de que a PHY lógica do lado de transmissão é para:
    receber uma solicitação para mudar o primeiro conjunto de codificadores de CRC para um segundo conjunto de codificadores de CRC;
    transicionar o enlace para um estado de recuperação;
    selecionar o segundo conjunto de codificadores de CRC;
    direcionar tráfego de dados para o segundo conjunto de codificadores de CRC, e
    transicionar o enlace para um estado de ativo;
    a PHY lógica do lado do receptor é para:
    selecionar o segundo conjunto de decodificadores de CRC, e
    direcionar tráfego de dados para o segundo conjunto de decodificadores de CRC.
  20. Sistema, de acordo com a reivindicação 18, caracterizado pelo fato de que a PHY lógica do lado de transmissão compreende:
    um primeiro conjunto de codificadores de código de correção de erros (ECC) que corresponde ao primeiro protocolo de interconexão; e
    um segundo conjunto de codificadores de ECC que corresponde ao segundo protocolo de interconexão;
    em que o multiplexador do lado do transmissor é para direcionar dados para o primeiro conjunto de codificadores de ECC ou para o segundo conjunto de codificadores de ECC com base no protocolo de interconexão selecionado; e
    em que a PHY lógica do lado do receptor compreende:
    um primeiro conjunto de decodificadores de código de correção de erros (ECC) que corresponde ao primeiro protocolo de interconexão; e
    um segundo conjunto de decodificadores de ECC que corresponde ao segundo protocolo de interconexão;
    em que o multiplexador do lado do receptor é para direcionar dados para o primeiro conjunto de decodificadores de ECC ou para o segundo conjunto de decodificadores de ECC com base no protocolo de interconexão selecionado.
  21. Sistema, de acordo com a reivindicação 20, caracterizado pelo fato de que a PHY do lado do receptor compreende adicionalmente um registro de erros para registrar erros incorrigíveis identificados por um decodificador de ECC e um decodificador de CRC.
  22. Sistema, de acordo com a reivindicação 20, caracterizado pelo fato de que a PHY lógica do lado de transmissão é para:
    receber uma solicitação para mudar o primeiro conjunto de codificadores de ECC para um segundo conjunto de codificadores de ECC;
    transicionar o enlace para um estado de recuperação,
    selecionar o segundo conjunto de codificadores de ECC,
    direcionar tráfego de dados para o segundo conjunto de codificadores de ECC, e
    transicionar o enlace para um estado de ativo; e
    em que a PHY lógica do lado do receptor é para:
    selecionar o segundo conjunto de decodificadores de ECC, e
    direcionar tráfego de dados para o segundo conjunto de decodificadores de ECC.
  23. Sistema, de acordo com a reivindicação 20, caracterizado pelo fato de que a PHY lógica do lado de transmissão compreende um desvio de codificador de ECC e a PHY lógica do lado do receptor compreende um desvio de decodificador de ECC.
  24. Sistema, de acordo com a reivindicação 18, caracterizado pelo fato de que a PHY lógica do lado de transmissão compreende um desvio de codificador de CRC e a PHY lógica do lado do receptor compreende um desvio de decodificador de CRC.
  25. Sistema, de acordo com a reivindicação 18, caracterizado pelo fato de que o primeiro protocolo de interconexão ou o segundo protocolo de interconexão compreende um dentre um protocolo com base em interconexão expressa de componentes periféricos (PCIe), um protocolo de enlace expresso de computação (CXL) ou um protocolo de interconexão de ultracaminho (UPI).
BR102020019435-6A 2019-11-27 2020-09-24 suporte multiprotocolo em camada física comum BR102020019435A2 (pt)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962941445P 2019-11-27 2019-11-27
US62/941,445 2019-11-27
US16/831,726 2020-03-26
US16/831,726 US11740958B2 (en) 2019-11-27 2020-03-26 Multi-protocol support on common physical layer

Publications (1)

Publication Number Publication Date
BR102020019435A2 true BR102020019435A2 (pt) 2021-06-08

Family

ID=71517590

Family Applications (1)

Application Number Title Priority Date Filing Date
BR102020019435-6A BR102020019435A2 (pt) 2019-11-27 2020-09-24 suporte multiprotocolo em camada física comum

Country Status (6)

Country Link
US (2) US11740958B2 (pt)
EP (1) EP3829090A1 (pt)
JP (1) JP2021087216A (pt)
CN (1) CN112860610A (pt)
BR (1) BR102020019435A2 (pt)
TW (1) TW202134872A (pt)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10784986B2 (en) 2017-02-28 2020-09-22 Intel Corporation Forward error correction mechanism for peripheral component interconnect-express (PCI-e)
US10771189B2 (en) 2018-12-18 2020-09-08 Intel Corporation Forward error correction mechanism for data transmission across multi-lane links
US11637657B2 (en) 2019-02-15 2023-04-25 Intel Corporation Low-latency forward error correction for high-speed serial links
US11249837B2 (en) 2019-03-01 2022-02-15 Intel Corporation Flit-based parallel-forward error correction and parity
US11397701B2 (en) * 2019-04-30 2022-07-26 Intel Corporation Retimer mechanisms for in-band link management
US11296994B2 (en) 2019-05-13 2022-04-05 Intel Corporation Ordered sets for high-speed interconnects
US11388268B1 (en) 2020-01-30 2022-07-12 Marvell Asia Pte Ltd. Network systems and methods for CXL standard
US20210119730A1 (en) * 2020-09-18 2021-04-22 Intel Corporation Forward error correction and cyclic redundancy check mechanisms for latency-critical coherency and memory interconnects
DE102021121105A1 (de) * 2020-09-28 2022-03-31 Samsung Electronics Co., Ltd. Intelligente ablagespeichervorrichtung
WO2022187993A1 (zh) * 2021-03-08 2022-09-15 华为技术有限公司 数据处理方法、设备及数据传输系统
EP4149032A3 (en) * 2021-09-09 2023-05-03 INTEL Corporation Selection of processing mode for receiver circuit
US20220012140A1 (en) * 2021-09-24 2022-01-13 Debendra Das Sharma Hardware logging for lane margining and characterization
JP7399146B2 (ja) 2021-10-05 2023-12-15 アンリツ株式会社 誤り検出装置および誤り検出方法
JP7432569B2 (ja) 2021-10-11 2024-02-16 アンリツ株式会社 誤り検出装置および誤り検出方法
US20220342841A1 (en) * 2021-12-22 2022-10-27 Swadesh Choudhary Die-to-die adapter
US20230244628A1 (en) * 2022-01-31 2023-08-03 Xilinx, Inc. Adaptive chip-to-chip interface protocol architecture
US11953974B2 (en) * 2022-07-13 2024-04-09 Dell Products L.P. Method for PCIe fallback in a CXL system
WO2024092437A1 (zh) * 2022-10-31 2024-05-10 华为技术有限公司 一种数据传输方法、装置和系统

Family Cites Families (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69922732T2 (de) 1998-04-27 2005-12-08 Matsushita Electric Industrial Co., Ltd., Kadoma Verfahren und Vorrichtung zur Faltungsverschachtelung sowie Verfahren und Vorrichtung zur Faltungsentschachtelung
US6574238B1 (en) 1998-08-26 2003-06-03 Intel Corporation Inter-switch link header modification
US6400728B1 (en) 1998-09-09 2002-06-04 Vlsi Technology, Inc. Method and system for detecting user data types in digital communications channels and optimizing encoding-error correction in response thereto
US6590882B1 (en) * 1998-09-15 2003-07-08 Nortel Networks Limited Multiplexing/demultiplexing schemes between wireless physical layer and link layer
EP1919117B1 (en) 1998-11-30 2014-10-15 Panasonic Corporation Packet retransmission control using priority information
US6868519B2 (en) 2001-04-23 2005-03-15 Lucent Technologies Inc. Reducing scintillation effects for optical free-space transmission
US6964005B2 (en) 2001-06-08 2005-11-08 Broadcom Corporation System and method for interleaving data in a communication device
US7127653B1 (en) 2001-07-05 2006-10-24 Pmc-Sierra, Inc. Apparatus and method for efficient data transport using transparent framing procedure
US7047437B2 (en) 2001-12-12 2006-05-16 Hewlett-Packard Development Company, L.P. Method and system for detecting dropped micro-packets
US7032159B2 (en) 2002-02-28 2006-04-18 Texas Instruments Incorporated Error correction code parameter selection in a communication system
US7970279B2 (en) 2002-11-05 2011-06-28 Lightfleet Corporation N-way serial-channel interconnect
US7272310B2 (en) 2003-06-24 2007-09-18 Intel Corporation Generic multi-protocol label switching (GMPLS)-based label space architecture for optical switched networks
US20050063701A1 (en) 2003-09-23 2005-03-24 Shlomo Ovadia Method and system to recover resources in the event of data burst loss within WDM-based optical-switched networks
US7428669B2 (en) 2003-12-07 2008-09-23 Adaptive Spectrum And Signal Alignment, Inc. Adaptive FEC codeword management
JP4349114B2 (ja) 2003-12-10 2009-10-21 ソニー株式会社 送信装置および方法、受信装置および方法、記録媒体、並びにプログラム
US20050172091A1 (en) 2004-01-29 2005-08-04 Rotithor Hemant G. Method and an apparatus for interleaving read data return in a packetized interconnect to memory
US7418644B2 (en) 2004-03-01 2008-08-26 Hewlett-Packard Development Company, L.P. System for error correction coding and decoding
US8078935B2 (en) 2004-10-26 2011-12-13 Agency For Science, Technology And Research Method and system for encoding and decoding information with modulation constraints and error control
CN101027862B (zh) 2004-10-29 2011-06-08 美国博通公司 对通信流量分级的多信道通信
JP4711660B2 (ja) 2004-11-10 2011-06-29 日本ビクター株式会社 記録装置および記録媒体
US7423561B2 (en) 2005-09-06 2008-09-09 Mediateck Inc. Modulation methods and systems
TWI346848B (en) 2006-08-08 2011-08-11 Siemens Industry Inc Devices, systems, and methods for assigning a plc module address
US8463962B2 (en) * 2006-08-18 2013-06-11 Nxp B.V. MAC and PHY interface arrangement
KR100808664B1 (ko) 2006-12-08 2008-03-07 한국전자통신연구원 패리티 검사행렬 저장 방법 및 이를 이용한 블록 저밀도패리티 검사 부호화 방법 및 장치
EP2103026B1 (en) 2006-12-21 2014-02-26 Thomson Licensing A method to support forward error correction for real-time audio and video data over internet protocol networks
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
JP5219699B2 (ja) 2007-08-30 2013-06-26 パナソニック株式会社 符号化装置及び復号装置
US8787153B2 (en) 2008-02-10 2014-07-22 Cisco Technology, Inc. Forward error correction based data recovery with path diversity
KR101398212B1 (ko) 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
US7995696B1 (en) 2008-08-07 2011-08-09 Integrated Device Technology, Inc. System and method for deskewing data transmitted through data lanes
US8102779B2 (en) 2008-10-31 2012-01-24 Howard University System and method of detecting and locating intermittent electrical faults in electrical systems
US8023530B1 (en) * 2009-01-07 2011-09-20 L-3 Communications Corp. Physical layer quality of service for wireless communications
JP5365234B2 (ja) 2009-02-13 2013-12-11 株式会社明電舎 端末装置間のトークン異常検出/回復方式
US8307265B2 (en) 2009-03-09 2012-11-06 Intel Corporation Interconnection techniques
US8732536B2 (en) 2009-08-18 2014-05-20 Mitsubishi Electric Corporation Communication system and communication apparatus state determining method
TWI402684B (zh) 2009-10-22 2013-07-21 Via Tech Inc 通用串列匯流排裝置以及其校正方法
US9237105B2 (en) 2009-12-08 2016-01-12 Microsoft Technology Licensing, Llc Data communication with compensation for packet loss
TWI423007B (zh) 2009-12-31 2014-01-11 Via Tech Inc 串列匯流排裝置以及其時脈差補償方法
WO2011093499A1 (ja) 2010-02-01 2011-08-04 株式会社エヌ・ティ・ティ・ドコモ データ中継装置及びデータ中継方法
US8839078B2 (en) 2010-03-05 2014-09-16 Samsung Electronics Co., Ltd. Application layer FEC framework for WiGig
EP2580703A4 (en) 2010-06-11 2013-11-27 Freescale Semiconductor Inc METHOD OF PROTECTING DATA STORED IN A MEMORY ELEMENT AND INTEGRATED CIRCUIT DEVICE THEREOF
JP2012199724A (ja) 2011-03-19 2012-10-18 Fujitsu Ltd データ送信装置、データ受信装置、データ送受信装置及びデータ送受信装置の制御方法
US8400728B2 (en) 2011-05-23 2013-03-19 Spectra Logic Corp. Efficient moves via repository
JP5348263B2 (ja) 2012-02-29 2013-11-20 富士通株式会社 データ伝送装置、データ伝送システムおよびデータ伝送方法
US8862967B2 (en) 2012-03-15 2014-10-14 Sandisk Technologies Inc. Statistical distribution based variable-bit error correction coding
US9229897B2 (en) 2012-06-29 2016-01-05 Intel Corporation Embedded control channel for high speed serial interconnect
US9479196B2 (en) 2012-10-22 2016-10-25 Intel Corporation High performance interconnect link layer
KR101700545B1 (ko) 2012-10-22 2017-01-26 인텔 코포레이션 고성능 인터커넥트 코히어런스 프로토콜
US9280507B2 (en) 2012-10-22 2016-03-08 Intel Corporation High performance interconnect physical layer
US9311268B1 (en) 2012-10-25 2016-04-12 Qlogic, Corporation Method and system for communication with peripheral devices
US9037943B2 (en) 2012-10-26 2015-05-19 Intel Corporation Identification of non-volatile memory die for use in remedial action
US9300602B2 (en) 2012-11-02 2016-03-29 Qualcomm Incorporated Method, device, and apparatus for error detection and correction in wireless communications
US10621040B2 (en) 2012-11-30 2020-04-14 Hewlett Packard Enterprise Development Lp Memory controllers to form symbols based on bursts
US9396152B2 (en) 2013-03-15 2016-07-19 Intel Corporation Device, system and method for communication with heterogenous physical layers
US9344219B2 (en) 2013-06-25 2016-05-17 Intel Corporation Increasing communication safety by preventing false packet acceptance in high-speed links
US9306863B2 (en) 2013-12-06 2016-04-05 Intel Corporation Link transfer, bit error detection and link retry using flit bundles asynchronous to link fabric packets
BR112016012057B1 (pt) 2013-12-26 2021-12-28 Intel Corporation Progressos de retemporizador de interconexão
WO2015099730A1 (en) 2013-12-26 2015-07-02 Intel Corporation Sharing memory and i/o services between nodes
US20170163286A1 (en) 2013-12-26 2017-06-08 Intel Corporation Pci express enhancements
US9628382B2 (en) 2014-02-05 2017-04-18 Intel Corporation Reliable transport of ethernet packet data with wire-speed and packet data rate match
JP6260360B2 (ja) 2014-03-07 2018-01-17 富士通株式会社 光伝送装置および光伝送システム
US9733847B2 (en) 2014-06-02 2017-08-15 Micron Technology, Inc. Systems and methods for transmitting packets in a scalable memory system protocol
US9971730B2 (en) * 2014-06-16 2018-05-15 Qualcomm Incorporated Link layer to physical layer (PHY) serial interface
US9552253B2 (en) 2014-09-24 2017-01-24 Intel Corporation Probabilistic flit error checking
US20160099795A1 (en) 2014-10-02 2016-04-07 Kent C. Lusted Technologies for exchanging host loss and forward error correction capabilities on a 25g ethernet link
US9921768B2 (en) 2014-12-18 2018-03-20 Intel Corporation Low power entry in a shared memory link
US9910809B2 (en) 2014-12-19 2018-03-06 Intel Corporation High performance interconnect link state transitions
US9632862B2 (en) 2014-12-20 2017-04-25 Intel Corporation Error handling in transactional buffered memory
US9740646B2 (en) 2014-12-20 2017-08-22 Intel Corporation Early identification in transactional buffered memory
US9552269B2 (en) 2014-12-23 2017-01-24 Intel Corporation Test logic for a serial interconnect
US9779053B2 (en) 2014-12-23 2017-10-03 Intel Corporation Physical interface for a serial interconnect
US9780969B2 (en) 2014-12-23 2017-10-03 Intel Corporation Transferring data between elements of a cable communication device
US10505850B2 (en) 2015-02-24 2019-12-10 Qualcomm Incorporated Efficient policy enforcement using network tokens for services—user-plane approach
US20160261375A1 (en) 2015-03-04 2016-09-08 Qualcomm Incorporated Packet format and coding method for serial data transmission
US9720838B2 (en) 2015-03-27 2017-08-01 Intel Corporation Shared buffered memory routing
US9639276B2 (en) 2015-03-27 2017-05-02 Intel Corporation Implied directory state updates
US9619396B2 (en) 2015-03-27 2017-04-11 Intel Corporation Two level memory full line writes
US20160283303A1 (en) 2015-03-27 2016-09-29 Intel Corporation Reliability, availability, and serviceability in multi-node systems with disaggregated memory
US9940287B2 (en) 2015-03-27 2018-04-10 Intel Corporation Pooled memory address translation
US9858234B2 (en) 2015-07-17 2018-01-02 Parade Technologies, Ltd. System transparent retimer
US20170026976A1 (en) 2015-07-20 2017-01-26 Qualcomm Incorporated Flexible coding schemes
US9660987B2 (en) 2015-07-30 2017-05-23 Oracle International Corporation Storage isolation using I/O authentication
US20190372903A1 (en) 2018-06-04 2019-12-05 Lightfleet Corporation Priority-based arbitration for parallel multicast routing with self-directed data packets
US10097203B2 (en) 2015-11-12 2018-10-09 Nvidia Corporation Lane-striped computation of packet CRC to maintain burst error properties
US10372647B2 (en) 2015-12-22 2019-08-06 Intel Corporation Exascale fabric time synchronization
US10210040B2 (en) 2016-01-28 2019-02-19 Nxp Usa, Inc. Multi-dimensional parity checker (MDPC) systems and related methods for external memories
US20170222684A1 (en) 2016-02-01 2017-08-03 Qualcomm Incorporated Unidirectional clock signaling in a high-speed serial link
US20170270062A1 (en) 2016-03-21 2017-09-21 Intel Corporation In-band retimer register access
US10114790B2 (en) 2016-05-17 2018-10-30 Microsemi Solutions (U.S.), Inc. Port mirroring for peripheral component interconnect express devices
US11144691B2 (en) 2016-06-02 2021-10-12 Siemens Industry Software Inc. Virtual Ethernet mutable port group transactor
US10411980B2 (en) 2016-09-20 2019-09-10 Intel Corporation Proactive path quality reporting in packet transmission
US10152446B2 (en) 2016-10-01 2018-12-11 Intel Corporation Link-physical layer interface adapter
US10931329B2 (en) 2016-12-29 2021-02-23 Intel Corporation High speed interconnect with channel extension
US10050688B2 (en) 2017-01-16 2018-08-14 At&T Intellectual Property I, L.P. Single codeword, multi-layer serial interference cancellation (SIC) for spatial multiplexing
US10784986B2 (en) 2017-02-28 2020-09-22 Intel Corporation Forward error correction mechanism for peripheral component interconnect-express (PCI-e)
US10250436B2 (en) 2017-03-01 2019-04-02 Intel Corporation Applying framing rules for a high speed data link
US11461527B2 (en) 2018-02-02 2022-10-04 Micron Technology, Inc. Interface for data communication between chiplets or other integrated circuits on an interposer
US10606790B2 (en) 2018-04-16 2020-03-31 Intel Corporation Precoding mechanism in PCI-express
US10771189B2 (en) 2018-12-18 2020-09-08 Intel Corporation Forward error correction mechanism for data transmission across multi-lane links
US11637657B2 (en) 2019-02-15 2023-04-25 Intel Corporation Low-latency forward error correction for high-speed serial links
US11249837B2 (en) 2019-03-01 2022-02-15 Intel Corporation Flit-based parallel-forward error correction and parity
US10997111B2 (en) 2019-03-01 2021-05-04 Intel Corporation Flit-based packetization
US10776302B2 (en) 2019-04-02 2020-09-15 Intel Corporation Virtualized link states of multiple protocol layer package interconnects
US11296994B2 (en) 2019-05-13 2022-04-05 Intel Corporation Ordered sets for high-speed interconnects
US11444829B2 (en) 2019-09-09 2022-09-13 Intel Corporation Link layer communication by multiple link layer encodings for computer buses

Also Published As

Publication number Publication date
JP2021087216A (ja) 2021-06-03
US11740958B2 (en) 2023-08-29
EP3829090A1 (en) 2021-06-02
US20240028449A1 (en) 2024-01-25
TW202134872A (zh) 2021-09-16
CN112860610A (zh) 2021-05-28
US20200226018A1 (en) 2020-07-16

Similar Documents

Publication Publication Date Title
BR102020019435A2 (pt) suporte multiprotocolo em camada física comum
US10771189B2 (en) Forward error correction mechanism for data transmission across multi-lane links
US11397701B2 (en) Retimer mechanisms for in-band link management
US11637657B2 (en) Low-latency forward error correction for high-speed serial links
US11595318B2 (en) Ordered sets for high-speed interconnects
US20210050941A1 (en) Characterizing and margining multi-voltage signal encoding for interconnects
US11886312B2 (en) Characterizing error correlation based on error logging for computer buses
JP6251806B2 (ja) 装置、方法、プログラム、システム、およびコンピュータ可読ストレージ媒体
BR102020019433A2 (pt) estados de largura de enlace parcial para enlaces de múltiplas raias
US20210089418A1 (en) In-system validation of interconnects by error injection and measurement
BR112016012057B1 (pt) Progressos de retemporizador de interconexão
EP3706008B1 (en) Partial link width states for multilane links
US20210013999A1 (en) Latency-Optimized Mechanisms for Handling Errors or Mis-Routed Packets for Computer Buses
US20200327041A1 (en) Closed chassis debugging through tunneling
JP2018049658A (ja) 装置、方法、およびシステム

Legal Events

Date Code Title Description
B03A Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette]