Haswell w teorii - jak został zbudowany najnowszy procesor Intela?
W tym tygodniu miała miejsce premiera procesorów Intel Haswell, czwartej generacji układów z serii Core. Mimo że tematyka podzespołów do komputerów cieszy się coraz mniejszą popularnością, postanowiłem opisać, dlaczego warto się nimi zainteresować. Tematyka ta jest ważna, gdyż już za parę dni w sklepach pojawią się pierwsze Ultrabooki, które będą wyposażone właśnie w procesory Haswell. Powinny one cechować się mniejszym poborem energii oraz większą wydajnością. Sprawdźmy czy warto czekać z zakupem komputera kilka dni i zdecydować się na model z nowszym układem.
Ogólnie o architekturze
Tak jak zawsze w przypadku Intela także tym razem zastosowano tu model Tick-Tock. Gwoli przypomnienia, polega ona na wprowadzaniu co roku nowej architektury (Tock) i procesu technologicznego (Tick). Strategia ta jest używana od czasów Core 2 Duo i jak na razie zdaje egzamin. Tym razem otrzymujemy nową architekturę Haswell w starszym procesie technologicznym 22 nm. Zatem obecnie jesteśmy w fazie (Tock).
Oczywiście mimo to architektura Haswell opiera się na poprzednich procesorach, ale w dużej mierze przeprojektowano je tak, by działały jeszcze lepiej. Co zatem nie uległo zmianie? Od sześciu lat procesory mają czterodrożny kontroler rozkazów oraz rozwiązania takie jak Macro-op Fusion i Micro-op Fusion, które łączą instrukcje w paczki kolejno przed wprowadzeniem ich do dekodera oraz po zdekodowaniu i sprawdzeniu ich. Intel zastosował również jednostki planowania rozdzielające zdekodowane informacje pomiędzy kolejne jednostki wykonawcze oraz identyczną jak wcześniej ilość pamięci podręczną pierwszego poziomu pracującej na instrukcjach i danych.
Sam układ Haswell składa się z trzech podstawowych części: agenta systemowego, rdzeni oraz układu graficznego. Agent systemowy to miejsce, które jakiś czas temu zastąpiło mostek północny montowany na płytach głównych. Znajdują się w nim kontrolery pamięci, PCI-Express, DMI oraz wejść i wyjść (I/O). Oprócz tego w procesorach znajdą się cztery rdzenie oraz układ graficzny. Całość jest połączona ze sobą magistralą pierścieniową umieszczoną pamięci podręcznej trzeciego poziomu.
Instrukcje
Wprowadzenie niemal każdej nowej generacji procesorów wiąże się z dodaniem nowych zestawów instrukcji. Są to 256-bitowe instrukcje wektorowe AVX2 (Advance Vector Extenson) I FMA (Fused Multiply-Add). AVX2 to instrukcje, które pozwalają na operowanie jedną instrukcją na dwa razy większej porcji danych (256 zamiast 128 bitów) niż w przypadku AVX. AVX2 umożliwiają na 256-bitowe działania wektorowe wykonywane na liczbach całkowitych, dzięki czemu instrukcje AVX2 mogą zastąpić instrukcje SSE. Pozwoli to na operowanie na dwukrotnie większej ilości danych niż dotychczas, co przełoży się na wzrost wydajności.
Z kolei instrukcje FMA umożliwiają mnożenie dwóch liczb i dodawanie wyniku tego działania do trzeciej liczby. Dzięki temu możliwe będzie znaczne przyspieszenie obliczeń. Jak? Wyobraźcie sobie, że operacja mnożenia zajmuje 5 cykli procesora, a dodawanie 3 cykle. Jeśli procesor nie obsługuje FMA, całość zajmuje 8 cykli, w przeciwnym przypadku tylko 5.
Intel wprowadził też w swoich procesorach instrukcje TSX (Transactional Synchronization Extensions), które zwiększają wydajność i dodatkowo umożliwiają łatwiejsze tworzenie aplikacji wielowątkowych. Jest to możliwe dzięki wprowadzeniu możliwości synchronizacji danych z poziomu transakcji, które znajdują się na współdzielonej pamięci. Proces ten ma być wspierany przez instrukcje RTM (Restricted Transactional Memory). Składają się one z rozkazów XBEGIN, XENF, XTEST i XABORT. Zastosowano tu również instrukcje manipulujące bitami w rejestrach.
Warto jednak pamiętać, że wprowadzenie nowych instrukcji nie jest równoznaczne z nagłym wzrostem wydajności. Jeszcze sporo wody w Wiśle upłynie, zanim programiści wykorzystają pełnię architektury Haswell. Jednak jako, że jest ona podobna do Sandy Bridge i Ivy Bridge, nie powinna zawieść już przy premierze. Inaczej to wyglądało w przypadku procesorów AMD opartych na architekturze modułowej (Bulldozer). Mimo że jednostki te w teorii były szybkie, to okazało się, że wyprzedzają swój czas i programy nie są do nich przystosowane. Dlatego przez pierwsze miesiące były znacznie wolniejsze niż procesory Intela. Z czasem różnica ta zmniejszała się.
Część wyjściowa
Intel zadbał również o to, by instrukcje dało się przetwarzać szybciej. W porównaniu z poprzednikami, procesory Intel Haswell echują się ośmioma, a nie sześcioma portami wyjściowymi, dzięki czemu procesor może przetworzyć o dwie instrukcje więcej w każdym cyklu pracy. Oprócz tego zainstalowano tu po jednej jednostce ALU (arytmetyczno-logicznej) i generacji adresów (AGU). Służą one do obsługi operacji zapisu. Jednostka arytmetyczno-logiczna może również odciążyć dwa pierwsze porty wyjściowe (0 i 1), gdyż z nich korzystają instrukcje FMA. Dodatkowa jednostka generacji adresów może zwalniać jednostki wykonawcze w drugim i trzecim porcie, przez co efektywniej będzie przeprowadzany proces ładowania rozkazów.
Część wejściowa
Oprócz liczby portów wyjściowych, zwiększyła się też liczba portów wejściowych z 54 do 60. Umożliwia to jednoczesne wykonywanie większej liczby instrukcji. Z kolei długość ReOrder Buffer powiększyła się ze 168 do 192 pozycji. Odpowiada on za zmianę kolejności następujących po sobie instrukcji. Musi on ułożyć je w taki sposób, by można było wykonać ich jak najwięcej w możliwie najkrótszym odcinku czasu. Zwiększono również bufory pozwalające na przekolejkowanie operacji odczytu i zapisu i dwukrotnie wydłużono kolejkę alokacji dla każdego z ośmiu wątków.
Kolejny ulepszony element części procesora odpowiedzialnej za pobieranie danych to system predykcji skoków. Teraz może obsłużyć on dwa skoki w jednym cyklu zegara. Oprócz tego może on śledzić kilka instrukcji. Dodatkowo procesory Haswell w lepszy sposób mogą poznać historię zachowań danej instrukcji, lepiej przewidywać jej zachowanie w danej sytuacji i zwiększyć wydajność całego procesora.
Zmian doczekał się też sposób zarządzania rejestrami. W dalszym ciągu stosowany jest zestaw fizycznych rejestrów znany z procesorów Sandy Bridge oraz Ivy Bridge, które nie pozwalają na zmianę umiejscowienia danych przed dokonaniem obliczeń, lecz teraz części stało- i zmiennoprzecienkowe rejestrów mogą pomieścić po 168 porcji danych, a nie kolejno 160 i 144 jak wcześniej.
Intel postanowił też polepszyć pamięć podręczną i to nie trzeciego, ale pierwszego i drugiego poziomu. Po pierwsze, cechują się one większą przepustowością danych, mają możliwość zapisywania i odczytywania na pamięci biznesowej dwa razy większej liczby danych oraz mogą wymienić 64 bajty danych w ciągu jednego cyklu zegara. Do tej pory można było wymienić tylko 32 bajty danych. Ostatnia zmiana to możliwość wysyłania żądań do pamięci systemowej dotyczących 32- zamiast 16-bitowych paczek danych. Zmiany te zwiększą wydajność przede wszystkim w aplikacjach korzystających z nowych instrukcji AVX, jednak w mniejszym stopniu będą odczuwalne także w starszych programach.
Oszczędzanie energii
Haswell to architektura tworzona głównie z myślą o urządzeniach mobilnych. Podobno w trybie czuwania i bezczynności mają one pobierać nawet 20 razy mnie energii niż jednostki dostępne dotychczas. Dzięki temu niektóre Ultrabooki z procesorami Haswell mają działać nawet dobę na akumulatorze, a standardowy Ultrabook z procesorem Intel Haswell ma pozwolić na co najmniej 9 godzin pracy bez zasilania sieciowego. Inaczej nie będzie mógł nazywać się Ultrabookiem.
Receptą na zmniejszenie poboru energii w procesorach Intela była inspiracja układami smartfonowymi i tabletowymi oraz wprowadzenie kilku rozwiązań. Pierwszy z nich to regulator napięcia, który w dotychczasowych komputerach znajdował się nie w procesorze, a w płycie głównej. Dzięki temu procesor może sam zarządzać swoim napięciem z ogromną szybkością i dokładnością. Wprowadzono też stan głębokiego stanu uśpienia C7 (do tej pory najniższym stanem był C6). O 25% poprawiła się też szybkość przechodzenia między poszczególnymi stanami. Wskutek tych zmian procesor o wiele szybciej zapada w stan uśpienia i pobiera wówczas pomijalną wręcz część energii.
Wiele osób może poczuć się teraz zdezorientowanych. C6? C7? O co chodzi? Otóż są to stany energetyczne procesora i oznacza się je jako C0-C6. Oprócz tego występują stany wydajności procesora (P0-P4), a także stany energetyczne i wydajności całego komputera, kolejno G0-G3 i S0-S5. Większa cyfra przy danym stanie oznacza, że pobierana jest mniejsza ilość energii, zaś niższa cyfra oznacza większą wydajność. Przykładowo, najwyższy stan G3 to odcięcie komputera od zasilania, G2 i S5 wyłączenie komputera, ale pozostawienie wtyczki w gniazdku, G1 i S4 to hibernacja. Idąc tak w górę będziemy zużywać coraz więcej energii, a po przejściu na stan G0, pojawi się stan G0, S0, (C1-C6), gdy procesor zaczyna działać oraz G0, S0, C0, (P0-P4), gdy procesor aktywnie działa.
Już teraz może wydawać się to zagmatwane, ale Intel sprawił, że stanie się jeszcze trudniejsze. Jest tak, gdyż Intel postanowił wprowadzić stany S0i, czyli wariacje na temat stanu S0, w którym komputer jest włączony. Przykładowo stan S0i3 jest oszczędny jak stan S3, ale zachowuje wydajność charakteryzującą stan S0. Nie identyczną, ale bardzo podobną. To jednak będzie najmniejszy problem, gdyż powrót do stanu pełnej wydajności potrwa zaledwie chwilę. Analogicznie będzie dostępny stan S0i4 i inne. Oprogramowanie, (także system) nie wie o istnieniu stanów pośrednich, są one zarządzane przez znajdujący się w procesorze mikrokontroler.
Dzięki temu w stanie S0i3 Ultrabook lub inny komputer będzie mógł nie wybudzać się przez wiele dni, tak by działać przez krótkie okresy czasu, by wówczas uaktualnić informacje takie jak poczta, wiadomości na Facebooku i komunikatorach itp. By funkcja ta działała poprawnie, konieczne jest posiadanie przystosowanego komputera (w tym karty sieciowej) oraz oprogramowania. Funkcja ta może nie zawsze działać prawidłowo w stacjonarnych, samodzielnie składanych komputerach. Jednak jeśli zdecydujemy się na kupno gotowej maszyny, takiej jak laptop, wszystko powinno działać w jak najlepszym porządku. Intel i producent maszyny powinni o to zadbać.
Wpływ na poprawę czasu pracy na akumulatorze ma także podzielenie układu na więcej stref autonomicznego zasilania. Procesory poprzedniej generacji składały się z trzech takich stref. Pierwsza z nich to wspomniany już agent systemowy, druga to rdzenie z pamięcią cache ostatniego poziomu, a trzecia to układ graficzny. W procesorach Haswell rdzenie zostały znacznie oddzielone od pamięci podręcznej i szyny pierścieniowej. Wynika to z prostego faktu, że im większa fragmentacja, tym większa oszczędność energii. Wynika to z faktu, że każdy element jest wówczas zasilany optymalnie niskim napięciem i każdy niepotrzebny segment jest marginalizowany lub wyłączany. Praca kilku elementów z jednym napięciem oznacza, że wszystkie będą pracować z napięciem najbardziej wymagającego elementu. A całość będzie pobierać więcej energii niż powinno.
Szczególną uwagę przyłożono do techniki brakowania mocy, która obejmuje więcej niż wcześniej elementów rdzenia. Oprócz tego oddzielne obwody, które mogą być dynamicznie odcinane od zasilania są mniejsze niż kiedyś. To też przekłada się na zużycie energii, zwłaszcza w stanie spoczynku i niskiej aktywności.
Inne rozwiązania oszczędzające energię to stany energetyczne C7-C10, w których nie tylko odcięte jest zasilanie procesora, ale nie jest nawet podtrzymywana zawartość pamięci L3, zatrzymana jest magistrala pierścieniowa, a wiele części procesora (segmentów) jest wyłączonych. Kolejne ciekawe rozwiązanie, to zmniejszenie zegara bazowego ze 100 MHz do 24 MHz. Zegar bazowy to częstotliwość, która po pomnożeniu przez mnożnik daje finalną częstotliwość taktowania zegara rdzeni. Przykładowo, jeśli macie stosunkowo nowy procesor Intela o częstotliwości taktowania 3900 MHz, to cechuje się on zegarem bazowym 100 MHz oraz mnożnikiem 39. Powrót zegara z 24 MHz do 100 MHz zajmie trochę czasu, ale będzie on zdecydowanie krótszy niż uruchamianie dysku twardego lub ekranu. Z tego powodu, proces ten będzie nieodczuwalny pod względem wydajności, przeciwnie niż pod względem energooszczędności. Dodatkowo w ultramobilnych wersjach Haswella także mostek południowy znajdzie się w obudowie procesora. Dzięki temu procesor będzie kontrolował swoje wydzielanie ciepła, przez to temperaturę i będzie mógł dobrać najbezpieczniejsze i najlepsze taktowania w trybie turbo.
Procesory graficzne
Kolejną innowacją jest zintegrowanie z procesorem zupełnie nowego układu graficznego. Jednostka ta będzie dostępna w trzech wersjach różniących się między sobą budową i wydajnością. Łączy je tylko podobna architektura oraz obsługa najnowszych bibliotek DirectX 11.1, OpenGL 4.0 i Open CL 1.2.
Najsłabsza odmiana zintegrowanej karty graficznej o oficjalnej nazwie Intel HD Graphics cechuje się nazwąkodową GT1 i będzie wyposażona w 6 jednostek obliczeniowych. Drugi w kolejności procesor graficzny to HD Graphics 4200, 4400, 4600, 4600 i P4700 (nazwa kodowa GT2) z 20 jednostkami, a najlepszy jest Intel HD Graphics 5200 (GT3e) z 40 jednostkami obliczeniowymi. Oprócz tego pojawi się Iris Pro Graphics 5200, które będzie mieć chip GT3 wzbogacony o pamięć CrystalWell.
Jest ona elementem niezbędnym do uzyskania zamierzonej przez Intela wydajności. Jeszcze do niedawna większość zintegrowanych kart graficznych miała możliwość korzystania tylko z pamięci RAM komputera. Szybko okazało się, że ze względu na konieczność komunikowania się z nią za pomocą magistrali FSB, HyperTransport lub innej rozwiązanie to nie jest wystarczająco wydajne. Dlatego AMD zaczęło stosować wbudowaną w płytę główną pamięć SidePort. Element ten przestał być potrzebny, gdy AMD stworzyło APU i połączyło GPU z CPU, które razem miały dostęp do kontrolera pamięci. W przypadku poprzednich procesorów Intela układ graficzny jest podłączony magistralą pierścieniową do pamięci podręcznej trzeciego poziomu oraz kontrolera pamięci RAM. Okazało się, że to za mało. Teraz Intel w procesorach z wbudowaną najlepszą kartą graficzną będzie montował maksymalnie 128 MB szybkiej pamięci eDRAM. Jest ona wolniejsza od pamięci cache L3, ale jest to… jej plus. Dzięki temu procesor nie będzie miał problemu z nadaniem priorytetu danej pamięci.
Nowe jednostki Intela wypadają dobrze, jeśli chodzi o obsługiwane rozdzielczości i liczbę ekranów. Dzięki poprawionemu silnikowi sprzętowej akceleracji wideo. Obsługiwane są formaty SVC i MJPEG, problemu nie sprawi też odtwarzanie wideo w rozdzielczości 4K HD (4096x2304 pikseli) oraz Quad HD (3840x2160 pikseli). Ważną nowością jest także dodanie obsługi DisplayPort 1.2. Co z tego wynika? Otóż dzięki temu monitor Quad HD będzie można podłączyć do komputera jednym kablem. Poprzednio dostępne jednostki Ivy Bridge także obsługują tak duże rozdzielczości, ale przez zastosowanie Display Port 1.1 do podłączenia ich będzie trzeba użyć aż dwóch kabli.
Kolejną nowością jest obsługa trzech niezależnych strumieni obrazów. Dzięki temu możemy spodziewać się bezproblemowej obsługi trzech wyjść obrazu. Co prawda do Ivy Bridge możemy podłączyć trzy monitory, jednak procesor ten obsługuje tylko dwa strumienie wideo, które są dzielone na trzy. Wynika z tego kilka problemów. Jeśli mamy na płycie dwa wyjścia Display Port i dowolne inne, uzyskamy obraz z trzech monitorów. Jeżeli mamy wyjście Display Port oraz inne, uzyskamy obraz na dwóch monitorach, tak samo jeśli na naszej płycie znajdują się dwa wyjścia innego typu niż Display Port.
Intel poprawił również technologię Clear Video, która ma poprawić jakość wyświetlanego obrazu. Zmiany polegają przede wszystkim na dodaniu tu systemu poprawiającego gamut barwowy. Oprócz tego układ graficzny zainstalowany w procesorach Haswel na podstawie analizy następujących po sobie klatek może tworzyć klatki pośrednie i zwiększyć liczbę emitowanych w jednej sekundzie klatek z 24 lub 30 nawet do 60. Dzięki temu znacznie poprawi się płynność obrazu. Intel poprawił też funkcję Quick Sync pozwalającą na zastąpienie procesora układem graficznym podczas kodowania oraz kompresji materiałów wideo. Zmiany ograniczyły się do zwiększenia wydajności przetwarzania, która już poprzednio prezentowała się lepiej niż u konkurencji, a teraz jeszcze nieznacznie się poprawiła.
Ostatnią nowością jest poprawa systemu stabilizacji odtwarzanego obrazu. Tak jak w przypadku Clear Video, operacja jest wykonywana na podstawie analizy następujących po sobie klatek i działaniu odpowiedniego algorytmu przewidującego prawdopodobny ruch kamery.