[Ken Shirriff] tem compartilhado um realmente Visto de baixo nível no processador Pentium (1993) da Intel. A arquitetura do Pentium foi altamente inovadora em muitos aspectos, e um dos [Ken]As descobertas mais recentes são que ele contém um circuito complexo – contendo cerca de 9.000 transistores – cujo único objetivo é multiplicar especificamente por três. Por que uma operação aparentemente simples requer um circuito tão complexo? E por quê esse operação particular, e não outra coisa?
Vamos voltar um pouco para colocar tudo isso em contexto. Uma das penas na tampa do Pentium era sua unidade de ponto flutuante (FPU), capaz de operações de ponto flutuante muito mais rápido do que qualquer um de seus antecessores. [Ken] Mobrinamente a engenharia reversa da FPU no início deste ano e uma visão de close-up do dado de silício do Pentium mostra que a FPU ocupa um pedaço significativo dela. Da FPU, quase metade é dedicada a realizar multiplicações e uma seção comparativamente pequena, mas bastante significativa de que é especificamente para multiplicar um número por três. [Ken] chama isso de circuito x3.
Por que a seção multiplicadora da FPU no processador Pentium possui uma funcionalidade tão especializada (e complexa) para uma operação aparentemente simples? Tudo se resume a como o Pentium multiplica os números.
A multiplicação de dois números de 64 bits é feita na Base 8 (octal), o que requer menos operações do que isso na Base-2 (binário). Em vez de lidar com cada bit separadamente (como na multiplicação binária), três bits do multiplicador são tratados por vez, exigindo menos turnos e adições em geral. Mas a desvantagem é que a multiplicação por três deve ser tratada como um caso especial.
[Ken] fornece uma excelente explicação de exatamente como tudo o que funciona (que também é uma explicação do algoritmo do estande do Radix-8), mas se resume a isso: existem numerosos atalhos para multiplicar números (multiplicar por dois é o mesmo que a mudança de 1 bit. Além disso, porque o resultado de multiplicação por três está envolvido em numerosos outro Os atalhos (X5 é realmente x8 menos x3, por exemplo), também deve ser feito muito rapidamente para evitar arrastar essas outras operações. A multiplicação binária direta é muito lenta. Daí a razão para dar tanta atenção dedicada.
[Ken] entra em detalhes consideráveis sobre como exatamente isso é feito e envolve o transporte de lookaheads como um elemento -chave para economizar tempo. Ele também ressalta que essa peça específica de funcionalidade usava mais transistores do que um microprocessador Z80 inteiro. E se isso não é uma ideia o suficiente para você, e o fato de o Z80 ter um novo sistema operacional disponível?