Tutup iklan

Mike Ash dedicated dina blog na implikasi praktis tina pindah ka arsitéktur 64-bit dina iPhone 5S. artikel ieu draws on papanggihan na.

Alesan pikeun téks ieu utamina kusabab jumlah misinformasi anu sumebar ngeunaan naon anu dimaksud ku iPhone 5s anyar kalayan prosésor ARM 64-bit pikeun pangguna sareng pasar. Di dieu urang bakal nyoba mawa informasi obyektif ngeunaan kinerja, kamampuhan jeung implikasi transisi ieu pikeun pamekar.

"64 bit"

Aya dua bagian tina prosésor anu tiasa dirujuk ku labél "X-bit" - lebar register integer sareng rubak pointer. Untungna, dina sabagéan ageung prosesor modéren, lebar ieu sami, janten dina kasus A7 ieu hartosna register integer 64-bit sareng pointer 64-bit.

Sanajan kitu, éta sarua penting pikeun nunjuk kaluar naon "64bit" NOT hartosna: Ukuran alamat fisik RAM. Jumlah bit pikeun komunikasi sareng RAM (sahingga jumlah RAM alat bisa ngarojong) teu patali jeung jumlah bit CPU. Prosesor ARM ngagaduhan antara 26- sareng 40-bit alamat sareng tiasa dirobih sacara mandiri tina sistem anu sanés.

  • Ukuran beus data. Jumlah data nampi ti RAM atawa mémori panyangga sarua bebas faktor ieu. Parentah processor individu bisa menta jumlahna béda data, tapi aranjeunna boh dikirim dina sakumpulan atawa narima leuwih ti diperlukeun tina memori. Éta gumantung kana ukuran kuantum data. IPhone 5 geus narima data tina mémori dina 64-bit quanta (jeung ngabogaan processor 32-bit), sarta kami bisa sapatemon ukuran nepi ka 192 bit.
  • Naon waé anu aya hubunganana sareng floating point. Ukuran registers sapertos (FPU) deui bebas tina workings internal tina processor. ARM parantos nganggo FPU 64-bit ti sateuacan ARM64 (prosesor ARM 64-bit).

Kaunggulan umum jeung kalemahan

Upami urang ngabandingkeun arsitéktur 32bit sareng 64bit idéntik, aranjeunna umumna henteu béda. Ieu mangrupikeun salah sahiji alesan pikeun kabingungan umum masarakat milarian alesan kunaon Apple pindah ka 64bit dina alat sélulér ogé. Nanging, éta sadayana asalna tina parameter khusus prosésor A7 (ARM64) sareng kumaha Apple ngagunakeun éta, sanés ngan ukur kanyataan yén prosésorna ngagaduhan arsitektur 64-bit.

Nanging, upami urang tetep ningali bédana antara dua arsitéktur ieu, urang bakal mendakan sababaraha bédana. Anu atra nyaéta yén register integer 64-bit tiasa ngadamel integer 64-bit langkung éfisién. Malah sateuacanna, éta tiasa dianggo sareng aranjeunna dina prosesor 32-bit, tapi ieu biasana hartosna ngabagi kana potongan panjang 32-bit, anu nyababkeun itungan anu langkung laun. Janten prosesor 64-bit umumna tiasa ngitung sareng jinis 64-bit sagancangna sareng 32-bit. Ieu ngandung harti yén aplikasi nu umumna ngagunakeun tipe 64-bit bisa ngajalankeun leuwih gancang dina processor 64-bit.

Sanajan 64bit teu mangaruhan jumlah total RAM nu processor tiasa make, éta bisa nyieun leuwih gampang pikeun digawe sareng sakumpulan badag RAM dina hiji program. Sakur program tunggal anu dijalankeun dina prosésor 32-bit ngan ukur ngagaduhan ruang alamat 4 GB. Nyandak kana akun yén sistem operasi sarta perpustakaan baku nyandak up hal, ieu daun program kalawan wae antara 1-3 GB pikeun pamakéan aplikasi. Sanajan kitu, lamun sistem 32-bit boga leuwih ti 4 GB RAM, ngagunakeun memori anu bit leuwih pajeulit. Urang kudu Resort ka forcing sistem operasi peta ieu sakumpulan gedé memori pikeun program urang (memori virtualization), atawa urang bisa dibeulah program kana sababaraha prosés (dimana unggal prosés deui téoritis boga 4GB memori sadia pikeun alamat langsung).

Nanging, "hacks" ieu sesah sareng laun dugi ka minimum aplikasi ngagunakeunana. Dina prakna, dina prosésor 32-bit, unggal program ngan bakal ngagunakeun 1-3 GB memori na, sarta leuwih sadia RAM bisa dipaké pikeun ngajalankeun sababaraha program dina waktos anu sareng atawa ngagunakeun memori ieu salaku panyangga a (caching). Pamakéan ieu praktis, tapi kami hoyong program naon waé tiasa nganggo sakumpulan mémori anu langkung ageung tibatan 4GB.

Ayeuna urang sering (saleresna lepat) ngaku yén tanpa mémori langkung ti 4GB, arsitéktur 64-bit henteu aya gunana. A spasi alamat gedé mangpaat malah dina sistem kalawan memori kirang. File anu dipetakeun mémori mangrupikeun alat anu tiasa dianggo dimana bagian tina eusi file sacara logis dihubungkeun sareng mémori prosés tanpa sadayana file kedah dimuat kana mémori. Ku kituna, sistem bisa, contona, saeutik demi saeutik ngolah file badag sababaraha kali leuwih badag batan kapasitas RAM. Dina sistem 32-bit, file ageung sapertos kitu henteu tiasa dipetakeun ku mémori anu dipercaya, sedengkeun dina sistem 64-bit, éta sapotong jajan, hatur nuhun kana rohangan alamat anu langkung ageung.

Tapi, ukuran pointer anu langkung ageung ogé nyababkeun hiji kalemahan anu ageung: program anu sami peryogi langkung seueur mémori dina prosésor 64-bit (ieu pointer anu langkung ageung kedah disimpen dimana waé). Kusabab pointer mangrupikeun bagian anu sering tina program, bédana ieu tiasa ngabeungbeuratan cache, anu nyababkeun sadayana sistem ngajalankeun langkung laun. Janten dina sudut pandang, urang tiasa ningali yén upami urang ngan ukur ngarobih arsitéktur prosésor janten 64-bit, éta bakal ngalambatkeun sadayana sistem. Jadi faktor ieu kudu saimbang ku leuwih optimizations di tempat séjén.

ARM64

A7, prosésor 64-bit anu nganggo iPhone 5s énggal, sanés ngan ukur prosésor ARM biasa sareng register anu langkung lega. ARM64 ngandung perbaikan utama leuwih heubeul, vérsi 32-bit.

prosésor Apple A7.

pendaptaran

ARM64 nahan dua kali saloba integer registers sakumaha 32-bit ARM (kade ulah galau jumlah na rubak registers - urang ngobrol ngeunaan lebar dina "64-bit" bagian. Jadi ARM64 boga duanana dua kali lega registers sarta dua kali saloba. ngadaptar). ARM 32-bit boga 16 integer registers: hiji program counter (PC - ngandung jumlah instruksi ayeuna), a pointer tumpukan (a pointer kana hiji fungsi dina kamajuan), a link register (a pointer ka mulang sanggeus tungtungna). fungsi), sarta sésana 13 pikeun pamakéan aplikasi. Sanajan kitu, ARM64 boga 32 integer registers, kaasup hiji enol register, a link register, a pointer pigura (sarupa jeung pointer tumpukan), sarta hiji ditangtayungan pikeun mangsa nu bakal datang. Ieu daun kami kalawan 28 registers pikeun pamakéan aplikasi, leuwih ti ganda ARM 32-bit. Dina waktos anu sami, ARM64 ngagandakeun jumlah pendaptaran floating-point (FPU) tina 16 dugi ka 32 register 128-bit.

Tapi naha jumlah pendaptaran penting pisan? Mémori umumna langkung laun tibatan itungan CPU sareng maca / nyerat tiasa lami pisan. Ieu bakal ngajantenkeun prosésor gancang kedah ngantosan mémori sareng urang bakal pencét wates laju alami sistem. Prosesor nyobian nyumputkeun cacad ieu sareng lapisan panyangga, tapi anu paling gancang (L1) masih langkung laun tibatan itungan prosesor. Sanajan kitu, registers sél memori langsung dina processor na bacaan maranéhanana / nulis cukup gancang mun teu ngalambatkeun turun processor. Jumlah registers praktis hartina jumlah memori panggancangna pikeun itungan processor, nu greatly mangaruhan laju sakabéh sistem.

Dina waktu nu sarua, speed ieu perlu rojongan optimasi alus ti kompiler, ku kituna basa bisa make registers ieu sarta teu kudu nyimpen sagalana dina aplikasi umum (nu slow) memori.

set instruksi

ARM64 ogé mawa parobahan utama kana set instruksi. Hiji set instruksi mangrupa sakumpulan operasi atom nu processor bisa ngalakukeun (misalna 'ADD register1 register2' nambahkeun angka dina dua registers). Fungsi anu sayogi pikeun basa individu diwangun ku paréntah ieu. Fungsi anu langkung kompleks kedah ngalaksanakeun langkung seueur paréntah, supados tiasa langkung laun.

Anyar dina ARM64 mangrupakeun parentah pikeun enkripsi AES, SHA-1 jeung SHA-256 fungsi hash. Janten tinimbang palaksanaan anu rumit, ngan ukur basa anu bakal nyauran paréntah ieu - anu bakal nyababkeun kacepetan anu ageung pikeun ngitung fungsi sapertos kitu sareng mugia nambihan kaamanan dina aplikasi. Misalna. Touch ID anyar ogé nganggo paréntah ieu dina énkripsi, ngamungkinkeun pikeun kacepetan sareng kaamanan anu nyata (dina tiori, panyerang kedah ngarobih prosésor sorangan pikeun ngaksés data - anu henteu praktis pikeun nyarios sahenteuna tina ukuran miniatur na).

Kasaluyuan sareng 32bit

Kadé disebatkeun yén A7 tiasa ngajalankeun pinuh dina modeu 32-bit tanpa peryogi emulation. Ieu ngandung harti yén iPhone 5s anyar bisa ngajalankeun aplikasi disusun dina 32-bit ARM tanpa slowdown nanaon. Sanajan kitu, eta teu bisa ngagunakeun fungsi ARM64 anyar, jadi salawasna worthwhile nyieun wangunan husus ngan pikeun A7, nu kudu ngajalankeun leuwih gancang.

Runtime robah

Runtime mangrupikeun kode anu nambihan fungsi kana basa pamrograman, anu tiasa dianggo nalika aplikasi dijalankeun, dugi ka tarjamahan. Kusabab Apple henteu kedah ngajaga kasaluyuan aplikasi (yén binér 64-bit dijalankeun dina 32-bit), aranjeunna tiasa mampuh ngadamel sababaraha perbaikan deui kana basa Objective-C.

Salah sahijina nyaéta anu disebut tagged pointer (indikator ditandaan). Biasana, obyék sareng panunjuk kana objék éta disimpen dina bagian mémori anu misah. Sanajan kitu, tipe pointer anyar ngidinan kelas kalawan saeutik data pikeun nyimpen objék langsung dina pointer nu. Lengkah ieu ngaleungitkeun kabutuhan pikeun ngalokasikeun mémori langsung pikeun obyék, ngan ukur nyiptakeun pointer sareng obyék di jerona. Penunjuk anu ditandaan ngan ukur dirojong dina arsitéktur 64-bit ogé kusabab kanyataan yén teu aya deui cukup rohangan dina pointer 32-bit pikeun nyimpen data anu cukup mangpaat. Ku alatan éta, ios, teu kawas OS X, teu acan ngarojong fitur ieu. Sanajan kitu, kalawan datangna ARM64, ieu robah, sarta ios geus bray up kalawan OS X dina hal ieu ogé.

Sanajan pointer panjangna 64 bit, dina ARM64 ngan 33 bit dipaké pikeun alamat pointer sorangan. Sareng upami urang tiasa ngabéréskeun sesa bit pointer, urang tiasa nganggo rohangan ieu pikeun nyimpen data tambahan - sapertos dina kasus petunjuk anu ditandaan. Sacara konseptual, ieu mangrupikeun salah sahiji parobihan anu paling ageung dina sajarah Objective-C, sanaos éta sanés fitur anu tiasa dipasarkan - janten seueur pangguna henteu terang kumaha Apple nuju maju ka Objective-C.

Sedengkeun pikeun data mangpaat anu bisa disimpen dina spasi sésana tina pointer tagged sapertos, Objective-C, contona, ayeuna ngagunakeun eta pikeun nyimpen nu disebut. itungan rujukan (jumlah rujukan). Saméméhna, count rujukan ieu disimpen dina tempat béda dina mémori, dina tabel Hash disiapkeun keur eta, tapi ieu bisa ngalambatkeun turun sakabéh sistem dina kasus angka nu gede ngarupakeun alloc / dealloc / nahan / release panggero. Méja kudu dikonci alatan kaamanan thread, jadi count rujukan dua objék dina dua threads teu bisa dirobah dina waktos anu sareng. Sanajan kitu, nilai ieu karek diselapkeun kana sesa nu disebut hiji indikator. Ieu lain inconspicuous, tapi kaunggulan badag sarta akselerasi dina mangsa nu bakal datang. Nanging, ieu henteu pernah tiasa dihontal dina arsitéktur 32-bit.

Inpormasi ngeunaan objék anu aya hubunganana, naha obyék anu dirujuk lemah, naha éta kedah ngahasilkeun destructor pikeun obyék, sareng sajabana, ogé nembé diselapkeun kana tempat sésa pointer ka objék. Hatur nuhun kana inpormasi ieu, Objective-C runtime téh bisa fundamentally nyepetkeun runtime, nu reflected dina speed unggal aplikasi. Ti tés, ieu hartina ngeunaan 40-50% speedup sadaya panggero manajemén memori. Ngan ku ngalih ka pointer 64-bit sareng nganggo rohangan anyar ieu.

Kacindekan

Sanajan pesaing bakal nyoba nyebarkeun pamanggih yén pindah ka arsitéktur 64-bit teu perlu, anjeun bakal geus nyaho yén ieu téh ngan hiji pamadegan pisan uninformed. Leres yén ngalih ka 64-bit tanpa adaptasi basa atanapi aplikasi anjeun henteu hartosna nanaon - malah ngalambatkeun sadayana sistem. Tapi A7 anyar nganggo ARM64 modéren sareng set instruksi énggal, sareng Apple parantos nyandak masalah pikeun ngamodernisasi sadayana basa Objective-C sareng ngamangpaatkeun kamampuan énggal - ku kituna gancangan anu dijanjikeun.

Di dieu kami parantos nyebatkeun sajumlah ageung alesan kunaon arsitéktur 64-bit mangrupikeun léngkah anu leres. Ieu revolusi sejen "dina tiung", hatur nuhun nu Apple bakal coba tetep di forefront teu ukur ku desain, panganteur pamaké sarta ekosistem euyeub, tapi utamana ku téknologi paling modern dina pasaran.

Sumber: Mikeash.com
.