Bisakah OS 32 bit berjalan dalam prosesor 64 bit?

25

Apa perbedaan antara OS 32 bit dan OS 64 bit? Bisakah OS 32 bit berjalan dalam prosesor 64 bit?

acak
sumber
Jika Anda berbicara tentang Windows (dan tag Win32 tampaknya mengindikasikan hal itu), maka ya, tentu saja - Vista dan Win7 64-bit mendukung hampir semua aplikasi 32-bit melalui lapisan kompabilitas - Saya belum menemukan apa pun yang tidak 't bekerja dengan baik pada Vista 64-bit (kecuali untuk driver sistem tingkat)
marc_s
5
Pertanyaannya lebih pada apakah Anda dapat menginstal katakanlah Win Vista x86 ke kotak yang memiliki prosesor 64-bit, daripada apakah aplikasi x86 berjalan pada katakanlah Win Vista x64.
KTC

Jawaban:

34

Pertanyaan Anda spesifik untuk arsitektur. x64 pada dasarnya adalah ekstensi untuk arsitektur x86. Ini mendukung ruang alamat 64 bit. Ini memberikan beberapa instruksi baru dan register baru.

Anda dapat menjalankan Windows x86 32-bit pada mesin x64. Perhatikan bahwa Anda tidak dapat melakukan ini pada sistem Itanium 64-bit.

Mehrdad Afshari
sumber
16

Prosesor 64 bit dapat menjalankan OS 32 dan 64 (setidaknya kaleng x64). Prosesor 32 bit hanya dapat berjalan secara asli.

Perbedaannya sebagian besar tentang ukuran Pointer / Referensi. Pada mesin 64 bit, Anda dapat mereferensikan alamat dalam rentang alamat 64 bit (sehingga memberi Anda 2 ^ 64 byte memori). Pada 32 bit Anda hanya dapat mengatasi 2 ^ 32 byte (= 4 GB). Sekarang jika Anda melihat komputer saat ini, jelas mengapa dunia bergerak ke 64 bit: 32 bit tidak dapat dengan mudah menangani semua RAM lagi.

Pada x64 (AMD / Intel) Anda memiliki manfaat tambahan 64 bit. CPU memiliki lebih banyak register dan dengan demikian memungkinkan kode yang lebih efisien.

Pada arsitektur lain perbedaan antara 64 dan 32 bit kurang jelas. Misalnya Nintendo 64 (ingat itu?) Adalah mesin 64 bit tetapi sebagian besar kodenya adalah 32 bit. Jadi dalam hal itu 64 bit lebih berfungsi sebagai trik pemasaran.

terdon
sumber
3

Jawaban yang diterima saat ini umumnya benar tetapi tidak secara khusus. Sebenarnya tidak ada satu hal pun yang disebut "CPU 32-bit" atau "" CPU 64-bit "- itu adalah deskripsi yang merujuk hanya satu bagian kecil dari arsitektur CPU. garis pemilihan alamat antara CPU dan memori, yaitu ruang alamat yang disebut tersedia untuk operasi memori.

Pada zaman dahulu ketika CPU ketika orang-orang biasa duduk dan menenun (membungkus) kabel antara prosesor dan memori, Anda harus menggunakan 32 atau (secara teoritis, karena itu tidak ada pada saat itu) 64 kabel antara CPU dan pengontrol memori yang akan digunakan untuk menentukan alamat memori mana yang ingin Anda akses. Sebagai contoh, katakanlah kita memiliki arsitektur memori 2-bit: mengirim 00 akan memilih alamat 0, 01 akan memilih alamat 1, 10 akan memilih alamat 2, dan 11 akan memilih alamat 3. 2-bit ini memberi kita 2 ^ 2 byte RAM (4 byte).

Jika Anda menggunakan CPU 32-bit dan menambahkan 32 kabel lebih banyak antara CPU dan pengontrol memori sehingga secara ajaib Anda dapat mendukung lebih banyak memori, kini Anda memiliki "64-bit CPU" yang dapat menjalankan 32-bit kode atau kode 64-bit. Apa artinya ini dan bagaimana ini terjadi? Baiklah, mari kita ambil CPU 2-bit dari bagian sebelumnya dari jawaban ini dan tambahkan kabel lain, mengubahnya menjadi CPU 3-bit, membawa kita dari 4 byte ke 2 ^ 3 atau 8 byte RAM.

Kode "2-byte" yang ada akan berjalan, mengatur nilai dari 2 kabel terakhir seperti ditunjukkan di atas (00-11). Kami akan mentransfer koneksi ekstra menjadi nol secara default, jadi sebenarnya ketika kode 2-byte berjalan, ketika memilih 00, sebenarnya memilih 000 dan ketika memilih 11 itu sebenarnya memilih 011. Mudah.

Sekarang seorang programmer ingin menulis "asli" kode 3-byte dan menulis perangkat lunaknya untuk mengambil keuntungan dari ruang alamat tambahan. Dia memberi tahu CPU bahwa dia tahu apa yang dia lakukan dan bahwa dia akan mengambil kendali manual dari kabel baru yang ekstra itu. Perangkat lunaknya tahu tentang kabel ekstra dan mengirimkan 000-111 dengan benar, memberinya akses penuh ke rentang memori yang didukung oleh arsitektur CPU baru ini.

Tapi bukan itu yang harus terjadi. Faktanya, itu biasanya bukan bagaimana berbagai hal terjadi. Ketika 64-bit CPU pertama kali diperkenalkan (dan ada banyak), mereka semua pergi dengan arsitektur / desain yang sama sekali baru. Mereka tidak hanya menempel pada 32 kabel tambahan dan mengatakan "ini dia, ini adalah CPU 64-bit yang dapat Anda gunakan dalam mode 32-bit atau 64-bit," tetapi mereka mengatakan "Ini adalah CPU baru kami dan hanya membutuhkan pemrograman dalam bahasa mesin yang sama sekali baru ini, berperilaku dengan cara yang sama sekali baru ini, memecahkan banyak masalah yang berbeda jauh lebih elegan daripada CPU 32-bit x86 / i386 lama yang pernah dilakukan, dan itu adalah arsitektur asli 64-bit. . "

Itulah kisah Intel Itanium, yang sekarang terkenal dengan sebutan "Itanic" karena betapa masifnya itu tenggelam. Itu seharusnya diberitakan di era 64-bit baru, dan itu adalah sesuatu untuk dilihat. Instruksi panjang variabel, cache besar, ruang alamat 64-bit, banyak register, super menarik, super keren, dan super sulit untuk meyakinkan semua orang untuk mengkompilasi ulang atau menulis ulang 20 tahun kode warisan untuk. Ini kembali ketika AMD dan Intel benar-benar bersaing, dan AMD memiliki ide cemerlang untuk mengatakan "mari kita lupakan semua ini 'selesaikan semua masalah dunia' dan tambahkan 32 kabel lagi ke i386 dan buat 32-bit kompatibel 64- bit CPU "dan arsitektur CPU x86_64 lahir.

Bahkan, jika Anda melihat nama dan sumber kernel untuk sistem operasi utama (Linux, Windows, BSDs, dll) Anda akan menemukan mereka dipenuhi dengan referensi untuk CPU AMD64 dan arsitektur AMD64. AMD datang dengan strategi kemenangan untuk membuat semua orang beralih ke dunia 64-bit sambil menjaga kompatibilitas dengan aplikasi 32-bit, dengan cara yang dapat dijalankan oleh OS 32-bit pada perangkat keras 64-bit atau bahkan aplikasi 32-bit dapat berjalan pada OS 64-bit pada perangkat keras 64-bit. Intel mengikuti suite lebih cepat daripada nanti dengan arsitektur "Intel EM64T" (yang pada dasarnya identik dengan AMD64) dan x86_64 menang sementara Itanic dan yang lainnya seperti MIPS64 dan ALPHA64 tidak terlihat lagi di pasar desktop / server.

tl; dr amd64 alias x86_64 CPU dirancang agar kompatibel dengan kernel dan kode 32-dan 64-bit, tetapi sebagian besar CPU 64-bit jelas tidak kompatibel dengan cara yang sama. CPU 32-bit dapat mengakses paling banyak memori 4GiB, sedangkan CPU 64-bit dapat mengakses 16 EiBs (16 × 1024 ^ 6 byte, atau 4 miliar kali lebih banyak memori dari 4GiB).

Mahmoud Al-Qudsi
sumber
1
Anda memiliki beberapa kesalahan faktual: 1) itanium tidak memperkenalkan instruksi panjang variabel (setiap x86 memilikinya); itu menambahkan instruksi kata yang sangat panjang, yang mampu secara bersamaan beroperasi pada beberapa kuantitas 64 bit. 2) x86_64 tidak hanya menampar lebih banyak baris alamat; itu juga menambahkan banyak register tambahan, dan memperlebar semua register (dan ALU yang beroperasi pada mereka) dari 32 hingga 64 bit. Bandingkan ini dengan 8086/8088, yang menambahkan 4 lebih banyak baris alamat dan register pemilih segmen, tetapi menyimpan semuanya pada 16 bit, seperti 8080 sebelumnya.
psusi
-1

Baik OS 32 dan 64 bit dapat berjalan pada prosesor 64 bit, tetapi OS 64 bit dapat menggunakan daya penuh dari prosesor 64bit (register lebih besar, instruksi lebih lanjut) - singkatnya dapat melakukan lebih banyak pekerjaan dalam waktu yang bersamaan. Prosesor 32 bit hanya mendukung OS Windows 32 bit.

CsTamas
sumber
3
Ini tidak benar secara umum, meskipun benar untuk x64 secara khusus.
ChrisInEdmonton
1
Prosesor 32 bit akan menjalankan sistem operasi apa pun yang dirancang untuk berjalan pada arsitektur prosesor tersebut.
Waxhead
OS x86 32-bit jelas tidak dapat berjalan pada ARM64, jadi 32 and 64 bit OS can run on a 64 bit processorumumnya tidak benar
phuclv
@ Phúc Mungkin ada prosesor 64 bit, yang tidak mendukung twin 32 bit mereka. Namun Anda menggunakan logika salah dalam argumen Anda. SunOS 4.4.1 pada 32 bit MicroSparc juga tidak akan berjalan pada ARM32. Menggunakan logika Anda berarti, umumnya tidak benar bahwa OS 32 bit dapat berjalan pada prosesor 32 bit. Jika saya mengabaikan akal sehat seperti Anda, saya dapat berpendapat, bahwa ARM OS 32 bit berjalan pada Intel i386 / x64, karena pengembang Android menjalankan gambar ARM Android pada mesin Wintel mereka. Tentu saja OS adalah untuk keluarga prosesor yang tepat dan tentu saja OS berjalan pada perangkat keras fisik dan tidak emulasi (cukup kata, keluar)
Tino