JP4180569B2 - 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法 - Google Patents

記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法 Download PDF

Info

Publication number
JP4180569B2
JP4180569B2 JP2004567505A JP2004567505A JP4180569B2 JP 4180569 B2 JP4180569 B2 JP 4180569B2 JP 2004567505 A JP2004567505 A JP 2004567505A JP 2004567505 A JP2004567505 A JP 2004567505A JP 4180569 B2 JP4180569 B2 JP 4180569B2
Authority
JP
Japan
Prior art keywords
cache
thread
data
cache line
unit
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 - Fee Related
Application number
JP2004567505A
Other languages
English (en)
Other versions
JPWO2004068361A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2004068361A1 publication Critical patent/JPWO2004068361A1/ja
Application granted granted Critical
Publication of JP4180569B2 publication Critical patent/JP4180569B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies

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)

Description

この発明は、同時に実行される複数のスレッドから発行されるメモリアクセス要求の処理をおこなう記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法に関し、特に、スレッド間での共有データの読み出しおよび書き込みの実行順序の一貫性を保証することができる記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法に関するものである。
現在主流となっている高性能プロセッサでは、高い並列度を維持して命令を実行するためにアウト・オブ・オーダ処理を採用している。アウト・オブ・オーダ処理とは、キャッシュ・ミスなどの理由で、ある命令のデータの読み出しが滞っている間に後続の命令のデータの読み出しを先に実行し、その後で滞っていた命令のデータの読み出しを実行する処理である。
しかし、このような処理をおこなうと、後から実行された先行するデータの読み出しが最新のデータを取り出し、先に実行された後続するデータの読み出しが古いデータを読み出す場合が発生し、TSO(Total Store Order)に違反する場合が出てくる。ここで、TSOとは、データの読み出し結果がデータの書き込み順序を正しく反映することであり、実行順序の一貫性と呼ばれる。
第9図は、マルチプロセッサにおけるTSO違反およびその監視原理を説明するための説明図である。同図(a)は、TSO違反が発生する可能性のある応用例を示し、同図(b)は、TSO違反の例を示し、同図(c)は、TSO違反の監視原理を示している。
同図(a)は、計測器が測定したデータをCPU−βが共有記憶域に書き込み、CPU−αが共有記憶域に書き込まれたデータを読み出して解析し、解析結果を出力する例を示している。この例では、CPU−βは、計測データを共有記憶域Bに書き込み(ST−B:Bのデータはbからb'に変わる)、計測データを書き終わったことを共有記憶域Aに書き込む(ST−A:Aのデータはaからa'に変わる)。一方、CPU−αは、CPU−βが計測データを書き終わったことをAを読み出して確認し(FC−A:A=a')、Bに書き込まれた計測データを読み出し(FC−B:B=b')、解析する。
ここで、同図(b)に示すように、CPU−αのキャッシュにはAは無くBがあり、CPU−βのキャッシュにはBは無くAがあるとする。そして、CPU−αがFC−Aを実行すると、キャッシュミスが発生し、FC−AはAを含むキャッシュラインがCPU−αに届くまで実行が待たされ、キャッシュヒットしているFC−Bが実行される。この時、FC−Bは、CPU−βがBを更新する前のデータを読み出す(CPU−α:B=b)。
そして、この間に、CPU−βがST−BおよびST−Aを実行するために、BおよびAを含むキャッシュラインを排他型として獲得し、CPU−αのBを含むキャッシュラインの無効化またはデータの吐き出しをおこなう(MO/BI:Move Out/Block Invalidate)。そして、Bを含むキャッシュラインがCPU−βに届くと、CPU−βは、BおよびAへのデータ書き込みを完了し(CPU−β:B=b'、A=a')、その後、CPU−αがAを含むキャッシュラインを受け取り(MI:Move In)、FC−Aを完了する(CPU−α:A=a')。こうして、CPU−αは、A=a'であるため、計測データが書き込まれたと判断し、古いデータ(B=b)を使用して誤動作することとなる。
そこで、従来は、先に実行された後続のフェッチデータBを含むキャッシュラインの無効化または吐き出しと、遅れて実行されたフェッチデータAを含むキャッシュラインの到着を監視することによってTSO違反の可能性を検出し、TSO違反の可能性を検出した場合には、順序性が保証されているフェッチ命令の次の命令から再実行することによって、TSO違反を防いでいた。
具体的には、命令処理装置からのフェッチ要求を記憶制御装置のフェッチ・ポートで受け取り、第9図(c)に示すように、各フェッチ・ポートは、フェッチ要求の対象となったアドレスとともに、PSTV(Post Status Valid)フラグ、RIM(Re-Ifetch by Move out)フラグおよびRIF(Re-Ifetch by move in Fetch)フラグを保持する。また、命令処理装置からのフェッチ要求に対してフェッチデータをまだ返していないフェッチ・ポートの中で最も古く割り当てられたフェッチ・ポートを指すFP−TOQ(Fetch Port Top of Queue)を設ける。
そして、CPU−αのFC−Bがフェッチをおこなった時点で、FC−Bの要求を受け取っていたフェッチ・ポートのPSTVフラグをセットする。なお、第9図(c)において、斜線部は、フラグがセットされた状態を示している。その後、CPU−βのST−BによってFC−Bが使用したキャッシュラインの無効化または吐き出しが発生する。この時、FC−Bの要求が入ったフェッチ・ポートのPSTVがセットされており、かつそのフェッチ・ポートが保持するアドレスの物理アドレス部分とキャッシュラインの無効化または吐き出し要求を受けたアドレスの物理アドレスが一致するため、フェッチデータを送出したフェッチ・ポートのキャッシュラインが持ち出されたことを検出することができる。
そして、フェッチデータを送出したフェッチ・ポートのキャッシュラインが持ち出されたことを検出すると、FC−Bの要求を保持するフェッチ・ポートからFP−TOQが指すフェッチ・ポートまでの全てのフェッチ・ポートに対してRIMフラグをセットする。
その後、CPU−βがST−B、ST−Aを実行し、CPU−αがFC−Aを実行するためにAを含むキャッシュラインをCPU−βから受け取ると、CPU−αでは、データを外部から受け取ったことを検出し、全ての有効なフェッチ・ポートに対してRIFフラグをセットする。そして、FC−Aの成功を命令処理装置に通知する場合に、FC−Aの要求を保持するフェッチ・ポートのRIMフラグおよびRIFフラグを調べると、両方のフラグがセットされているため、FC−Aの次の命令からの再実行を要求する。
すなわち、RIMフラグおよびRIFフラグの両方がセットされていることは、後続のフェッチ要求Bに対して送出してしまったデータbを他の命令処理装置がb'に書き換え、先行するフェッチ要求Aが書き換え後のデータa'を受け取った可能性を示している。
このように、マルチプロセッサ環境では、各フェッチ・ポートにPSTVフラグ、RIMフラグおよびRIFフラグを設け、プロセッサ間でのキャッシュラインの受け渡しを監視することによって、プロセッサ間におけるTSO違反を防ぐことができる。このような、マルチプロセッサにおけるTSO保証技術は、たとえば、米国特許第5,699,538号明細書に開示されている。また、キャッシュメモリに関する技術としては、特開平10−116192号公報、特開平10−232839号公報、特開2000−259498号公報、特開2001−195301号公報などに開示されている。
しかしながら、マルチスレッド方式を採用するコンピュータシステムでは、プロセッサ間でのTSO保証だけでは不十分であるという問題点がある。ここで、マルチスレッド方式とは、一つのプロセッサが複数のスレッド(命令列)を同時に実行する方式である。すなわち、マルチスレッド方式を採用するコンピュータシステムでは、一次キャッシュを異なるスレッド間で共有することになり、プロセッサ間でのキャッシュラインの受け渡しだけではなく、同一キャッシュのスレッド間での受け渡しを監視する必要がある。
この発明は、上述した従来技術による問題点を解消するためになされたものであり、スレッド間での共有データの読み出しおよび書き込みの実行順序の一貫性を保証することができる記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法を提供することを目的としている。
上述した課題を解決し、目的を達成するため、本発明は、同時に実行される複数のスレッドで共有され、該スレッドから発行されるメモリアクセス要求の処理をおこなう記憶制御装置であって、複数の命令処理装置間で共有されるデータに対する該複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証手段と、前記メモリアクセス要求で指定されたアドレスのデータを記憶している場合に該記憶しているデータを登録したスレッドと該メモリアクセス要求を発行したスレッドが同一であるか否かを判定するスレッド判定手段と、前記スレッド判定手段の判定結果に基づいて前記一貫性保証手段を動作させる一貫性保証動作起動手段と、を備えたことを特徴とする。
また、本発明は、同時に実行される複数のスレッドから発行されるメモリアクセス要求の処理をおこなう記憶装置制御方法であって、前記メモリアクセス要求で指定されたアドレスのデータを記憶している場合に該記憶しているデータを登録したスレッドと該メモリアクセス要求を発行したスレッドが同一であるか否かを判定するスレッド判定工程と、前記スレッド判定工程の判定結果に基づいて、複数の命令処理装置間で共有されるデータに対する該複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証機構を動作させる一貫性保証動作起動工程と、を含んだことを特徴とする。
かかる発明によれば、メモリアクセス要求で指定されたアドレスのデータを記憶している場合に記憶しているデータを登録したスレッドとメモリアクセス要求を発行したスレッドが同一であるか否かを判定し、判定結果に基づいて、複数の命令処理装置間で共有されるデータに対する複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証機構を動作させることとしたので、スレッド間での共有データの読み出しおよび書き込みの実行順序の一貫性を保証することができる。
また、本発明は、同時に実行される複数のスレッドで共有され、該スレッドから発行されるメモリアクセス要求の処理をおこなうデータキャッシュ制御装置であって、複数の命令処理装置間で共有されるデータに対する該複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証手段と、前記メモリアクセス要求で指定されたアドレスのデータを含むキャッシュラインを記憶している場合に該記憶しているキャッシュラインを登録したスレッドと該メモリアクセス要求を発行したスレッドが同一であるか否かを判定するスレッド判定手段と、前記スレッド判定手段が同一でないと判定した場合に、前記一貫性保証手段を動作させる一貫性保証動作起動手段と、を備えたことを特徴とする。
また、本発明は、同時に実行される複数のスレッドから発行されるメモリアクセス要求の処理をおこなうデータキャッシュ制御方法であって、前記メモリアクセス要求で指定されたアドレスのデータを含むキャッシュラインを記憶している場合に該記憶しているキャッシュラインを登録したスレッドと該メモリアクセス要求を発行したスレッドが同一であるか否かを判定するスレッド判定工程と、前記スレッド判定工程が同一でないと判定した場合に、複数の命令処理装置間で共有されるデータに対する該複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証機構を動作させる一貫性保証動作起動工程と、を含んだことを特徴とする。
かかる発明によれば、メモリアクセス要求で指定されたアドレスのデータを含むキャッシュラインを記憶している場合に記憶しているキャッシュラインを登録したスレッドとメモリアクセス要求を発行したスレッドが同一であるか否かを判定し、同一でないと判定した場合に、複数の命令処理装置間で共有されるデータに対する複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証機構を動作させることとしたので、スレッド間での共有データの読み出しおよび書き込みの実行順序の一貫性を保証することができる。
また、本発明は、複数のスレッドを同時に実行する命令処理装置と一次データキャッシュ装置との組を複数有し、該複数の組の一次データキャッシュ装置で共有される二次キャッシュ装置を有する中央処理装置であって、前記複数の組のそれぞれの一次データキャッシュ装置は、他の組の一次データキャッシュ装置と共有するキャッシュラインに対する複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証手段と、前記命令処理装置からのメモリアクセス要求と物理アドレスが一致するキャッシュラインが異なるスレッドによって登録されている場合に前記二次キャッシュ装置に対して該キャッシュラインの取り込み要求をおこなう取り込み要求手段と、前記二次キャッシュ装置からの要求に基づく前記キャッシュラインの無効化または吐き出しを実行して前記一貫性保証手段を動作させる吐き出し実行手段と、を備え、前記二次キャッシュ装置は、前記キャッシュラインの取り込み要求を受けたキャッシュラインが他のスレッドにより前記一次データキャッシュ装置に登録されている場合には前記キャッシュラインの無効化または吐き出しの実行を該一次データキャッシュ装置に要求する吐き出し要求手段を備えたことを特徴とする。
また、本発明は、複数のスレッドを同時に実行する命令処理装置と一次データキャッシュ装置の組を複数有し、該複数の組の一次データキャッシュ装置で共有される二次キャッシュ装置を有する中央処理装置で用いられるキャッシュ制御方法あって、前記一次データキャッシュ装置が、前記命令処理装置からのメモリアクセス要求と物理アドレスが一致するキャッシュラインが異なるスレッドによって登録されている場合に前記二次キャッシュ装置に対して該キャッシュラインの取り込み要求をおこなう取り込み要求工程と、前記二次キャッシュ装置が、前記キャッシュラインの取り込み要求を受けたキャッシュラインが他のスレッドにより前記一次データキャッシュ装置に登録されている場合には前記キャッシュラインの無効化または吐き出しの実行を該一次データキャッシュ装置に要求する吐き出し要求工程と、前記一次データキャッシュ装置が、前記二次キャッシュ装置からの要求に基づき前記キャッシュラインの無効化または吐き出しを実行することによって、他の組の一次データキャッシュ装置と共有するキャッシュラインに対する複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証機構を動作させる吐き出し実行工程と、を含んだことを特徴とする。
かかる発明によれば、一次データキャッシュ装置が、命令処理装置からのメモリアクセス要求と物理アドレスが一致するキャッシュラインが異なるスレッドによって登録されている場合に二次キャッシュ装置に対してキャッシュラインの取り込み要求をおこない、二次キャッシュ装置が、キャッシュラインの取り込み要求を受けたキャッシュラインが他のスレッドにより一次データキャッシュ装置に登録されている場合にはキャッシュラインの無効化または吐き出しの実行を一次データキャッシュ装置に要求し、一次データキャッシュ装置が、二次キャッシュ装置からの要求に基づきキャッシュラインの無効化または吐き出しを実行することによって、他の組の一次データキャッシュ装置と共有するキャッシュラインに対する複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証機構を動作させることとしたので、スレッド間での共有データの読み出しおよび書き込みの実行順序の一貫性を保証することができる。
本発明によれば、メモリアクセス要求で指定されたアドレスのデータを記憶している場合に記憶しているデータを登録したスレッドとメモリアクセス要求を発行したスレッドが同一であるか否かを判定し、判定結果に基づいて、複数の命令処理装置間で共有されるデータに対する該複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証機構を動作させるよう構成したので、スレッド間での共有データの読み出しおよび書き込みの実行順序の一貫性を保証することができるという効果を奏する。
また、本発明によれば、メモリアクセス要求で指定されたアドレスのデータを含むキャッシュラインを記憶している場合に記憶しているキャッシュラインを登録したスレッドとメモリアクセス要求を発行したスレッドが同一であるか否かを判定し、同一でないと判定した場合に、複数の命令処理装置間で共有されるデータに対する複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証機構を動作させるよう構成したので、スレッド間での共有データの読み出しおよび書き込みの実行順序の一貫性を保証することができるという効果を奏する。
また、本発明によれば、一次データキャッシュ装置が、命令処理装置からのメモリアクセス要求と物理アドレスが一致するキャッシュラインが異なるスレッドによって登録されている場合に二次キャッシュ装置に対してキャッシュラインの取り込み要求をおこない、二次キャッシュ装置が、キャッシュラインの取り込み要求を受けたキャッシュラインが他のスレッドにより一次データキャッシュ装置に登録されている場合にはキャッシュラインの無効化または吐き出しの実行を一次データキャッシュ装置に要求し、一次データキャッシュ装置が、二次キャッシュ装置からの要求に基づきキャッシュラインの無効化または吐き出しを実行することによって、他の組の一次データキャッシュ装置と共有するキャッシュラインに対する複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証機構を動作させるよう構成したので、スレッド間での共有データの読み出しおよび書き込みの実行順序の一貫性を保証することができるという効果を奏する。
以下、添付図面を参照して、この発明に係る記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法の好適な実施の形態を詳細に説明する。なお、異なるプロセッサで実行されるスレッド間のTSO保証は、従来どおりキャッシュラインの無効化・吐き出しによるRIMフラグのセットとデータの到着によるRIFフラグのセットによりおこなう。したがって、ここでは、同一プロセッサで同時に実行されるスレッド間のTSO保証について説明する。
実施の形態1.
まず、本実施の形態1に係るCPUの構成について説明する。第1図は、本実施の形態1に係るCPUの構成を示す機能ブロック図である。同図に示すように、このCPU10は、プロセッサコア100および200と、二次キャッシュユニット300とを有し、二次キャッシュユニット300は、プロセッサコア100および200によって共有される。
なお、ここでは説明の便宜上、CPU10が2個のプロセッサコアを有する場合を示したが、CPU10は、プロセッサコアを1個だけ有する場合、あるいは、より多くのプロセッサコアを有する場合もある。また、プロセッサコア100および200はいずれも同様の構成を有するので、ここではプロセッサコア100を例にとって説明する。
プロセッサコア100は、命令ユニット110と、演算ユニット120と、一次命令キャッシュユニット130と、一次データキャッシュユニット140とを有する。
命令ユニット110は、命令を解読して実行する処理部であり、MT(Multi Thread)制御部が二つのスレッド「スレッド0」および「スレッド1」を制御して、同時に実行する。
演算ユニット120は、汎用レジスタ、浮動小数点レジスタ、固定小数点演算器、浮動小数点演算器などを有し、固定小数点演算および浮動小数点演算を実行する処理部である。
一次命令キャッシュユニット130および一次データキャッシュユニット140は、主記憶装置に記憶された命令およびデータをそれぞれ高速にアクセスするために主記憶装置の一部を記憶した記憶部である。
二次キャッシュユニット300は、一次命令キャッシュユニット130および一次データキャッシュユニット140の容量不足を補うために、より多くの主記憶装置の命令およびデータを記憶した記憶部であり、システムコントローラを介して主記憶装置に接続される。
次に、一次データキャッシュユニット140の詳細について説明する。この一次データキャッシュユニット140は、キャッシュメモリ141とキャッシュ制御部142とを有し、キャッシュメモリ141は、データを記憶する記憶部である。
キャッシュ制御部142は、キャッシュメモリ141に記憶するデータを管理する処理部であり、TLB(Translation Look-aside Buffer)143と、TAG部144と、TAG−MATCH検出部145と、MIB(Move In Buffer)146と、MO/BI処理部147と、フェッチ・ポート148とを有する。
TLB143は、仮想アドレス(VA:Virtual Address)から物理アドレス(PA:Physical Address)へのアドレス変換を高速におこなう処理部であり、命令ユニット110から受け取った仮想アドレスを物理アドレスに変換してTAG−MATCH検出部145に出力する。
TAG部144は、キャッシュメモリ141上に登録されているキャッシュラインを管理する処理部であり、命令ユニット110から受け取った仮想アドレスに対応するキャッシュメモリ141の場所に登録されているキャッシュラインの物理アドレス、スレッド識別子(ID)などをTAG−MATCH検出部145に出力する。ここで、スレッド識別子は、キャッシュラインが「スレッド0」と「スレッド1」のいずれのスレッドで使用されているかを識別するための識別子である。
第2図は、TAG部144が、キャッシュメモリ141に登録されているキャッシュラインを管理するための情報であるキャッシュタグの一例を示す図である。同図に示すように、キャッシュタグには、キャッシュラインが有効(Valid)か否かを示すVビット、キャッシュラインの共有型および排他型をそれぞれ示すSビットおよびEビット、キャッシュラインを使用しているスレッドを示すID、キャッシュラインの物理アドレスを示すPAが含まれる。なお、キャッシュラインが共有型である場合には、そのキャッシュラインは同時期に他のプロセッサで保持されている可能性があり、キャッシュラインが排他型である場合には、そのキャッシュラインは同時期に他のプロセッサで保持されていることはない。
TAG−MATCH検出部145は、TLB143から受け取った物理アドレスおよび命令ユニット110から受け取ったスレッド識別子と、TAG部144から受け取った物理アドレスおよびスレッド識別子とを比較する処理部である。このTAG−MATCH検出部145は、物理アドレスおよびスレッド識別子が一致してVビットがセットされている場合には、キャッシュメモリ141に登録されているキャッシュラインを使用し、他の場合には、MIB146に対して物理アドレスおよびスレッド識別子を指定して、命令ユニット110が要求するキャッシュラインを二次キャッシュユニット300から取ってくるように指示する。
このTAG−MATCH検出部145が、TLB143から受け取った物理アドレスとTAG部144から受け取った物理アドレスとを比較するだけでなく、命令ユニット110から受け取ったスレッド識別子とTAG部144から受け取ったスレッド識別子とを比較することによって、命令ユニット110が要求するキャッシュラインがキャッシュメモリ141にあるか否かだけでなく、キャッシュラインを要求したスレッドとキャッシュメモリ141にあるキャッシュラインを登録したスレッドとが同一のスレッドであるか否かを判定し、判定結果に基づいて異なる処理をおこなうことができる。
MIB146は、二次キャッシュユニット300に対して物理アドレスを指定してキャッシュラインの取り込み要求(MI要求)をおこなう処理部である。また、このMIB146によって取り込まれたキャッシュラインに対応して、TAG部144のキャッシュタグおよびがキャッシュメモリ141の内容が更新される。
MO/BI処理部147は、二次キャッシュユニット300からの要求に基づいてキャッシュメモリ141の特定のキャッシュラインの無効化または吐き出しをおこなう処理部である。このMO/BI処理部147が特定のキャッシュラインを無効化または吐き出すことによってフェッチ・ポート148のRIMフラグをセットすることができ、プロセッサ間でのTSO保証機構をスレッド間のTSO保証機構として利用することができる。
フェッチ・ポート148は、命令ユニット110からの各アクセス要求に対して、アクセス先のアドレス、PSTVフラグ、RIMフラグ、RIFフラグなどを記憶する記憶部である。
次に、第1図に示したキャッシュ制御部142の処理手順について説明する。第3図は、第1図に示したキャッシュ制御部142の処理手順を示すフローチャートである。同図に示すように、このキャッシュ制御部142は、TLB143が仮想アドレスを物理アドレスに変換し、TAG部144がキャッシュタグを用いて仮想アドレスから物理アドレス、スレッド識別子およびVビットを取得する(ステップS301)。
そして、TAG−MATCH検出部145がTLB143から入力した物理アドレスとTAG部144から入力した物理アドレスとを比較し、命令ユニット110が要求するキャッシュラインがキャッシュメモリ141にあるか否かを調べる(ステップS302)。その結果、両方の物理アドレスが一致した場合には、命令ユニット110から入力したスレッド識別子とTAG部144から入力したスレッド識別子とを比較し、キャッシュメモリ141上のキャッシュラインを同一のスレッドが使用しているか否かを調べる(ステップS303)。
そして、スレッド識別子が両方とも一致した場合には、さらに、Vビットがセットされているか否かを調べる(ステップS304)。その結果、Vビットがセットされている場合には、命令ユニット110が要求するキャッシュラインがキャッシュメモリ141にあり、スレッドが同一でキャッシュラインが有効であるので、キャッシュ制御部142は、データ部のデータを使用する(ステップS305)。
一方、物理アドレスが一致しない場合、スレッド識別子が一致しない場合またはVビットがセットされていない場合には、命令ユニット110で実行されているスレッドが要求したキャッシュラインと物理アドレスが一致するキャッシュラインがないか、物理アドレスが一致しても異なるスレッドが使用しているか、キャッシュラインが無効である場合であるので、キャッシュメモリ141のデータを使用することができず、MIB146が二次キャッシュユニット300からキャッシュラインを取り込む(ステップS306)。そして、キャッシュ制御部142は、取り込んだキャッシュラインのデータを使用する(ステップS307)。
このように、TAG−MATCH検出部145が物理アドレスだけでなくスレッド識別子が一致するか否かを調べることによって、キャッシュ制御部142は、スレッド間でのキャッシュラインの制御をおこなうことができる。
次に、キャッシュ制御部142と二次キャッシュユニット300の間のキャッシュラインの取り込み処理(MI処理)の処理手順について説明する。第4図は、キャッシュ制御部142と二次キャッシュユニット300の間のMI処理の処理手順を示すフローチャートである。なお、このMI処理は、第3図に示したキャッシュ制御部142のステップS306の処理とこれに対応して二次キャッシュユニット300がおこなう処理である。
同図に示すように、このMI処理では、一次データキャッシュユニット140のキャッシュ制御部142が二次キャッシュユニット300に対してMI要求をおこなう(ステップS401)。すると、二次キャッシュユニット300は、MI要求を受けたキャッシュラインが一次データキャッシュユニット140に別スレッドで登録されているか否かを調べ(ステップS402)、別スレッドで登録されている場合には、RIMフラグをセットするためにキャッシュ制御部142に対してMO/BI要求をおこなう(ステップS403)。
なお、MI要求を受けたキャッシュラインが一次データキャッシュユニット140に別スレッドで登録されているか否かの判定は、シノニム制御を利用しておこなう。ここで、シノニム制御とは、二次キャッシュユニット側で一次キャッシュユニットに登録されているアドレスを管理し、同一物理アドレスのキャッシュラインが一次キャッシュユニットに複数登録されないようにする制御である。
そして、キャッシュ制御部142のMO/BI処理部147がMO/BI処理を実行してRIMフラグをセットした後(ステップS404)、二次キャッシュユニット300は、キャッシュラインを送出し(ステップS405)、キャッシュラインを受け取ったキャッシュ制御部142は、スレッド識別子とともにキャッシュラインを登録する(ステップS406)。また、キャッシュラインの到着により、RIFフラグがセットされる。
一方、MI要求を受けたキャッシュラインが一次データキャッシュユニット140に別スレッドで登録されていない場合には、二次キャッシュユニット300は、MO/BI要求をおこなうことなくキャッシュラインを送出する(ステップS405)。
このように、このMI処理では、二次キャッシュユニット300がシノニム制御を用いて、MI要求を受けたキャッシュラインが一次データキャッシュユニット140に別スレッドで登録されているか否かを調べ、別スレッドで登録されている場合には、キャッシュ制御部142のMO/BI処理部147がMO/BI処理を実行してRIMフラグをセットすることによって、プロセッサ間でのTSO保証機構をスレッド間でのTSO保証機構として用いることができる。
上述したように、本実施の形態1では、一次データキャッシュユニット140のTAG−MATCH検出部145が、物理アドレスが一致するキャッシュラインがキャッシュメモリ141に登録されている場合にもスレッドスレッド識別子が異なる場合には二次キャッシュユニット300に対してMI要求をおこない、二次キャッシュユニット300がMI要求を受けたキャッシュラインが別スレッドで一次データキャッシュユニット140に登録されている場合にはMO/BI処理の実行をキャッシュ制御部142に要求し、キャッシュ制御部142がMO/BI処理を実行してフェッチ・ポート148のRIMフラグを設定することとしたので、プロセッサ間のTSO保証機構を用いてスレッド間でのTSOを保証することができる。
なお、本実施の形態1では、二次キャッシュユニット300がシノニム制御を用いて一次データキャッシュユニット140にMO/BI要求をおこなう場合について説明したが、シノニム制御は二次キャッシュユニットの負担を大きくすることから、二次キャッシュユニットがシノニム制御を有しない場合もある。このような場合には、一次データキャッシュユニット側で、物理アドレスが一致するキャッシュラインが異なるスレッド識別子でキャッシュメモリに登録されている場合に自らMO/BI処理をおこなうことによって、スレッド間でのTSOを保証することができる。
この場合、プロセッサから外部記憶装置へのデータ転送を高速化するために従来から備えられている、一次キャッシュユニットから二次キャッシュユニットへのキャッシュラインの吐き出し要求をおこなうプロトコルを用いることができる。このプロトコルでは、一次キャッシュユニットから二次キャッシュユニットへ指定したキャッシュラインの吐き出し要求を送り、要求を受け取った二次キャッシュユニットは、その要求を主記憶制御装置へ転送し、主記憶制御装置の指示にしたがってキャッシュラインを主記憶装置に吐き出す。したがって、このキャッシュラインの吐き出し動作を用いて、一次データキャッシュユニットから二次キャッシュユニットへキャッシュラインを吐き出すことができる。
実施の形態2.
ところで、上記実施の形態1では、二次キャッシュユニットのシノニム制御または一次データキャッシュユニットのキャッシュライン吐き出し要求を用いてフェッチ・ポートのRIMフラグを設定する場合について説明した。しかしながら、二次キャッシュユニットにはシノニム制御をおこなう機構がなく、一次データキャッシュユニットにはキャッシュライン吐き出し要求をおこなう機構がない場合もある。
そこで、本実施の形態2では、キャッシュラインのリプレース時に発生するリプレースブロックの吐き出し・無効化処理とキャシュメモリまたは主記憶装置へのアクセス要求の監視とを用いてTSOを保証する場合について説明する。なお、本実施の形態2では、一次データキャッシュユニットのキャッシュ制御部の動作が主として本実施の形態1と異なるので、キャッシュ制御部の動作について説明する。
まず、本実施の形態2に係るCPUの構成について説明する。第5図は、本実施の形態2に係るCPUの構成を示す機能ブロック図である。同図に示すように、このCPU500は4つのプロセッサコア510〜540と4つのプロセッサコアで共有される二次キャッシュユニット550とを有する。なお、4つのプロセッサコア510〜540はいずれも同様の構成を有するので、ここではプロセッサコア510を例にとって説明する。
プロセッサコア510は、命令ユニット511と、演算ユニット512と、一次命令キャッシュユニット513と、一次データキャッシュユニット514とを有する。
命令ユニット511は、命令ユニット110と同様に命令を解読して実行する処理部であり、MT(Multi Thread)制御部が「スレッド0」および「スレッド1」を制御して、二つのスレッドを同時に実行する。
演算ユニット511は、演算ユニット120と同様に固定小数点演算および浮動小数点演算を実行する処理部であり、一次命令キャッシュユニット513は、一次命令キャッシュユニット130と同様に主記憶装置に記憶された命令を高速にアクセスするために主記憶装置の一部を記憶した記憶部である。
一次データキャッシュユニット514は、一次データキャッシュユニット140と同様に主記憶装置に記憶されたデータを高速にアクセスするために主記憶装置の一部を記憶した記憶部であるが、この一次データキャッシュユニット514のキャッシュ制御部515は、物理アドレスが一致してスレッド識別子が異なるキャッシュラインがキャッシュメモリに登録されている場合には、MIBから二次キャッシュユニットに対してMI要求をおこなわない。そのかわりに、このキャッシュ制御部515は、物理アドレスが一致したキャッシュラインに対してリプレースムーブアウト(MOR)処理をおこなってキャッシュタグに登録されたスレッド識別子を変更する。
そして、この処理中にフェッチ・ポートを監視し、一致するアドレスがあればRIMフラグおよびRIFフラグをセットする。ただし、RIFフラグは、異なるスレッドからキャッシュメモリまたは主記憶装置への書き込みが発生した場合にセットすることもできる。そして、RIMフラグとRIFフラグがともにセットされているフェッチ・ポートがSTVを返すときに命令の再実行を要求することによってTSOを保証する。
第5図は、このキャッシュ制御部515の動作について説明するための説明図である。同図は、キャッシュラインを使用しようとした命令とキャッシュラインの状態によるキャッシュアクセス動作の分類を示している。同図に示すように、このキャッシュ制御部515のキャシュアクセス動作には、「10通り」のアクセスパターンと「3通り」の動作がある。
「3通り」の動作の一つ目は、キャッシュミスの場合の動作(▲1▼および▲6▼)であり、二次キャッシュユニットに対してキャッシュラインのMI要求をおこないキャッシュラインを取り込む。そして、データのロード(load)のためにキャッシュラインを必要とした場合(▲1▼)には、取り込んだキャッシュラインを共有型で登録し、データのストア(store)のためにキャッシュラインを必要とした場合(▲6▼)には、取り込んだキャッシュラインを排他型で登録する。
「3通り」の動作の二つ目は、マルチスレッド動作をしない時の通常のキャッシュヒット動作(▲2▼、▲3▼、▲4▼および▲8▼)であり、特別な処理をおこなうことなく通常のキャッシュヒットと同様の動作をおこない、キャッシュラインの状態も変化しない。
「3通り」の動作の三つ目は、マルチスレッド動作中にスレッド間のTSOを保証するために発生する動作を含む場合(▲5▼、▲7▼、▲9▼および@)であり、MOR処理をおこなってRIMフラグおよびRIFフラグをセットする。また、他のプロセッサコアと共有しているキャッシュラインにストアを実行する場合(▲7▼)には、他のプロセッサコアと共有しているキャッシュラインにストアを実行すると、ストア完了後どのプロセッサコアが保持しているキャッシュラインが最新のキャッシュラインであるかがわからなくなるため、ストアの実行に先立って、まず、キャッシュラインの状態を共有型から排他型へ変更する(BTC)。その後、他のプロセッサコアがその領域を使用してフェッチを完了していた場合に備えて、MOR動作をおこなう。その後にストアが実行される。
次に、キャッシュ制御部515の処理手順について説明する。第7図は、キャッシュ制御部515の処理手順を示すフローチャートである。同図に示すように、このキャッシュ制御部515は、命令ユニット511が要求したアクセスがロードであるか否かを調べる(ステップS701)。
その結果、アクセスがロードである場合(ステップS701肯定)には、キャッシュミスか否かを調べ(ステップS702)、キャッシュミスの場合には、MIBを確保し(ステップS703)、二次キャッシュユニット550に対してキャッシュラインを要求する(ステップS704)。そして、キャッシュラインが届くと、キャッシュラインを共有型で登録し(ステップS705)、データ部のデータを使用する(ステップS706)。
これに対して、キャッシュヒットの場合には、ヒットしたキャッシュラインが同一スレッドで登録されているか否かを調べ(ステップS707)、同一スレッドで登録されている場合には、データ部のデータを使用する(ステップS706)。また、ヒットしたキャッシュラインが同一スレッドで登録されていない場合には、キャッシュラインが共有型であるか否かを調べ(ステップS708)、共有型である場合には、データ部のデータを使用し(ステップS706)、排他型である場合には、MOR処理を実行してRIMフラグおよびRIFフラグをセットし(ステップS709)、データ部のデータを使用する(ステップS706)。
一方、アクセスがストアである場合(ステップS701否定)には、キャッシュミスか否かを調べ(ステップS710)、キャッシュミスの場合には、MIBを確保し(ステップS711)、二次キャッシュユニット550に対してキャッシュラインを要求する(ステップS712)。そして、キャッシュラインが届くと、キャッシュラインを排他型で登録し(ステップS713)、データ部へデータを格納する(ステップS714)。
これに対して、キャッシュヒットの場合には、ヒットしたキャッシュラインが同一スレッドで登録されているか否かを調べ(ステップS715)、同一スレッドで登録されている場合には、キャッシュラインが共有型であるか排他型であるかを調べる(ステップS716)。そして、排他型である場合には、データ部にデータを格納する(ステップS714)。一方、共有型である場合には、MOR処理を実行してRIMフラグおよびRIFフラグをセットし(ステップS717)、他のプロセッサコアのキャッシュラインを無効化し(ステップS718)、キャッシュラインを排他型へ変更し(ステップS719)、データ部へデータを格納する(ステップS714)。
また、ヒットしたキャッシュラインが同一スレッドで登録されていない場合には、MOR処理を実行してRIMフラグおよびRIFフラグをセットし(ステップS720)、キャッシュラインが共有型であるか排他型であるかを調べる(ステップS716)。そして、排他型である場合には、データ部にデータを格納する(ステップS714)。一方、共有型である場合には、他のプロセッサコアのキャッシュラインを無効化し(ステップS718)、キャッシュラインを排他型へ変更し(ステップS719)、データ部へデータを格納する(ステップS714)。
このように、キャッシュ制御部515がキャッシュメモリまたは主記憶装置へのアクセスを監視し、TSO違反が発生する可能性がある場合にはMOR処理を実行してRIMフラグおよびRIFフラグをセットすることによって、プロセッサコア間でのTSO保証機構をスレッド間のTSO保証に用いることができる。
次に、MOR処理について説明する。第8図は、MOR処理の処理手順を示すフローチャートである。同図に示すように、このMOR処理は、MIBを確保し(ステップS801)、リプレースムーブアウト動作を開始する。そして、キャッシュラインの半分をリプレースムーブアウトバッファへ読み出すとともに(ステップS802)、リプレースムーブアウトが禁止されているか否かを調べる(ステップS803)。ここで、リプレースムーブアウトが禁止されている場合としては、キャッシュラインをコンペアアンドスワップのような特殊な命令が使用しようとしている場合などがある。また、リプレースムーブアウトバッファのデータが使われることはない。
そして、リプレースムーブアウトが禁止されている場合には、ステップS802に戻って、再度リプレースムーブアウトバッファの読み出しをおこなう。一方、リプレースムーブアウトが禁止されていない場合には、キャッシュラインの残りの半分をリプレースムーブアウトバッファへ読み出すとともに、スレッド識別子を書き換える(ステップS804)。
このように、このMOR処理がリプレースムーブアウト動作を実行することによって、プロセッサコア間でのTSO保証機構が働き、リプレースムーブアウト対象と同じキャッシュラインを使用してPSTVフラグがセットされているフェッチ・ポートのRIMフラグをセットすることができる。また、ここでは、RIMフラグのセットと同時にRIFフラグをセットすることにより、プロセッサコア間のTSO保証機構をスレッド間のTSO保証機構として働かせることができる。
また、同一プロセッサコア上で異なるスレッドが同一のキャッシュラインの取り合いをする場合もあるが、その時は、マルチプロセッサ環境で異なるプロセッサが同一のキャッシュラインの取り合いをするときの動作が働く。
具体的には、マルチプロセッサ環境でキャッシュラインの取り合いが発生したときは、それぞれのプロセッサがキャッシュラインの吐き出し禁止制御とそれを強制的に無効化する制御をもつ。すなわち、キャッシュラインを保持しているプロセッサ側はストアが完了するまでキャッシュラインの吐き出しを待たせようとする。これがキャッシュラインの吐き出し禁止制御である。ところが、一方のプロセッサが永遠に同一キャッシュラインへのストアを継続していたりすると、他のプロセッサにそのキャッシュラインを受け渡すことができなくなってしまう。そこで、他のプロセッサから受け取ったキャッシュラインの吐き出し要求を処理するためのキャッシュラインの吐き出し処理がキャッシュパイプラインでの実行がある程度の回数失敗した場合に、そのキャッシュラインへのストアを強制的に停止させ、一旦キャッシュラインの吐き出しを成功させる。この結果、他のプロセッサへとキャッシュラインが受け渡される。その後も、そのキャッシュラインへのストアを継続するのであれば、今度は他のプロセッサへとキャッシュラインの吐き出し要求が送られる。その結果、いずれキャッシュラインが届き、ストアを継続することが可能となる。
このような、マルチプロセッサ環境で異なるプロセッサが同一のキャッシュラインの取り合いをするときに動作する機構は、スレッド間のキャッシュラインの受け渡しにおいて使用されるリプレースムーブアウト動作においても動作することから、いかなる場合にもスレッド間でのキャッシュラインの受け渡しに成功し、ハング動作の防止も可能となっている。
上述したように、本実施の形態2では、一次データキャッシュユニット514のキャッシュ制御部515がキャッシュメモリまたは主記憶装置へのアクセスを監視し、TSO違反が発生する可能性がある場合にはMOR処理を実行してRIMフラグおよびRIFフラグをセットすることとしたので、プロセッサコア間のTSO保証機構をスレッド間のTSO保証機構として働かせることができる。
なお、本実施の形態2では、共有型のキャッシュラインを異なるスレッド間で共有する場合について説明したが、本発明はこれに限定されるものではなく、共有型のキャッシュラインも排他型のキャッシュラインのようにスレッド間で排他制御する場合にも同様に適用することができる。具体的には、他のスレッドが登録したキャッシュラインのロードがヒットした場合にMOR処理を実行することによって、プロセッサコア間のTSO保証機構をスレッド間のTSO保証機構として働かせることができる。
また、本実施の形態1および2では、二つのスレッドを一時期に命令ユニットが処理する場合について説明したが、本発明はこれに限定されるものではなく、三つ以上のスレッドを一時期に命令ユニットが処理する場合にも同様に適用することができる。
また、本実施の形態1および2では、同時型マルチスレッド方式を用いた場合について説明をおこなった。ここで、同時型マルチスレッド方式とは、一時期に複数のスレッドの処理をおこなう方式である。一方、マルチスレッド方式には、一時期には一つのスレッドのみ処理をおこない、一定時間ごとあるいはキャッシュミスなどによって命令実行が滞ることがわかった場合にスレッドを切り替える時分割マルチスレッド方式もある。そこで、時分割マルチスレッド方式の場合のTSO保証について説明する。
時分割マルチスレッド方式では、実行中のスレッドを休眠させて、別のスレッドの動作を立ち上げることによってスレッドの切り替えをおこなう。そこで、スレッドの切り替えをおこなうときに、休眠させるスレッドから発行されていてコミットされていないフェッチ命令とストア命令をすべてキャンセルする。こうすることで、フェッチ命令のアウト・オブ・オーダ完了によって他スレッドのストアから発生する恐れのあるTSO違反を回避することができる。
また、コミットされたストア命令は、キャッシュメモリまたは主記憶装置への書き込みが可能となるまでの間、ストア要求とストアデータを保持するストアポートまたはライトバッファで実行を待たされ、実行可能となると順次ストアを実行する。ここで、先行するストアの結果を後続のフェッチが反映しなければならない場合、すなわち先行するストアが操作対象とするメモリ領域を後続のフェッチが使用する場合は、ストア要求のアドレスとオペランド長をフェッチ要求のアドレスとオペランド長を比較することで検出する。そして、この場合には、SFI(Store Fetch Interlock)によって、ストアの実行が完了するまでフェッチの実行を待たせる。
このように、ストア命令がコミットされてからスレッドの切り替えが発生し、ストアポートに異なるスレッドのストアが滞っている場合にも、SFI動作を有効にして異なるスレッドからのストアの影響を反映させることによって、スレッド休眠中に発生した異なるスレッドのストアに起因するTSO違反を回避することができる。
さらに、キャッシュラインの無効化・吐き出しによるRIMフラグのセット、データの到着によるRIFフラグのセットを利用することにより、プロセッサ間のTSOを保証することができ、異なるスレッド間でのTSO保証と合わせて、コンピュータシステム全体のTSOを保証することができる。
以上のように、本発明に係る記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法は、複数のスレッドを同時に実行するマルチスレッド方式のコンピュータシステムに適している。
本実施の形態1に係るCPUの構成を示す機能ブロック図である。 キャッシュタグの一例を示す図である。 第1図に示したキャッシュ制御部の処理手順を示すフローチャートである。 キャッシュ制御部と二次キャッシュユニットの間のMI処理の処理手順を示すフローチャートである。 本実施の形態2に係るCPUの構成を示す機能ブロック図である。 本実施の形態2に係るキャッシュ制御部の動作を説明するための説明図である。 本実施の形態2に係るキャッシュ制御部の処理手順を示すフローチャートである。 MOR処理の処理手順を示すフローチャートである。 マルチプロセッサにおけるTSO違反およびその監視原理を説明するための説明図である。

Claims (20)

  1. 同時に実行される複数のスレッドで共有され、該スレッドから発行されるメモリアクセス要求の処理をおこなう記憶制御装置であって、
    複数の命令処理装置間で共有されるデータに対する該複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証手段と、
    前記メモリアクセス要求で指定されたアドレスのデータを記憶している場合に該記憶しているデータを登録したスレッドと該メモリアクセス要求を発行したスレッドが同一であるか否かを判定するスレッド判定手段と、
    前記スレッド判定手段の判定結果に基づいて前記一貫性保証手段を動作させる一貫性保証動作起動手段と、
    を備えたことを特徴とする記憶制御装置。
  2. 前記一貫性保証動作起動手段は、前記スレッド判定手段が同一でないと判定した場合に、下位の記憶制御装置に対して前記データの取り込み要求をおこない、該取り込み要求に応答して下位の記憶制御装置がおこなう指示に基づいて前記一貫性保証手段を動作させることを特徴とする請求項1に記載の記憶制御装置。
  3. 前記一貫性保証動作起動手段は、前記スレッド判定手段が同一でないと判定した場合に、下位の記憶制御装置に対するデータの吐き出し動作を実行して前記一貫性保証手段を動作させることを特徴とする請求項1に記載の記憶制御装置。
  4. 前記一貫性保証動作起動手段は、前記スレッド判定手段の判定結果および前記データの複数の命令処理装置間での共有状態に基づいてキャッシュライン置き換え動作を実行して前記一貫性保証手段を動作させることを特徴とする請求項1に記載の記憶制御装置。
  5. 同時に実行される複数のスレッドで共有され、該スレッドから発行されるメモリアクセス要求の処理をおこなうデータキャッシュ制御装置であって、
    複数の命令処理装置間で共有されるデータに対する該複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証手段と、
    前記メモリアクセス要求で指定されたアドレスのデータを含むキャッシュラインを記憶している場合に該記憶しているキャッシュラインを登録したスレッドと該メモリアクセス要求を発行したスレッドが同一であるか否かを判定するスレッド判定手段と、
    前記スレッド判定手段が同一でないと判定した場合に、前記一貫性保証手段を動作させる一貫性保証動作起動手段と、
    を備えたことを特徴とするデータキャッシュ制御装置。
  6. 前記スレッド判定手段は、キャッシュタグに設けたスレッド識別子に基づいて、キャッシュラインを登録したスレッドと前記メモリアクセス要求を発行したスレッドが同一であるか否かを判定することを特徴とする請求項5に記載のデータキャッシュ制御装置。
  7. 前記一貫性保証手段は、前記メモリアクセス要求で指定されたアドレスのデータの無効化または他の記憶制御装置へのデータの吐き出しと該他の記憶制御装置からのデータの取り込みとを監視して前記保証をおこなうことを特徴とする請求項1〜4のいずれか一つに記載の記憶制御装置。
  8. 前記一貫性保証手段は、フェッチ・ポートに設けたPSTVフラグ、RIMフラグおよびRIFフラグを用いて前記アドレスのデータの無効化または他の記憶制御装置へのデータの吐き出しと該他の記憶制御装置からのデータの取り込みとを監視することを特徴とする請求項7に記載の記憶制御装置。
  9. 前記記憶制御装置はさらに、
    前記複数の命令処理装置のうち、いずれかの命令処理装置で実行されるスレッドの切り替えが行われる際に、実行が中断されるスレッドが発行したストア命令およびフェッチ命令のうちコミットされていない全てのストア命令およびフェッチ命令を無効とするアクセス無効化手段と、
    前記実行が中断されたスレッドの実行が再開された際に、コミットされたストア命令の実行結果に影響を受けるフェッチ命令を検出し、検出したフェッチ命令を該ストア命令の実行後に実行するように制御するインターロック手段と、
    を備えたことを特徴とする請求項1または4に記載の記憶制御装置。
  10. 複数のスレッドを同時に実行する命令処理装置と一次データキャッシュ装置との組を複数有し、該複数の組の一次データキャッシュ装置で共有される二次キャッシュ装置を有する中央処理装置であって、
    前記複数の組のそれぞれの一次データキャッシュ装置は、
    他の組の一次データキャッシュ装置と共有するキャッシュラインに対する複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証手段と、
    前記命令処理装置からのメモリアクセス要求と物理アドレスが一致するキャッシュラインが異なるスレッドによって登録されている場合に前記二次キャッシュ装置に対して該キャッシュラインの取り込み要求をおこなう取り込み要求手段と、
    前記二次キャッシュ装置からの要求に基づく前記キャッシュラインの無効化または吐き出しを実行して前記一貫性保証手段を動作させる吐き出し実行手段と、
    を備え、
    前記二次キャッシュ装置は、
    前記キャッシュラインの取り込み要求を受けたキャッシュラインが他のスレッドにより前記一次データキャッシュ装置に登録されている場合には前記キャッシュラインの無効化または吐き出しの実行を該一次データキャッシュ装置に要求する吐き出し要求手段
    を備えたことを特徴とする中央処理装置。
  11. 同時に実行される複数のスレッドから発行されるメモリアクセス要求の処理をおこなう記憶装置制御方法であって、
    前記メモリアクセス要求で指定されたアドレスのデータを記憶している場合に該記憶しているデータを登録したスレッドと該メモリアクセス要求を発行したスレッドが同一であるか否かを判定するスレッド判定工程と、
    前記スレッド判定工程の判定結果に基づいて、複数の命令処理装置間で共有されるデータに対する該複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証機構を動作させる一貫性保証動作起動工程と、
    を含んだことを特徴とする記憶装置制御方法。
  12. 前記一貫性保証動作起動工程は、前記スレッド判定工程が同一でないと判定した場合に、下位の記憶制御装置に対して前記データの取り込み要求をおこない、該取り込み要求に応答して下位の記憶制御装置がおこなう指示に基づいて前記一貫性保証機構を動作させることを特徴とする請求項11に記載の記憶装置制御方法。
  13. 前記一貫性保証動作起動工程は、前記スレッド判定工程が同一でないと判定した場合に、下位の記憶制御装置に対するデータの吐き出し動作を実行して前記一貫性保証機構を動作させることを特徴とする請求項11に記載の記憶装置制御方法。
  14. 前記一貫性保証動作起動工程は、前記スレッド判定工程の判定結果および前記データの複数の命令処理装置間での共有状態に基づいてキャッシュライン置き換え動作を実行することによって前記一貫性保証機構を動作させることを特徴とする請求項11に記載の記憶装置制御方法。
  15. 同時に実行される複数のスレッドから発行されるメモリアクセス要求の処理をおこなうデータキャッシュ制御方法であって、
    前記メモリアクセス要求で指定されたアドレスのデータを含むキャッシュラインを記憶している場合に該記憶しているキャッシュラインを登録したスレッドと該メモリアクセス要求を発行したスレッドが同一であるか否かを判定するスレッド判定工程と、
    前記スレッド判定工程が同一でないと判定した場合に、複数の命令処理装置間で共有されるデータに対する該複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証機構を動作させる一貫性保証動作起動工程と、
    を含んだことを特徴とするデータキャッシュ制御方法。
  16. 前記スレッド判定工程は、キャッシュタグに設けたスレッド識別子に基づいて、キャッシュラインを登録したスレッドと前記メモリアクセス要求を発行したスレッドが同一であるか否かを判定することを特徴とする請求項15に記載のデータキャッシュ制御方法。
  17. 前記一貫性保証機構は、前記メモリアクセス要求で指定されたアドレスのデータの無効化または他の記憶制御装置へのデータの吐き出しと該他の記憶制御装置からのデータの取り込みとを監視して前記保証をおこなうことを特徴とする請求項11〜14のいずれか一つに記載の記憶装置制御方法。
  18. 前記一貫性保証機構は、フェッチ・ポートに設けたPSTVフラグ、RIMフラグおよびRIFフラグを用いて前記アドレスのデータの無効化または他の記憶制御装置へのデータの吐き出しと該他の記憶制御装置からのデータの取り込みとを監視することを特徴とする請求項17に記載の記憶装置制御方法。
  19. 前記記憶装置制御方法はさらに、
    前記複数の命令処理装置のうち、いずれかの命令処理装置で実行されるスレッドの切り替えが行われる際に、実行が中断されるスレッドが発行したストア命令およびフェッチ命令のうちコミットされていない全てのストア命令およびフェッチ命令を無効とするアクセス無効化工程と、
    前記実行が中断されたスレッドの実行が再開された際に、コミットされたストア命令の実行結果に影響を受けるフェッチ命令を検出し、検出したフェッチ命令を該ストア命令の実行後に実行するように制御するインターロック工程と、
    を含んだことを特徴とする請求項11または14に記載の記憶装置制御方法。
  20. 複数のスレッドを同時に実行する命令処理装置と一次データキャッシュ装置の組を複数有し、該複数の組の一次データキャッシュ装置で共有される二次キャッシュ装置を有する中央処理装置で用いられるキャッシュ制御方法であって、
    前記一次データキャッシュ装置が、前記命令処理装置からのメモリアクセス要求と物理アドレスが一致するキャッシュラインが異なるスレッドによって登録されている場合に前記二次キャッシュ装置に対して該キャッシュラインの取り込み要求をおこなう取り込み要求工程と、
    前記二次キャッシュ装置が、前記キャッシュラインの取り込み要求を受けたキャッシュラインが他のスレッドにより前記一次データキャッシュ装置に登録されている場合には前記キャッシュラインの無効化または吐き出しの実行を該一次データキャッシュ装置に要求する吐き出し要求工程と、
    前記一次データキャッシュ装置が、前記二次キャッシュ装置からの要求に基づき前記キャッシュラインの無効化または吐き出しを実行することによって、他の組の一次データキャッシュ装置と共有するキャッシュラインに対する複数の命令処理装置間の読み出しおよび書き込みの実行順序の一貫性の保証をおこなう一貫性保証機構を動作させる吐き出し実行工程と、
    を含んだことを特徴とするキャッシュ制御方法。
JP2004567505A 2003-01-27 2003-01-27 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法 Expired - Fee Related JP4180569B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2003/000723 WO2004068361A1 (ja) 2003-01-27 2003-01-27 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法

Publications (2)

Publication Number Publication Date
JPWO2004068361A1 JPWO2004068361A1 (ja) 2006-05-25
JP4180569B2 true JP4180569B2 (ja) 2008-11-12

Family

ID=32800789

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004567505A Expired - Fee Related JP4180569B2 (ja) 2003-01-27 2003-01-27 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法

Country Status (2)

Country Link
JP (1) JP4180569B2 (ja)
WO (1) WO2004068361A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2339473A1 (en) 2009-12-25 2011-06-29 Fujitsu Limited Information processing device and cache memory control device for out-of-order memory access
WO2011158320A1 (ja) * 2010-06-14 2011-12-22 富士通株式会社 マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム
US9251084B2 (en) 2012-06-26 2016-02-02 Fujitsu Limited Arithmetic processing apparatus, and cache memory control device and cache memory control method
US9250980B2 (en) 2009-12-18 2016-02-02 International Business Machines Corporation System, method, program, and code generation unit

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7484045B2 (en) 2004-03-30 2009-01-27 Intel Corporation Store performance in strongly-ordered microprocessor architecture
CN101213527A (zh) * 2005-06-29 2008-07-02 英特尔公司 用于缓存操作的方法、装置和系统
CN101681303B (zh) * 2007-06-19 2011-12-14 富士通株式会社 高速缓存控制装置以及控制方法
EP2169554B1 (en) * 2007-06-20 2013-07-10 Fujitsu Limited Cache memory controller and cache memory control method
CN101689142A (zh) 2007-06-20 2010-03-31 富士通株式会社 信息处理装置、高速缓冲存储器控制装置以及存储器访问顺序保证方法
CN101689143B (zh) 2007-06-20 2012-07-04 富士通株式会社 高速缓存控制装置以及控制方法
JP5583893B2 (ja) * 2008-05-28 2014-09-03 富士通株式会社 演算処理装置及び演算処理装置の制御方法
WO2013084314A1 (ja) * 2011-12-07 2013-06-13 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP6068325B2 (ja) * 2013-12-19 2017-01-25 インテル・コーポレーション セキュアなアプリケーションの実行を提供するプロセッサ
KR101713114B1 (ko) 2015-08-12 2017-03-08 엔에이치엔엔터테인먼트 주식회사 모바일 환경에서의 리소스 다운로드 방법 및 시스템
CN111652749B (zh) * 2018-11-28 2024-04-16 创新先进技术有限公司 信息核查方法以及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5257354A (en) * 1991-01-16 1993-10-26 International Business Machines Corporation System for monitoring and undoing execution of instructions beyond a serialization point upon occurrence of in-correct results
US5265233A (en) * 1991-05-17 1993-11-23 Sun Microsystems, Inc. Method and apparatus for providing total and partial store ordering for a memory in multi-processor system
US5699538A (en) * 1994-12-09 1997-12-16 International Business Machines Corporation Efficient firm consistency support mechanisms in an out-of-order execution superscaler multiprocessor
JP3139392B2 (ja) * 1996-10-11 2001-02-26 日本電気株式会社 並列処理システム
JP2003511754A (ja) * 1999-10-01 2003-03-25 サン・マイクロシステムズ・インコーポレイテッド 投機的なかつ順不同(out−of−order)のロードの場合に正確なトラップ処理をするための方法
JP3661614B2 (ja) * 2001-07-12 2005-06-15 日本電気株式会社 キャッシュメモリ制御方法及びマルチプロセッサシステム

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9250980B2 (en) 2009-12-18 2016-02-02 International Business Machines Corporation System, method, program, and code generation unit
US9904581B2 (en) 2009-12-18 2018-02-27 International Business Machines Corporation System, method, program, and code generation unit
US10169092B2 (en) 2009-12-18 2019-01-01 International Business Machines Corporation System, method, program, and code generation unit
EP2339473A1 (en) 2009-12-25 2011-06-29 Fujitsu Limited Information processing device and cache memory control device for out-of-order memory access
US8549232B2 (en) 2009-12-25 2013-10-01 Fujitsu Limited Information processing device and cache memory control device
WO2011158320A1 (ja) * 2010-06-14 2011-12-22 富士通株式会社 マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム
JP5360299B2 (ja) * 2010-06-14 2013-12-04 富士通株式会社 マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム
US8996820B2 (en) 2010-06-14 2015-03-31 Fujitsu Limited Multi-core processor system, cache coherency control method, and computer product
US9390012B2 (en) 2010-06-14 2016-07-12 Fujitsu Limited Multi-core processor system, cache coherency control method, and computer product
US9251084B2 (en) 2012-06-26 2016-02-02 Fujitsu Limited Arithmetic processing apparatus, and cache memory control device and cache memory control method

Also Published As

Publication number Publication date
JPWO2004068361A1 (ja) 2006-05-25
WO2004068361A1 (ja) 2004-08-12

Similar Documents

Publication Publication Date Title
US6681295B1 (en) Fast lane prefetching
JP4180569B2 (ja) 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法
JP5118652B2 (ja) アウトオブオーダープロセッサにおけるトランザクショナルメモリ
JP3927556B2 (ja) マルチプロセッサ・データ処理システム、変換索引バッファ無効化インストラクション(tlbi)のハンドリングを行うための方法、およびプロセッサ
US8230177B2 (en) Store prefetching via store queue lookahead
US5490261A (en) Interlock for controlling processor ownership of pipelined data for a store in cache
US20050210204A1 (en) Memory control device, data cache control device, central processing device, storage device control method, data cache control method, and cache control method
US8301843B2 (en) Data cache block zero implementation
US20080010417A1 (en) Read/Write Permission Bit Support for Efficient Hardware to Software Handover
US8572356B2 (en) Space-efficient mechanism to support additional scouting in a processor using checkpoints
US8255591B2 (en) Method and system for managing cache injection in a multiprocessor system
US20040073738A1 (en) Scalable efficient I/O port protocol
WO2015057846A1 (en) Computer processor employing cache memory with pre-byte valid bits
JP2003030049A (ja) キャッシュメモリ制御方法及びマルチプロセッサシステム
US20090106498A1 (en) Coherent dram prefetcher
JPH0670779B2 (ja) フェッチ方法
JP2005316854A (ja) 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
US20110153942A1 (en) Reducing implementation costs of communicating cache invalidation information in a multicore processor
CN109196489B (zh) 用于在非均匀计算装置中重排序的方法和设备
JPWO2009122694A1 (ja) キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム
JP2001222468A (ja) マイクロプロセッサのロード/ストア命令制御回路、およびロード/ストア命令制御方法
JPH0567976B2 (ja)
US11314509B2 (en) Processing of plural-register-load instruction
US7975129B2 (en) Selective hardware lock disabling
US20060117140A1 (en) Memory control device and memory control method

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080311

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080509

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080617

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080811

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: 20080826

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080827

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: 20110905

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees