Controllo e microprogrammazione Architettura 1/2000
Cosa imparerete Come una CPU fa quello che fa Schema logico (4.1) Implementazione di base (4.3) Un nuovo ISA: quello usato dalla catena programmativa Java (4.2) December 18
ISA per Java Modello programmativo Istruzioni Programma Java Compilatore Istruzioni della Java Virtual Machine (byte code) December 18
ISA per Java Per semplicita’ si usa una versione semplificata della Java Virtual Machine chiamata Integer JVM. Niente istruzioni floating point Niente gestione delle caratteristiche object-oriented (ad esempio la chiamata a metodi) Niente gestione interruzioni December 18
Cammino didattico Imparare il modello programmativo Imparare le istruzioni IJVM Imparare come le istruzioni Java si mappano in istruzioni IJVM Imparare come le istruzioni IJVM vengono eseguite in una CPU didattica chiamata Mic-1 December 18
Modello programmativo di IJVM Uso della memoria Indirizzo lineare Stack Tipi di memoria: Costanti Parametri e variabili locali Metodi (codice) December 18
Stack Per passare parametri December 18
Stack Per eseguire calcoli a1 a2 + a3 December 18
Stack Le CPU moderne tendono a non usare la stack per i calcoli (ad esempio MIPS) ma ad usarla per il passaggio parametri. JVM e’ intesa principalmente per essere interpretata e fa eccezione: Usa istruzioni molto piccole con pochissimi operandi (byte code). Non usa registri. December 18
Modello di memoria 232 byte o 4 Gbyte Indirizzamento per mezzo di offset da puntatori che definiscono aree di memoria con un uso specifico December 18
Constant pool Costanti, Puntata da un registro (CPP) Area a sola lettura da parte del programma Area scritta dal caricatore quando il programma e’ caricato in memoria Puntata da un registro (CPP) December 18
Frame delle variabili locali Un frame per ciascuna chiamata a metodo: Parametri di chiamata Variabili locali e operandi Delimitata da due registri LV e SP December 18
Area dei metodi Semplicemente il codice Puntata da un registro (PC) December 18
Memoria JVM Sommario December 18
Granularita’ di indirizzamento La memoria JVM e’ indirizzata a word di 4 byte quando si accede ai dati (LV, CPP, SP) La memoria JVM e’ indirizzata a byte quando si accede al codice (PC) December 18
Instruction set (1) BIPUSH byte Push di un byte sulla stack DUP Copia della prima parola sulla stack e push IADD Pop di due parole dalla stack; push della loro somma IAND Pop di due parole dalla stack; push dell’AND logico IOR Pop di due parole dalla stack; push dell’OR logico ISUB Pop due parole dalla stack; push la loro differenza December 18
Instruction set (2) GOTO offset Branch non condizionato IFEQ offset Pop di una parola e branch se è zero IFLT offset Pop di una parola e branch se è negativa IFICMPEQ offset Pop di due parole dalla stack; branch se sono uguali IINC varnum const Somma una costante a una variabile locale ILOAD varnum Push di una variabile locale sulla stack December 18
Instrucion set (3) ISTORE varnum Pop una parola dalla stack e memorizzala in una variabile locale LDCW index Push di una costante dalla constant pool sulla stack NOP Nessuna operazione POP Cancella una parola dalla cima della stack SWAP Scambia le due parole in cima alla stack WIDE Prefisso; l’istruzione seguente ha un indice di 16 bit December 18
Instrucion set (4) INVOKEVIRTUAL disp Chiama un metodo IRETURN Ritorno da un metodo con un valore intero December 18
Chiamata dei “metodi” In realta’ semplicemente una chiamata di funzione in IJVM December 18
Prima e dopo IRETURN December 18
Da Java all’ISA di IJVM December 18
Seconda parte Come si fa ad “eseguire” i byte-code, cioe’ l’ISA, di IJVM? Ciclo fetch-execute Il datapath Il control-path Le microistruzioni December 18
Ciclo fetch-execute Leggi byte da RAM Interpreta byte come istruzione IJVM Esegui istruzione, possibilmente leggendo e scrivendo word (4 byte) in RAM December 18
Data path December 18
ALU Output= December 18
Sincronizzazione del data path December 18
Indirizzamento Dati Codice MAR (indirizzo 30 bit) e MDR (dati 32 bit) PC (indirizzo 32 bit) e MBR (codice 8 bit) December 18
Dettagli dell’accesso in memoria MBR unsigned: portato sul bus con 24 zeri nella parte piu’ significativa MBR signed: portato sul bus con i 24 bit significativi “estesi” dal bit di segno del byte meno significativo Quindi, se il byte conteneva un numero in complemento a due, lo stesso numero sara’ presente nei 32 bit del bus interno December 18
Microistruzioni Quanti segnali sono necessari per controllare il datapath? 9 C-registri 9 registri – B 8 ALU 3 controllo memoria December 18
Formato microistruzioni December 18
Mic-1 December 18
Fetch December 18