Architettura degli Elaboratori B. Introduzione al corso. Componenti di un calcolatore convenzionale. (ciclo singolo) Progetto CPU. Contenuti del corso

Documenti analoghi
Progetto CPU (ciclo singolo)

Progetto CPU (ciclo singolo) Salvatore Orlando

Architettura degli Elaboratori B Introduzione al corso

Processore: Datapath & Control. Progetto CPU (ciclo singolo) Rivediamo i formati delle istruzioni. ISA di un MIPS-lite

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

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

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

Circuiti Sequenziali

Architettura degli Elaboratori

Richiami sull architettura del processore MIPS a 32 bit

Il processore: unità di elaborazione

Richiami sull architettura del processore MIPS a 32 bit

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

L'architettura del processore MIPS

Architettura degli Elaboratori

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti. Proff. A. Borghese, F. Pedersini

Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS)

Università degli Studi di Cassino

Università degli Studi di Cassino

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

Progetto CPU a singolo ciclo

Università degli Studi di Cassino e del Lazio Meridionale

L unità di controllo di CPU a singolo ciclo

Implementazione semplificata

L unità di controllo di CPU a singolo ciclo

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

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

Architettura degli Elaboratori B Introduzione al corso

Architettura degli Elaboratori B Introduzione al corso

CPU a ciclo multiplo

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

Rappresentazione dell informazione

Progetto CPU a singolo ciclo

Istruzioni e linguaggio macchina

CPU a ciclo multiplo

La Microarchitettura. Davide Bertozzi

CPU a singolo ciclo: l unità di controllo, esecuzione istruzioni tipo J

Il Processore: l Unità di Controllo Principale Barbara Masucci

Architettura degli elaboratori CPU a ciclo singolo

Una CPU multi-ciclo. Sommario

Calcolatori Elettronici

La CPU a singolo ciclo

Architettura degli elaboratori

Architettura degli elaboratori CPU a ciclo singolo

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (2) Le operazioni e gli operandi. Dove siamo nel corso. Cosa abbiamo fatto

Elementi base per la realizzazione dell unità di calcolo

Architettura degli elaboratori - II Le architetture multi-ciclo

La CPU a singolo ciclo

Architettura della CPU multi-ciclo

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

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Fetch Decode Execute Program Counter controllare esegue prossima

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Architettura degli Elaboratori

CPU a singolo ciclo: l unità di controllo, istruzioni tipo J

Elementi di informatica

L unità di controllo di CPU a singolo ciclo. Sommario

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

Esercitazione 06 Progettazione di una CPU RISC-V

Architettura degli Elaboratori e Laboratorio. Matteo Manzali Università degli Studi di Ferrara Anno Accademico

ISA (Instruction Set Architecture) della CPU MIPS

CALCOLATORI ELETTRONICI 30 agosto 2010

Architettura del processore MIPS

Architettura degli Elaboratori

ISA (Instruction Set Architecture) della CPU MIPS32

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

CALCOLATORI ELETTRONICI 29 giugno 2015

Architettura degli Elaboratori A Modulo 2

slt $t1,$t2,$t3 if ($t2<$t3) $t1=1; Confronto tra registri slti $t1,$t2,100 if ($t2<100)$t1=1; Cfr. registro-costante

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

CALCOLATORI ELETTRONICI 27 giugno 2017

Calcolatori Elettronici B a.a. 2005/2006

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

Modifiche di orario. Lezione 19 Il Set di Istruzioni (6) Dove siamo nel corso. Un quadro della situazione

Una CPU multi-ciclo. Sommario

Università degli Studi di Cassino

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

Linguaggio Assembly e linguaggio macchina

Esercitazione del 05/05/ Soluzioni

La pipeline. Sommario

CALCOLATORI ELETTRONICI 14 giugno 2010

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento

La pipeline. Sommario

Fondamenti di Informatica A. A / 1 9

Calcolatori Elettronici B a.a. 2007/2008

Calcolatori Elettronici

Una CPU multi-ciclo. Sommario

Calcolatori Elettronici

Il linguaggio macchina

CALCOLATORI ELETTRONICI A 25 gennaio 2011

Architettura dell elaboratore

Architettura dell elaboratore

Un quadro della situazione. Lezione 14 Il Set di Istruzioni (2) Dove siamo nel corso. I principi di progetto visti finora. Cosa abbiamo fatto

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

Il linguaggio macchina

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

Transcript:

Architettura degli Elaboratori B Introduzione al corso Salvatore Orlando Arch. Elab. - S. Orlando 1 Contenuti del corso Progetto della CPU CPU in grado di eseguire un sottoinsieme di istruzioni MIPS in un singolo ciclo di clock CPU in grado di eseguire un sottoinsieme di istruzioni MIPS in più cicli di clock (multi-ciclo) Introduzione del parallelismo a livello delle istruzioni Più istruzioni sono eseguite concorrentemente dalla CPU Memoria Gerarchie di memoria Cache e memoria virtuale I/O Dispositivi fisici e bus Tecniche hw / sw per la programmazione dell I/O Valutazione delle prestazioni Studieremo come i tipi e il numero delle istruzioni eseguite, la frequenza del processore, il parallelismo interno al processore, le gerarchie di memorie e l I/O influenzano il tempo di esecuzione di un programma Arch. Elab. - S. Orlando 3 Componenti di un calcolatore convenzionale Studieremo il progetto e le prestazioni delle varie componenti di un calcolatore convenzionale processore (CPU) - parte operativa (datapath) - parte controllo (control) memoria principale - DRAM, SRAM e gerarchie Input/Output (I/O) - mouse, tastiera (I) - video, stampante (O) - dischi (I/O) - CD (I/O o I) - rete (I/O) - bus per i collegamenti Processore Control Datapath I/O Memoria Arch. Elab. - S. Orlando 2 Progetto CPU (ciclo singolo) Salvatore Orlando Arch. Elab. - S. Orlando 4

Processore: Datapath & Control Possiamo finalmente vedere il progetto di un processore MIPS-like semplificato Semplificato in modo tale da eseguire solo: istruzioni di memory-reference: lw, sw istruzioni arithmetic-logic: add, addi, sub, and, or, slt istruzioni di control-flow: beq, j Arch. Elab. - S. Orlando 5 ISA di un MIPS-lite ADD e SUB add rd, rs, rt sub rd, rs, rt ADD Immediate: addi rt, rs, imm op rs rt rd shamt funct 5 bits 5 bits 6 bits bits 11 6 LOAD and STORE Word lw rt, imm (rs) sw rt, imm (rs) bits BRANCH: beq rs, rt, imm bits Arch. Elab. - S. Orlando 7 Rivediamo i formati delle istruzioni Le istruzioni MIPS sono tutte lunghe 32 bits. I tre formati che considereremo: R-type I-type J-type op rs rt rd shamt funct op target address Campi: 6 bits bits op: codice operativo dell instruzione rs, rt, rd: dei registri sorgente (rs, rt) e destinazione (rd) shamt: shift amount (è diverso da solo per istruz. di shift) funct: seleziona le varianti dell operazione specificata in op immediate: offset dell indirizzo (load/store) o valore immediato (op. aritmetiche) target address: indirizzo target di un istruzione di jump 5 bits 5 bits 6 bits bits 11 6 Arch. Elab. - S. Orlando 6 Esempi add $8, $17, $18 Formato istruzione: 11 11 1 1 op rs rt rd shamt funct lw $1, 1($2) Formato istruzione: 35 2 1 1 op rs rt bit offset Arch. Elab. - S. Orlando 8

Passi di progetto 1. Analizza il set di istruzioni => verifica i requisiti del datapath il datapath deve includere gli elementi di memoria corrispondenti ai registri dell ISA tipicamente sono necessari altri registri, usati internamente o non referenziabili direttamente attraverso l ISA es.: PC (Program counter) analizza la semantica di ogni istruzione, data in termini di trasferimenti tra registri, ed eventuali operazioni tra i registri l datapath deve fornire i cammini per permettere tutti i register transfers necessari, e gli accessi alla memoria 2. Seleziona i vari componenti del datapath e stabilisci la metodologia di clocking 3. Assembla il datapath in accordo ai requisiti, aggiungendo i segnali di controllo 4. Analizza l implementazione di ogni istruzione per determinare il setting dei segnali di controllo che provocano i vari register transfer 5. Assembla la logica di controllo in accordo al punto 4. Arch. Elab. - S. Orlando 9 RTL dettagliato delle varie istruzioni Usiamo RTL (ister-transfer Language), un linguaggio per esprimere i trasferimenti tra registri, usato per definire esattamente la semantica di ogni istruzione Ricordiamo che BEQ adotta un indirizzamento di tipo PC-relative Per tutte le istruzioni, dobbiamo come prima cosa effettuare il fetch op rs rt rd shamt funct = M[ PC ] op rs rt Imm = M[ PC ] istruzioni ister Transfers ADD R[rd] < R[rs] + R[rt]; PC < PC + 4; SUB R[rd] < R[rs] R[rt]; PC < PC + 4; ADDi R[rt] < R[rs] + sign_ext(imm); PC < PC + 4; LOAD R[rt] < M[ R[rs] + sign_ext(imm)]; PC < PC + 4; STORE M[ R[rs] + sign_ext(imm) ] < R[rt]; PC < PC + 4; BEQ if ( R[rs] == R[rt] ) then PC < PC + 4 + (sign_ext(imm) << 2); else PC < PC + 4; Arch. Elab. - S. Orlando 11 Implementazione generica a singolo ciclo Proviamo a progettare una CPU in cui ogni istruzione viene eseguita all interno di un singolo ciclo di clock Dobbiamo accedere alla Memoria e al ister file, nel seguito indicati con M[x] : word all indirizzo x R[y] : registro identificato dall identificatore numerico y Implementazione generica di un istruzione: usa il registro Program Counter (PC), interno alla CPU, per fornire alla memoria l indirizzo dell istruzione leggi l istruzione dalla memoria (fetch) usa i campi dell istruzione per decidere esattamente cosa fare (decode) usa l ALU per l esecuzione (execute) add/sub/and/or/slt usano l ALU per le operazioni corrispondenti le istruzioni di lw/sw usano l ALU per calcolare gli indirizzi di memoria l istruzione di beq usa l ALU per controllare l uguaglianza di registri modifica il PC, e reitera il ciclo l ALU, il ister File, il PC dovranno quindi far parte del Datapath Anche se per comodità rappresenteremo la memoria assieme agli altri elementi del Datapath, essa non fa parte della CPU Arch. Elab. - S. Orlando 1 Visione astratta di una possibile implementazione Valore da memorizzare in un registro (Operazioni aritmetico/logiche, o di LOAD) istri potenzialmente letti/scritti durante lo stesso ciclo di clock Campi rs,rt,rd dell istr. letta (fetched) Incremento di PC? Estensione campi immediati? BEQ? Campo immediato dell istr. letta Dati da memorizzare (STORE) Dati letti (LOAD) Arch. Elab. - S. Orlando 12

Incremento del PC Addizionatore aggiuntivo necessario per realizzare, all interno dello stesso ciclo di clock il fetch dell istruzione l incremento del PC Non possiamo usare l ALU principale, perché questa è già utilizzata per eseguire le istruzioni stiamo implementando una CPU a singolo ciclo risorse replicate Nota che dalla memoria istruzioni viene letta una nuova istruzione ad ogni ciclo di clock Il segnale di MemRd deve essere sempre affermato Arch. Elab. - S. Orlando 13 Calcolo dell indirizzo di BRANCH Ulteriore addizionatore ancora risorse replicate Necessario per realizzare il calcolo dell indirizzo di salto dei branch PC < PC + 4 + (sign_ext(imm) << 2) Non possiamo usare l ALU, perché è già utilizzata per eseguire l operazione di confronto (sottrazione) Arch. Elab. - S. Orlando 15 Estensione del segno di operandi immediati I bit del campo immediato dell istruzione (es. istruzioni di LOAD/STORE) sono estesi di segno (b->32b) prima di essere sommati con il registro R[rs] l estensione del segno può servire anche per implementare addi L indirizzo così calcolato (R[rs] + sign_ext(imm)) viene usato per accedere alla Memoria Dati in lettura/scrittura M[ R[rs] + sign_ext(imm) ] Arch. Elab. - S. Orlando 14 Integrazione componenti tramite multiplexer Ingresso PC source condiviso tra address Beq (caso taken) e le altre istr. (PC=PC+4) Ingresso ALU secondo operando condiviso tra istr. R-type e I-type Ingresso Write data. File condiviso tra istr. di Load e altre istr. aritmetico/logico Risorse replicate (anche memoria) per permettere l esecuzione una qualsiasi istr. durante lo stesso ciclodi clock Arch. Elab. - S. Orlando

Aggiunta multiplexer ingresso ister file Ingresso Write register condiviso tra load e istr. Aritmetiche (rs vs. rt) rs: instr[25-] rt: instr[2-] rd: instr[15-11] LOAD: R[rt] < M[ R[rs] + sign_ext(imm)]; rt usato come target ADD: R[rd] < R[rs] + R[rt]; rd usato come target Arch. Elab. - S. Orlando 17 Controllo ALU Definiamo ora la tabella di verità che sulla base di ALUOp e funct determina i 3 bit del controllo dell ALU (OPERATION) ALUOp Funct field Operation ALUOp1 ALUOp F5 F4 F3 F2 F1 F X X X X X X 1 1 X X X X X X 11 1 X X X 1 1 X X X 1 11 1 X X X 1 1 X X X 1 1 1 1 X X X 1 1 111 lw/sw (somma) beq (sottrazione) add (somma) sub (sottrazione) and (and) or (or) stl (sottr. + stl) A partire dalla tabella di sopra possiamo definire il circuito ALUControl per il calcolo di Operation Arch. Elab. - S. Orlando 19 Controllo ALU Dobbiamo definire il circuito di controllo per calcolare i 3-bit di controllo dell ALU (Operation) da assegnare come segue in base al tipo di istruzione, ovvero ai campi op e funct dell istruzione: operazione di and 1 operazione di or 1 operazione di sum, lw, sw 11 operazione di sub e beq 111 operazione di stl il circuito sarà a 2 livelli: Il 1 o livello calcolerà ALUOp= (ALUOp 1 ALUOp ) in base all op code + Il 2 o livello calcolerà effettivamente Operation in base al campo funct e a ALUOp Il circuito di 1 o livello dovrà semplicemente definire la configurazione dei bit (ALUOp 1 ALUOp ) sulla base di op: se lw, sw (Operation=1) 1 se beq (Operation=11) 1 se arithmetic/logic (Operation dipende dalla specifica istruzione -> vedi campo funct) Arch. Elab. - S. Orlando 18 Datapath completo con Memoria e Controllo Instruction Dst ALUSrc Memto- Write Mem Read Mem Write Branch ALUOp1 ALUp R-format 1 1 1 lw 1 1 1 1 sw X 1 X 1 beq X X 1 1 Arch. Elab. - S. Orlando 2

Componenti CPU (Datapath+Control) e Memoria Instruction <5:> Inst Memory CPU <:> Datapath esteso per l esecuzione delle jump JUMP addr op Imm = M[ PC ]; PC < (PC + 4)[-28] (Imm << 2); Addr MUX aggiuntivo, con relativo segnale di controllo Jump Funct Arch. Elab. - S. Orlando Op CONTROL Zero PCSrc= Branch Zero Operation= f(aluop, Funct) rs, rt, rd, imm Dst ALUSrc Memto MemWr MemRd Wr DATA PATH Controllo a singolo ciclo Controllo per la realizzazione a singolo ciclo è molto semplice definito da una coppia di tabelle di verità circuito combinatorio (non sequenziale!!) PCSrc Addr Data Memory Arch. Elab. - S. Orlando 22 Controllo a singolo ciclo Il controllo della CPU a singolo ciclo è combinatorio Il datapath è invece un circuito sequenziale i suoi output dipendono anche dal valore dei registri es. Zero, oppure l indirizzo della memoria dati, oppure il valore da immagazzinare in memoria in conseguenza di una store, dipendono dai valori dello stato interno del Datapath (ovvero dal contenuto dei registri) Dobbiamo attendere che tutti i circuiti siano stabili, sia quelli del datapath che quelli del controllo, prima di attivare il fronte di salita/discesa del clock Clock in AND con i segnali di controllo di scrittura (registri/memoria) i valori vengono scritti solo se i segnali sono affermati Ciclo di clock determinato sulla base del cammino più lungo che i segnali elettrici devono attraversare es.: l istruzione lw è quella più costosa mem. istr. -. File (Read) - ALU e Adders - Mem. Dati -. File (Write) i circuiti del controllo agiscono in parallelo alla lettura dei registri Zero Controllo secondario che determina l ingresso dell ALU: Operation Controllo principale Arch. Elab. - S. Orlando 23 Arch. Elab. - S. Orlando 24

Determiniamo il ciclo di clock per LW Controllo Instr. Decode < 1 ns Datapath Mem. Istr. Mem. Dati Mem. Instr Read 1 ns ALU Mem. Dati Write 1 ns Ipotizziamo costi (in ns) per le varie componenti Mem. Istr/Dati:. File: 1 ns ALU: Control: < 1 ns Consideriamo l istruzione LW, che abbiamo detto essere la più costosa è l unica che usa sia il ister File in lettura/scrittura e sia la Memoria dati ciclo di clock lungo 8 ns Arch. Elab. - S. Orlando 25 Ciclo fisso vs. variabile Si consideri di conoscere che in un generico programma, le istruzioni sono combinate in accordo a questo mix 24% load 12% store 44% formato-r 18% branch 2% jump Qual è la lunghezza media (periodo medio) del ciclo di clock nell implementazione a ciclo variabile? Periodo medio = 8 24% + 7 12% + 6 44% + 5 18% + 2 12 %= 6.3 ns Le prestazioni della CPU sono calcolabili rispetto a NI (Numero Istruzioni eseguite da un programma): T var = NI periodo = NI 6.3 (variabile) T fisso = NI periodo = NI 8 (fisso) Facendo il rapporto: T fisso / T var = 8 / 6.3 = 1.27 (l implem. a clock variabile è l 1.27 più veloce! ) Se consideriamo istruzioni più complesse della lw, come le istruzioni FP di moltiplicazione, l implementazione a ciclo fisso risulta ulteriormente penalizzata vedi esempio libro Arch. Elab. - S. Orlando 27 Problemi con il singolo ciclo Ciclo singolo e di lunghezza fissa penalizza le istruzioni veloci Anche se complesso, si potrebbe realizzare una CPU a ciclo di clock variabile Quali i vantaggi? istruzioni diverse dalla lw eseguite in un tempo minore di 8 ns se il ciclo fosse fisso, sarebbero invece sempre necessari 8 ns Analizziamo quanto costa, in termini delle unità del Datapath usate, eseguire le varie istruzioni usando un ciclo di clock variabile Classe istr. Unità funzionali utilizzate ciclo Formato R Mem. Istr. (rd) ALU (wr) 6 ns Load Mem. Istr. (rd) ALU Mem. dati (wr) 8 ns Store Mem. Istr. (rd) ALU Mem. dati 7 ns Branch Mem. Istr. (rd) ALU 5 ns Jump Mem. Istr. 1 ns 1 ns Arch. Elab. - S. Orlando