Vhara shambadzo

Mike Ash akazvitsaurira pa blog yake mhedzisiro inoshanda yekuchinja kune 64-bit architecture mu iPhone 5S. Ichi chinyorwa chinokwevera pane zvaakawana.

Chikonzero cheichi chinyorwa chinonyanya kukonzerwa nehuwandu hwemashoko asiri iwo ari kuparadzirwa pamusoro pezvinorehwa neiyo iPhone 5s ine 64-bit ARM processor inoreva chaizvo kune vashandisi nemusika. Pano tichaedza kuunza ruzivo rwechinangwa nezvekuita, kugona uye zvinorehwa neshanduko iyi kune vanogadzira.

"64 zvishoma"

Pane zvikamu zviviri zve processor iyo iyo "X-bit" label inogona kureva - hupamhi hwemarejista ehuwandu uye hupamhi hweanongedza. Sezvineiwo, pane akawanda emazuva ano ma processors aya upamhi hwakafanana, saka kana iri A7 izvi zvinoreva 64-bit integer register uye 64-bit pointers.

Nekudaro, zvakakosha zvakaenzana kuratidza izvo "64bit" HAZVIREve: RAM kero kero saizi. Huwandu hwemabhiti ekutaurirana neRAM (saka huwandu hwe RAM inogona kutsigira mudziyo) hauna hukama nehuwandu hweCPU bits. ARM processors ane chero pakati pe26- uye 40-bit kero uye inogona kuchinjwa yakazvimiririra kune yese system.

  • Data bhasi size. Huwandu hwe data yakagamuchirwa kubva ku RAM kana buffer memory yakafanana yakazvimirira pane ichi chinhu. Mirayiridzo yega yega processor inogona kukumbira huwandu hwakasiyana hwe data, asi inotumirwa mumachunks kana kugashirwa kupfuura inodiwa kubva mundangariro. Izvo zvinoenderana nehukuru hwe data quantum. Iyo iPhone 5 inotogamuchira data kubva mundangariro mu64-bit quanta (uye ine 32-bit processor), uye isu tinogona kusangana nehukuru kusvika ku192 bits.
  • Chese chine chekuita nekuyangarara point. Saizi yemarejista akadaro (FPU) zvakare yakazvimirira kubva mukati mekushanda kwe processor. ARM yanga ichishandisa 64-bit FPU kubvira isati yasvika ARM64 (64-bit ARM processor).

General zvakanakira nezvayakaipira

Kana tikaenzanisa zvimwe zvakafanana 32bit uye 64bit zvivakwa, kazhinji hazvina kusiyana. Ichi ndicho chimwe chezvikonzero zvekuvhiringidzika kweruzhinji kutsvaga chikonzero nei Apple ichienda ku64bit mune nharembozha zvakare. Nekudaro, zvese zvinouya kubva kune chaiwo maparamita eiyo A7 (ARM64) processor uye mashandisiro ayo Apple, kwete kubva pachokwadi chekuti processor ine 64-bit architecture.

Zvisinei, kana tichiri kutarisa mutsauko pakati pezvivakwa zviviri izvi, tichawana misiyano yakawanda. Chiri pachena ndechekuti 64-bit integer marejista anogona kubata 64-bit integers zvakanyanya. Kunyange zvisati zvaitika, zvaikwanisika kushanda navo pa 32-bit processors, asi izvi zvaiwanzoreva kuvaparadzanisa kuva 32-bit zvidimbu zvirefu, izvo zvakakonzera kuverenga kunononoka. Saka 64-bit processor inogona kazhinji kuverengera ne64-bit mhando nekukurumidza sekunge ne32-bit iwo. Izvi zvinoreva kuti maapplication anowanzo shandisa 64-bit marudzi anogona kumhanya zvakanyanya pane 64-bit processor.

Kunyange zvazvo 64bit isingakanganisi huwandu hwe RAM iyo processor inogona kushandisa, inogona kuita kuti zvive nyore kushanda nemachunks makuru e RAM muchirongwa chimwe. Chero chirongwa chimwechete chinomhanya pane 32-bit processor inongove ne 4 GB yekero nzvimbo. Tichifunga kuti sisitimu yekushandisa nemaraibhurari akajairwa anotora chimwe chinhu, izvi zvinosiya chirongwa paine imwe nzvimbo pakati pe1-3 GB yekushandisa application. Nekudaro, kana iyo 32-bit system ine anopfuura 4 GB ye RAM, kushandisa iyo ndangariro kunonyanya kunetsa. Isu tinofanirwa kuita zvekumanikidza sisitimu yekushandisa kumepu aya akakura machunks endangariro echirongwa chedu (memory virtualization), kana isu tinogona kupatsanura chirongwa kuita akati wandei maitiro (apo maitiro ega ega zvakare ane 4GB yendangariro inowanikwa kune yakananga kero).

Nekudaro, aya "hacks" akaoma uye anononoka zvekuti mashoma ekushandisa anoashandisa. Mukuita, pane 32-bit processor, chirongwa chega chega chinongoshandisa 1-3 GB yekuyeuka, uye yakawanda inowanikwa RAM inogona kushandiswa kumhanyisa mapurogiramu akawanda panguva imwe chete kana kushandisa iyi ndangariro sebuffer (caching). Aya mashandisirwo anoshanda, asi isu tinoda chero chirongwa kuti chikwanise kushandisa nyore chunks yendangariro yakakura kupfuura 4GB.

Iye zvino tasvika kune inowanzoitika (chaizvo zvisizvo) vanoti pasina inopfuura 4GB yendangariro, 64-bit architecture haina basa. Nzvimbo yakakura yekero inobatsira kunyangwe pane system ine ndangariro shoma. Memory-mamepu mafaera chishandiso chinoshanda apo chikamu chemukati mefaira chakabatana zvine mutsindo nendangariro yemaitiro pasina iyo faira rese richifanira kutakurwa mundangariro. Nekudaro, iyo sisitimu inogona, semuenzaniso, zvishoma nezvishoma kugadzirisa mafaira makuru kakawanda akakura kupfuura RAM. Pane 32-bit system, mafaira akakura akadaro haagone kuve akavimbika ndangariro-mepu, nepo pane 64-bit system, iri chidimbu chekeke, nekuda kwenzvimbo yakakura kero.

Nekudaro, iyo yakakura saizi yeanongedza zvakare inounza imwe hombe kukanganisa: zvikasadaro mapurogiramu akafanana anoda imwe ndangariro pane 64-bit processor (aya makuru anongedzo anofanirwa kuchengetwa kumwe kunhu). Sezvo anonongedzera ari anogara ari chikamu chezvirongwa, mutsauko uyu unogona kuremedza cache, izvo zvinozoita kuti sisitimu yese ifambe zvishoma. Saka mukuona, tinogona kuona kuti kana tikangochinja processor architecture kuita 64-bit, inogona kudzikamisa iyo yese system. Saka ichi chinhu chinofanirwa kuve chakaenzana nekuwedzera optimizations kune dzimwe nzvimbo.

ARM64

Iyo A7, iyo 64-bit processor inosimbisa iyo itsva iPhone 5s, haingori yenguva dzose ARM processor ine marejista akafara. ARM64 ine kuvandudzwa kukuru pane yekare, 32-bit vhezheni.

Apple A7 processor.

Registry

ARM64 inobata marejista akawanda akapetwa kaviri se32-bit ARM (chenjerera kuti usavhiringa nhamba nehupamhi hwemarejista - takataura nezvehupamhi muchikamu che "64-bit". Saka ARM64 ine marejista akafara zvakapetwa kaviri uye nekaviri. register). Iyo 32-bit ARM ine gumi nematanhatu marejista: one program counter (PC - ine nhamba yerairo yazvino), stack pointer (inongedzo kune basa ririkuitika), rejista yekubatanidza (inongedzo yekudzoka mushure mekupera. chebasa), uye gumi nematatu asara ndeekushandiswa kwekushandisa. Nekudaro, iyo ARM16 ine makumi matatu nembiri marejista, kusanganisira imwe zero rejista, rejista yekubatanidza, furemu inongedza (yakafanana neyekunge inonongedza), uye imwe yakachengeterwa ramangwana. Izvi zvinotisiya ne 13 marejista ekushandisa application, inodarika kaviri iyo 64-bit ARM. Panguva imwecheteyo, iyo ARM32 yakawedzera kaviri nhamba yeinoyangarara-nhamba (FPU) marejista kubva pa28 kusvika 32 64-bit marejista.

Asi nei nhamba yerejista yakakosha? Memory kazhinji inononoka kupfuura kuverenga kweCPU uye kuverenga / kunyora kunogona kutora nguva yakareba kwazvo. Izvi zvaizoita kuti iyo inokurumidza processor irambe yakamirira ndangariro uye isu taizorova iyo yakasikwa yekumhanyisa muganho weiyo system. Ma processor anoedza kuvanza hurema uhu nezvikamu zvemabhafa, asi kunyangwe iyo inokurumidza (L1) ichiri kunonoka kupfuura kuverenga kwe processor. Nekudaro, marejista maseru ekurangarira akananga muprocessor uye kuverenga kwavo / kunyora kunokurumidza zvakakwana kuti kusanoke processor. Huwandu hwemarejista hunoreva huwandu hweyekukurumidza ndangariro yekuverenga kwe processor, iyo inokanganisa zvakanyanya kumhanya kweiyo system yese.

Panguva imwecheteyo, iyi yekumhanyisa inoda yakanaka optimization rutsigiro kubva kune iyo compiler, kuitira kuti mutauro ugone kushandisa aya marejista uye haufanirwe kuchengetedza zvese mune yakajairika application (inononoka) ndangariro.

Instruction set

ARM64 inounzawo shanduko huru kune yekuraira set. Seti yekuraira seti yekushanda kweatomu iyo processor inogona kuita (semuenzaniso 'ADD register1 register2' inowedzera nhamba mumarejista maviri). Mabasa anowanikwa kumitauro yega yega anoumbwa nemirairo iyi. Mamwe mabasa akaomarara anofanira kuita mamwe mirairo, saka anogona kunonoka.

Nyowani muARM64 mirairo yeAES encryption, SHA-1 uye SHA-256 hash mabasa. Saka pachinzvimbo chekuita kwakaoma, mutauro chete ndiwo uchadaidza uyu kuraira - izvo zvinounza kukurumidza kukuru kune computation yemabasa akadaro uye netarisiro yakawedzera chengetedzo mumashandisirwo. E.g. iyo itsva Touch ID inoshandisawo mirairo iyi mu encryption, ichibvumira kukurumidza uye kuchengetedzeka chaiko (mupfungwa, munhu anorwisa aifanira kugadzirisa processor pachayo kuti iwane iyo data - hazvigoneke kutaura zvishoma kupihwa saizi yayo diki).

Kuenderana ne32bit

Zvakakosha kutaura kuti A7 inogona kumhanya zvizere mu 32-bit mode pasina kudiwa kwekutevedzera. Zvinoreva kuti iyo itsva iPhone 5s inogona kumhanya maapplication akaunganidzwa pa32-bit ARM pasina kudzikira. Nekudaro, saka haigone kushandisa iyo mitsva yeARM64 mabasa, saka zvinogara zvakakosha kugadzira yakakosha kuvaka chete yeA7, iyo inofanirwa kumhanya zvakanyanya.

Runtime inoshanduka

Runtime ndiyo kodhi inowedzera mabasa kumutauro wepurogiramu, iyo yainokwanisa kushandisa apo application iri kushanda, kusvika mushure mekushandura. Sezvo Apple isingade kuchengetedza kuenderana kweapp (kuti 64-bit binary inomhanya pa32-bit), ivo vanokwanisa kuita mamwe mashoma ekuvandudza kumutauro weObjective-C.

Mumwe wavo ndiye anonzi tagged pointer (chiratidzo chechiratidzo). Kazhinji, zvinhu uye zvinongedzo kune izvo zvinhu zvinochengetwa muzvikamu zvakasiyana zvendangariro. Nekudaro, mhando nyowani dzepoinzi dzinobvumira makirasi ane data shoma kuchengetedza zvinhu zvakananga muinongedzo. Iyi nhanho inobvisa kukosha kwekugovera ndangariro zvakananga kune chinhu, ingo gadzira chinongedzo uye chinhu chiri mukati maro. Tagged anonongedzera anongotsigirwa mu64-bit architecture zvakare nekuda kwekuti hapasisina nzvimbo yakakwana mune 32-bit pointer kuchengetedza yakakwana data inobatsira. Naizvozvo, iOS, kusiyana neOS X, yanga isati yatsigira ichi chimiro. Nekudaro, nekusvika kweARM64, izvi zviri kuchinja, uye iOS yakabata OS X mune izvi zvakare.

Kunyangwe mapoinzi ari makumi matanhatu nemana mabhiti kureba, paARM64 chete 64 mabhiti anoshandiswa kune inonongedza kero yake. Uye kana isu tichikwanisa kuvhurika nekuvimbika mamwe ese anonongedza mabheti, isu tinogona kushandisa nzvimbo ino kuchengetedza imwe data - sezvakaitika kune ataurwa akategi anonongedzera. Sezvineiwo, iyi ndiyo imwe shanduko huru munhoroondo yeObjective-C, kunyangwe isiri chinhu chinotengeswa - saka vashandisi vazhinji havazoziva kuti Apple iri kufambisa sei Chinangwa-C kumberi.

Kana iri iyo data inobatsira iyo inogona kuchengetwa munzvimbo yasara yeiyo tagged pointer, Chinangwa-C, semuenzaniso, ikozvino iri kuishandisa kuchengetedza iyo inonzi. reference count (nhamba yezvinyorwa). Kare, nhamba yereferensi yakachengetwa mune imwe nzvimbo mundangariro, mune hashi tafura yakagadzirirwa iyo, asi izvi zvinogona kunonoka pasi sisitimu yese muchiitiko chenhamba huru yealloc/dealloc/chengeta/kuburitsa mafoni. Tafura yaifanira kukiyiwa nekuda kwekuchengetedzwa kweshinda, saka nhamba yereferensi yezvinhu zviviri mushinda mbiri haigone kuchinjwa panguva imwe chete. Nekudaro, kukosha uku kuchangobva kuiswa mune yakasara yeinodanwa isa zviratidzo. Ichi chimwe chisingaoneki, asi mukana mukuru uye kukurumidza mune ramangwana. Nekudaro, izvi hazvigone kuwanikwa mune 32-bit architecture.

Ruzivo pamusoro pezvinhu zvine chekuita nazvo, chingave chinhu chinoratidzwa zvisina kusimba, kana zvichidikanwa kugadzira muparadzi wechinhu, zvichingodaro, zvakare ichangobva kuiswa munzvimbo yasara yezvinongedzo kuzvinhu. Nekuda kweruzivo urwu, Chinangwa-C Runtime inokwanisa kumhanyisa nguva yekumhanya, iyo inoratidzwa mukumhanya kwechishandiso chega chega. Kubva pakuyedzwa, izvi zvinoreva nezve 40-50% kukurumidza kwese kurangarira manejimendi mafoni. Nekungochinja kune 64-bit anonongedzera uye kushandisa iyi nzvimbo itsva.

Mhedziso

Kunyangwe vakwikwidzi vachayedza kuparadzira iyo pfungwa yekuti kutamira kune 64-bit architecture haina basa, iwe unotoziva kuti iyi ingori pfungwa isina ruzivo. Ichokwadi kuti kuchinja ku64-bit pasina kugadzirisa mutauro wako kana maapplication hazvireve chero chinhu - zvinotodzikisa pasi rese system. Asi iyo A7 nyowani inoshandisa yemazuva ano ARM64 ine nyowani yekuraira seti, uye Apple yatora dambudziko kugadzirisa iyo yose Objective-C mutauro uye kutora mukana wehunyanzvi hutsva - nekudaro kukurumidza kwakavimbiswa.

Pano tataura nhamba huru yezvikonzero nei 64-bit architecture iri danho rakakodzera mberi. Ndiyo imwe shanduko "pasi pehodhi", nekuda kwekuti Apple ichaedza kuramba iri kumberi kwete chete nedhizaini, mushandisi interface uye yakapfuma ecosystem, asi kunyanya nehunyanzvi hwemazuva ano pamusika.

Kunobva: mikeash.com
.