Więcej niż pecet

Nie ma chyba użytkownika komputerów, który by się nie zastanawiał nad tym, jak zbudowane są najwydajniejsze na świecie maszyny. Wbrew pozorom często przypominają one zwyczajne pecety

Choć początków superkomputerów można się doszukiwać już w czasach drugiej wojny światowej, kiedy to powstawały pierwsze urządzenia służące do kryptografii, na superkomputer z prawdziwego zdarzenia trzeba było poczekać do początku lat sześćdziesiątych. W 1962 roku amerykańska firma Control Data Corporation zaprezentowała skonstruowany przez Seymoura Craya komputer CDC-6000. Jednak pierwszym superkomputerem o niemal współczesnej architekturze był powstały w połowie lat siedemdziesiątych Cray-1, który mógł wykonywać 80 milionów operacji zmiennoprzecinkowych na sekundę.

Wektorowe przyspieszanie

Cray-1 był komputerem jednoprocesorowym, zdolnym do wykonywania rozkazów wektorowych w sposób potokowy (ang. pipelining). Rozwiązanie to polegało na powtarzaniu elementarnych operacji arytmetycznych na strumieniach danych tworzących tzw. wektory. Wykonywanie tych instrukcji odbywało się jednocześnie w oddzielnych jednostkach arytmetycznych oraz logicznych. Procesor zastosowany w superkomputerze Cray-1 wyposażony był w 12 takich potokowych modułów wykonawczych. W architekturze Craya dało się wyróżnić trzy mogące pracować równolegle sekcje: wektorową, skalarną (wykonującą obliczenia na pojedynczych danych) i adresową. Ciekawą, nowatorską koncepcją, zastosowaną w Cray-1, było także tzw. łańcuchowanie potoków. Polegało ono na wykorzystaniu wyników wygenerowanych przez jedną jednostkę funkcjonalną bezpośrednio jako ciąg argumentów dla innej jednostki, a wszystko to bez zapisu danych do rejestru.

Dzięki temu pomysłowi Cray-1 był w stanie jednocześnie przetwarzać dwie operacje wektorowe. Pierwszy Cray korzystał z 16–modułowej pamięci operacyjnej o pojemności 16 milionów słów 64-bitowych (ok. 4 MB) i czasie dostępu 50 nanosekund. Komunikacja jednostki centralnej z otoczeniem odbywała się zaś przez dwanaście 16–bitowych kanałów wejścia/wyjścia o szybkości transmisji 160 Mbit/s. Do jednego z kanałów transmisyjnych dołączony był komputer komunikacyjny, pośredniczący między człowiekiem a systemem Cray-1.

Na kilka procesorów

Pierwsze superkomputery, takie jak CDC–6000 i Cray-1, były urządzeniami jednoprocesorowymi. Szybko okazało się jednak, że znacznie lepiej wykorzystać do skomplikowanych obliczeń kilka lub kilkanaście znacznie prostszych układów. Pierwszym przedstawicielem nowej rodziny superkomputerów został zaprezentowany w 1982 roku Cray X-MP (Multiple Processor). W maszynie tej zwielokrotniono zastosowany procesor wektorowy i wykorzystano wspólną dla wszystkich jednostek centralnych pamięć operacyjną. Najsilniejsza konfiguracja składała się z czterech procesorów komunikujących się między sobą zarówno przez pamięć operacyjną, jak i za pośrednictwem wyspecjalizowanego układu synchronizującego ich pracę.

W komputerze tym wykorzystano zewnętrzny układ wejścia/wyjścia, służący do połączenia jednostki centralnej z komputerami komunikacyjnymi (terminalami), stacjami roboczymi oraz urządzeniami graficznymi i pamięcią masową. Rozwiązania zastosowane w Cray’u X-MP, nazywane systemem przetwarzania symetrycznego SMP (Symmetric Multiprocessing), stosowane są do dziś m.in. w wieloprocesorowych maszynach zbudowanych na kościach AMD Opteron czy Intel Xeon i Itanium.

Początkowo dostępna pamięć była współużytkowana bezpośrednio przez wszystkie procesory – jest to tzw. architektura UMA (Uniform Memory Access). Technologia taka jest jednak mało efektywna. UMA narzuca bowiem wszystkim układom konieczność korzystania z tych samych obszarów pamięci, na skutek czego często dochodzi do konfliktów. W superkomputerach znacznie lepiej sprawdza się architektura NUMA (Non-Uniform Memory Access). Tutaj każdemu węzłowi (procesorowi lub grupie procesorów) przydzielony zostaje oddzielny obszar pamięci. Dzięki temu wszystkie CPU korzystają z własnej pamięci lokalnej i nie muszą się one odwoływać do pamięci innego węzła.

NUMA nie rozwiązywała jednak wszystkich problemów związanych z systemami SMP. Obecnie stosowane procesory mają bowiem nawet kilkumegabajtową pamięć podręczną. Choć obecność tej pamięci znacznie podnosi wydajność komputera, to jednocześnie narzuca bardzo poważne ograniczenia konstrukcyjne. Chodzi mianowicie o zapewnienie spójności przetwarzanych danych znajdujących się we wszystkich niezależnych modułach cache – cache coherency. Aby temu zapobiec, do architektury NUMA dodaje się mechanizmy łączące dane w jedna całość. Niestety, okupione jest to znaczną stratą pasma przepływności wewnętrznej magistrali superkomputera.

Znacznie efektywniejsze okazało się instalowanie w systemach SMP wspólnej dla wszystkich procesorów pamięci cache trzeciego poziomu. Jest to obecnie coraz częściej stosowana technika – tzw. architektura CMP (Cellular MultiProcessing). Mimo to zbytnie obciążenie magistrali systemowej jest jednak ciągle podstawowym powodem ograniczonej skalowalności systemów SMP. W takich superkomputerach wszelkie odwołania do pamięci, dysków, urządzeń peryferyjnych itp. są realizowane za pośrednictwem szyny głównej, a wzrost ilości danych przepływających przez magistralę o ograniczonej przepustowości musi w istotny sposób wpłynąć na wydajność całego systemu.

0
Zamknij

Choć staramy się je ograniczać, wykorzystujemy mechanizmy takie jak ciasteczka, które pozwalają naszym partnerom na śledzenie Twojego zachowania w sieci. Dowiedz się więcej.