BR112012010143A2 - unidade de tradução de endereço com múltiplas filas virtuais - Google Patents

unidade de tradução de endereço com múltiplas filas virtuais Download PDF

Info

Publication number
BR112012010143A2
BR112012010143A2 BR112012010143-9A BR112012010143A BR112012010143A2 BR 112012010143 A2 BR112012010143 A2 BR 112012010143A2 BR 112012010143 A BR112012010143 A BR 112012010143A BR 112012010143 A2 BR112012010143 A2 BR 112012010143A2
Authority
BR
Brazil
Prior art keywords
address translation
entry
translation request
translation
request
Prior art date
Application number
BR112012010143-9A
Other languages
English (en)
Other versions
BR112012010143B1 (pt
Inventor
Joseph A. Petolino Jr
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of BR112012010143A2 publication Critical patent/BR112012010143A2/pt
Publication of BR112012010143B1 publication Critical patent/BR112012010143B1/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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

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)

Abstract

UNIDADE DE TRADUÇÃO DE ENDEREÇO COM MÚLTIPLAS FILAS VIRTUAIS. A presente invenção refere-se a uma unidade de tradução de endereço que inclui uma memória de tradução de endereços lineares em endereços físicos (do inglês translation lookaside buffer TLB), uma fila de faltas, e uma unidade de controle. O TLB pode armazenar uma pluralidade de traduções de endereços. A fila de faltas pode armazenar as solicitações de tradução de endereço recebidas que faltaram no TLB. A fita de faltas inclui uma pluralidade de entradas. Pelo menos algumas entradas podem cada uma armazenar uma respectiva solicitação de tradução de endereço e um identificador correspondente. O identificador correspondente de uma dada entrada identifica outra entrada na fila de faltas que armazena outra respectiva solicitação de tradução de endereço que tem uma restrição de ordenamento de processo que é a mesma que uma restrição de ordenamento de processo da respectiva solicitação de tradução de endereço na dada entrada. As traduções de endereços que têm a mesma restrição de ordenamento que estão conectadas juntas através do identificador pertencem à mesma fila de faltas virtuais. A unidade de controle pode processar as solicitações de tradução de endereço recebidas em uma ordem dependente do identificador.

Description

Relatório Descritivo da Patente de Invenção para "UNIDADE DE É TRADUÇÃO DE ENDEREÇO COM MÚLTIPLAS FILAS VIRTUAIS".
CAMPO DA INVENÇÃO A presente invenção refere-se a sistemas de processamento di- gitale, mais especificamente, a mecanismos de tradução de endereço em tais sistemas.
DESCRIÇÃO DA TÉCNICA RELATIVA A tradução de endereço é frequentemente utilizada em sistemas que incluem múltiplas fontes de solicitação de memória e uma memória compartilhada pelas fontes. As fontes podem incluir processadores, unida- des de acesso de memória direta (DMA) que atuam em benefício de vários * dispositivos periféricos, e/ou os próprios dispositivos periféricos. A tradução " . de endereço pode ser utilizada para assegurar que diferentes fontes não interfiram com o acesso umas das outras à memória, para prover uma me- mória virtual maior do que é realmente disponível na memória física (junta- mente com um software para paginar os dados para dentro e para fora da memória conforme necessário), para simplificar a alocação dinâmica de memória (permitindo que páginas dispersas de memória real pareçam como um bloco contíguo de memória virtual), etc. Assim, uma dada fonte pode transmitir uma solicitação de memória com um endereço virtual, e o meca- nismo de tradução de endereço pode traduzir o endereço para um endereço físico correspondente. Tipicamente, as traduções de endereço virtual para físico são armazenadas em um conjunto de tabelas de páginas gerenciadas por soft- warenamemória. O endereço virtual pode ser utilizado como um índice (re- lativo a um endereço de base da tabela de páginas) do qual uma entrada ou entradas de tabela de páginas são lidas de modo a localizar a tradução cor- reta. Alguns esquemas de tradução de endereço utilizam múltiplas leituras de tabela de páginas em um modo hierárquico ou não hierárquico para loca- lizar uma tradução. Outros esquemas podem utilizar uma única leitura de tabela de páginas para localizar uma tradução. A latência para executar a tradução pode ser reduzida provendo um "translation lookaside buffer" (TLB) que coloca em cache as traduções recentemente utilizadas para um rápido acesso em resposta a uma solicita- ção de memória de uma fonte. No entanto, em alguns mecanismos de tradu- ção convencionais, como o TLB pode ser compartilhado entre múltiplas fon- tes, umafaltade TLB sobre uma tradução pode aumentar a latência de outra solicitação de tradução não relacionada. Este tipo de latência pode ser ina- ceitável em alguns sistemas.
SUMÁRIO Várias modalidades de uma unidade de tradução de endereço que inclui múltiplas filas virtuais estão descritas. Em uma modalidade, a uni- dade de tradução inclui uma memória de tradução de endereços lineares em e endereços físicos “translation lookaside buffer" (TLB), uma fila de faltas, e à uma unidade de controle. O TLB pode estar configurado para armazenar uma pluralidade de traduções de endereços. A fila de faltas pode estar con- figurada para armazenar as solicitações de tradução de endereço recebidas que faltaram no TLB. A fila de faltas inclui uma pluralidade de entradas. Pelo menos algumas entradas podem cada uma estar configuradas para armaze- nar uma respectiva solicitação de tradução de endereço e um identificador correspondente. O identificador correspondente de uma dada entrada identi- fica outra entrada na fila de faltas que armazena outra respectiva solicitação de tradução de endereço tal como uma solicitação de tradução mais antiga, que tem uma restrição de ordenamento de processo que é a mesma que uma restrição de ordenamento de processo da respectiva solicitação de tra- dução de endereço na dada entrada. Por exemplo, as traduções de endere- çosquetêma mesma restrição de ordenamento e que estão ligadas juntas através do identificador pertencem à mesma fila de faltas virtuais. A unidade de controle pode estar configurada para processar as solicitações de tradu- ção de endereço recebidas em uma ordem dependente do identificador de cada respectiva solicitação de tradução de endereço.
BREVE DESCRIÇÃO DOS DESENHOS Figura 1 é um diagrama de blocos de uma modalidade de um sistema que inclui uma ou mais unidades de tradução de endereço.
Figura 2 é um diagrama de blocos de uma modalidade de uma | unidade de tradução de endereço mostrada na figura 1.
Figura 3 é um diagrama de blocos de uma modalidade da fila de faltas de unidade de tradução de endereço mostrada na figura 2.
Ss Figura 4A é um diagrama que apresenta várias entradas dentro de uma modalidade da fila de faltas da figura 2 e da figura 3.
Figura 4B é um diagrama arquitetural que apresenta as entradas conectadas de três filas virtuais dentro de uma modalidade da fila de faltas da figura 2 até figura 4A.
Figura 5 é um diagrama de estado que apresenta os estados operacionais de uma entrada dentro de uma modalidade da fila de faltas da " figura 2 e da figura 3. Figura 6 é um fluxograma que apresenta a operação de uma Y modalidade da unidade de tradução de endereço mostrada na figura 2 e na figuras Apesar da invenção ser susceptível a várias modificações e for- mas alternativas, as suas modalidades específicas estão mostradas como exemplo nos desenhos e serão aqui descritas em detalhes. Deve ser com- preendido, no entanto, que os desenhos e a descrição detalhada destes não pretendem limitar a invenção à forma específica descrita, mas ao contrário, a intenção é cobrir todas as modificações, equivalentes e alternativas que cai- am dentro do espírito e do escopo da presente invenção como definidos pe- las reivindicações anexas. Os títulos aqui utilizados são para propósitos or- ganizacionais somente e não pretendem ser utilizados para limitar o escopo dadescrição. Como utilizada através de todo este pedido, a palavra "pode" é utilizada em um sentido permissivo (isto é, significando tendo o potencial para), ao invés do sentido mandatório (isto é, significando deve). Similar- mente, as palavras "incluir", "incluindo", e "inclui" significam incluindo, mas não limitado a.
Várias unidades, circuitos, ou outros componentes podem ser descritos como "configurados para" executar uma tarefa ou tarefas. Em tais contextos, "configurado para" é uma recitação ampla de estrutura geralmen-
te significando "tendo um circuito que" executa a tarefa ou tarefas durante a 1 operação.
Como tal, a unidade/circuito/componente pode ser configurada para executar a tarefa mesmo quando a unidade/circuito/componente não estiver correntemente ligada.
Em geral, o circuito que forma a estrutura que corresponde a "configurado para" pode incluir circuitos de hardware.
Simi- larmente, várias unidades/circuitos/componentes podem ser descritas como executando uma tarefa ou tarefas, para conveniência na descrição.
Tais descrições devem ser interpretadas como incluindo a fase "configurado pa- ra". Recitando uma unidade/circuito/ componente que está configurado para executar uma ou mais tarefas está expressamente destinada a não invocar a interpretação da 35 U.S.C. $ 112, parágrafo seis para esta unida- f defcircuito/componente. : DESCRIÇÃO DETALHADA
Observando agora a figura 1, um diagrama de blocos de uma modalidade de um sistema 10 está mostrado.
O sistema 10 inclui um contro- lador de display de display de cristal líquido colorido (CLCD) 12, um codifi- cador de vídeo 14, um misturador 16, um escalador 18, um decodificador de vídeo 20, um sombreador 22, uma unidade de interface 24, uma unidade de tradução de endereço 26, uma unidade de interface de sistema (SIU) 28, um oumais periféricos de alto desempenho 30, uma unidade de acesso de me- mória direto (DMA) 32, um ou mais outros periféricos 34, uma segunda uni- dade de tradução de endereço 36, um ou mais periféricos de foto 38, um processador 40, e um controlador de memória 42. Como mostrado na figura 1, o controlador de display de CLCD 12,0 codificador de vídeo 14, o misturador 16, o escalador 18, o decodifica- dor de vídeo 20, e o sombreador 22 estão acoplados na unidade de interface 24, a qual está ainda acoplada na unidade de interface de sistema 28. Na modalidade ilustrada, a unidade de interface 24 está acoplada na unidade de interface de sistema 28 através de uma interconexão que inclui uma interco- nexãode endereço 11, uma interconexão de dados 13, e uma interconexão de resposta de escrita 15 como mostrado na figura 1. A unidade de tradução de endereço 26 está acoplada na interconexão de endereço 11 e pode estar configurada para traduzir os endereços de solicitações transmitidas pela uni- : dade de interface 24 para a unidade de interface de sistema 28. Os periféri- cos de alto desempenho 30, a unidade de DMA 32, a unidade de tradução de endereço 36, o um processador 40, e o controlador de memória 42 estão acoplados na unidade de interface de sistema 28. A unidade de DMA 32 es- tá acoplada nos periféricos de alto desempenho 30 e nos outros periféricos
34. A unidade de tradução de endereço 36 está acoplada nos periféricos de foto 38. O controlador de memória 42 está acoplado a uma memória (não mostrada). O controlador de display de CLCD 12 está acoplado a um CLCD (possivelmente através de outros componentes não mostrados na figura 1). Em uma modalidade, o sistema 10 como ilustrado na figura 1 pode estar in- " tegrado por sobre um único chip de circuito integrado como um sistema em um chip (SOC). Em outras modalidades, dois ou mais circuitos integrados : podem ser empregados para prover os componentes ilustrados na figura 1. Em outras modalidades, o sistema 10 pode ainda incluir o CLCD, a memória, e vários outros componentes (por exemplo, componentes acoplados a uma interface periférica).
Como anteriormente mencionado, a unidade de tradução de en- dereço 26 pode prover tradução de endereço para solicitações iniciadas por um oumaisdos componentes que estão acoplados na unidade de interface
24. Por exemplo, em uma modalidade, a unidade de tradução de endereço 26 pode prover a tradução de endereço para o controlador de display de CLCD 12, o codificador de vídeo 14, o misturador 16, o escalador 18, e o sombreador 22. No entanto, o decodificador de vídeo 20 pode empregar um mecanismo de tradução de endereço interno. Outras modalidades podem utilizar a unidade de tradução de endereço 26 para uma tradução de ende- reço para diferentes subconjuntos de componentes, ou para todos os com- ponentes, conforme desejado. Geralmente, o processo de tradução de endereço (mais resumi- damente,"tradução") pode referir a modificar um endereço virtual inserido na unidade de tradução de endereço para um endereço físico que pode ser uti- lizado para acessar a memória. O endereço físico pode frequentemente ser numericamente diferente do endereço virtual, apesar de ser possível mapear : um endereço virtual para um endereço físico numericamente igual, frequen- temente referido como um mapeamento de unidade. A tradução é determi- nada com base em dados armazenados em uma ou mais tabelas de páginas namemória, a qual mapeia os endereços virtuais para endereços físicos em uma granularidade de página. Um software pode controlar os mapeamentos de endereços virtuais para endereços físicos modificando o conteúdo das tabelas de páginas. Os tamanhos de páginas podem variar de modalidade para modalidade. Por exemplo, 4 quilobytes é um tamanho de página típico, apesar de tamanhos de página maiores serem suportados em várias moda- lidades, até Megabytes em tamanho. Tamanhos de página ainda maiores e poderão ser suportados no futuro. Em algumas modalidades, múltiplos ta- manhos de página são suportados e podem ser programavelmente selecio- : náveis e/ou podem existir tamanhos misturados em uso ao mesmo tempo. Um mapeamento específico de uma página virtual para uma página física pode também ser referido como uma tradução.
A unidade de tradução de endereço 26 pode incluir uma memó- ria de tradução de endereços lineares em endereços físicos (do inglês trans- lation lookaside buffer , por exemplo, TLB 70 mostrado na figura 2), o qual pode colocarem cache uma ou mais traduções que foram recentemente uti- lizadas pela unidade de tradução de endereço 26. Em uma modalidade, o TLB pode ser implementado como uma estrutura de encadeamento, que inclui um número de estágios. Assim, uma tradução de baixa latência pode ser executada para endereços virtuais que têm acerto no TLB, e uma tradu- çãode latência uma pouca mais alta pode ser executada para um endereço virtual que falta ao TLB (já que uma passada de tabela das tabelas de pági- na na memória é necessária para obter a tradução). No entanto, como adi- cionalmente abaixo descrito, a unidade de tradução de endereço 26 pode empregar uma fila de falta de TLB (por exemplo, MQ 64 da figura 2) que po- de reduziras/latências associadas com certas traduções permitindo que um número de solicitações de tradução que faltaram no TLB estejam concorren- temente em progresso.
Um ou mais dos componentes para os quais a unidade de tradu- : ção de endereço 26 provê uma tradução de endereço podem ser componen- tes sensíveis à latência que podem não tolerar as frequentes faltas no TLB. Por exemplo, o controlador de display de CLCD pode ler os dados da memó- ria para exibir uma imagem no display de CLCD (por exemplo, dados de ar- mazenamento de quadro). Os endereços destas operações de leitura de memória podem ser traduzidos pela unidade de tradução de endereço 26. O controlador de display está exibindo a imagem no display para o usuário ver, e uma latência inesperada na leitura dos dados pode levar a efeitos visíveis nodisplay. O codificador de vídeo 14 pode também ser sensível à latência na leitura de memória, assim como pode o decodificador de vídeo 20 (ape- : sar do decodificador de vídeo 20 incluir a sua própria unidade de tradução de endereço, nesta modalidade). Qualquer unidade de processamento de ' vídeo pode ser sensível à latência de leitura de memória, em várias modali- dades. Uma unidade de processamento de vídeo pode ser qualquer circuito que processe os dados de vídeo. As unidades de processamento de vídeo podem inclui, por exemplo, o controlador de display 12, o codificador de vi- deo 14, o misturador 16, o escalador 18, o decodificador de vídeo 20, e/ou o sombreador 22. As unidades de processamento de vídeo podem também incluir qualquer outro circuito que processe os dados de vídeo. Na presente modalidade, o controlador de display 12 e o codificador de vídeo 14 são sensíveis ao retardo de leitura de memória, e outros componentes não são sensíveis à latência ou incluem a sua própria unidade de tradução de ende- reço. Outras modalidades podem ter mais ou menos unidades de processa- —mentode vídeo que são sensíveis à latência.
Consequentemente, a fila de falta de TLB (mostrada na figura 2) pode rastrear as faltas de TLB em progresso, e permitir um processamento concorrente de solicitações de tradução enquanto impondo restrições de ordenamento de solicitação de tradução para as traduções que têm o mes- mo ARID ou entre todas as traduções de escrita. Como abaixo descrito em maiores detalhes em conjunto com as descrições da figura 2 até a figura 6, a fila de faltas pode empregar um número de filas de faltas virtuais (VMQ) den-
tro de uma estrutura de armazenamento de fila de faltas físicas. Mais especi- ' ficamente, em uma modalidade, a unidade de armazenamento pode incluir um número de entradas que armazenam as solicitações de tradução. Cada entrada na fila de faltas pode armazenar uma tradução que pertence a qual- quer VMQ. Cada VMQ pode ser implementada como um tipo de lista conec- tada de estrutura de dados na qual as novas solicitações de tradução podem ser anexadas ao final da VMQ apropriada. Em uma modalidade, cada entra- da pode incluir um apontador para identificar uma entrada de fila de faltas na qual uma próxima solicitação de tradução sequencial na mesma VMQ está armazenada. Cada solicitação de tradução em uma dada VMQ pode ter as mesmas restrições de ordenação de processo e pode ser processada na f ordem especificada pelos apontadores. No entanto, as solicitações de tradu- ção em diferentes VMQs podem não bloquear umas às outras e as solicita- ções que estão prontas podem ser selecionadas utilizando um mecanismo de seleçãotal como aquele adicionalmente abaixo descrito.
Como ilustrado na figura 1, a unidade de tradução de endereço 26 pode receber a interconexão de endereço 11, a qual pode incluir um en- dereço, um identificador, e um tipo (por exemplo, leitura/escrita). Várias ou- tras informações podem estar incluídas em uma solicitação também (por exemplo, um tamanho), em várias modalidades. Em uma implementação, a interconexão de endereço 11 pode incluir canais separados para as solicita- ções de leitura e de escrita. Consequentemente, pode existir um endereço de leitura, um endereço de escrita, um identificador de leitura, e um identifi- cador de escrita. A natureza de leitura/escrita da solicitação pode ser inferida de qualdos canais que está sendo utilizado para transmitir a solicitação. Ou- tras modalidades podem utilizar outras interconexões, interconexão baseada em pacote, etc. Por exemplo, uma interconexão de endereço que transmite um endereço e uma indicação de leitura/escrita pode ser utilizada. A interconexão de dados 13 pode incluir um canal de dados de escritaeum canal de dados de leitura, ou pode ser uma interconexão bidire- cional, em várias modalidades. A unidade de tradução de endereço 26 pode estar acoplada na interconexão de dados 13 para receber os dados de leitu-
ra de passadas de tabela para as faltas de TLB. A interconexão de resposta É de escrita 15 supre as respostas para as solicitações de escrita (por exem- plo, uma indicação de completamento).
A unidade de interface 24 pode receber as solicitações dos componentes 12, 14, 16, 18, 20 e 22 (ou indicações que as solicitações es- tão prontas para serem transmitidas) e pode estar configurada para arbitrar entre as solicitações quando existirem conflitos. A unidade de interface 24 pode estar configurada para transmitir as solicitações sobre a interconexão de endereço, e rotear os dados de escrita e os dados de leitura correspon- dentes para a/da interconexão de dados. As respostas de escrita recebidas podem ser roteadas para a fonte da solicitação de escrita correspondente. : A unidade de interface de sistema 28 pode ser uma interface de "nível de topo" que conecta os vários componentes do sistema 10 e provê í uma comunicação entre estes. A unidade de interface de sistema pode ter uma interconexão similar àquela mostrada com a unidade de interface 24, para acoplar os outros componentes no sistema 10.
O controlador de display de CLCD 12 está configurado para con- trolar a imagem exibida no CLCD. Por exemplo, um armazenamento de quadro armazenado na memória pode armazenar os dados que identificam a cor que cada pixel do display deve mostrar, e o controlador de display 12 pode ler o armazenamento de quadro e exibir a imagem descrita pelo arma- zenamento de quadro no display. Apesar de um controlador de display de CLCD ser ilustrado na figura 1, outras modalidades podem implementar qualquer controlador de display, configuradas para controlar qualquer tipo de display O codificador de vídeo 14 pode estar configurado para codificar os fluxos de vídeo utilizando qualquer esquema de codificação desejado. Os esquemas de codificação podem incluir as versões 1-4 do motion picture experts group (MPEG) ou qualquer versão subsequente, ou qualquer outro esquema de compressão ou de codificação de vídeo. Similarmente, o deco- dificador de vídeo 20 pode estar configurado para decodificar os fluxos de vídeo que foram codificados utilizando qualquer esquema de codificação desejado.
Apesar do decodificador de vídeo 20 incluir a sua própria unidade À de tradução de endereço nesta modalidade, outras modalidades podem in- cluir um decodificador de vídeo 20 que utiliza a unidade de tradução de en- dereço 26. Em tais modalidades, o decodificador de vídeo 20 pode também ser uma fonte de solicitação sensível à latência, e pode ter um caminho ou caminhos designados para este na partição sensível à latência da memória de TLB.
O misturador 16 pode estar configurado para executar as opera- ções de mistura de vídeo.
O escalador 18 pode estar configurado para efe- tuaras operações de escalagem de vídeo.
O sombreador 22 pode estar con- figurado para executar as operações de sombreamento de pixel.
Geralmen- . te, a mistura, escalagem, e sombreamento podem fazer parte da geração de um quadro para exibição.
Os periféricos de alto desempenho 30 podem incluir vários peri- féricos que são esperados gerar uma largura de banda significativa na uni- dade de interface de sistema 28 pelo menos se comparado com os outros periféricos no sistema 10. Por exemplo, em uma modalidade, os periféricos de alto desempenho podem incluir um controlador de acesso de mídia de rede (MAC) tal como um MAC de Ethernet, um controlador de fidelidade sem fio (WiFi),)e um controlador de barramento serial universal (USB). Outras modalidades podem incluir mais ou menos periféricos, e podem categorizar e/ou dispor os periféricos diferentemente.
Por exemplo, o controlador de MAC e USB podem ser periféricos de desempenho médio, enquanto que o controlador de WiFi pode ser um periférico de baixo desempenho.
Os outros periféricos 34 podem incluir vários periféricos de largura de banda mais bai- xa tal como um subsistema de áudio, uma interface de memória instantânea, uma entrada/saída de uso geral (I/O), temporizadores, uma memória de se- gredos no chip, uma máquina de criptografia, etc., ou qualquer sua combina- ção.
A unidade de DMA pode estar configurada para executar transferências paraaeda memória através do controlador de memória 42 em benefício dos periféricos de alto desempenho 30 e outros periféricos 34. A unidade de tradução de endereço 36 pode estar configurada para traduzir os endereços dos periféricos de foto 38, os quais podem incluir : uma interface de câmera, um codificador/decodificador (codec) de joint pho- tographic experts group (JPEG), e um codificador de vídeo, em uma modali- dade. Outras modalidades podem incluir outros conjuntos de periféricos de foto38 Em uma modalidade, a unidade de tradução de endereço 36 pode ser implementada utilizando uma microarquitetura similar àquela utilizada na unidade de tradução de endereço 26, apesar de outras implementações se- rem contempladas.
O processador 40 pode implementar qualquer arquitetura de conjunto de instruções, e pode estar configurado para executar as instruções naquela arquitetura de conjunto de instruções. O processador 40 pode em- pregar qualquer microarquitetura, incluindo escalar, superescalar, encadea- da, superencadeada, fora de ordem, em ordem, especulativa, não especula- ; tiva, etc., ou suas combinações. O processador 40 pode incluir um circuito, e opcionalmente pode implementar técnicas de microcodificação.
O controlador de memória 42 pode estar configurado para rece- ber solicitações de memória da unidade de interface de sistema 28 (a qual pode ter recebido as solicitações de um ou mais outros componentes como mostrado na figura 1). O controlador de memória 42 pode acessar a memó- riapara completar as solicitações (escrever os dados recebidos na memória para uma solicitação de escrita, ou prover dados da memória em resposta a uma solicitação de leitura). O controlador de memória 42 pode estar configu- rado para interfacear com qualquer tipo de memória, tal como de acesso randômico dinâmica (DRAM), DRAM síncrona (SDRAM), SDRAM de taxa de dados dupla (DDR, DDR2, DDR3, etc), RAMBUS DRAM (RDRAM), RAM estática (SRAM), etc. A memória pode estar disposta como múltiplos bancos de memória, tal como os módulos de memória em linha duplos (DIMMs), etc.
É notado que outras modalidades podem incluir outras combina- ções de componentes, incluindo subconjuntos ou superconjuntos dos com- — ponentes mostrados na figura 1 e/ou outros componentes. Apesar de uma instância de um dado componente poder ser mostrada na figura 1, outras modalidades podem incluir uma ou mais instâncias do dado componente.
Além disso, em outras várias modalidades, outros componentes que podem É ser acoplados na unidade de interface de sistema 28, ou porções dos outros componentes, podem também ser acoplados através de uma unidade de interface (não mostrada) similar à unidade de interface 24. Alternativamente, aunidade de interface 24 pode ser eliminada e os componentes acoplados a esta podem ser acoplados na unidade de interface de sistema 28 diretamen- te.
No entanto, em tais modalidades alternativas, a porção de endereço da conexão pode incluir a unidade de tradução de endereço 26. Observando agora a figura 2, um diagrama de blocos de uma modalidade da unidade de tradução de endereço 26 está mostrado.
Na mo- dalidade da figura 2, a unidade de tradução de endereço 26 inclui uma uni- " dade de controle 60, uma unidade de multiplexador (mux) 50, um arbitrador 52, uma fila de faltas (MQ) 64, um TLB 70, e registros de saída de endereço À físico 81 e 82. Como mostrado, a unidade de controle 60 está acoplada no mux 50. Tanto a unidade de controle 60 quanto o mux 50 estão acoplados para receber o endereço de leitura e o identificador de leitura (RID), e o en- dereço de escrita e o identificador de escrita (WID), como acima descrito.
O mux 50 está acoplado na MQ 64, e a entrada de seleção de mux está aco- piada no arbitrador 52. A MQ 64 está acoplada no TLB 70 e nos registros de saída81e382. A saída do TLB 70 está também acoplada nos registros de saída 81 e 82. Finalmente, o TLB 70 está acoplado para receber os dados de leitura da SIU 28. A unidade de controle 60 pode alocar uma entrada em cada ciclo de relógio do relógio de unidade de tradução de endereço, de modo que no casoem que uma solicitação de tradução chega, uma entrada já está aloca- da.
Quando uma solicitação de tradução de endereço é recebida da unidade de interface 24, está é armazenada em uma entrada alocada na MQ 64 por diversos ciclos conforme a tradução move através do encadeamento deTLB,mesmo se puder existir um acerto no TLB 70. Como baixo descrito em maiores detalhes em conjunto com a descrição da figura 5, se existir um acerto, a entrada pode ficar ociosa conforme o endereço físico é provido pa-
ra a SIU 28 através dos registros de saída 81 e 82. No entanto, se existir : uma falta de TLB, a tradução pode ficar na MQ 64 enquanto a tradução está sendo executada. Quando a tradução está completa e os dados de leitura são providos no TLB 70, a tradução pode ser tentada novamente. A unidade de controle 60 pode ser notificada do enchimento de TLB, e em resposta, a unidade de controle 60 pode transicionar a entrada correspondente para o estado pronto ou "em fila". Em uma modalidade, podem existir diversas tra- duções que estão prontas. Consequentemente, em cada ciclo o arbitrador 52 pode determinar qual tradução pronta pode ser tentada novamente depen- dendo de tais fatores como quão antiga cada tradução pronta é, por exem- plo.
f Em uma modalidade, a MQ 64 pode incluir um número de entra- das. A MQ 64 pode ser endereçada utilizando um identificador de MQ í (MQID), o qual pode ser atribuído a cada tradução conforme esta entra na unidade de tradução de endereço 26. Cada entrada pode armazenar qual- quer tipo de tradução. No entanto, as solicitações de tradução de endereço de leitura com o mesmo RID, e todas as solicitações de tradução de endere- ço de escrita devem seguir certas restrições de ordenamento. Por exemplo, em uma modalidade, todas as transferências de endereço de leitura com um dado valor de RID devem aparecer na SIU 28 na mesma ordem que estas apareceram na interface 24, e todas as transferências de endereço de escri- ta independentemente do valor WID, devem aparecer na SIU 28 na mesma ordem que estas apareceram na interface 24. Consequentemente, como adicionalmente abaixo descrito, em uma modalidade, as traduções de leitura quetêmomesmo RID podem ser conectadas juntas para formar uma fila de faltas virtual (VMQ). Similarmente, todas as solicitações de tradução de es- crita podem ser conectadas juntas para formar uma única VMQ. Assim as traduções de endereço em uma dada VMQ têm as mesmas restrições de ordenamento e devem ser processadas em uma ordem específica (por e- xemplo,a ordem na qual estas foram recebidas). No entanto, as solicitações de tradução em diferentes VMQs não devem. Assim, através de diferentes VMOs as solicitações de tradução podem ser processadas em qualquer or-
dem.
A unidade de controle 60 pode acompanhar a posição de cada tradu- É ção em uma dada VMQ acessando as informações associadas com cada entrada.
Como adicionalmente abaixo descrito em conjunto com a descri- ção dafigura3, quando uma tradução é armazenada na MQ 64, esta pode ser armazenada com informações de status que podem identificar a qual RID ou WID, e assim a qual VMQ, uma tradução pertence.
As informações podem também identificar se uma dada entrada é a frente ou o final de uma VMO.
As informações podem também incluir um apontador que indica a pró- ximatradução mais antiga em uma dada VMQ.
Observando a figura 3, um diagrama de blocos de uma modali- dade da fila de faltas 64 da unidade de tradução de endereço da figura 2 está mostrado.
O MQ 64 da figura 3 é um armazenamento que inclui um Ê número de entradas para armazenar as traduções.
Na modalidade ilustrada, aMQ64 inclui 16 entradas numeradas de zero até 15. Cada entrada inclui o endereço virtual de tradução 313, o identificador de leitura (RID) 301, um indicador de escrita (Wr), e o indicador de idade (Age) 305, um indicador de final 307, um indicador de estado 309, e um apontador de VMQ (Ptr) 311. Em uma modalidade, como todas as traduções de escrita pertencem à mesma VMOQ, um armazenamento de WID separado não é necessário.
Ao invés, um único bit de escrita pode ser utilizado.
No entanto, em outras mo- dalidades um armazenamento de WID adicional pode ser utilizado no lugar do indicador de Wr, ou além do indicador de Wr conforme desejado.
Em várias modalidades, o armazenamento que compõe a MQ 64 pode ser implementado como qualquer tipo de armazenamento.
Por exem- plo, em uma modalidade a MW 64 pode ser implementada utilizando um ar- quivo de registro de 16 entradas de porta única, apesar de outros números de entradas poderem ser utilizados.
Cada entrada pode ser independente- mente endereçada através do MQID como acima descrito.
O arquivo de re- gistro pode ser implementado utilizando uma rede de memórias de acesso randômico (RAM) na família de RAM estática, apesar de qualquer tipo de dispositivo de memória poder ser utilizado.
Além disso, apesar de cada en-
trada na MQ 64 ser mostrada incluindo todos os campos de informações, é contemplado que em algumas modalidades, algumas das informações tal como o VMQ Ptr 311 e o RID 301, por exemplo, podem ser armazenadas em registros separados que são concorrentemente acessados com cada entrada
Como acima descrito, a unidade de controle 60 pode acessar a MQ 64 utilizando um MOID.
Na modalidade ilustrada, o MQID é um identifi- cador de quatro bits, cada contagem do qual corresponde a uma das 16 en- tradas.
O RID 301 pode indicar a qual VMQ de leitura uma dada entrada per- tence.
Como adicionalmente abaixo descrito, em uma modalidade todas as traduções que têm o mesmo RID pertencem à mesma VMQ e todas as escri- É tas pertencem a um VMOQ.
O indicador Wr 303 indica se a tradução é uma tradução de escrita.
O indicador Age 305 indica a idade de cada entrada em relação a cada outra entrada.
Por exemplo, em uma modalidade, o indicador Age 305 pode ser um indicador de quatro bits que corresponde às 16 entra- das na MQ 64. O indicador de final 307 pode indicar se a entrada está no final de uma dada VMQ, e em uma modalidade, o indicador de final 307 po- de ser um único bit.
O indicador de estado 309 indica o estado presente da entrada.
Como abaixo descrito em maiores detalhes, cada entrada da MQ 64 pode estar em um de seis estados.
Consequentemente, em uma modalida- de, o indicador de estado 309 pode ser um indicador de três bits.
O endere- ço 313 pode armazenar algum número dos bits de endereço virtual da solici-
tação de tradução.
O indicador Age 305 pode rastrear a idade de cada entrada de —modo que ;se existirem N entradas na MQ 64 os indicadores Age 305 contêm uma sequência de valores de zero (a entrada mais nova) até N-1 (a entrada mais antiga). Consequentemente, em uma modalidade o indicador Age 305 pode ser um valor de quatro bits.
Como cada entrada está conectada em uma VMQ, o indicador Age 305 para aquela entrada pode ser ajustada para zero,eos indicadores Age 305 de todas as outras entradas válidas são in- crementados por um.
Quando uma tradução é removida tal como quando uma tradução está completa, os indicadores Age 305 de todas as entradas válidas mais antigas são decrementados por um.
f Como acima mencionado, todas as entradas que têm o mesmo RID pertencem à mesma VMQ, e todas as entradas de escrita pertencem a uma VMOQ. Assim, cada entrada em uma VMQ específica pode ser conecta- dajunta utilizando um apontador em uma estrutura do tipo de lista conecta- da. Consequentemente, o Ptr 311 é um apontador de VMQ que tem um valor que aponta para a entrada mais antiga seguinte dentro de uma dada VMQ. Se a entrada for a frente da VMQ, o valor de apontador aponta para si mes- mo. Se a entrada for o final da VMQ, o valor de apontador aponta para a en- trada mais antiga seguinte naquela VMOQ. Este tipo de mecanismo de apon- tador pode ser referido como um apontador inverso, já que o apontador co- meça no final e aponta para frente na lista para a mais antiga seguinte até que a frente seja atingida. Cada vez que uma tradução é recebida que per- tence a uma VMQ com entradas na MQ 64, a nova tradução pode ser ane- xada ao final da lista. Por exemplo, uma entrada é alocada e o endereço é armazenado. A unidade de controle 50 reinicia o indicador de final 307 da entrada de final anterior, ajusta o indicador de final 307 da nova entrada, e faz com que o valor de VMQ Ptr 311 da nova entrada aponte para a entrada final anterior. Quando uma entrada da frente é removida da fila, a unidade de controle 50 atualiza o apontador da próxima entrada mais nova naquela VMQ e faz com que o VMQ Ptr 311 aponte para si mesmo. Isto é, a unidade de controle 50 escreve o valor de MQID de entrada do próximo valor mais novo no VMQ Ptr 311.
É contemplado que em uma modalidade alternativa, o VMQ Ptr 311 conectado pode apontar para a próxima entrada mais nova em uma VMOQ. Consequentemente, em tal modalidade as entradas conectadas po- dem iniciar na entrada da frente e sucessivamente apontar para a próxima entrada mais nova até que o final seja alcançado. Além disso, ao invés de um indicador de final, um indicador de frente pode ser utilizado, e o valor de apontador de VMOQ da entrada final pode apontar para si mesmo. Para ilustrar a conexão de entrada de VMQ inversa acima, uma modalidade exemplar de MQ 64 está mostrada na figura 4A. Referindo à figura 44, o MQ 64 inclui 16 entradas. No entanto, somente um subconjunto t das informações está aqui mostrado para simplicidade. Como mostrado, o MOQ 64 inclui três filas de faltas virtuais ativas cada uma tendo três entradas. As três VMOQs estão identificadas pelo valor de RID ou o indicador Wr. Mais especificamente, uma VMQ inclui três entradas que têm um RID de 1 (VMQ 1), uma segunda VMQ inclui entradas que têm um RID de 5 (VIMQ 5) e a terceira VMQ inclui aquelas entradas que têm o indicador Wr ajustado para um valor lógico de um (VMQ W). Como mostrado, a entrada final da VMQ 1 está localizada na en- trada quatro como evidenciado pelo indicador de final sendo ajustado. O va- lor de VMQ Ptr é quatorze, assim apontando para a entrada mais antiga se- f guinte na VMQ 1. O valor de VMQ Ptr na entrada 14 é zero, o qual aponta para a entrada mais antiga seguinte em VMQ 1 e localizada na entrada zero. ô O valor de VMQ Ptr na entrada zero é zero. Isto indica que a entrada zero é afrente de VMQ 1 (e está assim indicado na figura 4A por um 'H').
Similarmente, a entrada final da VMQ 5 está localizada na entra- da 15 como evidenciado pelo indicador de final sendo ajustado. O valor de VMOQ Ptr é nove, assim apontando para a entrada mais antiga seguinte em VMQ 1. O valor de VMQ Ptr na entrada nove é um, o que aponta para a en- tradamais antiga seguinte em VMQ 1 e localizada na entrada um. O valor de VMOQ Ptr na entrada um é um. Isto indica que a entrada um é a frente da VMQ 1. Na VMQ W, a entrada final está localizada na entrada oito como e- videnciado pelo indicador de final sendo ajustado. O valor de VMQ Ptr é dois, assim apontando para a entrada mais antiga seguinte em VMQ W. O —valordeVMOQ Ptr na entrada dois é cinco, o que aponta para a entrada mais antiga seguinte em VMQ W e localizada na entrada cinco. O valor de VMQ Ptr na entrada cinco é cinco isto indica que a entrada cinco é a frente de VMQ W. Ainda, dentro de cada VMOQ, a entrada final é a mais nova (isto é, tem o valor de idade mais baixo) e a entrada da frente é a mais antiga (isto é, temo valor de idade mais alto). Na figura 4B, um diagrama arquitetural simplificado que apresen- ta as entradas conectadas das três VMOQs dentro de uma modalidade da MQ
64 da figura 4A está mostrado. Referindo à figura 4B, a VMQ 1 está no topo, : a VMQ 5 está no meio e a VMQ W está no fundo. Cada uma das caixas re- presenta uma entrada na MQ 64, o número dentro da caixa representa o número de entrada ou MQID, e o número de seta representa o VMQ Ptr 311 dafigura 4A. Como acima descrito e mostrado na figura 4B, o final de VMQ 1é a entrada quatro, a qual aponta para entrada 14, a qual aponta a entrada zero, a qual aponta para si mesma e é assim a frente de VMQ 1. As VMQs restantes (por exemplo, VMQ 5 e VMQ W) são similarmente conectadas e não adicionalmente descritas.
Observando a figura 5, um diagrama de estado que apresenta os estados operacionais de uma entrada dentro de uma modalidade especí- fica da MQ 64 está mostrado. Como mostrado no diagrama e como acima mencionado, cada entrada na MQ 64 pode estar em um dos seis estados.
Os estados incluem: Ocioso 501, Alocado 503, Inicial 505, Busca de entrada de tabela de páginas (PTE) 509, Espera de Preenchimento 511, e Enfileira- do 507. A unidade de controle 60 da figura 2 pode atualizar o indicador de estado em cada entrada em resposta a uma condição que mudaria o estado de uma entrada como adicionalmente abaixo descrito.
O estado Ocioso pode ser utilizado quando uma entrada não es- tarastreando uma tradução. Uma entrada Ociosa assemelha a uma entrada vazia que pode ser alocada se uma entrada for necessária. Uma entrada no estado Alocado foi alocada para utilização pela unidade de controle se uma solicitação de tradução foi recebida. Em uma modalidade, em cada ciclo, a unidade de controle 60 pode alocar uma entrada na MQ 64 para aceitar uma solicitação de tradução se uma estiver para chegar. Em uma modalidade, uma entrada pode ficar no estado Alocado por um ciclo, e se a entrada não for necessária, esta pode ser retornada para o estado Ocioso no final do ci- clo. Se uma solicitação de tradução chegar enquanto a entrada estiver no estado Alocado, esta entrada aceitaria a tradução, e a entrada transicionaria parao estado Inicial. Em uma modalidade, cada vez que uma tradução faz um acesso de TLB, sendo um acesso inicial ou uma nova tentativa, o estado pode ser recomputado. A entrada transicionará para um dos quatro estados
(por exemplo, Ocioso, Busca de PTE, Espera de Preenchimento, ou Enfilei- õ rado) dependendo do resultado do acesso de TLB.
Uma entrada pode ficar no estado Inicial por um número de ci- clos, enquanto que uma solicitação de tradução se desloca pelo encadea- mento de TLB para verificar uma falta de TLB.
Em uma modalidade, uma entrada pode ficar no estado Inicial por quatro ciclos aguardando uma indi- cação de acerto ou falta.
Uma entrada no estado Inicial pode transicionar para um de quatro outros estados dependendo do resultado do acesso de TLB.
Mais especificamente, se existir um acerto de TLB e a tradução com- pletar, a entrada transiciona para Ocioso.
Se existir uma falta de TLB e uma Busca de PTE for iniciada, a entrada transiciona para o estado de Busca de , PTE.
Se existir uma falta de TLB mas alguma outra entrada estiver no esta- do de Busca de PTE aguardando para que o mesmo PTE seja buscado, a : entrada transiciona para o estado de Espera de Preenchimento.
Se existir um acerto de TLB, mas a tradução não puder completar por razões tais co- mo restrições de ordenamento, barramento ocupado, etc., por exemplo, a entrada pode transicionar para o estado Enfileirado.
Uma entrada no estado de Busca de PTE enviou uma solicitação de busca de PTE para a memória e está aguardando os dados de tradução para esta solicitação.
Quando os dados são retornados para o TLB, o TLB pode notificar a unidade de controle 60 com uma notificação de preenchi- mento.
A entrada pode ser transicionada para um estado enfileirado.
Uma entrada no estado enfileirado está aguardando por sua vez para tentar novamente executar um acesso de tentar novamente uma tradu- çãodoTLB.
Quando um preenchimento de TLB ocorre ou existe um acerto de TLB, esta entrada está pronta para tentar novamente mas, como acima descrito, a entrada pode não ser a próxima entrada a ser tentada novamen- te.
Uma vez que uma nova tentativa é executada e a tradução é feita a en- trada pode transicionar para o estado Ocioso.
Uma entrada que transiciona para o estado de Espera de Preen- chimento está aguardando um preenchimento de TLB após uma falta de TLB, mas uma busca de PTE para o mesmo PTE já foi emitida por outra so-
licitação de tradução em outra entrada. Quando os dados de tradução são Ê retornados para o TLB, o TLB pode notificar a unidade de controle 60 com uma notificação de preenchimento. A entrada pode ser transicionada para o estado enfileirado.
A figura 6 é um fluxograma que apresenta a operação de uma modalidade da unidade de tradução de endereço mostrada na figura 2 até a figura 5. Referindo coletivamente à figura 2 até a figura 6, e começando no bloco 601 da figura 6, todas as entradas na MQ 64 estão no estado Ocioso. Cada ciclo de barramento, a unidade de controle 60 pode transicionar uma entrada (selecionada por um arbitrador 52) na MQ 64 para o estado Alocado no caso de uma solicitação de tradução ser recebida (bloco 603). Se ne- nhuma solicitação de tradução de Rd ou Wr for recebida (bloco 605), a uni- dade de controle 60 pode transicionar esta entrada de volta para o estado Ocioso no final do ciclo (bloco 607).
No entanto, se uma solicitação de tradução for recebida (bloco 605), a unidade de controle 60 pode armazenar a tradução na entrada alo- cada (bloco 609), e transicionar esta entrada para o estado inicial. A entrada pode ficar no estado inicial enquanto a tradução entra no encadeamento de TLB e ou um acerto ou uma falta do TLB 70 é indicada.
Em qualquer estágio, se uma segunda ou subsequente solicita- ção de tradução de leitura que tem o mesmo RID ou uma segunda ou sub- sequente tradução de escrita for recebida enquanto que a primeira ou qual- quer tradução anterior estiver na MQ 64 (bloco 631), a unidade de controle 60 está configurada para armazenar a segunda ou subsequente(s) solicita- ção(ões)em uma próxima entrada alocada da MQ 64 (bloco 633). A unidade de controle 60 então escreve as informações de status de entrada para tran- sicionar esta entrada para o estado Inicial (bloco 635) e anexa a entrada no final da VMQ apropriada escrevendo o MQID da entrada final anterior no VMOQ Ptr da nova entrada (bloco 637). A unidade de controle 60 também faz com que o indicador de final indique que a nova entrada é agora a final (blo- co 634). Consequentemente, o bloco 631 está mostrado em linhas traceja- das para indicar que isto pode ocorrer em qualquer lugar no fluxo operacio-
nal. Uma vez que uma nova entrada faz parte de uma VMQ existente, o res- Y tante do fluxo operacional aplica a qualquer entrada.
Se existir um acerto de TLB (bloco 613), e a tradução for feita (bloco 615), a unidade de controle 60 pode transicionar a entrada de volta parao estado Ocioso (bloco 607). Se a entrada não fizer parte de uma VMQ com outras entradas (bloco 641), a operação prossegue como acima descri- to em conjunto com o bloco 603. No entanto, se a entrada fizer parte de uma VMOQ com outras entradas (bloco 641), a unidade de controle 60 pode aces- sar a próxima entrada mais nova na VMOQ, e escrever o MQID da próxima mais nova no VMQ Ptr 311, por meio disto fazendo esta entrada a dianteira da VMQ (bloco 643). A operação prossegue como acima descrito em conjun- f to com o bloco 603.
Referindo de volta ao bloco 615, se a tradução não for feita por é razões tais como aquelas acima descritas, a unidade de controle 60 pode transicionar a entrada para o estado Enfileirado (bloco 617), onde a entrada pode aguardar por uma nova tentativa de um acesso de TLB (bloco 619). Uma vez que a nova tentativa for concedida pelo arbitrador 52, a tradução completa (bloco 621) e a entrada é retornada para o estado Ocioso (bloco 607). Em uma modalidade, quando existe mais de uma entrada dianteira que está no estado Enfileirado e pronta para tentar novamente o acesso de tra- dução para o TLB 70, o arbitrador 52 pode determinar qual entrada pode ser tentada novamente utilizando o indicador Age 305. Mais especificamente, a entrada pronta mais antiga pode ser tentada novamente primeiro em uma modalidade. A operação prossegue como acima descrito em conjunto com o bloco641.
Referindo de volta ao bloco 613, se existir uma falta de TLB, e não existir nenhuma outra entrada com uma solicitação de tradução que já executou uma Busca de PTE para o mesmo PTE (bloco 623), uma busca de PTE é emitida e a unidade de controle 60 pode transicionar a entrada para o — estado de Busca de PTE (bloco 625) para aguardar o preenchimento de TLB e o retorno dos dados de tradução para o TLB 70 (bloco 627). Quando os dados de tradução chegam no TLB 70 a unidade de controle 60 é notificada do preenchimento de TLB, e a unidade de controle 60 pode transicionar a entrada para o estado Enfileirado (bloco 617) e aguardar uma nova tentativa do acesso de tradução do TLB (bloco 619). Quando a tradução está comple- ta (bloco 621), a unidade de controle 60 pode transicionar a entrada para o estado Ocioso (bloco 607). A operação prossegue como acima descrito em conjunto com o bloco 603.
Por outro lado, se existir uma falta de TLB (bloco 613), e outra solicitação de tradução em outra entrada já executou uma Busca de PTE para o mesmo PTE (bloco 623), então a unidade de controle 60 pode transi- cionara entrada para o estado de Espera de Preenchimento (bloco 629) pa- ra aguardar o retorno dos dados de tradução para o TLB 70 (bloco 627). Quando os dados de tradução chegam do TLB 70 a unidade de controle 60 é notificada do preenchimento de TLB, e a unidade de controle 60 pode Ê transicionar a entrada para o estado Enfileirado (bloco 617) para aguardar uma nova tentativa do acesso de tradução do TLB (bloco 619). Quando a tradução está completa (bloco 621), a unidade de controle 60 pode transi- cionar a entrada para o estado Ocioso (bloco 607). A operação prossegue como acima descrito em conjunto com o bloco 641.
É notado que apesar do fluxo operacional ser descrito e mostra- doemuma ordem específica, é contemplado que em outras modalidades, as operações apresentadas nos vários blocos podem ser executadas em uma ordem diferente, como desejado.
Apesar das modalidades acima terem sido descritas em detalhes consideráveis, numerosas variações e modificações ficarão aparentes para aqueles versados na técnica uma vez que a descrição acima for totalmente apreciada. É pretendido que as reivindicações seguintes sejam interpretadas para abranger todas tais variações e modificações.

Claims (1)

  1. E)
    REIVINDICAÇÕES : 1. Unidade de tradução (26), que compreende: uma memória de tradução de endereços lineares em endereços físicos (do inglês translation lookaside buffer (TLB) (70)) configurada para armazenar uma pluralidade de traduções de endereços; uma fila de faltas (64) acoplada na memória TLB, e configurada para armazenar as solicitações de tradução de endereço recebidas que fal- taram na memória TLB, em que fila de faltas inclui uma pluralidade de entra- das, em que pelo menos algumas da pluralidade de entradas estão cada uma configurada para armazenar uma respectiva solicitação de tradução de endereço e um apontador (311) correspondente, em que o apontador cor- . respondente de uma dada entrada identifica outra entrada na fila de faltas que armazena outra respectiva solicitação de tradução de endereço que tem E uma restrição de ordenamento de processo que é a mesma que uma restri- ção de ordenamento de processo da respectiva solicitação de tradução de endereço na dada entrada; e uma unidade de controle (60) acoplada na fila de faltas e confi- gurada para processar as solicitações de tradução de endereço recebida, em que a unidade de controle está configurada para processar cada respec- tiva solicitação de tradução de endereço em uma ordem que depende do identificador de cada respectiva solicitação de tradução de endereço.
    2. Unidade de tradução de acordo com a reivindicação 1, em que uma ou mais das respectivas solicitações de tradução de endereço que têm a mesma restrição de ordenamento de processo pertencem a uma fila defaltas virtuais (VMQ).
    3. Unidade de tradução de acordo com a reivindicação 2, em que cada VMQ começa com uma respectiva solicitação de tradução de en- dereço mais nova e termina com uma respectiva solicitação de tradução de endereço mais antiga.
    4. Unidade de tradução de acordo com a reivindicação 2, em que cada respectiva solicitação de tradução de endereço está conectada na respectiva tradução de endereço mais antiga seguinte na mesma VMQ pelo apontador.
    5. Unidade de tradução de acordo com a reivindicação 2, em que a entrada associada com uma respectiva solicitação de tradução de en- dereço mais nova de uma dada VMQ ainda inclui um identificador de final (307).
    6. Unidade de tradução de acordo com a reivindicação 2, em que o apontador de uma respectiva solicitação de tradução de endereço mais antiga de uma dada VMQ identifica uma entrada na fila de faltas que armazena a respectiva solicitação de tradução de endereço mais antiga da dada VMQ.
    7. Unidade de tradução de acordo com a reivindicação 2, em que a unidade de controle está configurada para manter cada solicitação de tradução em cada VMQ em um de uma pluralidade de estados, em que em resposta a receber uma notificação que uma tradução de endereço que cor- responde a uma dada solicitação de tradução foi armazenada na memória TLB, a unidade de controle está ainda configurada para transicionar a dada solicitação de tradução para um estado enfileirado.
    8. Unidade de tradução de acordo com a reivindicação 7, ainda compreendendo um arbitrador (52) acoplado na fila de faltas e configurado para selecionar para cada ciclo de nova tentativa, uma solicitação de tradu- ção mais antiga entre todas as solicitações de tradução no estado enfileira- do.
    9. Unidade de tradução de acordo com a reivindicação 1, em que cada entrada ainda inclui um indicador de idade (305) que indica uma idade de cada entrada na fila de faltas umas em relação às outras entradas armazenando uma respectiva solicitação de tradução de endereço válida.
    10. Unidade de tradução de acordo com a reivindicação 9, ainda compreendendo um arbitrador (52) acoplado na fila de faltas e configurado para selecionar para uma nova tentativa, uma respectiva solicitação de tra- dução de endereço específica em resposta a receber uma notificação que endereços correspondentes foram armazenadas no TLB, com base no indi- : cador de idade de cada uma da pluralidade de respectivas solicitações de tradução de endereço.
    12. Sistema, que compreende: um ou mais dispositivos; uma unidade de tradução como definido em qualquer uma das reivindicações 1 a 11 precedentes.
    13. Método, que compreende: um memória de tradução de endereços lineares em endereços físicos (do inglês translation lookaside buffer TLB) que armazena uma plura- lidade de traduções de endereços; uma fila de faltas que armazena as solicitações de tradução de endereço recebidas que faltaram no TLB, em que fila de faltas inclui uma Ê pluralidade de entradas, em que pelo menos algumas da pluralidade de en- tradas avmazena uma respectiva solicitação de tradução de endereço e um identificador correspondente, em que o identificador correspondente de uma dada entrada identifica outra entrada na fila de faltas que armazena outra respectiva solicitação de tradução de endereço que tem uma restrição de ordenamento de processo que é a mesma que uma restrição de ordenamen- tode processo da respectiva solicitação de tradução de endereço na dada entrada; e uma unidade de controle que processa cada respectiva solicita- ção de tradução de endereço em uma ordem que é dependente do identifi- cador de cada respectiva solicitação de tradução de endereço.
    14. Método de acordo com a reivindicação 13, em que uma ou mais das respectivas solicitações de tradução de endereço que têm a mes- ma restrição de ordenamento de processo pertencem a uma fila de faltas virtuais (VMQ).
    15. Método de acordo com a reivindicação 14, ainda compreen- — dendo, dentroda cada VMOQ, anexar uma nova respectiva solicitação de tra- dução de endereço a uma respectiva solicitação de tradução de endereço mais nova fazendo o identificador da nova respectiva solicitação de tradução uma memória de tradução de endereços lineares em endereços É físicos (do inglês translation lookaside buffer (TLB) (70)) que armazena uma pluralidade de traduções de endereços; uma fila de faltas (64) que armazena as solicitações de tradução de endereço recebidas que faltaram na memória TLB, em que fila de faltas inclui uma pluralidade de entradas, em que pelo menos algumas da plurali- dade de entradas armazena uma respectiva solicitação de tradução de en- dereço e um apontador (311) correspondente, em que o apontador corres- pondente de uma dada entrada identifica outra entrada na fila de faltas que armazena outra respectiva solicitação de tradução de endereço que tem uma restrição de ordenamento de processo que é a mesma que uma restri- . ção de ordenamento de processo da respectiva solicitação de tradução de endereço na dada entrada; e o uma unidade de controle que processa cada respectiva solicita- ção de tradução de endereço em uma ordem que é dependente do identifi- cador de cada respectiva solicitação de tradução de endereço.
    14. Método de acordo com a reivindicação 13, em que uma ou mais das respectivas solicitações de tradução de endereço que têm a mes- ma restrição de ordenamento de processo pertencem a uma fila de faltas virtuais (VMQ).
    15. Método de acordo com a reivindicação 14, ainda compreen- dendo, dentro da cada VMQ, anexar uma nova respectiva solicitação de tra- dução de endereço a uma respectiva solicitação de tradução de endereço mais nova fazendo o apontador da nova respectiva solicitação de tradução de endereço identificar a respectiva solicitação de tradução de endereço mais nova e fazendo o apontador da nova respectiva solicitação de tradução de endereço identificar a nova respectiva solicitação de tradução de endere- ço como uma nova respectiva solicitação de tradução mais nova.
    16. Método de acordo com a reivindicação 13, ainda compreen- — dendomanter um indicador (305) para indicar uma idade de cada entrada na fila de faltas umas em relação às outras entradas na fila de faltas.
    17. Método de acordo com a reivindicação 16, ainda compreen-
    dendo selecionar para uma nova tentativa em cada ciclo, uma respectiva 1 solicitação de tradução de endereço mais antiga entre todas as respectivas Solicitações de tradução de endereço em um estado pronto.
BR112012010143-9A 2009-10-29 2010-10-29 Unidade de tradução, sistema e método BR112012010143B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/608,605 2009-10-29
US12/608,605 US8386748B2 (en) 2009-10-29 2009-10-29 Address translation unit with multiple virtual queues
PCT/US2010/054702 WO2011059812A1 (en) 2009-10-29 2010-10-29 Address translation unit with multiple virtual queues

Publications (2)

Publication Number Publication Date
BR112012010143A2 true BR112012010143A2 (pt) 2021-02-17
BR112012010143B1 BR112012010143B1 (pt) 2021-09-21

Family

ID=43530515

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112012010143-9A BR112012010143B1 (pt) 2009-10-29 2010-10-29 Unidade de tradução, sistema e método

Country Status (7)

Country Link
US (1) US8386748B2 (pt)
EP (1) EP2494449A1 (pt)
JP (1) JP5453546B2 (pt)
KR (1) KR101324923B1 (pt)
CN (1) CN102597971B (pt)
BR (1) BR112012010143B1 (pt)
WO (1) WO2011059812A1 (pt)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8285926B2 (en) * 2010-05-03 2012-10-09 Oracle America, Inc. Cache access filtering for processors without secondary miss detection
KR20120083160A (ko) * 2011-01-17 2012-07-25 삼성전자주식회사 메모리 관리 유닛, 이를 포함하는 장치들, 및 이의 동작 방법
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US9921967B2 (en) 2011-07-26 2018-03-20 Intel Corporation Multi-core shared page miss handler
US9009445B2 (en) 2011-10-20 2015-04-14 Apple Inc. Memory management unit speculative hardware table walk scheme
US8954755B2 (en) * 2012-01-23 2015-02-10 International Business Machines Corporation Memory address translation-based data encryption with integrated encryption engine
US8751830B2 (en) 2012-01-23 2014-06-10 International Business Machines Corporation Memory address translation-based data encryption/compression
US9244840B2 (en) 2012-12-12 2016-01-26 International Business Machines Corporation Cache swizzle with inline transposition
US9460022B2 (en) 2013-03-15 2016-10-04 Intel Corporation Mechanism for facilitating dynamic and efficient management of translation buffer prefetching in software programs at computing systems
US9875187B2 (en) * 2014-12-10 2018-01-23 Intel Corporation Interruption of a page miss handler
US9524249B2 (en) * 2014-12-23 2016-12-20 Intel Corporation Memory encryption engine integration
KR102001486B1 (ko) * 2015-04-22 2019-07-18 캐논 가부시끼가이샤 복수의 외부 장치와 통신을 행하는 화상 형성장치, 이 장치의 제어방법, 및 기억매체
US10007619B2 (en) * 2015-05-29 2018-06-26 Qualcomm Incorporated Multi-threaded translation and transaction re-ordering for memory management units
US9836397B2 (en) * 2015-11-20 2017-12-05 International Business Machines Corporation Direct memory access of dynamically allocated memory
KR102581438B1 (ko) * 2017-01-12 2023-09-21 삼성전자주식회사 무선 디스플레이 서브시스템 및 시스템-온-칩
US10649912B2 (en) 2017-07-14 2020-05-12 International Business Machines Corporation Method and apparatus for an efficient TLB lookup
US11061822B2 (en) * 2018-08-27 2021-07-13 Qualcomm Incorporated Method, apparatus, and system for reducing pipeline stalls due to address translation misses
US10776281B2 (en) * 2018-10-04 2020-09-15 International Business Machines Corporation Snoop invalidate filter for distributed memory management unit to reduce snoop invalidate latency
US11467959B1 (en) * 2021-05-19 2022-10-11 Apple Inc. Cache arbitration for address translation requests
US20230153249A1 (en) * 2021-11-18 2023-05-18 Ati Technologies Ulc Hardware translation request retry mechanism

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060136696A1 (en) * 2004-12-16 2006-06-22 Grayson Brian C Method and apparatus for address translation
US20070094476A1 (en) * 2005-10-20 2007-04-26 Augsburg Victor R Updating multiple levels of translation lookaside buffers (TLBs) field
US20070180158A1 (en) 2006-02-01 2007-08-02 International Business Machines Corporation Method for command list ordering after multiple cache misses
US7539840B2 (en) 2006-05-30 2009-05-26 International Business Machines Corporation Handling concurrent address translation cache misses and hits under those misses while maintaining command order
JP2009146344A (ja) 2007-12-18 2009-07-02 Hitachi Ltd 計算機仮想化装置のtlb仮想化方法および計算機仮想化プログラム
US8103831B2 (en) * 2008-03-31 2012-01-24 Intel Corporation Efficient method and apparatus for employing a micro-op cache in a processor
US7996650B2 (en) * 2008-07-14 2011-08-09 Via Technologies, Inc. Microprocessor that performs speculative tablewalks

Also Published As

Publication number Publication date
KR101324923B1 (ko) 2013-11-01
JP5453546B2 (ja) 2014-03-26
CN102597971B (zh) 2015-01-07
EP2494449A1 (en) 2012-09-05
US8386748B2 (en) 2013-02-26
BR112012010143B1 (pt) 2021-09-21
JP2013509655A (ja) 2013-03-14
KR20120070591A (ko) 2012-06-29
WO2011059812A1 (en) 2011-05-19
US20110107057A1 (en) 2011-05-05
CN102597971A (zh) 2012-07-18

Similar Documents

Publication Publication Date Title
BR112012010143A2 (pt) unidade de tradução de endereço com múltiplas filas virtuais
CN109154918B (zh) 自刷新状态机mop阵列
EP3474150B1 (en) Memory controller arbiter with streak and read/write transaction management
US8316212B2 (en) Translation lookaside buffer (TLB) with reserved areas for specific sources
US8866831B2 (en) Shared virtual memory between a host and discrete graphics device in a computing system
US8301928B2 (en) Automatic wakeup handling on access in shared memory controller
JP5787629B2 (ja) マシンビジョン用マルチプロセッサシステムオンチップ
JP5688823B2 (ja) ディスプレイパイプにおけるストリーミング式翻訳
EP3485383A1 (en) Memory controller with flexible address decoding
KR101355105B1 (ko) 캐시 일관성 보장을 위한 공유 가상 메모리 관리 장치
JP2012038293A5 (pt)
KR20090073983A (ko) 인-메모리, 인-페이지 디렉토리 캐시 일관성 기법
EP0509994A1 (en) CENTRALIZED TABLE OF MODIFICATION AND MEASUREMENT FOR VIRTUAL MEMORY SYSTEM OF A MULTICALCULATOR.
US11237960B2 (en) Method and apparatus for asynchronous memory write-back in a data processing system
KR100220204B1 (ko) 메모리 보호 메카니즘

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 29/10/2010, OBSERVADAS AS CONDICOES LEGAIS. PATENTE CONCEDIDA CONFORME ADI 5.529/DF, QUE DETERMINA A ALTERACAO DO PRAZO DE CONCESSAO.