artykuły

Jak będą wyglądały procesory mobilne następnej generacji?

Gorące wieści z Hot Chips 2012

85
31 sierpnia 2012, 15:27 Mateusz Brzostek

AMD Jaguar

Drugi ważny temat poruszony przez AMD na Hot Chips 2012 to nowa generacja najbardziej energooszczędnych układów. Do tej pory to miejsce zajmują rdzenie Bobcat, z których AMD budowało procesory Brazos i Brazos 2.0. W przyszłym roku ma nastąpić drugi krok w ewolucji tej architektury, którego rezultat został roboczo nazwany Jaguar. Z rdzeni Jaguar będą budowane jedno-, dwu- i czterordzeniowe APU Kabini, które trafią do netbooków i tabletów i zastąpią procesory serii E i E2.

Jaguar będzie bardzo nowoczesnym rdzeniem. Do funkcjonalności Bobcata dodano obsługę najnowszych rozszerzeń zestawu instrukcji x86: SSE4.1, SSE4.2 (oba do tej pory były stosowane tylko w procesorach Intela i AMD Trinity) i AVX oraz sprzętowe szyfrowanie AES. Do tytułu najbardziej funkcjonalnego rdzenia x86 brakuje tylko instrukcji FMA (mnożenie łączone z dodawaniem), które obecnie rozumieją tylko rdzenie Piledriver. Poprawiono też możliwości wirtualizacji, choć nie sprecyzowano w jaki sposób. Może chodzić o ulepszoną jednostkę IOMMU, która pozwala wirtualizować urządzenia wejścia-wyjścia, a to byłby krok w kierunku kompatybilności nowych APU z HSA, czyli realizacji wielkiego planu AMD.

Zmieni się organizacja pamięci podręcznej względem procesorów Brazos. Rdzenie (od jednego do czterech) będą obsługiwane przez współdzieloną jednostkę składającą się z interfejsu do pamięci L2 i czterech bloków samej pamięci, po 512 kB każdy. To daje 2 MB pamięci L2 wspólnej dla czterech rdzeni. Podczas obciążenia czterech rdzeni każdy będzie miał do dyspozycji 512 kB L2, czyli tyle samo co Bobcat. Za to w mniej wielowątkowym oprogramowaniu jeden lub dwa rdzenie będą mogły wykorzystać całą pamięć L2 dla siebie, co powinno zwiększyć wydajność w tych aplikacjach.

Mikroarchitektura

Mikroarchitektura poszczególnych rdzeni została gruntownie przebudowana. Przyjrzyjmy się, jak to zrobiono:

Zielone bloki oznaczają część front-end, gdzie następuje pobieranie i dekodowanie rozkazów oraz przewidywanie skoków. Pamięć podręczna instrukcji ma wciąż taką samą pojemność, ale dodano cztery bufory, w których przechowuje się małe pętle kodu. Powtórne wykonanie pętli nie wymaga wtedy pobierania instrukcji od nowa, wystarczy odczytać je z bufora, co oszczędza energię i często jest szybsze. Układowi pobierania z wyprzedzeniem powiększono bufor, więc może „wybiegać myślą” dalej w kod programu. Dekoder rozkazów podzielono na siedem etapów potoku wykonawczego, o jeden więcej niż w Bobcacie (więcej napiszemy o tym za chwilę).

Pomarańczowe bloki to część wykonująca obliczenia stałoprzecinkowe. Liczba jednostek wykonawczych się nie zmieniła: Jaguar może wykonać dwie operacje na cykl zegara. Oprócz kilku nowych mikrooperacji i powiększonego przedziału instrukcji, które mogą być wykonywane poza kolejnością, najważniejszą zmianą w tej części rdzenia jest układ sprzętowego dzielenia, zapożyczony z Llano. Dzięki niemu dzielenie dwóch liczb trwa jeden cykl zamiast dwóch.

Fioletowe bloki wykonują instrukcje na liczbach niecałkowitych. Tę część zmieniono głównie ze względu na wprowadzenie obsługi AVX, co wymaga operacji na liczbach 256-bitowych – dwa razy dłuższych od 128-bitowych składników operacji SSE. Bobcat był wyposażony w 64-bitowe jednostki zmiennoprzecinkowe, więc operacje SSE wykonywał w dwóch przejściach, raz na mniej znaczących bitach i drugi raz na bardziej znaczących. Jaguar ma dwa razy szersze jednostki FP, więc operacje SSE wykonuje „na jeden raz”, ale operacje AVX – „na dwa razy”. Nie jest to najbardziej wydajne rozwiązanie, ale jest najlepsze spośród tych, na które pozwala ograniczony budżet energetyczny i krzemowy w takim procesorze. W aplikacjach mocno wykorzystujących obliczenia zmiennoprzecinkowe powinno to dać zasadniczy wzrost wydajności względem Bobcata.

Czerwone bloki odpowiadają za pobieranie i zapisywanie danych do pamięci L1D oraz przesyłanie żądań do kontrolera pamięci L2. Najważniejszą zmianą jest w nich dodanie 128-bitowego łącza do jednostek zmiennoprzecinkowych, żeby mogły one zapisywać wyniki wykonanych operacji i pobierać dane wystarczająco szybko.

Niebieski blok to nowość. Odpowiada za komunikację z interfejsem pamięci L2, o którym wspomnieliśmy na początku. Razem z tym interfejsem zajmuje się dostarczaniem danych rdzeniom i pilnowaniem, żeby dwa rdzenie operujące na tych samych danych jak najmniej je blokowały. Poza tym interfejs udostępnia każdemu rdzeniowi osobne układy pobierania danych, może też wykonywać więcej operacji jednocześnie. Wszystkie te zmiany mają na celu nieprzerwane zaopatrywanie czterech rdzeni w dane. Organizacja pamięci z Bobcata byłaby przy czterech rdzeniach bardzo niekorzystna: komunikacja między rdzeniami i między osobnymi blokami L2 byłaby wolna i bardzo zasobożerna.

Pamiętamy, że Bobcat był od początku projektowany tak, żeby jak najmniej zależeć od procesu technologicznego. Dzięki temu produkcję układów byłoby łatwo przenieść do innej fabryki lub na inny proces. Do tej pory nie było to konieczne: układy Brazos i Brazos 2.0 były wykonywane w fabrykach TSMC w procesie 40-nanometrowym.

Jaguar jest pod tym względem jeszcze wygodniejszy: zamiast 12 bloków specyficznych dla procesu, które w razie zmiany fabryki trzeba byłoby przeprojektować, ma tylko 5. W procesie technologicznym 28 nm może się to przydać: stosuje go wiele fabryk, na przykład TSMC, Samsung i GlobalFoundries. Dzięki temu AMD będzie mogło wybrać najtańszą lub najlepszą ofertę albo po prostu zwiększyć możliwości produkcyjne (a wiemy, że TSMC miewa z nimi problemy).

Taktowanie, zużycie energii i wydajność

Powiedzieliśmy, że dekoder instrukcji podzielono na więcej etapów potoku wykonawczego. Podobną zmianę wprowadzono w jednostce zmiennoprzecinkowej. Ogólnie potok wykonawczy wydłużył się do 14 kroków, więc jest ich o jeden więcej niż w Bobcacie. Te zmiany mają umożliwić osiągnięcie częstotliwości taktowania wyższych nawet o 10%. Oczywiście, jest też druga strona medalu: w razie błędnego przewidzenia skoku marnuje się 14 cykli zegara zamiast 13, ale łatwo policzyć, że o 7% dłuższe oczekiwanie przy o 10% szybszym taktowaniu i tak daje wzrost wydajności, zwłaszcza w połączeniu z ulepszonym przewidywaniem skoków. To przyspieszenie taktowania wraz z ulepszeniami w rozprowadzaniu sygnału zegarowego i nowym systemem clock gatingu (odłączania sygnału zegarowego od nieużywanych obwodów) zapewniają optymalizację zużycia energii, co zawsze jest najważniejszą funkcją w urządzeniach przenośnych. Poza tym mniej energii dla rdzeni x86 oznacza więcej dostępnej energii dla układu graficznego, który będzie z nimi połączony. Niestety, o GPU i innych elementach przyszłorocznych APU nic jeszcze nie wiemy.

W sumie AMD spodziewa się osiągnąć taktowanie o mniej więcej 10% szybsze i wydajność o mniej więcej 15% lepszą przy tym samym taktowaniu, co daje ponad 25-procentowy przyrost szybkości działania przy tym samym zużyciu energii. To bardzo dużo, ale czy wystarczająco? Kabini będzie rywalizować między innymi z nowymi Atomami Intela, których rewolucyjne zmiany też nie ominą...

2