BRPI1003466A2 - Método, dispositivo e sistema de suporte de hardware para o compartilhamento de memória virtual entre memória física local e remota - Google Patents

Método, dispositivo e sistema de suporte de hardware para o compartilhamento de memória virtual entre memória física local e remota Download PDF

Info

Publication number
BRPI1003466A2
BRPI1003466A2 BRPI1003466-8A BRPI1003466A BRPI1003466A2 BR PI1003466 A2 BRPI1003466 A2 BR PI1003466A2 BR PI1003466 A BRPI1003466 A BR PI1003466A BR PI1003466 A2 BRPI1003466 A2 BR PI1003466A2
Authority
BR
Brazil
Prior art keywords
memory
accelerator
processor
remote
local
Prior art date
Application number
BRPI1003466-8A
Other languages
English (en)
Inventor
Gautham N Chinya
Hong Wang
Deepak A Mathaikutty
Jamison D Collins
Ethan Schuchman
James P Held
Ajay V Bhatt
Prashant Sethi
Stephen F Whalley
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of BRPI1003466A2 publication Critical patent/BRPI1003466A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

Método, dispositivo e sistema de suporte de hardware para o compartilhamento de memória virtual entre memória física local e remota. Em uma realização, a presente invenção inclui uma unidade de gerenciamento de memória (mmu) que possui entradas para armazenar endereços virtuais para conversões de endereços físicos, em que cada entrada inclui um indicador de local para indicar se um local de memória para a entrada correspondente está presente em uma memória local ou remota. Dessa maneira, um espaço de memória virtual comum pode ser compartilhado entre as duas memórias, que podem ser separadas por um ou mais links não coerentes. Outras realizações são descritas e reivindicadas

Description

MÉTODO, DISPOSITIVO E SISTEMA DE SUPORTE DE HARDWARE PARA O COMPARTILHAMENTO DE MEMÓRIA VIRTUAL ENTRE MEMÓRIA FÍSICA LOCAL E REMOTA
Estado cLa Técnica À medida que os sistemas baseados em processadores evoluem, a disponibilidade de. aceleradores progr amáveis conectados ao sistema por meio de uma interconexão periférica de alta velocidade como um Peripheral Component Interconnect Express (PCIe™ - componente periférico de interconexão expressa) em conformidade com links baseados na PCI Express™ Specification Base Specification (Especificação base da especificação PCI Express™) versão 2.0 (publicada em 17 de janeiro de 2007) (doravante Especificação PCIe™) ou outro protocolo similar, permite que os integradores de sistema incorporem maior poder computacional ao sistema, No entanto, existem desafios para se garantir que um aplicativo possa utilizar de forma transparente o cálculo adicional de potência sem fazer mudanças significativas no aplicativo, para dividir manualmente a carga computacional entre o processador principal (por exemplo, uma unidade de processamento central rnulti -núcleos CPU) e o (s) acelerador (es) e gerenciar o movimento de dados nas duas direções. Tradicionalmente, somente a memória principal do sistema, que é gerenciada pelo sistema Operacional (OS) , é alocada para uso pelos aplicativos. A memória física que é local para qualquer acelerador acoplado por meio de um periférico de interconexão é gerenciada separadamente. Em particular, a memória local do acelerador não é visível como parte da memória de sistema reconhecível pelo sistema operacional que estiver rodando no processador principal. Em vez disso, o software de driver de dispositivo é responsável por gerenciar explicitamente o movimento de dados entre a memória local e a memória remota. A memória fisica que é acessada pelo processador é gerenciada pelo sistema operacional, que virtualiza o acesso a essa memória fisica para criar uma ilusão de um grande espaço de endereço virtual contíguo. O sistema operacional usa o. suporte subjacente do processador para o gerenciamento de memória virtual, pois o processadof permite^ que.- o software- configure. umâ tabela de mapeamento para mapear páginas virtuais como páginas fisicas. O processador suporta a conversão de endereços de memória virtual, consultando a tabela de mapeamento cada vez que um acesso à memória precise ser feito. Freqüentemente as conversões podem ser acessadas na memória em cache .pelo processador para acelerar este processo. Essas tabelas de mapeamento, normalmente chamadas de tabelas de páginas, também contêm bits de atributo como bits de leitura/gravação e bits de privilégio de usuário/supervisor que controlam o acesso a uma determinada página virtual. Apesar de o sistema operacional gerenciar a memória fisica disponível na placa-mãe {memória do sistema), ele não gerencia ou aloca a memória local e a disponível em um acelerador. Dessa forma, as soluções atuais criam um modelo de memória compartilhada conforme visto pelo programador e dependem de mecanismos de proteção de memória contra falhas e movimentação de páginas, nos dois sentidos, entre memórias diferentes.
Breve Descrição das Figuras A FIG.l é um diagrama de blocos de um sistema de acordo com uma realização da presente invenção. A FIG.2 é um fluxograma de um método para a execução invertida de proxy de acordo com uma realização da presente invenção. A FIG.3 é um diagrama de blocos que ilustra a operação de execução invertida de proxy de acordo com uma realização da presente invenção. A FIG.4 é um fluxograma de um método para a execução de proxy de acordo com uma realização da presente invenção. A FIG.5 é um diagrama de blocos que ilustra a operação de execução do proxy de_acordo com uma realização da presente invenção. A FIG.6 é uma entrada de exemplo de uma tabela de página de acordo com uma realização da presente invenção. A FIG.7 é um diagrama de blocos de um processador de acordo com uma realização da presente invenção. A F1G. 8 é um diagrama de blocos de um sistema, incluindo aceleradores em chips, de acordo çom uma realização da presente invenção..
Descrição Detalhada cLa Invenção As realizações permitem que um processador (por exemplo, uma unidade central de processamento (CPU) em um soquete) para criar e gerenciar um espaço de endereçamento virtual totalmente compartilhado com os aceleradores que são interligados ao sistema através de uma interface, por exemplo, uma interface de Componente Periférico de T nierconexão Expressa {PC 1 e™) , acessando a memória que está presente no acelerador e endereçando a memória usando transações especiais de carga/armazenamento. A capacidade de endereçar diretamente a memória remota permite calcular a capacidade efetiva, conforme vista por um software aplicativo, para aumentar e permitir que os aplicativos compartilhem dados de maneira transparente, sem envolvimento explicito do programador na movimentação de dados para nos dois sentidos. Dessa forma, a memória pode ser endereçada sem ter que classificar novamente para proteção da memória e falha em acessar o endereço virtual para redirecionar o acesso à memória para ser concluída a partir de uma rotina de tratamento de falhas. O processamento multi-núcleo existente de memória çompartilhada pode ser ampliado para incluir os aceleradores que não estão no soquete, ,mas-, que- estão conectados através de um link periférico não coerente.
Ao contrário, sistemas típicos como sistemas baseados em cluster criam um modelo de memória compartilhada parcial, conforme visto pelo programador e dependem de mecanismos de proteção contra falhas de memória e movem páginas nos do.is sentidos, entre a CPU e os periféricos. Ainda, em sistemas baseados em cluster, cada nó executa uma cópia separada da pilha, do sistema operacional (SO), sobre a qual um aplicativo é executado e este comportamento do sistema é explicado aos programadores, como a única parte do espaço de endereçamento compartilhado e o programador aloca de uma área compartilhada ou especifica explicitamente que parte dos dados deve ser colocada no espaço de endereçamento compartilhado. O ambiente de execução difere de um ambiente de execução de memória totalmente compartilhada, que se assemelha a um sistema multi-núcleo de memória compartilhada única.
Ao contrário de diversas realizações, um processador no soquete pode endereçar memória remota que seja local para um acelerador, o que permite que o processador use endereços de memória remota de forma transparente, para acesso a dados compartilhados. Para isso, podem ser providas extensões de arquitetura, de modo a permitir que um sistema de gerenciamento de memória virtual seja aprimorado para que transações especiais de carga/armazenamento possam ser emitidas para atender dados remotos compartilhados e, ainda, para permitir que o sistema mova páginas de memória para locais mais próximos de onde eles são acessados com mais frequência, sem necessidade de intervenção explicita do programador. Ainda, as extensões de gerenciamento de memória permitem que o programador execute diretamente o código do aplicativo sem ter que indicar explicitamente quais partes do espaço de endereço precisam _ser compartilhadas ou que o programador gerencie uma área comum de dados.
Como tal, pode ser criado e gerenciado um espaço de endereçamento virtual compartilhado entre núcleos nos soquetes de CPU coerentes com cache e aceleradores (incluindo CPUs muiti-núcleos) e que estejam interconectadas ao sistema por meio de interconexão periférica pode ser criado e gerenciado. Dessa forma, CPUs e aceleradores dos dois lados da interconexão podem acessar uma página virtual compartilhada que pode estar localizada fisicamente na memória do sistema ou era uma memória local, de modo que o acelerador use uma interconexão, que pode ou não ser coerente com cache.
Dessa forma, a memória física local do acelerador pode se comportar como memória adicional de sistema para a CPU e, por sua vez, para o sistema operacional e aplicativos, mesmo sabendo que a memória local do acelerador está depois de uma interconexão e não é acessível diretamente pela CPU por meio de uma matriz coerente (como um barramento lateral frontal (FSB) ou uma interconexão de caminho rápido (QPI)).
As realizações podem ser implementadas em muitos tipos de sistemas diferentes. Agora, referindo à FIG.l, é mostrado um diagrama de blocos de um sistema de acordo com uma realização da presente invenção. Conforme mostrado na FIG. 1, o sistema 100 pode ser um sistema de computador de exemplo tendo uma plataforma 110 de computador pessoal hospedeiro (PC) que esteja acoplado a uma, placa aceleradora 150. por meio de uma i n ter conexa o 14 0 não coerente que pode ser um link PCIe™, por exemplo. Conforme visto, a plataforma hospedeira 1.10 pode incluir uma CPU 120 e uma memória de sistema 130 que, em algumas realizações, pode ser uma memória dinâmica de acesso aleatório (DRAM). Ainda que mostrado com somente esses ........component.es.- mínimos ■ para -. facilidade de Ilustração na. FIG..1, entende-se que uma dada plataforma pode incluir muitos: outros componentes típicos incluindo comutadores (hubs) de entrada e de salda, componentes de chípset, dispositivos periféricos, dispositivos de armazenamento em massa, dispositivos de entrada e de saída e outros.
Conforme visto na FIG. 1, a CPU 120 pode incluir uma unidade de gerenciamento de memória (MMU) 125. A MMU 125 pode ativar o mapeamento de endereços virtuais para endereços físicos e, em algumas implementações, pode incluir um. ou mais buffers de tabelas de conversão (TLBs). Conforme será melhor discutido mais. à frente, divers.as extensões de arquitetura à MMU, em conformidade com uma realização da presente invenção, podem permitir a criação e uso de memória virtual compartilhada entre memórias associadas com a plataforma 110 e a placa aceleradora 150.
Ainda em relação à FIG.l, a placa aceleradora 150 pode incluir um bloco de propriedade intelectual (IP) 160, que pode ser qualquer tipo de acelerador, como uma unidade de processamento gráfico, uma CPU ou qualquer outro dispositivo similar. Conforme visto, esse bloco IP pode, por si próprio, incluir uma MMU 165. Para permitir comunicações com a plataforma 110, pode haver uma ponte 155 para transformar as comunicações que ocorrem de acordo com um protocolo para interconexào 140 para um protocolo consistente com o usado em um sistema em uma matriz em um chip (SoC) 170 que, por sua vez, acopla o bloco IP 160 a uma memória local 180 que novamente, em algumas realizações, pode ser uma DRAM. Ainda que mostrado com esta. implementação em particular na realização da FIG.l, o escopo da presente invenção não está limitado a isso.
As realizações podem implementar a execução __ invertida de proxy (RPE) , que aumenta a capacidade de uma GPU para identificar acessos à memória de fora da placa (por exemplo, placa mãe) de memória do sistema. A seguir, os acessos a tais locais podem ser convertidos em uma classe de acessos que é direcionada por meio da matriz periférica para o acelerador. Por sua vez, o acelerador atende aos acessos a partir de sua memória física local. Usando RPE e execução proxy (em que uma CPU pode ajudar na conclusão de um acesso à memória mediante solicitação de um acelerador) em combinação, qualquer acelerador com urna MMU separada acoplada por meio de uma matriz (coerente ou não coerente) a uma CPU multi-soquete, pode montar um espaço de endereçamento virtual compartilhado para a memória física, incluindo a memória de sistema e a memória local do acelerador. Usando RPE e execução proxy, uma realização pode permitir que o mesmo programa baseado em memória virtual muitíencadeada compartilhada criado para o tradicional mui ti processamento simétrico (SMP) para distribuir encadeamentos por CPUs através de múltiplos soquetes de CPU ou através de múltiplas paradas em uma matriz de 1/0 periféricos.
Junto com os mecanismos de arquitetura, as realizações também incluem firmware e extensões de software de sistema que permitem o controle e a transferência de dados entre núcleos nos soquetes e no acelerador (ou CPUs) através de uma interconexão de periféricos para trabalhar de maneira transparente em diferentes niveis de abstrações, variando de totalmente indiferente ao sistema operacional até a totalmente dependente do sistema operacional, cada um com diferentes opções de otimização, Os dados podem ser compartilhados conforme a demanda, com base em padrões de acesso aos dados compartilhados do lado da CPU, bem como do lado do acelerador. Aceleradores que possam trabalhar com endereços —virtuais-e possuam suporte 'para conversão de endereços podem rodar, de maneira transparente, o mesmo código com referências aos dados e, se o código permanecer intacto, os mesmos endereços virtuais podem ser usados nas referências ao código ou dados quando o acelerador executar uma parte do programa aplicativo. A página física que contém o código ou dados pode estar localizada localmente no acelerador ou buscada na memória do sistema, A página virtual pode ser movida de um local remoto para um local próximo com base na frequência de acesso sem envolvimento explicito da pilha do software aplicativo, e o aplicativo também não precisa gerenciar a movimentação de dados para configurar .a computação no acelerador.
Frequentemente, o software de driver é associado à tarefa que, êxplicitamente, move os dados brutos usando transferências de acesso direto à memória (DMA) entre a memória principal do sistema à memória remota, que é a memória .local; do acelerador. Normalmente, no modelo tradicional de driver, um programa aplicativo rodando em uma CPU e um programa de driver gerenciando um acelerador, reside em dois espaços de endereçamento virtuais distintos. Consequentemente, é normal haver uma sobrecarga significativa nas comunicações de dados entre o aplicativo e o driver e na transferência de dados entre a memória do sistema e a memória local do acelerador. Ainda, essa transferência de dados é normalmente implementada por um código de aplicativo escrito pelo programador. Por exemplo, ura programador pode ser obrigado a usar um conjunto .interfaces de programação de. aplicativos (APIs) especifico- de um fornecedor para mover manualmente os dados da memória do sistema para a memória do acelerador. Em vez disso:, a criação de um espaço de endereçamento virtual compartilhado entre a CPU e os núcleos do acelerador, de acordo com uma realização da presente invenção, sem precisar de gerenciamento- -explicito -r.......de operações de DMA simplifica em muito o compartilhamento de dados, jã que todo o código do aplicativo e os dados podem ser colocados no espaço de endereçamento virtual compartilhado sem ter de mover explicitamente os dados, alterando o programa aplicativo, isto é, com a intervenção explicita do programador nas operações de DMA. Dessa forma, ainda que as transferências de dados possam ser feitas pelo DMA, elas não são controlados pelo programador. Em outras palavras, um processador pode acessar diretamente dados presentes em uma memória remota durante a execução de um aplicativo em nível de usuário, sem programação explicita pelo programador para configurar e gerenciar a matriz subjacente, para permitir o. acesso aos dados.
Para construir um espaço de endereçamento compartilhado entre a. CPU e o acelerador, uma unidade de gerenciamento de memória pode permitir acessos de carga e armazenamento ao espaço de endereçamento virtual compartilhado, a ser enviado para a memória remota com base no conteúdo de tabelas de páginas a. serem convertidas de endereços virtuais para físicos. O suporte de software de sistema pode permitir que um sistema, em tempo de execução, migre de maneira transparente e dinâmica, o local de uma página virtual, de modo que possa ser criado um espaço comum de endereçamento virtual compartilhado entre a CPU e o acelerador e o comportamento de local em tempo de execução do conjunto de trabalho do programa seja utilizado para localizar a página virtual remotamente, se os acessos forem pouco frequentes ou localmente para páginas acessadas com mais frequência.
Em diversas realizações pode haver diferentes mecanismos para ampliar o suporte de memória virtual. Uma implementação ~~pode~ não 'incluir qualquer alteração no sistema operacional, ao passo que outras implementações podem incluir mais informações às entradas da tabela de páginas. Esses mecanismos envolvem mecanismos similares de arquitetura para dar suporte à execução invertida de proxy, isto é, a capacidade de a CPU identificar e atender a esses acessos de endereços virtuais que não estejam mapeados na memória do sistema, mas sim no local de memória fisica remota dos aceleradores em uma matr.iz periférica.
Pa X.:S· .d.Qi-3* suporte à RPE, uma CPU pode identificar se um dado endereço virtual foi mapeado para a memória do sistema ou para uma memória remota através de uma matriz periférica. Se o endereço físico estiver mapeado para a memória do sistema, o acesso pode ser processado localmente com um acesso normal à memória, mas caso contrário a RPE pode ser identificada para processar o acesso. Em uma realização, a RPE pode ser implementada usando um fluxo dedicado de miçrocódigo. A RPE pode começar marcando o acesso (por exemplo, uma earga/armazenaraento (LD/ST)) com uma condição especial de falha que será processada por uma rotina de mícrocódigo. A rotina de microcódigo pode converter o acesso em transações READ/WRITE/DMA (LEITURA/GRAVAÇÃO/DMA) em toda a matriz periférica, apesar de que podem ser possíveis diversas variações. Por questão de simplicidade de descrição, assuma que a matriz periférica é uma interconexão PCIe™ e que cada acesso individual à memória remota física é convertido em um acesso sem cache e, por sua vez, em transações de dados PCXe™ para direcionar a solicitação/dados através da matriz PCIe**. A transação pode encapsular o endereço virtual original ou o endereço fisico. A sequência de CPU que executa o acesso, pode em algumas realizações impedir a conclusão pendente do acesso remoto (e pode mudar para outro encadeamento). Quando o acelerador recebe a transação PCIe“ notificando uma solicitação de acesso da CPU, o sequencíador.—da acelerador - — processa a solicitação como um evento especial de interrupção. O sequencíador extrai o endereço e o tipo dè acesso da solicitação. Se o endereço de acesso for um endereço virtual, o sequencíador pode executar a conversão localmente via uma MMU local para obter o endereço fisico. Usando o endereço físico, o sequencíador acelerador submete o armazenamento (se for uma transação de gravação) ou obtém dados para a carga (se for uma transação de leitura) . O sequencíador irá encapsular uma resposta (por exemplo, no caso de uma carga) em uma transação PCIem e retornar para a raiz do hospedeiro (isto é, a CPU) . O núcleo da CPU recebe a transação PCIe™ e o status do acesso concluído e retoma a operação sucessiva, que pode causar uma falha de acesso com base no status de acesso do acesso remoto. A FIG.2 mostrada é um diagrama de fluxos de um método para inverter a execução do proxy de acordo com uma realização da presente invenção. Conforme mostrado na FIG.2, o método 200 pode ser usado para acessar dados presentes na memória local de um acelerador, isto é, uma memória remota relacionada a uma CPU. Conforme visto na FIG. 2, o método 200 pode começar recebendo uma solicitação de acesso à memória (bloco 210) . Essa solicitação pode ser recebida em urna CPU hospedeira que, por sua vez, pode encaminhar a solicitação para uma MMU, por exemplo, um TLB para determinar se a entrada é para um endereço virtual presente no TLB (losango 220) . Se não, pode ser executada uma rotina de perda de página para obter e armazenar a entrada no TLB (bloco 225), Quando a entrada estiver presente no TLB, ela pode ser analisada para determinar um local do endereço fisico correspondente (bloco 230) . Por exemplo, conforme discutido mais à frente, cada entrada de TLB pode incluir informações para indicar se a página correspondente está presente no local (isto é, memória do sistema) ou memória remota., Se. o endereço fisico’ estiver presente na memória do sistema (losango 240), o controle passa para o bloco 245, onde uma solicitação de acesso à memória pode ser executada na memória do sistema, e consequentemente, os dados solicitados podem ser fornecidos como resposta ao solicitante (bloco 250).
Se, ao contrário, for determinado no losango 240 que o endereço fisico não está na memória do sistema, o controle passa para o bloco 260. No bloco 260, uma solicitação de execução invertida de proxy pode ser preparada para enviar a solicitação de acesso à memória para uma memória remota (por exemplo, uma memória local de um acelerador) tendo os dados. Em diversas implementações, essa solicitação pode ser direcionada para uma interconexão não coerente como, por exemplo, uma solicitação especializada de carga/armazenarnento. Após essa solicitação de execução invertida de proxy ser processada no acelerador, o controle passa para o bloco 270 em que o resultado da solicitação de execução invertida de proxy é recebida, isto é, os dados solicitados são recebidos, e pode ser provida uma resposta para o solicitante, discutidos acima no bloco 250. Ainda que mostrado com esta implementação em particular na realização da FIG.2, o escopo da presente invenção não está limitado a isso. A FIG.3 é um diagrama de blocos que ilustra as operações para inverter a execução do proxy de acordo com uma realização da presente invenção. Conforme mostrado na FIG.3, quando uma solicitação de acesso (1) a um endereço virtual {V.A)K da CPU 120 para a MMU 125 falha (por exemplo, a pesquisa indica que a página está presente na memória local da placa aceleradora), uma solicitação de execução invertida de proxy é preparada: e enviada (2) para a placa aceleradora 150. Por sua vez, o acelerador 160 processa a solicitação para enviar a solicitação de acesso, à memória .(3) - para - a MMU '165 que, por sua vez, acessa (4) a página solicitada na memória local 180 de modo que os dados solicitados possam ser enviados de volta para a CPU 120 (5) , Observe que os dados do acelerador podem ser enviados para a GPU hospedeira através da DMA ou pesquisando tudo no hospedeiro em sua implementação LD/ST ideal (por exemplo, em fluxo de microcódigo) , Em outras palavras, assim que a CPU envia um acesso para um local de memória remota, a CPU ativa o acesso à rotina de microcódigo para executar a LD/ST ideal, que irá aguardar uma interrupção DMA ou executar uma pesquisa ativa para obter os dados de "retorno" do acelerador, A conclusão do acesso à memória para o (V.A)X é executada de maneira que seja transparente para o programa aplicativo que acessou o local de memória ■identificado no endereço virtual X..
De. maneira geral, a operação RPE atua como uma- operação de acesso à memória de grande latêneia em. um sistema de arquitetura de memória não uniforme (NUMA). O mecanismo de direcionamento subjacente pode variar-, dependendo da natureza da matriz, No caso de matriz PC I e™, devido à assimetria entre a raiz (sistema) e filho (acelerador), em que o acelerador pode acessar uma ampla faixa de memória de sistema, mesmo sabendo que a CPU não possa normalmente acessar quaisquer das memórias locais de aceleradores, diversas otimizações do mecanismo de execução da RPE podem ser obtidos usando parte da memória de sistema ou da memória local do acelerador como memória privativa. Em uma realização, parte da memória do sistema pode ser reservada como cache para a memória local do acelerador remoto. Ou pode ser alocada uma região de memória privativa para agir como buffer, para conter as páginas virtuais que são acessadas remotamente. Por exemplo, o acesso a um endereço virtual X que esteja mapeado para uma página remota pode fazer com que toda a página seja lida temporariamente no buffer local, onde ele estará disponível para- - futuros ' ~ acessos, de modo a reduzir acessos à memória remota.
Em uma realização, um mecanismo de execução proxy pode ser usado para o processamento de uma situação de página faltante ocorrida no sequenciador acelerador, o que significa que a página faltante pode ser enviada para processamento pela CPU. Isso implica que a MMU no sequenciador do acelerador seja coerente com a MMU da CPU e todos apontem para a mesma tabela de página do sistema operacional. Uma página faltante para um página virtual, se ocorrida na operação da CPU ou do acelerador, faz com que a CPU use um mecanismo tradicional de processamento de página para trazer a página para a memória. Se a falta se originar de um acesso no sequenciador acelerador, a CPU pode instalar uma nova página na memória fisica local do acelerador remoto.
De outra forma, a página pode ser colocada na memória do sistema. Um acesso sem falhas da CPU a um endereço virtual mapeado irá garantir o mapeamento de uma página fisica no acelerador, dessa forma garantindo que conclusão da execução do proxy.
Em relação à FIG.4, é mostrado o fluxograma de um método para a execução do proxy em conformidade com uma realização da presente invenção. Conforme visto na FIG.4, o método 300 pode ser usado para uma execução de proxy quando os dados desejados por um acelerador não estiverem presentes em sua memória local.
Conforme visto na FIG.4, o método 300 pode começar recebendo uma solicitação de acesso à memória de um acelerador {bloco 310) . Então pode ser determinado se uma entrada para um endereço virtual de uma solicitação está presente no TLB do acelerador {losango 350) . Se for verdadeiro, a memória local do acelerador pode ser acessada usando esse endereço virtual (bloco 370) e, provida uma resposta para o·· so-licitante* (bloco 3:80:)1 De outra, forma, se não houver uma entrada no TLB, © controle passa para o bloco 330 em que uma solicitação de execução de proxy pode ser enviada para a CPU (bloco 330) .
Assumindo que a conversão solicitada não esteja presente na MMU da CPU, pode ser executada uma rotina de perda de página para obter a entrada (bloco 335) . Ainda, a página correspondente a este endereço virtual pode ser movida da memória de sistema para a memória local do acelerador (bloco 340) . Então, uma mensagem de reinicio pode ser enviada pela CPU para o acelerador (bloco 350) . Desse modo, o acelerador pode recuperar a solicitação de memória para seu TLB (bloco 360) . Como a entrada agora está presente na MMU, uma solicitação de acesso à memória pode ser executada para a memória local, para obter os dados solicitados (bloco 370) . Em conformidade, pode ser fornecida uma resposta, que inclua os dados solicitados, para o solicitante (bloco 380) .
Em relação à FIG.5, é mostrado um diagrama de bloco que ilustra as operações para inverter a execução do proxy .de acordo eom uma realização da presente invenção -Conforme visto na FIG.5, a execução do proxy pode ocorrer quando uma. solicitação do acelerador acessa (1) Um. endereço virtual (V.A)X que não esteja presente na MMU local 165. Consequentemente, é enviada uma solicitação de execução de proxy (2) dessa página em falta para a CPU 120, A FIG.5 mostra uma implementação em que a MMU 165 envia diretaméfote ua \ solicitação de execução de proxy para a CPU 120. Entretanuò, quando o proxy é implementado no código de navegação de páginas (microcódigo, firmware ou software, dependendo de como a MMU é gerenciada) , esse código pode ser enviado para uma solicitação de proxy. A CPU 120 envia a solicitação (3) para a MMU local 125 que, por sua vez, acessa a página da memória do sistema 130 para o endereço virtual solicitado (4). Conforme visto, quando a solicitação for para a leitura de dados, toda a página pode ser enviada (5) da memória do sistema 130 para a memória local 180. Em uma realização, a transferência de dados pode ser feita por meio da CPU 120 que programa a DMA para copiar dados de uma região da memória do sistema 130 para uma região da memória local 180. Alternativamente, a CPU 120 pode executar a cópia rodando sequências de instruções individuais "superiores" de carga/armazenamento, como por exemplo, implementada usando microcódigo conforme descrito acima. A partir daí, a CPU 120 pode enviar uçna mensagem de recuperação (6) para o acelerador 160 que, por sua vez, recupera o acesso (7) à MMU 165, que agora encontra a conversão presente e envia a solicitação (8) para obter os dados correspondentes da memória local 180. Observe que para permitir o acesso aos dados na memória local 180, a MMU 165 pode ser endereçada. A CPU 120 pode executar diretamente uma LD/ST individual "superior" para atualizar a entrada de conversão de tabela de página da memória de sistema 130 para a MMU 165. Alternativamente, a CPU 120 pode copiar a tabela de páginas ou um subconjunto da tabela de páginas que contenha a conversão para o lado do acelerador, por meio de uma transferência de dados para a memória local 180 e então reativar o acelerador 160, cujo navegador de página irá percorrer a tabela de páginas, que agora reside localmente. A informação para distinguir se um acesso de endereço virtual à CPU é local .(na memória do sistema,) ou remoto (na memória do acelerador) , pode vir do sistema operacional, que memoriza tal informação do sistema básico de entrada e. salda (BIOS.) , que tem conhecimento total, da configuração de memória do sistema. Para dar suporte a uma RPE, a BIOS pode especificar um. tamanho de memória informado no acelerador. Essa operação s.e parece com uma seleção de chip de memória somente de leitura (ROM)/memória de acesso aleatório (.RAM) executada em tempo de inicialização pela- ■ - BIOS.· "Sr seguir, a BIOS pode informar o total de memória de sistema e de memória local do acelerador e notificar o sistema operacional quanto ao tamanho de memória que é memória local de sistema e quanto é remota.
Em diversas realizações, um estado de nível de sistema para a BIOS, isto é, um conjunto de estados de arquitetura de descritores, conhecidos como descritores de partição de memória, podem registrar essa informação de faixa, como por exemplo, no mínimo, a informação de faixa para a memória de sistema e, dessa forma, qualquer endereço físico fora dessa faixa seria identificado como remoto. Em uma realização, essa informação pode ser armazenada em uma estrutura de dados incorporada na BIOS. Os descritores de memória também podem ser armazenados como estado privativo em registradores de máquina acessíveis ao software e ao microcódígo. Observe que tal informação de faixa é estabelecida era primeiro lugar pela BIOS antes da inicialização do sistema operacional, de modo que o uso desses estados pode não ser dependente do sistema operacional. Em outras palavras, o mecanismo de RPE pode trabalhar com um sistema operacional existente que nem tenha conhecimento da distinção entre memória remota e local.
Para qualquer LD/ST dada, processada pela CPU, pode ser incômodo fazer com que cada conversão TLB também compare o endereço físico com um descritor de partição de memória para decidir se é acesso local ou remoto à memória. Em vez disso» tal verificação pode ser executada fora do caminho crítico na MMU e pode ocorrer somente em uma navegação de página que esteja preenchendo uma nova entrada T.LB. Em algumas realizações, cada entrada de ILB pode incluir um bit de atributo para. indicar se a entrada correspondente é uma memória remota ou uma memória local de sistema. Quando uma nova entrada de TLB é instalada, o navegador .de pãginas- ..pode executar uma verificação de faixa do endereço físico na entrada da tabela de páginas contra o descritor de partição de memória. Observe que esse mecanismo funciona mesmo que o sistema operacional não faça distinção entre uma página mapeada localmente ou remotamente.
Em algumas realizações, o sistema operacional pode processar a política que embasa o uso da memória local do acelerador, usando a memória local do acelerador somente para esse subconjunto de um código de aplicativo e os dados que o acelerador acesse frequentemente. Se um sistema operacional nã'o tiver conhecimento, então um princípio de localidade, como por exemplo, uma camada em tempo de execução ou outra entidade, ajudará a mover o conjunto de trabalho para perto de onde ocorram os acessos com mais frequência, na memória do sistema ou na memória local do acelerador.
Adicionalmente, conforme descrito acima, o formato de tabela de página do sistema operacional pode incluir um bit de atributo para indicar se a página correspondente está armazenada na memória local ou remota. Esse bit pode ser marcado quando sistema operacional estabelece o endereço virtual para o mapeamento de endereço físico e para cada página física que o sistema operacional possa comparar com o descritor de partição para marcar a página como local ou remota. Dessa forma, não precisa ser executada uma comparação de faixa em qualquer entrada TLB instalada. Para permitir que os aplicativos acessem a memória no acelerador, a CPU pode analisar bits de atributo de modo que possa direcionar uma carga/armazenamento para um dado endereço virtual, para um local de memória fisica remota. Ainda, os bits de atributo também podem rastrear o número de acessos executados remotamente, permitindo que o software de sistema operacional implemente uma política baseada no número de acessos remotos, de forma que essa página . possa ser migrada" para outro local se o número de acessos remotos exceder um dado limite.
Apesar de ser possível implementar o acesso à memória remota impondo proteções de uma página virtual, como tornando a página não acessível ou não presente e processando falhas resultantes, a latência de acesso aumenta já que a rotina de tratamento de falhas precisa ser executada todas as vezes que ocorre um acesso à memória. Em vez disso, usando uma realização da presente invenção, uma CPU pode apresentar um endereço de local de memória remota para um controlador de bus (barramento) , que direciona o acesso para o local de memória do acelerador. Por exemplo, a CPU pode redirecionar diretamente cargas/armazenamento acessando um conjunto padrão de regi.strador.es. no controlador de bus para acessar o local da memória remota sem qualquer ajuda de software para concluir a carga/armazenamento. Essa transferência de dados pode ser por meio de DMA (transferência em massa) ou uma transferência escalar em granularidade- de linha de cache. A capacidade de mover de maneira transparente uma página virtual de um. local de memória remota para uma área lo.cal íe vice-versa) permite que o software (por exemplo, um aplicativo) compartilhe dados com os aceleradores sem explicitamente gerenciar o movimento de dados. Na falta do acelerador conectado ao sistema ou entrando em um estado sem resposta, a unidade de conversão de endereço gera erros de página que indicam a razão pela qual a carga/armazenamento falhou.
Em relação à FIG.6, é mostrada uma entrada exemplifica ti va 4 00 em uma tabela de página em conformidade com uma realização da presente invenção. Conforme visto, cada entrada pode incluir um campo de endereço base de página {PBA) 410 que armazena um PBA que aponta para um primeiro endereço de uma página armazenada na memória. Ainda, cada entrada pode incluir um campo acelerador 420, que armazena um identificador acelerador de n-bit (ID) para referir a um acelerador que está presente no sistema, que inclua a página, um campo local/remoto 430 para armazenar, isto é, um indicador de n-bit, em que a página virtual correspondente é armazenada na memória local ou uma das múltiplas memórias remotas possíveis, um campo contador 440 para armazenar um contador m-bit que conta o número de acessos feitos à memória remota {como o fato. de que o .contador somente está ativo se a página estiver na memória remota) e um campo de atributo 450 para armazenar os diversos bits para indicar diferentes atributos da página.
Em uma realização é levantada uma exceção quando o valor do contador de acessos chegar a zero. Essa exceção permite que o software de sistema operacional, por exemplo, um kernel (núcleo) de gerenciamento de memória virtual responsável pela migração de página, para gerenciar políticas de migração com base no número de acessos à dada página virtual. Isto é, o software pode gerenciar o espaço de endereçamento virtual em que o aplicativo trabalha de modo que o espaço de endereçamento virtual possa mapear as páginas de memória fisica que estão localizadas mais próximas da CPU ou do acelerador. Para aceleradores acoplados a um bus PCIe*M, desde que o bus seja não coerente, o software subjacente de tempo de execução pode implementar o software com base no mecanismo da coerência. Para um acesso concorrente a qualquer estrutura, compartilhada de dados, pode ser usado um controle de sincronização como semáforo, de maneira que o encadeamento produtor não libere o semáforo até que esteja pronto para entregar os dados para o consumidor. Antes que o produtor libere o semáforo, ele precisa limpar todas as linhas de cache 'sujas' relacionadas com os dados compartilhados na memória. Isso garante que quando o encadeamento do consumidor no acelerador começar a acessar os .dados compartilhados da memória, os dados sejam coerentes, mesmo sabendo que a matriz entre a CPU hospedeira e o acelerador não tenha suporte para coerência de cache. Inversamente, quando o acelerador concluir o processamento de dados compartilhados, podem ser usados uma sincronização e mecanismos de fluxo similares para garantir coerência baseada na memória. Se a matriz entre a CPU e o acelerador for coerente com cache (por exemplo, uma geração futura de PCIe), nenhum fluxo de linhas 'sujas' para a memória precisa ser manuseado antes que produtor libere o semáforo.
Em realizações com suporte de sistema operacional, a alocação e gerenciamento de memória no acelerador pode ser executados em coordenação com o gerenciador de memória do sistema operacional que aloca e gerencia as páginas de memória do sistema que são entregues ao aplicativo e gerenciam as tabelas de páginas que são utilizadas pela CPU para traduzir endereços virtuais em endereços físicos. O gerenciador de memória também manuseia as exceções que ocorrem devido ao redirecionamento para acessar a memória remota e gerencia a política por trás da migração das páginas fisicas entre a CPU e o acelerador. A política de migração de páginas pode variar, dependendo do comportamento da carga de trabalho e, potencialmente, pode ser alterada para reduzir o número de acessos remotos (antes do movimento da página correspondente para a memória do sistema) ou implementar uma primeira política de movimentação, para mover a página para o local em que há o número máximo de acessos. As páginas de código e somente de leitura podem ser reproduzidas em memórias múltiplas para impedir a movimentação desnece •343. -çt das páginas físicas nos dois sentidos. Somente as páginas que contenham dados que são processados durante a execução do programa são migradas nos dois sentidos., com ba.se na localidade de acesso às páginas de dados.
Em relação à FIG.7, é mostrado um diagrama de blocos de um processador de acordo com uma realização da presente invenção. Conforme mostrado na FIG.7, o processador 500 pode ser um processador desordenado direcionado e com estágios múltiplos. O processador 500 ê mostrado em uma visão relativamente simplificada na FIG.7 para ilustrar os diversos recursos usados, em conjunto com a execução de proxy e a execução de proxy inverso, em conformidade com uma realização da presente invenção.
Conforme mostrado na FIG.7, o processador 500 inclui unidades de processamento inicial (front end) 510, que podem ser usadas para buscar macro-instruções para serem executadas e as prepara para uso posterior pelo processador. Por exemplo, as unidades de processamento inicial 510 podem incluir uma unidade de busca 504, um cache de instrução 505 e um decodificador de instrução 508. Em algumas implementações, ainda as unidades de processamento inicial 510 podem incluir um cache de rastreamento, junto com o armazenamento de microcódigo, bem como um armazenamento de micro-operação. A unidade de busca 504 pode buscar macro-instruções, como por exemplo, da memória ou do cache de instruções 506 e as insira no decodif icador de instruções 508, para decodificá-las em primitivas, isto é, micro-operações para execução pelo processador. Ainda, as unidades de processamento inicial 510 incluem uma MMU 509 de acordo com uma realização da presente invenção para armazenar entradas, incluindo informações de estado incluídas para lidar com execução de proxy e execução invertida de proxy, conforme descrito aqui. Com base em tais informações, as operações no espaço de memória virtual compartilhada, incluindo memória de sistema e memória local de um ou mais aceleradores, podem ser executadas eficientemente sem suporte do programador na movimentação de dados.
Acoplado entre as unidades de processamento inicial 510 e as unidades de execução 520, existe um mecanismo desordenado (OOO) 515 que pode ser usado para receber as micro—instruções e as preparar para execução. Mais especificamente, o mecanismo OOO 515 pode incluir buffers para reordenar o fluxo das micro-instruções e alocar diversos recursos necessários para a execução, bem como prover a alteração de nomes de registradores lógicos em localizações de armazenamento dentro de diversos arquivos de registradores como o· arquivo de registrador 530 e o arquivo de registrador ampliado 535. O arquivo de registrador 530 pode incluir arquivos separados de registrador para operações de inteiros e de ponto flutuante. O arquivo de registrador ampliado 535 pode fornecer armazenamento para unidades dimensionadas para vetores, como por exemplo, 256 ou 512 bits por registrador.
Diversos recursos podem estar presentes nas unidades de execução 520, incluindo, por exemplo, diversas unidades lógicas de dados inteiros, de pontos flutuantes e de dados múltiplos de instruções simples (SIMD), dentre outros hardwares especializados. Podem ser fornecidos dados para lógica de retirada, mais precisamente um buffer de reordenamento (ROB) 540. Mais especificamente, o ROB 54 0 pode incluir diversas matrizes e lógicas para receber informações associadas com instruções que estejam sendo executadas. Essa informação é então examinada pelo ROB 540 para determinar se as instruções podem ser canceladas de maneira válida e os dados resultantes submetidos ao estado da arquitetura do processador, ou se ocorreram uma ou mais exceções que impeçam o cancelamento apropriado das instruções, Certamente, o ROB 540 pode manusear outras operações associadas com o cancelamento.
Conforme mostrado na FIG.7, o ROB 540 está acoplado a um cache 550-que, em- uma realização “pode ~ ser um cache de baixo nível (por exemplo, um cache Ll), apesar de que o escopo da presente invenção não está limitado a isso. Ainda, as unidades de execução 520 podem ser acopladas diretamente ao cache 550, Do cache 550, pode ocorrer comunicação de dados com cachês de maior nivel, com a memória do sistema e assim por diante. Ainda que mostrado com este alto nivel na realização da FIG.7, o entendimento do escopo da presente, invenção, -não está limitado a isso.
Por exemplo, em algumas implementações, um acelerador pode ser integrado em ch.i p com o processador. Por exemplo, em uma arquitetura, um processador muiti-núcleo que pode incluir diversos núcleos individuais, junto com aceleradores que podem ser núcleos heterogêneos como, por exemplo, um processador gráfico ou outra unidade especializada de processamento. De maneira geral, a operação de execuções de proxy e de execuções invertidas de proxy pode ocorrer da mesma maneira que a descrito acima para aceleradores em chip, que pode estar acoplado a núcleos por qualquer tipo de interconexão, incluindo links coerentes ou não coerentes.
Em relação à FXG.8, é mostrado um diagrama de blocos de um sistema, de acordo com outra realização da presente invenção. Conforme visto na FIG.8, o sistema 600 inclui um processador muiti-núcleo 610 que pode ser formado em uma única matriz de semicondutor e incluindo diversos componentes. Especi ficamente, na implementação da FIG.8, o processador €10 pode incluir diversos núcleos 620a ~ 620n, e cada um deles pode incluir uma TLB 62 5a - 625nf que pode incluir entradas tendo conversões e campos adicionais como os discutidos acima. Por sua vez, os núcleos podem ser acoplados a um cache compartilhado 640, que pode ser um cache compartilhado de último nível, em que cada um dos núcleos individuais pode incluir sua própria memória cache.. Conforme - -visto 'em mais detalhes, o processador 610 também pode incluir 'aceleradores. Na realização mostrada, são mostrados dois de tais aceleradores, apesar de que o escopo da presente invenção não está limitado a isso. A conexão dos aceleradores aos núcleos pode ser de qualquer tipo de interconexão, tal como um link coerente ou não coerente, como por exemplo, um link PCIe™, a interconexão de barramento compartilhada e assim por diante. Os aceleradores 630a e 630b são mostrados incluem TLBs 635 com entradas conforme descrito acima. Ainda, o processador 610 pode incluir um controlador de memória 650.
Em uma implementação, o processador 610 pode ser acoplado ã memória 660, que pode ser uma memória de sistema que pode ser particionada em múltiplas partições, como por exemplo, incluindo uma primeira partição 665a que pode ser associada a núcleos de processador e uma segunda partição 665b, que pode ser associada a aceleradores. Certamente, memórias associadas a núcleos e aceleradores podem ser configuradas de maneira diferente, como por exemplo, por meio de portas diferentes e como módulos diferentes de memória ou assim por diante. Ainda, o processador 610 pode ser acoplado a um chipset 670, que por sua vez pode ser acoplado a diversos dispositivos perifériGos, como dispositivos de entrada e saida, dispositivos de armazenamento, outros aceleradores e assim por diante.
Consequentemente, as realizações podem fornecer o manuseio de execuções de proxy e execuções invertidas de proxy em- diferentes sistemas que podem, incluir aceleradores integrados ou aceleradores acoplados por meio de links, que podem ser coerentes ou não coerentes.
As realizações podem ser implementadas em código e podem ser armazenadas em uma mídia de armazenamento tendo instruções armazenadas que podem ser usadas para programar um. sistema para; executar - as instruções.' ft mídia de armazenamento pode incluir, mas não está limitado, qualquer tipo de disco incluindo disquetes, discos ópticos, drives de estado sólido (SSDs), memória de discos compactos somente de leitura (CD-ROMs), discos compactos regravávei s (CD-RWs) e discos magneto-ópticos, dispositivos semicondutores como memória somente de leitura (ROMs), memórias de acesso aleatório (RAMs), como memórias dinâmicas de acesso aleatório (DRAMs), memórias de acesso aleatório estáticas (SRAMs), memória programável e apagável apenas de leitura (EPKQMs), memórias flash, memória de leitura programável eletricamente apagável (EEPROMs), cartões ópticos ou magnéticos ou qualquer outro tipo de midia apropriada para o armazenamento de instruções eletrônicas.
Ainda que a. presente .invenção tenha sido descrita em relação a um. número- limitado de realizações, pessoas com habilidade normal na técnica irão perceber diversas possiv.eis modificações e variações da mesma. Pretende-se que as reivindicações anexadas cubram,, todas essas modificações e variações como estando dentro, do escopo da presente invenção.

Claims (30)

1. Método para compartilhamento d® memória virtual entre memória local © remota, caracterizado por compreender os passos de receber uma solicitação de acesso à memória incluindo um endereço virtual; analisar uma entrada que corresponde a um endereço virtual armazenado- -em um buffer de tabelas de conversão (TLB - transia tion lookaside buffer) de um processador para determinar se um endereço físico {PA) correspondente ao endereço virtual está presente em uma memória local associada ao processador ou a uma memória remota associada a um acelerador acoplado ao processador por meio de um link não coerente, a memória local e memória remota formando coletivamente um espaço de memória virtual compartilhada; e enviar, se o PA estiver presente na memória remota, uma solicitação de execução invertida de proxy para a memória remota para executar a solicitação de acesso â memória.
2. Método de acordo com a reivindicação 1, caracterizado por ainda compreender o passo de determinar se o PA está na memória física ou na memória remota com base em um indicador de local da entrada TLB.
3. Método de acordo com a reivindicação 2, caracterizado pelo fato de ainda compreender determinar qual de uma pluralidade de memórias remotas, cada uma associada a um acelerador, em que o PA é localizado usando um campo identificador da entrada de TLB que indica o acelerador ao qual a memória remota está associada.
4. Método de acordo com a reivindicação 3, caracterizado pelo fato de compreender adicionalmente analisar um contador da entrada TLB que indica, o número de acessos ao PA da memória remota pelo processador.
5. Método de acordo com a reivindicação 4, caracterizado pelo fato de compreender adicionalmente mover informações do PA da memória remota para a memória local quando o contador alcançar um valor limite/ sem envolvimento de um aplicativo ,em execução·· no processador.
6. Método de acordo com a reivindicação 1, caracterizado pelo fato de compreender ainda definir uma configuração de memória de um sistema incluindo a memória local e a memória remota para indicar uma primeira faixa de endereço fisico associada com a memória local e uma segunda faixa de endereço fisico associada à memória remota.
7. Método de acordo com a reivindicação 6, caracterizado pelo fato de compreender adicionalmente acessar a configuração de memória em uma navegação de página para obter uma conversão para a solicitação de acesso â memória .e no armazenamento de uma entrada na TLB incluindo a conversão e um indicador de local tendo um primeiro valor para indicar que o Pft está dentro da primeira faixa de endereços físicos..
8. Dispositivo para. compartilhamento de memória virtual entre memória local e remota, caracterizado por um processador tendo um primeiro núcleo que inclua uma. primeira, unidade .de gerenciamento de memória (MMU) , a primeira MMU incluindo uma pluralidade de entradas para armazenar o endereço virtual para conversões de endereços físicos, em que cada entrada inclui um campo de local para armazenar um primeiro indicador, para indicar se está presente um local de memória para a entrada correspondente em uma memória local acoplada ao processador ou na memória remota a um acelerador acoplado por meio de uma interconexão não coerente e a um campo identificador para armazenar um identificador de ura acelerador associado à memória remota,
9. Dispositivo de acordo com a reivindicação 8, caracterizado pelo fato de que cada entrada da primeira MMU inclui ainda um contador do número de acessos ao local de memória da memória remota pelo processador.
10. Dispositivo de acordo com a reivindicação 8, caracterizado pelo fato de que a memória local é uma memória de sistema e a memória remota é uma memória local do acelerador.
11. Dispositivo de acordo com a reivindicação 10, caracterizado pelo fato de que a memória de sistema e a memória remota consistem em, um único espaço de endereçamento virtual.
12. Dispositivo de acordo com a reivindicação 8, caracterizado pelo fato de que uma entrada da primeira MMU indica que o local de memória é a memória remota, o processador deve direcionar uma solicitação de memória para o acelerador por meio de um protocolo de interconexão não coerente.
13. Dispositivo de acordo com a reivindicação 8, caracterizado pelo fato de que o acelerador inclui uma segunda MMU e que responde a uma falha de página na segunda MMU, o acelerador devendo solicitar que o processador resolva a falha de página.
14. Dispositivo de acordo com a reivindicação 13, caracterizado pelo fato de que o processador deve fazer com que a memória local transfira uma página de memória associada a um endereço de falha de página da memória remota e faça com que a conversão da página de memória para ser enviada para armazenamento no acelerador da segunda MMU.
15. Dispositivo de acordo com a reivindicação 8, caracterizado pelo fato de que o processador deve endereçar diretamente um local de memória presente na memória remota usando informações de uma entrada da primeira MMU.
16. Dispositivo de acordo com a reivindicação 8, caracterizado pelo fato de que o processador deve emitir uma solicitação de execução invertida de proxy para que o acelerador acesse os dados armazenados na memória remota do acelerador usando informações de uma entrada da primeira MMU e sem usar um aplicativo de nivel de usuário que esteja sendo executado no processador.
17. Sistema para compartilhamento de memória virtual entre memória local e remota, caracterizado por compor-se de um processador tendo um primeiro núcleo que inclua uma primeira unidade de gerenciamento de memória (MMU), a primeira MMU incluindo uma pluralidade de entradas para armazenar o endereço virtual para conversões de endereços físicos, em. que cada entrada inclui um campo de local para armazenar um primeiro indicador-, para indicar se está presente um local de memória para a entrada correspondente em uma memória de sistema ou em uma segunda memória associada a um., componente, de acelerador e um contador para armazenar uma contagem de um número de acessos a um local de memória da segunda memória pelo processador; o componente do acelerador acoplado ao processador por meio de um link, o componente de acelerador incluindo um segundo processador e uma segunda MMU; e a memória de sistema acoplada ao processador, em que a memória de sistema consiste em uma memória de acesso aleatório dinâmica (DRAM).
18. Sistema de acordo com a reivindicação 17, caracterizado pelo fato de que o processador deve endereçar diretamente um local de memória presente na segunda memória usando informações de uma entrada da orimeira MMU._
19. Sistema de acordo com a reivindicação 17, caracterizado pelo fato de que a memória de sistema e a segunda memória consistem em um único espaço de endereçamento virtual.
20. Sistema de acordo com a reivindicação 18, caracterizado pelo fato de que o processador deve movimentar informações do local de .memória presente na segunda memória para um local de memória presente na memória de sistema que responde a uma interrupção que ocorre quando o contador atinge um valor limite, sem envolvimento de um aplicativo que esteja sendo executado no processador.
21. Sistema de acordo com a reivindicação 17, caracterizado pelo fato de que o processador e o componente do acelerador são formados por uma única matriz de semicondutor.
22. Sistema de acordo com a reivindicação 21., caracterizado pelo fato de que a segunda memória é uma parte particionada da memória de sistema.
23 . Dispositivo para compartilhamento de memória virtual entre memória local e remota, caracterizado por um processador que tem um primeiro núcleo que inclui uma primeira lógica para enviar a solicitação de acesso de dados na memória para um acelerador acoplado ao primeiro núcleo, transparente para um aplicativo em nível de usuário que está sendo executado no primeiro núcleo que solicita os dados, quando um local de memória da solicitação de acesso à memória está presente na memória associada ao acelerador e para receber os dados armazenados no local de memória do acelerador que responde à solicitação de acesso ã memória.
24. Dispositivo de acordo com a reivindicação 23, caracterizado pelo fato de que. o primeiro núcleo inclui uma primeira armazenagem incluindo uma pluralidade de entradas para armazenar endereços virtuais para conversões de endereços físicos, em que cada entrada inclua pelo menos um indicador que indique se um local de memória para a entrada correspondente está presente na primeira memória associada com o primeiro núcleo ou em uma memória associada a um acelerador acoplado ao processador e um identificador do acelerador ao qual a memória está associada.
25. Dispositivo de acordo com a reivindicação 24, caracterizado pelo fato de que cada entrada do primeiro armazenamento inclui ainda um contador do número de acessos ao local de memória da memória associada ao acelerador pelo primeiro núcleo.
26. Dispositivo de acordo com a reivindicação 2 5, caracterizado pelo fato de que se um valor do contador for maior do que um limite, os dados armazenados no local de memória deve ser movidos para um segundo local de memória na primeira memória.
27. Dispositivo de acordo com a reivindicação 26, caracterizado pelo fato de que a transmissão da solicitação de acesso à memória e a movimentação de dados são transparentes ao aplicativo em nivel de usuário que solicitou os dados.
28. Dispositivo de acordo com a reivindicação 24.,· caracterizado pelo fato de que quando uma entrada do primeiro armazenamento indica que o local de memória é a memória associada ao. acelerador, o processador deve direcionar a solicitação de memória para o acelerador por meio de um protocolo de interconexão que acople o processador e o acelerador,
29. Dispositivo de acordo com a reivindicação 23, caracterizado pelo fato de que o processador consiste em um processador muiti-núcleo que inclui o primeiro núcleo e o acelerador, o processador muiti-núcleo formado em uma única matriz de semicondutor.
30. Dispositivo de acordo cora a reivindicação 23, caracterizado pelo fato de que a primeira memória e a memória associada ao acelerador consistem em um único espaço de endereçamento virtual.
BRPI1003466-8A 2009-09-18 2010-09-16 Método, dispositivo e sistema de suporte de hardware para o compartilhamento de memória virtual entre memória física local e remota BRPI1003466A2 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/562,477 US8719547B2 (en) 2009-09-18 2009-09-18 Providing hardware support for shared virtual memory between local and remote physical memory

Publications (1)

Publication Number Publication Date
BRPI1003466A2 true BRPI1003466A2 (pt) 2015-08-18

Family

ID=43705804

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI1003466-8A BRPI1003466A2 (pt) 2009-09-18 2010-09-16 Método, dispositivo e sistema de suporte de hardware para o compartilhamento de memória virtual entre memória física local e remota

Country Status (6)

Country Link
US (2) US8719547B2 (pt)
JP (3) JP2011065650A (pt)
CN (2) CN104123242B (pt)
BR (1) BRPI1003466A2 (pt)
DE (1) DE102010035603A1 (pt)
TW (1) TWI470435B (pt)

Families Citing this family (122)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8667249B2 (en) * 2004-12-22 2014-03-04 Intel Corporation Systems and methods exchanging data between processors through concurrent shared memory
US8726289B2 (en) * 2008-02-22 2014-05-13 International Business Machines Corporation Streaming attachment of hardware accelerators to computer systems
US8250578B2 (en) * 2008-02-22 2012-08-21 International Business Machines Corporation Pipelining hardware accelerators to computer systems
US8656397B2 (en) * 2010-03-30 2014-02-18 Red Hat Israel, Ltd. Migrating groups of threads across NUMA nodes based on remote page access frequency
US20120236010A1 (en) * 2011-03-15 2012-09-20 Boris Ginzburg Page Fault Handling Mechanism
US9916257B2 (en) * 2011-07-26 2018-03-13 Intel Corporation Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory
US9921967B2 (en) 2011-07-26 2018-03-20 Intel Corporation Multi-core shared page miss handler
JP5573829B2 (ja) * 2011-12-20 2014-08-20 富士通株式会社 情報処理装置およびメモリアクセス方法
US8984511B2 (en) * 2012-03-29 2015-03-17 Advanced Micro Devices, Inc. Visibility ordering in a memory model for a unified computing system
US9405701B2 (en) * 2012-03-30 2016-08-02 Intel Corporation Apparatus and method for accelerating operations in a processor which uses shared virtual memory
US9164904B2 (en) 2012-08-28 2015-10-20 Hewlett-Packard Development Company, L.P. Accessing remote memory on a memory blade
US9384153B2 (en) * 2012-08-31 2016-07-05 Freescale Semiconductor, Inc. Virtualized local storage
US10270709B2 (en) 2015-06-26 2019-04-23 Microsoft Technology Licensing, Llc Allocating acceleration component functionality for supporting services
CN107402891B (zh) * 2012-12-25 2020-12-22 华为技术有限公司 确定共享虚拟内存页面管理模式的方法和相关设备
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
CN104782081B (zh) 2013-01-27 2019-12-03 慧与发展有限责任合伙企业 用于转移套接字状态的系统以及用于迁移tcp连接的方法
US10061622B2 (en) 2013-02-26 2018-08-28 Red Hat Israel, Ltd. Updating memory topology information for virtual machines
US10114662B2 (en) 2013-02-26 2018-10-30 Red Hat Israel, Ltd. Updating processor topology information for virtual machines
WO2014142836A1 (en) * 2013-03-13 2014-09-18 Empire Technology Development, Llc Memory allocation accelerator
US10133677B2 (en) * 2013-03-14 2018-11-20 Nvidia Corporation Opportunistic migration of memory pages in a unified virtual memory system
US20140280669A1 (en) * 2013-03-15 2014-09-18 Microsoft Corporation Memory Sharing Over A Network
WO2014158177A1 (en) * 2013-03-28 2014-10-02 Hewlett-Packard Development Company, L.P. Shared memory system
US9678818B2 (en) * 2014-01-30 2017-06-13 Mellanox Technologies, Ltd. Direct IO access from a CPU's instruction stream
US9785576B2 (en) 2014-03-27 2017-10-10 Intel Corporation Hardware-assisted virtualization for implementing secure video output path
WO2015150976A1 (en) 2014-04-03 2015-10-08 Strato Scale Ltd. Cluster-wide memory management using similarity-preserving signatures
US9766916B2 (en) * 2014-05-05 2017-09-19 International Business Machines Corporation Implementing coherent accelerator function isolation for virtualization
US10025715B2 (en) 2014-06-27 2018-07-17 International Business Machines Corporation Conditional inclusion of data in a transactional memory read set
US9342346B2 (en) 2014-07-27 2016-05-17 Strato Scale Ltd. Live migration of virtual machines that use externalized memory pages
US9436601B2 (en) 2014-09-15 2016-09-06 International Business Machines Corporation Categorizing memory pages based on page residences
US9390028B2 (en) 2014-10-19 2016-07-12 Strato Scale Ltd. Coordination between memory-saving mechanisms in computers that run virtual machines
WO2016065610A1 (zh) * 2014-10-31 2016-05-06 华为技术有限公司 访问文件的方法、分布式存储系统和存储节点
US9600428B2 (en) 2014-11-20 2017-03-21 International Business Machines Corporation Implementing extent granularity authorization command flow processing in CAPI adapters
US9710624B2 (en) * 2014-11-20 2017-07-18 International Business Machines Corporation Implementing extent granularity authorization initialization processing in CAPI adapters
US9582659B2 (en) 2014-11-20 2017-02-28 International Business Machines Corporation Implementing extent granularity authorization and deauthorization processing in CAPI adapters
US20160149909A1 (en) 2014-11-20 2016-05-26 International Business Machines Corporation Implementing block device extent granularity authorization model processing in capi adapters
US9697370B2 (en) 2014-11-20 2017-07-04 International Business Machines Corporation Implementing and processing extent granularity authorization mechanism in CAPI adapters
US9600642B2 (en) 2014-11-20 2017-03-21 International Business Machines Corporation Implementing extent granularity authorization processing in CAPI adapters
CN104391753B (zh) * 2014-12-16 2017-12-05 浪潮电子信息产业股份有限公司 一种服务器主板内存系统无故障运行方法
US9921768B2 (en) * 2014-12-18 2018-03-20 Intel Corporation Low power entry in a shared memory link
JP6380084B2 (ja) * 2014-12-19 2018-08-29 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
US9524328B2 (en) 2014-12-28 2016-12-20 Strato Scale Ltd. Recovery synchronization in a distributed storage system
US9912748B2 (en) 2015-01-12 2018-03-06 Strato Scale Ltd. Synchronization of snapshots in a distributed storage system
US9495303B2 (en) * 2015-02-03 2016-11-15 Intel Corporation Fine grained address remapping for virtualization
US9727241B2 (en) * 2015-02-06 2017-08-08 Advanced Micro Devices, Inc. Memory page access detection
US9858201B2 (en) * 2015-02-20 2018-01-02 Qualcomm Incorporated Selective translation lookaside buffer search and page fault
US9658793B2 (en) * 2015-02-20 2017-05-23 Qualcomm Incorporated Adaptive mode translation lookaside buffer search and access fault
CN106233265A (zh) 2015-02-26 2016-12-14 斯特拉托斯卡莱有限公司 将访问频率层次结构用于逐出目标的选择
GB2536200B (en) * 2015-03-02 2021-08-18 Advanced Risc Mach Ltd Memory management
GB2536199B (en) * 2015-03-02 2021-07-28 Advanced Risc Mach Ltd Memory management
US10067893B2 (en) * 2015-04-03 2018-09-04 Futurewei Technologies, Inc. Acceleration framework with direct data transfer mechanism
US10198294B2 (en) 2015-04-17 2019-02-05 Microsoft Licensing Technology, LLC Handling tenant requests in a system that uses hardware acceleration components
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane
JP6724908B2 (ja) * 2015-05-12 2020-07-15 日本電気株式会社 アクセラレータ制御装置、アクセラレータ制御方法およびプログラム
US10216555B2 (en) 2015-06-26 2019-02-26 Microsoft Technology Licensing, Llc Partially reconfiguring acceleration components
US9858198B2 (en) 2015-06-26 2018-01-02 Intel Corporation 64KB page system that supports 4KB page operations
CN105938461B (zh) * 2015-07-31 2019-02-19 杭州迪普科技股份有限公司 一种dma数据传输方法、装置以及网络设备
US10216662B2 (en) * 2015-09-26 2019-02-26 Intel Corporation Hardware mechanism for performing atomic actions on remote processors
US10025722B2 (en) 2015-10-28 2018-07-17 International Business Machines Corporation Efficient translation reloads for page faults with host accelerator directly accessing process address space without setting up DMA with driver and kernel by process inheriting hardware context from the host accelerator
US9678788B2 (en) 2015-11-10 2017-06-13 International Business Machines Corporation Enabling poll/select style interfaces with coherent accelerators
KR20180088438A (ko) 2015-11-30 2018-08-03 가부시키가이샤 페지 컴퓨팅 다이 및 패키지
KR20180088437A (ko) * 2015-11-30 2018-08-03 가부시키가이샤 페지 컴퓨팅 다이 및 패키지, 및 다이의 제조 방법 및 패키지의 생성 방법
JP6588106B2 (ja) * 2016-01-07 2019-10-09 株式会社日立製作所 計算機システム及び計算機の制御方法
US11126564B2 (en) 2016-01-12 2021-09-21 Hewlett Packard Enterprise Development Lp Partially coherent memory transfer
US9934173B1 (en) * 2016-02-24 2018-04-03 Xilinx, Inc. Pseudo cut-through architecture between non-volatile memory storage and remote hosts over a fabric
KR20180009217A (ko) * 2016-07-18 2018-01-26 삼성전자주식회사 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법
US10613991B2 (en) 2016-08-01 2020-04-07 Hewlett Packard Enterprise Development Lp Transparent routers to provide services
US10255181B2 (en) * 2016-09-19 2019-04-09 Qualcomm Incorporated Dynamic input/output coherency
TWI645290B (zh) * 2016-10-11 2018-12-21 慧榮科技股份有限公司 資料儲存裝置及其資料寫入方法
US10289553B2 (en) 2016-10-27 2019-05-14 International Business Machines Corporation Accelerator sharing
US10296338B2 (en) * 2016-12-09 2019-05-21 Intel Corporation System, apparatus and method for low overhead control transfer to alternate address space in a processor
CN108572864A (zh) * 2017-03-13 2018-09-25 龙芯中科技术有限公司 触发负载均衡调度的方法、装置及服务器
US11113440B1 (en) * 2017-03-17 2021-09-07 Synopsys, Inc. Memory migration in hybrid emulation
US20180285262A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Techniques for shared virtual memory access protection
US10282811B2 (en) * 2017-04-07 2019-05-07 Intel Corporation Apparatus and method for managing data bias in a graphics processing architecture
US10324858B2 (en) * 2017-06-12 2019-06-18 Arm Limited Access control
JP6927301B2 (ja) * 2017-06-13 2021-08-25 日本電気株式会社 アクセラレータ制御装置、アクセラレータ制御方法、及び、アクセラレータ制御プログラム
US11030117B2 (en) * 2017-07-14 2021-06-08 Advanced Micro Devices, Inc. Protecting host memory from access by untrusted accelerators
US10489304B2 (en) * 2017-07-14 2019-11-26 Arm Limited Memory address translation
US11204867B2 (en) * 2017-09-29 2021-12-21 Intel Corporation PCIe controller with extensions to provide coherent memory mapping between accelerator memory and host memory
US11263143B2 (en) 2017-09-29 2022-03-01 Intel Corporation Coherent accelerator fabric controller
CN109729110B (zh) * 2017-10-27 2022-02-11 伊姆西Ip控股有限责任公司 管理专用处理资源的方法、设备以及计算机可读介质
US11861025B1 (en) 2018-01-08 2024-01-02 Rankin Labs, Llc System and method for receiving and processing a signal within a TCP/IP protocol stack
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US11231927B2 (en) * 2018-03-08 2022-01-25 Intel Corporation System, apparatus and method for providing a fabric for an accelerator
US11689543B2 (en) 2018-08-10 2023-06-27 Rankin Labs, Llc System and method for detecting transmission of a covert payload of data
CN109308270B (zh) * 2018-09-04 2021-07-23 飞腾技术(长沙)有限公司 一种加速虚实地址转换的方法及装置
US11030012B2 (en) 2018-09-28 2021-06-08 Intel Corporation Methods and apparatus for allocating a workload to an accelerator using machine learning
KR102655094B1 (ko) * 2018-11-16 2024-04-08 삼성전자주식회사 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법
US11200168B2 (en) 2018-12-10 2021-12-14 International Business Machines Corporation Caching data from remote memories
US10909045B2 (en) * 2018-12-20 2021-02-02 Arm Limited System, method and apparatus for fine granularity access protection
WO2020154223A1 (en) 2019-01-21 2020-07-30 John Rankin Systems and methods for processing network traffic using dynamic memory
US11023397B2 (en) * 2019-03-25 2021-06-01 Alibaba Group Holding Limited System and method for monitoring per virtual machine I/O
US11301396B2 (en) * 2019-03-29 2022-04-12 Intel Corporation Technologies for accelerated data access and physical data security for edge devices
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
US11487674B2 (en) * 2019-04-17 2022-11-01 Rankin Labs, Llc Virtual memory pool within a network which is accessible from multiple platforms
US11100007B2 (en) * 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11169930B2 (en) * 2019-05-28 2021-11-09 Micron Technology, Inc. Fine grain data migration to or from borrowed memory
US11372773B2 (en) 2019-05-28 2022-06-28 Rankin Labs, Llc Supporting a virtual memory area at a remote computing machine
US11334387B2 (en) 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
US11061819B2 (en) 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
US11256624B2 (en) * 2019-05-28 2022-02-22 Micron Technology, Inc. Intelligent content migration with borrowed memory
US20190317802A1 (en) * 2019-06-21 2019-10-17 Intel Corporation Architecture for offload of linked work assignments
US11526290B2 (en) * 2019-06-29 2022-12-13 Intel Corporation System and method to track physical address accesses by a CPU or device
US11226902B2 (en) * 2019-09-30 2022-01-18 International Business Machines Corporation Translation load instruction with access protection
CN111290979B (zh) * 2020-03-23 2021-08-17 优刻得科技股份有限公司 数据传输方法、装置及系统
US11922297B2 (en) * 2020-04-01 2024-03-05 Vmware, Inc. Edge AI accelerator service
US11714755B2 (en) 2020-07-31 2023-08-01 Hewlett Packard Enterprise Development Lp System and method for scalable hardware-coherent memory nodes
US11573898B2 (en) 2020-08-17 2023-02-07 Hewlett Packard Enterprise Development Lp System and method for facilitating hybrid hardware-managed and software-managed cache coherency for distributed computing
TWI766387B (zh) * 2020-10-07 2022-06-01 智捷科技股份有限公司 一種具延遲感知負載平衡的反向代理方法和存儲裝置
US20210105207A1 (en) * 2020-11-18 2021-04-08 Intel Corporation Direct memory access (dma) engine with network interface capabilities
JP7164267B2 (ja) * 2020-12-07 2022-11-01 インテル・コーポレーション ヘテロジニアスコンピューティングのためのシステム、方法及び装置
CN113014631A (zh) * 2021-02-19 2021-06-22 浙江曲速科技有限公司 基于Hlink的设备缓存推送系统及方法
US20220292026A1 (en) * 2021-03-12 2022-09-15 Micron Technology, Inc. Virtual addresses for a memory system
US20220292027A1 (en) * 2021-03-12 2022-09-15 Micron Technology, Inc. Shared virtual address spaces
CN112948149A (zh) * 2021-03-29 2021-06-11 江苏为是科技有限公司 一种远端内存共享方法、装置、电子设备及存储介质
WO2022261325A2 (en) * 2021-06-09 2022-12-15 Enfabrica Corporation Transparent remote memory access over network protocol
US11934279B2 (en) * 2021-10-27 2024-03-19 Dell Products L.P. Sequential file restore performance using filesystem redirection
WO2024073864A1 (en) * 2022-10-02 2024-04-11 Intel Corporation Distributed address translation services

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4004A (en) * 1845-04-16 Wooden bbidge
IT1228728B (it) 1989-03-15 1991-07-03 Bull Hn Information Syst Sistema multiprocessore con replicazione di dati globali e due livelli di unita' di traduzione indirizzi.
GB2239724B (en) * 1990-01-05 1993-11-24 Sun Microsystems Inc Apparatus for maintaining consistency in a multi-processor computer system using virtual caching
EP0447145B1 (en) 1990-03-12 2000-07-12 Hewlett-Packard Company User scheduled direct memory access using virtual addresses
US5450542A (en) * 1993-11-30 1995-09-12 Vlsi Technology, Inc. Bus interface with graphics and system paths for an integrated memory system
JP3889044B2 (ja) * 1995-05-05 2007-03-07 シリコン、グラフィクス、インコーポレイテッド 不均一メモリ・アクセス(numa)システムにおけるページ移動
US6408386B1 (en) 1995-06-07 2002-06-18 Intel Corporation Method and apparatus for providing event handling functionality in a computer system
US5897664A (en) * 1996-07-01 1999-04-27 Sun Microsystems, Inc. Multiprocessor system having mapping table in each node to map global physical addresses to local physical addresses of page copies
US5953741A (en) 1996-11-27 1999-09-14 Vlsi Technology, Inc. Stack cache for stack-based processor and method thereof
US5860116A (en) * 1996-12-11 1999-01-12 Ncr Corporation Memory page location control for multiple memory-multiple processor system
US6249853B1 (en) 1997-06-25 2001-06-19 Micron Electronics, Inc. GART and PTES defined by configuration registers
US5914730A (en) * 1997-09-09 1999-06-22 Compaq Computer Corp. System and method for invalidating and updating individual GART table entries for accelerated graphics port transaction requests
EP1044411B1 (en) * 1997-12-30 2003-05-02 Micron Technology, Inc. Computer with accelerated graphics port and multiple memory controllers and method of manufacture of said controllers
US6252612B1 (en) 1997-12-30 2001-06-26 Micron Electronics, Inc. Accelerated graphics port for multiple memory controller computer system
US7007126B2 (en) * 1998-02-13 2006-02-28 Intel Corporation Accessing a primary bus messaging unit from a secondary bus through a PCI bridge
US6317706B1 (en) 1998-03-31 2001-11-13 Sony Corporation Simulation development tool for an embedded system
US6362826B1 (en) * 1999-01-15 2002-03-26 Intel Corporation Method and apparatus for implementing dynamic display memory
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6412057B1 (en) 1999-02-08 2002-06-25 Kabushiki Kaisha Toshiba Microprocessor with virtual-to-physical address translation using flags
US6766424B1 (en) * 1999-02-09 2004-07-20 Hewlett-Packard Development Company, L.P. Computer architecture with dynamic sub-page placement
US6282601B1 (en) 1999-03-31 2001-08-28 International Business Machines Corporation Multiprocessor data processing system and method of interrupt handling that facilitate identification of a processor requesting a system management interrupt
US6651163B1 (en) 2000-03-08 2003-11-18 Advanced Micro Devices, Inc. Exception handling with reduced overhead in a multithreaded multiprocessing system
US6604187B1 (en) * 2000-06-19 2003-08-05 Advanced Micro Devices, Inc. Providing global translations with address space numbers
US6925547B2 (en) 2000-12-14 2005-08-02 Silicon Graphics, Inc. Remote address translation in a multiprocessor system
US6658538B2 (en) * 2001-06-21 2003-12-02 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system having a page table including node-specific data storage and coherency control
US6907519B2 (en) 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
JP4128467B2 (ja) * 2002-02-25 2008-07-30 株式会社リコー 画像形成装置及びメモリマップ方法
JP4263919B2 (ja) * 2002-02-25 2009-05-13 株式会社リコー 画像形成装置及びメモリ管理方法
US6891543B2 (en) * 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US6922766B2 (en) * 2002-09-04 2005-07-26 Cray Inc. Remote translation mechanism for a multi-node system
US7047320B2 (en) * 2003-01-09 2006-05-16 International Business Machines Corporation Data processing system providing hardware acceleration of input/output (I/O) communication
US8719819B2 (en) 2005-06-30 2014-05-06 Intel Corporation Mechanism for instruction set based thread execution on a plurality of instruction sequencers
US8607235B2 (en) 2004-12-30 2013-12-10 Intel Corporation Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
US7516449B2 (en) 2005-01-04 2009-04-07 International Business Machines Corporation Run-time type conversion
US7743233B2 (en) 2005-04-05 2010-06-22 Intel Corporation Sequencer address management
US7831780B2 (en) * 2005-06-24 2010-11-09 Nvidia Corporation Operating system supplemental disk caching system and method
US20070005927A1 (en) 2005-06-30 2007-01-04 Khosravi Hormuzd M Systems and methods for remote triggering of page faults
US7793067B2 (en) * 2005-08-12 2010-09-07 Globalfoundries Inc. Translation data prefetch in an IOMMU
US8914618B2 (en) * 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
US7814279B2 (en) * 2006-03-23 2010-10-12 International Business Machines Corporation Low-cost cache coherency for accelerators
JP2007304747A (ja) * 2006-05-10 2007-11-22 Nec Corp 計算機システム及びメモリアクセス方法
US7487341B2 (en) 2006-06-29 2009-02-03 Intel Corporation Handling address translations and exceptions of a heterogeneous resource of a processor using another processor resource
US7490191B2 (en) 2006-09-22 2009-02-10 Intel Corporation Sharing information between guests in a virtual machine environment
US7506084B2 (en) * 2006-10-17 2009-03-17 International Business Machines Corporation Method for communicating with an I/O adapter using cached address translations
JP4304676B2 (ja) * 2006-10-31 2009-07-29 日本電気株式会社 データ転送装置、データ転送方法、及びコンピュータ装置
US8205064B2 (en) * 2007-05-11 2012-06-19 Advanced Micro Devices, Inc. Latency hiding for a memory management unit page table lookup
US8521919B2 (en) * 2009-06-30 2013-08-27 International Business Machines Corporation Direct memory access in a computing environment

Also Published As

Publication number Publication date
JP2015135696A (ja) 2015-07-27
CN104123242B (zh) 2017-08-08
US9003164B2 (en) 2015-04-07
US8719547B2 (en) 2014-05-06
JP2013254524A (ja) 2013-12-19
JP5911985B2 (ja) 2016-04-27
US20140208042A1 (en) 2014-07-24
US20110072234A1 (en) 2011-03-24
CN102023932B (zh) 2014-08-27
JP2011065650A (ja) 2011-03-31
TW201120643A (en) 2011-06-16
CN102023932A (zh) 2011-04-20
CN104123242A (zh) 2014-10-29
DE102010035603A1 (de) 2011-04-07
TWI470435B (zh) 2015-01-21

Similar Documents

Publication Publication Date Title
BRPI1003466A2 (pt) Método, dispositivo e sistema de suporte de hardware para o compartilhamento de memória virtual entre memória física local e remota
US10133677B2 (en) Opportunistic migration of memory pages in a unified virtual memory system
Caulfield et al. Providing safe, user space access to fast, solid state disks
US9798487B2 (en) Migrating pages of different sizes between heterogeneous processors
US6075938A (en) Virtual machine monitors for scalable multiprocessors
US9767036B2 (en) Page state directory for managing unified virtual memory
JP4772795B2 (ja) 大アドレス容量に及ぶ変換テーブルを用いた、アドレス変換の性能向上
US9792220B2 (en) Microcontroller for memory management unit
US9430400B2 (en) Migration directives in a unified virtual memory system architecture
US20170235491A1 (en) Migration of peer-mapped memory pages
Hajinazar et al. The virtual block interface: A flexible alternative to the conventional virtual memory framework
US11741015B2 (en) Fault buffer for tracking page faults in unified virtual memory system

Legal Events

Date Code Title Description
B03A Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette]
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE A 9A ANUIDADE.

B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]

Free format text: EM VIRTUDE DO ARQUIVAMENTO PUBLICADO NA RPI 2531 DE 09-07-2019 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDO O ARQUIVAMENTO DO PEDIDO DE PATENTE, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.