Mike Ash dedicada al seu blog les implicacions pràctiques de canviar a l'arquitectura de 64 bits a l'iPhone 5S. Aquest article es basa en les seves troballes.
El motiu d'aquest text es deu principalment a la gran quantitat de desinformació que es difon sobre el que realment significa per als usuaris i el mercat el nou iPhone 5s amb un processador ARM de 64 bits. Aquí intentarem aportar informació objectiva sobre el rendiment, les capacitats i les implicacions d'aquesta transició per als desenvolupadors.
"64 bits"
Hi ha dues parts d'un processador a les quals l'etiqueta "X-bit" pot referir-se: l'amplada dels registres enters i l'amplada dels punters. Afortunadament, a la majoria de processadors moderns aquestes amplades són les mateixes, de manera que en el cas de l'A7 això significa registres enters de 64 bits i punters de 64 bits.
Tanmateix, és igualment important assenyalar què NO vol dir "64 bits": Mida de l'adreça física de la RAM. El nombre de bits per comunicar-se amb la memòria RAM (per tant, la quantitat de RAM que pot suportar un dispositiu) no està relacionat amb el nombre de bits de la CPU. Els processadors ARM tenen adreces entre 26 i 40 bits i es poden canviar independentment de la resta del sistema.
- Mida del bus de dades. La quantitat de dades rebudes de la memòria RAM o memòria intermèdia és igualment independent d'aquest factor. Les instruccions individuals del processador poden sol·licitar diferents quantitats de dades, però s'envien en trossos o es reben més del necessari de la memòria. Depèn de la mida del quàntic de dades. L'iPhone 5 ja rep dades de la memòria en quanta de 64 bits (i té un processador de 32 bits), i podem trobar mides de fins a 192 bits.
- Qualsevol cosa relacionada amb el punt flotant. La mida d'aquests registres (FPU) són de nou independents del funcionament intern del processador. ARM ha estat utilitzant FPU de 64 bits des d'abans d'ARM64 (processador ARM de 64 bits).
Avantatges i inconvenients generals
Si comparem arquitectures idèntiques de 32 bits i 64 bits, generalment no són tan diferents. Aquest és un dels motius de la confusió general del públic que busca un motiu pel qual Apple també passa a 64 bits als dispositius mòbils. Tot i això, tot prové dels paràmetres específics del processador A7 (ARM64) i de com l'utilitza Apple, no només del fet que el processador tingui una arquitectura de 64 bits.
Tanmateix, si encara observem les diferències entre aquestes dues arquitectures, trobarem diverses diferències. L'obvi és que els registres de nombres enters de 64 bits poden gestionar nombres enters de 64 bits de manera més eficient. Fins i tot abans, era possible treballar amb ells en processadors de 32 bits, però això normalment significava dividir-los en peces llargues de 32 bits, la qual cosa provocava càlculs més lents. Per tant, un processador de 64 bits generalment pot calcular amb tipus de 64 bits tan ràpid com amb els de 32 bits. Això vol dir que les aplicacions que generalment utilitzen tipus de 64 bits es poden executar molt més ràpid en un processador de 64 bits.
Tot i que 64 bits no afecta la quantitat total de RAM que pot utilitzar el processador, pot facilitar el treball amb grans blocs de RAM en un sol programa. Qualsevol programa que s'executi en un processador de 32 bits només té uns 4 GB d'espai d'adreces. Tenint en compte que el sistema operatiu i les biblioteques estàndard ocupen alguna cosa, això deixa el programa amb entre 1 i 3 GB per utilitzar l'aplicació. Tanmateix, si un sistema de 32 bits té més de 4 GB de RAM, utilitzar aquesta memòria és una mica més complicat. Hem de recórrer a forçar el sistema operatiu a mapejar aquests trossos més grans de memòria per al nostre programa (virtualització de la memòria), o podem dividir el programa en diversos processos (on cada procés de nou té, teòricament, 4 GB de memòria disponible per a l'adreçament directe).
No obstant això, aquests "hacks" són tan difícils i lents que un mínim d'aplicacions els utilitzen. A la pràctica, en un processador de 32 bits, cada programa només utilitzarà els seus 1-3 GB de memòria, i es pot utilitzar més RAM disponible per executar diversos programes alhora o utilitzar aquesta memòria com a memòria intermèdia (caching). Aquests usos són pràctics, però ens agradaria que qualsevol programa pogués utilitzar fàcilment trossos de memòria superiors a 4 GB.
Ara arribem a l'afirmació freqüent (en realitat incorrecta) que sense més de 4 GB de memòria, una arquitectura de 64 bits és inútil. Un espai d'adreces més gran és útil fins i tot en un sistema amb menys memòria. Els fitxers assignats a la memòria són una eina útil on part del contingut del fitxer s'enllaça lògicament a la memòria del procés sense que s'hagi de carregar tot el fitxer a la memòria. Així, el sistema pot, per exemple, processar gradualment fitxers grans moltes vegades més grans que la capacitat de la memòria RAM. En un sistema de 32 bits, els fitxers tan grans no es poden assignar de manera fiable a la memòria, mentre que en un sistema de 64 bits és fàcil, gràcies a l'espai d'adreces molt més gran.
Tanmateix, la mida més gran dels punters també comporta un gran desavantatge: en cas contrari, els programes idèntics necessiten més memòria en un processador de 64 bits (aquests punters més grans s'han d'emmagatzemar en algun lloc). Com que els punters són una part freqüent dels programes, aquesta diferència pot sobrecarregar la memòria cau, cosa que fa que tot el sistema funcioni més lentament. Per tant, en perspectiva, podem veure que si acabés de canviar l'arquitectura del processador a 64 bits, en realitat alentiria tot el sistema. Per tant, aquest factor s'ha d'equilibrar amb més optimitzacions en altres llocs.
ARM64
L'A7, el processador de 64 bits que alimenta el nou iPhone 5s, no és només un processador ARM normal amb registres més amplis. ARM64 conté millores importants respecte a la versió antiga de 32 bits.
Registre
ARM64 conté el doble de registres enters que ARM de 32 bits (aneu amb compte de no confondre el nombre i l'amplada dels registres; hem parlat d'amplada a la secció "64 bits". Així que ARM64 té el doble de registres amples i el doble de registres). registres). L'ARM de 32 bits té 16 registres enters: un comptador de programa (PC - conté el número de la instrucció actual), un punter de pila (un punter a una funció en curs), un registre d'enllaç (un punter al retorn després del final). de la funció), i els 13 restants són per a l'ús d'aplicacions. Tanmateix, l'ARM64 té 32 registres enters, incloent un registre zero, un registre d'enllaç, un punter de trama (similar a un punter de pila) i un reservat per al futur. Això ens deixa amb 28 registres per utilitzar l'aplicació, més del doble de l'ARM de 32 bits. Al mateix temps, l'ARM64 va duplicar el nombre de registres de nombres de coma flotant (FPU) de 16 a 32 registres de 128 bits.
Però, per què és tan important el nombre de registres? La memòria és generalment més lenta que els càlculs de la CPU i la lectura/escriptura pot trigar molt de temps. Això faria que el processador ràpid hagués de seguir esperant memòria i arribaríem al límit de velocitat natural del sistema. Els processadors intenten amagar aquest handicap amb capes de buffers, però fins i tot el més ràpid (L1) és encara més lent que el càlcul del processador. Tanmateix, els registres són cèl·lules de memòria directament al processador i la seva lectura/escriptura és prou ràpida per no alentir el processador. El nombre de registres pràcticament significa la quantitat de memòria més ràpida per als càlculs del processador, la qual cosa afecta molt la velocitat de tot el sistema.
Al mateix temps, aquesta velocitat necessita un bon suport d'optimització per part del compilador, perquè el llenguatge pugui utilitzar aquests registres i no hagi d'emmagatzemar-ho tot a la memòria general de l'aplicació (la lenta).
Conjunt d'instruccions
ARM64 també aporta canvis importants al conjunt d'instruccions. Un conjunt d'instruccions és un conjunt d'operacions atòmiques que pot dur a terme un processador (per exemple, 'ADD register1 register2' afegeix els números en dos registres). Les funcions disponibles per a idiomes individuals es componen d'aquestes instruccions. Les funcions més complexes han d'executar més instruccions, de manera que poden ser més lentes.
Les novetats d'ARM64 són les instruccions per al xifratge AES, les funcions hash SHA-1 i SHA-256. Per tant, en comptes d'una implementació complexa, només el llenguatge anomenarà aquesta instrucció, la qual cosa augmentarà la velocitat del càlcul d'aquestes funcions i s'espera que afegeixi seguretat a les aplicacions. Per exemple. el nou Touch ID també utilitza aquestes instruccions en el xifratge, permetent una velocitat i seguretat reals (en teoria, un atacant hauria de modificar el processador mateix per accedir a les dades, com a mínim poc pràctic donada la seva mida en miniatura).
Compatibilitat amb 32 bits
És important esmentar que l'A7 pot funcionar completament en mode de 32 bits sense necessitat d'emulació. Significa que el nou iPhone 5s pot executar aplicacions compilades en ARM de 32 bits sense cap alentiment. Tanmateix, aleshores no pot utilitzar les noves funcions ARM64, de manera que sempre val la pena fer una compilació especial només per a l'A7, que hauria de funcionar molt més ràpid.
Canvis de temps d'execució
El temps d'execució és el codi que afegeix funcions al llenguatge de programació, que és capaç d'utilitzar mentre s'executa l'aplicació, fins després de la traducció. Com que Apple no necessita mantenir la compatibilitat de les aplicacions (que un binari de 64 bits s'executa en 32 bits), es podrien permetre fer algunes millores més al llenguatge Objective-C.
Un d'ells és l'anomenat punter etiquetat (indicador marcat). Normalment, els objectes i els punters a aquests objectes s'emmagatzemen en parts separades de la memòria. Tanmateix, els nous tipus de punter permeten que les classes amb poques dades emmagatzemin objectes directament al punter. Aquest pas elimina la necessitat d'assignar memòria directament per a l'objecte, només cal crear un punter i l'objecte que hi ha dins. Els punters etiquetats només s'admeten a l'arquitectura de 64 bits, també a causa del fet que ja no hi ha prou espai en un punter de 32 bits per emmagatzemar prou dades útils. Per tant, iOS, a diferència d'OS X, encara no admetia aquesta funció. Tanmateix, amb l'arribada d'ARM64, això està canviant i iOS també s'ha posat al dia amb OS X en aquest sentit.
Tot i que els punters tenen una longitud de 64 bits, a l'ARM64 només s'utilitzen 33 bits per a la pròpia adreça del punter. I si som capaços de desemmascarar de manera fiable la resta de bits del punter, podem utilitzar aquest espai per emmagatzemar dades addicionals, com en el cas dels punters etiquetats esmentats. Conceptualment, aquest és un dels canvis més grans en la història de l'Objective-C, tot i que no és una característica comercialitzable, de manera que la majoria dels usuaris no sabrà com Apple està avançant Objective-C.
Pel que fa a les dades útils que es poden emmagatzemar a l'espai restant d'aquest punter etiquetat, Objective-C, per exemple, ara les utilitza per emmagatzemar l'anomenat recompte de referència (nombre de referències). Anteriorment, el recompte de referència s'emmagatzemava en un lloc diferent de la memòria, en una taula hash preparada per a això, però això podria alentir tot el sistema en el cas d'un gran nombre de trucades alloc/dealloc/retain/release. La taula s'havia de bloquejar a causa de la seguretat del fil, de manera que el recompte de referència de dos objectes en dos fils no es va poder canviar al mateix temps. No obstant això, aquest valor s'insereix recentment a la resta de l'anomenat isa indicadors. Aquest és un altre avantatge i una acceleració poc visibles, però enormes en el futur. Tanmateix, això no es podria aconseguir mai en una arquitectura de 32 bits.
La informació sobre objectes associats, si l'objecte té una referència feble, si és necessari generar un destructor per a l'objecte, etc., també s'insereix recentment al lloc restant dels punters als objectes. Gràcies a aquesta informació, l'Objective-C runtime és capaç d'accelerar fonamentalment el temps d'execució, que es reflecteix en la velocitat de cada aplicació. A partir de les proves, això significa aproximadament un 40-50% d'acceleració de totes les trucades de gestió de memòria. Només canviant als punters de 64 bits i utilitzant aquest nou espai.
Conclusió
Encara que els competidors intentaran difondre la idea que passar a una arquitectura de 64 bits és innecessari, ja sabreu que aquesta és només una opinió molt poc informada. És cert que canviar a 64 bits sense adaptar l'idioma o les aplicacions no vol dir res, fins i tot alenteix tot el sistema. Però el nou A7 utilitza un ARM64 modern amb un nou conjunt d'instruccions, i Apple s'ha pres la molèstia de modernitzar tot el llenguatge Objective-C i aprofitar les noves capacitats, d'aquí l'acceleració promesa.
Aquí hem esmentat un gran nombre de raons per les quals una arquitectura de 64 bits és el pas endavant correcte. És una altra revolució "sota el capó", gràcies a la qual Apple intentarà mantenir-se a l'avantguarda no només amb disseny, interfície d'usuari i ecosistema ric, sinó sobretot amb les tecnologies més modernes del mercat.
Molta gent d'Android/Samsung no informada hauria de llegir aquest article i després amagar-se al racó.
Bé, els hem de sentir pena. Durant anys van disculpar la tràgica UX i IU d'Android dient que tenen el sistema operatiu tecnològicament més avançat amb funcions i ara van descobrir que van tornar anys enrere :)
Si una persona no és una ovella i escolta anuncis (i és bo en això), després de l'experiència personal pot formar la seva pròpia opinió :-).
Intento gairebé tota la competició i em faig la meva pròpia opinió.
Per a mi, necessito un telèfon mòbil nou de súper rendiment, perquè no hi gasto gaire. Això és Necessito menys rendiment per menys preu ;-). Potser preferiria un més lent amb una bateria més gran.
D'altra banda, el nou procak seria útil per a l'iPad on hi ha molts jocs :-).
Sóc Android/HTC :) perquè és molt divertit per a mi i la meva afició és arrelar i convertir HW d'alta qualitat en un lluitador ràpid. I iOS no em deixa fer això. (Ni tan sols és necessari. Més o menys, iOS està pensat perquè tot funcioni com cal i no cal que hi facis res. Quan deixi de gaudir jugant, em compraré una poma i la gaudiré). Però no sé per què us continueu atacant com a nens. Apple és completament com Android. És com comparar Democràcia amb Dictadura i similars... Vaig veure la conferència de presentació de l'iPhone 5S i malgrat que no tinc res d'Apple, em van agradar els 64 bits i altres millores que van venir. Però no perquè sigui un honimír trtko complex que s'asseu darrere d'un ordinador i persegueix Android o Apple, sinó perquè veig el PROGRÉS que no em farà esperar molt de temps. La gent hauria de començar a treballar molt dur perquè no tingui temps de fer front a la merda, per dir-ho educadament.
contribució constructiva de l'altre costat :) kiez obriria els ulls al 99% restant d'Android positiu
potser primer s'hauria de parlar del 99% dels fanàtics de la poma, després podrem tenir una conversa constructiva
coses molt complexes explicades senzillament... gràcies
Gran article! Sí, estic d'acord que els usuaris d'Android/WP han de llegir aquest article de manera obligatòria. En lloc de trollar i parlar intel·ligent de "com 64b és inútil als mòbils"...
Probablement mai no tingueu un wp a la mà, en cas contrari no ho tindries
Des dels seus primers èxits en el mercat mòbil, Samsung no ha fet més que difondre la competència, però en essència, ha estat seguint els seus passos durant tot aquest temps. Apple sempre ha estat un model a seguir per a les empreses tecnològiques, i si es centren només en burlar-se i desinformar constantment els clients, aviat ensopegaran. Apple sempre ha anat pel seu propi camí i sempre ha estat una qüestió de molt bon moment, que manca a moltes empreses competidores del sector.
Es podria dir que Samsung està muntant l'onada i aprofitant les seves possibilitats. Va apostar per Android, té un gran HW, fa moltes coses ell mateix, té un suport decent. I com qualsevol empresa asiàtica depredadora, utilitza totes les possibilitats de la publicitat. I és clar que roba i copia. El que és bo per a "ulls inclinats" és copiar. Han calculat molt bé que és molt més barat que seguir el seu camí, pas a pas. I com a empresa sòlida, simplement es pot permetre això. No obstant això…
No entenc per què la velocitat del telèfon no para de augmentar, doneu-me alguns exemples per a què el feu servir, a poc a poc no té sentit augmentar el rendiment del telèfon mòbil, però eliminaré la paraula màrqueting.
Jocs, jocs poc optimitzats. A més, Transport Tycoon a l'iPad 3 no funciona tan bé i amb la mateixa resolució que a l'escriptori. Exemple.
No entenc per què la velocitat del telèfon no para de augmentar, doneu-me alguns exemples per a què el feu servir, a poc a poc no té sentit augmentar el rendiment del telèfon mòbil, si li trec la paraula màrqueting .
Per al tractament de vídeo, àudio i imatge. I cap als jocs.
Qualsevol que faci servir un iPhone només per trucar, enviar missatges de text i, ocasionalment, llegir o enviar correus electrònics i de tant en tant navegar per Internet necessitarà un iPhone 4. Crec que hi ha molts usuaris d'aquest tipus. No tothom necessita el millor telèfon del món :-)
ovelles
El compromís físic entre el maquinari i el programari no significa res per a vostè? Això em recorda una mica el final del segle XIX, quan els físics d'aquella època deien que ja s'havia descobert tot en física i no calia continuar (una dècada abans de la teoria de la relativitat i tres abans de la teoria quàntica) .
La recerca del millor no s'acaba mai. De vegades el programari porta i de vegades el maquinari. Però si un s'encalla, no deixarà marxar l'altre. No serem tan egoistes amb els nostres descendents :) Així que al vostre comentari: un telèfon més ràpid permetrà aplicacions més potents, que seran capaços de fer molt més que unitats. I abans coses per a les quals fins i tot els ordinadors actuals no són suficients. El futur és apassionant.
Exactament :)
Bonic article, però no entenc per què Apple no va posar 7 GB de RAM a l'A2. Sí, la multitasca d'iOS no és tal que es necessiti necessàriament 2 GB, però tenint en compte el doble de longitud del punter de memòria, seria molt més adequat.
Però, en cas contrari, estic d'acord que un processador de 64 bits és "innecessari" per a un telèfon mòbil, de la mateixa manera que una pantalla retina o un ratolí òptic en lloc d'una bola era innecessari: tots aquests invents van ser etiquetats com "innecessaris", però al meu entendre la paraula correcta és "atemporal", perquè ha d'arribar una vegada i Apple no té por d'inventar alguna cosa nova.
Segon això. Malauradament, fins i tot "inútil" no és una expressió precisa. Innecessari vol dir quelcom de la qual una persona no coneix la prioritat. Això definitivament no és cert. És possible que la velocitat no necessiti aquesta velocitat, però definitivament la reconeixerà. I quan el programari es posin al dia amb el maquinari, hi haurà marge de millora de nou.
Per descomptat, estic a favor, vull dir que l'iP5 és realment un telèfon intel·ligent bastant ràpid, de manera que el 5S no hauria de ser de 64 bits. Però un dia algú va haver d'enfrontar-s'hi de nou i era Apple i ara era. Des que tinc memòria, els experts també han parlat de com els processadors de 64 bits seran inútils fins i tot en ordinadors.
Per a mi, com a profe de TI que gairebé va fallar la matriu, la conclusió és important. Tot l'article (amb el suport dels comentaris) em sembla força perspicaç i, tot i que no ho podré explicar, l'A7 amb arquitectura de 64 bits és un pas endavant. Gràcies per la informació.
Editaria el títol de l'article, ja que és un moviment de màrqueting. Cada innovació és essencialment un moviment de màrqueting. :-)
No ho penso. Per exemple, Samsung utilitza moviments de màrqueting. Apareixen amb RAM, que l'iPhone no necessita gens. S'estan escapant amb funcions que no es poden utilitzar en absolut. Augment intencionadament el rendiment del processador per a les proves. Etc. Això és màrqueting, encara que sí, és enganyós, que no s'han de sortir amb la seva ;)