Wielordzeniowość procesorów jako jedyna droga do zwiększenia

advertisement
Adam Kwieciński
19.09.2013
Wielordzeniowoś ć procesoró wjakojedynadrogadozwiększeniawydajnoś ci
komputera-prawdaczyfałsz?
GENEZA POWSTANIA WIELORDZENIOWOŚCI:
Protoplastą pierwszego wielordzeniowego procesora przeznaczonego na rynek komercyjny był procesor
POWER3. Posiadał on architekturę 64-bitową i budowę opartą o architekturę RISC (ang. Reduced Instruction Set
Computer- komputer ze zredukowanym zestawem rozkazów), to znaczy, że korzystał ze zredukowanego zestawu
rozkazów. Sama nazwa linii POWER oznacza skrót „Performance Optimization With Enhanced RISC”, co po
przetłumaczeniu znaczy „Optymalizacja wydajności z ulepszonym RISC”.
POWER4, czyli następca POWER3, był pierwszym procesor wielordzeniowy przeznaczony na szeroki rynek,
który posiadał ich dwa, również jak wymieniony wcześniej POWER3 miał architekturę 64-bitową oraz korzystał z tej
samej listy rozkazów.
Istnienie rodziny procesorów POWER rozpoczęło się w 1990 roku od skonstruowania POWER1. Już wtedy
powstała koncepcja implementacji dwóch rdzeni w pojedynczej obudowie procesora. Jednym z czynników
ułatwiających możliwe wdrożenie rozwiązania było zastosowanie w drugiej wersji POWER1 lepszych
półprzewodników produkowanych podczas udoskonalonych procesów wytwórczych z wykorzystaniem oprócz
ditlenka krzemu również arsenka galu. Tranzystory zbudowane z takich półprzewodników są bardziej odporne na
drobne wahania napięcia, które byłoby dodatkowo zwiększone podczas równoczesnej pracy dwóch rdzeni jednego
procesora. Takie wahania stanowią zagrożenie dla pracy CPU, ponieważ mogą doprowadzić do przekłamań obliczeń,
a nawet do trwałego uszkodzenia procesora. Firma IBM zrezygnowała jednak z wcześniejszej budowy pierwszego
dwurdzeniowego procesora ogólnego przeznaczenia, albowiem głównym powodem zaniechania był wtedy brak
istniejących rozwiązań mogących zmniejszyć przewidywany zbyt obfity pobór mocy elektrycznej przez CPU.
WIELORDZENIOWOŚĆ A WIELOWĄTKOWOŚĆ:
Wielowątkowość oznacza możliwość wykonywania kilku wątków sprzętowych na jednym rdzeniu. Możliwa
jest dzięki temu, iż indywidualny wątek nie wykorzystuje w równym stopniu wszystkich elementów rdzenia, więc
pozostałe, które są nieaktywne mogą w tym samym czasie inny wątek. Liczba wątków obsługiwanych przez jeden
rdzeń może wynosić nawet osiem.
Procesory wielowątkowe nie wykorzystują technik podziału obciążenia na poziomie systemu, lecz ich
działanie polega na wykorzystaniu więcej niż jednego licznika rozkazów i zbioru programowalnych rejestrów. Jedna
taka para, czyli licznik rozkazów i zbiór programowalnych rejestrów, jest używana do obsługi jednego wątku w p.
wielowątkowym. W takim procesorze również zachodzi zjawisko przełączeń między procesami, tak jak w p.
jednowątkowym, ale na innej zasadzie: przełączenie jest wykorzystywane do przydzielenia wątkowi danego procesu,
a po uzyskaniu wyniku jego pracy do jej zakończenia. Gdy wątek zostaje zwolniony przez jeden proces, to w wyniku
przełączenia następny proces może zostać jemu przydzielony.
Procesory ogólnego przeznaczenia
tworzone z myślą o sprzedaży na
szeroki rynek konsumencki dysponują
rdzeniami potrafiącymi obsłużyć jeden
wątek naraz. A więc jeśli jeden z nich
jest wyposażony w dwa rdzenie, to
potrafi obsłużyć jednocześnie dwa
wątki, a jeśli w cztery rdzenie, to cztery
wątki. Zatem procesory wielordzeniowe
są jednocześnie wielowątkowe,
aczkolwiek sposób ich pracy różni się od
sposobu pracy procesorów
jednordzeniowych o rdzeniach
wielowątkowych.
ryc. 1. Porównanie pracy procesora jednowątkowego i procesora wielowątkowego w czasie.
1
Główną cechą odróżniającą jednordzeniowe procesory wielowątkowe od takich, które mają o wiele rdzeni
jednowątkowych, jest o wiele krótszy czas oczekiwania na instrukcje, gdyż p. wielowątkowe z jednym rdzeniem
mogą sprzętowo przełączać się między wątkami, pomijając czas niezbędny do programowej obsługi tych przełączeń
dla procesorów wielordzeniowych o rdzeniach jednowątkowych.
PROBLEM ZWIĘKSZENIA ZWIĘKSZENIA SZYBKOŚCI PRACY:
Jedną z głównych barier zwiększenia szybkości przeprowadzania operacji przez komputery jest technologia.
Pomimo tego, że poszukuje się nowych materiałów do tworzenia procesorów, to są one ciągle oparte głównie na
przemysłowo wytwarzanych półprzewodnikach i krzemie.
Jedna z niedoskonałości krzemu objawia się wtedy, że gdy występuje on razem z tlenem tworząc ditlenek
krzemu, który stanowi warstwę izolacyjną tranzystora. Bowiem okazuje się, że efektywna warstwa izolacyjna, przez
którą nie przenikałyby elektrony z tranzystora, nie może mieć grubości mniejszej niż 1,2 nanometra, a jest to grubość
jedynie pięciu atomów krzemu. Ta wada uniemożliwiała tworzenie mniejszych tranzystorów, które zmieściłyby się w
większej ilości w procesorze, co stanowi główną barierę dla podniesienia nominalnej częstotliwości taktowania
rdzenia. Aby przejść z procesu produkcyjnego 65 nm do 45 nm (w nanometrach oznaczona została szerokość
tranzystorów) firma Intel jako izolatora użyła tlenku hafnu, który lepiej niż tlenek krzemu koncentruje pole
elektryczne, czyli efektywniej chroni elektrony przed wydostaniem się z tranzystora. Obecnie Intel stosuje proces
produkcyjny 22 nm stosując najnowsze metody naświetlania wafli krzemowych, jednak coraz trudniej jest firmom
zmniejszyć jeszcze bardziej szerokość tranzystora.
Druga wada krzemu to jego zbyt skomplikowana struktura. Firma IBM rozważa zastąpienie krzemu grafenem,
który ma prostszą budowę, zapewniającą swobodniejszy przepływ elektronów w tranzystorze. Prototypowe
grafenowe układy scalone z tranzystorami o długości bramki 240 nm wykonują operacje 2,5 razy szybciej niż układy
krzemowe o podobnej długości bramki. Jednak pojawiła się przeszkoda- o ile wg. przewidywań wdrażanie w
fabrykach rozwiązań produkcyjnych potrzebnych do budowy procesorów grafenowych nie będzie zbyt kosztowne, to
dla firm o wiele bardziej droższe od obróbki krzemu będzie przetwarzanie grafenu.
Barierą są również takie aplikacje, które zostały napisane w sposób nie pozwalający w pełni korzystać z mocy
wielu rdzeni i wielowątkowego przetwarzania podczas wykonywania tych aplikacji. Przyczyną jest brak, lub
niemożliwość podzielenia kodu aplikacji na segmenty mogące wykonywać się w kilku wątkach jednocześnie. Można
też uruchomić wiele wątków aplikacji na pojedynczym rdzeniu, ale to przyniesie wzrost ilości wykonywanych operacji
tylko do momentu maksymalnego obciążenia jego jednostek arytmetyczno-logicznych w nim zawartych.
Głównie niedoskonałości technologii i aplikacji wymusiły rozpoczęcie procesu szukania innych dróg
przyspieszenia wykonywania operacji przez komputer.
WYRÓŻNIONE METODY ZWIĘKSZENIA SZYBKOŚCI PRACY KOMPUTERA:
Dylemat: kilka rdzeni, czy jeden?
Procesory wielordzeniowe odznaczają się ciekawą cechą charakterystyczną- efektywność pracy procesora
wielordzeniowego nie jest równa efektywności procesora jednordzeniowego, wtedy, gdy suma nominalnych
wartości taktowania rdzeni w p. wielordzeniowym jest równa wartości taktowania rdzenia w p. jednordzeniowym.
Przykładowo: procesor o dwóch rdzeniach 1,5 GHz nie będzie wykonywał zadań z taką samą prędkością jak procesor
o jednym rdzeniu 3 GHz. Prędkość powinna być taka sama, gdyby dwa wątki pojedynczego zadania byłyby
obsługiwane w sposób idealny przez dwa rdzenie procesora, ale jest to niemożliwe. Prędkość ta będzie wyższa, lub
niższa w zależności rodzaju zadań wykonywanych przez procesory.
Procesory wielordzeniowe wykonują szybciej obliczenia, które są proste i występuje konieczność ich
wykonania w dużej ilości naraz, np. w przypadku obróbki i kompresji wideo, renderowaniu animacji 3D, oraz
kompresji obszernych pakietów plików, chociaż pojedynczy, rdzeń o wyższej częstotliwością taktowania szybciej
wykona obliczenia, które są bardziej złożone i nie wymagają pracy na kilku wątkach jednocześnie niż p.
wielordzeniowy o rdzeniach z mniejszym taktowaniem zegara.
Czynnikami wpływającymi na szybkość wykonywanych obliczeń są też cechy zastosowanej w procesorze
architektury. Wśród nich można wyróżnić długość potoku wykonawczego, organizację pamięci podręcznej oraz
sposób, w jaki sposób zaimplementowany planista przydziela do wykonania operacje stało- i zmiennoprzecinkowe
rdzeniom. Np. czterordzeniowy procesor AMD o architekturze Vishera wykonuje operacje o ok. 4% szybciej niż
2
starszy o jedną generację procesor z architekturą Bulldozer z taką samą częstotliwością taktowania rdzeni, za sprawą
skróconego potoku wykonawczego i szybciej reagującego planisty.
Odpowiedzią na pytanie z podpunktu jest procesor z kilkoma rdzeniami. Są one bardziej uniwersalne w
zarówno w zastosowaniach serwerowych, jak i w domowych komputerach typu desktop. Firmy produkujące
procesory już dawno podjęły tę decyzję systematycznie zwiększając ilość rdzeni i wprowadzając coraz nowsze
architektury w swoich modelach.
Hyper-threading:
Technologia implementacji wielowątkowości współbieżnej opracowana przez firmę Intel, która wykorzystuje
zduplikowane w konstrukcji procesora fragmenty przechowujące stany procesów, i uruchomiona sprawia, że każdy
rdzeń fizyczny procesora jest wykrywany przez system operacyjny jako dwa wirtualne, co wskazuje, że ta technologia
korzysta po części z założeń wielordzeniowości.
Rdzenie logiczne dzielą między sobą pamięć podręczną i jednostki wykonawcze. Procesor czterordzeniowy,
będzie się zachowywał jakby miał osiem rdzeni, jednak nie będzie wykonywać operacji tak samo szybko jak procesor
ośmiordzeniowy, gdyż w tej technologii nie są duplikowane główne zasoby wykonawcze. Według firmy Intel ta
technologia zwiększa szybkość wykonywanych zadań o ok. 30% w stosunku do procesorów bez tej technologii o
identycznej częstotliwości taktowania. Hyper-threading służy głownie do zwiększenia prędkości przeprowadzania
obliczeń równoległych w sytuacjach, gdy grupa procesów pozostawia niewykorzystywane zasoby jednego
wirtualnego procesora, wtedy procesy przypisane do drugiego mogą te zasoby wykorzystać.
Przetaktowywanie:
Przetaktowywanie, czyli tzw. podkręcanie jest jednym z prostszych sposobów uzyskania lepszej
częstotliwości taktowania procesora, nawet o 100% większej niż jego taktowanie nominalne. Polega na zwiększeniu
taktowania zegara CPU, poprzez dokonanie zmian w ustawieniach BIOS-u: zwiększenia mnożnika częstotliwości
magistrali FSB, jak i samej tej częstotliwości. Ze zwiększeniem częstotliwości pracy procesora związane jest
równoczesne zwiększone zapotrzebowanie procesora na energię elektryczną, więc przed dokonaniem
przetaktowywania trzeba wziąć pod uwagę parametry zasilacza jednostki centralnej. Użycie przetaktowywania w
zależności od podatności procesora na tę operację, doprowadza do zwiększenia temperatury procesora podczas jego
pracy, co pociąga często za sobą użycie dodatkowych metod chłodzenia procesora np. układu chłodzenia ciekłym
azotem. Przeprowadzenie procesu przetaktowywania może wiązać się z problemami niestabilnej pracy komputera
np. może dochodzić do błędów w zapisie na twardym dysku lub do zawieszenia pracy komputera.
Wykorzystanie GPU:
Firma NVIDIA jako pierwsza wykorzystała kartę graficzną, by swoimi obliczeniami nie tylko generowała
grafikę w komputerze, ale też obliczała bardziej skomplikowane fragmenty kodów aplikacji, podczas gdy reszta tej
aplikacji wykonywana jest przez procesor.
By zastosować te rozwiązanie NVIDIA wprowadziła architekturę dla kart graficznych CUDA (ang. Compute
Unified Device Architecture – jednolita architektura urządzeń do obliczeń). CUDA służy do przeprowadzania obliczeń
równoległych w układzie GPU (Graphics Processing Unit- jednostka przetwarzania grafiki). Przed wprowadzeniem
CUDA układy GPU składały się z setek rdzeni, które były przystosowane jedynie do przeprowadzania obliczeń
generujących grafikę. Architektura CUDA służy do zaadaptowania rdzeni w GPU do wykonywania tych samych
operacji numerycznych, które wykonuje CPU. W tej architekturze procesor obsługuje sekwencyjne fragmenty kodu,
w trakcie, gdy fragmenty równoległe obliczane są na GPU. W ten sposób CUDA wykorzystując wiele rdzeni
znajdujące się w GPU korzysta z założeń wielordzeniowości.
CUDA już jest stosowana w m. in. obliczeniach fizycznych (w tym obliczaniu dynamiki płynów), przetwarzaniu
sygnałów i algebrze liniowej.
Wniosek:
Wielordzeniowość nie jest jedynym sposobem zwiększenia szybkości działania komputera. Jednak wiele
różnych sposobów takich jak hyper-threading lub architektura CUDA zostały stworzone w oparciu o rozwiązania
podstawowej koncepcji wielordzeniowości, czyli aranżowaniu w komputerach podzespołów zawierających wiele
jednostek wykonawczych mogących obsłużyć jednocześnie jak największą liczbę wątków.
3
Download