Macchina di Riferimento: argomenti Architettura MIPS
Transcript
Macchina di Riferimento: argomenti Architettura MIPS
Macchina di Riferimento: argomenti L'architettura di una macchina MIPS Organizzazione della memoria I registri della CPU L'esecuzione dei programmi Il ciclo fetch-execute Il simulatore SPIM 1 Architettura MIPS Obiettivo del corso: linguaggio assembly dell’architettura MIPS Architettura MIPS appartiene alla famiglia delle architetture RISC (Reduced Instruction Set Computer) sviluppate dal 1980 in poi Esempi: Sun Sparc, HP PA-RISC, IBM Power PC, DEC Alpha Principali obiettivi delle architetture RISC: Semplificare la progettazione dell’hardware e del compilatore Massimizzare le prestazioni Minimizzare i costi 2 1 Architetture RISC Caratteristiche principali: Istruzioni eseguite direttamente dall'hardware. Massimizzare la frequenza di esecuzione delle istruzioni Istruzioni facili da decodificare “poche”, poco “varie”, tutte di uguale lunghezza Accesso alla memoria solo attraverso istruzioni dedicate di caricamento/memorizzazione (load/store) Gli operandi di un'istruzione devono sempre risiedere nei registri del processore. 3 Architettura 4 2 Architettura di riferimento BUS (dati, indirizzi, segnali di controllo) Microprocessor (CPU) I\O driver I\O driver Monitor CD Registers Memory ALU 5 Architettura MIPS Componenti del processore MIPS 32 registri di tipo general-purpose ciascuno di dimensione 32 bits numerosi registri special-purpose PC (program counter) HI, LO (risultato di moltiplicazione/divisione ) altri registri accessibili solo dall' hardware Arithmetic Logic Unit (ALU) esegue calcoli aritmetici con i registri 6 3 MIPS: i registri Registri general-purpose possono essere usati in qualunque modo dal programma è convenzione assegnare un certo tipo di utilizzo ad alcuni registri general-purpose aderire alle convenzioni è importante, rende possibile l'interazione con programmi scritti da altri 7 MIPS: i registri Registri general-purpose (GPR) sono prefissati con il simbolo $ sono numerati da $0 a $31 hanno anche nomi basati sul tipo di utilizzo (convenzione) $0 ↔ $zero $4 ↔ $a0 $8 ↔ $t0 $29 ↔ $sp i nomi sono utilizzati nei programmi assembly per migliorarne la leggibilità, la comprensione 8 4 Architettura MIPS: i registri Nome Numero Utilizzo $zero 0 costante 0 $at 1 riservato all’assembler $v0 - $v1 2-3 Valutazione espressione $a0 - $a3 4-7 argomento 0-1-2-3 $t0 - $t7 8-15 temp.neo non preservato $s0 - $s7 16-23 temporaneo preservato $t8 - $t9 24-25 temp.neo non preservato $k0 - $k1 26-27 $gp 28 riservato per l’ OS kernel pointer to global area $sp 29 stack pointer $fp 30 frame pointer $ra 31 return address (funzioni) 9 Architettura MIPS: i registri I registri speciali LO e HI registri speciali non prefissati con il simbolo $ contengono il risultato di precedenti istruzioni di moltiplicazione o divisione sono previste istruzioni per spostare il contenuto dei registri LO e HI nei registri di tipo GPR Esistono 32 registri per le operazioni floating point (virgola mobile) indicati come : $f0, …, $f31 Per le operazioni in doppia precisione si usano i registri contigui: $f0, $f2, $f4, … 10 5 Moltiplicazione/divisione Registers ALU 64 bit HI LO 11 Architettura MIPS: i registri Il registro speciale PC (program counter) contiene l'indirizzo dell'istruzione attualmente in esecuzione (istruzione corrente) per cambiare l'istruzione eseguita, cambiare il valore di PC ha effetto dopo il completamento dell'istruzione corrente di norma viene aggiornato implicitamente con l'indirizzo dell'istruzione successiva le istruzione di branch e jump modificano esplicitamente il registro PC Registro IR (Instruction register) memorizza l’istruzione che il processore sta eseguendo 12 6 MIPS: ciclo fetch-execute Le istruzioni di un programma sono eseguite dall'hardware MIPS in un ciclo fetch-execute preleva (fetch) preleva (fetch) l'istruzione l'istruzione dalla dalla memoria memoria (la (la parola parola riferita riferita da da PC) PC) decodifica decodifica l'istruzione l'istruzione ee ne determina ne determina ilil tipo tipo esegue esegue l'istruzione l'istruzione PC PC <<- PC PC ++ 44 (bytes) (bytes) 13 Architettura MIPS : memoria memoria gli indirizzi sono formati da 32 bits spazio indirizzabile da 0x00000000 a 0xFFFFFFFF uno spazio indirizzabile di circa 4 giga bytes i programmi possono accedere alla memoria con le istruzioni load/store, appositamente previste dall'architettura MIPS load (copia) un valore dalla memoria ad un registro GPR store (copia) un valore da un registro GPR alla memoria 1, 2 o 4 bytes in alla volta le istruzioni logico/aritmetiche non possono accedere alla memoria (architettura LOAD/STORE) 14 7 Architettura MIPS: la memoria 0xFFFFFFFF 0x7FFFFFFF Reserved for OS Stack segment Heap Data segment 0x10000000 Text segment 0x00400000 0x00000000 Reserved for OS 15 $sp 7fff ffff $gp 1000 8000 Architettura MIPS: la memoria hex Text segment inizia all'indirizzo di memoria 0x00400000 Stack Dynamic data hex 1000 0000 hex 0040 0000 hex Static data Text pc Reserved 0 contiene il codice del programma utente 16 8 $sp 7fff ffff $gp 1000 8000 Architettura MIPS: la memoria hex Stack Data segment (segmento dati) inizia all'indirizzo di memoria 0x10000000 Dynamic data cresce verso lo stack (indirizzi crescenti) suddiviso in: pc hex 1000 0000 hex 0040 0000 hex Static data Text Reserved 0 dati statici del programma: dati la cui dimensione è conosciuta al momento della compilazione e il cui intervallo di vita coincide con l’esecuzione del programma. Ad esempio variabili globali costanti di tipo string dati dinamici: contiene dati ai quali lo spazio è allocato dinamicamente al momento dell'esecuzione del programma su richiesta del programma stesso. 17 $sp 7fff ffff $gp 1000 8000 Architettura MIPS : la memoria Stack segment inizia all'indirizzo di memoria 0x7FFFFFFF hex Stack Dynamic data hex 1000 0000 hex 0040 0000 hex Static data Text pc Reserved 0 cresce espandendosi in basso verso il data segment contiene lo stack del sistema usato come memoria temporanea variabili locali di funzioni argomenti di funzione indirizzi di ritorno registri salvati 18 9 $sp 7fff ffff $gp 1000 8000 Architettura MIPS : la memoria Stack hex Dynamic data System heap hex 1000 0000 hex 0040 0000 hex Static data Text pc area compresa tra il data segment e lo stack segment Reserved 0 è vuoto al inizio dell'esecuzione del programma la memoria richiesta dinamicamente dal programma in esecuzione è prelevata dall' heap e assegnata al programma la memoria rilasciata dal programma ritorna all' heap 19 Bus di sistema Permette la comunicazione tra le diverse unità del calcolatore ed è generalmente composto da tre parti: Bus dati, comprende le linee per trasferire dati e istruzioni da/verso la memoria. In generale, la dimensione del bus dati è tale da garantire il trasferimento contemporaneo di una o più parole di memoria; Bus indirizzi, su cui la CPU provvede a trasmettere l'indirizzo di memoria da cui prelevare il dato nel caso di lettura dalla memoria, oppure in cui depositarlo nel caso di scrittura nella memoria; Bus di controllo, dove transitano le informazioni ausiliarie per la corretta definizione delle operazioni da compiere (per esempio l'indicazione che si vuole effettuare una lettura piuttosto che una scrittura) e per la sincronizzazione tra CPU e memoria. 20 10 Il simulatore SPIM Esiste un ottimo simulatore dell'architettura MIPS (R2000) gratuito per diverse piattaforme (Unix, MS Windows, Macintosh) facile da usare dispone di interfaccia grafica 21 11