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


14

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

それから、ハードディスクのみを使用し、RAMを使用しない場合はどうなるのでしょうか?



1
@Corneliusお返事ありがとうございます:)
akash ujjwal 14

12
ビープ音がいくつか鳴ると、画面が空白になります。
arch-abit 14

1
私の質問は、少なくともグラフィックスカードが機能していることをテストできますか?ビデオやモニターは最低限動作しますか?
マーシャルクラフト

回答:


27

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

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

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

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

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


最後に、私は必要なものを手に入れました。ありがとうございました:)
akash ujjwal 14

実際、PCがRAMなしで起動しない理由はBIOSです。BIOSコードがRAM内の再配置アドレスを見つけることができない場合、中止されます。聞こえるのは、電源のハミングとファンのノイズ、そしておそらくディスクの回転だけです。しかし、コンピューターは基本的に脳死です。CPUがすべてを機能させる機会はありません。はい、RAMは非常に重要です。
arch-abit 14

@ arch-abitは本当ですが、コンピューターを実行するためにRAMは必要なコンポーネントですか?
akash ujjwal 14

2
@reirabによると、命令を実行する意味でDRAMなしで「PC」を実行することが可能であることに加えて、これはDRAMコントローラーが初期化される前にシステムが動作するモードです(BIOS / EFI / Corebootなどによって実行されます)。ただし、ほとんどのコンポーネントはおそらくDMAを使用するため、有用なことは何もできません。
マチェイピエチョトカ14

1
32ビットx86 CPUレジスタは64ビットではなく32ビットであり、64ビットx86 CPUは8ビットではなく32ビットです。
psusi

23

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

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

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


4
いくつかのDSP(デジタルシグナルプロセッサ)および同様のマイクロプロセッサは、本質的に連続したデータストリームで計算を実行するため、RAMなしで実行されるコンピュータと見なすことができると思います。
jamesqf

1
「仮想メモリのみ」のマシンの速度に対するあなたの推定は少し誇張されていると思いますが、原則としては正しいです。
左辺約14

1
ディスクはRAMよりも1,000,000を超える速度であるため、推定値は、どちらかといえば低い方にあると思います。
ダンクラム14

2
@Dancrumbあなたの1,000,000(回?)がどこから来たのかわかりません。DDR3 SDRAMは10 GB / sのオーダーを実現できますが、 7200 rpmの回転HDDでも100 MB / s(0.1 GB / s)のシーケンシャルを実現できます。これは100倍です。確かに重要ですが、1,000,000回とはかけ離れています。RAMがHDDを大きく上回っているのはシークレイテンシですが、SSDを使用することで大幅に軽減できます。DDR3のレイテンシは10 nsリージョンにあり、高速SSDのレイテンシは10,000 nsリージョン(100k IOPS)であり、係数は1,000です。まだ 1,000,000とは程遠い。
CVn

1
@PeterCordesが編集されたため、Win / LinuxがRAMなしで実行できると主張していないようです。
ツァイスイコン

10

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

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


4
それを述べるための+1。実際、すべてのx86システム(コンピューター)は「RAMを使用せずに」起動します。BIOSコードは最初にRAMがあるかどうかを検出し、ない場合はビープ音を鳴らします。このコードは、ラムせずに実行することができます;)(OFC多くは確かレジスタのために、ラムずに行うことができないHDDを処理し、「ラムとして」それを使用するのに十分ではありません)
SEBI

10

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

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

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

アドレス空間に何が「住む」ことができますか?

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

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

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

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


ページフォールト中に起こることは次のとおりです。

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

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


2
+1何が起こるかだけでなく、その理由について本当の問題を扱うここでの唯一の答えであるため

@ultrasawblade cpuがデータを見る機会がない理由その望ましいデータ。つまり、CPUは最後に必要な情報を得るためにハードディスクに移動する必要があります。
akash ujjwal 14

2
編集を参照してください。スワップされたメモリ内のカーネルページングは​​、プログラムの読み込みやプログラムのディスクへの読み書きと違いはありません。カーネル内で、ユーザープロセスの背後で発生するだけで、カーネルの内部では発生しません。
ローレンス

x86は少なくともキャッシュ RAMなしのモードとして使用できることに注意してください。ただし、RAMが組み込まれているマイクロコントローラーと同じボートにいることに注意してください。ROMのみで書き込み可能なアドレススペースなしでCPUを実行することはもっともらしいです(すべての状態がレジスタに収まる場合、最新のx86 CPUには32個の512b ZMMベクトルレジスタがあることに注意してください...)しかし、コード(およびx86のGDT / LDT / IDTおよびその他のテーブル)の読み取り可能なアドレススペース。
ピーター・コーデス

7

パソコンを実行するには RAMが必要です。ハードディスクから起動されたすべてのアプリケーションは、実行される前に最初にRAMにコピーされます。

そのため、コンピューターにRAMがない場合、コンピューターは起動しません。おそらく、RAMがインストールされていないことを知らせる警告音が数回鳴ります。


5
次に、額をたたいて、「これらのRAMスティックを、12月27日の北半球の湿度10%未満のカーペット敷きの環境に設置しようとするべきではありませんか?」と言います。はい?
arch-abit

@LPChipなぜそれがRamに保存されるのか、その主な目的は何ですか。システムを高速にしたり、アクセス時間を短縮したりするために、組み込みのキャッシュがあります。私は正しいか間違っていますか?
akash ujjwal 14

1
RAMは高速のメモリストレージであり、ディスクアクセスは低速の不揮発性メモリストレージであり、CPUキャッシュは他の理由で存在します。
Fiasco Labs 14

1
@FiascoLabs実際、CPUキャッシュはRAMと同じ理由で存在します。これは本当に高速なストレージです。RAMよりもはるかに高速ですが、バイトあたりのコストが高くなります。
reirab 14

そして、コンピュータは、したがって、「その他の理由」、その上でスタンドアロンで実行していることはありません
フィアスコLabsの

5

コンピューターは実行されません。RAMは、マザーボードからの投稿を成功させるために不可欠な要素です。RAMが存在しないか破損している場合、多くのマザーボードでは通常、ビープ音コードを使用してトラブルシューティングの参照先を示します。


はい、それらは磁化/消磁される小さな金属リングでした。en.wikipedia.org/wiki/Magnetic-core_memory(削除された古い真空管コンピューターに関するコメントへの返信)
Fiasco Labs 14

2

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

  1. 最初の古い機械的な「コンピューター」(コンラッドズーゼの構造とチャールズバベッジのコンピューターは、まだコンピューターと呼ばれるRAMのない機械装置でした)

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


1
この答えをありがとう-初めてZuseと彼の初期の電気機械コンピューターについて聞いたことを思い出します(コンピューターについて覚えている最初の読書は常にスイッチングユニットとして「リレー」について話しましたが、他のすべての初期コンピューターは真空管を使用したようです)。
ツァイスイコン14

1

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.