2.6 Parte di controllo (control path) ha il compito di generare i segnali di comando sincronizzando le varie unità che compongono la parte operativa (data path) è un enorme automa sequenziale che ha come ingressi l’istruzione in corso e lo stato attuale della CPU, e come uscite i comandi alla parte operativa e lo stato successivo Central Process Unit Architettura degli elaboratori 1 - A. Memo 64 2.6 Parte di controllo i comandi del datapath IPOUT 0 = A IP 1 = load 1=B mux B demux 1=B A IPIN 0 = A IP inc/ dec I/D 0 = dec 1 = inc A B Temp T1 1 = load piccola sezione di datapath con evidenziati i comandi di sincronizzazione Central Process Unit Architettura degli elaboratori 1 - A. Memo 65 2.6 Parte di controllo diagramma degli stati ... Fetch 1 Read memory Fetch 2 Central Process Unit IPOUT=0 ... IPOUT=1 ID=1 T1=1^ IPIN=1 IP=1^ ... emettere IP nell’Address Bus: • demux IPOUT emette dati in uscita A in attesa del dato dalla memoria: • demux IPOUT emette dati in uscita B • impostare inc/dec a incremento • memorizzare il risultato in T1 aggiorna IP: • mux IPIN legge dati da ingresso B •memorizza il dato in registro IP Architettura degli elaboratori 1 - A. Memo 66 2.6 Parte di controllo logica di controllo ai dispositivi del datapath istruzione da eseguire hardwired stato della CPU implementazione tradizionale partendo dall’automa a stati finiti Central Process Unit Architettura degli elaboratori 1 - A. Memo 67 2.6 Parte di controllo microprogrammazione 1 La tendenza è quella di avere istruzioni sempre più complesse, il che comporta: semplificare la programmazione diminuire il numero di istruzioni per programma ridurre lo spazio in memoria complicare enormemente la logica di controllo La soluzione è adottare la microprogrammazione Central Process Unit Architettura degli elaboratori 1 - A. Memo 68 2.6 Parte di controllo microprogrammazione 2 Individuare per ogni istruzione (macro instruction) i comandi (micro code) da emettere, raggrupparli in blocchi eseguibili in parallelo (micro instruction), e implementarli in una struttura interna alla CPU simile ad un piccolo elaboratore, con la sua memoria programmi (microprogrammed ROM) Central Process Unit Architettura degli elaboratori 1 - A. Memo 69 2.6 Parte di controllo microprogrammazione 3 ADD AL,BL MOV AX,0 linguaggio Assembler linguaggio macchina 00 B8 35 00 00 microprogrammazione IPOUT=0 ID=1 , T1=1^ IPIN=1, IP=1^ ogni macro instruction punta ad una sequenza di micro instruction Central Process Unit Architettura degli elaboratori 1 - A. Memo 70 2.6 Parte di controllo microprogrammazione 4 La microprogrammazione ... è facile da progettare ed implementare è flessibile negli sviluppi futuri rende poco influente l’architettura interna permette ottimizzazioni distinte è più lenta dell’implementazione hardwired Central Process Unit Architettura degli elaboratori 1 - A. Memo 71 2.7 Set di istruzioni Il set di istruzioni di una CPU specifica quali sono le istruzioni previste quali operandi sono ammessi il formato con cui vengono codificate la loro durata in cicli di clock Central Process Unit Architettura degli elaboratori 1 - A. Memo 72 2.7 Set di istruzioni classificazioni in base alla localizzazione interna degli operandi – – – – – stack accumulatore registro (reg/mem) registro (reg/reg) ad accesso diretto (mem/mem) in base alle tecniche di indirizzamento in base alla complessità delle istruzioni Central Process Unit Architettura degli elaboratori 1 - A. Memo 73 2.7 Set di istruzioni a stack stack gli operandi sono posti nella PUSH X parte alta dello stack PUSH Y istruzioni molto corte ADD POP Z codice poco efficiente valutatori delle espressioni semplificati (notazione polacca inversa) lo stack diventa un collo di bottiglia Central Process Unit Architettura degli elaboratori 1 - A. Memo 74 2.7 Set di istruzioni ad accumulatore l’ALU utilizza l’accumulatore accumulatore LOAD X come registro predefinito ADD Y STORE Z istruzioni corte semplifica il control path ed il data path frequenti spostamenti da/per altri registri poco efficente Central Process Unit Architettura degli elaboratori 1 - A. Memo 75 2.7 Set di istruzioni a registro (reg/mem) in presenza di due operandi, registro (r/m) LOAD R1,X almeno uno è un registro ADD R1,Y STORE Z, R1 istruzioni lunghe buona efficienza di programmazione riduzione degli accessi alla memoria scarso bilanciamento delle istruzioni Central Process Unit Architettura degli elaboratori 1 - A. Memo 76 2.7 Set di istruzioni a registro (reg/reg) gli operandi delle operazioni sono solo registri e quindi gli accessi alla memoria devono avvenire precedentemente tramite un registro (qualsiasi) registro (reg/reg) LOAD R1,X codifica a lunghezza fissa LOAD R2,Y istruzioni a durata bilanciata Central Process Unit ADD R3,R1,R2 STORE Z, R3 Architettura degli elaboratori 1 - A. Memo 77 2.7 Set di istruzioni ad accessi diretti (mem/mem) uso delle locazioni di memoria/memoria memoria come operandi ADD Z,X,Y massima semplicità di programmazione lunghezza delle istruzioni molto variabile alto sbilanciamento delle istruzioni l’accesso alla memoria diventa un collo di bottiglia Central Process Unit Architettura degli elaboratori 1 - A. Memo 78 2.7 Set di istruzioni evoluzione commerciale Accumulatore singolo (EDVAC) [1950] Accumulatore + registri indice (Mark 1, IBM 700) [1953] registri General Purpose CISC (VAX, Intel) Load/Store (CDC 6600, Cray 1) RISC (Mips, Spark, IBM) Central Process Unit Architettura degli elaboratori 1 - A. Memo 79 2.7 Set di istruzioni accesso alla memoria 1 la memoria viene vista (quasi) sempre dal programmatore in L.M. come un vettore lineare di elementi ad 8 bit ad ogni accesso alla memoria, alla CPU arriva un multiplo di byte (dimensione DB) – memoria allineata – memoria non allineata Central Process Unit Architettura degli elaboratori 1 - A. Memo 80 2.7 Set di istruzioni accesso alla memoria 2 Address Bus 1000 39 3A memoria 38 0FFF 39 1000 3A 1001 3B 1002 1000 1001 Data Bus Central Process Unit Architettura degli elaboratori 1 - A. Memo 81 2.7 Set di istruzioni accesso alla memoria 3 39 Address Bus 1001 3A 3B 1000 1001 3C 1002 1003 Data Bus Data Bus memoria allineata 3A 3B 1001 1002 memoria non allineata Data Bus Central Process Unit Architettura degli elaboratori 1 - A. Memo 82 2.7 Set di istruzioni accesso alla memoria 4 memoria non allineata (Intel x86) – accessi ottimizzati – hardware più complesso memoria allineata (Motorola 68000) – lettura più lenta dei dati disallineati – con l’uso di compilatori adeguati i dati possono essere memorizzati opportunamente Central Process Unit Architettura degli elaboratori 1 - A. Memo 83 2.7 Set di istruzioni tecniche di indirizzamento 1 modalità esempio registro MOV AL,BL immediato MOV AL,10 significato AL AL+1 AL 10 diretto AL Mem[0123] MOV AL,[0123] indicizzato MOV AL,[SI] con base AL Mem[SI] MOV AL,[BX+30] AL Mem[BX+30] index+base MOV AL,[SI+BX] AL Mem[SI+BX] Central Process Unit Architettura degli elaboratori 1 - A. Memo 84 2.7 Set di istruzioni tecniche di indirizzamento 2 modalità indiretto fatt. scala esempio significato MOV AL,@RX AL Mem[Mem[RX]] MOV AL,[BX +SI*d] AL Mem[BX+SI*d] auto inc. MOV RX,[RY]+ auto dec. MOV RX,-[RY] AL Mem[RY] RY = RY + d RY = RY - d AL Mem[RY] Central Process Unit Architettura degli elaboratori 1 - A. Memo 85 2.7 Set di istruzioni indirizzamenti Indirizzamenti (Hennessy-Patterson) Tipo di programma media altri C Indiretto Scala Registro Immediato CAD Base W.P. 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% Frequenza delle m odalità di indirizzam ento Central Process Unit Architettura degli elaboratori 1 - A. Memo 86 2.7 Set di istruzioni tecniche di indirizzamento 4 più indirizzamenti ci sono e più semplice è la programmazione diretta più indirizzamenti ci sono e più complicati e difficilmente ottimizzati sono i compilatori più indirizzamenti ci sono e più complessa risulta la parte di controllo statisticamente sono pochi gli indirizzamenti utilizzati Central Process Unit Architettura degli elaboratori 1 - A. Memo 87 2.7 Set di istruzioni tipi di operazioni Le istruzioni si possono dividere in trasferimento dati (*) aritmetiche e logiche (*) salto, ripetizione e controllo (*) gestione stack per dati specifici (FP, stringa) I/O Central Process Unit Architettura degli elaboratori 1 - A. Memo 88 2.7 Set di istruzioni trasferimento dati da registro a registro MOV AL,BL da memoria a registro MOV AL,[0123] da registro a memoria MOV [0123],AL distinto tra lettura e scrittura LOAD R1,0123 STORE 0123,R1 Central Process Unit Architettura degli elaboratori 1 - A. Memo 89 2.7 Set di istruzioni aritmetiche e logiche somma/sottrazione confronto moltiplic./divis. logiche spostamento bit sui bit di flag Central Process Unit ADD AL,BL SUB CX,AX CMP AL,33 TEST AH,CH MUL BL DIV AX OR NEG AL AL,AH ROL AH,2 SHR AL,1 CLC STI Architettura degli elaboratori 1 - A. Memo 90 2.7 Set di istruzioni salto, ripetizione e controllo salto incondizionato JMP 0456 salto condizionato JZ 0100 JNA 1234 ciclo di ripetizione salto a/da procedure interruzione sistema Central Process Unit JNC 2211 JG 0101 LOOP 0345 CALL 0123 RET INT 21 IRET HLT NOP Architettura degli elaboratori 1 - A. Memo 91 2.7 Set di istruzioni gestione stack 1 lo stack è una coda LIFO che permette di salvare e recuperare dati senza curarsi del loro indirizzo è una tecnica a lettura distruttiva viene usato per – salvataggio contesto durante le interruzioni o le chiamate a procedure – passaggio parametri Central Process Unit Architettura degli elaboratori 1 - A. Memo 92 2.7 Set di istruzioni gestione stack 2 PUSH AX • DEC SP • MOV [SP],AXhigh • DEC SP • MOV [SP], AXlow Central Process Unit MOV AX,1234 PUSH AX prima dopo FFEB 00 FFEB 00 FFEC 00 FFEC 34 FFED 00 FFED 12 FFEE XX SP Architettura degli elaboratori 1 - A. Memo SP FFEE XX 93 2.7 Set di istruzioni gestione stack 3 POP AX • MOV AXlow,[SP] • INC SP • MOV AXhigh,[SP] • INC SP Central Process Unit POP AX prima dopo FFEB 00 FFEB 00 FFEC 34 SP FFEC 34 FFED 12 FFED 12 FFEE XX FFEE XX Architettura degli elaboratori 1 - A. Memo SP 94 2.7 Set di istruzioni per dati specifici LODSB per stringa CMPSW (implicito AL, sorgente DS:SI, destinazione ES:DI) ripetizione di stringa Floating Point BCD Packed Central Process Unit REPZ CMPSW FADD ST, ST[2] DAA Architettura degli elaboratori 1 - A. Memo 95 2.7 Set di istruzioni I/O ingresso dati emissione dati Central Process Unit IN AL,DX OUT DX,AL Architettura degli elaboratori 1 - A. Memo 96 2.7 Set di istruzioni formato delle istruzioni 1 è il codice con cui vengono rappresentate le varie istruzioni dipende dal set di istruzioni e dall’architettura interna adottata può essere a lunghezza fissa o variabile (Intel da 1 a 12 byte) compatibilità verso il basso Central Process Unit Architettura degli elaboratori 1 - A. Memo 97 2.7 Set di istruzioni formato delle istruzioni 2 TTTTTTTT codice operativo (1 byte) TTTTTTTT codice operativo (eventuale secondo byte) mod TTT r/m modalità di indirizzamento (ed altri b.c.o.) ss_index fattore di scala, reg. indice e reg. base (1) displacemen spiazzamento, 0, 1, 2 o 4 byte immediate Central Process Unit dato immediato, 0, 1, 2 o 4 byte Architettura degli elaboratori 1 - A. Memo 98 2.7 Set di istruzioni formato delle istruzioni 3 Ad esempio ADD AL, BL codifica: 00 D8 formato reg1 to reg2 = 00TTT00w 11 reg1 reg2 oper. ADD ADC AND OR SUB SBB XOR TTT 000 010 100 001 101 011 110 Central Process Unit reg AL CL DL BL AH CH DH BH cod 000 001 010 011 100 101 110 111 dimensione operandi 8 bit w=0 16/32 bit w=1 TTT = 000 (ADD) w = 0 (8 bit) reg1 = 011 (BL) reg2 = 000 (AL) codifica = 00000000 11011000 Architettura degli elaboratori 1 - A. Memo 99