説明

メモリアクセス制御回路、プリフェッチ回路、メモリ装置および情報処理システム

【課題】プリフェッチバッファのプリフェッチサイズを動的に切り替える。
【解決手段】モード切替レジスタ250はプリフェッチバッファ210におけるプリフェッチサイズのモード切替えをプロセッサから指示する。モード切替指示検出部225はプリフェッチバッファ210におけるプリフェッチサイズのモードを切り替える指示を検出する。転送状態監視部242はデータ転送処理部241におけるデータ転送処理が実行中か否かの状態を監視する。モード切替部227は、モード切替指示が検出された際にデータ転送処理が実行中でなければ、すみやかにプリフェッチバッファ210におけるプリフェッチサイズの切替を実行する。一方、モード切替指示が検出された際にデータ転送処理が実行中である場合には、モード切替部227はデータ転送処理の終了を待ってプリフェッチサイズの切替を実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリアクセス制御回路に関し、特にメモリに対してプリフェッチを行うメモリアクセス制御回路、プリフェッチ回路、メモリ装置および情報処理システムに関する。
【背景技術】
【0002】
プロセッサはメモリを命令保持領域およびデータ保持領域として使用するため、プログラム実行中に高い頻度でメモリへのアクセスを必要とする。そのようなメモリへのアクセスによる負荷を低減するために、プロセッサとメモリの間にプリフェッチバッファを設けることがある。このプリフェッチバッファは連続した複数のワードを1つのラインとして管理し、プリフェッチバッファのミスヒット時には複数のワードをまとめてプリフェッチするように構成される。
【0003】
このプリフェッチバッファにプリフェッチする際の転送サイズ、すなわちプリフェッチサイズは、プロセッサの実行性能に大きく影響する。プリフェッチサイズを大きくすると、プリフェッチされた内容が使用されれば性能向上につながるが、使用されなければ無駄読みになってしまいメモリ帯域を圧迫してしまう。そこで、このプリフェッチサイズを可変にするために、例えば、エリア属性管理テーブルを設けてプリフェッチを行う際のプリフェッチサイズを保持するメモリコントローラが提案されている(例えば、特許文献1参照。)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−240616号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述の従来技術によれば、論理アドレスブロック毎にプリフェッチサイズを指定することが可能となる。しかしながら、プリフェッチバッファの使用はプログラムの構造にも依存するため、最適なプリフェッチサイズを決定することは一般に困難である。また、種類の異なるプログラムを実行する場合、プログラムによって最適なプリフェッチサイズが異なるため、プリフェッチサイズを固定することが適切でないことがある。
【0006】
本発明はこのような状況に鑑みてなされたものであり、プリフェッチバッファのプリフェッチサイズを動的に切り替えることを目的とする。
【課題を解決するための手段】
【0007】
本発明は、上記課題を解決するためになされたものであり、その第1の側面は、メモリからプリフェッチバッファへ転送するプリフェッチサイズを切り替えるための切替指示を検出するプリフェッチサイズ切替指示検出部と、上記メモリと上記プリフェッチバッファとの間で転送が行われている状態を監視する転送状態監視部と、上記切替指示が検出された際に上記転送が行われていない場合にはすみやかに上記プリフェッチバッファにおけるプリフェッチサイズの切替を行い、上記切替指示が検出された際に上記転送が行われている場合には上記転送の終了を待って上記プリフェッチバッファにおけるプリフェッチサイズの切替を行うプリフェッチサイズ切替部とを具備するメモリアクセス制御回路、プリフェッチ回路、メモリ装置および情報処理システムである。これにより、プリフェッチバッファのプリフェッチサイズを動的に切り替えるという作用をもたらす。
【0008】
また、この第1の側面において、プロセッサから上記メモリへのリードアクセスに伴う統計情報に基づいて上記プリフェッチバッファにおける最適プリフェッチサイズを決定する最適プリフェッチサイズ決定部をさらに具備し、上記プリフェッチサイズ切替部は、上記プリフェッチバッファのプリフェッチサイズを上記最適プリフェッチサイズに切り替えるようにしてもよい。これにより、プリフェッチバッファのプリフェッチサイズを最適プリフェッチサイズに動的に切り替えるという作用をもたらす。
【0009】
また、この第1の側面において、上記プロセッサから上記メモリに対するリード要求帯域を測定するリード要求帯域測定部と、上記プリフェッチバッファのプリフェッチサイズを第1および第2のプリフェッチサイズに設定した場合のそれぞれにおける上記プロセッサと上記メモリとの間に要する平均レイテンシを算出する平均レイテンシ算出部と、上記プリフェッチバッファのプリフェッチサイズを上記第1および第2のプリフェッチサイズに設定した場合のそれぞれにおけるストール発生周波数を上記リード要求帯域と上記平均レイテンシに基づいて算出するストール発生周波数算出部と、上記プリフェッチバッファのプリフェッチサイズを上記第1および第2のプリフェッチサイズに設定した場合のそれぞれにおける上記プロセッサの実行性能を評価する実行性能評価部と、上記評価結果に基づいて上記第1および第2のプリフェッチサイズの何れが上記最適プリフェッチサイズであるかを判定する最適プリフェッチサイズ判定部とをさらに具備してもよい。これにより、統計情報に基づいて最適プリフェッチサイズを決定するという作用をもたらす。
【0010】
また、この第1の側面において、上記プリフェッチバッファのプリフェッチサイズを切り替えるための上記切替指示が設定されるプリフェッチサイズ切替レジスタをさらに具備し、上記プリフェッチサイズ切替指示検出部は、上記プリフェッチサイズ切替レジスタに設定された上記切替指示を検出するようにしてもよい。これにより、プリフェッチサイズ切替レジスタを介してプリフェッチサイズの切替指示を検出するという作用をもたらす。
【発明の効果】
【0011】
本発明によれば、プリフェッチバッファのプリフェッチサイズを動的に切り替えることができるという優れた効果を奏し得る。
【図面の簡単な説明】
【0012】
【図1】本発明の実施の形態における情報処理システムの一構成例を示す図である。
【図2】本発明の実施の形態におけるバスマスタインターフェース102の一構成例を示す図である。
【図3】本発明の第1の実施の形態におけるプリフェッチ回路200の一構成例を示す図である。
【図4】本発明の第1の実施の形態におけるモード切替レジスタ250の一構成例を示す図である。
【図5】本発明の第1の実施の形態におけるプリフェッチ回路200の動作タイミング例を示す図である。
【図6】本発明の第2の実施の形態におけるプリフェッチ回路200の一構成例を示す図である。
【図7】バスマスタインターフェースにおけるHBURST[2:0]信号の内容を示す図である。
【図8】本発明の第2の実施の形態におけるプリフェッチ回路200の最適プリフェッチサイズ決定部202の一構成例を示す図である。
【図9】本発明の第2の実施の形態におけるプリフェッチ回路200の処理手順例を示す流れ図である。
【発明を実施するための形態】
【0013】
以下、本発明を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(プリフェッチサイズの動的制御)
2.第2の実施の形態(最適プリフェッチサイズの決定)
【0014】
<1.第1の実施の形態>
[情報処理システム構成]
図1は、本発明の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、プロセッサ100と、クライアント110乃至130と、プリフェッチ回路200と、メモリバス300と、メモリコントローラ400と、メモリ500を備えている。
【0015】
プロセッサ100は、プログラムの各命令に従って処理を実行するものである。プログラムの各命令はメモリ500の命令保持領域に保持される。また、処理に必要なデータはメモリ500のデータ保持領域に保持される。これらメモリ500の命令保持領域およびデータ保持領域の内容は、その一部のコピーがプリフェッチ回路200に保持される。また、プロセッサ100は内部にキャッシュメモリ101を備えており、メモリ500の命令保持領域およびデータ保持領域の一部のコピーが保持される。また、プロセッサ100は内部にバスマスタインターフェース102を備えており、メモリバス300に対するやり取りを行うようになっている。
【0016】
プリフェッチ回路200は、メモリ500の命令保持領域およびデータ保持領域の内容の一部のコピーをプリフェッチして保持するものである。後述するように、このプリフェッチ回路200は、プロセッサ100からのラップアラウンドメモリアクセスリクエストのサイズおよび開始アドレスを変換してメモリバス300に出力する。
【0017】
メモリバス300は、プロセッサ100に接続するプリフェッチ回路200、プロセッサ100以外の他のクライアント110乃至130、および、メモリコントローラ400を接続するバスである。ここでは統合メモリシステム(Unified Memory System)を想定しているが、本発明はこれに限定されるものではない。
【0018】
メモリコントローラ400は、メモリ500に対するアクセスを制御するためのコントローラである。メモリ500は、プロセッサ100および他のクライアント110乃至130に共有されるメモリである。
【0019】
[バスマスタインターフェース]
図2は、本発明の実施の形態におけるバスマスタインターフェース102の一構成例を示す図である。このバスマスタインターフェース102は、ARM社のAHBバスマスタインターフェースに準ずるものであるが、本発明はこれに限定されるものではなく、AXIバスやOCPバス等、ラップアラウンドメモリアクセスを行う他のバスにも適用することができる。
【0020】
HGRANT信号は、アービタによって許可されたバス転送であることを示す信号である。HREADY信号は、現在の転送が終了したことを示す信号である。HRESP[1:0]信号は、転送ステータスを示す信号である。HRESETn信号は、グローバルリセットを行うための信号である。なお、信号名の最後の「n」は、ローアクティブ信号であることを意味する。
【0021】
HCLK信号は、バスクロックの入力信号である。HCLKEN信号は、バスクロックのイネーブル信号である。HRDATA[31:0]信号は、メモリ500からのリードデータの入力信号である。
【0022】
HBUSREQ信号は、バス転送をアービタに要求するための信号である。HLOCK信号は、ロックされたアクセスであることを示す信号である。HTRANS[1:0]は、現在の転送のタイプを示す信号である。
【0023】
HADDR[31:0]は、メモリ500に対してリードアドレスまたはライトアドレスを出力するアドレス信号である。バースト転送の場合、このアドレス信号は開始アドレスを示すことになる。HWRITE信号は、現在の転送の方向がライト方向であるかリード方向であるかを示す信号である。HSIZE[2:0]は、現在の転送のサイズを示す信号である。HBURST[2:0]は、現在の転送のバースト長を示す信号である。HPROT[3:0]は、プロテクション制御信号である。HWDATA[31:0]信号は、メモリ500に対するライトデータの出力信号である。
【0024】
ここで説明したインターフェースは、プロセッサ100とプリフェッチ回路200との間およびプリフェッチ回路200とメモリ500との間で共通である。ただし、以下ではこれらを区別するために、プロセッサ100とプリフェッチ回路200との間の信号名には「A_」を付加し、プリフェッチ回路200とメモリ500との間の信号名には「B_」を付加して説明することがある。
【0025】
[プリフェッチ回路の構成]
図3は、本発明の第1の実施の形態におけるプリフェッチ回路200の一構成例を示す図である。このプリフェッチ回路200は、プリフェッチバッファ210と、タグ管理部220と、プロセッサインターフェース230と、バスインターフェース240と、モード切替レジスタ250とを備える。
【0026】
プリフェッチバッファ210は、メモリ500におけるプロセッサ100のための命令保持領域およびデータ保持領域の内容の一部のコピーを保持するバッファである。このプリフェッチバッファ210の管理単位のサイズは、プロセッサ100のキャッシュメモリ101のラインサイズよりも大きいことを想定している。このプリフェッチバッファ210には命令またはデータが保持されるが、これらは論理的に区別されたものでもよく、または、物理的に独立したバッファとして実現されてもよい。
【0027】
タグ管理部220は、プリフェッチバッファ210に保持される対象(命令またはデータ)のアドレスのタグを管理するものである。タグとしては、対象のアドレスフィールドの上位の複数ビットのうち、一部のビットが用いられる。このタグ管理部220は、モード切替指示検出部225およびモード切替部227を備える。
【0028】
モード切替指示検出部225は、プリフェッチバッファ210におけるプリフェッチサイズのモードを切り替える指示を検出するものである。モード切替部227は、プリフェッチバッファ210におけるプリフェッチサイズのモード切替えを実行するものである。プリフェッチサイズのモードとしては、例えば、32バイトモードと64バイトモードとを相互に切り替えることが想定される。32ビットデータバス幅の時、32バイトモードでは、プリフェッチ時に8バーストのラップアラウンドバースト転送を用いることができる。同様に32ビットデータバス幅の時、64バイトモードでは、プリフェッチ時に16バーストのラップアラウンドバースト転送を用いることができる。なお、モード切替指示検出部225は、特許請求の範囲に記載のプリフェッチサイズ切替指示検出部の一例である。
【0029】
プロセッサインターフェース230は、プロセッサ100との間のやりとりを行うインターフェース回路である。バスインターフェース240は、メモリバス300との間のやりとりを行うインターフェース回路である。このバスインターフェース240は、データ転送処理部241および転送状態監視部242を備えている。データ転送処理部241は、プロセッサ100とメモリ500との間のデータ転送処理を実行するものである。転送状態監視部242は、データ転送処理部241におけるデータ転送処理が実行中か否かの状態を監視するものである。
【0030】
モード切替レジスタ250は、プリフェッチバッファ210におけるプリフェッチサイズのモード切替えをプロセッサ100から指示するためのレジスタである。このモード切替レジスタ250としては、後述するように命令用およびデータ用の2種類を想定するが、これらを同一のレジスタにより指示するようにしても構わない。なお、モード切替レジスタ250は、特許請求の範囲に記載のプリフェッチサイズ切替レジスタの一例である。
【0031】
プロセッサ100は、プリフェッチバッファ210におけるプリフェッチサイズを切り替える際には、モード切替レジスタ250におけるモードフラグを設定する。モード切替レジスタ250においてモードフラグが設定されると、信号線259を介してタグ管理部220に通知される。タグ管理部220では、モード切替指示検出部225がプリフェッチサイズのモード切替指示を検出して、信号線226を介してモード切替部227に通知する。一方、転送状態監視部242は、データ転送処理部241におけるデータ転送処理が実行中か否かの状態を監視しており、信号線249を介してその監視結果をモード切替部227に通知する。
【0032】
モード切替部227は、モード切替指示検出部225によってモード切替指示が検出された際に、データ転送処理部241におけるデータ転送処理が実行中でなければ、すみやかにプリフェッチバッファ210におけるプリフェッチサイズの切替を実行する。一方、モード切替指示検出部225によってモード切替指示が検出された際に、データ転送処理部241におけるデータ転送処理が実行中である場合には、モード切替部227はデータ転送処理の終了を待ってプリフェッチサイズの切替を実行する。モード切替部227は信号線229を介してプロセッサインターフェース230にモード切替の処理状態を伝える。プロセッサインターフェース230はモード切替の処理が実行されている間は次のコマンドをプロセッサ100から受け付けないようにA_HREADY信号をネゲートする。なお、モード切替部227は、特許請求の範囲に記載のプリフェッチサイズ切替部の一例である。
【0033】
図4は、本発明の第1の実施の形態におけるモード切替レジスタ250の一構成例を示す図である。同図(a)は、プリフェッチバッファ210におけるデータのプリフェッチサイズの切替を指示するためのレジスタ251である。同図(b)は、プリフェッチバッファ210における命令のプリフェッチサイズの切替を指示するためのレジスタ252である。両者は対象が異なるが、フィールド構成は同様である。これら2つのレジスタは、物理的に1つのレジスタを論理的に区別してもよく、または、物理的に異なる2つのレジスタとして実現してもよい。
【0034】
レジスタ251および252は32ビット構成を想定している。レジスタ251または252において、最下位ビットがプリフェッチサイズのモードを示すモードフラグである。例えば、このモードフラグが「0」であれば32バイトモードに設定され、「1」であれば64バイトモードに設定される。プリフェッチサイズが設定される際には、タグ管理部220におけるタグが無効化される。この無効化が完了した後にプリフェッチサイズが設定される。ただし、データ転送処理が行われている間は、タグの無効化は待機される。
【0035】
[プリフェッチ回路の動作]
図5は、本発明の第1の実施の形態におけるプリフェッチ回路200の動作タイミング例を示す図である。ここでは、メモリ500からのリードデータをプリフェッチバッファ210に転送している途中で、プロセッサ100からモード切替レジスタ250にプリフェッチサイズの切替指示が設定された場合を想定している。
【0036】
モード切替レジスタ250にプリフェッチサイズの切替指示が設定されると、プロセッサインターフェース230はA_HREADY信号をネゲートすることによりプロセッサ100から次のコマンドを受け付けないようにする。そして、メモリ500からのリードデータの転送が終了すると、信号線249を介して転送状態監視部242からモード切替部227へ転送終了信号が通知される。この通知を待って、タグ管理部220においてタグが無効化され、現行モード信号が32バイトモードを示す「0」から64バイトモードを示す「1」に切り替わる。これにより、プロセッサインターフェース230はA_HREADY信号をアサートし、プロセッサ100から新たなコマンドを受け付けることができるようになる。
【0037】
このように、本発明の第1の実施の形態によれば、データのコヒーレンシを維持しながら、プロセッサの動作中に動的にプリフェッチサイズを切り替えることが可能となる。
【0038】
<2.第2の実施の形態>
本発明の第2の実施の形態では、プロセッサからメモリへのリードアクセスに伴う統計情報に基づいてプリフェッチバッファにおける最適プリフェッチサイズを決定する。この第2の実施の形態においても、図1により構成例を説明した上述の情報処理システムを想定する。
【0039】
[プリフェッチ回路の構成]
図6は、本発明の第2の実施の形態におけるプリフェッチ回路200の一構成例を示す図である。この第2の実施の形態におけるプリフェッチ回路200は、プリフェッチ制御部201と最適プリフェッチサイズ決定部202とを備えている。プリフェッチ制御部201の基本的な構成は、図3により説明した第1の実施の形態におけるプリフェッチ回路200の要部と同様である。すなわち、プリフェッチバッファ210と、タグ管理部220と、プロセッサインターフェース230と、バスインターフェース240とを備える。
【0040】
さらに、第2の実施の形態におけるプリフェッチ回路200は、ヒット率算出部260を備える。このヒット率算出部260は、プロセッサ100からメモリ500へのリードアクセスに伴う統計情報に基づいて、プリフェッチサイズ毎のヒット率を算出するものである。算出されたヒット率は、信号線268または269によって最適プリフェッチサイズ決定部202に供給される。なお、この例では便宜的にプリフェッチ制御部201がヒット率算出部260を含む構成としたが、このヒット率算出部260は最適プリフェッチサイズ決定部202に配置するようにしてもよい。
【0041】
図7は、バスマスタインターフェースにおけるHBURST[2:0]信号の内容を示す図である。HBURST[2:0]が「3'b000」を示す場合には、シングル転送(SINGLE)を意味する。なお、「n'b0…0」は、n桁(ここでは3桁)のビット列を表現するものである。HBURST[2:0]が「3'b001」を示す場合には、長さ指定のないインクリメンタルバースト転送(INCR)を意味する。インクリメンタルバースト転送とは、各バーストを転送する際にアドレスに固定値を加算するものである。HBURST[2:0]が「3'b010」を示す場合には、4バーストのラップアラウンドバースト転送(WRAP4)を意味する。ラップアラウンドバースト転送とは、特定のアドレス範囲内においてアドレスを加算して、ラップ境界においてアドレスを循環させるものである。ここでは、ラップアラウンドメモリアクセスをラップアラウンドバースト転送と同義のものとして扱う。
【0042】
HBURST[2:0]が「3'b011」を示す場合には、4バーストのインクリメンタルバースト転送(INCR4)を意味する。HBURST[2:0]が「3'b100」を示す場合には、8バーストのラップアラウンドバースト転送(WRAP8)を意味する。HBURST[2:0]が「3'b101」を示す場合には、8バーストのインクリメンタルバースト転送(INCR8)を意味する。HBURST[2:0]が「3'b110」を示す場合には、16バーストのラップアラウンドバースト転送(WRAP16)を意味する。HBURST[2:0]が「3'b111」を示す場合には、16バーストのインクリメンタルバースト転送(INCR16)を意味する。
【0043】
プロセッサ100がA_HBURST[2:0]信号によってプリフェッチ回路200に対してWRAP4命令を発行すると、バスインターフェース240はプリフェッチサイズのモードに応じてメモリ500にWRAP8またはWRAP16命令を発行する。すなわち、バスインターフェース240は、32バイトモードであればWRAP8命令をB_HBURST[2:0]信号によってメモリ500に発行する。一方、64バイトモードであればWRAP16命令をB_HBURST[2:0]信号によってメモリ500に発行する。
【0044】
図8は、本発明の第2の実施の形態におけるプリフェッチ回路200の最適プリフェッチサイズ決定部202の一構成例を示す図である。最適プリフェッチサイズ決定部202は、プリフェッチバッファ210のプリフェッチサイズとして、サイズLおよびサイズS(サイズL>サイズS)のうち何れのモードが最適であるかを決定するものである。例えば、サイズLとして64バイト、サイズSとして32バイトを想定する。この最適プリフェッチサイズ決定部202は、性能目標値レジスタ271と、ヒットレイテンシレジスタ272とを備える。また、この最適プリフェッチサイズ決定部202は、リード要求帯域測定部281と、ミスヒットレイテンシ測定部282とを備える。また、この最適プリフェッチサイズ決定部202は、プリフェッチサイズ(サイズLまたはS)毎に、平均レイテンシ算出部283および284と、ストール発生周波数算出部285および286と、実行性能評価部287および288とを備える。また、この最適プリフェッチサイズ決定部202は、モード判定部289を備える。
【0045】
性能目標値レジスタ271は、プリフェッチサイズのモードを判定するためのプロセッサ100の性能目標値を保持するレジスタである。性能目標値としては、例えばMIPS(Million Instructions Per Second)値を用いることができる。この性能目標値はシステム仕様などに応じて適宜定められ、信号線239を介してプロセッサインターフェース230によって設定される。
【0046】
ヒットレイテンシレジスタ272は、プリフェッチバッファ210にヒットした場合のレイテンシを保持するレジスタである。ここで、レイテンシとは、プロセッサ100がリード要求を発行してから、対象となるリプライデータがプロセッサ100に到達するまでに要するサイクル数である。プリフェッチバッファ210にヒットした場合には固定サイクルとして算出可能なため、予めこのヒットレイテンシレジスタ272に保持しておくものとする。このヒットレイテンシは、信号線239を介してプロセッサインターフェース230によって設定される。
【0047】
リード要求帯域測定部281は、プロセッサ100に送出したリプライデータのバイト数に基づいて、プロセッサ100からの1秒当たりのリード要求帯域を常時計測するものである。このリード要求帯域の単位としては、例えばメガバイト/秒(MB/s)を用いることができる。このリード要求帯域測定部281による測定結果はプロセッサからのリード要求を受け付ける都度更新され、直近の1秒間の測定結果が、ストール発生周波数算出部285および286に供給される。
【0048】
ミスヒットレイテンシ測定部282は、プリフェッチバッファ210にミスヒットした場合のレイテンシを測定するものである。プリフェッチバッファ210にミスヒットした場合には、メモリ500に対してバーストアクセスが行われる。したがって、対象となるリプライデータがプロセッサ100に到達するまでには、メモリ500に対するアクセス時間を要することになる。このミスヒットレイテンシ測定部282による測定結果は、平均レイテンシ算出部283および284に供給される。
【0049】
平均レイテンシ算出部283および284は、プリフェッチサイズのモード毎に平均レイテンシを算出するものである。ヒット率はプリフェッチサイズによって異なるため、プリフェッチサイズのモード毎に平均レイテンシが算出される。サイズSのヒット率は、ヒット率算出部260から信号線268を介して供給される。サイズLのヒット率は、ヒット率算出部260から信号線269を介して供給される。ヒットレイテンシレジスタ272に保持されたヒット時のレイテンシをA、ミスヒットレイテンシ測定部282によって測定されたミスヒット時のレイテンシをBとする。そして、ヒット率算出部260によって算出されたサイズSのヒット率をXとすると、サイズSの平均レイテンシLSは次式により得られる。
LS=A×X+B×(1−X)
また、ヒット率算出部260によって算出されたサイズLのヒット率をYとすると、サイズLの平均レイテンシLLは次式により得られる。
LL=A×Y+B×(1−Y)
平均レイテンシ算出部283はサイズLの平均レイテンシを算出し、平均レイテンシ算出部284はサイズSの平均レイテンシを算出する。
【0050】
ストール発生周波数算出部285および286は、プリフェッチサイズのモード毎にストール発生周波数を算出するものである。ストール発生周波数は、プロセッサ100の1秒当たりのストールサイクルである。リード要求帯域測定部281によって測定されたリード要求帯域をQとし、サイズSを32バイトとすると、サイズSのストール発生周波数SSは次式により得られる。
SS=LS×Q/32
また、サイズLを64バイトとすると、サイズLのストール発生周波数SLは次式により得られる。
SL=LL×Q/64
ストール発生周波数算出部285はサイズLのストール発生周波数を算出し、ストール発生周波数算出部286はサイズSのストール発生周波数を算出する。
【0051】
実行性能評価部287および288は、プリフェッチサイズのモード毎にストール発生周波数が性能目標値の許容する範囲内にあるか否かを評価するものである。ここで、プロセッサ性能値は、次式により表される。
プロセッサ性能値[MIPS]=
(プロセッサ動作周波数[MHz]−ストール発生周波数[MHz])/CPI
ただし、CPI(Cycle Per Instruction)は1命令当たりの実行サイクル数である。ここでは、CPI=1と仮定して、プロセッサ動作周波数からストール発生周波数を減算したものをプロセッサ性能値として扱う。これにより、「プロセッサ動作周波数−プロセッサ性能目標値」と「ストール発生周波数」とを比較することで、ストール発生周波数が性能目標値の許容する範囲内にあるか否かを評価することができる。
【0052】
すなわち、実行性能評価部287は、「性能目標値レジスタ271に保持されているプロセッサ性能目標値をプロセッサ100の動作周波数から減算した値」と「ストール発生周波数算出部285によって算出されたサイズLのストール発生周波数」とを比較する。これにより、前者の方が後者よりも大きければ、サイズLのストール発生周波数が性能目標値の許容する範囲内にあることになる。また、実行性能評価部288は、「性能目標値レジスタ271に保持されているプロセッサ性能目標値をプロセッサ100の動作周波数から減算した値」と「ストール発生周波数算出部286によって算出されたサイズSのストール発生周波数」とを比較する。これにより、前者の方が後者よりも大きければ、サイズSのストール発生周波数が性能目標値の許容する範囲内にあることになる。
【0053】
モード判定部289は、実行性能評価部287および288における評価結果に従って、プリフェッチサイズのモードを判定するものである。すなわち、実行性能評価部287および288の両者において性能目標値の許容する範囲内にあると評価された場合、モード判定部289はより小さいサイズSのモードを最適プリフェッチサイズとして選択する。また、実行性能評価部287のみが性能目標値の許容する範囲内にあると評価し、実行性能評価部288は許容する範囲内にあると評価しなかった場合、モード判定部289はサイズLのモードを最適プリフェッチサイズとして選択する。また、実行性能評価部287および288の何れもが、性能目標値の許容する範囲内にあると評価しなかった場合、何れのモードも選択できないため、割込みをアサートする。なお、サイズSのみが性能目標値の許容する範囲内にあるという事象は、理論的に生じ得ない。このモード判定部289による判定結果は、信号線299を介してプリフェッチ回路200のタグ管理部220に供給される。なお、モード判定部289は、特許請求の範囲に記載の最適プリフェッチサイズ判定部の一例である。
【0054】
タグ管理部220の内部構成は図3により説明した第1の実施の形態と同様である。すなわち、モード切替指示検出部225は、信号線299を介してモード判定部289による判定結果を受け取ると、モード切替指示として検出する。モード切替部227は、バスインターフェース240における転送処理の終了を待って、プリフェッチサイズのモードを切り替える。
【0055】
[プリフェッチ回路の動作]
図9は、本発明の第2の実施の形態におけるプリフェッチ回路200の処理手順例を示す流れ図である。性能目標値レジスタ271には、プロセッサ100の実行性能の目標値が予め設定される(ステップS901)。
【0056】
そして、プリフェッチサイズがサイズSのモードとサイズLのモードとでプロセッサ100によりプログラムの実行が行われ、統計情報が取得される(ステップS902)。ここで、統計情報としては、ヒット率算出部260により算出されたヒット率、リード要求帯域測定部281により測定されたリード要求帯域、および、ミスヒットレイテンシ測定部282により測定されたミスヒット時のレイテンシなどが想定される。これら統計情報に基づいて、プリフェッチサイズのモード毎に平均レイテンシ算出部283および284により平均レイテンシが算出され、ストール発生周波数算出部285および286によりストール発生周波数が算出される(ステップS903)。
【0057】
そして、実行性能評価部287および288により、プリフェッチサイズのモード毎にストール発生周波数が性能目標値の許容する範囲内にあるという条件を満たしているか否かが評価される(ステップS904)。実行性能評価部287および288による評価結果に応じて、モード判定部289はプリフェッチサイズのモードを判定する。すなわち、実行性能評価部287および288の両者が、ストール発生周波数が条件を満たしていると評価した場合(ステップS905)、モード判定部289はサイズSのモードを最適プリフェッチサイズとして選択する(ステップS907)。これにより、プリフェッチサイズのモード切替が行われる。一方、実行性能評価部287または288の一方のみが、ストール発生周波数が条件を満たしていると評価した場合(ステップS906)、モード判定部289はサイズLのモードを最適プリフェッチサイズとして選択する(ステップS908)。これにより、プリフェッチサイズのモード切替が行われる。また、実行性能評価部287および288の両者が、ストール発生周波数が条件を満たしていないと評価した場合(ステップS906)、モード判定部289は割込みをアサートする(ステップS909)。
【0058】
このように、本発明の第2の実施の形態によれば、統計情報に基づいて最適プリフェッチサイズが決定され、動的にプリフェッチサイズを切り替えることが可能となる。
【0059】
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、本発明の実施の形態において明示したように、本発明の実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本発明の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【符号の説明】
【0060】
100 プロセッサ
101 キャッシュメモリ
102 バスマスタインターフェース
110、120、130 クライアント
200 プリフェッチ回路
201 プリフェッチ制御部
202 最適プリフェッチサイズ決定部
210 プリフェッチバッファ
220 タグ管理部
225 モード切替指示検出部
227 モード切替部
230 プロセッサインターフェース
240 バスインターフェース
241 データ転送処理部
242 転送状態監視部
250、251、252 モード切替レジスタ
260 ヒット率算出部
271 性能目標値レジスタ
272 ヒットレイテンシレジスタ
281 リード要求帯域測定部
282 ミスヒットレイテンシ測定部
283、284 平均レイテンシ算出部
285、286 ストール発生周波数算出部
287、288 実行性能評価部
289 モード判定部
300 メモリバス
400 メモリコントローラ
500 メモリ

【特許請求の範囲】
【請求項1】
メモリからプリフェッチバッファへ転送するプリフェッチサイズを切り替えるための切替指示を検出するプリフェッチサイズ切替指示検出部と、
前記メモリと前記プリフェッチバッファとの間で転送が行われている状態を監視する転送状態監視部と、
前記切替指示が検出された際に前記転送が行われていない場合にはすみやかに前記プリフェッチバッファにおけるプリフェッチサイズの切替を行い、前記切替指示が検出された際に前記転送が行われている場合には前記転送の終了を待って前記プリフェッチバッファにおけるプリフェッチサイズの切替を行うプリフェッチサイズ切替部と
を具備するメモリアクセス制御回路。
【請求項2】
プロセッサから前記メモリへのリードアクセスに伴う統計情報に基づいて前記プリフェッチバッファにおける最適プリフェッチサイズを決定する最適プリフェッチサイズ決定部をさらに具備し、
前記プリフェッチサイズ切替部は、前記プリフェッチバッファのプリフェッチサイズを前記最適プリフェッチサイズに切り替える
請求項1記載のメモリアクセス制御回路。
【請求項3】
前記プロセッサから前記メモリに対するリード要求帯域を測定するリード要求帯域測定部と、
前記プリフェッチバッファのプリフェッチサイズを第1および第2のプリフェッチサイズに設定した場合のそれぞれにおける前記プロセッサと前記メモリとの間に要する平均レイテンシを前記統計情報に基づいて算出する平均レイテンシ算出部と、
前記プリフェッチバッファのプリフェッチサイズを前記第1および第2のプリフェッチサイズに設定した場合のそれぞれにおけるストール発生周波数を前記リード要求帯域と前記平均レイテンシに基づいて算出するストール発生周波数算出部と、
前記プリフェッチバッファのプリフェッチサイズを前記第1および第2のプリフェッチサイズに設定した場合のそれぞれにおける前記プロセッサの実行性能を評価する実行性能評価部と、
前記評価結果に基づいて前記第1および第2のプリフェッチサイズの何れが前記最適プリフェッチサイズであるかを判定する最適プリフェッチサイズ判定部と
をさらに具備する請求項2記載のメモリアクセス制御回路。
【請求項4】
前記プリフェッチバッファのプリフェッチサイズを切り替えるための前記切替指示が設定されるプリフェッチサイズ切替レジスタをさらに具備し、
前記プリフェッチサイズ切替指示検出部は、前記プリフェッチサイズ切替レジスタに設定された前記切替指示を検出する
請求項1記載のメモリアクセス制御回路。
【請求項5】
プリフェッチバッファと、
メモリから前記プリフェッチバッファへ転送するプリフェッチサイズを切り替えるための切替指示を検出するプリフェッチサイズ切替指示検出部と、
前記メモリと前記プリフェッチバッファとの間で転送が行われている状態を監視する転送状態監視部と、
前記切替指示が検出された際に前記転送が行われていない場合にはすみやかに前記プリフェッチバッファにおけるプリフェッチサイズの切替を行い、前記切替指示が検出された際に前記転送が行われている場合には前記転送の終了を待って前記プリフェッチバッファにおけるプリフェッチサイズの切替を行うプリフェッチサイズ切替部と
を具備するプリフェッチ回路。
【請求項6】
メモリと、
前記メモリの一部のコピーを格納するプリフェッチバッファと、
前記メモリから前記プリフェッチバッファへ転送するプリフェッチサイズを切り替えるための切替指示を検出するプリフェッチサイズ切替指示検出部と、
前記メモリと前記プリフェッチバッファとの間で転送が行われている状態を監視する転送状態監視部と、
前記切替指示が検出された際に前記転送が行われていない場合にはすみやかに前記プリフェッチバッファにおけるプリフェッチサイズの切替を行い、前記切替指示が検出された際に前記転送が行われている場合には前記転送の終了を待って前記プリフェッチバッファにおけるプリフェッチサイズの切替を行うプリフェッチサイズ切替部と
を具備するメモリ装置。
【請求項7】
プロセッサと、
メモリと、
前記メモリの一部のコピーを格納するプリフェッチバッファと、
前記メモリから前記プリフェッチバッファへ転送するプリフェッチサイズを切り替えるための切替指示を検出するプリフェッチサイズ切替指示検出部と、
前記メモリと前記プリフェッチバッファとの間で転送が行われている状態を監視する転送状態監視部と、
前記切替指示が検出された際に前記転送が行われていない場合にはすみやかに前記プリフェッチバッファにおけるプリフェッチサイズの切替を行い、前記切替指示が検出された際に前記転送が行われている場合には前記転送の終了を待って前記プリフェッチバッファにおけるプリフェッチサイズの切替を行うプリフェッチサイズ切替部と
を具備する情報処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−150529(P2012−150529A)
【公開日】平成24年8月9日(2012.8.9)
【国際特許分類】
【出願番号】特願2011−6574(P2011−6574)
【出願日】平成23年1月17日(2011.1.17)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】