Równoważenie zużycia
Równoważenie zużycia to wykorzystywanie różnych metod optymalizacji zapisu, pozwalających na wydłużanie czasu, przez który nośnik danych jest zdatny do użycia. Najczęściej jest ono stosowane w pamięciach flash - głównie dyskach SSD.
Pojęcie to jest również używane przez firmę Western Digital do opisu techniki konserwacji produkowanych przez nią dysków twardych, jednak w ogólności dyski nie są urządzeniami dobrze równoważącymi zużycie.
Uzasadnienie
[edytuj | edytuj kod]Nośniki EEPROM oraz pamięci flash składają się z indywidualnie kasowanych segmentów, z których każdy może być poddany takiej procedurze jedynie skończoną liczbę razy, po upływie której segment nie będzie już przechowywał danych w sposób wiarygodny. Liczba cykli kasowania mieści się w przybliżeniu w przedziale od 1000 do 100000. Żywotność dysków optycznych takich jak CD-RW oraz DVD-RW ocenia się na najwyżej 1000 cykli, a dysków DVD-RAM na 100000 cykli. W przypadku pamięci flash liczba kasowań segmentów jest zależna głównie od technologii, w jakiej została ona wykonana. Jeśli jest to technologia SLC, to liczba ta może wynosić nawet ponad 100000, gdy technologią jest MLC - to już tylko 3000 do 5000 cykli. W przypadku pamięci TLC to zaledwie 500 cykli kasowań pojedynczego segmentu[1].
Ze względu na powyższe ograniczenia technologiczne nośników danych zostały podjęte próby równoważenia ich zużycia. Polegają one głównie na zastosowaniu odpowiednich algorytmów w urządzeniach zapisujących, które zapewniają równomierne rozkładanie operacji ponownego zapisu danych po całej przestrzeni nośnika. W ten sposób wszystkie segmenty mają podobną liczbę cykli kasowań, co pozwala zapobiegać przedwczesnemu zużyciu nośnika, które mogłoby mieć miejsce w przypadku zwiększonej liczby cykli zapisu w jednym jego obszarze.
Tradycyjne systemy plików, takie jak FAT, ext2 czy NTFS, były projektowane z myślą o dyskach magnetycznych i jako takie wielokrotnie wykonują operacje nadpisywania swoich struktur danych (takich jak np. katalogi) w to samo miejsce pamięci. Niektóre systemy plików wykonują ponadto wiele dodatkowych operacji dyskowych jak np. rejestrowanie czasów ostatniego dostępu do plików, pogarszając jeszcze bardziej to niekorzystne zjawisko.
Techniki
[edytuj | edytuj kod]Istnieje kilka technik wydłużania czasu życia nośnika:
- W celu wykrycia potencjalnych błędów lub w celu eliminacji błędów można przechowywać sumę kontrolną lub kod korekcji błędu dla każdego sektora lub bloku
- Można również przechowywać pulę rezerwowych bloków/sektorów. W przypadku awarii sektora lub bloku wszystkie przyszłe odczyty i zapisy mogą być przekierowywane do zastępczej lokalizacji w puli rezerwowej
- Bloki/sektory na nośniku mogą być śledzone przy pomocy pewnego rodzaju kolejki LRU. Struktura danych reprezentująca tę kolejkę musiałaby być przechowywana poza nośnikiem lub na nośniku, ale w taki sposób, żeby przestrzeń, którą wykorzystuje, była sama w sobie zrównoważona pod względem użycia.
W urządzeniach z pamięcią flash, takich jak CompactFlash czy Secure Digital, techniki te zostały zaimplementowane na poziomie sprzętowym przy pomocy wbudowanego mikrokontrolera. Równoważenie zużycia działa na nich przezroczyście i większość tradycyjnych systemów plików może być w tych urządzeniach używanych.
Równoważenie obciążenia może zostać również zaimplementowane na poziomie oprogramowania, tak jak ma to miejsce w przypadku specjalizowanych systemów plików, takich jak JFFS2 czy YAFFS na nośnikach typu flash lub UDF na nośnikach optycznych. Wszystkie trzy są systemami plików o strukturze dziennika, co oznacza, że traktują one nośnik jako dziennik, do którego zapisują dane w cyklicznych przebiegach.
Przypisy
[edytuj | edytuj kod]- ↑ Broadcom Limited | Connecting Everything [online], www.lsi.com [dostęp 2017-11-26] [zarchiwizowane z adresu 2013-11-24] (ang.).
Linki zewnętrzne
[edytuj | edytuj kod]- TN_017_TrueFFS_Wear_Leveling_Mechanism.pdf TrueFFS(R) Wear-Leveling Mechanism – By Dmitry Shmidt (May 20, 2002)
(M-Systems Technical Note TN-DOC-017 Rev. 1.1 91-SR-002-55-7L)
- Flash SSD wear-leveling and error-correction description by BiTMICRO.. bitmicro.com. [zarchiwizowane z tego adresu (2007-02-02)].