Gå til innhold

? Neida, 64-bit på iPhone er ingen gimmick


Anbefalte innlegg

Nei, uttalelsen er helt feil.

 

Det er 64-bit instruksjonsset som bringer disse forbedringene i prosessoren. ARMv7 (32-bit) ville for eksempel ikke klart å bruke de ekstra registrene som gir mer ytelse.

 

Når man lager apps for iOS i Xcode nå se er det veldig enkelt å kompilere med støtte for 64-bit, og i mange tilfeller vil ikke dette kreve ekstra jobb med koden. Du glemmer også at ekstremt mange av prosessene og tjenestene som kjører i iOS er inkludert i OS og er skrevet om for 64-bit av Apple.

 

Eneste som foreløpig er markedsstunt med 64-bit er støtten for 4GB+ med minne, da det enda er noen år til vi har behov for det.

Som du skriver er det ikke noen fordeler med 64bit om man ser på minne, hvilket var hovedgrunnen til implementeringen av 64bit på x86 plattformen. Men, det er riktig at 64bit systemer har en fordel når det kommer til registerstørrelser. Og dette kan da for så vidt måles i syntetiske tester.

 

Men, hva med de reelle forskjellene dette medfører for brukeren? For å få svar på dette må vi i første omgang se på hva dette med registre innebærer, og hva registeret er. Registeret er kort for talt en liten bit minne plassert på prosessoren som er raskere en "vanlig" minne.

 

Nå, 32bit registre kan adressere 2^32 forskjellige verdier der 64bit registre kan adressere 2^64. Lek litt med kalkulatoren og man ser at tallenes tale er klar. Men det disse tallene viser er hva som KAN gjøres, ikke nødvendig vis hva som gjøres i praksis.

 

Sannheten er at de aller fleste applikasjoner ikke utnytter bredden av 64bit instruksjonssett fullt ut selv om de bruker dem og har fordeler av dem i programmeringsfasen, dette er stort sett forbeholdt store tunge applikasjoner som Photoshop og 3D applikasjoner, samt nyere store spill på PC. Jeg vil påstå at de fleste, om ikke ALLE applikasjoner for en smartmobil ikke har nytte 64bit instruksjonssett, ganske enkelt fordi applikasjonen ikke behøver så brede instruksjonssett for å kjøre. Faktisk kan man i enkelte tilfeller komme til å se et relativt fall i ytelse for rekompilerte applikasjoner fordi cashen fylles opp av dobbelt så store registre som kun er halvfulle.

 

Når 5s ble avduket ble Infinity Blade 3 promotert som første spill ut for 64bit plattformen, og uttalelser som iPhone 5s' 64bit prosessor er den eneste som kunne rendre spillet som det var ment å bli vist hang løst. Vell, når spillet ble suppet samtidig med iOS7 utnyttet det ikke 64bit prosessoren i det hele tatt, og denne støtten kom først en uke senere. Litt etter hvert har spillet blitt oppgradert for å støtte den nye prosessoren, med bedre grafikk etc.

 

For det er de som har uttalt at selv om 64bit registre ikke gir store fordeler i vanlige applikasjoner, gir det en stor fordel på spill som bruker GPU'en. Men så vidt meg bekjent støtter ikke OpenGL ES 64bit arkitekturen. Så at Epic kunne gi flottere grafikk er mer relatert til prosessorens ytelse i sin helhet, enn det faktum at den er 64 bit.

 

En annen ting å tenke på er DRAM. Ved å bruke 64bit kan man ved rekompilering av 32bit uten skikkelig optimalisering av koden får en stor økning av DRAM prefetch buffer, hvilket vil føre til økte batteriforbruk og minneforbruk på enheten.

 

Så min påstand er fremdeles at for sluttbrukeren er ytelseseffekten av 64bit ikke vesentlig i dag, på akkurat samme måte som den var, og til dels er, mindre vesentlig på PC.

 

MEN, det er for så vidt er riktig steg i dag. For overgangen til 64bit er i alle tilfeller ikke brå og umiddelbar, og innen 2015, der vi kanskje kan se for oss at HW og behovet for 64 bit er mer samkjørt, så vil man ha flyttet mye av programvaren på plattformen over allerede.

Lenke til kommentar
Videoannonse
Annonse

Jeg trenger vist å gjenta hva jeg skrev i forrige post. ARMv8 er ikke kun en 64-bit utvidelse av ARMv7 som er et 32-bit instruksjonsett. ARMv8 er et helt nytt instruksjonsett med flere egenskaper som ikke finnes i ARMv7.

 

Det er jo ikke bare bredden på registerene som blir større, det er også mengden registere som blis større!

ARMv7 har 15 registere (32-bit) og ARMv8 har 30 registere (64-bit) den økte mengden med registere gjør at en kompilator kan ha mer data nærmere CPU.

 

PS! Når det gjelder Infinity Blade 3 så kan du nok regne med at de har hatt tilgang til Apple sin 64-bit prosessor og 64-bit beta av iOS 7 i flere måneder, og for spillutviklere så er nok oppdateringene av SIMD-enheten i prosessoren (NEON) som også er en del av ARMv8 en viktig forbedring.

  • Liker 1
Lenke til kommentar

Diskusjonen går på om 64bit utvidelsen i seg selv gir bedre ytelse eller ikke, ikke hvor vidt ARMv8 er bedre enn ARMv7.

 

Det er ingen umiddelbar sammenheng mellom 32/64bit og antall registre. Dette er mer et design valg. x86-32 har 8 registere, og x86-64 har 16. ARM har henholdsvis 16 og 32. Men dette er i realiteten bare de fastsatte registrene, for i praksis backes disse av en hel del registre (64-256) i tillegg til de du kan aksessere direkte. Disse benyttes gjennom "register renaming".

 

Med "out-of-order execution" og "register renaming" betyr ikke antall registre så mye fordi de bare er midlertidige tags, og blir renamet til den mye større "virtuelle" register poolen. 8 registre er for lite, 16 er et fint nummer, men 32 vil ofte være "for mye" i den forstand at man i stor grad vil se mange av disse ubrukt.

Lenke til kommentar
×
×
  • Opprett ny...