スクラッチパッド メモリ( SPM ) は、コンピュータ用語ではスクラッチパッド、スクラッチパッド RAM、またはローカル ストアとも呼ばれ、通常は高速の内部メモリで、計算、データ、その他の進行中の作業を一時的に保存するために使用されます。マイクロプロセッサ(またはCPU ) に関して言えば、スクラッチパッドは、迅速な検索のために小さなデータ項目を保持するために使用される特殊な高速メモリを指します。これは、日常生活におけるスクラッチパッド (予備的なメモやスケッチ、文章などを書き留めておくための紙のパッド) の使用法やサイズに似ています。スクラッチパッドがメイン メモリの非表示部分である場合は、バンプ ストレージと呼ばれることもあります。
一部のシステムでは[a]、プロセッサレジスタの次にALUに近いメモリであり、メイン メモリとの間でデータを移動するための明示的な命令があり、多くの場合DMAベースのデータ転送が使用されるという点で、L1 キャッシュに似ていると考えられます。[1]キャッシュを使用するシステムとは対照的に、スクラッチパッドを備えたシステムは、さまざまなスクラッチパッドとメイン メモリへのメモリ アクセス レイテンシが異なるため、非均一メモリ アクセス(NUMA) レイテンシを持つシステムです。キャッシュを使用するシステムとのもう 1 つの違いは、スクラッチパッドには通常、メイン メモリにも格納されているデータのコピーが含まれていないことです。
スクラッチパッドは、キャッシュ ロジックを簡素化し、複数のプロセッサを使用するシステム、特に組み込みシステム用のマルチプロセッサ システム オン チップでユニットがメイン メモリの競合なしで動作することを保証するために使用されます。スクラッチパッドは、通常、メイン メモリに常にコミットする必要のない一時的な結果 (CPU スタック内にあるようなもの) を格納するのに主に適しています。ただし、DMAによって供給される場合は、低速のメイン メモリの状態をミラーリングするためにキャッシュの代わりに使用することもできます。使用効率に関しても、参照の局所性に関する同じ問題が適用されますが、一部のシステムでは、ストライド DMA で長方形データ セットにアクセスできます。もう 1 つの違いは、スクラッチパッドはアプリケーションによって明示的に操作されることです。キャッシュの動作によって予測可能なタイミングが妨げられる リアルタイム アプリケーションには、スクラッチパッドが役立つ場合があります。
スクラッチパッドは、利用可能なオンチップ メモリ サイズが変わる可能性がある、レガシー ソフトウェアを世代を超えて実行するための汎用性が求められる主流のデスクトップ プロセッサでは使用されません。スクラッチパッドは、チップがMPSoCとして製造されることが多く、ソフトウェアが 1 つのハードウェア構成に合わせて調整されることが多い組み込み システム、専用プロセッサ、ゲーム コンソールでより適切に実装されます。
使用例
- 1975 年のFairchild F8には 64 バイトのスクラッチパッドが含まれていました。
- TI -99/4Aは、TMS9900のプロセッサレジスタを含む16ビットバス上に256バイトのスクラッチパッドメモリを持っています[2]
- Cyrix 6x86は、専用のスクラッチパッドを組み込んだ唯一のx86互換デスクトップ プロセッサです。
- セガのコンソールで使用されているSuperHは、スクラッチパッドとして使用するために、メインメモリの外部のアドレスにキャッシュラインをロックすることができました。
- ソニーのPS1のR3000には、L1キャッシュの代わりにスクラッチパッドがありました。ここにCPUスタックを配置することができ、一時的なワークスペースの使用例です。
- Adapteva の Epiphany並列コプロセッサは、各コアにローカル ストアを備えており、チップ上のネットワークで接続され、それらの間およびオフチップ リンク (おそらく DRAM へ) 間で DMA が可能です。アーキテクチャは Sony の Cell に似ていますが、すべてのコアが互いのスクラッチパッドを直接アドレス指定し、標準のロード/ストア命令からネットワーク メッセージを生成する点が異なります。
- Sony のPS2 Emotion Engineには 16 KB のスクラッチパッドが含まれており、そこから GS およびメイン メモリへの DMA 転送を発行できます。
- Cellの SPE は、スクラッチパッドのように、メイン メモリとの転送やローカル ストア間の転送に DMA を使用する「ローカル ストア」のみに制限されています。この点で、複数のキャッシュ間の一貫性をチェックおよび更新するハードウェアがないことによる追加の利点があります。この設計では、各プロセッサのワークスペースが別々でプライベートであるという仮定を利用しています。この利点は、プロセッサの数が増えて「マルチコア」の将来になると、より顕著になると予想されます。ただし、一部のハードウェア ロジックが削除されているため、SPE 上のタスク全体がローカル ストアに収まらない場合は、SPE 上のアプリケーションのデータと命令をソフトウェアで管理する必要があります。[3] [4] [5]
- 他の多くのプロセッサでは、L1 キャッシュ ラインをロックできます。
- ほとんどのデジタル信号プロセッサはスクラッチパッドを使用します。過去の多くの 3D アクセラレータとゲーム コンソール (PS2 を含む) は、頂点変換に DSP を使用していました。これは、CPU キャッシュの機能とより共通点のある最新の GPU のストリームベースのアプローチとは異なります。
- CUDAで動作するNVIDIAの8800 GPUは、 GPGPUタスクに使用される場合、スレッドバンドルごとに16KBのスクラッチパッド(NVIDIAは共有メモリと呼んでいます)を提供します。スクラッチパッドは、後のFermi GPU(GeForce 400シリーズ)でも使用されました。 [6]
- Ageia のPhysXチップには、Cell と同様の方法でスクラッチパッド RAM が含まれています。この特定の物理処理ユニットの理論では、キャッシュ階層はソフトウェア管理の物理計算や衝突計算よりも役に立ちません。これらのメモリもバンク化されており、スイッチがメモリ間の転送を管理します。
- Intel のKnights Landing プロセッサには 16 GB の MCDRAM が搭載されており、キャッシュ、スクラッチパッド メモリとして構成したり、キャッシュとスクラッチパッド メモリに分割したりすることができます。
- Movidius Myriad 2 は、大規模なマルチポート共有スクラッチパッドを備えたマルチコア アーキテクチャとして構成されたビジョン プロセッシング ユニットです。
- GraphcoreはスクラッチパッドメモリをベースにしたAIアクセラレータを設計した[7]
代替案
キャッシュ制御とスクラッチパッド
PowerPC などの一部のアーキテクチャでは、キャッシュ制御命令を使用して、キャッシュライン ロックやスクラッチパッドの必要性を回避しようとします。メモリ領域を「データ キャッシュ ブロック: ゼロ」でマークし (ラインを割り当てますが、メイン メモリからロードするのではなく、その内容をゼロに設定します)、使用後に破棄します (「データ キャッシュ ブロック: 無効化」、メイン メモリが更新されたデータを受け取らなかったことを示します)。これにより、キャッシュはスクラッチパッドとして動作するようになります。これらはヒントであり、実際のキャッシュ サイズに関係なく、基礎となるハードウェアが正しく機能するという点で、一般性が維持されます。
共有 L2 とセル ローカル ストア
マルチコア セットアップでのプロセッサ間通信に関しては、Cell のローカルストア間 DMA と、Intel Core 2 Duo や Xbox 360 のカスタム PowerPC のような共有 L2 キャッシュ セットアップとの間に類似点があります。L2 キャッシュを使用すると、プロセッサは結果をメイン メモリにコミットすることなく共有できます。これは、アルゴリズムのワーキング セットがL2 キャッシュ全体を含む場合に有利です。ただし、ローカルストア間 DMA を利用するようにプログラムを作成すると、Cell は、各ローカル ストアが単一のプロセッサのプライベート ワークスペースとプロセッサ間の共有ポイントの両方の目的を果たすという利点があります。つまり、他のローカル ストアは、1 つのプロセッサから見た場合、従来のチップの共有 L2 キャッシュと同様の立場にあります。トレードオフは、バッファリングでメモリが無駄になり、同期のためのプログラミングが複雑になることですが、これは従来のチップのプリキャッシュされたページと同様です。この機能の使用が効果的なドメインには、次のものがあります。
- パイプライン処理(1つのジョブを小さなチャンクに分割することで、L1キャッシュのサイズを増やすのと同じ効果が得られます)
- ワーキングセットの拡張、例えば、データが8×256KB以内に収まるマージソートのスイートスポット
- 共有コードのアップロード、たとえば、コードの一部を 1 つの SPU にロードし、そこから他の SPU にコピーしてメイン メモリへの再アクセスを回避するなど
従来のプロセッサでも、キャッシュ制御命令を使用して、L2 をバイパスして L1 にプリフェッチしたり、L1 から L2 への転送を通知するがメイン メモリにはコミットしないエビクション ヒントなど、同様の利点を得ることは可能ですが、現時点ではこの機能を使用可能な形式で提供するシステムはなく、このような命令は、実際には各コアが使用するキャッシュ領域間でのデータの明示的な転送を反映する必要があります。
参照
注記
- ^ 古いシステムの中には、バンプストレージと呼ばれるメインストレージの隠し部分をスクラッチパッドとして使用していたものがありました。UNIVAC 1107などの他のシステムでは、アドレス指定可能なレジスタはすべてスクラッチパッドに保持されていました。
参考文献
- ^ Steinke, Stefan; Lars Wehmeyer; Bo-Sik Lee; Peter Marwedel (2002). 「エネルギー削減のためにプログラムとデータオブジェクトをスクラッチパッドに割り当てる」(PDF)。ドルトムント大学。2013年10 月 3 日閲覧。: 「3.2 スクラッチパッド モデル .. スクラッチパッド メモリはソフトウェアを使用してデータの場所の割り当てを制御します。」
- ^ 「TI-99/4Aの内部アーキテクチャ」www.unige.ch . 2023年3月8日閲覧。
- ^ J. Lu、K. Bai、A. Shrivastava、「SSDM: ソフトウェア管理マルチコア (SMM) 向けスマート スタック データ管理」、Design Automation Conference (DAC)、2013 年 6 月 2 ~ 6 日
- ^ K. Bai、A. Shrivastava、「限られたローカルメモリのマルチコアアーキテクチャ向けの自動かつ効率的なヒープデータ管理」、Design Automation and Test in Europe (DATE)、2013
- ^ K. Bai、J. Lu、A. Shrivastava、B. Holton、「CMSM: ソフトウェア管理マルチコア向けの効率的で効果的なコード管理」、CODES+ISSS、2013
- ^ Patterson, David (2009 年 9 月 30 日)。「新しい NVIDIA Fermi アーキテクチャにおけるトップ 10 のイノベーションと、トップ 3 の次の課題」(PDF)。Parallel Computing Research Laboratory & NVIDIA。2013年10 月 3 日閲覧。
- ^ Jia, Zhe; Tillman, Blake; Maggioni, Marco; Scarpazza, Daniele P. (2019 年 12 月 7 日)。マイクロベンチマークによる Graphcore IPU アーキテクチャの分析(PDF) (技術レポート)。Citadel Enterprise Americas, LLC。arXiv : 1912.03413。
外部リンク
- Rajeshwari Banakar、「スクラッチパッド メモリ: キャッシュの設計代替案」。組み込みシステムのオンチップ メモリ // CODES'02。2002 年 5 月 6 ~ 8 日
