Como um TLB e o cache de dados funcionam?

15

Estou tentando estudar para um exame e percebi que estou confuso sobre como o TLB e o cache de dados funcionam.

Entendo que o TLB é essencialmente um cache dos endereços físicos usados ​​mais recentemente. No entanto, eu estava olhando para um diagrama no meu livro (mostrado abaixo) e não entendo o que estava acontecendo nele. De repente, divide o endereço físico e o usa para indexar o cache, eu acho. Mas por que ele está mostrando o cache e os dados separadamente? e por que o deslocamento de byte fica flutuando? Tenho certeza de que o cache também deve armazenar dados. Eu não acho que seu único objetivo seja determinar se há um acerto ou um erro dentro dele.

Peço desculpas antecipadamente por minha ignorância, mas o livro mal cobre os TLBs (é um pouco mais do que uma página) e não faz um bom trabalho ao explicar a relação entre um TLB e o cache.

Figura

audiFanatic
fonte
Esta pergunta é muito longa. Você pode extrair uma pergunta específica e estreita e editar sua pergunta para reduzi-la a apenas uma pergunta específica? Parte de fazer uma boa pergunta envolve pensar cuidadosamente sobre qual é a essência mínima do que você precisa saber e incluir apenas o que é relevante e essencial para essa pergunta. Por exemplo, se você tiver uma pergunta específica sobre como os TLBs funcionam, em vez de despejar tudo isso, que tal tentar enquadrar uma única pergunta estritamente criada sobre um TLB?
DW
Tudo bem, minha intenção era mostrar o que eu já entendo sobre o assunto, já que a maioria das pessoas na troca de pilhas não gosta de responder perguntas sem que o solicitante mostre algum esforço (compreensivelmente). Acho que não posso fazer todo mundo feliz. Talvez eu apenas edite com minha pergunta em negrito ou algo assim.
AudiFanatic #
@ DW é melhor assim?
AudiFanatic #
audiFanatic, você pode ter interpretado mal ou mal os meus comentários e a mentalidade de "mostrar algum esforço". Minha sugestão é que você identifique uma pergunta restrita - algo como "como um TLB funciona? Eu não entendo direito" - e depois concentre-se apenas nessa pergunta. Sim, você precisa fazer um esforço sério para responder a essa pergunta e deve mostrar o esforço que fez para responder a essa pergunta específica , mas o esforço em um assunto não relacionado não é relevante (por exemplo, o fato de você ter se esforçado bastante para progresso em uma questão de lição de casa que fez você pensar nessa questão).
DW
Deixe-me ajudá-lo a entender os antecedentes por trás disso. Queremos criar um arquivo de perguntas e respostas de alta qualidade que seja útil para outras pessoas (não apenas para você). A melhor coisa que você pode fazer para ajudar é extrair uma pergunta específica, estreita e bem colocada, e concentrar sua pergunta apenas nessa pergunta. Uma pergunta extensa e aberta, que não é muito focada, é menos provável que seja útil para outras pessoas que possam tropeçar nela (e também é mais difícil para os leitores chegarem ao ponto e entenderem qual é o cerne da sua pergunta, então é menos provável que você obtenha uma boa resposta).
DW

Respostas:

23

Eu acho que vejo sua confusão. O TLB e o cache de dados são dois mecanismos separados. Ambos são caches de uma espécie, mas armazenam em cache coisas diferentes:

  • Portanto, o TLB atua como um cache dedicado para essa pesquisa. O TLB possui algumas entradas TLB, nas quais cada entrada TLB contém um endereço virtual e seu endereço físico correspondente.

    O TLB permite que o processador converta rapidamente endereços virtuais em endereços físicos. Se uma instrução solicitar ao processador que faça alguma operação de memória em um endereço (virtual), o processador primeiro verifica se o TLB contém uma entrada para esse endereço virtual. Caso isso aconteça, isso é chamado de "acerto de cache" para a pesquisa TLB e, como a entrada TLB também contém o endereço físico traduzido, o processador imediatamente sabe qual endereço físico usar. Caso contrário, isso é uma falta de cache para a pesquisa TLB, e o processador precisa fazer laboriosamente a conversão de virtual para físico, percorrendo a tabela da página. (Após concluir a conversão, ela adiciona uma entrada ao TLB para que futuras conversões desse endereço virtual ocorram muito mais rapidamente.)

  • O cache de dados é um cache para o conteúdo da memória. A memória principal permite especificar um endereço físico e ler o valor nesse endereço físico. No entanto, a memória principal está lenta. Se tivéssemos que ir para a memória principal toda vez que desejássemos fazer qualquer operação de memória, nosso processador ficaria muito lento.

    Portanto, o cache de dados atua como um cache dedicado para leituras de memória. O cache de dados possui algumas entradas de cache, em que cada entrada de cache contém um endereço físico e o valor da memória nesse endereço.

    O cache de dados permite que o processador leia muito rapidamente da memória. Quando o processador deseja ler a memória em algum endereço (físico), primeiro verifica o cache de dados para ver se contém uma entrada de cache para esse endereço. Nesse caso, isso é conhecido como "acerto de cache" (no cache de dados) e o processador pode usar imediatamente o valor dos dados armazenados nessa entrada de cache, sem precisar entrar em contato com a memória principal. Caso contrário, é um "erro de cache" (para o cache de dados) e o processador precisa ir para a memória principal. (Depois que o processador recebe o valor nesse endereço da memória principal, ele adiciona uma entrada de cache ao cache de dados, para que as tentativas de ler o mesmo endereço sejam atingidas no cache de dados.)

Ambos são caches, mas servem a um propósito diferente. O processador usa os dois para cada operação de memória: primeiro usa o TLB para converter de endereço virtual em endereço físico e depois verifica o cache de dados para acelerar o processo de leitura do valor armazenado na memória naquele endereço.

Para mais detalhes, você pode ler o artigo da Wikipedia sobre TLBs . Se você fizer uma pesquisa, há muitas outras informações disponíveis em TLBs e caches de dados. Sugiro pesquisar por "TLB" e "cache L1" ou "cache L2" (os dois últimos são tipos de caches de dados).

(Para referência futura: esperamos que você faça alguma pesquisa sobre sua pergunta antes de fazer a pergunta aqui e verifique as fontes padrão da Internet. Se a resposta puder ser encontrada na Wikipedia, você não fez uma pesquisa suficiente por conta própria. melhor sorte se você consultasse as fontes da Internet para obter informações sobre como TLBs antes de perguntar aqui.Veja também Quanto esforço de pesquisa é esperado dos usuários do Stack Overflow ? . Portanto, aproveite a oportunidade para usar isso como uma lição de como melhorar seus habilidades de pesquisa - algo que será valioso para você ao longo de sua carreira.)

DW
fonte
11
Obrigado! Isso esclareceu quase tudo. Passei muito tempo pesquisando isso (vários dias), mas não consegui encontrar uma informação clara e concisa que unisse tudo (além da minha confusão provavelmente não ajudou na minha pesquisa). Como analogia, eu senti como se estivesse em uma farmácia procurando uma cura para alguma doença não diagnosticada; usando apenas sintomas como um guia.
AudiFanatic #
Com isso dito, eu tenho mais uma pergunta. Se eles são caches, por que o livro está separando as partes de dados e tags do cache (inferno, a porção de dados é ainda mais alta que a tag e a parte de bit válida)? Parece que o cache serve apenas para verificar as tags (como se não armazenasse dados). Esse bloco de dados está no canto inferior direito da parte da imagem do cache ou parte da memória principal ou o quê?
AudiFanatic #
11
(1) A "etiqueta" é a parte do endereço que está sendo traduzido. Simplifiquei um pouco: em vez de o TLB traduzir um único endereço virtual para um único endereço físico, ele traduz o valor de uma granularidade de página inteira. Se a página tiver 4096 bytes, a pesquisa virtual para física examinará apenas os 20 bits superiores do endereço virtual; se o endereço virtual VPV+1 1P+1 1V+2P+2V+4095P+4095
iiEu
OK ótimo. Obrigado. Eu acho que foi a separação que mais me confundiu.
AudiFanatic #