Mike Ash dedicatu nantu à u so blog l'implicazioni pratiche di cambià à l'architettura 64-bit in l'iPhone 5S. Questu articulu si basa nantu à e so scuperte.
U mutivu di stu testu hè soprattuttu duvuta à a grande quantità di misinformazione chì si sparghje nantu à ciò chì u novu iPhone 5s cù un prucissuri ARM 64-bit significa veramente per l'utilizatori è u mercatu. Quì avemu da pruvà à purtà infurmazione objetiva nantu à u rendiment, capacità è implicazioni di sta transizione per i sviluppatori.
"64 bit"
Ci hè duie parte di un processore chì l'etichetta "X-bit" pò riferite - a larghezza di i registri interi è a larghezza di i puntatori. Fortunatamente, nantu à a maiò parte di i prucessori muderni, sti larghetti sò listessi, cusì in u casu di l'A7 questu significa registri interi 64-bit è punters 64-bit.
Tuttavia, hè ugualmente impurtante di nutà ciò chì "64bit" ùn significa micca: Dimensione di l'indirizzu fisicu RAM. U numaru di bits per cumunicà cù RAM (cusì a quantità di RAM chì un dispositivu pò sustene) ùn hè micca ligatu à u numeru di bits CPU. I prucessori ARM anu in ogni locu trà indirizzi 26 è 40-bit è ponu esse cambiati indipindentamente da u restu di u sistema.
- Dimensione bus di dati. A quantità di dati ricevuti da a RAM o memoria di buffer hè simile indipindente da stu fattore. Istruzzioni individuali di u processatore ponu dumandà quantità diverse di dati, ma sò mandati in pezzi o ricivuti più di ciò chì hè necessariu da a memoria. Dipende da a dimensione di u quantum di dati. L'iPhone 5 riceve digià dati da a memoria in quanta 64-bit (è hà un prucessore 32-bit), è pudemu scontru dimensioni finu à 192 bits.
- Tuttu ciò chì hè in relazione cù a virgola flottante. A dimensione di tali registri (FPU) hè torna indipendente da u funziunamentu internu di u processatore. ARM hà utilizatu FPU 64-bit da prima di ARM64 (processore ARM 64-bit).
Vantaghji generali è disadvantages
Se paragunemu altri architetture 32bit è 64bit identiche, in generale ùn sò micca cusì diverse. Questu hè unu di i mutivi di a cunfusione generale di u publicu chì cerca un mutivu perchè Apple si move ancu à 64bit in i dispositi mobile. In ogni casu, tuttu vene da i paràmetri specifichi di u processatore A7 (ARM64) è cumu Apple l'utiliza, micca solu da u fattu chì u processatore hà una architettura 64-bit.
Tuttavia, s'è no guardemu sempre e sfarenze trà sti dui architetture, truveremu parechje sfarenze. L'ovvi hè chì i registri interi 64-bit ponu trattà integer 64-bit in modu più efficiente. Ancu prima, era pussibule di travaglià cun elli nantu à i prucessori 32-bit, ma questu generalmente significava divisu in pezzi longhi di 32-bit, chì causavanu calculi più lenti. Dunque, un processore di 64 bit pò generalmente calculà cù i tipi di 64 bit cum'è veloce cù quelli di 32 bit. Questu significa chì l'applicazioni chì generalmente utilizanu tipi di 64-bit ponu esse più veloci nantu à un processore 64-bit.
Ancu s'ellu 64bit ùn affetta micca a quantità totale di RAM chì u processatore pò utilizà, pò fà più faciule per travaglià cù grossi pezzi di RAM in un prugramma. Ogni prugramma unicu chì funziona in un processore 32-bit hà solu circa 4 GB di spaziu di indirizzu. In cunsiderà chì u sistema operatore è e biblioteche standard piglianu qualcosa, questu abbanduneghja u prugramma cù un locu trà 1-3 GB per l'usu di l'applicazione. Tuttavia, se un sistema di 32-bit hà più di 4 GB di RAM, l'usu di quella memoria hè un pocu più complicatu. Avemu da ricurdà à furzà u sistema operatore per mappe di sti pezzi più grande di memoria per u nostru prugramma (virtualizazione di memoria), o pudemu sparte u prugramma in parechji prucessi (induve ogni prucessu torna in teorica 4 GB di memoria dispunibule per l'indirizzu direttu).
Tuttavia, sti "hacks" sò cusì difficiuli è lenti chì un minimu di applicazioni l'utilizanu. In pràtica, nantu à un processore 32-bit, ogni prugramma aduprà solu a so 1-3 GB di memoria, è più RAM dispunibile pò esse usata per eseguisce parechji prugrammi à u stessu tempu o aduprà sta memoria cum'è un buffer (caching). Questi usi sò pratichi, ma vulemu chì qualsiasi prugramma pò esse facilmente aduprà pezzi di memoria più grande di 4GB.
Avà venenu à l'affirmazioni frequenti (in realtà incorrecte) chì senza più di 4GB di memoria, una architettura di 64-bit hè inutile. Un spaziu di indirizzu più grande hè utile ancu in un sistema cù menu memoria. I fugliali mappati in memoria sò un strumentu praticu induve una parte di u cuntenutu di u schedariu sò logicamente ligati à a memoria di u prucessu senza chì tuttu u schedariu deve esse caricatu in memoria. Cusì, u sistema pò, per esempiu, prucessa gradualmente i fugliali grandi assai volte più grande di a capacità RAM. In un sistema di 32-bit, tali schedarii grandi ùn ponu micca esse mappati in memoria di manera affidabile, mentre chì in un sistema di 64-bit, hè un pezzu di torta, grazia à u spaziu di indirizzu assai più grande.
In ogni casu, a dimensione più grande di i puntatori porta ancu un grande svantaghju: altrimente i prugrammi identici necessitanu più memoria nantu à un processore di 64 bit (questi puntatori più grandi anu da esse guardati in un locu). Siccomu i puntatori sò una parte frequente di i prugrammi, sta diffarenza pò agghicà a cache, chì à u turnu face chì u sistema tutale scorri più lento. Allora in perspettiva, pudemu vede chì se avemu solu cambiatu l'architettura di u processatore à 64-bit, in realtà rallentà u sistema tutale. Allora stu fattore deve esse equilibratu da più ottimisazioni in altri lochi.
ARM64
L'A7, u processore 64-bit chì alimenta u novu iPhone 5s, ùn hè micca solu un processore ARM regulare cù registri più largu. ARM64 cuntene megliurenze maiò nantu à a versione più vechja di 32-bit.
Registru
ARM64 cuntene duie volte integer registers cum'è 32-bit ARM (attenti à ùn cunfundà u numeru è a larghezza di i registri - avemu parlatu di larghezza in a sezione "64-bit". Allora ARM64 hà dui volte più largu registri è duie volte più. registri). L'ARM 32-bit hà 16 registri interi: un contatore di prugramma (PC - cuntene u numeru di l'istruzzioni attuale), un puntatore di stack (un puntatore à una funzione in corso), un registru di ligame (un puntatore à u ritornu dopu à a fine). di a funzione), è i 13 restanti sò per l'usu di l'applicazione. In ogni casu, l'ARM64 hà 32 registri integer, cumpresu un registru zero, un registru di ligame, un puntatore di frame (simile à un puntatore di pila), è unu riservatu per u futuru. Questu ci lascia 28 registri per l'usu di l'applicazioni, più di u doppiu di l'ARM 32-bit. À u listessu tempu, l'ARM64 hà radduppiatu u numeru di registri di numeri in virgola flottante (FPU) da 16 à 32 registri 128-bit.
Ma perchè u numeru di registri hè cusì impurtante? A memoria hè generalmente più lenta cà i calculi di CPU è a lettura / scrittura pò piglià assai tempu. Questu faria chì u processatore veloce hà da cuntinuà à aspittà per a memoria è avemu da chjappà u limitu di velocità naturale di u sistema. I prucessori pruvate à ammuccià stu handicap cù strati di buffers, ma ancu u più veloce (L1) hè sempre più lento di u calculu di u processatore. Tuttavia, i registri sò cellule di memoria direttamente in u processatore è a so lettura / scrittura hè abbastanza veloce per ùn rallentà u processatore. U numaru di registri praticamenti significa a quantità di a memoria più veloce per i calculi di u processatore, chì afecta assai a velocità di u sistema sanu.
À u listessu tempu, sta velocità hà bisognu di un bonu sustegnu di ottimisazione da u compilatore, perchè a lingua pò utilizà sti registri è ùn deve micca guardà tuttu in l'applicazione generale (a lenta) memoria.
Set d'istruzzioni
ARM64 porta ancu cambiamenti maiò à u settore di struzzioni. Un inseme d'istruzzioni hè un inseme di operazioni atomiche chì un processore pò esse realizatu (per esempiu "ADD register1 register2" aghjunghje i numeri in dui registri). E funzioni dispunibuli per e lingue individuali sò cumposti da sti struzzioni. E funzioni più cumplesse devenu eseguisce più struzzioni, perchè ponu esse più lente.
Novu in ARM64 sò struzzioni per a criptografia AES, SHA-1 è SHA-256 funzioni hash. Dunque, invece di una implementazione cumplessa, solu a lingua chjamà sta struzzione - chì purtarà una grande accelerazione à u calculu di tali funzioni è sperendu aghjunte a sicurità in l'applicazioni. p.e. u novu Touch ID utilizeghja ancu sti struzzioni in criptografia, chì permettenu una vera rapidità è sicurità (in teoria, un attaccante avissi da mudificà u processatore stessu per accede à e dati - chì hè impraticabile per dì u minimu datu a so dimensione miniatura).
Compatibilità cù 32 bit
Hè impurtante di mintuvà chì l'A7 pò eseguisce cumplettamente in modu 32-bit senza a necessità di emulazione. Significa chì u novu iPhone 5s pò eseguisce applicazioni compilate in 32-bit ARM senza alcuna rallentazione. In ogni casu, ùn pò micca aduprà e novi funzioni ARM64, cusì vale sempre a pena di fà una custruzzione speciale solu per l'A7, chì duverebbe correre assai più veloce.
Runtime cambia
Runtime hè u codice chì aghjunghje funzioni à a lingua di prugrammazione, chì hè capaci di utilizà mentre l'applicazione hè in esecuzione, finu à dopu a traduzzione. Siccomu Apple ùn hà micca bisognu di mantene a cumpatibilità di l'applicazioni (chì un binariu 64-bit corre nantu à 32-bit), puderanu permette di fà uni pochi di più migliure à a lingua Objective-C.
Unu di elli hè u cusì chjamatu puntatore marcatu (indicatore marcatu). Normalmente, l'uggetti è l'indicatori à quelli ogetti sò almacenati in parti separate di memoria. Tuttavia, i novi tippi di puntatori permettenu classi cù pocu dati per almacenà l'ogetti direttamente in u puntatore. Stu passu elimina a necessità di assignà memoria direttamente per l'ughjettu, basta à creà un puntatore è l'ughjettu in ellu. I puntatori taggati sò supportati solu in l'architettura 64-bit ancu per u fattu chì ùn ci hè più spaziu abbastanza in un puntatore 32-bit per almacenà abbastanza dati utili. Dunque, iOS, à u cuntrariu di OS X, ùn hà ancu supportatu sta funzione. In ogni casu, cù l'arrivu di ARM64, questu hè cambiatu, è iOS hà pigliatu ancu OS X in questu sensu.
Ancu se i puntatori sò 64 bits longu, nantu à l'ARM64 solu 33 bits sò usati per l'indirizzu propiu di u puntatore. È s'ellu simu capaci di smascherà in modu affidabile u restu di i puntatori, pudemu usà stu spaziu per almacenà dati supplementari - cum'è in u casu di i puntatori tagged citati. Conceptually, questu hè unu di i più grandi cambiamenti in a storia di Objective-C, ancu s'ellu ùn hè micca una funzione cummercializabile - cusì a maiò parte di l'utilizatori ùn sanu micca cumu Apple avanza Objective-C.
In quantu à i dati utili chì ponu esse guardati in u spaziu restu di un tali puntatore tagged, Objective-C, per esempiu, l'utiliza ora per almacenà u cusì chjamatu. conte di riferimentu (numeru di referenze). Nanzu, u cuntu di riferimentu era guardatu in un locu diversu in memoria, in una tavola hash preparata per questu, ma questu puderia rallentà u sistema tutale in u casu di un gran numaru di alloc/dealloc/retain/release calls. A tavula hà da esse chjusu per via di a sicurezza di filu, cusì u cuntu di riferimentu di dui ogetti in dui fili ùn pò micca esse cambiatu à u stessu tempu. Tuttavia, stu valore hè novu inseritu in u restu di u cusì chjamatu gesù indicatori. Questu hè un altru inconspicuous, ma enormi vantaghju è accelerazione in u futuru. Tuttavia, questu ùn puderia mai esse ottenutu in una architettura di 32-bit.
L'infurmazione nantu à l'uggetti assuciati, se l'ughjettu hè debbuli riferitu, s'ellu hè necessariu di generà un distruttore per l'ughjettu, etc., hè ancu inseritu novu in u locu restante di punters à l'uggetti. runtime hè capaci di accelerà fundamentalmente u runtime, chì si riflette in a vitezza di ogni applicazione. Da a prova, questu significa circa 40-50% accelerazione di tutte e chjama di gestione di memoria. Basta à cambià à i puntatori 64-bit è utilizendu stu novu spaziu.
Cunclusione
Ancu s'è i cuncurrenti pruvaranu di sparghje l'idea chì u muvimentu in una architettura di 64-bit ùn hè micca necessariu, sapete digià chì questu hè solu una opinione assai informata. Hè vera chì passà à 64-bit senza adattà a vostra lingua o l'applicazioni ùn significa micca veramente nunda - ancu rallenta tuttu u sistema. Ma u novu A7 usa un ARM64 mudernu cù un novu set di struzzioni, è Apple hà pigliatu u prublemu di mudernizà tutta a lingua Objective-C è prufittà di e novi capacità - da quì l'accelerazione prumessa.
Quì avemu menzionatu un gran numaru di ragiuni perchè una architettura di 64-bit hè u passu ghjustu avanti. Hè una altra rivoluzione "sottu u cappucciu", grazie à quale Apple pruverà à stà in prima linea micca solu cù u disignu, l'interfaccia d'utilizatore è l'ecosistema riccu, ma soprattuttu cù e tecnulugia più muderne di u mercatu.
Un saccu di pirsuni Android/Samsung senza infurmazione deve leghje stu articulu è poi piatta in u cantonu.
Ebbè, avemu da esse dispiace per elli. Per anni anu scusatu u tragicu UX è UI di Android dicendu chì anu u sistema operativu più avanzatu tecnologicu cù funzioni è avà anu scupertu chì sò anni in daretu :)
Se una persona ùn hè micca una pecura è sente l'annunzii (è hè bonu per questu), dopu à l'experientia persunale pò fà a so propria opinione :-).
Pruvate quasi tutta a cumpetizione è formate a mo opinione.
Per mè, aghju bisognu di un novu telefuninu super high-performance, perchè ùn spende micca assai. Hè Aghju bisognu di menu prestazioni per menu prezzu ;-). Forse preferirei un più lento con una batteria più grande.
Per d 'altra banda, u novu procak seria utile per l'iPad induve ci sò assai ghjochi :-).
Sò Android / HTC :) perchè hè abbastanza divertente per mè è arradicamentu è cunvertisce HW di alta qualità in un cumbattimentu veloce hè u mo hobby. È iOS ùn mi lasciarà micca fà. (Ùn hè mancu necessariu. Più o menu, iOS hè pensatu per chì tuttu funziona cum'è duverebbe è ùn avete micca bisognu di fà nunda. Quandu smette di piacè di ghjucà, cumprà una mela è mi piace). Ma ùn sò micca per quessa chì continuate à attaccà l'altru cum'è i zitelli. Apple hè cumplettamente cum'è Android. Hè cum'è paragunà a Democrazia cù a Dittatura è simili... Aghju guardatu a cunferenza quandu l'iPhone 5S hè statu introduttu è malgradu u fattu chì ùn aghju micca nunda di Apple, mi piacia u 64bit è l'altri migliure chì venenu. Ma micca perchè sò un cumplessu honimír trtko chì si mette daretu à un PC è perseguite Android o Apple, ma perchè vecu u PROGRESS chì ùn m'aspittà micca longu. A ghjente duverebbe principià à travaglià veramente dura per ùn avè micca tempu per trattà cun stronzata, per dì educatamente.
cuntribuzione constructiva da l'altra parte :) kiez apre l'ochji di u restu 99% Android pusitivu
forsi 99% di fanatics mela avissi a èssiri discututu prima, allura si pò avè una cunversazione constructiva
cose assai cumplesse spiegate simpliciamente ... grazie
Gran articulu! Iè, accunsenu chì l'utilizatori di Android / WP duveranu leghje stu articulu cum'è un must. Invece di trolling è di parlà intelligente di "cumu 64b hè inutile in i telefunini"...
Probabilmente ùn avete mai avutu un wp in manu, altrimenti ùn avete micca questu
Dapoi i so primi successi in u mercatu di u telefuninu, Samsung ùn hà fattu nunda, ma smear a cumpetizione, ma in essenza, hà seguitu i so passi in tuttu stu tempu. Apple hè sempre statu un mudellu per l'imprese tecnulugiche, è s'ellu si fucalizza solu in burla è disinformazioni constantemente à i clienti, prestu stumbleranu. Apple hà sempre andatu u so propiu modu è hè sempre stata una materia di timing assai bonu, chì parechje cumpagnie cumpetitive in l'industria ùn mancanu.
Si pudia dì chì Samsung cavalca l'onda è apprufittannu di e so pussibulità. Hà scumessa nantu à Android, hà un grande HW, face assai cose stessu, hà un supportu decentu. E cum'è qualsiasi cumpagnia asiatica predatrice, usa tutte e pussibulità di publicità. È sicuru ch'ellu arrubba è copia. Ciò chì "slant-eyed" hè bonu per copià. Anu calculatu assai bè chì hè assai più prezzu di andà in u so propiu modu, passu à passu. È cum'è una sucietà forte, pò solu permette questu. Eppuru…
Ùn aghju micca capitu perchè a velocità di u telefuninu hè in constantemente crescente, dammi alcuni esempi di ciò chì l'utilizate, lentamente ùn hà micca sensu per aumentà a prestazione di u telefuninu, ma caccià a parolla marketing. .
Ghjochi, ghjochi pocu ottimizzati. Inoltre, Transport Tycoon nantu à l'iPad 3 ùn funziona micca bè è in a stessa risoluzione cum'è nantu à u desktop. Esempiu.
Ùn aghju micca capitu perchè a velocità di u telefuninu cuntinueghja à aumentà, dammi alcuni esempi di ciò chì l'utilizate, lentamente ùn hà micca sensu per aumentà a prestazione di u telefuninu, se sguassate a parolla marketing. .
Per u processu di video, audio è imagine. È nantu à i ghjochi.
Qualchissia chì usa un iPhone solu per chjamà, sms, è in ocasioni di leghje o di mandà emails è in occasione di navigà in Internet hà bisognu di un iPhone 4. Credu chì ci sò assai utilizatori. Ùn tutti ùn anu bisognu di u megliu telefunu in u mondu :-)
pecuri
U scambiu fisicu trà hardware è software ùn significa micca qualcosa per voi? Questu mi ramenta un pocu di a fine di u XIXmu seculu, quandu i fisici di quellu tempu dicianu chì tuttu in a fisica era digià statu scupertu è ùn ci era micca bisognu di cuntinuà (una dicada prima di a teoria di a relatività è trè prima di a teoria quantistica) .
A ricerca di u megliu ùn finisce mai. A volte u software porta è à volte u hardware. Ma s'è unu si ferma, ùn lasciarà micca andà à l'altru. Ùn seremu micca cusì egoistu à i nostri discendenti :) Allora à u vostru cummentariu - un telefunu più veloce permetterà applicazioni più putenti, chì puderanu fà assai più cà unità. È una volta cose chì ancu i computer d'oghje ùn sò micca abbastanza. U futuru hè eccitante.
Esattamente :)
Bellu articulu, ma ùn capiscu micca perchè Apple ùn hà micca messu 7GB di RAM in l'A2. Iè, a multitasking iOS ùn hè micca cusì chì 2GB hè necessariamente necessariu, ma datu a doppia durata di u puntatore di memoria, saria assai più adattatu.
Ma altrimente sò d'accordu chì un processore 64-bit hè "innecessariu" per un telefuninu, cum'è una visualizazione di retina o un mouse otticu invece di una bola ùn era micca necessariu - tutti questi invenzioni sò stati etichettati cum'è "innecessarii", ma in u mo parè parola currettu hè "intemporale", perchè una volta deve vene è Apple ùn hè micca a paura di vene cun qualcosa di novu.
I second that. Sfurtunatamente, ancu "inutile" ùn hè micca una espressione precisa. Innecessariu significa qualcosa chì a priorità una persona ùn cunnosci micca. Di sicuru, ùn hè micca veru. A velocità pò micca bisognu di una tale velocità, ma certamente a ricunnosce. È quandu u software si ritrova cù u hardware, ci sarà spaziu per migliurà di novu.
Sure, sò in favore, vogliu dì chì l'iP5 hè veramente un smartphone abbastanza veloce, perchè u 5S ùn deve micca esse 64bit in tuttu. Ma un ghjornu qualcunu avia da trattà di novu è era Apple è era avà. Per sempre chì mi ricordu, i sperti anu ancu parlatu di cumu i prucessori 64-bit seranu inutili ancu in l'urdinatori.
Per mè, cum'è un laico IT chì guasi fiascatu matrice, a cunclusione hè impurtante. L'articulu sanu (supportatu da i cumenti) mi pare abbastanza insightful, è ancu s'ellu ùn puderaghju micca spiegà, l'A7 cù l'architettura 64-bit hè un passu avanti. Grazie per l'infurmazioni.
Vogliu edità u titulu di l'articulu, postu chì hè una mossa di marketing. Ogni innovazione hè essenzialmente una mossa di marketing. :-)
Ùn pensu micca. Per esempiu, Samsung usa muvimenti di marketing. Si prisentanu cù RAM, chì l'iPhone ùn hà micca bisognu à tuttu. Si sguassate cù funzioni chì ùn sò micca aduprate in tuttu. A so prestazione di processore aumentendu apposta per e teste. Etc. Questu hè u marketing, ancu s'è iè, hè ingannatu, chì ùn deve micca solu scappà ;)