Mike Ash tillägnad sin blogg de praktiska konsekvenserna av att byta till 64-bitars arkitektur i iPhone 5S. Den här artikeln bygger på hans upptäckter.
Anledningen till denna text beror främst på den stora mängd felaktig information som sprids om vad den nya iPhone 5s med en 64-bitars ARM-processor faktiskt betyder för användarna och marknaden. Här kommer vi att försöka ta fram objektiv information om prestanda, kapacitet och implikationer av denna övergång för utvecklare.
"64 bitar"
Det finns två delar av en processor som "X-bit"-etiketten kan referera till - bredden på heltalsregistren och bredden på pekarna. Lyckligtvis är dessa bredder desamma på de flesta moderna processorer, så i fallet med A7 betyder det 64-bitars heltalsregister och 64-bitars pekare.
Det är dock lika viktigt att påpeka vad "64bit" INTE betyder: RAM fysisk adressstorlek. Antalet bitar att kommunicera med RAM (därmed mängden RAM som en enhet kan stödja) är inte relaterat till antalet CPU-bitar. ARM-processorer har någonstans mellan 26- och 40-bitars adresser och kan ändras oberoende av resten av systemet.
- Databussstorlek. Mängden data som tas emot från RAM eller buffertminne är på liknande sätt oberoende av denna faktor. Individuella processorinstruktioner kan begära olika mängder data, men de skickas antingen i bitar eller tas emot mer än vad som behövs från minnet. Det beror på storleken på datakvantumet. iPhone 5 tar redan emot data från minnet i 64-bitars kvanta (och har en 32-bitars processor), och vi kan stöta på storlekar upp till 192 bitar.
- Allt som har med flyttal att göra. Storleken på sådana register (FPU) är återigen oberoende av processorns interna funktion. ARM har använt 64-bitars FPU sedan innan ARM64 (64-bitars ARM-processor).
Allmänna fördelar och nackdelar
Om vi jämför annars identiska 32-bitars och 64-bitars arkitekturer är de i allmänhet inte så olika. Detta är en av anledningarna till den allmänna förvirringen hos allmänheten som letar efter en anledning till varför Apple går över till 64bit även i mobila enheter. Men allt kommer från de specifika parametrarna för A7 (ARM64)-processorn och hur Apple använder den, inte bara från det faktum att processorn har en 64-bitars arkitektur.
Men om vi fortfarande tittar på skillnaderna mellan dessa två arkitekturer kommer vi att hitta flera skillnader. Det uppenbara är att 64-bitars heltalsregister kan hantera 64-bitars heltal mer effektivt. Redan tidigare gick det att arbeta med dem på 32-bitars processorer, men det innebar oftast att man delade upp dem i 32-bitars långa bitar, vilket orsakade långsammare beräkningar. Så en 64-bitars processor kan i allmänhet beräkna med 64-bitarstyper lika snabbt som med 32-bitars. Detta innebär att applikationer som vanligtvis använder 64-bitarstyper kan köras mycket snabbare på en 64-bitars processor.
Även om 64bit inte påverkar den totala mängden RAM som processorn kan använda, kan det göra det lättare att arbeta med stora bitar RAM i ett program. Varje enskilt program som körs på en 32-bitars processor har bara cirka 4 GB adressutrymme. Med tanke på att operativsystemet och standardbiblioteken tar upp något, lämnar detta programmet med någonstans mellan 1-3 GB för applikationsanvändning. Men om ett 32-bitarssystem har mer än 4 GB RAM, är det lite mer komplicerat att använda det minnet. Vi måste tillgripa att tvinga operativsystemet att mappa dessa större minnesbitar för vårt program (minnesvirtualisering), eller så kan vi dela upp programmet i flera processer (där varje process återigen teoretiskt har 4 GB minne tillgängligt för direkt adressering).
Men dessa "hack" är så svåra och långsamma att ett minimum av applikationer använder dem. I praktiken, på en 32-bitars processor, kommer varje program bara att använda sina 1-3 GB minne, och mer tillgängligt RAM-minne kan användas för att köra flera program samtidigt eller använda detta minne som en buffert (cachelagring). Dessa användningsområden är praktiska, men vi vill att alla program enkelt ska kunna använda minnesbitar större än 4 GB.
Nu kommer vi till det frekventa (faktiskt felaktiga) påståendet att utan mer än 4 GB minne är en 64-bitars arkitektur värdelös. Ett större adressutrymme är användbart även på ett system med mindre minne. Minnesmappade filer är ett praktiskt verktyg där en del av filens innehåll logiskt kopplas till processens minne utan att hela filen behöver laddas in i minnet. Således kan systemet till exempel successivt bearbeta stora filer många gånger större än RAM-kapaciteten. På ett 32-bitarssystem kan så stora filer inte minnesmappas på ett tillförlitligt sätt, medan det på ett 64-bitarssystem är en lappa, tack vare det mycket större adressutrymmet.
Men den större storleken på pekare medför också en stor nackdel: annars behöver identiska program mer minne på en 64-bitars processor (dessa större pekare måste lagras någonstans). Eftersom pekare är en frekvent del av program kan denna skillnad belasta cachen, vilket i sin tur gör att hela systemet går långsammare. Så i perspektiv kan vi se att om vi bara ändrade processorarkitekturen till 64-bitars, skulle det faktiskt sakta ner hela systemet. Så denna faktor måste balanseras av fler optimeringar på andra ställen.
ARM64
A7, 64-bitarsprocessorn som driver den nya iPhone 5s, är inte bara en vanlig ARM-processor med bredare register. ARM64 innehåller stora förbättringar jämfört med den äldre 32-bitarsversionen.
register
ARM64 rymmer dubbelt så många heltalsregister som 32-bitars ARM (var noga med att inte blanda ihop antalet och bredden på register - vi pratade om bredd i avsnittet "64-bitar". Så ARM64 har både dubbelt så breda register och dubbelt så många register). 32-bitars ARM har 16 heltalsregister: en programräknare (PC - innehåller numret på den aktuella instruktionen), en stackpekare (en pekare till en pågående funktion), ett länkregister (en pekare till returen efter slutet av funktionen), och de återstående 13 är för applikationsanvändning. Emellertid har ARM64 32 heltalsregister, inklusive ett nollregister, ett länkregister, en rampekare (liknande en stackpekare) och en reserverad för framtiden. Detta lämnar oss med 28 register för applikationsanvändning, mer än dubbelt så mycket som 32-bitars ARM. Samtidigt fördubblade ARM64 antalet flyttalsregister (FPU) från 16 till 32 128-bitars register.
Men varför är antalet register så viktigt? Minnet är i allmänhet långsammare än CPU-beräkningar och att läsa/skriva kan ta mycket lång tid. Detta skulle göra att den snabba processorn måste fortsätta vänta på minne och vi skulle nå systemets naturliga hastighetsgräns. Processorer försöker dölja detta handikapp med lager av buffertar, men även den snabbaste (L1) är fortfarande långsammare än processorns beräkning. Däremot är register minnesceller direkt i processorn och deras läsning/skrivning är tillräckligt snabb för att inte sakta ner processorn. Antalet register betyder praktiskt taget mängden snabbaste minne för processorns beräkningar, vilket i hög grad påverkar hastigheten i hela systemet.
Samtidigt behöver denna hastighet bra optimeringsstöd från kompilatorn, så att språket kan använda dessa register och inte behöver lagra allt i det allmänna applikationsminnet (det långsamma).
Instruktionsuppsättning
ARM64 medför också stora förändringar i instruktionsuppsättningen. En instruktionsuppsättning är en uppsättning atomoperationer som en processor kan utföra (t.ex. 'ADD register1 register2' adderar siffrorna i två register). De funktioner som är tillgängliga för enskilda språk är sammansatta av dessa instruktioner. Mer komplexa funktioner måste utföra fler instruktioner, så de kan vara långsammare.
Nytt i ARM64 är instruktioner för AES-kryptering, SHA-1 och SHA-256 hashfunktioner. Så istället för en komplex implementering är det bara språket som kommer att anropa denna instruktion - vilket kommer att ge en enorm snabbhet i beräkningen av sådana funktioner och förhoppningsvis ökad säkerhet i applikationer. T.ex. det nya Touch ID använder också dessa instruktioner för kryptering, vilket möjliggör verklig hastighet och säkerhet (i teorin skulle en angripare behöva modifiera själva processorn för att komma åt data - minst sagt opraktiskt med tanke på dess miniatyrstorlek).
Kompatibilitet med 32bit
Det är viktigt att nämna att A7 kan köras fullt ut i 32-bitarsläge utan behov av emulering. Det betyder att den nya iPhone 5s kan köra applikationer kompilerade på 32-bitars ARM utan någon avmattning. Men då kan den inte använda de nya ARM64-funktionerna, så det är alltid värt att göra en specialbygge bara för A7, som ska gå mycket snabbare.
Körtid ändras
Runtime är koden som lägger till funktioner till programmeringsspråket, som den kan använda medan applikationen körs, tills efter översättning. Eftersom Apple inte behöver upprätthålla programkompatibilitet (att en 64-bitars binär körs på 32-bitars), skulle de ha råd att göra några fler förbättringar av Objective-C-språket.
En av dem är den sk taggad pekare (markerad indikator). Normalt lagras objekt och pekare till dessa objekt i separata delar av minnet. Men nya pekartyper tillåter klasser med lite data att lagra objekt direkt i pekaren. Detta steg eliminerar behovet av att allokera minne direkt för objektet, skapa bara en pekare och objektet inuti det. Taggade pekare stöds endast i 64-bitars arkitektur också på grund av att det inte längre finns tillräckligt med utrymme i en 32-bitars pekare för att lagra tillräckligt med användbar data. Därför stödde iOS, till skillnad från OS X, ännu inte den här funktionen. Men med ankomsten av ARM64 förändras detta, och iOS har kommit ikapp OS X även i detta avseende.
Även om pekare är 64 bitar långa, används på ARM64 endast 33 bitar för pekarens egen adress. Och om vi på ett tillförlitligt sätt kan demaskera resten av pekarbitarna, kan vi använda detta utrymme för att lagra ytterligare data – som i fallet med de nämnda taggade pekarna. Konceptuellt är detta en av de största förändringarna i Objective-Cs historia, även om det inte är en säljbar funktion - så de flesta användare kommer inte att veta hur Apple flyttar Objective-C framåt.
När det gäller användbar data som kan lagras i det återstående utrymmet av en sådan taggad pekare, använder nu till exempel Objective-C den för att lagra den s.k. referensantal (antal referenser). Tidigare har referensräkningen lagrats på en annan plats i minnet, i en hash-tabell förberedd för det, men detta kunde bromsa hela systemet vid ett stort antal alloc/dealloc/retain/release-samtal. Bordet var tvungen att låsas på grund av gängsäkerhet, så referenstalet för två objekt i två gängor kunde inte ändras samtidigt. Detta värde är dock nyinfört i resten av den sk isa indikatorer. Detta är en annan oansenlig, men enorm fördel och acceleration i framtiden. Detta kunde dock aldrig uppnås i en 32-bitars arkitektur.
Information om associerade objekt, om objektet är svagt refererat, om det är nödvändigt att generera en destruktor för objektet, etc., infogas också nyligen i den återstående platsen för pekare till objekten. Tack vare denna information har Objective-C runtime kan i grunden påskynda körtiden, vilket återspeglas i hastigheten för varje applikation. Från att testa innebär detta cirka 40-50% snabbare av alla minneshanteringssamtal. Bara genom att byta till 64-bitars pekare och använda detta nya utrymme.
Záver
Även om konkurrenter kommer att försöka sprida idén om att det är onödigt att flytta till en 64-bitarsarkitektur, vet du redan att detta bara är en mycket oinformerad åsikt. Det är sant att att byta till 64-bitars utan att anpassa ditt språk eller dina applikationer egentligen inte betyder någonting – det saktar till och med ner hela systemet. Men nya A7 använder en modern ARM64 med en ny instruktionsuppsättning, och Apple har gjort sig besväret att modernisera hela Objective-C-språket och dra nytta av de nya funktionerna – därav den utlovade snabbheten.
Här har vi nämnt ett stort antal anledningar till varför en 64-bitars arkitektur är rätt steg framåt. Det är ytterligare en revolution "under huven", tack vare vilken Apple kommer att försöka ligga i framkant inte bara med design, användargränssnitt och rikt ekosystem, utan främst med de modernaste teknikerna på marknaden.
Många oinformerade Android/Samsung-personer borde läsa den här artikeln och sedan gömma sig i hörnet.
Tja, vi måste tycka synd om dem. I åratal ursäktade de Androids tragiska UX och UI genom att säga att de har det mest tekniskt avancerade operativsystemet med funktioner och nu fick de reda på att de ligger flera år efter igen :)
Om en person inte är ett får och lyssnar på reklam (och han är bra på det), så kan han efter personlig erfarenhet bilda sig sin egen uppfattning :-).
Jag provar nästan alla tävlingar och bildar mig en egen uppfattning.
För mig behöver jag en ny superhögpresterande mobiltelefon, eftersom jag inte spenderar mycket på den. Det är Jag behöver mindre prestanda för lägre pris ;-). Kanske skulle jag föredra en långsammare med ett större batteri.
Å andra sidan skulle den nya procaken vara användbar för iPaden där det finns många spel :-).
Jag är Android/HTC :) för att det är ganska kul för mig och att rota och konvertera högkvalitativ HW till en snabb fighter är min hobby. Och iOS låter mig inte göra det. (Det är inte ens nödvändigt. Mer eller mindre är iOS designad så att allt fungerar som det ska och du behöver inte göra någonting där. När jag slutar spela så köper jag ett äpple och njuter av det). Men jag vet inte varför ni fortsätter att attackera varandra som barn. Apple är helt som Android. Det är som att jämföra Democracy med Dictatur och liknande... Jag såg iPhone 5S presentationskonferens och trots att jag inte äger något från Apple gillade jag 64bit och andra förbättringar som kom. Men inte för att jag är en komplex honimír trtko som sitter bakom en PC och jagar Android eller Apple, utan för att jag ser FRAMSTEG som inte får mig att vänta länge. Folk borde börja jobba riktigt hårt så att de inte har tid att ta itu med skitsnack, för att uttrycka det artigt.
konstruktivt bidrag från andra sidan :) kiez det skulle öppna ögonen för de återstående 99% android positiva
kanske 99% av äppelfanatiker borde diskuteras först, sedan kan vi ha ett konstruktivt samtal
mycket komplicerade saker förklarade enkelt... tack
Bra artikel! Ja, jag håller med om att Android/WP-användare bör läsa den här artikeln som ett måste. Istället för att trolla och prata smart om "hur 64b är värdelös i mobiler"...
du har förmodligen aldrig haft en wp i handen, annars skulle du inte ha det här
Sedan sina första framgångar på mobilmarknaden har Samsung inte gjort annat än att smutskasta konkurrenterna, men i huvudsak har de följt i dess fotspår hela tiden. Apple har alltid varit en förebild för teknikföretag, och om de bara fokuserar på att håna och ständigt felinformera kunder kommer de snart att snubbla. Apple har alltid gått sin egen väg och det har alltid varit en fråga om väldigt bra timing, vilket många konkurrerande företag i branschen saknar.
Man kan säga att Samsung rider på vågen och utnyttjar sina möjligheter. Han satsade på Android, han har bra HW, han gör många saker själv, han har bra stöd. Och som alla rovgiriga asiatiska företag använder det alla reklammöjligheter. Och självklart stjäl han och kopierar. Det "snedögda" är bra på är att kopiera. De har väl räknat ut att det är mycket billigare än att gå sin egen väg, steg för steg. Och som ett starkt företag har det helt enkelt råd med detta. Än…
Jag förstår bara inte varför hastigheten på telefonen fortsätter att öka, ge mig några exempel på vad du använder den till, det är sakta meningslöst för mig att öka prestandan på mobilen, men jag tar bort ordet marknadsföring.
Spel, dåligt optimerade spel. Transport Tycoon på iPad 3 fungerar inte lika smidigt och i samma upplösning som på skrivbordet. Exempel.
Jag förstår bara inte varför hastigheten på telefonen fortsätter att öka, ge mig några exempel på vad du använder den till, det är sakta meningslöst för mig att öka prestandan på mobilen, om jag tar bort ordet marknadsföring från den .
För video-, ljud- och bildbehandling. Och vidare till spelen.
Alla som använder en iPhone endast för att ringa, skicka sms och ibland läsa eller skicka e-postmeddelanden och ibland surfa på Internet kommer att behöva en iPhone 4. Jag tror att det finns många sådana användare. Alla behöver inte världens bästa telefon :-)
får
Betyder inte den fysiska avvägningen mellan hårdvara och mjukvara någonting för dig? Detta påminner mig lite om slutet av 19-talet, då fysikerna på den tiden sa att allt inom fysiken redan hade upptäckts och att det inte behövdes fortsätta (ett decennium före relativitetsteorin och tre före kvantteorin) .
Jakten på det bästa tar aldrig slut. Ibland leder programvaran och ibland hårdvaran. Men om den ena fastnar släpper den inte den andra. Vi kommer inte att vara så själviska mot våra ättlingar :) Så till din kommentar - en snabbare telefon kommer att möjliggöra mer kraftfulla applikationer, som kommer att kunna göra mycket mer än att köra. Och en gång saker som inte ens dagens datorer räcker till. Framtiden är spännande.
Exakt :)
Trevlig artikel, men jag förstår inte varför Apple inte lade in 7GB RAM i A2:an. Ja, iOS multitasking är inte så att 2 GB nödvändigtvis behövs, men med tanke på den dubbelt så långa minnespekaren skulle det vara mycket mer lämpligt.
Men annars håller jag med om att en 64-bitars processor är "onödig" för en mobiltelefon, precis som en näthinnaskärm eller en optisk mus istället för en boll var onödig - alla dessa uppfinningar stämplades som "onödiga", men enligt mig det korrekta ordet är "tidlös", för en gång måste komma och Apple är inte rädd för att hitta på något nytt.
Jag håller med. Tyvärr är inte ens "värdelös" ett korrekt uttryck. Onödigt betyder något vars prioritet en person inte vet. Det är definitivt inte sant. Hastighet behöver kanske inte en sådan hastighet, men den kommer definitivt att känna igen den. Och när mjukvaran kommer ikapp hårdvaran finns det utrymme för förbättringar igen.
Visst, jag är för, jag menar att iP5 verkligen är en ganska snabb smartphone, så 5S behöver inte vara 64bit alls. Men en dag var någon tvungen att ta itu med det igen och det var Apple och det var det nu. Så länge jag kan minnas har experter också pratat om hur 64-bitars processorer kommer att vara värdelösa även i datorer.
För mig som IT-lekman som nästan blev underkänd på matrikeln är slutsatsen viktig. Hela artikeln (stödd av kommentarerna) verkar ganska insiktsfull för mig, och även om jag inte kommer att kunna förklara det, är A7 med 64-bitars arkitektur ett steg framåt. Tack för informationen.
Jag skulle redigera rubriken på artikeln, eftersom det är ett marknadsföringsdrag. Varje innovation är i grunden ett marknadsföringssteg. :-)
Jag tror inte. Till exempel använder Samsung marknadsföringsrörelser. De dyker upp med RAM, vilket iPhone inte alls behöver. De kommer undan med funktioner som inte alls är användbara. Deras avsiktligt ökande processorprestanda för tester. Etc. Det är marknadsföring, fast ja, det är missvisande, vilket de inte bara ska komma undan med ;)