Akatona ny doka

Mike Ash natokana tao amin'ny bilaoginy ny fiantraikany azo ampiharina amin'ny fifindrana amin'ny maritrano 64-bit ao amin'ny iPhone 5S. Ity lahatsoratra ity dia miresaka momba ny zavatra hitany.

Ny anton'ity lahatsoratra ity dia noho ny habetsahan'ny vaovao diso miely momba ny dikan'ny iPhone 5s vaovao miaraka amin'ny processeur ARM 64-bit ho an'ny mpampiasa sy ny tsena. Eto isika dia hiezaka ny hitondra vaovao mivaingana momba ny zava-bita, ny fahaiza-manao ary ny fiantraikan'ity tetezamita ity ho an'ny mpamorona.

"64 bit"

Misy ampahany roa amin'ny processeur iray izay azon'ny marika "X-bit" manondro - ny sakan'ny rejisitra integer sy ny sakan'ny tondro. Soa ihany fa amin'ny ankamaroan'ny processeur maoderina dia mitovy ny sakany, ka amin'ny tranga A7 dia midika izany fa 64-bit integer registers sy 64-bit pointers.

Na izany aza, zava-dehibe ihany koa ny manamarika ny dikan'ny hoe "64bit": Haben'ny adiresy ara-batana RAM. Ny isan'ny bit hifandraisana amin'ny RAM (noho izany ny habetsaky ny RAM azon'ny fitaovana iray tohana) dia tsy mifandray amin'ny isan'ny bits CPU. Ny processeur ARM dia manana adiresy 26- sy 40-bit na aiza na aiza ary azo ovaina tsy miankina amin'ny rafitra hafa.

  • Haben'ny bus data. Ny habetsaky ny angona azo avy amin'ny RAM na ny fitadidiana buffer dia tsy miankina amin'io anton-javatra io ihany koa. Ny torolalan'ny processeur tsirairay dia mety hangataka angon-drakitra samihafa, saingy alefa amin'ny ampahany izy ireo na mahazo mihoatra noho izay ilaina amin'ny fitadidiana. Miankina amin'ny haben'ny data quantum izany. Ny iPhone 5 dia efa mahazo angona avy amin'ny fitadidiana amin'ny quanta 64-bit (ary manana processeur 32-bit), ary afaka mifanena amin'ny habe hatramin'ny 192 bit.
  • Izay rehetra mifandraika amin'ny teboka mitsingevana. Ny haben'ny rejisitra toy izany (FPU) dia tsy miankina amin'ny fiasan'ny processeur. ARM dia nampiasa FPU 64-bit hatramin'ny ARM64 (64-bit ARM processeur).

Ny tombony sy ny fatiantoka ankapobeny

Raha ampitahaintsika ny maritrano 32bit sy 64bit mitovy amin'ny hafa, dia tsy mitovy amin'ny ankapobeny izy ireo. Izany no iray amin'ireo antony mahatonga ny fisavoritahana ankapoben'ny vahoaka mitady ny antony hifindran'i Apple amin'ny 64bit amin'ny fitaovana finday ihany koa. Na izany aza, izany rehetra izany dia avy amin'ny mari-pamantarana manokana amin'ny processeur A7 (ARM64) sy ny fomba fampiasan'i Apple azy, fa tsy avy amin'ny hoe manana rafitra 64-bit ny processeur.

Na izany aza, raha mbola mijery ny fahasamihafana misy eo amin'ireo maritrano roa ireo isika dia hahita fahasamihafana maromaro. Ny mazava dia ny rejistra integer 64-bit dia afaka mitantana integer 64-bit amin'ny fomba mahomby kokoa. Na dia teo aloha aza dia azo atao ny miara-miasa amin'izy ireo amin'ny processeur 32-bit, saingy matetika izany dia midika hoe mizara azy ireo amin'ny ampahany lava 32-bit, izay nahatonga ny kajy miadana kokoa. Noho izany, ny processeur 64-bit dia afaka manao kajy amin'ny karazana 64-bit haingana toy ny amin'ny 32-bit. Midika izany fa ny fampiharana izay mampiasa karazana 64-bit amin'ny ankapobeny dia afaka mandeha haingana kokoa amin'ny processeur 64-bit.

Na dia tsy misy fiantraikany amin'ny totalin'ny RAM azon'ny processeur aza ny 64bit, dia mety ho mora kokoa ny miasa amin'ny ampahany betsaka amin'ny RAM amin'ny programa iray. Ny programa tokana mandeha amin'ny processeur 32-bit dia tsy manana afa-tsy 4 GB ny habaka adiresy. Raha raisina fa ny rafitra fandidiana sy ny trano famakiam-boky mahazatra dia maka zavatra, dia mamela ny programa amin'ny toerana eo anelanelan'ny 1-3 GB ho an'ny fampiasana fampiharana. Na izany aza, raha misy rafitra 32-bit manana RAM mihoatra ny 4 GB, ny fampiasana izany fahatsiarovana izany dia somary sarotra kokoa. Tsy maintsy manery ny rafitra fiasana hanao sarintany ireo fitadidiana lehibe kokoa ireo ho an'ny programantsika isika (virtoaly fitadidiana), na afaka mizara ny programa amin'ny dingana maromaro (izay ny dingana tsirairay indray dia manana fahatsiarovana 4 GB azo alaina mivantana).

Na izany aza, ireo "hacks" ireo dia tena sarotra sy miadana ka ny fampiharana kely indrindra no mampiasa azy ireo. Amin'ny fampiharana, amin'ny processeur 32-bit, ny programa tsirairay dia tsy hampiasa afa-tsy 1-3 GB ny fitadidiana, ary ny RAM azo ampiasaina kokoa dia azo ampiasaina amin'ny fampandehanana programa maromaro miaraka na mampiasa io fahatsiarovana io ho buffer (caching). Azo ampiharina ireo fampiasa ireo, saingy tianay ny programa rehetra mba ho afaka mampiasa mora foana ny fahatsiarovana lehibe kokoa noho ny 4GB.

Ankehitriny isika dia tonga amin'ny filazana matetika (tena diso) fa raha tsy misy fahatsiarovana mihoatra ny 4GB dia tsy misy ilàna azy ny maritrano 64-bit. Ny habaka adiresy lehibe kokoa dia ilaina na dia amin'ny rafitra kely fitadidiana aza. Ny rakitra voarakitra fahatsiarovana dia fitaovana mora ampiasaina izay ampifandraisina amin'ny lojika amin'ny fitadidian'ilay rakitra ny ampahany amin'ny votoatin'ny rakitra nefa tsy mila ampidirina ao anaty fitadidiana ny rakitra manontolo. Noho izany, ny rafitra dia afaka, ohatra, manodina tsikelikely ny rakitra lehibe im-betsaka noho ny fahafahan'ny RAM. Amin'ny rafitra 32-bit, ny rakitra lehibe toy izany dia tsy azo atokisana amin'ny fitadidiana-sarintany, fa amin'ny rafitra 64-bit dia sombin-tsakafo izy io, noho ny habaka adiresy lehibe kokoa.

Na izany aza, ny haben'ny tondro lehibe dia mitondra fatiantoka lehibe ihany koa: raha tsy izany dia mila fitadidiana bebe kokoa amin'ny processeur 64-bit ny programa mitovy (tsy maintsy tehirizina any amin'ny toerana iray ireo tondro lehibe kokoa ireo). Satria ny tondro dia ampahany matetika amin'ny programa, io fahasamihafana io dia mety mavesatra ny cache, izay mahatonga ny rafitra manontolo ho miadana kokoa. Noho izany, raha jerena ny fomba fijery, dia hitantsika fa raha nanova ny rafitra processeur ho 64-bit fotsiny isika, dia hampiadana ny rafitra iray manontolo izany. Noho izany dia tsy maintsy ampifandanjaina amin'ny fanatsarana bebe kokoa any amin'ny toerana hafa io anton-javatra io.

ARM64

Ny A7, ilay processeur 64-bit mitondra ny iPhone 5s vaovao, dia tsy processeur ARM mahazatra misy rejisitra midadasika kokoa. Ny ARM64 dia misy fanatsarana lehibe amin'ny dikan-teny 32-bit taloha.

Apple A7 processeur.

lisitra

Ny ARM64 dia mitazona rejisitra integer avo roa heny noho ny ARM 32-bit (tandremo sao afangaro ny isa sy ny sakan'ny rejisitra - niresaka momba ny sakany izahay tao amin'ny fizarana "64-bit". rejisitra). Ny ARM 64-bit dia manana rejisitra integer 32: counter programme iray (PC - misy ny laharan'ny fampianarana amin'izao fotoana izao), pointer stack (tondro ho an'ny asa iray mandeha), rejistra rohy (tondro hiverina aorian'ny asa. vita), ary ny 16 sisa dia ho an'ny fampiasana fampiharana. Na izany aza, ny ARM13 dia manana rejisitra integer 64, ao anatin'izany ny rejisitra aotra iray, ny rejisitra rohy, ny tondro firafitra (mitovy amin'ny tondro stack), ary ny iray natokana ho an'ny ho avy. Izany dia mamela antsika manana rejisitra 32 ho an'ny fampiasana fampiharana, mihoatra ny avo roa heny ny ARM 28-bit. Mandritra izany fotoana izany, ny ARM32 dia nampitombo avo roa heny ny isan'ny rejisitra mitsingevana (FPU) avy amin'ny 64 ka hatramin'ny 16 32-bit.

Fa maninona no zava-dehibe ny isan'ny rejisitra? Amin'ny ankapobeny dia miadana kokoa noho ny kajy CPU ny fitadidiana ary mety haharitra ela ny famakiana/ny fanoratana. Izany dia hahatonga ny processeur haingana tsy maintsy miandry ny fitadidiana ary hahatratra ny fetra voajanahary amin'ny rafitra. Miezaka manafina an'io kilema io amin'ny soson'ny buffers ny processeurs, fa na ny haingana indrindra (L1) aza dia mbola miadana kokoa noho ny kajy ataon'ny processeur. Na izany aza, ny rejisitra dia sela fitadidiana mivantana ao amin'ny processeur ary ny famakiana/ny fanoratana azy dia haingana ampy mba tsy hampiadana ny processeur. Ny isan'ny rejisitra dia midika fa ny habetsahan'ny fahatsiarovana haingana indrindra amin'ny kajy processeur, izay misy fiantraikany be amin'ny hafainganam-pandehan'ny rafitra manontolo.

Mandritra izany fotoana izany, io hafainganam-pandeha io dia mila fanohanana optimization tsara avy amin'ny compiler, mba hahafahan'ny fiteny mampiasa ireo rejisitra ireo ary tsy mila mitahiry ny zava-drehetra ao amin'ny fampiharana ankapobeny (ny miadana) fahatsiarovana.

Fametrahana fampianarana

Ny ARM64 koa dia mitondra fiovana lehibe amin'ny seta fampianarana. Ny seta torolalana dia andiana hetsika atomika azon'ny processeur iray (oh: 'ADD register1 register2' manampy ny isa amin'ny rejisitra roa). Ny fiasa misy amin'ny fiteny tsirairay dia ahitana ireto torolàlana ireto. Ny fiasa sarotra kokoa dia tsy maintsy manatanteraka toromarika bebe kokoa, mba hahatonga azy ireo ho miadana kokoa.

Vaovao ao amin'ny ARM64 dia torolàlana momba ny fanafenana AES, SHA-1 ary SHA-256 hash functions. Noho izany, raha tokony ho fampiharana sarotra, ny fiteny ihany no hiantso an'io torolàlana io - izay hitondra haingana haingana amin'ny kajy ny asa toy izany ary antenaina fa hanana fiarovana amin'ny fampiharana. oh. Ny Touch ID vaovao koa dia mampiasa ireo toromarika ireo amin'ny encryption, mamela ny tena hafainganam-pandeha sy ny fiarovana (amin'ny teoria, ny mpanafika dia tsy maintsy manova ny processeur mihitsy mba hidirana amin'ny angon-drakitra - izay tsy azo atao ny milaza ny kely indrindra amin'ny habeny kely).

Mifanaraka amin'ny 32bit

Zava-dehibe ny manonona fa ny A7 dia afaka mihazakazaka tanteraka amin'ny fomba 32-bit tsy mila emulation. Midika izany fa ny iPhone 5s vaovao dia afaka mitantana rindranasa natambatra amin'ny ARM 32-bit tsy misy fiatoana. Na izany aza, tsy afaka mampiasa ny fiasa ARM64 vaovao izy, noho izany dia mendrika foana ny manamboatra trano manokana ho an'ny A7, izay tokony hihazakazaka haingana kokoa.

Fiovan'ny fotoana fandehanana

Ny Runtime dia ny code izay manampy asa amin'ny fiteny fandaharana, izay azony ampiasaina rehefa mandeha ny fampiharana, mandra-pahatongan'ny fandikana. Satria tsy mila mitazona ny fampifanarahana amin'ny fampiharana i Apple (fa ny binary 64-bit dia mandeha amin'ny 32-bit), dia afaka manao fanatsarana vitsivitsy amin'ny fiteny Objective-C izy ireo.

Ny iray amin'izy ireo dia ilay antsoina hoe tondro misy marika (manondro voamarika). Amin'ny ankapobeny, ny zavatra sy ny tondro ho an'ireo zavatra ireo dia voatahiry ao amin'ny faritra samihafa amin'ny fitadidiana. Na izany aza, ny karazana fanondro vaovao dia mamela ny kilasy misy angona kely hitahiry zavatra mivantana ao amin'ny pointer. Ity dingana ity dia manafoana ny filàna manokana ny fitadidiana mivantana ho an'ny zavatra, mamorona tondro sy ny zavatra ao anatiny. Ny tondro misy marika dia tsy tohana afa-tsy amin'ny maritrano 64-bit ihany koa noho ny tsy fisian'ny toerana ampy intsony amin'ny tondro 32-bit hitahiry angona ilaina. Noho izany, iOS, tsy toy ny OS X, dia tsy mbola nanohana an'io endri-javatra io. Na izany aza, amin'ny fahatongavan'ny ARM64 dia miova izany, ary ny iOS dia nahatratra ny OS X amin'io lafiny io ihany koa.

Na dia 64 bit aza ny pointers, amin'ny ARM64 dia 33 bits ihany no ampiasaina amin'ny adiresin'ny pointer. Ary raha afaka mamaha ny saron-tava sisa amin'ny teboka fanondro isika dia afaka mampiasa ity habaka ity hitahiry angona fanampiny - toy ny amin'ireo tondro voatanisa voalaza. Raha ny hevitra, ity no iray amin'ireo fiovana lehibe indrindra teo amin'ny tantaran'ny Objective-C, na dia tsy endri-javatra azo amidy aza izy io - noho izany dia tsy ho fantatry ny ankamaroan'ny mpampiasa ny fomba nandrosoan'i Apple ny Objective-C.

Raha ny angon-drakitra mahasoa izay azo tehirizina ao amin'ny habaka sisa amin'ny tondro misy marika toy izany, ny Objective-C, ohatra, dia mampiasa azy io hitahiry ilay antsoina hoe isa reference (isan'ny references). Teo aloha dia notehirizina tany amin'ny toerana hafa ho fitadidiana ny fanisana reference, ao anaty latabatra hash nomanina ho azy, saingy mety hampiadana ny rafitra iray manontolo izany raha toa ka misy antso maro alloc/dealloc/retain/release. Voatery nohidiana ny latabatra noho ny fiarovana ny kofehy, ka tsy azo ovaina miaraka ny fanisana zavatra roa amin'ny kofehy roa. Na izany aza, io sanda io dia vao ampidirina amin'ny sisa amin'ny antsoina hoe Isa famantarana. Ity dia iray hafa tsy hita maso, fa tombony lehibe sy fanafainganana amin'ny ho avy. Na izany aza, tsy ho tratra mihitsy izany amin'ny maritrano 32-bit.

Ny fampahalalana momba ny zavatra mifandray, na ny zavatra dia malemy references, na ilaina ny mamorona mpanimba ho an'ny zavatra, sns, dia vao ampidirina ao amin'ny toerana sisa tondro ho an'ny zavatra. Ny runtime dia afaka manafaingana ny fotoana fampandehanana, izay hita taratra amin'ny hafaingan'ny fampiharana tsirairay. Avy amin'ny fitsapana, midika izany fa 40-50% ny hafainganam-pandeha amin'ny antso rehetra momba ny fitantanana fahatsiarovana. Amin'ny alàlan'ny fifindrana amin'ny tondro 64-bit fotsiny ary mampiasa ity habaka vaovao ity.

Famaranana

Na dia hiezaka hanaparitaka ny hevitra aza ny mpifaninana fa tsy ilaina ny fifindrana amin'ny maritrano 64-bit, dia efa fantatrao fa hevitra tsy dia fantatra loatra izany. Marina fa tsy midika na inona na inona ny fifindrana amin'ny 64-bit nefa tsy mampifanaraka ny fiteninao na ny fampiharanao - mampiadana ny rafitra manontolo mihitsy aza izany. Saingy ny A7 vaovao dia mampiasa ARM64 maoderina miaraka amin'ny andiana fampianarana vaovao, ary Apple dia nandray ny olana amin'ny fanavaozana ny fiteny Objective-C manontolo ary manararaotra ireo fahaiza-manao vaovao - noho izany ny hafainganam-pandeha nampanantenaina.

Eto izahay dia niresaka antony marobe mahatonga ny maritrano 64-bit ho dingana tsara. Revolisiona iray hafa "eo ambanin'ny saron-tava" izany, noho izany Apple dia hiezaka ny hijanona eo amin'ny lohalaharana tsy amin'ny famolavolana, ny mpampiasa interface tsara ary ny tontolo iainana manankarena, fa indrindra amin'ny teknolojia maoderina indrindra eny an-tsena.

loharanom-baovao: mikeash.com
.