Qual è il guadagno dell'architettura a 64 bit?

6

Ho giocato con macchine a 8 bit (C64), ho usato macchine a 16 bit (Win 3.1), mi sono divertito nello spazio degli indirizzi a 32 bit (Linux).

Ogni volta come utente (che significava anche essere uno sviluppatore per divertimento o profitto) sentivo il bisogno di altri bit e ho accolto con favore la prossima architettura bit più ampia. L'accesso a uno spazio di memoria più grande è diventato più facile, la grafica è migliorata e il suono è stato un piacere dopo 8 bit.

Tuttavia, quando i tamburi di marketing iniziarono a dare il via a 64-bit alcuni anni fa pensai, "ok, questa è l'era di Internet, possono usare questo tipo di potere per fare più calcoli più facilmente e i produttori di hardware di materie prime vogliono diffondere il loro portafoglio per questo tipo di mercato ".

Professionalmente sono diventato un "programmatore di sistema" che lavora per dispositivi mobili, il che significa anche essere un "programmatore incorporato". Lavorando principalmente su prodotti basati su architetture ARM a 32 bit dall'inizio, ho dimenticato un po 'di tempo su architetture diverse oltre a 32 bit.

Anche quando ARM ha annunciato una nuova architettura a 64 bit verso la fine del 2011, l'ho letto mentre ARM vuole entrare nel mercato dei server, aumentando il proprio portafoglio. Il che ha senso.

Ora, con il nuovo iPhone 5S che dichiara di essere il primo processore a 64 bit mai usato su uno smartphone, i pensieri sono tornati un po 'confusi nella mia testa. I dispositivi mobili, essendo gli ultimi dispositivi personali stanno diventando 64-bit.

Quindi mi chiedo, c'è qualcosa che mi manca? Che cosa significa offrire 64 bit agli utenti, inclusi i programmatori?

    
posta auselen 13.09.2013 - 10:39
fonte

3 risposte

12

È importante distinguere tra le architetture a 64 bit in generale e le architetture a 64 bit che comunemente vediamo. In senso astratto, un'architettura a 64 bit ti dà solo registri più ampi (numeri più grandi e una memoria più indirizzabile). Guardando esempi concreti di architetture, si vede che il salto da 32 a 64 bit è stato usato come un'opportunità per apportare miglioramenti significativi e incompatibili nella progettazione del processore.

Il primo che viene in mente, guardando sia x86_64 che ARMv8, vede un aumento significativo del numero di registri disponibili. Entrambe le architetture hanno raddoppiato il numero di registri generici sul processore. Ciò aumenta notevolmente le opportunità di ottimizzazione del software. Allo stesso modo, hanno migliorato le capacità di elaborazione vettoriale. Il passaggio a una nuova architettura incompatibile offre ai progettisti l'opportunità di rimuovere le funzionalità poco utilizzate che sono state trascinate negli anni per motivi di compatibilità con le versioni precedenti.

    
risposta data 13.09.2013 - 21:11
fonte
9

Uno dei principali vantaggi di avere un enorme spazio di indirizzamento è che puoi rappresentare lo spazio di tutto semplicemente come un indirizzo. Ad esempio, il mio laptop ha 16 GiByte di RAM e 1 TiByte HDD. Con gli indirizzi a 64 bit, puoi facilmente indirizzare tutto lo spazio di archiviazione utilizzando un'API unificata. 32 bit non sarebbero sufficienti Potrei anche indirizzare individualmente tutti i miei portachiavi USB, schede SD, schede microSD, HDD esterni, NAS, DropBox, Google Drive ecc.

Anche il mio telefono ha 1 RAM GiByte, 4 flash interni GiByte e una scheda microSD da 32 GiByte.

Sfortunatamente, nessun sistema operativo lo fa ancora (con l'eccezione di OS / 400, che ha fatto esattamente questo dal 1989, sebbene abbia effettivamente un indirizzamento a 128 bit), ma questo sarebbe un vantaggio.

Anche senza questi cambiamenti avveniristici, c'è una ragione piuttosto semplice: al ritmo in cui la capacità della RAM negli smartphone sta crescendo, presto colpiremo il "4 GiByte wall".

    
risposta data 13.09.2013 - 11:04
fonte
1

Il vantaggio fondamentale è la dimensione del registro più grande (e la capacità ALU).

In linea di massima, ora posso moltiplicare 10 trilioni di miliardi di miliardi per 7 in un unico passaggio.  Prima con 32 bit ho dovuto dividere gli operandi in due parti che potevano essere contenute in registri a 32 bit e utilizzare la memoria die per memorizzare i risultati intermedi.

Questo non sembra un grosso problema, finché non guardi quanti codici temporali scritti per un processore a 32 bit devono dividere un operando matematico o dividere una chiave hash di quattro parole (o un punto mobile ad alta precisione) o qualcosa in due pezzi da ordinare o ramificare su di esso.

    
risposta data 18.09.2013 - 07:28
fonte

Leggi altre domande sui tag