CPUはどのように情報をRAMに書き込みますか?


10

私の質問は、CPUはどのようにRAMにデータを書き込むのですか?

私が理解していることから、最近のCPUはさまざまなレベルのキャッシュを使用してRAMアクセスを高速化しています。RAMは情報のコマンドを取得し、CPUにデータのバーストを送信します。CPUは必要なデータ(およびCPUが必要とするアドレスに近い大量の追加データ)を最高レベルのキャッシュに格納し、CPUは徐々に要求しますさまざまなキャッシュを使用して、レベル1のキャッシュになるまでキャッシュのレベルを下がるデータの小さなチャンクを送信し、それがCPUレジスタに直接読み取られます。

CPUがメモリに書き込むときに、このプロセスはどのように機能しますか?コンピューターはキャッシュのレベルを逆方向​​に進みますか(読み取りとは逆の順序で)?もしそうなら、異なるキャッシュの情報をメインメモリと同期するのはどうですか?また、読み取り操作と比較して書き込み操作の速度はどうですか?バケットソートの場合など、RAMに継続的に書き込みを行うとどうなりますか?

前もって感謝します、

-フェイケン

編集:私はまだ完全に受け入れることができる答えをまだ得ていません。特にRAM書き込みの同期部分について知りたい。CPUから直接L1キャッシュに書き込み、さまざまなレベルのキャッシュを同期するときにデータがキャッシュレベルにプッシュダウンされ、最終的にメインRAMが最上位層のキャッシュと同期されることを知っています。ただし、私が知りたいのは、キャッシュがメインRAMと同期してscynocronizeするタイミングと、読み取りコマンドとの関係での速度です。

回答:


11

ああ、これは本当に複雑な答えを持つ単純な質問の1つです。簡単な答えは、まあ、それは書き込みがどのように行われたか、そしてどんな種類のキャッシングがあるかに依存します。キャッシュがどのように機能するかについての便利な入門書を次に示します

CPUはさまざまな方法でデータを書き込むことができます。キャッシングがない場合、データはすぐにメモリに保存され、CPUは書き込みが完了するまで待機します。キャッシングでは、CPUは通常、プログラムの順序でデータを格納します。つまり、プログラムがアドレスA、アドレスBの順に書き込む場合、キャッシングに関係なく、メモリAはメモリBの前に書き込まれます。キャッシングは物理メモリが更新されたときにのみ影響し、これは使用されるキャッシングのタイプに依存します(上記のリンクを参照)。一部のCPUは非一時的にデータを保存することもできます。つまり、書き込みを並べ替えてメモリ帯域幅を最大限に活用できます。したがって、A、次にB、(A + 1)への書き込みは、1つのバーストでA、A + 1、次にBに書き込むように並べ替えることができます。

別の問題は、複数のCPUが存在する場合です。システムの設計方法によっては、データがまだ最初のCPUキャッシュにあるため(キャッシュがダーティ)、1つのCPUによる書き込みは他のCPUからは見えません。複数のCPUシステムでは、各CPUのキャッシュを物理メモリ内のキャッシュと一致させることを、キャッシュ一貫性と呼びます。これを実現する方法はいくつかあります。

もちろん、上記はPentiumプロセッサ向けです。他のプロセッサは他の方法で物事を行うことができます。たとえば、PS3のCellプロセッサを見てみましょう。Cell CPUの基本的なアーキテクチャは、複数のCellコアを持つ1つのPowerPCコアです(PS3には8つのセルがあり、そのうちの1つは常に歩留まり向上のために無効になっています)。各セルには、システムRAMに書き込まれることのないL1キャッシュのような独自のローカルメモリがあります。DMA(Direct Memory Access)転送を使用して、このローカルRAMとシステムRAMの間でデータを転送できます。セルは、通常の読み取りと書き込みのように見えるものを使用して、システムRAMと他のセルのRAMにアクセスできますが、これはDMA転送をトリガーするだけです(そのため、低速であり、実際には回避する必要があります)。このシステムの背後にある考え方は、ゲームは1つのプログラムではなく、

要約すると、RAMへの書き込みは、CPU速度がRAM速度と一致した時代は非常に単純でしたが、CPU速度が向上し、キャッシュが導入されるにつれて、プロセスは多くの異なる方法でより複雑になりました。

スキズ


2

はい、キャッシュのレベルをさかのぼってメモリに保存しますが、重要な注意点は、マルチプロセッシングシステムでは、キャッシュは2つ以上のプロセッサ(コア)間で共有され、データは一貫している必要があります。これは、すべてのマルチプロセッサの共有キャッシュを作成することによって行われました。または別のキャッシュですが、クリティカルセクションを使用して一貫性を保存します(1つのキャッシュのデータが変更された場合、メモリに書き込み、他のキャッシュを更新することを強制します)

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