Larrabee: graficzna ofensywa Intela

Intel to największy na świecie producent układów graficznych. Za sukces rynkowy firmy odpowiadają układy zintegrowane z chipsetami. Firma postanowiła jednak powalczyć z liderami rynku specjalizowanych GPU instalowanych na kartach graficznych i opracowuje układ Larrabee, który ma stawić czoło najlepszym procesorom graficznym ATI i NVIDII. Sęk w tym że Larrabee jest całkowicie nową propozycją - procesorem x86, który przystosowany został do przetwarzania grafiki 3D.

Podczas tegorocznej konferencji Intel Developer Forum, która odbyła się w Chinach, Pat Gelsinger z Intela zaprezentował pierwszy wafel krzemowy z rdzeniami procesorów graficznych Larrabee

Pomijając podstawowe funkcje graficzne Larrabee ma być procesorem realizującym funkcje GPGPU, czyli najprościej rzecz ujmując kość graficzna przystosowana będzie do wykonywania obliczeń nie związanych z przetwarzaniem strumienia graficznego. Układ taki może zająć się dowolnymi obliczeniami, ale cały czas pozostaje kartą graficzną. Do niedawna najlepszym przykładem typowego układu GPGPU była NVIDIA Tesla, czyli zmodyfikowana na potrzeby skomplikowanych obliczeń numerycznych karta GeForce 280 GTX.

Architektura na wzór Pentium

Architektura Intel Larabee wywodzi się wprost od procesora Pentium. Można powiedzieć, że jest to hybryda zawierają w sobie najlepsze cechy jednostek centralnych ogólnego przeznaczenia i nowoczesnych układów graficznych. Najważniejszą cechą Larrabee jest jego uniwersalność i pełna programowalność, które to cechy zawdzięcza zgodności z architekturą i kodem x86. Bez problemu można zatem wykonać na nim zarówno obliczenia związane z przetwarzaniem strumienia graficznego, jak i np. przetwarzaniem materiałów audio-wideo, obliczeniami związanymi z fizyką postaci, czy innymi dowolnymi zadaniami jakie przyjdą do głowy programiście. Co więcej, może on wspomóc jednostkę centralną komputera w chwili wykonywania na skomplikowanych obliczeń inżynierskich czy naukowych przyczyniając się do poważnego wzrostu ogólnej wydajności peceta. Innymi słowy, można powiedzieć, że Larrabee jest uniwersalnym akceleratorem wspierającym CPU w zależności od potrzeb bądź to w obliczeniach graficznych, bądź w innych sytuacjach wymagający dużej mocy obliczeniowej.

Larrabee od środka

Podstawę konstrukcji Larrabee stanowią odpowiednio zmodyfikowane jądra procesorów Pentium, zwane w tym wypadku jednostkami Multithreaded Wide SIMD. Każda z nich może jednocześnie obsłużyć cztery wątki. Budowa pojedynczego modułu Multithreaded Wide SIMD nie jest skomplikowana. Znaleźć w nim można znaną z procesorów Pentium unowocześnioną jednostkę ALU (Arithmetic Logic Unit), która w odróżnieniu od oryginału może wykonywać operacje 64-bitowe i pracować w trybie wielowątkowym. W celu jej uproszczenia konstruktorzy zrezygnowali z jednostek przewidywania skoków i rozgałęzień (Branch Prediction) oraz modułu Out of Order Execution wykonującego obliczenia poza kolejnością. Oznacza to, że Larrabee wykonuje rozkazy wyłącznie w kolejności, takiej jaką narzuca kod programu.

Budowa modułu Multithreaded Wide SIMD

Budowa modułu Multithreaded Wide SIMD

Drugim elementem składowym znajdującym się w module Multithreaded Wide SIMD jest jednostka wektorowa VPU (Vector Processing Unit). Składa się ona z wektorowej jednostki o szerokości wektora 16 oraz działa na liczbach pojedynczej i podwójnej precyzji. W czasie trwania cyklu zegarowego przetwarza szesnaście 32-bitowych operacji i potrafi między innymi wykonywać konwersje między różnymi formatami danych takimi jak Int32, FP32 i FP64 czy łączyć w jedną operację wielokrotne dodawanie na trzech argumentach. Oczywiście, wykonywane są przez nią również inne standardowo wymagane dla jednostek VPU operacje wektorowe. Układ Larrabee obsługiwać będzie także nowy zestawy instrukcji AVE (Advanced Vector Extensions), który ma pozwolić na jednoczesne przetwarzanie całych wektorów danych. Innymi słowy, instrukcje AVE są rozszerzeniem istniejących instrukcji SIMD, które mają przyspieszyć operacje przetwarzania grafiki trójwymiarowej.

Każdy z rdzeni Multithreaded Wide SIMD ma do swojej dyspozycji po 32 KB pamięci cache L1 dla instrukcji i 32 KB dla danych oraz wydzieloną dla siebie 256-kilobajtową pamięć L2. Do pamięci tej, jeżeli zachodzi taka potrzeba mogą odwoływać się również inne rdzenie - odbywa się to za pośrednictwem pierścieniowej, dwukierunkowej magistrali ring-bus o szerokości 1024 bitów (po 512 bitów w każdą stronę). Magistrala ta służy do komunikacji wewnątrz układu Larrabee - rdzenie komunikują się za jej pośrednictwem z kontrolerem pamięci, interfejsem odpowiedzialnym za wyświetlanie wygenerowanego obrazu oraz jednostką teksturującą. Dzięki pierścieniowej magistrali wymiana danych między poszczególnymi procesorami Multithreaded Wide SIMD jest wyjątkowo skuteczna. Po pierwsze procesory mogą przekazywać bezpośrednio między sobą dane jak również korzystać przy wymianie informacji z pamięci cache L2. Zysk wynikający z takiej architektury komunikacyjnej jest znacznie większy, gdyż dane pobrane przez jeden z rdzeni do własnej pamięci L2 są również dostępne w razie potrzeby dla innych rdzeni i nie ma powodu korzystania wówczas z wolniejszej pamięci zewnętrznej.

Kontroler pamięci cache pierwszego i drugiego poziomu, w odróżnieniu od tego z oryginalnego Pentium, obsługuje funkcje prefetch, która pozwala na wcześniejsze pobranie przewidywanych danych z pamięci, które za chwilę mogą zostać użyte w obliczeniach. Jest to niezbędny warunek opłacalności wykonywaniu obliczeń typu SIMD, gdyż oczekiwanie na dane zniweczyłoby cały zysk płynący z jednoczesnego wykonywania jednej instrukcji na kilku operandach. Warto w tym miejscu dodać, że pamięć cache drugiego poziomu służy nie tylko do wymiany danych, ale również wykorzystywana jest jako bufor kolejności wymiany danych w rozgałęzieniach programowych.

Tom Forsyth, projektant oprogramowania i sprzętu w Intelu opowiada o programowaniu i pracach nad mikroarchitekturą Larrabee.


Zobacz również