L'architettura x86 è appositamente progettata per funzionare con una tastiera mentre ARM prevede di essere mobile? Quali sono le differenze chiave tra i due?
L'architettura x86 è appositamente progettata per funzionare con una tastiera mentre ARM prevede di essere mobile? Quali sono le differenze chiave tra i due?
Risposte:
ARM
è un'architettura RISC (Reduced Instruction Set Computing) mentre x86
è un'architettura CISC (Complex Instruction Set Computing).
La differenza principale tra quelli in questo aspetto è che le istruzioni ARM funzionano solo sui registri con alcune istruzioni per il caricamento e il salvataggio dei dati dalla / alla memoria, mentre x86 può operare direttamente anche sulla memoria. Fino a quando v8 ARM era un'architettura nativa a 32 bit, favorendo operazioni a quattro byte rispetto ad altre.
Quindi ARM è un'architettura più semplice, che porta a una piccola area di silicio e molte funzionalità di risparmio energetico, mentre x86 diventa una bestia in termini di consumo energetico e produzione.
Informazioni sulla domanda " architettura x86 è appositamente progettata per funzionare con una tastiera mentre ARM prevede di essere mobile? ". x86
non è appositamente progettato per funzionare con una tastiera né ARM
per dispositivi mobili. Tuttavia, ancora una volta a causa delle scelte architettoniche fondamentali, in realtà x86 ha anche istruzioni per lavorare direttamente IO
mentre ARM no. Tuttavia, con bus IO specializzati come USB, anche queste necessità stanno scomparendo.
Se hai bisogno di un documento da citare, questo è ciò che la Guida dei programmatori serie Cortex-A (4.0) racconta delle differenze tra le architetture RISC e CISC:
Un processore ARM è un processore RISC (Reduced Instruction Set Computer).
I processori CISC (Complex Instruction Set Computer), come x86, dispongono di un ricco set di istruzioni in grado di eseguire operazioni complesse con una singola istruzione. Tali processori hanno spesso quantità significative di logica interna che decodificano le istruzioni della macchina in sequenze di operazioni interne (microcodice).
Le architetture RISC, al contrario, hanno un numero inferiore di istruzioni più generiche, che potrebbero essere eseguite con un numero significativamente inferiore di transistor, rendendo il silicio più economico e più efficiente dal punto di vista energetico. Come altre architetture RISC, i core ARM hanno un gran numero di registri generici e molte istruzioni vengono eseguite in un singolo ciclo. Ha modalità di indirizzamento semplici, in cui tutti gli indirizzi di caricamento / archiviazione possono essere determinati dal contenuto del registro e dai campi di istruzione.
La società ARM fornisce anche un articolo intitolato Articolo di sviluppo di architetture, processori e dispositivi che descrive come tali termini si applicano al loro business.
Un esempio di confronto tra l'architettura del set di istruzioni:
Ad esempio, se avessi bisogno di una sorta di blocco di confronto di memoria bytewise nell'applicazione (generato dal compilatore, saltando i dettagli), ecco come potrebbe apparire su x86
repe cmpsb /* repeat while equal compare string bytewise */
mentre nella ARM
forma più breve potrebbe apparire (senza controllo errori ecc.)
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 */
che dovrebbe darti un suggerimento su come le serie di istruzioni RISC e CISC differiscono nella complessità.
Né ha nulla di specifico per la tastiera o il cellulare, a parte il fatto che per anni ARM ha avuto un vantaggio piuttosto sostanziale in termini di consumo energetico, che lo ha reso attraente per tutti i tipi di dispositivi a batteria.
Per quanto riguarda le effettive differenze: ARM ha più registri, supporta la previsione per la maggior parte delle istruzioni molto prima che Intel l'abbia aggiunta e ha da tempo incorporato ogni tipo di tecnica (chiamale "trucchi", se preferisci) per risparmiare energia quasi ovunque potesse.
C'è anche una notevole differenza nel modo in cui le due istruzioni codificano. Intel utilizza una codifica di lunghezza variabile abbastanza complessa in cui un'istruzione può occupare da 1 a 15 byte. Ciò consente ai programmi di essere piuttosto piccoli, ma rende relativamente difficile la decodifica delle istruzioni (come in: la decodifica rapida delle istruzioni in parallelo è più simile a un incubo completo).
ARM ha due diverse modalità di codifica delle istruzioni: ARM e THUMB. In modalità ARM, puoi accedere a tutte le istruzioni e la codifica è estremamente semplice e veloce da decodificare. Sfortunatamente, il codice della modalità ARM tende ad essere abbastanza grande, quindi è abbastanza comune per un programma occupare circa il doppio della memoria del codice Intel. La modalità pollice tenta di mitigarlo. Utilizza ancora una codifica di istruzioni abbastanza regolare, ma riduce la maggior parte delle istruzioni da 32 bit a 16 bit, ad esempio riducendo il numero di registri, eliminando le previsioni dalla maggior parte delle istruzioni e riducendo l'intervallo di rami. Almeno nella mia esperienza, questo di solito non dà abbastanzatanto denso di codice quanto può ottenere il codice x86, ma è abbastanza vicino e la decodifica è ancora abbastanza semplice e diretta. Una densità di codice inferiore significa che in genere è necessario almeno un po 'più di memoria e (generalmente più seriamente) una cache più grande per ottenere prestazioni equivalenti.
Un tempo Intel puntava molto più sulla velocità che sul consumo energetico. Hanno iniziato a sottolineare il consumo di energia principalmente nel contesto dei laptop. Per i laptop il loro obiettivo di potenza tipico era dell'ordine di 6 watt per un laptop abbastanza piccolo. Più recentemente ( molto più recentemente) hanno iniziato a rivolgersi a dispositivi mobili (telefoni, tablet, ecc.) Per questo mercato, stanno osservando un paio di watt al massimo. Sembra che stiano andando abbastanza bene, sebbene il loro approccio sia stato sostanzialmente diverso da quello di ARM, enfatizzando la tecnologia di fabbricazione in cui ARM ha principalmente enfatizzato la microarchitettura (non sorprende, considerando che ARM vende i progetti e lascia la fabbricazione ad altri).
A seconda della situazione, il consumo di energia di una CPU è spesso più importante del suo consumo di energia. Almeno mentre sto usando i termini, il consumo di energia si riferisce al consumo di energia su una base (più o meno) istantanea. Il consumo di energia, tuttavia, si normalizza per la velocità, quindi se (ad esempio) la CPU A consuma 1 watt per 2 secondi per fare un lavoro e la CPU B consuma 2 watt per 1 secondo per fare lo stesso lavoro, entrambe le CPU consumano lo stesso importo totale di energia (due watt di secondo) per fare quel lavoro - ma con la CPU B, ottieni risultati due volte più velocemente.
I processori ARM tendono a fare molto bene in termini di consumo energetico. Quindi, se hai bisogno di qualcosa che ha bisogno della "presenza" di un processore quasi costantemente, ma in realtà non sta facendo molto lavoro, possono funzionare abbastanza bene. Ad esempio, se stai effettuando videoconferenze, raccogli alcuni millisecondi di dati, li comprimi, li invii, li ricevi da altri, li decomprimi, li riproduci e li ripeti. Anche un processore molto veloce non può passare molto tempo a dormire, quindi per compiti come questo, ARM fa davvero bene.
I processori Intel (in particolare i processori Atom, che in realtà sono destinati ad applicazioni a bassa potenza) sono estremamente competitivi in termini di consumo energetico. Mentre si avvicinano alla massima velocità, consumano più energia della maggior parte dei processori ARM, ma finiscono anche di lavorare rapidamente, in modo che possano tornare a dormire prima. Di conseguenza, possono combinare una buona durata della batteria con buone prestazioni.
Quindi, confrontando i due, devi stare attento a ciò che misuri, per essere sicuro che rifletta ciò che ti interessa sinceramente. ARM fa molto bene con il consumo di energia, ma a seconda della situazione potresti facilmente preoccuparti di più del consumo di energia che del consumo di energia istantaneo.
In aggiunta al primo paragrafo di Jerry Coffin . Vale a dire, il design ARM offre un consumo energetico inferiore.
L'azienda ARM
concede in licenza solo la tecnologia CPU. Non fanno chip fisici. Ciò consente ad altre aziende di aggiungere varie tecnologie periferiche, in genere chiamate SOC o system-on-chip. Se il dispositivo è un tablet, un telefono cellulare o un sistema di intrattenimento in auto. Ciò consente ai venditori di chip di adattare il resto del chip a una particolare applicazione. Questo ha ulteriori vantaggi,
ARM
supporta i fornitori SOC con AMBA , consentendo agli implementatori SOC di acquistare moduli di terze parti standardizzati; come una Ethernet, controller di memoria e interrupt. Alcune altre piattaforme CPU supportano questo, come MIPS , ma MIPS non è così attento al potere.
Tutti questi sono utili per un design portatile / a batteria. Alcuni sono buoni ovunque. Inoltre, ARM
ha una storia di dispositivi a batteria; Apple Newton , Organizzatori di Psion . L' infrastruttura del software PDA è stata sfruttata da alcune aziende per creare dispositivi di tipo smart phone . Tuttavia, un maggior successo è stato ottenuto da coloro che hanno reinventato la GUI per l'uso con uno smartphone .
L'aumento dei Open source
set di strumenti ha operating systems
anche facilitato i vari SOC
chip. Un'organizzazione chiusa avrebbe problemi a provare a supportare tutti i vari dispositivi disponibili per ARM. Le due piattaforme cellulari più popolari, Andriod e OSx / IOS, sono basate su sistemi operativi Linux e FreeBSD, Mach e NetBSD . Open Source
aiuta i SOC
fornitori a fornire supporto software per i loro set di chip.
Spero che il motivo per cui x86 sia usato per la tastiera sia evidente. Ha il software e, soprattutto, le persone addestrate a utilizzare quel software. Netwinder è un ARM
sistema originariamente progettato per la tastiera . Inoltre, i produttori stanno attualmente cercando ARM64 per il mercato dei server. Potenza / calore è un problema nei data center 24/7.
Quindi direi che l' ecosistema che cresce attorno a questi chip è importante quanto funzionalità come il basso consumo energetico. ARM
è alla ricerca di potenza ridotta e prestazioni più elevate da qualche tempo (da metà alla fine degli anni '80) e hanno un sacco di gente a bordo.
Nota 1: i chip multipli necessitano di driver di bus per comunicare tra loro a tensioni e drive noti. Inoltre, in genere chip separati richiedono condensatori di supporto e altri componenti di potenza che possono essere condivisi in un sistema SOC .
Il braccio è come un'auto sportiva italiana:
La x86 è come una muscle car americana:
In sintesi: l'x86 si basa su un design del 1974 ed è buono in linea retta (ma consuma molto carburante). Il braccio consuma poco carburante, non rallenta per gli angoli (rami).
Metafora finita, ecco alcune vere differenze.
L'architettura ARM è stata originariamente progettata per i personal computer Acorn (vedi Acorn Archimedes , circa 1987 e RiscPC ), che erano altrettanti personal computer basati su tastiera quanto i modelli di PC IBM basati su x86. Solo le implementazioni ARM successive sono state principalmente rivolte al segmento di mercato mobile e embedded.
Inizialmente, semplici CPU RISC con prestazioni approssimativamente equivalenti potevano essere progettate da team di ingegneri molto più piccoli (vedi Berkeley RISC ) rispetto a quelli che lavorano allo sviluppo x86 di Intel.
Al giorno d'oggi, tuttavia, i chip ARM più veloci dispongono di unità di invio di istruzioni fuori servizio multi-problema molto complesse progettate da grandi team di ingegneri e i core x86 possono avere qualcosa come un core RISC alimentato da un'unità di traduzione delle istruzioni.
Pertanto, eventuali differenze attuali tra le due architetture sono più correlate alle esigenze specifiche del mercato delle nicchie di prodotto che i team di sviluppo stanno prendendo di mira. (Opinione casuale: ARM probabilmente incrementa i costi delle licenze dalle applicazioni integrate che tendono ad essere molto più limitati in termini di potenza e costi. Intel ha bisogno di mantenere un vantaggio prestazionale in PC e server per i loro margini di profitto. In questo modo si notano diverse ottimizzazioni dell'implementazione.)