Tại sao x86 đại diện cho 32 bit khi x64 đại diện cho 64 bit? [đóng cửa]


97

Câu hỏi của tôi là tại sao tốc ký cho 32-bit x86 khi tốc ký cho 64-bit là x64?

Tôi đoán nó có liên quan đến thời của những năm 386 và 486, khi tất cả các bộ xử lý 32 bit kết thúc vào năm 86, nhưng chắc chắn có những bộ xử lý không kết thúc vào năm 86 và vẫn còn 32 bit?

Có ai biết lịch sử của điều này hoặc có thể hướng tôi đến một nguồn thông tin tốt?

Cảm ơn


7
luôn muốn biết +1 này vì tò mò vô thức!
Gabriel Guimarães

Tôi chỉ tự hỏi mình điều này - sáng nay!
Sean Howat

9
Tôi nghĩ thuật ngữ đầy đủ không phải là x64 mà là x86_64
Kedare

3
IMHO, "x86" không có nghĩa (và không bao giờ có nghĩa) chỉ là bất kỳ kiến ​​trúc 32 bit chung nào. Câu trả lời của Daniel dưới đây cho lịch sử. Có rất nhiều bộ xử lý 32 bit khác cùng thời với (hoặc cũ hơn) 80386, và một số ít vẫn còn sống và tốt trên thị trường hiện nay. Họ 68000 (được sử dụng trong Macintosh ban đầu) cũ hơn nhiều so với 8086. Yêu cầu nổi tiếng của PowerPC khi mới là hỗ trợ mô phỏng mạnh mẽ cho cả x86 và 68K. ARM là 32 bit, hiện đại hơn và cũng khá phổ biến.
RBerteig

Tôi không thấy nó là x64, ít nhất là tôi không viết nó theo cách đó. Tôi viết nó lần lượt là 32b và 64b.
vol7ron

Câu trả lời:


34

Có lẽ do dòng x86 trở thành đồng nghĩa với bộ xử lý 32 bit trong một thời gian khá lâu, trong khi x64 đặc biệt là một chỉ định cho 64 bit khi các ứng dụng và hệ điều hành được chuyển đổi, và bây giờ có các ứng dụng phần mềm yêu cầu chỉ định 64 bit để chạy (giống như một số phần mềm VM).

Nói cách khác, đó là lý do tiếp thị nhiều hơn công nghệ.


20
x86 đến từ 8086, 286, 386, 486, 586, v.v. Nó có thể dễ dàng như "* 86"
gWaldo

6
Và bởi vì x86 có nguồn gốc từ 8086, tôi chưa bao giờ có thể tìm ra lý do tại sao nó luôn được liên kết với 32 bit. Như tôi nhớ, 8086 là bộ xử lý 16 bit, sử dụng các thanh ghi kép để kích hoạt địa chỉ bộ nhớ 32 bit. Intel đã không còn là một nhà lãnh đạo trong lĩnh vực này trong những ngày đó. BTW @gWaldo, bạn đã rời khỏi 80186.
John Gardeniers

Sự trùng hợp. Từ Wikipedia, "Cả kiến ​​trúc và chip vật lý do đó được phát triển khá nhanh bởi một nhóm người và sử dụng cùng các yếu tố vi kiến ​​trúc cơ bản và các kỹ thuật triển khai vật lý như được sử dụng cho 8085 cũ hơn (và 8086 cũng sẽ hoạt động như một sự tiếp nối). " Ngoài ra còn có một chiếc 8087 và 8089.
Bart Silverstrim

Phải, tôi đã bỏ qua 80186 vì thật lòng tôi không thể nhớ đó có phải là sản phẩm đã phát hành hay không (và cảm thấy quá lười biếng khi tìm kiếm nó ...)
gWaldo

1
Câu trả lời này không có gì sai, nhưng tôi thành thật nghĩ rằng Daniel nên là người được chấp nhận, vì nó chi tiết hơn nhiều.
Massimo

189

Chà, đã từng có một con chip tên là 8086, với phiên bản rẻ hơn có tên là 8088 được sử dụng trong một máy tính cá nhân có tên là IBM PC. Một phiên bản cải tiến của con chip đó đã được tạo ra và được gọi là 80186, mặc dù đó không phải là phiên bản rất phổ biến. Tuy nhiên, một phiên bản cải tiến cải tiến sau đó đã được tạo ra và được gọi là 80286. Bây giờ, đó là một con chip rất phổ biến, đặc biệt vì nó được sử dụng trong một máy tính có tên IBM PC AT.

Sau đó, Intel, công ty đã tạo và bán các chip 8086, 8088, 80186 và 80286, tất cả đều có kiến ​​trúc 16 bit, đã thấy cần phải tạo ra chip 32 bit để cạnh tranh với các sản phẩm tương tự của những người khác. Để tận dụng vị trí đương nhiệm của mình, nó đã tạo ra con chip mới có khả năng chạy phần mềm được làm cho các con chip đã đề cập trước đó. Đương nhiên, Intel gọi con chip mới này là 80386.

Đến lúc đó, có rất nhiều máy tính sử dụng các phiên bản chip Intel khác nhau và cũng có những chip không phải của Intel tương thích với các chip của Intel. Vì vậy, mọi người bắt đầu gọi chúng là 80x86.

Sau một thời gian, Intel đã tung ra một con chip mới, nhưng nó đã quyết định bỏ 80, vì vậy nó trở thành 486 thay vì 80486. Tương tự như vậy, mọi người đã bỏ "80" từ phía trước "80x86" và gọi công cụ này chỉ là x86 .

Bây giờ, tôi khá chắc chắn rằng một số người sẽ đến và nói rằng Intel đã gắn thương hiệu chip x86 của họ vào thời điểm đó và họ đã làm như vậy, nhưng tôi không quan tâm.

Thực tế là chữ số giữa ngày càng tăng đã tăng lên 80x86 và x86 đến từ đó - ngay cả khi 80186 và 80286 không phải là 32 bit.

Vì vậy, một khi Intel cuối cùng đã đi được 64 bit, thì nó gọi kiến ​​trúc mới của nó là gì? Đúng! IA64! :-) Nó cũng đổi tên thành x86 thành IA32. Chỉ có IA64 không tương thích với x86, ý tôi là, IA32, vì vậy mọi người đều bỏ qua nó.

Và sau đó đến AMD, quyết định thị trường muốn có CPU 64 bit tương thích, ở mức độ có thể, với họ x86. Như một lời kêu gọi tiếp thị, họ gọi nó là gia đình "x86-64" và họ đã rất thành công. Nhiều đến nỗi Intel đã kết thúc một cách miễn cưỡng với CPU 64 bit của riêng họ dựa trên x86.

Sau này, vì mọi người lười biếng, x86-64 được gọi đơn giản là x64.

Vì vậy, để trả lời câu hỏi của bạn, vì x64 ngắn hơn x86-64.


10
Không phải để chọn nit mà là chính xác, AMD không bao giờ bán ra chip 64 bit. x64 hoặc x86_64 mà AMD ra mắt là các phần mở rộng 64 bit được thêm vào tập lệnh x86 do Intel tạo - do đó x86_64 trái ngược với Itanium của Intel (IA_64) là chip 64 bit thực sự không tương thích với tập lệnh x86.
Jeremy Hajek

6
Ngoài ra, tôi tin rằng Intel phải đối mặt với các vấn đề về nhãn hiệu vì họ chỉ sử dụng các số và bạn không thể đăng ký một chuỗi số, đó là lý do tại sao 80586 trở thành Pentium, một tên được tạo ra mà họ có thể tiếp tục đăng ký nhãn hiệu.
cdkMoose

3
Để làm rõ: AMD gọi phần mở rộng của họ là AMD64 và Intel gọi phần mở rộng của họ (mà họ đã cấp phép từ AMD) là Intel64. Có một vài khác biệt tinh tế (chúng không tương thích 100%), vì vậy hầu hết các Nhà cung cấp HĐH thường sử dụng Tập hợp con chung. Trên DVD Windows 2008, thư mục cài đặt thực sự được gọi là AMD64 (trái ngược với I386 trên 32-bit). Tôi không biết x86_64 đến từ đâu: Từ AMD vì đây là phần mở rộng cho x86 hoặc từ Nhà cung cấp Unix muốn có một thuật ngữ trung lập.
Michael Stum

20
@Jeremy Hajek: AMD64 / x86_64 là một thiết kế chip 64 bit thực sự, chế độ 64 bit của nó không phải là mô phỏng và không có tác động hiệu năng (và trên thực tế, chế độ 32 bit của nó cũng không phải là mô phỏng). Con chip này có tập lệnh 64 bit và thanh ghi 64 bit, làm cho nó trở thành con chip 64 bit. Tôi không biết bạn có ấn tượng rằng AMD không bao giờ bán chip 64 bit từ đâu. Mặc dù vậy, sự thật là AMD chưa bao giờ đưa ra thị trường 64 bit phá vỡ khả năng tương thích với chip 32 bit, giống như Intel đã làm với IA64.
Nói dối Ryan

1
x64 chỉ được sử dụng trong thuật ngữ Windows / Microsoft. GNU / Linux gọi kiến ​​trúc x86-64 hoặc amd64. (Và gọi 32-bit x86 i386). Chỉ có (hoặc ít nhất là chủ yếu) trong thế giới Windows mà x86 đặc biệt có nghĩa là x86 32 bit. Hầu hết mọi người phần cứng nói về CPU đều hiểu x86 có nghĩa là bất kỳ CPU nào tương thích ngược với 8086, bất kể nó hoạt động ở chế độ nào (chế độ dài 64 bit, hoặc đôi khi là chế độ tương thích 32 bit trong nhân 64 bit.) Tôi nói rằng "x86 có bản phát hành hiệu quả / thu được các nguyên tử không khóa", tôi không loại trừ 64-bit.
Peter Cordes

16

Từ Wikipedia : Thuật ngữ x86 dùng để chỉ một nhóm kiến ​​trúc tập lệnh dựa trên CPU Intel 8086.


3

Về mặt kỹ thuật x86 chỉ đơn giản đề cập đến một họ bộ xử lý và tập lệnh mà tất cả chúng sử dụng. Nó không thực sự nói bất cứ điều gì cụ thể về kích thước dữ liệu.

x86 khởi đầu là tập lệnh 16 bit cho bộ xử lý 16 bit (bộ xử lý 8086 và 8088), sau đó được mở rộng thành tập lệnh 32 bit cho bộ xử lý 32 bit (80386 và 80486), và hiện đã được mở rộng thành một tập lệnh 64 bit cho bộ xử lý 64 bit. Nó từng được viết là 80x86 để phản ánh giá trị thay đổi ở giữa các số kiểu chip, nhưng đâu đó dọc theo dòng 80 ở phía trước đã bị bỏ đi, chỉ còn lại x86.

Đổ lỗi cho Pentium và nó là con đẻ của việc thay đổi cách đặt tên và tiếp thị cho bộ xử lý, mặc dù tất cả các bộ xử lý mới hơn sử dụng tập lệnh x86 của Intel vẫn được gọi là tương thích x86, i386 hoặc i686 (có nghĩa là tất cả đều sử dụng các phần mở rộng của 8086 gốc tập lệnh).

x64 thực sự là người đàn ông kỳ lạ ở đây. Tên đầu tiên của phần mở rộng 64 bit cho tập x86 được gọi là x86-64. Sau này nó được đặt tên là AMD64 (vì AMD là những người đã đưa ra phần mở rộng 64 bit ban đầu). Intel đã cấp phép cho tập lệnh 64 bit và đặt tên phiên bản EM64T của họ. Cả hai tập lệnh và bộ xử lý sử dụng chúng đều được coi là x86.


x86-64 trở lại là một thuật ngữ trung lập với nhà cung cấp bao gồm AMD64 và EM64T. Số 80 dẫn đầu luôn có ở số phần, nhưng sau 80186, mọi thứ trở nên dễ dàng hơn khi nói 186 so với 8086 so với 386. Pentium không bao giờ được gọi chính thức là 586 hoặc 80586 trong số phần của nó ( cpu-world.com/sspec/Pentium. html ); các thuật ngữ i586 và i686 chỉ dựa trên trường "họ" CPUID về cách CPU tự báo cáo.
Peter Cordes

3

x86 và x64 là tên của kiến trúc cpu . Có nhiều kiến ​​trúc cpu hơn là chỉ số bit trên mỗi thanh ghi.

x64 lấy tên vì bước nhảy lên 64 bit là thay đổi lớn nhất trong kiến ​​trúc từ x86, nhưng bước nhảy đó khác xa với thay đổi duy nhất .

x86 được đặt tên từ bộ xử lý và gia đình 8086 đáng kính, bao gồm 80286, 80368, 486, v.v. nó vào tên


2

Vâng, x64không bao giờ thực sự đến từ một bộ hướng dẫn hoặc nhà sản xuất chip. Nó ban đầu đến từ Windows XP. Phiên bản 64 bit đầu tiên của Windows đã được đưa ra tiêu đề Windows XP x64. Và tôi đoán thuật ngữ x64bị mắc kẹt từ đó.

Tên x86gọi xuất phát từ tập lệnh 32 bit. Vì vậy, tất cả các x86bộ xử lý (không có đầu 80) đều chạy cùng một tập lệnh 32 bit (và do đó đều tương thích). Vì vậy, x86đã trở thành một tên defacto cho tập hợp đó (và do đó là 32 bit).

Phần mở rộng 64 bit ban đầu của AMD trên x86bộ đã được gọi AMD64. Intel sau đó đã cấp phép cho nó, nhưng thậm chí vẫn là tên cho tập lệnh 64 bit x86thường AMD64.

Nhưng chủ yếu là sự phân biệt thương hiệu. Đây là những gì một vài bản phân phối Hệ điều hành chính khác nhau gọi mỗi hương vị 64 bit:

Về cơ bản, có vẻ như Linux thích x86_64, BSD thích amd64và những người khác x64...

Nhưng điều quan trọng cần lưu ý là tất cả chúng đều có nghĩa giống nhau cho các mục đích tiếp thị. Trong tinh tế họ làm những điều xấu khác nhau (tốt, amd64có nghĩa là một cái gì đó khác với x86_64(cựu trở thành một kiến trúc cụ thể nhà cung cấp, và sau này là tập hợp con của hai nhà cung cấp kiến trúc), nhưng x86_64=== x64), nhưng đối với bất kỳ ai trừ các lập trình viên viết trong lắp ráp hoặc máy mã nó thực sự không làm cho một ...


1
Tất cả x64 hiện tại thực sự là AMD-64 kể từ khi IA64 chết.
Vượt qua

@Overmind: x64 và IA-64 luôn là những thứ riêng biệt. IA-64 hoàn toàn không liên quan đến x86 hoặc x86-64. (Ngoại trừ việc triển khai IA-64 sớm bao gồm lõi x86 vì lý do tương thích, vì Intel ...)
Peter Cordes

Vâng, đó là chính xác. Nhưng "nó đã chết, Jim".
Overmind
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.