r   e   k   l   a   m   a
r   e   k   l   a   m   a

Intel Atom na smartfonach: sztuczki z kompilatorem pozwoliły na manipulowanie wynikami benchmarku

Strona główna AktualnościSPRZĘT

Kilka tygodni temu w Sieci opublikowano zaskakujące wyniki testów wydajności smartfonów, wśród których znalazł się model z procesorem Intel Atom Clover Trail (Lenovo K900). Z testów wynikało, że dwurdzeniowy CPU Intela pozostawił konkurencję bazującą na procesorach ARM (nawet tych czterordzeniowych) bez szans, i to nie tylko pod względem wydajności, ale i zużycia energii. Czyżby więc na tym polu projektowana od początku z myślą o energooszczędności architektura ARM przegrała w końcu z x86, architekturą projektowaną z myślą przede wszystkim o wydajności? Niekoniecznie, gdyż w grę wchodzą tu pewne software'owe… manipulacje.

Exophase, jeden z czytelników serwisu AnandTech przyjrzał się bliżej benchmarkowi, który posłużył do uzyskania tych bolesnych dla ARM-ów wyników. To AnTuTu, rekompilacja kodu z lat 90, przygotowanego przez nieistniejący już magazyn Byte. Benchmark wygląda na dość solidny i kompleksowy, pozwala mierzyć wydajność pamięci, procesora, grafiki 2D i 3D, czy operacji I/O na pamięci masowej i z bazami danych. Pod tym względem nie można mu niczego zarzucić. Problem tkwi gdzie indziej – w kompilatorach wykorzystywanych do zbudowania uruchamialnej wersji.

Okazuje się, że wykorzystana w testach wersja benchmarka skompilowana została dla procesorów Intel Atom za pomocą kompilatora ICC, podczas gdy wersję dla ARM skompilowano za pomocą GCC. Naszym starszym Czytelnikom mogą się już w tej sytuacji włączyć alarmowe lampki – pamiętają, jak podczas dochodzenia w sprawie wytoczonego przez AMD pozwu antymonopolowego przeciwko Intelowi okazało się, że kompilator Intela włącza optymalizacje tylko dla procesorów „Genuine Intel”, nie sprawdzając faktycznych możliwości docelowego układu. Dla procesorów VIA, jedynych w których można było zmienić ciąg CPUID, wystarczyła ta zmiana, by zwiększyć wydajność kodu kompilowanego przez ICC o nawet 30%. Choć tu oczywiście taka sytuacja wystąpić nie mogła (ICC generuje kod tylko na x86), to alarm jest poniekąd uzasadniony: skompilowana przez ICC wersja benchmarka otrzymała automatyczną wektoryzację kodu wynikowego, podczas gdy w kompilowanej za pomocą GCC wersji na ARM nie włączono rozszerzeń NEON (rozszerzeń ARM-a dla architektury SIMD).

To prawda, GCC samo tych rozszerzeń nie włącza, ale wydaje się, że skoro wersję na Atomy zbudowano za pomocą intelowskiego kompilatora, to wypadałoby wersję na ARM-y skompilować za pomocą kompilatora od początku projektowanego z myślą o ARM, np. Keila, by z rozszerzeń NEON korzystać – w końcu są dostępne na praktycznie wszystkich nowoczesnych układach ARM, zarówno Cortex A9 jak i Cortex A15. Problemy z kodem wygenerowanym przez ICC na tym się nie skończyły – według Exophase kompilator celowo psuje wiele konstrukcji wykorzystanych w benchmarku. Na przykład jedna z pętli, która powinna zostać wykonana 32 razy, zostaje wykonana tylko raz, a następnie zgłasza, że zadanie zostało ukończone.

Zarówno w serwisach takich jak Slashdot, jak i na forach serwisów poświęconych sprzętowi komputerowemu trwają dyskusje na temat tego incydentu, który być może jest zwykłym zbiegiem okoliczności, ale być może też jest częścią zamierzonych działań, mających na celu wykazanie wartości architektury x86 w urządzeniach przenośnych. Całkiem niedawno przecież Intel udostępnił kompletny zestaw narzędzi deweloperskich na Androida/x86, a tu nagle wypływają raporty uznanych analityków, wykazujące o ile Atom sprawuje się lepiej od ARM-ów? Wątpliwości trudno będzie wyciszyć, szczególnie, że udało się porównać, o ile zmieniły się wyniki poszczegónych testów. Między wykorzystaną w badaniach ABI Research wersją 3.3 AnTuTu i poprzednią wersją 2.9.3, różnice są dramatyczne, i trudno je zrzucić na zwykły przypadek – dla testu wydajności RAM wynik Atoma (na Motoroli RAZRi) wzrósł o 292%, podczas gdy wynik ARM-owego procesora (w Samsungu Galaxy S4) wzrósł jedynie o 53%. Sprawa wygląda jeszcze bardziej podejrzanie, gdy porówna się wyniki innych benchmarków, takich jak Quadrant, Linpack i Geekbench – tam przewaga układów ARM w niektórych testach była nawet trzykrotna.

A teraz ciekawostka – AnTuTu wydało nową wersję 3.3.2 swojego benchmarka. Wyniki dla urządzeń z procesorami Intel Atom są już znacznie skromniejsze, często nawet o 20-50%. Wniosek jest oczywisty – zamierzone lub nie błędy metodyczne mogą uczynić każdy pomiar pozbawionym merytorycznego znaczenia. Szkoda tylko, że błędy metodyczne nie pozbawiają jednocześnie takiego badania znaczenia marketingowego.

r   e   k   l   a   m   a
© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.