Tại sao chúng ta không thể sử dụng HĐH 64 bit trên CPU 32 bit?


2

Tại sao HĐH 64 bit không thể chạy trên CPU 32 bit, nhưng HĐH 32 bit hoạt động trên CPU 64 bit?


9
Tại sao bạn không thể chạy phần mềm cho loại CPU "A" trên CPU loại "B"? Bởi vì A! = B.
John Saunders

1
Câu trả lời đơn giản: Bởi vì nó là Pita. :)
Tony

2
Tất nhiên bạn có thể, tất cả những gì bạn phải làm là loại bỏ CPU 32 bit và đưa CPU 64 bit vào.
Hello71

Câu trả lời:


19

Tôi giả sử chúng ta đang nói về PC tiêu chuẩn ở đây.

Hầu hết các bộ xử lý 64 bit - đặc biệt là các bộ xử lý của Intel và AMD - có bộ hướng dẫn 32 bit đầy đủ cũng như các phần mở rộng 64 bit, vì vậy chúng có thể chạy phần mềm 32 bit.

Bộ xử lý 32 bit không có tập lệnh 64 bit. Nhiều người đã được thực hiện ngay cả trước khi tập lệnh 64 bit được xác định, do đó không thể họ thực hiện chính xác, thậm chí được mô phỏng. Họ không hiểu ngôn ngữ đó.


Tất cả ở cấp độ cơ sở đi xuống đăng ký. Bộ xử lý 64 bit có thể di chuyển thứ 64 bit cùng một lúc. Bộ xử lý 32 bit không có thanh ghi 64 bit.
Phòng thí nghiệm Fiasco

9

CPU 64 bit hỗ trợ bất kỳ độ dài từ nào lên đến 64 bit, vì vậy về mặt lý thuyết, bất kỳ HĐH 8, 16, 32 hoặc 64 bit nào cũng sẽ chạy trên chúng. CPU 32 bit không hỗ trợ độ dài từ 64 bit, do đó, chỉ phần mềm <= 32 bit (bao gồm cả hệ điều hành 32 bit) có thể chạy trên chúng.


+1: IMO, câu trả lời 'đúng' duy nhất trong nhóm này. :)
cʜιᴇ007

1
Trên thực tế, câu trả lời này ít nhất là bằng cách nào đó sai ở một số cấp độ. Cách chính mà nó sai là thế này - CPU 32 bit thông thường hoạt động với các từ 64 bit tốt. Pentium 4 ban đầu có rất nhiều hướng dẫn hoạt động trên các từ 64 bit. Nó ít liên quan đến độ dài từ và mọi thứ phải làm với tập lệnh.
David Schwartz

5

Tại sao bạn không thể chạy Windows trên Atari cũ của bạn? Phần cứng và bộ xử lý không tương thích.

x86-64 nên được coi là hoàn toàn khác với x86 vì nó khác rất nhiều so với quan điểm về mã máy và mã máy. Điểm chung duy nhất mà họ thực sự chia sẻ là mã bootstrapping (từ khởi động 16 bit, để có được 64 bit, trước tiên bạn phải chuyển sang 32 bit) và chế độ tương thích 32 bit và các phần mở rộng CPU phổ biến như SSE. Ngoài ra, các bộ xử lý thực sự hoàn toàn khác biệt về cách các ứng dụng được tạo ra trong mã máy.


Bạn đang phóng đại trường hợp ở đây. Ít nhất 99% mã nguồn trong Windows, ngoại trừ các thành phần chế độ kernel, giống nhau giữa x86, x64, ia64 và ARM. Và ngay cả trong một chương trình x64, kiến ​​trúc x64 phần lớn là siêu bộ của x86. ví dụ: nếu bạn muốn sao chép EAX sang EBX, đó là MOV EBX EAX ở cả x86 và x64; ngay cả mã hóa máy của hướng dẫn đó là giống nhau giữa hai.
Jamie Hanrahan

@JamieHanrahan có thể, ngoại trừ những thứ như PIC, bất cứ thứ gì liên quan đến con trỏ, v.v ... bạn không thể biên dịch chương trình cho x86 và nó là "chỉ hoạt động" cho x64, ngay cả khi mã máy tương tự, có ngữ nghĩa sự khác biệt
Earlz

Trên thực tế, vâng, bạn có thể làm chính xác điều đó. Bạn làm điều đó mỗi khi bạn chạy chương trình 32 bit trên Windows 64 bit.
Jamie Hanrahan

2

Đó là bởi vì bộ xử lý trong trường hợp máy 32 bit không thể xử lý 64 bit, nhưng bộ xử lý 64 bit có khả năng xử lý 32 bit vì nó có thể xử lý 64 bit một lúc.


2

Một hệ điều hành 64 bit được lập trình với các thanh ghi 64 bit. Một CPU 32 bit chỉ có các thanh ghi 32 bit.

Có rất nhiều lý do khác cho việc này là tốt, ngoài việc đăng ký.


2

HĐH 64 bit dựa trên các tính năng của bộ xử lý của bộ xử lý 64 bit.

Bạn không thể nói quy trình 32 bit để thực hiện thao tác trên thanh ghi 64 bit nếu nó không tồn tại.

Trong khi đó bộ xử lý 64 bit có mọi thứ mà 32 bit có, vì vậy nó có thể được thực hiện.

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.