BR112016011691B1 - Aparelho, método e sistema para suportar acesso a memória de computador. - Google Patents

Aparelho, método e sistema para suportar acesso a memória de computador. Download PDF

Info

Publication number
BR112016011691B1
BR112016011691B1 BR112016011691-7A BR112016011691A BR112016011691B1 BR 112016011691 B1 BR112016011691 B1 BR 112016011691B1 BR 112016011691 A BR112016011691 A BR 112016011691A BR 112016011691 B1 BR112016011691 B1 BR 112016011691B1
Authority
BR
Brazil
Prior art keywords
data
memory
protocol
shared memory
access
Prior art date
Application number
BR112016011691-7A
Other languages
English (en)
Other versions
BR112016011691A2 (pt
Inventor
Debendra Das Sharma
Robert G. Blankenship
Suresh S. Chittor
Kenneth C. Creta
Balint Fleischer
Michelle C. Jen
Mohan J. Kumar
Brian S. Morris
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 BR112016011691A2 publication Critical patent/BR112016011691A2/pt
Publication of BR112016011691B1 publication Critical patent/BR112016011691B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Multi Processors (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)

Abstract

partilha de memória e serviços de e/s entre nós. a presente invenção refere-se a um controlador de memória partilhada que servirá operações de armazenamento e carregamento recebidas, por ligações de dados, desde uma pluralidade de nós independentes para o fornecimento de acesso a um recurso de memória partilhada. cada um da pluralidade de nós independentes terá permissão para acessar uma respectiva porção do recurso de memória partilhada. os dados de protocolo de interconexão e os dados de protocolo de acesso a memória são enviados nas ligações de dados, e as transições entre os dados de protocolo de interconexão e os dados de protocolo de acesso a memória podem ser definidos e identificados.

Description

CAMPO
[0001] Essa descrição pertence ao sistema de computação e, em particular (mas não exclusivamente), ao acesso a memória entre componentes em um sistema de computação.
ANTECEDENTES
[0002] Os avanços no desenho de lógica e processamento de se micondutores 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 de 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 po tê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 aumentar a 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 de 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 figura 1 ilustra uma modalidade de um sistema de compu tação incluindo uma arquitetura de interconexão.
[0006] A figura 2 ilustra uma modalidade de uma arquitetura de interconexão incluindo uma pilha em camadas.
[0007] A figura 3 ilustra uma modalidade de um pedido ou pacote a ser gerado ou recebido dentro de uma arquitetura de interconexão.
[0008] A figura 4 ilustra uma modalidade de um par de transmissor e receptor para uma arquitetura de interconexão.
[0009] A figura 5A ilustra um diagrama de blocos simplificado de uma modalidade de um nó de exemplo.
[00010] A figura 5B ilustra um diagrama de blocos simplificado de uma modalidade de um sistema de exemplo incluindo uma pluralidade de nós.
[00011] A figura 6 é uma representação de dados transmitidos de acordo com uma ligação de memória partilhada de exemplo.
[00012] A figura 7A é uma representação de dados transmitidos de acordo com outro exemplo de uma ligação de memória partilhada.
[00013] A figura 7B é uma representação de um início de exemplo de token de enquadramento de dados.
[00014] A figura 8 é uma representação de dados transmitidos de acordo com outro exemplo de uma ligação de memória partilhada.
[00015] As figuras 9A a 9D são fluxogramas ilustrando técnicas de exemplo para mensagens de acesso a memória.
[00016] A figura 10 ilustra uma modalidade de um diagrama de blocos para um sistema de computação incluindo um processador de múltiplos núcleos.
[00017] A figura 11 ilustra outra modalidade de um diagrama de blocos para um sistema de computação incluindo um processador de múltiplos núcleos.
[00018] A figura 12 ilustra uma modalidade de um diagrama de blocos para um processador.
[00019] A figura 13 ilustra outra modalidade de um diagrama de blocos para um sistema de computação incluindo um processador.
[00020] A figura 14 ilustra uma modalidade de um diagrama de blocos para um sistema de computação incluindo múltiplos processadores.
[00021] A figura 15 ilustra um sistema de exemplo implementado como sistema em um chip (SoC - System On Chip).
[00022] As designações e os números de referência iguais nos vários desenhos indicam elementos iguais.
DESCRIÇÃO DETALHADA
[00023] 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 hardware especí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.
[00024] 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, sistemas em um dispositivo em 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 quer a uma combinação dos mesmos) são vitais para um futuro de "tecnologia verde" equilibrado com considerações de desempenho.
[00025] À 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 aumentando 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 aspectos 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.
[00026] 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 dos 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, arquitetura de carregamento- armazenamento e interfaces de software, foram mantidos pelas respetivas revisões, ao passo que as anteriores implementações de barra- mento 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.
[00027] Em relação à figura 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 ligação 106 inclui uma arquitetura de interconexão diferencial em série que é compatível com padrões de interconexão diferentes.
[00028] 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).
[00029] 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 comunica 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.
[00030] Nesse caso, o concentrador de controlador 115 se encontra acoplado no comutador/na ponte 120 pela ligaçã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 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.
[00031] 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 pon te PCIe para PCI/PCI-X para 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.
[00032] O acelerador de gráficos 130 é igualmente acoplado no concentrador de controlador 115 pela ligaçã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 MCH acima, um controlador de gráficos ou o próprio acelerador de gráficos 130 pode ser integrado no processador 105.
[00033] Em relação à figura 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 - Interco- nexã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 figuras 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 ligação 210 e a camada física 220. Uma interface, como, por exemplo, as interfaces 117, 118, 121, 122, 126 e 131 na figura 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.
[00034] 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 Ligaçã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 nessas camadas. No lado de recepção, o processo inverso ocorre e os pacotes são transformados da respetiva representação de Camada Física 220 para a representação de Camada de Ligaçã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
[00035] Em uma modalidade, a camada de transação 205 se destina a providenciar uma interface entre o núcleo de processamento de um dispositivo e a arquitetura de interconexão, como por exemplo a camada de ligaçã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 ligação transporte outro tráfego enquanto o dispositivo-alvo reúne dados para a resposta.
[00036] 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 ligação, como, por exemplo, o concentrador de controlador 115 na figura 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.
[00037] 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.
[00038] 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 na especificação PCIe no website de especificação PCIe.
[00039] Brevemente em relação à figura 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.
[00040] 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.
[00041] 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 local 308 fornece identificação global de uma transação dentro de um domínio de hierarquia.
[00042] O campo de atributos 304 especifica características e relações da transação. A esse respeito, o campo de atributos 304 é potencialmente usado para fornecer informações adicionais que permitam a modificação do tratamento predefinido das transações. Em uma modalidade, o campo de atributos 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 atribuição de uma prioridade à transação. O campo de atributos 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 atributos reservado.
[00043] Nesse exemplo, o campo de atributos 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 atributos 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 Ligação
[00044] A camada de ligação 210, igualmente referida como camada de ligaçã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 ligaçã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 ligação. Um lado da Camada de Ligaçã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 para a Camada Física 220 para a transmissão de um dispositivo físico para um externo.
Camada Física
[00045] 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 Física 210.
[00046] 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, os símbolos especiais são usados para cercar um pacote com quadros 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.
[00047] Como mencionado acima, embora a camada de transação 205, a camada de ligaçã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/implemen- tado. 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 ligaçã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).
[00048] Em seguida, em relação à figura 4, é ilustrada uma estrutura ponto-a-ponto em série PCIe. Embora seja ilustrada uma modalidade de uma ligação ponto-a-ponto em série PCIe, uma ligação ponto-a- ponto em série PCIe 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 ligaçã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 a lógica de transmissão 406 para transmitir dados ao dispositivo 410 e a 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 ligação PCIe.
[00049] 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 ligaçã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 ligação, como por exemplo a ligação 415. Uma ligaçã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 ligação pode agregar múltiplos corredores indicados por xN, em que N corresponde a qualquer largura de Ligação suportada, como por exemplo 1, 2, 4, 8, 12, 16, 32, 64 ou maior.
[00050] 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 fre-quências de transmissão mais rápidas.
[00051] As camadas físicas de arquiteturas de comunicação e inter- conexão existentes, incluindo PCIe, podem ser alavancadas para o fornecimento de serviços de E/S e memória partilhada dentro de um sistema. Tradicionalmente, a memória colocável em cache não pode ser partilhada entre sistemas independentes usando semântica de memória de carregamento/armazenamento (LD/ST - Load/Store) tradicional. Um sistema independente, ou "nó", pode ser independente no sentido em que ele funciona como uma única entidade lógica, é controlado por um único sistema operacional (e/ou único BIOS ou Monitor de Máquina Virtual (VMM - Virtual Machine Monitor)) e/ou tem um domínio de falha independente. Um único nó pode incluir um ou múltiplos dispositivos de processador, ser implementado em uma única placa ou múltiplas placas, e incluir memória local, incluindo memória colocável em cache que pode ser acessada usando semântica LD/ST pelos dispositivos no mesmo nó. Em um nó, a memória partilhada pode incluir um ou mais blocos de memória, como, por exemplo, memória de acesso aleatório (RAM), que pode ser acessada por diversos processadores diferentes (p. ex., unidades centrais de processamento (CPU - Central Processing Units)) dentro de um nó. A memória partilhada po- de igualmente incluir a memória local dos processadores ou outros dispositivos no nó. Os múltiplos dispositivos dentro de um nó tendo memória partilhada podem partilhar uma única vista de dados dentro da memória partilhada. A comunicação de E/S envolvendo memória partilhada pode ser de latência muito baixa e permitir o rápido acesso a memória pelos múltiplos processadores.
[00052] Tradicionalmente, a partilha de memória entre nós diferentes não permitiu a partilha de memória de acordo com um paradigma de carregamento/armazenamento. Por exemplo, em alguns sistemas, a partilha de memória entre nós diferentes foi facilitada pelas arquiteturas de memória distribuídas. Nas soluções tradicionais, as tarefas computacionais operam em dados locais, e se forem desejados dados de outro nó, a tarefa computacional (p. ex., executada por outro nó CPU) comunica com o outro nó, por exemplo, por um canal de comunicação utilizando uma pilha de protocolos de comunicação, como por exemplo Ethernet, InfiniBand ou outro protocolo em camadas. Nos sistemas tradicionais de múltiplos nós, os processadores de nós diferentes não têm de saber onde os dados residem. A partilha de dados usando abordagens tradicionais, como por exemplo por uma pilha de protocolos, pode ter uma latência significativamente mais alta que a partilha de memória dentro de um nó usando um paradigma de carre- gamento/armazenamento. Em vez de tratar e operar diretamente nos dados na memória partilhada, um nó pode solicitar dados a outro usando um handshake de protocolo existente, como, por exemplo, Ethernet (ou Infiniband), e o nó de origem pode fornecer os dados, de modo que os dados possam ser armazenados e operados pelo nó requerente, entre outros exemplos.
[00053] Em algumas implementações, pode ser fornecida uma arquitetura de memória partilhada que permite que a memória seja partilhada entre nós independentes para acesso exclusivo ou partilhado usando semântica de memória de carregamento/armazenamento (LD/ST). Em um exemplo, a semântica de memória (e informações de diretório, se aplicável) junto com a semântica de E/S (para protocolos, como por exemplo PCIe) podem ser exportadas em um conjunto comum de pinos ou um conjunto separado de pinos. Em um sistema desses, a arquitetura de memória partilhada melhorada pode permitir que cada um de uma pluralidade de nós em um sistema mantenha o seu próprio domínio de falha independente (e memória local), permitindo ao mesmo tempo um agrupamento de memória partilhada para acesso pelos nós e a mensagem de baixa latência passando entre nós usando memória de acordo com a semântica LD/ST. Em algumas im-plementações, esse agrupamento de memória partilhada pode ser alocado dinamicamente (ou estaticamente) entre nós diferentes. Conformemente, é possível configurar igualmente os vários nós de um sistema em grupos dinamicamente variáveis de nós para funcionarem de forma cooperativa e flexível em várias tarefas fazendo uso da infraes- trutura de memória partilhada, por exemplo, consoante a demanda.
[00054] Em relação à figura 5A, é mostrado um diagrama de blocos simplificado 500a ilustrando um sistema de exemplo incluindo memória partilhada 505 capaz de ser acessada usando técnicas de carrega- mento/armazenamento por cada um de uma pluralidade de nós independentes 510a a 510n. Por exemplo, pode ser fornecido um controlador de memória partilhada 515 que possa aceitar pedidos de acesso de carregamento/armazenamento dos vários nós 510a a 510n no sistema. A memória partilhada 505 pode ser implementada utilizando memória de acesso aleatório dinâmica síncrona (SDRAM - Synchronous Dynamic Random Access Memory), módulos de memória em linha duplos (DIMM - Dual In-line Memory Modules) e outra memória não volátil (ou memória volátil).
[00055] Cada nó pode, sozinho, ter um ou múltiplos soquetes CPU e pode igualmente incluir memória local que se mantém isolada do acesso LD/ST por outros nós no sistema. O nó pode comunicar com outros dispositivos no sistema (p. ex., controlador de memória partilhada 515, controlador de funcionamento em rede 520, outros nós, etc.) usando um ou mais protocolos, incluindo PCIe, QPI, Ethernet, entre outros exemplos. Em algumas implementações, pode ser fornecido um protocolo de ligação de memória partilhada (SML - Shared Memory Link) pelo qual pode ser suportada a semântica de memória LD/ST de baixa latência. A SML pode ser usada, por exemplo, na comunicação de leituras e escritas de memória partilhada 505 (pelo controlador de memória partilhada 515) pelos vários nós 510a a 510n de um sistema.
[00056] Em um exemplo, a SML pode se basear em um protocolo de acesso a memória, como, por exemplo, Interconexão de Memória Escalável (SIM - Scalable Memory Interconnect) de 3a geração (SMI3). Em alternativa, podem ser usados outros protocolos de acesso a memória, como, por exemplo, protocolos de acesso a memória transacional, como por exemplo DIMM totalmente no buffer (FB-DIMM - fully buffered DIMM), DDR Transacional (DDR-T - DDR Transactional), entre outros exemplos. Em outros casos, a SML pode se basear na semântica de leitura/escrita de memória PCIe nativa com extensões de diretório adicionais. Uma implementação baseada no protocolo de memória de SML pode oferecer vantagens de eficiência de largura de banda devido a ser adaptada aos acessos a memória de linha de cache. Embora existam protocolos de comunicação entre dispositivos de alto desempenho, como, por exemplo, PCIe, as camadas superiores (p. ex., camadas de ligação e transação) desses protocolos podem introduzir latência que degrada a aplicação do protocolo inteiro para o uso nas transações de memória LD/ST, incluindo as transações envol- vendo uma memória partilhada 505. Um protocolo de memória, como, por exemplo, SMI3, pode permitir uma potencial vantagem adicional de oferecer acessos de latência mais baixa, uma vez que pode contornar a maioria de outra pilha de protocolos, como, por exemplo, PCIe. Conformemente, as implementações de SML podem utilizar SMI3 ou outro protocolo de memória em execução em uma PHY lógica e física de outro protocolo, como, por exemplo, SMI3 em PCIe.
[00057] Como notado, em alguma implementação, pode ser fornecido um controlador de memória partilhada (SMC - Shared Memory Controller) 515 que inclua lógica para o manejo de pedidos de carre- gamento/armazenamento de nós 510a a 510n no sistema. Os pedidos de carregamento/armazenamento podem ser recebidos pelo SMC 515 pelas ligações utilizando SML e conectando os nós 510a a 510n ao SMC 515. Em algumas implementações, o SMC 515 pode ser implementado como um dispositivo, como por exemplo um circuito integrado de aplicação específica (ASIC - Application-Specific Integrated Circuit), incluindo lógica para o fornecimento dos pedidos de acesso dos nós 510a a 510n para recursos de memória partilhada. Em outros casos, o SMC 515 (bem como memória partilhada 505) pode residir em um dispositivo, chip ou placa separada de um ou mais (ou até todos os) nós 510a a 510n. O SMC 515 pode ainda incluir lógica para a coordenação das transações de vários nós que envolvem memória partilhada 505. Adicionalmente, o SMC pode manter um acesso de seguimento de diretório a vários recursos de dados, como, por exemplo, cada linha de cache incluída na memória partilhada 505. Por exemplo, um recurso de dados pode se encontrar em um estado de acesso partilhado (p. ex., capaz de ser acessado (p. ex., carregado ou lido) por múltiplos dispositivos de processamento e/ou de E/S dentro de um nó, simultaneamente), um estado de acesso exclusivo (p. ex., reservado exclusivamente, se não temporariamente, por um único dispositivo de pro- cessamento e/ou de E/S dentro de um nó (p. ex., para uma operação de armazenamento ou escrita), um estado não colocado em cache, entre outros potenciais exemplos. Ademais, enquanto cada nó pode ter acesso direto a uma ou mais porções de memória partilhada 505, diferentes esquemas de endereçamento e valores podem ser empregues pelos vários nós (p.ex., 510a a 510n) resultando nos mesmos dados de memória partilhada sendo referidos (p. ex., em uma instrução) por um primeiro nó de acordo com um primeiro valor de endereço e um segundo nó sendo referido pelos mesmos dados por um segundo valor de endereço. O SMC 515 pode incluir lógica, incluindo ende-reços de nós de mapeamento de estruturas de dados para recursos de memória partilhada, de modo a permitir que o SMC 515 interprete os vários pedidos de acesso dos vários nós.
[00058] Adicionalmente, em alguns casos, alguma porção de memória partilhada (p. ex., certas partições, blocos de memória, registros, arquivos, etc.) pode ser submetida a certas permissões, regras e atribuições, de modo que somente uma porção dos nós 510a a 510n tenha permissão (p. ex., pelo SMC 515) para acessar os dados correspondentes. Na verdade, cada recurso de memória partilhada pode ser atribuído a um respectivo (e, em alguns casos, diferente) subconjunto dos nós 510a a 510n do sistema. Essas atribuições podem ser dinâmicas e o SMC 515 pode modificar essas regras e permissões (p. ex., sob demanda, dinamicamente, etc.) para acomodar regras novas ou alteradas, permissões, atribuições de nó e a propriedade aplicável a uma determinada porção da memória partilhada 505.
[00059] Um SMC de exemplo 515 pode ainda seguir várias transações envolvendo nós (p. ex., 510a a 510n) no sistema acessando um ou mais recursos de memória partilhada. Por exemplo, o SMC 515 pode seguir informações para cada transação de memória partilhada 505, incluindo a identificação do(s) nó(s) envolvidos na transação, no progresso da transação (p. ex., se foi ou não concluída), entre outras informações de transação. Isso pode permitir que alguns dos aspectos orientados para a transação de arquiteturas tradicionais de memória distribuída sejam aplicados na arquitetura de memória partilhada de múltiplos nós melhorada aqui descrita. Adicionalmente, o seguimento de transação (p. ex., pelo SMC) pode ser usado para ajudar na manutenção ou execução dos domínios de falha distintos e independentes de cada nó respectivo. Por exemplo, o SMC pode manter o ID de Nó correspondente para cada transação em curso nas respectivas estruturas de dados internas, incluindo na memória, e usar essas informações para a execução dos direitos de acesso e a manutenção dos domínios de falha individuais para cada nó. Conformemente, quando ocorre uma falha em um dos nós (p. ex., devido a um erro crítico, uma sequência de recuperação acionada ou outra falha ou evento), somente esse nó e respectivas transações envolvendo a memória partilhada 505 são interrompidos (p. ex., abandonados pelo SMC) - as transações dos restantes nós que envolvem a memória partilhada 505 continuam independente da falha no outro nó.
[00060] Um sistema pode incluir múltiplos nós. Adicionalmente, alguns sistemas de exemplo podem incluir múltiplos SMCs. Em alguns casos, um nó pode ser capaz de acessar a memória partilhada fora de um SMC remoto ao qual não se encontra diretamente ligado (ou seja, o SMC local do nó se conecta ao SMC remoto por um ou múltiplos saltos de Ligação SML). O SMC remoto pode se encontrar na mesma placa ou pode se encontrar em uma placa diferente. Em alguns casos, alguns dos nós podem se encontrar fora do sistema (p. ex., fora da placa ou fora do chip), mas acessar a memória partilhada 505. Por exemplo, um ou mais nós fora do sistema podem se conectar diretamente ao SMC usando uma ligação compatível com SML, entre outros exemplos. Adicionalmente, outros sistemas que incluem o seu próprio SMC e memória partilhada podem igualmente se conectar ao SMC 510 para estender a partilha de memória 505 aos nós incluídos, por exemplo, em outra placa que interage com o outro SMC conectado ao SMC por uma ligação SML. Além do mais, as conexões de rede podem ser colocadas em túnel para estender mais o acesso a outros nós fora da placa ou fora do chip. Por exemplo, o SML pode realizar a colocação em túnel por uma conexão Ethernet (p. ex., fornecida pelo controlador de rede 520) acoplando comunicativamente o sistema de exemplo da figura 5A com outro sistema que pode igualmente incluir um ou mais outros nós e permitir que esses nós obtenham igualmente acesso ao SMC 515 e, assim, à memória partilhada 505, entre outros exemplos.
[00061] Como outro exemplo, como ilustrado no diagrama de blocos simplificado 500b da figura 5B, uma arquitetura de memória partilhada melhorada permitindo o acesso partilhado por múltiplos nós independentes de acordo com uma semântica de memória LD/ST pode permitir flexivelmente a provisão de uma variedade de desenhos diferentes de sistema de múltiplos nós. Várias combinações dos múltiplos nós podem ser atribuídas para a partilha de porções de um ou mais blocos de memória partilhada fornecidos em um sistema de exemplo. Por exemplo, outro sistema de exemplo ilustrado no exemplo da figura 5B pode incluir múltiplos dispositivos 550a a 550d implementados, por exemplo, como dies separados, placas, chips, etc., cada dispositivo incluindo um ou mais nós CPU independentes (p. ex., 510a a 510h). Cada nó pode incluir a sua própria memória local. Um ou mais dos múltiplos dispositivos 550a a 550d podem ainda incluir memória partilhada que pode ser acessada por dois ou mais dos nós 510a a 510h do sistema.
[00062] O sistema ilustrado na figura 5B é um exemplo fornecido para ilustrar alguma da variabilidade que pode ser realizada por uma arquitetura de memória partilhada melhorada, como aqui ilustrado e descrito. Por exemplo, cada um entre um Dispositivo A 550a e um Dispositivo C 550c pode incluir um respectivo elemento de memória partilhada (p. ex., 505a, 505b). Conformemente, em algumas implementações, cada elemento de memória partilhada em um dispositivo distinto pode ainda incluir um respectivo controlador de memória partilhada (SMC) 515a, 515b. Várias combinações de nós 510a a 510h podem ser comunicativamente acopladas a cada SMC (p. ex., 515a, 515b) permitindo que os nós acessem à memória partilhada corres-pondente (p. ex., 505a, 505b). Como um exemplo, o SMC 515a do Dispositivo A 550a pode se conectar aos nós 510a, 510b no Dispositivo A usando uma ligação de dados direta suportando SML. Adicionalmente, outro nó 510c em outro dispositivo (p. ex., Dispositivo C 550c) pode igualmente ter acesso a memória partilhada 505a em virtude de uma conexão direta conectada por cabo (suportando SML) desde o nó 510c (e/ou respectivo dispositivo 550c) ao SMC 515a. Essas conexões indiretas, baseadas na rede ou outras podem igualmente ser usadas para permitir que os nós (p. ex., 510f a 510h) de um dispositivo remoto ou fora da placa (p. ex., Dispositivo D 550d) utilizem uma pilha de protocolos convencional para a interação com SMC 515a para ter igualmente acesso a memória partilhada 505a. Por exemplo, um túnel SML 555 pode ser estabelecido por uma conexão Ethernet, InfiniBand ou outra acoplando o Dispositivo A e o Dispositivo D. No estabelecimento e na manutenção, o túnel pode introduzir algum overhead e latência adicionais, em comparação com SML em execução em outras conexões físicas menos geridas por software, o túnel SML 555, quando estabelecido, pode operar como outros canais SML e permitir que os nós 510f a 510h interajam com SMC 515a por SML e acessem a memória partilhada 505a como qualquer outro nó comunicando com SMC por uma ligação SML. Por exemplo, a confiabilidade e a ordenação dos pacotes nos canais SML podem ser executadas pelos componentes de funcionamento em rede no sistema ou podem ser executadas ponto-a-ponto entre os SMCs.
[00063] Ainda em outros exemplos, os nós (p. ex., 515d, 515e) em um dispositivo diferente daquele que hospeda uma porção específica de memória partilhada (p. ex., 505a) podem se conectar indiretamente ao SMC correspondente (p. ex., SMC 515a) se conectando diretamente a outro SMC (p. ex., 515b) que se encontre, ele mesmo, acoplado (p. ex., usando uma ligação SML) no SMC correspondente (p. ex., 515a). A ligação de dois ou mais SMCs (p. ex., 515a, 515b) pode expandir efetivamente a quantidade de memória partilhada disponível para os nós 510a a 510h no sistema. Por exemplo, em virtude de uma ligação entre os SMCs 515a, 515b no exemplo da figura 5B, em algumas implementações, qualquer um dos nós (p. ex., 510a a 510c, 510f a 510h) capaz de acessar a memória partilhada 505a pelo SMC 515a também pode acessar potencialmente a memória partilhável 505b em virtude da conexão entre SMC 515a e SMC 515b. Igualmente, em algumas implementações, cada um dos nós acessando diretamente o SMC 515b também pode acessar a memória partilhável 505a em virtude da conexão entre os SMCs 515a, 515b, entre outros potenciais exemplos.
[00064] Como notado acima, uma arquitetura de memória partilhada melhorada pode incluir um protocolo de ligação de baixa latência (ou seja, SML) com base em um protocolo de acesso a memória, como, por exemplo, SMI3, e fornecido para facilitar os pedidos de carre- gamento/armazenamento envolvendo a memória partilhada. Ao passo que a SMI3 tradicional e outros protocolos de acesso a memória podem ser configurados para o uso na partilha de memória dentro de um único nó, a SML pode estender a semântica de acesso a memória a múltiplos nós, de modo a permitir a partilha de memória entre os múlti- plos nós. Ademais, a SML pode ser potencialmente utilizada em qualquer ligação de comunicação física. A SML pode utilizar um protocolo de acesso a memória suportando a semântica de memória LD/ST que é sobreposta em uma camada física (e lógica em camadas físicas correspondente) adaptada para a interconexão de dispositivos distintos (e nós). Adicionalmente, a lógica em camadas físicas de SML pode permitir a funcionalidade de repetições de erro e nenhum pacote ignorado, entre outras funcionalidades.
[00065] Em algumas implementações, a SML pode ser implementada sobrepondo SMI3 em uma PHY PCIe. Uma camada de ligação SML pode ser fornecida (p. ex., em lugar de uma camada de ligação PCIe tradicional) para anteceder o controle de fluxo e outras funcionalidades e facilitar o acesso a memória de baixa latência, como seria característico nas arquiteturas de acesso a memória CPU tradicional. Em um exemplo, a multiplexação da lógica em camadas de ligação SML pode ser realizada entre transações de memória partilhada e outras transações. Por exemplo, a multiplexação da lógica em camadas de ligação SML pode ser realizada entre SMI3 e transações PCIe. Por exemplo, a SMI3 (ou outro protocolo de memória) pode se sobrepor por cima de PCIe (ou outro protocolo de interconexão), de modo que a ligação possa comutar dinamicamente entre SMI3 e transações PCIe. Isso pode permitir que o tráfego PCIe tradicional coexista efetivamente na mesma ligação do tráfego SML em algumas instâncias.
[00066] Em relação à figura 6, é mostrada uma representação 600 ilustrando uma primeira implementação de SML. Por exemplo, a SML pode ser implementada sobrepondo SMI3 em uma PHY PCIe. A camada física pode usar a codificação 128b/130b PCIe padrão para todas as atividades de camadas físicas, incluindo o treinamento de ligação, bem como blocos de dados PCIe. A SML pode permitir tráfego nos corredores (p. ex., Corredor0 a Corredor7) da ligação cuja multi- plexação será realizada entre pacotes PCIe e voltas (flits) SMI3. Por exemplo, na implementação ilustrada na figura 6, o cabeçalho de sincronização da codificação 128b/130b PCIe pode ser modificado e usado para a indicação de que as voltas SMI3 terão de ser enviadas nos corredores da ligação em vez dos pacotes PCIe. Na codificação 128b/130b PCIe tradicional, os cabeçalhos de sincronização válidos (p. ex., 610) podem incluir o envio de um padrão 10b em todos os corredores da ligação (para indicar que o tipo de carga útil do bloco será Bloco de Dados PCIe) ou um padrão 01b em todos os corredores da ligação (para indicar que o tipo de carga útil do bloco será Bloco de Conjunto Ordenado PCIe). Em um exemplo de SML, pode ser definido um cabeçalho de sincronização alternativo para diferenciar o tráfego de voltas SMI3 dos blocos de dados PCIe e conjuntos ordenados. Em um exemplo, ilustrado na figura 6, o cabeçalho de sincronização 128b/130b PCIe (p. ex., 605a, 605b) pode ser codificado com padrões 01b, 10b alternativos em corredores pares/ímpares para a identificação de que serão enviadas voltas SMI3. Em outra implementação alternativa, a codificação de cabeçalho de sincronização 128b/130b para tráfego SMI3 pode ser definida por padrões 10b, 01b alternativos em corredores pares/ímpares, entre outras codificações de exemplo. Em alguns casos, as voltas SMI3 podem ser transmitidas imediatamente após o cabeçalho de sincronização SMI3 em uma base por byte, com a transição entre PCIe e protocolos SMI3 ocorrendo no limite do bloco.
[00067] Em algumas implementações, como as ilustradas no exemplo da figura 6, a transição entre os protocolos pode ser definida para ocorrer no limite do bloco independente de corresponder ou não a uma volta SMI3 ou um limite de pacote PCIe. Por exemplo, um bloco pode ser definido para incluir uma quantidade predefinida de dados (p. ex., 16 símbolos, 128 bytes, etc.). Em essas implementações, quando o limite do bloco não corresponde a uma volta SMI3 ou limite de pacote PCIe, a transmissão de toda uma volta SMI3 pode ser interrompida. Uma volta SMI3 interrompida pode ser retomada no seguinte bloco SMI3 indicado pelo envio de outro cabeçalho de sincronização codificado para SMI3.
[00068] Em relação à figura 7A, é mostrada uma representação 700 ilustrando outra implementação de exemplo de SML. No exemplo da figura 7A, em vez de usar uma codificação de cabeçalho de sincronização especializada para assinalar transições entre o acesso a memória e o tráfego de protocolo de interconexão, podem ser usados tokens de quadros de camada física. Um token de enquadramento (ou "token") pode ser um encapsulamento de dados de camada física que especifica ou sugere o número de símbolos a incluir em um fluxo de dados associado ao token. Consequentemente, o token de enquadramento pode identificar que um fluxo está começando, bem como sugerir onde o mesmo irá terminar, e pode por consequência ser usado para identificar igualmente a localização do token de enquadramento seguinte. Um token de enquadramento de um fluxo de dados pode se localizar no primeiro símbolo (Símbolo 0) do primeiro corredor (p. ex., Corredor 0) do primeiro bloco de dados do fluxo de dados. No exemplo de PCIs, podem ser definidos cinco tokens de quadros, incluindo token de início de tráfego TLP (STP), token de final do fluxo de dados (EDS), token de final mal sucedido (EDB), token de início de DLLP (SDP) e token inativo lógico (IDL).
[00069] No exemplo da figura 7A, a SML pode ser implementada sobrepondo SMI3 ou outro protocolo de acesso a dados em PCIe, e o token STP PCIe padrão pode ser modificado para a definição de um novo token STP que identifica que SMI3 (em vez do tráfego TLP) deverá começar nos corredores da ligação. Em alguns exemplos, os valores de bits de reserva do token STP PCIe padrão podem ser modificados para a definição do token STP SMI3 em SML. Ademais, como ilustrado na figura 7B, um token STP 705 pode incluir diversos campos, incluindo um campo 710 que identifica o comprimento da carga útil SMI3 (em termos do número de voltas) que tem de seguir. Em algumas implementações, podem ser definidos um ou mais comprimentos de carga útil padrão para dados TLP. Os dados SMI3 podem, em algumas implementações, ser definidos para incluir um número fixo de voltas ou, em outros casos, podem ter números variáveis de voltas, em que o campo de comprimento para o número de voltas SMI3 se torna um campo que pode ser ignorado. Ademais, o campo de comprimento para um STP SMI3 pode ser definido como um comprimento diferente de um dos comprimentos de carga útil TLP definidos. Conformemente, um STP SMI3 pode ser identificado com base em um valor não TLP se encontrando presente no campo de comprimento STP, como um exemplo. Por exemplo, em uma implementação, os 3 bits superiores do campo de comprimento STP de 11 bits pode ser definido para 111b para indicar o pacote SMI3 (p. ex., com base na suposição de que nenhum TLP PCIe compatível com a especificação pode ser suficientemente longo para ter um comprimento em que os 3 bits superiores do campo de comprimento resultarão em 1s). Outras implementações podem alterar ou codificar outros campos do token STP para diferenciar um token STP PCIe identificando uma carga útil de dados TLP PCIe tradicional desde um token STP SMI3 identificando que os dados SMI3 são encapsulados nos dados TLP.
[00070] Regressando ao exemplo da figura 7A, os dados de cabeçalho de sincronização podem seguir a codificação especificada para a codificação 128b/130b PCIe tradicional. Por exemplo, em 715a a c, são recebidos cabeçalhos de sincronização com o valor 10b indicando que os blocos de dados estão próximos. Quando é recebido um STP PCIe (p. ex., 720), é esperada uma carga útil TLP PCIe e o fluxo de dados é processado conformemente. Consistente com o comprimento de carga útil identificado no STP PCIe 720, a carga útil TLP PCIe pode utilizar todo o comprimento de carga útil alocado. Outro token STP pode ser recebido essencialmente a qualquer momento dentro de um bloco de dados após o final da carga útil TLP. Por exemplo, em 725, pode ser recebido um STP SMI3 sinalizando uma transição dos dados TLP PCIe para dados de voltas SMI3. O STP SMI3 pode ser enviado, por exemplo, assim que for identificado um final dos dados de pacote PCIe.
[00071] Continuando com o exemplo da figura 7A, tal como com os dados TLP PCIe, o STP SMI3 725 pode definir um comprimento da carga útil de voltas SMI3 para ser seguido. Por exemplo, o comprimento de carga útil dos dados SMI3 pode corresponder ao número de voltas SMI3 em termos de DWs a seguir. Uma janela (p. ex., terminando no Símbolo 15 do Corredor 3) correspondendo ao comprimento de carga útil pode assim ser definida nos corredores, nos quais somente os dados SMI3 serão enviados durante a janela. Quando a janela é concluída, podem ser enviados outros dados, como, por exemplo, outro STP PCIe para recomeçar o envio de dados TLP ou outros dados, como por exemplo dados de conjunto ordenado. Por exemplo, como ilustrado no exemplo da figura 7A, é enviado um token EDS após o final da janela de dados SMI3 definida pelo token STP SMI3 725. O token EDS pode sinalizar o final do fluxo de dados e sugerir que deve ser seguido um bloco de conjunto ordenado, como é o caso no exemplo da figura 7A. É enviado um cabeçalho de sincronização 740 com a codificação 01b para indicar que tem de ser enviado um bloco de conjunto ordenado. Nesse caso, é enviado um conjunto ordenado SKP PCIe. Esses conjuntos ordenados podem ser enviados periodicamente ou de acordo com janelas ou intervalos definidos, de modo que possam ser efetuadas várias tarefas de nível PHY e coordenação, incluindo a inicialização do alinhamento de bits, inicialização do alinhamento de símbolos, a troca de parâmetros PHY, a compensação por taxas de bits diferentes para duas portas em comunicação, entre outros exemplos. Em alguns casos, pode ser enviado um conjunto ordenado man- datado para a interrupção de uma janela definida ou bloco de dados especificado para dados de voltas SMI3 por um token STP SMI3 correspondente.
[00072] Embora não ilustrado explicitamente no exemplo da figura 7A, um token STP pode igualmente ser usado para a transição de dados de voltas SMI3 na ligação para dados TLP PCIe. Por exemplo, após o final de uma janela SMI3 definida, pode ser enviado um token STP PCIe (p. ex., similar ao token 720) para indicar que a próxima janela irá enviar uma quantidade especificada de dados TLP PCIe.
[00073] O tamanho das voltas de acesso a memória (p. ex., voltas SMI3) pode variar em algumas modalidades, tornando difícil a previsão, a priori, da quantidade de dados a reservar no token STP correspondente (p. ex., token STP SMI3) para a carga útil de acesso a memória. Por exemplo, como ilustrado na figura 7, STP SMI3 725 pode ter um campo de comprimento indicando que são esperados 244 bytes de dados SMI3 após o STP SMI3 725. Todavia, nesse exemplo, somente dez voltas (p. ex., Voltas SMI3 0 a 9) se encontram prontas para serem enviadas durante a janela, e essas dez voltas SMI3 somente utilizam 240 dos 244 bytes. Conformemente, são deixados quatro (4) bytes de largura de banda vazia, e esses são cheios com tokens IDL. Isso pode ser particularmente subaproveitado quando os dados TLP PCIe são colocados em fila e aguardam o fechamento da janela SMI3. Em outros casos, a janela fornecida para o envio de voltas SMI3 pode ser insuficiente para o envio da quantidade de dados SMI3 prontos para o corredor. As técnicas de arbitragem podem ser empregues para a determinação de como arbitrar entre dados SMI3 e TLP PCIe coexistentes na ligação. Ademais, em algumas implementações, o compri- mento da janela SMI3 pode ser dinamicamente modificado para ajudar no uso mais eficiente da ligação. Por exemplo, a arbitragem ou outra lógica pode monitorar quão bem as janelas SMI3 definidas são utilizadas para determinar se o comprimento de janela definido pode ser ou não mais otimizado para a quantidade de SMI3 (e tráfego TLP PCIe concorrente) esperada para o corredor. Conformemente, nessas implementações, os valores do campo de comprimento de tokens STP SMI3 podem ser dinamicamente ajustados (p. ex., entre valores diferentes) dependendo da quantidade de largura de banda de ligação que deve ser alocada aos dados de voltas SMI3 (p. ex., em relação a outros dados PCIe, incluindo dados TLP, DLLP e de conjunto ordenado), entre outros exemplos.
[00074] Em relação à figura 8, é ilustrada uma representação 800 de outra implementação de exemplo de SML. Nessa modalidade alternativa, a SML pode fornecer a intercalação de protocolos SMI3 e PCIe por um token de enquadramento PCIe modificado. Como notado acima, um token EDS pode ser usado em PCIe para indicar um final de um fluxo de dados e indicar que o próximo bloco será um bloco de conjunto ordenado. No exemplo da figura 8, a SML pode definir um token EDS SMI3 (p. ex., 805) que indica o final de um fluxo de dados TLP e a transição para transmissões de voltas SMI3. Um EDS SMI3 (p. ex., 805) pode ser definido codificando uma porção dos bits reser-vados do token EDS tradicional para indicar que os dados SMI3 devem ser seguidos, em vez de conjuntos ordenados PCIe ou outros dados que têm de seguir um EDS PCIe. Ao contrário do token EDS tradicional, o EDS SMI3 pode ser enviado essencialmente em qualquer lugar dentro de um bloco de dados PCIe. Isso pode permitir flexibilidade adicional no envio de dados SMI3 e na acomodação de transações de memória partilhada de baixa latência correspondente. Por exemplo, pode ser realizada uma transição de PCIe para SMI3 com uma única palavra dupla (DW - Double Word) de overhead. Ademais, tal como com tokens EDS tradicionais, um EDS SMI3 de exemplo pode não especificar um comprimento associado aos dados SMI3 que têm de seguir o token. A seguir a um EDS SMI3, os dados TLP PCIe podem ser concluídos e as voltas SMI3 avançam na ligação. O tráfego SMI3 pode avançar até a lógica SMI3 devolver o controle à lógica PCIe. Em algumas implementações, o envio de um EDS SMI3 origina a passagem do controle desde a lógica PCIe para a lógica SMI3 fornecida, por exemplo, em dispositivos conectados na ligação.
[00075] Em um exemplo, a SMI3 (ou outro protocolo) pode definir a sua própria sinalização de controle de ligação para o uso na realização do controle de camadas de ligação. Por exemplo, em uma implementação, a SML pode definir uma versão especializada de uma volta de controle de camadas de ligação (LLCTRL - Link Layer Control) SMI3 (p. ex., 810) que indica uma transição de protocolo SMI3 de volta para PCIe. Tal como com um EDS SMI3, a volta LLCTRL definida (p. ex., 810) pode fazer com que o controle passe da lógica SMI3 de volta para a lógica PCIe. Em alguns casos, como ilustrado no exemplo da figura 8, a volta LLCTRL definida (p. ex., 810) pode ser preenchida com um número predefinido de voltas inativas LLCTRL (LLCTRL- INATIVAS) (p. ex., 815) antes da conclusão da transição para PCIe. Por exemplo, o número de voltas LLCTRL-INATIVAS 815 a ser enviado para preencher a volta LLCTRL SMI3 810 pode depender da latên- cia para descodificar a volta LLCTRL SMI3 definida 810 sinalizando a transição. Após a conclusão da transição novamente para PCIe, pode ser enviado um pacote STP, e os dados de pacote TLP podem recomeçar na ligação sob controle de PCIe.
[00076] Deve ser percebido que as implementações aqui descritas são fornecidas como exemplos para ilustrar certos princípios e funcionalidades revelados no Relatório Descritivo. Deve ser percebido que as configurações, os protocolos e as arquiteturas alternativos (diferentes dos especificamente descritos nos exemplos) podem utilizar e aplicar esses princípios e funcionalidades. Como um exemplo de uma alternativa, pode ser usada a leitura/escrita de memória PCIe (p. ex., em vez do protocolo SMI3) que é melhorada com informações de diretório. As informações de diretório podem ser implementadas pelos bits de reserva do pacote PCIe. Em outro exemplo, os nós CPU podem utilizar um controlador de cache (p. ex., como uma alternativa a um controlador de memória partilhada) para o envio de transações de leitu- ra/escrita de memória em uma ligação PCIe, por exemplo, com base em uma checagem de variação de endereços remotos, entre outros potenciais exemplos e alternativas.
[00077] Em relação às figuras 9A a 9D, são mostrados os fluxogra- mas 900a a d ilustrando técnicas de exemplo para a comunicação usando um MCPL. Por exemplo, na figura 9A, pode ser recebida 905 uma mensagem de acesso a memória de carregamen- to/armazenamento desde um primeiro nó, a mensagem solicitando dados específicos de uma memória partilhada. O acesso aos dados específicos pode ser fornecido 910 ao primeiro nó. Uma segunda mensagem de acesso a memória de carregamento/armazenamento pode ser recebida 915 desde um segundo nó independente. A segunda mensagem pode solicitar acesso aos mesmos dados específicos da memória partilhada, e o acesso aos dados específicos pode ser fornecido 920 ao segundo nó. Os dados na memória partilhada podem assim ser partilhados e acessados por múltiplos nós independentes diferentes.
[00078] No exemplo da figura 9B, pode ser recebido 925 um primeiro cabeçalho de sincronização (como, por exemplo, um cabeçalho de sincronização PCIe) com uma primeira codificação. A codificação pode incluir uma transição de um protocolo de interconexão para um proto colo de acesso a memória, e a transição pode ser identificada 930 desde o primeiro cabeçalho de sincronização. Os dados do protocolo de acesso a memória podem ser recebidos após o primeiro cabeçalho de sincronização, e os dados podem ser processados 935 (p. ex., consistentes com o protocolo de acesso a memória). Em alguns exemplos, os dados de protocolo de acesso a memória podem incluir transações envolvendo memória partilhada por múltiplos nós independentes. Pode ser recebido 940 um segundo cabeçalho de sincronização que inclui uma segunda codificação diferente que indica uma transição do protocolo de interconexão. A transição do protocolo de acesso a memória novamente para o protocolo de interconexão pode ser identificada 945 desde o segundo cabeçalho de sincronização.
[00079] Em relação à figura 9C, em algumas instâncias, pode ser recebido 950 um primeiro token de início de dados (p. ex., um token STP PCIe) que inclui um ou mais valores codificados para a identificação de uma transição desde um protocolo de interconexão para um protocolo de acesso a memória. Os dados do protocolo de acesso a memória podem chegar após o primeiro token de início de dados e podem ser identificados 955. Os dados do protocolo de acesso a memória podem ser processados 960. Um campo de comprimento pode ser incluído no primeiro token de início de dados indicando quando deve ser efetuada a transição dos dados novamente para os dados de protocolo de interconexão. Na verdade, em algumas implementações, o campo de comprimento de um token de início de dados pode ser codificado para indicar um comprimento que corresponde aos dados do protocolo de acesso a memória. Ademais, pode ser definido um segundo início de token de enquadramento de dados diferente que tem de ser interpretado para corresponder à chegada dos dados do protocolo de interconexão. Cada um entre o primeiro e o segundo tokens de quadros de início de dados pode ser definido de acordo com o protocolo de interconexão (p. ex., PCIe), entre outros exemplos.
[00080] No exemplo da figura 9D, pode ser recebido 965 um final do token de fluxo (p. ex., um token EDS PCIe especializado) que seja codificado para indicar uma transição para dados de protocolo de acesso a memória. O final recebido do token de fluxo pode causar uma transição 970 da lógica em camadas de ligação, para processamento de dados de protocolo de interconexão, para lógica em camadas de ligação, para processamento de dados de protocolo de acesso a memória. Os dados do protocolo de acesso a memória podem ser recebidos 975 e processados usando a lógica em camadas de ligação do protocolo de acesso a memória. Os dados de controle de camadas de ligação do protocolo de acesso a memória podem ser recebidos 980 (p. ex., no final dos dados do protocolo de acesso a memória) para indicar uma transição para dados do protocolo de interconexão. A recepção 980 dos dados de controle de camadas de ligação pode causar uma transição 985 da lógica em camadas de ligação do protocolo de acesso a memória para a lógica em camadas de ligação do protocolo de interconexão. Os dados do protocolo de interconexão podem ser recebidos após os dados de controle de camadas de ligação e podem ser processados pela lógica em camadas de ligação do protocolo de interconexão após a transição 985, entre outros exemplos.
[00081] Deve se notar que, enquanto muitos dos princípios acima e dos exemplos são descritos dentro do contexto de PCIe e revisões específicas da especificação PCIe, os princípios, as soluções e as funcionalidades aqui descritos podem ser igualmente aplicáveis a outros protocolos e sistemas. Por exemplo, os erros análogos de corredor podem ser detectados em outras ligações usando outros protocolos com base em símbolos análogos, fluxos de dados e tokens, bem como regras especificadas para o uso, a colocação e a formatação dessas estruturas dentro de dados transmitidos por essas outras ligações. Ademais, podem ser usados mecanismos e estruturas alternativos (p. ex., além de um registro LES PCIe ou SKP OS) para providenciar funcionalidade de comunicação e detecção de erros de corredor dentro de um sistema. Além do mais, as combinações das soluções acima podem ser aplicadas dentro de sistemas, incluindo combinações de progressos lógicos e físicos, a uma ligação e sua lógica correspondente como aqui descrito, entre outros exemplos.
[00082] 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 descriçã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.
[00083] Em relação à figura 10, é representada uma modalidade de um diagrama de blocos para um sistema de computação incluindo um processador de múltiplos núcleos. O processador 1000 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 1000, em uma modalidade, inclui, pelo menos, dois núcleos 1001 e 1002, que podem incluir núcleos assimétricos ou núcleos simétricos (a modalidade ilustrada). Contudo, o processador 1000 pode incluir um número qualquer de elementos de processamento que possam ser simétricos ou assimétricos.
[00084] 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 independentemente associado ao código, como, por exemplo, um thread de software, sistema ope-racional, aplicação ou outro código. Um processador físico (ou soquete de processador) se refere tipicamente a um circuito integrado, que po-tencialmente inclui um número qualquer de outros elementos de pro-cessamento, como, por exemplo, núcleos ou threads de hardware.
[00085] 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 independentemente mantido é associado a, pelo menos, alguns 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 independentemente mantidos 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 hardware sã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.
[00086] O processador físico 1000, como ilustrado na figura 10, inclui dois núcleos 1001 e 1002. Nesse caso, o núcleo 1001 e 1002 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 1001 inclui um núcleo de processador fora de ordem, enquanto o núcleo 1002 inclui um núcleo de processador em ordem. Contudo, os núcleos 1001 e 1002 podem ser individualmente selecionados desde qualquer tipo de núcleo, como, por exemplo, um 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 traduçã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, para melhorar a descrição, as unidades funcionais ilustradas no núcleo 1001 são descritas em mais detalhe abaixo, uma vez que as unidades no núcleo 1002 operam de uma maneira similar na modalidade representada.
[00087] Como representado, o núcleo 1001 inclui dois threads de hardware 1001a e 1001b, que podem igualmente ser referidos como ranhuras de thread de hardware 1001a e 1001b. Por consequência, as entidades de software, como, por exemplo, um sistema operacional, em uma modalidade, veem potencialmente o processador 1000 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 1001a, um segundo thread é associado aos registros de estado de ar- quitetura 1001b, um terceiro thread pode ser associado aos registros de estado de arquitetura 1002a, e um quarto thread pode ser associado aos registros de estado de arquitetura 1002b. Nesse caso, cada um dos registros de estado de arquitetura (1001a, 1001b, 1002a e 1002b) 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 1001a são replicados nos registros de estado de arquitetura 1001b, de modo que os contex- tos/estados de arquitetura individuais sejam capazes de ser armazenados para o processador lógico 1001a e o processador lógico 1001b. No núcleo 1001, outros recursos menores, como por exemplo apontadores de instruções e lógica de renomeação no bloco renomeador e alocador 1030, podem igualmente ser replicados para threads 1001a e 1001b. Alguns recursos, como, por exemplo, buffers de reordenação na unidade de reordenação/retirada 1035, ILTB 1020, buffers de car- regamento/armazenamento e filas, podem ser partilhados pelo partici- onamento. 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 1015, unidade(s) de execução 1040 e porções de unidade fora de ordem 1035, são potencialmente partilhados na íntegra.
[00088] O processador 1000 inclui frequentemente outros recursos, que podem ser totalmente partilhados, partilhados por particionamento ou específicos de elementos de processamento. Na figura 10, é 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 firmware não representados. Como ilustrado, o núcleo 1001 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 1020 para a previsão de ramificações a serem executadas/consideradas e um buffer de conversão de instruções (I-TLB - Instruction-Translation Buffer) 1020 para o armazenamento de entradas de conversão de endereços para instruções.
[00089] O núcleo 1001 inclui ainda o módulo de descodificação 1025 acoplado na unidade de obtenção 1020 para descodificar elementos obtidos. A lógica de obtenção, em uma modalidade, inclui se- quenciadores individuais associados a ranhuras de thread 1001a, 1001b, respectivamente. Habitualmente, o núcleo 1001 é associado a uma primeira ISA, que define/especifica instruções executáveis no processador 1000. 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 1025 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 descodificado- res 1025, em uma modalidade, incluem lógica projetada ou adaptada para o reconhecimento de instruções específicas, como, por exemplo, instruções de transação. Como resultado do reconhecimento pelos descodificadores 1025, a arquitetura ou o núcleo 1001 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 1026, em uma modalidade, reconhecem a mesma ISA (ou um subconjunto da mesma). Em alternativa, em um ambiente de núcleo heterogêneo, os descodificadores 1026 reconhecem uma segunda ISA (um subconjunto da primeira ISA ou uma ISA distinta).
[00090] Em um exemplo, o bloco renomeador e alocador 1030 inclui um alocador para reservar recursos, como, por exemplo, arquivos de registro para o armazenamento de resultados de processamento de instruções. Contudo, os threads 1001a e 1001b são potencialmente capazes de execução fora de ordem, em que o bloco renomeador e alocador 1030 reserva igualmente outros recursos, como, por exemplo, buffers de reordenação para seguir resultados de instruções. A unidade 1030 pode igualmente incluir um renomeador de registro para renomear registros de referência de programa/instrução para outros registros internos do processador 1000. A unidade de reordena- ção/retirada 1035 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.
[00091] O bloco de unidade(s) de agendamento e execução 1040, 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.
[00092] A cache de dados de nível mais baixo e o buffer de conversão de dados (D-TLB - Data Translation Buffer) 1050 se encontram acoplados na(s) unidade(s) de execução 1040. 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.
[00093] Nesse caso, os núcleos 1001 e 1002 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 1010. 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 1000 - 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 1025 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).
[00094] Na configuração representada, o processador 1000 inclui igualmente o módulo de interface em um chip 1010. Historicamente, um controlador de memória, que é descrito em mais detalhe abaixo, foi incluído em um sistema de computação externo ao processador 1000. Nesse cenário, a interface em um chip 1010 irá comunicar com dispositivos externos ao processador 1000, como, por exemplo, memória de sistema 1075, um chipset (muitas vezes incluindo um concentrador de controlador de memória para a conexão à memória 1075 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 1005 pode incluir qualquer interconexão conhecida, como, por exemplo, barramento multidrop, uma interconexão ponto-a-ponto, uma in- terconexão em série, um concentrador paralelo, um concentrador coe-rente (p. ex. coerente com a cache), uma arquitetura de protocolos em camadas, um concentrador diferencial e um concentrador GTL.
[00095] A memória 1075 pode ser específica do processador 1000 ou partilhada com outros dispositivos em um sistema. Os exemplos comuns de tipos de memória 1075 incluem DRAM, SRAM, memória não volátil (memória NV) e outros dispositivos de armazenamento conhecidos. Note que o dispositivo 1080 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.
[00096] 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 1000. Por exemplo, em uma modalidade, um concentrador de controlador de memória se encontra no mesmo pacote e/ou die com o processador 1000. Nesse caso, uma porção do núcleo (uma porção no núcleo) 1010 inclui um ou mais controladores para a interação com outros dis-positivos, como por exemplo memória 1075 ou um dispositivo de gráficos 1080. 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 1010 inclui uma interconexão em anel para a comunicação em chip e uma ligação ponto-a-ponto em série de alta velocidade 1005 para comunicação fora do chip. Todavia, no ambiente SOC, ainda mais dispositivos, como, por exemplo, a interface de rede, coprocessadores, memória 1075, processador de gráficos 1080 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.
[00097] Em uma modalidade, o processador 1000 é capaz da execução de um compilador, uma otimização e/ou um código conversor 1077 para compilar, converter e/ou otimizar o código de aplicação 1076 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.
[00098] Os compiladores maiores incluem frequentemente múltiplas fases, mas muitas vezes essas fases se encontram incluídas em duas fases gerais: (1) um front-end, 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 back-end de um compilador. Como resultado, a referência à inserção, associação, geração ou outra operação de um compilador pode ocorrer em qualquer uma das fases ou 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 chama- das/operações no código de nível mais 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 ope- raçõ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 de binário ou uma combinação dos mesmos.
[00099] 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 do mesmo.
[000100] Em relação agora à figura 11, é ilustrado um diagrama de blocos de uma modalidade de um processador de múltiplos núcleos. Como ilustrado na modalidade da figura 11, o processador 1100 inclui múltiplos domínios. Especificamente, um domínio de núcleo 1130 inclui uma diversidade de núcleos 1130A a 1130N, um domínio de gráficos 1160 inclui um ou mais motores de gráficos com um motor multimídia 1165, e um domínio de agente de sistema 1110.
[000101] Em várias modalidades, o domínio de agente de sistema 1110 maneja eventos de controle de potência e gerenciamento de potência, de modo que unidades individuais dos domínios 1130 e 1160 (p. ex. núcleos e/ou motores de gráficos) sejam controláveis de maneira independente para operar dinamicamente em um nível/modo de potência apropriado (p. ex. ativo, turbo, sono, hibernação, somo 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 1130 e 1160 pode operar em diferentes voltagens e/ou potências, e ademais cada uma das unidades individuais dentro dos domínios opera 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.
[000102] Como ilustrado, cada núcleo 1130 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) 1140A a 1140N; essas LLCs incluem muitas vezes a funcionalidade de armazenamento e controlador de cache, e são partilhadas entre os núcleos, bem como potencialmente também entre o motor de gráficos.
[000103] Como observado, uma interconexão em anel 1150 acopla os núcleos uns nos outros e fornece interconexão entre o domínio de núcleo 1130, o domínio de gráficos 1160 e o conjunto de circuitos de agente de sistema 1110, por via de uma pluralidade de retentores de anel 1152A a 1152N, cada um em um acoplamento entre um núcleo e um setor LLC. Com observado na figura 11, a interconexão 1150 é 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 in- terconexão em anel, pode ser utilizada qualquer estrutura ou interco- nexão on-die. 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.
[000104] Como ainda representado, o domínio de agente de sistema 1110 inclui um motor de visualização 1112 que irá providenciar controle de, e uma interface para, um display associado. O domínio de agente de sistema 1110 pode incluir outras unidades, como por exemplo: um controlador de memória integrado 1120 que fornece uma interface para uma memória de sistema (p. ex., uma DRAM implementada com múltiplos DIMMs); lógica de coerência 1122 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) 1116, bem como uma ou mais interfaces PCIe™ 1114. O motor de visualiza-ção e essas interfaces tipicamente se acoplam na memória por via de uma ponte PCIe™ 1118. 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.
[000105] Em relação agora à figura 12, é 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 1130 da figura 11. Em geral, a estrutura ilustrada na figura 12 inclui um processador fora de ordem que tem uma unidade front-end 1270 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) 1280. O motor OOO 1280 efetua mais processamento em instruções descodificadas.
[000106] Especificamente na modalidade da figura 12, o motor fora de ordem 1280 inclui uma unidade de alocação 1282 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 1270, e a alocação das mesmas para recursos apropriados, como por exemplo registros, etc. Em seguida, as instruções são fornecidas a uma estação de reserva 1284, que reserva recursos e os agenda para execução em uma de uma pluralidade de unidades de execução 1286A a 1286N. 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) 1288, que toma resultados não ordenados e os devolve à ordem de programa correta.
[000107] Ainda em relação à figura 12, note que tanto a unidade front-end 1270 como o motor fora de ordem 1280 são acoplados em diferentes níveis de uma hierarquia de memória. É especificamente ilustrada uma cache de nível de instrução 1272, que por sua vez se acopla em uma cache de nível médio 1276, que por sua vez se acopla em uma cache de último nível 1295. Em uma modalidade, a cache de último nível 1295 é implementada em uma unidade em um chip (por vezes referida como fora do núcleo) 1290. Como um exemplo, a unidade 1290 é similar ao agente de sistema 1110 da figura 11. Como descrito acima, a função fora do núcleo 1290 comunica com a memória de sistema 1299 que, na modalidade ilustrada, é implementada por via da RAM ED. Note igualmente que as várias unidades de execução 1286 dentro do motor fora de ordem 1280 se encontram em comunicação com uma cache de primeiro nível 1274 que igualmente se encontra em comunicação com a cache de nível médio 1276. Note igualmente que os núcleos adicionais 1230N-2 a 1230N podem se acoplar em LLC 1295. Embora ilustrado em esse nível alto na modali- dade da figura 12, deve ser compreendido que podem estar presentes várias alterações e componentes adicionais.
[000108] Mudando para a figura 13, é 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 1300 inclui um componente, como por exemplo um processador 1302 para implementar 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 descri-ta. O sistema 1300 é 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 com outros microprocessadores, estações de trabalho de engenharia, set-top boxes e afins). Em uma modalidade, o sistema de amostra 1300 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 ne-nhuma combinação específica de conjunto de circuitos de hardware e software.
[000109] 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.
[000110] Em essa modalidade ilustrada, o processador 1302 inclui uma ou mais unidades de execução 1308 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 1300 é um exemplo de uma arquitetura de sistema de "concentrador". O sistema de computador 1300 inclui um processador 1302 para o processamento de sinais de dados. O processador 1302, como um exemplo ilustrativo, inclui um microprocessador de computador com um conjunto complexo de instruções (CISC - Complex Instruction Set Computer), um microprocessador de computação 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 1302 é acoplado em um barramento de processador 1310 que transmite sinais de dados entre o processador 1302 e outros componentes no sistema 1300. Os elementos do sistema 1300 (p. ex. acelerador de gráficos 1312, concentrador de controlador de memória 1316, memória 1320, concentrador de controlador de E/S 1324, transceptor sem fios 1326, Flash BIOS 1328, Controlador de rede 1334, Controlador de Áudio 1336, Porta de expansão em série 1338, controlador de E/S 1340, etc.) efetuam as respetivas funções convencionais que são bem conhecidas dos peritos na técnica.
[000111] Em uma modalidade, o processador 1302 inclui uma memória cache interna de Nível 1 (L1) 1304. Dependendo da arquitetura, o processador 1302 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 1306 irá armazenar diferentes tipos de dados 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.
[000112] A unidade de execução 1308, incluindo lógica para efetuar operações de ponto flutuante e número inteiro, reside igualmente no processador 1302. O processador 1302, em uma modalidade, inclui uma ROM de microcódigo (ucode) para o armazenamento de micro- código, que, quando executado, irá efetuar algoritmos para certas ma- croinstruçõ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 1302. Para uma modalidade, a unidade de execução 1308 inclui lógica para o manejo de um conjunto de instruções empacotadas 1309. Ao incluir o conjunto de instruções empacotadas 1309 no conjunto de instruções de um processador de uso geral 1302, 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 1302. 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 neces- sidade 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.
[000113] As modalidades alternativas de uma unidade de execução 1308 podem igualmente ser usadas em microcontroladores, processadores incorporados, dispositivos gráficos, DSPs e outros tipos de circuitos lógicos. O sistema 1300 inclui uma memória 1320. A memória 1320 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 1320 armazena instruções e/ou dados representados por sinais de dados que serão executados pelo processador 1302.
[000114] Note que qualquer uma das funcionalidades ou aspectos do invento acima mencionados acima podem ser utilizados em uma ou mais interconexões ilustradas na figura 13. Por exemplo, uma interco- nexão on-die (On-Die Interconnect), que não é ilustrada, para o acoplamento de unidades internas do processador 1302 implementa um ou mais aspectos do invento descrito acima. Em alternativa, o invento é associado a um barramento de processador 1310 (p. ex. outra inter- conexão de computação de alto desempenho conhecida), um caminho de memória de largura de banda elevada 1318 até à memória 1320, uma ligação ponto-a-ponto para o acelerador de gráficos 1312 (p. ex. uma estrutura compatível com PCIe (Peripheral Component Interconnect Express)), uma interconexão de concentrador de controlador 1322, 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 1336, concentrador de firmware (flash BIOS) 1328, transceptor sem fios 1326, arma-zenamento de dados 1324, controlador de E/S legado 1310 contendo interfaces de teclado e entrada de usuário 1342, uma porta de expansão em série 1338, como por exemplo USB (Universal Serial Bus), e um controlador de rede 1334. O dispositivo de armazenamento de dados 1324 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.
[000115] Agora em relação à figura 14, é ilustrado um diagrama de blocos de um segundo sistema 1400 de acordo com uma modalidade do presente invento. Como ilustrado na figura 14, o sistema de múltiplos processadores 1400 é um sistema de interconexão ponto-a-ponto, e inclui um primeiro processador 1470 e um segundo processador 1480 acoplados por via de uma interconexão ponto-a-ponto 1450. Cada um dos processadores 1470 e 1480 pode ser alguma versão de um processador. Em uma modalidade, 1452 e 1454 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.
[000116] Embora ilustrado com somente dois processadores 1470, 1480, 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.
[000117] Os processadores 1470 e 1480 são ilustrados incluindo unidades de controlador de memória integradas 1472 e 1482, respectivamente. O processador 1470 inclui igualmente, como parte das respectivas unidades de controlador de barramento, interfaces ponto-a- ponto (P-P) 1476 e 1478; similarmente, o segundo processador 1480 inclui interfaces P-P 1486 e 1488. Os processadores 1470, 1480 podem trocar informações por via de uma interface ponto-a-ponto (P-P) 1450 usando circuitos de interface P-P 1478, 1488. Como ilustrado na figura 14, IMCs 1472 e 1482 acoplam os processadores nas respectivas memórias, nomeadamente uma memória 1432 e uma memória 1434, que podem ser porções da memória principal localmente ligada aos respectivos processadores.
[000118] Cada um dos processadores 1470, 1480 troca informações com um chipset 1490 por via de interfaces P-P individuais 1452, 1454 usando circuitos de interface ponto-a-ponto 1476, 1494, 1486, 1498. O chipset 1490 troca igualmente informações com um circuito de gráficos de alto desempenho 1438 por via de um circuito de interface 1492 ao longo de uma interconexão de gráficos de alto desempenho 1439.
[000119] 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 PP, 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.
[000120] O chipset 1490 pode ser acoplado em um primeiro barra- mento 1416 por via de uma interface 1496. Em uma modalidade, o primeiro barramento 1416 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 tão limitado.
[000121] Como ilustrado na figura 14, vários dispositivos de E/S 1414 são acoplados no primeiro barramento 1416, junto com uma ponte de barramento 1418 que acopla o primeiro barramento 1416 em um segundo barramento 1420. Em uma modalidade, o segundo barramen- to 1420 inclui um barramento LPC (Low Pin Count - Baixa Contagem de Pinos). Vários dispositivos são acoplados no segundo barramento 1420 incluindo, por exemplo, um teclado e/ou mouse 1422, dispositivos de comunicação 1427 e uma unidade de armazenamento 1428, como por exemplo uma unidade de disco ou outro dispositivo de armazenamento em massa que muitas vezes inclui instruções/código e dados 1430, em uma modalidade. Ademais, é ilustrada uma E/S de áudio 1424 acoplada no segundo barramento 1420. 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 figura 14, um sistema pode implementar um barra- mento multidrop ou outra arquitetura assim.
[000122] Em relação em seguida à figura 15, é 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 1500 é 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 se 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.
[000123] Nesse caso, o SOC 1500 inclui 2 núcleos - 1506 e 1507. De modo similar à descrição acima, os núcleos 1506 e 1507 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 respetivos licenciados ou ado- tantes. Os núcleos 1506 e 1507 são acoplados no controle de cache 1508 que é associado à unidade de interface de barramento 1509 e na cache L2 1511 para a comunicação com outras partes do sistema 1500. A interconexão 1510 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.
[000124] A interface 1510 fornece canais de comunicação aos outros componentes, como por exemplo um SIM (Subscriber Identity Module - Módulo de Identidade do Subscritor) 1530 para a interação com um cartão SIM, uma ROM de arranque 1535 para reter o código de arranque para a execução pelos núcleos 1506 e 1507 de modo a inicializar e arrancar o SOC 1500, um controlador SDRAM 1540 para a interação com a memória externa (p. ex. DRAM 1560), um controlador flash 1545 para a interação com a memória não volátil (p. ex. Flash 1565), um controle periférico 1550 (p. ex. SPI (Serial Peripheral Interface - Interface Periférica em Série) para a interação com periféricos, codecs de vídeo 1520 e Interface de vídeo 1525 para a visualização e recepção de entrada (p. ex. entrada ativada por toque), GPU 1515 para a realização de computações relacionadas com gráficos, etc. Qualquer uma dessas interfaces pode incorporar aspectos do invento aqui descrito.
[000125] Além disso, o sistema ilustra periféricos para a comunicação, como por exemplo um módulo Bluetooth 1570, modem 3G 1575, GPS 1585 e WiFi 1585. 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, será incluída alguma forma de rádio para comunicação externa.
[000126] 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.
[000127] 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.
[000128] 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 (nesse 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 mantê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.
[000129] O uso da expressão "configurado para", em uma modalidade, se refere a 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. Nesse 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 encontra em operação.
[000130] 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, da lógica, do hardware e/ou do 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, uma lógica, um hardware e/ou um elemento, em que o aparelho, a lógica, o hardware e/ou o elemento não se encontram em operação, mas são desenhados de modo a permitir o uso de um aparelho em uma maneira especificada.
[000131] 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 exem- plo um transistor ou uma 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.
[000132] 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 prede- finido 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 a representação de um número qualquer de estados.
[000133] 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 executáveis 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 possam receber informações daí.
[000134] As instruções usadas para a programação de lógica para a realização de 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 a transmissão de informações em uma forma legível por uma máquina (p. ex., um computador), mas não se limita 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).
[000135] 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 fornecer um controlador de memória partilhada para servir operações de carregamento e armazenamento desde uma pluralidade de nós independentes para o fornecimento de acesso a um recurso de memória partilhada, em que cada um da pluralidade de nós independentes tem permissão para acessar uma porção respectiva do recurso de memória partilhada.
[000136] Em, pelo menos, um exemplo, as operações de carregamento e armazenamento são comunicadas usando um protocolo de ligação de memória partilhada.
[000137] Em, pelo menos, um exemplo, o protocolo de ligação de memória partilhada inclui um protocolo de acesso a memória utilizando a lógica em camadas físicas de um protocolo de interconexão diferente.
[000138] Em, pelo menos, um exemplo, o protocolo de ligação de memória partilhada permite a multiplexação entre a transmissão de dados dos dados do protocolo de acesso a memória e a transmissão de dados do protocolo de interconexão.
[000139] Em, pelo menos, um exemplo, os dados do protocolo de interconexão compreendem, pelo menos, dados de camadas de ligação ou dados de camadas de transação.
[000140] Em, pelo menos, um exemplo, o protocolo de acesso a memória compreende SMI3 e o protocolo de interconexão compreende PCI (Peripheral Component Interconnect) Express (PCIe).
[000141] Em, pelo menos, um exemplo, as transições entre os dados de protocolo de interconexão e os dados de protocolo de acesso a memória são identificadas por um cabeçalho de sincronização codificado para a identificação de transições.
[000142] Em, pelo menos, um exemplo, as transições entre os dados de protocolo de interconexão e os dados de protocolo de acesso a memória são identificadas por um início de token de enquadramento de dados codificado para a identificação de transições.
[000143] Em, pelo menos, um exemplo, as transições dos dados de protocolo de interconexão para dados de protocolo de acesso a memória são identificados por um final de token de enquadramento do fluxo de dados do protocolo de interconexão codificado para a identificação das transições, e as transições dos dados de protocolo de acesso a memória para dados de protocolo de interconexão são identificadas por voltas de controle de camadas de ligação do protocolo de acesso a memória.
[000144] Em, pelo menos, um exemplo, o protocolo de ligação de memória partilhada é colocado em túnel por uma pilha de protocolos de rede.
[000145] Em, pelo menos, um exemplo, a pilha de protocolos de rede compreende Ethernet.
[000146] Em, pelo menos, um exemplo, um primeiro da pluralidade de nós CPU se encontra em uma primeira placa, e um segundo da pluralidade de nós CPU se encontra em uma segunda placa separada da primeira placa.
[000147] Em, pelo menos, um exemplo, pelo menos dois da pluralidade de nós CPU se encontram no mesmo dispositivo.
[000148] Em, pelo menos, um exemplo, o controlador de memória partilhada seguirá ainda transações de memória envolvendo as operações de carregamento e armazenamento.
[000149] Em, pelo menos, um exemplo, o controlador de memória partilhada irá ainda identificar a ocorrência de uma falha em um espe- cífico da pluralidade de nós CPU, identificar uma porção das transações de memória do nó CPU específico, e ignorar a porção das transações de memória do nó CPU específico enquanto mantém todas as outras transações de memória.
[000150] Em, pelo menos, um exemplo, o controlador de memória partilhada irá ainda gerenciar permissões de acesso pela pluralidade de nós CPU para dados no recurso de memória partilhada.
[000151] Em, pelo menos, um exemplo, pelo menos um específico da pluralidade de nós CPU se encontra impedido de acessar, pelo menos, uma primeira porção da memória partilhada, e um segundo da pluralidade de nós CPU tem permissão para acessar a primeira porção.
[000152] Em, pelo menos, um exemplo, o controlador de memória partilhada irá ainda gerenciar informações de diretório para dados no recurso de memória partilhada.
[000153] Em, pelo menos, um exemplo, as informações de diretório identificam para cada um de uma pluralidade de recursos de dados armazenados no recurso de memória partilhada se o acesso ao respectivo recurso de dados é ou não exclusivo para um da pluralidade de nós CPU ou partilhado entre dois ou mais da pluralidade de nós CPU.
[000154] Em, pelo menos, um exemplo, o controlador de memória partilhada irá ainda negociar uma alteração de acesso para um específico da pluralidade de recursos de dados, em que a alteração compreende, pelo menos, um acesso variável de partilhado para exclusivo ou acesso variável de exclusivo para partilhado.
[000155] Em, pelo menos, um exemplo, o controlador de memória partilhada é acoplado em, pelo menos, um outro controlador de memória partilhada gerenciando, pelo menos, um outro recurso de memória partilhada, e o controlador de memória partilhada irá ainda comunicar operações de carregamento/armazenamento ao outro controlador de memória partilhada para permitir que a pluralidade de nós CPU acesse à outra memória partilhada.
[000156] Em, pelo menos, um exemplo, o controlador de memória partilhada irá ainda mapear informações de endereço nas operações de carregamento e armazenamento para recursos de dados correspondentes armazenados no recurso de memória partilhada.
[000157] 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 o envio de um pedido de acesso a memória a um controlador de memória partilhada, em que o pedido de acesso a memória compreende uma operação de carregamento/armazenamento e irá identificar um endereço de um recurso de dados a ser incluído em um recurso de memória partilhada correspondendo ao controlador de memória partilhada, e cada um de uma pluralidade de nós independentes tem permissão para acessar uma porção respectiva do recurso de memória partilhada.
[000158] Em, pelo menos, um exemplo, o pedido de acesso a memória compreende um pedido de carregamento e a lógica de E/S receberá ainda dados correspondendo ao recurso de dados em resposta ao pedido de carregamento.
[000159] Em, pelo menos, um exemplo, o pedido de acesso a memória compreende um pedido de armazenamento.
[000160] Em, pelo menos, um exemplo, o pedido de acesso a memória é enviado usando um protocolo de ligação de memória partilhada, e o protocolo de ligação de memória partilhada inclui um protocolo de acesso a memória utilizando lógica de camada física de um protocolo de interconexão diferente.
[000161] Em, pelo menos, um exemplo, o protocolo de ligação de memória de acesso permite a multiplexação entre a transmissão de dados dos dados do protocolo de acesso a memória e a transmissão de dados do protocolo de interconexão.
[000162] Em, pelo menos, um exemplo, as transições entre os dados de protocolo de interconexão e os dados de protocolo de acesso a memória são identificados, pelo menos, por um entre: (a) um cabeçalho de sincronização codificado para a identificação de transições; (b) um início de token de enquadramento de dados codificado para a identificação das transições; e (c) um final de token de enquadramento do fluxo de dados codificado para a identificação das transições.
[000163] Em, pelo menos, um exemplo, o protocolo de acesso a memória compreende SMI3 e o protocolo de interconexão compreende um protocolo baseado em PCIe.
[000164] Em, pelo menos, um exemplo, um específico da pluralidade de nós compreende múltiplos soquetes CPU e memória local. Em, pelo menos, um exemplo, o recurso de memória partilhada se encontra em um dispositivo separado do nó específico.
[000165] 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 uma primeira mensagem de carregamento/arma- zenamento desde um primeiro nó CPU independente que identifica dados específicos em uma memória partilhada, o fornecimento de acesso aos dados específicos ao primeiro nó CPU em resposta à primeira mensagem de carregamento/armazenamento, a recepção de uma segunda mensagem de carregamento/armazenamento desde um segundo nó CPU independente que identifica dados específicos em uma memória partilhada, e o fornecimento de acesso aos dados espe- cíficos à segunda memória CPU em resposta à segunda mensagem de carregamento/armazenamento.
[000166] Em, pelo menos, um exemplo, cada uma entre a primeira e a segunda mensagens de carregamento/armazenamento é recebida por uma ligação de dados usando um protocolo de ligação de memória partilhada.
[000167] Pelo menos, algumas modalidades podem permitir a identificação de que o primeiro nó CPU tem permissão para acessar os dados específicos e a identificação de que o segundo nó CPU tem permissão para acessar os dados específicos.
[000168] Pelo menos, algumas modalidades podem permitir o seguimento de transações envolvendo a memória partilhada para cada um entre o primeiro e o segundo nós CPU.
[000169] Pelo menos, algumas modalidades podem permitir a identificação de informações de diretório dos dados específicos, em que as informações de diretório identificam se os dados específicos se encontram em um estado partilhado, não colocados em cache ou exclusivo.
[000170] Em, pelo menos, um exemplo, a primeira mensagem de carregamento/armazenamento identifica os dados específicos por um primeiro endereço, e a segunda mensagem de carregamento/armaze- namento identifica os dados específicos por um segundo endereço diferente.
[000171] Pelo menos, algumas modalidades podem permitir o mapeamento do primeiro endereço para os dados específicos e o mapeamento do segundo endereço para os dados específicos.
[000172] Pelo menos, algumas modalidades podem permitir um sistema compreendendo um primeiro nó compreendendo um ou mais dispositivos de processador, um segundo nó independente do primeiro nó e compreendendo um ou mais dispositivos de processador, e uma memória partilhada acessível a cada um do primeiro e segundo nós por um protocolo de acesso a memória de carregamento/armaze- namento.
[000173] Em, pelo menos, um exemplo, o primeiro nó tem um domínio de falha independente do segundo nó.
[000174] Em, pelo menos, um exemplo, o primeiro nó é controlado por um primeiro sistema operacional e o segundo nó é controlado por um segundo sistema operacional.
[000175] Em, pelo menos, um exemplo, o protocolo de acesso a memória de carregamento/armazenamento é incluído em um protocolo de ligação de memória partilhada e o protocolo de ligação de memória partilhada alterna entre o protocolo de acesso a memória e um protocolo de interconexão diferente.
[000176] Em, pelo menos, um exemplo, um controlador de memória partilhada pode servir operações de carregamento e armazenamento desde o primeiro e o segundo nós e fornecer acesso a memória partilhada.
[000177] 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 o envio de um primeiro cabeçalho de sincronização nos corredores de uma ligação de dados, em que o primeiro cabeçalho de sincronização é codificado para a identificação de uma transição de dados de um protocolo de interconexão para dados de um protocolo de acesso a memória, e o envio de um segundo cabeçalho de sincronização nos corredores da ligação de dados, em que o segundo cabeçalho de sincronização será codificado para a identificação de uma transição dos dados do protocolo de acesso a memória para dados do protocolo de interconexão.
[000178] Em, pelo menos, um exemplo, cada cabeçalho de sincronização identifica um tipo de um bloco de dados para seguir o cabeçalho de sincronização.
[000179] Em, pelo menos, um exemplo, cada bloco de dados tem um comprimento predefinido.
[000180] Em, pelo menos, um exemplo, o protocolo de acesso a memória compreende um protocolo baseado em SMI3.
[000181] Em, pelo menos, um exemplo, o protocolo de interconexão compreende um protocolo baseado em PCIe.
[000182] Em, pelo menos, um exemplo, cada cabeçalho de sincronização é codificado de acordo com a codificação 128b/130b.
[000183] Em, pelo menos, um exemplo, o segundo cabeçalho de sincronização indica um bloco de dados do protocolo de interconexão, e um terceiro cabeçalho de sincronização será enviado nos corredores da ligação de dados para a indicação de um bloco de conjunto ordenado do protocolo de interconexão.
[000184] Em, pelo menos, um exemplo, o primeiro cabeçalho de sincronização é codificado com valores alternativos nos corredores, e o segundo cabeçalho de sincronização é codificado com um mesmo valor em todos os corredores.
[000185] Em, pelo menos, um exemplo, os dados do protocolo de acesso a memória compreendem dados de camadas de ligação, e os dados do protocolo de interconexão compreendem um dos pacotes de camadas de ligação de dados e camadas de transação.
[000186] Em, pelo menos, um exemplo, os cabeçalhos de sincronização são definidos de acordo com o protocolo de interconexão.
[000187] Em, pelo menos, um exemplo, o protocolo de acesso a memória suporta mensagens de acesso a memória de carregamen- to/armazenamento.
[000188] Em, pelo menos, um exemplo os dados de protocolo de acesso a memória compreendem mensagens de acesso a memória para o acesso a um recurso de memória partilhada, em que cada um de uma pluralidade de nós independentes tem permissão para acessar uma porção respectiva do recurso de memória partilhada.
[000189] Em, pelo menos, um exemplo, cada um da pluralidade de nós independentes tem um domínio de falha independente.
[000190] Em, pelo menos, um exemplo, a ligação de dados compreende, pelo menos, quatro corredores.
[000191] 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 primeiro cabeçalho de sincronização nos corredores de uma ligação de dados, em que o primeiro cabeçalho de sincronização é codificado com uma primeira codificação, a identificação, desde a primeira codificação do primeiro cabeçalho de sincronização, de uma transição dos dados de um protocolo de interconexão para dados de um protocolo de acesso a memória, a recepção de um segundo cabeçalho de sincronização nos corredores da ligação de dados, em que o segundo cabeçalho de sincronização é codificado com uma segunda codificação, e a identificação, desde a segunda codificação do segundo cabeçalho de sincronização, de uma transição dos dados do protocolo de acesso a memória para dados do protocolo de interconexão.
[000192] Em, pelo menos, um exemplo, cada cabeçalho de sincronização identifica um tipo de um bloco de dados para seguir o cabeçalho de sincronização.
[000193] Em, pelo menos, um exemplo, o protocolo de interconexão compreende um protocolo baseado em PCIe.
[000194] Em, pelo menos, um exemplo, o protocolo de acesso a memória se baseia em SMI3.
[000195] Em, pelo menos, um exemplo, o cabeçalho de sincronização é codificado de acordo com a codificação 128b/130b.
[000196] Em, pelo menos, um exemplo, a primeira codificação compreende valores de 01b e 10b alternados nos corredores da ligação de dados.
[000197] Em, pelo menos, um exemplo, os dados do protocolo de acesso a memória compreendem mensagens de acesso a memória de carregamento/armazenamento.
[000198] Em, pelo menos, um exemplo, as mensagens de acesso a memória compreendem mensagens para o acesso a um recurso de memória partilhada, e cada um de uma pluralidade de nós independentes em um sistema tem permissão para acessar uma porção respectiva do recurso de memória partilhada.
[000199] 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 primeiro cabeçalho de sincronização nos corredores de uma ligação de dados, em que o primeiro cabeçalho de sincronização é codificado com uma primeira codificação, a identificação, desde a primeira codificação do primeiro cabeçalho de sincronização, de uma transição dos dados de um protocolo de interconexão para dados de um protocolo de acesso a memória, o processamento dos dados do protocolo de acesso a memória, a recepção de um segundo cabeçalho de sincronização nos corredores da ligação de dados, em que o segundo cabeçalho de sincronização é codificado com uma segunda codificação, e a identificação, desde a segunda codificação do segundo cabeçalho de sincronização, de uma transição dos dados do protocolo de acesso a memória para dados do protocolo de interconexão.
[000200] Em, pelo menos, um exemplo, o protocolo de interconexão compreende um protocolo baseado em PCIe o protocolo de acesso a memória se baseia em SMI3.
[000201] Em, pelo menos, um exemplo, os cabeçalhos de sincronização se encontram em conformidade com PCIe.
[000202] Em, pelo menos, um exemplo, os dados do protocolo de acesso a memória são processados para servir um pedido de acesso a memória incluído nos dados do protocolo de acesso a memória.
[000203] Em, pelo menos, um exemplo, o pedido de acesso a memória é um pedido de um recurso de memória de acesso partilhado entre uma pluralidade de nós CPU independentes.
[000204] Em, pelo menos, um exemplo, o pedido de acesso a memória compreende uma mensagem de carregamento/armazenamento.
[000205] 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 o envio de um primeiro início de token de enquadramento de dados nos corredores de uma ligação de dados, em que o primeiro início de token de enquadramento de dados é codificado para a identificação de uma transição de dados de um protocolo de interconexão para dados de um protocolo de acesso a memória, e o envio de um segundo início de token de enquadramento de dados nos corredores da ligação de dados, em que o segundo início de token de enquadramento de dados será codificado para a identificação de uma transição dos dados do protocolo de acesso a memória para dados do protocolo de inter- conexão.
[000206] Em, pelo menos, um exemplo, o primeiro início de token de enquadramento de dados compreende um token de enquadramento STP PCIe modificado e o segundo início de token de enquadramento de dados compreende um token de enquadramento STP PCIe.
[000207] Em, pelo menos, um exemplo, cada início de token de en-quadramento de dados inclui um campo de comprimento.
[000208] Em, pelo menos, um exemplo, a transição dos dados do protocolo de interconexão para dados do protocolo de acesso a memória é indicada no primeiro início de token de enquadramento de dados por um valor no campo de comprimento do primeiro início de token de enquadramento de dados.
[000209] Em, pelo menos, um exemplo, os dados do protocolo de acesso a memória serão enviados em uma janela definida pelo comprimento do primeiro início de token de enquadramento de dados.
[000210] Em, pelo menos, um exemplo, o protocolo de acesso a memória se baseia em SMI3.
[000211] Em, pelo menos, um exemplo, o protocolo de interconexão compreende um protocolo baseado em PCIe.
[000212] Em, pelo menos, um exemplo, os dados do protocolo de acesso a memória compreendem dados de camadas de ligação e os dados do protocolo de interconexão compreendem um dos pacotes de camadas de ligação de dados e camadas de transação.
[000213] Em, pelo menos, um exemplo, a lógica em camadas físicas enviará ainda os dados do protocolo de acesso a memória e os dados do protocolo de acesso a memória compreendem mensagens de acesso a memória de carregamento/armazenamento.
[000214] Em, pelo menos, um exemplo, os dados de protocolo de acesso a memória compreendem mensagens de acesso a memória para o acesso a um recurso de memória partilhada, e cada um de uma pluralidade de nós independentes tem permissão para acessar uma porção respectiva do recurso de memória partilhada.
[000215] Em, pelo menos, um exemplo, cada um da pluralidade de nós tem um domínio de falha independente.
[000216] Em, pelo menos, um exemplo, a ligação de dados compreende um ou mais corredores.
[000217] 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 primeiro início de token de enquadramento de dados nos corredores de uma ligação de dados, a identificação, desde o primeiro início de token de enquadramento de dados, da chegada de dados de um protocolo de acesso a memória, a recepção de um segundo início de token de enquadramento de dados nos corredores da ligação de dados, em que o segundo início de token de enquadramento de dados é diferente do primeiro início de token de enquadramento de dados, e a identificação, desde o segundo início de token de enquadramento de dados, da chegada de dados de um protocolo de in- terconexão.
[000218] Em, pelo menos, um exemplo, o primeiro início de token de enquadramento de dados compreende um token de enquadramento STP PCIe modificado e o segundo início de token de enquadramento de dados compreende um token de enquadramento STP PCIe.
[000219] Em, pelo menos, um exemplo, cada início de token de en-quadramento de dados inclui um campo de comprimento.
[000220] Em, pelo menos, um exemplo, a transição dos dados do protocolo de interconexão para dados do protocolo de acesso a memória é indicada no primeiro início de token de enquadramento de dados por um valor no campo de comprimento do primeiro início de token de enquadramento de dados.
[000221] Em, pelo menos, um exemplo, o protocolo de acesso a memória se baseia em SMI3 e o protocolo de interconexão compreende um protocolo baseado em PCIe.
[000222] Em, pelo menos, um exemplo, são recebidos os dados do protocolo de acesso a memória e são recebidos os dados do protocolo de interconexão.
[000223] 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 o envio de um primeiro final de token de enquadramento do fluxo de dados nos corredores de uma ligação de dados, em que o primeiro final de token de enquadramento do fluxo de dados é codificado para a identificação de uma transição de um protocolo de interconexão para um protocolo de acesso a memória, o envio de dados de protocolo de acesso a memória após a transição para o protocolo de acesso a memória, e o envio de dados de controle de camadas de ligação do protocolo de acesso a memória para a identificação de uma transição do protocolo de acesso a memória para o protocolo de interconexão.
[000224] Em, pelo menos, um exemplo, os dados de protocolo de acesso a memória serão enviados na ligação de dados até serem enviados os dados de controle de camadas de ligação.
[000225] Em, pelo menos, um exemplo, a transição para o protocolo de acesso a memória causa uma transição da lógica de protocolo de interconexão manejando os dados na ligação de dados para a lógica de protocolo de acesso a memória manejando dados na ligação de dados.
[000226] Em, pelo menos, um exemplo, o protocolo de acesso a memória compreende um protocolo baseado em SMI3.
[000227] Em, pelo menos, um exemplo, o protocolo de interconexão compreende um protocolo baseado em PCIe.
[000228] Em, pelo menos, um exemplo, o primeiro final de token de enquadramento do fluxo de dados compreende um token de enquadramento EDS PCIe modificado.
[000229] Em, pelo menos, um exemplo, é enviado um EDS PCIe para a indicação de um final de um conjunto de pacotes de camadas de transação PCIe e de uma chegada de um bloco de conjunto ordenado PCIe.
[000230] Em, pelo menos, um exemplo, os dados do protocolo de acesso a memória compreendem dados de camadas de ligação e os dados do protocolo de interconexão compreendem um dos pacotes de camadas de ligação de dados e camadas de transação.
[000231] Em, pelo menos, um exemplo, os dados do protocolo de acesso a memória são enviados e compreendem mensagens de acesso a memória de carregamento/armazenamento.
[000232] Em, pelo menos, um exemplo os dados de protocolo de acesso a memória compreendem mensagens de acesso a memória para o acesso a um recurso de memória partilhada, e cada um de uma pluralidade de nós independentes tem permissão para acessar uma porção respectiva do recurso de memória partilhada.
[000233] Em, pelo menos, um exemplo, cada um da pluralidade de nós independentes tem um domínio de falha independente.
[000234] 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 primeiro final de token de enquadramento do fluxo de dados nos corredores de uma ligação de dados que é codificada para a identificação de uma transição de um protocolo de inter- conexão para um protocolo de acesso a memória, a transição para o uso da lógica em camadas de ligação do protocolo de acesso a memória com base no primeiro final de token de enquadramento do fluxo de dados, a recepção dos dados de camadas de ligação do protocolo de acesso a memória, a recepção de dados de controle de camadas de ligação do protocolo de acesso a memória para a identificação de uma transição do protocolo de acesso a memória para o protocolo de inter- conexão, e a transição para o uso da lógica em camadas de ligação do protocolo de interconexão com base nos dados de controle de camadas de ligação.
[000235] Em, pelo menos, um exemplo, o protocolo de acesso a memória se baseia em SMI3.
[000236] Em, pelo menos, um exemplo, o protocolo de interconexão compreende um protocolo baseado em PCIe.
[000237] Em, pelo menos, um exemplo, o primeiro final de token de enquadramento do fluxo de dados compreende um token de enquadramento EDS PCIe modificado.
[000238] Em, pelo menos, um exemplo, os dados do protocolo de acesso a memória compreendem dados de camadas de ligação e os dados do protocolo de interconexão compreendem um dos pacotes de camadas de ligação de dados e camadas de transação.
[000239] Em, pelo menos, um exemplo, os dados do protocolo de acesso a memória compreendem mensagens de acesso a memória de carregamento/armazenamento.
[000240] 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.
[000241] 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 (25)

1. Aparelho para suportar acesso a memória de computador, o aparelho compreendendo: um controlador de memória partilhada (515, 515a, 515b) para: operações de serviços de carregamento e armazenamento recebidas, por ligações de dados, a partir de uma pluralidade de nós independentes (510a a 510n, 510a a 510e) para proporcionar acesso a um recurso de memória partilhada (505, 505a, 505b), em que cada um da pluralidade de nós independentes (510a a 510n, 510a a 510e) terá permissão para acessar uma respectiva porção do recurso de memória partilhado (505, 505a, 505b); e lógica de E/S para: identificar transições entre dados de protocolo de interconexão e dados de protocolo de acesso a memória enviados nas ligações de dados, em que o protocolo de interconexão é um protocolo PCIe, caracterizado pelo fato de que transições a partir de dados de protocolo de inteconexão para dados de protocolo de acesso a memória são identificads por um token de enquadramento de fluxo de dados do protocoo PCIe codificado para identificar as transições.
2. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que o token de enquadramento de fluxo de dados do protocolo PCIe codificado para indicar quais dados de protocolo de acesso de memória devem ser seguidos.
3. Aparelho, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que as operações de carregamento e armazenamento são comunicadas usando um protocolo de ligação de memória partilhada.
4. Aparelho, de acordo com a reivindicação 3, caracterizado pelo fato de que o protocolo de ligação de memória partilhada é colocado em túnel por uma pilha de protocolos em rede.
5. Aparelho, de acordo com a reivindicação 3 ou 4, caracterizado pelo fato de que o protocolo de ligação de memória partilhada inclui um protocolo de acesso a memória utilizando lógica de camada física de um protocolo de interconexão diferente e proporciona multiplexação entre a transmissão de dados dos dados do protocolo de acesso a memória e a transmissão de dados do protocolo PCIe.
6. Aparelho, de acordo com a reivindicação 5, caracterizado pelo fato de que os dados do protocolo PCIe compreendem pelo menos um dentre dados de camada de ligação ou dados de camada de transação.
7. Aparelho, de acordo com qualquer uma das reivindicações 1 a 6, caracterizado pelo fato de que as transições entre os dados de protocolo PCIe e os dados de protocolo de acesso a memória são identificadas por um início de token de enquadramento de dados do protocolo PCIe codificado para identificar as transições.
8. Aparelho, de acordo com qualquer uma das reivindicações 1 a 7, caracterizado pelo fato de que as transições dos dados de protocolo PCIe para dados de protocolo de acesso a memória são identificadas por um final de token de enquadramento de fluxo de dados do protocolo PCIe codificado para identificar as transições, e as transições dos dados de protocolo de acesso a memória para dados de protocolo PCIe são identificadas por voltas de controle de camadas de ligação do protocolo de acesso a memória.
9. Aparelho, de acordo com qualquer uma das reivindicações 1 a 8, caracterizado pelo fato de que o controlador de memória partilhada (515, 515a, 515b) é ainda para rastrear transações de memória envolvendo as operações de carregamento e armazenamento.
10. Aparelho, de acordo com qualquer uma das reivindicações 1 a 9, caracterizado pelo fato de que o controlador de memória partilhada (515, 515a, 515b) é ainda para: identificar a ocorrência de falha em um específico da pluralidade de nós (510a a 510n, 510a a 510e); identificar uma porção das transações de memória do nó específico; e ignorar a porção das transações de memória do nó específico mantendo, ao mesmo tempo, todas as outras transações de memória.
11. Aparelho, de acordo com qualquer uma das reivindicações 1 a 10, caracterizado pelo fato de que o controlador de memória partilhada (515, 515a, 515b) é ainda para gerenciar permissões de acesso pela pluralidade de nós (510a a 510n, 510a a 510e) para dados no recurso de memória partilhada (505, 505a, 505b).
12. Aparelho, de acordo com qualquer uma das reivindicações 1 a 11, carcaterizado pelo fato de que o controlador de memória partilhada (515, 515a, 515b) é ainda para gerenciar informações de diretório para dados no recurso de memória partilhada (505, 505a, 505b) e as informações de diretório identificam para cada um de uma pluralidade de recursos de dados armazenados no recurso de memória partilhada (505, 505a, 505b), se o acesso ao respectivo recurso de dados é exclusivo para um da pluralidade de nós (510a a 510n, 510a a 510e) ou partilhado entre dois ou mais da pluralidade de nós (510a a 510n, 510a a 510e).
13. Aparelho, de acordo com qualquer uma dasreivindicações 1 a 12, caracterizado pelo fato de que o controlador de memória partilhada (515, 515a, 515b) é ainda para negociar uma alteração de acesso para um específico da pluralidade de recursos de dados, em que a alteração compreende pelo menos um dentre trocar acesso de partilhado para exclusivo e trocar acesso de exclusivo para partilhado.
14. Aparelho, de acordo com qualquer uma das reivinidcações 1 a 13, caracterizado pelo fato de que o controlador de memória partilhada (515, 515a, 515b) é acoplado em pelo menos um outro controlador de memória partilhada (515, 515a, 515b) gerenciando pelo menos um outro recurso de memória partilhada (505, 505a, 505b) e o controlador de memória partilhada (515, 515a, 515b) é ainda para comunicar operações de carregamento/armazenamento ao outro controlador de memória partilhada (515, 515a, 515b) para permitir que a pluralidade de nós (510a a 510n, 510a a 510e) acesse a outra memória partilhada.
15. Aparelho, de acordo com qualquer uma das reivindicações 1 a 14, caracterizado pelo fato de que o controlador de memória partilhada (515, 515a, 515b) é ainda para mapear informações de endereço nas operações de carregamento e armazenamento para recursos de dados correspondentes armazenados no recurso de memória partilhada (505, 505a, 505b).
16. Aparelho para suportar acesso a memória de computador, o aparelho caracterizado pelo fato de que compreende: lógica de E/S para: enviar um pedido de acesso a memória a um controlador de memória partilhada (515, 515a, 515b), em que o pedido de acesso a memória compreende uma operação de carregamento/armazenamento e identificará um endereço de um recurso de dados a ser incluído em um recurso de memória partilhada (505, 505a, 505b) correspondendo ao controlador de memória partilhada (515, 515a, 515b), e cada um de uma pluralidade de nós independentes (510a a 510n, 510a a 510e) terá permissão para acessar uma respectiva porção do recurso de memória partilhada (505, 505a, 505b), em que o pedido de acesso a memória é enviado usando um protocolo de ligação de memória partilhada, o protocolo de ligação de memória partilhada inclui um protocolo de acesso a memória utilizando lógica em camadas físicas de um protocolo de interconexão diferente, e o protocolo de ligação de memória partilhada permite a multiplexação entre a transmissão de dados dos dados de protocolo de acesso a memória e a transmissão de dados do protocolo de interconexão.
17. Aparelho, de acordo com a reivindicação 16, caracterizado pelo fato de que o pedido de acesso a memória compreende um pedido de carregamento, e a lógica de E/S receberá ainda dados correspondendo ao recurso de dados em resposta ao pedido de carregamento.
18. Aparelho, de acordo com a reivindicação 16, caracterizado pelo fato de que o pedido de acesso a memória compreende um pedido de armazenamento.
19. Aparelho, de acordo com a reivindicação 18, caracterizado pelo fato de que as transições entre dados de protocolo de interconexão e dados de protocolo de acesso a memória são identificados por, pelo menos, um entre: (a) um cabeçalho de sincronização codificado para a identificação das transições; (b) um início de token de enquadramento de dados codificado para a identificação das transições; e (c) um final de token de enquadramento do fluxo de dados codificado para a identificação das transições.
20. Método para suportar acesso a memória de computador, o método caracterizado pelo fato de que compreende: receber uma primeira mensagem de carregamento/armazenamento desde um primeiro nó de processamento independente, em que a primeira mensagem de carregamento/armazenamento identifica dados específicos em uma memória partilhada; fornecer acesso aos dados específicos ao primeiro nó de processamento em resposta à primeira mensagem de armazenamento/carregamento; receber uma segunda mensagem de carregamento/armazenamento desde um segundo nó de processamento independente, em que a segunda mensagem de carregamento/armazenamento identifica dados específicos em uma memória partilhada; e fornecer acesso aos dados específicos à segunda memória de processamento em resposta à segunda mensagem de armazenamento/carregamento.
21. Sistema, caracterizado pelo fato de que compreende: meios para a recepção de uma primeira mensagem de carregamento/armazenamento desde um primeiro nó de processamento independente, em que a primeira mensagem de carregamento/armazenamento identifica os primeiros dados em uma memória partilhada; meios para o fornecimento de acesso aos primeiros dados ao primeiro nó de processamento em resposta à primeira mensagem de carregamento/armazenamento; meios para a recepção de uma segunda mensagem de carregamento/armazenamento desde um segundo nó de processamento independente, em que a segunda mensagem de carregamento/ armazenamento identifica os primeiros dados específicos em uma memória partilhada; e meios para o fornecimento de acesso aos primeiros dados à segunda memória de processamento em resposta à segunda mensagem de carregamento/armazenamento.
22. Sistema para suportar acesso a memória de computador, o sistema caracterizado pelo fato de que compreende: um primeiro nó compreendendo um ou mais dispositivos de processador; um segundo nó, independente do primeiro nó, em que o segundo nó compreende um ou mais dispositivos de processador; e uma memória partilhada, em que a memória partilhada é acessível a cada um entre o primeiro e o segundo nós por um protocolo de acesso a memória de carregamento/armazenamento, em que o protocolo de acessoamemória de carregamento/armazenamento é incluído em um protocolo de ligação de memória partilhada e o protocolo de ligação de memória partilhada alternando entre o protocolo de acesso a memória e um protocolo de interconexão diferente.
23. Sistema, de acordo com a reivindicação 22, caracterizado pelo fato de que o primeiro nó tem um domínio de falha independente do segundo nó.
24. Sistema, de acordo com a reivindicação 22, caracterizado pelo fato de que o primeiro nó é controlado por um primeiro sistema operacional e o segundo nó é controlado por um segundo sistema operacional.
25. Sistema, de acordo com a reivindicação 22, caracterizado pelo fato de que compreende ainda um controlador de memória partilhada (515, 515a, 515b) para servir operações de carregamento e armazenamento desde o primeiro e o segundo nós, e fornecer acesso a memória partilhada.
BR112016011691-7A 2013-12-26 2013-12-26 Aparelho, método e sistema para suportar acesso a memória de computador. BR112016011691B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/077785 WO2015099730A1 (en) 2013-12-26 2013-12-26 Sharing memory and i/o services between nodes

Publications (2)

Publication Number Publication Date
BR112016011691A2 BR112016011691A2 (pt) 2017-08-08
BR112016011691B1 true BR112016011691B1 (pt) 2022-02-22

Family

ID=53479394

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016011691-7A BR112016011691B1 (pt) 2013-12-26 2013-12-26 Aparelho, método e sistema para suportar acesso a memória de computador.

Country Status (8)

Country Link
US (4) US10915468B2 (pt)
EP (1) EP3087493B1 (pt)
JP (1) JP6311174B2 (pt)
KR (1) KR101895763B1 (pt)
CN (1) CN105793830B (pt)
BR (1) BR112016011691B1 (pt)
DE (1) DE112013007724B4 (pt)
WO (1) WO2015099730A1 (pt)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015099730A1 (en) 2013-12-26 2015-07-02 Intel Corporation Sharing memory and i/o services between nodes
CN107077438B (zh) * 2014-10-29 2022-09-16 惠普发展公司有限责任合伙企业 通过通信介质的部分进行通信
CN104360982B (zh) * 2014-11-21 2017-11-10 浪潮(北京)电子信息产业有限公司 一种基于可重构芯片技术的主机***目录结构实现方法和***
US9817787B2 (en) * 2015-03-26 2017-11-14 Intel Corporation Method, apparatus and system for encapsulating information in a communication
US9940287B2 (en) * 2015-03-27 2018-04-10 Intel Corporation Pooled memory address translation
JP6503945B2 (ja) * 2015-07-13 2019-04-24 富士通株式会社 情報処理装置、並列計算機システム、ファイルサーバ通信プログラム及びファイルサーバ通信方法
US10390114B2 (en) * 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center
US10277677B2 (en) * 2016-09-12 2019-04-30 Intel Corporation Mechanism for disaggregated storage class memory over fabric
US10394604B2 (en) * 2017-03-15 2019-08-27 Samsung Electronics Co., Ltd. Method for using local BMC to allocate shared GPU resources inside NVMe over fabrics system
CN108733311B (zh) * 2017-04-17 2021-09-10 伊姆西Ip控股有限责任公司 用于管理存储***的方法和设备
CN113468096A (zh) * 2017-06-26 2021-10-01 上海寒武纪信息科技有限公司 数据共享***及其数据共享方法
CN110413551B (zh) 2018-04-28 2021-12-10 上海寒武纪信息科技有限公司 信息处理装置、方法及设备
WO2019001418A1 (zh) 2017-06-26 2019-01-03 上海寒武纪信息科技有限公司 数据共享***及其数据共享方法
CN109214616B (zh) 2017-06-29 2023-04-07 上海寒武纪信息科技有限公司 一种信息处理装置、***和方法
CN109426553A (zh) 2017-08-21 2019-03-05 上海寒武纪信息科技有限公司 任务切分装置及方法、任务处理装置及方法、多核处理器
US10582636B2 (en) * 2017-08-07 2020-03-03 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Server having a dual-mode serial bus port enabling selective access to a baseboard management controller
US11263143B2 (en) * 2017-09-29 2022-03-01 Intel Corporation Coherent accelerator fabric controller
CN107886692B (zh) * 2017-10-30 2020-08-25 皖西学院 一种生物工程用传感器LoRa无线网络通讯***
CN107797945A (zh) * 2017-10-31 2018-03-13 郑州云海信息技术有限公司 一种存储***及其数据存储方法、装置、***及设备
US10866753B2 (en) 2018-04-03 2020-12-15 Xilinx, Inc. Data processing engine arrangement in a device
US10606790B2 (en) 2018-04-16 2020-03-31 Intel Corporation Precoding mechanism in PCI-express
KR101912872B1 (ko) * 2018-06-04 2018-10-30 주식회사 위더스플래닛 고밀집 네트워크 환경을 위한 WiFi 네트워크 시스템
EP3798812A4 (en) 2018-06-27 2021-06-30 Huawei Technologies Co., Ltd. STORAGE SYSTEM AND METHOD FOR CHANGING THE MODE OF OPERATION OF THE STORAGE SYSTEM
CN109002352B (zh) * 2018-07-04 2019-12-03 北京捷旅易行科技有限公司 流量控制器***
US11477049B2 (en) * 2018-08-02 2022-10-18 Xilinx, Inc. Logical transport over a fixed PCIE physical transport network
CN109309711B (zh) * 2018-08-30 2020-06-16 中国科学院声学研究所 一种虚拟缓存共享方法和***
US11157437B2 (en) * 2018-09-26 2021-10-26 Micron Technology, Inc. Memory pooling between selected memory resources via a base station
US10771189B2 (en) * 2018-12-18 2020-09-08 Intel Corporation Forward error correction mechanism for data transmission across multi-lane links
JP6579255B1 (ja) * 2018-12-28 2019-09-25 富士通クライアントコンピューティング株式会社 情報処理システム、および中継装置
CN113168389B (zh) * 2018-12-28 2023-03-31 华为技术有限公司 用于锁定具有非透明桥接的PCIe网络的装置和方法
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
US10817462B1 (en) 2019-04-26 2020-10-27 Xilinx, Inc. Machine learning model updates to ML accelerators
US11296994B2 (en) 2019-05-13 2022-04-05 Intel Corporation Ordered sets for high-speed interconnects
US11074208B1 (en) 2019-07-24 2021-07-27 Xilinx, Inc. Routing network using global address map with adaptive main memory expansion for a plurality of home agents
US11474871B1 (en) 2019-09-25 2022-10-18 Xilinx, Inc. Cache coherent acceleration function virtualization
US11740958B2 (en) 2019-11-27 2023-08-29 Intel Corporation Multi-protocol support on common physical layer
US11914903B2 (en) 2020-10-12 2024-02-27 Samsung Electronics Co., Ltd. Systems, methods, and devices for accelerators with virtualization and tiered memory
CN112395220B (zh) * 2020-11-18 2023-02-28 海光信息技术股份有限公司 共享存储控制器的处理方法、装置、***及存储控制器

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3137970B2 (ja) * 1990-07-26 2001-02-26 富士通株式会社 共用記憶制御システム
JPH1078941A (ja) * 1996-09-04 1998-03-24 Fujitsu Ltd 並列計算機
US6332165B1 (en) * 1997-09-05 2001-12-18 Sun Microsystems, Inc. Multiprocessor computer system employing a mechanism for routing communication traffic through a cluster node having a slice of memory directed for pass through transactions
US6226771B1 (en) * 1998-12-14 2001-05-01 Cisco Technology, Inc. Method and apparatus for generating error detection data for encapsulated frames
JP3959914B2 (ja) 1999-12-24 2007-08-15 株式会社日立製作所 主記憶共有型並列計算機及びそれに用いるノード制御装置
US7058750B1 (en) * 2000-05-10 2006-06-06 Intel Corporation Scalable distributed memory and I/O multiprocessor system
US6738868B2 (en) * 2000-06-10 2004-05-18 Hewlett-Packard Development Company, L.P. System for minimizing directory information in scalable multiprocessor systems with logically independent input/output nodes
US6944719B2 (en) 2002-05-15 2005-09-13 Broadcom Corp. Scalable cache coherent distributed shared memory processing system
US7873700B2 (en) * 2002-08-09 2011-01-18 Netapp, Inc. Multi-protocol storage appliance that provides integrated support for file and block access protocols
GB2400265A (en) * 2003-03-31 2004-10-06 Sony Uk Ltd Routing data
US20060190552A1 (en) * 2005-02-24 2006-08-24 Henze Richard H Data retention system with a plurality of access protocols
US7653682B2 (en) * 2005-07-22 2010-01-26 Netapp, Inc. Client failure fencing mechanism for fencing network file system data in a host-cluster environment
US7782873B2 (en) * 2005-08-23 2010-08-24 Slt Logic, Llc Omni-protocol engine for reconfigurable bit-stream processing in high-speed networks
US20070220059A1 (en) * 2006-03-20 2007-09-20 Manyi Lu Data processing node
JP2008020977A (ja) 2006-07-11 2008-01-31 Sony Computer Entertainment Inc ネットワークプロセッサシステムおよびネットワークプロトコル処理方法
US7715433B2 (en) * 2006-07-14 2010-05-11 Boren Gary W Universal controller and signal monitor
JP2008046969A (ja) 2006-08-18 2008-02-28 Fujitsu Ltd 共有メモリのアクセス監視方法及び装置
GB2442984B (en) * 2006-10-17 2011-04-06 Advanced Risc Mach Ltd Handling of write access requests to shared memory in a data processing apparatus
US7941613B2 (en) * 2007-05-31 2011-05-10 Broadcom Corporation Shared memory architecture
US8438578B2 (en) * 2008-06-09 2013-05-07 International Business Machines Corporation Network on chip with an I/O accelerator
US8108631B2 (en) 2008-07-18 2012-01-31 Oracle America, Inc. Transactional memory support for non-coherent shared memory systems using selective write through caches
JP5138525B2 (ja) 2008-09-26 2013-02-06 富士フイルム株式会社 像振れ補正装置及び像振れ補正方法
US8751714B2 (en) 2010-09-24 2014-06-10 Intel Corporation Implementing quickpath interconnect protocol over a PCIe interface
US8405529B2 (en) 2011-03-11 2013-03-26 Taiwan Semiconductor Manufacturing Company, Ltd. Using bus inversion to reduce simultaneous signal switching
US9208110B2 (en) * 2011-11-29 2015-12-08 Intel Corporation Raw memory transaction support
WO2013085501A1 (en) * 2011-12-07 2013-06-13 Intel Corporation Multiple transaction data flow control unit for high-speed interconnect
US8856420B2 (en) * 2011-12-27 2014-10-07 Intel Corporation Multi-protocol I/O interconnect flow control
US8825910B2 (en) 2012-04-06 2014-09-02 International Business Machines Corporation Pass-through converged network adaptor (CNA) using existing ethernet switching device
WO2014005261A1 (zh) * 2012-07-02 2014-01-09 杭州华为数字技术有限公司 存储扩展装置及服务器
WO2014075255A1 (zh) 2012-11-15 2014-05-22 华为技术有限公司 一种基于PCIE Switch通信的方法、装置及***
WO2015099730A1 (en) 2013-12-26 2015-07-02 Intel Corporation Sharing memory and i/o services between nodes
US9383932B2 (en) * 2013-12-27 2016-07-05 Intel Corporation Data coherency model and protocol at cluster level

Also Published As

Publication number Publication date
BR112016011691A2 (pt) 2017-08-08
US20220012189A1 (en) 2022-01-13
CN105793830B (zh) 2019-12-24
US20240160585A1 (en) 2024-05-16
US10915468B2 (en) 2021-02-09
EP3087493A1 (en) 2016-11-02
KR101895763B1 (ko) 2018-09-07
KR20160075730A (ko) 2016-06-29
US20170004098A1 (en) 2017-01-05
EP3087493B1 (en) 2020-09-02
DE112013007724B4 (de) 2024-01-11
US20210303482A1 (en) 2021-09-30
JP6311174B2 (ja) 2018-04-18
WO2015099730A1 (en) 2015-07-02
CN105793830A (zh) 2016-07-20
EP3087493A4 (en) 2017-08-23
JP2017504089A (ja) 2017-02-02
DE112013007724T5 (de) 2016-09-15

Similar Documents

Publication Publication Date Title
US20240160585A1 (en) Sharing memory and i/o services between nodes
TWI610174B (zh) 計算裝置及計算系統
US20200019522A1 (en) Integrated component interconnect
JP6225154B2 (ja) 共有メモリリンクの低電力エントリ
EP3879408B1 (en) Pooled memory address translation
JP6461959B2 (ja) マルチチップパッケージリンク
CN108701023B (zh) 用于带内重定时器寄存器访问的装置和***
JP2017504089A5 (pt)
BR112016012057B1 (pt) Progressos de retemporizador de interconexão
CN111797040A (zh) 多个协议层封装互连的虚拟链路状态
BR102020019366A2 (pt) Interface de malha de transmissão contínua
JP6745289B2 (ja) マルチチップパッケージリンク
JP2020201967A (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.