Więcej niż pecet

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.

Więcej:bezcatnews