(57)【特許請求の範囲】
【請求項１】
主記憶装置に接続されてストアイン方式で制御する演算処理装置において、
前記主記憶装置が保持するデータの一部を、複数のキャッシュラインにそれぞれ保持するキャッシュメモリ部と、
前記キャッシュラインに保持されるデータの検索に用いるタグアドレスと、前記キャッシュラインに保持されるデータの有効性を示すフラグとを、前記複数のキャッシュラインにそれぞれ保持するタグメモリ部と、
指定アドレスに対応するキャッシュラインに対してキャッシュライン充填命令を実行する命令実行部と、
前記命令実行部が前記キャッシュライン充填命令を実行してキャッシュミスした場合、前記キャッシュメモリ部における前記指定アドレスに対応するタグアドレスのキャッシュラインに所定データを登録するとともに、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグを有効にするキャッシュメモリ制御部と、
前記キャッシュメモリ制御部による前記所定データの登録および前記フラグの有効が実行された後または前記キャッシュメモリ制御部による前記キャッシュライン充填命令がキャッシュヒットした後、前記主記憶装置を初期化する初期化データまたは前記主記憶装置内の所定アドレスに記憶されるコピー対象データを含む前記ストアイン方式のストア命令を前記指定アドレスに対して実行し、前記ストア命令で指定された前記初期化データまたは前記コピー対象データを、前記指定アドレスに対応するキャッシュラインに書き込むストア実行部と、
前記主記憶装置へのライトバックを実行する際に、前記ストア実行部によって書き込まれたデータを前記主記憶装置にライトバックするライトバック制御部と
を有することを特徴とする演算処理装置。
【請求項２】
前記演算処理装置はさらに、
前記キャッシュメモリ部において、
前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了するまで、前記指定アドレスを保持するアドレス保持部と、
前記アドレス保持部が前記指定アドレスを保持する間、前記命令実行部による前記指定アドレスに対するメモリアクセス命令の実行を抑止する命令抑止部をさらに有することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記演算処理装置において、
前記命令抑止部は、前記キャッシュメモリ制御部による前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了した場合に、前記命令実行部による前記指定アドレスに対するメモリアクセス命令の実行の抑止を解除し、
前記命令実行部は、前記命令実行部による前記指定アドレスに対するメモリアクセス命令の実行の抑止の解除後に、前記指定アドレスに対してストア命令を実行することを特徴とする請求項２記載の演算処理装置。
【請求項４】
前記演算処理装置はさらに、
前記キャッシュメモリ部が保持するデータの一部を保持する第２のキャッシュメモリ部と、
前記第２のキャッシュメモリ部にデータを登録するデータ登録部を有し、
前記データ登録部は、前記キャッシュメモリ制御部による前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了した場合に、前記所定データを前記第２のキャッシュメモリ部に登録し、
前記命令実行部は、前記所定データの前記第２のキャッシュメモリ部への登録後に、前記指定アドレスに対してストア命令を実行することを特徴とする請求項３記載の演算処理装置。
【請求項５】
主記憶装置と前記主記憶装置に接続されてストアイン方式で制御する演算処理装置を有する情報処理装置において、
前記演算処理装置は、
前記主記憶装置が保持するデータの一部を、複数のキャッシュラインにそれぞれ保持するキャッシュメモリ部と、
前記キャッシュラインに保持されるデータの検索に用いるタグアドレスと、前記キャッシュラインに保持されるデータの有効性を示すフラグとを、前記複数のキャッシュラインにそれぞれ保持するタグメモリ部と、
指定アドレスに対応するキャッシュラインに対してキャッシュライン充填命令を実行する命令実行部と、
前記命令実行部が前記キャッシュライン充填命令を実行してキャッシュミスした場合、前記キャッシュメモリ部における前記指定アドレスに対応するタグアドレスのキャッシュラインに所定データを登録するとともに、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグを有効にするキャッシュメモリ制御部と、
前記キャッシュメモリ制御部による前記所定データの登録および前記フラグの有効が実行された後または前記キャッシュメモリ制御部による前記キャッシュライン充填命令がキャッシュヒットした後、前記主記憶装置を初期化する初期化データまたは前記主記憶装置内の所定アドレスに記憶されるコピー対象データを含む前記ストアイン方式のストア命令を前記指定アドレスに対して実行し、前記ストア命令で指定された前記初期化データまたは前記コピー対象データを、前記指定アドレスに対応するキャッシュラインに書き込むストア実行部と、
前記主記憶装置へのライトバックを実行する際に、前記ストア実行部によって書き込まれたデータを前記主記憶装置にライトバックするライトバック制御部と
を有することを特徴とする情報処理装置。
【請求項６】
前記演算処理装置はさらに、
前記キャッシュメモリにおいて、
前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了するまで、前記指定アドレスを保持するアドレス保持部と、
前記アドレス保持部が前記指定アドレスを保持する間、前記命令実行部による前記指定アドレスに対するメモリアクセス命令の実行を抑止する命令抑止部をさらに有することを特徴とする請求項５記載の情報処理装置。
【請求項７】
前記演算処理装置において、
前記命令抑止部は、前記キャッシュメモリ制御部による前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了した場合に、前記命令実行部による前記指定アドレスに対するメモリアクセス命令の実行の抑止を解除し、
前記命令実行部は、前記命令実行部による前記指定アドレスに対するメモリアクセス命令の実行の抑止の解除後に、前記指定アドレスに対してストア命令を実行することを特徴とする請求項６記載の情報処理装置。
【請求項８】
前記演算処理装置はさらに、
前記キャッシュメモリ部が保持するデータの一部を保持する第２のキャッシュメモリ部と、
前記第２のキャッシュメモリ部にデータを登録するデータ登録部を有し、
前記データ登録部は、前記キャッシュメモリ制御部による前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了した場合に、前記所定データを前記第２のキャッシュメモリ部に登録し、
前記命令実行部は、前記所定データの前記第２のキャッシュメモリ部への登録後に、前記指定アドレスに対してストア命令を実行することを特徴とする請求項７記載の情報処理装置。
【請求項９】
主記憶装置が保持するデータの一部を、複数のキャッシュラインにそれぞれ保持するキャッシュメモリ部と、前記キャッシュラインに保持されるデータの検索に用いるタグアドレスと、前記キャッシュラインに保持されるデータの有効性を示すフラグとを、前記複数のキャッシュラインにそれぞれ保持するタグメモリ部と、を有する演算処理装置のキャッシュメモリ制御方法において、
前記演算処理装置が有する命令実行部が、指定アドレスに対応するキャッシュラインに対してキャッシュライン充填命令を実行するステップと、
前記命令実行部が前記キャッシュライン充填命令を実行してキャッシュミスした場合、前記演算処理装置が有するキャッシュメモリ制御部が、前記キャッシュメモリ部における前記指定アドレスに対応するタグアドレスのキャッシュラインに所定データを登録するとともに、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグを有効にするステップと、
前記キャッシュメモリ制御部による前記所定データの登録および前記フラグの有効が実行された後または前記キャッシュメモリ制御部による前記キャッシュライン充填命令がキャッシュヒットした後、前記演算処理装置が有するストア実行部が、前記主記憶装置を初期化する初期化データまたは前記主記憶装置内の所定アドレスに記憶されるコピー対象データを含むストアイン方式のストア命令を前記指定アドレスに対して実行し、前記ストア命令で指定された前記初期化データまたは前記コピー対象データを、前記指定アドレスに対応するキャッシュラインに書き込むステップと、
前記演算処理装置が有するライトバック制御部が、前記主記憶装置へのライトバックを実行する際に、前記ストア実行部によって書き込まれたデータを前記主記憶装置にライトバックするステップと
を有することを特徴とするキャッシュメモリ制御方法。
【請求項１０】
前記キャッシュメモリ制御方法はさらに、
前記演算処理装置が有するアドレス保持部が、前記キャッシュメモリ部において、前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了するまで、前記指定アドレスを保持するステップと、
前記演算処理装置が有する命令抑止部が、前記アドレス保持部が前記指定アドレスを保持する間、前記命令実行部による前記指定アドレスに対するメモリアクセス命令の実行を抑止するステップをさらに有することを特徴とする請求項９記載のキャッシュメモリ制御方法。
【請求項１１】
前記キャッシュメモリ制御方法において、
前記命令抑止部は、前記キャッシュメモリ制御部による前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了した場合に、前記命令実行部による前記指定アドレスに対するメモリアクセス命令の実行の抑止を解除し、
前記命令実行部は、前記命令実行部による前記指定アドレスに対するメモリアクセス命令の実行の抑止の解除後に、前記指定アドレスに対してストア命令を実行することを特徴とする請求項１０記載のキャッシュメモリ制御方法。
【請求項１２】
前記演算処理装置はさらに、
前記キャッシュメモリ部が保持するデータの一部を保持する第２のキャッシュメモリ部と、
前記第２のキャッシュメモリ部にデータを登録するデータ登録部を有し、
前記キャッシュメモリ制御方法はさらに、
前記データ登録部が、前記キャッシュメモリ制御部による前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了した場合に、前記所定データを前記第２のキャッシュメモリ部に登録するステップと、
前記命令実行部が、前記所定データの前記第２のキャッシュメモリ部への登録後に、前記指定アドレスに対してストア命令を実行するステップを有することを特徴とする請求項１１記載のキャッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、情報処理装置及びキャッシュメモリ制御方法に関する。
【背景技術】
【０００２】
従来、情報処理装置としてのサーバに搭載される演算処理装置としてのプロセッサキャッシュメモリの制御方式として、ライトスルー方式とも言われるストアスルー方式とライトバック方式とも言われるストアイン方式とが利用されている。両方式について、プロセッサに接続される主記憶装置、プロセッサに内蔵される２次キャッシュメモリおよび１次キャッシュメモリを有する二階層のキャッシュメモリ構成を例にして説明する。
【０００３】
ストアスルー方式を用いるプロセッサは、プロセッサ内部の２次キャッシュメモリにデータを書き込むたびに、そのデータを主記憶装置にも書き込む。このため、２次キャッシュメモリへのアクセスと比較してアクセスタイムが遅い主記憶装置へのアクセスが頻発する。したがって、ストアスルー方式を用いるプロセッサは、主記憶装置よりも高速な２次キャッシュメモリへの書き込みが常に主記憶装置への書き込み完了を待つ必要があり、２次キャッシュメモリへの書き込み自体も遅くなる。
【０００４】
ストアイン方式を用いるプロセッサは、ストア命令を実行する場合、１次または２次キャッシュメモリにのみデータを書き込み、主記憶装置には書き込まない。このため、ストアイン方式では、２次キャッシュメモリ上においてデータが存在する場所に、別のデータを格納するのに際して、それまでキャッシュラインに登録されていたデータを退避する必要が生じる。このタイミングで、プロセッサは、当該キャッシュラインに保持されていたデータを主記憶装置に書き込む。この場合、プロセッサは、当該キャッシュラインに登録されていたデータを主記憶装置に書き込んでキャッシュラインを無効化し、無効化されたキャッシュラインに別のキャッシュラインを新たに登録する。この結果、ストアイン方式を用いるプロセッサは、キャッシュラインに書き込んだデータを主記憶装置に反映することができる。さらに、プロセッサは、主記憶装置への書き込みを待たずに２次キャッシュメモリへの書き込みを完了することができる。
【０００５】
ところが、ストアイン方式では、「主記憶装置の初期化を実施する」場合と「主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う」場合に、主記憶装置の連続した領域にデータを書き込む処理が発生する。なお、「主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う」場合の一例を図１２に示す。図１２は、主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う例を示す図である。図１２に示すように、「主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う」場合とは、主記憶の一のアドレス０ｘ１０００のデータＡを他のアドレスである０ｘ１０８０、０ｘ１１００、０ｘ１１８０にそれぞれコピーする場合などである。すなわち、「主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う」場合の一例としては、主記憶装置のある領域から別の領域にデータをコピーする場合などがある。
【０００６】
つまり、これらの場合には、ストアイン方式よりもストアスルー方式の方が、キャッシュメモリよりも低速な主記憶装置の参照回数、言い換えると、主記憶装置へのアクセス回数が少なく、高速に処理できる場合がある。
【０００７】
例えば、主記憶装置へアクセスするデータ単位を６４バイトとして説明する。ストアスルー方式を用いるプロセッサでは、「主記憶装置の初期化を行う」場合に、初期化対象の主記憶装置に６４バイトの初期化データを直接書き込むので、主記憶装置へのアクセスが１回発生する。また、「主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う」場合には、プロセッサでは、コピー元の主記憶装置から６４バイトのデータを取出すアクセスと、コピー先の主記憶装置に６４バイトのデータを書き込むアクセスの計２回のアクセスが発生する。
【０００８】
一方、ストアイン方式を用いるプロセッサでは、ストアデータの書き込みをキャッシュメモリに対してのみ行うので、キャッシュメモリへの書き込みに先立って、書き込み先の主記憶領域をキャッシュメモリに事前に登録しておく必要がある。このため、ストアイン方式を用いるプロセッサでは、「主記憶装置の初期化を行う」場合に、主記憶装置へのアクセスが２回発生する。具体的には、ストアイン方式を用いるプロセッサでは、キャッシュメモリに事前登録する必要がある初期化対象の主記憶領域から６４バイトのデータを取出すアクセスが発生する。さらに、当該プロセッサでは、キャッシュメモリ上で書き込みがされた６４バイトのデータを主記装置憶に書き込むアクセスが発生する。
【０００９】
また、「主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う」場合には、ストアイン方式を用いるプロセッサでは、主記憶装置へのアクセスが３回発生する。具体的には、ストアイン方式を用いるプロセッサでは、コピー元の主記憶装置から６４バイトのデータを取出すアクセスと、キャッシュメモリに事前登録する必要があるコピー先の主記憶装置の領域から６４バイトデータを取出すアクセスが発生する。さらに、プロセッサでは、キャッシュメモリ上で書き込みがされた６４バイトのデータを主記憶装置に書き込むアクセスが発生する。
【００１０】
図１３を用いて、ストアイン方式による「主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う」場合の例を説明する。図１３は、従来技術に係る主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う例を示す図である。図１３では、主記憶装置のアドレス０ｘ１０００に記憶されるデータＡをアドレス０ｘ１０８０にコピーする例を説明する。
【００１１】
図１３に示すように、プロセッサは、まず、コピー元のアドレス０ｘ１０００からデータＡをロードして、１次キャッシュメモリのアドレス０ｘ１０００と２次キャッシュメモリのアドレス０ｘ１０００にそれぞれ登録する。次に、プロセッサは、コピー先のアドレス０ｘ１０８０にデータを書き込むストア命令を実行する。すなわち、プロセッサは、主記憶装置のアドレス０ｘ１０８０からデータＢをロードして１次キャッシュメモリのアドレス０ｘ１０８０と２次キャッシュメモリのアドレス０ｘ１０８０にそれぞれ登録する。そして、プロセッサは、１次キャッシュメモリのアドレス０ｘ１０８０と２次キャッシュメモリのアドレス０ｘ１０８０にそれぞれにデータＡを登録する。その後、プロセッサは、ストアイン動作（ライトバック動作）によって、２次キャッシュメモリのアドレス０ｘ１０８０に登録されるデータＡを、主記憶装置のアドレス０ｘ１０８０に登録する。このように、ストアイン方式の場合、主記憶装置内でのデータコピーでは、主記憶装置へのアクセスが３回必要である。
【００１２】
上述してきたように、ストアイン方式を用いるプロセッサは、主記憶装置の初期化の場合に、ストアスルー方式に比べて２倍の主記憶装置へアクセス回数が発生し、データのコピーの場合に、ストアスルー方式に比べて１．５倍の主記憶装置へアクセス回数が発生する。また、同じ量のデータを処理するにあたって必要となる主記憶アクセス回数に比例して、データ処理に要する時間が延びることから、短時間でデータ処理を完了することが重要である。すなわち、高速にデータを処理するためには主記憶アクセス回数を減らすことが重要となる。
【００１３】
そして、近年では、ストアイン方式を用いるプロセッサにおける主記憶装置へのアクセス回数を減らす技術として、１命令で例えば６４バイトのデータブロックであるブロックストアを主記憶装置に直接書き込む命令であるブロックストア命令が利用されている。例えば、ストアイン方式を用いるプロセッサでは、「主記憶装置の初期化」又は「主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う」処理を実施する場合に、ブロックストア命令が利用されている。ストアイン方式を用いるプロセッサは、ブロックストア命令を実行すると、主記憶装置上の書き込み対象領域がキャッシュメモリに登録されている場合には、キャッシュメモリにデータを書き込む。また、ストアイン方式を用いるプロセッサは、ブロックストア命令を実行すると、主記憶装置上の書き込み対象領域がキャッシュメモリに登録されていない場合には、主記憶装置にデータを直接書き込む。
【００１４】
ブロックストア命令を実施することで、ストアイン方式を用いた場合に必須であった「書き込み先の主記憶領域をキャッシュメモリに一旦登録するために、主記憶装置からデータを読み出す」という主記憶装置へのアクセスを省略することができる。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２０００−７６２０５号公報
【特許文献２】特開平１０−３０１８４９号公報
【特許文献３】特開２００３−２９９６７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
しかしながら、従来の技術では、ブロックストア命令を用いた場合であっても、主記憶装置の初期化または主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーする処理を高速に処理できない場合があるという課題があった。具体的には、ストアイン方式を用いたプロセッサでは、ブロックストア命令を実行し、キャッシュラインのデータ幅とアクセスした主記憶装置のデータ幅とが一致する場合には、高速な処理を実施することができる。ところが、ストアイン方式を用いたプロセッサでは、キャッシュラインのデータ幅が例えば１２８バイトで、主記憶のデータ幅が例えば６４バイトの場合のように、データ幅が異なる場合には高速動作ができない。
【００１７】
例えば、複数のプロセッサコアを有し、複数の１次キャッシュメモリが１つの２次キャッシュメモリから接続されている場合に、ブロックストア対象となるキャッシュラインがいずれかの１次キャッシュメモリに登録されていたとする。この場合に、キャッシュラインのデータ幅とブロックストアのデータ幅が一致している場合、プロセッサは、１次キャッシュメモリにキャッシュラインの無効化を指示する。そして、プロセッサは、２次キャッシュメモリ上のデータをブロックストアのデータで上書きして、ブロックストア命令の処理は完了する。
【００１８】
一方、ブロックストア対象のキャッシュラインのデータ幅がブロックストアのデータ幅より大きい場合は、ブロックストアのデータで上書きできない領域が存在する。この場合、プロセッサは、１次キャッシュメモリ上のデータをロードして２次キャッシュメモリにストアし、その後ブロックストアのデータを２次キャッシュメモリにストアする。そして、プロセッサは、ブロックストアのデータをストアした２次キャッシュメモリ上のデータを１次キャッシュメモリにストアするなどの処理を行う必要がある。
【００１９】
このように、ブロックストア命令を実施するプロセッサは、キャッシュラインのサイズが例えば１２８バイトなどブロックストアより大きくなった場合に、通常のブロックストア命令による処理以外の処理を実施する必要がある。この結果、２次キャッシュメモリ等の設計が困難なものになると同時に、性能低下を来たすおそれがあった。
【００２０】
開示の技術は、上記に鑑みてなされたものであって、主記憶装置の初期化または主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーする処理を高速に処理することが可能である演算処理装置、情報処理装置及びキャッシュメモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００２１】
本願の開示する演算処理装置、情報処理装置及びキャッシュメモリ制御方法は、主記憶装置に接続される演算処理装置において、前記主記憶装置が保持するデータの一部を、複数のキャッシュラインにそれぞれ保持するキャッシュメモリ部と、前記キャッシュラインに保持されるデータの検索に用いるタグアドレスと、前記キャッシュラインに保持されるデータの有効性を示すフラグとを、前記複数のキャッシュラインにそれぞれ保持するタグメモリ部と、指定アドレスに対応するキャッシュラインに対してキャッシュライン充填命令を実行する命令実行部と、前記命令実行部が前記キャッシュライン充填命令を実行した場合に、前記キャッシュメモリ部における前記指定アドレスに対応するタグアドレスのキャッシュラインに所定データを登録するとともに、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグを有効にするキャッシュメモリ制御部を有する。
【発明の効果】
【００２２】
本願の開示する演算処理装置、情報処理装置及びキャッシュメモリ制御方法の一つの態様によれば、主記憶装置の初期化または主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーする処理を高速に処理することが可能であるという効果を奏する。
【図面の簡単な説明】
【００２３】
【図１】図１は、実施の形態１に係るプロセッサの構成を示すブロック図である。
【図２】図２は、実施の形態１に係る記憶ユニットの詳細を示す図である。
【図３】図３は、２次キャッシュメモリの構成を示す図である。
【図４】図４は、実施の形態１に係るプロセッサによる処理の流れを示すフローチャートである。
【図５】図５は、ＸＦＩＬＬ命令の処理の流れを示すフローチャートである。
【図６】図６は、ＸＦＩＬＬ後の判定処理の流れを示すフローチャートである。
【図７】図７は、ストア命令による処理の流れを示すフローチャートである。
【図８】図８は、実施の形態１に係るプロセッサによる主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーする処理を説明する図である。
【図９】図９は、先行命令のＸＦＩＬＬ命令の完了を待たずに後続のストア命令を実行した場合の例を示す図である。
【図１０】図１０は、先行命令のＸＦＩＬＬ命令の完了を待って後続のストア命令を実行した場合の例を示す図である。
【図１１】図１１は、サーバの構成を示す図である。
【図１２】図１２は、主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う例を示す図である。
【図１３】図１３は、従来技術に係る主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う例を示す図である。
【発明を実施するための形態】
【００２４】
以下に、本願の開示する演算処理装置、情報処理装置及びキャッシュメモリ制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００２５】
[実施の形態１]
（プロセッサの構成）
図１は、実施の形態１に係るプロセッサの構成を示すブロック図である。図１に示すように、プロセッサ１０は、命令制御ユニット（IU：Instruction  Control  Unit）１１と実行ユニット（EU：Execution  Unit）１２とを有する。また、プロセッサ１０は、記憶ユニット（SU：Storage  Unit）１３と外部接続ユニット（SX：Secondary  Cache  and  External  Access  Unit）１６とを有する。また、このプロセッサ１０は、命令パイプラインを有し、主記憶装置（メインメモリ）２０と接続される。なお、主記憶装置２０は、キャッシュメモリと比較して大容量のデータが登録可能なＲＡＭ（Random  Access  Memory）であり、命令やデータを記憶する記憶装置である。
【００２６】
プロセッサ１０は、例えばＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）やＤＳＰ（Digital  Signal  Processor）などの演算処理装置であり、後述する１次キャッシュメモリおよび２次キャッシュメモリをストアイン方式で制御する。なお、ここで示したプロセッサの構成はあくまで例示であり、これに限定されるものではない。
【００２７】
命令制御ユニット１１は、コンパイラ（プログラム）によりあらかじめ定義された命令列を命令順に発行するユニットである。例えば、命令制御ユニット１１は、ストア命令やロード命令を記憶ユニット１３に発行する。また、命令制御ユニット１１は、ＸＦＩＬＬ命令を記憶ユニット１３に発行する。ＸＦＩＬＬ命令とは、主記憶装置２０の所定の領域を初期化する際のストア命令又は主記憶装置２０の所定の領域に記憶されるデータを他の領域にコピーする際のストア命令を実行する前の前処理を実行する命令である。したがって、命令制御ユニット１１は、上記ストア命令を出力する場合には、上記ストア命令の出力の前処理として、当該ストア命令の対象となるアドレスに対するＸＦＩＬＬ命令を出力する。
【００２８】
このＸＦＩＬＬ命令では、初期化の対象となる主記憶装置の領域又はコピー先の領域に記憶されるデータが、ストアイン方式で制御される２次キャッシュメモリ１６ａに記憶されているか否かを判定する処理が実行される。続いて、ＸＦＩＬＬ命令では、２次キャッシュメモリ１６ａに記憶されていないと判定された場合に、主記憶装置２０の初期化対象又はコピー先の領域に対応するキャッシュラインに所定データを登録し、当該キャッシュラインのタグメモリのフラグを有効にする処理が実行される。
【００２９】
なお、命令制御ユニット１１は、命令を順次発行するので、ＸＦＩＬＬ命令の後続のストア命令についても、ＸＦＩＬＬ命令を記憶ユニット１３に発行した後、後続のストア命令も記憶ユニット１３に順次発行する。ところが、命令の実行は、後述する記憶ユニット１３によって制御される。また、ＸＦＩＬＬ命令の後続のストア命令で対象となるストアデータは、例えば、ＯＳ等のプログラムや起動時に実行されるファームウェアの実行に先立って主記憶装置２０の所定領域を初期化する初期化データや、主記憶装置内でデータをコピーする場合のコピー対象データである。
【００３０】
実行ユニット１２は、算術演算、論理演算、アドレス計算などの各種演算を行うユニットであり、演算結果を記憶ユニット１３の１次データキャッシュメモリ１５に格納する。記憶ユニット１３は、命令制御ユニット１１から出力された命令や実行ユニット１２が演算した演算結果を記憶するユニットであり、制御部１３ａと１次命令キャッシュメモリ１４と１次データキャッシュメモリ１５とを有する。
【００３１】
制御部１３ａは、命令制御ユニット１１から受け付けたＸＦＩＬＬ命令を外部接続ユニット１６に出力して命令の実行などを要求する制御部である。この制御部１３ａは、図２に示すように、命令選択／パイプ処理部１３ｂとアドレス保持部１３ｃとアドレス選択／パイプ処理部１３ｆとアドレス比較部１３ｇとを有する。さらに、制御部１３ａは、アドレス比較部１３ｈとアドレス管理部１３ｉと命令完了通知部１３ｊと命令再投入管理部１３ｋとを有する。そして、この制御部１３ａは、これらの制御部によってＸＦＩＬＬ命令の後続命令を抑止する。図２は、実施の形態１に係る記憶ユニットの詳細を示す図である。
【００３２】
命令選択／パイプ処理部１３ｂは、命令制御ユニット１１から出力された新規命令に対応する命令を１次命令キャッシュメモリ１４から選択して、命令パイプラインに投入する。例えば、命令選択／パイプ処理部１３ｂは、命令制御ユニット１１から出力されたストア命令やロード命令を１次命令キャッシュメモリ１４から選択して、命令パイプラインに投入して、命令を実行する。また、命令選択／パイプ処理部１３ｂは、命令制御ユニット１１からＸＦＩＬＬ命令が出力された場合には、ＸＦＩＬＬ命令を命令パイプラインに投入して、命令を実行する。
【００３３】
この命令選択／パイプ処理部１３ｂは、命令を命令パイプラインに投入する際に、後述するアドレス比較部１３ｇによる比較結果が一致した場合に、命令を命令パイプラインに投入して命令を実行する。例えば、命令選択／パイプ処理部１３ｂは、ＸＦＩＬＬ命令投入後にストア命令を投入する場合に、アドレス比較部１３ｇによる比較結果が不一致の間はストア命令を抑止（保留状態に）し、命令を命令再投入管理部１３ｋに出力する。つまり、命令選択／パイプ処理部１３ｂは、ＸＦＩＬＬ命令投入後のストア命令については、ＸＦＩＬＬ命令の完了を待って投入する。
【００３４】
アドレス保持部１３ｃは、ＸＦＩＬＬフラグ保持部１３ｄとＸＦＩＬＬアドレス保持部１３ｅとを有する。例えば、ＸＦＩＬＬフラグ保持部１３ｄは、命令制御ユニット１１からＸＦＩＬＬ命令が出力され、外部接続ユニット１６によってＸＦＩＬＬ命令が実行されている場合に、例えばＸＦＩＬＬフラグが有効（ＯＮ）であることを示す「１」を保持する。また、ＸＦＩＬＬフラグ保持部１３ｄは、ＸＦＩＬＬ命令が実行されていない場合に、例えばＸＦＩＬＬフラグが無効（ＯＦＦ）であることを示す「０」を保持する。ＸＦＩＬＬアドレス保持部１３ｅは、キャッシュライン充填命令の指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了するまで、指定アドレスを保持する。つまり、ＸＦＩＬＬアドレス保持部１３ｅは、命令制御ユニット１１からＸＦＩＬＬ命令が出力された場合に、ＸＦＩＬＬ命令の対象となるアドレスを保持する。
【００３５】
また、アドレス保持部１３ｃは、後述する命令完了通知部１３ｊからＸＦＩＬＬ命令の完了通知を受信した場合に、ＸＦＩＬＬアドレス保持部１３ｅに保持されるＸＦＩＬＬ命令の対象アドレスを解放する。さらに、ＸＦＩＬＬ命令の対象アドレスを解放したアドレス保持部１３ｃは、ＸＦＩＬＬフラグ保持部１３ｄに保持されるＸＦＩＬＬフラグを無効にする。
【００３６】
アドレス選択／パイプ処理部１３ｆは、命令制御ユニット１１から出力された命令の対象となるアドレスを命令パイプラインに投入する。例えば、アドレス選択／パイプ処理部１３ｆは、命令の対象となるアドレスをアドレス比較部１３ｇやアドレス管理部１３ｉに出力する。そして、アドレス選択／パイプ処理部１３ｆは、アドレス管理部１３ｉから投入指示を受信した場合には、アドレスを命令パイプラインに投入し、アドレス管理部１３ｉから抑止指示を受信した場合には、アドレスの命令パイプラインへの投入を抑止する。
【００３７】
アドレス比較部１３ｇは、アドレス保持部１３ｃのＸＦＩＬＬアドレス保持部１３ｅで保持されるＸＦＩＬＬ命令の対象アドレスと、アドレス選択／パイプ処理部１３ｆによって命令パイプラインへの投入対象となっているアドレスとを比較する。そして、アドレス比較部１３ｇは、比較対象のアドレスが一致する場合には、アドレス選択／パイプ処理部１３ｆによって命令パイプラインへの投入対象となっているアドレスに対応する命令を抑止する指示を命令選択／パイプ処理部１３ｂに出力する。同様に、アドレス比較部１３ｇは、アドレス選択／パイプ処理部１３ｆによって命令パイプラインへの投入対象となっているアドレスの投入を抑止する指示をアドレス管理部１３ｉに出力する。より具体的に説明すると、アドレス比較部１３ｇは、ＸＦＩＬＬ命令の対象となっているアドレスと一致したロード命令又はストア命令の実行を抑止する。
【００３８】
一方、アドレス比較部１３ｇは、比較対象のアドレスが一致しない場合には、アドレス選択／パイプ処理部１３ｆによって命令パイプラインへの投入対象となっているアドレスに対応する命令の実行指示を命令選択／パイプ処理部１３ｂに出力する。同様に、アドレス選択／パイプ処理部１３ｆによって命令パイプラインへの投入対象となっているアドレスの投入指示をアドレス管理部１３ｉに出力する。
【００３９】
アドレス比較部１３ｈは、アドレス保持部１３ｃのＸＦＩＬＬアドレス保持部１３ｅで保持されるＸＦＩＬＬ命令の対象アドレスと、アドレス管理部１３ｉで管理され抑止されているアドレスとを比較して一致するか否かを判定する。そして、アドレス比較部１３ｈは、比較対象のアドレスが一致する場合には、抑止されているアドレスに対応する命令の抑止状態を維持する指示を命令再投入管理部１３ｋに出力する。同様に、アドレス比較部１３ｈは、抑止されているアドレスの投入の抑止を維持する指示をアドレス管理部１３ｉに出力する。
【００４０】
より具体的に説明すると、アドレス比較部１３ｈは、ＸＦＩＬＬ命令の対象となっているアドレスと一致した抑止されているロード命令又はストア命令の抑止を引き続き維持する。
【００４１】
一方、アドレス比較部１３ｈは、比較対象のアドレスが一致しない場合には、アドレス管理部１３ｉで管理され抑止されているアドレスに対応する命令を、命令パイプラインに投入する指示を命令再投入管理部１３ｋに出力する。同様に、アドレス比較部１３ｈは、抑止されているアドレスの投入する指示をアドレス管理部１３ｉに出力する。
【００４２】
アドレス管理部１３ｉは、アドレス選択／パイプ処理部１３ｆから出力されたアドレスを管理する。例えば、アドレス管理部１３ｉは、アドレス比較部１３ｇからアドレスの投入指示を受信した場合には、アドレスの投入指示をアドレス選択／パイプ処理部１３ｆに出力する。また、アドレス管理部１３ｉは、アドレス比較部１３ｇからアドレスの抑止指示を受信した場合には、アドレスの投入の抑止指示をアドレス選択／パイプ処理部１３ｆに出力する。
【００４３】
さらに、アドレス管理部１３ｉは、アドレス比較部１３ｈからアドレスの投入指示を受信した場合には、抑止されているアドレスの投入指示をアドレス選択／パイプ処理部１３ｆに出力する。また、アドレス管理部１３ｉは、アドレス比較部１３ｈから抑止されているアドレスの抑止状態を維持する指示を受信した場合には、抑止されているアドレスの投入抑止指示をアドレス選択／パイプ処理部１３ｆに出力する。
【００４４】
命令完了通知部１３ｊは、命令選択／パイプ処理部１３ｂや命令再投入管理部１３ｋによって命令パイプラインに投入された命令の実行が完了したかを監視する。そして、命令完了通知部１３ｊは、命令の実行が完了した場合には、命令完了通知を命令選択／パイプ処理部１３ｂやアドレス保持部１３ｃ等に出力する。
【００４５】
命令再投入管理部１３ｋは、アドレス比較部１３ｇの比較結果によって抑止されている命令に対して、アドレス比較部１３ｈによる比較によってアドレスが一致していないと判定された場合に、抑止されていた命令を命令パイプラインに投入する。
【００４６】
図１に戻り、１次命令キャッシュメモリ１４は、高速なアクセスが可能なキャッシュメモリであって、比較的使用頻度の高い命令を記憶する。１次データキャッシュメモリ１５は、２次キャッシュメモリ１６ａよりも高速なアクセスが可能なキャッシュメモリであって、局所性の高いデータを記憶する。なお、１次命令キャッシュメモリ１４または１次データキャッシュメモリ１５は、容量が異なるものの、後述する２次キャッシュメモリ１６ａ（図３参照）と同様、タグメモリ部１６ｂとデータ部１６ｃとを有する。なお、１次命令キャッシュメモリ１４または１次データキャッシュメモリ１５の構成も、後述する２次キャッシュメモリ１６ａ（図３参照）と同様、本実施の形態に開示したものに限定されるものではない。
【００４７】
外部接続ユニット１６は、２次キャッシュメモリ１６ａを有するとともに、記憶ユニット１３や主記憶装置２０との間の各種制御を実施する。２次キャッシュメモリ１６ａは、プロセッサ１０に参照される命令やデータとして、主記憶装置２０に保持される命令やデータの一部を記憶する。
【００４８】
例えば、２次キャッシュメモリ１６ａは、１〜４Ｍバイトの容量を有し、図３に示すように、タグメモリ部１６ｂとデータ部１６ｃとを有する。例えば、タグメモリ部１６ｂは、キャッシュラインに保持されるデータの検索に用いる４０ビットのタグアドレスと、キャッシュラインに保持されるデータの有効性を示す１ビットのフラグ（valid  bit）とを有する。また、データ部１６ｃは、外部接続ユニット１６が実行する命令の対象となっている指定アドレスがタグメモリ部１６ｂのタグアドレスと一致し、かつ、フラグが有効である場合に、命令の実行対象として処理される１２８バイトのデータを保持するデータフィールドを有する。なお、図３は、２次キャッシュメモリの構成を示す図である。また、図３に開示したものに限定されることはない。つまり、ここで示したバイト数やビット数、ウェイ数などは、あくまで例示でありこれに限定されるものではない。
【００４９】
また、外部接続ユニット１６は、記憶ユニット１３の命令選択／パイプ処理部１３ｂが２次キャッシュメモリ充填命令を実行した場合に、２次キャッシュメモリ１６ａにおける指定アドレスに対応するタグアドレスのデータフィールドに所定データを登録する。そして、外部接続ユニット１６は、指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグを有効にする。
【００５０】
例えば、外部接続ユニット１６は、記憶ユニット１３の命令選択／パイプ処理部１３ｂからＸＦＩＬＬ命令を受信した場合には、ＸＦＩＬＬ命令による処理を実行する。例えば、外部接続ユニット１６は、ＸＦＩＬＬ命令の対象アドレスに対応するデータが、２次キャッシュメモリ１６ａに登録されているか否かを判定する。そして、外部接続ユニット１６は、２次キャッシュメモリ１６ａに登録されていないと判定された場合に、主記憶装置２０の初期化対象又はコピー先の領域に対応するデータ部１６ｃに初期化データとしてオールゼロを登録する。そして、外部接続ユニット１６は、当該キャッシュラインのタグメモリ部１６ｂのフラグ（valid  bit）を有効にする。その後、外部接続ユニット１６は、ＸＦＩＬＬ命令を実行したことを記憶ユニット１３に通知する。また、外部接続ユニット１６は、２次キャッシュメモリ１６ａに登録されていると判定された場合に、何も実施することなく、ＸＦＩＬＬ命令を実行したことを記憶ユニット１３に通知する。
【００５１】
具体的に例を挙げると、外部接続ユニット１６は、ＸＦＩＬＬ命令の対象となっているアドレス０ｘ１０５０に対応するデータＢが、２次キャッシュメモリ１６ａの０ｘアドレス１０５０に登録されているか否かを判定する。すなわち、外部接続ユニット１６は、アドレス０ｘ１０５０がキャッシュヒットするか否かを判定する。そして、外部接続ユニット１６は、キャッシュヒットしなかった場合にのみ、０ｘアドレス１０５０のデータ部１６ｃにオールゼロの初期化データを登録し、キャッシュラインのタグメモリ部１６ｂのフラグを有効にする。
【００５２】
また、外部接続ユニット１６は、２次キャッシュメモリ１６ａから主記憶装置２０へのライトバックを実行する。例えば、外部接続ユニット１６は、２次キャッシュメモリ１６ａと主記憶装置２０とを常に監視する。そして、外部接続ユニット１６は、２次キャッシュメモリ１６ａに登録されるデータが、主記憶装置２０には登録されていない状態が発生した場合には、ライトバック処理を実行してデータを２次キャッシュメモリ１６ａからロードし、主記憶装置２０に登録する。例えば、２次キャッシュメモリ１６ａのアドレス０ｘ１０００のデータ部１６ｃに登録されるデータＸが、主記憶装置２０の０ｘアドレス１０００に登録されていないとする。この場合、外部接続ユニット１６は、データＸを２次キャッシュメモリ１６ａのデータ部１６ｃからロードして、主記憶装置のアドレス０ｘ１０００に登録する。
【００５３】
［プロセッサの処理］
次に、図４〜図７を用いて、実施の形態１に係るプロセッサの処理の流れを説明する。ここでは、図４を用いて全体的な処理の流れを説明し、図５を用いてＸＦＩＬＬ命令による処理の流れを説明し、図６を用いてＸＦＩＬＬ後にストア命令を実行するか否かを判定する判定処理の流れを説明し、図７を用いてストア命令による処理の流れを説明する。
【００５４】
（全体的な処理の流れ）
図４を用いて全体的な処理の流れを説明する。図４は、実施の形態１に係るプロセッサによる処理の流れを示すフローチャートである。なお、ここでは、命令制御ユニット１１がコンパイラ（プログラム）に従って、ＸＦＩＬＬ命令を実行する場合の処理の流れを説明する。すなわち、ここでは、主記憶装置２０内において一のアドレスのデータを他のアドレスにデータコピーを行う命令又は主記憶装置２０の初期化を実施する命令のいずれかを実行する場合の例について説明する。
【００５５】
図４に示すように、命令制御ユニット１１は、命令を発行する場合に（ステップＳ１０１肯定）、発行対象の命令が主記憶装置２０内において一のアドレスのデータを他のアドレスにデータコピーを行う命令を発行する（ステップＳ１０２）。なお、命令制御ユニット１１は、命令を順次発行するので、ＸＦＩＬＬ命令の後続のストア命令についても、ＸＦＩＬＬ命令を記憶ユニット１３に発行した後、記憶ユニット１３に発行する。
【００５６】
続いて、命令制御ユニット１１が発行対象の命令が主記憶装置２０内において一のアドレスのデータを他のアドレスにデータコピーを行う命令である場合には（ステップＳ１０２肯定）、外部接続ユニット１６は、データをロードする（ステップＳ１０３）。すなわち、外部接続ユニット１６は、コピー元の主記憶装置２０の領域からデータをロードして２次キャッシュメモリ１６ａに登録する。そして、記憶ユニット１３は、２次キャッシュメモリ１６ａに登録されたコピー元のデータをロードして、１次データキャッシュメモリ１５に登録する。
【００５７】
そして、命令制御ユニット１１がＸＦＩＬＬ命令を発行し、外部接続ユニット１６は、ＸＦＩＬＬ命令による処理を実行する（ステップＳ１０４）。続いて、ＸＦＩＬＬ命令が完了すると、記憶ユニット１３は、命令制御ユニット１１により発行されたＸＦＩＬＬ命令の後続のストア命令を実行するか否かを判定する判定処理を実行する（ステップＳ１０５）。このため、ＸＦＩＬＬ命令の後続のストア命令は、ＸＦＩＬＬ命令の完了までは実行されずに抑止される。また、ＸＦＩＬＬ命令の後続のストア命令で対象となるストアデータは、プログラムやソフトウエアの実行に先立って主記憶装置２０の所定領域を初期化する際に用いられる初期化データや、主記憶装置でデータをコピーする場合のコピー対象データである。
【００５８】
続いて、記憶ユニット１３は、命令制御ユニット１１が発行したＸＦＩＬＬ命令の後続のストア命令による処理を実行する（ステップＳ１０６）。その後、外部接続ユニット１６は、主記憶装置２０へのライトバックを実行する契機が発生すると（ステップＳ１０７肯定）、主記憶装置２０にライトバックを実行する（ステップＳ１０８）。
【００５９】
一方、発行対象の命令が主記憶装置２０内において一のアドレスのデータを他のアドレスにデータコピーを行う命令でない場合には（ステップＳ１０２否定）、外部接続ユニット１６は、ステップ１０３を実行することなくステップＳ１０４を実行する。すなわち、外部接続ユニット１６は、発行対象の命令が主記憶装置２０の初期化を実施すると判定された場合には、主記憶装置２０からロードすることなく、ＸＦＩＬＬ命令を実行する。
【００６０】
（ＸＦＩＬＬ命令による処理の流れ）
図５を用いて、図４に示したステップＳ１０４におけるＸＦＩＬＬ命令による処理の流れを説明する。図５は、ＸＦＩＬＬ命令の処理の流れを示すフローチャートである。
【００６１】
図５に示すように、記憶ユニット１３は、命令制御ユニット１１から発行されたＸＦＩＬＬ命令を外部接続ユニット１６に対して出力する（ステップＳ２０１）。この場合、命令制御ユニット１１は、後述するストア命令の対象となっているアドレスをＸＦＩＬＬ命令の対象アドレスとして発行する。
【００６２】
ＸＦＩＬＬ命令を実行した記憶ユニット１３は、ＸＦＩＬＬフラグ保持部１３ｄに保持されるＸＦＩＬＬフラグを有効にし、対象となっているアドレスをアドレス保持部１３ｃのＸＦＩＬＬアドレス保持部１３ｅに保持する（ステップＳ２０２）。
【００６３】
その後、ＸＦＩＬＬ命令を受信した外部接続ユニット１６は、対象アドレスがキャッシュヒットするか否か、すなわち、対象アドレスが２次キャッシュメモリ１６ａに登録されているか否かを判定する（ステップＳ２０３）。
【００６４】
そして、外部接続ユニット１６は、対象アドレスがキャッシュミスした場合（ステップＳ２０３否定）、対象アドレスのデータ部１６ｃにゼロデータを登録し、ゼロデータを登録したキャッシュラインのタグメモリ部１６ｂのフラグを有効にする（ステップＳ２０４）。続いて、記憶ユニット１３は、ＸＦＩＬＬ命令が完了したことを示すＸＦＩＬＬ完了通知を記憶ユニット１３内の命令完了通知部１３ｊなどの各部に出力する（ステップＳ２０５）。そして、記憶ユニット１３は、アドレス保持部１３ｃのＸＦＩＬＬフラグ保持部１３ｄに保持されるＸＦＩＬＬフラグを無効にする（ステップＳ２０６）。
【００６５】
一方、外部接続ユニット１６は、対象アドレスが２次キャッシュメモリ１６ａにキャッシュヒットした場合（ステップＳ２０３肯定）、ステップＳ２０４を実行することなく、ステップＳ２０５を実行する。
【００６６】
（ＸＦＩＬＬ後にストア命令を実行するか否かを判定する判定処理の流れ）
図６を用いて、図４に示したステップＳ１０５における判定処理の流れを説明する。図６は、ＸＦＩＬＬ後の判定処理の流れを示すフローチャートである。
【００６７】
図６に示すように、記憶ユニット１３は、ＸＦＩＬＬ命令の後続のストア命令を実行／投入する際に、アドレス保持部１３ｃのＸＦＩＬＬフラグ保持部１３ｄに保持されるＸＦＩＬＬフラグが有効であるか否かを判定する（ステップＳ３０１）。そして、記憶ユニット１３は、ＸＦＩＬＬフラグが有効である場合に（ステップＳ３０１肯定）、アドレスマッチを実行する（ステップＳ３０２）。すなわち、記憶ユニット１３は、アドレス保持部１３ｃのＸＦＩＬＬアドレス保持部１３ｅで保持されるアドレスと、ＸＦＩＬＬ命令の後続のストア命令の対象アドレスとが一致するか否かを判定する。
【００６８】
そして、ＸＦＩＬＬフラグが有効であり、アドレスマッチによりアドレスが一致した場合（ステップＳ３０２肯定）、記憶ユニット１３は、ＸＦＩＬＬ命令の受信後に、命令制御ユニット１１から受信したストア命令の実行を抑止する（ステップＳ３０３）。すなわち、アドレス保持部１３ｃのＸＦＩＬＬアドレス保持部１３ｅで保持されるアドレスと、ＸＦＩＬＬ命令の後続のストア命令の対象アドレスとが一致した場合は、後続のストア命令を抑止する。
【００６９】
一方、ＸＦＩＬＬフラグが無効になり、アドレスが一致した後続のストア命令が実行できる状態になった場合（ステップＳ３０１否定）、記憶ユニット１３は、ＸＦＩＬＬ命令終了まで抑止されていたストア処理の再開処理を実行する（ステップＳ３０４）。
【００７０】
一方、ＸＦＩＬＬフラグが有効であり、アドレスマッチによりアドレスが一致しない場合（ステップＳ３０２否定）、記憶ユニット１３は、ＸＦＩＬＬ命令終了まで抑止されていたストア処理の再開処理を実行する（ステップＳ３０４）。例えば、記憶ユニット１３は、アドレス保持部１３ｃのＸＦＩＬＬアドレス保持部１３ｅで保持されるアドレスと、ＸＦＩＬＬ命令の後続のストア命令の対象アドレスとが一致しない場合、アドレスマッチの結果を不一致と判定する。同様に、記憶ユニット１３は、アドレス保持部１３ｃのＸＦＩＬＬアドレス保持部１３ｅにアドレスが保持されていない場合にも、アドレスマッチの結果を不一致と判定する。
【００７１】
（ストア命令による処理の流れ）
図７を用いて、図４に示したステップＳ１０６におけるストア命令による処理の流れを説明する。図７は、ストア命令による処理の流れを示すフローチャートである。
【００７２】
図７に示すように、ストア命令を実行した記憶ユニット１３は、ストア対象のアドレスに記憶されるデータが１次データキャッシュメモリ１５にキャッシュヒットするか否かを判定する（ステップＳ４０１）。すなわち、記憶ユニット１３は、ストア対象のデータが１次データキャッシュメモリ１５に記憶されているか否か判定する。
【００７３】
そして、記憶ユニット１３は、１次データキャッシュメモリ１５にキャッシュヒットする場合（ステップＳ４０１肯定）、ストア対象データをキャッシュヒットしたアドレスに登録する処理であるストア命令を実行する（ステップＳ４０２）。
【００７４】
一方、１次データキャッシュメモリ１５にキャッシュヒットしない場合（ステップＳ４０１否定）、外部接続ユニット１６は、ストア対象のアドレスに記憶されるデータが２次キャッシュメモリ１６ａにヒットするか否かを判定する（ステップＳ４０３）。すなわち、外部接続ユニット１６は、ストア対象のデータが２次キャッシュメモリ１６ａに記憶されているか否か判定する。
【００７５】
そして、外部接続ユニット１６は、２次キャッシュメモリ１６ａにキャッシュヒットする場合（ステップＳ４０３肯定）、２次キャッシュメモリ１６ａのデータを１次データキャッシュメモリ１５に登録する（ステップＳ４０４）。その後、プロセッサ１０は、ステップＳ４０１に戻って、以降の処理を実行する。
【００７６】
一方、外部接続ユニット１６は、２次キャッシュメモリ１６ａにキャッシュミスした場合（ステップＳ４０３否定）、主記憶装置２０からストア対象アドレスのデータをロードする（ステップＳ４０５）。続いて、外部接続ユニット１６は、主記憶装置２０からロードしたデータを、１次データキャッシュメモリ１５及び２次キャッシュメモリ１６ａそれぞれにおけるストア対象アドレスに登録する（ステップＳ４０６）。その後、プロセッサ１０は、ステップＳ４０１に戻って、以降の処理を実行する。
【００７７】
［処理の具体例］
ここで、上述した処理について、具体的な例として、主記憶装置２０の所定領域を初期化する例と、主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーする例とについて説明する。
【００７８】
（主記憶装置の初期化）
まず、主記憶装置２０の所定アドレスを初期化する例について説明する。ここでは、初期化対象のアドレスを０ｘ１０００とする。命令制御ユニット１１は、初期化するストア命令を発行する前に、ストア対象のアドレス０ｘ１０００に対するＸＦＩＬＬ命令を記憶ユニット１３に発行する。続いて、命令制御ユニット１１は、主記憶装置２０の所定領域を初期化するデータ（オールゼロ）のストアを要求するストア命令を記憶ユニット１３に発行する。
【００７９】
そして、記憶ユニット１３は、命令制御ユニット１１から受信したＸＦＩＬＬ命令（アドレス１０００）を実行し、外部接続ユニット１６にＸＦＩＬＬ命令の実行を依頼する。続いて、外部接続ユニット１６は、アドレス０ｘ１０００に対してＸＦＩＬＬ命令を実行する。すなわち、外部接続ユニット１６は、アドレス０ｘ１０００が２次キャッシュメモリ１６ａにキャッシュミスする場合には、アドレス０ｘ１０００のデータ部１６ｃにオールゼロデータを登録する。そして、外部接続ユニット１６は、アドレス０ｘ１０００のタグメモリ部１６ｂのフラグを有効、言い換えると、アドレス０ｘ１０００のタグメモリ部１６ｂのタグアドレスを有効にする。一方、外部接続ユニット１６は、アドレス０ｘ１０００が２次キャッシュメモリ１６ａにキャッシュヒットした場合には、オールゼロデータの登録を実施せず、タグの有効化も実施しない。
【００８０】
一方で、記憶ユニット１３は、ＸＦＩＬＬ命令を実行する際に、ＸＦＩＬＬ命令の対象となっているアドレス１０００をアドレス保持部１３ｃのＸＦＩＬＬアドレス保持部１３ｅに格納する。そして、記憶ユニット１３は、アドレス保持部１３ｃのＸＦＩＬＬアドレス保持部１３ｅに記憶されるアドレスと、ＸＦＩＬＬ命令を発行した後の命令の対象となるアドレスとが一致するか否かを判定するアドレスマッチを行う。この結果、記憶ユニット１３は、ＸＦＩＬＬ命令を発行した後の命令がアドレス０ｘ１０００に対する命令である場合、すなわち、アドレスがマッチすると判定した場合には、ＸＦＩＬＬの後続命令の実行を抑止する。したがって、記憶ユニット１３は、ＸＦＩＬＬ命令の後続のストア命令、言い換えると、アドレス０ｘ１０００のデータ部１６ｃに初期化データを格納するストア命令の実行を抑止できる。なお、記憶ユニット１３は、ＸＦＩＬＬ命令が完了するまで、ＸＦＩＬＬ命令の後続のストア命令を抑止する。
【００８１】
その後、外部接続ユニット１６は、アドレス０ｘ１０００のデータ部１６ｃにオールゼロデータを登録し、アドレス０ｘ１０００のタグメモリ部１６ｂのフラグを有効にすると、ＸＦＩＬＬ命令完了通知を記憶ユニット１３に出力する。ＸＦＩＬＬ命令完了通知を受信した記憶ユニット１３は、アドレス保持部１３ｃのＸＦＩＬＬフラグ保持部１３ｄのフラグを無効にする。この結果、記憶ユニット１３は、アドレス保持部１３ｃに記憶されるアドレスとマッチしないと判定し、ＸＦＩＬＬ命令の後続のストア命令であるアドレス０ｘ１０００のデータ部１６ｃに初期化データを格納するストア命令を実行する。
【００８２】
具体的には、記憶ユニット１３は、アドレス０ｘ１０００が１次データキャッシュメモリ１５にキャッシュヒットする場合には、１次データキャッシュメモリ１５のアドレス０ｘ１０００に初期化データを登録する。また、記憶ユニット１３は、アドレス０ｘ１０００が１次データキャッシュメモリ１５にキャッシュミスした場合には、外部接続ユニット１６に対してストア命令の実行を要求する。この要求を受信した外部接続ユニット１６は、アドレス０ｘ１０００が２次キャッシュメモリ１６ａにキャッシュヒットするか否かを判定する。そして、外部接続ユニット１６は、キャッシュヒットする場合には、２次キャッシュメモリ１６ａのアドレス０ｘ１０００のデータ部１６ｃに初期化データを登録する。そして、プロセッサ１０は、主記憶装置２０にアクセスすることなく、初期化データをキャッシュメモリに登録することができる。
【００８３】
その後、外部接続ユニット１６は、主記憶装置２０へライトバックするタイミングで、２次キャッシュメモリ１６ａのアドレス０ｘ１０００のデータ部１６ｃに登録した初期化データを、主記憶装置２０のアドレス０ｘ１０００に登録する。この結果、外部接続ユニット１６は、主記憶装置２０へのアクセスを１回行うだけで、初期化データを所定アドレスに登録することができる。また、例えば、初期化対象の開始アドレスを０ｘ１０００、終了アドレスを０ｘ１０１０などのように、所定領域を初期化する場合、各対象アドレスに対して上述したＸＦＩＬＬ命令およびストア命令を実行する。この結果、アドレス０ｘ１０００から０ｘ１０１０を初期化することができる。
【００８４】
（データコピー）
次に、図８を用いて、主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーする例について説明する。図８は、実施の形態１に係るプロセッサによる主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーする処理を説明する図である。ここでは、コピー元のアドレスを０ｘ１０００、コピー先のアドレスを０ｘ１０８０とする。
【００８５】
命令制御ユニット１１は、コピー元のデータをロードするため、アドレス０ｘ１０００のロード命令を発行する。そして、外部接続ユニット１６は、図８に示すように、コピー元である主記憶装置２０のアドレス０ｘ１０００のデータＡをロードし、１次データキャッシュメモリ１５のアドレス０ｘ１０００と２次キャッシュメモリ１６ａのアドレス０ｘ１０００それぞれにデータＡを登録する。
【００８６】
その後、データＡのロード処理が終了したことを外部接続ユニット１６から受信した命令制御ユニット１１は、コピーする処理ストア命令を発行する前に、ストア対象のアドレス０ｘ１０８０に対するＸＦＩＬＬ命令を記憶ユニット１３に発行する。そして、命令制御ユニット１１は、主記憶装置２０におけるコピーの対象領域に対するストア命令を記憶ユニット１３に発行する。
【００８７】
そして、記憶ユニット１３は、命令制御ユニット１１から受信したＸＦＩＬＬ命令（アドレス０ｘ１０８０）を実行し、外部接続ユニット１６にＸＦＩＬＬ命令の実行を依頼する。そして、外部接続ユニット１６は、アドレス０ｘ１０８０に対してＸＦＩＬＬ命令を実行する。すなわち、外部接続ユニット１６は、アドレス０ｘ１０８０が２次キャッシュメモリ１６ａにキャッシュミスした場合には、アドレス０ｘ１００８のデータ部１６ｃにオールゼロデータを登録し、アドレス０ｘ１０８０のタグメモリ部１６ｂのフラグを有効にする。一方、外部接続ユニット１６は、アドレス０ｘ１０８０が２次キャッシュメモリ１６ａにキャッシュヒットした場合には、オールゼロデータの登録を実施せず、タグの有効化も実施しない。
【００８８】
一方で、記憶ユニット１３は、ＸＦＩＬＬ命令を実行する際に、ＸＦＩＬＬ命令の対象となっているアドレス０ｘ１０８０をアドレス保持部１３ｃのＸＦＩＬＬアドレス保持部１３ｅに格納する。そして、記憶ユニット１３は、ＸＦＩＬＬアドレス保持部１３ｅに記憶されるアドレスと、ＸＦＩＬＬ命令を発行した後の命令の対象となるアドレスとが一致するか否かを判定するアドレスマッチを行う。この結果、記憶ユニット１３は、ＸＦＩＬＬ命令を発行した後の命令がアドレス０ｘ１０８０に対する命令である場合、すなわち、アドレスがマッチすると判定した場合には、命令の実行を抑止する。したがって、記憶ユニット１３は、ＸＦＩＬＬ命令の後続のストア命令、言い換えると、アドレス０ｘ１０８０のデータ部１６ｃにデータＡをコピーするストア命令の実行を抑止できる。なお、記憶ユニット１３は、ＸＦＩＬＬ命令が完了するまで、ＸＦＩＬＬ命令の後続のストア命令を抑止する。
【００８９】
その後、外部接続ユニット１６は、アドレス０ｘ１０８０のデータ部１６ｃにオールゼロデータを登録し、アドレス０ｘ１０８０のタグメモリ部１６ｂのフラグを有効にすると、ＸＦＩＬＬ命令完了通知を記憶ユニット１３に出力する。ＸＦＩＬＬ命令完了通知を受信した記憶ユニット１３は、ＸＦＩＬＬアドレス保持部１３ｅからアドレス０ｘ１０８０を削除する。この結果、記憶ユニット１３は、ＸＦＩＬＬアドレス保持部１３ｅに記憶されるアドレスとマッチしないと判定し、ＸＦＩＬＬ命令の後続のストア命令であるアドレス０ｘ１０８０にデータＡをコピーするストア命令を実行する。
【００９０】
具体的には、記憶ユニット１３は、アドレス０ｘ１０８０が１次データキャッシュメモリ１５にキャッシュヒットするか否かを判定し、キャッシュヒットする場合には、１次データキャッシュメモリ１５のアドレス０ｘ１０８０にデータＡを登録する。また、記憶ユニット１３は、アドレス０ｘ１０８０が１次データキャッシュメモリ１５にキャッシュミスした場合には、外部接続ユニット１６に対してストア命令の実行を要求する。この要求を受信した外部接続ユニット１６は、アドレス０ｘ１０８０が２次キャッシュメモリ１６ａにキャッシュヒットするか否かを判定する。そして、外部接続ユニット１６は、キャッシュヒットする場合には、２次キャッシュメモリ１６ａのアドレス０ｘ１０８０のデータ部１６ｃにデータＡを登録する。この結果、プロセッサ１０は、主記憶装置２０にアクセスすることなく、データＡをキャッシュメモリに登録することができる。
【００９１】
その後、外部接続ユニット１６は、ライトバックするタイミングで、２次キャッシュメモリ１６ａのアドレス０ｘ１０８０に登録したデータＡを、主記憶装置２０のアドレス０ｘ１０８０に登録する。この結果、外部接続ユニット１６は、コピー先のアドレス０ｘ１０８０のデータＢをロードすることなく、コピー元のアドレス０ｘ１０００のデータＡをコピー先のアドレス０ｘ１０８０に登録することができる。
【００９２】
また、例えば、コピー元の対象アドレスが０ｘ１０００であり、コピー先のアドレスが０ｘ１０１０から０ｘ１０１５などのように、複数の領域にデータコピーを行うこともできる。この場合、プロセッサ１０は、上述した処理と同様、まずアドレス０ｘ１０００からデータをロードする。そして、プロセッサ１０は、コピー先の各アドレスに対して、上述したＸＦＩＬＬ命令およびストア命令を実行することで、コピー元のデータをコピーすることができる。
【００９３】
［実施の形態１による効果］
このように、実施の形態１に係るプロセッサ１０は、主記憶装置２０の初期化の場合には、主記憶装置２０へのアクセスをライトバック時の１回に抑えることができる。また、プロセッサ１０は、主記憶装置２０間のコピーの場合には、主記憶装置２０へのアクセスを、コピー元データをロードする時とライトバック時の２回に抑えることができる。この結果、プロセッサ１０は、ブロックストア命令を用いる場合と比較しても、主記憶装置２０の初期化又は主記憶装置２０から主記憶装置２０にデータコピーを高速に処理することが可能である。
【００９４】
（実施の形態１における命令順序制御による効果）
また、従来から利用されているブロックストア命令は、プロセッサが１次キャッシュメモリ、２次キャッシュメモリ、メインメモリ等のメモリからデータをロードまたはメモリにデータをストアする順序の規約であるメモリオーダリングを保証できない。例えば、ブロックストアを行った領域に対して、その後にストアを行った場合、最終的にその領域にブロックストアで書き込んだデータが残るのかストア命令で書き込んだデータが残るのか、どちらが残るかは命令仕様上保証されていない。また、ブロックストアを行った領域に対して、ロードを行った場合、ブロックストアを行う前にそこに存在していたデータが読み出されるか、ブロックストアで書き込んだデータが読み出されるか、どちらのデータが読み出されるかはプログラム上保証されていない。
【００９５】
このため、ブロックストア命令を実施するプロセッサは、ブロックストア命令との間でロード命令またはストア命令の実行結果を保証する手法として、メモリアクセスの逐次化を行うｍｅｍｂａｒ（memory  barrier）命令を実行していた。プロセッサは、ブロックストア命令を実行した後に、ｍｅｍｂａｒ命令を実行する。この結果、その後に実行される命令は、ブロックストア命令の実行が完了してから実行されることが保証される。
【００９６】
ところが、ｍｅｍｂａｒ命令を実行することにより逐次化処理が発生し、プロセッサの処理速度の低下を引き起こす場合がある。また、プログラムを作成する際にｍｅｍｂａｒ命令の挿入を忘れるケースがある。この場合、ロード命令又はストア命令の実行結果が保証されず、状況によって逐次化されたように見えたり、逐次化されなかったように見えたりする動作の不安定さから、プログラムバグの原因となっていた。
【００９７】
これに対して、実施の形態１に係るプロセッサ１０は、ＸＦＩＬＬ命令と後続のストア命令の順序を制御することができる。また、プロセッサ１０は、順序制御にあたって、ｍｅｍｂａｒ命令の実行によるメモリバリア制御による逐次化処理を行う必要もないので、不要な逐次処理の発生も抑止し、動作の不安定さを解消し、プログラムバグの原因を取り除くことができる。
【００９８】
例えば、実施の形態１に係るプロセッサ１０は、アドレス保持部１３ｃによってＸＦＩＬＬ命令対象のアドレスを保持してアドレスマッチを行うことで、ＸＦＩＬＬ命令に後続するストア命令の実行を抑止することができる。例えば、図９と図１０を用いて、ＸＦＩＬＬ命令によってオールゼロが登録された領域にデータＡをストアする場合について説明する。図９は、先行命令のＸＦＩＬＬ命令の完了を待たずに後続のストア命令を実行した場合の例を示す図であり、図１０は、先行命令のＸＦＩＬＬ命令の完了を待って後続のストア命令を実行した場合の例を示す図である。
【００９９】
図９に示す先行命令のＸＦＩＬＬ命令の完了を待たずに後続のストア命令を実行した場合とは、ストア命令（データＡ）がＸＦＩＬＬ命令抑止中に主記憶装置２０に掃きだされて、２次キャッシュメモリ１６ａのタグメモリ部１６ｂのフラグが無効（invalid）になった場合である。この場合、ＸＦＩＬＬ命令よりも先に、ストア命令（データＡ）が実行される。したがって、図９に示すように、先に登録されたデータＡをＸＦＩＬＬ命令のオールゼロデータで上書きすることになり、最終的に登録したいデータＡが登録できない。
【０１００】
これに対して、図１０に示すように、先行命令のＸＦＩＬＬ命令の完了を待って後続のストア命令を実行した場合、ＸＦＩＬＬ命令よりも先に、ストア命令（データＡ）が実行されることがない。したがって、図１０に示すように、先に登録されたＸＦＩＬＬ命令のオールゼロデータをデータＡで上書きすることになり、最終的に登録したいデータＡが登録できる。
【０１０１】
このように、実施の形態１に係るプロセッサ１０は、ＸＦＩＬＬ命令と後続のストア命令の順序を制御することができる。また、プロセッサ１０は、順序制御にあたって、ｍｅｍｂａｒ命令の実行によるメモリバリア制御による逐次化処理を行う必要もないので、不要な逐次処理の発生も抑止することができる。さらに、このように不要な逐次処理の発生も抑止できるので、より高速なメモリ制御が可能である。
【０１０２】
また、実施の形態１に係るプロセッサ１０は、ＸＦＩＬＬ命令の対象となった主記憶装置２０の領域が２次キャッシュメモリ１６ａに登録されていた場合は、２次キャッシュメモリ１６ａにゼロクリア（ゼロデータ登録）を実行せずに処理を完了する。また、プロセッサ１０は、２次キャッシュメモリ１６ａのタグメモリ部１６ｂのフラグを有効にする作業も行わない。すなわち、何もせずにこの処理の実行を完了する。
【０１０３】
つまり、２次キャッシュメモリ１６ａに登録されていたということは、１次データキャッシュメモリ１５にも処理対象となった主記憶装置２０のデータが登録されている可能性がある。したがって、プロセッサ１０は、処理対象領域を２次キャッシュメモリ１６ａ上でゼロクリアをする場合、そのデータが１次データキャッシュメモリ１５に登録されているかどうかを検索する。そして、プロセッサ１０は、１次データキャッシュメモリ１５に登録されていれば、その１次データキャッシュメモリ１５上のキャッシュラインを無効化し、すべての１次データキャッシュメモリ１５で無効化されている状態にあることを確認する。その上で、プロセッサ１０は、２次キャッシュメモリ１６ａ上でゼロクリアを実行しなければならない。
【０１０４】
また、プロセッサ１０は、処理完了に当たって、２次キャッシュメモリ１６ａ上でのゼロクリア処理と１次データキャッシュメモリ１５の無効化完了待ち処理のすれ違いが起きないように制御する必要もある。そうしないと、１次データキャッシュメモリ１５と２次キャッシュメモリ１６ａとの間で不正なデータの不一致が生じる可能性がある。こうした設計を正しく実装するにはそれなりの検証工数を要し、また出荷後にバグを発生させる危険性も存在する。
【０１０５】
こうした危険を回避するために、実施の形態１に係るプロセッサ１０は、キャッシュヒットしている場合は、２次キャッシュメモリ１６ａ上でのゼロクリア処理は行わないように制御する。この結果、実施の形態１に係るプロセッサ１０は、処理対象となる主記憶装置２０の領域に対して、１次データキャッシュメモリ１５の無効化やすれ違いの監視処理が不要となり、２次キャッシュメモリ１６ａの制御の簡略化が可能となる。なお、２次キャッシュメモリ１６ａ上でゼロクリア処理を行わない場合であっても、キャッシュヒットしていることは、その領域が元々自身のメモリ管理ユニット（Memory  Management  Unit）管理下に置かれていたため参照可能な領域を参照したことを意味する。また、ＸＦＩＬＬ命令対象と同一データ領域をアクセスする先行ロード／ストア処理の完了を保証するために、ＸＦＩＬＬ命令の処理の実行は先行するロード／ストア処理の完了を待たせる。
【０１０６】
（レジスタの有効活用）
また、ブロックストア命令では、例えば６４バイトのデータを演算器等の実行ユニット１２のレジスタ上に用意し、これをストアデータとして使用していた。ブロックストア命令を単純に拡張すると、例えば１２８バイト又は例えば２５６バイトのデータを扱う命令となる。この場合、キャッシュラインの拡大に応じて、演算器のレジスタに用意するデータ量が増加し、そのデータは１つのブロックストア命令に対して一括して準備する必要があるため、実行ユニット１２にデータを供給するレジスタファイルの枯渇が起きやすくなる。さらに、キャッシュラインサイズが変わるたびに命令が処理するデータ幅を定義しなおすアラインを実施する必要が生じるため、計算機装置を構成するプロセッサのキャッシュサイズに応じて、ブロックストア命令をすべて用意する必要がある。
【０１０７】
実施の形態１に係るプロセッサ１０では、メモリの高速制御をブロックストア命令を用いずに実現できるので、レジスタの領域をブロックストアで使用することもなく、レジスタを効率的に利用できる。また、実施の形態１に係るプロセッサ１０では、キャッシュラインサイズが変わるたびに命令が処理するデータ幅を定義しなおす必要もないので、プロセッサ等の設計時間を大幅に短縮できる。
【実施例２】
【０１０８】
[実施の形態２]
さて、これまで本願の開示するキャッシュメモリ制御装置の実施の形態について説明したが、本願は上述した実施の形態以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施の形態を説明する。
【０１０９】
（キャッシュメモリの階層）
上述した実施の形態１では、２つの１次キャッシュメモリと１つの２次キャッシュメモリを用いた場合について説明したが、キャッシュメモリの数はこれに限定されるものではない。また、実施の形態１では、２階層のキャッシュメモリを例にしたが、階層を限定するものではない。例えば、１次キャッシュメモリと２次キャッシュメモリと３次キャッシュメモリとの３階層であっても、３次キャッシュメモリをＸＦＩＬＬ対象とすれば、本願の開示するキャッシュメモリ制御装置を適用することができる。つまり、最も主記憶装置に近いキャッシュメモリをＸＦＩＬＬ対象とすることで、どのような階層のキャッシュメモリでも、実施の形態１と同様に処理することができる。
【０１１０】
（ＸＦＩＬＬ命令で登録するデータ）
上述した実施の形態１では、ＸＦＩＬＬ命令でオールゼロを登録する例について説明したが、これに限定されるものではない。例えば、主記憶装置２０にあるストア対象のデータは、すべてストアデータにより置き換えられるので、データはエラーが無い状態であれば何でも良い。
【０１１１】
（適応プロセッサ）
また、本願の開示するキャッシュメモリ制御装置には、プロセッサ上に複数のプロセッサコアおよび複数の１次キャッシュメモリが存在してもよい。例えば、単一のプロセッサを有するシステムに適用した場合の方が、ＳＭＰ（Symmetrical  Multi−Processing）など複数のプロセッサを有するシステムの場合よりも高速に処理できる。また、複数のプロセッサを有するシステムの場合、キャッシュラインを登録する前に、他のプロセッサにキャッシュラインの無効化を要求し、無効化完了通知を待たなければならない。したがって、単一のプロセッサを用いたシステムにおいては、他のプロセッサが存在しないので、この処理を省力することが可能となり、より高速にメモリ制御が実施できる。
【０１１２】
（プリフェッチ機構への適用）
最近のプロセッサは、ハードウエアプリフェッチ機構というものを実装しているものが多く存在する。ハードウエアプリフェッチ機構は、ロード・ストア命令の実行アドレスを監視して、将来ロード・ストア命令が実行されそうな領域を主記憶装置２０からあらかじめ取り出す機能が働く。本願の開示するキャッシュメモリ制御装置を実装する場合、ハードウエアプリフェッチの実行禁止を指示してストア命令を実行することにより、ストア対象領域がＸＦＩＬＬ命令に先立ってハードウエアプリフェッチで２次キャッシュメモリに登録される事態を回避する。こうすることで、本願の開示するキャッシュメモリ制御装置は、ハードウエアプリフェッチ機構を有するプロセッサにも適用することができる。
【０１１３】
（サーバの構成）
本実施の形態で開示するプロセッサが組み込まれたサーバの構成を図１１に示す。図１１は、サーバの構成を示す図である。図１１に示すように、サーバは、バックプレーン１００に複数のクロスバスイッチとしてＸＢ１０１、ＸＢ１０２などを有し、クロスバスイッチそれぞれにシステムボードとしてＳＢ１１０〜ＳＢ１１３と入出力システムボード（ＩＯＳＢ）１５０とを有する。なお、クロスバスイッチ、システムボード、入出力システムボードの数はあくまで例示であり、これに限定されるものではない。
【０１１４】
バックプレーン１００は、複数のコネクタ等を相互接続するバスを形成する回路基板である。ＸＢ１０１、ＸＢ１０２は、システムボードと入出力システムボードとの間でやり取りされるデータの経路を動的に選択するスイッチである。
【０１１５】
また、ＸＢ１０１、ＸＢ１０２それぞれに接続されるＳＢ１１０、ＳＢ１１１、ＳＢ１１２、ＳＢ１１３は、電子機器を構成する電子回路基板であり同様の構成を有するので、ここではＳＢ１１０についてのみ説明する。ＳＢ１１０は、システムコントローラ（System  Controller：SC）と、４台のＣＰＵと、メモリアクセスコントローラ（Memory  Access  Controller：MAC）と、ＤＩＭＭ（Dual  Inline  Memory  Module）とを有する。
【０１１６】
ＳＣ１１０ａは、ＳＢ１１０に搭載されるＣＰＵ１１０ｂ〜１１０ｅとＭＡＣ１１０ｆ、ＭＡＣ１１０ｇとの間におけるデータ転送などの処理を制御し、ＳＢ１００全体を制御する。ＣＰＵ１１０ｂ〜１１０ｅそれぞれは、ＳＣを介して他の電子機器と接続され、本実施の形態で開示したキャッシュメモリ制御方法を実現するプロセッサである。ＭＡＣ１１０ｆは、ＤＩＭＭ１１０ｈとＳＣとの間に接続され、ＤＩＭＭ１１０ｈへのアクセスを制御する。ＭＡＣ１１０ｇは、ＤＩＭＭ１１０ｉとＳＣとの間に接続され、ＤＩＭＭ１１０ｉへのアクセスを制御する。ＤＩＭＭ１１０ｈは、ＳＣを介して他の電子機器と接続され、メモリを装着してメモリ増設などを行うメモリモジュールである。ＤＩＭＭ１１０ｉは、ＳＣを介して他の電子機器と接続され、メモリを装着してメモリ増設などを行うメモリモジュールである。
【０１１７】
ＩＯＳＢ１５０は、ＸＢ１０１を介してＳＢ１１０〜ＳＢ１１３それぞれと接続されるとともに、ＳＣＳＩ（Small  Computer  System  Interface）、ＦＣ（Fibre  Channel）、イーサネット（登録商標）などを介して入出力デバイスと接続される。ＩＯＳＢ１５０は、入出力デバイスとＸＢ１０１との間におけるデータ転送などの処理を制御する。なお、ＳＢ１１０に搭載されるＣＰＵ、ＭＡＣ、ＤＩＭＭなどの電子機器はあくまで例示であり、電子機器の種類又は電子機器の数が図示したものに限定されるものではない。
【０１１８】
（システム）
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。例えば、アドレス比較部１３ｇとアドレス比較部１３ｈを統合するなど各装置の分散・統合の具体的形態は図示のものに限られない。その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵやＭＰＵおよび当該ＣＰＵやＭＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【符号の説明】
【０１１９】
１０  プロセッサ
１１  命令制御ユニット
１２  実行ユニット
１３  記憶ユニット
１３ａ  制御部
１３ｂ  命令選択／パイプ処理部
１３ｃ  アドレス保持部
１３ｄ  ＸＦＩＬＬフラグ保持部
１３ｅ  ＸＦＩＬＬアドレス保持部
１３ｆ  アドレス選択／パイプ処理部
１３ｇ  アドレス比較部
１３ｈ  アドレス比較部
１３ｉ  アドレス管理部
１３ｊ  命令完了通知部
１３ｋ  命令再投入管理部
１４  １次命令キャッシュメモリ
１５  １次データキャッシュメモリ
１６  外部接続ユニット
１６ａ  ２次キャッシュメモリ
１６ｂ  タグメモリ部
１６ｃ  データ部
２０  主記憶装置
【図１】
0005482197.tif 000002
【図２】
0005482197.tif 000003
【図３】
0005482197.tif 000004
【図４】
0005482197.tif 000005
【図５】
0005482197.tif 000006
【図６】
0005482197.tif 000007
【図７】
0005482197.tif 000008
【図８】
0005482197.tif 000009
【図９】
0005482197.tif 000010
【図１０】
0005482197.tif 000011
【図１１】
0005482197.tif 000012
【図１２】
0005482197.tif 000013
【図１３】
0005482197.tif 000014