dispensa n.2
Transcript
dispensa n.2
Andrea Prevete, 2009 Il modello Von Neumann MEMORY MAR MDR INPUT OUTPUT Keyboard Mouse Scanner Disk Monitor Printer LED Disk PROCESSING UNIT ALU TEMP CONTROL UNIT PC IR 1 Andrea Prevete, 2009 Memoria Un array di 2k x m bit INDIRIZZI • unici (k-bit) per identificare la posizione dei contenuti CONTENUTI • Parole di m-bit memorizzate ad un certo indirizzo OPERAZIONI DI BASE: LOAD • legge un dato memorizzato in una locazione di memoria STORE • memorizza un dato in una locazione di memoria 0000 0001 0010 0011 0100 0101 0110 00101101 • • • 1101 1110 1111 10100010 2 Andrea Prevete, 2009 INTERFACCE PER LA MEMORIA Come vengono gestiti i dati da e per la memoria? MAR: Memory Address Register MDR: Memory Data Register Per LOAD da una locazione (A): 1. Write l’indirizzo (A) nel MAR. 2. Send un segnale “read” alla memoria. 3. Read il dato dal MDR. MEMORY MAR MDR Per STORE a dato (X) in una locazione (A): 1. Write il dato (X) nel MDR. 2. Write l’indirizzo (A) nel MAR. 3. Send a signal “write” alla memoria. 3 Andrea Prevete, 2009 Unità di Processo Unità operative • ALU = Arithmetic and Logic Unit • Puo’ avere molte sottounità. Alcune special-purpose (multiply, square root, …). Registri • Memorizzazione temporanea di dati • Operandi e risultati delle unità operative PROCESSING UNIT ALU TEMP Dimensione della Parola (Word Size) • Il numero di bit normalmente processato dalla ALU nel corso di un’istruzione • Corrisponde all’ampiezza dei registri 4 Andrea Prevete, 2009 Input and Output Dispositivi per effettuare l’ingresso o l’uscita di dati dalla memoria Ogni dispositivo ha la sua propria interfaccia, usualmente un set di registri come MAR e MDR per la memoria INPUT OUTPUT Keyboard Mouse Scanner Disk Monitor Printer LED Disk Qualche dispositivo può essere considerato sia d’input che d’output • disk, network Un programma che gestisce l’accesso ad un dispositivo è usualmente detto un driver. 5 Andrea Prevete, 2009 Unità di Controllo CONTROL UNIT PC IR Dirige l’esecuzione di un programma, così come un Direttore l’Orchestra! L’ Instruction Register (IR) contiene l’istruzione corrente. Il Program Counter (PC) contiene l’indirizzo della prossima istruzione da eseguire. L’Unità di Controllo: • Legge un’istruzione dalla memoria all’indirizzo contenuto da • Interpreta l’istruzione generando la sequenza di segnali atta a pilotare gli altri componenti (un’ istruzione può richiedere vari cicli macchina per terminare!) 6 Andrea Prevete, 2009 Ciclo di Esecuzione di un’Istruzione Carica l’istruzione dalla memoria Decodifica l’istruzione Valuta gli indirizzi Carica gli operandi dalla memoria Esegui l’operazione Memorizza il risultato 7 Andrea Prevete, 2009 Le Istruzioni Un’ istruzione è l’atomo della struttura operativa di un computer. Essa è specificata da: • Un opcode: l’operazione che deve essere eseguita • Uno o più operandi : dati/indirizzi che devono essere utilizzati per eseguire l’operazione Un istruzione è codificata come una sequenza di bit. (Esattamente come per i dati!) • Spesso, ma non sempre, le istruzioni hanno una lunghezza prefissata, per esempio 16 o 32 bit. • L’Unità di Controllo interpreta, quindi genera sequenze di segnali di controllo per generare le varie operazioni. • Un’operazione è eseguita completamente o per niente. L’insieme delle istruzioni di un computer ed il loro formato costituiscono il cosiddetto Instruction Set Architecture (ISA). 8 Andrea Prevete, 2009 ESEMPIO In un ipotetico computer ad 8 registri (R0 – R7) le istruzioni a 16 bit potrebbero avere il seguente formato: “Addiziona il contenuto di R2 al contenuto of R6, e immagazzina il risultato in R6.” 9 Andrea Prevete, 2009 Exampio: LDR Vediamo un altro esempio: “Addiziona il valore 6 al contenuto di R3 per formare un indirizzo di memoria. Quindi carica il contenuto di quell’indirizzo di memoria in R2.” 10 Andrea Prevete, 2009 FETCH F Carica la prossima istruzione (all’indirizzo memorizzato nel PC) dalla memoria nel Registro Istruzioni (IR). • Copia il contenuto del PC in MAR. • Invia un segnale “read” alla memoria. • Copia il contenuto di MDR in IR. Quindi incrementa PC, così da farlo puntare all’istruzione che segue. • PC diventa PC+1. D EA OP EX S 11 Andrea Prevete, 2009 DECODE Identifica l’ opcode. • Nel nostro esempio i primi 4 bit dell’istruzione. • Un decoder 4-to-16 attiva la linea di controllo corrispondente all’opcode identificato. In base all’opcode identificato, restano fissati gli operandi. • Nel nostro esempio: per LDR, gli ultimi 6 bit definiscono l’offset per ADD, gli ultimi 3 bit definiscono il secondo operando F D EA OP EX S 12 Andrea Prevete, 2009 EVALUATE ADDRESS F Per le istruzioni che richiedono accesso in memoria, calcola l’indirizzo usato per l’accesso. Esempi: • Addizionare l’offset al registro base (as in LDR) • Addizione l’offset al PC D EA OP EX S 13 Andrea Prevete, 2009 FETCH OPERANDS F Vengono prelevati gli operandi sorgente necessari all’esecuzione dell’operazione. Esempi: • Carica i dati dalla memoria (LDR) • Leggi i dati dal registro file (ADD) D EA OP EX S 14 Andrea Prevete, 2009 EXECUTE Viene eseguita l’operazione, usando gli operandi sorgente. Esempi: • Vengono inviati gli operandi all’ ALU e attivato il segnale ADD • NOP (cioè, per istruzioni come load e store) F D EA OP EX S 15 Andrea Prevete, 2009 STORE RESULT I risultati vengono memorizzati a destinazione. (un registro o la memoria) F D Esempi: • Il risultato di un ADD è memorizzato nel registro di destinazione • Il risultato di un MEMORY LOAD è memorizzato nel registro destinazione • Per istruzioni di tipo STORE, il dato è immagazzinato im memoria L’indirizzo è scritto in MAR, i dati in MDR Quindi è attivato un segnale WRITE per la memoria EA OP EX S 16 Andrea Prevete, 2009 CAMBIARE LA SEQUENZA DELLE ISTRUZIONI Nella fase FETCH, il Program Counter viene incrementato di 1. Cosa fare nel caso in cui non si voglia far eseguire tutte le istruzioni in sequenza? Necessitiamo di istruzioni speciali che cambiano il contenuto del PC. Queste sono chiamate istruzioni di controllo. • I jumps sono incondizionati – cambiano comunque in modo predeterminato il PC • I branches sono condizionati – cambiano il PC solo se una certa condizione è verificata (ad esempio, il risultato di un ADD è 0) 17 Andrea Prevete, 2009 Esempio: Istruzione JMP Memorizza nel PC il valore contenuto in registro. Questo diventa l’indirizzo della prossima istruzione da prelevare (FETCH). “Load the contents of R3 into the PC.” 18 Andrea Prevete, 2009 RIASSUMENDO Tre tipi di istruzioni di base: • Istruzioni operative (ADD, AND, …) • Istruzioni per spostare dati (LD, ST, …) • Istruzioni di controllo (JMP, BRnz, …) Sei fasi essenziali per l’esecuzione di un’istruzione: F → D → EA → OP → EX → S • Non tutte le istruzioni hanno bisogno delle sei fasi! • Le fasi possono richiedere un numero variabile di cicli macchina 19 Andrea Prevete, 2009 Diagramma a stati dell’ Unità di Controllo L’Unità di Controllo è una macchina a stati. Di seguito ne riportiamo un diagramma semplificato: 20