Salta al contenuto
Note per Studenti Instruction Set Architecture

Instruction Set Architecture

In questa pagina 6

Definizione (ISA). 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 →).

Esempio. ADD r1, r2, r3 con r2=5 e r3=7 lascia r1=12: è un'istruzione dell'ISA ARM, qualunque sia la sua organizzazione interna.

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

Definizione (istruzioni a 0, 1, 2 e 3 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.

Esempio. SUB Y, A, B ha 3 indirizzi (destinazione e due sorgenti); SUB A, B ne ha 2, perché la destinazione coincide con il primo operando.

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

Definizione (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):

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)

Esempio. Se r2 punta a una cella che contiene 77, LDR r1, [r2] carica 77 in r1 e ADD r0, r1, r1 lascia r0=14.

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.

Teoria collegata