Maiks Ešs veltīts viņa emuārā praktiskās sekas, ko rada pāreja uz 64 bitu arhitektūru iPhone 5S. Šis raksts balstās uz viņa atklājumiem.
Iemesls šim tekstam galvenokārt ir saistīts ar lielo dezinformācijas daudzumu, kas tiek izplatīts par to, ko jaunais iPhone 5s ar 64 bitu ARM procesoru patiesībā nozīmē lietotājiem un tirgum. Šeit mēs centīsimies sniegt objektīvu informāciju par šīs pārejas veiktspēju, iespējām un ietekmi uz izstrādātājiem.
"64 biti"
Ir divas procesora daļas, uz kurām var atsaukties "X-bit" etiķete - veselo skaitļu reģistru platums un rādītāju platums. Par laimi, lielākajā daļā mūsdienu procesoru šie platumi ir vienādi, tāpēc A7 gadījumā tas nozīmē 64 bitu veselu skaitļu reģistrus un 64 bitu rādītājus.
Tomēr vienlīdz svarīgi ir norādīt, ko "64 biti" NAV: RAM fiziskās adreses lielums. Bitu skaits, kas jāsazinās ar RAM (tātad RAM apjoms, ko ierīce var atbalstīt), nav saistīts ar CPU bitu skaitu. ARM procesoriem ir 26–40 bitu adreses, un tos var mainīt neatkarīgi no pārējās sistēmas.
- Datu kopnes lielums. No RAM vai buferatmiņas saņemto datu apjoms tāpat nav atkarīgs no šī faktora. Atsevišķas procesora instrukcijas var pieprasīt dažādus datu apjomus, taču tās tiek nosūtītas pa daļām vai saņemtas no atmiņas vairāk nekā nepieciešams. Tas ir atkarīgs no datu kvantu lieluma. IPhone 5 jau saņem datus no atmiņas 64 bitu kvantos (un tam ir 32 bitu procesors), un mēs varam saskarties ar izmēriem līdz 192 bitiem.
- Viss, kas saistīts ar peldošo komatu. Šādu reģistru (FPU) lielums atkal nav atkarīgs no procesora iekšējās darbības. ARM ir izmantojis 64 bitu FPU kopš pirms ARM64 (64 bitu ARM procesors).
Vispārējās priekšrocības un trūkumi
Ja salīdzinām citādi identiskas 32 bitu un 64 bitu arhitektūras, tās parasti nav tik atšķirīgas. Tas ir viens no iemesliem vispārējai sabiedrības apjukumam, kas meklē iemeslu, kāpēc Apple pāriet uz 64 bitu versiju arī mobilajās ierīcēs. Tomēr tas viss izriet no A7 (ARM64) procesora specifiskajiem parametriem un tā, kā Apple to izmanto, nevis tikai no tā, ka procesoram ir 64 bitu arhitektūra.
Tomēr, ja mēs joprojām aplūkosim atšķirības starp šīm divām arhitektūrām, mēs atradīsim vairākas atšķirības. Acīmredzami ir tas, ka 64 bitu veselo skaitļu reģistri var efektīvāk apstrādāt 64 bitu veselus skaitļus. Jau iepriekš ar tiem bija iespējams strādāt ar 32 bitu procesoriem, taču tas parasti nozīmēja to sadalīšanu 32 bitu garos gabalos, kas radīja lēnākus aprēķinus. Tātad 64 bitu procesors parasti var aprēķināt ar 64 bitu tipiem tikpat ātri kā ar 32 bitu procesoriem. Tas nozīmē, ka lietojumprogrammas, kas parasti izmanto 64 bitu tipus, var darboties daudz ātrāk ar 64 bitu procesoru.
Lai gan 64 biti neietekmē kopējo procesora izmantoto RAM apjomu, tas var atvieglot darbu ar lieliem RAM gabaliem vienā programmā. Jebkurai atsevišķai programmai, kas darbojas ar 32 bitu procesoru, ir tikai aptuveni 4 GB adrešu vietas. Ņemot vērā, ka operētājsistēma un standarta bibliotēkas kaut ko aizņem, tas atstāj programmai 1-3 GB lietojumprogrammu lietošanai. Tomēr, ja 32 bitu sistēmai ir vairāk nekā 4 GB RAM, šīs atmiņas izmantošana ir nedaudz sarežģītāka. Mums ir jāpiespiež operētājsistēma kartēt šos lielākos atmiņas gabalus mūsu programmai (atmiņas virtualizācija), vai arī mēs varam sadalīt programmu vairākos procesos (kur katram procesam atkal teorētiski ir pieejama 4 GB atmiņas tiešai adresēšanai).
Tomēr šie "uzlauzumi" ir tik sarežģīti un lēni, ka tos izmanto minimālas lietojumprogrammas. Praksē 32 bitu procesorā katra programma izmantos tikai savu 1–3 GB atmiņu, un vairāk pieejamās RAM var izmantot, lai vienlaikus darbinātu vairākas programmas vai izmantotu šo atmiņu kā buferi (kešatmiņu). Šie lietojumi ir praktiski, taču mēs vēlamies, lai jebkura programma varētu viegli izmantot atmiņas gabalus, kas lielāki par 4 GB.
Tagad mēs nonākam pie biežā (faktiski nepareizā) apgalvojuma, ka bez vairāk nekā 4 GB atmiņas 64 bitu arhitektūra ir bezjēdzīga. Lielāka adrešu telpa ir noderīga pat sistēmā ar mazāku atmiņu. Atmiņas kartētie faili ir ērts rīks, kurā daļa no faila satura ir loģiski saistīta ar procesa atmiņu, un viss fails nav jāielādē atmiņā. Tādējādi sistēma, piemēram, var pakāpeniski apstrādāt lielus failus, kas daudzkārt pārsniedz RAM ietilpību. 32 bitu sistēmā tik lielus failus nevar uzticami kartēt atmiņā, turpretim 64 bitu sistēmā tas ir vienkāršs gabals, pateicoties daudz lielākai adrešu telpai.
Tomēr lielāks rādītāju izmērs rada arī vienu lielu trūkumu: pretējā gadījumā identiskām programmām ir nepieciešams vairāk atmiņas 64 bitu procesorā (šīs lielākās norādes ir kaut kur jāglabā). Tā kā norādes ir bieži sastopama programmu sastāvdaļa, šī atšķirība var noslogot kešatmiņu, kas savukārt liek visai sistēmai darboties lēnāk. Tātad perspektīvā mēs varam redzēt, ka, ja mēs vienkārši mainītu procesora arhitektūru uz 64 bitu, tas faktiski palēninātu visu sistēmu. Tāpēc šis faktors ir jālīdzsvaro ar lielāku optimizāciju citās vietās.
ARM64
A7, 64 bitu procesors, kas darbina jauno iPhone 5s, nav tikai parasts ARM procesors ar plašākiem reģistriem. ARM64 satur lielus uzlabojumus salīdzinājumā ar vecāku 32 bitu versiju.
reģistra
ARM64 satur divreiz vairāk veselu skaitļu reģistru nekā 32 bitu ARM (uzmanieties, lai nesajauktu reģistru skaitu un platumu - par platumu mēs runājām sadaļā "64 biti". Tātad ARM64 ir gan divreiz platāki reģistri, gan divreiz vairāk reģistri). 32 bitu ARM ir 16 veselu skaitļu reģistri: viens programmas skaitītājs (PC - satur pašreizējās instrukcijas numuru), steka rādītājs (rādītājs uz notiekošu funkciju), saišu reģistrs (rādītājs uz atgriešanos pēc beigām no funkcijas), un atlikušie 13 ir paredzēti lietošanai lietojumprogrammās. Tomēr ARM64 ir 32 veselu skaitļu reģistri, tostarp viens nulles reģistrs, saišu reģistrs, kadra rādītājs (līdzīgi steka rādītājam) un viens, kas rezervēts nākotnei. Tādējādi lietojumprogrammu lietošanai ir pieejami 28 reģistri, kas ir vairāk nekā divas reizes vairāk nekā 32 bitu ARM. Tajā pašā laikā ARM64 dubultoja peldošā komata skaitļu (FPU) reģistru skaitu no 16 līdz 32 128 bitu reģistriem.
Bet kāpēc reģistru skaits ir tik svarīgs? Atmiņa parasti ir lēnāka nekā CPU aprēķini, un lasīšana/rakstīšana var aizņemt ļoti ilgu laiku. Tas liktu ātrajam procesoram turpināt gaidīt atmiņu, un mēs sasniegtu sistēmas dabisko ātruma ierobežojumu. Procesori mēģina slēpt šo handikapu ar buferu slāņiem, taču pat ātrākais (L1) joprojām ir lēnāks nekā procesora aprēķins. Tomēr reģistri ir atmiņas šūnas tieši procesorā un to lasīšana/rakstīšana ir pietiekami ātra, lai nepalēninātu procesora darbību. Reģistru skaits praktiski nozīmē ātrākās atmiņas apjomu procesora aprēķiniem, kas ļoti ietekmē visas sistēmas ātrumu.
Tajā pašā laikā šim ātrumam ir nepieciešams labs optimizācijas atbalsts no kompilatora, lai valoda varētu izmantot šos reģistrus un nebūtu viss jāglabā vispārējās lietojumprogrammas (lēnajā) atmiņā.
Instrukciju komplekts
ARM64 arī ienes lielas izmaiņas instrukciju komplektā. Instrukciju kopa ir atomu operāciju kopa, ko procesors var veikt (piemēram, 'ADD register1 register2') tiek pievienoti skaitļi divos reģistros. Atsevišķām valodām pieejamās funkcijas sastāv no šīm instrukcijām. Sarežģītākām funkcijām ir jāizpilda vairāk instrukciju, tāpēc tās var darboties lēnāk.
Jaunums ARM64 ir instrukcijas AES šifrēšanai, SHA-1 un SHA-256 jaucējfunkcijām. Tātad sarežģītas ieviešanas vietā tikai valoda izsauks šo instrukciju - kas nodrošinās milzīgu ātrumu šādu funkciju aprēķināšanai un, cerams, papildu drošību lietojumprogrammās. Piem. jaunais Touch ID arī izmanto šīs instrukcijas šifrēšanā, nodrošinot reālu ātrumu un drošību (teorētiski uzbrucējam būtu jāmaina pats procesors, lai piekļūtu datiem – tas ir maigi izsakoties nepraktiski, ņemot vērā tā miniatūru izmēru).
Saderība ar 32 bitu
Ir svarīgi pieminēt, ka A7 var pilnībā darboties 32 bitu režīmā bez emulācijas. Tas nozīmē, ka jaunais iPhone 5s bez palēninājuma var palaist lietojumprogrammas, kas kompilētas uz 32 bitu ARM. Taču tad tas nevar izmantot jaunās ARM64 funkcijas, tāpēc vienmēr ir vērts izveidot īpašu būvējumu tieši A7, kam vajadzētu darboties daudz ātrāk.
Izpildes laika izmaiņas
Izpildlaiks ir kods, kas programmēšanas valodai pievieno funkcijas, kuras tā var izmantot lietojumprogrammas darbības laikā līdz pēc tulkošanas. Tā kā Apple nav jāuztur lietojumprogrammu saderība (ka 64 bitu binārais fails darbojas 32 bitu versijā), viņi varētu atļauties veikt vēl dažus Objective-C valodas uzlabojumus.
Viens no tiem ir t.s marķētais rādītājs (atzīmēts indikators). Parasti objekti un norādes uz šiem objektiem tiek glabāti atsevišķās atmiņas daļās. Tomēr jaunie rādītāju veidi ļauj klasēm ar maziem datiem saglabāt objektus tieši rādītājā. Šī darbība novērš nepieciešamību piešķirt atmiņu tieši objektam, vienkārši izveidojiet rādītāju un tajā esošo objektu. Atzīmētās norādes tiek atbalstītas tikai 64 bitu arhitektūrā arī tāpēc, ka 32 bitu rādītājā vairs nav pietiekami daudz vietas, lai saglabātu pietiekami daudz noderīgu datu. Tāpēc iOS, atšķirībā no OS X, šo funkciju vēl neatbalstīja. Tomēr līdz ar ARM64 ienākšanu tas mainās, un iOS ir panākusi OS X arī šajā ziņā.
Lai gan rādītāji ir 64 biti gari, ARM64 rādītāja adresei tiek izmantoti tikai 33 biti. Un, ja mēs varam droši atmaskot pārējos rādītāja bitus, mēs varam izmantot šo vietu, lai saglabātu papildu datus – kā tas ir pieminēto marķēto rādītāju gadījumā. Konceptuāli šī ir viena no lielākajām izmaiņām Objective-C vēsturē, lai gan tā nav nopērkama funkcija - tāpēc lielākā daļa lietotāju nezinās, kā Apple virza Objective-C uz priekšu.
Runājot par noderīgajiem datiem, ko var glabāt šāda marķēta rādītāja atlikušajā vietā, tagad, piemēram, Objective-C to izmanto, lai saglabātu t.s. atsauces skaits (atsauču skaits). Iepriekš atsauces skaits tika saglabāts citā vietā atmiņā, tam sagatavotā hash tabulā, taču tas varēja palēnināt visu sistēmu liela skaita alloc/dealloc/retain/release zvanu gadījumā. Tabula bija jābloķē vītnes drošības dēļ, tāpēc divu objektu atskaites skaitu divos pavedienos nevarēja mainīt vienlaikus. Tomēr šī vērtība ir tikko ievietota pārējā t.s ISA rādītājiem. Šī ir vēl viena neuzkrītoša, bet milzīga priekšrocība un paātrinājums nākotnē. Tomēr to nekad nevarētu panākt 32 bitu arhitektūrā.
Informācija par saistītajiem objektiem, vai objekts ir vāji saistīts, vai ir nepieciešams objektam ģenerēt destruktoru utt., arī tiek no jauna ievietota atlikušajā objektu rādītāju vietā. Pateicoties šai informācijai, Objective-C izpildlaiks spēj būtiski paātrināt izpildes laiku, kas atspoguļojas katras lietojumprogrammas ātrumā. No testēšanas tas nozīmē aptuveni 40–50% paātrinājumu visiem atmiņas pārvaldības zvaniem. Vienkārši pārejot uz 64 bitu rādītājiem un izmantojot šo jauno vietu.
Záver
Lai gan konkurenti mēģinās izplatīt domu, ka pāreja uz 64 bitu arhitektūru nav nepieciešama, jūs jau zināt, ka tas ir tikai ļoti neinformēts viedoklis. Tā ir taisnība, ka pāreja uz 64 bitu versiju, nepielāgojot valodu vai lietojumprogrammas, patiesībā neko nenozīmē – tas pat palēnina visas sistēmas darbību. Taču jaunais A7 izmanto modernu ARM64 ar jaunu instrukciju komplektu, un Apple ir uzņēmies pūles, lai modernizētu visu Objective-C valodu un izmantotu jaunās iespējas – līdz ar to arī solīts paātrinājums.
Šeit mēs esam minējuši lielu skaitu iemeslu, kāpēc 64 bitu arhitektūra ir pareizais solis uz priekšu. Tā ir kārtējā revolūcija "zem motora pārsega", pateicoties kurai Apple centīsies noturēties priekšgalā ne tikai ar dizainu, lietotāja interfeisu un bagātīgu ekosistēmu, bet galvenokārt ar modernākajām tehnoloģijām tirgū.
Daudziem neinformētiem Android/Samsung cilvēkiem vajadzētu izlasīt šo rakstu un pēc tam paslēpties stūrī.
Nu mums viņi ir žēl. Gadiem ilgi viņi attaisnoja Android traģisko UX un lietotāja interfeisu, sakot, ka viņiem ir tehnoloģiski vismodernākā OS ar funkcijām, un tagad viņi atklāja, ka viņi atkal ir gadiem atpalikuši :)
Ja cilvēks nav aita un klausās reklāmas (un viņam tas padodas), tad pēc personīgās pieredzes var izveidot savu viedokli :-).
Izmēģinu gandrīz visas sacensības un veidoju savu viedokli.
Man ir nepieciešams jauns super augstas veiktspējas mobilais tālrunis, jo es par to netērēju daudz. Tas ir Man vajag mazāku sniegumu par mazāku cenu ;-). Varbūt es gribētu lēnāku ar lielāku akumulatoru.
No otras puses, jaunais procak noderētu iPad, kur ir daudz spēļu :-).
Es esmu Android/HTC :) jo TAS man ir diezgan jautri un kvalitatīva HW sakņošana un pārvēršana ātrā cīnītājā ir mans hobijs. Un iOS man neļaus to darīt. (Tas pat nav nepieciešams. Vairāk vai mazāk iOS ir veidots tā, lai viss darbotos kā nākas un tur nekas nav jādara. Kad pārstāšu spēlēt, nopirkšu ābolu un izbaudīšu). Bet es nezinu, kāpēc jūs pastāvīgi uzbrūkat viens otram kā bērni. Apple ir pilnīgi kā Android. Tas ir tāpat kā salīdzināt Demokrātiju ar diktatūru un tamlīdzīgi... Noskatījos iPhone 5S prezentācijas konferenci un neskatoties uz to, ka man nekas no Apple nepieder, man patika 64bit un citi uzlabojumi, kas nāca. Bet ne tāpēc, ka esmu sarežģīts honimír trtko, kurš sēž aiz datora un dzenā Android vai Apple, bet gan tāpēc, ka es redzu PROGRESS, kas neliks man ilgi gaidīt. Cilvēkiem būtu jāsāk ļoti smagi strādāt, lai viņiem nebūtu laika nodarboties ar muļķībām, pieklājīgi sakot.
konstruktīvs pienesums no otras puses :) kiez tas acis atvērtu atlikušajiem 99% android pozitīvi
varbūt vispirms jāapspriež 99% ābolu fanātiķu, tad varēsim konstruktīvi sarunāties
ļoti sarežģītas lietas izskaidro vienkārši... paldies
Lielisks raksts! Jā, es piekrītu, ka Android/WP lietotājiem šis raksts ir jāizlasa obligāti. Tā vietā, lai troļļotu un gudri runātu par to, "kā 64b ir bezjēdzīgs mobilajos tālruņos"…
tev droši vien nekad nav bijis wp rokā, citādi tev šī nebūtu
Kopš pirmajiem panākumiem mobilo sakaru tirgū Samsung nav darījis neko citu, kā tikai nosmērējis konkurenci, taču būtībā visu šo laiku ir gājis tā pēdās. Apple vienmēr ir bijis paraugs tehnoloģiju uzņēmumiem, un, ja tie koncentrēsies tikai uz klientu ņirgāšanos un pastāvīgu dezinformāciju, tie drīz paklups. Apple vienmēr ir gājis savu ceļu, un tas vienmēr ir bijis ļoti labs laiks, kura pietrūkst daudziem konkurējošiem nozares uzņēmumiem.
Varētu teikt, ka Samsung brauc uz viļņa un izmanto savas iespējas. Viņš der uz Android, viņam ir lielisks HW, viņš daudz ko ražo pats, viņam ir pienācīgs atbalsts. Un kā jau jebkurš plēsīgs Āzijas uzņēmums izmanto visas reklāmas iespējas. Un, protams, viņš zog un kopē. Tas, ko "šķībais acis" padodas, ir kopēšana. Viņi ir ļoti labi aprēķinājuši, ka tas ir daudz lētāk nekā iet savu ceļu, soli pa solim. Un kā spēcīgs uzņēmums to vienkārši var atļauties. Tomēr…
Es tikai nesaprotu, kāpēc telefona ātrums turpina pieaugt, dodiet dažus piemērus, kam jūs to izmantojat, man lēnām nav jēgas palielināt mobilā tālruņa veiktspēju, bet es noņemšu vārdu mārketings.
Spēles, slikti optimizētas spēles. Arī Transport Tycoon iPad 3 nedarbojas tik gludi un tādā pašā izšķirtspējā kā uz darbvirsmas. Piemērs.
Es tikai nesaprotu, kāpēc telefona ātrums turpina pieaugt, iedodiet dažus piemērus kam jūs to lietojat, man lēnām nav jēgas palielināt mobilā telefona veiktspēju, ja es no tā izņemtu vārdu mārketings .
Video, audio un attēlu apstrādei. Un uz spēlēm.
Ikvienam, kurš iPhone izmanto tikai zvanīšanai, īsziņu sūtīšanai un laiku pa laikam lasot vai sūtot e-pastus un laiku pa laikam sērfojot internetā, būs nepieciešams iPhone 4. Es uzskatu, ka šādu lietotāju ir daudz. Ne visiem ir vajadzīgs labākais tālrunis pasaulē :-)
aitas
Vai fiziskais kompromiss starp aparatūru un programmatūru jums neko nenozīmē? Tas man nedaudz atgādina 19. gadsimta beigas, kad tā laika fiziķi teica, ka fizikā viss jau ir atklāts un nav vajadzības turpināt (desmitgadi pirms relativitātes teorijas un trīs pirms kvantu teorijas) .
Tiekšanās pēc labākā nekad nebeidzas. Dažreiz programmatūra vada un dažreiz aparatūra. Bet, ja viens iestrēgst, tas nelaiž otru vaļā. Nebūsim tik savtīgi pret saviem pēctečiem :) Tātad tavam komentāram - ātrāks telefons ļaus iedarbināt jaudīgākas aplikācijas, kuras spēs izdarīt daudz vairāk par piedziņām. Un kādreiz lietas, kurām pat mūsdienu datoriem nepietiek. Nākotne ir aizraujoša.
tieši tā :)
Labs raksts, bet es nesaprotu, kāpēc Apple A7 neielika 2GB RAM. Jā, iOS vairākuzdevumu veikšana nav tāda, ka obligāti būtu nepieciešami 2 GB, taču, ņemot vērā divreiz lielāku atmiņas rādītāja garumu, tas būtu daudz piemērotāks.
Bet citādi piekrītu, ka 64 bitu procesors mobilajam telefonam ir "nevajadzīgs", tāpat kā lieks bija tīklenes displejs vai optiskā pele bumbiņas vietā - visi šie izgudrojumi tika apzīmēti kā "nevajadzīgi", bet manuprāt pareizais vārds ir "mūžīgs", jo reiz ir jāpienāk un Apple nebaidās izdomāt ko jaunu.
Es tam piekrītu. Diemžēl pat "bezjēdzīgs" nav precīzs izteiciens. Nevajadzīgs nozīmē kaut ko tādu, kura prioritāti cilvēks nezina. Tā noteikti nav taisnība. Ātrumam šāds ātrums var nebūt vajadzīgs, bet tas noteikti to atpazīs. Un, kad programmatūra sasniegs aparatūru, atkal būs vietas uzlabojumiem.
Protams, es atbalstu, es domāju, ka iP5 patiešām ir diezgan ātrs viedtālrunis, tāpēc 5S nemaz nav jābūt 64 bitu. Bet kādu dienu kādam atkal bija jātiek galā ar to, un tas bija Apple, un tas bija tagad. Cik sevi atceros, eksperti runājuši arī par to, ka 64 bitu procesori būs bezjēdzīgi pat datoros.
Man kā IT speciālistam, kuram gandrīz neizdevās matrica, secinājums ir svarīgs. Viss raksts (ko atbalsta komentāri) man šķiet diezgan saprotams, un, lai gan es nevarēšu to izskaidrot, A7 ar 64 bitu arhitektūru ir solis uz priekšu. Paldies par informāciju.
Es rediģētu raksta nosaukumu, jo tas ir mārketinga gājiens. Katrs jauninājums būtībā ir mārketinga solis. :-)
ES nedomāju. Piemēram, Samsung izmanto mārketinga pasākumus. Tie parādās ar operatīvo atmiņu, kas iPhone nemaz nav vajadzīga. Viņi izvairās no funkcijām, kuras vispār nav lietojamas. To apzināti palielina procesora veiktspēju testiem. utt. Tāds ir mārketings, lai gan jā, tas ir maldinošs, ar ko viņiem nevajadzētu izvairīties ;)