Crônica de uma morte anunciada: o Coprocessador Numérico x87

Assim como quem não quer nada, resolvi começar a ler sobre programação Assembly para processadores Intel do seu PC velho… mas a versão muderna, cheia de zilhões de instruções, registradores a dar com pau, mil maneiras de fazer operações paralelas e o escambau. Por que alguém faria algo tão insano? Ora raios…

Pois bem, ao longo dos mais de 40 anos que a arquitetura sobreviveu, níveis e mais níveis de funcionalidade foram sendo adicionados uns por cima dos outros, mantendo sempre todas as estruturas anteriores presentes:

16 bits modo real16 bits modo protegido32 bitsMMX64 bitsSSEAVX … e contando.

Correndo por fora, existiu, lá nos primórdios, um bicho chamado 8087 – o Coprocessador Matemático. Se seu PC tivesse esse chip, ele adicionava instruções para fazer operações matemáticas com números reais, não apenas inteiros, e também operações como seno, cosseno, logaritmos… a partir do 486, ele passou a ser incorporado ao processador principal, mas todas as velhas instruções como FMUL, FDIV, FCOS etc estavam lá, e usá-las sempre foi a melhor maneira de fazer contas. A alternativa era usar bibliotecas de ponto flutuante, lentas e nem sempre dentro do padrão (é o que os nossos retromicros clássicos usam).

Mas aí que tá… os novos conjuntos de instruções SSEn e AVX, planejados para realizar várias operações ao mesmo tempo num conjunto grande de números, também fazem operações de ponto flutuante. Aí, no capítulo sobre otimização deste livro, leio o seguinte:

Os seguintes critérios devem ser observados ao escrever código em Assembly que realize aritmética de ponto flutuante:
* (…)
* Em código novo, use as funções escalares das arquiteturas SSE ou AVX, em vez da FPU x87.

Pois é, a utilidade do velho chip, amigão dos estudantes de engenharia (e de tantas outras áreas) nos anos 80, chegou ao fim. Mais um dinossauro se dirigindo lentamente ao poço de piche. É provável que daqui a alguns anos, os quatro primeiros itens da cadeia de setas acima sejam abandonados e os novos processadores sejam puramente 64 bits.

Sobre Juan Castro

Juan Castro é uma das mentes em baixa resolução que compõem o Governo de Retrópolis – a única cujo Micro Formador não foi o MSX (e sim o TRS-80). Idealizador, arquiteto e voz do Repórter Retro. Com exceção do nome, que foi ideia do Cesar.

8 pensou em “Crônica de uma morte anunciada: o Coprocessador Numérico x87

  1. “É provável que daqui a alguns anos, os quatro primeiros itens da cadeia de setas acima sejam abandonados e os novos processadores sejam puramente 64 bits.”

    Do jeito que existe software legado (principalmente Windows), acredito que isso vá demorar.

      1. Enquanto o mundo das finanças e armamentista produzirem x64 subsidiados por consumidores alheios, certamente.

        Numa sociedade tecnológica, os compiladores haverão de gerar nativamente 16-32-64 em máxima performance sempre, a evitar obsolescências e vergonhoso descarte nas periferias.

  2. Com todo respeito, é uma questão de custo. Nunca precisaremos de processador 64-bit, a indústria abastece a clientes militares, e diluem investimento produzindo muitos e revendendo os menos top pra gente.

    Quando li aquela vez R800 em 64 bits só pensei no MTBF… não vale sequer a pena converter programas de 16 ou 32.

  3. Pelo menos para mim, o 8087 era somente um socket vago na placa. Não me lembro de ter visto um XT com ele. Não sei se era caro ou o que era.

    1. Sim, era caro. Para micros domésticos (ou mesmo a maioria dos de escritório) não fazia muito sentido ter. Já faculdades e empresas de engenharia se beneficiavam muito dele. Lembro que um professor no IME (Ricardo Zelenovsky) me mostrou a diferença entre o mesmo programa rodando com e sem 8087. A diferença era brutal. Imagino que instituições tipo IBGE também. Centros de pesquisa, etc.

  4. Alguns CIs DMA podem processar dados mais rápido que uP, caso independentes e a mesmo clock.

    Crivo de Erasthótenes neles é um raio!

Deixe um comentário

O seu endereço de e-mail não será publicado.