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