Bisakah kita menjalankan linux dalam sesuatu yang lebih cepat daripada RAM?

21

Ini mungkin pertanyaan konyol, dan mungkin merupakan hasil dari kesalahpahaman. Saya sedang mempelajari CPU sekarang, dan khususnya memori. Saya baru saja membaca tentang seberapa cepat SRAM dibandingkan DRAM tetapi lebih mahal. SRAM sangat mahal: Saya berbelanja sebentar dan menemukan kartu SRAM bertenaga baterai dengan 16 MB untuk sekitar $ 400.

Baru-baru ini seorang teman menyebutkan bahwa dia telah menjalankan puppy linux di RAM, dan itu cepat. Saya perhatikan, meskipun, inti linux yang mungil itu bahkan bisa lebih kecil ... sekecil 8 MB! Ini membuat saya berpikir: bisakah kita menjalankan linux di SRAM? Apakah pertanyaan itu terbentuk dengan baik?

Googling pertanyaan ini terbukti tidak efektif, tetapi mengajukan lebih banyak pertanyaan. Bisakah seseorang menjalankan linux di L3 Cache? Intel Core i7 dapat memiliki L3 Cache yang cukup besar untuk memenuhi 8MB ... tetapi apakah saya membuat kesalahan kategoris? Apa perbedaan antara ini dan linux 'tertanam'?

Itu pertanyaannya: bisakah kita menjalankan linux di SRAM atau L3 Cache? Adakah yang lebih cepat? Seberapa cepat kita bisa linux !?

z.

Ziggy
sumber
3
Linux tertanam sering dijalankan pada ram, atau memori tidak mudah menguap. Linux yang tertanam seringkali hanya dilucuti untuk berjalan pada perangkat keras tertentu saja, atau menggunakan beberapa opsi kernel yang kurang umum seperti latensi rendah
Journeyman Geek
2
Saya ingin tahu apakah ada kegunaan praktis untuk pertanyaan ini?
Robert Niestroj
4
+1 untuk menggunakan "linux" sebagai kata kerja (dalam kalimat terakhir)!
Vorac

Jawaban:

20

Linux, atau OS lainnya tidak tahu cara kerja RAM. Selama pengontrol memori dikonfigurasikan dengan benar (mis. Kecepatan refresh ditetapkan untuk non-SRAM) maka OS tidak peduli apakah itu berjalan pada memori dinamis polos (RAM polos), RAM mode halaman cepat (RAM RAM, dari C64-ish kali), mode data keluar Data (EDO), RAM sinkron (SDRAM), data SDRAM laju data ganda (DDR 1/2/3) apa pun.

Semua itu mendukung membaca dan menulis dari tempat-tempat acak. Semua akan bekerja.

Sekarang cache sedikit berbeda. Anda tidak harus menulis untuk itu agar kontennya berubah. Itu akan menghalangi. Namun, ini masih bisa digunakan. Saya tahu bahwa coreboot menggunakan cache sebagai semacam memori selama boot, sebelum pengontrol memori dikonfigurasi dengan benar. (Untuk perinciannya, lihat video dari perundingan coreboot selama FOSDEM 2011).

Jadi secara teori ya, Anda bisa menggunakannya.

TETAPI : Untuk tugas-tugas praktis, sistem dengan memori 'kecepatan sedang' 1 GB 'akan melakukan jauh lebih baik daripada dengan hanya beberapa MB memori super cepat. Yang berarti Anda memiliki tiga pilihan:

  1. Membangun hal-hal dengan cara 'murah' yang normal. Jika Anda membutuhkan lebih banyak kecepatan, tambahkan beberapa lusin komputer tambahan (semuanya dengan memori 'lambat')
  2. Atau bangun satu komputer dengan selusin kali harga dan secara signifikan kurang dari selusin kali kinerjanya.

Kecuali dalam kasus yang sangat jarang, yang terakhir tidak masuk akal.

Hennes
sumber
6
Banyak CPU mendukung mode "cache-as-RAM" melalui register spesifik model (MSR) CPU. Perhatikan juga bahwa SRAM mengkonsumsi lebih banyak daya daripada DRAM dan itu juga merupakan faktor desain. Jika cache CPU cukup besar atau kernel cukup kecil Anda dapat mengaktifkan mode cache-as-RAM ini dan tetap menjalankannya sepenuhnya dalam SRAM pada CPU. Anda akan memiliki jumlah RAM yang terbatas untuk menjalankan program, dll. karena AFAIK cache-as-RAM dan mode normal tidak akan bekerja secara bersamaan. Saya bisa salah tentang itu. Bahkan jika itu terjadi, sebagian besar kecepatan CPU hari ini adalah karena menggunakan cache L2, L3.
LawrenceC
@ Hennes apakah Linux hanya peduli dengan alamat memori (yang dipetakan)?
Alvin Wong
SDRAM adalah Synchronous D (ynamic) RAM, sedangkan SRAM adalah Static RAM. Saya tidak tahu yang mana yang Anda maksud untuk merujuk pada paragraf pertama dan saya tidak memiliki perwakilan untuk melakukan pengeditan "sepele", tetapi mungkin Anda bisa memperbaikinya? Selain itu, jawaban yang bagus.
CVn
Saya tidak keberatan mengklarifikasi, tetapi saya tidak yakin apa yang ingin Anda klarifikasi. Bisakah Anda menambahkannya dalam komentar dan saya akan mengeditnya.
Hennes
Ketika saya pertama kali membaca komentar ini saya melihat, "Linux, atau OS lain mati karena tidak tahu cara kerja RAM." Kerusakan Anda bagus: Saya pikir saya tidak punya ilusi bahwa ini akan menjadi "lebih baik". Saya hanya bertanya-tanya apakah itu bisa dilakukan.
Ziggy
8

Ya, Anda bisa, dan ini sebenarnya sudah dilakukan, secara otomatis. Bagian RAM yang paling sering digunakan disalin dalam cache. Jika total penggunaan RAM Anda lebih kecil dari ukuran cache Anda (seperti yang Anda duga), mekanisme caching yang ada akan menyalin semua yang ada dalam RAM.

Satu-satunya waktu ketika cache kemudian akan disalin kembali ke RAM normal adalah ketika PC beralih ke mode tidur S3. Ini diperlukan karena cache dimatikan dalam mode S3.

MSalters
sumber
1
Tidak semua dapat / akan disalin. Untuk struktur cache Intel / x86: Jika saya memiliki cache 256KiB dan 1024KiB saya dapat membaca alamat 0. Ini akan disimpan dalam cache di lokasi 0. Saya kemudian dapat membaca alamat 1, dan itu akan disimpan dalam cache di lokasi 1 Namun jika saya membaca alamat dari (256Kib +1) yang juga akan disimpan pada alamat 1 di cache. Cache menggunakan SRAM (tag) tambahan untuk menunjukkan yang mana dari keduanya yang disimpan. Ini berarti bahwa membaca dari banyak ukuran cache tidak akan bekerja dengan baik. (Perhatikan bahwa ini akan menjadi hal yang langka dan biasanya dapat diabaikan).
Hennes
Ini berwawasan luas! Mengapa saya dengan ceroboh memasukkan hal-hal yang saya pikir penting ke dalam L3 Cache ketika saya bisa membiarkan pasukan genius menentukan hal optimal yang harus dilakukan, dan memprogram CPU untuk melakukan hal optimal itu. Kanan?
Ziggy
3

Banyak CPU memungkinkan Cache untuk digunakan sebagai RAM. Sebagai contoh, sebagian besar CPU x86 yang lebih baru dapat mengonfigurasi wilayah tertentu sebagai writeback tanpa membaca isian melalui MTRR. Ini dapat digunakan untuk menunjuk wilayah ruang alamat sebagai - secara efektif - cache-as-ram.

Apakah ini akan bermanfaat adalah pertanyaan lain - itu akan mengunci kernel ke dalam RAM, tetapi pada saat yang sama akan mengurangi ukuran cache yang efektif. Mungkin juga ada efek samping (seperti harus menonaktifkan caching untuk seluruh sistem) yang akan membuat ini jauh lebih lambat.

Marc Lehmann
sumber
2

"bisakah kita menjalankan linux di L3 Cache?"

Tidak , ini tidak mungkin karena memori cache tidak secara langsung / linear ditangani.
Karena cara memori cache dirancang, registri Penghitung Program CPU (IP) tidak dapat menunjuk ke lokasi di memori cache.

Cache CPU memiliki "associativity" sendiri dan asosiasi ini menentukan cara "normal" memori "dipetakan" ke memori cache. Fitur ini dari memori cache adalah salah satu alasan memori cache sangat cepat.

Maks
sumber
1

"bisakah kita menjalankan linux di L3 Cache?"

Tidak, Cache ada di sana untuk pekerjaan tertentu dengan menyimpan data program dan instruksi yang siap ketika prosesor akan membutuhkannya. Anda tetap akan menemukan sistem operasi dalam cache karena terus-menerus digunakan. Memuat semua OS ke dalam cache tidak efisien karena Anda tidak menggunakan setiap jalur kode di kernel sekaligus.

"bisakah kita menjalankan linux di SRAM?"

Tentu saja Anda dapat menggunakan SRAM yang didukung baterai sebagai partisi boot, Anda kemudian dapat menggunakan flag eksekusi yang tertanam di tempatnya. Itu mungkin menyebabkan waktu boot lebih cepat dan operasi sedikit lebih cepat. Namun faktor utama adalah bandwidth antara L3 Cache dan di mana kernel berada (drive boot atau RAM).

"Apakah ada yang lebih cepat? Seberapa cepat kita bisa linux !?"

Umumnya produsen perangkat keras dan pengembang sistem operasi bekerja untuk membuat pemrosesan secepat mungkin. Namun pertanyaan Anda sangat umum, apakah Anda ingin mempercepat waktu boot, mengoptimalkan akses sistem file, mempercepat perhitungan atau yang lainnya. Setelah Anda memiliki pertanyaan yang lebih spesifik, Anda tentu dapat mulai menemukan hambatan dan menghapusnya. Drive SRAM Anda tentu akan mempercepat proses booting Anda. Mendapatkan ke GUI dalam 3 detik akan sangat keren untuk dilihat.

Phil Hannent
sumber
1

Kembali pada zaman 486es dulu ada mesin di mana semua RAM adalah SRAM. Ini kembali ketika 8MB banyak, tetapi tampaknya cocok dengan kendala Anda. Saya yakin 8MB SRAM jauh lebih murah sekarang daripada saat itu.

Jadi, Anda bisa menjalankan Linux di SRAM jika mesin dibuat seperti itu. Itu bukan teori; sudah dilakukan.

Tapi, tidak di Cache. Cache dihubungkan secara berbeda, dan yang lebih penting dialamatkan secara berbeda. Anda tidak dapat mengatasinya sama. Potongan dipetakan secara berbeda, bukan sebagai potongan yang berkelanjutan. Dan isinya belum tentu apa yang Anda lihat pada disk - chip Intel yang lebih baru melakukan semacam "kompilasi" Tepat waktu (lebih dari CISC => RISC-micro-op re-encoding) di mana mikro-op adalah hal-hal yang berakhir di cache. Singkatnya, apa yang ada dalam cache bukan program Anda, tetapi tampilan yang diubah, sehingga Anda tidak dapat menggunakannya sebagai representasi memori dari program Anda lagi.

Pertanyaannya adalah mengapa. Selain "karena saya bisa" tidak ada banyak alasan untuk ini. Sistem Cache memberi Anda manfaat kecepatan paling banyak dengan biaya lebih sedikit. Dan ingat biaya bukan hanya dolar .... SRAM membutuhkan lebih banyak transistor, yang berarti lebih banyak listrik.

Homolka yang kaya
sumber