Agħlaq ad

Mike Irmied iddedikat fuq il-blog tiegħu l-implikazzjonijiet prattiċi tal-bidla għal arkitettura 64-bit fl-iPhone 5S. Dan l-artikolu jiġbed fuq is-sejbiet tiegħu.

Ir-raġuni għal dan it-test hija prinċipalment minħabba l-ammont kbir ta 'informazzjoni ħażina li qed tinfirex dwar dak li l-iPhone 5s il-ġdid b'proċessur ARM ta' 64-bit fil-fatt ifisser għall-utenti u s-suq. Hawnhekk se nippruvaw inġibu informazzjoni oġġettiva dwar il-prestazzjoni, il-kapaċitajiet u l-implikazzjonijiet ta 'din it-tranżizzjoni għall-iżviluppaturi.

"64 bit"

Hemm żewġ partijiet ta 'proċessur li t-tikketta "X-bit" tista' tirreferi għalihom - il-wisa 'r-reġistri sħaħ u l-wisa' tal-pointers. Fortunatament, fuq il-biċċa l-kbira tal-proċessuri moderni dawn il-wisgħat huma l-istess, għalhekk fil-każ tal-A7 dan ifisser reġistri interi ta '64 bit u pointers ta' 64 bit.

Madankollu, huwa ugwalment importanti li jiġi rrilevat dak li "64bit" MA Tfissirx: Daqs tal-indirizz fiżiku RAM. In-numru ta 'bits biex tikkomunika ma' RAM (għalhekk l-ammont ta 'RAM li apparat jista' jappoġġja) mhuwiex relatat man-numru ta 'bits tas-CPU. Il-proċessuri ARM għandhom kullimkien bejn indirizzi ta '26 u 40 bit u jistgħu jinbidlu indipendentement mill-bqija tas-sistema.

  • Daqs tal-bus tad-dejta. L-ammont ta 'dejta riċevut minn RAM jew memorja buffer huwa bl-istess mod indipendenti minn dan il-fattur. Istruzzjonijiet individwali tal-proċessur jistgħu jitolbu ammonti differenti ta' dejta, iżda jew jintbagħtu f'biċċiet jew jirċievu aktar milli meħtieġ mill-memorja. Jiddependi fuq id-daqs tal-quantum tad-dejta. L-iPhone 5 diġà jirċievi data mill-memorja fi quanta 64-bit (u għandu proċessur ta '32-bit), u nistgħu niltaqgħu ma' daqsijiet sa 192 bit.
  • Xi ħaġa relatata mal-punt li jvarja. Id-daqs ta 'dawn ir-reġistri (FPU) huma għal darb'oħra indipendenti mill-ħidma interna tal-proċessur. ARM ilu juża 64-bit FPU minn qabel ARM64 (64-bit ARM proċessur).

Vantaġġi u żvantaġġi ġenerali

Jekk inqabblu arkitetturi identiċi ta' 32bit u 64bit, ġeneralment mhumiex daqshekk differenti. Din hija waħda mir-raġunijiet għall-konfużjoni ġenerali tal-pubbliku li qed ifittex raġuni għaliex Apple qed timxi għal 64bit f'apparat mobbli wkoll. Madankollu, kollox ġej mill-parametri speċifiċi tal-proċessur A7 (ARM64) u kif Apple tużah, mhux biss mill-fatt li l-proċessur għandu arkitettura 64-bit.

Madankollu, jekk xorta nħarsu lejn id-differenzi bejn dawn iż-żewġ arkitetturi, insibu diversi differenzi. L-ovvja hija li r-reġistri interi ta '64-bit jistgħu jimmaniġġjaw interi ta' 64-bit b'mod aktar effiċjenti. Anke qabel, kien possibbli li taħdem magħhom fuq proċessuri ta '32 bit, iżda dan normalment kien ifisser li jiġu diviż f'biċċiet twal ta' 32 bit, li kkawża kalkoli aktar bil-mod. Allura proċessur ta '64-bit ġeneralment jista' jikkalkula b'tipi ta '64-bit daqstant malajr daqs ma' dawk ta '32-bit. Dan ifisser li l-applikazzjonijiet li ġeneralment jużaw tipi 64-bit jistgħu jaħdmu ħafna aktar malajr fuq proċessur 64-bit.

Għalkemm 64bit ma jaffettwax l-ammont totali ta 'RAM li l-proċessur jista' juża, jista 'jagħmilha aktar faċli biex taħdem ma' biċċiet kbar ta 'RAM fi programm wieħed. Kwalunkwe programm wieħed li jaħdem fuq proċessur ta’ 32 bit għandu biss madwar 4 GB ta’ spazju għall-indirizzi. Meta wieħed iqis li s-sistema operattiva u l-libreriji standard jieħdu xi ħaġa, dan iħalli l-programm b'xi mkien bejn 1-3 GB għall-użu tal-applikazzjoni. Madankollu, jekk sistema ta '32-bit għandha aktar minn 4 GB ta' RAM, l-użu ta 'dik il-memorja huwa daqsxejn aktar ikkumplikat. Irridu nirrikorru biex nisfurzaw is-sistema operattiva biex timmappa dawn il-biċċiet akbar ta 'memorja għall-programm tagħna (virtwalizzazzjoni tal-memorja), jew nistgħu naqsmu l-programm fi proċessi multipli (fejn kull proċess għal darb'oħra teoretikament ikollu 4 GB ta' memorja disponibbli għall-indirizzar dirett).

Madankollu, dawn il-"hacks" huma tant diffiċli u bil-mod li minimu ta 'applikazzjonijiet jużawhom. Fil-prattika, fuq proċessur ta '32-bit, kull programm se juża biss 1-3 GB ta' memorja tiegħu, u aktar RAM disponibbli tista 'tintuża biex tmexxi programmi multipli fl-istess ħin jew tuża din il-memorja bħala buffer (caching). Dawn l-użi huma prattiċi, iżda nixtiequ li kwalunkwe programm ikun jista' juża faċilment biċċiet ta' memorja akbar minn 4GB.

Issa naslu għall-istqarrija frekwenti (fil-fatt żbaljata) li mingħajr aktar minn 4GB ta 'memorja, arkitettura ta' 64-bit hija inutli. Spazju ta 'indirizz akbar huwa utli anke fuq sistema b'inqas memorja. Fajls mappjati bil-memorja huma għodda utli fejn parti mill-kontenut tal-fajl huma loġikament marbuta mal-memorja tal-proċess mingħajr ma l-fajl kollu jkollu jitgħabba fil-memorja. Għalhekk, is-sistema tista ', pereżempju, tipproċessa gradwalment fajls kbar ħafna drabi akbar mill-kapaċità RAM. Fuq sistema ta’ 32 bit, fajls kbar bħal dawn ma jistgħux jiġu mmappjati bil-memorja b’mod affidabbli, filwaqt li f’sistema ta’ 64 bit, hija biċċa biċċa, grazzi għall-ispazju tal-indirizzi ferm akbar.

Madankollu, id-daqs akbar tal-pointers iġib ukoll żvantaġġ kbir wieħed: inkella programmi identiċi jeħtieġu aktar memorja fuq proċessur ta '64-bit (dawn il-pointers akbar għandhom jinħażnu x'imkien). Peress li l-pointers huma parti frekwenti mill-programmi, din id-differenza tista 'tgħabbi l-cache, li mbagħad tikkawża li s-sistema kollha taħdem aktar bil-mod. Allura fil-perspettiva, nistgħu naraw li jekk aħna biss biddlu l-arkitettura tal-proċessur għal 64-bit, fil-fatt inaqqas is-sistema kollha. Allura dan il-fattur irid jiġi bbilanċjat b'aktar ottimizzazzjonijiet f'postijiet oħra.

ARM64

L-A7, il-proċessur ta '64-bit li jħaddem l-iPhone 5s il-ġdid, mhuwiex biss proċessur ARM regolari b'reġistri usa'. ARM64 fih titjib kbir fuq il-verżjoni l-antika ta' 32-bit.

Proċessur Apple A7.

Reġistru

ARM64 iżomm id-doppju ta' reġistri sħaħ minn 32-bit ARM (oqgħod attent li ma tħawwadx in-numru u l-wisa' tar-reġistri - tkellimna dwar il-wisa' fit-taqsima "64-bit". Allura ARM64 għandu kemm reġistri wesgħin id-doppju kif ukoll id-doppju reġistri). L-ARM ta’ 32 bit għandu 16-il reġistru ta’ numru sħiħ: kontur tal-programm wieħed (PC - fih in-numru tal-istruzzjoni kurrenti), pointer tal-munzell (pointer għal funzjoni li qed issir), reġistru tal-link (pointer għar-ritorn wara t-tmiem). tal-funzjoni), u t-13 li jifdal huma għall-użu tal-applikazzjoni. Madankollu, l-ARM64 għandu 32 reġistru sħiħ, inkluż reġistru wieħed żero, reġistru tal-link, frame pointer (simili għal stack pointer), u wieħed riservat għall-futur. Dan iħallilna 28 reġistru għall-użu tal-applikazzjoni, aktar mid-doppju tal-ARM 32-bit. Fl-istess ħin, l-ARM64 irdoppja n-numru ta 'reġistri tan-numru floating-point (FPU) minn 16 għal 32 reġistru ta' 128-bit.

Imma għaliex in-numru ta' reġistri huwa daqshekk importanti? Il-memorja ġeneralment tkun aktar bil-mod mill-kalkoli tas-CPU u l-qari/kitba jista 'jieħu żmien twil ħafna. Dan jagħmel lill-proċessur veloċi jkollu jibqa' jistenna l-memorja u aħna nilħqu l-limitu tal-veloċità naturali tas-sistema. Il-proċessuri jippruvaw jaħbu dan l-iżvantaġġ b'saffi ta 'buffers, iżda anke l-iktar wieħed mgħaġġel (L1) għadu aktar bil-mod mill-kalkolu tal-proċessur. Madankollu, ir-reġistri huma ċelloli tal-memorja direttament fil-proċessur u l-qari/kitba tagħhom huwa mgħaġġel biżżejjed biex ma jrattabx il-proċessur. In-numru ta 'reġistri prattikament ifisser l-ammont tal-memorja l-aktar mgħaġġla għall-kalkoli tal-proċessur, li jaffettwa ħafna l-veloċità tas-sistema kollha.

Fl-istess ħin, din il-veloċità teħtieġ appoġġ tajjeb ta 'ottimizzazzjoni mill-kompilatur sabiex il-lingwa tkun tista' tuża dawn ir-reġistri u ma jkollhiex għalfejn taħżen kollox fl-applikazzjoni ġenerali (il-mod il-mod) memorja.

Sett ta 'struzzjonijiet

ARM64 iġib ukoll bidliet kbar fis-sett ta 'struzzjonijiet. Sett ta' struzzjonijiet huwa sett ta' operazzjonijiet atomiċi li proċessur jista' jwettaq (eż. 'ADD register1 register2' iżid in-numri f'żewġ reġistri). Il-funzjonijiet disponibbli għal-lingwi individwali huma komposti minn dawn l-istruzzjonijiet. Funzjonijiet aktar kumplessi għandhom jesegwixxu aktar struzzjonijiet, sabiex ikunu jistgħu jkunu aktar bil-mod.

Ġodda fl-ARM64 huma struzzjonijiet għall-encryption AES, funzjonijiet hash SHA-1 u SHA-256. Allura minflok implimentazzjoni kumplessa, il-lingwa biss se ssejjaħ din l-istruzzjoni - li se ġġib veloċità enormi għall-komputazzjoni ta 'funzjonijiet bħal dawn u nisperaw miżjuda sigurtà fl-applikazzjonijiet. eż. it-Touch ID il-ġdid juża wkoll dawn l-istruzzjonijiet fil-kriptaġġ, li jippermetti veloċità u sigurtà reali (fit-teorija, attakkant ikollu jimmodifika l-proċessur innifsu biex jaċċessa d-data - li mhux prattiku biex ngħidu l-inqas minħabba d-daqs minjatura tiegħu).

Kompatibilità ma '32bit

Huwa importanti li wieħed isemmi li l-A7 jista' jaħdem bis-sħiħ fil-modalità 32-bit mingħajr il-ħtieġa ta' emulazzjoni. Ifisser li l-iPhone 5s il-ġdid jista 'jmexxi applikazzjonijiet miġbura fuq ARM ta' 32 bit mingħajr ebda tnaqqis. Madankollu, allura ma jistax juża l-funzjonijiet il-ġodda ARM64, għalhekk huwa dejjem utli li tagħmel bini speċjali biss għall-A7, li għandha taħdem ħafna aktar malajr.

Bidliet fir-runtime

Runtime huwa l-kodiċi li jżid funzjonijiet mal-lingwa ta 'programmar, li huwa kapaċi juża waqt li l-applikazzjoni tkun qed taħdem, sa wara t-traduzzjoni. Peress li Apple m'għandux għalfejn iżżomm il-kompatibilità tal-applikazzjoni (li binarju ta '64-bit jaħdem fuq 32-bit), jistgħu jaffordjaw li jagħmlu ftit aktar titjib fil-lingwa Objective-C.

Waħda minnhom hija l-hekk imsejħa pointer tagged (indikatur immarkat). Normalment, oġġetti u indikaturi għal dawk l-oġġetti huma maħżuna f'partijiet separati tal-memorja. Madankollu, tipi ġodda pointer jippermettu klassijiet bi ftit dejta biex jaħżnu oġġetti direttament fil-pointer. Dan il-pass jelimina l-ħtieġa li tiġi allokata memorja direttament għall-oġġett, sempliċement toħloq pointer u l-oġġett ġewwa fih. Tagged pointers huma appoġġjati biss fl-arkitettura 64-bit anke minħabba l-fatt li m'għadx hemm spazju biżżejjed f'pointer 32-bit biex taħżen biżżejjed data utli. Għalhekk, iOS, b'differenza OS X, għadu ma appoġġjax din il-karatteristika. Madankollu, bil-wasla ta 'ARM64, dan qed jinbidel, u iOS qabad ma' OS X f'dan ir-rigward ukoll.

Għalkemm il-pointers huma twal 64 bit, fuq l-ARM64 jintużaw biss 33 bit għall-indirizz tal-pointer stess. U jekk nistgħu niżvelaw b'mod affidabbli l-bqija tal-pointer bits, nistgħu nużaw dan l-ispazju biex naħżnu data addizzjonali - bħal fil-każ tal-pointers immarkati msemmija. Kunċettwalment, din hija waħda mill-akbar bidliet fl-istorja ta 'Objettiv-C, għalkemm mhix karatteristika kummerċjabbli - għalhekk ħafna utenti mhux se jkunu jafu kif Apple qed timxi 'l quddiem Objective-C.

Fir-rigward tad-dejta utli li tista 'tiġi maħżuna fl-ispazju li jifdal ta' tali pointer tagged, Objective-C, per eżempju, issa qed jużaha biex taħżen l-hekk imsejjaħ għadd ta' referenza (numru ta' referenzi). Preċedentement, l-għadd ta 'referenza kien maħżun f'post differenti fil-memorja, f'tabella hash ippreparata għaliha, iżda dan jista' jnaqqas is-sistema kollha fil-każ ta 'numru kbir ta' sejħiet alloc/dealloc/retain/release. It-tabella kellha tissakkar minħabba s-sigurtà tal-ħajt, għalhekk l-għadd ta 'referenza ta' żewġ oġġetti f'żewġ ħjut ma setax jinbidel fl-istess ħin. Madankollu, dan il-valur huwa mdaħħal ġdid fil-bqija tal-hekk imsejħa isa indikaturi. Dan huwa vantaġġ u aċċelerazzjoni oħra li ma jidhrux, iżda enormi fil-futur. Madankollu, dan qatt ma jista 'jinkiseb f'arkitettura ta' 32-bit.

Informazzjoni dwar oġġetti assoċjati, kemm jekk l-oġġett ikunx referenzjat b'mod dgħajjef, jekk huwiex meħtieġ li jiġi ġġenerat distruttur għall-oġġett, eċċ., Hija wkoll imdaħħla ġdida fil-post li fadal ta 'pointers għall-oġġetti.Grazzi għal din l-informazzjoni, l-Objettiv-C runtime huwa kapaċi jħaffef b'mod fundamentali r-runtime, li huwa rifless fil-veloċità ta 'kull applikazzjoni. Mill-ittestjar, dan ifisser madwar 40-50% ta 'veloċità tas-sejħiet kollha ta' ġestjoni tal-memorja. Biss billi taqleb għal 64-bit pointers u tuża dan l-ispazju ġdid.

Konklużjoni

Għalkemm il-kompetituri se jippruvaw ixerrdu l-idea li l-pass għal arkitettura 64-bit mhuwiex meħtieġ, diġà taf li din hija biss opinjoni mhux infurmata ħafna. Veru li taqleb għal 64-bit mingħajr ma tadatta l-lingwa jew l-applikazzjonijiet tiegħek ma verament ifisser xejn – saħansitra jnaqqas is-sistema kollha. Iżda l-A7 il-ġdid juża ARM64 modern b'sett ġdid ta 'struzzjonijiet, u Apple ħadet l-inkwiet biex timmodernizza l-lingwa Objective-C kollha u tieħu vantaġġ mill-kapaċitajiet il-ġodda - għalhekk il-veloċità mwiegħda.

Hawnhekk semmejna numru kbir ta' raġunijiet għaliex arkitettura ta' 64 bit hija l-pass it-tajjeb 'il quddiem. Hija rivoluzzjoni oħra "taħt il-barnuża", li grazzi għaliha Apple se tipprova tibqa 'fuq quddiem mhux biss bid-disinn, l-interface tal-utent u l-ekosistema rikka, iżda prinċipalment bl-aktar teknoloġiji moderni fis-suq.

Sors: mikeash.com
.