Architettura IA - 32 Politecnico di Torino Dip. di Automatica e Informatica 1 Prof. Marco Mezzalama – a.a. 06/07 IA – 32 (IA – 16) IL PROCESSORE PENTIUM 2 Prof. Marco Mezzalama – a.a. 06/07 3 Prof. Marco Mezzalama – a.a. 06/07 Caratteristiche Generali del Pentium III • • • • • • • • 4 Versione Tualatin, 1999, con tecnologia di 0.13 micron. Il chip è composto da circa 44 milioni transistor ed ha 370 pin. Integra L1 cache e L2 cache (256KB) A seconda dei modelli può lavorare ad una frequenza max di 1.5 GHz, con clock di sistema max a 133 MHz Richiede un'unica tensione di alimentazione (1.65V). Spazio di indirizzamento pari a 232=4Gbyte o 236=64Gbyte . Opera in modo protetto, VM86 e real mode (accensione). È orientato alla multiprogrammazione ed al multiprocessing. Prof. Marco Mezzalama – a.a. 06/07 Caratteristiche Generali del Pentium IV The original Pentium 4, codenamed "Willamette", ran at 1.4 and 1.5 GHz and was released in November 2000 on the Socket 423 platform, and later Socket 478 from 1.5GHz to 2GHz. Notable with the introduction of the Pentium 4 was the comparatively fast 400 MT/s FSB. the Pentium 4 also came in a low-end Celeron version (often referred to as Celeron 4) and a high-end Xeon version intended for SMP configurations. A dual core version was called the Pentium D. 5 Prof. Marco Mezzalama – a.a. 06/07 Caratteristiche Generali del Pentium IV • Versione Prescott 2M, 2005, con tecnologia di 90 nm. • Il chip è composto da circa 70 milioni transistor • Integra L1 cache e L2 cache (2 MB) • A seconda dei modelli può lavorare ad una frequenza max di 4 GHz, • incorporated Hyper-Threading • EM64 architecture 6 Prof. Marco Mezzalama – a.a. 06/07 Caratteristiche Generali del Core 2 • Versione del giugno 2006, con tecnologia di 65 nm. • 2*cpu pentium • not stress designs based on extremely high clock speeds ( 3 GHz) but rather improvements on other CPU features, including cache efficiency and number of cores. • incorporated Hyper-Threading • EM64 architecture 7 Prof. Marco Mezzalama – a.a. 06/07 IA – 32 (IA – 16) IL PROCESSORE PENTIUM Il Pentium è un processore con architettura nativa a 32 bit (registri dati e indirizzi) esteso nelle ultime versioni a 64 bit di indirizzamento. Per compatibilità con i precedenti processori intel permette di realizzare anche una architettura a 16 bit. Opera in due modi fondamentali: 8 1. Modo reale, che realizza di fatto l’emulazione hw dello 8086; tale modo è attivo al reset ed è pertanto il modo nativo del BIOS nei PC 2. Modo protetto, che realizza l’architettura a 32 bit e che è il modo base di Windows MSW e di Linux Prof. Marco Mezzalama – a.a. 06/07 I REGISTRI IA - 32 9 Prof. Marco Mezzalama – a.a. 06/07 I REGISTRI IN MODO REALE 10 Prof. Marco Mezzalama – a.a. 06/07 Registri Possono essere suddivisi in 4 gruppi: • registri di dato • registri puntatore/di indirizzo • registri di segmento • Registri di controllo. 11 Prof. Marco Mezzalama – a.a. 06/07 I registri dati ah al ax eax 12 Prof. Marco Mezzalama – a.a. 06/07 I registri di controllo e di indirizzo ip eip Indirizzamento: 232 = 4 GB; 216 = 64KB 13 Prof. Marco Mezzalama – a.a. 06/07 Modello Architetturale in modo reale (8086) Data Register AH AL BH BL CH CL DH DL Instruction Queue Address 20 pin Control Logic Data 16 pin Pointers ARITMETIC LOGIC UNIT PSW 14 SP BP SI DI IP Segment Register CS SS DS ES Prof. Marco Mezzalama – a.a. 06/07 Clock Registri di Dato Sono AX (Accumulator Register), BX (Base Register), CX (Count Register) e DX (Data Register). Sono utilizzati per memorizzare operandi e risultato delle operazioni. Possono essere utilizzati come registri da 16 bit oppure come coppie di registri da 8 bit. BX può anche essere utilizzato nel calcolo di indirizzi. CX viene anche utilizzato come contatore da talune istruzioni. DX contiene l'indirizzo di I/O in alcune istruzioni di I/O. 15 Prof. Marco Mezzalama – a.a. 06/07 Registri Puntatore Sono IP, SP, BP, SI e DI. IP (Instruction Pointer) contiene il puntatore alla prima istruzione da eseguire. IP non può comparire esplicitamente come operando di una istruzione. SP (stack pointer) contiene il puntatore alla testa dello stack. BP (Base Pointer) viene utilizzato come base per fare accesso all'interno dello stack. SI (Source Index) e DI (Destination Index) vengono utilizzati come registri indice. 16 Prof. Marco Mezzalama – a.a. 06/07 Registri di Segmento Sono CS, DS, ES e SS. Vengono utilizzati per costruire gli indirizzi fisici con i quali fare accesso in memoria. Contengono i puntatori all'inizio dei segmenti di codice, di dato, di dato supplementare e di stack, rispettivamente. 17 Prof. Marco Mezzalama – a.a. 06/07 Segmentazione della Memoria DS } Segmento Dati CS IP } Segmento Codice SS SP, BP } Segmento Stack BX, SI, DI 18 Prof. Marco Mezzalama – a.a. 06/07 Calcolo degli indirizzi Ogni volta che l'8086 deve generare un indirizzo da mettere sull'A-bus (physical address), esso esegue una operazione di somma tra il contenuto di un registro puntatore oppure di BX (effective address o offset) ed il contenuto di un registro di segmento (segment address). La somma avviene dopo aver moltiplicato per 16 (shift di 4 posizioni) il contenuto del registro di segmento: 16 bit + 16 bit 0000 = 20 bit 19 Prof. Marco Mezzalama – a.a. 06/07 Effective Address Segment Address * 16 Physical Address Segmenti La memoria può essere considerata come organizzata in segmenti, ognuno di dimensione pari a 64 Kbyte. Tutti i segmenti cominciano ad indirizzi multipli di 16. 00000 Segmento 1 00010 Segmento 2 00020 Segmento 3 Segmento 4 00030 20 Prof. Marco Mezzalama – a.a. 06/07 Uso dei Segment Register Una volta caricato l'indirizzo di testa del segmento in un segment register, tutti gli indirizzi all'interno del segmento sono esprimibili attraverso un registro contenente l'offset. 21 Segmento Dati 123A0 DS 123A0 157BB SI 341B Prof. Marco Mezzalama – a.a. 06/07 Paragrafi I gruppi di 16 byte che iniziano ad indirizzi multipli di 16 si definiscono paragrafi. La memoria è quindi organizzata in paragrafi. 22 Paragrafo 0 00000h Paragrafo 1 00010h Paragrafo 2 00020h Paragrafo 3 00030h Paragrafo 4 00040h Prof. Marco Mezzalama – a.a. 06/07 Vantaggi della Segmentazione • Spazio di indirizzamento pari a 220, ma indirizzi su 16 bit • Separazione tra dati, codice e stack • Possibilità di avere più segmenti dello stesso tipo (dati, codice o stack) • Possibilità di sovrapposizione tra segmenti, con minimizzazione della memoria sprecata • Rilocabilità. 23 Prof. Marco Mezzalama – a.a. 06/07 Process Status Word (PSW) È composta da 16 bit, ma solo 9 di questi sono usati. Ogni bit corrisponde ad un flag. I flag si dividono in: • flag di condizione • flag di controllo. OF DF IF TF SF ZF 24 Prof. Marco Mezzalama – a.a. 06/07 AF PF CF Flag di Condizione Vengono automaticamente scritti al termine di varie operazioni: • SF (Sign Flag): coincide con il MSB del risultato dopo una operazione aritmetica • ZF (Zero Flag): vale 1 se il risultato è nullo, 0 altrimenti • PF (Parity Flag): vale 1 se il numero di 1 negli 8 bit meno significativi del risultato è pari, 0 altrimenti • CF (Carry Flag): dopo le operazioni aritmetiche vale 1 se c'è stato riporto (somma) o prestito (sottrazione); altre istruzioni ne fanno un uso particolare • AF (Auxiliary Carry Flag): usato nell'aritmetica BCD; vale 1 se c'è stato riporto (somma) o prestito (sottrazione) dal bit 3 • OF (Overflow Flag): vale 1 se l'ultima istruzione ha prodotto un overflow. 25 Prof. Marco Mezzalama – a.a. 06/07 Flag di Controllo Possono venire scritti e manipolati da apposite istruzioni, e servono a regolare il funzionamento di talune funzioni del processore: • DF (Direction Flag): utilizzato dalle istruzioni per la manipolazione delle stringhe; se vale 0 le stringhe vengono manipolate partendo dai caratteri all'indirizzo minore, se vale 1 a partire dall'indirizzo maggiore • IF (Interrupt Flag): se vale 1, i segnali di Interrupt mascherabili vengono percepiti dalla CPU, altrimenti questi vengono ignorati • TF (Trap Flag): se vale 1, viene eseguita una trap al termine di ogni istruzione. 26 Prof. Marco Mezzalama – a.a. 06/07 Accesso alla Memoria Il modello IA - 16 ha uno spazio di indirizzamento pari a 1 Mbyte. Il processore è in grado di accedere in un solo passo ad un byte oppure ad una word di memoria, purché questa inizi ad un indirizzo pari. L'accesso a word allineate su indirizzi dispari richiede due cicli di memoria. 27 Prof. Marco Mezzalama – a.a. 06/07 Rappresentazione delle word Si presuppone che i dati memorizzati in una word abbiano il byte meno significativo memorizzato nel byte con indirizzo minore (little endian). Nell'esempio si vede come sia memorizzato il numero FF00. 00000 00 FF FFFFF 28 Prof. Marco Mezzalama – a.a. 06/07 Parti Riservate della Memoria Alcune parti della memoria non sono libere, ma dedicate, oppure riservate. Ad esempio la memoria dall'indirizzo 00000H allo 003FFH è riservata, in quanto contiene la Interrupt Vector Table. Interrupt Vector Table 00000 003FF Liberi Gli indirizzi da FFFF0H a FFFFBH sono utilizzati per contenere un’istruzione di salto alla routine di FFFF0 Reset Bootstrap caricamento di programma di FFFFC bootstrap. Riservati Le locazioni da FFFFCH a FFFFFH 29 sono invece riservate perMezzalama usi futuri. Prof. Marco – a.a. 06/07 Architettura Interna Bus Control Logic C-BUS Address Bus 20 bit Data Bus 16 bit INTRUCTION QUEUE BBUS ES CS SS DS IP BUS INTERFACE UNIT EXECUTION UNIT CONTROL SYSTEM ALU Data Bus 118 bit Registri Temporanei EXECUTION UNIT AH BH CH DH AL BL CL DL SP BP SI DI 30 ARITMETIC LOGIC UNIT FLAGS Prof. Marco Mezzalama – a.a. 06/07 Execution Unit (EU) Provvede alla decodifica ed alla esecuzione delle istruzioni. Riceve byte per byte le istruzioni dalla BIU, le decodifica, genera gli indirizzi degli operandi (se necessario), li passa alla BIU; una volta ricevuti tutti gli operandi esegue l'istruzione, testa ed aggiorna i flag. 31 Prof. Marco Mezzalama – a.a. 06/07 Bus Interface Unit (BIU) Gestisce tutte le operazioni da e per l'esterno: • Fetch delle istruzioni • Lettura e scrittura operandi e risultati di istruzioni • Generazione degli indirizzi • Accodamento delle istruzioni • La BIU lavora in parallelo con la EU. 32 Prof. Marco Mezzalama – a.a. 06/07 Coda delle Istruzioni La BIU gestisce una struttura FIFO di dimensioni pari a 6 byte in cui vengono accumulate le istruzioni che si prevede dovranno essere eseguite. La Coda delle Istruzioni viene caricata dalla BIU ogni qual volta vi è una word libera, ed il bus è libero; in tal caso viene letta dalla memoria la word successiva nel Code Segment. Se viene eseguita una istruzione di salto, la Coda delle Istruzioni viene azzerata, e la EU deve attendere il tempo necessario per il fetch di una nuova istruzione prima di poter lavorare. 33 Prof. Marco Mezzalama – a.a. 06/07 Coda di istruzioni Per ottimizzare il processamento della istruzioni da parte della EU, la BIU esegue l’operazione di prefetch, ossia carica preventivamente word di istruzioni dalla memoria. Tali word vengono memorizzate nella coda di istruzioni. 34 Prof. Marco Mezzalama – a.a. 06/07 Coda di istruzioni BIU { F2{ F1{ F3 35 BIU { F2{ F3 F1 { EU EU a) b) Prof. Marco Mezzalama – a.a. 06/07 Pipeline Si noti che si può avere: pipeline perfetto o ideale, o pipeline imperfetto (parallelismo a livello di istruzioni) 36 Prof. Marco Mezzalama – a.a. 06/07 Pipeline ideale stadio 1 stadio 2 stadio 3 stadio 4 F1 F2 F3 F4 F5 F6 F7 F8 F1 F2 F3 F4 F5 F6 F7 F1 F2 F3 F4 F5 F6 F1 F2 F3 F4 F5 t 37 Prof. Marco Mezzalama – a.a. 06/07 Pipeline Sia detto: Ts il tempo di esecuzione di una istruzione in un sistema senza pipeline Tp il tempo di esecuzione di una istruzione in un sistema con pipeline Si ha che: Ts <= Tp (si veda la figura precedente) Ciò avviene nel caso di pipeline imperfetto o nel caso di blocco del pipeline perfetto 38 Prof. Marco Mezzalama – a.a. 06/07 Pipeline Prestazioni, valutate in MIPS: MIPSs = 1/Ts (sistema senza pipeline) MIPSp = n/Tp (sistema con pipeline), con n numero stadi MIPSs<<MIPSp In teoria le prestazioni crescono linearmente con n, in realtà esiste un asindoto per n >= na poiché al crescere di n non si riesce più a soddisfare il vincolo del pipeline ottimo. MIPS na 39 Prof. Marco Mezzalama – a.a. 06/07 n Pipeline Un meccanismo di pipeline ideale è costituito da una serie di stadi che eseguono un compito specifico in un tempo di esecuzione costante ed uguale per tutti gli stadi. Una catena di montaggio di una fabbrica automobilistica funziona con il meccanismo di pipeline. L’assemblaggio di una automobile è caratterizzata da diversi stadi da eseguire in un ordine fisso e caratterizzato da un determinato tempo di esecuzione (ad es. creazione scocca, montaggio del motore, sistemazione degli interni e verniciatura). I vari stadi produttivi sono posti in cascata e lavorano in modo che l’uscita di uno stadio coincida con l’ingresso dello stadio seguente. 40 Prof. Marco Mezzalama – a.a. 06/07 Pipeline (segue) A regime, ogni stadio è caratterizzato da una coda di prodotti in attesa di essere processati. Se i tempi di esecuzione delle varie fasi sono uguali il sistema funziona in maniera ideale: ogni stadio è sempre attivo e la sua coda è sempre vuota; al termine di un’operazione il prodotto passa allo stadio a valle e l’unità produttiva è pronta a processare il prodotto che gli arriva dallo stadio a monte. In una pipeline ideale il sistema globale riduce il tempo medio di fabbricazione di un prodotto di un fattore pari al numero di stadi della pipeline. 41 Prof. Marco Mezzalama – a.a. 06/07 Pipeline imperfettonell’8086,386,486 F1 E1 F2 E2 F3 processamento sequenziale F1 F2 E1 F3 E2 F3 processamento in parallelo (I singoli stadi non hanno tempi di esecuzione uguali) 42 Prof. Marco Mezzalama – a.a. 06/07 E3 Pipeline nel Pentium •L2 cache •DRAM L1 cache F 43 Prof. Marco Mezzalama – a.a. 06/07 D1 D2 EX WB Pipeline nel Pentium Nel processore Pentium esiste una vera pipeline di 5 stadi: • la fase di fetch (eseguita dalla coda o da L1 cache) • la fase di decodifica dell’istruzione, in cui vengono anche eseguiti i controlli di privilegio e di attributi in modo protetto(D1) • La fase di calcolo degli indirizzi degli operandi, in cui sono calcolati gli indirizzi reali tramite segmentazione e paginazione(D2) • La fase di esecuzione, in sono eseguite le operazioni della ALU e settati i flag • La fase di write-back, in cui sono scritti i risultati nei registri o nella L1 cache o in memoria. Ogni stadio richiede 1 CLK In alcune condizioni in uno stadio si inseriscono più periodi di CLK, es. accesso alla memoria. 44 Prof. Marco Mezzalama – a.a. 06/07 Gestione della memoria Durante il prefetch delle istruzioni, quando vi siano almeno due byte liberi nella coda delle istruzioni, la BIU preleva dalla memoria, o dalla L1 cache una parola allineata all’indirizzo pari. BIU esterna L1 cache •L2 cache •DRAM 45 Prof. Marco Mezzalama – a.a. 06/07 BIU interna Coda Istr. FETCH Lo Stack L'8086 prevede alcune strutture e meccanismi hadware per la gestione di uno stack. Lo stack corrisponde al segmento di memoria la cui testa è puntata da SS. Il top dello stack (locazione riempita per ultima) è puntato da SP. Lo stack cresce dalle locazioni di memoria con indirizzo maggiore verso quelle ad indirizzo minore. Ogni operazione di PUSH decrementa di 2 unità SP e scrive una word nella locazione da questo puntata. Ogni operazione di POP estrae una word dalla locazione puntata da SP, e successivamente incrementa SP di 2 unità. 46 Prof. Marco Mezzalama – a.a. 06/07 Esempio di Stack bottom of the stack 1068 FF FF 1066 00 A0 1064 13 B4 1062 45 09 top of the stack 1060 34 00 SS 01 05 SP 00 10 105E 105C 105A 1058 1054 1052 end of the stack 1050 47 Prof. Marco Mezzalama – a.a. 06/07 Operazioni sullo stack Stack vuoto PUSH AX AX 1060 13 41 13 41 105E PUSH AX AX 45 F0 13 41 45 F0 POP BX BX 45 F0 13 41 105C 105A 1058 1054 1052 1050 48 SS 01 05 01 05 01 05 01 05 SP 00 12 00 10 00 0E 00 10 Prof. Marco Mezzalama – a.a. 06/07 Uso dello Stack Oltre che a seguito delle istruzioni che esplicitamente lo manipolano (PUSH e POP), lo stack viene modificato in altri due casi: • all'atto della chiamata (CALL) o del ritorno (RET) da una procedura: nel primo caso viene automaticamente eseguita la PUSH dell'IP, nel secondo caso l'analoga POP; • all'atto dell'attivazione di un interrupt, e del ritorno dalla corrispondente routine di servizio (IRET); nel primo caso vengono eseguite automaticamente le PUSH del program counter (registri CS e IP) e della PSW, nel secondo caso vengono eseguite le corrispondenti POP. 49 Prof. Marco Mezzalama – a.a. 06/07 I/O L'accesso alle periferiche avviene spesso attraverso speciali locazioni associate ad un certo indirizzo. L'accesso a tali locazioni può avvenire nei processori 80x86 sia in modo memory mapped sia in isolated I/O. Nel primo caso l'accesso alla periferica avviene attraverso una normale istruzione, nel secondo attraverso speciali istruzioni di I/O. Lo spazio di indirizzamento dell'I/O è pari al più a 64K. 50 Prof. Marco Mezzalama – a.a. 06/07