Apakah ada alasan bagus untuk memasok versi 32-bit bersama dengan versi 64-bit perangkat lunak yang ditargetkan pada mesin desktop modern, menjalankan sistem operasi 64-bit modern pada perangkat keras 64-bit?
Tampaknya perangkat lunak 64-bit akan lebih efisien, memungkinkan penggunaan memori yang lebih tinggi jika diperlukan, dll. Apple bahkan menggunakan prosesor 64-bit untuk ponsel mereka, meskipun mereka hanya memiliki 1-2 GB RAM, jauh di bawah 4 GB batas untuk CPU 32-bit.
Jawaban:
Manfaat perangkat lunak 32-bit di lingkungan 64-bit
Kerugian dari perangkat lunak 32-bit di lingkungan 64-bit
Aspek lainnya
Kecuali jika membandingkan arsitektur CPU yang sangat spesifik, sistem operasi dan infrastruktur perpustakaan di sini, saya tidak akan dapat membahas lebih detail.
sumber
Perbedaan antara perangkat lunak 32 bit dan perangkat lunak 64 bit adalah ukuran pointer, dan mungkin ukuran register integer. Itu dia.
Itu berarti semua petunjuk dalam program Anda berukuran dua kali lipat. Dan (setidaknya pada arsitektur ILP32 / LP64) ukuran Anda
long
juga dua kali lipat. Ini biasanya berhasil sekitar 30% peningkatan dalam ukuran kode objek. Ini berarti bahwa ...Ini memiliki efek negatif yang tidak dapat diabaikan pada kinerja.
Melakukan ini hanya masuk akal jika Anda dapat "membeli kembali" biaya kinerja itu entah bagaimana. Pada dasarnya, ada dua cara untuk melakukan ini: Anda melakukan banyak matematika integer 64 bit, atau Anda membutuhkan lebih dari 4 GiByte memetakan memori. Jika salah satu atau keduanya benar, masuk akal untuk menggunakan perangkat lunak 64 bit, sebaliknya tidak.
Catatan: ada beberapa arsitektur di mana tidak ada varian 32 atau 64 bit yang sesuai. Kalau begitu, pertanyaannya jelas tidak masuk akal. Yang paling terkenal adalah IA64, yang hanya 64 bit dan tidak memiliki varian 32 bit, dan x86 / AMD64 yang, meskipun berkaitan erat, arsitektur yang berbeda , x86 menjadi 32 bit saja, AMD64 menjadi 64 bit saja.
Sebenarnya, pernyataan terakhir itu tidak 100% benar lagi. Linux baru-baru ini menambahkan ABI x32, yang memungkinkan Anda untuk menjalankan kode AMD64 dengan pointer 32 bit, jadi meskipun itu bukan arsitektur CPU yang "tepat", itu adalah cara menggunakan arsitektur AMD64 sedemikian rupa seolah-olah itu asli Varian 32 bit. Hal ini dilakukan justru karena kinerja overhead yang saya sebutkan di atas menyebabkan nyata terukur, masalah kuantitatif bagi pengguna dunia nyata menjalankan kode dunia nyata dalam sistem dunia nyata.
sumber
Jika perangkat lunak perlu berinteraksi langsung dengan sistem lama, driver atau perpustakaan, maka Anda mungkin perlu menyediakan versi 32-bit, karena AFAIK OS umumnya (pasti Windows dan Linux AFAIK) tidak memungkinkan pencampuran 64-bit dan 32 -bit kode dalam suatu proses.
Misalnya, jika perangkat lunak Anda perlu mengakses perangkat keras khusus, itu tidak biasa bagi pelanggan untuk mengoperasikan model lama yang hanya tersedia driver 32-bit.
sumber
Jika perangkat lunak Anda adalah DLL, Anda HARUS memberikan versi 32-bit dan 64-bit. Anda tidak tahu apakah pelanggan akan menggunakan perangkat lunak 32-bit atau 64-bit untuk berbicara dengan DLL, dan DLL harus menggunakan bit-length yang sama dengan aplikasi. Ini tidak bisa dinegosiasikan.
Jika perangkat lunak Anda dapat dieksekusi sendiri, itu kurang jelas. Jika Anda tidak memerlukan perangkat lunak untuk dijalankan pada OS yang lebih lama, Anda mungkin tidak perlu menyediakan versi 32-bit. Tetaplah pada 64-bit, tentukan bahwa itu membutuhkan OS 64-bit, dan pekerjaan sudah selesai.
Namun, jika Anda benar-benar memerlukan perangkat lunak Anda untuk berjalan pada OS yang lebih lama, maka Anda mungkin secara aktif TIDAK ingin memberikan versi 64-bit. Jika Anda memiliki dua versi maka Anda harus menggandakan pengujian, dan menguji perangkat lunak dengan benar di berbagai versi OS dan bahasa bukanlah proses yang cepat. Karena perangkat lunak 32-bit berjalan dengan sangat bahagia di platform 64-bit, itu masih cukup umum untuk perangkat lunak yang dirilis hanya sebagai 32-bit, terutama oleh pengembang yang lebih kecil.
Perhatikan juga bahwa sebagian besar ponsel berukuran 32-bit. Mungkin beberapa yang canggih sudah 64-bit sekarang, tetapi ada sedikit alasan kuat untuk membuat langkah itu. Jadi, jika Anda mengembangkan lintas-platform dan mungkin ingin kode Anda berjalan di Android juga, tetap 32-bit adalah pilihan yang aman.
sumber