(57)【特許請求の範囲】
【請求項１】
処理対象のデータの物理アドレスを有する要求を発行する要求発行部と、
複数の演算処理装置で共用される主記憶装置のデータを保持するとともに保持している前記データの状態を保持するキャッシュ部を制御し、前記要求発行部から発行された要求を受けて前記物理アドレスに基づいて前記キャッシュ部を検索し前記処理対象のデータの状態を取得した後に前記要求に応じた処理を行うキャッシュ制御部と、
取得した前記処理対象のデータの状態を通知する応答部と、
前記応答部より通知された前記処理対象のデータの状態を保持する、コア部から読み出し可能な第１の保持部とを有することを特徴とする演算処理装置。
【請求項２】
前記処理対象のデータの状態の表示を有効にするか無効にするかを設定する第２の保持部を有し、
前記応答部は前記第２の保持部の設定に応じて前記処理対象のデータの状態を通知するか否かを切り替えることを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記応答部は、前記処理対象のデータの状態とともに前記処理対象のデータの前記複数の演算処理装置に係る所在を示すディレクトリ情報を前記主記憶装置から取得して通知し、
前記第１の保持部に前記応答部より通知された前記処理対象のデータの状態及び前記ディレクトリ情報を保持することを特徴とする請求項１又は２記載の演算処理装置。
【請求項４】
前記要求は、前記キャッシュ部が保持している前記処理対象のデータを無効にする無効化要求であることを特徴とする請求項１〜３の何れか１項に記載の演算処理装置。
【請求項５】
前記処理対象のデータの物理アドレスを保持する第３の保持部を有することを特徴とする請求項１〜４の何れか１項に記載の演算処理装置。
【請求項６】
ライト要求を受けると前記処理対象のデータの物理アドレスを有する要求の発行を前記要求発行部に指示する第４の保持部を有することを特徴とする請求項１〜５の何れか１項に記載の演算処理装置。
【請求項７】
前記第１の保持部及び前記第２の保持部は、前記処理対象のデータの状態を保持するフィールド及び前記処理対象のデータの状態の表示を有効にするか無効にするかを設定するフィールドを有する１つの保持部であることを特徴とする請求項２記載の演算処理装置。
【請求項８】
処理対象のデータの物理アドレスを有する要求を発行する要求発行部と、
複数の演算処理装置で共用される主記憶装置のデータを保持するとともに保持している前記データの状態を保持するキャッシュ部を制御し、前記要求発行部から発行された要求を受けて前記物理アドレスに基づいて前記キャッシュ部を検索し前記処理対象のデータの状態を取得した後に前記要求に応じた処理を行うキャッシュ制御部と、
取得した前記処理対象のデータの状態を通知する応答部と、
前記応答部より通知された前記処理対象のデータの状態を保持する、コア部から読み出し可能な第１の保持部とを有する演算処理装置と、
前記演算処理装置に接続され、前記演算処理装置からの要求に対して前記処理対象のデータを前記演算処理装置に供給する前記主記憶装置とを備えることを特徴とする情報処理装置。
【請求項９】
複数の演算処理装置と、前記複数の演算処理装置で共用され前記演算処理装置からの要求に対して処理対象のデータを前記演算処理装置に供給する主記憶装置とが接続された情報処理装置の制御方法であって、
前記演算処理装置の要求発行部が、処理対象のデータの物理アドレスを有する要求を発行し、
前記主記憶装置のデータを保持するとともに保持している前記データの状態を保持するキャッシュ部を制御する前記演算処理装置のキャッシュ制御部が、前記要求発行部から発行された要求を受けて前記物理アドレスに基づいて前記キャッシュ部を検索し前記処理対象のデータの状態を取得した後に前記要求に応じた処理を行い、
前記演算処理装置の応答部が取得した前記処理対象のデータの状態を通知し、通知された前記処理対象のデータの状態をコア部から読み出し可能な第１の保持部に保持することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、情報処理装置、及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
複数の演算処理装置としてのＣＰＵ（Central Processing Unit）を有し、メモリを複数のＣＰＵで共用するマルチプロセッサシステムにおいて、複数のＣＰＵ間におけるデータのコヒーレンシを保つ制御を行うためにキャッシュプロトコルとしてＭＥＳＩプロトコルを採用し、ディレクトリを使用するマルチプロセッサシステムがある。ＭＥＳＩプロトコルを用いてキャッシュメモリにおけるデータの状態（キャッシュステート）が管理され、ディレクトリによってメモリのデータの所在等が示される。
【０００３】
ＭＥＳＩプロトコルにおいて、Ｍ（Modified）ステートは、データが自ＣＰＵのキャッシュメモリだけにあり、メモリ内のデータと内容が一致していない変更状態を示す。Ｅ（Exclusive）ステートは、データが自ＣＰＵのキャッシュメモリだけにあり、メモリ内のデータと内容が一致している排他状態を示す。Ｓ（Shared）ステートは、データが他ＣＰＵのキャッシュメモリにもあり、メモリ内のデータと内容が一致している共有状態を示す。Ｉ（Invalid）ステートは、キャッシュエントリ（キャッシュブロック）が無効になっている無効状態を示す。
【０００４】
このようなマルチプロセッサシステムにおいては、キャッシュ無効化要求を発行することにより、キャッシュ無効化要求で指定された物理アドレスのデータを保持しているキャッシュエントリを無効化することが可能となっている。キャッシュ無効化要求とは、キャッシュメモリを介してアクセスされるキャッシャブル空間に対するキャッシュエントリを無効化する要求であり、指定する物理アドレスを管理しているＣＰＵのキャッシュ制御部に対して発行される。
【０００５】
キャッシュ無効化要求を受けたキャッシュ制御部は、指定された物理アドレスに基づいてキャッシュメモリを検索し、メモリのデータがキャッシュメモリに保持されている場合、そのキャッシュエントリのキャッシュステートをＩステートにして無効化する。すなわち、キャッシュ無効化要求で指定された物理アドレスのデータを保持しているキャッシュエントリのキャッシュステートが、例えばＭステートやＥステートやＳステートであっても、それをＩステートにし無効化する。
【０００６】
キャッシュミス等のあるリクエストを契機にディレクトリを読み出したときに、１回の読み出しによって得られる複数キャッシュラインのステートが他ノードですべて無効状態又は共有状態であれば、それを示す情報を他のメモリに記録する情報処理装置が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２０１２／０３９００８号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
キャッシュ無効化要求を発行することにより、指定する物理アドレスのデータを保持しているキャッシュエントリを無効化することができるが、物理アドレスを指定してキャッシュステートを表示させる方法がないため、無効化するキャッシュエントリのキャッシュステートを観測可能に表示させることができない。したがって、実機試験で検証を行う場合など、無効化対象の物理アドレスについて、その物理アドレスのデータがキャッシュメモリに保持されているか否か、また、保持されている場合にキャッシュステートが何であるかが分からず、状態確認が不十分になってしまう。このため、例えば意図していた試験を行うことができずに試験精度を低下させてしまうことがある。１つの側面では、本発明の目的は、要求で指定された処理対象の物理アドレスのデータのキャッシュステートを表示させることができる演算処理装置を提供することにある。
【課題を解決するための手段】
【０００９】
演算処理装置の一態様は、処理対象のデータの物理アドレスを有する要求を発行する要求発行部と、複数の演算処理装置で共用される主記憶装置のデータを保持するとともに保持しているデータの状態を保持するキャッシュ部を制御し、発行された要求を受けて物理アドレスに基づきキャッシュ部を検索し処理対象のデータの状態を取得した後に要求に応じた処理を行うキャッシュ制御部と、取得した処理対象のデータの状態を通知する応答部と、通知された処理対象のデータの状態を保持する、コア部から読み出し可能な保持部とを有する。
【発明の効果】
【００１０】
発明の一態様においては、要求で指定された処理対象の物理アドレスのデータのキャッシュステートを示す情報を保持部に保持し、キャッシュステートを観測可能に表示させることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態におけるマルチプロセッサシステムの構成例を示す図である。
【図２】本実施形態における演算処理装置の構成例を示す図である。
【図３】本実施形態におけるＭＥＳＩプロトコルのキャッシュステートを示す図である。
【図４】本実施形態におけるディレクトリ情報のフォーマット例を示す図である。
【図５】本実施形態におけるアドレスレジスタ、制御レジスタ、及び情報レジスタの例を示す図である。
【図６】本実施形態におけるキャッシュ無効化要求及びキャッシュ無効化応答のフォーマット例を示す図である。
【図７Ａ】本実施形態におけるキャッシュ無効化処理の例を示すフローチャートである。
【図７Ｂ】本実施形態におけるキャッシュ無効化処理の例を示すフローチャートである。
【図８】本実施形態におけるキャッシュ無効化処理の例を示すシーケンス図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態を図面に基づいて説明する。
【００１３】
図１は、本発明の一実施形態におけるマルチプロセッサシステムの構成例を示す図である。図１には、演算処理装置としてのＣＰＵ（Central Processing Unit）と主記憶装置としてのメモリとの組を複数有し、複数のＣＰＵで各メモリを共用するｃｃＮＵＭＡ（cache coherent Non Uniform Memory Access）型のマルチプロセッサシステムを一例として示しているが、本実施形態におけるマルチプロセッサシステムはこれに限定されるものではない。
【００１４】
本実施形態では、複数のＣＰＵ間におけるデータのコヒーレンシを保つ制御を行うために、例えばキャッシュプロトコルとしてＭＥＳＩプロトコルを採用し、ディレクトリを使用する。キャッシュメモリにおけるデータの状態（キャッシュステート）がＭＥＳＩプロトコルを用いて管理され、メモリのデータの所在等がそれぞれのＣＰＵが管理して制御を行うディレクトリによって示される。なお、キャッシュプロトコルはＭＥＳＩプロトコルに限らず、他の種類のキャッシュプロトコルでも良い。
【００１５】
ここで、ＭＥＳＩプロトコルにおいて、Ｍ（Modified）ステートは、データが自ＣＰＵのキャッシュメモリだけにあり、メモリ内のデータと内容が一致していない変更状態を示す。Ｅ（Exclusive）ステートは、データが自ＣＰＵのキャッシュメモリだけにあり、メモリ内のデータと内容が一致している排他状態を示す。Ｓ（Shared）ステートは、データが他ＣＰＵのキャッシュメモリにもあり、メモリ内のデータと内容が一致している共有状態を示す。Ｉ（Invalid）ステートは、キャッシュエントリ（キャッシュブロック）が無効になっている無効状態を示す。
【００１６】
図１に示すマルチプロセッサシステムには、複数のシステムボード１０１が備えられている。システムボード１０１の各々は、ＣＰＵ１０２とメモリ１０３との組を複数有するとともにクロスバー（ＸＢ）１０４を有する。図１には、２つのシステムボード１０１を有する例を示しているが、これに限定されるものではなく、マルチプロセッサシステムが有するシステムボード１０１の数は任意である。また、システムボード１０１の各々が２組のＣＰＵ１０２とメモリ１０３を有する例を示しているが、システムボード１０１の各々が有するＣＰＵ１０２、メモリ１０３の数も任意である。
【００１７】
ＣＰＵ１０２の各々は、複数のコア部１０５、キャッシュ制御部１０６、メモリ制御部１０７、及びルーター制御部１０８を有する。なお、図１において、ＣＰＵ１０２の構成については簡略して図示しており、図示していない他の機能部もＣＰＵ１０２は有している。コア部１０５は、それぞれ１次キャッシュメモリを有し、１次キャッシュメモリが保持するデータを用いた演算処理や、ＭＩ（Move-In）要求やＭＯ（Move-Out）要求等の要求の発行を行う。
【００１８】
キャッシュ制御部１０６は、コア部１０５とメモリ１０３との間に配される図示しない共有キャッシュメモリに係る制御を行う。共有キャッシュメモリは、ＣＰＵ１０２内の複数のコア部１０５で共有されるキャッシュメモリであり、キャッシュブロック単位でメモリ１０３に格納されているデータを保持する。共有キャッシュメモリは、例えばコア部１０５の各々が１次キャッシュメモリだけを有する場合には２次キャッシュメモリであり、コア部１０５の各々が１次キャッシュメモリと２次キャッシュメモリとを有する場合には３次キャッシュメモリである。
【００１９】
メモリ制御部１０７は、接続されたメモリ１０３に対するメモリアクセス制御を行う。メモリ１０３には、データと、各データの所在等を示すためのディレクトリが記憶されている。ルーター制御部１０８は、トランザクション転送のためにシステムボード１０１内のＣＰＵ１０２の接続を行う。また、ルーター制御部１０８は、システムボード１０１間でのトランザクション転送のためにクロスバー１０４との接続も行う。ルーター制御部１０８は、パケット転送によって要求や応答のトランザクションを転送する。
【００２０】
クロスバー１０４は、トランザクション転送のためにシステムボード１０１間のＣＰＵ１０２の接続を行う。また、クロスバー１０４は、システムボード１０１内のＣＰＵ１０２が有するルーター制御部１０８との接続を行う。クロスバー１０４は、パケット転送によって要求や応答のトランザクションを転送する。
【００２１】
図２は、本実施形態における演算処理装置としてのＣＰＵの構成例を示す図である。図２に示すＣＰＵ２０１及びメモリ２０２は、それぞれ図１に示したＣＰＵ１０２及びメモリ１０３に対応する。ＣＰＵ２０１は、コア部２１０、キャッシュ制御部２２０、キャッシュ部２３０、ディレクトリ制御部２４０、メモリ制御部２５０、レジスタ制御部２６０、及び無効化制御部２７０を有する。なお、図２には１つのコア部２１０を図示しているが、ＣＰＵ２０１は複数のコア部２１０を有しており、それら複数のコア部２１０が、キャッシュ制御部２２０、キャッシュ部２３０、ディレクトリ制御部２４０、メモリ制御部２５０、レジスタ制御部２６０、及び無効化制御部２７０を共有している。
【００２２】
コア部２１０は、１次キャッシュメモリを有しており、１次キャッシュメモリが保持するデータを用いた演算処理を行ったり、ＭＩ（Move-In）要求やＭＯ（Move-Out）要求等をキャッシュ制御部２２０に発行したりする。また、コア部２１０は、レジスタ制御部２６０内のレジスタに対する書き込みや読み出しを指示するリードライト部２１１を有する。リードライト部２１１は、レジスタ制御部２６０にレジスタのリード要求やライト要求を送信し、それに対するレジスタ制御部２６０からのレジスタのリード応答やライト応答を受信する。
【００２３】
キャッシュ制御部２２０は、メモリ２０２に格納されているデータをキャッシュブロック単位でキャッシュデータとして保持するキャッシュ部２３０に係る制御を行う。キャッシュ部２３０は、キャッシュデータ２３１と、保持しているキャッシュデータに係るキャッシュ管理情報２３２とが格納される。キャッシュ管理情報２３２は、キャッシュデータのアドレスを示す情報や、キャッシュデータのキャッシュステート（状態）を示す情報を含む。
【００２４】
例えば図３に一例を示すように、キャッシュ管理情報２３２における所定のフィールドに、キャッシュステートが変更状態を示すＭステートである場合にはコード値“１１”が設定され、排他状態を示すＥステートである場合にはコード値“１０”が設定される。また、キャッシュステートが共有状態を示すＳステートである場合にはコード値“０１”が設定され、無効状態を示すＩステートである場合にはコード値“００”が設定される。
【００２５】
キャッシュ制御部２２０は、ＭＩ要求やＭＯ要求等の要求を受けると、要求で指定された物理アドレスに基づいてキャッシュ管理情報２３２の検索を行い、その物理アドレスのデータがキャッシュデータ２３１としてキャッシュ部２３０に保持されているか否かを判定する。指定された物理アドレスのデータがキャッシュ部２３０に保持されている場合、キャッシュ制御部２２０は、キャッシュ部２３０にデータ要求を送信し、それに対するキャッシュ部２３０からのデータ応答を受信して、ＭＩ要求やＭＯ要求等の要求に対する応答を返す。なお、指定された物理アドレスのデータがキャッシュ部２３０に保持されていない場合、キャッシュ制御部２２０は、メモリ２０２に対する要求を発行する。
【００２６】
また、キャッシュ制御部２２０は、キャッシュ無効化要求を受けると、キャッシュ無効化要求で指定された無効化対象物理アドレスに基づいてキャッシュ管理情報２３２の検索を行う。ここで、キャッシュ無効化要求とは、キャッシュメモリを介してアクセスされるキャッシャブル空間に対するキャッシュエントリ（キャッシュブロック）を無効化する要求であり、例えばある物理アドレスの一定領域をクリーンにする（無効化する）場合等に用いられる。キャッシュ無効化要求は、無効化対象物理アドレスを管理しているＣＰＵのキャッシュ制御部２２０に対して発行される。
【００２７】
キャッシュ制御部２２０は、無効化対象物理アドレスのデータがキャッシュ部２３０に保持されている場合、そのキャッシュエントリのキャッシュステートをキャッシュ管理情報２３２から取得した後、Ｉステートにして無効化する。すなわち、キャッシュ制御部２２０は、無効化対象物理アドレスのデータがキャッシュ部２３０に保持されている場合、そのデータを保持しているキャッシュエントリのキャッシュステートを示すコード値をキャッシュ管理情報２３２における所定のフィールドから取得し、その後に所定のフィールドにコード値“００”を設定する。そして、キャッシュ制御部２２０は、ディレクトリ制御部２４０にキャッシュ無効化要求を送信するとともに、取得した無効化対象物理アドレスのキャッシュステートを通知する。
【００２８】
ディレクトリ制御部２４０は、要求を受信した場合にメモリ２０２からディレクトリ情報を読み出し、その要求に係るディレクトリ情報を解析することによりメモリ制御部２５０へのリード要求やライト要求の送信を制御する。また、ディレクトリ制御部２４０は、受信した要求に対する応答をキャッシュ制御部２２０に送信する。
【００２９】
ディレクトリ制御部２４０は、要求を管理するための要求管理情報２４３を保持する。例えば、ディレクトリ制御部２４０は、キャッシュ無効化要求を受信した場合、要求毎にオペコード、無効化対象アドレス、ＩＤ、キャッシュステート、及びディレクトリ情報を要求管理情報２４３として保持する。すなわち、ディレクトリ制御部２４０は、キャッシュ無効化要求を受信した場合、受信したキャッシュ無効化要求と関連付けてキャッシュステート及びディレクトリ情報を要求管理情報２４３として保持する。
【００３０】
また、ディレクトリ制御部２４０は、モード判定部２４１及び応答部２４２を有する。モード判定部２４１は、レジスタ制御部２６０から伝達された表示モードがキャッシュステート及びディレクトリ情報を表示するモードであるか否かを判定する。応答部２４２は、モード判定部２４１での判定結果に応じて、要求管理情報２４３として保持されている無効化対象物理アドレスのキャッシュステート及びディレクトリ情報をレジスタ制御部２６０に通知する。応答部２４２は、表示モードがキャッシュステート及びディレクトリ情報を表示するモードである場合、要求管理情報２４３から無効化対象物理アドレスのキャッシュステート及びディレクトリ情報を取得してレジスタ制御部２６０に通知する。
【００３１】
メモリ制御部２５０は、接続されたメモリ２０２に対するメモリアクセス制御を行う。例えば、メモリ制御部２５０は、ディレクトリ制御部２４０からのリード要求やライト要求を受信し、その要求に応じたリード要求やライト要求をメモリ２０２に送信する。また、例えばメモリ制御部２５０は、送信したリード要求やライト要求に対するメモリ２０２からのリード応答やライト応答を受信し、その応答に応じたリード応答やライト応答をディレクトリ制御部２４０に送信する。
【００３２】
メモリ２０２には、データ２８１及びディレクトリ２８２が記憶されている。ディレクトリ２８２には、メモリ２０２に格納されている各データをどのＣＰＵ２０１のキャッシュメモリが保持しているか等を示すディレクトリ情報が格納される。図４に、本実施形態におけるディレクトリ情報のフォーマット例を示す。図４には、マルチプロセッサシステムが１６個のＣＰＵ（ＣＰＵ０〜ＣＰＵ１５）を有する場合のディレクトリ情報のフォーマットを一例として示している。
【００３３】
図４において、フィールドＥｘｃｌｕｓｉｖｅ（６３ビット目）は、任意のＣＰＵ２０１のキャッシュメモリにおいてデータがＭステート又はＥステートで保持されているか否かを示す。ここでは、ＣＰＵ０〜ＣＰＵ１５の内の何れかのＣＰＵのキャッシュメモリにおいてデータがＭステート又はＥステートで保持されている場合に“１”が設定され、そうでない場合に“０”が設定される。
【００３４】
フィールドＰｒｅｓｅｎｃｅ（０ビット目〜１５ビット目）は、各ＣＰＵ２０１のキャッシュメモリにデータが保持されているか否かを示す。ここでは、ｉビット目がＣＰＵｉに対応し（ｉは０〜１５の整数）、キャッシュメモリにデータが保持されている場合に“１”が設定され、データを保持していない場合に“０”が設定される。例えば、ＣＰＵ０〜ＣＰＵ１５の内のＣＰＵ０、ＣＰＵ７、ＣＰＵ１５のキャッシュメモリにデータが保持されている場合、０ビット目、７ビット目、及び１５ビット目の値が“１”であり、１ビット目〜６ビット目及び８ビット目〜１４ビット目の値が“０”である。なお、図４においてフィールドの記載がないビットは例えばリザーブビットである。
【００３５】
図２に戻り、レジスタ制御部２６０は、複数のレジスタ２６１〜２６３、リードライト部２６４、及びモード設定部２６５を有する。なお、図２においては、レジスタ制御部２６０が有するレジスタとして、キャッシュ無効化に係るアドレスレジスタ２６１、制御レジスタ２６２、及び情報レジスタ２６３の３つのレジスタを示しているが、レジスタ制御部２６０が他のレジスタを有していてもよい。
【００３６】
アドレスレジスタ２６１は、キャッシュエントリを無効化する物理アドレス（無効化対象物理アドレス）を保持するレジスタである。図５（Ａ）にアドレスレジスタ２６１の一例を示す。フィールドａｄｒｓ（７ビット目〜４６ビット目）に無効化対象物理アドレスが格納される。
【００３７】
制御レジスタ２６２は、キャッシュ無効化機能の制御に係るレジスタである。図５（Ｂ）に制御レジスタ２６２の一例を示す。フィールドｂｕｓｙ（６３ビット目）は無効化機能処理中であるか否かを示す。制御レジスタ２６２へのライト要求をコア部２１０から受けると、レジスタ制御部２６０が、キャッシュ無効化機能の起動要求を無効化制御部２７０に送信するとともに、無効化機能処理中であることを示すビット値（例えば“１”）を制御レジスタ２６２のフィールドｂｕｓｙに設定する。また、無効化制御部２７０からキャッシュ無効化機能の応答が返ってくると、レジスタ制御部２６０が、無効化機能処理中でないことを示すビット値（例えば“０”）を制御レジスタ２６２のフィールドｂｕｓｙに設定する。
【００３８】
情報レジスタ２６３は、キャッシュステート及びディレクトリ情報の表示等を行うためのレジスタである。図５（Ｃ）に情報レジスタ２６３の一例を示す。フィールドｒｅａｄ＿ｅｎ（５７ビット目）は、情報表示を有効にするか無効にするかを指定する、言い換えればキャッシュステート及びディレクトリ情報を表示する表示モードとするか否かを指定するフィールドである。ここでは、フィールドｒｅａｄ＿ｅｎは、情報表示を有効にする、すなわちキャッシュステート及びディレクトリ情報を表示する表示モードとする場合、ビット値“１”を設定する。一方、フィールドｒｅａｄ＿ｅｎは、情報表示を無効にする、すなわちキャッシュステート及びディレクトリ情報を表示する表示モードとしない場合、ビット値“０”を設定する。また、フィールドｃｓ（３２ビット目〜３３ビット目）にディレクトリ制御部２４０の応答部２４２から通知されるキャッシュステートが格納され、フィールドｄｉｒ（０ビット目〜３１ビット目）にディレクトリ制御部２４０の応答部２４２から通知されるディレクトリ情報が格納される。
【００３９】
なお、図５（Ａ）〜図５（Ｃ）において、６４ビットの内、フィールドの記載がないビットは例えばリザーブビットである。また、図５（Ａ）〜図５（Ｃ）において、ＲＷは読み書き可能なフィールドであることを示し、Ｒは読み出し専用のフィールドであることを示す。
【００４０】
リードライト部２６４は、コア部２１０からのレジスタのリード要求やライト要求を受信する。リードライト部２６４は、受信した要求に応じてレジスタに対するリード動作やライト動作を行ってリード応答やライト応答をコア部２１０に送信する。モード設定部２６５は、情報レジスタ２６３の設定値に基づく表示モードをディレクトリ制御部２４０に伝達する。すなわち、モード設定部２６５は、情報レジスタ２６３のフィールドｒｅａｄ＿ｅｎの設定値に基づいて、表示モードがキャッシュステート及びディレクトリ情報を表示するモードであるか、キャッシュステート及びディレクトリ情報を表示しないモードであるかを伝達する。
【００４１】
要求発行部としての無効化制御部２７０は、レジスタ制御部２６０からのキャッシュ無効化機能の起動要求を受信した場合、キャッシュ無効化機能を起動して、レジスタ制御部２６０のアドレスレジスタ２６１に保持されている無効化対象物理アドレスに係るキャッシュ無効化要求をキャッシュ制御部２２０に送信する。また、無効化制御部２７０は、キャッシュ制御部２２０からのキャッシュ無効化応答を受信した場合、キャッシュ無効化機能の応答をレジスタ制御部２６０に送信する。
【００４２】
図６に、キャッシュ制御部２２０と無効化制御部２７０との間、及びキャッシュ制御部２２０とディレクトリ制御部２４０との間で送受信されるキャッシュ無効化要求及びキャッシュ無効化応答のフォーマット例を示す。キャッシュ無効化要求のフォーマット例を図６（Ａ）に示し、キャッシュ無効化応答のフォーマット例を図６（Ｂ）に示している。キャッシュ無効化要求及びキャッシュ無効化応答は、例えば６４ビットのパケット形式で送受信される。
【００４３】
キャッシュ無効化要求は、図６（Ａ）に示すようにオペコード（ＯＰＣＤ）、ＩＤ（ＩＤ）、及びアドレス（ＡＤＲＳ）を含む。キャッシュ無効化応答は、図６（Ｂ）に示すようにオペコード（ＯＰＣＤ）及びＩＤ（ＩＤ）を含む。オペコード（ＯＰＣＤ）は、キャッシュ無効化要求／キャッシュ無効化応答の種類を特定するために使用される。ＩＤ（ＩＤ）はキャッシュ無効化要求／キャッシュ無効化応答同士でどの要求／応答なのかを特定するために使用される。アドレス（ＡＤＲＳ）は、キャッシュ無効化要求により無効化させる物理アドレスを指定するために使用される。なお、図６（Ａ）及び図６（Ｂ）において、６４ビットの内、フィールドの記載がないビットは例えばリザーブビットである。
【００４４】
次に、動作について説明する。なお、コア部２１０からのＭＩ要求やＭＯ要求に係る処理は、従来と同様であるので説明を省略し、以下ではキャッシュ無効化処理について説明する。図７Ａ及び図７Ｂは、本実施形態におけるキャッシュ無効化処理の例を示すフローチャートである。キャッシュ無効化処理では、まず、ステップＳ７０１にて、キャッシュステート及びディレクトリ情報を表示するモードにするか否かがコア部２１０により判定される。
【００４５】
キャッシュステート及びディレクトリ情報を表示するモードにすると判定した場合、ステップＳ７０２へ進む。ステップＳ７０２にて、コア部２１０のリードライト部２１１がレジスタ制御部２６０のリードライト部２６４に情報レジスタ２６３へのライト要求を送信し、情報レジスタ２６３に対してフィールドｒｅａｄ＿ｅｎに“１”（情報表示有効）と設定する。一方、キャッシュステート及びディレクトリ情報を表示するモードにはしないと判定した場合、ステップＳ７０２はスキップし、情報レジスタ２６３のフィールドｒｅａｄ＿ｅｎは“０”（情報表示無効）のままである。
【００４６】
次に、ステップＳ７０３にて、レジスタ制御部２６０のモード設定部２６５は、情報レジスタ２６３のフィールドｒｅａｄ＿ｅｎの設定値に基づく表示モードをディレクトリ制御部２４０のモード判定部２４１に伝達する。本実施形態では、情報レジスタ２６３のフィールドｒｅａｄ＿ｅｎの設定値そのものを表示モードとしてレジスタ制御部２６０からディレクトリ制御部２４０へ伝達するものとする。
【００４７】
ステップＳ７０４にて、コア部２１０のリードライト部２１１がレジスタ制御部２６０のリードライト部２６４にアドレスレジスタ２６１へのライト要求を送信し、アドレスレジスタ２６１に対してフィールドａｄｒｓに無効化対象物理アドレスを設定する。続いて、ステップＳ７０５にて、コア部２１０のリードライト部２１１がレジスタ制御部２６０のリードライト部２６４に制御レジスタ２６２へのライト要求を送信する。
【００４８】
ステップＳ７０６にて、レジスタ制御部２６０は、コア部２１０からの制御レジスタ２６２へのライト要求を受けて、無効化制御部２７０にキャッシュ無効化機能の起動要求を送信する。また、レジスタ制御部２６０は、制御レジスタ２６２のフィールドｂｕｓｙに無効化機能処理中であることを示す値を設定する。ステップＳ７０７にて、無効化制御部２７０は、レジスタ制御部２６０からのキャッシュ無効化機能の起動要求を受けてキャッシュ無効化機能を起動し、無効化対象物理アドレスに係るキャッシュ無効化要求をキャッシュ制御部２２０に送信する。
【００４９】
ステップＳ７０８にて、キャッシュ無効化要求を受けたキャッシュ制御部２２０は、キャッシュ部２３０が保持しているキャッシュ管理情報２３２を検索し、無効化対象物理アドレスのキャッシュステートを得るとともに、その物理アドレスのキャッシュステートを無効化する（Ｉステートにする）。次に、ステップＳ７０９にて、キャッシュ制御部２２０は、ディレクトリ制御部２４０にキャッシュ無効化要求を送信するとともに無効化対象物理アドレスのキャッシュステートを通知する。
【００５０】
ステップＳ７１０にて、ディレクトリ制御部２４０は、キャッシュ制御部２２０より通知された無効化対象物理アドレスのキャッシュステートを受信し要求管理情報２４３として保持する。また、ディレクトリ制御部２４０は、受信した無効化対象物理アドレスのキャッシュステートを解析し、解析後に無効化対象物理アドレスに対するリード要求をメモリ制御部２５０に送信する。
【００５１】
続いて、ステップＳ７１１にて、メモリ制御部２５０は、無効化対象物理アドレスに対するリード要求をメモリ２０２に送信する。ステップＳ７１２にて、メモリ制御部２５０からのリード要求を受けたメモリ２０２が、無効化対象物理アドレスのディレクトリ情報及びデータをリード応答としてメモリ制御部２５０に送信する。ステップＳ７１３にて、メモリ制御部２５０は、メモリ２０２から得た無効化対象物理アドレスのディレクトリ情報及びデータをリード応答としてディレクトリ制御部２４０に送信する。
【００５２】
ステップＳ７１４にて、ディレクトリ制御部２４０は、メモリ制御部２５０から送信された無効化対象物理アドレスのディレクトリ情報を受信し要求管理情報２４３として保持する。また、ディレクトリ制御部２４０は、受信した無効化対象物理アドレスのディレクトリ情報を解析し、無効化対象物理アドレスに係るキャッシュ無効化要求に対するキャッシュ無効化応答を送信する。
【００５３】
ステップＳ７１５にて、ディレクトリ制御部２４０のモード判定部２４１は、表示モードがキャッシュステート及びディレクトリ情報を表示するモードであるか否かを判定する。キャッシュステート及びディレクトリ情報を表示するモードであるとモード判定部２４１によって判定された場合、ステップＳ７１６にて、ディレクトリ制御部２４０の応答部２４２は、要求管理情報２４３として保持されている無効化対象物理アドレスのキャッシュステート及びディレクトリ情報をレジスタ制御部２６０に通知する。なお、キャッシュステート及びディレクトリ情報を表示するモードではないとモード判定部２４１によって判定された場合、ディレクトリ制御部２４０は何も処理を行わない。ステップＳ７１７にて、レジスタ制御部２６０は、ディレクトリ制御部２４０の応答部２４２からの情報を基に、情報レジスタ２６３のフィールドｃｓに無効化対象物理アドレスのキャッシュステートを保持し、情報レジスタ２６３のフィールドｄｉｒに無効化対象物理アドレスのディレクトリ情報を保持する。
【００５４】
また、ステップＳ７１８にて、ディレクトリ制御部２４０からのキャッシュ無効化応答を受けたキャッシュ制御部２２０は、無効化制御部２７０にキャッシュ無効化応答を送信する。ステップＳ７１９にて、キャッシュ制御部２２０からのキャッシュ無効化応答を受けた無効化制御部２７０は、レジスタ制御部２６０にキャッシュ無効化機能の応答を送信する。無効化制御部２７０からのキャッシュ無効化機能の応答を受けたレジスタ制御部２６０は、制御レジスタ２６２のフィールドｂｕｓｙに無効化機能処理中ではないことを示す値を設定する。
【００５５】
無効化対象物理アドレスに係るキャッシュ無効化が終了した後、ステップＳ７２０にて、コア部２１０のリードライト部２１１がレジスタ制御部２６０のリードライト制御部２６４に情報レジスタ２６３に対するリード要求を送信する。なお、無効化対象物理アドレスに係るキャッシュ無効化が終了したか否かは、コア部２１０が、例えばレジスタ制御部２６０が有する制御レジスタ２６２のフィールドｂｕｓｙの値を定期的に確認することで判定可能である。ステップＳ７２１にて、レジスタ制御部２６０は、情報レジスタ２６３に対するリード要求を受けて、情報レジスタ２６３から無効化対象物理アドレスのキャッシュステート及びディレクトリ情報を読み出してコア部２１０に応答として送信する。
【００５６】
図８は、本実施形態におけるキャッシュステート及びディレクトリ情報を表示させる場合のキャッシュ無効化処理の例を示すシーケンス図である。コア部２１０が情報レジスタ２６３へのライト要求をレジスタ制御部２６０に送信して、情報表示を有効にする表示モードに設定する（８０１）。そして、レジスタ制御部２６０が表示モードをディレクトリ制御部２４０に伝達する（８０２）。
【００５７】
また、コア部２１０がアドレスレジスタ２６１へのライト要求をレジスタ制御部２６０に送信して、アドレスレジスタ２６１に無効化対象物理アドレスを設定する（８０３）。次に、コア部２１０が制御レジスタ２６２へのライト要求をレジスタ制御部２６０に送信する（８０４）。コア部２１０からの制御レジスタ２６２へのライト要求を受けて、レジスタ制御部２６０がキャッシュ無効化機能の起動要求を無効化制御部２７０に送信する（８０５）。
【００５８】
レジスタ制御部２６０からのキャッシュ無効化機能の起動要求を受けて、無効化制御部２７０が無効化対象物理アドレスに係るキャッシュ無効化要求をキャッシュ制御部２２０に送信する（８０６）。無効化制御部２７０からのキャッシュ無効化要求を受けて、キャッシュ制御部２２０が、キャッシュ部２３０に対してキャッシュ管理情報２３２を検索して無効化対象物理アドレスのキャッシュステートを得るとともに、その物理アドレスのキャッシュステートを無効化する（８０７、８０８）。続いて、キャッシュ制御部２２０が、ディレクトリ制御部２４０にキャッシュ無効化要求を送信するとともに無効化対象物理アドレスのキャッシュステートを通知する（８０９）。
【００５９】
キャッシュ制御部２２０から通知された無効化対象物理アドレスのキャッシュステートを受信したディレクトリ制御部２４０が、受信したキャッシュステートを解析して無効化対象物理アドレスに係るリード要求をメモリ制御部２５０に送信する（８１０）。ディレクトリ制御部２４０からのリード要求を受けて、メモリ制御部２５０が無効化対象物理アドレスに係るリード要求をメモリ２０２に送信する（８１１）。メモリ制御部２５０からのリード要求を受けて、メモリ２０２が無効化対象物理アドレスに係るリード要求に対するリード応答をメモリ制御部２５０に返す（８１２）。メモリ２０２からのリード応答を受けたメモリ制御部２５０がリード応答をディレクトリ制御部２４０に返す（８１３）。
【００６０】
メモリ制御部２４０からのリード応答を受けたディレクトリ制御部２４０が無効化対象物理アドレスのキャッシュステート及びディレクトリ情報をレジスタ制御部２６０に通知する（８１４）。また、メモリ制御部２４０からのリード応答を受けたディレクトリ制御部２４０が無効化対象物理アドレスに係るキャッシュ無効化要求に対するキャッシュ無効化応答をキャッシュ制御部２２０に返す（８１５）。ディレクトリ制御部２４０からのキャッシュ無効化応答を受けたキャッシュ制御部２２０がキャッシュ無効化応答を無効化制御部２７０に返す（８１６）。さらにキャッシュ制御部２２０からのキャッシュ無効化応答を受けた無効化制御部２７０がキャッシュ無効化機能の応答をレジスタ制御部２６０に返す（８１７）。
【００６１】
その後、コア部２１０が情報レジスタ２６３に対するリード要求をレジスタ制御部２６０に送信する（８１８）。情報レジスタ２６３に対するリード要求を受けてレジスタ制御部２６０が情報レジスタ２６３に保持している無効化対象物理アドレスのキャッシュステート及びディレクトリ情報をコア部２１０に通知する（８１９）。
【００６２】
なお、キャッシュ無効化に伴ってメモリ２０２に対するデータやディレクトリ情報の更新が必要な場合、メモリ制御部２４０からのリード応答を受けた後に、ディレクトリ制御部２４０がライト要求をメモリ制御部２５０に送信する（８２０）。ディレクトリ制御部２４０からのライト要求を受けて、メモリ制御部２５０がライト要求をメモリ２０２に送信する（８２１）。メモリ制御部２５０からのライト要求を受けて、ライト動作が行われ、メモリ２０２がライトリード要求に対するライト応答をメモリ制御部２５０に返す（８２２）。メモリ２０２からのライト応答を受けたメモリ制御部２５０がライト応答をディレクトリ制御部２４０に返す（８２３）。
【００６３】
本実施形態によれば、キャッシュ無効化要求で指定された物理アドレスのデータのキャッシュステートを読み出し可能な情報レジスタに格納して表示させることができ、対象のデータのキャッシュステートを観測可能に表示させることができる。例えば、実機試験で検証を行う場合などの検証精度を向上させることができる。なお、前述した実施形態では、キャッシュ無効化要求を一例として説明したが、これに限定されるものではなく、物理アドレスを持つ要求を使用すれば、無効化要求とは異なる要求であっても処理対象の物理アドレスのデータのキャッシュステータスを表示することが可能である。
【００６４】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００６５】
１０１  システムボード
１０２、２０１  ＣＰＵ
１０３、２０２  メモリ
１０４  クロスバー
１０５、２１０  コア部
１０６、２２０  キャッシュ制御部
１０７、２５０  メモリ制御部
２１１  リードライト部
２３０  キャッシュ部
２３１  キャッシュデータ
２３２  キャッシュ管理情報
２４０  ディレクトリ制御部
２４１  モード判定部
２４２  応答部
２４３  要求管理情報
２６０  レジスタ制御部
２６１  アドレスレジスタ
２６２  制御レジスタ
２６３  情報レジスタ
２６４  リードライト部
２６５  モード設定部
２７０  無効化制御部
２８１  データ
２８２  ディレクトリ
【図１】
0006634864.tif 000002
【図２】
0006634864.tif 000003
【図３】
0006634864.tif 000004
【図４】
0006634864.tif 000005
【図５】
0006634864.tif 000006
【図６】
0006634864.tif 000007
【図７Ａ】
0006634864.tif 000008
【図７Ｂ】
0006634864.tif 000009
【図８】
0006634864.tif 000010