BR112016012057B1 - Progressos de retemporizador de interconexão - Google Patents

Progressos de retemporizador de interconexão Download PDF

Info

Publication number
BR112016012057B1
BR112016012057B1 BR112016012057-4A BR112016012057A BR112016012057B1 BR 112016012057 B1 BR112016012057 B1 BR 112016012057B1 BR 112016012057 A BR112016012057 A BR 112016012057A BR 112016012057 B1 BR112016012057 B1 BR 112016012057B1
Authority
BR
Brazil
Prior art keywords
hyperlink
error
timer
segment
ordered set
Prior art date
Application number
BR112016012057-4A
Other languages
English (en)
Other versions
BR112016012057A2 (pt
Inventor
Daniel S.Froelich
Debendra Das Sharma
Original Assignee
Intel Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corporation filed Critical Intel Corporation
Publication of BR112016012057A2 publication Critical patent/BR112016012057A2/pt
Publication of BR112016012057B1 publication Critical patent/BR112016012057B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B3/00Line transmission systems
    • H04B3/02Details
    • H04B3/46Monitoring; Testing
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31703Comparison aspects, e.g. signature analysis, comparators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test buses, lines or interfaces, e.g. stuck-at or open line faults
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31725Timing aspects, e.g. clock distribution, skew, propagation delay
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3177Testing of logic operation, e.g. by logic analysers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
    • 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
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/2851Testing of integrated circuits [IC]
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/327Testing of circuit interrupters, switches or circuit-breakers
    • G01R31/3271Testing of circuit interrupters, switches or circuit-breakers of high voltage or medium voltage devices
    • G01R31/3275Fault detection or status indication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L22/00Testing or measuring during manufacture or treatment; Reliability measurements, i.e. testing of parts without further processing to modify the parts as such; Structural arrangements therefor
    • H01L22/30Structural arrangements specially adapted for testing or measuring during manufacture or treatment, or specially adapted for reliability measurements
    • H01L22/34Circuits for electrically characterising or monitoring manufacturing processes, e. g. whole test die, wafers filled with test structures, on-board-devices incorporated on each die, process control monitors or pad structures thereof, devices in scribe line
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2225/00Details relating to assemblies covered by the group H01L25/00 but not provided for in its subgroups
    • H01L2225/03All the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/648 and H10K99/00
    • H01L2225/04All the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/648 and H10K99/00 the devices not having separate containers
    • H01L2225/065All the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/648 and H10K99/00 the devices not having separate containers the devices being of a type provided for in group H01L27/00
    • H01L2225/06503Stacked arrangements of devices
    • H01L2225/06596Structural arrangements for testing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Monitoring And Testing Of Transmission In General (AREA)
  • Maintenance And Management Of Digital Transmission (AREA)

Abstract

progressos de retemporizador de interconexão. um sinal de modo de teste é gerado para incluir um padrão de teste e uma sequência de comunicação de erros. o sinal de modo de teste é enviado na hiperligação que inclui um ou mais dispositivos de extensão e duas ou mais sub-hiperligações. o sinal de modo de teste será enviado em uma específica das sub-hiperligações e será usado por um dispositivo de recepção para a identificação de erros na sub-hiperligação específica. a sequência de comunicação de erros será codificada com informações de erro para a descrição do estado de erro das sub-hiperligações na pluralidade de sub-hiperligações.

Description

CAMPO DA INVENÇÃO
[0001] Essa revelação pertence a sistemas de computação e, em particular (mas não exclusivamente), a interconexões ponto-a-ponto.
HISTÓRICO
[0002] Os avanços no desenho de lógica e processamento de semicondutores permitiram um aumento na quantidade de lógica que pode se encontrar presente em dispositivos de circuitos integrados. Como um corolário, as configurações de sistema de computador evoluíram desde um único ou múltiplos circuitos integrados em um sistema para múltiplos núcleos, múltiplos threads de hardware e múltiplos processadores lógicos presentes em circuitos integrados individuais, bem como outras interfaces integradas em esses processadores. Um processador ou circuito integrado compreende tipicamente um único die (retículo) de processador físico, em que o die de processador pode incluir um número qualquer de núcleos, threads de hardware, processadores lógicos, interfaces, memória, concentradores de controlador, etc.
[0003] Como resultado da maior capacidade para ajustar mais potência de processamento em pacotes menores, a popularidade dos dispositivos de computação menores aumentou. Os smartphones, os tablets, os notebooks ultrafinos e outro equipamento de usuário cresceram exponencialmente. Todavia, esses dispositivos menores confiam nos servidores tanto para o armazenamento de dados como no processamento complexo que excede o fator da forma. Consequentemente, a demanda no mercado da computação de alto desempenho (ou seja, espaço do servidor) aumentou igualmente. Por exemplo, nos servidores modernos, existe tipicamente não só um único processador com múltiplos núcleos, como também múltiplos processadores físicos (igualmente referidos como múltiplos soquetes) para o aumento da potência de computação. Contudo, como a potência de processamento cresce junto com o número de dispositivos em um sistema de computação, a comunicação entre soquetes e outros dispositivos se torna mais crítica.
[0004] Na verdade, as interconexões cresceram desde barramentos multidrop mais tradicionais que primeiramente manejaram comunicações elétricas para arquiteturas de interconexão completas que facilitam uma comunicação rápida. Infelizmente, como a demanda por futuros processadores com um consumo em taxas ainda mais altas, a demanda correspondente é colocada nas capacidades das arquiteturas de interconexão existentes.
BREVE DESCRIÇÃO DOS DESENHOS
[0005] A FIG. 1 ilustra uma modalidade de um sistema de computação incluindo uma arquitetura de interconexão.
[0006] A FIG. 2 ilustra uma modalidade de uma arquitetura de interconexão incluindo uma pilha em camadas.
[0007] A FIG. 3 ilustra uma modalidade de um pedido ou pacote a ser gerado ou recebido dentro de uma arquitetura de interconexão.
[0008] A FIG. 4 ilustra uma modalidade de um par de transmissor e receptor para uma arquitetura de interconexão.
[0009] As FIGs. 5A e 5B ilustram diagramas de blocos simplificados de hiperligações de exemplo incluindo um ou mais dispositivos de extensão.
[0010] As FIGs. 6A a 6E ilustram diagramas de blocos simplificados de implementações de exemplo de um modo de teste para a determinação de erros em uma ou mais sub- hiperligações de uma hiperligação.
[0011] A FIG. 7 ilustra uma representação de um conjunto ordenado de exemplo.
[0012] A FIG. 8 ilustra diagramas de blocos simplificados representando uma desconexão e uma nova conexão de exemplo em uma hiperligação.
[0013] A FIG. 9 é um fluxograma ilustrando uma técnica de exemplo para providenciar um retemporizador multimodo.
[0014] A FIG. 10 ilustra um diagrama de blocos simplificado da lógica em camada físicas de exemplo de um retemporizador.
[0015] As FIGs. 11A a 11E são fluxogramas ilustrando técnicas de exemplo em conexão com uma hiperligação implementada usando um dispositivo de extensão.
[0016] A FIG. 12 ilustra uma modalidade de um diagrama de blocos para um sistema de computação incluindo um processador de múltiplos núcleos.
[0017] A FIG. 13 ilustra outra modalidade de um diagrama de blocos para um sistema de computação incluindo um processador de múltiplos núcleos.
[0018] A FIG. 14 ilustra uma modalidade de um diagrama de blocos para um processador.
[0019] A FIG. 15 ilustra outra modalidade de um diagrama de blocos para um sistema de computação incluindo um processador.
[0020] A FIG. 16 ilustra uma modalidade de um bloco para um sistema de computação incluindo múltiplos processadores.
[0021] A FIG. 17 ilustra um sistema de exemplo implementado como sistema em um chip (SoC - System on Chip).
DESCRIÇÃO DETALHADA
[0022] Na descrição seguinte, são apresentados numerosos detalhes específicos, como exemplos de tipos específicos de processadores e configurações de sistema, estruturas de hardwareespecíficas, detalhes arquiteturais e microarquiteturais específicos, configurações de registro específicas, tipos de instrução específicos, componentes de sistema específicos, alturas/medições específicas, operação e estágios de tubulação de processador específicos, etc., de modo a providenciar uma compreensão completa do presente invento. Todavia, será evidente para um perito na técnica que esses detalhes específicos não necessitam de ser empregues para a prática do presente invento. Em outros casos, os componentes ou métodos bem conhecidos, como por exemplo arquiteturas de processador específicas e alternativas, código/circuitos lógicos específicos para algoritmos descritos, código de firmware específico, operação de interconexão específica, configurações lógicas específicas, materiais e técnicas de fabricação específicas, implementações de compilador específicas, expressão específica de algoritmos no código, lógica/técnicas de canais de alimentação e desligamento específicas e outros detalhes operacionais específicos do sistema de computador, não foram descritos em detalhe de modo a evitar a confusão desnecessária do presente invento.
[0023] Embora as seguintes modalidades possam ser descritas com referência à conservação de energia e eficiência energética em circuitos integrados específicos, como por exemplo em plataformas de computação ou microprocessadores, outras modalidades são aplicáveis a outros tipos de circuitos integrados e dispositivos lógicos. Técnicas e ensinamentos similares das modalidades aqui descritas podem ser aplicados em outros tipos de circuitos ou dispositivos semicondutores que podem igualmente beneficiar de eficiência energética e conservação de energia melhores. Por exemplo, as modalidades reveladas não são limitadas a sistemas de computador de secretária ou Ultrabooks™. Além disso, podem igualmente ser usadas em outros dispositivos, como por exemplo dispositivos de mão, tablets, outros notebooks finos, dispositivos de sistemas em um chip (SOC) e aplicações incorporadas. Alguns exemplos de dispositivos de mão incluem telefones celulares, dispositivos de protocolo de Internet, câmeras digitais, assistentes pessoais digitais (PDAs) e PCs de mão. As aplicações incorporadas incluem tipicamente um microcontrolador, um processador de sinais digitais (DSP - Digital Signal Processor), um sistema em um chip, computadores de rede (NetPC), set-top boxes, concentradores de rede, comutadores de rede de área alargada (WAN - Wide Area Network) ou qualquer outro sistema que possa efetuar as funções e operações ensinadas abaixo. Além do mais, o aparelho, os métodos e os sistemas aqui descritos não são limitados a dispositivos de computação físicos, mas podem igualmente se referir a otimizações de software para conservação de energia e eficiência energética. Como será prontamente evidente na descrição abaixo, as modalidades dos métodos, do aparelho e dos sistemas aqui descritos (quer em referência a hardware, firmware, software ou a uma combinação dos mesmos) são vitais para um futuro de “tecnologia verde” equilibrado com considerações de desempenho.
[0024] À medida que 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 o acoplamento e a comunicação entre os componentes está igualmente aumentado em termos de complexidade para garantir que os requisitos de largura de banda são cumpridos para uma ótima operação dos componentes. Ademais, diferentes segmentos de mercado demandam diferentes aspetos de arquiteturas de interconexão para se adaptarem às necessidades do mercado. Por exemplo, os servidores requerem um maior desempenho, enquanto o ecossistema móvel é por vezes capaz de sacrificar todo o desempenho para economia de energia. Contudo, é um propósito singular da maioria das estruturas providenciar o maior desempenho possível com o máximo de economia de energia. Abaixo, são descritas diversas interconexões, que podem potencialmente beneficiar dos aspetos do invento aqui descrito.
[0025] Uma arquitetura de estrutura de interconexão inclui a arquitetura PCI (Peripheral Component Interconnect - Interconexão do Componente Periférico) Express (PCIe). Um objetivo primário da PCIe é permitir a interoperabilidade dos componentes e dispositivos de diferentes vendedores em uma arquitetura aberta, abrangendo múltiplos segmentos de mercado; Clientes (de Secretária e Móveis), Servidores (Standard e Enterprise) e dispositivos Incorporados e de Comunicação. PCI Express é uma interconexão de E/S de uso geral de alto desempenho definida para uma vasta variedade de futuras plataformas de comunicação e computação. Alguns atributos PCI, como por exemplo o respectivo modelo de uso, a arquitetura de carregamento-armazenamento e as interfaces de software, foram mantidos pelas respectivas revisões, ao passo que as anteriores implementações de barramento paralelo foram substituídas por uma interface altamente escalável totalmente em série. As versões mais recentes de PCI Express tiram proveito dos avanços nas tecnologias ponto-a-ponto, na tecnologia baseada em comutador e no protocolo de pacotes para distribuir novos níveis de desempenho e funcionalidades. Gerenciamento de Energia, Qualidade de Serviço (QoS - Quality Of Service), suporte Hot-Plug/Hot-Swap, Integridade dos Dados e Tratamento de Erros se encontram entre algumas das funcionalidades avançadas suportadas por PCI Express.
[0026] Em relação à FIG. 1, é ilustrada uma modalidade de uma estrutura composta por Ligações ponto-a-ponto que interconectam um conjunto de componentes. O sistema 100 inclui o processador 105 e a memória do sistema 110 acoplados no concentrador de controlador 115. O processador 105 inclui qualquer elemento de processamento, como por exemplo um microprocessador, um processador hospedeiro, um processador incorporado, um coprocessador ou outro processador. O processador 105 é acoplado no concentrador de controlador 115 pelo barramento frontal (FSB - Front-Side Bus) 106. Em uma modalidade, FSB 106 é uma interconexão ponto-a-ponto em série como descrito abaixo. Em outra modalidade, a hiperligação 106 inclui uma arquitetura de interconexão diferencial em série que é compatível com um padrão de interconexão diferente.
[0027] A memória do sistema 110 inclui qualquer dispositivo de memória, como por exemplo memória de acesso aleatório (RAM - Random-Access Memory), memória não volátil (NV - Non-Volatile) ou outra memória acessível pelos dispositivos no sistema 100. A memória do sistema 110 é acoplada no concentrador de controlador 115 pela interface de memória 116. Os exemplos de uma interface de memória incluem uma interface de memória de taxa de transferência dobrada (DDR - Double-Data Rate), uma interface de memória DDR de canal duplo e uma interface de memória de RAM dinâmica (DRAM - Dynamic RAM).
[0028] Em uma modalidade, o concentrador de controlador 115 é um concentrador raiz, complexo de raiz ou controlador raiz em uma hierarquia de interconexão PCIe ou PCIE (Peripheral Component Interconnect Express). Os exemplos de concentrador de controlador 115 incluem um chipset, um concentrador de controlador de memória (MCH - Memory Controller Hub), uma ponte norte, um concentrador de controlador de interconexão (ICH - Interconnect Controller Hub), uma ponte sul e um concentrador/controlador raiz. Frequentemente, o termo chipset se refere a dois concentradores de controlador fisicamente separados, ou seja, um concentrador de controlador de memória (MCH) acoplado em um concentrador de controlador de interconexão (ICH). Note que os atuais sistemas muitas vezes incluem o MCH integrado no processador 105, enquanto o controlador 115 irá comunicar com dispositivos de E/S, de uma maneira similar como descrito abaixo. Em algumas modalidades, o encaminhamento par-a-par (peer-to-peer) é opcionalmente suportado pelo complexo de raiz 115.
[0029] Nesse caso, o concentrador de controlador 115 se encontra acoplado no comutador/na ponte 120 pela hiperligação em série 119. Os módulos de entrada/saída 117 e 121, que podem igualmente ser referidos como interfaces/portas 117 e 121, incluem/implementam uma pilha de protocolos em camadas para providenciar a comunicação entre o concentrador de controlador 115 e o comutador 120. Em uma modalidade, múltiplos dispositivos são capazes de ser acoplados no comutador 120.
[0030] O comutador/a ponte 120 encaminha pacotes/mensagens desde o dispositivo 125 a montante, ou seja, até uma hierarquia em direção a um complexo de raiz, até ao concentrador de controlador 115 e a jusante, ou seja, até uma hierarquia longe de um controlador raiz, desde o processador 105 ou da memória do sistema 110 até ao dispositivo 125. O comutador 120, em uma modalidade, é referido como uma montagem lógica de múltiplos dispositivos virtuais de ponte PCI-para- PCI. O dispositivo 125 inclui qualquer dispositivo ou componente interno ou externo a ser acoplado em um sistema eletrônico, como por exemplo um dispositivo de E/S, uma Placa de Interface de Rede (NIC - Network Interface Controller), uma placa de suplemento, um processador de áudio, um processador de rede, um disco rígido, um dispositivo de armazenamento, uma ROM de CD/DVD, um monitor, uma impressora, um mouse, um teclado, um roteador, um dispositivo de armazenamento portátil, um dispositivo Firewire, um dispositivo USB (Universal Serial Bus - Barramento em Série Universal), um scanner e outros dispositivos de entrada/saída. Muitas vezes, no vernáculo PCIe, esse dispositivo é referido como um ponto final. Embora não especificamente ilustrado, o dispositivo 125 pode incluir uma ponte PCIe para PCI/PCI-X de modo a suportar dispositivos PCI legados ou de outra versão. Os dispositivos de ponto final em PCIe são muitas vezes classificados como pontos finais integrados de complexo de raiz, PCIe ou legados.
[0031] O acelerador de gráficos 130 é igualmente acoplado no concentrador de controlador 115 pela hiperligação em série 132. Em uma modalidade, o acelerador de gráficos 130 é acoplado em um MCH, que é acoplado em um ICH. O comutador 120, e conformemente o dispositivo de E/S 125, é depois acoplado no ICH. Os módulos de E/S 131 e 118 irão igualmente implementar uma pilha de protocolos em camadas para a comunicação entre o acelerador de gráficos 130 e o concentrador de controlador 115. Similar à descrição do MCH acima, um controlador de gráficos ou o próprio acelerador de gráficos 130 pode ser integrado no processador 105. Ademais, uma ou mais hiperligações (p. ex., 123) do sistema podem incluir um ou mais dispositivos de extensão (p. ex., 150), como por exemplo retemporizadores, repetidores, etc.
[0032] Em relação à FIG. 2, é ilustrada uma modalidade de uma pilha de protocolos em camadas. A pilha de protocolos em camadas 200 inclui qualquer forma de uma pilha de comunicações em camadas, como por exemplo uma pilha QPI (Quick Path Interconnect - Interconexão Quick Path), uma pilha PCie, uma pilha de interconexão de computação de alto desempenho de próxima geração ou outra pilha em camadas. Embora a descrição imediatamente abaixo em referência às FIGs. 1 a 4 seja em relação a uma pilha PCIe, os mesmos conceitos podem ser aplicados em outras pilhas de interconexão. Em uma modalidade, a pilha de protocolos 200 é uma pilha de protocolos PCIe incluindo a camada de transação 205, a camada de hiperligação 210 e a camada física 220. Uma interface, como por exemplo as interfaces 117, 118, 121, 122, 126 e 131 na FIG. 1, pode ser representada como uma pilha de protocolos de comunicação 200. A representação como uma pilha de protocolos de comunicação pode igualmente ser referida como um módulo ou uma interface implementando/incluindo uma pilha de protocolos.
[0033] PCI Express usa pacotes para a comunicação de informações entre componentes. Os pacotes são formados na Camada de Transação 205 e na Camada de Hiperligação de Dados 210 para transportar as informações do componente de transmissão para o componente de recepção. À medida que os pacotes transmitidos circulam pelas outras camadas, os mesmos se estendem com informações adicionais necessárias para manejar pacotes em essas camadas. No lado de recepção, o processo inverso ocorre e os pacotes são transformados da respectiva representação de Camada Física 220 para a representação de Camada de Hiperligação de Dados 210 e finalmente (para os Pacotes da Camada de Transação) para a forma que pode ser processada pela Camada de Transação 205 do dispositivo de recepção.
Camada de Transação
[0034] Em uma modalidade, a camada de transação 205 irá providenciar uma interface entre o núcleo de processamento de um dispositivo e a arquitetura de interconexão, como por exemplo a camada de hiperligação de dados 210 e a camada física 220. A esse respeito, uma responsabilidade primária da camada de transação 205 é a montagem e a desmontagem de pacotes (ou seja, pacotes da camada de transação ou TLPs). A camada de translação 205 gerencia tipicamente controle de fluxo baseado em créditos para TLPs. PCIe implementa transações divididas, ou seja transações com pedido e resposta separados por tempo, permitindo que uma hiperligação transporte outro tráfego enquanto o dispositivo-alvo reúne dados para a resposta.
[0035] Além disso, PCIe utiliza controle de fluxo baseado em créditos. Nesse esquema, um dispositivo anuncia uma quantidade inicial de créditos para cada um dos buffers de recepção na Camada de Transação 205. Um dispositivo externo na extremidade oposta da hiperligação, como por exemplo o concentrador de 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éditos. Na recepção de uma resposta, é restaurada uma quantidade de créditos. Uma vantagem de um esquema de créditos é o fato de a latência do retorno de créditos não afetar o desempenho, desde que o limite de créditos não seja encontrado.
[0036] Em uma modalidade, quatro espaços de endereço de transação incluem um espaço de endereço de configuração, um espaço de endereço de memória, um espaço de endereço de entrada/saída e um espaço de endereço de mensagem. As transações de espaço de memória incluem um ou mais pedidos de leitura e pedidos de escrita para a transferência de dados para/desde uma localização mapeada em memória. Em uma modalidade, as transações de espaço de memória são capazes de usar dois formatos de endereço diferentes, p. ex., um formato de endereço curto, como por exemplo um endereço de 32 bits, ou um formato de endereço longo, como por exemplo um endereço de 64 bits. As transações de espaço de configuração são usadas para acessar o espaço de configuração dos dispositivos PCIe. As transações para o espaço de configuração incluem pedidos de leitura e pedidos de escrita. As transações de espaço de mensagem (ou simplesmente mensagens) são definidas para suportar comunicação em banda entre agentes PCIe.
[0037] Por consequência, em uma modalidade, a camada de transação 205 monta cabeçalho de pacote/carga útil 206. O formato para os atuais cabeçalhos de pacotes/cargas úteis pode ser encontrado no relatório descritivo de PCIe no website do relatório descritivo de PCIe.
[0038] Brevemente em relação à FIG. 3, é ilustrada uma modalidade de um descritor de transação PCIe. Em uma modalidade, o descritor de transação 300 é um mecanismo para o transporte de informações de transação. A esse respeito, o descritor de transação 300 suporta a identificação de transações em um sistema. Outros potenciais usos incluem o seguimento de modificações de ordenação de transação predefinida e a associação de transação com canais.
[0039] O descritor de transação 300 inclui o campo de identificador global 302, o campo de atributos 304 e o campo de identificador de canal 306. No exemplo ilustrado, o campo de identificador global 302 é representado compreendendo o campo de identificador de transação local 308 e o campo de identificador de origem 310. Em uma modalidade, o identificador de transação global 302 é exclusivo para todos os pedidos excepcionais.
[0040] De acordo com uma implementação, o campo de identificador de transação local 308 é um campo gerado por um agente requerente, e é exclusivo para todos os pedidos excepcionais que requerem uma conclusão para esse agente requerente. Ademais, nesse exemplo, o identificador de origem 310 identifica exclusivamente o agente requerente dentro de uma hierarquia PCIe. Conformemente, junto com o ID de origem 310, o campo do identificador de transação local 308 fornece identificação global de uma transação dentro de um domínio de hierarquia.
[0041] O campo de atributo 304 especifica características e relações da transação. A esse respeito, o campo de atributo 304 é potencialmente usado para fornecer informações adicionais que permitem a modificação do tratamento predefinido das transações. Em uma modalidade, o campo de atributo 304 inclui o campo de prioridade 312, o campo reservado 314, o campo de ordenação 316 e o campo sem monitoração 318. Nesse caso, o subcampo de prioridade 312 pode ser modificado por um iniciador para a atribuição de uma prioridade à transação. O campo de atributo reservado 314 é deixado reservado para uso futuro ou definido pelo vendedor. Os possíveis modelos de uso usando atributos de prioridade ou segurança podem ser implementados usando o campo de atributo reservado.
[0042] Em esse exemplo, o campo de atributo de ordenação 316 é usado para fornecer informações opcionais transportando o tipo de ordenação que pode modificar regras de ordenação predefinidas. De acordo com uma implementação de exemplo, um atributo de ordenação de “0” indica que as regras de ordenação predefinidas são para aplicar, em que um atributo de ordenação de “1” indica ordenação descontraída, em que as escritas podem passar escritas na mesma direção, e as conclusões de leitura podem passar escritas na mesma direção. O campo de atributo de monitoração 318 é utilizado para determinar se as transações são monitoradas. Como ilustrado, o Campo ID de canal 306 identifica um canal ao qual uma transação se encontra associada.
Camada de Hiperligação
[0043] A camada de hiperligação 210, igualmente referida como camada de hiperligação de dados 210, atua como um estágio intermédio entre a camada de transação 205 e a camada física 220. Em uma modalidade, uma responsabilidade da camada de hiperligação de dados 210 está providenciando um mecanismo confiável para a troca de Pacotes da Camada de Transação (TLPs - Transaction Layer Packets) entre dois componentes e uma hiperligação. Um lado da Camada de Hiperligação de Dados 210 aceita TLPs montados pela Camada de Transação 205, aplica o identificador de sequência de pacotes 211, ou seja, um número de identificação ou número de pacote, calcula e aplica um código de detecção de erro, ou seja, CRC 212, e submete os TLPs modificados à Camada Física 220 para a transmissão entre um dispositivo físico e um externo.
Camada Física
[0044] Em uma modalidade, a camada física 220 inclui um sub-bloco lógico 221 e um sub-bloco elétrico 222 para transmitir fisicamente um pacote a um dispositivo externo. Nesse caso, 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 as informações de saída para a transmissão pelo sub-bloco físico 222, e uma seção de receptor para identificar e preparar informações recebidas antes de passar as mesmas para a Camada Fina 210.
[0045] O bloco físico 222 inclui um transmissor e um receptor. O sub-bloco lógico 221 fornece símbolos ao transmissor, que o transmissor serializa e transmite a um dispositivo externo. O receptor recebe símbolos serializados desde 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 modalidade, é empregue um código de transmissão 8b/10b, em que são transmitidos/recebidos símbolos de dez bits. Nesse caso, são usados símbolos especiais para cercar um pacote com tramas 223. Além disso, em um exemplo, o receptor fornece igualmente um relógio de símbolos recuperado desde o fluxo em série de entrada.
[0046] Como mencionado acima, embora a camada de transação 205, a camada de hiperligação 210 e a camada física 220 sejam descritas em referência a uma modalidade específica de uma pilha de protocolos PCIe, uma pilha de protocolos em 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, uma camada de hiperligação, e uma terceira camada para transmitir os pacotes, ou seja, uma camada física. Como um exemplo específico, é utilizado um protocolo em camadas de interface padrão comum (CSI - Common Standard Interface).
[0047] Em seguida, em relação à FIG. 4, é ilustrada uma estrutura ponto-a-ponto em série PCIe. Embora seja ilustrada uma modalidade de uma hiperligação ponto-a- ponto em série PCIe, uma hiperligação ponto-a-ponto em série não é tão limitada, uma vez que a mesma inclui qualquer caminho de transmissão para transmitir dados em série. Na modalidade ilustrada, uma hiperligação PCIe básica inclui dois pares de sinais de baixa voltagem acionados de modo diferencial: um par de transmissão 406/411 e um par de recepção 412/407. Conformemente, o dispositivo 405 inclui lógica de transmissão 406 para transmitir dados ao dispositivo 410 e lógica de recepção 407 para receber dados do dispositivo 410. Em outras palavras, dois caminhos de transmissão, ou seja, caminhos 416 e 417, e dois caminhos de recepção, ou seja, caminhos 418 e 419, são incluídos em uma hiperligação PCIe.
[0048] Um caminho de transmissão se refere a qualquer caminho para a transmissão de dados, como por exemplo uma linha de transmissão, uma linha de cobre, uma linha óptica, um canal de comunicação sem fios, uma hiperligação de comunicação de infravermelhos ou outro caminho de comunicação. Uma conexão entre dois dispositivos, como por exemplo o dispositivo 405 e o dispositivo 410, é referida como uma hiperligação, como por exemplo a hiperligação 415. Uma hiperligação pode suportar um corredor - cada corredor representando um conjunto de pares de sinais diferenciais (um par para transmissão, um par para recepção). Para escalar a largura de banda, uma hiperligação pode agregar múltiplos corredores indicados por xN, em que N corresponde a qualquer largura de Hiperligação suportada, como por exemplo 1, 2, 4, 8, 12, 16, 32, 64 ou maior.
[0049] Um par diferencial se refere a dois caminhos de transmissão, como por exemplo as linhas 416 e 417, para transmitir sinais diferenciais. Como um exemplo, quando a linha 416 alterna entre um nível de baixa voltagem e um nível de alta voltagem, ou seja, uma borda de subida, a linha 417 se movimenta de um alto nível de lógica para um baixo nível de lógica, ou seja, uma borda de descida. Os sinais diferenciais potencialmente demonstram melhores características elétricas, como por exemplo melhor integridade do sinal, ou seja, acoplamento cruzado, ultrapassagem/aproximação da voltagem, toque, etc. Isso permite uma melhor janela de temporização, que permite frequências de transmissão mais rápidas.
[0050] Em algumas modalidades, uma hiperligação, como por exemplo uma hiperligação compatível com PCIe, pode incluir um ou mais retemporizadores ou outros dispositivos de extensão, como por exemplo um repetidor. Um dispositivo retemporizador (ou simplesmente “retemporizador”) pode incluir dispositivos eletrônicos ativos que recebem e retransmitem (retemporizam) sinais de E/S digitais. Os retemporizadores podem ser usados para estender o comprimento de um canal que pode ser usado com um barramento de E/S digital. Os retemporizadores podem ter suporte para protocolos, ter software transparente e ser capazes de executar um procedimento de equalização de hiperligação, como por exemplo o procedimento de equalização de hiperligação de PCIe. Uma hiperligação incorporando um ou mais retemporizadores pode formar duas ou mais sub- hiperligações elétricas separadas em taxas de dados comparáveis a taxas de dados realizadas por hiperligações empregando protocolos similares, mas sem nenhuns retemporizadores. Por exemplo, uma hiperligação incluindo um único retemporizador pode formar uma hiperligação com duas sub-hiperligações separadas, cada uma operando em 8,0 GT/s ou superior.
[0051] Contudo, existem outros dispositivos de extensão, e alguns deles possuem problemas de interoperabilidade com alguns protocolos de comunicação. Como um exemplo, alguns repetidores podem não suportar o protocolo de equalização de hiperligação de PCIe 3.0. Ademais, algumas aplicações tendem a utilizar canais de comprimentos físicos mais longos que usam dispositivos de extensão para a realização desses comprimentos de canal. Essas e outras tendências tornaram os retemporizadores dispositivos cada vez mais importantes em muitos sistemas.
[0052] As FIGs. 5A e 5B ilustram diagramas de blocos simplificados 500a e b de hiperligações de exemplo incluindo um ou mais retemporizadores. Por exemplo, na FIG. 5A, uma hiperligação conectando um primeiro componente 505 (p. ex., um componente a montante) a um segundo componente 510 (p. ex., um componente a jusante) pode incluir um único retemporizador 515a. Uma primeira sub-hiperligação 520a pode conectar o primeiro componente 505 ao retemporizador 515a e uma segunda sub- hiperligação 520b pode conectar o retemporizador 515a ao segundo componente. Como ilustrado na FIG. 5B, múltiplos retemporizadores 515a, 515b podem ser utilizados para estender uma hiperligação. Três sub-hiperligações 520a a c podem ser definidas pelos dois retemporizadores 515a, 515b, com uma primeira sub-hiperligação 515a conectando o primeiro componente ao primeiro retemporizador 515a, uma segunda sub-hiperligação conectando o primeiro retemporizador 515a ao segundo retemporizador 515b, e a terceira sub-hiperligação 515c conectando o segundo retemporizador 515b ao segundo componente.
[0053] Como ilustrado nos exemplos das FIGs. 5A e 5B, um retemporizador pode incluir duas pseudoportas, e as pseudoportas podem determinar a respectiva orientação a jusante/a montante de forma dinâmica. Cada retemporizador 515a, 515b pode ter um caminho a montante e um caminho a jusante. Ademais, os retemporizadores 515a, 515b podem suportar modos de operação incluindo um modo de reencaminhamento e um modo de execução. Um retemporizador 515a, 515b em alguns casos pode descodificar dados recebidos na sub-hiperligação e recodificar os dados que são para reencaminhar a jusante na respectiva outra sub-hiperligação. Em alguns casos, o retemporizador pode modificar alguns valores nos dados que recebe, como por exemplo no processamento e reencaminhamento de dados de conjunto ordenado. Adicionalmente, um retemporizador pode potencialmente suportar qualquer opção de largura como a respectiva largura máxima, como por exemplo um conjunto de opções de largura definidas por uma especificação, como por exemplo PCIe.
[0054] Em alguns casos, podem surgir falhas em um canal. Na utilização de um ou mais retemporizadores, uma hiperligação inclui múltiplas sub-hiperligações, e uma falha em qualquer uma das sub-hiperligações pode resultar na detecção de uma falha para toda a hiperligação. É possível fornecer um modo de teste que permita que a localização de falhas no sistema seja determinada ao nível da sub-hiperligação, de modo que a falha de sub-hiperligação específica seja identificada em uma hiperligação incluindo um ou mais retemporizadores. A identificação da sub-hiperligação afetada pode ser usada em um procedimento de depuração efetuado pela hiperligação.
[0055] As FIGs. 6A a 6E ilustram diagramas de blocos de exemplo 600a a e ilustrando implementações de exemplo de um modo de teste para determinar quais das sub- hiperligações elétricas em um canal estão produzindo erros no canal. No exemplo da FIG. 6A, o modo de teste pode ser introduzido e o modo de teste pode definir um sinal estandardizado destinado a ser enviado por um canal entre uma porta a jusante 605 (p. ex., de um primeiro ponto final) e uma porta a montante 610 (p. ex., de outro ponto final) e por um retemporizador 615. Um primeiro ponto final (p. ex., 605) (como por exemplo uma porta raiz) pode enviar um sinal que inclui uma sequência definida 620a de dados seguida por uma sequência de comunicação de erros 625a. O retemporizador 615 recebe o sinal 630 e determina se a sequência 620a corresponde ou não à sequência que é esperada. Se a sequência 625a não corresponder à sequência definida para o modo de teste, o retemporizador 615 tem de identificar o desvio como um erro.
[0056] Após a recepção do sinal 630, o retemporizador 615 pode, por sua vez, gerar um outro sinal 635 em conexão com o modo de teste. Em uma implementação, no sinal 635, o retemporizador 615 tem de reproduzir a mesma sequência definida (em 620b). O retemporizador 615 não reproduz a sequência 620a como recebido no sinal 630, mas regenera a sequência novamente (p. ex., 620b) como definido para o modo de teste. Isso pode servir para isolar falhas de sub-hiperligação, de modo que uma sequência contendo erros não se propague pelo canal, fazendo com que seja difícil identificar onde (p. ex., a sub-hiperligação) se encontra a origem do erro. Todavia, as informações codificadas na sequência de comunicação de erros (p. ex., 625a, 625b) têm de ser mantidas em cada sinal enviado no modo de teste, de modo que os resultados de detecção de erro passem de dispositivo para dispositivo dentro do modo de teste. Ademais, as informações de detecção de erros codificadas em cada sequência de comunicação de erros (p. ex., 625a, 625b) têm de ser atualizadas à medida que vão sendo detectados mais erros dentro das sub-hiperligações do canal. Por exemplo, o retemporizador 615, na recepção e análise da sequência 620a relativamente a erros, pode codificar, pelo menos, uma porção da sequência de comunicação de erros 625b para identificar se um ou mais erros foram ou não detectados no retemporizador 615 para um ponto final de conexão de sub-hiperligação 605 e retemporizador 615. Essas informações podem ser além das outras informações descritas na sequência de comunicação de erros anteriormente recebida 625a.
[0057] Continuando com o exemplo da FIG. 6A, o retemporizador 615 pode enviar o sinal 635 que inclui a sequência de comunicação de erros atualizada 625b e a sequência novamente gerada 620b. Um segundo ponto final 610 pode receber o sinal 635 e analisar a sequência 620b relativamente a discrepâncias (p. ex., um ou mais bits incorretos se desviando da sequência definida para o modo de teste), identificando uma condição de erro ou falha na sub-hiperligação entre o retemporizador 615 e o ponto final 610 com base em quaisquer discrepâncias identificadas. O segundo ponto final pode ainda descodificar a sequência de comunicação de erros 625b para identificar qual (se alguma) das sub-hiperligações no canal produziu um erro durante o teste. Os erros podem, em alguns casos, ser registrados em um ou mais registros para posterior processamento e análise por ferramentas de gerenciamento e testes de hiperligação, entre outros exemplos.
[0058] Em relação ao exemplo da FIG. 6B, em algumas implementações, um estado de loopback pode ser alavancado para a implementação de um modo de teste. Em alguns casos, o uso de um modo de teste de loopback pode ajudar na superação de potenciais problemas de retrocompatibilidade. Em muitos casos, os pontos finais e/ou retemporizadores em um canal podem ser fornecidos por diferentes fabricantes, vendedores, etc. Um ou mais dos dispositivos de ponto final podem não possuir lógica para suportar o modo de teste (p. ex., detectar erros em uma sequência de teste, atualizar dados da sequência de comunicação de erros, atualizar registros de erros de sub-hiperligação, etc.), enquanto suportam, todavia, um modo de loopback, como por exemplo um modo de loopback definido de acordo com um protocolo de interconexão utilizado por dispositivos no canal (p. ex., PCIe). Um ponto final específico que não suporta o modo de teste pode devolver os dados da sequência de comunicação de erros gerados por, e recebidos desde os, componentes a montante (p. ex., o outro ponto final e os retemporizadores), permitindo que um ou mais desses componentes observem e processem os resultados do modo de teste, apesar do ponto final específico não suportar totalmente o modo de teste, entre outras implementações de exemplo.
[0059] Na FIG. 6B, os sinais 630 e 635 são enviados desde um primeiro ponto final 605 a um retemporizador 615 e desde o retemporizador 615 ao segundo ponto final 610 respectivamente, por exemplo, como no exemplo da FIG. 6A. O modo de teste pode ser implementado em um estado de loopback, de modo que, quando o sinal 635 alcança o segundo ponto final 610, o sinal seja colocado em loopback por um sinal 640 enviado desde o segundo ponto final 610 ao retemporizador 615. O sinal 640 pode incluir a regeneração da sequência 620c e uma sequência de comunicação de erros 625c que inclui informações de detecção de erros desde as análises das sequências 620a e 620b no sinal. O retemporizador 615 pode analisar a sequência 620c relativamente a erros. O estado de erro da sub-hiperligação entre o ponto final 610 e o retemporizador 615, como detectado pelo retemporizador 615 desde a sequência recebida 620c, pode ser comunicado na sequência de comunicação de erros atualizada 625d incluída no sinal 645 que inclui ainda outra instância da sequência 620d, como gerado e enviado pelo retemporizador 615 ao ponto final 605.
[0060] No exemplo da FIG. 6B, o ponto final 605 pode efetuar uma análise de erros final no loopback de teste analisando a sequência 620d recebida no sinal de modo de teste 645. Ademais, o ponto final 605 pode interpretar a sequência de comunicação de erros 625d para a identificação dos resultados das análises das sequências 620a, 620b, 620c, 620d durante o loopback. As condições de erro nas sub-hiperligações específicas entre os pontos finais 605 e 610 e o retemporizador 615 podem ser identificadas desde as informações incluídas na sequência de comunicação de erros 625d. A lógica adicional no ponto final 605 (e potencialmente também (ou em alternativa) no ponto final 610 ou retemporizador 615) pode reportar o estado de erro de sub-hiperligação a um registro (p. ex., correspondendo ao canal) ou outra estrutura de dados ou lógica para o uso na depuração e análise de hiperligações, entre outros exemplos.
[0061] Em relação à FIG. 6C, em algumas implementações, as sequências de comunicação de erro (p. ex., 625a a d) podem incluir uma série de conjuntos de dados de comunicação de erros (ou “segmentos”), em que cada segmento de comunicação de erros corresponde a, pelo menos, uma das sub-hiperligações em um canal incluindo um ou mais retemporizadores (p. ex., 615) e conectando dois pontos finais 605, 610. Por exemplo, no exemplo da FIG. 6B, as condições de erro são comunicadas três vezes (p. ex., em 625b, 625c, 625d sumariando a análise das sequências 620a, 620b, 620c). Conformemente, pelo menos três segmentos podem ser fornecidos em cada uma das sequências de comunicação de erros 625a e b. Por exemplo, conforme ilustrado no exemplo da FIG. 6C, os resultados da análise da sequência 620a podem ser reflectidos codificando os resultados no segmento “Erro1” incluído na sequência de comunicação de erros 625b. A codificação do segmento de comunicação de erros Erro1 (pelo retemporizador 615), e as informações de estado de erro descritas pela codificação, podem passar efetivamente pelo ponto final 610 na sequência de comunicação de erros 625c. Por exemplo, o ponto final 610 pode recodificar Erro1 da sequência de comunicação de erros 625c com a mesma codificação incluída em Erro1 da sequência de comunicação de erros 625b. Ademais, o ponto final 610 pode identificar que os resultados da respectiva análise (p. ex., da sequência recebida 620b) têm de ser codificados em outro dos segmentos da sequência de comunicação de erros, nesse exemplo “Erro2” na sequência de comunicação de erros 625c. Igualmente, a sequência de comunicação de erros 625d seguinte (p. ex., gerada pelo retemporizador 615) pode incluir as mesmas codificações de Erro1 e Erro2 como incluído na sequência de comunicação de erros 625c para propagar os resultados de análise reportados ao ponto final 605 junto com os resultados da análise da sequência 620c efetuada pelo retemporizador 615 e descrita na codificação do retemporizador de um segmento de comunicação de erros correspondente “Erro3”, entre outros exemplos.
[0062] As sequências de comunicação de erros ou outros dados de comunicação de erros podem ser formatados e codificados em uma variedade de formas para documentar progressivamente o estado de erro das sub-hiperligações de um canal durante um modo de teste. Como introduzido no exemplo da FIG. 6C, em algumas implementações, os dados de comunicação de erros podem ser segmentados, com cada segmento designado para descrever informações de estado de erro de uma determinada sub-hiperligação do canal. Em algumas implementações, as sequências de comunicação de erros podem ser pré-configuradas com base na estrutura das hiperligações que têm de descrever. Por exemplo, se tiver de ser fornecido um modo de teste de loopback para uma hiperligação empregando dois retemporizadores (e, desse modo, três sub-hiperligações em cada direção), podem ser definidos pelo menos cinco segmentos de comunicação de erros. Por outro lado, para uma hiperligação empregando um único retemporizador (e duas sub-hiperligações), pode ser definida uma sequência de comunicação de erros para incluir, pelo menos, três segmentos para testar a hiperligação, etc. Em alguns casos, pode ser definida uma sequência de comunicação de erros comum que inclui um número de segmentos que corresponde a um número máximo de sub-hiperligações suportadas para o modo de teste. Ainda em outros exemplos, a segmentação e a estrutura das sequências de comunicação de erros podem ser determinadas de modo dinâmico, por exemplo, analisando a hiperligação para um número de dispositivos de extensão e sub-hiperligações, entre outros exemplos.
[0063] Como ilustrado em alguns dos exemplos anteriores, uma sequência de comunicação de erros, em alguns casos, pode ser implementada como uma sequência de segmentos, cada um dos segmentos correspondendo à detecção de erros para uma respectiva sub-hiperligação em um canal. Ademais, os segmentos separados podem ser estaticamente atribuídos a uma porção a montante do canal associado à sub-hiperligação e à porção a jusante do canal associado à mesma sub-hiperligação. Em outros casos, os segmentos de sequência de comunicação de erros podem ser mapeados ou atribuídos de modo dinâmico aos resultados de comunicação de erros de sub-hiperligação. Por exemplo, os segmentos podem ser atribuídos em uma base “primeiro a chegar”, com os resultados do relatório de erros de uma primeira avaliação ocupando o primeiro segmento, os resultados de uma segunda avaliação ocupando o segundo segmento, e assim sucessivamente. Em algumas implementações, um modo de teste pode ser usado em ambas as direções da hiperligação, de modo que, em alguns casos, a sequência de modo de teste (p. ex., 620) seja primeiro enviada a montante na hiperligação e, em outros casos, primeiro enviada a jusante na mesma hiperligação. Em esses casos, a avaliação de erros da primeira sub-hiperligação pode ser a primeira a ser reportada em alguns testes (p. ex., e reportada no segmento Erro1) e, em outros casos, a avaliação de outra sub-hiperligação pode em alternativa ser reportada primeiro (p. ex., no segmento Erro1), entre outros potenciais exemplos.
[0064] Em algumas implementações, um conjunto ordenado, uma sequência de treinamento ou outra sequência de dados definida de um protocolo existente, como por exemplo PCIe, PCI, QPI, etc., podem ser alavancados para o uso em um modo de teste. Por exemplo, a sequência de modo de teste fixo (p. ex., 620) comunicada por cada sub-hiperligação pode ser definida para incluir uma sequência definida de um protocolo de interconexão. Por exemplo, em algumas implementações, um conjunto ordenado inativo elétrico (EIOS - Electrical Idle Ordered Set) PCIe, um conjunto ordenado de sequência de saída inativo elétrico (EIEOS - Electrical Idle Exit Sequence Ordered Set), um padrão de conformidade modificado ou outro padrão ou conjunto ordenado pode ser usado como, ou incluído na, sequência de modo de teste fixo. Em alguns casos, os conjuntos ordenados definidos ou outras sequências podem ser modificados ou melhorados para o uso em ou como os dados de comunicação de erros (p. ex., 625). A alavancagem de um conjunto ordenado existente definido ou de outra sequência para a comunicação de erros pode ajudar a alcançar maior interoperabilidade, permitindo dispositivos legados, em alguns casos, para a aceitação e validação dos sinais mesmo quando o dispositivo carece de lógica para a interpretação, com precisão, das codificações de erros específicas incluídas no conjunto ordenado estabelecido. Por exemplo, em uma implementação, podem ser usados conjuntos ordenados SKP (SKP OSes) PCIe ou outro conjunto ordenado. Por exemplo, como ilustrado nos exemplos das FIGs. 6D e 6E, pode ser utilizada uma sequência de conjuntos ordenados (p. ex., OS1 a OS6) como os segmentos em uma sequência de comunicação de erros de exemplo (p. ex., 625). Cada conjunto ordenado pode fornecer um ou mais campos, símbolos, bytes, etc. nos quais podem ser codificados resultados de avaliação de erros.
[0065] No exemplo da FIG. 6D, uma hiperligação de exemplo conecta uma porta raiz 650 a um determinado ponto final 655 e inclui dois retemporizadores 660, 665. Três sub-hiperligações 675a, 675b, 675c podem conectar a porta raiz 650 ao primeiro retemporizador 660, o primeiro retemporizador 660 ao segundo retemporizador 665, e o segundo retemporizador 665 ao dispositivo de ponto de final 655. No exemplo das FIGs. 6D e 6E, um registro pode incluir dados definindo que conjuntos ordenados (p. ex., OS1 a OS6) correspondem a que canal de sub-hiperligação dentro de um modo de teste. A sequência/o padrão de modo de teste fixo (p. ex., 620) a incluir em cada sinal de modo de teste (p. ex., 670a a 670f) também pode ser previamente atribuído, de modo que, quando é introduzido um modo de teste, cada dispositivo (p. ex., 650, 655, 660, 665) na hiperligação seja configurado para avaliar se o padrão 620 foi transmitido de forma bem-sucedida ou não por cada canal de sub-hiperligação. Como nos exemplos anteriores, se o padrão recebido se desviar do padrão esperado, o dispositivo de recepção/avaliação pode codificar o segmento de comunicação de erros (p. ex., OS1 a 0S6) correspondente a essa sub-hiperligação com informações descrevendo o erro. Essas informações podem incluir, por exemplo, o número de erros detectados no padrão recebido pela sub-hiperligação, o bloco e/ou bit onde o primeiro dos erros foi detectado, o corredor da sub-hiperligação onde o erro foi detectado, entre outros exemplos. Esse conjunto ordenado contendo o relatório de erros pode ser reencaminhado pelos dispositivos subsequentes na hiperligação para preservar os resultados de avaliação de erro da sub-hiperligação específica como providenciado pelo dispositivo na extremidade de recepção da sub-hiperligação específica.
[0066] Como uma ilustração, no exemplo da FIG. 6D, é enviado um primeiro sinal 670a incluindo o padrão de modo de teste 620 e os segmentos de uma sequência de comunicação de erros 625 em conexão com um modo de teste implementado usando um estado de loopback do sistema. Como o sinal inicial 670a é enviado antes de qualquer erro ter sido avaliado, as porções dos segmentos (p. ex., OS1 a OS6) de uma sequência de comunicação de erros 625 a ser codificada com resultados de erro podem ser enviadas vazias (ou codificadas para indicar que ainda tem de ser concluído um relatório de erros de cada canal de sub-hiperligação). Um primeiro retemporizador 660 pode receber o sinal 670a e avaliar se o padrão de modo de teste se desvia ou não do esperado. Nesse exemplo, o padrão de modo de teste 620 é enviado sem erros pelo canal a jusante da primeira sub-hiperligação 675a. O retemporizador 660 pode identificar que tem de ser usado um primeiro conjunto ordenado OS1 para a documentação de erros para o canal a jusante da primeira sub- hiperligação 675a e, conformemente, codificar o segmento de sequência de comunicação de erros OS1 para indicar que não foram detectados nenhuns erros no canal a jusante da primeira sub-hiperligação 675a. O modo de teste de loopback pode continuar com o retemporizador 660 regenerando o padrão de modo de teste e incluindo o mesmo no sinal 670b junto com os dados da sequência de comunicação de erros que incluem os resultados codificados da avaliação da primeira sub-hiperligação 675a em OS1 (p. ex., ilustrando “sem” erros).
[0067] Como ilustrado no exemplo da FIG. 6D, no caso do sinal 670b, o padrão, como recebido pelo segundo retemporizador 665, inclui um erro. O erro pode ser evidenciado por um ou mais bits do padrão recebido se desviando do valor esperado do padrão. Esses erros podem ser causados por uma variedade de potenciais falhas na sub-hiperligação, incluindo o dispositivo de transmissão (p. ex., 660), o dispositivo de recepção (p. ex., 665) ou os corredores da própria sub-hiperligação (p. ex., 675b). Conformemente, nesse exemplo, o segundo retemporizador 665, na geração e no envio do seguinte sinal de modo de teste 670c, pode identificar que os resultados de erro para o canal a jusante da segunda sub-hiperligação 675b têm de ser codificados no conjunto ordenado OS2 da sequência de comunicação de erros incluída no sinal 670c. Conformemente, o segundo retemporizador 665 pode codificar OS2 no sinal 670c para a descrição dos erros detectados para o canal a jusante da segunda sub-hiperligação 675b. Ademais, o retemporizador 665 pode garantir que a codificação do conjunto ordenado OS1 é recodificada/repetida na sequência de comunicação de erros do sinal 670c para incluir a mesma codificação como recebido em OS1 do sinal de modo de teste 670b. O sinal de modo de teste 670c pode então ser enviado ao ponto final 655 pelo canal a jusante da sub-hiperligação 675c e o ponto final 655 pode avaliar o padrão de modo de teste fixo incluído no sinal 670c para identificar que o padrão é recebido sem erros pelo canal a jusante da sub-hiperligação 675c.
[0068] Continuando com o anterior exemplo, podem ser enviados subsequentes sinais de modo de teste (p. ex., 670d e 670e) de acordo com um loopback da sequência de sinais de modo de teste pelos canais a montante das sub- hiperligações 675c, 675b, 675a. Nesse exemplo, os únicos outros erros que são identificados se encontram no padrão de sinal de modo de teste 670d enviado no canal a montante da sub-hiperligação 675c. Conformemente, os sinais subsequentes de modo de teste (p. ex., 670e, 670f) podem refletir a detecção antecipada desse erro no segmento de comunicação de erros (p. ex., OS4) correspondendo ao canal a jusante da terceira sub- hiperligação 675c.
[0069] Na recepção da sequência de modo de teste em loopback (no sinal 670f), a porta raiz, ou outro componente, pode identificar as informações de erro documentadas nos segmentos de sequência de comunicação de erros OS1 a OS6 para identificar, em uma base de sub- hiperligação por sub-hiperligação, onde e que erros ocorreram. Em uma implementação de exemplo, podem ser mantidos um ou mais registros de estado de controle para os dispositivos (p. ex., 650, 655, 660, 665), as sub- hiperligações (p. ex., 675a a 675c) e/ou canais de sub- hiperligação, bem como (ou em alternativa) para ahiperligação como um todo. As informações de erroincluídas nos segmentos de sequência de comunicação de erros OS1 a OS6 podem ser usadas para popular osregistros com informações de erro. As informações deerro nesses registros podem ser seguidas para efetuar avaliações das sub-hiperligações e dos dispositivos ligados a cada sub-hiperligação para a identificação de condições de falha ou outros problemas na hiperligação.
[0070] Em uma implementação de exemplo, podem ser definidos um ou mais registros de estado de controle. É possível fornecer um registro de capacidades de hiperligação que inclua um ou mais bits para identificar se o modo de teste de loopbacké ou não suportado para um canal de sub-hiperligação (ou dispositivo em uma sub- hiperligação), e um ou mais bits podem ainda identificar que nível de capacidades de detecção de erro se encontra disponível no canal (p. ex., detecção de erro do nível de bloco, nível de bit, nível de corredor, etc.). É possível fornecer um registro de controle de hiperligação que inclua campos que possam ser definidos para indicar quando um modo de teste foi introduzido e como um determinado dispositivo tem de funcionar (p. ex., regenerar uma determinada sequência de modo de teste fixo seguida por um número específico de segmentos de comunicação de erros, etc.) durante o modo de teste. É possível fornecer igualmente um registro de erros que seja usado em conexão com dados de sequência de comunicação de erros durante um teste. O registro de erros, em um exemplo, pode incluir os campos apresentados em seguida:TABELA 1
Figure img0001
[0071] Em algumas implementações, um modo de teste de loopback (ou modo de teste) pode ser suportado em ambas as direções de uma hiperligação incluindo um ou mais retemporizadores (ou outros dispositivos de extensão). Por exemplo, como ilustrado no exemplo da FIG. 6E, um modo de teste de loopback pode em alternativa começar no ponto final 655 e ser colocado em loopback na porta raiz 650 para o ponto final 655. Por exemplo, o ponto final 655 pode enviar um primeiro sinal 680a no teste que inclui o padrão de modo de teste 620 e uma sequência de comunicação de erros que inclui seis segmentos de conjunto ordenado (p. ex., OS1 a OS6). Em esse exemplo, os segmentos de comunicação de erros OS1 a OS6 podem manter as mesmas atribuições de canal de sub- hiperligação como no exemplo da FIG. 6D. Por exemplo, o retemporizador 665 pode reportar a avaliação de erros efetuada no padrão do primeiro sinal 680a no loopback codificando o segmento de comunicação de erros atribuído ao canal a montante da sub-hiperligação 675c (p. ex., OS4) e enviando o sinal 680b incluindo o segmento codificado. Em seguida, o retemporizador 660 recebe o sinal 680b e avalia se o padrão inclui ou não erros. O retemporizador 660 codifica os respectivos resultados de teste no segmento de comunicação de erros (p. ex., OS5) atribuído ao canal a montante da sub-hiperligação 675b, e adiciona o segmento de comunicação de erros codificado à sequência de comunicação de erros incluída no sinal de modo de teste 680c. Como no exemplo da FIG. 6D, essa sequência de teste continua com os testes dos (e reportando os resultados para os) restantes canais de sub-hiperligação usando os sinais 680d a 680f. Os resultados do teste podem finalmente passar para o ponto final 655 pelo sinal 680f. Ademais, como no exemplo da FIG. 6D, o teste de sub-hiperligação final pode ser efetuado no dispositivo recebendo o sinal de modo de teste final (p. ex., 670f, 680f), embora os resultados desse teste possam não ser incluídos em nenhum dos sinais de modo de teste. Conformemente, em alguns casos, o segmento de comunicação de erros atribuído ao último canal de sub-hiperligação a ser testado pode permanecer vazio (uma vez que os resultados são obtidos diretamente pelo dispositivo (p. ex., 650, 655) efetuando o teste no sinal de modo de teste final (p. ex., 670f, 680f)) na sequência de modo de teste. Em alguns casos, os segmentos de comunicação de erros não usados podem ser codificados para propósitos diferentes da comunicação de erros, como por exemplo para a manutenção de equilíbrio DC na série de segmentos de comunicação de erros, entre outros usos de exemplo.
[0072] Como observado nos exemplos das FIGs. 6D e 6E, em algumas implementações, é possível atribuir a cada canal a montante e a jusante das sub-hiperligações a serem testadas (p. ex., 675a a c) um respectivo segmento de sequência de comunicação de erros (p. ex., OS1 a OS6), resultando (no caso ilustrado nas FIGs. 6D e 6E) em uma sequência de comunicação de erros que inclui seis segmentos. Em algumas implementações, podem ser atribuídos a cada sub-hiperligação múltiplos segmentos de comunicação de erros, estendendo ainda o comprimento dos sinais de modo de teste. Por exemplo, podem ser atribuídos a cada canal de sub-hiperligação dois ou mais segmentos de comunicação de erros (p. ex., para acomodar a codificação de informações de estado de erro mais detalhadas em conexão com o teste de cada canal de sub- hiperligação).
[0073] As modalidades alternativas, em vez de atribuírem estaticamente canais de sub-hiperligação a conjuntos ordenados específicos na sequência de comunicação de erros, podem em alternativa fornecer um conjunto de segmentos que podem ser atribuídos ou usados na invocação do modo de teste, de acordo com os parâmetros do teste. Por exemplo, em um exemplo, os segmentos de comunicação de erros fornecidos nos sinais de modo de teste podem ser usados de acordo com a ordem na qual os canais de sub-hiperligação são testados. Por exemplo, qualquer sub-hiperligação que seja a primeira a ser testada durante o modo de teste de loopbackterá os respectivos resultados codificados em um segmento designado para os resultados de teste efetuados primeiro (p. ex., OS1). Por exemplo, usando essa abordagem no exemplo da FIG. 6E, os resultados de avaliação de erros para o primeiro padrão de modo de teste no sinal 680a serão codificados em OS1, a segunda avaliação de erros do sinal 680b será codificada em OS2, e assim sucessivamente. Todavia, quando o modo de teste de loopback for executado começando com um teste de sub- hiperligação 675a, como no exemplo da FIG. 6D, os resultados de teste para o padrão na sequência 670a serão codificados em OS1, os resultados de teste para o padrão na sequência 670b serão codificados em OS2, e assim sucessivamente. Em uma implementação alternativa dessas, a sequência de comunicação de erros, em vez de fornecer segmentos de comunicação de erros específicos para cada canal de sub-hiperligação, pode fornecer segmentos de comunicação de erros de acordo com o número de resultados de teste reportados que têm de ser gerados (p. ex., usando cinco em vez de seis segmentos para suportar uma hiperligação com dois dispositivos de extensão), entre outros potenciais exemplos.
[0074] Em um exemplo ilustrativo, um modo deteste pode ser fornecido em um sistema compatível com PCIe e pode ser introduzido efetuando uma entrada no Loopback PCIe. Em algumas implementações, um sinal de controle pode ser enviado para colocar a hiperligação (incluindo um ou mais dispositivos de extensão) em loopback e indicar ainda que o loopbacké um loopback de modo de teste. Em outros casos, podem ser usados um ou mais bits de sequências de treinamento e/ou tokens de tramas para negociar a entrada no estado de loopback de modo de teste. Em alguns casos, um ou mais bits das sequências de treinamento usados para a transição para o estado de loopback podem incluir um ou mais bits codificados para indicar que o estado de loopbacké um estado de loopback de modo de teste, como por exemplo um implementando os princípios dos modos de teste de exemplo aqui descritos. Ademais, em um exemplo, a sinalização de loopback de modo de teste pode começar com o envio de um EIEOS seguido por um início de conjunto ordenado de fluxo de dados (SDS) indicando um estado de Loopback.Ativo. A sequência EIEOS-SDS, em um exemplo, pode servir como o padrão de modo de teste fixo que tem de ser avaliado para cada sub-hiperligação. O modo de teste pode ser definido, de modo que os únicos padrões permitidos no bloco de dados sejam dados_em = 0 (p. ex., a saída LFSR padrão) e uma sequência de SKP OSes incorporando segmentos da sequência de comunicação de erros a ser incluída em cada sinal de modo de teste enviado de sub-hiperligação para sub-hiperligação. Em uma modalidade definindo uma série de seis SKP OSes consecutivos, a sequência de SKP OSes pode ser enviada exatamente no intervalo de bloco 370. Cada dispositivo na hiperligação pode conhecer e esperar os sinais de modo de teste para avançar conformemente (com a exceção de alguns dispositivos não equipados com lógica para descodificar informações de comunicação de erros codificadas nas variantes SKP OS usadas nos sinais de modo de teste). As arquiteturas podem suportar diferentes arquiteturas de cronometragem e algumas delas requerem a transmissão de SKP OS em diferentes taxas nominais. Por exemplo, no caso de uma arquitetura de Relógios de Referência Separados com Cronometragem de Espetro Alargado (SSC - Spread Spectrum Clocking) Independente (SRIS - Separate Reference Clocks with Independent Spread Spectrum Clocking), os seis SKP OSes podem ser agendados após 37 Blocos de Dados.
[0075] A FIG. 7 ilustra uma representação de umconjunto ordenado SKP PCIe 700 de exemplo, aumentado para suportar o modo de teste de loopback descrito acima. Por exemplo, os símbolos 0 a (4*N-1) podem corresponder ao símbolo SKP padrão. O símbolo 4*N pode ser o símbolo SKP_FIM padrão alertando que os únicos mais três símbolos são incluídos no SKP OS presente. Os últimos três símbolos 705, 710, 715 podem ser reservados para serem codificados com informações correspondentes a um caso de uso específico do SKP OS. Em alguns casos, os símbolos SKP padrão que precedem os símbolos SKP 705, 710, 715 podem igualmente ser testados (junto com o padrão de modo de teste) relativamente a erros. Esses símbolos SKP padrão podem ser considerados parte do padrão de modo de teste, nesses casos. Em alguns casos, o formato apropriado de símbolos 705, 710, 715 (p. ex., 4*N+1, 4*N+2, 4*N+3) pode se basear no estado de treinamento de hiperligação (LTSSM) da hiperligação. Em um exemplo, os símbolos SKP 705, 710, 715 podem ser definidos para serem codificados para reportar resultados de teste de sub-hiperligação quando o estado de hiperligação corresponde a Loopback. Em um exemplo, os 24 bits de dados incluídos nos símbolos SKP 705, 710, 715 podem implementar um segmento de comunicação de erros para uma sub-hiperligação e podem ser adaptados para a codificação de resultados de comunicação de erros de acordo com o formato apresentado em seguida:TABELA 2
Figure img0002
[0076] Deve ser percebido que as implementações descritas acima são fornecidas como exemplos não limitativos apresentados meramente para ilustrar de modo conveniente algumas das funcionalidades aqui reveladas.Por exemplo, pode ser fornecido um modo de teste queseja compatível com um protocolo de interconexãodiferente de PCIe (p. ex., QPI, IDI, PCI, etc.) e quealavanque algumas das funcionalidades (p. ex., conjuntosordenados, sequências de treinamento, estados de hiperligação, etc.) definidas no protocolo. Ademais, embora os retemporizadores sejam muitas vezes indicados nos exemplos acima, deve ser percebido que alguns dos princípios e funcionalidades aqui descritos se aplicam igualmente em sistemas empregando outros tipos de dispositivos de extensão. Adicionalmente, outros sinais de modo de teste, padrões de modo de teste fixo e sequências de comunicação de erros, entre outras alternativas de exemplo, podem ser implementados para além dos exemplos específicos aqui indicados sem sair do escopo dos conceitos revelados no presente Relatório Descritivo.
Detecção de Desconexão Em Banda
[0077] Os retemporizadores e outros dispositivos de extensão podem ser usados em uma variedade de diferentes sistemas empregando uma variedade de diferentes funcionalidades e fatores de forma. Por exemplo, alguns sistemas podem fornecer hot-plugging de dispositivos em uma hiperligação incluindo um ou mais retemporizadores. Em alguns casos, os retemporizadores podem ser usados dentro de cabos e esses cabos podem suportar o hotplugging e outros usos. Em alguns casos, os retemporizadores podem ser implementados em algumas aplicações que não fornecem sinais de banda lateral e/ou outra lógica de suporte que forneça sinalização de conexão/desconexão fora da banda. Ademais, os retemporizadores podem se encontrar mal ou não equipados para manejar desconexões e novas conexões em uma hiperligação da qual fazem parte, limitando o uso desses retemporizadores. Conformemente, os dispositivos de extensão menos robustos (p. ex., que são mais tolerantes a desconexões/novas conexões inesperadas) são muitas vezes substituídos por retemporizadores e outros dispositivos de extensão que possam cumprir melhor com os requisitos e as funcionalidades de protocolo de interconexão, e de outro modo ser uma solução de extensão mais ideal.
[0078] Em algumas implementações, a detecção de desconexão/nova conexão em banda pode ser suportada por um retemporizador de exemplo. Essas soluções podem abordar, pelo menos, alguns dos problemas apresentados acima, entre outras vantagens de exemplo. Um retemporizador equipado com lógica de detecção de desconexão/nova conexão em banda pode detectar e suportar de modo dinâmico desconexões e novas conexões inesperadas (como por exemplo em um hot-plug), entre outras funcionalidades e usos. A detecção de uma desconexão (e/ou nova conexão) pode ser facilitada por essa lógica por uma análise de sinais recebidos nas portas do retemporizador. Conformemente, o retemporizador pode inferir uma sequência de desconexão/nova conexão na hiperligação desde dados em banda e sem sinalização de banda lateral correspondente. Na verdade, em algumas implementações, um retemporizador pode anteceder o suporte dessa sinalização de banda lateral, confiando inteiramente na detecção de desconexão/nova conexão em banda. Ademais, a implementação dessa lógica de detecção de desconexão/nova conexão em banda pode permitir uma variedade de casos de novo uso para retemporizadores, incluindo a expansão do uso desses retemporizadores dentro de protocolos de interconexão específicos, como por exemplo PCIe.
[0079] Em relação ao exemplo da FIG. 8, é mostrada uma série de diagramas de blocos simplificados 800a a d ilustrando uma desconexão e nova conexão inesperadas de exemplo em uma hiperligação incluindo, pelo menos, um retemporizador 805. Na representação 800a, a hiperligação pode conectar uma porta a jusante 810 (p. ex., de um primeiro ponto final) e uma primeira porta a montante 815 (p. ex., de um segundo ponto final). Se ocorrer uma desconexão inesperada do segundo ponto final 815, como ilustrado na representação 800b, o retemporizador pode não ter sido avisado ou reconhecer imediatamente que o segundo ponto final 815 já não se encontra conectado. O crosstalk e outros sinais ambiente podem aparecer na porta a jusante do retemporizador, apesar de o retemporizador 805 não se encontrar conectado a qualquer dispositivo na porta. Todavia, o retemporizador 805 pode reencaminhar alguns desses sinais sem sentido para o outro ponto final 810 antes de inferir ou detectar que existe uma condição inativa na porta a jusante do retemporizador 805. Ademais, o ponto final 810 pode similarmente detectar um problema na hiperligação (p. ex., com base em sinais de lixo reencaminhados para o ponto final 810 pelo retemporizador a seguir à desconexão do outro ponto final 815) e começar o treinamento de hiperligação para corrigir o problema. Como ilustrado no diagrama 800c, os dados de treinamento de hiperligação 820, como por exemplo conjuntos de treinamento, sequências de treinamento predefinidas (p. ex., incluindo conjuntos ordenados e outros dados semelhantes) e outros dados, podem ser enviados pelo ponto final conectado 610 ao retemporizador 805. Em alguns casos, os dados de treinamento de hiperligação 820 podem ser enviados em conexão com uma tentativa de recuperação da hiperligação (p. ex., iniciada pelo ponto final 810). Com base na detecção da condição inativa (p. ex., 825) na porta a jusante junto com dados de treinamento de hiperligação 820 na porta a montante do retemporizador, a lógica de detecção de desconexão/nova conexão em banda do retemporizador pode inferir que ocorreu uma desconexão. Ademais, em resposta, o retemporizador pode acionar um estado de detecção 830 no qual a lógica de retemporizador tenta detectar se e quando uma nova conexão foi ou não concluída com outra porta a montante 835 (de outro ponto final, como por exemplo um dispositivo em hot-plug). Por exemplo, na identificação da desconexão, a lógica de detecção de desconexão/nova conexão em banda do retemporizador pode remover as respectivas conexões (p. ex., conexões de 50 ohm) e tentar descobrir novas terminações (p. ex., terminações de 50 ohm), como ilustrado, por exemplo, no diagrama 800d.
Retemporizador Multimodo
[0080] O uso de dispositivos de extensão, como por exemplo retemporizadores, por vezes é constrangido a tipos específicos de aplicações e sistemas. Por exemplo, muitos sistemas e aplicações não podem tolerar latências de barramento de E/S introduzidas pelos componentes, como por exemplo retemporizadores e dispositivos de extensão similares. Contudo, em alguns sistemas, para suportar todos os aspectos dos protocolos utilizados pelo sistema, os retemporizadores podem ser configurados para descodificar e recodificar sinais enviados pelo retemporizador. Por exemplo, alguns sinais podem requerer que o retemporizador modifique campos em alguns tipos de sinais, como por exemplo sequências de treinamento, conjuntos ordenados e outros exemplos. Conformemente, os retemporizadores tradicionais descodificam e recodificam todos os sinais enviados pelos retemporizadores na hiperligação. Por exemplo, em PCIe, os retemporizadores podem descodificar e recodificar dados de acordo com esquemas de codificação 8b/10b ou 128b/130b, entre outros exemplos. Essa descodificação e recodificação pode ser a fonte de, pelo menos, alguma da latência introduzida pelos retemporizadores tradicionais.
[0081] Em algumas implementações, podem ser fornecidos melhores retemporizadores que resolvem, pelo menos, alguns dos problemas apresentados acima, incluindo a minimização da latência de retemporizador, entre outras potenciais vantagens. Por exemplo, é possível fornecer um retemporizador que inclua funcionalidade para a implementação de múltiplos modos, incluindo um ou mais modos de baixa latência que possam ser seletivamente empregues para anteceder a descodificação e a recodificação tradicionais de dados na hiperligação e, em vez disso, meramente reencaminhar os dados como foram recebidos na sub-hiperligação. Um ou mais modos adicionais podem igualmente ser fornecidos pelo retemporizador que codifica/recodifica dados antes de os passar ao longo da hiperligação.
[0082] A FIG. 9 ilustra um fluxograma de exemplo 900 ilustrando um algoritmo e técnica de exemplo para providenciar um retemporizador multimodo. Os sinais podem ser recebidos 905 em uma porta (p. ex., uma porta a montante) do retemporizador, e a lógica dentro do retemporizador pode determinar 905 um tipo de sinal e/ou estado de hiperligação que se aplica aos sinais recebidos. As condições podem ser predefinidas para a utilização de qualquer um de uma pluralidade de modos de operação do retemporizador. Os modos podem incluir um modo de baixa latência que reencaminha os dados recebidos na porta a montante diretamente para transmissão na porta de transmissão (p. ex., uma porta a jusante) do retemporizador. Pelo menos, pode ser fornecido um outro modo que, pelo menos parcialmente, descodifique sinais recebidos na porta a montante e/ou recodifique ou modifique a codificação do sinal recebido antes da transmissão do sinal na porta a jusante do retemporizador. Em algumas implementações, quando o treinamento de hiperligação (ou dados de treinamento de hiperligação) for identificado pelo retemporizador, pode ser determinado (ou pré-configurado) que é empregue um modo de toque mais alto (e latência mais alta) pelo retemporizador permitindo ao retemporizador modificar alguns campos nos conjuntos de treinamento transmitidos pelo retemporizador. Alguns estados de hiperligação podem ser identificados (p. ex. em um registro do retemporizador) como confiando na descodificação e/ou nova codificação no retemporizador, e a identificação de que a hiperligação se encontra em um desses estados pode acionar (p. ex., em 915) o uso de um modo de codificação/descodificação de sinais (p. ex., em 920) no retemporizador. Em outro exemplo, quando o retemporizador identifica que a hiperligação se encontra em um modo de teste, como por exemplo o descrito nos exemplos das FIGs. 5 a 7 acima, o retemporizador pode empregar um modo que permita ao retemporizador efetuar a descodificação (p. ex., detecção de erros), a modificação de campo (p. ex., codificação de dados de comunicação de erros), e outras tarefas proporcionais ao modo de teste definido. Outros estados de hiperligação e tipos de dados podem ser apropriadamente reencaminhados pelo retemporizador sem descodificação/recodificação. Por exemplo, os dados enviados em um estado de hiperligação ativa (p. ex., um estado L0) podem ser definidos como sendo apropriados para o reencaminhamento meramente pelo retemporizador. Conformemente, na identificação desses estados de hiperligação (ou tipos de dados) (p. ex., em 910, 915), o retemporizador pode empregar um modo de baixa latência (p. ex., em 925) para passar simplesmente os dados pelo retemporizador sem mais nenhum (ou, no máximo, mínimo) processamento dos dados pelo retemporizador. O retemporizador pode alternar de modo conveniente, dinâmico e automático entre os múltiplos modos que o mesmo fornece em resposta aos tipos de sinal detectados, aos estados de hiperligação e a outras condições aos quais correspondem um ou mais modos.
Detecção de Velocidade de Camada PHY
[0083] As estruturas de interconexão modernas podem suportar múltiplas velocidades de conexão diferentes e, em alguns casos, suportar a mudança entre duas ou mais das velocidades de conexão durante a operação. Um retemporizador irá suportar qualquer velocidade de conexão presente na hiperligação da qual faça parte. Os retemporizadores tradicionais utilizam lógica em camadas físicas lógicas que inclui, por vezes, lógica de detecção de estado de hiperligação complicada e não confiável para detectar ou inferir transições de estado de hiperligação e assim igualmente a velocidade de conexão provável utilizada dentro do estado de hiperligação detectado. Como a lógica de detecção de estado de hiperligação processa informações para a determinação do estado de hiperligação atual, podem resultar atrasos significantes antes de a velocidade de transmissão do retemporizador ser ajustada (e reajustada) até a velocidade de transmissão correta ser realizada e o retemporizador ser capaz de começar o reencaminhamento nos dados recebidos na velocidade de conexão apropriada. Ademais, como a lógica de detecção de estado de hiperligação pode por vezes inferir velocidades de hiperligação incorretas, a velocidade de conexão incorreta pode ser inferida pela lógica de detecção de estado de hiperligação causando erros nas hiperligações e mais atrasos de transmissão, entre outros problemas.
[0084] Em algumas implementações, é possível fornecer um retemporizador que inclua lógica de detecção de velocidade, implementada pelo menos em parte usando hardware no nível de camada física (ou PHY) elétrica, para detectar, com precisão, a velocidade efetiva dos dados de entrada na hiperligação. Em vez de utilizar a lógica em camadas físicas lógicas para “adivinhar” a velocidade de conexão de hiperligação, a velocidade de transmissão efetiva pode ser detectada utilizando a lógica de detecção de velocidade de nível PHY. Na verdade, a lógica de detecção de estado em camadas físicas lógicas para o uso na determinação da velocidade de transmissão de hiperligação pode ser simplificada ou até prevista em algumas implementações. O módulo de detecção de velocidade do nível PHY pode comunicar a velocidade detectada à camada física lógica para permitir que o retemporizador suporte de modo rápido e exato a velocidade detectada.
[0085] A FIG. 10 mostra um bloco de diagramas simplificado 1000 ilustrando a lógica em camadas físicas de exemplo de um retemporizador de exemplo. Em algumas implementações, um retemporizador pode incluir uma camada física que inclua uma subcamada PHY elétrica 1005 e uma subcamada física lógica 1010. Em alguns casos, a subcamada física lógica 1010 pode ainda incluir um controle de acesso ao meio (MAC - Media Access Control) e subcamadas de codificação física (PCS - Physical Coding Sublayers), entre outras funcionalidades. É possível fornecer uma interface 1015 entre as subcamadas PHY 1005 e físicas lógicas 1010. Em algumas modalidades, como por exemplo em implementações de retemporizador compatível como PCIe, a interface 1015 pode ser realizada como uma Interface PHY para PCI Express (PIPE), entre outros exemplos. A subcamada PHY 1005 pode ainda incluir um módulo de detecção de velocidade 1020 que pode detectar a velocidade de transmissão de dados na hiperligação. A subcamada PHY 1005 pode comunicar a velocidade detectada à subcamada física lógica 1010 usando a interface 1015. Em algumas implementações, a interface 1015 (p. ex., uma interface baseada em PIPE) pode se estender para suportar a comunicação davelocidade (detectada no módulo de detecção de velocidade 1020) à camada física lógica 1010. Em algumas implementações, o módulo de detecção de velocidade 1020 pode ser um módulo de detecção de velocidade analógico.
[0086] Em algumas implementações, o módulo de detecção de velocidade 1020 pode efetuar a detecção de velocidade automaticamente sempre que o barramento sair de INATIVO elétrico. Por exemplo, os sinais de treinamento de hiperligação enviados para recuperar a hiperligação ou o estado de hiperligação de transição desde INATIVO podem ser usados pelo módulo de detecção de velocidade 1020 para a detecção da velocidade de transmissão a ser usada para os dados na hiperligação. Em alguns casos, uma interconexão pode suportar uma de múltiplas velocidades de conexão. Por exemplo, um sinal de entrada, em uma implementação, pode se encontrar em uma taxa de 2,5, 5,0, 8,0 ou 16,0 GT/s e o módulo de detecção de velocidade pode detectar qual das taxas suportadas está sendo atualmente empregue na hiperligação. O uso desse conjunto de circuitos de detecção de velocidade (p. ex., 1020) pode, em algumas implementações, melhorar a exatidão e a velocidade em que o retemporizador detecta e se adapta à velocidade de transmissão da hiperligação.
[0087] As FIGs. 11A a 11E são fluxogramas 1100a a e ilustrando técnicas de exemplo em conexão com uma hiperligação implementada usando um dispositivo de extensão, como por exemplo um retemporizador. Por exemplo, na FIG. 11A, a entrada em um modo de teste é identificada 1105 para uma hiperligação que inclui duas ou mais sub-hiperligações com base na inclusão de um ou mais retemporizadores (ou outros dispositivos de extensão). Um sinal de modo de teste é gerado 1110 em conexão com o modo de teste, o sinal de modo de teste incluindo um padrão de teste e uma sequência de comunicação de erros. O sinal de modo de teste é enviado 1115 por uma sub-hiperligação específica. O padrão de teste incluído no sinal de modo de teste pode ser usado (p. ex., pelo receptor do sinal) para testar a sub- hiperligação específica para erros. A sequência de comunicação de erros irá reportar progressivamente o estado de erro de cada sub-hiperligação que tenha sido testada durante o modo de teste. Os erros identificados em uma sub-hiperligação precedente podem ser adicionados à, e identificados na, sequência de comunicação de erros incluída no sinal de modo de teste gerado 1110.
[0088] Em relação à FIG. 11B, um sinal de modo de teste pode ser recebido 1120 por uma determinada sub- hiperligação em uma hiperligação que inclua um ou mais dispositivos de extensão e duas ou mais sub- hiperligações durante um modo de teste na hiperligação. O sinal de modo de teste recebido pode incluir um padrão de teste e uma sequência de comunicação de erros. O padrão de teste é avaliado para a determinação 1130 do estado de erro da sub-hiperligação específica. Outro sinal de modo de teste é gerado 1135 para ser enviado no modo de teste que inclui uma instância recentemente gerada do padrão de teste (p. ex., regenerada para garantir a não propagação de erros pela hiperligação durante a série de sinais de modo de teste) e uma sequência de comunicação de erros que mantém informações de estado de erro de sub-hiperligações anteriormente testadas durante o modo de teste, bem como o estado de erro determinado (em 1130) da sub-hiperligação específica. Em ambos os exemplos das FIGs. 11A e 11B, o modo de teste pode ser implementado usando um modo de loopback, entre outros exemplos.
[0089] No exemplo da FIG. 11C, os dados são reencaminhados 1140 em uma hiperligação usando um retemporizador. A lógica de retemporizador pode detectar 1145 uma condição inativa em uma primeira porta (p. ex., a jusante ou a montante) do retemporizador. Em alguns casos, a condição inativa pode ser inferida, enquanto a condição inativa é detectada, os dados de treinamento de hiperligação podem ser recebidos ou então detectados 1150 na segunda porta (p. ex., a montante ou a jusante) do retemporizador. Com base na condição inativa que está sendo detectada 1145 na primeira porta junto com os dados de treinamento de hiperligação (em 1150) na segunda porta, o retemporizador pode determinar que um dispositivo, antigamente conectado ao retemporizador usando a primeira porta, foi desconectado. O retemporizador pode então introduzir um estado de detecção para identificar quando outro dispositivo substitui o dispositivo desconectado na hiperligação, entre outros exemplos.
[0090] Em relação ao exemplo da FIG. 11D, pode ser providenciado um dispositivo de extensão multimodo, como por exemplo um retemporizador multimodo. É possível determinar 1160 uma condição de uma hiperligação na qual o dispositivo de extensão é incluído. Por exemplo, um estado de hiperligação ou tipo de dados pode ser determinado com base nos dados recebidos na hiperligação. Um respectivo dos modos de operação do dispositivo de extensão pode ser selecionado 1165 com base na condição. Os modos podem, pelo menos, incluir um modo que permita a descodificação/codificação/modificação de dados reencaminhados pelo dispositivo de extensão e outro modo que anteceda a descodificação/codificação para o processamento de latência mais baixa, entre outros exemplos. O modo de operação selecionado é aplicado 1170 para a transmissão de dados pela hiperligação enquanto a condição é aplicável (p. ex., a comutação de modos novamente quando é identificada uma transição de estado de hiperligação, entre outros exemplos).
[0091] No exemplo da FIG. 11E, os dados são recebidos 1140 em um dispositivo de extensão, como por exemplo um retemporizador, e o conjunto de circuitos de detecção de velocidade de hardware do dispositivo de extensão é usado para a detecção 1145 de uma velocidade de transmissão correspondendo aos dados recebidos. O dispositivo de extensão pode incluir uma subcamada física lógica e subcamada física elétrica, e o módulo de detecção de velocidade pode ser implementado usando a subcamada física elétrica. O resultado da velocidade de transmissão detectada pode ser comunicado 1150 desde a subcamada física elétrica à subcamada física lógica. O dispositivo de extensão pode se configurar sozinho para o processamento e a transmissão 1155 dos dados de acordo com a velocidade detectada.
[0092] Note que o aparelho, os métodos e os sistemas descritos acima podem ser implementados em qualquer sistema ou dispositivo eletrônico como acima mencionado. Como ilustrações específicas, as figuras abaixo fornecem sistemas exemplares para a utilização do invento como aqui descrito. Como os sistemas abaixo são descritos em mais detalhe, diversas interconexões diferentes são reveladas, descritas e revisitadas desde a revelação acima. Além disso, como é facilmente aparente, os avanços descritos acima podem ser aplicados em qualquer uma dessas interconexões, estruturas ou arquiteturas.
[0093] Em relação à FIG. 12, é representada uma modalidade de um diagrama de blocos para um sistema de computação incluindo um processador de múltiplos núcleos. O processador 1200 inclui qualquer processador ou dispositivo de processamento, como por exemplo um microprocessador, um processador incorporado, um processador de sinais digitais (DSP), um processador de rede, um processador de mão, um processador de aplicações, um coprocessador, um sistema em um chip (SOC) ou outro dispositivo para a execução de um código. O processador 1200, em uma modalidade, inclui, pelo menos, dois núcleos 1201 e 1202, que podem incluir núcleos assimétricos ou núcleos simétricos (a modalidade ilustrada). Contudo, o processador 1200 pode incluir um número qualquer de elementos de processamento que possam ser simétricos ou assimétricos.
[0094] Em uma modalidade, um elemento de processamento se refere a hardware ou lógica para suportar um thread de software. Os exemplos de elementos de processamento de hardware incluem: uma unidade de thread, uma ranhura de thread, um thread, uma unidade de processo, um contexto, uma unidade de contexto, um processador lógico, um thread de hardware, um núcleo e/ou qualquer outro elemento, que seja capaz de reter um estado para um processador, como por exemplo um estado de execução ou estado arquitetural. Em outras palavras, um elemento de processamento, em uma modalidade, se refere a qualquer hardware capaz de ser associado de modo independente ao código, como por exemplo um thread de software, sistema operacional, aplicação ou outro código. Um processador físico (ou soquete de processador) se refere tipicamente a um circuito integrado, que potencialmente inclui um número qualquer de outros elementos de processamento, como por exemplo núcleos ou threads de hardware.
[0095] Um núcleo muitas vezes se refere a lógica localizada em um circuito integrado capaz da manutenção de um estado arquitetural independente, em que cada estado arquitetural mantido de modo independente é associado a, pelo menos, alguns dos recursos de execução específicos. Em oposição aos núcleos, um thread de hardware se refere tipicamente a qualquer lógica localizada em um circuito integrado capaz da manutenção de um estado arquitetural independente, em que os estados arquiteturais mantidos de modo independente partilham o acesso a recursos de execução. Como pode ser observado, quando certos recursos são partilhados e outros são específicos de um estado arquitetural, a linha entre a nomenclatura de um thread de hardware e um núcleo é sobreposta. Contudo, muitas vezes um núcleo e um thread de hardwaresão vistos por um sistema operacional como processadores lógicos individuais, em que o sistema operacional é capaz de agendar individualmente operações em cada processador lógico.
[0096] O processador físico 1200, como ilustrado na FIG. 12, inclui dois núcleos 1201 e 1202. Nesse caso, o núcleo 1201 e 1202 são considerados núcleos simétricos, ou seja, núcleos com as mesmas configurações, unidades funcionais e/ou lógica. Em outra modalidade, o núcleo 1201 inclui um núcleo de processador fora de ordem, enquanto o núcleo 1202 inclui um núcleo de processador em ordem. Contudo, os núcleos 1201 e 1202 podem ser individualmente selecionados desde qualquer tipo de núcleo, como por exemplo núcleo nativo, um núcleo gerenciado por software, um núcleo adaptado para a execução de uma Arquitetura de Conjunto de Instruções (ISA - Instruction Set Architecture) nativa, um núcleo adaptado para a execução de uma Arquitetura de Conjunto de Instruções (ISA) convertida, um núcleo codesignado ou outro núcleo conhecido. Em um ambiente de núcleo heterogêneo (ou seja, núcleos assimétricos), alguma forma de conversão, como por exemplo conversão binária, pode ser utilizada para o agendamento ou a execução de código em um ou ambos os núcleos. Contudo, avançando na descrição, as unidades funcionais ilustradas no núcleo 1201 são descritas em mais detalhe abaixo, uma vez que as unidades no núcleo 1202 operam de uma maneira similar na modalidade representada.
[0097] Como representado, o núcleo 1201 inclui dois threads de hardware 1201a e 1201b, que podem igualmente ser referidos como ranhuras de thread de hardware 1201a e 1201b. Por consequência, as entidades de software, como por exemplo um sistema operacional, em uma modalidade, veem potencialmente o processador 1200 como quatro processadores separados, ou seja, quatro processadores lógicos ou elementos de processamento capazes da execução de quatro threads de software simultaneamente. Como aludido acima, um primeiro thread é associado aos registros de estado de arquitetura 1201a, um segundo threadé associado aos registros de estado de arquitetura 1201b, um terceiro thread pode ser associado aos registros de estado de arquitetura 1202a, e um quarto thread pode ser associado aos registros de estado de arquitetura 1202b. Nesse caso, cada um dos registros de estado de arquitetura (1201a, 1201b, 1202a e 1202b) pode ser referido como elementos de processamento, ranhuras de thread ou unidades de thread, como descrito acima. Como ilustrado, os registros de estado de arquitetura 1201a são replicados nos registros de estado de arquitetura 1201b, de modo que os contextos/estados de arquitetura individuais sejam capazes de ser armazenados para o processador lógico 1201a e o processador lógico 1201b. No núcleo 1201, outros recursos menores, como por exemplo apontadores de instruções e lógica de renomeação no bloco renomeador e alocador 1230, podem igualmente ser replicados para threads 1201a e 1201b. Alguns recursos, como por exemplo buffers de reordenação na unidade de reordenação/retirada 1235, ILTB 1220, buffers de carregamento/armazenamento e filas, podem ser partilhados pelo particionamento. Outros recursos, como por exemplo registros internos de uso geral, registro(s) de base da tabela de páginas, TLB de dados e cache de dados de nível baixo 1215, unidade(s) de execução 1240 e porções de unidade fora de ordem 1235, são potencialmente partilhados na íntegra.
[0098] O processador 1200 inclui frequentemente outros recursos, que podem ser totalmente partilhados, partilhados por particionamento ou específicos de elementos de processamento. Na FIG. 12, é ilustrada uma modalidade de um processador puramente exemplar com unidades/recursos lógicos ilustrativos de um processador. Note que um processador pode incluir, ou omitir, qualquer uma dessas unidades funcionais, bem como incluir quaisquer outras unidades funcionais conhecidas, lógica ou firmwarenão representados. Como ilustrado, o núcleo 1201 inclui um núcleo de processador fora de ordem (OOO - Out-Of-Order) representativo simplificado. Contudo, pode ser utilizado um processador em ordem em diferentes modalidades. O núcleo OOO inclui um buffer-alvo de ramificação 1220 para a previsão de ramificações a serem executadas/consideradas e um buffer de conversão de instruções (I-TLB - InstructionTranslation Buffer) 1220 para o armazenamento de entradas de conversão de endereços para instruções.
[0099] O núcleo 1201 inclui ainda o módulo de descodificação 1225 acoplado na unidade de obtenção 1220 para descodificar elementos obtidos. A lógica de obtenção, em uma modalidade, inclui sequenciadores individuais associados a ranhuras de thread 1201a, 1201b, respectivamente. Habitualmente, o núcleo 1201 é associado a uma primeira ISA, que define/especifica instruções executáveis no processador 1200. Muitas vezes, as instruções de código de máquina que fazem parte da primeira ISA incluem uma porção da instrução (referida como um código de operação), que referencia/especifica uma instrução ou operação a ser efetuada. A lógica de descodificação 1225 inclui um conjunto de circuitos que reconhece essas instruções dos respectivos códigos de operação e passa as instruções descodificadas na tubulação para o processamento como definido pela primeira ISA. Por exemplo, como descrito em mais detalhe abaixo, os descodificadores 1225, em uma modalidade, incluem lógica projetada ou adaptada para o reconhecimento de instruções específicas, como por exemplo instrução de transação. Como resultado do reconhecimento pelos descodificadores 1225, a arquitetura ou o núcleo 1201 toma medidas específicas predefinidas para efetuar tarefas associadas à instrução apropriada. É importante notar que qualquer uma das tarefas, blocos, operações e métodos aqui descritos podem ser efetuados em resposta a uma única ou múltiplas instruções; algumas das quais podem ser instruções novas ou antigas. Note que os descodificadores 1226, em uma modalidade, reconhecem a mesma ISA (ou um subconjunto da mesma). Em alternativa, em um ambiente de núcleo heterogêneo, os descodificadores 1226 reconhecem uma segunda ISA (um subconjunto da primeira ISA ou uma ISA distinta).
[00100] Em um exemplo, o bloco renomeador e alocador 1230 inclui um alocador para reservar recursos, como por exemplo arquivos de registro para armazenar resultados de processamento de instruções. Contudo, os threads 1201a e 1201b são potencialmente capazes de execução fora de ordem, em que o bloco renomeador e alocador 1230 reserva igualmente outros recursos, como por exemplo buffers de reordenação para seguir resultados de instruções. A unidade 1230 pode igualmente incluir um renomeador de registro para renomear registros de referência de programa/instrução para outros registros internos do processador 1200. A unidade de reordenação/retirada 1235 inclui componentes, como por exemplo os buffers de reordenação mencionados acima, buffers de carregamento e buffers de armazenamento, para suportar a execução fora de ordem e a subsequente retirada em ordem de instruções executadas fora de ordem.
[00101] O bloco de unidade(s) de agendamento e execução 1240, em uma modalidade, inclui uma unidade de agendamento para agendar instruções/operação em unidades de execução. Por exemplo, é agendada uma instrução de ponto flutuante em uma porta de uma unidade de execução que tem uma unidade de execução de ponto flutuante disponível. Os arquivos de registro associados às unidades de execução são igualmente incluídos para o armazenamento de resultados de processamento de instruções informações. As unidades de execução exemplares incluem uma unidade de execução de ponto flutuante, uma unidade de execução de número inteiro, uma unidade de execução de atalhos, uma unidade de execução de carregamento, uma unidade de execução de armazenamento e outras unidades de execução conhecidas.
[00102] A cache de dados de nível mais baixo e o buffer de conversão de dados (D-TLB - Data Translation Buffer) 1250 se encontram acoplados na(s) unidade(s) de execução 1240. A cache de dados irá armazenar elementos recentemente usados/operados, como por exemplo operandos de dados, que são potencialmente retidos em estados de coerência de memória. O D-TLB irá armazenar conversões de endereços recentes virtuais/lineares para físicos. Como um exemplo específico, um processador pode incluir uma estrutura de tabela de páginas para separar a memória física em uma pluralidade de páginas virtuais.
[00103] Nesse caso, os núcleos 1201 e 1202 partilham acesso a uma cache de nível mais alto ou mais afastado, como por exemplo uma cache de segundo nível associada à interface em um chip 1210. Note que nível mais alto ou mais afastado se refere a níveis de cache aumentando ou se afastando mais da(s) unidade(s) de execução. Em uma modalidade, a cache de nível mais alto é uma cache de dados de último nível - última cache na hierarquia de memória no processador 1200 - como por exemplo uma cache de dados de segundo ou terceiro nível. Contudo, a cache de nível mais alto não é tão limitada, uma vez que a mesma pode ser associada a, ou incluir, uma cache de instruções. Uma cache de rastreio - um tipo de cache de instruções - pode em alternativa ser acoplada após o descodificador 1225 para o armazenamento de rastros recentemente descodificados. Nesse caso, uma instrução potencialmente se refere a uma macroinstrução (ou seja, uma instrução geral reconhecida pelos descodificadores), que pode se descodificar em um número de microinstruções (micro-operações).
[00104] Na configuração representada, o processador 1200 inclui igualmente o módulo de interface em um chip 1210. Historicamente, um controlador de memória, que é descrito em mais detalhe abaixo, foi incluído em um sistema de computação externo ao processador 1200. Nesse cenário, a interface em um chip 1210 irá comunicar com dispositivos externos ao processador 1200, como por exemplo memória de sistema 1275, um chipset (muitas vezes incluindo um concentrador de controlador de memória para a conexão à memória 1275 e um concentrador de controlador de E/S para a conexão de dispositivos periféricos), um concentrador de controlador de memória, uma ponte norte ou outro circuito integrado. Além disso, nesse cenário, o concentrador 1205 pode incluir qualquer interconexão conhecida, como por exemplo barramento multidrop, uma interconexão ponto-a-ponto, uma interconexão em série, um concentrador paralelo, um concentrador coerente (p. ex. coerente com a cache), uma arquitetura de protocolos em camadas, um concentrador diferencial e um concentrador GTL.
[00105] A memória 1275 pode ser específica do processador 1200 ou partilhada com outros dispositivos em um sistema. Os exemplos comuns de tipos de memória 1275 incluem DRAM, SRAM, memória não volátil (memória NV) e outros dispositivos de armazenamento conhecidos. Note que o dispositivo 1280 pode incluir um acelerador de gráficos, processador ou placa acoplado em um concentrador de controlador de memória, um armazenamento de dados acoplado em um concentrador de controlador de E/S, um transceptor sem fios, um dispositivo flash, um controlador de áudio, um controlador de rede ou outro dispositivo conhecido.
[00106] Recentemente, contudo, como estão sendo integrados mais lógica e dispositivos em um único die, como por exemplo SOC, cada um desses dispositivos pode ser incorporado no processador 1200. Por exemplo, em uma modalidade, um concentrador de controlador de memória se encontra no mesmo pacote e/ou die com o processador 1200. Nesse caso, uma porção do núcleo (uma porção no núcleo) 1210 inclui um ou mais controladores para a interação com outros dispositivos, como por exemplo memória 1275 ou um dispositivo de gráficos 1280. A configuração incluindo uma interconexão e controladores para a interação com esses dispositivos é muitas vezes referida como uma configuração no núcleo (ou fora do núcleo). Como um exemplo, a interface em um chip 1210 inclui uma interconexão em anel para a comunicação em um chip e uma hiperligação ponto-a-ponto em série de alta velocidade 1205 para comunicação fora do chip. Todavia, no ambiente SOC, ainda mais dispositivos, como por exemplo a interface de rede, coprocessadores, memória 1275, processador de gráficos 1280, e quaisquer outros dispositivos de computador/interface conhecidos, podem ser integrados em um único die ou circuito integrado para providenciar um fator de forma pequena com alta funcionalidade e baixo consumo de energia.
[00107] Em uma modalidade, o processador 1200 é capaz da execução de um compilador, uma otimização e/ou um código conversor 1277 para compilar, converter e/ou otimizar o código de aplicação 1276 de modo a suportar o aparelho e os métodos aqui descritos ou a interagir com eles. Muitas vezes, um compilador inclui um programa ou conjunto de programas para a conversão de código/texto de origem em código/texto de destino. Usualmente, a compilação de código de aplicação/programa com um compilador é efetuada em múltiplas fases e passos para a transformação do código de linguagem de programação de nível alto no código de linguagem de máquina ou montagem (assembly) de nível baixo. Contudo, os compiladores de passo único podem ainda ser utilizados para a compilação simples. Um compilador pode utilizar quaisquer técnicas de compilação conhecidas e efetuar quaisquer operações de compilador conhecidas, como por exemplo análise de léxico, pré-processamento, análise, análise de semântica, geração de código, transformação de código e optimização de código.
[00108] Os compiladores maiores incluem frequentemente múltiplas fases, mas muitas vezes essas fases se encontram incluídas em duas fases gerais: (1) um frontend, ou seja, geralmente onde podem ocorrer o processamento sintático, o processamento semântico e alguma transformação/otimização, e (2) um back-end, ou seja, geralmente onde ocorrem a análise, as transformações, as otimizações e a geração de código. Alguns compiladores se referem a um meio, que ilustra a confusão do delineamento entre um front-end e um backend de um compilador. Como resultado, a referência à inserção, associação, geração ou outra operação de um compilador pode ocorrer em qualquer uma das fases ou passos mencionados acima, bem como quaisquer outras fases ou passos conhecidos de um compilador. Como um exemplo ilustrativo, um compilador potencialmente insere operações, chamadas, funções, etc. em uma ou mais fases de compilação, como por exemplo inserção de chamadas/operações em uma fase front-end de compilação e, em seguida, a transformação das chamadas/operações no código de nível baixo durante uma fase de transformação. Note que durante a compilação dinâmica, o código de compilador ou código de optimização dinâmica pode inserir essas operações/chamadas, bem como otimizar o código para a execução durante o tempo de execução. Como um exemplo ilustrativo específico, o código binário (código já compilado) pode ser optimizado de modo dinâmico durante o tempo de execução. Nesse caso, o código de programa pode incluir o código de otimização dinâmica, o código binário ou uma combinação dos mesmos.
[00109] Similar a um compilador, um conversor, como por exemplo um conversor binário, converte o código quer estatisticamente quer dinamicamente para a otimização e/ou a conversão do código. Por consequência, a referência à execução do código, código de aplicação, código de programa ou outro ambiente de software pode se referir a: (1) execução de programa(s) de um compilador, otimizador de código de otimização ou conversor quer dinamicamente quer estatisticamente, para compilar o código de programa, para manter estruturas de software, para efetuar outras operações, para otimizar o código ou para converter o código; (2) execução do código de programa principal incluindo operações/chamadas, como por exemplo o código de aplicação que foi otimizado/compilado; (3) execução de outro código de programa, como por exemplo bibliotecas, associado ao código de programa principal para manter estruturas de software, para efetuar outras operações relacionadas com software ou para otimizar o código; ou (4) uma combinação dos mesmos.
[00110] Em relação agora à FIG. 13, é ilustrado um diagrama de blocos de uma modalidade de um processador de múltiplos núcleos. Como ilustrado na modalidade da FIG. 13, o processador 1300 inclui múltiplos domínios. Especificamente, um domínio de núcleo 1330 inclui uma diversidade de núcleos 1330A a 1330N, um domínio de gráficos 1360 inclui um ou mais motores de gráficos com um motor multimídia 1365, e um domínio de agente de sistema 1310.
[00111] Em várias modalidades, o domínio de agente de sistema 1310 maneja eventos de controle de potência e gerenciamento de potência, de modo que unidades individuais dos domínios 1330 e 1360 (p. ex. núcleos e/ou motores de gráficos) sejam controladas de maneira independente para operar dinamicamente em um nível/modo de potência apropriado (p. ex. ativo, turbo, sono, hibernação, sono profundo ou outro estado tipo Interface de Potência de Configuração Avançada) considerando a atividade (ou inatividade) ocorrendo na unidade fornecida. Cada um dos domínios 1330 e 1360 pode operar em diferentes voltagens e/ou potências, e ademais cada uma das unidades individuais dentro dos domínios operam potencialmente em uma frequência e voltagem independentes. Note que, embora somente ilustrado com três domínios, deve ser compreendido que o escopo do presente invento não é limitado a esse respeito e podem estar presentes domínios adicionais em outras modalidades.
[00112] Como ilustrado, cada núcleo 1330 inclui ainda caches de nível baixo além de várias unidades de execução e elementos de processamento adicionais. Nesse caso, os vários núcleos são acoplados uns nos outros e em uma memória cache partilhada que é formada por uma pluralidade de unidades ou setores de uma cache de último nível (LLC - Last Level Cache) 1340A a 1340N; essas LLCs incluem muitas vezes armazenamento e funcionalidade de controlador de cache, e são partilhadas entre os núcleos, bem como potencialmente também entre o motor de gráficos.
[00113] Como observado, uma interconexão em anel 1350 acopla os núcleos uns nos outros e fornece interconexão entre o domínio de núcleo 1330, o domínio de gráficos 1360 e o conjunto de circuitos de agente de sistema 1310, por via de uma pluralidade de retentores de anel 1352A a 1352N, cada um em um acoplamento entre um núcleo e um setor LLC. Com observado na FIG. 13, a interconexão 1350 é usada para transportar várias informações, incluindo informações de endereço, informações de dados, informações de reconhecimento e informações de monitoração/inválidas. Embora seja ilustrada uma interconexão em anel, pode ser utilizada qualquer estrutura ou interconexão on-die conhecida. Como um exemplo ilustrativo, algumas das estruturas descritas acima (p. ex. outra interconexão on-die, Estrutura de Sistema em um Chip (OSF), uma interconexão de Arquitetura de Barramento de Microcontrolador Avançada(AMBA - Advanced Microcontroller Bus Architecture), uma estrutura em rede multidimensional ou outra arquitetura de interconexão conhecida) podem ser utilizadas de uma maneira similar.
[00114] Como ainda representado, o domínio de agente de sistema 1310 inclui um motor de visualização 1312 que irá providenciar controle de, e uma interface para, um display associado. O domínio de agente de sistema 1310 pode incluir outras unidades, como por exemplo: um controlador de memória integrado 1320 que fornece uma interface para uma memória de sistema (p. ex., uma DRAM implementada com múltiplos DIMMs; lógica de coerência 1322 para efetuar operações de coerência de memória. Múltiplas interfaces podem estar presentes para permitir a interconexão entre o processador e outro conjunto de circuitos. Por exemplo, em uma modalidade, é fornecida, pelo menos, uma interface multimídia direta (DMI - Direct Media interface) 1316, bem como uma ou mais interfaces PCIe™ 1314. O motor de visualização e essas interfaces tipicamente se acoplam na memória por via de uma ponte PCIe™ 1318. Além do mais, para fornecer comunicações entre outros agentes, como por exemplo processadores adicionais ou outro conjunto de circuitos, podem ser fornecidas uma ou mais outras interfaces.
[00115] Em relação agora à FIG. 14, é ilustrado um diagrama de blocos de um núcleo representativo; especificamente, blocos lógicos de um back-end de um núcleo, como por exemplo o núcleo 1330 da FIG. 13. Em geral, a estrutura ilustrada na FIG. 14 inclui um processador fora de ordem que tem uma unidade front-end 1470 usada para a obtenção de instruções de entrada, a realização de vários processamentos (p. ex. colocação em cache, descodificação, previsão de ramificações, etc.) e a passagem de instruções/operações até um motor fora de ordem (OOO) 1480. O motor OOO 1480 efetua mais processamento em instruções descodificadas.
[00116] Especificamente na modalidade da FIG. 14, o motor fora de ordem 1480 inclui uma unidade de alocação 1482 para a recepção de instruções descodificadas, que podem se encontrar na forma de uma ou mais microinstruções ou uops, desde a unidade front-end 1470, e a alocação das mesmas a recursos apropriados, como por exemplo registros, etc. Em seguida, as instruções são fornecidas a uma estação de reserva 1484, que reserva recursos e os agenda para execução em uma de uma pluralidade de unidades de execução 1486A a 1486N. Vários tipos de unidades de execução podem se encontrar presentes, incluindo, por exemplo, unidades lógicas e aritméticas (ULAs), unidades de carregamento e armazenamento, unidades de processamento de vetores (VPUs - Vector Processing Units), unidades de execução de ponto flutuante, entre outras. Os resultados dessas unidades de execução diferentes são fornecidos a um buffer de reordenação (ROB - Reorder Buffer) 1488, que toma resultados não ordenados e os devolve à ordem correta de programa.
[00117] Ainda em relação à FIG. 14, note que tanto a unidade front-end 1470 como o motor fora de ordem 1480 são acoplados em diferentes níveis de uma hierarquia de memória. É especificamente ilustrada uma cache de nível de instrução 1472, que por sua vez se acopla em uma cache de nível médio 1476, que por sua vez se acopla em uma cache de último nível 1495. Em uma modalidade, a cache de último nível 1495 é implementada em uma unidade em um chip (por vezes referida como fora do núcleo) 1490. Como um exemplo, a unidade 1490 é similar ao agente de sistema 1310 da FIG. 13. Como descrito acima, a função fora do núcleo 1490 comunica com a memória de sistema 1499, que, na modalidade ilustrada, é implementada por via da RAM ED. Note igualmente que as várias unidades de execução 1486 dentro do motor fora de ordem 1480 se encontram em comunicação com uma cache de primeiro nível 1474 que igualmente se encontra em comunicação com a cache de nível médio 1476. Note igualmente que os núcleos adicionais 1430N-2 a 1430N podem se acoplar em LLC 1495. Embora ilustrado em esse nível alto na modalidade da FIG. 14, deve ser compreendido que podem estar presentes vários componentes e alterações adicionais.
[00118] Em relação à FIG. 15, é ilustrado um diagrama de blocos de um sistema de computador exemplar formado com um processador que inclui unidades de execução para executar uma instrução, em que uma ou mais das interconexões implementam uma ou mais funcionalidades de acordo com uma modalidade do presente invento. O sistema 1500 inclui um componente, como por exemplo um processador 1502 para a implementação de unidades de execução incluindo lógica para efetuar algoritmos para o processamento de dados, de acordo com o presente invento, como por exemplo na modalidade aqui descrita. O sistema 1500 é representativo de sistemas de processamento com base nos microprocessadores PENTIUM III™, PENTIUM 4™, Xeon™, Itanium, XScale™ e/ou StrongARM™, embora também possam ser usados outros sistemas (incluindo PCs tendo outros microprocessadores, estações de trabalho de engenharia, set-top boxes e afins). Em uma modalidade, o sistema de amostra 1500 executa uma versão do sistema operacional WINDOWS™ disponível em Microsoft Corporation de Redmond, Washington, embora também possam ser usados outros sistemas operacionais (UNIX e Linux por exemplo), software incorporado e/ou interfaces gráficas de usuário. Desse modo, as modalidades do presente invento não se encontram limitadas a nenhuma combinação específica de conjunto de circuitos de hardware e software.
[00119] As modalidades não se encontram limitadas a sistemas de computador. As modalidades alternativas do presente invento podem ser usadas em outros dispositivos, como por exemplo dispositivos de mão e aplicações incorporadas. Alguns exemplos de dispositivos de mão incluem telefones celulares, dispositivos de Protocolo de Internet, câmeras digitais, assistentes pessoais digitais (PDAs) e PCs de mão. As aplicações incorporadas podem incluir um microcontrolador, um processador de sinais digitais (DSP), um sistema em um chip, computadores de rede (NetPC), set-top boxes, concentradores de rede, comutadores de rede de área alargada (WAN) ou qualquer outro sistema que possa efetuar uma ou mais instruções de acordo com, pelo menos, uma modalidade.
[00120] Em essa modalidade ilustrada, o processador 1502 inclui uma ou mais unidades de execução 1508 para a implementação de um algoritmo que irá efetuar, pelo menos, uma instrução. Uma modalidade pode ser descrita no contexto de um único sistema de servidor ou área de trabalho de processador, mas as modalidades alternativas podem ser incluídas em um sistema de múltiplos processadores. O sistema 1500 é um exemplo de uma arquitetura de sistema de “concentrador”. O sistema de computador 1500 inclui um processador 1502 para processar sinais de dados. O processador 1502, como um exemplo ilustrativo, inclui um microprocessador de computador com um conjunto complexo de instruções (CISC - Complex Instruction Set Computer), um microprocessador de computador com um conjunto reduzido de instruções (RISC - Reduced Instruction Set Computer), um microprocessador de palavra de instrução muito longa (VLIW - Very Long Instruction Word), um processador implementando uma combinação de conjuntos de instruções ou qualquer outro dispositivo de processador, como por exemplo um processador de sinais digitais, por exemplo. O processador 1502 é acoplado em um barramento de processador 1510 que transmite sinais de dados entre o processador 1502 e outros componentes no sistema 1500. Os elementos do sistema 1500 (p. ex. acelerador de gráficos 1512, concentrador de controlador de memória 1516, memória 1520, concentrador de controlador de E/S 1524, transceptor sem fios 1526, Flash BIOS 1528, Controlador de rede 1534, Controlador de Áudio 1536, Porta de expansão em série 1538, controlador de E/S 1540, etc.) efetuam as respectivas funções convencionais que são bem conhecidas dos peritos na técnica.
[00121] Em uma modalidade, o processador 1502 inclui uma memória cache interna de Nível 1 (L1) 1504. Dependendo da arquitetura, o processador 1502 pode ter uma única cache interna ou múltiplos níveis de caches internas. Outras modalidades incluem uma combinação das caches internas e externas dependendo da implementação e das necessidades específicas. O arquivo de registro 1506 irá armazenar diferentes tipos em vários registros, incluindo registros de número inteiro, registros de ponto flutuante, registros de vetor, registros depositados, registros sombra, registros de ponto de verificação, registros de estado e registros apontadores de instruções.
[00122] A unidade de execução 1508, incluindo lógica para efetuar operações de ponto flutuante e número inteiro, reside igualmente no processador 1502. O processador 1502, em uma modalidade, inclui uma ROM de microcódigo (ucode) para o armazenamento de microcódigo que, quando executado, irá efetuar algoritmos para certas macroinstruções ou manejar cenários complexos. Nesse caso, o microcódigo é potencialmente atualizável para manejar correções/erros de lógica para o processador 1502. Para uma modalidade, a unidade de execução 1508 inclui lógica para o manejamento de um conjunto de instruções empacotadas 1509. Ao incluir o conjunto de instruções empacotadas 1509 no conjunto de instruções de um processador de uso geral 1502, junto com o conjunto de circuitos associado para a execução das instruções, as operações usadas por muitas aplicações multimídia podem ser efetuadas usando dados empacotados em um processador de uso geral 1502. Desse modo, muitas aplicações multimídia são aceleradas e executadas mais eficientemente usando toda a largura do barramento de dados de um processador para a realização de operações em dados empacotados. Isso potencialmente elimina a necessidade de transferir unidades menores de dados pelo barramento de dados do processador para a realização de uma ou mais operações, um elemento de dados de cada vez.
[00123] As modalidades alternativas de uma unidade de execução 1508 podem igualmente ser usadas em microcontroladores, processadores incorporados, dispositivos gráficos, DSPs e outros tipos de circuitos lógicos. O sistema 1500 inclui uma memória 1520. A memória 1520 inclui um dispositivo de memória dinâmica de acesso aleatório (DRAM - Dynamic Random Access Memory), um dispositivo de memória estática de acesso aleatório (SRAM - Static Random Access Memory), dispositivo de memória flash ou outro dispositivo de memória. A memória 1520 armazena instruções e/ou dados representados por sinais de dados que serão executados pelo processador 1502.
[00124] Note que qualquer uma das funcionalidades ou aspectos do invento mencionados acima podem ser utilizados em uma ou mais interconexões ilustradas na FIG. 15. Por exemplo, uma interconexão on-die (ODI-On- Die Interconnect), que não é ilustrada, para o acoplamento de unidades internas do processador 1502 implementa um ou mais aspectos do invento descrito acima. Em alternativa, o invento é associado a um barramento de processador 1510 (p. ex. outra interconexão de computação de alto desempenho conhecida), um caminho de memória de largura de banda elevada 1518 até à memória 1520, uma hiperligação ponto- a-ponto para o acelerador de gráficos 1512 (p. ex. uma estrutura compatível com PCIe (Peripheral Component Interconnect Express)), uma interconexão de concentrador de controlador 1522, uma interconexão de E/S ou outra (p. ex. USB, PCI, PCIe) para o acoplamento dos outros componentes ilustrados. Alguns exemplos desses componentes incluem o controlador de áudio 1536, concentrador de firmware (flash BIOS) 1528, transceptor sem fios 1526, armazenamento de dados 1524, controlador de E/S legado 1510 contendo interfaces de teclado e entrada de usuário 1542, uma porta de expansão em série 1538, como por exemplo USB (Universal Serial Bus) e um controlador de rede 1534. O dispositivo de armazenamento de dados 1524 pode compreender uma unidade de disco rígido, uma unidade de disquete, uma unidade de CD-ROM, um dispositivo de memória flash ou outro dispositivo de armazenamento em massa.
[00125] Agora em relação à FIG. 16, é ilustrado um diagrama de blocos de um segundo sistema 1600 de acordo com uma modalidade do presente invento. Como ilustrado na FIG. 16, o sistema de múltiplos processadores 1600 é um sistema de interconexão ponto-a-ponto, e inclui um primeiro processador 1670 e um segundo processador 1680 acoplados por via de uma interconexão ponto-a-ponto 1650. Cada um dos processadores 1670 e 1680 pode ser alguma versão de um processador. Em uma modalidade, 1652 e 1654 fazem parte de uma estrutura de interconexão coerente ponto-a-ponto em série, como por exemplo uma arquitetura de alto desempenho. Como resultado, o invento pode ser implementado dentro da arquitetura QPI.
[00126] Embora ilustrado com somente dois processadores 1670, 1680, deve ser compreendido que o escopo do presente invento não é tão limitado. Em outras modalidades, um ou mais processadores adicionais podem se encontrar presentes em um determinado processador.
[00127] Os processadores 1670 e 1680 são ilustrados incluindo unidades de controlador de memória integradas 1672 e 1682, respectivamente. O processador 1670 inclui igualmente, como parte das respectivas unidades de controlador de barramento, interfaces ponto-a-ponto (PP) 1676 e 1678; similarmente, o segundo processador 1680 inclui interfaces P-P 1686 e 1688. Os processadores 1670, 1680 podem trocar informações por via de uma interface ponto-a-ponto (P-P) 1650 usando circuitos de interface P-P 1678, 1688. Como ilustrado na FIG. 16, IMCs 1672 e 1682 acoplam os processadores nas respectivas memórias, nomeadamente uma memória 1632 e uma memória 1634, que podem ser porções da memória principal localmente ligada aos respectivos processadores.
[00128] Cada um dos processadores 1670, 1680 troca informações com um chipset 1690 por via de interfaces P-P individuais 1652, 1654 usando circuitos de interface ponto-a-ponto 1676, 1694, 1686, 1698. O chipset 1690 troca igualmente informações com um circuito de gráficos de alto desempenho 1638 por via de um circuito de interface 1692 ao longo de uma interconexão de gráficos de alto desempenho 1639.
[00129] Uma cache partilhada (não ilustrada) pode ser incluída em qualquer um dos dois processadores ou fora de ambos os processadores; contudo, conectada aos processadores por via da interconexão P-P, de modo que as informações de cache local de qualquer um dos dois ou ambos os processadores possam ser armazenadas na cache partilhada se um processador for colocado em um modo de baixa potência.
[00130] O chipset 1690 pode ser acoplado a um primeiro barramento 1616 por via de uma interface 1696. Em uma modalidade, o primeiro barramento 1616 pode ser um barramento PCI (Peripheral Component Interconnect), ou um barramento, como por exemplo um barramento PCI Express ou outro barramento de interconexão de E/S de terceira geração, embora o escopo do presente invento não seja limitado.
[00131] Como ilustrado na FIG. 16, vários dispositivos de E/S 1614 são acoplados no primeiro barramento 1616, junto com uma ponte de barramento 1618 que acopla o primeiro barramento 1616 em um segundo barramento 1620. Em uma modalidade, o segundo barramento 1620 inclui um barramento LPC (Low Pin Count - Baixa Contagem de Pinos). Vários dispositivos são acoplados no segundo barramento 1620 incluindo, por exemplo, um teclado e/ou mouse 1622, dispositivos de comunicação 1627 e uma unidade de armazenamento 1628, como por exemplo uma unidade de disco ou outro dispositivo de armazenamento em massa que muitas vezes inclui instruções/código e dados 1630, em uma modalidade. Ademais, é ilustrada uma E/S de áudio 1624 acoplada no segundo barramento 1620. Note que são possíveis outras arquiteturas, em que as arquiteturas de interconexão e os componentes incluídos variam. Por exemplo, em vez da arquitetura ponto-a-ponto da FIG. 16, um sistema pode implementar um barramento multidrop ou outra arquitetura assim.
[00132] Em relação em seguida à FIG. 17, é representada uma modalidade de um desenho de sistema em um chip (SOC) de acordo com os inventos. Como um exemplo ilustrativo específico, o SOC 1700 é incluído no equipamento de usuário (UE - User Equipment). Em uma modalidade, o UE se refere a qualquer dispositivo a ser usado por um usuário final para a comunicação, como por exemplo um telefone de mão, smartphone, tablet, notebook ultra fino, notebook com adaptador de banda larga ou qualquer outro dispositivo de comunicação similar. Muitas vezes, um UE conecta a uma estação de base ou um nó, que potencialmente corresponde em natureza a uma estação móvel (MS - Mobile Station) em uma rede GSM.
[00133] Nesse caso, o SOC 1700 inclui 2 núcleos - 1706 e 1707. De modo similar à descrição acima, os núcleos 1706 e 1707 podem se conformar com uma Arquitetura de Conjunto de Instruções, como por exemplo um processador baseado em Intel® Architecture Core™, um processador Advanced Micro Devices, Inc. (AMD), um processador baseado em MIPS, um desenho de processador baseado em ARM ou um cliente dos mesmos, bem como os respectivos licenciados ou adotantes. Os núcleos 1706 e 1707 são acoplados no controle de cache 1708 que é associado à unidade de interface de barramento 1709 e na cache L2 1711 para a comunicação com outras partes do sistema 1700. A interconexão 1710 inclui uma interconexão em um chip, como por exemplo uma IOSF, AMBA ou outra interconexão descrita acima, que potencialmente implementa um ou mais aspectos aqui descritos.
[00134] A interface 1710 fornece canais de comunicação aos outros componentes, como por exemplo um SIM (Subscriber Identity Module - Módulo de Identidade do Subscritor) 1730 para a interação com um cartão SIM, uma ROM de arranque 1735 para a retenção do código de arranque para a execução pelos núcleos 1706 e 1707 de modo a inicializar e arrancar o SOC 1700, um controlador SDRAM 1740 para a interação com a memória externa (p. ex. DRAM 1760), um controlador flash 1745 para a interação com a memória não volátil (p. ex. Flash 1765), um controle periférico 1750 (p. ex. SPI (SerialPeripheral Interface - Interface Periférica em Série) para a interação com periféricos, codecs de vídeo 1720 e Interface de vídeo 1725 para a visualização e recepção de entrada (p. ex. entrada ativada por toque), GPU 1715 para a realização de computações relacionadas com gráficos, etc. Qualquer uma dessas interfaces pode incorporar aspectos do invento aqui descrito.
[00135] Além disso, o sistema ilustra periféricos para a comunicação, como por exemplo um módulo Bluetooth 1770, modem 3G 1775, GPS 1785 e WiFi 1785. 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 requeridos. Contudo, em um UE, tem de ser incluída alguma forma de rádio para comunicação externa.
[00136] Embora o presente invento tenha sido descrito com respeito a um número limitado de modalidades, os peritos na técnica entenderão numerosas modificações e variações das mesmas. Se pretende que as reivindicações apensas abranjam todas essas modificações e variações como fazendo parte do verdadeiro espírito e escopo desse presente invento.
[00137] Um desenho pode passar por vários estágios, desde a criação à simulação e à fabricação. Os dados representando um desenho podem representar o desenho em diversas maneiras. Em primeiro lugar, como é útil nas simulações, o hardware pode ser representado usando uma linguagem de descrição de hardware ou outra linguagem de descrição funcional. Adicionalmente, pode ser produzido um modelo de nível de circuito com portas lógicas e/ou de transistor em alguns estágios do processo de desenho. Ademais, a maioria dos desenhos, em algum momento, alcançam um nível de dados representando a colocação física de vários dispositivos no modelo de hardware. No caso em que são usadas técnicas convencionais de fabricação de semicondutores, os dados representando o modelo de hardware podem ser os dados especificando a presença ou ausência de várias funcionalidades em diferentes camadas de máscara para máscaras usadas para a produção do circuito integrado. Em qualquer representação do desenho, os dados podem ser armazenados em qualquer forma de um meio legível por máquina. Uma memória ou um armazenamento óptico ou magnético, como por exemplo um disco, pode ser o meio legível por máquina para o armazenamento de informações transmitidas por via de onda óptica ou elétrica modulada ou então gerada para a transmissão dessas informações. Quando é transmitida uma onda portadora elétrica indicando ou transportando o código ou o desenho, na medida em que é efetuada a cópia, a colocação em buffer ou a retransmissão do sinal elétrico, é criada uma nova cópia. Desse modo, um provedor de comunicação ou um provedor de rede pode armazenar em um meio tangível legível por máquina, pelo menos temporariamente, um artigo, como por exemplo informações codificadas em uma onda portadora, incorporando técnicas de modalidades do presente invento.
[00138] Um módulo como aqui usado se refere a qualquer combinação de hardware, software e/ou firmware. Como um exemplo, um módulo inclui hardware, como por exemplo um microcontrolador, associado a um meio não transitório para o armazenamento do código adaptado para ser executado pelo microcontrolador. Por consequência, a referência a um módulo, em uma modalidade, se refere ao hardware, que é especificamente configurado para o reconhecimento e/ou a execução do código a ser mantido em um meio não transitório. Ademais, em outra modalidade, o uso de um módulo se refere ao meio não transitório incluindo o código, que é especificamente adaptado para ser executado pelo microcontrolador para efetuar operações predeterminadas. Além disso, como pode ser inferido, em ainda outra modalidade, o termo módulo (em esse exemplo) pode se referir à combinação do microcontrolador e ao meio não transitório. Muitas vezes, os limites do módulo que são ilustrados como separados geralmente variam e potencialmente se sobrepõem. Por exemplo, um primeiro e um segundo módulos podem partilhar hardware, software, firmware ou uma combinação dos mesmos, enquanto retêm potencialmente algum hardware, software ou firmware independente. Em uma modalidade, o uso do termo lógica inclui hardware, como por exemplo transistores, registros ou outro hardware, como por exemplo dispositivos lógicos programáveis.
[00139] O uso da expressão “configurado para”, em uma modalidade, se refere à organização, montagem, fabricação, colocação à venda, importação e/ou desenho de um aparelho, hardware, lógica ou elemento para efetuar uma tarefa designada ou determinada. Em esse exemplo, um aparelho ou elemento do mesmo que não se encontre em operação ainda é “configurado para” efetuar uma tarefa designada se o mesmo for projetado, acoplado e/ou interconectado para efetuar a referida tarefa designada. Como um exemplo puramente ilustrativo, uma porta lógica pode fornecer um 0 ou um 1 durante a operação. Todavia, uma porta lógica “configurada para” fornecer um sinal de ativação a um relógio não inclui todas as potenciais portas lógicas que possam fornecer um 1 ou 0. Em alternativa, a porta lógica é uma acoplada de uma maneira que, durante a operação, a saída 1 ou 0 ative o relógio. Note uma vez mais que o uso da expressão “‘configurado para” não requer operação, mas sim foco no estado latente de um aparelho, hardware e/ou elemento, em que, no estado latente, o aparelho, hardware e/ou elemento seja desenhado para efetuar uma tarefa específica quando o aparelho, hardware e/ou elemento se encontram em operação.
[00140] Ademais, o uso das expressões “para”, “capaz de/para” e/ou “operável para”, em uma modalidade, se refere a alguns entre aparelho, lógica, hardware e/ou elemento desenhados de modo a permitir o uso do aparelho, lógica, hardware e/ou elemento em uma maneira especificada. Note, como acima, que o uso de “para”, “capaz para” ou “operável para”, em uma modalidade, 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 se encontra em funcionamento, mas foi desenhado de modo a permitir o uso de um aparelho em uma maneira especificada.
[00141] Um valor, como aqui usado, inclui qualquer representação conhecida de um número, um estado, um estado lógico ou um estado lógico binário. Frequentemente, o uso de níveis lógicos, valores de lógica ou valores lógicos é igualmente referido como 1’s e 0’s, o que simplesmente representa 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 modalidade, uma célula de armazenamento, como por exemplo um transistor ou célula flash, pode ser capaz da manutenção de um único valor lógico ou múltiplos valores lógicos. Contudo, foram usadas outras representações de valores nos sistemas de computador. Por exemplo, o número decimal dez pode igualmente ser representado como um valor binário de 1010 e uma letra hexadecimal A. Por consequência, um valor inclui qualquer representação de informações capaz de ser mantida em um sistema de computador.
[00142] Além do mais, os estados podem ser representados por valores ou porções de valores. Como um exemplo, um primeiro valor, como por exemplo um valor lógico, pode representar um estado predefinido ou inicial, enquanto um segundo valor, como por exemplo um zero lógico, pode representar um estado não predefinido. Além disso, os termos repostos e definidos, em uma modalidade, se referem a uma predefinição e a um valor ou estado atualizado, respectivamente. Por exemplo, um valor predefinido potencialmente inclui um valor lógico alto, ou seja, reposto, enquanto um valor atualizado potencialmente inclui um valor lógico baixo, ou seja, definido. Note que pode ser utilizada qualquer combinação de valores para representar um número qualquer de estados.
[00143] As modalidades de métodos, hardware, software, firmware ou código apresentadas acima podem ser implementadas por via de instruções ou código armazenados em um modo acessível por máquina, legível por máquina, acessível por computador ou legível por computador que são executados por um elemento de processamento. Um meio acessível/legível por máquina não transitório inclui qualquer mecanismo que forneça (ou seja, armazene e/ou transmita) informações em uma forma legível por uma máquina, como por exemplo 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 por exemplo RAM estática (SRAM) ou RAM dinâmica (DRAM); ROM; meio de armazenamento magnético ou óptico; dispositivos de memória flash; dispositivos de armazenamento elétrico; dispositivos de armazenamento óptico; dispositivos de armazenamento acústico; outra forma de dispositivos de armazenamento para a retenção de informações recebidas desde sinais transitórios (propagados) (p. ex., ondas portadoras, sinais infravermelhos, sinais digitais); etc., que serão distinguidos dos meios não transitórios que podem receber informações daí.
[00144] As instruções usadas para a programação de lógica para realizar modalidades do invento podem ser armazenadas dentro de uma memória no sistema, como por exemplo DRAM, cache, memória flash ou outro armazenamento. Ademais, as instruções podem ser distribuídas por via de uma rede ou por outros meios legíveis por computador. Desse modo, um meio legível por máquina pode incluir qualquer mecanismo para o armazenamento ou transmissão de informações em uma forma legível por uma máquina (p. ex., um computador), mas não é limitado a disquetes, discos ópticos, Disco Compacto - Memória Somente de Leitura (CD-ROM) e discos magneto- ópticos, Memória Somente de Leitura (ROM), Memória de Acesso Aleatório (RAM), Memória Somente de Leitura Programável Apagável (EPROM), Memória Somente de Leitura Programável Apagável Eletricamente (EEPROM), cartões magnéticos ou ópticos, memória flash ou um armazenamento tangível legível por máquina usado na transmissão de informações pela Internet por via elétrica, óptica, acústica ou outras formas de sinais propagados (p. ex., ondas portadoras, sinais infravermelhos, sinais digitais, etc.). Conformemente, o meio legível por computador inclui qualquer tipo de meio tangível legível por máquina adequado para o armazenamento ou a transmissão de instruções eletrônicas ou informações em uma forma legível por uma máquina (p. ex., um computador).
[00145] Os seguintes exemplos pertencem a modalidades de acordo com esse Relatório Descritivo. Uma ou mais modalidades podem fornecer um aparelho, um sistema, um armazenamento legível por máquina, um meio legível por máquina, lógica baseada em hardware e/ou software e um método para a geração de um sinal de modo de teste para incluir um padrão de teste e uma sequência de comunicação de erros, e o envio do sinal de modo de teste em uma hiperligação para compreender um ou mais dispositivos de extensão e duas ou mais sub- hiperligações, em que o sinal de modo de teste será enviado em uma específica das sub-hiperligações, o padrão de teste será usado por um dispositivo de recepção para a identificação de erros na sub- hiperligação específica, e a sequência de comunicação de erros será codificada com informações de erro para a descrição do estado de erro das sub-hiperligações na pluralidade de sub-hiperligações.
[00146] Em, pelo menos, um exemplo, o sinal de modo de teste é enviado dentro de um modo de teste de loopback, e as instâncias do sinal de modo de teste serão enviadas desde um primeiro dispositivo na hiperligação por um ou mais dispositivos de extensão a um segundo dispositivo e ainda enviadas desde o segundo dispositivo, pelo menos um, por um ou mais dispositivos de extensão de volta para o primeiro dispositivo.
[00147] Em, pelo menos, um exemplo, pelo menos uma das instâncias do sinal de modo de teste é recebida desde outro dispositivo em outra das sub-hiperligações da hiperligação, em que cada instância do sinal de modo de teste inclui uma instância do padrão de teste e uma instância da sequência de comunicação de erros.
[00148] Em, pelo menos, um exemplo, é fornecida lógica de detecção de erros para a determinação de um ou mais erros na outra sub-hiperligação com base na instância do padrão de teste.
[00149] Em, pelo menos, um exemplo, os erros são determinados para uma sub-hiperligação com base em uma identificação de que uma instância do padrão de teste como incluído em um sinal de modo de teste recebido pela sub-hiperligação se desvia de um valor esperado para o padrão de teste.
[00150] Em, pelo menos, um exemplo, o dispositivo de extensão compreende um retemporizador.
[00151] Em, pelo menos, um exemplo, o aparelho compreende o retemporizador.
[00152] Em, pelo menos, um exemplo, a sequência de comunicação de erros compreende uma pluralidade de segmentos e cada segmento descreve o estado de erro de uma respectiva das sub-hiperligações.
[00153] Em, pelo menos, um exemplo, cada segmentodescreve um entre um canal a jusante e um canal amontante de uma respectiva sub-hiperligação.
[00154] Em, pelo menos, um exemplo, cada segmentocompreende um ou mais conjuntos ordenados, e é fornecida, pelo menos, uma porção de cada um dos conjuntos ordenados para ser codificada de modo a identificar o estado de erro de, pelo menos, uma das sub-hiperligações.
[00155] Em, pelo menos, um exemplo, cada conjunto ordenado compreende um respectivo conjunto ordenado SKP.
[00156] Em, pelo menos, um exemplo, um ou mais dispositivos de extensão compreendem, pelo menos, dois dispositivos de extensão, as duas ou mais sub- hiperligações compreendem três sub-hiperligações, e a pluralidade de segmentos compreende, pelo menos, cinco segmentos.
[00157] Em, pelo menos, um exemplo, as informações de erro detectadas para uma sub-hiperligação precedente são codificadas na sequência de comunicação de erros, e as informações de erro são mantidas na sequência de comunicação de erros para o estado de erro anteriormente detectado de outras sub-hiperligações em duas ou mais sub-hiperligações.
[00158] Em, pelo menos, um exemplo, as informações de erro incluem um ou mais entre: um número de erros detectados para uma sub-hiperligação, um corredor da hiperligação onde apareceu um erro e uma localização de erros detectados em um padrão de teste recebido.
[00159] Em, pelo menos, um exemplo, o padrão de teste compreende um padrão predefinido a ser regenerado em cada sub-hiperligação durante um teste.
[00160] Em, pelo menos, um exemplo, o padrão de teste inclui um ou mais conjuntos ordenados.
[00161] Em, pelo menos, um exemplo, um ou mais conjuntos ordenados incluem o conjunto ordenado de sequência de saída inativo elétrico (EIEOS).
[00162] Em, pelo menos, um exemplo, a lógica de controle identificará que a hiperligação se encontra em um modo de teste, e o sinal de modo de teste é enviado de acordo com o modo de teste.
[00163] Em, pelo menos, um exemplo, o padrão de teste é um padrão de teste fixo definido para o modo de teste.
[00164] Uma ou mais modalidades podem fornecer um aparelho, um sistema, um armazenamento legível por máquina, um meio legível por máquina, lógica baseada em hardware e/ou software, e um método para a recepção de um sinal de modo de teste em uma hiperligação em um modo de teste, em que a hiperligação compreende, pelo menos, um dispositivo de extensão e duas ou mais sub- hiperligações, o sinal de modo de teste inclui um padrão de teste e uma sequência de comunicação de erros, o sinal de modo de teste é enviado em uma específica das sub-hiperligações, e a sequência de comunicação de erros será codificada com informações de erro para descrever o estado de erro das sub-hiperligações na pluralidade de sub-hiperligações e avaliar o padrão de teste no sinal de modo de teste para a identificação de um estado de erro da sub-hiperligação específica.
[00165] Em, pelo menos, um exemplo, o padrão de teste é avaliado para determinar se o padrão de teste se desvia ou não de um padrão de teste esperado.
[00166] Em, pelo menos, um exemplo, o padrão de teste é definido para um modo de teste, o modo de teste inclui um teste de cada sub-hiperligação da hiperligação, e uma respectiva instância do padrão de teste será gerada e enviada em cada um dos testes das sub-hiperligações para determinar se a respectiva instância do padrão de teste recebida na extremidade da respectiva sub-hiperligação se desvia ou não do padrão de teste definido.
[00167] Em, pelo menos, um exemplo, cada sub- hiperligação compreende um respectivo canal a montante e canal a jusante, e uma instância do padrão de teste será enviada em cada um dos canais a montante e a jusante de cada uma das sub-hiperligações.
[00168] Em, pelo menos, um exemplo, o estado de erro identifica um ou mais erros detectados na sub- hiperligação específica com base no padrão de teste.
[00169] Em, pelo menos, um exemplo, o estado de erro identifica um número de erros detectados na sub- hiperligação específica.
[00170] Em, pelo menos, um exemplo, o estado de erro identifica corredores da hiperligação onde aparecem um ou mais erros.
[00171] Em, pelo menos, um exemplo, o estado de erro identifica a localização dentro do padrão de teste onde foram detectados um ou mais erros.
[00172] Em, pelo menos, um exemplo, a lógica de controle irá gerar outra instância do sinal de modo de teste, em que a outra instância do sinal de modo de teste inclui uma sequência de comunicação de erros codificada para a identificação do estado de erro da sub-hiperligação específica, o aparelho compreendendo ainda lógica de transmissor para a transmissão da outra instância do sinal de modo de teste em outra das sub- hiperligações.
[00173] Em, pelo menos, um exemplo, a sequência de comunicação de erros na outra instância do sinal de modo de teste retém informações de estado de erro para estados de erro anteriormente determinados de outras sub-hiperligações da hiperligação.
[00174] Em, pelo menos, um exemplo, a sequência de comunicação de erros compreende uma pluralidade de segmentos e cada segmento descreve o estado de erro de uma respectiva das sub-hiperligações.
[00175] Em, pelo menos, um exemplo, a lógica de controle irá identificar um específico da pluralidade de segmentos onde codificar o estado de erro da sub- hiperligação específica.
[00176] Em, pelo menos, um exemplo, o segmento específico é identificado como previamente atribuído à sub-hiperligação específica.
[00177] Em, pelo menos, um exemplo, o segmento específico é identificado como um próximo não codificado da pluralidade de segmentos.
[00178] Em, pelo menos, um exemplo, a outra instância do sinal de modo de teste inclui uma instância do padrão de teste.
[00179] Em, pelo menos, um exemplo, o padrão de teste incluído no sinal de modo de teste recebido inclui um ou mais erros, e a instância do padrão de teste incluído na outra instância do sinal de modo de teste é enviada sem um ou mais erros.
[00180] Em, pelo menos, um exemplo, um primeiro de uma pluralidade de modos de operação do dispositivo de extensão será usado para o processamento do sinal de teste, a pluralidade dos modos de operação inclui outro modo de baixa latência, e o primeiro modo irá permitir a descodificação do sinal de teste.
[00181] Em, pelo menos, um exemplo, o dispositivo de extensão compreende um retemporizador.
[00182] Em, pelo menos, um exemplo, a sequência de comunicação de erros descreve o estado de erro de cada uma das duas ou mais sub-hiperligações da hiperligação, e o aparelho compreende ainda lógica para interpretar a sequência de comunicação de erros e registrar os resultados de erro para a hiperligação em, pelo menos, uma estrutura de dados.
[00183] Em, pelo menos, um exemplo, a estrutura de dados compreende um ou mais registros para corresponderem à hiperligação.
[00184] Em, pelo menos, um exemplo, o dispositivo de extensão compreende, pelo menos, dois retemporizadores.
[00185] Em, pelo menos, um exemplo, um dispositivo de porta raiz é conectado à hiperligação.
[00186] Uma ou mais modalidades podem fornecer um aparelho, um sistema, um armazenamento legível por máquina, um meio legível por máquina, lógica baseada em hardware e/ou software, e um método para a recepção de dados de treinamento de hiperligação desde um dispositivo de ponto final em uma primeira porta do dispositivo de extensão, a identificação de uma condição de hiperligação inativa em uma segunda porta de um dispositivo de extensão, em que o dispositivo de extensão é incluído em uma hiperligação, e a determinação de que outro dispositivo foi desconectado com base na condição de hiperligação inativa e nos dados de treinamento de hiperligação, em que o outro dispositivo foi anteriormente conectado à hiperligação.
[00187] Em, pelo menos, um exemplo, a hiperligação conecta o dispositivo de ponto final a outros dispositivos, e o dispositivo de extensão é posicionado entre o ponto final e os outros dispositivos na hiperligação.
[00188] Em, pelo menos, um exemplo, a primeira porta é conectada ao dispositivo de ponto final por uma primeira sub-hiperligação da hiperligação e a segunda porta é conectada a uma segunda hiperligação da hiperligação, e o outro dispositivo foi anteriormente conectado à segunda porta pela segunda sub-hiperligação.
[00189] Em, pelo menos, um exemplo, o dispositivo de extensão compreende um retemporizador.
[00190] Em, pelo menos, um exemplo, o retemporizador carece de lógica de banda lateral para a determinação da desconexão na hiperligação.
[00191] Em, pelo menos, um exemplo, a desconexão do outro dispositivo compreende uma desconexão inesperada.
[00192] Em, pelo menos, um exemplo, a desconexão corresponde à conexão hot-plugging de um dispositivo na hiperligação.
[00193] Em, pelo menos, um exemplo, é introduzido um modo de detecção com base na determinação de que outro dispositivo foi desconectado.
[00194] Em, pelo menos, um exemplo, os conectores da segunda porta serão removidos para procurar e estabelecer uma nova conexão (p. ex., a um terceiro dispositivo) na segunda sub-hiperligação no modo de detecção.
[00195] Em, pelo menos, um exemplo, os dados de treinamento de hiperligação compreendem uma ou mais sequências de treinamento.
[00196] Em, pelo menos, um exemplo, os dados de treinamento de hiperligação correspondem a uma tentativa de recuperação da hiperligação.
[00197] Em, pelo menos, um exemplo, a condição de hiperligação inativa é inferida com base em um nível de atividade detectado na segunda porta.
[00198] Em, pelo menos, um exemplo, os dados de treinamento de hiperligação são recebidos enquanto a condição de hiperligação inativa é detectada.
[00199] Em, pelo menos, um exemplo, a primeira porta compreende uma porta a montante e a segunda porta compreende uma porta a jusante.
[00200] Em, pelo menos, um exemplo, a hiperligação compreende um cabo de conexão.
[00201] Uma ou mais modalidades podem fornecer um aparelho, um sistema, um armazenamento legível por máquina, um meio legível por máquina, lógica baseada em hardware e/ou software e um método para providenciar um retemporizador para suportar, pelo menos, dois modos de operação e seletivamente empregar os modos com base nas condições em uma hiperligação, em que os modos de operação devem incluir, pelo menos, um modo de baixa latência e um modo específico, os dados são reencaminhados como recebidos no modo de baixa latência, e os dados são descodificados e recodificados no modo específico.
[00202] Em, pelo menos, um exemplo, os dados recebidos pelo retemporizador no modo de baixa latência não são descodificados e são reencaminhados como recebidos.
[00203] Em, pelo menos, um exemplo, o modo específico permite a modificação de dados recebidos pelo retemporizador na hiperligação.
[00204] Em, pelo menos, um exemplo, as condições compreendem, pelo menos, um entre um tipo de dados transmitidos na hiperligação e um estado de hiperligação da hiperligação.
[00205] Em, pelo menos, um exemplo, o retemporizador irá detectar uma específica das condições e empregar um dos modos de operação com base na condição específica detectada.
[00206] Em, pelo menos, um exemplo, o modo de baixa latência será empregue quando a hiperligação for detectada como se encontrando em um estado de hiperligação ativa.
[00207] Em, pelo menos, um exemplo, o estado de hiperligação ativa compreende um estado L0.
[00208] Em, pelo menos, um exemplo, o modo específico será usado para a sequência de treinamento e os dados de conjunto ordenado.
[00209] Em, pelo menos, um exemplo, o modo específico será usado em um estado de hiperligação de treinamento de hiperligação.
[00210] Em, pelo menos, um exemplo, o modo específico será usado em um modo de teste.
[00211] Em, pelo menos, um exemplo, o modo de teste é usado para a determinação do estado de erro de cada uma de uma pluralidade de sub-hiperligações da hiperligação.
[00212] Em, pelo menos, um exemplo, a hiperligação usa um protocolo baseado em PCIe.
[00213] Uma ou mais modalidades podem fornecer um aparelho, um sistema, um armazenamento legível por máquina, um meio legível por máquina, lógica baseada em hardware e/ou software e um método para providenciar um dispositivo de extensão de modo a incluir lógica em camadas físicas, em que a lógica física inclui uma subcamada física lógica e uma subcamada física elétrica, o dispositivo de extensão é incluído em uma hiperligação, a subcamada física elétrica inclui um módulo de detecção de velocidade para a detecção da velocidade de transmissão dos dados na hiperligação, e a subcamada física elétrica irá comunicar a velocidade de transmissão detectada da hiperligação à subcamada física lógica.
[00214] Em, pelo menos, um exemplo, o dispositivo de extensão compreende um dispositivo retemporizador.
[00215] Em, pelo menos, um exemplo, a velocidade de transmissão será detectada como sendo uma de um conjunto predefinido de velocidades para a hiperligação.
[00216] Em, pelo menos, um exemplo, o conjunto de velocidades inclui uma velocidade de 2,5 GT/s, uma velocidade de 5 GT/s e uma velocidade de 8 GT/s.
[00217] Em, pelo menos, um exemplo, o módulo de detecção de velocidade compreende um módulo de detecção de velocidade analógico.
[00218] Em, pelo menos, um exemplo, o módulo de detecção de velocidade é implementado, pelo menos em parte, no hardware.
[00219] Em, pelo menos, um exemplo, a hiperligação compreende uma hiperligação compatível com PCIe.
[00220] Uma ou mais modalidades podem fornecer um aparelho, um sistema, um armazenamento legível por máquina, um meio legível por máquina, lógica baseada em hardware e/ou software e um método para a recepção de dados em um dispositivo de extensão em uma hiperligação que conecta um primeiro ponto final a um segundo ponto final, e o dispositivo de extensão é colocado entre o primeiro e o segundo pontos finais na hiperligação, a detecção da velocidade de transmissão dos dados usando um circuito de detecção de velocidade implementado no hardware do dispositivo de extensão, a comunicação da velocidade de transmissão detectada à lógica em camadas físicas do dispositivo de extensão, e o uso do dispositivo de extensão para a comunicação dos dados na velocidade de transmissão pela hiperligação desde um primeiro dispositivo a um segundo dispositivo.
[00221] Em, pelo menos, um exemplo, a velocidade de transmissão detectada é comunicada à lógica em camadas físicas usando uma interface de camadas físicas entre uma subcamada física elétrica e uma subcamada física lógica do dispositivo de extensão.
[00222] Em, pelo menos, um exemplo, a interface de camadas físicas compreende uma interface PHY para a interface PCI Express (PIPE).
[00223] Em, pelo menos, um exemplo, a detecção da velocidade de transmissão compreende a detecção de que a velocidade de transmissão corresponde a uma de um conjunto de velocidades predefinidas suportadas para a hiperligação.
[00224] Em, pelo menos, um exemplo, é identificada uma condição inativa na hiperligação, e a velocidade de transmissão será detectada seguindo a condição inativa.
[00225] Em, pelo menos, um exemplo, os dados compreendem dados de treinamento de hiperligação, e a velocidade de transmissão será detectada desde os dados de treinamento de hiperligação.
[00226] A referência em todo esse relatório descritivo a “uma modalidade” significa que uma determinada funcionalidade, estrutura ou característica descrita em conexão com a modalidade é incluída em, pelo menos, uma modalidade do presente invento. Desse modo, os aparecimentos da expressão “em uma modalidade” em vários locais em todo esse relatório descritivo não se referem necessariamente todos à mesma modalidade. Além do mais, as funcionalidades, estruturas ou características específicas podem ser combinadas de qualquer maneira adequada em uma ou mais modalidades.
[00227] No relatório descrito anterior, foi fornecida uma descrição detalhada com referência a modalidades exemplares específicas. Contudo, será evidente que podem ser efetuadas várias modificações e alterações nas mesmas sem sair do espírito e escopo mais gerais do invento como apresentado nas reivindicações apensas. O relatório descritivo e os desenhos devem, conformemente, ser considerados em um sentido ilustrativo em vez de um sentido restritivo. Ademais, o uso anterior da modalidade e de outra linguagem exemplar não se refere necessariamente à mesma modalidade ou ao mesmo exemplo, mas pode se referir a diferentes e distintas modalidades, bem como potencialmente à mesma modalidade.

Claims (24)

1. Aparelho caracterizado por compreender: um retemporizador compreendendo: uma primeira pseudoporta para se conectar a um primeiro segmento de uma hiperligação, em que a hiperligação deve conectar um primeiro dispositivo de ponto final a um segundo dispositivo de ponto final, e o retemporizador deve ser posicionado entre os primeiro e segundo dispositivos de ponto final na hiperligação, onde a primeira pseudoporta deve receber um conjunto ordenado SKP enviado no primeiro segmento da hiperligação; circuitos de protocolo para: determinar um erro em uma sequência de dados enviada no primeiro segmento da hiperligação; e inserir um valor em um campo do conjunto ordenado SKP para identificar o erro, em que o valor é inserido para gerar uma versão modificada do conjunto ordenado SKP; e uma segunda pseudoporta para se conectar a um segundo segmento da hiperligação e enviar a versão modificada do conjunto ordenado SKP no segundo segmento da hiperligação.
2. Aparelho, de acordo com a reivindicação 1, caracterizadopelo fato de que a hiperligação é compatível com um protocolo baseado em Interconexão do Componente Periférico Expresso (PCIe).
3. Aparelho, de acordo com a reivindicação 2, caracterizadopelo fato de que o conjunto ordenado SKP tem um formato definido pelo protocolo baseado em PCIe.
4. Aparelho, de acordo com a reivindicação 1, caracterizadopelo fato de que determinar o erro compreende detectar uma diferença na sequência de dados de uma versão esperada da sequência de dados, em que o erro é baseado na diferença.
5. Aparelho, de acordo com a reivindicação 1, caracterizadopelo fato de que o conjunto ordenado SKP compreende a sequência de dados.
6. Aparelho, de acordo com a reivindicação 1, caracterizadopelo fato de que o conjunto ordenado SKP compreende um número de símbolos, os símbolos de 0 a 4*N-1 compreendem um símbolo SKP, onde N é um inteiro maior ou igual a 1 e menor ou igual a 5Loopback, o símbolo 4*N compreendeum símbolo de SKP_FIM, e o erro é identificado em um símbolo do conjunto ordenado SKP após o símbolo 4*N.
7. Aparelho, de acordo com a reivindicação 6, caracterizadopelo fato de que o símbolo 0 compreende um identificador de conjunto ordenado SKP.
8. Aparelho, de acordo com a reivindicação 1, caracterizadopelo fato de que o conjunto ordenado SKP compreende uma pluralidade de campos de erro, e outro campo dos campos de erro é usado para identificar erros detectados em outro segmento da hiperligação.
9. Aparelho, de acordo com a reivindicação 1, caracterizadopelo fato de que compreende adicionalmente circuitos de retemporização para regenerar os dados recebidos na primeira pseudoporta a ser enviada na segunda pseudoporta.
10. Aparelho, de acordo com a reivindicação 1, caracterizadopelo fato de que o erro é determinado para um corredor particular de uma pluralidade de corredores no primeiro segmento da hiperligação.
11. Aparelho, de acordo com a reivindicação 1, caracterizadopelo fato de que a hiperligação compreende uma interconexão física entre o primeiro e o segundo dispositivos e o retemporizador deve estender o comprimento físico da interconexão.
12. Método caracterizadopor compreender: receber um conjunto ordenado SKP em uma primeira pseudoporta de um dispositivo de retemporização, em que o dispositivo de retemporização deve se conectar a um primeiro segmento de uma hiperligação pela primeira pseudoporta, a hiperligação deve conectar um primeiro dispositivo de ponto final a um segundo dispositivo de ponto final, e o retemporizador deve ser posicionado entre os primeiro e segundo dispositivos de ponto final na hiperligação; determinar um erro em uma sequência de dados enviada no primeiro segmento da hiperligação; inserir um valor em um campo do conjunto ordenado SKP para identificar o erro, em que o valor é inserido para gerar uma versão modificada do conjunto ordenado SKP; e enviar a versão modificada do conjunto ordenado SKP no segundo segmento da hiperligação usando uma segunda pseudoporta do dispositivo de retemporização.
13. Método, de acordo com a reivindicação12, caracterizadopelo fato de que determinar o erro compreende detectar uma diferença na sequência de dados de uma versão esperada da sequência de dados, em que o erro é baseado na diferença.
14. Método, de acordo com a reivindicação12, caracterizadopelo fato de que a hiperligação é compatível com um protocolo baseado em Interconexão do Componente Periférico Expresso (PCIe).
15. Método, de acordo com a reivindicação 14, caracterizadopelo fato de que o conjunto ordenado SKP tem um formato definido pelo protocolo baseado em PCIe.
16. Método, de acordo com a reivindicação 12, caracterizadopelo fato de que o conjunto ordenado SKP compreende a sequência de dados.
17. Sistema caracterizadopor compreender: um primeiro dispositivo; um segundo dispositivo acoplado ao primeiro dispositivo por uma hiperligação; e um retemporizador posicionado entre o primeiro e o segundo dispositivos na hiperligação, em que o retemporizador compreende: uma primeira pseudoporta para se conectar a um primeiro segmento de uma hiperligação, em que a hiperligação deve conectar um primeiro dispositivo de ponto final a um segundo dispositivo de ponto final, e o retemporizador deve ser posicionado entre os primeiro e segundo dispositivos de ponto final na hiperligação, onde a primeira pseudoporta deve receber um conjunto ordenado SKP enviado no primeiro segmento da hiperligação; circuitos de protocolo para: determinar um erro em uma sequência de dados enviada no primeiro segmento da hiperligação; e inserir um valor em um campo do conjunto ordenado SKP para identificar o erro, em que o valor é inserido para gerar uma versão modificada do conjunto ordenado SKP; e uma segunda pseudoporta para se conectar a um segundo segmento da hiperligação e enviar a versão modificada do conjunto ordenado SKP no segundo segmento da hiperligação.
18. Sistema, de acordo com a reivindicação 17, caracterizadopelo fato de que o retemporizador compreende um primeiro retemporizador e o sistema compreende adicionalmente um segundo retemporizador posicionado entre os primeiro e segundo dispositivos na hiperligação, e o segundo segmento de hiperligação acopla o primeiro retemporizador ao segundo retemporizador.
19. Sistema, de acordo com areivindicação 17, caracterizadopelo fato de que o conjunto ordenado SKP compreende uma pluralidade de campos de erro, e outro campo dos campos de erro é usado para identificar erros detectados no segundo segmento da hiperligação.
20. Sistema, de acordo com a reivindicação 17, caracterizadopelo fato de que o primeiro dispositivo compreende um processador.
21. Sistema, de acordo com a reivindicação 20, caracterizadopelo fato de que o primeiro dispositivo compreende um sistema em um chip (SoC).
22. Sistema, de acordo com a reivindicação 17, caracterizadopelo fato de que o segundo dispositivo compreende um acelerador.
23. Sistema, de acordo com a reivindicação 17, caracterizadopelo fato de que o segundo dispositivo compreende um comutador.
24. Sistema, de acordo com a reivindicação 17, caracterizadopelo fato de que a hiperligação é compatível com um protocolo baseado em Interconexão do Componente Periférico Expresso (PCIe).
BR112016012057-4A 2013-12-26 2013-12-26 Progressos de retemporizador de interconexão BR112016012057B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/077806 WO2015099733A1 (en) 2013-12-26 2013-12-26 Interconnect retimer enhancements

Publications (2)

Publication Number Publication Date
BR112016012057A2 BR112016012057A2 (pt) 2017-08-08
BR112016012057B1 true BR112016012057B1 (pt) 2021-12-28

Family

ID=53479397

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016012057-4A BR112016012057B1 (pt) 2013-12-26 2013-12-26 Progressos de retemporizador de interconexão

Country Status (8)

Country Link
US (2) US10534034B2 (pt)
EP (1) EP3087403B1 (pt)
JP (1) JP6339198B2 (pt)
KR (1) KR101963011B1 (pt)
CN (1) CN105793715B (pt)
BR (1) BR112016012057B1 (pt)
DE (1) DE112013007726T5 (pt)
WO (1) WO2015099733A1 (pt)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101963011B1 (ko) 2013-12-26 2019-03-27 인텔 코포레이션 인터커넥트 리타이머 강화
US10108577B2 (en) * 2015-01-06 2018-10-23 Intel Corporation Digital interconnects with protocol-agnostic repeaters
US20170270062A1 (en) * 2016-03-21 2017-09-21 Intel Corporation In-band retimer register access
US10114658B2 (en) * 2016-05-23 2018-10-30 Baida USA LLC Concurrent testing of PCI express devices on a server platform
US9965439B2 (en) 2016-06-27 2018-05-08 Intel Corporation Low latency multi-protocol retimers
US10747688B2 (en) * 2016-12-22 2020-08-18 Intel Corporation Low latency retimer
US10784986B2 (en) * 2017-02-28 2020-09-22 Intel Corporation Forward error correction mechanism for peripheral component interconnect-express (PCI-e)
US10789201B2 (en) 2017-03-03 2020-09-29 Intel Corporation High performance interconnect
US11249808B2 (en) 2017-08-22 2022-02-15 Intel Corporation Connecting accelerator resources using a switch
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
CN109031091B (zh) * 2018-07-16 2021-08-17 深圳市广和通无线股份有限公司 接口测试方法、测试系统和测试夹具
WO2020062075A1 (en) * 2018-09-28 2020-04-02 Intel Corporation Error reporting in link extension devices
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
TWI710953B (zh) * 2019-05-31 2020-11-21 緯創資通股份有限公司 韌體更新裝置以及韌體更新方法
WO2021102688A1 (zh) * 2019-11-26 2021-06-03 华为技术有限公司 一种数据同步的方法以及装置
US11836101B2 (en) 2019-11-27 2023-12-05 Intel Corporation Partial link width states for bidirectional multilane links
US11740958B2 (en) 2019-11-27 2023-08-29 Intel Corporation Multi-protocol support on common physical layer
WO2021147005A1 (zh) * 2020-01-22 2021-07-29 华为技术有限公司 一种用于执行重定时的装置以及路径切换的方法
KR102415309B1 (ko) 2020-06-16 2022-07-01 에스케이하이닉스 주식회사 인터페이스 장치 및 그 동작 방법
KR102518285B1 (ko) 2021-04-05 2023-04-06 에스케이하이닉스 주식회사 PCIe 인터페이스 및 인터페이스 시스템
KR102519480B1 (ko) 2021-04-01 2023-04-10 에스케이하이닉스 주식회사 PCIe 장치 및 이를 포함하는 컴퓨팅 시스템
US11546128B2 (en) 2020-06-16 2023-01-03 SK Hynix Inc. Device and computing system including the device
CN113740703B (zh) * 2021-07-28 2023-11-10 苏州浪潮智能科技有限公司 一种Retimer芯片的测试板及测试系统
KR102563047B1 (ko) * 2021-09-14 2023-08-04 테크위드유 주식회사 효율적 채널 제어를 지원하는 프로브카드 용 pmic와 신호용 스위치 ic

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03276942A (ja) 1990-03-27 1991-12-09 Toshiba Corp 中継装置
JP3069389B2 (ja) * 1991-05-27 2000-07-24 富士通株式会社 Atmセル誤り処理システム
JPH08111682A (ja) 1994-10-11 1996-04-30 Nec Corp ネットワーク間試験方法
US6690757B1 (en) * 2000-06-20 2004-02-10 Hewlett-Packard Development Company, L.P. High-speed interconnection adapter having automated lane de-skew
US20040047408A1 (en) * 2002-09-10 2004-03-11 Ingo Koenenkamp Data link analyzer
US7363395B2 (en) 2003-12-31 2008-04-22 Intel Corporation Intermediate device capable of communicating using different communication protocols
US20060095222A1 (en) * 2004-11-04 2006-05-04 Mindspeed Technologies, Inc. Optic module calibration
CN100396023C (zh) * 2005-09-30 2008-06-18 华为技术有限公司 维护多跳伪线的协商控制方法
US7493532B2 (en) 2005-10-14 2009-02-17 Lsi Corporation Methods and structure for optimizing SAS domain link quality and performance
US7853839B2 (en) * 2006-04-04 2010-12-14 Qualcomm Incorporated Method and apparatus for verifying the correctness of FTAP data packets received on the FLO waveform
US7814371B2 (en) 2006-09-27 2010-10-12 Intel Corporation Apparatus and method for point-to-point interconnect testing
WO2009105095A1 (en) * 2008-02-20 2009-08-27 Hewlett-Packard Development Company, L.P. Redriver with two reference clocks and method of operation thereof
TW201005541A (en) * 2008-07-31 2010-02-01 Aspeed Technology Inc Transmission device and data extended transmission method
US8369233B2 (en) * 2008-10-02 2013-02-05 Endace Technology Limited Lane synchronisation
US7992058B2 (en) * 2008-12-16 2011-08-02 Hewlett-Packard Development Company, L.P. Method and apparatus for loopback self testing
JP2011239219A (ja) 2010-05-11 2011-11-24 Hitachi Cable Ltd データ誤り検出方法及びデータ誤り検出システム
CN101882986A (zh) 2010-06-28 2010-11-10 深圳市国扬通信股份有限公司 误码测试仪
US8627156B1 (en) * 2010-10-26 2014-01-07 Agilent Technologies, Inc. Method and system of testing bit error rate using signal with mixture of scrambled and unscrambled bits
US8812913B2 (en) * 2011-09-23 2014-08-19 Dot Hill Systems Corporation Method and apparatus for isolating storage devices to facilitate reliable communication
US8913705B2 (en) * 2012-08-27 2014-12-16 Oracle International Corporation Dynamic skew correction in a multi-lane communication link
US9389942B2 (en) * 2013-10-18 2016-07-12 Intel Corporation Determine when an error log was created
KR101963011B1 (ko) 2013-12-26 2019-03-27 인텔 코포레이션 인터커넥트 리타이머 강화

Also Published As

Publication number Publication date
JP2017510094A (ja) 2017-04-06
WO2015099733A1 (en) 2015-07-02
US10534034B2 (en) 2020-01-14
CN105793715B (zh) 2019-02-15
EP3087403A1 (en) 2016-11-02
US20200132760A1 (en) 2020-04-30
EP3087403A4 (en) 2017-10-18
KR101963011B1 (ko) 2019-03-27
BR112016012057A2 (pt) 2017-08-08
KR20160075737A (ko) 2016-06-29
JP6339198B2 (ja) 2018-06-06
US20160377679A1 (en) 2016-12-29
DE112013007726T5 (de) 2017-02-02
US11675003B2 (en) 2023-06-13
EP3087403B1 (en) 2020-01-22
CN105793715A (zh) 2016-07-20

Similar Documents

Publication Publication Date Title
US11675003B2 (en) Interconnect retimer enhancements
US20220012189A1 (en) Sharing memory and i/o services between nodes
US11561910B2 (en) In-band retimer register access
JP6251806B2 (ja) 装置、方法、プログラム、システム、およびコンピュータ可読ストレージ媒体
BR102020019435A2 (pt) suporte multiprotocolo em camada física comum
CN107077521B (zh) 片上系统配置元数据
CN109643297B (zh) 电压调制的控制通路
CN112825066A (zh) 事务层分组格式
TWI556094B (zh) 用以控制鏈結介面之未使用硬體的電力消耗之方法、設備及系統
CN111797040A (zh) 多个协议层封装互连的虚拟链路状态
CN110633241A (zh) 用于非对称接口的动态高速通道方向切换的系统、方法和装置
JP6552581B2 (ja) 装置、方法、およびシステム
JP2019192287A (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]
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.