Instruction set architecture ISA

Ogni processore viene progettato è realizzato con una libreria di istruzioni specifica detta Isa, in corrispondenza di ogni istruzione la Alu esegue un micro algoritmo che compie qualche cosa.

Ogni istruzione del lista è caratterizzata da un codice detto Operation code ed ogni istruzione ha bisogno di un numero specifico di operandi su cui lavorare. Il numero di operandi ed il tipo di istruzione determina anche quanto è lunga l’istruzione in byte. Oltre all Operation code possiamo usare il codice armonico che è un codice più vicino alla lingua naturale con cui richiamare l’istruzione.

All’interno del processore possiamo pensare ci siano tre unità funzionali l’unità di controllo UCI, l’aria dei registri, l’unità logico aritmetica Alu. L’unità di controllo ha il compito di inviare le istruzioni per gestire gli altri componenti e quindi si affaccia sul bus di sistema. Il bus di sistema si può dividere in tre parti dette Abus Dbus e Cbus, l’address abus è il bus su cui viaggiano gli indirizzi, il Dbus è costituito dalle linee del bus su cui viaggiano i dati virgola il Cibus è costituito dalle linee su cui viaggiano le istruzioni di controllo. Infine il processore possiede anche un regisro speciale PC detto programm counter che conta le istruzioni del programma già eseguite: in esso c’è il valore della cella di memoria con la prossima istruzione ancora da eseguire.

Esempio: consideriamo un calcolatore ad 8 bit, con Abus e Dbus da 8 linee e un Cbus da 3 linee, 2 registri ad 8 bit A e B, ed il set di 4 istruzioni che segue in tabella, come si fa a visualizzare sullo schermo la scritta HAL? (Si ipotizzi che il PC parta d 16 perché i primi 16 Byte in memoria servano per i dati).

op. code codice mnemonico operando 1 operando 2 descrizione 
0 store indirizzo valore store pone un valore in una cella di un dato indirizzo
10 loada indirizzo load A carica il valore posto nella cella con indirizzo indicato, nel registro A
20 out Visualizza sullo schermo il valore contenuto sul registro A
50 end Termina il programma

Soluzione:

indirizzi memoria
0 H A L
8
16 0 0 ‘H’ 0 1 65 0 2
24 ‘L’ 10 0 20 10 1 20 10
32 2 20 50

Che corrisponde al programma mnemonico:

  • store    0    ‘H’
  • store    1     65
  • store    2     ‘L’
  • loadA 0
  • out
  • loadA 1
  • out
  • loadA 2 
  • out
  • end

oppure

 

indirizzi memoria
0 H
8
16 0 1 ‘H’ 10 1 20 0 1
24 ‘A’ 10 1 20 0 1 ‘L’ 10
32 1 20 50

Che corrisponde al programma mnemonico:

  • store    1    ‘H’    salva nella cella 1 la lettera ‘H’
  • loadA 1              carica nel registro A il valore contenuto nella cella 1
  • out                      visualizza il contenuto del registro A sul monitor 
  • store    1     ‘A’   salva nella cella 1 la lettera ‘A’
  • loadA 1             carica nel registro A il valore contenuto nella cella 1
  • out                     visualizza il contenuto del registro A sul monitor 
  • store    1     ‘L’   salva nella cella 1 la lettera ‘L’
  • loadA 1              carica nel registro A il valore contenuto nella cella 1
  • out                     visualizza il contenuto del registro A sul monitor 
  • end                    fine programma

Il programma inizia al indirizzo 16 e termina all’indirizzo 34, quindi è lungo 34-16+1=18 word cioè 19Byte.

Esempio: consideriamo un calcolatore ad 8 bit, con Abus e Dbus da 8 linee e un Cbus da 3 linee, 2 registri ad 8 bit A e B, ed il set di 4 istruzioni che segue in tabella, come si fa a visualizzare sullo schermo la scritta HAL solo se l’utente digita il tasto H? (Si ipotizzi che il PC parta d 16 perché i primi 16 Byte in memoria servano per i dati).

op. code codice mnemonico operando 1 operando 2 descrizione 
0 store indirizzo valore store pone un valore in una cella di un dato indirizzo
10 loadA indirizzo carica il valore posto all’indirizzo indicato, nel registro A
11 loadB indirizzo carica il valore posto all’indirizzo indicato, nel registro B
20 out Visualizza sullo schermo il valore contenuto sul registro A
21 input indirizzo il codice ascii del tasto premuto viene inserito all’indirizzo indicato
30 jmp indirizzo il Programm counter passa all’istruzione posta all’indirizzo indicato
31 je indirizzo il PC salta all’indirizzo se Registro A = Registro B
50 end Termina il programma

 

Soluzione: linguaggio mnemonico

16 store 0 ‘H’
19 store 1 ‘A’
22 store 2 ‘L’
25 input 3
27 loadA 0
29 loadB 3
31 je 35
33 jmp 44
35 loadA 0
37 out
38 loadA 1
40 out
41 loadA 2
43 out
44 end.

Soluzione: programma in memoria con codici numerici.

indirizzi memoria
0 H A L X
8
16 0 0 ‘H’ 0 1 ‘A’ 0 2
24 ‘L’ 21 3 10 0 11 3 31
32 35 30 44 10 0 20 10 1
40 20 10 2 20 50  
48          

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.