Pamięci turbo – zbyt szybkie dla Windows

Pamięci turbo – zbyt szybkie dla Windows

Postęp technologiczny dla branży komputerowej jest wręcz eliksirem życia. Wciąż pojawiają się nowe produkty i technologie, które przed kilkoma laty wydawały się utopijne, a później wywracają naszą codzienność do góry nogami. W dziedzinie dysków twardych w najbliższych latach utopia stanie się rzeczywistością. Ta ostatnia będzie wyglądać tak: włączacie komputer, a system operacyjny uruchomi się, zanim zdążycie zdjąć palec z przycisku. Albo otwieracie rozbudowany program taki jak Photoshop i jest on natychmiast gotowy do pracy – bez ciągnącego się doładowywania modułów i bez czekania na zbudowanie interfejsu. Albo też: jedno kliknięcie i film HD o wielkości 4 GB zostaje zapisany, praktycznie zanim urządzenie wejściowe zdąży skończyć swoją pracę.

Początek rewolucji pamięci da nowa generacja dysków flash sprzężonych z CPU szybkimi łączami. Już teraz serwerowe SSD podłączone przez PCI-E (PCI Express) osiągają wielokrotną szybkość transferu tradycyjnych dysków SSD z interfejsem SATA (patrz po prawej stronie). Wraz z przejściem na intelowską platformę Ivy Bridge w bieżącym roku ten radykalny wzrost szybkości staje się również udziałem pecetów. W wyścigu o szybkość ogromną rolę dalej będą odgrywać technologie przyszłości, które za kilka lat zastąpią dyski flash. Zapewnią one czasy dostępu takie same jak w pamięciach RAM. Nowa technologia pozwoli na połączenie dysku twardego i pamięci operacyjnej w jedno. Rewolucję pamięci zastąpi restrukturyzacja współczesnych systemów operacyjnych, takich jak Windows czy Mac OS. Wraz ze wzrostem szybkości dysków to właśnie system operacyjny jest wielkim “hamulcowym” – ustalił zespół badaczy z Uniwersytetu San Diego w trakcie prac nad projektem “Moneta”. Na kolejnych stronach pokazujemy, co konkretnie należy zmienić w systemach operacyjnych i jakie przyspieszenie działania całego peceta można będzie dzięki temu uzyskać. Zacznijmy jednak od szybkich dysków.

Przyspieszacze – NOWE DYSKI

W najbliższych latach nośniki danych w pecetach będą zapisywać dane z szybkością do 4 GB/s. Umożliwi to postęp technologii.

W SSD, czyli dyskach flash, wszystko kręci się wokół prędkości. Wyposażone w nie nowoczesne komputery sprawiają wrażenie szybszych. Mogłoby być jeszcze szybciej, ale na przeszkodzie stoi połączenie dysku z płytą główną, czyli kabel SATA, przez który teoretycznie można przesyłać 6 Gb/s. W rzeczywistości najszybsze SSD oferowane na rynku konsumenckim pozwalają osiągnąć ok. 600 MB/s. Następca interfejsu SATA, czyli SATA Express, umożliwia przesyłanie 8, a nawet 16 Gb/s. W tym roku SATA Express będzie montowany w nowych komputerach i rozpędzi SSD do 1,6 GB/s.

Ale dopiero PCI Express w pełni wykorzysta potencjał SSD. Zoptymalizowane pod kątem szybkości kontrolery SSD prześlą nawet 3 GB/s. Jeśli więc w 2013 roku zacznie być powszechnie stosowany PCI-E 3.0, to można się spodziewać podwojenia tych wartości. Oczywiście nie ma pewności, czy pamięci flash faktycznie uzyskają takie prędkości, bo wbrew pozorom zapisywanie danych jest pracochłonne: by zapisać stronę o wielkości 8 KB, dysk SSD Intela musi najpierw skasować blok o wielkości 2 MB, w którym ta się znajduje. Kasowanie trwa 3 milisekundy (ms), zapis strony 1,2 ms. W porównaniu z tym SSD odczytuje stronę zaledwie w 40 nanosekund (ns), a więc około 100 000 razy szybciej. Użytkownicy nie odczuwają wynikającego stąd spowolnienia, ponieważ dane inteligentnie kierowane przez kontrolery zapisywane są równolegle. Dobre SSD odczytują więc dane dwa razy szybciej, niż je zapisują.

Spośród nośników czy pamięci maksimum szybkości osiągają kości RAM, jednak gdy tylko zabraknie prądu, to gubią one zapisane informacje. Skomplikowany proces zapisu uniemożliwia pamięci flash dotrzymanie kroku pamięciom ulotnym. Następcy flasha mają być w tym lepsi. W gronie kilkunastu potencjalnych kandydatów jest aktualnie dwóch, którzy od roku 2014 bądź 2015 mogliby osiągnąć dojrzałość do produkcji seryjnej. Są to Phase Change Memory (PCM) i Resistive RAM (ReRAM). W PCM stosuje się materiał, który w zależności od przyłożonego napięcia przyjmuje strukturę krystaliczną bądź amorficzną. Ponieważ w PCM tak samo jak we flashu zapisany wcześniej materiał musi zostać najpierw skasowany, technologia ta nie pozwala uzyskać szybkości DRAM.

ReRAM obiecuje więcej, ale firmy takie jak HP, Panasonic, Samsung i Sony, pracują jeszcze nad prototypami. W ReRAM chodzi o to, aby sprawić, że dzięki przyłożonemu napięciu izolator stanie się przewodnikiem, co odpowiada wartości 1 bitu. Aby zmienić wartość, przykłada się odwrotne napięcie, które powoduje, że materiał znów jest izolatorem. W przeciwieństwie do fl asha i PCM technologia ReRAM pozwala na bezpośrednie nadpisywanie danych. Szybkości odczytu i zapisu są identyczne i zbliżone do poziomu DRAM – jest to więc idealny materiał na turbopamięć.

Spowalniacz – SYSTEM OS

Windows i spółka przy tym tempie działania dysku przestają być wydajne. Systemy operacyjne wymagają przebudowy.

Jako użytkownicy często niecierpliwie siedzimy przed pecetem, czekając, aż ten zapisze bądź odczyta dane albo uruchomi program. Największe opóźnienie w trakcie operacji zapisu przez długi czas powodowały dyski magnetyczne. Zmieniło się to z pojawieniem się SSD, ale wiele funkcji współczesnych systemów operacyjnych jest zoptymalizowanych pod kątem dysków magnetycznych. Windows 7 wyłącza optymalizacje takie jak SuperFetch albo automatyczną defragmentację, kiedy odkryje SSD jako nośnik danych, aktywując równocześnie polecenia TRIM. Mają one zoptymalizować proces kasowania, niezbędny przed rozpoczęciem zapisu nowych danych. Jednak to nie wystarcza dla następnej generacji SSD, która zapisuje dane przez magistralę PCI Express. Wymaga ona daleko idącej adaptacji systemu operacyjnego. Jednolitego sterownika dla PCI-E SSD brakuje nawet w Windows 8, zamiast tego każdy producent próbuje stworzyć własny. Pojawienie się następców pamięci flash wymusi przebudowę systemu operacyjnego, bo przyszłe dyski będą zapisywać dane jeszcze szybciej i ze względu na niższe napięcie robocze będą miały krótsze niż flash czasy dostępu (patrz tabela: Porównanie pamięci). To znaczy, że będą mogły wykonać więcej operacji na sekundę.

Windows i spółka spowalniają szybkie dyski

Zespół badaczy z Uniwersytetu San Diego ustalił, jak bardzo współczesne systemy operacyjne trzeba by dostosować do szybkich pamięci. Zbudowali oni komputer symulujący potencjał pamięci następcy flasha – PCM. Jako podzespoły pamięci posłużyły najpierw kości DRAM, które w roku 2011 zostały zastąpione przez kości PCM. Ten system (Moneta) został podłączony do CPU ośmioma liniami i pozwolił osiągnąć transfer 4 Gb/s. Moneta działa pod kontrolą Linuksa, ale różnice między nim a Windows i Mac OS w kwestii zapisu danych są marginalne. Wartości pomiarowe odnoszą się więc do wszystkich współczesnych OS-ów i nie prezentują się dobrze: w systemie Moneta Linux do odczytu i zapisu danych potrzebuje więcej czasu niż dysk (patrz zestawienie po prawej stronie). W przypadku dysków magnetycznych i SSD stosunek jest odwrotny.

Architektura Windows na bardzo głębokim poziomie dopasowała się do dysków magnetycznych: przeszkodą w osiągnięciu wyższego tempa jest scheduler input/output, który reguluje cały transfer danych do dysku twardego. Tradycyjna operacja na pliku składa się z zapytań (requests), które zapisują dane na dysku twardym bądź je z niego odczytują. I/O-scheduler sortuje zapytania, aby w tym czasie nie powstały żadne blokady danych. Ma to sens w przypadku powolnego dysku magnetycznego, ale na szybkim SSD taka koordynacja jest zbędna, bo wąskich gardeł praktycznie nie ma. Linux wykorzystuje w takiej sytuacji alternatywne rozwiązanie w postaci noop- -schedulera, który gromadzi wszystkie zapytania na jednej liście i przekazuje je sterownikowi dysku. Jednak również ta akcja zajmuje czas, bo scheduler musi w tym celu tworzyć specjalny nowy wątek, który następnie przekazuje do CPU celem przetworzenia.

Kiedy CPU wyśle dane do dysku, wątek odpowiedzialny za procesy zapisu lub odczytu zostaje uśpiony. Po wykonaniu zadania przez dysk wątek wymaga ponownej aktywacji przerwaniem, aby zameldować o powodzeniu operacji. Opisany tryb postępowania ma sens w komputerach, które mają do dyspozycji tylko jeden bądź dwa rdzenie, ponieważ wykonywane aktualnie wątki często całkowicie wyczerpują zasoby CPU. W przypadku współczesnych procesorów wielordzeniowych, przetwarzających do ośmiu wątków równolegle, rzadko tak się dzieje. Aby zwolnić wbudowane w system hamulce, programiści Monety najpierw usunęli scheduler. W efekcie dane wysyłane są do dysku bez sortowania i bez wcześniejszego grupowania. Pracę tę przejmuje scheduler sprzętowy. Oprócz tego pozostawili oni aktywne wątki zapisu/odczytu w CPU i zrezygnowali z ich reaktywacji.

Poza tym twórcy Monety musieli także usunąć blokadę w sterowniku dysku. Normalnie zapytanie składa się z kilku poleceń. Sterownik dysku zbiera je, aby zapisać w pamięci podręcznej nośnika. Programiści zredukowali zapytania do takich rozmiarów, że składają się już tylko z jednego zapytania o długości 64 bitów, dzięki czemu czekanie przestaje być konieczne. Przez ujednoliconą długość bitową unikają również adresowania dla pamięci podręcznej. Normalnie jest ono niezbędne, aby chip w nośniku wiedział, kiedy jedno zapytanie się kończy, a zaczyna nowe. Opisana optymalizacja tylko nieznacznie przyspiesza transfer danych, ale pozwala na spektakularny wzrost liczby operacji I/O (input/output), które może wykonywać Moneta – do około jednego miliona na sekundę.

Cztery optymalizacje przyspieszają system

Trzy małe zmiany w systemie, które przybliżyliśmy, nie zapewniają jeszcze optimum. Konieczna jest czwarta modyfikacja (patrz schemat po prawej stronie), sięgająca głęboko w architekturę x86: we współczesnych systemach operacyjnych programy inicjujące procesy zapisu współpracują z CPU ze zmniejszonymi uprawnieniami – pracują w trybie użytkownika. W odróżnieniu od niego, zarezerwowany dla OS-u tryb jądra (kernel mode) nie ma ograniczeń i do tego steruje sprzętem. Polecenia zapisu od oprogramowania wymagają więc transferu do trybu jądra, zanim będą mogły zostać wykonane. Ponadto system operacyjny wykonuje wszystkie operacje na systemie plików w trybie jądra, co skutkuje niepotrzebną stratą czasu.

Programiści biorący udział w projekcie “Moneta” przez samodzielnie zaprogramowany sterownik działający w trybie użytkownika zrezygnowali z okrężnej drogi przez jądro systemu. System operacyjny nie pośredniczy w transferze danych tak długo, jak to tylko możliwe. Pozostaje system plików i zarządzenie uprawnieniami, np. który użytkownik może korzystać z danych. Przekazywanie tych informacji pomiędzy aplikacją a jądrem odbywa się niezależnie od właściwego transferu danych. Równie niezależnie przebiega sprawdzanie praw dostępu do pliku z jądra do interfejsu sprzętowego nośnika. W ten sposób model bezpieczeństwa architektury x86 pozostaje nienaruszony.

W przyszłości program będzie mógł odczytywać i zapisywać raz otwarty plik bezpośrednio i bez straty czasu. Będzie obchodził system operacyjny, a procesor w dysku będzie odpowiadał za zarządzanie pamięcią. Zadaniem OS-u pozostanie tylko współprotokołowanie tych zmian przez system plików. Jeśli w przyszłości w ciągu sekund mamy zapisywać na turbodyskach filmy HD, będzie to możliwe jedynie w przebudowanym systemie operacyjnym.