Salta al contenuto
Note per Studenti Instruction Set Architecture

Instruction Set Architecture

In questa pagina 6

L'insieme delle istruzioni (ISA, Instruction Set Architecture) è il confine tra hardware e software: è tutto ciò che un programma in linguaggio macchina può usare. Due processori con la stessa ISA eseguono lo stesso codice, anche se sono organizzati in modo diverso (vedi Architettura e organizzazione di un calcolatoreDifferenza tra architettura (ciò che vede il programmatore) e organizzazione (come è realizzata); struttura e funzione; le quattro funzioni e i quattro componenti; macchina di von Neumann e IAS; generazioni tecnologiche e legge di Moore.Architettura e organizzazione di un calcolatore →).

L'ISA fissa: le operazioni disponibili, i tipi e le dimensioni dei dati, i registri visibili, le modalità di indirizzamento e i formatiModalità di indirizzamento (immediato, diretto, indiretto, a registro, indiretto a registro, con spiazzamento, relativo al PC, indicizzato e scalato, a pila) con indirizzo effettivo ed esempi; formati fissi e variabili; i formati R, I e J di MIPS e il formato a 32 bit di ARM con il calcolo dei campi.Formato delle istruzioni e modalità di indirizzamento →, il modello di memoria (indirizzamento al byte, ordine dei byte), la gestione delle eccezioni.

Elementi di un'istruzione

  • Codice operativo (opcode): l'operazione.
  • Riferimenti agli operandi sorgente: in un registro, in memoria, dentro l'istruzione stessa (immediato), in una porta di I/O.
  • Riferimento al risultato.
  • Prossima istruzione: implicita (la successiva), esplicita nei salti.

In assembly ogni istruzione si scrive con un codice mnemonico: ADD r1, r2, r3, LDR r0, [r1].

Tipi di operandi

Indirizzi (interi senza segno), numeri (interi in complemento a 2, virgola mobile, a volte BCD), caratteri (ASCII, UTF-8), dati logici (singoli bit). Dimensioni tipiche in ARM: byte (8 bit), mezza parola (16), parola (32), doppia parola (64).

Tipi di operazioni

Classe Esempi
trasferimento dati load, store, move, push, pop
aritmetiche add, sub, mul, div, neg, incremento
logiche and, or, xor, not, test
scorrimento e rotazione shift logico, aritmetico, rotazione
conversione da intero a virgola mobile, estensione del segno
I/O in, out (solo con I/O isolato, vedi Moduli di input-output e input-output programmatoPerché servono i moduli di I/O; funzioni del modulo (controllo, comunicazione, buffer, errori) e registri di stato, controllo e dati; I/O mappato in memoria e isolato con esempi; I/O programmato con attesa attiva e suo costo; confronto delle tre tecniche.Moduli di input-output e input-output programmato →)
controllo di sistema istruzioni privilegiate, chiamata al sistema operativo
trasferimento del controllo salto incondizionato e condizionato, chiamata e ritorno da procedura

Numero di indirizzi

Quanti operandi espliciti ha un'istruzione aritmetica. Esempio: Y=(A−B)/(C+D⋅E)Y = (A - B) / (C + D \cdot E), variabili in memoria.

3 indirizzi (OP dest, src1, src2):

SUB Y, A, B      ; Y <- A - B
MUL T, D, E      ; T <- D * E
ADD T, T, C      ; T <- T + C
DIV Y, Y, T      ; Y <- Y / T

2 indirizzi (OP dest, src, la destinazione è anche il primo operando):

MOV Y, A         ; Y <- A
SUB Y, B         ; Y <- Y - B
MOV T, D
MUL T, E         ; T <- D * E
ADD T, C
DIV Y, T

1 indirizzo (accumulatore implicito):

LOAD D
MUL  E
ADD  C
STOR Y           ; Y <- D*E + C (temporaneo)
LOAD A
SUB  B
DIV  Y
STOR Y

0 indirizzi (macchina a pila: gli operandi sono in cima allo stack): PUSH A, PUSH B, SUB, PUSH C, PUSH D, PUSH E, MUL, ADD, DIV, POP Y.

Meno indirizzi → istruzioni più corte ma più numerose. Le architetture RISC usano 3 indirizzi di registro.

Architettura load/store

In ARM e MIPS solo le istruzioni di load e store accedono alla memoria; tutte le operazioni aritmetiche e logiche lavorano tra registri. Lo stesso calcolo in ARM (variabili già caricate in r1–r5):

armasm
SUB r0, r1, r2      @ r0 = A - B
MUL r6, r4, r5      @ r6 = D * E
ADD r6, r6, r3      @ r6 = C + D*E
SDIV r0, r0, r6     @ r0 = Y (SDIV esiste solo nelle versioni più recenti dell'ISA)

Errori tipici

  • Confondere ISA e microarchitettura: la pipeline o la cache non fanno parte dell'ISA.
  • Nelle macchine a 2 indirizzi, dimenticare che il primo operando viene sovrascritto.

Versione ripasso

ISA: il confine tra hardware e software (Architettura e organizzazione di un calcolatoreDifferenza tra architettura (ciò che vede il programmatore) e organizzazione (come è realizzata); struttura e funzione; le quattro funzioni e i quattro componenti; macchina di von Neumann e IAS; generazioni tecnologiche e legge di Moore.Architettura e organizzazione di un calcolatore →); fissa operazioni, tipi di dati, registri, indirizzamento e formatiModalità di indirizzamento (immediato, diretto, indiretto, a registro, indiretto a registro, con spiazzamento, relativo al PC, indicizzato e scalato, a pila) con indirizzo effettivo ed esempi; formati fissi e variabili; i formati R, I e J di MIPS e il formato a 32 bit di ARM con il calcolo dei campi.Formato delle istruzioni e modalità di indirizzamento →, modello di memoria, eccezioni.

Istruzioni

Numero di indirizzi

Y=(A−B)/(C+D⋅E)Y = (A - B)/(C + D \cdot E):

  • 3: SUB Y,A,B; MUL T,D,E; ADD T,T,C; DIV Y,Y,T.
  • 2 (destinazione = primo operando): MOV Y,A; SUB Y,B; MOV T,D; MUL T,E; ADD T,C; DIV Y,T.
  • 1 (accumulatore): LOAD D; MUL E; ADD C; STOR Y; LOAD A; SUB B; DIV Y; STOR Y.
  • 0 (pila): PUSH A, PUSH B, SUB, PUSH C, PUSH D, PUSH E, MUL, ADD, DIV, POP Y.

Meno indirizzi: istruzioni più corte ma più numerose. RISC: 3 indirizzi di registro, load/store: in ARM SUB r0,r1,r2; MUL r6,r4,r5; ADD r6,r6,r3; SDIV r0,r0,r6.

Errori tipici: pipeline e cache non fanno parte dell'ISA; a 2 indirizzi il primo operando è sovrascritto.

Lezioni in cui compare