Introduzione alla Microprogrammazione Corso Calcolatori Elettronici 2 Prof. Antonino Mazzeo Ing. Casola Valentina
Organizzazione a bus singolo dell architettura interna della CPU del 68000
Porte di ingresso ed uscita per i registri Ogni registro connesso al bus in modo bidirezionale deve avere due porte tristate pilotate da segnali di controllo indipendenti
Esempio di esecuzione di una istruzione completa L istruzione del 68000: Add (R3), R1 (modalità di indirizzamento indiretto) Richiede le seguenti azioni: 1. Prelevare l istruzione, 2. Prelevare il primo operando (il contenuto della locazione puntata da R3), 3. Eseguire l addizione, 4. Caricare il risultato nel registro R1.
Sequenza di controllo necessaria 1. Pcout, MARin, Read, ClearY, SetCarry-in to ALU, Add, Zin 2. Zout, Pcin, WMFC 3. MDRout, IRin 4. R3out, MARin, Read 5. R1out, Yin, WMFC 6. MDRout, Add, Zin 7. Zout, R1in, End. Fetch e incremento PC Il passo 3 comincia appena il dato è disponibile wait for MFC Tra 3 e 4 il circuito di decodifica delle istruzioni interpreta il contenuto di IR
Decodificatore delle istruzioni La CPU deve generare nella giusta sequenza i segnali di controllo per la esecuzione delle istruzioni Ci sono due tecniche prevalenti per progettare il decod. di istruzioni: Tecnica di controllo cablato, tecnica di controllo microprogrammato;
Tecnica di controllo microprogrammato CW Il decodificatore di istruzioni genera delle Control Word (CW) in cui ogni bit rappresenta uno specifico segnale di controllo della CPU (Pcin, Zout,..)
Controllo microprogrammato (1) Una sequenza di CW che corrisponde alla sequenza di controllo di una istruzione macchina, costituisce la microprocedura per quella istruzione, mentre le singole parole della microprocedura sono dette microistruzioni; Le microprocedure corrispondenti alle istruzioni ISA sono memorizzate nella memoria di controllo
Controllo microprogrammato (2) Per leggere le CW dalla memoria di controllo viene usato un micropc (contatore di microprogramma) tempificato dal clock, Per gestire condizioni di salto, il generatore di indirizzi di partenza e il microprogramma deve prevedere diverse possibilità in caso si verifichino condizioni di salto.
Microistruzioni (1) Come organizzare una CW? 1. Posso usare un bit per ogni segnale: 1. La decodifica è molto semplice; 2. microistr. molto lunghe con pochi 1 attivi contemporaneamente; 2. Raggruppo i segnali mutuamente esclusivi (solo un registro alla volta può scrivere sul singolo bus): 1. Utilizzo uno schema di codifica binaria in modo da usare semplici decodificatori dei segnali: per le 16 istruzioni della ALU bastano 4 bit, per gli n segnali di uscita dei registri dato uso log(n) bit, per gli n segnali di ingresso dei registri dato uso log(n) bit,.
Microistruzioni (2) Il raggruppamento dei segnali richiede esplicitamente la presenza di hw aggiuntivo per i decodificatori che è però compensato dall avere una memoria di controllo più piccola; Ovviamente è possibile raggruppare anche tutti i segnali insieme e non solo quelli mutuamente esclusivi in modo da avere CW di lunghezza minima; in questo caso però i circuiti di decodifica sono, ovviamente, più complessi.
Microprogrammazione orizzontale e verticale Architetture che utilizzano un alto grado di codifica delle microistruzioni si chiamano ad organizzazione verticale ; viceversa, architetture che utilizzano uno schema di codifica minimo, sono dette ad organizzazione orizzontale.
Organizzazione di un microprogramma (1) Il microprogramma deve coprire tutto l ISA; le memorie di controllo sono di dimensioni notevoli, considerando tutte le possibili modalità di indirizzamento, in realtà, molte micro-procedure hanno molte microistruzioni in comune; Occorre organizzare la memoria in modo da individuare e scrivere una unica volte tutte le microistruzioni comuni a diverse operazioni.
Organizzazione di un microprogramma (2) Due tecniche diffuse: Condividere le parti comuni di istruzioni diverse scegliendo opportunamente gli indirizzi delle microistruzioni in modo che la distanza tra due microistruzioni che hanno parti in comune sia di un solo bit (qualsiasi bit del microindirizzo) che possa facilmente essere valutato con una operazione di bit OR-ing. Includere in ogni microistruzione un campo indirizzo che indica la locazione della microistruzione successiva (aumento la lunghezza della CW ma il sistema è più performante);
Esempio di bit OR-ing Supponiamo che una microistruzione di una ISTR. con tecnica di indirizzamento immediato sia memorizzata alla locazione 170, conviene memorizzare la microistruzione della stessa ISTR. ma con indirizzamento indiretto alla locazione 171 in questo modo: il microprogramma procede naturalmente fino a 169 come se volesse eseguire la 170, se poi si verifica una condizione che specifica la modalità di indirizzamento indiretto, allora si utilizza una porta OR per cambiare il bit meno significativo dell indirizzo ad 1.
Riferimenti bibliografici Hamacher CAP 3 A.S. Tanenbaum.. CAP 4: The microarchitecture level