Diferenças entre ARM e X86
Tags: architecture, beginners
Published: 2022-04-05 01:36:01




Nesse artigo tentarei explicar algumas diferenças entre processados ARM e X86.

## Overview

Os processadores podem ter inúmeras funções, mas a principal delas está ligada a CPU (Unidade de processamento central), o cérebro da máquina onde a maiorias das informações é processada. Mesmo assim, esses cérebros também possuem suas diferenças entre si. 

Um processador de um computador e o de um celular operam de formas distintas pois cada um deles possui suas próprias necessidades e características específicas. No caso dos computadores, os principais fabricantes são AMD e Intel, já os celulares são Qualcomm, Samsung ou Media Tek.

## Introdução

Um processador ARM possui uma arquitetura RICS, isso significa que a CPU possui um número limitado de instruções que pode ser utilizado. Com isso cada instrução é executada em um único ciclo e as instruções são mais simples. Enquanto isso, um processador x86 possui uma arquitetura CISC, isso significa que há muito mais instruções. O número exato dessas instruções pode variar de acordo como você conta, mas o x86-64 tem pelo menos 981, quanto o ARM possui cerca de 50. 

## Vantagens

O ARM foi projetado para ser menor, mais eficiente em termos de energia e criar menos calor. Isso o torna perfeito para dispositivos móveis, como smartphones (o tamanho pequeno o torna ótimo para dispositivos minúsculos). A eficiência energética dá ao dispositivo uma vida útil mais longa de bateria. O menor calor é bom para um dispositivo que está constantemente sendo segurado. 

Isso não muda quando o assunto é laptops. A Apple historicamente teve problemas com superaquecimento em 2020, 2018, 2015 e mais antigos. O ARM permitiu que a Apple tornasse seus MacBooks menos propícios a isso, torna a vida útil da bateria desses dispositivos mais longa. Fora isso teve a possibilidade de fabricar laptops menores.

## Desvantagens

Uma grande desvantagem que temos é que um programa x86 não pode ser executado em ARM. Os programas precisão ser completamente reescritos para serem executados nas máquinas mais novas da Apple, por exemplo. Ainda bem que a maioria das linguagens de programação pode ser direcionadas para ARM com facilidade.

Também há um problema de velocidade… como o ARM tem menos instruções, os desenvolvedores precisam usar mais instruções. Por exemplo: o ARM geralmente não tem a instrução de divisão, mesmo os algoritmos de divisão mais eficientes são muito complicados e muitas CPUs ARM não os implementam. Nesses CPUs você teria que dividir usando outras instruções e como você está usando outras instruções para simular a divisão, acaba que demora mais ciclos para ela finalizar. Isso pode ser ainda mais lento do que em um conjunto de instruções x86 que possui arquitetura CISC.

## CISC e RISC

Sabemos que a arquitetura de processador descreve o processador que foi usado em um computador. Nessa perspectiva temos dois tipos de arquiteturas conhecidas:

* CISC (Computador com um conjunto complexo de instruções)
* RISC (Computador com um conjunto reduzido de instruções)

A arquitetura CISC é uma arquitetura que suportar muitas instruções, porém a execução dessas instruções são mais lentas, já a arquitetura RISC suporta menos instruções e com isso executa com mais rapidez o conjunto de instruções que são combinadas.

Um processador CISC é capaz de executar várias centenas de instruções complexas, sendo extremamente versátil. A tendência do mercado com isso era construir chips com conjuntos de instruções cada vez mais complexos, mas alguns fabricantes resolveram seguir um caminho oposto, criando o padrão RISC. Ao contrario dos complexos processadores CISC os processadores RISC são capazes de executar apenas algumas poucas instruções simples. Por esse fator os chips baseados nessa arquitetura são mais simples e muito mais baratos e por terem um menor número de circuitos internos, podem trabalhar com clocks mais altos. Um processador RISC é capaz de executas instruções mais rapidamente.

## Diferença na prática

A diferença do ARM para o x86 pode ser explicada de uma forma bem prática: se você usar um navegador em um computador você conseguirá trabalhar com uma quantidade muito maior de abas abertas sem que haja paralizações, você pode contar recursos como divisão de tela, executar vídeos e áudios com velocidades superiores entre outros delates, já por um celular o número de funções é reduzido, você não consegue trabalhar com tantas abas e a velocidade também é menor.

O ARM é como um carro esportivo italiano:

- Possui motor equilibrado, bem afinado, oferece boa aceleração e velocidade máxima.
- Perseguições, freios e suspensão excelentes. 
- Pode parar rapidamente e pode fazer curvas sem diminuir a velocidade.

O x86 é como um muscle car americano:

- Grande motor, grande bomba de combustível. 
- Oferece excelente velocidade máxima e aceleração, mas usa muito combustível.
- Direção terrível, você tem que diminuir a velocidade para fazer uma curva.

Em resumo o x86 é baseado em design de 1974 e é bom de linha reta (mas usa muito combustível. O ARM gasta pouco combustível, não desacelera nas curvas.

## Conclusão

Atualmente a grande diferença entre essas duas arquiteturas está mais relacionado as necessidades de mercado específicas dos nichos de produto que as equipes de desenvolvimento de software almejam. 

O ARM foi projeto para ser pequeno, eficiente em termos de energia e produzir menos calor. Por isso é amplamente utilizados em dispositivos móveis. É também por isso que a Apple está trabalhando para mudar seus laptops para ARM. O ARM vem com problemas de compatibilidade com versões anteriores e, possivelmente, velocidade. 

Por possuir uma arquitetura mais simples o ARM é levado para uma área do silício que explora a economia de recursos de energia, enquanto o x86 é uma besta de energia em termos de consumo e produção.