(57)【要約】  要求格納部０のエントリ情報格納部５０３は、ＤＩＭＭ１１０（主記憶装置）の連続する領域に対する複数のアクセス要求を互いに関連付けて保持する。パイプライン制御部１０３は、関連付けられた複数のアクセス要求を、ＤＩＭＭ１１０またはＨ−ＣＰＵに対して連続して発行する。パイプライン制御部１０３は、連続して発行された複数のアクセス要求に対するＤＩＭＭ１１０またはＨ−ＣＰＵからの複数の応答データを、キャッシュタグ部１０５およびキャッシュデータ格納部１０６の連続するキャッシュラインに登録する。
2012172694.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置に接続される演算処理装置において、
データをそれぞれ保持する複数のキャッシュラインを有するキャッシュメモリと、
前記主記憶装置の連続する領域に対する複数のアクセス要求を互いに関連付けて保持する要求保持部（要求格納部０）と、
前記関連付けられた複数のアクセス要求を、前記主記憶装置に対して連続して発行する制御部と、
前記連続して発行された複数のアクセス要求に対する前記主記憶装置からの複数の応答データを、前記キャッシュメモリの連続するキャッシュラインに登録する処理部と、
を有することを特徴とする演算処理装置。
【請求項２】
前記複数のアクセス要求は、前記要求保持部が有する複数のエントリに保持される、連続して発行されるアクセス要求を識別する連続アクセス識別子に基づいて互いに関連付けられる、
ことを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記演算処理装置はさらに、
前記要求保持部に前記複数のアクセス要求を互いに関連付けて保持する場合、連続アクセス識別子がいずれかのエントリに割り当てられたかを示す識別子使用情報に基づいて、何れのエントリにも割り当てられていない連続アクセス識別子を、アクセス要求が保持されていない前記要求保持部のエントリに割り当てる識別子割当回路を有することを特徴とする請求項２記載の演算処理装置。
【請求項４】
前記識別子割当回路は、
連続アクセス識別子が取り得る値毎に連続アクセス識別子がエントリに割り当てられているかを示す個別識別子使用情報を前記複数のエントリ毎に生成する判定回路と、
前記判定回路が生成した複数の個別識別子使用情報の論理和として、前記識別子使用情報を生成する論理和回路と、
を有することを特徴とする請求項３記載の演算処理装置。
【請求項５】
前記識別子割当回路は、
前記連続アクセス識別子が取り得る値毎に、該値を有するアクセス要求が前記キャッシュメモリを検索中であることを示す第１の発行状態情報（ＨＬＤ０、ＨＬＤ１）を保持し、
前記第１の発行状態情報を参照しながら前記エントリに保持する連続アクセス識別子を割り当てることを特徴とする請求項３記載の演算処理装置。
【請求項６】
前記識別子割当回路は、
前記連続アクセス識別子が取り得る値毎に、該値を有するアクセス要求を前記主記憶装置に対して発行中であることを示す第２の発行状態情報（ＭＩＢ０、ＭＩＢ１）を保持し、
前記第２の発行状態情報を参照しながら前記エントリに保持する連続アクセス識別子を割り当てることを特徴とする請求項３記載の演算処理装置。
【請求項７】
前記制御部は、
前記関連付けられた複数のアクセス要求同士を連結した連結アクセス要求を生成し、前記複数のアクセス要求のアドレス情報に基づいて前記連結アクセス要求を、前記主記憶装置に対して発行することを特徴とする請求項１ないし６記載の演算処理装置。
【請求項８】
主記憶装置と、前記主記憶装置に接続される演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
データをそれぞれ保持する複数のキャッシュラインを有するキャッシュメモリと、
前記主記憶装置の連続する領域に対する複数のアクセス要求を互いに関連付けて保持する要求保持部（要求格納部０）と、
前記関連付けられた複数のアクセス要求を、前記主記憶装置に対して連続して発行する制御部と、
前記連続して発行された複数のアクセス要求に対する前記主記憶装置からの複数の応答データを、前記キャッシュメモリの連続するキャッシュラインに登録する処理部と、
を有することを特徴とする情報処理装置。
【請求項９】
前記複数のアクセス要求は、前記要求保持部に保持された連続アクセス識別子に基づいて互いに関連付けられる、
ことを特徴とする請求項８記載の情報処理装置。
【請求項１０】
主記憶装置に接続され、データをそれぞれ保持する複数のキャッシュラインを有するキャッシュメモリを備える演算処理装置の制御方法において、
前記演算処理装置が有する制御部が、前記演算処理装置が有する要求保持部（要求格納部０）に、前記主記憶装置の連続する領域に対する複数のアクセス要求を互いに関連付けて保持し、
前記制御部が、前記関連付けられた複数のアクセス要求を、前記主記憶装置に対して連続して発行し、
前記演算処理装置が有する処理部が、前記連続して発行された複数のアクセス要求に対する前記主記憶装置からの複数の応答データを、前記キャッシュメモリの連続するキャッシュラインに登録する、
ことを特徴とする演算処理装置の制御方法。
【請求項１１】
前記演算処理装置の制御方法において、
前記複数のアクセス要求は、前記要求保持部に保持された連続アクセス識別子に基づいて互いに関連付けられる、
ことを特徴とする請求項１０記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、演算処理装置、情報処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
主記憶装置にキャッシュメモリが接続され、キャッシュメモリおよび主記憶装置へのメモリアクセス要求をパイプライン処理する機構を有するとしてのＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）演算処理装置が知られている。このような演算処理装置は具体的には例えば、Ｌ２（Ｌｅｖｅｌ−２：２次）キャッシュシステムとして情報処理装置としてのコンピュータシステムに実装されている。【０００３】
命令を処理する命令処理部であるＣＰＵコアが例えばロード命令をミスし、ＣＰＵコアにおけるＬ１（Ｌｅｖｅｌ−１：１次）キャッシュメモリへのアクセスがミスすると、Ｌ２キャッシュ制御部に新規メモリアクセス要求が発行され、新規要求格納部に受信する。新規要求格納部からＬ２キャッシュメモリのパイプラインにメモリアクセス要求が投入される。パイプラインに投入されたメモリアクセス要求がＬ２キャッシュメモリでキャッシュミスを起こすと、キャッシュミスしたメモリアクセス要求は、要求格納部１とさらに主記憶制御部内の要求格納部２に格納される。要求格納部２からメモリアクセス要求が選択されてＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）アクセス処理部へ発行されるとともに、要求格納部２からそのメモリアクセス要求が開放される。ＤＲＡＭアクセス処理部では、パイプライン処理によりＤＲＡＭへアクセスが行われる。ＤＲＡＭから主記憶制御部を経由してＬ２キャッシュ制御部に対して、データ応答が行われる。データ応答を受信したＬ２キャッシュ制御部は、要求応答パイプラインを起動する。 要求応答パイプラインがアボート（中止）条件が発生せず完了すると、キャッシュタグ部の更新、キャッシュデータ格納部へのデータ格納、メモリアクセス要求を発行したＣＰＵコアへのデータ応答（ロード要求でプリフェッチ要求でない場合）等が行われる。最後に要求格納部１が開放される。【０００４】
なお、上述のパイプライン制御において、Ｌ２キャッシュメモリでキャッシュヒットした場合は、要求格納部１にはメモリアクセス要求が格納されずに、上記要求応答パイプラインの処理に相当する処理が行われ、キャッシュデータ格納部からデータを読み出し、要求元のＣＰＵコアへデータを応答し、処理が完了する。【０００５】
ＣＰＵコアがロード（ＬｏａＤ：ＬＤ）要求ではなく、プリフェッチ（Ｐｒｅ−Ｆｅｔｃｈ：ＰＦ）要求を発行する場合もある。ＰＦ要求とＬＤ要求の主要な違いは、ＬＤ要求は、要求元へデータを必ず応答するのに対して、ＰＦ要求はデータを応答する必要がない場合があり、（将来的なＬＤ要求に備えて)プリフェッチしたデータをキャッシュに保持した状態で、処理を完了することである。【０００６】
さらに、主記憶装置は、例えばＤＤＲ３−ＳＤＲＡＭ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ３  Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｍｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のバースト転送機能が知られている。このバースト転送機能により、同一ＲＯＷ（ロー：行）の隣接したＣＯＬＵＭＮ（カラム：列）へのアクセスを連続する場合、ページを閉じずに連続してアクセスが可能であるため１要求毎にページを閉じるよりも転送スループットを上げることができる。このような制御系においては、主記憶装置に対する要求サイズは、ある一定サイズ以上として設計すべきである。【０００７】
一方で、キャッシュ制御系におけるパイプライン処理は、その固有のキャッシュラインサイズを最小単位として処理される。【０００８】
キャッシュメモリにおいて、ある最適なキャッシュラインサイズがあるとして、そのキャッシュラインサイズを大きくする場合、連続したアドレス領域をアクセスするようなメモリアクセス処理に対してであれば問題ないが、例えばポインタアクセスのような間欠的にキャッシュライン中の数バイト程度だけをアクセスする場合には、却ってムダが大きくなってしまう。逆にラインサイズを必要以上に小さくすると同じサイズのデータ転送を行う場合、必要なパイプライン処理回数が増大し、却ってパイプラインの帯域を圧迫する、あるいはキャッシュタグのエントリ数(実装面積)が増大するなどの問題がある。従って、これらを考慮して望ましいとされるキャッシュラインサイズが決定される。【０００９】
ここで、最適な主記憶アクセスサイズが最適なキャッシュラインサイズよりも大きくなる場合に、キャッシュラインサイズ単位で主記憶装置を常時アクセスしているのでは主記憶の性能を最大に発揮することができないという課題が発生する。【００１０】
この課題に対して、次のような従来技術が知られている。キャッシュ制御部は、キャッシュライン長（キャッシュラインサイズ）に対するバースト可能なメモリのバースト長を示す第１情報（ＷＲＰＡ）に基づいて、メモリから単数又は複数個のバースト動作で得られたデータを、ラップアラウンドでキャッシュメモリにキャッシュフィルする。この従来技術は、メモリから出力されるデータをアライナを用いて所定のアドレス境界（バウンダリ）で並び替えなくてもよく、また、バースト動作対象とされるデータブロックのバウンダリの先頭をアクセス開始アドレスに固定する制約を受けないから、キャッシュライン長より短いバースト長のメモリを用いる場合にも、キャッシュミスに係るデータを獲得するまでのＣＰＵの待ち時間を短縮できるようにするものである。【００１１】
また、次のような従来技術も知られている。データ処理装置からなされた同期型メモリに対するデータ転送要求が、バースト転送長単位リクエスト分割部によって、データ転送量が一度にバースト転送されるデータ量で、一度に転送されるデータが単一のメモリバンク内のデータである複数のデータ転送要求に分割される。分割されたデータ転送要求は、リクエスト組み立て部によって、各メモリバンクに対するデータ転送要求が１つずつ組み合わせられたデータ転送要求に組み立てられて、複数の新たなデータ転送要求として出力される。この従来技術は、複数のメモリバンクに格納された連続的なデータに対し、データ処理装置が効率的にアクセスを行うことができるようにするものである。【００１２】
しかし、上述のような従来技術においては、キャッシュ制御の効率をアップさせることが十分ではないという問題点を有している。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】ＰＷＯ０１／０３７０９８号公報
【特許文献２】特開２００６−２６８８０１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
本発明は、ＣＰＵコアとキャッシュメモリと主記憶装置とのデータ転送及び処理の効率を向上することを目的とする。
【課題を解決するための手段】
【００１５】
態様の一例では、主記憶装置に接続される演算処理装置において、データをそれぞれ保持する複数のキャッシュラインを有するキャッシュメモリと、主記憶装置の連続する領域に対する複数のアクセス要求を互いに関連付けて保持する要求保持部（要求格納部０）と、関連付けられた複数のアクセス要求を、主記憶装置に対して連続して発行する制御部と、連続して発行された複数のアクセス要求に対する主記憶装置からの複数の応答データを、キャッシュメモリの連続するキャッシュラインに登録する処理部とを有する。
【発明の効果】
【００１６】
一態様によれば、ＣＰＵコアキャッシュメモリと主記憶装置とのデータ転送及び処理の効率を向上することができる。
【図面の簡単な説明】
【００１７】
【図１Ａ】Ｌ２キャッシュメモリおよび主記憶装置へのメモリアクセス要求をパイプライン処理する機構を有する情報処理装置の一般的な構成を示す図（その１）である。
【図１Ｂ】Ｌ２キャッシュメモリおよび主記憶装置へのメモリアクセス要求をパイプライン処理する機構を有する情報処理装置の一般的な構成を示す図（その２）である。
【図２】図１Ａおよび図１Ｂの構成を有するＬ２キャッシュメモリのパイプライン処理を示す動作シーケンス図である。
【図３Ａ】Ｌ２キャッシュメモリおよび主記憶装置へのメモリアクセス要求をパイプライン処理する機構を有しＣＣＮＵＭＡ機能を有する情報処理装置の一般的な構成を示す図（その１）である。
【図３Ｂ】Ｌ２キャッシュメモリおよび主記憶装置へのメモリアクセス要求をパイプライン処理する機構を有しＣＣＮＵＭＡ機能を有する情報処理装置の一般的な構成を示す図（その２）である。
【図４】図２Ａおよび図２Ｂの構成を有するＬ２キャッシュメモリのパイプライン処理を示す動作シーケンス図である。
【図５】実施形態の全体構成図である。
【図６】要求格納部０におけるエントリ情報格納部の構成例を示す図である。
【図７】ＢＩＤエントリ変換回路５０６とＢＩＤ使用状態判定回路５０７の回路構成図（その１）である。
【図８】要求格納部１のエントリの内容例を示す図である。
【図９Ａ】図５および図７の構成を有するＬ２キャッシュメモリにおいて、Ｌ−ＣＰＵに対するバーストアクセスを示す動作シーケンス図である。
【図９Ｂ】図５および図７の構成を有するＬ２キャッシュメモリにおいて、Ｈ−ＣＰＵに対するバーストアクセスを示す動作シーケンス図である。
【図１０】ＢＩＤエントリ変換回路５０６とＢＩＤ使用状態判定回路５０７の回路構成図（その２）である。
【図１１】要求格納部０においてＷＥＡＫ−ＰＦ要求が後続のＬＤ要求によって上書きされる場合のＢＩＤ制御を示す動作シーケンス図である。
【図１２】要求格納部０内のエントリ情報格納部５０３のより詳細な構成例を示す図である。
【図１３Ａ】ＢＩＤエントリ変換回路５０６の具体的な回路構成例を示す図（その１）である。
【図１３Ｂ】ＢＩＤエントリ変換回路５０６の具体的な回路構成例を示す図（その２）である。
【図１３Ｃ】ＢＩＤエントリ変換回路５０６の具体的な回路構成例を示す図（その３）である。
【図１４Ａ】ＢＩＤ使用状態判定回路５０７の具体的な回路構成例を示す図（その１）である。
【図１４Ｂ】ＢＩＤ使用状態判定回路５０７の具体的な回路構成例を示す図（その２）である。
【図１４Ｃ】ＢＩＤ使用状態判定回路５０７の具体的な回路構成例を示す図（その３）である。
【図１４Ｄ】ＢＩＤ使用状態判定回路５０７の具体的な回路構成例を示す図（その４）である。
【図１４Ｅ】ＢＩＤ使用状態判定回路５０７の具体的な回路構成例を示す図（その５）である。
【図１４Ｆ】ＢＩＤ使用状態判定回路５０７の具体的な回路構成例を示す図（その６）である。
【図１４Ｇ】ＢＩＤ使用状態判定回路５０７の具体的な回路構成例を示す図（その７）である。
【図１４Ｈ】ＢＩＤ使用状態判定回路５０７の具体的な回路構成例を示す図（その８）である。
【図１５Ａ】ＢＩＤテーブル回路の回路構成例を示す図（その１）である。
【図１５Ｂ】ＢＩＤテーブル回路の回路構成例を示す図（その２）である。
【図１５Ｃ】ＢＩＤテーブル回路の回路構成例を示す図（その３）である。
【図１５Ｄ】ＢＩＤテーブル回路の回路構成例を示す図（その４）である。
【図１６Ａ】実施形態において使用するパケットフォーマットの例を示す図（その１）である。
【図１６Ｂ】実施形態において使用するパケットフォーマットの例を示す図（その２）である。
【図１６Ｃ】実施形態において使用するパケットフォーマットの例を示す図（その３）である。
【図１６Ｄ】実施形態において使用するパケットフォーマットの例を示す図（その４）である。
【図１６Ｅ】実施形態において使用するパケットフォーマットの例を示す図（その５）である。
【図１６Ｆ】実施形態において使用するパケットフォーマットの例を示す図（その６）である。
【発明を実施するための形態】
【００１８】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
図１Ａおよび図１Ｂは、主記憶装置にＬ２キャッシュメモリが接続され、Ｌ２キャッシュメモリおよび主記憶装置へのメモリアクセス要求をパイプライン処理する機構を有する情報処理装置の一般的な構成を示す図である。
【００１９】
図１ＡのＣＰＵコア部１００は、演算処理を実行する演算処理プロセッサであり、１つ以上実装され得る。
【００２０】
図１Ａの新規要求格納部１０２（「要求格納部０」とも呼ぶ）、パイプライン制御部１０３、および要求格納部１  １０４（以下単に「要求格納部１」と記載する）は、Ｌ２キャッシュ制御部１０１を構成する。
【００２１】
新規要求格納部１０２は、各ＣＰＵコア部１００に対応して１つ以上のエントリが実装される。新規要求格納部１０２は、ＣＰＵコア部１００内のＬ１（１次）キャッシュがキャッシュミスしたときに、メモリアクセス要求を、Ｌ２（２次）キャッシュメモリでのパイプライン処理のために、そのＣＰＵコア部１００に対応するエントリに保持する。
【００２２】
パイプライン制御部１０３は、新規要求格納部１０２に格納されたメモリアクセス要求のキャッシュアクセスおよび主記憶アクセスをパイプライン処理するための制御を実行する。
【００２３】
図１Ａのキャッシュタグ部１０５とキャッシュデータ格納部１０６は、Ｌ２キャッシュメモリを構成する。キャッシュタグ部１０５は、キャッシュライン毎にタグを記憶する。キャッシュデータ格納部１０６は、キャッシュライン毎に、そのキャッシュラインに対応するインデックスとそのキャッシュラインに対応するキャッシュタグ部１０５上のタグとで定まる、主記憶装置としてのＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）１１０（図１Ｂ）上のアドレスのデータを保持する。パイプライン制御部１０３からキャッシュタグ部１０５へは、タグ読み出しコマンドが発行されてタグが読み出され、または、タグ更新コマンドが発行されてタグが更新される。また、パイプライン制御部１０３からキャッシュデータ格納部１０６へは、データのリードまたはライト指示（Ｒ／Ｗ指示）が発行され、データのリード動作またはライド動作が行われる。
【００２４】
図１Ａの要求格納部１  １０４（以下単に「要求格納部１」と呼ぶ）は、パイプライン制御部１０３によるキャッシュタグ部１０５へのキャッシュアクセスがキャッシュミスした場合に、そのキャッシュミスしたメモリアクセス要求を保持する。要求格納部１は、ＤＩＭＭ１１０（図１Ｂ）へのアクセスが完了し、キャッシュタグ部１０５、キャッシュデータ格納部１０６が更新され、またはＣＰＵコア部１００へのデータ転送が完了するまで、各メモリアクセス要求を保持する。
【００２５】
さらに、図１Ａの要求パケット生成部１１１から主記憶要求バスを介して図１Ｂの主記憶制御部１０７内の要求格納部２  １０８（以下単に「要求格納部２」と呼ぶ）に、主記憶要求パケットが送信される。これにより、要求格納部２にも、上記キャッシュミスしたメモリアクセス要求を保持する。要求格納部２は、主記憶制御部１０７内のＤＩＭＭアクセス制御部１０９にメモリアクセス要求が読み出されて主記憶アクセスのパイプラインに投入されるまで、各メモリアクセス要求を保持する。
【００２６】
要求格納部１および２へのメモリアクセス要求の格納時には、パイプライン制御部１０３から要求格納部１に要求格納指示が発行され、要求格納部１から要求格納部２に主記憶要求パケットが発行され、要求格納部１および２はこれらの指示に基づいてメモリアクセス要求の格納動作を実行する。
【００２７】
図１Ｂの主記憶制御部１０７内のＤＩＭＭアクセス制御部１０９は、要求格納部２から投入可能なバンクのメモリアクセス要求を選択し、ＤＩＭＭ１１０に対して、メモリアクセスのコマンドとアドレスを発行する。要求格納部２からＤＩＭＭアクセス制御部１０９に読み出されたときに、要求格納部２から図１Ａの要求格納部１に対して、要求開放通知が通知される。
【００２８】
図１ＢのＤＩＭＭ１１０は、複数のＤＲＡＭチップをプリント基板上に搭載したメモリモジュールであり、主記憶装置として使用される。
【００２９】
ＤＩＭＭ１１０へのアクセスにより取得された主記憶装置からのデータ応答は、図１Ｂの応答パケット生成部１１２により主記憶応答パケットに組み立てられる。この主記憶応答パケットは、図１Ｂの主記憶応答バスから図１Ａの応答パケット受信部１１３で受信される。応答パケット受信部１１３は、主記憶応答パケットから応答データを取り出し、図１Ａの要求格納部１、キャッシュデータ格納部１０６、メモリアクセス要求の要求元のＣＰＵコア部１００に引き渡す。
【００３０】
図１Ａのパイプライン制御部１０３は、上記データ応答に対応して、キャッシュデータ格納部１０６に対してライトコマンドを発行する。これにより、パイプライン制御部１０３は、主記憶装置から応答されたデータを、キャッシュデータ格納部１０６上の、上記応答データのアドレスに対応するキャッシュラインのうち書き込み可能なキャッシュウェイに書き込む。また、パイプライン制御部１０３は、上記データ応答に対応して、キャッシュタグ部１０５に対してタグ更新コマンドを発行する。これにより、パイプライン制御部１０３は、キャッシュタグ部１０５上の、上記キャッシュラインに含まれるタグを、上記応答データのアドレスに対応するタグで更新する。
【００３１】
図２は、図１Ａおよび図１Ｂの構成を有するＬ２キャッシュメモリのパイプライン処理を示す動作シーケンス図である。
【００３２】
まず、ＣＰＵコア部１００が例えばロード命令をミスし、ＣＰＵコアにおけるＬ１（１次）キャッシュメモリへのアクセスがミスすると、Ｌ２キャッシュ制御部１０１に新規メモリアクセス要求が発行される。これにより、メモリアクセス要求が、Ｌ２キャッシュ制御部１０１内の新規要求格納部１０２に受信される（シーケンスＳ１）。
【００３３】
新規要求格納部１０２からＬ２キャッシュメモリのパイプライン（図２中「Ｌ２−ＰＩＰＥ」と記載）にメモリアクセス要求が投入される（シーケンスＳ２）。なお、Ｌ２−ＰＩＰＥは、物理的な回路を示すものではなく、時間経過に沿ったパイプライン処理の状況を示す図である。
【００３４】
Ｌ２−ＰＩＰＥに投入されたメモリアクセス要求がＬ２キャッシュメモリでキャッシュミスを起こすと（シーケンスＳ３）、キャッシュミスしたメモリアクセス要求は、要求格納部１に格納される（シーケンスＳ４）。さらに、そのメモリアクセス要求は、図１Ａの要求パケット生成部１１１から図１Ｂの主記憶要求バスに主記憶要求パケットとして送信され、図１Ｂの主記憶制御部１０７内の要求格納部２に格納される（シーケンスＳ５）。また、パイプライン制御部１０３から新規要求格納部１０２には、上記メモリアクセス要求に対応するエントリの開放通知が通知される（シーケンスＳ６）。これにより、新規要求格納部１０２は、上記メモリアクセス要求に対応するエントリを開放し、そのエントリは次のメモリアクセス要求を受け付け可能な状態になる。
【００３５】
要求格納部１および要求格納部２は、メモリアクセス要求を保持するエントリを複数備える。パイプライン制御部１０３は、新規要求格納部１０２内の１つのエントリから１つのメモリアクセス要求を取り出してキャッシュアクセスを実行する。この結果、キャッシュヒットとなってＣＰＵコア部１００へのデータ応答が完了する、またはキャッシュミスによりメモリアクセス要求が要求格納部１および２に格納される。
【００３６】
主記憶制御部１０７内の要求格納部２に保持されたメモリアクセス要求は、処理可能なバンクアドレスを有するものから順にＤＩＭＭ１１０のアクセス用のパイプライン（図２中「主記憶アクセスパイプ」と表記）に投入される。なお、主記憶アクセスパイプは、Ｌ２−ＰＩＰＥと同様に、物理的な回路を示すものではなく、時間経過に沿った主記憶アクセスのパイプライン処理の状況を示す図である。ＤＩＭＭアクセス制御部１０９は、要求格納部２からメモリアクセス要求を取り出すとともに（シーケンスＳ７）、要求格納部２のエントリを開放してその旨を要求格納部１に通知する（シーケンスＳ８）。これにより、要求格納部２は、開放されたエントリに、新たなメモリアクセス要求を受け付け可能な状態になる。ＤＩＭＭアクセス制御部１０９は、取り出したメモリアクセス要求に対応するコマンドとアドレスを生成し、ＤＩＭＭ１１０に対してメモリアクセスを実行する（シーケンスＳ９）。
【００３７】
ＤＩＭＭ１１０におけるメモリアクセスが完了すると、ＤＩＭＭ１１０から応答パケット生成部１１２、主記憶応答バス、図１Ａの応答パケット受信部１１３を介して、要求格納部１に対してデータ応答が送信される（シーケンスＳ１０）。この結果、要求格納部１からパイプライン制御部１０３を介して、Ｌ２−ＰＩＰＥ上で要求応答パイプライン（以下、「要求応答パイプ」と呼ぶ）が起動される（シーケンスＳ１１）。要求応答パイプにおいてアボート（中止）条件が発生しない場合には、パイプライン制御部１０３は、キャッシュデータ格納部１０６への応答データの書き込みとキャッシュタグ部１０５のタグの更新を実行する（シーケンスＳ１２）。さらに、パイプライン制御部１０３は、ＣＰＵコア部１００へのデータ応答を行う（シーケンスＳ１３）。なお、ＣＰＵコア部１００へのデータ応答は、メモリアクセス要求が、ロード要求であって、かつプリフェッチ要求でない場合に実行される。最後に、要求格納部１に、該当するメモリアクセス要求のエントリの開放を通知する（シーケンスＳ１４）。これにより、要求格納部１の該当するエントリが開放される。
【００３８】
以上の制御動作において、パイプライン制御部１０３は、新規要求格納部１０２の複数のエントリのうちから１つのメモリアクセス要求を取り出してキャッシュアクセスを実行し、新規要求格納部１０２のそのエントリを開放する。その後、パイプライン制御部１０３は、１つのメモリアクセス要求においてキャッシュミスが起こって主記憶アクセスが必要になったような場合には、そのメモリアクセス要求を要求格納部１および２に引き渡す。これにより、パイプライン制御部１０３は、Ｌ２−ＰＩＰＥ上で、いったんそのメモリアクセス要求に対応する処理を開放して、他のメモリアクセス要求を新規要求格納部１０２の新たなエントリから読み込むことができる。この結果、ＤＩＭＭアクセス制御部１０９は、新規要求格納部１０２からメモリアクセス要求を次々に読み込んで、各メモリアクセス要求に対応するキャッシュアクセスを連続的にパイプライン処理することができる。
【００３９】
また、主記憶制御部１０７内のＤＩＭＭアクセス制御部１０９は、要求格納部２から１つのメモリアクセス要求を取り出した後、要求格納部２の該当するエントリを開放して、そのエントリで次のメモリアクセス要求を受け付け可能な状態にする。そして、ＤＩＭＭアクセス制御部１０９は、同一バンクアドレスでなければ、要求格納部２から次のメモリアクセス要求を取り出して、連続的に処理することができる。このようにして、主記憶制御部１０７においても、主記憶アクセスパイプによるパイプライン処理によって、効率的な主記憶アクセスが実現される。
【００４０】
そして、パイプライン制御部１０３は、新規要求格納部１０２からメモリアクセス要求を読み出してキャッシュアクセスしキャッシュミスが発生したときに、要求格納部１に空きがない場合には、新規要求格納部１０２に対して差し戻し指示を通知する。この結果、新規要求格納部１０２の該当するエントリは開放されず、待機状態となる。
【００４１】
また、パイプライン制御部１０３から要求格納部１には、パイプライン制御部１０３が現在パイプライン処理しているパイプアドレス（メモリアクセス要求がアクセスを要求するアドレス）が通知されている。この結果、要求格納部１は、自身のエントリ内のメモリアクセス要求が要求するアドレスとパイプアドレスとの一致を検出すると、アドレスマッチ通知をパイプライン制御部１０３に通知する。この場合には、パイプライン制御部１０３がパイプライン処理を開始しようとするメモリアクセス要求のアドレスのデータは、現在、要求格納部１に格納されており主記憶アクセス中であるため、再度主記憶アクセスを行う必要はない。このため、パイプライン制御部１０３は、アドレスマッチ通知を受信した場合には、新規要求格納部１０２に対して差し戻し指示を通知する。この結果、新規要求格納部１０２の該当するエントリは開放されず、待機状態となる。要求格納部１中の該当するメモリアクセス要求が実行されてキャッシュタグ部１０５とキャッシュデータ格納部１０６が更新された後に、上記新規要求格納部１０２中の同じアドレスを要求するメモリアクセス要求がパイプライン処理される。これにより、当該メモリアクセス要求がキャッシュヒットし、キャッシュデータ格納部１０６から該当するデータが要求元のＣＰＵコア部１００にロードされる。
【００４２】
その他、パイプライン制御部１０３においてパイプラインのアボート条件が成立した場合に、パイプライン制御部１０３から新規要求格納部１０２や要求格納部１に対して差し戻し指示を通知する。この結果、新規要求格納部１０２や要求格納部１の該当するエントリは開放されず、待機状態となる。
【００４３】
図３Ａおよび図３Ｂは、Ｌ２キャッシュメモリおよび主記憶装置へのメモリアクセス要求をパイプライン処理する機構を有し、さらにＣＣ−ＮＵＭＡ（Ｃａｃｈｅ  Ｃｏｈｅｒｅｎｔ  Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ：キャッシュコヒーレント・非ユニフォーム・メモリアクセス）機能を有する情報処理装置の一般的な構成を示す図である。図３Ａおよび図３Ｂにおいて、図１Ａおよび図１Ｂの場合と比較して同様の機能を有する部分には同じ番号が付されている。
【００４４】
ＣＣ−ＮＵＭＡ機能とは、次のような機能をいう。まず、それぞれが複数のＣＰＵコア部１００からなる各ＣＰＵコア群が、それぞれ独立した主記憶バスとＤＩＭＭ１１０を保有するノード（以下単に「ＣＰＵ」と呼ぶ）を構成する。そして、各ＣＰＵが、高速バス（ＣＣ−ＮＵＭＡバス）によって相互に接続される。すなわち、複数のＣＰＵが共有メモリリソースのキャッシュを保持するＣＣ−ＮＵＭＡは、キャッシュ間のデータの一貫性が保障される分散共有メモリ・アーキテクチャである。
【００４５】
図３Ａでは、要求パケット生成部１１１′、応答パケット受信部１１３′の機能と、要求パケット受信部２０１、Ｒ−要求格納部２０２、および応答パケット生成部２０３が追加されている。
【００４６】
要求パケット生成部１１１′は、要求格納部１から要求格納部２に向けて発行されたメモリアクセス要求の物理アドレスが自ＣＰＵ（以下このＣＰＵを「Ｌ−ＣＰＵ（ローカルＣＰＵ）と呼ぶ」が管理するアドレスである場合、次の動作を実行する。要求パケット生成部１１１′は、Ｌ−ＣＰＵが管理する物理アドレスを有するメモリアクセス要求を、図３Ｂの主記憶要求バスに主記憶要求パケットとして送出する。一方、メモリアクセス要求の物理アドレスが他ＣＰＵ（以下このＣＰＵを「Ｈ−ＣＰＵ（ホームＣＰＵ）」と呼ぶ）が管理するアドレスなら、要求パケット生成部１１１′は、次の動作を実行する。要求パケット生成部１１１′は、そのメモリアクセス要求を、図３ＢのＣＣ−ＮＵＭＡ要求バスにＲ−要求パケット（リモート要求パケット）として送出する。
【００４７】
主記憶要求バスに送出された主記憶要求パケットは、図１Ｂの場合と同様に、Ｌ−ＣＰＵに属する図３Ｂの主記憶制御部１０７内の要求格納部２にて受信され、それ以後の処理は、図１Ａおよび図１Ｂの場合と同様である。
【００４８】
一方、Ｈ−ＣＰＵに向けてＣＣ−ＮＵＭＡ要求バスに送出されたＲ−要求パケットは、Ｈ−ＣＰＵにおいて、図３ＡのＬ２キャッシュ制御部１０１内の要求パケット受信部２０１にて受信される。要求パケット受信部２０１は、Ｒ−要求パケットから、要求元のＣＰＵ（これを、「Ｒ−ＣＰＵ」（リモートＣＰＵ）と呼ぶ）で発行されたメモリアクセス要求（以下これを「Ｒ−要求」と呼ぶ）を取り出し、Ｒ−要求格納部２０２に格納する。Ｒ−要求格納部２０２は、複数のエントリを有し、新規要求格納部１０２と同様の機能を有する。
【００４９】
Ｒ−要求格納部２０２に格納されたＲ−要求は、Ｈ−ＣＰＵ内の新規要求格納部１０２に格納されるメモリアクセス要求と調停されて、Ｈ−ＣＰＵのパイプライン制御部１０３のＬ２−ＰＩＰＥに投入される。それ以後の動作は、図１Ａ、図１Ｂの場合と同様である。
【００５０】
Ｒ−要求に応答してＨ−ＣＰＵのキャッシュデータ格納部１０６から読み出された応答データ（キャッシュヒットの場合）またはＨ−ＣＰＵのＤＩＭＭ１１０（図３Ｂ）から要求格納部１に取得された応答データ（キャッシュミスの場合）は、次のように処理される。図３Ａの応答パケット生成部２０３が、取得した応答データを、Ｒ−ＣＰＵに向けて図３ＢのＣＣ−ＮＵＭＡ応答バスに、Ｒ−応答パケットとして送出する。このＲ−応答パケットは、Ｒ−ＣＰＵに到達した後、図３ＢのＣＣ−ＮＵＭＡ応答バスから図３Ａの応答パケット受信部１１３′に受信される。応答パケット受信部１１３′は、Ｒ−応答パケットから応答データを取り出し、図３Ａの要求格納部１、キャッシュデータ格納部１０６、メモリアクセス要求の要求元のＣＰＵコア部１００に引き渡す。この部分の動作は、図１Ａ、図１Ｂの応答パケット受信部１１３が主記憶応答パケットを受信した後の動作と同様である。
【００５１】
図４は、図３Ａおよび図３Ｂの構成を有するＬ２キャッシュメモリにおけるＨ−ＣＰＵへのアクセスを伴うパイプライン処理を示す動作シーケンス図である。図４において、図２の場合と同様のシーケンス部分には同じシーケンス番号を付してある。
【００５２】
まず、メモリアクセス要求がＬ２−ＰＩＰＥに投入された後にキャッシュミスを引き起こして要求格納部１に格納されるまでのシーケンスＳ１からＳ４は、図２の場合と同様である。
【００５３】
要求格納部１に格納されたメモリアクセス要求は、図３Ａの要求パケット生成部１１１′に入力する。要求パケット生成部１１１′は、メモリアクセス要求の物理アドレスを判定することにより、そのメモリアクセス要求を含むＲ−要求パケットを生成する。そして、そのＲ−要求パケットを、そのメモリアクセス要求を処理すべきＨ−ＣＰＵに向けてＣＣ−ＮＵＭＡ要求バスに送出する。ＣＣ−ＮＵＭＡ要求バスに送出されたＲ−要求パケットは、Ｈ−ＣＰＵにおいて、図３ＡのＬ２キャッシュ制御部１０１内の要求パケット受信部２０１にて受信される。要求パケット受信部２０１は、Ｒ−要求パケットから、要求元のＣＰＵで発行されたＲ−要求を取り出し、Ｒ−要求格納部２０２に格納する（以上、シーケンスＳ２０）。
【００５４】
Ｒ−要求格納部２０２に格納されたＲ−要求は、Ｈ−ＣＰＵ内の新規要求格納部１０２に格納されるメモリアクセス要求と調停されて、Ｈ−ＣＰＵのパイプライン制御部１０３のＬ２−ＰＩＰＥに投入される（シーケンスＳ２１）。
【００５５】
Ｈ−ＣＰＵのＬ２−ＰＩＰＥに投入されたＲ−要求がＬ２キャッシュメモリでキャッシュミスを起こすと（シーケンスＳ２２）、キャッシュミスしたＲ−要求は、Ｈ−ＣＰＵの要求格納部１に格納される（シーケンスＳ２３）。さらに、そのＲ−要求は、図３Ａの要求パケット生成部１１１′から図３Ｂの主記憶要求バスに主記憶要求パケットとして送信され、図３Ｂの主記憶制御部１０７内の要求格納部２に格納される（シーケンスＳ２４）。また、パイプライン制御部１０３からＲ−要求格納部２０２には、上記Ｒ−要求に対応するエントリの開放通知が通知される（シーケンスＳ２５）。これにより、Ｒ−要求格納部２０２は、上記Ｒ−要求に対応するエントリを開放し、そのエントリは次のＲ−要求を受け付け可能な状態になる。
【００５６】
Ｈ−ＣＰＵの主記憶制御部１０７内の要求格納部２に保持されたメモリアクセス要求は、処理可能なバンクアドレスを有するものから順に図３ＢのＤＩＭＭ１１０のアクセス用のパイプライン（図４中においてＨ−ＣＰＵの「主記憶アクセスパイプ」と表記）に投入される。Ｈ−ＣＰＵのＤＩＭＭアクセス制御部１０９は、要求格納部２からＲ−要求を取り出すとともに（シーケンスＳ２５）、要求格納部２のエントリを開放してその旨を要求格納部１に通知する（シーケンスＳ２７）。これにより、Ｈ−ＣＰＵの要求格納部２は、開放されたエントリに、新たなメモリアクセス要求を受け付け可能な状態になる。Ｈ−ＣＰＵのＤＩＭＭアクセス制御部１０９は、取り出したＲ−要求に対応するコマンドとアドレスを生成し、ＤＩＭＭ１１０に対してメモリアクセスを実行する（シーケンスＳ２６→Ｓ２８）。
【００５７】
Ｈ−ＣＰＵのＤＩＭＭ１１０でメモリアクセスが完了すると、Ｈ−ＣＰＵの図３ＢのＤＩＭＭ１１０から応答パケット生成部１１２、主記憶応答バス、図３Ａの応答パケット受信部１１３′を介し、要求格納部１に対し応答データが送信される（シーケンスＳ２９）。
【００５８】
さらに、上記応答データは、Ｈ−ＣＰＵの要求格納部１から応答パケット生成部２０３に入力する。なお、図４のシーケンスＳ２２でキャッシュミスではなくキャッシュヒットした場合には、Ｈ−ＣＰＵの図３Ａのキャッシュデータ格納部１０６にてキャッシュヒットしたデータが、応答データとして応答パケット生成部２０３に入力する。Ｈ−ＣＰＵの応答パケット生成部２０３は、取得した応答データを、Ｒ−ＣＰＵに向けて図３ＢのＣＣ−ＮＵＭＡ応答バスに、Ｒ−応答パケットとして送出する（シーケンスＳ３０）。このＲ−応答パケットは、Ｒ−ＣＰＵに到達した後、図３ＢのＣＣ−ＮＵＭＡ応答バスから図３Ａの応答パケット受信部１１３′に受信される。応答パケット受信部１１３′は、Ｒ−応答パケットから応答データを取り出し、図３Ａの要求格納部１に引き渡す（シーケンスＳ１０）。
【００５９】
続いて、要求格納部１からパイプライン制御部１０３を介して、Ｌ２−ＰＩＰＥ上で要求応答パイプが起動される（シーケンスＳ１１）。要求応答パイプにおいてアボート（中止）条件が成立しない場合には、パイプライン制御部１０３は、キャッシュデータ格納部１０６への応答データの書き込みとキャッシュタグ部１０５のタグの更新を実行する（シーケンスＳ１２）。さらに、パイプライン制御部１０３は、要求元のＣＰＵコア部１００へのデータ応答を行う（シーケンスＳ１３）。なお、ＣＰＵコア部１００へのデータ応答は、メモリアクセス要求が、ロード要求であって、かつプリフェッチ要求でない場合に実行される。最後に、要求格納部１に、該当するメモリアクセス要求のエントリの開放を通知する（シーケンスＳ１４）。これにより、要求格納部１の該当するエントリが開放される。
【００６０】
ここで、上述した図１Ａ、図１Ｂの構成、図３Ａ、図３Ｂの構成のいずれの場合でも、Ｌ２キャッシュ制御部１０１のキャッシュアクセスと主記憶制御部１０７による主記憶装置であるＤＩＭＭ１１０への主記憶アクセスとがいずれも、固有の処理単位を有しているものとする。そして、（キャッシュ制御装置の処理単位）×整数倍＝（主記憶装置の処理単位）の関係にあるものとする。例えば、Ｌ２キャッシュ制御部１０１によるキャッシュタグ部１０５およびキャッシュデータ格納部１０６に対する処理単位が１２８バイトで、主記憶制御部１０７によるＤＩＭＭ１１０に対する処理単位が２５６バイトであるとする。ここで、ＣＰＵコア部１００からのメモリアクセス要求の対象データがＤＩＭＭ１１０に対する処理単位である２５６バイトを単位として実行される場合に、キャッシュメモリに対するデータの出し入れも２５６バイトに対応する２つ分のキャッシュラインごとにまとめて行われれば、データ処理効率を向上させることができる。一方、ＣＰＵコアからのメモリアクセス要求の対象データが小さなデータサイズで、１２８バイト以下のデータサイズを持っているような場合には、キャッシュメモリに対するデータの出し入れは２５６バイト単位でまとめる必要はない。しかしながら、図１Ａ、図１Ｂの構成、図３Ａ、図３Ｂの構成のいずれの場合も、ＣＰＵコアとキャッシュメモリと主記憶装置との連携において、それぞれの処理単位のデータサイズの違いを考慮したキャッシュ制御は行われていなかった。このため、キャッシュ制御の効率が最適なものにはならない。
【００６１】
そこで、以下に説明する実施形態は、ＣＰＵコア部とキャッシュメモリと主記憶装置との連携において、それぞれの処理単位のデータサイズの違いを考慮したキャッシュ制御を行うことを可能にする。
【００６２】
本実施形態では、１個または複数個のデータ要求元であるＣＰＵコア部、そのデータ要求元からの要求を受信するデータ処理装置としてのＬ２キャッシュ制御部がある。そのデータ処理装置はさらに、外部装置へデータを要求する要求バスとデータを受信する応答バスで接続されている。データ処理装置、外部装置はいずれも、固有の処理単位を有し、「（データ処理装置の処理単位）×整数倍=（外部装置の処理単位）」の関係にあるものとする。そして本実施形態では、データ要求元から、外部装置の処理単位としてまとめられ得る要求群としてデータ処理装置に要求が発行されたときに、データ処理装置は、要求群共通のＩＤを割り当て、データ処理装置はその固有の単位で各要求に対する処理を行う。処理の結果、外部装置への要求を行う場合、要求バスの送信部、受信部いずれかで各要求に付随するＩＤの一致を検出して外部装置の処理単位の１個の要求にまとめる。外部装置がデータ処理装置にデータを応答する場合に、応答バスの送信部、受信部いずれかでデータ処理装置の単位に分割して処理を行う。
【００６３】
本実施形態では、上記構成において、データ処理部は、ＩＤが、有効状態か否かを示すテーブルを有し、有効状態でないＩＤを選択して割り当てるＩＤを決定する。そのテーブルは以下の要素の（１）、（２）、（３）のうちの一部または全部の論理オアによって構成される。
（１）各データ要求元からの新規要求を格納する要求格納部０のエントリの有効を示す信号と付加されたＩＤのデコード値の組合せ論理によって要求格納部エントリの有効信号から各ＩＤの有効信号へ変換された形式の信号。
（２）対応する要求がパイプライン処理中であることを示すような各ＩＤの有効フラグ。（３）対応する要求が主記憶に対してメモリアクセス中でキャッシュ制御部内の要求格納部を占有している状態であることを示すような各ＩＤ有効フラグ。
【００６４】
これにより、主記憶への要求動作のパイプライン処理の分割性と連続性を高めることができる。そして、最適なキャッシュラインサイズを維持しながら、かつキャッシュ制御系には影響を与えずに最適な主記憶アクセスサイズを実現することが可能となる。さらに、IＤが要求格納部０のエントリに存在しているか、パイプライン処理中の要求に存在しているか、主記憶にアクセス中の要求に存在しているかを検出して、使用可能なIＤを確実に検出することができる。
【００６５】
以上の機能を実現する本実施形態は、図３Ａ、図３Ｂのシステム構成を基本として、これを改良した図５に示されるシステム構成を有するＣＣ−ＮＵＭＡ機能を備えた情報処理装置である。図５において、図３Ａ、図３Ｂと同様の機能を有する部分には同じ番号を付してある。
【００６６】
本実施形態においてまず、新規要求格納部５０１（以下、「要求格納部０」と呼ぶ）は、エントリ情報格納部５０３、空きエントリ検出回路５０４、エントリ間プライオリティ選択回路５０５、ＢＩＤエントリ変換回路５０６、ＢＩＤ使用状態判定回路５０７、空きＩＤ検出回路５０８を備える。
【００６７】
エントリ情報格納部５０３は、１つ以上のＣＰＵコア部１００のそれぞれに対応して１つ以上のエントリが実装される。エントリ情報格納部５０３は、ＣＰＵコア部１００内のＬ１（１次）キャッシュにキャッシュミスが発生したときに、メモリアクセス要求を、Ｌ２（２次）キャッシュメモリでのパイプライン処理のために保持する。空きエントリ検出回路５０４は、エントリ情報格納部５０３内の複数のエントリのうち、空き状態となっているエントリを検出して選択する。
【００６８】
本実施形態では、主記憶装置であるＤＩＭＭ１１０の連続する領域に対する複数のメモリアクセス要求を互いに関連付けて、エントリ情報格納部５０３内の各エントリに保持する。より具体的には、上記複数のメモリアクセス要求は、エントリ情報格納部５０３が有する複数のエントリに保持された連続アクセス識別子であるバーストＩＤ（以下、「ＢＩＤ」と呼ぶ）に基づいて互いに関連付けられる。ＢＩＤは、例えばエントリを構成するビット列の２ビット目から０ビット目の３ビットに割り当てられる。従って、本実施形態では、キャッシュ制御のパイプライン処理において、同時に２の３乗＝８つまでの上記関連付けられた複数のメモリアクセス要求を管理することができる。
【００６９】
ＢＩＤエントリ変換回路５０６、ＢＩＤ使用状態判定回路５０７、および空きＩＤ検出回路５０８は、連続アクセス識別子であるＢＩＤを割り当てるための識別子割当回路として動作する。ＢＩＤエントリ変換回路５０６は、エントリ情報格納部５０３内の各エントリ値を、各エントリ毎に使用されているＢＩＤ値に変換する論理回路である。また、ＢＩＤ使用状態判定回路５０７は、キャッシュ制御のパイプライン処理における現在の各ＢＩＤ値の使用状態を判定する論理回路である。上記ＢＩＤエントリ変換回路５０６とＢＩＤ使用状態判定回路５０７によって、現在有効に使用されているＢＩＤ値が検出される。空きＩＤ検出回路５０８は、その検出結果に基づいて、エントリ情報格納部５０３にＢＩＤ値の登録を伴うエントリが登録されるときに、現在有効に使用されるＢＩＤの値以外の空き状態のＢＩＤを検出して登録されるエントリに設定する。
【００７０】
エントリ間プライオリティ選択回路５０５は、エントリ情報格納部５０３に登録されているエントリのうち、未処理のエントリを選択し、パイプ投入選択部５０９を介してパイプライン制御部１０３に投入する。エントリ間プライオリティ選択回路５０５は、ＤＩＭＭ１１０の連続する領域に対する複数のメモリアクセス要求がＢＩＤにより互いに関連付けて登録されているエントリについては、キャッシュメモリのデータサイズ（例えば１２８バイト）を有するそれらの複数のメモリアクセス要求（例えば２個のメモリアクセス要求）を連続してパイプライン制御部１０３に投入する。パイプ投入選択部５０９は、エントリ間プライオリティ選択回路５０５によって優先度を考えて選択された要求格納部０からのメモリアクセス要求と、Ｒ−要求格納部２０２内のエントリに格納されたメモリアクセス要求を選択して、パイプライン制御部１０３に投入する。
【００７１】
パイプライン制御部１０３において、投入されたメモリアクセス要求に関してキャッシュミスが発生した場合、キャッシュミスが発生したメモリアクセス要求は、要求格納部１  ５０２（以下単に「要求格納部１」と呼ぶ）内のエントリに格納される。このとき、要求格納部０内のエントリ情報格納部５０３のエントリにメモリアクセス要求に対応付けて格納されていたＢＩＤが、メモリアクセス要求の付随情報として、要求格納部１内のエントリに格納される。
【００７２】
そして、要求格納部１から要求パケット生成部１１１′を介してＬ−ＣＰＵ内の主記憶制御部１０７またはＨ−ＣＰＵに向けて主記憶要求パケットまたはＲ−要求パケットが送出される場合に、次のような制御が実行される。要求パケット生成部１１１′は、要求格納部１の各エントリ中で、ＢＩＤが一致する複数のメモリアクセス要求を連結した主記憶要求パケットまたはＲ−要求パケットを生成して送出する。この結果、Ｌ−ＣＰＵの主記憶制御部１０７内の特には図示しない要求格納部２またはＨ−ＣＰＵにおいては、主記憶装置であるＤＩＭＭ１１０の処理単位（例えば２５６バイト）でメモリアクセス要求が発行されることになり、効率的な主記憶アクセスを実現することが可能となる。
【００７３】
なお、上述のＲ−要求が発行された場合に、Ｈ−ＣＰＵにおいては、図５の要求パケット受信部２０１は、受信したＲ−要求パケット中の連結されたメモリアクセス要求（例えば２５６バイト）を同じＢＩＤを有するように（例えば１２８バイトの２つに）分離してＲ−要求格納部２０２に格納する。すなわち、Ｒ−要求格納部２０２は、要求格納部０内のエントリ情報格納部５０３と同様の構成を有しながらＢＩＤを管理することができる。そして、Ｈ−ＣＰＵにおいて、上記メモリアクセス要求はいったん分離された形式（例えば１２８倍の２つ）でパイプライン制御部１０３に投入される。この結果、キャッシュミスが発生してＤＩＭＭ１１０へのメモリアクセスが必要になったときには、次のような制御が実行される。要求パケット生成部１１１′が、要求格納部１の各エントリ中で、ＢＩＤが一致するＲ−要求同士（例えば１２８ずつ）を連結した主記憶要求パケット（例えば２５６バイト）を生成し、主記憶制御部１０７に送出する。このようにして、Ｈ−ＣＰＵへのリモートアクセス要求においても、キャッシュメモリおよび主記憶装置のそれぞれに適したデータサイズでメモリアクセス要求を実行することが可能となる。
【００７４】
図６は、要求格納部０内のエントリ情報格納部５０３の構成例を示す図である。図６の構成例では、エントリは、エントリ０からエントリ３までの４エントリから構成される。各エントリは、ＶＡＬ０（Ｖａｌｉｄ０）、ＶＡＬ１（Ｖａｌｉｄ１）、ＨＬＤ（Ｈｏｌｄ）、ＰＡ（Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ）、ＣＯＤＥ、ＢＩＤ（Ｂｕｒｓｔ−ＩＤ）の６つの情報をそのエントリの各フィールドに記憶する。
【００７５】
ＰＡ（Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ）は、メモリアクセス要求において要求される物理アドレスであり、ＰＡ［３９：８］、すなわち、メモリアクセス要求によって要求されたアドレスデータの３９ビット目から８ビット目の３２ビットが保持される。これは、２５６バイトバウンダリのアドレスを示している。次に、ＶＡＬ０＝１の場合、ＰＡ［７］＝０すなわちメモリアクセス要求において要求される物理アドレスの７ビット目が０であるメモリアクセス要求が有効に登録されていることを示す。そして、ＶＡＬ０＝０の場合、ＰＡ［７］＝０のメモリアクセス要求が登録されていない旨を示す。また、ＶＡＬ１＝１であれば、ＰＡ［７］＝１すなわちメモリアクセス要求において要求される物理アドレスの７ビット目が１であるメモリアクセス要求が有効に登録されていることを示す。そして、ＶＡＬ１＝０の場合、ＰＡ［７］＝１のメモリアクセス要求が登録されていない旨を示す。
【００７６】
上述のＰＡ［３９：８］とＶＡＬ０またはＶＡＬ１によって、ＰＡ［３９：７］が確定される。このうち、ＰＡの３９ビット目から１９ビット目までの２１ビットがキャッシュメモリ（キャッシュタグ部１０５およびキャッシュデータ格納部１０６）上のタグを表す。また、ＰＡの１８ビット目から７ビット目までの１２ビットがインデックス（＝キャッシュライン数）を表す。すなわち、本実施形態におけるＬ２キャッシュメモリのキャッシュライン数は、２の１２乗＝４０９６ラインである。なお、図６では明示していないが、メモリアクセス要求によって指定されるＰＡの６ビット目から０ビット目までの７ビットが、同一キャッシュライン内のオフセットアドレスを表す。
【００７７】
また、本実施形態で、ＶＡＬ０＝１かつＶＡＬ１＝１の場合には、そのエントリのメモリアクセス要求は、ＰＡ［７］＝０である１２８バイトと、当該ＰＡ［７］＝０である１２８バイトに続くＰＡ［７］＝１である１２８バイトの計２５６バイトのデータに対するメモリアクセス要求として有効であることを示す。つまり、本実施形態では、要求格納部０は、１つのエントリで２５６バイトのメモリアクセス要求を格納することもできるし、１２８バイトのメモリアクセス要求を格納することもできる。すなわち、要求格納部０のエントリは、２５６バイトバウンダリの２つの１２８バイトメモリアクセス要求を共有して保持することが可能である。
【００７８】
図６に示されるエントリ０〜３において、ＶＡＬ０＝０、ＶＡＬ１＝０の場合は、そのエントリにはメモリアクセス要求が格納されていない、つまり、エントリが空状態であることを示す。このことより、エントリの有効／無効（登録中か未登録状態か）は、ＶＡＬ０とＶＡＬ１の論理和（ＶＡＬ０｜ＶＡＬ１）で表現できることになる。図６では、オアゲート６０１（エントリ０）〜６０１（エントリ３）が、各エントリ０〜３の有効／無効を出力している。ＶＡＬ０、ＶＡＬ１のいずれかが１のときは、オアゲート６０１（エントリ０）〜６０１（エントリ３）の出力が１となる。それにより、エントリ間プライオリティ選択回路５０５によって所定のエントリが選択され、かつＢＩＤエントリ変換回路５０６で、エントリとＢＩＤの対応関係が決定される。そして、特定のエントリの特定のＢＩＤを示す情報がＢＩＤエントリ変換回路５０６から出力される。
【００７９】
図６に示されるエントリ０〜３において、ＨＬＤは、そのエントリのメモリアクセス要求のＶＡＬ０、ＶＡＬ１のいずれかまたは両方がパイプライン要求中、またはパイプラインを処理中であることを示す。ＨＬＤがオンしているエントリについては、エントリ間プライオリティ選択回路５０５は、新規にパイプライン処理するエントリとして選択することはない。
【００８０】
ＶＡＬ０、ＶＡＬ１、ＨＬＤの各情報は、パイプライン制御部１０３からのエントリ開放通知によりクリアされる。
【００８１】
図６に示されるエントリ０〜３において、ＣＯＤＥは当該エントリに登録されたメモリアクセス要求の要求種別を表す。例えば以下のようにアサインする。
【００８２】
ＣＯＤＥ＝０１  ：  ＬＤ−ＳＨ（ＬＤ（Ｌｏａｄ：ロード）要求の共有型要求）
ＣＯＤＥ＝０２  ：  ＬＤ−ＥＸ（ＬＤ（Ｌｏａｄ：ロード）要求の排他型要求）
ＣＯＤＥ＝１１  ：  ＳＴＲＯＮＧ−ＰＦ−ＳＨ（ＳＴＲＯＮＧ−ＰＦ（Ｓｔｒｏｎｇ  Ｐｒｅｆｅｔｃｈ：ストロング・プリフェッチ）要求の共有型（Ｓｈａｒｅｄ）要求）
ＣＯＤＥ＝１２  ：  ＳＴＲＯＮＧ−ＰＦ−ＥＸ（ＳＴＲＯＮＧ−ＰＦ（Ｓｔｒｏｎｇ  Ｐｒｅｆｅｔｃｈ：ストロング・プリフェッチ）要求の排他型（Ｅｘｃｌｕｓｉｖｅ）要求）
ＣＯＤＥ＝３１  ：  ＷＥＡＫ−ＰＦ−ＳＨ（ＷＥＡＫ−ＰＦ（Ｗｅａｋ  Ｐｒｅｆｅｔｃｈ：ウィーク・プリフェッチ）要求の共有型（Ｓｈａｒｅｄ）要求）
ＣＯＤＥ＝３２  ：  ＷＥＡＫ−ＰＦ−ＥＸ（ＷＥＡＫ−ＰＦ（Ｗｅａｄ  Ｐｒｅｆｅｔｃｈ：ウィーク・プリフェッチ）要求の排他型（Ｅｘｃｌｕｓｉｖｅ）要求）
それぞれの要求種別については、後述する。
【００８３】
次に、ＢＩＤ［２：０］には、新規メモリアクセス要求の登録時に、空きＩＤ検出回路５０８によって検出された使用可能な（空いている）バーストＩＤが割り当てられ、格納される。エントリ間プライオリティ選択回路５０５は、２５６バイトのメモリアクセス要求が登録されたＶＡＬ０＝１、ＶＡＬ１＝１であるエントリを選択した場合は、次のような制御を行う。エントリ間プライオリティ選択回路５０５は、ＰＡ［７］＝０のメモリアクセス要求とＰＡ［７］＝１のメモリアクセス要求の１２８バイトずつに分離した２つの要求に同じＢＩＤを付随させて、それらのメモリアクセス要求をパイプライン制御部１０３に投入する。このとき、パイプライン制御部１０３内の特には図示しないパイプ投入選択部は、同一ＢＩＤのメモリアクセス要求を連続して選択するのが望ましい。この結果、同一ＢＩＤのメモリアクセス要求は要求格納部１に連続的に格納されるため、要求格納部１でのＢＩＤ一致検出の確率が向上するからである。
【００８４】
特には図示しないが、Ｒ−要求格納部２０２の構成も、上述の要求格納部０と同様にＶＡＬ０、ＶＡＬ１、ＨＬＤ、ＰＡ［３９：８］、ＣＯＤＥ、ＢＩＤ［２：０］を有し、１２８バイト要求、２５６バイト要求いずれも格納可能である。
【００８５】
図７は、図５のＢＩＤエントリ変換回路５０６とＢＩＤ使用状態判定回路５０７の回路構成図（その１）である。
【００８６】
図５のＢＩＤエントリ変換回路５０６は、デコーダ７０１（エントリ０）〜７０１（エントリ３）、アンドゲート７０２（エントリ０、ＢＩＤ＝０〜７）〜７０２（エントリ３、ＢＩＤ＝０〜７）、オアゲート７０３（ＢＩＤ＝０〜７）を有する。
【００８７】
４つのデコーダ７０１（エントリ０）〜７０１（エントリ３）は、それぞれ図６のエントリ情報格納部５０３内の各エントリ０〜３の各３ビットのＢＩＤ［２：０］をデコードする。この結果、ＢＩＤ［２：０］の３ビット値に応じていずれか１本の出力がオンとなる８つの出力線を出力する。
【００８８】
８つのアンドゲート７０２（エントリ０、ＢＩＤ＝０〜７）は、それぞれの第１の入力にデコーダ７０１（エントリ０）の各出力が入力し、それぞれの第２の入力に図６のオアゲート６０１（エントリ０）の出力が入力する。この結果、図６のエントリ情報格納部５０３内のエントリ０のメモリアクセス要求が有効であるときに、そのエントリ０のＢＩＤ［２：０］の３ビット値に応じて、上記８つのアンドゲート７０２（エントリ、ＢＩＤ＝０〜７）のうちのいずれか１つの出力がオンとなり、オアゲート７０３（ＢＩＤ＝０〜７）のうちの対応する１つの出力がオンとなる。これにより、特定のエントリに格納されている特定のＢＩＤがＢＩＤエントリ変換回路５０６から出力され、このＢＩＤが空きか否かを含めてＢＩＤの使用状態をＢＩＤ使用状態判定回路５０７で判定する。
【００８９】
８つのアンドゲート７０２（エントリ１、ＢＩＤ＝０〜７）は、それぞれの第１の入力にデコーダ７０１（エントリ１）の各出力が入力し、それぞれの第２の入力に図６のオアゲート６０１（エントリ１）の出力が入力する。この結果、図６のエントリ情報格納部５０３内のエントリ１のメモリアクセス要求が有効である場合に、そのエントリ１のＢＩＤ［２：０］の３ビット値に応じて、上記８つのアンドゲート７０２（エントリ、ＢＩＤ＝０〜７）のうちのいずれか１つの出力がオンとなり、オアゲート７０３（ＢＩＤ＝０〜７）のうちの対応する１つの出力がオンとなる。
【００９０】
他のエントリ２〜７の各８つのアンドゲート７０２（エントリ２、ＢＩＤ＝０〜７）〜７０２（エントリ７、ＢＩＤ＝０〜７）についても同様である。
【００９１】
この結果、図６のエントリ情報格納部５０３内の各エントリにおいて、有効に登録されているエントリのＢＩＤに応じて、８つのオアゲート７０３（ＢＩＤ＝０〜７）のうち有効に登録されている各ＢＩＤ値に対応するオアゲートの出力がオンとなる。
【００９２】
次に、図５のＢＩＤ使用状態判定回路５０７は、８つのＢＩＤ値毎使用状態判定回路７０４（ＢＩＤ＝０〜７）を有する。各ＢＩＤ値毎使用状態判定回路７０４は、各ＢＩＤ値毎に、各ＢＩＤ値に対応するオアゲート７０３の出力がオンのときに、次のような動作を実行する。各ＢＩＤ値を有するメモリアクセス要求が、図５の要求格納部１のエントリを獲得し、発行された主記憶装置やＨ−ＣＰＵへの要求に対する応答を待っている場合、オアゲート７０３のオン出力を、空きＩＤ検出回路５０８に出力する。より具体的には、各ＢＩＤ値毎使用状態判定回路７０４は、各ＢＩＤ値に関してＭＩＢ０とＭＩＢ１の２つの情報が保持されるレジスタ群７０５を有する。また、これら２つの情報の論理和を出力するオアゲート７０６を有する。さらに、各ＢＩＤ値に対応するオアゲート７０３の出力とオアゲート７０６の出力の論理和を出力するオアゲート７０７を有する。ここで、ＭＩＢ０は、対応するＢＩＤ値が設定されたメモリアクセス要求のうち、ＶＡＬ０＝１（ＰＡ［７］＝０）の要求がパイプ処理において、キャッシュミスし、要求格納部１に格納されたときに、オンする。そして、ＭＩＢ０は、そのメモリアクセス要求に関して、応答データが受信された後、要求応答パイプをアボートせずに完了させ、要求格納部１からその要求が開放されたときにオフする。ＭＩＢ１についても同様に、対応するＢＩＤ値が設定されたメモリアクセス要求のうち、ＶＡＬ１＝１（ＰＡ［７］＝１）の要求がパイプ処理において、キャッシュミスし、要求格納部１に格納されたときに、オンする。そして、ＭＩＢ１は、そのメモリアクセス要求に関して、応答データが受信された後、要求応答パイプをアボートせずに完了させ、要求格納部１からその要求が開放されたときにオフする。従って、ＭＩＢ０およびＭＩＢ１は、そのＢＩＤを獲得しているメモリアクセス要求が要求格納部１のエントリを獲得した状態であることを示す。従って、ＭＩＢ０、ＭＩＢ１がオフ（０）のときは、特定のエントリの特定のＢＩＤを示す情報が、ＢＩＤエントリ変換回路５０６から空きＩＤ検出回路５０８に入力されて、そのＢＩＤが空きか否かが検出される。
【００９３】
以上のＢＩＤエントリ変換回路５０６とＢＩＤ使用状態判定回路５０７により、図６のエントリ情報格納部５０３内の各エントリにＢＩＤ値が有効に登録されている期間に、各ＢＩＤ値が使用中であることを示すオン信号を空きＩＤ検出回路５０８に出力する。または、各ＢＩＤ値を有するメモリアクセス要求が、図５の要求格納部１のエントリを獲得し、主記憶装置やＨ−ＣＰＵへの要求が発行された後応答を待っている状態の期間であるときに、各ＢＩＤ値が使用中であることを示すオン信号を空きＩＤ検出回路５０８に出力する。各ＢＩＤ値が使用中であることを示すそれぞれのオン信号を受けて、空きＩＤ検出回路５０８は、オン信号が入力していないＢＩＤ値のうちの１つを、空きＩＤとして図５または図６のエントリ情報格納部５０３に出力することができる。
【００９４】
図８は、図５の要求格納部１のエントリの内容例を示す図である。要求格納部０と異なり、要求格納部１は、１エントリに１２８バイトのメモリアクセス要求のみを格納する。つまり、１２８バイト要求単位でバラバラにパイプ処理された要求は、バラバラに要求格納部１に格納される。要求格納部１では、ＢＩＤをキーにして再び２５６バイト要求に連結する処理を行う。
【００９５】
要求格納部１のエントリにおいて、ＶＡＬ（Ｖａｌｉｄ）は、そのエントリ自体が有効であるか否かを示すフラグ情報である。
【００９６】
要求格納部１のエントリにおいて、ＰＡ［３９：７］は、要求格納部０のエントリに格納されていたＰＡ［３９：８］にそのエントリのＶＡＬ０＝１のときにはＰＡ［７］＝０を、ＶＡＬ１＝１のときにはＰＡ［７］＝１を加えたデータである。ＶＡＬ０＝１かつＶＡＬ１＝１のときには１２８バイト単位に分解した１番目のメモリアクセス要求ではＰＡ［７］＝０、２番目のメモリアクセス要求ではＰＡ［７］＝１をＰＡ［３９：８］に加えたデータである。
【００９７】
要求格納部１のエントリにおいて、ＣＯＤＥは、要求格納部０のエントリに格納されていたメモリアクセス要求の種別を表すＣＯＤＥデータをコピーしたものである。
【００９８】
要求格納部１のエントリにおいて、ＢＩＤは、要求格納部０のエントリに格納されていた３ビットのＢＩＤ［２：０］に例えば、次のような情報を付加したものである。例えば、ＢＩＤ［２：０］に、要求元のＣＰＵを識別する２ビットの要求ＣＰＵ＿ＩＤ［１：０］と、要求元のＣＰＵコア部１００を識別する２ビットのＣＯＲＥ＿ＩＤ［１：０］が付加されて、合計７ビットのＢＩＤ［６：０］として登録される。
【００９９】
図８の例では、要求格納部１は、エントリ０からエントリ７までの８つのエントリを有する。要求格納部１においては、各エントリのＢＩＤ値が各エントリのＢＩＤ一致検出回路に入力される。各エントリのＢＩＤ一致検出回路は、そのエントリのＢＩＤ値と他の各エントリのＢＩＤ値とのアンド論理をとるアンドゲート群によって実現することができる。そして、各ＢＩＤ一致検出回路において、ＢＩＤが一致したメモリアクセス要求が検出されたら、図５の要求パケット生成部１１１′は、それらのメモリアクセス要求を結合した主記憶要求パケットまたはＲ−要求パケットを生成して出力する。
【０１００】
図９Ａは、図５および図７の構成を有するＬ２キャッシュメモリにおいて、Ｌ−ＣＰＵに対するバーストアクセスを示す動作シーケンス図である。
【０１０１】
まず、ＣＰＵコア部１００が例えば２５６バイト要求のロード命令をミスし、ＣＰＵコアにおけるＬ１（１次）キャッシュメモリへのアクセスがミスすると、新規要求格納部１０２に新規メモリアクセス要求が発行される。このとき、ＶＡＬ０（図中「ＶＡＬ０」と表記。以下同様。）＝１、ＶＡＬ１（図中「ＶＡＬ１」と表記。以下同様。）＝１とされて２５６バイト要求がエントリ登録される。そして、そのエントリにＢＩＤ（図中「Ｂｕｒｓｔ＿ＩＤ」と表記。以下同様。）が割り当てられる（以上、シーケンスＳ１）。
【０１０２】
新規要求格納部１０２からＬ２キャッシュメモリのパイプラインＬ２−ＰＩＰＥに、２５６バイトメモリアクセス要求が２つの１２８バイト要求に分割されて投入される。このとき、１番目のメモリアクセス要求はＶＡＬ０＝１でＰＡ［７］＝０、２番目のメモリアクセス要求はＶＡＬ１＝１でＰＡ［７］＝１とされる（シーケンスＳ２（ＶＡＬ０）、Ｓ２（ＶＡＬ１））。
【０１０３】
Ｌ２−ＰＩＰＥに投入された各メモリアクセス要求がＬ２キャッシュメモリでそれぞれキャッシュミスを起こすと、キャッシュミスした各メモリアクセス要求は、相次いで要求格納部１に格納される（シーケンスＳ３（ＶＡＬ０）、Ｓ３（ＶＡＬ１））。このとき、２つのメモリアクセス要求には、同一のＢＩＤが付加される。パイプライン制御部１０３から新規要求格納部１０２には、上記各メモリアクセス要求に対応するエントリの開放通知が通知される（シーケンスＳ４（ＶＡＬ０）、Ｓ４（ＶＡＬ１））。これにより、新規要求格納部１０２は、上記各メモリアクセス要求に対応する２５６バイト要求エントリを開放し、そのエントリは次のメモリアクセス要求を受け付け可能な状態になる。
【０１０４】
続いて、図５の要求パケット生成部１１１′は、要求格納部１上で、ＢＩＤが同一の２つのメモリアクセス要求を検出する。そして、要求パケット生成部１１１′は、それらのメモリアクセス要求を連結（バースト処理）して２５６バイト要求とし、１つの主記憶要求パケットとして主記憶制御部１０７内の特には図示しない要求格納部２に転送する（シーケンスＳ５（ＶＡＬ０＋ＶＡＬ１）。
【０１０５】
主記憶制御部１０７内の要求格納部２に保持された２５６バイトメモリアクセス要求は、ＤＩＭＭ１１０のアクセス用のパイプライン（図９Ａ中「主記憶アクセスパイプ」と表記。）に投入される（シーケンスＳ６（ＶＡＬ０＋ＶＡＬ１））。この結果、ＤＩＭＭ１１０に対して２５６バイトを処理単位とするメモリアクセスが実行される（シーケンスＳ７（ＶＡＬ０＋ＶＡＬ１））。
【０１０６】
ＤＩＭＭ１１０におけるメモリアクセスが完了すると、ＤＩＭＭ１１０から主記憶応答バスを介して、図３Ａの応答パケット受信部１１３′で、２５６バイト単位の応答データを含む主記憶応答パケットが受信される（シーケンスＳ８（ＶＡＬ０＋ＶＡＬ１））。応答パケット受信部１１３′は、主記憶応答パケットから、２５６バイト単位の応答データを取り出した後、それを１２８バイト単位の２つのメモリアクセス要求に対応する応答データに分割し、要求格納部１に引き渡す（シーケンスＳ９（ＶＡＬ０）、Ｓ９（ＶＡＬ１））。
【０１０７】
この結果、要求格納部１からパイプライン制御部１０３を介して、Ｌ２−ＰＩＰＥ上で２つのメモリアクセス要求に対応する各要求応答パイプが起動される（シーケンスＳ１０（ＶＡＬ０）、Ｓ１０（ＶＡＬ１））。各要求応答パイプにおいてアボート（中止）条件が発生しない場合には、パイプライン制御部１０３は、キャッシュデータ格納部１０６への各応答データの書き込みとキャッシュタグ部１０５の各タグの更新を実行する（シーケンスＳ１１（ＶＡＬ０）、Ｓ１１（ＶＡＬ１））。さらに、パイプライン制御部１０３は、ＣＰＵコア部１００への２つのメモリアクセス要求に対応する各データ応答を行う（シーケンスＳ１２（ＶＡＬ０）、Ｓ１２（ＶＡＬ１））。なお、ＣＰＵコア部１００へのデータ応答は、メモリアクセス要求が、ロード要求であって、かつプリフェッチ要求でない場合に実行される。最後に、要求格納部１に、該当する各メモリアクセス要求の各エントリの開放を通知する（シーケンスＳ１３（ＶＡＬ０）、Ｓ１３（ＶＡＬ１））。これにより、要求格納部１の該当する各エントリが開放される。
【０１０８】
以上の構成において、前述した図７のＢＩＤエントリ変換回路５０６とＢＩＤ使用状態判定回路５０７により、ＢＩＤは、以下の期間においてシステム内に生存する。まず、図６のエントリ情報格納部５０３内の各エントリにＢＩＤ値が有効に登録されている期間に、各ＢＩＤ値が使用中であることを示すオン信号（図７のＩＤ０＿ＶＡＬ〜ＩＤ７＿ＶＡＬ）がオアゲート７０７から出力される期間である。これは、新規要求格納部１０２のＶＡＬ０とＶＡＬ１がそれぞれ登録されている該当するエントリが開放されるまでの図９Ａの（１）の期間に相当する。または、各ＢＩＤ値を有するメモリアクセス要求が、図５の要求格納部１のエントリを獲得し、主記憶装置やＨ−ＣＰＵへの要求が発行された後応答を待っている場合に、各ＢＩＤ値が使用中であることを示すオン信号（ＩＤ０＿ＶＡＬ〜ＩＤ７＿ＶＡＬ）がオアゲート７０７から出力される期間である。これは、図９Ａ（２）のＭＩＢ０＝１となる期間または図９Ａ（３）のＭＩＢ１＝１となる期間である。これにより、図７のレジスタ群７０５がセットされてオアゲート７０６，オアゲート７０７の出力（ＩＤ０＿ＶＡＬ〜ＩＤ７＿ＶＡＬ）がオンとなる。ＭＩＢ０＝１となる期間（２）は、ＶＡＬ０に対応するメモリアクセス要求に関し、パイプライン制御部１０３から、要求格納部１のエントリ獲得通知が出力されて開始し、要求応答パイプが完了してパイプライン処理成功通知（エントリ開放通知）が出力されて終了する。ＭＩＢ１＝１となる期間（３）は、ＶＡＬ１に対応するメモリアクセス要求に関し、パイプライン制御部１０３から、要求格納部１のエントリ獲得通知が出力されて開始し、要求応答パイプが完了してパイプライン処理成功通知（エントリ開放通知）が出力されて終了する。図７のレジスタ群７０５のＭＩＢ０およびＭＩＢ１を更新する仕組みについては、図１４Ａから図１４Ｈの説明において後述する。以上のＢＩＤの生存期間中においては、そのＢＩＤ値に関しては、図７の該当するＢＩＤ値毎使用状態判定回路７０４から空きＩＤ検出回路５０８にオン信号が入力するため、そのＢＩＤが他のメモリアクセス要求によって使用されることはない。
【０１０９】
図９Ｂは、図５および図７の構成を有するＬ２キャッシュメモリにおいて、Ｈ−ＣＰＵに対するバーストアクセスを示す動作シーケンス図である。
【０１１０】
図９Ｂにおいて、図９Ａの場合と同様のシーケンス部分には同じシーケンス番号を付してある。
【０１１１】
まず、メモリアクセス要求がＬ２−ＰＩＰＥに投入された後にキャッシュミスを引き起こして要求格納部１に格納されるまでのシーケンスＳ１、Ｓ２（ＶＡＬ０）とＳ２（ＶＡＬ１）、Ｓ３（ＶＡＬ０）とＳ３（ＶＡＬ１）、Ｓ４（ＶＡＬ０）とＳ４（ＶＡＬ１）は、図９Ａの場合と同様である。
【０１１２】
要求格納部１に格納された同じＢＩＤを有する２つのメモリアクセス要求は、図５の要求パケット生成部１１１′に入力する。要求パケット生成部１１１′は、メモリアクセス要求の物理アドレスを判定することにより、そのメモリアクセス要求を含むＲ−要求パケットを生成する。このとき、要求パケット生成部１１１′は、要求格納部１上で、ＢＩＤが同一の２つのメモリアクセス要求を検出する。そして、要求パケット生成部１１１′は、それらのメモリアクセス要求を結合して２５６バイト要求とし、１つのＲ−要求パケットとして、ＣＣ−ＮＵＭＡ要求バス上に送出する。ＣＣ−ＮＵＭＡ要求バスに送出されたＲ−要求パケットは、Ｈ−ＣＰＵにおいて、図５の要求パケット受信部２０１にて受信される。要求パケット受信部２０１は、Ｒ−要求パケットから、要求元のＣＰＵで発行された結合された２つのＲ−要求を取り出し、ＶＡＬ０とＶＡＬ１をともに１として、Ｒ−要求格納部２０２の１つのエントリに格納する（以上、シーケンスＳ２０）。
【０１１３】
Ｒ−要求格納部２０２に格納されたＲ−要求は、パイプ投入選択部５０９によって選択され、Ｈ−ＣＰＵのパイプライン制御部１０３のＬ２−ＰＩＰＥに２つの１２８バイト処理単位の要求として投入される（シーケンスＳ２１）。
【０１１４】
Ｈ−ＣＰＵのＬ２−ＰＩＰＥに投入された各Ｒ−要求がＬ２キャッシュメモリでキャッシュミスを起こすと、キャッシュミスした各Ｒ−要求は、Ｈ−ＣＰＵの要求格納部１に相次いで格納される（シーケンスＳ２２（ＶＡＬ０）、Ｓ２２（ＶＡＬ１））。さらに、それらのＲ−要求は、Ｈ−ＣＰＵの図５の要求パケット生成部１１１′からＨ−ＣＰＵの主記憶制御部１０７内の特には図示しない要求格納部２に格納される。このとき、要求パケット生成部１１１′は、要求格納部１上で、ＢＩＤが同一の２つのＲ−要求を検出する。そして、要求パケット生成部１１１′は、それらのメモリアクセス要求を結合（バースト処理）して２５６バイト要求とし、１つの主記憶要求パケットとして主記憶制御部１０７内の特には図示しない要求格納部２に転送する（シーケンスＳ２３（ＶＡＬ０＋ＶＡＬ１）。
【０１１５】
Ｈ−ＣＰＵの主記憶制御部１０７内の要求格納部２に保持された２５６バイトメモリアクセス要求は、Ｈ−ＣＰＵのＤＩＭＭ１１０のアクセス用の主記憶アクセスパイプに投入される（シーケンスＳ２４（ＶＡＬ０＋ＶＡＬ１））。この結果、Ｈ−ＣＰＵのＤＩＭＭ１１０に対して２５６バイトを処理単位とするメモリアクセスが実行される（シーケンスＳ２５（ＶＡＬ０＋ＶＡＬ１））。
【０１１６】
Ｈ−ＣＰＵのＤＩＭＭ１１０でのメモリアクセスが完了すると、ＤＩＭＭ１１０からＨ−ＣＰＵの応答パケット受信部１１３′に、２５６バイト単位の応答データを含む主記憶応答パケットが転送される（シーケンスＳ２６（ＶＡＬ０＋ＶＡＬ１））。Ｈ−ＣＰＵの応答パケット受信部１１３′は、主記憶応答パケットから、２５６バイト単位の応答データを取り出した後、それを１２８バイト単位の２つのメモリアクセス要求に対応する応答データに分割し、Ｈ−ＣＰＵの要求格納部１に引き渡す。
【０１１７】
さらに、上記各応答データは、Ｈ−ＣＰＵの要求格納部１から応答パケット生成部２０３に入力する。なお、図９ＢのシーケンスＳ２１でキャッシュミスではなくキャッシュヒットになった場合には、Ｈ−ＣＰＵの図５のキャッシュデータ格納部１０６にてキャッシュヒットした各データが、各応答データとして応答パケット生成部２０３に入力する。Ｈ−ＣＰＵの応答パケット生成部２０３は、取得した各応答データを、要求元のＣＰＵ（Ｒ−ＣＰＵ）に向けてＣＣ−ＮＵＭＡ応答バスに、各Ｒ−応答パケットとして送出する（シーケンスＳ２７（ＶＡＬ０）、Ｓ２７（ＶＡＬ１））。このＲ−応答パケットは、要求元のＣＰＵに到達した後、図５の応答パケット受信部１１３′に受信される。応答パケット受信部１１３′は、各Ｒ−応答パケットから各応答データを取り出し、図５の要求格納部１に引き渡す（シーケンスＳ２８（ＶＡＬ０）、Ｓ２８（ＶＡＬ１））。
【０１１８】
続いて、要求元のＣＰＵにおいて、要求格納部１からパイプライン制御部１０３を介して、Ｌ２−ＰＩＰＥ上で要求応答パイプが起動される（シーケンスＳ１０（ＶＡＬ０）、Ｓ１０（ＶＡＬ１））。各要求応答パイプにおいてアボート（中止）条件が発生しない場合には、パイプライン制御部１０３は、キャッシュデータ格納部１０６への各応答データの書き込みとキャッシュタグ部１０５の各タグの更新を実行する（シーケンスＳ１１（ＶＡＬ０）、Ｓ１１（ＶＡＬ１））。さらに、パイプライン制御部１０３は、要求元のＣＰＵコア部１００への各データ応答を行う（シーケンスＳ１２（ＶＡＬ０）、Ｓ１２（ＶＡＬ１））。なお、ＣＰＵコア部１００へのデータ応答は、メモリアクセス要求が、ロード要求であって、かつプリフェッチ要求でない場合に実行される。最後に、要求格納部１に、該当するメモリアクセス要求のエントリの開放を通知する（シーケンスＳ１３（ＶＡＬ０）、Ｓ１３（ＶＡＬ１））。これにより、要求格納部１の該当するエントリが開放される。
【０１１９】
図１０は、図５のＢＩＤエントリ変換回路５０６とＢＩＤ使用状態判定回路５０７の回路構成図（その２）である。図７の回路構成図（その１）と同様の機能を有する部分には同じ番号が付してある。
【０１２０】
図１０では、ＢＩＤ使用状態判定回路５０７が、８つのＢＩＤ値毎使用状態判定回路７０４′（ＢＩＤ＝０〜７）で構成される。そして、各ＢＩＤ値毎使用状態判定回路７０４′においてＢＩＤの使用状態を判定するときに、ＭＩＢ０とＭＩＢ１が保持されたレジスタ群７０５だけではなく、ＨＬＤ０とＨＬＤ１の２つのフラグが保持されたレジスタ群１００１も参照されて、オアゲート７０６′にて論理和がとられる。
【０１２１】
ＨＬＤ０、ＨＬＤ１フラグはそのＢＩＤの要求がパイプラインを流れている途中であることを示す。パイプラン結果が中止した場合、成功した場合いずれの場合であってもパイプラインが流れ終わったらこのフラグの値を０に落とす。
【０１２２】
要求元から当該キャッシュ制御部に要求される要求には以下の３種類があるものとする。
その３種類は以下のような違いによって制御される。
【０１２３】
・ＬＤ（Ｌｏａｄ：ロード）要求：要求元でのＬＤミスによって発生、Ｌ２キャッシュ制御部はデータを要求元に応答する。ＬＤ要求に対するデータの応答処理は必要、資源（要求格納部０）のビジー制御を行う。
・ＳＴＲＯＮＧ−ＰＦ（Ｓｔｒｏｎｇ−Ｐｒｅｆｅｔｃｈ：ストロング・プリフェッチ）要求：要求元でソフトウェアまたはハードウェアでプリフェッチを発生、Ｌ２キャッシュ制御部はデータを要求元に応答しない。ＳＴＲＯＮＧ−ＰＦ要求に対するデータの応答処理は必要、資源（要求格納部０）のビジー制御を行う。
・ＷＥＡＫ−ＰＦ（Ｗｅａｋ−Ｐｒｅｆｅｔｃｈ：ウィーク・プリフェッチ）要求：要求元でソフトウェアまたはハードウェアでプリフェッチを発生、Ｌ２キャッシュ制御部はデータを要求元に応答しない。ＷＥＡＫ−ＰＦ要求に対するデータの応答処理は任意、資源（要求格納部０）のビジー制御を行わない。
【０１２４】
ＬＤ要求は、要求元でのＬＤミスによって発生する。Ｌ２キャッシュ制御部はデータを要求元に応答する。ＬＤ要求に対するデータの応答処理は必要である。要求格納部０が溢れないようにビジー制御を行う。ビジー制御の例としては要求格納部０がフルになる直前にビジー通知を行う、カウンタで資源の使用数を管理する、などの方法がある。
【０１２５】
ＰＦ要求はソフトウェア指示、または、アクセスアドレスの履歴などによりハードウェアから生成される。ＳＴＲＯＮＧ−ＰＦ要求は要求元に対してプリフェッチしたデータを応答する処理が必要であり、処理を完了せずにロスト（消失）することがない。ＷＥＡＫ−ＰＦ要求はＳＴＲＯＮＧ−ＰＦ要求に対するデータの応答処理が任意であり、ＷＥＡＫ−ＰＦ要求処理時にハードウェア資源に余裕がある場合のみ実行される。プリフェッチには、キャッシュ性能を大幅に向上させる機能があるが、場合によってはムダなプリフェッチによりキャッシュ容量を実質的に減らしてしまう、データ転送帯域をムダに使ってしまうといった副作用があり、プリフェッチの確度によってＳＴＲＯＮＧ−ＰＦ要求とＷＥＡＫ−ＰＦ要求が使い分けられる。
【０１２６】
また、ＷＥＡＫ−ＰＦ要求はＬＤ要求、ＳＴＲＯＮＧ−ＰＦ要求の資源管理対象から除外される。例えば、要求格納部０がエントリ数分の要求で埋め尽くされ空きが存在しないが、要求の一部がＷＥＡＫ−ＰＦ要求である場合、そのエントリが開放されなくてもＬＤ要求またはＳＴＲＯＮＧ−ＰＦ要求によってパイプラインとは非同期に上書きされる場合があるものとする。
【０１２７】
図１１は、要求格納部０において、ＷＥＡＫ−ＰＦ要求が後続のＬＤ要求によって上書きされる場合のＢＩＤ制御を示す動作シーケンス図である。この動作例において、先行の要求が要求格納部０に格納される際に、ＢＩＤ＝１、後続の要求がそこに上書きされるときにＢＩＤ＝２が上書きされる。後続要求が上書きしたときにはすでにＢＩＤ＝１の要求はパイプラインに流れている状態であり、パイプライン処理でキャッシュミスを検出し、主記憶アクセスのためのフローが継続する。したがって、ＢＩＤ＝１はそのフローが完了するまで生存し続ける。ＨＬＤ０、ＨＬＤ１フラグはパイプラインに流れている状態のそのＢＩＤ＝１が生存していることを表示しており、要求格納部０においては、ＢＩＤ＝１のエントリは既に無効になっている。もし、ＨＬＤ０、ＨＬＤ１がなければＢＩＤ＝１がその間無効な状態となってしまい、新規の要求によって割り当てられてしまうという問題が発生する。図１０の構成では、各ＢＩＤ値毎使用状態判定回路７０４′（ＢＩＤ＝０〜７）において、ＨＬＤ０、ＨＬＤ１フラグの状態も判定することにより、上記の問題を回避することが可能となる。
【０１２８】
以上の述べた本実施形態のまとめを以下に説明する。
主記憶の転送性能を最大限に発揮するためには、ソフトウェアなどがキャッシュラインのサイズを超えるメモリアクセス要求の要求サイズをキャッシュラインサイズに分割して、キャッシュパイプライン処理を行い、分割された要求を再び主記憶装置に出力する場合に再構成して処理することが必要である。その再構成を補助するための１つの方法として、パイプライン処理時に、分割された各要求を関連付けさせるための識別ＩＤを付加してまとめられる各要求を結びつける。この識別ＩＤをＢＩＤと呼ぶ。
【０１２９】
実施形態の構成図を図５から８に示す。また１−ＣＰＵ構成時またはＣＣ−ＮＵＭＡ構成でのローカルＣＰＵメモリアクセス時のタイムチャートを図９Ａに示す。さらに、ＣＣ−ＮＵＭＡ構成でのリモートＣＰＵメモリアクセス時のタイムチャートを図９Ｂに示す。
【０１３０】
要求格納部０において、最大２個の関連付けられた要求を保持できるものとし、ＶＡＬ０、ＶＡＬ１で各要求が有効であることを表現する。さらに、各要求がエントリ要求ＰＡ［３９：８］に対してＰＡ［７］＝０，１の隣り合う１２８Ｂラインブロックに対応するアドレスを表現している。要求元（ＣＰＵコア）は、まとまった２５６Ｂデータを要求する場合、要求格納部０のエントリＶＡＬ０、ＶＡＬ１の両方をオンする形式で要求を発行する。要求 ＶＡＬ０、ＶＡＬ１の両方オンしたエントリからは極力バースト化するために連続してパイプ投入されるのが望ましい。また、各エントリはパイプラインを流れていることを示すＨＬＤフラグを有する。ＨＬＤフラグがオンしている場合はそのエントリに関してパイプライン投入を抑止して同じ要求でパイプラインをムダに埋めないように制御する。パイプ投入時には要求アドレスＰＡ［３９：７］、ＣＯＤＥ(要求の種別を表現する)、ＢＩＤをパイプに投入する。ＢＩＤは要求格納部１に要求の付随情報としてＰＡ、ＣＯＤＥと共に格納された後、主記憶制御部に要求ＰＡ、ＣＯＤＥと共に発行される。ローカルメモリへの要求アクセスの場合は、要求格納部１から主記憶制御部へ要求を発行する際に、ＢＩＤが一致する要求同士を検出したら要求パケットを連結したフォーマットで送出する。主記憶制御部では、連結されたＢＩＤが一致する要求をまとめてバーストアクセスを行う。応答パケットは新規に定義されたものでなくてもよく、連結されない通常の２つの要求に対する２つの応答というフォーマットで応答すれば十分である。
【０１３１】
これにより、パイプライン処理部を中心とするキャッシュ制御系において最適なキャッシュラインサイズを維持しながら、かつキャッシュ制御系には影響を与えずに最適な主記憶アクセスサイズを実現できることになる。
【０１３２】
また、ＣＣ−ＮＵＭＡ構成におけるリモートメモリへの要求アクセスの場合は、要求格納部１から、ＣＣ−ＮＵＭＡ要求バスを経由してＲ−要求パケットを送出するが、その際にも連結されたパケットフォーマットでメモリを管理するＨＯＭＥ−ＣＰＵ（Ｈ−ＣＰＵ）へＲ−要求を送出する。Ｒ−要求を受信したＨＯＭＥ−ＣＰＵは再びキャッシュラインサイズ単位に分割してＨ−ＣＰＵのパイプライン処理を行う。パイプラインの結果キャッシュミスだった場合には、Ｈ−ＣＰＵの要求格納部１へ格納され、ＢＩＤの一致を検出したらローカルメモリの場合と同様に連結されたフォーマットで主記憶制御部へ要求パケットを発行する。主記憶からの応答を受信すると応答パケットを要求元ＣＰＵへ送出する。要求元ＣＰＵでは応答パケットを受信するとローカルメモリの場合と同様に応答パイプ処理を行い、全体フローが完結する。
【０１３３】
以上のようにＣＣ−ＮＵＭＡ構成におけるリモートメモリアクセス時にも本実施形態の効果が得られることになる。
【０１３４】
要求格納部０で割り当てられるＢＩＤは、要求パイプライン処理によってキャッシュミスを検出し、要求格納部０のエントリが解放された後、要求格納部１に格納された場合に、ＢＩＤは継続して生存しなければならない。このため、もし要求格納部０のエントリ番号をそのままＢＩＤとして使用すると主記憶へのアクセス処理が完了してＢＩＤ解放までに該当要求格納部のエントリが使用できなくなってしまう。したがって、ＢＩＤは要求格納部０のエントリとは別個のＩＤテーブルで管理すべきである。
【０１３５】
そこで、要求格納部０のエントリＩＤ→ＢＩＤ変換回路を以下のように構成する。
要求格納部０における各エントリは１Ｂｕｒｓｔ（バースト）要求におけるパイプライン要求数（本実施形態では２)分のＶａｌｉｄ（バリッド：有効）表示信号および割り当てられたＢＩＤ等を有する。エントリ自体が有効であることは、全Ｖａｌｉｄ表示信号のオアによって示される。有効なエントリが保持するＢＩＤのデコード値をオアすることで、エントリに割り当てられたＢＩＤテーブル値を得ることができる。この方法の利点の１つは、ＢＩＤテーブル制御部において特別なフラグレジスタ等をもつ必要がなく、エントリＩＤ−ＢＩＤ間で矛盾のない制御が保証されることである。
【０１３６】
要求グループのいずれかがパイプ処理でキャッシュミスを検出した場合には、要求格納部１にその要求が格納され、主記憶にリード要求が発行されるとともに要求格納部０を開放する。ひきつづきそのＢＩＤを有効とするために、要求格納部１に格納されている(=主記憶にフェッチ要求が仕掛り中である)ことを示すためのＭＩＢフラグをオンする。ＭＩＢフラグはＢＩＤの数×グループ数(本実施形態では８×２で説明したが、３２×２等でもよい)持つことにより、主記憶への要求仕掛り中であるためにＢＩＤがまだ有効である(新規に割り当ててはならない)ことを示す。
【０１３７】
有効なＢＩＤは要求格納部０のエントリＩＤ→ＢＩＤ変換回路の出力とＭＩＢフラグのオアによって表現されることになる。
【０１３８】
要求元(ＣＰＵコア)から新規要求が発行された場合、有効でない(空きの)ＢＩＤから新規要求に割り当てられるＢＩＤが選択され要求ＰＡ等とともにエントリにセットされる。
【０１３９】
ＢＩＤの数は、要求格納部０および要求格納部１の数の合計数程度用意すれば十分である。もし実装上の都合などから不足する場合には、例えばＢＩＤ=０を無効なＩＤ(主記憶装置で一致検出してバースト処理することを禁止する)のようにして、空きＩＤが存在しない場合はバースト処理そのものを禁止するといった方法が考えられる。
【０１４０】
また、キャッシュが複数の要求元（ＣＰＵコア）によって共有され、要求格納部０が各要求コアに対応するような構成である場合を考える。この場合、ＢＩＤは主記憶装置において要求元による区別を含めなければならない。したがって、パイプライン投入部において要求元を区別するビット（例えば要求元コア数が４個であれば２ビット）を付加し、主記憶制御部にＢＩＤを供給する必要がある。
【０１４１】
さらにＣＣ−ＮＵＭＡ構成の場合は、要求ＣＰＵ毎にＢｉｒｓｔ＿ＩＤを区別する必要があるため、要求ＣＰＵを区別するビットを同様に付加する必要がある。
【０１４２】
他実施形態の構成図を図１０に示す。
図１１のタイムチャートは、リモートＣＰＵ、ＭＩＢ、ＨＬＤを含む場合を示す。
構成上の違いは、要求格納部０におけるＢＩＤテーブルにおいてＭＩＢ０、ＭＩＢ１フラグに加えてＨＬＤ０、ＨＬＤ１フラグを追加していることである。
【０１４３】
図１２は、図５の要求格納部０内のエントリ情報格納部５０３のより詳細な構成例を示す図である。図１２の構成例では、図６の場合と同様に、エントリは、エントリ０からエントリ３までの４エントリから構成される。各エントリは、ＶＡＬ０、ＶＡＬ１、ＨＬＤ、ＰＡ、ＣＯＤＥ、ＢＩＤの６つの情報を記憶する。図６や図７、図１０等で前述したように、エントリ情報格納部５０３の各エントリの有効／無効は、エントリ間プライオリティ選択回路５０５やＢＩＤエントリ変換回路５０６で判定される。そして、この有効／無効は、エントリ情報格納部５０３内の各エントリ毎に、オアゲートがＶＡＬ０とＶＡＬ１のフラグデータの論理和をとることにより、得ている。このとき、図１２の回路構成例では、さらに各エントリ毎に設けられるアンドゲート１２０１が、オアゲート６０１の出力と、図５の空きエントリ検出回路５０４から出力される要求格納イネーブル信号の論性積をとって、有効／無効情報として出力している。これにより、より正確な有効／無効判定を行うことが可能となる。
【０１４４】
図１３Ａ、図１３Ｂ、図１３Ｃは、図７で示したＢＩＤエントリ変換回路５０６の具体的な回路構成例を示す図である。図１３Ａ、図１３Ｂ、図１３Ｃにおいて、図７の場合と同様の機能を有する回路要素には同じ番号を付してある。また、図１３Ａ、図１３Ｂ、図１３Ｃに示されるアンドゲート７０２群の各回路記号の中に記載してあるハイフンで結ばれた数字は、「エントリ番号−ＢＩＤ」を示している。例えば一番上の「０−０」が記載されたアンドゲート７０２は、０番のエントリでＢＩＤ＝０のときにオンとなる。また、その次の「１−０」が記載されたアンドゲート７０２は、１番のエントリでＢＩＤ＝０のときにオンとなる。
【０１４５】
いま例えば、図１２のエントリ０に有効なメモリアクセス要求が保持されている場合、次のように動作する。図１２のエントリ０のアンドゲート１２０１の出力が、図１３Ａのアンドゲート７０２（０−０）、７０２（０−１）、７０２（０−２）をオン可能な状態にする。同時に、図１３Ｂのアンドゲート７０２（０−３）、７０２（０−４）、７０２（０−５）をオン可能な状態にする。同時に、図１３Ｃのアンドゲート７０２（０−６）および７０２（０−７）をオン可能な状態にする。そして、図１３Ｂのデコーダ７０１（エントリ０）が、図１２のエントリ０のＢＩＤの３ビット値に応じて、上記８つのアンドゲート７０２（０−ｘ）（ｘ＝０〜７）の何れかをオンにする。この結果、図１３Ａの７０３（ＢＩＤ０）、７０３（ＢＩＤ１）、７０３（ＢＩＤ２）、図１３Ｂの７０３（ＢＩＤ３）、７０３（ＢＩＤ４）、７０３（ＢＩＤ５）、図１３Ｃの７０３（ＢＩＤ６）、７０３（ＢＩＤ７）の何れかの出力がオンとなる。この出力が、該当するＢＩＤに対応する図７のＢＩＤ値毎使用状態判定回路７０４または図１０のＢＩＤ値毎使用状態判定回路７０４′内のオアゲートをオンにする。
【０１４６】
図１２のエントリ１に有効なメモリアクセス要求が保持されている場合、次のように動作する。図１２のエントリ１のアンドゲート１２０１の出力が、図１３Ａのアンドゲート７０２（１−０）、７０２（１−１）、７０２（１−２）をオン可能な状態にする。同時に、図１３Ｂのアンドゲート７０２（１−３）、７０２（１−４）、７０２（１−５）をオン可能な状態にする。同時に、図１３Ｃのアンドゲート７０２（１−６）および７０２（１−７）をオン可能な状態にする。そして、図１３Ｂのデコーダ７０１（エントリ１）が、図１２のエントリ１のＢＩＤの３ビット値に応じて、上記８つのアンドゲート７０２（１−ｘ）（ｘ＝０〜７）の何れかをオンにする。この結果、図１３Ａの７０３（ＢＩＤ０）、７０３（ＢＩＤ１）、７０３（ＢＩＤ２）、図１３Ｂの７０３（ＢＩＤ３）、７０３（ＢＩＤ４）、７０３（ＢＩＤ５）、図１３Ｃの７０３（ＢＩＤ６）、７０３（ＢＩＤ７）の何れかの出力がオンとなる。この出力が、該当するＢＩＤに対応する図７のＢＩＤ値毎使用状態判定回路７０４または図１０のＢＩＤ値毎使用状態判定回路７０４′内のオアゲートをオンにする。
【０１４７】
図１２のエントリ２に有効なメモリアクセス要求が保持されている場合、次のように動作する。図１２のエントリ２のアンドゲート１２０１の出力が、図１３Ａのアンドゲート７０２（２−０）、７０２（２−１）、７０２（２−２）をオン可能な状態にする。同時に、図１３Ｂのアンドゲート７０２（２−３）、７０２（２−４）、７０２（２−５）をオン可能な状態にする。同時に、図１３Ｃのアンドゲート７０２（２−６）および７０２（２−７）をオン可能な状態にする。そして、図１３Ｂのデコーダ７０１（エントリ２）が、図１２のエントリ２のＢＩＤの３ビット値に応じて、上記８つのアンドゲート７０２（２−ｘ）（ｘ＝０〜７）の何れかをオンにする。この結果、図１３Ａの７０３（ＢＩＤ０）、７０３（ＢＩＤ１）、７０３（ＢＩＤ２）、図１３Ｂの７０３（ＢＩＤ３）、７０３（ＢＩＤ４）、７０３（ＢＩＤ５）、図１３Ｃの７０３（ＢＩＤ６）、７０３（ＢＩＤ７）の何れかの出力がオンとなる。この出力が、該当するＢＩＤに対応する図７のＢＩＤ値毎使用状態判定回路７０４または図１０のＢＩＤ値毎使用状態判定回路７０４′内のオアゲートをオンにする。
【０１４８】
図１２のエントリ３に有効なメモリアクセス要求が保持されている場合、次のように動作する。図１２のエントリ１のアンドゲート１２０１の出力が、図１３Ａのアンドゲート７０２（３−０）、７０２（３−１）、７０２（３−２）をオン可能な状態にする。同時に、図１３Ｂのアンドゲート７０２（３−３）、７０２（３−４）、７０２（３−５）をオン可能な状態にする。同時に、図１３Ｃのアンドゲート７０２（３−６）および７０２（３−７）をオン可能な状態にする。そして、図１３Ｂのデコーダ７０１（エントリ３）が、図１２のエントリ３のＢＩＤの３ビット値に応じて、上記８つのアンドゲート７０２（３−ｘ）（ｘ＝０〜７）の何れかをオンにする。この結果、図１３Ａの７０３（ＢＩＤ０）、７０３（ＢＩＤ１）、７０３（ＢＩＤ２）、図１３Ｂの７０３（ＢＩＤ３）、７０３（ＢＩＤ４）、７０３（ＢＩＤ５）、図１３Ｃの７０３（ＢＩＤ６）、７０３（ＢＩＤ７）の何れかの出力がオンとなる。この出力が、該当するＢＩＤに対応する図７のＢＩＤ値毎使用状態判定回路７０４または図１０のＢＩＤ値毎使用状態判定回路７０４′内のオアゲート７０７をオンにする。
【０１４９】
以上の図１３Ａ、図１３Ｂ、図１３Ｃに示される回路構成により、図５や図１２のエントリ情報格納部５０３のいずれかのエントリにＢＩＤ０からＢＩＤ７のいずれかのＢＩＤが有効に格納されている場合に、次のように動作する。図７のＢＩＤ使用状態判定回路５０７において、ＢＩＤ０からＢＩＤ７に対応するＢＩＤ値毎使用状態判定回路７０４′内のオアゲート７０７のうち、エントリ情報格納部５０３のいずれかのエントリに格納されているＢＩＤ値に対応するものをオンにする。これにより、エントリ情報格納部５０３においてＢＩＤが使用されていることを、図５や図７の空きＩＤ検出回路５０８に通知することができ、空きＩＤ検出回路５０８は、これに基づいて、空き状態のＢＩＤを検出できる。
【０１５０】
図１４Ａ、図１４Ｂ、図１４Ｃ、図１４Ｄ、図１４Ｅ、図１４Ｆ、図１４Ｇ、および図１４Ｈは、図１０のＢＩＤ使用状態判定回路５０７のさらに詳細な回路構成図である。それぞれ、ＢＩＤ＝０、１、２、３、４、５、６、および７に対応するＢＩＤ値毎使用状態判定回路７０４′の回路構成例を示すものである。
【０１５１】
図１４Ａ〜図１４Ｈで、ＨＬＤ０とＨＬ１のフラグを保持するレジスタ群１００１（ＢＩＤ０）について説明する。
【０１５２】
レジスタ群１００１において、ＢＩＤ＝ｉのＨＬＤ０側は、ＢＩＤ＝ｉ、ＶＡＬ０＝１（ＰＡ［７］＝０）のエントリのパイプライン制御部１０３への投入タイミングでセット（ｓｅｔ）される。なお、ｉは、図１４Ａなら０、図１４Ｂなら１、図１４Ｃなら２、図１４Ｄなら３、図１４Ｅなら４、図１４Ｆなら５、図１４Ｇなら６、図１４Ｈなら７である。以下、ｉがでてきたときは同様である。ＢＩＤ＝ｉ、ＶＡＬ０＝１（ＰＡ［７］＝０）のメモリアクセス要求の投入タイミング信号１４０１は、図５のエントリ間プライオリティ選択回路５０５から得ることができる。また、ＢＩＤ＝ｉのＨＬＤ０側は、パイプアドレスのＰＡ［７］（７ビット目）＝０で、パイプライン終了時のＢＩＤデコード値１４０７＝ｉで、要求格納部０の開放通知がオンのときに、アンドゲート１４００Ａの出力によりリセットされる。パイプアドレスのＰＡ［７］は、パイプライン制御部１０３が出力するパイプアドレスから識別できる。パイプライン終了時のＢＩＤデコード値１４０７は、図１４Ｈのデコーダ１４０６が、パイプライン制御部１０３の３ビットＢＩＤ出力に基づいてデコードする。要求格納部０の開放通知は、パイプライン制御部１０３から出力される。例えば、図１１の（１−２）の終了タイミングである。
【０１５３】
レジスタ群１００１において、ＢＩＤ＝ｉのＨＬＤ１側は、ＢＩＤ＝ｉ、ＶＡＬ１＝１（ＰＡ［７］＝１）のエントリのパイプライン制御部１０３への投入タイミングでセット（ｓｅｔ）される。ＢＩＤ＝ｉ、ＶＡＬ１＝１（ＰＡ［７］＝１）のメモリアクセス要求の投入タイミングは、図５のエントリ間プライオリティ選択回路５０５から得ることができる。また、ＢＩＤ＝ｉのＨＬＤ１側は、パイプアドレスのＰＡ［７］（７ビット目）＝１で、パイプライン終了時のＢＩＤデコード値１４０７＝ｉで、要求格納部０の開放通知がオンのときに、アンドゲート１４００Ｂの出力によりリセットされる。例えば、図１１の（１−３）の終了タイミングである。
【０１５４】
ＭＩＢ０とＭＩＢ１のフラグを保持するレジスタ群７０５（ＢＩＤ０）について説明する。
レジスタ群７０５で、ＢＩＤ＝ｉのＭＩＢ０側は、パイプアドレスのＰＡ［７］（７ビット目）＝０で、パイプライン終了時のＢＩＤデコード値１４０７＝ｉで、要求格納部１エントリ獲得通知１４がオンのときに、アンドゲート１４００Ｃによってセットされる。要求格納部１エントリ獲得通知１４は、図５のパイプライン制御部１０３が出力する。このようにＭＩＢ０は、該当するＢＩＤを有するメモリアクセス要求がキャッシュミスしてそのメモリアクセス要求を格納する要求格納部１のエントリが獲得されたタイミングでセットされる。例えば図１１の（１−４）の開始タイミングである。また、ＢＩＤ＝ｉのＭＩＢ０側は、パイプアドレスのＰＡ［７］（７ビット目）＝０で、パイプライン終了時のＢＩＤデコード値１４０７＝ｉで、要求格納部１の開放通知がオンのときに、アンドゲート１４００Ｅによってリセットされる。要求格納部１の開放通知は、パイプライン制御部１０３から出力される。例えば図１１の（１−４）の終了タイミングである。
【０１５５】
レジスタ群７０５で、ＢＩＤ＝ｉのＭＩＢ１側は、パイプアドレスのＰＡ［７］（７ビット目）＝１で、パイプライン終了時のＢＩＤデコード値１４０７＝ｉで、要求格納部１エントリ獲得通知１４がオンのときに、アンドゲート１４００Ｄによってセットされる。このようにＭＩＢ１は、該当するＢＩＤを有するメモリアクセス要求がキャッシュミスしてそのメモリアクセス要求を格納する要求格納部１のエントリが獲得されたタイミングでセットされる。例えば図１１の（１−５）の開始タイミングである。また、ＢＩＤ＝ｉのＭＩＢ１側は、パイプアドレスのＰＡ［７］（７ビット目）＝１で、パイプライン終了時のＢＩＤデコード値１４０７＝ｉで、要求格納部１の開放通知がオンのときに、アンドゲート１４００Ｆによってリセットされる。例えば図１１の（１−５）の終了タイミングである。
【０１５６】
このように、ＭＩＢ０やＭＩＢ１は、該当するＢＩＤのメモリアクセス要求が要求格納部１に留まっている間オンとなる。
【０１５７】
上述のようにして、ＭＩＢ０とＭＩＢ１が保持されたレジスタ群７０５だけではなく、ＨＬＤ０とＨＬＤ１の２つのフラグが保持されたレジスタ群１００１も参照されて、オアゲート７０６′にて論理和がとられ、各エントリの使用状態が判定される。
【０１５８】
以上のように、本実施形態では、パイプライン処理の使用状態にあるメモリアクセス要求のＢＩＤを避けて、空き状態のＢＩＤを検索することが可能となる。
【０１５９】
図１５Ａ、図１５Ｂ、図１５Ｃ、および図１５Ｄは、図７または図１０のＢＩＤエントリ変換回路５０６とＢＩＤ使用状態判定回路５０７とからなるＢＩＤ割当回路の変形例を示す回路構成図であり、ＢＩＤテーブル回路の回路構成例を示す図である。これらの図において、１５００（ＢＩＤ０〜ＢＩＤ７）よりなる回路ブロック部分は、ＢＩＤ０〜ＢＩＤ７のそれぞれに対して処理を行う部分であり、同様の構成を有するため、ＢＩＤ０の回路構成についてのみ説明を行う。
【０１６０】
例えば図７に示されるＢＩＤエントリ変換回路５０６のＢＩＤ０〜ＢＩＤ７に対応する８個のオアゲート７０３の各出力が、図１５Ａ、Ｂ、ＣのＢＩＤ０〜ＢＩＤ７の各回路ブロック１５００のオアゲート１５０５および１５０７へ入力される。また、図１５Ａ、Ｂ、ＣのＢＩＤ０〜ＢＩＤ７の各回路ブロック１５００において、ＶＡＬ０とＶＡＬ１の各レジスタ群１５０１の出力のオアをとるオアゲート１５０８の出力は、図１４Ａ〜ＨのＢＩＤ使用状態判定回路５０７内の各オアゲート７０７に入力される。
【０１６１】
図１５Ｄで、図５の空きＩＤ検出回路５０８から出力された３ビットの新規割り当てＢＩＤ（図中「新規割り当てＢｕｒｓｔ＿ＩＤ［２：０］」と表記）は、デコーダ１５１１に入力する。そして、デコーダ１５１１は、３ビットの入力値に対していずれか１本の出力のみがオンとなる８個の信号を出力する。デコーダ１５１１からの８本の出力信号線の各々は、図１５Ａ、Ｂ、ＣのＢＩＤ０〜ＢＩＤ７の各回路ブロック１５００内のアンドゲート１５０２、１５０３に入力する。また、図１５Ａ、Ｂ、ＣのＢＩＤ０〜ＢＩＤ７の各回路ブロック１５００内のアンドゲート１５０２には、図５または図１２Ａの空きエントリ検出回路５０４からエントリ情報格納部５０３に入力してくるＶＡＬ０信号が入力する。同様に、図１５Ａ、Ｂ、ＣのＢＩＤ０〜ＢＩＤ７の各回路ブロック１５００内のアンドゲート１５０３には、図５または図１２Ａの空きエントリ検出回路５０４からエントリ情報格納部５０３に入力してくるＶＡＬ１信号が入力する。ＶＡＬ０信号は、ＰＡ［７］＝０の要求に対応し、ＶＡＬ１信号はＰＡ［７］＝１の要求に対応する。レジスタ群１５０１のＶＡＬ０とＶＡＬ１は、空きエントリ検出回路５０４からエントリ情報格納部５０３内の空きエントリに新たにメモリアクセス要求が格納されるときにセットされる。具体的には、新規要求のエントリ情報格納部５０３への格納時に、図１５Ｄのデコーダ１５１１の出力１５１４に基づいて、空きＩＤ検出回路５０８で新規に獲得されたＢＩＤに対応する回路ブロック１５００内のアンドゲート１５０２と１５０３がオン可能になる。そして、空きエントリ検出回路５０４から出力されたメモリアクセス要求のＶＡＬ０、ＶＡＬ１信号の値が、獲得されたＢＩＤに対応する回路ブロック１５００内のアンドゲート１５０２と１５０３を介して、ＶＡＬ０とＶＡＬ１のレジスタ群１５０１にセットされる。
【０１６２】
一方、図１５Ｄで、図５のパイプライン制御部１０３からのパイプライン処理完了時の３ビットのＢＩＤ（図中「パイプ完了時Ｂｕｒｓｔ＿ＩＤ［２：０］」と表記）は、デコーダ１５１３に入力する。そして、デコーダ１５１３は、３ビットの入力値に対していずれか１本の出力のみがオンとなる８個の信号を出力する。デコーダ１５１３からの８本の出力信号線の各々は、図１５Ａ、Ｂ、ＣのＢＩＤ０〜ＢＩＤ７の各回路ブロック１５００内のアンドゲート１５０４、１５０６に入力する。さらに、図１５Ａ、Ｂ、ＣのＢＩＤ０〜ＢＩＤ７の各回路ブロック１５００内のアンドゲート１５０４は、図５のパイプライン制御部１０３からのパイプライン処理完了時のメモリアクセス要求の７ビット目の物理アドレスＰＡ［７］が０のときにオン可能となる。一方、図１５Ａ、Ｂ、ＣのＢＩＤ０〜ＢＩＤ７の各回路ブロック１５００内のアンドゲート１５０６は、図５のパイプライン制御部１０３からのパイプライン処理完了時のメモリアクセス要求の７ビット目の物理アドレスＰＡ［７］が０のときにオン可能となる。さらに、図１５Ａ、Ｂ、ＣのＢＩＤ０〜ＢＩＤ７の各回路ブロック１５００内のアンドゲート１５０４と１５０６は、図５のパイプライン制御部１０３からの開放指示の信号１５１５によりオン可能となる。以上の構成により、レジスタ群１５０１内のＶＡＬ０およびＶＡＬ１は、対応するＢＩＤの要求が要求パイプをアボートせずに完了し要求格納部０から開放されたときに、アンドゲート１５０４およびオアゲート１５０５またはアンドゲート１５０６およびオアゲート１５０７を介してリセットされる。
【０１６３】
さらに、図５のＢＩＤエントリ変換回路５０６内のいずれかのＢＩＤのアンドゲート７０３（図１３Ａ、図１３Ｂ）がオンになり、そのＢＩＤで使用中が検出されると、そのＢＩＤに対応する回路ブロック１５００内のオアゲート１５０５と１５０７がオンになる。この結果、そのＢＩＤに対応する回路ブロック１５００内のレジスタ群１５０１のＶＡＬ０およびＶＡＬ１がリセットされる。
【０１６４】
要求格納部０に存在するＷＥＡＫ−ＰＦが別の要求で上書きされたときに、上書き前のＢＩＤを開放する必要がある。そこで、上述のようにＢＩＤエントリ変換回路５０６の出力がオアゲート１５０５および１５０７に加わることにより、上書き時にＢＩＤが有効になっていたときにはＶＡＬ０およびＶＡＬ１がリセットされる。これにより、回路ブロック１５００の後段に接続されるＢＩＤ使用状態判定回路５０７への入力がオフとなって、いままで使用状態にあった例えばＢＩＤ０が開放される。
【０１６５】
以上の構成により、要求格納部０でのＢＩＤの確保および開放に伴って、ＢＩＤの空き情報を管理することができる。本実施形態では、メモリアクセス要求が、要求格納部０で確保・開放される時点、パイプライン制御部１０３内のパイプライン処理に投入・開放される時点、キャッシュミス時に要求格納部１に格納・開放される時点等、所望のタイミングでＢＩＤを管理可能となる。
【０１６６】
図１６Ａ、図１６Ｂ、図１６Ｃ、図１６Ｄ、図１６Ｅ、および図１６Ｆは、本実施形態において使用するパケットフォーマットの例を示す図である。図１６Ａは、要求パケット（データ無し）と応答パケット（データ無し）のフォーマット例を示す。図１６Ｂおよび図１６Ｃは、応答パケット（１２８バイトデータ付き）の例を示す。図１６Ｄ、図１６Ｅ、図１６Ｆは、応答パケット（２５６バイトデータ付き）の例を示す。
【０１６７】
これらの図において、パケットバスは、そのパケットの位置情報を示すＴＡＧ［２：０］と８バイト幅のＢＵＳ［６３：０］によって構成されるものとする。
【０１６８】
Ｃｙｃｌｅは、図に示したのみで、パケット信号には含まれない。各図において、パケットの何サイクル目がどのような情報なのかを示している。
【０１６９】
以下のような規則でＴＡＧの値を表示し、パケット受信者のパケット受信制御の基準を示している。
ＴＡＧ＝０：パケットは無効である。
ＴＡＧ＝１：複数サイクルで構成されるパケットの先頭である。
ＴＡＧ＝２：複数サイクルで構成されるパケットの先頭、末尾以外である。
ＴＡＧ＝３：複数サイクルで構成されるパケットの末尾である。
ＴＡＧ＝５：１サイクルパケットである。
【０１７０】
以下、図１６Ａ〜図１６Ｆのパケットフォーマット例中に示されている主な内容を説明する。
ＣＯＤＥ［７：０］：どのような種類の要求、または、要求に対する完了応答であるかを示す。
【０１７１】
例えば以下のようなフェッチ要求とその完了応答の例を挙げる。
ＣＯＤＥ＝１  ＭＩ−ＳＨ（Ｈ−ＣＰＵに対する共有型フェッチ要求）
ＣＯＤＥ＝２  ＭＩ−ＥＸ（Ｈ−ＣＰＵに対する排他型（ストア可能型）フェッチ要求）
ＣＯＤＥ＝８０  ＭＳ−ＦＣＨ（主記憶に対するフェッチ要求）
ＣＯＤＥ＝４１  ＭＩ−ＳＨ−ＣＰＬＴ（ＭＩ−ＳＨに対する応答、データを伴う）
ＣＯＤＥ＝４２  ＭＩ−ＥＸ−ＣＰＬＴ（ＭＩ−ＥＸに対する応答、データを伴う）
ＣＯＤＥ−Ｃ０  ＭＳ−ＦＣＨ−ＣＰＬＴ（ＭＳ−ＦＣＨに対する応答、データを伴う）
【０１７２】
ＴＧＴ＿ＩＤ：ＣＰＵ間のパケットの場合のみ意味を持ち、宛先ＣＰＵ＿ＩＤを指定する。
ＢＵＲＳＴ＿ＩＤ（＝ＲＥＱＩＤ）：ＢＵＲＳＴ＿ＩＤを指定する。この場合ＢＵＲＳＴ＿ＩＤを要求識別ＩＤ（ＲＥＱＩＤ）としての機能も持たせる。ＢＵＲＳＴ＿ＩＤをＲＥＱ＿ＩＤとして用いない実施例とする場合は、別にＲＥＱ＿ＩＤ専用フィールドを持たせる必要がある。ＢＵＲＳＴ＿ＩＤはその応答が行われるまで、唯一性が保証される制御となっているため、ＲＥＱ＿ＩＤとして使用するのは問題なく、むしろその方が好適である。
【０１７３】
ＰＡ［３９：８］：要求ＰＡを２５６バイト単位で指定する。２５６バイトのうちどの１２８バイトなのか、あるいは両方なのかは、ＶＡＬ０、ＶＡＬ１フィールドで示す。
【０１７４】
ＶＡＬ０、ＶＡＬ１：要求パケットにおいては、ＰＡ［３９：８］で示された２５６バイトのうちどの１２８バイトブロックを要求するのかを示す。応答パケットにおいては、ＢＵＲＳＴ＿ＩＤ（＝ＲＥＱ＿ＩＤ）で要求されたブロックのうち、どの１２８バイトブロックを要求するのかを示す。
【０１７５】
ＶＡＬ０ＶＡＬ１＝００：指定してはならない。
ＶＡＬ０ＶＡＬ１＝１０：ＰＡ［７］＝０のブロックを要求(応答)する。
ＶＡＬ０ＶＡＬ１＝０１：ＰＡ［７］＝１のブロックを要求(応答)する。
ＶＡＬ０ＶＡＬ１＝１１：ＰＡ［７］＝０と１の両方のブロック（２５６バイト）を要求（応答）する。
【０１７６】
また、要求で指定されなかったブロックを応答してはならない。つまり、ＶＡＬ０ＶＡＬ１＝１０（０１）の要求に対しては、ＶＡＬ０ＶＡＬ１＝１０（０１）の応答のみが許可される。
【０１７７】
ＶＡＬ０ＶＡＬ１＝１１の要求に対しては、ＶＡＬ０ＶＡＬ１＝１１の応答を１回行っても良いし、ＶＡＬ０ＶＡＬ１＝１０の応答とＶＡＬ０ＶＡＬ１＝０１の応答を１回ずつ別々に応答しても良い。データ応答を受信するとその後の処理は１２８バイト単位であるから、２５６バイト単位でまとまっている必要は余り無い。ＶＡＬ０ＶＡＬ１＝１０とＶＡＬ０ＶＡＬ１＝０１が連続する形で十分である。
【０１７８】
ＤＴ：パケットがデータ付きであることを示す。データサイズはＶＡＬ０ＶＡＬ１で決定される。
ＡＸ：要求がアドレス例外であることを示す。
ＳＴＳ［１：０］：応答されるデータブロックのキャッシュステートを表す。応答パイプ処理の際に、ＳＴＳ［１：０］で示されるキャッシュＳＴＡＴＥを登録する。
ＳＴＳ＝００：Ｉ（Ｉｎｖａｌｉｄａｔｅ）
ＳＴＳ＝０１：Ｓ（Ｓｈａｒｅｄ）
ＳＴＳ＝１０：Ｍ（Ｍｏｄｉｆｉｅｄ）
ＳＴＳ＝１１：Ｅ（Ｅｘｃｌｕｓｉｖｅ）
ＤＡＴＡｘｘ［７：０］：応答データを乗せる。
【０１７９】
ここで、Ｉ（Ｉｎｖａｌｉｄａｔｅ）ステートは、当該キャッシュラインが保持するデータが無効であることを示す。Ｓ（Ｓｈａｒｅｄ）ステートは、当該キャッシュラインが保持するデータと同じ内容のデータが、他のキャッシュメモリのキャッシュラインにも保持されている旨を示す。Ｍ（Ｍｏｄｉｆｉｅｄ）ステートは、当該キャッシュラインが保持するデータが、対応する主記憶装置が保持するデータから変更されている旨を示す。Ｅ（Ｅｘｃｌｕｓｉｖｅ）ステートは、当該キャッシュラインが保持するデータが他のキャッシュメモリには保持されていないが、対応する主記憶装置が保持するデータと一致する旨を示す。
【０１８０】
以上説明した実施形態（図５）では、主記憶制御部１０７が別チップの構成を有していたが、図５の構成中で１つのチップに含まれて構成されるものであってもよい。
【０１８１】
本実施形態では、ＣＰＵコア部１００から要求格納部０に対して、キャッシュメモリの処理単位（例えば１２８バイト）の整数倍（例えば２倍）の処理単位（例えば２５６バイト）のメモリアクセス要求を、１つのエントリにまとめて格納できる。そして、パイプライン制御部１０３への投入時には、そのエントリに格納されたメモリアクセス要求を、キャッシュメモリの処理単位（例えば１２８バイト）の２つの要求に分離して、投入できる。このとき、分離された例えば２つの要求はＢＩＤによって関連付けることができる。このようにして、パイプライン制御部１０３内では、キャッシュメモリの処理単位でキャッシュアクセスを実行することが可能となる。さらに、キャッシュミス発生時に、要求格納部１から要求パケット生成部１１１′を介してＬ−ＣＰＵ内の主記憶制御部１０７またはＨ−ＣＰＵに向けて主記憶要求パケットまたはＲ−要求パケットが送出されるときに、次のような制御が実行される。要求パケット生成部１１１′は、要求格納部１の各エントリ中で、ＢＩＤが一致するメモリアクセス要求同士を連結した主記憶要求パケットまたはＲ−要求パケットを生成して送出する。この結果、Ｌ−ＣＰＵの主記憶制御部１０７内の特には図示しない要求格納部２またはＨ−ＣＰＵにおいては、主記憶装置であるＤＩＭＭ１１０の処理単位（例えば２５６バイト）でメモリアクセス要求が発行されることになり、効率的な主記憶アクセスを実現することが可能となる。
【図１Ａ】
2012172694.tif 000003
【図１Ｂ】
2012172694.tif 000004
【図２】
2012172694.tif 000005
【図３Ａ】
2012172694.tif 000006
【図３Ｂ】
2012172694.tif 000007
【図４】
2012172694.tif 000008
【図５】
2012172694.tif 000009
【図６】
2012172694.tif 000010
【図７】
2012172694.tif 000011
【図８】
2012172694.tif 000012
【図９Ａ】
2012172694.tif 000013
【図９Ｂ】
2012172694.tif 000014
【図１０】
2012172694.tif 000015
【図１１】
2012172694.tif 000016
【図１２】
2012172694.tif 000017
【図１３Ａ】
2012172694.tif 000018
【図１３Ｂ】
2012172694.tif 000019
【図１３Ｃ】
2012172694.tif 000020
【図１４Ａ】
2012172694.tif 000021
【図１４Ｂ】
2012172694.tif 000022
【図１４Ｃ】
2012172694.tif 000023
【図１４Ｄ】
2012172694.tif 000024
【図１４Ｅ】
2012172694.tif 000025
【図１４Ｆ】
2012172694.tif 000026
【図１４Ｇ】
2012172694.tif 000027
【図１４Ｈ】
2012172694.tif 000028
【図１５Ａ】
2012172694.tif 000029
【図１５Ｂ】
2012172694.tif 000030
【図１５Ｃ】
2012172694.tif 000031
【図１５Ｄ】
2012172694.tif 000032
【図１６Ａ】
2012172694.tif 000033
【図１６Ｂ】
2012172694.tif 000034
【図１６Ｃ】
2012172694.tif 000035
【図１６Ｄ】
2012172694.tif 000036
【図１６Ｅ】
2012172694.tif 000037
【図１６Ｆ】
2012172694.tif 000038
【手続補正書】
【提出日】平成25年12月5日(2013.12.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
主記憶装置に接続される演算処理装置において、
データをそれぞれ保持する複数のキャッシュラインを有するキャッシュメモリと、
前記主記憶装置の連続する領域に対する複数のアクセス要求を互いに関連付けて保持する要求保持部と、
前記関連付けられた複数のアクセス要求を、前記主記憶装置に対して連続して発行する制御部と、
前記連続して発行された複数のアクセス要求に対する前記主記憶装置からの複数の応答データを、前記キャッシュメモリの連続するキャッシュラインに登録する処理部と、
を有することを特徴とする演算処理装置。
【請求項２】
前記複数のアクセス要求は、前記要求保持部が有する複数のエントリに保持される、連続して発行されるアクセス要求を識別する連続アクセス識別子に基づいて互いに関連付けられる、
ことを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記演算処理装置はさらに、
前記要求保持部に前記複数のアクセス要求を互いに関連付けて保持する場合、連続アクセス識別子がいずれかのエントリに割り当てられたかを示す識別子使用情報に基づいて、何れのエントリにも割り当てられていない連続アクセス識別子を、アクセス要求が保持されていない前記要求保持部のエントリに割り当てる識別子割当回路を有することを特徴とする請求項２記載の演算処理装置。
【請求項４】
前記識別子割当回路は、
連続アクセス識別子が取り得る値毎に連続アクセス識別子がエントリに割り当てられているかを示す個別識別子使用情報を前記複数のエントリ毎に生成する判定回路と、
前記判定回路が生成した複数の個別識別子使用情報の論理和として、前記識別子使用情報を生成する論理和回路と、
を有することを特徴とする請求項３記載の演算処理装置。
【請求項５】
前記制御部は、
前記関連付けられた複数のアクセス要求同士を連結した連結アクセス要求を生成し、前記複数のアクセス要求のアドレス情報に基づいて前記連結アクセス要求を、前記主記憶装置に対して発行することを特徴とする請求項１ないし４記載の演算処理装置。
【請求項６】
主記憶装置と、前記主記憶装置に接続される演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
データをそれぞれ保持する複数のキャッシュラインを有するキャッシュメモリと、
前記主記憶装置の連続する領域に対する複数のアクセス要求を互いに関連付けて保持する要求保持部と、
前記関連付けられた複数のアクセス要求を、前記主記憶装置に対して連続して発行する制御部と、
前記連続して発行された複数のアクセス要求に対する前記主記憶装置からの複数の応答データを、前記キャッシュメモリの連続するキャッシュラインに登録する処理部と、
を有することを特徴とする情報処理装置。
【請求項７】
主記憶装置に接続され、データをそれぞれ保持する複数のキャッシュラインを有するキャッシュメモリを備える演算処理装置の制御方法において、
前記演算処理装置が有する制御部が、前記演算処理装置が有する要求保持部に、前記主記憶装置の連続する領域に対する複数のアクセス要求を互いに関連付けて保持し、
前記制御部が、前記関連付けられた複数のアクセス要求を、前記主記憶装置に対して連続して発行し、
前記演算処理装置が有する処理部が、前記連続して発行された複数のアクセス要求に対する前記主記憶装置からの複数の応答データを、前記キャッシュメモリの連続するキャッシュラインに登録する、
ことを特徴とする演算処理装置の制御方法。
【国際調査報告】
2012172694.tif 000039
2012172694.tif 000040
2012172694.tif 000041