Akan Raspbian pindah ke 64-bit?

Di halaman ini, resmi RPi3 pengumuman yang menyatakan:

Anda akan memerlukan beberapa NOOBS Raspbian atau gambar dari halaman download kami. Pada peluncuran ini, kami menggunakan 32-bit Raspbian userland yang kita gunakan pada perangkat Raspberry Pi; selama beberapa bulan ke depan kami akan menyelidiki apakah ada nilai di pindah ke 64-bit mode.

Pertanyaan saya adalah, mengingat bahwa prosesor 64 bit, isn't jelas yang menjalankan OS 64 bit akan lebih baik dalam segala hal? Apa yang saya hilang?

Mengomentari pertanyaan (6)
Larutan

mengingat bahwa prosesor 64 bit, isn't itu jelas bahwa menjalankan OS 64 bit akan lebih baik dalam segala hal?

Tidak benar-benar, itu's tidak. Dalam beberapa hal, menjalankan sistem operasi 64 bit bisa memburuk Raspberry Pi's kinerja.

Manfaat dari 64 bit:

Dua manfaat utama dari menggunakan 64 bit processor/sistem operasi adalah bahwa perangkat dapat menangani lebih dari 4 GB RAM, dan native menangani bilangan bulat yang lebih besar dari 2^32 tanpa perlu bignum perpustakaan.

Raspberry Pi doesn't memiliki lebih dari 4 GB RAM. Pada 1 GB RAM, anda've benar-benar kehilangan lebih dari dua manfaat utama. Adapun manfaat kedua, apa yang persentase orang yang benar-benar menggunakan cukup raksasa angka-angka yang masuk akal untuk pondasi untuk mendukung seluruh sistem operasi kedua? Seperti, RPi dapat menggunakan jumlah besar melalui metode perangkat lunak, tapi sepertinya jika anda're akan konsisten dalam ranah ini, anda harus menggunakan hardware yang lebih baik pula.

Masalah dengan 64 bit:

Kemampuan untuk menyimpan jumlah yang lebih besar isn't diberikan oleh sihir. Sebaliknya, ukuran memori benda-benda yang perlu ditingkatkan. Dalam C (dan C++) ini berarti mengubah sebuah int untuk int64_t. Ini isn't dilakukan secara otomatis, maka komentar tentang yayasan tidak ingin mempertahankan dua cabang.

Selain itu, banyak aplikasi hanya don't memberikan manfaat (bagi sebagian besar pengguna) ketika berjalan dalam mode 64 bit. Perhatikan bahwa sebagian besar browser web, MS Office, dan seluruh host lain perangkat lunak populer adalah semua masih dikirim dan disimpan dalam 32 bit cara. Yakin anda bisa mendapatkan tangan anda pada aplikasi 64 bit rilis MS Office, tapi itu's jarang digunakan.

Jika aplikasi/sistem operasi ini ditulis untuk mengambil keuntungan dari arsitektur 64 bit, aplikasi anda akan menggunakan lebih banyak memori, hanya karena variabel pointer yang mengambil lebih banyak ruang. Biasanya ini adalah relatif kecil trade off untuk mesin-mesin yang akan mendapat manfaat dari tunjangan. Dalam kasus kami, kami memiliki beberapa keistimewaan, dan sangat sedikit RAM.

Juga dari catatan:

Hanya karena anda're berjalan pada mesin 64 bit, doesn't berarti aplikasi isn't berjalan seperti yang 32 bit. Windows membuat ini sangat jelas dengan memiliki dua instalasi yang berbeda jalur, C:\Program File dan C:\Program Files (x86).

Jadi, apakah yayasan kemungkinan akan memberikan dukungan 64 bit?:

Kami're kembali di titik yang sama, "Beberapa orang mungkin melihat manfaat, tetapi sebagian besar tidak akan.". Anda'll pasti melihat proyek-proyek lain di 64 bit, tetapi jika pondasi mendapat banyak tidak layak (imo) flack, mereka mungkin tidak't dan seharusnya't (imo). Menciptakan dan memelihara terpisah 64 bit cabang isn't kecil usaha, dan jujur, hanya doesn't tampak layak.

Komentar (18)

It's dicatat bahwa situasi yang berbeda untuk ARM dan Intel/AMD. Yang's karena beralih ke x86_64 juga digunakan sebagai kesempatan untuk memperbarui buruk-penuaan arsitektur, pada dasarnya lumpuh dengan hanya memiliki 8 tujuan umum register — dan dua kali lipat dalam mode 64-bit. Jadi, beralih Intel/AMD sistem 64-bit mode juga berarti memungkinkan real-fitur yang membuat perbedaan yang signifikan dalam kinerja.

LENGAN doesn't memiliki masalah ini untuk mulai dengan (meskipun AArch64 menambahkan register, 32-bit arsitektur weren't kelaparan bagi mereka), sehingga manfaat yang pada dasarnya lebih langsung-addressable memory dan asli big integer dukungan — cara yang kurang besar, dan mungkin menetral oleh negatifnya (lebih banyak memori yang digunakan untuk segala sesuatu).

(Sebagai samping, untuk alasan ini, telah ada beberapa pekerjaan dalam menciptakan sebuah "x32" abi untuk Intel/AMD Linux, menjaga CPU tambahan tetapi menggunakan 32-bit pointer.)

Komentar (3)

Saya yakin sudah ada orang-orang yang menjalankan Debian Aarch64 (ARMv8) pada Pi 3; itu pasti tidak akan sulit bagi banyak orang (lihat di sini untuk beberapa petunjuk tentang itu mungkin bekerja)1 meskipun untuk paling pengguna itu mungkin sedikit peregangan.

Namun, jika Raspbian dan/atau Yayasan don't keluar dengan versi 64-bit, anda akan semakin melihat orang-orang dengan blog, dll., menjelaskan bagaimana menjalankan satu dan tetap mendapatkan barang yang anda butuhkan.


Ada sekarang Fedora aarch64 release untuk Pi 3.


1. Akan ada beberapa komplikasi dengan 32-bit /opt/vc hal-hal, saya tidak yakin bagaimana diatasi yaitu; ada yang digunakan untuk menjadi 32-bit compat libs untuk x86-64 tapi Aarch64...mungkin tidak.

Komentar (4)

Sebagai bagian dari peluncuran publisitas saya melihat itu disebutkan bahwa salah satu yang menjadi perhatian adalah usaha yang diperlukan untuk mempertahankan dua kode terpisah basis (32 dan 64 bit). yang Adafruit PI3 Peluncuran video juga disebutkan bahwa pindah ke 64bit prosesor yang lebih tentang kecepatan clock meningkat chip baru yang ditawarkan dari sekitar menggunakan mode 64 bit.

Komentar (4)

64-bit pengalamatan dapat berguna bahkan jika anda don't memiliki lebih dari 1GB memori.

Hal ini memungkinkan anda untuk memory-map file yang besar, sehingga anda memiliki pointer dan biarkan OS melakukan I/O secara transparan. Hanya cara lain untuk melakukan I/O. Anda membutuhkan 64-bit pengalamatan untuk melakukan hal ini pada file-file besar.

Contoh lain di mana saya lihat ini dapat berguna adalah untuk memungkinkan proses untuk memiliki lebih dari 2GB ruang alamat, menggunakan ruang swap. Baru-baru ini saya punya masalah pada 32-bit NAS dengan banyak penyimpanan, dan rusak filesystem. Proses fsck kehabisan memori, bahkan dengan opsi caching diaktifkan. Menambahkan ruang swap tidak bisa memecahkan masalah, 32-bit address space adalah batas keras di sana. Jadi tidak ada cara untuk menjalankan fsck pada besar ini rusak filesystem dengan 32-bit biner. Dengan 64-bit biner dan beberapa ruang swap, itu akan dijalankan.

Komentar (0)

Menyikapi pernyataan bahwa 64 bit asli program yang lebih besar (lebih banyak memori untuk data dan pointer), dan bahwa tidak ada manfaat nyata untuk 64 vs. 32 bit OS pada ARMv8 dengan kurang dari 4GB RAM, saya ingin menyampaikan beberapa poin.

Ada beberapa perbedaan yang signifikan dalam cara hal-hal yang dilakukan di ARMv7 (dan sebelumnya) dan ARMv8, arsitektur, yang membuat ARMv8 pelaksanaan yang lebih efisien. Beberapa ini adalah yang lebih luas dari data internal jalan, beberapa adalah penghapusan dari kasus-kasus khusus, dan jauh lebih dalam pipa). Ini perubahan yang sama membuat ARMv8 lebih baik dalam menjalankan ARMv7 (32 bit) kode.

Native 64 bit aplikasi menggunakan 64 bit pointer dan 'size_t' adalah 64 bit, sehingga unsur-unsur menggunakan orang-orang yang mendapatkan lebih besar. Sisa data akan cenderung untuk tetap dengan ukuran yang sama. Signifikansi ini lebih kecil, namun, untuk ukuran gambar eksekusi.

Di mana 64 bit asli benar-benar bersinar (jika anda don't peduli tentang besar integer dan floating point barang) memiliki lebih besar ruang alamat virtual:

  • OS mampu membagi ruang alamat virtual menjadi lebih banyak dan bagian yang lebih besar, yang memungkinkan manajemen lebih mudah dari sumber daya bersama, lebih efisien konteks switch antara tingkat yang berbeda dari hak istimewa, dan sebagainya.
  • Jika anda've diaktifkan swapping, anda dapat menjalankan lebih banyak dan proses yang lebih besar, melebihi memori fisik batas (ini benar-benar di 32 bit juga, tapi anda're kurang terbatas di 64 bit)

Apakah OS saat ini mengambil keuntungan dari ini atau tidak, itu's akan membuat perbedaan sebagai mainstream bergerak menjauh dari 32 bit.

Saya pikir argumen terbaik untuk pindah ke native 64 bit AArch64 kernel adalah portabilitas: mainstream desktop telah pindah ke sebagian besar 64 bit prosesor, dan I'm melihat lebih banyak paket yang menganggap 64 bit, dan porting kode tersebut kembali ke 32 bit lebih sulit dari porting dari 32 ke 64 bit. Di user-space, anda're dapat menjalankan aplikasi 32 bit dan 64 bit aplikasi side-by-side, dengan asumsi anda telah menginstal multi-arch perpustakaan, sehingga hal ini tidak diperlukan untuk port 32 ke 64 bit di mana itu doesn't peduli. 64 bit OS hanya akan memberikan anda pilihan yang lebih besar dari perangkat lunak.

I'm tidak mengatakan bahwa memproduksi 64 bit kernel untuk Raspberry PI 3 mudah - ada perbedaan yang signifikan yang memerlukan perubahan pada tingkat rendah, tidak semua perangkat driver 64 bit bersih (terutama driver untuk LENGAN spesifik Gpu). Ini mungkin bahwa Raspberian akan tetap 32 bit OS, tapi saya percaya bahwa (dalam jangka panjang) itu adalah cupet.

Satu media boot (SD card, misalnya) dapat berisi kedua 64 dan 32 bit OS, dan sekunder boot perangkat lunak (u-boot, lengan-boot, dan lain-lain) dapat menentukan mana yang dimuat. Bagian yang lebih keras adalah userland-file sistem harus multi-arch, bahkan pada sistem 32 bit di mana 64 bit hal-hal yang akan sia-sia. Saya akan mengatasi hal ini dengan script atau aplikasi yang bisa dijalankan setelah boot awal untuk menghapus yang tidak diperlukan perpustakaan dan program executable pada 32 bit hanya sistem.

Komentar (1)

Ada jawaban menutupi masalah dari 64-bit lengkungan yang sangat baik, tapi saya tidak melihat banyak menyatakan keuntungan dari upgrade. Jadi, di sini's dua saya baru-baru ini menemukan:

  • Ketika menangani PHP cap waktu Unix, integer ukuran 32-bit arch menetapkan batas atas pada tanggal, sehingga mereka tidak dapat melampaui hari tertentu dalam 2038. Saya berharap ini adalah masalah untuk semua bahasa yang menangani cap waktu. (Untungnya, kebanyakan upload penanganan subsistem yang tidak menggunakan cap waktu Unix, seperti PHP's DateTime, yang dirancang khusus untuk tidak dibatasi oleh masalah ini bahkan lebih tua Cpu).
  • Mongo terbatas ke database di bawah 2G dalam ukuran pada lengkungan ini, dan 32-bit akan segera menjadi usang. Dari manual:

Mulai di MongoDB 3.2, 32-bit biner yang usang dan akan tersedia dalam rilis mendatang.

Meskipun 32-bit yang ada untuk Linux dan Windows, mereka tidak cocok untuk penggunaan produksi. 32-bit juga tidak mendukung WiredTiger mesin penyimpanan.

Komentar (4)

Pikiran saya ini: Meskipun aku don't tahu persis bagaimana sebuah prosesor ARM alamat memori, saya dapat memberitahu anda ini sebelumnya beberapa arsitektur CPU saya diprogram pada (SPARC/Alpha/i386/AMD64/X86_64): ketika menggunakan memori bersama dan berbicara dengan "nyata" alamat virtual pointer, pindah ke 64bit tidak sepele. Meskipun memcpy melakukan apa yang's seharusnya dilakukan, yang anda butuhkan untuk mengambil ke pertimbangan bahwa di 64 bit-bit data disimpan seperti ini (sedikit mundur):

HGFEDCBA
HGFEDCBA
HGFEDCBA

namun di 32 bit ini terlihat seperti ini:

ABCD
ABCD
ABCD

Jadi, di 32bits ketika anda menyimpan mengatakan jpeg di RAM, anda dapat membaca header byte, atau melakukan deteksi tepi, tanpa masalah secara linear *mengatakan dengan pergi byte dengan byte ke depan. Tapi dalam arsitektur 64bit perubahan ini:

32bit:

for (i=0; i< img_length/4; i++) 
{ 
    address=shm_start+i; 
    for (c=0; c< 4; c++) 
    { 
        byte=((*address >> c) & 15) 
    } 
}

64bit:

for (i=-; i< img_length/8; i++) 
{ 
    address=shm_start+i; 
    for (c=7; c>=0; c--) 
    { 
        byte=((*address >> c) & 15) 
    } 
}
Komentar (2)