Kafelki oplecione siecią
Tak można, w krótkich słowach, opisać makroarchitekturę układu TILE64. Popatrzmy zresztą sami, jak to wygląda, może nie w naturze, a na schemacie blokowym.
64 rdzenie obliczeniowe połączone są ze sobą siecią typu mesh, która zapewnia im dostęp do pamięci RAM, a także z urządzeniami peryferyjnymi, których dość nietypowy charakter wyjaśnimy za chwilę. Na razie popatrzmy na to, co zawiera „kafelek”.
Pomijając chwilowo jednostki obliczeniowe i system cache, zauważmy element, który Tilera nazywa po prostu "switch", a który w rzeczywistości jest zaawansowanym routerem, dzięki któremu sieć mesh w pełni zasługuje na stosowaną wobec niej przez firmę Tilera nazwę iMesh – sieci inteligentnej. Coś nam to przypomina?
No właśnie! Bardzo podobną makroarchitekturę pamiętamy z intelowskiego układu Polaris, również jej podstawą jest inteligentna sieć. Jedyną praktyczną różnicę stanowi fakt, że w TILE64 nie występuje „piąty element” w postaci łącza skierowanego „do przyszłości”.
Dlaczego przywiązujemy taką wagę do „kafelkowo-sieciowej” makroarchitektury TILE64? Przede wszystkim dlatego, że zapewnia ona znacznie większą przepływność niż stosowana dotychczas w wielordzeniowych architekturach „procesorów do zadań specjalnych” architektura szynowa. Popatrzmy na przykład na obecny już od przeszło roku na rynku 96-rdzeniowy układ CSX600 Avebury, firmy ClearSpeed.
Zarówno sieć systemowa, jak i sieć peryferiów mają w nim strukturę szynową, której przepływność stanowi ewidentną barierę skalowalności liczby rdzeni obliczeniowych. Podobnie wygląda konstrukcja innych wielordzeniowych procesorów obecnych już na rynku, jak choćby układu Vega 2 firmy Azul Systems. Na tym tle rozwiązania takie jak iMesh firmy Tilera czy sieć zastosowana przez Intela w układzie Polaris stanowią ewidentny wyznacznik nowego, bardzo obiecującego trendu.
Architektura i wydajność
Najbardziej wyrafinowana makroarchitektura nie zastąpi jednak wydajności, a ta, jak wiemy, uzależniona jest już od architektury jednostek przetwarzających, czyli naszych „kafelków”. Wróćmy więc do budowy kafelka.
Kafelek jest procesorem o architekturze VLIW (Very Long Instruction Word). Krótkie wyjaśnienie, jeśli dla kogoś ta nazwa jest obca – w procesorze takim kolejne instrukcje pakowane są po kilka (w tym przypadku trzy) do rejestru o odpowiedniej długości, a następnie wykonywane na trzech operandach lub parach operandów, również umieszczonych w rejestrach o bardzo dużej długości. W ten sposób trzy operacje mogą być wykonane w jednym cyklu procesora, podobnie jak w znanych nam dobrze pod nazwą SSE instrukcjach SIMD. Różnica jest tylko taka, że w SIMD (Single instruction Multiple Data) na wszystkich danych wykonywana jest ta sama instrukcja, podczas gdy VLIW wykonuje równocześnie kilka instrukcji, na kilku niezależnych od siebie wartościach danych. Najbardziej znaną implementacją architektury VLIW są procesory Transmeta Crusoe i ich następcy, pochodną jej jest także architektura EPIC procesorów Intel Itanium.
Procesor-kafelek jest wyposażony w rozbudowany system pamięci podręcznych – oddzielne pamięci L1 dla danych i instrukcji, o pojemności 8 KB każda oraz pamięć cache drugiego poziomu, której pojemność wynosi aż 64 KB. Nie koniec na tym – procesor może korzystać również z cache trzeciego poziomu, którą zrealizowano w postaci distributed cache, czyli pamięci rozproszonej, jednak nie wyjaśniono, na czym polega jej działanie.
Rozbudowany system pamięci cache sugeruje, jaki tryb pracy mieli na myśli konstruktorzy układu. Każdy z klocków jest osobnym, samodzielnym procesorem, przystosowanym dzięki dużym pamięciom cache do wykonywania długich i złożonych wątków, lub wręcz samodzielnych programów. Programy mogą być nawet bardzo złożone - w ramach testów uruchamiano na TILE64 takie zestawy programów, jak na przykład 64 instancje systemu operacyjnego Linux z aplikacjami.
Układ TILE64 współpracuje z pamięciami DDR2 poprzez aż cztery 64-bitowe szyny. Cztery niezależne interfejsy DDR2 800 dają mu przepływność do 12,8 GB/s, co przy relatywnie dużych pamięciach cache powinno zapewniać wystarczającą płynność przepływu danych. Również ich dystrybucja pomiędzy poszczególnymi procesorami nie nastręcza problemów – sumaryczną przepływność sieci iMesh, łączącej z interfejsami i ze sobą poszczególne procesory, producent szacuje na 27 terabitów na sekundę.
Moc i gorące sprawy
Współczynnik IPC, wyznaczający wraz z częstotliwością ogólną wydajność procesora i wynoszący 3 w przypadku układu TILE64, pozwala na stosowanie relatywnie niskich częstotliwości taktowania układu przy zachowaniu sensownej wydajności – TILE64 pracuje więc z zegarami 600-900 MHz. Trzy równorzędne funkcjonalnie jednostki procesora pracują równolegle. Jednostki operują na pliku 96-bitowych rejestrów (trzy wartości 32-bitowe).
Wielu Czytelników będzie na pewno zainteresowanych wydajnością TILE64 w porównaniu z teraflopowym Polaris Intela. Nie jest to porównanie zbyt szczęśliwe z wielu powodów. Pierwszy z nich to fakt, że Polaris jest układem doświadczalnym, podczas gdy TILE64 to już konstrukcja użytkowa, którą każdy może kupić i to niezbyt drogo. Drugi to z kolei odmienne przeznaczenie tych procesorów. Polaris służy do bicia rekordów i prowadzenia prac rozwojowych, natomiast TILE64 do konkretnych zadań, w których wydajność FP może mieć marginalne znaczenie. Przejdźmy jednak do liczb.
TILE64 | Polaris | |
---|---|---|
Częstotliwość zegara | 600-900 MHz | 3,5-4 GHz+ |
Liczba jednostek CPU | 64 | 80 |
Liczba jednostek wykonawczych | 192 | 160 |
IPC | 192 | 320 |
Teoretyczna wydajność (32-bitowa) | 172,8 Gflops | około 1300 Gflops |
Jak można się było spodziewać, w rywalizacji zmiennoprzecinkowej TILE64 nie ma szans na dogonienie „rzekomego rywala” – jest w operacjach zmiennoprzecinkowych 7,6 raza słabszy. Jest jednak parametr, którym TILE wydaje się skutecznie rywalizować z „potworem” Intela. Jest to pobór mocy! Każdy z procesorów, zawartych w układzie TILE64, pobiera moc od 170 do 300 mW, co sprawia, że układ pracujący z zegarem 900 MHz będzie miał szczytowy pobór na poziomie około zaledwie 20 W. W porównaniu z przeszło 200 watami mocy teraflopowego układu Polaris z zegarem 3,5 GHz!
Producent nie ujawnił, w jakim wymiarze technologicznym są te układy produkowane i przez którego z popularnych wykonawców kontraktowych, jednak 20 W jak na 64 pełnosprawne procesory to rzeczywiście niewiele. Oczywiście w układzie wbudowano system oszczędzania energii, przełączający nieużywane aktualnie procesory w stan uśpienia, w którym pobierają one moc około 25-35 mW. System ten ma jeszcze jedną cechę szczególną – mierzona jest w nim temperatura każdego z kafelków i na jej podstawie trafia on na odpowiednie miejsce w kolejce do uśpienia przy najbliższej okazji.
Przeznaczenie, czyli „Dlaczego Ethernet?”
Patrząc na schemat blokowy układu TILE64, a ściślej biorąc zestaw interfejsów, trudno się oprzeć wrażeniu, że ten procesor przeznaczony jest przede wszystkim do pracy jako sieciowy moloch. Dwa czteroliniowe interfejsy Ethernet 10 Gb/s obsługiwane przez PCI Express, dwa porty 10 Gb/s XAUI MAC/PHY i na dodatek dwa porty gigabitowe. Na tym tle nikną zupełnie inne z interfejsów układu, przede wszystkim dwa porty Flexible I/O interface – programowalnego interfejsu, który może pełnić rolę np interfejsu dyskowego.
Dlaczego taka silna orientacja na Ethernet? Odpowiedź leży przede wszystkim w ekonomii, a właściwie w ocenie ryzyka – początkująca na rynku Tilera Corporation musiała na swój rynkowy debiut przygotować produkt, dla którego istnieje luka na rynku, a znaleziono ją właśnie w klasie procesorów sieciowych o bardzo dużej wydajności. W ten sposób wejście na rynek ma być dla firmy nie tylko efektowne pod względem technicznej klasy produktu, ale także bezpieczne, jeśli chodzi o potencjalną jego sprzedaż. W rezultacie, jako pierwsze urządzenie użytkowe z multiprocesorem TILE64, zaprezentowano kartę TILExpress-64.
Karta, jak karta, choć szokuje nieco liczbą gniazd RJ-45, szczególnie jeśli zdamy sobie sprawę z tego, że są to gniazda 10-gigabitowe. Ale nie koniec na tym – rzućmy okiem na jej schemat blokowy.
Port XAUI CX4 daje możliwość rozbudowy o kolejne 12 portów 10-gigabitowych! Nie zapomniano również o rozbudowie pamięci RAM, którą można przeprowadzić przy użyciu konwencjonalnych modułów SO-DIMM. Możliwości dalszej rozbudowy zapewnia dodatkowe złącze. Moloch sieciowy w całej okazałości!
A jednak sprzęt sieciowy to nie jedyne zastosowanie TILE64 – już obecnie przewiduje się wykorzystanie tego układu do multimediów. Jego wydajność pozwala na kodowanie wideo HD (kodek H.264) w czasie rzeczywistym – przy 720p @ 30 fps możliwe jest nawet równoległe kodowanie dwóch strumieni. Jest to jak najbardziej możliwe przy użyciu karty TILExpress-64, jednak można spodziewać się, że powstaną niedługo mutacje układu TILE z innym zestawem interfejsów. Firma zapowiedziała już układy zawierające 36 i 120 CPU, nie podając dalszych szczegółów technicznych.
W sumie – z punktu widzenia dzisiejszego, przeciętnego użytkownika PC, TILE64 może wydawać się niewart zainteresowania. Pamiętajmy jednak, że według prognoz (nie tylko Intela), multirdzeniowe procesory są przyszłością również i dla „następców PC”. Gdy prognozy się sprawdzą, będziemy mogli powiedzieć, że mieliśmy przyjemność poznać ich przodka... A na dziś liczy się to, że zawierający 64 CPU układ istnieje, działa i jest dostępny na rynku za cenę 435 dolarów USA (cena fabryczna).