Więcej wydajności: Rozważania nad pamięcią komputera

Opublikowane:

29.03.2024

Pamięć komputera jest ściśle powiązana ze wzrostem jego potencjalnej użyteczności i wydajności, a na nią samą wpływ ma rosnąca złożoność urządzeń.

Pamięć komputera jest ściśle powiązana ze wzrostem jego potencjalnej użyteczności i wydajności, a na nią samą wpływ ma rosnąca złożoność urządzeń.

Zapisany jestem do list e-mailingowych kilku zupełnie różnych grup, które miałem przyjemność poznać w ciągu wielu lat. Jedną z nich jest „Linux-aus”, luźno powiązana z Australijską Społecznością Linuksa.

Ostatnio jeden z jej członków, Russell Coker, narzekał na olbrzymią ilość pamięci, jakiej w dzisiejszych czasach potrzebują systemy linuksowe.

Doprowadziło to do dyskusji o tym, jak tania jest obecnie pamięć, jak szybkie procesory i dlaczego powinniśmy przejmować się ilością pamięci używanej przez aplikacje czy liczbą cykli potrzebnych do ich działania.

W latach 60. XX w. komputery potrzebowały 64 MB głównej pamięci i nawet w przypadku laptopów liczba ta zwiększyła się dzisiaj do 8, 16 czy nawet 32 GB (w najnowszych laptopach). To w przybliżeniu 500 razy tyle.

Mniej dyskusyjną kwestią jest wzrost szybkości zegara i liczby rdzeni w dzisiejszych systemach. Być może nie mówi się o tym tak wiele, ponieważ w większości przypadków chociaż szybkość się zwiększyła, to pobór mocy zmalał.

W niektórych obszarach, jak na przykład w przypadku procesorów graficznych, które początkowo wykorzystywane były do przyspieszenia generowania obrazu, teraz wykorzystuje się inne rodzaje obliczeń.

Oryginalnie grafika była kontrolowana przez „durne bufory ramek”. Główny procesor umieszczał odpowiednie bity w określonych miejscach pamięci graficznej, czasami na potrzeby zwykłej czarno-białej grafiki, ale potem w skali szarości, a jeszcze później w 8, 16 i 24 bitach barw. Główny procesor musiał zajmować się antyaliasingiem, mieszaniem barw i innymi obliczeniami graficznymi, a także pracować nad główną logiką programu.

Przenosząc te obliczenia graficzne do oddzielnego, wyspecjalizowanego w tym procesora, uwalniamy główny procesor, aby mógł wykonywać pozostałe obliczenia. Ten wyspecjalizowany procesor był akceleratorem, tak jak dekadę wcześniej jednostki zmiennoprzecinkowe pozwoliły na obliczenia zmiennoprzecinkowe. Niektóre procesory i386 wykonywały jedynie operacje na liczbach całkowitych, więc praca zmiennoprzecinkowa była wykonywana z wykorzystaniem liczb całkowitych. Później dodany został (za dopłatą) dodatkowy układ „zmiennoprzecinkowy” (i387).

Procesory graficzne zaczęły być dodawane, aby odciążyć główny procesor i przyspieszyć generowanie grafiki. Później zaczęły być projektowane jako SIMD, czyli układ, w którym pojedyncza instrukcja może być wykonana jednocześnie na wielu strumieniach danych, aby jeszcze bardziej przyspieszyć generowanie grafiki.

Z czasem ludzie chcieli jeszcze lepszej jakości. Procesorów graficznych, które mogły symulować środowisko 3D, źródła światła, cienie, a nawet mogących wykonywać programy równolegle z głównym procesorem.

Jak na razie mówimy tylko o wideo, ale dziedzina audio również nie spała i pojawiły się procesory dźwiękowe, aby zapewnić realistyczną fonię.

Oczywiście towarzyszyły temu wszystkiemu nowe funkcjonalności w postaci bibliotek wykorzystywanych do przesyłania danych do akceleratorów.

Innymi „akceleratorami”, które pojawiły się na komputerach, są przeglądarki internetowe. Jako niewielkie systemy operacyjne przeglądarki uruchamiają aplikacje i rozszerzenia, które potrzebują dużo pamięci, ale też pozwalają ludziom otwierać olbrzymie liczby kart zużywających pamięć i cykle procesora.

Oddzielne silniki baz danych do efektywnego działania również wymagają więcej pamięci.

Wirtualizacja, kontenery i inne współczesne rodzaje aplikacji też zwiększają zapotrzebowanie na pamięć.

Największym problemem jest to, że chociaż pamięć urosła 500 razy, ilość pamięci podręcznej pierwszego, drugiego i trzeciego poziomu nie wzrosła w tym samym tempie. Im więcej różnorodnej pamięci używamy, tym częściej liczba trafień w pamięci podręcznej jest mniejsza i dłużej czekamy na informacje i przekazanie instrukcji do procesora. Niektóre procesory mają ograniczoną pamięć podręczną lub nie mają jej wcale.

Russel Coker i inni członkowie australijskiej grupy e-mailingowej wpadli na pomysł, aby zaoferować nagrody ludziom, którzy przeanalizują zużycie pamięci i określą profile wykorzystania procesora.

Lata tamu system operacyjny OSF/1 od Digital Equipment Corporation (DEC) potrzebował do rozruchu i działania 64 MB głównej pamięci na maszynie klasy DEC AlphaServer. Śmiesznie mało na dzisiejsze standardy, ale ludzie od marketingu chcieli, aby praca systemu możliwa była z 32 MB pamięci. Pozwoliłoby to terenowym pracownikom DEC na instalację i weryfikację tej instalacji bez zmuszania klienta do kupowania dodatkowych 32 MB pamięci od DEC, co było bardzo drogie. Po instalacji i zatwierdzeniu maszyny klient mógł dodać dużo tańszą pamięć od firm trzecich.

Inżynierowie DEC spędzili rok na przycinaniu jądra i bibliotek, aby system mógł uruchomić się jedynie na 32 MB. Po tym wszystkim czekała nas niespodzianka: mniejszy system działał siedem procent szybciej!

Ponieważ wszystko było mniejsze, większa część systemu operacyjnego pozostawała w pamięci podręcznej systemu, przez co odnotowywała ona więcej trafień i szybciej dostarczała instrukcje i dane do rdzeni procesora.

maddog-2

Jon „maddog” Hall jest autorem, wykładowcą, informatykiem i jednym z pionierów Wolnego Oprogramowania. Od 1994 roku, kiedy po raz pierwszy spotkał Linusa Torvaldsa i ułatwił przeniesienie jądra na systemy 64-bitowe, pozostaje orędownikiem Linuksa. Obecnie jest prezesem Linux International®.

Autor: Jon „maddog” Hall

Aktualnie przeglądasz

Kwiecień 2024 - Nr 242
LM242_Apr-2024

Top 5 czytanych

Znajdź nas na Facebook'u

Opinie naszych czytelników

Nagrody i wyróżnienia