Jak Crusoe

Programowy procesor? Brzmi to równie nielogicznie, co kablowa telefonia komórkowa, ale inżynierowie z firmy Transmeta udowodnili, że taka konstrukcja może zupełnie zmienić przyszłość komputerów.

Programowy procesor? Brzmi to równie nielogicznie, co kablowa telefonia komórkowa, ale inżynierowie z firmy Transmeta udowodnili, że taka konstrukcja może zupełnie zmienić przyszłość komputerów.

Podczas odtwarzania filmu DVD Pentium III dosłownie się gotuje, przekraczając 100 stopni Celsjusza. Crusoe natomiast zachowuje zimną krew, grzejąc się do zaledwie 42 stopni. Dane: Transmeta, www.transmeta.com

Podczas odtwarzania filmu DVD Pentium III dosłownie się gotuje, przekraczając 100 stopni Celsjusza. Crusoe natomiast zachowuje zimną krew, grzejąc się do zaledwie 42 stopni. Dane: Transmeta, www.transmeta.com

Transmeta istnieje od 1995 roku, lecz debiutuje dopiero teraz. Firma postanowiła wyprodukować procesor, który swą budową i działaniem zrewolucjonizuje nie tylko świat pecetów, lecz wszelkich urządzeń - szczególnie przenośnych - wykorzystujących zaawansowane układy obliczeniowe. Kluczem do sukcesu produktu miały być trzy elementy: zgodność z instrukcjami x86 używanymi przez procesory Intela, niski pobór mocy i atrakcyjna cena.

Zadanie było niełatwe, bo wymienione założenia bardzo trudno pogodzić ze sobą, jeśli nie chce się kupować licencji od Intela. A tak właśnie postąpiła Transmeta: ominęła patenty mikroprocesorowego giganta, tworząc niespotykaną dotąd architekturę układu o nazwie Crusoe. W zasadzie inżynierowie tej firmy "na nowo wynaleźli" procesor, co zresztą podkreślają w swych wypowiedziach. Wszystkie napotkane problemy postanowili bowiem rozwiązać na drodze... programowej, co w rezultacie dało oryginalną, rewolucyjną hybrydę - procesor składa się z części sprzętowej oraz specjalistycznego oprogramowania.

Gdzie tu sens?

Od lat wmawiano nam, że wszystko, co sprzętowe, jest lepsze. Modemy, dekodery czy akceleratory w wersji "twardej", fizycznie namacalnej, zawsze biły na głowę programowe odpowiedniki. Powód jest oczywisty: specjalne układy dedykowane tylko jednej, konkretnej funkcji nie robią nic innego niż to, do czego są przeznaczone. Nie dzielą swego czasu na kilka zadań i całą moc kierują na wykonanie pracy. Ich sprawność nie zależy od poprawności gigantycznego kodu systemu operacyjnego, lecz tylko od niewielkiego sterownika. Natomiast tam, gdzie działają programy, zawsze pojawia się kwestia priorytetów CPU i stabilności otoczenia - głównie systemu operacyjnego. Silnie obciążony procesor i niepewnie funkcjonujący system to śmiertelni wrogowie rozwiązań programowych. Skąd więc pomysł, by z software'ową emulacją wkroczyć do jądra komputera - samego procesora? Przecież to irracjonalne: CPU wykonujący program udawania CPU!

Takie myślenie jest słuszne do czasu, gdy rozważa się tradycyjne podejście: gotową, niezmienną strukturę (architekturę procesora plus zestaw instrukcji), do której trzeba napisać oprogramowanie. Wystarczy jednak odwrócić role i dostosować, a w zasadzie równouprawnić procesor z oprogramowaniem - i nagle wszystko zaczyna działać jak marzenie. No tak, ale na czym ma polegać równouprawnienie?

Sprytna powłoka

Jedną z głównych postaci Transmety jest Linus Torvalds, twórca Linuksa. Nie jest on jedynie magnesem przyciągającym prasę, choć dzięki magii jego nazwiska, a także jednego z szefów firmy, Paula Allena, współzałożyciela Microsoftu, dziennikarze i ludzie z branży od dawna czekali na efekty pracy tajemniczej firmy.

Torvalds brał udział w tworzeniu programowej części przedsięwzięcia: napisaniu powłoki, która pełni rolę nie tylko tłumacza instrukcji innych procesorów, np. x86, lecz także "redaktora" opracowywanego kodu. Owa "redakcyjna" funkcja powłoki programowej polega na pobieraniu całych bloków kodu (zamiast jednej instrukcji po drugiej) i ich optymalizowaniu poprzez np. usuwanie powtórzeń, a następnie przygotowaniu kodu wynikowego do wykonania przez właściwy, krzemowy procesor.

Praca ta nie jest łatwa, ponieważ część sprzętowa ma zupełnie inną budowę niż emulowany CPU Intela. Procesor Transmety jest układem przetwarzającym bardzo długie, 128-bitowe słowa instrukcji (Very Long Instruction Word, VLIW) w jednym cyklu zegara (dzisiejsze Pentium są 32-bitowe). Na dodatek jego zestaw instrukcji jest znacznie uboższy od tego z x86. Obie te cechy - długie słowo i mało instrukcji - upodobniają CPU Transmety do układów RISC stosowanych od lat w wielkich maszynach, np. serwerach firm Sun czy Digital (wchodzącej w skład Compaqa).

Powłoka programowa musi więc nie tylko znaleźć optymalne tłumaczenie na kod procesora, ale i odpowiednio ułożyć gotowe instrukcje w tzw. molekuły. Molekuły mają długość 64 bądź 128 bitów i mogą zawierać do czterech instrukcji (zwanych przez Transmetę atomami). Atomy zaś mają taką postać, by procesor od razu wiedział, do których swych jednostek ma je skierować - współpracy z pamięcią, skoków, zmiennoprzecinkowej czy którejś z dwóch stałoprzecinkowych. Instrukcje mogą być wykonywane równolegle przez te jednostki, więc przy odpowiednim ułożeniu atomów i maksymalnym "upakowaniu" molekuły, procesor pracuje z pełną wydajnością. To zadanie również należy do powłoki programowej, nazwanej przez Transmetę oprogramowaniem przekształcającym kod (Code Morphing Software).

Cenne deja vu

Oprogramowanie Code Morphing jest pośrednikiem między programami x86 a procesorem Crusoe, izolując jednocześnie oba elementy od siebie.

Oprogramowanie Code Morphing jest pośrednikiem między programami x86 a procesorem Crusoe, izolując jednocześnie oba elementy od siebie.

Samo tłumaczenie i porządkowanie kodu nie wystarczy, bo przecież oprogramowanie Code Morphing też musi być wykonywane przez procesor, podwójnie obciążając CPU. Crusoe nie miałby więc szans w starciu z procesorem wykonującym od razu kod programu. Z pomocą przyszła stara jak świat komputerowy technika pamięci podręcznej (cache).

Code Morphing po przetłumaczeniu i optymalizacji kodu umieszcza wynikowe instrukcje w pamięci podręcznej, która wydzielana jest z RAM komputera. Gdy dany fragment programu ma być ponownie wykonany, raz przetłumaczone instrukcje można od razu pobrać z pamięci podręcznej i przekazać procesorowi. Dzięki temu większość codziennie używanych aplikacji, gdzie pewne operacje wykonywane są wielokrotnie, jest znacznie przyspieszona.

Powłoka Code Morphing wykorzystuje bardzo skomplikowane techniki przewidywania w celu określenia, które fragmenty kodu mogą się jeszcze przydać, które należy przetłumaczyć "na zapas", które zaś z góry pominąć (zazwyczaj w ciągu 95 procent czasu działania typowej aplikacji wykonywane jest najwyżej 10 procent jej kodu). Mało tego, Code Morphing "uczy się" działającego programu, ciągle go optymalizując. W efekcie aplikacja pracuje coraz szybciej.

Crusoe nie lubi testów

Takie niekonwencjonalne dynamiczne rozwiązanie ma jedną słabą stronę: nie radzi sobie z programami o minimalnym stopniu powtórzeń operacji, a do takich należą niektóre programy testujące (benchmarki). Sprawdzają one szybkość procesora na podstawie wykonywania serii pojedynczych, nie powtarzanych w krótkim czasie zadań. Przez takie podejście wyniki Crusoe są sfałszowane, bo Code Morphing nie może korzystać z cache'u, tłumacząc ciągle nowe instrukcje.zTymczasem w rzeczywistości programy multimedialne na przykład, bardzo obciążające procesor, charakteryzują się olbrzymią powtarzalnością operacji. Według Transmety, gdy odtwarzasz film DVD na komputerze z Crusoe, programowy dekoder MPEG już przed wyświetleniem pierwszej klatki filmu jest przetłumaczony i zoptymalizowany. Wszystkie następne operacje są więc wykonywane ze znacznie mniejszym obciążeniem procesora. Z tych powodów Transmeta pracuje nad nową metodologią testów, uwzględniającą bardziej rzeczywiste użytkowanie aplikacji, a co za tym idzie - stopień obciążenia procesora. Ten ostatni parametr w przypadku Crusoe przekłada się na jeszcze jedną niebagatelną cechę: zużycie energii.


Zobacz również