HardGNU

Blog sobre GNU, Linux, software livre, porém com conteúdo mais técnico e avançado. Meu outro blog sem conteúdo técnico é o @[email protected].

No mercado de processadores para computadores de uso pessoal (desktops e laptops) temos duas empresas competindo: Intel e AMD. A Intel desenvolve e fabrica sua prória arquitetura, chamada x86, sob a qual tem todos os direitos reservados. Historicamente, a Intel licenciou a arquitetura para algumas empresas, sendo a AMD a única que permaneceu relevante no mercado.

Arquitetura de um processador se refere ao conjunto de instruções lógicas que ele suporta. A “computação” que um computador faz é, simplificando bastante, ler instruções e dados contidos na memória principal (RAM), executar uma instrução nesses dados, possivelmente guardar o resultado novamente na RAM como dado para outra instrução, e esperar a próxima instrução para executar.

A Intel foi fundada em 1968. O primeiro processador x86 desenvolvido pela Intel foi lançado em 1978, chamado de 8086. Naquele tempo, a RAM era cara, lenta e a programação era de baixíssimo nível de abstração, frequentemente códigos eram escritos na própria linguagem de máquina, especificando manualmente cada instrução. Para resolver esses e outros problemas, a Intel adotou a abordagem de incluir instruções mais complexas no processador. Essa abordagem é conhecida como CISC (Complex Instruction Set Architecture).

A título de exemplo, vamos supor um processador extremamente simples que faça apenas as quatro operações básicas (adição, subtração, multiplicação, divisão) e queremos implementar a operação de fatorial. A abordagem CISC faria a implementação de fatorial no próprio processador como uma única instrução, enquanto uma abordagem RISC (Reduced Instruction Set Architecture) faria o fatorial como multiplicações sucessivas ou, se for mais reduzido ainda, a multiplicação como somas sucessivas.

(Instruções complexas referem-se àquelas que combinam várias operações em uma única execução. O exemplo do fatorial é fictício e tem como objetivo facilitar o entendimento, não refletindo casos reais.)

As vantagens de CISC nesse caso são:

  • Menor acesso à RAM, pois o fatorial n! precisaria de 'n-1' acessos à memória para busca de instruções e dados na abordagem RISC. Na abordagem CISC, apenas uma instrução e um dado é suficiente para o processador executar.
  • Programação mais fácil, pois escrever 'n!' é mais fácil do que escrever 'n(n-1)(n-2)...2'

No entanto, existem desvantagens consideráveis no CISC:

  • Tamanho (área) do processador é maior, porque precisa de mais transistores para implementar mais instruções
  • O consumo de energia do processador também é maior, porque existe mais circuito para ligar
  • O preço também é mais caro, porque precisa de mais material para fabricação e é mais complexo para projetar

Hoje em dia, com memórias muito rápidas e eficientes e linguagens de programação de alto nível com baixíssima barreira de entrada, faz sentido usar CISC? Talvez não, e isso foi percebido pela Apple.

Houve um grande investimento da Apple nos seus processadores Apple Silicon série M (M1, M2, M3, e agora M4). Esses processadores utilizam a arquitetura ARM, a mais conhecida do tipo RISC, e licenciada pela empresa ARM Holdings. Ao contrário da Intel, a ARM não fabrica chips, mas licencia para vários fabricantes diferentes. É essa a arquitetura usada em praticamente todos os smartphones Android porque é o que faz sentido: baixo tamanho e baixo consumo para um dispositivo portátil que cabe no bolso e passa a maior parte do tempo ligado em uma bateria. Mas se é tão eficiente assim, por que não utilizar em PC de mesa ou notebook?

O que o processador “entende” para executar é uma correspondência em 0s e 1s da linguagem de máquina, aquela que contém instruções e dados, e que é chamada de assembly. Cada arquitetura possui sua própria linguagem, mas quando programamos em outras linguagens mais 'fáceis', essas linguagens são traduzidas para essa linguagem de máquina, tornando-as mais ou menos independentes da arquitetura que está baixo. Essa tradução é feita por um programa chamado compilador. Esse compilador precisa ter suporte para cada arquitetura diferente e, em alguns casos, o desenvolvedor ou outra pessoa precisa recompilar o programa para uma nova arquitetura. Mas, surgem algumas perguntas:

  • Qual o interesse comercial do desenvolvedor em adaptar o código e recompilar para uma arquitetura menor e nichada? Vale o investimento?
  • Se eu tenho interesse em adaptar o código para meu uso, como vou fazer isso se apenas o desenvolvedor, não eu, tem acesso ao código?

Em outras palavras, um software altamente complexo como um sistema operacional (Windows, Mac, Linux) precisa de investimento financeiro proporcional para rodar em outra arquitetura. Então, qual o interesse da empresa em investir nisso, considerando que apenas ela pode fazer isso?

Devido a ser software livre e código aberto e popular em servidores e entre pessoas técnicas, o kernel Linux possui suporte a várias arquiteturas diferentes. Atualmente, a “distribuição universal”, Debian, lista 10 arquiteturas diferentes. O outro sistema operacional de origem semelhante, NetBSD, lista nada menos do que 42 arquiteturas suportadas. Porém, como vender esses sistemas para o amplo mercado? Esse é o problema, e é o motivo pelo qual ainda não temos competição ampla de arquiteturas no mercado. Temos apenas alguns poucos fabricantes de nicho vendendo máquinas com outras arquiteturas, mas que “só rodam Linux”:

Nesse sentido, o uso de software de código fechado pode limitar a inovação nesse mercado. Se o software executado em arquiteturas alternativas fosse de amplo uso, poderia ter havido mais pesquisa e desenvolvimento em alternativas modernas e mais eficientes, desde mais cedo na história. Em resumo, ainda utilizamos x86 fundamentalmente por dois motivos: cultura e legado.

Outras arquiteturas interessantes são o RISC-V e POWER. As duas têm a ideia de “hardware aberto”.

O RISC-V, como o nome já diz, é uma arquitetura do tipo RISC e pode competir diretamente com ARM. Seu diferencial é que é totalmente aberta, não há uma empresa licenciando por trás. Qualquer fabricante pode implementar o seu processador com zero burocracia. Existe um consórcio de várias empresas por trás tentando trazer essa arquitetura para o mainstream.

Já a arquitetura POWER, da IBM, tende mais ao CISC e compete com x86. Ao menos dois projetos nichados vendem dispositivos com essa arquitetura: Talos II, voltado ao mercado de servidores, e PowerPC Notebook, um notebook para uso pessoal.

Como será o mercado daqui pra frente? Qual a arquitetura do futuro? Não sei, só sei que vou continuar usando software livre e facilitando o desenvolvimento de tecnologias melhores.

Sobre mim:

Monaĥo (Vinicius) é ativista vegano e de software livre.

Contato:

Mastodon