A arquitetura x86 foi especialmente projetada para funcionar com um teclado enquanto o ARM espera ser móvel? Quais são as principais diferenças entre os dois?
A arquitetura x86 foi especialmente projetada para funcionar com um teclado enquanto o ARM espera ser móvel? Quais são as principais diferenças entre os dois?
Respostas:
ARM
é uma arquitetura RISC (Reduced Instruction Set Computing), enquanto x86
é uma arquitetura CISC (Complex Instruction Set Computing).
A principal diferença entre os que estão nesse aspecto é que as instruções ARM operam apenas em registradores, com algumas instruções para carregar e salvar dados de / para a memória, enquanto o x86 também pode operar diretamente na memória. Até a v8 ARM era uma arquitetura nativa de 32 bits, favorecendo operações de quatro bytes em detrimento de outras.
Portanto, o ARM é uma arquitetura mais simples, levando a uma pequena área de silício e a muitos recursos de economia de energia, enquanto o x86 se torna um animal em termos de consumo e produção de energia.
Sobre a pergunta " A arquitetura x86 foi especialmente projetada para funcionar com um teclado enquanto o ARM espera ser móvel? ". x86
não foi especialmente projetado para funcionar com teclado nem ARM
para celular. No entanto, novamente por causa das principais opções arquitetônicas, o x86 também tem instruções para trabalhar diretamente, IO
enquanto o ARM não. No entanto, com barramentos de IO especializados como USBs, a necessidade de tais recursos também está desaparecendo.
Se você precisar de um documento para citar, é isso que o Guia de Programadores da Série Cortex-A (4.0) informa sobre as diferenças entre as arquiteturas RISC e CISC:
Um processador ARM é um processador RISC (Reduced Instruction Set Computer).
Os processadores CISC (Complex Instruction Set Computer), como o x86, possuem um rico conjunto de instruções capaz de executar tarefas complexas com uma única instrução. Esses processadores geralmente possuem quantidades significativas de lógica interna que decodificam as instruções da máquina para sequências de operações internas (microcódigo).
As arquiteturas RISC, por outro lado, têm um número menor de instruções de uso geral, que podem ser executadas com significativamente menos transistores, tornando o silício mais barato e mais eficiente em termos de energia. Como outras arquiteturas RISC, os núcleos ARM possuem um grande número de registros de uso geral e muitas instruções são executadas em um único ciclo. Possui modos de endereçamento simples, onde todos os endereços de carregamento / armazenamento podem ser determinados a partir do conteúdo do registro e dos campos de instruções.
A empresa ARM também fornece um artigo intitulado Artigo sobre desenvolvimento de arquiteturas, processadores e dispositivos, descrevendo como esses termos se aplicam ao seu negócio.
Um exemplo comparando a arquitetura do conjunto de instruções:
Por exemplo, se você precisar de algum tipo de bloco de comparação de memória bytewise em seu aplicativo (gerado pelo compilador, ignorando detalhes), é assim que pode parecer em x86
repe cmpsb /* repeat while equal compare string bytewise */
enquanto no ARM
formato mais curto possa parecer (sem verificação de erros, etc.)
top:
ldrb r2, [r0, #1]! /* load a byte from address in r0 into r2, increment r0 after */
ldrb r3, [r1, #1]! /* load a byte from address in r1 into r3, increment r1 after */
subs r2, r3, r2 /* subtract r2 from r3 and put result into r2 */
beq top /* branch(/jump) if result is zero */
o que deve lhe dar uma dica sobre como os conjuntos de instruções RISC e CISC diferem em complexidade.
Também não há nada específico para teclado ou celular, além do fato de que há anos a ARM tem uma vantagem substancial em termos de consumo de energia, o que a torna atraente para todos os tipos de dispositivos operados por bateria.
No que diz respeito às diferenças reais: o ARM possui mais registros, suporte à predição para a maioria das instruções muito antes da Intel o incluir e incorporou há muito tempo todo tipo de técnicas (chame-as de "truques", se você preferir) para economizar energia em quase todos os lugares possíveis.
Há também uma diferença considerável em como as duas instruções de codificação. A Intel usa uma codificação de comprimento variável bastante complexa, na qual uma instrução pode ocupar de 1 a 15 bytes. Isso permite que os programas sejam muito pequenos, mas torna a decodificação de instruções relativamente difícil (como em: decodificar instruções rapidamente em paralelo é mais como um pesadelo completo).
O ARM possui dois modos diferentes de codificação de instruções: ARM e THUMB. No modo ARM, você obtém acesso a todas as instruções e a codificação é extremamente simples e rápida de decodificar. Infelizmente, o código do modo ARM tende a ser bastante grande, por isso é bastante comum que um programa ocupe duas vezes mais memória que o código da Intel. O modo Thumb tenta atenuar isso. Ele ainda usa uma codificação de instruções bastante regular, mas reduz a maioria das instruções de 32 bits para 16 bits, como a redução do número de registros, a eliminação da predicação da maioria das instruções e a redução do intervalo de ramificações. Pelo menos na minha experiência, isso ainda não costuma dar muitocodificação mais densa que o código x86 pode obter, mas é bastante próximo e a decodificação ainda é bastante simples e direta. Menor densidade de código significa que você geralmente precisa de pelo menos um pouco mais de memória e (geralmente mais a sério) um cache maior para obter desempenho equivalente.
Ao mesmo tempo, a Intel colocou muito mais ênfase na velocidade do que no consumo de energia. Eles começaram a enfatizar o consumo de energia principalmente no contexto dos laptops. Para laptops, seu objetivo típico de energia era da ordem de 6 watts para um laptop relativamente pequeno. Mais recentemente ( muito mais recentemente), eles começaram a segmentar dispositivos móveis (telefones, tablets, etc.) Para esse mercado, eles estão procurando alguns watts ou mais. Eles parecem estar se saindo muito bem com isso, embora sua abordagem tenha sido substancialmente diferente da ARM, enfatizando a tecnologia de fabricação, na qual a ARM enfatizou principalmente a microarquitetura (não surpreende, considerando que o ARM vende projetos e deixa a fabricação para outros).
Dependendo da situação, o consumo de energia de uma CPU geralmente é mais importante que o consumo de energia. Pelo menos enquanto uso os termos, o consumo de energia refere-se ao uso de energia (mais ou menos) instantaneamente. O consumo de energia, no entanto, normaliza a velocidade, portanto, se (por exemplo) a CPU A consome 1 watt por 2 segundos para executar um trabalho, e a CPU B consome 2 watts por 1 segundo para executar o mesmo trabalho, ambas as CPUs consomem a mesma quantidade total de energia (dois watts segundos) para fazer esse trabalho - mas com a CPU B, você obtém resultados duas vezes mais rápido.
Os processadores ARM tendem a se sair muito bem em termos de consumo de energia. Portanto, se você precisar de algo que precise da "presença" de um processador quase constantemente, mas não faça muito trabalho, eles poderão funcionar muito bem. Por exemplo, se você estiver realizando uma videoconferência, reunir alguns milissegundos de dados, compactá-los, enviá-los, receber dados de outras pessoas, descompactá-los, reproduzi-los e repeti-los. Mesmo um processador muito rápido não pode gastar muito tempo dormindo, portanto, para tarefas como essa, o ARM se sai muito bem.
Os processadores da Intel (especialmente os processadores Atom, que são realmente destinados a aplicações de baixo consumo de energia) são extremamente competitivos em termos de consumo de energia. Enquanto estiverem rodando quase na velocidade máxima, eles consumirão mais energia do que a maioria dos processadores ARM - mas também terminam o trabalho rapidamente, para que possam voltar a dormir mais cedo. Como resultado, eles podem combinar boa duração da bateria com bom desempenho.
Portanto, ao comparar os dois, você deve ter cuidado com o que mede, para ter certeza de que isso reflete o que você honestamente se importa. O ARM funciona muito bem com o consumo de energia, mas, dependendo da situação, você pode se importar mais com o consumo de energia do que com o consumo instantâneo de energia.
Adicional ao primeiro parágrafo de Jerry Coffin . Ou seja, o design do braço fornece menor consumo de energia.
A empresa ARM
apenas licencia a tecnologia da CPU. Eles não fazem chips físicos. Isso permite que outras empresas adicionem várias tecnologias periféricas, normalmente chamadas SOC ou system-on-chip. Se o dispositivo é um tablet, um telefone celular ou um sistema de entretenimento no carro. Isso permite que os fornecedores de chips adaptem o restante do chip para uma aplicação específica. Isso tem benefícios adicionais,
ARM
suporta fornecedores de SOC com AMBA , permitindo que os implementadores de SOC adquiram módulos de terceiros prontos para uso; como Ethernet, memória e controladores de interrupção. Algumas outras plataformas de CPU suportam isso, como o MIPS , mas o MIPS não tem tanta energia.
Tudo isso é benéfico para o design do dispositivo portátil / bateria. Alguns são apenas bons por toda parte. Além disso, ARM
tem um histórico de dispositivos operados por bateria; Apple Newton , Psion Organizadores . A infra-estrutura do software PDA foi aproveitada por algumas empresas para criar dispositivos do tipo smart phone . Embora, mais sucesso tenha sido obtido por aqueles que reinventaram a GUI para uso com um telefone inteligente .
O surgimento de Open source
conjuntos de ferramentas e operating systems
também facilitou os vários SOC
chips. Uma organização fechada teria problemas ao tentar suportar todos os vários dispositivos disponíveis para o ARM. As duas plataformas celulares mais populares, Andriod e OSx / IOS, são baseadas em sistemas operacionais Linux e FreeBSD, Mach e NetBSD . Open Source
ajuda os SOC
fornecedores a fornecer suporte de software para seus chipsets.
Felizmente, por que o x86 é usado no teclado é evidente. Possui o software e, mais importante, as pessoas treinadas para usá-lo. O Netwinder é um ARM
sistema que foi originalmente projetado para o teclado . Além disso, os fabricantes estão atualmente olhando o ARM64 para o mercado de servidores. Energia / calor é uma preocupação em data centers 24/7.
Então, eu diria que o ecossistema que cresce em torno desses chips é tão importante quanto recursos como baixo consumo de energia. ARM
tem se esforçado para obter baixo consumo de energia e computação de alto desempenho há algum tempo (meados da década de 1980) e eles têm muita gente a bordo.
Nota1: Vários chips precisam de drivers de barramento para se comunicarem em tensões e unidades conhecidas. Além disso, chips tipicamente separados precisam de capacitores de suporte e outros componentes de energia que podem ser compartilhados em um sistema SOC .
O ARM é como um carro esportivo italiano:
O x86 é como um muscle car americano:
Em resumo: o x86 é baseado em um design de 1974 e é bom em uma linha reta (mas usa muito combustível). O braço usa pouco combustível, não diminui a velocidade nos cantos (galhos).
Metáfora acabou, aqui estão algumas diferenças reais.
A arquitetura ARM foi originalmente projetada para computadores pessoais Acorn (consulte Acorn Archimedes , por volta de 1987 e RiscPC ), que eram tanto computadores pessoais baseados em teclado quanto modelos IBM PC baseados em x86. Somente as implementações posteriores do ARM foram direcionadas principalmente para o segmento de mercado móvel e incorporado.
Originalmente, as simples CPUs RISC de desempenho aproximadamente equivalente podiam ser projetadas por equipes de engenharia muito menores (veja Berkeley RISC ) do que aquelas que trabalham no desenvolvimento x86 da Intel.
Atualmente, porém, os chips ARM mais rápidos possuem unidades de despacho de instruções com várias questões complexas e fora de ordem, projetadas por grandes equipes de engenharia, e os núcleos x86 podem ter algo como um núcleo RISC alimentado por uma unidade de tradução de instruções.
Portanto, quaisquer diferenças atuais entre as duas arquiteturas estão mais relacionadas às necessidades específicas do mercado dos nichos de produtos que as equipes de desenvolvimento estão visando. (Opinião aleatória: o ARM provavelmente ganha mais em taxas de licença de aplicativos incorporados que tendem a ser muito mais limitados em termos de energia e custo. E a Intel precisa manter uma margem de desempenho em PCs e servidores por suas margens de lucro. Assim, você vê diferentes otimizações de implementação.)