Integer Java VM: IJVM

Documenti analoghi
Corso di Laurea in Informatica Architetture degli Elaboratori

06 Livello di micro architettura

Richiami sull architettura del processore MIPS a 32 bit

Corso di Laurea in Informatica

Richiami sull architettura del processore MIPS a 32 bit

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

L'architettura del processore MIPS

Integer Java Virtual Machine (IJVM)

Il processore. Istituzionii di Informatica -- Rossano Gaeta

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico pagina 1

Il livello della CPU, e in particolare come le istruzioni ISA (Instruction Set Architecture) che costituisce la CPU.

Componenti di un processore

Microarchitettura. Giacomo Fiumara Anno Accademico / 101

Data-path. ad un solo bus interno. Struttura del processore. L unità di elaborazione

Il Processore: l unità di controllo

Progettazione dell unità di elaborazioni dati e prestazioni. Il processore: unità di elaborazione. I passi per progettare un processore

Istruzioni di trasferimento dati

Sistemi e reti CPU Concetti di base

Il processore: unità di elaborazione

Problemi del ciclo singolo

Struttura di programmi MAL Elementi lessicali

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

Indirettezza. Fetch/Execute. Fetch/Execute. Introduzione della Indirettezza (indirect)

L unità di elaborazione PC: MAR/MDR IR: R0 Rn: TEMP, V, Z

Pipeline Problemi 1. Pipeline Problemi 2

IJVM. Danilo Dessì. Architettura degli Elaboratori.

Il livello della CPU, e in particolare come le istruzioni ISA (Instruction Set Architecture) che costituisce la CPU.

Università degli Studi di Cassino

Elementi di informatica

CPU a ciclo multiplo

Esercizio n. 7 - Microcodice

La CPU e la Memoria. Sistemi e Tecnologie Informatiche 1. Struttura del computer. Sistemi e Tecnologie Informatiche 2

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

Corso di Calcolatori Elettronici MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M.

Struttura del processore. Funzionamento del processore

Il processore Pentium

Architettura dei computer

Il processore: unità di controllo

Architettura degli Elaboratori

Struttura schematica di un calcolatore. Processore. Componenti processore: Data Path. Il processore (CPU)

Architettura dei Calcolatori Elettronici

La CPU a singolo ciclo

Architettura degli Elaboratori Lez. 8 CPU MIPS a 1 colpo di clock. Prof. Andrea Sterbini

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina

CPU pipeline hazards

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

Architettura di un calcolatore: Introduzione parte 2

Corso di Alfabetizzazione Informatica 2001/2002. La CPU. F. Tortorella Università degli Studi. di Cassino

Capitolo 5 Elementi architetturali di base

Il Ciclo Fetch-Decode-Execute. C Nyssen/Aberdeen College 2003

Instruction Level Parallelism Andrea Gasparetto

ISA e linguaggio macchina

Il linguaggio macchina

Struttura schematica di un calcolatore. Processore. Componenti processore: Data Path. Il processore (CPU) Data Path. Micro-operazione.

Capitolo 5 Struttura di base del processore

L unità di controllo di CPU a singolo ciclo

Elementi di informatica

L insieme delle istruzioni (6)

Linguaggio Assembly e linguaggio macchina

Architettura di una CPU

CPU a ciclo multiplo

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica

Corso di Informatica

Architettura dei calcolatori

Struttura di un elaboratore

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Architettura dei Calcolatori. Macchina di von Neumann /2. Macchina di von Neumann /1. Architettura dei Calcolatori

Il linguaggio assembly

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

CPU pipeline 4: le CPU moderne

DEC PDP8, III Generazione, '65-'75

Macchina di Riferimento: argomenti

Architettura dei calcolatori e sistemi operativi. Il processore Capitolo 4 P&H

Architettura hardware

Linguaggio macchina. Architettura degli Elaboratori e delle Reti. Il linguaggio macchina. Lezione 16. Proff. A. Borghese, F.

Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div

Architettura dei Calcolatori elettronici

Corso di Fondamenti di Informatica Elementi di Architettura

Calcolatori Elettronici A a.a. 2008/2009

Componenti principali

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Componenti e connessioni. Capitolo 3

Scopo della lezione. Analizzare i tipi di macchine Indirizzamento e memorie Tipi di dato

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Introduzione alla Microprogrammazione

Pinout PD32. Memoria di lavoro esterna. tramite l indirizzo ad esse associato. e possono essere lette o scritte: Le singole celle sono distinguibili

Struttura CPU. Struttura e Funzione del Processore. Capitolo 12. Compiti CPU:

Lezione 15. L elaboratore Elettronico

Architettura degli elaboratori Tema d esame del 20/01/2016

Il Processore. Informatica di Base -- R.Gaeta 27

Prefazione Unit`a di misura xiii La memoria cache

Contenuto della lezione

Sottosistemi ed Architetture Memorie

ARCHITETTURA DI UN ELABORATORE

Transcript:

Integer Java VM: IJVM Calcolatori Elettronici C.Brandolese Politecnico di Milano Sommario Introduzione Architettura Data Path Stack Modello di Memoria Instruction Set Microarchitettura Il livello microistruzione Microistruzioni Microcodice Aumento delle prestazioni Architettura a tre bus Prefetching Pipelining Branch prediction 13 Novembre 2000 Calcolatori Elettronici 2 1

Introduzione La microarchitettura IJVM E una versione molto ridotta di una JVM reale Utilizza solo aritmetica intera E realizzata con un esecutore specializzato Lo scopo è quello di eseguire un programma Java Java Source Java Compiler Java Bytecode IJVM Instruction Decoder Control Unit Microistruzioni Data Path 13 Novembre 2000 Calcolatori Elettronici 3 Data Path SP MAR LV CPP MDR PC MAIN MEMORY TOS MBR OPC H 6 N Z SHIFTER 2 SHIFT 13 Novembre 2000 Calcolatori Elettronici 4 2

Data Path Il data path dispone di due bus: BUS C: Scrittura sui registri BUS B: Lettura dai registri I registri dispongono di almeno due segnali di controllo: R: Legge dal BUS C e memorizza nel registro i dati letti W: Scrive sul BUS B i dati memorizzati in un registro Alcuni registri dispongono di segnali specifici E possibile leggere e scrivere un registro nello stesso ciclo di clock BUS C Read (from BUS C) REGISTER Write (to BUS B) BUS B 13 Novembre 2000 Calcolatori Elettronici 5 Data Path La ha 6 segnali di controllo: F0, F1: Function ENA, ENB: Enable input A and B INVA: Invert input A INC: Set carry-in to 1 La ha due segnali di uscita: N: Negative Z: Zero Operazioni con due operandi: Si usa una funzione che fornisce in uscita l operando B Lo si memorizza nel registro H Si connette il BUS B con il 2 operando 6 Operand A Result Operand B N Z 13 Novembre 2000 Calcolatori Elettronici 6 3

Data Path Alcune delle funzioni realizzate dalla in base ai segnali di controllo sono riportate nella tabella seguente F0 F1 ENA ENB INVA INC Funzione 0 1 1 0 0 0 A 0 1 0 1 0 0 B 1 1 1 1 0 0 A+B 1 1 1 0 0 1 A+1 1 1 1 1 1 1 B-A 1 1 1 0 1 1 -A 0 0 1 1 0 0 A AND B 0 1 0 0 1 0-1 13 Novembre 2000 Calcolatori Elettronici 7 Stack L architettura IJVM non dispone di registri generici Le operazioni sui dati vengono svolte usando: Il registro H per mantenere uno dei dati Il registro MDR I dati, cioè le variabili, di ogni procedura vengono mantenuti in una zona di memoria detta stack o pila Due registri gestiscono lo stack: SP: Stack Pointer. Punta alla cima dello stack, cioè alla locazione di memoria occupata con indirizzo più alto LV: Local Variables. Punta alla locazione con indirizzo più basso contenete una variabile locale della procedura corrente Ogni procedura deve gestire i registri SP ed LV 13 Novembre 2000 Calcolatori Elettronici 8 4

Stack La figura mostra lo stato dello stack: Dopo la chiamata della procedura A con variabili a1, a2, a3 Dopo la chiamata della procedura B con variabili b1, b2, b3 e b4 Dopo la terminazione di B calls A A calls B B returns to A A returns to... SP LV b4 b3 b2 b1 Local Frame of B SP LV a3 a2 a1 Local Frame of A a3 a2 a1 SP LV a3 a2 a1 13 Novembre 2000 Calcolatori Elettronici 9 Stack Lo stack viene usato anche per mantenere gli operandi durante l esecuzione di una operazione svolta dalla Primo operando sullo stack (PUSH) Secondo operando sullo stack (PUSH) Operazione Prelievo del risultato dallo stack (POP) PUSH a2 PUSH a3 ADD POP a1 SP a3 SP a2 a2 SP a2 + a3 SP a3 a3 a3 a3 SP a3 a2 a2 a2 a2 a2 LV a1 LV a1 LV a1 LV a1 LV a2 + a3 13 Novembre 2000 Calcolatori Elettronici 10 5

Modello di Memoria La memoria ha una dimensione di 4GB Visibili come 4G Bytes Visibili come 1G Words La memoria non è indirizzabile direttamente Gli indirizzi sono offset rispetto ad un puntatore: CPP: Contant Pool Pointer. Indica la base di una zona di memoria riservata alle costanti SP: Stack Pointer. Indica la cima del local frame LV: Local Variables. Indica la base del local frame PC: Program Counter. Punta all istruzione da eseguire I registri CPP, SP ed LV sono allineati alle word Il registro PC è allineato al byte 13 Novembre 2000 Calcolatori Elettronici 11 Instruction Set L instruction set della IJVM si compone di 20 istruzioni Ogni istruzione è formata da: Codice operativo Un operando (opzionale) Le istruzioni possono essere divise in 6 classi in base al tipo di operazione che svolgono Load/Store Stack Branch Subroutine Altre 13 Novembre 2000 Calcolatori Elettronici 12 6

Instruction Set Load/Store Istruzione ILOAD offset ISTORE offset Significato Push della variabile sullo stack Pop dello stack e copia nella variabile Stack Istruzione BIPUSH byte DUP LDCW offset POP SWAP Significato Push di un byte sullo stack Duplica la variabile alla cima dello stack e push Push di una costante sullo stack Elimina la variabile alla cima dello stack Scambia le due parole alla cima dello stack 13 Novembre 2000 Calcolatori Elettronici 13 Instruction Set Istruzione IADD IAND IINC offset inc IOR ISUB Significato Pop di due parole dallo stack e push della loro somma Pop di due parole dallo stack e push del loro AND logico Somma di una costante ad una variabile locale Pop di due parole dallo stack e push del loro OR logico Pop di due parole dallo stack e push della loro differenza Branch Istruzione GOTO offset IFEQ offset IFLT offset IFICMPEQ offset Significato Salta in modo incondizionato Pop di una parola dallo stack e salta se è zero Pop di una parola dallo stack e salta se è negativa Pop di due parole dallo stack e salta se sono uguali 13 Novembre 2000 Calcolatori Elettronici 14 7

Instruction Set Subroutine Istruzione INVOKE offset IRETURN Significato Chiama una procedura Ritorna da una procedura con un valore intero Altre Istruzione NOP WIDE Significato Nessuna operazione Indica che l istruzione successiva ha un indice di 16 bit 13 Novembre 2000 Calcolatori Elettronici 15 Instruction Set L istruzione INVOKE funziona secondo questo schema: Push dell offset OBJREF che indica il riferimento ad un oggetto Push degli argomenti Chiamata del metodo specificando la posizione nel constant pool alla quale si trova l indirizzo del codice nella area dei metodi CPP+offset CPP 0x1b84 0x04f0 0x0240 0x00c8 PC + 0x04f0 0x20 0x00 0x01 0x00 0x19 13 Novembre 2000 Calcolatori Elettronici 16 8

Instruction Set La prima word puntata nell area dei metodi ha il significato: b 0 b 1 : Numero di argomenti, OBJREF incluso b 2 b 3 : Dimesione del local frame La posizione di OBJREF è data da SP - b 0 b 1 CPP+offset 0x1b84 0x04f0 0x20 0x00 0x0020: Dimensione del local frame 0x0240 0x00c8 PC + 0x04f0 0x02 0x00 0x0002: Numero di argomenti 0x19 13 Novembre 2000 Calcolatori Elettronici 17 Microarchitettura SP MAR LV CPP MDR PC MAIN MEMORY TOS MBR OPC Segnali di controllo 6 H N Z 9 per la scrittura dal BUS C 9 per la lettura sul BUS B 8 per il controllo di e SHIFTER 2 per la lettura/scrittura della memoria 1 per la lettura tramite PC/MBR SHIFTER 2 SHIFT 13 Novembre 2000 Calcolatori Elettronici 18 9

Microarchitettura Il BUS B può leggere un solo registro I registri sono in mutua esclusione I nove segnali di controllo possono essere codificati su 4 bit Questi 24 segnali controllano il data path per un solo ciclo Per determinare l operazione da svolgere al ciclo seguente è necessario introdurre altri segnali: NEXT: Indirizzo della microistruzione seguente JAM: Codici di condizione per i salti Una possibile codifica è la seguente: 0 8 9 11 12 19 20 28 29 31 32 35 J J J M A A S S F F E E I I L R 0 1 N N N N H O T C L S P M M P O P V P C D A W R F R E E NEXT P M M C N Z L A 8 1 A B V C A T S P R R I A T T D C BUS B E H Addr JAM BUS C Mem BUS B 13 Novembre 2000 Calcolatori Elettronici 19 Microarchitettura Ogni istruzione della IJVM viene realizzata mediante l esecuzione di una sequenza di microistruzioni Le microistruzioni: Sono memorizzate in una apposita ROM, detta Control Store, formata da 512 (2 9 ) parole di 36 bit Non vengono eseguite nell ordine in cui sono memorizzate Dispongono di un apposito campo che indica l indirizzo della microistruzione successiva Il control store utilizza: MPC: Micro Program Counter. Indica, ad ogni passo di controllo, quale microistruzione leggere MIR: Micro Instruction Register. Contiene la microistruzione letta all indirizzo contenuto in MPC 13 Novembre 2000 Calcolatori Elettronici 20 10

Microarchitettura La figura mostra: Il Control Store ed i registri MPC e MIR Il decoder per i segnali di controllo per il BUS B La logic per il calcolo degli indirizzi MPC 9 Control Store 512 x 36 bit MBR N Z High bit Jump Logic JMPC 36 9 8 Addr J BUS C Mem BUS B Addr[0] 6 2 3 JAMN JAMZ & SHIFT RAM MIR 4 D at a P at h 13 Novembre 2000 Calcolatori Elettronici 21 Microarchitettura Il blocco di logica denominato High Bit Determina il bit MPC[0] del micro program counter Svolge la seguente funzione: Se JAMN=0 e JAMZ=0 allora MBR[0]=Addr[0]; Se JAMN=0 e JAMZ=1 allora MBR[0]=Addr[0] + Z; Se JAMN=1 e JAMZ=0 allora MBR[0]=Addr[0] + N; Se JAMN=1 e JAMZ=1 allora MBR[0]=Addr[0] + N + Z; La funzione che ne risulta è MPC[0] = Addr[0] + Z JAMZ + N JAMN Z JAMZ N JAMN Addr[0] High Bit MPC[0] 13 Novembre 2000 Calcolatori Elettronici 22 11

Microarchitettura Il blocco indicato con Jump Logic Determina il valore dei bit MPC[1..8] del micro program counter Svolge la seguente funzione Se JMPC=0 allora MPC[1..8]=Addr[1..8]; Se JMPC=1 allora MPC[1..8]=Addr[1..8] OR MBR[0..7]; La funzione per la linea i-esima di MPC è la seguente: MPC[i] = Addr[i] + JAMZ MBR[i 1] Normalmente MBR contiene un opcode Porre JMPC=1 significa caricare il valore corrispondente all opcode nel micro program counter Questo meccanismo consente un efficiente salto all inizio del microcodice per una specifica istruzione. 13 Novembre 2000 Calcolatori Elettronici 23 Microistruzioni Una microistruzione: Parola di 36 bit Insieme di segnali di controllo La rappresentazione di una microistruzione può essere: Esplicita: Una sequenza di bit o un elenco dei segnali con valore 1 Simbolica: Una notazione più leggibile ed immediata Esempio: Lettura dello stack e salto alla microistruzione all indirizzo 122 Esplicita: Read SP, =INC, Write SP, Read, NextAddr=122 Simbolica: SP = SP + 1; Read; goto 122 13 Novembre 2000 Calcolatori Elettronici 24 12

Microistruzioni L architettura della IJVM consente due tipi di salti Salti incondizionati: goto A Carica nel micro-pc l indirizzo A Salti condizionati: if (cond) goto A1 else goto A2 Se il bit cond è a 1 carica lindirizzo A1 nel micro-pc Se il bit cond è a 0 carica lindirizzo A2 nel micro-pc Gli indirizzi A1 ed A2 devono devono differire solo per l MSB Il bit di condizione cond può essere N (Negative) o Z (Zero) Per fissare il valore de N e Z si usano le microistruzioni: Z=TOS oppure N=TOS Per saltare ad un indirizzo letto dalla memoria: Si usa l istruzione: goto (MBR) 13 Novembre 2000 Calcolatori Elettronici 25 Microcodice L esecuzione di ogni istruzione ISA consiste in: Lettura dell istruzione dalla memoria Salto al microcodice dell istruzione ISA Esecuzione del microcodice Ritorno al microcodice per il caricamento dell aprossima istruzione I segnale Read e Fetch hanno significati differenti: Read viene usato per leggere una word dalla memoria in MDR Fetch viene usaro per leggere un byte dalla memoria in MBR Microcodice per il caricamento dell istruzione: Label MAIN1 Microcode PC=PC+1; Fetch; goto(mbr) 13 Novembre 2000 Calcolatori Elettronici 26 13

Microcodice: Esempio 1 Istruzione: IADD Significato: Somma i 2 valori sulla cima dello stack Rimuove i due valori dalla cima dello stack Pone il risultao sulla cima dello stack Microcodice: Label IADD1 IADD2 IADD3 Microcode MAR=SP=SP-1; Read H=TOS MDR=TOS=MDR+H; Write; goto MAIN1 13 Novembre 2000 Calcolatori Elettronici 27 Microcodice: Esempio 2 Istruzione: BIPUSH Significato: Legge in MBR il byte successivo all opcode BIPUSH Estende il segno Mette il byte in MBR sulla cima dello stack Microcodice: Label BIPUSH1 Microcode SP=MAR=SP+1; BIPUSH2 BIPUSH3 PC=PC+1; Read MDR=TOS=MDR; Write; goto MAIN1 13 Novembre 2000 Calcolatori Elettronici 28 14

Architettura a tre bus Le operazioni aritmetiche richiedono: Un primo ciclo di clock per caricare un operando nel registro H Durante tale ciclo la viene usata solo come connessione Un secondo ciclo di clock per eseguire l operazione Un possibile miglioramento consiste nel rendere possibile la connessione diretta di tutti i registri con entrambi gli inressi dati della Questa soluzione richiede l aggiunta di un ulteriore bus L architettura risultante è pertanto detta a tre bus: BUS A: Lettura dei registri sull opernado A della BUS B: Lettura dei registri sull operando B della BUS C: Scrittura dell uscita della (e Shifter) sui registri 13 Novembre 2000 Calcolatori Elettronici 29 Architettura a tre bus BUS A BUS B SP MAR LV CPP MDR PC MAIN MEMORY TOS MBR OPC H BUS C 6 SHIFTER 2 N Z SHIFT 13 Novembre 2000 Calcolatori Elettronici 30 15

Architettura a tre bus Con questa architettura si ha un notevole risparmio in termini di cicli di clock Si consideri, ad esempio, l istruzione: MDR=TOS+SP Architettura a due bus: T=1: Read SP, Write H T=2: Read TOS, =ADD, Write MDR Architettura a tre bus: T=1: ReadA SP, ReadB TOS, =ADD, Write MDR In molte istruzioni la alu viene semplicemente usata per copiare il valore da un registro al registro temporaneo H 13 Novembre 2000 Calcolatori Elettronici 31 Prefetching L esecuzione di ogni istruzione richiede: Lettura dell istruzione dalla memoria Decodifica dei campi dell istruzione In termini di microistruzioni: PC passa attraverso la e viene incrementato PC viene usato per leggere il byte seguente nel programma PC ed vengono usati per leggere gli eventuali operandi La è utilizzata per diversi cicli di clock: Per operazioni non legate alla esecuzione di una istruzione ma piuttosto al suo caricamento Come collegamento per copiare un valore da un registro ad un altro, senza svolgere alcuna operazione Ciò comporta un notevole spreco di tempo 13 Novembre 2000 Calcolatori Elettronici 32 16

Prefetching Soluzione 1: Aggiungere al data path una seconda Costoso in termini di area sul silicio Una completa sarebbe fortemente sottutilizzata Soluzione 2: Aggiungere percorsi addizionali Ad esempio percorsi da TOS a MDR o vice versa Aumento del numero dei segnali di controllo Microistruzioni e microcodice più complessi Soluzione 3: Introduzione di una unità dedicata In grado di gestire il program counter autonomamente In grado di leggere alcuni byte dalla memoria prima che siano effettivamente necessari Non molto costosa in termini di area sul silicio 13 Novembre 2000 Calcolatori Elettronici 33 Prefetching La soluzione 3 è la migliore L unità aggiuntiva è detta Instruction Fetch Unit o IFU L unità svolge le seguenti operazioni: Gestione del program counter Lettura di byte dalla memoria Assemblaggio di operandi a 8 o 16 bit Per fare ciò la IFU: Legge i due byte successivi Rende disponibile il byte successivo (8 bit) Rende disponibili due byte successivi (16 bit) L unità principale di escuzione richiede i byte necessari 13 Novembre 2000 Calcolatori Elettronici 34 17

Prefetching Lo schema di tale unità è il seguente: Instruction Fetch Unit Shifter MBR2 MAIN MEMORY IMAR MBR1 Inc1 Inc12 PC BUS C BUS B 13 Novembre 2000 Calcolatori Elettronici 35 18

Prefetching BUS A BUS B SP MAR LV MDR CPP PC MAIN MEMORY TOS MBR1 IFU OPC MBR2 H BUS C 6 SHIFTER 2 N Z SHIFT 13 Novembre 2000 Calcolatori Elettronici 37 Prefetching Il registro a scorrimento della IFU chiamato Shifter: Mantiene una coda di 6 byte letti da memoria ad indirizzi consecutivi Il byte più vecchio alimenta MBR1 I due byte più vecchi, scambiati di posizione, alimentano MBR2 Ogni volta che MBR1 viene letto, Shift scorre di una posizione Ogni volta che MBR2 viene letto, Shift scorre di due posizioni Quando in Shift si hanno 4 byte vuoti, una nuova parola viene letta Questo comportamento è regolato dalla FSM: 0 1 2 3 4 5 6 Read MBR1 Read MBR2 Read Memory (4 bytes) 13 Novembre 2000 Calcolatori Elettronici 38 19

Prefetching Dal punto di vista della microprogrammazione la IFU: Legge l istruzione successiva in MBR1 Prepara gli eventuali operandi in MBR2 Quindi: Sparisce il microcodice per il fetch delle istruzoni Sparisce il salto a MAIN1 alla fine di ogni microprocedura Il fetch e decode del istruzione successiva viene eseguito semplicemente dalla microistruzione goto (MBR1) alla fine di ogni microprocedura Una tale architettura comporta alcuni controlli aggiuntivi: Il registro MBR2 deve contenere due byte quando viene letto Lo shifter deve attendere la fine della lettura dalla memoria Una IFU reale è più complessa di quella mostrata 13 Novembre 2000 Calcolatori Elettronici 39 Prefetching: Esempio Istruzione: BIPUSH Significato: Legge in MBR il byte successivo all opcode BIPUSH Estende il segno Mette il byte in MBR sulla cima dello stack Microcodice: Label Microcode BIPUSH1 SP=MAR=SP+1; BIPUSH2 PC=PC+1; Read Questa operazione è svolta autonomamente dalla unità di prefetch BIPUSH3 MDR=TOS=MDR; Write; goto MAIN1 13 Novembre 2000 Calcolatori Elettronici 40 20

Pipelining L introduzione del bus A e della unità di prefetching ha migliorato le prestazioni dell architettura per due motivi: Non è necessario caricare un operando alla volta per usare la Non è necessario usare la per caicare istruzioni ed operandi Questo comporta una riduzione del numero medio di microistruzioni per ogni istruzione a livello ISA Si ha quindi un amumento del parallelismo Per migliorare ulteriormente le prestazioni si può: Aumentare ulteriormente il parallelismo Ridurre il periodo di clock Ciò si ottiene mediante una tecnica detta pipelining 13 Novembre 2000 Calcolatori Elettronici 41 Pipelining L esecuzione di una microistruzione comporta: Lettura dei registri sui bus Elaborazione dei dati da parte della e dello SHIFTER Scrittura dei risultati nei registri Le tre operazioni devono svolgersi in un ciclo di clock Per ridurre il periodo di clock è possibile: Utilizzare una tecnologia (transistor) più veloci Eseguire operazioni più semplici in ogni ciclo di clock: Ciclo i: Lettura dei registri sui bus Ciclo i+1: Elaborazione dati da parte della e dello SHIFTER Ciclo i+2: Scrittura dei risultati nei registri La prima soluzione, anche se comunemente utilizzata, non riguarda il progetto logico o architetturale 13 Novembre 2000 Calcolatori Elettronici 42 21

Pipelining Il pipelining consente di: Ridurre il periodo di clock Le operazioni svolte in ogni ciclo sono più semplici Massimizzare il parallelismo Le sezioni del data path che svolgono le operazioni semplici possono essere opportunamente isolate L architettura mostrata: È simile alla precedente Utilizza tre latch per isolare le diverse sezioni del data path REGISTERS Latch C Latch A Latch B C A B 6 N Z IFU RAM SHIFTER 2 SHIFT 13 Novembre 2000 Calcolatori Elettronici 43 Pipelining Nella discussione che segue è comodo visualizzare l architettura ad un livello di minore dettaglio Gli elementi di interesse sono: IFU: Instruction Fetch Unit REG: Regsiter File A: Latch on bus A B: Latch on bus B C: Latch on bus C : and SHIFTER Si veda lo schema a lato Stage 1 Stage 2 IFU REG C A B Stage 3 Stage 4 13 Novembre 2000 Calcolatori Elettronici 44 22

Pipelining Tempo T=0: Prefetch dell istruzione 1 Tempo T=1: Prefetch dell istruzione 2 ReadReg dell istruzione 1 INSTR 1 INSTR 2 INSTR 1 IFU IFU REG REG C A B C A B 13 Novembre 2000 Calcolatori Elettronici 45 Pipelining Tempo T=2: Prefetch dell istruzione 3 ReadReg dell istruzione 2 Execute dell istruzione 1 Tempo T=3: Prefetch dell istruzione 4 ReadReg dell istruzione 3 Execute dell istruzione 2 Write-Back dell istruzione 1 INSTR 3 INSTR 2 INSTR 4 INSTR 3 IFU IFU REG REG C A B C A B INSTR 1 INSTR 1 INSTR 2 13 Novembre 2000 Calcolatori Elettronici 46 23

Pipelining Tempo T=4: Prefetch dell istruzione 5 ReadReg dell istruzione 4 Execute dell istruzione 3 Write-Back dell istruzione 2 Tempo T=5: Prefetch dell istruzione 6 ReadReg dell istruzione 5 Execute dell istruzione 4 Write-Back dell istruzione 3 INSTR 5 INSTR 4 INSTR 6 INSTR 5 IFU REG IFU REG C A B C A B INSTR 2 INSTR 3 INSTR 3 INSTR 4 13 Novembre 2000 Calcolatori Elettronici 47 Pipelining Gli schemi di esecuzione appena mostrati mettono in evidenza alcuni aspetti importanti del pipelining: La prima microistruzione richiede 4 cicli per essere completata Il tempo di completamento della prima microistruzione o, equivalentemente, il tempo che una istruzione impiega ad attraversare tutti gli stadi della pipeline viene detto latenza Nei cicli successivi viene completata una microistruzione ogni ciclo Il numero di microistruzioni completate per unità di tempo è detto throughput. Nel caso ideale il trhoughput è pari alla frequenza del clock Dopo una fase iniziale, tutti gli stadi sono simultaneamente utilizzati Il parallelismo è massimizzato Ad ogni ciclo sono in esecuzione 4 istruzioni Ogni istruzione si trova in uno stadio di elaborazione differente 13 Novembre 2000 Calcolatori Elettronici 48 24

Pipelining L esecuzione pipelined è solitamente rappresentata così: Stato della pipeline al tempo T=4 Fetch I1 Read I1 Exec I1 Write I1 Fetch I2 Read I2 Exec I2 Write I2 Stato della pipeline al tempo T=6 Fetch I3 Read I3 Exec I3 Write I3 Fetch I4 Read I4 Exec I4 Write I4 Fetch I5 Read I5 Exec I5 Write I5 Fetch I6 Read I6 Exec I6 Write I6 Fetch I7 Read I7 Exec I7 Fetch I8 Read I8 1 2 3 4 5 6 7 8 9 T 13 Novembre 2000 Calcolatori Elettronici 49 Pipelining La situazione appena mostrata è una situazione ideale Sia I1 una istruzione che inizia al tempo t: I1 legge i registri nello stadio 1, cioè al tempo t+1 I1 scrive i registri nello stadio 3, cioè al tempo t+3 Sia I2 una istruzione che inizia al tempo t+1: I2 legge i registri nello stadio 1, cioè al tempo t+2 I2 scrive i registri nello stadio 3, cioè al tempo t+4 Si supponga che I1 scriva un registro che I2 deve leggere: I1 scriverà il risultato nel registro al tempo t+3 I2 leggerà il registro al tempo t+2 I2 legge il registro prima che I1 lo abbia scritto Questa situazione è detta conflitto o hazard 13 Novembre 2000 Calcolatori Elettronici 50 25

Pipelining Esitono diversi tipi di conflitti dovuti a cause diverse Conflitto Read After Write: RAW hazard Una istruzione tenta di leggere un registro prima che sia stato scritto Si risolve ritardando l esecuzione della seconda istruzione Un ritardo inserito dopo la fase di fetch prende il nome di stallo Conflitto di controllo: Control hazard Una istruzione di salto provoca sempre un conflitto di controllo L unità di fetch ha già letto l istruzione successiva, senza tener conto del fatto che il salto potrebbe prevenirne l esecuzione Si risolve inserendo una istruzione fittizia (NOP) tra un salto e l istruzione seguente Pipeline più complesse (7 o 13 stadi) sono soggette anche ad altri tipi di conflitti 13 Novembre 2000 Calcolatori Elettronici 51 Pipelining Per aumentare l efficacia di una architettura pipeline è necessario ridurre il numero di stalli Si può procedere in due modi, non mutuamente esclusivi: Studio di opportune tecniche di compilazione mirate alla riduzione del numero di situazioni potenzialmente critiche tramite: Riordino delle istruzioni nel rispetto delle dipendenze tra i dati Introduzione di istruzioni fittizie Realizzazione di una unità hardware in grado di prevedere situazioni critiche con un sufficiente margine di anticipo Riordino dinamico delle istruzioni Predizione dei salti I moderni processori (CISC) contengono pipeline complesse ed adottano ampiamente queste tecniche 13 Novembre 2000 Calcolatori Elettronici 52 26

Branch Prediction: Problemi Una architettura pipeline massimizza le prestazioni se il codice non contiene istruzioni di salto Il codice reale, tuttavia, ha una alta percentuale di salti, circa uno ogni 4-5 istruzioni Salti condizionati: Non è noto a priori quale sarà l istruzione successiva L unità di fetch deve attendere il completamento della fase di esecuzione dell istruzione di salto (2 cicli, nell esempio visto) Salti incondizionati La destinazione è nota senza ambiguità L unità di fetch deve attendere il completamento della fase di lettura degli operandi dell istruzione di salto (1 ciclo, nell esempio visto) 13 Novembre 2000 Calcolatori Elettronici 53 Branch Prediction: Soluzioni Salti incondizionati Una unità hardware dedicata ha un costo molto elevato L indirizzo di destinazione è noto al secondo stadio della pipeline quindi una sola istruzione dopo il salto è già stata iniziata Salto Fetch Jump Istruzione successiva Read Target Exec Jump Write Fetch I2 Read I2 Exec I2 Fetch I3 Soluzione a compile-time: Eseguire comunque l istruzione successiva al salto (NOP) Soluzione a run-time: Introdurre uno stallo in modo da ritardare l esecuzione della istruzione seguente 13 Novembre 2000 Calcolatori Elettronici 54 27

Branch Prediction: Soluzioni Salti condizionati Una unità hardware dedicata ha un costo molto elevato L esecuzione dei salti condizionati richiede il completamento di un numero maggiore di stadi della pipeline Più di una istruzione successiva al salto inizia d essere eseguita Soluzioni a compile-time Inserimento di NOP Soluzioni a run-time Inserimento di stalli Nel codice assembly si ha una elevata frequenza di salto: Significativa riduzione delle performance SI accetta anche il costo di una unità hardware aggiuntiva 13 Novembre 2000 Calcolatori Elettronici 55 Branch Prediction: Soluzioni Le unità hardware che gestiscono i salti prendono il nome di Branch Prediction Unit Il loro scopo è quello di determinare se un salto sarà preso o meno, prima che l istruzione inizi ad essere eseguita A tale scopo: Sono state sviluppate diverse techniche Sono stati realizzati circuiti digitali che implementano le metodologie sviluppate La criticità di una mancata previsione aumenta all aumentare della profondità della pipeline 13 Novembre 2000 Calcolatori Elettronici 56 28

Branch Prediction: Soluzioni Se la previsione è corretta Si conosce l indirizzo di destinazione L unità di prefetch aggiorna il program counter nel modo corretto L esecuzione può procedere normalmente Se la previsione è sbagliata Si deve determinare quale è l indirizzo reale di destinazione Gestire il fatto che alcune istruzioni che non avrebbero dovuto essere eseguite sono in realtà state eseguite (anche parzialmente) Le istruzioni erroneamente eseguite possono modificare lo stato della macchina È necessario quindi adottare una delle due strategie Prevenire la modifica dello stato della macchina Salvare lo stato prima della modifica ed eventualmente recuperarlo 13 Novembre 2000 Calcolatori Elettronici 57 Branch Prediction: Soluzioni Il problema di determinare l indirizoo di alto corretto non pone grossi problemi Il problema di mantenere corretto lo stato della macchina è la causa dei problemi maggiori Una possibile soluzione: Si eseguono le istruzioni normalmente fino a quando una istruzione tenta di modificare lo stato della macchina Scrittura di un registro Scrittura della memoria Si salvano i risultati in appositi registri di scratch (temporanei) Se la previsione si rivela corretta si copiano i registri di scratch nelle destinazioni effettive Se la previsione si rivela scorretta si ignora il contenuto dei registri di scratch 13 Novembre 2000 Calcolatori Elettronici 58 29

Branch Prediction: Statica Questa tecnica consiste nel fare le assunzioni seguenti Salti condizionati all indietro sempre effettuati Di solito un salto all indietro costituisce la fine di un loop È probabile che il loop venga eseguito molte volte quindi conviene assumere che il salto sia effettuato Salti condizionati in avanti mai effettuati Solitamente un salto in avanti è causato da eccezioni o situazioni di errore nel software Tali condizioni sono abbastanza rare Per errori di previsone si adotta, adpio, la soluzione basata si registri scratch 13 Novembre 2000 Calcolatori Elettronici 59 Branch Prediction: Dinamica Questa tecnica consiste nel Mantenere traccia della storia dei salti effettuati più di recente Si usa una history table realizzata in hardware Le dimensioni della tabella influenzano la bontà della previsione Si ipotizza che un salto si comporti come l ultima volta Il comportamento di un salto è indicato da un bit 0: Not taken 1: Taken Se la predizione è Corretta La tabella rimane invariata Errata Il bit che indica il comportamaneto del salto viene aggiornato 13 Novembre 2000 Calcolatori Elettronici 60 30

Branch Prediction: Dinamica Una possibile realizzazione hardware è la seguente Gli indirizzi sono di m bit Si usa una tabella con n bit per l indirizzamento La tabella ha 2 n linee Ogni linea contiene Un bit che indica la validità delle informazioni Un bit che indica l esito dell ultimo salto (taken/not taken) La destinazione del salto espressa su (m n 2)bit Le istruzioni sono allineate alle parole di memoria Gli ultimi due bit di ogni indirizzo sono sempre 00 Gli n+2 bit meno significativi dell indirizzo vengono usati come indice all interno della tabella 13 Novembre 2000 Calcolatori Elettronici 61 Branch Prediction: Dinamica Esempio Indirizzi a 8 bit Tabella con 2 3 linee (16) 00010000 (20) 00010100 (24) 00011000 (48) 00110000 (52) 00110100 (56) 00111000 (80) 01010000 (84) 01010100 (88) 01011000 Main Memory History Table 000 001 010 011 100 101 110 111 Valid Branch Address Prediction 13 Novembre 2000 Calcolatori Elettronici 62 31

Branch Prediction: Dinamica Il metodo visto presenta un limite Mentre un ciclo viene eseguito il bit di predizione è a 1 (taken) All ultimo ciclo il branch non viene eseguito Si ha un errore nella predizione Il bit di predizione viene aggiornato a 0 (not taken) Se il ciclo viene ripetuto una seconda volta Il primo branch dovrebbe essere eseguito Il bit di predizione era stato posto a 0 (not taken) Si ha un errore nella predizione Questa situazione è molto critica quando si hanno cicli annidati o cicli in procedure che vengono usate spesso Una soluzione consiste nel mantenere una history con profondità maggiore 13 Novembre 2000 Calcolatori Elettronici 63 Branch Prediction: Dinamica Per realizzare una history con profondità pari a 2: Si usa una history table hardware simile alla precedente Si usano due bit per la predizione Si usa una FSM per aggiornare i bit di predizione Le transizioni indicano se i salti sono effettuati (T) o no (NT) Gli stati indicano la predizione: J: Jump NJ: Don t jump T NT 00 NJ T 01 NJ 10 J T 11 J T NT NT NT 13 Novembre 2000 Calcolatori Elettronici 64 32