Ragioni di alto livello
Quando ci pensi, un microprocessore fa una cosa incredibile: ti consente di prendere una macchina (come una lavatrice o un ascensore) e sostituire un intero pezzo di meccanismi o circuiti progettati su misura con un silicio economico prodotto in serie patata fritta. Risparmia un sacco di soldi sulle parti e molto tempo sul design.
Ma aspetta, un chip standard , che sostituisce innumerevoli design personalizzati ? Non può esistere un singolo microprocessore perfetto per ogni applicazione. Alcune applicazioni devono ridurre al minimo il consumo di energia ma non devono essere veloci; altri devono essere veloci ma non devono essere facili da programmare, altri devono essere a basso costo, ecc.
Quindi, abbiamo molti "sapori" diversi di microprocessore, ognuno con i suoi punti di forza e di debolezza. È auspicabile che tutti utilizzino un set di istruzioni compatibile, poiché ciò consente il riutilizzo del codice e facilita la ricerca di persone con le giuste competenze. Tuttavia, il set di istruzioni non incidere sul costo, la complessità, la velocità, la facilità d'uso e vincoli fisici del processore, e quindi abbiamo un compromesso: NON alcuni "tradizionali" set di istruzioni (e molti minori), e all'interno di ogni set di istruzioni ci sono molti processori con caratteristiche diverse.
Oh, e quando la tecnologia cambia, tutti questi compromessi cambiano, quindi i set di istruzioni si evolvono, ne emergono di nuovi e quelli vecchi muoiono. Anche se ci fosse un "migliore" set di istruzioni di oggi, potrebbe non essere tra 20 anni.
Dettagli hardware
Probabilmente la più grande decisione di progettazione in un set di istruzioni è la dimensione della parola , ovvero quanto un numero può essere "naturalmente" manipolato dal processore. I processori a 8 bit gestiscono numeri da 0 a 255, mentre i processori a 32 bit gestiscono numeri da 0 a 4.294.967.295. Il codice progettato per uno deve essere completamente ripensato per un altro.
Non si tratta solo di tradurre le istruzioni da un set di istruzioni a un altro. Un approccio completamente diverso può essere preferibile in un set di istruzioni diverso. Ad esempio, su un processore a 8 bit una tabella di ricerca potrebbe essere l'ideale, mentre su un processore a 32 bit un'operazione aritmetica sarebbe migliore per lo stesso scopo.
Vi sono altre importanti differenze tra i set di istruzioni. La maggior parte delle istruzioni rientra in quattro categorie:
- Calcolo (aritmetica e logica)
- Flusso di controllo
- Trasferimento dati
- Configurazione del processore
I processori si differenziano per il tipo di calcoli che possono eseguire, nonché per il modo in cui si avvicinano al flusso di controllo, al trasferimento dei dati e alla configurazione del processore.
Ad esempio, alcuni processori AVR non possono né moltiplicarsi né dividere; mentre tutti i processori x86 possono farlo. Come puoi immaginare, l'eliminazione dei circuiti necessari per attività come la moltiplicazione e la divisione può rendere un processore più semplice ed economico; queste operazioni possono ancora essere eseguite utilizzando routine software se sono necessarie.
x86 consente alle istruzioni aritmetiche di caricare i loro operandi dalla memoria e / o salvare i loro risultati in memoria; ARM è un'architettura load-store e quindi ha solo alcune istruzioni dedicate per l'accesso alla memoria. Nel frattempo x86 ha istruzioni dedicate al ramo condizionale, mentre ARM permette praticamente a tutte le istruzioni di essere eseguite in modo condizionale. Inoltre, ARM consente di eseguire i bit-shift come parte della maggior parte delle istruzioni aritmetiche. Queste differenze portano a caratteristiche prestazionali diverse, differenze nella progettazione interna e nel costo dei chip e differenze nelle tecniche di programmazione a livello di linguaggio assembly.
Conclusione
Il motivo per cui è impossibile avere un linguaggio assembly universale è che, per convertire correttamente il codice assembly da un set di istruzioni in un altro, è necessario progettare nuovamente il codice, cosa che i computer non possono ancora fare.