Mike Ash dedicado no seu blog as implicacións prácticas de cambiar á arquitectura de 64 bits no iPhone 5S. Este artigo baséase nos seus descubrimentos.
O motivo deste texto débese principalmente á gran cantidade de información errónea que se estende sobre o que realmente significa para os usuarios e o mercado o novo iPhone 5s cun procesador ARM de 64 bits. Aquí tentaremos achegar información obxectiva sobre o rendemento, as capacidades e as implicacións desta transición para os desenvolvedores.
"64 bits"
Hai dúas partes dun procesador ás que se pode referir a etiqueta "X-bit": o ancho dos rexistros enteiros e o ancho dos punteiros. Afortunadamente, na maioría dos procesadores modernos estes anchos son os mesmos, polo que no caso do A7 isto significa rexistros enteiros de 64 bits e punteiros de 64 bits.
Non obstante, é igualmente importante sinalar o que NON significa "64 bits": Tamaño da dirección física da RAM. O número de bits para comunicarse coa RAM (polo tanto, a cantidade de RAM que pode soportar un dispositivo) non está relacionado co número de bits da CPU. Os procesadores ARM teñen enderezos entre 26 e 40 bits e pódense cambiar independentemente do resto do sistema.
- Tamaño do bus de datos. A cantidade de datos recibidos da memoria RAM ou buffer é igualmente independente deste factor. As instrucións individuais do procesador poden solicitar diferentes cantidades de datos, pero envíanse en anacos ou reciben máis do necesario da memoria. Depende do tamaño do quantum de datos. O iPhone 5 xa recibe datos da memoria en quanta de 64 bits (e ten un procesador de 32 bits), e podemos atoparnos con tamaños de ata 192 bits.
- Calquera cousa relacionada co punto flotante. O tamaño destes rexistros (FPU) volve ser independente do funcionamento interno do procesador. ARM usa FPU de 64 bits desde antes de ARM64 (procesador ARM de 64 bits).
Vantaxes e inconvenientes xerais
Se comparamos arquitecturas idénticas de 32 bits e 64 bits, xeralmente non son tan diferentes. Esta é unha das razóns da confusión xeral do público que busca unha razón pola que Apple tamén se move a 64 bits nos dispositivos móbiles. Non obstante, todo provén dos parámetros específicos do procesador A7 (ARM64) e de como Apple o usa, non só do feito de que o procesador teña unha arquitectura de 64 bits.
Porén, se aínda observamos as diferenzas entre estas dúas arquitecturas, atoparemos varias diferenzas. O obvio é que os rexistros de enteiros de 64 bits poden manexar os enteiros de 64 bits de forma máis eficiente. Mesmo antes, era posible traballar con eles en procesadores de 32 bits, pero isto normalmente significaba dividilos en anacos longos de 32 bits, o que provocaba cálculos máis lentos. Polo tanto, un procesador de 64 bits xeralmente pode calcular con tipos de 64 bits tan rápido como cos de 32 bits. Isto significa que as aplicacións que normalmente usan tipos de 64 bits poden executarse moito máis rápido nun procesador de 64 bits.
Aínda que 64 bits non afecta a cantidade total de RAM que pode usar o procesador, pode facilitar o traballo con grandes anacos de RAM nun programa. Calquera programa que se execute nun procesador de 32 bits só ten uns 4 GB de espazo de enderezos. Tendo en conta que o sistema operativo e as bibliotecas estándar ocupan algo, isto deixa o programa entre 1 e 3 GB para o uso da aplicación. Non obstante, se un sistema de 32 bits ten máis de 4 GB de RAM, usar esa memoria é un pouco máis complicado. Temos que recorrer a forzar o sistema operativo a mapear estes anacos máis grandes de memoria para o noso programa (virtualización da memoria), ou podemos dividir o programa en múltiples procesos (onde cada proceso de novo ten teoricamente 4 GB de memoria dispoñibles para o enderezo directo).
Non obstante, estes "hacks" son tan difíciles e lentos que un mínimo de aplicacións os usan. Na práctica, nun procesador de 32 bits, cada programa só usará os seus 1-3 GB de memoria, e pódese usar máis memoria RAM dispoñible para executar varios programas ao mesmo tempo ou usar esta memoria como búfer (caché). Estes usos son prácticos, pero gustaríanos que calquera programa puidese usar facilmente anacos de memoria maiores de 4 GB.
Agora chegamos á afirmación frecuente (realmente incorrecta) de que sen máis de 4 GB de memoria, unha arquitectura de 64 bits é inútil. Un espazo de enderezos maior é útil incluso nun sistema con menos memoria. Os ficheiros mapeados na memoria son unha ferramenta útil onde parte do contido do ficheiro está loxicamente ligado á memoria do proceso sen que todo o ficheiro teña que cargarse na memoria. Así, o sistema pode, por exemplo, procesar gradualmente ficheiros grandes moitas veces máis grandes que a capacidade da memoria RAM. Nun sistema de 32 bits, os ficheiros tan grandes non se poden mapear de forma fiable na memoria, mentres que nun sistema de 64 bits, é fácil, grazas ao espazo de enderezos moito maior.
Non obstante, o maior tamaño dos punteiros tamén trae unha gran desvantaxe: se non, programas idénticos necesitan máis memoria nun procesador de 64 bits (estes punteiros máis grandes teñen que almacenarse nalgún lugar). Dado que os punteiros son unha parte frecuente dos programas, esta diferenza pode cargar a caché, o que á súa vez fai que todo o sistema funcione máis lento. Polo tanto, en perspectiva, podemos ver que se cambiamos a arquitectura do procesador a 64 bits, en realidade ralentizaría todo o sistema. Polo tanto, este factor ten que ser equilibrado con máis optimizacións noutros lugares.
ARM64
O A7, o procesador de 64 bits que alimenta o novo iPhone 5s, non é só un procesador ARM normal con rexistros máis amplos. ARM64 contén melloras importantes sobre a versión antiga de 32 bits.
Rexistro
ARM64 contén o dobre de rexistros enteiros que ARM de 32 bits (teña coidado de non confundir o número e o ancho dos rexistros; falamos do ancho na sección "64 bits". Polo tanto, ARM64 ten o dobre de rexistros de ancho e o dobre de rexistros). rexistros). O ARM de 32 bits ten 16 rexistros enteiros: un contador de programa (PC - contén o número da instrución actual), un punteiro de pila (un punteiro a unha función en curso), un rexistro de ligazón (un punteiro para devolver despois de que a función sexa terminado), e os 13 restantes son para uso da aplicación. Non obstante, o ARM64 ten 32 rexistros enteiros, incluíndo un rexistro cero, un rexistro de ligazón, un punteiro de marco (similar a un punteiro de pila) e un reservado para o futuro. Isto déixanos 28 rexistros para o uso da aplicación, máis do dobre do ARM de 32 bits. Ao mesmo tempo, o ARM64 duplicou o número de rexistros de número de coma flotante (FPU) de 16 a 32 rexistros de 128 bits.
Pero por que é tan importante o número de rexistros? A memoria é xeralmente máis lenta que os cálculos da CPU e a lectura/escritura pode levar moito tempo. Isto faría que o procesador rápido tivese que seguir esperando por memoria e acadariamos o límite de velocidade natural do sistema. Os procesadores intentan ocultar esta desventaja con capas de búfers, pero incluso o máis rápido (L1) aínda é máis lento que o cálculo do procesador. Non obstante, os rexistros son celas de memoria directamente no procesador e a súa lectura/escritura é o suficientemente rápida como para non ralentizar o procesador. O número de rexistros practicamente significa a cantidade de memoria máis rápida para os cálculos do procesador, o que afecta moito á velocidade de todo o sistema.
Ao mesmo tempo, esta velocidade necesita un bo soporte de optimización do compilador, para que a linguaxe poida usar estes rexistros e non teña que almacenar todo na memoria xeral da aplicación (a lenta).
Conxunto de instrucións
ARM64 tamén trae cambios importantes ao conxunto de instrucións. Un conxunto de instrucións é un conxunto de operacións atómicas que pode realizar un procesador (por exemplo, 'ADD register1 register2' engade os números en dous rexistros). As funcións dispoñibles para as linguas individuais están compostas destas instrucións. As funcións máis complexas deben executar máis instrucións, polo que poden ser máis lentas.
Novidades en ARM64 son as instrucións para o cifrado AES, as funcións hash SHA-1 e SHA-256. Polo tanto, en lugar dunha implementación complexa, só a linguaxe chamará a esta instrución, o que achegará unha enorme aceleración ao cálculo de tales funcións e, con sorte, aumentará a seguridade nas aplicacións. p.ex. o novo Touch ID tamén utiliza estas instrucións na encriptación, o que permite unha velocidade e seguridade real (en teoría, un atacante tería que modificar o propio procesador para acceder aos datos, o que é pouco práctico dado o seu tamaño en miniatura).
Compatibilidade con 32 bits
É importante mencionar que o A7 pode funcionar completamente en modo de 32 bits sen necesidade de emulación. Significa que o novo iPhone 5s pode executar aplicacións compiladas en ARM de 32 bits sen ningunha desaceleración. Non obstante, entón non pode usar as novas funcións ARM64, polo que sempre paga a pena facer unha construción especial só para o A7, que debería funcionar moito máis rápido.
Cambios de tempo de execución
Runtime é o código que engade funcións á linguaxe de programación, que é capaz de utilizar mentres a aplicación está en execución, ata despois da tradución. Dado que Apple non precisa manter a compatibilidade das aplicacións (que un binario de 64 bits se executa en 32 bits), poderían permitirse facer algunhas melloras máis na linguaxe Objective-C.
Un deles é o chamado punteiro etiquetado (indicador marcado). Normalmente, os obxectos e os punteiros a eses obxectos almacénanse en partes separadas da memoria. Non obstante, os novos tipos de punteiro permiten que as clases con poucos datos almacenen obxectos directamente no punteiro. Este paso elimina a necesidade de asignar memoria directamente ao obxecto, só tes que crear un punteiro e o obxecto dentro del. Os punteiros etiquetados só se admiten na arquitectura de 64 bits tamén debido ao feito de que xa non hai espazo suficiente nun punteiro de 32 bits para almacenar suficientes datos útiles. Polo tanto, iOS, a diferenza de OS X, aínda non admitía esta función. Non obstante, coa chegada de ARM64, isto está cambiando e iOS tamén se puxo ao día con OS X neste sentido.
Aínda que os punteiros teñen 64 bits de lonxitude, no ARM64 só se usan 33 bits para o propio enderezo do punteiro. E se somos capaces de desenmascarar de forma fiable o resto dos bits do punteiro, podemos usar este espazo para almacenar datos adicionais, como no caso dos punteiros marcados mencionados. Conceptualmente, este é un dos maiores cambios na historia de Objective-C, aínda que non é unha característica comercializable, polo que a maioría dos usuarios non saberán como Apple está avanzando en Objective-C.
En canto aos datos útiles que se poden almacenar no espazo restante dun punteiro tan marcado, Objective-C, por exemplo, agora utilízao para almacenar o chamado conta de referencia (número de referencias). Anteriormente, o reconto de referencias almacenábase nun lugar diferente da memoria, nunha táboa hash preparada para iso, pero isto podería ralentizar todo o sistema no caso dunha gran cantidade de chamadas alloc/dealloc/retain/release. A táboa tivo que estar bloqueada debido á seguridade dos fíos, polo que non se puido cambiar o reconto de referencia de dous obxectos en dous fíos ao mesmo tempo. Non obstante, este valor insírese recentemente no resto dos chamados Xesús indicadores. Esta é outra vantaxe e aceleración discretas, pero enormes, no futuro. Non obstante, isto nunca se puido conseguir nunha arquitectura de 32 bits.
A información sobre obxectos asociados, se o obxecto ten unha referencia débil, se é necesario xerar un destrutor para o obxecto, etc., tamén se inseriu recentemente no lugar restante dos punteiros aos obxectos. Grazas a esta información, o Objective-C runtime é capaz de acelerar fundamentalmente o tempo de execución, o que se reflicte na velocidade de cada aplicación. A partir das probas, isto significa un 40-50% de aceleración de todas as chamadas de xestión de memoria. Só cambiando a punteiros de 64 bits e usando este novo espazo.
Conclusión
Aínda que os competidores tentarán difundir a idea de que pasar a unha arquitectura de 64 bits é innecesario, xa saberás que esta é só unha opinión moi pouco informada. É certo que cambiar a 64 bits sen adaptar o teu idioma ou as túas aplicacións non significa nada, incluso ralentiza todo o sistema. Pero o novo A7 usa un ARM64 moderno cun novo conxunto de instrucións, e Apple tomouse a molestia de modernizar toda a linguaxe Objective-C e aproveitar as novas capacidades, de aí a aceleración prometida.
Aquí mencionamos un gran número de razóns polas que unha arquitectura de 64 bits é o paso correcto. É outra revolución "baixo o capó", grazas á cal Apple intentará manterse á vangarda non só co deseño, a interface de usuario e o rico ecosistema, senón sobre todo coas tecnoloxías máis modernas do mercado.
Moitas persoas sen información sobre Android/Samsung deberían ler este artigo e esconderse na esquina.
Ben, temos que sentir pena por eles. Durante anos escusaron a tráxica UX e UI de Android dicindo que teñen o sistema operativo máis avanzado tecnoloxicamente con funcións e agora descubriron que están atrás de novo :)
Se unha persoa non é unha ovella e escoita anuncios (e é bo niso), despois da experiencia persoal pode formar a súa propia opinión :-).
Probo case toda a competencia e formo a miña propia opinión.
Para min, necesito un novo teléfono móbil de altas prestacións, porque non gasto moito nel. É dicir Necesito menos rendemento por menos prezo ;-). Quizais preferiría un máis lento cunha batería máis grande.
Por outra banda, o novo procak sería útil para o iPad onde hai moitos xogos :-).
Son Android/HTC :) porque é moi divertido para min e a miña afección é enraizar e converter HW de alta calidade nun loitador rápido. E iOS non me deixa facer iso. (Non é nin necesario. Máis ou menos, iOS está pensado para que todo funcione como debe e non teñas que facer nada alí. Cando deixe de gozar de xogar, merco unha mazá e desfruto). Pero non sei por que segues atacándote uns a outros coma nenos. Apple é completamente como Android. É como comparar Democracia con Ditadura e similares... Vin a conferencia cando se presentou o iPhone 5S e, a pesar de que non teño nada de Apple, gustoume o 64 bits e outras melloras que viñeron. Pero non porque sexa un honimír trtko complexo que se senta detrás dun PC e persegue Android ou Apple, senón porque vexo o PROGRESO que non me fará esperar moito tempo. A xente debería comezar a traballar moi duro para que non teña tempo de lidiar coa merda, por dicilo educadamente.
contribución construtiva do outro lado :) kiez abriría os ollos ao restante 99% Android positivo
quizais o 99% dos fanáticos da mazá deberían ser discutidos primeiro, entón podemos ter unha conversa construtiva
cousas moi complexas explicadas simplemente... grazas
Gran artigo! Si, estou de acordo en que os usuarios de Android/WP deben ler este artigo de forma obrigatoria. En lugar de trolear e falar intelixente de "como o 64b é inútil nos móbiles"...
probablemente nunca tiveses un wp na túa man, se non, non terías isto
Desde os seus primeiros éxitos no mercado móbil, Samsung non fixo máis que difamar á competencia, pero en esencia, estivo seguindo os seus pasos durante todo este tempo. Apple sempre foi un modelo a seguir para as empresas tecnolóxicas, e se se centran só en burlarse e desinformar constantemente aos clientes, pronto tropezarán. Apple sempre seguiu o seu camiño e sempre foi unha cuestión de moi bo momento, do que carecen moitas empresas competidoras do sector.
Poderíase dicir que Samsung está montando a onda e aproveitando as súas posibilidades. Apostou por Android, ten un gran HW, fai moitas cousas el mesmo, ten un apoio decente. E como calquera empresa asiática depredadora, utiliza todas as posibilidades da publicidade. E claro que rouba e copia. O que é bo para "ollos inclinados" é copiar. Calcularon moi ben que é moito máis barato que ir polo seu, paso a paso. E como unha empresa forte, simplemente pode pagar isto. Aínda así…
Non entendo por que a velocidade do teléfono aumenta constantemente, dáme algúns exemplos para que o usas, pouco a pouco non ten sentido para min aumentar o rendemento do teléfono móbil, pero eliminarei a palabra marketing. .
Xogos, xogos mal optimizados. Ademais, Transport Tycoon no iPad 3 non funciona tan ben e na mesma resolución que no escritorio. Exemplo.
Non entendo por que a velocidade do teléfono segue aumentando, ponme algúns exemplos de para que o usas, pouco a pouco non ten sentido para min aumentar o rendemento do móbil, se lle quito a palabra marketing .
Para procesamento de vídeo, audio e imaxe. E ata os xogos.
Calquera persoa que use un iPhone só para chamar, enviar mensaxes de texto e, ocasionalmente, ler ou enviar correos electrónicos e, ocasionalmente, navegar por Internet necesitará un iPhone 4. Creo que hai moitos usuarios deste tipo. Non todos necesitan o mellor teléfono do mundo :-)
ovellas
A compensación física entre hardware e software non significa nada para vostede? Isto lémbrame un pouco a finais do século XIX, cando os físicos daquela dicían que todo en física xa estaba descuberto e non había que continuar (unha década antes da teoría da relatividade e tres antes da teoría cuántica) .
A busca do mellor nunca remata. Ás veces o software leva e ás veces o hardware. Pero se un queda atrapado, non deixará marchar ao outro. Non seremos tan egoístas cos nosos descendentes :) Así que, ao teu comentario: un teléfono máis rápido permitirá aplicacións máis potentes, que poderán facer moito máis que unidades. E unha vez cousas para as que nin os ordenadores actuais son suficientes. O futuro é emocionante.
Exactamente :)
Bo artigo, pero non entendo por que Apple non puxo 7 GB de RAM no A2. Si, a multitarefa de iOS non é tal que se necesiten necesariamente 2 GB, pero tendo en conta o dobre de lonxitude do punteiro de memoria, sería moito máis axeitado.
Pero, polo demais, estou de acordo en que un procesador de 64 bits é "innecesario" para un teléfono móbil, do mesmo xeito que era innecesario unha pantalla retina ou un rato óptico en lugar dunha bola: todos estes inventos foron etiquetados como "innecesarios", pero na miña opinión palabra correcta é "atemporal", porque unha vez debe vir e Apple non ten medo de chegar a algo novo.
Sendo iso. Desafortunadamente, incluso "inútil" non é unha expresión precisa. Innecesario significa algo cuxa prioridade unha persoa descoñece. Iso definitivamente non é certo. Pode que a velocidade non necesite tal velocidade, pero definitivamente a recoñecerá. E cando o software se poña ao día co hardware, haberá espazo para mellorar de novo.
Por suposto, estou a favor, quero dicir que o iP5 é realmente un teléfono intelixente bastante rápido, polo que o 5S non tería que ser de 64 bits. Pero un día alguén tivo que lidiar con iso de novo e era Apple e xa era agora. Dende que me lembro, os expertos tamén falaron de como os procesadores de 64 bits serán inútiles mesmo nos ordenadores.
Para min, como un profano informático que case fallou a matriz, a conclusión é importante. Todo o artigo (avalado polos comentarios) paréceme bastante perspicaz, e aínda que non poderei explicalo, o A7 con arquitectura de 64 bits é un paso adiante. Grazas pola información.
Editaría o título do artigo, xa que é un movemento de mercadotecnia. Toda innovación é esencialmente un movemento de mercadotecnia. :-)
Non creo. Por exemplo, Samsung usa movementos de mercadotecnia. Aparecen con RAM, que o iPhone non necesita en absoluto. Están escapando con funcións que non se poden usar en absoluto. Aumentan a propósito o rendemento do procesador para probas. Etc. Iso é mercadotecnia, aínda que si, é enganoso, do que non deberían escapar ;)