Il livello Microarchitetturale Lezione 4_0 Microarchitettura e Datapath
Agenda Significato del livello Caratteristiche del Data Path Microistruzioni Ciclo completo di Data Path
Il livello Microarchitettura Esiste un programma ISA, composto da istruzioni ISA La microarchitettura compie il ciclo: Fetch: legge l’istruzione ISA Decode: interpreta in una(nelle) istruzioni microarchitettura Execute: esegue la (le) istruzioni di microarchitettura
Data Path ALU, Shifter e diversi registri 6 linee di controllo ALU Altre 18 linee per altri componenti
Un ciclo di data path (execute) Sincronizzazione del data path segnali di controllo si stabilizzano registri vengono scritti sul bus B ALU e shifter calcolano segnali risultato su bus C memorizzazione sui registri
Ciclo di DP: e la memoria ? MAR e PC vengono caricati comunque sul fronte di salita, quindi alla fine del ciclo Se va bene (PC) il nuovo MBR è disponibile al ciclo successivo (ovvero al prossimo edge in salita)
Interazioni con la memoria (R/W) MAR, memory address register, indica un indirizzo di memoria dove si trova il contenuto di: MDR, memory data register lettura e scrittura dati ISA (parole)
Interazioni con la memoria (Fetch) PC, program counter, indica un indirizzo di memoria (cache) dove si trova il contenuto di: MBR, memory branch register lettura istruzione ISA (byte)
Decode ? Ma MBR materializza l’istruzione ISA ! Come la interpreto in una istruzione di microprogramma ? E cos’è, ovvero, a cosa serve una (micro)istruzione ?
Microistruzioni 9 segnali per il bus C 4 segnali per il bus B 8 segnali per ALU e Shifter 2 per R/W per memoria 1 per R su PC/MBR
Microistruzioni 24 segnali pilotano il ciclo di data path …….. e la prossima istruzione ?? NEXT-ADDRESS e JAM N-A, indirizzo della microistruzione successiva J, come selezionare la microistruzione successiva Totale 36 segnali (bit)
Control Store Figura 4.6 E’ la memoria (ROM) che contiene le microistruzioni suo registro dati è MIR, che contiene la microistruzione indicata da MPC suo registro indirizzi è MPC viene valorizzato o con N-A o con MBR a seconda del valore che ha un bit di JAM
Istruzione successiva Se JAMC = 1, allora prendo il contenuto di MBR (branch) Se JAMC e/o JAMN = 1 allora viene messo a 1 msb di N-A Se JAMs = 0 allora N-A come si presenta
Ciclo completo data path 1, discesa, carica in MIR ciò che c’è in MPC (decode) 2, carico in B registro selezionato (execute) 3, elaborazione ALU e shifter (execute) 4, propagazione su bus C (execute) 5, salita, carica i dati nei registri, in MBR e MDR, Flip-Flop N e Z (execute R/W e/o Fetch) 6, quando MBR disponibile, carica MPC, il clock è alto (fetch)
…..ciclo completo: oppure 1, discesa, carica in MIR ciò che c’è in MPC (decode) 2, carico in B registro selezionato (execute) 3, elaborazione ALU e shifter (execute) 4, propagazione su bus C (execute) 5, salita, carica i dati nei registri, in MBR e MDR, Flip-Flop N e Z (execute R/W e/o fetch) 6, copia N-A su MPC (fetch)