Mike Ash blogjában dedikált a 64 bites architektúrára való váltás gyakorlati következményei az iPhone 5S-ben. Ez a cikk az ő megállapításaira támaszkodik.
Ennek a szövegnek az oka elsősorban az, hogy nagy mennyiségű téves információ terjed arról, hogy mit is jelent az új, 5 bites ARM processzorral szerelt iPhone 64s a felhasználók és a piac számára. Itt megpróbálunk objektív információkat közölni a fejlesztők számára az átállás teljesítményéről, képességeiről és következményeiről.
"64 bites"
A processzornak két olyan része van, amelyre az "X-bit" címke utalhat: az egész regiszterek szélessége és a mutatók szélessége. Szerencsére a legtöbb modern processzoron ezek a szélességek megegyeznek, így az A7 esetében ez 64 bites integer regisztereket és 64 bites mutatókat jelent.
Ugyanakkor ugyanilyen fontos kiemelni, hogy a "64 bites" mit NEM jelent: RAM fizikai cím mérete. A RAM-mal való kommunikációhoz szükséges bitek száma (tehát az eszköz által támogatott RAM mennyisége) nincs összefüggésben a CPU bitek számával. Az ARM processzorok 26 és 40 bites címekkel rendelkeznek, és a rendszer többi részétől függetlenül megváltoztathatók.
- Adatbusz mérete. A RAM-ból vagy puffermemóriából kapott adatok mennyisége hasonlóan független ettől a tényezőtől. Az egyes processzorok utasításai eltérő mennyiségű adatot kérhetnek, de vagy darabokban küldik el, vagy a szükségesnél többet kapnak a memóriából. Ez az adatkvantum méretétől függ. Az iPhone 5 már 64 bites kvantumban kap adatokat a memóriából (és 32 bites processzorral rendelkezik), és akár 192 bites méretekkel is találkozhatunk.
- Bármi, ami a lebegőponttal kapcsolatos. Az ilyen regiszterek (FPU) mérete ismét független a processzor belső működésétől. Az ARM 64 bites FPU-t használ az ARM64 (64 bites ARM processzor) előtt.
Általános előnyök és hátrányok
Ha összehasonlítjuk az egyébként azonos 32 bites és 64 bites architektúrákat, általában nem különböznek annyira. Ez az egyik oka a közvélemény általános zűrzavarának, ami azt keresi, hogy az Apple miért tér át a 64 bitesre a mobileszközökön is. Mindez azonban az A7 (ARM64) processzor sajátos paramétereiből és az Apple használatából fakad, nem csak abból, hogy a processzor 64 bites architektúrával rendelkezik.
Ha azonban továbbra is megvizsgáljuk a két architektúra közötti különbségeket, több különbséget is találunk. A nyilvánvaló az, hogy a 64 bites egész regiszterek hatékonyabban tudják kezelni a 64 bites egész számokat. Korábban is lehetett velük dolgozni 32 bites processzorokon, de ez általában azt jelentette, hogy 32 bites darabokra osztották őket, ami lassabb számításokat okozott. Tehát egy 64 bites processzor általában ugyanolyan gyorsan tud számolni a 64 bites típusokkal, mint a 32 bitesekkel. Ez azt jelenti, hogy az általában 64 bites típusokat használó alkalmazások sokkal gyorsabban futhatnak 64 bites processzoron.
Bár a 64 bit nem befolyásolja a processzor által felhasználható RAM teljes mennyiségét, megkönnyítheti a nagy RAM-darabokkal való munkát egy programban. Bármely 32 bites processzoron futó program csak körülbelül 4 GB címterülettel rendelkezik. Figyelembe véve, hogy az operációs rendszer és a szabványos könyvtárak foglalnak valamit, így a programnak valahol 1-3 GB marad az alkalmazás használatára. Ha azonban egy 32 bites rendszer több mint 4 GB RAM-mal rendelkezik, akkor a memória használata egy kicsit bonyolultabb. Kényszerítenünk kell az operációs rendszert, hogy ezeket a nagyobb memóriadarabokat térképezze fel programunk számára (memóriavirtualizáció), vagy feloszthatjuk a programot több folyamatra (ahol minden folyamatnak elméletileg ismét 4 GB szabad memóriája van a közvetlen címzésre).
Ezek a "hackek" azonban olyan nehézkesek és lassúak, hogy minimális alkalmazás használja őket. A gyakorlatban egy 32 bites processzoron minden program csak a maga 1-3 GB memóriáját használja, és több rendelkezésre álló RAM használható több program egyidejű futtatására, vagy ezt a memóriát pufferként (caching) használhatja. Ezek a felhasználási módok praktikusak, de szeretnénk, ha bármely program könnyedén használhatná a 4 GB-nál nagyobb memóriadarabokat.
Most elérkezünk ahhoz a gyakori (valójában téves) állításhoz, hogy 4 GB-nál több memória nélkül hiábavaló a 64 bites architektúra. A nagyobb címterület még a kevesebb memóriával rendelkező rendszereken is hasznos. A memória-leképezett fájlok egy praktikus eszköz, ahol a fájl tartalmának egy része logikailag kapcsolódik a folyamat memóriájához anélkül, hogy a teljes fájlt be kellene tölteni a memóriába. Így a rendszer például fokozatosan képes feldolgozni a RAM kapacitásának sokszorosát meghaladó fájlokat. Egy 32 bites rendszeren az ekkora fájlokat nem lehet megbízhatóan leképezni a memóriakártyával, míg a 64 bites rendszeren ez a jóval nagyobb címtérnek köszönhetően egy darab torta.
A mutatók nagyobb mérete azonban egy nagy hátránnyal is jár: egyébként az azonos programoknak több memóriára van szükségük egy 64 bites processzoron (ezeket a nagyobb mutatókat el kell tárolni valahol). Mivel a mutatók gyakori részét képezik a programoknak, ez a különbség megterhelheti a gyorsítótárat, ami viszont az egész rendszer lassabb működését okozza. Láthatjuk tehát, hogy ha csak a processzor architektúrát 64 bitesre változtatnánk, az valójában lelassítaná az egész rendszert. Tehát ezt a tényezőt más helyeken végzett további optimalizálásokkal kell ellensúlyozni.
ARM64
Az A7, az új iPhone 64s 5 bites processzora nem csupán egy hagyományos ARM processzor szélesebb regiszterekkel. Az ARM64 jelentős fejlesztéseket tartalmaz a régebbi, 32 bites verzióhoz képest.
iktató hivatal
Az ARM64 kétszer annyi egész regisztert tartalmaz, mint a 32 bites ARM (vigyázz, ne keverd össze a regiszterek számát és szélességét - a szélességről a "64 bites" részben beszéltünk. Tehát az ARM64-nek kétszer szélesebb és kétszer annyi regisztere van nyilvántartások). A 32 bites ARM 16 egész regiszterrel rendelkezik: egy programszámláló (PC - az aktuális utasítás számát tartalmazza), egy veremmutató (egy folyamatban lévő funkció mutatója), egy linkregiszter (egy mutató a vége utáni visszatérésre) függvény), a maradék 13 pedig alkalmazási használatra szolgál. Az ARM64 azonban 32 egész regiszterrel rendelkezik, köztük egy nulla regiszterrel, egy linkregiszterrel, egy keretmutatóval (hasonlóan a veremmutatóhoz), és egy a jövő számára fenntartott regiszterrel. Így 28 regiszter marad az alkalmazás használatára, ami több mint kétszerese a 32 bites ARM-nek. Ezzel egyidejűleg az ARM64 megduplázta a lebegőpontos szám (FPU) regiszterek számát 16-ról 32 128 bites regiszterre.
De miért olyan fontos a nyilvántartások száma? A memória általában lassabb, mint a CPU számításai, és az olvasás/írás nagyon sokáig tarthat. Így a gyors processzornak folyamatosan várnia kellene a memóriára, és ezzel elérnénk a rendszer természetes sebességkorlátját. A processzorok ezt a hátrányt pufferrétegekkel próbálják elrejteni, de még a leggyorsabb (L1) is lassabb, mint a processzor számítása. A regiszterek azonban közvetlenül a processzorban lévő memóriacellák, és olvasásuk/írásuk elég gyors ahhoz, hogy ne lassítsa le a processzort. A regiszterek száma gyakorlatilag a processzorszámításokhoz a leggyorsabb memória mennyiségét jelenti, ami nagyban befolyásolja a teljes rendszer sebességét.
Ugyanakkor ehhez a sebességhez jó optimalizálási támogatás kell a fordítótól, hogy a nyelv használni tudja ezeket a regisztereket, és ne kelljen mindent az általános alkalmazási (a lassú) memóriában tárolnia.
Utasításkészlet
Az ARM64 az utasításkészletben is jelentős változásokat hoz. Az utasításkészlet olyan atomi műveletek halmaza, amelyeket a processzor végrehajthat (pl. 'ADD register1 register2' összeadja a számokat két regiszterben). Az egyes nyelveken elérhető funkciók ezekből az utasításokból állnak. Az összetettebb függvényeknek több utasítást kell végrehajtaniuk, így lassabbak lehetnek.
Az ARM64 újdonságai az AES titkosításra, az SHA-1 és az SHA-256 hash funkciókra vonatkozó utasítások. Tehát a komplex megvalósítás helyett csak a nyelv fogja ezt az utasítást hívni - ami óriási felgyorsítást hoz az ilyen függvények kiszámításában, és remélhetőleg nagyobb biztonságot az alkalmazásokban. Például. az új Touch ID ezeket az utasításokat használja a titkosításban is, ami valós sebességet és biztonságot tesz lehetővé (elméletileg a támadónak magát a processzort kellene módosítania, hogy hozzáférjen az adatokhoz – miniatűr méretét tekintve ez enyhén szólva nem praktikus).
Kompatibilitás 32 bittel
Fontos megemlíteni, hogy az A7 teljes mértékben tud 32 bites módban futni anélkül, hogy emulációra lenne szükség. Ez azt jelenti, hogy az új iPhone 5s lassulás nélkül képes futtatni a 32 bites ARM-re fordított alkalmazásokat. Ekkor azonban nem tudja használni az új ARM64-es funkciókat, ezért mindig érdemes egy speciális buildet készíteni csak az A7-hez, aminek sokkal gyorsabban kellene futnia.
Futásidejű változások
A futási idő az a kód, amely olyan funkciókat ad hozzá a programozási nyelvhez, amelyeket az alkalmazás futása közben, a fordításig használhat. Mivel az Apple-nek nem kell fenntartania az alkalmazások kompatibilitását (ami 64 bites bináris 32 biten fut), megengedhetik maguknak, hogy néhány további fejlesztést hajtsanak végre az Objective-C nyelven.
Ezek egyike az ún címkézett mutató (jelölt jelző). Általában az objektumokat és az ezekre mutató mutatókat a memória különálló részein tárolják. Az új mutatótípusok azonban lehetővé teszik, hogy a kevés adattal rendelkező osztályok objektumokat közvetlenül a mutatóban tároljanak. Ez a lépés kiküszöböli a memória közvetlen lefoglalásának szükségességét az objektum számára, csak hozzon létre egy mutatót és a benne lévő objektumot. A címkézett mutatókat csak a 64 bites architektúra támogatja, mivel a 32 bites mutatóban már nincs elég hely elegendő hasznos adat tárolására. Ezért az iOS az OS X-től eltérően még nem támogatta ezt a funkciót. Az ARM64 érkezésével azonban ez megváltozik, és az iOS ebből a szempontból is utolérte az OS X-et.
Bár a mutatók 64 bitesek, az ARM64-en csak 33 bitet használnak a mutató saját címére. Ha pedig a többi mutatóbitet megbízhatóan le tudjuk fedni, akkor ezt a helyet további adatok tárolására használhatjuk fel – mint az említett tagged pointerek esetében. Elméletileg ez az egyik legnagyobb változás az Objective-C történetében, bár ez nem piacképes funkció – így a legtöbb felhasználó nem fogja tudni, hogy az Apple hogyan viszi előre az Objective-C-t.
Ami egy ilyen címkézett mutató fennmaradó területén tárolható hasznos adatokat illeti, az Objective-C például ma már az ún. referenciaszám (hivatkozások száma). Korábban a referenciaszámot a memóriában egy másik helyen, egy erre előkészített hash táblában tárolták, de ez nagyszámú alloc/dealloc/retain/release hívás esetén lelassíthatta az egész rendszert. A táblázatot a szálbiztonság miatt le kellett zárni, így két szálban két objektum referenciaszámát nem lehetett egyszerre módosítani. Ez az érték azonban újonnan bekerül a többi ún isa mutatók. Ez egy újabb feltűnő, de hatalmas előny és gyorsulás a jövőben. Ez azonban soha nem érhető el 32 bites architektúrában.
A társított objektumokra vonatkozó információk, hogy az objektumra gyenge hivatkozás, szükséges-e destruktort generálni az objektumhoz stb., szintén újonnan beszúrásra kerül az objektumokra mutató mutató fennmaradó helyére.. Ennek az információnak köszönhetően az Objective-C runtime alapvetően képes felgyorsítani a futásidőt, ami az egyes alkalmazások sebességében is megmutatkozik. A tesztelés alapján ez az összes memóriakezelési hívás körülbelül 40-50%-os felgyorsítását jelenti. Csak úgy, hogy 64 bites mutatókra vált, és használja ezt az új helyet.
Következtetés
Bár a versenytársak megpróbálják elterjeszteni azt a gondolatot, hogy a 64 bites architektúrára való átállás szükségtelen, Ön már tudja, hogy ez csak egy nagyon tájékozatlan vélemény. Igaz, hogy a 64 bitesre váltás a nyelv vagy az alkalmazások adaptálása nélkül nem igazán jelent semmit – még az egész rendszert is lelassítja. De az új A7 modern ARM64-et használ új utasításkészlettel, az Apple pedig vette a fáradságot, hogy modernizálja a teljes Objective-C nyelvet, és kihasználja az új képességeket – innen ered a beígért gyorsulás.
Itt számos okot említettünk, amiért a 64 bites architektúra a megfelelő lépés előre. Újabb forradalomról van szó "a motorháztető alatt", melynek köszönhetően az Apple nem csak a dizájnnal, a felhasználói felülettel és a gazdag ökoszisztémával, hanem elsősorban a piac legmodernebb technológiáival igyekszik az élvonalban maradni.
Sok tájékozatlan Android/Samsung embernek érdemes elolvasnia ezt a cikket, majd elbújnia a sarokban.
Nos, sajnálnunk kell őket. Évekig azzal mentegették az Android tragikus UX-jét és felhasználói felületét, hogy technológiailag a legfejlettebb funkciókkal rendelkező operációs rendszerük van, most pedig rájöttek, hogy ismét évekkel lemaradtak :)
Ha az ember nem birka és reklámokat hallgat (és jó is benne), akkor személyes tapasztalat után kialakíthatja a véleményét :-).
Szinte az összes versenyt kipróbálom, és kialakítom a saját véleményemet.
Nekem kell egy új szuper nagy teljesítményű mobiltelefon, mert nem sokat költök rá. Azaz Kevesebb teljesítményre van szükségem alacsonyabb áron ;-). Talán egy lassabbat vennék jobban, nagyobb akkumulátorral.
Viszont az új procak jól jönne az iPadhez ahol sok játék van :-).
Android/HTC vagyok:) mert az IT elég szórakoztató számomra, és a rootolás és a jó minőségű HW gyors harcossá alakítása a hobbim. És az iOS nem engedi, hogy megtegyem. (Nem is szükséges. Többé-kevésbé az iOS-t úgy tervezték, hogy minden úgy működjön, ahogy kell, és ott ne kelljen semmit sem csinálni. Ha abbahagyom a játék élvezetét, veszek egy almát és élvezem). De nem tudom, miért támadjátok egymást, mint a gyerekek. Az Apple teljesen olyan, mint az Android. Mintha összehasonlítanánk a demokráciát a diktatúrával és hasonlókkal... Megnéztem a konferenciát, amikor bemutatták az iPhone 5S-t és annak ellenére, hogy nem birtokolok semmit az Apple-től, tetszett a 64 bites és a többi fejlesztés, ami jött. De nem azért, mert komplex honimír trtko vagyok, aki egy PC mögött ülve üldözi az Androidot vagy az Apple-t, hanem azért, mert látom a HALADÁST, ami nem fog sokáig várni. Az embereknek nagyon keményen kellene dolgozniuk, hogy ne legyen idejük a baromságokkal foglalkozni, udvariasan fogalmazva.
konstruktív hozzájárulás a másik oldalról :) kiez felnyitná a szemét a maradék 99% android pozitív
talán először az almafanatikusok 99%-át kellene megbeszélni, aztán lehet építő jellegű beszélgetést folytatni
nagyon összetett dolgokat egyszerűen elmagyarázva... köszönöm
Remek cikk! Igen, egyetértek azzal, hogy az Android/WP felhasználóknak kötelező elolvasniuk ezt a cikket. Ahelyett, hogy trollkodnának és okoskodnának arról, hogy "milyen haszontalan a 64b a mobilokban"…
valószínűleg soha nem volt wp a kezedben, különben nem lenne ez
A Samsung a mobilpiacon elért első sikerei óta nem csinál mást, mint a versenytársakat, de lényegében mindvégig a nyomdokaiba lép. Az Apple mindig is példakép volt a technológiai cégek számára, és ha csak a vásárlók gúnyolására és állandó félretájékoztatására koncentrálnak, hamar megbotlik. Az Apple mindig is a saját útját járta, és ez mindig is a nagyon jó időzítés kérdése volt, ami az iparág számos versengő vállalatától hiányzik.
Mondhatnánk, hogy a Samsung meglovagolja a hullámot, és kihasználja a lehetőségeit. Androidra fogad, remek HW-je van, sok mindent ő maga készít, tisztességes támogatása van. És mint minden ragadozó ázsiai cég, a reklámozás minden lehetőségét kihasználja. És persze lop és másol. Amiben jó a "ferde szemű", az a másolás. Nagyon jól kiszámolták, hogy sokkal olcsóbb, mintha a saját útjukat járnák, lépésről lépésre. Erős cégként ezt egyszerűen megengedheti magának. Még…
Csak azt nem értem, hogy miért növekszik folyamatosan a telefon sebessége, mondj néhány példát, mire használod, lassan már nincs értelme a mobiltelefon teljesítményének növelése, de a marketing szót kiveszem .
Játékok, rosszul optimalizált játékok. Ezenkívül a Transport Tycoon az iPad 3-on nem fut olyan zökkenőmentesen és ugyanolyan felbontásban, mint az asztalon. Példa.
Csak azt nem értem, hogy miért növekszik folyamatosan a telefon sebessége, mondj néhány példát, mire használod, lassan semmi értelme a mobiltelefon teljesítményének növelésének, ha kiveszem belőle a marketing szót .
Videó-, hang- és képfeldolgozáshoz. És tovább a játékokhoz.
Aki csak telefonálásra, SMS-ezésre, időnként e-mailek olvasására vagy küldésére és időnként internetezésre használ iPhone-t, annak iPhone 4-re van szüksége. Azt hiszem, sok ilyen felhasználó van. Nem mindenkinek kell a világ legjobb telefonja :-)
juh
A hardver és a szoftver közötti fizikai kompromisszum nem jelent Önnek semmit? Ez egy kicsit a 19. század végére emlékeztet, amikor az akkori fizikusok azt mondták, hogy a fizikában már mindent felfedeztek, és nem kell tovább folytatni (egy évtizeddel a relativitáselmélet előtt és hárommal a kvantumelmélet előtt) .
A legjobb keresése soha nem ér véget. Néha a szoftver vezet, néha a hardver. De ha az egyik elakad, nem engedi el a másikat. Nem leszünk ennyire önzők az utódainkkal szemben :) Tehát a megjegyzésedre - egy gyorsabb telefon erősebb alkalmazásokat tesz lehetővé, amelyek sokkal többre lesznek képesek, mint a meghajtók. És valamikor olyan dolgokat, amelyekhez még a mai számítógépek sem elegendőek. A jövő izgalmas.
Pontosan :)
Szép cikk, de nem értem, hogy az Apple miért nem rakott 7GB RAM-ot az A2-be. Igen, az iOS multitasking nem olyan, hogy feltétlenül 2 GB kell, de a memóriamutató kétszeres hosszát tekintve sokkal alkalmasabb lenne.
De egyébként egyetértek azzal, hogy egy mobiltelefonhoz "felesleges" a 64 bites processzor, ahogy felesleges volt a retina kijelző vagy az optikai egér a labda helyett - mindezeket a találmányokat "feleslegesnek" jelölték, de véleményem szerint a A helyes szó az "időtlen", mert egyszer el kell jönnie, és az Apple nem fél valami újjal előrukkolni.
Ezt támogatom. Sajnos még a "haszontalan" sem pontos kifejezés. A szükségtelen valami olyasmit jelent, aminek a prioritását az ember nem ismeri. Ez biztosan nem igaz. Lehet, hogy a sebességnek nincs szüksége ilyen sebességre, de biztosan felismeri. És amikor a szoftver utoléri a hardvert, ismét lesz hova fejlődni.
Persze, én támogatom, úgy értem, hogy az iP5 valóban elég gyors okostelefon, tehát az 5S-nek egyáltalán nem kellene 64 bitesnek lennie. De egy nap valakinek újra meg kellett küzdenie ezzel, és az Apple volt, és most is az. Amióta az eszemet tudom, arról is beszéltek a szakértők, hogy a 64 bites processzorok még a számítógépekben is használhatatlanok lesznek.
Számomra, mint informatikai laikus, aki majdnem megbukott a mátrixon, fontos a következtetés. Az egész cikk (a kommentekkel alátámasztva) eléggé szemléletesnek tűnik számomra, és bár nem fogom tudni elmagyarázni, a 7 bites architektúrájú A64 előrelépést jelent. Köszönöm a tájékoztatást.
A cikk címét szerkeszteném, mivel marketing lépésről van szó. Minden innováció alapvetően marketing lépés. :-)
Nem hiszem. Például a Samsung marketinglépéseket alkalmaz. RAM-mal jelennek meg, amire az iPhone-nak egyáltalán nincs szüksége. Megúszták azokat a funkciókat, amelyek egyáltalán nem használhatók. Szándékosan növelik a processzor teljesítményét tesztekhez. Stb. Ez marketing, bár igen, félrevezető, amit nem szabad megúszniuk ;)