Precz z Intelem! Czy przesiadka na ARM jest możliwa? Cz. II: zyski, straty, możliwości…
Po wstępie historycznym trochę przemyśleń co Apple, my (użytkownicy i programiści) możemy zyskać lub stracić przez hipotetyczne porzucenie architektury x86 na rzecz ARM oraz dlaczego tak może się stać.
Strona 2 z 3
ARM… to ramie silne jest!
Jak we wstępie napisałem, procesory w architekturze ARM są jakie są bo na razie nie muszę być lepsze (wydajniejsze). Teraz mają być energooszczędne (i co za tym idzie nie grzać się zbyt mocno) oraz niezawodne. I takie właśnie są.
Najważniejsza bariera jaką był brak 64–bitowej architektury została pokonana już 2 lata temu i to ze znaczącym udziałem Apple. Teraz czas na zwiększenie wydajności, między innymi tradycyjnymi metodami jak zwiększenie taktowania czy ilości rdzeni procesorów.
Znów ciut historii
Procesory ARM powstały jako koprocesory i potem serca komputerów osobistych firmy Acorn.
Pod koniec lat 80, Apple rozpoczął współprace z firmą Acorn i razem z nią oraz VLSI Technology założyło Advanced RISC Machines Ltd (obecnie ARM Holdings). Wspólnie opracowany procesor ARM610 został użyty przez Apple w słynnym protoplaście wszystkich „padów” – Newtonie. Czyli Apple już ponad 20 lat temu „maczał palce” przy projektowaniu architektury ARM. Po zamknięciu przez Jobsa projektu Newton Message Pad (1998 r.) w 2007 roku procesory ARM znów wróciły do łask u Apple w iPhonach.
Pisząc „procesory ARM” stosuję pewnie uproszczenie. ARM nie produkuje procesorów, a jedynie licencjonuje architekturę (np. dla Apple) oraz projekty rdzeni (Apple już projektuje własne). Apple sam też nie produkuje „swoich” układów. Własne projekty (oparte o architekturę ARM) zleca do wykonania innym, między innymi Samsungowi.
Siła prostoty
W przeciwieństwie do architektury x86 gdzie mamy z powodu zachowywania na siłę zgodności z bardzo starymi wersjami procesorów niezły bałagan w rejestrach, których część jest jeszcze 16–bitowa, część, 32–bitowa i trochę 64–bitowa, a jeszcze trochę specjalnego przeznaczenia, ARM–64 ma 31, 64–bitowych rejestrów ogólnego przeznaczenia i kilka specjalnych (jak licznik programu i rejestr statusu w wersjach dla użytkownika i nadzorcy). Do tego dochodzą bardzo fajnie pomyślane instrukcje. Np. większość z nich zawiera kod uzależniający ich wykonanie od ustawień rejestru warunków. Czyli nie używa się dodatkowych instrukcji warunkowych. Inne cechy to instrukcje wykonujące dodawanie i operacje na bitach w jednym cyklu. Jak każdy współczesny procesor ARM ma też koprocesor arytmetyczny oraz „wektorową jednostkę multimedialną” NEON. W najnowszych wersjach ARM jest też wbudowane rozszerzenie TrustZone do operowania na wyjątkowo tajnych danych. Z tego mi. korzysta Touch ID.
Dla ciekawskich: Rejestry w procesorach x86 Intela, Rejestry w procesorach ARM.
Znamienne jest to, że architektura x86 powstawała niewiele wcześniej (~1978 rok) od ARM (rozpoczęto prace w 1983 r.), a ARM już na starcie było znacznie bardziej nowoczesne. Pierwszy ARM2 był w pełni 32 bitowy z 26–bitową szyną adresową. Mógł zaadresować 64 MB pamięci czyli lepiej niż Motorola 68000, która mogła obsłużyć 16 MB. Miał też od razu aż 27, 32–bitowych rejestrów. Intele x86 w tym czasie posługiwały się stronicowym adresowaniem pamięci (koszmar), a trochę rejestrów 32–bitowych dostały w 1985 roku wraz z 80386.
Oczywiście poza samym procesorem w układach SoC Apple serii A znajdują się rdzenie procesora graficznego PowerVR (opracowywane przez firmę Imagination Technologies częściowo zależną od Apple, mającą jeden z oddziałów we Wrocławiu), dodatkowe jednostki wspierające jak MMU, a w wersjach dla iPhonów również pamięć RAM i inne „drobiazgi”.
A jak to jest w praktyce
Przeprowadziłem dla Was kilka testów porównawczych wydajności procesorów x86 i ARM. Ba! Nawet napisałem specjalny program do testowania prędkości, którego wersję na OS X już możecie pobrać z mojej strony (wersja na iOS czeka na akceptację u Apple). Program wykonuje serię prymitywnych obliczeń nie angażujących grafiki, jednostek wektorowych czy nawet specjalnie pamięci RAM. Testuje czystą prymitywną siłę procesora ;-)
Rywalizowały:
- Apple MacBook Air mid 2013 procesorem i7 1,7 GHz oraz 8GB RAM
- iPhone 6 plus z układem SoC A8 1,4 GHz i 1 GB RAM
- iPhone 5s z układem SoC A7 1,3 GHz i 1 GB RAM (tylko test iMovie)
Dzięki za kolejny ciekawy wpis. To wspaniałe, że piszesz na MA. Dla mnie też pytanie nie brzmi "czy" ale "kiedy" Apple przejdzie na inną architekturę. Super, że podjąłeś temat, stworzyłeś narzędzie testujące - interesujące wyniki. Tylko dlaczego tak czepiłeś się tego biednego iMovie? Zaryzykowałbym twierdzenie, więcej sensu miałoby porównanie Air+FCPX z iPhone+iMovie. Jak już ktoś pisał iMovie dla iOS i OSX to różne programy i porównywanie za ich ponocą wydajności nie ma sensu, bo chyba nie chodzi Ci o to, żeby tak dobrać metody pomiaru, żeby wyniki zgadzały się z teorią? Przypomina mi to sytuację portali testujących wydajność różnych kart graficznych za pomocą Blendera w domyślnych ustawieniach - kompletny bezsens. Oczywiście większość ludzi te brednie kupuje, bo ufają szanownym redaktorom. Podobnie z testowaniem przeglądarki. Testujesz głównie WYDAJNOŚĆ UKŁADÓW GRAFICZNYCH w obliczeniach. Tylko co to ma wspólnego z ARM?