Cache de rastreamento - Trace cache

Image
Trabalho de um cache de rastreamento

Na arquitetura de computador , um cache de rastreamento ou cache de rastreamento de execução é um cache de instrução especializado que armazena o fluxo dinâmico de instruções conhecido como rastreamento . Ajuda a aumentar a largura de banda de busca de instruções e diminuir o consumo de energia (no caso do Intel Pentium 4 ), armazenando traços de instruções que já foram buscadas e decodificadas. Um processador de rastreamento é uma arquitetura projetada em torno do cache de rastreamento e processa as instruções em granularidade de nível de rastreamento. A teoria matemática formal dos traços é descrita por monóides traço .

Fundo

A publicação acadêmica mais antiga de cache de rastreamento foi "Cache de rastreamento: uma abordagem de baixa latência para obtenção de instruções de largura de banda alta". Este artigo amplamente reconhecido foi apresentado por Eric Rotenberg, Steve Bennett e Jim Smith na conferência 1996 International Symposium on Microarchitecture (MICRO). Uma publicação anterior é a patente US 5381533, de Alex Peleg e Uri Weiser da Intel, "Memória cache de instrução de fluxo dinâmico organizada em torno de segmentos de rastreamento independentes da linha de endereço virtual", uma continuação de um pedido apresentado em 1992, posteriormente abandonado.

Necessidade

Processadores superescalares mais amplos exigem instruções múltiplas a serem buscadas em um único ciclo para um desempenho superior. As instruções a serem buscadas nem sempre estão em locais de memória contíguos ( blocos básicos ) por causa das instruções de desvio e salto . Portanto, os processadores precisam de suporte lógico e de hardware adicional para buscar e alinhar tais instruções de blocos básicos não contíguos. Se vários ramos forem previstos como não tomados , os processadores podem buscar instruções de vários blocos básicos contíguos em um único ciclo. No entanto, se qualquer uma das ramificações for prevista como tomada , o processador deve buscar instruções do caminho percorrido nesse mesmo ciclo. Isso limita a capacidade de busca de um processador.

Image
Blocos básicos de um loop if-else simples

Considere estas quatro blocos básicos ( A , B , C , D ), como mostrado na figura, que correspondem a um simples if-else loop. Esses blocos serão armazenados de forma contígua como ABCD na memória. Se o ramo D está previsto não-tomada, a unidade de busca pode buscar os blocos básicos A , B , C que são colocados de forma contígua. No entanto, se D é previsto feita , a unidade de busca tem para buscar A , B , D que são colocados não contiguamente. Portanto, buscar esses blocos que não estão colocados de forma contígua em um único ciclo será muito difícil. Portanto, em situações como essas, o cache de rastreamento ajuda o processador.

Depois de buscado, o cache de rastreamento armazena as instruções em sua sequência dinâmica. Quando essas instruções são encontradas novamente, o cache de rastreamento permite que a unidade de busca de instruções de um processador busque vários blocos básicos sem ter que se preocupar com ramificações no fluxo de execução. As instruções serão armazenadas no cache de rastreamento após serem decodificadas ou quando forem retiradas. No entanto, a sequência de instruções é especulativa se forem armazenadas logo após o estágio de decodificação.

Estrutura de rastreamento

Um rastreamento, também chamado de sequência de instrução dinâmica, é uma entrada no cache de rastreamento. Pode ser caracterizado por um número máximo de instruções e blocos básicos máximos . Os rastreamentos podem começar em qualquer instrução dinâmica. Vários traços podem ter a mesma instrução inicial, ou seja, o mesmo contador de programa inicial (PC) e instruções de diferentes blocos básicos de acordo com os resultados do desvio. Para a figura acima, ABC e ABD são traços válidos. Ambos começam no mesmo PC (endereço de A) e têm blocos básicos diferentes de acordo com a previsão de D.

Os rastreios geralmente terminam quando ocorre uma das seguintes situações:

  1. O rastreamento foi preenchido com o número máximo permitido de instruções
  2. O rastreamento tem blocos básicos máximos permitidos
  3. Instruções de devolução
  4. Ramos indiretos
  5. Chamadas de sistema

Informações de controle de rastreamento

Um único rastreamento terá as seguintes informações:

  • PC inicial - PC da primeira instrução no rastreamento
  • Sinalizador de ramo - ( blocos básicos máximos -1 ) previsões de ramo
  • Máscara de ramificação - número de ramificações no rastreamento e se o rastreamento termina em uma ramificação ou não
  • Trace fall through - Próximo PC se a última instrução não for derivada ou não for uma ramificação
  • Alvo de rastreamento - endereço do último alvo tomado pelo ramo

Projeto de cache de rastreamento

A seguir estão os fatores que precisam ser considerados ao projetar um cache de rastreamento.

  • Políticas de seleção de rastreamento - número máximo de instruções e blocos básicos máximos em um rastreamento
  • Associatividade - número de maneiras que um cache pode ter
  • Método de indexação de cache - concatenação ou XOR com bits de PC
  • Associatividade de caminho - traços com o mesmo PC inicial, mas com diferentes blocos básicos podem ser mapeados para conjuntos diferentes
  • Opções de preenchimento do cache de rastreamento -
    1. Após o estágio de decodificação (especulativo)
    2. Depois de se aposentar

Um cache de rastreamento não está no caminho crítico de busca de instrução

Lógica de acerto / erro

As linhas de rastreamento são armazenadas no cache de rastreamento com base no PC da primeira instrução no rastreamento e em um conjunto de previsões de ramificação. Isso permite armazenar diferentes caminhos de rastreamento que começam no mesmo endereço, cada um representando diferentes resultados de ramificação. Este método de marcação ajuda a fornecer associatividade de caminho para o cache de rastreamento. Outro método pode incluir ter apenas o PC inicializado como tag no cache de rastreamento. No estágio de busca de instrução de um pipeline , o PC atual, junto com um conjunto de previsões de ramificação, é verificado no cache de rastreamento para uma ocorrência . Se houver uma ocorrência, uma linha de rastreamento é fornecida para buscar a unidade que não precisa ir para um cache regular ou para a memória para essas instruções. O cache de rastreamento continua a alimentar a unidade de busca até que a linha de rastreamento termine ou até que haja um erro de previsão no pipeline. Caso falhe, um novo traço começa a ser construído.

O cache de rastreamento de execução do Pentium 4 armazena microoperações resultantes da decodificação de instruções x86 , fornecendo também a funcionalidade de um cache de microoperações. Tendo isso, da próxima vez que uma instrução for necessária, ela não precisará ser decodificada em micro-operações novamente.

Desvantagens

As desvantagens do cache de rastreamento são:

  1. Armazenamento redundante de instruções entre o cache de rastreamento e o cache de instruções e dentro do próprio cache de rastreamento.
  2. Ineficiência de energia e complexidade de hardware

Cache de rastreamento de execução

No cache L1 das CPUs NetBurst , a Intel incorporou seu cache de rastreamento de execução. Ele armazena decodificado micro-operações , de modo que durante a execução de uma nova instrução, em vez de buscar e decodificar a instrução novamente, a CPU acessa diretamente os micro-ops decodificados a partir do cache de rastreamento, economizando tempo considerável. Além disso, os micro-ops são armazenados em cache em seu caminho de execução previsto, o que significa que quando as instruções são buscadas pela CPU do cache, elas já estão presentes na ordem correta de execução. Posteriormente, a Intel introduziu um conceito semelhante, mas mais simples, com o Sandy Bridge, chamado cache de micro-operação (cache UOP).

Veja também

Referências