RAMを搭載していないが、ディスクを搭載したコンピューターはRAMを搭載したコンピューターと同等ですか?


18

私が理解するように、メモリは多くのことに使用されます。ディスクキャッシュとして機能し、プログラムの命令とそのスタックとヒープが含まれています。これが思考実験です。コンピューターがクランチを実行するのにかかる速度や時間を気にしない場合、非常に大きなディスクがあると仮定して、最低限必要なメモリー量はどれくらいですか?メモリを廃止し、ディスクを用意することは可能ですか?

ディスクキャッシュは明らかに不要です。ディスクにスワップスペースを設定すると、プログラムスタックとヒープもメモリを必要としません。メモリの存在を必要とするものはありますか?



3
この質問の背後にある考え方は何ですか?
イヴダウスト16年

12
「ディスク」を定義します。私たちはすぐにディスクレスの世界に向かっています(テリー・プラチェットがそれを目撃する必要がないのはうれしいです)。これは、すべてのストレージが何らかのソリッドステートまたは別の状態になることを意味し、おそらく逆になりますが、質問に答えるようなものです。
ピーター-モニカの復活

2
メモリはメモリですメモリ
エドゥアール

8
ランダムアドレス可能なメモリは、私の知る限り、コンピューターの要件ではありません。チューリングマシンからのテープはランダムにアドレス指定できません。必要に応じて、ブロックごとに1ビットのみの読み取り/書き込みを妨げるものはありません。
エドゥアール

回答:


24

承知しました。原則として、適切なハードウェアがあれば、ディスクだけで、すべてをディスクに保存できます。CPUがロードまたはストア命令を実行するたびに、それをディスク読み取りまたは書き込みに変換するハードウェアが存在する可能性があります。非常に遅くなります。磁気ディスクでは、各シークに約10ミリ秒かかるため、1秒あたり約100回のランダムアクセスの読み取りと書き込みを行うことができます。

一部のシステムでは、フラッシュメモリがアドレス空間にマップされています。フラッシュメモリは、不揮発性(永続的)ストレージを提供します。したがって、いくつかの点でこれはあなたが言及したものに似ていますが、これらのシステムには通常RAMもあります。


6
@MSaltersは、ディスクを変更して(またはその上に追加のハードウェアを重ねて)RAMのようにする場合、単にRAMと呼ぶこともできます。問題は、「メモリをなくし、ディスクを用意することは可能という質問があいまいすぎることです。メモリとディスクとはどういう意味ですか?現代のデスクトップPCに存在するものを意味しますか?答えはノーです。仮想メモリとディスクを意味しますか?その場合、2つの違いはとにかくあいまいになり、質問は「機械ベースのRAMを搭載したコンピューターを使用することは可能ですか?」と同等です。
-JBentley

1
AS / 400は、このように機能します。シングルレベルストレージがあり、アドレススペースは1つだけです。ディスクとメモリは、プラットフォームファームウェアによって単一のストレージアブストラクションに結合され、OS自体は単一のフラットな統合ストレージスペースのみを認識します。ポインターはなく、オブジェクト参照のみがあります。オブジェクトはメモリからディスクに移動され、プラットフォームファームウェア(PCスピークのBIOS、AS / 400スピークのSLIC)によって透過的に戻されます。ディスクを取り外してRAMのみを搭載した場合、またはRAMを取り外してディスクのみを搭載した場合、OSおよびアプリケーションに違いはありません。
ヨルグWミットタグ

また、HDDの寿命はずっと短くなると思います。そしてさらに悪い可能性がSSD.Most Android携帯電話は、スワップを持っていない理由のために
Suiciドーガ

16

計算可能性の観点から、現代​​のすべてのコンピューターは、書き込み可能な単一の線形テープセルのみをストレージとするチューリングマシンによってシミュレートできることが知られています。無制限の量のディスクストレージを追加し続けることができると仮定すると、ハードドライブのみを搭載したコンピューターも同様に強力です。確かに、メモリのないコンピュータを作ることができます。

もちろん、「無制限のスペース」のハードドライブはありませんが、無制限のRAMもありません。

実用的な問題がいくつかあります。たとえば、ディスク上の異なる領域とアドレス、中間ストレージと管理対象ディスクアドレスのためにディスクに書き込むオペレーティングシステムをマッピングするための規則が必要になります。実際には、ハードドライブ上のRAMを厳密にシミュレートすることになります。


14

質問は純粋にアカデミックではありません。最初の市販のコンピューターの1つ[申し訳ありませんが、どちらのオフハンドがRAMを搭載していなかったか覚えていません-すべてのプログラムは、磁気ドラム[回転シリンダー]から直接命令をフェッチして実行されました。外表面が磁化可能(ディスクは後で来ました)]。それは比較的遅いものでしたが、多くの競合製品よりもはるかに安価でした。[これは「チューブ」の時代に遡ります]

興味深いことに、「最適化アセンブラ」として知られる現在廃止されたツールが付属しています。つまり、アセンブラは機械命令を生成するだけでなく、ドラムに非連続的に書き込み、命令ごとに時間を最小限に抑えました。ドラムが次に回転するのを待っています。


3
あなたはStantecゼブラのことを考えてすることができる- archive.computerhistory.org/resources/text/Standard/...を。私が1967
デビッドマーシャル

3
実際、IBM 1408について考えていたのではないかと思います
。– PMar

8
Story of Mel(catb.org/jargon/html/story-of-mel.html)も参照してください。これは、ドラムメモリーを備えたRoyal McBee LPG-30に取り組んだプログラマーに関するものです。
db48x

@ db48x:その話がいかにクールだったか忘れていました。私はおそらく10年間それを読んでいません。
ピーターコーデス

7

いいえ。ディスクドライブはRAMのようにランダムアドレス指定できません。代わりに、ブロックストレージデバイスです。それらからバイトを読み書きすることはできません。また、CPUはセクター全体を一度に読み取ることができないため、そのランダムアクセスが必要です。オペレーティングシステムは、このレベルの詳細をあなたから隠しますが、それは俳優全体をRAMに読み込み、それを修正し、それを書き戻すことによってそうします。

その結果、1ブロックのランダムアクセスストレージが必要になります。これは、可能性 SRAM(RAMの速いタイプ)から作られた、にもかかわらず、CPUキャッシュすること。

ディスクだけではありません。フラッシュメモリは、設計上、ブロックで構築されているため、低価格の鍵となります。通常のディスクセクタよりもはるかに大きなブロックもありますが、内部的にRAMを使用してOSから隠します。

CPUが直接使用できる永続ストレージを作成できます。EEPROMストレージはこのカテゴリに分類されます(電子的に消去可能なプログラム可能な「読み取り専用」メモリ-「読み取り最適化」の方が実際には良い説明です)。


5
あなたの「いいえ」は「はい、しかしカスタムビルドされたディスクが必要だ」と思うでしょう
-Taemyr

3
確かに、両方で1バイトを読むことができます。書き込みはブロック全体を一度に書き込む必要があるため、1バイトを書き込むことはできません。ただし、原則として、変更されていないデータを元のブロックから新しいブロックにコピーし、必要に応じて代わりに新しいデータを書き込んでから元のブロックにコピーしてブロックを変更できない理由はありません。ディスクはすぐに使い果たしてしまいますが、とにかくOPの質問からは避けられません。
グラハム

3
そして、「ブロッキング」が物理ディスクスペースの効率的な利用のために行われます:あなたはブロックを識別するために「本当の」データの各部分の周りのスペースを必要とする、などのブロックの間に「ガード」のスペースを提供一切ありません技術的なブロックが1であることができなかった理由は、バイト長(ただし、容量が増えるとさらに速度が低下します)。
-TripeHound

6
実際、現在のRAMでさえ実際にバイトアドレス指定できませ -DDR3はバーストで動作し、最小の読み取り/書き込みサイズは8 64ビットワード(つまり64バイト)です。私は専門家ではありませんが、アラインされたアクセスも必要だと思います。これはすべて、ブロックサイズが512バイトのオーダーであった古いディスクとそれほど似ていないわけではないので、これらの違いはほとんど歴史的なもので、線が本当にぼやけていると思います。
マッテオイタリア

1
(また、何もブロック全体を使用するためにあなたを停止しない-それが何であれサイズ-ちょうど1つのバイトを保持するために-少し非効率的なのが、長い私はそれは大丈夫だディスクを払って1じゃないとと)
マッテオイタリア

1

仮想メモリを使用してページフォールトを処理する必要がある場合は、少なくともページフォールトを処理する例外ハンドラー、ハードドライブからデータを読み取り、最初にダーティページをディスクに書き込むディスクドライバー、およびページテーブルが必要です。常にRAMに入れます。RAMにない場合は、RAMにスワップバックできないためです。さらに、少なくとも1ページのRAMのスペースが必要です。

30 MBのキャッシュメモリを備えた12コアXeonのようなCPUを使用している場合、RAMもハードドライブもないシステムで、キャッシュメモリのみを使用することもできます。(それが実際に機能するかどうか、または何らかの理由でRAMが必要かどうかはわかりません)。


IIRC、x86には、メインキャッシュとして内部キャッシュ使用するモードがあります。 electronics.stackexchange.com/questions/16485/…には詳細があります。「フィルモードなし」と呼ばれることもあると思います。つまり、CPUは外部メモリからキャッシュラインを実際にフィルしようとしません。「システムエージェント」がL3キャッシュにDMAできないため、これはハードドライブI / OにDMAを使用することを妨げる可能性があります。DMAを含むすべてをキャッシュできる(Broadwellとは異なり)メモリ側キャッシュとして設定されているため、L4 eDRAMを搭載したSkylakeで動作する可能性があります。Programmed-IOは引き続きディスクに対して機能します。
ピーター・コーデス

もちろん、その時点で、128MiBのRAMを搭載したSystem-on-Chipを実行しています。これは15年前にはかなりの量でした。L3 SRAMキャッシュのみで、デスクトップチップではまだ4〜8MiBであり、これは非常に単純なLinuxには十分かもしれませんが、DOSには簡単に十分です。コードのほとんどがRAMではなくROMにある場合は、問題ありません。
ピーターコーデス

1

概念的には可能です。RAMは単なるキャッシュレベルです。最近のコンピューターには多くのキャッシュレベルがあります(CPUのL1、L2、L3を参照してください。キャッシュ、もちろんRam、スワップ領域-RAMとして使用されるディスクの論理セクションです...)または追加すると、マシンは動作します。たとえば、UbuntuライブcdはHDDのキャッシュレベルを使用しない場合があります。しかし、RAMレベルの欠如をサポートできるOSはないと思います。


1
それはOSではなく、命令をRAMに入れることを要求するように設計されたハードウェアです(実際には、アドレス空間にマッピングされます)。
アンヘル

@Angelは、最新のOSでは、プログラムを実行するためにテキスト(命令)、bss、スタック、およびヒープをメモリにロードすることが本当に必要ですか?スワップ(ディスク)に入れることはできませんか?Linuxでは、言う。
トッシュ

1
コンピューターサイエンスとコンピューターエンジニアリングのどちらですか?OSの実装もハードウェアレベルも知りません。教会チューリングの論文だけに基づいています。市場で入手可能な現在のハードウェアを使用したり、既存のOSを使用したりすることは不可能かもしれませんが、理論的なシナリオでは可能です。
Picci

1
@ToshそれはOSの問題ではなく、ハードウェアの問題です。CPUは、命令ポインタが指すメモリアドレスにある1つの命令を実行します。そのため、ディスクを持っているだけでは機能しません(ハードウェアを変更しなければ)。あなたの質問に答えると、すべてのセクションをメモリにロードする必要はありません。実際、プログラムがそれらにアクセスしようとするときのみOSはそれらをロードするかもしれません。極端な反例として、hddから一度に1ワード*を読み取るエミュレーターを使用して、「ディスクから」プログラムを実行できます。しかし、あなたはあなたがまだ必要となるので、メモリにあることが必要となるいくつかの RAMを。
アンヘル

1
申し訳ありませんが、@ Tosh:「エミュレータはメモリ内にある必要があります」。
アンヘル

-1

技術的には、RAMは処理速度を向上させるために使用される主要な揮発性メモリです。電源が切れると、プライマリメモリのデータは失われます。ディスクを使用する場合、つまり、ディスクだけを使用し、RAMは使用しない場合でも、コンピューターを実行できますが、読み取り書き込みのオーバーヘッドが大きくなり、システムの速度が大幅に低下します。したがって、RAMを使用します。


CS.SEへようこそ!読み書きのオーバーヘッドが増えると、頻繁にシステムがクラッシュする可能性が高くなるという主張を正当化できますか?それは私には正しく聞こえません。
DW

uが使用しているものに依存します。UNIX / Linuxのように、バッファキャッシュと呼ばれる概念があります。プリフェッチブロックまたは遅延書き込み用にマークされたブロックを保存するために使用できます。しかし、WindowsやMacにはそのような概念はありません。したがって、セカンダリストレージから必要なブロックにアクセスする必要があります。これで、並列プロセスを実行している間、読み取りと書き込みのオーバーヘッドが増加し、結果として処理速度が低下します。プロセスは、それがぶら下がっを開始し、その後にクラッシュするようにコンピュータを遅くすることにより実行することができません
Sanket Gupteを

2
それは誤解のように聞こえます。コンピューターの速度が低下しても、コンピューターがクラッシュするわけではありません。
DW
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.