BR112016012048B1 - Aparelho, método e sistema para comunicação computorizada - Google Patents

Aparelho, método e sistema para comunicação computorizada Download PDF

Info

Publication number
BR112016012048B1
BR112016012048B1 BR112016012048-5A BR112016012048A BR112016012048B1 BR 112016012048 B1 BR112016012048 B1 BR 112016012048B1 BR 112016012048 A BR112016012048 A BR 112016012048A BR 112016012048 B1 BR112016012048 B1 BR 112016012048B1
Authority
BR
Brazil
Prior art keywords
data
link
parity
track
parity information
Prior art date
Application number
BR112016012048-5A
Other languages
English (en)
Other versions
BR112016012048A2 (pt
Inventor
Debendra Das Sharma
Kai Xiao
Md. Mohiuddin Mazumder
Subas Bastola
Zuoguo Wu
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 BR112016012048A2 publication Critical patent/BR112016012048A2/pt
Publication of BR112016012048B1 publication Critical patent/BR112016012048B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • 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/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • 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/4265Bus transfer protocol, e.g. handshake; Synchronisation on a point to point 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
    • 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
    • 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

Abstract

APARELHO, MÉTODO E SISTEMA PARA COMUNICAÇÃO COMPUTORIZADA Uma identificação é feita de que uma ligação está para sair de um estado ativo, a ligação compreendendo uma pluralidade de pistas. A informação de paridade é mantida para as pistas com base nos dados enviados anteriormente na ligação, e uma indicação da informação de paridade é enviada antes da saída do estado ativo

Description

CAMPO DA INVENÇÃO
[0001] Essa divulgação se refere ao sistema de computação, e em particular (mas não exclusivamente) a interconexões ponto-a-ponto.
HISTÓRICO
[0002] Avanços no processamento de semicondutores e concepção de lógica têm permitido um aumento na quantidade de lógica que pode estar presente em os dispositivos de circuitos integrados. Como um corolário, configurações de sistemas de computador têm evoluído de um único ou múltiplos circuitos integrados em um sistema com múltiplos núcleos, múltiplos segmentos de hardware e múltiplos processadores lógicos presentes em circuitos integrados individuais, bem como outras interfaces integradas dentro desses processadores. Um processador ou circuito integrado compreende, geralmente, um único retículo de processador físico, em que o retículo do processador pode incluir qualquer número de núcleos, segmentos de hardware, processadores lógicos, interfaces, memórias, hubs controladores, etc.
[0003] Como um resultado da maior capacidade para ajustar mais poder de processamento em pacotes menores, os dispositivos de computação mais pequenos têm aumentado em popularidade. Smartphones, tablets, notebooks ultrafinos e outros equipamentos de usuário têm crescido exponencialmente. No entanto, esses dispositivos menores são dependentes de servidores, tanto para o armazenamento de dados como para o processamento complexo que excede o fator de forma. Consequentemente, a demanda no mercado de computação de alto desempenho (ou seja, o espaço do servidor) também aumentou. Por exemplo, em servidores modernos, há normalmente não apenas um único processador com múltiplos núcleos, mas também múltiplos processadores físicos (também referido como tomadas múltiplas) para aumentar o poder de computação. Mas, como a capacidade de processamento aumenta junto com o número de dispositivos em um sistema de computação, a comunicação entre tomadas e outros dispositivos se torna mais crítica.
[0004] Na verdade, as interconexões têm crescido desde barramentos mais tradicionais multiponto que essencialmente tratavam comunicações elétricas até arquiteturas de interconexão completas que facilitam a comunicação rápida. Infelizmente, a demanda por processadores futuros para consumir em demanda correspondente a taxas ainda mais elevadas é colocada sobre as capacidades das arquiteturas de interconexão existentes.
BREVE DESCRIÇÃO DOS DESENHOS
[0005] A Fig. 1 ilustra uma forma de realização de um sistema de computação incluindo uma arquitetura de interconexão.
[0006] A FIG. 2 ilustra uma forma de realização de uma arquitetura de interconexão, incluindo uma pilha de camadas.
[0007] A FIG. 3 ilustra uma forma de realização de um pedido ou pacote a ser gerado ou recebido dentro de uma arquitetura de interconexão.
[0008] A FIG. 4 ilustra uma forma de realização de um par transmissor e receptor para uma arquitetura de interconexão.
[0009] A FIG. 5 ilustra uma forma de realização de um exemplo de canal de interconexão de dois conectores.
[0010] A FIG. 6 é um diagrama de blocos simplificado de uma seção transversal de uma estrutura de interconexão incluindo vias.
[0011] A FIG. 7 é uma representação de uma seção transversal de uma interconexão empregando furação inversa de referenciadores de via.
[0012] A FIG. 8 é um diagrama de blocos representando uma estrutura de capacidade, incluindo um registro de estado de erro de pista.
[0013] A FIG. 9 é um diagrama simplificado ilustrando fluxo de dados em uma interconexão multipistas.
[0014] A FIG. 10 mostra representações de exemplo enquadrando símbolos de código.
[0015] A FIG. 11 é um diagrama simplificado ilustrando fluxo de dados, incluindo um conjunto ordenado skip (SKP) de exemplo.
[0016] A FIG. 12 é um diagrama de blocos simplificado ilustrando os erros de pista que podem ser relatados em um registro de erro.
[0017] As FIGS. 13A-13D são fluxogramas ilustrando técnicas de exemplo para relatar erros de pista de uma ligação.
[0018] A Fig. 14 ilustra uma forma de realização de um diagrama de blocos para um sistema de computação incluindo um processador de vários núcleos.
[0019] A Fig. 15 ilustra uma outra forma de realização de um diagrama de blocos para um sistema de computação incluindo um processador de vários núcleos.
[0020] A Fig. 16 ilustra uma forma de realização de um diagrama de blocos de um processador.
[0021] A Fig. 17 ilustra uma outra forma de realização de um diagrama de blocos para um sistema de computação incluindo um processador.
[0022] A Fig. 18 ilustra uma forma de realização de um bloco para um sistema de computação incluindo múltiplos processadores.
[0023] A Fig. 19 ilustra um sistema de exemplo implementado como sistema no chip (SoC).
[0024] Números de referência e denominações semelhantes nos vários desenhos indicam elementos semelhantes.
DESCRIÇÃO DETALHADA
[0025] Em a descrição seguinte, numerosos detalhes específicos são apresentados, tais como exemplos de tipos específicos de processadores e configurações do sistema, estruturas de hardware específicas, detalhes arquitetónicos específicos e micro, configurações de registro específicas, tipos de instruções específicos, componentes do sistema específicos, medições/alturas específicas, estágios e transação de gasoduto de processador específicos, etc. a fim de proporcionar um entendimento completo da presente invenção. Será evidente, contudo, para um perito na técnica que esses detalhes específicos não necessitam de ser empregues para praticar a presente invenção. Em outros casos, os componentes ou métodos bem conhecidos, tais como arquiteturas de processador específicas e alternativas, circuitos/código lógicos específicos para algoritmos descritos, código de firmware específico, transação de interconexão específica, configurações lógicas específicas, técnicas e materiais de estruturas específicos, implementações do compilador específicas, expressão específica de algoritmos em código, técnicas/lógica de desligamento e de canais específicas e outros detalhes operacionais específicos de sistema de computador não têm sido descritos em pormenor para evitar desnecessariamente obscurecer a presente invenção.
[0026] Embora as seguintes formas de realização possam ser descritas com referência à conservação de energia e da eficiência energética em circuitos integrados específicos, tais como em plataformas ou microprocessadores de computação, outras formas de realização são aplicáveis a outros tipos de dispositivos de circuitos integrados e de lógica. Técnicas e ensinamentos similares das formas de realização aqui descritas podem ser aplicados a outros tipos de circuitos ou dispositivos semicondutores que podem também beneficiar de uma melhor eficiência energética e da conservação de energia. Por exemplo, as formas de realização descritas não estão limitadas a sistemas de computadores de desktop ou Ultrabooks™. E também podem ser utilizadas em outros dispositivos, tais como dispositivos de bolso, tablets, outros notebooks finos, dispositivos de sistemas em um chip (SOC) e aplicações integradas. Alguns exemplos de dispositivos de bolso incluem telefones celulares, dispositivos de protocolo da Internet, câmaras digitais, assistentes digitais pessoais (PDAs) e computadores de bolso. Aplicações integradas incluem, geralmente, um microcontrolador, um processador de sinal digital (DSP), um sistema em um chip, computadores de rede (NetPC), descodificadores, hubs de rede, comutadores de rede de longa distância (WAN) ou qualquer outro sistema que pode executar as funções e operações ensinadas abaixo. Além disso, os aparelhos, métodos e sistemas aqui descritos não estão limitados a dispositivos de computação física, mas podem também estar relacionados com otimizações de software para a conservação e a eficiência energéticas. Como se tornará facilmente evidente na descrição que se segue, as formas de realização de métodos, aparelhos e sistemas aqui descritos (se em referência a hardware, firmware, software ou uma combinação destes) são vitais para uma futura “tecnologia verde” equilibrada com considerações de desempenho.
[0027] Como os sistemas de computação estão avançando, os componentes dos mesmos estão se tornando mais complexos. Como resultado, a arquitetura de interconexão para acoplar e comunicar entre os componentes também está aumentando em complexidade para garantir que os requisitos de largura de banda são atendidos para um funcionamento ótimo dos componentes. Além disso, diferentes segmentos de mercado exigem diferentes aspetos de arquiteturas de interconexão para atender às necessidades do mercado. Por exemplo, servidores exigem maior desempenho, enquanto o ecossistema móvel às vezes é capaz de sacrificar o desempenho global pela economia de energia. No entanto, é um propósito singular da maioria das estruturas fornecer o mais alto desempenho possível com a máxima economia de energia. A seguir, um número de interconexões é discutido, o que iria potencialmente ter um benefício de aspetos da invenção aqui descrita.
[0028] Uma arquitetura de estrutura de interconexão inclui a arquitetura Peripheral Component Interconnect (PCI) Express (PCIe). A meta principal da PCIe é permitir a componentes e dispositivos de diferentes fornecedores interoperarem em uma arquitetura aberta, abrangendo vários segmentos de mercado; Clientes (Desktops e Móvel), Servidores (Standard e Enterprise) e dispositivos Integrados e de Comunicação. A PCI Express é uma interconexão de elevado desempenho, de propósito geral I/O definida para uma ampla variedade de futuras plataformas de computação e comunicação. Alguns atributos da PCI, como o seu modelo de uso, a arquitetura de carga-armazenagem e interfaces de software, têm sido mantidos através das suas revisões, enquanto anteriores implementações de barramento paralelo foram substituídas por uma interface altamente escalável, totalmente de série. As versões mais recentes da PCI Express tiram vantagem dos avanços em interconexões ponto-a-ponto, da tecnologia baseada em comutador e do protocolo em pacotes para oferecer novos níveis de desempenho e características. O gerenciamento de energia, a Qualidade de Serviço (QoS), o suporte Hot- Plug/Hot-Swap, a integridade de dados e a Manipulação de Erro estão entre alguns dos recursos avançados suportados pela PCI Express.
[0029] Com referência à FIG. 1, uma forma de realização de uma estrutura composta por Ligações ponto- a-ponto que interconectam um conjunto de componentes é ilustrada. O sistema 100 inclui processador 105 e a memória de sistema 110 acoplada ao hub controlador 115. O processador 105 inclui qualquer elemento de processamento, tal como um microprocessador, um host processador, um processador integrado, um coprocessador, ou outro processador. O processador 105 é acoplado ao hub controlador 115 através de barramento de extremidade dianteira (FSB) 106. Em uma forma de realização, o FSB 106 é uma interconexão em série ponto- a-ponto, como descrito abaixo. Em outra forma de realização, a ligação 106 inclui uma arquitetura de interconexão diferencial, em série, que é compatível com diferentes padrões de interconexão.
[0030] A memória de sistema 110 inclui um qualquer dispositivo de memória, tal 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 100. A memória do sistema 110 é acoplada ao hub controlador 115 através da interface de memória 116. Exemplos de uma interface de memória incluem uma interface de memória de velocidade de dados dupla (DDR), uma interface de memória DDR de canal duplo e uma interface de memória RAM dinâmica (DRAM).
[0031] Em uma forma de realização, o hub controlador 115 é um hub raiz, complexo de raiz ou controlador de raiz em uma hierarquia de interconexão Peripheral Component Interconnect Express (PCIe ou PCIE). Exemplos de hub controlador 115 incluem um chipset, um hub controlador de memória (MCH), um northbridge, um southbridge de hub controlador de interconexão (ICH) e um controlador/hub de raiz. Muitas vezes, o termo chipset se refere a dois hubs controladores fisicamente separados, ou seja, um hub controlador de memória (MCH) acoplado a um hub controlador de interconexão (ICH). Note-se que os atuais sistemas incluem muitas vezes o MCH integrado com o processador 105, enquanto o controlador 115 é para se comunicar com os dispositivos I/O, de um modo semelhante como descrito abaixo. Em algumas formas de realização, o roteamento entre pares é opcionalmente suportado através do complexo de raiz 115.
[0032] Aqui, o hub controlador 115 é acoplado ao comutador/ponte 120 através de uma ligação em série 119. Módulos de entrada/saída 117 e 121, que também podem ser referidos como interfaces/portas 117 e 121, incluem/implementam uma pilha de protocolos em camadas para fornecer comunicação entre o hub controlador 115 e o comutador 120. Em uma forma de realização, vários dispositivos são capazes de serem acoplados ao comutador 120.
[0033] O comutador/ponte 120 faz o roteamento de pacotes/mensagens a partir do dispositivo 125 a montante, ou seja, para cima para uma hierarquia no sentido de um complexo de raiz, para o hub controlador 115 e a jusante, ou seja, para baixo para uma hierarquia afastada de um controlador de raiz, desde o processador 105 ou memória de sistema 110 para o dispositivo 125. O comutador 120, em uma forma de realização, é referido como um conjunto lógico de múltiplos dispositivos de ponte PCI para PCI virtuais. O dispositivo 125 inclui qualquer dispositivo ou componente interno ou externo a ser acoplado a um sistema eletrônico, tal como um dispositivo I/O, um Controlador de Interface de Rede (NIC), uma placa de extensão, um processador de áudio, um processador de rede, um disco rígido, um dispositivo de armazenamento, um CD/DVD ROM, um monitor, uma impressora, um mouse, um teclado, um roteador, um dispositivo de armazenamento portátil, um dispositivo Firewire, um dispositivo Universal Serial Bus (USB), um scanner e outros dispositivos de entrada/saída. Muitas vezes, na linguagem vernacular PCIe, tal como o dispositivo, é referido como uma extremidade. Embora não especificamente mostrado, o dispositivo 125 pode incluir um PCIe para ponte PCI/PCI-X para apoiar o legado ou outros dispositivos de versão PCI. Os dispositivos de extremidade em PCIe são geralmente classificadas como legado, PCIe, ou extremidades integradas de complexo de raiz.
[0034] O acelerador gráfico 130 é também acoplado ao hub controlador 115 através da ligação em série 132. Em uma forma de realização, um acelerador de gráficos 130 é acoplado a um MCH, o qual é acoplado a um ICH. O comutador 120, e, consequentemente, o dispositivo I/O 125, é então acoplado ao ICH. Módulos I/O 131 e 118 são também para implementar uma pilha de protocolos em camadas para se comunicar entre acelerador de gráficos 130 e hub controlador 115. Semelhante à discussão MCH acima, um controlador de gráficos ou o acelerador de gráficos 130 em si pode ser integrado no processador 105.
[0035] Voltando à FIG. 2, uma forma de realização de uma pilha de protocolo em camadas é ilustrada. A pilha de protocolo em camadas 200 inclui qualquer forma de uma pilha de comunicação em camadas, tal como uma pilha Quick Path Interconnect (QPI), uma pilha PCIE, uma pilha de interconexão de computação de elevado desempenho da próxima geração, ou outra pilha em camadas. Embora a discussão imediatamente abaixo em referência às Figs. 1-4 seja em relação a uma pilha PCIe, os mesmos conceitos podem ser aplicados a outras pilhas de interconexão. Em uma forma de realização, a pilha de protocolo 200 é uma pilha de protocolo PCIe incluindo camada de transação 205, camada de ligação 210 e uma camada física 220. Uma interface, tais como interfaces 117, 118, 121, 122, 126 e 131 na FIG. 1, pode ser representada como pilha de protocolo de comunicação 200. A representação como uma pilha de protocolo de comunicação pode também ser referida como um módulo ou interface de implementação/incluindo uma pilha de protocolo.
[0036] A PCI Express utiliza pacotes para comunicar informações entre os componentes. Os pacotes são formados na camada de Transação 205 e Camada de Ligação de Dados 210 para transportar a informação do componente de transmissão para o componente de recepção. Como os pacotes transmitidos fluem através das outras camadas, eles são estendidos com informação adicional necessária para lidar com pacotes em essas camadas. No lado de recepção o processo inverso ocorre e os pacotes são transformados a partir da sua representação de Camada Física 220 para a representação de Camada de Ligação de Dados 210 e finalmente (para Pacotes de Camada de Transação) para a forma que pode ser processada por a camada de Transação 205 do dispositivo receptor. Camada de Transação
[0037] Em uma forma de realização, a camada de transação 205 é para fornecer uma interface entre o núcleo de processamento de um dispositivo e a arquitetura de interconexão, tal como a camada de ligação de dados 210 e a camada física 220. A este respeito, a responsabilidade primária da camada de transação 205 é a montagem e desmontagem de pacotes (ou seja, pacotes de camada de transação, ou TLP). A camada de transação 205 geralmente gerencia o controle de fluxo de base de crédito para TLP. A PCIe implementa as transações divididas, ou seja, transações com pedido e resposta separados pelo tempo, permitindo a uma ligação realizar outros tipos de tráfego, enquanto o dispositivo de destino reúne dados para a resposta.
[0038] Além disso, a PCIe utiliza controle de fluxo baseado em crédito. Nesse esquema, um dispositivo anuncia um montante inicial de crédito para cada um dos tampões de recepção na Camada de Transação 205. Um dispositivo externo na extremidade oposta da ligação, tal como o hub controlador 115 na Fig. 1, 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. Ao receber uma resposta um montante de crédito é restaurado. Uma vantagem de um regime 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.
[0039] Em uma forma de realização, quatro espaços de endereços 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. Transações de espaço de memória incluem um ou mais dos pedidos de leitura e pedidos de escrita para transferir dados para/desde um local de memória mapeada. Em uma forma de realização, as transações de espaço de memória são capazes de usar dois diferentes formatos de endereço, por exemplo, um formato de endereço curto, como um endereço de 32 bits, ou um formato de endereço longo, como o endereço de 64 bits. Transações de espaço de configuração são utilizadas para acessar o espaço de configuração dos dispositivos PCIe. Transações para o espaço de configuração incluem pedidos de leitura e pedidos de escrita. Transações de espaço de mensagem (ou, simplesmente mensagens) são definidas para apoiar a comunicação em banda entre os agentes PCIe.
[0040] Portanto, em uma forma de realização, a camada de transação 205 monta o cabeçalho/carga útil de pacote 206. Formato para cabeçalhos/cargas úteis de pacote atuais pode ser encontrado na especificação PCIe no site da especificação PCIe.
[0041] Se referindo rapidamente à FIG. 3, uma forma de realização de um descritor de transação PCIe é ilustrada. Em uma forma de realização, o descritor de transação 300 é um mecanismo para o transporte de informação de transação. A esse respeito, o descritor de transação 300 suporta a identificação de transações em um sistema. Outros usos potenciais incluem modificações de rastreamento de pedidos de transação padrão e associação de transação com canais.
[0042] O descritor de transação 300 inclui campo de identificador global 302, campo de atributos 304 e campo identificador de canal 306. Em o exemplo ilustrado, o campo identificador global 302 é descrito compreendendo campo identificador de transação local 308 e campo de identificador de fonte 310. Em uma forma de realização, o identificador de transação global 302 é único para todas as solicitações pendentes.
[0043] De acordo com uma aplicação, o campo identificador de transação local 308 é um campo gerado por um agente requerente, e é única para todos os pedidos pendentes que requerem uma conclusão desse agente requerente. Além disso, nesse exemplo, o identificador de fonte 310 identifica exclusivamente o agente requerente dentro de uma hierarquia PCIe. Assim, juntamente com a ID de fonte 310, o campo identificador de transação local 308 fornece a identificação global de uma transação dentro de um domínio de hierarquia.
[0044] Campos de atributos 304 especificam as características e as relações da transação. A esse respeito, o campo de atributos 304 é potencialmente usado para fornecer informações adicionais que permitem a modificação do tratamento padrão de transações. Em uma forma de realização, o campo de atributos 304 inclui o campo de prioridade 312, o campo reservado 314, o campo ordenador 316 e o campo não vasculhamento 318. Aqui, o subcampo de prioridade 312 pode ser modificado por um iniciador para atribuir uma prioridade para a transação. Campo de atributo reservado 314 é deixado reservado para o futuro, ou o uso definido pelo fornecedor. Modelos de uso possível usando atributos prioritários ou de segurança podem ser implementados utilizando o campo de atributo reservado.
[0045] Nesse exemplo, o campo de atributo ordenador 316 é usado para fornecer informações opcionais transmitindo o tipo de ordenação que pode modificar as regras de ordenação padrão. De acordo com um exemplo de implementação, um atributo ordenador de “0” denota regras ordenadoras padrão são para aplicar, em que um atributo ordenador de “1” significa ordenador relaxado, no qual a escrita pode passar a escrita na mesma direção, e conclusões de leitura podem passar a escrita na mesma direção. Campo de atributo de interceção 318 é utilizado para determinar se as transações são vasculhadas. Como mostrado, o Campo ID de canal 306 identifica um canal a que uma transação está associada.
Camada de Ligação
[0046] A camada de ligação 210, também referida como camada de ligação de dados 210, atua como uma fase intermédia entre a camada de transação 205 e a camada física 220. Em uma forma de realização, a responsabilidade da camada de ligação de dados 210 está fornecendo um mecanismo confiável para troca de Pacotes de Camada de Transação (TLP) entre dois componentes de uma ligação. Um lado da Camada de Ligação de Dados 210 aceita TLP montados pela Camada de Transação 205, aplica o identificador de sequência de pacote 211, ou seja, um número de identificação ou número do pacote, calcula e aplica um código de detecção de erros, ou seja, CRC 212, e envia os TLP modificados à Camada Física 220 para a transmissão através de um físico para um dispositivo externo.
Camada Física
[0047] Em uma forma de realização, a camada física 220 inclui sub-bloco lógico 221 e sub-bloco elétrico 222, para transmitir um pacote fisicamente a um dispositivo externo. Aqui, o sub-bloco lógico 221 é responsável pelas funções “digitais” da Camada Física 221. A esse respeito, o sub-bloco lógico inclui uma seção de transmissão para preparar informações de saída para transmissão pelo sub-bloco físico 222, e uma seção de recepção para identificar e preparar as informações recebidas antes de as passar para a Camada de Ligação 210.
[0048] O bloco físico 222 inclui um transmissor e um receptor. O transmissor é fornecido pela sub-bloco lógico 221 com símbolos, que o transmissor serializa e transmite para um dispositivo externo. O receptor é fornecido com símbolos serializados de um dispositivo externo e transforma os sinais recebidos em um fluxo de bits. O fluxo de bits é desserializado e fornecido ao sub-bloco lógico 221. Em uma forma de realização, um código de transmissão 8b/10b é utilizado, onde os símbolos de dez bits são transmitidos/recebidos. Aqui, símbolos especiais são usados para enquadrar um pacote com frames 223. Além disso, em um exemplo, o receptor também proporciona um relógio de símbolo recuperado a partir do fluxo em série de entrada.
[0049] Tal como acima referido, embora a camada de transação 205, a camada de ligação 210 e a camada física 220 sejam discutidas em referência a uma forma de realização específica de uma pilha de protocolos PCIe, uma pilha de protocolos de camadas não é tão limitada. Na verdade, qualquer protocolo em camadas pode ser incluído/implementado. Como um exemplo, uma porta/interface que é representada como um protocolo em camadas inclui: (1) uma primeira camada para montar pacotes, ou seja, uma camada de transação; uma segunda camada para sequenciar pacotes, ou seja, a camada de ligação; e uma terceira camada para transmitir os pacotes, ou seja, uma camada física. Como um exemplo específico, um protocolo em camadas de interface padrão comum (CSI) é utilizado.
[0050] Nos referindo a seguir à FIG. 4, uma forma de realização de uma estrutura ponto-a-ponto em série PCIe é ilustrada. Embora uma forma de realização de uma estrutura ponto-a-ponto em série PCIe seja ilustrada, uma ligação em série ponto-a-ponto não é tão limitada, uma vez que inclui qualquer via de transmissão para a transmissão de dados em série. Na forma de realização mostrada, uma ligação de base PCIe inclui dois pares de sinais, de baixa tensão, acionados diferencialmente: um par de transmissão 406/411 e um par de recepção 412/407. Por conseguinte, o dispositivo 405 inclui uma lógica de transmissão 406 para transmitir dados para o dispositivo 410 e lógica de recepção 407 para receber dados a partir do dispositivo 410. Em outras palavras, dois caminhos de transmissão, isto é, caminhos 416 e 417, e dois caminhos de recepção, isto é, caminhos 418 e 419, são incluídos em uma ligação PCIe.
[0051] Um caminho de transmissão se refere a qualquer caminho para a transmissão de dados, tal como uma linha de transmissão, uma linha de cobre, uma linha ótica, um canal de comunicação sem fios, uma ligação de comunicação de infravermelhos, ou outro caminho de comunicação. Uma conexão entre dois dispositivos, tal como o dispositivo 405 e o dispositivo 410, é referida como uma ligação, tal como a ligação 415. A ligação pode suportar uma pista - cada pista representando um conjunto de pares de sinais diferenciais (um par de transmissão, um par de recepção). Para escalar a largura de banda, uma ligação pode agregar várias pistas indicadas por xN, onde N é qualquer largura de Ligação suportada, tal como 1, 2, 4, 8, 12, 16, 32, 64, ou mais larga.
[0052] Um par diferencial se refere a dois caminhos de transmissão, tal como as linhas 416 e 417, para transmitir sinais diferenciais. Como um exemplo, quando a linha 416 passa de um nível de baixa tensão a um nível de alta tensão, ou seja, um flanco ascendente, a linha 417 prossegue de um alto nível lógico para um baixo nível lógico, ou seja, um flanco descendente. Sinais diferenciais potencialmente demonstram melhores características elétricas, tais como uma melhor integridade do sinal, ou seja, acoplamento cruzado, aumento/diminuição de tensão, toques, etc. Isto permite uma melhor janela de tempo, o que permite frequências de transmissão mais rápidas.
Canal de Alta Velocidade
[0053] A revisão da especificação PCIe I/O é a PCIe revisão 4.0 (ou PCIe 4.0). Com uma taxa de bits de 16GT/s, a PCIe 4.0 pretende duplicar a largura de banda do desempenho de interconexão sobre a especificação PCIe 3.0, preservando ao mesmo tempo a compatibilidade com software e interfaces mecânicas. Aumentar a largura de banda de desempenho ao longo de gerações anteriores da PCIe pode fornecer dimensionamento de desempenho consistente com o aumento da demanda por banda larga a partir de uma variedade de desenvolvimento de aplicações e ao mesmo tempo com o objetivo de fornecer baixo custo, baixa potência e perturbações mínimas ao nível da plataforma. Um dos principais fatores na ampla adoção da arquitetura PCIe é a sua sensibilidade à capacidade de fabricação de alto volume e materiais tais como placas do circuito de menor custo, conectores de baixo custo, e assim por diante.
[0054] A taxa de bits de 16GT/s visa proporcionar uma troca ideal entre performance, capacidade de fabricação, custo, energia e compatibilidade. Análises de viabilidade foram realizadas para recomendar características para dispositivos e canais que suportam a taxa de bits de 16GT/s para PCIe 4.0. A análise PCISIG cobriu várias topologias. Por exemplo, as análises determinaram que 16GT/s em cobre, que será o dobro da largura de banda sobre a especificação PCIe 3.0, é tecnicamente viável em aproximadamente níveis de potência PCIe 3.0. Aqui, uma interconexão de 16GT/s é potencialmente fabricada em tecnologia de processo de silício geral e implantada com materiais e infraestrutura existentes de baixo custo, mantendo a compatibilidade com as gerações anteriores da arquitetura PCIe.
[0055] Maior taxa de dados de série I/O (por exemplo, 16GT/s sob a PCIe 4.0) seria dissipar o poder significativo, e aumentar a complexidade do circuito que potencialmente leva ao aumento da utilização de área de silício (Si). Essas considerações têm ainda mais o potencial, para limitar a integração de PCIe 4.0 (e outras tais arquiteturas de interconexão de alta velocidade) em CPU e os sistemas que utilizam contagens de pista maiores. Em alguns exemplos de implementações, por exemplo, são colocadas limitações no comprimento de interconexão e o número de conectores que são empregados dentro de uma arquitetura de alta velocidade, tal como PCIe 4.0. Por exemplo, essa limitação é definida no nível de especificação. Em um exemplo, o comprimento do canal de interconexão é limitado a um (1) conector e 30,48 cm ou menos (doze (12) ou menos polegadas).
[0056] Colocar limitações nos canais de interconexão pode limitar a sua aplicação a alguns sistemas. Por exemplo, as aplicações de interconexão no servidor, as interconexões da plataforma às vezes podem ser de até 30,48 cm (vinte (20) polegadas) ou mais e têm dois conectores. Era uma arquitetura para restringir canais de interconexão para um máximo de 30,48 cm (12”) de comprimento e um único conector, um chip repetidor separado ou outro dispositivo adicional seria incluído a fim de combinar dois dos canais de 30,48 cm (12”) e acomodar as distâncias entre os dispositivos no sistema de servidor, entre potencialmente outros exemplos.
[0057] Em algumas implementações, uma ligação de interconexão pode ser fornecida que é configurada para cumprir com PCIe 4.0 e outras interconexões, permitindo a um canal de dois conectores maior do que ou igual a 30,48 cm (vinte polegadas) de comprimento ao mesmo tempo suportando velocidades de comunicação de dados 16GT/s. Por exemplo, o circuito e a interconexão podem ser co- otimizados de tal modo que os repetidores e outros dispositivos podem ser omissos de maiores execuções de canal de interconexão. Isso pode ajudar a reduzir custos de fabrico, reduzir a latência I/O e estender a aplicabilidade de maiores arquiteturas de velocidade de largura de banda para aplicações adicionais. Por exemplo, um chip repetidor pode incluir um transmissor, um receptor, a geração de relógio (por exemplo, circuito fechado de bloqueio de fase (PLL)), recuperação de relógio e as funções lógicas associadas. Esses componentes podem utilizar a área de bordo valiosa. Além disso, para uma interconexão PCIe 4.0x16, cada repetidor pode dissipar energia extra e introduzir um custo adicional no fabrico de um sistema, entre outras desvantagens potenciais. Por exemplo, repetidores também podem introduzir latência adicional de I/O.
[0058] A Fig. 5 mostra um exemplo de configuração do canal de dois conectores. Por exemplo, o canal 500 pode incluir várias seções, tais como seções na tomada (por exemplo, de uma CPU), placa mãe, placa de adição, placa riser, entre outros elementos sobre os quais a ligação de canal pode se estender para conectar dois dispositivos (por exemplo, 505, 510) em um sistema. As seções dos canais cada uma pode ter um comprimento respetivo, neste exemplo, com comprimentos L1 = 2,54 cm (1”), L2 = 26,67 cm (10,5”), L3 = 1,27 cm (0,5”), L4 = 10,16 cm (4”), L5 = 7,62 cm (3”) e L6 = 2,54 cm (1”), totalizando 50,8 cm (20”) para o comprimento total do canal 500. O canal pode ser ligado a cada dispositivo 505, 510 usando um respetivo conector 515, 520 (em cada pacote).
[0059] Usando técnicas tradicionais, uma configuração tal como a ilustrada na FIG. 5 pode render uma margem negativa através da ligação. Em um exemplo, uma interconexão de dois conectores de 50,8 cm (20”) suportando uma taxa de bits de 16GT/s (por exemplo, 500) pode ser prevista que minimiza o efeito do referenciador do conector, minimiza o efeito da tomada SPU, melhora a alavancagem, avança na perda baixa de placa de computador pessoal (PCB) e proporciona um aumento nos ganhos do receptor no chip, entre potencialmente outras características, para realizar ganhos positivos através da ligação.
[0060] Um conector pode incluir uma ou mais vias, que são usadas para fazer ligações elétricas entre as camadas. Vias podem ser utilizadas, por exemplo, para o transporte de sinais ou de energia entre as camadas de uma placa de circuito ou componente. Em sistemas de alta velocidade, a parte dos restos da via em um conector, chips, ou placa, que é a parte não utilizada dentro de uma ligação elétrica ponto-a-ponto utilizando a via. Voltando à FIG. 6, uma representação simplificada 600 de uma seção transversal de uma placa de circuito ou outro componente é mostrada. O componente pode incluir uma ou mais vias referenciadoras 605, 610. Uma via pode fazer ligações elétricas entre as camadas em uma placa de circuito impresso, tais como através da tecnologia de furos metalizados (PTH). Por exemplo, uma via pode ligar os pinos dos conectores às camadas de sinal interno (por exemplo, traços). Por exemplo, no exemplo da FIG. 6, uma parte de uma ligação pode ser implementada usando uma parte (por exemplo, 615, 620) de uma via PTH para ligar uma parte de ligação a um outro (por exemplo, um traço (por exemplo, 625) que corre ao longo de uma camada 630 do componente a um outro componente, uma outra via, etc., na ligação (ou canal)). A parte restante (por exemplo, 635) da via pode ser considerada o referenciador. Em conexões de alta velocidade, utilizando uma via, um referenciador de via 635 pode causar efeitos de ressonância (por exemplo, nulos de frequência de ressonância) que resultam em denegrição do sinal para um canal (por exemplo, pista). Por conseguinte, em algumas implementações, referenciadores de via podem ser furados inversamente, tal como mostrado em 650, para atenuar contra esses efeitos. A furação inversa pode remover a parte referenciadora de uma via que é a fonte destes efeitos negativos eletromagnéticos. Em alguns casos, a furação inversa pode ser implementada como um processo de perfuração pós-fabricação em que o orifício furado inversamente é de maior diâmetro do que o furo metalizado (PTH) original.
[0061] Referenciadores de vias nos dois conectores empregados em um canal de 50,8 cm (20”) 16GT/s podem ser removidos ou minimizados, por exemplo, através de furação inversa, vias de retorno e outras soluções. No caso da furação inversa, o tipo de conector pode ser selecionado com base no tipo de conector sendo um bom candidato para furação inversa. Por exemplo, alguns conectores podem ser mecanicamente comprometidos e falhar se foram furados inversamente. Outros tipos de conector podem ser mais apropriados, tais como conectores de montagem à superfície.
[0062] Para além de melhorar a qualidade elétrica de conectores através da furação inversa, a qualidade elétrica das tomadas CPU pode também ser melhorada para permitir canais de 50,8 cm (20”) 16GT/s na tomada. Por exemplo, cada pino de uma tomada de CPU ou outro dispositivo correspondente a uma pista de canal de 50,8 cm (20”) 16GT/s que é ligado e encaminhado através de uma placa utilizando uma via, podem ser furado inversamente. O comprimento do referenciador da tomada desses canais mais longos, de dois conectores, de alta velocidade também pode ser reduzido através da reserva de camadas mais próximas aos pinos para os traços utilizados pelo canal. Isso pode permitir ao comprimento (da via) do referenciador da tomada ser delimitado pelo encaminhamento dessas pistas através dessas camadas da placa.
[0063] Minimizar o efeito da tomada de CPU pode envolver projetar o esquema de distribuição e fuga de pinos de uma placa de tal forma que as pistas de canais de 50,8 cm (20”) de 16GT/s têm prioridade de esquema. Por exemplo, os canais podem ser concebidos para ser encaminhados em camadas de tal modo que a furação inversa está disponível para cada pino da CPU ligado ao canal de 50,8 cm (20”) 16GT/s. Em alternativa (ou adicionalmente), o encaminhamento pode ser concebido de tal modo que os canais de 50,8 cm (20”) 16GT/s utilizam camadas que permitem ao comprimento dos referenciadores de tomada ser restringido.
[0064] A FIG. 7 é uma representação simplificada de uma seção transversal de uma placa através da qual dois dispositivos 705, 710, estão ligados através de uma ligação exemplo de dois conectores (tal como forma de representação que contém um canal de 50,8 cm (20”) 16GT/s). Em esse exemplo, as fugas de pinos dos dispositivos 705, 710 podem ser concebidas de tal modo que a furação inversa pode ser aplicada sem bloquear outros canais de fuga no campo de pinos. Por exemplo, os pinos interiores (por exemplo, 715) podem ser concebidos para projetar a fuga em camadas acima das fugas de pinos exteriores (por exemplo, 720) encaminhados em camadas inferiores da placa. Além disso, os pinos podem ser concebidos para ser colocados de tal modo que qualquer pino cujo referenciador de via é para ser perfurado para fora (por exemplo, um pino de um canal 50,8 cm (20”) 16GT/s) não é posicionado adjacente a uma de via de energia, pois a furação inversa (por exemplo, 725a-f) corre o risco de perfurar os planos e formas de energia, resultando potencialmente em uma rede de distribuição de energia ineficiente. Além disso, os pinos de terra podem ser colocados com base nas perfurações que estão a resultar em planos de terra após a furação inversa, entre outras regras e exemplos.
[0065] As características adicionais podem ser incluídas em um canal de 50,8 cm (20”) de dois conectores para permitir taxas de bits que atendem ou excedem 16GT/s enquanto ainda realizando ganhos positivos através da ligação. Por exemplo, uma placa de PC de perda baixa pode ser realizada, tal como uma placa com perda de inserção diferencial de traço menor do que ou substancialmente igual a 0,48dB/2,54 cm (1 polegada) em 4GHz.
[0066] Além de mitigar contra os efeitos de referenciadores nos conectores e tomadas de um canal de 30,48 cm (12”) de dois conectores, e fornecer o canal utilizando uma placa de perda baixa, velocidades 16GT/s em um canal de pelo menos 30,48 cm (20”) podem ser realizadas, em alguns casos, por fornecer ainda o ganho adicional na extremidade dianteira do receptor e/ou de pico adicional no equalizador linear de tempo contínuo (CTLE). Em alguns exemplos, a extremidade dianteira do receptor pode incluir os circuitos analógicos combinados no trajeto de dados do sinal incluindo, por exemplo, CTLE, AGC (controlo automático de ganho), DFE (equalizador de feedback de decisão) e/ou de amostragem de dados (também chamada cortador), entre outros exemplos possíveis. Por exemplo, em uma implementação, a adição de um total de aproximadamente 6dB de ganho (por exemplo, acima da linha de base para PCIe 4.0) na extremidade dianteira do receptor e/ou CTLE pode auxiliar na realização de um canal de 50,8 cm (20”) 16GT/s. A realização de uma quantidade modesta de ganho (por exemplo, cerca de 6dB) pode ser alcançada com apenas um aumento modesto na complexidade de alimentação e circuito, por exemplo, através da adição de um único estágio de ganho, entre outros exemplos. Adicionalmente, em alguns sistemas, o ganho pode ser ajustável ou de outra forma configurado no canal. Por exemplo, o canal pode ser programável para aplicações onde as velocidades 16GT/s são utilizadas e o ganho pode ser desligado para aplicações que utilizam velocidades mais baixas, entre outros exemplos. Confiabilidade, Disponibilidade e Manutenção (RAS)
[0067] Em algumas implementações, uma arquitetura de interconexão, como PCIe, pode incluir melhorias para Confiabilidade, Disponibilidade e Manutenção (RAS) no sistema. Enquanto essa preocupação pode se aplicar em todos as taxas de dados, algumas arquiteturas podem aplicar esquemas de codificação particulares relacionados com maiores taxas de dados. Por exemplo, PCIe 4.0 (bem como a revisão da PCIe 3.0) emprega o esquema de codificação 128b/130b, por exemplo, para as taxas de dados superiores a 8 GT/s. Em o esquema 128b/130b, uma paridade por pista é fornecida por Conjunto Ordenado SKP (ou “skip”) (SKP OS) para identificar qual(is) pista(s) em uma ligação pode não ter conseguido realizar a análise preditiva e trabalhar com uma largura de ligação reduzida, se for o caso, entre outros exemplos. A pista de paridade pode ser uma ferramenta eficaz na identificação de erros em pistas específicas de uma ligação, no entanto, em alguns casos, quando a ligação é predominantemente inativa (por ex.: com códigos lógicos de enquadramento inativos (IDLs) na Ligação), uma exposição pode existir causando a capacidade de detecção fornecida através do bit de paridade a ser prejudicado, como erros no código de enquadramento (por exemplo, IDL) pode resultar em uma recuperação ligação que elimina as informações de paridade até aquele ponto. Ângulos mortos adicionais podem existir nos mecanismos de detecção de erro de arquiteturas tradicionais que podem causar erros subavaliados. Por exemplo, uma arquitetura de interconexão pode subvalorizar ou completamente falhar na detecção de pistas defeituosas relativamente a erros de código de enquadramento, entre outras deficiências.
[0068] Em algumas arquiteturas, um registro pode ser fornecido para identificar erros detectados ou previstos em uma ligação, bem como, em alguns casos, as pistas particulares em que os erros aparecem. Por exemplo, como mostrado na FIG. 8, a PCIe pode proporcionar um registro 805 de Lane Error Status (LES) em conexão com uma estrutura de capacidade, como a estrutura Secondary PCIe Extended Capability. Essa estrutura de capacidade 800 pode incluir um Secondary PCIe Extended Capability Header 810, Controle de Ligação 3, Registro 815 e Registro de Controle de Equalização 820, além do registro LES 805. Em algumas implementações, o registro LES pode incluir um vetor de 32 bits, onde cada bit corresponde a uma pista na ligação, por exemplo, (identificado pelo número de pista) e indica se a pista detectou um erro. Um conjunto de erros é definido na PCIe, que pode resultar em relatar um evento de erro no registro LES. Por exemplo, como introduzido acima, a paridade de dados pode ser implementada através de um bit de paridade de dados incluídos em um OS SKP que indica se a paridade plana foi detectada para existir na carga útil de todos os blocos de dados transmitidos após lutar após o último OS SKP (ou Conjunto Ordenado de Arranque de Fluxo de Dados (SDS)), entre outros exemplos. A paridade de dados, mas pode ser calculada para cada pista de forma independente. Dispositivos transmissor e receptor calculam a paridade usando a mesma técnica e o receptor compara sua paridade calculada para cada pista com a paridade calculada pelo transmissor (como identificado pelo bit de paridade) para identificar possíveis erros. Por exemplo, se os valores calculados e recebidos não coincidem, o bit no registro LES (por exemplo, correspondente ao número da pista em que a incompatibilidade foi detectada) pode ser ajustado.
[0069] Como discutido acima, e como ilustrado na representação simplificada 900 da FIG. 9, os dados podem ser transmitidos em duas ou mais pistas de uma ligação. Por exemplo, como mostrado no exemplo da PCIe, a entidade de base de transmissão de dados pode ser um símbolo, tal como um símbolo implementado como um carater de dados de 8 bits. A carga útil de blocos de dados é um fluxo de símbolos definido como um fluxo de dados que pode incluir códigos de enquadramento, pacotes da camada de transação (TLP), pacotes da camada de ligação de dados (DLLP), etc. Cada símbolo do fluxo de dados pode ser colocado em uma única pista da ligação para transmissão, com o fluxo de símbolos distribuído entre todas as pistas da ligação e abrangendo limites de blocos. Além disso, em alguns casos, a camada física pode utilizar um código de bloco por pista. Cada bloco pode incluir um cabeçalho de sincronização de dois bits e a carga útil. Em a PCIe, duas codificações válidas de cabeçalho de sincronização são definidas: 10b e 01b, que definem o tipo de carga útil que o bloco contém. Por exemplo, um cabeçalho de sincronização 10b pode indicar um bloco de dados e um cabeçalho de sincronização 01b pode indicar um bloco de conjunto ordenado. Como exemplo, a FIG. 9 mostra a transmissão de um fluxo de dados em quatro pistas, as Pistas 0, 1, 2 e 3. Todas as pistas de uma ligação multipista transmitem blocos com o mesmo cabeçalho de sincronização, simultaneamente. A ordem de transmissão de bits pode começar com o cabeçalho de sincronização (representado como “H1H0”, colocada sobre a pista como “H0-H1”) seguido por um primeiro símbolo, representado como “S7 - S6 - S5 - S4 - S3 - S2 - S1 - S0”, colocado em uma pista começando com “S0” e terminando com “S7”.
[0070] A PCIe fornece uma opção para um receptor para relatar erros correspondentes a cabeçalhos de sincronização incompatíveis ou inválidos em um fluxo de dados para o registro de LES. Por exemplo, a identificação de que uma ou mais das pistas (por exemplo, durante as duas primeiras UI em um fluxo de dados) inclui um cabeçalho de sincronização com um valor inválido (por exemplo, 00b, 11b) pode ser identificado como um erro na pista que pode ser comunicado ao registro LES, entre outros exemplos.
[0071] No que se refere à FIG. 10, representações de exemplo de códigos de enquadramento 1005, 1010, 1015, 1020, 1025 são mostradas. Um código de enquadramento (ou “código”) pode ser um encapsulamento de dados de camada física que especifica ou implica o número de símbolos associado com o código e, desse modo, identifica a localização do próximo código de enquadramento. Um código de enquadramento de um fluxo de dados pode estar localizado no primeiro símbolo (Símbolo 0) da primeira pista (por exemplo, a Pista 0) do primeiro bloco de dados do fluxo de dados. Em um exemplo, a PCIe define cinco códigos de enquadramento, incluindo arranque do código TLP (STP) 1005, final do código de fluxo de dados (EDS) 1010, código ruim final (EDB) 1015, arranque de código DLLP (SDP) 1020 e código inativo lógico (IDL) 1025. Um código STP 1005 pode ter quatro (4) símbolos de comprimento e ser seguido por informação de camada de ligação de dados. Um exemplo de código EDS 1010 pode ter quatro (4) símbolos de comprimento e indicar que o próximo bloco será um bloco de conjunto ordenado. Um código EDB 1015 também pode ter quatro (4) símbolos de comprimento e confirmar que o TLP foi “ruim” e anulado. Um EDB pode sempre seguir os dados TLP. Além disso, um código SDP 1020 pode ser mais curto, em dois (2) símbolos de comprimento, e pode ser seguido por informação DLLP. Finalmente, nesse exemplo, um código IDL 1025 pode ser um único símbolo e transmitido quando não há TLP, DLLP ou outros códigos de enquadramento estão a ser transmitidos na ligação.
[0072] A FIG. 11 ilustra uma representação 1100, mostrando exemplos de dados enviados através de uma ligação exemplo x8 ilustrando características de um fluxo de dados definido de acordo com uma arquitetura de interconexão particular, tal como PCIe. Em esse exemplo, os dados podem incluir o envio de um conjunto ordenado SKP. O fluxo, nesse exemplo, pode começar com o envio de cabeçalhos de sincronização H1H0 = 10b, indicando um bloco de dados. Por conseguinte, um código de enquadramento STP pode ser enviado como o primeiro símbolo 0 nas Pistas 0-3 para indicar o arranque de um fluxo TLP. Uma verificação de redundância cíclica da ligação (LCRC) pode seguir dados TLP, ainda seguida por um cabeçalho SDP indicando que os dados DLLP devem ser enviados (por exemplo, em Símbolos 3-4). A verificação cíclica de redundância (CRC) de dados pode também ser fornecida em ligação com os dados DLLP.
[0073] Em o exemplo da FIG. 11, códigos inativos lógicos (IDL) são enviados uma vez que nenhum dado será transmitido na ligação para uma série de UI. Um código EDS pode então ser enviado para indicar uma transição para dados de conjunto ordenado nas pistas. Por exemplo, outro cabeçalho de sincronização (por exemplo, em 1105) pode ser enviado codificado como “01b” para indicar que os seguintes blocos de dados serão blocos de dados de conjunto ordenado. Nesse exemplo em particular, o conjunto ordenado que é enviado é um conjunto ordenado SKP (OS). Como notado acima, em algumas implementações, um SKP OS pode incluir um bit de paridade que indica que a condição de paridade para cada pista (por exemplo, as Pistas 0-7) da ligação. Um SKP OS pode ter ainda um esquema definido identificável para o receptor. Por exemplo, no caso de codificação 128b/130b na PCIe, um SKP OS pode incluir uma base de dezasseis símbolos. Os agrupamentos de quatro símbolos SKP podem ser adicionados ou removidos por uma porta, de acordo com um SKP OS pode ser de 8, 12, 16, 20 ou 24 símbolos, etc. Além disso, um símbolo SKP_END pode ser fornecido nas pistas, como ilustrado na FIG. 11, para indicar a localização da extremidade do SKP OS e localização do próximo cabeçalho de sincronização do bloco a transmitir nas pistas, entre outros exemplos.
[0074] Em alguns exemplos de implementações, a lógica pode ser fornecido para detectar erros de pista adicionais em uma arquitetura de interconexão. Software em um sistema pode controlar um registro, tal como o registro LES, para controlar os erros numa base de pista-a-pista ao longo de um período de tempo. Um erro de pista única pode não indicar que existe um problema com um erro. No entanto, como os erros ocorrem com uma frequência estatisticamente significativa em uma ou mais faixas em particular de uma ligação, o software de sistema pode determinar que existe um potencial problema no que diz respeito às pistas particulares. Além disso, em algumas implementações, podem ser tomadas medidas corretivas para evitar a transmissão de, pelo menos, alguns dados do sistema em uma pista propensa a erros, como por reconfiguração de uma ligação, gerando um bilhete para uma inspeção mais próxima da ligação, entre outros exemplos. Alguns erros podem ser difíceis de detectar, em uma base de pista-a-pista. Enquanto alguns mecanismos foram fornecidos para detectar e relatar uma parte de erros em uma ligação (por exemplo, com base na paridade ou cabeçalhos de sincronização incorretos), outras características de arquitetura e regras podem ser aproveitadas para identificar ainda outras instâncias de regras específicas de pista. Esses erros também podem ser relatados a um registro para consideração juntamente com o relatório de erros de pista tradicional para a construção de uma imagem mais completa da integridade das pistas individuais de uma ligação, entre outros exemplos e considerações.
[0075] Em um primeiro exemplo, tal como no exemplo da PCIe descrito acima, se uma pista recebe um bloco de conjunto ordenado com um código EDS inválido (desfasamento, incorreção ou de outra forma inesperado) imediatamente anterior, um erro pode ser presumido em a pista onde o código EDS inválido foi detectado. Além disso, o erro relativo ao código EDS inválido na pista pode ser reportado a um registro de erro, tal como configurando um bit correspondente em um registro PCIe LES.
[0076] Em outro exemplo, um formato predeterminado para um determinado conjunto ordenado pode ser aproveitado para identificar erros de pista adicionais. Por exemplo, um SO SKP pode incluir símbolos SKP bem definidos até símbolos SKP_END serem transmitidos para identificar o fim do conjunto ordenado. Se um símbolo SKP inválido ou errado é identificado em uma pista particular dentro dos esperados símbolos SKP do conjunto ordenado (e antes para os símbolos SKP_END), a identificação do símbolo errado SKP pode ser usada para despoletar a comunicação de um erro para a pista particular dentro de um registro de erro, como um registro LES. Além disso, o tempo definido de símbolos OS particulares também pode ser usado para identificar que um símbolo inesperado foi recebido em uma pista. Por exemplo, continuando com o exemplo de conjuntos ordenados SKP, tal como o número de símbolos em um SKP OS é para ser um múltiplo de quatro, não receber o SKP_END no símbolo 8, 12, 16, 20, ou 24 em uma ou mais pistas particulares da ligação pode causar um bit correspondente no registro de erro a ser definido para as pistas particulares, entre potencialmente outros exemplos.
[0077] Uma variedade de erros de enquadramento pode ocorrer e pode ser detectada, em algumas implementações. Por exemplo, quando o processamento de símbolos que se prevê venham a ser um código de enquadramento, recebendo um símbolo ou uma sequência de símbolos que não corresponde à definição de um código de enquadramento pode ser um erro de enquadramento. Além disso, alguns códigos de enquadramento podem ser definidos para seguir outros tipos de dados, e a chegada (ou atraso) inesperada de um código de enquadramento particular, pode ser um erro de enquadramento. Como apenas um exemplo, pode ser especificado que um código EDB a ser recebido imediatamente após um TLP, e receber um código EDB em qualquer outro tempo (que imediatamente após um TLP) pode despoletar um erro de enquadramento, entre muitos outros exemplos, tais como erros de enquadramento definidos na especificação da PCIe. Enquanto erros de enquadramento podem ser identificados dentro de um sistema, em algumas implementações, erros de enquadramento não são determinados em uma base pista-a- pista ou mapeados para uma pista específica de uma ligação. Na verdade, em alguns casos, um erro de enquadramento pode causar a recuperação da ligação a ser iniciada, complicando ainda mais a detecção de erros de pista quando a recuperação da ligação apaga um cálculo e relatório de paridade (por exemplo, através de um bit de paridade enviado em um SKP OS), entre outros exemplos.
[0078] Em algumas implementações, a lógica incluída no PHY lógico (por exemplo, em um dispositivo receptor) pode ainda identificar uma pista com falhas a partir de um código de enquadramento. Em um primeiro exemplo, os símbolos de um código de enquadramento podem ser especificados (tal como mostrado nos exemplos da Fig. 10) e a detecção de um erro em um dos símbolos que se afastem do valor do símbolo esperado pode ser identificada, bem como a pista em que o código de símbolo erróneo é identificado. Por exemplo, o primeiro símbolo de um código de enquadramento pode ser identificado e se o primeiro símbolo não corresponder ao primeiro símbolo de qualquer um de um conjunto de códigos de enquadramento definidos para o PHY, um erro pode ser acionado. Este erro pode ser registrado, por exemplo, em um registro LES. Em o exemplo de códigos de enquadramento PCIe, se o primeiro símbolo de um código de enquadramento recebido não corresponder ao primeiro símbolo definido para PCIe IDL, SDP, STP, EDB ou EDS, um erro pode ser determinado para a pista em que o primeiro símbolo de código de enquadramento aparece e o erro pode ser registrado no registro de erros de pista para a pista identificada.
[0079] Em segundo lugar, em outro exemplo, códigos de enquadramento IDL, enquanto apenas um símbolo de comprimento pode ser especificado para ser transmitido em todas as pistas de uma ligação quando não está a transmitir um TLP, DLLP, ou outro código de enquadramento. Por conseguinte, quando um primeiro IDL aparece em uma pista de uma ligação com quatro ou mais pistas, pode se esperar que os exemplos de IDL também aparecerão nas Pistas n + 1, n + 2 e n + 3 (onde a primeira Pista n (n módulo 4 = 0)). Depois de transmitir um código IDL, o primeiro símbolo do próximo código STP ou SDP pode ser especificado para ser transmitido na Pista 0 de um futuro tempo de símbolo. Por conseguinte, dado essas restrições sobre a utilização e a utilização prevista para códigos IDL, se um IDL não é repetido conforme o esperado, ou o primeiro IDL aparece em uma pista incorreta, a pista sobre a qual o IDL não repetido ou de outra forma símbolo erróneo apareceu pode ser identificada, e também registrada em um registro de erro, tal como o registro LES, como um erro para a pista específica.
[0080] Em ainda outro exemplo, um código EDB pode ser definido para ter um determinado comprimento, tais como quatro símbolos de comprimento em PCIe. Consequentemente, um erro de enquadramento pode resultar da identificação de um primeiro símbolo EDB mas depois não identificar um símbolo EDB adicional nos símbolos imediatamente subsequentes incluído no comprimento definido. Por exemplo, na PCIe, onde um código de enquadramento EDB é detectado na Pista n (n módulo 4 = 0), imediatamente a seguir a um TLP, mas também não detectado em qualquer uma das Pistas n + 1, n + 2 ou n + 3, um erro pode ser relatado a um registro de erro para qualquer pista (por exemplo, a pista n + 1, n + 2 ou n + 3), onde um símbolo EDB válido esperado não aparece. Além disso, um primeiro símbolo de um código EDB pode ser definido para ser colocado imediatamente a seguir a um fluxo TLP, o que significa que o código de enquadramento anterior, um STP, foi o último código de enquadramento a aparecer na ligação. Consequentemente, um erro na Pista n pode ser identificado e relatado para um registro de erro quando um primeiro símbolo de um código EDB aparece na Pista n, mas o mais recente código de enquadramento anterior foi algo diferente de um código STP, entre outros exemplos.
[0081] Semelhante ao exemplo de um erro de enquadramento de código EDB, erros de enquadramento também podem se basear em desvios do comprimento, formato e colocação de outros símbolos de enquadramento. Por exemplo, em um outro exemplo, onde um primeiro símbolo de um SDP é detectado em a Pista n, consistente com as regras de colocação para códigos SDP válido (por exemplo, tráfego DLLP), mas a Pista n + 1 não corresponde ao segundo símbolo esperado do código SDP, a lógica PHY lógica pode identificar um erro na Pista n + 1 e registrar o erro num registro de erro.
[0082] A FIG. 12 é um diagrama de blocos simplificado ilustrando a detecção e registro de erros de pista (por exemplo, 1205, 1210, 1215, 1220, 1225, 1230, 1235, 1240) em um exemplo de registro de erro 1250, como um registro PCIe LES, correspondente à ligação. Por exemplo, além de reportar erros de pista de cabeçalho de sincronização 1205 e erros de bits de paridade 1210, erros adicionais que podem ser detectados incluem erros de pista de conjunto ordenado, como um bloco OS sem erro de código EDS prévio 1215 e um erro SKP OS 1220 (tal como descrito nos exemplos acima). Mais erros podem ser relatados, incluindo, por exemplo, erros de código de enquadramento de pista, como primeiros erros de código de enquadramento 1225, IDL erros de código de enquadramento 1230 (por exemplo, referentes a repetir corretamente o IDL após um IDL inicial em uma Pista n), erros de códigos de enquadramento EDB 1235 (por exemplo, envolvendo erros no posicionamento de símbolos de código EDB, tal como descrito, por exemplo, na discussão anterior), e erros de códigos de enquadramento SDP 1240 (por exemplo, envolvendo um erro detectado em um segundo símbolo de um código SDP), entre outros exemplos potencialmente alavancando regras definidas para conjuntos ordenados, blocos de dados e código de enquadramento dentro de uma arquitetura.
[0083] Como mencionado acima, em alguns casos, os erros ou outros eventos forçando uma recuperação de ligação pode prejudicar mecanismos de detecção de erro de pista, tais como determinações de paridade. Como observado acima, o dispositivo de recepção e transmissão pode determinar a paridade para um fluxo de dados ou outro fluxo e a informação de paridade determinada pelo transmissor pode ser comunicada ao receptor por comparação com a informação de paridade recebida com a informação de paridade correspondente (para a pista), tal como determinado pelo receptor para o mesmo fluxo de dados. Informações de paridade podem ser enviadas periodicamente. Por exemplo, um SO SKP pode ser enviado, que inclui um ou mais bits de paridade em símbolos OS SKP que indicam a paridade determinada para cada pista pelo transmissor. Em alguns sistemas tradicionais, no entanto, as recuperações de ligação ou outros eventos podem resultar em informação de paridade a ser apagada e/ou reiniciada antes de a informação de paridade previamente determinada ser comunicada ao receptor. Assim, em tais casos, os erros determinados para uma pista particular, com base nas informações de paridade também podem ser perdidos e não são comunicados, prejudicando a precisão dos relatórios de erro para a pista particular.
[0084] Em uma forma de realização, a informação de paridade pode ser preservada, forçando uma recuperação de ligação a ser precedida automaticamente por um SKP SO, ou outro conjunto de dados, que inclui relatório de informação de paridade de dados para cada pista na ligação a ser recuperada. Por exemplo, o protocolo de recuperação de pode ser redefinido de modo a que um SKP OS (incluindo os bits de paridade) é enviado em resposta a um erro de enquadramento ou outro evento desencadeante de uma recuperação de ligação. O SKP OS pode assim transportar a informação de paridade determinada pelo transmissor até ao momento em que a ligação de recuperação foi despoletada, permitindo ao receptor identificar potenciais erros de pista com base na informação de paridade.
[0085] Em um exemplo, a informação de paridade pode ser enviada pré-recuperação através do envio de um SKP OS antes de uma ligação deixar um estado ativo (por exemplo, L0) para entrar na recuperação. Por exemplo, cada transmissor pode enviar um SO SKP (por exemplo, de acordo com intervalos predefinidos, tais como um intervalo máximo entre SKP SO) seguido de um bloco de dados adicional com um código EDS antes de entrar na Recuperação. Isso pode garantir que o receptor recebe a paridade para os anteriores blocos de dados que recebeu, incluindo um ou mais blocos de dados que podem ter causado um erro de enquadramento. O receptor pode ainda registrar o erro no LES apropriado se a comparação de bits de paridade indicar um erro.
[0086] Em um outro exemplo, em vez de despejar prematuramente informação de paridade antes de uma recuperação ou outro evento (por exemplo, em uma tentativa de se certificar que a informação de paridade é comunicada antes de ser perdida), a informação de paridade, tal como a paridade SKP SO, pode ser alargada para cobrir a paridade entre os fluxos de dados enquanto a ligação permanece ativa (por exemplo, “LinkUp = 1b” em PCIe). Além disso, a informação de paridade pode também ser mantida persistentemente para cada pista de uma ligação de tal modo que a informação de paridade persiste através de um evento de recuperação. Onde a recuperação de ligação tradicional causaria a informação de paridade para um bloco de dados anterior (por exemplo, interrompida pela recuperação) a ser perdida, persistentemente armazenar a informação de paridade pode permitir à paridade ser preservadas através da recuperação e comunicada após a recuperação (por exemplo, no primeiro SKP OS após a recuperação). Além disso, em alguns casos, a informação de paridade para os novos blocos de dados enviada após a recuperação da ligação (e antes do próximo SKP OS) pode também ser determinada, e em alguns casos, adicionada à informação de paridade pré-recuperação preservada, e esta informação de paridade combinada pode ser comunicada, por exemplo, no próximo SKP SO, entre outros exemplos.
[0087] Deve ser entendido que os exemplos acima são exemplos não limitativos e fornecidos para fins de ilustrar certos princípios e características únicas. Além disso, alguns sistemas podem incluir várias combinações de duas ou mais das características e componentes descritos acima. Como um exemplo, um sistema pode incluir combinações das características de detecção de erro de exemplo descritas acima, tais como a funcionalidade de detecção de erro de pista acima descrita.
[0088] Voltando às Figs. 13A-13D, fluxogramas de exemplo 1300a-d são mostrados ilustrando técnicas de exemplo para detectar erros em pistas de uma ligação. Por exemplo, na FIG. 13A, os dados podem ser recebidos 1305 em uma ligação incluindo uma pluralidade de pistas. Os dados podem incluir símbolos e os símbolos podem ser monitorizados para determinar 1310 se um ou mais dos símbolos é um símbolo errado. Um símbolo errado pode incluir símbolos em um código de enquadramento (por exemplo, EDB, EDS, STP, IDL, SDP, etc.), conjunto ordenado (por exemplo, SKP OS, etc.) ou outra sequência definida que tem um valor incorreto, estão em uma ordem incorreta ou inesperada, transmitido em uma pista incorreta ou inesperada, não pertence a uma sequência definida particular, entre outros exemplos. A pista em que o símbolo errado foi enviado pode ser identificada 1315 e um erro de pista para a pista identificada pode ser relatado 1320, por exemplo, em um registro de erro de pista, com base no símbolo errado, entre outros exemplos.
[0089] Voltando à FIG. 13B, os dados podem ser transmitidos 1325 em uma ligação incluindo pistas múltiplas. Informação de paridade pode ser mantida 1330 para cada pista na ligação. Em resposta à identificação 1335 de que a ligação está para sair de um estado ativo (tal como em relação a uma recuperação da ligação), uma indicação da informação de paridade pode ser enviada 1340 antes da saída do estado de ligação ativa. Em um exemplo, a indicação da informação de paridade pode ser incluída em bits de paridade de um conjunto ordenado, como um conjunto ordenado PCIe SKP, enviada para um destinatário. A indicação da informação de paridade pode ser utilizada (por exemplo, pelo receptor da informação particular) para comparar a informação de paridade com a informação de paridade recebida pelo receptor. Desfasamentos na informação de paridade podem ser identificados como evidência de um erro de pista envolvendo uma pista correspondente à informação de paridade incompatível.
[0090] Em o exemplo da FIG. 13C, os dados podem ser transmitidos 1345 nas pistas de uma ligação e a informação de paridade pode ser determinada 1350 para cada uma das pistas com base nos dados transmitidos identificados em cada pista. A recuperação da ligação pode ocorrer e a informação de paridade pode ser mantida 1355 através da recuperação. Após a recuperação, uma indicação da informação de paridade para cada pista pode ser comunicada 1370 e essa indicação pode ser com base na informação de paridade mantida através da recuperação de ligação. Opcionalmente, os dados adicionais podem ser transmitidos 1360 na ligação a seguir à recuperação da ligação e a informação de paridade pode ser determinada para cada pista com base nesses dados pós- recuperação. A informação de paridade para cada pista pode ser atualizada 1365 com base em ambos os dados pré e pós-recuperação em cada pista e a indicação da informação de paridade que é comunicada 1370 pode indicar essa informação de paridade combinada.
[0091] Em correspondência com o exemplo da FIG. 13C, na FIG. 13D, primeiros dados podem ser recebidos 1375 em uma ligação e primeira informação de paridade pode ser determinada para cada pista 1380 com base nos dados recebidos nas pistas. Essa informação de paridade pode ser mantida 1385 através de uma recuperação da ligação após o recebimento dos primeiros dados. Segundos dados de paridade podem ser recebidos 1398 seguindo a recuperação da ligação, tal como identificado em bits de paridade de um conjunto ordenado SKP recebido. Esses segundos dados de paridade podem ser comparados com a informação de paridade mantida através de (e além) da recuperação de ligação. Em alguns casos, a informação de paridade mantida pode ser atualizada 1394 para contar para a informação de paridade determinada para as pistas com base em segundos dados recebidos 1390 nas pistas após a recuperação de ligação (por exemplo, compatível com a atualização da informação de paridade pelo correspondente transmissor com base na transmissão desses dados pós-recuperação), entre outros exemplos.
[0092] Deve se notar que, enquanto a maior parte dos princípios e os exemplos acima referidos estão descritos no contexto de PCIe e revisões específicas da especificação PCIe, os princípios, soluções e características aqui descritos podem ser igualmente aplicáveis a outros protocolos e sistemas. Por exemplo, erros de pista análogos podem ser detectados em outras ligações que utilizam outros protocolos baseados em símbolos, fluxos de dados e códigos análogos, bem como regras especificadas para o uso, colocação e formatação dessas estruturas dentro dos dados transmitidos sobre essas outras ligações. Além disso, as estruturas e mecanismos alternativos (por exemplo, ao lado de um registro PCIe LES ou SKP SO) podem ser usados para fornecer a detecção de erros de pista e reportar a funcionalidade dentro de um sistema. Além disso, as combinações das soluções acima podem ser aplicadas dentro de sistemas, incluindo combinações de aperfeiçoamentos lógicos e físicos de uma ligação e a sua lógica correspondente, tal como aqui descrito, entre outros exemplos.
[0093] Se note que os aparelhos, métodos e sistemas descritos acima podem ser implementados em qualquer dispositivo eletrônico ou sistema tal como acima mencionado. Como exemplos específicos, as figuras abaixo fornecem sistemas exemplares para a utilização da invenção como aqui descrito. Como os sistemas abaixo são descritos em mais detalhe, um certo número de diferentes interconexões é divulgado, descrito e revisto a partir da discussão acima. E, como é facilmente evidente, os avanços descritos acima podem ser aplicados a qualquer uma dessas interconexões, estruturas ou arquiteturas.
[0094] Com referência à Fig. 14, uma forma de realização de um diagrama de blocos para um sistema de computação, incluindo um processador multi-núcleos é descrita. O processador 1400 inclui qualquer processador ou dispositivo de processamento, tal como um microprocessador, um processador integrado, um processador de sinal digital (DSP), um processador de rede, um processador de bolso, um processador de aplicação, um coprocessador, um sistema em um chip (SOC) ou outro dispositivo para executar um código. O processador 1400, em uma forma de realização, inclui pelo menos um núcleo de dois núcleos 1401 e 1402, o qual pode incluir núcleos assimétricos ou núcleos simétricos (a forma de realização ilustrada). No entanto, o processador 1400 pode incluir qualquer número de elementos de processamento que podem ser simétricos ou assimétricos.
[0095] Em uma forma de realização, um elemento de processamento se refere ao hardware ou lógica para suportar uma linha de software. Exemplos de elementos de processamento de hardware incluem: uma unidade de linha, uma ranhura de linha, uma linha, uma unidade de processamento, um contexto, uma unidade de contexto, um processador lógico, uma linha de hardware, um núcleo e/ou qualquer outro elemento, o qual é capaz de manter um estado para um processador, tal como um estado de execução ou estado de arquitetura. Em outras palavras, um elemento de processamento, em uma forma de realização, se refere a qualquer hardware capaz de ser associado independentemente com código, tal como uma linha de software, sistema operativo, aplicação ou outro código. Um processador físico (ou tomada de processador) geralmente se refere a um circuito integrado, o que inclui, potencialmente, qualquer número de outros elementos de processamento, tais como linhas de núcleo ou de hardware.
[0096] Um núcleo frequentemente se refere à lógica localizada em um circuito integrado capaz de manter um estado de arquitetura independente, em que cada estado de arquitetura mantido independentemente está associado com, pelo menos, alguns recursos dedicados de execução. Em contraste com os núcleos, uma linha de hardware geralmente se refere a qualquer lógica localizada em um circuito integrado capaz de manter um estado de arquitetura independente, em que os estados de arquitetura mantidos independentes compartilham o acesso a recursos de execução. Como pode ser visto, quando certos recursos são compartilhados e outros são dedicados a um estado de arquitetura, a linha entre a nomenclatura de uma linha de hardware e o núcleo se sobrepõe. No entanto, muitas vezes, um núcleo e uma linha de hardware são vistos por um sistema operativo como processadores lógicos individuais, onde o sistema operativo é capaz de agendar individualmente operações em cada processador lógico.
[0097] O processador físico 1400, tal como ilustrado na Fig. 14, inclui o núcleo de dois núcleos 1401 e 1402. Aqui, os núcleos 1401 e 1402 são considerados núcleos simétricos, isto é, núcleos com as mesmas configurações, unidades funcionais e/ou lógica. Em outra forma de realização, o núcleo 1401 inclui um núcleo de processador fora de ordem, enquanto o núcleo 1402 inclui um núcleo de processador em ordem. No entanto, os núcleos 1401 e 1402 podem ser selecionados individualmente a partir de qualquer tipo de núcleo, tal como um núcleo nativo, um núcleo de software de gestão, um núcleo adaptado para executar uma nativa Instruction Set Architecture (ISA), um núcleo adaptado para executar uma translação de Instruction Set Architecture (ISA), um núcleo co-concebido, ou outro núcleo conhecido. Em um ambiente de núcleo heterogéneo (isto é, núcleos assimétricos), alguma forma de translação, tal como uma translação binária, pode ser utilizada para programar ou executar código em um ou ambos os núcleos. No entanto, para promover a discussão, as unidades funcionais ilustradas no núcleo 1401 são descritas em mais detalhe abaixo, em que as unidades no núcleo 1402 operam de um modo semelhante na forma de realização representada.
[0098] Como representado, o núcleo 1401 inclui duas linhas de hardware 1401a e 1401b, que também podem ser referidas como ranhuras de linha de hardware 1401a e 1401b. Portanto, as entidades de software, como um sistema operativo, em uma forma de realização potencialmente vista o processador 1400 como quatro processadores separados, ou seja, quatro processadores lógicos ou elementos de processamento capazes de executar quatro linhas de software simultaneamente. Como mencionado acima, uma primeira linha está associada com os registros de estado de arquitetura 1401a, uma segunda rosca está associado com os registros de estado de arquitetura 1401b, uma terceira linha pode ser associada com os registros de estado de arquitetura 1402a e uma quarta linha pode ser associada com os registros de estado de arquitetura 1402b. Aqui, cada um dos registros de estado de arquitetura (1401a, 1401b, 1402a e 1402b) pode ser referido como elementos de processamento, ranhuras de linha ou unidades de linha, como descrito acima. Como ilustrado, os registros de estado de arquitetura 1401a são replicados nos registros de estado de arquitetura 1401b, de modo que estados/contextos individuais de arquitetura são capazes de serem armazenados pelo processador lógico 1401a e o processador lógico 1401b. No núcleo 1401, outros recursos menores, como ponteiros de instrução e a lógica de renomeação no bloco alocador e renomeador 1430 podem também ser replicados para linhas 1401a e 1401b. Alguns recursos, como tampões de re-ordem na unidade de re- ordem/cancelamento 1435, ILTB 1420, tampões de carga/armazenamento e filas podem ser compartilhados através de particionamento. Outros recursos, como os registros de uso geral internos, registro(s) base de página-tabela, dados em cache de baixo nível e dados TLB 1415, unidade(s) de execução 1440 e partes da unidade fora de ordem 1435 são potencialmente totalmente compartilhados.
[0099] O processador 1400 muitas vezes inclui outros recursos, que podem ser plenamente compartilhados, compartilhados por meio de particionamento, ou dedicados por/para elementos de processamento. Na Fig. 14, uma forma de realização de um processador puramente exemplificativa com unidades/recursos lógicos ilustrativos de um processador é ilustrada. Se note que um processador pode incluir ou omitir, qualquer dessas unidades funcionais, bem como incluir quaisquer outras unidades, lógica ou firmware funcionais conhecidos não representados. Como ilustrado, o núcleo 1401 inclui um núcleo de processador simplificado, representativo fora de ordem (OOO). Mas um processador em ordem pode ser utilizado em formas de realização diferentes. O núcleo OOO inclui um tampão de destino de desvio 1420 para prever desvios a serem executados/tomados e um buffer de instrução de translação (I-TLB) 1420 para armazenar entradas de translação de endereços para obter instruções.
[00100] O núcleo 1401 inclui ainda o módulo de descodificação 1425 acoplado à unidade de busca 1420 para descodificar elementos buscados. A lógica de busca, em uma forma de realização, inclui sequenciadores individuais associados com ranhuras de linha 1401a, 1401b, respetivamente. Normalmente o núcleo 1401 está associado com uma primeira ISA, a qual define/especifica instruções executáveis no processador 1400. Muitas vezes, as instruções de código de máquina que fazem parte da primeira ISA incluem uma parte da instrução (referido como um código de transação), a qual faz referência/especifica uma instrução ou operação a ser executada. A lógica de descodificação 1425 inclui circuitos que reconhecem essas instruções a partir dos seus códigos de operação e passam as instruções descodificadas na calha para processamento como definido pela primeira ISA. Por exemplo, como discutido em mais detalhe abaixo os descodificadores 1425, em uma forma de realização, incluir lógica concebida ou adaptada para reconhecer as instruções específicas de instruções, tais como instrução transacional. Como resultado do reconhecimento por parte dos descodificadores 1425, a arquitetura ou núcleo 1401 leva ações específicas, predefinidas para executar tarefas relacionadas com a instrução adequada. É importante notar que qualquer uma das tarefas, blocos, operações e métodos aqui descritos podem ser realizados em resposta a uma única ou múltiplas instruções; algumas das quais podem ser instruções novas ou antigas. Note que os descodificadores 1426, em uma forma de realização, reconhecem a mesma ISA (ou um subconjunto da mesma). Alternativamente, em um ambiente de núcleo heterogéneo, os descodificadores 1426 reconhecem uma segunda ISA (um subconjunto da primeira ISA ou uma ISA distinta).
[00101] Em um exemplo, o bloco alocador e renomeador 1430 inclui um alocador para reservar recursos, como arquivos de registro para armazenar resultados de processamento de instrução. No entanto, as linhas 1401a e 1401b são potencialmente capazes de execução fora de ordem, onde o bloco alocador e renomeador 1430 também reserva outros recursos, tais como tampões de reordem para acompanhar os resultados da instrução. A unidade 1430 pode também incluir um renomeador de registro para renomear registros de referência de programa/instrução a outros registros internos para o processador 1400. A unidade de reordem/cancelamento 1435 inclui componentes, tais como os tampões de reordem mencionados acima, tampões de carga e tampões de armazenamento para suportar a execução fora de ordem e o posterior cancelamento em ordem das instruções executadas fora de ordem.
[00102] O bloco da(s) unidade(s) de programação e execução 1440, em uma forma de realização, inclui uma unidade de programação 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 do ponto flutuante disponível. Ficheiros de registro associados com as unidades de execução também estão incluídos para armazenar informações dos resultados do processamento de instruções. Unidades de execução exemplares incluem uma unidade de execução de ponto flutuante, uma unidade de execução inteira, uma unidade de execução de salto, uma unidade de execução de carga, uma unidade de execução de armazenamento e outras unidades de execução conhecidas.
[00103] Os dados em cache de nível inferior e o tampão de translação de dados (D-TLB) 1450 são acoplados a unidade(s) de execução 1440. O cache de dados é para armazenar recentemente usados/operados em elementos, tais como operandos de dados, que são potencialmente realizados nos estados de coerência de memória. D-TLB é para armazenar translações de abordagem recente virtual/linear para física. Como um exemplo específico, um processador pode incluir uma estrutura de tabela de página para quebrar a memória física em uma pluralidade de páginas virtuais.
[00104] Aqui, os núcleos 1401 e 1402 compartilham o acesso de nível mais alto ou mais limite de cache, como um cache de segundo nível associado à interface on-chip 1410. Se note que alto nível ou mais-para fora se refere a níveis de cache aumentando ou ficando ainda mais longe da unidade(s) de execução. Em uma forma de realização, o cache de nível superior é um cache de dados de último nível na hierarquia de memória no processador 1400 tal como um segundo ou terceiro nível de cache de dados. No entanto, o cache de nível superior não é tão limitado, uma vez que pode ser associado com, ou inclui um cache de instruções. Um cache de traços - um tipo de cache de instrução - pode ser acoplado após o descodificador 1425 para armazenar traços recentemente decodificados. Aqui, uma instrução potencialmente se refere a uma macroinstrução (isto é, uma instrução geral reconhecida pelos descodificadores), que pode descodificar uma série de macroinstruções (micro-operações).
[00105] Em a configuração ilustrada, o processador 1400 também inclui um módulo de interface no chip 1410. Historicamente, um controlador de memória, o qual é descrito em mais pormenor a seguir, tem sido incluído em um sistema de computação para o processador externo 1400. Neste cenário, a interface on-chip 1410 é para se comunicar com dispositivos externos ao processador 1400, como a memória do sistema 1475, um chipset (muitas vezes incluindo um hub controlador de memória para conectar a memória 1475 e um hub controlador I/O para conectar dispositivos periféricos), um hub controlador de memória, um northbridge ou outro circuito integrado. E neste cenário, o barramento 1405 pode incluir qualquer interconexão conhecida, tal como barramentos multiporta, uma interconexão ponto-a-ponto, uma interconexão de série, um barramento paralelo, um barramento coerente (por exemplo, cache coerente), uma arquitetura de protocolo em camadas, um barramento diferencial e um barramento GTL.
[00106] A memória 1475 pode ser dedicada ao processador 1400 ou compartilhada com outros dispositivos em um sistema. Exemplos comuns de tipos de memória 1475 incluem DRAM, SRAM, uma memória não volátil (memória NV) e outros dispositivos de armazenamento conhecido. Se note que o dispositivo 1480 pode incluir um acelerador gráfico, processador ou placa acoplada a um hub controlador de memória, armazenamento de dados acoplado a um hub controlador I/O, um transceptor sem fios, um dispositivo flash, um controlador de áudio, um controlador de rede ou outro dispositivo conhecido.
[00107] Recentemente, no entanto, por mais lógicas e dispositivos estarem a ser integrados em um único retículo, tais como SOC, cada um desses dispositivos pode ser incorporado no processador 1400. Por exemplo, em uma forma de realização, um hub controlador de memória está na mesma embalagem e/ou retículo com o processador 1400. Aqui, uma parte do núcleo (a parte de núcleo) 1410 inclui um ou mais controlador(es) para fazer a interface com outros dispositivos, tais como a memória 1475 ou um dispositivo de gráficos 1480. A configuração incluindo uma interconexão e controladores para fazer a interface com esse dispositivo é frequentemente referida como um sobre-núcleo (ou configuração não-núcleo). Como exemplo, a interface no chip 1410 inclui uma interconexão de anel para comunicação no chip e uma ligação ponto-a-ponto de série de alta velocidade 1405 para a comunicação fora do chip. No entanto, no ambiente SOC, mesmo mais dispositivos, tais como a interface de rede, coprocessadores, memória 1475, o processador de gráficos 1480 e quaisquer outros dispositivos/interface de computador conhecidos podem ser integrados em um único retículo ou circuito integrado para fornecer pequeno fator de forma com alta funcionalidade e baixo consumo de energia.
[00108] Em uma forma de realização, o processador 1400 é capaz de executar um código de compilador, otimização e/ou de translação 1477 para compilar, transpor e/ou otimizar o código de aplicação 1476 para suportar o aparelho e os processos aqui descritos ou para a interface com os mesmos. Um compilador muitas vezes inclui um programa ou conjunto de programas para transpor o texto/código de fonte em texto/código de destino. Normalmente, a compilação de código de programa/aplicativo com um compilador é feita em várias fases e passa para transformar o código de linguagem de programação de alto nível em código de linguagem de máquina ou montagem de baixo nível. No entanto, os compiladores de passagem única podem ainda ser utilizados para simples compilação. Um compilador pode utilizar todas as técnicas de compilação conhecidas e realizar quaisquer operações de compilação conhecidas, tais como análise lexical, pré-processamento, análise sintática, análise semântica, geração de código, transformação de código e otimização de código.
[00109] Compiladores maiores muitas vezes incluem várias fases, mas na maioria das vezes essas fases estão incluídas dentro de duas fases gerais: (1) uma de extremidade de dianteira, ou seja, em geral, onde o processamento sintático, processamento semântico e alguma transformação/otimização pode acontecer, e (2) uma extremidade traseira, ou seja, em geral, onde a análise, transformações, otimizações e geração de código acontece. Alguns compiladores se referem a um meio, que ilustra a indefinição de delimitação entre uma extremidade dianteira e extremidade traseira de um compilador. Como resultado, a referência a inserção, a associação, a geração ou outra operação de um compilador pode ter lugar em qualquer das fases ou passos acima referidos, bem como quaisquer outras fases conhecidas ou passos de um compilador. Como exemplo ilustrativo, um compilador potencialmente insere operações, chamadas, funções, etc., em uma ou mais fases de compilação, tais como inserção de chamadas/operações em fase de extremidade dianteira de compilação e, em seguida, a transformação das chamadas/operações em código de baixo nível durante uma fase de transformação. Se note que durante a compilação dinâmica, o código compilador ou código de otimização dinâmica pode inserir essas operações/chamadas, bem como otimizar o código para execução durante a execução. Como um exemplo ilustrativo específico, o código binário (código já compilado) pode ser otimizado de forma dinâmica durante a execução. Aqui, o código de programa pode incluir o código dinâmico de otimização, o código binário, ou uma combinação dos mesmos.
[00110] Semelhante a um compilador, uma translação, como uma translação binária, traduz o código estática ou dinamicamente para otimizar e/ou fazer a translação do código. Portanto, a referência a execução de código, código do aplicativo, código do programa ou outro ambiente de software pode se referir a: (1) execução de um programa(s) do compilador, optimizador de código de otimização, ou de translação quer dinâmica ou estaticamente para compilar o código do programa, para manter estruturas de software, para realizar outras operações, para otimizar o código, ou para traduzir o código; (2) execução de código do programa principal, incluindo operações/chamadas, como o código do aplicativo que foi otimizado/compilado; (3) execução de outro código de programa, tais como bibliotecas, associado ao código de programa principal para manter as estruturas de software, para realizar outras operações relacionadas com software ou para otimizar o código; ou (4) uma combinação destes.
[00111] Nos referindo agora à Fig. 15, é mostrado um diagrama de blocos de uma forma de realização de um processador de vários núcleos. Como mostrado na forma de realização da Fig. 15, o processador 1500 inclui vários domínios. Especificamente, um domínio do núcleo 1530 inclui uma pluralidade de núcleos 1530A- 1530N, um domínio de gráficos 1560 inclui um ou mais motores de gráficos tendo um motor médio 1565, e um domínio de agente do sistema 1510.
[00112] Em várias forma de realização, o domínio de agente do sistema 1510 trata os eventos de controle de energia e gerenciamento de energia, de modo que unidades individuais de domínios 1530 e 1560 (por exemplo, núcleos e/ou motores gráficos) são independentemente controláveis para operar de forma dinâmica com uma potência adequada de modo/nível (por exemplo, ativo, turbo, sono, hibernação, sono profundo, ou outro estado de Advanced Configuration Power Interface), à luz da atividade (ou inatividade) ocorrendo na unidade dada. Cada um dos domínios 1530 e 1560 pode funcionar a tensão diferente e/ou energia, e, além disso, as unidades individuais dentro de cada um dos domínios potencialmente funcionam a uma frequência independente e tensão. Se note que, enquanto apenas mostrado com três domínios, compreender o âmbito da presente invenção não é limitada a este respeito e domínios adicionais podem estar presentes em outras formas de realização.
[00113] Como mostrado, cada núcleo 1530 inclui ainda caches de baixo nível, além de várias unidades de execução e elementos de processamento adicionais. Aqui, os vários núcleos estão acoplados uns aos outros e a uma memória cache compartilhada que é formada por uma pluralidade de unidades ou fatias de um cache de último nível (LLC) 1540A-1540N; estes LLCs muitas vezes incluem funcionalidade do controlador de armazenamento e cache e são compartilhados entre os núcleos, bem como potencialmente entre o motor gráfico também.
[00114] Como se vê, uma interconexão de anel 1550 acopla os núcleos juntos, e fornece interconexão entre o domínio do núcleo 1530, domínio de gráficos 1560 e circuitos de agente de sistema 1510, através de uma pluralidade de paragens de anel 1552A-1552N, cada um em um acoplamento entre o núcleo e uma fatia LLC. Como visto na Fig. 15, a interconexão 1550 é utilizada para transportar uma variedade de informação, incluindo informação de endereços, informação de dados, informação de reconhecimento e informação de controle/inválida. Apesar de uma interconexão de anel ser ilustrada, qualquer um conhecido na interconexão de retículo ou estrutura pode ser utilizado. Como um exemplo ilustrativo, algumas das estruturas discutidas acima (por exemplo, outra interconexão de retículo, On-chip System Fabric (OSF), uma interconexão Advanced Microcontroller Bus Architecture (AMBA), uma estrutura de malha multidimensional, ou outra arquitetura de interconexão conhecida) podem ser utilizadas de forma semelhante.
[00115] Tal como ainda descrito, o domínio de agente do sistema 1510 motor de exibição 1512, que é o de proporcionar o controle de e uma interface para uma exibição associada. O domínio de agente do sistema 1510 pode incluir outras unidades, tais como: um controlador de memória integrado 1520 que proporciona uma interface para a memória do sistema (por exemplo, uma DRAM implementada com vários DIMM; lógica de coerência 1522 para executar operações de coerência de memória. Várias interfaces podem estar presentes para permitir a ligação entre o processador e os outros circuitos. Por exemplo, em uma forma de realização, pelo menos, uma interface de meios direta (DMI) 1516 de interface é fornecida, bem como uma ou mais interfaces de PCIe™ 1514. O motor de exibição e essas interfaces geralmente acoplam à memória através de uma ponte PCIe™ 1518. Além disso, para assegurar a comunicação entre outros agentes, tais como processadores adicionais ou outros circuitos, uma ou mais outras interfaces podem ser fornecidas.
[00116] Com referência agora à FIG. 16, é mostrado um diagrama de blocos de um representante do núcleo; especificamente, blocos lógicos de uma extremidade traseira de um núcleo, como o núcleo 1530 a partir da FIG. 15. Em geral, a estrutura mostrada na FIG. 16 inclui um processador fora de ordem que tem uma unidade de extremidade dianteira 1670 usada para buscar instruções recebidas, realizar vários processamentos (por exemplo, cache, descodificação, predição de ramo, etc.) e as instruções/operações de passagem ao longo de um motor 1680 fora de ordem (OOO). OOO motor 1680 executa o processamento de instruções descodificadas.
[00117] Mais especificamente na forma de realização da Fig. 16, o motor fora de ordem 1680 inclui uma unidade de alocação 1682 para receber instruções descodificados, que podem estar sob a forma de uma ou mais macroinstruções ou UOP, a partir da unidade de extremidade dianteira 1670, e alocá-las para se apropriar de recursos tais como registros e assim por diante. Em seguida, as instruções são fornecidas para uma estação de reserva 1684, que se reserva recursos e programa-os para a execução de uma de uma pluralidade de unidades de execução 1686A-1686N. Vários tipos de unidades de execução podem estar presentes, incluindo, por exemplo, unidades lógicas de aritmética (ULA), unidades de carga e armazenamento, unidades de processamento de vetor (VPUs), unidades de execução de ponto flutuante, entre outras. Os resultados destas unidades de execução diferentes são fornecidos a um tampão de reordem (ROB) 1688, que agarra resultados não ordenados e os devolve para corrigir a ordem do programa.
[00118] Ainda com referência à FIG. 16, se nota que tanto a unidade de extremidade dianteira 1670 como o motor fora de ordem 1680 são acoplados a diferentes níveis de uma hierarquia de memória. Especificamente mostrado é um cache de nível de instrução 1672, que por sua vez acopla a um cache de nível médio 1676, que por sua vez acopla a um cache de último nível 1695. Em uma forma de realização, o cache de último nível 1695 é implementado em uma unidade de on-chip (por vezes referida como uncore) 1690. Como um exemplo, a unidade 1690 é similar ao sistema de agente 1510 da Fig. 15. Como discutido acima, o uncore 1690 comunica com a memória do sistema 1699, que, na forma de realização ilustrada, é implementado através de ED RAM. Se note também que as diversas unidades de execução 1686 dentro do motor fora de ordem 1680 estão em comunicação com um primeiro cache de nível 1674, que também está em comunicação com o cache de nível médio 1676. Se note também que núcleos adicionais 1630N-2 -1630N podem se acoplar com LLC 1695. Embora mostrado neste nível elevado na forma de realização da Fig. 16, entender que várias alterações e componentes adicionais podem estar presentes.
[00119] Voltando à Fig. 17, 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 uma ou mais características de acordo com uma forma de realização da presente invenção é ilustrada. O sistema 1700 inclui um componente, tal como um processador 1702 para empregar unidades de execução incluindo a lógica para executar algoritmos para processar dados, de acordo com a presente invenção, tal como na forma de realização aqui descrita. O sistema 1700 é representativo de sistemas de processamento baseados em microprocessadores Pentium III™, Pentium 4™, Xeon™, Itanium, XScale™ e/ou StrongARM™, embora outros sistemas (incluindo PCs com outros microprocessadores, estações de trabalho de engenharia, descodificadores e semelhantes) podem também ser utilizados. Em uma forma de realização, o sistema de amostragem 1700 executa uma versão do sistema operativo Windows™ disponível da Microsoft Corporation de Redmond, Washington, embora outros sistemas operativos (UNIX e Linux, por exemplo), software incorporado e/ou interfaces gráficas de usuário também podem ser usados. Assim, formas de realização da presente invenção não estão limitadas a qualquer combinação específica de circuitos de hardware e de software.
[00120] As formas de realização não estão limitadas a sistemas de computador. Formas de realização alternativas da presente invenção podem ser usadas em outros dispositivos, tais como os dispositivos portáteis e aplicações incorporados. Alguns exemplos de dispositivos portáteis incluem telefones celulares, dispositivos de Internet Protocol, câmaras digitais, assistentes digitais pessoais (PDAs) e computadores de bolso. Aplicações integradas podem incluir um microcontrolador, um processador de sinal digital (DSP), um sistema em um chip, computadores de rede (NetPC), descodificadores, hubs de rede, comutadores de rede de longa distância (WAN) ou qualquer outro sistema que pode executar uma ou mais instruções de acordo com, pelo menos, uma forma de realização.
[00121] Em essa forma de realização ilustrada, o processador 1702 inclui uma ou mais unidades de execução 1708 para implementar um algoritmo que é a realização de, pelo menos, uma instrução. Uma forma de realização pode ser descrita no contexto de uma área de trabalho de processador único ou sistema de servidor, mas formas de realização alternativas podem ser incluídas em um sistema multiprocessador. O sistema 1700 é um exemplo de um “hub” de arquitetura do sistema. O sistema de computador 1700 inclui um processador 1702 para processar sinais de dados. O processador 1702, como um exemplo ilustrativo, inclui um microprocessador de computador de conjunto de instruções complexo (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 de implementação de uma combinação de conjuntos de instruções, ou qualquer outro dispositivo processador, tal como um processador de sinal digital, por exemplo. O processador 1702 é acoplado a um barramento de processador 1710, que transmite os sinais de dados entre o processador 1702 e outros componentes no sistema 1700. Os elementos do sistema 1700 (por exemplo, acelerador de gráficos 1712, hub controlador de memória 1716, memória de 1720, hub controlador I/O 1724, transceptor sem fios 1726, Flash BIOS 1728, controlador de rede 1734, controlador de áudio 1736, porta de expansão de série 1738, controlador I/O 1740, etc.) desempenham as suas funções convencionais, que são bem conhecidas para os que estão familiarizados com a técnica.
[00122] Em uma forma de realização, o processador 1702 inclui uma memória de cache interno de Nível 1 (L1) 1704. Dependendo da arquitetura, o processador 1702 pode ter um único cache interno ou vários níveis de caches internos. Outras formas de realização incluem uma combinação de ambos os caches internos e externos, dependendo da aplicação e necessidades particulares. Ficheiro de registro 1706 é para armazenar diferentes tipos de dados em vários registros, incluindo registros inteiros, registros de pontos flutuantes, registros de vetor, registros bancados, registros de sombra, registros de ponto de verificação, registros de status e registro de apontador de instrução.
[00123] A unidade de execução 1708, incluindo a lógica para realizar operações com números inteiros e ponto flutuante, também reside no processador 1702. O processador 1702, em uma forma de realização, inclui um microcódigo (ucode) ROM para armazenar o microcódigo, que quando executado, é para executar algoritmos para certas macroinstruções ou lidar com cenários complexos. Aqui, microcódigo é potencialmente atualizável para lidar com erros lógicos/correções para o processador 1702. Para uma forma de realização, a unidade de execução 1708 inclui a lógica para lidar com um conjunto de instrução embalada 1709. Ao incluir o conjunto de instrução embalada 1709 em o conjunto de instruções de um processador de uso geral 1702, juntamente com os circuitos associados para executar as instruções, as operações usadas por muitas aplicações multimédia podem ser realizadas usando dados embalados em um processador de uso geral 1702. Assim, muitas aplicações multimídia são aceleradas e executadas de forma mais eficiente usando a largura total de um barramento de dados do processador para executar operações em dados empacotados. Isso potencialmente elimina a necessidade de transferir as unidades mais pequenas de dados através do barramento de dados do processador para executar uma ou mais operações, um elemento de dados de cada vez.
[00124] Formas de realização alternativas de uma unidade de execução 1708 podem também ser usadas em micro controladores, processadores integrados, dispositivos de gráficos, DSP e outros tipos de circuitos lógicos. O Sistema 1700 inclui uma memória 1720. A memória 1720 inclui um dispositivo de memória dinâmica de acesso aleatório (DRAM), um dispositivo de memória estática de acesso aleatório (SRAM), dispositivo de memória flash ou outro dispositivo de memória. A memória 1720 armazena instruções e/ou os dados representados por sinais de dados que estão a ser executadas pelo processador 1702.
[00125] Se note que qualquer uma das características ou aspetos da invenção acima referidos podem ser utilizados em uma ou mais da interconexão ilustrada na FIG. 17. Por exemplo, uma interconexão no retículo (IDO), que não está representada, para o acoplamento de unidades internas de processador 1702 implementa um ou mais aspetos da presente invenção descrita acima. Ou a invenção está relacionado com um barramento de processador 1710 (por exemplo, outra interconexão de computação de alto desempenho conhecida), um caminho de memória de alta largura de banda 1718 para a memória 1720, uma ligação ponto-a-ponto para o acelerador de gráficos 1712 (por exemplo uma estrutura compatível de Peripheral Component Interconnect Express (PCIe)), uma interconexão de hub controlador 1722, um I/O ou outra interconexão (por exemplo, USB, PCI, PCIe) para acoplar os outros componentes ilustrados. Alguns exemplos de tais componentes incluem o controlador de áudio 1736, o hub de firmware (flash BIOS) 1728, o transceptor sem fios 1726, o armazenamento de dados 1724, o legado controlador I/O 1710 contendo interfaces de usuário de entrada e teclado 1742, uma porta de expansão de série 1738 tais como Universal Serial Bus (USB) e um controlador de rede 1734. O dispositivo de armazenamento de dados 1724 pode compreender uma unidade de disco rígido, uma unidade de discos flexíveis, um dispositivo de CD-ROM, um dispositivo de memória flash ou outro dispositivo de armazenamento em massa.
[00126] Nos referindo agora à Fig. 18, é mostrado um diagrama de blocos de um segundo sistema 1800, em conformidade com uma forma de realização da presente invenção. Como mostrado na FIG. 18, o sistema de multiprocessador 1800 é um sistema de interconexão ponto-a-ponto, e inclui um primeiro processador 1870 e um segundo processador 1880 acoplado através de uma interconexão ponto-a-ponto 1850. Cada um dos processadores 1870 e 1880 pode ser alguma versão de um processador. Em uma forma de realização, 1852 e 1854 são parte de uma série, estrutura coerente de interconexão ponto-a-ponto, tal como uma arquitetura de alto desempenho. Como resultado, a invenção pode ser implementada dentro da arquitetura QPI.
[00127] Apesar de mostrado com apenas dois processadores 1870, 1880, é para ser entendido que o âmbito da presente invenção não é tão limitada. Em outras formas de realização, um ou mais processadores adicionais podem estar presentes em um determinado processador.
[00128] Processadores 1870 e 1880 são mostrados, incluindo unidades de controlador de memória integrada 1872 e 1882, respetivamente. O processador 1870 também inclui, como parte das suas unidades de controlador de barramento interfaces ponto-a-ponto (P-P) 1876 e 1878; da mesma forma, o segundo processador 1880 inclui interfaces P-P 1886 e 1888. Os processadores 1870, 1880 podem trocar informações através de uma interface ponto- a-ponto (PP) 1850 usando circuitos de interface PP 1878, 1888. Como mostrado na FIG. 18, CMI 1872 e 1882 acopla os processadores às memórias respectivas, isto é, uma memória 1832 e uma memória 1834, que podem ser partes da memória principal localmente ligadas aos respetivos processadores.
[00129] Os processadores 1870, 1880 cada um troca informações com um chipset 1890 através de interfaces P-P individuais 1852, 1854, utilizando circuitos de interface ponto-a-ponto 1876, 1894, 1886, 1898. O chipset 1890 também troca informações com um circuito de gráficos de alta performance 1838 através de um circuito de interface 1892 ao longo de uma interconexão de gráficos de alta performance 1839.
[00130] Um cache compartilhado (não mostrado) pode ser incluído em qualquer processador ou fora de ambos os processadores; ainda conectado com os processadores via interconexão P-P, de tal forma que uma ou informações de cache local de ambos os processadores pode ser armazenada no cache compartilhado se um processador é colocado em um modo de baixa energia.
[00131] O chipset 1890 pode ser acoplado a um primeiro barramento 1816 através de uma interface 1896. Em uma forma de realização, o primeiro barramento 1816 pode ser um barramento Peripheral Component Interconnect (PCI), ou um barramento tal como um barramento PCI Express ou outro barramento de interconexão de terceira geração I/O, embora o âmbito da presente invenção não seja tão limitada.
[00132] Como mostrado na Fig. 18, vários dispositivos I/O 1814 são acoplados ao primeiro barramento 1816, juntamente com uma ponte de barramento 1818 que acopla o primeiro barramento 1816 a um segundo barramento 1820. Em uma forma de realização, o segundo barramento 1820 inclui um barramento de contagem baixa de pino (LPC). Vários dispositivos são acoplados ao segundo barramento 1820 incluindo, por exemplo, um teclado e/ou mouse 1822, dispositivos de comunicação 1827 e uma unidade de armazenamento 1828, tais como uma unidade de disco ou outro dispositivo de armazenamento em massa, que muitas vezes inclui instruções/código e dados 1830, em uma forma de realização. Além disso, um áudio I/O 1824 é mostrado acoplado ao segundo barramento 1820. Se note que outras arquiteturas são possíveis, em que os componentes incluídos e arquiteturas de interconexão variam. Por exemplo, em vez de a arquitetura ponto-a- ponto da Fig. 18, um sistema pode implementar um barramento multiponto ou outra dessa arquitetura.
[00133] Seguidamente à FIG. 19, uma forma de realização de um conceito de sistema em chip (SOC) de acordo com as invenções é representada. Como um exemplo ilustrativo específico, o SOC 1900 está incluído no equipamento de usuário (UE). Em uma forma de realização, o UE se refere a qualquer dispositivo para ser usado por um usuário final para se comunicar, como um telefone de bolso, smartphone, tablet, notebook ultrafino, notebook com adaptador de banda larga ou qualquer outro dispositivo de comunicação similar. Muitas vezes, um UE se conecta a uma estação de base ou nó, o qual corresponde potencialmente na natureza a uma estação móvel (MS) numa rede GSM.
[00134] Aqui, o SOC 1900 inclui 2 núcleos 1906 e 1907. Semelhante à discussão acima, os núcleos 1906 e 1907 podem estar em conformidade com uma Instruction Set Arquitecture, tal como um processador de base Intel® Architecture Core™, um processador Advanced Micro Devices, Inc. (AMD), um processador baseado em MIPS, um design de processador baseado em ARM ou um cliente do mesmo, bem como os seus licenciados ou adotantes. Os núcleos 1906 e 1907 são acoplados a um controlo de cache 1908 que está associado com a unidade de interface de barramento 1909 e cache L2 1911 para comunicar com outras partes do sistema 1900. A interconexão 1910 inclui uma interconexão em chip, tais como um IOSF, AMBA, ou outro interconexão discutida acima, o que potencialmente implementa um ou mais aspetos aqui descritos.
[00135] A interface 1910 fornece canais de comunicação para os outros componentes, como um Subscriber Identity Module (SIM) 1930 para fazer a interface com um cartão SIM, um rom de inicialização 1935 para manter o código de inicialização para execução pelos núcleos 1906 e 1907 para inicializar o SOC 1900, um controlador SDRAM 1940 para fazer a interface com a memória externa (por exemplo DRAM 1960), um controlador de flash 1945 para fazer a interface com a memória não volátil (por exemplo, Flash 1965), um controle periférico 1950 (por exemplo Serial Peripheral Interface) para fazer a interface com periféricos, codecs de vídeo 1920 e video interface 1925 para exibir e receber a entrada (por exemplo, a entrada de toque ativado), GPU 1915 para executar computações relacionadas com gráficos, etc. Qualquer uma dessas interfaces pode incorporar aspetos da invenção aqui descrita.
[00136] Além disso, o sistema ilustra periféricos para comunicação, tais como um módulo de Bluetooth 1970, modem 3G 1975, GPS 1985 e Wi-Fi 1985. Se note que como indicado acima, um UE inclui um rádio para comunicação. Como resultado, esses módulos de comunicação periféricos não são todos necessários. No entanto, em um UE alguma forma de um rádio para comunicação externa é para ser incluída.
[00137] Embora a presente invenção tenha sido descrita com respeito a um número limitado de formas de realização, os peritos na técnica irão apreciar numerosas modificações e variações da mesma. Se pretende que as reivindicações anexas cubram todas essas modificações e variações como caindo dentro do verdadeiro espírito e âmbito da presente invenção.
[00138] Um projeto pode passar por várias etapas, desde a criação até à simulação para a fabricação. Os dados que representam um design podem representar o desenho em um número de maneiras. Em primeiro lugar, como é útil em simulações, o hardware pode ser representado usando uma linguagem de descrição de hardware ou de outra linguagem de descrição funcional. Além disso, um modelo de nível de circuito com portas de lógica e/ou transístores pode ser produzido em algumas etapas do processo de design. Além disso, a maioria dos projetos, em algum momento, atingem um nível de dados representando o posicionamento físico de vários dispositivos no modelo de hardware. No caso em que as técnicas de fabrico de semicondutor convencionais são utilizadas, os dados representando o modelo de hardware podem ser dados indicando a presença ou ausência de várias características em diferentes camadas de máscara para máscaras utilizadas para produzir o circuito integrado. Em qualquer representação do desenho, os dados podem ser armazenados em qualquer forma de um meio de leitura por máquina. Uma memória ou um armazenamento magnético ou ótico tal como um disco pode ser o meio de leitura por máquina para armazenar informação transmitida através de onda ótica ou elétrica modulada ou de outra forma gerada para transmitir essa informação. Quando uma onda portadora elétrica indicando ou transportando o código ou desenho é transmitida, na medida em que a cópia, o tamponamento ou a retransmissão do sinal elétrico é realizado, uma nova cópia é feita. Assim, um fornecedor de comunicação ou um fornecedor de rede pode armazenar num suporte material, legível por máquina, pelo menos temporariamente, um artigo, tal como a informação codificada dentro de uma onda portadora, que contém técnicas de formas de realização da presente invenção.
[00139] Um módulo, tal como aqui utilizado, se refere a qualquer combinação de hardware, software e/ou firmware. Como exemplo, um módulo inclui hardware, tal como um microcontrolador, associado com um meio não transitório para armazenar o código adaptado para ser executado pelo microcontrolador. Por conseguinte, a referência a um módulo, em uma forma de realização, se refere ao hardware, que está especificamente configurado para reconhecer e/ou executar o código a ser realizado num meio não transitório. Além disso, em uma outra forma de realização, a utilização de um módulo se refere à forma não transitória, incluindo o código, o qual está especificamente adaptado para ser executado pelo microcontrolador para executar operações predeterminadas. E, como pode ser inferido, em ainda outra forma de realização, o módulo de termo (nesse exemplo) pode se referir à combinação do microcontrolador e o meio não transitório. Muitas vezes, os limites de módulos que são ilustrados como separados geralmente variam e, potencialmente, se sobrepõem. Por exemplo, um primeiro e um segundo módulo pode compartilhar hardware, software, firmware, ou uma combinação destes, embora potencialmente retendo algum hardware, software ou firmware independente. Em uma forma de realização, a utilização do termo lógica inclui hardware, tais como transístores, registros ou outro hardware, tais como dispositivos lógicos programáveis.
[00140] O uso da expressão “configurado para” em uma forma de realização se refere a organizar, montar, fabricar, oferecer para venda, importar e/ou desenhar um aparelho, hardware, lógica ou elemento para executar uma tarefa designada ou determinada. Nesse exemplo, um aparelho ou elemento do mesmo que não está a funcionar ainda é “configurado para” executar uma tarefa designada se for concebido, acoplado e/ou interconectado entre si para efetuar a referida tarefa designada. Como exemplo puramente ilustrativo, uma porta lógica pode fornecer um 0 ou um 1 durante o funcionamento. Mas uma porta lógica “configurada para” fornecer um sinal para um relógio permissível não inclui cada porta lógica potencial que pode proporcionar um 1 ou 0. Em vez disso, a porta lógica é uma acoplada de alguma maneira que durante o funcionamento a saída 1 ou 0 é para permitir o relógio. Se nota uma vez que a utilização do termo “configurado para” não exige a operação, mas, em vez disso se foca sobre o estado latente de um aparelho, de hardware e/ou elemento, em que no estado latente do aparelho, equipamento e/ou elemento é projetado para executar uma determinada tarefa quando o aparelho, hardware e/ou elemento está em funcionamento.
[00141] Além disso, o uso das expressões “para”, “capaz de/para” e ou “operável para”, em uma forma de realização, se refere a um aparelho, lógica, hardware e/ou elemento concebido de tal maneira a permitir a utilização do aparelho, lógica, hardware e/ou elemento de uma forma especificada. Se note, como acima, que o uso de para, capaz para, ou operável para, em uma forma de realização, se refere ao estado latente de um aparelho, lógica, hardware e/ou elemento, em que o aparelho, a lógica, o hardware e/ou o elemento não está em operação mas é concebido de tal forma a permitir a utilização de um aparelho de uma forma especificada.
[00142] Um valor, como aqui utilizado, inclui qualquer representação conhecida de um número, um estado, um estado lógico ou um estado lógico binário. Muitas vezes, o uso de níveis lógicos, valores lógicos ou valores lógicos é também referido como 1 e 0, o que representa simplesmente estados lógicos binários. Por exemplo, um 1 se refere a um nível lógico alto e 0 se refere a um nível lógico baixo. Em uma forma de realização, uma célula de armazenamento, tal como uma célula transístor ou flash, pode ser capaz de manter um valor lógico único ou vários valores lógicos. No entanto, têm sido utilizadas outras representações de valores em sistemas de computador. Por exemplo, o número decimal dez pode também 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 realizada em um sistema de computador.
[00143] Além disso, os estados podem ser representados por valores ou porções de valores. Como um exemplo, um primeiro valor, tal como uma lógica, pode representar um padrão ou estado inicial, enquanto um segundo valor, tal como uma lógica zero, pode representar um estado não padrão. Além disso, os termos reposto e definido, em uma forma de realização, se referem a um padrão e um valor atualizado ou estado, respetivamente. Por exemplo, um valor padrão inclui, potencialmente, um valor lógico elevado, isto é reposto, enquanto um valor atualizado inclui, potencialmente, um valor lógico baixo, ou seja, definido. Se note que qualquer combinação de valores pode ser utilizada para representar qualquer número de estados.
[00144] As formas de realização dos métodos, hardware, software, firmware ou código definidos acima podem ser implementadas através de instruções ou código armazenados em um meio acessível por máquina, legível por máquina, acessível por computador ou de leitura por computador que são executáveis por um elemento de processamento. Um meio acessível/legível por máquina não transitório inclui qualquer mecanismo que fornece (por exemplo, armazena e/ou transmite informação) em uma forma legível por uma máquina, tal 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 a RAM estática (SRAM) ou RAM dinâmica (DRAM); ROM; meio de armazenamento magnético ou ótico; dispositivos de memória flash; dispositivos de armazenamento elétricos; dispositivos de armazenamento ótico; dispositivos de armazenamento acústicos; outra forma de dispositivos de armazenamento para a manutenção de informações recebidas a partir de sinais transitórios (propagados) (por exemplo, ondas portadoras, sinais infravermelhos, sinais digitais); etc., que devem ser distinguidos dos meios não transitórios que podem receber informações do mesmo.
[00145] As instruções utilizadas para a lógica do programa para executar formas de realização da invenção podem ser armazenadas dentro de uma memória no sistema, tais como DRAM, memória cache, memória flash ou outro armazenamento. Além disso, as instruções podem ser distribuídas através de uma rede ou através de outros meios de leitura por computador. Assim, um meio legível por máquina pode incluir qualquer mecanismo para armazenar ou transmitir informações de uma forma legível por uma máquina (por exemplo, um computador), mas não está limitado a, discos magnéticos flexíveis, discos óticos, Compact Disk Memória Somente de Leitura (CD- ROM) e discos magneto-óticos, Memória Somente de Leitura (ROM), Memória de Acesso Aleatório (RAM), Memória Somente de Leitura Programável e Apagável (EPROM), Memória Somente de Leitura, Programável e Eletricamente Apagável (EEPROM), cartões magnéticos ou óticos, memória flash, ou um dispositivo de armazenamento tangível, legível por máquina usado na transmissão de informações através da Internet por via elétrica, ótica, acústica ou outras formas de sinais propagados (por exemplo, ondas portadoras, sinais infravermelhos, sinais digitais, etc.). Consequentemente, o meio legível por computador inclui qualquer tipo de meio legível por máquina tangível adequado para armazenar ou transmitir instruções ou informações eletrônicas de uma forma legível por uma máquina (por exemplo, um computador).
[00146] Os exemplos que se seguem se referem a formas de realização de acordo com esta especificação. Uma ou mais formas de realização podem fornecer um aparelho, um sistema, um dispositivo de armazenamento legível por máquina, um meio legível por máquina, a lógica com base em hardware e/ou software e um método para fornecer um canal com base num protocolo Peripheral Component Interconnect (PCI) Express (PCIe) para suportar uma taxa de bits de, pelo menos, 16 gigatransfer por segundo (GT/s), em que o canal compreende dois conectores e tem um comprimento maior do que 30,48 cm (doze polegadas).
[00147] Em pelo menos um exemplo, o canal inclui pelo menos uma via, e um referenciador da via é pelo menos parcialmente removido.
[00148] Em pelo menos um exemplo, a via é furada inversamente para remover o referenciador.
[00149] Em pelo menos um exemplo, a via é uma via de um primeiro de um dos conectores.
[00150] Em pelo menos um exemplo, cada via utilizada pelo conector para ligar a um primeiro dispositivo está furada inversamente.
[00151] Em pelo menos um exemplo, vias de um segundo dos conectores utilizados para ligar a um segundo dispositivo são furadas inversamente.
[00152] Em pelo menos um exemplo, a via é uma via de uma tomada do processador.
[00153] Em pelo menos um exemplo, cada pista do canal inclui uma parte correspondente de uma respetiva tomada de processador, e cada uma das tomadas de processador corresponde a uma pista do canal tendo um referenciador de via é furada inversamente.
[00154] Em pelo menos um exemplo, uma placa de circuito de baixa perda é fornecida e o canal é implementado, pelo menos em parte sobre a placa de circuito.
[00155] Em pelo menos um exemplo, a placa de circuito de baixa perda tem baixa inserção diferencial de traços inferior a, pelo menos, um exemplo, o ganho é aplicado a uma extremidade dianteira do receptor do canal.
[00156] Em pelo menos um exemplo, o ganho compreende cerca de 6 dB.
[00157] Em pelo menos um exemplo, o ganho é aplicado a um equalizador de tempo linear contínuo do canal.
[00158] Em pelo menos um exemplo, o ganho combinado aplicado à extremidade dianteira do receptor e do equalizador de tempo linear contínuo é de cerca de 6 dB.
[00159] Em pelo menos um exemplo, o canal inclui, pelo menos, uma via com referenciador furado inversamente, o canal é implementado, pelo menos em parte, em uma placa de circuito de baixa perda, e um ganho combinado de aproximadamente 6 dB é aplicado a um ou mais de um receptor de extremidade dianteira do canal e um equalizador de tempo linear contínuo do canal.
[00160] Em pelo menos um exemplo, o comprimento do canal é, pelo menos, de 30,48 cm (vinte (20) polegadas).
[00161] Uma ou mais formas de realização podem fornecer um aparelho, um sistema, um dispositivo de armazenamento legível por máquina, uma meio legível por máquina, lógica com base em hardware e/ou software e um método para enviar dados a uma taxa de pelo menos 16GT bit/s em um canal que compreende uma ligação multipistas de dois conectores, em que o comprimento do canal é maior do que 30,48 cm (doze polegadas).
[00162] Em pelo menos um exemplo, o comprimento do canal é de, pelo menos, 30,48 cm (vinte (20) polegadas).
[00163] Em pelo menos um exemplo, o canal compreende uma ou mais vias e os referenciadores das Vias estão furados inversamente.
[00164] Em pelo menos um exemplo, as uma ou mais vias estão incluídas em um ou ambos dos dois conectores.
[00165] Em pelo menos um exemplo, o canal compreende tomadas de processador e as tomadas de processador incluem as vias.
[00166] Em pelo menos um exemplo, o canal inclui pelo menos uma via com um referenciador furado inversamente, o canal é implementado, pelo menos, em parte, em uma placa de circuito de baixa perda, e um ganho combinado de aproximadamente 6 dB é aplicado a um ou mais de um receptor de extremidade dianteira do canal e um equalizador de tempo linear contínuo do canal.
[00167] Em pelo menos um exemplo, o canal compreende um canal PCIe.
[00168] Uma ou mais formas de realização podem fornecer um aparelho, um sistema, um dispositivo de armazenamento legível por máquina, um meio legível por máquina, lógica com base em hardware e/ou software e um método para receber dados transmitidos a uma taxa de, pelo menos, 16GT/s em um canal compreendendo uma ligação multipistas de dois conectores, em que o comprimento do canal é maior do que 30,48 cm (doze polegadas).
[00169] Em pelo menos um exemplo, o comprimento do canal é de, pelo menos, 30,48 cm (vinte (20) polegadas).
[00170] Em pelo menos um exemplo, o canal compreende uma ou mais vias e os referenciadores das vias estão furados inversamente.
[00171] Em pelo menos um exemplo, as uma ou mais vias estão incluídas em um ou ambos dos dois conectores.
[00172] Em pelo menos um exemplo, o canal compreende tomadas de processador e as tomadas de processador incluem as vias.
[00173] Em pelo menos um exemplo, o canal inclui pelo menos uma via com um referenciador furado inversamente, o canal é implementado, pelo menos em parte, em uma placa de circuito de baixa perda, e um ganho combinado de aproximadamente 6 dB é aplicado a um ou mais de um receptor de extremidade dianteira e um equalizador de tempo linear contínuo do canal.
[00174] Em pelo menos um exemplo, o canal compreende um canal PCIe.
[00175] Em pelo menos um exemplo, é fornecido um sistema que inclui um primeiro dispositivo e um segundo dispositivo de forma comunicativa acoplado ao primeiro dispositivo usando um canal de interconexão, em que o canal de interconexão compreende uma ligação com base em protocolo Peripheral Component Interconnect (PCI) Express (PCIe) para suportar uma taxa de bits de, pelo menos, 16GT/s e a ligação inclui dois conectores e tem um comprimento maior do que 30,48 cm (doze polegadas).
[00176] Em pelo menos um exemplo, o sistema compreende um chipset de servidor.
[00177] Em pelo menos um exemplo, o primeiro dispositivo compreende um dispositivo processador.
[00178] Uma ou mais formas de realização podem fornecer um aparelho, um sistema, um dispositivo de armazenamento legível por máquina, um meio legível por máquina, lógica com base em hardware e/ou software e um método para identificar um primeiro erro de pista em particular uma de uma pluralidade de pistas de uma ligação com base na detecção de pelo menos um símbolo erróneo transmitido na pista em particular, e relatar o primeiro erro de pista em um registro de erro de pista.
[00179] Em pelo menos um exemplo, erros de pista relatados no registro de erro de pista identificam a pista correspondente da pluralidade de pistas.
[00180] Em pelo menos um exemplo, um segundo erro de pista é identificado na ligação com base na detecção de um cabeçalho de sincronização erróneo em, pelo menos, uma da pluralidade de pistas, e o segundo erro de pista é relatado no registro de erro de pista.
[00181] Em pelo menos um exemplo, um terceiro erro de pista é identificado com base na determinação de uma incompatibilidade de informação de paridade para um fluxo de dados transmitido através da ligação, e o terceiro erro de pista é relatado no registro de erro de pista.
[00182] Em pelo menos um exemplo, a informação de paridade é recebida num conjunto ordenado SKP (SKP OS).
[00183] Em pelo menos um exemplo, a lógica I/O compreende lógica de camada física.
[00184] Em pelo menos um exemplo, o símbolo erróneo compreende um erro para um símbolo incluído em um SKP OS.
[00185] Em pelo menos um exemplo, o símbolo erróneo compreende um símbolo não SKP OS detectado entre um primeiro símbolo SLP OS no SKP SO e um marcador SLP_END no SKP OS.
[00186] Em pelo menos um exemplo, o símbolo erróneo compreende um SKP_END colocado em um símbolo diferente dos símbolos 8, 12, 16, 20 ou 24 do SKP OS.
[00187] Em pelo menos um exemplo, o símbolo erróneo compreende um primeiro símbolo de um código de enquadramento.
[00188] Em pelo menos um exemplo, o código de enquadramento compreende um código de enquadramento PCIe.
[00189] Em pelo menos um exemplo, o código de enquadramento compreende, pelo menos, um de um código inativo lógico (IDL), um arranque de código de dados (SDP) de pacote da camada de ligação de dados (DLLP), um arranque de código de dados (STP) de pacote de camada de transação (TLP) e um código TLP de fim ruim (EDB).
[00190] Em pelo menos um exemplo, o símbolo erróneo compreende um símbolo de código IDL erróneo.
[00191] Em pelo menos um exemplo, um primeiro código IDL está incluído em uma determinada Pista n na pluralidade de pistas e o símbolo erróneo compreende um símbolo não IDL detectado em qualquer uma das Pistas n + 1, n + 2 e n + 3 na pluralidade de pistas.
[00192] Em pelo menos um exemplo, o símbolo erróneo compreende um símbolo de código EDB.
[00193] Em pelo menos um exemplo, um primeiro código EDB segue um TLP em uma determinada Pista n na pluralidade de pistas e o símbolo erróneo compreende um símbolo não EDB detectado em qualquer uma das Pistas n + 1, n + 2 e n + 3 na pluralidade de pistas.
[00194] Em pelo menos um exemplo, o símbolo erróneo compreende um símbolo de um código EDB e o código EDB segue um código de enquadramento sinal diferente de um código SDP.
[00195] Em pelo menos um exemplo, o símbolo erróneo compreende um símbolo de código SDP.
[00196] Em pelo menos um exemplo, um primeiro símbolo de um código SDP está incluído em uma determinada Pista n na pluralidade de pistas e o símbolo erróneo compreende um símbolo não SDP detectado em uma Pista n + 1 na pluralidade de pistas.
[00197] Em pelo menos um exemplo, o registro de erro de pista compreende um registro de Status (LES) de Erro de Pista PCIe.
[00198] Em pelo menos um exemplo, a ligação compreende uma ligação compatível com PCIe.
[00199] Em pelo menos um exemplo, um segundo erro de pista é identificado na ligação com base na detecção de um bloco de conjunto ordenado faltando um código EDS anterior.
[00200] Em pelo menos um exemplo, um erro de pista com base na detecção de um erro em qualquer um de um símbolo de conjunto ordenado, um símbolo de código IDL, um símbolo de código SDP, um símbolo de código STP e um símbolo de código EDB é para ser identificado e relatado.
[00201] Em pelo menos um exemplo, o registro de erro de pista é monitorizado para identificar erros de pista envolvendo a pista particular, e se pode determinar que a pista em particular está defeituosa com base em uma pluralidade de erros identificados para a pista particular no registro de erro de pista.
[00202] Em pelo menos um exemplo, a determinação de que a pista em particular é defeituosa compreende uma análise estatística da pluralidade de erros.
[00203] Uma ou mais formas de realização podem fornecer um aparelho, um sistema, um dispositivo de armazenamento legível por máquina, um meio legível por máquina, lógica com base em hardware e/ou software e um método para identificar que uma ligação é para sair de um estado ativo, em que a ligação compreende uma pluralidade de pistas, manter a informação de paridade para as pistas com base nos dados anteriormente enviados através da ligação e enviar uma indicação da informação de paridade antes da saída do estado ativo.
[00204] Em pelo menos um exemplo, a indicação da informação de paridade é enviada em resposta à saída.
[00205] Em pelo menos um exemplo, a indicação da informação de paridade é enviada em um conjunto ordenado.
[00206] Em pelo menos um exemplo, a indicação da informação de paridade para cada pista é incluída em um respetivo bit de paridade para cada pista incluída no conjunto ordenado.
[00207] Em pelo menos um exemplo, o conjunto ordenado compreende um PCIe SKP OS.
[00208] Em pelo menos um exemplo, a ligação é para sair do estado ativo com base em uma recuperação de ligação.
[00209] Em pelo menos um exemplo, a recuperação de ligação se baseia em um erro detectado na ligação.
[00210] Em pelo menos um exemplo, o erro compreende um erro de código de enquadramento.
[00211] Uma ou mais formas de realização podem fornecer um aparelho, um sistema, um dispositivo de armazenamento legível por máquina, um meio legível por máquina, lógica com base em hardware e/ou software e um método para transmitir dados em uma ligação compreendendo uma pluralidade de pistas, manter a informação de paridade para cada uma das pistas com base nos dados transmitidos, identificar que a ligação está para sair de um estado ativo e enviar a informação de paridade antes da saída do estado ativo.
[00212] Uma ou mais formas de realização podem fornecer um aparelho, um sistema, um dispositivo de armazenamento legível por máquina, um meio legível por máquina, lógica com base em hardware e/ou software e um método para manter a primeira informação de paridade para cada uma de uma pluralidade de pistas de uma ligação baseada em dados anteriormente enviados através da ligação, receber a segunda informação de paridade em resposta a um evento que leva a ligação a sair de um estado ativo, onde a segunda informação de paridade é levada a ser enviada antes da saída do estado ativo. A primeira informação de paridade é comparada com a segunda informação para identificar potenciais erros de pista em uma ou mais das pistas.
[00213] Em pelo menos um exemplo, a segunda informação de paridade está incluída em um conjunto ordenado.
[00214] Em pelo menos um exemplo, a segunda informação de paridade está incluída nos bits de paridade incluídos no conjunto ordenado.
[00215] Em pelo menos um exemplo, o conjunto ordenado compreende um SKP OS.
[00216] Em pelo menos um exemplo, a ligação é para sair do estado ativo com base em uma recuperação da ligação.
[00217] Em pelo menos um exemplo, a recuperação é despoletada por um erro detectado na ligação.
[00218] Em pelo menos um exemplo, o erro compreende um erro de código de enquadramento.
[00219] Em pelo menos um exemplo, erros de pista potenciais são relatados para um registro de erro de pista.
[00220] Em pelo menos um exemplo, o registro de erro de pista compreende um registro LES.
[00221] Em pelo menos um exemplo, o evento compreende um erro detectado na ligação.
[00222] Em pelo menos um exemplo, uma recuperação da ligação é para ser despoletada com base no erro e a recuperação leva a ligação a sair do estado ativo.
[00223] Em pelo menos um exemplo, erros de pista potenciais são identificados com base na detecção de que a primeira informação de paridade não coincide com a segunda informação de paridade.
[00224] Uma ou mais formas de realização podem fornecer um aparelho, um sistema, um dispositivo de armazenamento legível por máquina, um meio legível por máquina, lógica com base em hardware e/ou software e um método para receber dados através de uma ligação compreendendo uma pluralidade de pistas, manter a primeira informação de paridade para cada uma das pistas com base nos dados, receber uma segunda informação de paridade em resposta a um evento, onde o evento é para levar a ligação a sair de um estado ativo e a segunda informação de paridade é causada para ser enviada antes da saída do estado ativo e comparar a primeira informação de paridade com a segunda informação para identificar potenciais erros de pista em uma ou mais das pistas.
[00225] Uma ou mais formas de realização podem fornecer um aparelho, um sistema, um dispositivo de armazenamento legível por máquina, um meio legível por máquina, lógica com base em hardware e/ou software e um método para manter a informação de paridade para cada uma de uma pluralidade de pistas de uma ligação com base em uma primeira parte de dados transmitidos através da ligação, em que a informação de paridade é para ser mantida através de uma recuperação da ligação e retomar o cálculo da informação de paridade após a recuperação da ligação, em que a informação de paridade tem ainda por base uma segunda parte de dados transmitidos através da ligação e a segunda parte de dados a recuperação é considerada persistentemente.
[00226] Em pelo menos um exemplo, a primeira parte dos dados corresponde a um primeiro bloco de dados, e a segunda parte dos dados corresponde a um segundo bloco de dados diferente.
[00227] Em pelo menos um exemplo, o primeiro bloco de dados é interrompido pela recuperação e o segundo bloco começa após a recuperação.
[00228] Em pelo menos um exemplo, a recuperação é baseada em um erro detectado na ligação.
[00229] Em pelo menos um exemplo, uma indicação da informação de paridade é enviada para um dispositivo receptor que é calculada com base na primeira e segunda partes de dados.
[00230] Em pelo menos um exemplo, a informação de paridade compreende primeira informação de paridade e a lógica I/O está ainda para receber, a partir de um dispositivo transmissor, uma indicação da segunda informação de paridade calculada pelo dispositivo de transmissão com base na primeira e segunda partes de dados e comparar a indicação da segunda informação de paridade com a primeira informação de paridade.
[00231] Em pelo menos um exemplo, é determinado se existem erros potenciais em uma ou mais da pluralidade de pistas a partir da comparação da indicação da segunda informação de paridade com a primeira informação de paridade.
[00232] Em pelo menos um exemplo, os potenciais erros são relatados em um registro de erro de pista.
[00233] Em pelo menos um exemplo, o registro de erro de pista compreende um registro PCIe LES.
[00234] Em pelo menos um exemplo, a indicação da segunda informação de paridade está incluída em um SKP OS.
[00235] Em pelo menos um exemplo, a indicação da segunda informação de paridade compreende bits de paridade do SKP OS.
[00236] Em pelo menos um exemplo, a ligação compreende uma ligação compatível com PCIe.
[00237] Uma ou mais formas de realização podem fornecer um aparelho, um sistema, um dispositivo de armazenamento legível por máquina, um meio legível por máquina, lógica com base em hardware e/ou software e um método para transmitir primeiros dados em uma ligação compreendendo uma pluralidade de pistas, determinar a informação de paridade para cada uma das pistas com base nos primeiros dados transmitidos, participar em uma recuperação da ligação, em que a informação de paridade é mantida através da recuperação da ligação, transmitir segundos dados na ligação após a recuperação da ligação e atualizar a informação de paridade para gerar informação de paridade atualizada, em que a informação de paridade é atualizada com base nos primeiros dados e os segundos dados.
[00238] Uma ou mais formas de realização podem fornecer um aparelho, um sistema, um dispositivo de armazenamento legível por máquina, um meio legível por máquina, lógica com base em hardware e/ou software e um método para receber primeiros dados a partir de um dispositivo, em que os primeiros dados são recebidos em uma ligação compreendendo uma pluralidade de pistas, determinar a informação de paridade para cada uma das pistas com base nos primeiros dados recebidos, participar em uma recuperação da ligação, em que a informação de paridade é mantida através da recuperação da ligação, receber segundos dados na ligação a partir do dispositivo após a recuperação da ligação e atualizar a informação de paridade para gerar informação de paridade atualizada, em que a informação de paridade atualizada se baseia nos primeiros dados e os segundos dados.
[00239] Em pelo menos um exemplo, a informação de paridade particular pode ser comparada com outras informações de paridade para determinar um ou mais erros de pista potenciais.
[00240] Em pelo menos um exemplo, a outra informação de paridade está incluída no SKP OS.
[00241] Em pelo menos um exemplo, a outra informação de paridade pode ser identificada a partir de bits de paridade incluídos no SKP OS.
[00242] Uma ou mais formas de realização podem fornecer um aparelho, um sistema, um dispositivo de armazenamento legível por máquina, um meio legível por máquina, lógica com base em hardware e/ou software e um método para receber dados a partir de um primeiro dispositivo, em que os primeiros dados são recebidos em uma ligação que compreende uma pluralidade de pistas, determinar a informação de paridade para cada uma das pistas com base nos primeiros dados recebidos, participar em uma recuperação da ligação, em que a informação de paridade deve ser mantida através da recuperação da ligação, receber os segundos dados na ligação a partir do dispositivo após a recuperação da ligação e atualizar a informação de paridade para gerar informação de paridade atualizada, em que a informação de paridade atualizada se baseia nos primeiros dados e os segundos dados.
[00243] Referência ao longo desta especificação a “uma forma de realização” significa que um determinado recurso, estrutura ou característica descritos em ligação com a forma de realização está incluído em, pelo menos, uma forma de realização da presente invenção. Assim, o aparecimento das frases “em uma forma de realização” em vários lugares ao longo desta especificação não é necessariamente se referindo à mesma forma de realização. Além disso, um determinado recurso, estrutura ou característica podem ser combinados de qualquer forma adequada em uma ou mais formas de realização.
[00244] Em a descrição anterior, a descrição pormenorizada tem sido feita com referência a formas de realização exemplares específicas. Será, no entanto, evidente que várias modificações e alterações podem ser feitas sem se afastar do espírito e amplo âmbito da invenção conforme definido nas reivindicações anexas. A especificação e os desenhos são, consequentemente, para ser considerados em um sentido ilustrativo em vez de num sentido restritivo. Além disso, o uso precedente da forma de realização e outra linguagem exemplar não se refere necessariamente à mesma forma de realização ou o mesmo exemplo, mas pode se referir a formas de realização diferentes e distintas, bem como, potencialmente, a mesma forma de realização.

Claims (20)

1. Aparelho de transmissão para uma ligação compatível com PCIe, interconexão de componentes periféricos expressos, compreendendo: um transmissor para computação de paridade correspondente a cada uma da pluralidade de pistas (900) da ligação compatível com PCIe, em que a paridade correspondente a uma pista específica da pluralidade de pistas (900) compreende uma paridade plana de cargas úteis de blocos de dados comunicados pela pista específica; o aparelho caracterizado por compreender adicionalmente: uma lógica I/O para gerar um conjunto ordenado skip, SKP OS, associado à pista específica, em que o SKP OS deve compreender um bit de paridade de dados, e o bit de paridade de dados indica a paridade plana da pista específica; e um transmissor para enviar o SKP OS na pista específica em resposta à identificação de que a ligação compatível com PCIe sairá de um estado de ligação ativa.
2. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que um SKP OS respectivo deve ser gerado para cada uma da pluralidade de pistas (900) da ligação compatível com PCIe e incluir um bit de paridade de dados para indicar a paridade computada para a pista correspondente.
3. Aparelho, de acordo com qualquer uma das reivindicações 1 a 2, caracterizado pelo fato de que o SKP OS compreende um formato de acordo com um protocolo baseado em PCIe.
4. Aparelho de recepção para uma ligação compatível com PCIe, interconexão de componentes periféricos expressos, caracterizado por compreender: um receptor para: receber blocos de dados na ligação compatível com PCIe que compreende uma pluralidade de pistas (900); e receber um conjunto ordenado skip, SKP OS, em uma pista específica da pluralidade de pistas (900), em que o SKP OS está associado à pista específica, o SKP OS compreende um bit de paridade de dados, e o bit de paridade de dados indica uma primeira informação de paridade plana para os blocos de dados enviados na pista específica por um dispositivo de transmissão; uma calculadora de paridade para computar um segundo valor de paridade para cargas úteis dos blocos de dados; e lógica de comparação de paridade para comparar a primeira informação de paridade com a segunda informação de paridade para determinar se existe uma condição de erro (1320) de pista em uma ou mais pistas, em que o SKP OS recebido na pista específica indica que a ligação compatível com PCIe foi identificada pelo dispositivo de transmissão para sair de um estado de ligação ativa (1335).
5. Aparelho, de acordo com a reivindicação 4, caracterizado pelo fato de que um SKP OS respectivo deve ser gerado para cada uma da pluralidade de pistas (900) da ligação compatível com PCIe e incluir um bit de paridade de dados para indicar a paridade computada para blocos de dados enviados na pista correspondente.
6. Método caracterizado por compreender: transmitir (1325) dados em uma ligação que compreende uma pluralidade de pistas (900); manter informações de paridade (1330) para cada uma das pistas com base nos dados transmitidos; identificar (1335) que a ligação deve sair de um estado ativo; e enviar (1340) uma indicação das informações de paridade antes da saída do estado ativo.
7. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que a indicação das informações de paridade é enviada em um conjunto ordenado skip , SKP OS.
8. Método, de acordo com qualquer uma das reivindicações 6 a 7, caracterizado pelo fato de que a indicação das informações de paridade deve ser enviada antes de um envio programado de informações de paridade com base na identificação de que a ligação deve sair do estado ativo (1335).
9. Método, de acordo com qualquer uma das reivindicações 6 a 8, caracterizado pelo fato de que a ligação deve sair do estado ativo com base em uma recuperação de ligação desencadeada por um erro detectado na ligação.
10. Método, de acordo com qualquer uma das reivindicações 6 a 9, caracterizado pelo fato de que compreende adicionalmente receber dados que indicam o erro a partir de um dispositivo receptor.
11. Aparelho caracterizado por compreender meios para a realização do método conforme definido na reivindicação 6.
12. Aparelho caracterizado por compreender lógica, pelo menos uma porção da qual está em lógica de hardware, a lógica para a realização do método conforme definido na reivindicação 6.
13. Método caracterizado por compreender: receber dados sobre uma ligação que compreende uma pluralidade de pistas (900); manter primeiras informações de paridade para cada uma das pistas com base nos dados; receber segundas informações de paridade em resposta a um evento, em que o evento fará com que a ligação saia de um estado ativo e as segundas informações de paridade sejam enviadas antes da saída do estado ativo; e comparar as primeiras informações de paridade com as segundas informações de paridade para identificar potenciais erros de pista em uma ou mais das pistas.
14. Método, de acordo com a reivindicação 13, caracterizado pelo fato de que uma recuperação da ligação deve ser desencadeada com base no erro e a recuperação faz com que a ligação saia do estado ativo.
15. Método, de acordo com qualquer uma das reivindicações 13 a 14, caracterizado pelo fato de que compreende adicionalmente relatar potenciais erros de pista (1320) em um registrador de erro de pista.
16. Método, de acordo com qualquer uma das reivindicações 13 a 15, caracterizado pelo fato de que compreende adicionalmente: monitorar o registrador de erro de pista para determinar se uma ou mais da pluralidade de pistas (900) estão defeituosas com base nos erros de pista relatados no registrador de erros da pista.
17. Método, de acordo com qualquer uma das reivindicações 13 a 16, caracterizado pelo fato de que potenciais erros de pista são identificados com base na detecção de que as primeiras informações de paridade não correspondem às segundas informações de paridade.
18. Método, de acordo com qualquer uma das reivindicações 13 a 17, caracterizado pelo fato de que as segundas informações de paridade são enviadas em um conjunto ordenado, OS.
19. Aparelho caracterizado por compreender meios para a realização do método conforme definido na reivindicação 13.
20. Aparelho caracterizado por compreender lógica, pelo menos uma porção da qual está em lógica de hardware, a lógica para a realização do método conforme definido na reivindicação 13.
BR112016012048-5A 2013-12-26 2013-12-26 Aparelho, método e sistema para comunicação computorizada BR112016012048B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/077762 WO2015099724A1 (en) 2013-12-26 2013-12-26 Pci express enhancements

Publications (2)

Publication Number Publication Date
BR112016012048A2 BR112016012048A2 (pt) 2017-08-08
BR112016012048B1 true BR112016012048B1 (pt) 2023-01-24

Family

ID=53479390

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016012048-5A BR112016012048B1 (pt) 2013-12-26 2013-12-26 Aparelho, método e sistema para comunicação computorizada

Country Status (9)

Country Link
US (4) US20170163286A1 (pt)
EP (2) EP3087492B1 (pt)
JP (1) JP6251806B2 (pt)
KR (2) KR101874726B1 (pt)
CN (2) CN105793828B (pt)
BR (1) BR112016012048B1 (pt)
DE (1) DE112013007732B4 (pt)
RU (1) RU2645288C2 (pt)
WO (1) WO2015099724A1 (pt)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2645288C2 (ru) 2013-12-26 2018-02-19 Интел Корпорейшн Усовершенствование интерфейса pci express
US20170270062A1 (en) * 2016-03-21 2017-09-21 Intel Corporation In-band retimer register access
CN107870832B (zh) * 2016-09-23 2021-06-18 伊姆西Ip控股有限责任公司 基于多维度健康诊断方法的多路径存储设备
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
US10789201B2 (en) 2017-03-03 2020-09-29 Intel Corporation High performance interconnect
US10091873B1 (en) * 2017-06-22 2018-10-02 Innovium, Inc. Printed circuit board and integrated circuit package
US10917976B1 (en) * 2017-07-12 2021-02-09 Juniper Networks, Inc. Designing a printed circuit board (PCB) to detect slivers of conductive material included within vias of the PCB
US20190095554A1 (en) * 2017-09-28 2019-03-28 Intel Corporation Root complex integrated endpoint emulation of a discreet pcie endpoint
US10601425B2 (en) * 2018-05-30 2020-03-24 Intel Corporation Width and frequency conversion with PHY layer devices in PCI-express
US11467999B2 (en) 2018-06-29 2022-10-11 Intel Corporation Negotiating asymmetric link widths dynamically in a multi-lane link
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
US10846247B2 (en) * 2019-03-05 2020-11-24 Intel Corporation Controlling partial link width states for multilane links
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
JPWO2020255799A1 (pt) * 2019-06-18 2020-12-24
RU195892U1 (ru) * 2019-10-30 2020-02-07 Федеральное государственное унитарное предприятие "Государственный научно-исследовательский институт авиационных систем" (ФГУП "ГосНИИАС") Модуль процессорный
US11740958B2 (en) 2019-11-27 2023-08-29 Intel Corporation Multi-protocol support on common physical layer
US11836101B2 (en) 2019-11-27 2023-12-05 Intel Corporation Partial link width states for bidirectional multilane links
US11467834B2 (en) 2020-04-01 2022-10-11 Samsung Electronics Co., Ltd. In-memory computing with cache coherent protocol
US20210240655A1 (en) * 2020-11-16 2021-08-05 Intel Corporation Source ordering in device interconnects
KR102519484B1 (ko) 2021-02-18 2023-04-10 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 이를 포함하는 시스템
KR102635457B1 (ko) * 2021-05-24 2024-02-13 에스케이하이닉스 주식회사 PCIe 장치 및 이를 포함하는 컴퓨팅 시스템
US11960367B2 (en) 2021-05-24 2024-04-16 SK Hynix Inc. Peripheral component interconnect express device and operating method thereof
US20220156211A1 (en) * 2021-12-22 2022-05-19 Intel Corporation Dynamic provisioning of pcie devices at run time for bare metal servers
TWI800443B (zh) * 2022-08-15 2023-04-21 緯穎科技服務股份有限公司 快速周邊組件互連裝置的錯誤回報優化方法以及快速周邊組件互連裝置的錯誤回報優化系統

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4631666A (en) * 1982-10-25 1986-12-23 Burroughs Corporation Data transfer network for variable protocol management
JPH08286993A (ja) * 1995-04-19 1996-11-01 Hitachi Ltd 回線障害解析情報の採取方法
US6173330B1 (en) * 1996-09-17 2001-01-09 Motorola, Inc. Delivery and acquisition of data segments with optimized inter-arrival time
CN1285201C (zh) * 1997-05-13 2006-11-15 世嘉股份有限公司 数据传输方法及使用该方法的游戏机和外围设备
US7010607B1 (en) * 1999-09-15 2006-03-07 Hewlett-Packard Development Company, L.P. Method for training a communication link between ports to correct for errors
US6961347B1 (en) * 2000-06-20 2005-11-01 Hewlett-Packard Development Company, L.P. High-speed interconnection link having automated lane reordering
US7464307B2 (en) * 2003-03-25 2008-12-09 Intel Corporation High performance serial bus testing methodology
US7444558B2 (en) * 2003-12-31 2008-10-28 Intel Corporation Programmable measurement mode for a serial point to point link
US7424564B2 (en) * 2004-03-23 2008-09-09 Qlogic, Corporation PCI—express slot for coupling plural devices to a host system
US7746795B2 (en) * 2004-07-23 2010-06-29 Intel Corporation Method, system, and apparatus for loopback parameter exchange
US7412642B2 (en) * 2005-03-09 2008-08-12 Sun Microsystems, Inc. System and method for tolerating communication lane failures
US7493434B1 (en) * 2005-05-25 2009-02-17 Dafca, Inc. Determining the value of internal signals in a malfunctioning integrated circuit
US7353443B2 (en) * 2005-06-24 2008-04-01 Intel Corporation Providing high availability in a PCI-Express link in the presence of lane faults
US20070005248A1 (en) * 2005-06-29 2007-01-04 Intel Corporation Data reconstruction in link-based interconnects
US7644347B2 (en) * 2005-09-30 2010-01-05 Intel Corporation Silent data corruption mitigation using error correction code with embedded signaling fault detection
US8644829B2 (en) 2006-05-17 2014-02-04 Blackberry Limited Method and system for signaling release cause indication in a UMTS network
SG137794A1 (en) * 2006-05-17 2007-12-28 Research In Motion Ltd Method and system for signaling release cause indication in a umts network
US7836352B2 (en) * 2006-06-30 2010-11-16 Intel Corporation Method and apparatus for improving high availability in a PCI express link through predictive failure analysis
JP4851888B2 (ja) * 2006-08-30 2012-01-11 エヌイーシーコンピュータテクノ株式会社 データ転送方式およびデータ転送方法
US7917828B2 (en) * 2006-12-28 2011-03-29 Intel Corporation Providing error correction coding for probed data
US7620854B2 (en) 2007-01-30 2009-11-17 Hewlett-Packard Development Company, L.P. Method and system for handling input/output (I/O) errors
US7769048B2 (en) * 2008-06-25 2010-08-03 Intel Corporation Link and lane level packetization scheme of encoding in serial links
JP5407230B2 (ja) 2008-09-08 2014-02-05 日本電気株式会社 Pciカード、マザーボード、pciバスシステム、制御方法、及びプログラム
US8369233B2 (en) * 2008-10-02 2013-02-05 Endace Technology Limited Lane synchronisation
US8161210B1 (en) * 2008-11-03 2012-04-17 Integrated Device Technology Inc. Multi-queue system and method for deskewing symbols in data streams
US8307265B2 (en) * 2009-03-09 2012-11-06 Intel Corporation Interconnection techniques
JP5252074B2 (ja) 2009-03-10 2013-07-31 富士通株式会社 送受信装置、データの送受信方法
US7958404B2 (en) * 2009-03-31 2011-06-07 Intel Corporation Enabling resynchronization of a logic analyzer
US8970750B2 (en) 2010-11-12 2015-03-03 Sony Corporation Image outputting apparatus, image outputting method, image processing apparatus, image processing method, program, data structure and imaging apparatus
US8874820B2 (en) 2010-12-28 2014-10-28 Silicon Image, Inc. Mechanism for facilitating a configurable port-type peripheral component interconnect express/serial advanced technology attachment host controller architecture
US8929398B2 (en) * 2011-06-20 2015-01-06 Texas Instruments Incorporated Data frame for PLC having destination address in the PHY header
CN102546515A (zh) * 2012-02-14 2012-07-04 北京邮电大学 光正交频分复用变速率传输系统和方法
US9032102B2 (en) 2012-03-02 2015-05-12 International Business Machines Corporation Decode data for fast PCI express multi-function device address decode
US8549205B1 (en) 2012-05-22 2013-10-01 Intel Corporation Providing a consolidated sideband communication channel between devices
JP6139689B2 (ja) * 2012-10-22 2017-05-31 インテル・コーポレーション 装置
US9262270B2 (en) * 2012-12-28 2016-02-16 Intel Corporation Live error recovery
US9281970B2 (en) * 2013-10-11 2016-03-08 Intel Corporation Error burst detection for assessing reliability of a communication link
US9385962B2 (en) * 2013-12-20 2016-07-05 Intel Corporation Method and system for flexible credit exchange within high performance fabrics
RU2645288C2 (ru) 2013-12-26 2018-02-19 Интел Корпорейшн Усовершенствование интерфейса pci express

Also Published As

Publication number Publication date
KR20160077147A (ko) 2016-07-01
DE112013007732T5 (de) 2016-12-22
BR112016012048A2 (pt) 2017-08-08
US20220255559A1 (en) 2022-08-11
DE112013007732B4 (de) 2023-03-23
KR102041743B1 (ko) 2019-11-06
RU2645288C2 (ru) 2018-02-19
WO2015099724A1 (en) 2015-07-02
EP3087492A1 (en) 2016-11-02
EP3361390A1 (en) 2018-08-15
EP3087492A4 (en) 2017-08-23
US20180191374A1 (en) 2018-07-05
CN105793828A (zh) 2016-07-20
CN105793828B (zh) 2019-06-21
WO2015099724A8 (en) 2015-08-27
EP3361390B1 (en) 2020-04-01
KR101874726B1 (ko) 2018-07-04
JP2017504095A (ja) 2017-02-02
RU2016120768A (ru) 2017-11-30
CN108052466A (zh) 2018-05-18
JP6251806B2 (ja) 2017-12-20
US20200067526A1 (en) 2020-02-27
US11632130B2 (en) 2023-04-18
CN108052466B (zh) 2022-01-04
KR20180069111A (ko) 2018-06-22
US11283466B2 (en) 2022-03-22
EP3087492B1 (en) 2018-11-21
US11043965B2 (en) 2021-06-22
US20170163286A1 (en) 2017-06-08

Similar Documents

Publication Publication Date Title
US11632130B2 (en) PCI express enhancements
US20220012189A1 (en) Sharing memory and i/o services between nodes
US11675003B2 (en) Interconnect retimer enhancements
US11595318B2 (en) Ordered sets for high-speed interconnects
EP3274861B1 (en) Reliability, availability, and serviceability in multi-node systems with disaggregated memory
BR102020019435A2 (pt) suporte multiprotocolo em camada física comum
US20170351640A1 (en) Standardized retimer
US10250436B2 (en) Applying framing rules for a high speed data link
US10884758B2 (en) Method, apparatus, and system for propagating PCIe hot reset across a non-transparent bridge on a PCIe add-in card
JP7163554B2 (ja) 装置、方法、プログラム、システム、およびコンピュータ可読ストレージ媒体
JP6552581B2 (ja) 装置、方法、およびシステム

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 26/12/2013, OBSERVADAS AS CONDICOES LEGAIS