Gdy mniej więcej 2 lata temu pojawiły się doniesienia o tym, że PS3 będzie zawierać nie 2 (jak do tej pory w PS2) ale aż 7 microprocesorów, zewsząd podniosły się głosy, że tym razem Sony już przesadziło. Tymczasem rok temu Intel wypuścił swój pierszy procesor dwu rdzeniowy, który potrafi wykonywać 4 wątki, a w najnowszej konsoli Xbox360 mamy już 3 rdzenie. Zegary procesorów są w chwili obecnej zwiększane w coraz wolniejszym tempie, dlatego na ratunek przychodzi wielordzeniowość, która ma zapewnić logarytmiczny wzrost mocy obliczeniowej. Coś co wcześniej się uważało za nie możliwe do opanowania, dzisiaj staje się już koniecznością. Współczesne silniki muszą się przestawić na pracę wielowątkową aby osiągnąć większą niż obecnie wydajność. Projektowanie silnika tak aby był wielowątkowy nie jest tak trudne jakby się z początku wydawało. W chwili obecnej są dwa podejścia do tego problemu. Pierwsze polega na stworzeniu 1 głównego wątku w którym będzie wykonywany update silnika oraz rendering. oraz kilku wątków dodatkowych które będą wykonywać zlecane od czasu do czasu zadania. Drugie podejście polega na odejściu od typowej pętli wykonawczej gry: Input->Update->Render i na stworzeniu 2-3 lub nawet więcej niezależnych od siebie pętli, z updatem silnika, fizyką, renderingiem itd. Ja jestem zwolennikiem drugiej metody. W przypadku pierwszej, dalej pozostajemy z wadami typowej pętli gry takimi jak gwałtowne spowolnienia w FPS z powodu obciążenia np. fizyki oraz nie efektywne wykorzystanie kilku rdzeni. Druga metoda daje dużo ciekawsze możliwości takie jak np. update fizyki z częstotliwością 30Hz, update silnika na 15Hz oraz rendering na 60Hz. Jeśli z jakiegoś powodu spowolni nam fizyka do 15 czy nawet 10Hz, lub też wyszukiwanie ścieżek w wątku AI, to nie będzie się to tak źle odbijać na FPS renderingu czyli ogólnym odbiorze gry. Wielowątkowość to przyszłość do której najwyższa pora się zacząć przyzwyczajać.

Rzecz o wielu jądrach
0 votes, 0.00 avg. rating (0% score)