Apakah komputer tanpa RAM, tetapi dengan disk, setara dengan komputer dengan RAM?

18

Memori digunakan untuk banyak hal, seperti yang saya mengerti. Ini berfungsi sebagai disk-cache, dan berisi instruksi program, dan tumpukan & tumpukannya. Inilah eksperimen pemikiran. Jika seseorang tidak peduli dengan kecepatan atau waktu yang dibutuhkan komputer untuk melakukan pengerasan, berapa jumlah memori minimum yang dapat dimiliki seseorang, dengan asumsi seseorang memiliki disk yang sangat besar? Apakah mungkin untuk menghilangkan memori, dan hanya memiliki disk?

Disk-caching jelas tidak diperlukan. Jika kita mengatur ruang swap pada disk, program stack dan heap juga tidak memerlukan memori. Adakah yang membutuhkan memori untuk hadir?

Omong kosong
sumber
3
Apa ide di balik pertanyaan ini?
Yves Daoust
12
Tentukan "disk". Kami dengan cepat bergerak menuju dunia tanpa disk (Saya senang Terry Pratchett tidak harus menyaksikannya). Ini berarti bahwa semua penyimpanan akan menjadi semacam solid state atau lainnya, yang semacam menjawab pertanyaan Anda, meskipun mungkin sebaliknya.
Peter - Pasang kembali Monica
2
Memori adalah memori adalah memori
Édouard
8
Memori acak-addressable, sejauh pengetahuan saya, bukanlah persyaratan untuk komputer. Kaset dari mesin Turing tidak dialamatkan secara acak. Tidak ada yang menghalangi Anda untuk membaca / menulis hanya satu bit per blok jika Anda mau.
Édouard

Jawaban:

24

Tentu. Pada prinsipnya, mengingat perangkat keras yang sesuai, Anda bisa saja memiliki disk, dengan semua yang tersimpan pada disk. Setiap kali CPU melakukan instruksi memuat atau menyimpan, mungkin ada beberapa perangkat keras yang mengubahnya menjadi disk baca atau tulis. Ini akan sangat lambat: pada disk magnetik, setiap pencarian membutuhkan waktu sekitar 10 ms, sehingga Anda dapat melakukan sekitar 100 akses acak untuk membaca dan menulis per detik.

Beberapa sistem memetakan memori flash ke dalam ruang alamatnya. Memori flash menyediakan penyimpanan non-volatil (persisten). Jadi, dalam beberapa hal ini menyerupai apa yang Anda sebutkan - meskipun sistem tersebut biasanya juga memiliki RAM juga.

DW
sumber
6
@Malters membuat poin yang baik bahwa jika kita memodifikasi disk (atau lapisan perangkat keras tambahan di atasnya) untuk membuatnya seperti RAM, maka kita mungkin juga menyebutnya RAM. Masalahnya adalah pertanyaannya, "Apakah mungkin untuk menghilangkan memori, dan hanya memiliki disk" terlalu samar. Apa yang kita maksud dengan memori dan disk? Apakah yang kami maksud adalah yang ada di PC desktop modern? Maka jawabannya adalah tidak. Apakah yang kami maksud adalah memori dan disk hipotetis? Kemudian dalam hal itu perbedaan antara keduanya kabur, dan pertanyaannya setara dengan "apakah mungkin untuk memiliki komputer dengan RAM berbasis mekanik?" .
JBentley
1
Jenis AS / 400 bekerja seperti ini. Ada Penyimpanan Tingkat-Tunggal, dan hanya Ruang Alamat tunggal. Disk dan memori digabungkan menjadi satu abstraksi penyimpanan tunggal oleh firmware platform, OS itu sendiri hanya melihat satu ruang penyimpanan datar tunggal. Tidak ada petunjuk, hanya referensi objek. Objek dipindahkan dari memori ke disk dan kembali secara transparan oleh firmware platform (BIOS dalam PC-berbicara, SLIC dalam AS / 400-spoke). Tidak ada bedanya dengan OS dan aplikasi jika Anda menghapus disk dan hanya memiliki RAM atau menghapus RAM dan hanya memiliki disk.
Jörg W Mittag
Juga saya pikir kehidupan HDD akan jauh lebih pendek. Dan bahkan lebih buruk untuk SSD. Kemungkinan besar alasan mengapa ponsel Android tidak memiliki swap
Suici Doga
16

Dalam hal komputabilitas, diketahui bahwa setiap komputer modern dapat disimulasikan oleh Mesin Turing yang penyimpanannya hanya satu, sel pita linier yang dapat ditulis. Dengan asumsi Anda dapat terus menambahkan jumlah penyimpanan disk yang tidak terbatas, komputer yang hanya memiliki hard drive sama kuatnya. Jadi yang pasti Anda bisa membuat komputer tanpa memori.

Tentu saja, tidak ada hard drive "ruang tak terbatas", tetapi juga tidak ada RAM tanpa batas.

Ada sejumlah masalah praktis, misalnya, Anda akan memerlukan konvensi untuk memetakan area dan alamat yang berbeda pada disk, sistem operasi yang menulis ke disk untuk penyimpanan perantara dan alamat disk yang dikelola. Pada kenyataannya, Anda akan berakhir dengan mensimulasikan RAM pada hard drive Anda.

Ya ampun
sumber
14

Pertanyaannya bukan murni akademis. Ini adalah masalah catatan sejarah bahwa salah satu komputer yang diproduksi secara komersial paling awal [maaf, saya tidak ingat yang begitu saja] tidak memiliki RAM - semua program dijalankan dengan mengambil instruksi langsung dari drum magnet [silinder yang berputar dengan permukaan luar yang dapat magnet (cakram datang kemudian)]. Itu relatif lambat, tetapi jauh lebih murah daripada banyak kompetisi. [Ini adalah jalan kembali di hari-hari 'tabung']

Menariknya, ia datang dengan alat yang sekarang sudah usang yang dikenal sebagai 'assembler mengoptimalkan' - yaitu assembler tidak hanya menghasilkan instruksi mesin, itu menuliskannya ke drum non-berturut-turut sehingga untuk meminimalkan, untuk setiap instruksi, jumlah waktu menunggu drum diputar ke yang berikutnya.

PMar
sumber
3
Anda mungkin memikirkan Stantec Zebra - archive.computerhistory.org/resources/text/Standard/… . Mereka masih memiliki satu di departemen CS ketika saya pergi ke universitas pada tahun 1967.
David Marshall
3
Sebenarnya, saya pikir saya mungkin telah memikirkan IBM 1408.
PMar
8
Lihat juga Story of Mel ( catb.org/jargon/html/story-of-mel.html ) yang berisi tentang seorang programmer yang bekerja pada Royal McBee LPG-30, yang memiliki memori drum.
db48x
@ db48x: Saya lupa betapa kerennya cerita itu. Saya mungkin belum membacanya selama 10 tahun.
Peter Cordes
7

Tidak. Disk drive tidak dialamatkan secara acak seperti RAM. Sebaliknya mereka memblokir perangkat penyimpanan. Anda tidak dapat membaca atau menulis satu byte pun darinya. Dan CPU Anda tidak dapat membaca seluruh sektor sekaligus, mereka membutuhkan akses acak. Sistem operasi menyembunyikan tingkat detail ini dari Anda, tetapi mereka melakukannya dengan membaca seluruh sctor ke dalam RAM, memodifikasinya, dan menuliskannya kembali.

Akibatnya, Anda memerlukan satu blok penyimpanan akses acak. Ini bisa menjadi cache CPU, yang terbuat dari SRAM (jenis RAM cepat).

Ini bukan hanya disk. Memori flash pada dasarnya adalah desain yang dibangun dari balok, yang merupakan kunci dari harganya yang rendah. Bahkan memiliki blok yang jauh lebih besar dari sektor disk normal, tetapi menggunakan RAM secara internal untuk menyembunyikannya dari OS.

Anda dapat membuat penyimpanan persisten yang langsung dapat digunakan oleh CPU. Penyimpanan EEPROM akan jatuh dalam kategori ini (Memori "Read-Only" yang Dapat Diprogram Secara Elektronik - meskipun "Read-Optimized" akan menjadi deskripsi yang sebenarnya lebih baik).

MSalters
sumber
5
Saya pikir "Tidak" Anda harus "Ya, tetapi itu akan memerlukan disk yang dibuat khusus".
Taemyr
3
Anda tentu bisa membaca byte, pada keduanya. Apa yang tidak dapat Anda lakukan adalah menulis satu byte, karena menulis memerlukan seluruh blok penulisan sekaligus. Namun pada prinsipnya tidak ada alasan mengapa Anda tidak dapat memodifikasi blok dengan menyalin data yang tidak dimodifikasi dari blok asli ke dalam blok baru, menulis data baru jika diperlukan, dan kemudian menyalinnya kembali ke blok asli. Anda akan memakai disk Anda dengan cepat, tapi itu tidak bisa dihindari dari pertanyaan OP.
Graham
3
Dan "pemblokiran" dilakukan untuk penggunaan ruang disk fisik yang efisien: Anda membutuhkan ruang di sekitar setiap data "nyata" untuk mengidentifikasi blok, menyediakan ruang "penjaga" di antara blok, dll. Tidak ada alasan teknis mengapa blok tidak dapat menjadi satu. byte panjang (tetapi kecepatan akan turun lebih jauh seperti kapasitas).
TripeHound
6
Sebenarnya, bahkan RAM saat ini tidak benar - benar byte-addressable - DDR3 bekerja dalam semburan dan ukuran baca / tulis minimum adalah 8 kata 64-bit (yaitu 64 byte); Saya bukan ahli, tetapi saya berani bertaruh bahwa akses yang selaras juga diperlukan. Semua ini tidak begitu berbeda dengan disk lama, di mana ukuran blok berada di urutan 512 byte, jadi saya akan mengatakan bahwa perbedaan ini sebagian besar historis, garisnya benar-benar kabur.
Matteo Italia
1
(juga, tidak ada yang menghentikan Anda untuk menggunakan seluruh blok - ukuran apa pun itu - hanya untuk menahan satu byte - sedikit tidak efisien tetapi selama saya bukan orang yang membayar disk itu ok)
Matteo Italia
1

Ketika Anda menggunakan kehabisan memori virtual dan perlu menangani kesalahan halaman, maka setidaknya handler pengecualian menangani kesalahan halaman, pengandar disk yang membaca data dari hard drive dan pertama menulis halaman kotor ke disk, dan tabel halaman perlu berada di RAM sepanjang waktu. Karena jika mereka tidak dalam RAM, Anda tidak dapat menukar mereka kembali ke RAM. Plus Anda membutuhkan ruang untuk setidaknya satu halaman RAM.

Jika Anda memiliki CPU seperti Xeon 12 inti yang masif dengan memori cache 30 MB, dimungkinkan untuk memiliki sistem yang tidak memiliki RAM maupun hard drive, tetapi gunakan hanya memori cache. (Tidak yakin apakah itu benar-benar berfungsi atau jika karena alasan tertentu RAM diperlukan).

gnasher729
sumber
IIRC, x86 memiliki mode di mana ia menggunakan cache internal sebagai memori utama. electronics.stackexchange.com/questions/16485/… memiliki beberapa detail. Saya pikir ini kadang-kadang disebut "no fill mode", yaitu CPU tidak mencoba untuk benar-benar mengisi baris cache dari memori eksternal. Ini mungkin menghalangi menggunakan DMA untuk I / O hard drive, karena "agen sistem" tidak dapat DMA ke dalam cache L3. Ini mungkin bekerja pada Skylake dengan L4 eDRAM, karena itu diatur sebagai cache sisi memori (tidak seperti Broadwell) yang dapat men-cache semuanya , termasuk DMA. Diprogram-IO masih akan bekerja untuk disk.
Peter Cordes
Tentu saja, pada saat itu Anda menjalankan System-on-Chip dengan 128MiB RAM, yang merupakan jumlah yang layak 15 tahun yang lalu. Dengan hanya cache L3 SRAM, itu masih 4 hingga 8MiB dalam chip desktop, yang mungkin cukup untuk Linux yang sangat sederhana, tetapi cukup mudah untuk DOS. Jika sebagian besar kode Anda dalam ROM, bukan RAM, maka itu tidak masalah.
Peter Cordes
1

Secara konseptual dimungkinkan. RAM hanyalah level caching. Ada banyak level caching di komputer modern (lihat CPU L1, L2, L3 .. cache, tentu saja Ram, area swap -yang merupakan bagian logis dari disk yang digunakan sebagai RAM ...-), jika Anda meletakkan atau tambahkan satu, mesin akan bekerja. Misalnya, live cd Ubuntu mungkin tidak menggunakan level caching HDD. Namun, saya tidak berpikir ada OS yang dapat mendukung tidak adanya level RAM.

Picci
sumber
1
Ini bukan OS, tetapi perangkat keras apa yang dirancang membutuhkan instruksi untuk menjadi ram (sebenarnya, dipetakan pada ruang alamat).
Ángel
@ Angel apakah benar-benar diperlukan dalam OS modern bahwa teks (instruksi), bss, stack dan heap dimasukkan ke dalam memori untuk dijalankan oleh suatu program? Tidak bisakah mereka berada di swap (disk)? Di Linux, katakanlah.
Tosh
1
Kita berbicara tentang ilmu komputer atau teknik komputer? Saya tidak tahu implementasi OS, tidak juga level perangkat keras, saya hanya mendasarkan pada tesis Church-Turing. Mungkin ini tidak mungkin menggunakan perangkat keras saat ini yang tersedia di pasar atau menggunakan OS yang ada, tetapi dapat dimungkinkan dalam skenario teoretis.
Picci
1
@Oh, ini bukan masalah OS tapi perangkat kerasnya. CPU Anda menjalankan satu instruksi yang terletak di alamat memori yang ditunjuk oleh penunjuk instruksi. Jadi hanya memiliki disk tidak akan berfungsi (tanpa mengubah perangkat keras Anda). Menjawab pertanyaan Anda, tidak semua bagian perlu dimuat ke dalam memori, bahkan OS hanya dapat memuatnya ketika program mencoba mengaksesnya. Sebagai contoh penghitung ekstrim, Anda dapat menjalankan program "dari disk" dengan menggunakan emulator yang membaca satu kata * pada satu waktu dari hdd. Tetapi Anda harus berada dalam memori, sehingga Anda masih membutuhkan beberapa RAM.
Ángel
1
Maaf, @Tosh: " emulator Anda harus ada dalam memori".
Ángel
-1

Secara teknis, RAM adalah memori volatile primer yang digunakan untuk meningkatkan kecepatan pemrosesan. Setelah daya hilang, data dalam memori utama hilang. Jika kita menggunakan disk, seperti yang Anda katakan, hanya disk dan bukan RAM, kita masih bisa menjalankan komputer kita tetapi akan ada lebih banyak baca tulis overhead sehingga sangat memperlambat sistem. Karenanya, kami menggunakan RAM.

Sanket Gupte
sumber
Selamat datang di CS.SE! Bisakah Anda membenarkan klaim Anda bahwa overhead baca-tulis yang lebih banyak meningkatkan kemungkinan sistem crash sering? Itu kedengarannya tidak benar bagi saya.
DW
Itu tergantung pada apa yang Anda gunakan. Seperti di unix / Linux ada konsep yang dikenal sebagai buffer cache. Dapat digunakan untuk menyimpan blok prefetch atau blok yang ditandai untuk penulisan yang tertunda. Namun di Windows atau Mac tidak ada konsep seperti itu. Karenanya, Anda harus mengakses blok yang diperlukan dari penyimpanan sekunder. Sekarang sambil menjalankan proses paralel overhead baca tulis akan meningkat dan kecepatan pemrosesan akan menurun secara konsekuen. Proses tidak akan dapat mengeksekusi sehingga memperlambat komputer sehingga mulai menggantung dan kemudian crash
Sanket Gupte
2
Kedengarannya seperti kesalahpahaman. Memperlambat komputer tidak berarti bahwa komputer akan macet.
DW