(57)【特許請求の範囲】
【請求項１】
１次キャッシュメモリを有し、演算処理を行う第１の演算処理部と、
演算処理を行う第２の演算処理部と、
前記第１の演算処理部と前記第２の演算処理部とに接続され、前記１次キャッシュメモリが保持するデータを包含して記憶するとともに、前記１次キャッシュメモリに保持されたデータの状態を特定する状態情報を保持する２次キャッシュメモリと、
前記第２の演算処理部から第１アドレスのデータに対する第１のアクセス要求を受け取ると、前記第１アドレスのデータの第１の状態情報が、前記第１アドレスのデータが前記１次キャッシュメモリに排他又は所有状態で保持されることを示す場合、前記第１アドレスのデータの読み出しを要求する読み出し要求を前記第１の演算処理部に出力するとともに、前記第１の演算処理部から前記第１アドレスのデータが変更されていないことを示すデータ未変更通知を受け取ったとき、前記１次キャッシュメモリから前記第１アドレスのデータを読み出させる代わりに、前記２次キャッシュメモリに記憶された前記第１アドレスのデータを前記第２の演算処理部に送信するとともに前記第１アドレスのデータの第１の状態情報の変更後の状態情報である第２の状態情報を共有状態に変更する制御部と、
を有することを特徴とする演算処理装置。
【請求項２】
前記演算処理装置において、
前記第１のアクセス要求が、前記第２の演算処理部による前記第１アドレスのデータの読み出し後に、前記第２の演算処理部が前記第１アドレスのデータを変更することを示す場合、
前記要求信号は、前記第１アドレスのデータの読み出しの要求に加えて、前記１次キャッシュメモリに保持された前記第２の状態情報を共有状態から無効状態にすることを要求することを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記演算処理装置において、
前記第２の演算処理部はさらに、第３の記憶部を有し、
前記制御部は、前記第１の演算処理部から前記第１アドレスのデータを読み出した後に、前記第３の記憶部に保持され、且つ前記第１アドレスのデータの状態を特定する第３の状態情報を排他状態にすることを要求する応答通知を、前記第２の演算処理部に出力することを特徴とする請求項２に記載の演算処理装置。
【請求項４】
前記演算処理装置はさらに、
前記制御部と、前記第１の演算処理部から入出力するデータ、又は、前記第２の演算処理部から入出力するデータ、を伝送する共通信号線と、
前記第１の演算処理部から入出力するデータ、又は、前記第２の演算処理部から入出力するデータを選択し、且つ選択したデータを前記共通信号線に出力する選択回路と、
前記選択回路により選択されないデータを一時的に記憶する記憶回路と、
を有することを特徴とする請求項２又は３に記載の演算処理装置。
【請求項５】
１次キャッシュメモリを有し、演算処理を行う第１の演算処理部と、演算処理を行う第２の演算処理部と、前記第１の演算処理部と前記第２の演算処理部とに接続され、前記１次キャッシュメモリが保持するデータを包含して記憶するとともに、前記１次キャッシュメモリに保持されたデータの状態を特定する状態情報を保持する２次キャッシュメモリと、を有する演算処理装置の制御方法において、
前記演算処理装置が有する制御部が、前記第２の演算処理部から第１アドレスのデータに対する第１のアクセス要求を受け取り、
前記第１アドレスのデータの第１の状態情報が、前記第１アドレスのデータが前記１次キャッシュメモリに排他又は所有状態で保持されることを示す場合、前記制御部が、前記第１アドレスのデータの読み出しを要求する読み出し要求を前記第１の演算処理部に出力するとともに、前記第１の演算処理部から前記第１アドレスのデータが変更されていないことを示すデータ未変更通知を受け取ったとき、前記１次キャッシュメモリから前記第１アドレスのデータを読み出させる代わりに、前記２次キャッシュメモリに記憶された前記第１アドレスのデータを前記第２の演算処理部に送信するとともに前記第１アドレスのデータの第１の状態情報の変更後の状態情報である第２の状態情報を共有状態に変更することを特徴とする演算処理装置の制御方法。
【請求項６】
前記演算処理装置の制御方法において、
前記第１のアクセス要求が、前記第２の演算処理部による前記第１アドレスのデータの読み出し後に、前記第２の演算処理部が前記第１アドレスのデータを変更することを示す場合、前記要求信号は、前記第１アドレスのデータの読み出しの要求に加えて、前記１次キャッシュメモリに保持され且つ前記第１アドレスのデータの状態を特定する前記第２の状態情報を共有状態から無効状態にすることを要求することを特徴とする請求項５に記載の演算処理装置の制御方法。
【請求項７】
前記演算処理装置の制御方法において、
前記第２の演算処理部は、さらに第３の記憶部を有し、
前記制御部は、前記第１の演算処理部から前記第１アドレスのデータを読み出した後に、前記第３の記憶部に保持され、且つ前記第１アドレスのデータの状態を特定する状態情報を排他状態にすることを要求する応答通知を、前記第２の演算処理部に出力することを特徴とする請求項６に記載の演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置及び制御方法に関する。
【背景技術】
【０００２】
近年、命令実行部及びＬ１キャッシュ（Ｌｅｖｅｌ−１  Ｃａｃｈｅ  Ｍｅｍｏｒｙ）：一次キャッシュメモリ）を組み合わせた演算処理部であるプロセッサコアを、複数搭載する演算処理装置としてのＣｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）が使用されている。そのようなＣＰＵは、マルチコアプロセッサと呼ばれる。搭載するプロセッサコアの数を増やすことで、マルチコアプロセッサ全体の処理速度は、向上する。
【０００３】
一方で、マルチコアプロセッサでは、複数のプロセッサコアが、同時に同じデータに対する演算処理を実行し演算結果をメモリに格納しようとする場合がある。各プロセッサコアが、同じデータに対して異なる演算処理を同時に変更すると、データの不一致が生じる。そのため、何れかのプロセッサコアがデータを変更する場合、他のプロセッサコアによるデータの変更を抑止し、且つ他のプロセッサコアに変更されたデータを反映する動作が行われる。このような、各プロセッサコアが保持するデータの不一致を防止する「メモリ一貫性（キャッシュコヒーレンシ：ｃａｃｈｅ  ｃｏｈｅｒｅｎｃｙ）」が重要となっている。
【０００４】
メモリ一貫性の維持は、複数のプロセッサコアの各々が保持するＬ１キャッシュと、Ｌ１キャッシュに保持されたデータを包含するＬ２キャッシュ（Ｌｅｖｅｌ−２  Ｃａｃｈｅ  Ｍｅｍｏｒｙ：２次キャッシュメモリ）との間で行う必要がある。
【０００５】
メモリ一貫性を維持するために、キャッシュメモリ及びメインメモリで使用されるプロトコルとして、例えば、ＭＥＳＩプロトコルがある。ＭＥＳＩプロトコルによれば、キャッシュメモリはライン毎に、「Ｍ（Ｍｏｄｉｆｉｅｄ：変更）」、「Ｅ（Ｅｘｃｌｕｓｉｖｅ：排他）」、「Ｓ（Ｓｈａｒｅｄ：共有）」、「Ｉ（Ｉｎｖａｌｉｄａｔｅｄ：無効）」の４つの状態情報のうちの１つを取ることができる。状態情報を取得することで、どのプロセッサコアに最新のデータが存在するかが明確になる。そして、各プロセッサコアが必要なときに最新のデータを取得できるように、各キャッシュ自身の状態情報を遷移する。
【０００６】
マルチコアプロセッサではないが、従来、複数のＣＰＵを制御するシステムコントローラ（ＳＣ：Ｓｙｓｔｅｍ  Ｃｏｎｔｒｏｌｌｅｒ）が知られている。また、システムコントローラは、メインメモリを有し、メインメモリへメモリ制御信号を供給するメモリコントローラとして動作する。システムコントローラは、システムコントローラに接続された複数のＣＰＵの各々が有するキャッシュメモリと、システムコントローラが有するメインメモリとの間の「メモリ一貫性」制御を行う。
【０００７】
システムコントローラは、読み出し要求をあるＣＰＵから受け取ると、読み出し対象となるデータの状態を確認する。読み出し対象のデータの状態が、「Ｓ」状態（共有状態）の場合、システムコントローラは、他のＣＰＵに対して「Ｓ」状態のデータの読み出す動作を行わず、システムコントローラのメインメモリで保持された対象データを、読み出し元のＣＰＵに供給する処理を行う。このようにすることで、ＣＰＵとシステムコントローラと間の不要なデータ転送動作を少なくすることが出来る。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平９−２２３８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、システムコントローラは、「Ｅ」状態（排他状態）のデータに対してＣＰＵから読み出し要求があった場合、「Ｅ」状態のデータを排他的に占有するＣＰＵに対して、読み出し要求を行う。そして、システムコントローラは、読み出した「Ｅ」状態のデータを、要求を行ったＣＰＵに供給する。
【００１０】
開示の演算処理装置は、要求先の演算処理部のＬ１キャッシュから、Ｌ２キャッシュへの不要なデータ転送動作を無くすことを目的とする。
【課題を解決するための手段】
【００１１】
開示の演算処理装置は、第１の記憶部を有し、演算処理を行う第１の演算処理部と、演算処理を行う第２の演算処理部と、第１の記憶部が保持するデータを包含すると共に、第１の記憶部に保持されたデータの状態を特定する状態情報を保持する第２の記憶部と、第２の演算処理部から第１アドレスのデータに対する第１のアクセス要求を受け取ると、第１アドレスのデータの第１の状態情報が、第１アドレスのデータが第１の記憶部に排他又は所有状態で保持されることを示す場合、第１アドレスのデータの読み出しを要求する要求信号を第１の演算処理部に出力するとともに、第１の演算処理部から第１アドレスのデータが変更されていないことを示すデータ未変更通知信号を受け取ったとき、第２の記憶部に包含された第１アドレスのデータに対する第２の演算処理部からのアクセスを許可する制御部と、を有する。
【発明の効果】
【００１２】
開示の演算処理装置は、要求先の演算処理部のＬ１キャッシュから、Ｌ２キャッシュへの不要なデータ転送動作を無くすという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】演算処理装置の構成の一例を示す図である。
【図２】プロセッサコアの一例を示す図である。
【図３】Ｌ１キャッシュの状態情報の状態遷移の一例を示す図である。
【図４】プロセッサコア及びＬ２キャッシュコントローラ間で送信される信号と、状態情報との関係の一例を示す図である。
【図５】Ｌ１キャッシュＲＡＭの一例を示す図である。
【図６】Ｌ１キャッシュのタグＲＡＭのデータ構造、及びＴＬＢのデータ構造の一例を示す図である。
【図７】Ｌ２キャッシュＲＡＭの一例を示す図である。
【図８】Ｌ２キャッシュのタグＲＡＭのデータ構造の一例を示す図である。
【図９】Ｌ２キャッシュの状態情報の状態遷移の一例を示す図である。
【図１０】コアデータ要求制御部の一例を示す図である。
【図１１】コアデータ応答制御部の第１の実施例を示す図である。
【図１２】コアデータ応答制御部の第２の実施例を示す図である。
【図１３】多重化転送回路の一例を示す図である。
【図１４】演算処理装置の各機能部の配置位置の一例を示す図である。
【図１５Ａ】演算処理装置によるデータ処理の一例を示すフローチャートである。
【図１５Ｂ】演算処理装置によるデータ処理の一例を示すフローチャートである。
【図１５Ｃ】演算処理装置によるデータ処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照して、演算処理装置の一実施形態を説明する。図１は、演算処理装置の構成の一例を示す図である。図１に示す演算処理装置１は、プロセッサコア１０〜４０、Ｌ２キャッシュ本体の制御を行うＬ２キャッシュコントローラ１２０、Ｌ２キャッシュ本体であるＬ２キャッシュＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１４０、及びメモリアクセス制御部１６０を有する。演算処理装置１は、システムバス２２０を介して、メインメモリ２４０及び外部記憶装置２６０に接続される。Ｌ２キャッシュコントローラ１２０及びＬ２キャッシュＲＡＭ１４０は、Ｌ２キャッシュ１００と称される。
【００１５】
プロセッサコア１０〜４０のそれぞれは、命令制御部、命令実行部、Ｌ１キャッシュコントローラ、及びＬ１キャッシュＲＡＭを有する。プロセッサコア１０〜４０は、Ｌ１キャッシュＲＡＭから命令を読み出して、命令を実行する。プロセッサコア１０〜４０の一例は、図２を用いて後述される。Ｌ１キャッシュコントローラは、ＭＥＳＩプロトコルに従って、Ｌ１キャッシュＲＡＭに記憶されたデータにアクセスする。ＭＥＳＩプロトコルに従うＬ１キャッシュコントローラの動作は、図３を用いて後述される。
【００１６】
Ｌ２キャッシュコントローラ１２０は、Ｌ１キャッシュＲＡＭ及びメインメモリ２４０へのデータの読み出し（ロード）要求又は書き込み（ストア）要求を行い、又は、Ｌ２キャッシュＲＡＭ１４０へのデータのロード又はストアを行う。Ｌ２キャッシュコントローラ１２０は、ＭＥＳＩプロトコルに従って、Ｌ１キャッシュ又はメインメモリ２４０に記憶されたデータと、Ｌ２キャッシュに保持されたデータとの整合性を維持するように、データのロード又はストアを行う。
【００１７】
Ｌ２キャッシュＲＡＭ１４０は、メインメモリ２４０が記憶するデータの一部を保持する。また、Ｌ２キャッシュＲＡＭ１４０は、Ｌ１キャッシュが保持するデータを包含する。Ｌ２キャッシュコントローラ１２０及びＬ２キャッシュＲＡＭ１４０の一例は、図５を用いて後述される。ＭＥＳＩプロトコルに従うＬ２キャッシュコントローラ１２０の動作は、図９を用いて後述される。
【００１８】
メモリアクセス制御部１６０は、メインメモリ２４０からのデータのロード、メインメモリ２４０へのデータのストア、及びメインメモリ２４０のリフレッシュなどの動作を制御する回路である。メモリアクセス制御部１６０は、Ｌ２キャッシュコントローラ１２０から受け取ったロード命令又はストア命令に従って、メインメモリ２４０に対して、ロード又はストアを行う。
【００１９】
システムバス２２０は、演算処理装置１と、外部記憶装置２６０とを繋ぐバスである。システムバス２２０は、ＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）又はＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）  Ｅｘｐｒｅｓｓなどの規格に従って機能する回路である。
【００２０】
メインメモリ２４０は、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。外部記憶装置２６０は、磁気ディスクのディスクアレイ、又はフラッシュメモリを用いたＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等である。
【００２１】
図２は、プロセッサコアの一例を示した図である。図２を用いて、プロセッサコア１０を、Ｌ２キャッシュコントローラにキャッシュデータを要求する「要求元プロセッサコア」として説明し、プロセッサコア２０を、Ｌ２キャッシュコントローラにコアデータを要求される「要求先プロセッサコア」として説明する。
【００２２】
プロセッサコア１０は、命令制御部（ＩＵ：Ｉｎｓｔｒｕｃｔｉｏｎ  Ｕｎｉｔ）１２、命令実行部（ＥＵ：Ｅｘｅｃｕｔｉｏｎ  Ｕｎｉｔ）１４、Ｌ１キャッシュコントローラ１６、Ｌ１キャッシュＲＡＭ１８を有する。Ｌ１キャッシュコントローラ１６は、コアデータ応答制御部１７を有する。
【００２３】
プロセッサコア２０は、ＩＵ１２ａ、ＥＵ１４ａ、Ｌ１キャッシュコントローラ１６ａ、Ｌ１キャッシュＲＡＭ１８ａを有する。プロセッサコア２０の有するこれらの構成要素は、上記したプロセッサコア１０の同じ名称の構成要素と同機能を有する。
【００２４】
命令制御部１２は、Ｌ１キャッシュＲＡＭ１８から読み出した命令を、デコードして、デコード命令及び命令実行に使用されるオペランドを格納するソースレジスタ及び命令実行結果を格納するディスティネーションレジスタを特定するレジスタアドレスを「演算制御信号」として、命令実行部１４に供給する。デコードする命令は、例えば、Ｌ１キャッシュＲＡＭ１８へのロード命令、ストア命令等である。命令制御部１２は、データ要求信号をＬ１キャッシュコントローラ１６に供給することで、Ｌ１キャッシュＲＡＭ１８から命令を読み出す。
【００２５】
命令実行部１４は、レジスタアドレスで特定される命令実行部１４の内部にあるレジスタからデータを取り出し、デコードした命令に従って演算する。命令実行部１４は、デコードされた命令に従って、「データ要求信号」として、ロード命令又はストア命令を、Ｌ１キャッシュコントローラ１６に供給する。Ｌ１キャッシュコントローラ１６は、ロード命令に従って、データを命令実行部１４に供給する。命令実行部１４は、命令の実行を終了すると、次の演算制御信号を受け取るために、演算完了信号を命令制御部１２に供給する。
【００２６】
要求元プロセッサコアであるプロセッサコア１０のＬ１キャッシュコントローラ１６は、キャッシュデータ要求信号ＣＲＱを、信号線ｗ１６−３を介してＬ２キャッシュコントローラ１２０に供給する。そして、プロセッサコア１０は、完了通知であるキャッシュデータ応答信号ＣＲＳ、及び、データ又は命令を、信号線ｗ１６−４を介してＬ２キャッシュコントローラ１２０から受け取る。キャッシュデータ要求信号ＣＲＱの詳細例は、図４を用いて後述される。
【００２７】
要求先プロセッサコアであるプロセッサコア２０のＬ１キャッシュコントローラ１６ａは、コアデータ要求信号ＣＯＲＱを、信号線ｗ２６−２を介してＬ２キャッシュコントローラ１２０から受け取る。そして、プロセッサコア２０は、コアデータ応答信号ＣＯＲＳ、及び要求対象のデータをＬ２キャッシュコントローラ１２０に送信する。コアデータ要求信号ＣＯＲＱの詳細例は、図４を用いて後述される。
【００２８】
コアデータ応答制御部１７は、Ｌ２キャッシュコントローラ１２０から受け取ったコアデータ要求信号ＣＯＲＱから、コアデータ応答信号ＣＯＲＳを生成する。コアデータ応答制御部１７の一例は、図１１又は図１２を用いて後述される。コアデータ要求信号ＣＯＲＱ及びコアデータ応答信号ＣＯＲＳの詳細例は、図４を用いて後述される。
【００２９】
Ｌ１キャッシュＲＡＭ１８は、命令及び／又はデータを記憶し、メインメモリと比して高速な読み出し又は書き込み動作可能な記憶装置である。Ｌ１キャッシュＲＡＭ１８の一例は、図５を用いて後述される。
【００３０】
Ｌ２キャッシュコントローラ１２０は、キャッシュデータ要求信号ＣＲＱから、コアデータ要求信号ＣＯＲＱを生成するコアデータ応答制御部１２７を有する。コアデータ応答制御部１２７の一例は、図１０を用いて後述される。
【００３１】
多重化転送回路１３０は、プロセッサコア１０又は２０から受け取った複数のコアデータ応答信号ＣＯＲＳを多重化して、多重化した信号を、プロセッサコア１０、２０が共通して利用する信号線ｗ２６−３を介して送信する回路である。多重化転送回路１３０は、プロセッサコア１０から供給されるコアデータ応答信号ＣＯＲＳ、並びにデータを信号線ｗ１６−１から受け取り、他コアであるプロセッサコア２０からコアデータ応答信号ＣＯＲＳ、並びにデータを信号線ｗ２６−１から受け取る。
【００３２】
そして、コアデータ応答信号ＣＯＲＳを多重化することで、信号線ｗ２６−３の本数を少なくすることが出来る。キャッシュデータ要求信号ＣＲＱ、及びコアデータ要求信号ＣＯＲＱと異なり、コアデータ応答信号ＣＯＲＳは、データを転送する信号であるため、ビット幅が大きい。そのため、多重化転送回路１３０が、多重化により信号線ｗ２６−１又は信号線ｗ２６−２を選択することで、信号線ｗ２６−３の本数の増加をなくすことが出来る。多重化転送回路１３０の実施例は、図１３を用いて後述される。
【００３３】
図３は、Ｌ１キャッシュの状態情報の状態遷移の一例を示す図である。状態情報は、「Ｍ（Ｍｏｄｉｆｉｅｄ：変更状態）」、「Ｅ（Ｅｘｃｌｕｓｉｖｅ：排他状態）」、「Ｓ（Ｓｈａｒｅｄ：共有状態）」、「Ｉ（Ｉｎｖａｌｉｄａｔｅｄ：無効状態）」の４つの状態のいずれかにある。なお、状態情報の例は、ＭＥＳＩプロトコルに基づいて説明するが、本実施形態で使用可能な状態情報は、ＭＥＳＩプロトコルに限定されず、ＭＥＳＩプロトコルに「Ｏ（Ｏｗｎｅｄ：所有状態）」の状態を加えたＭＯＥＳＩプロトコルであっても良い。または、ＭＥＳＩプロトコルの「Ｅ」の代わりに「Ｏ」を用いたＭＯＳＩプロトコルであっても良い。そのため、ＭＯＥＳＩプロトコル又はＭＯＳＩプロトコルが使用される場合は、「Ｅ」の代わりに「Ｏ」が使用される。よって、そのような場合、下記に示す「Ｅ」の説明は、「Ｏ」の説明として理解しても良い。
【００３４】
「Ｉ」は、Ｌ１キャッシュＲＡＭ１８のラインは、無効状態になっていることを示す。タグの初期状態は「Ｉ」であり、データＲＡＭのラインには「０」が登録される。
【００３５】
複数のプロセッサコアの各々が有するＬ１キャッシュＲＡＭのラインと、メインメモリ２４０のラインとは、図６で後述されるように物理アドレスにより識別される。「Ｓ」は、メインメモリ２４０のラインのデータと、メインメモリ２４０のラインのデータと同じ物理アドレスにより識別され、且つ複数のプロセッサコアの各々が有するＬ１キャッシュＲＡＭのラインのデータと、が全て一致する状態を示す。
【００３６】
「Ｅ」は、「Ｅ」として登録されているＬ１キャッシュＲＡＭ１８のラインのデータと同じ物理アドレスにより識別されるメインメモリ２４０に記憶されるラインのデータとが一致するが、他のＬ１キャッシュＲＡＭのラインのデータとは一致しない状態を示す。「Ｅ」として登録されているデータに対して、プロセッサコアは、他プロセッサコアに対して制御信号を送信することなくデータを変更することが可能である。このとき、プロセッサコアは、データ変更と同時に、データの状態情報を「Ｅ」から「Ｍ」へ変更し（状態遷移ａ７）、他プロセッサコアの状態情報を「Ｉ」にするよう要求する。
【００３７】
「Ｍ」は、「Ｍ」として登録されている１つのプロセッサコアが有するＬ１キャッシュＲＡＭ１８のラインだけにデータが存在することを示す。言い換えれば、「Ｍ」として登録されているＬ１キャッシュＲＡＭ１８のデータは、他のプロセッサコアが有するＬ１キャッシュＲＡＭ又はメインメモリ２４０に保持された同物理アドレスのデータから変更されていることを示す。
【００３８】
「Ｍ」から「Ｉ」への状態遷移ａ１、「Ｓ」から「Ｉ」への状態遷移ａ２、及び「Ｅ」から「Ｉ」への状態遷移ａ３は、他のデータをキャッシュメモリに登録するために、ラインを無効状態にすることにより空きを作成する状態遷移である。
【００３９】
「Ｉ」から「Ｓ」への状態遷移ａ４は、プロセッサコアが、他のキャッシュメモリ上にあるデータを登録したため、データの状態情報が「Ｉ」から「Ｓ」に遷移したことを示す。
【００４０】
「Ｅ」から「Ｓ」への状態遷移ａ５、及び「Ｍ」から「Ｓ」への状態遷移ａ６は、他のプロセッサコアが、Ｌ１キャッシュＲＡＭ１８のデータを要求したため、ラインの状態情報が「Ｅ」又は「Ｍ」から、「Ｓ」に遷移したことを示す。その結果、「Ｓ」として登録されているラインの物理アドレスにより識別されるＬ１キャッシュＲＡＭのラインのデータ及びメインメモリ２４０のラインのデータは、共有状態になる。
【００４１】
「Ｅ」から「Ｍ」への状態遷移ａ７は、プロセッサコアが、Ｌ１キャッシュＲＡＭ１８のデータを書き換えたため、データの状態情報が「Ｅ」から「Ｍ」に遷移したことを示す。
【００４２】
「Ｉ」から「Ｅ」への状態遷移ａ８は、プロセッサコアが、他のプロセッサコアが保持していないデータをＬ１キャッシュＲＡＭ１８に登録したため、データの状態情報が「Ｉ」から「Ｅ」に遷移したことを示す。
【００４３】
「Ｓ」から「Ｅ」への状態遷移ａ９は、プロセッサコアが、他のプロセッサコアに対してデータの無効化を要求したため、データの状態情報が「Ｓ」から「Ｅ」に遷移したことを示す。
【００４４】
図４は、プロセッサコア及びＬ２キャッシュコントローラ間で送信される信号と、状態情報との関係の一例を示した図である。図４に示す表５００は、図２を用いて説明したキャッシュデータ要求信号ＣＲＱの種類と、コアデータ要求信号ＣＯＲＱの種類と、コアデータ応答信号ＣＯＲＳの種類と、Ｌ１キャッシュの状態情報と、Ｌ２キャッシュの状態情報との関係が説明される。
【００４５】
列５０１には、行を特定する行番号が示される。列５０２には、要求元プロセッサコアが出力するキャッシュデータ要求信号ＣＲＱの種類が示される。キャッシュデータ要求信号ＣＲＱは、ロード命令ＬＤを示す信号であるロード信号ＬＤｓ、ストア命令ＳＴを示す信号であるストア信号ＳＴｓ、及びロードストア命令ＬＤＳを特定する信号であるロードストア信号ＬＤＳｓのいずれかである。
【００４６】
ストア命令ＳＴは、要求元プロセッサコアがデータをＬ２キャッシュＲＡＭに書き込む要求を行う命令である。ロードストア命令ＬＤＳは、要求元プロセッサコアがデータを読み出す要求を行う命令であって、読み出したデータを変更してストア命令ＳＴを発行する可能性が高いことを示す要求を行う命令である。ロード命令ＬＤは、要求元プロセッサコアがデータを読み出す要求を行う命令であって、読み出したデータを変更してストア命令ＳＴを発行する可能性が無いことを示す命令である。
【００４７】
なお、要求元プロセッサコアのＬ１キャッシュコントローラ１６は、実行部１４からロード命令を受け取ると、図５を用いて後述されるＴＬＢ３１０のデータ種別情報１１１０を参照することで、ロードストア命令及びロード命令の何れかを生成する。対象データが変更可能な場合、要求元プロセッサコアがデータを取得した後に、データを変更し且つストア命令を発行する可能性が高いため、要求元プロセッサコアは、ロードストア命令を出力する。
【００４８】
一方、対象データが変更可能ではない場合、要求元プロセッサコアは、ロード命令ＬＤを出力する。
【００４９】
列５０３には、Ｌ２キャッシュコントローラ１２０から要求先プロセッサコアに供給されるコアデータ要求信号ＣＯＲＱが示される。
【００５０】
コアデータ要求信号ＣＯＲＱは、ＭＢ−ＳＨ信号、ＭＢ−ＳＨ−ＩＶ信号、及びＭＢ−ＩＶ信号のいずれかである。
【００５１】
ＭＢ−ＳＨ信号は、Ｌ１及びＬ２キャッシュの状態情報を、「Ｓ」にすることを要求する信号である。要求先プロセッサコアが、ＭＢ−ＳＨ信号を、Ｌ２キャッシュコントローラ１２０に送信するときは、同時に要求対象のデータも送信する。
【００５２】
ＭＢ−ＩＶ信号は、Ｌ１及びＬ２キャッシュの状態情報を、「Ｉ」にすることを要求する信号である。要求先プロセッサコアが、ＭＢ−ＩＶ信号を、Ｌ２キャッシュコントローラ１２０に送信するときは、同時に要求対象のデータも送信する。
【００５３】
ＭＢ−ＳＨ−ＩＶ信号は、要求先プロセッサコアのＬ１キャッシュの状態情報を「Ｓ」又は「Ｉ」にすることを要求する信号である。
【００５４】
Ｌ２キャッシュコントローラ１２０は、キャッシュデータ要求信号ＣＲＱの種類に従って、上記したＭＢ−ＳＨ信号、ＭＢ−ＳＨ−ＩＶ信号、及びＭＢ−ＩＶ信号のいずれかを要求先プロセッサコアに供給する。なお、要求先プロセッサコアとして特定されるプロセッサコアは、要求対象データを状態情報「Ｅ」で保持するプロセッサコアである。図８で後述されるように、Ｌ２キャッシュコントローラ１２０は、Ｌ２キャッシュＲＡＭで保持されたデータの状態情報が「Ｅ」の場合、「Ｅ」で保持するプロセッサコアを特定するコア特定情報１２１０を、「Ｅ」で示されるラインと同じラインに保持している。そのため、Ｌ２キャッシュコントローラ１２０は、コア特定情報１２１０を参照することで、要求対象データを状態情報「Ｅ」で保持するプロセッサコアを特定することが出来る。
【００５５】
行番号５１１及び５１２に示されるように、Ｌ２キャッシュコントローラ１２０は、ロード命令ＬＤを受け取った場合、ＭＢ−ＳＨ信号を要求先プロセッサコアに供給する。
【００５６】
行番号５１３〜５１５に示されるように、Ｌ２キャッシュコントローラ１２０は、ロードストア信号ＬＤＳｓを受け取った場合、ＭＢ−ＳＨ−ＩＶ信号を要求先プロセッサコアに供給する。
【００５７】
行番号５１６及び５１７に示されるように、Ｌ２キャッシュコントローラ１２０は、ストア命令ＳＴを受け取った場合、ＭＢ−ＩＶ信号を要求先プロセッサコアに供給する。
【００５８】
列５０４には、要求先プロセッサコアが、コアデータ要求信号ＣＯＲＱを受け取る前のＬ１キャッシュＲＡＭの状態情報が示される。列５０４に示す要求先コア状態情報には、「Ｅ」又は「Ｍ」が示される。
【００５９】
列５０５には、要求先プロセッサコアがコアデータ応答信号ＣＯＲＳをＬ２キャッシュコントローラに送信した後で、要求先プロセッサコアが更新した状態情報が示される。
【００６０】
列５０６には、要求先プロセッサコアからＬ２キャッシュコントローラ１２０へ送信されるコアデータ応答信号ＣＯＲＳが示される。列５０７には、要求先プロセッサコアからＬ２キャッシュコントローラ１２０に要求対象のデータが転送されたか否かが示される。列５０８には、キャッシュデータ応答信号ＣＲＳを受け取った後で、更新される要求元プロセッサコアの状態情報が示される。
【００６１】
コアデータ応答信号ＣＯＲＳは、ＭＢ−ＳＨ信号、ＭＢ−ＩＶ信号、ＮＯ−ＭＢ−ＳＨ信号、及びＮＯ−ＭＢ−ＩＶ信号がある。ＭＢ−ＳＨ信号及びＭＢ−ＩＶ信号は、上記説明した通りである。
【００６２】
ＮＯ−ＭＢ−ＳＨ信号は、要求先プロセッサコアから要求対象データを送信せずに、Ｌ１及びＬ２キャッシュの要求対象データと同じ物理アドレスにより特定されるラインの状態情報を、「Ｓ」にすることを要求する信号である。ＮＯ−ＭＢ−ＳＨ信号は、「データ未変更通知信号」とも呼ばれる。
【００６３】
ＮＯ−ＭＢ−ＩＶ信号は、要求先プロセッサコアから要求対象となるデータを送信せずに、Ｌ１及びＬ２キャッシュの要求対象データと同じ物理アドレスにより特定されるラインの状態情報を、「Ｉ」にすることを要求する信号である。
【００６４】
要求先プロセッサコアのＬ１キャッシュコントローラ１６ａは、保持する要求対象データの状態情報に従って、ＭＢ−ＳＨ信号、ＭＢ−ＩＶ信号、ＮＯ−ＭＢ−ＳＨ信号、及びＮＯ−ＭＢ−ＩＶ信号のいずれかを出力する。
【００６５】
行番号５１１には、キャッシュデータ要求信号ＣＲＱが「ロード命令」であり、要求先プロセッサコアの対象データ状態情報が「Ｅ」のケースにおいて、転送される信号と、状態情報の遷移とが示される。このケースでは、要求先プロセッサコアは、ＮＯ−ＭＢ−ＳＨ信号をＬ２キャッシュコントローラ１２０に送信し、要求対象データを送信しない。
【００６６】
要求先プロセッサコアが要求対象データを送信しないのは、要求先プロセッサコアで保持する要求対象データの状態情報が「Ｍ」ではないため、Ｌ２キャッシュで保持するデータと、要求先プロセッサコアで保持するデータが一致するためである。ＮＯ−ＭＢ−ＳＨを受け取ったＬ２キャッシュコントローラ１２０は、Ｌ２キャッシュＲＡＭで保持する対象データを、要求元プロセッサコアに送信する。このように、演算処理装置１は、未更新のデータを、要求先プロセッサコアからＬ２キャッシュコントローラ１２０へ送信するという、不要なデータ転送を無くすことが出来る。
【００６７】
また、要求先プロセッサコアは、ＮＯ−ＭＢ−ＳＨ信号送信後、要求対象データの状態情報を、「Ｓ」に更新する。また、キャッシュデータ応答信号ＣＲＳを受け取った要求元プロセッサコアは、要求対象データの状態情報を、「Ｓ」に更新する。
【００６８】
行番号５１２には、キャッシュデータ要求信号ＣＲＱが「ロード命令」であり、要求先プロセッサコアの対象データ状態情報が「Ｍ」のケースにおいて、転送される信号と、状態情報の遷移とが示される。このケースでは、要求先プロセッサコアは、ＭＢ−ＳＨ信号及び要求対象データをＬ２キャッシュコントローラ１２０に送信する。さらに、要求先プロセッサコアは、ＭＢ−ＳＨ信号送信後に、要求対象データの状態情報を、「Ｓ」に更新する。また、キャッシュデータ応答信号ＣＲＳを受け取った要求元プロセッサコアは、要求対象データの状態情報を、「Ｓ」に更新する。
【００６９】
このように、ＭＢ−ＳＨ信号を送信後、要求先プロセッサコア及び要求元プロセッサコアのデータの状態情報を「Ｓ」に更新するのは、ロード命令ＬＤは、データの変更を行わないことを特定したロード命令であるためである。状態情報が「Ｓ」であるため、他のプロセッサコア３０、４０が要求元プロセッサコアになり、同じデータにアクセスする際に、要求先プロセッサコアの状態情報を「Ｉ」又は「Ｍ」から、「Ｓ」に変更するという制御信号の送信を不要にすることが出来る。
【００７０】
行番号５１３に示す例は、図１１に示す第１の実施例に係るコアデータ応答制御部により、コアデータ応答信号ＣＯＲＳを送信する例である。
【００７１】
行番号５１３に示すように、コアデータ要求信号ＣＯＲＱがＭＢ−ＳＨ−ＩＶであり、且つＬ１キャッシュで保持された要求対象データの状態情報が「Ｅ」のケースでは、ＮＯ−ＭＢ−ＳＨ信号が送信される。要求先プロセッサコアは、ＮＯ−ＭＢ−ＳＨ信号送信後に、要求対象データの状態情報を、「Ｓ」に更新する。また、キャッシュデータ応答信号ＣＲＳを受け取った要求元プロセッサコアは、要求対象データの状態情報を、「Ｓ」に更新する。
【００７２】
行番号５１１に示すケースと同様に、要求先プロセッサコアの状態情報が「Ｅ」の場合、要求先プロセッサコアで保持する要求対象データと、Ｌ２キャッシュで保持する要求対象データが一致する。そのため、要求先プロセッサコアからＬ２キャッシュコントローラ１２０へのデータ転送を行わないことで、演算処理装置１は、不要なデータ転送を無くすことが出来る。
【００７３】
行番号５１４に示す信号生成は、図１２に示す第２の実施例に係るコアデータ応答制御部により、コアデータ応答信号ＣＯＲＳを送信する例である。
【００７４】
行番号５１４に示すように、コアデータ要求信号ＣＯＲＱがＭＢ−ＳＨ−ＩＶであり、且つＬ１キャッシュで保持された要求対象データの状態情報が「Ｅ」のケースでは、ＮＯ−ＭＢ−ＩＶ信号が送信される。要求先プロセッサコアは、ＮＯ−ＭＢ−ＳＨ信号送信後に、要求対象データの状態情報を、「Ｉ」に更新する。また、キャッシュデータ応答信号ＣＲＳを受け取った要求元プロセッサコアは、要求対象データの状態情報を、「Ｅ」に更新する。
【００７５】
このように、要求先プロセッサコアの状態情報を「Ｉ」に更新することで、要求元プロセッサコアの状態情報を「Ｅ」に更新することが出来る。ロードストア信号ＬＤＳｓで取得したデータは、変更可能なデータであるため、要求元プロセッサコアによりデータが変更され、ストア命令が出力される可能性が高い。そのため、データ送信後に、要求先プロセッサコアの状態を「Ｉ」に更新することで、要求元プロセッサコアは、要求先プロセッサコアの状態情報を、「Ｓ」から「Ｉ」に遷移させるように制御信号を送信する必要は無い。よって、演算処理装置１は、無駄な制御信号の送信を不要にすることが出来る。
【００７６】
行番号５１５に示すように、コアデータ要求信号ＣＯＲＱがＭＢ−ＳＨ−ＩＶであり、且つＬ１キャッシュで保持された要求対象データの状態情報が「Ｍ」のケースでは、ＭＢ−ＩＶ信号が送信される。
【００７７】
要求先プロセッサコアは、ＭＢ−ＩＶ信号送信と同時に、要求対象データの状態情報を、「Ｉ」に更新する。また、キャッシュデータ応答信号ＣＲＳを受け取った要求元プロセッサコアは、要求対象データの状態情報を、「Ｅ」に更新する。これらは、行番号５１４で説明した状態遷移と同じである。ロードストア信号ＬＤＳｓで取得したデータが、変更可能なデータであるためである。
【００７８】
データ送信後に、要求先プロセッサコアの状態を「Ｉ」に更新することで、要求先プロセッサコアは、ロードストア信号ＬＤＳｓで取得したデータの状態を「Ｓ」から「Ｉ」に遷移させることなく、変更することが出来る。よって、演算処理装置１は、無駄な制御信号の送信を不要にすることが出来る。
【００７９】
行番号５１６に示すように、コアデータ要求信号ＣＯＲＱがＭＢ−ＩＶであり、且つＬ１キャッシュで保持された要求対象データの状態情報が「Ｅ」のケースでは、ＮＯ−ＭＢ−ＩＶ信号が送信される。要求先プロセッサコアは、ＮＯ−ＭＢ−ＩＶ信号送信後に、要求対象データの状態情報を、「Ｉ」に更新する。また、キャッシュデータ応答信号ＣＲＳを受け取った要求元プロセッサコアは、要求対象データの状態情報を、「Ｅ」に更新する。
【００８０】
行番号５１１及び５１３に示す例と同様に、要求先プロセッサコアの状態情報が「Ｅ」の場合、要求先プロセッサコアで保持する要求対象データと、Ｌ２キャッシュで保持する要求対象データが一致する。そのため、要求先プロセッサコアからＬ２キャッシュコントローラへのデータ転送を行わないことで、演算処理装置１は、不要なデータ転送を無くすことが出来る。
【００８１】
行番号５１７に示すように、コアデータ要求信号ＣＯＲＱがＭＢ−ＩＶであり、且つＬ１キャッシュで保持された要求対象データの状態情報が「Ｍ」のケースでは、ＭＢ−ＩＶ信号が送信される。要求先プロセッサコアは、ＭＢ−ＩＶ信号送信後に、要求対象データの状態情報を、「Ｉ」に更新する。また、キャッシュデータ応答信号ＣＲＳを受け取った要求元プロセッサコアは、要求対象データの状態情報を、「Ｅ」に更新する。
【００８２】
図５は、Ｌ１キャッシュＲＡＭの一例を示す図である。Ｌ１キャッシュＲＡＭ１８は、Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ（ＴＬＢ）３１０、タグＲＡＭ３２０、Ｌ１データＲＡＭ３４０、等価性比較回路３５０、及びヒットウェイ信号選択回路３６０、及びウェイ選択回路３７０を有する。
【００８３】
ロード動作では、Ｌ１キャッシュコントローラ１６は、タグＲＡＭ３２０又はＬ１データＲＡＭ３４０へインデックスアドレスを供給して、インデックスアドレスで特定されるラインからデータを読み出す。
【００８４】
ストア動作では、Ｌ１キャッシュコントローラ１６は、書き込み許可信号ＷＥ、インデックスアドレス、及び書込データＷＤをタグＲＡＭ３２０又はＬ１データＲＡＭ３４０へ供給して、インデックスアドレスで特定されるラインに登録する。
【００８５】
ＴＬＢ３１０は、論理アドレス（仮想アドレス）を物理アドレスに変換する。言い換えれば、ＴＬＢ３１０は、Ｌ１キャッシュコントローラ１６より供給される仮想アドレスと一意に対応する物理アドレスを、等価性比較回路３９０に供給する。
【００８６】
ＴＬＢ３１０は、インデックスアドレスにより特定されるラインから、物理アドレスの上位アドレスを出力する回路である。ＴＬＢ３１０は、仮想ページ番号を構成する仮想アドレスの上位アドレスを保持するタグ部と、物理アドレスの上位アドレスを保持するデータ部を有する。ＴＬＢ３１０は、Ｌ１キャッシュコントローラ１６より仮想アドレスを受け取る。ＴＬＢ３１０は、受け取った仮想アドレスの一部を、タグ部及びデータ部のエントリを選択するインデックスアドレスとして使用する。ＴＬＢ３１０は、Ｌ１キャッシュコントローラから受け取った仮想アドレスの上位アドレスと、タグ部に保持された仮想アドレスの上位アドレスとが一致する場合、同じエントリのデータ部の物理アドレスを、等価性比較回路３５０に供給する。ＴＬＢ３１０に保持されたデータのデータ構造は、図６で後述される。
【００８７】
タグＲＡＭ３２０は、例えば、ｎウェイセットアソシアティブ型のＲＡＭである。ｎウェイセットアソシアティブ型ＲＡＭとは、１つのインデックスアドレスにより、ｎのラインが選択されるＲＡＭをいう。タグＲＡＭ３２０は、ｎ個のウェイを有するが、説明の容易のため、図５には１つのウェイが示される。タグＲＡＭ３２０は、ライトアンプ３２１、ロウデコーダ３２２、メモリセル３２３、カラムデコーダ３２４、列選択回路３２６、及びセンスアンプ３２８を有する。
【００８８】
タグＲＡＭ３２０は、Ｌ１キャッシュコントローラ１６より仮想アドレスを受け取る。タグＲＡＭ３２０は、受け取った仮想アドレスの一部を、タグ部及びデータ部のエントリを選択するインデックスアドレスとして使用する。
【００８９】
インデックスアドレスは、メモリセルのワード線及びビット線を特定する。ロウデコーダ３２２は、インデックスアドレスの上位アドレスであるロウアドレスをデコードすることで、メモリセル３２３のワード線を活性化する。活性化したワード線に接続されたメモリセルは、ビット線の電位を変化させる。カラムデコーダ３２４は、インデックスアドレスの下位ビットであるカラムアドレスをデコードすることで、ビット線を特定し、特定したビット線特定信号を列選択回路３２６に供給する。列選択回路３２６は、ビット線特定信号により示されるビット線を選択する。
【００９０】
センスアンプ３２８は、ビット線の電位変化を増幅する。センスアンプ３２８は、書き込み許可信号ＷＥ（Ｗｒｉｔｅ  Ｅｎａｂｌｅ）が供給されていないときに増幅動作を行う。ライトアンプ３２１は、書き込み許可信号ＷＥが供給されている場合、書込データＷＤ（Ｗｒｉｔｅ  Ｄａｔａ）の信号を、カラムデコーダが特定するビット線に供給する。ビット線に書込データＷＤの信号が供給されると、ビット線と、ロウデコーダ３２２により活性化されたワード線とで特定されるメモリセルにデータが書き込まれる。
【００９１】
タグＲＡＭ３２０のラインは、物理アドレスの上位アドレスを特定するタグ並びに状態情報を保持する。タグＲＡＭ３２０のラインに保持されたデータの構造は、図６を用いて後述される。
【００９２】
等価性比較回路３５０は、センスアンプ３２８から出力されたタグと、ＴＬＢ３１０から出力されたタグを比較する。２つのタグが一致する（以下、「キャッシュヒット」といつ）と、等価性比較回路３５０は、キャッシュヒット信号をヒットウェイ信号選択回路３６０に供給する。タグが不一致になる（以下、「キャッシュミス」という）と、キャッシュミス信号をＬ１キャッシュコントローラ１６に供給する。
【００９３】
ヒットウェイ信号選択回路３６０は、複数のウェイから出力されたキャッシュヒット信号を受け取って、どのウェイでキャッシュヒットが生じたかを特定するヒットウェイ選択信号を、ウェイ選択回路３７０に供給する。
【００９４】
Ｌ１データＲＡＭ３４０は、ライトアンプ３４１、ロウデコーダ３４２、メモリセル３４３、カラムデコーダ３４４、列選択回路３４６、及びセンスアンプ３４８を有する。ライトアンプ３４１、ロウデコーダ３４２、メモリセル３４３、カラムデコーダ３４４、列選択回路３４６、及びセンスアンプ３４８は、それぞれタグＲＡＭ３２０で説明した同じ名前の要素と同じ動作をするため説明を省略する。
【００９５】
Ｌ１データＲＡＭのラインは、データ又は命令が記憶される。タグＲＡＭ３２０と同一のインデックスアドレスで特定されるラインからデータが、センスアンプ３４８により読み出される。
【００９６】
ウェイ選択回路３７０は、各ウェイから読み出したデータ（ＲＤ：Ｒｅａｄ Ｄａｔａ）を受け取る。そして、ウェイ選択回路３７０は、ヒットウェイ信号選択回路３６０から供給されるヒット選択信号により、読出データＲＤを選択する。ウェイ選択回路３７０は、選択された読出データＲＤを、Ｌ１キャッシュコントローラ１６に供給する。
【００９７】
図６は、Ｌ１キャッシュのタグＲＡＭのデータ構造、及びＴＬＢのデータ構造の一例を示す図である。１０００は、タグＲＡＭ３２０のラインのデータ構造を示し、１１００は、ＴＬＢ３１０のラインのデータ構造を示す。
【００９８】
タグＲＡＭ３２０のデータ構造１０００は、状態情報１０２０、及び物理アドレスの上位アドレス１０３０を有する。図３で示したように、状態情報１０２０は、ラインの状態が「Ｍ」、「Ｅ」、「Ｓ」、「Ｉ」の４つの状態のいずれかにあるかを特定する。状態情報１０２０は、例えば、２ビットである。１０３０に示されるように、タグは、物理アドレスの上位アドレスである。
【００９９】
ＴＬＢ３１０のデータ構造１１００は、データ種別情報１１１０、物理アドレスの上位アドレス１１２０、及び仮想アドレスの上位アドレス１１３０を有する。データ種別情報１１１０は、物理アドレスで特定されるデータが変更可能なデータか、又は変更不可能なデータかを特定する情報である。例えば、データが、プログラムの命令に関する場合、当該データを変更することは出来ないので、データ種別情報１１１０は無効を示す。一方、データが、変更可能なデータの場合、データ種別情報１１１０は有効を示す。
【０１００】
仮想アドレスの上位アドレス１１３０は、Ｌ１キャッシュコントローラ１６から供給される仮想アドレスとの比較に使用される。物理アドレスの上位アドレス１１２０は、等価性比較回路３５０で、タグＲＡＭ３２０から出力される物理アドレスとの比較に使用される。
【０１０１】
図７は、Ｌ２キャッシュＲＡＭの一例を示す図である。Ｌ２キャッシュＲＡＭ１４０は、タグＲＡＭ４２０、Ｌ２データＲＡＭ４４０、等価性比較回路４５０、及びヒットウェイ信号選択回路４６０、及びウェイ選択回路４７０を有する。
【０１０２】
Ｌ２キャッシュＲＡＭ１４０は、Ｌ１キャッシュコントローラ１６から供給される、キャッシュデータ要求信号ＣＲＱには、物理アドレスが含まれるため、ＴＬＢは有さない。図７に示されるＬ２キャッシュＲＡＭ１４０の構成要素は、Ｌ１キャッシュＲＡＭ１８において説明された同じ名前で特定される構成要素と同じ動作をするので、説明を省略する。
【０１０３】
図８は、Ｌ２キャッシュのタグＲＡＭに保持されたデータのデータ構造の一例を示す図である。１２００は、図７に示すタグＲＡＭ４２０に保持されたデータのデータ構造を示し、１２１０は、データを保持するプロセッサコアを特定するコア特定情報を示す。１２３０は、物理アドレスを示す。コア特定情報１２１０は、状態情報が「Ｅ」又は「Ｍ」のデータを保持するプロセッサコアを特定する。状態情報１２２０は、ラインの状態が「Ｅ」、「Ｓ」、「Ｉ」の３つの状態のいずれにあるかを特定する。
【０１０４】
プロセッサコアで保持するデータの状態情報１０２０が「Ｅ」又は「Ｍ」の場合、状態情報１２２０は、「Ｉ」である。そのため、Ｌ２キャッシュコントローラ１２０が、要求先プロセッサコアにコアデータを要求する場合、タグＲＡＭ４２０の状態情報１２２０は、「Ｉ」である。状態情報１２２０は、例えば、２ビットである。物理アドレス１２３０は、タグＲＡＭ４２０のインデックスアドレスで特定されるデータが記憶されるメインメモリの物理アドレスを特定する。
【０１０５】
上記説明では、コア特定情報１２１０と、状態情報１２２０とを区別して説明されたが、コア特定情報１２１０と、状態情報１２２０とを合わせて、「状態情報」と称されても良い。
【０１０６】
図９は、Ｌ２キャッシュの状態情報の状態遷移の一例を示す図である。状態情報は、「Ｅ」、「Ｓ」、「Ｉ」の３つの状態のいずれかにある。
【０１０７】
「Ｉ」から「Ｓ」への状態遷移ａ１１は、他プロセッサコアからデータを取得したため、取得したデータを記憶するＬ２データＲＡＭ４４０のラインの状態情報が「Ｉ」から「Ｓ」に遷移したことを示す。
【０１０８】
「Ｓ」から「Ｉ」への状態遷移ａ１２は、他のデータを登録するためにラインを無効化するため、状態情報が「Ｓ」から「Ｉ」に遷移したことを示す。
【０１０９】
「Ｉ」から「Ｅ」への状態遷移ａ１３は、他プロセッサコアからデータを取得し、且つ他のプロセッサコアのラインを「Ｉ」に変更したため、取得したデータを記憶するＬ２データＲＡＭ４４０のラインの状態情報が「Ｉ」から「Ｅ」に遷移したことを示す。
【０１１０】
「Ｅ」から「Ｉ」への状態遷移ａ１４は、他のデータを登録するためにラインを無効化するため、状態情報が「Ｓ」から「Ｉ」に遷移したことを示す。
【０１１１】
「Ｅ」から「Ｓ」への状態遷移ａ１５は、他コアからのコアデータ要求によって、コア内データを他コアに転送することで、転送データを記憶するラインの状態情報が「Ｅ」から「Ｓ」へ遷移したことを示す。
【０１１２】
「Ｓ」から「Ｅ」への状態遷移ａ１６は、他コアへデータの無効化要求を行うことで、当該無効化の対象となったデータを記憶するラインの状態情報が「Ｓ」から「Ｅ」へ遷移したことを示す。
【０１１３】
図１０は、コアデータ応答制御部１２７の一例を示す図である。コアデータ応答制御部１２７は、コアデータ要求信号ＣＯＲＱの種類に応じて、要求先プロセッサコアからデータを読み出す信号を選択する。そして、コアデータ応答制御部１２７は、Ｌ２キャッシュタグの状態情報が「Ｅ」のときだけ、コアデータ要求信号ＣＯＲＱを要求先プロセッサコアに供給する回路である。図１０に示すように、コアデータ応答制御部１２７は、要求判別回路１３１、Ｌ２状態情報判別回路１３２、及びＡＮＤ回路（論理積回路）１３３Ａ、１３３Ｂ、１３３Ｃを有する。
【０１１４】
要求判別回路１３１は、キャッシュデータ要求信号ＣＲＱを受け取ると、キャッシュデータ要求信号ＣＲＱのうち信号種類を特定するビット信号を用いて、信号種類を判別する。判別した信号種類がＬＤである場合、要求判別回路１３１は、ＡＮＤ回路１３３Ａにロード信号ＬＤｓを出力する。判別した信号種類がＬＤＳである場合、要求判別回路１３１は、ＡＮＤ回路１３３Ｂにロードストア信号ＬＤＳｓを出力する。判別した信号種類がＳＴである場合、要求判別回路１３１は、ＡＮＤ回路１３３Ｃにストア信号ＳＴｓを出力する。
【０１１５】
また、要求判別回路１３１は、キャッシュデータ要求信号ＣＲＱのうち要求アドレスを特定する信号をＬ２状態情報判別回路に供給する。
【０１１６】
Ｌ２状態情報判別回路１３２は、要求アドレスを受け取ると、要求アドレスをもとに、図７に示すタグＲＡＭ４２０から状態情報を取得する。取得した状態情報が「Ｅ」である場合、状態情報が「Ｅ」を示すＥｓ信号を出力する。状態情報が「Ｅ」以外の場合、Ｌ２状態情報判別回路１３２は、Ｅｓ信号を出力しない。
【０１１７】
ＡＮＤ回路１３３Ａは、ＳＴ信号及びＥｓ信号を受け取ると、ＭＢ−ＳＨ信号を要求先プロセッサコア２０に供給する。ＡＮＤ回路１３３Ｂは、ロードストア信号ＬＤＳｓ及びＥｓ信号を受け取ると、ＭＢ−ＳＨ信号を要求先プロセッサコア２０に供給する。ＡＮＤ回路１３３Ｃは、ロード信号ＬＤｓ及びＥｓ信号を受け取ると、ＭＢ−ＩＶ信号を要求先プロセッサコア２０に供給する。
【０１１８】
図１１は、コアデータ応答制御部の第１の実施例を示す図である。第１の実施例に係るコアデータ応答制御部１７ａは、コアデータ応答制御部１７ａは、コアデータ要求信号ＣＯＲＱの種類、並びに、要求されたコアデータの状態情報に従って決まるコアデータ応答信号ＣＯＲＳをＬ２キャッシュコントローラに供給する回路である。また、コアデータ応答制御部１７ａは、図４の行番号５１３に示すＮＯ−ＭＢ−ＳＨ信号の生成を行う。
【０１１９】
図１１に示すように、コアデータ応答制御部１７ａは、要求判別回路１７１ａ、Ｌ１状態情報判別回路１７２ａ、ＡＮＤ回路（論理積回路）１７３Ａ〜１７６Ａ、及びＯＲ回路（論理和回路）１８１Ａ、及び１８２Ａを有する。
【０１２０】
要求判別回路１７１ａは、コアデータ要求信号ＣＯＲＱを受け取ると、コアデータ要求信号ＣＯＲＱが、ＭＢ−ＳＨ信号、ＭＢ−ＳＨ−ＩＶ信号、及びＭＢ−ＩＶ信号のいずれであるかを判別する。判別した信号種類がＭＢ−ＳＨ信号である場合、要求判別回路１７１は、ＯＲ回路１８１Ａ及びＡＮＤ回路１７３ＡにＭＢ−ＳＨ信号を供給する。判別した信号種類がＭＢ−ＳＨ−ＩＶ信号である場合、要求判別回路１７１ａは、ＯＲ回路１８１Ａ及びＯＲ回路１８２ＡにＭＢ−ＳＨ−ＩＶ信号を供給する。判別した信号種類がＭＢ−ＩＶ信号である場合、要求判別回路１７１ａは、ＯＲ回路１８２Ａ及びＡＮＤ回路１７４ＡにＭＢ−ＳＨ信号を供給する。
【０１２１】
また、要求判別回路１７１ａは、受け取った要求アドレスを、Ｌ１状態情報判別回路１７２に供給する。
【０１２２】
Ｌ１状態情報判別回路１７２ａは、要求アドレスを受け取ると、要求アドレスをもとに、タグＲＡＭ４２０から対象となるコアデータの状態情報を取得する。取得した状態情報が「Ｅ」である場合、Ｌ１状態情報判別回路１７２ａは、Ｅｓ信号をＡＮＤ回路１７３Ａ及びＡＮＤ回路１７４Ａに出力する。取得した状態情報が「Ｍ」である場合、Ｌ１状態情報判別回路１７２ａは、状態情報が「Ｍ」であることを示すＭｓ信号をＡＮＤ回路１７５Ａ及びＡＮＤ回路１７６Ａに供給する。
【０１２３】
ＯＲ回路１８１Ａは、ＭＢ−ＳＨ信号及びＭＢ−ＳＨ−ＩＶ信号を受け取ると、出力信号を１７３Ａに供給する。ＯＲ回路１８２Ａは、ＭＢ−ＩＶ信号及びＭＢ−ＳＨ−ＩＶ信号を受け取ると、出力信号を１７６Ａに供給する。
【０１２４】
ＡＮＤ回路１７３Ａは、ＯＲ回路１８１Ａの出力信号、及びＥｓ信号を受け取ると、ＮＯ−ＭＢ−ＳＨ信号をＬ２キャッシュコントローラに供給する。ＡＮＤ回路１７４Ａは、Ｅｓ信号及びＭＢ−ＩＶ信号を受け取ると、ＮＯ−ＭＢ−ＩＶ信号をＬ２キャッシュコントローラに供給する。ＡＮＤ回路１７５Ａは、Ｍｓ信号及びＭＢ−ＳＨ信号を受け取ると、ＭＢ−ＳＨ信号をＬ２キャッシュコントローラに供給する。ＡＮＤ回路１７６Ａは、ＯＲ回路１８２Ａの出力信号、及びＭｓ信号を受け取ると、ＭＢ−ＩＶ信号をＬ２キャッシュコントローラに供給する。
【０１２５】
図１２は、コアデータ応答制御部の第２の実施例を示す図である。第２の実施例に係るコアデータ応答制御部１７ｂは、コアデータ要求信号ＣＯＲＱの種類、並びに、要求されたコアデータの状態情報に従って決まるコアデータ応答信号ＣＯＲＳをＬ２キャッシュコントローラに供給する回路である。また、コアデータ応答制御部１７ｂは、図４の行番号５１４に示すＮＯ−ＭＢ−ＳＨ信号の生成を行う。
【０１２６】
図１２に示すように、コアデータ応答制御部１７ｂは、要求判別回路１７１Ｂ、Ｌ１状態情報判別回路１７２Ｂ、ＡＮＤ回路１７３Ｂ〜１７６Ｂ、及びＯＲ回路１８１Ｂ、及び１８２Ｂを有する。
【０１２７】
要求判別回路１７１Ｂは、コアデータ要求信号ＣＯＲＱを受け取ると、コアデータ要求信号ＣＯＲＱが、ＭＢ−ＳＨ信号、ＭＢ−ＳＨ−ＩＶ信号、及びＭＢ−ＩＶ信号のいずれであるかを判別する。判別した信号種類がＭＢ−ＳＨ信号である場合、要求判別回路１７１は、ＡＮＤ回路１７３Ｂ、１７５ＢにＭＢ−ＳＨ信号を供給する。判別した信号種類がＭＢ−ＳＨ−ＩＶ信号である場合、要求判別回路１７１Ｂは、ＯＲ回路１８１Ｂ及びＯＲ回路１８２ＢにＭＢ−ＳＨ−ＩＶ信号を供給する。判別した信号種類がＭＢ−ＩＶ信号である場合、要求判別回路１７１Ｂは、ＯＲ回路１８１Ｂ及びＯＲ回路１８２ＢにＭＢ−ＳＨ信号を供給する。
【０１２８】
また、要求判別回路１７１Ａは、受け取った要求アドレスを、Ｌ１状態情報判別回路１７２Ｂに供給する。
【０１２９】
Ｌ１状態情報判別回路１７２Ａは、要求アドレスを受け取ると、要求アドレスをもとに、タグＲＡＭ４２０から対象となるコアデータの状態情報を取得する。取得した状態情報が「Ｅ」である場合、Ｌ１状態情報判別回路１７２ａは、Ｅｓ信号をＡＮＤ回路１７３Ｂ及びＡＮＤ回路１７４Ｂに出力する。取得した状態情報が「Ｍ」である場合、Ｌ１状態情報判別回路１７２Ｂは、Ｍｓ信号をＡＮＤ回路１７５Ｂ及びＡＮＤ回路１７６Ｂに供給する。
【０１３０】
ＯＲ回路１８１Ａは、ＭＢ−ＳＨ−ＩＶ信号及びＭＢ−ＩＶ信号を受け取ると、出力信号を１７４Ｂに供給する。ＯＲ回路１８２Ａは、ＭＢ−ＳＨ−ＩＶ信号及びＭＢ−ＩＶ信号を受け取ると、出力信号を１７６Ｂに供給する。
【０１３１】
ＡＮＤ回路１７３Ｂは、ＭＢ−ＳＨ信号、及びＥｓ信号を受け取ると、ＮＯ−ＭＢ−ＳＨ信号をＬ２キャッシュコントローラに供給する。ＡＮＤ回路１７４Ｂは、Ｅｓ信号及びＯＲ回路１８１Ｂの出力信号を受け取ると、ＮＯ−ＭＢ−ＩＶ信号をＬ２キャッシュコントローラに供給する。ＡＮＤ回路１７５Ｂは、Ｍｓ信号及びＭＢ−ＳＨ信号を受け取ると、ＭＢ−ＳＨ信号をＬ２キャッシュコントローラに供給する。ＡＮＤ回路１７６Ｂは、ＯＲ回路１８２Ｂの出力信号、及びＭｓ信号を受け取ると、ＭＢ−ＩＶ信号をＬ２キャッシュコントローラに供給する。
【０１３２】
図１３は、多重化転送回路の一例を示す図である。多重化転送回路１３０は、バスセレクタ１３６、及び干渉制御バッファ１３７を有する。バスセレクタ１３６は、プロセッサコア１０からの転送データ、及び、プロセッサコア２０からの転送データの何れかを選択して、Ｌ２キャッシュコントローラ１２０に供給するように動作する。転送データは、コアデータ応答信号ＣＯＲＳ、及びコアデータである。
【０１３３】
プロセッサコアからの転送データは、システムクロック２サイクルのうち１つのサイクルと同期して転送される。バスセレクタ１３６は、選択された信号線を伝送する転送データの「ハイ」又は「ロー」の変化を検出して、未選択の信号線に切り替える。バスセレクタ１３６は、いずれの信号線を選択しているかを特定する選択信号を、干渉制御バッファ１３７に供給する。
【０１３４】
干渉制御バッファ１３７は、転送データが同じシステムクロックに同期して転送された場合、選択信号により特定される未選択の信号線を伝送する転送データをバッファリングする。そして、バスセレクタ１３６が、未選択の信号線に切り替えたとき、バッファリングした信号を、バスセレクタ１３６に供給する。
【０１３５】
なお、信号線ｗ１６−１、及びｗ２６−１は、データを送信する信号バスであるため、６４ビットの信号が転送される場合、バス幅は、例えば、６４本になる。バスセレクタ１３６とＬ２キャッシュコントローラ１２０とを繋ぐ信号線ｗ２６−３の本数は、バスセレクタ１３６における多重化により、信号線ｗ２６−１又は信号線ｗ２６−２を選択することで、信号線ｗ２６−３の本数を６４本にすることが出来る。
【０１３６】
上記のように、ＮＯ−ＭＢ−ＳＨ信号又はＮＯ−ＭＢ−ＩＶ信号を、Ｌ２キャッシュコントローラ１２０に転送するとき、データは、Ｌ２キャッシュコントローラ１２０に伝送されない。そのため、ＮＯ−ＭＢ−ＳＨ信号又はＮＯ−ＭＢ−ＩＶ信号の転送は、２つのプロセッサコアから、Ｌ２キャッシュコントローラへ同時にデータが伝送される機会を減少させる。よって、演算処理装置１は、多重化転送回路１３０により、信号線ｗ２６−１又は信号線ｗ２６−２を選択することで、信号線ｗ２６−３の本数を６４本にすることが出来る。このように、演算処理装置１は、配線密度が高くなる場所の上流部に、多重化転送回路１３０を設けることで、チップ面積を小さくすることが出来る。
【０１３７】
図１４は、演算処理装置の各機能部の配置位置の一例を示す図である。
領域１５０Ａ〜１５０Ｄは、２つのプロセッサコアとＬ２キャッシュコントローラとの間の信号線の密度が高くなる狭窄部である。狭窄部１４５Ａ〜Ｂには、２つのプロセッサコアから信号線が配置される。そこで、狭窄部１４５Ａ〜Ｂのデータ応答信号の入力側に多重化転送回路１３０を配置することで、２つのプロセッサコアから出力するバス幅を、半分にすることが出来る。そのため、多重化転送回路１３０により、狭窄部の配線密度を下げ、各機能部を効率的に配置することが出来る。
【０１３８】
図１５Ａは、演算処理装置によるデータ処理の一例を示すフローチャートである。最初に、Ｌ２キャッシュコントローラ１２０は、要求元プロセッサコアからＬ２キャッシュＲＡＭ１４０に記憶されたデータへのアクセス要求であるキャッシュデータ要求信号ＣＲＱを受信する（Ｓ６０１）。
【０１３９】
Ｌ２キャッシュコントローラ１２０は、キャッシュデータ要求信号ＣＲＱがロード命令ＬＤか否かを判断する（Ｓ６０２）。
【０１４０】
キャッシュデータ要求信号ＣＲＱがロード命令ＬＤの場合（Ｓ６０２  Ｙｅｓ）、Ｌ２キャッシュコントローラ１２０は、ＭＢ−ＳＨ信号を、要求先プロセッサコアに供給し（Ｓ６０３）、後述されるＳ６２１に示す動作を行う。
【０１４１】
キャッシュデータ要求信号ＣＲＱがロード命令ＬＤでは無い場合（Ｓ６０２  Ｎｏ）、Ｌ２キャッシュコントローラ１２０は、キャッシュデータ要求信号ＣＲＱがロードストア命令ＬＤＳか否かを判断する（Ｓ６０４）。Ｌ２キャッシュコントローラ１２０は、キャッシュデータ要求信号ＣＲＱがロードストア命令ＬＤＳである場合（Ｓ６０４、Ｙｅｓ）、ＭＢ−ＳＨ−ＩＶ信号を、要求先プロセッサコアに供給し（Ｓ６０５）、後述されるＳ６２１に示す動作を行う。
【０１４２】
キャッシュデータ要求信号ＣＲＱがロードストア命令ＬＤＳでは無い場合（Ｓ６０４  Ｎｏ）、Ｌ２キャッシュコントローラ１２０は、ＭＢ−ＩＶ信号を、要求先プロセッサコアに供給し（Ｓ６０６）、後述されるＳ６２１に示す動作を行う。
【０１４３】
Ｌ１キャッシュコントローラ１６は、Ｌ２キャッシュコントローラ１２０からコアデータ要求信号ＣＯＲＱを受信する（Ｓ６２１）。
【０１４４】
Ｌ１キャッシュコントローラ１６は、Ｌ１キャッシュＲＡＭ１８を参照して、要求対象のデータの状態情報が、「Ｅ」であるかを判定する（Ｓ６２２）。
【０１４５】
Ｌ１キャッシュコントローラ１６は、状態情報が「Ｅ」の場合（Ｓ６２２  Ｙｅｓ）、コアデータ要求信号ＣＯＲＱがロード命令ＬＤか否かを判断する（Ｓ６２３）。Ｌ１キャッシュコントローラ１６は、状態情報が「Ｅ」ではない場合（Ｓ６２２  Ｎｏ）、後述されるＳ６５１に示す動作を行う。
【０１４６】
コアデータ要求信号ＣＯＲＱがＭＢ−ＳＨ信号の場合（Ｓ６２３  Ｙｅｓ）、Ｌ１キャッシュコントローラ１６は、ＮＯ−ＭＢ−ＳＨ信号を、Ｌ２キャッシュコントローラ１２０に供給する（Ｓ６２４）。さらに、Ｌ１キャッシュコントローラ１６は、対象データの状態情報を「Ｅ」から「Ｓ」に変更する（Ｓ６２８）。そして、Ｌ２キャッシュコントローラは、後述されるＳ６３１に示す動作を行う。
【０１４７】
コアデータ要求信号ＣＯＲＱがＭＢ−ＳＨ信号では無い場合（Ｓ６２３  Ｎｏ）、Ｌ１キャッシュコントローラ１６は、コアデータ要求信号ＣＯＲＱがＭＢ−ＳＨ−ＩＶ信号か否かを判断する（Ｓ６２５）。Ｌ１キャッシュコントローラ１６は、コアデータ要求信号ＣＯＲＱがＭＢ−ＳＨ−ＩＶ信号である場合（Ｓ６２５  Ｙｅｓ）、ＮＯ−ＭＢ−ＳＨ信号を、Ｌ２キャッシュコントローラ１２０に供給する（Ｓ６２６）。さらに、Ｌ１キャッシュコントローラ１６は、対象データの状態情報を「Ｅ」から「Ｓ」に変更し（Ｓ６２８）、後述されるＳ６３１に示す動作を行う。
【０１４８】
コアデータ要求信号ＣＯＲＱがＭＢ−ＳＨ−ＩＶ信号では無い場合（Ｓ６２５  Ｎｏ）、Ｌ１キャッシュコントローラ１６は、ＮＯ−ＭＢ−ＩＶ信号を、Ｌ２キャッシュコントローラ１２０に供給する（Ｓ６２７）。さらに、Ｌ１キャッシュコントローラ１６は、対象データの状態情報を「Ｅ」から「Ｉ」に変更する（Ｓ６３０）。そして、Ｌ２キャッシュコントローラは、後述されるＳ６３１に示す動作を行う。
【０１４９】
ＮＯ−ＭＢ−ＩＶ信号又はＮＯ−ＭＢ−ＳＨ信号を受け取ると、Ｌ２キャッシュコントローラ１２０は、Ｌ２キャッシュＲＡＭに保持する対象データを、要求元プロセッサコアに供給し（Ｓ６３１）、処理を終了する。
【０１５０】
Ｌ１キャッシュコントローラ１６は、状態情報が「Ｍ」の場合（Ｓ６２２  Ｎｏ）、コアデータ要求信号ＣＯＲＱがＭＢ−ＳＨ信号か否かを判断する（Ｓ６５１）。コアデータ要求信号ＣＯＲＱがＭＢ−ＳＨ信号の場合（Ｓ６５１  Ｙｅｓ）、Ｌ１キャッシュコントローラ１６は、ＭＢ−ＳＨ信号並びにＬ１キャッシュＲＡＭに記憶した対象データを、Ｌ２キャッシュコントローラ１２０に供給する（Ｓ６５２）。さらに、Ｌ１キャッシュコントローラ１６は、対象データの状態情報を「Ｍ」から「Ｓ」に変更する（Ｓ６５３）。
【０１５１】
コアデータ要求信号ＣＯＲＱがＭＢ−ＳＨ信号では無い場合（Ｓ６５１  Ｎｏ）、Ｌ１キャッシュコントローラ１６は、コアデータ要求信号ＣＯＲＱがＭＢ−ＳＨ−ＩＶ信号か否かを判断する（Ｓ６５４）。コアデータ要求信号ＣＯＲＱがＭＢ−ＳＨ−ＩＶ信号である場合（Ｓ６５４  Ｙｅｓ）、コアデータ応答信号ＣＯＲＳとしてＭＢ−ＩＶ信号並びにＬ１キャッシュＲＡＭに保持した対象データを、Ｌ２キャッシュコントローラ１２０に供給する（Ｓ６５５）。さらに、Ｌ１キャッシュコントローラ１６は、対象データの状態情報を「Ｍ」から「Ｉ」に変更する（Ｓ６５６）。
【０１５２】
コアデータ要求信号ＣＯＲＱがＭＢ−ＳＨ−ＩＶ信号では無い場合（Ｓ６５４  Ｎｏ）、Ｌ１キャッシュコントローラ１６は、コアデータ応答信号ＣＯＲＳとしてＭＢ−ＩＶ信号並びにＬ１キャッシュＲＡＭに保持した対象データを、Ｌ２キャッシュコントローラに供給する（Ｓ６５７）。さらに、Ｌ１キャッシュコントローラ１６は、対象データの状態情報を「Ｍ」から「Ｉ」に変更する（Ｓ６５６）。
【０１５３】
修正された対象データ、及びＭＢ−ＩＶ信号又はＭＢ−ＳＨ信号を受け取ると、Ｌ２キャッシュコントローラ１２０は、修正された対象データを、要求元プロセッサコアに供給し（Ｓ６５７）、処理を終了する。
【０１５４】
以上の実施形態に関し、更に以下の付記を開示する。
［付記１］
第１の記憶部を有し、演算処理を行う第１の演算処理部と、
演算処理を行う第２の演算処理部と、
前記第１の記憶部が保持するデータを包含すると共に、前記第１の記憶部に保持されたデータの状態を特定する状態情報を保持する第２の記憶部と、
前記第２の演算処理部から第１アドレスのデータに対する第１のアクセス要求を受け取ると、前記第１アドレスのデータの第１の状態情報が、前記第１アドレスのデータが前記第１の記憶部に排他又は所有状態で保持されることを示す場合、前記第１アドレスのデータの読み出しを要求する要求信号を前記第１の演算処理部に出力するとともに、前記第１の演算処理部から前記第１アドレスのデータが変更されていないことを示すデータ未変更通知信号を受け取ったとき、前記第２の記憶部に包含された前記第１アドレスのデータに対する前記第２の演算処理部からのアクセスを許可する制御部と、
を有することを特徴とする演算処理装置。
［付記２］
前記演算処理装置において、
前記第１の記憶部は、前記第１の記憶部に保持されたデータの状態を特定する第２の状態情報を保持し、
前記第１のアクセス要求が、前記第２の演算処理部による前記第１アドレスのデータの読み出し後に、前記第２の演算処理部が前記第１アドレスのデータを変更することを示す場合、
前記要求信号は、前記第１アドレスのデータの読み出しの要求に加えて、前記第１の記憶部に保持された前記第２の状態情報を無効状態にすることを要求することを特徴とする付記１に記載の演算処理装置。
［付記３］
前記演算処理装置において、
前記第２の演算処理部はさらに、第３の記憶部を有し、
前記制御部は、前記第１の演算処理部から前記第１アドレスのデータを読み出した後に、前記第３の記憶部に保持され、且つ前記第１アドレスのデータの状態を特定する第３の状態情報を排他状態にすることを要求する応答信号を、前記第２の演算処理部に出力することを特徴とする付記２に記載の演算処理装置。
［付記４］
前記制御部と、前記第１の演算処理部から入出力するデータ、又は、前記第２の演算処理部から入出力するデータ、を伝送する共通信号線と、
前記第１の演算処理部から入出力するデータ、又は、前記第２の演算処理部から入出力するデータを選択し、且つ選択したデータを前記共通信号線に出力する選択回路と、
前記選択回路により選択されないデータを一時的に記憶する記憶回路と、
を有することを特徴とする付記２又は３に記載の演算処理装置。
［付記５］
第１の記憶部を有し演算処理を行う第１の演算処理部と、演算処理を行う第２の演算処理部と、前記第１の記憶部が保持するデータを包含すると共に、前記第１の記憶部に保持されたデータの状態を特定する状態情報を保持する第２の記憶部と、前記第２の記憶部に包含された前記第１アドレスのデータに対する前記第２の演算処理部からのアクセスを制御する制御部を有することを特徴とする演算処理装置の制御方法において、
前記第１の演算処理部が、前記第２の演算処理部から第１アドレスのデータに対する第１のアクセス要求を受け取るステップと、
前記第１アドレスのデータの第１の状態情報が、前記第１アドレスのデータが前記第１の記憶部に排他又は所有状態で保持されることを示す場合、前記制御部が、前記第１アドレスのデータの読み出しを要求する要求信号を前記第１の演算処理部に出力するステップと、
前記第１の演算処理部が、前記制御部から前記要求信号を受け取るステップと、
前記第１アドレスのデータが前記第１の演算処理部により変更されていない場合、前記第１の演算処理部が、前記第１アドレスのデータが変更されていないことを示すデータ未変更通知信号を前記制御部に出力するステップと、
前記制御部が、前記第１の演算処理部から前記データ未変更通知信号を受け取った場合、前記第２の記憶部に包含された前記第１アドレスのデータに対する前記第２の演算処理部によるアクセスを許可するステップと、
を有することを特徴とする制御方法。
［付記６］
前記演算処理相違の制御方法において、
前記第１の記憶部は、前記第１の記憶部に保持されたデータの状態を特定する第２の状態情報を保持するとともに、
前記第１のアクセス要求が、前記第２の演算処理部による前記第１アドレスのデータの読み出し後に、前記第２の演算処理部が前記第１アドレスのデータを変更することを示す場合、前記要求信号は、前記第１アドレスのデータの読み出しの要求に加えて、前記第１の記憶部に保持され且つ前記第１アドレスのデータの状態を特定する前記第２の状態情報を無効状態にすることを要求することを特徴とする付記５に記載の制御方法。
［付記７］
前記演算処理装置の制御方法において、
前記第２の演算処理部は、さらに第３の記憶部を有し、
前記制御部は、前記第１の演算処理部から前記第１アドレスのデータを読み出した後に、前記第３の記憶部に保持され、且つ前記第１アドレスのデータの状態を特定する状態情報を排他状態にすることを要求する応答信号を、前記第２の演算処理部に出力することを特徴とする付記６に記載の制御方法。
【符号の説明】
【０１５５】
１    演算処理装置
１０〜４０    プロセッサコア
１２    命令部
１４    実行部
１６    Ｌ１キャッシュコントローラ
１７    コアデータ応答制御部
１７ｂ    コアデータ応答制御部
１８    Ｌ１キャッシュＲＡＭ
１００    Ｌ２キャッシュ
１２０    Ｌ２キャッシュコントローラ
１２７    コアデータ応答制御部
１３０    多重化転送回路
１３１    要求判別回路
１３６    バスセレクタ
１３７    干渉制御バッファ
１４０    Ｌ２キャッシュＲＡＭ
１６０    メモリアクセス制御部
１７１    要求判別回路
２４０    メインメモリ
３１０    ＴＬＢ
【図１】
0005568939.tif 000002
【図２】
0005568939.tif 000003
【図３】
0005568939.tif 000004
【図４】
0005568939.tif 000005
【図５】
0005568939.tif 000006
【図６】
0005568939.tif 000007
【図７】
0005568939.tif 000008
【図８】
0005568939.tif 000009
【図９】
0005568939.tif 000010
【図１０】
0005568939.tif 000011
【図１１】
0005568939.tif 000012
【図１２】
0005568939.tif 000013
【図１３】
0005568939.tif 000014
【図１４】
0005568939.tif 000015
【図１５Ａ】
0005568939.tif 000016
【図１５Ｂ】
0005568939.tif 000017
【図１５Ｃ】
0005568939.tif 000018