Cache de Memória e Unidade de Busca
Na arquitetura AMD64 o caminho de dados entre o cache de memória L2 e o cache L1 de dados é de 128 bits. Nos processadores Intel de 7ª geração (Pentium 4) este caminho de dados é de 256 bits e nos processadores Intel de 6ª geração (Pentium Pro, Pentium II, Pentium III e Pentium M) este caminho de dados é de 64 bits.
Figura 12: Unidade de busca da arquitetura AMD64.
O cache L1 de instruções dos processadores AMD64 possui uma lógica de pré-decodificação, ou seja, cada byte armazenado no cache L1 de instruções tem alguns bits para marcar o início e o fim de cada instrução. Como as instruções x86 não têm tamanho fixo (elas pode ter qualquer tamanho entre um e 15 bytes*), o processo de detectar onde cada instrução começa e termina é muito importante para o decodificador do processador.
* Você pode ficar um pouco perdido com esta afirmação, já que você sempre escutou que a arquitetura x86 usa instruções de 32 bits (ou seja, 4 bytes), portanto uma explicação mais aprofundada é necessária para um maior entendimento.
Dentro do processador o que é considerado uma instrução é o opcode da instrução (o equivalente em linguagem de máquina da instrução em linguagem assembly), mais todos os dados requeridos. Isto ocorre porque a instrução deve entrar na unidade de execução “completa” de modo a ser executada, isto é, junto com todos os dados requeridos. Além disso, o tamanho do opcode de cada instrução x86 é variável e não fixo em 32 bits, como você poderia imaginar. Por exemplo, uma instrução do tipo mov eax, (dado de 32 bits), que armazena um dado de 32 bits no registrador EAX é considerada internamente como uma instrução de 40 bits (mov eax é traduzida em um opcode de 8 bis mais os 32 bits de seu dado). Na verdade, ter instruções com diferentes comprimentos é o que caracteriza um conjunto de instruções CISC (Complex Instruction Set Computing, computação usando um conjunto de instruções complexo).
Caso você queira aprender mais sobre este assunto, leia AMD64 Architecture Programmer’s Manual Vol. 3: General Purpose and System Instructions.
O cache L1 de instruções fornece 76 bits extras para a unidade de busca: 52 bits de marcação de pré-decodificação, oito bits de paridade e 16 bits seletores de desvio. Os bits seletores de desvio são usados pelo processador para tentar adivinhar os desvios no programa em execução.
Na realidade o cache L1 de instruções é maior do que os 64 KB anunciado, já que ele armazena informações de pré-decodificação e de desvio. Na verdade, o tamanho real do cache L1 de instruções da arquitetura AMD64 é de 102 KB (64 KB cache de instrução + 4 KB paridade + 26 KB dados de pré-decodificação + 8 KB dados de desvio).
O buffer de destino de desvio (BTB, Branch Target Buffer) na arquitetura AMD64 tem 2.048 entradas. O BTB é uma pequena memória que lista todos os desvios identificados no programa. O BTB do Pentium 4 é de 4.096 entradas enquanto que nos processadores de 6ª geração da Intel este buffer é de 512 entradas.
Um outro registrador de desvio, BHT (Tabela de Histórico de Desvios) – que a AMD chama GHBC (Global History Bimodal Counter, contador histórico bimodal global) – tem 16.384 entradas na arquitetura AMD64, enquanto que no Pentium 4 esse registrador é de 4.096 entradas, o mesmo tamanho do BHT encontrado na arquitetura AMD K7. Este registrador de dois bits é usado para identificar desvios condicionais: “certamente tomado”, “tomado”, “não tomado” e “certamente não tomado”.
Respostas recomendadas
Crie uma conta ou entre para comentar
Você precisa ser um usuário para fazer um comentário
Criar uma conta
Crie uma nova conta em nossa comunidade. É fácil!
Crie uma nova contaEntrar
Já tem uma conta? Faça o login.
Entrar agora