Kwala papatso

Mike Ash e inehetseng ho blog ea hae litlamorao tse sebetsang tsa ho fetohela meahong ea 64-bit ho iPhone 5S. Sengoliloeng sena se bua ka seo a se fumaneng.

Lebaka la mongolo ona haholo-holo ka lebaka la boitsebiso bo bongata bo fosahetseng bo phatlalatsoang ka seo iPhone 5s e ncha e nang le processor ea 64-bit ARM e hlileng e bolelang ho basebelisi le 'maraka. Mona re tla leka ho tlisa tlhahisoleseling mabapi le ts'ebetso, bokhoni le litlamorao tsa phetoho ena ho bahlahisi.

"64 hanyane"

Ho na le likarolo tse peli tsa processor tseo lengolo la "X-bit" le ka buang ka tsona - bophara ba lirejisete tse felletseng le bophara ba litsupa. Ka lehlohonolo, ho li-processor tse ngata tsa morao-rao bophara bona boa tšoana, kahoo tabeng ea A7 sena se bolela li-register tsa 64-bit integer le 64-bit pointers.

Leha ho le joalo, ho bohlokoa ka ho tšoanang ho supa hore na "64bit" HA E bolele eng: Boholo ba aterese ea sebaka sa RAM. Palo ea li-bits ho buisana le RAM (ka hona palo ea RAM eo sesebelisoa se ka e tšehetsang) ha e amane le palo ea li-CPU. Li-processor tsa ARM li na le liaterese tse pakeng tsa 26 le 40-bit 'me li ka fetoloa ntle le tsamaiso eohle.

  • Boholo ba bese ea data. Palo ea data e amohetsoeng ho tsoa ho RAM kapa memori ea buffer le eona e ikemetse ka lebaka lena. Litaelo tsa processor ka bomong li ka kopa palo e fapaneng ea data, empa li romelloa ka likotoana kapa li amoheloa ho feta kamoo ho hlokahalang ho tsoa mohopolong. E itšetlehile ka boholo ba data quantum. IPhone 5 e se e ntse e amohela data ho tsoa mohopolong ka 64-bit quanta (mme e na le processor ea 32-bit), mme re ka kopana le boholo ho fihla ho 192 bits.
  • Ntho efe kapa efe e amanang le ntlha e phaphametseng. Boholo ba lirekoto tse joalo (FPU) li boetse li ikemetse ho ts'ebetso ea kahare ea processor. ARM esale e sebelisa 64-bit FPU ho tloha pele ho ARM64 (64-bit ARM processor).

Melemo le bofokoli bo akaretsang

Haeba re bapisa meralo ea 32bit le 64bit e tšoanang, hangata ha e fapane joalo. Lena ke le leng la mabaka a pherekano e akaretsang ea sechaba se batlang lebaka leo Apple e fallelang ho 64bit le lisebelisoa tsa mehala. Leha ho le joalo, tsohle li tsoa ho li-parameter tse khethehileng tsa processor ea A7 (ARM64) le kamoo Apple e e sebelisang kateng, eseng feela taba ea hore processor e na le meralo ea 64-bit.

Leha ho le joalo, haeba re ntse re sheba phapang pakeng tsa mehaho ena e 'meli ea meralo, re tla fumana liphapang tse' maloa. Taba e totobetseng ke hore lirekoto tsa 64-bit integer li khona ho sebetsana le 64-bit integers ka katleho. Le pele ho moo, ho ne ho ka khoneha ho sebetsa le bona ho li-processor tsa 32-bit, empa hangata sena se ne se bolela ho li arola ka likotoana tse telele tsa 32-bit, e leng se ileng sa etsa hore lipalo li be butle. Kahoo processor ea 64-bit ka kakaretso e ka kopanya mefuta ea 64-bit ka potlako joalo ka ea 32-bit. Sena se bolela hore lits'ebetso tseo ka kakaretso li sebelisang mefuta ea 64-bit li ka sebetsa kapele haholo ho processor ea 64-bit.

Leha 64bit e sa ame kakaretso ea RAM eo processor e ka e sebelisang, e ka nolofaletsa ho sebetsa ka likarolo tse kholo tsa RAM lenaneong le le leng. Lenaneo leha e le lefe le le leng le sebetsang ho 32-bit processor le na le hoo e ka bang 4 GB ea sebaka sa aterese. Ho ela hloko hore sistimi e sebetsang le lilaebrari tse tloaelehileng li nka ho hong, sena se siea lenaneo le le pakeng tsa 1-3 GB bakeng sa ts'ebeliso ea kopo. Leha ho le joalo, haeba tsamaiso ea 32-bit e na le ho feta 4 GB ea RAM, ho sebelisa mohopolo oo ho thata haholoanyane. Re tlameha ho fetohela ho qobella sistimi ea ts'ebetso ho etsa 'mapa oa likarolo tsena tse kholo tsa mohopolo bakeng sa lenaneo la rona (memory virtualization), kapa re ka arola lenaneo ka mekhoa e mengata (moo ts'ebetso e' ngoe le e 'ngoe hape e nang le 4GB ea memori e fumanehang bakeng sa aterese e tobileng).

Leha ho le joalo, "li-hacks" tsena li thata ebile li lieha hoo bonyane ba likopo li li sebelisang. Ha e le hantle, ho processor ea 32-bit, lenaneo le leng le le leng le tla sebelisa memori ea 1-3 GB feela, 'me RAM e fumanehang haholoanyane e ka sebelisoa ho tsamaisa mananeo a mangata ka nako e le' ngoe kapa ho sebelisa mohopolo ona e le buffer (caching). Ts'ebeliso ena e ea sebetsa, empa re ka rata hore lenaneo lefe kapa lefe le khone ho sebelisa likaroloana tsa memori tse kholo ho feta 4GB habonolo.

Hona joale re tla ho tseko ea khafetsa (ehlile e fosahetse) ea hore ntle le memori e fetang 4GB, meralo ea 64-bit ha e na thuso. Sebaka se seholoanyane sa aterese se na le thuso esita le tsamaisong e nang le mohopolo o fokolang. Lifaele tse nang le 'mapa oa memori ke sesebelisoa se sebetsang moo karolo ea litaba tsa faele e hokahaneng ka nepo le mohopolo oa ts'ebetso ntle le hore faele eohle e kenngoe mohopolong. Kahoo, sistimi e ka etsa mohlala, butle-butle ho sebetsa lifaele tse kholo ka makhetlo a mangata ho feta matla a RAM. Ho sistimi ea 32-bit, lifaele tse kholo joalo li ke ke tsa ts'oaroa ka mokhoa o ts'epahalang, athe sistimi ea 64-bit, ke sengoathoana sa kuku, ka lebaka la sebaka se seholo sa aterese.

Leha ho le joalo, boholo bo boholo ba lisupa bo boetse bo tlisa bothata bo le bong bo boholo: ho seng joalo mananeo a ts'oanang a hloka mohopolo o mongata ho processor ea 64-bit (lintlha tsena tse kholo li tlameha ho bolokoa kae-kae). Kaha li-pointers ke karolo ea khafetsa ea mananeo, phapang ena e ka imetsa cache, e leng se etsang hore tsamaiso eohle e tsamaee butle. Kahoo ka pono, re ka bona hore haeba re ne re ka fetola meralo ea processor ho 64-bit, e ne e tla liehisa sistimi eohle. Kahoo ntlha ena e tlameha ho leka-lekana le lintlafatso tse ling libakeng tse ling.

ARM64

A7, processor ea 64-bit e matlafatsang li-iPhone 5s tse ncha, ha se processor ea kamehla ea ARM e nang le lirejisete tse pharaletseng. ARM64 e na le lintlafatso tse kholo ho feta mofuta oa khale, oa 32-bit.

Apple A7 processor.

Registry

ARM64 e na le palo e lekanang le ea 32-bit ARM (e-ba hlokolosi hore u se ke ua ferekanya palo le bophara ba lirejiseteri - re buile ka bophara karolong ea "64-bit". direseta). ARM ea 64-bit e na le li-registerers tse 32 tse feletseng: k'haontara e le 'ngoe ea lenaneo (PC - e na le palo ea litaelo tsa hona joale), pointer ea stack (ponts'o ea ts'ebetso e ntseng e tsoela pele), registara ea lihokelo (sesupo sa ho khutla kamora ho fela. ea ts'ebetso), 'me tse 16 tse setseng ke tsa ts'ebeliso ea ts'ebeliso. Leha ho le joalo, ARM13 e na le lirejisetara tse 64 tse felletseng, ho kenyeletsoa rejisetara e le 'ngoe ea zero, rejisetara ea lihokelo, pointer ea foreimi (e ts'oanang le pointer ea stack), le e boloketsoeng bokamoso. Sena se re siea re e-na le lirekoto tse 32 bakeng sa ts'ebeliso ea ts'ebeliso, tse fetang habeli tsa 28-bit ARM. Ka nako e ts'oanang, ARM32 e imenne habeli palo ea lirekoto tsa nomoro ea floating-point (FPU) ho tloha ho 64 ho isa ho 16 32-bit.

Empa ke hobane'ng ha palo ea li-registry e le ea bohlokoa hakaale? Mehopolo hangata e lieha ho feta lipalo tsa CPU mme ho bala/ho ngola ho ka nka nako e telele haholo. Sena se ka etsa hore processor e potlakileng e lule e emetse mohopolo mme re tla fihla moeling oa lebelo la tlhaho oa sistimi. Basebelisi ba leka ho pata bokooa bona ka likarolo tsa li-buffers, empa le e potlakileng haholo (L1) e ntse e tsamaea butle ho feta lipalo tsa processor. Leha ho le joalo, lirejista ke lisele tsa memori ka kotloloho ho processor mme ho bala / ho ngola ha tsona ho potlakile ho lekana hore li se ke tsa liehisa processor. Palo ea lirejista e hlile e bolela palo ea memori e potlakileng bakeng sa lipalo tsa processor, e amang lebelo la sistimi eohle haholo.

Ka nako e ts'oanang, lebelo lena le hloka ts'ehetso e ntle ea optimization ho tswa ho moqapi, e le hore puo e ka sebelisa lirekoto tsena 'me ha ea tlameha ho boloka ntho e' ngoe le e 'ngoe ka ts'ebeliso e tloaelehileng (e liehang) mohopolo.

Sete ea litaelo

ARM64 e boetse e tlisa liphetoho tse kholo ho sete ea litaelo. Sete ea litaelo ke sete ea tšebetso ea athomo eo processor e ka e etsang (mohlala, 'ADD register1 register2' e eketsa linomoro lirejiseteng tse peli). Mesebetsi e fumanehang lipuong ka bomong e entsoe ka litaelo tsena. Mesebetsi e rarahaneng haholo e tlameha ho phethahatsa litaelo tse ngata, e le hore li ka tsamaea butle.

Tse ncha ho ARM64 ke litaelo tsa encryption ea AES, SHA-1 le SHA-256 hash function. Kahoo ho e-na le ts'ebetsong e rarahaneng, ke puo feela e tla bitsa taelo ena - e tla tlisa lebelo le leholo ho kopanngoa ha mesebetsi e joalo 'me ka tšepo e ekelitse ts'ireletso lits'ebetsong. Mohl. Touch ID e ncha e boetse e sebelisa litaelo tsena ho encryption, e lumellang lebelo le ts'ireletso ea 'nete (ka khopolo, mohlaseli o tla tlameha ho fetola processor ka boeona hore e fihlele data - e leng ho sa khoneheng ho bua hanyane ha e fuoa boholo ba eona e nyane).

E lumellana le 32bit

Ho bohlokoa ho bolela hore A7 e ka matha ka botlalo ka mokhoa oa 32-bit ntle le tlhoko ea ho etsisa. Ho bolela hore li-iPhone 5s tse ncha li ka tsamaisa lits'ebetso tse hlophisitsoeng ho 32-bit ARM ntle le ho fokotseha. Leha ho le joalo, ha e khone ho sebelisa mesebetsi e mecha ea ARM64, kahoo kamehla ho molemo ho etsa mohaho o khethehileng bakeng sa A7 feela, e lokelang ho sebetsa ka potlako haholo.

Nako ea ho sebetsa e fetoha

Runtime ke khoutu e eketsang mesebetsi ho puo ea lenaneo, eo e khonang ho e sebelisa ha kopo e ntse e sebetsa, ho fihlela ka mor'a phetolelo. Kaha Apple ha e hloke ho boloka tšebelisano ea kopo (hore binary ea 64-bit e sebetsa ho 32-bit), e ka khona ho etsa lintlafatso tse ling tse 'maloa puong ea Objective-C.

E 'ngoe ea tsona ke e bitsoang sesupa se tšoailoeng (sesupo se tšoailoeng). Ka tloaelo, lintho le lisupa ho lintho tseo li bolokoa likarolong tse fapaneng tsa mohopolo. Leha ho le joalo, mefuta e mecha ea li-point e lumella litlelase tse nang le data e nyane ho boloka lintho ka kotloloho ho pointer. Mohato ona o felisa tlhokahalo ea ho fana ka mohopolo ka ho toba bakeng sa ntho, feela ho etsa pointer le ntho e ka hare ho eona. Lits'oants'o tse tšoailoeng li tšehetsoa feela ka meralo ea 64-bit hape ka lebaka la hore ha ho sa na sebaka se lekaneng sebakeng sa 32-bit pointer ho boloka data e lekaneng ea bohlokoa. Ka hona, iOS, ho fapana le OS X, ha e e-so tšehetse tšobotsi ena. Leha ho le joalo, ka ho fihla ha ARM64, sena sea fetoha, 'me iOS e tšoere OS X tabeng ena hape.

Leha lisupa li le bolelele ba likotoana tse 64, ho ARM64 ho sebelisoa li-bits tse 33 feela bakeng sa aterese ea sesupo. 'Me haeba re khona ho manolla likotoana tse ling kaofela, re ka sebelisa sebaka sena ho boloka lintlha tse ling - joalo ka tabeng ea lisupa tse boletsoeng. Ka mohopolo, ena ke e 'ngoe ea liphetoho tse kholo nalaneng ea Objective-C, leha e se karolo e ka rekisoang - kahoo basebelisi ba bangata ba ke ke ba tseba hore na Apple e ntse e tsoela pele joang ka Objective-C.

Ha e le lintlha tsa bohlokoa tse ka bolokoang sebakeng se setseng sa pointer e joalo e tšoailoeng, mohlala, Objective-C e se e ntse e e sebelisa ho boloka seo ho thoeng ke sona. palo ea litšupiso (palo ea litšupiso). Nakong e fetileng, palo ea litšupiso e ne e bolokiloe sebakeng se fapaneng mohopolong, tafoleng ea hash e lokiselitsoeng eona, empa sena se ka fokotsa tsamaiso eohle tabeng ea palo e kholo ea alloc / dealloc / boloka / lokolla mehala. Tafole e ne e tlameha ho notleloa ka lebaka la polokeho ea likhoele, kahoo palo ea litšupiso ea lintho tse peli ka likhoele tse peli e ne e ke ke ea fetoloa ka nako e le 'ngoe. Leha ho le joalo, boleng bona bo sa tsoa kenngoa ho tse ling tse bitsoang isa litsupa. Ena ke e 'ngoe e sa bonahaleng, empa molemo o moholo le ho potlakisa nakong e tlang. Leha ho le joalo, sena se ne se ke ke sa finyelloa ka meralo ea 32-bit.

Tlhahisoleseding e mabapi le dintho tse amanang le tsona, hore na ntho e buuwa ka bofokodi, ho sa tsotellehe hore na ho hlokahala ho hlahisa sesenyi bakeng sa ntho, jj, e boetse e kenngwa sebakeng se setseng sa disupa ho dintho.Ka lebaka la tlhahisoleseding ena, Objective-C Runtime e khona ho potlakisa nako ea ho matha, e bonts'ang lebelo la ts'ebeliso ka 'ngoe. Ho tloha tekong, sena se bolela ho potlaka ha 40-50% ea mehala eohle ea taolo ea memori. Ka ho fetohela ho li-pointers tsa 64-bit le ho sebelisa sebaka sena se secha.

Qetello

Le hoja bahlolisani ba tla leka ho jala maikutlo a hore ho fallela mohahong oa 64-bit ha ho hlokahale, u tla be u se u ntse u tseba hore ena ke maikutlo a sa tsebeng letho. Ke 'nete hore ho fetohela ho 64-bit ntle le ho ikamahanya le puo kapa lits'ebetso tsa hau ha ho bolele letho - ho bile ho liehisa sistimi eohle. Empa A7 e ncha e sebelisa ARM64 ea sejoale-joale e nang le sete e ncha ea litaelo, 'me Apple e nkile bothata ba ho nchafatsa puo eohle ea Objective-C le ho nka monyetla ka bokhoni bo bocha - ka hona, ho potlakile ho ts'episitsoeng.

Mona re boletse palo e kholo ea mabaka a etsang hore meralo ea 64-bit e le mohato o nepahetseng oa ho ea pele. Ke phetoho e 'ngoe "tlas'a hood", ka lebaka leo Apple e tla leka ho lula e le ka pele eseng feela ka moralo, sebopeho sa basebelisi le tikoloho e ruileng, empa haholo-holo ka mahlale a sejoale-joale 'marakeng.

Mohloli: mikeash.com
.