(57)【要約】【課題】効率よくノンキャッシュリクエストを発行できる演算処理装置を提供する。【解決手段】演算処理装置は、キャッシュメモリを制御する第１のコントローラと、キャッシュメモリを介さずにアクセスされるノンキャッシュ空間が割り当てられた第２のコントローラを含み、第１のコントローラは、ノンキャッシュ空間への第１及び第２のアクセスリクエストの処理順序が追い越し可能であり且つ第１及び第２のアクセスリクエストのアクセス先が同一である条件が満される場合、第２のコントローラへ先に発行した第１のアクセスリクエストに対する第２のコントローラからの完了通知を待たずに第２のアクセスリクエストを第２のコントローラに発行し、条件が満たされない場合、第２のコントローラへ先に発行した第１のアクセスリクエストに対する第２のコントローラからの完了通知を待ってから第２のアクセスリクエストを第２のコントローラに発行する。【選択図】図４
2014112360.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリと、
前記キャッシュメモリを制御する第１のコントローラと、
前記キャッシュメモリを介さずにアクセスされるノンキャッシュ空間が割り当てられた第２のコントローラと、
を含み、前記第１のコントローラは、前記ノンキャッシュ空間への第１及び第２のアクセスリクエストの処理順序が追い越し可能であり且つ前記第１及び第２のアクセスリクエストのアクセス先が同一である条件が満される場合、前記第２のコントローラへ先に発行した前記第１のアクセスリクエストに対する前記第２のコントローラからの完了通知を待たずに前記第２のアクセスリクエストを前記第２のコントローラに発行し、前記条件が満たされない場合、前記第２のコントローラへ先に発行した前記第１のアクセスリクエストに対する前記第２のコントローラからの完了通知を待ってから前記第２のアクセスリクエストを前記第２のコントローラに発行することを特徴とする演算処理装置。
【請求項２】
前記第２のコントローラは複数のコントローラを含み、前記第１及び第２のアクセスリクエストが前記複数のコントローラのうちの１つの同一のコントローラにアクセスする場合に、前記第１のコントローラは、前記第１及び第２のアクセスリクエストのアクセス先が同一であると判定することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記第１のコントローラは、１次キャッシュコントローラと２次キャッシュコントローラとを含み、
前記１次キャッシュコントローラは、前記ノンキャッシュ空間への前記第１及び第２のアクセスリクエストの処理順序が追い越し可能であると判定した場合、前記２次キャッシュコントローラへ先に発行した前記第１のアクセスリクエストに対する前記２次キャッシュコントローラからの応答を待ってから前記第２のアクセスリクエストを前記２次キャッシュコントローラに発行し、前記ノンキャッシュ空間への前記第１及び第２のアクセスリクエストの処理順序が追い越し可能でないと判定した場合、前記２次キャッシュコントローラへ先に発行した前記第１のアクセスリクエストに対する前記第２のコントローラからの完了通知を待ってから前記第２のアクセスリクエストを前記２次キャッシュコントローラに発行し、
前記２次キャッシュコントローラは、前記第１のアクセスリクエストを前記第２のコントローラに発行すると、前記完了通知を待つことなく前記応答を前記１次キャッシュコントローラに送信する
ことを特徴とする請求項１又は２記載の演算処理装置。
【請求項４】
前記第１のコントローラは、前記ノンキャッシュ空間への複数のアクセスリクエストの処理順序が追い越し可能であるが前記複数のアクセスリクエストのアクセス先が同一でない場合、前記第２のコントローラへ先に発行した全てのアクセスリクエストに対する前記第２のコントローラからの完了通知を待ってから、次のアクセスリクエストを前記第２のコントローラに発行することを特徴とする請求項１乃至３何れか一項記載の演算処理装置。
【請求項５】
論理アドレスを物理アドレスに変換するために用いるＴＬＢを更に含み、
前記第１のコントローラは、前記ＴＬＢに含まれる情報に基づいて、前記ノンキャッシュ空間への前記第１及び第２のアクセスリクエストの処理順序が追い越し可能であるか否かを判定することを特徴とする請求項１乃至４何れか一項記載の演算処理装置。
【請求項６】
キャッシュメモリと、前記キャッシュメモリを制御する第１のコントローラと、前記キャッシュメモリを介さずにアクセスされるノンキャッシュ空間が割り当てられた第２のコントローラとを含む演算処理装置において、
前記ノンキャッシュ空間への第１及び第２のアクセスリクエストの処理順序が追い越し可能である第１の条件が満たされるか否かを判定し、
前記第１及び第２のアクセスリクエストのアクセス先が同一である第２の条件が満たされるか否かを判定し、
前記第１の条件及び前記第２の条件の両方が満たされる場合、前記第２のコントローラへ先に発行した前記第１のアクセスリクエストに対する前記第２のコントローラからの完了通知を待たずに、前記第２のアクセスリクエストを前記第１のコントローラから前記第２のコントローラに発行し、
前記第１の条件及び前記第２の条件の少なくとも一方が満たされない場合、前記第２のコントローラへ先に発行した前記第１のアクセスリクエストに対する前記第２のコントローラからの完了通知を待ってから、前記第２のアクセスリクエストを前記第１のコントローラから前記第２のコントローラに発行する
ことを特徴とする演算処理装置の制御方法。
【請求項７】
前記第２のコントローラは複数のコントローラを含み、前記第１及び第２のアクセスリクエストが前記複数のコントローラのうちの１つの同一のコントローラにアクセスする場合に、前記第１のコントローラは、前記第２の条件が満たされると判定することを特徴とする請求項６記載の演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願開示は、演算処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
ＣＰＵが備えるコマンドとして、ノンキャッシュ空間へのアクセス命令がある。ノンキャッシュ空間とは、キャッシュメモリを介在せずにアクセスされるメモリ空間をいう。ノンキャッシュ空間へのアクセス命令は、キャッシュメモリを介さないで、アクセス対象のデバイスに割り当てされているメモリ空間にアクセスするための命令である。ノンキャッシュ命令によるノンキャッシュ空間へのアクセスは、ノンキャッシャブル空間として定義されたアドレス空間への読み書きとして定義される。
【０００３】
ノンキャッシュ空間へのアクセスの動作は、レジスタの読み書きをしたり、Ｉ／Ｏ装置への動作を指示したりするものである。例えば、メモリコントローラへのノンキャッシュリクエストにより、メモリコントローラ内にあるレジスタにアクセスできる。また例えば、ＰＣＩｅ（Peripheral Component Interconnect Express）コントローラへのノンキャッシュリクエストにより、ＰＣＩｅコントローラ内のレジスタ、又は、例えばＰＣＩｅカード等の外部装置内のレジスタにアクセスすることができる。また例えば、ＣＰＵインタフェースコントローラへのノンキャッシュリクエストにより、他ＣＰＵに繋がっているメモリコントローラやＰＣＩｅコントローラ等の装置へアクセスすることができる。
【０００４】
デバイスのドライバからの割り込み処理として、当該デバイスに対してノンキャッシュライト動作を複数回実行し、その後同期をとるためにノンキャッシュリード動作を１回実行するアクセスパターンがよくある。従って、ノンキャッシュリクエストを連続発行する際に効率的に発行できることが望ましい。
【０００５】
従来のノンキャッシュ制御において、命令コントローラから発行されたリクエストを受けた１次キャッシュコントローラは、ＴＬＢ（Translation Lookaside Buffer）を用いて、アクセス先の仮想アドレスを物理アドレスへと変換する。この物理アドレス内のＮＣビット（キャッシャブル空間かノンキャッシャブル空間かを表すビット）がノンキャッシュ空間を示す場合、１次キャッシュコントローラは、ノンキャッシュリクエストを２次キャッシュコントローラへ発行する。２次キャッシュコントローラは、このノンキャッシュリクエストを、リクエスト宛先のシステムコントローラ（メモリコントローラ、ＰＣＩｅコントローラ、ＣＰＵインタフェースコントローラ等）に発行する。
【０００６】
命令コントローラから発行される次のリクエストがノンキャッシュリクエストの場合、このリクエストは１次キャッシュコントローラにおいて待機する。システムコントローラにおいて最初のリクエストの処理が完了すると、当該システムコントローラは、２次キャッシュコントローラに完了通知を発行する。完了通知を受け取った２次キャッシュコントローラは、１次キャッシュコントローラに完了通知を通知する。完了通知を受け取った１次キャッシュコントローラは、待機させておいた次のノンキャッシュリクエストを２次キャッシュコントローラに発行することができる。 
上述の説明のように従来技術では、デバイスからの完了通知を待たなければ、１次キャッシュコントローラを内蔵するＣＰＵコアから、２次キャッシュコントローラに対して、次のノンキャッシュリクエストを発行することができない。しかしながら、ＣＰＵコアからデバイスの完了通知を待たずに、連続でノンキャッシュリクエストを発行できる場合があるにも関わらず、一律にデバイスの完了通知を待つ方式としたのでは、ノンキャッシュリクエストの処理効率が悪くなってしまう。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−１７２６０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
以上を鑑みると、効率よくノンキャッシュリクエストを発行できる演算処理装置が望まれる。
【課題を解決するための手段】
【０００９】
演算処理装置は、キャッシュメモリと、前記キャッシュメモリを制御する第１のコントローラと、前記キャッシュメモリを介さずにアクセスされるノンキャッシュ空間が割り当てられた第２のコントローラを含み、前記第１のコントローラは、前記ノンキャッシュ空間への第１及び第２のアクセスリクエストの処理順序が追い越し可能であり且つ前記第１及び第２のアクセスリクエストのアクセス先が同一である条件が満される場合、前記第２のコントローラへ先に発行した前記第１のアクセスリクエストに対する前記第２のコントローラからの完了通知を待たずに前記第２のアクセスリクエストを前記第２のコントローラに発行し、前記条件が満たされない場合、前記第２のコントローラへ先に発行した前記第１のアクセスリクエストに対する前記第２のコントローラからの完了通知を待ってから前記第２のアクセスリクエストを前記第２のコントローラに発行することを特徴とする。
【発明の効果】
【００１０】
少なくとも１つの実施例によれば、効率よくノンキャッシュリクエストを発行できる演算処理装置が提供される。
【図面の簡単な説明】
【００１１】
【図１】演算処理装置及び周辺デバイス等を含む演算処理システムの構成の一例を示す図である。
【図２】ＩＵ−ＲＥＱのフォーマットの一例を示す図である。
【図３】ＮＣ−ＲＥＱのフォーマットの一例を示す図である。
【図４】アクセスリクエスト発行処理の流れを示すフローチャートである。
【図５】アクセスリクエスト発行処理の動作の一例を示す図である。
【図６】アクセスリクエスト発行処理の動作の別の一例を示す図である。
【図７】アクセスリクエスト発行処理の動作の更に別の一例を示す図である。
【図８】ＴＬＢのＴＴＥのフォーマットを示す図である。
【図９】アクセスリクエスト発行処理の回路構成を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１３】
図１は、演算処理装置及び周辺デバイス等を含む演算処理システムの構成の一例を示す図である。図１の演算処理システムは、演算処理装置であるＣＰＵ１０、メインメモリ１１、外部装置１２、及び他ＣＰＵ１３を含む。ＣＰＵ１０は、複数のＣＰＵコア２１−１乃至２１−ｎ、２次キャッシュコントローラ２２、システムコントローラ２３、及び２次キャッシュメモリ２４を含む。複数のＣＰＵコア２１−１乃至２１−ｎの各々は同一の構成を有しており、ＣＰＵコア２１−１に代表して示されるように、演算器３０、命令コントローラ３１、１次キャッシュメモリ３２、１次キャッシュコントローラ３３、及びＴＬＢ３４を含む。また、２次キャッシュコントローラ内には、各ＣＰＵコアに対応するアドレス判断部３８−１乃至３８−ｎを含む。システムコントローラ２３は、メモリコントローラ３５、ＰＣＩｅコントローラ３６、及びＣＰＵインタフェースコントローラ３７を含む。
【００１４】
なお図１において、各ボックスで示される各機能ブロックと他の機能ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。各機能ブロックは、他のブロックと物理的にある程度分離された１つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の１つの機能を示したものであってもよい。
【００１５】
ＣＰＵコア２１−１乃至２１−ｎは、２次キャッシュメモリ２４を共有し、２次キャッシュコントローラ２２を介して２次キャッシュメモリ２４にアクセスする。またＣＰＵコア２１−１乃至２１−ｎは、２次キャッシュコントローラ２２を介してシステムコントローラ２３の各コントローラにアクセスする。メモリコントローラ３５は、外部メモリであるメインメモリ１１を制御するコントローラである。ＰＣＩｅコントローラ３６は、ＰＣＩｅカード等の外部装置１２を制御するコントローラである。ＣＰＵインタフェースコントローラ３７は、ＣＰＵ１０と同様の構成及び機能を有する他ＣＰＵ１３との情報のやり取りを制御する。システムコントローラ２３のこれらのコントローラには、キャッシュメモリを介さずにアクセスされるノンキャッシュ空間が割り当てられている。
【００１６】
命令コントローラ３１は、１次キャッシュメモリ３２からフェッチした命令をデコードし、デコード結果に応じて演算器３０による演算命令の実行を制御する。また命令コントローラ３１は、ロード命令やストア命令等のアクセスリクエスト（ＩＵ−ＲＥＱ： Instruction Unit-Request）を１次キャッシュコントローラ３３に発行し、１次キャッシュメモリ３２に対するデータのロードやデータのストアを実行する。
【００１７】
命令コントローラ３１から発行されたアクセスリクエスト（ＩＵ−ＲＥＱ）を受けた１次キャッシュコントローラ３３は、ＴＬＢ３４を参照して、アクセスリクエスト中の仮想アドレスを物理アドレスへと変換する。図８よりＴＬＢ３４のＴＴＥ（Translation Table Entry）には、アクセス空間にサイドエフェクトがあるかないかを示すＥビット５０（ＴＴＥｅ）と物理ページ番号を示すＰＡ５１がある。アクセスリクエスト中のアクセス先のアドレスが、インオーダー処理を要件とするデバイスのメモリ空間に対応する場合には、ＴＬＢ３４を参照することによりＴＴＥｅ＝１が得られる。またアクセスリクエスト中のアクセス先のアドレスが、アクセスリクエストの処理順序が追い越し可能であるデバイスのメモリ空間に対応する場合には、ＴＬＢ３４を参照することによりＴＴＥｅ＝０が得られる。
【００１８】
またＴＬＢ３４を参照して仮想アドレスとＰＡ５１から得られた物理アドレスには、当該アドレスがキャッシャブル空間かノンキャッシャブル空間かを示すビットであるＮＣビットが含まれる。１次キャッシュコントローラ３３は、ＮＣビットがノンキャッシュ空間を示す場合、ノンキャッシュリクエスト（ＮＣ−ＲＥＱ: NonCache-Request）を、２次キャッシュコントローラ２２へ発行する。１次キャッシュコントローラ３３は、ＮＣビットがキャッシュ空間を示す場合、１次キャッシュメモリ３２に対するアクセスを実行する。１次キャッシュメモリ３２と２次キャッシュメモリ２４とは階層構造となっており、１次キャッシュメモリ３２においてアクセスがヒットしない場合、２次キャッシュコントローラ２２を介して２次キャッシュメモリ２４へのアクセスが実行される。１次キャッシュコントローラ３３と２次キャッシュコントローラ２２とは、キャッシュメモリ（１次キャッシュメモリ３２及び２次キャッシュメモリ２４）を制御するコントローラである。
【００１９】
図２は、ＩＵ−ＲＥＱのフォーマットの一例を示す図である。図２に示されるように、命令コントローラ３１から１次キャッシュコントローラ３３に発行するアクセスリクエストであるＩＵ−ＲＥＱは、命令コード４１と仮想アドレス４２とを含む。命令コード（オペコード）４１は、当該命令の種類を示すコードであり、例えばストア命令（書き込み命令）であることを示すコードやロード命令（読み出し命令）であることを示すコードである。仮想アドレス４２は、ストア命令やロード命令等においてアクセスする先を示す仮想アドレスである。
【００２０】
図３は、ＮＣ−ＲＥＱのフォーマットの一例を示す図である。図３に示されるように、１次キャッシュコントローラ３３から２次キャッシュコントローラ２２へ発行するアクセスリクエストであるＮＣ−ＲＥＱは、ノンキャッシュ命令コード（オペコード）４３と物理アドレス４４とＣＯＲＥ−ＩＤ４９を含む。ノンキャッシュ命令コード４３は、当該命令の種類を示すコードであり、例えば当該命令が例えばノンキャッシュストア命令（書き込み命令）であることを示すコードや、ノンキャッシュロード命令（読み出し命令）であることを示すコードである。物理アドレス４４は、ＮＣビット４５、ＣＰＵ識別子であるＣＰＵ−ＩＤ４６、コントローラ識別子であるＣＴＬ−ＩＤ４７、及びアドレス４８を含む。また、ＣＯＲＥ−ＩＤ４９はＣＰＵコア識別子である。
【００２１】
ＮＣビット４５は、前述のように、アクセス先のアドレス（アドレス４８が指し示す先）がキャッシャブル空間かノンキャッシャブル空間かを示すビットである。またＣＰＵ−ＩＤ４６は、当該ＮＣ−ＲＥＱがアクセスする先のＣＰＵを識別する識別子である。例えばＮＣ−ＲＥＱが、図１に示すＣＰＵ１０内のＰＣＩｅコントローラ３６にアクセスする場合、ＣＰＵ−ＩＤ４６は、図１に示す当該ＣＰＵ１０を識別する識別子となる。またＮＣ−ＲＥＱが、図１に示す他ＣＰＵ１３のＰＣＩｅコントローラにアクセスする場合、ＣＰＵ−ＩＤ４６は、図１に示す他ＣＰＵ１３を識別する識別子となる。ＣＴＬ−ＩＤ４７は、アクセス先のコントローラを識別する識別子である。例えばＮＣ−ＲＥＱが、図１に示すＣＰＵ１０内のＰＣＩｅコントローラ３６にアクセスする場合、ＣＴＬ−ＩＤ４７は、図１に示すＰＣＩｅコントローラ３６を識別する識別子となる。アドレス４８は、メモリ空間中のアクセス先の物理アドレスである。例えばＮＣ−ＲＥＱが、図１に示すＣＰＵ１０内のＰＣＩｅコントローラ３６にアクセスする場合、アドレス４８は、ＰＣＩｅコントローラ３６に割り当てられたメモリ空間中の特定のアドレスとなる。ＣＯＲＥ−ＩＤ４９は各ＣＰＵコア２１−１乃至２１−ｎからのＮＣ−ＲＥＱから作成され、ＮＣ−ＲＥＱのリクエスト元であるＣＰＵコアを識別する識別子となる。
【００２２】
図４は、アクセスリクエスト発行処理の流れを示すフローチャートである。図４を参照して、アクセスリクエスト発行処理について説明する。
【００２３】
ステップＳ１において、命令コントローラ３１がリクエスト（ＩＵ−ＲＥＱ）を発行する。ステップＳ２において、１次キャッシュコントローラ３３が、リクエスト（ＩＵ−ＲＥＱ）を受け付け、リクエスト中の仮想アドレスに基づきＴＬＢ３４を参照することにより、仮想アドレスに対応する物理アドレスを得る。１次キャッシュコントローラ３３は更に、物理アドレス中のＮＣビットを確認することにより、当該リクエストがノンキャッシュ空間へのアクセスであるか否かを判断する。当該リクエストがキャッシュ空間へのアクセスである場合には、１次キャッシュメモリ３２や２次キャッシュメモリ２４に対する通常のキャッシュアクセス制御が実行される。当該リクエストがノンキャッシュ空間へのアクセスである場合には、ステップＳ３以降の処理が実行される。
【００２４】
ステップＳ３で、１次キャッシュコントローラ３３は、ＴＬＢ３４を参照することにより得られたＴＴＥｅの値が０であるか否かを判定する。ＴＴＥｅ＝０でない場合（ＴＴＥｅ＝１の場合）、アクセス先のメモリ空間がインオーダー処理を要件とするデバイスであることを意味する。この場合、ステップＳ４で、１次キャッシュコントローラ３３は、当該リクエストの直前のリクエストに対するアクセス先のデバイス又はコントローラからの完了通知（リクエストされた処理の実行の完了を知らせる通知）を既に受領しているか否かを判定する。既に完了通知を受領していれば、１次キャッシュコントローラ３３は、２次キャッシュコントローラ２２にリクエスト（ＮＣ−ＲＥＱ）を発行する（ステップＳ８）。完了通知を受領していない場合、ステップＳ５で、１次キャッシュコントローラ３３は、デバイスからの完了通知が到来するまで待機する。完了通知が到来すると、１次キャッシュコントローラ３３は、２次キャッシュコントローラ２２にリクエスト（ＮＣ−ＲＥＱ）を発行する（ステップＳ８）。
【００２５】
このように１次キャッシュコントローラ３３は、ノンキャッシュ空間へのアクセスリクエストの処理順序が追い越し可能でないと判定した場合、２次キャッシュコントローラ２２へ先に発行したアクセスリクエストに対する完了通知を待つ。この完了通知は、アクセス先のデバイスからシステムコントローラ２３を介して、又はシステムコントローラ２３から到来する。１次キャッシュコントローラ３３は、先に発行したアクセスリクエストに対する完了通知を待ってから（即ち完了通知が到来すると）、現在処理中のアクセスリクエストを２次キャッシュコントローラ２２に発行する。
【００２６】
ステップＳ３の判定結果がＴＴＥｅ＝０である場合、アクセス先のメモリ空間がアクセスリクエストの処理順序が追い越し可能であるデバイスに対応することを意味する。この場合、ステップＳ６で、直前のリクエストについて２次キャッシュコントローラ２２からの応答（ＮＣ−ＴＫＮ）があるか否かを確認する。この応答（ＮＣ−ＴＫＮ）は、２次キャッシュコントローラ２２が、アクセスリクエストをシステムコントローラ２３に発行すると、上記の完了通知を待つことなく１次キャッシュコントローラ３３に送信するものである。
【００２７】
応答を受領していない場合（ステップＳ６でＮｏ）、ステップＳ７で、１次キャッシュコントローラ３３は応答が到来するまで待機する。応答を受領すると（ステップＳ６でＹｅｓ）、ステップＳ８で、１次キャッシュコントローラ３３は、２次キャッシュコントローラ２２にリクエスト（ＮＣ−ＲＥＱ）を発行する。
【００２８】
このように１次キャッシュコントローラ３３は、ノンキャッシュ空間へのアクセスリクエストの処理順序が追い越し可能であると判定した場合、２次キャッシュコントローラ２２へ先に発行したアクセスリクエストに対する応答を待つ。この応答は、２次キャッシュコントローラ２２が、アクセスリクエストをシステムコントローラ２３に発行すると、完了通知を待つことなく１次キャッシュコントローラ３３に送信するものである。１次キャッシュコントローラ３３は、先に発行したアクセスリクエストに対する応答を待ってから（即ち応答が到来すると）、現在処理中のアクセスリクエストを２次キャッシュコントローラ２２に発行する。
【００２９】
ステップＳ９で、２次キャッシュコントローラ２２は、１次キャッシュコントローラ３３からのアクセスリクエストを受け付ける。ステップＳ１０で、２次キャッシュコントローラ２２は、システムコントローラ２３へのリクエストの発行数を確認する。ここでリクエストの発行数とは、２次キャッシュコントローラ２２からシステムコントローラ２３へ発行したリクエストであって、その完了通知がシステムコントローラ２３から届いていないリクエストの数である。
【００３０】
ステップＳ１０での判定結果が発行数＝０を示す場合、ステップＳ１１で、２次キャッシュコントローラ２２はシステムコントローラ２３にアクセスリクエストを発行し、且つ、１次キャッシュコントローラ３３に応答ＮＣ−ＴＫＮを送信する。２次キャッシュコントローラ２２は更に、発行したリクエストのアドレスを保持し（記憶し）、発行数のカウントを１増加する。
【００３１】
ステップＳ１０での判定結果が発行数が０より大きく且つｆｕｌｌ未満であることを示す場合、ステップＳ１２で、２次キャッシュコントローラ２２は、直前のアクセスリクエストの記憶してあるアドレスと現在処理中のアクセスリクエストのアドレスとを比較する。この比較はアクセス先（「宛先」）を確認するために行われる。
【００３２】
直前と現在との２つのアクセスリクエストのアクセス先が同一である条件が満される場合（ステップＳ１２で「同一宛先」）、ステップＳ１１で、２次キャッシュコントローラ２２は、システムコントローラ２３にアクセスリクエストを発行する。この際、２次キャッシュコントローラ２２は、システムコントローラ２３へ先に発行したアクセスリクエストに対するシステムコントローラ２３からの完了通知を待たずに、現在処理中のアクセスリクエストをシステムコントローラ２３に発行する。なおシステムコントローラ２３は複数のコントローラ（３５，３６，３７）を含んでいる。従って、２次キャッシュコントローラ２２がシステムコントローラ２３にアクセスリクエストを発行する場合には、ＮＣ−ＲＥＱの物理アドレス（図３参照）のＣＴＬ−ＩＤ４７が示す１つのコントローラにアクセスリクエストが発行されることになる。また、２つのアクセスリクエストがこれら複数のコントローラのうちの１つの同一のコントローラにアクセスする場合に、２次キャッシュコントローラ２２は、２つのアクセスリクエストのアクセス先が同一であると判定する。より具体的には、図３に示す物理アドレス４４のうち、上位ビット側のＣＰＵ−ＩＤ４６、及びＣＴＬ−ＩＤ４７が２つのアクセスリクエストにおいて一致している場合に、２つのアクセスリクエストのアクセス先が同一であると判定する。下位ビット側のアドレス４８が２つのアクセスリクエストにおいて異なっていても、２つのアクセスリクエストのアクセス先が同一であると判定する。
【００３３】
直前と現在との２つのアクセスリクエストのアクセス先が同一である条件が満されない場合（ステップＳ１２で「別宛先」）、ステップＳ１３で、２次キャッシュコントローラ２２は、発行数が０になるまで待機する。発行数は、システムコントローラ２３へ既に発行したアクセスリクエストに対するシステムコントローラ２３からの完了通知（リクエストされた処理実行が完了したことを知らせる通知：ＮＣ−ＥＮＤ）が到来するたびに、１減少する。発行数が０になると、２次キャッシュコントローラ２２は、現在処理中のアクセスリクエストをシステムコントローラ２３に発行する（ステップＳ１１）。このようにして、アクセス先が同一である条件が満されない場合、２次キャッシュコントローラ２２は、システムコントローラ２３へ先に発行したアクセスリクエストに対するシステムコントローラ２３からの完了通知を待機する。２次キャッシュコントローラ２２は、先に発行したアクセスリクエストに対するシステムコントローラ２３からの完了通知を待ってから、現在処理中のアクセスリクエストをシステムコントローラ２３に発行する。この際、システムコントローラ２３へ先に発行したアクセスリクエストが複数有る場合には、全てのアクセスリクエストに対するシステムコントローラ２３からの完了通知を待ってから、現在処理中のアクセスリクエストをシステムコントローラ２３に発行する。
【００３４】
ステップＳ１０での判定結果が発行数＝ｆｕｌｌを示す場合、ステップＳ１３で、２次キャッシュコントローラ２２は、発行数＜ｆｕｌｌになるまで待機する。ここでｆｕｌｌとは、２次キャッシュコントローラ２２が受け付けることのできるリクエストの数であり、例えば、受け付けたリクエストを保持する２次キャッシュコントローラ２２に内蔵のバッファの容量に依存する。
【００３５】
ステップＳ１４で、システムコントローラ２３（メモリコントローラ３５、ＰＣＩｅコントローラ３６、又はＣＰＵインタフェースコントローラ３７）がリクエストを受け付け、必要に応じてデバイス側にリクエストを発行する。即ち、メインメモリ１１や、外部装置１２や、他ＣＰＵ１３等にリクエストを発行する。なお、例えばＰＣＩｅコントローラ３６がリクエストを受け付けた場合、当該リクエストがＰＣＩｅコントローラ３６内部のレジスタにアクセスするリクエストである場合には、外部装置１２にリクエストを発行することはない。一方、当該リクエストが外部装置１２にアクセスするリクエストである場合には、ＰＣＩｅコントローラ３６から外部装置１２にリクエストが発行される。
【００３６】
ステップＳ１５で、デバイス側或いはシステムコントローラ２３によりリクエスト処理が完了すると、処理完了を示す完了通知（ＮＣ−ＥＮＤ）がシステムコントローラ２３から２次キャッシュコントローラ２２に送信される。前述のように、完了通知（ＮＣ−ＥＮＤ）が到来するたびに、２次キャッシュコントローラ２２側では、発行数を１減少する処理を行う。
【００３７】
図５は、アクセスリクエスト発行処理の動作の一例を示す図である。まず命令コントローラ３１から１次キャッシュコントローラ３３にリクエストＩＵ−ＲＥＱ１が発行される。このリクエストＩＵ−ＲＥＱ１に対応するＴＴＥｅが０である場合、ノンキャッシュリクエストＮＣ−ＲＥＱ１が、１次キャッシュコントローラ３３から２次キャッシュコントローラ２２へと発行される。ここで、次のリクエストＩＵ−ＲＥＱ２及びＩＵ−ＲＥＱ３が命令コントローラ３１から発行され、対応するＴＴＥｅが０である場合、対応するノンキャッシュリクエストＮＣ−ＲＥＱ２及びＮＣ−ＲＥＱ３は、１次キャッシュコントローラ３３で待機する。
【００３８】
１次キャッシュコントローラ３３からノンキャッシュリクエストＮＣ−ＲＥＱ１を受け取った２次キャッシュコントローラ２２は、初期状態での発行数が０であるので、直ちにシステムコントローラ２３にノンキャッシュリクエストＮＣ−ＲＥＱ１を発行する。この際、発行数は１増加される（ステップＳ５１）。またＮＣ−ＲＥＱ１の発行と同時に、又は並行して、又は直前若しくは直後に、２次キャッシュコントローラ２２は、ＮＣ−ＲＥＱ１の発行を示す通知として、１次キャッシュコントローラ３３に応答ＮＣ−ＴＫＮ１を発行する。ＮＣ−ＴＫＮ１を受け取った１次キャッシュコントローラ３３は、次のノンキャッシュリクエストＮＣ−ＲＥＱ２を２次キャッシュコントローラ２２に発行する。
【００３９】
ＮＣ−ＲＥＱ２を受け取った２次キャッシュコントローラ２２は、ＮＣ−ＲＥＱ１のアクセス先とＮＣ−ＲＥＱ２のアクセス先とを比較して、同一アクセス先（同一宛先）ならば、直ちにシステムコントローラ２３にＮＣ−ＲＥＱ２を発行する。この際、発行数は１増加される（ステップＳ５２）。またＮＣ−ＲＥＱ２の発行と同時に、又は並行して、又は直前若しくは直後に、２次キャッシュコントローラ２２は、ＮＣ−ＲＥＱ２の発行を示す通知として、１次キャッシュコントローラ３３に応答ＮＣ−ＴＫＮ２を発行する。ＮＣ−ＴＫＮ２を受け取った１次キャッシュコントローラ３３は、次のノンキャッシュリクエストＮＣ−ＲＥＱ３を２次キャッシュコントローラ２２に発行する。
【００４０】
ＮＣ−ＲＥＱ３を受け取った２次キャッシュコントローラ２２は、ＮＣ−ＲＥＱ２のアクセス先とＮＣ−ＲＥＱ３のアクセス先とを比較して、同一アクセス先（同一宛先）ならば、直ちにシステムコントローラ２３にＮＣ−ＲＥＱ３を発行する。この際、発行数は１増加される（ステップＳ５３）。またＮＣ−ＲＥＱ３の発行と同時に、又は並行して、又は直前若しくは直後に、２次キャッシュコントローラ２２は、ＮＣ−ＲＥＱ３の発行を示す通知として、１次キャッシュコントローラ３３に応答ＮＣ−ＴＫＮ３を発行する。
【００４１】
リクエスト完了通知ＮＣ−ＥＮＤ１及びＮＣ−ＥＮＤ２がシステムコントローラ２３から２次キャッシュコントローラ２２に送信されると、２次キャッシュコントローラ２２では各完了通知毎に発行数を１減算する（ステップＳ５４、Ｓ５６）。 
図６は、アクセスリクエスト発行処理の動作の別の一例を示す図である。まず命令コントローラ３１から１次キャッシュコントローラ３３にリクエストＩＵ−ＲＥＱ１が発行される。このリクエストＩＵ−ＲＥＱ１に対応するＴＴＥｅが０である場合、ノンキャッシュリクエストＮＣ−ＲＥＱ１が、１次キャッシュコントローラ３３から２次キャッシュコントローラ２２へと発行される。ここで、次のリクエストＩＵ−ＲＥＱ２及びＩＵ−ＲＥＱ３が命令コントローラ３１から発行され、対応するＴＴＥｅが０である場合、対応するノンキャッシュリクエストＮＣ−ＲＥＱ２及びＮＣ−ＲＥＱ３は、１次キャッシュコントローラ３３で待機する。
【００４２】
１次キャッシュコントローラ３３からノンキャッシュリクエストＮＣ−ＲＥＱ１を受け取った２次キャッシュコントローラ２２は、初期状態での発行数が０であるので、直ちにシステムコントローラ２３にノンキャッシュリクエストＮＣ−ＲＥＱ１を発行する。この際、発行数は１増加される（ステップＳ６１）。またＮＣ−ＲＥＱ１の発行と同時に、又は並行して、又は直前若しくは直後に、２次キャッシュコントローラ２２は、ＮＣ−ＲＥＱ１の発行を示す通知として、１次キャッシュコントローラ３３に応答ＮＣ−ＴＫＮ１を発行する。ＮＣ−ＴＫＮ１を受け取った１次キャッシュコントローラ３３は、次のノンキャッシュリクエストＮＣ−ＲＥＱ２を２次キャッシュコントローラ２２に発行する。
【００４３】
ＮＣ−ＲＥＱ２を受け取った２次キャッシュコントローラ２２は、ＮＣ−ＲＥＱ１のアクセス先とＮＣ−ＲＥＱ２のアクセス先とを比較する。アクセス先が異なる（別宛先）であるので（ステップＳ６２）、２次キャッシュコントローラ２２は、先にシステムコントローラ２３へ発行したＮＣ−ＲＥＱ１に対する完了通知ＮＣ−ＥＮＤ１が到来するまでＮＣ−ＲＥＱ２を待機させる。ＮＣ−ＲＥＱ１に対する完了通知ＮＣ−ＥＮＤ１がシステムコントローラ２３から到来すると、２次キャッシュコントローラ２２は、発行数を１減算する（ステップＳ６３）。これにより発行数が０となるので、２次キャッシュコントローラ２２は、システムコントローラ２３にＮＣ−ＲＥＱ２を発行する。これに応じて、発行数は１増加される（ステップＳ６３）。またＮＣ−ＲＥＱ２の発行と同時に、又は並行して、又は直前若しくは直後に、２次キャッシュコントローラ２２は、ＮＣ−ＲＥＱ２の発行を示す通知として、１次キャッシュコントローラ３３に応答ＮＣ−ＴＫＮ２を発行する。ＮＣ−ＴＫＮ２を受け取った１次キャッシュコントローラ３３は、次のノンキャッシュリクエストＮＣ−ＲＥＱ３を２次キャッシュコントローラ２２に発行する。
【００４４】
ＮＣ−ＲＥＱ３を受け取った２次キャッシュコントローラ２２は、ＮＣ−ＲＥＱ２のアクセス先とＮＣ−ＲＥＱ３のアクセス先とを比較する。アクセス先が異なる（別宛先）であるので（ステップＳ６４）、２次キャッシュコントローラ２２は、先にシステムコントローラ２３へ発行したＮＣ−ＲＥＱ２に対する完了通知ＮＣ−ＥＮＤ２が到来するまでＮＣ−ＲＥＱ３を待機させる。
【００４５】
リクエスト完了通知ＮＣ−ＥＮＤ２がシステムコントローラ２３から２次キャッシュコントローラ２２に送信されると、２次キャッシュコントローラ２２では発行数を１減算する（ステップＳ６５）。
【００４６】
図７は、アクセスリクエスト発行処理の動作の更に別の一例を示す図である。図７に示す例では、命令コントローラ３１、１次キャッシュコントローラ３３、及び２次キャッシュコントローラ２２の動作は、図５に示す動作と同じである。図７においては、図５の場合と異なり、システムコントローラ２３又はデバイスによるリクエスト処理が、ＮＣ−ＲＥＱ１よりもＮＣ−ＲＥＱ２に対して先に完了している。その結果、ＮＣ−ＲＥＱ２に対する完了通知ＮＣ−ＥＮＤ２が、ＮＣ−ＲＥＱ１に対する完了通知ＮＣ−ＥＮＤ１よりも先に、システムコントローラ２３から２次キャッシュコントローラ２２に発行されている。ＮＣ−ＲＥＱ１及びＮＣ−ＲＥＱ２は、ＴＴＥｅが０であり、アクセス先のメモリ空間がアクセスリクエストの処理順序が追い越し可能であるデバイスに対応している。従って、図７に示す動作例の場合のように、後にリクエストが発行されたＮＣ−ＥＮＤ２が、先にリクエストが発行されたＮＣ−ＲＥＱ１を追い越して、先に処理が完了してしまってもよい。このようにアクセスリクエストの処理順序が追い越し可能である場合、後に発行されたアクセスリクエストが、先に発行されたアクセスリクエストよりも、先に処理が開始されて先に処理が完了したり、後に処理が開始されて先に処理が完了したりしてよい。即ち、アクセスリクエストの処理順序が追い越し可能である場合、処理順序がリクエスト発行順序と異なってもよく、処理順序がリクエスト発行順序と異なったことによる結果として、処理結果に支障が生じることがない。
【００４７】
図９はアクセスリクエスト発行処理の回路構成を示す図である。複数のＣＰＵコア２１−１乃至２１−ｎからそれぞれ２次キャッシュコントローラ２２にＮＣ−ＲＥＱが発行される。２次キャッシュコントローラ２２には各ＣＰＵコア２１−１乃至２１−ｎに対応したアドレス判断部３８−１乃至３８−ｎを有しており、それぞれのアドレス判断部３８−１乃至３８−ｎで宛先確認を行う。アドレス判断部３８−１乃至３８−ｎでは、ＣＰＵコア２１−１乃至２１−ｎからＮＣ−ＲＥＱが来た場合、そのリクエストのアドレスを保持しておく。宛先確認は、現在処理中のＮＣ−ＲＥＱと保持していた直前のＮＣ−ＲＥＱのＣＰＵ−ＩＤ４６、及びＣＴＬ−ＩＤ４７を比較して同一宛先かどうかを判定する。システムコントローラ２３へリクエスト発行後もアドレスは保持しておく。選択部３９では発行可能となったＣＰＵコア２１−１乃至２１−ｎからのリクエストを任意に選択してシステムコントローラ２３へとＮＣ−ＲＥＱを発行する。また、システムコントローラ２３からのリクエスト完了通知を受けた２次キャッシュコントローラ２２は、応答部４０で完了通知に付随されたＣＯＲＥ−ＩＤを確認して、リクエスト発行元のＣＰＵコアへとＮＣ−ＥＮＤを返す。
【００４８】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【符号の説明】
【００４９】
１０  ＣＰＵ
１１  メインメモリ
１２  外部装置
１３  他ＣＰＵ
２１−１乃至２１−ｎ  ＣＰＵコア
２２  ２次キャッシュコントローラ
２３  システムコントローラ
２４  ２次キャッシュメモリ
３０  演算器
３１  命令コントローラ
３２  １次キャッシュメモリ
３３  １次キャッシュコントローラ
３４  ＴＬＢ
３５  メモリコントローラ
３６  ＰＣＩｅコントローラ
３７  ＣＰＵインタフェースコントローラ
３８−１乃至３８−ｎ  アドレス判断部
３９  選択部
４０  応答部
【図１】
2014112360.tif 000003
【図２】
2014112360.tif 000004
【図３】
2014112360.tif 000005
【図４】
2014112360.tif 000006
【図５】
2014112360.tif 000007
【図６】
2014112360.tif 000008
【図７】
2014112360.tif 000009
【図８】
2014112360.tif 000010
【図９】
2014112360.tif 000011