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 real ⟶ 16 bits modo protegido ⟶ 32 bits ⟶ MMX ⟶ 64 bits ⟶ SSE ⟶ AVX … 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.
“É 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.
Esses podem ser rodados por emulação (os de DOS e Windows até 2000 já são).
Concordo 100%
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.
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.
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.
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.
Alguns CIs DMA podem processar dados mais rápido que uP, caso independentes e a mesmo clock.
Crivo de Erasthótenes neles é um raio!