Clocking Il segnale di Clock definisce quando i segnali possono essere letti e quando possono essere scritti Fronte di discesa (negativo) Architetture dei Calcolatori (Lettere A-I) Falling edge Tecnologie per la Memoria e Gerarchie di Memoria Periodo di clock Ing. Ing. Francesco Lo Presti Fronte di salita (positivo) Rising edge Freq. clock = 1/(Periodo di Clock) e.g., Periodo di 10 nsec ⇒ 100 MHz Periodo di 1 nsec ⇒ 1 GHz Opzioni per gli elementi di memoria Latch sensibili al livello Flip-Flop master-slave/edge-triggered Memoria Elementi di Memoria Elementi di Memoria Latch SetSet-reset R S 1 Q !Q Latch D sensibile al livello R S Q(t+1) !Q(t+1) 1 0 0 1 0 1 1 0 0 0 Q(t) !Q(t) 1 1 - - Problemi con i latch: corse critiche … Elemento di Memoria Logica Combinatoria Elementi di memoria usati compe input ed output nello stesso ciclo clock Q ❍ D ❍ clock !Q D ❍ Q ❍ Dipende dai tempi di propagazione dei diversi percorsi Il latch e’ e’ transparente quando il clock e’ e’ alto (l (l’ingresso e’ copiato in uscita) uscita) Memoria Ciclo deve durare abbastanza da permettere all’ all’uscita della rete combinatoria di stabilizzarsi Ma non troppo a lungo da permettere al nuovo valore di ripropagarsi attraverso la rete combinatoria Difficile garantire entrambe le condizioni 2 Memoria 3 Elementi di Memoria Periodo del Ciclo di Clock Soluzione: Soluzione: FlipFlip-Flops che cambiano lo stato (Q) solo sui fronti del segnale di clock (master(master-slave) D D D Q D D-latch clock clock Q Q !Q !Q D-latch !Q clock T clock Il periodo T deve essere scelto lungo abbastanza Q da garantire che l’output del circuito combinatorio sia stabilizzato Master (primo DD-latch) copia in Q l’ingresso quando il clock e’ e’ alto (lo slave (secondo (secondo D-latch) e’ e’ bloccato e non cambia stato ) Slave copia il valore del master quando il clock va a 0 (il master e’ e’ bloccato nel suo stato di memoria ed eventuali cambi all’ all’ingresso non vengono letti) letti) Vincolo sul ciclo di clock ❍ Il ciclo di clock deve durare abbastanza da rispettare il ritardo piu’ piu’ lungo possibile della rete combinatoria Memoria ❍ ❍ Deve esserlo prima del periodo di apertura di del flipflip-flop (set(set-up time) Deve rimanere stabile per un certo tempo (hold(hold-time) D Set-up time 4 Assunzioni Hold time Setup e hold time per un flip-flop D (clock sul fronte di discesa) Memoria C 5 Registro Metodologia edgeedge-triggered Comportamento tipico ❍ Leggere il contenuto di elementi di memoria ❍ I valori sono input di una o piu’ piu’ reti combinatorie ❍ Scrivere i risultati in uno o piu’ piu’ elementi di memoria Registro ❍ Simile ad un flip flop D eccetto N bit di ingresso e uscita Input Write ❍ State element 1 Combinational logic State element 2 one clock cycle D Q D-latch clock D1 Write: Write: Se negato (0): i dati in uscita (Data Out) non cambiano Se asserito (1): i dati in uscita (Data Out) divengono uguali ai dati in ingresso (Data In) clock D0 D Dn-1 D Q1 !Q Q D-latch clock Si assume che gli elementi di memoria sono scritti !Q Q D-latch clock Q0 Qn-1 !Q ad ogni ciclo di clock ❍ Altrimenti si aggiunge un esplicito segnale di write ❍ La scrittura avviene solo quando occorre la transizione di Memoria livello attiva ed il segnale di controllo e’ affermato In AND con il clock clock 6 Write Memoria 7 Banco di registri (2) Banco di registri (register file) Un banco di registri può essere implementato con un Banco di registri ad accesso rapido per multiplexer per ciascuna porta read, read, un decoder per ciascuna porta write ed un array di registri costruiti partendo da flipflipflop D Esempio: implementazione di due porte read per un banco di registri composto da n registri memorizzare temporaneamente gli operandi usati nelle istruzioni Nel MIPS il banco dei registri è composto da 32 registri generali ❍ Due porte in lettura da 32 bit ❍ Una porta in scrittura da 32 bit Read data 1/2 Read register number 1 Register 0 Write data ❍ Register 1 Tre porte per selezionare i registri da 5 bit Register n – 1 Read register #1 (#2) : primo (secondo (secondo)) registro da leggere Write register: registro da scrivere ❍ Read data 1 M u x Read data 2 Register n Read register number 2 Write: Write: segnale di controllo ❍ M u x In AND con il clock (non mostrato) Solo se Write=1 il valore in Write data e’ e’ scritto nel registro indicato da Write Reg. Memoria 8 Banco di registri (3) Memoria 9 Principali tecnologie per RAM Esempio: implementazione di una porta write per Le memorie RAM sono di due tipi un banco di registri composto da n registri ❍ ❍ Memorie statiche: statiche: Static Random Access Memory (SRAM) Memorie dinamiche: dinamiche: Dynamic Random Access Memory (DRAM) Memorie statiche ❍ Il singolo elemento corrisponde ad un latch/ latch/flipflip-flop Memorie dinamiche ❍ ❍ ❍ Il singolo elemento corrisponde ad un condensatore ed un transistor L’informazione è memorizzata sotto forma di carica del condensatore Richiedono un refresh periodico dell’ dell’informazione Le memorie statiche sono (rispetto a quelle dinamiche) ❍ ❍ ❍ ❍ Memoria 10 Più Più veloci (5ns vs. 5050-100ns) Più Più costose (6 transistor per bit) Persistenti (non è richiesto il refresh) refresh) Più Più affidabili Memoria 11 Memoria Principale, Cache e Tecnologie SRAM Realizzata con matrici di latch Prestazioni della memoria principale ❍ Latenza ❍ ❍ Altezza H (# celle indirizzabili) indirizzabili) Dinamica in quanto ha bisogno di essere rinfrescata periodicamente periodicamente (8 ms) ms) Indirizzi di memoria divisi in due parti (memoria come una matrice matrice 2D): ❍ Chip Select ❍ Output Enable ❍ Din ❍ Memoria Per Leggere Write Enable ❍ Struttura di una SRAM 4x2 Tecniche realizzative diverse Il buffer three-state è ❍ Chip Select, Output Enable, Address e Dout Memoria Realizzazione SRAM ❍ Chip Select, Write Enable, Address e Din 12 incorporato nei flip-flop che formano le celle di base di una SRAM (buffer controllato dal segnale Enable) Tutti i latch di una colonna sono collegati alla stessa linea di output Il decoder serve ad abilitare in lettura/scrittura una certa linea rispetto a quelle del register file Grandi Mux, Mux, Decoder non sono pratici Per evitare il Mux in uscita una linea condivisa i cui vari elementi di memoria sono tutti collegati Il collegamento alla linea avviene tramite un buffer a tre stati Un dispositivo a tre stati, in base ad un segnale di controllo, si comporta: (b) controllo=1: come circuito chiuso Dout 8 ❍ =1 per abilitare alla scrittura No refresh (6 transistor/bit vs. 1 transistor) Dimensione: DRAM/SRAM = 4-8 Costo/Tempo di Ciclo: SRAM/DRAM = 8-16 8 Per Scrivere =1 per abilitare l’uscita del chip su un bus condiviso SRAM SRAM 32K*8 Write Enable =1 per poter leggere e scrivere RAS o Row Access Strobe CAS o Column Access Strobe La memoria cache usa Chip Select Output Enable contemporaneamente Esempio Chip 32k*8 DRAM 15 Address Non e’ e’ possibile scrivere e leggere Banda La memoria principale è ❍ Larghezza W (# latch per cella) cella) Spesso piccolo W=1,4,8 Tempo di accesso: tempo tra quando arriva la richiesta e la parola Tempo di ciclo: tempo tra richieste ❍ ❍ Din[1] Write enable 13 Din[0] D D C latch Q Enable D D D C latch Q Enable D D D C latch Q Enable D D D D C latch Q Enable 0 2-to-4 decoder D C latch Q Enable 1 Address D C latch Q Enable 2 D C latch Q Enable D C latch Q Enable 3 Dout[1] Dout[0] (c) controllo=0: come circuito aperto Memoria 14 Memoria 15 Struttura di una SRAM 4Mx8 Memoria DRAM Per evitare grandi decoder si usa decodifica a due livelli DRAM sono meno costose, piu’ piu’ capienti, ma piu’ piu’ lente rispetto ❍ alle SRAM Decoder piu’ piu’ piccolo + batteria di mux ❍ 5-10 volte meno veloci Cella di memoria con un transistor+capacita’ transistor+capacita’ ❍ Il condensatore memorizza il contenuto della cella ed il transistor è usato per accedere alla cella (tramite Word Line) Word line e’ e’ attivato sulla base dell’ dell’indirizzo richiesto I condensatori mantengono i valori memorizzati per alcuni ms Necessario il refresh dinamico delle DRAM, effettuato leggendo, leggendo, e subito dopo riscrivendo i valori appena letti Es SRAM 4Mx8 (22 bit indirizzo) indirizzo) ❍ ❍ ❍ Suddiviso in 8 blocchi da 4Mbit (4Kx1024 bit) Parte alta indirizzo [21[21-10] seleziona la medesima riga da ogni blocco di 4Kx1024bit attraverso un decoder (12 a 4096) Parte bassa indirizzo [9[9-0] seleziona un singolo bit dei 1024 in output dai vari blocchi ❍ Memoria Il refresh avviene ad intervalli fissi, fissi, occupa il 2% del tempo, ed avviene per righe 16 Memoria DRAM: Decodifica su due livelli SSRAM e SDRAM DRAM usa un decoder a due livelli Synchronous SRAM e DRAM (SSRAM e SDRAM) ❍ ❍ ❍ ❍ ❍ Indirizzo di memoria (n bit) suddiviso in row address (n/2 bit) e column address (n/2 bit) Accesso di riga seguito da accesso di colonna Segnale di controllo RAS: Row Address Strobe Segnale di controllo CAS: Column Address Strobe Segnali inviati consecutivamente sugli stessi pin permettono di aumentare la banda di trasferimento ❍ ❍ Indirizzo 22 bit suddiviso in 11 bit per la riga e 11 bit per la colonna Accesso ottimizzato a bit di memoria consecutivi Tramite i column latches celle consecutive di memoria stanno sulla stessa riga Row address ❍ Row decoder 11-to-2048 Address[10–0] Possibilita’ Possibilita’ di specificare (tramite MMU) che si vuole trasferire dalla memoria un burst di dati Burst=sequenza Burst=sequenza di celle consecutive, specificato da un indirizzo di partenza ed dalla lunghezza Le celle sono contenute all’ all’interno di una stessa riga – Quindi nei column latches La memoria trasferisce una delle celle del burst sul bus dati ad ogni ciclo di clock Migliore Banda di Trasferimento Esempio: Memoria DRAM 4Mx1 (4 Mbit) Mbit) con una matrice 2048x2048 17 2048 × 2048 array Column latches Column address Mux Memoria Dout 18 Memoria 19 Problema: Divario delle prestazioni CPUmemoria Tipi di Memoria a Semiconduttore SRAM (Static CPU Capacità: 2x / 3 anni Velocità: 2x / 3 anni RAM): a flipflip-flop, flop, molto veloce (~5 nsec) nsec) DRAM (Dynamic RAM): basata su capacità capacità parassite; richiede refresh, alta densità densità, basso costo (~70 nsec) nsec) SSRAM/SDRAM (Synchronous DRAM) Prestazioni ❍ 1000 Sincrona (scambia dati con il processore in sincronia con un segnale di clock esterno), prestazioni migliori PROM (Programmable ROM) EPROM (Erasable PROM): raggi UV “Legge di Moore” 100 Divario di prestazione processore-memoria: (aumenta 50% / anno) 10 DRAM Capacità: 4x / 3 anni Velocità: 2x / 10 anni 1 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 EEPROM: cancellabile elettricamente Flash Memory: Memory: tipo di EEPROM Tempo Memoria 20 Obiettivo: Illusione di una Memoria Grande, Veloce ed Economica La memoria di un calcolatore è implementata come una gerarchia di memoria ❍ Come creare una memoria che sia grande, economica e veloce (per la maggior parte del tempo)? ❍ 21 Gerarchia di memoria Osservazioni: ❍ Le memorie di grandi dimensioni sono lente ❍ Le memorie veloci hanno dimensioni piccole ❍ Memoria Differenti tempi di accesso e di costo corrispondenti ai diversi livelli di memoria CPU Aumenta il tempo di accesso Gerarchia Parallelismo Aumenta la capacità di memorizzazione Diminuisce il costo per bit Livello 1 Livello 2 . . . Livello n Dimensione della memoria ad ogni livello Memoria 22 Memoria 23 Principio di località Gerarchia di memoria (2) Obiettivi della gerarchia di memoria: ❍ Fornire all’ all’utente una quantità quantità di memoria pari a quella disponibile nella tecnologia più più economica ❍ Fornire una velocità velocità di accesso pari a quella garantita dalla tecnologia più più veloce Osservazione: i programmi accedono ad una porzione relativamente piccola del loro spazio di indirizzamento Esistono due tipi differenti di località località 1. Località Località temporale (nel tempo): se un elemento (dato o istruzione) è stato acceduto, tenderà tenderà ad essere acceduto nuovamente in un tempo ravvicinato 2. Località Località spaziale (nello spazio): se un elemento (dato o istruzione) è stato acceduto, gli elementi i cui indirizzi sono vicini tenderanno ad essere acceduti in un tempo ravvicinato Esempio Processor Control On-Chip Cache Registers Datapath Second Level Cache (SRAM) Main Memory (DRAM) Speed (ns): 1 10 100 Size (bytes): 100 K M Secondary Storage (Disk) 10,000,000 (10 ms) G Tertiary Storage (Tape) ❍ ❍ Probabilità di riferimento 10,000,000,000 (10 sec) T Memoria 24 Principio di località (2) 2. Località Località spaziale ❍ Spostando blocchi contigui di parole al livello superiore ❍ 25 Costituito dalla memoria cache Livelli di memoria inclusivi ❍ Tutti i dati sono memorizzati nel livello più più basso ❍ Un livello superiore, più più vicino al processore, contiene un sottoinsieme di informazioni dei livelli inferiori Memoria di Livello Inf. Migrazione dei dati fra livelli della gerarchia ❍ I dati vengono di volta in volta copiati solo tra livelli adiacenti Blk X Dal Processore Memoria calcolatore è implementata come una gerarchia di memoria Solo il livello più più alto della gerarchia di memoria è a contatto diretto con il processore Tenendo gli elementi acceduti più più frequentemente vicino al processore Al Processore Memoria di Superiore n Spazio di indirizzamento 2 -1 Basandosi sul principio di località località, la memoria di un Località Località temporale ❍ 0 Gerarchia di memoria (3) Come sfruttare la: 1. I programmi contengono cicli: le istruzioni ed i dati saranno acceduti ripetutamente (località località temporale) Gli accessi agli elementi di un array presentano un’ un’elevata località località spaziale; nell’ nell’esecuzione di un programma è altamente probabile che la prossima istruzione sia contigua a quella in esecuzione Blk Y Memoria 26 Memoria 27 Migrazione dei dati Memoria Cache Blocco: la minima unità unità di informazione che può essere trasferita tra due livelli adiacenti Hit (successo): il dato richiesto dal processore è presente in un blocco del livello superiore In caso contrario si ha un miss (fallimento):il livello inferiore della gerarchia deve essere acceduto per recuperare il blocco contenente il dato richiesto La memoria principale (DRAM) è sempre più più lenta del processore e tende a rallentarlo Sono disponibili memorie più più veloci (SRAM) ma solo per dimensioni limitate La cache opera alla velocità velocità del processore, e quindi nasconde la “lentezza” lentezza” della memoria Processore ❍ Scopo della cache: disaccoppiare le velocità velocità di processore e RAM Contiene le ultime porzioni di memoria acceduta: se il processore processore richiede l’l’accesso ad una di esse evita un accesso alla memoria Funziona bene sfruttando il principio di località località dei riferimenti Memoria 28 Memoria Hit rate e tempo medio di accesso in memoria Strategia di Utilizzo della Cache La prima volta che il processore richiede dei dati si ha un cache miss ❍ 29 Hit rate: frazione degli accessi in memoria risolti nel livello superiore della gerarchia di memoria I dati vengono caricati dalla memoria principale e vengono copiati anche nella cache Hit rate = numero di hit / numero di accessi in memoria Le volte successive, quando il processore richiede Miss rate: 1 – (Hit rate) l’accesso ad una cella di memoria ❍ Se il dato è presente in un blocco contenuto nella cache, la richiesta ha successo ed il dato viene passato direttamente al processore Tempo medio di accesso in memoria (AMAT): AMAT = c h+ (1(1-h)m Si verifica un cache hit ❍ ❍ Altrimenti la richiesta fallisce ed il blocco contenente il dato viene anche caricato nella cache e passato al processore ❍ ❍ ❍ Si verifica un cache miss Obiettivo: aumentare quanto più più possibile il tasso di cache hit ❍ Memoria 30 c: hit time (tempo di accesso alla cache) h: hit rate 1-h: miss rate m: miss penalty=access time + transfer time (tempo per accedere al livello inferiore della gerarchia di memoria più più tempo per trasferire il blocco dal livello inferiore della gerarchia) Hit time << miss penalty Memoria 31 Come è gestita la gerarchia di memoria? Registri ↔ Memoria ❍ Dal compilatore (programmatore?) Cache ↔ Memoria ❍ Dall’hardware Memoria ↔ Dischi ❍ Dall’hardware e dal sistema operativo (memoria virtuale) ❍ Dal programmatore (file) Memoria 32