Larrabee: graficzna ofensywa Intela
- Marcin Bieńkowski,
- 01.07.2009, godz. 11:03
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.
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.
Zobacz również:
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.
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.