Microelettronica. Organizzazione hardware del processore ARM. Stefano Salvatori. Università degli Studi Roma Tre.

Documenti analoghi
Microelettronica Corso introduttivo di progettazione di sistemi embedded

Implementazione semplificata

Richiami sull architettura del processore MIPS a 32 bit

Capitolo 5 Elementi architetturali di base

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

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

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

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

Sommario. Premessa Architettura ARM Programmer's model (ARM7) Sistemi di sviluppo. S. Salvatori - Microelettronica aprile 2016 (13 di 45)

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Architettura dei calcolatori

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

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

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

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

Sistemi di numerazione

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

ARCHITETTURA DI UN ELABORATORE

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

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

Progetto CPU (ciclo singolo) Salvatore Orlando

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

Componenti di un processore

Struttura del calcolatore

Architettura di tipo registro-registro (load/store)

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

In realtà, non un solo microprocessore, ma un intera famiglia, dalle CPU più semplici con una sola pipeline a CPU molto complesse per applicazioni ad

Le operazioni. di somma. e sottrazione

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

Calcolatori Elettronici

Architettura di una CPU

CPU. Maurizio Palesi

Corso di Informatica

Architettura dei calcolatori

Architettura hardware

Architetture aritmetiche

Linguaggio Assembly e linguaggio macchina

Il Sottosistema di Memoria

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

I registri A, B, T contengono dati su cui è possibile eseguire operazioni elementari da parte dell ALU;

Cicli di clock e istruzioni

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

Architettura dei calcolatori. Architettura dei calcolatori. Cos'è un computer?

Pipeline nel Mondo Reale

(a) INTRODUZIONE ALLE ARCHITETTURE E ALLA SIMULAZIONE VERILOG DI PROCESSORI

Il Sottosistema di Memoria

L architettura di riferimento

Il processore N.12. Vediamo come è strutturato un microprocessore e con quale sequenza esegue le istruzioni dettate da un programma assembler.

Instruction Level Parallelism Salvatore Orlando

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

Informatica: Lez. 1. Andrea Payaro. (European Logistics Association)

Architettura dei computer

Architettura di un processore basato su registri generali.

Un circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati e collegati

L ARCHITETTURA DEI CALCOLATORI. Il processore La memoria centrale La memoria di massa Le periferiche di I/O

Macchina di von Neumann

ARCHITETTURA DI UN ELABORATORE

Struttura del processore. Funzionamento del processore

Lezione4: MIPS e Istruzioni (1 Parte)

La memoria - tecnologie

Pipeline Problemi 1. Pipeline Problemi 2

Esercitazione su Instruction Level Parallelism

Architettura del calcolatore

Calcolo numerico e programmazione Architettura dei calcolatori

Lez. 4 L hardware. Prof. Pasquale De Michele Gruppo 2

static dynamic random access memory

Abilità Informa/che. capitolo 3. Prof. Fabio Calefato a.a Giurisprudenza

Elementi base per la realizzazione dell unità di calcolo

Laboratorio di Architettura degli Elaboratori

Blocchi di più parole

La memoria - tecnologie

ARM PROCESSORS FAMILY

La macchina programmata Instruction Set Architecture (1)

Corso di Calcolatori Elettronici I A.A Il processore Lezione 18

Università degli Studi di Cassino e del Lazio Meridionale

Architettura di un calcolatore: introduzione

Esempio: aggiungere j

Elementi di Architettura

Dispensa di Informatica I.3

La macchina di Von Neumann. Architettura di un computer. Central Processing Unit (CPU) Elementi base MEMORIA CENTRALE PERIFERICHE SR PC A B INTR

I bistabili ed il register file

Lezione 1: L hardware

NOZIONI BASE DEL PROCESSORE (CPU)

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

Lezione 3: Architettura del calcolatore

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

Università degli Studi di Cassino e del Lazio Meridionale

CALCOLATORI ELETTRONICI

Fondamenti Teorici. Antonio Pescapè e Marcello Esposito Parte Seconda v2.0

Esercitazione su Instruction Level Parallelism Salvatore Orlando

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

Esercizio 1.A Aritmetica binaria (nel presentare le soluzione mostrare, almeno nei passaggi piú significativi, i calcoli eseguiti) (3 punti)

IL DSP - Digital Signal Processor

Calcolatori Elettronici A a.a. 2008/2009

Architettura del calcolatore

Gli attori principali di un architettura

Microelettronica. Architettura del processore ARM. Stefano Salvatori. Università degli Studi Roma Tre. Microelettronica

Firmware Division & Floating pointer adder

Il Modello di von Neumann (2) Prevede 3 entità logiche:

Lezione 7 Sommatori e Moltiplicatori

Transcript:

Microelettronica Organizzazione hardware del processore ARM Stefano Salvatori (stefano.salvatori@uniroma3.it) Microelettronica 2016

Pipeline a 3 stadi Pipeline a 5 stadi Sommario Esecuzione delle istruzioni (datapath) Note design ARM Clock a due fasi e timing ALU Barrel shifter Moltiplicatore Banco dei registri Layout Control Interfacciamento verso un coprocessore Microelettronica 2016 Stefano Salvatori 2/52

Introduzione L organizzazione dell ARM è cambiata poco rispetto al primo progetto degli anni 90; con la tecnologia, da 3 um (ARM1) a 0.3 um (ARM7), sono migliorate le prestazioni mentre gli schemi di base sono rimasti gli stessi; Il successivo progresso (ARM9) ha previsto un cambio dell'architettura: pipeline a 5 stadi memoria dati e memoria programma separate (architettura Harward) Microelettronica 2016 Stefano Salvatori 3/52

Organizzazione per pipeline a 3-stadi Microelettronica 2016 Stefano Salvatori 4/52

Registri: 2 uscite 1 ingresso 2 linee dedicate per il PC Barrel-shifter ALU Organizzazione per pipeline a 3 stadi Address register + incrementer data registers 2 operandi per l'alu Decoder istruzioni + logica di controllo A L U b u s A[31:0] address register P C A b u s register bank ALU incrementer multiply register barrel shifter PC B b u s control instruction decode & control data out register data in register D[31:0] Microelettronica 2016 Stefano Salvatori 5/52

Pipeline a 3 stadi Fetch. L istruzione è prelevata dalla memoria e posta nella linea di pipeline dell istruzione. Decode. L istruzione occupa il blocco di decodifica (ma non il datapath): l istruzione è decodificata e sono preparati i segnali di datapath per il prossimo ciclo di clock. Execute. L istruzione occupa il datapath: sono letti gli operandi (registri), si ha lo shift, è svolta l operazione ALU e il risultato è scritto nel banco dei registri. 1 fetch decode execute 2 fetch decode execute 3 instruction fetch decode execute time Microelettronica 2016 Stefano Salvatori 6/52

Pipeline a 3 stadi L'hardware è diviso in sezioni. Ciascuna sezione è impegnata in ogni ciclo di clock 1 2 3 instruction fetch decode execute fetch decode execute fetch decode execute time In ogni periodo è impegnata una differente sezione hardware; Per istruzioni di data-processing occorrono tre colpi di clock; Con la pipeline si ha l esecuzione di una istruzione per ciclo di clock e periodo di latenza pari a 3. throughput Microelettronica 2016 Stefano Salvatori 7/52

Esecuzione di un'istruzione a più cicli L esecuzione è meno regolare; Nell esempio: ADD seguita da STR: 1 fetch ADD decode execute 2 fetch STR decode calc. addr. data xfer 3 fetch ADD decode execute 4 fetch ADD decode execute 5 fetch ADD decode execute instruction time acc. mem decode datapath Microelettronica 2016 Stefano Salvatori 8/52

Program counter Il program counter PC (= r15 di uso generale) deve contenere un valore che consenta di caricare le istruzioni successive; In pratica, il PC punta 8 byte (2 istruzioni) oltre l istruzione corrente; Questo è di fondamentale importanza nel caso di salti relativi alla posizione attuale (è comunque il compilatore a calcolare l offset del salto) Per altri usi del PC, letto come r15, il programmatore deve svolgere un'attenta analisi Microelettronica 2016 Stefano Salvatori 9/52

Esempi di esecuzione di istruzioni per l'arm7 Microelettronica 2016 Stefano Salvatori 10/52

Data processing tra due registri 2 operandi provenienti da due registri Il secondo operando è passato per il barrel-shifter I due giungono alla ALU Il risultato giunge al banco di registri address register increment Rd PC registers Rn Rm mult as ins. operazione tra 2 registri datapath: as instruction Il PC è incrementato e l'istruzione successiva caricata in i.pipe data out data in i. pipe (a) register - register operations Microelettronica 2016 Stefano Salvatori 11/52

Data processing tra un reg. e un immediato 2 operandi: contenuto di un registro e un immediato (1 byte) Il secondo operando è passato per il barrel-shifter I due giungono alla ALU Il risultato giunge al banco di registri operazione tra registro e immediato datapath: Il PC è incrementato e l'istruzione successiva caricata in i.pipe address register Rd registers Rn increment mult PC as ins. as instruction [7:0] data out data in i. pipe (b) register - immediate operation Microelettronica 2016 Stefano Salvatori 12/52

Una istruzione di load/store calcola l indirizzo di memoria nello stesso modo con cui una istruzione di data-processing tratta gli operandi; Data transfer (store) 1 base address register registers Rn increment mult PC lsl #0 calcolo di PC (fine 1 ciclo) offset datapath: Primo ciclo = A / A + B / A - B [11:0] data out data in i. pipe (a) 1st cycle - compute addr ess Microelettronica 2016 Stefano Salvatori 13/52

Data transfer (store) 2 auto-indexing address register increment uscirà PC (fine 2 ciclo) datapath: secondo ciclo Rn PC registers Rd mult shifter Se riguarda 1 byte: Il valore è replicato 4 volte = A + B / A - B byte? data in i. pipe Nel caso di LOAD in un 3 ciclo si ha il trasferimento da data in nel registro (b) 2nd cycle - store data & auto-index Microelettronica 2016 Stefano Salvatori 14/52

In una istruzione di salto, nel 1 ciclo si calcola l'indirizzo L'offset (immediato a 24 bit) subisce lo shift di 2 bit allineamento con word e aggiunto a PC datapath: Primo ciclo Salti address register increment registers PC mult lsl #2 = A + B [23:0] data out data in i. pipe (a) 1st cycle - compute branch tar get Microelettronica 2016 Stefano Salvatori 15/52

Salti Nel caso di branch with link il PC è copiato in r14 address register increment datapath: secondo ciclo Nel 3 ciclo (pipeline refill) il valore è aggiustato: invece di PC+8 serve PC+4 (istruzione successiva al branch) R14 registers PC mult shifter = A data out data in i. pipe (b) 2nd cycle - save return address Microelettronica 2016 Stefano Salvatori 16/52

Organizzazione nel caso di pipeline a 5-stadi Microelettronica 2016 Stefano Salvatori 17/52

Aumentare il numero di slot La soluzione a 3-stadi è molto efficace ed adottata fino all ARM7; Per sistemi con migliori prestazioni dobbiamo ricercare soluzioni più efficienti: T progr N istr f CPI clk n medio di cicli di clock per istruzione Per diminuire il tempo complessivo di esecuzione di un programma: aumentare f CLK diminuire CPI numero maggiore di stadi per la pipeline Microelettronica 2016 Stefano Salvatori 18/52

Organizzazione per pipeline a 5 stadi Aumentare f CLK semplificare la logica di ogni stadio della pipeline aumentare il numero di stadi della pipeline Diminuire CPI le istruzioni devono essere riconfigurate in modo che diminuisca il numero di slot che esse occupano nella pipeline ridurre gli stalli dovuti ad istruzioni che siano interdipendenti Microelettronica 2016 Stefano Salvatori 19/52

Il collo di bottiglia Il modello di Von Neumann limita la possibilità di ridurre CPI a causa dell accesso alla memoria; Il sistema di memoria dovrebbe consentire di acquisire maggiori informazioni/ciclo (>32 bit) oppure: separare la memoria di programma da quella dei dati Microelettronica 2016 Stefano Salvatori 20/52

Pipeline a 5 stadi (ARM9TDMI) instruction fetch r. read decode shift/alu data memory access reg write mem Fetch Decode Execute buffer/data Write I processori ARM con pipeline a 5-stadi: fetch: l istr. è prelevata e depositata nella pipeline; decode: l istr. è decodificata e gli operandi prelevati dai registri; execute: shift dell operando e risultato dell ALU. Se l istr. è un load/store, con l ALU si calcola l indirizzo di memoria; buffer/data: eventuale accesso alla memoria, altrimenti il risultato dell ALU è posto in un buffer per mantenere lo stesso flusso della pipeline per tutte le istruzioni; write back: il risultato è caricato in un registro (incluso il load da memoria). Microelettronica 2016 Stefano Salvatori 21/52

Registri: 3 porte di lettura e 2 di scrittura (*) Memorie separate: I-cache: per istruzioni D-cache: per i dati Incr. per LDM e STM Data-forwarding: i risultati sono passati tra gli stadi appena sono disponibili ARM9TDMI (*) Normalmente nei RISC: 2 per lettura e 1 per scrittura. Microelettronica 2016 Stefano Salvatori 22/52

Data forwarding Nella pipeline a 5 stadi il ciclo di esecuzione è praticamente spezzato in 3 slot; Se un'istruzione ha bisogno del dato prodotto dall'istruzione precedente si ha dipendenza; Lo stallo si avrebbe se il dato fosse richiesto prima che il risultato venga trasferito nel registro di destinazione Nell'ARM9TDMI sono inseriti percorsi per i dati che presentano il risultato appena disponibile: data forwarding Microelettronica 2016 Stefano Salvatori 23/52

Stallo inevitabile Nella seguente sequenza: LDR r3, [..] ADD r1, r2, r3 il dato in r3 è disponibile dalla prima istruzione solo nel penultimo ciclo buffer/data mentre la seconda la richiede nel ciclo di esecuzione instruction fetch r. read decode shift/alu data memory access reg write Fetch Decode Execute Memory Write Il compilatore deve evitare di porre in sequenza questo tipo di istruzioni Microelettronica 2016 Stefano Salvatori 24/52

Compatibilità Per ARM con pipeline a 3 stadi il PC punta 8 byte (2 istruzioni) oltre l istruzione corrente; Con la pipeline a 5 stadi gli operandi sono letti un ciclo prima rispetto a quella a tre stadi: PC+4 anziché PC+8; Per avere compatibilità gli ARM con pipeline a 5 stadi emulano quelli a 3 stadi L'incrementer di PC bypassa il registro di pipeline tra fetch e decode PC+4 per l'istruzione attuale = PC+8 per l'istruzione successiva. Microelettronica 2016 Stefano Salvatori 25/52

Alcune soluzioni nell'architettura dell'arm Microelettronica 2016 Stefano Salvatori 26/52

Segnale di clock Datapath RTL Control FSM Sono utilizzati latch in luogo di flip-flop sensibili ai livelli e non ai fronti del clock È necessario un clock a due fasi Φ1 phase 1 Φ2 phase 2 1 clock cycle Le due fasi sono derivate da un unico segnale di clock in ingresso (PLL) dato Φ1 Φ2 Microelettronica 2016 Stefano Salvatori 27/52

phase 1 Ciclo datapath ALU operands latched register read time shift time read bus valid shift out valid phase 2 precharge invalidates buses register write time ALU time ALU out I bus sono dinamici (precaricati: anche se manca il clock lo stato è mantenuto) Ciclo = lett.reg + shift + ALU + scritt.reg + sep.fasi Microelettronica 2016 Stefano Salvatori 28/52

Adder nel primo prototipo ARM Ripple-carry adder (32 stadi) ARM1 : Cout OAI A B AOI sum Cin Microelettronica 2016 Stefano Salvatori 29/52

Adder in ARM2 4-bit Carry look ahead (8 stadi) ARM2 Cout[3] OAI A[3:0] B[3:0] G P 4-bit adder logic sum[3:0] AOI Cin[0] Microelettronica 2016 Stefano Salvatori 30/52

ALU per l 'ARM2 Logica per il risultato (1 bit) fs: NB bus 5 0 1 2 3 carry logic G 4 NA bus P ALU bus Microelettronica 2016 Stefano Salvatori 31/52

Funzioni della ALU per l 'ARM2 fs5 fs4 fs3 fs2 fs1 fs0 ALU output 0 0 0 1 0 0 A and B 0 0 1 0 0 0 A and not B 0 0 1 0 0 1 A xor B 0 1 1 0 0 1 A plus not B plus carry 0 1 0 1 1 0 A plus B plus carry 1 1 0 1 1 0 not A plus B plus carry 0 0 0 0 0 0 A 0 0 0 0 0 1 A or B 0 0 0 1 0 1 B 0 0 1 0 1 0 not B 0 0 1 1 0 0 zero Microelettronica 2016 Stefano Salvatori 32/52

Carry-select adder per l'arm6 a,b[3:0] a,b[31:28] + +, +1 c s s+1 +, +1 mux mux mux sum[3:0] sum[7:4] sum[15:8] sum[31:16] Microelettronica 2016 Stefano Salvatori 33/52

Organizzazione ALU per l'arm6 A operand latch B operand latch invert A XOR gates XOR gates invert B function logic functions adder C in C V logic/arithmetic result mux zero detect N Z result Microelettronica 2016 Stefano Salvatori 34/52

Carry arbitration encoding per ARM9 A B C u v 0 0 0 0 0 0 1 unknown 1 0 1 0 unknown 1 0 1 1 1 1 1 Microelettronica 2016 Stefano Salvatori 35/52

Barrel shifter In molti processori shifter e ALU lavorano in parallelo -> Il ritardo dello shifter non è critico Poiché nell'arm i due lavorano in serie, lo shifter deve introdurre il minimo ritardo possibile -> matrice (32x32) right 3 right 2 right 1 no shift in[3] in[2] in[1] left 1 left 2 left 3 Con bus precaricato a V DD bastano NMOS in[0] out[0] out[1] out[2] out[3] Una logica separata gestisce il riempimento (shift logico o aritmetico) Microelettronica 2016 Stefano Salvatori 36/52

Moltiplicatore Esempio: moltiplicazione tra due numeri 8 bit moltiplicando moltiplicatore 10110110 x 11000110 = 00000000 + 10110110 + 10110110 + 00000000 + 00000000 + 00000000 + 10110110 + 10110110 = È come la moltiplicazione a più cifre in decimale: devo usare il moltiplicatore cifra per cifra Ogni volta che il bit del moltiplicatore è '1' devo addizionare il moltiplicando spostato di un numero di bit pari al peso della cifra del moltiplicatore che sto utilizzando 1000110011000100 Microelettronica 2016 Stefano Salvatori 37/52

Moltiplicatore Esempio: moltiplicazione tra due numeri 8 bit moltiplicando moltiplicatore 10110110 x 11000110 = 00000000 + 10110110 + 10110110 + 00000000 + 00000000 + 00000000 + 10110110 + 10110110 = 1000110011000100 Il risultato della moltiplicazione tra due numeri a n bit sarà in numero a 2xn bit Se uso la ALU Per fare questa operazione, serviranno n colpi di clock per giungere al risultato e uso la ALU per fare un'addizione con accumulo R ALU M shift Microelettronica 2016 Stefano Salvatori 38/52

Addizione con accumulo Moltiplicatore moltiplicando moltiplicatore 10110110 x 11000110 = 00000000 + 10110110 + 10110110 + 00000000 + 00000000 + 00000000 + 10110110 + 10110110 = 1000110011000100 Registro per l'accumulo Moltiplicando M R shift ALU Shift se la cifra è '1', altrimenti addiziono zero Microelettronica 2016 Stefano Salvatori 39/52

Moltiplicatore Tutti i processori ARM, tranne il primo prototipo, includono un moltiplicatore; Il risultato è a 32 bit; Vi è la moltiplicazione con accumulo; Negli ARM più recenti l'hardware del moltiplicatore è avanzato e fornisce il risultato a 64 bit (anche con accumulo) Microelettronica 2016 Stefano Salvatori 40/52

Moltiplicatore La moltiplicazione tra numeri a 32 bit prevede 32 periodi di clock per essere eseguita. Per dimezzare il tempo di calcolo del moltiplicatore con la tecnica di addizione con accumulo si possono considerare cifre a 2 bit per il moltiplicatore: x2 è un semplice shift di un bit a sinistra Bisogna moltiplicare x3 moltiplicando moltiplicatore 10110110 x 11000110 = 101101100 + 10110110 + 00000000 + 1000100010 = 1000110011000100 11000110 Microelettronica 2016 Stefano Salvatori 41/52 3 0 1 2 Il moltiplicatore a 2 bit deve essere in grado di svolgere l'operazione 'x3', più complessa delle x1, x2 e, ovviamente, x0 Nota: il moltiplicatore di ARM7 (1990) richiede 8 colpi di clock. In molti Cortex, oggi, si hanno anche moltiplicatori a singolo periodo di clock per presentare il risultato a 64 bit.

Moltiplicatore L'operazione x3 complica l'hardware moltiplicando moltiplicatore 10110110 x 11000110 = 101101100 + 10110110 + 00000000 + 1000100010 = 1000110011000100 11000110 3 0 1 2 Però: x3 = x4 1 x4 sarebbe uno shift di 2 bit a sinistra ma equivale ad addizionare una volta di più il moltiplicando nella moltiplicazione della cifra successiva. In questo modo non serve il moltiplicatore che sappia eseguire x3 ma basta una ALU che sappia fare l'addizione e la sottrazione e uno shifter Microelettronica 2016 Stefano Salvatori 42/52

M Moltiplicatore: 2 bit R shift x4 ALU p.es.: x3 = -1 x4 x2 = -2 X4! Carry-in Multiplier Shift ALU Carry-out 0 x 0 LSL #2N A + 0 0 x 1 LSL #2N A + B 0 x 2 LSL #(2N + 1) A B 1 x 3 LSL #2N A B 1 1 x 0 LSL #2N A + B 0 x 1 LSL #(2N + 1) A + B 0 x 2 LSL #2N A B 1 x 3 LSL #2N A + 0 1 Microelettronica 2016 Stefano Salvatori 43/52

R M shift Moltiplicatore: 2 bit x4 ALU p.es.: x3 = -1 x4 x2 = -2 X4! Carry-in Multiplier Shift ALU Carry-out 0 x 0 LSL #2N A + 0 0 x 1 LSL #2N A + B 0 x 2 LSL #(2N + 1) A B 1 x 3 LSL #2N A B 1 1 x 0 LSL #2N A + B 0 x 1 LSL #(2N + 1) A + B 0 x 2 LSL #2N A B 1 x 3 LSL #2N A + 0 1 Quindi: LSL #2N: shift di 2N bit per il calcolo della addizione parziale della cifra N-sima; LSL #(2N + 1): shift di 2N bit per il calcolo della addizione parziale della cifra N-sima e di un ulteriore bit per fare x2; Carry-out =1: alla prossima cifra viene aggiunta una unità alla cifra del moltiplicatore, cioè si ha x4 rispetto alla cifra precedente Moltiplicare per 3 significa moltiplicare per 4 e sottrarre il moltiplicando all'accumulo. Moltiplicare per 4 significa considerare una unità in più nella moltiplicazione relativa alla cifra successiva a 2 bit (due bit dopo abbiamo un peso 4 volte maggiore di quello attuale) Microelettronica 2016 Stefano Salvatori 44/52

Banco di registri 32 registri general purpose x 32 bit -> 1 kbit L'occupazione di silicio è limitata grazie alla regolarità della struttura Comunque, la cella deve essere molto compatta: ALU bus A bus B bus write read A read B Con bus precaricato a V DD bastano NMOS Nel caso di V DD basse si ricorre a porte di trasmissione CMOS (NMOS+PMOS) Microelettronica 2016 Stefano Salvatori 45/52

Struttura del banco di registri PC: 2 linee write 3 linee read più largo Vdd Vss ALU bus A bus read decoders B bus read decoders write decoders ALU bus PC bus PC register cells A bus INC bus B bus Microelettronica 2016 Stefano Salvatori 46/52

Datapath layout Pitch costante per bit <- ALU address register PC Ad inc A B incrementer register bank multiplier shift out W ALU shifter instruction Din data in instruction pipe data out Microelettronica 2016 Stefano Salvatori 47/52

Blocco principale di decodifica istr. Logica di controllo instruction FSM unità di controllo decentralizzate coprocessor decode PLA cycle count multiply control load/store multiple address control register control ALU control shifter control unità di controllo secondarie Microelettronica 2016 Stefano Salvatori 48/52

Coprocessori ARM ARM supporta l'estensione del suo set di istruzioni a livello hardware coprocessore o software (emulazione) Caratteristiche salienti: Fino a 16 coprocessori Ogni copr. può avere 16 registri propri (anche di dimensione diversa rispetto ai 32 bit) L'arch. è di tipo load/store In genere lo scambio delle informazioni avviene con handshake Microelettronica 2016 Stefano Salvatori 49/52

Coprocessore per ARM7TDMI Bus watching: il copr. è connesso al bus ARM e copia le istruzioni che arrivano in una sua pipeline Handshake: CPI: ARM coprocessori l'arm ha identificato un'istruzione per un coproc. CPA: coprocessore ARM CoProcessor Absent CPB: coprocessore ARM CoProcessor Busy Microelettronica 2016 Stefano Salvatori 50/52

Note sulla realizzazione I primi processori ARM erano progettati partendo, al limite, da standard cell Il progetto era full custom -> cambiando la tecnologia era necessario ridisegnare l'intero chip L'alternativa soft prevede l'uso di HDL Oggi un core ARM è disponibile sia come macrocelle che come descrizione in VHDL Nel primo caso si ha un'ottimizzazione dell'uso del silicio ma un dispendio nel tempo di realizzazione Nel secondo, una adattabilità al processo tecnologico ma l'ottimizzazione dipende molto dal compilatore VHDL. Microelettronica 2016 Stefano Salvatori 51/52

Riferimenti S. Furber, ARM, system-on-chip architecture, 2 nd ed., cap. 4 Microelettronica 2016 Stefano Salvatori 52/52