(57)【特許請求の範囲】
【請求項１】
リクエストを受信して保持する受信側エントリをＮ個（Ｎは正の整数）備え前記保持し
たリクエストを処理するリクエスト処理装置に対するリクエストを生成するリクエスト生成装置において、
命令を実行する命令実行部と、
前記命令実行部が命令を実行することにより発生するリクエストを保持する送信側エントリをＭ個（ＭはＭ＞Ｎを満たす正の整数）備える保持部と、
前記保持部が保持するリクエストに、Ｎ個の互いに固有の識別情報を順次付与して前記リクエスト処理装置に送信する送信部と
を有することを特徴とするリクエスト生成装置。
【請求項２】
前記送信部は、
リクエストと識別情報の対応関係を保持するテーブルと、
前記テーブルを参照して、リクエストに対応付けられていない未使用の識別情報を新たなリクエストに付与する付与部と
を有することを特徴とする請求項１記載のリクエスト生成装置。
【請求項３】
前記保持部は、
前記命令実行部が命令を実行することにより発生する第１の種別のリクエストを保持する第１の個別エントリをＰ個（ＰはＭ＞Ｐを満たす正の整数）備える第１のリクエスト保持部と、
前記命令実行部が命令を実行することにより発生する第２の種別のリクエストを保持する第２の個別エントリをＱ個（ＱはＱ＝Ｍ−Ｐを満たす正の整数）備える第２のリクエスト保持部と
を有することを特徴とする請求項１又は２記載のリクエスト生成装置。
【請求項４】
前記送信部は、
データが書き込まれるアドレスの情報を含むリクエストを前記リクエスト処理装置に送信後、前記アドレスに書き込まれるデータを前記リクエスト処理装置に送信することを特徴とする請求項１〜３のいずれか１項に記載のリクエスト生成装置。
【請求項５】
リクエスト生成装置と、前記リクエスト生成装置に接続されるリクエスト処理装置とを
有するリクエスト処理システムにおいて、
前記リクエスト生成装置は、
命令を実行する命令実行部と、
前記命令実行部が命令を実行することにより発生するリクエストを保持する送信側エントリをＭ個（Ｍは正の整数）備える保持部と、
前記保持部が保持するリクエストに、Ｎ個（ＮはＭ＞Ｎを満たす正の整数）の互いに固有の識別情報を順次付与して前記リクエスト処理装置に送信する送信部とを有し、
前記リクエスト処理装置は、
前記リクエスト生成装置が送信するリクエストを受信して保持する受信側エントリをＮ個備える受信部と、
前記受信部が保持するリクエストを処理する処理部とを有する
ことを特徴とするリクエスト処理システム。
【請求項６】
前記送信部は、
リクエストと識別情報の対応関係を保持するテーブルと、
前記テーブルを参照して、リクエストに対応付けられていない未使用の識別情報を新たなリクエストに付与する付与部と
を有することを特徴とする請求項５記載のリクエスト処理システム。
【請求項７】
前記保持部は、
前記命令実行部が命令を実行することにより発生する第１の種別のリクエストを保持する第１の個別エントリをＰ個（ＰはＭ＞Ｐを満たす正の整数）備える第１のリクエスト保持部と、
前記命令実行部が命令を実行することにより発生する第２の種別のリクエストを保持する第２の個別エントリをＱ個（ＱはＱ＝Ｍ−Ｐを満たす正の整数）備える第２のリクエスト保持部と
を有することを特徴とする請求項５又は６記載のリクエスト処理システム。
【請求項８】
前記送信部は、
データが書き込まれるアドレスの情報を含むリクエストを前記リクエスト処理装置に送信後、前記アドレスに書き込まれるデータを前記リクエスト処理装置に送信することを特徴とする請求項５〜７のいずれか１項に記載のリクエスト処理システム。
【請求項９】
リクエストを受信して保持する受信側エントリをＮ個（Ｎは正の整数）備え前記保持し
たリクエストを処理するリクエスト処理装置に対するリクエストを生成するリクエスト生成装置の制御方法において、
前記リクエスト生成装置が有する命令実行部が、命令を実行するステップと、
前記リクエスト生成装置が有する保持部が備えるＭ個（ＭはＭ＞Ｎを満たす正の整数）の送信側エントリに、前記命令実行部が命令を実行することにより発生するリクエストをそれぞれ保持するステップと、
前記リクエスト生成装置が有する送信部が、前記保持部が保持するリクエストに、Ｎ個の互いに固有の識別情報を順次付与して前記リクエスト処理装置に送信するステップと
を有することを特徴とする制御方法。
【請求項１０】
前記送信部は、
リクエストと識別情報の対応関係を保持するテーブルと、
前記テーブルを参照して、リクエストに対応付けられていない未使用の識別情報を新たなリクエストに付与する付与部と
を有することを特徴とする請求項９記載の制御方法。
【請求項１１】
前記保持部は、
前記命令実行部が命令を実行することにより発生する第１の種別のリクエストを保持する第１の個別エントリをＰ個（ＰはＭ＞Ｐを満たす正の整数）備える第１のリクエスト保持部と、
前記命令実行部が命令を実行することにより発生する第２の種別のリクエストを保持する第２の個別エントリをＱ個（ＱはＱ＝Ｍ−Ｐを満たす正の整数）備える第２のリクエスト保持部と
を有することを特徴とする請求項９又は１０記載の制御方法。
【請求項１２】
前記送信部は、
データが書き込まれるアドレスの情報を含むリクエストを前記リクエスト処理装置に送信後、前記アドレスに書き込まれるデータを前記リクエスト処理装置に送信することを特徴とする請求項９〜１１のいずれか１項に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リクエスト生成装置、リクエスト処理システム及び制御方法に関し、特に、応答側のバッファ容量に関わらず多くのリクエストを記憶することができ、ＣＰＵコアの処理効率をより向上させることができるリクエスト生成装置、リクエスト処理システム及び制御方法に関する。
【背景技術】
【０００２】
近年、コンピュータなどの情報処理装置においては、一般にアクセス速度が低いメインメモリへのアクセス回数を減らしてＣＰＵ（Central Processing Unit）コアの処理速度を向上させるため、ＣＰＵ上にキャッシュメモリが搭載される構成が主流となっている。キャッシュメモリは、高速アクセスが可能であるものの、容量がメインメモリよりも小さいため、ＣＰＵコアが必要とするデータがキャッシュメモリに記憶されていない（キャッシュミス）ことがあり、このような場合には、メインメモリや２次キャッシュなどの上位キャッシュに記憶されているデータをＣＰＵ上のキャッシュメモリへムーブインする必要が生じる。
【０００３】
具体的には、キャッシュメモリにおいてキャッシュミスが発生した場合、ＣＰＵのムーブインバッファ（Move-in Buffer：以下「ＭＩＢ」と略記する）にキャッシュミスしたデータのアドレスとこのアドレスのデータのムーブインを要求する旨とを示すムーブインリクエストが記憶され、先にＭＩＢに記憶されたムーブインリクエストから順にメインメモリや上位キャッシュへ発行されることになる。
【０００４】
このとき、ムーブインリクエストを受け付けるメインメモリや上位キャッシュなどの応答側では、ＣＰＵからの要求を受け付けるためのバッファにムーブインリクエストが記憶される。そして、応答側では、同時期にバッファに記憶されているムーブインリクエストに対して、順不同にＣＰＵへデータを転送するアウトオブオーダ制御が行われるため、ＭＩＢに記憶されたムーブインリクエストと応答側のバッファに記憶されたムーブインリクエストとの対応関係を明確にする必要がある。このため、ＭＩＢの最大エントリ数に対応する物理キューの数は、最大でも応答側のバッファに受け付け可能なエントリ数に一致させられるとともに、ＭＩＢの各ムーブインリクエストにはムーブインリクエストが記憶されている物理キュー番号が付与されて発行される。ＭＩＢのエントリ数と応答側のエントリ数とが一致しているため、物理キュー番号によってＭＩＢおよび応答側のムーブインリクエストの対応が一意に決定され、アウトオブオーダ制御が可能となる。
【０００５】
このように、ＭＩＢのエントリ数には、リクエストを受け付ける側が同時受け付け可能なエントリ数という上限があるため、例えば特許文献１では、限られたエントリ数のＭＩＢを有効に使用して、メモリのデータに対する参照を効率的に制御することが記載されている。
【０００６】
【特許文献１】特開２００６−４８１８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、応答側のバッファ容量によってＭＩＢのエントリ数が制限されていることにより、ＭＩＢのエントリが一杯の状態では、ＣＰＵコアによるキャッシュメモリへのアクセスなど後続のメモリオペレーションが停止され、ＣＰＵコアの処理効率の向上に限界があるという問題がある。すなわち、ＭＩＢの使用可能な物理キューがすべて使用されている状態では、ＣＰＵコアがキャッシュメモリへアクセスしてキャッシュミスが生じても、ムーブインリクエストをＭＩＢに記憶することができない。このため、ＭＩＢが一杯の状態では、ＭＩＢに新たなリクエストを記憶させる必要が生じないように、一切のメモリオペレーションが停止される。これは、ＣＰＵコアによる効率的な処理の大きな妨げとなる。
【０００８】
特に、ＭＩＢが一杯の状態で、次以降のキャッシュメモリへのアクセスに関してはキャッシュミスが生じずに、ＣＰＵコアとキャッシュメモリ間で処理が完結していくような場合では、ＭＩＢのエントリ数が１つ不足しているというだけで、処理効率の損失は多大である。したがって、ＭＩＢのエントリ数をより多くして、ＣＰＵコアの処理効率をより向上させることが望まれている。
【０００９】
本発明はかかる点に鑑みてなされたものであり、応答側のバッファ容量に関わらず多くのリクエストを記憶することができ、ＣＰＵコアの処理効率をより向上させることができるリクエスト生成装置、リクエスト処理システム及び制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、プロセッサ装置は、外部装置に対して処理のリクエストを発行するプロセッサ装置であって、所定の命令を実行する実行手段と、前記実行手段による命令実行によって順次発生する処理のリクエストを記憶する記憶手段と、前記記憶手段によって記憶されたリクエストに前記外部装置が同時受け付け可能なリクエスト数に対応する識別情報を付与して前記外部装置へ送出する送出手段とを有する構成を採る。
【００１１】
また、プロセッサ装置は、上記構成において、前記記憶手段は、前記外部装置が同時受け付け可能なリクエスト数以上のリクエストを記憶する構成を採る。
【００１２】
また、プロセッサ装置は、上記構成において、前記実行手段による命令実行時に使用されるデータを記憶するキャッシュメモリをさらに有し、前記記憶手段は、前記実行手段による命令実行時に必要なデータが前記キャッシュメモリに記憶されていない場合に、このデータの前記キャッシュメモリへの転送を要求するムーブインリクエストを記憶する構成を採る。
【００１３】
また、プロセッサ装置は、上記構成において、前記送出手段は、リクエストと識別情報の対応関係を保持するテーブルと、前記テーブルを参照して、リクエストに対応付けられていない未使用の識別情報を新たなリクエストに付与する付与手段とを含む構成を採る。
【００１４】
また、プロセッサ装置は、上記構成において、前記テーブルは、前記外部装置が同時受け付け可能なリクエスト数に一致する数の識別情報それぞれについて、対応するリクエストの特定情報または未使用を示す情報のいずれかを対応付けて保持する構成を採る。
【００１５】
また、プロセッサ装置は、上記構成において、前記実行手段による命令実行時に使用されるデータを記憶するキャッシュメモリをさらに有し、前記記憶手段は、前記キャッシュメモリに記憶されたデータを前記キャッシュメモリ以外の外部メモリにおける所定のアドレスへ書き込むブロックライトリクエストを記憶する構成を採る。
【００１６】
また、プロセッサ装置は、上記構成において、前記送出手段は、データが書き込まれるアドレスの情報を含むリクエストと書き込まれるデータとを別々に分けて送出する構成を採る。
【００１７】
また、プロセッサ装置は、上記構成において、前記送出手段は、アドレス情報を含むリクエストに識別情報を付与して送出する構成を採る。
【００１８】
また、プロセッサ装置は、上記構成において、前記送出手段は、前記リクエストに対して前記外部装置からデータの受け付けが可能である旨の応答を取得した場合に前記データを送出する構成を採る。
【００１９】
また、プロセッサ装置は、上記構成において、前記外部装置によってリクエストが実行された場合に、実行済みのリクエストに対応付けられている識別情報を未使用として開放する開放手段をさらに有する構成を採る。
【００２０】
また、プロセッサ装置は、上記構成において、前記開放手段は、実行済みのリクエストを前記記憶手段から消去させる構成を採る。
【００２１】
また、命令処理方法は、外部装置に対して処理のリクエストを発行する命令処理方法であって、所定の命令を実行する実行工程と、前記実行工程における命令実行によって順次発生する処理のリクエストを記憶する記憶工程と、前記記憶工程にて記憶されたリクエストに前記外部装置が同時受け付け可能なリクエスト数に対応する識別情報を付与する付与工程と、前記付与工程にて識別情報が付与されたリクエストを前記外部装置へ送出する送出工程とを有するようにした。
【発明の効果】
【００２２】
本発明によれば、応答側のバッファ容量に関わらず多くのリクエストを記憶することができ、リクエストの記憶容量の制限によって後続の命令実行を停止させる必要がなく、ＣＰＵコアの処理効率をより向上させることができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。なお、以下においては、ＳＭＰ（Symmetric Multi Processor：対称型マルチプロセッサ）構成におけるＣＰＵとシステムコントローラを例に挙げて説明するが、本発明は、ＣＰＵと２次キャッシュが接続されている場合やＣＰＵとメインメモリが接続されている場合などにも適用可能である。また、ｃｃＮＵＭＡ（Cache Coherent Non-Uniform Memory Access）などにおいてＣＰＵとＣＰＵが接続されている場合などにも本発明を適用することができる。要するに、ＣＰＵから外部装置へ要求が発行され、外部装置が要求に対する応答を行う場合に、本発明を適用することができる。
【００２４】
（実施の形態１）
図１は、本発明の実施の形態１に係る情報処理装置の概略構成を示すブロック図である。図１に示す情報処理装置は、複数のＣＰＵ１００、システムコントローラ２００、主記憶制御部３００、メモリ４００、およびＩ／Ｏ（Input/Output：入出力）デバイス５００を備えている。
【００２５】
ＣＰＵ１００は、各々ＣＰＵコアとキャッシュを有しており、プログラムの命令に応じて様々な演算や処理を実行する。本実施の形態においては、ＳＭＰ構成としているため、各ＣＰＵ１００は、それぞれ独立して処理を実行する。具体的には、ＣＰＵ１００は、例えばキャッシュミスが発生した場合、他のＣＰＵ１００またはメモリ４００からキャッシュミスしたデータを取り込むため、システムコントローラ２００に対してムーブインリクエストを発行する。このとき、本実施の形態においては、ＣＰＵ１００は、システムコントローラ２００が同時期に受け付け可能なリクエスト数を最大数としたリクエストＩＤ（以下「ＲＥＱＩＤ」と略記する）をムーブインリクエストに付与して発行する。ＣＰＵ１００のより具体的な処理については、後に詳述する。
【００２６】
システムコントローラ２００は、各ＣＰＵ１００による処理の結果必要となる、他のＣＰＵ１００、メモリ４００、またはＩ／Ｏデバイス５００などへのアクセスを制御する。具体的には、システムコントローラ２００は、例えばＣＰＵ１００からムーブインリクエストが発行された場合、ムーブインが要求されているデータを他のＣＰＵ１００またはメモリ４００から転送させ、ムーブインリクエスト発行元のＣＰＵ１００へ送出する。
【００２７】
主記憶制御部３００は、情報処理装置の主記憶であるメモリ４００におけるデータの入出力を制御する。メモリ４００は、ＣＰＵ１００内のキャッシュよりもアクセス速度は低いものの、大容量のＲＡＭ（Random Access Memory）などから構成されており、ＣＰＵ１００における処理演算に必要なデータやプログラムなどを記憶している。
【００２８】
Ｉ／Ｏデバイス５００は、システムコントローラ２００の制御に応じて、データの入力や出力を行う。具体的には、Ｉ／Ｏデバイス５００は、例えばキーボード、モニタ、およびプリンタなどを含んでおり、種々の形式でデータの入出力を行う。
【００２９】
図２は、本実施の形態に係るＣＰＵ１００の要部構成を示すブロック図である。図２に示すＣＰＵ１００は、命令実行部１０１、キャッシュ１０２、リクエスト記憶部１０３、ＲＥＱＩＤ付与部１０４、ＲＥＱＩＤテーブル１０５、ＲＥＱＩＤ開放部１０６、システムコントローラキュー（以下「ＳＣＱ」と略記する）１０７、およびムーブアウトキュー（以下「ＭＯＱ」と略記する）１０８を有している。
【００３０】
命令実行部１０１は、ＣＰＵコアを構成しており、キャッシュ１０２からデータを読み出してプログラムの命令を実行したり、Ｉ／Ｏデバイス５００へのデータの読み書きなどをリクエスト記憶部１０３へ指示したりする。
【００３１】
キャッシュ１０２は、命令実行部１０１からの要求を受けて、必要なデータを検索し、必要なデータが記憶されていれば（キャッシュヒット）このデータを命令実行部１０１へ出力し、必要なデータが記憶されていなければ（キャッシュミス）このデータのムーブインを要求するようリクエスト記憶部１０３へ指示する。また、キャッシュ１０２は、ＲＥＱＩＤ開放部１０６から出力されるデータを記憶する。さらに、キャッシュ１０２は、ＳＣＱ１０７からのリクエストに従って、記憶されたデータをＭＯＱ１０８へ出力する。
【００３２】
リクエスト記憶部１０３は、キャッシュ１０２および命令実行部１０１からの指示に応じたリクエストを、リクエストする処理が実行される間記憶する。具体的には、リクエスト記憶部１０３は、ムーブインバッファ（ＭＩＢ）１０３ａおよびムーブインキュー（以下「ＭＩＱ」と略記する）１０３ｂを有している。
【００３３】
ＭＩＢ１０３ａは、キャッシュ１０２においてキャッシュミスが発生した場合、このデータのムーブインを要求するムーブインリクエストを記憶する。本実施の形態におけるＭＩＢ１０３ａは、応答側であるシステムコントローラ２００の受け付け可能エントリ数に関係なく、任意の数の物理キューを有するように構成されている。
【００３４】
ＭＩＱ１０３ｂは、命令実行部１０１による処理の結果、キャッシュ１０２とは無関係のデータの読み書きに関するリクエストを記憶する。具体的には、ＭＩＱ１０３ｂは、例えばＩ／Ｏデバイス５００からデータを取得する旨のリクエストを記憶する。本実施の形態においては、ＭＩＱ１０３ｂもＭＩＢ１０３ａと同様に、任意の数の物理キューを有するように構成されている。
【００３５】
ＲＥＱＩＤ付与部１０４は、ＭＩＢ１０３ａおよびＭＩＱ１０３ｂに記憶されたリクエストを優先制御しながら読み出し、読み出されたリクエストに未使用のＲＥＱＩＤをＲＥＱＩＤテーブル１０５から選択して付与する。そして、ＲＥＱＩＤ付与部１０４は、ＲＥＱＩＤ付きリクエストをシステムコントローラ２００へ出力するとともに、ＲＥＱＩＤが付与されたリクエストのＭＩＢ１０３ａまたはＭＩＱ１０３ｂにおける物理キュー番号をＲＥＱＩＤに対応付けてＲＥＱＩＤテーブル１０５に登録する。
【００３６】
ここで、ＲＥＱＩＤとは、システムコントローラ２００が同時期に受け付け可能なリクエスト数を最大数としたリクエストの識別番号であり、ＭＩＢ１０３ａに記憶されるムーブインリクエストおよびＭＩＱ１０３ｂに記憶されるリクエストを区別せずに付与される識別番号である。本実施の形態においては、ＲＥＱＩＤの最大数がシステムコントローラ２００のバッファ容量に応じて決定されるため、ＭＩＢ１０３ａおよびＭＩＱ１０３ｂの物理キュー数を任意にしても、ＲＥＱＩＤによってＣＰＵ１００におけるリクエストと応答側であるシステムコントローラ２００におけるリクエストとの対応関係が明確になる。
【００３７】
ＲＥＱＩＤテーブル１０５は、ＲＥＱＩＤとＲＥＱＩＤが付与されたリクエストの物理キュー番号とを対応付けて記憶している。具体的には、ＲＥＱＩＤテーブル１０５は、例えば図３に示すように、ＭＩＢ１０３ａまたはＭＩＱ１０３ｂにおける物理キュー番号（図３中「ＭＩＢ＃１」など）と付与されるＲＥＱＩＤとを対応付けているとともに、未使用のＲＥＱＩＤ（図３中「未使用」となっているＲＥＱＩＤ）を記憶している。ＲＥＱＩＤテーブル１０５は、ＲＥＱＩＤ付与部１０４によってリクエストにＲＥＱＩＤが付与されたり、ＲＥＱＩＤ開放部１０６によってＲＥＱＩＤが未使用の状態にされたりすると更新される。
【００３８】
ＲＥＱＩＤ開放部１０６は、システムコントローラ２００からＲＥＱＩＤ付きのデータを取得すると、このＲＥＱＩＤに対応するＭＩＢ１０３ａまたはＭＩＱ１０３ｂの物理キュー番号をＲＥＱＩＤテーブル１０５から読み出し、読み出された番号の物理キューを開放するとともに、ＲＥＱＩＤテーブル１０５において、読み出された物理キュー番号に対応するＲＥＱＩＤを未使用の状態に更新する。また、ＲＥＱＩＤ開放部１０６は、取得したデータをキャッシュ１０２へ記憶させ、ＭＩＢ１０３ａまたはＭＩＱ１０３ｂに記憶されたムーブインリクエストに応じたデータのムーブインを完了させる。
【００３９】
ＳＣＱ１０７は、システムコントローラ２００から発行されるオーダーＩＤ（以下「ＯＲＤＩＤ」と略記する）付きリクエストを一時的に記憶し、記憶された順にリクエストを実行してキャッシュ１０２からデータをＭＯＱ１０８へ転送させる。
【００４０】
ここで、ＯＲＤＩＤとは、ＣＰＵ１００から発行されるＲＥＱＩＤ付きリクエストのＲＥＱＩＤに、リクエストを発行したＣＰＵを識別するためのＩＤが付加された識別番号である。本実施の形態においては、情報処理装置がＳＭＰ構成を採っているため、各ＣＰＵ１００には固有のＩＤが割り振られており、システムコントローラ２００においては、ＲＥＱＩＤにＣＰＵのＩＤを付加したＯＲＤＩＤによって、各ＣＰＵ１００からのリクエストが識別される。なお、ＳＭＰ構成でなく１つのＣＰＵ１００対１つのシステムコントローラ２００である場合や、システムコントローラ２００からのリクエストが常にインオーダ制御される場合は、当然ＯＲＤＩＤは不要となる。
【００４１】
ＭＯＱ１０８は、システムコントローラ２００からのリクエストに応じてキャッシュ１０２から転送されるデータを一時的に記憶し、記憶された順にＯＲＤＩＤを付与してシステムコントローラ２００へムーブアウトする。なお、リクエスト記憶部１０３、ＲＥＱＩＤ付与部１０４、ＲＥＱＩＤテーブル１０５、およびＲＥＱＩＤ開放部１０６は、ムーブインリクエストを発行するＣＰＵ１００内で主に機能するのに対し、ＳＣＱ１０７およびＭＯＱ１０８は、ムーブイン対象のデータがキャッシュ１０２に記憶されているＣＰＵ１００内で主に機能する。
【００４２】
図４は、本実施の形態に係るシステムコントローラ２００の要部構成を示すブロック図である。図４に示すシステムコントローラ２００は、リクエスト受付部２０１、ＯＲＤＩＤ付与部２０２、Ｉ／Ｏデバイス検索部２０３、タグ情報制御部２０４、タグ情報コピー２０５、リクエスト送出部２０６、データ受付部２０７、ＩＤ変換部２０８、およびデータ送出部２０９を有している。
【００４３】
リクエスト受付部２０１は、ＣＰＵ１００のＲＥＱＩＤ付与部１０４から出力されるＲＥＱＩＤ付きリクエストを記憶するバッファを有しており、ＣＰＵ１００から受け付けられたＲＥＱＩＤ付きリクエストをバッファに記憶するとともにＯＲＤＩＤ付与部２０２へ出力する。
【００４４】
ＯＲＤＩＤ付与部２０２は、リクエストに付与されたＲＥＱＩＤにリクエスト発行元のＣＰＵのＩＤを付加してＯＲＤＩＤを生成し、生成されたＯＲＤＩＤをリクエストに付与する。
【００４５】
Ｉ／Ｏデバイス検索部２０３は、リクエストに含まれているＩ／Ｏデバイス５００のアドレスを図示しないデバイスマップなどから検索し、Ｉ／Ｏデバイス５００へＯＲＤＩＤ付きリクエストを出力する。Ｉ／Ｏデバイス５００のアドレスが含まれているリクエストは、主にＩ／Ｏデバイス５００におけるデータの入力を求めるリクエストなどであり、ＣＰＵ１００におけるキャッシュ１０２とは無関係なＭＩＱ１０３ｂに記憶されたリクエストである。
【００４６】
タグ情報制御部２０４は、リクエストに含まれるアドレスをタグ情報コピー２０５から検索し、このアドレスのデータが記憶されているＣＰＵ１００またはメモリ４００を割り出す。そして、タグ情報制御部２０４は、所望のデータを記憶しているＣＰＵ１００（以下、ムーブインリクエスト発行元のＣＰＵ１００と区別するために「他のＣＰＵ１００」という）またはメモリ４００へデータのムーブアウトを要求するようリクエスト送出部２０６へ指示する。また、タグ情報制御部２０４は、ムーブインリクエスト発行元のＣＰＵ１００へのデータのムーブインによって、各ＣＰＵ１００のタグ情報が変更される場合は、変更に従ってタグ情報コピー２０５を更新する。
【００４７】
タグ情報コピー２０５は、システムコントローラ２００に接続されているすべてのＣＰＵ１００のキャッシュ１０２に関するタグ情報のコピーであり、各ＣＰＵ１００のキャッシュ１０２にどのデータが記憶されているかを示す情報を保持している。このため、タグ情報制御部２０４がタグ情報コピー２０５を検索することにより、ＣＰＵ１００からムーブインが要求されているデータがどのＣＰＵ１００のキャッシュ１０２に記憶されているか判明する。また、タグ情報コピー２０５の検索の結果、所望のデータがどのＣＰＵ１００にも記憶されていない場合は、このデータはメモリ４００にのみ記憶されていることになるため、タグ情報制御部２０４は、メモリ４００へデータのムーブアウトを要求すると決定する。
【００４８】
リクエスト送出部２０６は、タグ情報制御部２０４からの指示に従って、ムーブイン対象のデータを記憶している他のＣＰＵ１００またはメモリ４００へＯＲＤＩＤが付与されたムーブアウトリクエストを送出する。いずれかのＣＰＵ１００がムーブイン対象のデータを記憶している場合は、ＯＲＤＩＤ付きリクエストは、ムーブイン対象のデータを記憶している他のＣＰＵ１００のＳＣＱ１０７によって受け付けられ、いずれのＣＰＵ１００もムーブイン対象のデータを記憶していない場合は、ＯＲＤＩＤ付きリクエストは、メモリ４００の前段に接続されている主記憶制御部３００によって受け付けられる。
【００４９】
データ受付部２０７は、ＯＲＤＩＤ付きリクエストに応じて他のＣＰＵ１００、メモリ４００、またはＩ／Ｏデバイス５００から取得されるＯＲＤＩＤ付きデータを記憶するデータキューを有しており、受け付けたデータを記憶した順にＩＤ変換部２０８へ出力する。
【００５０】
ＩＤ変換部２０８は、データ受付部２０７から出力されるデータに付与されているＯＲＤＩＤからムーブインリクエスト発行元のＣＰＵ１００のＩＤを削除し、ＲＥＱＩＤに変換した上でＲＥＱＩＤ付きデータをデータ送出部２０９へ出力する。このとき、ＩＤ変換部２０８は、削除したＣＰＵ１００のＩＤがムーブインリクエスト発行元のＣＰＵ１００であるため、データの送出先として削除したＩＤのＣＰＵ１００をデータ送出部２０９へ通知する。また、所望のデータが他のＣＰＵ１００からムーブアウトされてムーブインリクエスト発行元のＣＰＵ１００にムーブインされる場合には、これらのＣＰＵ１００のタグ情報が変更されるため、ＩＤ変換部２０８は、タグ情報制御部２０４に対してタグ情報コピー２０５の更新を指示する。
【００５１】
データ送出部２０９は、ＩＤ変換部２０８から出力されるＲＥＱＩＤ付きデータをＩＤ変換部２０８から通知されるＣＰＵ１００へ送出する。すなわち、データ送出部２０９は、ムーブインリクエスト発行元のＣＰＵ１００へムーブイン対象のデータを送出する。
【００５２】
次いで、上記のように構成されたＣＰＵ１００およびシステムコントローラ２００の動作について、主にムーブインリクエスト発行元のＣＰＵ１００においてキャッシュミスが発生する場合の命令処理に重点を置いて説明する。
【００５３】
図５は、ムーブインリクエスト発行元のＣＰＵ１００における処理を模式的に示す図である。同図においては、命令実行部１０１によって、キャッシュ１０２からのデータの読み出しを伴う場合の処理が示されている。すなわち、命令実行部１０１によって、プログラムの命令が実行され、キャッシュ１０２からのデータの読み出しが必要となると、このデータのロード命令が命令実行部１０１のポート１０１ａに蓄積され、先に蓄積されたロード命令から順次実行されて、キャッシュ１０２へのアクセスが行われる。
【００５４】
ロード命令が実行されると、キャッシュ１０２によって所望のデータがキャッシングされているか否かが判定され、キャッシュミスが発生しなければ、キャッシュ１０２のデータが命令実行部１０１へ出力されて命令実行部１０１による演算処理が実行される。
【００５５】
一方、所望のデータがキャッシュ１０２にキャッシングされておらず、キャッシュミスが発生すれば、このデータをキャッシュ１０２にムーブインするために、ＭＩＢ１０３ａにムーブインリクエストが記憶される。
【００５６】
ここで、本実施の形態においては、ＭＩＢ１０３ａに記憶されるムーブインリクエストには、システムコントローラ２００のリクエスト受付部２０１に同時期に受け付け可能なエントリと一意に対応するＲＥＱＩＤが付与されるため、ＭＩＢ１０３ａの使用可能な物理キュー数をリクエスト受付部２０１に同時期に受け付け可能なエントリ数に一致させる必要がない。したがって、リクエストの応答側のバッファ容量によるＭＩＢ１０３ａのエントリ数の制限がないため、単に物量などを考慮してＭＩＢ１０３ａの物理キュー数を決定すれば良い。そして、ＭＩＢ１０３ａの物理キュー数を可能な限り大きくしておくことにより、命令実行部１０１のポート１０１ａに蓄積されたロード命令が次々に実行され、キャッシュヒットする処理が滞ることなく進み、命令実行部１０１による処理効率の向上を図ることができる。
【００５７】
ＭＩＢ１０３ａに記憶されたムーブインリクエストは、順次、ＲＥＱＩＤ付与部１０４へ出力され、ＲＥＱＩＤが付与される。このとき、ＭＩＢ１０３ａおよびＭＩＱ１０３ｂのどちらかから優先制御によってリクエストが出力されるが、一般に、ＭＩＢ１０３ａにムーブインリクエストが多く記憶される場合は、キャッシュ１０２と無関係のリクエストは発生しにくく、ＭＩＱ１０３ｂに記憶されるリクエスト数は少ないと考えられる。また、反対に、ＭＩＱ１０３ｂに多くのリクエストが記憶される場合は、他のＣＰＵ１００やメモリ４００へムーブインリクエストが発行されることが少ない。つまり、多くの場合、ＭＩＢ１０３ａまたはＭＩＱ１０３ｂのいずれか一方にのみリクエストが記憶されている状態である。
【００５８】
ＲＥＱＩＤの付与は、ＲＥＱＩＤ付与部１０４によって、ＲＥＱＩＤテーブル１０５から未使用のＲＥＱＩＤが選択され、選択されたＲＥＱＩＤがムーブインリクエストに付与されることによって行われる。ＲＥＱＩＤの最大数は、システムコントローラ２００のリクエスト受付部２０１が同時期に受け付け可能なリクエスト数と一致しており、ＭＩＢ１０３ａおよびＭＩＱ１０３ｂの物理キュー数よりも小さい。このようにＲＥＱＩＤの最大数は、リクエスト受付部２０１のバッファ容量によって制限されるが、上述したようにＭＩＢ１０３ａまたはＭＩＱ１０３ｂのいずれか一方にのみリクエストが記憶されていることが多いため、ＭＩＢ１０３ａおよびＭＩＱ１０３ｂのリクエストを区別しなくても、有効に同一のＲＥＱＩＤを使用することができる。
【００５９】
ＲＥＱＩＤが付与されたリクエストは、システムコントローラ２００へ発行され、リクエスト受付部２０１によって受け付けられる。ここで、図５に示すように、ＭＩＢ１０３ａの物理キュー数とリクエスト受付部２０１のエントリ数とは一致していないが、ＲＥＱＩＤ付与部１０４によってリクエストにＲＥＱＩＤが付与されており、リクエスト受付部２０１においては、エントリ数と同数の物理キューを有するＭＩＢ１０３ａからリクエストが発行されているのと同等になる。つまり、システムコントローラ２００においては、ＭＩＢ１０３ａがリクエスト受付部２０１のエントリ数と同数の物理キュー数を有している場合と同様の処理が行われることになり、既存のシステムコントローラ２００の構成を変更する必要がない。結果として、コストの増大を抑制することができる。
【００６０】
リクエスト受付部２０１に受け付けられたＲＥＱＩＤ付きリクエストは、順次ＯＲＤＩＤ付与部２０２へ出力され、ＯＲＤＩＤ付与部２０２によって、ＲＥＱＩＤがＯＲＤＩＤに書き換えられる。そして、ここではリクエストがＭＩＢ１０３ａからのムーブインリクエストであるため、タグ情報制御部２０４へＯＲＤＩＤとムーブインリクエストが出力され、タグ情報制御部２０４によってタグ情報コピー２０５が検索されることにより、ムーブイン対象のデータを記憶している他のＣＰＵ１００が判明する。
【００６１】
なお、リクエストがＭＩＱ１０３ｂからのものである場合は、例えばＩ／Ｏデバイス検索部２０３によってＩ／Ｏデバイス５００が検索され、Ｉ／Ｏデバイス５００へデータ入力などを要求するＯＲＤＩＤ付きリクエストが送出される。また、タグ情報制御部２０４による検索の結果、ムーブイン対象のデータがメモリ４００にのみ記憶されていると判明することもある。
【００６２】
ムーブイン対象のデータが記憶されている場所（他のＣＰＵ１００またはメモリ４００）が判明すると、リクエスト送出部２０６によって、ムーブイン対象のデータのムーブアウトを要求するムーブアウトリクエストが他のＣＰＵ１００またはメモリ４００へ送出される。ここでは、他のＣＰＵ１００へムーブアウトリクエストが送出されるものとして説明を続ける。なお、このムーブアウトリクエストには、ＯＲＤＩＤが付与されており、ムーブインリクエストの発行元のＣＰＵ１００が識別可能になっている。
【００６３】
ムーブアウトリクエストが他のＣＰＵ１００へ送出されると、ムーブアウトリクエストはＳＣＱ１０７によって受け付けられる。そして、このリクエストが他のＣＰＵ１００のキャッシュ１０２へ伝達され、キャッシュ１０２からムーブイン対象のデータがＭＯＱ１０８へ出力される。このデータにはＯＲＤＩＤが付与され、ＭＯＱ１０８からシステムコントローラ２００へ送出される。
【００６４】
ＯＲＤＩＤ付きデータが他のＣＰＵ１００のＭＯＱ１０８から送出されると、このデータは、システムコントローラ２００のデータ受付部２０７によって受け付けられ、データ受付部２０７に備えられたデータキューに記憶される。そして、データキューに記憶された順にＯＲＤＩＤ付きデータがＩＤ変換部２０８へ出力され、ＩＤ変換部２０８によって、ＯＲＤＩＤがＲＥＱＩＤに変換される。また、ＩＤ変換部２０８によって、他のＣＰＵ１００からムーブイン対象のデータがムーブアウトされ、このデータがムーブインリクエスト発行元のＣＰＵ１００にムーブインされる旨がタグ情報制御部２０４へ通知される。
【００６５】
そして、タグ情報制御部２０４によって、ＩＤ変換部２０８からの通知に応じたタグ情報コピー２０５の更新が行われる。また、ＲＥＱＩＤが付与されたムーブイン対象のデータは、データ送出部２０９からムーブインリクエスト発行元のＣＰＵ１００へ送出される。
【００６６】
送出されたＲＥＱＩＤ付きデータは、ＣＰＵ１００のＲＥＱＩＤ開放部１０６によって取得され、データがキャッシュ１０２へ出力されて記憶されることにより、キャッシュミスしたデータのムーブインが完了する。また、ＲＥＱＩＤ開放部１０６によって、データに付与されたＲＥＱＩＤに対応するＭＩＢ１０３ａの物理キュー番号がＲＥＱＩＤテーブル１０５から読み出され、この物理キューが開放される。同時に、ＲＥＱＩＤテーブル１０５において、開放された物理キューに対応付けられていたＲＥＱＩＤが未使用の状態に更新される。これにより、ムーブインの完了とともに、このムーブインを要求したムーブインリクエストに対応するＭＩＢ１０３ａおよびＲＥＱＩＤが開放され、ＭＩＢ１０３ａおよびＲＥＱＩＤは、後続のムーブインリクエストによって使用されることになる。
【００６７】
以上のように、本実施の形態によれば、ＣＰＵ１００において発生するリクエストを記憶するバッファの物理キュー番号を、応答側のシステムコントローラ２００が同時期に受け付け可能なリクエスト数に対応するＲＥＱＩＤに変換し、ＲＥＱＩＤが付与されたリクエストをシステムコントローラ２００へ発行する。このため、ＣＰＵ１００においてリクエストを記憶するバッファの物理キュー数を多くしても、応答側のシステムコントローラ２００は、ＲＥＱＩＤに基づいてリクエストに応答することになり、ＣＰＵ１００の物理キュー数がシステムコントローラ２００のバッファ容量に対応している場合と同様の処理を行うことになる。結果として、ＣＰＵ１００は、応答側のバッファ容量に関わらず多くのリクエストを記憶することができ、後続のメモリオペレーションを停止することなく、ＣＰＵコアの処理効率をより向上させることができる。
【００６８】
（実施の形態２）
本発明の実施の形態２の特徴は、メモリの一部をまとめて書き換えるブロックストア処理が実行される際に、書き換えられるデータのアドレスにＲＥＱＩＤを付与して送出することにより、ブロックストア処理の効率を向上することである。本実施の形態に係る情報処理装置の概略構成は実施の形態１（図１）と同様であるため、その説明を省略する。
【００６９】
図６は、本発明の実施の形態２に係るＣＰＵ１００の要部構成を示すブロック図である。同図において、図２と同じ部分には同じ符号を付し、その説明を省略する。また、図６は、ブロックストア処理の要求を発行するＣＰＵ１００の構成を示しており、データをムーブアウトしたり、ブロックストア処理時にデータの無効化をしたりする他のＣＰＵ１００に必要な処理部を省略している。図６に示すＣＰＵ１００は、命令実行部１０１、キャッシュ１０２、リクエスト記憶部１５１、ＲＥＱＩＤ付与部１５２、ＲＥＱＩＤテーブル１０５、およびＲＥＱＩＤ開放部１５３を有している。
【００７０】
リクエスト記憶部１５１は、キャッシュ１０２および命令実行部１０１からの指示に応じたリクエストを、リクエストする処理が実行される間記憶する。本実施の形態においては特に、リクエスト記憶部１５１は、メモリ４００の一部のデータをキャッシュ１０２に記憶されたデータに書き換えるブロックストア処理を行うために、メモリ４００の書き換えられるアドレスおよびデータを含むブロックライトリクエストを記憶する。具体的には、リクエスト記憶部１５１は、ＭＩＢ１０ａおよびＭＩＱ１０３ｂに加えて、ブロックライトキュー（以下「ＢＷＱ」と略記する）１５１ａを有している。
【００７１】
ＢＷＱ１５１ａは、メモリ４００のデータの一部をキャッシュ１０２のデータに書き換える場合、書き換え対象のメモリ４００のアドレスとキャッシュ１０２のデータとを含むブロックライトリクエストを記憶する。そして、ＢＷＱ１５１ａは、ブロックライトリクエストをファーストフローおよびセカンドフローの２フローに分け、ファーストフローではアドレスのみを含むブロックストア要求をＲＥＱＩＤ付与部１５２へ出力し、ＲＥＱＩＤ開放部１５３からデータ出力の指示が出されると、セカンドフローでデータをストアデータとしてＲＥＱＩＤ付与部１５２へ出力する。本実施の形態におけるＢＷＱ１５１ａは、ＭＩＢ１０３ａおよびＭＩＱ１０３ｂと同様に、応答側であるシステムコントローラ２００の受け付け可能エントリ数に関係なく、任意の数の物理キューを有するように構成されている。
【００７２】
ＲＥＱＩＤ付与部１５２は、ＭＩＢ１０３ａ、ＭＩＱ１０３ｂ、およびＢＷＱ１５１ａに記憶されたリクエストを優先制御しながら読み出し、読み出されたリクエストに未使用のＲＥＱＩＤをＲＥＱＩＤテーブル１０５から選択して付与する。また、ＲＥＱＩＤ付与部１５２は、ＢＷＱ１５１ａからブロックライトリクエストを読み出す場合、ファーストフローで出力されるブロックストア要求にＲＥＱＩＤを付与して出力する一方、セカンドフローで出力されるストアデータにはＲＥＱＩＤを付与せずにそのまま出力する。
【００７３】
ＲＥＱＩＤ開放部１５３は、システムコントローラ２００からＲＥＱＩＤ付きのデータを取得すると、このＲＥＱＩＤに対応するＭＩＢ１０３ａまたはＭＩＱ１０３ｂの物理キュー番号をＲＥＱＩＤテーブル１０５から読み出し、読み出された番号の物理キューを開放するとともに、ＲＥＱＩＤテーブル１０５において、読み出された物理キュー番号に対応するＲＥＱＩＤを未使用の状態に更新する。また、ＲＥＱＩＤ開放部１５３は、取得したデータをキャッシュ１０２へ記憶させ、ＭＩＢ１０３ａまたはＭＩＱ１０３ｂに記憶されたムーブインリクエストに応じたデータのムーブインを完了させる。
【００７４】
さらにＲＥＱＩＤ開放部１５３は、システムコントローラ２００にデータを受け付けるためのデータキューの空きがあることを示すデータキュー確認応答を取得すると、データキュー確認応答に付与されたＲＥＱＩＤに対応するＢＷＱ１５１ａの物理キュー番号をＲＥＱＩＤテーブル１０５から読み出し、読み出された番号の物理キューに記憶されているデータをストアデータとして出力するように指示する。そして、ＲＥＱＩＤ開放部１５３は、システムコントローラ２００からブロックライトが完了した旨の完了報告を取得すると、完了したブロックライトに対応するＢＷＱ１５１ａの物理キューを開放するとともに、ＲＥＱＩＤテーブル１０５において、完了したブロックライトに対応するＲＥＱＩＤを未使用の状態に更新する。
【００７５】
図７は、本実施の形態に係るシステムコントローラ２００の要部構成を示すブロック図である。同図において、図４と同じ部分には同じ符号を付し、その説明を省略する。図７に示すシステムコントローラ２００は、リクエスト受付部２０１、ＯＲＤＩＤ付与部２０２、無効化処理部２５１、データキュー確認部２５２、応答送出部２５３、データ受付部２０７、ストア処理部２５４、および完了報告送出部２５５を有している。
【００７６】
無効化処理部２５１は、ブロックストア要求発行元のＣＰＵ１００以外の他のＣＰＵ１００すべてに対して、キャッシュ１０２に記憶されているデータのうちブロックストア要求に含まれるアドレスのデータを無効化するよう無効化要求を送出する。そして、無効化処理部２５１は、他のＣＰＵ１００すべてがデータを無効化したことを確認すると、ブロックストア要求に含まれるアドレスとともに無効化処理が完了した旨をストア処理部２５４へ通知する。
【００７７】
データキュー確認部２５２は、データ受付部２０７のデータキューの空き状況を確認し、ＯＲＤＩＤ付与部２０２から出力されるブロックストア要求に含まれるアドレスに相当するデータ量（すなわち、ストアデータ量）を記憶するのに十分なデータキューの空きがあるか否かを確認する。
【００７８】
応答送出部２５３は、データキュー確認部２５２によるデータキューの空き状況の確認の結果、ストアデータを記憶するのに十分なデータキューの空きがある場合に、データキュー確認応答をブロックストア要求発行元のＣＰＵ１００へ送出する。
【００７９】
ストア処理部２５４は、無効化処理部２５１から無効化処理が完了した旨が通知されると、データ受付部２０７のデータキューからストアデータを読み出し、無効化処理部２５１から通知されたメモリ４００のアドレスにストアデータを書き込む。そして、ストア処理部２５４は、ストアデータをメモリ４００に書き込み終わると、ストア処理が完了した旨を完了報告送出部２５５へ通知する。
【００８０】
完了報告送出部２５５は、ストア処理部２５４によるストア処理が完了すると、ブロックストア要求に付与されているＲＥＱＩＤと同一のＲＥＱＩＤが付与された完了報告をブロックストア要求発行元のＣＰＵ１００へ送出する。
【００８１】
次いで、上記のように構成されたＣＰＵ１００およびシステムコントローラ２００のブロックストア処理時の動作について、図８に示すシーケンス図を参照しながら説明する。
【００８２】
まず、命令実行部１０１による演算処理の結果、キャッシュ１０２のデータが更新され、更新されたデータでメモリ４００のメモリブロックを書き換えるブロックストア処理が開始される。ブロックストア処理が開始されると、書き換えられるメモリ４００のメモリブロックのアドレスおよび新たなデータを含むブロックライトリクエストがＢＷＱ１５１ａに記憶される。
【００８３】
そして、ＣＰＵ１００ではブロックストア処理のファーストフローが開始され（ステップＳ１０１）、ＢＷＱ１５１ａからアドレスがＲＥＱＩＤ付与部１５２へ出力され、ＲＥＱＩＤが付与される。このとき、ＭＩＢ１０３ａ、ＭＩＱ１０３ｂ、およびＢＷＱ１５１ａのいずれかから優先制御によってアドレスまたはリクエストが出力されるが、一般に、ブロックストア処理は、メモリコピー時に実行されることが多く、コピー処理中は他の処理が実行されないため、キャッシュ１０２と無関係なリクエストは発生しにくく、ＭＩＱ１０３ｂに記憶されるリクエストはほぼないと考えられる。また、ＭＩＢ１０３ａに記憶されるリクエストについては、通常動作に関するリクエストであるためコピー処理中も発生する可能性があり、ＭＩＢ１０３ａから出力されるリクエスト用のＲＥＱＩＤとＢＷＱ１５１ａから出力されるアドレス用のＲＥＱＩＤとを別々に用意するようにしても良い。
【００８４】
ＲＥＱＩＤが付与されたアドレスは、ブロックストア要求としてシステムコントローラ（図８ではＳＣと表記）２００へ発行され（ステップＳ１０２）、リクエスト受付部２０１によって受け付けられる。ここで、ＢＷＱ１５１ａの物理キュー数とリクエスト受付部２０１のエントリ数とは一致していないが、ＲＥＱＩＤ付与部１５２によってブロックストア要求にＲＥＱＩＤが付与されており、リクエスト受付部２０１においては、エントリ数と同数の物理キューを有するＢＷＱ１５１ａからブロックストア要求が発行されているのと同等になる。
【００８５】
また、本実施の形態においては、ブロックストア要求を２フローに分けているため、ファーストフローではアドレスのみがシステムコントローラ２００へ通知され、データは送出されない。このため、ファーストフローにおいては、システムコントローラ２００のデータ受付部２０７におけるデータキューをストアデータが占有することがない。もし、従来のブロックストア処理と同様に、アドレスとデータが同時に送出されると、データ受付部２０７のデータキューは、図８中の時間Ｔ１の間ストアデータによって占有されることになる。
【００８６】
リクエスト受付部２０１に受け付けられたブロックストア要求は、順次ＯＲＤＩＤ付与部２０２へ出力され、ＯＲＤＩＤ付与部２０２によって、ＲＥＱＩＤがＯＲＤＩＤに書き換えられるとともに、リクエストの内容がブロックストア要求であると解釈され（ステップＳ１０３）、無効化処理部２５１およびデータキュー確認部２５２へブロックストア要求が出力される。
【００８７】
そして、無効化処理部２５１によって、ブロックストア要求に含まれるアドレスのデータの無効化要求がブロックストア要求発行元のＣＰＵ１００以外の他のＣＰＵ１００すべてへ送出される（ステップＳ１０４）。この無効化要求を受け、他のＣＰＵ１００では、キャッシュ１０２に記憶されたデータのうち、ブロックストア処理によってメモリ４００上で書き換えられるデータが無効化される（ステップＳ１０５）。データが無効化されると、他のＣＰＵ１００からは無効化完了報告がシステムコントローラ２００へ送出される（ステップＳ１０６）。無効化完了報告は、無効化処理部２５１によって取得され、他のＣＰＵ１００における無効化が完了したことが確認される（ステップＳ１０７）。これにより無効化処理が完了するため、無効化処理部２５１からストア処理部２５４へ無効化処理が完了した旨が通知される。
【００８８】
一方、ＯＲＤＩＤ付与部２０２からブロックストア要求が出力されると、データキュー確認部２５２によって、データ受付部２０７のデータキューの空き状況が確認される（ステップＳ１０８）。具体的には、データ受付部２０７のデータキューに、ブロックストア要求に含まれるアドレス分のデータに相当する空き領域があるか否かが確認される。空き領域があることが確認されると、メモリ４００にストアされるストアデータをデータキューに記憶することが可能であるため、応答送出部２５３からブロックストア要求発行元のＣＰＵ１００へデータキュー確認応答が送出される（ステップＳ１０９）。なお、空き領域がない場合は、空き領域ができるまでデータキュー確認応答の送出が待機される。
【００８９】
ブロックストア要求発行元のＣＰＵ１００では、ＲＥＱＩＤ開放部１５３によってデータキュー確認応答が取得され、セカンドフローが開始されることになる（ステップＳ１１０）。すなわち、ＲＥＱＩＤ開放部１５３によって、データキュー確認応答に付与されたＲＥＱＩＤに対応するＢＷＱ１５１ａの物理キュー番号がＲＥＱＩＤテーブル１０５から読み出され、この物理キューに記憶されているストアデータがＲＥＱＩＤ付与部１５２へ出力される。そして、ストアデータは、ＲＥＱＩＤ付与部１５２からシステムコントローラ２００へ送出される（ステップＳ１１１）。
【００９０】
ストアデータは、データ受付部２０７によって受け付けられ、データキューに記憶される。このとき、ブロックストア要求によってデータキューの空き状況が確認されているため、データキューにはストアデータを記憶するのに十分な空き領域が残っている。そして、データキューにストアデータが記憶されると、ストア処理部２５４によって、ストアデータをストアする旨のストア命令が発行され（ステップＳ１１２）、ストアデータとともに主記憶制御部３００を介してメモリ４００へ送出される（ステップＳ１１４）。そして、ストアデータがメモリ４００に書き込まれることにより、ストア処理が完了する（ステップＳ１１５）。
【００９１】
また、同時に、ストア処理部２５４によって、ストア処理が完了した旨が完了報告送出部２５５へ通知され、完了報告送出部２５５によって、完了報告がブロックストア要求発行元のＣＰＵ１００へ送出される（ステップＳ１１３）。
【００９２】
本実施の形態においては、システムコントローラ２００のデータ受付部２０７にストアデータが記憶されるのは、ブロックストア要求発行元のＣＰＵ１００においてブロックストア処理のセカンドフローが開始された後である。すなわち、データ受付部２０７のデータキューは、図８中の時間Ｔ２の間のみストアデータによって占有されることになる。この時間Ｔ２は、従来と同様のブロックストア処理が実行された場合のデータキューの占有時間Ｔ１よりも大幅に短い。このため、同容量のデータキューであれば、本実施の形態のブロックストア処理の方がデータキューの使用効率が高く、スループットを向上することができる。換言すれば、ブロックストア処理の頻度が同一であるとき、本実施の形態のブロックストア処理によれば、従来よりも少ないデータキューでブロックストア処理を実行可能である。
【００９３】
以上のように、本実施の形態によれば、ＣＰＵ１００において発生したブロックストア処理をアドレスのみを送出するファーストフローとデータを送出するセカンドフローとの２フローに分けるとともに、ファーストフローにおいては、アドレスにＲＥＱＩＤを付与する。このため、応答側のバッファ容量に関わらずブロックストア処理に係るブロックライトリクエストを多く記憶することができるとともに、応答側のバッファがデータによって占有される時間を短縮することができ、応答側におけるスループットを向上することができる。
【産業上の利用可能性】
【００９４】
本発明は、応答側のバッファ容量に関わらず多くのリクエストを記憶することができ、ＣＰＵコアの処理効率をより向上させる場合に適用することができる。
【図面の簡単な説明】
【００９５】
【図１】図１は、本発明の実施の形態１に係る情報処理装置の概略構成を示すブロック図である。
【図２】図２は、実施の形態１に係るＣＰＵの要部構成を示すブロック図である。
【図３】図３は、実施の形態１に係るＲＥＱＩＤテーブルの一例を示す図である。
【図４】図４は、実施の形態１に係るシステムコントローラの要部構成を示すブロック図である。
【図５】図５は、実施の形態１に係るＣＰＵにおける処理を模式的に示す図である。
【図６】図６は、本発明の実施の形態２に係るＣＰＵの要部構成を示すブロック図である。
【図７】図７は、実施の形態２に係るシステムコントローラの要部構成を示すブロック図である。
【図８】図８は、実施の形態２に係るブロックストア処理時の動作を示すシーケンス図である。
【符号の説明】
【００９６】
１０１  命令実行部
１０２  キャッシュ
１０３、１５１  リクエスト記憶部
１０３ａ  ＭＩＢ
１０３ｂ  ＭＩＱ
１５１ａ  ＢＷＱ
１０４、１５２  ＲＥＱＩＤ付与部
１０５  ＲＥＱＩＤテーブル
１０６、１５３  ＲＥＱＩＤ開放部
２０１  リクエスト受付部
２０２  ＯＲＤＩＤ付与部
２０３  Ｉ／Ｏデバイス検索部
２０４  タグ情報制御部
２０５  タグ情報コピー
２０６  リクエスト送出部
２０７  データ受付部
２０８  ＩＤ変換部
２０９  データ送出部
２５１  無効化処理部
２５２  データキュー確認部
２５３  応答送出部
２５４  ストア処理部
２５５  完了報告送出部
【図１】
0004469911.tif 000002
【図２】
0004469911.tif 000003
【図３】
0004469911.tif 000004
【図４】
0004469911.tif 000005
【図５】
0004469911.tif 000006
【図６】
0004469911.tif 000007
【図７】
0004469911.tif 000008
【図８】
0004469911.tif 000009