私はCPUフェッチ時間について読んでいました。CPUがRAMからのデータにアクセスするのにかかる時間は、ハードディスクにアクセスするよりもはるかに短いこと、そしてRAMは、実行プログラムの情報とデータを格納するために存在します。
それでは、RAMを使わずにハードディスクだけを使うとどうなるのだろう?
ある時点で、これは何が「RAM」として数えられるのかという問題に入り込みます。個別のRAMチップを接続せずに小さなオペレーティングシステムを実行するためのオンチップメモリを十分に備えた多くのCPUとマイクロコントローラーがあります。実際、これは組み込みシステムの世界では比較的一般的です。したがって、個別のRAMチップが接続されていないことを単に言及している場合は、そうです。現在の多くのチップ、特に組み込みの世界向けに設計されたチップでそれを行うことができます。私は仕事で自分でやった。ただし、アドレス可能なオンチップメモリと個別のRAMチップの唯一の実際の違いは場所(そして明らかに、レイテンシ)だけなので、オンチップメモリ自体をRAMと見なすことは完全に合理的です。これをRAMとして数えると、RAMなしで実際に実行される現在の実際のプロセッサの数が大幅に減少します。
通常のPCを参照している場合、いいえ、別のRAMスティックが接続されていないと実行できませんが、それはBIOSがRAMがインストールされていない状態で起動しないように設計されているためです(これは、最近のすべてのPCオペレーティングシステムでRAMを実行する必要があるためです。特に、x86マシンでは通常、オンチップメモリを直接アドレス指定できないため、キャッシュとしてのみ使用されます。)
最後に、Zeissが言ったように、2つのレジスターを除いて、RAMなしで実行するようにコンピューターを設計できないという理論的な理由はありません。 RAMは、オンチップメモリよりも安価であり、ディスクよりもはるかに高速であるためにのみ存在します。現代のコンピュータには、大規模なメモリから低速メモリまで、非常に高速で小さなメモリ階層があります。通常の階層は次のようなものです。
メモリ階層の完全な理由は単に経済的であることに注意してください。 CPUダイ上にテラバイトの不揮発性レジスタを配置できなかった理由は(少なくともコンピュータサイエンス内ではなく)ありません。問題は、構築するのがめちゃくちゃ難しくて費用がかかることです。少量の非常に高価なメモリから大量の安価なメモリまでの階層を持つことで、妥当なコストで高速を維持できます。
理論的に非常に少ない(数個のレジスタの価値がある)またはなしで動作するようにコンピュータを設計することは可能ですRAM(チューリングマシンの定義を調べます- -これは、コンウェイのライフシミュレーションの適切に大規模で高速な実装で実際に構築できます)。
現実世界のすべてのコンピュータがRAM=を使用する理由は、まず歴史的です。コアメモリ(RAMのプロトタイプ、半揮発性のみ)は、磁気ドラムやディスクなどの大容量記憶装置よりもはるかに古い(ただし、パンチカードと紙テープの後に来る-前者はその原始的な形式で1801(そう、19世紀の初めにさかのぼります。ジャカード織機はパンチカードを使用して色を自動的に織りましたBabbage Difference EnginesまたはHollerith tabulatorsよりも数十年前の任意の複雑さのパターン);次に、RAM(コアメモリのように)、電子的であるので、物理的な動きに依存するデバイスよりもはるかに高速ですデータを読み取り/書き込みメカニズムに提示するストレージメディア。
RAM(真のチューリングマシンと同様)なしで実行されている最新のWindowsまたはLinuxコンピューターのシステムまたは同様の複雑さは、起動するだけで数日かかり、グラフィックの画面を更新するのに数時間かかります最新の解像度でのインターフェイスCP/Mまたは初期のバージョンのDOSに匹敵するテキストのみのオペレーティングシステムでも、最初のコマンドプロンプトに到達するには非常に長い時間かかります。
すべての最新の標準的な汎用CPUは、基本的に次のように機能します。
CPUはそのアドレス空間にあるものをすべてフェッチし、そのレジスタをインクリメントします
アドレス空間で何が「生きる」ことができますか?
「ハードディスク」がそのリストに含まれていないことに注意してください。ハードディスクはCPUに直接接続されていません。データは、CPUに接続されたI/Oデバイス(SATAホストアダプター)を介してハードディスクとの間でやり取りされます。
I/Oデバイスは、DMAを使用して、ハードディスクにデータを読み書きします。これは、I/OデバイスがRAM自体を直接読み書きすることを意味します-CPUの介入なし-また、RAMがそこにあることに依存しています。ただし、データがI/OデバイスによってRAMにロードされていない場合、CPUはそれを見る機会はありません。
したがって、CPUにハードディスクから直接命令をフェッチさせることはできません。
ページ不在時に何が起こるか:
したがって、メモリがスワップアウトされているため、CPUがディスクからデータを取得する必要があることは変わりません。
X86 CPUが起動すると、L2キャッシュはキャッシュとして使用される前は最初はSRAMであるため、これを行うことができます。したがって、RAMを初期化せずに、L2やL3ではなく、CPU内の少量のSRAMのみをRAMとして使用するために、独自のBIOSを書くことができます。キャッシュ。
CPUメーカーのBIOSガイドラインをお読みください。
パーソナルコンピュータ必須 RAM実行する。ハードディスクから起動されたすべてのアプリケーションは、実行前にまずRAMにコピーされます。 。
したがって、RAMがコンピュータにない場合、コンピュータは起動しません。おそらく、いくつかの警告ビープ音が鳴り、RAMインストールされています。
コンピュータは実行されません。 RAMは、マザーボードからの正常なポストの重要な部分です。RAMが存在しないか破損している場合、通常、多くのマザーボードはビープコードを表示して、どこを見るかを示しますトラブルシューティング。
実際には、少なくとも2つのケースで、技術的にRAMと呼ばれるものなしでコンピュータを実行できます。
最初の古い機械式「コンピュータ」(Konrad Zuseの構造とCharles Babbageのコンピュータは、RAMはまだコンピュータと呼ばれています)のない機械式デバイスでした)
RAM=および registers を備えたプロセッサ(チップ)のみを備えた最新のコンピュータ。ほとんどの場合、プロセッサにSRAM(キャッシュメモリ)がありますが、最も高速なコンピュータメモリチップ上のレジスタと呼ばれ、技術的にはチップ上のレジスタはRAMではありません。
実行されません。マザーボードはおそらく異常な方法でビープ音を鳴らしてシャットダウンします。十分なRAM(Windows XPの場合は128MB)がない場合、インストールは拒否されます(実際には古いコンピューターでこれを試しましたが、チップの1つが正しく配置されていませんでした)。したがって、現在のセットアップでは不可能です。マザーボードチェックを無効にできたとしても、CPUはハードディスクから直接データを読み取ることができず、すべての操作にRAM=が必要です。
理論的には、RAMをほとんどまたはまったく使用しないマシンを構築することは可能ですが、非効率的です。