22-12-2009
Technologie – Intel Single-chip Cloud Computer
Technologie – Intel Single-chip Cloud Computer
Chmura w jednej kości
Cloud computing, czyli przetwarzanie w chmurze, to jeden z
najważniejszych obecnie trendów w rozwoju branży informatycznej. Pod tym
pojęciem kryje się jednak wiele znaczeń – od programowych, poprzez sposoby
prowadzenia pracy, na sprzętowych systemach rozproszonych skończywszy. Teraz do
"chmurowego przetwarzania" dołączył Intel, który drugiego grudnia oficjalnie
zaprezentował 48-rdzeniowy procesor Single-chip Cloud Computer (SCC).
Europejska premiera nowego układu miała miejsce w ośrodku badawczym Intela w
Brunszwiku (Braunschweig) w Niemczech. Uczestniczyło w niej kilkudziesięciu
dziennikarzy z całej Europy (w tym ekipa FrazPC). Na konferencji zaprezentowano
nie tylko sam układ i jego możliwości, ale również założenia i osiągnięcia
dotyczące długofalowego programu badawczego w ramach, którego ten prototypowy
wielordzeniowy procesor powstał. Z przedstawionych informacji wynika, że układ
SCC łączy w sobie najistotniejsze założenia projektu Terascele i procesora
Polaris (patrz:
http://www.frazpc.pl/artykuly/611/Terascale/projekt/przyszlosci) oraz kości
graficznej Larrabee, nad którą prace zostały niedawno zarzucone (http://www.frazpc.pl/news/28289-Larrabee_usmiercony).
Cloud computing – co to takiego?
Zanim przejdziemy do omówienia architektury i możliwości układu SCC, parę słów
warto poświęcić na wyjaśnienie "zjawiska i technologii cloud computingu".
Najczęściej pod pojęciem przetwarzania w chmurze rozumie się pracę z danymi w
zdecentralizowanym środowisku, w którym przetwarzane informacje mogą znajdować
się (i się znajdują) w różnych miejscach – część danych na jednym serwerze,
część na innym, zapytania przetwarzane są prze jeszcze inną maszynę itd.
Najlepszym przykładem klasycznego, rozumianego w ten sposób cloud computingu
jest korzystanie z Gmaila, edycji dokumentów za pośrednictwem Google Apps czy
np. blogowania w systemie Wordpress lub korzystania z Facebooka. Innymi słowy,
przetwarzanie w chmurze jest to architektura usług, w których przetwarzanie
danych i różne obliczenia nie odbywają się na komputerze użytkownika, ale są
obsługiwane przez wiele serwerów.

Diagram przedstawiający chmurę cloud computing. Źródło: Wikipedia
Nieco inaczej cloud computing definiuje np. firma Google.
Według niej definicja ta ma nieco bardziej sprzętowy charakter i cloud computing
w tym wypadku to setki komputerów i serwerów z wielordzeniowymi procesorami
połączone siecią o wysokiej przepustowości. Podobnie zresztą przetwarzanie w
chmurze rozumie IBM czy Amazon. Firmy te udostępniają własną ogromną
infrastrukturę informatyczną, której moc obliczeniowa nie jest w pełni
wykorzystana, na potrzeby klientów. Innymi słowy, według takiej definicji cloud
computing to możliwa do wykorzystania rozproszona moc obliczeniowa, na którą
składają się setki rozrzuconych po całym Świecie wieloprocesorowych i
wielordzeniowych serwerów.
W podobnie "sprzętowy" sposób cloud computing rozumie firma Intel. Dla niej
przetwarzanie w chmurze to współpracująca ze sobą sieć wielordzeniowych
procesorów, które w zależności od potrzeb skupiają się na takich bądź innych
zadaniach. Moim zdaniem w tym wypadku znacznie lepszym określeniem byłoby jednak
użycie terminów dynamic grid computing lub dynamic cluster computing, które co
prawda jest znacznie mniej "medialne", ale za to dużo lepiej oddają istotę
problemu.

Dzisiejsze, sprzętowe rozumienie sieci cloud
computing. Źródło: Intel
Miniaturyzacja cloud computingu
Wróćmy jednak do układu SCC. Zaprezentowany przez Intela w Brunszwiku procesor
Single-chip Cloud Computer, znany również pod kodową nazwą Rock Creek to
48-rdzeniowy eksperymentalny układ wykorzystywany do badań związanych z rozwojem
nowych technologicznych koncepcji sprzętu i oprogramowania. Ten wykonany w
45-nanometrowym procesie układ jest konfigurowalnym wielordzeniowym procesorem o
strukturze klastra w którym dwa rdzenie wyposażone w przełącznik sieciowy (o
którym za chwilę) stanowią jeden node (węzeł) – co ciekawe, każdy rdzeń może
uruchamiać własny system operacyjny. Taką, zbliżoną, klastrową organizacją
architektury określaną często angielskim terminem cluster-on-a-chip
charakteryzowały się również, wspomniane przeze mnie na początku układy –
graficzny Larrabee i 80-rdzeniowy Polaris.

Układ Intel Polaris związany z projektem badawczym Terascale. Źródło: Intel

Architektura układu Larrabee. Źródło: Intel
W skład pojedynczego node’u układu SCC, nazywanego tutaj
kafelkiem (ang. tile), wchodzą dwa procesorowe rdzenie, z których każdy ma
własną pamięć podręczną cache L2, jeden wspólny dla obu rdzeni bufor wiadomości
oraz jeden router zapewniający komunikację z pozostałymi dwurdzeniowymi
kafelkami.

Budowa układu Single-chip Cloud Computer (SCC). Źródło: Intel
Kafelki i banki
Kafelki połączone są ze sobą w większe grupy. Układ podzielono na sześć części
(banków) złożonych z czterech kafelków każdy. Całość tworzy siatkę (ang. mesh),
w której każdy bank jest połączony z innymi bankami w siatce. Dzięki temu
zwiększono przepustowość i niezawodność systemu, a także zmniejszono liczbę
kolizji przesyłanych pakietów, ponieważ sygnał może być przesyłany różnymi
ścieżkami, a obciążony bank po prostu może zostać ominięty. Co więcej, dzięki
temu łatwiej zarządzać energią i wewnętrznym rozkładem częstotliwości pracy
układu – każdy bank jest niezależnie zasilany, przez co dla mniej obciążonych
części procesora SCC można zmniejszyć napięcie zasilania lub nawet całkowicie
wyłączyć nieużywany bank, co wpływa na zmniejszenie zużycia energii i ilość
wydzielanego ciepła. Co więcej, wewnątrz każdego banku, każdy z czterech
kafelków może być niezależnie taktowany zegarami o różnej częstotliwości. Dzięki
temu zaawansowanemu systemowi zarządzania energią złożony z 48 rdzeni procesor
Intel SCC pobiera zaledwie od 25 do 125 watów.

Mechanizm zaawansowanego zarządzania częstotliwością zegara i napięcia
zasilającego zastosowanego w układzie SCC. Źródło: Intel

Zarządzanie energią w 48-rdzeniowym procesorze Intel Rock Creek.
Zastosowane w procesorze Rock Creek rdzenie zgodne są z
architekturą IA-32. Tak naprawdę, jak udało nam się nieoficjalnie ustalić, są to
nieznacznie zmodyfikowane rdzenie klasy Pentium. Cały procesor Single-chip Cloud
Computer wyposażony został, tak jak widać to na rysunku powyżej, w cztery
dwukanałowe kontrolery pamięci DDR3.
Architektura routerowa
Pomysł wykorzystania routerów do wymiany danych zaczerpnięto wprost z
architektury Polarisa, którą określa się też nazwą RIB (Router Interface Block).
Inżynierowie już wtedy zorientowali się, że wydajność w układach o tradycyjnej
architekturze SMP (Symetric Multi Processing) mające więcej niż 16 rdzeniami
przestaje wzrastać liniowo podczas dodawania kolejnych rdzeni. Ponieważ SCC ma
tych rdzeni 48, dlatego zdecydowano się od razu zaprojektować ten układ w
architekturze RIB.

Wymiana danych w układzie SCC. Źródło: Intel
Przepływność sieci routerowej, podobnie jak w Polarisie
wynosi 32 GB/s. Również i tutaj routery sterowane są programowo. Dzięki temu
osiągnięto bardzo dużą elastyczność w przekazywaniu zadań obliczeniowych z
kafelka do kafelka – jest to szczególnie istotne w chwili, gdy jednocześnie przetwarzane
są różnorodne zadania.


Monitorowany na bieżąco przepływ danych między poszczególnymi rdzeniami w
układzie SCC.
MPI i JavaScript
Zademonstrowane dziennikarzom w Brunszwiku dwie platformy wykorzystujące płyty
główne Copper Ridge wykorzystywały do pracy dwóch różnych modeli komunikacji
międzyprocesorowej – udało się to zrobić właśnie dzięki możliwości dowolnego
programowania routerów.

Demonstracyjne platformy testowe dla procesorów Single-chip Cloud Computer.

Płyta główna o kodowej nazwie Copper Ridge z 48-rdzeniowym procesorem Intel
SCC.
Pierwsza z nich wykorzystywała model MPI (Message Passing
Interface) czyli interfejs transmisji wiadomości. Ten protokół komunikacyjny
stosowany jest przy przesyłaniu komunikatów między wątkami w programach
równoległych, które uruchomione zostały na kilku procesorach lub komputerach.
MPI jest obecnie najczęściej wykorzystywanym modelem w komputerowych klastrach
oraz superkomputerach. Ponieważ jest bardzo dobrze udokumentowany oraz istnieje
do niego cała masa bibliotek z których można korzystać w wielu językach
programowania (m.in. C, C++, Ada, Fortran) nic dziwnego, że inżynierowie z
Intela postanowili go wykorzystać w projekcie SCC. Na platformie testowej
wykorzystującej model MPI uruchomiono obliczenia związane z wizualizacją
fraktali, a ściślej, zbioru Mandelbrota. Jak można się domyślić obliczenia
realizowane były bardzo szybko, a każdy procesor odpowiadał za kalkulacje
związane ze ściśle określonym fragmentem obrazu.

Obliczenia wizualizacji fraktali (zbiór Mandelbrota) wykonywane na procesorze
SCC. Do komunikacji międzyukładowej wykorzystano model MPI.
Na drugim komputerze do międzyprocesorowej komunikacji
wykorzystano JavaScript z rozproszonym między kafelki przetwarzaniem wątków
(technologia web worker threads). Demonstracja ta miała na celu zobrazowanie
idei implementacji kilku serwerów w pojedynczym układzie półprzewodnikowym
(jednoukładowa farmy serwerów JavaScript – JavaScript Server Farm on a Chip).
Oprogramowanie obciążające wirtualne serwery w układzie SCC dotyczyło obliczeń
fizyki zachowania się ubrań. Aplikację w JavaScripcie uruchomiono w przeglądarce
internetowej Firefox, która ma już od pewnego czasu zaimplementowaną obsługę
wielowątkowości w aplikacjach webowych (właśnie web worker threads) pozwalającą
zapytanie kierowane do serwera JavaScript rozproszyć na kilka lub kilkanaście
maszyn.

Symulacja zachowania się ubrań z wykorzystaniem technologii web worker
threads i JavaScriptu uruchomiona na procesorze SCC emulującym kilka serwerów
web.
Ciekawa okazała się nasza rozmowa z przedstawicielami Intela
na temat systemu operacyjnego. Na zdjęciach, we wszystkich oknach zauważyć
można, że programy wywoływane są ze specjalnej mini dystrybucji Linuksa. Jednak
to tylko pozory. Linuks uruchomiony jest na konsoli, która jest po prostu
zwykłym pecetem. Wywołania dotyczące operacji wykonywanych przez układ SCC są
realizowane zaś w jego wewnętrznym kodzie maszynowym, który przesyłany jest z
linuksowej konsoli i pomocniczego peceta wprost do układu SCC. Obecnie dla
układu SCC nie istnieje system operacyjny. Wszystkie programy realizowane są zaś
na niskim poziomie, a kod i dane do pamięci przesyłane są z innej maszyny.


Krzem z 48-rdzeniowym procesorem Single-chip Cloud Computer (SCC).
Barrelfish
Zaimplementowanie takiego systemu operacyjnego jak Windows dla procesora SCC
jest dość trudne. Intel wraz z Microsoftem i wieloma uczelniami wyższymi pracują
nad różnymi systemami operacyjnymi, które można by było zastosować do obsługi
procesora takiego jak Single-chip Cloud Computer. Jednym z takich systemów jest
Barrelfish. Na konferencji wystąpił prof. Timothy Roscoe z ETH (Eidgenössische
Technische Hochschule Zürich) w Zurychu, który wraz naukowcami i specjalistami z
ośrodka Microsoft Research Cambridge pracuje właśnie nad Barrelfishem.

Wykład profesora Timothy Roscoe – logo projektu Barrelfish.
Barrelfish to system operacyjny bazujący na tak zwanym
multikernelu. Multikernel działa w sposób rozproszony jednocześnie na wielu
rdzeniach, a poszczególne jądra procesora są tutaj traktowane jako sieć
niezależnych rdzeni (węzłów) – dokładnie tak jak ma to miejsce w systemach
rozproszonych. Poszczególne węzły w Barrelfishu komunikują się między sobą za
pomocą wiadomości, w podobny sposób jak w modelu MPI – jest on więc idealny dla
procesora SCC.
Co ciekawe, eksperymentalny system Microsoftu nie izoluje warstwy aplikacji od
warstwy sprzętowej za pomocą sterowników. Barrelfish korzysta bowiem ze
specjalnej bazy danych, w której zawarto wszystkie niezbędne niskopoziomowe
informacje o wykorzystywanym w systemie sprzęcie. Nie występują tutaj też
problemy z dostępem każdego rdzenia do współdzielonej pamięci. Potrzebne dane
rozsyłane są odpowiednimi komunikatami przez sieć do potrzebującego danej
informacji procesora, nie ma też problemów ze spójnością danych. Z punktu
widzenia pamięci i urządzeń komputera wielordzeniowy układ pracujący pod
kontrolą Barrelfisha traktowany jest jak jeden klasyczny jednordzeniowy
procesor.
Autor: Marcin Bieńkowski
Komentarze (4) |