(57)【要約】【課題】  回路規模を増加させることなくアドレスの一致が誤って検出されることを抑止し、命令がアボートされることを抑止する。【解決手段】  ストア情報記憶部は、バッファ部がデータを保持している間、ストア命令に含まれるディスティネーションアドレスの一部である第１部分ディスティネーションアドレス情報と、ストア命令に基づき制御部が出力したヒット情報を記憶する。判定部は、ストア命令の後続のロード命令に含まれるソースアドレスの一部である第１部分ソースアドレス情報の一部が、第１部分ディスティネーションアドレス情報と重複する場合、ロード命令に含まれるソースアドレスに応じて制御部が出力するヒット情報と、ストア情報記憶部が記憶するヒット情報とに基づき、ロード命令の継続を判定する。【選択図】    図１
2015210577.tif 000002
【特許請求の範囲】
【請求項１】
演算を実行する演算部と、
前記演算部が使用するデータを記憶するキャッシュメモリ部と、
前記演算部から前記キャッシュメモリ部にデータを転送するストア命令および前記キャッシュメモリ部から前記演算部にデータを転送するロード命令のいずれかを発行する命令発行部と、
前記ストア命令の実行時に前記演算部が出力したデータを保持するバッファ部と、
前記キャッシュメモリ部が記憶するデータのアドレスを記憶するタグ部と、
前記ストア命令に含まれるデータの格納先を示すディスティネーションアドレスまたは前記ロード命令に含まれるデータの読み出し元を示すソースアドレスと前記タグ部が記憶するアドレスとに基づき、前記キャッシュメモリ部にデータが存在することを示すヒット情報を出力する制御部と、
前記バッファ部がデータを保持している間、前記ストア命令に含まれるディスティネーションアドレスの一部である第１部分ディスティネーションアドレス情報と、前記ストア命令に基づき前記制御部が出力した前記ヒット情報を記憶するストア情報記憶部と、
前記ストア命令の後続のロード命令に含まれるソースアドレスの一部である第１部分ソースアドレス情報の一部が、前記第１部分ディスティネーションアドレス情報と重複する場合、前記ロード命令に含まれるソースアドレスに応じて前記制御部が出力するヒット情報と、前記ストア情報記憶部が記憶するヒット情報とに基づき、前記ロード命令の継続を判定する判定部を有することを特徴とする演算処理装置。
【請求項２】
前記ストア情報記憶部は、さらに、前記ストア命令に含まれるディスティネーションアドレスにおいて前記第１部分ディスティネーションアドレス情報を除く第２部分ディスティネーションアドレス情報を記憶し、
前記演算処理装置は、さらに、
前記ロード命令に対応する前記第１部分ソースアドレス情報と、前記ストア情報記憶部が記憶する前記第１部分ディスティネーションアドレス情報との一致を検出する第１アドレス一致検出部と、
前記ロード命令に含まれるソースアドレスにおいて前記第１部分ソースアドレス情報を除く第２部分ソースアドレス情報と、前記ストア情報記憶部が記憶する前記第２部分ディスティネーションアドレス情報との一致を検出する第２アドレス一致検出部と、
前記第１アドレス一致検出部による一致の検出に基づき、前記バッファ部が記憶したデータを前記演算部にバイパスするセレクタ部を有し、
前記判定部は、さらに、前記第１アドレス一致検出部による一致の検出と、前記第２アドレス一致検出部による一致の検出に基づき、前記セレクタ部を介して前記バッファ部から前記演算部にバイパスされるデータを有効とし、
前記第１アドレス一致検出部は、前記ストア命令に続いて最初の前記ロード命令が投入される場合、前記検出動作をマスクし、前記ロード命令がアボートにより再投入される場合、前記第１部分ディスティネーションアドレス情報と前記第１部分ソースアドレス情報との一致を検出する検出動作を実行することを特徴とする請求項1記載の演算処理装置。
【請求項３】
前記キャッシュメモリ部は、複数のウェイを有し、
前記タグ部は、前記キャッシュメモリ部が記憶するデータのアドレスを前記ウェイ毎に記憶し、
前記制御部は、前記データが存在するウェイを示すウェイ情報をさらに出力し、
前記ストア情報記憶部は、前記ストア命令に基づき前記制御部が出力した前記ウェイ情報をさらに記憶し、
前記判定部は、前記ロード命令に対応する前記第１部分ソースアドレス情報が、前記ストア情報記憶部が記憶する前記第１部分ディスティネーションアドレス情報と重複するとともに、前記制御部が出力するヒット情報および前記ストア情報記憶部が記憶するヒット情報が前記キャッシュメモリ部のヒットを示し、さらに、前記制御部が出力するウェイ情報と前記ストア情報記憶部が記憶するウェイ情報とが不一致の場合、前記ロード命令の継続を前記命令発行部に指示することを特徴とする請求項１または請求項２記載の演算処理装置。
【請求項４】
前記演算部と前記キャッシュメモリ部との間に直列に接続され、前記ストア命令の実行時に前記演算部から出力されるデータを前記キャッシュメモリ部に格納する前に順次に保持する複数の前記バッファ部と、
前記バッファ部のそれぞれに対応して、前記ストア命令に対応する前記第１部分ディスティネーションアドレス情報と前記ヒット情報とを記憶する複数の前記ストア情報記憶部とを有し、
前記判定部は、複数の前記ストア情報記憶部の各々が記憶する前記第１部分ディスティネーションアドレス情報と前記ヒット情報とに基づき前記ロード命令の継続を判定することを特徴とする請求項１ないし請求項３のいずれか１項記載の演算処理装置。
【請求項５】
前記バッファ部は、データを保持する複数のバッファ領域を有し、
前記ストア情報記憶部は、前記バッファ領域のそれぞれに対応して、前記ストア命令に対応する前記第１部分ディスティネーションアドレス情報と前記ヒット情報とを記憶し、
前記判定部は、前記複数のバッファ領域に対応して前記ストア情報記憶部が記憶する前記第１部分ディスティネーションアドレス情報と前記ヒット情報とのいずれかが前記ロード命令のアボートの条件を満たす場合、前記ロード命令をアボートさせる指示を前記命令発行部に出力することを特徴とする請求項１ないし請求項４のいずれか１項記載の演算処理装置。
【請求項６】
前記第１部分ディスティネーションアドレス情報と前記第１部分ソースアドレス情報とは、主記憶装置においてデータを記憶する記憶領域のアドレスの範囲を示す情報を含むことを特徴とする請求項１ないし請求項５のいずれか１項記載の演算処理装置。
【請求項７】
演算を実行する演算部と、前記演算部が使用するデータを記憶するキャッシュメモリ部と、前記演算部から前記キャッシュメモリ部にデータを転送するストア命令および前記キャッシュメモリ部から前記演算部にデータを転送するロード命令のいずれかを発行する命令発行部と、前記ストア命令の実行時に前記演算部が出力したデータを保持するバッファ部と、前記キャッシュメモリ部が記憶するデータのアドレスを記憶するタグ部と、前記ストア命令に含まれるデータの格納先を示すディスティネーションアドレスまたは前記ロード命令に含まれるデータの読み出し元を示すソースアドレスと前記タグ部が記憶するアドレスとに基づき、前記キャッシュメモリ部にデータが存在することを示すヒット情報を出力する制御部とを有する演算処理装置の制御方法において、
前記演算処理装置が有するストア情報記憶部に、前記バッファ部がデータを保持している間、前記ストア命令に含まれるディスティネーションアドレスの一部である第１部分ディスティネーションアドレス情報と、前記ストア命令に基づき前記制御部が出力した前記ヒット情報を記憶させ、
前記演算処理装置が有する判定部が、前記ストア命令の後続のロード命令に含まれるソースアドレスの一部である第１部分ソースアドレス情報の一部が、前記第１部分ディスティネーションアドレス情報と重複する場合、前記ロード命令に含まれるソースアドレスに応じて前記制御部が出力するヒット情報と、前記ストア情報記憶部が記憶するヒット情報とに基づき、前記ロード命令の継続を判定することを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
例えば、演算を実行する演算処理装置は、ストア命令に基づき演算器から出力されるデータをストアバッファに保持した後にキャッシュメモリに書き込む。これにより、データがキャッシュメモリに書き込まれる前にストア命令を完了させることができる。この種の演算処理装置は、先行するストア命令でのアドレスと後続の命令でのアドレスとを比較器により比較することで、命令間でのデータの依存性の有無を判定する（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第０１／０５３９５１号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
アドレスの全ビットを比較する場合、アドレスの一部のビットを比較する場合に比べて比較器の数は増える。比較器の数の増加に伴い、演算処理装置内の信号配線の伝搬遅延時間が増加すると、演算処理装置の性能は低下する。例えば、ストアバッファが複数のエントリを有する場合、アドレスはエントリ毎に比較されるため、比較器の数の増加は顕著になる。一方、例えば、比較器がアドレスの一部の所定数のビットを比較する場合、アドレスの他の一部のビットが相違する場合にもアドレスの一致が誤って検出される場合がある。アドレスの一致が誤って検出された場合、例えば、命令はアボートされ、再度投入される。これにより、演算処理装置の性能は低下する。
【０００５】
本件開示の演算処理装置および演算処理装置の制御方法は、回路規模を増加させることなくアドレスの一致が誤って検出されることを抑止し、命令がアボートされることを抑止することを目的とする。
【課題を解決するための手段】
【０００６】
一つの観点によれば、演算処理装置は、演算を実行する演算部と、演算部が使用するデータを記憶するキャッシュメモリ部と、演算部からキャッシュメモリ部にデータを転送するストア命令およびキャッシュメモリ部から演算部にデータを転送するロード命令のいずれかを発行する命令発行部と、ストア命令の実行時に演算部が出力したデータを保持するバッファ部と、キャッシュメモリ部が記憶するデータのアドレスを記憶するタグ部と、ストア命令に含まれるデータの格納先を示すディスティネーションアドレスまたはロード命令に含まれるデータの読み出し元を示すソースアドレスとタグ部が記憶するアドレスとに基づき、キャッシュメモリ部にデータが存在することを示すヒット情報を出力する制御部と、バッファ部がデータを保持している間、ストア命令に含まれるディスティネーションアドレスの一部である第１部分ディスティネーションアドレス情報と、ストア命令に基づき制御部が出力したヒット情報を記憶するストア情報記憶部と、ストア命令の後続のロード命令に含まれるソースアドレスの一部である第１部分ソースアドレス情報の一部が、第１部分ディスティネーションアドレス情報と重複する場合、ロード命令に含まれるソースアドレスに応じて制御部が出力するヒット情報と、ストア情報記憶部が記憶するヒット情報とに基づき、ロード命令の継続を判定する判定部を有する。
【０００７】
別の観点によれば、演算を実行する演算部と、演算部が使用するデータを記憶するキャッシュメモリ部と、演算部からキャッシュメモリ部にデータを転送するストア命令およびキャッシュメモリ部から演算部にデータを転送するロード命令のいずれかを発行する命令発行部と、ストア命令の実行時に演算部が出力したデータを保持するバッファ部と、キャッシュメモリ部が記憶するデータのアドレスを記憶するタグ部と、ストア命令に含まれるデータの格納先を示すディスティネーションアドレスまたはロード命令に含まれるデータの読み出し元を示すソースアドレスとタグ部が記憶するアドレスとに基づき、キャッシュメモリ部にデータが存在することを示すヒット情報を出力する制御部とを有する演算処理装置の制御方法は、演算処理装置が有するストア情報記憶部に、バッファ部がデータを保持している間、ストア命令に含まれるディスティネーションアドレスの一部である第１部分ディスティネーションアドレス情報と、ストア命令に基づき制御部が出力したヒット情報を記憶させ、演算処理装置が有する判定部が、ストア命令の後続のロード命令に含まれるソースアドレスの一部である第１部分ソースアドレス情報の一部が、第１部分ディスティネーションアドレス情報と重複する場合、ロード命令に含まれるソースアドレスに応じて制御部が出力するヒット情報と、ストア情報記憶部が記憶するヒット情報とに基づき、ロード命令の継続を判定する。
【発明の効果】
【０００８】
本件開示の演算処理装置および演算処理装置の制御方法は、回路規模を増加させることなくアドレスの一致が誤って検出されることを抑止することができ、命令がアボートされることを抑止することができる。
【図面の簡単な説明】
【０００９】
【図１】演算処理装置および演算処理装置の制御方法の一実施形態を示す図である。
【図２】演算処理装置および演算処理装置の制御方法の別の実施形態を示す図である。
【図３】図２に示すフェッチポートの例を示す図である。
【図４】図２に示すキャッシュ制御部の例を示す図である。
【図５】図２に示すバッファ制御部に設けられるテーブルの例を示す図である。
【図６】図２に示す依存判定部に設けられるＳＦＩを判定するＳＦＩ判定回路の例を示す図である。
【図７】図６に示す検出部の例を示す図である。
【図８】図２に示す依存判定部に設けられるＳＦＢを判定するＳＦＢ判定回路の例を示す図である。
【図９】図８に示す検出部の例を示す図である。
【図１０】図９に示す検出器によりバイトマスク情報を比較する例を示す図である。
【図１１】図２に示す完了判定部の例を示す図である。
【図１２】先行するストア命令でストアされるデータと、後続のロード命令でロードされるデータとの依存関係の例を示す図である。
【図１３】図２に示す演算処理装置がストア命令を実行する場合の動作の例を示す図である。
【図１４】図２に示す演算処理装置がストア命令を実行する場合の動作の別の例を示す図である。
【図１５】図２に示す演算処理装置がストア命令とロード命令とを順次に実行する場合の動作の例を示す図である。
【図１６】図２に示す演算処理装置がストア命令とロード命令とを順次に実行する場合の動作の別の例を示す図である。
【図１７】図２に示す演算処理装置がストア命令とロード命令とを順次に実行する場合の動作の別の例を示す図である。
【図１８】図２に示す演算処理装置がストア命令とロード命令とを順次に実行する場合の動作の別の例を示す図である。
【図１９】図２に示す演算処理装置がストア命令とロード命令とを順次に実行する場合の動作の別の例を示す図である。
【図２０】図２に示す演算処理装置がストア命令とロード命令とを順次に実行する場合の動作の別の例を示す図である。
【図２１】図２に示す演算処理装置が実行するＳＦＩの判定動作のフローの例を示す図である。
【図２２】図２に示す演算処理装置が実行するＳＦＢの判定動作のフローの例を示す図である。
【図２３】ＳＦＩ判定回路の他の例を示す図である。
【図２４】図２３に示す検出部の例を示す図である。
【図２５】ＳＦＢ判定回路の他の例を示す図である。
【図２６】図２５に示す検出部の例を示す図である。
【図２７】図２３に示すＳＦＩ判定回路および図２５に示すＳＦＢ判定回路を有する演算処理装置がストア命令とロード命令とを順次に実行する場合の動作の例を示す図である。
【図２８】図２３に示すＳＦＩ判定回路および図２５に示すＳＦＢ判定回路を有する演算処理装置がストア命令とロード命令とを順次に実行する場合の動作の別の例を示す図である。
【図２９】図２３に示すＳＦＩ判定回路および図２５に示すＳＦＢ判定回路を有する演算処理装置が実行するＳＦＩの判定動作のフローの例を示す図である。
【図３０】図２３に示すＳＦＩ判定回路および図２５に示すＳＦＢ判定回路を有する演算処理装置が実行するＳＦＢの判定動作のフローの例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を用いて実施形態を説明する。
【００１１】
図１は、演算処理装置および演算処理装置の制御方法の一実施形態を示す。図１において、太い矢印は、データの転送経路を示す。図１に示す演算処理装置ＯＰＤ１は、命令発行部１０２、演算部１０４、タグ部１０６、キャッシュ制御部１０８、キャッシュメモリ部１１０、ストア情報記憶部１１２、判定部１１４およびバッファ部１１６を有する。
【００１２】
例えば、命令発行部１０２は、演算部１０４に演算を実行させる演算命令ＯＰと、演算部１０４からキャッシュメモリ部１１０にデータを転送するストア命令ＳＴと、キャッシュメモリ部１１０から演算部１０４にデータを転送するロード命令ＬＤとを発行する。ストア命令ＳＴは、データの格納先を示すディスティネーションアドレスを含み、ロード命令ＬＤは、データの読み出し元を示すソースアドレスを含む。例えば、ディスティネーションアドレスおよびソースアドレスは、演算部１０４が有するレジスタに格納される。そして、ストア命令ＳＴに含まれるオペランドによりディスティネーションアドレスが格納されたレジスタが指定され、ロード命令ＬＤに含まれるオペランドによりソースアドレスレジスタが格納されたレジスタが指定される。ディスティネーションアドレスおよびソースアドレスは、データを記憶する主記憶装置３００の記憶領域を示す。例えば、主記憶装置３００は、演算処理装置ＯＰＤ１の外部に配置され、キャッシュメモリ部１１０に接続される。
【００１３】
演算部１０４は、演算命令ＯＰに応じて演算を実行し、ストア命令ＳＴに応じてバッファ部１１６を介してデータをキャッシュメモリ部１１０に転送し、ロード命令ＬＤに応じてキャッシュメモリ部１１０から転送されるデータを受ける。以下では、ストア命令ＳＴによりキャッシュメモリ部１１０に転送されるデータは、ストアデータとも称され、ロード命令ＬＤにより演算部１０４に転送されるデータは、ロードデータとも称される。
【００１４】
バッファ部１１６は、ストア命令ＳＴの実行時に演算部１０４から出力されるストアデータをキャッシュメモリ部１１０に格納する前に保持する。演算処理装置ＯＰＤ１がバッファ部１１６を有することで、ストアデータが演算部１０４からキャッシュメモリ部１１０に書き込まれる前に、ストア命令ＳＴを完了することができる。
【００１５】
なお、演算処理装置ＯＰＤ１は、バッファ部１１６に保持中のストアデータが、後続のロード命令ＬＤによるロード対象のデータである場合、バッファ部１１６から演算部１０４にデータをバイパスする経路を有してもよい。この場合、演算処理装置ＯＰＤ１は、例えば、キャッシュメモリ部１１０からロードされるデータとバッファ部１１６に保持されたデータの一方を選択し、選択したデータを演算部１０４に転送するセレクタ部を有する。
【００１６】
キャッシュメモリ部１１０は、演算部１０４で使用するデータを含む複数のデータ群を記憶する複数のウェイＷＡＹ（ＷＡＹ０、ＷＡＹ１）を有する。例えば、データ群は、各ウェイＷＡＹに割り当てられるキャッシュラインに記憶される。例えば、キャッシュメモリ部１１０は、３２ＫＢ（キロバイト）の記憶容量を有し、各ウェイＷＡＹは２５６バイトの記憶容量を有する６４個のキャッシュラインを有する。
【００１７】
タグ部１０６は、各ウェイＷＡＹに記憶されたデータ群が格納される主記憶装置３００のアドレスを記憶するタグ領域ＴＡＧ（ＴＡＧ０、ＴＡＧ１）をウェイＷＡＹのそれぞれに対応して有する。
【００１８】
キャッシュ制御部１０８は、ストア命令ＳＴに含まれるディスティネーションアドレスまたはロード命令ＬＤに含まれるソースアドレスと、タグ部１０６の各タグ領域ＴＡＧに記憶されたアドレスとを比較する。そして、キャッシュ制御部１０８は、比較結果に基づき、ストアデータまたはロードデータがキャッシュメモリ部１１０に存在することを示すヒット情報ＨＩＴと、ストアデータまたはロードデータが存在するウェイＷＡＹを示すウェイ情報ＷＡＹＩＤとを出力する。キャッシュ制御部１０８は、ストア命令ＳＴおよびロード命令ＬＤに含まれるアドレスとタグ部１０６が記憶するアドレスとに基づき、キャッシュメモリ部１１０にデータが存在することを示すヒット情報ＨＩＴを出力する制御部の一例である。
【００１９】
なお、キャッシュメモリ部１１０は、複数のウェイＷＡＹを持たなくてもよい（すなわち、１つのウェイＷＡＹを有する）。この場合、タグ部１０６は、１つのウェイＷＡＹに記憶されたデータ群が格納される主記憶装置３００のアドレスを記憶するタグ領域ＴＡＧを有する。キャッシュ制御部１０８は、ストア命令ＳＴまたはロード命令ＬＤに含まれるアドレスとタグ領域ＴＡＧに記憶されたアドレスとの比較結果に基づき、ヒット情報ＨＩＴを出力する（ウェイ情報ＷＡＹＩＤは出力されない）。
【００２０】
主記憶装置３００に記憶されるデータ群（例えば、２５６バイト）を識別するアドレスは、ストア命令ＳＴまたはロード命令ＬＤに含まれるアドレスのうち、下位の８ビットを除く上位ビット群で表される。例えば、上位ビット群のうち下位の６ビットは、タグ領域ＴＡＧ内のアドレスを格納する６４個の格納領域の識別に使用され、上位ビット群の下位６ビットを除くビットは、タグ領域ＴＡＧ内の格納領域のいずれかに記憶される。そして、ヒット情報ＨＩＴは、ストア命令ＳＴまたはロード命令ＬＤに含まれるアドレスの上位ビット群と、キャッシュメモリ部１１０に記憶されたデータが格納される主記憶装置３００のアドレスの上位ビット群とが一致した場合に出力される。すなわち、ヒット情報ＨＩＴは、ストアデータまたはロードデータがキャッシュメモリ部１１０に記憶されていることを示す。
【００２１】
ストア情報記憶部１１２は、バッファ部１１６にストアデータが保持される間、ストア命令ＳＴに含まれるディスティネーションアドレスの下位側の所定数のビットで表される第１部分アドレス情報を記憶する。また、ストア情報記憶部１１２は、ストア命令ＳＴに基づきキャッシュ制御部１０８が出力したヒット情報ＨＩＴとウェイ情報ＷＡＹＩＤとを記憶する。なお、ストア命令ＳＴに含まれる第１部分アドレス情報は、ディスティネーションアドレスの一部であればよく、ディスティネーションアドレスの上位側の所定数のビットで表してもよい。
【００２２】
判定部１１４は、ストア命令ＳＴに続いて投入される後続のロード命令ＬＤに含まれるソースアドレスの下位側の所定数のビットで表される第１部分アドレス情報と、ストア情報記憶部１１２が記憶する第１部分アドレス情報とを比較する。なお、ロード命令ＬＤに含まれる第１部分アドレス情報は、ソースアドレスの一部であればよく、ソースアドレスの上位側の所定数のビットで表してもよい。判定部１１４は、後続のロード命令ＬＤに含まれる第１部分アドレス情報の一部が、先行のストア命令ＳＴに含まれる第１部分アドレス情報と重複する場合、ヒット情報ＨＩＴおよびウェイ情報ＷＡＹＩＤに基づきロード命令の継続またはアボートを判定する。
【００２３】
例えば、判定部１１４は、第１部分アドレス情報が互いに重複する場合、ロード命令ＬＤによるヒット情報ＨＩＴとストア情報記憶部１１２が記憶するヒット情報ＨＩＴとを比較する。また、判定部１１４は、第１部分アドレス情報が互いに重複する場合、ロード命令ＬＤによるウェイ情報ＷＡＹＩＤと、ストア情報記憶部１１２が記憶するウェイ情報ＷＡＹＩＤとを比較する。
【００２４】
判定部１１４は、ヒット情報ＨＩＴが互いに一致し、ウェイ情報ＷＡＹＩＤが互いに不一致の場合、ストアデータとロードデータとに依存性がないと判断し、ロード命令ＬＤの継続を判定する。この場合、キャッシュメモリ部１１０から演算部１０４にロードされたデータは有効になり、ロード命令ＬＤは、正常に終了する。
【００２５】
また、判定部１１４は、ヒット情報ＨＩＴが互いに一致し、ウェイ情報ＷＡＹＩＤが互いに一致する場合、ストアデータとロードデータとに依存性があると判断する。この場合、判定部１１４は、ストアデータがキャッシュメモリ部１１０に書き込まれる前にロードされることを抑止するため、ロード命令ＬＤのアボートを判定する。判定部１１４は、命令発行部１０２にアボート信号ＡＢＴを出力し、キャッシュメモリ部１１０から演算部１０４にロードされたデータは無効になる。アボートされたロード命令ＬＤは、命令発行部１０２から再度発行される。なお、判定部１１４は、ヒット情報ＨＩＴが互いに不一致の場合、ウェイ情報ＷＡＹＩＤに基づいてストアデータとロードデータとの依存性を判定することが困難なため、ロード命令ＬＤのアボートを判定する。
【００２６】
ストア命令ＳＴと後続のロード命令ＬＤとにおけるヒット情報ＨＩＴの一致は、ストア命令ＳＴによりキャッシュメモリ部１１０のウェイＷＡＹ０、ＷＡＹ１のいずれかに格納されたデータが、ロード命令ＬＤによりロードされることを示す。すなわち、タグ部１０６のタグ領域ＴＡＧ０、ＴＡＧ１のいずれかに格納されたアドレスが、ストア命令ＳＴと後続のロード命令ＬＤとで共通であることを示す。ストア命令ＳＴと後続のロード命令ＬＤとにおけるウェイ情報ＷＡＹＩＤの一致は、ストア命令ＳＴと後続のロード命令ＬＤとで同じタグ領域ＴＡＧが参照されることを示す。
【００２７】
換言すれば、ストア命令ＳＴと後続のロード命令ＬＤとにおけるヒット情報ＨＩＴの一致およびウェイ情報ＷＡＹＩＤの一致は、アドレスの上位ビット群の一致を示す。これにより、判定部１１４は、アドレスの上位ビット群を比較する比較器を設けることなく、アドレスの上位ビット群の一致を判定することができる。これにより、ストア命令ＳＴと後続のロード命令ＬＤとによりアクセスされるデータの依存性の有無を、アドレスの上位ビット群を含めて判定することができる。この結果、アドレスの下位側のビットが一致し、アドレスの上位側のビットが不一致であり、データの依存性がない場合に、ロード命令ＬＤが誤ってアボートされることを抑止することができる。
【００２８】
これに対して、判定部１１４が、アドレスの上位側のビットの一致を判定しない場合、下位側の所定数のビットで表される第１部分アドレス情報の一致に基づき、ストア命令ＳＴと後続のロード命令ＬＤとによりアクセスされるデータの依存性の有無が判定される。この場合、ストアデータとロードデータに依存性がないにも拘わらずロード命令ＬＤがアボートされる場合がある。この結果、キャッシュメモリ部１１０のアクセス効率は、アドレスの下位側のビットの比較とともにアドレスの上位側のビットを比較してデータの依存性の有無を判定する場合に比べて低下し、演算処理装置ＯＰＤ１の性能は低下する。
【００２９】
以上、図１に示す実施形態では、判定部１１４は、アドレスの上位側のビットを比較する比較器を設けることなく、アドレスの上位側のビットの一致を判定することができる。これにより、回路規模を増加させることなく、ストア命令ＳＴと後続のロード命令ＬＤとによりアクセスされるデータの依存性の有無を、アドレスの上位側のビットを含めて判定することができ、ロード命令ＬＤが誤ってアボートされることを抑止することができる。すなわち、回路規模を増加させることなくアドレスの一致が誤って検出されることを抑止することができ、命令がアボートされることを抑止することができる。この結果、キャッシュメモリ部１１０のアクセス効率が低下することを抑止することができ、演算処理装置ＯＰＤ１の性能の低下および性能のばらつきを抑止することができる。
【００３０】
図２は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図２に示す演算処理装置ＯＰＤ２は、命令ユニット１０、演算部１２、命令制御部１４、ＴＬＢ（Translation Lookaside Buffer）制御部１６、キャッシュ制御部１８、バッファ制御部２０を有する。また、演算処理装置ＯＰＤ２は、ストアバッファ２２、ライトバッファ２４、セレクタ部２６、データキャッシュ２８、キャッシュ３０および命令キャッシュ３２を有する。例えば、演算処理装置ＯＰＤ２は、半導体集積回路チップの形態を有し、主記憶装置５０等とともにプリント基板に搭載される。
【００３１】
命令ユニット１０は、命令キャッシュ３２から転送される命令を解読し、解読した命令を実行可能な順に演算部１２および命令制御部１４に投入する。例えば、命令は、演算命令およびメモリアクセス命令を含み、メモリアクセス命令は、ストア命令およびはロード命令を含む。命令ユニット１０は、メモリアクセス命令を示すリクエストＲＥＱを命令制御部１４に出力する。命令ユニット１０は、メモリアクセス命令の完了を示す完了信号ＳＴＶを命令制御部１４から受け、命令が完了したことを示すコミット信号ＣＭＴを出力する。例えば、メモリアクセス命令を示すリクエストＲＥＱは、リクエスト発行信号ＲＥＱＶ、命令コードＯＰＣおよびアドレスＡＤＲＳを含む。リクエスト発行信号ＲＥＱＶは、フェッチポート１４２へのメモリアクセス命令の供給を示すトリガ信号である。命令コードＯＰＣは、ストア命令またはロード命令を示し、アドレスＡＤＲＳは、ストア命令ではデータを格納する記憶領域のアドレスを示し、ロード命令ではデータを読み出す記憶領域のアドレスを示す。アドレスＡＤＲＳは、データを記憶する主記憶装置５０の記憶領域を示す。
【００３２】
演算部１２は、命令ユニット１０から転送される演算命令を示すリクエストＲＥＱＯＰに基づき、レジスタ部ＲＥＧに格納されたデータを用いて演算を実行し、演算結果をレジスタ部ＲＥＧに格納する。レジスタ部ＲＥＧは、複数のレジスタを有する。演算部１２は、命令ユニット１０から転送されるストア命令に基づき、レジスタ部ＲＥＧに格納されたデータをストアバッファ２２に出力する。また、演算部１２は、命令ユニット１０から転送されるロード命令に基づき、データキャッシュ２８またはライトバッファ２４から出力されるデータをレジスタ部ＲＥＧに格納する。
【００３３】
命令制御部１４は、フェッチポート１４２およびパイプライン制御部１４４を有し、ストア命令に基づきデータをデータキャッシュ２８にストアするストア動作およびロード命令に基づきデータをデータキャッシュ２８からロードするロード動作を制御する。フェッチポート１４２は、命令ユニット１０から転送されるリクエストＲＥＱを格納する複数のエントリＦＰＥ（図３）を有し、エントリＦＰＥに格納したリクエストＲＥＱをリクエストＩＵＲＥＱとしてパイプライン制御部１４４に順次に出力する。また、フェッチポート１４２は、命令の実行の未完了（アボート）を示すアボート信号ＡＢＴと、アボートの要因を示すアボート要因ＷＩＤ（Wait IDentification）を受けた場合、アボート要因ＷＩＤをエントリＦＰＥに格納する。フェッチポート１４２は、アボート要因ＷＩＤが格納されたエントリＦＰＥに含まれるリクエストＲＥＱを保持し、保持したリクエストＲＥＱをリクエストＩＵＲＥＱとしてパイプライン制御部１４４に再び出力する。フェッチポート１４２は、演算部１２からデータキャッシュ２８にデータを転送するストア命令およびデータキャッシュ２８から演算部１２にデータを転送するロード命令を発行する命令発行部の一例である。
【００３４】
パイプライン制御部１４４は、リクエストＩＵＲＥＱに基づき、ストア命令またはロード命令を処理するパイプラインの各ステージの動作を制御する。すなわち、パイプライン制御部１４４は、ストア命令およびロード命令の各々の処理を細分化した複数のステージを並列に実行するパイプライン処理を実行する。パイプライン制御部１４４は、完了信号ＳＴＶおよびアボート信号ＡＢＴを生成する完了判定部１４６を有する。完了判定部１４６の例は、図１１に示される。
【００３５】
パイプライン制御部１４４は、リクエストＩＵＲＥＱに含まれるアドレスＡＤＲＳを論理アドレスＶＡとして出力する。また、パイプライン制御部１４４は、ロード命令の実行時に、バッファ制御部２０から無効信号ＳＦＩ（Store Fetch Interlock）を受け、フェッチポート１４２からリクエストＩＵＲＥＱとともにアボート要因ＷＩＤを受ける。アボート要因ＷＩＤのないリクエストＩＵＲＥＱは、リクエストＲＥＱに基づきフェッチポート１４２が最初に出力するリクエストＩＵＲＥＱである。一方、アボート要因ＷＩＤを有するリクエストＩＵＲＥＱは、アボートされたリクエストＩＵＲＥＱの再投入である。そして、パイプライン制御部１４４は、無効信号ＳＦＩとアボート要因ＷＩＤとに基づき、ライトバッファ２４から演算部１２へのデータのバイパスの可否を判定する動作を許可する許可信号ＳＦＢＥＮを生成する。以下、ライトバッファ２４から演算部１２へのデータのバイパスは、ＳＦＢ（Store Fetch Bypass）とも称され、またはＳＦＢの発生とも称される。また、ＳＦＢは、ライトバッファ２４から演算部１２へデータをバイパスするためにパイプライン制御部１４４が生成するバイパス信号の名称としても使用される。
【００３６】
パイプライン制御部１４４は、ストアデータまたはロードデータがデータキャッシュ２８に記憶されていることを示すヒット信号ＨＩＴをキャッシュ制御部１８から受ける。パイプライン制御部１４４は、データキャッシュ２８からロードされたデータが無効であることを示す無効信号ＳＦＩをバッファ制御部２０から受ける。例えば、先行するストア命令によりデータキャッシュ２８に格納されるデータが、データキャッシュ２８に格納される前に後続のロード命令によりロードされる場合、データキャッシュ２８から読み出されるデータは正しくないため、無効信号ＳＦＩが生成される。パイプライン制御部１４４は、無効信号ＳＦＩを受けた場合、ロード命令をアボートさせるアボート信号ＡＢＴを出力することで、ロード命令によりデータキャッシュ２８からロードしたデータを無効にさせる。すなわち、先行するストア命令と後続のロード命令との間にデータの依存関係がある場合、命令の実行順を入れ換えるアウトオブオーダ実行が禁止される。以降の説明では、無効信号ＳＦＩが生成されることは、単にＳＦＩの発生とも称される。
【００３７】
パイプライン制御部１４４は、ＴＬＢ制御部１６に出力した論理アドレスＶＡがＴＬＢにヒットしたことを示す一致信号ＴＬＢＭＣＨをＴＬＢ制御部１６から受ける。また、パイプライン制御部１４４は、バイパス要求信号ＳＦＢＲＥＱ、重複信号ＳＦＢＭＬＴおよびアドレス一致信号ＳＦＢＰＡＭＣＨをバッファ制御部２０から受ける。バイパス要求信号ＳＦＢＲＥＱ、重複信号ＳＦＢＭＬＴおよびアドレス一致信号ＳＦＢＰＡＭＣＨは、図８で説明する。
【００３８】
ＴＬＢ制御部１６は、パイプライン制御部１４４から受ける論理アドレスＶＡが、内蔵するＴＬＢに登録されている場合（ＴＬＢヒット）、論理アドレスＶＡに対応して割り当てられた物理アドレスＰＡと、一致信号ＴＬＢＭＣＨとを出力する。ＴＬＢ制御部１６は、論理アドレスＶＡがＴＬＢに登録されていない場合（ＴＬＢミス）、一致信号ＴＬＢＭＣＨを出力しない。例えば、論理アドレスＶＡは、６４ビット（ＶＡ［６３：０］）であり、物理アドレスＰＡは、４１ビット（ＰＡ［４０：０］）である。例えば、ＴＬＢ制御部１６は、論理アドレスＶＡ［６３：１３］を物理アドレスＰＡ［４０：１３］に変換する。このため、アドレスの下位の１３ビット［１２：０］は、論理アドレスＶＡと物理アドレスＰＡとで共通であり、アドレス［１２：０］は、論理アドレスＶＡを使用することが可能である。
【００３９】
なお、例えば、論理アドレスＶＡが４１ビットの場合、物理アドレスＰＡは論理アドレスＶＡと等しいため、演算処理装置ＯＰＤ２は、ＴＬＢ制御部１６を持たない。この場合、物理アドレスＰＡの代わりに論理アドレスＶＡが、キャッシュ制御部１８、バッファ制御部２０およびデータキャッシュ２８に供給される。また、図８に示すテーブルＳＴＢＴＢＬ、ＷＢＴＢＬは、物理アドレスＰＡを格納する領域を持たない。
【００４０】
キャッシュ制御部１８は、パイプライン制御部１４４から受ける論理アドレスＶＡおよびＴＬＢ制御部１６から受ける物理アドレスＰＡを用いて内蔵するタグ領域ＴＡＧ（図４）を検索する。そして、キャッシュ制御部１８は、タグ領域ＴＡＧがヒットした場合にヒット信号ＨＩＴおよびヒットしたウェイＷＡＹを示す識別情報ＷＡＹＩＤを出力する。なお、タグ領域ＴＡＧは、キャッシュ制御部１８の外部に配置されてもよい。
【００４１】
バッファ制御部２０は、依存判定部２００およびテーブルＳＴＢＴＢＬ、ＷＢＴＢＬを有する。依存判定部２００は、テーブルＳＴＢＴＢＬ、ＷＢＴＢＬに格納された先行するストア命令に関する情報と、パイプライン制御部１４４から受ける後続のロード命令に関する情報とに基づき、ＳＦＩの発生とＳＦＢの発生とを判定する。依存判定部２００の例は、図６から図９に示す。テーブルＳＴＢＴＢＬ、ＷＢＴＢＬの例は、図５に示す。バッファ制御部２０は、命令ユニット１０から受けるストア命令の完了を示すコミット信号ＣＭＴに基づき、転送信号ＷＢＧＯをストアバッファ２２に出力する。
【００４２】
バッファ制御部２０は、ライトバッファ２４からデータキャッシュ２８へのデータの転送を指示するストア信号ＳＴ２をライトバッファ２４に出力する。バッファ制御部２０は、データのバイパスが可能な場合、バイパスさせるデータが格納されているライトバッファ２４のエントリＷＢ０−ＷＢ７を示す識別情報ＷＢＩＤをライトバッファ２４に出力し、バイパス要求信号ＳＦＢＲＥＱをセレクタ部２６に出力する。
【００４３】
ストアバッファ２２は、演算部１２から転送されるストアデータを格納する複数のエントリＳＴＢ（ＳＴＢ０−ＳＴＢ１９）を有する。なお、エントリＳＴＢの数は、２０個に限定されない。ストアバッファ２２は、転送信号ＷＢＧＯに基づきエントリＳＴＢのいずれかに保持されているデータをライトバッファ２４に転送する。
【００４４】
ライトバッファ２４は、ストアバッファ２２から転送されるデータを格納する複数のエントリＷＢ（ＷＢ０−ＷＢ７）を有する。なお、エントリＷＢの数は、８個に限定されない。ライトバッファ２４は、ストア信号ＳＴ２に基づき、エントリＷＢのいずれかに保持しているデータをデータキャッシュに書き込む。ストアバッファ２２およびライトバッファ２４は、ストア命令ＳＴの実行時に演算部１２から出力されるデータをデータキャッシュ２８に格納する前に保持するバッファ部の一例である。
【００４５】
セレクタ部２６は、バイパス要求信号ＳＦＢＲＥＱがＳＦＢの発生を示す場合、ライトバッファ２４からのデータを選択し、選択したデータをロードデータとして演算部１２に出力する。セレクタ部２６は、バイパス要求信号ＳＦＢＲＥＱがＳＦＢの発生を示さない場合、データキャッシュ２８からのデータを選択し、選択したデータをロードデータとして演算部１２に出力する。
【００４６】
データキャッシュ２８は、データを記憶する１次キャッシュＬ１として機能し、パイプライン制御部１４４から受けるリクエストＣＲＥＱに基づき、データの書き込み動作およびデータの読み出し動作を実行する。データキャッシュ２８は、リクエストＣＲＥＱの対象となるデータを記憶していない場合、２次キャッシュとして機能するキャッシュ３０にアクセスする。例えば、データキャッシュ２８は、４ウェイセットアソシアティブ方式を採用し、３２ＫＢ（キロバイト）の記憶容量を有する。例えば、各ウェイは、１２８バイトの記憶領域を各々有する６４個のキャッシュラインを有する。データキャッシュ２８は、演算部１２で使用するデータを含む複数のデータ群を記憶する複数のウェイを有するキャッシュメモリ部の一例である。
【００４７】
キャッシュ３０は、命令を記憶する命令キャッシュ３２と、データを記憶するデータキャッシュ２８とに接続され、データおよび命令を記憶する２次キャッシュＬ２として機能する。また、キャッシュ３０は、ＤＲＡＭ（Dynamic Random Access Memory）等が搭載されるメモリモジュールを含む主記憶装置５０に接続される。さらに、主記憶装置５０は、ハードディスクドライブ装置等の補助記憶装置６０に接続される。
【００４８】
命令キャッシュ３２は、キャッシュ３０から転送される命令（すなわち、演算処理装置ＯＰＤ２が実行する命令コード、演算処理装置ＯＰＤ２が実行するプログラム）を記憶し、１次キャッシュＬ１として機能する。命令キャッシュ３２は、命令ユニット１０からの要求に基づき、記憶している命令を命令ユニット１０に出力する。
【００４９】
図３は、図２に示すフェッチポート１４２の例を示す。例えば、フェッチポート１４２は、命令ユニット１０から転送される命令コードＯＰＣおよびアドレスＡＤＲＳと、パイプライン制御部１４４から出力されるアボート要因ＷＩＤとを保持する複数のエントリＦＰＥ（ＦＰＥ０−ＦＰＥ３１）を有する。なお、エントリＦＰＥの数は３２個に限定されない。フェッチポート１４２は、命令ユニット１０からのリクエスト発行信号ＲＥＱＶに基づき、リクエスト発行信号ＲＥＱＶとともに受ける命令コードＯＰＣおよびアドレスＡＤＲＳを空いているエントリＦＰＥに格納する。
【００５０】
図４は、図２に示すキャッシュ制御部１８の例を示す。キャッシュ制御部１８は、データキャッシュ２８の４つのウェイＷＡＹ（ＷＡＹ０−ＷＡＹ３）に対応する４つのタグ領域ＴＡＧ（ＴＡＧ０−ＴＡＧ３）と、ヒット信号ＨＩＴおよび識別情報ＷＡＹＩＤを生成する生成回路１８０とを有する。
【００５１】
各タグ領域ＴＡＧは、データキャッシュ２８の各ウェイＷＡＹが有する６４個のキャッシュラインに対応して、物理アドレスＰＡの上位２８ビットＰＡ［４０：１３］を格納する６４個のタグ領域を有する。６４個のタグ領域は、６ビットの論理アドレスＶＡ［１２：７］により識別される。
【００５２】
生成回路１８０は、タグ領域ＴＡＧ０−ＴＡＧ３のそれぞれに対応して設けられる４つの比較器ＴＡＧＣＭＰと、ヒット信号ＨＩＴを生成するヒット生成回路ＨＩＴＧＥＮと、識別情報ＷＡＹＩＤを生成するエンコーダＷＡＹＥＮＣとを有する。各比較器ＴＡＧＣＭＰは、論理アドレスＶＡ［１２：７］に基づき各タグ領域ＴＡＧから読み出される物理アドレスＰＡ［４０：１３］と、ＴＬＢ制御部１６から受ける物理アドレスＰＡ［４０：１３］とを比較する。例えば、各比較器ＴＡＧＣＭＰは、２つの物理アドレスＰＡ［４０：１３］が一致する場合に、論理１を出力し（ヒット）、不一致の場合に論理０を出力する（ミス）。なお、図４では、比較器ＴＡＧＣＭＰは、否定排他的論理和回路で示されるが、実際の比較器ＴＡＧＣＭＰは、物理アドレスＰＡ［４０：１３］の各ビットを比較し、全ビットが一致する場合に論理１を出力する回路を有する。
【００５３】
ヒット生成回路ＨＩＴＧＥＮは、比較器ＴＡＧＣＭＰのいずれかがヒットを示す場合、ヒット信号ＨＩＴを論理１に設定し、全ての比較器ＴＡＧＣＭＰがミスを示す場合、ヒット信号ＨＩＴを論理０に設定する。エンコーダＷＡＹＥＮＣは、各比較器ＴＡＧＣＭＰが出力する論理値に基づいて、ヒットしたタグ領域ＴＡＧに対応するウェイＷＡＹを示す識別情報ＷＡＹＩＤを生成する。例えば、識別情報ＷＡＹＩＤは、２ビットであり、ヒットしたウェイＷＡＹ０−ＷＡＹ３の番号を示す。
【００５４】
図５は、図２に示すバッファ制御部２０が有するテーブルＳＴＢＴＢＬ、ＷＢＴＢＬの例を示す。
【００５５】
テーブルＳＴＢＴＢＬは、バッファ制御部２０により書き込まれるフラグＳＴＢＶ、論理アドレスＶＡ、識別情報ＷＡＹＩＤ、フラグＷＡＹＩＤＶ、物理アドレスＰＡおよびバイトマスク情報ＢＭを記憶する２０個のエントリＳＥ（ＳＥ０−ＳＥ１９）を有する。テーブルＳＴＢＴＢＬに設けられるエントリＳＥの数は、ストアバッファ２２に設けられるエントリＳＴＢの数に等しい。各エントリＳＥにおいて、フラグＳＴＢＶ、ＷＡＹＩＤＶは１ビットであり、識別情報ＷＡＹＩＤを格納する領域は２ビットである。また、各エントリＳＥにおいて、論理アドレスＶＡを格納する領域は６４ビットであり、物理アドレスＰＡを格納する領域は４１ビットであり、バイトマスク情報ＢＭを格納する領域は３２ビットである。
【００５６】
各エントリＳＥのフラグＳＴＢＶは、エントリＳＥに対応するエントリＳＴＢに有効なデータが保持されている場合にセットされ、エントリＳＥに対応するエントリＳＴＢに無効なデータが保持されている場合にリセットされる。すなわち、フラグＳＴＢＶは、ストアデータがエントリＳＴＢに保持されている間にセット状態に維持され、ストアデータのライトバッファ２４への転送に基づきリセットされる。
【００５７】
各エントリＳＥに格納される論理アドレスＶＡおよび物理アドレスＰＡは、先行するストア命令の実行時にエントリＳＥに対応するエントリＳＴＢに保持されているデータを格納する主記憶装置５０の記憶領域のアドレスである。各エントリＳＥに格納される識別情報ＷＡＹＩＤは、先行するストア命令の実行時にエントリＳＥに対応するエントリＳＴＢに保持されているデータを格納するデータキャッシュ２８のウェイＷＡＹを示す。各エントリＳＥに格納されるフラグＷＡＹＩＤＶは、先行するストア命令の実行時にエントリＳＥに対応するエントリＳＴＢに保持されているデータがキャッシュヒットし、データキャッシュ２８のウェイＷＡＹのいずれかに書き込まれることを示す。各エントリＳＥに格納されるバイトマスク情報ＢＭは、図１０で説明するように、ストアデータが格納される主記憶装置５０の記憶領域の位置（アドレスの範囲）を示す。
【００５８】
テーブルＷＢＴＢＬは、バッファ制御部２０により書き込まれるフラグＷＢＶ、論理アドレスＶＡ、識別情報ＷＡＹＩＤ、フラグＷＡＹＩＤＶ、物理アドレスＰＡおよびバイトマスク情報ＢＭを記憶する８個のエントリＷＥ（ＷＥ０−ＳＥ７）を有する。テーブルＷＢＴＢＬに設けられるエントリＷＥの数は、ライトバッファ２４に設けられるエントリＷＢの数に等しい。各エントリＷＥにおいて、フラグＷＢＶ、ＷＡＹＩＤＶは１ビットであり、識別情報ＷＡＹＩＤを格納する領域は２ビットである。また、各エントリＷＥにおいて、論理アドレスＶＡを格納する領域は６４ビットであり、物理アドレスＰＡを格納する領域は４１ビットであり、バイトマスク情報ＢＭを格納する領域は３２ビットである。
【００５９】
各エントリＷＢのフラグＷＢＶは、エントリＷＢに対応するエントリＷＢに有効なデータが保持されている場合にセットされ、エントリＷＢに対応するエントリＷＢに無効なデータが保持されている場合にリセットされる。すなわち、フラグＷＢＶは、ストアデータがエントリＷＢに保持されている間にセット状態に維持され、ストアデータのデータキャッシュ２８への転送に基づきリセットされる。
【００６０】
各エントリＷＢに格納される論理アドレスＶＡおよび物理アドレスＰＡは、先行するストア命令の実行時にエントリＷＥに対応するエントリＷＢに保持されているデータを格納する主記憶装置５０の記憶領域のアドレスである。各エントリＷＥに格納される識別情報ＷＡＹＩＤは、先行するストア命令の実行時にエントリＷＥに対応するエントリＷＢに保持されているデータを格納するデータキャッシュ２８のウェイＷＡＹを示す。各エントリＷＥに格納されるフラグＷＡＹＩＤＶは、先行するストア命令の実行時にエントリＷＥに対応するエントリＷＢに保持されているデータがキャッシュヒットし、データキャッシュ２８のウェイＷＡＹのいずれかに書き込まれることを示す。各エントリＷＥに格納されるバイトマスク情報ＢＭは、図１０で説明するように、ストアデータが格納される主記憶装置５０の記憶領域の位置（アドレスの範囲）を示す。
【００６１】
テーブルＳＴＢＴＢＬは、ストアバッファ２２にデータが保持されている間、ストア命令ＳＴに含まれる第１部分アドレス情報と、ストア命令ＳＴにより生成されたヒット情報ＨＩＴおよびウェイ情報ＷＡＹＩＤとを記憶するストア情報記憶部の一例である。例えば、第１部分アドレス情報は、論理アドレスＶＡ［１２：５］およびバイトマスク情報ＢＭであり、ストア命令ＳＴに含まれるアドレスの下位１３ビットで表されるデータの格納位置を示す。テーブルＳＴＢＴＢＬのエントリＳＥは、データを保持するバッファ領域の一例である。
【００６２】
テーブルＷＢＴＢＬは、ライトバッファ２４にデータが保持されている間、ストア命令ＳＴに含まれる第１部分アドレス情報と、ストア命令ＳＴにより生成されたヒット情報ＨＩＴおよびウェイ情報ＷＡＹＩＤとを記憶するストア情報記憶部の一例である。テーブルＷＢＴＢＬのエントリＷＥは、データを保持するバッファ領域の一例である。
【００６３】
図６は、図２に示す依存判定部２００に設けられるＳＦＩを判定するＳＦＩ判定回路２１０の例を示す。ＳＦＩ判定回路２１０は、図５に示すテーブルＳＴＢＴＢＬのエントリＳＥのそれぞれに対応する検出部ＳＦＩＤＥＴａと、図５に示すテーブルＷＢＴＢＬのエントリＷＥのそれぞれに対応する検出部ＳＦＩＤＥＴｂと、オア回路ＯＲ１とを有する。
【００６４】
各検出部ＳＦＩＤＥＴａは、ロード命令での論理アドレスＶＡ［１２：５］、バイトマスク情報ＢＭ［３１：０］、ヒット信号ＨＩＴおよび識別情報ＷＡＹＩＤを受ける。また、各検出部ＳＦＩＤＥＴａは、ロード命令に先行するストア命令での論理アドレスＶＡ［１２：５］、バイトマスク情報ＢＭ［３１：０］、識別情報ＷＡＹＩＤおよびフラグ値ＷＡＹＩＤＶを各エントリＳＥから受ける。そして、各検出部ＳＦＩＤＥＴａは、受けた情報に基づきＳＦＩの発生を示す検出信号ＳＴＢＳＦＩ（ＳＴＢＳＦＩ０−ＳＴＢＳＦＩ１９）を出力する。検出部ＳＦＩＤＥＴａの例は、図７に示す。
【００６５】
各検出部ＳＦＩＤＥＴｂは、ロード命令での論理アドレスＶＡ［１２：５］、バイトマスク情報ＢＭ［３１：０］、ヒット信号ＨＩＴおよび識別情報ＷＡＹＩＤを受ける。また、各検出部ＳＦＩＤＥＴｂは、ロード命令に先行するストア命令での論理アドレスＶＡ［１２：５］、バイトマスク情報ＢＭ［３１：０］、識別情報ＷＡＹＩＤおよびフラグＷＡＹＩＤＶを、各エントリＷＥから受ける。さらに、各検出部ＳＦＩＤＥＴｂは、図８に示す各検出部ＳＦＢＤＥＴが出力する検出信号ＳＦＢＷＢ（ＳＦＢＷＢ０−ＳＦＢＷＢ７）を受ける。検出信号ＳＦＢＷＢは、図８で説明するように、テーブルＷＢＴＢＬのエントリＷＥ０−ＷＥ７毎のＳＦＢの発生を示す。そして、各検出部ＳＦＩＤＥＴｂは、受けた情報に基づきＳＦＩの発生を示す検出信号ＷＢＳＦＩ（ＷＢＳＦＩ０−ＷＢＳＦＩ７）を出力する。検出部ＳＦＩＤＥＴｂの例は、図７に示す。
【００６６】
オア回路ＯＲ１は、検出信号ＳＴＢＳＦＩ０−ＳＴＢＳＦＩ１９、ＷＢＳＦＩ０−ＷＢＳＦＩ７のいずれかがＳＦＩの発生を示す場合、無効信号ＳＦＩを出力する。
【００６７】
図７は、図６に示す検出部ＳＦＩＤＥＴａ、ＳＩＦＤＥＴｂの例を示す。検出部ＳＦＩＤＥＴａ、ＳＦＩＤＥＴｂに入力される”（ＬＤ）”を付けた信号は、ロード命令に対応する信号を示す。検出部ＳＦＩＤＥＴａに入力される”（ＳＥ）”を付けた信号は、ロード命令に先行するストア命令に対応してエントリＳＥから読み出される信号を示す。検出部ＳＦＩＤＥＴｂに入力される”（ＷＥ）”を付けた信号は、ロード命令に先行するストア命令に対応してエントリＷＥから読み出される信号を示す。
【００６８】
検出部ＳＦＩＤＥＴａは、比較器ＣＭＰ１および検出器ＤＥＴ１、ＤＥＴ２を有する。検出器ＣＭＰ１は、ロード命令での論理アドレスＶＡ［１２：５］と、先行するストア命令での論理アドレスＶＡ［１２：５］の一致を検出した場合、一致信号ＶＡＭＣＨを出力する。検出器ＤＥＴ１は、ロード命令での論理１のバイトマスク情報ＢＭ［３１：０］のいずれかと、先行するストア命令での論理１のバイトマスク情報ＢＭ［３１：０］のいずれかとの一致を検出した場合、一致信号ＢＭＭＣＨを出力する。バイトマスク情報ＢＭ［３１：０］は、ロード命令またはストア命令でのアドレスにおける下位５ビットを除くアドレスで示される３２バイト分のデータ領域において、アクセスされる領域を示す。すなわち、検出器ＤＥＴ１は、ロード命令と先行するストア命令とにおいて、アドレスの下位５ビットで示される領域でのデータの依存性の有無を検出する。
【００６９】
検出器ＤＥＴ２の比較器ＣＭＰ２は、ロード命令でキャッシュヒットしたウェイＷＡＹと、先行するストア命令でキャッシュヒットしたウェイＷＡＹとの一致を検出した場合、一致信号ＷＡＹＩＤＭＣＨを出力する。比較器ＣＭＰ２による識別情報ＷＡＹＩＤの一致の検出は、物理アドレスＰＡ［４０：１３］の一致の検出と等価である。検出器ＤＥＴ２は、ロード命令または先行するストア命令の少なくともいずれかでキャッシュミスした場合、ＳＦＩの発生の可能性があることを示すプリ無効信号ＰＳＦＩを出力する。また、検出器ＤＥＴ２は、ロード命令および先行するストア命令がともにキャッシュヒットし、かつ、一致信号ＷＡＹＩＤＭＣＨが出力される場合、プリ無効信号ＰＳＦＩを出力する。一方、検出器ＤＥＴ２は、ロード命令および先行するストア命令がともにキャッシュヒットし、かつ、一致信号ＷＡＹＩＤＭＣＨが出力されない場合、プリ無効信号ＰＳＦＩを出力しない。
【００７０】
そして、検出部ＳＦＩＤＥＴａは、一致信号ＶＡＭＣＨ、ＢＭＭＣＨおよびプリ無効信号ＰＳＦＩの全てが出力された場合、検出信号ＳＴＢＳＦＩを出力する。一方、検出部ＳＦＩＤＥＴａは、一致信号ＶＡＭＣＨ、ＢＭＭＣＨ、ＷＡＹＩＤＭＣＨのいずれかが出力されない場合、検出信号ＳＴＢＳＦＩを出力しない。例えば、キャッシュミスで一致信号ＷＡＹＩＤＭＣＨが出力される場合（プリ無効信号ＰＳＦＩ＝０）、ロード命令によるロードデータは、先行するストア命令によりストアデータが格納される領域と異なる領域から読み出されるため、データの依存性はない。この場合に、プリ無効信号ＰＳＦＩが検出信号ＳＴＢＳＦＩの出力をマスクすることで、ロード命令が誤ってアボートされることを抑止することができる。換言すれば、検出部ＳＦＩＤＥＴａによりロード命令と先行するストア命令とのウェイＷＡＹの一致の有無を検出することで、ＳＦＩの検出にアドレスの上位側のビットを用いない場合に発生する偽のＳＦＩを抑止することができる。
【００７１】
検出部ＳＦＩＤＥＴｂは、検出部ＳＦＩＤＥＴａの回路構成に加えて、検出信号ＳＦＢＷＢの発生時に、検出信号ＷＢＳＦＩの出力をマスクするマスク回路ＭＳＫを有する。検出部ＳＦＩＤＥＴｂの比較器ＣＭＰ１および検出器ＤＥＴ１、ＤＥＴ２のそれぞれは、ＳＦＢが発生した場合にも、一致を検出する。ＳＦＢが発生された場合、先行するストア命令によりライトバッファＷＢに保持されたデータは、後続のロード命令において演算部１２にバイパス可能である。このため、検出部ＳＦＩＤＥＴｂは、ＳＦＢの発生時にロード命令のアボートを避けるため、マスク回路ＭＳＫにより検出信号ＷＢＳＦＩの出力を禁止する。
【００７２】
検出部ＳＦＩＤＥＴｂの検出部ＤＥＴ１、ＤＥＴ２の動作は、検出部ＳＦＩＤＥＴａの検出部ＤＥＴ１、ＤＥＴ２の動作と同様である。すなわち、検出部ＳＦＩＤＥＴｂにおいても、ロード命令と先行するストア命令とのウェイＷＡＹの一致の有無を検出することで、ＳＦＩの検出にアドレスの上位側のビットを用いない場合に発生する偽のＳＦＩを抑止することができる。検出部ＳＦＩＤＥＴａ、ＳＦＩＤＥＴｂは、アドレスの上位側のビットを比較する比較器を持たないため、アドレスの上位側の全ビット［４０：５］を比較する比較器を有する検出部に比べて、回路規模を削減することができる。
【００７３】
なお、図２に示されるように、演算部１２へのデータのバイパスは、ライトバッファ２４から実行され、ストアバッファ２２からは実行されない。このため、検出部ＳＦＩＤＥＴａは、ＳＦＢが発生した場合に検出信号ＳＴＢＳＦＩをマスクせず、回路ＭＳＫを持たない。
【００７４】
図８は、図２に示す依存判定部２００に設けられるＳＦＢを判定するＳＦＢ判定回路２２０の例を示す。ＳＦＢ判定回路２２０は、図５に示すテーブルＷＢＴＢＬのエントリＷＥ０−ＷＥ７のそれぞれに対応する検出部ＳＦＢＤＥＴと、オア回路ＯＲ２と、重複検出部ＭＬＴＤＥＴと、エンコーダＳＦＢＥＮＣとを有する。
【００７５】
パイプライン制御部１４４に設けられる判定制御部ＳＦＢＣＮＴは、比較器ＣＭＰ３およびセレクタＳＥＬ１を有する。比較器ＣＭＰ３は、フェッチポート１４２のエントリＦＰＥに格納されたフラグＷＩＤが示すロード命令のアボート要因がＳＦＩの発生であることを検出する。セレクタＳＥＬ１は、比較器ＣＭＰ３での検出結果に基づき、アボート要因がＳＦＩである場合に許可信号ＳＦＢＥＮを論理１に設定し、アボート要因がＳＦＩ以外である場合、またはアボートが発生していない場合、許可信号ＳＦＢＥＮを論理０に設定する。
【００７６】
例えば、フェッチポート１４２が、命令ユニット１０から受けるロード命令を示すリクエストＲＥＱに基づき、ロード命令の最初のリクエストＩＵＲＥＱをパイプライン制御部１４４に出力する場合、ロード命令のアボートは発生していない。この場合、判定制御部ＳＦＢＣＮＴは、許可信号ＳＦＢＥＮを論理０に設定する。一方、ＳＦＩの発生によりアボートされたロード命令が再投入された場合、判定制御部ＳＦＢＣＮＴは、フェッチポート１４２のエントリＦＰＥに格納されたフラグＷＩＤに基づき、許可信号ＳＦＢＥＮを論理１に設定する。
【００７７】
各検出部ＳＦＢＤＥＴは、ロード命令での論理アドレスＶＡ［１２：５］およびバイトマスク情報ＢＭ［３１：０］を受ける。また、各検出部ＳＦＢＤＥＴは、ロード命令に先行するストア命令での論理アドレスＶＡ［１２：５］およびバイトマスク情報ＢＭ［３１：０］を各エントリＷＥから受ける。そして、各検出部ＳＦＢＤＥＴは、許可信号ＳＦＢＥＮが論理１の場合、受けた情報に基づきＳＦＢの発生を示す検出信号ＳＦＢＷＢ（ＳＦＢＷＢ０−ＳＦＢＷＢ７）を出力する。一方、各検出部ＳＦＢＤＥＴは、許可信号ＳＦＢＥＮが論理０の場合、検出信号ＳＦＢＷＢ（ＳＦＢＷＢ０−ＳＦＢＷＢ７）の出力をマスクする。検出部ＳＦＢＤＥＴの例は、図９に示す。
【００７８】
オア回路ＯＲ２は、検出信号ＳＦＢＷＢ０−ＳＦＢＷＢ７のいずれかがＳＦＢの発生を示す場合、ライトバッファ２４から演算部１２へのデータのバイパスを許可するバイパス要求信号ＳＦＢＲＥＱを出力する。すなわち、バイパス要求信号ＳＦＢＲＥＱは、バッファ制御部２０がＳＦＢを可能と判定した場合に出力される。
【００７９】
重複検出部ＭＬＴＤＥＴは、２以上の検出信号ＳＦＢＷＢ０−ＳＦＢＷＢ７がＳＦＢの発生を示す場合、重複信号ＳＦＢＭＬＴを出力する。エンコーダＳＦＢＥＮＣは、検出信号ＳＦＢＷＢ（ＳＦＢＷＢ０−ＳＦＢＷＢ７のいずれか）を発生させたエントリＷＥに対応するライトバッファ２４のエントリＷＢ（ＷＢ０−ＷＢ７のいずれか）を示す３ビットの識別情報ＷＢＩＤを生成する。
【００８０】
識別情報ＷＢＩＤは、ライトバッファ２４に供給され、エントリＷＢ（ＷＢ０−ＷＢ７のいずれか）に格納されたデータの選択に使用される。また、識別情報ＷＢＩＤは、バッファ制御部２０内でテーブルＷＢＴＢＬのエントリＷＥに格納された物理アドレスＰＡ［４０：１３］の選択に使用される。識別情報ＷＢＩＤにより選択された物理アドレスＰＡ［４０：１３］は、バッファ制御部２０内に設けられる比較器ＣＭＰ４によりロード命令での物理アドレスＰＡ［４０：１３]と比較される。
【００８１】
比較器ＣＭＰ４は、物理アドレスＰＡ［４０：１３］が互いに一致する場合、アドレス一致信号ＳＦＢＰＡＭＣＨを出力する。比較器ＣＭＰ４は、ロード命令に含まれる第２部分アドレス情報と、ライトバッファ２４が記憶する第２部分アドレス情報との一致を検出する第２アドレス一致検出部の一例である。例えば、第２部分アドレス情報は、物理アドレスＰＡ［４０：１３］である。なお、比較器ＣＭＰ４は、検出信号ＳＦＢＷＢに基づきエンコーダＳＦＢＥＮＣが生成する識別情報ＷＢＩＤを用いてテーブルＷＢＴＢＬから読み出される物理アドレスＰＡ［４０：１３］を、ロード命令での物理アドレスＰＡ［４０：１３］と比較する。このため、アドレス一致信号ＳＦＢＰＡＭＣＨは、例えば、バイパス要求信号ＳＦＢＲＥＱに比べて１クロックサイクル遅く出力される。
【００８２】
パイプライン制御部１４４のＳＦＢ発生部ＳＦＢＧＥＮは、バイパス要求信号ＳＦＢＲＥＱおよびアドレス一致信号ＳＦＢＰＡＭＣＨが出力され、重複信号ＳＦＢＭＬＴが出力されない場合、ＳＦＢの発生を検出し、バイパス信号ＳＦＢを出力する。重複信号ＳＦＢＭＬＴが出力される場合、バイパス可能なデータがライトバッファ２４の複数のエントリＷＢに格納されているため、ＳＦＢ発生部ＳＦＢＧＥＮは、バイパス信号ＳＦＢの発生はマスクされる。
【００８３】
なお、バイパス要求信号ＳＦＢＲＥＱおよび重複信号ＳＦＢＭＬＴは、ラッチ回路により遅延された後にパイプライン制御部１４４に供給される。これにより、バイパス要求信号ＳＦＢＲＥＱおよび重複信号ＳＦＢＭＬＴのパイプライン制御部１４４への供給サイクルと、アドレス一致信号ＳＦＢＰＡＭＣＨのパイプライン制御部１４４への供給サイクルとが揃えられる。
【００８４】
判定制御部ＳＦＢＣＮＴの動作により、最初のリクエストＩＵＲＥＱに対応するロード命令では、許可信号ＳＦＢＥＮは論理０に設定され、各検出部ＳＦＢＤＥＴは、検出信号ＳＦＢＷＢの出力をマスクする。これにより、最初のリクエストＩＵＲＥＱに対応するロード命令では、検出部ＳＦＢＤＥＴによるＳＦＢの検出はマスクされ、ＳＦＢは発生しない。ＳＦＢが発生しない場合で、ＳＦＩも発生しない場合、図１９に示されるように、ロード命令はアボートされず、演算部１２は、データキャッシュ２８から読み出されたデータを受信する。一方、最初のリクエストＩＵＲＥＱに対応するロード命令で検出部ＳＦＢＤＥＴの動作をマスクせず、検出信号ＳＦＢＷＢが出力される場合、図２８に示されるように、真のＳＦＢが発生する場合にも、アボート信号ＡＢＴが出力され、ロード命令はアボートされる。これは、アドレス一致信号ＳＦＢＰＡＭＣＨが、バイパス要求信号ＳＦＢＲＥＱに比べて遅れて出力されるため、アドレス一致信号ＳＦＢＰＡＭＣＨが出力される前に、図１１に示す完了判定部１４６がアボートを判定するためである。
【００８５】
なお、各検出信号ＳＦＢＷＢ０−ＳＦＢＷＢ７は、判定制御部ＳＦＢＣＮＴによって、ＳＦＩの発生によりアボートされたロード命令が再投入される場合に、ロード命令と先行するストア命令のデータが一致する場合に発生する。ＳＦＩは、図７で説明したように、ロード命令と先行するストア命令の物理アドレスＰＡ［４０：５］を互いに比較する場合と等価な条件で判定される。このため、各検出信号ＳＦＢＷＢ０−ＳＦＢＷＢ７は、ロード命令と先行するストア命令の物理アドレスＰＡ［４０：５］を互いに比較する場合と等価な条件を用いて生成される。すなわち、検出部ＳＦＢＤＥＴが出力する検出信号ＳＦＢＷＢ０−ＳＦＢＷＢ７は、真のＳＦＢを示し、ＳＦＢの検出にアドレスの上位側のビットを用いない場合に発生する偽のＳＦＢを抑止することができる。
【００８６】
図９は、図８に示す検出部ＳＦＢＤＥＴの例を示す。検出部ＳＦＢＤＥＴは、比較器ＣＭＰ５および検出器ＤＥＴ３を有する。検出器ＣＭＰ５は、ロード命令での論理アドレスＶＡ［１２：５］と、先行するストア命令での論理アドレスＶＡ［１２：５］の一致を検出する。
【００８７】
検出器ＤＥＴ３は、インバータＩＶ、オア回路ＯＲ３およびアンド回路ＡＮＤ１を有する。検出器ＤＥＴ３は、ロード命令によりデータキャッシュ２８から読み出されるデータのアドレス範囲が、先行するストア命令でデータキャッシュ２８に格納されるデータのアドレス範囲に含まれる場合、論理１を出力する。すなわち、検出器ＤＥＴ３は、ロード命令によるロードデータが先行するストア命令によるストアデータに含まれることを検出することで、ＳＦＢの可能性があることを検出する。検出器ＤＥＴ３によりバイトマスク情報ＢＭを比較する例は、図１０に示される。
【００８８】
そして、検出部ＳＦＢＤＥＴは、論理アドレスＰＡ［１２：５］が互いに一致し、ロード命令によるロードデータが先行するストア命令によるストアデータに含まれる場合、検出信号ＳＦＢＷＢ（ＳＦＢＷＢ０−ＳＦＢＷＢ７のいずれか）を出力する。検出部ＳＦＢＤＥＴは、ロード命令に対応する第１部分アドレス情報と、テーブルＷＢＴＢＬが記憶する第１部分アドレス情報との一致を検出する第１アドレス一致検出部の一例である。上述したように、第１部分アドレス情報は、論理アドレスＶＡ［１２：５］およびバイトマスク情報ＢＭであり、ストア命令ＳＴおよびロード命令ＬＤに含まれるアドレスの下位１３ビットで表されるデータの格納位置を示す。
【００８９】
図１０は、図９に示す検出器ＤＥＴ３によりバイトマスク情報ＢＭを比較する例を示す。図１０では、説明を分かりやすくするために、バイトマスク情報ＢＭが８ビット（すなわち、アドレスの下位３ビットＶＡ［２：０］が”０００”から”１１１”の範囲）を有するとする。図１０において、網掛けで示す領域は、ストア命令でデータが格納される領域またはロード命令でデータが読み出される領域（論理１で示される）を示す。
【００９０】
図１０（ａ）、（ｂ）、（ｃ）、（ｄ）に示されるように、ロード命令でのバイトマスク情報ＢＭの論理１の範囲が、先行するストア命令によりエントリＷＥに格納されたバイトマスク情報ＢＭの論理１の範囲に含まれる場合、ＳＦＢの可能性がある。すなわち、図１０（ａ）、（ｂ）、（ｃ）、（ｄ）では、ロード命令と先行するストア命令との上位アドレスが互いに一致する場合、ライトバッファ２４から演算部１２へのデータのバイパスが可能である。一方、図１０（ｅ）、（ｆ）、（ｇ）、（ｈ）に示されるように、ロード命令でのバイトマスク情報ＢＭの論理１の範囲が、先行するストア命令によりエントリＷＥに格納されたバイトマスク情報ＢＭの論理１の範囲から外れる場合、ＳＦＢの可能性はない。すなわち、図１０（ｅ）、（ｆ）、（ｇ）、（ｈ）では、ロード命令と先行するストア命令との上位アドレスが互いに一致しても、ライトバッファ２４から演算部１２へのデータのバイパスは実行されない。
【００９１】
図９に示す検出器ＤＥＴ３の各オア回路ＯＲ３は、エントリＷＥのバイトマスク情報ＢＭが論理１の場合、あるいは、エントリＷＥおよびロード命令のバイトマスク情報ＢＭがともに論理０の場合、ＳＦＢの可能性を示す論理１を出力する。また、各オア回路ＯＲ３は、エントリＷＥのバイトマスク情報ＢＭが論理０で、ロード命令のバイトマスク情報ＢＭが論理１の場合、ＳＦＢの可能性がないことを示す論理０を出力する。そして、図９に示す検出器ＤＥＴ３のアンド回路ＡＮＤ１は、全てのオア回路ＯＲ３から論理１を受ける場合、ＳＦＢの可能性を示す論理１を出力し、オア回路ＯＲ３の少なくとも１つから論理０を受ける場合、ＳＦＢの可能性がないことを示す論理０を出力する。
【００９２】
なお、バイトマスク情報ＢＭが重複するアドレスが存在する図１０（ｂ）から図１０（ｇ）では、ＳＦＩが発生する。バイトマスク情報ＢＭが重複するアドレスが存在しない図１０（ｈ）では、ＳＦＩは発生しない。図１０（ａ）では、バイトマスク情報ＢＭが重複するアドレスが完全に一致するため、図７に示されるように、ＳＦＩ（検出信号ＷＢＳＦＩ）の発生はマスクされる。
【００９３】
図１１は、図２に示す完了判定部１４６の例を示す。図１１は、完了判定部１４６が有するロード命令の完了を判定する回路の例を示す。
【００９４】
完了判定部１４６は、アンド回路ＡＮＤ２、ＡＮＤ３、ＡＮＤ４、ＡＮＤ５およびオア回路ＯＲ４、ＯＲ５を有する。アンド回路ＡＮＤ２は、バイパス要求信号ＳＦＢＲＥＱと重複信号ＳＦＢＭＬＴとに基づき、複数のエントリＷＥに対応する複数のエントリＷＢでＳＦＢを検出する場合、論理１を出力する。アンド回路ＡＮＤ３は、バイパス要求信号ＳＦＢＲＥＱとアドレス一致信号ＳＦＢＰＡＭＣＨとに基づき、物理アドレスＰＡ［４０：１３］の不一致を検出する場合、論理１を出力する。アンド回路ＡＮＤ４は、バイパス要求信号ＳＦＢＲＥＱとヒット信号ＨＩＴに基づき、ＳＦＢの未発生とキャッシュミスとを検出する場合、論理１を出力する。オア回路ＯＲ４は、無効信号ＳＦＩとアンド回路ＡＮＤ２、ＡＮＤ３、ＡＮＤ４の出力とのオア論理をアンド回路ＡＮＤ５に出力する。
【００９５】
アンド回路ＡＮＤ５は、ロード命令を示す命令コードＯＰＣＤ（ＬＤ）と、オア回路ＯＲ４の出力信号とを受け、ロード命令をアボートさせる場合に論理１を出力する。オア回路ＯＲ５は、一致信号ＴＬＢＭＣＨに基づき、ＴＬＢのヒットを検出した場合で、アンド回路ＡＮＤ４からのアボートの要求を受けていない場合、完了信号ＳＴＶを論理１に設定し、アボート信号ＡＢＴを論理０に設定する。一方、オア回路ＯＲ５は、一致信号ＴＬＢＭＣＨに基づき、ＴＬＢのミスを検出した場合、またはアンド回路ＡＮＤ４からのアボートの要求を受けた場合、完了信号ＳＴＶを論理０に設定し、アボート信号ＡＢＴを論理１に設定する。なお、完了信号ＳＴＶおよびアボート信号ＡＢＴが出力されるクロックサイクルを調整するために、一致信号ＴＬＢＭＣＨは、所定数のラッチ回路により遅延された後完了判定部１４６に供給される。図６に示すＳＦＩ判定回路２１０および完了判定部１４６は、ストア命令ＳＴに後続するロード命令ＬＤの継続またはアボートを判定する判定部の一例である。
【００９６】
なお、図８に示したバイパス信号ＳＦＢを出力するパイプライン制御部１４４の論理（３入力のアンド回路）は、バイパス要求信号ＳＦＢＲＥＱが論理１の場合に、論理０を出力するアンド回路ＡＮＤ２、ＡＮＤ３の論理と等価である。このため、バイパス要求信号ＳＦＢＲＥＱが論理１の場合で、アンド回路ＡＮＤ２、ＡＮＤ３が論理０を出力する場合、ＳＦＢの発生を検出してもよい。この場合、パイプライン制御部１４４は、図８に示すバイパス信号ＳＦＢを出力する論理（３入力のアンド回路）を削除してもよい。
【００９７】
図１２は、先行するストア命令でストアされるデータと、後続のロード命令でロードされるデータとの依存関係の例を示す。図１２において、アドレス値の先頭に示す”０ｘ”は、１６進数を示す。なお、図１２および図１３以降の動作では、ストア命令およびロード命令で指定されるアドレスは、１６ビットとして説明される。例えば、ストア命令およびロード命令は、１バイトから３２バイトのいずれかのデータを扱うことが可能である。但し、図１２および図１３以降の動作では、説明を分かりやすくするために、ストア命令は８バイトのデータをストアし、ロード命令は８バイトのデータをロードするものとする。さらに、図１２および図１３以降の動作では、ストア命令およびロード命令によりアクセスされるデータは、データキャッシュ２８に格納されているとする。
【００９８】
ストア命令がアドレス０ｘ００Ｆ０を先頭アドレスとしてデータ（ａ）をストアし、後続のロード命令がアドレス０ｘ０００Ｆ６を先頭アドレスとしてデータ（ｂ）をロードする場合、データを保持するアドレス領域の一部が重複するため、ＳＦＩが発生する。この場合のバイトマスク情報ＢＭは、図１２の右側に示されるように、一部が一致し、他の一部が不一致となる。このため、ＳＦＢは発生しない。
【００９９】
ストア命令がアドレス０ｘ００Ｆ８を先頭アドレスとしてデータ（ｃ）をストアし、後続のロード命令がアドレス０ｘ０００Ｆ８を先頭アドレスとしてデータ（ｃ）をロードする場合、データを保持するアドレス領域が完全に一致するため、ＳＦＢが発生する。ＳＦＢの発生によりＳＦＩの発生はマスクされる。ストア命令がアドレス０ｘ００Ｆ２を先頭アドレスとしてデータ（ｄ）をストアし、後続のロード命令がアドレス０ｘ２０Ｆ６を先頭アドレスとしてデータ（ｅ）をロードする場合、データを保持するアドレス領域が一致しないため、ＳＦＩ、ＳＦＢは発生しない。
【０１００】
ストア命令がアドレス０ｘ００Ｆ２を先頭アドレスとしてデータ（ｄ）をストアし、後続のロード命令がアドレス０ｘ２０Ｆ２を先頭アドレスとしてデータ（ｆ）をロードする場合、データを保持するアドレス領域が一致しないため、ＳＦＩ、ＳＦＢは発生しない。ストア命令がアドレス０ｘ００Ｄ３を先頭アドレスとしてデータ（ｇ）をストアし、後続のロード命令がアドレス０ｘ２０Ｆ４を先頭アドレスとしてデータ（ｂ）をロードする場合、データを保持するアドレス領域が一致しないため、ＳＦＩ、ＳＦＢは発生しない。
【０１０１】
図１３は、図２に示す演算処理装置ＯＰＤ２がストア命令ＳＴを実行する場合の動作の例を示す。まず、命令ユニット１０は、ストア命令ＳＴのリクエストＲＥＱ（ＳＴ）（図２に示すリクエスト発行信号ＲＥＱＶ、命令コードＯＰＣおよびアドレスＡＤＲＳ）をフェッチポート１４２に投入し、フェッチポート１４２に保持させる（図１３（ａ））。例えば、アドレスＡＤＲＳは、０ｘ００Ｆ０である。フェッチポート１４２に保持されたリクエストＲＥＱ（ＳＴ）は、順にパイプライン制御部１４４に投入される。図１３に示す例では、実行中のストア命令ＳＴまたはロード命令がないため、フェッチポート１４２は、保持したリクエストＲＥＱ（ＳＴ）をリクエストＩＵＲＥＱ（ＳＴ）としてパイプライン制御部１４４に投入する（図１３（ｂ））。
【０１０２】
パイプライン制御部１４４は、リクエストＩＵＲＥＱ（ＳＴ）に含まれるアドレスＡＤＲＳ（論理アドレスＶＡ）をバッファ制御部２０、ＴＬＢ制御部１６、キャッシュ制御部１８およびデータキャッシュ２８に転送する。バッファ制御部２０は、受けた論理アドレスＶＡをテーブルＳＴＢＴＢＬ中の空いているエントリＳＥ（この例では、ＳＥ０）に格納し、論理アドレスＶＡを格納したエントリＳＥ０のフラグＳＴＢＶをセットする（図１３（ｃ））。フラグＳＴＢＶがセットされている期間は、エントリＳＥ０が有効なデータを保持している期間である。
【０１０３】
図１３には示されないが、命令ユニット１０は、演算部１２にストア命令ＳＴのリクエストＲＥＱＯＰを投入する。演算部１２は、リクエストＲＥＱＯＰで指定されたレジスタ部ＲＥＧのレジスタに保持されたデータＤ１をストアデータとしてストアバッファ２２に出力する（図１３（ｄ））。例えば、ストアバッファ２２は、エントリＳＴＢ０が記憶しているデータＤ００をストアデータＤ１に書き替える。
【０１０４】
この例では、受けた論理アドレスＶＡがＴＬＢ制御部１６のＴＬＢに登録されている。このため、ＴＬＢ制御部１６は、一致信号ＴＬＢＭＣＨをパイプライン制御部１４４に出力し、論理アドレスＬＡから変換した物理アドレスＰＡをキャッシュ制御部１８およびバッファ制御部２０に出力する（図１３（ｅ））。キャッシュ制御部１８は、パイプライン制御部１４４から受ける論理アドレスＶＡおよびＴＬＢ制御部１６から受ける物理アドレスＰＡを用いてタグ領域ＴＡＧを検索する。
【０１０５】
この例では、ウェイＷＡＹ０において、論理アドレスＶＡ［１２：７］で示されるタグ領域に格納された物理アドレスＰＡ［４０：１３］と、ストア命令ＳＴでの物理アドレスＰＡ［４０：１３］とが一致する（キャッシュヒット）。このため、キャッシュ制御部１８は、ヒットしたウェイＷＡＹ０を示す識別情報ＷＡＹＩＤを出力し、ヒット信号ＨＩＴを出力する（図１３（ｆ））。バッファ制御部２０は、論理アドレスＶＡを格納したテーブルＳＴＢＴＢＬのエントリＳＥに、物理アドレスＰＡ、識別情報ＷＡＹＩＤを順次に格納し、ヒット信号ＨＩＴに応じてフラグＷＡＹＩＤＶをセットする（図１３（ｇ）、（ｈ））。
【０１０６】
パイプライン制御部１４４の完了判定部１４６は、一致信号ＴＬＢＭＣＨの受信に基づいてストア命令ＳＴの完了を判定し、命令ユニット１０へ完了信号ＳＴＶを出力する（図１３（ｉ））。
【０１０７】
なお、ストア命令ＳＴに含まれる論理アドレスＶＡがＴＬＢ制御部１６に登録されていない場合、ＴＬＢ制御部１６は、一致信号ＴＬＢＭＣＨを出力しない。この場合、完了判定部１４６は、アボート信号ＡＢＴと、アボートの要因を示すフラグＷＩＤをフェッチポート１４２に出力する。フェッチポート１４２は、アボート信号ＡＢＴを受けた場合、ストア命令ＳＴを再びパイプライン制御部１４４に投入するまでフラグＷＩＤを保持する。
【０１０８】
完了信号ＳＴＶを受けた命令ユニット１０は、コミット信号ＣＭＴをバッファ制御部２０に出力する（図１３（ｊ））。バッファ制御部２０は、コミット信号ＣＭＴに基づいて、転送信号ＷＢＧＯをストアバッファ２２に出力し、ストア命令ＳＴに対応してストアバッファ２２に保持されているデータＤ１をライトバッファ２４に転送させる（図１３（ｋ）、（ｌ））。また、バッファ制御部２０は、コミット信号ＣＭＴに基づいて、テーブルＷＢＴＢＬの空いているエントリＷＥ（例えば、ＷＥ０）にフラグＷＢＶ、論理アドレスＶＡ、識別情報ＷＡＹＩＤ、フラグＷＡＹＩＤＶおよび物理アドレスＰＡを格納する（図１３（ｍ））。フラグＷＢＶがセットされている期間は、エントリＷＥ０が有効なデータを保持している期間である。フラグＷＢＶのセットと、フラグＳＴＢＶのリセットは、エントリＳＥ０に保持されたデータがエントリＷＥ０に転送されることを示す。例えば、テーブルＷＢＴＢＬへのフラグＷＢＶ、論理アドレスＶＡ、識別情報ＷＡＹＩＤ、フラグＷＡＹＩＤＶおよび物理アドレスＰＡの格納は、テーブルＳＴＢＴＢＬに格納された情報を転送することで実行される。
【０１０９】
バッファ制御部２０は、フラグＷＢをセットしたエントリＷＥに対応するライトバッファ２４のエントリＷＢ０にストア信号ＳＴ２を出力する（図１３（ｎ））。ライトバッファ２４は、ストア信号ＳＴ２に基づいて、指示されたエントリＷＢ０に保持しているデータＤ１をデータキャッシュ２８に書き込む（図１３（ｏ））。図１３および図１４以降に示す”＋Ｄ１”、”＋Ｄ２”等の符号は、データキャッシュ２８にデータが書き込まれることを示す。バッファ制御部２０は、ストア信号ＳＴ２の出力後、テーブルＷＢＴＢＬ内のエントリＷＥ０のフラグＷＢＶをリセットする（図１３（ｐ））。そして、ストア命令ＳＴによるデータのストア動作が完了する。
【０１１０】
図１４は、図２に示す演算処理装置ＯＰＤ２がストア命令ＳＴを実行する場合の動作の別の例を示す。図１３と同一または同様の動作については、詳細な説明は省略する。この例では、命令ユニット１０は２つのストア命令ＳＴを順次にフェッチポートに投入する。例えば、最初のストア命令ＳＴでは、データＤ１はストアバッファ２２のエントリＳＴＢ０とライトバッファ２４のエントリＷＢ０とに順次に格納される。２番目のストア命令ＳＴでは、データＤ２はストアバッファ２２のエントリＳＴＢ１とライトバッファ２４のエントリＷＢ１とに順次に格納される。２つのストア命令ＳＴにおいて、データの格納先を示すアドレス（０ｘ００Ｆ０）は、互いに同じである。
【０１１１】
最初のストア命令ＳＴに基づく動作は、図１３に示す動作と同様である。但し、図１４では、図１３に示す一致信号ＴＬＢＭＣＨと、ＴＬＢ制御部１６が出力する物理アドレスＰＡと、キャッシュ制御部１８が出力する識別情報ＷＡＹＩＤおよびヒット信号ＨＩＴとは示されない。また、図１４では、図１３に示すテーブルＳＴＢＴＢＬに保持されるフラグＷＡＹＩＤＶおよび物理アドレスＰＡと、テーブルＷＢＴＢＬに保持されるフラグＷＡＹＩＤＶおよび物理アドレスＰＡとは示されない。
【０１１２】
２番目のストア命令ＳＴは、最初のストア命令ＳＴと同様に実行される。すなわち、フェッチポート１４２は、命令ユニット１０から投入されたストア命令ＳＴのリクエストＲＥＱ（ＳＴ）に基づき、リクエストＩＵＲＥＱ（ＳＴ）をパイプライン制御部１４４に投入する（図１４（ａ））。そして、テーブルＳＴＢＴＢＬ中の空いているエントリＳＥ（この例では、ＳＥ１）にフラグＳＴＢＶ、論理アドレスＶＡおよび識別情報ＷＡＹＩＤ等が格納される（図１４（ｂ））。
【０１１３】
ストアバッファ２２は、演算部１２からストアデータＤ２を受け、例えば、エントリＳＴＢ１が記憶しているデータＤ０１をストアデータＤ２に書き替える（図１４（ｃ））。
【０１１４】
パイプライン制御部１４４の完了判定部１４６は、図２に示す一致信号ＴＬＢＭＣＨをサイクルＴ１２で受信することでストア命令ＳＴの完了を判定し、命令ユニット１０へ完了信号ＳＴＶを出力する（図１４（ｄ））。バッファ制御部２０は、コミット信号ＣＭＴに基づいて転送信号ＷＢＧＯをストアバッファ２２に出力し、２番目のストア命令ＳＴに対応してストアバッファ２２に保持されているデータＤ２をライトバッファ２４に転送させる（図１４（ｅ）、（ｆ））。また、バッファ制御部２０は、コミット信号ＣＭＴに基づいて、テーブルＷＢＴＢＬの空いているエントリＷＥ（例えば、ＷＥ１）にフラグＷＢＶ、論理アドレスＶＡ、識別情報ＷＡＹＩＤ等を格納する（図１４（ｇ））。
【０１１５】
ライトバッファ２４は、バッファ制御部２０が出力するストア信号ＳＴ２に基づいて、指示されたエントリＷＢ１に保持しているデータＤ２をデータキャッシュ２８に書き込む（図１４（ｈ））。バッファ制御部２０は、ストア信号ＳＴ２の出力後、テーブルＷＢＴＢＬ内のエントリＷＥ１のフラグＷＢＶをリセットする（図１４（ｉ））。そして、２番目のストア命令ＳＴによるデータのストア動作が完了する。
【０１１６】
図１５は、図２に示す演算処理装置ＯＰＤ２がストア命令ＳＴとロード命令ＬＤとを順次に実行する場合の動作の例を示す。図１３と同一または同様の動作については、詳細な説明は省略する。図１５では、まず、先頭アドレスが０ｘ００Ｄ３の領域（図１２（ｇ））に８バイトのデータＤ１をストアするストア命令ＳＴが実行される。この後、データＤ１がデータキャッシュ２８に書き込まれる前に、先頭アドレスが０ｘ２０Ｆ６の領域（図１２（ｅ））から８バイトのデータをロードするロード命令ＬＤが実行される。ストア命令ＳＴでヒットするウェイＷＡＹ０は、ロード命令ＬＤでヒットするウェイＷＡＹ１と異なる。
【０１１７】
ストア命令ＳＴの動作は、データＤ１がストアされるアドレスが異なることを除き、図１３と同様である。なお、図１５では、ストア命令ＳＴおよびロード命令ＬＤでの対象アドレスが明確になるように、パイプライン制御部１４４が出力する論理アドレスＶＡを記載している（図１５（ａ））。
【０１１８】
命令ユニット１０は、ストア命令ＳＴのリクエストＲＥＱに続き、ロード命令ＬＤのリクエストＲＥＱをフェッチポート１４２に投入し、フェッチポート１４２に保持させる（図１５（ｂ））。フェッチポート１４２は、保持したロード命令ＬＤのリクエストＲＥＱをリクエストＩＵＲＥＱ（ＬＤ）としてパイプライン制御部１４４に投入する（図１５（ｃ））。
【０１１９】
ＴＬＢ制御部１６は、パイプライン制御部１４４から受ける論理アドレスＶＡがＴＬＢに登録されているため、論理アドレスＬＡから変換した物理アドレスＰＡと一致信号ＴＬＢＭＣＨとを出力する（図１５（ｄ））。一致信号ＴＬＢＭＣＨは、図１３（ｅ）に示されるように、物理アドレスＰＡの出力サイクルと同じサイクルに出力される。
【０１２０】
キャッシュ制御部１８は、論理アドレスＶＡおよび物理アドレスＰＡを用いてタグ領域ＴＡＧを検索し、ヒット信号ＨＩＴと、ヒットしたウェイＷＡＹの番号を示す識別情報ＷＡＹＩＤとを出力する（図１５（ｅ））。データキャッシュ２８は、パイプライン制御部１４４からのリクエストＣＲＥＱ（図２）、ヒット信号ＨＩＴ、識別情報ＷＡＹＩＤおよび論理アドレスＶＡに基づいて動作し、読み出したデータをセレクタ部２６に出力する。
【０１２１】
図６に示すＳＦＩ判定回路２１０は、ロード命令ＬＤでの論理アドレスＶＡ［１２：５］をテーブルＳＴＢＴＢＬの全てのエントリＳＥ０−ＳＥ１９に保持された論理アドレスＶＡ［１２：５］と比較する（図１５（ｆ））。また、ＳＦＩ判定回路２１０は、ロード命令ＬＤでのバイトマスク情報ＢＭの値と、テーブルＳＴＢＴＢＬの全てのエントリＳＥ０−ＳＥ１９に保持されたバイトマスク情報ＢＭとを比較する。さらに、ＳＦＩ判定回路２１０は、ロード命令ＬＤでヒットしたウェイＷＡＹを示す識別情報ＷＡＹＩＤと、テーブルＳＴＢＴＢＬの全てのエントリＳＥ０−ＳＥ１９に保持された有効な識別情報ＷＡＹＩＤとを比較する。
【０１２２】
図１５に示す例では、ＳＦＩ判定回路２１０における図７に示す検出部ＳＦＩＤＥＴａは、一致信号ＶＡＭＣＨ、ＢＭＭＣＨ、ＷＡＹＩＤＭＣＨの少なくともいずれかが不一致を示す。このため、ＳＦＩ判定回路２１０は、検出信号ＳＴＢＳＦＩ０−ＳＴＢＳＦＩ１９を出力せず、無効信号ＳＦＩを出力しない（図１５（ｇ））。
【０１２３】
なお、サイクルＴ８において、ライトバッファ２４はデータＤ１を保持していないため、ＳＦＩ判定回路２１０における図７に示す検出部ＳＦＩＤＥＴｂは、検出信号ＷＢＳＦＩを出力しない。また、図８に示すＳＦＢ判定回路２２０は、バイパス要求信号ＳＦＢＲＥＱを出力しない。すなわち、ＳＦＢは発生しない。このため、図１１に示す完了判定部１４６は、ロード命令ＬＤに対応して、アボート信号ＡＢＴを出力せず、完了信号ＳＴＶを出力する（図１５（ｈ））。そして、データキャッシュ２８から読み出されたデータが演算部１２に転送され、ロード命令ＬＤが完了する。
【０１２４】
図１６は、図２に示す演算処理装置ＯＰＤ２がストア命令ＳＴとロード命令ＬＤとを順次に実行する場合の動作の別の例を示す。図１３および図１５と同一または同様の動作については、詳細な説明は省略する。図１６では、まず、先頭アドレスが０ｘ００Ｆ０の領域（図１２（ａ））に８バイトのデータＤ１をストアするストア命令ＳＴが実行される。この後、データＤ１がデータキャッシュ２８に書き込まれる前に、先頭アドレスが０ｘ００Ｆ４の領域（図１２（ｂ））から８バイトのデータをロードするロード命令ＬＤが実行される。ストア命令ＳＴの動作は、図１３と同様である。ストア命令ＳＴおよびロード命令ＬＤでヒットするウェイＷＡＹは互いに等しい（図１６（ａ））。
【０１２５】
ストア命令ＳＴのデータＤ１は、サイクルＴ３からサイクルＴ１０の間、ストアバッファ２２に保持される（図１６（ｂ））。このため、エントリＳＥ０に対応する検出部ＳＦＩＤＥＴａ（図７）は、一致信号ＶＡＭＣＨ、ＢＭＭＣＨ、ＷＡＹＩＤＭＣＨを生成し、検出信号ＳＴＢＳＦＩ０を出力する（図１６（ｃ））。そして、バッファ制御部２０は、検出信号ＳＴＢＳＦＩ０に基づき、パイプライン制御部１４４の完了判定部１４６に無効信号ＳＦＩを出力する（図１６（ｄ））。この時点で、ライトバッファ２４は、ストア命令ＳＴのデータＤ１を保持していないため、エントリＷＥ０に対応する検出部ＳＦＩＤＥＴｂは、検出信号ＷＢＳＦＩ０を出力しない（図１６（ｅ））。同様に、ライトバッファ２４は、ストア命令ＳＴのデータＤ１を保持していないため、図８に示すＳＦＢ判定回路２２０は、バイパス要求信号ＳＦＢＲＥＱを出力しない。すなわち、ＳＦＢは発生しない。
【０１２６】
図１１に示す完了判定部１４６は、ロード命令ＬＤに対応してバッファ制御部２０から受ける無効信号ＳＦＩに基づきアボート信号ＡＢＴを出力し、完了信号ＳＴＶを出力しない（図１６（ｆ））。すなわち、フェッチポート１４２がサイクルＴ６に発行したロード命令ＬＤはアボートされ、フェッチポート１４２は、ＳＦＩによりアボートされたことを示すフラグＷＩＤとともにロード命令ＬＤを保持する。命令ユニット１０は、ロード命令ＬＤに対応する完了信号ＳＴＶを受けないため、ロード命令ＬＤに対応してデータキャッシュ２８から転送される無効なデータを演算部１２に破棄させる。
【０１２７】
アボート信号ＡＢＴを受けたフェッチポート１４２は、例えば、サイクルＴ１３にロード命令ＬＤをパイプライン制御部１４４に再び投入する（図１６（ｇ））。ストア命令ＳＴのデータＤ１は、サイクルＴ１１からサイクルＴ１７の間、ライトバッファ２４に格納されている（図１６（ｈ））。このため、エントリＷＥ０に対応する検出部ＳＦＩＤＥＴｂ（図７）は、一致信号ＶＡＭＣＨ、ＢＭＭＣＨを生成し、検出信号ＷＢＳＦＩ０を出力する（図１６（ｉ））。バッファ制御部２０のＳＦＩ判定回路２１０は、検出信号ＷＢＳＦＩ０に基づき、パイプライン制御部１４４の完了判定部１４６に無効信号ＳＦＩを出力する（図１６（ｊ））。
【０１２８】
完了判定部１４６は、無効信号ＳＦＩに基づきアボート信号ＡＢＴを出力し、完了信号ＳＴＶを出力せず、フェッチポート１４２がサイクルＴ１３に発行したロード命令ＬＤをアボートさせる（図１６（ｋ））。
【０１２９】
アボート信号ＡＢＴを受けたフェッチポート１４２は、例えば、サイクルＴ２２にロード命令ＬＤをパイプライン制御部１４４に再び投入する（図１６（ｌ））。この時点で、ストア命令ＳＴのデータＤ１はデータキャッシュ２８に格納されている（図１６（ｍ））。ＳＦＩ判定回路２１０における図７に示す検出部ＳＦＩＤＥＴａ、ＳＦＩＤＥＴｂの各々において、一致信号ＶＡＭＣＨ、ＢＭＭＣＨ、ＷＡＹＩＤＭＣＨの少なくともいずれかが不一致を示す。このため、ＳＦＩ判定回路２１０は、検出信号ＳＴＢＳＦＩ０−ＳＴＢＳＦＩ１９、ＷＢＳＦＩ０−ＷＢＳＦＩ７を出力せず、無効信号ＳＦＩは出力されない（図１６（ｎ））。このため、完了判定部１４６は、ロード命令ＬＤに対応して、アボート信号ＡＢＴを出力せず、完了信号ＳＴＶを出力する（図１６（ｏ））。そして、データキャッシュ２８から読み出されたデータが演算部１２に転送され、ロード命令ＬＤが完了する。
【０１３０】
図１７は、図２に示す演算処理装置ＯＰＤ２がストア命令ＳＴとロード命令ＬＤとを順次に実行する場合の動作の別の例を示す。図１３および図１５と同一または同様の動作については、詳細な説明は省略する。図１７では、まず、先頭アドレスが０ｘ００Ｆ２の領域（図１２（ｄ））に８バイトのデータＤ１をストアするストア命令ＳＴが実行される。この後、データＤ１がデータキャッシュ２８に書き込まれる前に、先頭アドレスが０ｘ２０Ｆ６の領域（図１２（ｅ））から８バイトのデータをロードするロード命令ＬＤが実行される。ストア命令ＳＴの動作は、図１３と同様である。ストア命令ＳＴでヒットするウェイＷＡＹ０は、ロード命令ＬＤでヒットするウェイＷＡＹ１と異なる（図１７（ａ））。アドレス０ｘ００Ｆ２は、２進数で”００００  ００００  １１１１  ００１０”であり、アドレス０ｘ２０Ｆ６は、２進数で”００１０  ００００  １１１１  ０１１０”であり、論理アドレスＶＡ［１２：５］の値は互いに同じである。
【０１３１】
図７に示す検出部ＳＦＩＤＥＴａは、ロード命令ＬＤでの論理アドレスＶＡ［１２：５］とテーブルＳＴＢＴＢＬのエントリＳＥ０に保持された論理アドレスＶＡ［１２：５］との一致を検出し、一致信号ＶＡＭＣＨを出力する。また、検出部ＳＦＩＤＥＴａは、ロード命令ＬＤでのバイトマスク情報ＢＭの値と、テーブルＳＴＢＴＢＬのエントリＳＥ０に保持されたバイトマスク情報ＢＭとのいずれかのビットの一致を検出し、一致信号ＢＭＭＣＨを出力する。ストアデータはデータキャッシュ２８に記憶されているため、エントリＳＥ０のフラグＷＡＹＩＤＶはセットされている。ロードデータはデータキャッシュ２８に記憶されているため、ヒット信号ＨＩＴが出力される。
【０１３２】
一方、検出部ＳＦＩＤＥＴａは、ロード命令ＬＤでヒットしたウェイＷＡＹを示す識別情報ＷＡＹＩＤと、テーブルＳＴＢＴＢＬのエントリＳＥ０に保持された識別情報ＷＡＹＩＤとの不一致を検出し、一致信号ＷＡＹＩＤＭＣＨをロウレベルＬに保持する。一致信号ＷＡＹＩＤＭＣＨが生成されないため、エントリＳＥ０に対応する検出部ＳＦＩＤＥＴａは、検出信号ＳＴＢＳＦＩ０を出力しない（図１７（ｂ））。他のエントリＳＥ１−ＳＥ１９に対応する検出部ＳＦＩＤＥＴａも、検出信号ＳＴＢＳＦＩ１−ＳＴＢＳＦＩ１９を出力しない。ライトバッファ２４は、ストア命令ＳＴによるデータＤ１を保持していないため、検出部ＳＦＩＤＥＴｂは、検出信号ＷＢＳＦＩ０−ＷＢＳＦＩ７を出力しない。このため、ＳＦＩ判定回路２１０は、無効信号ＳＦＩを出力しない（図１７（ｃ））。したがって、図１５と同様に、完了判定部１４６は、ロード命令ＬＤに対応して、アボート信号ＡＢＴを出力せず、完了信号ＳＴＶを出力する（図１７（ｄ））。そして、データキャッシュ２８から読み出されたデータが演算部１２に転送され、ロード命令ＬＤが完了する。
【０１３３】
このように、図６に示すＳＦＩ判定回路２１０によりロード命令と先行するストア命令とのウェイＷＡＹの一致の有無を検出することで、比較器を増やすことなく、アドレスの上位側のビットを利用してＳＦＩの発生の有無を検出することができる。この結果、ＳＦＩの検出にアドレスの上位側のビットを用いない場合に発生する偽のＳＦＩを抑止することができる。
【０１３４】
図１８は、図２に示す演算処理装置ＯＰＤ２がストア命令ＳＴとロード命令ＬＤとを順次に実行する場合の動作の別の例を示す。図１３および図１６と同一または同様の動作については、詳細な説明は省略する。図１８では、まず、先頭アドレスが０ｘ００Ｆ８の領域（図１２（ｃ））に８バイトのデータＤ１をストアするストア命令ＳＴが実行される。この後、データＤ１がデータキャッシュ２８に書き込まれる前に、先頭アドレスが先行のストア命令ＳＴと同じの領域から８バイトのデータをロードするロード命令ＬＤが実行される。ストア命令ＳＴの動作は、図１３と同様である。ストア命令ＳＴとロード命令ＬＤとのアドレスが互いに同じため、ヒットするウェイＷＡＹは互いに同じである（図１８（ａ）、（ｂ））。
【０１３５】
ストア命令ＳＴのデータＤ１は、サイクルＴ３からサイクルＴ１０の間、ストアバッファ２２に保持される（図１８（ｃ））。このため、エントリＳＥ０に対応する検出部ＳＦＩＤＥＴａ（図７）は、図１６と同様に、一致信号ＶＡＭＣＨ、ＢＭＭＣＨ、ＷＡＹＩＤＭＣＨを生成し、検出信号ＳＴＢＳＦＩ０を出力する（図１８（ｄ））。
【０１３６】
一方、サイクルＴ６に投入されるロード命令ＬＤは、命令ユニット１０が投入したロード命令ＬＤのリクエストＲＥＱに基づく初めてのリクエストＩＵＲＥＱである。このため、ロード命令ＬＤがＳＦＩによりアボートしたことを示すフラグＷＩＤは、テーブルＳＦＢＴＢＬのエントリＳＥに保持されていない。したがって、図８に示す判定制御部ＳＦＢＣＮＴは、セレクタＳＥＬ１に論理０を選択させ、論理０の許可信号ＳＦＢＥＮを出力する（図１８（ｅ））。
【０１３７】
図９に示す検出部ＳＦＢＤＥＴは、論理０の許可信号ＳＦＢＥＮに基づき、比較器ＣＭＰ５による比較結果および検出部ＤＥＴ３による検出結果をマスクし、論理０の検出信号ＳＦＢＷＢ０−ＳＦＢＷＢ７を出力する（図１８（ｆ））。図８に示すＳＦＢ判定回路２２０は、論理０の検出信号ＳＦＢＷＢ０−ＳＦＢＷＢ７に基づき、重複検出部ＭＬＴＤＥＴおよびエンコーダＳＦＢＥＮＣの動作を禁止する。そして、ＳＦＢ判定回路２２０は、無効なバイパス要求信号ＳＦＢＲＥＱおよび無効な重複信号ＳＦＢＭＬＴを出力する（図１８（ｇ）、（ｈ））。例えば、重複信号ＳＦＢＭＬＴは、論理０に設定される。エンコーダＳＦＢＥＮＣ（図８）が動作しないため、比較器ＣＭＰ４は、無効な物理アドレスＰＡ［４０：１３］をテーブルＷＢＴＢＬから受け、アドレス一致信号ＳＦＢＰＡＭＣＨを論理０に設定する（図１８（ｉ））。
【０１３８】
パイプライン制御部１４４のＳＦＢ発生部ＳＦＢＧＥＮ（図８）は、論理０のバイパス要求信号ＳＦＢＲＥＱ、論理０の重複信号ＳＦＢＭＬＴ、および論理０のアドレス一致信号ＳＦＢＰＡＭＣＨを受け、バイパス信号ＳＦＢを論理０に設定する（図１８（ｊ））。以上より、最初のロード命令ＬＤでは、ライトバッファ２４から演算部１２へのデータのバイパスは実行されない。なお、図１８に示すロード命令ＬＤの投入タイミングでは、ライトバッファ２４に、先行するストア命令ＳＴでのデータＤ１が転送されていないため、仮に検出部ＳＦＢＤＥＴの動作が有効になる場合にも、検出信号ＳＦＢＷＢ０−ＳＦＢＷＢ７は出力されない。
【０１３９】
一方、バッファ制御部２０は、検出信号ＳＴＢＳＦＩ０に基づき無効信号ＳＦＩを出力する（図１８（ｋ））。そして、図１６と同様に、アボート信号ＡＢＴが出力され、ロード命令ＬＤはアボートされる（図１８（ｌ））。
【０１４０】
フェッチポート１４２は、例えば、サイクルＴ１３にロード命令ＬＤをパイプライン制御部１４４に再び投入する（図１８（ｍ））。パイプライン制御部１４４の判定制御部ＳＦＢＣＮＴ（図８）は、ロード命令ＬＤの前回のアボート要因（ＷＩＤ）がＳＦＩの発生であるため、セレクタＳＥＬ１で論理１を選択し、論理１の許可信号ＳＦＢＥＮを出力する（図１８（ｎ））。
【０１４１】
一方、テーブルＷＢＴＢＬのエントリＷＥ０に対応する検出部ＳＦＢＤＥＴ（図９）は、ストア命令ＳＴとロード命令ＬＤとにおいて、論理アドレスＶＡ［１２：５］の一致と、バイトマスク情報ＢＭの一致を検出する。検出部ＳＦＢＤＥＴは、論理１の許可信号ＳＦＢＥＮに基づき、検出信号ＳＦＢＷＢ０を論理１に設定する（図１８（ｏ））。すなわち、ＳＦＢの発生が検出される。
【０１４２】
テーブルＷＢＴＢＬのエントリＷＥ０に対応する検出部ＳＦＩＤＥＴｂ（図６、図７）は、論理１の検出信号ＳＦＢＷＢ０に基づき、検出信号ＷＢＳＦＩ０の出力をマスクする（図１８（ｐ））。このため、無効信号ＳＦＩは出力されない（図１８（ｑ））。
【０１４３】
ＳＦＢ判定回路２２０は、検出信号ＳＦＢＷＢ０に基づき、バイパス要求信号ＳＦＢＲＥＱを出力する（図１８（ｒ））。検出信号ＳＦＢＷＢ０は、他の検出信号ＳＦＢＷＢ１−ＳＦＢＷＢ７と重複しないため、重複信号ＳＦＢＭＬＴは出力されない。エンコーダＳＦＢＥＮＣ（図８）は、検出信号ＳＦＢＷＢ０−ＳＦＢＷＢ７の論理に基づき、ライトバッファ２４のエントリＷＢ０およびテーブルＷＢＴＢＬのエントリＷＥ０を選択する識別情報ＷＢＩＤを生成する。
【０１４４】
図８に示す比較器ＣＭＰ４は、ロード命令ＬＤでの物理アドレスＰＡ［４０：１３］と、エントリＷＥ０から読み出される物理アドレスＰＡ［４０：１３］とが一致するため、アドレス一致信号ＳＦＢＰＡＭＣＨを出力する（図１８（ｓ））。パイプライン制御部１４４のＳＦＢ発生部ＳＦＢＧＥＮ（図８）は、論理１のバイパス要求信号ＳＦＢＲＥＱ、論理０の重複信号ＳＦＢＭＬＴ、および論理１のアドレス一致信号ＳＦＢＰＡＭＣＨを受け、バイパス信号ＳＦＢを論理１に設定する（図１８（ｔ））。そして、ライトバッファ２４から演算部１２へのデータのバイパスが実行される。すなわち、セレクタ部２６（図８）は、バイパス要求信号ＳＦＢＲＥＱに基づき、ライトバッファ２４から出力されるデータを有効なロードデータとして演算部１２にバイパスする。
【０１４５】
図１１に示す完了判定部１４６は、オア回路ＯＲ４の全ての入力で論理０を受けるため、アボート信号ＡＢＴを出力せず、一致信号ＴＬＢＭＣＨの受信に基づき命令ユニット１０へ完了信号ＳＴＶを出力する（図１８（ｕ））。そして、ロード命令ＬＤが完了する。
【０１４６】
図１８に示されるように、ストア命令ＳＴと、後続のロード命令ＬＤとの間で発生するＳＦＢは、ストア命令ＳＴと後続のロード命令ＬＤとの間隔が数サイクルであることが多い。この場合、ロード命令ＬＤの投入タイミングは、ストアデータＤ１がストアバッファ２２に保持され、ライトバッファ２４に転送される前である。したがって、ストアバッファ２２に保持されたデータに基づいて、ロード命令ＬＤに対するＳＦＩが発生し、ロード命令ＬＤはアボートされる。このため、図８に示す判定制御部ＳＦＢＣＮＴにより、最初のロード命令に対するＳＦＢの判定をマスクしても、ロード命令ＬＤによるデータの転送時間は増加せず、演算処理装置ＯＰＤ２の処理性能が低下する可能性は低い。
【０１４７】
図１９は、図２に示す演算処理装置ＯＰＤ２がストア命令ＳＴとロード命令ＬＤとを順次に実行する場合の動作の別の例を示す。図１３および図１６と同一または同様の動作については、詳細な説明は省略する。図１９では、まず、先頭アドレスが０ｘ００Ｆ２の領域（図１２（ｄ））に８バイトのデータＤ１をストアするストア命令ＳＴが実行される。この後、データＤ１がデータキャッシュ２８に書き込まれる前に、先頭アドレスが０ｘ２０Ｆ２の領域（図１２（ｆ））の領域から８バイトのデータをロードするロード命令ＬＤが実行される。ストア命令ＳＴでヒットするウェイＷＡＹ０は、ロード命令ＬＤでヒットするウェイＷＡＹ１と異なる（図１９（ａ）、（ｂ））。このため、図１９では、ＳＦＩは発生せず、ＳＦＢも発生しない動作例である。アドレス０ｘ００Ｆ２は、２進数で”００００  ００００  １１１１  ００１０”であり、アドレス０ｘ２０Ｆ２は、２進数で”００１０  ００００  １１１１  ００１０”であり、論理アドレスＶＡ［１２：５］の値は互いに同じである。
【０１４８】
命令ユニット１０は、ストア命令ＳＴでのデータＤ１がライトバッファ２４に保持されているときにロード命令ＬＤのリクエストＲＥＱをフェッチポート１４２に出力する（図１９（ｃ））。フェッチポート１４２は、ロード命令ＬＤのリクエストＩＵＲＥＱをパイプライン制御部１４４に出力する（図１９（ｄ））。
【０１４９】
図７に示す検出部ＳＦＩＤＥＴｂは、ロード命令ＬＤでの論理アドレスＶＡ［１２：５］とテーブルＷＢＴＢＬのエントリＷＥ０に保持された論理アドレスＶＡ［１２：５］との一致を検出し、一致信号ＶＡＭＣＨを出力する（図１９（ｅ））。また、検出部ＳＦＩＤＥＴｂは、ロード命令ＬＤでのバイトマスク情報ＢＭの値と、テーブルＷＢＴＢＬのエントリＷＥ０に保持されたバイトマスク情報ＢＭとのいずれかのビットの一致を検出し、一致信号ＢＭＭＣＨを出力する（図１９（ｆ））。なお、ストアデータはデータキャッシュ２８に記憶されているため、エントリＷＥ０のフラグＷＡＹＩＤＶはセットされている。ロードデータはデータキャッシュ２８に記憶されているため、ヒット信号ＨＩＴが出力される。
【０１５０】
一方、検出部ＳＦＩＤＥＴｂは、ロード命令ＬＤでヒットしたウェイＷＡＹを示す識別情報ＷＡＹＩＤと、テーブルＳＴＢＴＢＬのエントリＳＥ０に保持された識別情報ＷＡＹＩＤとの不一致を検出し、一致信号ＷＡＹＩＤＭＣＨを出力しない（図１９（ｇ））。一致信号ＷＡＹＩＤＭＣＨが生成されないため、エントリＷＥ０に対応する検出部ＳＦＩＤＥＴｂは、検出信号ＷＢＳＦＩ０を出力しない（図１９（ｈ））。他のエントリＳＥ１−ＳＥ１９に対応する検出部ＳＦＩＤＥＴａも、検出信号ＷＢＳＦＩ１−ＷＢＳＦＩ１９を出力しない。このため、ＳＦＩ判定回路２１０は、無効信号ＳＦＩを出力しない（図１９（ｉ））。
【０１５１】
命令制御部１４は、ロード命令ＬＤのアボート要因を示すフラグＷＩＤを保持していないため、図８に示す判定制御部ＳＦＢＣＮＴは、セレクタＳＥＬ１に論理０を選択させ、論理０の許可信号ＳＦＢＥＮを出力する（図１９（ｊ））。論理０の許可信号ＳＦＢＥＮにより、図９に示すＳＦＢ判定回路２２０の検出部ＳＦＢＤＥＴは、ＳＦＢを検出する動作を停止し、ＳＦＢ判定回路２２０は、論理０のバイパス要求信号ＳＦＢＲＥＱを出力する（図１９（ｋ））。
【０１５２】
したがって、ストア命令ＳＴと後続のロード命令ＬＤでのアドレスが重複しない場合、ロード命令ＬＤに対応して偽のＳＦＩおよび偽のＳＦＢは発生せず、完了判定部１４６は、アボート信号ＡＢＴを出力せず、完了信号ＳＴＶを出力する（図１９（ｌ））。そして、データキャッシュ２８から読み出されたデータが演算部１２に転送され、ロード命令ＬＤが完了する。
【０１５３】
パイプライン制御部１４４に判定制御部ＳＦＢＣＮＴを設けることで、図１９に示されるように、ＳＦＩおよびＳＦＢが発生しない場合、偽のＳＦＩは発生せず、ロード命令ＬＤをアボートさせることなく完了することができる。これに対して、例えば、判定制御部ＳＦＢＣＮＴが、最初のロード命令ＬＤに基づき論理０の許可信号ＳＦＢＥＮを出力せずに、論理１の許可信号ＳＦＢＥＮを出力する場合、後に説明する図２８と同様に、最初のロード命令ＬＤは、アボートされる。
【０１５４】
図２０は、図２に示す演算処理装置ＯＰＤ２がストア命令ＳＴとロード命令ＬＤとを順次に実行する場合の動作の別の例を示す。図１３、図１４および図１６と同一または同様の動作については、詳細な説明は省略する。図２０では、まず、先頭アドレスが０ｘ００Ｆ８の領域（図１２（ｃ））に８バイトのデータＤ１をストアするストア命令ＳＴが実行される。この後、データＤ１がデータキャッシュ２８に書き込まれる前に、先頭アドレスが０ｘ００Ｆ８の領域から８バイトのデータをロードするロード命令ＬＤが実行される。さらに、この後、先頭アドレスが０ｘ００Ｆ８の領域に８バイトのデータＤ２をストアするストア命令ＳＴが実行される。２つのストア命令ＳＴの動作は、図１４と同様である。ストア命令ＳＴおよびロード命令ＬＤでヒットするウェイＷＡＹは互いに等しい。このため、ストアデータがライトバッファ２４に転送されるまで、ＳＦＩが発生し、ストアデータがライトバッファ２４に転送された後、ＳＦＢが発生する。
【０１５５】
先行するストア命令ＳＴのデータＤ１は、テーブルＳＴＢＴＢＬのフラグＳＴＢＶが論理１に設定される期間、例えば、ストアバッファ２２のエントリＳＴＢ０に保持される（図２０（ａ））。このため、サイクルＴ６においてフェッチポート１４２がパイプライン制御部１４４に投入したロード命令ＬＤのリクエストＩＵＲＥＱに基づき、図２７と同様に、ＳＦＩが発生し、ロード命令ＬＤはアボートされる（図２０（ｂ）、（ｃ））。
【０１５６】
アボート信号ＡＢＴを受けたフェッチポート１４２は、例えば、サイクルＴ１５にロード命令ＬＤをパイプライン制御部１４４に再び投入する（図２０（ｄ））。サイクルＴ１７において、最初のストア命令ＳＴのデータＤ１は、例えば、ライトバッファ２４のエントリＷＥ０に保持され、２番目のストア命令ＳＴのデータＤ２は、例えば、ライトバッファ２４のエントリＷＥ１に保持されている（図２０（ｅ）、（ｆ））。このため、図８に示すＳＦＢ判定回路２２０は、２つの検出信号ＳＦＢＷＢ０、ＳＦＢＷＢ１を出力する。
【０１５７】
ＳＦＢ判定回路２２０のオア回路ＯＲ２は、検出信号ＳＦＢＷＢ０、ＳＦＢＷＢ１に基づきバイパス要求信号ＳＦＢＲＥＱを出力する（図２０（ｇ））。図８に示すＳＦＢ判定回路２２０の重複検出部ＭＬＴＤＥＴは、２つの検出信号ＳＦＢＷＢ０、ＳＦＢＷＢ１を重複して受け、重複信号ＳＦＢＭＬＴを出力する（図２０（ｈ））。ＳＦＢ判定回路２２０のエンコーダＳＦＢＥＮＣは、検出信号ＳＦＢＷＢ０、ＳＦＢＷＢ１のいずれかに対応する識別情報ＷＢＩＤを出力する。ライトバッファ２４は、識別情報ＷＢＩＤが示すエントリＷＥに保持されたデータ（Ｄ１またはＤ２）を出力し、テーブルＷＢＴＢＬは、識別情報ＷＢＩＤが示すエントリＷＥ（ＷＥ０またはＷＥ１）に保持された物理アドレスＰＡ［４０：１３］を出力する。ロード命令ＬＤでの物理アドレスＰＡ［４０：１３］は、エントリＷＥ０、ＷＥ１に保持された物理アドレスＰＡ［４０：１３］のそれぞれと一致するため、アドレス一致信号ＳＦＢＰＡＭＣＨが出力される（図２０（ｉ））。図１１に示す完了判定部１４６は、バイパス要求信号ＳＦＢＲＥＱと重複信号ＳＦＢＭＬＴとに基づき、完了信号ＳＴＶを出力せず、アボート信号ＡＢＴを出力する（図２０（ｊ）、（ｋ））。
【０１５８】
パイプライン制御部１４４のＳＦＢ発生部ＳＦＢＧＥＮ（図８）は、重複信号ＳＦＢＭＬＴに基づきバイパス信号ＳＦＢを論理０に設定し、ライトバッファ２４から演算部１２へのデータのバイパスを禁止する。なお、ＳＦＢ判定回路２２０のオア回路ＯＲ２は、検出信号ＳＦＢＷＢ０、ＳＦＢＷＢ１に基づきバイパス要求信号ＳＦＢＲＥＱを出力する。セレクタ部２６（図８）は、バイパス要求信号ＳＦＢＲＥＱに基づき、ライトバッファ２４からのデータを演算部１２に転送する。しかし、命令ユニット１０は、ロード命令ＬＤに対応する完了信号ＳＴＶを受けないため、ロード命令ＬＤに対応してセレクタ部２６から転送される無効なデータを演算部１２に破棄させる。
【０１５９】
アボート信号ＡＢＴを受けたフェッチポート１４２は、例えば、サイクルＴ２１にロード命令ＬＤをパイプライン制御部１４４に再び投入する（図２０（ｌ））。サイクルＴ２３において、最初のストア命令ＳＴのデータＤ１は、データキャッシュ２８に書き込まれ、ライトバッファ２４に保持されていない（図２０（ｍ））。一方、２番目のストア命令ＳＴのデータＤ２は、ライトバッファ２４のエントリＷＥ１に保持されている（図２０（ｎ））。このため、ＳＦＢ判定回路２２０は、重複信号ＳＦＢＭＬＴを出力せずに、バイパス要求信号ＳＦＢＲＥＱを出力する（図２０（ｏ）、（ｐ））。ロード命令ＬＤでの物理アドレスＰＡ［４０：１３］は、エントリＷＥ１に保持された物理アドレスＰＡ［４０：１３］と一致するため、アドレス一致信号ＳＦＢＰＡＭＣＨが出力される（図２０（ｑ））。
【０１６０】
パイプライン制御部１４４のＳＦＢ発生部ＳＦＢＧＥＮは、論理１のバイパス要求信号ＳＦＢＲＥＱ、論理０の重複信号ＳＦＢＭＬＴ、および論理１のアドレス一致信号ＳＦＢＰＡＭＣＨを受け、バイパス信号ＳＦＢを論理１に設定する（図２０（ｒ））。以上より、ライトバッファ２４から演算部１２へのデータＤ２のバイパスが実行される。図１１に示す完了判定部１４６は、オア回路ＯＲ４の全ての入力で論理０を受けるため、アボート信号ＡＢＴを出力せず、一致信号ＴＬＢＭＣＨの受信に基づき命令ユニット１０へ完了信号ＳＴＶを出力する（図２０（ｓ））。そして、バイパス動作を伴うロード命令ＬＤが完了する。
【０１６１】
図２１は、図２に示す演算処理装置ＯＰＤ２が実行するＳＦＩの判定動作のフローの例を示す。例えば、図２１に示すフローは、演算処理装置ＯＰＤ２のハードウェアが、ロード命令ＬＤがパイプライン制御部１４４に投入されたことに基づき実行する処理を示しており、各処理は並列に実行されてもよい。例えば、ＳＦＩの発生を判定する動作ＯＰ１０、ＯＰ１２、ＯＰ１４、ＯＰ１６は、順不同に実行され、あるいは並列に実行される。図２１のフローは、フェッチポート１４２がロード命令ＬＤをパイプライン制御部１４４に投入することで開始される。
【０１６２】
動作ＯＰ１０において、演算処理装置ＯＰＤ２は、先行するストア命令ＳＴと後続のロード命令ＬＤとの論理アドレスＶＡ［１２：５］が互いに一致するか否かを判定する。先行するストア命令ＳＴの論理アドレスＶＡ［１２：５］は、図５に示すテーブルＳＴＢＴＢＬ、ＷＢＴＢＬの論理アドレスＶＡの記憶領域に保持される。例えば、動作ＯＰ１０は、図７に示す比較器ＣＭＰ１により実現される。論理アドレスＶＡ［１２：５］が一致しない場合、動作ＯＰ２０において、演算処理装置ＯＰＤ２は、無効信号ＳＦＩを論理０に設定し、ＳＦＩが発生しない場合の動作を実行する。例えば、図６に示すオア回路ＯＲ１が動作ＯＰ１２を実行する。
【０１６３】
また、動作ＯＰ１２において、演算処理装置ＯＰＤ２は、先行するストア命令ＳＴと後続のロード命令ＬＤとのバイトマスク情報ＢＭが互いに一致するか否かを判定する。先行するストア命令ＳＴのバイトマスク情報ＢＭは、図５に示すテーブルＳＴＢＴＢＬ、ＷＢＴＢＬのバイトマスク情報ＢＭの記憶領域に保持される。例えば、動作ＯＰ１２は、図７に示す検出器ＤＥＴ１により実現される。論理アドレスＶＡ［１２：５］が一致しない場合、動作ＯＰ２０が実行される。
【０１６４】
動作ＯＰ１４において、演算処理装置ＯＰＤ２は、先行するストア命令ＳＴと後続のロード命令ＬＤとがキャッシュヒットするか否かを判定する。先行するストア命令ＳＴのキャッシュヒットの情報は、図５に示すテーブルＳＴＢＴＢＬ、ＷＢＴＢＬにフラグＷＡＹＩＤＶとして保持される。例えば、動作ＯＰ１４は、図７に示す検出器ＤＥＴ２により実現される。先行するストア命令ＳＴと後続のロード命令ＬＤとのいずれかがキャッシュヒットしない場合、動作ＯＰ１８が実行される。
【０１６５】
動作ＯＰ１６において、演算処理装置ＯＰＤ２は、先行するストア命令ＳＴと後続のロード命令ＬＤとの識別情報ＷＡＹＩＤが一致するか否かを判定する。先行するストア命令ＳＴの識別情報ＷＡＹＩＤは、図５に示すテーブルＳＴＢＴＢＬ、ＷＢＴＢＬの識別情報ＷＡＹＩＤの記憶領域に保持される。例えば、ＯＰ１６は、図７に示す検出器ＤＥＴ２により実現される。先行するストア命令ＳＴと後続のロード命令ＬＤとの識別情報ＷＡＹＩＤが一致しない場合、動作ＯＰ２０が実行される。
【０１６６】
動作ＯＰ１０、ＯＰ１２、ＯＰ１４、ＯＰ１６の判定が全て肯定を示す場合、動作ＯＰ１８において、演算処理装置ＯＰＤ２は、無効信号ＳＦＩを論理１に設定し、ＳＦＩが発生した場合の動作を実行する。例えば、動作ＯＰ１８は、図６に示すオア回路ＯＲ１により実現される。そして、演算処理装置ＯＰＤ２は、ＳＦＩの判定結果に基づき、図１５から図１９に示す動作を実行する。
【０１６７】
図２２は、図２に示す演算処理装置ＯＰＤ２が実行するＳＦＢの判定動作のフローの例を示す。例えば、図２２に示すフローは、演算処理装置ＯＰＤ２のハードウェアが、ロード命令ＬＤがパイプライン制御部１４４に投入されたことに基づき実行する処理を示しており、各処理は並列に実行されてもよい。例えば、ＳＦＢの発生を判定する動作ＯＰ３６、ＯＰ３８、ＯＰ４０、ＯＰ４２は、順不同に実行され、あるいは並列に実行される。図２２のフローは、フェッチポート１４２が命令ユニット１０からのリクエストＲＥＱに基づき最初のロード命令ＬＤをパイプライン制御部１４４に投入することで開始される。
【０１６８】
まず、演算処理装置ＯＰＤ２は、ロード命令ＬＤがパイプライン制御部１４４にロード命令ＬＤが投入された場合、動作ＯＰ３０において、ＳＦＢの発生を判定する前にデータキャッシュ２８からのデータの読み出しを開始する。例えば、動作ＯＰ３０は、図８に示す判定制御部ＳＦＢＣＮＴが、ロード命令ＬＤの最初のリクエストＩＵＲＥＱの発行時に許可信号ＳＦＢＥＮを出力し、ＳＦＢの発生をマスクすることにより実現される。
【０１６９】
動作ＯＰ３０と並行して、演算処理装置ＯＰＤ２は、動作ＯＰ３２において、ＳＦＩが発生したか否かを判定する。例えば、動作ＯＰ３２は、図１１に示す完了判定部１４６により実現される。ＳＦＩが発生していない場合（ＳＦＩ＝０）、完了判定部１４６から完了信号ＳＴＶが出力され、データキャッシュ２８から読み出されたデータが演算部１２に転送される。一方、ＳＦＩが発生した場合（ＳＦＩ＝１）、完了判定部１４６からアボート信号ＡＢＴが出力され、ロード命令ＬＤがアボートされる。
【０１７０】
ロード命令ＬＤがアボートされた場合、演算処理装置ＯＰＤ２は、動作ＯＰ３４において、ロード命令ＬＤを再投入する。例えば、動作ＯＰ３４は、フェッチポート１４２により実現される。この後、演算処理装置ＯＰＤ２は、再投入したロード命令ＬＤにおいて、ＳＦＢの発生を判定する。
【０１７１】
すなわち、動作ＯＰ３６において、演算処理装置ＯＰＤ２は、ロード命令ＬＤの論理アドレスＶＡ［１２：５］とテーブルＷＢＴＢＬのエントリＷＥに保持された論理アドレスＶＡ［１２：５］とが一致することを検出する。また、動作ＯＰ３６において、演算処理装置ＯＰＤ２は、ロード命令ＬＤでのバイトマスク情報ＢＭとテーブルＷＢＴＢＬのエントリＷＥに保持されたバイトマスク情報ＢＭとが一致することを検出する。ここで、図１０に示す（ａ）、（ｂ）、（ｃ）、（ｄ）に例示する条件に合致する場合、バイトマスク情報ＢＭの一致が検出される。例えば、動作ＯＰ３６は、図８に示す検出部ＳＦＢＤＥＴが許可信号ＳＦＢＥＮを受けて動作することで実現される。論理アドレスＶＡ［１２：５］およびバイトマスク情報ＢＭが一致した場合、動作ＯＰ３８が実行される。論理アドレスＶＡ［１２：５］およびバイトマスク情報ＢＭが一致しない場合、ＳＦＢは発生しないため、動作ＯＰ３０が再び実行される。
【０１７２】
次に、動作ＯＰ３８において、一致が検出されたライトバッファ２４のエントリＷＥからデータが読み出される。例えば、動作ＯＰ３８は、図８に示すエンコーダＳＦＢＥＮＣおよびセレクタ部２６により実現される。
【０１７３】
動作ＯＰ４０において、演算処理装置ＯＰＤ２は、ライトバッファ２４内の１つのエントリＷＥに対応して１つのＳＦＢが検出されたか否かを検出する。すなわち、演算処理装置ＯＰＤ２は、重複信号ＳＦＢＭＬＴが論理０であるか否かを検出する。例えば、動作ＯＰ４０は、図１１に示す完了判定部１４６により実現される。重複信号ＳＦＢＭＬＴが論理０の場合、動作ＯＰ４２が実行される。重複信号ＳＦＢＭＬＴが論理１の場合、完了判定部１４６からアボート信号ＡＢＴが出力され、ロード命令ＬＤがアボートされ、動作ＯＰ３６が再び実行される。
【０１７４】
動作ＯＰ４２において、演算処理装置ＯＰＤ２は、テーブルＷＢＴＢＬのエントリＷＥに保持された物理アドレスＰＡ［４０：１３］と、ロード命令ＬＤの物理アドレスＰＡ［４０：１３］とが一致することを検出する。例えば、動作ＯＰ４２は、図１１に示す完了判定部１４６により実現される。物理アドレスＰＡ［４０：１３］が一致した場合、ＳＦＢが発生したため、動作ＯＰ４４が実行される。物理アドレスＰＡ［４０：１３］が一致しない場合、ＳＦＢは発生せず、完了判定部１４６からアボート信号ＡＢＴが出力され、ロード命令ＬＤがアボートされ、動作ＯＰ３６が再び実行される。
【０１７５】
動作ＯＰ４４では、演算処理装置ＯＰＤ２は、動作ＯＰ３２と同様に、ＳＦＩが発生したか否かを判定する。ＳＦＩが発生していない場合（ＳＦＩ＝０）、完了判定部１４６から完了信号ＳＴＶが出力され、ライトバッファ２４から読み出されたデータが演算部１２に転送される。すなわち、ＳＦＢの発生によるデータのバイパスが実行される。一方、ＳＦＩが発生した場合（ＳＦＩ＝１）、完了判定部１４６からアボート信号ＡＢＴが出力され、ロード命令ＬＤがアボートされる。
【０１７６】
図２３は、ＳＦＩ判定回路の他の例を示す。図２３に示すＳＦＩ判定回路２１１は、図６に示すＳＦＩ判定回路２１０の検出部ＳＦＩＤＥＴａ、ＳＦＩＤＥＴｂの代わりに検出部ＳＦＩＤＥＴｃ、ＳＦＩＤＥＴｄを有する。検出部ＳＦＩＤＥＴｃは、ヒット信号ＨＩＴとフラグＷＡＹＩＤＶとを比較しない点、および識別情報ＷＡＹＩＤを比較しない点が、検出部ＳＦＩＤＥＴａと相違する。検出部ＳＦＩＤＥＴｄは、ヒット信号ＨＩＴとフラグＷＡＹＩＤＶとを比較しない点、および識別情報ＷＡＹＩＤを比較しない点が、検出部ＳＦＩＤＥＴｂと相違する。
【０１７７】
図２４は、図２３に示す検出部ＳＦＩＤＥＴｃ、ＳＦＩＤＥＴｄの例を示す。検出部ＳＦＩＤＥＴｃは、図７に示す検出部ＳＦＩＤＥＴａが有する検出部ＤＥＴ２を含まない。検出部ＳＦＩＤＥＴｄは、図７に示す検出部ＳＦＩＤＥＴｂが有する検出部ＤＥＴ２を含まない。このため、ＳＦＩの判定において、物理アドレスＰＡ［４０：１３］が一致しない場合にもＳＦＩの発生が検出され、図２７に示されるように、偽のＳＦＩが発生するおそれがある。
【０１７８】
図２５は、ＳＦＢ判定回路の他の例を示す。図２５に示すＳＦＢ判定回路２２１は、図８に示すＳＦＢ判定回路２２０の検出部ＳＦＢＤＥＴの代わりに検出部ＳＦＢＤＥＴ２を有する。検出部ＳＦＢＤＥＴ２は、検出信号ＳＦＢＷＢ（ＳＦＢＷＢ０−ＳＦＢＷＢ７）の生成に許可信号ＳＦＢＥＮを使用しないことを除き、図８に示す検出部ＳＦＢＤＥＴと同様である。許可信号ＳＦＢＥＮが使用されないため、図８に示す判定制御部ＳＦＢＣＮＴは、パイプライン制御部１４４から除かれてもよい。
【０１７９】
図２６は、図２５に示す検出部ＳＦＢＤＥＴ２の例を示す。検出部ＳＦＢＤＥＴ２は、許可信号ＳＦＢＥＮに基づき検出信号ＳＦＢＷＢ０の出力をマスクする論理を図９に示す検出部ＳＦＢＤＥＴから削除している。このため、ストア命令ＳＴに構造する最初のロード命令ＬＤに基づきＳＦＢの発生の可能性が検出される場合がある。すなわち、図２８に示す偽のＳＦＢが発生するおそれがある。
【０１８０】
図２７は、図２３に示すＳＦＩ判定回路２１１および図２５に示すＳＦＢ判定回路２２１を有する演算処理装置がストア命令ＳＴとロード命令ＬＤとを順次に実行する場合の動作の例を示す。図１３および図１６と同一または同様の動作については、詳細な説明は省略する。
【０１８１】
図２７では、図１７と同様に、先頭アドレスを０ｘ００Ｆ０とするストア命令ＳＴと、先頭アドレスが０ｘ００Ｆ６とするロード命令ＬＤとが順次に実行される。図２７では、ストア命令ＳＴおよびロード命令ＬＤでヒットするウェイＷＡＹは互いに等しいが、ストア命令ＳＴおよびロード命令ＬＤでヒットするウェイＷＡＹは互いに異なっていてもよい（図２７（ａ）、（ｂ））。
【０１８２】
ストア命令ＳＴのデータＤ１は、サイクルＴ３からサイクルＴ１０の間、ストアバッファ２２に保持される（図２７（ｃ））。このため、エントリＳＥ０に対応する検出部ＳＦＩＤＥＴｃ（図２４）は、一致信号ＶＡＭＣＨ、ＢＭＭＣＨを生成し、検出信号ＳＴＢＳＦＩ０を出力する（図２７（ｄ））。そして、バッファ制御部２０は、検出信号ＳＴＢＳＦＩ０に基づき無効信号ＳＦＩを出力する（図２７（ｅ））。ストア命令ＳＴのアドレスとロード命令ＬＤのアドレスは互いに異なり、データの依存性はないため、無効信号ＳＦＩの出力は、偽のＳＦＩの発生を示す。
【０１８３】
図１１に示す完了判定部１４６は、ロード命令ＬＤに対応してバッファ制御部２０から受ける無効信号ＳＦＩに基づきアボート信号ＡＢＴを出力し、完了信号ＳＴＶを出力しない（図２７（ｆ））。命令ユニット１０は、ロード命令ＬＤに対応する完了信号ＳＴＶを受けないため、ロード命令ＬＤに対応してデータキャッシュ２８から転送される無効なデータを演算部１２に破棄させる。
【０１８４】
アボート信号ＡＢＴを受けたフェッチポート１４２は、例えば、サイクルＴ１３にロード命令ＬＤをパイプライン制御部１４４に再び投入する（図２７（ｇ））。ストア命令ＳＴのデータＤ１は、サイクルＴ１１からサイクルＴ１７の間、ライトバッファ２４に格納されている（図２７（ｈ））。このため、エントリＷＥ０に対応する検出部ＳＦＩＤＥＴｄ（図２４）は、一致信号ＶＡＭＣＨ、ＢＭＭＣＨを生成し、検出信号ＷＢＳＦＩ０を出力する（図２７（ｉ））。バッファ制御部２０は、検出信号ＷＢＳＦＩ０に基づき、完了判定部１４６に無効信号ＳＦＩを出力する（図２７（ｊ））。ストア命令ＳＴのアドレスとロード命令ＬＤのアドレスは互いに異なり、データの依存性はないため、無効信号ＳＦＩの出力は、偽のＳＦＩの発生を示す。
【０１８５】
完了判定部１４６は、無効信号ＳＦＩに基づきアボート信号ＡＢＴを出力し、完了信号ＳＴＶを出力せず、フェッチポート１４２がサイクルＴ１３に発行したロード命令ＬＤをアボートさせる（図２７（ｋ））。
【０１８６】
アボート信号ＡＢＴを受けたフェッチポート１４２は、例えば、サイクルＴ２２にロード命令ＬＤをパイプライン制御部１４４に再び投入する（図２７（ｌ））。この時点で、ストア命令ＳＴのデータＤ１はデータキャッシュ２８に格納されている（図２７（ｍ））。ＳＦＩ判定回路２１１における図２３に示す検出部ＳＦＩＤＥＴｃ、ＳＦＩＤＥＴｄの各々において、一致信号ＶＡＭＣＨ、ＢＭＭＣＨの少なくともいずれかが不一致を示す。このため、ＳＦＩ判定回路２１１は、検出信号ＳＴＢＳＦＩ０−ＳＴＢＳＦＩ１９、ＷＢＳＦＩ０−ＷＢＳＦＩ７を出力せず、無効信号ＳＦＩは出力されない（図２７（ｎ））。このため、完了判定部１４６は、ロード命令ＬＤに対応して、アボート信号ＡＢＴを出力せず、完了信号ＳＴＶを出力する（図２７（ｏ））。そして、データキャッシュ２８から読み出されたデータが演算部１２に転送され、ロード命令ＬＤが完了する。
【０１８７】
図２８は、図２３に示すＳＦＩ判定回路２１１および図２５に示すＳＦＢ判定回路２２１を有する演算処理装置がストア命令ＳＴとロード命令ＬＤとを順次に実行する場合の動作の別の例を示す。図１３、図１６および図１９と同一または同様の動作については、詳細な説明は省略する。図２８では、図１９と同様に、先頭アドレスを０ｘ００Ｆ２とするストア命令ＳＴと、先頭アドレスが０ｘ２０Ｆ２とするロード命令ＬＤとが順次に実行される。ストア命令ＳＴとロード命令ＬＤとでヒットするウェイＷＡＹ（すなわち識別情報ＷＡＹＩＤ）は互いに異なるが、ストア命令ＳＴおよびロード命令ＬＤでヒットするウェイＷＡＹは互いに同じでもよい（図２８（ａ）、（ｂ））。アドレス０ｘ００Ｆ２、０ｘ２０Ｆ２の論理アドレスＶＡ［１２：５］の値は互いに同じである。
【０１８８】
命令ユニット１０は、ストア命令ＳＴでのデータＤ１がライトバッファ２４に保持されているときにロード命令ＬＤのリクエストＲＥＱをフェッチポート１４２に出力する（図２８（ｃ））。フェッチポート１４２は、ロード命令ＬＤのリクエストＩＵＲＥＱをパイプライン制御部１４４に出力する（図２８（ｄ））。
【０１８９】
エントリＷＥ０に対応する検出部ＳＦＩＤＥＴｄ（図２４）は、一致信号ＶＡＭＣＨ、ＢＭＭＣＨを生成する（図２８（ｅ））。図２５に示すＳＦＢ判定回路２２１は、ストア命令ＳＴとロード命令ＬＤの論理アドレスＶＡ［１２：５］の一致およびバイトマスク情報ＢＭの一致に基づき、検出信号ＳＦＢＷＢ０を出力する（図２８（ｆ））。さらに、ＳＦＢ判定回路２２１は、検出信号ＳＦＢＷＢ０に基づき、バイパス要求信号ＳＦＢＲＥＱを出力する（図２８（ｇ））。すなわち、図２５に示すＳＦＢ判定回路２２１では、ストア命令ＳＴとロード命令ＬＤでのアドレスが重複しない場合に、偽のＳＦＢが発生する。
【０１９０】
一方、図２５に示す比較器ＣＭＰ４は、ストア命令ＳＴとロード命令ＬＤの物理アドレスＰＡ［４０：１３］が一致しないため、アドレス一致信号ＳＦＢＰＡＭＣＨを論理０に設定する（図２８（ｈ））。このため、論理０のアドレス一致信号ＳＦＢＰＡＭＣＨにより、バイパス信号ＳＦＢは出力されない（図２８（ｉ））。
【０１９１】
エントリＷＥ０に対応する図２４に示す検出部ＳＦＩＤＥＴｄは、論理１の検出信号ＳＦＢＷＢ０に基づき検出信号ＷＢＳＦＩ０の出力をマスクする。このため、検出信号ＷＢＳＦＩ０は論理０に保持される（図２８（ｊ））。図２３に示すＳＦＩ判定回路２１１は、論理０の検出信号ＷＢＳＦＩ０に基づき、無効信号ＳＦＩを論理０に保持する（図２８（ｋ））。図１１に示す完了判定部１４６は、論理１のバイパス要求信号ＳＦＢＲＥＱと、論理０のアドレス一致信号ＳＦＢＰＡＭＣＨに基づき、アボート信号ＡＢＴを出力する（図２８（ｌ））。すなわち、偽のＳＦＢの発生により、ロード命令ＬＤは、アボートされる。
【０１９２】
アボート信号ＡＢＴを受けたフェッチポート１４２は、例えば、サイクルＴ２２にロード命令ＬＤをパイプライン制御部１４４に再び投入する（図２８（ｍ））。この時点で、ストア命令ＳＴのデータＤ１はデータキャッシュ２８に格納されている（図２８（ｎ））。ＳＦＩ判定回路２１１における図２４に示す検出部ＳＦＩＤＥＴｃ、ＳＦＩＤＥＴｄの各々において、一致信号ＶＡＭＣＨ、ＢＭＭＣＨの少なくともいずれかが不一致を示す（図２８（ｏ））。このため、ＳＦＩ判定回路２１１は、検出信号ＳＴＢＳＦＩ０−ＳＴＢＳＦＩ１９、ＷＢＳＦＩ０−ＷＢＳＦＩ７を出力せず、無効信号ＳＦＩは出力されない（図２８（ｐ）、（ｑ））。
【０１９３】
また、図２５に示すＳＦＢ判定回路２２１は、検出部ＳＦＢＤＥＴ２が検出信号ＳＦＢＷＢ０−ＳＦＢＷＢ７を出力しないため、バイパス要求信号ＳＦＢＲＥＱを出力しない（図２８（ｒ））。完了判定部１４６のアンド回路ＡＮＤ４は、ヒット信号ＨＩＴの論理１に基づき、論理０を出力する。このため、完了判定部１４６のオア回路ＯＲ４は、論理０を出力し、完了判定部１４６は、ロード命令ＬＤに対応して、アボート信号ＡＢＴを出力せず、完了信号ＳＴＶを出力する（図２８（ｓ））。そして、データキャッシュ２８から読み出されたデータが演算部１２に転送され、ロード命令ＬＤが完了する。
【０１９４】
図２９は、図２３に示すＳＦＩ判定回路２１１および図２５に示すＳＦＢ判定回路２２１を有する演算処理装置が実行するＳＦＩの判定動作のフローの例を示す。図２１と同一または同様の処理については、詳細な説明は省略する。図２９のフローは、フェッチポート１４２がロード命令ＬＤをパイプライン制御部１４４に投入することで開始される。
【０１９５】
図２９の処理は、図２１の動作ＯＰ１４、ＯＰ１６が存在しないことを除き、図２１と同様である。すなわち、図２９のＳＦＩの判定は、データキャッシュ２８がヒットしたか否かの情報を用いない。この場合、物理アドレスＰＡ［４０：１３］が一致しない場合にもＳＦＩの発生が検出されるため、図２７に示されるように、偽のＳＦＩが発生する。
【０１９６】
図３０は、図２３に示すＳＦＩ判定回路２１１および図２５に示すＳＦＢ判定回路２２１を有する演算処理装置が実行するＳＦＢの判定動作のフローの例を示す。図２２と同一または同様の処理については、詳細な説明は省略する。図３０の動作ＯＰ３０−ＯＰ４４は、図２２の動作ＯＰ３０−ＯＰ４４と同様である。図３０のフローは、フェッチポート１４２が命令ユニット１０からのリクエストＲＥＱに基づき最初のロード命令ＬＤをパイプライン制御部１４４に投入することで開始される。
【０１９７】
図３０の処理では、後続のロード命令ＬＤが投入された場合、まず、ＳＦＢの判定が実行される。このため、例えば、図２４に示すＳＦＢ判定回路２２１がＳＦＢの発生の可能性を検出してバイパス要求信号ＳＦＢＲＥＱを出力した後に、物理アドレスＰＡ［４０：１３］が不一致となる場合がある。この場合、図１１に示す完了判定部１４６は、アボート信号ＡＢＴを出力し、図２８に示されるように、偽のＳＦＢが発生する。
【０１９８】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。すなわち、アドレスの上位側のビットを比較する比較器を設けることなく、データキャッシュ２８のヒット情報ＨＩＴおよび識別情報ＷＡＹＩＤを用いて、ＳＦＩ判定回路２１０によりアドレスの上位側のビットの一致を判定することができる。これにより、回路規模を増加させることなく、ＳＦＩの判定をアドレスの上位側のビットを含めて判定することができ、偽のＳＦＩが発生することを抑止することができる。この結果、データキャッシュ２８のアクセス効率が低下することを抑止することができ、演算処理装置ＯＰＤ２の性能の低下および性能のばらつきを抑止することができる。
【０１９９】
さらに、図２から図３０に示す実施形態では、ＳＦＢ判定回路２２０は、ストア命令ＳＴに後続する最初のロード命令ＬＤにおいて、検出部ＳＦＢＤＥＴによるＳＦＢの判定をマスクする。これにより、偽のＳＦＢの発生を抑止することができる。この結果、データキャッシュ２８のアクセス効率が低下することを抑止することができ、演算処理装置ＯＰＤ２の性能の低下および性能のばらつきを抑止することができる。
【０２００】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０２０１】
１０…命令ユニット；１２…演算部；１４…命令制御部；１６…ＴＬＢ制御部；１８…キャッシュ制御部；２０…バッファ制御部；２２…ストアバッファ；２４…ライトバッファ；２６…セレクタ部；２８…データキャッシュ；３０…キャッシュ；３２…命令キャッシュ；５０…主記憶装置；６０…補助記憶装置；１０２…命令発行部；１０４…演算部；１０６…タグ部；１０８…キャッシュ制御部；１１０…キャッシュメモリ部；１１２…ストア情報記憶部；１１４…判定部；１１６…バッファ部；１４２…フェッチポート；１４４…パイプライン制御部；１４６…完了判定部；３００…主記憶装置；ＡＢＴ…アボート信号；ＢＭ…バイトマスク情報；ＣＭＰ４…比較器；ＨＩＴ…ヒット情報；ＬＤ…ロード命令；ＭＬＴＤＥＴ…重複検出部；ＯＰ…演算命令；ＯＰＤ１、ＯＰＤ２…演算処理装置；ＰＡ…物理アドレス；ＲＥＧ…レジスタ部；ＳＥ…エントリ；ＳＦＢ…バイパス信号；ＳＦＢＣＮＴ…判定制御部；ＳＦＢＤＥＴ…検出部；ＳＦＢＥＮ…許可信号；ＳＦＢＥＮＣ…エンコーダ；ＳＦＢＭＬＴ…重複信号；ＳＦＢＰＡＭＣＨ…アドレス一致信号；ＳＦＢＲＥＱ…バイパス要求信号；ＳＦＩ…無効信号；ＳＦＩＤＥＴａ、ＳＦＩＤＥＴｂ…検出部；ＳＴ…ストア命令；ＳＴ２…ストア信号；ＳＴＢＴＢＬ…テーブル；ＳＴＢＶ…フラグ；ＴＡＧ…タグ領域；ＴＬＢＭＣＨ…一致信号；ＶＡ…論理アドレス；ＷＡＹ…ウェイ；ＷＡＹＩＤ…ウェイ情報；ＷＡＹＩＤＶ…フラグ；ＷＢＧＯ…転送信号；ＷＢＩＤ…識別情報；ＷＢＴＢＬ…テーブル；ＷＥ…エントリ；ＷＩＤ…アボート要因
【図１】
2015210577.tif 000003
【図２】
2015210577.tif 000004
【図３】
2015210577.tif 000005
【図４】
2015210577.tif 000006
【図５】
2015210577.tif 000007
【図６】
2015210577.tif 000008
【図７】
2015210577.tif 000009
【図８】
2015210577.tif 000010
【図９】
2015210577.tif 000011
【図１０】
2015210577.tif 000012
【図１１】
2015210577.tif 000013
【図１２】
2015210577.tif 000014
【図１３】
2015210577.tif 000015
【図１４】
2015210577.tif 000016
【図１５】
2015210577.tif 000017
【図１６】
2015210577.tif 000018
【図１７】
2015210577.tif 000019
【図１８】
2015210577.tif 000020
【図１９】
2015210577.tif 000021
【図２０】
2015210577.tif 000022
【図２１】
2015210577.tif 000023
【図２２】
2015210577.tif 000024
【図２３】
2015210577.tif 000025
【図２４】
2015210577.tif 000026
【図２５】
2015210577.tif 000027
【図２６】
2015210577.tif 000028
【図２７】
2015210577.tif 000029
【図２８】
2015210577.tif 000030
【図２９】
2015210577.tif 000031
【図３０】
2015210577.tif 000032