(57)【要約】【解決手段】本発明は、ＤＭＡデバイスにおけるメモリバリア生成方法および装置に関する。メモリバリアコマンドとメモリコマンドが受信される。メモリコマンドはメモリバリアコマンドに基づいて実行される。バス操作は、メモリバリアコマンドに基づいて開始される。バス操作承認はバス操作に基づいて受信される。メモリバリアコマンドはバス操作承認に基づいて実行される。特には、メモリバリアコマンドはdmasyncコマンドやdmaeieioコマンドである。【選択図】図１
2008508586.tif 000002
【特許請求の範囲】
【請求項１】
メモリバリアコマンドを受信するステップと、
メモリコマンドを受信するステップと、
前記メモリバリアコマンドに基づいて前記メモリコマンドを実行するステップと、
前記メモリバリアコマンドに基づいてバス操作を開始するステップと、
前記バス操作に基づくバス操作承認を受信するステップと、
前記バス操作承認に基づいてメモリバリアコマンドを実行するステップと、
を備えることを特徴とするＤＭＡ（Direct Memory Access）デバイスにおけるメモリバリア生成方法。
【請求項２】
前記メモリバリアコマンドは、dmasyncコマンドであることを特徴とする請求項１に記載のメモリバリア生成方法。
【請求項３】
前記メモリバリアコマンドは、dmaeieioコマンドであることを特徴とする請求項１に記載のメモリバリア生成方法。
【請求項４】
前記メモリコマンドは、前記メモリバリアコマンドよりも先に実行されることを特徴とする請求項１に記載のメモリバリア生成方法。
【請求項５】
前記メモリコマンドは、前記メモリバリアコマンドよりも後に実行されることを特徴とする請求項１に記載のメモリバリア生成方法。
【請求項６】
前記バス操作は、ＳＹＮＣバス操作であることを特徴とする請求項１に記載のメモリバリア生成方法。
【請求項７】
前記バス操作は、入出力強制イン・オーダー実行（ＥＩＥＩＯ：enforce in-order execution of input/output）バス操作であることを特徴とする請求項１に記載のメモリバリア生成方法。
【請求項８】
前記メモリバリアコマンドは、少なくとも、メモリコマンドバリアタグを含み、前記メモリコマンドは、少なくとも、メモリコマンドタグを含むことを特徴とする請求項１に記載のメモリバリア生成方法。
【請求項９】
前記メモリコマンドは、前記メモリコマンドバリアタグと前記メモリコマンドタグに基づいて実行されることを特徴とする請求項８に記載のメモリバリア生成方法。
【請求項１０】
メモリコマンドとメモリバリアコマンドを受信する第１通信チャネルと、
前記第１通信チャネルと接続され、前記メモリバリアコマンドに基づいてバス操作を開始する展開論理回路と、
前記展開論理回路に接続され、前記バス操作を転送し、バス操作承認を受信する第２通信チャネルと、
前記第１通信チャネル、前記第２通信チャネルおよび前記展開論理回路と接続され、メモリコマンドを実行し、前記バス操作承認に基づいてメモリバリアコマンドを実行するＤＭＡコントローラと、
を備えることを特徴とするＤＭＡ（Direct Memory Access）操作におけるメモリバリア生成装置。
【請求項１１】
前記メモリバリアコマンドは、dmasyncコマンドであることを特徴とする請求項１０に記載のメモリバリア生成装置。
【請求項１２】
前記メモリバリアコマンドは、dmaeieioコマンドであることを特徴とする請求項１０に記載のメモリバリア生成装置。
【請求項１３】
前記バス操作は、ＳＹＮＣバス操作であることを特徴とする請求項１０に記載のメモリバリア生成装置。
【請求項１４】
前記バス操作は、ＥＩＥＩＯバス操作であることを特徴とする請求項１０に記載のメモリバリア生成装置。
【請求項１５】
前記メモリコマンドは、少なくとも、関連するメモリコマンドタグを含み、前記メモリバリアコマンドは、少なくとも、関連するメモリバリアコマンドタグを含むことを特徴とする請求項１０に記載のメモリバリア生成装置。
【請求項１６】
前記ＤＭＡコントローラは、更に、関連するメモリコマンドタグと関連するメモリバリアコマンドタグに基づいてメモリコマンドを実行することを特徴とする請求項１５に記載のメモリバリア生成装置。
【請求項１７】
前記第１通信チャネルおよび前記展開論理回路と接続されるＤＭＡコマンドキューを更に備え、
前記ＤＭＡコマンドキューは、メモリコマンドとメモリバリアコマンドを順序づけして保持することを特徴とする請求項１０に記載のメモリバリア生成装置。
【請求項１８】
複数のデータバッファを更に備え、
前記複数のデータバッファは、少なくともメモリに接続されることを特徴とする請求項１０に記載のメモリバリア生成装置。
【請求項１９】
前記複数のデータバッファは、少なくとも前記第２通信チャネルに接続されることを特徴とする請求項１８に記載のメモリバリア生成装置。
【請求項２０】
コンピュータプログラム自体が格納される媒体をもつコンピュータプログラム製品であって、
メモリバリアコマンドを受信するコンピュータプログラムコードと、
メモリコマンドを受信するコンピュータプログラムコードと、
前記メモリバリアコマンドに基づいて前記メモリコマンドを実行するコンピュータプログラムコードと、
前記メモリバリアコマンドに基づいてバス操作を開始するコンピュータプログラムコードと、
前記バス操作に基づくバス操作承認を受信するコンピュータプログラムコードと、
前記バス操作承認に基づくメモリバリアコマンドを実行するコンピュータプログラムコードと、
を備えることを特徴とするＤＭＡ（Direct Memory Access）デバイスにおけるメモリバリア生成プログラム。
【請求項２１】
前記メモリバリアコマンドはdmasyncコマンドであることを特徴とする請求項２０に記載のメモリバリア生成プログラム。
【請求項２２】
前記メモリバリアコマンドは、dmaeieioコマンドであることを特徴とする請求項２０に記載のメモリバリア生成プログラム。
【請求項２３】
前記バス操作は、ＳＹＮＣバス操作であることを特徴とする請求項２０に記載のメモリバリア生成プログラム。
【請求項２４】
前記バス操作は、ＥＩＥＩＯバス操作であることを特徴とする請求項２０に記載のメモリバリア生成プログラム。
【請求項２５】
前記メモリバリアコマンドは、少なくとも、一のメモリバリアタグを含み、前記メモリコマンドは、少なくとも、一のメモリコマンドタグを含むことを特徴とする請求項２０に記載のメモリバリア生成プログラム。
【請求項２６】
前記メモリバリアタグと前記メモリコマンドタグに基づいて前記メモリコマンドを実行するプログラムコード、を更に備えることを特徴とする請求項２５に記載のメモリバリア生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概しては、ＤＭＡ（Direct Memory Access）制御に関し、より詳細には、ＤＭＡのメカニズムを使って非対称型異種混合マルチプロセッサ環境におけるメモリバリア要素を提供するための技術、に関する。
【背景技術】
【０００２】
従来のマルチプロセッサ（ＭＰ：Multi Processor）システムにおいては、複数のプロセッサが共有メモリにアクセスする。このようなシステムの処理効率を改善するために、ストレージへのアクセス順序制御に関するストレージ・モデルとして、ウィークリー・コンシステント（弱整合：Weakly Consistent）が採用される。ウィークリー・コンシステントにおいては、プロセッサによるアクセスの実行順序、プロセッサ・バスにおけるこれらのアクセスの実行順序、他のプロセッサや機構（mechanism）についてのアクセスの実行順序、ストレージにおけるこれらのアクセスの実行順序はまったくの別々となる可能性がある。
【０００３】
ウィークリー・コンシステントのストレージ・モデルの場合、２以上のプロセッサや機構の間で共有されるストレージに対するアクセス順序はプログラム側で制御しなければならない。従来の対称型マルチプロセッサ（ＳＭＰ：Symmetric Multiprocessor）は、ソフトウェアプログラムが共有メモリに対するストレージ・アクセス順序を強制するための手段をいくつか提供している。たとえば、パワーＰＣ（登録商標）は、「ＳＹＮＣ（「重量ＳＹＮＣ」とよばれることもある）」、「軽量ＳＹＮＣ」、「ＥＩＥＩＯ（Enforce In-order Execution of I/O：入出力の強制イン・オーダー実行）」といった複数のメモリバリア命令を提供する。ＳＹＮＣ命令は、通常、メモリバリアを生成する。すなわち、あるプロセッサは、プログラム・シークェンスにおいてＳＹＮＣ命令より前のＬＯＡＤ命令やＳＴＯＲＥ命令をそのプロセッサ以外の全てのプロセッサや機構について完了させた後でなければ、ＳＹＮＣ命令より後の命令を実行してはならない。
【０００４】
軽量ＳＹＮＣが生成するメモリバリアもＳＹＮＣ命令と同様の順序付け機能を提供する。ただし、軽量ＳＹＮＣ後の命令によるＬＯＡＤは、軽量ＳＹＮＣ前の命令によるＳＴＯＲＥよりも先に実行されてもよく、Ｉ／Ｏメモリ（メモリマップドＩ／Ｏ）に対するアクセスについては順序制御が適用されない。ＥＩＥＩＯ命令が生成するメモリバリアもＳＹＮＣ命令と同様の順序づけ機能を提供する。ただし、Ｉ／Ｏメモリに対するアクセスも順序制御される。ＥＩＥＩＯはＳＴＯＲＥも順序づける。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のＭＰシステムにおいては、緊密に結合された（tightly coupled）プロセッサだけがメモリバリア命令を実行するように制約されている。このため、プロセッシング・ユニット（ＰＵ）のような制御プロセッサには、異種混合ＭＰシステムにおける非対称型プロセッサやデバイスを管理する上で追加的な負担がかかる。このような制約により、場合によってはストレージに対する順序制御ができなくなり、非対称型プロセッサによるシステムリソース管理権限が制約されてしまう可能性がある。
【０００６】
従来のシステムや方法についての問題点や不都合の少なくともいくつかに対処できるメモリバリア命令を提供するための方法やシステムが必要である。
【課題を解決するための手段】
【０００７】
本発明は、ダイレクト・メモリ・アクセス（ＤＭＡ）・デバイスにおいてメモリバリアを生成するための方法を提供する。メモリバリアコマンドが受信され、メモリコマンドも受信される。メモリコマンドはメモリバリアコマンドに基づいて実行される。バス操作（bus operation）はメモリバリアコマンドに基づいて開始される。バス操作承認（bus operation acknowledgement）はバス操作に基づいて受信される。メモリバリアコマンドはバス操作承認に基づいて実行される。
【発明を実施するための最良の形態】
【０００８】
本発明とその優位性についてのより完全に理解するために、添付の図面とあわせて以下の記述を参照されたい。
【０００９】
以下の記述における多数の特定的に詳細な記述は、本発明の充分な理解を可能とするためのものである。しかし、当業者であれば、そのような特定的に詳細な記述がなくとも本発明を実現できるであろう。別の例においては、既知の要素についても模式図やブロック図のかたちで、不必要なほど詳細な部分についても本発明を隠すことなく示す。加えて、ほとんどの部分について、ネットワーク通信、電磁的信号技術などに関する詳細は、そのような詳細が本発明の完全な理解のためには不要であり、関連技術について通常のスキルを持つ人物の理解力の範囲内にあると考えられる限りは省略している。
【００１０】
特に断らない限りは、以下に述べられるすべての機能は、ハードウェアやソフトウェア、あるいはそれらの組み合わせによって実現される。しかし、特に断らない限りは、好ましくは、これらの機能は、コンピュータのプロセッサ、すなわち、コンピュータプログラムコードとしてのコードにしたがって電子データを処理するプロセッサ、ソフトウェア、および／あるいは、このような機能を実現するように設計された集積回路によって実行されるとする。
【００１１】
図１の参照符号の「１００」は、ＤＭＡコントローラを備えるシステムを示す。システム１００は、ＤＭＡコントローラ１１０、ＰＵ（Processing Unit）１３０、ローカルメモリ１３２、メモリ１２０およびＭＰ（Multiprocessor）干渉バス１９０を含む。ＤＭＡコントローラ１１０は、更に、ＤＭＡコマンドキュー１４０、タグキュー１５０、展開／変換論理回路１６０、出力データバッファ１７０および入力データバッファ１８０を備える。
【００１２】
ＤＭＡコントローラ１１０を備えるシステム１００においては、コマンドが発行され、実行される。ローカルメモリ１３２を備えるＰＵ１３０は、コマンドをＤＭＡコマンドキュー１４０に発行する。ＰＵ１３０は任意のタイプのプロセッサであればよく、メインＰＵ（Main PU:MPU）やＳＰＵ（Synergistic PU）などその他適当なプロセッサであればよい。ローカルメモリ１３２はさまざまなタイプのメモリであってもよく、これに限る意図ではないが、キャッシュであってもよい。ＤＭＡコマンドキュー１４０に送られたコマンドはタグ付けされ、各コマンドのタグはタグキュー１５０において追跡される。タグはコマンドごとに割り当てられてもよいし、コマンドの種類を特定するものであってもよい。この場合には、タグに応じたグループが形成される。ＤＭＡコマンドキュー１４０からは、読み出し／書き込みコマンドが図示しない各種コンポーネントに発行される。データの転送は、出力データバッファ１７０や入力データバッファ１８０を介して実行される。コマンドの実行に際しては、たとえば、デコード処理のようにこのほかにも多くの処理が含まれ得る。
【００１３】
従来システムでは、ＤＭＡコマンドキュー１４０のようなＤＭＡコマンドキューのコマンドは、ストリクト・オーダー（strict order）の枠組みにおいては、到着順に実行されている。しかし、ＤＭＡコントローラ１１０は、ウィークリー・オーダー（ウィークリー・コンシステント）の枠組みを採用しており、ＤＭＡコマンドキュー１４０のコマンドをさまざまな順序で実行させることが可能である。更に、ＤＭＡコントローラ１１０は、一連の埋め込みフラグを利用する。埋め込まれたフラグは各コマンドの依存性を示し、コマンドの順次実行のために役に立つ。埋め込みフラグは、たとえば、高優先度のコマンドを低優先度のコマンドよりも先に実行させるために使われる。
【００１４】
より詳細には、コマンドには２つのフラグが埋め込まれる。バリアとフェンスである。どちらも同一タグのグループに属するコマンドだけに影響する。通常、埋め込まれたフェンスフラグは、そのフェンスフラグ付きのコマンドよりも前に発行されたコマンドのうち、同じタググループ内の全てのコマンドが完了するまで、コマンドの実行を抑止する。つまり、フェンスフラグは、フェンスフラグ付きのコマンドを実行する前に、フェンスフラグ付きのコマンドの前に発行された同じタググループに属する全てのコマンドが完了することを要求する。フェンスフラグは、キューにある後続のコマンドには影響しない。たとえば、フェンスフラグ付きコマンドの後に発行されたコマンドは、フェンスフラグ付きのコマンドよりも前に実行可能である。
【００１５】
一方、バリアフラグは、同じタググループであれば、先のコマンドにも後のコマンドにも影響する。通常、バリアフラグは、バリアフラグ付きコマンドよりも前に発行され、かつ、同じタググループに属するコマンドが実行される前に、バリアフラグ付きコマンド自体や同じタググループに属する後続コマンドが実行されるのを禁止する。たとえば、同じタググループに属し、かつ、バリアフラグ付きコマンドの後に発行されたコマンドは、バリアフラグ付きコマンドより前に実行できない。通常、バリアフラグ付きコマンドの前に発行されたコマンドのうち、同じタググループに属するコマンドの全てが完了したとき、バリアフラグ付きコマンドと、その同じタググループに属する後続のコマンドが実行可能となる。
【００１６】
ＰＵ１３０は、また、フェンスフラグやバリアフラグを埋め込む代わりに、バリアコマンドを発行することもできる。バリアコマンドは、タグに関わらず、キューにある全てのコマンドを操作する。バリアコマンドは、それ以前に発行されたコマンド全てが完了するまで、それ以後に発行されたコマンドすべての実行を禁止する。バリアコマンド以前に発行された全コマンドは、キューにある後続のコマンドが実行される前に完了することになる。バリアコマンド以前に発行された全コマンドが完了すると、後続のコマンドが実行可能となる。
【００１７】
ＤＭＡコントローラ１１０は、また、メモリバリアコマンドを受信し、実行できる。メモリバリアコマンドは、システム内における２以上のプロセッサやデバイスについて、ＭＰ干渉バスにおけるメモリ操作（memory transaction）の順序を制御する。図示の実施例においては、ＤＭＡコントローラ１１０は、ダイレクト・メモリ・アクセス・ＳＹＮＣ（dmasync）コマンドと、ダイレクト・メモリ・アクセス・ＥＩＥＩＯ（dmaeieio）コマンドを受信する。ＤＭＡコントローラ１１０は、たとえば、ダイレクト・メモリ・アクセス・軽量ＳＹＮＣ（dmalwsync）コマンドも含め、他のダイレクト・メモリ・アクセス・メモリバリアコマンドも受信できてもよいことは、当業者には理解されるところである。
【００１８】
dmasyncコマンドは、通常、システム内におけるすべてのプロセッサや機構について、先行するＤＭＡコマンドの結果が出ているようにするための仕組みを提供する。dmaeieioコマンドは、通常、システム内におけるすべてのプロセッサや機構について、バス操作の順序を制御するための仕組みを提供する。dmasyncコマンドもバス操作の順序を制御するための仕組みを提供するが、dmaeieioコマンドに比べるとパフォーマンスが落ちることが多い。dmasyncコマンドとdmaeieioコマンドは、コマンドバリアと協働することが多い。図示の実施例におけるdmasyncコマンドやdmaeieioコマンドは、そのタグに特有のバリアを含む。ＤＭＡコントローラ１１０は、その他の形式のダイレクト・メモリ・アクセス・メモリバリアコマンドを受信してもよいことは当業者には理解されるところである。たとえば、フェンスを含むdmasyncコマンドやフェンスを含むdmaeieioコマンドなどが挙げられる。
【００１９】
更に詳細には、dmasyncコマンドは、システム内における別のプロセッサについて以前に発行されたＤＭＡメモリ書き込みが実行されることをソフトウェアの側から保証するための仕組みを提供する。dmasyncコマンドは、強い順序づけ（strong ordering）が必要なときに採用され、既知のパワーＰＣ（登録商標）のＳＹＮＣ命令がプロセッサのロードやストアのために実行するのと同様にして、ＤＭＡアクセスの順序を制御する。特に、順序制御にとっては、ＤＭＡ・ＧＥＴコマンド（DMA Get commands）によるアクセスはロード、ＤＭＡ・ＰＵＴコマンド（DMA Put commands）によるアクセスはストアと捉えることができる。以前に発行されたすべてのＤＭＡ・ＰＵＴコマンド（たとえば、メモリ書き込み）の実行を保証するために、バリアコマンドはdmasyncコマンドに先行する。図示の実施例においては、dmasyncコマンドにはタグが付与され、そのタグに特有のバリアを含む。変形例において、バリアコマンドはdmasyncコマンドに先行する。更に変形例として、フェンスコマンドはdmasyncコマンドに先行する。
【００２０】
dmaeieieoコマンドは、要・ライトスルー（Write-Through）、あるいは、キャッシュ禁止を示す印のついていないコヒーレント（coherent：一貫性の維持される）・ストレージに対するＤＭＡメモリ書き込みの順序をソフトウェアプログラム側で制御するための仕組みを提供する。また、dmaeieioコマンドは、キャッシュ禁止かつガードされているストレージに対するＤＭＡメモリ読み出し・書き込みの順序や、要・ライトスルーを示す印のついているメモリへの保存の順序をソフトウェアプログラム側にて制御するための仕組みを提供する。dmaeieioコマンドは、特定タイプのアクセスだけを順序制御する必要があるときに採用される。dmaeieioコマンドは、既知のパワーＰＣ（登録商標）のＥＩＥＩＯ命令がプロセッサのロードやストアのために実行するのと同様にして、ＤＭＡアクセスの順序を制御する。特に、順序制御にとっては、ＤＭＡ・ＧＥＴコマンドによるアクセスはロード、ＤＭＡ・ＰＵＴコマンドによるアクセスはストアと捉えることができる。以前に発行されたすべてのＤＭＡコマンドの実行を保証するため、バリアコマンドはdmaeieioコマンドに先行する。図示の実施例においては、dmaeieioコマンドにはタグが付与され、そのタグに特有のバリアを含む。変形例において、バリアコマンドはdmaeieioコマンドに先行する。更に変形例として、フェンスコマンドはdmaeieioコマンドに先行する。
【００２１】
ＤＭＡコントローラ１１０は、展開／変換論理回路１６０を介して、ＤＭＡコマンド（およびその関連パラメータ）が示すＤＭＡ操作を、伝送長分いっぱいまで、１つ、またはそれ以上の数のバス操作に分解する。ウィークリー・コンシステントのメモリモデルにおいては、展開／変換論理回路１６０が生成する小さなバス操作は、ＭＰ干渉バス１９０によってアウト・オブ・オーダー（順不同）に処理されてもよい。システム内における他のプロセッサについても同様である。また、他コマンドから生成される小さなバス操作についても同様である。処理効率を改善するため、ＤＭＡコマンドキュー１４０への投入順序とは異なる順序にてＤＭＡコマンドを実行してもよい。いずれにしても、ソフトウェアからは、ＤＭＡコマンドキュー１４０への投入順序と同じ順序にてＤＭＡコマンドが開始しているようにみえる。
【００２２】
ＤＭＡシステム１００を動作させるために、一連の必要な接続がなされる。ＰＵ１３０は、図示しない第１通信チャネルを介してローカルメモリ１３２に接続される。また、ＰＵ１３０は、第２通信チャネル１０１を介して、ＤＭＡコマンドキュー１４０と接続される。ローカルメモリ１３２は、第３通信チャネル１１２を介してメモリと接続される。メモリ１２０は、第４通信チャネル１０２を介して出力データバッファ１７０と接続される。メモリ１２０は、また、第５通信チャネル１０３を介して入力データバッファ１８０と接続される。ＤＭＡコマンドキュー１４０は、第６通信チャネル１０４と第７通信チャネル１０５を介して展開／変換論理回路１６０と接続される。タグキュー１５０は、第８通信チャネル１０６を介して展開／変換論理回路１６０と接続される。出力データバッファ１７０は、第９通信チャネル１０７を介してＭＰ干渉バス１９０と接続される。入力データバッファ１８０は、第１０通信チャネル１０８を介してＭＰ干渉バス１９０と接続される。展開／変換論理回路１６０は、第１１通信チャネル１０９を介してＭＰ干渉バス１９０と接続される。
【００２３】
図２における参照符号「２００」は、ＭＰシステムを示す。ＭＰシステムは、共有メモリ２１０、ローカルメモリ２１２、第１ＰＵ２２０、第１キャッシュ２２２、第１ＤＭＡコントローラ２２４、第２ＤＭＡコントローラ２２６、第２ＰＵ２２８、第２キャッシュ２３０を含む。図示の実施例においては、第１キャッシュ２２２と第２キャッシュ２３０はシステムキャッシュであり、既知のものであり、各プロセッサのための外部メモリインタフェースとして機能する。
【００２４】
ＭＰシステム２００における複数のプロセッサは、独立して、あるいは、協働して、さまざまなメモリデバイスを対象としてデータの読み書きを実行できる。第１ＰＵ２２０は、読み出しコマンドや書き込みコマンド、dmasyncコマンド、dmaeieioコマンドを第１ＤＭＡコントローラ２２４に送出する。第２ＰＵ２２８も、読み出しコマンドや書き込みコマンド、dmasyncコマンド、dmaeieioコマンドを第２ＤＭＡコントローラ２２６に送出する。第１ＤＭＡコントローラ２２４や第２ＤＭＡコントローラ２２６は、ローカルメモリ２１２と共有メモリ２１０を対象としたデータの読み出しや書き込みを実行する。図示の実施例においては、一つのＤＭＡコントローラに一つのＰＵが対応づけられる。
【００２５】
稼働中において、第１ＤＭＡコントローラ２２４は、第１ＰＵ２２０から、共有メモリ２１０とローカルメモリ２１２の間でのデータ移動指示コマンドを受信する。同様に、第２ＤＭＡコントローラ２２６は、第２ＰＵ２２８から、共有メモリ２１０とローカルメモリ２１２の間でのデータ移動指示コマンドを受信する。ＤＭＡコマンドの伝送方向は、常にＰＵ側から参照されるため、共有メモリ２１０からローカルメモリ２１２にデータを転送するコマンドはＧＥＴコマンドと考えることができるし、ローカルメモリ２１２から共有メモリ２１０にデータを転送するコマンドはＰＵＴコマンドと考えられる。ＤＭＡコマンドのパラメータは、データ伝送サイズ、タグ、アドレス情報などのデータ転送に関する追加的な情報である。
【００２６】
第１ＤＭＡコントローラ２２４がdmasyncコマンドに出会うと、dmasyncコマンドと同じタグが付与され、かつ、dmasyncコマンドの前にＤＭＡコマンドキューに投入されたコマンドすべてを終了させる。特に、dmasyncコマンドと同じタグを付与されている全ＰＵＴコマンドによる書き込みデータはＭＰ干渉バスに伝送され、プロトコルにおいて再送処理が発生する可能性のある地点を通り抜けなければならない。dmasyncコマンドと同じタグを付与されている全ＧＥＴコマンドによる読み出しデータは、ローカルメモリ２１２において見えていなければならない。
【００２７】
いったん、dmasyncと同じタグを付与されている先行コマンドがすべて完了すると、ＤＭＡコントローラ２２４は、ＳＹＮＣ（同期）バス操作（SYNC bus transaction）を開始する。ＳＹＮＣバス操作は、システム内における他のプロセッサや機構に対するバリアポイント（防壁点）として機能する。他のプロセッサや機構は、ＳＹＮＣバス操作を承認する前に、dmasync発行元プロセッサによる操作をすべての終了させなければならない。システム内におけるプロセッサや機構のすべてがＳＹＮＣバス操作を承認すると、ＤＭＡコントローラ２２４だけがdmasyncコマンドを完了させることができる。このように、dmasyncコマンドは、dmasyncと同じタグのＤＭＡコマンドすべての結果を確定させ、システム内のすべてのプロセッサや機構から見えるようにする。第２ＤＭＡコントローラ２２６は、第１ＤＭＡコントローラ２２４と同様の方式にてdmasyncコマンドを処理する。
【００２８】
第１ＤＭＡコントローラ２２４がdmaeieioコマンドに出会うと、dmaeieioコマンドと同じタグが付与され、かつ、dmaeieioコマンドの前にＤＭＡコマンドキューに投入されたコマンドすべてを終了させる。特に、dmaeieioコマンドと同じタグを付与されている全ＰＵＴコマンドによる書き込みデータはＭＰ干渉バスに伝送され、プロトコルにおいて再送処理が発生する可能性のある地点を通り抜けなければならない。dmaeieioコマンドと同じタグを付与されている全ＧＥＴコマンドによる読み出しデータは、ローカルメモリ２１２において見えていなければならない。
【００２９】
いったん、dmaeieioと同じタグを付与されている先行コマンドがすべて完了すると、ＤＭＡコントローラ２２４は、ＥＩＥＩＯバス操作（Eieio bus transaction）を開始する。ＥＩＥＩＯバス操作は、特定のタイプのアクセスを順序制御するために、システム内における他のプロセッサや機構に対するバリアポイント（防壁点）として機能する。特定のタイプのアクセスとは、たとえば、要・ライトスルー、あるいは、キャッシュ禁止を示す印がついていないコヒーレント・ストレージに対するＤＭＡメモリ書き込みや、キャッシュ禁止かつガードされているストレージに対するＤＭＡメモリ読み出しや書き込みである。他のプロセッサや機構は、それ以前のバス操作すべてについての順序付けが確定するように、ＥＩＥＩＯバス操作の承認を待機する。システム内のすべてのプロセッサや機構がＥＩＥＩＯバス操作を承認すると、ＤＭＡコントローラ２２４だけがdmaeieioコマンドを完了させることができる。このように、dmaeieioコマンドは、ＤＭＡ処理の可視性（わかりやすさ）の代わりに、強制的な順序制御によってシステムの処理効率を向上させる。第２ＤＭＡコントローラ２２６は、第１ＤＭＡコントローラ２２４と同様の方式にてdmaeieioコマンドを処理する。
【００３０】
dmasyncコマンドやdmaeieioコマンドにより、従来型ＭＰシステムのウィークリー・コンシステント・ストレージ・モデルに非対称型プロセッサやデバイスを導入することが可能となり、これにより処理効率を向上させることができる。更に、dmasyncコマンドとdmaeieioコマンドにより、ＰＵがストレージに対するアクセス順序制御について責任を負うこととなり、制御プロセッサはそのような責任から解放されることになる。そして、ＰＵは、制御プロセッサからのサポートをほとんど、あるいは全く受けなくても、制御プロセッサと同様の方式にてリソースを制御できる。加えて、ストレージに対するアクセス順序制御についての責任から制御プロセッサを解放することにより、制御プロセッサやＤＭＡコントローラの利用性や処理効率を大きく改善し、複数の非対称ユニットから制御プロセッサに過度の負荷がかからないようにしやすくなっている。
【００３１】
それゆえ、dmasyncコマンドやdmaeieioコマンドは、従来型ＭＰシステムにおけるウィークリー・オーダーのストレージモデル概念を、ＤＭＡのメカニズムを使って共有ストレージにアクセスするプロセッサやデバイスによる非対称型異種混合マルチプロセッサ環境にまで拡張できる。更に、ローカルメモリやプライベートメモリを備える従来の対称型ＭＰシステムや、その他の非対称型デバイスにもdmasyncコマンドやdmaeieioコマンドを採用してもよい。システムメモリ上のデータをシステムメモリ上の別の位置に移動させるＤＭＡコントローラにおいてもdmasyncコマンドやdmaeieioコマンドを採用してもよい。
【００３２】
ＭＰシステム２００を動作させるために、一連の必要な接続がなされる。ＰＵ２２０は、図示しない第１２通信チャネルを介して第１キャッシュ２２２と接続される。ＰＵ２２０は、第１３通信チャネル２４２を介して第１ＤＭＡコントローラ２２４と接続される。第１キャッシュ２２２は、第１４通信チャネル２４０を介して共有メモリ２１０と接続される。第１ＤＭＡコントローラ２２４は、第１５通信チャネル２４４を介して共有メモリ２１０と接続される。第１ＤＭＡコントローラ２２４は、また、第１６通信チャネル２４８を介してローカルメモリ２１２と接続される。第２ＰＵ２２８は、図示しない第１７通信チャネルを介して第２キャッシュ２３０と接続される。第２キャッシュ２３０は、第１８通信チャネル２５４を介してローカルメモリ２１２と接続される。第２ＰＵ２２８は、また、第１９通信チャネル２５２を介して第２ＤＭＡコントローラ２２６と接続される。第２ＤＭＡコントローラ２２６は、第２０通信チャネル２５０を介してローカルメモリ２１２と接続される。第２ＤＭＡコントローラ２２６は、また、第２１通信チャネル２４６を介して共有メモリ２１０と接続される。
【００３３】
図３の参照符号「３００」は、dmasyncコマンドの通常の動作のフローチャートを示す。この処理はステップ３０１から開始し、ＤＭＡコントローラは、タグ付きdmasyncコマンドを受信する。たとえば、ステップ３１０は、図１のＤＭＡコントローラ１１０が図１のＰＵ１３０からのタグ付きdmasyncコマンドを受信することによって実行される。説明のため、図３の全ステップは図１のＤＭＡコントローラ１１０が実行するものとする。図３の各ステップは、図２の第１ＤＭＡコントローラ２２４や第２ＤＭＡコントローラ２２６によって実行されてもよいことは理解されるあろう。
【００３４】
次に、判定ステップ３０５において、ＤＭＡコントローラは、ステップ３０１にて受信されたタグ付きdmasyncコマンドと同じタグを付与され、かつ、それ以前に受信されたＤＭＡコマンドをＤＭＡコマンドキューから検出する。そのような同タグのＤＭＡコマンドがあれば、処理はＹＥＳに分岐してステップ３１０に移行する。ステップ３１０において、ＤＭＡコントローラが上記した同タグＤＭＡコマンドを実行すると、処理はステップ３０５に戻る。先行する同タグＤＭＡコマンドがなければ、処理はＮＯに分岐してステップ３１５に移行する。
【００３５】
ステップ３１５において、ＤＭＡコントローラは、ＳＹＮＣバス操作を発行する。次に、判定ステップ３２０において、ＤＭＡコントローラはＳＹＮＣバス操作が、システム内のプロセッサやデバイスにより承認されたかを判定する。ＳＹＮＣバス操作承認が受信されていなければ、処理はＮＯに分岐してステップ３２５に移行する。ステップ３２５においてＤＭＡコントローラは待機する。一例として、ＤＭＡコントローラは、所定の期間、たとえば、０．５マイクロ秒ほど動作停止して待機する。別例として、ＤＭＡコントローラは、タグ付きdmasyncコマンドと同じタグではないＤＭＡコマンドを実行しつつ待機してもよい。それから、処理は判定ステップ３２０に戻る。
【００３６】
判定ステップ３２０においてＳＹＮＣバス操作承認が受信されていれば、処理はＹＥＳに分岐して判定ステップ３３０に移行する。判定ステップ３３０において、ＤＭＡコントローラは、システム内のすべてのプロセッサやデバイスがＳＹＮＣバス操作を承認しているか判定する。システム内のすべてのプロセッサやデバイスによってＳＹＮＣバス操作が承認されているのでなければ、処理はＮＯに分岐してステップ３２５に移行する。
【００３７】
判定ステップ３２５において、ＳＹＮＣバス操作がシステム内のすべてのプロセッサやデバイスによって承認されていれば、処理はＹＥＳに分岐してステップ３３５に移行する。ステップ３３５において、ＤＭＡコントローラはdmasyncコマンドを完了させて、処理は終了する。dmasyncの後続コマンドがこれで実行可能となる。
【００３８】
図４の参照符号「４００」は、dmaeieioコマンドの通常の動作のフローチャートを示す。この処理はステップ４０１から開始し、ＤＭＡコントローラは、タグ付きdmaeieioコマンドを受信する。たとえば、ステップ４０１は、図１のＤＭＡコントローラ１１０が図１のＰＵ１３０からタグ付きdmaeieioコマンドを受信することによって実行される。説明のため、図４の全ステップステップは、図１のＤＭＡコントローラ１１０が実行するものとする。図４の各ステップは、図２の第１ＤＭＡコントローラ２２４や第２ＤＭＡコントローラ２２６によって実行されてもよいことは理解されるであろう。
【００３９】
次に、判定ステップ４０５において、ＤＭＡコントローラは、ステップ４０１にて受信されたタグ付きdmaeieioコマンドと同じタグを付与され、かつ、それ以前に受信されたＤＭＡコマンドをＤＭＡコマンドキューから検出する。そのような同タグのＤＭＡコマンドがあれば、処理はＹＥＳに分岐してステップ４１０に移行する。ステップ４１０において、ＤＭＡコントローラが上記した同タグのＤＭＡコマンドを実行すると、処理はステップ４０５に戻る。先行する同タグのＤＭＡコマンドがなければ、処理はＮＯに分岐してステップ４１５に移行する。
【００４０】
ステップ４１５において、ＤＭＡコントローラはＥＩＥＩＯバス操作を発行する。次に、判定ステップ４２０において、ＤＭＡコントローラは、ＥＩＥＩＯバス操作が、システム内のプロセッサやデバイスにより承認されたかを判定する。ＥＩＥＩＯバス操作承認が受信されていなければ、処理はＮＯに分岐してステップ４２５に移行する。ステップ４２５において、ＤＭＡコントローラは待機する。一例として、ＤＭＡコントローラは、所定の期間、たとえば、０．５マイクロ秒ほど動作停止して待機する。別例として、ＤＭＡコントローラは、タグ付きdmaeieioコマンドと同じタグではないＤＭＡコマンドを実行しつつ待機してもよい。処理は判定ステップ４２０に戻る。
【００４１】
判定ステップ４２０においてＥＩＥＩＯバス操作承認が受信されていれば、処理はＹＥＳに分岐して判定ステップ４３０に移行する。判定ステップ４３０において、ＤＭＡコントローラは、システム内のすべてのプロセッサやデバイスがＥＩＥＩＯバス操作を承認しているか判定する。システム内のすべてのプロセッサやデバイスによってＥＩＥＩＯバス操作が承認されているのでなければ、処理はＮＯに分岐してステップ４２５に移行する。
【００４２】
判定ステップ４２５において、ＥＩＥＩＯバス操作がシステム内のすべてのプロセッサやデバイスによって承認されていれば、処理はＹＥＳに分岐してステップ４３５に移行する。ステップ４３５において、ＤＭＡコントローラはdmaeieioコマンドを完了させて、処理は終了する。
【００４３】
（dmasyncとdmaeieioという）２つの特殊なメモリバリアコマンドについてだけ述べてきたが、他のメモリバリアコマンドやメモリバリアコマンドの別形式を定義できることは当業者には理解されるところである。たとえば、ＤＭＡコントローラは、ダイレクト・メモリ・アクセス・軽量ＳＹＮＣ（dmalwsync）や、フェンスを埋め込んだdmaeieioコマンドを受信できてもよい。
【００４４】
更に、パワーＰＣ（登録商標）・アーキテクチャに関連して以下の特殊なメモリバリアコマンドについて説明してきたが、他のアーキテクチャに関わる他のメモリバリアコマンドを定義してもよいことは当業者には理解されるところである。したがって、ＤＭＡコントローラは、他のアーキテクチャにおけるメモリバリア命令と同様のＤＭＡアクセス順序制御方法を提供するメモリバリアコマンドを受信してもよい。
【００４５】
非対称型異種混合ＭＰ環境、かつ、ウィークリー・オーダーのメモリモデルにおける特殊なメモリバリアコマンドの動作について説明したが、メモリバリアコマンドは、他のメモリモデルや対称ＭＰ環境でも採用できることは当業者には理解されるところである。
【００４６】
さまざまな変形や変更が、上記した本発明の実施例においても本発明の思想範囲から逸脱しない程度に可能であることは明らかなところである。それゆえ、これらの記述は、発明の例証を目的としたものであり、限定的な意味に解釈してはならない。本発明の範囲は、あくまでも、請求項の文言によってのみ解釈されるべきである。
【図面の簡単な説明】
【００４７】
【図１】ＤＭＡコントローラを備えるシステムのブロック図である。
【図２】マルチプロセッサ（ＭＰ）・システムのブロック図である。
【図３】ダイレクト・メモリ・アクセス・ＳＹＮＣ（dmasync：direct memory access sync）・コマンドの実行を示すフローチャートである。
【図４】ダイレクト・メモリ・アクセス・の強制インオーダー入出力実行（dmaeieio：direct memory access enforce in-order execution of input/output）コマンドの実行を示すフローチャートである。
【図１】
2008508586.tif 000003
【図２】
2008508586.tif 000004
【図３】
2008508586.tif 000005
【図４】
2008508586.tif 000006
【国際調査報告】
2008508586.tif 000007
2008508586.tif 000008