O czym opowiedzieć innym inżynierom?
Już program konferencji i tematy poszczególnych wykładów dają trochę do myślenia. AMD przygotowało pięć wykładów, z których trzy poświęcono nadchodzącym rozwiązaniom, temu, co trafi do sprzedaży za parę lub paręnaście miesięcy. Inżynierowie Intela wygłosili pięć, z których cztery poświęcono produktom już obecnym na rynku, a jeden eksperymentalnej technice, która prawdopodobnie trafi do masowej produkcji, ale w nieco dalszej przyszłości, raczej nie w ciągu najbliższego roku.
Złośliwi mogliby to dosadnie skomentować, ale nie ma takiej potrzeby. Wydaje nam się, że to dobrze symbolizuje różnice między tymi dwoma firmami i ich sytuacją na rynku. W wielu segmentach Intel rywalizuje sam ze sobą: rynek jest nasycony produktami poprzedniej generacji i konsumentów trzeba przekonywać, żeby zmienili sprzęt na nowszy. A w swoich planach Intel czuje się na tyle pewnie, że nie widzi potrzeby zbyt dużo mówić o nich innym graczom w tej branży. Tak działa firma, która ma duży udział w rynku i dąży do tego, żeby go utrzymać. AMD zaś woli opowiadać o planach na przyszłość, bo chce wzbudzić większe niż dotychczas zaufanie i zainteresowanie marką.
Trzy nowe rozwiązania, o których opowiadało AMD, to architektura rdzeni Steamroller, przeznaczonych do APU i procesorów zaplanowanych na przyszły rok, architektura Jaguar, przeznaczona do procesorów energooszczędnych (do netbooków i tabletów), oraz przyszłościowe techniki produkcji układów scalonych (o których opowiemy w innym artykule).
Steamroller
Przypomnijmy, że architektura Bulldozer, stosowana w procesorach FX, podlega ewolucji w kolejnych etapach. Pierwszym ulepszeniem modułu Bulldozer jest moduł Piledriver, wykorzystany w nowych APU Trinity (na razie dostępnych tylko w laptopach). Z tych modułów będą też zbudowane procesory FX drugiej generacji, których spodziewamy się na półkach sklepowych jeszcze w tym roku. Przypomnijmy, że najważniejszymi zmianami w rdzeniach Piledriver są nowy system rozprowadzania sygnału zegarowego, który umożliwia osiągnięcie szybszego taktowania przy tej samej mocy, oraz drobne usprawnienia w części front-end, odpowiedzialnej za dekodowanie i kolejkowanie rozkazów oraz przewidywanie skoków.
Następnym etapem tej ewolucji jest Steamroller. Pierwsze procesory z tymi modułami są zaplanowane na 2013 rok – będą to laptopowe APU o nazwie roboczej Kaveri, następcy dostępnego już dziś Trinity. Będą prawdopodobnie wykonane w procesie technologicznym 28 nm.
Ogólny plan modułu jest wciąż taki sam, charakterystyczny dla pochodnych architektury Bulldozer.
Jedna różnica rzuca się w oczy po spojrzeniu na diagram i porównaniu go z diagramem modułu Bulldozer: dodano drugi dekoder rozkazów. W Bulldozerze jeden dekoder obsługiwał oba rdzenie i jednostkę zmiennoprzecinkową. Mógł przetłumaczyć maksymalnie cztery instrukcje w cyklu zegara, czyli znacznie mniej, niż jest jednostek wykonawczych. Co prawda w praktyce i tak nie da się wykonać tylu instrukcji w cyklu zegara, ile jest jednostek wykonawczych, bo ograniczeniem staje się zależność kolejnych operacji od wyników poprzednich, oczekiwanie na transfer danych z pamięci itp., ale podwojenie dekoderów usuwa prawdopodobnie najważniejsze wąskie gardło tej architektury. Drugi dekoder powinien znacznie poprawić wydajność w sytuacjach, gdy oba rdzenie w module są obciążone. Dodano też mały bufor na zdekodowane mikrooperacje, co za jednym zamachem poprawia wydajność i oszczędza energię, bo zamiast ponownie dekodować często powtarzające się instrukcje, wystarczy je pobrać z bufora – a w tym czasie dekoder nie pracuje. Podobne rozwiązanie sprawdziło się w architekturze Sandy Bridge.
Inne elementy odpowiedzialne za „karmienie” jednostek wykonawczych danymi i instrukcjami również przeszły spore zmiany. System pobierania instrukcji ma do dyspozycji większą pamięć podręczną L1 na instrukcje. Poprawiono też system przewidywania skoków, który ma się teraz mylić o 20% rzadziej.
Zwiększono także liczbę rejestrów dostępnych dla techniki przemianowywania rejestrów i powiększono kolejkę zdekodowanych rozkazów czekających na wydanie konkretnej jednostce obliczeniowej. To powinno zmniejszyć liczbę pustych cykli, w których jednostki wykonawcze nie są wykorzystywane, bo czekają na dane lub instrukcje.
Skoncentrowano się nie tylko na wydajności, ale też na oszczędności energii i liczby tranzystorów. Wspólny dla obu rdzeni w module blok obliczeń zmiennoprzecinkowych przeprojektowano tak, żeby część obwodów była wspólna dla jednostek SSE i MMX, dzięki czemu całość zajmuje mniejszą powierzchnię i zużywa mniej prądu, bez żadnej straty wydajności. Nowa funkcja pamięci podręcznej L2 pozwala wyłączyć każdą ćwiartkę bloku L2 osobno, żeby oszczędzić energię w trakcie wykonywania programów niezapełniających całej L2. Jeśli implementacja pamięci podręcznej w następnym procesie technologicznym będzie podobna jak w procesie 32-nanometrowym, to wyłączenie jej ćwiartki może znacząco obniżyć zużycie energii przy lekkim obciążeniu.
Dodatkową oszczędność energii i powierzchni jądra AMD chce osiągnąć przez szersze wykorzystanie automatycznego projektowania. Poszczególne tranzystory, bramki i całe bloki logiczne można rozplanowywać ręcznie albo automatycznie, przy czym ten drugi sposób daje lepsze upakowanie elementów i mniejsze zużycie energii kosztem maksymalnego możliwego taktowania. Najwyraźniej niektóre ręcznie projektowane bloki miały zapas tego ostatniego, bo inżynierowie nie poświęciliby go w tej mikroarchitekturze dla energooszczędności.
Zmiany w Steamrollerze względem Piledrivera zapowiadają się obiecująco przede wszystkim z perspektywy APU kolejnej generacji (o nazwie roboczej Kaveri), przeznaczonych do wykorzystania w laptopach. Zapewne tak samo jak Piledriver moduły Steamroller trafią do procesorów desktopowych i serwerowych parę miesięcy później.
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ą...
Intel Valleyview
Choć Intel nie pochwalił się na konferencji planami co do następnej generacji procesorów Atom, interesujące informacje wyciekły z innych źródeł. Odświeżanie architektury Bonnell, ostatnio w postaci procesorów Cedarview, przynosiło wystarczające efekty, ale nie może trwać w nieskończoność. Czteroletnia architektura jest dziś pod wieloma względami przestarzała. Intel od dawna planował przeniesienie Atomów na nową, tym razem typu out-of-order, czyli zdolną wykonywać instrukcje poza kolejnością (jak wszystkie procesory pecetowe od czasów... Pentium Pro i AMD K5). To przejście nastąpi w przyszłym roku w postaci procesorów o nazwie roboczej Valleyview i architektury Silvermont.
Niestety, o samej architekturze nie wiemy zbyt dużo, ale trochę można wywnioskować na podstawie schematu blokowego:
Po pierwsze, cały SoC (System on a Chip) będzie zawierał jeden, dwa lub cztery rdzenie. To prawdopodobnie oznacza, że nowa architektura out-of-order nie będzie miała Hyper-Threadingu, czyli będzie przetwarzała tylko jeden wątek na jednym rdzeniu. Technika HT w starszych Atomach, wykonujących instrukcje w kolejności, była potrzebna, żeby zapewnić stałe zajęcie jednostkom wykonawczym. Być może nowa architektura nie będzie tego potrzebowała, a jeden, dwa i cztery rdzenie odpowiadają jedno-, dwu- i czterowątkowym Atomom obecnej generacji.
Po drugie, cały czip będzie się składał ze znacznie ściślej zintegrowanych składników. Funkcje mostka południowego zostaną włączone do jednego układu, co da większe możliwości projektantom bardzo małych i cienkich urządzeń. W procesorze mają być zintegrowane między innymi: układ dźwiękowy, zaawansowane kontrolery kamer, kontroler PCI-E, SATA2, Ethernet, USB 2.0 i 3.0.
Trzecią dużą zmianą jest zintegrowany układ graficzny. Zamiast wykorzystywać licencjonowane układy PowerVR, Intel chce zastosować własne GPU, podobne do tego z Ivy Bridge. Nowe GPU będzie miało do czterech jednostek cieniujących (EU), czyli jedną czwartą tego, co stosuje się w laptopowych Ivy Bridge. Ma obsługiwać dwa wyświetlacze jednocześnie i będzie, oczywiście, zawierać układ sprzętowego kodowania i dekodowania wideo. Co ciekawe, pozostanie w nim dodatkowy dekoder wideo licencjonowany od firmy Imagination Technologies, który być może będzie używany, jako bardziej oszczędny, do mniej wymagających zadań.
Przyszłoroczne Atomy będą miały jedno- lub dwukanałowy kontroler pamięci DDR3L albo LPDDR2, obsługujący do 8 GB RAM-u. Prawdopodobnie będzie on prawdziwie zintegrowany z procesorem i pamięcią podręczną. Dotychczas stosowane rozwiązanie, w którym wewnątrz czipu kontroler pamięci był podłączony do rdzeni starożytną magistralą FSB (patrz diagram), z pewnością jest za wolne dla wbudowanego układu graficznego i bardzo nieenergooszczędne.
Atomy Valleyview będą produkowane w procesie technologicznym 22 nm, co da Intelowi sporą przewagę w budżecie energetycznym i tranzystorowym nad konkurencyjnymi układami ARM. Czy to się przełoży na sukces rynkowy – przekonamy się pod koniec przyszłego roku, kiedy to nowe Atomy mają trafić do sprzedaży.