Mike'as Ešas skirta savo dienoraštyje praktines perėjimo prie 64 bitų architektūros iPhone 5S pasekmes. Šis straipsnis remiasi jo išvadomis.
Šio teksto priežastis daugiausia dėl to, kad skleidžiama daug klaidingos informacijos apie tai, ką iš tikrųjų reiškia vartotojams ir rinkai naujasis iPhone 5s su 64 bitų ARM procesoriumi. Čia mes stengsimės pateikti objektyvią informaciją apie šio perėjimo našumą, galimybes ir pasekmes kūrėjams.
"64 bitai"
Yra dvi procesoriaus dalys, kurias gali nurodyti „X bitų“ etiketė – sveikųjų skaičių registrų plotis ir rodyklių plotis. Laimei, daugelyje šiuolaikinių procesorių šie pločiai yra vienodi, todėl A7 atveju tai reiškia 64 bitų sveikųjų skaičių registrus ir 64 bitų rodykles.
Tačiau taip pat svarbu nurodyti, ko „64 bitai“ NĖRA reiškia: RAM fizinio adreso dydis. Bitų, reikalingų palaikyti ryšį su RAM, skaičius (taigi RAM kiekis, kurį gali palaikyti įrenginys) nėra susijęs su procesoriaus bitų skaičiumi. ARM procesoriai turi nuo 26 iki 40 bitų adresus ir gali būti keičiami nepriklausomai nuo likusios sistemos.
- Duomenų magistralės dydis. Iš RAM arba buferinės atminties gaunamų duomenų kiekis taip pat nepriklauso nuo šio veiksnio. Atskiros procesoriaus instrukcijos gali reikalauti skirtingo duomenų kiekio, tačiau jos siunčiamos dalimis arba gaunamos iš atminties daugiau nei reikia. Tai priklauso nuo duomenų kvanto dydžio. „IPhone 5“ jau gauna duomenis iš atminties 64 bitų kvantais (ir turi 32 bitų procesorių), o mes galime susidurti su dydžiais iki 192 bitų.
- Viskas, kas susiję su slankiuoju kableliu. Tokių registrų (FPU) dydis vėlgi nepriklauso nuo vidinio procesoriaus veikimo. ARM naudoja 64 bitų FPU nuo ARM64 (64 bitų ARM procesorius).
Bendrieji privalumai ir trūkumai
Jei palyginsime kitaip identiškas 32 bitų ir 64 bitų architektūras, jos paprastai nesiskiria. Tai viena iš visuotinio visuomenės painiavos priežasčių, ieškančios priežasties, kodėl „Apple“ pereina prie 64 bitų ir mobiliuosiuose įrenginiuose. Tačiau viską lemia specifiniai A7 (ARM64) procesoriaus parametrai ir tai, kaip „Apple“ jį naudoja, o ne tik tai, kad procesorius turi 64 bitų architektūrą.
Tačiau jei vis tiek pažvelgsime į šių dviejų architektūrų skirtumus, rasime keletą skirtumų. Akivaizdu, kad 64 bitų sveikųjų skaičių registrai gali efektyviau apdoroti 64 bitų sveikuosius skaičius. Dar anksčiau su jais buvo galima dirbti su 32 bitų procesoriais, tačiau tai dažniausiai reikšdavo jų padalijimą į 32 bitų ilgio dalis, todėl skaičiavimai sulėtėjo. Taigi 64 bitų procesorius paprastai gali skaičiuoti su 64 bitų tipais taip pat greitai, kaip ir su 32 bitų. Tai reiškia, kad programos, kurios paprastai naudoja 64 bitų tipus, gali veikti daug greičiau 64 bitų procesoriuje.
Nors 64 bitai neturi įtakos bendram RAM kiekiui, kurį gali naudoti procesorius, tai gali palengvinti darbą su dideliais RAM gabalais vienoje programoje. Bet kuri programa, veikianti 32 bitų procesoriuje, turi tik apie 4 GB adresų vietos. Atsižvelgiant į tai, kad operacinė sistema ir standartinės bibliotekos kažką užima, programai lieka 1–3 GB vietos. Tačiau jei 32 bitų sistemoje yra daugiau nei 4 GB RAM, naudoti šią atmintį yra šiek tiek sudėtingiau. Turime priversti operacinę sistemą susieti šias didesnes atminties dalis mūsų programai (atminties virtualizavimas), arba galime padalyti programą į kelis procesus (kai kiekvienas procesas teoriškai vėl turi 4 GB atminties tiesioginiam adresui).
Tačiau šie „įsilaužimai“ yra tokie sunkūs ir lėti, kad juos naudoja minimalios programos. Praktiškai 32 bitų procesoriuje kiekviena programa naudos tik savo 1–3 GB atminties, o daugiau turimos RAM gali būti panaudota kelioms programoms paleisti vienu metu arba naudoti šią atmintį kaip buferį (caching). Šie naudojimo būdai yra praktiški, tačiau norėtume, kad bet kuri programa galėtų lengvai naudoti didesnes nei 4 GB atminties dalis.
Dabar prieiname prie dažno (iš tikrųjų neteisingo) teiginio, kad be daugiau nei 4 GB atminties 64 bitų architektūra yra nenaudinga. Didesnė adresų erdvė yra naudinga net mažiau atminties turinčioje sistemoje. Atminties susiejimo failai yra patogus įrankis, kuriame dalis failo turinio yra logiškai susieta su proceso atmintimi ir viso failo nereikia įkelti į atmintį. Taigi sistema gali, pavyzdžiui, palaipsniui apdoroti didelius failus, daug kartų didesnius nei RAM talpa. 32 bitų sistemoje tokie dideli failai negali būti patikimai susieti su atmintimi, o 64 bitų sistemoje tai yra paprastas dalykas dėl daug didesnės adresų erdvės.
Tačiau didesnis rodyklių dydis atneša ir vieną didelį trūkumą: kitu atveju identiškoms programoms reikia daugiau atminties 64 bitų procesoriuje (šios didesnės rodyklės turi būti kažkur saugomos). Kadangi rodyklės yra dažna programų dalis, šis skirtumas gali apkrauti talpyklą, todėl visa sistema veikia lėčiau. Taigi perspektyvoje matome, kad jei tik pakeistume procesoriaus architektūrą į 64 bitų, tai iš tikrųjų sulėtintų visą sistemą. Taigi šis veiksnys turi būti subalansuotas atliekant daugiau optimizacijų kitose vietose.
ARM64
A7, 64 bitų procesorius, maitinantis naująjį iPhone 5s, nėra tik įprastas ARM procesorius su platesniais registrais. ARM64 yra didelių patobulinimų, palyginti su senesne, 32 bitų versija.
registras
ARM64 talpina dvigubai daugiau sveikųjų skaičių registrų nei 32 bitų ARM (būkite atsargūs, kad nesupainiotumėte registrų skaičiaus ir pločio – apie plotį kalbėjome „64 bitų“ skyriuje. Taigi ARM64 turi ir dvigubai platesnius registrus, ir dvigubai daugiau registrai). 32 bitų ARM turi 16 sveikųjų skaičių registrų: vieną programos skaitiklį (PC - yra dabartinės instrukcijos numeris), dėklo rodyklę (žymeklį į vykdomą funkciją), nuorodų registrą (rodyklė į grįžimą po pabaigos funkcijos), o likusieji 13 yra skirti naudoti programoje. Tačiau ARM64 turi 32 sveikųjų skaičių registrus, įskaitant vieną nulio registrą, nuorodų registrą, kadro žymeklį (panašų į kamino rodyklę) ir vieną rezervuotą ateičiai. Tai leidžia mums naudoti 28 registrus, daugiau nei dvigubai daugiau nei 32 bitų ARM. Tuo pačiu metu ARM64 padvigubino slankiojo kablelio (FPU) registrų skaičių nuo 16 iki 32 128 bitų registrų.
Bet kodėl toks svarbus registrų skaičius? Atmintis paprastai yra lėtesnė nei procesoriaus skaičiavimai, o skaitymas / rašymas gali užtrukti labai ilgai. Dėl to greitas procesorius turėtų laukti atminties ir mes pasiektume natūralų sistemos greičio ribą. Procesoriai bando paslėpti šią kliūtį buferių sluoksniais, tačiau net ir greičiausias (L1) vis tiek yra lėtesnis nei procesoriaus skaičiavimas. Tačiau registrai yra atminties ląstelės, esančios tiesiai procesoriuje, o jų skaitymas / įrašymas yra pakankamai greitas, kad nesulėtėtų procesoriaus. Registrų skaičius praktiškai reiškia greičiausios atminties kiekį procesoriaus skaičiavimams, o tai labai įtakoja visos sistemos greitį.
Tuo pačiu metu šiam greičiui reikalingas geras kompiliatoriaus optimizavimo palaikymas, kad kalba galėtų naudoti šiuos registrus ir nereikėtų visko saugoti bendrosios programos (lėtojoje) atmintyje.
Instrukcijų rinkinys
ARM64 taip pat atneša didelių instrukcijų rinkinio pakeitimų. Instrukcijų rinkinys yra atominių operacijų, kurias gali atlikti procesorius, rinkinys (pvz., „ADD register1 register2“ sudeda skaičius dviejuose registruose). Funkcijos, prieinamos atskiroms kalboms, yra sudarytos iš šių nurodymų. Sudėtingesnės funkcijos turi vykdyti daugiau instrukcijų, todėl jos gali būti lėtesnės.
Naujiena ARM64 yra AES šifravimo, SHA-1 ir SHA-256 maišos funkcijų instrukcijos. Taigi vietoj sudėtingo diegimo šią instrukciją vadins tik kalba – tai labai pagreitins tokių funkcijų skaičiavimą ir, tikėkimės, padidins programų saugumą. Pvz. naujasis Touch ID taip pat naudoja šias instrukcijas šifruodamas, todėl užtikrinamas tikras greitis ir saugumas (teoriškai užpuolikas turėtų modifikuoti patį procesorių, kad galėtų pasiekti duomenis – o tai mažų mažiausiai nepraktiška, atsižvelgiant į jo miniatiūrinį dydį).
Suderinamumas su 32 bitų
Svarbu paminėti, kad A7 gali visiškai veikti 32 bitų režimu be emuliacijos. Tai reiškia, kad naujasis iPhone 5s gali paleisti programas, sudarytas naudojant 32 bitų ARM, be jokio sulėtėjimo. Tačiau tuomet jis negali naudotis naujomis ARM64 funkcijomis, todėl visada verta pasidaryti specialų statymą tik A7, kuris turėtų veikti daug greičiau.
Vykdymo laiko pokyčiai
Vykdymo laikas yra kodas, papildantis programavimo kalbą funkcijų, kurias ji gali naudoti veikiant programai iki vertimo. Kadangi „Apple“ nereikia palaikyti programų suderinamumo (kad 64 bitų dvejetainis failas veikia 32 bitų sistemoje), jie galėtų sau leisti dar kelis „Objective-C“ kalbos patobulinimus.
Vienas iš jų yra vadinamasis pažymėtas žymeklis (pažymėtas indikatorius). Paprastai objektai ir rodyklės į tuos objektus saugomi atskirose atminties dalyse. Tačiau nauji žymeklio tipai leidžia klasėms, turinčioms mažai duomenų, saugoti objektus tiesiai žymeklyje. Šis veiksmas pašalina poreikį objektui tiesiogiai skirti atmintį, tiesiog sukurkite žymeklį ir objektą jame. Pažymėti rodyklės palaikomos tik 64 bitų architektūroje ir dėl to, kad 32 bitų rodyklėje nebeužtenka vietos pakankamai naudingų duomenų saugoti. Todėl iOS, skirtingai nei OS X, šios funkcijos dar nepalaikė. Tačiau atsiradus ARM64, tai keičiasi, o iOS šiuo atžvilgiu taip pat pasivijo OS X.
Nors rodyklės yra 64 bitų ilgio, ARM64 tik 33 bitai naudojami paties žymeklio adresui. Ir jei galime patikimai demaskuoti likusius rodyklės bitus, šią erdvę galime panaudoti papildomiems duomenims saugoti – kaip ir minėtų pažymėtų rodyklių atveju. Konceptualiai tai yra vienas didžiausių pokyčių Objective-C istorijoje, nors tai ir nėra parduodama funkcija – todėl dauguma vartotojų nežinos, kaip Apple juda į priekį Objective-C.
Kalbant apie naudingus duomenis, kurie gali būti saugomi likusioje tokio pažymėto žymeklio erdvėje, pavyzdžiui, „Objective-C“ dabar juos naudoja, kad saugotų vadinamąjį. nuorodų skaičius (nuorodų skaičius). Anksčiau nuorodų skaičius buvo saugomas kitoje atminties vietoje, jam paruoštoje maišos lentelėje, tačiau tai galėjo sulėtinti visą sistemą esant dideliam aloc/dealloc/retain/release skambučių skaičiui. Lentelė turėjo būti užrakinta dėl gijų saugos, todėl dviejų objektų atskaitos skaičius dviejose gijose negalėjo būti pakeistas vienu metu. Tačiau ši reikšmė naujai įterpiama į likusią vadinamąją ISA rodikliai. Tai dar vienas nepastebimas, bet didžiulis pranašumas ir pagreitis ateityje. Tačiau to niekada nepavyko pasiekti 32 bitų architektūroje.
Informacija apie susijusius objektus, ar objektas yra silpnai nurodytas, ar reikia sugeneruoti objekto naikintuvą ir pan., taip pat naujai įterpiama į likusią rodyklių į objektus vietą Šios informacijos dėka Objective-C runtime gali iš esmės pagreitinti vykdymo laiką, o tai atsispindi kiekvienos programos greičiu. Remiantis bandymais, tai reiškia apie 40–50% visų atminties valdymo skambučių pagreitį. Tiesiog pereidami prie 64 bitų rodyklių ir naudodami šią naują erdvę.
Išvada
Nors konkurentai bandys skleisti mintį, kad pereiti prie 64 bitų architektūros nebūtina, jūs jau žinosite, kad tai tik labai neinformuota nuomonė. Tiesa, tiesiog perėjimas prie 64 bitų, nepritaikant prie jos kalbos ar programų, iš tikrųjų nieko nereiškia – netgi pristabdo visą sistemą. Tačiau naujajame A7 naudojamas modernus ARM64 su nauju instrukcijų rinkiniu, o „Apple“ pasistengė modernizuoti visą „Objective-C“ kalbą ir pasinaudoti naujomis galimybėmis – taigi ir pažadėtas pagreitis.
Čia paminėjome daugybę priežasčių, kodėl 64 bitų architektūra yra teisingas žingsnis į priekį. Tai dar viena revoliucija „po gaubtu“, kurios dėka „Apple“ stengsis išlikti priešakyje ne tik dėl dizaino, vartotojo sąsajos ir turtingos ekosistemos, bet daugiausia su moderniausiomis technologijomis rinkoje.
Daugelis neinformuotų „Android“ / „Samsung“ žmonių turėtų perskaityti šį straipsnį ir pasislėpti kampe.
Na, mes turime jų gailėtis. Daugelį metų jie teisinosi dėl tragiško Android vartotojo sąsajos ir vartotojo sąsajos sakydami, kad turi technologiškai pažangiausią OS su funkcijomis, o dabar sužinojo, kad vėl atsilieka metais :)
Jeigu žmogus ne avis ir klauso reklamų (ir jam tai sekasi), tai po asmeninės patirties gali susidaryti savo nuomonę :-).
Išmėginu beveik visas varžybas ir susidarau savo nuomonę.
Man reikia naujo itin didelio našumo mobiliojo telefono, nes jam išleidžiu nedaug. Tai yra Man reikia mažiau našumo už mažesnę kainą ;-). Galbūt norėčiau lėtesnio su didesne baterija.
Kita vertus, naujasis procak praverstų iPad kur daug žaidimų :-).
Esu Android/HTC :), nes man tai visai smagu, o root ir aukštos kokybės HW konvertavimas į greitą kovotoją yra mano hobis. Ir iOS man neleis to daryti. (Net ir nebūtina. Daugiau ar mažiau iOS sukurta taip, kad viskas veiktų taip, kaip turėtų ir ten nieko nereikėtų daryti. Kai nustosiu mėgautis žaidimu, nusipirksiu obuolį ir mėgaujuosi). Bet aš nežinau, kodėl jūs vienas kitą puolate kaip vaikai. „Apple“ yra visiškai kaip „Android“. Tai kaip lyginti Demokratiją su diktatūra ir panašiai... Konferenciją žiūrėjau, kai buvo pristatytas iPhone 5S ir nepaisant to, kad man nieko iš Apple nepriklauso, man patiko 64 bitai ir kiti atėję patobulinimai. Bet ne todėl, kad esu sudėtingas honimír trtko, kuris sėdi už kompiuterio ir persekioja Android ar Apple, o todėl, kad matau PAŽANGA, dėl kurios manęs ilgai laukti nereikės. Žmonės turėtų pradėti labai sunkiai dirbti, kad neliktų laiko, mandagiai tariant, tvarkytis su nesąmonėmis.
konstruktyvus indėlis iš kitos pusės :) kiez tai atvertų akis likusiems 99% android teigiamas
gal 99% obuolių fanatikų pirmiausia reikėtų aptarti, tada galėsime konstruktyviai pasikalbėti
labai sudėtingi dalykai paaiškinti paprastai... ačiū
Puikus straipsnis! Taip, sutinku, kad „Android“ / WP naudotojai turėtų perskaityti šį straipsnį. Užuot trolėję ir protingai kalbėję apie tai, „kaip 64b nenaudingas mobiliuosiuose telefonuose“…
tu tikriausiai niekada neturėjai wp rankoje, kitaip jo neturėtum
Nuo pirmųjų pasisekimų mobiliųjų telefonų rinkoje „Samsung“ nieko nedarė, tik šmeižė konkurenciją, tačiau iš esmės visą tą laiką ėjo jos pėdomis. „Apple“ visada buvo sektinas pavyzdys technologijų įmonėms ir, jei jos sutelks dėmesį tik į tyčiojimąsi ir nuolatinį klientų dezinformavimą, greitai suklups. „Apple“ visada ėjo savo keliu ir visada buvo labai gero laiko klausimas, kurio trūksta daugeliui konkuruojančių pramonės įmonių.
Galima sakyti, kad „Samsung“ lipa ant bangos ir naudojasi savo galimybėmis. Jis lažinosi dėl Android, turi puikų HW, daug ką gamina pats, turi tinkamą palaikymą. Ir kaip bet kuri plėšri Azijos įmonė, ji išnaudoja visas reklamos galimybes. Ir, žinoma, vagia ir kopijuoja. Tai, ką „kreivaakis“ moka, yra kopijavimas. Jie labai gerai paskaičiavo, kad tai daug pigiau, nei eiti savo keliu, žingsnis po žingsnio. Ir kaip stipri įmonė, ji gali sau tai leisti. Dar…
Tik nesuprantu kodel telefono greitis nuolat auga, duok kokius pavyzdzius kam tu naudoji, man palengva nera prasmės didinti mobiliojo telefono našumą, bet išimsiu žodį marketingas .
Žaidimai, prastai optimizuoti žaidimai. Be to, Transport Tycoon iPad 3 neveikia taip sklandžiai ir ta pačia raiška kaip darbalaukyje. Pavyzdys.
Tik nesuprantu kodel telefono greitis vis dideja, duok kokius pavyzdzius kam tu naudoji, man palengva nera prasmės didinti mobiliojo telefono našumą, jei iš jo pašalinu žodį marketingas .
Vaizdo, garso ir vaizdo apdorojimui. Ir prie žaidimų.
Visiems, kurie naudoja iPhone tik skambinti, rašyti žinutes ir retkarčiais skaityti ar siųsti el. laiškus ir retkarčiais naršyti internete, reikės iPhone 4. Manau, kad tokių vartotojų yra daug. Ne kiekvienam reikia geriausio pasaulyje telefono :)
avis
Ar fizinis kompromisas tarp techninės ir programinės įrangos jums nieko nereiškia? Tai man šiek tiek primena XIX amžiaus pabaigą, kai to meto fizikai sakė, kad fizikoje viskas jau atrasta ir nebereikia tęsti (dešimtmetis iki reliatyvumo teorijos ir trys iki kvantinės teorijos) .
Geriausio siekimas niekada nesibaigia. Kartais veda programinė įranga, o kartais aparatinė įranga. Bet jei vienas užstringa, tai nepaleis kito. Nebūsime tokie egoistiški savo palikuonims :) Taigi į jūsų komentarą - greitesnis telefonas įjungs galingesnes aplikacijas, kurios galės daug daugiau nei vairuoti. O kadaise dalykų, kuriems neužtenka net ir šiandieninių kompiuterių. Ateitis įdomi.
tiksliai :)
Puikus straipsnis, bet nesuprantu, kodėl Apple į A7 neįdėjo 2GB RAM. Taip, iOS multitasking nėra toks, kad būtinai reikėtų 2GB, bet atsižvelgiant į dvigubą atminties žymeklio ilgį, jis būtų daug tinkamesnis.
Bet šiaip sutinku, kad 64 bitų procesorius mobiliajam telefonui yra „nereikalingas“, kaip buvo nereikalingas tinklainės ekranas ar optinė pelė vietoj kamuoliuko – visi šie išradimai buvo pažymėti kaip „nereikalingi“, bet mano nuomone teisingas žodis yra "nesenstanti", nes kartą turi ateiti ir Apple nebijo sugalvoti ką nors naujo.
Aš pritariu. Deja, net „nenaudingas“ nėra tikslus posakis. Nereikalinga reiškia kažką, kurio prioriteto žmogus nežino. Tai tikrai netiesa. Greičiui tokio greičio gal ir nereikia, bet jis tikrai jį atpažins. Ir kai programinė įranga pasivys aparatinę įrangą, vėl bus kur tobulėti.
Žinoma, aš esu už, turiu omenyje, kad „iP5“ yra tikrai gana greitas išmanusis telefonas, todėl 5S visai neturėtų būti 64 bitų. Bet vieną dieną kažkas vėl turėjo su tuo susidurti ir tai buvo „Apple“ ir taip buvo dabar. Kiek save pamenu, ekspertai taip pat kalbėjo apie tai, kad 64 bitų procesoriai bus nenaudingi net kompiuteriuose.
Man, kaip IT specialistui, vos nepatyrusiam matricos, svarbi išvada. Visas straipsnis (palaikomas komentarais) man atrodo gana įžvalgus ir, nors paaiškinti nemokėsiu, A7 su 64 bitų architektūra yra žingsnis į priekį. Ačiū už informaciją.
Redaguosiu straipsnio pavadinimą, nes tai rinkodaros žingsnis. Kiekviena naujovė iš esmės yra rinkodaros žingsnis. :-)
Aš nemanau. Pavyzdžiui, „Samsung“ naudoja rinkodaros veiksmus. Jie rodomi su RAM, kurios iPhone visiškai nereikia. Jie atsisako funkcijų, kurių iš viso negalima naudoti. Jie sąmoningai padidina procesoriaus našumą bandymams. ir kt. Tai yra rinkodara, nors taip, ji yra klaidinanti, su kuria jie neturėtų tiesiog išsisukti ;)