Kaw ad

Mike Ash mob siab rau nws blog cov tswv yim cuam tshuam ntawm kev hloov mus rau 64-ntsis architecture hauv iPhone 5S. Kab lus no qhia txog nws qhov kev tshawb pom.

Qhov laj thawj rau cov ntawv nyeem no yog vim muaj ntau cov ntaub ntawv tsis raug tau nthuav tawm txog qhov tshiab iPhone 5s nrog 64-ntsis ARM processor tiag tiag txhais tau rau cov neeg siv thiab kev ua lag luam. Ntawm no peb yuav sim coj lub hom phiaj cov ntaub ntawv hais txog kev ua tau zoo, muaj peev xwm thiab cuam tshuam ntawm qhov kev hloov pauv no rau cov neeg tsim khoom.

"64 ntsis"

Muaj ob feem ntawm lub processor uas daim ntawv "X-ntsis" tuaj yeem xa mus rau - qhov dav ntawm cov lej sau npe thiab qhov dav ntawm tus taw tes. Hmoov zoo, ntawm cov txheej txheem niaj hnub no feem ntau cov dav dav yog tib yam, yog li hauv A7 qhov no txhais tau tias 64-ntsis cov lej sau npe thiab 64-ntsis pointers.

Txawm li cas los xij, nws tseem ceeb sib npaug los taw qhia tias "64 ntsis" tsis txhais li cas: RAM qhov chaw nyob qhov loj. Tus naj npawb ntawm cov khoom sib txuas lus nrog RAM (yog li tus nqi ntawm RAM ib lub cuab yeej tuaj yeem txhawb nqa) tsis cuam tshuam nrog cov lej ntawm CPU. ARM processors muaj nyob qhov twg ntawm 26- thiab 40-ntsis chaw nyob thiab tuaj yeem hloov pauv ntawm nws tus kheej ntawm qhov system.

  • Cov ntaub ntawv loj loj. Tus nqi ntawm cov ntaub ntawv tau txais los ntawm RAM los yog tsis nco yog zoo sib xws ntawm qhov no. Cov lus qhia ntawm tus txheej txheem processor yuav thov cov ntaub ntawv sib txawv, tab sis lawv raug xa mus rau hauv chunks lossis tau txais ntau tshaj qhov xav tau los ntawm kev nco. Nws nyob ntawm qhov loj ntawm cov ntaub ntawv quantum. Lub iPhone 5 twb tau txais cov ntaub ntawv los ntawm lub cim xeeb hauv 64-ntsis quanta (thiab muaj 32-ntsis processor), thiab peb tuaj yeem ntsib qhov ntau thiab tsawg txog 192 khoom.
  • Txhua yam cuam tshuam nrog ntab taw tes. Qhov loj ntawm cov ntawv sau npe (FPU) yog ib qho kev ywj pheej ntawm kev ua haujlwm sab hauv ntawm lub processor. ARM tau siv 64-ntsis FPU txij thaum ua ntej ARM64 (64-ntsis ARM processor).

General zoo thiab qhov tsis zoo

Yog tias peb sib piv lwm qhov zoo ib yam 32-ntsis thiab 64-ntsis architectures, lawv feem ntau tsis txawv li ntawd. Qhov no yog ib qho ntawm cov laj thawj rau qhov tsis meej pem ntawm cov pej xeem tab tom nrhiav rau ib qho laj thawj vim li cas Apple tab tom hloov mus rau 64 ntsis hauv cov khoom siv mobile thiab. Txawm li cas los xij, nws tag nrho los ntawm qhov tshwj xeeb ntawm A7 (ARM64) processor thiab Apple siv nws li cas, tsis yog los ntawm qhov tseeb tias lub processor muaj 64-ntsis architecture.

Txawm li cas los xij, yog tias peb tseem saib qhov sib txawv ntawm ob lub tuam tsev no, peb yuav pom ntau qhov sib txawv. Qhov pom tseeb yog tias 64-ntsis cov lej sau npe tuaj yeem ua 64-ntsis cov lej ua haujlwm tau zoo dua. Txawm hais tias ua ntej, nws tuaj yeem ua haujlwm nrog lawv ntawm 32-ntsis processors, tab sis qhov no feem ntau txhais tau tias muab faib ua 32-ntsis ntev daim, uas ua rau kev suav qeeb. Yog li 64-ntsis processor feem ntau tuaj yeem suav 64-ntsis hom sai li 32-ntsis sawv daws yuav. Qhov no txhais tau hais tias cov ntawv thov uas feem ntau siv 64-ntsis hom tuaj yeem khiav nrawm dua ntawm 64-ntsis processor.

Txawm hais tias 64 ntsis tsis cuam tshuam rau tag nrho cov RAM uas lub processor siv tau, nws tuaj yeem ua kom yooj yim rau kev ua haujlwm nrog cov chunks loj ntawm RAM hauv ib qho kev pab cuam. Ib qho kev pab cuam uas khiav ntawm 32-ntsis processor tsuas muaj txog 4 GB ntawm qhov chaw nyob. Muab rau hauv tus account tias cov kev khiav hauj lwm qhov system thiab cov qauv tsev qiv ntawv coj mus rau ib yam dab tsi, qhov no tawm qhov kev pab cuam nrog rau qhov chaw ntawm 1-3 GB rau daim ntawv thov siv. Txawm li cas los xij, yog tias lub kaw lus 32-ntsis muaj ntau dua 4 GB ntawm RAM, siv lub cim xeeb ntawd nyuaj me ntsis. Peb yuav tsum siv zog yuam OS los qhia cov chunks loj ntawm lub cim xeeb rau peb qhov kev pab cuam (nco virtualization), lossis peb tuaj yeem faib cov kev pab cuam rau ntau yam txheej txheem (qhov twg txhua txoj kev rov ua dua muaj 4GB ntawm lub cim xeeb muaj rau kev hais ncaj qha).

Txawm li cas los xij, cov "hacks" no nyuaj heev thiab qeeb tias tsawg kawg ntawm daim ntawv thov siv lawv. Hauv kev xyaum, ntawm 32-ntsis processor, txhua qhov kev pab cuam tsuas yog siv nws qhov 1-3 GB ntawm lub cim xeeb, thiab ntau dua RAM tuaj yeem siv los khiav ntau qhov kev pab cuam tib lub sijhawm lossis siv lub cim xeeb no ua qhov tsis muaj (caching). Cov kev siv no yog cov tswv yim, tab sis peb xav tau ib qho kev pab cuam kom tau yooj yim siv chunks ntawm lub cim xeeb loj dua 4GB.

Tam sim no peb tuaj rau qhov nquag (qhov tseeb tsis yog) thov tias tsis muaj ntau tshaj 4GB ntawm lub cim xeeb, 64-ntsis architecture tsis muaj txiaj ntsig. Qhov chaw nyob loj dua yog qhov muaj txiaj ntsig txawm nyob hauv lub kaw lus uas tsis nco qab. Memory-mapped cov ntaub ntawv yog ib qho cuab yeej siv tau qhov twg ib feem ntawm cov ntaub ntawv cov ntsiab lus yog kev sib txuas nrog cov txheej txheem nco tsis tas tag nrho cov ntaub ntawv yuav tsum tau muab tso rau hauv lub cim xeeb. Yog li, lub kaw lus tuaj yeem, piv txwv li, maj mam ua cov ntaub ntawv loj ntau zaus ntau dua li lub peev xwm RAM. Nyob rau hauv 32-ntsis system, xws li cov ntaub ntawv loj tsis tuaj yeem txhim kho kev nco-mapped, whereas ntawm 64-ntsis system, nws yog ib daim ncuav mog qab zib, ua tsaug rau qhov chaw nyob loj dua.

Txawm li cas los xij, qhov loj dua ntawm cov taw qhia tseem coj tau ib qho tsis zoo: txwv tsis pub cov kev pab cuam zoo ib yam xav tau ntau lub cim xeeb ntawm 64-ntsis processor (cov taw qhia loj no yuav tsum tau muab khaws cia rau qhov chaw). Txij li cov pointers yog ib feem ntawm cov kev pab cuam, qhov sib txawv no tuaj yeem ua rau lub nra hnyav, uas ua rau tag nrho lub cev khiav qeeb. Yog li hauv kev xav, peb tuaj yeem pom tias yog tias peb nyuam qhuav hloov lub processor architecture rau 64-ntsis, nws yuav ua rau tag nrho cov kab ke qeeb. Yog li qhov tseem ceeb no yuav tsum sib npaug los ntawm kev ua kom zoo dua qub hauv lwm qhov chaw.

ARM64

Lub A7, lub 64-ntsis processor powering lub tshiab iPhone 5s, tsis yog ib tug niaj hnub ARM processor nrog wider register. ARM64 muaj kev txhim kho loj dua cov laus, 32-ntsis version.

Apple A7 processor.

Kev Sau Npe

ARM64 tuav ob zaug ntau tus lej sau npe raws li 32-ntsis ARM (yuav tsum ceev faj tsis txhob cuam tshuam tus naj npawb thiab qhov dav ntawm kev sau npe - peb tau tham txog qhov dav hauv "64-ntsis" ntu. Yog li ARM64 muaj ob zaug ntau dua thiab ob zaug ntau dua. sau npe). Lub 32-ntsis ARM muaj 16 tus lej sau npe: ib qho program txee (PC - muaj tus lej ntawm cov lus qhia tam sim no), pawg pointer (tus taw tes rau kev ua haujlwm), kev sib txuas sau npe (tus pointer rov qab los tom qab ua haujlwm yog tiav), thiab qhov seem 13 yog rau daim ntawv thov siv. Txawm li cas los xij, ARM64 muaj 32 tus lej sau npe, suav nrog ib tus lej xoom, ib daim ntawv teev npe txuas, tus taw tes taw qhia (zoo ib yam li pawg taw qhia), thiab ib qho tshwj tseg rau yav tom ntej. Qhov no tso rau peb nrog 28 cov npe rau kev siv daim ntawv thov, ntau dua ob npaug ntawm 32-ntsis ARM. Nyob rau tib lub sijhawm, ARM64 tau muab ob npaug ntawm tus lej ntawm tus lej ntab ntab (FPU) sau npe los ntawm 16 txog 32 128-ntsis sau npe.

Tab sis vim li cas tus naj npawb ntawm cov npe tseem ceeb heev? Kev nco feem ntau qeeb dua li CPU suav thiab nyeem / sau ntawv tuaj yeem siv sijhawm ntev heev. Qhov no yuav ua rau lub processor ceev yuav tsum tau tos rau lub cim xeeb thiab peb yuav ntaus lub ntuj ceev txwv ntawm lub cev. Cov txheej txheem sim zais qhov kev tsis txaus siab no nrog cov txheej txheem ntawm buffers, tab sis txawm tias qhov ceev tshaj plaws (L1) tseem qeeb dua li qhov kev suav ntawm processor. Txawm li cas los xij, cov ntawv sau npe yog cov hlwb ncaj qha rau hauv lub processor thiab lawv cov kev nyeem / sau tau nrawm txaus kom tsis txhob ua rau lub processor qeeb. Yog li, tus naj npawb ntawm cov npe siv tau txhais tau hais tias tus nqi ntawm lub cim xeeb ceev tshaj plaws rau kev suav cov processor, uas cuam tshuam rau kev ceev ntawm tag nrho cov kab ke.

Nyob rau tib lub sijhawm, qhov kev ceev no xav tau kev txhawb nqa zoo los ntawm lub compiler, kom cov lus tuaj yeem siv cov ntawv sau npe no thiab tsis tas yuav khaws txhua yam hauv daim ntawv thov dav dav (qhov qeeb) nco.

Cov txheej txheem qhia

ARM64 tseem coj cov kev hloov pauv loj rau cov txheej txheem qhia. Cov txheej txheem qhia yog ib txheej ntawm kev ua haujlwm atomic uas tus processor tuaj yeem ua tau (xws li 'ADD register1 register2' ntxiv cov lej hauv ob lub npe). Cov haujlwm muaj nyob rau ib hom lus yog tsim los ntawm cov lus qhia no. Cov haujlwm nyuaj dua yuav tsum ua cov lus qhia ntxiv, yog li lawv tuaj yeem ua qeeb dua.

Tshiab hauv ARM64 yog cov lus qhia rau AES encryption, SHA-1 thiab SHA-256 hash functions. Yog li es tsis txhob siv txoj haujlwm nyuaj, tsuas yog cov lus yuav hu cov lus qhia no - uas yuav ua rau muaj kev nrawm nrawm rau kev suav ntawm cov haujlwm no thiab cia siab tias yuav ntxiv kev ruaj ntseg hauv cov ntawv thov. E.g. Tus tshiab Touch ID kuj siv cov lus qhia no hauv kev encryption, tso cai rau kev ceev thiab kev nyab xeeb tiag tiag (hauv txoj kev xav, tus neeg tawm tsam yuav tsum hloov kho lub processor nws tus kheej kom nkag mus rau cov ntaub ntawv - uas yog qhov ua tsis tau zoo los hais qhov tsawg kawg yog muab nws qhov me me).

Compatibility nrog 32 ntsis

Nws yog ib qho tseem ceeb uas yuav tsum tau hais tias A7 tuaj yeem khiav tag nrho hauv 32-ntsis hom yam tsis tas yuav tsum muaj emulation. Nws txhais tau hais tias tus tshiab iPhone 5s tuaj yeem khiav cov ntawv sau ua ke ntawm 32-ntsis ARM yam tsis muaj kev poob qis. Txawm li cas los xij, tom qab ntawd nws tsis tuaj yeem ua kom zoo dua ntawm cov haujlwm tshiab ARM64, yog li nws yog ib txwm tsim nyog los tsim tshwj xeeb rau A7, uas yuav tsum khiav nrawm dua.

Lub sijhawm hloov pauv

Runtime yog tus lej uas ntxiv cov haujlwm rau cov lus programming, uas nws muaj peev xwm siv tau thaum daim ntawv thov ua haujlwm, mus txog tom qab kev txhais lus. Txij li thaum Apple tsis tas yuav tswj hwm daim ntawv thov sib raug zoo (uas yog 64-ntsis binary khiav ntawm 32-ntsis), lawv tuaj yeem them taus los txhim kho ob peb yam ntxiv rau hom lus-C.

Ib tug ntawm lawv yog hu ua tagged pointer (cim qhia). Feem ntau, cov khoom thiab cov taw qhia rau cov khoom no tau muab cia rau hauv nyias qhov chaw ntawm lub cim xeeb. Txawm li cas los xij, hom pointer tshiab tso cai rau cov chav kawm nrog cov ntaub ntawv me me los khaws cov khoom ncaj qha rau hauv tus taw tes. Cov kauj ruam no tshem tawm qhov yuav tsum tau faib lub cim xeeb ncaj qha rau cov khoom, tsuas yog tsim lub pointer thiab cov khoom hauv nws. Tagged pointers tsuas yog txhawb nqa hauv 64-ntsis architecture tseem vim qhov tseeb tias tsis muaj chaw txaus hauv 32-ntsis tus taw tes los khaws cov ntaub ntawv muaj txiaj ntsig txaus. Yog li ntawd, iOS no, tsis zoo li OS X, tseem tsis tau txhawb nqa qhov no. Txawm li cas los xij, nrog kev tuaj txog ntawm ARM64, qhov no hloov pauv, thiab iOS tau ntes nrog OS X hauv qhov no thiab.

Txawm hais tias tus taw tes yog 64 me ntsis ntev, ntawm ARM64 tsuas yog 33 cov khoom siv rau tus taw tes qhov chaw nyob. Thiab yog hais tias peb muaj peev xwm ntseeg tau unmask tus so ntawm tus pointer me ntsis, peb yuav siv tau qhov chaw no los khaws cov ntaub ntawv ntxiv - raws li nyob rau hauv cov ntaub ntawv ntawm cov hais tagged pointers. Conceptually, qhov no yog ib qho ntawm cov kev hloov loj tshaj plaws nyob rau hauv keeb kwm ntawm Objective-C, txawm hais tias nws tsis yog ib qho kev ua lag luam feature - yog li feem ntau cov neeg siv yuav tsis paub yuav ua li cas Apple tab tom txav Objective-C mus rau tom ntej.

Raws li rau cov ntaub ntawv muaj txiaj ntsig uas tuaj yeem khaws cia rau hauv qhov chaw seem ntawm lub cim cim npe, Lub Hom Phiaj-C, piv txwv li, tam sim no siv nws los khaws cov npe hu ua suav suav (tus naj npawb ntawm cov ntaub ntawv). Yav dhau los, cov ntaub ntawv suav tau muab khaws cia rau hauv ib qho chaw sib txawv hauv lub cim xeeb, hauv ib lub rooj hash npaj rau nws, tab sis qhov no tuaj yeem ua rau tag nrho cov kab ke qeeb qeeb hauv cov ntaub ntawv ntau ntawm alloc/dealloc/retain/release calls. Lub rooj yuav tsum raug kaw vim muaj kev nyab xeeb ntawm xov, yog li cov ntaub ntawv suav ntawm ob yam khoom hauv ob txoj xov tsis tuaj yeem hloov pauv tib lub sijhawm. Txawm li cas los xij, tus nqi no yog qhov tshiab tso rau hauv qhov seem ntawm qhov hu ua yoga ntsuas. Qhov no yog lwm qhov tsis meej, tab sis muaj txiaj ntsig zoo thiab kev nrawm dua yav tom ntej. Txawm li cas los xij, qhov no tsis tuaj yeem ua tiav hauv 32-ntsis architecture.

Cov ntaub ntawv hais txog cov khoom sib txuas, txawm tias cov khoom siv tsis muaj zog, txawm hais tias nws yog qhov tsim nyog los tsim lub destructor rau cov khoom, thiab lwm yam, kuj tau muab tso rau hauv qhov chaw seem ntawm cov taw tes rau cov khoom Ua tsaug rau cov ntaub ntawv no, Lub Hom Phiaj-C runtime muaj peev xwm ua kom ceev lub sijhawm khiav, uas yog cuam tshuam hauv kev nrawm ntawm txhua daim ntawv thov. Los ntawm kev sim, qhov no txhais tau hais tias txog 40-50% nrawm ntawm tag nrho cov kev tswj hwm kev nco. Tsuas yog los ntawm kev hloov mus rau 64-ntsis pointers thiab siv qhov chaw tshiab no.

Xaus

Txawm hais tias cov neeg sib tw yuav sim nthuav tawm lub tswv yim tias kev txav mus rau 64-ntsis architecture yog qhov tsis tsim nyog, koj yuav twb paub tias qhov no tsuas yog kev xav tsis txaus ntseeg. Nws yog qhov tseeb tias tsuas yog hloov mus rau 64-ntsis yam tsis hloov cov lus lossis kev siv rau nws tsis txhais tau dab tsi - nws txawm ua rau tag nrho lub cev ua haujlwm qeeb. Tab sis A7 tshiab siv ARM64 niaj hnub nrog cov txheej txheem qhia tshiab, thiab Apple tau siv qhov teeb meem los hloov kho tag nrho Cov Hom Phiaj-C cov lus thiab coj kom zoo dua ntawm cov peev txheej tshiab - yog li cov lus cog tseg kom nrawm.

Ntawm no peb tau hais txog ntau qhov laj thawj vim li cas 64-ntsis architecture yog txoj hauv kev mus rau pem hauv ntej. Nws yog lwm lub kiv puag ncig "hauv qab lub hood", ua tsaug uas Apple yuav sim nyob rau hauv lub forefront tsis tsuas yog nrog tsim, neeg siv interface thiab nplua nuj ecosystem, tab sis feem ntau nrog cov niaj hnub yees nyob rau hauv lub lag luam.

Source: mikeash.com
.