JP2005276199A - Dmaコントローラにキャッシュ管理コマンドを提供する方法 - Google Patents

Dmaコントローラにキャッシュ管理コマンドを提供する方法 Download PDF

Info

Publication number
JP2005276199A
JP2005276199A JP2005076047A JP2005076047A JP2005276199A JP 2005276199 A JP2005276199 A JP 2005276199A JP 2005076047 A JP2005076047 A JP 2005076047A JP 2005076047 A JP2005076047 A JP 2005076047A JP 2005276199 A JP2005276199 A JP 2005276199A
Authority
JP
Japan
Prior art keywords
dma
cache
command
data
commands
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005076047A
Other languages
English (en)
Inventor
Charles Ray Johns
チャールズ・レイ・ジョーンズ
James Allan Kahle
ジェームズ・アラン・カーレ
Peichun Peter Liu
ペイチュン・ピーター・リウ
Quang Truong Thuong
スオン・ウアン・スロン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2005276199A publication Critical patent/JP2005276199A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)

Abstract

【課題】DMA機構およびキャッシュをサポートするシステム中でキャッシュ管理コマンドを提供するための方法およびシステムを提供すること。
【解決手段】プロセッサによってDMA機構がセットアップされる。そのプロセッサで動くソフトウェアがキャッシュ管理コマンドを生成する。DMA機構はコマンドを実行し、それによって、キャッシュのソフトウェア・プログラム管理を可能にする。コマンドは、キャッシュにデータを書き込むためのコマンド、キャッシュからデータをロードするためのコマンド、およびキャッシュ中のもはや必要としないデータにマーキングするためのコマンドを含む。そのキャッシュは、システム・キャッシュ、またはDMAキャッシュとすることができる。
【選択図】図1

Description

本発明は、一般にメモリ管理に関し、より詳細には、DMA(ダイレクト・メモリ・アクセス)機構の使用によるキャッシュのソフトウェア・プログラムでの管理に関する。
関連出願
本出願は、2003年3月27日に出願された「DMAプリフェッチ」(第10/401,411号)、および2003年7月31日に出願された「キャッシュ可能なDMA」(第10/631,590号)と題する同時継続の米国特許出願に関係する。
マルチプロセッサの設計では、DMAエンジンやDMAコントローラなどのDMA機構は、情報を、あるメモリ・タイプからそのメモリ・タイプを含まない別のメモリ・タイプ(例えば、キャッシュ)に移動し、またはあるメモリ位置から他のメモリ位置に移動するのに使用される。具体的には、DMA機構は、情報をシステム・メモリからプロセッサのローカル記憶装置に移動する。DMAコントローラが情報をシステム・メモリからプロセッサのローカル記憶装置に移動しようとしたとき、情報をメモリからプロセッサのローカル記憶装置にフェッチしロードするのに遅延を生じることがある。情報の移動によって、複数のプロセッサ・サイクルを消費する可能性がある。その遅延は、マルチプロセッサ・システム内でのメモリ待ち時間およびコヒーレンシ(coherency)アクションを含む多くのファクタが累積されたものである。単一のプロセッサ・システムにおいてさえ、メモリ・アクセスは、多くのサイクル数を費やす可能性がある。複数のメモリ・タイプを有し、いくつかのメモリとプロセッサの間の距離が比較的大きいマルチプロセッサ・システムでは、メモリ・アクセスを待つプロセッサまたはDMAに関する問題はさらに悪くなる。
プロセッサは、プロセッサのためのメモリ・アクセスにおける遅延を低減するためにキャッシュを備えることができ、したがってそのプロセッサで動作するソフトウェアの性能を改善することができる。プロセッサは、さらに性能を改善するためにキャッシュを管理する命令を提供することができる。
米国特許出願第10/401,411号 米国特許出願第10/631,590号
したがって、DMA転送におけるメモリ・アクセスの待ち時間を低減するために、DMA機構を使用して、キャッシュをソフトウェア・プログラムで管理することが、マルチプロセッサ・システムにおいて求められている。
本発明は、DMA機構およびキャッシュをサポートするシステム中でキャッシュ管理コマンドを提供するための方法およびシステムを提供する。DMA機構は、プロセッサによってセットアップされる。そのプロセッサで動作するソフトウェアは、キャッシュ管理コマンドを生成する。DMA機構は、そのコマンドを実行し、それによって、キャッシュのソフトウェア・プログラム管理を可能にする。
本発明およびその利点をより完全に理解するために、添付の図面とともに以下の説明を次に参照する。
以下の議論では、本発明の十分な理解を提供するために数多くの特有の詳細な説明が述べられている。しかし、当業者であればこのような特有の詳細な説明がなくとも本発明を実施可能であることは明らかであろう。他の場合では、本発明の不要な詳細部もあいまいにしないために、周知のエレメントを概略図またはブロック図の形で示している。
本明細書に記載のすべての機能は、他に指示のない限り、ハードウェアもしくはソフトウェア、あるいはそれらの何らかの組合わせ中で実施できることもさらに留意されたい。しかし、好ましい実施形態では、他に指定のない限り、その機能は、コンピュータ・プログラム・コードなどのコード、ソフトウェア、またはこのような機能を実施するために符号化された集積回路、あるいはそれらの組合わせに基づいたコンピュータまたは電子データ・プロセッサなどのプロセッサによって実施される。
図1は、キャッシュ可能なDMA機構およびDMAキャッシュを有する非対称異機種マルチプロセッサ・コンピュータ・システムを示すブロック図である。キャッシュを有するDMA機構をキャッシュ可能DMA機構と呼び、そのキャッシュをDMAキャッシュと呼ぶものとする。
非対称異機種マルチプロセッサ・コンピュータ・システム100は、キャッシュ可能なDMA機構を介して1つまたは複数の関連する非対称プロセッサ108(APU)に密結合された、共通の共用メモリまたはシステム・メモリ104を有する標準的なマルチプロセッサ構成における1つまたは複数の制御プロセッサ106(PU)から構成されており、APUのそれぞれがプロセッサ110およびローカル・メモリ112を備えている。
APU108は、そのローカル・メモリ112との間のDMAオペレーションを介して、共通の共用メモリまたはシステム・メモリ104に間接的にアクセスすることができる。DMAオペレーションは、DMAコントローラ150によって実施される。DMAコントローラ150は、接続114によってDMAキャッシュ102に接続されており、DMAキャッシュ102は、接続116によってシステム・メモリ104に接続されている。DMAコントローラ150はまた、接続124によってシステム・メモリ104に直接接続されている。
APU108のプロセッサ110、およびAPU108のローカル・メモリ112は、接続120、122によってDMAコントローラ150にそれぞれ接続されている。
一代替実施形態では、DMAコントローラ150はさらに、直接PU106に接続される。この接続を用いることによって、PU106はDMAコマンドおよびDMAキャッシュ管理コマンドを発行することができる。この接続により、ソフトウェアにより柔軟性が提供される。DMAコントローラ150とPU106の間でこの直接接続を有する代替実施形態ではまた、PU106によって発行されたコマンドに対してDMAコントローラ150に追加される関連のDMAコマンド・キューがある。DMAコマンド・キューに関するさらなる情報については、以下の、図2の議論を参照されたい。また、図示されていない2つのキュー(APUキューとPUキュー)にあるコマンドの実行順序を決定するために、選択マルチプレクサ(mux)が2つのキューの間に追加される。任意の選択方法、例えばラウンド・ロビンを使用することができる。
一代替実施形態では、すべてのPU106とインターフェースするために、1つまたは複数の追加のキャッシュを使用することができる。この1つまたは複数のキャッシュは、PU106およびシステム・メモリに接続されるはずである。一代替実施形態では、DMAキャッシュはないが、PU106およびシステム・メモリ104に接続された1つまたは複数のキャッシュがある。DMAコントローラ150上で実行されるコマンドは、PU106およびシステム・メモリ104に接続された1つまたは複数のキャッシュのオペレーションに影響を与える。
データは、DMAキャッシュ102にフェッチされる。DMAコントローラ150がDMAキャッシュ102に記憶されているデータを要求したとき、DMAコントローラ150はそのデータを取り出すためにシステム・メモリ104にまですべて戻る必要はない。そうではなく、DMAコントローラ150は、DMAキャッシュ102にアクセスしてそのデータを取り出し、ローカル・メモリ112にデータを転送する。DMAキャッシュ102とローカル・メモリ112の間のデータ転送は、システム・メモリ104とローカル・メモリ112の間でデータを転送するより何倍も速い。その結果、プロセッサ110で動くプログラムはずっと高速に動作することができる。
図2は、APU108またはPU106で動くソフトウェアによって作成されたキャッシュ管理コマンドを実行するように構成されたDMAコントローラ200の拡大図を示すブロック図である。APU108またはPU106で動くソフトウェアは、DMAキャッシュ210のオペレーションを制御するためのコマンドを生成する。そのコマンドは、APU108またはPU106からDMAコントローラ200に送られ、次いで実行される。その結果、APU108またはPU106で動くソフトウェア・プログラムは、DMAキャッシュ210の管理を制御する。
DMAコントローラ200は、接続214を介してAPU108からコマンドを受け取る。そのコマンドは、DMAコマンド・キュー202中に置くことができる。そのコマンドに関連するパラメータは、転送サイズや、タグ、アドレッシング情報などの情報を提供する。DMAコントローラのアンロール(unroll)および変換ロジック・コンポーネント204は、転送長が完全に満たされるまでDMAコマンドおよびそのパラメータによって記述されたDMAオペレーションをアンロールして、1つまたは複数のより小さなバス要求218に変換する。アンロールおよびバス要求の発行は、並列に行うことができる。バス要求は、DMAデータ・キャッシュ210、およびローカル・メモリ112やシステム・メモリ104などの他のメモリに結合されたマルチプロセッサ・コヒーレント・バス(MPコヒーレント・バス)232で転送される。データは、接続224、226、228、230を経由し、インバウンド・データ・バッファ208とアウトバウンド・データ・バッファ206を介してDMAデータ・キャッシュ210とローカル・メモリ112の間で受け渡しされる。MPコヒーレント・バス要求、データ転送、および次のバス要求の発行はすべて並列に行うことができる。
キャッシュ管理のためのコマンドは、データをキャッシュに記憶し、キャッシュからのデータを書き込み、キャッシュ中のデータを消去し、キャッシュ中のもはや必要としないデータをマーキングするためのコマンドを含む。コマンドのパラメータは、記憶すべきまたは書き込むべきデータの位置、および他の情報を指定する。DMAキャッシュ210が実装されると、DMAコントローラ200がコマンドを実行することにより、DMAキャッシュ210のオペレーションが管理される。これらのコマンドは、DMAキャッシュが実装されない場合であっても使用することができる。このような実施形態では、DMAコントローラ200がコマンドを実行することにより、DMAコントローラが転送しているデータを保持する他のキャッシュに影響を与えることになるであろう。
本発明の一実施形態では、パラメータには、クラス・ライン(CL)、タグ(TG)、転送サイズ(TS)、有効アドレス・ハイ(EAH)、および有効アドレス・ロー(EAL)が含まれる。TSはコマンドで操作するデータのバイト数を示す。キャッシュ管理制御コマンドはすべて、暗黙のタグ特有のバリアを有する。暗黙のタグ特有のバリアは、以前に発行された同じタグIDを有するすべてのコマンドが完了するまで、同じタグIDを有するキャッシュ管理制御コマンドおよびその後に発行されるすべてのコマンドが、実行されないようにする。EAHおよびEALは組み合わされ、または結合されて有効アドレスが作成される。一実装形態では、EAHはアドレスの上位32ビットであり、EALは下位32ビットである。それらを結合して、64ビットのアドレスが作成される。特有のコマンドは、次のものを含む。
1.Data_cache_range_touch
このコマンドは、コマンドで指定されるアドレス範囲に対して、ゲット(すなわち、ロード)・コマンドが発行される可能性があるというDMAコントローラ200への指示を含む。DMAコントローラ200は、その有効アドレスおよび転送サイズによって識別された範囲のデータを関連のDMAキャッシュに移動しようとする。このコマンドは、DMAキャッシュを有しない実施形態でも使用することができ、メモリのコヒーレンシが必要とされるストレージのために、他のシステム・キャッシュに変更データをシステム・メモリへ記憶させるようにする。変更データをシステム・メモリへ記憶することにより、将来のDMA転送の待ち時間を低減することができる。その記憶は、必ずしも他のキャッシュ中のラインを無効にする必要はない。このコマンドはまた、ソフトウェアによるコヒーレンシの維持にも使用することができる。
2.data_cache_range_touch_for_store
このコマンドは、コマンドで指定されるアドレス範囲に対して、プット(すなわち、記憶)・コマンドが発行される可能性があるというDMAコントローラ200への指示を含む。DMAコントローラ200は、その有効アドレスおよび転送サイズによって識別された範囲のデータを関連のDMAキャッシュに移動しようとする。このコマンドは、コマンド1とは対照的に、データを変更する意図があることをDMAコントローラ200に知らせる。マルチプロセッサ・システムは、この知識を用いて他のシステム・キャッシュ中のデータの無効な(無効化された)コピーをマーキングし、したがって、現在のキャッシュがそのデータの唯一の所有者であるようにする。データの唯一の所有者は、コヒーレンシ・アクションを行う必要なく、データを修正することができる。このコマンドは、DMAキャッシュを有しない実施形態でも使用することができ、メモリのコヒーレンシが必要とされるストレージのために、他のシステム・キャッシュに変更データをシステム・メモリへフラッシュさせるようにする。変更データをシステム・メモリへフラッシュすることにより、将来のDMA転送の待ち時間を低減することができる。フラッシュは、他のキャッシュ中のラインを無効にする。このコマンドはまた、ソフトウェアによるコヒーレンシの維持にも使用することができる。
3.data_cache_range__set_to_zero
このコマンドは、有効アドレスおよび転送サイズによって指定されるストレージの範囲をゼロに設定する。DMAキャッシュを有する一実施形態では、このコマンドは、DMAコントローラ200がシステム・メモリの領域に関連するキャッシュ・ラインの所有権を取得し、DMAキャッシュ中のデータをゼロにするようにする。システム・メモリの領域は実質的にゼロにされる。このコマンドは、DMAキャッシュを有しない実施形態で、システム・メモリの領域をゼロにするためにも使用することができる。DMAキャッシュを有しない実施形態では、システム・メモリ領域にはゼロが書き込まれる。
4.data_cache_range_store
有効アドレスおよび転送サイズによって指定されるデータ・ブロックが変更されていると見なされる場合、それはメイン・ストレージに書き込まれる。関連するプロセッサのDMAキャッシュ中で変更されている場合もデータ・ブロックは変更され、あるいはそのストレージがメモリのコヒーレンシを必要とする場合、システム中のどのキャッシュ中のデータ・ブロックも変更される。データ・ブロックは、キャッシュ中に残る可能性もあるが、変更されているとは見なされなくなる。このコマンドは、DMAを有しない実施形態で使用することができ、メモリのコヒーレンシが必要されるストレージのために、他のシステム・キャッシュに変更データをシステム・メモリへ記憶させる。変更データをシステム・メモリへ記憶することにより、将来のDMA転送の待ち時間を低減することができる。この記憶は、必ずしも他のキャッシュ中のラインを無効にする必要はない。このコマンドはまた、ソフトウェアによるコヒーレンシの維持にも使用することができる。
5.data_cache_range_flush
メモリのコヒーレンシが必要なストレージであり、有効アドレスおよび転送サイズによって指定されるデータ・ブロックがシステム中の任意のキャッシュ中で変更されている場合、データ・ブロックはメイン・ストレージに書き込まれ、すべてのプロセッサのキャッシュ中で無効化される。メモリのコヒーレンシが必要なストレージであり、有効アドレスおよび転送サイズによって指定されるデータ・ブロックがいずれのキャッシュ中でも有効である場合、関連するキャッシュ・ブロックは無効化される。
メモリのコヒーレンシが必要なストレージではなく、データ・ブロックが、発行している(issuing)APUのDMAキャッシュ中で変更された場合、変更ブロックは、メイン・ストレージに書き込まれ、発行しているAPUのDMAキャッシュ中で無効にされる。メモリのコヒーレンシが必要なストレージではなく、データ・ブロックが、発行しているAPUのDMAキャッシュ中で有効である場合、DMAコントローラに関連するDMAキャッシュ中でラインが無効化される。
このコマンドは、DMAを有しない実施形態中で使用することができ、他のシステム・キャッシュに変更データをシステム・メモリへフラッシュさせる。変更データをシステム・メモリへフラッシュすることにより、将来のDMA転送の待ち時間を低減する。フラッシュは、他のキャッシュ中のラインを無効にする。このコマンドはまた、ソフトウェアによるコヒーレンシの維持にも使用することができる。
多くの代替または追加のコマンドおよびコマンド形式を使用することができる。当業者であれば、容易に追加のDMAコマンドを定義することができる。それらには、これに限らないが、data_cache_range_invalidateおよびストライド・コマンド形式が含まれる。ストライド方式(touch)では、例えば、非連続のデータ・ブロックにアクセスする。例えば、8ブロックにアクセスし、64ブロックをスキップし、8ブロックにアクセスし、64ブロックをスキップする。ストライド方式は、グラフィックスおよびマトリクス・オペレーションで有益であり得る。さらに、様々なフラッシュもしくは記憶の形式も使用することができる。より一般的には、DMAコマンド・セットは、今日のプロセッサ中で見られる、キャッシュ管理のための同じ機能を実施するように拡張することができる。
他のパラメータを同じまたは他のDMAコントローラ・アーキテクチャに使用することもできる。例えば、コマンドは、有効アドレスではなく、実アドレスを参照し、あるいはタグを含まないこともできる。コマンドは、開始アドレスおよび転送サイズではなく、転送すべきデータの開始および終了アドレスを参照することもできる。より簡単には、コマンドは固定したデータ・ブロック・サイズに対して1度に働くこともできる。その場合、転送サイズ・パラメータまたはその等価な形態は必要ないはずである。
DMAキャッシュを制御するためのDMAコマンドの多くの様々な形式、およびコマンドが実行される多くの様々な方式があり得る。パラメータは、他の情報を含むことができ、あるいはアドレッシング情報だけを含むこともできる。コマンドが単一のデータ・ブロックに対して働く場合、コマンドを1つまたは複数のより小さなバス要求にアンロールする必要はない。各コマンドがバス要求を生成する。
次に図3を参照すると、図1に示すキャッシュ可能なDMA機構を適用できる、DMAロードのためのキャッシュ機構のオペレーションを示す流れ図が示されている。図3は、キャッシュ管理コマンドを用いてデータをDMAキャッシュにプリフェッチするためのステップを含む。
ステップ302で、DMAキャッシュ管理コマンドが、データをDMAキャッシュ102にプリフェッチするために発行される。ステップ304で、DMA機構は、システム・メモリからDMAキャッシュ102へのデータ転送の実施を開始する。例えば、図1を見ると、DMAコントローラ150は、システム・メモリ104からDMAキャッシュ102にデータ転送を行う。図3に戻ると、ステップ306で、システム・メモリのデータを要求するためのDMAロード要求が発行される。ステップ308で、要求されたデータがDMAキャッシュ102中で見つけられたかどうか判定される。ステップ308で、要求されたデータがDMAキャッシュ102中で見つかった場合(キャッシュ・ヒット)、プロセスは、ステップ310に進み、要求されたデータがDMAキャッシュ102からローカル・メモリ112に直接ロードされる。ステップ308で、要求されたデータがDMAキャッシュ102中で見つからない場合(キャッシュ・ミス)、プロセスはステップ312に進み、要求されたデータはシステム・メモリ104からローカル・メモリ112にロードされる。
ステップ302で発行されたDMAキャッシュ管理コマンド、およびステップ304で実施された転送の結果、ステップ308におけるキャッシュ・ヒットの確率は、ステップ302と304が実施されなかった場合よりずっと高い。したがって、キャッシュ管理コマンドの提供、およびAPU108上で実行されるソフトウェア・プログラムによるキャッシュ管理コマンドの生成によって、DMAキャッシュ102のより効率的な使用が可能になる。プログラムは、どのシステム・メモリ104のデータが必要になるか前もって知ることができ、キャッシュ管理コマンドをDMAコントローラ150に発行してそのデータをDMAキャッシュ102にプリロードし、それによって、ソフトウェア・プログラムはデータに高速アクセスできるようになる。その結果、データの取り出しを待っている待ち時間の多くが解消される。これらのキャッシュ管理コマンドが提供されない場合は、APU108によって要求されたデータは、DMAキャッシュ102中でほとんど見つからない可能性がある。
図3は、キャッシュ管理コマンドを1つだけ使用(DMAロードのためのプリフェッチ)する場合を示しているが、当業者であれば他のDMAオペレーション(例えば、DMA記憶)用にキャッシュ管理のための類似のフローを開発することができる。さらに、キャッシュ管理コマンドはまた、他のシステム・オペレーション(例えば、ソフトウェアよるキャッシュ・コヒーレンシの管理およびI/O転送)のために使用することもできる。
ローカル・メモリ112にデータを書き込み、かつシステム・メモリ104にライトバックすることを、本発明の真の趣旨から逸脱することなく別の方式とすることができる。例えば、DMAキャッシュ102を介してデータをシステム・メモリ104にライトバックすることができる。あるいは、DMAキャッシュ102を経由せずにデータをシステム・メモリ104に直接ライトバックすることもできる。後者の場合、システム・メモリ104にライトバックされるデータのためのキャッシュ・エントリを無効化することもできる。同様に、システム・メモリ104に要求したデータがDMAキャッシュ102上で見つからなかったとき、データをDMAキャッシュ102およびローカル・メモリ112に書き込み、またはローカル・メモリ112だけに、またはDMAキャッシュ102だけに書き込むことができる。後者の場合、データをローカル・メモリ112にロードするために、ステップ312に代えて、2つのステップが必要となる。第1ステップでは、データがDMAキャッシュ102に運ばれる。第2ステップは、ステップ310と同じである。このステップで、要求されたデータはDMAキャッシュ102からローカル・メモリ112にロードされる。データのローカル・メモリ112への書込みおよびシステム・メモリ104へのライトバックのプロセスに関するこれらおよび他の詳細は、これ以上ここでは開示されない。
図4は、本発明の一実施形態におけるDMAコマンドのアンロールを示す流れ図である。ステップ402で、DMAコントローラ150に接続されているAPU108または他のプロセッサによってコマンドが発行され、DMAコマンド・キュー202に記憶される。例えば、図1で、APU108がDMAコントローラ150にコマンドを発行する。図4に戻ると、ステップ404で、DMAコマンド・キュー202から(タグまたは他の修飾子に基づいて)コマンドが送り出される。DMAコントローラ150が制御プロセッサ106に直接接続されており、かつ2つのプロセッサDMAキューが存在する代替の実施形態では、コマンドおよびタグは関連するキュー用とだけ見なされる。各キューから送り出されたコマンド同士の間を選択するにはまた、他のステップが必要となる。他の実施形態では、DMAコントローラは、一度に1つのコマンドを処理し、またコマンド・パラメータは、記憶されフェッチされているデータの他のパラメータを参照することができる。
ステップ406で、コマンドは、アンロールおよび変換ロジック204を用いて、キャッシュ・ブロック・サイズのサブコマンドへとアンロールされる。ステップ408から414は、ステップ406のサブステップを示す。ステップ408で、各ブロックの有効アドレス(EA)が、正しいサイズのコマンドの実アドレスに変換される。ステップ410で、データ・ブロックに対するバス要求が発行される。ステップ412で、(キャッシュ・ブロック・サイズまたはストライド値によって増分されて)EAが更新される。EAの更新および次のバス要求は、並列に行うことができる。ステップ414で、バス要求に対するMPコヒーレント・バス結果が取得される。ステップ416で、バス要求に対するデータが転送される。MPコヒーレント・バス結果、データ転送、および次のバス要求の発行は、すべて並列に行うことができる。ステップ418で、コマンドの転送サイズがすべて満たされるまでステップ406から416が繰り返される。
他の実施形態では、コマンドはアンロールの必要がないデータの単一ブロックを参照することもできる。他の実施形態では、コマンドは、パラメータとして有効アドレスではなく実アドレスを使用し、あるいは影響を受けるデータのアドレスを参照する他の任意のパラメータを使用することもできる。他の実施形態では、バスは、MPコヒーレント・バスではなく、様々なシステム・ストレージ装置内で要求されるデータを転送するための任意の適切な1つまたは複数のバスとすることもできる。
本発明は、多くの形式および実施形態を取り得ることが理解されよう。したがって、本発明の趣旨または範囲を逸脱することなく、前の記載においていくつかの変形を行うことができる。ここに概要を示した機能によって、様々なプログラミング・モデルを可能とすることができる。特定のプログラミング・モデルのいずれかが好ましいとしてこの開示を読むべきではなく、この開示は、これらのプログラミング・モデルを構築できるその基礎となる機構を対象としている。
このように、本発明を、その好ましい実施形態のいくつかを参照することによって説明してきたが、開示の諸実施形態は、限定的ではなく例示的な性質のものであり、前述の開示には、広い範囲の変形、修正、変更、および代用が企図されており、いくつかの例では、本発明のいくつかの機能が、それに対応するその他の機能を使用せずに実施できることに留意されたい。当業者であれば、好ましい実施形態に関する前の説明を見直すことによって、かかる多くの変形形態および実施形態を望ましいものと考えることもあり得る。したがって、添付の特許請求の範囲は広く解釈され、また本発明の範囲に合致した形で解釈されるのが適切である。
キャッシュ可能なDMA機構およびDMAキャッシュを有する非対称異機種マルチプロセッサ・コンピュータ・システムを示すブロック図である。 キャッシュ管理のためにDMAコマンドが実行されるように構成されたDMAコントローラの拡大図を示すブロック図である。 図1および図2に示すDMA機構に適用可能なキャッシュ機構のオペレーションを示す流れ図である。 DMAキャッシュ管理のためのコマンドのアンロールを示す流れ図である。
符号の説明
100 コンピュータ・システム
102 DMAキャッシュ
104 システム・メモリ
106 制御プロセッサ、PU
108 非対称プロセッサ、APU
110 プロセッサ
112 ローカル・メモリ
114、116、120、122、124 接続
150、200 DMAコントローラ
202 DMAコマンド・キュー
204 DMAコントローラのアンロールおよび変換ロジック・コンポーネント
206 アウトバウンド・データ・バッファ
208 インバウンド・データ・バッファ
210 DMAキャッシュ、DMAデータ・キャッシュ
214 接続
218 バス要求
224、226、228、230 接続
232 マイクロプロセッサ・コヒーレント・バス

Claims (21)

  1. キャッシュ管理のソフトウェア・プログラムによる制御を提供するシステムであって、
    ソフトウェア・プログラムを実行してキャッシュの管理のためのDMAコマンドを生成するように構成されているプロセッサと、
    前記プロセッサに結合され、キャッシュの管理のために前記DMAコマンドを実行するように構成されているDMAコントローラと
    を備えるシステム。
  2. 前記DMAコントローラに結合されたキャッシュをさらに備えており、前記DMAコントローラに結合された前記キャッシュのオペレーションを管理するために、キャッシュの管理のための前記DMAコマンドを前記DMAコントローラで実行するように構成されている、請求項1に記載のシステム。
  3. 少なくとも1つの前記DMAコマンドが、ゲット・コマンドであり、少なくとも1つの前記DMAコマンドが、プット・コマンドである、請求項1に記載のシステム。
  4. 少なくとも1つの前記DMAコマンドが、フラッシュ・コマンドである、請求項1に記載のシステム。
  5. 少なくとも1つの前記DMAコマンドが、ゼロ・コマンドである、請求項1に記載のシステム。
  6. 前記DMAコマンドのパラメータが、クラス・ライン、タグ、転送サイズ、および有効アドレス・ローを含む、請求項1に記載のシステム。
  7. 前記キャッシュが、前記DMAコントローラに密結合されたDMAキャッシュである、請求項1に記載のシステム。
  8. 前記キャッシュが、システム・メモリのためのキャッシュである、請求項1に記載のシステム。
  9. DMAコントローラおよびプロセッサを備えるシステムにおけるキャッシュ管理のための方法であって、
    キャッシュの管理のためのDMAコマンドを生成するために前記プロセッサでソフトウェアを動作させるステップと、
    前記DMAコントローラに前記DMAコマンドを発行するステップと、
    前記DMAコマンドを実行するステップと
    を含む方法。
  10. キャッシュが、前記DMAコントローラに結合されており、前記DMAコントローラで前記DMAコマンドを実行することにより、前記キャッシュのオペレーションが管理される、請求項9に記載の方法。
  11. 少なくとも1つの前記DMAコマンドが、プット・コマンドであり、少なくとも1つの前記DMAコマンドが、ゲット・コマンドである、請求項9に記載の方法。
  12. 少なくとも1つの前記DMAコマンドが、フラッシュ・コマンドである、請求項9に記載の方法。
  13. 前記キャッシュが、前記DMAコントローラに密結合されたDMAキャッシュである、請求項9に記載の方法。
  14. 前記キャッシュが、システム・メモリのためのキャッシュである、請求項9に記載の方法。
  15. DMAコントローラおよびプロセッサを備えるシステムにおけるキャッシュ管理のためのコンピュータ・プログラムであって、コンピュータ・プログラムが実施されている媒体を有しており、前記コンピュータ・プログラムが、
    キャッシュの管理のためのDMAコマンドを生成するために前記プロセッサでソフトウェアを動作させるためのコンピュータ・コードと、
    前記DMAコントローラに前記DMAコマンドを発行するためのコンピュータ・コードと、
    前記DMAコマンドを実行するためのコンピュータ・コードと
    を含むコンピュータ・プログラム。
  16. 少なくとも1つの前記DMAコマンドが、ゲット・コマンドである、請求項15に記載のコンピュータ・プログラム。
  17. 少なくとも1つの前記DMAコマンドが、プット・コマンドである、請求項15に記載のコンピュータ・プログラム。
  18. 少なくとも1つの前記DMAコマンドが、フラッシュ・コマンドである、請求項15に記載のコンピュータ・プログラム。
  19. 少なくとも1つの前記DMAコマンドが、ゼロ・コマンドである、請求項15に記載のコンピュータ・プログラム。
  20. 前記キャッシュが、前記DMAコントローラに密結合されたDMAキャッシュである、請求項15に記載のコンピュータ・プログラム。
  21. 前記キャッシュが、システム・メモリのためのキャッシュである、請求項15に記載のコンピュータ・プログラム。
JP2005076047A 2004-03-25 2005-03-16 Dmaコントローラにキャッシュ管理コマンドを提供する方法 Pending JP2005276199A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/809,553 US7657667B2 (en) 2004-03-25 2004-03-25 Method to provide cache management commands for a DMA controller

Publications (1)

Publication Number Publication Date
JP2005276199A true JP2005276199A (ja) 2005-10-06

Family

ID=34991472

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005076047A Pending JP2005276199A (ja) 2004-03-25 2005-03-16 Dmaコントローラにキャッシュ管理コマンドを提供する方法

Country Status (4)

Country Link
US (1) US7657667B2 (ja)
JP (1) JP2005276199A (ja)
CN (1) CN100407169C (ja)
TW (1) TWI334540B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012128842A (ja) * 2010-12-16 2012-07-05 Internatl Business Mach Corp <Ibm> キャッシュ・メモリに対する直接アクセスのための装置および方法

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7200689B2 (en) * 2003-07-31 2007-04-03 International Business Machines Corporation Cacheable DMA
US20060100997A1 (en) * 2004-10-27 2006-05-11 Wall Gary C Data caching
US7644198B2 (en) * 2005-10-07 2010-01-05 International Business Machines Corporation DMAC translation mechanism
US7752350B2 (en) * 2007-02-23 2010-07-06 International Business Machines Corporation System and method for efficient implementation of software-managed cache
US8006039B2 (en) * 2008-02-25 2011-08-23 International Business Machines Corporation Method, system, and computer program product for merging data
CN101676887B (zh) * 2008-08-15 2012-07-25 北京北大众志微系统科技有限责任公司 一种基于ahb总线结构的总线监听方法及装置
TWI467381B (zh) * 2008-10-23 2015-01-01 Silicon Image Inc 用於降低記憶體潛時之方法、裝置及系統
US8407427B2 (en) 2008-10-29 2013-03-26 Silicon Image, Inc. Method and system for improving serial port memory communication latency and reliability
JP2011076232A (ja) * 2009-09-29 2011-04-14 Fujitsu Ltd 演算処理装置,半導体集積回路および演算処理方法
WO2014158173A1 (en) * 2013-03-28 2014-10-02 Hewlett-Packard Development Company, L.P. Implementing coherency with reflective memory
WO2015195076A1 (en) * 2014-06-16 2015-12-23 Hewlett-Packard Development Company, L.P. Cache coherency for direct memory access operations
US9904626B2 (en) * 2014-08-29 2018-02-27 Samsung Electronics Co., Ltd. Semiconductor device, semiconductor system and system on chip
US10049052B2 (en) 2014-10-27 2018-08-14 Nxp Usa, Inc. Device having a cache memory
US10210088B2 (en) 2015-12-28 2019-02-19 Nxp Usa, Inc. Computing system with a cache invalidation unit, a cache invalidation unit and a method of operating a cache invalidation unit in a computing system
US11372645B2 (en) * 2020-06-12 2022-06-28 Qualcomm Incorporated Deferred command execution
US20230195490A1 (en) * 2021-12-16 2023-06-22 International Business Machines Corporation Adjunct processor (ap) domain zeroize

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5263142A (en) * 1990-04-12 1993-11-16 Sun Microsystems, Inc. Input/output cache with mapped pages allocated for caching direct (virtual) memory access input/output data based on type of I/O devices
JPH08263424A (ja) 1995-03-20 1996-10-11 Fujitsu Ltd コンピュータ装置
US5893165A (en) 1996-07-01 1999-04-06 Sun Microsystems, Inc. System and method for parallel execution of memory transactions using multiple memory models, including SSO, TSO, PSO and RMO
US5953538A (en) 1996-11-12 1999-09-14 Digital Equipment Corporation Method and apparatus providing DMA transfers between devices coupled to different host bus bridges
US6015279A (en) * 1996-11-15 2000-01-18 Hitachi Metals, Ltd. Vane and method for producing same
US6381657B2 (en) 1997-01-31 2002-04-30 Hewlett-Packard Company Sharing list for multi-node DMA write operations
JP4134357B2 (ja) 1997-05-15 2008-08-20 株式会社日立製作所 分散データ管理方法
US6658537B2 (en) 1997-06-09 2003-12-02 3Com Corporation DMA driven processor cache
US6178533B1 (en) 1997-06-30 2001-01-23 Sun Microsystems, Inc. Method and system for design verification
US5890271A (en) 1997-07-30 1999-04-06 Davco Packing And Seals, Inc. Insertion tool
JPH1165989A (ja) * 1997-08-22 1999-03-09 Sony Computer Entertainment:Kk 情報処理装置
JP3289661B2 (ja) * 1997-11-07 2002-06-10 日本電気株式会社 キャッシュメモリシステム
US6247094B1 (en) 1997-12-22 2001-06-12 Intel Corporation Cache memory architecture with on-chip tag array and off-chip data array
US6205409B1 (en) 1998-06-26 2001-03-20 Advanced Micro Devices, Inc. Predictive failure monitoring system for a mass flow controller
US6401193B1 (en) 1998-10-26 2002-06-04 Infineon Technologies North America Corp. Dynamic data prefetching based on program counter and addressing mode
EP1059589B1 (en) * 1999-06-09 2005-03-30 Texas Instruments Incorporated Multi-channel DMA with scheduled ports
DE19939763A1 (de) 1999-08-21 2001-02-22 Philips Corp Intellectual Pty Multiprozessorsystem
US6363906B1 (en) * 2000-03-06 2002-04-02 Detroit Diesel Corporation Idle shutdown override with defeat protection
US6859862B1 (en) * 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
US6636906B1 (en) 2000-04-28 2003-10-21 Hewlett-Packard Development Company, L.P. Apparatus and method for ensuring forward progress in coherent I/O systems
EP1182561B1 (en) 2000-08-21 2011-10-05 Texas Instruments France Cache with block prefetch and DMA
US6874039B2 (en) 2000-09-08 2005-03-29 Intel Corporation Method and apparatus for distributed direct memory access for systems on chip
JP3681647B2 (ja) 2001-02-21 2005-08-10 株式会社半導体理工学研究センター キャッシュメモリシステム装置
US6526491B2 (en) 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
US20030154349A1 (en) 2002-01-24 2003-08-14 Berg Stefan G. Program-directed cache prefetching for media processors
US6842822B2 (en) 2002-04-05 2005-01-11 Freescale Semiconductor, Inc. System and method for cache external writing
DE10223178B4 (de) 2002-05-24 2004-11-04 Infineon Technologies Ag Schaltungsanordnung mit einer Ablaufsteuerung, integrierter Speicher sowie Testanordnung mit einer derartigen Schaltungsanordnung
US6711650B1 (en) 2002-11-07 2004-03-23 International Business Machines Corporation Method and apparatus for accelerating input/output processing using cache injections
US20050210204A1 (en) 2003-01-27 2005-09-22 Fujitsu Limited Memory control device, data cache control device, central processing device, storage device control method, data cache control method, and cache control method
US20040193754A1 (en) 2003-03-27 2004-09-30 International Business Machines Corporation DMA prefetch
JP2004326633A (ja) 2003-04-28 2004-11-18 Hitachi Ltd 階層型メモリシステム
US7114042B2 (en) 2003-05-22 2006-09-26 International Business Machines Corporation Method to provide atomic update primitives in an asymmetric heterogeneous multiprocessor environment
US7200689B2 (en) 2003-07-31 2007-04-03 International Business Machines Corporation Cacheable DMA
US7287101B2 (en) * 2003-08-05 2007-10-23 Intel Corporation Direct memory access using memory descriptor list

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012128842A (ja) * 2010-12-16 2012-07-05 Internatl Business Mach Corp <Ibm> キャッシュ・メモリに対する直接アクセスのための装置および方法

Also Published As

Publication number Publication date
US20050216610A1 (en) 2005-09-29
TW200613993A (en) 2006-05-01
TWI334540B (en) 2010-12-11
CN100407169C (zh) 2008-07-30
CN1673980A (zh) 2005-09-28
US7657667B2 (en) 2010-02-02

Similar Documents

Publication Publication Date Title
JP2005276199A (ja) Dmaコントローラにキャッシュ管理コマンドを提供する方法
US8725987B2 (en) Cache memory system including selectively accessible pre-fetch memory for pre-fetch of variable size data
US6128703A (en) Method and apparatus for memory prefetch operation of volatile non-coherent data
JP3989457B2 (ja) 局所的なキャッシュ・ブロック・フラッシュ命令
US20050204088A1 (en) Data acquisition methods
US20110173400A1 (en) Buffer memory device, memory system, and data transfer method
US20200104259A1 (en) System, method, and apparatus for snapshot prefetching to improve performance of snapshot operations
ZA200205198B (en) A cache line flush instruction and method, apparatus, and system for implementing the same.
GB2507759A (en) Hierarchical cache with a first level data cache which can access a second level instruction cache or a third level unified cache
CN116134475A (zh) 计算机存储器扩展设备及其操作方法
US11921650B2 (en) Dedicated cache-related block transfer in a memory system
JP2007058349A (ja) キャッシュシステム
US6976128B1 (en) Cache flush system and method
US6973541B1 (en) System and method for initializing memory within a data processing system
JP2009157612A (ja) キャッシュメモリシステム及びキャッシュメモリの制御方法
US6976130B2 (en) Cache controller unit architecture and applied method
JPH08314802A (ja) キャッシュシステム、キャッシュメモリアドレスユニット、およびキャッシュメモリを動作させる方法
US7251710B1 (en) Cache memory subsystem including a fixed latency R/W pipeline
US7373458B2 (en) Cache memory system with multiple ports cache memories capable of receiving tagged and untagged requests
EP3332329B1 (en) Device and method for prefetching content to a cache memory
US8108624B2 (en) Data cache with modified bit array
JP2004240616A (ja) メモリコントローラ及びメモリアクセス制御方法
US20230099256A1 (en) Storing an indication of a specific data pattern in spare directory entries
JP3260566B2 (ja) 情報処理システムにおける記憶制御方法および記憶制御装置
JP5420182B2 (ja) キャッシュメモリシステム、データ処理装置および記憶装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081111

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090327

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090414