Le Memorie Prof. Maurizio Naldi A.A. 2015/16 Memorie • Memoria Principale (centrale) • • Si accede direttamente dalla CPU non permanente • Memoria Secondaria (di massa) • • Si accede tramite il sottosistema di input/output permanente Memoria principale e secondaria Diversi obiettivi: • (P) Supporto alla CPU: deve fornire alla CPU dati e istruzioni il più rapidamente possibile • (S) Archivio: deve consentire di archiviare dati e programmi garantendone la conservazione e la reperibilità anche dopo elevati periodi di tempo Diverse esigenze: • (P) velocità per il supporto alla CPU • (S) non volatilità ed elevata capacità Diverse tecnologie: • (P) elettronica: veloce, ma costosa e dinamica (volatile) • (S) stato solido, magnetica e ottica: economica, ma lenta Criteri di valutazione • • • • • Velocità Volatilità Capacità Costo (per bit) Modalità di accesso – diretto (o casuale) (es. RAM) – Sequenziale (es. nastri magnetici) – Misto (es. dischi) – Associativo (es. memorie cache) Memoria Centrale Memoria ad accesso “casuale” (RAM) • Casuale va inteso nel senso che il tempo di accesso non dipende dalla locazione • Mantiene al proprio interno i dati e le istruzioni dei programmi in esecuzione • Tecnologia elettronica (1 transistor per ogni bit) – veloce, volatile e costosa Due “varianti” • ROM: elettronica, permanente ma solo lettura • Flash: elettronica, permanente e riscrivibile Memorie ROM e Flash • ROM (Read Only Memory): memoria elettronica, permanente (non volatile) utilizzabile solo in lettura • i dati sono memorizzati tramite collegamenti elettronici definiti nella fase di costruzione. Di regola non possono essere modificati successivamente. • tempo di accesso: ~ 150 nanosecondi • Flash: memoria elettronica, non volatile e riscrivibile • informazioni registrate in transistor in grado di mantenere la carica elettrica per un tempo lungo (effetto di campo) • tempo di accesso: ~ 75 nanosecondi (NOR) ~ 25 microsecondi (NAND) Differenze tra ROM e RAM • Random Access Memory – – – – termine in genere associato alla memoria centrale prestazioni location-independent Volatile: conserva dati e istruzioni solo se alimentata capacità in MB (MegaByte) o GB (GigaByte) • Read-Only Memory – contiene parti essenziali del software di sistema quali – il BIOS (Basic Input/Output System) – il POST (Power On Self Test) – particolari varianti tecnologiche sono: • PROM, EPROM, EEPROM, FLASH Interazione fra CPU e Memoria Centrale • L’esecuzione delle istruzioni causa una sequenza di accessi alla memoria centrale • U n a v o l t a c a r i c a t o l ’ i n t e r o programma nella memoria centrale, l’unità di controllo prende in considerazione la prima istruzione, la decodifica e ordina all’unità aritmetico-logica di eseguirla • Il processore memorizza quindi il risultato della prima istruzione e prende in esame la successiva Indirizzi di Memoria I bit nelle memorie sono raggruppati in celle: • tutte le celle sono formate dallo stesso numero di bit; • una cella composta da k bit, è in grado di contenere una qualunque tra 2k combinazioni diverse di bit. Ogni cella ha un indirizzo: • Serve per accedere al contenuto della cella; • in una memoria con N celle gli indirizzi vanno da 0 a N–1. La cella è l’unità indirizzabile più piccola. • In quasi tutti i calcolatori è di 8 bit (un byte). I byte vengono raggruppati in parole (che oggi sono di 4/8 byte) che la CPU accede in lettura e scrittura. Organizzazione della Memoria Anche gli indirizzi della memoria sono rappresentati come numeri binari: • un indirizzo di M bit consente di indirizzare 2M celle di memoria; – ad esempio per 16 celle bastano 4 bit (24 = 16) • oggi gli indirizzi sono a 32 o 64 bit – con 64 bit si possono indirizzare 18446744073709551616 (264) celle diciotto miliardi di miliardi! • internamente l’accesso avviene come in una matrice (righe e colonne) Memoria vs. CPU Memoria vs. CPU Le CPU sono sempre state più veloci delle memorie • La miniaturizzazione ha consentito alle CPU di raggiungere velocità di esecuzione sempre più elevate – Più i componenti sono piccoli, più alta può essere la frequenza delle operazioni • nelle memorie è aumentata la capacità più che la velocità – Alla fine degli anni 80 un Personal Computer aveva 1 Megabyte di RAM. Oggi un laptop ha almeno 4 Gigabyte (4000 volte di più) – i tempi di accesso (CAS latency) però sono calati molto meno: da circa 100 nanosecondi a circa 10 È possibile inserire memorie molto più veloci nello stesso chip della CPU, ma le dimensioni sono piccole ed i costi molto elevati. Gerarchia di Memoria Gerarchia di Memoria Tipicamente costituita da: 1. Registri contenuti nella CPU (al più qualche KiloByte) 2. Cache (qualche MegaByte), es. MacBook Air 4 MB L3 (i7) 3. Memoria principale (alcuni-decine di GigaByte), es. MacBook Air 4-8 GB 4. Dischi (da centinaia di GigaByte a qualche TeraByte) 5. Nastri magnetici e dischi ottici (da GB a TB) Quando ci si sposta verso il basso nella gerarchia: • aumenta il tempo di accesso; • aumenta la capacità di memorizzazione; • diminuisce costo per byte. Memorie disponibili • Memorie veloci, integrate nello stesso chip della CPU, ma costose: – Chiamiamole MPV (per Memorie Piccole e Veloci). • Memorie di grande capacità, relativamente lente, economiche ed accessibili tramite il bus: – Capacità circa 100 volte superiori; – Tempi di accesso circa 10 volte superiori. – Chiamiamole MGL (per Memorie Grandi e Lente). Vorremmo il meglio dei due mondi: una memoria grande e veloce (capacità MGL e prestazioni MPV) Come fare? Gerarchia a due livelli Memoria formata da una MPV e una MGL: • MPV contiene una copia di alcune celle della MGL; • quando la CPU chiede una cella di memoria, la richiesta viene intercettata dalla MPV: – se il dato si trova nella MPV, viene passato direttamente alla CPU; – altrimenti, il dato si ottiene dalla MGL, e viene anche caricato nella MPV. Principio di località Località spaziale: quando si accede all’indirizzo A, è molto probabile che gli accessi successivi richiedano celle vicine ad A. • le istruzioni vengono in genere lette da locazioni consecutive della memoria; • gli accessi a vettori o a strutture dati sono “vicini”. Località temporale: quando si accede all’indirizzo A, è molto probabile che negli accessi successivi si richieda di nuovo la cella A. • cicli di istruzioni accedono ripetutamente alle stesse locazioni di memoria; • istruzioni vicine tendono ad utilizzare le stesse variabili. Come sfruttare la località Dipende dal tipo di località: • Località temporale: i dati prelevati dalla MGL dovrebbero essere conservati nella MPV il più a lungo possibile; • Località spaziale: quando si copia un dato dalla MGL alla MPV, dovremmo copiare anche i dati vicini (cache line o blocco). Necessità contrastanti: • per la località spaziale servirebbero blocchi grandi • per la località temporale servirebbero blocchi piccoli (se c’è spazio per tanti blocchi un blocco resta nella MPV più a lungo) Come sfruttare la località • Se gli accessi in memoria rispettano i principi di località • Se il sistema MPV/MGL è ben proporzionato – dimensione dei blocchi e numero dei blocchi nella MPV • Allora la frequenza di successo (hit ratio) può superare il 90% – il tempo medio di accesso scende a 0.90*1+0.10*10 = 1.9 Il costo della MPV è molto elevato rispetto a quello della MGL – viene utilizzata una gerarchia di MPV – cache L1, L2, L3, con dimensioni da pochi KiloByte a decine di MegaByte Caratteristiche gerarchia di memorie Memoria secondaria Supporti di memorizzazione • Dischi magnetici – disco fisso (Hard-disk, capacità da poche decine a migliaia di GigaByte) – dischi rimovibili (capacità come gli HD) – Combinazione di parti meccaniche ed elettroniche • Dischi ottici – CD-ROM (Compact Disk a sola lettura, capacità tipica 650 Mbytes), CD-R (WORM), CD-RW (RAM) – DVD (Digital Versatile Disk, capacità min 4.7 Gbyte, (1lato/ 1 strato) film full motion a schermo largo, 3 canali audio) – Unità a stato solido – non è un disco, capacità fino a qualche centinaio di GigaByte. – Fondamentalmente una memoria Flash – Tipiche di smartphone, tablet, laptop di fascia alta Funzionamento di un hard disk • Per effettuare un’operazione di lettura o scrittura è necessario che la testina si posizioni in corrispondenza del blocco desiderato • La velocità di rotazione del disco può arrivare a 15000 giri al minuto! • La dimensione del blocco varia da 512 byte a qualche KiloByte Funzionamento di un hard disk • La meccanica del hard disk è molto sofisticata ma delicata • La capacità di scrittura è nell’ordine di qualche MegaByte al secondo • La capacità di lettura è più elevata grazie a meccanismi di precaricamento ed alla presenza di memorie più veloci di appoggio. Memorie a Stato Solido (SSD) • L’unità a stato solido o drive a stato solido, in sigla SSD (solid-state drive), utilizza memoria Flash per l'archiviazione di massa dei dati. • La principale differenza con i classici dischi è la possibilità di memorizzare in modo non volatile grandi quantità di dati, senza utilizzare parti meccaniche • Oltre alla memoria in sé, un'unità disco SSD dispone di diversi componenti di supporto alle operazioni: controller (microprocessore), memory cache, supercondensatore (o batteria tampone), interfaccia (generalmente SATA2 (3Gb/s) o SATA3 (6Gb/s)) Hard Disk vs SSD • La frammentazione di un disco SSD non influisce sulle sue prestazioni, poiché il tempo d'accesso a qualunque cella è identico; • Attualmente un SSD ha un limite sul numero massimo di operazioni di scrittura (ma è un numero MOLTO elevato) • Il tasso di rottura di un SSD oscilla tra lo 0.5% e il 3%, mentre negli hard disk può raggiungere il 10%. • Un SSD ha minori consumi e minore produzione di calore • Un SSD ha tempi di accesso e archiviazione ridotti: si lavora nell'ordine dei decimi di millisecondo; il tempo di accesso dei dischi magnetici è oltre 50 volte maggiore, attestandosi invece tra i 5 e i 10 millisecondi. • Il costo per byte del SSD è sensibilmente più elevato (per ora). Hard Disk vs SSD Flash drive USB • Accesso seriale ad alta velocità (max 480 Mbit/s con USB 2.0) • Uso di microprocessori ad alta velocità e basso consumo • Possibilità di scrittura su singoli settori