3 pontos por GN⁺ 2025-03-04 | 1 comentários | Compartilhar no WhatsApp
  • Em 1993, a Intel lançou o processador Pentium de alto desempenho
    • Ao analisar os circuitos do Pentium, foi descoberto um circuito complexo para multiplicar por 3
    • Esse circuito faz parte do multiplicador de ponto flutuante do Pentium e realiza multiplicação de números de 64 bits com base octal
  • Necessidade da multiplicação em base octal
    • A multiplicação binária é conceitualmente simples, mas lenta
    • O Pentium realiza a multiplicação em base octal para reduzir o circuito e aumentar a velocidade
    • A multiplicação em base octal é complexa porque é preciso multiplicar por números de 0 a 7
  • Algoritmo de Booth e circuito ×3
    • O algoritmo de Booth é usado para otimizar a multiplicação
    • O circuito ×3 precisa ser tratado como um caso especial na multiplicação de ponto flutuante
    • Esse circuito precisa operar rapidamente e usa técnicas como carry lookahead para maximizar o desempenho
  • Carry lookahead e somador de prefixo paralelo
    • O somador carry lookahead calcula todos os bits de carry em paralelo para realizar a adição rapidamente
    • Um somador de prefixo paralelo é usado para implementar o carry lookahead em blocos de 8 bits
    • O algoritmo de Kogge-Stone é usado para minimizar a latência e organizar o circuito de forma eficiente
  • Somador carry select
    • O somador carry select realiza duas somas ao mesmo tempo e fornece o resultado imediatamente quando o carry é determinado
    • O Pentium usa um somador carry select para cada bloco de 8 bits no circuito ×3
  • Driver de saída BiCMOS
    • A saída do circuito ×3 exige alta corrente, e o processo BiCMOS é usado para reduzir o atraso do sinal
    • BiCMOS combina CMOS e transistores bipolares para oferecer alto desempenho
  • Conclusão
    • O circuito ×3 do Pentium tem um projeto complexo e usa mais transistores do que microprocessadores do passado
    • Este é um exemplo de como a complexidade dos processadores aumentou

1 comentários

 
GN⁺ 2025-03-04
Comentários do Hacker News
  • Emulação de computadores ternários tem um método para converter divisões por potências de 3 em deslocamentos de bits e somas

    • 1/3 pode ser expresso como 1/2 - 1/2(1/3)
    • Repetindo isso infinitamente, é possível expressar 1/3 = -(-1/2)^N
    • Também é possível com pares arbitrários de potências de 2 e 3
    • Com isso, é possível construir circuitos para divisão por constantes em tempo fixo usando apenas somadores e subtratores
  • O processador dos jogos de arcade da Cinematronics tinha dois acumuladores de 12 bits

    • A instrução de multiplicação deslocava para um valor de 24 bits e somava o conteúdo da memória
    • Oito multiplicações eram executadas em sequência para obter um resultado de 24 bits
    • Era usado principalmente para multiplicação de matrizes 2x2 para rotacionar as coordenadas dos objetos do jogo
    • Em meados dos anos 1970, alcançava um throughput máximo de 5 MIPS usando componentes da série 7400
  • Peter Kogge obteve seu doutorado em Stanford e, como IBM Fellow, foi a pessoa que inventou a CPU multinúcleo

  • Multiplicar por 3 no cálculo de endereços é uma operação comum

    • Pode ser feito em um único ciclo usando a instrução LEA
    • Foi uma boa escolha usar o orçamento de transistores nisso
  • Em multiplicadores, existe o método de multiplicar por 8 e subtrair 1 em vez de multiplicar por 7

    • Isso é semelhante a um circuito de carry lookahead
    • 7 = 8-1, 6 = 8-2, 5 = 8-3, 4 = 8-4
  • O multiplicador ×3 contém cerca de 9.000 transistores, mais do que o microprocessador Z80 de 1976

    • Isso mostra o enorme crescimento da complexidade dos processadores
    • Hoje chegamos aos limites da tecnologia de semicondutores de silício, e é hora de operar de forma mais inteligente
  • Um multiplicador Booth radix-8 precisa de um circuito x3

    • Esse é um trade-off de área/desempenho para elevar o fmax
  • 8086: 29.000

    • 386: 275.000
    • 486: 1.2 million
    • Pentium: 3.1 million
    • A NSA entrou na história depois de 2000
  • A desvantagem da multiplicação radix-8 é que multiplicar por números de 0 a 7 é complexo

    • Multiplicar por 2 equivale a deslocar os bits 1 posição para a esquerda
    • Multiplicar por 4 equivale a deslocar os bits 2 posições para a esquerda
    • Multiplicar por 7 pode ser resolvido multiplicando por 8 e subtraindo 1
    • ×3 pode ser calculado como a soma de 2x e 1x ou como a diferença entre 4x e 1x
    • Se ×6 puder ser calculado facilmente, ×3 pode ser obtido deslocando esse valor para a direita