1 / 32

Managementul memoriei flash -Algoritmul Rejuvenator, TrueFFS și Dual pool-

Managementul memoriei flash -Algoritmul Rejuvenator, TrueFFS și Dual pool-. Profesor îndrumător: Ștefan Stăncescu Student: Toma Oana-Mădălina. Memoria flash. Memoria flash este o memorie electronică cu acces aleator. Ea este nevolatilă , se poate șterge și reprograma.

hertz
Download Presentation

Managementul memoriei flash -Algoritmul Rejuvenator, TrueFFS și Dual pool-

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Managementul memoriei flash-Algoritmul Rejuvenator, TrueFFS și Dual pool- Profesor îndrumător: Ștefan Stăncescu Student: Toma Oana-Mădălina

  2. Memoria flash • Memoria flash este o memorie electronică cu acces aleator. Ea este nevolatilă, se poate șterge și reprograma. • Se folosește pentru dispozitivele mobile, cum sunt telefoanele, camerele digitale și dispozitivele cu senzori. • Memoria flash este populară printe aceste dispositive datorită dimensiunilor mici, greutății scăzute, consumului redus de energie, rezistenței sporite la șocuri și citirea rapidă.

  3. Dezavantajele memoriei flash • Memoriile flash moștenesc probleme de rezistentă. Este esential ca aceste probleme de bază să fie rezolvate pentru ca memoria flash NAND să-și poată materializa potențialul la memorarea pe scală largă. Aceste probleme sunt rezolvate de algoritmii de wear leveling. • În prezent se lucrează cu algoritmi de wear leveling deoarece, fără această implementare durata medie de viață a unei memorii flash este de 0,55 ore, iar folosind algoritmii se ajunge la o durată de viață de aproximativ 50 de ani.

  4. Organizarea memoriei flash • Memoria flash NAND este organizată ca o matrice de blocuri. Un bloc cuprinde de la 32 la 64 pagini, unde pagina este cea mai mica unitate pentru operațiile de scriere și citire. • Memoria flash NAND are două variante numite SLC (Single Level Cell) și MLC (Multi Level Cell). Dispozitivele SLC stochează un bit pe celula în timp ce MLC stochează mai mult de un bit pe celulă.

  5. Caracteristicile stocării pe memorii flash • Acces uniform la latența de citire: În discurile magnetice convenționale, timpul de acces este dominat de timpul necesar capătului de citire să găseasca calea necesară (timp de explorare) urmat de rotația întarziată pentru găsirea sectorului (latența de rotație). Timpul de citire a unui bloc aleator de pe un disc magnetic depinde în primul rând de locația fizică a datelor. • Acces la citirea și scrierea asimetrică: În discurile magnetice convenționale, timpii de citire și scriere pentru o anumită locație sunt aproximativ aceeași. Operațiile de citire și scriere sunt făcute la nivel de pagina în timp ce operațiile de ștergere sunt făcute la nivel de block. Acest lucru duce la asimetrie pentru latența operațiilor de citire și scriere.

  6. Uzura block-urilor: Frecvent operația de ștergere a blocului reduce durata de viață a memoriei flash. Pentru o memorie flash SLC numărul limitat de ștergeri este în jur de 100K și pentru o memorie flash MLC este în jur de 10K. • Colectorul de gunoi: Fiecare pagină în memoria flash se află într-una din cele trei stări: validă, invalidă și curătă. Paginile valide conțin date care mai sunt înca valide. Paginile invalidevor fi șterse la următoarea colectare de gunoi. Pagini curate sunt acelea care sunt în curs de ștergere și pot primi noi date în ele. Când numărul paginilor goale din dispozitivul cu memorie flash este redus, procesul de colectare de gunoi este declanșat. Colectarea de gunoi corectează paginile invalide prin ștergerea lor • Mutarea datelor în cazul ștergerilor la nivel de block

  7. Amplificarea de scriere: În cazul hard disk-urilor, cererile de scriere făcute de utilizator se potrivesc cu scrierile fizice ale dispozitivului actual. În cazul SSD-urilor, activitățile de wear leveling și colectarea de gunoi duc la rescrierea datelor utilizatorului într-o altă parte fără vreo cerere de scriere propriu-zisă. Fenomenul este numit amplificarea scrierilor și este definit prin următoarea relație: • Amplificarea scrierii=(Numărul actual de pagini)/(Numărul paginilor scrise de utilizator) • Matricea de translație flash (FTL): Multe SSD-uri cu performante ridicate au o matrice de translație flash, pentru administrarea memoriei flash. FTL, ascunde organizarea interna a memoriei flash NAND și prezintă un dispozitiv block matricii sistemului de fișiere. FTL mapează spațiul de adrese logice pentru locațiile fizice din memoria flash.

  8. Algoritmul de wear leveling • Un algoritm de wear leveling urmărește ieșirea din uz a block-urilor diferite ale memoriei flash. • Un block se spune că este ieșit din uz când a fost șters de numărul maxim de ori. • Definesc durata de viață a memoriei flash ca numărul de update-uri care poate fi executat până când primul block este scos din uz. • Principalul scop al oricărui algoritm de wear leveling este să crească durata de viață a memoriei flash prin prevenirea ajungerii fiecărui block la limita.

  9. Hot data vs. Cold data • Datele care sunt updatate mai des sunt definite ca hot data, în timp ce datele care rămân relativ nemodificate sunt definite sub numele de cold data. Optimizarea plasării datelor hot și cold în memoria flash presupune darea unei importanțe extreme numărului limitat de cicluri de ștergere pentru block-urile flash. • Importanța scrierii datelor hot pe block-uri diferite

  10. Organizarea algoritmilor de wear leveling • Wear leveling dinamic: Algoritmi realizeaza wear leveling-ul prin reutilizarea block-urilor cu cel mai mic număr de ștergeri. Totuși acești algoritmi nu încearcă să mute datele cold care pot rămâne pentru totdeauna în câteva block-uri. • Wear leveling static: Spre deosebire de algoritmii de wear leveling dinamic, algoritmii de wear leveling static încearca să mute datele cold pe block-uri utilizate mai mult pentru a facilita răspândirea rapidă a uzurii. Totuși, mutarea datelor cold în jur fără cereri de update duce la depășiri.

  11. Principalii algoritmi descriși • Rejuvenator este un algoritm static de wear leveling. Este important operațiile care folosesc multe resurse pentru mutarea datelor cold să fie făcute optim și să nu creeze depașiri excesive. • Rejuvenator-ul este un algoritm de wear leveling care scalează memoria flash de capacități mari și garantează cererile de performanță pentru centrele de stocare. • Numesc algoritmul de wear leveling Rejuvenator deoarece previne blocurile să atingă durata de viață rapid și le ține tinere.

  12. Principalii algoritmi • Algoritmul TrueFFS Mecanismul TrueFFS de wear leveling mapează unitățile șterse virtual într-un lanț de unități șterse fizic. Dacă nu există unități fizice libere în fondul comun, se produce întoarcerea, operație în care harta fiecărei unitați șterse virtual este schimbată cu una din lanțul de unități fizice. Datele valide din lanț sunt copiate pe o singură unitate fizică și unitățile fizice din lanț sunt eliberate. Acest lucru garantează o distribuire uniformă a numărului de ștergeri pe block-urile de stocare dinamică a datelor. • Se bazează pe periodicitate și procedeul round robin

  13. Principalii algoritmi • Algoritmul dual pool Un algoritm cu stare dublă menține două stări pentru block-uri-hot și cold. Block-urile sunt inițial alocate aleator stărilor hot și cold. Apoi pe măsură ce se termină update-urile starea asociată devine stabilă . • Dacă block-urile asociate stării hot sunt șterse peste un prag sigur conținutul este mutat în cele mai puțin utilizate block-uri din starea cold. • Dezavantaj: timpul pentru asocierea stărilor

  14. Dezavantaje • Pe lângă wear leveling, alte mecanisme cum sunt colectorul de gunoi și harta block-urilor fizice logice pot afecta performanțele și durata de viață a memoriei flash. • Tabelele de mapare sunt păstrate în RAM. Nivelul tehnicilor de mapare consumă o cantitate enormă de memorie deoarece conține informație de mapare despre fiecare pagină. S-a propus utilizarea unei scheme hibride de mapare pentru a beneficia de performanța la nivel de mapare a paginilor și pentru a eficientiza utilizarea spațiului la nivel de mapare a block-urilor. • Toate schemele de mapare hibridă folosesc un set de block-uri înregistrate pentru a reține update-urile și pentru a le scrie block-urile de date corespunzătoare. Block-urile înregistrate sunt mapate la nivel de pagină în timp ce block-urile de date sunt mapate la nivel de block. • DFTL stochează o porțiune a tabelului pentru maparea paginilor și restul tabelelor în memoria flash însăși. Acest procedeu reduce cerințele de memorie pentru tabelul de mapare la nivel de pagină.

  15. Algoritmul Rejuvenator • Se păstrează o mapare la nivel de pagină pentru stocarea block-urilor cu date hot și o mapare la nivel de block-uri pentru block-urile care stochează date cold. • Identificarea datelor hot și cold este o parte integrantă a Rejuvenator-ului. Pentru idetificare se utilizează o fereastră simplă bazată pe scheme ce conțin contor pentru a determina care adrese logice sunt hot. Dimensiunea ferestrei este fixa și acoperă adresele logice care sunt accesate în trecutul apropiat. În orice moment adresele logice care au valori mari ale contorului în fereastră sunt considerate hot.

  16. Descrierea algoritmului • Rejuvenator-ul menține τ liste de block-uri. Diferența dintre numărul maxim de ștergeri al fiecărui block și numărul minim de ștergeri al fiecărui block este mai mică sau egală cu pragul τ. Fiecărui block îi este asociat numărul listei egal cu numărul ștergerilor sale. Câteva liste pot fi goale. Inițial tuturor block-urilor le este asociată lista cu numarul 0. Pe măsură ce block-urile sunt updatate vor fi promovate la liste cu număr mai mare. Notez numărul minim de ștergeri cu win_wear și numărul maxim de ștergeri cu max_wear. Fie diferența dintre max_wear și min_wear notată cu diff. Fiecare bloc poate avea trei tipuri de pagini: valide, invalide sau curate. • Fie m o valoare intermediară între min_wear și min_wear + (τ-1). Block-urile care au contorul între min_wear și min_wear+ (m-1) sunt folosite pentru stocarea datelor hot și block-urile care aparțin listelor cu număr ridicat sunt folosite pentru a stoca date cold.

  17. ALGORITMUL 1 Eveniment= Cererea de scriere in LBA (Logical Block Address) Dacă LBA are o hartă pagină atunci Dacă LBA este cald atunci Scrie într-o pagină dintr-o listă cu număr mic Updatează harta pagină Altfel Scrie pagina într-o listă cu număr mare (sau într-un block înregistrat) Updatează harta block-urilor Altfel dacă LBA este cald atunci Scrie într-o pagină dintr-o listă cu număr mic Invalidează (datele) fiecărei harți block asociate Updatează harta paginilor Altfel dacă LBA este cold atunci Scrie pe opagină dintr-o listă cu număr mare (sau block înregistrat) Updatează harta block-urilor Sfarșit ALGORITMUL 2: . Mutarea datelor Dacă Numărul de block-uri șterse în listele cu număr mic < TL atunci Mută datele block-urilor din lista cu numărul între min_wear și min_wear la block-urile din listele cu număr mare Colectează gunoiul block- urilor din lista cu numărul între min_wear și min_wear+(τ-1) Dacă Numărul de block-uri șterse din lista cu număr mare <TH atunci Mută datele block-urilor din lista cu numarul min_wear la block-urile din lista cu număr mic Colectează gunoiul block-urilor din lista cu numerele între min_wear și min_wear+(τ-1) Sfârșit Algoritmii Rejuvenator

  18. Descriere Algoritm 1 • Algoritmul 1 încearcă să stocheze blocurile hot de date în liste numerotate între min_wear și min_wear + (m-1). Acestea sunt block-urile care au fost șterse de un număr mic de ori și au o rezistentă mai bună. De acum, numerele listelor vor fi date de la min_wear la min_wear+ (m-1), pentru listele cu numere mici, și de la min_wear la min_wear + (τ-1), pentru listele cu numere mari.

  19. Dacă o singură pagină într-un block care a fost mapată la nivel de block devine hot • Prima opțiune este de a schimba maparea fiecărei pagini din block în mapare la nivel de pagină. Cea de-a doua opțiune este să se schimbe maparea doar pentru pagina hot din mapare la nivel block în mapare la nivel pagină și să se lase restul block-ului mapat la nivel block. • Pentru ultima opțiune: • Aceasta lasă block-ul fragmentat datorită corespondenței paginilor fizice cu paginile hot care mai conțin date invalide. Această fragmentare este înca acceptată fiindcă evită maparea la nivel pagină nenecesară. În acest experiment s-a gasit o fragmentare mai mică de 0.001% a întregii capacitați memoriei flash.

  20. Dacă o singură pagină într-un block care a fost mapată la nivel de block devine hot • Când o pagină hot dintr-o listă cu număr mic este updatată, o nouă pagină aparținând block-ului listelor de număr mic va fi utilizată. Acest lucru este făcut pentru a reține datele hot în block-uri din asociate listelor cu număr mic. Când update-ul este făcut paginilor asociate listelor cu numere mici și este identificat un block cold.Se verifică maparea block-urilor din LBA. Întrucât LBA are deja o mapare la nivel de pagini, pagina corespunzătoare mapării block-urilor fizice va fi goală sau invalidă. Datele sunt scrise pe pagina corespunzătoare în block-ul fizic mapat (dacă pagina fizică este liberă) sau într-un block înregistrat (dacă pagina fizică este marcată ca invalidă sau nu este liberă). Dacă nu este niciun block mapat asociat cu LBA, acesta va fi scris într-unul din block-urile goale aparținând listelor cu număr mare deci datele cold sunt plasate în mai multe block-uri utilizate.

  21. Dacă o singură pagină într-un block care a fost mapată la nivel de block devine hot • Similar când o pagina din block-ul aparținând unei liste cu număr mare este updatată, dacă ea conține date cold, este stocată într-un block nou cu liste numerotate cu număr mare. Întrucât aceste block-uri sunt mapate, update-urile trebuie să se facă în block-uri înregistrate. Unui block înregistrat îi poate fi asociat orice block de date. Block-urile de date și block-urile înregistrate sunt îmbinate la colectarea de gunoi. Această schemă este folosită numai pentru block-urile de date cold care au un număr foarte mic de update-uri. Astfel numărul cerut al block-urilor înregistrate este mic. Un potențial dezavantaj al schemei este faptul că block-urile înregistrate conțin date hot rămân valide, mare parte dintre ele. În timpul colectării de gunoi, pot exista multe operații scumpe de îmbinare completă între paginile valide ale unui block înregistrat și block-urile de date asociate lor. În cadrul acestor operații este nevoie ca datele să fie copiate pe un block curățat și apoi block-urile de date și cele înregistrate sunt șterse.

  22. Colectarea de gunoi • Colectarea de gunoi este facută începând de la block-urile listelor cu număr redus și apoi ajungând până la listele cu număr mare. Motivele din spatele acestui process sunt două: Primul motiv este datorat block-urilor listelor cu număr mic care stochează datele hot, ele tind să aibă mai multe pagini invalide. Definesc curățarea eficientă a block-urilor cu formula:

  23. Colectarea de gunoi • Dacă eficiența curațării unui block este mare, atunci mai puține pagini trebuie copiate înainte de ștergerea block-ului. Block-urile din listele cu număr mic au o eficienta mai mare a curățării deoarece stochează date hot. Al doilea motiv pentru colectarea de gunoi de la lista cu număr mic este acela că block-urile acestui tip de liste au număr mai mic de ștergeri. Colectarea de gunoi implică operații de ștergere așa că este totdeauna mai bine să realizeze colectarea de gunoi mai întâi pentru block-urile cu număr mic de ștergeri.

  24. Avantajele Wear leveling-ului static • Wear leveling-ul static mută datele cold din block-uri cu număr mic de ștergeri în block-uri cu număr mai mare de ștergeri. Se eliberează astfel mai puține block-uri uzate care pot fi folosite pentru stocarea datelor cold. De asemenea împrăștie ulterior uzura block-urilor. Rejuvenator-ul realizează acest lucru într-un mod bine determinat și numai când este necesar. Mutarea datelor cold este de obicei făcută schimbând datele cold ale unui block (cu număr mic de ștergeri) cu datele altui block cu număr mare de ștergeri. În cadrul Rejuvenator-ului acest proceseu este făcut sistematic. • Operațiile algoritmului Rejuvenator pot fi vizualizate într-o fereastră de mutare unde dimensiunea ferestrei este τ ca în figura 1. Figure 1 Funcționarea algoritmului Rejuvenator [30]

  25. Adaptarea parametrului τ • Aspectul cheie al Rejuvenator-ului este că parametrul τ este ajustat potrivit duratei de viața a block-urilor. Valoarea acestui parametru poate fi mare la început, când block-urile sunt departe de atingerea duratei lor de viață. Pe măsură ce block-urile se apropie de durata de viață τ se decrementează. Către sfârșitul duratei de viață a memoriei flash valoarea lui τ este foarte mică. Pentru a-și atinge scopul se adoptă două metode de decrementare a valorii lui τ.

  26. Figure 2 Decrementarea liniara a lui τ Figure 3 Decrementarea neliniara a lui τ Adaptarea parametrului τ

  27. Decrementarea liniară • Notez diferența dintre 100K (numărul maxim de ștergeri pe care un block o poate suporta) și max_wear (numărul maxim de ștergeri existent pentru block-urile din memorie) cu life_diff. Pe măsură ce block-urile sunt folosite, valoarea lui τ este r% din life_diff. Pentru realizarea experimentului se va seta valoarea lui r la 10%. Pe măsură ce valoarea lui max_wear crește, valoarea lui life_diff scade liniar și la fel și valoarea lui τ. Figura 2 ilustreaza modelul de descreștere a valorii lui τ în schema liniară.

  28. Decrementarea neliniară: • Decrementarea liniară uniformă reduce valoarea lui τ cu r% de fiecare atunci când decrementarea este declanșată. Dacă este nevoie de un control mai eficient, valoarea lui τ trebuie modificată neliniar adică, decrementarea lui τ trebuie făcută inițial mai lent și mai rapid către sfârșit. Figura 3 ilustrează această schemă. Se alege curba din figura 3 și i se setează valoarea pantei, curbei corespunzătoare valorii life_diff, ca τ. Se poate vedea că rata de descreștere a lui τ este mult mai abruptă la sfârșitul duratei de viață.

  29. Adaptarea parametrului m • Ajustarea a lui m ajută la reducerea migrării datelor. Când valoarea lui m este incrementată sau decrementată, tipul de mapare a block-urilor (la nivel de block sau la nivel de pagină) nu este schimbat imediat. Maparea este schimbată la tipul relevant doar la primirea cererilor de scriere după incrementarea sau decrementarea parametrului m. Din această cauză o parte din block-uri asociate listelor numerotate cu numere mici vor rămâne mapate la nivel de block-uri. Problemă este rezolvată în timpul wear leveling-ului static și operațiunilor de colectare de gunoi.

  30. Comparatia algoritmilor Figure 4 Numărul de cereri de scriere realizate înainte ca primul block sa atingă durata de

  31. Comparatia algoritmilor Figure 7 Distribuția numărului de ștergeri pe block-uri

  32. Vă mulțumesc! Intrebări?

More Related