Pa ipolowo

Mike Ash igbẹhin lori re bulọọgi awọn ilolu to wulo ti yi pada si 64-bit faaji ni iPhone 5S. Nkan yii fa lori awọn awari rẹ.

Idi fun ọrọ yii jẹ pataki nitori iye nla ti alaye ti ko tọ ti ntan nipa kini iPhone 5s tuntun pẹlu ero isise ARM 64-bit gangan tumọ si fun awọn olumulo ati ọja naa. Nibi a yoo gbiyanju lati mu alaye idi nipa iṣẹ ṣiṣe, awọn agbara ati awọn ilolu ti iyipada yii fun awọn olupilẹṣẹ.

"64 die-die"

Awọn ẹya meji ti ero isise kan wa ti aami “X-bit” le tọka si - iwọn awọn iforukọsilẹ odidi ati iwọn awọn itọka. O da, lori ọpọlọpọ awọn ilana igbalode awọn iwọn wọnyi jẹ kanna, nitorinaa ninu ọran ti A7 eyi tumọ si awọn iforukọsilẹ odidi 64-bit ati awọn itọka 64-bit.

Sibẹsibẹ, o ṣe pataki bakanna lati tọka si kini “64bit” KO tumọ si: Ramu ti ara adirẹsi iwọn. Nọmba awọn die-die lati ṣe ibasọrọ pẹlu Ramu (nitorinaa iye Ramu ti ẹrọ le ṣe atilẹyin) ko ni ibatan si nọmba awọn iwọn Sipiyu. Awọn ilana ARM ni nibikibi laarin awọn adirẹsi 26- ati 40-bit ati pe o le yipada ni ominira ti eto iyokù.

  • Data akero iwọn. Iye data ti o gba lati Ramu tabi iranti ifipamọ jẹ bakanna ni ominira ti ifosiwewe yii. Olukuluku ilana isise le beere yatọ si oye akojo ti data, sugbon ti won ti wa ni boya rán ni chunks tabi gba diẹ ẹ sii ju nilo lati iranti. O da lori iwọn ti kuatomu data. IPhone 5 ti gba data tẹlẹ lati iranti ni 64-bit quanta (ati pe o ni ero isise 32-bit), ati pe a le ba pade awọn iwọn to awọn iwọn 192.
  • Ohunkohun jẹmọ si lilefoofo ojuami. Iwọn iru awọn iforukọsilẹ (FPU) tun jẹ ominira ti awọn iṣẹ inu ti ero isise naa. ARM ti nlo FPU 64-bit lati igba ṣaaju ARM64 (processor ARM 64-bit).

Gbogbogbo anfani ati alailanfani

Ti a ba ṣe afiwe bibẹẹkọ aami 32bit ati awọn faaji 64bit, wọn kii ṣe iyatọ rara. Eyi jẹ ọkan ninu awọn idi fun iporuru gbogbogbo ti gbogbo eniyan n wa idi kan ti Apple n gbe si 64bit ni awọn ẹrọ alagbeka daradara. Sibẹsibẹ, gbogbo rẹ wa lati awọn aye pato ti ero isise A7 (ARM64) ati bii Apple ṣe nlo rẹ, kii ṣe lati otitọ pe ero isise naa ni faaji 64-bit kan.

Sibẹsibẹ, ti a ba tun wo awọn iyatọ laarin awọn ile-iṣọ meji wọnyi, a yoo rii awọn iyatọ pupọ. Ohun ti o han gbangba ni pe awọn iforukọsilẹ odidi 64-bit le mu awọn odidi 64-bit ṣiṣẹ daradara siwaju sii. Paapaa ṣaaju, o ṣee ṣe lati ṣiṣẹ pẹlu wọn lori awọn ilana 32-bit, ṣugbọn eyi tumọ si pinpin wọn si awọn ege gigun 32-bit, eyiti o fa awọn iṣiro ti o lọra. Nitorinaa ero isise 64-bit le ṣe iṣiro gbogbogbo pẹlu awọn oriṣi 64-bit ni iyara bi pẹlu awọn 32-bit. Eyi tumọ si pe awọn ohun elo ti o lo awọn oriṣi 64-bit ni gbogbogbo le ṣiṣẹ ni iyara pupọ lori ero isise 64-bit kan.

Botilẹjẹpe 64bit ko ni ipa ni apapọ iye Ramu ti ero isise le lo, o le jẹ ki o rọrun lati ṣiṣẹ pẹlu awọn chunks Ramu nla ninu eto kan. Eyikeyi eto kan ti nṣiṣẹ lori ero isise 32-bit nikan ni o ni nipa 4 GB ti aaye adirẹsi. Ni akiyesi pe ẹrọ ṣiṣe ati awọn ile-ikawe boṣewa gba nkan kan, eyi fi eto naa silẹ pẹlu ibikan laarin 1-3 GB fun lilo ohun elo. Sibẹsibẹ, ti eto 32-bit ba ni diẹ sii ju 4 GB ti Ramu, lilo iranti yẹn jẹ idiju diẹ sii. A ni lati lo lati fi ipa mu ẹrọ ṣiṣe lati ṣe maapu awọn ṣoki iranti nla wọnyi fun eto wa (agbara iranti), tabi a le pin eto naa si awọn ilana lọpọlọpọ (nibiti ilana kọọkan tun ni imọ-jinlẹ 4 GB ti iranti wa fun sisọ taara).

Sibẹsibẹ, awọn “hakii” wọnyi nira ati o lọra pe o kere ju awọn ohun elo lo wọn. Ni iṣe, lori ero isise 32-bit, eto kọọkan yoo lo 1-3 GB ti iranti nikan, ati diẹ sii Ramu ti o wa ni a le lo lati ṣiṣe awọn eto pupọ ni akoko kanna tabi lo iranti yii bi ifipamọ (caching). Awọn lilo wọnyi wulo, ṣugbọn a fẹ ki eto eyikeyi le ni irọrun lo awọn ege iranti ti o tobi ju 4GB.

Bayi a wa si ẹtọ loorekoore (ti ko tọ) pe laisi diẹ sii ju 4GB ti iranti, faaji 64-bit ko wulo. Aaye adirẹsi ti o tobi ju wulo paapaa lori eto pẹlu iranti kere si. Awọn faili ti o ya aworan iranti jẹ ohun elo ti o ni ọwọ nibiti apakan ti awọn akoonu faili ti ni asopọ pẹlu ọgbọn si iranti ilana laisi gbogbo faili ni lati kojọpọ sinu iranti. Nitorinaa, eto naa le, fun apẹẹrẹ, maa ṣe ilana awọn faili nla ni ọpọlọpọ igba ti o tobi ju agbara Ramu lọ. Lori eto 32-bit kan, iru awọn faili nla bẹẹ ko le ṣe iranti iranti ni igbẹkẹle, lakoko ti o jẹ lori eto 64-bit, o jẹ akara oyinbo kan, o ṣeun si aaye adirẹsi ti o tobi pupọ.

Sibẹsibẹ, iwọn nla ti awọn itọka tun mu aila-nla nla kan wa: bibẹẹkọ awọn eto aami nilo iranti diẹ sii lori ero isise 64-bit (awọn itọka nla wọnyi ni lati wa ni ipamọ ni ibikan). Niwọn igba ti awọn itọka jẹ apakan loorekoore ti awọn eto, iyatọ yii le di ẹru kaṣe, eyiti o fa ki gbogbo eto ṣiṣẹ losokepupo. Nitorinaa ni irisi, a le rii pe ti a ba kan yipada faaji ero isise si 64-bit, yoo fa fifalẹ gbogbo eto naa. Nitorinaa ifosiwewe yii ni lati ni iwọntunwọnsi nipasẹ awọn iṣapeye diẹ sii ni awọn aye miiran.

ARM64

A7 naa, ero isise 64-bit ti n ṣe agbara iPhone 5s tuntun, kii ṣe ero isise ARM deede pẹlu awọn iforukọsilẹ gbooro. ARM64 ni awọn ilọsiwaju pataki lori agbalagba, ẹya 32-bit.

Apple A7 isise.

Iforukọsilẹ

ARM64 di ilọpo meji awọn iforukọsilẹ odidi bi 32-bit ARM (ṣọra ki o maṣe daamu nọmba ati iwọn awọn iforukọsilẹ - a sọrọ nipa iwọn ni apakan “64-bit”. Nitorina ARM64 ni awọn iforukọsilẹ mejeeji ni ilọpo meji bi awọn iforukọsilẹ fife ati ilọpo meji ni ọpọlọpọ. awọn iforukọsilẹ). 32-bit ARM ni awọn iforukọsilẹ odidi 16: counter eto kan (PC - ni nọmba ti itọnisọna lọwọlọwọ), itọka akopọ (itọkasi si iṣẹ kan ti nlọ lọwọ), iforukọsilẹ ọna asopọ (itọkasi si ipadabọ lẹhin ipari ti iṣẹ naa), ati awọn ti o ku 13 wa fun lilo ohun elo. Sibẹsibẹ, ARM64 ni awọn iforukọsilẹ odidi 32, pẹlu iforukọsilẹ odo kan, iforukọsilẹ ọna asopọ, itọka fireemu kan (bii itọka akopọ), ati ọkan ti a fi pamọ fun ọjọ iwaju. Eyi fi wa silẹ pẹlu awọn iforukọsilẹ 28 fun lilo ohun elo, diẹ sii ju ilọpo meji ARM 32-bit. Ni akoko kanna, ARM64 ṣe ilọpo meji nọmba ti awọn iforukọsilẹ aaye lilefoofo (FPU) lati awọn iforukọsilẹ 16 si 32 128-bit.

Ṣugbọn kilode ti nọmba awọn iforukọsilẹ jẹ pataki? Iranti ni gbogbogbo losokepupo ju awọn iṣiro Sipiyu ati kika/kikọ le gba akoko pipẹ pupọ. Eyi yoo jẹ ki ero isise iyara ni lati duro de iranti ati pe a yoo lu opin iyara adayeba ti eto naa. Awọn ilana n gbiyanju lati tọju ailera yii pẹlu awọn ipele ti awọn buffers, ṣugbọn paapaa ọkan ti o yara ju (L1) tun lọra ju iṣiro ero isise naa. Sibẹsibẹ, awọn iforukọsilẹ jẹ awọn sẹẹli iranti taara ninu ero isise ati kika / kikọ wọn yara to lati ma fa fifalẹ ero isise naa. Nọmba awọn iforukọsilẹ ni adaṣe tumọ si iye iranti iyara julọ fun awọn iṣiro ero isise, eyiti o ni ipa lori iyara ti gbogbo eto.

Ni akoko kanna, iyara yii nilo atilẹyin iṣapeye to dara lati ọdọ olupilẹṣẹ, ki ede le lo awọn iforukọsilẹ wọnyi ati pe ko ni lati tọju ohun gbogbo ni ohun elo gbogbogbo (o lọra) iranti.

Eto itọnisọna

ARM64 tun mu awọn ayipada nla wa si eto itọnisọna. Eto itọnisọna jẹ eto awọn iṣẹ atomiki ti ero isise le ṣe (fun apẹẹrẹ 'ADD register1 register2' ṣe afikun awọn nọmba ni awọn iforukọsilẹ meji). Awọn iṣẹ ti o wa fun awọn ede kọọkan ni awọn ilana wọnyi. Awọn iṣẹ eka diẹ sii gbọdọ ṣiṣẹ awọn ilana diẹ sii, nitorinaa wọn le lọra.

Titun ni ARM64 jẹ awọn ilana fun fifi ẹnọ kọ nkan AES, SHA-1 ati awọn iṣẹ hash SHA-256. Nitorinaa dipo imuse idiju, ede nikan ni yoo pe itọnisọna yii - eyiti yoo mu iyara nla wa si iṣiro iru awọn iṣẹ bẹ ati ni ireti ṣafikun aabo ni awọn ohun elo. Fun apẹẹrẹ. ID Fọwọkan tuntun tun lo awọn itọnisọna wọnyi ni fifi ẹnọ kọ nkan, gbigba fun iyara gidi ati aabo (ni imọ-jinlẹ, ikọlu yoo ni lati yipada ero isise naa funrararẹ lati wọle si data naa - eyiti ko wulo lati sọ pe o kere julọ fun iwọn kekere rẹ).

Ibamu pẹlu 32bit

O ṣe pataki lati darukọ pe A7 le ṣiṣẹ ni kikun ni ipo 32-bit laisi iwulo fun emulation. O tumọ si pe iPhone 5s tuntun le ṣiṣe awọn ohun elo ti a ṣajọ lori 32-bit ARM laisi idinku eyikeyi. Sibẹsibẹ, lẹhinna ko le lo anfani ti awọn iṣẹ ARM64 tuntun, nitorinaa o jẹ iwulo nigbagbogbo lati ṣe ipilẹ pataki kan fun A7, eyiti o yẹ ki o ṣiṣẹ ni iyara pupọ.

Awọn ayipada akoko ṣiṣe

Akoko ṣiṣe jẹ koodu ti o ṣafikun awọn iṣẹ si ede siseto, eyiti o ni anfani lati lo lakoko ti ohun elo n ṣiṣẹ, titi di lẹhin itumọ. Niwọn bi Apple ko nilo lati ṣetọju ibaramu ohun elo (pe alakomeji 64-bit nṣiṣẹ lori 32-bit), wọn le ni anfani lati ṣe awọn ilọsiwaju diẹ sii si ede Objective-C.

Ọkan ninu wọn ni a npe ni afi ijuboluwole (Atọka ti o samisi). Ni deede, awọn nkan ati awọn itọka si awọn nkan wọnyẹn wa ni ipamọ si awọn ẹya lọtọ ti iranti. Sibẹsibẹ, awọn oriṣi itọka tuntun gba awọn kilasi laaye pẹlu data kekere lati tọju awọn nkan taara ni itọka. Igbesẹ yii yọkuro iwulo lati pin iranti taara fun ohun naa, kan ṣẹda itọka kan ati nkan inu rẹ. Awọn itọka ti a samisi nikan ni atilẹyin ni faaji 64-bit tun nitori otitọ pe ko si aaye to mọ ni itọka 32-bit lati fipamọ data to wulo. Nitorinaa, iOS, laisi OS X, ko tii ṣe atilẹyin ẹya yii. Sibẹsibẹ, pẹlu dide ti ARM64, eyi n yipada, ati iOS ti mu pẹlu OS X ni iyi yii daradara.

Botilẹjẹpe awọn itọka jẹ awọn iwọn 64 gigun, lori ARM64 nikan awọn ege 33 nikan ni a lo fun adirẹsi itọka tirẹ. Ati pe ti a ba ni anfani lati ni igbẹkẹle unmask iyoku awọn iwọn itọka, a le lo aaye yii lati ṣafipamọ data afikun - gẹgẹbi ninu ọran ti awọn itọka ti a mẹnuba. Ni imọran, eyi jẹ ọkan ninu awọn ayipada ti o tobi julọ ninu itan-akọọlẹ ti Objective-C, botilẹjẹpe kii ṣe ẹya-ara ọja - nitorinaa ọpọlọpọ awọn olumulo kii yoo mọ bii Apple ṣe n gbe Objective-C siwaju.

Bi fun data ti o wulo ti o le wa ni ipamọ ni aaye to ku ti iru itọka ti a samisi, Objective-C, fun apẹẹrẹ, nlo bayi lati tọju ohun ti a npe ni. itọkasi kika (nọmba awọn itọkasi). Ni iṣaaju, a ti fipamọ kika itọkasi ni aaye ti o yatọ si iranti, ni tabili hash ti a pese sile fun rẹ, ṣugbọn eyi le fa fifalẹ gbogbo eto ni ọran ti nọmba nla ti alloc / dealloc / idaduro / awọn ipe idasilẹ. Tabili ni lati wa ni titiipa nitori aabo okun, nitorina iye itọkasi ti awọn nkan meji ninu awọn okun meji ko le yipada ni akoko kanna. Sibẹsibẹ, yi iye ti wa ni titun fi sii sinu awọn iyokù ti ki-ti a npe isa awọn itọkasi. Eyi jẹ aibikita miiran, ṣugbọn anfani nla ati isare ni ọjọ iwaju. Sibẹsibẹ, eyi ko le ṣe aṣeyọri ni faaji 32-bit kan.

Alaye nipa awọn nkan ti o somọ, boya ohun naa jẹ itọkasi lailagbara, boya o jẹ dandan lati ṣe ipilẹṣẹ iparun fun ohun naa, ati bẹbẹ lọ, tun ti fi sii tuntun sinu aaye to ku ti awọn itọka si awọn nkan naa. Ṣeun si alaye yii, Objective-C asiko ṣiṣe ni anfani lati ṣe iyara akoko asiko ṣiṣe, eyiti o han ni iyara ohun elo kọọkan. Lati idanwo, eyi tumọ si iyara 40-50% ti gbogbo awọn ipe iṣakoso iranti. O kan nipa yiyipada si awọn itọka 64-bit ati lilo aaye tuntun yii.

Ipari

Botilẹjẹpe awọn oludije yoo gbiyanju lati tan imọran pe gbigbe si faaji 64-bit ko wulo, iwọ yoo ti mọ tẹlẹ pe eyi jẹ imọran ti ko ni alaye pupọ. Otitọ ni pe yiyi pada si 64-bit laisi iyipada ede rẹ tabi awọn ohun elo ko tumọ si nkankan gaan - paapaa fa fifalẹ gbogbo eto naa. Ṣugbọn A7 tuntun nlo ARM64 ode oni pẹlu eto itọnisọna tuntun, Apple si ti gba wahala lati ṣe imudojuiwọn gbogbo ede Objective-C ati lo anfani awọn agbara tuntun - nitorinaa iyara ti a ṣe ileri.

Nibi a ti mẹnuba nọmba nla ti awọn idi idi ti faaji 64-bit jẹ igbesẹ ti o tọ siwaju. O jẹ Iyika miiran “labẹ Hood”, ọpẹ si eyiti Apple yoo gbiyanju lati duro ni iwaju kii ṣe pẹlu apẹrẹ nikan, wiwo olumulo ati ilolupo ọlọrọ, ṣugbọn ni akọkọ pẹlu awọn imọ-ẹrọ igbalode julọ lori ọja.

Orisun: mikeash.com
.