BR112015001988B1 - Método e equipamento para mapeamento de endereços virtuais para endereços físicos, e memória legível por computador - Google Patents

Método e equipamento para mapeamento de endereços virtuais para endereços físicos, e memória legível por computador Download PDF

Info

Publication number
BR112015001988B1
BR112015001988B1 BR112015001988-9A BR112015001988A BR112015001988B1 BR 112015001988 B1 BR112015001988 B1 BR 112015001988B1 BR 112015001988 A BR112015001988 A BR 112015001988A BR 112015001988 B1 BR112015001988 B1 BR 112015001988B1
Authority
BR
Brazil
Prior art keywords
memory
processing unit
chunk
page table
address
Prior art date
Application number
BR112015001988-9A
Other languages
English (en)
Other versions
BR112015001988A2 (pt
Inventor
Colin Christopher Sharp
Thomas Andrew Sartorius
Original Assignee
Qualcomm Incorporated
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 Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112015001988A2 publication Critical patent/BR112015001988A2/pt
Publication of BR112015001988B1 publication Critical patent/BR112015001988B1/pt

Links

Images

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/1009Address translation using page tables, e.g. page table structures
    • 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/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

MÚLTIPLOS CONJUNTOS DE CAMPOS DE ATRIBUTO DENTRO DE UMA ÚNICA ENTRADA DE TABELA DE PÁGINA. Uma primeira unidade de processamento e uma segunda unidade de processamento podem acessar uma memória de sistema que armazena uma tabela de página comum que é comum à primeira unidade de processamento e a segunda unidade de processamento. A tabela de página comum pode armazenar endereços de memória virtual para o mapeamento de endereços de memória física para pedaços de memória acessados por uma tarefa de um aplicativo. Uma entrada de página, dentro da tabela de página comum, pode incluir um primeiro conjunto de bits de atributo que define a acessibilidade do pedaço de memória pela primeira unidade de processamento, um segundo conjunto de bits de atributo que define a acessibilidade do mesmo pedaço de memória pela segunda unidade de processamento, e bits de endereço físico que definem um endereço físico do pedaço de memória.

Description

Campo Técnico
[0001] A presente divulgação geralmente refere-se à computação e mais particularmente refere-se às técnicas para mapear um espaço de endereço de memória virtual para um espaço de endereço de memória física.
Fundamentos
[0002] Sistemas de computação típicos incluem várias unidades de processamento, tais como unidades de processamento centrais (CPUs) e unidades de processamento gráfico (GPUs), que lê a partir de e escreve na memória física. As várias unidades de processamento de um dispositivo podem implementar esquemas de endereçamento virtual tal como aplicativos que estão sendo executados pelos clientes podem ser atribuído um espaço de endereço virtual contíguo, sem ter que reservar um espaço contíguo de memória física. Cada unidade de processamento tem normalmente uma unidade de gerenciamento de memória (MMU) para traduzir os endereços de memória virtual para endereços físicos na memória física. Para executar o endereço virtual necessário para o mapeamento de endereços físicos, cada MMU mantém uma tabela de página separada na memória do sistema, e cada uma destas tabelas de páginas separadas podem ter vários megabytes de tamanho.
Sumário
[0003] Em geral, as técnicas descritas nesta divulgação são relacionadas aos dispositivos de computação que implementam o mapeamento do endereço virtual para endereço físico. De acordo com as técnicas desta divulgação, duas ou mais unidades de processamento podem compartilhar a tabela de página comum para mapeamento de endereços virtuais para endereços físicos. As entradas de tabela de página da tabela de página comum podem incluir vários conjuntos de campos de atributo, como um conjunto de atributo para a primeira unidade de processamento, um conjunto de atributo para a segunda unidade de processamento, assim como outros conjuntos de atributo. Usando os vários conjuntos de campos de atributo, os atributos para as duas ou mais unidades de processamento podem ser gerenciados individualmente. Por exemplo, as técnicas descritas nesta divulgação podem permitir o gerenciamento individual do acesso de leitura/escrita da primeira e segunda unidades de processamento, tal que o acesso de leitura/escrita para uma unidade de processamento pode ser diferente do acesso de leitura/escrita para a segunda unidade de processamento.
[0004] De acordo com um exemplo, um equipamento inclui uma primeira unidade de processamento, uma segunda unidade de processamento, e uma memória. A memória armazena uma tabela de página comum que é comum à primeira unidade de processamento e à segunda unidade de processamento e armazena endereços de memória virtual para o mapeamento de endereços de memória física para pedaços de memória acessados por uma tarefa. A memória também armazena uma entrada de página, dentro da tabela de página comum, que a primeira unidade de processamento e a segunda unidade de processamento usam para acessar um pedaço de memória dos pedaços de memória, em que a entrada de página compreende um primeiro conjunto de bits de atributo que define a acessibilidade do pedaço de memória pela primeira unidade de processamento, um segundo conjunto de bits de atributo que define a acessibilidade do mesmo pedaço de memória pela segunda unidade de processamento, e bits de endereço físico que definem um endereço físico do pedaço de memória.
[0005] De acordo com outro exemplo, um método inclui a traduzir, por uma primeira unidade de processamento, de um endereço de memória virtual para um endereço de memória física usando a tabela de página comum armazenada em uma memória; acesso, pela primeira unidade de processamento, a um pedaço de memória identificado pelo endereço de memória física; traduzir, por uma segunda unidade de processamento, o endereço de memória virtual para o endereço de memória física usando a tabela de página comum armazenada na memória; e, acessar, pela segunda unidade de processamento, o pedaço de memória identificado pelo endereço de memória física. A tabela de página comum é comum à primeira unidade de processamento e a segunda unidade de processamento e armazena endereços de memória virtual para o mapeamento de endereços de memória física para pedaços de memória acessados por uma tarefa. A tabela de página comum compreende uma entrada de página que a primeira unidade de processamento e a segunda unidade de processamento usam para acessar o pedaço de memória, e a entrada de página compreende um primeiro conjunto de bits de atributo que define a acessibilidade do pedaço de memória pela primeira unidade de processamento, um segundo conjunto de bits de atributo que define a acessibilidade do mesmo pedaço de memória pela segunda unidade de processamento, e bits de endereço físico que definem um endereço físico do pedaço de memória.
[0006] De acordo com outro exemplo, um equipamento inclui primeiro meio de processamento, segundo meio de processamento, e uma memória. O primeiro meio de processamento compreende meios para traduzir um endereço de memória virtual para um endereço de memória física usando a tabela de página comum armazenada na memória e meios para acessar um pedaço de memória identificado pelo endereço de memória física, e o segundo meio de processamento compreende meios para traduzir o endereço de memória virtual para o endereço de memória física usando a tabela de página comum armazenada na memória e meios para acessar o pedaço de memória identificado pelo endereço de memória física. A tabela de página comum é comum ao primeiro meio de processamento e ao segundo meio de processamento e armazena endereços de memória virtual para o mapeamento de endereços de memória física para pedaços de memória acessados por uma tarefa. A tabela de página comum compreende uma entrada de página que o primeiro meio de processamento e o segundo meio de processamento usam para acessar o pedaço de memória, e a entrada de página compreende um primeiro conjunto de bits de atributo que define a acessibilidade do pedaço de memória pelo primeiro meio de processamento, um segundo conjunto de bits de atributo que define a acessibilidade do mesmo pedaço de memória pelo segundo meio de processamento, e bits de endereço físico que definem um endereço físico do pedaço de memória.
[0007] De acordo com outro exemplo, uma mídia de armazenamento legível por computador armazena instruções que quando executadas fazem com que a primeira unidade de processamento e a segunda unidade de processamento traduzam, pela primeira unidade de processamento, um endereço de memória virtual para um endereço de memória física usando a tabela de página comum armazenada em uma memória; acessem, pela primeira unidade de processamento, um pedaço de memória identificado pelo endereço de memória física; traduzam, pela segunda unidade de processamento, o endereço de memória virtual para o endereço de memória física usando a tabela de página comum armazenada na memória; e acessem, pela segunda unidade de processamento, o pedaço de memória identificado pelo endereço de memória física. A tabela de página comum é comum à primeira unidade de processamento e à segunda unidade de processamento e armazena endereços de memória virtual para o mapeamento de endereços de memória física para pedaços de memória acessados por uma tarefa. A tabela de página comum compreende uma entrada de página que a primeira unidade de processamento e a segunda unidade de processamento usam para acessar o pedaço de memória. A entrada de página compreende um primeiro conjunto de bits de atributo que define a acessibilidade do pedaço de memória pela primeira unidade de processamento, um segundo conjunto de bits de atributo que define a acessibilidade do mesmo pedaço de memória pela segunda unidade de processamento, e bits de endereço físico que definem um endereço físico do pedaço de memória.
Breve Descrição Dos Desenhos
[0008] FIG. 1 mostra um exemplo de um dispositivo de computação configurado para implementar o endereço de memória virtual para as técnicas de mapeamento de endereço de memória física descritas nesta divulgação.
[0009] FIG. 2 mostra outro exemplo de um dispositivo de computação configurado para implementar o endereço de memória virtual para as técnicas de mapeamento de endereço de memória física descritas nesta divulgação.
[0010] FIG. 3 mostra um diagrama conceitual de uma tabela de página comum com vários conjuntos de campos de atributo dentro de uma única entrada de tabela de página de acordo com as técnicas descritas nesta divulgação.
[0011] FIG. 4 mostra um diagrama de fluxo que ilustra o endereço de memória virtual para as técnicas de mapeamento de endereço de memória física descritas nesta divulgação.
Descrição
[0012] Em geral, as técnicas descritas nesta divulgação são relacionadas aos dispositivos de computação que implementam o mapeamento do endereço virtual para endereço físico, também referidos nesta divulgação como mapeamento virtual para físico. Mais particularmente, as técnicas descritas nesta divulgação são direcionadas a uma tabela de página comum que pode ser compartilhada por duas ou mais unidades de processamento. As entradas de tabela de página da tabela de página comum podem incluir vários conjuntos de campos de atributo, como um conjunto de atributo para a primeira unidade de processamento, um conjunto de atributo para a segunda unidade de processamento, assim como outros conjuntos de atributo. Usando os vários conjuntos de campos de atributo, os atributos para as duas ou mais unidades de processamento podem ser gerenciados individualmente. Por exemplo, o acesso de leitura/escrita para uma unidade de processamento pode ser diferente do acesso de leitura/escrita para uma segunda unidade de processamento.
[0013] Unidades de processamento como unidades de processamento centrais (CPUs) e unidades de processamento de gráficos (GPUs) necessitam do acesso (ou seja, ler dados a partir de e escrever dados na) a uma memória física. Para ler ou escrever dados, a unidade de processamento acessa o local dentro da memória física onde os dados devem ser lidos ou escritos com um endereço físico para o local dentro da memória. Pode ser difícil, no entanto, para a unidade de processamento gerenciar os endereços físicos para todos os pedaços de memória (ou seja, os locais da memória física onde os dados podem ser escritos ou lidos). Para superar essa dificuldade, a unidade de processamento pode usar o endereçamento virtual. No endereçamento virtual, aos aplicativos em execução na unidade de processamento (ou seja, clientes) são atribuídos endereços de memória virtual contíguos. Um aplicativo pode compreender várias tarefas, com diferentes tarefas em execução em diferentes unidades de processamento. Cada uma das unidades de processamento inclui respectivas unidades de gerenciamento de memória (MMUs). A MMU de cada uma das unidades de processamento é encarregada de determinar os endereços de memória reais, também referidos como endereços de memória física, a partir dos endereços de memória virtual.
[0014] Por exemplo, a MMU inclui um cache referido como um buffer de tradução à parte (TLB). O TLB armazena um mapeamento virtual para físico para pedaços de memória selecionados, como pedaços de memória recentemente acessados ou pedaços de memória frequentemente acessados. Para acessar um pedaço de memória, a unidade de processamento fornece o endereço de memória virtual para aquele pedaço de memória para a MMU. A MMU, por sua vez, acessa o TLB para identificar o endereço da memória física para aquele pedaço de memória. Quando o mapeamento está disponível no TLB (referido como um acerto do TLB), a MMU então acessa o pedaço de memória usando um endereço da memória física. Alternativamente, a MMU fornece o endereço da memória física para uma unidade ou módulo diferente da unidade de processamento que então acessa o pedaço de memória usando um endereço da memória física.
[0015] Em alguns casos, o TLB pode não incluir o mapeamento para um endereço de memória virtual (referido como uma falha do TLB). Por exemplo, a unidade de processamento pode precisar acessar um pedaço de memória cujo endereço físico não está incluído nas entradas de página armazenadas pelo TLB porque aquele pedaço de memória não é um pedaço de memória recentemente acessado ou frequentemente acessado. Quando isso ocorre, a unidade de processamento acessa uma tabela de página armazenada na memória do sistema.
[0016] Uma tabela de página é similar ao TLB pelo fato de que ambos armazenam entradas de página que mapeiam os endereços de memória virtual para endereços de memória física. Uma entrada de tabela de página, na tabela de página ou no TLB, mapeia um endereço de memória virtual para um endereço da memória física. A tabela de página, no entanto, é armazenada na memória do sistema em contraste ao TLB que é armazenado localmente dentro da MMU da unidade de processamento. Também, porque a tabela de página armazena um mapeamento de endereço virtual para físico inteiro para a unidade de processamento ao invés de um número limitado de entradas de página como um TLB, o tamanho da tabela de página é geralmente muito maior do que o tamanho do TLB. Por exemplo, o tamanho da tabela de página pode estar na faixa de megabytes.
[0017] Em algumas técnicas, a memória do sistema armazena tabelas de página correspondentes para cada uma das unidades de processamento. Por exemplo, a memória do sistema armazena a tabela de página para a CPU e armazena outra tabela de página separada para a GPU. Em alguns casos, no entanto, estas tabelas de página diferentes incluem entradas de tabela de página idênticas. Assim, pode ser possível que várias entradas da tabela de página em uma tabela de página de CPU sejam idênticas às entradas da tabela de página em uma tabela de página da GPU. Por exemplo, a entrada de tabela de página na tabela de página da CPU pode mapear um endereço de memória virtual para um endereço de memória física, e a entrada de tabela de página na tabela de página da GPU pode mapear o mesmo endereço de memória virtual para o mesmo endereço da memória física.
[0018] Como um exemplo, um sistema operacional em execução na CPU pode ser encarregado de atribuir endereços de memória virtual contíguos a um aplicativo. O aplicativo pode incluir uma pluralidade de funções ou tarefas, com alguns trabalhos em execução na CPU e alguns trabalhos de execução na GPU. O sistema operacional também pode armazenar o mapeamento entre os endereços de memória virtual e endereços de memória física na tabela de página. Como o sistema operacional tem a tarefa de atribuir endereços de memória virtual e o mapeamento desses endereços de memória virtual para os endereços físicos, tanto para a CPU quanto para a GPU, o sistema operacional pode criar uma tabela de página comum que armazena o mapeamento virtual para físico para ambas CPU e GPU.
[0019] Pode haver benefícios no compartilhamento da CPU e GPU de tal tabela de páginas comum. Por exemplo, em vez da memória do sistema de armazenar as entradas da tabela de páginas duplicadas, a memória do sistema pode armazenar uma única entrada de página para as entradas da tabela de páginas idênticas na tabela de página da CPU e tabela de página da GPU, o que resulta em poupança de memória. Além disso, porque há uma entrada de página para essas entradas de tabela de página idênticas, pode ser mais computacionalmente eficiente atualizar uma entrada de tabela página única, em vez de duas entradas de tabela de página idênticas.
[0020] Algumas técnicas anteriores foram desenvolvidas para alcançar o compartilhamento da tabela de página. Nestas técnicas, a MMU da CPU e a MMU da GPU cada armazena ponteiros que indicam a localização da tabela de página comum na memória de sistema. Quando a CPU e GPU acessam um pedaço de memória, suas respectivas MMUs usam seus ponteiros para recuperar o endereço de memória física a partir da tabela de página compartilhada. No entanto, estas técnicas para compartilhar uma tabela de página podem, às vezes, sofrer por não identificar as diferentes capacidades de acesso das diferentes unidades de processamento para os pedaços de memória.
[0021] Diferentes capacidades de acesso podem ser associadas com as diferentes unidades de processamento. Por exemplo, uma página de entrada é convencionalmente de 32 bits. Os primeiros 12 bits são reservados como bits de atributo, e os 20 bits restantes identificam o endereço de memória física. Estes bits de atributo identificam as capacidades de acesso da unidade de processamento. Como um exemplo, alguns dos pedaços de memória podem ser designados como sendo legíveis e graváveis, e outros pedaços de memória podem ser designados como sendo apenas legíveis. Um ou mais bits dos bits de atributo impõe esta limitação de acessibilidade. Há outros exemplos de bits nos bits de atributo, além dos bits que designam um pedaço de memória como sendo legível e gravável ou apenas legível. Por exemplo, um ou mais outros bits dos bits de atributo podem indicar que os dados dentro de certos pedaços de memória também devem ser armazenados em uma memória cache, tal como um cache L2 da unidade de processamento. Desta forma, os bits de atributo da entrada de página podem descrever o pedaço de memória abordado pelos bits de endereço na entrada de página.
[0022] Em alguns casos, os bits de atributo para uma unidade de processamento podem ter de ser diferentes dos bits de atributo para outra unidade de processamento. Por exemplo, o sistema operacional em execução na CPU pode designar alguns pedaços como sendo graváveis e legíveis pela CPU, e designar esses mesmos pedaços como sendo legíveis somente pela GPU. Por exemplo, no exemplo acima descrito, onde a CPU e a GPU incluem as suas próprias respectivas tabelas de páginas, o mapeamento do endereço virtual para endereço físico pode ser idêntico em cada uma das tabelas de páginas, mas os bits de atributo podem não ser idênticos. No outro exemplo descrito acima, onde a CPU e GPU compartilham uma tabela de página comum, os bits de atributo podem ser compartilhados tanto pela CPU quanto pela GPU. Isso força o sistema operacional a definir bits de atributo, quer para o CPU ou GPU, mas não ambas.
[0023] Por exemplo, os bits de atributo, no exemplo acima, são bits de atributo, que definem a acessibilidade da CPU, mas não necessariamente a acessibilidade da GPU. Isso pode potencialmente levar à má gestão de um pedaço. Por exemplo, pode ser desejável limitar a acessibilidade de um pedaço de memória para ser apenas legível por uma GPU. No entanto, porque este pedaço é legível e gravável pela CPU e os bits de atributo não diferenciam entre CPU e GPU, a GPU pode inadvertidamente escrever para o pedaço de memória, em exemplos onde os ponteiros são usados em uma tabela de páginas comum.
[0024] As técnicas da invenção são direcionadas para designar bits de atributo especificamente para diferentes unidades de processamento. Por exemplo, os bits de atributo da GPU definem a acessibilidade para a GPU e os bits de atributo CPU definir a acessibilidade para o CPU. Desta forma, diferentes unidades de processamento podem compartilhar uma tabela de página comum, e os bits de atributo para a GPU descrever a acessibilidade de um pedaço de memória para a GPU e os bits de atributo para o CPU descrever a acessibilidade do pedaço de memória para a CPU. Como os bits de atributo são especificamente designados para a CPU e GPU, a probabilidade de a GPU incorretamente escrevendo para um pedaço de memória é reduzido, enquanto a poupança de memória pode ser alcançada por não exigir diferentes tabelas de páginas para a CPU e GPU.
[0025] Pode haver várias técnicas para designar os bits de atributo para as diferentes unidades de processamento. Por exemplo, tal como descrito acima, tipicamente, 12 dos 32 bits de entrada de uma página são reservados para bits de atributo. O valor para muitos destes 12 bits pode ser idêntico tanto para a CPU quanto para a GPU. Dos bits restantes, cujos valores podem ser diferentes para a CPU e GPU, o sistema operacional pode designar especificamente quais bits são para a CPU e quais bits são para a GPU. Por exemplo, os dois primeiros bits dos 12 bits de atributo podem ser reservados para indicar se o pedaço de memória é gravável, legível ou gravável e legível pela CPU, os próximos dois bits dos 12 bits de atributo podem ser reservados para indicar se o pedaço de memória é gravável, legível ou gravável e legível pela GPU, e os oito bits restantes podem ser comuns a ambas GPU e CPU.
[0026] Como outro exemplo, a entrada principal pode incluir mais do que 32 bits (por exemplo, 40 bits). Neste exemplo, os últimos 20 bits podem ser reservados para o mapeamento de endereços, e os 20 primeiros bits podem ser reservados como bits de atributo. Os 10 primeiros bits destes 20 bits podem ser reservados para a CPU, e os 10 últimos bits destes 20 bits podem ser reservados para a GPU. Como alternativa, os primeiros seis bits podem ser reservados para a CPU. Os próximos seis bits podem ser reservados para a GPU, e os próximos 8 bits podem ser compartilhados pela CPU e GPU. Estas atribuições de bits destinam-se a ser exemplos. As técnicas da presente divulgação não devem ser consideradas como limitadas aos exemplos acima. Embora para fins de explicação algumas das técnicas da presente invenção sejam descritas com referência a uma CPU e GPU, deve-se entender que as técnicas da presente divulgação também pode ser implementadas com outros tipos de unidades de processamento.
[0027] A FIG. 1 mostra um exemplo de dispositivo de computação, o dispositivo de computação 100, que pode implementar as técnicas desta divulgação. Exemplos de dispositivo de computação 100 incluem, mas não estão limitados a, telefones móveis sem fio, assistentes digitais pessoais (PDAs), consoles de vídeo games, unidades de jogos portáteis, unidades de conferência de vídeo móveis, computadores portáteis, computadores de mesa, decodificadores de televisão, reprodutores de mídia digitais, smartphones, tablets, câmeras e afins. Embora não restrito apenas aos dispositivos com recursos limitados, as técnicas desta divulgação podem ser particularmente benéficas para dispositivos de recursos limitados, incluindo dispositivos alimentados por bateria. As técnicas desta divulgação podem, por exemplo, melhorar o desempenho global do dispositivo de forma mais eficiente usando a memória do dispositivo limitada e pode reduzir a complexidade computacional, mantendo menos tabelas de páginas, o que pode, por sua vez, melhorar a capacidade de resposta de um dispositivo, bem como reduzir o consumo de energia.
[0028] Dispositivo de computação 100 inclui uma primeira unidade de processamento 110, uma segunda unidade de processamento 120, e uma memória do sistema 130. A primeira unidade de processamento 110 inclui a MMU 112, e segunda unidade de processamento 120 inclui MMU 122. A MMU 110 pode incluir o TLB 114, e MMU 122 pode incluir o TLB 124. A primeira unidade de processamento 110 pode, por exemplo, ser uma CPU do dispositivo 100. A segunda unidade de processamento 120 pode, por exemplo, ser uma GPU operável para produzir dados gráficos para apresentação em um monitor. A primeira unidade de processamento 110 e segunda unidade de processamento 120 podem adicionalmente representar outros tipos de unidades de processamento como unidades de processamento para vários dispositivos periféricos incluindo controladores de monitor, dispositivos de rede, ou qualquer tipo de núcleo de processamento de sinal digital (DSP) que alivia o processamento de sinal de um processador tal como uma CPU ou GPU. Exemplos da primeira unidade de processamento 110 e segunda unidade de processamento 120 podem incluir, mas não estão limitadas a, um processador de sinal digital (DSP), um microprocessador para fins gerais, circuito integrado de aplicação específica (ASIC), arranjo lógico programável em campo (FPGA), ou outro circuito lógico integrado discreto ou equivalente. Apesar das técnicas desta descrição serem geralmente descritas com referência a duas unidades de processamento, as técnicas podem ser implementadas com mais do que duas unidades de processamento.
[0029] Memória do sistema 130 pode ser um exemplo de uma mídia de armazenamento legível por computador. A memória do sistema 130 pode, por exemplo, ser um tipo de memória de acesso aleatório (RAM) como RAM dinâmica, RAM estática, RAM de tiristor, RAM de capacitor zero, RAM de transistor gêmeo, ou algum outro tipo de memória volátil. A memória do sistema 130 também pode ser uma memória não volátil, como uma memória flash ou outro tipo de RAM não volátil. A memória do sistema 130 pode armazenar instruções que fazem com que a unidade de processamento 110 e a unidade de processamento 120 realizem as funções atribuídas a cada uma nesta divulgação. Deste modo, a memória do sistema 130 pode ser considerada como uma mídia de armazenamento legível por computador compreendendo instruções que fazem com que um ou mais processadores, ex., unidade de processamento 110 e unidade de processamento 120, realizem várias funções. Em alguns exemplos, no entanto, tais instruções podem ser armazenadas em uma memória (não mostrada na FIG. 1) que não a memória do sistema 130.
[0030] A primeira unidade de processamento 110 e segunda unidade de processamento 120 são configuradas para ler dados da e escrever dados na memória do sistema 130. Para ler ou escrever os dados, a primeira unidade de processamento 110 e segunda unidade de processamento 120 são configuradas para acessar locais físicos específicos na memória do sistema 130. Estes locais específicos podem, por exemplo, ser pedaços de 4KB, e cada pedaço pode ter seu próprio endereço físico único. Como introduzido acima, no entanto, a primeira unidade de processamento 110 e segunda unidade de processamento 120 podem implementar o endereçamento virtual, como os aplicativos em execução na primeira unidade de processamento 110 ou segunda unidade de processamento 120 são atribuídos endereços de memória virtual contíguos. Os endereços de memória física correspondentes a estes endereços de memória virtual contíguos podem, no entanto, ser fragmentados e não contíguos. Assim, a unidade de processamento 110 e unidade de processamento 120 podem processar dados usando estes endereços de memória virtual contíguos ao invés dos endereços de memória física não contíguos. Quando a unidade de processamento 110 e unidade de processamento 120 precisam acessar (isto é, ler de ou escrever na) a memória do sistema 130, no entanto, estes endereços de memória virtual precisam ser traduzidos para endereços de memória física.
[0031] A MMU 112 é configurada para mapear endereços de memória virtual para endereços de memória física para a primeira unidade de processamento 110, e MMU 122 é configurada para mapear endereços de memória virtual para endereços de memória física para a segunda unidade de processamento 120. Uma tabela de página completa com um conjunto inteiro de entradas de página é armazenada na tabela de página comum 132. Cada TLB 114 e TLB 124 armazena um subconjunto de entradas de página armazenado na tabela de página comum 132. O subconjunto pode, por exemplo, ser entradas de página recentemente acessadas, entradas de página frequentemente acessadas, ou entradas de página selecionadas com base em algum outro critério. O subconjunto de entradas de página armazenado no TLB 114 pode ser diferente do subconjunto de entradas de página armazenado no TLB 124. Por exemplo, as entradas da tabela de página que são recentemente acessadas ou frequentemente acessadas pela primeira unidade de processamento 110 através da MMU 112 podem ser diferentes das entradas da tabela de página que são recentemente ou frequentemente acessadas pela segunda unidade de processamento 120 através da MMU 122. Assim, TLB 114 pode armazenar um subconjunto diferente de entradas de tabela de página do TLB 124.
[0032] Se, por exemplo, primeira unidade de processamento 110 precisa traduzir um endereço de memória virtual para um endereço de memória física, então a MMU 112 pode usar TLB 114 para determinar o endereço de memória física que corresponde a um endereço de memória virtual particular quando TLB 114 armazena a entrada de página para aquele endereço de memória virtual. Usando um determinado endereço de memória física, a unidade de processamento 110 pode ler de ou escrever em um local físico particular da memória do sistema 130. Da mesma forma, se a segunda unidade de processamento 120 precisa traduzir um endereço de memória virtual para um endereço de memória física, então a MMU 122 pode usar TLB 124 para determinar o endereço de memória física que corresponde a um endereço de memória virtual particular quando TLB 124 armazena a entrada de página para aquele endereço de memória virtual. Usando a determinado endereço de memória física, a unidade de processamento 120 pode ler de ou escrever na memória do sistema 130.
[0033] Como introduzido acima, os TLB 114 e TLB 124 podem ser caches que armazenam os mapeamentos virtual para físico para somente um subconjunto de endereços de memória virtual. O TLB 114, portanto, pode não armazenar o todo o mapeamento virtual para físico para a unidade de processamento 110, e da mesma forma, o TLB 124 pode não armazenar todo o mapeamento virtual para físico para a unidade de processamento 120. Em alguns casos, a MMU 112 pode precisar determinar um endereço da memória física correspondente para um endereço de memória virtual que não tem um mapeamento armazenado no TLB 114. Para determinar um mapeamento para um endereço de memória virtual não incluído no TLB 114, a primeira unidade de processamento 110 pode acessar a tabela de página comum 132 armazenada na memória do sistema 130. A tabela de página comum 132 inclui todo o mapeamento virtual para físico para a unidade de processamento 110, e portanto, pode ser muito maior do que o TLB 114 e TLB 124.
[0034] Como com a MMU 112, em alguns casos a MMU 122 pode precisar determinar um endereço da memória física correspondente para um endereço de memória virtual que não tem um mapeamento armazenado no TLB 124. Para determinar um mapeamento para um endereço de memória virtual não incluído no TLB 124, a segunda unidade de processamento 120 acessa a tabela de página comum 132 armazenada na memória do sistema 130. Desta maneira, a MMU 122 pode funcionar de uma maneira substancialmente similar à MMU 112. A tabela de página comum 132 inclui todo o mapeamento virtual para físico para a unidade de processamento 120 assim como para a unidade de processamento 110. Desta maneira, a primeira unidade de processamento 110 e segunda unidade de processamento 120 compartilham a mesma tabela de página (ou seja, tabela de página comum 132 no exemplo da FIG. 1). A tabela de página comum 132 compartilhada pela unidade de processamento 110 e unidade de processamento 120 pode ser menor do que o tamanho combinado das duas tabelas de página, se a MMU 112 e MMU 122 eram para manter tabelas de páginas separadas para a unidade de processamento 110 e unidade de processamento 120. A tabela de página comum 132 pode ser menor do que o tamanho combinado das duas tabelas de páginas separadas porque algumas das entradas da tabela de página da tabela de página comum 132 são compartilhadas por ambas MMU 112 e MMU 122.
[0035] A tabela de página comum 132 pode incluir uma pluralidade de entradas de página que mapeia um endereço de memória virtual para um endereço de memória física de um pedaço de memória. Um pedaço de memória pode ser uma porção de memória do sistema 130 que é individualmente acessível através de seu endereço de memória física. Cada entrada de página pode incluir um primeiro conjunto de bits de atributo e um segundo conjunto de bits de atributo. O primeiro conjunto de bits de atributo pode definir controles, como permissões e direitos de acesso,para a primeira unidade de processamento 110 enquanto o segundo conjunto de bits de atributo define controles para a segunda unidade de processamento 120. Cada entrada de página pode opcionalmente incluir um ou mais conjuntos adicionais de bits de atributo, como um conjunto de bits de atributo que define controles comuns para ambas as primeira unidade de processamento 110 e segunda unidade de processamento 120.
[0036] O primeiro conjunto de bits de atributo e o segundo conjunto de bits de atributo para entradas de página da tabela de página comum 132 podem possibilitar que a primeira unidade de processamento 110 e segunda unidade de processamento 120 tenham diferentes permissões e direitos de acesso ao compartilhar a tabela de página comum. Como um exemplo, o primeiro conjunto de bits de atributo pode ser definido tal que a primeira unidade de processamento 110 tenha ambos acesso de leitura e escrita a um pedaço de memória particular da memória do sistema 130, enquanto a segunda unidade de processamento 120 pode ter acesso somente leitura ao mesmo pedaço de memória particular. É claro que, outras configurações também são possíveis, como a segunda unidade de processamento 120 tendo ambos acessos de leitura e escrita enquanto a primeira unidade de processamento 110 tem acesso somente leitura ou uma da primeira unidade de processamento 110 e segunda unidade de processamento 120 tendo ambos acessos de leitura e escrita enquanto a outra não tem nem acesso de leitura nem de escrita.
[0037] A FIG. 2 mostra outro dispositivo de computação exemplar, o dispositivo de computação 200, que pode implementar as técnicas desta divulgação. Exemplos de dispositivo de computação 200 incluem, mas não são limitados a, telefones remotos móveis, assistentes digitais pessoais (PDAs), consoles de vídeo game, unidades de jogos portáteis, unidade de vídeo conferência móveis, computadores laptop, computadores de mesa, decodificadores de televisão, reprodutores de mídia digital, smartphones, tablets, e similares. O dispositivo de computação 200 inclui a primeira unidade de processamento 210, a segunda unidade de processamento 220, a terceira unidade de processamento 240, uma unidade de gestão de memória de entrada/saída (IOMMU) 222, e a memória do sistema 230. A primeira unidade de processamento 210 inclui a MMU 212. A segunda unidade de processamento 220 e terceira unidade de processamento 240 não tem cada uma MMU dedicada mas ao invés compartilham uma MMU comum (ou seja, IOMMU 222 na FIG. 2). A primeira unidade de processamento 210 pode, por exemplo, ser uma CPU do dispositivo 200. A segunda unidade de processamento 120 pode, por exemplo, ser uma GPU operável para produzir dados gráficos para apresentação em um monitor. A terceira unidade de processamento 240 pode, por exemplo, ser um terceiro tipo de unidade de processamento como a unidade de processamento para um dispositivo periférico. Exemplos da primeira unidade de processamento 210, segunda unidade de processamento 220, e terceira unidade de processamento 240 podem incluir, mas não são limitados a, um processador de sinal digital (DSP), um microprocessador de finalidade geral, circuito integrado de aplicação específica (ASIC), arranjo lógico programável em campo (FPGA), ou outro circuito lógico integrado ou discreto equivalente.
[0038] A memória do sistema 230 pode ser um exemplo de uma mídia de armazenamento legível por computador. A memória do sistema 230 pode, por exemplo, ser um tipo de memória de acesso aleatório (RAM) como RAM dinâmica, RAM estática, RAM de tiristor, RAM de capacitor zero, RAM de transistor gêmeo, ou algum outro tipo de memória volátil. A memória do sistema 230 também pode ser uma memória não volátil, como uma memória flash ou outro tipo de RAM não volátil. A memória do sistema 230 pode armazenar instruções que fazem com que a unidade de processamento 210 e unidade de processamento 220 realizem as funções atribuídas a cada uma nesta divulgação. Deste modo, a memória do sistema 230 pode ser considerada como uma mídia de armazenamento legível por computador compreendendo instruções que fazem com que um ou mais processadores, ex., unidade de processamento 210, unidade de processamento 220, e/ou unidade de processamento 240, realizem várias funções. Em alguns exemplos, no entanto, tal instrução pode ser armazenada em uma memória (não mostrada na FIG. 2) que não a memória do sistema 230.
[0039] A primeira unidade de processamento 210, segunda unidade de processamento 220, e terceira unidade de processamento 240 são configuradas para ler dados da e escrever dados na memória do sistema 230. Para ler ou escrever os dados, a primeira unidade de processamento 210, segunda unidade de processamento 220, e terceira unidade de processamento 240 são configuradas para acessar locais físicos específicos na memória do sistema 230. Estes locais específicos podem, por exemplo, ser pedaços de 4KB, e cada pedaço pode ter seu próprio endereço físico único. Como introduzido acima, no entanto, a primeira unidade de processamento 210, segunda unidade de processamento 220, e terceira unidade de processamento 240 podem implementar o endereçamento virtual, tal que às tarefas de aplicativos em execução na primeira unidade de processamento 210, segunda unidade de processamento 220, e/ou terceira unidade de processamento 240 são atribuídos endereços de memória virtual contíguos. Os endereços de memória física correspondentes a estes endereços de memória virtual contíguos podem, no entanto, ser fragmentados e não contíguos. Então, a unidade de processamento 210, unidade de processamento 220, e terceira unidade de processamento 240 podem processar dados usando estes endereços de memória virtual contíguos ao invés dos endereços de memória física não contíguos. Quando a unidade de processamento 210, unidade de processamento 220, e unidade de processamento 240 precisam acessar (ou seja, ler de ou escrever na) a memória do sistema 230, no entanto, estes endereços de memória virtual precisam ser traduzidos para endereços de memória física.
[0040] MMU 212 é configurada para mapear endereços de memória virtual para endereços de memória física para a primeira unidade de processamento 210. IOMMU 222 é configurada para mapear endereços de memória virtual para endereços de memória física para ambas a segunda unidade de processamento 220 e terceira unidade de processamento 230. Uma tabela de página completa com um conjunto inteiro de entradas de página é armazenada na tabela de página comum 232. Cada TLB 214 e TLB 224 armazenam um subconjunto das entradas de página armazenadas na tabela de página comum 232. O subconjunto pode, por exemplo, ser entradas de página recentemente acessadas, entradas de página frequentemente acessadas, ou entradas de página selecionadas com base em algum outro critério.
[0041] Se, por exemplo, a primeira unidade de processamento 210 precisa traduzir um endereço de memória virtual para um endereço de memória física, então a MMU 212 pode usar TLB 214 para determinar o endereço de memória física que corresponde a um endereço de memória virtual particular quando TLB 214 armazena a entrada de página para aquele endereço de memória virtual. Usando um determinado endereço de memória física, a unidade de processamento 210 pode ler de ou escrever na memória do sistema 230. Da mesma forma, se a segunda unidade de processamento 220 ou terceira unidade de processamento 240 precisam traduzir um endereço de memória virtual para um endereço de memória física, então a MMU 222 pode usar TLB 224 para determinar o endereço de memória física que corresponde a um endereço de memória virtual particular quando TLB 224 armazena a entrada de página para aquele endereço de memória virtual. Usando um determinado endereço de memória física, a segunda unidade de processamento 220 e terceira unidade de processamento 240 podem ler de ou escrever na memória do sistema 230.
[0042] Como introduzido acima, TLB 214 e TLB 224 podem ser caches que armazenam os mapeamentos virtual para físico para somente um subconjunto de endereços de memória virtual. O TLB 214 no entanto, pode não armazenar todo o mapeamento virtual para físico para a primeira unidade de processamento 210, e da mesma forma, o TLB 224 pode não armazenar todo o mapeamento virtual para físico para a segunda unidade de processamento 220 e terceira unidade de processamento 240. Em alguns casos, a MMU 212 pode precisar determinar um endereço da memória física correspondente para um endereço de memória virtual que não tem um mapeamento armazenado no TLB 214. Para determinar um mapeamento para um endereço de memória virtual não incluído no TLB 214, a MMU 212 acessa a tabela de página comum 232 armazenada na memória do sistema 230. A tabela de página comum 232 inclui todo o mapeamento virtual para físico para a unidade de processamento 210, e portanto, pode ser muito maior do que o TLB 214.
[0043] Como com a primeira unidade de processamento 210, em alguns casos a segunda unidade de processamento 220 pode precisar determinar um endereço de memória física correspondente para um endereço de memória virtual que não tem um mapeamento armazenado no TLB 224. Para determinar um mapeamento para um endereço de memória virtual não incluído no TLB 224, a MMU 222 acessa a tabela de página comum 232 armazenada na memória do sistema 230. A tabela de página comum 232 inclui todo o mapeamento virtual para físico para a primeira unidade de processamento 210 assim como para a segunda unidade de processamento 220 e terceira unidade de processamento 240. Desta maneira, a primeira unidade de processamento 210, segunda unidade de processamento 220, e terceira unidade de processamento 240 compartilham a mesma tabela de página (ou seja, tabela de página comum 232 no exemplo da FIG. 2).
[0044] A tabela de página comum 232 pode incluir uma pluralidade de entradas de página que mapeia um endereço de memória virtual para um endereço de memória física de um pedaço de memória. Cada entrada de página pode incluir um primeiro conjunto de bits de atributo e um segundo conjunto de bits de atributo. O primeiro conjunto de bits de atributo pode definir controles, como permissões e direitos de acesso, para a primeira unidade de processamento 210 enquanto o segundo conjunto de bits de atributo define controles para a segunda unidade de processamento 220 e terceira unidade de processamento 240. Cada entrada de página pode opcionalmente incluir um ou mais conjuntos adicionais de bits de atributo, como um conjunto de bits de atributo que define controles comuns para todas as primeira unidade de processamento 210, segunda unidade de processamento 220, e terceira unidade de processamento 240.
[0045] Em alguns exemplos, o segundo conjunto de atributos pode definir controles para todas as unidades de processamento que compartilham a IOMMU 222. Assim, em tal exemplo, o segundo conjunto de bits de atributo define os controles para ambas segunda unidade de processamento 220 e terceira unidade de processamento 240. Em outros exemplos, no entanto, a segunda unidade de processamento 220 e terceira unidade de processamento 240 pode cada ter um conjunto dedicado de bits de atributo. Em tal exemplo, o segundo conjunto de atributos pode definir os controles para a segunda unidade de processamento 220, enquanto um terceiro conjunto de bits de atributo pode definir os controles para terceira unidade de processamento 240.
[0046] O primeiro conjunto de bits de atributo e o segundo conjunto de bits de atributo para entradas de página da tabela de página comum 232 podem possibilitar que a primeira unidade de processamento 210 tenha diferentes permissões e direitos de acesso dos da segunda unidade de processamento 220 e terceira unidade de processamento 240 ao compartilhar a tabela de página comum com a segunda unidade de processamento 220 e terceira unidade de processamento 240. Como um exemplo, o primeiro conjunto de bits de atributo pode ser definido tal que a primeira unidade de processamento 210 tenha ambos acesso de leitura e escrita a um pedaço de memória particular da memória do sistema 230, enquanto a segunda unidade de processamento 220 e terceira unidade de processamento 240 podem ter acesso somente leitura ao mesmo pedaço de memória particular. É claro que, outras configurações também são possíveis, como a segunda unidade de processamento 220 e terceira unidade de processamento 240 tendo ambos acessos de leitura e escrita enquanto a primeira unidade de processamento 210 tem acesso somente leitura ou segunda unidade de processamento 220 e terceira unidade de processamento 240 tendo ambos acessos de leitura e escrita enquanto a primeira unidade de processamento 210 não tem nenhum acesso de leitura nem de escrita.
[0047] A FIG. 3 é um diagrama conceitual ilustrando aspectos da tabela de página comum 332. A tabela de página comum pode representar ou a tabela de página comum 132 da FIG. 1 ou tabela de página comum 232 da FIG. 2. A FIG. 3 destina-se a ser conceptual para a finalidade de explicação e não deve ser interpretada como representando uma estrutura de dados real. A tabela de página comum 332 inclui uma pluralidade de entradas de página. Cada entrada de página inclui o primeiro conjunto de bits de atributo 352A-N, segundo conjunto de bits de atributo 354A-N, a terceiro conjunto de bits de atributo 356A-N, e bits de endereço da memória física 358A-N. Thus primeiro conjunto de bits de atributo 352A, segundo conjunto de bits de atributo 354A, terceiro conjunto de bits de atributo 356A, e fisicamente bits de endereço de memória 358A coletivamente constituem a entrada de página A. O primeiro conjunto de bits de atributo 352B, segundo conjunto de bits de atributo 354B, terceiro conjunto de bits de atributo 356B, e fisicamente bits de endereço de memória 358B coletivamente constituem a entrada de página B, e assim por diante. Como discutido acima, cada uma das entradas de página 356A-N pode ser de 32 bits, 40 bits, ou algum outro tamanho. Os bits de endereço da memória física 358A-N podem cada ser de 20 bits ou algum outro tamanho, e vários tamanhos podem ser usados para cada um do primeiro conjunto de bits de atributo 352A-N, segundo conjunto de bits de atributo 354A-N, e terceiro conjunto de bits de atributo 356A-N.
[0048] A memória do sistema 334 na FIG. 3 representa a memória física com pedaços de memória 134A-N. A memória do sistema 334 pode, por exemplo, corresponder a memória do sistema 130 da FIG. 1 ou memória do sistema 230 da FIG. 2. Os pedaços de memória 134A-N são destinados para representar pedaços não contíguos de memória 334, significando os endereços de memória física dos pedaços de memória 334A-N podem ser não-contíguos. Cada uma das entradas de página A-N inclui o endereço físico de um dos pedaços de memória 334A-N nos bits de endereço da memória física 358A-N.
[0049] Cada uma das entradas de página A-N corresponde a um endereço de memória virtual. Quando a unidade de processamento, como primeira unidade de processamento 110 ou segunda unidade de processamento 120 da FIG. 1, precisa acessar a memória do sistema, ela pode usar a tabela de página 332 para encontrar o endereço da memória física correspondente para um endereço de memória virtual. Se, por exemplo, a primeira unidade de processamento 110 precisa traduzir um endereço de memória virtual particular para um endereço de memória física, então a primeira unidade de processamento 110 lê a entrada de página correspondente ao endereço de memória virtual particular.
[0050] Neste exemplo, considere que a entrada de página A corresponde ao endereço de memória virtual particular. A primeira unidade de processamento 110 pode então ler a entrada de página A para determinar o endereço da memória física correspondente, que é armazenado nos bits de endereço da memória física 358A. No exemplo, da FIG. 3, a entrada A mapeia o endereço da memória física onde o pedaço de memória física 334B está armazenado. Assim, os bits de endereço da memória física 358A armazenam um endereço físico onde o pedaço de memória 334B está localizado dentro da memória do sistema 334. Primeiros bits de atributo 352A definem a permissão para a primeira unidade de processamento 110 quando acessando o pedaço de memória física 334B. Por exemplo, um primeiro bit pode determinar se a primeira unidade de processamento 110 tem privilégios de leitura para o pedaço de memória 334B. Um segundo bit pode determinar se primeira unidade de processamento 110 tem privilégios de escrita para o pedaço de memória 334B.
[0051] Em alguns casos, a segunda unidade de processamento 120 pode precisar traduzir o mesmo endereço de memória virtual particular traduzido pela primeira unidade de processamento 110. Para fazer isso, a segunda unidade de processamento 120 pode ler a mesma entrada de página correspondente àquela do endereço de memória virtual particular que a primeira unidade de processamento 110 lê quando traduz o endereço de memória virtual particular.
[0052] Neste exemplo, novamente assume-se que a entrada de página A corresponde ao endereço de memória virtual particular. A segunda unidade de processamento 120 pode então ler entrada de página A para determinar o endereço da memória física correspondente, que é armazenada nos bits de memória física 358A. No exemplo, da FIG. 3, a entrada A mapeia para o pedaço de memória física 334B. Assim, os bits de endereço da memória física 358A armazenam um endereço físico do pedaço de memória 334B. Os segundos bits de atributo 354A definem as permissões para a segunda unidade de processamento 120 ao acessar o pedaço de memória física 334B. Por exemplo, um primeiro bit dos segundos bits de atributo 356A pode determinar se segunda unidade de processamento 120 tem privilégios de leitura para o pedaço de memória 334B. Um segundo bit dos segundos bits de atributo 356A pode determinar se segunda unidade de processamento 120 tem privilégios de escrita para o pedaço de memória 334B. Desta maneira, mesmo que a primeira unidade de processamento 110 e segunda unidade de processamento 120 estejam acessando a mesma entrada de página na mesma tabela de página para traduzir um endereço de memória virtual para um endereço de memória física, a primeira unidade de processamento 110 e segunda unidade de processamento 120 podem ter privilégios diferentes, como diferente acesso de leitura e escrita, para o mesmo pedaço de memória.
[0053] Em outro exemplo, quando a unidade de processamento, como a primeira unidade de processamento 210 ou uma da segunda unidade de processamento 220 ou terceira unidade de processamento 240 da FIG. 2, precisa acessar a memória do sistema, ela pode usar a tabela de página 332 para achar o endereço da memória física correspondente a um endereço de memória virtual. Em tal exemplo, os primeiros bits de atributo 352A-N podem definir as permissões para a primeira unidade de processamento 210, enquanto os segundos bits de atributo 354A-N podem definir as permissões para ambas segunda unidade de processamento 220 e terceira unidade de processamento 240. Assim, quando a segunda unidade de processamento 220 precisa para acessar um pedaço de memória física da memória 334, os segundos bits de atributo 354A-N definem as permissões para segunda unidade de processamento 220. Da mesma forma, quando a terceira unidade de processamento 240 precisa acessar um pedaço de memória física da memória 334, os segundos bits de atributo 354A-N também definem as permissões para terceira unidade de processamento 240.
[0054] A FIG. 4 mostra um diagrama de fluxo que ilustra as técnicas de mapeamento virtual para físico descritas nesta divulgação. As técnicas da FIG. 4 podem ser realizadas por um dispositivo de computação com duas ou mais unidades de processamento, como dispositivo de computação 100 da FIG. 1 ou dispositivo de computação 200 da FIG. 2. As técnicas da FIG. 4 serão descritas com referência ao dispositivo de computação 100, embora deva ser compreendido que as técnicas da FIG. 4 são aplicadas a uma ampla gama de dispositivos de computação e não limitadas somente aos dispositivos configurados como dispositivo de computação 100.
[0055] A primeira unidade de processamento 110 através da MMU 112 traduz um endereço de memória virtual para um endereço de memória física usando a tabela de página comum armazenada em uma memória (410). A tabela de página comum é comum à primeira unidade de processamento 110 e à segunda unidade de processamento 120 e armazena endereços de memória virtual para o mapeamento de endereços de memória física para pedaços de memória acessados por um aplicativo. O aplicativo pode estar em execução em ambas primeira unidade de processamento 110 e segunda unidade de processamento120. A tabela de página comum inclui a entrada de página que a primeira unidade de processamento 110 e segunda unidade de processamento 120 usam para acessar o pedaço de memória. A entrada de página também inclui bits de endereço físico que definem um endereço físico do pedaço de memória.
[0056] A primeira unidade de processamento 120 acessa um pedaço de memória identificado pelo endereço de memória física (420). A entrada de página inclui um primeiro conjunto de bits de atributo que define a acessibilidade do pedaço de memória pela primeira unidade de processamento. A segunda unidade de processamento 120 traduz o endereço de memória virtual para o endereço de memória física usando a tabela de página comum armazenada na memória (430). Desta maneira, a primeira unidade de processamento 110 e segunda unidade de processamento 120 acessam a mesma tabela de página comum ao traduzir um endereço de memória virtual para um endereço de memória física. A segunda unidade de processamento 120 acessa o pedaço de memória identificado pelo endereço de memória física (440). A entrada de página inclui um segundo conjunto de bits de atributo que define a acessibilidade do mesmo pedaço de memória pela segunda unidade de processamento. Neste exemplo, a primeira unidade de processamento 110 e a segunda unidade de processamento 120 acessam a mesma entrada de página ao traduzir um endereço de memória virtual particular para um endereço de memória física, mas a entrada de página pode ter bits de atributo separados para a primeira unidade de processamento 110 e a segunda unidade de processamento 120. A entrada de página também pode incluir um terceiro conjunto de bits de atributo que define atributos que são comuns a ambas primeira unidade de processamento 110 e segunda unidade de processamento 120.
[0057] No exemplo da FIG. 4, a primeira unidade de processamento 110 pode ser uma CPU, e a segunda unidade de processamento 120 pode ser uma GPU. O primeiro conjunto de bits de atributo pode definir se a primeira unidade de processamento 110 tem acesso de escrita ao pedaço de memória e define se a primeira unidade de processamento 110 tem acesso de leitura ao pedaço de memória. O segundo conjunto de bits de atributo pode definir se a segunda unidade de processamento 120 tem acesso de escrita ao pedaço de memória e define se a segunda unidade de processamento 120 tem acesso de leitura ao pedaço de memória. A acessibilidade do pedaço de memória pela primeira unidade de processamento 110 pode ser diferente da acessibilidade do pedaço de memória pela segunda unidade de processamento 120. Por exemplo, com base no primeiro conjunto de atributos, a primeira unidade de processamento 110 pode ter acesso de leitura e acesso de escrita ao pedaço de memória, enquanto que com base no segundo conjunto de atributos, a segunda unidade de processamento 120 tem acesso somente leitura ao pedaço de memória.
[0058] A primeira unidade de processamento 110 pode incluir a primeira MMU ( ex., MMU 112), e a segunda unidade de processamento 120 pode incluir a segunda MMU (ex., MMU 122). A primeira MMU pode ser configurada para acessar a tabela de página comum, e a segunda MMU também pode ser configurada para acessar a mesma tabela de página comum.
[0059] Exemplos de memória do sistema 26 incluem, mas não estão limitados a, uma memória de acesso aleatório (RAM), uma memória somente leitura (ROM), uma memória somente leitura programável apagável eletricamente (EEPROM), CD-ROM ou outro disco de armazenamento ótico, disco de armazenamento magnético, ou outros dispositivos de armazenamento magnéticos, memória flash, ou qualquer outra mídia que possa ser utilizada para transportar ou armazenar um código de programa desejado sob a forma de instruções ou estruturas de dados, e que pode ser acessada por um computador ou um processador . A memória de sistema 26 pode, em alguns exemplos, ser considerada como uma mídia de armazenamento não transitória. O termo "não transitório" pode indicar que a mídia de armazenamento não está incorporada em uma onda portadora ou um sinal propagado. No entanto, o termo "não transitório" não deve ser interpretado no sentido de que a memória do sistema 26 é não-móvel. Como um exemplo, a memória do sistema 26 pode ser removida do dispositivo 10, e transferida para outro dispositivo. Como outro exemplo, um dispositivo de armazenamento, substancialmente semelhante à memória de sistema 26, pode ser inserido dentro do dispositivo 10. Em certos exemplos, uma mídia de armazenamento não transitória pode armazenar dados que podem, ao longo do tempo, alterar (por exemplo, na RAM).
[0060] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em ou transmitidas através de, como uma ou mais instruções de código, ou uma mídia legível por computador e executadas por uma unidade de processamento com base em hardware. As mídias legíveis por computador podem incluir mídias de armazenamento legíveis por computador, que correspondem a uma mídia tangível, tais como mídias de armazenamento de dados ou meios de comunicação, incluindo qualquer mídia que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Deste modo, as mídias legíveis por computador podem geralmente corresponder a (1) mídia de armazenamento legível por computador tangível que é não- transitória ou (2) um meio de comunicação, tal como um sinal ou onda portadora. Os meios de armazenamento de dados podem ser qualquer material disponível que pode ser acessado por um ou mais computadores ou um ou mais processadores para recuperar as instruções de código, e/ou estruturas de dados para a execução das técnicas descritas nesta divulgação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0061] A título de exemplo, e não como limitação, tais mídias de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnéticos, memória flash, ou qualquer outra mídia que possa ser utilizada para armazenar o código do programa desejado sob a forma de instruções ou estruturas de dados, e que pode ser acessado por um computador. Além disso, qualquer ligação é corretamente denominada uma mídia legível por computador. Por exemplo, se as instruções são transmitidas a partir de um site, servidor ou outra fonte remota através de um cabo coaxial, cabo de fibra ótica, par trançado, linha de assinante digital (DSL), ou tecnologias sem fio como o infravermelho, rádio e microondas, em seguida, o cabo coaxial, cabo de fibra óptica, par trançado, DSL, ou tecnologias sem fios, tais como infravermelho, rádio e microondas estão incluídas na definição de mídia. Deve ser entendido, no entanto, que as mídias de armazenamento legíveis por computador e mídias de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios de comunicação transitórios, mas são direcionadas para mídia de armazenamento não transitória, tangível. Disco e disquete, como aqui utilizados, incluem disco compacto (CD), disco a laser, disco ótico, disco digital versátil (DVD), disquete e disco Blu-ray, onde disquetes geralmente reproduzem dados magneticamente, enquanto que os discos reproduzir dados opticamente com lasers. Combinações dos anteriores também devem ser incluídas dentro do escopo de mídia legível por computador.
[0062] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores de finalidade geral, circuito integrado de aplicação específicas (ASICs), arranjos lógicos programáveis em campos (FPGAs), ou outro circuito lógico integrado ou discreto equivalente. Por conseguinte, o termo "processador", tal como aqui utilizado pode referir-se a qualquer estrutura anterior ou qualquer outra estrutura adequada para implementação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida dentro de módulos de hardware e/ou software dedicados configurados para a codificação e decodificação, ou incorporada em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0063] As técnicas da presente divulgação podem ser implementadas em uma vasta variedade de dispositivos ou aparelhos, incluindo um fone sem fios, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta divulgação para realçar os aspectos funcionais dos dispositivos configurados para executar as técnicas divulgadas, mas não precisam necessariamente da realização por diferentes unidades de hardware. Em vez disso, tal como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por um conjunto de unidades de hardware interoperativas, incluindo um ou mais processadores, conforme descrito acima, em conjunto com o software e/ou firmware adequado.
[0064] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do escopo das seguintes reivindicações.

Claims (13)

1. Método caracterizado pelo fato de que compreende: traduzir (410), por uma primeira unidade de processamento (110), um endereço de memória virtual para um endereço de memória física usando uma tabela de página comum (232, 332) armazenada em uma memória (230), em que a primeira unidade de processamento compreende uma unidade de processamento central (CPU); acessar (420), pela primeira unidade de processamento, um pedaço de memória (334A-N) identificado pelo endereço de memória física; traduzir (430), por uma segunda unidade de processamento (120, 220), o endereço de memória virtual para o endereço de memória física usando a tabela de página comum armazenada na memória, em que a segunda unidade de processamento compreende uma unidade de processamento gráfico (GPU); acessar (440), pela segunda unidade de processamento, o pedaço de memória identificado pelo endereço de memória física; traduzir, por uma terceira unidade de processamento (240), um segundo endereço de memória virtual para um endereço de memória física usando a tabela de página comum armazenada na memória; acessar, pela terceira unidade de processamento, um pedaço de memória identificado pelo endereço de memória física; em que a tabela de página comum é comum à primeira unidade de processamento, à segunda unidade de processamento e à terceira unidade de processamento, em que a primeira unidade de processamento compreende uma primeira unidade de gerenciamento de memória, MMU, e em que a primeira MMU é configurada para acessar a tabela de página comum, em que a segunda unidade de processamento e a terceira unidade de processamento compartilham uma MMU de entrada/saída, IOMMU, e em que a IOMMU é configurada para acessar a tabela de página comum, em que a tabela de página comum armazena endereços de memória virtual para o mapeamento de endereços de memória física para pedaços de memória acessados por uma tarefa de um aplicativo; em que a tabela de página comum compreende uma entrada de página que a primeira unidade de processamento (110, 210) e a segunda unidade de processamento (120, 220) e a terceira unidade de processamento usam para acessar o pedaço de memória (334A-N), em que a entrada de página compreende um primeiro conjunto de bits de atributo (352A-N) que define a acessibilidade do pedaço de memória pela primeira unidade de processamento, um segundo conjunto de bits de atributo (354A-N) que define a acessibilidade do mesmo pedaço de memória pela segunda unidade de processamento, um terceiro conjunto de bits de atributo (356A-N) que define a acessibilidade do mesmo pedaço de memória pela terceira unidade de processamento, e bits de endereço físico (358A- N) que definem um endereço físico do pedaço de memória, em que a acessibilidade do pedaço de memória pela primeira unidade de processamento, conforme definido pelo primeiro conjunto de bits de atributo, é diferente da acessibilidade do pedaço de memória pela segunda unidade de processamento, conforme definido pelo segundo conjunto de bits de atributo, e em que, com base no primeiro conjunto de bits de atributo, a primeira unidade de processamento possui acesso de leitura e acesso de escrita ao pedaço de memória, e em que com base no segundo conjunto de bits de atributo, a segunda unidade de processamento possui acesso somente de leitura ao pedaço de memória.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a terceira unidade de processamento (240) é um processador de sinal digital.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a terceira unidade de processamento (240) é um arranjo lógico programável em campo.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a terceira unidade de processamento (240) é um circuito integrado de aplicação específica.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o primeiro conjunto de bits de atributo define se a primeira unidade de processamento tem acesso de escrita ao pedaço de memória e define se a primeira unidade de processamento tem acesso de leitura ao pedaço de memória; e, em que o segundo conjunto de bits de atributo define se a segunda unidade de processamento tem acesso de escrita ao pedaço de memória e define se a segunda unidade de processamento tem acesso de leitura ao pedaço de memória.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o aplicativo está em execução em ambas as primeira unidade de processamento e segunda unidade de processamento.
7. Equipamento (100, 200) caracterizado pelo fato de que compreende: primeiro meio de processamento (110, 210); segundo meio de processamento (120, 220); terceiro meio de processamento (240); uma memória (130); em que o primeiro meio de processamento (110, 210) compreende: primeiro meio para traduzir um endereço de memória virtual para um endereço de memória física usando uma tabela de página comum (132, 232) armazenada na memória (130, 230), primeiro meio para acessar um pedaço de memória (334A-N) identificado pelo endereço de memória física, em que o primeiro meio de processamento compreende uma unidade de processamento central (CPU); em que o segundo meio de processamento (120, 220) compreende: segundo meio para traduzir o endereço de memória virtual para o endereço de memória física usando uma tabela de página comum (132, 232) armazenada na memória (130, 230), segundo meio para acessar o pedaço de memória (334A-N) identificado pelo endereço de memória física, em que o segundo meio de processamento compreende uma unidade de processamento gráfico (GPU); em que o terceiro meio de processamento compreende: segundo meio para traduzir um segundo endereço de memória virtual para um segundo endereço de memória física usando a tabela de página comum armazenada na memória, o segundo meio para acessar o pedaço de memória identificado pelo segundo endereço de memória física; em que a tabela de página comum (132, 232) é comum ao primeiro meio de processamento, ao segundo meio de processamento e ao terceiro meio de processamento, em que a primeira unidade de processamento compreende uma primeira unidade de gerenciamento de memória (MMU) e em que a MMU é configurada para acessar a tabela de página comum, em que a segunda unidade de processamento e a terceira unidade de processamento compartilham uma MMU de entrada/saída (IOMMU), em que a IOMMU é configurada para acessar a tabela de página comum, em que a tabela de página comum armazena endereços de memória virtual para o mapeamento de endereços de memória física para pedaços de memória acessados por uma tarefa de um aplicativo; e em que a tabela de página comum compreende uma entrada de página que o primeiro meio de processamento, o segundo meio de processamento e o terceiro meio de processamento usam para acessar o pedaço de memória, em que a entrada de página compreende um primeiro conjunto de bits de atributo (352A-N) que define a acessibilidade do pedaço de memória pelo primeiro meio de processamento, um segundo conjunto de bits de atributo (354A-N) que define a acessibilidade do mesmo pedaço de memória pelo segundo meio de processamento, um terceiro conjunto de bits de atributo (356A-N) que define a acessibilidade do mesmo pedaço de memória pelo terceiro meio de processamento, e bits de endereço físico (358A-N) que definem um endereço físico do pedaço de memória, em que a acessibilidade do pedaço de memória pela primeira unidade de processamento, conforme definido pelo primeiro conjunto de bits de atributo, é diferente da acessibilidade do pedaço de memória pela segunda unidade de processamento, conforme definido pelo segundo conjunto de bits de atributo, e em que, com base no primeiro conjunto de bits de atributo, a primeira unidade de processamento possui acesso de leitura e acesso de escrita ao pedaço de memória, e em que com base no segundo conjunto de bits de atributo, a segunda unidade de processamento possui acesso somente de leitura ao pedaço de memória.
8. Equipamento, de acordo com a reivindicação 7, caracterizado pelo fato de que o terceiro meio de processamento (240) é um processador de sinal digital.
9. Equipamento, de acordo com a reivindicação 7, caracterizado pelo fato de que o terceiro meio de processamento (240) é um arranjo lógico programável em campo.
10. Equipamento, de acordo com a reivindicação 7, caracterizado pelo fato de que o terceiro meio de processamento (240) é um circuito integrado de aplicação específica.
11. Equipamento, de acordo com a reivindicação 7, caracterizado pelo fato de que um primeiro conjunto de bits de atributo define se o primeiro meio de processamento tem acesso de escrita ao pedaço de memória e define se o primeiro meio de processamento tem acesso de leitura ao pedaço de memória; e, sendo que um segundo conjunto de bits de atributo define se o segundo meio de processamento tem acesso de escrita ao pedaço de memória e define se o segundo meio de processamento tem acesso de leitura ao pedaço de memória.
12. Equipamento, de acordo com a reivindicação 7, caracterizado pelo fato de que o aplicativo está em execução em ambos os primeiro meio de processamento e o segundo meio de processamento.
13. Memória legível por computador caracterizada pelo fato de que compreende instruções armazenadas na mesma, as instruções que, quando executadas por um equipamento compreendendo uma memória, uma primeira unidade de processamento que é uma unidade de processamento central (CPU), uma segunda unidade de processamento que é uma unidade de processamento gráfico (GPU), e uma terceira unidade de processamento, fazem com que a primeira unidade de processamento, a segunda unidade de processamento e a terceira unidade de processamento do equipamento execute um método conforme definido em qualquer uma das reivindicações 1 a 6.
BR112015001988-9A 2012-08-02 2013-07-18 Método e equipamento para mapeamento de endereços virtuais para endereços físicos, e memória legível por computador BR112015001988B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/565,434 2012-08-02
US13/565,434 US8938602B2 (en) 2012-08-02 2012-08-02 Multiple sets of attribute fields within a single page table entry
PCT/US2013/051069 WO2014022110A1 (en) 2012-08-02 2013-07-18 Multiple sets of attribute fields within a single page table entry

Publications (2)

Publication Number Publication Date
BR112015001988A2 BR112015001988A2 (pt) 2017-07-04
BR112015001988B1 true BR112015001988B1 (pt) 2022-03-15

Family

ID=48916200

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112015001988-9A BR112015001988B1 (pt) 2012-08-02 2013-07-18 Método e equipamento para mapeamento de endereços virtuais para endereços físicos, e memória legível por computador

Country Status (8)

Country Link
US (1) US8938602B2 (pt)
EP (1) EP2880540B1 (pt)
JP (3) JP2015527661A (pt)
KR (1) KR102051698B1 (pt)
BR (1) BR112015001988B1 (pt)
ES (1) ES2763545T3 (pt)
HU (1) HUE047108T2 (pt)
WO (1) WO2014022110A1 (pt)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9141559B2 (en) * 2012-01-04 2015-09-22 Intel Corporation Increasing virtual-memory efficiencies
US9378572B2 (en) * 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory
US9373182B2 (en) 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US20140331019A1 (en) * 2013-05-06 2014-11-06 Microsoft Corporation Instruction set specific execution isolation
US9436616B2 (en) 2013-05-06 2016-09-06 Qualcomm Incorporated Multi-core page table sets of attribute fields
US9530000B2 (en) * 2013-06-14 2016-12-27 Microsoft Technology Licensing, Llc Secure privilege level execution and access protection
US9563571B2 (en) 2014-04-25 2017-02-07 Apple Inc. Intelligent GPU memory pre-fetching and GPU translation lookaside buffer management
US9507726B2 (en) * 2014-04-25 2016-11-29 Apple Inc. GPU shared virtual memory working set management
US9921897B2 (en) 2016-01-06 2018-03-20 International Business Machines Corporation Testing a non-core MMU
GB2547242B (en) * 2016-02-11 2018-05-23 Advanced Risc Mach Ltd Graphics processing
US10019377B2 (en) * 2016-05-23 2018-07-10 Advanced Micro Devices, Inc. Managing cache coherence using information in a page table
KR101942663B1 (ko) * 2017-09-28 2019-01-25 한국과학기술원 가상 메모리 주소 변환 효율화를 위한 연속성 활용 주소 변환 방법 및 시스템
US10747679B1 (en) * 2017-12-11 2020-08-18 Amazon Technologies, Inc. Indexing a memory region
CN110198331B (zh) * 2018-03-28 2022-11-25 腾讯科技(上海)有限公司 一种同步数据的方法及系统

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3454854B2 (ja) * 1992-01-16 2003-10-06 株式会社東芝 メモリ管理装置及び方法
US6446034B1 (en) 1998-12-16 2002-09-03 Bull Hn Information Systems Inc. Processor emulation virtual memory address translation
US6286092B1 (en) 1999-05-12 2001-09-04 Ati International Srl Paged based memory address translation table update method and apparatus
US7444636B2 (en) 2002-07-15 2008-10-28 Hewlett-Packard Development Company, L.P. Method and system of determining attributes of a functional unit in a multiple processor computer system
US7111145B1 (en) 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
US7673116B2 (en) 2006-01-17 2010-03-02 Advanced Micro Devices, Inc. Input/output memory management unit that implements memory attributes based on translation data
US7539842B2 (en) 2006-08-15 2009-05-26 International Business Machines Corporation Computer memory system for selecting memory buses according to physical memory organization information stored in virtual address translation tables
US7865675B2 (en) 2007-12-06 2011-01-04 Arm Limited Controlling cleaning of data values within a hardware accelerator
US8015361B2 (en) 2007-12-14 2011-09-06 International Business Machines Corporation Memory-centric page table walker
US8307360B2 (en) * 2008-01-22 2012-11-06 Advanced Micro Devices, Inc. Caching binary translations for virtual machine guest
US8397049B2 (en) * 2009-07-13 2013-03-12 Apple Inc. TLB prefetching
US20110016290A1 (en) 2009-07-14 2011-01-20 Arie Chobotaro Method and Apparatus for Supporting Address Translation in a Multiprocessor Virtual Machine Environment
US8386745B2 (en) * 2009-07-24 2013-02-26 Advanced Micro Devices, Inc. I/O memory management unit including multilevel address translation for I/O and computation offload
US20110161620A1 (en) 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US8669990B2 (en) * 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
US20120233439A1 (en) 2011-03-11 2012-09-13 Boris Ginzburg Implementing TLB Synchronization for Systems with Shared Virtual Memory Between Processing Devices

Also Published As

Publication number Publication date
ES2763545T3 (es) 2020-05-29
WO2014022110A1 (en) 2014-02-06
KR102051698B1 (ko) 2019-12-03
EP2880540A1 (en) 2015-06-10
JP2018041485A (ja) 2018-03-15
CN104508641A (zh) 2015-04-08
HUE047108T2 (hu) 2020-04-28
JP2019109906A (ja) 2019-07-04
JP6728419B2 (ja) 2020-07-22
US8938602B2 (en) 2015-01-20
KR20150038513A (ko) 2015-04-08
JP2015527661A (ja) 2015-09-17
US20140040593A1 (en) 2014-02-06
EP2880540B1 (en) 2019-09-25
BR112015001988A2 (pt) 2017-07-04

Similar Documents

Publication Publication Date Title
BR112015001988B1 (pt) Método e equipamento para mapeamento de endereços virtuais para endereços físicos, e memória legível por computador
US11636049B2 (en) Memory protection with hidden inline metadata
US10241931B2 (en) Controlling access to pages in a memory in a computing device
US9436616B2 (en) Multi-core page table sets of attribute fields
US10169244B2 (en) Controlling access to pages in a memory in a computing device
US9355262B2 (en) Modifying memory permissions in a secure processing environment
US10067709B2 (en) Page migration acceleration using a two-level bloom filter on high bandwidth memory systems
US9703715B2 (en) Shared memory in a secure processing environment
RU2644529C2 (ru) Отображение встроенного адреса есс
KR20120088370A (ko) 멀티 프로세서 시스템에서의 메모리 보호 장치 및 방법
US20230281113A1 (en) Adaptive memory metadata allocation
US9971705B2 (en) Virtual memory address range register
US20160103766A1 (en) Lookup of a data structure containing a mapping between a virtual address space and a physical address space
WO2023064609A1 (en) Translation tagging for address translation caching
WO2023064590A1 (en) Software indirection level for address translation sharing
US20180300253A1 (en) Translate further mechanism

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
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 18/07/2013, OBSERVADAS AS CONDICOES LEGAIS.