Architettura degli Elaboratori Introduzione al corso Modello della Macchina di Von Neumann Una architettura reale: MIPS Dott. Franco Liberati
Argomenti della lezione Un modello di elaboratore elettronico: la Macchina di Von Neumann Architettura di un elaboratore elettronico (nozioni di base del MIPS)
Architettura degli Elaboratori Modello della Macchina di Von Neumann Dott. Franco Liberati
Macchina di Von Neumann Modello di un sistema di calcolo automatico che elabora le istruzioni e gli operandi di un programma memorizzato CU ALU MEM I/O STRUTTURA DI INTERCONESSIONE
Macchina di Von Neumann Unità di controllo (control unit) Sottosistema deputato all elaborazione delle istruzioni, all invio dei comandi e alle operazioni di controllo CU ALU MEM I/O Registro 1 Registro 2 DECODIFICATORE DI ISTRUZIONI CLOCK FASE MEM Registro 3 Registro n Rete combinatoria o sequenziale GENERATORE DI COMANDI PC SR CLOCK: scandisce i tempi per il cambiamento di stato FASE: scandisce le fasi di caricamento (load), decodifica (decode) ed esecuzione (execute) e archiviazione (store) PC: contiene l indirizzo in memoria dell istruzione da elaborare
Macchina di Von Neumann CU Unità logico-aritmetica (logical-aritmetical unit) Componente dove vengono effettuate operazioni Logiche: shift, rotazione, and, or, not Aritmetiche: somma, complemento a due ALU MEM I/O Funzione Operando 1 Operando 2 AND 1 0 1 1 1 0 1 0 0 0 1 1 1 1 1 1 0 0 1 1 1 0 1 0 ALU Risultato SR SOMMA 1 0 1 0 1 0 1 0 + 0 0 1 1 1 1 1 1 1 1 1 0 1 0 0 1
Macchina di Von Neumann Unità logico-aritmetica: il registro di stato CU ALU MEM I/O Dopo ogni operazione si aggiorna, tramite i codici di condizione (condition code o flag) il registro di stato che contiene lo stato della macchina W: overflow; C: trabocco Z: zero; S: segno ; P: parità Funzione Operando 1 Operando 2 0 0 0 0 0 0 0 SOMMA ALU 1 0 1 0 1 0 1 0 + 1 0 1 1 1 1 1 1 1 0 1 1 0 1 0 0 1 Risultato Z W C S P I T 0 1 1 0 1 0 0
Macchina di Von Neumann Memoria CU ALU MEM I/O Componente dove risiedono istruzioni, dati o indirizzi. È caratterizzata da un indirizzo e una locazione (o cella) di memoria Accesso casuale e non sequenziale (RAM: randomaccessmemory). INDIRIZZO 00000000 00000001 00000010 00000011 00000100 00000101 00000110 LOCAZIONE 11111111
Macchina di Von Neumann Memoria:funzionamento CU ALU MEM I/O In lettura l elaboratore invia un indirizzo; dalla memoria ritorna l operando o l istruzione (o un nuovo indirizzo) allocato all indirizzo richiesto In scrittura l elaboratore invia un indirizzo ed un operando; in memoria è stipato l operando all indirizzo allegato Indirizzo: 00000101 Indirizzo: 00000010 Operando: 10110111 Address Data Operation(R/W) 00000000 00000001 00000010 00000011 00000100 00000101 00000110 11111111
Macchina di Von Neumann Dispositivi di ingresso e uscita (input/output) Componenti che permettono l interazione con il mondo esterno CU ALU MEM I/O I/O
Macchina di Von Neumann Esempio di funzionamento CU ALU MEM I/O Registro $t1 Registro $t2 Registro $t3 ALU TRANSCODIFICATORE SR MEM Registro n PC FASE CLOCK 1000: lb $t1,(100) 1004: li $t2,54 1008: add $t3,$t1,$t2 1012: sb $t3,(300)
Architettura degli Elaboratori Una architettura reale: MIPS Microprocessor without Interlocked Pipeline Stage Dott. Franco Liberati
MIPS Architettura Architettura di tipo RISC ha un set ridotto di istruzioni: pochi modi di indirizzamento) basata su canalizzazione (pipeline) realizzata da John L. Hennessy della Stanford University nel 1981 Segue l architettura di Von Neumann CU ALU MEM I/O STRUTTURA DI INTERCONESSIONE
MIPS CPU CLOCK DECODIFICATORE DI ISTRUZIONI FASE PC MEM Registri Rete combinatoria GENERATORE DI COMANDI HI LO SP SR HIContiene il risultato della divisione: parte alta (HI) LO: Contiene il risultato della divisione: parte bassa (LO) SP: Contiene l indirizzo che punta alla cima dello stack
MIPS CPU (senza unità di controllo): esempio
MIPS Unità di controllo: registri REGISTRI TEMPORANEI NON PRESERVANTI: si azzerano dopo un salto a sub-routine $t0 $t1 $t2 $t3 $t4 $t5 $t6 $t7 $t8 $t9 REGISTRI TEMPORANEI PRESERVANTI: mantengono sempre i valori $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7 $s8 $s9 REGISTRI TEMPORANEI PER LE SUB ROUTINE $v0 $v1 Risultati della sub-routine $a0 $a1 $a2 $a3 REGISTRI PER I NUMERI REALI (NUMERI IN VIRGOLA MOBILE, floatingpoint) $fp0 $fp31 Parametri di ingresso della sub-routine
MIPS Unità Logica Aritmetica Funzione Operando 1 Operando 2 ALU Risultato Funzione SR COPROCESSORE MATEMATICO (calcoli con numeri in virgola mobile, logaritmi, radice quadrata, ) Risultato
MIPS Memoria 0 4194304 AREA PROCESSI 0x00000000 0x00400000 Locazione in cui è posizionato il programma SP 2147479548 STACK 0x7FFFEFFC KERNEL 4294967295 0xFFFFFFFF
.text lb $t2,primo lb $t3,secondo add $t1,$t2,$t3 sb $t1,risultato lui$1,0x00001001 lb $10,0x00000000($1) lui$1,0x00001001 lb $11,0x00000001($1) add $9,$10,$11 lui$1,0x00001001 sb $9,0x00000002($1) MIPS Memoria 0 4194304 AREA PROCESSI 0x00000000 0x00400000 0x400000: 0x3C011001 0x400004: 0x802A000 0x400008: 0x3C011001 0x40000C: 0x802B0001 0x400010: 0x014B4820 0x400014: 0xC011001 0x400018: 0xA0290002 lui$1,0x00001001 lb $10,0x00000000($1) lui$1,0x00001001 lb $11,0x00000001($1) add $9,$10,$11 lui$1,0x00001001 sb $9,0x00000002($1) 2147479548 STACK 0x7FFFEFFC KERNEL 4294967295 0xFFFFFFFF
MIPS Dispositivi di ingresso e uscita (input/output) Componenti che permettono l interazione con il mondo esterno I/O ESEMPIO1.ASM Finestra di input per l immissione dei dati da tastiera li $v0,5 # servizio di lettura di un intero da tastiera syscall #chiamata di sistema move$t0,$v0 #spostamentodel valore letto da tastiera #residente in $v0 dopo la syscall Finestra di output (mostrata dal simulatore) per la visualizzazione dei risultati move $a0,$t0 #spostamento del valore intero da stampare #da$t0 a $a0 li $v0,1 #servizio di stampa di un intero syscall #chiamata di sistema
MIPS Dispositivi di ingresso e uscita (input/output) Esempio interaizone con tastiera e consolle di output video ESEMPIO1.ASM.text.globl main main: li $v0,5 # servizio di lettura di un intero da tastiera syscall #chiamata di sistema move $t0,$v0 #spostamento del valore letto da tastiera residente in $v0 dopo la syscall add $t0,$t0,1 #calcolo del valore successivo move $a0,$t0 #spostamento del valore intero da stampare da $t0 a $a0 li $v0,1 #servizio di stampa di un intero syscall #chiamatadi sistemali $v0,10 syscall
Fine