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


21

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

最近、友人がRAMでpuppy linuxを実行していること、そしてそれが高速であることを言及しました。しかし、小さなコアlinuxはさらに小さくすることができることに気付きました。これにより、LinuxをSRAMで実行できますか?その質問は正しい形ですか?

この質問をグーグルで検索することは効果的ではありませんでしたが、さらに多くの質問が寄せられました。L3キャッシュでLinuxを実行できますか?Intel Core i7は、8MBに十分な大きさのL3キャッシュを持つことができます...しかし、カテゴリエラーを犯していますか?このLinuxと「組み込み」Linuxの違いは何ですか?

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

z。


3
組み込みLinuxは、多くの場合RAMまたは不揮発性メモリで実行されます。組み込みLinuxは、特定のハードウェアのみで実行するために単純に削除されるか、低レイテンシなどの一般的ではないカーネルオプションを使用します
Journeyman Geek

2
この質問には実用的な用途があるのだろうか?
ロバートニーストロジ

4
動詞として「linux」を使用した場合の+1(最後の文)!
ヴォラック

回答:


20

Linux、またはその他のOSは、RAMの動作を認識しません。メモリコントローラーが適切に構成されている限り(たとえば、非SRAMに設定されたリフレッシュレート)、OSはプレーンダイナミックメモリ(プレーンRAM)、高速ページモードRAM(FP RAM、C64-ish回)、拡張データ出力モードRAM(EDO)、同期RAM(SDRAM)、ダブルデータレートSDRAMS(DDR 1/2/3)のいずれか。

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

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

理論上はい、あなたはそれを使うことができます。

しかし:実用的なタスクのために1ギガバイト「定期的な」「中速」のメモリを搭載したシステムでは、より良い、ほんの数MBの超高速メモリよりも多くのことを実行します。つまり、次の3つの選択肢があります。

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

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


6
多くのCPUは、CPUのモデル固有レジスタ(MSR)を通じて「RAMとしてのキャッシュ」モードをサポートしています。また、SRAMはDRAMよりも多くの電力を消費することにも注意してください。これは設計要因でもあります。CPUのキャッシュが十分に大きいか、カーネルが十分に小さい場合、このcache-as-RAMモードを有効にして、CPU上のSRAMで完全に実行し続けることができます。ただし、プログラムなどを実行するためのRAMの量は限られています。AFAIKのcache-as-RAMと通常モードは同時に機能しないためです。私はそれについて間違っている可能性があります。たとえそれが行われたとしても、最近のCPUの速度のほとんどは、L2、L3キャッシュを使用するためです。
ローレンス

@Hennesは、Linuxが(マップされた)メモリアドレスのみを気にするということですか?
アルビンウォン

SDRAMは同期D(ダイナミック)RAMですが、SRAMはスタティックRAMです。最初の段落でどちらを参照するつもりだったのかわかりませんし、「些細な」編集を行う担当者もいませんが、それを修正できるかもしれません。それ以外は、良い答えです。
CVn

明確にすることは問題ありませんが、何を明確にしたいのかわかりません。コメントに追加していただければ編集します。
ヘネス

このコメントを最初に読んだとき、「Linux、または他のOSは、RAMの動作方法を知らずに死にます」と見ました。あなたの内訳は良いものです。これが「より良い」という幻想はなかったと思います。私はそれができるかどうか疑問に思いました。
ジギー

8

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

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


1
すべてがコピーできるわけではありません。Intel / x86キャッシュ構造の場合:256KiBキャッシュと1024KiBキャッシュがある場合、アドレス0を読み取ることができます。アドレス0のキャッシュに格納されます。アドレス1を読み取ることができ、ロケーション1のキャッシュに格納されますただし、(256Kib + 1)からアドレスを読み取ると、キャッシュのアドレス1にも格納されます。キャッシュは追加の(タグ)SRAMを使用して、2つのうちどちらが保存されているかを示します。これは、キャッシュサイズの倍数からの読み取りがうまく機能しないことを意味します。(これはまれなことであり、通常は無視できることに注意してください)。
ヘネス

これは洞察に満ちています!なぜ天才の軍隊に最適な行動を決定させ、CPUをプログラムしてその最適な行動をさせることができるのに、私が重要だと思うものを不器用にL3キャッシュに詰め込むのでしょうか。右?
ジギー

3

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

これが有益かどうかは別の質問です。カーネルをRAMにロックしますが、同時にキャッシュの有効サイズを削減します。また、システムの残りの部分でキャッシュを無効にする必要があるなど、副作用が発生する可能性があります。


2

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

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

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


1

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

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

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

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

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

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


1

486esの時代には、すべてのRAMがSRAMであったマシンがありました。これは8MBが大量だったときに戻ってきましたが、あなたの制約に合っているようです。私は8MBのSRAMが当時よりずっと安くなったと確信しています。

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

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

問題はその理由です。「できるから」を除いて、これには多くの理由はありません。キャッシュシステムにより、コストを大幅に削減しながら、速度のメリットを最大限に得ることができます。そして、コストは単なるドルではないことを忘れないでください。...SRAMはより多くのトランジスタを必要とします。

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