artykuły

Sun Niagara - procesor zupełnie inaczej

59
28 stycznia 2007, 14:58 Ryszard Sobkowski
Zapatrzeni, ze zrozumiałych względów, w konstrukcje procesorów z rodziny x86, zupełnie nie zauważamy tego, co dzieje się wśród układów przeznaczonych do innych zastosowań, przede wszystkim do serwerów. A tam – dzieją się naprawdę ciekawe rzeczy. Na jesiennym Processor Forum 2006, oprócz przedstawionych już przez nas niewiele mówiących prezentacji K8L, najciekawszą konstrukcję zademonstrował Sun Microsystems pod nazwą Niagara 2. Cóż tak ciekawego kryje się w architekturze tego układu?

Spis treści

O przeznaczeniu i wydajności

Procesor Niagara 2, podobnie jak produkowany już od pewnego czasu pod nazwą handlową UltraSPARC T1 układ Niagara, przeznaczony jest do wykorzystania przede wszystkim w serwerach biznesowych, szczególnie klasy front end. Specyfiką takiej pracy jest obsługa bardzo wielu niezbyt skomplikowanych wątków programu, a często wręcz kilkudziesięciu instancji tego samego procesu, jak to widzimy np. w serwerach WWW, najbardziej charakterystycznej grupie aplikacji front end. Jak uzyskać wysoką wydajność w takim trybie pracy?

Na finalną wydajność procesora składają się dwa czynniki. Pierwszym z nich jest jego wydajność obliczeniowa – mówiąc w uproszczeniu, liczba operacji wykonywanych w jednostce czasu. Drugim, równie ważnym, jest przepustowość, którą należy rozumieć jako objętość danych, jakie w jednostce czasu procesor będzie w stanie pobrać, obrobić i zwrócić do systemu. Środków na uzyskanie większej wydajności jest wiele – przyspieszanie częstotliwości zegara, zwiększanie liczby operacji wykonywanych w jednym cyklu przez stosowanie architektury superskalarnej, czy wreszcie zwielokrotnienie jąder procesora.

W przypadku obciążenia o charakterze silnie wielowątkowym nietrudno zauważyć, że przełączanie procesora pomiędzy kolejnymi obsługiwanymi wątkami wiąże się ze stratą czasu – dla każdego wątku muszą zostać pobrane należące do niego dane. Nie zawsze przełączanie wątków wiąże się z pobieraniem również ich kodu – jeśli pracuje wiele instancji tego samego procesu, stosuje się współdzielenie kodu, który dla wszystkich instancji załadowany jest tylko raz, dzięki czemu jest duże prawdopodobieństwo, że znajdzie się w cache procesora. Ale nawet tylko sama strata czasu związana z pobraniem należących do obsługiwanego wątku danych powoduje, że w miarę wzrostu liczby obsługiwanych procesów i wątków efektywność wykorzystania procesora maleje, by w skrajnym przypadku osiągnąć poziom bliski zera – prawie cały czas procesora angażowany jest w przełączanie wątków. W jaki sposób oddalić tę perspektywę?

Różne twarze wielowątkowości

Jednym ze środków jest procesor pracujący wielowątkowo. Wielowątkowość (multithreading) można realizować na wiele sposobów. Najprostszym z nich, praktycznie występującym we wszystkich współczesnych komputerach, jest wielowątkowość na poziomie systemu operacyjnego, sprowadzająca się do przełączania wątków z chwilą, gdy wątek aktualnie angażujący procesor udostępnił taką możliwość, a system uznał, że pora na obsługę innego wątku. Taki tryb obsługi wielowątkowości nie ma związku z konstrukcją procesora. Wyższy poziom przystosowania do pracy wielowątkowej to „zgrubna” wielowątkowość (coarse multithreading), w której przełączenie obsługi na następny wątek następuje z chwilą, gdy dotychczas wykonywany wyczerpał zapas danych lub kod zgromadzony w pamięci cache. Z takim rozwiązaniem spotykamy się np. w procesorach Itanium 2. Kolejnym rozwiązaniem, które zresztą użytkownicy PC doskonale znają z procesorów Pentium 4 pod nazwą HyperThreading, jest współbieżna wielowątkowość. Polega ona na wprowadzaniu do potoku wykonawczego procesora dwóch (lub więcej) niezależnych wątków programu i równoległym ich wykonywaniu przez dostępne akurat jednostki wykonawcze. Współbieżna wielowątkowość jest rozwiązaniem pozwalającym na lepsze wykorzystanie jednostek wykonawczych w rozbudowanych procesorach superskalarnych. W Pentium 4 sprawdziła się nieszczególnie głównie dlatego, że procesor ten bynajmniej nie dysponował nadmiarem jednostek wykonawczych.

Niestety, nawet najwydajniejsza architektura nie jest w stanie nic poradzić na to, że wykonywany kod musi odwoływać się do danych w pamięci RAM, a także na to, że zawarte w nim relacje często uniemożliwiają wykorzystanie architektury superskalarnej.



Korki w Montecito

Popatrzmy na opublikowane przez Intela wyniki testów wykorzystania procesora (wykonane dla Itanium 2 „Montecito”). W zadaniach klasy workstation (benchmarki SPECfp i SPECint) uzyskiwany praktycznie średni współczynnik IPC (Instructions Per Clock) wynosi około 0,5, zaś w serwerowych aplikacjach biznesowych – około 0,15. Kompletna porażka, szczególnie jeśli weźmiemy pod uwagę, że teoretycznie Itanium wykonuje 3 instrukcje w jednym cyklu, a kod programów jest optymalizowany do takiego wykonywania już na etapie kompilacji!

Strona:
gniotekZobacz profil
Poziom ostrzeżenia: 0%
gniotek2007.01.28, 15:03
zabieram się do czytania.
HΛЯPΛGŌNZobacz profil
Poziom ostrzeżenia: 0%
HΛЯPΛGŌN2007.01.28, 15:15
Teraz te xeony i opeterony jakies takie bidne się wydają smilies/szczerbaty.gif
Bez kitu, 8 rdzeni, 64 wątki jednocześnie O_o
TraceurZobacz profil
Poziom ostrzeżenia: 0%
Traceur2007.01.28, 15:21
Biorę się za czytanie ;] 3

@Całkiem ciekawe, no ale cóż- moja znikoma wiedza na ten temat nie pozwoliła mi do końca zrozumieć artykułu smilies/szczerbaty.gif Jednak ktoś na pewno będzie zadowolony.
AkiraZobacz profil
Poziom ostrzeżenia: 0%
Akira2007.01.28, 15:25
Proszę o więcej artykułów z tej "bajki". Może coś od IBM (w kontekście np zbliżającej się do świata PC wirtualizacji), Fujitsu produkuje też Sparki 6-te też coś w nich pewnie ciekawego jest. No i moglibyście przy okazji takiego artykułu wypożyczyć do testów jakąś taką maszynę smilies/wink.gif
caheZobacz profil
Poziom ostrzeżenia: 0%
cahe2007.01.28, 15:43
ile to kosztuje? smilies/smile.gif
DaRkstaR2111Zobacz profil
Poziom ostrzeżenia: 0%
DaRkstaR21112007.01.28, 15:45
Świetny artykuł smilies/wink.gif

A jak mówiłem na forum, żenowy sparc jest wydajniejszy niż c2d to nie słuchali...
cOijNZobacz profil
Poziom ostrzeżenia: 0%
cOijN2007.01.28, 15:54
"Tak, jak opisaliśmy wyżej, cztery wątki są obsługiwane sekwencyjne, tak aby każdemu s nich zapewni czas na komunikację z cache. "

jest tego chyba wiecej. radze uzyc jakiegos spellcheckera.

:pzdr:
wikktorZobacz profil
Poziom ostrzeżenia: 0%
wikktor2007.01.28, 15:54
Fajny... Ale szkoda że nie ma jakiegoś małego małego testu razem z innymi procesorami serwerowymi...
WulfgarZobacz profil
Poziom ostrzeżenia: 0%
Wulfgar2007.01.28, 15:55
takich artykulw powinno byc jeszcze wiecej !!!
*Konto usunięte*2007.01.28, 15:58
brawo smilies/smile.gif Artykuły o procesorach na pclab są coraz ciekawsze smilies/smile.gif

Może coś o PowerPC IBM??? W końcu tych procesorów jest mnóstwo, wszystkie nowe konsole z tego co wiem plus wcześniej maki.
Funkcja komentowania została wyłączona. Do dyskusji zapraszamy na forum.
1