説明

ハードウェアプロセッサおよびハードウェアプロセッサ制御方法並びに情報処理装置

【課題】キャッシュ中の有効なデータが排除されてしまうことがなく、メモリ帯域利用効率に優れ、ハードウェアプロセッサにより生成される全てのプリフェッチ命令を有効に活用することができるハードウェアプロセッサの提供。
【解決手段】メモリへのロード命令及びメモリへデータを書込むストア命令を含む演算命令を発行する命令発行部11を備えるハードウェアプロセッサ10であり、命令発行部が発行した演算命令を受付て演算命令に基づきプリフェッチ命令を生成し、演算命令およびプリフェッチ命令を送信するプリフェッチ命令生成部12とプリフェッチ命令生成部12により送信された演算命令を受付け、かつ演算命令を処理する演算命令リザベーションステーション部13とプリフェッチ命令生成部12により送信されたプリフェッチ命令を受付け、かつプリフェッチ命令を前記演算命令と平行して処理するプリフェッチリザベーションステーション14部とを備える

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



【特許請求の範囲】
【請求項1】
データを読み込むロード命令及びデータを書き込むストア命令を含む演算命令を発行する演算命令発行部と、
前記命令発行部が発行した演算命令を受け付け、前記演算命令に基づきプリフェッチ命令を生成し、前記演算命令および前記プリフェッチ命令を送信するプリフェッチ命令生成部と、
前記プリフェッチ命令生成部により送信された演算命令を受け付け、かつ該演算命令を処理する演算命令リザベーションステーション部と、
前記プリフェッチ命令生成部により送信されたプリフェッチ命令を受け付け、かつ該プリフェッチ命令を前記演算命令と平行して処理するプリフェッチリザベーションステーション部と
を有するハードウェアプロセッサ。
【請求項2】
前記プロセッサが、インオーダ型プロセッサである際、
前記演算命令リザベーションステーション部が、前記演算命令の受け付ける順に、該演算命令を処理する請求項1記載のハードウェアプロセッサ。
【請求項3】
前記プロセッサが、アウトオーダ型プロセッサである際、
前記演算命令リザベーションステーション部が、前記演算命令の依存関係に基づいて、該演算命令を処理する請求項1記載のハードウェアプロセッサ。
【請求項4】
前記プリフェッチリザベーションステーション部は、前記演算命令リザベーションステーション部において処理待ちとなっている演算命令に対して、先行してプリフェッチを処理する請求項1から3いずれか1項記載のハードウェアプロセッサ。
【請求項5】
データを読み込むロード命令及びデータを書き込むストア命令を含む演算命令を発行する命令発行部を備えるハードウェアプロセッサのハードウェアプロセッサ制御方法において、
前記命令発行部が発行した演算命令を受け付け、前記演算命令に基づきプリフェッチ命令を生成し、前記演算命令および前記プリフェッチ命令を異なるリザベーションステーション部に送信するステップと、
前記送信された演算命令を受け付け、かつ該演算命令を処理するステップと、
前記送信されたプリフェッチ命令を受け付け、かつ該プリフェッチ命令を前記演算命令と平行して処理するステップを有するハードウェアプロセッサ制御方法。
【請求項6】
データを読み込むロード命令及びデータを書き込むストア命令を含む演算命令を発行する命令発行部と備えるハードウェアプロセッサを有する情報処理装置において、
前記ハードウェアプロセッサが、
前記命令発行部が発行した演算命令を受け付け、前記演算命令に基づきプリフェッチ命令を生成し、前記演算命令および前記プリフェッチ命令を送信するプリフェッチ命令生成部と、
前記プリフェッチ命令生成部により送信された演算命令を受け付け、かつ該演算命令を処理行する演算命令リザベーションステーション部と、
前記プリフェッチ命令生成部により送信されたプリフェッチ命令を受け付け、かつ該プリフェッチ命令を前記演算命令と平行して処理するプリフェッチリザベーションステーション部とを備えるものであって、
前記情報処理装置の備える主記憶メモリにアクセスすることにより、前記演算命令および前記プリフェッチ命令を処理する情報処理装置。

【図1】
image rotate

【図2】
image rotate


【公開番号】特開2011−76314(P2011−76314A)
【公開日】平成23年4月14日(2011.4.14)
【国際特許分類】
【出願番号】特願2009−226191(P2009−226191)
【出願日】平成21年9月30日(2009.9.30)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】