web-dev-qa-db-ja.com

RAMなしでコンピューターを実行しますか?

私はCPUフェッチ時間について読んでいました。CPUがRAMからのデータにアクセスするのにかかる時間は、ハードディスクにアクセスするよりもはるかに短いこと、そしてRAMは、実行プログラムの情報とデータを格納するために存在します。

それでは、RAMを使わずにハードディスクだけを使うとどうなるのだろう?

14
akash ujjwal

ある時点で、これは何が「RAM」として数えられるのかという問題に入り込みます。個別のRAMチップを接続せずに小さなオペレーティングシステムを実行するためのオンチップメモリ​​を十分に備えた多くのCPUとマイクロコントローラーがあります。実際、これは組み込みシステムの世界では比較的一般的です。したがって、個別のRAMチップが接続されていないことを単に言及している場合は、そうです。現在の多くのチップ、特に組み込みの世界向けに設計されたチップでそれを行うことができます。私は仕事で自分でやった。ただし、アドレス可能なオンチップメモリ​​と個別のRAMチップの唯一の実際の違いは場所(そして明らかに、レイテンシ)だけなので、オンチップメモリ​​自体をRAMと見なすことは完全に合理的です。これをRAMとして数えると、RAMなしで実際に実行される現在の実際のプロセッサの数が大幅に減少します。

通常のPCを参照している場合、いいえ、別のRAMスティックが接続されていないと実行できませんが、それはBIOSがRAMがインストールされていない状態で起動しないように設計されているためです(これは、最近のすべてのPCオペレーティングシステムでRAMを実行する必要があるためです。特に、x86マシンでは通常、オンチップメモリ​​を直接アドレス指定できないため、キャッシュとしてのみ使用されます。)

最後に、Zeissが言ったように、2つのレジスターを除いて、RAMなしで実行するようにコンピューターを設計できないという理論的な理由はありません。 RAMは、オンチップメモリ​​よりも安価であり、ディスクよりもはるかに高速であるためにのみ存在します。現代のコンピュータには、大規模なメモリから低速メモリまで、非常に高速で小さなメモリ階層があります。通常の階層は次のようなものです。

  • レジスタ-非常に高速(CPU命令で直接操作でき、通常は追加のレイテンシはありません)ですが、通常は非常に小さいです(64ビットx86プロセッサコアには、たとえば、16個の汎用レジスタしかなく、それぞれを保存できます。単一の64ビット数。)レジスターはバイトごとに非常に高価であるため、レジスターのサイズは一般に小さくなります。
  • CPUキャッシュ-依然として非常に高速(多くの場合1〜2サイクルのレイテンシ)で、レジスタよりも大幅に大きいですが、それでも通常のDRAMよりもはるかに小さく(そしてはるかに高速)です。 CPUキャッシュは、DRAMよりもバイトあたりのコストがはるかに高いため、通常、キャッシュははるかに小さくなります。また、多くのCPUは実際にはキャッシュ内にも階層があります。それらは通常、大きくて遅いキャッシュ(L3)に加えて、小さくて速いキャッシュ(L1とL2)を持っています。
  • DRAM(ほとんどの人が 'RAM'と考えるもの)-キャッシュよりもはるかに遅い(アクセスレイテンシは数十から数百のクロックサイクルになる傾向がある)が、バイトあたりのコストははるかに安いため、通常はキャッシュよりもはるかに大きい。ただし、DRAMはディスクアクセスよりも何倍も高速です(通常、数百から数千倍高速です)。
  • ディスク-これもまた、DRAMよりもはるかに低速ですが、一般にバイトあたりの価格がはるかに安いため、はるかに大きくなります。さらに、ディスクは通常不揮発性です。つまり、プロセスが終了した後(およびコンピューターが再起動された後)でもデータを保存できます。

メモリ階層の完全な理由は単に経済的であることに注意してください。 CPUダイ上にテラバイトの不揮発性レジスタを配置できなかった理由は(少なくともコンピュータサイエンス内ではなく)ありません。問題は、構築するのがめちゃくちゃ難しくて費用がかかることです。少量の非常に高価なメモリから大量の安価なメモリまでの階層を持つことで、妥当なコストで高速を維持できます。

27
reirab

理論的に非常に少ない(数個のレジスタの価値がある)またはなしで動作するようにコンピュータを設計することは可能ですRAM(チューリングマシンの定義を調べます- -これは、コンウェイのライフシミュレーションの適切に大規模で高速な実装で実際に構築できます)。

現実世界のすべてのコンピュータがRAM=を使用する理由は、まず歴史的です。コアメモリ(RAMのプロトタイプ、半揮発性のみ)は、磁気ドラムやディスクなどの大容量記憶装置よりもはるかに古い(ただし、パンチカードと紙テープの後に来る-前者はその原始的な形式で1801(そう、19世紀の初めにさかのぼります。ジャカード織機はパンチカードを使用して色を自動的に織りましたBabbage Difference EnginesまたはHollerith tabulatorsよりも数十年前の任意の複雑さのパターン);次に、RAM(コアメモリのように)、電子的であるので、物理的な動きに依存するデバイスよりもはるかに高速ですデータを読み取り/書き込みメカニズムに提示するストレージメディア。

RAM(真のチューリングマシンと同様)なしで実行されている最新のWindowsまたはLinuxコンピューターのシステムまたは同様の複雑さは、起動するだけで数日かかり、グラフィックの画面を更新するのに数時間かかります最新の解像度でのインターフェイスCP/Mまたは初期のバージョンのDOSに匹敵するテキストのみのオペレーティングシステムでも、最初のコマンドプロンプトに到達するには非常に長い時間かかります。

23
Zeiss Ikon

すべての最新の標準的な汎用CPUは、基本的に次のように機能します。

  • CPUは、アドレス空間で次の命令を指すレジスタを維持します
  • CPUはそのアドレス空間にあるものをすべてフェッチし、そのレジスタをインクリメントします
  • 命令が宛先アドレスやその他のオペランドなどの追加情報を必要とする場合は、それもフェッチされます
  • CPUが命令を実行する
  • 命令がジャンプ、呼び出し、戻り、割り込みからの戻り、または分岐の場合、次の命令を指すレジスタを変更する場合があります。
  • 繰り返す

CPUはそのアドレス空間にあるものをすべてフェッチし、そのレジスタをインクリメントします

アドレス空間で何が「生きる」ことができますか?

  • 何もない(ゼロ、ランダムデータを返す、またはCPUがハングアップする可能性がある)
  • RAM(マザーボードRAM、RAMグラフィックアダプタなどのPCIデバイスから)
  • ROM
  • I/Oデバイスのレジスタ(これには、CPUのローカルAPICのような「内部I/Oデバイス」が含まれます)
  • 最近のCPUでは「RAMとしてキャッシュ」が可能なため、CPUキャッシュの一部をアドレス空間に表示できます

「ハードディスク」がそのリストに含まれていないことに注意してください。ハードディスクはCPUに直接接続されていません。データは、CPUに接続されたI/Oデバイス(SATAホストアダプター)を介してハードディスクとの間でやり取りされます。

I/Oデバイスは、DMAを使用して、ハードディスクにデータを読み書きします。これは、I/OデバイスがRAM自体を直接読み書きすることを意味します-CPUの介入なし-また、RAMがそこにあることに依存しています。ただし、データがI/OデバイスによってRAMにロードされていない場合、CPUはそれを見る機会はありません。

したがって、CPUにハードディスクから直接命令をフェッチさせることはできません。


ページ不在時に何が起こるか:

  • CPUは、ローカルのCPUページテーブル(常にRAMに存在する)でスワップアウトとしてマークされているメモリのページにアクセスしようとします。
  • このアクセスにより、CPUでページ違反例外が発生します。
  • CPUはカーネルモードになり、他のプロセスがアクセスしようとしていたページを調べます。
  • カーネルは、ユーザープロセスがスワップアウトされたページにアクセスしようとしていることを認識し、通常のI/Oプロセスを呼び出して、そのページをディスクからスワップインします。 これは、ディスクから他のデータをロード/保存するときに使用されるのと同じプロセスです。スワップされたメモリでCPUがページングしているからといって、違いはありません。
  • その後、CPUは制御を中断されたプロセスに戻し、何も起こらなかったかのように続行します。

したがって、メモリがスワップアウトされているため、CPUがディスクからデータを取得する必要があることは変わりません。

10
LawrenceC

X86 CPUが起動すると、L2キャッシュはキャッシュとして使用される前は最初はSRAMであるため、これを行うことができます。したがって、RAMを初期化せずに、L2やL3ではなく、CPU内の少量のSRAMのみをRAMとして使用するために、独自のBIOSを書くことができます。キャッシュ。

CPUメーカーのBIOSガイドラインをお読みください。

10
Avlin

パーソナルコンピュータ必須 RAM実行する。ハードディスクから起動されたすべてのアプリケーションは、実行前にまずRAMにコピーされます。 。

したがって、RAMがコンピュータにない場合、コンピュータは起動しません。おそらく、いくつかの警告ビープ音が鳴り、RAMインストールされています。

7
LPChip

コンピュータは実行されません。 RAMは、マザーボードからの正常なポストの重要な部分です。RAMが存在しないか破損している場合、通常、多くのマザーボードはビープコードを表示して、どこを見るかを示しますトラブルシューティング。

5
Carl B

実際には、少なくとも2つのケースで、技術的にRAMと呼ばれるものなしでコンピュータを実行できます。

  1. 最初の古い機械式「コンピュータ」(Konrad Zuseの構造とCharles Babbageのコンピュータは、RAMはまだコンピュータと呼ばれています)のない機械式デバイスでした)

  2. RAM=および registers を備えたプロセッサ(チップ)のみを備えた最新のコンピュータ。ほとんどの場合、プロセッサにSRAM(キャッシュメモリ)がありますが、最も高速なコンピュータメモリチップ上のレジスタと呼ばれ、技術的にはチップ上のレジスタはRAMではありません。

2
Niklas

実行されません。マザーボードはおそらく異常な方法でビープ音を鳴らしてシャットダウンします。十分なRAM(Windows XPの場合は128MB)がない場合、インストールは拒否されます(実際には古いコンピューターでこれを試しましたが、チップの1つが正しく配置されていませんでした)。したがって、現在のセットアップでは不可能です。マザーボードチェックを無効にできたとしても、CPUはハードディスクから直接データを読み取ることができず、すべての操作にRAM=が必要です。

理論的には、RAMをほとんどまたはまったく使用しないマシンを構築することは可能ですが、非効率的です。

1
Luke