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

Documenti analoghi
Progetto CPU (ciclo singolo) Salvatore Orlando

Architettura degli Elaboratori B Introduzione al corso

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

Richiami sull architettura del processore MIPS a 32 bit

Implementazione semplificata

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

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

Architettura di tipo registro-registro (load/store)

Elementi base per la realizzazione dell unità di calcolo

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

Architettura degli Elaboratori

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

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

Università degli Studi di Cassino

Controllo a ciclo singolo

CALCOLATORI ELETTRONICI 15 aprile 2014

Progetto CPU (multiciclo)

Problemi con progetto a singolo ciclo. Progetto CPU (multiciclo) Esempio di riduzione del ciclo di clock. Datapath multiciclo

Linguaggio Assembly e linguaggio macchina

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

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

La macchina programmata Instruction Set Architecture (1)

CALCOLATORI ELETTRONICI 29 giugno 2011

Linguaggio Assembly e linguaggio macchina

Calcolatori Elettronici

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

CALCOLATORI ELETTRONICI 31 marzo 2015

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

Il pipelining: tecniche di base

Tutorato Architettura degli elaboratori

Esercitazione sulle CPU pipeline

Architettura hardware

Calcolatori Elettronici

Cicli di clock e istruzioni

CALCOLATORI ELETTRONICI 29 giugno 2010

Esempio: aggiungere j

L unità di controllo di CPU multi-ciclo

Capitolo 5 Elementi architetturali di base

Progetto del processore e supporto del processore al SO (interruzioni eccezioni) Salvatore Orlando

Instruction Level Parallelism Salvatore Orlando

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

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

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

Calcolatori Elettronici

Calcolo durata ciclo. Prestazioni Singolo Ciclo. Prestazioni singolo ciclo. Durata Ciclo Variabile

CPU. Maurizio Palesi

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

Esercitazione su Instruction Level Parallelism Salvatore Orlando

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

ARCHITETTURA DI UN ELABORATORE

Università degli Studi di Cassino e del Lazio Meridionale

Componenti di un processore

Esercitazione su Instruction Level Parallelism

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

Componenti e connessioni. Capitolo 3

Calcolatori Elettronici A a.a. 2008/2009

ESERCIZIO 1 Riferimento: PROCESSORE PIPELINE e CAMPI REGISTRI INTER-STADIO

Il processore. Istituzionii di Informatica -- Rossano Gaeta

ESERCIZIO 1 Riferimento: PROCESSORE PIPELINE e CAMPI REGISTRI INTER-STADIO

Lecture 2: Prime Istruzioni

1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware.

Microelettronica Corso introduttivo di progettazione di sistemi embedded

HARDWARE 1.4a: (Processore)

Sottosistemi ed Architetture Memorie

Circuiti integrati. Circuiti combinatori ALU. Esempio di chip SSI. Circuiti combinatori

Architettura di un calcolatore e ciclo macchina. Appunti per la classe 3 Dinf

Architettura degli Elaboratori Modulo 2

Fasi (MIPS) Dove NPC è un registro temporaneo PC (program counter) è il registro IP (instruction pointer)

Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali

Arch. Elab. - S. Orlando 2. circuiti comunemente incontrati nel progetto di un computer. Con tecnologia MSI, gli IC contenevano alcuni componenti base

Elaborazione dell informazione

Architettura di una CPU

Il Processore: l unità di controllo

Laboratorio di Architettura degli Elaboratori

Architettura di un calcolatore

Unità Aritmetico-Logica

L unità di elaborazione e di controllo

Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).

Introduzione. Indice. Linguaggio macchina. Linguaggio assembler

Struttura del processore. Funzionamento del processore

Istruzioni assembler Istruzione N Registri

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO 13 Luglio 2004

Macchine Astratte. Luca Abeni. February 22, 2017

Addizionatori: metodo Carry-Lookahead. Costruzione di circuiti combinatori. Standard IEEE754

Architettura del processore. Modello di calcolatore. Caratteristiche del processore. Caratteristiche del processore. Fondamenti di Informatica

Il processore Pentium

Organizzata secondo il modello della macchina di von Neumann definita nei tardi anni 40 all Institute for Advanced Study di Princeton.

Corso di Informatica

Concetti di base delle Moderne architetture. Due concetti fondamentali. Due concetti fondamentali

Architettura dei sistemi di elaborazione: La CPU: Architettura (parte1)

Architettura degli Elaboratori

Le prestazioni di un calcolatore la CPU

Controllo con macchina a stati finiti

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

Calcolatori Elettronici A a.a. 2008/2009

Sistemi di numerazione

Architettura dei computer

Architetture Digitali

ARCHITETTURA DI UN ELABORATORE

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Transcript:

Processore: Datapath & Control Possiamo finalmente vedere il progetto di un processore MIPS-like semplificato Progetto CPU (ciclo singolo) 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 Salvatore Orlando Arch. Elab. - S. Orlando 1 Arch. Elab. - S. Orlando 2 Rivediamo i formati delle istruzioni ISA di un MIPS-lite Le istruzioni MIPS sono tutte lunghe 32 bits. I tre formati che considereremo: R-type 26 21 16 11 6 op rs rt rd shamt funct 5 bits 5 bits 6 bits I-type 26 21 16 J-type 26 op target address Campi: 6 bits 26 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 ADD e SUB add rd, rs, rt sub rd, rs, rt ADD Immediate: addi rt, rs, imm16 LOAD and STORE Word lw rt, imm16 (rs) sw rt, imm16 (rs) BRANCH: beq rs, rt, imm16 26 21 16 11 6 op rs rt rd shamt funct 5 bits 5 bits 6 bits 26 21 26 21 26 21 16 16 16 Arch. Elab. - S. Orlando 3 Arch. Elab. - S. Orlando 4

Esempi Passi di progetto 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 16 bit offset 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 5 Arch. Elab. - S. Orlando 6 Implementazione generica a singolo ciclo RTL dettagliato delle varie istruzioni 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 Register 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 Register File, il PC dovranno quindi far parte del Datapath Anche se per comodità rappresenteremo la memoria assieme agli altri Usiamo RTL (Register-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 Imm16 = M[ PC ] istruzioni Register 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(imm16); PC < PC + 4; LOAD R[rt] < M[ R[rs] + sign_ext(imm16)]; PC < PC + 4; STORE M[ R[rs] + sign_ext(imm16) ] < R[rt]; PC < PC + 4; BEQ if ( R[rs] == R[rt] ) then PC < PC + 4 + (sign_ext(imm16) << 2); else PC < PC + 4; elementi del Datapath, essa non fa parte della CPU Arch. Elab. - S. Orlando 7 Arch. Elab. - S. Orlando 8

Visione astratta di una possibile implementazione Incremento del PC Valore da memorizzare in un registro (Operazioni aritmetico/logiche, o di LOAD) Registri potenzialmente letti/scritti durante lo stesso ciclo di clock 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 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 9 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 1 Estensione del segno di operandi immediati 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(imm16) << 2) Non possiamo usare l ALU, perché è già utilizzata per eseguire l operazione di confronto (sottrazione) I 16 bit del campo immediato dell istruzione (es. istruzioni di LOAD/STORE) sono estesi di segno (16b->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(imm16)) viene usato per accedere alla Memoria Dati in lettura/scrittura M[ R[rs] + sign_ext(imm16) ] Arch. Elab. - S. Orlando 11 Arch. Elab. - S. Orlando 12

Integrazione componenti tramite multiplexer Aggiunta multiplexer ingresso Register file 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 Reg. File condiviso tra istr. di Load e altre istr. aritmetico/logico Risorse replicate (anche memoria) per permettere l esecuzione di una qualsiasi istruzione durante lo stesso ciclodi clock Arch. Elab. - S. Orlando 13 Ingresso Write register condiviso tra load e istr. Aritmetiche (rs vs. rt) rs: instr[25-21] rt: instr[2-16] rd: instr[15-11] LOAD: R[rt] < M[ R[rs] + sign_ext(imm16)]; rt usato come target ADD: R[rd] < R[rs] + R[rt]; rd usato come target Arch. Elab. - S. Orlando 14 Controllo ALU 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) 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 15 Arch. Elab. - S. Orlando 16

Datapath completo con Memoria e Controllo Datapath esteso per l esecuzione delle jump Instruction RegDst ALUSrc Memto- Reg Reg Mem Mem Write Read 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 17 JUMP addr op Imm26 = M[ PC ]; PC < (PC + 4)[-28] (Imm26 << 2); MUX aggiuntivo, con relativo segnale di controllo Jump Arch. Elab. - S. Orlando 18 Componenti CPU (Datapath+Control) e Memoria Controllo a singolo ciclo Inst Memory Addr rs, rt, rd, imm Instruction <:26> Op <5:> Funct CPU CONTROL Operation= f(aluop, Funct) PCSrc= Branch Zero RegDst ALUSrc MemtoReg MemWr MemRd RegWr Zero Controllo per la realizzazione a singolo ciclo è molto semplice definito da una coppia di tabelle di verità circuito combinatorio (non sequenziale!!) Zero PCSrc DATA PATH Addr Data Memory Controllo principale Controllo secondario che determina l ingresso dell ALU: Operation Arch. Elab. - S. Orlando 19 Arch. Elab. - S. Orlando 2

Controllo a singolo ciclo Determiniamo il ciclo di clock per LW 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. - Reg. File (Read) - ALU e Adders - Mem. Dati - Reg. File (Write) i circuiti del controllo agiscono in parallelo alla lettura dei registri Arch. Elab. - S. Orlando 21 Controllo Datapath Mem. Istr. Mem. Dati Mem. Instr Instr. Decode < 1 ns Reg Read 1 ns ALU Mem. Dati Ipotizziamo costi (in ns) per le varie componenti Mem. Istr/Dati: Reg. File: 1 ns ALU: Control: < 1 ns Consideriamo l istruzione LW, che abbiamo detto essere la più costosa è l unica che usa sia il Register File in lettura/scrittura e sia la Memoria dati ciclo di clock lungo 8 ns Reg Write 1 ns Arch. Elab. - S. Orlando 22 Problemi con il singolo ciclo Ciclo fisso vs. variabile 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 Formato R Mem. Istr. Reg (rd) ALU Reg (wr) Load Mem. Istr. Reg (rd) ALU Mem. dati Reg (wr) Store Mem. Istr. Reg (rd) ALU Mem. dati Branch Mem. Istr. Reg (rd) ALU Jump Mem. Istr. 1 ns 1 ns ciclo 6 ns 8 ns 7 ns 5 ns Arch. Elab. - S. Orlando 23 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 24