(57)【特許請求の範囲】
【請求項１】
メモリ・トランザクションを管理する方法であって、
データ・プロセッサの外部の装置において、事前定義された複数のメモリ・トランザクション順序づけモデルから選択されたメモリ・トランザクション順序づけモデルが各メモリ・トランザクション要求に関連づけられているメモリ・トランザクション要求をデータ・プロセッサから受け取るステップと、
メモリ・トランザクション要求に関連づけられたメモリ・トランザクション順序づけモデルに基づき生成されるメモリ・トランザクション順序データであって、保留メモリ・トランザクション・データが保留メモリ・トランザクションのうちのいずれを保留メモリ・トランザクションのうちの他のトランザクションの前に実行することができるかを示すメモリ・トランザクション順序データを含んでいるとともに、まだ完了していない要求されたメモリ・トランザクションを含む保留メモリ・トランザクションの表現を含む前記保留メモリ・トランザクション・データを格納するステップと、
前記保留メモリ・トランザクションのサブセットが前記データ・プロセッサからそれらが受け取られた順序とは異なる順序で実行され、前記保留メモリ・トランザクションを前記メモリ・トランザクション順序データと整合する順序で実行するステップと
を含む方法。
【請求項２】
前記格納ステップが、最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクション順序づけモデルと少なくとも１つの他の保留メモリ・トランザクションに関連づけられたメモリ・トランザクション順序づけモデルとに基づいて、最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクションを前記少なくとも１つの他の保留メモリ・トランザクションの前に実行することができるかどうかを判断し、前記順序づけ判断の表現を前記メモリ・トランザクション順序づけデータに格納するステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
第１および第２のメモリ・トランザクションのそれぞれに関連づけられたメモリ・トランザクション・タイプとメモリ・トランザクション順序づけモデルとに基づいて前記第１のメモリ・トランザクションと第２のメモリ・トランザクションの事前定義された組合せについて事前計算されたメモリ・トランザクション順序づけ判断をテーブルに格納するステップを含み、
前記格納ステップにおける前記順序づけ判断が、少なくとも部分的には、前記最も最近に受け取ったメモリ・トランザクションと前記その他の保留メモリ・トランザクションに関連づけられたメモリ・トランザクション・タイプとメモリ・トランザクション順序づけモデルとに対応する事前計算されたメモリ・トランザクション順序づけ判断を前記テーブルから読み取ることによって生成されることを特徴とする請求項２に記載の方法。
【請求項４】
第１および第２のメモリ・トランザクションのそれぞれに関連づけられたメモリ・トランザクション・タイプとメモリ・トランザクション順序づけモデルとに基づいて前記第１のメモリ・トランザクションと第２のメモリ・トランザクションの可能なすべての組合せについて事前計算されたメモリ・トランザクション順序づけ判断をテーブルに格納するステップを含み、
前記格納ステップにおける前記順序づけ判断が、少なくとも部分的には、前記最も最近に受け取ったメモリ・トランザクションと前記その他の保留メモリ・トランザクションに関連づけられたメモリ・トランザクション・タイプとメモリ・トランザクション順序づけモデルとに対応する事前計算されたメモリ・トランザクション順序づけ判断を前記テーブルから読み取ることによって生成されることを特徴とする請求項２に記載の方法。
【請求項５】
前記格納ステップが、  最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクション順序づけモデルと複数の他の保留メモリ・トランザクションのそれぞれに関連づけられたメモリ・トランザクション順序づけモデルとに基づいて、最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクションを前記他の保留メモリ・トランザクションのそれぞれの前に実行することができるかどうかを判断し、前記順序づけ判断の表現を前記メモリ・トランザクション順序づけデータに格納するステップを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記事前定義された複数のメモリ・トランザクション順序づけモデルが、本質的にＳＳＯ（強い順次順序）とＴＳＯ（トータル・ストア順序）とＰＳＯ（部分ストア順序）とＲＭＯ（緩いメモリ順次）とから成る１組から選択された１組のメモリ・トランザクション順序づけモデルを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記メモリ・トランザクション要求のサブセットが割込みトランザクション要求を含んでおり、この割込みトランザクション要求がメモリに対する前のストア操作の後に順序づけなければならない場合には、該割込みトランザクション要求はＳＳＯメモリ・トランザクション順序モデルに関連づけられることを特徴とする請求項６に記載の方法。
【請求項８】
データ・プロセッサによって要求されたメモリ・トランザクションを管理するメモリ・コントローラであって、
各メモリ・トランザクション要求に事前定義された複数のメモリ・トランザクション順序づけモデルから選択されたメモリ・トランザクション順序づけモデルが関連づけられているメモリ・トランザクション要求をデータ・プロセッサから受け取るポートと、
前記ポートに結合され、まだ完了していない要求されたメモリ・トランザクションを含む保留メモリ・トランザクションの表現を含む保留メモリ・トランザクション・データを格納する保留メモリ・トランザクション記憶装置であって、前記保留メモリ・トランザクション記憶装置に記憶される前記保留メモリ・トランザクション・データは、メモリ・トランザクション要求に関連づけられたメモリ・トランザクション順序づけモデルに基づき生成されるメモリ・トランザクション順序データであって、保留メモリ・トランザクションのうちのいずれを保留メモリ・トランザクションのうちの他のトランザクションより前に実行することができるかを示すメモリ・トランザクション順序データを含む、保留メモリ・トランザクション記憶装置と、
前記保留メモリ・トランザクション記憶装置に結合され、前記保留メモリ・トランザクションのサブセットが前記データ・プロセッサから受け取った順序とは異なる順序で実行され、実行の順序が前記メモリ・トランザクション順序データと整合するように前記保留メモリ・トランザクションの実行の前記順序を制御するトランザクション・ディスパッチ論理回路と
を備えるメモリ・コントローラ。
【請求項９】
最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクション順序づけモデルと少なくとも１つの他の保留メモリ・トランザクションに関連づけられたメモリ・トランザクション順序づけモデルとに基づいて、最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクションを前記少なくとも１つの他の保留メモリ・トランザクションの前に実行することができるかどうかを判断し、前記順序づけ判断の表現を前記メモリ・トランザクション順序づけデータとして前記保留メモリ・トランザクション記憶装置に格納するインタロック判断論理回路を備える請求項８に記載のメモリ・コントローラ。
【請求項１０】
前記インタロック判断論理回路が、第１および第２のメモリ・トランザクションのそれぞれに関連づけられたメモリ・トランザクション・タイプとメモリ・トランザクション順序づけモデルとに基づく前記第１のメモリ・トランザクションと前記第２のメモリ・トランザクションの事前定義された組合せについて事前計算されたメモリ・トランザクション順序づけ判断の記憶テーブルに結合され、
前記インタロック判断論理回路が、前記最も最近に受け取ったメモリ・トランザクションと前記他の保留メモリ・トランザクションとのそれぞれのメモリ・トランザクションに関連づけられたメモリ・トランザクション・タイプとメモリ・トランザクション順序づけモデルとに対応する事前計算されたメモリ・トランザクション順序づけ判断を前記テーブルから読み取る論理回路を含むことを特徴とする請求項９に記載のメモリ・コントローラ。
【請求項１１】
前記インタロック判断論理回路が、第１および第２のメモリ・トランザクションのそれぞれに関連づけられたメモリ・トランザクション・タイプとメモリ・トランザクション順序づけモデルに基づく前記第１のメモリ・トランザクションと第２のメモリ・トランザクションの可能なすべての組合せについて事前計算されたメモリ・トランザクション順序づけ判断の記憶テーブルに結合され、
前記インタロック判断論理回路が、前記最も最近に受け取ったメモリ・トランザクションと前記他の保留メモリ・トランザクションとのそれぞれのメモリ・トランザクションに関連づけられたメモリ・トランザクション・タイプとメモリ・トランザクション順序づけモデルとに対応する事前計算されたメモリ・トランザクション順序づけ判断を前記テーブルから読み取る論理回路を含むことを特徴とする請求項９に記載のメモリ・コントローラ。
【請求項１２】
前記インタロック判断論理回路が、最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクション順序づけモデルと複数のその他の保留メモリ・トランザクションのそれぞれに関連づけられたメモリ・トランザクション順序づけモデルとに基づいて、最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクションを前記その他の保留メモリ・トランザクションのそれぞれの前に実行することができるかどうかを判断し、前記順序づけ判断の表現を前記メモリ・トランザクション順序づけデータとして前記保留メモリ・トランザクション記憶装置に記憶することを特徴とする請求項９に記載のメモリ・コントローラ。
【請求項１３】
前記事前定義された複数のメモリ・トランザクション順序づけモデルが、本質的にＳＳＯ（強い順次順序）とＴＳＯ（トータル・ストア・順序）とＰＳＯ（部分ストア順序）とＲＭＯ（緩いメモリ順序）とから成る１組のうちから選択された１組のメモリ・トランザクション順序づけモデルを含むことを特徴とする請求項８に記載のメモリ・コントローラ。
【請求項１４】
前記メモリ・トランザクション要求のサブセットが割込みトランザクション要求を含んでおり、この割込みトランザクション要求がメモリに対する前のストア操作の後に順序づけなければならない場合には、該割込みトランザクション要求はＳＳＯメモリ・トランザクション順序モデルに関連づけられることを特徴とする請求項１３に記載のメモリ・コントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリへのアクセスを管理するためにメモリ・コントローラを使用し、変化するメモリ・アクセス順序づけ要件を有するメモリ・トランザクションを実行するコンピュータ・システムに関し、具体的には、メモリ・コントローラが、メモリ・コントローラにエクスポートされる各メモリ・トランザクションのメモリ・アクセス順序づけ要件と整合性のある方式でメモリ・トランザクションを順序づけし直し、並列して実行するシステムに関わる。
【０００２】
【従来の技術】
定義
本明細書では「相互接続機構」という用語は、データ・プロセッサとデータ・プロセッサが使用するメモリ資源との間の回路およびデータ経路を意味するものと定義する。また、相互接続機構は、データ・プロセッサをメモリ資源だけでなく様々な入出力チャネルにも接続することができる。
【０００３】
本明細書では、「強く順序づけされたトランザクション」の場合のような「強く順序づけされた」という用語は、トランザクションをプログラム命令ストリームで指定されているのと同じ順序で実行しなければならないことを意味するものと定義する。
【０００４】
「メモリ・トランザクションを並列実行する」という用語は、多くのコンピュータ・システムにおいて、相互接続機構で使用可能な並列メモリ・トランザクション経路を使用して、重なり合った期間中にいくつかのメモリ・トランザクションを並列して実行することができることを指す。
【０００５】
本明細書の文脈では「並列処理」という用語は、相互接続機構で使用可能な並列メモリ・トランザクション経路を使用して、重なり合った期間中にメモリ・トランザクションを並列実行することを指す。プログラム命令がそれに付随するメモリ・トランザクションの並列実行により偶然に並列して実行される場合を除き、データ・プロセッサによる命令の並列実行のことは指さない。
【０００６】
メモリ・トランザクションとは以下のいずれかである。
・  ストア：指定した記憶場所の値を置き換えるように求めるプロセッサからの要求。プロセッサがストア・トランザクションを開始する際、アドレスと新しい値がストア・トランザクションに結合される。ストアは新しい値がシステム内のすべてのプロセッサに認識可能（グロバールに認識可能）になると完了する。
・  ロード：指定した記憶場所の値を取り出すように求めるプロセッサからの要求。プロセッサがロード・トランザクションを開始すると、アドレスがロード・トランザクションに結びつけられる。ロードは、返される値が他のプロセッサによって行われるストアによって変更することができなくなると完了する。
・  アトミック：他のメモリ・トランザクションがロードとストアの間にメモリの状態を変更しないように保証されたロード／ストアの対。アトミック・トランザクションとは、ロードとストアの両方であるとみなされる。
・  フラッシュ：命令空間にエイリアスされたデータ空間の変更に強制的に整合性をもたせるように求めるプロセッサからの要求。フラッシュ・トランザクションはメモリ・モデルのためのストア操作とみなされる。
・  割込み：１つのプロセッサから直接他のプロセッサへのクロス呼出しトランザクション。割込みトランザクションはメモリ・モデルのためのストア操作のようなものと考えられる。
・  プリフェッチ：メモリ・モデルのためのロード操作と考えられる。
【０００７】
「プログラム順序」とは、プロセッサｎが命令を論理的に実行したシーケンスを示す、プロセッサ単位の順序である。メモリ・トランザクションＡとメモリ・トランザクションＢがプログラム順であると言われるのは以下の場合に限られる。メモリ・トランザクションＡが、メモリ・トランザクションＢが行われる命令の前に実行される命令によって行われる場合。
【０００８】
「メモリ・トランザクション順序づけモデル」（簡潔にするために通常「メモリ・モデル」と短縮される）とは、本明細書では、メモリ・トランザクションが生成された順序とは異なる順序で実行することができる程度を規定する１組の規則を意味するものと定義する。相互接続機構から見た４つのメモリ・モデルの定義は以下の通りである。
１）ＲＭＯ（緩いメモリ順序）。  ＲＭＯを使用するプログラムおよびプログラム・セグメントでは、プロセッサの自己一貫性のために必要な制限以外には、相互接続機構に対して出されるトランザクションに関する順序づけ制限がない。
２）ＰＳＯ（部分ストア順序）。  ＰＳＯを使用するプログラムおよびプログラム・セグメントでは、ロードはそれ以降のすべてのメモリ・トランザクションに対するブロッキングであり、それ以前のロードに対して順序づけされる。アトミック・トランザクションは、ロード・トランザクションに対して順序づけされる（すなわち、アトミック・トランザクションとロード・トランザクションは互いにバイパスすることができない）。ストアは他のストアをバイパスすることができるが、後のストアは前のロード・トランザクションをバイパスすることができない。視点を変えると、ＰＳＯの規定は、ＲＭＯの規定に、ロード・セマンティクスを持つすべてのメモリ・トランザクション（ロード・トランザクションとアトミック・トランザクションを含む）の後には暗黙のＭｅｍｂａｒ  ＬｏａｄＬｏａｄ  ＬｏａｄＳｔｏｒｅが続くという追加要件が付いたものである。
３）ＴＳＯ（トータル・ストア順序）。  ＴＳＯを使用するプログラムおよびプログラム・セグメントでは、ストアはストアをバイパスせず、ロードはそれ以降のストアおよびロードに対するブロッキングであり、ロードをバイパスしない。ロードは前のストアをバイパスすることができるが、ストアは前のロードをバイパスしてはならない。アトミック・トランザクションは、以降のトランザクションに対するブロッキングである。別の視点から見ると、ＴＳＯの規定は、ＰＳＯの規定に、ストア・セマンティクスを持つすべてのメモリ・トランザクション（ストア・トランザクションとアトミック・トランザクションを含む）の後に暗黙のＭｅｍｂａｒ  ＳｔｏｒｅＳｔｏｒｅが続くという追加要件が付いたものである。
４）  ＳＳＯ（強い順次順序）。ＳＳＯは通常、入出力装置にアクセスするのに必要である。ＳＳＯは、順序が一貫したハードウェアを前提とするプログラムでも使用される。トランザクション発行順序、完了順序、およびプログラム順序はすべて同じである。プログラム順序のロードとストアは、プロセッサまたは相互接続機構で互いにバイパスしない。
【０００９】
「同期コマンド」および「ｍｅｍｂａｒ」命令という用語は両方とも、同期点の前の一部またはすべてのタイプのメモリ・トランザクションが、同期点の後のメモリ・トランザクションの実行の前に完了するようにするために使用される命令を指す。本明細書では、以下のように５種類のタイプのｍｅｍｂａｒ命令を定義する。
１）  ｍｅｍｂａｒ  ｍｅｍｓｙｎｃ：このｍｅｍｂａｒ命令の前の（すべてのタイプの）すべてのメモリ・トランザクション命令は、このｍｅｍｂａｒ命令の後のメモリ・トランザクション命令の実行の前に完了しなければならない。
２）  ｍｅｍｂａｒ  ｓｔｏｒｅ−ｓｔｏｒｅ：このｍｅｍｂａｒ命令の前のすべてのストア命令は、このｍｅｍｂａｒ命令の後のストア命令の実行の前に完了しなければならない。
３）  ｍｅｍｂａｒ  ｌｏａｄ−ｌｏａｄ：このｍｅｍｂａｒ命令の前のすべてのロード命令は、このｍｅｍｂａｒ命令の後のロード命令の実行の前に完了しなければならない。
４）  ｍｅｍｂａｒ  ｓｔｏｒｅ−ｌｏａｄ：このｍｅｍｂａｒ命令の前のすべてのストア命令は、このｍｅｍｂａｒ命令の後のロード命令の実行の前に完了しなければならない。
５）  ｍｅｍｂａｒ  ｌｏａｄ−ｓｔｏｒｅ：このｍｅｍｂａｒ命令の前のすべてのロード命令は、このｍｅｍｂａｒ命令の後のストア命令の実行の前に完了しなければならない。
【００１０】
ＲＭＯモデルを使用する場合、適切なｍｅｍｂａｒ命令を発行することによって２つのトランザクションの間の順序づけ要件が強制される。ＴＳＯモデルを使用する場合、ロード・トランザクションの後に暗黙的に「ｍｅｍｂａｒ  ｌｏａｄ−ｌｏａｄ」命令と「ｍｅｍｂａｒ  ｌｏａｄ−ｓｔｏｒｅ」命令が続き、ストア・トランザクションの後には暗黙的に「ｍｅｍｂａｒ  ｓｔｏｒｅ−ｓｔｏｒｅ」命令が続く。
【００１１】
データ・プロセッサ内でのメモリ・モデルの使用
様々なトランザクションを処理し、メモリ・アクセス要求（ストアおよびロード）をそれ自体のキャッシュ・メモリの外部にある場所にエクスポートする順序を決定するデータ・プロセッサ（ＣＰＵと呼ぶ場合がある）の関係では、（Ａ）データ・プロセッサが実行中のトランザクションのタイプから、メモリ・アクセス要求の順序を変更してもエラーが発生しないことを認識し、（Ｂ）エクスポートされたメモリ・アクセス要求の順序を変更すると様々なメモリ・アクセス・トランザクションの並列実行が可能になることによってシステムの動作速度が向上する可能性がある場合、データ・プロセッサは、メモリ・アクセス要求が生成されたプログラム実行順序とは異なる順序でメモリ・アクセス要求をエクスポートすることができることは周知である。
【００１２】
大規模なスケーラブル・システムや、高パフォーマンスのマルチプロセッサ・システムでは、実行されるソフトウェアはいくつかの異なる所定のメモリ・モデルを使用することができる。上記ではこのようなメモリ・モデルを４種類定義している。このようなソフトウェアを設計するプログラマは、様々なメモリ・モデルを暗黙的または明示的に使用するプログラム命令を使用することによってプログラムの実行速度の向上を試みることができる。すなわち、プログラム中の命令のうちの少なくとも一部は、プログラムに付随するメモリ・トランザクションのうちの一部を並列実行することができるようにするメモリ・モデルを指定することができる。プログラマは、プログラム内のあらゆる点で強力な順序の一貫性を要求せずに、プログラム内の意味のある点で「同期点」を明示的に指定することにより、プログラム内のメモリ・トランザクションの実行の並列化を試みることができる。このような同期点は、同期点の前にある一部またはすべてのタイプのメモリ・トランザクションが、同期点の後にあるメモリ・トランザクションの実行の前に完了することを必要とする。
【００１３】
複数のメモリ・モデルの使用、または緩いメモリ・モデルとｍｅｍｂａｒ命令とを組み合わせた使用によって、理論上、プログラマはそれらを使用しない場合よりも多くの並列処理をプログラムで指定または実行可能となる。しかし、データ・プロセッサは一般に相互接続機構にメモリ・モデル情報を供給していない。実際には、ほとんどのデータ・プロセッサは、発行したすべてのメモリ・アクセス・トランザクションが強く順序づけされることを求める。その結果、そのようなデータ・プロセッサでは、データ・プロセッサはメモリ・トランザクションが相互接続機構に送られる順序をそれに対応するメモリ・トランザクション要求がプログラム命令によって生成された順序とは異なる順序に内部的に変更することができるが、相互接続機構はメモリ・トランザクションを順序変更しない。
【００１４】
ＰｏｗｅｒＰＣマイクロプロセッサはこれとは異なる方法をとる。ＰｏｗｅｒＰＣは最も弱いメモリ・モデル（上記で定義したＲＭＯ）を採り、相互接続機構がすべてのトランザクションを並列化することができるようにする。したがって、ＰｏｗｅｒＰＣは、アプリケーションと、デバイス・ドライバなどのシステム・ソフトウェアの両方のすべてのプログラムが適切なメモリ同期コマンドを確実に持つようにしなければならないという負担をプログラマに負わせる。ハードウェアからのより強力なメモリ・モデルを前提とするプログラムは、多くの同期コマンドを組み込まなければＰｏｗｅｒＰＣでは正常に実行されない。一般に、１９９６年の時点で商業化されているソフトウェアは、相互接続機構がＳＳＯやＴＳＯなどの強力なメモリ・モデルを使用することを前提とするものの方が、相互接続機構がＰＳＯやＲＭＯなどのより弱いメモリ・モデルを使用することを前提とするソフトウェアよりもはるかに多い。
【００１５】
【発明が解決しようとする課題】
データ・プロセッサによっては、プロセッサ内で多くのメモリ・モデルをサポートするものもある。たとえば、ＳＰＡＲＣプロセッサは、ＳＳＯ、ＴＳＯ、ＰＳＯ、およびＲＭＯをすべてサポートする。このため、この種のデータ・プロセッサはキャッシュ・メモリとの間のメモリ・トランザクションを順序づけし直すことができる。しかし、この種のデータ・プロセッサは相互接続機構にメモリ・モデル情報を提供しない。その結果、データ・プロセッサの相互接続機構は単一のメモリ・モデルをサポートしなければならず、ＳＰＡＲＣプロセッサの場合、この単一のメモリ・モデルは従来、メモリ参照のために相互接続インタフェースにあるＳＳＯであった。ＳＰＡＲＣプロセッサでは入出力トランザクションは別個の非キャッシュ・トランザクションによって記述され、相互接続機構はＳＳＯモデルだけを使用してそれを実行する。したがって、このようなシステムには、実行プログラムが使用する内部メモリ・モデルが相互接続機構が実施する単一のメモリ・モデルよりも弱い場合（すなわちより多くの並列処理が可能な場合）、メモリ・トランザクションを並列化する柔軟性または機会がない。これは、メモリが恣意的に遠くなることがあって相互接続ネットワークによって接続されるＮＵＭＡアーキテクチャでは、さらに重大になる。このような場合、メモリ・モデル情報を相互接続ネットワークコントローラが入手することができるようにした場合、相互接続ネットワークを介してトランザクションを並列化する機会が多くなる。
【００１６】
【課題を解決するための手段】
コンピュータ・プログラムによる複数のメモリ・トランザクション順序づけモデル（メモリ・モデル）の使用をサポートするデータ・プロセッサを有するコンピュータ・システムにおいて、メモリ・トランザクションを以下のように管理する。メモリおよび相互接続コントローラなどのデータ・プロセッサの外部にあるデバイスで、データ・プロセッサからのメモリ・トランザクション要求を受け取る。各メモリ・トランザクション要求には、事前定義された複数のメモリ・モデルの中から選択されたメモリ・モデルが関連づけられている。好ましい実施態様では、サポートされる事前定義メモリ・モデルは、ＳＳＯ（強い順次順序）、ＴＳＯ（トータル・ストア順序）、ＰＳＯ（部分ストア順序）、およびＲＭＯ（緩いメモリ順序）である。
【００１７】
保留メモリ・トランザクションを表すデータが１つまたは複数の保留トランザクション・バッファと保留トランザクション状況アレイとに格納される。保留トランザクション状況データには、どの保留メモリ・トランザクションを他の保留メモリ・トランザクションより前に実行することができるかを示すメモリ・トランザクション順序データが含まれる。具体的には、メモリ・コントローラ内の論理回路が、最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・モデルと、少なくとも１つの他の保留メモリ・トランザクションに関連づけられたメモリ・モデルとに基づいて、最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクションを他方の保留メモリ・トランザクションの前に実行することができるかどうかを判断し、次にその順序づけの決定を表すデータをトランザクション・スコアボードに格納する。
【００１８】
メモリ・コントローラは、保留メモリ・トランザクションをこのメモリ・トランザクション順序データと整合性のある順序で実行する。その結果、保留メモリ・トランザクションのサブセットは、データ・プロセッサから受け取った順序とは異なる順序で実行される。
【００１９】
【発明の実施の形態】
本発明の他の目的および特徴は、図面を参照しながら以下の詳細な説明と特許請求の範囲を読めばより容易にわかるであろう。
【００２０】
図１を参照すると、プロセッサ１０４のクラスタを備えるコンピュータ・システム１００が図示されている。プロセッサ１０４は相互接続ネットワーク１０６を介して一次メモリ（ランダム・アクセス・メモリ）１０８と二次メモリ１１０（磁気ディスク記憶装置などの不発性メモリ）と入出力資源１１１とに結合されている。ネットワーク・インタフェース１１２によって、他のプロセッサ・クラスタに関連づけられた遠隔場所にあるメモリ１１３にアクセスすることができる。一次メモリ１０８と二次メモリ１１０と入出力資源１１と遠隔場所にあるメモリ１１３とへのアクセスは、相互接続機構およびメモリ・コントローラ１１４によって管理される。プロセッサ１０４の他のクラスタが、遠隔場所のメモリ１１３へのアクセスおよび当該クラスタのローカル・メモリ資源へのアクセスをそれ自体の相互接続ネットワーク１０６を介して共有する。
【００２１】
本明細書では、「メモリ・コントローラ」とは、データ・プロセッサの外部にあって、データ・プロセッサからキャッシュ・ミス・トランザクションを受け取るあらゆる制御論理回路を指す。これには、相互接続コントローラ、遠隔メモリ・コントローラ、入出力コントローラなどが含まれる。
【００２２】
クラスタ内の各プロセッサ１０４は、実装されている共有メモリ・アーキテクチャのタイプに応じて、システム内の他のプロセッサのキャッシュ・メモリに記憶されている内容との一貫性（すなわち整合性）を維持することができるそれ自体のローカル・キャッシュ・メモリ１２０を備える。各プロセッサ１０４はメモリ管理ユニット１２２も備え、メモリ管理ユニットは、データ・プロセッサ１０４によって実行されるプロセスによって使用される仮想アドレスを様々な記憶装置１０８、１１０内の記憶場所に対応する物理アドレスに変換するアドレス変換バッファ（ＴＬＢ）を含む。
【００２３】
その結果の一次物理メモリ・アドレス内のデータのコピーがキャッシュ・メモリ１２０に記憶されている場合、プロセッサ１０４はそれ自体のキャッシュ・メモリ１２０内のアドレス指定されたデータに直接アクセスする。アドレス指定されたデータがキャッシュ・メモリ１２０内にない場合、相互接続およびメモリ・コントローラ１１４はアドレス指定されたデータを一次メモリ１０８、二次メモリ１１０、または遠隔メモリ１１２から取り出し、それをキャッシュ・メモリ１２０に格納する。二次メモリ１１０（ディスクからのＤＭＡ）または遠隔メモリ１１３（ＣＯＭＡおよび単純ＣＯＭＡアーキテクチャなど）から取り出されたデータの場合、一般にはソフトウェア制御の下でフル・ページのデータがまず一次メモリ１０８にコピーされ、次にそこからキャッシュ・ラインと呼ばれるより小さなブロックのデータがキャッシュ・メモリ１２０にコピーされる。ＮＵＭＡアーキテクチャでは、データは遠隔メモリ１１３からキャッシュ・メモリ１２０に直接フェッチされる。次に、プロセッサ１０４はそのプロセッサのキャッシュ・メモリ１２０からアドレス指定されたデータにアクセスする。
【００２４】
本発明の好ましい実施形態では、相互接続およびメモリ・コントローラ１１４に送られる各メモリ・トランザクション（すなわちロード、ストア、またはアトミック・メモリ・トランザクション）には、２ビット・メモリ・モデル値ＭＭ［１：０］が関連づけられている。その値は、ＳＳＯは１１、ＴＳＯは１０、ＰＳＯは０１、ＲＭＯは００である。プロセッサのＩＳＡ（命令セット・アーキテクチャ）内のすべてのメモリ・トランザクションは、ロード、ストア、およびアトミックのトランザクションのカテゴリのうちの１つにマップされる。たとえば、「割込み送信」は「ストア」トランザクション・カテゴリにマップされ、「ブロック・ストア」は「ストア」トランザクション・カテゴリにマップされ、プリフェッチは「ロード」トランザクション・カテゴリにマップされるという具合である。
【００２５】
これらのマッピングではメモリ・モデル情報も指定することができる。たとえば、プリフェッチ・ロードをメモリ・モデルＲＭＯと共に発行することができる。割込みは、（Ａ）特にメモリに対する前のストア操作の後に順序づけなければならない場合はメモリ・モデルＳＳＯ、または（Ｂ）前のメモリ操作に対する依存関係がない場合はメモリ・モデルＲＭＯと共に発行することができる。メモリ・モデル・ビットＭＭによって、適切な場合にはより多くの並列処理を使用することができるように割込みトランザクションに対する順序づけ制約が指定されるため、これは割込みトランザクションが相互接続機構で専用トランザクション・タイプを使用する場合であっても適用される。
【００２６】
ＭＭ［１：０］ビットは、プロセッサ状態レジスタによって供給するか、またはＭＭＵ１２２がメモリ・トランザクションに関連づけられたアドレスを物理アドレスに変換するために使用するページ・テーブル項目から供給することができる。すなわち、本発明のある種の実施形態では、ＭＭＵが使用するページ・テーブル内のページごとにメモリ・モデル特性を示すことができる。相互接続機構（すなわち相互接続およびメモリ・コントローラ１１４）に送られるメモリ・トランザクション要求にＭＭ（メモリ・モデル）値を組み込むことにより、相互接続およびメモリ・コントローラ１１４は、データ・プロセッサから出されたトランザクションが複数ある場合に、どのトランザクションがどのメモリ・モデルに従って発行されたかを追跡することができる。また、これによってコントローラ１１４は、並列トランザクション処理が使用可能な場合により弱いメモリ・モデルに従って発行されたメモリ・トランザクションを並列化することができ、より強いメモリ・モデルに従って発行されたトランザクションが強く順序づけされるように保証することができる。
【００２７】
並列処理が最大限になるように（すなわち可能な場合には常に並列メモリ・トランザクション経路を使用するように）トランザクションのうちのいくつかを順序外れで実行することができる場合、発行された複数のメモリ・トランザクションを完了するための全体的な待ち時間が大幅に短縮されることが多い。これによって、相互接続機構の全体的なスループットも向上する。
【００２８】
相互接続機構にエクスポートされる各メモリ・トランザクションと共にプロセッサのメモリ・モデルを簡潔、一様かつ効率的な方法でコード化することによって、各メモリ・モデルにとって適切な並列メモリ・トランザクション経路の使用が可能になるだけでなく、順次順序で実行されなければならないメモリ・トランザクションの効率的なパイプライン化も可能になる。
【００２９】
図２を参照すると、相互接続およびメモリ・コントローラ１１４はメモリ・コントローラ制御回路１３０を備え、メモリ・コントローラ制御回路１３０は保留メモリ・トランザクションの追跡と保留トランザクション間のインタロックの決定とトランザクションの実行の管理とを行ういくつかの状態機械を含む。メモリ・トランザクション・インタフェースまたはポート１３１でメモリ・トランザクション要求を受け取り、次に、それぞれ順序づけされていない保留トランザクション、順序づけされたロード・トランザクション、および順序づけされたストア・トランザクションを格納するために使用されるいくつかのバッファ１３２、１３４、１３６のうちの１つに格納される。あるいは、すべての保留メモリ・トランザクションを１つのバッファに格納することもできる。
【００３０】
すべての保留メモリ・トランザクションに関する状況情報がトランザクション・スコアボード１４０に格納される。その一部について以下で詳述する。しかし、基本的にはトランザクション・スコアボード１４０には各保留メモリ・トランザクションごとに１つのレコード１４２が格納される。レコードはデータ・プロセッサから受け取った順序と同じ順序で配置される。各レコードは、トランザクション要求が格納されているバッファ場所を指すポインタと、状況情報と、インタロック・マップと呼ぶトランザクション・インタロック情報とを含む。
【００３１】
好ましい実施形態では、データ・プロセッサがｍｅｍｂａｒ命令を実行するとき、その命令は相互接続およびメモリ・コントローラ１１４に渡され、相互接続およびメモリ・コントローラ１１４はそのｍｅｍｂａｒ命令の表現をｍｅｍｂａｒバッファ１４４に格納する。具体的には、ｍｅｍｂａｒバッファ１４４にはトランザクション・スコアボード１４０の各レコード１４２に対応するレコードが含まれる。各ｍｅｍｂａｒレコードに格納されたデータは、データ・プロセッサによるｍｅｍｂａｒ同期命令の実行のために、どのタイプのトランザクションを対応する保留トランザクションの前に行うことができないかを示す。ｍｅｍｂａｒトランザクション順序づけ制約は、様々なメモリ・モデルに付随するメモリ・トランザクション順序づけ制約を補足またはオーバーライドする。
【００３２】
様々なメモリ・モデルに付随するメモリ・トランザクション順序づけ制約は、１組のトランザクション順序づけテーブル１４６によって表される。各テーブル１４６は、ＴＸＴ１（前のトランザクションのトランザクション・タイプ）、ＭＭ１（前のトランザクションに関連づけられたメモリ・モデル）、ＴＸＴ２（次のトランザクションのトランザクション・タイプ）、およびＭＭ２（次のトランザクションに関連づけられたメモリ・モデル）の各軸を持つ四次元テーブルとみなすことができる。後述する理由から、一実施形態では、相互接続およびメモリ・コントローラ１１４はトランザクション順序づけテーブルのＮ個のコピーを記憶し、Ｎは可能最大トランザクション順序づけ変更範囲である。たとえばＮが３の場合、トランザクションは最高３つの直前のメモリ・トランザクションに対して順序づけし直すことができる。
【００３３】
トランザクション順序づけテーブル１４６のいくつかの部分を表１ないし４に示す。これらの各表で、行見出しは前のトランザクションのトランザクション・タイプおよびメモリ・モデルを示し、列見出しは後続のトランザクションのトランザクション・タイプとメモリ・モデルを示す。それぞれ「Ｍ」または「Ｐ」であるテーブル項目は以下のように定義される。
・  Ｐ：２つのメモリ・トランザクションをプログラム発行順序（すなわちメモリ・コントローラが受け取ったのと同じ順序）で実行する。
・  Ｍ：２つのメモリ・トランザクションを任意の順序で実行する。
【表１】
0003807460.tif 000002
【表２】
0003807460.tif 000003
【表３】
0003807460.tif 000004
【表４】
0003807460.tif 000005
【００３４】
トランザクション順序づけテーブル１４６で順序づけ制約によって表されるメモリ・トランザクション・モデルの「作用」はある程度恣意的である。しかし、トランザクション順序づけテーブル１４６に関連づけられる順序づけ制約が選択され、指定された後は、それらの制約はコンピュータ・システムとプログラマの間の契約と似ている。プログラマはその契約を使用して、特定のプログラムによって実行されるタスクに関連づけられたメモリ・トランザクション順序づけ要件を守らせるためにｍｅｍｂａｒ命令（フェンス、バリヤ、または同期命令とも呼ぶ）をどこに挿入しなければならないかを判断する。
【００３５】
どの入出力トランザクションおよびメモリ・トランザクションを順序づけ変更または並列化することができるかを判断する基準としてトランザクション順序づけテーブル１４６を使用することによって、トランザクション順序づけテーブル１４６を新しいメモリ・モデルを扱うように容易に拡張することができ、メモリ・モデルの定義の変更に対応するように（選択した「Ｐ」項目を「Ｍ」に置き換えたりその逆に置き換えたりすることによって）トランザクション順序づけテーブル１４６を容易に修正することができるため、柔軟性が得られる。
【００３６】
メモリ・コントローラはトランザクション・ディスパッチ論理回路１４８も備える。このトランザクション・ディスパッチ論理回路１４８は、他のメモリ・トランザクションを受け入れることができる状態になっている各メモリ資源について実行する保留トランザクションがある場合にその保留トランザクションを選択する論理回路である。
【００３７】
例示
図３ないし図７は、本発明の実施形態を示す図である。その他の実施形態では、トランザクション間のさらに大規模な並列処理を実現することもできる。
【００３８】
受け取ったトランザクションのインタロック・マップを生成するインタロック決定論理回路
図３を参照すると、相互接続およびメモリ・コントローラ１１４の動作を説明するために、１データ・プロセッサ当たり最高７つの保留メモリ・トランザクションをストアすることができ、メモリ・トランザクションをそのトランザクションの前に受け取った最高３つのトランザクションまで順序づけ変更することができ、トランザクションを実行するために３つの並列メモリ・トランザクション経路を使用するコントローラ１１４について説明する。他の実施形態では、最大記憶トランザクション数、トランザクション順序づけ変更の深さ、および個別メモリ資源の数は、これらの設計選定内容とは異なることがある。
【００３９】
図３に示すように、各トランザクション・スコアボードのレコード１４２には、関連づけられたトランザクションのメモリ・モデル（ＭＭ）と、トランザクション・タイプ（ＴＸＴ）（すなわちロード、ストア、またはアトミック）と、直前の３つのトランザクションに関する順序づけ制約を示すインタロック・マップ１５０とが格納される。
【００４０】
各保留トランザクションのインタロック・マップの３ビットは、以下のように定義される。ＩｎｔｅｒｌｏｃｋＭａｐ（ｉ，０）は、ｉ番目の保留トランザクションをその直前の保留トランザクションに関して順序づけ変更することができない場合は１に等しく、ｉ番目の保留トランザクションをその直前のトランザクションに関して順序づけ変更することができる場合は０に等しい。同様に、ＩｎｔｅｒｌｏｃｋＭａｐ（ｉ，１）は、ｉ番目の保留トランザクションをｉ番目のトランザクションの２つ前のトランザクション（すなわちトランザクション・スコアボードのｉ＋２番目の項目によって表されるトランザクション）に関して順序づけ変更することができない場合は１に等しく、ｉ番目の保留トランザクションをｉ番目のトランザクションの２つ前のトランザクションに関して順序づけ変更することができる場合は０に等しい。最後に、ＩｎｔｅｒｌｏｃｋＭａｐ（ｉ，２）は、ｉ番目の保留トランザクションをｉ番目のトランザクションの３つ前のトランザクション（すなわちトランザクション・スコアボードのｉ＋３番目の項目によって表されるトランザクション）に関して順序づけ変更することができない場合は１に等しく、ｉ番目の保留トランザクションをｉ番目のトランザクションの３つ前のトランザクションに関して順序づけ変更することができる場合は０に等しい。
【００４１】
ｍｅｍｂａｒオーバーライド論理回路（ＭＯＬ）１５２をさし当たって無視すると、（メモリ・コントローラ論理回路１３０の一部である）インタロック決定論理回路１５４が現行トランザクションと直前のトランザクションに対応するトランザクション順序づけテーブル１４６内の項目を参照するだけでＩｎｔｅｒｌｏｃｋＭａｐ（０，０）が生成される。すなわち、現行トランザクションのメモリ・モデルおよびトランザクション・タイプ（ＭＭ１，ＴＸＴ０）と直前のトランザクションのメモリ・モデルおよびトランザクション・タイプ（ＭＭ０，ＴＸＴ０）とに応じて順序づけ制約が生成される。テーブル項目が「Ｐ」の場合、論理「１」が出力され、トランザクションを順次に順序づけなければならないことを意味する。「Ｐ」でない場合は「０」が出力され、その２つのトランザクションを並列して実行したり、受け取った順序とは逆の順序で実行したりすることができることを意味する。
【００４２】
ＩｎｔｅｒｌｏｃｋＭａｐ（０，１）は、トランザクション順序づけテーブル１４６で現行トランザクションと現行トランザクションの２つ前に受け取ったトランザクションとの間に順次順序づけ要件がないかどうかを調べることによって生成される。トランザクション・タイプとメモリ・モデルに基づいてその２つのトランザクションの間に順次順序づけ要件がない場合でも、（Ａ）現行トランザクションと直前のトランザクションとの間に順次順序づけ要件があり、（Ｂ）直前のトランザクションとその直前のトランザクションとの間にも順次順序づけ要件がある場合には、その２つのトランザクションの間には間接的な順次順序づけ要件がある。この間接的順次順序づけ要件を推移関係と呼ぶ。
【００４３】
ＩｎｔｅｒｌｏｃｋＭａｐ（０，２）は、トランザクション順序づけテーブル１４６で現行トランザクションと現行トランザクションの３つ前に受け取ったトランザクションとの間に順次順序づけ要件がないかどうか調べることによって生成される。この２つのトランザクションにトランザクション・タイプとメモリ・モデルに基づいて順次順序づけ要件がない場合でも、（Ａ）現行トランザクションと現行トランザクションの２つ前のトランザクションとの間に順次順序づけ要件があり、（Ｂ）２つ前のトランザクションと直前のトランザクションとの間にも順次順序づけ要件がある場合は、その２つのトランザクションの間に間接的な順次順序づけ要件がある。
【００４４】
ｍｅｍｂａｒオーバーライド論理回路１５２の動作を除き、３つのインタロック・マップ値のブール論理式は以下のようになる。
0003807460.tif 000006
【００４５】
Ｔａｂｌｅ０、Ｔａｂｌｅ１およびＴａｂｌｅ２は、トランザクション順序づけテーブル１４６の同一のコピーである。テーブル１４６の並列コピーを備えることにより、すべてのインタロック・マップ値の計算を単一の状態機械クロック・サイクルで完了することができる。
【００４６】
ｍｅｍｂａｒオーバーライド論理回路１５２は次のように機能する。ｉ番目のメモリ・トランザクション（すなわちトランザクション・スコアボードでｉ番目の項目によって表されるトランザクション）の後にデータ・プロセッサによって相互接続機構にｍｅｍｂａｒ命令がエクスポートされた場合、メモリ・コントローラ論理回路は対応するｍｅｍｂａｒレコードをｍｅｍｂａｒバッファ１４４のｉ番目の項目に格納し、前の各保留トランザクションのｍｅｍｂａｒレコードも格納する。各ｍｅｍｂａｒバッファ・レコードは３つの項目を持つことができ、その例を表５に示す。
【表５】
0003807460.tif 000007
【００４７】
メモリ・トランザクションの後にｍｅｍｂａｒ命令が相互接続機構にエクスポートされない場合、対応するｍｅｍｂａｒレコードはすべてゼロに設定される。メモリ・トランザクションの後にｍｅｍｂａｒ命令がエクスポートされた場合、対応するｍｅｍｂａｒレコード（すなわち現行トランザクションと前の保留トランザクションのｍｅｍｂａｒレコード）は、現行トランザクションが完了する前に実行してはならない後続の各タイプのトランザクション（すなわちロード、ストア、またはアトミック）について１に設定される。すべての保留ｍｅｍｂａｒ制約が一緒に（すなわち累積的に）適用されるため、最も最近に受け取ったトランザクション要求のｍｅｍｂａｒ制約値は、直前に受け取ったトランザクションのために生成されたｍｅｍｂａｒ制約値と、データ・プロセッサから受け取った新しいｍｅｍｂａｒ制約値との論理和をとることによって生成することができる。
【００４８】
ｍｅｍｂａｒオーバーライド論理回路１５２が特定のインタロック・マップ値についてｍｅｍｂａｒバッファ１４４から「１」を受け取った場合、そのインタロック・マップ値は「１」に設定され、順次順序づけ制約またはインタロックが課されることを意味する。ｍｅｍｂａｒオーバーライド論理回路１５２が特定のインタロック・マップ値についてｍｅｍｂａｒバッファ１４４から「０」を受け取った場合は、インタロック・マップ値はトランザクション順序づけテーブル１４６から受け取った値に設定される。
【００４９】
図４を参照すると、各保留トランザクションのトランザクション・スコアボード・レコード１４２は、トランザクションの実行が順次順序づけ要件のためにブロックされるかどうかを示す「ブロック・フラグ」１６０を含む。具体的には、トランザクション・スコアボード１４０のすべてのレコード１４２について対応するトランザクション・ブロック決定論理回路１６２がある。（Ａ）まだ完了していないトランザクションについて保留トランザクションのインタロック・マップが順次順序づけ要件を示すか、または（Ｂ）保留トランザクションから４トランザクション以上前（すなわちインタロック・マップ項目のあるトランザクションを超えるトランザクション数以上前）の保留トランザクションがある場合、ブロック・フラグは「１」に設定されて、保留トランザクションがブロックされることを示す。トランザクションの完了によって他の保留トランザクションをブロック解除することができるため、メモリ・トランザクションが完了するたびにブロック・フラグ１６０は自動的に再計算される。
【００５０】
図５を参照すると、トランザクション・ディスパッチ論理回路１４８は各個別のメモリ資源またはメモリ・トランザクション経路ごとにトランザクション選択論理回路１７０を備える。トランザクション選択論理回路１７０の機能は、対応するメモリ資源にとって適切な最も古い保留トランザクションを選択することである。したがって、２つの別々のメモリ資源があり、そのうちの１つはロード・トランザクション用であり、１つはストア・トランザクションおよびアトミック・トランザクション用である場合、ストア経路のトランザクション選択論理回路１７０は、最も古い保留ストア・トランザクションまたはアトミック・トランザクションを選択し、保留ロード・トランザクションは選択しないことになる。
【００５１】
トランザクション・ブロック決定論理回路１６２とトランザクション選択論理回路１７０が組み合わさって、１組のトランザクション・アクティブ化規則を実施する。トランザクション・アクティブ化規則は、どの保留トランザクションがブロックされるか、したがってまだアクティブ化するのに適格でないか、どの保留トランザクションがブロック解除するか、したがってアクティブ化するのに適格であるか、どのブロック解除保留トランザクションをアクティブ化するかを示す。アクティブ・トランザクション（アクティブ化トランザクション）とは、実行中のプロセスである。
【００５２】
図６を参照する。図には、データ・プロセッサが相互接続機構にエクスポートしたメモリ・トランザクション要求を扱うのに使われる相互接続およびメモリ・コントローラ１１４内の状態機械の動作を示すフローチャートが図示されている。フローチャートの各ステップは、状態機械の連続的な状態を表す。ステップ１８０で、トランザクション・スコアボード内のすべての項目が１位置ずつシフトダウンされる。したがって、位置０の項目は位置１にシフトされ、以下同様にシフトされる。あるいは、トランザクション・スコアボードを循環バッファとして使用する場合は、最上位位置を指すポインタが更新される。トランザクション・スコアボードの動作を説明するために、ステップ１８０でトランザクション・レコードをシフトするものとする。次に（ステップ１８２）、図３に示す論理回路を使用して、受け取ったトランザクションのインタロック・マップを生成し、受け取ったトランザクションのトランザクション・スコアボード・レコードに格納する。このレコードはここではトランザクション・スコアボードの０番目の項目であるものとする。次に、図４に示す回路を使用して、受け取ったトランザクションのブロック・フラグを計算し、受け取ったトランザクションのトランザクション・スコアボード・レコードに格納する（ステップ１８４）。このブロック・フラグは、受け取ったトランザクションの実行が順次順序づけ要件によってブロックされるかどうかを示す。受け取ったトランザクションに適用可能な順次順序づけ要件に基づいて、または順次順序付け要件がないことに基づいて、そのトランザクションをトランザクション・バッファのうちの適切なバッファに格納し、格納したトランザクションを指すポインタを対応するトランザクション・スコアボード・レコードに格納する（ステップ１８６）。最後に、使用可能なメモリ資源についてトランザクション選択値を計算し（ステップ１８８）、受け取ったトランザクションをただちに処理することができるかどうかを調べる。
【００５３】
保留トランザクションがない場合、到着トランザクションがただちにアクティブにされる。このような、高速経路トランザクション処理のための最適化によって、トランザクションのスコアボード値とｍｅｍｂａｒ値の生成と記憶が行われている間に、同時にメモリ・トランザクションを開始することができるようになる。
【００５４】
図７を参照すると、実行するトランザクションを選択するために使用する相互接続およびメモリ・コントローラ１１４内の状態機械の動作を示すフローチャートが図示されている。この状態機械の動作は、相互接続機構内のメモリ資源のいずれかがメモリ・トランザクションを完了させるたびに開始される。完了したトランザクションはトランザクション・スコアボードと該当する保留トランザクション・バッファから削除される（ステップ１９０）。次に、完了したトランザクションが最も古い保留トランザクションではなかった場合、その完了したトランザクション以外のすべてのトランザクションがトランザクション・スコアボード内で１位置シフトアップされる（ステップ１９２）。さらに、完了したトランザクションを参照していたインタロック・マップを持つすべてのトランザクションのインタロック・マップが、完了したトランザクションとのインタロックがすべてなくなるようにそれらのインタロック・マップの内容をシフトさせることによって更新される。さらに、それに応じてｍｅｍｂａｒバッファ１４４の内容が更新される（ステップ１９４）。次に、図４に示す回路を使用してすべての保留トランザクションのブロック・フラグが再計算され、対応するトランザクション・スコアボード・レコードに格納される（ステップ１９６）。最後に使用可能なメモリ資源のトランザクション選択値が計算され（ステップ１９８）、使用可能なメモリ資源によって保留トランザクションのいずれかを扱うことができないかどうかを調べ、扱うことができる場合には選択したトランザクションの実行を開始する（ステップ２００）。
【００５５】
トランザクション・スコアボード１４０とｍｅｍｂａｒバッファ１４４をより効率的な集積構造で実装することによって他の最適化も行うことができる。
【００５６】
その他の考慮すべき点
相互接続アーキテクチャに応じて、ロード・ミス、ストア・ミス、および上記で定義したその他のメモリ・トランザクションによるキャッシュ・ミス動作を以下の相互接続トランザクションのカテゴリにマップすることができる。
・  読取り共有トランザクションがキャッシュのロード・ミスによって起こることがある。
・  読取り所有トランザクションがキャッシュのストア・ミスによって起こることがある。また、キャッシュで行われるアトミック操作が読取り所有相互接続トランザクションにマップされることがある。
・  メモリ・モデルのためにストア操作にマップされるフラッシュ操作により、書込み無効化トランザクションが生成されることがある。
割込みトランザクションはそれ自体の専用相互接続トランザクションにマップすることができるが、メモリ・モデルのためにストア操作にマップされる。
【００５７】
データ・プロセッサがメモリ・モデルをＴＳＯに設定した状態で連続ＲＤＳ（プロセッサのキャッシュにおけるロード・ミス時の読取り共有）トランザクションを行う場合、２つのトランザクションをプログラム順序で行わなければならず、システムにおけるグローバル事象順序づけで互いにバイパスすることはできない。しかし、データ・プロセッサがメモリ・モデルをＲＭＯに設定して連続ＲＤＳトランザクションを発行した場合は、２つのトランザクションをプログラム順序とは異なる順序で行うことができる。
【００５８】
メモリ・モデル情報を相互接続機構にエクスポートすることによって、相互接続機構はトランザクションのグローバル事象順序をプログラム順序とは異なる順序にすることができる。
【００５９】
前述の機構以外に、（上記でｍｅｍｂａｒ命令と呼んでいる）バリヤ命令を強制する他の機構は、相互接続機構に、該当する保留トランザクションの実行が完了するまでｍｅｍｂａｒ命令のデータ・プロセッサ受信に対する肯定応答を遅延させることである。バリヤ命令を強制する他の機構は、データ・プロセッサが後続の命令のために相互接続機構にエクスポートしたメモリ・モデル情報を修正して、バリヤ命令の前のトランザクションに関して順次順序づけを必要とするようにすることである。バリヤ命令を強制する他の機構は、相互接続機構に対する発行済みトランザクションが完了するまで、バリヤ命令によってブロックされる他のトランザクションのエクスポートをプロセッサにブロックさせることである。
【００６０】
本発明の相互接続メモリ・トランザクション管理方法はプリフェッチ・トランザクションもサポートする。プリフェッチ・トランザクションは、キャッシュ・ミスによる遅延が生じないように必要よりも早期に命令またはデータをデータ・プロセッサのキャッシュに入れるのに一般的に使用される。プリフェッチは主としてキャッシュを「ウォーミング・アップ」するためのものであるため、メモリ・モデルは一般にはプリフェッチ・トランザクションには適用されない。プリフェッチ・トランザクションの効果は、ソフトウェアの正常な実行には影響を与えない。したがって、プリフェッチ・トランザクションの順序外れ実行を可能にするために、データ・プロセッサは相互接続機構に対してすべてのプリフェッチ・トランザクションについてＲＭＯのメモリ・モデルを示すことができる。
【００６１】
同様に、メモリ・モデル値ＲＭＯを使用してライトバック・トランザクションを相互接続機構にエクスポートすることができる。順序づけ変更による整合性に関する問題を実施する適切な他の論理回路があれば、ライトバック・トランザクションを、犠牲を引き起こす関連するロード（すなわち読取り）トランザクションおよび前のすべてのトランザクションに関して並列または順序変更して実行することができる。
【００６２】
メモリ・モデルの作用範囲内にない他のタイプのトランザクションは割込みトランザクションであり、相互接続機構によって適切に順序変更することができるように、その前にｍｅｍｂａｒ  ｍｅｍｓｙｎｃ命令またはその他の同等のバリヤ命令を使用してメモリ・モデル値ＲＭＯと共に相互接続機構にエクスポートすることができる。
【００６３】
本発明について２、３の特定の実施形態を参照しながら説明したが、この説明は本発明を例示するものであって、本発明を限定するものと解釈すべきではない。当業者なら特許請求の範囲によって規定されている本発明の精神および範囲から逸脱することなく様々な修正を考えつくことができるであろう。
【００６４】
ＰＳＯメモリ・モデルをサポートしないデータ・プロセッサでは、相互接続機構にエクスポートされるメモリ・モデル情報はＳＳＯ、ＴＳＯ、およびＲＭＯメモリ・モデルのうちの１つを示すことになる。ＳＳＯおよびＲＭＯメモリ・モデルのみをサポートするデータ・プロセッサでは、各メモリ・トランザクション要求と共に相互接続機構にエクスポートするメモリ・モデル情報は１ビットだけでよい。
【図面の簡単な説明】
【図１】  本発明の実施形態を組み込むコンピュータ・システムを示すブロック図である。
【図２】  本発明の一実施形態によるメモリ・コントローラを示すブロック図である。
【図３】  本発明の一実施形態で使用するトランザクション・スコアボードとメモリ・コントローラ論理回路の一部を示すブロック図である。
【図４】  本発明の一実施形態で使用するトランザクション・スコアボードとメモリ・コントローラ論理回路の他の一部を示すブロック図である。
【図５】  本発明の一実施形態で使用するトランザクション・スコアボードとトランザクション・ディスパッチ論理回路の一部を示すブロック図である。
【図６】  本発明の一実施形態におけるデータ・プロセッサからのメモリ・トランザクション要求の受信に応答したメモリ・コントローラの動作を示すフローチャートである。
【図７】本発明の一実施形態におけるメモリ・トランザクションの完了に応答したメモリ・コントローラの動作を示すフローチャートである。
【符号の説明】
１０４  プロセッサ
１０６  相互接続ネットワーク
１０８  一次メモリ
１１０  二次メモリ
１１１  入出力資源
１１２  ネットワーク・インタフェース
１１３  遠隔場所メモリ
１１４  相互接続およびメモリ・コントローラ
１２０  キャッシュ・メモリ
１３０  メモリ・コントローラ論理回路
１３２  バッファ
１４０  トランザクション・スコアボード
１４６  トランザクション順序づけテーブル
１４８  トランザクション・ディスパッチ論理回路
１５０  インタロック・マップ
１５２  ｍｅｍｂａｒオーバライド論理回路
１６２  ブロック決定論理回路
１７０  トランザクション選択論理回路
【図１】
0003807460.tif 000008
【図２】
0003807460.tif 000009
【図３】
0003807460.tif 000010
【図４】
0003807460.tif 000011
【図５】
0003807460.tif 000012
【図６】
0003807460.tif 000013
【図７】
0003807460.tif 000014