Retro Komputery / Programowanie / Motoryzacja / Polityka

Pamięć komputera od Eniaca do Dysków SSD

Do napisania tego tekstu zainspirowała mnie dyskusja w grupie Secret Level dotycząca nowoczesnych dysków SSD i ich wad wynikających z ich konstrukcji. Nie wiem jak inni, ale ja po prostu lubię wiedzieć jak jest coś zrobione i dlaczego jest to zrobione tak a nie inaczej.. Tekst ten nie będzie obejmował jedynie dysków SSD, a wszelkie rodzaje pamięci operacyjnej i masowej które doprowadziły do powstania dzisiejszych fizycznych nośników informacji jak pen-drive, dyski SSD zachaczając nawet  początków komputeryzacji i ówczesnych pomysłów konstruktorów na zapamiętywanie zer i jedynek. Tekst powstawał kilka dni To zaczynamy….

Logika komputerów, system dwójkowy a fizyka

Jak wiemy komputery dzisiejsze działają w oparciu o system binarny. Początkowo komputery analogowe działały w systemie dziesiętnym, co było naturalne dla dziesięcio-palczastych ludzi, dla komputerów już niestety mniej. Takim analogowym-dziesiętnym komputerem był sławny ENIAC, uważany przez lata za pierwszy elektroniczny komputer (ciekawostka: nie posiadał on pamięci – wszystko ustawiano na stałe przełącznikami i przewodami !!!). Szybko zauważono, że maszyna taka niestety robi wiele błędów i jest mało wydajna … uczeni matematycy wpadli wtedy na pomysł zastosowania systemu dwójkowego, który w łatwy sposób można przedstawić elektronicznie jako dwa stany napięcia  … tak w 1949 powstał EDVAC – pierwszy cyfrowy komputer z własną pamięcią. Ale wracając do tematu fizyki … pomysł zastosowania systemu dwójkowego był genialny w swej prostocie a za razem „naturalny” dla elektroniki… ustalono po prostu, że dwie cyfry arytmetyki reprezentowane będą przez napięcie lub jego brak, więc 1 zwana stanem wysokim to „jest napięcie”, a 0 nazywane stanem niskim to  „brak napięcia” czyli zwarcie do masy układu…  to rozwiązanie stosowane jest do dziś w każdym elemencie każdego komputera.  Aby stworzyć komputer który działa w ten sposób potrzebny jest jakiś element elektroniczny który będzie działał jak sterowany przełącznik…..np, tradycyjny przekaźnik , lampa elektronowa typu trioda, czy tranzystor … wszystkie trzy wymienione elementy mają  cechę wspólną – w uproszczeniu posiadają trzy nóżki z których dwie są wejściami prądu a trzecia wyjściem… w dodatku na trzeciej pojawia się prąd tylko gdy jest obecny na dwóch pozostałych…. taki element wg matematyki pozwala nam zbudować dowolny układ logiczny wykonujący operację na algebrze dwójkowej.

Typy pamięci w komputerze

Tak na prawdę w komputerach używa się jedynie dwóch rodzajów pamięci. Pierwsza to pamięć operacyjna i z reguły dane w takiej pamięci przechowywane są tylko do momentu wyłączenia zasilania urządzenia. Druga to pamięć stała, która przechowuje dane nawet po odłączeniu zasilania – z uwagi na zastosowanie jej jako nośnika na dane wejściowe, program i wyniki obliczeń to dostęp do niej może być dużo wolniejszy niż do pamięci operacyjnej na której wykonywane są obliczenia. Przyjęło się, że pamięć operacyjną nazywa się RAM – jest to jednak błędne, gdyż może być ona zrealizowana przy pomocy całkiem innej technologii, po prostu w dzisiejszych komputerach pamięć operacyjna jest de facto pamięcią typu RAM, kiedyś to jednak nie było takie oczywiste.

Najprostsza komórka przechowująca dane, budujemy pamięć Static RAM 🙂

Jak już wspomniałem stosując dowolny element działający jako przełącznik (a właściwie jakąś ich określoną ilość) można wykonać dowolny układ dwójkowy. W uproszczeniu będę pisał o tranzystorze bipolarnym, ale może to być trioda, przekaźnik, tranzystor polowy itp. Tak na prawdę, żeby zrozumieć działanie pamięci musimy znać zasadę działania dwóch podstawowych elementów elektronicznych tranzystora (który jest podstawą układu)  i kondensatora, przy tym do póki mówimy o pamięci ulotnej … wystarczy nam sam tranzystor.

Otóż tranzystor jest to element elektroniczny posiadający trzy elektrody Emiter, Kolektor i Bazę. W środku jest płytka półprzewodnika z odpowiednimi domieszkami. Zasada działania tranzystora jako przełącznika jest prosta – w dużym uproszczeniu przewodzi on prąd z kolektora do emitera tylko wtedy gdy na bazie też jest też prąd … działa on tak jak zawór od wody, który można odkręcić albo zakręcić (myślę, że tą analogię będę wykorzystywał częściej) – tak samo działa lampa elektronowa czy przekaźnik stykowy, jedynie napięcia i prądy będą różne dla różnych technologii. Baza jest w tym przypadku jakby pokrętłem sterowanym poprzez ciśnienie wody w trzeciej rurce. Takich elementów można użyć kilka i  tak je połączyć, żeby uzyskać układ przepływu wody, który będzie „pamiętał” jak woda ma płynąc – taki najprostszy układ to tzw zatrzask typu SR który jest już komórką pamięci – oto schemat (ukradziony z google):

Zatrzask typu SR

Zatrzask typu SR

Zasada działania jest taka – mamy dwie diody LED i dwa przełączniki mechaniczne oraz dwa tranzystory połączone ze sobą „na krzyż”. Używając przycisków i zwierając do masy bazę jednego lub drugiego tranzystora zapalamy jedną lub drugą lampkę – gdy zapala się jedna to druga gaśnie … jak widać układ „zapamiętuje” ostatnio wciśnięty przycisk.  Jeżeli teraz oznaczymy sobie przyciski jako S(ET) R(ESET) a diody jako Q i „nie Q” to okaże się, że ignorując istnienie diody pokazującej „nie Q” mamy super prosty bistabilny układ sterujący zapalaniem wyjścia Q i zapamiętujący ostatnio wciśnięty przycisk. Ok to był najprostszy układ pamięciowy, ale w komputerze przydałoby się to zrobić lekko inaczej, najlepiej tak, żeby jedna linia dostarczała wartość a druga była zapalana jako sygnał „zapamiętaj” … taki element to też zatrzask ale tym razem typu D … jak go skonstruować … potrzebne nam będzie kilka bramek logicznych typu NAND, czyli takich układów tranzystorów które będą wykonywać operację logiczną dodawania z odwrotnością – Zaczynamy od samej bramki NAND:

Schemat bramki NAND

Schemat bramki NAND

Przy pomocy trzech oporników i dwóch tranzystorów stworzyliśmy układ zwany bramką NAND. Od teraz to będzie nasz klocek… jak widać ma on dwa wejścia A,B i jedno wyjście Q dające nam wynik operacji NAND, dodatkowo ma 2 nóżki zasilania. Jeżeli teraz weźmiemy sobie 5 takich klocków i połączymy je tak jak na schemacie to otrzymamy … zatrzask typu D:

Zatrzask typu D

Zatrzask typu D

 

Ma on 6 nóżek …. istnienie „nie Q” możemy pominąć bo nie jest nam to zbyt potrzebne, gdzieś tam są też nóżki zasilania i masy .. zostają trzy D, E i Q. Q to nasze wyjście pod które podłączamy diodę, pod D i E podłączamy przyciski. Jak to teraz działa … ustawiamy na D wartość bitu który chcemy zapamiętać … Na chwile przełączamy E na stan wysoki i wyłączamy. Lampka się zaświeca … Od tego czasu możemy przełączać D jak chcemy i nie wpłynie to na zmianę Q… aż do momentu gdy znów przełączymy na chwilę E – wartość D zostanie wtedy skopiowana na Q…. Teraz połączmy 8 takich zatrzasków i zewrzyjmy ich linie E razem … da nam to 8 linii danych D1, D2, D3 itp. linię E i osiem wyjść Q1, Q2, Q3 …Q8 pozwalając na zapamiętanie jednego bajtu. Gratulacje właśnie stworzyliśmy rejestr osmiobitowy, czyli pamięć SRAM o pojemości 1 bajta – (ciekawostka: takich właśnie pojedynczych rejestrów mamy w każdym CPU od kilku do kilkudziesięciu i jest to jedyna pamięć na której CPU potrafi coś liczyć – czyli dane zawsze są kopiowane z pamięci operacyjnej do pamięci procesora a następnie wynik dostępny też w rejestrze jest przepisywany z powrotem do pamięci operacyjnej). Użyliśmy do tego w sumie 10 tranzystorów i 15 oporników do przechowania jednego bajta danych. Jak przechować więcej … też nic trudnego … weźmy sobie tyle rejestrów ile danych chcemy przechować .. np 4 sztuki (40 tranzystorów). Musimy jakoś sobie zaadresować komórki pamięci – oznaczmy rejestry liczbami dwójkowymi 00, 01, 10, 11 – to są nasze adresy pamięci… teraz wystarczy że weźmiemy dwa układy proste układy logiczne multiplekser i demultiplekser … pierwszy z nich czyli multiplekser przyda nam się do sterowania odczytem:

Mux_from_3_state_buffers

drugi zaś do sterowania sygnałem E (demultiplekser jest lustrzanym odbiciem multipleksera – nie chce mi się wklejać schematu, mam nadzieję, że każdy zrozumie). Takich multiplekserów niestety potrzebujemy aż 8 dla każdej linii Qx naszych rejestrów. Zasada działania jest prosta … pod wejścia I0…I3 podłączamy wyjście Qx z danego rejestru… następnie sterując liniami sel1,sel2 wybieramy którą komórkę pamięci odczytujemy itd. demultiplekser działa odwrotnie – czyli zapala nam linie E zależnie od adresu…. jedyne czego brakuje to prostego przełącznika który na czas zapisu przełączy nam linie z wyjść na wejścia na rejestrach, gdy dołożymy taki układ mamy w pełni działającą pamięć Static RAM o zawrotnej pojemności 4 bajtów 🙂 .

Podsumowując nasz układ ma już kilka nóżek … zasilanie (VCC) i masę (GND), linie danych (D1..D8), linie adresowe (A1,A2), linię CS i linię RW – czyli przy 14 nóżkach mamy 4 bajtową pamięć 🙂 Co to jest linia CS … CS oznacza chip select – jest to linia którą zapalamy gdy chcemy odczytać dane. wtedy to na linie D1..D8 zostaną „skopiowane” dane z Q1..Q8 danego rejestru wybranego przez A1,A2. Linia RW zaś przełączy nam typ operacji, na zapis, czyli zamiast Q1..Q2 zewrze na D1..D8 naszego scalaka wejścia rejestru D1..D8, ustawi także aktywny demultiplekser aby zapalić E na czas zapisu (zewrze CS z E)…. Jak widać taki układ jest dosyć skomplikowany i zrobienie go na pojedynczych tranzystorach kupionych na ebayu byłoby już trudne (a tak kiedyś to robiono i to na lampach !!!)  … dlatego też stosuje się głównie układy scalone gdzie poszczególne komórki są „drukowane” tzw. domieszkami bezpośrednio na płytce krzemu. W prawdziwych układach pamięci SRAM gdzie tych linii adresu jest więcej (np potrzeba przecież aż 16 przy adresacji 64kB) rejestry łączy się w rzędy i kolumny jak w tabelę a multipleksuje się je kaskadowo (np A1..A8 to numer kolumny a A9-A16 to numer wiersza) aby uprościć układ….. mimo to pamięć SRAM przez swoje skomplikowanie jest bardzo droga w stosunku do innych rozwiązań nie bazowanych na zatrzaskach jak np DRAM.

DRAM – obniżamy koszty

W idealnym świecie nasza pamięć operacyjna zbudowana jest z układów Static RAM. Działa szybko i pewnie… niestety koszt produkcji jest zbyt duży na pojemności wymagane od komputerów. Właściwie SRAM (zatrzaski typu D) stosuje się jako rejestry procesora, ewentualnie jako jego cache, czyli bufor przyspieszający, lub gdy ilość RAM w urządzeniu nie przekracza kilku MB. W nowoczesnych komputerach gdzie wymagamy pojemności rzędów gigabajtów jako pamięć operacyjną stosowana jest technologia DRAM. Co to jest ten DRAM…. otóż zamiast stosować zatrzask do zapamiętywania bitu stosuje się … super prosty układ kondensator+tranzystor (tak na prawdę role kondensatora spełnia też tranzystor typu MOS).  Otóż aby zapisać dane wystarczy naładować lub rozładować taki kondensator przypięty do bazy tranzystora służącego do odczytu … jeżeli ładunek na kondensatorze jest dodatni to uaktywnia on tranzystor …. job done – dwoma elementami zastąpiliśmy 10 …. hola hola, nie bez problemów… okazuje się, że taki kondensator ma bardzo małą pojemność a przez to bardzo szybko traci swój ładunek .. co doprowadza do tego ze nasze jedynki zamieniają się w ciągu ułamka sekundy w zera …  aby temu zaradzić wymyślono, że specjalny układ będzie co chwilę odczytywał dane z pamięci i zapisywał je ponownie aby w pełni naładować kondensatory zanim się rozładują. Taki układ jest bardzo skomplikowany i znajduje się najczęściej w chipsecie lub w środku CPU i nazywany jest kontrolerem pamięci DRAM, w dodatku taki cykl odświeżenia pamięci zajmuje przecież czas, czas w którym CPU do tej pamięci dostępu nie ma, sprawia to, że pamięci DRAM są dużo wolniejsze niż SRAM, pojawia się taki parametr jak częstotliwość taktowania – czyli ile razy na sekundę procesor może odczytać lub zapisać taką pamięć bez wprowadzenia błędów zapisu. Są różne rodzaje DRAM – np EDO – tzw asynchroniczne, czy synchroniczne SDRAM SDR/DDR1/2/3/4 itp … zasada działania jest jednak taka sama DRAM to DRAM, a różnią się te technologie jedynie napięciami zasilania i prędkościami odczytu/zapisu.

Inne pomysły czyli trochę historii.

Na początku komputeryzacji SRAM na zatrzaskach był na tyle drogim i skomplikowanym rozwiązaniem, że poszukiwano innych technologii pamięci operacyjnej. W EDVAC np. zastosowano pamięć rtęciową … cóż to za wynalazek … z punktu widzenia dzisiejszej informatyki jest to prawie czarna magia. Zamiast gromadzić ładunek czy sterować prądem bity zamieniane były w drgania fali w rurze z rtęcią – tzw linii opóźniającej… tak wyglądał proces zapisu… hmm.. można to porównać do fal na wodzie i alfabetu morse’a. z jednej strony rurki jak morsem głośnik akustyczny wprawiał w drgania rtęć, z drugiej strony znajdował się mikrofon zamieniający drgania w impulsy elektryczne. Czas przepływu fali to maksymalny czas przechowywania danych w takiej pamięci. Pamięć taka jest pamięcią dynamiczna podobnie jak DRAM, jednakże nie jest to pamięć dostępu swobodnego – żeby odczytać dane należało obliczyć moment w którym dany bit pojawi się w mikrofonie. Cykl odświeżenia to nadanie na głośnik tego co odczytano wcześniej, więc dane krążą w rurze w kółko. Pojemność pamięci zależy tylko od długości rury z rtęcią. Rozwiązanie jak pisałem już z pogranicza czarnej magii i inżynierii…mimo to działające skutecznie 🙂

Kolejnym pomysłem było zastosowanie … lampy kineskopowej 🙂 tzw Lampy Williamsa. Na takiej lampie zapis następował przy pomocy rysowania bitów. Do odczytu służyła specjalna siatka metalowa która wykrywała ładunek w danym punkcie kineskopu, niestety kasując przy okazji dane, więc każdy odczyt musiał odświeżyć zapis. Podobnie jak w DRAM obraz z czasem wygasał i potrzebny był układ odświeżający rysunek. Taka pamięć występowała w komputerze IBM 701.

Następnie powstał Selectron, czyli lampa elektronowa będąca „układem scalonym” pamięci RAM. Pomysł świetny jednakże nietrafiony i opóźniony bo dopiero wszedł do produkcji 1948 gdy w 1949 były już lepsze rozwiązania – nie stosowany nigdzie.

"Scalak" pamięci ferrytowej

„Scalak” pamięci ferrytowej

I na koniec pamięć ferrytowa, zwana z angielskiego także rdzeniową (core) od 1949 najpopularniejsza i podobna do dzisiejszego DRAM. Jednakże zamiast komórek na bazie elektronicznej przechowywano dane magnetycznie w malutkich rdzeniach ferrytowych. Podobnie jak w DRAM rdzenie są podzielone na kolumny i wiersze. Zapis realizowano poprzez namagnesowanie rdzenia przepływem prądu w danym kierunku .. tak zapisane dane…są stałe (nie uciekają po wyłączeniu zasilania, co jest nietypowe dla pamięci operacyjnej) aż do momentu odczytu, który kasował daną komórkę i trzeba było ją odświeżyć.

Pamięci masowe – czyli zapis stały

W pamięciach masowych, czyli takich które nie tracą danych po odłączeniu zasilania rozwój był zgoła inny. Konstruktorzy musieli znaleźć sposób na zapis danych w taki sposób aby był on niezależny od prądu. Dane z postaci elektronicznej musiały być w jakiś sposób przekonwertowane na inny zapis dwójkowy nie korzystający z elektroniki. Pierwszy pomysł był bardzo prosty – zwykła kartka papieru i druk a przy tym.. wykorzystanie człowieka jako interfejsu konwertującego. Po prostu człowiek zapisywał dane w postaci dwójkowej a następnie poprzez przełączniki i lampki wprowadzał dane do i z pamięci operacyjnej. Niestety takie podejście było czasochłonne dla operatora, więc postanowiono sprawę zautomatyzować. Zamiast używać tuszu na papierze zdecydowano użyć dziurkacza … taka kartka papieru zwie się kartą perforowaną. Zaletą jest to, że można stworzyć urządzenie automatycznie czytające taką kartę i wprowadzające dane do pamięci operacyjnej, tak samo możliwe jest „wydziurkowanie” wyniku i użycia go w przyszłości jako „wejścia”. Ten system rozpropagowany przez IBM stosowany był przez lata. Czy do dziś stosuje się kartkę papieru jako nośnik danych cyfrowych … można się zdziwić ale TAK 🙂 jest to praktyczny sposób przenoszenia małych fragmentów danych i stosowany jest on bardzo często w postaci wszelakich kodów kreskowych na produktach. Powstał nawet kod QR (2 wymiarowy) w którym możemy zakodować adres email, lub strony www i później rozesłać takie wydruki do wszystkich, a nowoczesny smart-phone bez problemu je rozkodowuje i wykorzystuje. Ale wracając do tematu pamięci masowych. Jako, że elektroniczny zapis za bardzo się nie nadawał to wymyślono żeby użyć magnetyzmu, zamiast wartości napięcia dla 1 i 0 można zastosować brak pola magnetycznego i jego występowanie i czytać taki nośnik wykonany z ferromagnetyka przy pomocy głowicy z cewką indukcyjną. Taki zapis jest popularny już od lat 60 ubiegłego wieku. Nośnikami są taśmy, kasety czy dyski wszelkiego rodzaju… sama jednak zasada jest taka sama – magnesujemy nośnik elektromagnesem i później odczytujemy dane z użyciem cewki. Tak działają współczesne dyski twarde, dyskietki, czy taśmy dla retro komputerów 8-bitowych. Pomysł prosty i skuteczny jednakże z jedną wadą … taki nośnik z czasem lub w okolicznościach pola elektromagnetycznego może nam się rozmagnesować i stracić dane. W dodatku sam odczyt wymaga wielu elementów elektronicznych jak i mechanicznych (przesuwanie głowicy nad taśmą czy dyskiem, przesuwanie taśmy, obracanie dysku itp). Wszelkie operacje mechaniczne stają się więc wąskim gardłem prędkości takiego nośnika i mimo iż komputer mógłby odczytywać je dużo szybciej to fizyka nie pozwala na szybszy odczyt czy zapis. W dodatku części mechaniczne z czasem się potrafią popsuć i nośnik lub czytnik są do wyrzucenia. Rozwinięciem tej technologii są także wszelkie nośniki optyczne, czy magneto-optyczne (te ostatnie de facto uważane za najbardziej trwałe), gdzie głowicę zastąpiono laserem (w przypadku nośników magneto-optycznych tylko połowicznie – zapis jest ciągle magnetyczny a laser służy do podgrzania nośnika do odpowiedniej temperatury pracy, odczyt następuje jednakże już tylko przy pomocy optyki w temperaturze „pokojowej”). Znając te wady konstruktorzy postanowili poszukać rozwiązania, które pozwoliłoby … zapisać dane elektronicznie w taki sposób, aby po wyłączeniu zasilania nie były one tracone i tak powstały pamięci nieulotnych….czyli ROMy.

Read Only Memory

Budowa ROMu jest bardzo podobna do budowy zwykłego DRAMu, jednakże zamiast kondensatorów stosuje się inne metody zapamiętania danych. W podstawowej wersji jest to jedynie stworzenie układu tranzystorów w taki sposób aby zawsze dane były takie jak „zapisaliśmy”. Takie zwykłe ROMy są programowane już na etapie projektowania i produkcji samego scalaka. Jednakże taka wersja za bardzo nie była praktyczna, bo każdy program wymagałby wyprodukowania osobnego scalaka – trzeba było jakoś to ujednolicić …. tak powstały pamięci EPROM. Tak jak każda pamięć elektroniczna podstawą EPROMU jest tranzystor – jest on jednak przekonstruowany. Oprócz bramki bazy istnieje dodatkowa bramka programowania – taka bramka służy do „wypalenia” bitu danych (czyli zwarcia na stałe tranzystora). Odpowiednio sterując taki tranzystor wysokim napięciem możliwa jest drobna zmiana w strukturze kryształu , co owocuje tym, że tranzystor zamienia się w przewodnik, lub izolator. Co najciekawsze taka zmiana jest odwracalna … wystarczy naświetlić tranzystor światłem UV i zamienia się on znów w czysty nośnik… taka operacja niestety trwa pół godziny i można taki zapis wykonać kilku- do kilkudziesiecio-krotnie na tym samym układzie. Niestety wadą tego rozwiązania jest to, że potrzebujemy aż 30 minut na kasowanie i w dodatku zawsze kasujemy cały nośnik, a i jeszcze musimy mieć naświetlarkę UV. Z czasem wymyślono żeby jeszcze rozwinąć tranzystor i … zamiast kasować pamięć poprzez promieniowanie UV (EPROMY mają przezroczyste oczko do tego celu – łatwo je rozpoznać) kasować układ przy pomocy jedynie napięcia. Tak powstały bardzo popularne pamięci EEPROM. Niestety technologia ta ograniczała ciągle możliwość zapisu do całej kości na raz…

Pierwszym pomysłem na uwolnienie elektronicznych nośników od problemów z zapisem było stworzenie pamięci …

Flash 

W pamięciach typu Flash tranzystory z komórek pamięci kasowane są w całkiem inny sposób niż EEPROM. Zamiast kasować całość, projektanci umożliwili kasowanie tylko tzw. pojedynczej strony pamięci. Zwiększyło to stopień skomplikowania samego układu, ale pozwoliło na zastosowanie pamięci programowalnych jako nośników RW…. W praktyce niestety oznacza to, że ciągle nie było możliwości dynamicznego zapisu poszczególnych komórek bez kasowania całości, ale … był to już dosyć duży rozwój. Taki kontroler pamięci flash mógł buforować dane konkretnej strony pamięci zmieniać jedną komórkę i zapisywać całą stronę na raz. Niestety taki sposób zapisu sprawia, że czas potrzebny na zapis jest kilkukrotnie większy niż na odczyt. Takie pamięci jednak pozwoliły na  stworzenie pierwszych elektronicznych nośników i kart pamięci. Technologia Flash ciągle ewoluowała, aż do dzisiejszych dysków SSD, czyli układów zbudowanych na bazie komórek pamięci NAND z tranzystorami FG-MOSFET.

Co to jest FG-MOSFET ?

FG -MOSFET to nowoczesny typ tranzystora – pełna nazwa to Floating Gate – Metal Oxide Semiconductor Field Effect Transistor. Z tranzystorami bipolarnymi o których pisałem wcześniej tego typu wynalazek ma dosyć mało wspólnego. Po pierwsze (z angielskiego) jest to „Tranzystor Efektu Pola” .. co po polsku określa się terminem tranzystora polowego. Zamiast bazy, kolektora i emitera mamy tzw kanał do którego przypięte są trzy elektrody – Bramka, Dren i Źródło.  Cechą takiego tranzystora jest to, że pole elektryczne które się w nim wytwarza sprawia, że kanał działa jak .. opornik, zależnie od przyłożonego napięcia na bramkę oporem tym można sterować. Gdy napięcia nie ma, to opór między drenem a źródłem jest ogromny i tranzystor taki jest praktycznie izolatorem (opory rzędu megaomów), po przyłożeniu określonego napięcia do bramy (dla każdego tranzystora jest to określona liczba Woltów) FET zaczyna się stopniowo otwierać i opór maleje aż do zera … jednakże otwarcie takie jest  liniowe, więc można taki tranzystor otworzyć np. tylko do połowy (ok… przesadziłem z tą liniowością, ale dla uproszczenia tak łatwiej sobie wyobrazić)… kolejne literki to MOS – czyli wykorzystane materiały – Bramką jest z reguły jakiś Metal, a jej izolatorem   jest tlenek (chociaż dziś to już jest umowne), oczywiście Semiconductor oznacza, że kanałe tworzy półprzewodnik … w prawie 100% przypadków jest to Krzem. Ogólnie MOSFETy są w dzisiejszych czasach większością tranzystorów stosowanych w elektronice cyfrowej. Ale chwila … taki tranzystor to ciągle zwykły tranzystor, który nie potrafi pamiętać nic … to prawda, za efekt zapamiętywania odpowiadają literki FG ze skrótu .. czyli pływająca bramka … jak to działa … tak samo jak DRAM – czyli połączenie kondensatora i tranzystora. Taki FG-MOSFET ma dwie bramki (kontrolną i sterującą) przedzielone izolatorem które tworzą kondensator.  W przeciwieństwie jednak do zwykłych kondensatorów, taki kondensator będący częścią tranzystora jest … praktycznie idealny, oznacza to, że sam z siebie nie traci ładunku i nie wymaga odświeżania… no dobra jest to kolejne uproszczenie – bo tak na prawdę może ten ładunek stracić z czasem jak każdy kondensator, ale szacuje się, że utrata ładunku między tymi bramkami może potrwać dłużej niż ludzkie życie.

Floating_gate_transistor-en.svg

Zasada działania takiego tranzystora jest więc bardzo podobna do pamięci DRAM nie wymagającej odświeżania … nigdy. Oczywiście zasada działania w skali makro jest taka sama, tranzystory łączy się w bramki NAND, te łączy się w komórki pamięci  itp… dodatkowo, żeby nie zmieniać protokołów transmisji stosuje się układu konwertujące, zamiast czytać/zapisywać takie układy scalone bezpośrednio liniami Ax, Dx, CS, RW itp. stosuje się inteligentny układ symulujący pracę dysku magnetycznego zgodnego z protokołem IDE/ATA/SATA czy SCSI/SAS (np układ pod nazwą marketingową SandForce, który robi też coś więcej, ale o tym późnej). Tak dochodzimy do budowy dysków SSD zwanych SLC (Single Level Cell). Dodatkowo takie komórki mogą być kasowane pojedyńczo – wystarczy taką bramkę zewrzeć do masy żeby usunąć ładunek. Oznacza to, że zapis wygląda trochę jak w magetofonie … najpierw ładunek redukuje się do zera, a potem zależnie czy chcemy zapisać 1, czy 0 „kondensator” między bramkami FG-MOSFETA jest ładowany lub nie. Ciągle niestety zapis jest wolniejszy niż odczyt, gdyż fizycznie należy wykonać dwie operacje.

SLC, MLC, TLC – o co w tym biega ?

Jak już wspominałem tranzystory FET (ogólnie wszystkie, nie tylko FG-MOSFET) mają to do siebie, że działają jako sterowany opornik. W dyskach SLC ten efekt jednakże nie jest do niczego wykorzystywany. Każda komórka na bazie NAND przechowuje dokładnie jeden bit danych i zachowuje się on podobnie jakbyśmy wykorzystali „zwykły” tranzystor bipolarny, czyli brak przewodzenia to zero, a przewodzenie prądu to 1. Jednakże konstruktorzy poszli o krok dalej i postanowili upchać do jednego biednego tranzystora więcej bitów w formie zakodowanej elektrycznie. Jak to zrobiono – ponieważ tranzystory są polarne, to możemy je otwierać np do połowy więc zamiast ustalać logikę w postaci  np. 0=0V  1=3.3V pomyślano, żeby poparować ze sobą bity i zapisywać oba jako różny opór (czyli różne napięcie) … taką technologię nazywa się MLC – Multi Level Cell. Mamy więc zamiast 0 i 1  pary 00 01 10 11… którym przydzielamy określone napięcie (opór).. np

00 to 0V-1V   01 1-2V   10 2-3V  11 3-4V – jak widać przedziały takie są dosyć wąskie (a to tylko przykład, przyznam się, że nie wiem dokładnie jakie napięcia kodują jakie pary w rzeczywistości.

Ogromną zaletą takiego podejścia jest to, że mnożymy ilość zapisanych danych w stosunku do fizycznej wielkości układu pamięci … wadą to o czym jeszcze nie wspomniałem … że każdy tranzystor FG-MOSFET ulega zużyciu … każdy zapis i kasowanie zmniejsza ilość ładunku jaki możemy zmagazynować. W normalnym przypadku potrzebujemy około 100.000 kasowań, żeby tranzystor (a właściwie jego część udająca kondensator) przestał się całkiem ładować … oznacza to, że po 100.000 takich operacji nie będzie można odróżnić zera od jedynki przy odczycie. Ale … w przypadku MLC ważne jest już nie tylko odróżnienie czy napięcie jest czy nie, ale ważna jest też jego wartość. Statystycznie więc producenci podają, że układy MLC dwubitowe umierają po 10.000 kasowań (odczyt nie jest ważny, bo nie uczestniczą w nim bramki) i po tej ilości zapisów napięcia będą na tyle nieprawidłowe, że nie da się ich rozkodować w prawidłowe dane.

Ale … producenci poszli o krok dalej wymyślili technologie TLC, czyli pogrupowanie bitów w trójki !!! Taki zapis wymaga podziału napięć (oporów) aż na 8 sposobów – 000 001 010 011 100 101 110 111 – szacuje się, że już po 500 zapisach różnica napięć jest zbyt niska, żeby można było dane odczytać prawidłowo. Takie dyski są najtańsze i istnieją od 2012 roku – dyski w tej technologii to np. Samsung 840 czy Crucial BX.

Rozwiązywanie problemów SSD

Nawet najnowocześniejsze pamięci stosowane w dyskach SSD wymagają dwuetapowego zapisu, czyli kasowania a później ładowania odpowiednim ładunkiem tranzystora. Taka specyfika sprawiała, że zapis był wolniejszy niż odczyt. Jak sobie z tym poradzono … wprowadzono nową komendę dla kontrolera o nazwie TRIM. Co takiego robi TRIM – kasuje nieużywane już komórki „w tle” gdy komputer nic nie robi i oznacza je jako gotowe do ponownego zapisu. Jako, że problemu na dyskach magnetycznych nie ma komenda ta jest jedynie rozszerzeniem standardu transmisji… takim miłym dodatkiem. Niestety to do systemu operacyjnego należy stwierdzenie, że dysk nie jest używany i kontroler powinien rozpocząć procedurę kasowania poprzednio użytych komórek – dysk sam o tym nie wie. Stare systemy operacyjne jak Windows XP nie mają pojęcia czy pracują z dyskiem magnetyczym czy ssd więc po prostu tej operacji nie robią. Czy brak TRIMu w systemie operacyjnym niszczy nam to dysk – NIE .. brak TRIMu to problem jedynie czasu zapisu, mimo powszechnej opinii żywotność komórek nie zależy od tego czy system steruje TRIMem czy nie. Po prostu dysk bez użycia TRIM będzie działał dużo wolniej przy zapisie, szczególnie jeżeli osiągniemy moment gdy miejsce na dysku zacznie nam się kończyć.

Kolejnym problemem jest degradacja, czyli to o czym już wspominałem wcześniej – z góry ustalona maksymalna ilość zapisów. Aby nie utracić danych producenci wprowadzili pewien trick… po pierwsze dysk posiada pojemność większą niż jest to widoczne w systemie o kilka GB. Ten kawałek jest zarezerwowany na tzw relokację. Jeżeli komórka pamięci umiera i nie możliwy jest zapis kontroler automatycznie używa zapasowej komórki z tych dodatkowych w zamian, zgłaszając to w systemie poprzez system SMART. Dzięki temu możliwe jest monitorowane stanu dysku SSD przez użytkownika i prognozowanie kiedy maksymalna ilość zapisów się skończy na tyle, żeby zapisać nie dało się już nic. W przypadku wykorzystania całej przestrzeni po prostu dysk przestanie przyjmować dane i będzie go trzeba wyrzucić. Dodatkowo aby zmniejszyć efekt wielokrotnego zapisu stosuje się dynamiczne adresowanie komórek, oznacza to, że kontroler tak na prawdę zapisuje dane w tej komórce, która miała najmniej cykli zapisu dotychczas ignorując adresowanie poprzez IDE/ATA/SATA. Wymusza to niestety przechowywanie mapy adresów i lekko zwalnia dyski SSD.

Czy warto kupić SSD do swojego komputera

Tak warto … mimo ich wad które łatwo zrozumieć po lekturze tego tekstu mają ogromną zaletę… są piekielnie szybkie – wielokrotnie szybsze niż mechaniczne urządzenia magnetyczne jak dyski twarde czy nośniki optyczne. Wygoda pracy jest nieporównywalna, a start systemu można liczyć w sekundach a nie w minutach. Jednakże jak do każdej nowej technologii należy podchodzić z umiarkowanym zaufaniem i pamiętać, że nic nie zastąpi regularnych kopii zapasowych robionych na tradycyjnych nośnikach magnetycznych czy optycznych.

 

 

 

 

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.