Seminarium: Systemy Rozproszone
19 kwietnia 2012, godzina 12:15, sala 4070
Michał Pecio


Intel Single-Chip Cloud Computer



Rozwój technologii układów scalonych pozwala na integrację coraz większych ilości logiki w jednym chipie. Producenci procesorów przez wiele lat wykorzystywali te możliwości do zrównoleglania jak największej ilości operacji wykonywanych przez procesor w celu podniesienia jego wydajności. Możliwości zrównoleglania operacji związanych z jednym wątkiem programu są jednak ograniczone i rozbudowa jednowątkowego procesora poza pewne granice przestaje przynosić korzyści. Aby przełożyć dalszą miniaturyzację układów scalonych na wzrost wydajności, zaczęto produkować procesory wielordzeniowe, będące w istocie grupą niezależnych procesorów zintegrowanych na jednym układzie scalonym i spiętych ze sobą szybkimi łączami.

Współczesne procesory mają stosunkowo niewielką liczbę rdzeni (rzędu kilku) i przy ich projektowaniu dąży się niejako do "upodobnienia" ich do zwykłych procesorów jednordzeniowych poprzez zapewnienie oprogramowaniu dostępu do całej pamięci systemu na wszystkich rdzeniach oraz gwarancję zgodności pamięci cache zlokalizowanych na poszczególnych rdzeniach. Takie podejście ułatwia portowanie istniejących aplikacji i systemów operacyjnych, ale wymusza dużą ilość komunikacji między rdzeniami i zwiększa konkurencję o dostęp do pamięci. Koszt ten jest tolerowalny przy bardzo małej liczbie rdzeni, ale przewiduje się że w przyszłości pojawi się możliwość integracji dziesiątek rdzeni na jednym procesorze (i być może wielu takich procesorów w jednym systemie), co uczyni utrzymywanie wspólnej pamięci i spójności cache'y niepraktycznym.

W celu zbadania możliwości zagospodarowania przez oprogramowanie takich wielordzeniowych procesorów z niespójną pamięcią, firma Intel wyprodukowała w 2009 r. eksperymentalny procesor o nazwie "Single-Chip Cloud Computer". Jest on złożony z 48 prostych rdzeni x86 (nieznacznie zmodyfikowane procesory Pentium z lat '90), połączonych siecią w topologii kratowej. Pamięć RAM dostępna temu procesorowi może być dość elastycznie mapowana w (fizyczną) przestrzeń adresową poszczególnych rdzeni, niezależnie od siebie. Rdzenie posiadają swoją pamięć cache, ale sprzęt w żaden sposób nie dba o zapewnienie jej spójności. Aby umożliwić komunikację między procesami działającymi na różnych rdzeniach, zamiast wspólnego obrazu pamięci powstały specjalne mechanizmy wspierające implementację kolejek komunikatów. Chip taki wygląda więc jak zminiaturyzowany klaster zwykłych komputerów - stąd jego nazwa.

Na seminarium postaram się opisać architekturę SCC, mechanizm wspierający wymianę komunikatów oraz próby wykorzystania tego mechanizmu w oprogramowaniu.

Serdecznie zapraszam!
Michał Pecio


Bibliografia: