(57)【要約】【課題】キャッシュ中の有効なデータが排除されてしまうことがなく、メモリ帯域利用効率に優れ、ハードウェアプロセッサにより生成される全てのプリフェッチ命令を有効に活用することができるハードウェアプロセッサの提供。【解決手段】メモリへのロード命令及びメモリへデータを書込むストア命令を含む演算命令を発行する命令発行部１１を備えるハードウェアプロセッサ１０であり、命令発行部が発行した演算命令を受付て演算命令に基づきプリフェッチ命令を生成し、演算命令およびプリフェッチ命令を送信するプリフェッチ命令生成部１２とプリフェッチ命令生成部１２により送信された演算命令を受付け、かつ演算命令を処理する演算命令リザベーションステーション部１３とプリフェッチ命令生成部１２により送信されたプリフェッチ命令を受付け、かつプリフェッチ命令を前記演算命令と平行して処理するプリフェッチリザベーションステーション１４部とを備える【選択図】図１
2011076314.tif 000002
【特許請求の範囲】
【請求項１】
データを読み込むロード命令及びデータを書き込むストア命令を含む演算命令を発行する演算命令発行部と、
前記命令発行部が発行した演算命令を受け付け、前記演算命令に基づきプリフェッチ命令を生成し、前記演算命令および前記プリフェッチ命令を送信するプリフェッチ命令生成部と、
前記プリフェッチ命令生成部により送信された演算命令を受け付け、かつ該演算命令を処理する演算命令リザベーションステーション部と、
前記プリフェッチ命令生成部により送信されたプリフェッチ命令を受け付け、かつ該プリフェッチ命令を前記演算命令と平行して処理するプリフェッチリザベーションステーション部と
を有するハードウェアプロセッサ。
【請求項２】
前記プロセッサが、インオーダ型プロセッサである際、
前記演算命令リザベーションステーション部が、前記演算命令の受け付ける順に、該演算命令を処理する請求項１記載のハードウェアプロセッサ。
【請求項３】
前記プロセッサが、アウトオーダ型プロセッサである際、
前記演算命令リザベーションステーション部が、前記演算命令の依存関係に基づいて、該演算命令を処理する請求項１記載のハードウェアプロセッサ。
【請求項４】
前記プリフェッチリザベーションステーション部は、前記演算命令リザベーションステーション部において処理待ちとなっている演算命令に対して、先行してプリフェッチを処理する請求項１から３いずれか１項記載のハードウェアプロセッサ。
【請求項５】
データを読み込むロード命令及びデータを書き込むストア命令を含む演算命令を発行する命令発行部を備えるハードウェアプロセッサのハードウェアプロセッサ制御方法において、
前記命令発行部が発行した演算命令を受け付け、前記演算命令に基づきプリフェッチ命令を生成し、前記演算命令および前記プリフェッチ命令を異なるリザベーションステーション部に送信するステップと、
前記送信された演算命令を受け付け、かつ該演算命令を処理するステップと、
前記送信されたプリフェッチ命令を受け付け、かつ該プリフェッチ命令を前記演算命令と平行して処理するステップを有するハードウェアプロセッサ制御方法。
【請求項６】
データを読み込むロード命令及びデータを書き込むストア命令を含む演算命令を発行する命令発行部と備えるハードウェアプロセッサを有する情報処理装置において、
前記ハードウェアプロセッサが、
前記命令発行部が発行した演算命令を受け付け、前記演算命令に基づきプリフェッチ命令を生成し、前記演算命令および前記プリフェッチ命令を送信するプリフェッチ命令生成部と、
前記プリフェッチ命令生成部により送信された演算命令を受け付け、かつ該演算命令を処理行する演算命令リザベーションステーション部と、
前記プリフェッチ命令生成部により送信されたプリフェッチ命令を受け付け、かつ該プリフェッチ命令を前記演算命令と平行して処理するプリフェッチリザベーションステーション部とを備えるものであって、
前記情報処理装置の備える主記憶メモリにアクセスすることにより、前記演算命令および前記プリフェッチ命令を処理する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリフェッチ命令を生成するハードウェアプロセッサおよびハードウェアプロセッサ制御方法並びに情報処理装置に関するものであって、特に、演算命令に基づいてプリフェッチ命令を生成するハードウェアプロセッサおよびハードウェアプロセッサ制御方法並びに情報処理装置に関するものである。
【背景技術】
【０００２】
関連技術であるハードウェアプロセッサによりプリフェッチを生成する場合において、（１）メモリアクセスパターン解析による予測に基づきプリフェッチを生成する方式や、（２）ロードアドレスに基づき次のメモリアクセスアドレスを予測することにより、プリフェッチを生成する方式等が採用されていた。ところが、このような予測に依存することにより、ハードウェアプロセッサがプリフェッチを生成した後に、キャッシュミス（命令処理に必要なデータがキャッシュメモリに存在せず、キャッシュメモリからデータを読み込むことができない状態）を発生させるという問題があった。
【０００３】
そこで、キャッシュミスを起こしたロード命令に対し、そのデータ転送列が連続するアドレスである場合にもメモリアクセスレイテンシを短縮して、キャッシュミスによる性能低下を軽減するために、キャッシュミスを起こしたロード命令の転送要求アドレスを履歴として記憶することで、連続するアドレスに対するキャッシュミスロードを検出し、後続のアドレスのデータに対するプリフェッチを発行する手法が、特許文献１で提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２９７３７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１により提案された手法により、キャッシュミスによる性能低下を軽減するようなサポート機能を備えたとしても、プロセッサのキャッシュミスの発生自体を防ぐことができないという問題がある。
また、上記ハードウェアプロセッサでは、データ予測に基づくためキャッシュミスが発生し、発行されたプリフェッチが有効に機能せず、ロード命令が無駄になるという問題がある。
【０００６】
更に、上記ハードウェアプロセッサでは、データ予測の失敗により生成されたプリフェッチにより、キャッシュ中の有効なデータが排除されてしまう問題、データ予測の失敗により生成されたプリフェッチにより必要以上にメモリ帯域が使用されることによるメモリ帯域利用効率の低下という問題がある。
【０００７】
そこで、本発明は、上記事情に鑑み、キャッシュ中の有効なデータが排除されてしまうことがなく、メモリ帯域利用効率に優れ、ハードウェアプロセッサにより生成される全てのプリフェッチ命令を有効に活用することができるハードウェアプロセッサおよびハードウェアプロセッサ制御方法並びに情報処理装置を提供することを目的とするものである。
【課題を解決するための手段】
【０００８】
前述の課題を解決するため、本発明によるハードウェアプロセッサおよびハードウェアプロセッサ制御方法並びに情報処理装置は、次のような特徴的な構成を採用している。下記（１）、（５）及び（６）なる番号は請求項の項番号にそれぞれ対応している。
（１）データを読み込むロード命令及びデータを書き込むストア命令を含む演算命令を発行する演算命令発行部と、
前記命令発行部が発行した演算命令を受け付け、前記演算命令に基づきプリフェッチ命令を生成し、前記演算命令および前記プリフェッチ命令を送信するプリフェッチ命令生成部と、
前記プリフェッチ命令生成部により送信された演算命令を受け付け、かつ該演算命令を処理する演算命令リザベーションステーション部と、
前記プリフェッチ命令生成部により送信されたプリフェッチ命令を受け付け、かつ該プリフェッチ命令を前記演算命令と平行して処理するプリフェッチリザベーションステーション部とを有するハードウェアプロセッサ。
（５）データを読み込むロード命令及びデータを書き込むストア命令を含む演算命令を発行する命令発行部を備えるハードウェアプロセッサのハードウェアプロセッサ制御方法において、
前記命令発行部が発行した演算命令を受け付け、前記演算命令に基づきプリフェッチ命令を生成し、前記演算命令および前記プリフェッチ命令を異なるリザベーションステーション部に送信するステップと、
前記送信された演算命令を受け付け、かつ該演算命令を処理するステップと、
前記送信されたプリフェッチ命令を受け付け、かつ該プリフェッチ命令を前記演算命令と平行して処理するステップを有するハードウェアプロセッサ制御方法。
（６）データを読み込むロード命令及びデータを書き込むストア命令を含む演算命令を発行する命令発行部と備えるハードウェアプロセッサを有する情報処理装置において、
前記ハードウェアプロセッサが、
前記命令発行部が発行した演算命令を受け付け、前記演算命令に基づきプリフェッチ命令を生成し、前記演算命令および前記プリフェッチ命令を送信するプリフェッチ命令生成部と、
前記プリフェッチ命令生成部により送信された演算命令を受け付け、かつ該演算命令を処理行する演算命令リザベーションステーション部と、
前記プリフェッチ命令生成部により送信されたプリフェッチ命令を受け付け、かつ該プリフェッチ命令を前記演算命令と平行して処理するプリフェッチリザベーションステーション部とを備えるものであって、
前記情報処理装置の備える主記憶メモリにアクセスすることにより、前記演算命令および前記プリフェッチ命令を処理する情報処理装置。
【発明の効果】
【０００９】
本発明のハードウェアプロセッサおよびハードウェアプロセッサ制御方法並びに情報処理装置によれば、キャッシュ中の有効なデータが排除されてしまうことがなく、メモリ帯域利用効率に優れ、ハードウェアプロセッサにより生成される全てのプリフェッチ命令を有効に活用することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態における情報処理装置を示すブロック図
【図２】本発明の実施形態における演算命令およびプリフェッチ命令を処理するハードウェアプロセッサの一部を示すブロック図
【発明を実施するための形態】
【００１１】
発明の実施の形態となる情報処理装置１について、図面を参照しつつ説明する。図１は、本発明の実施形態による情報処理装置１の構成を示すブロック図である。本発明の実施形態によるハードウェアプロセッサ１０は、命令発行部１１と、プリフェッチ命令生成部１２と、演算命令リザベーションステーション部１３と、プリフェッチリザベーションステーション部１４と、キャッシュユニット１５と、演算部１６とを備えるものであって、主記憶メモリ２０および指示部４０と接続されている。
また、命令発行部１１には、プログラム３０と指示部４０が接続されている。キャッシュユニット１５は、キャッシュ制御部およびキャッシュメモリを備えるものである。
【００１２】
命令発行部１１は、プログラム３０中の命令語（例えば、コンパイル済みのアセンブラコード）に基づき、実行命令（演算命令）が発行される。命令発行部１１から発行された命令は、プリフェッチ命令生成部１２へ送信される。
【００１３】
命令発行部１１は、プログラム３０中の命令語を受信すると、その命令語に従って、プリフェッチ命令生成部１２および演算命令リザベーションステーション部１３を介して演算部１６に対して演算命令やアクセス命令を発行する。
演算部１６は、演算命令リザベーションステーション部１３による制御に基づいて主記憶メモリ２０からロードしたデータ等について、命令発行部１１から発行される演算命令に基づいて演算処理を実行する。また、演算部１６は、演算命令リザベーションステーション部１３およびプリフェッチリザベーションステーション部１４により処理された演算命令およびプリフェッチなどのデータに基づいて演算処理を実行する。
【００１４】
プリフェッチ命令生成部１２は、受信した全ての演算命令を演算命令リザベーションステーション部１３へ送信すると共に、受取った演算命令中から、ロード系、及びストア系命令に該当するメモリアクセス系命令がターゲットとするデータをプリフェッチするプリフェッチ命令を生成し、プリフェッチリザベーションステーション部１４へそのプリフェッチ命令を送信する。プリフェッチ命令生成部１２は、受信した全ての演算命令に基づきプリフェッチ命令を生成する。
【００１５】
演算命令リザベーションステーション部１３は、全ての演算命令をプリフェッチ命令生成部１２から受信する。例えば、演算命令リザベーションステーション部１３は、ハードウェアプロセッサ１０が、インオーダ型プロセッサにおいては演算命令の発行順に従い命令を処理してもよい。また、演算命令リザベーションステーション部１３は、ハードウェアプロセッサ１０が、アウトオブオーダ型プロセッサにおいては、各命令のアドレス依存関係等をチェックすることにより、発行可能な命令を先行命令の完了を待たずに処理する。インオーダ型プロセッサおよびアウトオブオーダ型プロセッサについては、当業者にとってよく知られており、方式そのものは本発明と直接関係しないため、その詳細については省略する。
【００１６】
プリフェッチリザベーションステーション部１４は、プリフェッチ命令生成部１２により生成されたプリフェッチ命令を受信し、演算命令リザベーションステーション１３と平行して、プリフェッチ命令を処理するものである。
これにより、演算命令リザベーションステーション部１３において、処理待ちとなっているメモリアクセス系命令に対して、先行してターゲットデータをプリフェッチすることが可能となる。
【００１７】
プリフェッチリザベーションステーション部１４は、ハードウェアプロセッサ１０が、インオーダ型プロセッサの際、演算命令を逐次実行するため、プリフェッチ命令よりも先に演算命令リザベーションステーション部１３の対応メモリアクセス系命令が実行されることは無い。
しかし、プリフェッチリザベーションステーション部１４は、ハードウェアプロセッサ１０が、アウトオブオーダ型プロセッサの際、プリフェッチ命令が実行される前に、演算命令リザベーションステーション部１３の対応メモリアクセス系命令が実行される可能性がある。この場合、プリフェッチリザベーションステーション部１４は、実際のメモリアクセス系命令より後にプリフェッチ命令が実行されないようにするため、演算命令リザベーションステーション部１３から、プリフェッチリザベーションステーション部１４へキャンセル信号を送り、当該メモリアクセス系命令に対応するプリフェッチ命令を破棄することを可能とする。
【００１８】
演算命令リザベーションステーション部１３およびプリフェッチリザベーションステーション部１４から、演算部１６に対する命令に基づき、キャッシュユニット１５及び主記憶メモリ２０へのアクセス制御を行なう。
キャッシュユニット１５については、当業者にとってよく知られているように、一次キャッシュメモリや二次キャッシュメモリ等のように、演算部１６、及び主記憶メモリ２０の間にキャッシュを階層構造的に配置して構成することも可能である。
本実施の形態における各階層の複数のキャッシュメモリに対する制御については、各キャッシュメモリ毎に個別に制御する方式や、複数のキャッシュメモリを一括して制御する方式等が考えられる。
【００１９】
なお、記憶装置としてのキャッシュユニット１５、及び主記憶メモリ２０については、当業者によって広く知られている一般的な記憶方式のものを利用することができる。それらの詳しい構成については説明を省略する。
プログラム３０中の命令語は、例えば、コンパイル済みのアセンブラコードである。
【００２０】
本実施の形態において、指示部４０で指示する動作モード情報は、プログラム３０の実行中（すなわち、ハードウェアプロセッサ１０の動作中）に動的に変更することが可能である。
指示部４０は、ハードウェア又はソフトウェアの何れによる指示であっても実現することが可能であって、例えば、プログラム３０中の命令語におけるアクセス命令語中のキャッシュ利用指定に基づいて、キャッシュ利用有／キャッシュ利用無のアクセス命令を演算命令リザベーションステーション部１３およびプリフェッチリザベーションステーション部１４に送信するように制御するよう指示することができる。
【００２１】
なお、ハードウェアプロセッサ１０は、演算命令とプリフェッチ命令間の処理開始、及び処理完了を監視することにより、演算命令の処理開始後に、対応するプリフェッチ命令が処理されないよう制御することも可能とする。
また、ハードウェアプロセッサ１０は、関連技術として前述したハードウェアプリフェッチのように、プリフェッチ命令に基づく予測を行わないものである。
【００２２】
このように、本発明の実施形態であるハードウェアプロセッサ１０は、関連技術として前述したハードウェアプリフェッチ機構のように、メモリアクセスパターン解析に基づくものや、ロードアドレスに基づき次のメモリアクセスアドレスを予測するものとは異なる。
【００２３】
本発明の実施形態におけるハードウェアプロセッサ１０では、何らかの予測に基づくため、発行したプリフェッチが有効に機能せず、ロードデータが無駄になる場合が多いだけでなく、予測失敗のプリフェッチにより、キャッシュ中の有効なデータが追い出される問題や、予測失敗のプリフェッチによりメモリ帯域が使われることによるメモリ帯域利用効率低下の問題を解消することができる。
【００２４】
ここで、ハードウェアプロセッサ１０が、プリフェッチ命令を生成、実行するため説明を、図２を参照しながら、詳細に説明する。
ハードウェアプロセッサ１０は、ロードおよびストア命令が発行され、発行された命令が演算命令リザベーションステーション部１３中で処理待ち（または命令バッファ）となっている間に、それらロード、及びストア命令のターゲットとなるデータをプリフェッチ命令生成部１２が、自動的にプリフェッチ命令を生成し、演算部１６の演算命令の処理前にターゲットデータをキャッシュへ格納する。これにより、ロード、及びストアのキャッシュミスペナルティを軽減する。
具体的には、命令実行順序保証機能を有するハードウェアプロセッサ１０は、関連技術として前述したように、何らかの予測機構に基づくものではなく、順序保証に基づく演算命令発行を発行する。図２に示すように処理待ちになっているロード（ＬＤ）およびストア命令（ＳＴ）に対して、ターゲットとなるデータを先行してプリフェッチ（ＰＦＴＣＨ）を実行するものである（ＡＤＤ（加算）については、プリフェッチしない）。このように、プリフェッチが予測に基づくものではなく、必要なデータを対象としたものとする。
【００２５】
ハードウェアプロセッサ１０は、ロード、及びストア時のキャッシュミス軽減、不要データのプリフェッチによるキャッシュの汚染防止、及び不要データのプリフェッチによるメモリ帯域利用効率低下回避を実現する。また、ハードウェアプロセッサ１０は、ロード系（ＬＤ）、及びストア系（ＳＴ）の主記憶メモリ２０へのアクセス系命令は、メモリ操作の順序保証が必要であり、一般に先行ストアのデータを後続ロードが読み出す場合、後続ロードは先行する当該ストアを追い越すことができない。
【００２６】
しかしながら、本発明の実施形態では、ストアアドレスに基づきこれをプリフェッチすることにより、ストアキャッシュミスペナルティ回避、及び後続ロードのキャッシュミスペナルティ回避が可能である。
また、ハードウェアプロセッサ１０は、上述したロード、及びストア間にアドレスの重複が無い場合は、プリフェッチリザベーションステーション部１４に対して発行された全てのロード、及びストア命令のプリフェッチ命令化および処理が可能である。
【００２７】
更に、ハードウェアプロセッサ１０は、本機構によりプリフェッチ実行中のターゲットデータに対して、ターゲットアドレスが同一の後続ロード、及びストア命令のプリフェッチは発行しない機構を有するものとし、プリフェッチ実行中の同一データのメモリアクセスの重複を回避することができる。
【００２８】
以上により、本発明のハードウェアプロセッサ１０によれば、命令発行部１１が発行した演算命令を受け付け、演算命令に基づきプリフェッチ命令を生成し、演算命令およびプリフェッチ命令を送信するプリフェッチ命令生成部１２と、プリフェッチ命令生成部１２により送信された演算命令を受け付け、かつ演算命令を処理する演算命令リザベーションステーション部１３と、プリフェッチ命令生成部１２により送信されたプリフェッチ命令を受け付け、かつプリフェッチ命令を前記演算命令と平行して処理するプリフェッチリザベーションステーション部１４と、を備えることにより、データ予測に基づくプリフェッチではないため、キャッシュ中の有効なデータが排除されてしまう問題、データ予測の失敗により生成されたプリフェッチにより必要以上にメモリ帯域が使用されることによるメモリ帯域利用効率の低下に関する問題が解消され、ハードウェアプロセッサにより生成される全てのプリフェッチ命令が有効に活用することができる。
【００２９】
また、本発明の実施形態におけるハードウェアプロセッサ１０によれば、第一の効果として、実際の主記憶メモリ２０への演算命令に基づきプリフェッチ命令を生成する点が特徴的であり、関連技術として前述したハードウェアプリフェッチ機構は、メモリアクセスパターン解析に基づき、メモリアクセス予測に基づきプリフェッチを行なうため、予測失敗が起こる場合があるが、本発明の実施形態におけるハードウェアプロセッサ１０は、予測に基づくプリフェッチではないため、ハードウェアより生成される全てのプリフェッチが有効なものとなる。
【００３０】
また、第二の効果として、主記憶メモリ２０に記録されたアクセスレイテンシの長いプロセッサにおいては、キャッシュミス時のペナルティが大きいものとなっても、回避することができる。第三の効果としては、関連技術として前述したハードウェアプロセッサのプリフェッチでは予測に基づくプリフェッチであったが、本発明のプリフェッチは予測に基づくものではないので、予測失敗のプリフェッチによるメモリ負荷増大の回避、及び予測失敗のプリフェッチによるキャッシュ汚染防止が期待される。
【００３１】
以上、本発明の好適実施例の構成を説明した。しかし、斯かる実施例は、本発明の単なる例示に過ぎず、何ら本発明を限定するものではないことに留意されたい。本発明の要旨を逸脱することなく、特定用途に応じて種々の変形変更が可能であることが、当業者には容易に理解できよう。例えば、本発明の実施態様は、課題を解決するための手段における構成（１）、（５）及び（６）に加え、次のような構成として表現できる。下記（２）−（４）なる番号は、請求項の項番号にそれぞれ対応している。
（２）前記プロセッサが、インオーダ型プロセッサである際、
前記演算命令リザベーションステーション部が、前記演算命令の受け付ける順に、該演算命令を処理する上記（１）のハードウェアプロセッサ。
（３）前記プロセッサが、アウトオーダ型プロセッサである際、
前記演算命令リザベーションステーション部が、前記演算命令の依存関係に基づいて、該演算命令を処理する上記（１）のハードウェアプロセッサ。
（４）前記プリフェッチリザベーションステーション部は、前記演算命令リザベーションステーション部において処理待ちとなっている演算命令に対して、先行してプリフェッチを処理する上記（１）から（３）のいずれか１項のハードウェアプロセッサ。
【符号の説明】
【００３２】
１    情報処理装置
１０    ハードウェアプロセッサ
１１    命令発行部
１２    プリフェッチ命令生成部
１３    演算命令リザベーションステーション部
１４    プリフェッチリザベーションステーション部
１５    キャッシュユニット
１６    演算部
２０    主記憶メモリ
３０    プログラム
４０    指示部
【図１】
2011076314.tif 000003
【図２】
2011076314.tif 000004