Jalankan komputer tanpa RAM? [duplikat]

14

Saya membaca tentang waktu pengambilan CPU , di mana saya menemukan bahwa CPU membutuhkan waktu jauh lebih sedikit untuk mengakses data dari RAM dibandingkan dengan mengakses hard disk, dan bahwa RAM hadir untuk menyimpan informasi dan data dari program pelaksana.

Lalu saya bertanya-tanya tentang apa yang akan terjadi ketika kita hanya menggunakan hard disk tetapi tidak ada RAM?

akash ujjwal
sumber
1
Serupa: superuser.com/q/805340/334004
Cornelius
1
@Ornelius terima kasih atas balasan Anda, saya akan memeriksanya :)
akash ujjwal
12
Yang terjadi adalah beberapa bip kemudian layar menjadi kosong.
arch-abit
1
Pertanyaan saya adalah, bisakah saya setidaknya menguji apakah kartu grafis berfungsi? Apakah ada video atau monitor yang berfungsi minimal?
kerajinan Marshal

Jawaban:

27

Pada titik tertentu ini masuk ke pertanyaan apa yang bahkan dianggap sebagai "RAM." Ada banyak CPU dan mikrokontroler yang memiliki banyak memori on-chip untuk menjalankan sistem operasi kecil tanpa terpasang chip RAM terpisah. Bahkan, ini sebenarnya relatif umum di dunia sistem embedded. Jadi, jika Anda hanya merujuk untuk tidak memiliki chip RAM terpisah terpasang, maka, ya, Anda dapat melakukannya dengan banyak chip saat ini, terutama yang dirancang untuk dunia tertanam. Saya sudah melakukannya sendiri di tempat kerja. Namun, karena satu-satunya perbedaan nyata antara memori on-chip yang dapat dialamatkan dan chip RAM yang terpisah hanyalah lokasi (dan, tentu saja, latensi), sangat masuk akal untuk mempertimbangkan memori on-chip sebagai RAM. Jika Anda menghitungnya sebagai RAM, maka jumlah saat ini,

Jika Anda mengacu pada PC normal, tidak, Anda tidak dapat menjalankannya tanpa terpasang RAM terpisah, tetapi itu hanya karena BIOS dirancang untuk tidak mencoba melakukan boot tanpa RAM terpasang (yang, pada gilirannya, karena semua sistem operasi PC modern membutuhkan RAM untuk dijalankan, terutama karena mesin x86 biasanya tidak memungkinkan Anda untuk secara langsung mengatasi memori on-chip; itu hanya digunakan sebagai cache.)

Akhirnya, seperti yang dikatakan Zeiss, tidak ada alasan teoretis bahwa Anda tidak dapat mendesain komputer untuk berjalan tanpa RAM sama sekali, selain dari beberapa register. RAM ada semata-mata karena lebih murah daripada memori on-chip dan jauh lebih cepat daripada disk. Komputer modern memiliki hierarki memori yang berkisar dari besar, tetapi lambat hingga sangat cepat, tetapi kecil. Hirarki normal adalah sesuatu seperti ini:

  • Register - Sangat cepat (dapat dioperasikan dengan instruksi CPU secara langsung, umumnya tanpa latensi tambahan), tetapi biasanya sangat kecil (core prosesor x86 64-bit hanya memiliki 16 register keperluan umum, misalnya, dengan masing-masing dapat menyimpan nomor 64-bit tunggal.) Ukuran register umumnya kecil karena register sangat mahal per byte.
  • Cache CPU - Masih sangat cepat (sering 1-2 siklus latensi) dan secara signifikan lebih besar dari register, tetapi masih jauh lebih kecil (dan jauh lebih cepat) daripada DRAM normal. Cache CPU juga jauh lebih mahal per byte dari DRAM, itulah mengapa biasanya jauh lebih kecil. Juga, banyak CPU sebenarnya memiliki hierarki bahkan di dalam cache. Mereka biasanya memiliki cache yang lebih kecil, lebih cepat (L1 dan L2) di samping cache yang lebih besar dan lebih lambat (L3.)
  • DRAM (apa yang oleh kebanyakan orang dianggap sebagai 'RAM') - Jauh lebih lambat daripada cache (latensi akses cenderung puluhan hingga ratusan siklus clock), tetapi jauh lebih murah per byte dan, oleh karena itu, biasanya jauh lebih besar daripada cache. DRAM masih, namun beberapa kali lebih cepat daripada akses disk (biasanya ratusan hingga ribuan kali lebih cepat.)
  • Disk - Ini, sekali lagi, jauh lebih lambat dari DRAM, tetapi juga umumnya jauh lebih murah per byte dan, karenanya, jauh lebih besar. Selain itu, disk biasanya tidak mudah menguap, artinya mereka memungkinkan data untuk disimpan bahkan setelah proses berakhir (serta setelah komputer dihidupkan ulang.)

Perhatikan bahwa seluruh alasan hierarki memori hanya ekonomis. Tidak ada alasan teoritis (setidaknya dalam ilmu komputer, setidaknya) mengapa kami tidak dapat memiliki satu terabyte register yang tidak mudah menguap pada CPU die. Masalahnya adalah itu akan menjadi sangat sulit dan mahal untuk dibangun. Memiliki hierarki yang berkisar dari sejumlah kecil memori yang sangat mahal hingga sejumlah besar memori yang murah memungkinkan kami untuk mempertahankan kecepatan cepat dengan biaya yang masuk akal.

reirab
sumber
sekarang terakhir saya mendapatkan apa yang saya butuhkan. Anda menjawab Persis apa aspek saya. Terima kasih banyak :)
akash ujjwal
Sebenarnya, alasan PC tidak bisa boot tanpa RAM adalah BIOS, jika kode BIOS tidak dapat menemukan alamat relokasi dalam RAM yang dibatalkan. Yang akan Anda dengar hanyalah dengungan catu daya dan suara kipas dan mungkin disk berputar - tetapi komputer pada dasarnya mati otak. CPU tidak pernah mendapatkan kesempatan untuk membuat semuanya berfungsi. Jadi ya, RAM cukup penting.
arch-abit
@ arch-abit ya itu benar, tetapi apakah RAM adalah komponen yang diperlukan untuk menjalankan komputer?
akash ujjwal
2
Selain apa yang dikatakan @reirab adalah mungkin untuk menjalankan 'PC' tanpa DRAM dalam arti mengeksekusi instruksi - ini adalah mode di mana sistem beroperasi sebelum pengontrol DRAM diinisialisasi (dilakukan oleh BIOS / EFI / Coreboot dll). Namun tidak mungkin Anda dapat melakukan sesuatu yang bermanfaat karena sebagian besar komponen mungkin menggunakan DMA .
Maciej Piechotka
1
Register cpu 32 bit x86 hanya 32 bit, bukan 64 bit, dan 64 bit x86 CPU memiliki 32 bit, bukan 8 bit.
psusi
23

Secara teori akan mungkin untuk merancang komputer untuk beroperasi dengan sangat sedikit (beberapa nilai register) atau tanpa RAM (lihat definisi mesin Turing - yang sebenarnya dapat dibangun dalam implementasi Conway's Life yang sesuai / besar dan cepat) simulasi).

Alasan mengapa semua komputer dunia nyata menggunakan RAM adalah, pertama, historis: memori inti (prototipe untuk RAM, hanya semi-volatile) sangat mendahului penyimpanan massal seperti drum atau disk magnetik (meskipun itu datang setelah kartu punch dan pita kertas - yang pertama tanggal kembali, dalam bentuk primitif, ke 1801 (ya, awal abad ke-19; alat tenun Jacquard menggunakan kartu berlubang untuk secara otomatis menenun pola warna dekade kompleksitas yang sewenang-wenang bahkan sebelum Babbage Difference Engine atau tabulasi Hollerith); kedua , RAM (seperti memori inti), menjadi elektronik, jauh lebih cepat daripada perangkat apa pun yang bergantung pada pergerakan fisik media penyimpanan untuk menyajikan data ke mekanisme baca / tulis.

Sebuah sistem atau kompleksitas yang mirip dengan komputer Windows atau Linux modern yang berjalan tanpa RAM (mirip dengan mesin Turing sejati), akan membutuhkan berhari-hari hanya untuk memulai, dan berjam-jam untuk memperbarui layar untuk antarmuka grafis pada resolusi modern. Bahkan sistem operasi hanya teks yang sebanding dengan CP / M atau versi DOS awal akan membutuhkan waktu yang sangat lama untuk mencapai prompt perintah awal.

Zeiss Ikon
sumber
4
Saya pikir Anda mungkin dapat mempertimbangkan beberapa DSP (prosesor sinyal digital) dan mikroprosesor yang serupa untuk menjadi komputer yang berjalan tanpa RAM, karena mereka pada dasarnya melakukan perhitungan pada aliran data yang berkelanjutan.
jamesqf
1
Saya pikir estimasi Anda untuk kelambatan mesin "hanya memori virtual" agak berlebihan, tetapi pada prinsipnya benar.
leftaroundabout
1
Karena disk> 1.000.000 lebih lambat dari RAM, saya pikir perkiraannya, jika ada, di sisi rendah.
Dancrumb
2
@ Dancrumb Saya tidak yakin dari mana 1.000.000 (kali?) Anda berasal. DDR3 SDRAM dapat memberikan Anda pada urutan 10 GB / s , sedangkan HDD 7200 rpm pun dapat memberikan Anda sekuensial sekitar 100 MB / s (0,1 GB / s). Itu faktor 100; tentu signifikan, tetapi jauh sekali dari 1.000.000 kali. Di mana RAM sangat mengungguli HDD sedang mencari latensi, tetapi Anda dapat sangat meringankannya dengan menggunakan SSD. DDR3 memiliki latensi di wilayah 10 ns, dan SSD cepat mungkin memiliki latensi di wilayah 10.000 ns (100k IOPS), dengan faktor 1.000; masih jauh dari 1.000.000.
CVn
1
@PeterCordes Diedit sehingga sepertinya saya tidak mengklaim Win / Linux dapat berjalan tanpa RAM.
Zeiss Ikon
10

Anda bisa, karena ketika CPU x86 dimulai, cache L2 awalnya adalah SRAM sebelum digunakan sebagai cache. Jadi Anda dapat menulis BIOS Anda sendiri agar tidak menginisialisasi RAM dan hanya menggunakan sejumlah kecil SRAM di dalam CPU sebagai RAM daripada L2 / L3 cache.

Baca saja panduan BIOS dari produsen CPU.

Avlin
sumber
4
+1 untuk menyatakan itu. Bahkan, setiap sistem x86 (komputer) memulai "tanpa menggunakan ram". Kode Bios pertama kali mendeteksi jika ada ram, dan berbunyi bip jika tidak ada. Kode ini dapat berjalan tanpa ram;) (ofc tidak banyak yang dapat dilakukan tanpa ram, pasti register tidak akan cukup untuk menangani HDD dan menggunakannya "sebagai ram")
Sebi
10

SEMUA CPU modern, standar, untuk keperluan umum secara fundamental berfungsi seperti ini:

  • CPU mengelola register yang menunjuk pada ruang alamatnya ke instruksi berikutnya
  • CPU mengambil apa pun yang ada di ruang alamat itu dan penambahan yang mendaftar
  • Jika instruksi membutuhkan informasi tambahan, seperti alamat tujuan atau operan lainnya, itu juga diambil
  • CPU menjalankan instruksi
  • Jika instruksi adalah lompatan, panggilan, kembali, kembali-dari-interupsi atau cabang, itu dapat mengubah register yang menunjuk ke instruksi berikutnya.
  • Ulang

CPU mengambil apa pun yang ada di ruang alamat itu dan penambahan yang mendaftar

Apa yang bisa "hidup" di ruang alamat?

  • Tidak ada (dapat mengembalikan nol, data acak, atau menyebabkan CPU terkunci)
  • RAM (RAM motherboard, RAM dari perangkat PCI seperti adaptor grafis, dll.)
  • ROM
  • Register perangkat I / O (ini termasuk "perangkat I / O internal" seperti APIC lokal CPU)
  • CPU modern memungkinkan "cache sebagai RAM" sehingga sebagian dari cache CPU dapat muncul di ruang alamat

Perhatikan "hard disk" tidak ada dalam daftar itu. Hard disk tidak terhubung langsung ke CPU. Data datang dan keluar dari hard disk melalui perangkat I / O (adaptor host SATA) yang terhubung ke CPU.

Perangkat I / O menggunakan DMA untuk memuat / menyimpan data ke / dari hard disk. Ini berarti perangkat I / O langsung membaca / menulis RAM itu sendiri - tanpa intervensi CPU - dan juga bergantung pada RAM yang ada. Tetapi jika data belum dimuat ke dalam RAM oleh perangkat I / O CPU tidak memiliki kesempatan untuk melihatnya.

Jadi, Anda tidak dapat meminta CPU mengambil instruksi langsung dari hard disk.


Apa yang terjadi selama kesalahan halaman adalah:

  • CPU mencoba mengakses halaman memori yang ditandai sebagai bertukar di tabel halaman CPU lokal (yang selalu ada dalam RAM.)
  • Akses ini menyebabkan pengecualian kesalahan halaman di CPU.
  • CPU, sekarang dalam mode kernel, melihat ke halaman yang coba diakses oleh proses lain.
  • Kernel memperhatikan proses pengguna mencoba mengakses halaman yang ditukar, dan meminta proses I / O normal untuk menukar halaman itu kembali dari disk. Ini adalah proses yang sama yang akan digunakan saat memuat / menyimpan data lain dari disk. Itu tidak berbeda hanya karena CPU paging dalam memori yang ditukar.
  • CPU kemudian menyerahkan kembali kontrol ke proses yang terputus, yang berlanjut seolah-olah tidak ada yang terjadi.

Jadi CPU perlu mendapatkan data dari disk karena memori ditukar tidak berbeda.

LawrenceC
sumber
2
+1karena menjadi satu-satunya jawaban di sini yang berurusan dengan masalah nyata , tidak hanya dari apa yang akan terjadi , tetapi juga mengapa .
@ultrasawblade mengapa cpu tidak memiliki kesempatan untuk melihat data, bahkan jika permintaan cpu untuk halaman (info) dan jika tidak tersedia di ram (memori utama), maka ada kesalahan halaman terjadi, maka permintaan cpu ke hardisk untuk data yang diinginkan. Itu berarti cpu terakhir harus pergi ke hard disk untuk informasi yang diperlukan.
akash ujjwal
2
Lihat hasil edit. Paging kernel dalam memori yang ditukar tidak berbeda dari pemuatan program atau pembacaan / penulisan program ke disk. Itu hanya terjadi di dalam kernel dan di belakang layar dari proses pengguna, tetapi tidak di belakang layar dari kernel.
LawrenceC
Perhatikan bahwa x86 setidaknya dapat menggunakan cache sebagai RAM dengan mode tanpa isi, tetapi kemudian Anda berada di kapal yang sama dengan mikrokontroler yang datang dengan beberapa RAM bawaan. Menjalankan CPU dengan hanya ROM dan tidak ada ruang alamat yang dapat ditulis masuk akal (jika semua negara Anda cocok dengan register, dan perhatikan bahwa CPU x86 terbaru memiliki tiga puluh dua register vektor ZMM 512b ...) Tetapi sepakat bahwa itu tidak masuk akal tanpa ruang alamat yang dapat dibaca untuk kode (dan GDT / LDT / IDT dan tabel lainnya untuk x86).
Peter Cordes
7

Komputer pribadi membutuhkan RAM untuk dijalankan. Setiap aplikasi yang diluncurkan dari harddisk akan disalin ke RAM terlebih dahulu sebelum dijalankan.

Jadi jika Anda tidak memiliki RAM di komputer Anda, komputer Anda tidak akan mulai, mungkin memberi Anda beberapa bip peringatan untuk memberi tahu Anda bahwa tidak ada RAM yang terpasang.

LPChip
sumber
5
Kemudian Anda mengetuk dahi Anda dan berkata, "Seharusnya saya tidak mencoba memasang RAM-stick ini di lingkungan berkarpet dengan kelembaban kurang dari 10%, pada 27 Desember di belahan bumi utara?" Iya?
arch-abit
@LPChip mengapa disimpan untuk Ram apa tujuan utamanya. Untuk membuat sistem lebih cepat atau mengurangi waktu akses, ada cache bawaan untuk melakukannya. Apakah saya benar atau salah?
akash ujjwal
1
RAM adalah penyimpanan memori yang cepat, akses disk lambat, penyimpanan memori non-volatile dan cache CPU ada karena alasan lain.
Fiasco Labs
1
@ Kegagalan Sebenarnya, cache CPU ada untuk alasan yang sama seperti RAM: Ini penyimpanan yang sangat cepat. Ini jauh lebih cepat daripada RAM, tetapi lebih mahal per byte.
reirab
Dan komputer tidak akan berjalan mandiri di atasnya, karenanya "alasan lain"
Fiasco Labs
5

Komputer tidak akan berjalan. RAM adalah bagian penting dari pos sukses dari motherboard. Ketika RAM tidak ada atau rusak, banyak motherboard biasanya memberikan kode bip untuk menunjukkan di mana harus mencari pemecahan masalah.

Carl B
sumber
Ya, itu adalah cincin logam kecil yang akan dimagnetisasi / didemagnetisasi. en.wikipedia.org/wiki/Magnetic-core_memory (Sebagai balasan atas komentar tentang komputer tabung vakum lama yang telah dihapus)
Fiasco Labs
2

Sebenarnya Anda dapat setidaknya dalam dua kasus menjalankan komputer tanpa apa yang secara teknis disebut sebagai RAM

  1. "Komputer" mekanis lama pertama (konstruksi Konrad Zuse dan komputer Charles Babbage adalah perangkat mekanis tanpa RAM yang disebut komputer)

  2. Komputer modern tanpa RAM dan hanya prosesor (chip) dengan register . Dalam kebanyakan kasus Anda memiliki SRAM (memori cache) pada prosesor tetapi memori komputer tercepat disebut register yang terletak pada chip, dan secara teknis register pada chip bukan RAM.

Niklas
sumber
1
Terima kasih atas jawaban ini - pertama kali saya ingat pernah mendengar tentang Zuse dan komputer elektromekanis awalnya (meskipun bacaan paling awal yang saya ingat tentang komputer selalu berbicara tentang "relay" sebagai unit switching, semua komputer awal lainnya tampaknya telah menggunakan tabung vakum ).
Zeiss Ikon
1

Itu tidak akan berjalan. Motherboard kemungkinan besar akan berbunyi bip dengan cara yang tidak biasa dan dimatikan. Jika Anda tidak memiliki RAM yang cukup, bahkan 128MB untuk Windows XP, itu akan menolak untuk menginstal (sebenarnya mencoba ini dengan komputer lama; salah satu chip tidak ditempatkan dengan benar). Jadi, dengan pengaturan saat ini tidak mungkin. Bahkan jika Anda dapat menonaktifkan pemeriksaan motherboard, CPU tidak dapat membaca data langsung dari hard disk dan membutuhkan RAM untuk setiap operasi.

Saya kira, secara teori itu mungkin untuk membangun mesin yang menggunakan sedikit atau tidak ada RAM, tetapi itu tidak efisien.

Luke
sumber