Skocz do zawartości

Ciekawostka o dyskach SSD


Rekomendowane odpowiedzi

Niestety. od razu mówię, że jak ktoś nie ma czasu na całkiem pokaźną dawkę ironii - to niech nie czyta, bo straci czas. Artykuł, do którego wrzucę link - jest formą ciekawostki przyrodniczej, ktora mozna przyrownac do bardzo słabej komedii SF.

 

http://www.chip.pl/artykuly/porady/2009/11/optymalizacja-windows-pod-katem-dyskow-ssd?b_start:int=0

 

Pamietam czasy, gdy czasopisma CHIP, PCWorld czy Komputer Swiat uchodzily za czasopisma fachowe i rzeczowe. Przynajmniej w moich oczach, a, ze oczka mialem małe, bo i lat mało liczyłem - to sentyment został. O ile rzadko czytuje porady na owych stronach, programow nie zasysam wcale, o tyle czasem google nakieruje na jakis artykul. Tak bylo i tym razem. Czuje sie oszukany i okradziony z dziecinstwa.Tytul, ktory cieplo mi sie kojarzyl, zostal calkowicie zbrukany! Ale mniejsza o moje osobiste wynurzenia. Do rzeczy:

 

Na poczatek krzykliwy, tabloidowy wstep, oczy kazdego uzytkownika skupiaja sie na wzmiance o mozliwosci uszkodzenia. Przekaz prosty - system psuje dysk! Pierwsze słyszę, że eksploatacje - nawet tą wzmożoną, nazywano kiedykolwiek uszkodzeniem. To tak jakby ktoś mądry odkrył, że jeżdzenie samochodem psuje samochód.

Jedziemy dalej z mądrościami. 

 

Przy opisie Wear Leveling są wspomniane dwie metody, moja wiedza o dyskach ssd jest bardzo podstawowa, w przeciwienstwie do tradycyjnych dyskow, ale i tak uwazam, ze opisane tutaj zjawiska sa bardzo uproszczone. Wg. artykułu pierwsza metoda to dbanie o to, aby każdy blok był zapisywany równomiernie (od razu w oczy się rzuca niefachowa nomenklatura w tekście), rzecz stara jak swiat, i nawet laik moze sobie to wyobrazic. Druga porusza ciekawszy problem - mianowicie: zapisane bloki, które nie zmieniaja swojej zawartosci - np. duze programy, musza z definicji byc waskim gardlem i uniemozliwic pelne wykorzystanie metody pierwszej. Wiec sa przenoszone w miejsca bardziej "zużyte". Wiadomo w jakim celu - miejsca, w ktorych operacji zapisu bylo malo - znowu sa mozliwe do zapisania w celu wyrownania sumarycznej ilosci operacji zapisu. Wydawalo by sie, ze to logiczne, moze niezbyt proste, bo wiadomo, ze diabel tkwi w szczegolach, ale na pewno logiczne.

 

Dalsza część artykułu całkowicie przeczy tym dwóm podstawowym zasadom. Jestem zszokowany ilością bzdur i głupot.

Prosty przykład:

 

"Podczas zapisu sterownik dysku ustala najpierw, które bloki zostaną wtedy użyte, przenosi zawartość znalezionych w nich stron, które nie mogą zostać skasowane, do pamięci pośredniej, po czym czyści w tych blokach wszystkie komórki. Dopiero wtedy może zapisać na pustych stronach nowy plik, dokładając do tego tymczasowo przesunięte dane. W efekcie tego obniża się szykość zapisu o około 40 proc., nawet w przypadku dobrych SSD."

 

Moim zdaniem to nie sterownik zajmuje się ustalaniem bloków, a firmware. Niewazne. Zastanawia mnie fakt - dlaczego dysk najpierw musi czyścić bloki i wszystkie komórki, bo niby tylko wtedy moze na nich cos zapisac? Dlaczego nie może nadpisać? Mamy jakieś cyfrowe dane: 1011100101010111 - to dlaczego dysk ma najpierw wszedzie wprowadzic 0 badz 1 (albo i to i to) - zeby na nowo wprowadzic zera i jedynki? Czy to nie jest zaprzeczeniem dbania o nienadmierna eksploatacje dysku?

 

Pozwole sie nie odnosic do wszystkich zauwazonych paradoksow, ale na szczegolna uwage zasluguje ten odcinek:

"Na przykład Windows XP domyślnie zaczyna partycję systemową na 126 sektorze dysku twardego, który w przypadku SSD leży w środku jednej ze stron. To niekorzystne, ponieważ przy takim niedopasowaniu XP często wykorzystuje wtedy tylko połowę stron w bloku."

 

Jeśli się mylę - to obiecuję, że w ramach rekompensaty spędzę na forum 10 godzin i to na first desk'u, niczym doktor House w karnych godzinach w przychodni. To jest zaprzeczenie tego o czym było wcześniej.

Druga sprawa - śmiem twierdzić, że i w dyskach SSD jest jakaś analogia do translacji LBA na CHS. Analogia, bo jak wiemy, dysk SSD nie zawiera głowic. Co do cylindrów, wcześniej była mowa o Multi Level Cells (MLC). Myślę, że jest to więc jakaś analogia, przynajmniej ja tak to sobie wyobrażam.

 

I moje pytanie do Was, drodzy Czytelnicy i Współtowarzysze - jestem aż tak niedoinformowany i niedouczony czy może to autor wspomnianej publikacji propaguje wierutne bzdury?

 

Swoja droga, macie moze jakies ciekawsze i madrzejsze publikacje, artykuly, dane?

Odnośnik do komentarza
Pomoc jest darmowa, ale proszę rozważ przekazanie dotacji na utrzymanie serwisu: klik.

Jestem zszokowany ilością bzdur i głupot. Prosty przykład:

 

"Podczas zapisu sterownik dysku ustala najpierw, które bloki zostaną wtedy użyte, przenosi zawartość znalezionych w nich stron, które nie mogą zostać skasowane, do pamięci pośredniej, po czym czyści w tych blokach wszystkie komórki. Dopiero wtedy może zapisać na pustych stronach nowy plik, dokładając do tego tymczasowo przesunięte dane. W efekcie tego obniża się szykość zapisu o około 40 proc., nawet w przypadku dobrych SSD."

 

Zastanawia mnie fakt - dlaczego dysk najpierw musi czyścić bloki i wszystkie komórki, bo niby tylko wtedy moze na nich cos zapisac? Dlaczego nie może nadpisać? Mamy jakieś cyfrowe dane: 1011100101010111 - to dlaczego dysk ma najpierw wszedzie wprowadzic 0 badz 1 (albo i to i to) - zeby na nowo wprowadzic zera i jedynki? Czy to nie jest zaprzeczeniem dbania o nienadmierna eksploatacje dysku?

Wszystkie zasoby, jakie sprawdzałem potwierdzają konieczność kasowania całego bloku przed ponownym zapisem. Więc albo przepisują z jednego źródła, albo tak jest faktycznie. Możliwe też, że obie te wersje są prawdziwe :)

Niestety nie znalazłem wyjaśnienia tego mechanizmu. 

Na potrzeby tego wpisu stworzyłem więc sobie teorię, którą spróbuję przybliżyć przez analogię. Z góry zastrzegam, że nie wiem, czy tak to działa, po prostu tak to sobie wyobrażam.

Weźmy kartkę papieru i narysujmy na niej kratki. Każda kratka to komórka pamięci - można w niej zapisać 1 bit informacji. Niech znak X reprezentuje wartość logiczną 1, a brak znaku (pusta kratka) wartość 0. Żeby zmienić zawartość komórki wystarczy wykonać jedną operacje. Wpisać ołówkiem znak X, gdy wcześniej była pusta lub wymazać gumką, gdy wcześniej zawierała X. Tak działa pamięć zbudowana z komórek SLC (singiel level cell). 

Ponieważ praktycznie wszystkie współczesne dyski zbudowane są w technologii MLC, każda ich komórka może reprezentować 2 bity (4 stany logiczne). Niech pusta komórka reprezentuje wartość 00, znak X - 01, trójkąt - 10, a kwadrat 11. Teraz żeby zmienić zawartość komórki trzeba wykonać dwie operacje - usunąć dotychczasową zawartość i wpisać nową. Wyjątkiem jest sytuacja gdy wyjściową wartością jest 00. Być może jednak użycie dwóch metod zapisu oddzielnie dla pustych komórek i dla pozostałych trzech stanów jest nieopłacalne (wymaga przeprowadzenia kolejnych operacji).

Jeszcze raz podkreślam, że to tylko moje przypuszczenia. W dodatku nie wyjaśniają konieczności kasowania całego bloku.

 

Moim zdaniem to nie sterownik zajmuje się ustalaniem bloków, a firmware.

Chyba raczej kontroler.

 

Swoja droga, macie moze jakies ciekawsze i madrzejsze publikacje, artykuly, dane?

Ja znalazłem m.in. coś takiego.

Odnośnik do komentarza
  • 1 miesiąc temu...
Przy opisie Wear Leveling są wspomniane dwie metody, moja wiedza o dyskach ssd jest bardzo podstawowa, w przeciwienstwie do tradycyjnych dyskow, ale i tak uwazam, ze opisane tutaj zjawiska sa bardzo uproszczone. Wg. artykułu pierwsza metoda to dbanie o to, aby każdy blok był zapisywany równomiernie (od razu w oczy się rzuca niefachowa nomenklatura w tekście), rzecz stara jak swiat, i nawet laik moze sobie to wyobrazic. Druga porusza ciekawszy problem - mianowicie: zapisane bloki, które nie zmieniaja swojej zawartosci - np. duze programy, musza z definicji byc waskim gardlem i uniemozliwic pelne wykorzystanie metody pierwszej. Wiec sa przenoszone w miejsca bardziej "zużyte". Wiadomo w jakim celu - miejsca, w ktorych operacji zapisu bylo malo - znowu sa mozliwe do zapisania w celu wyrownania sumarycznej ilosci operacji zapisu. Wydawalo by sie, ze to logiczne, moze niezbyt proste, bo wiadomo, ze diabel tkwi w szczegolach, ale na pewno logiczne.

To nie jest takie proste. Tym wszystkim sterują dosyć skomplikowane algorytmy. Trzeba pamiętać o tym, że takie przenoszenie danych to jednak są kolejne operacje zapisu i trzeba się najpierw upewnić, że przenoszenie danych w ogóle jest opłacalne.

Moim zdaniem to nie sterownik zajmuje się ustalaniem bloków, a firmware. Niewazne. Zastanawia mnie fakt - dlaczego dysk najpierw musi czyścić bloki i wszystkie komórki, bo niby tylko wtedy moze na nich cos zapisac? Dlaczego nie może nadpisać? Mamy jakieś cyfrowe dane: 1011100101010111 - to dlaczego dysk ma najpierw wszedzie wprowadzic 0 badz 1 (albo i to i to) - zeby na nowo wprowadzic zera i jedynki? Czy to nie jest zaprzeczeniem dbania o nienadmierna eksploatacje dysku?

Tak jak napisał gajowy, zajmuje się tym kontroler. Możesz sobie poszukać w necie informacji o czymś, co nazywa się Flash Translation Layer (FTL).

Dyski SSD działąją inaczej niż dysku HDD i w ich przypadku trzeba wyczyścić blok zanim będzie można w nim wykonać zapis. Tutaj nie ma zapisu bajt po bajcie, tylko zapisywane są całe strony. Całkiem ładnie jest to wyjaśnione tutaj.

Pozwole sie nie odnosic do wszystkich zauwazonych paradoksow, ale na szczegolna uwage zasluguje ten odcinek:

"Na przykład Windows XP domyślnie zaczyna partycję systemową na 126 sektorze dysku twardego, który w przypadku SSD leży w środku jednej ze stron. To niekorzystne, ponieważ przy takim niedopasowaniu XP często wykorzystuje wtedy tylko połowę stron w bloku."

 

Jeśli się mylę - to obiecuję, że w ramach rekompensaty spędzę na forum 10 godzin i to na first desk'u, niczym doktor House w karnych godzinach w przychodni. To jest zaprzeczenie tego o czym było wcześniej.

No cóż, nie mam do Ciebie dobrych wiadomości. Z przyczyn historycznych jest to niestety prawdą.Kiedyś bardzo dawno temu na ścieżkę przypadały 63 sektory, W czasach XPka nie było jeszcze dysków SSD ani dysków HDD o sektorach większych niż 512kB i w sumie nie miało to wielkiego znaczenia, więc tak to zostawiono. Potem pojawiły się dyski z sektorami 4kB (wyszukaj w necie frazy Advanced Format) i pojawił się problem, bo okazało się, że XP potrafi zaczynać partycję gdzieś w połowie sektora, co oczywiście jest nieporządane. Pojawiły się specjalne narzędzia do naprawiania tego (szukać frazy disk alignment). Tak, czy siak XP rzeczywiście tworzy pierwszą partycję zaczynając od sektora 126, który rzeczywiście leży w środku strony. Co więcej jeśli na dysku jest więcej partycji, to początki kolejnych partycji również mogą wyladować gdzieś w środku strony. W Viście działa to poprawnie przez przypadek.

Warto sobie przeczytać ten artykuł.

Druga sprawa - śmiem twierdzić, że i w dyskach SSD jest jakaś analogia do translacji LBA na CHS. Analogia, bo jak wiemy, dysk SSD nie zawiera głowic. Co do cylindrów, wcześniej była mowa o Multi Level Cells (MLC). Myślę, że jest to więc jakaś analogia, przynajmniej ja tak to sobie wyobrażam.

Poza MLC istnieje jeszcze coś takiego jak SLC (Single Level Cell) oraz ostatnio również TLC (Triple Level Cell). Te nazwy odnoszą się do gęstości upakowania danych na dysku.

Jeśli chodzi o translację adresów logicznych na fizyczne, to oczywiście coś takiego się odbywa, ale cały ten proces jest nieco bardziej zakręcony. Być może informacje z moich wcześniejszych linków oraz te, które wyskoczą po wyszukaniu FTL coś rozjaśnią.

I moje pytanie do Was, drodzy Czytelnicy i Współtowarzysze - jestem aż tak niedoinformowany i niedouczony czy może to autor wspomnianej publikacji propaguje wierutne bzdury?

 

Właściwie, to ten artykuł wydaje się całkiem ok. Pewne rzeczy są wyjaśnione po łebkach, ale raczej nie było celem artykułu, by dokładnie wyjaśniać zawiłości działania dysków SSD.

Odnośnik do komentarza

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...