(57)【要約】【課題】プリフェッチバッファのプリフェッチサイズを動的に切り替える。【解決手段】モード切替レジスタ２５０はプリフェッチバッファ２１０におけるプリフェッチサイズのモード切替えをプロセッサから指示する。モード切替指示検出部２２５はプリフェッチバッファ２１０におけるプリフェッチサイズのモードを切り替える指示を検出する。転送状態監視部２４２はデータ転送処理部２４１におけるデータ転送処理が実行中か否かの状態を監視する。モード切替部２２７は、モード切替指示が検出された際にデータ転送処理が実行中でなければ、すみやかにプリフェッチバッファ２１０におけるプリフェッチサイズの切替を実行する。一方、モード切替指示が検出された際にデータ転送処理が実行中である場合には、モード切替部２２７はデータ転送処理の終了を待ってプリフェッチサイズの切替を実行する。【選択図】図３
2012150529.tif 000002
【特許請求の範囲】
【請求項１】
メモリからプリフェッチバッファへ転送するプリフェッチサイズを切り替えるための切替指示を検出するプリフェッチサイズ切替指示検出部と、
前記メモリと前記プリフェッチバッファとの間で転送が行われている状態を監視する転送状態監視部と、
前記切替指示が検出された際に前記転送が行われていない場合にはすみやかに前記プリフェッチバッファにおけるプリフェッチサイズの切替を行い、前記切替指示が検出された際に前記転送が行われている場合には前記転送の終了を待って前記プリフェッチバッファにおけるプリフェッチサイズの切替を行うプリフェッチサイズ切替部と
を具備するメモリアクセス制御回路。
【請求項２】
プロセッサから前記メモリへのリードアクセスに伴う統計情報に基づいて前記プリフェッチバッファにおける最適プリフェッチサイズを決定する最適プリフェッチサイズ決定部をさらに具備し、
前記プリフェッチサイズ切替部は、前記プリフェッチバッファのプリフェッチサイズを前記最適プリフェッチサイズに切り替える
請求項１記載のメモリアクセス制御回路。
【請求項３】
前記プロセッサから前記メモリに対するリード要求帯域を測定するリード要求帯域測定部と、
前記プリフェッチバッファのプリフェッチサイズを第１および第２のプリフェッチサイズに設定した場合のそれぞれにおける前記プロセッサと前記メモリとの間に要する平均レイテンシを前記統計情報に基づいて算出する平均レイテンシ算出部と、
前記プリフェッチバッファのプリフェッチサイズを前記第１および第２のプリフェッチサイズに設定した場合のそれぞれにおけるストール発生周波数を前記リード要求帯域と前記平均レイテンシに基づいて算出するストール発生周波数算出部と、
前記プリフェッチバッファのプリフェッチサイズを前記第１および第２のプリフェッチサイズに設定した場合のそれぞれにおける前記プロセッサの実行性能を評価する実行性能評価部と、
前記評価結果に基づいて前記第１および第２のプリフェッチサイズの何れが前記最適プリフェッチサイズであるかを判定する最適プリフェッチサイズ判定部と
をさらに具備する請求項２記載のメモリアクセス制御回路。
【請求項４】
前記プリフェッチバッファのプリフェッチサイズを切り替えるための前記切替指示が設定されるプリフェッチサイズ切替レジスタをさらに具備し、
前記プリフェッチサイズ切替指示検出部は、前記プリフェッチサイズ切替レジスタに設定された前記切替指示を検出する
請求項１記載のメモリアクセス制御回路。
【請求項５】
プリフェッチバッファと、
メモリから前記プリフェッチバッファへ転送するプリフェッチサイズを切り替えるための切替指示を検出するプリフェッチサイズ切替指示検出部と、
前記メモリと前記プリフェッチバッファとの間で転送が行われている状態を監視する転送状態監視部と、
前記切替指示が検出された際に前記転送が行われていない場合にはすみやかに前記プリフェッチバッファにおけるプリフェッチサイズの切替を行い、前記切替指示が検出された際に前記転送が行われている場合には前記転送の終了を待って前記プリフェッチバッファにおけるプリフェッチサイズの切替を行うプリフェッチサイズ切替部と
を具備するプリフェッチ回路。
【請求項６】
メモリと、
前記メモリの一部のコピーを格納するプリフェッチバッファと、
前記メモリから前記プリフェッチバッファへ転送するプリフェッチサイズを切り替えるための切替指示を検出するプリフェッチサイズ切替指示検出部と、
前記メモリと前記プリフェッチバッファとの間で転送が行われている状態を監視する転送状態監視部と、
前記切替指示が検出された際に前記転送が行われていない場合にはすみやかに前記プリフェッチバッファにおけるプリフェッチサイズの切替を行い、前記切替指示が検出された際に前記転送が行われている場合には前記転送の終了を待って前記プリフェッチバッファにおけるプリフェッチサイズの切替を行うプリフェッチサイズ切替部と
を具備するメモリ装置。
【請求項７】
プロセッサと、
メモリと、
前記メモリの一部のコピーを格納するプリフェッチバッファと、
前記メモリから前記プリフェッチバッファへ転送するプリフェッチサイズを切り替えるための切替指示を検出するプリフェッチサイズ切替指示検出部と、
前記メモリと前記プリフェッチバッファとの間で転送が行われている状態を監視する転送状態監視部と、
前記切替指示が検出された際に前記転送が行われていない場合にはすみやかに前記プリフェッチバッファにおけるプリフェッチサイズの切替を行い、前記切替指示が検出された際に前記転送が行われている場合には前記転送の終了を待って前記プリフェッチバッファにおけるプリフェッチサイズの切替を行うプリフェッチサイズ切替部と
を具備する情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセス制御回路に関し、特にメモリに対してプリフェッチを行うメモリアクセス制御回路、プリフェッチ回路、メモリ装置および情報処理システムに関する。
【背景技術】
【０００２】
プロセッサはメモリを命令保持領域およびデータ保持領域として使用するため、プログラム実行中に高い頻度でメモリへのアクセスを必要とする。そのようなメモリへのアクセスによる負荷を低減するために、プロセッサとメモリの間にプリフェッチバッファを設けることがある。このプリフェッチバッファは連続した複数のワードを１つのラインとして管理し、プリフェッチバッファのミスヒット時には複数のワードをまとめてプリフェッチするように構成される。
【０００３】
このプリフェッチバッファにプリフェッチする際の転送サイズ、すなわちプリフェッチサイズは、プロセッサの実行性能に大きく影響する。プリフェッチサイズを大きくすると、プリフェッチされた内容が使用されれば性能向上につながるが、使用されなければ無駄読みになってしまいメモリ帯域を圧迫してしまう。そこで、このプリフェッチサイズを可変にするために、例えば、エリア属性管理テーブルを設けてプリフェッチを行う際のプリフェッチサイズを保持するメモリコントローラが提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−２４０６１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の従来技術によれば、論理アドレスブロック毎にプリフェッチサイズを指定することが可能となる。しかしながら、プリフェッチバッファの使用はプログラムの構造にも依存するため、最適なプリフェッチサイズを決定することは一般に困難である。また、種類の異なるプログラムを実行する場合、プログラムによって最適なプリフェッチサイズが異なるため、プリフェッチサイズを固定することが適切でないことがある。
【０００６】
本発明はこのような状況に鑑みてなされたものであり、プリフェッチバッファのプリフェッチサイズを動的に切り替えることを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記課題を解決するためになされたものであり、その第１の側面は、メモリからプリフェッチバッファへ転送するプリフェッチサイズを切り替えるための切替指示を検出するプリフェッチサイズ切替指示検出部と、上記メモリと上記プリフェッチバッファとの間で転送が行われている状態を監視する転送状態監視部と、上記切替指示が検出された際に上記転送が行われていない場合にはすみやかに上記プリフェッチバッファにおけるプリフェッチサイズの切替を行い、上記切替指示が検出された際に上記転送が行われている場合には上記転送の終了を待って上記プリフェッチバッファにおけるプリフェッチサイズの切替を行うプリフェッチサイズ切替部とを具備するメモリアクセス制御回路、プリフェッチ回路、メモリ装置および情報処理システムである。これにより、プリフェッチバッファのプリフェッチサイズを動的に切り替えるという作用をもたらす。
【０００８】
また、この第１の側面において、プロセッサから上記メモリへのリードアクセスに伴う統計情報に基づいて上記プリフェッチバッファにおける最適プリフェッチサイズを決定する最適プリフェッチサイズ決定部をさらに具備し、上記プリフェッチサイズ切替部は、上記プリフェッチバッファのプリフェッチサイズを上記最適プリフェッチサイズに切り替えるようにしてもよい。これにより、プリフェッチバッファのプリフェッチサイズを最適プリフェッチサイズに動的に切り替えるという作用をもたらす。
【０００９】
また、この第１の側面において、上記プロセッサから上記メモリに対するリード要求帯域を測定するリード要求帯域測定部と、上記プリフェッチバッファのプリフェッチサイズを第１および第２のプリフェッチサイズに設定した場合のそれぞれにおける上記プロセッサと上記メモリとの間に要する平均レイテンシを算出する平均レイテンシ算出部と、上記プリフェッチバッファのプリフェッチサイズを上記第１および第２のプリフェッチサイズに設定した場合のそれぞれにおけるストール発生周波数を上記リード要求帯域と上記平均レイテンシに基づいて算出するストール発生周波数算出部と、上記プリフェッチバッファのプリフェッチサイズを上記第１および第２のプリフェッチサイズに設定した場合のそれぞれにおける上記プロセッサの実行性能を評価する実行性能評価部と、上記評価結果に基づいて上記第１および第２のプリフェッチサイズの何れが上記最適プリフェッチサイズであるかを判定する最適プリフェッチサイズ判定部とをさらに具備してもよい。これにより、統計情報に基づいて最適プリフェッチサイズを決定するという作用をもたらす。
【００１０】
また、この第１の側面において、上記プリフェッチバッファのプリフェッチサイズを切り替えるための上記切替指示が設定されるプリフェッチサイズ切替レジスタをさらに具備し、上記プリフェッチサイズ切替指示検出部は、上記プリフェッチサイズ切替レジスタに設定された上記切替指示を検出するようにしてもよい。これにより、プリフェッチサイズ切替レジスタを介してプリフェッチサイズの切替指示を検出するという作用をもたらす。
【発明の効果】
【００１１】
本発明によれば、プリフェッチバッファのプリフェッチサイズを動的に切り替えることができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態における情報処理システムの一構成例を示す図である。
【図２】本発明の実施の形態におけるバスマスタインターフェース１０２の一構成例を示す図である。
【図３】本発明の第１の実施の形態におけるプリフェッチ回路２００の一構成例を示す図である。
【図４】本発明の第１の実施の形態におけるモード切替レジスタ２５０の一構成例を示す図である。
【図５】本発明の第１の実施の形態におけるプリフェッチ回路２００の動作タイミング例を示す図である。
【図６】本発明の第２の実施の形態におけるプリフェッチ回路２００の一構成例を示す図である。
【図７】バスマスタインターフェースにおけるＨＢＵＲＳＴ［２：０］信号の内容を示す図である。
【図８】本発明の第２の実施の形態におけるプリフェッチ回路２００の最適プリフェッチサイズ決定部２０２の一構成例を示す図である。
【図９】本発明の第２の実施の形態におけるプリフェッチ回路２００の処理手順例を示す流れ図である。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（プリフェッチサイズの動的制御）
２．第２の実施の形態（最適プリフェッチサイズの決定）
【００１４】
＜１．第１の実施の形態＞
［情報処理システム構成］
図１は、本発明の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、プロセッサ１００と、クライアント１１０乃至１３０と、プリフェッチ回路２００と、メモリバス３００と、メモリコントローラ４００と、メモリ５００を備えている。
【００１５】
プロセッサ１００は、プログラムの各命令に従って処理を実行するものである。プログラムの各命令はメモリ５００の命令保持領域に保持される。また、処理に必要なデータはメモリ５００のデータ保持領域に保持される。これらメモリ５００の命令保持領域およびデータ保持領域の内容は、その一部のコピーがプリフェッチ回路２００に保持される。また、プロセッサ１００は内部にキャッシュメモリ１０１を備えており、メモリ５００の命令保持領域およびデータ保持領域の一部のコピーが保持される。また、プロセッサ１００は内部にバスマスタインターフェース１０２を備えており、メモリバス３００に対するやり取りを行うようになっている。
【００１６】
プリフェッチ回路２００は、メモリ５００の命令保持領域およびデータ保持領域の内容の一部のコピーをプリフェッチして保持するものである。後述するように、このプリフェッチ回路２００は、プロセッサ１００からのラップアラウンドメモリアクセスリクエストのサイズおよび開始アドレスを変換してメモリバス３００に出力する。
【００１７】
メモリバス３００は、プロセッサ１００に接続するプリフェッチ回路２００、プロセッサ１００以外の他のクライアント１１０乃至１３０、および、メモリコントローラ４００を接続するバスである。ここでは統合メモリシステム（Unified Memory System）を想定しているが、本発明はこれに限定されるものではない。
【００１８】
メモリコントローラ４００は、メモリ５００に対するアクセスを制御するためのコントローラである。メモリ５００は、プロセッサ１００および他のクライアント１１０乃至１３０に共有されるメモリである。
【００１９】
［バスマスタインターフェース］
図２は、本発明の実施の形態におけるバスマスタインターフェース１０２の一構成例を示す図である。このバスマスタインターフェース１０２は、ＡＲＭ社のＡＨＢバスマスタインターフェースに準ずるものであるが、本発明はこれに限定されるものではなく、ＡＸＩバスやＯＣＰバス等、ラップアラウンドメモリアクセスを行う他のバスにも適用することができる。
【００２０】
ＨＧＲＡＮＴ信号は、アービタによって許可されたバス転送であることを示す信号である。ＨＲＥＡＤＹ信号は、現在の転送が終了したことを示す信号である。ＨＲＥＳＰ［１：０］信号は、転送ステータスを示す信号である。ＨＲＥＳＥＴｎ信号は、グローバルリセットを行うための信号である。なお、信号名の最後の「ｎ」は、ローアクティブ信号であることを意味する。
【００２１】
ＨＣＬＫ信号は、バスクロックの入力信号である。ＨＣＬＫＥＮ信号は、バスクロックのイネーブル信号である。ＨＲＤＡＴＡ［３１：０］信号は、メモリ５００からのリードデータの入力信号である。
【００２２】
ＨＢＵＳＲＥＱ信号は、バス転送をアービタに要求するための信号である。ＨＬＯＣＫ信号は、ロックされたアクセスであることを示す信号である。ＨＴＲＡＮＳ［１：０］は、現在の転送のタイプを示す信号である。
【００２３】
ＨＡＤＤＲ［３１：０］は、メモリ５００に対してリードアドレスまたはライトアドレスを出力するアドレス信号である。バースト転送の場合、このアドレス信号は開始アドレスを示すことになる。ＨＷＲＩＴＥ信号は、現在の転送の方向がライト方向であるかリード方向であるかを示す信号である。ＨＳＩＺＥ［２：０］は、現在の転送のサイズを示す信号である。ＨＢＵＲＳＴ［２：０］は、現在の転送のバースト長を示す信号である。ＨＰＲＯＴ［３：０］は、プロテクション制御信号である。ＨＷＤＡＴＡ［３１：０］信号は、メモリ５００に対するライトデータの出力信号である。
【００２４】
ここで説明したインターフェースは、プロセッサ１００とプリフェッチ回路２００との間およびプリフェッチ回路２００とメモリ５００との間で共通である。ただし、以下ではこれらを区別するために、プロセッサ１００とプリフェッチ回路２００との間の信号名には「Ａ＿」を付加し、プリフェッチ回路２００とメモリ５００との間の信号名には「Ｂ＿」を付加して説明することがある。
【００２５】
［プリフェッチ回路の構成］
図３は、本発明の第１の実施の形態におけるプリフェッチ回路２００の一構成例を示す図である。このプリフェッチ回路２００は、プリフェッチバッファ２１０と、タグ管理部２２０と、プロセッサインターフェース２３０と、バスインターフェース２４０と、モード切替レジスタ２５０とを備える。
【００２６】
プリフェッチバッファ２１０は、メモリ５００におけるプロセッサ１００のための命令保持領域およびデータ保持領域の内容の一部のコピーを保持するバッファである。このプリフェッチバッファ２１０の管理単位のサイズは、プロセッサ１００のキャッシュメモリ１０１のラインサイズよりも大きいことを想定している。このプリフェッチバッファ２１０には命令またはデータが保持されるが、これらは論理的に区別されたものでもよく、または、物理的に独立したバッファとして実現されてもよい。
【００２７】
タグ管理部２２０は、プリフェッチバッファ２１０に保持される対象（命令またはデータ）のアドレスのタグを管理するものである。タグとしては、対象のアドレスフィールドの上位の複数ビットのうち、一部のビットが用いられる。このタグ管理部２２０は、モード切替指示検出部２２５およびモード切替部２２７を備える。
【００２８】
モード切替指示検出部２２５は、プリフェッチバッファ２１０におけるプリフェッチサイズのモードを切り替える指示を検出するものである。モード切替部２２７は、プリフェッチバッファ２１０におけるプリフェッチサイズのモード切替えを実行するものである。プリフェッチサイズのモードとしては、例えば、３２バイトモードと６４バイトモードとを相互に切り替えることが想定される。３２ビットデータバス幅の時、３２バイトモードでは、プリフェッチ時に８バーストのラップアラウンドバースト転送を用いることができる。同様に３２ビットデータバス幅の時、６４バイトモードでは、プリフェッチ時に１６バーストのラップアラウンドバースト転送を用いることができる。なお、モード切替指示検出部２２５は、特許請求の範囲に記載のプリフェッチサイズ切替指示検出部の一例である。
【００２９】
プロセッサインターフェース２３０は、プロセッサ１００との間のやりとりを行うインターフェース回路である。バスインターフェース２４０は、メモリバス３００との間のやりとりを行うインターフェース回路である。このバスインターフェース２４０は、データ転送処理部２４１および転送状態監視部２４２を備えている。データ転送処理部２４１は、プロセッサ１００とメモリ５００との間のデータ転送処理を実行するものである。転送状態監視部２４２は、データ転送処理部２４１におけるデータ転送処理が実行中か否かの状態を監視するものである。
【００３０】
モード切替レジスタ２５０は、プリフェッチバッファ２１０におけるプリフェッチサイズのモード切替えをプロセッサ１００から指示するためのレジスタである。このモード切替レジスタ２５０としては、後述するように命令用およびデータ用の２種類を想定するが、これらを同一のレジスタにより指示するようにしても構わない。なお、モード切替レジスタ２５０は、特許請求の範囲に記載のプリフェッチサイズ切替レジスタの一例である。
【００３１】
プロセッサ１００は、プリフェッチバッファ２１０におけるプリフェッチサイズを切り替える際には、モード切替レジスタ２５０におけるモードフラグを設定する。モード切替レジスタ２５０においてモードフラグが設定されると、信号線２５９を介してタグ管理部２２０に通知される。タグ管理部２２０では、モード切替指示検出部２２５がプリフェッチサイズのモード切替指示を検出して、信号線２２６を介してモード切替部２２７に通知する。一方、転送状態監視部２４２は、データ転送処理部２４１におけるデータ転送処理が実行中か否かの状態を監視しており、信号線２４９を介してその監視結果をモード切替部２２７に通知する。
【００３２】
モード切替部２２７は、モード切替指示検出部２２５によってモード切替指示が検出された際に、データ転送処理部２４１におけるデータ転送処理が実行中でなければ、すみやかにプリフェッチバッファ２１０におけるプリフェッチサイズの切替を実行する。一方、モード切替指示検出部２２５によってモード切替指示が検出された際に、データ転送処理部２４１におけるデータ転送処理が実行中である場合には、モード切替部２２７はデータ転送処理の終了を待ってプリフェッチサイズの切替を実行する。モード切替部２２７は信号線２２９を介してプロセッサインターフェース２３０にモード切替の処理状態を伝える。プロセッサインターフェース２３０はモード切替の処理が実行されている間は次のコマンドをプロセッサ１００から受け付けないようにＡ＿ＨＲＥＡＤＹ信号をネゲートする。なお、モード切替部２２７は、特許請求の範囲に記載のプリフェッチサイズ切替部の一例である。
【００３３】
図４は、本発明の第１の実施の形態におけるモード切替レジスタ２５０の一構成例を示す図である。同図（ａ）は、プリフェッチバッファ２１０におけるデータのプリフェッチサイズの切替を指示するためのレジスタ２５１である。同図（ｂ）は、プリフェッチバッファ２１０における命令のプリフェッチサイズの切替を指示するためのレジスタ２５２である。両者は対象が異なるが、フィールド構成は同様である。これら２つのレジスタは、物理的に１つのレジスタを論理的に区別してもよく、または、物理的に異なる２つのレジスタとして実現してもよい。
【００３４】
レジスタ２５１および２５２は３２ビット構成を想定している。レジスタ２５１または２５２において、最下位ビットがプリフェッチサイズのモードを示すモードフラグである。例えば、このモードフラグが「０」であれば３２バイトモードに設定され、「１」であれば６４バイトモードに設定される。プリフェッチサイズが設定される際には、タグ管理部２２０におけるタグが無効化される。この無効化が完了した後にプリフェッチサイズが設定される。ただし、データ転送処理が行われている間は、タグの無効化は待機される。
【００３５】
［プリフェッチ回路の動作］
図５は、本発明の第１の実施の形態におけるプリフェッチ回路２００の動作タイミング例を示す図である。ここでは、メモリ５００からのリードデータをプリフェッチバッファ２１０に転送している途中で、プロセッサ１００からモード切替レジスタ２５０にプリフェッチサイズの切替指示が設定された場合を想定している。
【００３６】
モード切替レジスタ２５０にプリフェッチサイズの切替指示が設定されると、プロセッサインターフェース２３０はＡ＿ＨＲＥＡＤＹ信号をネゲートすることによりプロセッサ１００から次のコマンドを受け付けないようにする。そして、メモリ５００からのリードデータの転送が終了すると、信号線２４９を介して転送状態監視部２４２からモード切替部２２７へ転送終了信号が通知される。この通知を待って、タグ管理部２２０においてタグが無効化され、現行モード信号が３２バイトモードを示す「０」から６４バイトモードを示す「１」に切り替わる。これにより、プロセッサインターフェース２３０はＡ＿ＨＲＥＡＤＹ信号をアサートし、プロセッサ１００から新たなコマンドを受け付けることができるようになる。
【００３７】
このように、本発明の第１の実施の形態によれば、データのコヒーレンシを維持しながら、プロセッサの動作中に動的にプリフェッチサイズを切り替えることが可能となる。
【００３８】
＜２．第２の実施の形態＞
本発明の第２の実施の形態では、プロセッサからメモリへのリードアクセスに伴う統計情報に基づいてプリフェッチバッファにおける最適プリフェッチサイズを決定する。この第２の実施の形態においても、図１により構成例を説明した上述の情報処理システムを想定する。
【００３９】
［プリフェッチ回路の構成］
図６は、本発明の第２の実施の形態におけるプリフェッチ回路２００の一構成例を示す図である。この第２の実施の形態におけるプリフェッチ回路２００は、プリフェッチ制御部２０１と最適プリフェッチサイズ決定部２０２とを備えている。プリフェッチ制御部２０１の基本的な構成は、図３により説明した第１の実施の形態におけるプリフェッチ回路２００の要部と同様である。すなわち、プリフェッチバッファ２１０と、タグ管理部２２０と、プロセッサインターフェース２３０と、バスインターフェース２４０とを備える。
【００４０】
さらに、第２の実施の形態におけるプリフェッチ回路２００は、ヒット率算出部２６０を備える。このヒット率算出部２６０は、プロセッサ１００からメモリ５００へのリードアクセスに伴う統計情報に基づいて、プリフェッチサイズ毎のヒット率を算出するものである。算出されたヒット率は、信号線２６８または２６９によって最適プリフェッチサイズ決定部２０２に供給される。なお、この例では便宜的にプリフェッチ制御部２０１がヒット率算出部２６０を含む構成としたが、このヒット率算出部２６０は最適プリフェッチサイズ決定部２０２に配置するようにしてもよい。
【００４１】
図７は、バスマスタインターフェースにおけるＨＢＵＲＳＴ［２：０］信号の内容を示す図である。ＨＢＵＲＳＴ［２：０］が「３'ｂ０００」を示す場合には、シングル転送（ＳＩＮＧＬＥ）を意味する。なお、「ｎ'ｂ０…０」は、ｎ桁（ここでは３桁）のビット列を表現するものである。ＨＢＵＲＳＴ［２：０］が「３'ｂ００１」を示す場合には、長さ指定のないインクリメンタルバースト転送（ＩＮＣＲ）を意味する。インクリメンタルバースト転送とは、各バーストを転送する際にアドレスに固定値を加算するものである。ＨＢＵＲＳＴ［２：０］が「３'ｂ０１０」を示す場合には、４バーストのラップアラウンドバースト転送（ＷＲＡＰ４）を意味する。ラップアラウンドバースト転送とは、特定のアドレス範囲内においてアドレスを加算して、ラップ境界においてアドレスを循環させるものである。ここでは、ラップアラウンドメモリアクセスをラップアラウンドバースト転送と同義のものとして扱う。
【００４２】
ＨＢＵＲＳＴ［２：０］が「３'ｂ０１１」を示す場合には、４バーストのインクリメンタルバースト転送（ＩＮＣＲ４）を意味する。ＨＢＵＲＳＴ［２：０］が「３'ｂ１００」を示す場合には、８バーストのラップアラウンドバースト転送（ＷＲＡＰ８）を意味する。ＨＢＵＲＳＴ［２：０］が「３'ｂ１０１」を示す場合には、８バーストのインクリメンタルバースト転送（ＩＮＣＲ８）を意味する。ＨＢＵＲＳＴ［２：０］が「３'ｂ１１０」を示す場合には、１６バーストのラップアラウンドバースト転送（ＷＲＡＰ１６）を意味する。ＨＢＵＲＳＴ［２：０］が「３'ｂ１１１」を示す場合には、１６バーストのインクリメンタルバースト転送（ＩＮＣＲ１６）を意味する。
【００４３】
プロセッサ１００がＡ＿ＨＢＵＲＳＴ［２：０］信号によってプリフェッチ回路２００に対してＷＲＡＰ４命令を発行すると、バスインターフェース２４０はプリフェッチサイズのモードに応じてメモリ５００にＷＲＡＰ８またはＷＲＡＰ１６命令を発行する。すなわち、バスインターフェース２４０は、３２バイトモードであればＷＲＡＰ８命令をＢ＿ＨＢＵＲＳＴ［２：０］信号によってメモリ５００に発行する。一方、６４バイトモードであればＷＲＡＰ１６命令をＢ＿ＨＢＵＲＳＴ［２：０］信号によってメモリ５００に発行する。
【００４４】
図８は、本発明の第２の実施の形態におけるプリフェッチ回路２００の最適プリフェッチサイズ決定部２０２の一構成例を示す図である。最適プリフェッチサイズ決定部２０２は、プリフェッチバッファ２１０のプリフェッチサイズとして、サイズＬおよびサイズＳ（サイズＬ＞サイズＳ）のうち何れのモードが最適であるかを決定するものである。例えば、サイズＬとして６４バイト、サイズＳとして３２バイトを想定する。この最適プリフェッチサイズ決定部２０２は、性能目標値レジスタ２７１と、ヒットレイテンシレジスタ２７２とを備える。また、この最適プリフェッチサイズ決定部２０２は、リード要求帯域測定部２８１と、ミスヒットレイテンシ測定部２８２とを備える。また、この最適プリフェッチサイズ決定部２０２は、プリフェッチサイズ（サイズＬまたはＳ）毎に、平均レイテンシ算出部２８３および２８４と、ストール発生周波数算出部２８５および２８６と、実行性能評価部２８７および２８８とを備える。また、この最適プリフェッチサイズ決定部２０２は、モード判定部２８９を備える。
【００４５】
性能目標値レジスタ２７１は、プリフェッチサイズのモードを判定するためのプロセッサ１００の性能目標値を保持するレジスタである。性能目標値としては、例えばＭＩＰＳ（Million Instructions Per Second）値を用いることができる。この性能目標値はシステム仕様などに応じて適宜定められ、信号線２３９を介してプロセッサインターフェース２３０によって設定される。
【００４６】
ヒットレイテンシレジスタ２７２は、プリフェッチバッファ２１０にヒットした場合のレイテンシを保持するレジスタである。ここで、レイテンシとは、プロセッサ１００がリード要求を発行してから、対象となるリプライデータがプロセッサ１００に到達するまでに要するサイクル数である。プリフェッチバッファ２１０にヒットした場合には固定サイクルとして算出可能なため、予めこのヒットレイテンシレジスタ２７２に保持しておくものとする。このヒットレイテンシは、信号線２３９を介してプロセッサインターフェース２３０によって設定される。
【００４７】
リード要求帯域測定部２８１は、プロセッサ１００に送出したリプライデータのバイト数に基づいて、プロセッサ１００からの１秒当たりのリード要求帯域を常時計測するものである。このリード要求帯域の単位としては、例えばメガバイト／秒（ＭＢ／ｓ）を用いることができる。このリード要求帯域測定部２８１による測定結果はプロセッサからのリード要求を受け付ける都度更新され、直近の１秒間の測定結果が、ストール発生周波数算出部２８５および２８６に供給される。
【００４８】
ミスヒットレイテンシ測定部２８２は、プリフェッチバッファ２１０にミスヒットした場合のレイテンシを測定するものである。プリフェッチバッファ２１０にミスヒットした場合には、メモリ５００に対してバーストアクセスが行われる。したがって、対象となるリプライデータがプロセッサ１００に到達するまでには、メモリ５００に対するアクセス時間を要することになる。このミスヒットレイテンシ測定部２８２による測定結果は、平均レイテンシ算出部２８３および２８４に供給される。
【００４９】
平均レイテンシ算出部２８３および２８４は、プリフェッチサイズのモード毎に平均レイテンシを算出するものである。ヒット率はプリフェッチサイズによって異なるため、プリフェッチサイズのモード毎に平均レイテンシが算出される。サイズＳのヒット率は、ヒット率算出部２６０から信号線２６８を介して供給される。サイズＬのヒット率は、ヒット率算出部２６０から信号線２６９を介して供給される。ヒットレイテンシレジスタ２７２に保持されたヒット時のレイテンシをＡ、ミスヒットレイテンシ測定部２８２によって測定されたミスヒット時のレイテンシをＢとする。そして、ヒット率算出部２６０によって算出されたサイズＳのヒット率をＸとすると、サイズＳの平均レイテンシＬＳは次式により得られる。
ＬＳ＝Ａ×Ｘ＋Ｂ×（１−Ｘ）
また、ヒット率算出部２６０によって算出されたサイズＬのヒット率をＹとすると、サイズＬの平均レイテンシＬＬは次式により得られる。
ＬＬ＝Ａ×Ｙ＋Ｂ×（１−Ｙ）
平均レイテンシ算出部２８３はサイズＬの平均レイテンシを算出し、平均レイテンシ算出部２８４はサイズＳの平均レイテンシを算出する。
【００５０】
ストール発生周波数算出部２８５および２８６は、プリフェッチサイズのモード毎にストール発生周波数を算出するものである。ストール発生周波数は、プロセッサ１００の１秒当たりのストールサイクルである。リード要求帯域測定部２８１によって測定されたリード要求帯域をＱとし、サイズＳを３２バイトとすると、サイズＳのストール発生周波数ＳＳは次式により得られる。
ＳＳ＝ＬＳ×Ｑ／３２
また、サイズＬを６４バイトとすると、サイズＬのストール発生周波数ＳＬは次式により得られる。
ＳＬ＝ＬＬ×Ｑ／６４
ストール発生周波数算出部２８５はサイズＬのストール発生周波数を算出し、ストール発生周波数算出部２８６はサイズＳのストール発生周波数を算出する。
【００５１】
実行性能評価部２８７および２８８は、プリフェッチサイズのモード毎にストール発生周波数が性能目標値の許容する範囲内にあるか否かを評価するものである。ここで、プロセッサ性能値は、次式により表される。
プロセッサ性能値［ＭＩＰＳ］＝
（プロセッサ動作周波数［ＭＨｚ］−ストール発生周波数［ＭＨｚ］）／ＣＰＩ
ただし、ＣＰＩ（Cycle Per Instruction）は１命令当たりの実行サイクル数である。ここでは、ＣＰＩ＝１と仮定して、プロセッサ動作周波数からストール発生周波数を減算したものをプロセッサ性能値として扱う。これにより、「プロセッサ動作周波数−プロセッサ性能目標値」と「ストール発生周波数」とを比較することで、ストール発生周波数が性能目標値の許容する範囲内にあるか否かを評価することができる。
【００５２】
すなわち、実行性能評価部２８７は、「性能目標値レジスタ２７１に保持されているプロセッサ性能目標値をプロセッサ１００の動作周波数から減算した値」と「ストール発生周波数算出部２８５によって算出されたサイズＬのストール発生周波数」とを比較する。これにより、前者の方が後者よりも大きければ、サイズＬのストール発生周波数が性能目標値の許容する範囲内にあることになる。また、実行性能評価部２８８は、「性能目標値レジスタ２７１に保持されているプロセッサ性能目標値をプロセッサ１００の動作周波数から減算した値」と「ストール発生周波数算出部２８６によって算出されたサイズＳのストール発生周波数」とを比較する。これにより、前者の方が後者よりも大きければ、サイズＳのストール発生周波数が性能目標値の許容する範囲内にあることになる。
【００５３】
モード判定部２８９は、実行性能評価部２８７および２８８における評価結果に従って、プリフェッチサイズのモードを判定するものである。すなわち、実行性能評価部２８７および２８８の両者において性能目標値の許容する範囲内にあると評価された場合、モード判定部２８９はより小さいサイズＳのモードを最適プリフェッチサイズとして選択する。また、実行性能評価部２８７のみが性能目標値の許容する範囲内にあると評価し、実行性能評価部２８８は許容する範囲内にあると評価しなかった場合、モード判定部２８９はサイズＬのモードを最適プリフェッチサイズとして選択する。また、実行性能評価部２８７および２８８の何れもが、性能目標値の許容する範囲内にあると評価しなかった場合、何れのモードも選択できないため、割込みをアサートする。なお、サイズＳのみが性能目標値の許容する範囲内にあるという事象は、理論的に生じ得ない。このモード判定部２８９による判定結果は、信号線２９９を介してプリフェッチ回路２００のタグ管理部２２０に供給される。なお、モード判定部２８９は、特許請求の範囲に記載の最適プリフェッチサイズ判定部の一例である。
【００５４】
タグ管理部２２０の内部構成は図３により説明した第１の実施の形態と同様である。すなわち、モード切替指示検出部２２５は、信号線２９９を介してモード判定部２８９による判定結果を受け取ると、モード切替指示として検出する。モード切替部２２７は、バスインターフェース２４０における転送処理の終了を待って、プリフェッチサイズのモードを切り替える。
【００５５】
［プリフェッチ回路の動作］
図９は、本発明の第２の実施の形態におけるプリフェッチ回路２００の処理手順例を示す流れ図である。性能目標値レジスタ２７１には、プロセッサ１００の実行性能の目標値が予め設定される（ステップＳ９０１）。
【００５６】
そして、プリフェッチサイズがサイズＳのモードとサイズＬのモードとでプロセッサ１００によりプログラムの実行が行われ、統計情報が取得される（ステップＳ９０２）。ここで、統計情報としては、ヒット率算出部２６０により算出されたヒット率、リード要求帯域測定部２８１により測定されたリード要求帯域、および、ミスヒットレイテンシ測定部２８２により測定されたミスヒット時のレイテンシなどが想定される。これら統計情報に基づいて、プリフェッチサイズのモード毎に平均レイテンシ算出部２８３および２８４により平均レイテンシが算出され、ストール発生周波数算出部２８５および２８６によりストール発生周波数が算出される（ステップＳ９０３）。
【００５７】
そして、実行性能評価部２８７および２８８により、プリフェッチサイズのモード毎にストール発生周波数が性能目標値の許容する範囲内にあるという条件を満たしているか否かが評価される（ステップＳ９０４）。実行性能評価部２８７および２８８による評価結果に応じて、モード判定部２８９はプリフェッチサイズのモードを判定する。すなわち、実行性能評価部２８７および２８８の両者が、ストール発生周波数が条件を満たしていると評価した場合（ステップＳ９０５）、モード判定部２８９はサイズＳのモードを最適プリフェッチサイズとして選択する（ステップＳ９０７）。これにより、プリフェッチサイズのモード切替が行われる。一方、実行性能評価部２８７または２８８の一方のみが、ストール発生周波数が条件を満たしていると評価した場合（ステップＳ９０６）、モード判定部２８９はサイズＬのモードを最適プリフェッチサイズとして選択する（ステップＳ９０８）。これにより、プリフェッチサイズのモード切替が行われる。また、実行性能評価部２８７および２８８の両者が、ストール発生周波数が条件を満たしていないと評価した場合（ステップＳ９０６）、モード判定部２８９は割込みをアサートする（ステップＳ９０９）。
【００５８】
このように、本発明の第２の実施の形態によれば、統計情報に基づいて最適プリフェッチサイズが決定され、動的にプリフェッチサイズを切り替えることが可能となる。
【００５９】
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、本発明の実施の形態において明示したように、本発明の実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本発明の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【符号の説明】
【００６０】
１００  プロセッサ
１０１  キャッシュメモリ
１０２  バスマスタインターフェース
１１０、１２０、１３０  クライアント
２００  プリフェッチ回路
２０１  プリフェッチ制御部
２０２  最適プリフェッチサイズ決定部
２１０  プリフェッチバッファ
２２０  タグ管理部
２２５  モード切替指示検出部
２２７  モード切替部
２３０  プロセッサインターフェース
２４０  バスインターフェース
２４１  データ転送処理部
２４２  転送状態監視部
２５０、２５１、２５２  モード切替レジスタ
２６０  ヒット率算出部
２７１  性能目標値レジスタ
２７２  ヒットレイテンシレジスタ
２８１  リード要求帯域測定部
２８２  ミスヒットレイテンシ測定部
２８３、２８４  平均レイテンシ算出部
２８５、２８６  ストール発生周波数算出部
２８７、２８８  実行性能評価部
２８９  モード判定部
３００  メモリバス
４００  メモリコントローラ
５００  メモリ
【図１】
2012150529.tif 000003
【図２】
2012150529.tif 000004
【図３】
2012150529.tif 000005
【図４】
2012150529.tif 000006
【図５】
2012150529.tif 000007
【図６】
2012150529.tif 000008
【図７】
2012150529.tif 000009
【図８】
2012150529.tif 000010
【図９】
2012150529.tif 000011