+6Nasi autorzy
Ważne

Mój gadżet ma 8 rdzeni i 64 bity

A ja zapytam – i co z tego? Na początku chciałbym jednak wyjaśnić: nie mam nic przeciwko 8 czy nawet 16 rdzeniom, tak samo jak nie mam nic przeciwko 2 czy 4 rdzeniom. Podobnie jest z architekturą 32 i 64 bit.

Do napisania tego felietonu skłoniło mnie zachowanie producentów podczas targów MWC w Barcelonie. Rozumiem rozwój technologiczny oraz reguły jakimi rządzą się działania marketingowe, ale trudno mi się zgodzić na ogłupianie klientów i użytkowników pustymi sloganami. To żadna nowość w niemal każdej z gałęzi rynku, ale z jakiegoś powodu od producentów elektroniki użytkowej oczekiwałbym więcej. Odrobiny szacunku dla odbiorcy.

octa1

OSIEM RDZENI!!!!!!!!!!!!!!111jeden

Najważniejsza cecha nowego smartfona? Osiem rdzeni! Osiem! Rozumiesz?! Osiem rdzeni! Wystarczy popatrzeć na stoiska i ulotki reklamowe, a zrozumiemy o co chodzi. Oczywiście nie twierdzę, że producent powinien zatajać liczbę rdzeni procesora, ale każdy średnio obeznany w technologiach osobnik rozumie, że ich liczba jest elementem drugo a nawet trzeciorzędnym. I nie chodzi mi tylko o taktowanie pojedynczego rdzenia, ale przede wszystkim o architekturę, parametry termiczne, GPU (przecież grafika też ma rdzenie, dlaczego prawie nikt tego nie podaje?). A rdzenie DSP? Dlaczego nikt ich nie liczy? Fixed function processing i rdzenie tej jednostki? Również nie… Tak wiele zależy od architektury, zbioru instrukcji procesora, optymalizacji taktowania, ale elementy te są mało „marketingowe”. Trudno je sprzedać. A 8 rdzeni? OSIEM RDZENI!!! To robi wrażenie. Mimo tego, że nie mam nic przeciwko 8-rdzeniowcom, warto rozprawić się z pewnym mitem. 8 rdzeni po 1,5 GHz nie da nam wydajności jednego rdzenia 12 GHz. Bardzo (BARDZO) mało aplikacji potrafi korzystać z więcej niż dwóch rdzeni (na raz), a większość z nich w pełni korzysta tylko z jednego.

Trochę lepiej sprawa wygląda z systemem operacyjnym, w którym uruchamia się wiele procesów i wątków, ale dalej, nawet w tym przypadku, 8 rdzeni to wyciąganie zbyt dużej armaty. Biorąc pod uwagę aplikację jednowątkową, pojedynczy wątek nie może być obsługiwany na kilku rdzeniach jednocześnie. Co prawda może być odpalany na różnych rdzeniach jeden po drugim, ale nie odbywa się to symultanicznie. Producenci tacy jak Qualcomm stworzyli technologię, która pozwala na jednoczesne odpalanie wątku na wielu rdzeniach, ale sprowadza się to do podziału go na pod-wątki, a wydajność, którą dzięki temu zyskujemy jest marginalna. Chcąc w pełni wykorzystać rdzenie procesora, twórcy musieliby pisać aplikacje z asynchronicznymi wątkami, które pozwoliłyby na ich zrównoleglanie – co jak na razie jest rzadkością (poza niektórymi grami). I nie wynika to z lenistwa programistów – wielu algorytmów i kawałków kodu po prostu nie da się zrównoleglić używając obecnego paradygmatu programistycznego.

octa2

64 bity, czyli jestem dwa razy szybszy

Nie, nie jesteś, choć producenci chcieliby, żebyś właśnie takie odniósł wrażenie. Temat 32 i 64 bitów jest dużo bardziej złożony. Jeden obóz twierdzi, że 64 bity potrzebne są tylko po to, żeby zaadresować więcej niż 4 GB pamięci RAM, bo na procesorze 32 bit jest to niemożliwe. Drugi obóz próbuje wmówić nam, że przejście na 64 bity w magiczny sposób przyspieszy działanie systemu i aplikacji. Moim zdaniem obie grupy zasadniczo się mylą. Większość czytelników zapewne spotkało się z twierdzeniem, że procesor 32-bitowy nie może zaadresować więcej pamięci operacyjnej niż 4 GB (a w praktyce jeszcze mniej, z uwagi na zastrzeżoną przestrzeń adresową).

Skąd wynika to ograniczenie? Z prostego rachunku: 32 bity określają liczbę możliwych do zaadresowania komórek. Istnieje 2^32 wariacji 32-bitowego adresu, czyli bezpośrednio można adresować 4 294 967 296 (4 G) komórek pamięci. Czy jednak rzeczywiście stanowi to problem nie do przejścia dla 32-bitowej architektury? Niekoniecznie. Od dawna znane są rozwiązania zwiększenia przestrzeni adresowej np. przez zastosowanie segmentacji lub wirtualizacji pamięci – użycie PAE (Physical Adress Extension). Rozwiązanie to pozwala procesorowi na dostęp do więcej niż 4 GB pamięci RAM, ale nie zmienia rozmiaru wirtualnej przestrzeni adresowej dla pojedynczego procesu – każdy proces w pamięci będzie dalej ograniczony limitem 4 GB. Nie chodzi zatem jedynie o problemy związane z wielkością pamięci RAM.

octa3

Przejdźmy zatem do tego czym jest 64-bitowa architektura. Procesory wykorzystują dwa typy liczb do wykonywania operacji takich jak dodawanie, mnożenie, przesuwanie i kopiowanie danych do pamięci – liczby całkowite i liczby zmiennoprzecinkowe (ułamki dziesiętne). Jeśli procesor radzi sobie z tymi operacjami dla ciągów całkowitoliczbowych o długości do 16 bit, jest procesorem 16-bitowym. Jeśli do 32 bit – procesorem 32-bitowym. I tak dalej. 32-bitowy procesor używa też 32 bitów do wskazywania na obszary pamięci, podczas gdy procesor 64-bitowy używa do tego 64 bitów. To znaczy, że pojedynczy program (a właściwie proces) może zaadresować na swoje potrzeby jedynie 4 GB w przypadku czipu 32-bitowego, nawet jeśli cały procesor (a nie jeden proces) może zaadresować więcej. Procesor 64-bitowy dzięki 64-bitowej przestrzeni adresowej, może zaadresować dla każdego pojedynczego procesu do 16 eksabajtów pamięci. Ile to jest? Dużo, dużo, dużo więcej niż będziesz kiedykolwiek potrzebował.

Dla większości aplikacji, czysta korzyść z procesora 64-bitowego jest niezauważalna. Większość appek nie potrzebuje wykonywać 64-bitowych operacji ani adresować więcej niż 4 GB RAM (tak wiem, do czasu), a obecne smartfony mają maksymalnie 4 GB tej pamięci, która mogłaby być z powodzeniem obsłużona przez procesor 32 bit. W praktyce, aplikacje 64-bitowe czasami mogą chodzić wolniej niż ich 32-bitowe odpowiedniki, z uwagi na to, że używanie tych 64-bitowych wskaźników pamięci zwiększa zasobożerność aplikacji, jeśli chodzi o stos, RAM i pamięć cache. Zalety? Są, ale korzyści obecnie – prawie niemierzalne. Architektura ta dostarcza więcej rejestrów, które są dwa razy szersze, co teoretycznie przyczynia się do wzrostu wydajności aplikacji, które są skompilowane dla 64 bitów.

64 bity – ukryta korzyść

Największa zaleta przesiadki na 64-bitową architekturę nie jest bezpośrednia. Wynika ona z przejścia na nowy, udoskonalony zbiór rozkazów dla procesorów ARM, czyli przejścia z ARMv7 na architekturę ARMv8. v7 był z nami już prawie dekadę i niemalże domagał się ulepszonego następcy. ARMv8 optymalizuje rozkazy, pozbywa się tych nieoptymalnych, zastępując je bardziej wydajnymi. Niektóre rozkazy są niejako skrojone na miarę dla nowych appek i ich potrzeb – między innymi wydajne szyfrowanie czy przetwarzanie sygnałów. Podwojona liczba rejestrów w tej architekturze pozwala na rzadsze odwołania do pamięci – i nie jest to zasługa 64-bitów, a zasługa ARMv8. Podsumowując – to ARMv8 sprawia, że 64-bitowe procesory mogą być wydajniejsze, a nie sam fakt posiadania dwa razy dłuższych rejestrów. Co prawda nie ma v8 bez 64 bitów, ale marketingowy nacisk na „64” jest zdecydowanie wyolbrzymiony.

octa4

Czy zatem realna korzyść z 64 bitów jest zauważalna i mierzalna? I tak i nie. Nadal najważniejsze będzie taktowanie procesora i jego wewnętrzna architektura, a nie długość rejestru. 64-bitowy Snapdragon 410 będzie zauważalnie wolniejszy niż 32-bitowy Snapdragon 805. W zderzeniu z GHz, procesem litograficznym, rodzajem rdzeni, GPU i wewnętrzną architekturą ani dłuższy rejestr, ani ARMv8 nie ma szans. Oczywiście przejście na 64 bity, a przede wszystkim właśnie na ARMv8 było nieuniknione i niewątpliwie pozytywne, ale nie powinniśmy przypisywać temu magicznego znaczenia. Trzeba pamiętać, że do pełnego wykorzystania 64 bitów potrzebujemy 64-bitowego systemu operacyjnego np. Lollipop) i 64-bitowych aplikacji skompilowanych/napisanych dla tej architektury.

Android zrobił pierwszy krok, choć nie obyło się bez potknięć, a wiele osób narzeka na wydajność systemu na 64-bitowcach i na brak pełnej kompatybilności wstecznej. Problemem pozostają wciąż aplikacje. Co prawda ich twórcy zapewne zoptymalizują je wkrótce pod 64-bitowe czipy, jednak problem jest tak naprawdę gdzieś indziej. Aplikacje na Androida oparte są w głównej mierzę o Javę. Ściągając .apk, ściągamy tak naprawdę skompresowane archiwum z kodem i bibliotekami, podczas gdy system kompiluje je JiT (Just in Time – Dalvik) lub AoT (Ahead of Time – ART). Jeśli ART w Lollipopie nie przyniesie wewnętrznej optymalizacji do natywnego kodu 64-bitowego, wysiłki producentów będą daremne. A na razie Google ma z tym kłopot, jak pokazuje wiele syntetycznych benchmarków.

Do końca tego roku zapomnicie o 64 bitach

Marketingowcy kochają termin 64-bit i octacore. Terminy takie jednak bardzo szybko przestają ekscytować, tak jak kiedyś przestały ekscytować nas megapiksele czy megaherce. Przesiadka z 32 na 64 bity czy z 4 na 8 rdzeni nie podwoi wydajności, tak jak 20 megapikseli nie będzie „dwa razy lepsze” niż 10 megapikseli. 20 megapikseli to… po prostu dwadzieścia milionów punktów na matrycy. Tylko i aż tyle. Tak jak 64 bity i 8 rdzeni. Nie ma tu magii, wbrew temu, do czego próbują nas przekonać całe sztaby marketingowców z największych na świecie firm technologicznych. A ja mimo wszystko naiwnie chciałbym, żeby traktowały one swoich klientów poważnie i z szacunkiem.

Jeżeli znalazłeś literówkę w tekście, to daj nam o tym znać zaznaczając kursorem problematyczny wyraz, bądź zdanie i przyciśnij Shift + Enter lub kliknij tutaj. Możesz też zgłosić błąd pisząc na powiadomienia@tabletowo.pl.

Komentarze

  • Raben

    Jeden z najlepszych tekstów tutaj ostatnimi czasy. Dobrze wyjaśniona srawa 64 bitów co od dawna mnie interesowało. to co się spodziewałem czyli są plusy, ale brak przełomu

    • Michal Mynarski

      Zdecydowanie. Niezły artykuł, który oględnie, ale sprawnie opisuje parę technicznych smaczków i zagłębia przy kilku innych kwestiach. Takich rzeczy mi w polskiej techblogosferze brakuje.

      Jak masz ochotę na więcej 64 bitów i ARTa to zapraszam również do moich publikacji (mam nadzieję, że mnie redakcja nie zje za autoreklamę ^^)

      • Nexus 11

        Dla nie aż zbyt szczegółowo, nie wszystko zrozumiałem ;)

        Panie Piotrze, więcej takich tekstów. Ale i tak najbardziej tutaj podobały mi się Pana dwa teksty. O komputerach kwantowych i uczeniu maszynowym. Naprawdęczapki z głów

  • Krzysiek

    Dyskusja o 64 bitowych procesorach w zastosowaniach mobilnych przypomniała mi o pewnej zmarnowanej szansie.

    Do tabletów trafiły 64 bitowe procesory Intela. Jak powszechnie wiadomo z Linuksem na procesorach Intela wiążą się dwa ABI (Application Binary Interface):
    (i386) 32 bitowe ABI oparte na zestawie instrukcji wywodzącym się od pierwszych 8086, z bardzo małą ilością rejestrów.
    (x86_64) 64 bitowe ABI oparte na zestawie instrukcji opracowanym na potrzeby AMD64, z większą liczbą rejestrów, lepiej dopasowane do współczesnych procesorów.

    Jest jednak jeszcze trzecie, mnie znane ABI, to tak zwane x32 które wykorzystuje zestaw instrukcji z AMD64, ale korzysta z 32 bitowych wskaźników (przez co kod zajmuje miej miejsca w pamięci RAM i pamięci podręcznej procesora). Dziś stanowi ono ciekawostkę (jedna z proponowanych architektur dla Debiana i Gentoo).

    Android na procesory Intela mógł pójść drogą x32, co pozwoliłoby lepiej wykorzystać procesory montowane w tabletach bez, marnowania pamięci. Niestety nie skorzystano z tej możliwości.

    Swoją drogą pracowałem sporo na Solarisach, które korzystały z 64 bitowych procesorów Sparc. Większość programów na takim Solarisie było 32 bitowych, a jedynie wybrane aplikacje (te, które rzeczywiście wymagały użycia więcej niż 2GB RAM) było 64 bitowe.

    Na dziś nie widzę w Androidzie żadnej aplikacji dla której użycie więcej niż 2 GB RAM byłoby uzasadnione.

    • Google na I/O 2014 pokazywało wyniki jakichś benchmarków i ART na 64 bitach wymiatał (podjarałem się i wydawało mi się, że Microsoft i Apple będą mieli problem). Benchmarki „w praktyce” i codzienne użytkowanie pokazały, że przyrosty wydajności są minimalne. Wątpię czy kolejne aktualizacje systemu wprowadzą jakąkolwiek rewolucję. A co do appek – poza grami też totalnie nie widzę zastosowań, gdzie jeden proces żąda 2 GB pamięci lub więcej

    • Metek

      Hmmm, Samsung ze swoim TW już nad tym uzasadnieniem popracuje :D

    • Michal Mynarski

      W Androidzie zastosowano Reference Comperssion, które też wykorzystuje skróconą adresację na 64 bitach :]

      https://blogs.oracle.com/jrockit/entry/understanding_compressed_refer

  • Robin

    No to za rok Samsung musi ogłosić pierwsy procesor hexacore. A Apple z 2 rdzeniami i tak zje ich w benczmarkach

    • Mihau

      Psst, hexacore to sześć rdzeni, nie szesnaście, to już było :P.

      • ArtiDiTu

        Było nie było , ładnie brzmi… ;-) .
        Marketing od kilku lat rządzi sprzedażą , mam to samo u mnie w firmie .
        Cos jest na rzeczy z ta globalizacją zjadającą własny ogon…

  • Zenon Z Lasu

    Marketing tak się zagalopował, że nie starczyło mu czasu na spellchecka, i w rezultacie mamy dumny napis: „The world’s first TURE 8 cores” :)

  • Krzych

    Brak polskich znaków w tym, tylko w tym artykule.

  • Piotrek Biedak

    A ja się pytam gdzie jest Adam i jego przestarzałe 32 bity ? :)

  • Bob

    Mam takie coś – 8 rdzeni, 2 GRam, aparat 13 Mpi. Straszna kicha, dławi się i dusi niemiłosiernie, ściema, bajera. Tyle w temacie

    • slv

      @Bob
      Mam po podobne parametry (Mi2s) i nie mam takich objawów. Po przejściu na Miui 5.2.x. Optymalizacja zamiast pogonią za kolejnym numerkiem Androida

  • Mr.Miecio

    Smartfony na androidzie są nieogarnone. Taki S4 – niby hiper 4 rdzenie, ramu tyle że niejeden laptop wpada w kompleksy a laguje przy przeglądaniu książki telefonicznej czy wybieraniu nr. I potem ludzie myślą że skoro 4 rdzenie nie dają rady to może 8? Musi być jakaś recepta żeby podstawowe funkcje smartfona chodziły przynajmniej tak płynnie jak buddyphone na 386 40mhz. z 4 mb ram.

  • ArtiDiTu

    Nie rozumiem dlaczego producenci sprzętu nie słyszą głosów konsumentów : optymalizacja , energooszczedność , funkcjonalność . Śmiem twierdzić , że nawet przy Octa-marketingu tablet z 2-rdzeniowym procesorem , 4 GB RAM , dopracowanym W8.1 i optymalizacją procesów/aplikacji byłby hitem . Gdyby jeszcze okazało się , ze płynnie chodzi PS oraz Wiedźmin 1/2 to pewnie mogliby taki sprzet produkować jeszcze cały rok bez zmian… a tak ponoszą koszty nowinek , niedopracowanych apek , koszty marketingu i reklamy . Tak samo nie rozumiem idei tableta z W8.1 model 2014/2015 z 1GB RAM , gdzie koszt kosci 2 GB DDR3 to zaledwie 7 USD wiecej niz taka sama 1 GB .

    • Sony

      Pojedź do BIEDNEGO kraju – są takie, gdzie 5$ to OGROMNA kwota.
      Tablety z 1 GB RAM, mają być JAK NAJTAŃSZE – dla Ciebie 7$ to mała kwota – ale jest ogromna masa ludzi, dla których to tygodniowy zarobek. A też by chcieli mieć jakiś sprzęt.

      Inna sprawa, że na 1 GB RAM i Atomie Windows 8.1 działa bardzo przyzwoicie – zaś Android się zacina i zamula :) :)

  • Szczerze mówiąc, nigdzie nie trafiłem na info, że ART wykorzystuje Compressed References / Compressed Oops. To nie jest default i musi być zaimplementowane explicite

    • Michal Mynarski

      „An important difference that Google is applying over Apple, at least inside VM runtime applications, is that they are using reference compression to avoid the usual memory bloat that comes with the switch to 64-bit. The VM retains simple 32-bit references.” ~ Andrei Frumusanu, anandtech.com

      http://www.anandtech.com/show/8231/a-closer-look-at-android-runtime-art-in-android-l/3

      Polecam się na przyszłość : ]

  • uru28

    Tak Piotrze, zdecydowanie więcej takich felietonów ;)

  • informatyk

    Niestety Android nie implementuje skróconych pointerów. JVM ma taką opcję, ale w ART nie zdecydowano się na to

  • A gdzieś w oficjalnych materiałach? ;)

  • AS

    Uważam argument o tym, ze producenci nie doceniają inteligencji swoich klientów za niezbyt trafny. Oni dobrze wiedza, ze magia liczb robi swoje. Gdyby tak nie było, nie bawiliby się w mnożenie rdzeni i rozdzielczości. Publika to jednak kupuje.

    Co wybrałby przeciętny użytkownik mając do wyboru dwa dokładnie takie same smartfony za dokładnie tę samą cenę. Pierwszy z nich miałby ekran o rozdzielczości 3840×2160 i przeciętny czas życia baterii wynoszący dwa dni, a drugi miałby ekran o rozdzielczości 1920×1080 i przeciętny czas życia baterii 4 dni. Jak sądzicie, co klienci by wybrali?

  • slv

    @AS

    „nie doceniają inteligencji swoich klientów za niezbyt trafny. Oni dobrze wiedza, ze magia liczb robi swoje.”

    no to jakby sobie zaprzeczasz :) Gdyby Klienci byli inteligentni (a w zasadzie mieli wiedzę, bo to nie jest tożsame) to wiedzieliby, że tak sam (w uproszczeniu) jak z MegaPikselami powyżej 5M, 4 rdzenie i więcej to tylko marketing. Dla przeciętnego Kowalskiego.

  • slv

    @Autor

    Piotrze, zacny artykuł. Chwała Ci za to, że propagujesz zdrowy rozsądek :-)

    Co do 64bit, pamiętam jak Linuxy przechodziły na 64bit. Było tak jak teraz piszesz z Androidem. Część rzeczy działała jako tako, część w ogóle nie za bardzo. Minęło parę lat. Chyba już wszyscy zapomnieli na serwerach co to 32bit. Aplikacje 64bit działają szybciej niż ich 32bit bracia. No Boinc. Przy projektach są obecnie wzmianki, żeby korzystać z 64bit, bo są „Well Tested” a przy 32bit, na własne ryzyko itd. Niektórzy zarzucają wersje 32bit całkowicie itd.

    Czyli okres przejściowy. Zalety są. Przez jakiś czas będzie kulało. Docelowo lepiej przejść na 64bit (małymi krokami) licząc się z tym, że po drodze będą potknięcia.

    Rdzenie, ciągle i ciąż 4 rdzenie to już „wypas”. Popracowaliby (jakoś), żeby pojedynczy rdzeń umiał się skalować od 100MHz to np 2GHz, oszczędzając w trybie jałowym energię. A przyśpieszając kiedy naprawdę jest potrzebny.

  • Kotek

    A czy jest szansa na 16 rdzeniowy procesor w tablecie za +/- 700zł ? Bardzo bym chciał pograć w gry z bardzo ładną grafiką.

Tabletowo.pl
Logowani/Rejestracja jest chwilowo wyłączona