Dlaczego x86 oznacza 32 bity, a x64 oznacza 64 bity? [Zamknięte]

97

Moje pytanie brzmi: dlaczego skrót dla 32-bitowego x86 jest skrótem dla 64-bitowego x64?

Zgaduję, że ma to coś wspólnego z dniami 386 i 486, kiedy 32-bitowe procesory zakończyły się na 86, ale na pewno były procesory, które nie zakończyły się na 86 i wciąż były 32-bitowe?

Czy ktoś zna historię tego lub może skierować mnie do dobrego źródła informacji?

Dzięki

Simon Foster
źródło
7
zawsze chciałem wiedzieć to +1 z nieświadomej ciekawości!
Gabriel Guimarães
Właśnie zadałem sobie pytanie dziś rano!
Sean Howat,
9
Myślę, że pełny termin to nie x64, ale x86_64
Kedare
3
IMHO, „x86” nie oznacza (i nigdy nie miał na myśli) zwykłej architektury 32-bitowej. Poniższa odpowiedź Daniela podaje historię. Istnieje wiele innych 32-bitowych procesorów, które są jednocześnie współczesne (lub starsze niż) 80386, a sporo z nich wciąż żyje i ma się dobrze na rynku. Na przykład rodzina 68000 (używana w oryginalnym komputerze Macintosh) jest znacznie starsza niż 8086. Premiera PowerPC do sławy, gdy nowa była silna obsługa emulacji dla x86 i 68K. ARM jest 32-bitowy, nowocześniejszy i dość powszechny.
RBerteig,
Nie widzę tego jako x64, przynajmniej nie piszę tego w ten sposób. Piszę to odpowiednio jako 32b i 64b.
vol7ron

Odpowiedzi:

34

Prawdopodobnie dlatego, że linia x86 stała się synonimem 32-bitowych procesorów przez dłuższy czas, podczas gdy x64 było specjalnie oznaczeniem 64-bitowym, ponieważ aplikacje i systemy operacyjne zostały przeniesione, a teraz istnieją aplikacje, które wymagają 64-bitowego oznaczenia do uruchomienia (jak niektóre oprogramowanie VM).

Innymi słowy, z tego powodu jest to bardziej marketing niż technologia.

Bart Silverstrim
źródło
20
x86 pochodzi z 8086, 286, 386, 486, 586 itd. Równie łatwo mogło być „* 86”
gWaldo
6
A ponieważ x86 pochodzi z 8086, nigdy nie byłem w stanie dowiedzieć się, dlaczego zawsze wiąże się z 32 bitami. Jak pamiętam, 8086 był 16-bitowym procesorem, który wykorzystywał podwójne rejestry, aby umożliwić adresowanie pamięci w 32 bitach. Intel był daleki od bycia liderem w tej dziedzinie. BTW @gWaldo, opuściłeś 80186.
John Gardeniers
Zbieg okoliczności. Z Wikipedii: „Zarówno architektura, jak i fizyczny układ zostały zatem opracowane dość szybko przez niewielką grupę osób i przy użyciu tych samych podstawowych elementów mikroarchitektury i technik wdrażania fizycznego, jakie zastosowano w nieco starszym 8085 (i dla którego 8086 również działałby jako kontynuacja) ”. Były też 8087 i 8089.
Bart Silverstrim
Tak, zrezygnowałem z 80186, ponieważ szczerze mówiąc, nie pamiętałem, czy to był wypuszczony produkt (i czułem się zbyt leniwy, żeby go sprawdzić ...)
gWaldo,
1
Ta odpowiedź nie ma nic złego, ale szczerze uważam, że Daniel powinien zostać zaakceptowany, ponieważ jest o wiele bardziej szczegółowy.
Massimo,
189

Cóż, kiedyś był układ o nazwie 8086, z tańszą wersją o nazwie 8088, który był używany na komputerze osobistym o nazwie IBM PC. Stworzono ulepszoną wersję tego układu o nazwie 80186, choć nie była to bardzo popularna wersja. Jednak stworzono ulepszoną ulepszoną wersję, która nazywała się 80286. To był bardzo popularny układ, w szczególności dlatego, że był używany w komputerze o nazwie IBM PC AT.

Później Intel, który stworzył i sprzedał układy 8086, 8088, 80186 i 80286, z których wszystkie miały architekturę 16-bitową, dostrzegł potrzebę stworzenia układu 32-bitowego, aby konkurować z podobnymi ofertami innych producentów. Aby wykorzystać swoją obecną pozycję, uczynił nowy układ zdolny do uruchamiania oprogramowania stworzonego dla wcześniej wspomnianych układów. Oczywiście Intel nazwał ten nowy układ 80386.

Do tego czasu istniało wiele komputerów korzystających z różnych wersji układów Intel, a także układy inne niż Intel, które były kompatybilne z układami Intel. Ludzie zaczęli nazywać je 80x86.

Po pewnym czasie Intel wypuścił nowy układ, ale postanowił upuścić 80, więc stał się 486 zamiast 80486. Podobnie ludzie upuszczali „80” z przodu „80x86” i nazywali to po prostu x86 .

Teraz jestem prawie pewien, że niektórzy przyjdą i powiedzą, że Intel oznakował swoje chipy x86 w tym i takim czasie, co zrobili, ale mnie to nie obchodzi.

Faktem jest, że stale rosnąca środkowa cyfra powodowała wzrost do 80 x 86, a x86 pochodziło z tego - nawet jeśli 80186 i 80286 nie były 32 bitami.

Więc kiedy Intel w końcu poszedł na 64 bity, jak nazwał swoją nową architekturę? Dobrze! IA64! :-) Zmieniono także nazwę x86 na IA32, że tak powiem. Tylko IA64 nie był kompatybilny z x86, to znaczy IA32, więc wszyscy go zignorowali.

Potem przyszedł AMD, który zdecydował, że rynek chce 64-bitowego procesora, który byłby kompatybilny, w możliwym zakresie, z rodziną x86. Jako odwołanie marketingowe nazwali ją rodziną „x86-64” i odnieśli ogromny sukces. Tak bardzo, że Intel niechętnie podążył za swoim własnym 64-bitowym procesorem opartym na x86.

Później, ponieważ ludzie są leniwi, x86-64 stał się znany jako x64.

Tak więc w odpowiedzi na twoje pytanie, ponieważ x64 jest krótszy niż x86-64.

Daniel C. Sobral
źródło
10
Nie chcąc wybierać, ale mówiąc dokładnie, AMD nigdy nie sprzedało 64-bitowego układu. x64 lub x86_64, z którym wyszedł AMD, to 64-bitowe rozszerzenia dodane do zestawu instrukcji x86, który Intel stworzył - stąd x86_64 w przeciwieństwie do Itanium (IA_64) Intela, który był prawdziwym 64-bitowym układem niezgodnym z zestawem instrukcji x86.
Jeremy Hajek
6
Ponadto uważam, że Intel napotkał problemy związane ze znakami towarowymi, ponieważ po prostu używały liczb i nie można znakować sekwencji liczb, dlatego to, co byłoby 80586, stało się Pentium, wymyśloną nazwą, którą mogliby kontynuować.
cdkMoose,
3
Aby to wyjaśnić: AMD nazywa swoje rozszerzenia AMD64, a Intel nazywa ich (na licencji AMD) Intel64. Istnieje kilka subtelnych różnic (nie są one w 100% kompatybilne), więc większość dostawców systemów operacyjnych zwykle używa wspólnego podzbioru. Na dysku DVD z systemem Windows 2008 folder instalacyjny nosi nazwę AMD64 (w przeciwieństwie do I386 w wersji 32-bitowej). Nie wiem, skąd pochodzi x86_64: od AMD, ponieważ jest to rozszerzenie do x86 lub od dostawców Unix, którzy chcieli neutralnego terminu.
Michael Stum
20
@Jeremy Hajek: AMD64 / x86_64 to prawdziwy 64-bitowy układ, jego tryb 64-bitowy nie jest emulacją i nie ma wpływu na wydajność (a w rzeczywistości jego tryb 32-bitowy również nie jest emulacją). Układ ma 64-bitowy zestaw instrukcji i 64-bitowe rejestry, co czyni go 64-bitowym układem. Nie wiem, skąd masz wrażenie, że AMD nigdy nie sprzedawał 64-bitowego układu. To prawda, że ​​AMD nigdy nie wprowadził na rynek wersji 64-bitowej, która łamie kompatybilność z 32-bitowym układem, podobnie jak Intel z IA64.
Lie Ryan,
1
x64 jest używany tylko w terminologii Windows / Microsoft. GNU / Linux nazywa architekturę x86-64 lub amd64. (I wywołuje 32-bitowy x86 i386). Tylko w świecie Windows (lub przynajmniej w większości) x86 oznacza w szczególności 32-bitowe x86. Większość ludzi mówiących o procesorach rozumie, że x86 oznacza każdy procesor, który jest wstecznie zgodny z 8086, niezależnie od tego, w jakim trybie działa (zwykle tryb 64-bitowy lub czasami 32-bitowy tryb zgodności pod 64-bitowym jądrem.) Mówię, że „x86 ma wydajne uwalnianie / nabywanie atomów bez blokady”, nie wykluczam 64-bitów.
Peter Cordes,
16

Z Wikipedii : Termin x86 odnosi się do rodziny architektur zestawów instrukcji opartych na procesorze Intel 8086.

bindbn
źródło
3

Technicznie x86 po prostu odnosi się do rodziny procesorów i zestawu instrukcji, z których wszyscy korzystają. W rzeczywistości nie mówi nic konkretnego o rozmiarach danych.

x86 początkowo był 16-bitowym zestawem instrukcji dla 16-bitowych procesorów (8086 i 8088), następnie został rozszerzony do 32-bitowego zestawu instrukcji dla 32-bitowych procesorów (80386 i 80486), a teraz został rozszerzony do 64-bitowy zestaw instrukcji dla procesorów 64-bitowych. Kiedyś był zapisywany jako 80x86, aby odzwierciedlić zmieniającą się wartość pośrodku numerów modeli układów, ale gdzieś wzdłuż linii 80 z przodu zostało upuszczone, pozostawiając tylko x86.

Obwiniaj Pentium i jego potomstwo za zmianę sposobu, w jaki procesory zostały nazwane i wprowadzone na rynek, chociaż wszystkie nowsze procesory korzystające z zestawu instrukcji Intel x86 są nadal określane jako kompatybilne z x86, i386 lub i686 (co oznacza, że ​​wszystkie używają rozszerzeń oryginalnego 8086 zestaw instrukcji).

x64 to naprawdę dziwny człowiek. Imię 64-bitowego rozszerzenia zestawu x86 nazywało się x86-64. Później nazwano go AMD64 (ponieważ to AMD pierwotnie zaproponowało 64-bitowe rozszerzenie). Intel licencjonował 64-bitowy zestaw instrukcji i nazwał ich wersję EM64T. Zarówno zestawy instrukcji, jak i procesory, które ich używają, są nadal uważane za x86.

Skorpion
źródło
x86-64 powraca do terminu neutralnego dla dostawców, który obejmuje AMD64 i EM64T. Czołowe 80 zawsze znajdowało się w numerze części, ale po 80186 łatwiej było powiedzieć po prostu 186 vs. 8086 vs. 386. Pentium nigdy oficjalnie nie było nazywane 586 lub 80586 w swoich numerach części ( cpu-world.com/sspec/Pentium. html ); terminy i586 i i686 były po prostu oparte na polu „rodziny” CPUID tego, w jaki sposób procesory zgłaszały się.
Peter Cordes,
3

x86 i x64 to nazwy architektur procesorów . Architektura procesora ma więcej niż tylko liczbę bitów na rejestr.

x64 bierze to nazwa, ponieważ skok do 64 bitów jest największą zmianą w architekturze od x86, ale ten skok jest daleki od jedynej zmiany.

x86 dostaje swoją nazwę od czcigodnego procesora i rodziny 8086, która obejmowała 80286, 80368, 486 itd. W momencie, gdy x86 stało się nazwą architektury, 32 bity na rejestr nie były uważane za wystarczająco ważną cechę, aby uzasadnić budowę to w imię.

Joel Coel
źródło
2

Cóż, x64tak naprawdę nigdy nie pochodzi od producenta zestawu instrukcji lub chipa. Pierwotnie pochodzi z systemu Windows XP. Pierwsze 64-bitowe wydanie systemu Windows otrzymało ten tytuł Windows XP x64. I myślę, że termin x64utknął stamtąd.

x86Pseudonim pochodzi od zestawu instrukcji 32-bitowych. Tak więc wszystkie x86procesory (bez wiodącego 80) uruchamiają ten sam 32-bitowy zestaw instrukcji (a zatem wszystkie są kompatybilne). Tak x86stało się de facto nazwa dla tego zestawu (a więc 32 bit).

x86Nazywano oryginalne 64-bitowe rozszerzenie AMD na zestawie AMD64. Intel później licencjonował go, ale nawet nazwa 64-bitowego x86zestawu instrukcji jest zwykle taka AMD64.

Ale przede wszystkim jest to wyróżnienie marki. Oto kilka różnych głównych dystrybucji systemu operacyjnego, które nazywają każdy smak 64-bitowy:

Zasadniczo wydaje się, że Linux woli x86_64, BSD woli, amd64a inni x64...

Należy jednak zauważyć, że wszystkie one oznaczają to samo dla celów marketingowych. W subtelności oznaczają one różne rzeczy (no cóż, amd64oznaczają coś innego x86_64(pierwszy to architektura specyficzna dla dostawcy, a drugi podzbiór dwóch architektur dostawców), ale x86_64=== x64), ale dla każdego oprócz programistów piszących w asemblerze lub maszynie kod tak naprawdę nie robi inaczej ...

ircmaxell
źródło
1
Wszystkie obecne x64 to tak naprawdę AMD-64 od czasu śmierci IA64.
Overmind
@Overmind: x64 i IA-64 zawsze były oddzielnymi rzeczami. IA-64 jest całkowicie niezwiązany z x86 lub x86-64. (Z wyjątkiem tego, że wczesne implementacje IA-64 zawierały rdzeń x86 z powodów kompatybilności, ponieważ Intel ...)
Peter Cordes
Tak to jest poprawne. Ale „to nie żyje, Jim”.
Overmind,