Mike Ash dedikeret på sin blog de praktiske konsekvenser af at skifte til 64-bit arkitektur i iPhone 5S. Denne artikel trækker på hans resultater.
Årsagen til denne tekst skyldes primært den store mængde misinformation, der spredes om, hvad den nye iPhone 5s med en 64-bit ARM-processor faktisk betyder for brugerne og markedet. Her vil vi forsøge at bringe objektiv information om ydeevnen, mulighederne og implikationerne af denne overgang for udviklere.
"64 bit"
Der er to dele af en processor, som "X-bit"-etiketten kan referere til - bredden af heltalsregistrene og bredden af pointerne. Heldigvis er disse bredder de samme på de fleste moderne processorer, så i tilfældet med A7 betyder det 64-bit heltalsregistre og 64-bit pointere.
Det er dog lige så vigtigt at påpege, hvad "64bit" IKKE betyder: RAM fysisk adressestørrelse. Antallet af bits, der skal kommunikeres med RAM (altså mængden af RAM, en enhed kan understøtte) er ikke relateret til antallet af CPU-bits. ARM-processorer har alt mellem 26- og 40-bit adresser og kan ændres uafhængigt af resten af systemet.
- Databus størrelse. Mængden af data modtaget fra RAM eller bufferhukommelse er ligeledes uafhængig af denne faktor. Individuelle processorinstruktioner kan anmode om forskellige mængder data, men de sendes enten i bidder eller modtages mere end nødvendigt fra hukommelsen. Det afhænger af størrelsen af datakvantemet. iPhone 5 modtager allerede data fra hukommelsen i 64-bit kvanta (og har en 32-bit processor), og vi kan støde på størrelser op til 192 bit.
- Alt relateret til flydende komma. Størrelsen af sådanne registre (FPU) er igen uafhængige af processorens interne funktion. ARM har brugt 64-bit FPU siden før ARM64 (64-bit ARM-processor).
Generelle fordele og ulemper
Hvis vi sammenligner ellers identiske 32bit og 64bit arkitekturer, er de generelt ikke så forskellige. Dette er en af grundene til den generelle forvirring hos offentligheden, der leder efter en grund til, hvorfor Apple også flytter til 64bit på mobile enheder. Det hele kommer dog fra de specifikke parametre for A7 (ARM64) processoren og hvordan Apple bruger den, ikke kun fra det faktum at processoren har en 64-bit arkitektur.
Men hvis vi stadig ser på forskellene mellem disse to arkitekturer, vil vi finde flere forskelle. Den åbenlyse er, at 64-bit heltalsregistre kan håndtere 64-bit heltal mere effektivt. Allerede før var det muligt at arbejde med dem på 32-bit processorer, men det betød som regel at dele dem op i 32-bit lange stykker, hvilket medførte langsommere beregninger. Så en 64-bit processor kan generelt beregne med 64-bit typer lige så hurtigt som med 32-bit. Det betyder, at applikationer, der generelt bruger 64-bit-typer, kan køre meget hurtigere på en 64-bit-processor.
Selvom 64bit ikke påvirker den samlede mængde RAM, som processoren kan bruge, kan det gøre det lettere at arbejde med store bidder af RAM i ét program. Ethvert enkelt program, der kører på en 32-bit processor, har kun omkring 4 GB adresseplads. Tager man i betragtning, at operativsystemet og standardbibliotekerne fylder noget, efterlader dette programmet et sted mellem 1-3 GB til applikationsbrug. Men hvis et 32-bit system har mere end 4 GB RAM, er det lidt mere kompliceret at bruge denne hukommelse. Vi er nødt til at ty til at tvinge styresystemet til at kortlægge disse større bidder af hukommelse til vores program (hukommelsesvirtualisering), eller vi kan opdele programmet i flere processer (hvor hver proces igen teoretisk har 4 GB hukommelse til rådighed til direkte adressering).
Disse "hacks" er dog så svære og langsomme, at et minimum af applikationer bruger dem. I praksis vil hvert program på en 32-bit processor kun bruge sine 1-3 GB hukommelse, og mere tilgængelig RAM kan bruges til at køre flere programmer på samme tid eller bruge denne hukommelse som en buffer (caching). Disse anvendelser er praktiske, men vi vil gerne have, at ethvert program nemt kan bruge bidder af hukommelse, der er større end 4 GB.
Nu kommer vi til den hyppige (faktisk ukorrekte) påstand om, at uden mere end 4 GB hukommelse er en 64-bit arkitektur ubrugelig. Et større adresseområde er nyttigt selv på et system med mindre hukommelse. Hukommelseskortede filer er et praktisk værktøj, hvor en del af filens indhold er logisk knyttet til processens hukommelse, uden at hele filen skal indlæses i hukommelsen. Således kan systemet for eksempel gradvist behandle store filer mange gange større end RAM-kapaciteten. På et 32-bit system kan så store filer ikke hukommelsesmappes pålideligt, hvorimod det på et 64-bit system er et stykke kage, takket være det meget større adresserum.
Men den større størrelse af pointere medfører også en stor ulempe: ellers har identiske programmer brug for mere hukommelse på en 64-bit processor (disse større pointere skal gemmes et sted). Da pointere er en hyppig del af programmer, kan denne forskel belaste cachen, hvilket igen får hele systemet til at køre langsommere. Så i perspektiv kan vi se, at hvis vi bare ændrede processorarkitekturen til 64-bit, ville det faktisk bremse hele systemet. Så denne faktor skal balanceres af flere optimeringer andre steder.
ARM64
A7, 64-bit processoren, der driver den nye iPhone 5s, er ikke bare en almindelig ARM-processor med bredere registre. ARM64 indeholder store forbedringer i forhold til den ældre 32-bit version.
register
ARM64 rummer dobbelt så mange heltalsregistre som 32-bit ARM (pas på ikke at forveksle antallet og bredden af registre - vi talte om bredden i afsnittet "64-bit". Så ARM64 har både dobbelt så brede registre og dobbelt så mange registre). 32-bit ARM har 16 heltalsregistre: en programtæller (PC - indeholder nummeret på den aktuelle instruktion), en stak-pointer (en pointer til en igangværende funktion), et linkregister (en pointer til returneringen efter slutningen af funktionen), og de resterende 13 er til applikationsbrug. Imidlertid har ARM64 32 heltalsregistre, inklusive et nulregister, et linkregister, en rammepointer (svarende til en stak-pointer) og en reserveret til fremtiden. Dette efterlader os med 28 registre til applikationsbrug, mere end det dobbelte af 32-bit ARM. Samtidig fordoblede ARM64 antallet af floating-point number (FPU) registre fra 16 til 32 128-bit registre.
Men hvorfor er antallet af registre så vigtigt? Hukommelse er generelt langsommere end CPU-beregninger, og læsning/skrivning kan tage meget lang tid. Dette ville få den hurtige processor til at blive ved med at vente på hukommelsen, og vi ville ramme systemets naturlige hastighedsgrænse. Processorer forsøger at skjule dette handicap med lag af buffere, men selv den hurtigste (L1) er stadig langsommere end processorens beregning. Imidlertid er registre hukommelsesceller direkte i processoren, og deres læsning/skrivning er hurtig nok til ikke at bremse processoren. Antallet af registre betyder praktisk talt mængden af den hurtigste hukommelse til processorberegninger, hvilket i høj grad påvirker hele systemets hastighed.
Samtidig har denne hastighed brug for god optimeringsstøtte fra compileren, så sproget kan bruge disse registre og ikke skal gemme alt i den generelle applikation (den langsomme) hukommelse.
Instruktionssæt
ARM64 bringer også store ændringer til instruktionssættet. Et instruktionssæt er et sæt atomoperationer, som en processor kan udføre (f.eks. tilføjer 'ADD register1 register2' tallene i to registre). De funktioner, der er tilgængelige for de enkelte sprog, er sammensat af disse instruktioner. Mere komplekse funktioner skal udføre flere instruktioner, så de kan være langsommere.
Nyt i ARM64 er instruktioner til AES-kryptering, SHA-1 og SHA-256 hash-funktioner. Så i stedet for en kompleks implementering er det kun sproget, der kalder denne instruktion - hvilket vil bringe en enorm fremskyndelse af beregningen af sådanne funktioner og forhåbentlig øget sikkerhed i applikationer. F.eks. det nye Touch ID bruger også disse instruktioner i kryptering, hvilket giver mulighed for reel hastighed og sikkerhed (i teorien skulle en angriber selv modificere processoren for at få adgang til dataene - hvilket mildest talt er upraktisk i betragtning af dens miniaturestørrelse).
Kompatibilitet med 32bit
Det er vigtigt at nævne, at A7 kan køre fuldt ud i 32-bit tilstand uden behov for emulering. Det betyder, at den nye iPhone 5s kan køre applikationer kompileret på 32-bit ARM uden nogen afmatning. Så kan den dog ikke bruge de nye ARM64-funktioner, så det kan altid betale sig at lave en speciel build kun til A7, som skal køre meget hurtigere.
Ændringer i kørselstid
Runtime er den kode, der tilføjer funktioner til programmeringssproget, som den er i stand til at bruge, mens applikationen kører, indtil efter oversættelse. Da Apple ikke har behov for at opretholde applikationskompatibilitet (at en 64-bit binær kører på 32-bit), kunne de tillade sig at lave et par flere forbedringer til Objective-C-sproget.
En af dem er den såkaldte mærket pointer (markeret indikator). Normalt er objekter og pointere til disse objekter gemt i separate dele af hukommelsen. Men nye pointertyper tillader klasser med få data at gemme objekter direkte i markøren. Dette trin eliminerer behovet for at allokere hukommelse direkte til objektet, bare opret en markør og objektet inde i det. Taggede pointere understøttes kun i 64-bit arkitektur også på grund af det faktum, at der ikke længere er plads nok i en 32-bit pointer til at gemme nok nyttige data. Derfor understøttede iOS, i modsætning til OS X, endnu ikke denne funktion. Men med ankomsten af ARM64 ændrer dette sig, og iOS har også indhentet OS X i denne henseende.
Selvom pointere er 64 bit lange, bruges der på ARM64 kun 33 bit til pointerens egen adresse. Og hvis vi er i stand til pålideligt at afmaske resten af pointer-bittene, kan vi bruge denne plads til at gemme yderligere data – som i tilfældet med de nævnte mærkede pointere. Konceptuelt er dette en af de største ændringer i Objective-C's historie, selvom det ikke er en funktion, der kan sælges - så de fleste brugere vil ikke vide, hvordan Apple flytter Objective-C fremad.
Hvad angår de nyttige data, der kan gemmes i den resterende plads af en sådan tagget pointer, bruger Objective-C det nu f.eks. til at gemme den såkaldte referenceantal (antal referencer). Tidligere blev referencetællingen gemt et andet sted i hukommelsen, i en hash-tabel, der var forberedt til det, men dette kunne bremse hele systemet i tilfælde af et stort antal alloc/dealloc/retain/release opkald. Bordet skulle låses på grund af gevindsikkerhed, så referencetallet for to objekter i to gevind kunne ikke ændres på samme tid. Denne værdi er dog nyindsat i resten af den såkaldte isa indikatorer. Dette er endnu en iøjnefaldende, men enorm fordel og acceleration i fremtiden. Dette kunne dog aldrig opnås i en 32-bit arkitektur.
Oplysninger om tilknyttede objekter, om objektet er svagt refereret, om det er nødvendigt at generere en destruktor til objektet osv., er også nyindsat i det resterende sted af pointere til objekterne. Takket være denne information er Objective-C runtime er i stand til fundamentalt at fremskynde runtime, hvilket afspejles i hastigheden af hver applikation. Fra test betyder det omkring 40-50% fremskyndelse af alle hukommelsesstyringsopkald. Bare ved at skifte til 64-bit pointere og bruge denne nye plads.
Záver
Selvom konkurrenter vil forsøge at udbrede ideen om, at det er unødvendigt at flytte til en 64-bit arkitektur, vil du allerede vide, at dette kun er en meget uvidende mening. Det er rigtigt, at blot at skifte til 64bit uden at tilpasse sproget eller applikationerne til det, ikke rigtig betyder noget – det bremser endda hele systemet. Men den nye A7 bruger en moderne ARM64 med et nyt instruktionssæt, og Apple har gjort sig den ulejlighed at modernisere hele Objective-C sproget og udnytte de nye muligheder – deraf den lovede speedup.
Her har vi nævnt en lang række grunde til, at en 64-bit arkitektur er det rigtige skridt fremad. Det er endnu en revolution "under motorhjelmen", takket være hvilken Apple vil forsøge at holde sig på forkant, ikke kun med design, brugergrænseflade og rigt økosystem, men hovedsageligt med de mest moderne teknologier på markedet.
En masse uinformerede Android/Samsung-folk bør læse denne artikel og derefter gemme sig i hjørnet.
Nå, vi må have ondt af dem. I årevis undskyldte de den tragiske UX og UI af Android ved at sige, at de har det mest teknologisk avancerede OS med funktioner, og nu fandt de ud af, at de er år bagud igen :)
Hvis en person ikke er et får og lytter til reklamer (og han er god til det), så kan han efter personlig erfaring danne sig sin egen mening :-).
Jeg prøver næsten hele konkurrencen og danner mig min egen mening.
For mig har jeg brug for en ny super højtydende mobiltelefon, for den bruger jeg ikke ret meget på. Det er Jeg har brug for mindre ydeevne til mindre pris ;-). Måske ville jeg foretrække en langsommere med et større batteri.
Til gengæld ville den nye procak være brugbar til iPad'en, hvor der er mange spil :-).
Jeg er Android/HTC :) fordi DET er ret sjovt for mig, og at roote og konvertere højkvalitets HW til en hurtig fighter er min hobby. Og iOS vil ikke lade mig gøre det. (Det er ikke engang nødvendigt. Mere eller mindre er iOS designet, så alt fungerer som det skal, og du behøver ikke at gøre noget der. Når jeg stopper med at spille, køber jeg et æble og nyder det). Men jeg ved ikke hvorfor I bliver ved med at angribe hinanden som børn. Apple er fuldstændig ligesom Android. Det er som at sammenligne Demokrati med Diktatur og lignende... Jeg så konferencen, da iPhone 5S blev introduceret, og på trods af at jeg ikke ejer noget fra Apple, kunne jeg godt lide 64bit og andre forbedringer, der kom. Men ikke fordi jeg er en kompleks honimír trtko, der sidder bag en pc og jagter Android eller Apple, men fordi jeg ser fremskridtet, der ikke får mig til at vente længe. Folk burde begynde at arbejde rigtig hårdt, så de ikke har tid til at beskæftige sig med bullshit, for at sige det høfligt.
konstruktivt bidrag fra den anden side :) Kiez det ville åbne øjnene for de resterende 99% android positive
måske skal 99% af æblefanatikere diskuteres først, så kan vi få en konstruktiv samtale
meget komplekse ting forklaret enkelt... tak
Fantastisk artikel! Ja, jeg er enig i, at Android/WP-brugere bør læse denne artikel som et must. I stedet for at trolde og tale smart om "hvordan 64b er ubrugelig i mobiler"...
du har sikkert aldrig haft en wp i hånden, ellers ville du ikke have dette
Siden de første succeser på mobilmarkedet har Samsung ikke gjort andet end at smøre konkurrenterne ud, men i bund og grund har de fulgt i deres fodspor hele tiden. Apple har altid været en rollemodel for tech-virksomheder, og hvis de kun fokuserer på at håne og konstant misinformere kunder, vil de snart snuble. Apple har altid gået sine egne veje, og det har altid været et spørgsmål om rigtig god timing, som mange konkurrerende virksomheder i branchen mangler.
Man kan sige, at Samsung rider på bølgen og udnytter sine muligheder. Han satsede på Android, han har fantastisk HW, han laver mange ting selv, han har anstændig support. Og som ethvert rovdyr asiatisk firma bruger det alle reklamemulighederne. Og selvfølgelig stjæler og kopierer han. Det "skråøjede" er god til, er at kopiere. De har udmærket regnet sig frem til, at det er meget billigere end at gå deres egen vej, skridt for skridt. Og som en stærk virksomhed har den simpelthen råd til dette. Endnu…
Jeg forstår bare ikke hvorfor telefonens hastighed konstant stiger, giv mig nogle eksempler på hvad du bruger den til, det giver langsomt ingen mening for mig at øge ydeevnen på mobiltelefonen, men jeg fjerner ordet marketing .
Spil, dårligt optimerede spil. Transport Tycoon på iPad 3 kører heller ikke så jævnt og i samme opløsning, som det gør på skrivebordet. Eksempel.
Jeg forstår bare ikke hvorfor telefonens hastighed bliver ved med at stige, giv mig nogle eksempler på hvad du bruger den til, det giver langsomt ingen mening for mig at øge ydeevnen på mobiltelefonen, hvis jeg fjerner ordet marketing fra den .
Til video-, lyd- og billedbehandling. Og videre til spillene.
Enhver, der kun bruger en iPhone til at ringe, sende sms'er og lejlighedsvis læse eller sende e-mails og lejlighedsvis surfe på internettet, har brug for en iPhone 4. Jeg tror, at der er mange sådanne brugere. Ikke alle har brug for verdens bedste telefon :-)
får
Betyder den fysiske afvejning mellem hardware og software ikke noget for dig? Dette minder mig lidt om slutningen af det 19. århundrede, hvor fysikerne på den tid sagde, at alt inden for fysik allerede var blevet opdaget, og der var ingen grund til at fortsætte (et årti før relativitetsteorien og tre før kvanteteorien) .
Jagten på det bedste slutter aldrig. Nogle gange fører softwaren og nogle gange hardwaren. Men hvis den ene går i stå, vil den ikke slippe den anden. Vi vil ikke være så egoistiske over for vores efterkommere :) Så til din kommentar - en hurtigere telefon vil muliggøre mere kraftfulde applikationer, som vil kunne meget mere end drev. Og engang ting, som selv nutidens computere ikke rækker til. Fremtiden er spændende.
Nemlig :)
Fin artikel, men jeg forstår ikke hvorfor Apple ikke lagde 7 GB RAM i A2. Ja, iOS multitasking er ikke sådan, at der nødvendigvis er brug for 2 GB, men givet den dobbelte længde af hukommelsesmarkøren, ville det være meget mere velegnet.
Men ellers er jeg enig i, at en 64-bit processor er "unødvendig" til en mobiltelefon, ligesom en retina-skærm eller en optisk mus i stedet for en kugle var unødvendig - alle disse opfindelser blev stemplet som "unødvendige", men efter min mening det rigtige ord er "tidløs", for der skal en gang komme, og Apple er ikke bange for at finde på noget nyt.
Jeg er enig. Desværre er selv "ubrugelig" ikke et præcist udtryk. Unødvendig betyder noget, hvis prioritet en person ikke kender. Det er bestemt ikke sandt. Hastighed behøver måske ikke en sådan hastighed, men den vil helt sikkert genkende den. Og når softwaren indhenter hardwaren, vil der igen være plads til forbedringer.
Selvfølgelig er jeg for, jeg mener, at iP5 virkelig er en ret hurtig smartphone, så 5S behøver slet ikke at være 64bit. Men en dag skulle nogen beskæftige sig med det igen, og det var Apple, og det var det nu. Så længe jeg kan huske, har eksperter også talt om, hvordan 64-bit processorer vil være ubrugelige selv i computere.
For mig, som IT-lægmand, der næsten slog matricen, er konklusionen vigtig. Hele artiklen (understøttet af kommentarerne) virker ret indsigtsfuld for mig, og selvom jeg ikke vil være i stand til at forklare det, er A7 med 64-bit arkitektur et skridt fremad. Tak for info.
Jeg ville redigere artiklens titel, da det er et markedsføringstiltag. Enhver innovation er i bund og grund et markedsføringstiltag. :-)
Jeg tror ikke. For eksempel bruger Samsung markedsføringstiltag. De dukker op med RAM, som iPhonen slet ikke har brug for. De slipper af sted med funktioner, der slet ikke er brugbare. Deres bevidst at øge processorydelsen til test. Etc. Det er markedsføring, selvom ja, det er vildledende, hvilket de ikke bare skal slippe afsted med ;)