(57)【要約】【課題】過度のプリフェッチ命令の生成・実行を抑制しつつ、プリフェッチの精度を向上すること。【解決手段】本発明にかかる情報処理装置９は、メインメモリ９０と、キャッシュメモリ９１と、メインメモリ９０に格納されたデータをロードするロード命令を含む、メインメモリ９０へのアクセスに関する複数の命令を発行する命令発行部９２と、命令発行部９２から発行された命令の実行順序を決定し、決定した実行順序で命令を出力する命令制御部９３と、命令制御部９３から出力された命令を実行する命令実行部９４を備える。命令制御部９３は、ロード命令が先に発行された命令を追い越せないと判定した場合に、ロード命令によってロードするデータのプリフェッチ命令を生成して出力する。命令実行部９４は、命令制御部９３から出力されたプリフェッチ命令に基づいて、メインメモリに格納されたデータをキャッシュメモリにプリフェッチする。【選択図】図４
2013210955.tif 000002
【特許請求の範囲】
【請求項１】
データが格納されるメインメモリと、
前記データがキャッシュされるキャッシュメモリと、
前記メインメモリに格納されたデータをロードするロード命令を含む、前記メインメモリへのアクセスに関する複数の命令を発行する命令発行部と、
前記命令発行部から発行された命令の実行順序を決定し、決定した実行順序で前記命令を出力する命令制御部と、
前記命令制御部から出力された命令を実行する命令実行部と、を備え、
前記命令制御部は、前記ロード命令が先に発行された命令を追い越せるか否かを判定し、前記ロード命令が先に発行された命令を追い越せないと判定した場合に、前記ロード命令によってロードするデータのプリフェッチ命令を生成して出力し、
前記命令実行部は、前記命令制御部から出力されたプリフェッチ命令に基づいて、前記メインメモリに格納されたデータを前記キャッシュメモリにプリフェッチする、
情報処理装置。
【請求項２】
前記命令制御部は、前記先に発行された命令の実行タイミングを待ち合わせているときに、前記ロード命令が先に発行された命令を追い越せるか否かを判定する、
請求項１に記載の情報処理装置。
【請求項３】
前記先に発行された命令は、前記ロード命令と前記メインメモリにおけるアクセス対象のアドレスが重複するストア命令である、
請求項１又は２に記載の情報処理装置。
【請求項４】
前記情報処理装置は、さらに、前記キャッシュメモリ、前記命令発行部、前記命令制御部、及び、前記命令実行部を有するプロセッサを備えた、
請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記情報処理装置は、ベクトル計算機である、
請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
メインメモリに格納されたデータがキャッシュされるキャッシュメモリと、
前記メインメモリに格納されたデータをロードするロード命令を含む、前記メインメモリへのアクセスに関する複数の命令を発行する命令発行部と、
前記命令発行部から発行された命令の実行順序を決定し、決定した実行順序で前記命令を出力する命令制御部と、
前記命令制御部から出力された命令を実行する命令実行部と、を備え、
前記命令制御部は、前記ロード命令が先に発行された命令を追い越せるか否かを判定し、前記ロード命令が先に発行された命令を追い越せないと判定した場合に、前記ロード命令によってロードするデータのプリフェッチ命令を生成して出力し、
前記命令実行部は、前記命令制御部から出力されたプリフェッチ命令に基づいて、前記メインメモリに格納されたデータを前記キャッシュメモリにプリフェッチする、
プロセッサ。
【請求項７】
メインメモリに格納されたデータをロードするロード命令を含む、前記メインメモリへのアクセスに関する複数の命令のうち、いずれかの命令を発行する命令発行ステップと、
前記発行された命令の実行順序を決定し、決定した実行順序で前記命令を出力する命令制御ステップと、
前記出力された命令を実行する命令実行ステップと、を備え、
前記命令制御ステップでは、前記ロード命令が先に発行された命令を追い越せるか否かを判定し、前記ロード命令が先に発行された命令を追い越せないと判定した場合に、前記ロード命令によってロードするデータのプリフェッチ命令を生成して出力し、
前記命令実行ステップでは、前記出力されたプリフェッチ命令に基づいて、前記メインメモリに格納されたデータをキャッシュメモリにプリフェッチする、
プリフェッチ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、プロセッサ及びプリフェッチ方法に関し、特に、メインメモリからキャッシュメモリにデータをプリフェッチする技術に関する。
【背景技術】
【０００２】
プロセッサでは、メインメモリに格納されたデータをキャッシュメモリにプリフェッチすることで、処理性能の向上が図られている。プリフェッチを実施する方法として、ソフトウェアにおいて予めプリフェッチ命令を記述しておき、ソフトウェアの実行時にプリフェッチを実施する方法が考えられる。
【０００３】
しかしながら、この方法では、人手によってソフトウェア作成時にプリフェッチ命令をソフトウェアに記述する必要があるため、非常に手間がかかってしまうという問題もある。また、人手によってプリフェッチ命令を事前にソフトウェアに記述することになるため、実際のソフトウェアの実行状況に応じて、高い精度でプリフェッチを行うことが困難であるという問題がある。
【０００４】
ここで、特許文献１には、プリフェッチ命令を生成するハードウェアプロセッサに関する技術が開示されている。特許文献１に開示されているハードウェアプロセッサは、プログラム中の命令後に従って命令を発行する命令発行部と、命令発行部からロード命令及びストア命令が発行されたときに、そのロード命令及びストア命令のターゲットとなるデータをプリフェッチするプリフェッチ命令を自動的に生成するプリフェッチ命令生成部とを有する。これにより、ロード命令及びストア命令のキャッシュミスペナルティを軽減するようにしている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−７６３１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述した特許文献１に開示のハードウェアプロセッサによれば、実際のソフトウェア（プログラム）の実行状況に応じて、プリフェッチを行うことができるが、全てのロード命令及びストア命令に対して、一律にプリフェッチ命令を生成するようにしている。そのため、過度にプリフェッチ命令が生成・実行されてしまうという問題がある。
【０００７】
本発明の目的は、上述したような課題を解決するために、過度のプリフェッチ命令の生成・実行を抑制しつつ、プリフェッチの精度を向上することができる情報処理装置、プロセッサ及びプリフェッチ方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明の第１の態様にかかる情報処理装置は、データが格納されるメインメモリと、前記データがキャッシュされるキャッシュメモリと、前記メインメモリに格納されたデータをロードするロード命令を含む、前記メインメモリへのアクセスに関する複数の命令を発行する命令発行部と、前記命令発行部から発行された命令の実行順序を決定し、決定した実行順序で前記命令を出力する命令制御部と、前記命令制御部から出力された命令を実行する命令実行部と、を備え、前記命令制御部は、前記ロード命令が先に発行された命令を追い越せるか否かを判定し、前記ロード命令が先に発行された命令を追い越せないと判定した場合に、前記ロード命令によってロードするデータのプリフェッチ命令を生成して出力し、前記命令実行部は、前記命令制御部から出力されたプリフェッチ命令に基づいて、前記メインメモリに格納されたデータを前記キャッシュメモリにプリフェッチする、ものである。
【０００９】
本発明の第２の態様にかかるプロセッサは、メインメモリに格納されたデータがキャッシュされるキャッシュメモリと、前記メインメモリに格納されたデータをロードするロード命令を含む、前記メインメモリへのアクセスに関する複数の命令を発行する命令発行部と、前記命令発行部から発行された命令の実行順序を決定し、決定した実行順序で前記命令を出力する命令制御部と、前記命令制御部から出力された命令を実行する命令実行部と、を備え、前記命令制御部は、前記ロード命令が先に発行された命令を追い越せるか否かを判定し、前記ロード命令が先に発行された命令を追い越せないと判定した場合に、前記ロード命令によってロードするデータのプリフェッチ命令を生成して出力し、前記命令実行部は、前記命令制御部から出力されたプリフェッチ命令に基づいて、前記メインメモリに格納されたデータを前記キャッシュメモリにプリフェッチする、ものである。
【００１０】
本発明の第３の態様にかかるプリフェッチ方法は、メインメモリに格納されたデータをロードするロード命令を含む、前記メインメモリへのアクセスに関する複数の命令のうち、いずれかの命令を発行する命令発行ステップと、前記発行された命令の実行順序を決定し、決定した実行順序で前記命令を出力する命令制御ステップと、前記出力された命令を実行する命令実行ステップと、を備え、前記命令制御ステップでは、前記ロード命令が先に発行された命令を追い越せるか否かを判定し、前記ロード命令が先に発行された命令を追い越せないと判定した場合に、前記ロード命令によってロードするデータのプリフェッチ命令を生成して出力し、前記命令実行ステップでは、前記出力されたプリフェッチ命令に基づいて、前記メインメモリに格納されたデータをキャッシュメモリにプリフェッチする、ものである。
【発明の効果】
【００１１】
上述した本発明の各態様によれば、過度のプリフェッチ命令の生成・実行を抑制しつつ、プリフェッチの精度を向上することができる情報処理装置、プロセッサ及びプリフェッチ方法を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態にかかるベクトル計算機の構成を示すブロック図である。
【図２】本発明の実施の形態にかかるプロセッサの命令発行の一例を示す概念図である。
【図３】本発明の実施の形態にかかるプロセッサの処理を示すフローチャートである。
【図４】本発明の実施の形態にかかる情報処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１３】
＜発明の実施の形態＞
まず、図１を参照して、本発明の実施の形態にかかるベクトル計算機１の構成について説明する。図１は、本発明の実施の形態にかかるベクトル計算機１の構成を示すブロック図である。
【００１４】
ベクトル計算機１は、プロセッサ１０及びメインメモリ２０を有する。プロセッサ１０は、ＳＰＵ（Scalar Processing Unit）１００、ＡＰＣ（Address Pass Controller）１０１、ＰＮＵ（Processor Network Unit）１０２、及び、キャッシュメモリ１０３を有する。
【００１５】
プロセッサ１０は、メインメモリ２０に格納されたソフトウェア（プログラム）を、メインメモリ２０からロードして実行する。メインメモリ２０は、プロセッサ１０は、ソフトウェア、及び、プロセッサ１０がソフトウェアの実行時に演算したデータ等が格納される。
【００１６】
ＳＰＵ１００は、プロセッサ１０によって実行されるソフトウェアに記述された命令を発行する。ＳＰＵ１００は、メインメモリ２０へのアクセスに関する命令をＡＰＣ１０１に発行（出力）する。メインメモリ２０へのアクセスに関する命令として、ロード命令、ストア命令、及び、ｓｙｎｃ命令等がある。
【００１７】
ＡＰＣ１０１は、ＳＰＵ１００から出力された命令の実行順序を決定し、決定した実行順序で命令をＰＮＵ１０２に出力する。ＡＰＣ１０１は、それぞれの命令の依存性を考慮して、命令の実行順序を決定する。ＡＰＣ１０１における命令の実行順序の決定規則は、任意の規則を予め定めるようにしてよい。
【００１８】
例えば、本実施の形態では、ロード命令が先行するストア命令と、アクセス対象のメインメモリ２０のアドレスが重複する場合には、ロード命令がストア命令を追い越さないように実行順序が決定される。また、ロード命令の前にｓｙｎｃ命令が先行している場合にも、ロード命令がストア命令を追い越さないように実行順序が決定される。逆に、ロード命令が先行するストア命令と、アクセス対象のメインメモリ２０のアドレスが重複しない場合には、ロード命令がストア命令を追い越しての実行順序の決定が許容される。また、ロード命令の前にロード命令が先行している場合にも、後続するロード命令が先行するロード命令を追い越しての実行順序の決定が許容される。
【００１９】
ＡＰＣ１０１は、命令を実行できるタイミングとなったか否かを判定して、命令を実行できるタイミングとなったときに命令をＰＮＵ１０２に出力する。ＡＰＣ１０１は、先行する命令が実行できるタイミングとなっていないときに、後続する命令が先行する命令の追い越しが許容される場合、先行する命令を追い越して後続する命令をＰＮＵ１０２に出力する。
【００２０】
このとき、ＡＰＣ１０１は、後続する命令がロード命令であり、先行する命令を追い越せない場合には、ロード命令のアクセス対象のメインメモリ２０のアドレスのデータをプリフェッチするプリフェッチ命令を生成して出力する。
【００２１】
ＰＮＵ１０２は、ＡＰＣ１０１から出力された命令を、メインメモリ２０やキャッシュメモリ１０３にアクセスすることによって実行する。
【００２２】
キャッシュメモリ１０３は、ＰＮＵ１０２によってメインメモリ２０からプリフェッチされたデータが格納される。
【００２３】
続いて、図２及び図３を参照して、本発明の実施の形態にかかるプロセッサ１０の処理について説明する。図２は、本発明の実施の形態にかかるプロセッサ１０の命令発行の一例を示す概念図である。図３は、本発明の実施の形態にかかるプロセッサ１０の処理を示すフローチャートである。
【００２４】
上述したように、ＳＰＵ１００からＡＰＣ１０１に対してストア命令ＳＴが発行された場合、ＡＰＣ１０１は、ストア命令ＳＴがＰＮＵ１０２に実行できるタイミングになっているか否かを判定し、実行できるタイミングとなっている場合に、ストア命令ＳＴをＰＮＵ１０２に出力する。ここでは、図２に示すように、２つのストア命令ＳＴ（図２では、「ＳＴ（１）」及び「ＳＴ（２）」として示す）が実行タイミングを待ち合わせているときに、ロード命令ＬＤが発行された場合について説明する。また、この２つのストア命令ＳＴは、ロード命令ＬＤが追い越しをできない命令であるものとする。すなわち、この２つのストア命令ＳＴは、ロード命令ＬＤとアクセス対象のメインメモリ２０のアドレスが重複するものとする。
【００２５】
ＳＰＵ１００は、ソフトウェアの実行に応じて、ロード命令ＬＤを発行する（Ｓ１）。すなわち、ＳＰＵ１００は、ロード命令ＬＤをＡＰＣ１０１に出力する。ＡＰＣ１０１は、ＳＰＵ１００からのロード命令ＬＤの出力に応じて、ロード命令ＬＤに先行する命令が実行タイミングを待ち合わせている場合、ロード命令ＬＤが先行するストア命令ＳＴを追い越しできないか否かを判定する（Ｓ２）。
【００２６】
ロード命令ＬＤが先行するストア命令ＳＴを追い越しできると判定した場合（Ｓ２：Ｎｏ）、ＡＰＣ１０１は、先行するストア命令ＳＴを追い越してロード命令ＬＤを実行する（Ｓ６）。すなわち、ＡＰＣ１０１は、ストア命令ＳＴを追い越してロード命令をＰＮＵ１０２に出力する。ＰＮＵ１０２は、ＡＰＣ１０１から出力されたロード命令ＬＤを実行する。ＰＮＵ１０２は、ロード命令ＬＤを実行することによって、メインメモリ２０からデータを読み出して、読み出したデータをプロセッサ１０が有するレジスタ（図示せず）に格納する。これによって、プロセッサ１０によってレジスタに格納されたデータの演算、又は、ＳＰＵ１００によってレジスタに格納されたデータに基づいた命令の発行が行われる。
【００２７】
ロード命令ＬＤが先行するストア命令ＳＴを追い越しできないと判定した場合（Ｓ２：Ｙｅｓ）、ＡＰＣ１０１は、ロード命令ＬＤでロードするメインメモリ２０のデータをプリフェッチするプリフェッチ命令ＰＦＣＨを生成する（Ｓ３）。なお、この場合は、ロード命令ＬＤは、追い越しができないストア命令ＳＴがＰＮＵ１０２に出力されてから、ＰＮＵ１０２に出力されることになる。ＡＰＣ１０１は、生成したプリフェッチ命令ＰＦＣＨを実行する（Ｓ４）。すなわち、ＡＰＣ１０１は、プリフェッチ命令ＰＦＣＨをＰＮＵ１０２に出力する。ＰＮＵ１０２は、ＡＰＣ１０１から出力されたプリフェッチ命令ＰＦＣＨを実行する。具体的には、ＰＮＵ１０２は、メインメモリ２０からデータを読み出して、読み出したデータをキャッシュメモリ１０３に格納する。
【００２８】
ＡＰＣ１０１は、ストア命令ＳＴが実行タイミングとなったときに、ストア命令ＳＴを実行する（Ｓ５）。すなわち、ＡＰＣ１０１は、ストア命令ＳＴをＰＮＵ１０２に出力する。ここで、ストア命令ＳＴが実行タイミングとなったと判定する条件は、本発明を適用するシステムに応じて、予め任意の条件を定めてよい。例えば、ストア命令ＳＴに先行する命令が無くなり、ＰＳＵ１０２が有するＶＳＵ（Vector Processing Unit）（図示せず）から準備完了信号がＡＰＣ１０１に出力されており、かつ、ＰＮＵ１０２がＢＵＳＹでない場合に、ストア命令ＳＴが実行タイミングになっていると判定するようにしてよい。なお、この例では、ＶＳＵがレジスタに格納されたデータに基づいて演算を実行する場合を想定している。
【００２９】
ＰＮＵ１０２は、ＡＰＣ１０１から出力されたストア命令ＳＴを実行する（Ｓ５）。具体的には、ＰＮＵ１０２は、ストア命令ＳＴで指定されたデータをキャッシュメモリ１０３に格納する。なお、このとき、ＰＮＵ１０２は、ライトスルーによって、キャッシュメモリ１０３とメインメモリ２０の両方にデータを格納するようにしてもよい。また、ここでは、ロード命令ＬＤとストア命令ＳＴとで、アクセス対象のアドレスが重複しているため、ＰＮＵ１０２は、プリフェッチされたキャッシュメモリ１０３のデータを更新することになる。
【００３０】
ＡＰＣ１０１は、先行するストア命令ＳＴ（ＳＴ（１）及びＳＴ（２））の実行終了後に、ロード命令ＬＤを実行する（Ｓ６）。すなわち、ＡＰＣ１０１は、ＰＮＵ１０２に出力する。ＰＮＵ１０２は、ＡＰＣ１０１から出力されたロード命令ＬＤを実行する。具体的には、ＰＮＵ１０２は、ステップＳ４でプリフェッチされたデータをキャッシュメモリ１０３から読み出して、読み出したデータをプロセッサ１０が有するレジスタ（図示せず）に格納する。これによって、プロセッサ１０によってレジスタに格納されたデータの演算、又は、ＳＰＵ１００によってレジスタに格納されたデータに基づいた命令の発行が行われる。
【００３１】
なお、上述した説明では、ロード命令に先行し、追い越しができない命令が、ストア命令である場合について説明したが、これに限られない。例えば、ｓｙｎｃ命令が先行している場合であっても、同様にして処理が行われる。
【００３２】
＜本発明の実施の形態の概要＞
続いて、図４を参照して、本発明の実施の形態にかかるベクトル計算機１の概要となる情報処理装置９の構成について説明する。図４は、本発明の実施の形態にかかる情報処理装置９の構成を示すブロック図である。
【００３３】
情報処理装置９は、メインメモリ９０、キャッシュメモリ９１、命令発行部９２、命令制御部９３、及び、命令実行部９４を有する。
【００３４】
メインメモリ９０は、データが格納される。キャッシュメモリ９１は、メインメモリ９０に格納さえたデータがキャッシュされる。命令発行部９２は、メインメモリ９０へのアクセスに関する複数の命令を発行する。命令発行部９２は、ＳＰＵ１００に対応する。この複数の命令には、メインメモリ９０に格納されたデータをロードするロード命令が含まれる。命令制御部９３は、命令発行部９２から発行された命令の実行順序を決定し、決定した実行順序で命令を出力する。命令制御部９３は、ＡＰＣ１０１に対応する。命令実行部９４は、命令制御部９３から出力された命令を実行する。命令実行部９４は、ＰＮＵ１０２に対応する。
【００３５】
さらに、命令制御部９３は、ロード命令が先に発行された命令を追い越せるか否かを判定し、ロード命令が先に発行された命令を追い越せないと判定した場合に、ロード命令によってロードするデータのプリフェッチ命令を生成して出力する。また、命令実行部９４は、命令制御部９３から出力されたプリフェッチ命令に基づいて、メインメモリ９０に格納されたデータをキャッシュメモリ９１にプリフェッチする。
【００３６】
以上に説明したように、本発明の実施の形態では、実際のロード命令に基づいて、プリフェッチ命令を発行しているため、高い精度でプリフェッチを行うことができる。さらに、本発明の実施の形態では、ロード命令が先に発行された命令を追い越せないと判定した場合に、ロード命令によってロードするデータのプリフェッチ命令を生成して出力するようにしている。これによれば、先行する命令の実行を待ち合わせることになり、ロード命令をすぐに実行することができない場合のみに、待ち時間を利用して、プリフェッチ命令を生成して実行するようにすることができる。
【００３７】
すなわち、すぐにロード命令を実行することができる場合には、ロード命令によって、メインメモリからデータをキャッシュメモリ及びレジスタにロードすればよく、別途、プリフェッチ命令を生成・実行すると、過度のプリフェッチによってかえってオーバーヘッドが増大してしまう可能性がある。それに対して、本発明の実施の形態では、ロード命令が先行する命令を追い越せず、待たされる場合のみに、プリフェッチ命令を生成して実行するようにしているため、このような過度のプリフェッチ命令の生成・実行を抑制し、オーバーヘッドが増大を抑制することができる。
【００３８】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００３９】
１  ベクトル計算機
９  情報処理装置
１０  プロセッサ
２０、９０  メインメモリ
９２  命令発行部
９３  命令制御部
９４  命令実行部
１００  ＳＰＵ
１０１  ＡＰＣ
１０２  ＰＮＵ
１０３、９１  キャッシュメモリ
【図１】
2013210955.tif 000003
【図２】
2013210955.tif 000004
【図３】
2013210955.tif 000005
【図４】
2013210955.tif 000006