Arquitetura ARM vs x86: Qual é a diferença?
Visão geral
Computadores projetados com processadores ARM e aqueles projetados com Intel ou AMD não são intercambiáveis. Há duas questões fundamentais que cada uma aborda de maneiras diferentes:
- Como você equilibra a contagem de transistores e a complexidade do programa?
- Como você prioriza velocidade, consumo de energia e custo?
As respostas a essas perguntas orientaram a inovação tecnológica e o desenvolvimento de software em tudo, de smartphones a supercomputadores, nas últimas quatro décadas.
Definindo processadores x86 e ARM
Para definir algum contexto, vamos definir brevemente os processadores x86 e ARM.
Os processadores x86 são familiares para muitos em TI porque esse é o tipo de processador usado na maioria dos hardwares de computador e servidor. Em um sentido arquitetônico, os componentes de hardware dentro de um sistema x86 - como placas de som e gráficas, memória, armazenamento e CPU - são todos independentes uns dos outros. A maioria dos componentes tem chips separados chamados controladores. Os componentes podem ser alterados ou expandidos sem afetar a conectividade ou a plataforma geral de hardware.
Os processadores ARM não possuem uma CPU separada. Em vez disso, a unidade de processamento está no mesmo substrato físico que os outros controladores de hardware; este é um circuito integrado. Além disso, ao contrário dos processadores Intel ou AMD, não há fabricante de processador ARM. Em vez disso, a Arm Holdings licencia designs de chip para outros fabricantes de hardware que então incorporam o chip do processador ARM em seus designs de hardware. Ao contrário de um computador tradicional baseado em x86, os chips ARM não são intercambiáveis e são altamente específicos para cada aplicação. Esses processadores são fabricados juntos no que é chamado de sistema em um chip (SoC).
RISC, CISC e o efeito sobre o desenvolvimento
Um antigo debate entre os primeiros programadores é o que levou à divergência entre duas filosofias principais na ciência da computação: simplificar o trabalho do programador ou simplificar o trabalho do microprocessador.
Para fazer qualquer coisa produtiva com um computador, um sistema operacional e os programas que ele executa precisam interagir com a Unidade Central de Processamento (CPU), bem como com outros hardwares como memória, armazenamento e placas de rede. A CPU faz a mediação entre o sistema operacional (e os programas em execução) e essas peças de hardware. Para simplificar a vida dos programadores, a CPU possui um conjunto de ações e cálculos predefinidos chamado conjunto de instruções ou ISA (arquitetura do conjunto de instruções). O sistema operacional e os programas que ele executa (ambos escritos por programadores) dependem dessas instruções para executar funções de baixo nível, como:
Interações entre a CPU e o hardware (memória, armazenamento, rede, etc.)
Funções aritméticas (adição, subtração, etc) e manipulação de dados (deslocamentos binários, etc).
As CPUs x86 originais tinham (e ainda têm) um conjunto de instruções muito rico. Uma única instrução pode completar um cálculo inteiro (como a multiplicação) ou mover um pedaço de dados diretamente de um lugar na memória para outro. Isso pode não parecer muito, mas multiplicar e mover dados entre lugares na memória requer muitas instruções nesse nível baixo. Com computadores x86, esta complexa série de operações pode ser executada com um único ciclo. As unidades de processamento com esse tipo de conjunto de instruções são chamadas de computadores com conjunto de instruções complexas (CISC).
No entanto, as poderosas instruções em um computador CISC significam que ele precisa de mais transistores, que consomem espaço e energia.
Isso levou a vários projetos no início dos anos 80, explorando a eficiência energética e formas de simplificar os conjuntos de instruções na arquitetura da CPU. Os pesquisadores descobriram que, na vida real, a maioria dos computadores usava apenas um pequeno subconjunto do enorme conjunto de instruções fornecido em um computador CISC. Isso acabou levando ao projeto de processadores de computador com conjunto de instruções reduzido (RISC). Os processadores RISC possuem um conjunto de instruções onde cada instrução representa apenas uma operação simples usando menor consumo de energia. Isso torna o trabalho do programador em linguagem assembly mais complexo, mas simplifica o trabalho do processador. Com processadores RISC e máquinas RISC avançadas, operações complexas são executadas executando várias instruções ou transferindo a complexidade para o compilador em vez do núcleo da CPU.
Há compensações aqui. As CPUs x86 tendem a ter um poder de computação muito rápido e permitem mais clareza ou simplicidade na programação e no número de instruções, mas às custas de um chip maior e mais caro com muitos transistores. Os processadores ARM podem ser muito rápidos para certos tipos de operações, mas os ciclos repetidos para instruções individuais podem desacelerá-lo, pois as operações são mais complexas e mais esforço para definir e executar operações é enviado para a programação (e programador) em vez da instrução definir.
Além disso, devido a essas diferenças, o MIPS (milhões de instruções por segundo) — uma medida aproximada da potência bruta de um computador — pode ser difícil de calcular, pois os diferentes tipos de processadores exigem diferentes conjuntos de instruções para realizar a mesma atividade.
ARM vs x86 para uso de energia
A arquitetura RISC foi inspirada pela necessidade de fazer chips menores com melhor desempenho para computadores menores – ou microcomputadores – que eventualmente se tornaram PCs. Isso introduziu uma segunda questão fundamental de projeto: focar no desempenho do chip (velocidade de processamento — ou velocidade do clock) ou no consumo de energia (eficiência energética).
Como os processadores ARM são integrados como um SoC, a ênfase tem sido no gerenciamento geral de recursos, incluindo baixo consumo de energia e menor produção de calor. Por exemplo, arquiteturas ARM (como ARMv8) tendem a não ter sistemas de resfriamento simplificados (sem ventiladores em um telefone celular). No entanto, as CPUs x86 tendem a favorecer a velocidade de processamento de ponta em vez do baixo consumo de energia.
Embora ambos os designs de CPU ainda possam ter alto desempenho (ambos os supercomputadores de arquitetura ARM e x86 competem pelos mais rápidos do mundo), os designs ARM tendem a se concentrar em fatores de forma menores, vida útil da bateria, tamanho, eliminação de requisitos de resfriamento e - talvez a maioria importante - custo. É por isso que os processadores ARM dominam pequenos eletrônicos e dispositivos móveis como smartphones, tablets e até sistemas Raspberry Pi. As arquiteturas x86 são mais comuns em servidores, PCs e até laptops onde há preferência por velocidade e flexibilidade em tempo real e menos restrições de resfriamento e tamanho.
Comentários
Postar um comentário