Calcolatori Elettronici Cenni sulle memorie Francesco Lo Presti Rielaborate da Salvatore Tucci Give qualifications of instructors: DAP teaching computer architecture at Berkeley since 1977 Co-athor of textbook used in class Best known for being one of pioneers of RISC currently author of article on future of microprocessors in SciAm Sept 1995 RY took 152 as student, TAed 152,instructor in 152 undergrad and grad work at Berkeley joined NextGen to design fact 80x86 microprocessors one of architects of UltraSPARC fastest SPARC mper shipping this Fall
Clocking Il segnale di Clock definisce quando i segnali possono essere letti e quando possono essere scritti Fronte di discesa (negativo) Falling edge Periodo di clock 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 Latch Set-reset Latch D sensibile al livello Il latch e’ transparente quando il clock e’ alto (l’ingresso e’ copiato in uscita) R S Q(t+1) !Q(t+1) 1 Q(t) !Q(t) - R Q !Q S clock D Q clock !Q D Q Memoria
Periodo del Ciclo di Clock T Il periodo T deve essere scelto lungo abbastanza da garantire che l’output della rete combinatoria sia stabilizzato Deve esserlo prima del periodo di apertura di del flip-flop (set-up time) Deve rimanere stabile per un certo tempo (hold-time) Determina il limite superiore alla frequenza di clock Memoria
Elementi di Memoria Problemi con i latch: corse critiche … Elementi di memoria usati come input ed output nello stesso ciclo Il clock deve rimanere ad 1 per un tempo sufficiente da garantire che l’ingresso sia memorizzato …ma tale da non permettere il propagarsi del nuovo valore attraverso la rete combinatoria Difficile garantire entrambe le condizioni Dipende dai tempi di propagazione e dalla presenza di diversi percorsi attraverso la rete combinatoria Elemento di Memoria Logica Combinatoria Memoria
Elementi di Memoria Soluzione: Flip-Flops che cambiano lo stato (Q) solo sui fronti del segnale di clock (master-slave) Master (primo D-latch) copia in Q l’ingresso quando il clock e’ alto (lo slave (secondo D-latch) e’ bloccato e non cambia stato ) Slave copia il valore del master quando il clock va a 0 (il master e’ bloccato nel suo stato di memoria ed eventuali cambi all’ingresso non vengono letti) D D D Q D Q Q D-latch D-latch clock clock clock !Q clock !Q !Q Q Also have set-up and hold-times to deal with Setup e hold time per un flip-flop D Memoria
Assunzioni Metodologia edge-triggered Comportamento tipico Leggere il contenuto di elementi di memoria I valori sono input di una o piu’ reti combinatorie Scrivere i risultati in uno o piu’ elementi di memoria Si assume che gli elementi di memoria siano scritti ad ogni ciclo di clock Altrimenti si aggiunge un esplicito segnale di write In AND con il clock La scrittura avviene solo quando occorre la transizione di livello attiva ed il segnale di controllo e’ affermato State element 1 State element 2 Combinational logic clock one clock cycle Memoria
Registro Registro Simile ad un flip flop D eccetto Write: n bit di ingresso e uscita Input Write Write: Se negato (0): i dati in uscita (Data Out) non cambiano Se affermato (1): i dati in uscita (Data Out) divengono uguali ai dati in ingresso (Data In) Q0 D0 D Q Flip-FlopD clock !Q Q1 D1 D Q Flip-FlopD clock !Q Qn-1 Dn-1 D Q Flip-FlopD clock !Q clock Write Memoria
Banco di registri (register file) Banco di registri ad accesso rapido per 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 Read data 1/2 Una porta in scrittura da 32 bit Write data Tre porte per selezionare i registri da 5 bit Read register #1 (#2) : primo (secondo) registro da leggere Write register: registro da scrivere Write: segnale di controllo In AND con il clock (non mostrato) Solo se Write=1 il valore in Write data e’ scritto nel registro indicato da Write Reg. Memoria
Banco di registri (2) Un banco di registri può essere implementato con un multiplexer per ciascuna porta read, un decoder per ciascuna porta write ed un array di registri costruiti partendo da flip-flop D Esempio: implementazione di due porte read per un banco di registri composto da n registri R e a d r e g i s t e r n u m b e r 1 R e g i s t e r R e g i s t e r 1 M u R e a d d a t a 1 R e g i s t e r n – 1 x R e g i s t e r n R e a d r e g i s t e r n u m b e r 2 M u R e a d d a t a 2 x Memoria
Banco di registri (3) Esempio: implementazione di una porta write per un banco di registri composto da n registri Log2n to n Memoria
Principali tecnologie per RAM Le memorie RAM sono di due tipi Memorie statiche: Static Random Access Memory (SRAM) Memorie dinamiche: Dynamic Random Access Memory (DRAM) Memorie statiche Il singolo elemento corrisponde ad un latch 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’informazione Le memorie statiche sono (rispetto a quelle dinamiche) Più veloci (5ns vs. 50-100ns) Più costose (6 transistor per bit) Persistenti (non è richiesto il refresh) Più affidabili Memoria
Memoria Principale, Cache e Tecnologie Prestazioni della memoria principale Latenza Tempo di accesso: tempo tra quando arriva la richiesta e la parola Tempo di ciclo: tempo tra richieste Banda La memoria principale è DRAM Dinamica in quanto ha bisogno di essere rinfrescata periodicamente (8 ms) La memoria cache usa SRAM No refresh (6 transistor/bit vs. 1 transistor) Dimensione: SRAM/DRAM = 4-8 Costo/Tempo di Ciclo: SRAM/DRAM = 8-16 Memoria
Obiettivo: Illusione di una Memoria Grande, Veloce ed Economica Osservazioni: Le memorie di grandi dimensioni sono lente Le memorie veloci hanno dimensioni piccole Come creare una memoria che sia grande, economica e veloce (per la maggior parte del tempo)? Gerarchia Parallelismo Memoria
Gerarchia di memoria La memoria di un calcolatore è implementata come una gerarchia di memorie Differenti tempi di accesso e di costo corrispondenti ai diversi livelli di memoria . Livello 1 Livello 2 Livello n CPU Aumenta il tempo di accesso Aumenta la capacità di memorizzazione Diminuisce il costo per bit Dimensione della memoria ad ogni livello Memoria
Gerarchia di memoria (2) Obiettivi della gerarchia di memoria: Fornire all’utente una quantità di memoria pari a quella disponibile nella tecnologia più economica Fornire una velocità di accesso pari a quella garantita dalla tecnologia più veloce Control Datapath Secondary Storage (Disk) Processor Registers Main Memory (DRAM) Second Level Cache (SRAM) On-Chip 1 10,000,000 (10 ms) Speed (ns): 10 100 G Size (bytes): K M Tertiary (Tape) 10,000,000,000 (10 sec) T Memoria
Gerarchia di memoria: Esempio del Pentium
Memoria Cache La memoria principale (DRAM) è sempre più lenta del processore e tende a rallentarlo Sono disponibili memorie più veloci (SRAM) ma solo per dimensioni limitate La cache opera alla velocità del processore, e quindi nasconde la “lentezza” della memoria Scopo della cache: disaccoppiare le velocità di processore e RAM Contiene le ultime porzioni di memoria acceduta: se il processore richiede l’accesso ad una di esse evita un accesso alla memoria Funziona bene sfruttando il principio di località dei riferimenti Memoria
Strategia di Utilizzo della Cache La prima volta che il processore richiede dei dati si ha un cache miss I dati vengono caricati dalla memoria principale e vengono copiati anche nella cache Si legge un blocco di parole contigue Le volte successive, quando il processore richiede 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 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ù possibile il tasso di cache hit Memoria
Principio di località Osservazione: i programmi accedono ad una porzione relativamente piccola del loro spazio di indirizzamento Esistono due tipi differenti di località Località temporale (nel tempo): se un elemento (dato o istruzione) è stato acceduto, tenderà ad essere acceduto nuovamente in un tempo ravvicinato 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 I programmi contengono cicli: le istruzioni ed i dati saranno acceduti ripetutamente (località temporale) Gli accessi agli elementi di un array presentano un’elevata località spaziale; nell’esecuzione di un programma è altamente probabile che la prossima istruzione sia contigua a quella in esecuzione Spazio di indirizzamento 2n-1 Probabilità di riferimento Memoria
Principio di località (2) Come sfruttare la: Località temporale Tenendo gli elementi acceduti più frequentemente vicino al processore Località spaziale Spostando blocchi contigui di parole al livello superiore Memoria