Close ad

Mike Ash dedicated sa iyang blog ang praktikal nga mga implikasyon sa pagbalhin sa 64-bit nga arkitektura sa iPhone 5S. Kini nga artikulo nagpunting sa iyang mga nahibal-an.

Ang rason alang niini nga teksto mao ang nag-una tungod sa dako nga kantidad sa sayop nga impormasyon nga mikaylap mahitungod sa unsa ang bag-ong iPhone 5s uban sa usa ka 64-bit ARM processor sa tinuod nagpasabot alang sa mga tiggamit ug sa merkado. Dinhi kita mosulay sa pagdala sa tumong nga impormasyon mahitungod sa performance, kapabilidad ug mga implikasyon niini nga transisyon alang sa mga developers.

"64 gamay"

Adunay duha ka bahin sa usa ka processor nga ang "X-bit" nga label mahimong magtumong - ang gilapdon sa integer nga mga rehistro ug ang gilapdon sa mga pointer. Maayo na lang, sa kadaghanan sa mga modernong processor kini nga mga gilapdon parehas, mao nga sa kaso sa A7 kini nagpasabut nga 64-bit integer registers ug 64-bit pointer.

Bisan pa, parehas nga hinungdanon nga itudlo kung unsa ang "64bit" DILI gipasabut: Ang gidak-on sa pisikal nga adres sa RAM. Ang gidaghanon sa mga bit nga makigkomunikar sa RAM (sa ingon ang gidaghanon sa RAM nga masuportahan sa usa ka himan) wala'y kalabutan sa gidaghanon sa mga CPU bits. Ang mga processor sa ARM adunay bisan asa tali sa 26- ug 40-bit nga mga adres ug mahimong usbon nga independente sa ubang bahin sa sistema.

  • Gidak-on sa data bus. Ang kantidad sa datos nga nadawat gikan sa RAM o buffer memory parehas nga independente sa kini nga hinungdan. Ang indibiduwal nga mga instruksyon sa processor mahimong mangayo ug lain-laing kantidad sa datos, apan kini ipadala sa mga tipik o makadawat ug labaw pa sa gikinahanglan gikan sa memorya. Nagdepende kini sa gidak-on sa datos nga quantum. Ang iPhone 5 nakadawat na og data gikan sa memorya sa 64-bit quanta (ug adunay 32-bit processor), ug kita makasugat og mga gidak-on hangtod sa 192 bits.
  • Bisan unsa nga may kalabutan sa floating point. Ang gidak-on sa ingon nga mga rehistro (FPU) independente na usab sa internal nga pagtrabaho sa processor. Ang ARM naggamit sa 64-bit FPU sukad sa wala pa ang ARM64 (64-bit ARM processor).

Kinatibuk-ang mga bentaha ug mga disbentaha

Kung atong itandi ang parehas nga 32bit ug 64bit nga mga arkitektura, kasagaran dili kini lahi. Kini mao ang usa sa mga rason alang sa kinatibuk-ang kalibog sa publiko nga nangita alang sa usa ka rason ngano nga Apple sa pagbalhin ngadto sa 64bit sa mga mobile device ingon man. Bisan pa, kini tanan gikan sa piho nga mga parameter sa A7 (ARM64) nga processor ug kung giunsa kini gigamit sa Apple, dili lamang gikan sa kamatuoran nga ang processor adunay 64-bit nga arkitektura.

Bisan pa, kung tan-awon pa naton ang mga kalainan tali niining duha nga mga arkitektura, makit-an naton ang daghang mga kalainan. Ang klaro mao nga ang 64-bit integer registers makahimo sa pagdumala sa 64-bit integer nga mas episyente. Bisan kaniadto, posible nga magtrabaho uban kanila sa 32-bit nga mga processor, apan kasagaran kini nagpasabut nga gibahin kini sa 32-bit nga taas nga mga piraso, nga hinungdan sa hinay nga mga kalkulasyon. Mao nga ang usa ka 64-bit nga processor sa kasagaran makahimo sa pag-compute sa 64-bit nga mga tipo sama ka paspas sa 32-bit nga mga. Kini nagpasabot nga ang mga aplikasyon nga kasagarang naggamit ug 64-bit nga mga tipo mahimong mas paspas nga modagan sa 64-bit nga processor.

Bisan kung ang 64bit dili makaapekto sa kinatibuk-ang kantidad sa RAM nga magamit sa processor, kini makapasayon ​​sa pagtrabaho sa dagkong mga tipik sa RAM sa usa ka programa. Ang bisan unsang programa nga nagdagan sa usa ka 32-bit nga processor adunay mga 4 GB nga espasyo sa adres. Giisip nga ang operating system ug standard nga mga librarya adunay usa ka butang, kini nagbilin sa programa sa usa ka dapit tali sa 1-3 GB alang sa paggamit sa aplikasyon. Bisan pa, kung ang usa ka 32-bit nga sistema adunay labaw pa sa 4 GB nga RAM, ang paggamit sa kana nga panumduman medyo labi ka komplikado. Kinahanglang modangop kita sa pagpugos sa operating system sa pagmapa niining mas dagkong mga tipik sa memorya para sa atong programa (memory virtualization), o mahimo natong bahinon ang programa ngadto sa daghang mga proseso (diin ang matag proseso pag-usab sa teoriya adunay 4GB nga memorya nga magamit alang sa direktang pagtubag).

Bisan pa, kini nga mga "hack" lisud kaayo ug hinay nga ang labing gamay nga mga aplikasyon naggamit niini. Sa praktis, sa usa ka 32-bit nga processor, ang matag programa mogamit lamang sa iyang 1-3 GB nga panumduman, ug mas daghan nga RAM ang magamit sa pagpadagan sa daghang mga programa sa samang higayon o paggamit niini nga panumduman isip buffer (caching). Praktikal kini nga mga gamit, apan gusto namon nga ang bisan unsang programa dali nga magamit ang mga tipik sa memorya nga mas dako pa sa 4GB.

Karon moabut kami sa kanunay (sa tinuud dili husto) nga pag-angkon nga kung wala’y labaw sa 4GB nga panumduman, ang usa ka 64-bit nga arkitektura wala’y kapuslanan. Ang usa ka mas dako nga espasyo sa adres mapuslanon bisan sa usa ka sistema nga adunay gamay nga memorya. Ang memory-mapped nga mga file usa ka magamit nga himan diin ang bahin sa mga sulud sa file lohikal nga nalambigit sa memorya sa proseso nga wala ang tibuuk nga file kinahanglan i-load sa memorya. Sa ingon, ang sistema mahimo, pananglitan, anam-anam nga magproseso sa dagkong mga file sa daghang mga higayon nga mas dako kaysa sa kapasidad sa RAM. Sa usa ka 32-bit nga sistema, ang ingon nga dagkong mga file dili kasaligan nga mapa sa memorya, samtang sa usa ka 64-bit nga sistema, kini usa ka piraso sa cake, salamat sa labi ka dako nga espasyo sa adres.

Bisan pa, ang mas dako nga gidak-on sa mga pointer nagdala usab usa ka dako nga disbentaha: kung dili parehas nga mga programa nanginahanglan dugang nga panumduman sa usa ka 64-bit nga processor (kining dagkong mga pointer kinahanglan nga tipigan bisan diin). Tungod kay ang mga pointer usa ka kanunay nga bahin sa mga programa, kini nga kalainan mahimong makapabug-at sa cache, nga sa baylo hinungdan sa tibuuk nga sistema sa pagdagan nga hinay. Busa sa panglantaw, atong makita nga kung usbon lang nato ang arkitektura sa processor ngadto sa 64-bit, kini makapahinay sa tibuok sistema. Mao nga kini nga hinungdan kinahanglan nga balanse sa daghang mga pag-optimize sa ubang mga lugar.

ARM64

Ang A7, ang 64-bit processor nga nagpaandar sa bag-ong iPhone 5s, dili lang usa ka regular nga processor sa ARM nga adunay mas lapad nga mga rehistro. Ang ARM64 naglangkob sa dagkong mga kalamboan sa mas karaan, 32-bit nga bersyon.

Apple A7 processor.

Registry

Ang ARM64 adunay doble nga gidaghanon sa integer nga mga rehistro kay sa 32-bit nga ARM (pag-amping nga dili malibug ang gidaghanon ug gilapdon sa mga rehistro - naghisgot kami bahin sa gilapdon sa seksyon nga "64-bit". mga rehistro). Ang 64-bit ARM adunay 32 ka integer nga mga rehistro: usa ka counter sa programa (PC - naglangkob sa gidaghanon sa kasamtangan nga instruksyon), usa ka stack pointer (usa ka pointer sa usa ka function nga nagpadayon), usa ka link register (usa ka pointer sa pagbalik human sa katapusan. sa function), ug ang nahabilin nga 16 alang sa paggamit sa aplikasyon. Bisan pa, ang ARM13 adunay 64 ka integer nga mga rehistro, lakip ang usa ka zero nga rehistro, usa ka link nga rehistro, usa ka frame pointer (sama sa usa ka stack pointer), ug usa nga gitagana alang sa umaabot. Nagbilin kini kanamo og 32 ka mga rehistro alang sa paggamit sa aplikasyon, labaw pa sa doble sa 28-bit nga ARM. Sa samang higayon, gidoble sa ARM32 ang gidaghanon sa floating-point number (FPU) nga mga rehistro gikan sa 64 ngadto sa 16 32-bit nga mga rehistro.

Apan nganong importante kaayo ang gidaghanon sa mga rehistro? Ang memorya sa kasagaran mas hinay kaysa mga kalkulasyon sa CPU ug ang pagbasa/pagsulat mahimong dugay kaayo. Kini maghimo sa paspas nga processor nga magpadayon sa paghulat alang sa panumduman ug maigo namon ang natural nga limitasyon sa tulin sa sistema. Gisulayan sa mga processor nga itago kini nga kapansanan gamit ang mga layer sa buffer, apan bisan ang labing paspas (L1) labi ka hinay kaysa kalkulasyon sa processor. Bisan pa, ang mga rehistro mao ang mga selyula sa memorya nga direkta sa processor ug ang ilang pagbasa/pagsulat igo nga kusog nga dili mohinay sa processor. Ang gidaghanon sa mga rehistro halos nagpasabot sa gidaghanon sa pinakapaspas nga panumduman alang sa mga kalkulasyon sa processor, nga dakog epekto sa gikusgon sa tibuok sistema.

Sa samang higayon, kini nga katulin nagkinahanglan og maayo nga suporta sa pag-optimize gikan sa compiler, aron ang pinulongan makagamit niini nga mga rehistro ug dili kinahanglan nga tipigan ang tanan sa kinatibuk-ang aplikasyon (ang hinay) nga panumduman.

Set sa instruksiyon

Ang ARM64 nagdala usab ug dagkong kausaban sa set sa instruksiyon. Ang set sa instruksiyon usa ka set sa atomic operations nga mahimo sa usa ka processor (eg 'ADD register1 register2' idugang ang mga numero sa duha ka register). Ang mga gimbuhaton nga magamit sa indibidwal nga mga sinultian gilangkuban niini nga mga panudlo. Ang mas komplikado nga mga gimbuhaton kinahanglang magpatuman ug dugang mga instruksiyon, aron kini mahimong mas hinay.

Bag-o sa ARM64 mao ang mga instruksyon alang sa AES encryption, SHA-1 ug SHA-256 hash functions. Mao nga imbis nga usa ka komplikado nga pagpatuman, ang pinulongan ra ang magtawag niini nga panudlo - nga magdala usa ka dako nga pagpadali sa pagkalkula sa ingon nga mga gimbuhaton ug gilauman nga madugangan ang seguridad sa mga aplikasyon. E.g. ang bag-ong Touch ID naggamit usab niini nga mga instruksyon sa pag-encrypt, nga nagtugot alang sa tinuod nga tulin ug seguridad (sa teorya, ang usa ka tig-atake kinahanglan nga mag-usab sa processor mismo aron ma-access ang datos - dili praktikal nga isulti ang labing gamay nga gihatag sa gamay nga gidak-on niini).

Pagkaangay sa 32bit

Mahinungdanon nga hisgutan nga ang A7 mahimong modagan sa hingpit sa 32-bit mode nga wala kinahanglana ang pagsundog. Kini nagpasabot nga ang bag-ong iPhone 5s makadagan sa mga aplikasyon nga gihugpong sa 32-bit ARM nga walay bisan unsang paghinay. Bisan pa, dili kini magamit sa bag-ong mga function sa ARM64, mao nga kanunay nga takus ang paghimo usa ka espesyal nga pagtukod alang lamang sa A7, nga kinahanglan nga modagan nga labi ka paspas.

Mga pagbag-o sa runtime

Ang Runtime mao ang code nga nagdugang mga function sa programming language, nga magamit niini samtang nagdagan ang aplikasyon, hangtod pagkahuman sa paghubad. Tungod kay ang Apple dili kinahanglan nga magpadayon sa pagpahiangay sa aplikasyon (nga ang usa ka 64-bit binary nga nagdagan sa 32-bit), sila makahimo sa paghimo og pipila pa nga mga pag-uswag sa Objective-C nga pinulongan.

Usa niini mao ang gitawag nga gi-tag nga pointer (gimarkahan nga timailhan). Kasagaran, ang mga butang ug mga pointer sa mga butang gitipigan sa lainlaing mga bahin sa memorya. Bisan pa, ang bag-ong mga tipo sa pointer nagtugot sa mga klase nga adunay gamay nga datos nga magtipig sa mga butang direkta sa pointer. Kini nga lakang nagwagtang sa panginahanglan sa paggahin og memory direkta alang sa butang, paghimo lang og pointer ug ang butang sa sulod niini. Gisuportahan lamang ang tag nga mga pointer sa 64-bit nga arkitektura tungod usab sa kamatuoran nga wala nay igong luna sa usa ka 32-bit nga pointer aron tipigan ang igo nga mapuslanong datos. Busa, ang iOS, dili sama sa OS X, wala pa nagsuporta niini nga bahin. Bisan pa, sa pag-abut sa ARM64, kini nagbag-o, ug ang iOS nakakuha usab sa OS X niining bahina usab.

Bisan tuod ang mga pointer 64 bits ang gitas-on, sa ARM64 33 bits lang ang gigamit alang sa kaugalingong address sa pointer. Ug kung masaligan namon nga ma-unmask ang nahabilin nga mga tipik sa pointer, magamit namon kini nga wanang aron magtipig dugang nga datos - sama sa kaso sa nahisgutan nga mga tag nga pointer. Sa konsepto, kini mao ang usa sa pinakadako nga kausaban sa kasaysayan sa Objective-C, bisan tuod kini dili usa ka marketable nga bahin - mao nga kadaghanan sa mga tiggamit dili mahibalo kon sa unsang paagi Apple sa paglihok sa Objective-C sa unahan.

Sama sa alang sa mapuslanon nga datos nga mahimong tipigan sa nahabilin nga wanang sa ingon nga usa ka gi-tag nga pointer, ang Objective-C, pananglitan, gigamit na kini karon sa pagtipig sa gitawag nga ihap sa pakisayran (gidaghanon sa mga pakisayran). Kaniadto, ang ihap sa pakisayran gitipigan sa usa ka lahi nga lugar sa panumduman, sa usa ka hash nga lamesa nga giandam alang niini, apan kini makapahinay sa tibuuk nga sistema sa kaso sa daghang mga alloc/dealloc/retain/release nga mga tawag. Kinahanglang ma-lock ang lamesa tungod sa kaluwasan sa hilo, mao nga ang ihap sa pakisayran sa duha ka butang sa duha ka hilo dili mausab sa samang higayon. Apan, kini nga bili bag-o lang gisal-ut ngadto sa uban sa gitawag nga isa mga timailhan. Kini mao ang lain nga dili makita, apan dako nga bentaha ug acceleration sa umaabot. Bisan pa, dili kini makab-ot sa usa ka 32-bit nga arkitektura.

Ang kasayuran bahin sa mga kauban nga butang, kung ang butang huyang nga gi-refer, kung kinahanglan ba nga maghimo usa ka tiglaglag alang sa butang, ug uban pa, bag-o usab nga gisal-ot sa nahabilin nga lugar sa mga pointer sa mga butang. Salamat sa kini nga kasayuran, ang Tumong-C Ang runtime makahimo sa batakang pagpadali sa runtime, nga makita sa gikusgon sa matag aplikasyon. Gikan sa pagsulay, kini nagpasabut nga mga 40-50% nga pagpadali sa tanan nga mga tawag sa pagdumala sa memorya. Pinaagi lang sa pagbalhin sa 64-bit nga mga punto ug paggamit niining bag-ong luna.

Panapos

Bisan kung ang mga kakompetensya mosulay sa pagpakaylap sa ideya nga ang pagbalhin sa usa ka 64-bit nga arkitektura dili kinahanglan, nahibal-an na nimo nga kini usa ra ka wala mahibal-an nga opinyon. Tinuod nga ang pagbalhin sa 64-bit nga wala’y pagpahiangay sa imong lengguwahe o aplikasyon wala’y gipasabut bisan unsa - bisan kini nagpahinay sa tibuuk nga sistema. Apan ang bag-ong A7 naggamit sa usa ka modernong ARM64 nga adunay bag-ong set sa instruksiyon, ug giproblema sa Apple ang pag-modernize sa tibuok Objective-C nga pinulongan ug pahimuslan ang bag-ong mga kapabilidad - busa ang gisaad nga pagpadali.

Dinhi among gihisgutan ang daghang mga hinungdan ngano nga ang usa ka 64-bit nga arkitektura mao ang husto nga lakang sa unahan. Kini mao ang lain nga rebolusyon "sa ilalum sa hood", salamat sa nga Apple mosulay sa pagpabilin sa atubangan dili lamang sa disenyo, user interface ug adunahan nga ekosistema, apan nag-una uban sa labing modernong mga teknolohiya sa merkado.

Source: Mikeash.com
.