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.
fonte
Respostas:
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.)
fonte