Fondamenti Informatica II - Lez. 08 24.05.2006 1
Fondamenti di Informatica IIIngegneria Informatica e Biomedica
I anno, II semestreA.A. 2005/2006
Prof. Mario CannataroUniversità degli Studi “Magna Graecia”di Catanzaro
MAL
Fondamenti Informatica II - Lez. 08 24.05.2006 2
Sommario1. Introduzione2. Micro Assembly Language3. Architettura Mic-14. Istruzioni Logico Matematiche5. Istruzioni di Caricamento-Memorizzazione6. Istruzioni di Controllo7. Istruzioni Invokevirtual Ireturn8. Esempi
Fondamenti Informatica II - Lez. 08 24.05.2006 3
1) Introduzione
Ogni istruzione ISA-Level è realizzata mediante l’esecuzione di una sequenza di micro istruzioni. In ogni ciclo, sulla scorta del contenuto della control store, sono definiti:
•Lo stato di ogni segnale di controllo del sistema
•L’indirizzo della micro istruzione seguente.
Ogni micro istruzione determina autonomamente quella successiva:esse non sono eseguite nell’ordine in cui sono memorizzate.
Ogni microistruzione è atomica: non è possibile interromperne l’esecuzione.
Fondamenti Informatica II - Lez. 08 24.05.2006 4
2) MAL:Micro Assembly Language (1/3)
L’esecuzione di ogni istruzione ISA consiste di:Lettura dell’istruzione da memoriaSalto alle micro istruzioni corrispondentiEsecuzione della micro istruzioneRitorno e caricamento della successiva.
La memoria è comandata dai segnali rd e wr, mentre PC è gestito dal segnale fetch.
Fondamenti Informatica II - Lez. 08 24.05.2006 5
2) MAL:Micro Assembly Language (2/3)
Ogni insieme di micro istruzioni termina con un goto a Main1.
Main1 PC=PC+1;fetch;goto(MBR)Questa microistruzione incrementa il PC, comanda il segnale di fetch per il
caricamento della microistruzione successiva e salta all’istruzione contenuta in MBR. In MBR deve essere quindi presente l’opcode di una microistruzione , caricato nel ciclo precedente.
Quando in MBR non è presente alcuna istruzione Main1 salta alla NOP reiterando il ciclo fino a quando non è disponibile una microistruzione in MBR.
Fondamenti Informatica II - Lez. 08 24.05.2006 6
2) MAL:Micro Assembly Language (3/3)SOURCE può essere:
MDR, PC, MBR, MBRU, SP, LV, CPP, TOS, OPC
Questi registri sono sorgenti della ALU per mezzo del bus B.
DEST può essere:
MAR, MDR, PC, SP, LV, CPP, TOS, OPC, H
Questi registri sono output della ALU per mezzo del bus C.
Fondamenti Informatica II - Lez. 08 24.05.2006 7
3) Architettura Mic-1
Fondamenti Informatica II - Lez. 08 24.05.2006 8
4) Istruzioni logico- matematiche (1/3)
Istruzione IADD : richiede quattro cicli di clock1. Lettura dell’elemento sul top dello stack
Etichetta iadd1 MAR=SP=SP-1; rd2. Copia del valore del top dello stack in H
Etichetta iadd2 H=TOS3. Somma dei due valori
Etichetta iadd3 MDR=TOS=MDR+H;wr; goto Main 1
Fondamenti Informatica II - Lez. 08 24.05.2006 9
4) Istruzioni logico- matematiche (2/3)
Istruzione ISUB : richiede quattro cicli di clock1. Lettura dell’elemento sul top dello stack
Etichetta isub1 MAR=SP=SP-1; rd2. Copia del valore del top dello stack in H
Etichetta isub2 H=TOS3. Somma dei due valori
Etichetta isub3 MDR=TOS=MDR-H;wr; goto Main 1
La differenza sta nei differenti bit di comando della ALU che permettono l’esecuzione di una sottrazione anziché di una somma.
Fondamenti Informatica II - Lez. 08 24.05.2006 10
4) Istruzioni logico- matematiche (3/3)
Istruzione IAND : 1. Lettura dell’elemento sul top dello stack
Etichetta iand1 MAR=SP=SP-1; rd2. Copia del valore del top dello stack in H
Etichetta iand2 H=TOS3. Somma dei due valori
Etichetta iand3 MDR=TOS=MDR AND H;wr; goto Main1
La differenza sta nei differenti bit di comando della ALU.
Fondamenti Informatica II - Lez. 08 24.05.2006 11
5) Istruzioni di Caricamento Memorizzazione (1/2)
Istruzione ILOAD : 1. Copia di LV in H
Etichetta iload1 H=LV2. Copia dell’indirizzo della variabile in MAR
Etichetta iload2 MAR=MBRU+H; rd3. Prepara la scrittura su stack
Etichetta iload3 MAR=SP=SP+14. Incrementa il PC e scrive la cima dello stack
Etichetta iload4 PC=PC+1;fetch;wr5. Corregge il valore di TOS
Etichetta iload5 TOS=MDR; goto Main1
Fondamenti Informatica II - Lez. 08 24.05.2006 12
5) Istruzioni di Caricamento Memorizzazione (2/2)
Istruzione ISTORE : 1. Copia di LV in H
Etichetta istore1 H=LV2. Copia dell’indirizzo della variabile in MAR
Etichetta istore2 MAR=MBRU+H; rd3. Copia di TOS in MDR e scrivi su RAM
Etichetta istore3 MDR=TOS;wr4. Legge la parola in cima allo stack
Etichetta istore4 SP=MAR;SP=SP-1;rd5. Incrementa il PC legge il prossimo opcode
Etichetta istore5 PC=PC+1;FETCH6. Corregge il valore di TOS
Etichetta istore6 TOS=MDR;goto Main1
Fondamenti Informatica II - Lez. 08 24.05.2006 13
6) Istruzioni di Controllo (1/5)
Istruzione goto : 1. Salva l’indirizzo dell’opcode
Etichetta goto1 OPC=PC-12. MBR = primo byte dell’offset,legge il secondo byte
Etichetta goto2 PC=PC+1,fetch;3. Sposta e scrive il primo byte in H
Etichetta goto3 H=MBR <<84. H=offset di salto a 16 bit
Etichetta goto4 H=MBRU OR H5. Somma l’offset a PC
Etichetta goto5 PC=OPC+H,fetch6. Aspetta la lettura del prossimo opcode
Etichetta goto6 goto Main1
Fondamenti Informatica II - Lez. 08 24.05.2006 14
6) Istruzioni di Controllo (2/5)
Istruzione iflt : 1. Legge la parola in cima allo stack
Etichetta iflt1 MAR=SP=SP-1;rd2. Salva temporaneamente TOS in OPC
Etichetta iflt2 OPC=TOS;3. Mette la nuova cima dello stack in TOS
Etichetta iflt3 TOS=MDR (caricamento eseguito)4. Salto in funzione di H
Etichetta iflt4 N=opc;if(N) goto T else goto F
Fondamenti Informatica II - Lez. 08 24.05.2006 15
6) Istruzioni di Controllo (3/5)
Istruzione ifeq : 1. Legge la parola in cima allo stack
Etichetta ifeq1 MAR=SP=SP-1;rd2. Salva temporaneamente TOS in OPC
Etichetta ifeq2 OPC=TOS;3. Mette la nuova cima dello stack in TOS
Etichetta ifleq3 TOS=MDR (caricamento eseguito)4. Salto in funzione di H
Etichetta ifleq4 N=opc;if(N) goto T else goto F
Fondamenti Informatica II - Lez. 08 24.05.2006 16
6) Istruzioni di Controllo (4/5)
Istruzione ifcmpeq : 1. Legge la parola in cima allo stack
Etichetta ifcmpeq1 MAR=SP=SP-1;rd2. Prepara MAR per leggere la nuova cima dello stack
Etichetta ifcmpeq2 MAR=SP=SP-1 ;3. Copia la seconda parola dello stack
Etichetta ifcmpeq3 H=MDR,rd;4. Salva temporaneamete TOS in OPC
Etichetta ifcmpeq4 OPC=TOS5. Mette la cima dello stack in TOS
Etichetta ifcmpeq 5 TOS=MDR6. Se le due parole in cima allo stack sono uguali salta
Etichetta ifcmpeq6 Z=OPC-H if (Z) goto N else goto F
Fondamenti Informatica II - Lez. 08 24.05.2006 17
6) Istruzioni di Controllo (5/5)
Istruzione T: 1. Salta all’indirizzo target
OPC=PC-1;fetch;goto goto2
Istruzione F1. Salta il primo byte di offset
OPC=PC+1;
Fondamenti Informatica II - Lez. 08 24.05.2006 18
7) Istruzioni Invokevirtual - Ireturn
Istruzione invokevirtual
Istruzione ireturn
Fondamenti Informatica II - Lez. 08 24.05.2006 19
8) Esempio 1: Moltiplicazione
Fondamenti Informatica II - Lez. 08 24.05.2006 20
8) Esempio 2: Divisione
Fondamenti Informatica II - Lez. 08 24.05.2006 21
8) Esempio 3: IZERO
Implementare nell’architettura mic1 un’istruzione “IZERO var“ che azzeri il valore della variabile (var) passata come argomento ma non modifichi lo stack.
izero1 H = LVizero2 MAR = MBRU + Hizero3 MDR = 0; wrizero4 PC = PC + 1; fetch; goto Main1
Top Related