Dispensa SSD PDF

Title Dispensa SSD
Course Sistemi Operativi
Institution Università degli Studi di Napoli Federico II
Pages 29
File Size 2.6 MB
File Type PDF
Total Downloads 80
Total Views 161

Summary

La dispensa del professor Natella sulle SSD e i file system dei dischi a stato solido...


Description

Dispensa didattica: Gestione dei dispositivi di memoria secondaria a stato solido Corso di Sistemi Operativi Università degli Studi di Napoli Federico II Proff. D. Cotroneo, R. Natella Tratto dall’elaborato di laurea di Raffaele Martino (matr. N46/001026)

1. Introduzione ai dispositivi SSD Il progresso tecnologico nel campo dei dispositivi elettronici ha permesso e sta tuttora permettendo la produzione di dispositivi a transistori, quali processori e memorie principali, con prestazioni crescenti a un ritmo esponenziale. Non può dirsi lo stesso per quanto riguarda i supporti di memoria secondaria, che allo stato attuale (2013) sono costituiti in prevalenza dai dischi rigidi, o con acronimo inglese HDD, Hard Disk Drive. Come noto, le prestazioni di questi dispositivi sono limitate dalle dinamiche meccaniche in essi presenti, le quali introducono i ritardi del tempo di latenza rotazionale e del tempo di seek, che finiscono per dominare il tempo di trasferimento dall’HDD. Data l’elevata frequenza con cui si accede alla memoria secondaria, si comprende come un grande impulso alle prestazioni dell’intero sistema di elaborazione digitale possa provenire dall’aumento delle prestazioni di questi dispositivi. Sebbene molto possa fare in tal senso il Sistema Operativo, mediante tecniche di buffering dell’I/O e pianificando gli accessi al disco in modo da minimizzare gli spostamenti della testina, è evidente che se si riesce a eliminare totalmente le dinamiche meccaniche, e di conseguenza i ritardi da queste introdotte, le prestazioni migliorano sensibilmente. L’indipendenza delle prestazioni dai supporti meccanici di una memoria secondaria è stata raggiunta con la realizzazione dei supporti a stato solido, o con acronimo inglese SSD, Solid State Drive. Un supporto di memoria secondaria a stato solido è costituito interamente da circuiti elettronici digitali, i quali hanno dinamiche notoriamente più veloci rispetto a quelle meccaniche. Inoltre, gli SSD superano i supporti a disco rigido anche in altre specifiche, quali la robustezza costitutiva e il risparmio energetico. Tuttavia, la tecnologia utilizzata negli SSD, come illustrato di seguito, introduce nuove problematiche non presenti negli HDD tra cui la asimmetria dei tempi di accesso tra letture e scritture, la amplificazione delle scritture, la usura delle celle di memoria. Corso di Sistemi Operativi, Università degli Studi di Napoli Federico II

1

Queste problematiche fanno sì che per sfruttare le potenzialità di questi nuovi supporti occorre operare delle modifiche a livello software, che siano in grado di rendere il Sistema Operativo di gestire efficientemente tali dispositivi. Due sono i sottosistemi del Sistema Operativo che richiedono di essere rivisti: il File Management System, il quale si occupa della gestione e dell’organizzazione dei file sul supporto di memoria secondaria, e il sottosistema di I/O verso la memoria secondaria, che si occupa della pianificazione e dell’inoltro delle richieste di I/O da e verso il supporto.

1.1 Confronto fra HDD e SSD Un HDD offre prestazioni diverse a seconda che si trovi a dover soddisfare richieste di accesso casuali ovvero sequenziali: nel secondo caso, infatti, il tempo di seek e la latenza rotazionale devono essere attesi solo per il primo accesso della sequenza, mentre nel primo caso questi ritardi si abbattono su tutti gli accessi. Un SSD invece è un dispositivo ad accesso diretto, per cui il tempo di accesso non è influenzato dalla posizione fisica del dato. Tuttavia, la diversa natura delle operazioni di lettura e di scrittura negli SSD porta a delle differenze tra accessi casuali e sequenziali, e tra letture e scritture. La Figura 1 riporta il risultato del confronto tra un HDD a 7200!rpm e tre SSD, di fascia Low, Medium e High: mentre le prestazioni dell’HDD non variano significativamente passando da letture a scritture, sugli SSD si assiste a un netto crollo delle prestazioni passando da letture a scritture, in specie sul dispositivo di fascia bassa. Comunque in

Figura 1: Prestazioni di un HDD e di tre SSD a confronto (Chen, Koufaty, & Zhang, 2009)

tutti gli altri casi l’HDD non regge il confronto, mantenendosi a prestazioni inferiori di un ordine di Corso di Sistemi Operativi, Università degli Studi di Napoli Federico II

2

grandezza rispetto agli SSD. A dispetto del fatto che sono dispositivi ad accesso diretto, per accessi sequenziali le prestazioni degli SSD migliorano di più di un ordine di grandezza. Questo perché gli SSD sono favoriti dalle operazioni sequenziali, specialmente sulle scritture. Essendo un dispositivo integralmente elettronico, un SSD è più robusto rispetto a un HDD, sotto diversi aspetti. In primo luogo, non possiede parti meccaniche in movimento, dunque da un lato è più robusto nei confronti di urti meccanici, dall’altro non è soggetto a usura meccanica. Oltre alla robustezza meccanica, gli SSD non sfruttano fenomeni legati al magnetismo per la memorizzazione dell’informazione, a differenza degli HDD, dunque sono meno sensibili a interferenze elettromagnetiche, contribuendo a sviluppare il loro utilizzo in applicazioni embedded. Tuttavia, vedremo che le celle utilizzate all’interno di questi dispositivi sono soggette ad usura e consentono un numero limitato di operazioni di scrittura. Per quanto concerne i consumi energetici, in un HDD è necessario mantenere sempre in rotazione il disco rigido, anche quando non occorre soddisfare alcuna richiesta di I/O. Questo perché il tempo necessario a mettere in rotazione il disco, detto tempo di spin – up, è dell’ordine dei secondi, per cui non è proponibile mettere in rotazione il disco solo quando serve; questo però consuma energia. Nei supporti di memoria secondaria a stato solido, invece, non vi è alcuna necessità di consumare energia quando non si effettuano operazioni di I/O, dal momento che la corrente viene fatta scorrere nel supporto di memoria solo quando occorre effettuarvi un’operazione; inoltre non si ha alcun ritardo in avvio (almeno per quanto riguarda il supporto di memoria secondaria in senso stretto, dato che il controllore di memoria può impiegare qualche millisecondo per ricostruire le strutture dati volatili a esso necessarie). I componenti elettronici che costituiscono il controllore di memoria sono anche responsabili del consumo di energia in background, ovvero quando il supporto di memoria secondaria non deve servire richieste. Anche in casi molto sfavorevoli, come quello riportato in Figura 2, il consumo complessivo di potenza di un SSD è di molte volte inferiore a quello di un HDD.

Corso di Sistemi Operativi, Università degli Studi di Napoli Federico II

3

Figura 2: Consumo di potenza dell'HDD Seagate Barracuda XT e dell'SSD Samsung serie 470 128 GB (Schmid & Roos, 2011).

1.2 Architettura di un SSD In questa sezione, sono illustrate le principali caratteristiche dei supporti di memoria SSD, senza entrare nel dettaglio della elettronica in essa utilizzata. Obiettivo di questa sezione è quello di fornire un quadro organico delle problematiche da affrontare nella gestione efficiente di tale supporto.

1.2.1 Fisica del supporto di memoria secondaria a stato solido Ciascuna cella è costituita da un transistore a effetto di campo metallo – ossido – semiconduttore di cui sia possibile alterare il valore della tensione di soglia. Una singola cella può memorizzare più di un bit, in questo caso è detta MLC, Multi Level Cell, o anche 2 ! LC per indicare che memorizza 𝑥 bit; la cella che memorizza un singolo bit è detta SLC, Single Level Cell. Procedendo con approccio bottom – up, 𝑛 celle vengono realizzate in serie tra loro, e connesse tramite due pass – transistor, rispettivamente alla Bit line e alla Ground line. Tale struttura di 𝑛 + 2 transistori è detta stringa NAND Flash – il nome NAND è dovuto alla configurazione in serie, che realizza tale porta logica –. Le celle di memoria sono associate a 𝑛 diverse word line; ciascuna word line abilita 𝑚 celle in altrettante stringhe diverse. L’unità minima di lettura e programmazione è la pagina, costituita da un insieme di 𝑚 celle abilitate dalla stessa word line. Quando le celle sono 2 ! LC, o si associa a una word line una pagina di 𝑥 ∗ 𝑚 bit, oppure le si associano 𝑥 pagine di 𝑚 bit, ma potendosi veicolare un bit alla volta su di una bit line, si preferisce la seconda opzione. La programmazione fa commutare le celle dal valore logico alto a quello basso, per poter tornare al valore logico alto è necessaria l’operazione di cancellazione. Questa richiede il controllo del terminale di substrato, ma Corso di Sistemi Operativi, Università degli Studi di Napoli Federico II

4

essendo questo condiviso fra tutte le celle di una stringa, non si può cancellare una pagina senza alterare le altre pagine che passano per le stesse stringhe. Non avendo senso la cancellazione di una singola stringa, che cancellerebbe un bit per ogni pagina, occorre cancellare tutte le 𝑚 ∗ 𝑛 celle che costituiscono pagine che attraversano le stesse stringhe, tale insieme è detto blocco ed è pertanto l’unità minima di cancellazione. Da notare che durante le operazioni su una pagina, le celle delle altre pagine del blocco devono funzionare da pass – transistor (Micheloni, Marelli, & Eshghi, 2013): questo fa sì che i controllori di memoria impongano la scrittura sequenziale delle pagine all’interno di ogni blocco (Jung, et al., 1996), nel senso che è necessario che le pagine vengano scritte da quella di indirizzo più basso a quella di indirizzo più alto. A valle di ogni bit line è presente un registro per bufferizzare il bit in I/O, nel complesso tutti gli 𝑚 registri delle bit line vanno a formare un registro buffer di I/O detto registro di piano, dove il piano è l’insieme dei blocchi collocati sulle stesse bit line. Più piani affiancati, raggruppati in un chip, possono operare in parallelo ma condividono l’accesso a un bus a 8 bit che interfaccia il chip verso l’esterno. Solitamente il package Flash, ovvero l’unità di memoria secondaria che viene effettivamente venduta, contiene più chip che possono indipendentemente accedere al bus.

1.2.2 Architettura interna di un SSD Un SSD comprende il controllore di memoria, l’interfaccia verso l’esterno – che deve essere abbastanza veloce da non risultare collo di bottiglia, un esempio è la SATA III da 6!Gb/s – e da un certo numero di package Flash. Questi non sono tutti connessi a un unico bus seriale, bensì vengono ripartiti fra più bus, andando a costituire più canali che possono operare in parallelo (Micheloni, Marelli, & Eshghi, 2013), come mostrato nella Figura 3. Il controllore di memoria avrà quindi un multiplexer per poter collegare il buffer di I/O di cui è dotato con l’appropriato canale. Inoltre il controllore di memoria è dotato anche di un processore e di uno o più moduli DRAM. Come si può vedere dalla Figura 4, mentre il processore è tipicamente integrato con il buffer e il multiplexer, la sua memoria DRAM, specie nei dispositivi di fascia alta, è invece collocata in moduli separati. Questa scelta permette di fornire al controllore una maggiore capacità della memoria centrale, in modo da poter eseguire algoritmi più complessi (Agrawal, Prabhakaran, Wobber, Davis, Manasse, & Panigrahy, 2008). La principale funzione del controllore di memoria è Corso di Sistemi Operativi, Università degli Studi di Napoli Federico II

5

quella di risolvere gli indirizzi utente negli indirizzi utilizzati all’interno della memoria Flash, e a questa funzione si deve nome con cui si denota il suo firmware, FTL, Flash Translation Layer. Per assolverla, il controllore di memoria impone ai package Flash un vero e proprio File System, detto FFS, Flash File System (Agrawal, Prabhakaran, Wobber, Davis, Manasse, & Panigrahy, 2008).

Figura 3: Architettura logica di un supporto di memoria secondaria basato su tecnologia NAND Flash.

Figura 4: Interno del Samsung serie 470 256 GB (Walton, 2010).

Corso di Sistemi Operativi, Università degli Studi di Napoli Federico II

6

1.2.3 Prestazioni Le alte prestazioni fornite dagli SSD non discendono solo dalle prestazioni della tecnologia Flash, ma anche dall’architettura parallela illustrata fin qui. Si consideri ad esempio il package Flash Samsung K9WBG08U1M (K9XXG08XXM Flash Memory Datasheet), costituito da due chip K9KAG08U0M, i suoi parametri sono esplicitati in Tabella 1. Per quanto fin qui detto, per compiere un’operazione di scrittura è necessario prima trasferire i dati dal bus seriale al registro di piano, quindi programmare la pagina; le letture seguono il percorso inverso: i dati vengono prima letti nel registro di piano, quindi trasferiti sul bus. Questo vuol dire che ogni lettura richiede 125!𝜇𝑠,

e

ogni

scrittura

300!𝜇𝑠,

producendo

un

data

rate

rispettivamente

di

1 125 ∗ 10!! !pag 𝑠 ∗ 4! KiB pag = 32! MiB s e 13! MiB s. Tuttavia, contenendo il package due chip, è certamente possibile effettuare una lettura da un chip mentre l’altro sta trasferendo dati sul bus; in questo modo, poiché la lettura dalla memoria Flash di un chip termina prima del trasferimento sul bus operato dall’altro chip, il tempo necessario per ogni lettura diventa il tempo necessario al completamento del trasferimento sul bus, ovvero 100!𝜇𝑠, producendo un data rate di 40! MiB s. Per le scritture il discorso è analogo, ma questa volta occorre attendere il tempo necessario al completamento della scrittura su un chip, perché termina prima il trasferimento dal bus sull’altro chip, dunque il data rate è di 20! MiB s. Le prestazioni in scrittura possono essere aumentate osservando che, come emerge dall’analisi del data sheet, il K9KAG08U0M è costituito a sua volta da due chip K9F8G08U0M – dunque va considerato un QDP, Quad Die per Package, anziché un DDP, Dual Die per Package; – e in scrittura i due chip possono operare in parallelo, come fin qui descritto; oppure è possibile collocare due package sullo stesso canale: in questo modo, essendoci quattro chip che accedono indipendentemente al bus, è possibile inviare richieste di scrittura alternativamente ai quattro chip mantenendo il bus sempre impegnato, dunque raggiungendo il data rate di 40! MiB s anche in scrittura. A questo punto il bus seriale diventa collo di bottiglia per le prestazioni, che potrebbero ulteriormente aumentare se si considera la possibilità di operare in parallelo anche su più piani dello stesso chip (Agrawal, Prabhakaran, Wobber, Davis, Manasse, & Panigrahy, 2008) – per il package qui esemplificato devono essere due piani dello stesso K9F8G08U0M. I numeri elevatissimi mostrati nei test prestazionali si raggiungono scrivendo Corso di Sistemi Operativi, Università degli Studi di Napoli Federico II

7

contemporaneamente su più canali: se ad esempio i canali sono 8 il data rate diventa di 320! MiB 𝑠. Per poter essere sfruttato però, tutto questo incremento prestazionale richiede che le pagine consecutivamente lette o scritte si trovino su chip diversi in uno stesso canale, e poi su canali diversi. Per questo motivo, il FTL spesso opera lo striping degli indirizzi logici contigui su chip diversi e su canali diversi, migliorando le prestazioni per accessi sequenziali. Le scritture casuali invece, oltre a beneficiare meno di questo parallelismo – perché possono casualmente cadere nello stesso chip – sono poi affette da un ulteriore fenomeno, la amplificazione delle scritture. Tabella 1: Parametri prestazionali e costitutivi del package Flash Samsung K9WBG08U1M.

Programmazione di una pagina Lettura di una pagina Cancellazione di un blocco Accesso al bus seriale

200!𝜇𝑠 25!𝜇𝑠 1500!𝜇𝑠 100!𝜇𝑠

Chip per package

2

Piani per chip

4

Blocchi per piano

2048

Pagine per blocco

64

Dimensione totale pagina

4224!B

Dati

4096!B

Metadati

128!B

1.2.4 Amplificazione della scritture Da quanto detto emerge che sebbene l’SSD sia un dispositivo ad accesso casuale, non si può scrivere una pagina che non sia successiva all’ultima pagina già scritta in un blocco senza dover prima cancellare tutto il blocco. Una tale richiesta introduce un notevole degrado prestazionale, infatti per soddisfarla è necessario 1. leggere tutto il blocco, il che avviene molto rapidamente in una memoria Flash; 2. modificare la pagina richiesta nel buffer del controllore; Corso di Sistemi Operativi, Università degli Studi di Napoli Federico II

8

3. cancellare il blocco, operazione questa che richiede più tempo di una scrittura, come si può desumere dai valori della Tabella 1; 4. infine riscrivere interamente il blocco, scrivendo cioè in memoria una quantità di dati molto più grande della quantità di dati che si intendeva scrivere. Si definisce allora amplificazione della scrittura – write amplification – il rapporto 𝐴 fra il numero 𝑊 di pagine effettivamente scritte dal controllore e quelle richieste dall’utente 𝑅 , entrambi mediati su più scritture (Hu, Eleftheriou, Haas, Iliadis, & Pletka, 2009): 𝑊 𝐴≝ 𝑅 Per definizione la write amplification è un valore maggiore dell’unità, a meno che il controllore non adoperi tecniche di compressione, cosa che ad esempio fanno alcuni controllori SandForce, che dichiarano di raggiungere un valore medio di 𝐴 = 0.5 con punte anche inferiori a 0.2 (Shimpi, OCZ's Vertex 2 Pro Preview: The Fastest MLC SSD We've Ever Tested, 2009) .!La compressione operata dal controllore di memoria può essere utile poiché tipicamente i File System non comprimono i dati in quanto questo richiede molti cicli di CPU, tuttavia si dimostra inefficace quando i dati non sono comprimibili, quali ad esempio i dati multimediali. Test effettuati con gli stessi controllori (Intel SSD 520 Review: Taking Back The High-End With SandForce: SandForce's Technology: Very Low Write Amplification, 2012) mostrano che nel caso di dati totalmente incomprimibili si raggiunge una 𝐴 = 2,9, molto maggiore rispetto alla 𝐴 = 1,1 dichiarata dall’Intel X25 – M che non fa uso dei controllori SandForce (Shimpi, Intel X25-M SSD: Intel Delivers One of the World's Fastest Drives, 2008).

1.2.5 Over – provisioning Purtroppo le celle di memoria a stato solido sono soggette a usura, dovuta principalmente alla degradazione dello strato di ossido che le costituisce. Il problema diventa ancora più grave nel caso delle celle MLC, che stanno soppiantando le SLC perché permettono di aumentare la quantità di bit memorizzati per unità di superficie riducendo il costo per GiB; infatti valori tipici di cicli di programmazione e cancellazione che una cella può subire prima che il suo BER diventi troppo elevato sono dell’ordine di 100.000 cicli per le SLC, e di 10.000 cicli per le MLC. La vita di un blocco si conclude quando dopo averlo cancellato non si riscontrano tutti 1, il blocco allora viene Corso di Sistemi Operativi, Università degli Studi di Napoli Federico II

9

marcato come bad block e ritirato. Per evitare che in conseguenza di ciò diminuisca la capacità dell’SSD, lo si fornisce di blocchi di riserva, non contati nella capacità nominale, che possano andare a sostituire i bad block. Una quota di over – provisioning, pari al 7.37% si ottiene semplicemente dall’espressione della dimensione nominale della memoria, che solitamente è in multipli decimali del byte (GB), mentre la dimensione totale deve essere misurata in multipli binari del byte (GiB). In realtà i blocchi di over – provisioning non restano inutilizzati finchè un blocco non viene scartato, viceversa sono utilmente impiegati dal File System per migliorare le prestazioni del supporto di memoria. Ad esempio si può ridurre l’impatto della write amplification utilizzando i blocchi di over – provisioning come buffer delle scritture, gestito in maniera sequenziale in modo da non provocare tale fenomeno: in questo modo l’overhead dovuto alla cancellazione e riprogrammazione del ...


Similar Free PDFs