Heikki Kultala

Tại sao bộ xử lí 32 bit được gọi là x86 mà không phải là x32?

Tại sao bộ xử lí 32 bit được gọi là x86 mà không phải là x32?
Nguồn: https://qr.ae/pNyQ2M
Trả lời bởi: Heikki Kultala – https://www.quora.com/profile/Heikki-Kultala-1 -Thạc sĩ Khoa học Máy tính, Đại học Công nghệ Tampere (tốt nghiệp năm 2010)
32 bit không được gọi là x86.
Có hàng chục kiến trúc 32 bit như MIPS, ARM, PowerPC, SPARC không được gọi là x86.
x86 là một chỉ định về tập lệnh (instruction set) được kế thừa từ tập lệnh trong bộ xử lí Intel 8086. Tiếp nối là các bộ xử lí 80186, 80286, 80386, 80486. Tất cả đều tương thích với bộ xử lí Intel 8086 ban đầu và đều xử lí được những dòng lệnh tương ứng như với bộ xử lí 8086 này. Về sau Intel phát hành các bộ xử lí tương thích với tập lệnh của Intel 8086 (8086-compatible processors) như Pentium, Celeron, Core và Xeon. Tất cả được duy trì độ ổn định với với các bộ xử lí dựa trên họ tập lệnh này (Intel 8086).
Trong những bộ xử lí này, 8086, 80186, và 80286 là những bộ xử lí 16 bit. 80386 là một bộ xử lí 32 bit với một cơ chế điều hành 32 bit kiểu mới. Tuy nhiên, nó vẫn giữ những chế độ xử lí 16 bit và được xem như là một chế độ thứ ba, gọi là chế độ “virtual 86” mà cho phép thực thi những chương trình 16 bit trong một hệ điều hành 32 bit.
Sau đó, sự mở rộng lên bộ xử lí 64 bit, gọi là x86-64, được phát triển vào triển khai trong AMD K8 và sau đó là những bộ xử lí Intel. Những bộ xử lí 64 bit dựa trên kiến trúc x86-64 cũng được gọi là những bộ xử lí x86.
Tại sao bạn có thể đặt nghi vấn về điều này?
Có thể bạn từng thấy “x86” và “x64” trong một vài gói tin (package) của hệ điều hành Windows.
Những hệ điều hành Windows hiện đại được dựa trên Windows NT. Windows NT chưa hề có hỗ trợ cho bộ xử lí x86 với 16 bit thực thi. Có thể ban đầu nó chạy trên kiến trúc x86 with 32 bit (386, 486, Pentium, v.v…) và các bộ xử lí MIPS, PowerPC, Alpha. Trong khi đó Alpha đã là một kiến trúc 64 bit.
Để phân biệt giữa những hệ điều hành Windows được biên dịch bởi những bộ xử lí khác nhau này, một vài tên ngắn gọn được gọi kèm theo cho những kiến trúc này. Những tên này cũng được dùng trong các scripts (viết code) và biên dịch (build) hệ thống. Vì vậy, không thể thay đổi được chúng vì có thể làm nảy sinh một lượng lớn các vấn đề. “x86” được xem như là phiên bản x86 với 32 bit trong Windows NT. Bất kì thứ gì chứa số 32 sẽ không có ý nghĩa gì vì đã từng có 3 kiến trúc 32 bit khác nhau được hỗ trợ cho Windows NT.
Sau đó hỗ trợ (support) cho Itanium (IA64) cũng được thêm vào. Và rồi, có thêm các hỗ trợ cho MIPS và PowerPC. Sau cùng thì MIPS bị loại bỏ.
Vậy, câu hỏi đúng sẽ là: Tại sao bộ xử lí x86 với 64 bit được gọi là x64?
Hơn 10 năm sau, khi sự mở rộng lên x86 với 64 bit được phát hành. Microsoft bắt đầu nhắm tới những hệ điều hành Windows dựa trên NT cho bộ xử lí x86 với 64 bit, một vài tên kĩ thuật (technical name) được chọn cho phiên bản được biên dịch cho kiến trúc này. Những thông số bắt nguồn từ AMD, còn được gọi là “amd64” trong khi đó “intel64” ám chỉ Itanium. Nhưng Microsoft đã không muốn thêm cái tên của một công ty vào tên họ chọn cho kiến trúc, và vì vậy cái tên “x86-64” được sử dụng như một tên chung cho kiến trúc này. Dấu gạch “-“ trong “x86-64” có thể trở thành vấn đề ở một vài nơi khi mà tên kiến trúc xuất hiện và được phân tích bởi các lệnh. Vì vậy họ bắt đầu chọn tên “x64” như thể là bản 64 bit của của x86.
Sau đó, những hỗ trợ cho Itanium không còn nữa và những hỗ trợ cho các kiến trúc ARM 32 và 64 bit được thêm vào Windows. Kiến trúc 64-bit ARMv8 thông thường được gọi là A64 hoặc Aarch64. Tôi không chắc cái nào là tên gọi chính thức cho nó trong Windows.
Vì vậy ngày nay, Windows vẫn hỗ trợ 4 kiến trúc: 386 (x86), x86-64 (x64), 32-bit ARMv7 và 64-bit ARMv8.
Vậy, hiện tại “x64” ám chỉ một trong hai kiến trúc 64 bit được hỗ trợ bởi Windows.

Heikki Kultala

Leave a Reply

Your email address will not be published. Required fields are marked *