O wielkiej mocy obliczeniowej jednostki CELL w PS3 słyszał prawie każdy. 3 rdzenie procesora w konsoli Xbox360 też robią wrażenie. Ale czy ktokolwiek się zastanawiał jaka naprawdę moc drzemie w tych jednostkach ? Bo gdyby porównać układy CELL z PS3 który ma 230mln tranzystorów oraz Xenon z Xbox360 który ma 165mln tranzystorów z takim „typowym” dla komputerów PC procesorem Intel Core2 który ma najwięcej bo aż 290mln tranzystorów to rodzi się pytanie „To jak to jest z tą prędkością ? Czy Intel Core2 jest lepszy ? A może PS3 ?”.

Odpowiedź na to pytanie nie jest wbrew pozorom prosta do rozstrzygnięcia. Różnica a zarazem siła układów konsolowych drzemie w odmiennej konstrukcji i innym podejściu do programowania.  Na przykład procesor Xenon ma 3 rdzenie, pracuje na zegarze 3.2GHz a taki Intel ma tylko 2 rdzenie i pracuje na zegarze np. 1.8 GHz (najtańszy model aby był  porównywalny cenowo z procesorem z Xbox360). Mimo że procesor Intela ma prawie 2x niższy zegar, to będzie on na pierwszy rzut oka szybszy od Xenona… ale biorąc pod uwagę tylko jeden rdzeń. Dlaczego ? Różnica tkwi w konstrukcji pojedynczego rdzenia. Rdzeń w układzie Intela posiada:

  • 3 jednostki ALU
  • 1 jednostkę Load/Store
  • 1 jednostkę FPU
  • 3 jednostki SSE

Tymczasem układ Xenon posiada w każdym rdzeniu:

  • 1 jednostkę ALU
  • 1 jednostkę skoków warunkowych
  • 1 jednostkę Load/Store
  • 1 jednostkę FPU
  • 2 jednostki AltiVec (odpowiednik SSE)

Jak widać już na pierwszy rzut oka pojedynczy rdzeń układu Intel ma więcej jednostek wykonawczych i dzięki mechanizmowi out-of-order execution potrafi wykonać znacznie więcej obliczeń niż układ Xenon. Więc gdyby zsumować wszystkie jednostki wykonawcze to dwurdzeniowy układ Intel będzie szybszy od układu Xenon mimo, że ma mniejszy zegar. Ale czy tak jest do końca ? Tutaj jak się okazuje biorą górę inne czynniki. Wg różnych badań, nawet do 50% swojego czasu, procesor spędza na operacjach wczytywania i zapisywania do pamięci. Tutaj Intel może wypaść dość słabo bo w 2 rdzeniach łącznie posiada tylko 2 jednostki Load/Store. Tymczasem Xenon posiada ich 3. Kod wielowątkowy w nim jest więc mniej narażony na wstrzymywania rdzeni związane z odczytem i zapisem pamięci (np. cache L1). Procesor Xenon posiada także 32 rejestry ALU oraz 32 rejestry AltiVec. Ma to nie bagatelne znaczenie bo dzięki temu odpowiednio przygotowany kod może wykonywać bardziej złożone operacje wyłącznie na rejestrach bez odwoływania się do pamięci. I nie muszą to być tylko operacje wyłącznie matematyczne. Przecież 32 rejestrów ALU może posłużyć do przechowywania wielu wskaźników do obiektów lub liczników pętli. Patrząc na kod stworzony dla procesorów Intel widać, że kod używa maksymalnie 2-4 rejestrów i często są te same rejestry tylko używane do różnych celów. Często ich zawartość jest zmieniana, nadpisywana i potem ponownie odczytywana powodując spowolnienia programu związane z RaW  (Read after Write). Wystarczy aby w kodzie pojawiła się podwójna pętla „for” z 2-3 linijkami kodu wewnątrz. Konieczność użycia 4-8 rejestrów gwarantowana. W przypadku procesora Intel, kod będzie musiał często zapisywać i odczytywać wartości tymczasowe. W przypadku układu Xenon takiej sytuacji nie będzie.

Teraz porównajmy to do układu CELL w konsoli PS3. Układ ten oprócz jednego rdzenia podobnego do tego z Xenon (obydwa są oparte na rodzinie PowerPC) ma 6 innych rdzeni posiadających bardzo zbliżoną konstrukcję:

  • 1 jednostkę ALU
  • 1 jednostkę skoków warunkowych
  • 1 jednostkę Load/Store
  • 1 jednostkę AltiVec (odpowiednik SSE)

Jeśli więc weźmiemy pod uwagę fakt, że układ CELL ma łącznie 7 jednostek Load/Store, 7 jednostek ALU, 7x 32 rejestry ALU, 7x 32 rejestry AltiVec. To otrzymamy w sumie naprawdę poteżną maszynę nie tylko obliczeniową ale wbrew powszechnym opiniom, maszynę przeznaczoną do tzw. general computing czyli ogólnego przeznaczenia. Pozostaje jeszcze tylko jeden drobny szczegół. Wszyscy muszą się nauczyć korzystać z wielu rdzeni

Smoki drzemiące w konsolach
0 votes, 0.00 avg. rating (0% score)