Domanda:
Per il computing mainstream quali sono i vantaggi pratici delle CPU con dimensioni di registro a 64 bit date le esigenze di oggi e del prossimo futuro?
satur9nine
2019-11-17 06:45:28 UTC
view on stackexchange narkive permalink

Capisco che uno dei limiti dei processori a 32 bit è l'incapacità di gestire facilmente più di 4 GB di RAM, che è un'esigenza odierna anche per i computer tradizionali su telefoni, tablet e laptop.

Quali sono alcuni altri vantaggi di elaborazione tradizionali di un'architettura con dimensioni di registro a 64 bit rispetto a un'architettura con dimensioni di registro a 48 bit?

Si prega di citare fonti pertinenti o fornire un ragionamento dettagliato nelle risposte. Il numero di bit che sono potenze di due sono migliori non fornisce una giustificazione tecnica.

Ovviamente se il prezzo non fosse una considerazione, più bit sono, meglio è, inoltre ovviamente non possiamo prevedere le esigenze future lontane.

Un bus più ampio può essere in grado di spostare i dati più rapidamente, ma la dimensione del bus non deve sempre corrispondere alla dimensione del registro, vero? Anche una CPU con più transistor e più linee potrebbe essere costretta a funzionare a una frequenza di clock leggermente inferiore a causa di limitazioni fisiche, forse?

Con 48 bit puoi indirizzare 256 TiB di RAM: tanto spazio per essere utile almeno per i prossimi decenni. Sembra che, in genere, i numeri a 32 bit siano già molto grandi per la maggior parte dei calcoli interi e decimali per la programmazione tradizionale, facendo sembrare 64 bit uno spreco. Le applicazioni a 64 bit finiscono per consumare più RAM e il processore stesso finisce con un sacco di transistor sprecati nell'ALU, nell'unità di controllo e nel bus per i bit che semplicemente non sono necessari. Tutta questa roba occupa uno spazio di silicio extra che potrebbe essere utilizzato per rendere i processori più piccoli ed economici o potrebbe essere utilizzato meglio sotto forma di cache o core aggiuntivi.

Perché vogliamo più prestazioni.
La memoria indirizzabile totale potrebbe sembrare inutile, ma le velocità della memoria sono in ritardo rispetto alla velocità del processore e una maggiore larghezza del bus significa meno cicli per trasferire i dati.C'è anche una cosa chiamata numeri in virgola mobile a doppia precisione, anche se potrebbe essere solo logica circolare.Considera anche quanto tempo ci vuole effettivamente per migrare da 32 bit a 64 bit.Non vuoi davvero dover migrare due volte se non devi, e potresti anche non farlo se sai di essere in una buona posizione tecnologica per passare da 32 bit direttamente a 64 bit.Andare Grande o andare a casa.
Perché è il numero successivo nella scala: 0,1,2,4,8,16,32,64,128 ecc
Il numero di bit di un processore non ha alcuna connessione al suo spazio di memoria indirizzabile.La maggior parte dei processori a 8 bit utilizza, ad esempio, indirizzi a 16 bit.Il numero mostra la larghezza del percorso dati.
Poiché fare un altro aggiornamento nel prossimo decennio sarebbe un dolore alle spalle, è meglio fare il passo abbastanza grande da durare per un po '.
Questa è una specie di due domande in una: * perché 32 bit non erano sufficienti? * E * perché siamo arrivati a 64 bit? *
@SolarMike non esiste alcun requisito intrinseco che il numero di bit in una parola (o byte) sia una potenza di due.Molte architetture più vecchie utilizzavano dimensioni molto più strane.
@leftaroundabout che è ovviamente il motivo per cui sono stati abbandonati e lasciati alla storia ...
@DKNguyen: La larghezza del bus non ha essenzialmente nulla a che fare con la larghezza del registro su una CPU con una cache.La larghezza del registro è importante per la larghezza di banda di memcpy su un ISA che non fornisce un modo migliore per caricare / memorizzare i dati, ma x86-64 e AArch64 garantiscono entrambi l'esistenza di registri SIMD a 128 bit e registri GP-integer a 64 bit.Intel P5 Pentium a 32 bit garantiva che i carichi / archivi allineati a 64 bit fossero atomici (perché aveva un bus dati a 64 bit e un accesso alla cache a 64 bit), ma ciò era possibile solo con l'FPU x87 fino a quando le microarchitetture non aggiungevano MMXe SSE, e poi molto più tardi x86-64.
AWS offre istanze RAM da 24 TiB in questo momento.256 TiB non sarà sufficiente entro la fine del prossimo anno.:-)
I progettisti di chip sono in realtà apprendisti Sith: credono nella regola del (i poteri di) Due e la mantengono - sempre!
@dan04 chiede al poster di una delle risposte sotto che suggerisce la stessa scala ...
@DKNguyen I numeri a doppia precisione erano larghi 64 bit quando ho iniziato a programmare in FORTRAN su un mini-computer Prime (fondamentalmente a 16 bit) nel 1980. Non c'è nulla di circolare nella tua logica.
in realtà x86_64 utilizza uno spazio degli indirizzi a 48 bit ....
Con alcuni bit per segno e "valido / non valido / overflow / zeo", 10 bit per esponente e 50 bit di precisione, si dispone di una gamma dinamica di circa 200 dB nella modellazione di sistemi lineari.Mi piace;Uso uno strumento di sistema lineare per esaminare il comportamento dei requisiti di guadagno / fase negli oscillatori Q == 1 trilione XTAL.Con matematica a 64 bit.
Perché scalare una montagna?Perché la legge di Moore dice che si raddoppia (non 1,5 volte) il numero di transistor ogni pochi anni.
@HSebastian: Sì, ma non ne consegue automaticamente che il miglior uso di quei transistor sia semplicemente raddoppiare la larghezza del percorso dati.
Dieci risposte:
Tom Carpenter
2019-11-17 06:58:54 UTC
view on stackexchange narkive permalink

Con 48 bit puoi indirizzare 256 TiB di RAM, molto spazio per essere utile

Non riguarda lo spazio degli indirizzi (*).

Infatti la maggior parte dei processori desktop a 64 bit ha un bus di indirizzi a 48 bit. Non ha senso andare oltre, hai ragione.

Sembra che generalmente i numeri a 32 bit siano già molto grandi per la maggior parte dei calcoli interi e decimali

Molti, ma non tutti e probabilmente non la maggior parte. Molti calcoli (anche su CPU a 32 bit) finiscono per utilizzare calcoli a 64 bit

L'esempio più semplice di questo è il bug Y2k38 che arriverà a mordere qualsiasi sistema che utilizza un timestamp Unix a 32 bit entro i prossimi 20 anni.

Molti numeri in virgola mobile sono a doppia precisione (64 bit) perché un singolo float a precisione offre un intervallo molto limitato.

I processori a 64 bit possono anche eseguire calcoli a 32 bit, e infatti avere cache a 64 bit consente di memorizzare nella cache il doppio dei valori a 32 bit, accelerando potenzialmente le prestazioni riducendo le operazioni di memoria (cache miss )

I moderni processori a 64 bit che supportano istruzioni avanzate in stile SIMD possono anche eseguire più operazioni a 32 bit contemporaneamente, quindi anche i calcoli a 32 bit possono trarne vantaggio.

Allora perché i progettisti di processori hanno scelto di passare a 64 bit così presto?

Dove entra in gioco il 64 bit è il bus dati. Ci piace lavorare con due multipli del nostro valore di base: nei computer si tratta in genere di un byte a 8 bit. Quindi le potenze di due sarebbero 8 bit (1 x 8 bit), 16 bit (2 x 8 bit), 32 bit (4 x 8 bit) come previsto. Il successivo passaggio logico è quindi a 64 bit (8 x 8 bit).

I bus di dati a 48 bit sarebbero un numero di byte diverso da due, il che rende le operazioni di indirizzamento più interessanti man mano che i dati cessano di essere allineati sulla buona potenza di due confini multipli. Non è impossibile, è abbastanza raro.


(*) Beh, è ​​un po '.

Se è possibile scegliere di utilizzare un'applicazione a 32 o 64 bit in un sistema operativo a 64 bit e la dimensione dell'applicazione influisce sulla dimensione della memoria libera con maggiore frammentazione, un miglioramento delle prestazioni potrebbe non essere evidente.Per qualche motivo preferisco la versione a 32 bit di Irfanview su un Win7x64 da 8 GB con core i8
è necessario considerare cosa offre 32 bit e cosa offre 64 bit.64 bit offre molti vantaggi (spazio degli indirizzi più ampio, matematica più veloce ...) ma viene fornito con un pesante sovraccarico sui puntatori.Questo è il motivo per cui l'ABI x32 è stato creato su Linux per offrire alcuni dei vantaggi del processore a 64 bit ma con puntatori a 32 bit, soprattutto se si considera la dimensione della cache della cpu
* avere cache di registro a 64 bit consente di memorizzare il doppio dei valori a 32 bit nella cache * Cosa?I registri non sono cache, fanno parte dello stato dell'architettura.Inoltre, a meno che tu non stia facendo SIMD nei tuoi registri GP-integer, hai solo 1 valore per registro.La maggior parte degli ISA non ha nomi separati per le metà alta / bassa a 32 bit dello stesso registro.Ad esempio, su x86-64 le tue scelte sono un'istruzione `add eax, ecx` che estende zero l'EAX a 32 bit in RAX a 64 bit, o` add rax, rcx` che fa un'aggiunta a 64 bit.Non è possibile mantenere in modo efficiente un numero separato nella metà alta di RAX.
Se stai parlando di cache effettive (L1d / L2 / ecc.), Non crescono gratuitamente con la larghezza del registro!I puntatori più larghi sono uno svantaggio, poiché le strutture di dati con un elevato numero di puntatori richiedono più footprint della cache e / o larghezza di banda della memoria.Ecco * perché * esistono ABI ILP32 (puntatori a 32 bit in modalità 64 bit) e perché i risultati di SPECint principali spesso utilizzano tali ABI.per esempio.ARM ILP32 o Linux [x32 ABI] di x86 (https://en.wikipedia.org/wiki/X32_ABI).ad esempio, l'esecuzione in modalità a 64 bit può ottenere tanti accessi alla cache come la modalità a 32 bit, invece di meno.
La larghezza del registro SIMD è ortogonale alla larghezza del registro intero GP.Anche in modalità a 32 bit, le CPU x86 possono ancora utilizzare AVX e AVX512 se supportate.(La codifica di istruzioni legacy x86 fa schifo significa che la modalità a 32 bit può utilizzare solo 8 invece di 16 o 32 registri vettoriali, ma la loro * larghezza * è ancora 256 o 512 bit. Avere più registri in modalità 64 bit è solo una cosa x86, non vero in generale).O forse stai parlando di CPU a 64 bit che fanno SIMD nei loro registri interi di uso generale?Ce ne sono alcuni, ad es.Penso che MIPS e Alpha lo abbiano fatto invece di avere registri architettonici separati.
La larghezza del bus degli indirizzi non è legata alla larghezza dell'indirizzo virtuale e avere uno spazio degli indirizzi virtuali astronomicamente grande è estremamente vantaggioso.Ti consente di eseguire ASLR efficaci e se alcuni bit sono bit di tag / colorazione (vedi ARM MTE, ecc.), Ti consente di eliminare intere classi di errori di sicurezza della memoria senza alcun costo.Se un numero elevato di bit è così (immagina uno spazio di indirizzi a 128 bit in cui solo 48 o giù di lì sono significativi), ti consente di ** non riutilizzare ** indirizzi liberati, ottenendo molta più sicurezza.
@R ..: l'enorme spazio per gli indirizzi non è sempre gratuito.Rende le pagine più lente perché sono necessari più livelli di tabelle di pagina.E se le allocazioni sono troppo scarse, deve essere effettivamente presente più dell'albero radice delle tabelle delle pagine.Questo è uno dei motivi per cui le CPU x86-64 implementano solo lo spazio degli indirizzi * virtuale * a 48 bit, o 57 bit con l'imminente (o recente?) Estensione PML5 per un 5 ° livello opzionale di tabelle di pagina, ancora a 52 bit fisico.Ma sì, la larghezza dell'indirizzo fisico e quella virtuale non sono connesse, ma è preferibile un virtuale più ampio, quindi il kernel può mappare direttamente tutto e avere ancora molto spazio per l'utente.
@Tom: Re: il tuo aggiornamento: come ho detto prima, la dimensione della cache non scala gratuitamente con la CPU bitness.una cache da 32 KB costa lo stesso in una CPU a 32 o 64 bit.(Soprattutto se la CPU "a 32 bit" aveva già un'unità FPU e / o SIMD, o un'istruzione di coppia di caricamento / memorizzazione che poteva eseguire caricamenti / archivi a 64 bit, quindi l'hardware di accesso alla cache doveva essere così ampio.)I valori a 32 bit mantengono semplicemente la stessa percentuale di riscontri nella cache di prima, data la stessa cache.Costruire una cache due volte più grande ma altrettanto veloce è altamente non banale e non è gratuito quando si crea una CPU a 64 bit.È necessaria una modifica più grande.
@TonyStewartSunnyskyguyEE75 Potresti approfondire?
@minix Vorrei poter spiegare perché ho meno problemi di "fastidio" inspiegabili con le app a 32 bit quando ho una scelta su un Win7x64 snello e veloce.Ma è per questo che utilizzo app a 32 bit per Dropbox, Teamviewer, IRFANView, KODI, QT Webengine
Peter Green
2019-11-17 15:32:16 UTC
view on stackexchange narkive permalink

Sebbene ci siano alcune eccezioni, il settore informatico ha ampiamente standardizzato i byte a 8 bit *.

È altamente desiderabile che la dimensione della parola sia una potenza di due multipli della dimensione dei byte. Non farlo porterebbe a una traduzione degli indirizzi estremamente confusa quando il sistema bus ha bisogno di tradurre gli indirizzi di byte in indirizzi di parole.

È anche altamente desiderabile essere in grado di manipolare gli indirizzi di memoria in una singola parola di dati, specialmente su una moderna CPU altamente pipeline.

È anche altamente desiderabile avere la retrocompatibilità, il che significa una modalità a 32 bit. Aggiungere il supporto al tuo sistema per gestire "mezze parole" è relativamente facile, aggiungere il supporto per gestire "due terzi parole" sarebbe molto più complicato.

Mettendo insieme questi fattori, il modo più logico per aumentare lo spazio degli indirizzi di memoria oltre il limite di 32 bit è espandere la dimensione della parola di dati a 64 bit. Anche se non si pianifica immediatamente di utilizzare tutti questi bit per l'indirizzamento della memoria (molti sistemi a 64 bit hanno uno spazio degli indirizzi di memoria inferiore a 64 bit).

* Per gli scopi di questo articolo "byte" è usato per riferirsi alla più piccola unità di dati che il processore può indirizzare, e "parola" è usato per riferirsi al tipo di dati più ampio che i principali percorsi dati interi possono trattare con come una singola unità.

Agent_L
2019-11-17 16:59:19 UTC
view on stackexchange narkive permalink

Pensi che sia uno spreco, ma risparmiare in un posto di solito significa sprecare in un altro.

Il risparmio di poche celle di registro sulla dimensione della parola fa sprecare i cicli della CPU nella gestione dei valori disallineati. Non ci sarebbero certamente problemi nell'esecuzione di nuovi programmi tutti a 48 bit, ma provare a eseguire il vecchio programma a 32 bit su una CPU a 48 bit sarebbe un incubo. Tutti i transistor che avresti potuto risparmiare sarebbero stati molto probabilmente ripagati con gli interessi sotto forma di unità di gestione / traduzione a 32 bit dedicate. L'alternativa sarebbe rompere la compatibilità con le versioni precedenti, ovvero "la CPU di cui nessuno ha bisogno".

È molto simile a ciò che ha ucciso Itanium a 64 bit di Intel: essendo un'architettura nuova di zecca, non poteva eseguire il codice legacy a 32 bit alla velocità di x86 di AMD (relativamente) fino al doppio delle dimensioni della parola. Nessuno è rimasto in giro per vedere se il coraggioso nuovo mondo di Intel alla fine si sarebbe materializzato: i costi della transizione hanno spaventato tutti. AMD, d'altra parte, ha portato "più cose buone" e guardaci: 16 anni dopo abbiamo ancora resti di codice a 32 bit in giro e le nostre CPU a 64 bit lo eseguono più velocemente di quanto potrebbero mai fare le CPU a 32 bit.

Non sono più gli anni '80. Lo spazio per ram e registro non è più prezioso ora, quindi non miriamo più a "il meno possibile". Invece abbiamo girato "tanto quanto pratico". 64 bit era il più pratico: come ha detto Tom, stavamo già eseguendo una precisione a 64 bit su CPU a 32 bit, ma IMHO il punto di forza principale era la gestione senza sforzo del legacy.

Nel mercato x86, la tracciabilità del patrimonio fino a IBM XT è una forza da non sottovalutare. E poiché un'architettura aveva 64 di qualcosa, nessuno poteva vendere con meno della cosa. Questo è marketing. I clienti non capiscono qual è il problema, sanno solo che di più è meglio.

user236378
2019-11-17 17:18:29 UTC
view on stackexchange narkive permalink

Ho iniziato a lavorare con grandi computer su un computer che aveva una larghezza di parola di 60 bit indirizzata per parola, utilizzava unità di 6 bit come caratteri (da 10 a una parola) anche se c'erano diversi caratteri a 12 bit (come le lettere minuscole) . Gli indirizzi e i registri degli indirizzi erano a 18 bit. Questo era un sistema principalmente per lo scricchiolio dei numeri: l'elaborazione del testo era decisamente scomoda perché la memoria non era indirizzabile per carattere.

Quindi cosa c'è di sbagliato in questo tipo di configurazione oggi? I dati odierni, nel bene o nel male, sono quasi universalmente scambiati in quantità di byte. Le quantità di dimensioni byte sono indirizzate con indirizzi binari e sono organizzate in settori / blocchi / unità che hanno una dimensione di 2 byte. Sebbene esistano istruzioni speciali che indirizzano i bit in contesti molto limitati, lo standard prevede istruzioni per indirizzare i byte, comprese le istruzioni che funzionano solo con parole intere. Anche su CPU con requisiti di allineamento rigorosi (sebbene i membri dell'architettura x86 siano piuttosto permissivi qui), gli indirizzi di memoria sono uniformemente indirizzi di byte (ricordo un processore orientato alla grafica TI in cui l'unità indirizzabile di base era in realtà un singolo bit, ma era già una stranezza a suo tempo)

I file hanno dimensioni in byte e tutto funziona alla potenza di 2, con i trasferimenti effettivi del bus di dati che sono un multiplo della larghezza della parola della CPU. Inserire parole a 48 bit in quel mondo sarebbe un incubo poiché invece di dividere semplicemente il tuo indirizzo in una parte che indirizza una larghezza di bus maggiore e una parte che indirizza un byte, dovresti eseguire una divisione effettiva per 6 per capire l'indirizzo e offset in larghezze di parola maggiori (non puoi davvero aspettarti di avere dispositivi di memoria che soddisfano specificamente le tue scelte di larghezza di parola).

In breve: in un mondo di rappresentazioni di dati standardizzate e set di caratteri e unità periferiche e interfacce di serie, l'uso di larghezze di parole diverse dalle potenze di 2 sarebbe molto più proibitivo rispetto ai tempi in cui "mouse per computer" si riferiva a roditori che scavanonelle scatole a schede perforate, un pericolo significativo per l'archiviazione di dati di lunga durata.

CDC 6600, forse?
hotpaw2
2019-11-17 08:29:30 UTC
view on stackexchange narkive permalink

Gli sviluppatori di software N64 hanno scoperto che il codice ISA a 64 bit ha prestazioni migliori sul codice reale rispetto alla compilazione per MIPS ISA a 32 bit, perché è possibile spostare più dati e memorizzare più bit in uno spazio di registrazione veloce con meno istruzioni.

L'ISA a 64 bit era molto più retrocompatibile con il codice a 32 bit esistente rispetto ad altri registri e dimensioni dei dati non power-of 2, il che rendeva più facile la programmazione e il porting delle librerie.

E il chip del processore MIPS R4200 era solo di qualche percento più grande nella dimensione del die (IIRC, meno del 10%) per supportare MIPS ISA a 64 bit anziché solo a 32 bit.Vinci vinci.

Robin Whittleton
2019-11-18 00:06:27 UTC
view on stackexchange narkive permalink

Non tutti i progettisti di chip sono passati direttamente a 64 bit da 32 bit.La serie di server IBM S / 38 e successive AS / 400 (ora IBM System i) utilizzavano chip CISC a 48 bit dalla fine degli anni '70, prima di passare infine a 64 bit a metà degli anni '90.

John Dallman
2019-11-18 02:13:39 UTC
view on stackexchange narkive permalink

Un altro motivo è il software. Portare un sistema operativo, o qualsiasi applicazione che gestisce la memoria in modi complicati, a una diversa dimensione del puntatore è un lavoro duro. Per un sistema operativo, anche tutti i driver di dispositivo tendono a dover essere rivisti.

Le società di software preferiscono non fare questo lavoro troppo spesso; alcuni di loro hanno iniziato il porting da 32 bit a 64 bit negli anni '90 e considerano il 32 bit obsoleto a partire dal 2019; altri stanno iniziando solo ora. Dipende dai mercati che servono.

Se tutti i fornitori che storicamente hanno introdotto architetture a 64 bit tra il 1992 (DEC Alpha) e il 2005 (Intel) avessero scelto invece 48 bit, allora avrebbe potuto essere stabilito. Tuttavia, a questo punto si sarebbe avvicinato troppo ai suoi limiti per il comfort in futuro, e il 64 bit avrebbe iniziato ad arrivare.

Se negli anni '90 fossero state offerte sia architetture a 64 bit che a 48 bit, le società di software lungimiranti avrebbero ignorato il 48 bit e si sarebbero concentrate sulle architetture a 64 bit. Le aziende che avevano optato per 48 bit avrebbero ora avviato un secondo ciclo di porting e il primo avrebbe coinvolto le complessità di una dimensione del puntatore senza potenza di due, di cui si sarebbero seriamente pentiti.

I fornitori di hardware hanno potuto vedere i contorni di questo scenario negli anni '90 e hanno deciso di adottare un approccio che sarebbe durato più a lungo.

Penso che la domanda dell'OP fosse più sulla falsariga di "perché TUTTI i progettisti di processori non hanno utilizzato i 48 bit?"(al contrario di quanto hai ipotizzato, ci sarebbe un fork tra 48 e 64 bit).
@JBentley: Come va?
Anthony X
2019-11-18 04:35:11 UTC
view on stackexchange narkive permalink

Due ragioni per 64 bit invece di 32:

  1. I numeri in virgola mobile a doppia precisione occupano 64 bit (la matematica viene effettivamente eseguita utilizzando 80 bit, ma questa è un'altra questione).Una parola macchina di 64 bit consente di spostare tali valori in una singola operazione.
  2. Le operazioni di copia in blocco sono più veloci quanto più ampio è il bus di dati, perché stai spostando più dati contemporaneamente.Ciò ha reso le macchine a 16 bit superiori a 8 bit e le macchine a 32 bit superiori a 16 bit.

Ad un certo punto in futuro, le macchine a 64 bit potrebbero cedere il passo a quelle a 128 bit, ma i vantaggi non sono ancora sufficientemente convincenti per i processori generici, sebbene si possa già vedere in processori per scopi speciali come le GPU.

/ p>

Per quanto riguarda da 32 a 64 invece di 48, è sempre più conveniente (e spesso più efficiente) in un computer basato su binari lavorare con potenze di 2. Non si tratta di dimensione dell'indirizzo fisico, sebbene dimensione dell'indirizzo / dimensione dello spazio di memoria indirizzabileè un fattore che contribuisce.

user236390
2019-11-17 22:22:52 UTC
view on stackexchange narkive permalink

In realtà, se stiamo parlando del salto di AMD a 64 bit con x86-64, che ha letteralmente rivoluzionato la piattaforma, era fondamentalmente per rendere le CPU Athlon più potenti dei chip Intel, dando loro così un vantaggio competitivo sul mercato, come Intel stava prendendo a calci in culo. Questo ha costretto Intel, il leader del settore, a diventare un seguace. Tuttavia, questo doveva essere fatto in coordinamento con Microsoft, altrimenti la CPU sarebbe rimasta morta perché non avrebbe eseguito Windows.

Intel aveva l'IA-64, ma penso che pensassero che tale potenza e prestazioni fossero solo per i clienti aziendali e non per il pubblico in generale (e troppo costose), e non funzionava con l'x86. Ma se non fosse per AMD64, Intel continuerebbe a produrre CPU a 32 bit oggi (forse con alcune funzionalità a 64 bit come stratagemma di marketing).

Ma se hai mai lavorato con grandi immagini di Photoshop, enormi fogli di calcolo Excel e milioni di record con SqlServer, impari ad apprezzare la capacità dei sistemi a 64 bit.

Penso che Intel pensasse che alla fine sarebbero stati in grado di produrre IA-64 al dettaglio abbastanza a buon mercato, su un processo di dimensioni inferiori a transistor.E magari convincere l'intera industria a ricompilare tutto per IA-64 e finalmente sbarazzarsi del peso morto di x86 per la maggior parte del codice.Inoltre, AMD64 era abbastanza "conservatore": AMD avrebbe potuto migliorare diverse cose minori (come la semantica folle-CISC per i turni di conteggio variabili, o `setcc r / m8` potrebbe essere` r32 / m8`) ma non lo fecero.Presumibilmente volevano condividere i transistor del decodificatore il più possibile nel caso in cui AMD64 non avesse preso piede e diventasse "peso morto" per il codice a 32 bit.
Ad ogni modo, nessuna di questa storia risponde alla domanda sul perché 64 invece di 48.
Geoff Griswald
2019-11-18 20:47:03 UTC
view on stackexchange narkive permalink

Si trattava principalmente di marketing. AMD è stata la prima a rilasciare un'architettura a 64 bit che ha permesso loro di rivendicare la superiorità su Intel, mentre Intel si è affrettata a lanciare sul mercato i propri chip a 64 bit imperfetti e affrettati che hanno funzionato peggio degli AMD per un paio d'anni.

Questi due periodi di tempo: il primo quando AMD poteva vantarsi di essere il chip più avanzato quando Intel non aveva un chip a 64 bit sul mercato, poi il secondo quando potevano vantarsi di essere il chip più veloce sul mercato quando il primo tentativo di Intel a 64 bit i chip non erano molto veloci - ha permesso ad AMD di assumere un forte vantaggio nelle vendite e nelle prestazioni durante il 2003/2004, quando è avvenuta la transizione a 64 bit.

A quel tempo, quasi nessun software utilizzava la potenza aggiuntiva offerta da 64 bit e anche oggi la maggior parte delle applicazioni funziona ancora in modalità legacy a 32 bit "per ogni evenienza"

Oltre a supportare pool di memoria molto più grandi, come hai già detto, i chip stessi eseguono determinati calcoli interni più velocemente a causa dello spazio di indirizzi esteso che offre 64 bit, ad esempio potresti combinare 12 valori a 8 bit in un'istruzione in un 64 bit mentre un chip a 32 bit potrebbe realmente combinare solo 6. Tali miglioramenti delle prestazioni sono tuttavia marginali nella migliore delle ipotesi e sono stati utilizzati principalmente per scopi di marketing piuttosto che per qualsiasi miglioramento delle prestazioni nel mondo reale.

Quanto al perché 64 e non 48, due ragioni. Uno era il marketing, 64 è maggiore di 48 e fino ad ora i "bit" dei sistemi di consumo erano raddoppiati ogni volta, 8, 16, 32, il numero logico successivo nella sequenza era 64. I consumatori avrebbero (erroneamente) creduto che un La CPU a 64 bit era due volte più buona di una a 32 bit, il che li ha spinti ad aggiornare più prontamente di quanto farebbero quando viene offerta una CPU a 48 bit. Il secondo motivo è più pratico, un registro a 64 bit era il doppio di 32 e quindi in teoria sarebbe più facile trasferire il codice a 64 bit che a 48.

A parte gli argomenti sulla dimensione dei registri, ha senso logico "andare alla grande o tornare a casa" quando si implementano modifiche globali all'infrastruttura informatica globale, per evitare di dover fare una cosa così orribile troppo spesso.Finora non abbiamo avuto bisogno di processori a 128 bit, ma probabilmente avremmo aggiornato da 48 bit a 64 bit più o meno ora, quindi sembra che sia stata una buona chiamata.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Loading...