Project Ganesh: dzięki akceleracji GPU Chrome dla Androida będzie szybsze
Na rynku przeglądarek internetowych coraz większą rolę odgrywają te przygotowywane z myślą o systemach mobilnych. Jedną z najpopularniejszych, podobnie jak na desktopach, jest w tym przypadku Google Chrome. Niestety, nie należy ona do rozwiązań najwydajniejszych, bo na słabszym sprzęcie trudno mówić o komforcie, a nawet i na lepszym zdążają się jej liczne przycięcia, w szczególności gdy strony są bardzo rozbudowane. Google ma pomysł, jak rozwiązać ten problem.
Cały problem wynika ze sposobu, w jaki generowany jest obraz renderowanej w przeglądarce strony. Pomijając już wykonywanie kodu JavaScript, czy manipulacje na drzewie DOM, dochodzimy do kwestii przepływu informacji między poszczególnymi modułami. Obecnie dane najpierw trafiają do procesora głównego (CPU), a dopiero później do układu graficznego (GPU) w celu wyświetlenia gotowej strony. To właśnie tutaj leży problem: nawet bardzo szybki, wyposażony w kilka rdzeni procesor nie jest w stanie odpowiednio szybko poradzić sobie z rasteryzacją elementów strony. Jest to operacja bardzo wymagająca obliczeniowo, powoduje więc, że procesor musi pracować na wysokich obrotach, a w tym samym czasie układ graficzny po prostu bezczynnie czeka na dane. Dodatkowym problemem jest koszt przesyłania danych z jednego układu do drugiego. To po prostu wymaga czasu.
Chrome Dev Summit - Day 1
Zjawisko to widać w szczególności w sytuacji, gdy jakaś strona jest już częściowo wyrenderowana. Wystarczy przewinąć stronę w dół, aby zobaczyć „białą ścianę”, która czeka na wykonanie zadań przez procesor. Według programistów Google, właśnie to jest wąskim gardłem przeglądarki i należy problem ten rozwiązać. Jak? Odpowiedzią jest tzw. Project Ganesh, który przewiduje przerzucenie operacji rasteryzacji całkowicie na GPU. Taka zmiana wyeliminowałaby procesor z etapu renderingu, można sobie natomiast na nią pozwolić, bo współczesne procesory graficzne korzystające z dużej liczby rdzeni shader są w stanie wykonywać wiele prostych operacji jednocześnie w krótkim czasie. Żaden z nich nie zapewnia takiej wydajności jak procesor główny, ale ich liczba (np. 192 rdzenie w przypadku NVIDIA Tegra K1) pozwala na takie zrównoleglenie operacji, że CPU pod względem wydajności pozostaje daleko w tyle.
Firma zaprezentowała działanie tego mechanizmu w praktyce podczas trwającego właśnie Chrome Dev Summit. Rozwiązanie jest testowane na wersji Canary dla Androida i wygląda na to, że daje naprawdę świetne rezultaty. Pewnym problemem jest trudność z jego implementacji: na rynku znajdują się urządzenia z zupełnie różnymi GPU, co wymaga nieco pracy. Wszystko wskazuje jednak na to, że rozwiązanie w następnych miesiącach trafi do użytkowników, którzy powinni odczuć zdecydowaną poprawę komfortu pracy z mobilnych Chrome. Co więcej, jego wprowadzenie może zaowocować także niższym zużyciem energii, bo procesor będzie znacznie mniej obciążony, niż do tej pory. To jednak nie wszystko, co pokazano na konferencji.
Jak zaznaczono, aby spełnić założenia wyświetlania 60 klatek na sekundę przyjęte w ramach projektu Butter ogłoszonego w 2012 roku, na każdą z nich mamy tylko 16,6 ms. O tym, jak wygląda postęp w pracach nad wydajnością przeglądarki Google Chrome może świadczyć to, że jeszcze w styczniu renedering jednej klatki na przykładowej stronie trwał około 129 ms na Nexusie 5. Obecnie trwa już tylko 16,6 ms, a więc jest zgodny z założeniami. Inną zaletą ma być odśmiecacz działający w tle, niewpływający na inne operacje i w efekcie zwalniający czas na zadania ważniejsze, widoczne bezpośrednio dla użytkownika.