(57)【要約】      （修正有）【課題】高速化と低消費電力化を実現する。【解決手段】外部記憶装置（１０２）に格納されている命令群をキャッシュメモリ（１０３）に置き換え、命令群に含まれる分岐命令を検出し、検出した分岐命令の分岐を分岐予測装置（１０４）により予測し、キャッシュメモリに対して分岐先命令の検索を行い、分岐先命令がキャッシュメモリに存在しない場合に外部記憶装置から分岐先命令をキャッシュメモリに置き換える。【選択図】図１
2007193433.tif 000002
【特許請求の範囲】
【請求項１】
外部記憶装置に格納されている命令群をキャッシュメモリに置き換える置換手段と、
前記命令群に含まれる分岐命令を検出する分岐命令検出手段と、
検出した分岐命令の分岐を予測する分岐予測手段と、
前記キャッシュメモリに対して分岐先命令の検索を行う検索手段と、
分岐先命令が前記キャッシュメモリに存在しない場合に外部記憶装置から前記分岐先命令を前記キャッシュメモリに置き換える置換手段とを備える情報処理装置。
【請求項２】
前記分岐先命令を前記外部記憶装置から前記キャッシュメモリへの置き換えに必要な時間を算出する手段と、算出した時間に基づいて決定されるプロセッサの実行サイクル数に応じて実行周波数を低下させる手段とを備える請求項１記載の情報処理装置。
【請求項３】
前記分岐命令予測手段は、前記命令群に含まれる複数の分岐命令を検出し、
前記分岐予測手段は、検出した複数の分岐命令の分岐をそれぞれ予測する請求項１または２記載の情報処理装置。
【請求項４】
前記検索手段は、最初に存在する分岐先命令の検索を行う請求項３記載の情報処理装置。
【請求項５】
前記検索手段は、全ての分岐先命令の検索を行う請求項３記載の情報処理装置。
【請求項６】
最初に存在する分岐先命令の検索又は全ての分岐先命令の検索を選択する手段を備える請求項請求項３記載の情報処理装置。
【請求項７】
分岐予測が外れた分岐先命令のバックアップを行う手段を備える請求項３記載の情報処理装置。
【請求項８】
前記外部記憶装置に格納されている命令群をキャッシュメモリに置き換える回数を制限する手段を備える請求項１記載の情報処理装置。
【請求項９】
演算実行中の命令から分岐命令までの命令数と前記外部記憶装置に格納されている命令群の前記キャッシュメモリへの置き換えに必要な時間とに基づいて最適な周波数を決定する手段を備える請求項２記載の情報処理装置。
【請求項１０】
決定した周波数を次に発生する分岐のタイミングで元の周波数に戻す手段を備える請求項２記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はキャッシュメモリおよび分岐予測機能を搭載した情報処理装置に関する。
【背景技術】
【０００２】
近年のプロセッサは半導体プロセス技術の進歩とともに処理周波数を高速にすることが可能となってきた。そのため、大量の演算を高速に実行することが可能となった。また、大量の演算を実行することが可能となってきたため、演算するデータを蓄積する記憶装置も大容量化している。しかし、システムにとって、記憶装置に対するアクセスがプロセッサの実行速度に比べて遅く、アクセス速度が高速演算に対してボトルネックとなるため、記憶装置に対するアクセスを高速化させる必要が生じてきた。そこで、現在、メモリアクセス性能を向上させるため、容量は少ないが高速アクセスが可能なキャッシュメモリをプロセッサに搭載し、外部の大容量記憶装置へのアクセス遅延を吸収するシステムが主流となっている。これにより、クロックサイクルを無駄にすることなく、処理を実行することができ、処理性能を向上することが可能となる。ただし、キャッシュメモリはプロセッサの演算器の周辺に使用するデータを一時的に格納する記憶装置であるため、プロセッサ外部の記憶装置に格納されたデータが必要な場合はプロセッサ外部の記憶装置に対してアクセスし、キャッシュメモリにデータを格納する必要があり、そのため、キャッシュメモリの容量やデータリプレースのアルゴリズムはプロセッサの演算の性質によって異なってくる。
【０００３】
以上からわかるように、プロセッサの高速処理が可能になってくると同時にキャッシュメモリに対して非常に頻繁にアクセスが発生する。そのため、キャッシュメモリを構成するSRAMに対する高速アクセスによって消費される電力が増大することが課題となってくる。特許文献１に開示されているようにキャッシュメモリで消費電力を減らすための方法として、高速モードと低速モードとで動作するキャッシュメモリが提案されている。この方法では、高速モードではタグメモリの読み出しとデータメモリの読み出しを同時に開始する必要があり、同時に読み出されるウェイ数がNとするとN-1回のミスヒットが発生するため、毎回のアクセスごとに少なくともN-1ウェイ分のデータメモリの読み出し動作に費やされる電力が無駄に消費される。また、低速モードでは消費電力を削減するために、タグデータのヒットチェックを待ってからヒットしたウェイのデータメモリのデータを読み出す。しかしながら、並列性を損なうためにプロセッサの処理動作が実質として遅くなり、高速動作を行うことができなくなる。これら高速モードおよび低速モードを動作基準クロック信号の周波数に応じて動作をダイナミックに使い分けることにより、システム使用状態に応じて消費電力を低減することができるキャッシュメモリを提示している。
【０００４】
プロセッサの実質としての処理速度を向上することはつまりシステムとしての処理の効率化を意味しており、その取り組みはさまざまに行われている。前述したキャッシュメモリによるシステム性能の向上の他にプロセッサコア自体の性能向上として、分岐予測技術がある。パイプライン方式のプロセッサでは、パイプラインを満たしておいて命令を並列化させることにより性能を向上させているが、パイプライン段数の多い近年のプロセッサでは、分岐命令により、パイプラインが乱れ命令の並列化ができなくなり、ペナルティが増加する。そのため、分岐命令のペナルティを軽減する方法として分岐予測を行う。分岐予測は、分岐ペナルティを軽減するため、パイプラインの早期段階で分岐命令の指定するアドレスを計算し、指定されたアドレスの命令をフェッチする技術であり、特許文献２で開示されているように処理性能を向上させるために、１サイクルに命令キャッシュから複数の命令をフェッチするプロセッサにおいて、フェッチしてきた複数の命令中に含まれる複数の条件つき分岐命令の分岐予測を可能としている。これにより、分岐予測のヒット率を向上し、処理性能を向上する。並列度が増加した情報処理装置においては１サイクルで複数の条件つき分岐命令を処理する必要が生じる。従来の情報処理装置においては複数の条件付分岐命令を処理することができなかった課題に対する提案を行っている。
【特許文献１】特開平９−２２３０６８号公報
【特許文献２】特開２０００−１３２３９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
以上のように従来技術によるキャッシュメモリにおいては並列性を操作し、高速動作を必要とする場合には並列性を高め、低速動作で動作させる場合には並列性を低くすることによって消費電流を低減することができるが、プロセッサ外部にある記憶装置を含めたシステム全体に関して、その動作には感知しない。そのため、本来、キャッシュに対するアクセスに比べてより並列性が低い、キャッシュミスヒットして外部の記憶装置に対してアクセスする場合に関しても並列性を高めることができ、かつ、削減できるはずの消費電力を削減できていないと考えられる。
【課題を解決するための手段】
【０００６】
そこで、本発明では従来のプロセッサおいてコアに搭載していた分岐予測装置を、キャッシュの制御に用いることで演算とメモリアクセスの並列性を高めることを実現する。図１に示すようにＰＣレジスタ１０１にて示す命令をキャッシュメモリ１０３からフェッチするがこのときキャッシュヒットしなければ、外部記憶装置１０２からキャッシュメモリ１０３にリプレースする。同時に分岐予測装置１０４に同じアドレスの命令を入力し、分岐命令が存在する場合は分岐予測し、分岐すると予測された場合には、分岐先アドレスがキャッシュメモリ１０３にヒットするかを比較する。キャッシュメモリ１０３にヒットしない場合は分岐先アドレスの命令を外部記憶装置１０２からキャッシュメモリ１０３にリプレースする。これにより、演算実行とキャッシュリプレースの並列実行を行うことができる。また、分岐予測装置１０４にて必要な命令サイクル数を予測することができるため、周波数変更装置１０７によって演算実行周波数を低減することが可能となる。前記一連の分岐予測処理実行中にキャッシュメモリ１０３にヒットする命令は命令デコーダ１０５でデコードし、演算実行装置１０６にて実行する。そして再度ＰＣレジスタ１０１の値を更新する。
【発明の効果】
【０００７】
本発明によれば、分岐予測技術を用いて分岐によるキャッシュミスヒットをあらかじめ予測することによって、プロセッサの演算実行中にプロセッサ外部の記憶装置にアクセスし、キャッシュメモリにデータをリプレースすることで動作を並列化する。並列化を実現することで、図２に示す高速モードにおいてはキャッシュリプレースによるペナルティを削減し、周波数を上げることなく高速動作を可能にし、図５に示す低電力モードにおいてはキャッシュリプレースに必要となるペナルティを計算することによって、プロセッサの実際に必要な実行サイクル数を算出し、実行サイクル数に応じて周波数を変動することで、従来の動作に対して演算処理時間としては同等の性能で低周波数による動作を実現することができる。
【発明を実施するための最良の形態】
【０００８】
（実施の形態１）
図１に本実施の形態におけるプロセッサの構成を示す。ＰＣレジスタ１０１はプログラムカウンタで、実行する命令のアドレスをサイクルごとに更新している。ＰＣレジスタ１０１の値は実行する命令のアドレスであり、そのアドレスの命令がキャッシュメモリ１０３に存在する場合にはキャッシュヒット、存在しない場合にはキャッシュミスヒットとなる。キャッシュヒットした場合にはその命令を命令デコーダ１０５にてデコードし、演算実行装置１０６にて演算を実行し、ＰＣレジスタ１０１の値を更新する。キャッシュミスヒットした場合は、外部記憶装置１０２からＰＣレジスタ１０１の示す命令をキャッシュメモリ１０３にダウンロードする。次回以降キャッシュヒットするように周辺のアドレスの命令も同時にダウンロードして、キャッシュメモリ１０３をリプレースする。このとき、キャッシュリプレースした命令を分岐予測装置１０４にて解析を行う。
【０００９】
図３は分岐予測装置における解析の流れを示す図である。キャッシュリプレース３０２を行った命令に対して分岐命令が存在するかの検索３０３を行う。分岐命令が存在しない場合はキャッシュメモリのリプレースは発生しない。演算処理に関しては演算実行３０８を行い、ＰＣ更新３０９を行い、次命令のキャッシュヒットの確認３１０を行い、キャッシュミスヒットするまで、以上の動作を実行し、キャッシュミスヒットした場合にはキャッシュリプレース３０２を行う。３０３の処理で分岐命令が存在する場合には、分岐予測３０４を行う。分岐予測３０４にて分岐しないと判断された場合にはキャッシュメモリ１０３に対して特別なアクションを起こさず、以降は分岐命令が存在しない場合と同様、キャッシュメモリのリプレースは発生しない。分岐予測３０４にて分岐すると判断された場合には分岐先の命令アドレスとキャッシュメモリ１０３のタグメモリとを比較し、分岐先の命令がキャッシュにヒットする場合には分岐命令が存在しない場合と同様、キャッシュメモリのリプレースは発生しない。分岐先の命令がキャッシュにヒットしない場合には、将来発生するその分岐命令の分岐先の命令が外部記憶装置１０２に存在すると考えられるので、あらかじめキャッシュリプレース３０２を行い、将来に備える。この一連の分岐予測動作の間、命令実行は行われており、命令実行動作を行うと同時に次に呼ばれると考えられる命令をあらかじめキャッシュメモリ１０３に保存することで、命令の実行効率を高め、周波数を増加させることなく高速動作を可能にすることができる。この動作モードを高速動作モードと定義する。
【００１０】
図２は高速動作モードを示す図である。従来の動作を示す図４において、キャッシュアクセスのために必要な時間であるIdle時間４０１を前倒し、キャッシュ状態が変化する時刻４０２を図２における時刻２０１にすることにより、高速動作を実現している。
【００１１】
（実施の形態２）
図６は実施形態における処理の流れを示す図である。キャッシュリプレース６０２を行った命令に対して処理６０３にて分岐命令が存在するかを検索する。分岐命令が存在しない場合はキャッシュメモリのリプレースは発生しない。演算処理に関しては演算実行６０６を行い、ＰＣ更新６０７を行い、次命令のキャッシュヒットの確認６０８を行い、キャッシュミスヒットするまで、以上の動作を実行し、キャッシュミスヒットした場合にはキャッシュリプレース６０２を行う。６０３にて分岐命令が存在する場合には、分岐予測６０４を行う。分岐予測６０４にて分岐しないと判断された場合にはキャッシュメモリ１０３に対して特別なアクションを起こさず、以降は分岐命令が存在しない場合と同様、キャッシュメモリのリプレースは発生しない。分岐予測６０４にて予測した結果、分岐すると判断された場合には分岐先の命令アドレスとキャッシュメモリ１０３のタグメモリとを比較し、分岐先の命令がキャッシュにヒットする場合には分岐命令が存在しない場合と同様、キャッシュメモリのリプレースは発生しない。分岐先の命令がキャッシュにヒットしない場合には、将来発生するその分岐命令の分岐先の命令が外部記憶装置１０２に存在すると考えられるので、あらかじめキャッシュリプレース６０２を行い、将来に備える。このとき、キャッシュリプレースに伴う外部記憶装置１０２に対するアクセスによって演算の待ち時間が発生する。これをペナルティとして、６０９にてその時間を計算する。ペナルティの計算は現在キャッシュにて実行している命令から何サイクル目に当該の分岐命令が発行されるかを計算するとともに、本システムにおける外部記憶装置１０２に対するアクセス時間を足した時間だけ必要であると考えられ、この時間内に当該の分岐命令までの命令数を実行すればよい。たとえば、実行すべき命令数が５命令あり、メモリアクセスに必要なサイクル数が２５サイクル必要であれば、３０サイクルで５命令を実行できればよいので、周波数としては１／６に低減することができると考えられる。６０９で計算された周波数を元に６１０にて周波数を変動させる。この動作モードを低電力動作モードと定義し、図５に示す。従来動作の図４におけるキャッシュメモリの状態が変化する時刻４０２と同時刻にキャッシュメモリの変化する時刻５０２をあわせることで演算性能を保証し、周波数を切り替えた時刻５０１からキャッシュメモリの変化する時刻５０２の間に残りの演算を実行するだけの周波数に時刻５０１にて切り替えることで、低周波数で従来の周波数での動作と同等の性能を実現することができる。また、低周波数における実行後、時刻５０２において分岐が発生するが、分岐発生のタイミングで周波数を周波数切り替え前の周波数に戻すことにより、分岐後の演算を従来どおり実行する。
【００１２】
（実施の形態３）
図７は実施の形態３における処理の流れを示す図であり、複数の分岐命令がキャッシュリプレースした命令群に含まれている場合に複数の分岐に対する分岐予測を行う。キャッシュリプレース７０２の発生後、分岐命令が存在するか判別する。存在しない場合は通常通り演算実行を行う。分岐命令が複数存在する場合、処理７０４にてそれぞれについて分岐予測を行う。まず、一つ目の分岐命令が分岐すると予測した場合は７０６にて分岐アドレスをキャッシュメモリと比較し、キャッシュヒットしていなければ、キャッシュリプレース７０２する。キャッシュヒットしている場合は７０７にすすみ、二つ目の分岐命令が分岐する場合は同様に７０８にて分岐アドレスをキャッシュメモリと比較し、キャッシュヒットしていなければ、キャッシュリプレース７０２する。以上同様に三つ目以降の分岐命令が存在する場合に関しても順次処理を行う。
【００１３】
（実施の形態４）
図８は実施の形態４における処理の流れを示す図である。図３に示す分岐予測装置の処理フローから分岐予測処理後の分岐先命令がキャッシュヒットしなかった場合、キャッシュリプレース３０２を行うが、キャッシュリプレース後、さらに分岐命令が存在し、分岐予測を行う。８０１のようにキャッシュリプレースした命令群に分岐命令が存在し、８０２の命令群をキャッシュリプレースを行う。８０３のように複数の分岐命令が存在する場合、複数の分岐命令に対して分岐予測を行い分岐先命令群８０４および８０５を特定する。８０４が分岐しないと予測された場合は８０５の分岐予測およびキャッシュヒットを確認するが、８０４が分岐すると予測された場合には８０５は感知しなくともよい。ただし、分岐予測が外れた場合を考慮して８０５に関してもキャッシュヒットしない場合にはキャッシュリプレースすることを可能とする。この場合、無駄なキャッシュのリプレースによる電力の消費があることを考慮しなければならない。反対に８０４が分岐しないと予測された場合を８０６として説明する。８０６で一つ目の分岐命令が分岐しないと判断され、二つ目の分岐命令で分岐すると判断された場合８０７に分岐する。８０７はキャッシュにヒットしないため、キャッシュリプレースを行うが、このとき８０７にも分岐命令が含まれているので、分岐予測し、８０８に分岐すると予測されたとする。分岐予測された８０８はキャッシュにヒットしないのでキャッシュリプレースが発生する。このように分岐命令が常に含まれるとすると常にキャッシュリプレースしなければならなくなる。そのため、予測によるキャッシュリプレースを制限する機能を分岐予測装置に搭載し、規定の回数までの分岐予測によるリプレースを制御する。
【産業上の利用可能性】
【００１４】
本発明の情報処理装置は、巨大なプログラムを必要とするにもかかわらず、組み込みなどの用途で大容量のメモリをプロセッサに搭載することができないような機器かつモバイルなどの電池駆動のため低電力で動作する必要がある機器に搭載するプロセッサとして利用可能である。
【図面の簡単な説明】
【００１５】
【図１】本発明の情報処理装置の動作を示す図
【図２】高速モードにおけるタイミングを示す図
【図３】実施の形態１における処理を示す図
【図４】従来動作におけるタイミングを示す図
【図５】低電力モードにおけるタイミングを示す図
【図６】実施の形態２における処理を示す図
【図７】実施の形態３における処理を示す図
【図８】分岐命令とキャッシュリプレースの関係を示す図
【符号の説明】
【００１６】
１０１  ＰＣレジスタ
１０２  外部記憶装置
１０３  キャッシュメモリ
１０４  分岐予測装置
１０５  命令デコーダ
１０６  演算実行装置
【図１】
2007193433.tif 000003
【図２】
2007193433.tif 000004
【図３】
2007193433.tif 000005
【図４】
2007193433.tif 000006
【図５】
2007193433.tif 000007
【図６】
2007193433.tif 000008
【図７】
2007193433.tif 000009
【図８】
2007193433.tif 000010