Perché x86 rappresenta 32 bit quando x64 rappresenta 64 bit? [chiuso]


97

La mia domanda è: perché la scorciatoia per x86 a 32 bit quando la scorciatoia per 64 bit è x64?

Immagino che abbia qualcosa a che fare con i giorni dei 386 e 486, quando i processori a 32 bit finirono tutti nell'86, ma sicuramente c'erano processori che non finivano nell'86 e erano ancora a 32 bit?

Qualcuno conosce la storia di questo o può indirizzarmi verso una buona fonte di informazioni?

Grazie


7
ho sempre desiderato conoscere questo +1 per curiosità inconscia!
Gabriel Guimarães,

Mi sono appena chiesto questa mattina!
Sean Howat,

9
Penso che il termine completo non sia x64 ma x86_64
Kedare il

3
IMHO, "x86" non significa (e non ha mai significato) solo qualsiasi architettura generica a 32 bit. La risposta di Daniel qui sotto fornisce la storia. Ci sono molti altri processori a 32 bit che sono entrambi contemporanei (o più vecchi) dell'80386, e molti sono ancora vivi e in commercio oggi. La famiglia 68000 (usata nel Macintosh originale) è molto più antica della 8086, per esempio. L'affermazione del PowerPC alla fama quando era nuovo era un forte supporto di emulazione sia per x86 che per 68K. ARM è a 32 bit, più moderno e abbastanza comune.
RBerteig,

Non lo vedo come x64, almeno non lo scrivo in questo modo. Lo scrivo rispettivamente come 32b e 64b.
vol7ron,

Risposte:


34

Probabilmente perché la linea x86 è diventata sinonimo di processori a 32 bit per un po 'di tempo, mentre x64 era specificamente una designazione per 64 bit poiché le applicazioni e i sistemi operativi erano stati trasferiti, e ora ci sono applicazioni software che richiedono la designazione a 64 bit per funzionare (come alcuni software VM).

In altre parole, è più marketing che tecnologia per la ragione.


20
x86 proviene da 8086, 286, 386, 486, 586, ecc. Potrebbe essere stato facilmente "* 86"
gWaldo

6
E poiché x86 è nato con l'8086 non sono mai stato in grado di capire perché sia ​​sempre associato a 32 bit. Come ricordo, l'8086 era un processore a 16 bit, che utilizzava doppi registri per abilitare l'indirizzamento della memoria a 32 bit. Intel era lungi dall'essere un leader nel settore in quei giorni. A proposito @gWaldo, hai lasciato fuori l'80186.
John Gardeniers,

Coincidenza. Da Wikipedia, "Sia l'architettura che il chip fisico sono stati quindi sviluppati piuttosto rapidamente da un piccolo gruppo di persone, e usando gli stessi elementi di microarchitettura di base e le stesse tecniche di implementazione fisica impiegate per l'8085 leggermente più vecchio (e per il quale funzionerebbe anche l'8086 come continuazione) ". C'erano anche un 8087 e un 8089.
Bart Silverstrim,

Sì, ho lasciato fuori l'80186 perché sinceramente non riuscivo a ricordare se fosse stato un prodotto rilasciato (e mi sentivo troppo pigro per cercarlo ...)
gWaldo

1
Questa risposta non ha nulla di sbagliato, ma onestamente penso che quella di Daniel dovrebbe essere quella accettata, poiché è molto più dettagliata.
Massimo

190

Bene, una volta c'era un chip chiamato 8086, con una versione più economica chiamata 8088 che veniva utilizzata in un personal computer chiamato IBM PC. Una versione migliorata di quel chip fu creata e chiamata 80186, sebbene quella non fosse una versione molto popolare. Tuttavia, fu quindi creata una versione migliorata migliorata, chiamata 80286. Ora, quello era un chip molto popolare, in particolare perché era utilizzato in un computer chiamato IBM PC AT.

Successivamente, Intel, che ha creato e venduto i chip 8086, 8088, 80186 e 80286, tutti con un'architettura a 16 bit, ha visto la necessità di creare un chip a 32 bit per competere con offerte simili di altri. Per sfruttare la sua posizione dominante, ha reso il nuovo chip in grado di eseguire software creato per i chip precedentemente menzionati. Naturalmente, Intel ha chiamato questo nuovo chip 80386.

A quel tempo c'erano molti computer che usavano varie versioni dei chip Intel e c'erano anche chip non Intel compatibili con quelli Intel. Quindi le persone hanno iniziato a riferirsi a loro come 80x86.

Dopo un po ', Intel ha lanciato un nuovo chip, ma ha deciso di far cadere gli 80, quindi è diventato il 486 anziché 80486. Allo stesso modo, la gente stava lasciando cadere gli "80" dalla parte anteriore di "80x86", e chiamando questa roba solo x86 .

Ora, sono abbastanza sicuro che alcuni verranno e dire che Intel ha marchiato i loro chip x86 in quel momento, cosa che hanno fatto, ma non mi interessa.

Il fatto è che la cifra media sempre crescente ha dato origine a 80x86, e x86 ne è derivato, anche se 80186 e 80286 non erano 32 bit.

Quindi, una volta che Intel ha finalmente raggiunto i 64 bit, come ha chiamato la sua nuova architettura? Giusto! IA64! :-) Ha anche rinominato retroattivamente x86 in IA32, per così dire. Solo IA64 non era compatibile con x86, intendo IA32, quindi tutti lo hanno ignorato.

E poi è arrivata AMD, che ha deciso che il mercato voleva una CPU a 64 bit compatibile, per quanto possibile, con la famiglia x86. Come appello di marketing, l'hanno definita la famiglia "x86-64" e hanno avuto un enorme successo. Tanto che Intel ha finito a malincuore con la propria CPU a 64 bit basata su x86.

Più tardi, poiché le persone sono pigre, l'x86-64 divenne noto semplicemente come x64.

Quindi, in risposta alla tua domanda, perché x64 è più corto di x86-64.


10
Non per niente, ma per essere del tutto esatti, AMD non ha mai commercializzato un chip a 64 bit. x64 o x86_64 con cui AMD è uscito sono state aggiunte estensioni a 64 bit al set di istruzioni x86 creato da Intel, quindi x86_64 al contrario di Intel Itanium (IA_64) che era un vero chip a 64 bit non compatibile con il set di istruzioni x86.
Jeremy Hajek,

6
Inoltre, credo che Intel abbia affrontato problemi di marchio poiché utilizzavano solo numeri e non è possibile contrassegnare una sequenza di numeri, ecco perché quello che sarebbe stato l'80586 è diventato il Pentium, un nome inventato che potrebbero continuare a marchio.
cdkMoose,

3
Per chiarire: AMD ha chiamato le loro estensioni AMD64 e Intel chiama la loro (che hanno ottenuto la licenza da AMD) Intel64. Ci sono alcune sottili differenze (non sono compatibili al 100%), quindi la maggior parte dei fornitori di sistemi operativi di solito usa il sottoinsieme comune. Su un DVD di Windows 2008, la cartella di installazione in realtà si chiama AMD64 (al contrario di I386 su 32 bit). Non so da dove provenga x86_64: da AMD poiché è un'estensione per x86 o dai fornitori Unix che volevano un termine neutro.
Michael Stum

20
@Jeremy Hajek: AMD64 / x86_64 è un vero chip design a 64 bit, la sua modalità a 64 bit non è un'emulazione e non ha alcun impatto sulle prestazioni (e in effetti, anche la sua modalità a 32 bit non è un'emulazione). Il chip ha un set di istruzioni a 64 bit e registri a 64 bit, che lo rende chip a 64 bit. Non so da dove provi l'impressione che AMD non abbia mai commercializzato un chip a 64 bit. È vero, però, che AMD non ha mai commercializzato un 64-bit che rompe la compatibilità con il chip a 32-bit, come ha fatto Intel con il suo IA64.
Lie Ryan,

1
x64 viene utilizzato solo nella terminologia Windows / Microsoft. GNU / Linux chiama l'architettura x86-64 o amd64. (E chiama x86 a 32 bit i386). È solo (o almeno per lo più) nel mondo di Windows che x86 significa specificamente x86 a 32 bit. La maggior parte delle persone hardware che parlano di CPU capiscono x86 nel senso di qualsiasi CPU retrocompatibile con 8086, indipendentemente dalla modalità in cui funziona (modalità normalmente a 64 bit o talvolta modalità a 32 bit in un kernel a 64 bit.) Se Dico che "x86 ha un rilascio efficiente / acquisisce atomica senza lock", non escludo 64-bit.
Peter Cordes,

16

Da Wikipedia : Il termine x86 si riferisce a una famiglia di architetture di set di istruzioni basate sulla CPU Intel 8086.


3

Tecnicamente x86 si riferisce semplicemente a una famiglia di processori e al set di istruzioni che usano tutti. In realtà non dice nulla di specifico sulle dimensioni dei dati.

x86 è iniziato come set di istruzioni a 16 bit per processori a 16 bit (i processori 8086 e 8088), quindi è stato esteso a un set di istruzioni a 32 bit per processori a 32 bit (80386 e 80486) e ora è stato esteso a un'istruzione a 64 bit impostata per processori a 64 bit. Una volta era scritto come 80x86 per riflettere il valore che cambiava nel mezzo dei numeri del modello di chip, ma da qualche parte lungo la linea l'80 nella parte anteriore è stato lasciato cadere, lasciando solo x86.

Dai la colpa al Pentium e alla sua progenie per aver cambiato il modo in cui i processori sono stati denominati e commercializzati, anche se tutti i processori più recenti che utilizzano il set di istruzioni x86 di Intel sono ancora indicati come compatibili x86, i386 o i686 (il che significa che usano tutti estensioni dell'originale 8086 set di istruzioni).

x64 è davvero l'uomo strano qui. Il primo nome per l'estensione a 64 bit del set x86 era chiamato x86-64. In seguito è stato nominato AMD64 (perché in origine AMD aveva creato l'estensione a 64 bit). Intel ha concesso in licenza il set di istruzioni a 64 bit e ha nominato la loro versione EM64T. Entrambi i set di istruzioni e i processori che li utilizzano sono ancora considerati x86.


x86-64 è tornato ad essere un termine neutrale rispetto al fornitore che include AMD64 ed EM64T. I primi 80 erano sempre presenti nel numero di parte, ma dopo 80186 è diventato più semplice dire 186 contro 8086 contro 386. Pentium non è mai stato ufficialmente chiamato 586 o 80586 nei suoi numeri di parte ( cpu-world.com/sspec/Pentium. html ); i termini i586 e i686 erano appena basati sul campo "famiglia" CPUID di come si riferivano le CPU.
Peter Cordes,

3

x86 e x64 sono i nomi delle architetture della cpu . C'è di più in un'architettura cpu oltre al numero di bit per registro.

x64 prende il nome perché il salto a 64 bit è il più grande cambiamento nell'architettura da x86, ma quel salto è tutt'altro che l' unico cambiamento.

x86 prende il nome dal venerabile processore e famiglia 8086, che includeva 80286, 80368, 486, ecc. Al tempo in cui x86 divenne noto come nome per l'architettura, 32 bit per registro non erano considerati una funzione abbastanza importante da giustificare la costruzione nel nome.


2

Bene, x64non proviene mai da un set di istruzioni o da un produttore di chip. Originariamente proveniva da Windows XP. Il titolo è stato assegnato alla prima edizione a 64 bit di Windows Windows XP x64. E immagino che il termine sia x64rimasto bloccato da lì.

Il x86moniker proviene dal set di istruzioni a 32 bit. Quindi tutti i x86processori (senza un lead 80) eseguono lo stesso set di istruzioni a 32 bit (e quindi sono tutti compatibili). Quindi x86è diventato un nome defacto per quell'insieme (e quindi a 32 bit).

È x86stata chiamata l'estensione a 64 bit originale di AMD sul set AMD64. Intel in seguito lo ha concesso in licenza, ma anche il nome del x86set di istruzioni a 64 bit è in genere AMD64.

Ma soprattutto è distinzione di marca. Ecco come alcune diverse principali distribuzioni del sistema operativo chiamano ogni sapore a 64 bit:

Quindi, in sostanza, sembra che Linux preferisca x86_64, BSD preferisca amd64e gli altri x64...

Ma la cosa importante da notare è che significano tutti la stessa cosa per scopi di marketing. In sottigliezza significano cose diverse (beh, amd64significa qualcosa di diverso da x86_64(il primo è un'architettura specifica del fornitore e il secondo il sottoinsieme di architetture di due fornitori), ma x86_64=== x64), ma per chiunque tranne i programmatori che scrivono in assembly o machine codice non fa davvero un altro ...


1
Tutto l'attuale x64 è in realtà AMD-64 da quando è morto IA64.
Overmind

@Overmind: x64 e IA-64 erano sempre cose separate. IA-64 non è completamente correlato a x86 o x86-64. (Tranne che le prime implementazioni IA-64 includevano un core x86 per motivi di compatibilità, perché Intel ...)
Peter Cordes

Si, è corretto. Ma "è morto, Jim".
Overmind
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.