(57)【特許請求の範囲】
【請求項１】
ＣＰＵから要求されたデータがキャッシュ内に記憶されているか否かが判明する前に出力されるメモリフェッチ要求である投機フェッチを出力する投機フェッチ出力部と、
投機フェッチに関する情報と、該投機フェッチのステータスを保持するテーブルと、
前記キャッシュに記憶されているデータに関する情報の一覧であるタグ情報からキャッシュヒット可能な情報があるか否かを検索するタグ情報検索部と、
前記タグ情報検索部の検索がなされた時点で、該検索の結果がキャッシュミスである場合に前記テーブル内の投機フェッチのステータスを所定のステータスに更新するステータス更新部と、
前記投機フェッチ出力部から出力された投機フェッチによって得られるデータを取得した場合、該投機フェッチが出力されてからメモリと該メモリの外部とのデータ通信を制御するメモリ制御部に到達するまでの時間と、前記投機フェッチの出力前に出された命令であって前記投機フェッチと同一アドレスへのデータ書き込みの命令によるメモリの書き込みが完了してから前記データ書込みの命令の応答があるまでの時間とを合算した時間のうちに、前記ステータス更新部によって前記テーブルに保持された前記投機フェッチのステータスが前記所定のステータスに更新されたかを判定するステータス更新判定部と、
前記ステータス更新判定部の判定結果に基づき、前記投機フェッチ出力部にて出力された投機フェッチによって得られるデータを採用するか否かを判定するデータ採用判定部と、
を備えるキャッシュ制御装置。
【請求項２】
請求項１に記載のキャッシュ制御装置において、
前記投機フェッチ出力部は、前記タグ情報検索部が前記タグ情報の検索処理を開始するタイミングで、投機フェッチを出力することを特徴とするキャッシュ制御装置。
【請求項３】
請求項１に記載のキャッシュ制御装置において、
前記データ採用判定部は、前記ステータス更新判定部によって前記所定のステータスに更新されたと判定された場合、前記投機フェッチ出力部にて出力された投機フェッチによって得られるデータを採用し、前記ステータス更新判定部によって前記所定のステータスに更新されていないと判定された場合、前記投機フェッチによって得られるデータを破棄することを特徴とするキャッシュ制御装置。
【請求項４】
請求項１に記載のキャッシュ制御装置において、さらに、
前記データ書き込みの命令が実行中である場合、該命令によるデータ書き込み先のメモリのアドレスを保持することで、該アドレスに対するアクセスをロックするアドレスロック部を備え、
前記投機フェッチ出力部は、さらに、前記アドレスロック部によって保持されたアドレスの数が所定数以上ある場合、投機フェッチを出力しないことを特徴とするキャッシュ制御装置。
【請求項５】
請求項１に記載のキャッシュ制御装置において、
さらに、前記タグ情報を保持するタグ情報保持部を備え、
前記タグ情報検索部は、前記タグ情報保持部にて保持されたタグ情報から検索することを特徴とするキャッシュ制御装置。
【請求項６】
請求項１に記載のキャッシュ制御装置において、
前記データ採用判定部は、さらに、前記タグ情報検索部による検索処理が失敗し前記タグ情報検索部が再度検索処理を実行した場合、前記投機フェッチ出力部にて出力された投機フェッチによって得られるデータを採用しないと判定することを特徴とするキャッシュ制御装置。
【請求項７】
キャッシュを備えた少なくとも一つのＣＰＵと、
データを記憶するメモリと、
前記メモリと該メモリの外部とのデータ通信を制御するメモリ制御部と、
前記ＣＰＵから要求されたデータが前記キャッシュ内に記憶されているか否かが判明する前に前記メモリ制御部を介して前記メモリに出力されるメモリフェッチ要求である投機フェッチを出力する投機フェッチ出力部と、
投機フェッチに関する情報と、該投機フェッチのステータスを保持するテーブルと、
前記キャッシュに記憶されているデータに関する情報の一覧であるタグ情報からキャッシュヒット可能な情報があるか否かを検索するタグ情報検索部と、
前記タグ情報検索部の検索がなされた時点で、該検索の結果がキャッシュミスである場合に前記テーブル内のステータスを所定のステータスに更新するステータス更新部と、
前記投機フェッチ出力部から出力された投機フェッチによって得られるデータを取得した場合、該投機フェッチが出力されてから前記メモリ制御部に到達するまでの時間と、前記投機フェッチの出力前に出された命令であって前記投機フェッチと同一アドレスへのデータ書き込みの命令による前記メモリの書き込みが完了してから前記データ書込みの命令の応答があるまでの時間とを合算した時間のうちに、前記ステータス更新部によって前記テーブルに保持された前記投機フェッチのステータスが前記所定のステータスに更新されたかを判定するステータス更新判定部と、
前記ステータス更新判定部の判定結果に基づき、前記投機フェッチ出力部にて出力された投機フェッチによって得られるデータを採用するか否かを判定するデータ採用判定部と、
を備える情報処理装置。
【請求項８】
請求項７に記載の情報処理装置において、
前記投機フェッチ出力部は、前記タグ情報検索部が前記タグ情報の検索処理を開始するタイミングで、投機フェッチを出力することを特徴とするキャッシュ制御装置。
【請求項９】
請求項７に記載の情報処理装置において、
前記データ採用判定部は、前記ステータス更新判定部によって前記所定のステータスに更新されたと判定された場合、前記投機フェッチ出力部にて出力された投機フェッチによって得られるデータを採用し、前記ステータス更新判定部によって前記所定のステータスに更新されていないと判定された場合、前記投機フェッチによって得られるデータを破棄することを特徴とする情報処理装置。
【請求項１０】
請求項７に記載の情報処理装置において、さらに、
前記データ書き込みの命令が実行中である場合、該命令によるデータ書き込み先のメモリのアドレスを保持することで、該アドレスに対するアクセスをロックするアドレスロック部を備え、
前記投機フェッチ出力部は、さらに、前記アドレスロック部によって保持されたアドレスの数が所定数以上ある場合、投機フェッチを出力しないことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
ＣＰＵとメモリとの間のデータ送信を制御するキャッシュ制御装置、キャッシュ制御装置を備えた情報処理装置に関する。
【背景技術】
【０００２】
近年、ＬＳＩの動作周波数は目覚しい向上を続けており、ＬＳＩ内の処理時間に比べメモリへのアクセス時間が相対的に大きくなっている。
【０００３】
これを改善する解決策の一つとして、メモリフェッチ要求をＣＰＵやＩ／Ｏ制御装置から受け取ったシステム制御装置（以下、ＳＣ）（キャッシュ制御装置）が、要求されたデータがＣＰＵのキャッシュ内に記憶されているか否かが判明する前にメモリ制御装置(以下、ＭＡＣ)にメモリフェッチを要求する、投機フェッチが行われている。
【０００４】
すなわちＳＣは、その内部にＣＰＵのキャッシュに記憶されているデータのアドレス、更新状態などのタグ情報を全てのＣＰＵについて保持し、タグ情報を検索（スヌープ処理）することで、メモリフェッチ要求に対して要求されたデータがＣＰＵのキャッシュにあるか否かが判明する前の段階で、投機的にメモリアクセスを行う。この投機フェッチによってメモリアクセスを早く開始することができ、キャッシュにデータがない場合にメモリアクセスの待ち時間(レイテンシ)を改善することができる。
【０００５】
従来からメモリアクセスのレイテンシの改善方法として、システム内に設けられたキャッシュメモリのデータ格納状態に関する情報であるタグ情報をタグメモリから読み出すのと並行して、システム内のメモリを投機アクセスし、読み出したタグ情報に基づいて、投機アクセスによりメモリから獲得されたデータを破棄するか否かを決定する方法が開示されている。また、投機フェッチの応答データを使用するか否かはＣＰＵのキャッシュの検索結果によって決定されるため、投機フェッチの応答データをシステム内のどこかに保持し、キャッシュの検索結果との待ち合わせを行う機構が開示されている。さらに、非投機的トラフィックによる輻輳および衝突を低減するように投機的要求を処理する方法が開示されている。
【０００６】
【特許文献１】特開２００１−１６７０７７号公報
【特許文献２】特開２００３−１８６６６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来の投機フェッチ方法をパケット長の長いＳＴＲ（Ｓｔｏｒｅ：メモリへのデータ書き込み命令）等の命令よりも、パケット長の短いフェッチ命令を優先するようなメモリ制御装置を搭載したシステムに適用すると、同一アドレスに対するフェッチリクエストとＳＴＲリクエストが競合（同一アドレスへのアクセス要求）した場合、リクエストの順序性を保てなくなってしまう。
【０００８】
ここで、ＳＴＲ命令が出された後の投機フェッチの送出されるタイミングを示す図を図５に示し、リクエストの順序性についてさらに説明する。尚、投機フェッチの成功例を図５（ａ）に、フェッチの失敗例を図５（ｂ）に示す。また図５（ａ）、図５（ｂ）ともに、時間を横軸成分としている。
【０００９】
ＳＴＲ命令がＣＰＵより発行された場合、ＳＣは、このＳＴＲ命令をＭＡＣに通達することでメモリ内のデータ更新がなされる（ＭＡＣにおけるＯＬＤＤＡＴＡからＮＥＷＤＡＴＡへの遷移）。
【００１０】
図５（ａ）の場合、投機フェッチが発行され、ＭＡＣに到達した時点で既にデータの更新がなされているため、その投機フェッチによって得られるデータを採用しても問題ない。
【００１１】
一方、図５（ｂ）における投機フェッチの場合は、本来ＮＥＷＤＡＴＡを読み出さなければならないところ、ＳＴＲ前の更新前のデータ（ＯＬＤＤＡＴＡ）を読み出してしまうため、その投機フェッチによって得られるデータを採用すると問題が生じる。
【００１２】
また、上述の投機フェッチによって得られたデータをシステム内に保持する方法では、ＳＣ内のバッファに一時ためておいてスヌープ結果を待ってその判定をする必要がある。よってバッファ量を増大させる必要があるが、ＬＳＩの面積、消費電力も増大することになり好ましくない。
【００１３】
また、投機フェッチが失敗するとその分バスのスループットを落としてしまうことになるので、できるだけ投機フェッチの失敗数を少なくする必要がある。
【００１４】
上述した問題点を解決するため、所定の監視時間を設け、投機フェッチのステータスを保持することで、リクエストの順序性を保証するキャッシュ制御装置、情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
キャッシュ制御装置は、ＣＰＵから要求されたデータがキャッシュ内に記憶されているか否かが判明する前に出力されるメモリフェッチ要求である投機フェッチを出力する投機フェッチ出力部と、投機フェッチに関する情報と、該投機フェッチのステータスを保持するテーブルと、前記キャッシュに記憶されているデータに関する情報の一覧であるタグ情報からキャッシュヒット可能な情報があるか否かを検索するタグ情報検索部と、前記タグ情報検索部の検索がなされた時点で、該検索の結果がキャッシュミスである場合に前記テーブル内の投機フェッチのステータスを所定のステータスに更新するステータス更新部と、前記投機フェッチ出力部から出力された投機フェッチによって得られるデータを取得した場合、該投機フェッチが出力されてからメモリと該メモリの外部とのデータ通信を制御するメモリ制御部に到達するまでの時間と、前記投機フェッチの出力前に出された命令であって前記投機フェッチと同一アドレスへのデータ書き込みの命令によるメモリの書き込みが完了してから前記データ書込みの命令の応答があるまでの時間とを合算した時間のうちに、前記ステータス更新部によって前記テーブルに保持された前記投機フェッチのステータスが前記所定のステータスに更新されたかを判定するステータス更新判定部と、前記ステータス更新判定部の判定結果に基づき、前記投機フェッチ出力部にて出力された投機フェッチによって得られるデータを採用するか否かを判定するデータ採用判定部と、を備える。
【００１６】
また、情報処理装置は、少なくとも一つのＣＰＵと、データを記憶するメモリと、前記メモリと該メモリの外部とのデータ通信を制御するメモリ制御部と、前記ＣＰＵから要求されたデータがキャッシュ内に記憶されているか否かが判明する前に前記メモリ制御部を介して前記メモリに出力されるメモリフェッチ要求である投機フェッチを出力する投機フェッチ出力部と、投機フェッチに関する情報と、該投機フェッチのステータスを保持するテーブルと、前記キャッシュに記憶されているデータに関する情報の一覧であるタグ情報からキャッシュヒット可能な情報があるか否かを検索するタグ情報検索部と、前記タグ情報検索部の検索がなされた時点で、該検索の結果がキャッシュミスである場合に前記テーブル内のステータスを所定のステータスに更新するステータス更新部と、前記投機フェッチ出力部から出力された投機フェッチによって得られるデータを取得した場合、該投機フェッチが出力されてから前記メモリ制御部に到達するまでの時間と、前記投機フェッチの出力前に出された命令であって前記投機フェッチと同一アドレスへのデータ書き込みの命令による前記メモリの書き込みが完了してから前記データ書込みの命令の応答があるまでの時間とを合算した時間のうちに、前記ステータス更新部によって前記テーブルに保持された前記投機フェッチのステータスが前記所定のステータスに更新されたかを判定するステータス更新判定部と、前記ステータス更新判定部の判定結果に基づき、前記投機フェッチ出力部にて出力された投機フェッチによって得られるデータを採用するか否かを判定するデータ採用判定部と、を備える。
【発明の効果】
【００１７】
投機フェッチを行うことによりメモリフェッチのレイテンシを短縮することができるとともに、同一アドレスに対する投機フェッチと書き込み命令との順序を保障することができる。
【発明を実施するための最良の形態】
【００１８】
本実施の形態における情報処理装置を図１に示す。
【００１９】
情報処理装置１００は、メモリの内容のコピーである2nd-cache(ＳＸ５)を含んだ演算装置であるＣＰＵ（Central Processing Unit）４、データを記憶する記憶媒体（メモリ）であるＤＩＭＭ（Dual Inline Memory Module）３と、ＤＩＭＭ３とＤＩＭＭ３の外部とのデータ通信を制御するＬＳＩであるＭＡＣ２（メモリ制御部）とを備え、さらに、ＣＰＵ４から要求されたデータがキャッシュ内に記憶されているか否かを判定制御する制御装置であるＳＣ１（キャッシュ制御装置）を備える。尚、情報処理装置１００は、ＣＰＵ４以外にも複数のＣＰＵを備え、ＳＣ１はこれらのＣＰＵに対しても同様の判定制御を行う。
【００２０】
次に、ＳＣ１について説明する。ＳＣ１は、投機フェッチ出力部１１、タグ情報検索部１２、タグ情報保持部１３、ステータス更新部１４、管理テーブル１５、ステータス更新判定部１６、データ採用判定部１７、アドレスロック部１８
を備える。
【００２１】
投機フェッチ出力部１１は、投機フェッチを出力する。尚、投機フェッチとは、上述どおりＣＰＵ４から要求されたデータがキャッシュ内に記憶されているか否かが判明する前に、ＭＡＣ２を介してＤＩＭＭ３に出力される投機的なメモリフェッチ要求をいう。
【００２２】
タグ情報保持部１３は、ＳＸ５に保持されたデータのタグのコピーであるタグ情報、つまりキャッシュに記憶されているデータに関する情報の一覧を保持している。
【００２３】
タグ情報検索部１２は、タグ情報保持部１３にて保持されたタグ情報からキャッシュヒット可能な情報があるか否かを検索（スヌープ処理）する。また、投機フェッチ出力部１１は、タグ情報検索部１２がタグ情報の検索処理を開始するタイミングで、投機フェッチを出力するものとする。なお、投機フェッチが出力されるタイミングは、投機フェッチ出力部１１、タグ情報検索部１２の処理上必然的に生ずる遅延差を考慮しなければ同じタイミングとなるようなタイミングをいう。
【００２４】
管理テーブル１５は、投機フェッチに関する情報である、投機フェッチに付与されたリクエストＩＤと、投機フェッチのステータスを保持する。なお、ステータスに関しては後述する。
【００２５】
ステータス更新部１４は、タグ情報検索部１２による検索がなされた時点で、検索の結果がキャッシュミスである場合に管理テーブル１５内のステータスを所定のステータスであるＡｃｃｅｐｔに更新する、また、ステータス更新部１４は、Ａｃｃｅｐｔ以外でも必要に応じ管理テーブル１５内のステータスを更新する。
【００２６】
ステータス更新判定部１６は、投機フェッチ出力部１１から出力された投機フェッチによって得られるデータを取得した場合、所定の監視時間のうちにステータス更新部１４によって管理テーブル１５に保持されたリクエストＩＤのステータスが更新されたかを判定する。またステータス更新判定部１６は、判定に際し、少なくともＡｃｃｅｐｔに更新されたかを判定する。
【００２７】
データ採用判定部１７は、ステータス更新判定部１６の判定結果に基づき、投機フェッチ出力部１１にて出力された投機フェッチによって得られるデータを採用するか否かを判定する。すなわち、データ採用判定部１７は、ステータス更新判定部１６によってステータスがＡｃｃｅｐｔに更新されたと判定された場合、投機フェッチ出力部１１によって出力された投機フェッチによって得られるデータを採用し、ステータス更新判定部１６によってＡｃｃｅｐｔに更新されていないと判定された場合、投機フェッチによって得られるデータを破棄する。
【００２８】
アドレスロック部１８は、ＳＴＲ命令（ＳＴＲ：Ｓｔｏｒｅ。データ書き込みの命令）が実行中である場合、ＳＴＲ命令によるデータ書き込み先のメモリのアドレスを保持することで、そのアドレスに対するアクセスをロックするアドレスロックレジスタである。尚、投機フェッチ出力部１１は、アドレスロック部１８によって保持されたアドレスの数が所定数ある場合、投機フェッチを出力しないものとする。
【００２９】
上述のＳＣ１内の各ユニットは、ＳＣ１内に備えられた各ＬＳＩによって実装されるものとするが、マイコン等の演算処理装置および記憶媒体等のハードウェア資源、およびハードウェア資源とファームウェア等のソフトウェア資源とが協働することで実現されるものとしてもよい。この場合、各ユニットは、ハードウェア資源として例えばＣＰＵ４、ＤＩＭＭ３等外部のハードウェア資源を流用してもよい。
【００３０】
本実施の形態におけるＳＣ１の処理の概要を説明すると、以下の手順にて行われる。
【００３１】
処理１：あるＣＰＵ（本実施の形態ではＣＰＵ４）からのメモリフェッチ命令をＳＣ１が受け取る。
処理２：タグ情報検索部１２がスヌープ処理を行うのと並行して、投機フェッチ出力部１１がＭＡＣ２へ投機フェッチを発行する。
処理３：投機フェッチの応答データをＳＣ１内にためずに、採用、破棄が判断され、採用されるべきデータであれば、ＳＣ１はそのデータをＣＰＵへ送り返す。尚、処理３はステータス更新部１４、管理テーブル１５、ステータス更新判定部１６、データ採用判定部１７にて行われる。
【００３２】
ここで、投機フェッチのステータスの内容および管理テーブル１５に保持されている情報を図２を参照しつつ説明する。
【００３３】
投機フェッチは、図２（ａ）に示すように、「Ｉ」（Ｉｎｖａｌｉｄ）、「Ｕ」（Ｕｎｄｅｆｉｎｅｄ）、「Ｃ」（Ｃａｎｃｅｌ）、「Ａ」（Ａｃｃｅｐｔ）の４つのステータスを有する。
【００３４】
Ｉは、投機フェッチ出力部１１が投機フェッチを出力していない状態またはデフォルトの初期状態を示す。Ｕは、投機フェッチを出力した状態であるが、投機フェッチによって得られるデータを採用するか破棄するかが決まっていない状態を示す。Ｃは、投機フェッチが出力され、その後投機フェッチによって得られるデータを破棄するものとする状態を示す。Ａは、投機フェッチが出力され、その後キャッシュミス、つまりキャッシュ内にデータが無い状態が生じたため投機フェッチによるデータを採用するものとする状態を示す。尚Ｃは、処理上必ずしも必要ではない。
【００３５】
図２（ｂ）に、管理テーブル１５に保持されている情報の一例を示す。管理テーブル１５は、投機フェッチに付与されたリクエストＩＤと上述の各ステータスとの対応を保持する。尚、リクエストＩＤはＳＣ１にフェッチ要求が到達するごとに、ＳＣ１内で管理するために割り当てられる。管理テーブル１５は、図２（ｂ）に示すようにフェッチリクエストをＣＰＵから受け付けた数分、例えば４つのリクエストＩＤとステータスとの対応を持つものとする。
【００３６】
ステータス更新部１４は、投機フェッチ出力部１１が投機フェッチを出力した場合にＩからＵにステータスを更新し、タグ情報検索部１２の検索結果がキャッシュミスである場合にＡにステータスを更新する。またステータス更新部１４は、タグ情報検索部１２の検索結果がキャッシュヒットである場合にステータスをＣに更新する。またステータス更新判定部１６は、投機フェッチの応答がＭＡＣ２から帰ってきたときに管理テーブル１５を参照し、その投機フェッチに対するステータスが後述に詳説する監視時間内にＡであるかを判定する。データ採用判定部１７は、判定結果がＡであった場合のみその投機フェッチによるパケット（データ）を採用し、それ以外の状態であればそのパケットを破棄する。
【００３７】
次にステータス更新判定部１６のもう一つの判定要素である監視時間について説明する。
【００３８】
上述の図５（ｂ）のように、投機フェッチが先行する同一アドレスへのＳＴＲ命令の処理を追い越してしまった場合、その投機フェッチによって得られるデータは、更新される前の古いデータであるため破棄しなければならない。本実施の形態では、この投機フェッチの追い越しがあったか否かを監視時間を設けることによって実現する。
【００３９】
図３に、監視時間を説明するための図を示す。投機フェッチによって得られるデータを採用する場合は、ＳＣ１からの投機フェッチがＭＡＣ２に到達した時点で、事前のＳＴＲ命令によってデータが更新されていればよい。
【００４０】
この投機フェッチ（ＦＣＨ）が発行されてからＭＡＣ２のパイプラインに到達するまでの時間、つまり投機フェッチが発行されてからメモリ制御部に到達するまでの時間をＡτ、ＤＩＭＭ３のデータが更新されＳＴＲ命令が完了し、その応答がＳＣ１まで到達するまでの時間、つまり投機フェッチの出力前に出された、その投機フェッチと同一アドレスへのＳＴＲ命令によるＤＩＭＭ３への書き込みが完了してから、ＳＴＲ命令の応答があるまでの時間をＢτとする。また、図３においてＯＬＤ−ＤＡＴＡは更新前のデータを、ＮＥＷ−ＤＡＴＡは更新後のデータを示す。少なくとも投機フェッチ出力部１１から投機フェッチが出力された時点から、Ａτ＋Ｂτの間の時間のうちに、メモリフェッチが確定すれば、先行する同一アドレスへのＳＴＲ命令があったとしても、投機フェッチは必ずＳＴＲ後のＮＥＷ−ＤＡＴＡを読み出してくるので矛盾は発生しない。よって、ステータス更新判定部１６は、この投機フェッチが出力されてからＡτ＋Ｂτの時間を監視時間として、この監視時間のうちに管理テーブル１５のステータスがＡｃｃｅｐｔであるか否かを判定する。
【００４１】
尚、本実施の形態では、監視時間を５４τとするが、数値を限定するものではない。
【００４２】
次に、上述の監視時間、管理テーブル１５のステータス遷移、パケットの採用、破棄を合わせて図４を参照しつつ詳細に説明する。
【００４３】
まず、図４（ａ）に投機フェッチの成功例を示す。投機フェッチ出力部１１が投機フェッチを出力するとともに、タグ情報検索部１２がタグ情報を検索する。投機フェッチ出力部１１が投機フェッチを出力する際、ステータス更新部１４は管理テーブル１５内の当該投機フェッチのステータスをＩからＵに更新する。
【００４４】
Ｕに遷移した時点から時間監視が始まり、監視時間内にタグ情報検索部１２による検索結果がキャッシュミスと確定した場合、管理テーブル１５内の当該投機フェッチに対するステータスはステータス更新部１４によってＵからＡに更新される。
【００４５】
ステータス更新判定部１６は、投機フェッチによって得られるデータを取得したときに、管理テーブル１５内のステータスが監視時間内にＡに更新されたと判定する。ステータス更新判定部１６によってＡに更新されたと判定されたため、データ採用判定部１７は、投機フェッチによって得られるデータを採用すると判定する。
【００４６】
尚、キャッシュミスであることから、ＣＰＵ４から要求されたデータはキャッシュ（ＳＸ５）内に保持されていないため、投機フェッチによって得られるデータが採用されることとなる。よって、キャッシュミスであると確定した後に発行されるメモリフェッチ（以下、通常フェッチと記す）は発行されない。
【００４７】
また、投機フェッチによって得られたデータがＣＰＵ４に返される段階で管理テーブル内のステータスはＡからデフォルトのステータスであるＩに更新される。
【００４８】
このように、本実施の形態によるＳＣ１により、投機フェッチで得られたデータは管理テーブル内の当該投機フェッチのステータスが監視時間内にＡになったときのみＣＰＵ４に返される。
【００４９】
次に、投機フェッチによって得られたデータがＣＰＵ４に返されない例を図５（ｂ）から図５（ｄ）に示す。
【００５０】
図５（ｂ）は監視時間内にキャッシュヒットが確定した場合である。タグ情報検索部１２による検索結果がキャッシュヒットである場合、ステータス更新部１４は管理テーブルの当該投機フェッチのステータスをＵからＣに更新する。キャッシュヒットであるため、従来同様キャッシュ（ＳＸ５）内に保持されているデータがそのまま採用される。
【００５１】
この場合、ステータス更新判定部１６は、監視時間内にステータスがＡに更新されていないと判定し、投機フェッチによって得られるデータは不要であるため、データ採用判定部１７によって破棄される。
【００５２】
図５（ｃ）は監視時間外にキャッシュミスが確定した場合である。この場合、管理テーブル１５の当該投機フェッチのステータスは監視時間内ではＵのままで、投機フェッチによって得られたデータは上述のように同一アドレスのＳＴＲ命令を追い越した可能性がある。よって、このように監視時間外にキャッシュミスが確定した場合、ステータス更新判定部１６は監視時間内にＡに更新されていないと判定し、データ採用判定部１７は、投機フェッチによって得られるデータを破棄する。
【００５３】
図５（ｃ）にて示した監視時間外にキャッシュミスが確定した場合においては、キャッシュミスが確定した時点で通常フェッチが発行され、この通常フェッチによって得られたデータが採用される。
【００５４】
図５（ｄ）は監視時間内にタグ情報検索部１２による検索処理（スヌープ処理）のリトライ（ＳＮＰ−ＲＴＲＹ）が確定した場合である。この場合、検索処理がリトライするためその分検索に時間を要し、監視時間内に検索結果が得られない蓋然性が高い。よって、本実施の形態におけるＳＣ１は、かかる検索処理のリトライが生じた場合は投機フェッチによって得られるデータは一律破棄するものとする。ステータス更新部１４は、リトライが生じた時点で管理テーブル１５のステータスをＵからＣに更新する。
【００５５】
ステータス更新判定部１６は、投機フェッチによって得られるデータを取得したときに、監視時間内にステータスがＡに更新されていないと判定し、投機フェッチによって得られるデータはデータ採用判定部１７によって破棄される。その後キャッシュミスが確定すれば通常フェッチが発行され、通常フェッチによって得られるデータが採用される。
【００５６】
このように、いかなる場合も管理テーブル１５によるステータス管理と時間監視とによって、同一アドレスに対するリクエストの順序保障が実現できる。
【００５７】
上述したように、投機フェッチの成否をステータスと時間監視とによって決定しているため、タグ情報検索部１２による検索処理に時間のかかるような投機フェッチは、監視時間内に収まる可能性が低い。スヌープ処理に時間がかかるということはアドレスロックレジスタ（アドレスロック部１８）の空きがないことを意味する。アドレスロックレジスタとは、そのアドレスがＳＴＲなどの命令を実行中であればそのアドレスにロックをかける機能を持っている。アドレスロックレジスタによってロックのかかっているアドレスに対しては同じアドレスに対する命令は実行されず、スヌープリトライとなる。
【００５８】
尚、アドレスロックレジスタの数には上限、本実施の形態では３２があり、一定以上の個数の命令はＳＣ１からは発行されない。よって、投機フェッチを出力する際にアドレスロックレジスタの使用数を監視して、アドレスロックレジスタの使用数がある閾値以上であれば投機フェッチ出力部１１は投機フェッチを出力しないものとする。このようにすることで、無駄な投機フェッチを抑え、バスのスループットの確保を保つことができる。
【００５９】
本実施の形態のＳＣ１は、投機フェッチと、当該投機フェッチと同一アドレスに対するＳＴＲ命令との順序保証を省資源で実現することができる。また、本実施の形態のＳＣ１はメモリフェッチレイテンシを短縮することができる。また、アドレスロックレジスタの使用数を監視することにより、投機フェッチの成功率を上げることができる。
【００６０】
（付記１）  ＣＰＵから要求されたデータがキャッシュ内に記憶されているか否かが判明する前に出力されるメモリフェッチ要求である投機フェッチを出力する投機フェッチ出力部と、投機フェッチに関する情報と、該投機フェッチのステータスを保持するテーブルと、
前記キャッシュに記憶されているデータに関する情報の一覧であるタグ情報からキャッシュヒット可能な情報があるか否かを検索するタグ情報検索部と、
前記タグ情報検索部の検索がなされた時点で、該検索の結果がキャッシュミスである場合に前記テーブル内の投機フェッチのステータスを所定のステータスに更新するステータス更新部と、
前記投機フェッチ出力部から出力された投機フェッチによって得られるデータを取得した場合、該投機フェッチが出力されてからメモリと該メモリの外部とのデータ通信を制御するメモリ制御部に到達するまでの時間と、前記投機フェッチの出力前に出された命令であって前記投機フェッチと同一アドレスへのデータ書き込みの命令によるメモリの書き込みが完了してから前記データ書込みの命令の応答があるまでの時間とを合算した時間のうちに、前記ステータス更新部によって前記テーブルに保持された前記投機フェッチのステータスが前記所定のステータスに更新されたかを判定するステータス更新判定部と、
前記ステータス更新判定部の判定結果に基づき、前記投機フェッチ出力部にて出力された投機フェッチによって得られるデータを採用するか否かを判定するデータ採用判定部と、
を備えるキャッシュ制御装置。
（付記２）  付記１に記載のキャッシュ制御装置において、
前記投機フェッチ出力部は、前記タグ情報検索部が前記タグ情報の検索処理を開始するタイミングで、投機フェッチを出力することを特徴とするキャッシュ制御装置。
（付記３）  付記１に記載のキャッシュ制御装置において、
前記データ採用判定部は、前記ステータス更新判定部によって前記所定のステータスに更新されたと判定された場合、前記投機フェッチ出力部にて出力された投機フェッチによって得られるデータを採用し、前記ステータス更新判定部によって前記所定のステータスに更新されていないと判定された場合、前記投機フェッチによって得られるデータを破棄することを特徴とするキャッシュ制御装置。
（付記４）  付記１に記載のキャッシュ制御装置において、さらに、
前記データ書き込みの命令が実行中である場合、該命令によるデータ書き込み先のメモリのアドレスを保持することで、該アドレスに対するアクセスをロックするアドレスロック部を備え、
前記投機フェッチ出力部は、さらに、前記アドレスロック部によって保持されたアドレスの数が所定数以上ある場合、投機フェッチを出力しないことを特徴とするキャッシュ制御装置。
（付記５）  付記１に記載のキャッシュ制御装置において、
さらに、前記タグ情報を保持するタグ情報保持部を備え、
前記タグ情報検索部は、前記タグ情報保持部にて保持されたタグ情報から検索することを特徴とするキャッシュ制御装置。
（付記６）  付記１に記載のキャッシュ制御装置において、
前記データ採用判定部は、さらに、前記タグ情報検索部による検索処理が失敗し前記タグ情報検索部が再度検索処理を実行した場合、前記投機フェッチ出力部にて出力された投機フェッチによって得られるデータを採用しないと判定することを特徴とするキャッシュ制御装置。
（付記７）  キャッシュを備えた少なくとも一つのＣＰＵと、
データを記憶するメモリと、
前記メモリと該メモリの外部とのデータ通信を制御するメモリ制御部と、
前記ＣＰＵから要求されたデータが前記キャッシュ内に記憶されているか否かが判明する前に前記メモリ制御部を介して前記メモリに出力されるメモリフェッチ要求である投機フェッチを出力する投機フェッチ出力部と、
投機フェッチに関する情報と、該投機フェッチのステータスを保持するテーブルと、
前記キャッシュに記憶されているデータに関する情報の一覧であるタグ情報からキャッシュヒット可能な情報があるか否かを検索するタグ情報検索部と、
前記タグ情報検索部の検索がなされた時点で、該検索の結果がキャッシュミスである場合に前記テーブル内のステータスを所定のステータスに更新するステータス更新部と、
前記投機フェッチ出力部から出力された投機フェッチによって得られるデータを取得した場合、該投機フェッチが出力されてから前記メモリ制御部に到達するまでの時間と、前記投機フェッチの出力前に出された命令であって前記投機フェッチと同一アドレスへのデータ書き込みの命令による前記メモリの書き込みが完了してから前記データ書込みの命令の応答があるまでの時間とを合算した時間のうちに、前記ステータス更新部によって前記テーブルに保持された前記投機フェッチのステータスが前記所定のステータスに更新されたかを判定するステータス更新判定部と、
前記ステータス更新判定部の判定結果に基づき、前記投機フェッチ出力部にて出力された投機フェッチによって得られるデータを採用するか否かを判定するデータ採用判定部と、
を備える情報処理装置。
（付記８）  付記７に記載の情報処理装置において、
前記投機フェッチ出力部は、前記タグ情報検索部が前記タグ情報の検索処理を開始するタイミングで、投機フェッチを出力することを特徴とするキャッシュ制御装置。
（付記９）  付記７に記載の情報処理装置において、
前記データ採用判定部は、前記ステータス更新判定部によって前記所定のステータスに更新されたと判定された場合、前記投機フェッチ出力部にて出力された投機フェッチによって得られるデータを採用し、前記ステータス更新判定部によって前記所定のステータスに更新されていないと判定された場合、前記投機フェッチによって得られるデータを破棄することを特徴とする情報処理装置。
（付記１０）  付記７に記載の情報処理装置において、さらに、
前記データ書き込みの命令が実行中である場合、該命令によるデータ書き込み先のメモリのアドレスを保持することで、該アドレスに対するアクセスをロックするアドレスロック部を備え、
前記投機フェッチ出力部は、さらに、前記アドレスロック部によって保持されたアドレスの数が所定数以上ある場合、投機フェッチを出力しないことを特徴とする情報処理装置。（１０）
（付記１１）  付記７に記載の情報処理装置において、
前記データ採用判定部は、さらに、前記タグ情報検索部による検索処理が失敗し前記タグ情報検索部が再度検索処理を実行した場合、前記投機フェッチ出力部にて出力された投機フェッチによって得られるデータを採用しないと判定することを特徴とする情報処理装置。
（付記１２）  ＣＰＵから要求されたデータがキャッシュ内に記憶されているか否かが判明する前に出力されるメモリフェッチ要求である投機フェッチを出力する投機フェッチ出力ステップと、
前記キャッシュに記憶されているデータに関する情報の一覧であるタグ情報からキャッシュヒット可能な情報があるか否かを検索するタグ情報検索ステップと、
前記タグ情報検索ステップの検索がなされた時点で、該検索の結果がキャッシュミスである場合に、投機フェッチに関する情報と、該投機フェッチのステータスを保持するテーブル内の前記ステータスを所定のステータスに更新するステータス更新ステップと、
前記投機フェッチ出力ステップにて出力された投機フェッチによって得られるデータを取得した場合、該投機フェッチが出力されてからメモリと該メモリの外部とのデータ通信を制御するメモリ制御部に到達するまでの時間と、前記投機フェッチの出力前に出された命令であって前記投機フェッチと同一アドレスへのデータ書き込みの命令によるメモリの書き込みが完了してから前記データ書込みの命令の応答があるまでの時間とを合算した時間のうちに、前記ステータス更新ステップによって前記テーブルに保持された前記投機フェッチのステータスが前記所定のステータスに更新されたかを判定するステータス更新判定ステップと、
前記ステータス更新判定ステップの判定結果に基づき、前記投機フェッチ出力ステップにて出力された投機フェッチによって得られるデータを採用するか否かを判定するデータ採用判定ステップと、
を備えるキャッシュ制御方法。
（付記１３）  付記１２に記載のキャッシュ制御方法において、
前記タグ情報検索ステップは、前記投機フェッチ出力ステップによって投機フェッチが出力されるタイミングで、前記タグ情報の検索を開始することを特徴とするキャッシュ制御方法。
（付記１４）  付記１２に記載のキャッシュ制御方法において、
前記データ採用判定ステップは、前記ステータス更新判定ステップによって前記所定のステータスに更新されたと判定された場合、前記投機フェッチ出力ステップにて出力された投機フェッチによって得られるデータを採用し、前記ステータス更新判定ステップによって前記所定のステータスに更新されていないと判定された場合、前記投機フェッチによって得られるデータを破棄することを特徴とするキャッシュ制御方法。
（付記１５）  付記１２に記載のキャッシュ制御方法において、さらに、
前記データ書き込みの命令が実行中である場合、該命令によるデータ書き込み先のメモリのアドレスを保持することで、該アドレスに対するアクセスをロックするアドレスロックステップを備え、
前記投機フェッチ出力ステップは、さらに、前記アドレスロックステップによってロックされたアドレスの数が所定数以上ある場合、投機フェッチを出力しないことを特徴とするキャッシュ制御方法。
（付記１６）  付記１２に記載のキャッシュ制御方法において、
前記データ採用判定ステップは、さらに、前記タグ情報検索ステップによる検索処理が失敗し前記タグ情報検索ステップが再度検索を実行した場合、前記投機フェッチ出力ステップにて出力された投機フェッチによって得られるデータを採用しないと判定することを特徴とするキャッシュ制御方法。
【図面の簡単な説明】
【００６１】
【図１】本実施の形態における情報処理装置の構成の一例を示す図である。
【図２】本実施の形態における投機フェッチのステータスおよび管理テーブルで保持された情報の一例を示す図である。
【図３】本実施の形態における時間監視による順序保障を行う際の監視時間を説明する図である。
【図４】本実施の形態における投機フェッチの成功と失敗の一例を示す図である。
【図５】従来の投機フェッチの成功および失敗を示す図である。
【符号の説明】
【００６２】
１  ＳＣ、２  ＭＡＣ、３  ＤＩＭＭ、４  ＣＰＵ、５  ＳＸ、１１  投機フェッチ出力部、１２  タグ情報検索部、１３  タグ情報保持部、１４  ステータス更新部、１５  管理テーブル、１６  ステータス更新判定部、１７  データ採用判定部、１８  アドレスロック部、１００  情報処理装置。
【図１】
0005163220.tif 000002
【図２】
0005163220.tif 000003
【図３】
0005163220.tif 000004
【図４】
0005163220.tif 000005
【図５】
0005163220.tif 000006