JP3807460B2 - 複数のメモリ・モデルを使用してメモリ・トランザクションの実行を並列化するシステムおよび装置 - Google Patents

複数のメモリ・モデルを使用してメモリ・トランザクションの実行を並列化するシステムおよび装置 Download PDF

Info

Publication number
JP3807460B2
JP3807460B2 JP18728497A JP18728497A JP3807460B2 JP 3807460 B2 JP3807460 B2 JP 3807460B2 JP 18728497 A JP18728497 A JP 18728497A JP 18728497 A JP18728497 A JP 18728497A JP 3807460 B2 JP3807460 B2 JP 3807460B2
Authority
JP
Japan
Prior art keywords
memory
transaction
memory transaction
transactions
ordering
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.)
Expired - Lifetime
Application number
JP18728497A
Other languages
English (en)
Other versions
JPH113268A (ja
Inventor
ザヒール・エイブラヒム
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH113268A publication Critical patent/JPH113268A/ja
Application granted granted Critical
Publication of JP3807460B2 publication Critical patent/JP3807460B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types

Description

【0001】
【発明の属する技術分野】
本発明は、メモリへのアクセスを管理するためにメモリ・コントローラを使用し、変化するメモリ・アクセス順序づけ要件を有するメモリ・トランザクションを実行するコンピュータ・システムに関し、具体的には、メモリ・コントローラが、メモリ・コントローラにエクスポートされる各メモリ・トランザクションのメモリ・アクセス順序づけ要件と整合性のある方式でメモリ・トランザクションを順序づけし直し、並列して実行するシステムに関わる。
【0002】
【従来の技術】
定義
本明細書では「相互接続機構」という用語は、データ・プロセッサとデータ・プロセッサが使用するメモリ資源との間の回路およびデータ経路を意味するものと定義する。また、相互接続機構は、データ・プロセッサをメモリ資源だけでなく様々な入出力チャネルにも接続することができる。
【0003】
本明細書では、「強く順序づけされたトランザクション」の場合のような「強く順序づけされた」という用語は、トランザクションをプログラム命令ストリームで指定されているのと同じ順序で実行しなければならないことを意味するものと定義する。
【0004】
「メモリ・トランザクションを並列実行する」という用語は、多くのコンピュータ・システムにおいて、相互接続機構で使用可能な並列メモリ・トランザクション経路を使用して、重なり合った期間中にいくつかのメモリ・トランザクションを並列して実行することができることを指す。
【0005】
本明細書の文脈では「並列処理」という用語は、相互接続機構で使用可能な並列メモリ・トランザクション経路を使用して、重なり合った期間中にメモリ・トランザクションを並列実行することを指す。プログラム命令がそれに付随するメモリ・トランザクションの並列実行により偶然に並列して実行される場合を除き、データ・プロセッサによる命令の並列実行のことは指さない。
【0006】
メモリ・トランザクションとは以下のいずれかである。
・ ストア:指定した記憶場所の値を置き換えるように求めるプロセッサからの要求。プロセッサがストア・トランザクションを開始する際、アドレスと新しい値がストア・トランザクションに結合される。ストアは新しい値がシステム内のすべてのプロセッサに認識可能(グロバールに認識可能)になると完了する。
・ ロード:指定した記憶場所の値を取り出すように求めるプロセッサからの要求。プロセッサがロード・トランザクションを開始すると、アドレスがロード・トランザクションに結びつけられる。ロードは、返される値が他のプロセッサによって行われるストアによって変更することができなくなると完了する。
・ アトミック:他のメモリ・トランザクションがロードとストアの間にメモリの状態を変更しないように保証されたロード/ストアの対。アトミック・トランザクションとは、ロードとストアの両方であるとみなされる。
・ フラッシュ:命令空間にエイリアスされたデータ空間の変更に強制的に整合性をもたせるように求めるプロセッサからの要求。フラッシュ・トランザクションはメモリ・モデルのためのストア操作とみなされる。
・ 割込み:1つのプロセッサから直接他のプロセッサへのクロス呼出しトランザクション。割込みトランザクションはメモリ・モデルのためのストア操作のようなものと考えられる。
・ プリフェッチ:メモリ・モデルのためのロード操作と考えられる。
【0007】
「プログラム順序」とは、プロセッサnが命令を論理的に実行したシーケンスを示す、プロセッサ単位の順序である。メモリ・トランザクションAとメモリ・トランザクションBがプログラム順であると言われるのは以下の場合に限られる。メモリ・トランザクションAが、メモリ・トランザクションBが行われる命令の前に実行される命令によって行われる場合。
【0008】
「メモリ・トランザクション順序づけモデル」(簡潔にするために通常「メモリ・モデル」と短縮される)とは、本明細書では、メモリ・トランザクションが生成された順序とは異なる順序で実行することができる程度を規定する1組の規則を意味するものと定義する。相互接続機構から見た4つのメモリ・モデルの定義は以下の通りである。
1)RMO(緩いメモリ順序)。 RMOを使用するプログラムおよびプログラム・セグメントでは、プロセッサの自己一貫性のために必要な制限以外には、相互接続機構に対して出されるトランザクションに関する順序づけ制限がない。
2)PSO(部分ストア順序)。 PSOを使用するプログラムおよびプログラム・セグメントでは、ロードはそれ以降のすべてのメモリ・トランザクションに対するブロッキングであり、それ以前のロードに対して順序づけされる。アトミック・トランザクションは、ロード・トランザクションに対して順序づけされる(すなわち、アトミック・トランザクションとロード・トランザクションは互いにバイパスすることができない)。ストアは他のストアをバイパスすることができるが、後のストアは前のロード・トランザクションをバイパスすることができない。視点を変えると、PSOの規定は、RMOの規定に、ロード・セマンティクスを持つすべてのメモリ・トランザクション(ロード・トランザクションとアトミック・トランザクションを含む)の後には暗黙のMembar LoadLoad LoadStoreが続くという追加要件が付いたものである。
3)TSO(トータル・ストア順序)。 TSOを使用するプログラムおよびプログラム・セグメントでは、ストアはストアをバイパスせず、ロードはそれ以降のストアおよびロードに対するブロッキングであり、ロードをバイパスしない。ロードは前のストアをバイパスすることができるが、ストアは前のロードをバイパスしてはならない。アトミック・トランザクションは、以降のトランザクションに対するブロッキングである。別の視点から見ると、TSOの規定は、PSOの規定に、ストア・セマンティクスを持つすべてのメモリ・トランザクション(ストア・トランザクションとアトミック・トランザクションを含む)の後に暗黙のMembar StoreStoreが続くという追加要件が付いたものである。
4) SSO(強い順次順序)。SSOは通常、入出力装置にアクセスするのに必要である。SSOは、順序が一貫したハードウェアを前提とするプログラムでも使用される。トランザクション発行順序、完了順序、およびプログラム順序はすべて同じである。プログラム順序のロードとストアは、プロセッサまたは相互接続機構で互いにバイパスしない。
【0009】
「同期コマンド」および「membar」命令という用語は両方とも、同期点の前の一部またはすべてのタイプのメモリ・トランザクションが、同期点の後のメモリ・トランザクションの実行の前に完了するようにするために使用される命令を指す。本明細書では、以下のように5種類のタイプのmembar命令を定義する。
1) membar memsync:このmembar命令の前の(すべてのタイプの)すべてのメモリ・トランザクション命令は、このmembar命令の後のメモリ・トランザクション命令の実行の前に完了しなければならない。
2) membar store−store:このmembar命令の前のすべてのストア命令は、このmembar命令の後のストア命令の実行の前に完了しなければならない。
3) membar load−load:このmembar命令の前のすべてのロード命令は、このmembar命令の後のロード命令の実行の前に完了しなければならない。
4) membar store−load:このmembar命令の前のすべてのストア命令は、このmembar命令の後のロード命令の実行の前に完了しなければならない。
5) membar load−store:このmembar命令の前のすべてのロード命令は、このmembar命令の後のストア命令の実行の前に完了しなければならない。
【0010】
RMOモデルを使用する場合、適切なmembar命令を発行することによって2つのトランザクションの間の順序づけ要件が強制される。TSOモデルを使用する場合、ロード・トランザクションの後に暗黙的に「membar load−load」命令と「membar load−store」命令が続き、ストア・トランザクションの後には暗黙的に「membar store−store」命令が続く。
【0011】
データ・プロセッサ内でのメモリ・モデルの使用
様々なトランザクションを処理し、メモリ・アクセス要求(ストアおよびロード)をそれ自体のキャッシュ・メモリの外部にある場所にエクスポートする順序を決定するデータ・プロセッサ(CPUと呼ぶ場合がある)の関係では、(A)データ・プロセッサが実行中のトランザクションのタイプから、メモリ・アクセス要求の順序を変更してもエラーが発生しないことを認識し、(B)エクスポートされたメモリ・アクセス要求の順序を変更すると様々なメモリ・アクセス・トランザクションの並列実行が可能になることによってシステムの動作速度が向上する可能性がある場合、データ・プロセッサは、メモリ・アクセス要求が生成されたプログラム実行順序とは異なる順序でメモリ・アクセス要求をエクスポートすることができることは周知である。
【0012】
大規模なスケーラブル・システムや、高パフォーマンスのマルチプロセッサ・システムでは、実行されるソフトウェアはいくつかの異なる所定のメモリ・モデルを使用することができる。上記ではこのようなメモリ・モデルを4種類定義している。このようなソフトウェアを設計するプログラマは、様々なメモリ・モデルを暗黙的または明示的に使用するプログラム命令を使用することによってプログラムの実行速度の向上を試みることができる。すなわち、プログラム中の命令のうちの少なくとも一部は、プログラムに付随するメモリ・トランザクションのうちの一部を並列実行することができるようにするメモリ・モデルを指定することができる。プログラマは、プログラム内のあらゆる点で強力な順序の一貫性を要求せずに、プログラム内の意味のある点で「同期点」を明示的に指定することにより、プログラム内のメモリ・トランザクションの実行の並列化を試みることができる。このような同期点は、同期点の前にある一部またはすべてのタイプのメモリ・トランザクションが、同期点の後にあるメモリ・トランザクションの実行の前に完了することを必要とする。
【0013】
複数のメモリ・モデルの使用、または緩いメモリ・モデルとmembar命令とを組み合わせた使用によって、理論上、プログラマはそれらを使用しない場合よりも多くの並列処理をプログラムで指定または実行可能となる。しかし、データ・プロセッサは一般に相互接続機構にメモリ・モデル情報を供給していない。実際には、ほとんどのデータ・プロセッサは、発行したすべてのメモリ・アクセス・トランザクションが強く順序づけされることを求める。その結果、そのようなデータ・プロセッサでは、データ・プロセッサはメモリ・トランザクションが相互接続機構に送られる順序をそれに対応するメモリ・トランザクション要求がプログラム命令によって生成された順序とは異なる順序に内部的に変更することができるが、相互接続機構はメモリ・トランザクションを順序変更しない。
【0014】
PowerPCマイクロプロセッサはこれとは異なる方法をとる。PowerPCは最も弱いメモリ・モデル(上記で定義したRMO)を採り、相互接続機構がすべてのトランザクションを並列化することができるようにする。したがって、PowerPCは、アプリケーションと、デバイス・ドライバなどのシステム・ソフトウェアの両方のすべてのプログラムが適切なメモリ同期コマンドを確実に持つようにしなければならないという負担をプログラマに負わせる。ハードウェアからのより強力なメモリ・モデルを前提とするプログラムは、多くの同期コマンドを組み込まなければPowerPCでは正常に実行されない。一般に、1996年の時点で商業化されているソフトウェアは、相互接続機構がSSOやTSOなどの強力なメモリ・モデルを使用することを前提とするものの方が、相互接続機構がPSOやRMOなどのより弱いメモリ・モデルを使用することを前提とするソフトウェアよりもはるかに多い。
【0015】
【発明が解決しようとする課題】
データ・プロセッサによっては、プロセッサ内で多くのメモリ・モデルをサポートするものもある。たとえば、SPARCプロセッサは、SSO、TSO、PSO、およびRMOをすべてサポートする。このため、この種のデータ・プロセッサはキャッシュ・メモリとの間のメモリ・トランザクションを順序づけし直すことができる。しかし、この種のデータ・プロセッサは相互接続機構にメモリ・モデル情報を提供しない。その結果、データ・プロセッサの相互接続機構は単一のメモリ・モデルをサポートしなければならず、SPARCプロセッサの場合、この単一のメモリ・モデルは従来、メモリ参照のために相互接続インタフェースにあるSSOであった。SPARCプロセッサでは入出力トランザクションは別個の非キャッシュ・トランザクションによって記述され、相互接続機構はSSOモデルだけを使用してそれを実行する。したがって、このようなシステムには、実行プログラムが使用する内部メモリ・モデルが相互接続機構が実施する単一のメモリ・モデルよりも弱い場合(すなわちより多くの並列処理が可能な場合)、メモリ・トランザクションを並列化する柔軟性または機会がない。これは、メモリが恣意的に遠くなることがあって相互接続ネットワークによって接続されるNUMAアーキテクチャでは、さらに重大になる。このような場合、メモリ・モデル情報を相互接続ネットワークコントローラが入手することができるようにした場合、相互接続ネットワークを介してトランザクションを並列化する機会が多くなる。
【0016】
【課題を解決するための手段】
コンピュータ・プログラムによる複数のメモリ・トランザクション順序づけモデル(メモリ・モデル)の使用をサポートするデータ・プロセッサを有するコンピュータ・システムにおいて、メモリ・トランザクションを以下のように管理する。メモリおよび相互接続コントローラなどのデータ・プロセッサの外部にあるデバイスで、データ・プロセッサからのメモリ・トランザクション要求を受け取る。各メモリ・トランザクション要求には、事前定義された複数のメモリ・モデルの中から選択されたメモリ・モデルが関連づけられている。好ましい実施態様では、サポートされる事前定義メモリ・モデルは、SSO(強い順次順序)、TSO(トータル・ストア順序)、PSO(部分ストア順序)、およびRMO(緩いメモリ順序)である。
【0017】
保留メモリ・トランザクションを表すデータが1つまたは複数の保留トランザクション・バッファと保留トランザクション状況アレイとに格納される。保留トランザクション状況データには、どの保留メモリ・トランザクションを他の保留メモリ・トランザクションより前に実行することができるかを示すメモリ・トランザクション順序データが含まれる。具体的には、メモリ・コントローラ内の論理回路が、最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・モデルと、少なくとも1つの他の保留メモリ・トランザクションに関連づけられたメモリ・モデルとに基づいて、最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクションを他方の保留メモリ・トランザクションの前に実行することができるかどうかを判断し、次にその順序づけの決定を表すデータをトランザクション・スコアボードに格納する。
【0018】
メモリ・コントローラは、保留メモリ・トランザクションをこのメモリ・トランザクション順序データと整合性のある順序で実行する。その結果、保留メモリ・トランザクションのサブセットは、データ・プロセッサから受け取った順序とは異なる順序で実行される。
【0019】
【発明の実施の形態】
本発明の他の目的および特徴は、図面を参照しながら以下の詳細な説明と特許請求の範囲を読めばより容易にわかるであろう。
【0020】
図1を参照すると、プロセッサ104のクラスタを備えるコンピュータ・システム100が図示されている。プロセッサ104は相互接続ネットワーク106を介して一次メモリ(ランダム・アクセス・メモリ)108と二次メモリ110(磁気ディスク記憶装置などの不発性メモリ)と入出力資源111とに結合されている。ネットワーク・インタフェース112によって、他のプロセッサ・クラスタに関連づけられた遠隔場所にあるメモリ113にアクセスすることができる。一次メモリ108と二次メモリ110と入出力資源11と遠隔場所にあるメモリ113とへのアクセスは、相互接続機構およびメモリ・コントローラ114によって管理される。プロセッサ104の他のクラスタが、遠隔場所のメモリ113へのアクセスおよび当該クラスタのローカル・メモリ資源へのアクセスをそれ自体の相互接続ネットワーク106を介して共有する。
【0021】
本明細書では、「メモリ・コントローラ」とは、データ・プロセッサの外部にあって、データ・プロセッサからキャッシュ・ミス・トランザクションを受け取るあらゆる制御論理回路を指す。これには、相互接続コントローラ、遠隔メモリ・コントローラ、入出力コントローラなどが含まれる。
【0022】
クラスタ内の各プロセッサ104は、実装されている共有メモリ・アーキテクチャのタイプに応じて、システム内の他のプロセッサのキャッシュ・メモリに記憶されている内容との一貫性(すなわち整合性)を維持することができるそれ自体のローカル・キャッシュ・メモリ120を備える。各プロセッサ104はメモリ管理ユニット122も備え、メモリ管理ユニットは、データ・プロセッサ104によって実行されるプロセスによって使用される仮想アドレスを様々な記憶装置108、110内の記憶場所に対応する物理アドレスに変換するアドレス変換バッファ(TLB)を含む。
【0023】
その結果の一次物理メモリ・アドレス内のデータのコピーがキャッシュ・メモリ120に記憶されている場合、プロセッサ104はそれ自体のキャッシュ・メモリ120内のアドレス指定されたデータに直接アクセスする。アドレス指定されたデータがキャッシュ・メモリ120内にない場合、相互接続およびメモリ・コントローラ114はアドレス指定されたデータを一次メモリ108、二次メモリ110、または遠隔メモリ112から取り出し、それをキャッシュ・メモリ120に格納する。二次メモリ110(ディスクからのDMA)または遠隔メモリ113(COMAおよび単純COMAアーキテクチャなど)から取り出されたデータの場合、一般にはソフトウェア制御の下でフル・ページのデータがまず一次メモリ108にコピーされ、次にそこからキャッシュ・ラインと呼ばれるより小さなブロックのデータがキャッシュ・メモリ120にコピーされる。NUMAアーキテクチャでは、データは遠隔メモリ113からキャッシュ・メモリ120に直接フェッチされる。次に、プロセッサ104はそのプロセッサのキャッシュ・メモリ120からアドレス指定されたデータにアクセスする。
【0024】
本発明の好ましい実施形態では、相互接続およびメモリ・コントローラ114に送られる各メモリ・トランザクション(すなわちロード、ストア、またはアトミック・メモリ・トランザクション)には、2ビット・メモリ・モデル値MM[1:0]が関連づけられている。その値は、SSOは11、TSOは10、PSOは01、RMOは00である。プロセッサのISA(命令セット・アーキテクチャ)内のすべてのメモリ・トランザクションは、ロード、ストア、およびアトミックのトランザクションのカテゴリのうちの1つにマップされる。たとえば、「割込み送信」は「ストア」トランザクション・カテゴリにマップされ、「ブロック・ストア」は「ストア」トランザクション・カテゴリにマップされ、プリフェッチは「ロード」トランザクション・カテゴリにマップされるという具合である。
【0025】
これらのマッピングではメモリ・モデル情報も指定することができる。たとえば、プリフェッチ・ロードをメモリ・モデルRMOと共に発行することができる。割込みは、(A)特にメモリに対する前のストア操作の後に順序づけなければならない場合はメモリ・モデルSSO、または(B)前のメモリ操作に対する依存関係がない場合はメモリ・モデルRMOと共に発行することができる。メモリ・モデル・ビットMMによって、適切な場合にはより多くの並列処理を使用することができるように割込みトランザクションに対する順序づけ制約が指定されるため、これは割込みトランザクションが相互接続機構で専用トランザクション・タイプを使用する場合であっても適用される。
【0026】
MM[1:0]ビットは、プロセッサ状態レジスタによって供給するか、またはMMU122がメモリ・トランザクションに関連づけられたアドレスを物理アドレスに変換するために使用するページ・テーブル項目から供給することができる。すなわち、本発明のある種の実施形態では、MMUが使用するページ・テーブル内のページごとにメモリ・モデル特性を示すことができる。相互接続機構(すなわち相互接続およびメモリ・コントローラ114)に送られるメモリ・トランザクション要求にMM(メモリ・モデル)値を組み込むことにより、相互接続およびメモリ・コントローラ114は、データ・プロセッサから出されたトランザクションが複数ある場合に、どのトランザクションがどのメモリ・モデルに従って発行されたかを追跡することができる。また、これによってコントローラ114は、並列トランザクション処理が使用可能な場合により弱いメモリ・モデルに従って発行されたメモリ・トランザクションを並列化することができ、より強いメモリ・モデルに従って発行されたトランザクションが強く順序づけされるように保証することができる。
【0027】
並列処理が最大限になるように(すなわち可能な場合には常に並列メモリ・トランザクション経路を使用するように)トランザクションのうちのいくつかを順序外れで実行することができる場合、発行された複数のメモリ・トランザクションを完了するための全体的な待ち時間が大幅に短縮されることが多い。これによって、相互接続機構の全体的なスループットも向上する。
【0028】
相互接続機構にエクスポートされる各メモリ・トランザクションと共にプロセッサのメモリ・モデルを簡潔、一様かつ効率的な方法でコード化することによって、各メモリ・モデルにとって適切な並列メモリ・トランザクション経路の使用が可能になるだけでなく、順次順序で実行されなければならないメモリ・トランザクションの効率的なパイプライン化も可能になる。
【0029】
図2を参照すると、相互接続およびメモリ・コントローラ114はメモリ・コントローラ制御回路130を備え、メモリ・コントローラ制御回路130は保留メモリ・トランザクションの追跡と保留トランザクション間のインタロックの決定とトランザクションの実行の管理とを行ういくつかの状態機械を含む。メモリ・トランザクション・インタフェースまたはポート131でメモリ・トランザクション要求を受け取り、次に、それぞれ順序づけされていない保留トランザクション、順序づけされたロード・トランザクション、および順序づけされたストア・トランザクションを格納するために使用されるいくつかのバッファ132、134、136のうちの1つに格納される。あるいは、すべての保留メモリ・トランザクションを1つのバッファに格納することもできる。
【0030】
すべての保留メモリ・トランザクションに関する状況情報がトランザクション・スコアボード140に格納される。その一部について以下で詳述する。しかし、基本的にはトランザクション・スコアボード140には各保留メモリ・トランザクションごとに1つのレコード142が格納される。レコードはデータ・プロセッサから受け取った順序と同じ順序で配置される。各レコードは、トランザクション要求が格納されているバッファ場所を指すポインタと、状況情報と、インタロック・マップと呼ぶトランザクション・インタロック情報とを含む。
【0031】
好ましい実施形態では、データ・プロセッサがmembar命令を実行するとき、その命令は相互接続およびメモリ・コントローラ114に渡され、相互接続およびメモリ・コントローラ114はそのmembar命令の表現をmembarバッファ144に格納する。具体的には、membarバッファ144にはトランザクション・スコアボード140の各レコード142に対応するレコードが含まれる。各membarレコードに格納されたデータは、データ・プロセッサによるmembar同期命令の実行のために、どのタイプのトランザクションを対応する保留トランザクションの前に行うことができないかを示す。membarトランザクション順序づけ制約は、様々なメモリ・モデルに付随するメモリ・トランザクション順序づけ制約を補足またはオーバーライドする。
【0032】
様々なメモリ・モデルに付随するメモリ・トランザクション順序づけ制約は、1組のトランザクション順序づけテーブル146によって表される。各テーブル146は、TXT1(前のトランザクションのトランザクション・タイプ)、MM1(前のトランザクションに関連づけられたメモリ・モデル)、TXT2(次のトランザクションのトランザクション・タイプ)、およびMM2(次のトランザクションに関連づけられたメモリ・モデル)の各軸を持つ四次元テーブルとみなすことができる。後述する理由から、一実施形態では、相互接続およびメモリ・コントローラ114はトランザクション順序づけテーブルのN個のコピーを記憶し、Nは可能最大トランザクション順序づけ変更範囲である。たとえばNが3の場合、トランザクションは最高3つの直前のメモリ・トランザクションに対して順序づけし直すことができる。
【0033】
トランザクション順序づけテーブル146のいくつかの部分を表1ないし4に示す。これらの各表で、行見出しは前のトランザクションのトランザクション・タイプおよびメモリ・モデルを示し、列見出しは後続のトランザクションのトランザクション・タイプとメモリ・モデルを示す。それぞれ「M」または「P」であるテーブル項目は以下のように定義される。
・ P:2つのメモリ・トランザクションをプログラム発行順序(すなわちメモリ・コントローラが受け取ったのと同じ順序)で実行する。
・ M:2つのメモリ・トランザクションを任意の順序で実行する。
【表1】
Figure 0003807460
【表2】
Figure 0003807460
【表3】
Figure 0003807460
【表4】
Figure 0003807460
【0034】
トランザクション順序づけテーブル146で順序づけ制約によって表されるメモリ・トランザクション・モデルの「作用」はある程度恣意的である。しかし、トランザクション順序づけテーブル146に関連づけられる順序づけ制約が選択され、指定された後は、それらの制約はコンピュータ・システムとプログラマの間の契約と似ている。プログラマはその契約を使用して、特定のプログラムによって実行されるタスクに関連づけられたメモリ・トランザクション順序づけ要件を守らせるためにmembar命令(フェンス、バリヤ、または同期命令とも呼ぶ)をどこに挿入しなければならないかを判断する。
【0035】
どの入出力トランザクションおよびメモリ・トランザクションを順序づけ変更または並列化することができるかを判断する基準としてトランザクション順序づけテーブル146を使用することによって、トランザクション順序づけテーブル146を新しいメモリ・モデルを扱うように容易に拡張することができ、メモリ・モデルの定義の変更に対応するように(選択した「P」項目を「M」に置き換えたりその逆に置き換えたりすることによって)トランザクション順序づけテーブル146を容易に修正することができるため、柔軟性が得られる。
【0036】
メモリ・コントローラはトランザクション・ディスパッチ論理回路148も備える。このトランザクション・ディスパッチ論理回路148は、他のメモリ・トランザクションを受け入れることができる状態になっている各メモリ資源について実行する保留トランザクションがある場合にその保留トランザクションを選択する論理回路である。
【0037】
例示
図3ないし図7は、本発明の実施形態を示す図である。その他の実施形態では、トランザクション間のさらに大規模な並列処理を実現することもできる。
【0038】
受け取ったトランザクションのインタロック・マップを生成するインタロック決定論理回路
図3を参照すると、相互接続およびメモリ・コントローラ114の動作を説明するために、1データ・プロセッサ当たり最高7つの保留メモリ・トランザクションをストアすることができ、メモリ・トランザクションをそのトランザクションの前に受け取った最高3つのトランザクションまで順序づけ変更することができ、トランザクションを実行するために3つの並列メモリ・トランザクション経路を使用するコントローラ114について説明する。他の実施形態では、最大記憶トランザクション数、トランザクション順序づけ変更の深さ、および個別メモリ資源の数は、これらの設計選定内容とは異なることがある。
【0039】
図3に示すように、各トランザクション・スコアボードのレコード142には、関連づけられたトランザクションのメモリ・モデル(MM)と、トランザクション・タイプ(TXT)(すなわちロード、ストア、またはアトミック)と、直前の3つのトランザクションに関する順序づけ制約を示すインタロック・マップ150とが格納される。
【0040】
各保留トランザクションのインタロック・マップの3ビットは、以下のように定義される。InterlockMap(i,0)は、i番目の保留トランザクションをその直前の保留トランザクションに関して順序づけ変更することができない場合は1に等しく、i番目の保留トランザクションをその直前のトランザクションに関して順序づけ変更することができる場合は0に等しい。同様に、InterlockMap(i,1)は、i番目の保留トランザクションをi番目のトランザクションの2つ前のトランザクション(すなわちトランザクション・スコアボードのi+2番目の項目によって表されるトランザクション)に関して順序づけ変更することができない場合は1に等しく、i番目の保留トランザクションをi番目のトランザクションの2つ前のトランザクションに関して順序づけ変更することができる場合は0に等しい。最後に、InterlockMap(i,2)は、i番目の保留トランザクションをi番目のトランザクションの3つ前のトランザクション(すなわちトランザクション・スコアボードのi+3番目の項目によって表されるトランザクション)に関して順序づけ変更することができない場合は1に等しく、i番目の保留トランザクションをi番目のトランザクションの3つ前のトランザクションに関して順序づけ変更することができる場合は0に等しい。
【0041】
membarオーバーライド論理回路(MOL)152をさし当たって無視すると、(メモリ・コントローラ論理回路130の一部である)インタロック決定論理回路154が現行トランザクションと直前のトランザクションに対応するトランザクション順序づけテーブル146内の項目を参照するだけでInterlockMap(0,0)が生成される。すなわち、現行トランザクションのメモリ・モデルおよびトランザクション・タイプ(MM1,TXT0)と直前のトランザクションのメモリ・モデルおよびトランザクション・タイプ(MM0,TXT0)とに応じて順序づけ制約が生成される。テーブル項目が「P」の場合、論理「1」が出力され、トランザクションを順次に順序づけなければならないことを意味する。「P」でない場合は「0」が出力され、その2つのトランザクションを並列して実行したり、受け取った順序とは逆の順序で実行したりすることができることを意味する。
【0042】
InterlockMap(0,1)は、トランザクション順序づけテーブル146で現行トランザクションと現行トランザクションの2つ前に受け取ったトランザクションとの間に順次順序づけ要件がないかどうかを調べることによって生成される。トランザクション・タイプとメモリ・モデルに基づいてその2つのトランザクションの間に順次順序づけ要件がない場合でも、(A)現行トランザクションと直前のトランザクションとの間に順次順序づけ要件があり、(B)直前のトランザクションとその直前のトランザクションとの間にも順次順序づけ要件がある場合には、その2つのトランザクションの間には間接的な順次順序づけ要件がある。この間接的順次順序づけ要件を推移関係と呼ぶ。
【0043】
InterlockMap(0,2)は、トランザクション順序づけテーブル146で現行トランザクションと現行トランザクションの3つ前に受け取ったトランザクションとの間に順次順序づけ要件がないかどうか調べることによって生成される。この2つのトランザクションにトランザクション・タイプとメモリ・モデルに基づいて順次順序づけ要件がない場合でも、(A)現行トランザクションと現行トランザクションの2つ前のトランザクションとの間に順次順序づけ要件があり、(B)2つ前のトランザクションと直前のトランザクションとの間にも順次順序づけ要件がある場合は、その2つのトランザクションの間に間接的な順次順序づけ要件がある。
【0044】
membarオーバーライド論理回路152の動作を除き、3つのインタロック・マップ値のブール論理式は以下のようになる。
Figure 0003807460
【0045】
Table0、Table1およびTable2は、トランザクション順序づけテーブル146の同一のコピーである。テーブル146の並列コピーを備えることにより、すべてのインタロック・マップ値の計算を単一の状態機械クロック・サイクルで完了することができる。
【0046】
membarオーバーライド論理回路152は次のように機能する。i番目のメモリ・トランザクション(すなわちトランザクション・スコアボードでi番目の項目によって表されるトランザクション)の後にデータ・プロセッサによって相互接続機構にmembar命令がエクスポートされた場合、メモリ・コントローラ論理回路は対応するmembarレコードをmembarバッファ144のi番目の項目に格納し、前の各保留トランザクションのmembarレコードも格納する。各membarバッファ・レコードは3つの項目を持つことができ、その例を表5に示す。
【表5】
Figure 0003807460
【0047】
メモリ・トランザクションの後にmembar命令が相互接続機構にエクスポートされない場合、対応するmembarレコードはすべてゼロに設定される。メモリ・トランザクションの後にmembar命令がエクスポートされた場合、対応するmembarレコード(すなわち現行トランザクションと前の保留トランザクションのmembarレコード)は、現行トランザクションが完了する前に実行してはならない後続の各タイプのトランザクション(すなわちロード、ストア、またはアトミック)について1に設定される。すべての保留membar制約が一緒に(すなわち累積的に)適用されるため、最も最近に受け取ったトランザクション要求のmembar制約値は、直前に受け取ったトランザクションのために生成されたmembar制約値と、データ・プロセッサから受け取った新しいmembar制約値との論理和をとることによって生成することができる。
【0048】
membarオーバーライド論理回路152が特定のインタロック・マップ値についてmembarバッファ144から「1」を受け取った場合、そのインタロック・マップ値は「1」に設定され、順次順序づけ制約またはインタロックが課されることを意味する。membarオーバーライド論理回路152が特定のインタロック・マップ値についてmembarバッファ144から「0」を受け取った場合は、インタロック・マップ値はトランザクション順序づけテーブル146から受け取った値に設定される。
【0049】
図4を参照すると、各保留トランザクションのトランザクション・スコアボード・レコード142は、トランザクションの実行が順次順序づけ要件のためにブロックされるかどうかを示す「ブロック・フラグ」160を含む。具体的には、トランザクション・スコアボード140のすべてのレコード142について対応するトランザクション・ブロック決定論理回路162がある。(A)まだ完了していないトランザクションについて保留トランザクションのインタロック・マップが順次順序づけ要件を示すか、または(B)保留トランザクションから4トランザクション以上前(すなわちインタロック・マップ項目のあるトランザクションを超えるトランザクション数以上前)の保留トランザクションがある場合、ブロック・フラグは「1」に設定されて、保留トランザクションがブロックされることを示す。トランザクションの完了によって他の保留トランザクションをブロック解除することができるため、メモリ・トランザクションが完了するたびにブロック・フラグ160は自動的に再計算される。
【0050】
図5を参照すると、トランザクション・ディスパッチ論理回路148は各個別のメモリ資源またはメモリ・トランザクション経路ごとにトランザクション選択論理回路170を備える。トランザクション選択論理回路170の機能は、対応するメモリ資源にとって適切な最も古い保留トランザクションを選択することである。したがって、2つの別々のメモリ資源があり、そのうちの1つはロード・トランザクション用であり、1つはストア・トランザクションおよびアトミック・トランザクション用である場合、ストア経路のトランザクション選択論理回路170は、最も古い保留ストア・トランザクションまたはアトミック・トランザクションを選択し、保留ロード・トランザクションは選択しないことになる。
【0051】
トランザクション・ブロック決定論理回路162とトランザクション選択論理回路170が組み合わさって、1組のトランザクション・アクティブ化規則を実施する。トランザクション・アクティブ化規則は、どの保留トランザクションがブロックされるか、したがってまだアクティブ化するのに適格でないか、どの保留トランザクションがブロック解除するか、したがってアクティブ化するのに適格であるか、どのブロック解除保留トランザクションをアクティブ化するかを示す。アクティブ・トランザクション(アクティブ化トランザクション)とは、実行中のプロセスである。
【0052】
図6を参照する。図には、データ・プロセッサが相互接続機構にエクスポートしたメモリ・トランザクション要求を扱うのに使われる相互接続およびメモリ・コントローラ114内の状態機械の動作を示すフローチャートが図示されている。フローチャートの各ステップは、状態機械の連続的な状態を表す。ステップ180で、トランザクション・スコアボード内のすべての項目が1位置ずつシフトダウンされる。したがって、位置0の項目は位置1にシフトされ、以下同様にシフトされる。あるいは、トランザクション・スコアボードを循環バッファとして使用する場合は、最上位位置を指すポインタが更新される。トランザクション・スコアボードの動作を説明するために、ステップ180でトランザクション・レコードをシフトするものとする。次に(ステップ182)、図3に示す論理回路を使用して、受け取ったトランザクションのインタロック・マップを生成し、受け取ったトランザクションのトランザクション・スコアボード・レコードに格納する。このレコードはここではトランザクション・スコアボードの0番目の項目であるものとする。次に、図4に示す回路を使用して、受け取ったトランザクションのブロック・フラグを計算し、受け取ったトランザクションのトランザクション・スコアボード・レコードに格納する(ステップ184)。このブロック・フラグは、受け取ったトランザクションの実行が順次順序づけ要件によってブロックされるかどうかを示す。受け取ったトランザクションに適用可能な順次順序づけ要件に基づいて、または順次順序付け要件がないことに基づいて、そのトランザクションをトランザクション・バッファのうちの適切なバッファに格納し、格納したトランザクションを指すポインタを対応するトランザクション・スコアボード・レコードに格納する(ステップ186)。最後に、使用可能なメモリ資源についてトランザクション選択値を計算し(ステップ188)、受け取ったトランザクションをただちに処理することができるかどうかを調べる。
【0053】
保留トランザクションがない場合、到着トランザクションがただちにアクティブにされる。このような、高速経路トランザクション処理のための最適化によって、トランザクションのスコアボード値とmembar値の生成と記憶が行われている間に、同時にメモリ・トランザクションを開始することができるようになる。
【0054】
図7を参照すると、実行するトランザクションを選択するために使用する相互接続およびメモリ・コントローラ114内の状態機械の動作を示すフローチャートが図示されている。この状態機械の動作は、相互接続機構内のメモリ資源のいずれかがメモリ・トランザクションを完了させるたびに開始される。完了したトランザクションはトランザクション・スコアボードと該当する保留トランザクション・バッファから削除される(ステップ190)。次に、完了したトランザクションが最も古い保留トランザクションではなかった場合、その完了したトランザクション以外のすべてのトランザクションがトランザクション・スコアボード内で1位置シフトアップされる(ステップ192)。さらに、完了したトランザクションを参照していたインタロック・マップを持つすべてのトランザクションのインタロック・マップが、完了したトランザクションとのインタロックがすべてなくなるようにそれらのインタロック・マップの内容をシフトさせることによって更新される。さらに、それに応じてmembarバッファ144の内容が更新される(ステップ194)。次に、図4に示す回路を使用してすべての保留トランザクションのブロック・フラグが再計算され、対応するトランザクション・スコアボード・レコードに格納される(ステップ196)。最後に使用可能なメモリ資源のトランザクション選択値が計算され(ステップ198)、使用可能なメモリ資源によって保留トランザクションのいずれかを扱うことができないかどうかを調べ、扱うことができる場合には選択したトランザクションの実行を開始する(ステップ200)。
【0055】
トランザクション・スコアボード140とmembarバッファ144をより効率的な集積構造で実装することによって他の最適化も行うことができる。
【0056】
その他の考慮すべき点
相互接続アーキテクチャに応じて、ロード・ミス、ストア・ミス、および上記で定義したその他のメモリ・トランザクションによるキャッシュ・ミス動作を以下の相互接続トランザクションのカテゴリにマップすることができる。
・ 読取り共有トランザクションがキャッシュのロード・ミスによって起こることがある。
・ 読取り所有トランザクションがキャッシュのストア・ミスによって起こることがある。また、キャッシュで行われるアトミック操作が読取り所有相互接続トランザクションにマップされることがある。
・ メモリ・モデルのためにストア操作にマップされるフラッシュ操作により、書込み無効化トランザクションが生成されることがある。
割込みトランザクションはそれ自体の専用相互接続トランザクションにマップすることができるが、メモリ・モデルのためにストア操作にマップされる。
【0057】
データ・プロセッサがメモリ・モデルをTSOに設定した状態で連続RDS(プロセッサのキャッシュにおけるロード・ミス時の読取り共有)トランザクションを行う場合、2つのトランザクションをプログラム順序で行わなければならず、システムにおけるグローバル事象順序づけで互いにバイパスすることはできない。しかし、データ・プロセッサがメモリ・モデルをRMOに設定して連続RDSトランザクションを発行した場合は、2つのトランザクションをプログラム順序とは異なる順序で行うことができる。
【0058】
メモリ・モデル情報を相互接続機構にエクスポートすることによって、相互接続機構はトランザクションのグローバル事象順序をプログラム順序とは異なる順序にすることができる。
【0059】
前述の機構以外に、(上記でmembar命令と呼んでいる)バリヤ命令を強制する他の機構は、相互接続機構に、該当する保留トランザクションの実行が完了するまでmembar命令のデータ・プロセッサ受信に対する肯定応答を遅延させることである。バリヤ命令を強制する他の機構は、データ・プロセッサが後続の命令のために相互接続機構にエクスポートしたメモリ・モデル情報を修正して、バリヤ命令の前のトランザクションに関して順次順序づけを必要とするようにすることである。バリヤ命令を強制する他の機構は、相互接続機構に対する発行済みトランザクションが完了するまで、バリヤ命令によってブロックされる他のトランザクションのエクスポートをプロセッサにブロックさせることである。
【0060】
本発明の相互接続メモリ・トランザクション管理方法はプリフェッチ・トランザクションもサポートする。プリフェッチ・トランザクションは、キャッシュ・ミスによる遅延が生じないように必要よりも早期に命令またはデータをデータ・プロセッサのキャッシュに入れるのに一般的に使用される。プリフェッチは主としてキャッシュを「ウォーミング・アップ」するためのものであるため、メモリ・モデルは一般にはプリフェッチ・トランザクションには適用されない。プリフェッチ・トランザクションの効果は、ソフトウェアの正常な実行には影響を与えない。したがって、プリフェッチ・トランザクションの順序外れ実行を可能にするために、データ・プロセッサは相互接続機構に対してすべてのプリフェッチ・トランザクションについてRMOのメモリ・モデルを示すことができる。
【0061】
同様に、メモリ・モデル値RMOを使用してライトバック・トランザクションを相互接続機構にエクスポートすることができる。順序づけ変更による整合性に関する問題を実施する適切な他の論理回路があれば、ライトバック・トランザクションを、犠牲を引き起こす関連するロード(すなわち読取り)トランザクションおよび前のすべてのトランザクションに関して並列または順序変更して実行することができる。
【0062】
メモリ・モデルの作用範囲内にない他のタイプのトランザクションは割込みトランザクションであり、相互接続機構によって適切に順序変更することができるように、その前にmembar memsync命令またはその他の同等のバリヤ命令を使用してメモリ・モデル値RMOと共に相互接続機構にエクスポートすることができる。
【0063】
本発明について2、3の特定の実施形態を参照しながら説明したが、この説明は本発明を例示するものであって、本発明を限定するものと解釈すべきではない。当業者なら特許請求の範囲によって規定されている本発明の精神および範囲から逸脱することなく様々な修正を考えつくことができるであろう。
【0064】
PSOメモリ・モデルをサポートしないデータ・プロセッサでは、相互接続機構にエクスポートされるメモリ・モデル情報はSSO、TSO、およびRMOメモリ・モデルのうちの1つを示すことになる。SSOおよびRMOメモリ・モデルのみをサポートするデータ・プロセッサでは、各メモリ・トランザクション要求と共に相互接続機構にエクスポートするメモリ・モデル情報は1ビットだけでよい。
【図面の簡単な説明】
【図1】 本発明の実施形態を組み込むコンピュータ・システムを示すブロック図である。
【図2】 本発明の一実施形態によるメモリ・コントローラを示すブロック図である。
【図3】 本発明の一実施形態で使用するトランザクション・スコアボードとメモリ・コントローラ論理回路の一部を示すブロック図である。
【図4】 本発明の一実施形態で使用するトランザクション・スコアボードとメモリ・コントローラ論理回路の他の一部を示すブロック図である。
【図5】 本発明の一実施形態で使用するトランザクション・スコアボードとトランザクション・ディスパッチ論理回路の一部を示すブロック図である。
【図6】 本発明の一実施形態におけるデータ・プロセッサからのメモリ・トランザクション要求の受信に応答したメモリ・コントローラの動作を示すフローチャートである。
【図7】本発明の一実施形態におけるメモリ・トランザクションの完了に応答したメモリ・コントローラの動作を示すフローチャートである。
【符号の説明】
104 プロセッサ
106 相互接続ネットワーク
108 一次メモリ
110 二次メモリ
111 入出力資源
112 ネットワーク・インタフェース
113 遠隔場所メモリ
114 相互接続およびメモリ・コントローラ
120 キャッシュ・メモリ
130 メモリ・コントローラ論理回路
132 バッファ
140 トランザクション・スコアボード
146 トランザクション順序づけテーブル
148 トランザクション・ディスパッチ論理回路
150 インタロック・マップ
152 membarオーバライド論理回路
162 ブロック決定論理回路
170 トランザクション選択論理回路

Claims (14)

  1. メモリ・トランザクションを管理する方法であって、
    データ・プロセッサの外部の装置において、事前定義された複数のメモリ・トランザクション順序づけモデルから選択されたメモリ・トランザクション順序づけモデルが各メモリ・トランザクション要求に関連づけられているメモリ・トランザクション要求をデータ・プロセッサから受け取るステップと、
    メモリ・トランザクション要求に関連づけられたメモリ・トランザクション順序づけモデルに基づき生成されるメモリ・トランザクション順序データであって、保留メモリ・トランザクション・データが保留メモリ・トランザクションのうちのいずれを保留メモリ・トランザクションのうちの他のトランザクションの前に実行することができるかを示すメモリ・トランザクション順序データを含んでいるとともにまだ完了していない要求されたメモリ・トランザクションを含む保留メモリ・トランザクションの表現を含む前記保留メモリ・トランザクション・データを格納するステップと、
    前記保留メモリ・トランザクションのサブセットが前記データ・プロセッサからそれらが受け取られた順序とは異なる順序で実行され、前記保留メモリ・トランザクションを前記メモリ・トランザクション順序データと整合する順序で実行するステップと
    を含む方法。
  2. 前記格納ステップが、最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクション順序づけモデルと少なくとも1つの他の保留メモリ・トランザクションに関連づけられたメモリ・トランザクション順序づけモデルとに基づいて、最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクションを前記少なくとも1つの他の保留メモリ・トランザクションの前に実行することができるかどうかを判断し、前記順序づけ判断の表現を前記メモリ・トランザクション順序づけデータに格納するステップを含むことを特徴とする請求項1に記載の方法。
  3. 第1および第2のメモリ・トランザクションのそれぞれに関連づけられたメモリ・トランザクション・タイプとメモリ・トランザクション順序づけモデルとに基づいて前記第1のメモリ・トランザクションと第2のメモリ・トランザクションの事前定義された組合せについて事前計算されたメモリ・トランザクション順序づけ判断をテーブルに格納するステップを含み、
    前記格納ステップにおける前記順序づけ判断が、少なくとも部分的には、前記最も最近に受け取ったメモリ・トランザクションと前記その他の保留メモリ・トランザクションに関連づけられたメモリ・トランザクション・タイプとメモリ・トランザクション順序づけモデルとに対応する事前計算されたメモリ・トランザクション順序づけ判断を前記テーブルから読み取ることによって生成されることを特徴とする請求項2に記載の方法。
  4. 第1および第2のメモリ・トランザクションのそれぞれに関連づけられたメモリ・トランザクション・タイプとメモリ・トランザクション順序づけモデルとに基づいて前記第1のメモリ・トランザクションと第2のメモリ・トランザクションの可能なすべての組合せについて事前計算されたメモリ・トランザクション順序づけ判断をテーブルに格納するステップを含み、
    前記格納ステップにおける前記順序づけ判断が、少なくとも部分的には、前記最も最近に受け取ったメモリ・トランザクションと前記その他の保留メモリ・トランザクションに関連づけられたメモリ・トランザクション・タイプとメモリ・トランザクション順序づけモデルとに対応する事前計算されたメモリ・トランザクション順序づけ判断を前記テーブルから読み取ることによって生成されることを特徴とする請求項2に記載の方法。
  5. 前記格納ステップが、 最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクション順序づけモデルと複数の他の保留メモリ・トランザクションのそれぞれに関連づけられたメモリ・トランザクション順序づけモデルとに基づいて、最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクションを前記他の保留メモリ・トランザクションのそれぞれの前に実行することができるかどうかを判断し、前記順序づけ判断の表現を前記メモリ・トランザクション順序づけデータに格納するステップを含むことを特徴とする請求項1に記載の方法。
  6. 前記事前定義された複数のメモリ・トランザクション順序づけモデルが、本質的にSSO(強い順次順序)とTSO(トータル・ストア順序)とPSO(部分ストア順序)とRMO(緩いメモリ順次)とから成る1組から選択された1組のメモリ・トランザクション順序づけモデルを含むことを特徴とする請求項1に記載の方法。
  7. 前記メモリ・トランザクション要求のサブセットが割込みトランザクション要求を含んでおりこの割込みトランザクション要求がメモリに対する前のストア操作の後に順序づけなければならない場合には、該割込みトランザクション要求はSSOメモリ・トランザクション順序モデル関連づけられことを特徴とする請求項に記載の方法。
  8. データ・プロセッサによって要求されたメモリ・トランザクションを管理するメモリ・コントローラであって、
    各メモリ・トランザクション要求に事前定義された複数のメモリ・トランザクション順序づけモデルから選択されたメモリ・トランザクション順序づけモデルが関連づけられているメモリ・トランザクション要求をデータ・プロセッサから受け取るポートと、
    前記ポートに結合され、まだ完了していない要求されたメモリ・トランザクションを含む保留メモリ・トランザクションの表現を含む保留メモリ・トランザクション・データを格納する保留メモリ・トランザクション記憶装置であって、前記保留メモリ・トランザクション記憶装置に記憶される前記保留メモリ・トランザクション・データは、メモリ・トランザクション要求に関連づけられたメモリ・トランザクション順序づけモデルに基づき生成されるメモリ・トランザクション順序データであって、保留メモリ・トランザクションのうちのいずれを保留メモリ・トランザクションのうちの他のトランザクションより前に実行することができるかを示すメモリ・トランザクション順序データを含む、保留メモリ・トランザクション記憶装置と、
    前記保留メモリ・トランザクション記憶装置に結合され、前記保留メモリ・トランザクションのサブセットが前記データ・プロセッサから受け取った順序とは異なる順序で実行され、実行の順序が前記メモリ・トランザクション順序データと整合するように前記保留メモリ・トランザクションの実行の前記順序を制御するトランザクション・ディスパッチ論理回路と
    を備えるメモリ・コントローラ。
  9. 最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクション順序づけモデルと少なくとも1つの他の保留メモリ・トランザクションに関連づけられたメモリ・トランザクション順序づけモデルとに基づいて、最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクションを前記少なくとも1つの他の保留メモリ・トランザクションの前に実行することができるかどうかを判断し、前記順序づけ判断の表現を前記メモリ・トランザクション順序づけデータとして前記保留メモリ・トランザクション記憶装置に格納するインタロック判断論理回路を備える請求項8に記載のメモリ・コントローラ。
  10. 前記インタロック判断論理回路が、第1および第2のメモリ・トランザクションのそれぞれに関連づけられたメモリ・トランザクション・タイプとメモリ・トランザクション順序づけモデルとに基づく前記第1のメモリ・トランザクションと前記第2のメモリ・トランザクションの事前定義された組合せについて事前計算されたメモリ・トランザクション順序づけ判断の記憶テーブルに結合され、
    前記インタロック判断論理回路が、前記最も最近に受け取ったメモリ・トランザクションと前記他の保留メモリ・トランザクションとのそれぞれのメモリ・トランザクションに関連づけられたメモリ・トランザクション・タイプとメモリ・トランザクション順序づけモデルとに対応する事前計算されたメモリ・トランザクション順序づけ判断を前記テーブルから読み取る論理回路を含むことを特徴とする請求項9に記載のメモリ・コントローラ。
  11. 前記インタロック判断論理回路が、第1および第2のメモリ・トランザクションのそれぞれに関連づけられたメモリ・トランザクション・タイプとメモリ・トランザクション順序づけモデルに基づく前記第1のメモリ・トランザクションと第2のメモリ・トランザクションの可能なすべての組合せについて事前計算されたメモリ・トランザクション順序づけ判断の記憶テーブルに結合され、
    前記インタロック判断論理回路が、前記最も最近に受け取ったメモリ・トランザクションと前記他の保留メモリ・トランザクションとのそれぞれのメモリ・トランザクションに関連づけられたメモリ・トランザクション・タイプとメモリ・トランザクション順序づけモデルとに対応する事前計算されたメモリ・トランザクション順序づけ判断を前記テーブルから読み取る論理回路を含むことを特徴とする請求項9に記載のメモリ・コントローラ。
  12. 前記インタロック判断論理回路が、最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクション順序づけモデルと複数のその他の保留メモリ・トランザクションのそれぞれに関連づけられたメモリ・トランザクション順序づけモデルとに基づいて、最も最近に受け取ったメモリ・トランザクション要求に関連づけられたメモリ・トランザクションを前記その他の保留メモリ・トランザクションのそれぞれの前に実行することができるかどうかを判断し、前記順序づけ判断の表現を前記メモリ・トランザクション順序づけデータとして前記保留メモリ・トランザクション記憶装置に記憶することを特徴とする請求項9に記載のメモリ・コントローラ。
  13. 前記事前定義された複数のメモリ・トランザクション順序づけモデルが、本質的にSSO(強い順次順序)とTSO(トータル・ストア・順序)とPSO(部分ストア順序)とRMO(緩いメモリ順序)とから成る1組のうちから選択された1組のメモリ・トランザクション順序づけモデルを含むことを特徴とする請求項8に記載のメモリ・コントローラ。
  14. 前記メモリ・トランザクション要求のサブセットが割込みトランザクション要求を含んでおりこの割込みトランザクション要求がメモリに対する前のストア操作の後に順序づけなければならない場合には、該割込みトランザクション要求はSSOメモリ・トランザクション順序モデル関連づけられことを特徴とする請求項13に記載のメモリ・コントローラ。
JP18728497A 1996-07-01 1997-06-30 複数のメモリ・モデルを使用してメモリ・トランザクションの実行を並列化するシステムおよび装置 Expired - Lifetime JP3807460B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/671,305 US5893165A (en) 1996-07-01 1996-07-01 System and method for parallel execution of memory transactions using multiple memory models, including SSO, TSO, PSO and RMO
US08/671305 1996-07-01

Publications (2)

Publication Number Publication Date
JPH113268A JPH113268A (ja) 1999-01-06
JP3807460B2 true JP3807460B2 (ja) 2006-08-09

Family

ID=24693953

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18728497A Expired - Lifetime JP3807460B2 (ja) 1996-07-01 1997-06-30 複数のメモリ・モデルを使用してメモリ・トランザクションの実行を並列化するシステムおよび装置

Country Status (4)

Country Link
US (1) US5893165A (ja)
EP (1) EP0817091B1 (ja)
JP (1) JP3807460B2 (ja)
DE (1) DE69715328T2 (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
DE19712799A1 (de) 1997-03-26 1998-10-01 Siemens Nixdorf Inf Syst Abhängigkeitssteuerung für überlappende Speicherzugriffe
US6260131B1 (en) * 1997-11-18 2001-07-10 Intrinsity, Inc. Method and apparatus for TLB memory ordering
US6370632B1 (en) * 1997-11-18 2002-04-09 Intrinsity, Inc. Method and apparatus that enforces a regional memory model in hierarchical memory systems
JP2000020618A (ja) * 1998-06-30 2000-01-21 Iq Financial Systems Japan Kk 統合金融リスク管理装置および金融取引モデル化装置
US20140325175A1 (en) * 2013-04-29 2014-10-30 Pact Xpp Technologies Ag Pipeline configuration protocol and configuration unit communication
JP2003505753A (ja) 1999-06-10 2003-02-12 ペーアーツェーテー インフォルマツィオーンステヒノロギー ゲゼルシャフト ミット ベシュレンクテル ハフツング セル構造におけるシーケンス分割方法
US6557048B1 (en) * 1999-11-01 2003-04-29 Advanced Micro Devices, Inc. Computer system implementing a system and method for ordering input/output (IO) memory operations within a coherent portion thereof
KR100390853B1 (ko) * 2000-06-07 2003-07-10 차상균 주 메모리 트랜잭션 처리 시스템에서 병렬적 회복 연산을 위한 디퍼런셜 로깅 방법 및 장치
US6546453B1 (en) * 2000-08-31 2003-04-08 Compaq Information Technologies Group, L.P. Proprammable DRAM address mapping mechanism
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US6721813B2 (en) * 2001-01-30 2004-04-13 Advanced Micro Devices, Inc. Computer system implementing a system and method for tracking the progress of posted write transactions
US9250908B2 (en) 2001-03-05 2016-02-02 Pact Xpp Technologies Ag Multi-processor bus and cache interconnection system
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US9411532B2 (en) 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
US10031733B2 (en) 2001-06-20 2018-07-24 Scientia Sol Mentis Ag Method for processing data
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
EP1537486A1 (de) 2002-09-06 2005-06-08 PACT XPP Technologies AG Rekonfigurierbare sequenzerstruktur
US7103597B2 (en) * 2002-10-03 2006-09-05 Mcgoveran David O Adaptive transaction manager for complex transactions and business process
US7200689B2 (en) * 2003-07-31 2007-04-03 International Business Machines Corporation Cacheable DMA
JP4658064B2 (ja) * 2003-10-22 2011-03-23 インテル コーポレイション 相互接続ネットワークでの効率的な順序保存用の方法及び装置
US7281240B1 (en) * 2003-11-14 2007-10-09 Sun Microsystems, Inc. Mechanism for lossless, lock-free buffer switching in an arbitrary-context tracing framework
US7657667B2 (en) * 2004-03-25 2010-02-02 International Business Machines Corporation Method to provide cache management commands for a DMA controller
US7484045B2 (en) 2004-03-30 2009-01-27 Intel Corporation Store performance in strongly-ordered microprocessor architecture
US8219379B2 (en) * 2004-11-29 2012-07-10 Arm Limited System, method and computer program product for testing software
US9026744B2 (en) * 2005-03-23 2015-05-05 Qualcomm Incorporated Enforcing strongly-ordered requests in a weakly-ordered processing
JP4856413B2 (ja) * 2005-10-04 2012-01-18 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法
US7917676B2 (en) 2006-03-10 2011-03-29 Qualcomm, Incorporated Efficient execution of memory barrier bus commands with order constrained memory accesses
US7409516B2 (en) * 2006-03-30 2008-08-05 Intel Corporation Pending request scoreboard for out-of-order memory scheduler
US7783817B2 (en) * 2006-08-31 2010-08-24 Qualcomm Incorporated Method and apparatus for conditional broadcast of barrier operations
US7984202B2 (en) * 2007-06-01 2011-07-19 Qualcomm Incorporated Device directed memory barriers
WO2008155827A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited キャッシュ制御装置及び制御方法
US8612950B2 (en) * 2008-06-19 2013-12-17 Intel Corporation Dynamic optimization for removal of strong atomicity barriers
US8392891B2 (en) * 2008-06-26 2013-03-05 Microsoft Corporation Technique for finding relaxed memory model vulnerabilities
GB2474446A (en) * 2009-10-13 2011-04-20 Advanced Risc Mach Ltd Barrier requests to maintain transaction order in an interconnect with multiple paths
US8832403B2 (en) * 2009-11-13 2014-09-09 International Business Machines Corporation Generation-based memory synchronization in a multiprocessor system with weakly consistent memory accesses
JP2013061795A (ja) * 2011-09-13 2013-04-04 Toshiba Corp 記憶装置、コントローラ、およびリードコマンド実行方法
US10140149B1 (en) * 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4126893A (en) * 1977-02-17 1978-11-21 Xerox Corporation Interrupt request controller for data processing system
US4228503A (en) * 1978-10-02 1980-10-14 Sperry Corporation Multiplexed directory for dedicated cache memory system
JPH065524B2 (ja) * 1987-11-18 1994-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーション 記憶装置管理方法
JP3255908B2 (ja) * 1988-06-30 2002-02-12 エルジー・セミコン・カンパニー・リミテッド メモリー制御ユニット
EP0380842A3 (en) * 1989-02-03 1991-06-12 Digital Equipment Corporation Method and apparatus for interfacing a system control unit for a multiprocessor system with the central processing units
US5036459A (en) * 1989-03-09 1991-07-30 U.S. Philips Corporation Multi-processor computer system with distributed memory and an interprocessor communication mechanism, and method for operating such mechanism
EP0468831B1 (en) * 1990-06-29 1997-10-15 Digital Equipment Corporation Bus protocol for write-back cache processor
JPH04318654A (ja) * 1991-02-13 1992-11-10 Hewlett Packard Co <Hp> マイクロプロセッサへの割り込みのリダイレクションシステム
JP2703417B2 (ja) * 1991-04-05 1998-01-26 富士通株式会社 受信バッファ
AU2270892A (en) * 1991-06-26 1993-01-25 Ast Research, Inc. Automatic distribution of interrupts controller for a multiple processor computer system
DE69230428T2 (de) * 1991-09-27 2000-08-03 Sun Microsystems Inc Verklemmungserkennung und Maskierung enthaltende Busarbitrierungsarchitektur
US5319753A (en) * 1992-09-29 1994-06-07 Zilog, Inc. Queued interrupt mechanism with supplementary command/status/message information
US5434993A (en) * 1992-11-09 1995-07-18 Sun Microsystems, Inc. Methods and apparatus for creating a pending write-back controller for a cache controller on a packet switched memory bus employing dual directories
JPH07105031A (ja) * 1993-09-20 1995-04-21 Internatl Business Mach Corp <Ibm> 多重プロセッサ・コンピュータ・システム内で割込み情報を伝えるための方法および装置
US5655100A (en) * 1995-03-31 1997-08-05 Sun Microsystems, Inc. Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system
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

Also Published As

Publication number Publication date
EP0817091A2 (en) 1998-01-07
EP0817091B1 (en) 2002-09-11
US5893165A (en) 1999-04-06
EP0817091A3 (en) 1998-09-09
DE69715328T2 (de) 2003-04-17
JPH113268A (ja) 1999-01-06
DE69715328D1 (de) 2002-10-17

Similar Documents

Publication Publication Date Title
JP3807460B2 (ja) 複数のメモリ・モデルを使用してメモリ・トランザクションの実行を並列化するシステムおよび装置
US6895482B1 (en) Reordering and flushing commands in a computer memory subsystem
EP1008053B1 (en) Controlling memory access ordering in a multi-processing system
TW409227B (en) Method and apparatus for selecting thread switch events in a multithreaded processor
EP0895163B1 (en) A data processor having a cache memory
US6336154B1 (en) Method of operating a computer system by identifying source code computational elements in main memory
US6487640B1 (en) Memory access request reordering to reduce memory access latency
US8984261B2 (en) Store data forwarding with no memory model restrictions
US5446850A (en) Cross-cache-line compounding algorithm for scism processors
EP1594061B1 (en) Methods and systems for grouping and managing memory instructions
JP2002140289A (ja) 調整可能ワード・サイズ転送とアドレス配列/増加を備えたマイクロコントローラdmaオペレーション
KR20210032504A (ko) 액세스 효율에 기초한 메모리 요청의 순서화
CA2283044A1 (en) An apparatus for software initiated prefetch and method therefor
US6427189B1 (en) Multiple issue algorithm with over subscription avoidance feature to get high bandwidth through cache pipeline
US6094711A (en) Apparatus and method for reducing data bus pin count of an interface while substantially maintaining performance
WO2021091649A1 (en) Super-thread processor
US6557078B1 (en) Cache chain structure to implement high bandwidth low latency cache memory subsystem
US6507892B1 (en) L1 cache memory
US20030105929A1 (en) Cache status data structure
US20030196072A1 (en) Digital signal processor architecture for high computation speed
JP2000515276A (ja) スーパースカラマイクロプロセッサのための非ブロッキングロードを実現するロード/ストアユニットおよびロード/ストアバッファから非ブロッキング的にロードを選択する方法
US8214597B2 (en) Cache tentative read buffer
CN100430889C (zh) 在数字信号处理器系统中的存储器访问方法
KR100190377B1 (ko) 마이크로 프로세서의 버스 인터페이스 유닛
JP4680340B2 (ja) プロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040402

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060328

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060411

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060509

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100526

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110526

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110526

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120526

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130526

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130526

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term