Um guia simples para ARM vs. RISC-V vs. x86

RISC-V vs ARM vs x86 Imagem do título

Introdução

Temos estado a falar muito sobre Raspberry Pi 5 aqui no PiCockpit, claro. No outro dia, encontrei uma discussão sobre o Raspberry Pi 5 que se centrava na arquitetura ARM do Pi e na forma como esta se compara à arquitetura RISC-V. Durante anos, as pessoas têm falado sobre a compatibilidade do Raspberry Pi com o x86. Mas o que dizer de um Pi RISC-V?

Isto é especialmente interessante, porque o Raspberry Pi é um membro da RISC-V Internacional.

Tal como o Arduino, de facto.

Assim há potencialmente um futuro para os chips de arquitetura RISC-V nos Raspberry Pis. No entanto, eu não esperaria ansiosamente por um Raspberry Pi x86.

Afinal de contas, num debate recente publicado pelo Raspberry PiGordon Hollingworth disse: "As pessoas perguntam: 'Bem, podes fazer isso? É possível criar um Raspberry Pi x86?É do género: 'Oh, Deus, daria muito trabalho'. Podias, mas..."

Um chip Intel

Por isso, achei que era altura de analisar algumas das principais diferenças e semelhanças entre as arquitecturas RISC-V, ARM e x86. Vou falar da sua história, das suas vantagens e desvantagens e do que as distingue umas das outras.

No final, ficará com uma ideia da razão pela qual seria tão trabalhoso fazer um Raspberry Pi x86, mas porque é que um Raspberry Pi RISC-V não está fora de questão.

Visão geral

RISC-VARMx86
OrigemRISC-V InternacionalArm Ltd.Intel e AMD
Conjunto de instruçõesRISC (Reduced Instruction Set Computing)RISC (Reduced Instruction Set Computing)CISC (Complex Instruction Set Computing)
Ordem dos bytesTipicamente little-endian (configurável pelo utilizador)Tipicamente bi-endiano (configurável pelo utilizador)Little-endian
AplicaçõesSistemas incorporados, dispositivos IoT, soluções personalizadasDispositivos móveis, sistemas incorporados, servidoresComputadores de secretária, computadores portáteis, servidores, estações de trabalho
Modelo de licenciamentoLicenciamento de fonte aberta e isento de royaltiesA ARM licencia os seus projectos aos fabricantesA Intel e a AMD produzem os seus próprios chips
EcossistemaDesenvolvimento do ecossistema, iniciativas de fonte abertaGrande ecossistema, suporte extensivo a terceirosGrande ecossistema de software e hardware

Vamos agora analisar cada um destes pontos.

Origem

Começarei pelo x86, pois é o mais antigo dos três. A arquitetura x86 remonta a 1978, quando a Intel lançou a família 8086. A arquitetura x86 era CISC, que estava na moda na altura. Atualmente, a arquitetura x86 continua a ser controlada pela Intel, juntamente com a AMD.

A arquitetura ARM teve o seu início 7 anos mais tarde, quando a Acorn Computers Ltd. lançou o ARM1. A Acorn Computers já não existe, mas a sua arquitetura ARM continua viva através da Arm Ltd. Atualmente, a Arm Ltd. licencia a arquitetura ARM a outras empresas.

Em comparação, o RISC-V é extremamente novo, tendo começado apenas em 2010 na Universidade da Califórnia, Berkeley. Em 2015, um grupo de empresas de tecnologia (todos, da IBM ao Google e à Nvidia) se reuniram para fundar a Fundação RISC-V. Em 2020, devido a questões geopolíticas, a Fundação RISC-V mudou-se para a Suíça e tornou-se RISC-V International.

Logótipo RISC-V

Conjunto de instruções

Em primeiro lugar, permitam-me que esclareça a diferença entre RISC e CISC.

Os processadores RISC utilizam um conjunto pequeno e optimizado de instruções, cada uma ocupando um único ciclo de relógio, permitindo uma execução mais rápida e previsível.

Em contrapartida, os processadores CISC têm um conjunto de instruções maior e mais diversificado, incluindo frequentemente instruções complexas que podem exigir vários ciclos de relógio, o que conduz a um desempenho potencialmente mais lento mas mais versátil no tratamento de várias tarefas.

Portanto, o RISC-V é baseado em RISC, obviamente. Mas o que o distingue é o facto de ser de código aberto.

No seu artigo de 2014, Os conjuntos de instruções devem ser livres: o caso do RISC-VKrste Asanović e David A. Patterson comparam o RISC-V com o Linux. A ideia é que existe uma Arquitetura de Conjunto de Instruções totalmente de código aberto. Assim, as pessoas devem poder manipulá-la, brincar com ela e partilhá-la.

Asanović e Patterson argumentam que isso poderia impulsionar a inovação, uma maior transparência e custos mais baixos.

Devo referir que, embora o RISC-V em si seja de código aberto, as implementações específicas do RISC-V podem ser de código aberto ou proprietárias.

As instruções ARM também são baseadas em RISC. No entanto, uma vez que a Arm Ltd. licencia a arquitetura, são tudo menos de código aberto. Como dizem Asanović e Patterson: "Uma licença da ARM nem sequer te permite desenhar um núcleo ARM; apenas podes usar os seus desenhos." Embora não seja tão simples assim, esse é geralmente o caso.

Acima, referi que a arquitetura x86 é baseada em CISC. Isso é verdade, mas devo mencionar que, desde os anos 90, os processadores x86 também incluem instruções SIMD (Single Instruction, Multiple Data) para tarefas de processamento paralelo. Isto permite que os processadores multicore também funcionem rapidamente.

Afinal de contas, o supercomputador mais rápido do mundo - Frontier - é baseado em x86.

Mas o segundo supercomputador mais rápido do mundo - Fugaku - é baseado em ARM.

Muitas pessoas argumentam que a distinção entre RISC e CISC não é muito importante atualmente. Como os processadores modernos são tão poderosos, eles dizem que as diferenças entre esses tipos de conjuntos de instruções praticamente desapareceram. No entanto, no seu apelo ao RISC-V, Asanović e Patterson argumentam que "há décadas que nenhum novo ISA CISC tem tido sucesso" e, portanto, faz mais sentido optar por uma arquitetura baseada em RISC.

Ordem dos bytes

A endianidade refere-se à ordem dos bytes em que os tipos de dados multibyte são armazenados na memória do computador.

Nos sistemas little-endian, o byte menos significativo é armazenado no endereço de memória mais baixo, enquanto nos sistemas big-endian, o byte mais significativo é armazenado no endereço mais baixo.

A endianidade é muito importante quando se pretende trocar dados entre processadores. Se enviar informações de um sistema big-endian para um sistema little-endian, os seus dados podem facilmente ficar corrompidos se não os converter corretamente.

O RISC-V é tipicamente little-endian. No entanto, isto é algo que pode ser configurado se quiser que o seu RISC-V tenha uma ordem de bytes big-endian.

A arquitetura ARM pode ser little-endian ou big-endian, dependendo da implementação específica. Tal como o RISC-V, é possível configurar um chip ARM para ser big-endian.

Os Raspberry Pis são, por defeito, little-endian. Pode verificar isto você mesmo indo à sua Raspberry Pi, abrindo o terminal e executando:

lscpu

A arquitetura x86 é little-endian. Mas, ao contrário das arquitecturas RISC-V e ARM, não é possível alterar esta caraterística. O facto de ser little-endian é uma caraterística da arquitetura x86.

Aplicações

Gostaria de voltar ao artigo de Asanović e Patterson por um momento. Embora o artigo seja de 2014, ele faz uma observação muito importante. Eles afirmam que "[q]uando o 80 × 86 venceu as guerras do PC, o RISC domina os tablets e smartphones da era pós-PC; em 2013, mais de 10 [bilhões] de ARMs foram enviados, em comparação com 0,3 [bilhões] de 80x86s.

Trata-se de uma enorme discrepância, mas também mostra que as aplicações de uma arquitetura ajudam a definir o seu significado. É por isso que foi tão importante em 2020 quando a Apple revelou o chip M1 para os seus novos computadores. Se a Apple estava a mudar de x86 para ARM, o que é que isso significa para o futuro do x86?

No entanto, a arquitetura x86 continua a dominar o mercado informático. Os computadores de secretária, os computadores portáteis e os servidores continuam a basear-se essencialmente na arquitetura x86.

A ARM, por sua vez, está normalmente presente em smartphones e tablets. E, claro, no seu humilde Raspberry Pi. No entanto, parece que a ARM pode começar a dominar também o mundo dos computadores.

smartphone sobre a mesa

O RISC-V espera claramente conquistar uma parte do espaço da arquitetura ARM, mas continua em aberto quanto ao que poderá fazer no futuro. Tanto as universidades como a indústria estão a investir no RISC-V e a acompanhar de perto o seu desenvolvimento.

Se a ARM começou a desbastar o x86, será que a RISC-V vai começar a desbastar a ARM?

Modelo de licenciamento

A mais restritiva das três é a x86. Como referi anteriormente, apenas duas empresas produzem chips de arquitetura x86 - a Intel e a AMD. Os chips não são personalizáveis e a arquitetura é totalmente proprietária.

A arquitetura ARM funciona de forma diferente, devido ao modelo de licenciamento. Uma licença ARM típica não permite criar um design de arquitetura ARM. No entanto, há excepções, porque o chip M1 da Apple foi previsivelmente personalizado de acordo com os seus desejos.

A arquitetura RISC-V é de código aberto e isenta de royalties, permitindo a qualquer pessoa conceber e fabricar processadores RISC-V sem pagar taxas de licenciamento. É realmente como o Linux dos ISAs.

Curiosamente, porém, a Intel e a AMD são ambas membros da RISC-V International. Portanto, é evidente que também pensam que é importante contribuir para a arquitetura RISC-V.

Ecossistema

O ecossistema RISC-V está a crescer rapidamente, com muitas empresas e investigadores a contribuírem para projectos de código aberto e a desenvolverem produtos baseados em RISC-V.

Embora o ecossistema de software não seja muito grande neste momento, está a crescer. É possível ver a sua evolução com o projeto RISE (RISE significa RISC-V Software Ecosystem).

No que diz respeito ao ARM e ao x86, ambos dominam os seus respectivos mercados. Os ecossistemas para ambos estão bem estabelecidos e são vastos.

Este é um dos inconvenientes mais evidentes do RISC-V. Simplesmente não tem a adoção generalizada dos outros dois e a concorrência neste domínio é feroz.

RISC e CISC em ação

Neste fantástico vídeo da O programador [Preencher o espaço em branco, pode ver exatamente como funcionam o RISC e o CISC ao nível do Código Assembly.

Aqui pode ver em pormenor a diferença entre RISC e CISC.

No ARM e no RISC-V, o código Assembly tem linhas mais curtas, mas em maior número. No x86, as linhas de Assembly são mais complexas, mas há menos linhas.

O vídeo mostra como o compilador GCC e o compilador Clang transformam o código C++ em Assembly para cada um dos três ISAs - ARM vs. RISC-V vs. x86_64. Veja o vídeo:

Conclusão

Publicámos recentemente um artigo que compara o Orange Pi 5 Plus com Raspberry Pi 5 e Rock 5 Model B. Curiosamente, embora todos estes três SBCs sejam baseados em ARM, a Radxa tem de facto um modelo x86 chamado Pedra Pi X.

Algumas pessoas receiam que uma adoção mais generalizada do RISC-V provoque mais fragmentação. Isto corresponde muito bem à comparação com o Linux. Quantas distribuições de Linux existem atualmente? No entanto, a comunidade RISC-V está a trabalhar ativamente no desenvolvimento de normas para minimizar a fragmentação e os problemas de compatibilidade.

Muitos (incluindo alguns detractores) vêem o RISC-V como uma forma de empurrar a arquitetura dos chips para o futuro.

Claro que, com as guerras comerciais a aquecer entre países, as coisas tornam-se muito mais complicadas. A Arm Ltd. está sediada no Reino Unido e a Intel e a AMD estão sediadas nos EUA. Não é de estranhar que países como a China e a Rússia se virem para o RISC-V.

Há, no entanto, quem pense que o RISC-V está condenado ao fracasso. Argumentam que o RISC-V não se limitará a causa fragmentação, mas sim que o RISC-V já é fragmentado. E, por conseguinte, não vai arrancar.

Atualizaçãoe (Novem6 de fevereiro de 2023): A Arm Holdings acaba de anunciar a compra de uma participação minoritária na Raspberry Pi Ltd. Não se sabe ao certo o que isto significa para o futuro. Pode ler mais aqui:

O que é que acha? O RISC-V é o futuro? Deixe-nos saber nos comentários!

3 comentários

  1. tozo em Novembro 6, 2023 às 1:13 pm

    Como já referi, na realidade apenas três empresas produzem chips de arquitetura x86 - Intel e AMD.
    Ou seja... apenas dois. 🙂

    • Adam em Novembro 7, 2023 às 12:36 pm

      Muito bem - obrigado, tozo!

  2. Bruce Hoult em Novembro 8, 2023 às 10:27 pm

    Penso que é um pouco injusto contar a idade do RISC-V a partir da data em que alguns investigadores universitários estavam num bar (ou o que quer que seja) em 2010 e decidiram começar a conceber o seu próprio ISA, enquanto os outros são contados a partir da data em que o primeiro chip comercial foi introduzido no mercado.

    O ISA passou por várias versões incompatíveis à medida que as ideias evoluíam, tanto a nível da linguagem de montagem como da codificação binária.

    O primeiro chip RISC-V que se pode comprar, o FE310 da SiFive, foi lançado em dezembro de 2016 na placa HiFive1 Arduino-clone. É apenas um microcontrolador, com apenas as instruções do modo de utilizador. As instruções e os CSR do modo máquina e do modo supervisor estiveram em desenvolvimento ativo e sofreram alterações incompatíveis até pouco tempo antes de a ISA de base ser ratificada (congelada, publicada) em julho de 2019. A SiFive lançou um SBC Linux, o HiFive Unleashed (com o SoC FU540) no início de 2018, com cerca de 500 unidades produzidas, mas era experimental e a SiFive estava preparada para ficar órfã se fossem efectuadas alterações incompatíveis ao ISA antes da ratificação.

    Penso que a data justa da "origem do RISC-V" está algures entre a publicação do Privileged Architecture 1.10 em maio de 2017 e a ratificação em julho de 2019. De certeza que não é 2010.

    Noutro tópico, noto que o 8086 era de longe o menos CISCy dos chips CISC e esta é uma grande razão pela qual conseguiu sobreviver na era RISC (os biliões do IBM PC e clones também ajudaram muito!). VAX, M68000, Z8000, NS 16032/32032 eram demasiado complexos para serem rápidos.

    "desde os anos 90, os processadores x86 também incluem instruções SIMD (Single Instruction, Multiple Data) para tarefas de processamento paralelo. Isto permite que os processadores multicore também funcionem rapidamente." Não têm qualquer relação entre si.

    "A arquitetura RISC-V é de código aberto e isenta de royalties, permitindo a qualquer pessoa conceber e fabricar processadores RISC-V sem pagar taxas de licenciamento. É realmente como o Linux dos ISAs." É verdade, mas conceber o seu próprio projeto custa muito mais do que licenciar um projeto de uma das cerca de uma dúzia de fornecedores comerciais de núcleos RISC-V (com modelos de negócio muito semelhantes aos da Arm)

Deixe um comentário