O que é o Translation Lookaside Buffer?

As CPUs são bestas incrivelmente complexas. Há um grande número de partes interconectadas que precisam funcionar em perfeita harmonia para atingir os níveis de desempenho que vemos. O desempenho da memória é um fator chave no desempenho das CPUs modernas, especificamente como um fator limitante.

Por que a velocidade da memória é tão importante?

As CPUs são incrivelmente rápidas, com as gerações mais recentes rodando a 5,7 GHz quando adequadamente resfriadas. Isso permite que eles concluam 5,7 bilhões de operações a cada segundo. Muitas dessas operações realizam uma ação em algum tipo de dado que precisa ser armazenado na memória.

A memória principal do sistema, conhecida como RAM, também é muito rápida. Infelizmente, é muito rápido quando comparado a qualquer coisa que não seja a CPU. A latência absoluta na RAM moderna de ponta é da ordem de 60 nanossegundos. Infelizmente, isso se traduz em aproximadamente 342 ciclos de CPU. Para acelerar o acesso à memória, é usado um cache da CPU que armazena os dados dinamicamente. Esse cache está localizado na própria matriz da CPU e usa células SRAM em vez de células DRAM, tornando-o muito mais rápido. Infelizmente, o cache da CPU também é muito menor do que a RAM do sistema, geralmente não totalizando nem 100 MB. Ainda assim, apesar de seu tamanho diminuto, o sistema de cache da CPU em camadas aumenta enormemente o desempenho do sistema.

Aí vem a memória virtual para bagunçar tudo

Os computadores modernos utilizam um sistema chamado memória virtual. Em vez de alocar endereços de memória física para processos, são usados ​​endereços de memória virtual. Cada processo tem seu próprio espaço de endereço de memória virtual. Isso tem dois benefícios. Em primeiro lugar, fornece fácil separação entre a memória que pertence a um processo e a memória que pertence a outro. Isso ajuda a evitar ataques em que software mal-intencionado lê dados da memória de outro software, podendo acessar informações confidenciais. Ele também oculta a estrutura de memória física do processo. Isso permite que a CPU mova bits de memória raramente usados ​​para um arquivo de paginação no armazenamento, sem necessariamente desmontá-lo da RAM virtual. Isso permite que o computador gerencie suavemente cenários em que é necessária mais RAM do que a fisicamente presente. Sem memória virtual,

Infelizmente, se você usar endereços de memória virtual, o computador precisará realmente converter esses endereços de memória virtual em endereços de memória física para ler os dados. Isso requer uma tabela para armazenar todas as traduções de endereços de memória virtual para endereços de memória física. O tamanho disso depende diretamente da quantidade de RAM em uso. Geralmente é bastante pequeno, pelo menos quando comparado à capacidade de RAM do sistema. Infelizmente, se você armazenar a tradução entre endereços virtuais e endereços físicos na RAM, precisará fazer duas solicitações à RAM para cada solicitação à RAM. Um para encontrar o endereço físico a ser solicitado e outro para realmente acessar esse local.

Entre no buffer de tradução

A solução para este problema é armazenar a tabela de tradução em algum lugar mais rápido. O cache da CPU se encaixaria perfeitamente, pelo menos do ponto de vista da velocidade. O problema com isso, no entanto, é que o cache da CPU é minúsculo e já é muito utilizado. A tabela não apenas não cabe no cache, mas isso interromperia seu uso já definidor de desempenho.

Claro, se o princípio do cache já funciona para acesso à memória, por que não repeti-lo para a tabela de tradução? E é exatamente isso que é o Translation Lookaside Buffer, ou TLB. É um cache de alta velocidade para traduções recentes de endereços. Não é grande o suficiente para armazenar a tabela inteira, mas seu tamanho pequeno significa que pode responder muito rapidamente, dentro de um único ciclo de clock.

Qualquer solicitação de memória passa pelo TLB. Se houver um acerto de TLB, ele pode fornecer o endereço de memória física para a solicitação real, geralmente adicionando um único ciclo de latência. Se houver uma falta de TLB, a pesquisa deve ser realizada na memória principal. Há uma pequena penalidade de desempenho para uma falta de TLB de cerca de 5 ciclos, uma perda mais do que eclipsada pela latência de acesso à memória. Depois que a tradução de endereço é recuperada da RAM do sistema, ela é enviada para o TLB e a solicitação é repetida com um acerto imediato do TLB.

Nota: Existem diferentes esquemas para remoção de TLB. Alguns podem usar um esquema First In, First Out ou FIFO. Outros podem usar um esquema menos usado ou LFU.

Nos raros casos em que não há entrada na tabela de conversão de endereços, ocorre uma falha de página, pois os dados solicitados não estão na RAM. O sistema operacional deve lidar com a falha e transferir os dados do armazenamento para a RAM antes que a solicitação possa continuar.

Conclusão

O Translation Lookaside Buffer, ou TLB, é um cache de CPU de alta velocidade dedicado a armazenar em cache traduções de endereços recentes do arquivo de paginação na RAM do sistema. Isso é necessário porque os sistemas de memória virtual, conforme implementados em todos os computadores modernos, precisariam de duas solicitações à RAM para cada solicitação à RAM. Um para converter o endereço de memória virtual em um endereço de memória física e outro para acessar o endereço físico. Ao armazenar em cache as traduções recentes, a latência da memória pode ser bastante reduzida para ocorrências de TLB.

Deve-se tomar cuidado para garantir que as traduções em cache sejam relevantes para o processo ativo no momento. Como cada processo tem um espaço de endereço virtual diferente, eles não podem ser reutilizados. Não limitar estritamente esta foi a causa por trás da vulnerabilidade Meltdown.



Como clonar um disco rígido

Como clonar um disco rígido

Na era digital moderna, onde os dados são um bem valioso, a clonagem de um disco rígido no Windows pode ser um processo crucial para muitos. Este guia completo

Como consertar o driver WUDFRd que falhou ao carregar no Windows 10?

Como consertar o driver WUDFRd que falhou ao carregar no Windows 10?

Você está enfrentando a mensagem de erro ao inicializar o computador, informando que o driver WUDFRd falhou ao carregar no seu computador?

Como corrigir o código de erro NVIDIA GeForce Experience 0x0003

Como corrigir o código de erro NVIDIA GeForce Experience 0x0003

Você está enfrentando o código de erro 0x0003 da experiência NVIDIA GeForce em sua área de trabalho? Se sim, leia o blog para descobrir como corrigir esse erro de forma rápida e fácil.

Noções básicas de impressão 3D: adesão à base da impressora

Noções básicas de impressão 3D: adesão à base da impressora

Aprendendo sobre impressão 3D? Aqui está o que você precisa saber sobre a adesão da base da impressora.

Como remover uma GPU do Windows PC em 2023

Como remover uma GPU do Windows PC em 2023

Você precisa remover a GPU do seu PC? Junte-se a mim enquanto explico como remover uma GPU do seu PC neste guia passo a passo.

Como instalar um SSD NVMe em um desktop e laptop

Como instalar um SSD NVMe em um desktop e laptop

Comprou um novo SSD NVMe M.2, mas não sabe como instalar? Continue lendo para saber como instalar um SSD NVMe em um laptop ou desktop.

O que é uma bomba lógica?

O que é uma bomba lógica?

Uma bomba lógica é um incidente de segurança em que um invasor configura uma ação atrasada. Continue lendo para saber mais.

O que é Stuxnet?

O que é Stuxnet?

O Stuxnet era um worm autopropagado. Foi o primeiro uso de uma arma cibernética e a primeira ocorrência de malware.

O que é um hacker ético?

O que é um hacker ético?

Um hacker ético é um hacker que age dentro das restrições da lei. Continue lendo para saber mais sobre o assunto.

O que é criptografia simétrica?

O que é criptografia simétrica?

Existem muitas partes diferentes da criptografia. Se você deseja criptografar alguns dados, existem dois tipos de algoritmos que você pode usar: simétrico