Tsekani malonda

Mike Ash woperekedwa pa blog yake zomveka zosinthira ku 64-bit zomangamanga mu iPhone 5S. Nkhaniyi ikufotokoza zimene anapeza.

Chifukwa cha malembawa makamaka chifukwa cha kuchuluka kwa mauthenga olakwika omwe akufalitsidwa ponena za zomwe iPhone 5s yatsopano yokhala ndi purosesa ya 64-bit ARM imatanthawuza kwenikweni kwa ogwiritsa ntchito ndi msika. Apa tiyesetsa kubweretsa zidziwitso zokhuza magwiridwe antchito, kuthekera ndi zotsatira za kusinthaku kwa opanga.

"64 pang'ono"

Pali magawo awiri a purosesa omwe chizindikiro cha "X-bit" chingatanthauze - m'lifupi mwa zolembera zonse ndi m'lifupi mwa zolozera. Mwamwayi, pa mapurosesa ambiri amakono m'lifupi mwake ndi ofanana, kotero pankhani ya A7 izi zikutanthauza 64-bit integer registry ndi 64-bit pointers.

Komabe, ndikofunikiranso kunena zomwe "64bit" SIkutanthauza: Kukula kwa adilesi ya RAM. Kuchuluka kwa ma bitti oti mulankhule ndi RAM (motero kuchuluka kwa RAM yomwe chipangizochi chingathandizire) sikukhudzana ndi kuchuluka kwa ma CPU. Ma processor a ARM ali ndi pakati pa ma adilesi a 26- ndi 40-bit ndipo amatha kusinthidwa mosadalira machitidwe ena onse.

  • Kukula kwa basi ya data. Kuchuluka kwa data yomwe yalandilidwa kuchokera ku RAM kapena kukumbukira kwa buffer ndikofanana kosagwirizana ndi izi. Malangizo a purosesa pawokha amatha kupempha kuchuluka kwa data, koma amatumizidwa m'machunks kapena kulandilidwa kuposa momwe amafunikira kuchokera pamtima. Zimatengera kukula kwa data quantum. IPhone 5 imalandira kale deta kuchokera pamtima mu 64-bit quanta (ndipo ili ndi purosesa ya 32-bit), ndipo tikhoza kukumana ndi kukula mpaka 192 bits.
  • Chilichonse chokhudzana ndi malo oyandama. Kukula kwa zolembera zotere (FPU) ndizodziyimira pawokha pakugwira ntchito kwamkati kwa purosesa. ARM yakhala ikugwiritsa ntchito 64-bit FPU kuyambira kale ARM64 (purosesa ya 64-bit ARM).

Zabwino zonse ndi kuipa kwake

Tikayerekeza zomanga za 32bit ndi 64bit zofananira, nthawi zambiri sizosiyana. Ichi ndi chimodzi mwazifukwa zomwe zimasokoneza anthu ambiri kufunafuna chifukwa chomwe Apple ikusunthira ku 64bit pazida zam'manja. Komabe, zonse zimachokera ku magawo enieni a purosesa ya A7 (ARM64) ndi momwe Apple amagwiritsira ntchito, osati chifukwa chakuti purosesa ili ndi zomangamanga za 64-bit.

Komabe, ngati tiyang'anabe kusiyana pakati pa zomangamanga ziwirizi, tidzapeza zosiyana zingapo. Chodziwikiratu ndi chakuti 64-bit integer registry imatha kugwira ma 64-bit integers bwino kwambiri. Ngakhale kale, zinali zotheka kugwira nawo ntchito pa 32-bit processors, koma izi nthawi zambiri zimatanthawuza kuwagawa mu zidutswa 32-bit, zomwe zinayambitsa kuwerengera pang'onopang'ono. Chifukwa chake purosesa ya 64-bit imatha kuwerengera mitundu ya 64-bit mwachangu ngati ndi 32-bit. Izi zikutanthauza kuti mapulogalamu omwe amagwiritsa ntchito mitundu ya 64-bit amatha kuthamanga kwambiri pa purosesa ya 64-bit.

Ngakhale 64bit sichimakhudza kuchuluka kwa RAM yomwe purosesa ingagwiritse ntchito, ikhoza kupangitsa kuti ikhale yosavuta kugwira ntchito ndi zigawo zazikulu za RAM mu pulogalamu imodzi. Pulogalamu iliyonse yomwe ikuyenda pa 32-bit purosesa imangokhala ndi 4 GB ya malo adilesi. Poganizira kuti makina ogwiritsira ntchito ndi malaibulale okhazikika amatenga kena kake, izi zimasiya pulogalamuyi ndi penapake pakati pa 1-3 GB kuti igwiritsidwe ntchito. Komabe, ngati makina a 32-bit ali ndi RAM yoposa 4 GB, kugwiritsa ntchito kukumbukira kumeneko kumakhala kovuta kwambiri. Tiyenera kugwiritsa ntchito kukakamiza opareting'i sisitimu kuti tipange mapu a machulukidwe okulirapo a pulogalamu yathu (memory virtualization), kapena titha kugawa pulogalamuyo m'njira zingapo (pomwe njira iliyonse imakhala ndi 4 GB ya kukumbukira yomwe ikupezeka kuti muyankhulidwe mwachindunji).

Komabe, "ma hacks" awa ndi ovuta komanso ochedwa kuti mapulogalamu ochepa amawagwiritsa ntchito. Mwachizoloŵezi, pa purosesa ya 32-bit, pulogalamu iliyonse idzangogwiritsa ntchito 1-3 GB ya kukumbukira, ndipo RAM yochulukirapo ingagwiritsidwe ntchito kuyendetsa mapulogalamu angapo nthawi imodzi kapena kugwiritsa ntchito kukumbukira uku ngati buffer (caching). Izi ndizothandiza, koma tikufuna kuti pulogalamu iliyonse ikhale yosavuta kugwiritsa ntchito machunks amakumbukidwe akulu kuposa 4GB.

Tsopano timabwera ku zonena zanthawi zonse (zolakwika) kuti popanda kukumbukira kopitilira 4GB, zomangamanga za 64-bit sizothandiza. Malo okulirapo adilesi ndi othandiza ngakhale pamakina omwe ali ndi kukumbukira kochepa. Mafayilo ojambulidwa ndi memory ndi chida chothandizira pomwe gawo la zomwe zili mufayilo zimalumikizidwa bwino ndi kukumbukira kwadongosolo popanda fayilo yonse kuti isungidwe kukumbukira. Chifukwa chake, dongosololi limatha, mwachitsanzo, kukonza pang'onopang'ono mafayilo akulu nthawi zambiri kuposa kuchuluka kwa RAM. Pamakina a 32-bit, mafayilo akulu oterowo sangathe kujambulidwa modalirika, pomwe pamakina a 64-bit, ndi chidutswa cha keke, chifukwa cha malo okulirapo.

Komabe, kukula kokulirapo kwa zolozera kumabweretsanso vuto limodzi lalikulu: apo ayi mapulogalamu ofanana amafunikira kukumbukira kwambiri pa purosesa ya 64-bit (zolozera zazikuluzikuluzi ziyenera kusungidwa kwinakwake). Popeza zolozera ndi gawo lanthawi zonse la mapulogalamu, kusiyana kumeneku kumatha kulemetsa cache, zomwe zimapangitsa kuti dongosolo lonse liziyenda pang'onopang'ono. Chifukwa chake, titha kuwona kuti tikangosintha kamangidwe ka purosesa kukhala 64-bit, zitha kuchepetsa dongosolo lonse. Chifukwa chake izi ziyenera kulinganizidwa ndi kukhathamiritsa kochulukirapo m'malo ena.

ARM64

A7, purosesa ya 64-bit yomwe imathandizira ma iPhone 5s atsopano, si purosesa wamba wa ARM yokhala ndi zolembetsa zambiri. ARM64 ili ndi kusintha kwakukulu kuposa wakale, mtundu wa 32-bit.

Pulogalamu ya Apple A7.

Registry

ARM64 imakhala ndi ma register ochulukirapo kuwirikiza kawiri kuposa 32-bit ARM (samalani kuti musasokoneze chiwerengero ndi m'lifupi mwa zolembera - tidayankhula za m'lifupi mu gawo la "64-bit". zolembetsa). 64-bit ARM ili ndi zolembera zokwana 32: pulogalamu imodzi (PC - ili ndi chiwerengero cha malangizo omwe alipo), cholozera cha stack (cholozera ku ntchito yomwe ikuchitika), kaundula wa ulalo (cholozera chobwerera pambuyo pomaliza. za ntchitoyi), ndipo 16 yotsalayo ndi yogwiritsira ntchito. Komabe, ARM13 ili ndi zolembetsa zokwana 64, kuphatikiza regista imodzi ya ziro, kaundula wamalumikizidwe, cholozera chimango (chofanana ndi cholozera cha stack), ndi chosungira mtsogolo. Izi zimatisiya ndi zolembetsa 32 zogwiritsa ntchito, kupitilira kawiri 28-bit ARM. Nthawi yomweyo, ARM32 idachulukitsa kaundula wa nambala yoyandama (FPU) kuchokera pa 64 mpaka 16 32-bit.

Koma n’chifukwa chiyani chiwerengero cha kaundula ndi chofunika kwambiri? Kukumbukira nthawi zambiri kumakhala kochedwa kuposa kuwerengera kwa CPU ndipo kuwerenga/kulemba kumatha kutenga nthawi yayitali kwambiri. Izi zingapangitse kuti purosesa yothamanga ipitirizebe kuyembekezera kukumbukira ndipo tikhoza kugunda malire a liwiro la chilengedwe. Mapurosesa amayesa kubisa chilema ichi ndi zigawo za buffers, koma ngakhale yothamanga kwambiri (L1) imakhala yochedwa kuposa kuwerengera kwa purosesa. Komabe, zolembera ndi maselo okumbukira molunjika mu purosesa ndipo kuwerenga / kulemba kwawo kumathamanga kwambiri kuti asachepetse purosesa. Kuchuluka kwa zolembera kumatanthawuza kuchuluka kwa kukumbukira kwachangu kwambiri pakuwerengera purosesa, komwe kumakhudza kwambiri liwiro la dongosolo lonse.

Nthawi yomweyo, liwiroli limafunikira thandizo lokhathamiritsa bwino kuchokera kwa wopanga, kuti chinenerocho chigwiritse ntchito zolembera izi ndipo sichiyenera kusunga zonse zomwe zimagwiritsidwa ntchito (pang'onopang'ono) kukumbukira.

Malangizo akonzedwa

ARM64 imabweretsanso zosintha zazikulu pamagawo a malangizo. Seti ya malangizo ndi gulu la machitidwe a atomiki omwe purosesa ingathe kuchita (monga 'ADD register1 register2' imawonjezera manambala m'marejista awiri). Ntchito zomwe zimapezeka m'zilankhulo zilizonse zimapangidwa ndi malangizo awa. Ntchito zovuta kwambiri ziyenera kuchita malangizo ochulukirapo, kuti athe kuchedwa.

Zatsopano mu ARM64 ndi malangizo a AES encryption, SHA-1 ndi SHA-256 hashi ntchito. Chifukwa chake m'malo mwa kukhazikitsidwa kovutirapo, chilankhulo chokhacho chidzayitanira malangizowa - omwe adzabweretse kuthamanga kwakukulu pakuwerengera ntchito zotere ndipo mwachiyembekezo anawonjezera chitetezo muzofunsira. Mwachitsanzo ID yatsopano ya Touch ID imagwiritsanso ntchito malangizowa pakubisa, kulola kuthamanga kwenikweni ndi chitetezo (mwachidziwitso, wowukira amayenera kusintha purosesayo kuti apeze deta - zomwe sizingatheke kunena pang'ono kupatsidwa kukula kwake kakang'ono).

Zogwirizana ndi 32bit

Ndikofunika kunena kuti A7 imatha kuthamanga kwathunthu mumayendedwe a 32-bit popanda kufunikira kutsanzira. Zikutanthauza kuti iPhone 5s yatsopano imatha kuyendetsa mapulogalamu omwe amapangidwa pa 32-bit ARM popanda kutsika. Komabe, ndiye kuti sichitha kugwiritsa ntchito ntchito zatsopano za ARM64, chifukwa chake nthawi zonse zimakhala zofunikira kupanga mapangidwe apadera a A7, omwe amayenera kuthamanga mwachangu kwambiri.

Nthawi yothamanga imasintha

Runtime ndi kachidindo komwe kumawonjezera ntchito ku chilankhulo cha pulogalamu, chomwe chimatha kugwiritsa ntchito pomwe pulogalamuyo ikugwira ntchito, mpaka mutamasulira. Popeza Apple safunikira kusunga kugwirizana kwa mapulogalamu (kuti 64-bit binary imayenda pa 32-bit), angakwanitse kupanga zina zowonjezera pachinenero cha Objective-C.

Chimodzi mwa izo ndi chotchedwa cholozera cholembedwa (chizindikiro cholembedwa). Nthawi zambiri, zinthu ndi zolozera kuzinthuzo zimasungidwa m'malo osiyanasiyana a kukumbukira. Komabe, mitundu yatsopano ya pointer imalola makalasi omwe ali ndi data yaying'ono kuti asunge zinthu mwachindunji mu pointer. Sitepe iyi imathetsa kufunika kogawa kukumbukira kwa chinthucho, ingopanga cholozera ndi chinthu chomwe chili mkati mwake. Zolozera zolembedwa zimangothandizidwa muzomanga za 64-bit komanso chifukwa palibenso malo okwanira mu cholozera cha 32-bit kuti musunge zambiri zothandiza. Chifukwa chake, iOS, mosiyana ndi OS X, sinathandizire izi. Komabe, ndi kufika kwa ARM64, izi zikusintha, ndipo iOS yagwiranso ndi OS X pankhaniyi.

Ngakhale zolozera ndi zazitali 64, pa ARM64 ma bits 33 okha ndi omwe amagwiritsidwa ntchito pa adilesi yake. Ndipo ngati titha kumasula zotsalira za pointer, titha kugwiritsa ntchito malowa kusunga zina zowonjezera - monga momwe zilili ndi zolozera zotchulidwa. Mwachidziwitso, ichi ndi chimodzi mwazosintha zazikulu kwambiri m'mbiri ya Objective-C, ngakhale sizogulitsa - kotero ogwiritsa ntchito ambiri sangadziwe momwe Apple ikusunthira patsogolo Objective-C.

Ponena za deta yothandiza yomwe ingasungidwe m'malo otsala a cholozera chotere, Cholinga-C, mwachitsanzo, ikugwiritsa ntchito kusunga zomwe zimatchedwa. chiwerengero (chiwerengero cha maumboni). M'mbuyomu, chiwerengero chowerengera chinasungidwa m'malo osiyanasiyana kukumbukira, pa tebulo la hashi lokonzekera, koma izi zikhoza kuchepetsa dongosolo lonse ngati pali mafoni ambiri a alloc / dealloc / kusunga / kumasula. Gome limayenera kutsekedwa chifukwa cha chitetezo cha ulusi, kotero kuti chiwerengero cha zinthu ziwiri mu ulusi ziwiri sichikhoza kusinthidwa nthawi imodzi. Komabe, mtengo uwu umalowetsedwa kumene mu zina zomwe zimatchedwa isa zizindikiro. Ichi ndi china chosadziwika, koma mwayi waukulu ndi kuthamangitsidwa m'tsogolomu. Komabe, izi sizingakwaniritsidwe muzomanga za 32-bit.

Zambiri zokhudzana ndi zinthu zomwe zikugwirizana nazo, kaya chinthucho chikutchulidwa mofooka, ngati n'koyenera kupanga chowononga chinthucho, ndi zina zotero, zimayikidwanso m'malo otsalira a zolozera kuzinthuzo. Chifukwa cha chidziwitso ichi, Cholinga-C Runtime imatha kufulumizitsa nthawi yothamanga, yomwe imawonekera pa liwiro la pulogalamu iliyonse. Kuchokera pakuyesa, izi zikutanthauza za 40-50% kufulumira kwa mafoni onse owongolera kukumbukira. Pongosinthira ku 64-bit pointers ndikugwiritsa ntchito malo atsopanowa.

Pomaliza

Ngakhale ochita mpikisano adzayesa kufalitsa lingaliro lakuti kusamukira ku zomangamanga za 64-bit sikofunikira, mudzadziwa kale kuti ichi ndi lingaliro lopanda chidziwitso. Ndizowona kuti kusintha kwa 64-bit osasintha chilankhulo chanu kapena mapulogalamu sikukutanthauza kalikonse - kumachepetsanso dongosolo lonse. Koma A7 yatsopano imagwiritsa ntchito ARM64 yamakono yokhala ndi malangizo atsopano, ndipo Apple yatenga vuto kuti isinthe chilankhulo chonse cha Objective-C ndikugwiritsa ntchito mwayi watsopano - chifukwa chake kufulumira kolonjezedwa.

Pano tatchula zifukwa zazikulu zomwe 64-bit zomangamanga ndi sitepe yoyenera patsogolo. Ndikusintha kwina "pansi pa hood", chifukwa chomwe Apple idzayesa kukhala patsogolo osati kokha ndi mapangidwe, mawonekedwe a ogwiritsa ntchito komanso chilengedwe cholemera, koma makamaka ndi umisiri wamakono pamsika.

Chitsime: mikeash.com
.