web-dev-qa-db-ja.com

RAMよりも高速なものでLinuxを実行できますか?

これはおそらくばかげた質問であり、誤解の結果である可能性があります。私は今CPU、特にメモリを研究しています。私はちょうどSRAMがDRAMよりどれだけ速いかについて読んでいましたが、より高価です。 SRAMは非常に高価です。少し買い物をしたところ、16MBのバッテリー駆動のSRAMカードが約400ドルで見つかりました。

最近、友人が、RAMでPuppy Linuxを実行していて、高速であると述べました。しかし、私は小さなコアLinuxがさらに小さくなる可能性があることに気づきました...わずか8 MBです!これは私に考えさせられました:SRAMでLinuxを実行できますか?その質問は整形式でさえありますか?

この質問をグーグルで検索しても効果がないことがわかりましたが、さらに多くの質問が発生しました。 L3キャッシュでLinuxを実行できますか? Intel Core i7は、8MBを収めるのに十分な大きさのL3キャッシュを持つことができます...しかし、私はカテゴリエラーを起こしているのでしょうか?これと「埋め込み」Linuxの違いは何ですか?

それが問題です:LinuxをSRAMまたはL3キャッシュで実行できますか?もっと速いものはありますか? Linuxはどれくらい速くできるのか!?

z。

21
Ziggy

Linuxまたは他のOSは、RAMがどのように機能するかを知りません。メモリコントローラが適切に構成されている限り(たとえば、非SRAMに設定されたリフレッシュレート)、OSはそれを気にしません。プレーンダイナミックメモリ(プレーンRAM)、高速ページモードRAM(FP RAM、C64時代から)、拡張データ出力モードRAM( EDO)、同期RAM(SDRAM)、任意のダブルデータレートSDRAMS(DDR 1/2/3))。

これらはすべて、ランダムな場所からの読み取りと書き込みをサポートしています。すべてが機能します。

現在、キャッシュは少し異なります。内容を変更するために書き込む必要はありません。それは邪魔になります。それでも、ある程度は使えます。 corebootは、メモリコントローラーが適切に構成される前に、ブート中にキャッシュを一種のメモリとして使用することを知っています。 (詳細については、FOSDEM 2011でのcorebootトークのビデオをご覧ください)。

したがって、理論的にはそうです、あなたはそれを使うことができます。

[〜#〜] but [〜#〜]:実用的なタスクの場合、1 GBの「通常」の「中速」メモリを備えたシステムは、数MBの超高速メモリを備えたシステムよりもはるかに優れたパフォーマンスを発揮します。つまり、3つの選択肢があります。

  1. 通常の「安価な」方法で物事を構築します。より高速にする必要がある場合は、数十台のコンピューターを追加します(すべて「低速」メモリを搭載)
  2. または、1台のコンピューターを12倍の価格で、12倍未満のパフォーマンスで構築します。

非常にまれな場合を除いて、最後のものは賢明ではありません。

20
Hennes

はい、できます。実際、これはすでに自動的に行われている方法です。 RAMの最も頻繁に使用される部分はキャッシュにコピーされます。合計RAM使用量が(あなたが想像するように)キャッシュサイズよりも小さい場合、既存のキャッシュメカニズムはすべてをRAMにコピーします。

その後、キャッシュが通常のRAMにコピーされるのは、PCがS3スリープモードに移行するときだけです。これは、キャッシュがS3モードでパワーダウンされるために必要です。

8
MSalters

多くのCPUでは、キャッシュをRAMとして使用できます。たとえば、ほとんどの新しいx86 CPUは、MTRRを介した読み取りでフィルなしのライトバックとして特定の領域を構成できます。これを使用して、アドレス空間の領域を-事実上-cache-as-ramとして指定できます。

これが有益かどうかは別の質問です。カーネルをRAMにロックしますが、同時にキャッシュの有効サイズを減らします。これをはるかに遅くする副作用(システムの残りの部分のキャッシュを無効にする必要があるなど)もあるかもしれません。

3
Marc Lehmann

「LinuxをL3キャッシュで実行できますか?」

いいえ、キャッシュメモリが直接/線形にアドレス指定されていないため、これは不可能です。
キャッシュメモリの設計方法により、 CPUプログラムカウンタ(IP)レジストリ はキャッシュメモリ内の場所を指すことができません。

CPUキャッシュには独自の "associativity" があり、この結合性は「通常の」メモリがキャッシュメモリに「マッピング」される方法を定義します。キャッシュメモリのこの機能は、キャッシュメモリが非常に高速である理由の1つです。

2
Max

486esの時代には、すべてのRAMがSRAMであったマシンがありました。これは8MBが多かった頃に戻っていますが、制約に一致しているようです。 SRAMは、当時よりもはるかに安価です。

したがって、マシンがそのように作成されていれば、LinuxをSRAMで実行できます。これは理論的なものではありません。完了しました。

ただし、キャッシュにはありません。キャッシュは異なる方法で配線され、さらに重要なことに異なる方法でアドレス指定されます。同じように対処することはできません。チャンクは、連続したチャンクとしてではなく、異なる方法でマップされます。そして、内容は必ずしもディスク上に表示されるものではありません-新しいIntelチップは、マイクロオペレーションが重要である、ある種のジャストインタイムの「コンパイル」(CISC => RISC-マイクロオペレーションの再エンコードの詳細)を実行します最終的にはキャッシュに入れられます。つまり、キャッシュにあるのはプログラムではなく、ビューが変更されたため、プログラムのメモリ表現として使用できなくなりました。

問題はその理由です。 「できるから」以外に理由はあまりありません。キャッシュシステムは、はるかに少ないコストで速度のメリットのほとんどを実現します。そして、コストは単なるドルではないことを忘れないでください。SRAMはより多くのトランジスタを必要とします。つまり、より多くの電力を必要とします。

1
Rich Homolka

「LinuxをL3キャッシュで実行できますか?」

いいえ、キャッシュは、プロセッサがそれらを必要とするときに備えて、プログラムデータと命令を保持する特定のジョブのためにあります。とにかく、オペレーティングシステムは常に使用されているため、キャッシュ内にあります。カーネル内のすべてのコードパスを一度に使用するわけではないため、すべてのOSをキャッシュにロードするのは効率的ではありません。

「LinuxをSRAMで実行できますか?」

確かに、ブートパーティションとしてバッテリバックアップされたSRAMを使用でき、その後、実行の埋め込みフラグを所定の位置で使用できます。これにより、起動時間が短縮され、操作がわずかに高速になる可能性があります。ただし、主な要因は、L3キャッシュとカーネルのある場所(ブートドライブまたはRAM)の間の帯域幅です。

「もっと速いものはありますか?Linuxはどれくらい速くできますか!?」

一般に、ハードウェアメーカーとオペレーティングシステム開発者は、処理をできるだけ速くするために取り組んでいます。ただし、質問は非常に一般的です。起動時間を短縮したり、ファイルシステムへのアクセスを最適化したり、計算を高速化したりする必要がありますか。より具体的な質問があれば、確実にボトルネックを見つけて取り除くことができます。あなたのSRAMドライブは確かにあなたのブートプロセスをスピードアップするでしょう。 3秒でGUIに到達するのは、非常にすばらしいことです。

1
Phil Hannent