説明

データ処理装置

【課題】CPUによるストリームデータのような一連の構造を持つデータのアクセスを高速化する。
【解決手段】CPUからのアクセス要求に応答してメモリ動作を行う第1プリフェッチバッファに、当該第1プリフェッチバッファが必要なデータを保有していないとき第1プリフェッチバッファからの要求に従ってメモリ動作を行い且つ第1プリフェッチバッファよりも記憶容量の大きな第2プリフェッチバッファを配置し、第1プリフェッチバッファには連想アクセスで第2プリフェッチバッファから読込むデータ量を可変可能に制御する第1プリフェッチ制御部を、第2プリフェッチバッファには第1プリフェッチバッファからの要求に従ってメインメモリから読込むデータ量及び読込んだデータを保持する範囲を可変可能に制御する第2プリフェッチ制御部を設ける。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、中央処理装置が利用するデータを予め蓄積するプリフェッチバッファを備えたデータ処理装置に関し、例えばシステムオンチップの半導体集積回路化されたマイクロコンピュータに適用して有効な技術に関する。
【背景技術】
【0002】
ストリームデータなどを効率的に処理するためにプリフェッチバッファを採用する技術がある。例えば特許文献1では、キャッシュメモリとは別に(並列に)、メインメモリからデータの先読みを行うプリフェッチバッファを設けることが記載されている。このプリフェッチバッファは中央処理装置からのリード要求がプリフェッチ対象空間に対するものであったときに、それをトリガにメインメモリに対してデータの先読み(プリフェッチ)を開始する。
【0003】
また特許文献2では、メモリコントローラ内にプリフェッチバッファを設けている。このプリフェッチバッファは、特定のバスマスタからのアクセスである場合に、要求されたアクセスサイズよりも大きな単位で、メインメモリからデータの先読みを行うことで、メインメモリのアクセス効率を改善している。
【0004】
特許文献3にはハードウェアアクセラレータのメモリアクセスを効率化するためのバッファ(インターコネクタバッファ)を用いる技術が記載される。このインターコネクタバッファは画像処理用のハードウェアアクセラレータからのメモリアクセスを効率化するもので、インターコネクタバッファに予めプリフェッチに必要な情報(先読み量やアクセス方向)を設定しておき、ハードウェアアクセラレータからのアクセスをトリガに、メインメモリからのデータの先読みを行うものである。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2000−148584号公報
【特許文献2】特開2004−126645号公報
【特許文献3】特開2008−117108号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1に記載されているように、中央処理装置側の最上位側のキャッシュメモリ(L1キャッシュ)と並列にプリフェッチバッファを搭載すると、プリフェッチバッファの容量を大きくできない。なぜならば、大きくすると中央処理装置はプリフェッチバッファをノーウェイトではアクセスできなくなり、中央処理装置のデータ処理性能を低下させてしまう。
【0007】
特許文献2に記載のように、メモリコントローラの近傍等のように、中央処理装置から遠いところにプリフェッチバッファを搭載する場合には、最初から中央処理装置からのノーウェイトアクセスはあきらめているので、大きな記憶容量を割当てることができるが、中央処理装置からのアクセス毎(例えば32ビットアクセス毎)にアクセスレイテンシがかかり、やはり中央処理装置のデータ処理性能が出ない。
【0008】
特許文献3のインターコネクタバッファは、ハードウェアアクセラレータに最適化して構成されているため、ストリームデータに対するデータスループットを重視した構成にされ、中央処理装置によるワードやロングワード単位のような比較的小さな単位で低レイテンシが求められるアクセス形態には適していない。
【0009】
本発明の目的は、中央処理装置がアクセスするデータの単位が小さい場合にも、中央処理装置によるデータアクセスの高速化若しくは先読み予測が外れることによるペナルティーの削減を容易に実現することが可能なデータ処理装置を提供することにある。
【0010】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0011】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0012】
すなわち、中央処理装置によるアクセス要求に応答して連想記憶によるメモリ動作を行う第1プリフェッチバッファに、当該第1プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第1プリフェッチバッファからの要求にしたがってメモリ動作を行い且つ前記第1プリフェッチバッファよりも大きな記憶容量を有する第2プリフェッチバッファを直列的に配置し、前記第1プリフェッチバッファには連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を可変可能に制御する第1プリフェッチ制御部を設け、前記第2プリフェッチバッファには前記第1プリフェッチバッファからの要求にしたがってメインメモリから読込むデータ量及び読込んだデータを保持する範囲を可変可能に制御する第2プリフェッチ制御部を設ける。
【0013】
これにより、小記憶容量の第1プリフェッチバッファは第2プリフェッチバッファよりも高速なメモリ動作を行うことができ、大きな記憶容量の第2プリフェッチバッファには、低速であっても、纏まった大きなデータを蓄積することができる。したがって、第1プリフェッチバッファは先読み予測が外れても第2プリフェッチバッファから必要なデータを取得できる可能性が高くなり、メインメモリから取得する場合のように大きなフィルペナルティを負う回数が減る。第1プリフェッチバッファは中央処理装置のアクセスパタンに応じてデータの先読み量を設定可能にされるから、中央処理装置のアクセスパタンが変わっても先読み予測が外れる確率を低減することができる。それに応じて第2プリフェッチバッファもデータの先読み量と先読みしたデータの保持量を可変に設定可能にされるから、第1プリフェッチバッファの先読み予測が外れたときに重ねて第2プリフェッチバッファの先読み予測が外れる確率も低減することができる。
【発明の効果】
【0014】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【0015】
すなわち、中央処理装置がアクセスするデータの単位が小さい場合にも、中央処理装置によるデータアクセスの高速化若しくは先読み予測が外れることによるペナルティーの削減を容易に実現することが可能である。
【図面の簡単な説明】
【0016】
【図1】図1は第1の実施の形態に係るデータ処理装置の機能部ロック構成を例示するブロック図である。
【図2】図2は図1のデータ処理装置におけるCPUからメインメモリに至る主な構成の接続形態を例示するブロック図である。
【図3】図3はCPUのアドレス空間を例示するアドレスマップである。
【図4】図4はL1PB5の具体例を示すブロック図である。
【図5】図5はL2PB6の具体例を示すブロック図である。
【図6A】図6AはL2PB6の動作例を説明するための第1の動作説明図である。
【図6B】図6BはL2PB6の動作例を説明するための第2の動作説明図である。
【図6C】図6CはL2PB6の動作例を説明するための第3の動作説明図である。
【図6D】図6DはL2PB6の動作例を説明するための第4の動作説明図である。
【図6E】図6EはL2PB6の動作例を説明するための第5の動作説明図である。
【図7】図7はICB10の一例を示すブロック図である。
【図8】図8はリードバッファモードによる動作を例示する説明図である。
【図9】図9はライトバッファモードによる動作を例示する説明図である。
【図10】図10は第2の実施の形態に係るデータ処理装置の機能部ロック構成を例示するブロック図である。
【図11】図11はプリフェッチバッファ10Aの一例を示すブロック図である。
【図12】図12はプリフェッチバッファ10Aを採用した場合に可能になる特有の動作を例示する説明図である。
【図13】図13はL1PBを16チャネルに分割し、各チャネルに16MBの領域を割り当てた場合のアドレスマップである。
【図14】図14はチャネル番号(ch#)を付加したL1PB5Aを例示するブロック図である。
【図15】図15はasidを付加したL1PB5Bを例示するブロック図である。
【図16】図16はL1CMに直列にL2CNを配置した例を示すブロック図である。
【発明を実施するための形態】
【0017】
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【0018】
〔1〕<L1PB及びL2PBの直列的配置>
代表的な実施の形態に係るデータ処理装置(1)は、命令を実行する中央処理装置(2)と、前記中央処理装置に接続され前記中央処理によるアクセス要求に応答して連想記憶によるメモリ動作を行う第1プリフェッチバッファ(5)と、前記第1プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第1プリフェッチバッファからの要求にしたがってメモリ動作を行い、前記第1プリフェッチバッファからの要求に応答するデータを保有していないとき外部にデータ取得を要求する第2プリフェッチバッファ(6)と、を有する。前記第1プリフェッチバッファは中央処理装置による連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を可変可能に制御する第1プリフェッチ制御部(34)を有する。前記第2プリフェッチバッファは、前記外部へのデータ取得を要求して読込むデータ量(D_PF)及び参照された後も保持するデータ量(D_HLD)を可変可能に制御する第2プリフェッチ制御部(41)を有し、前記第1プリフェッチバッファよりも大きな記憶容量を備える。
【0019】
これにより、小記憶容量の第1プリフェッチバッファは第2プリフェッチバッファよりも高速なメモリ動作を行うことができ、大きな記憶容量の第2プリフェッチバッファには、低速であっても、纏まった大きなデータを蓄積することができる。したがって、第1プリフェッチバッファは先読み予測が外れても第2プリフェッチバッファから必要なデータを取得できる可能性が高くなり、メインメモリから取得する場合のように大きなフィルペナルティを負う回数が減る。第1プリフェッチバッファは中央処理装置のアクセスパタンに応じてデータの先読み量を設定可能にされるから、中央処理装置のアクセスパタンが変わっても先読み予測が外れる確率を低減することができる。それに応じて第2プリフェッチバッファも先読みデータのデータ量と参照済みの先読みデータの保持量を可変に設定可能にされるから、第1プリフェッチバッファの先読み予測が外れたときに重ねて第2プリフェッチバッファの先読み予測が外れる確率も低減することができる。
【0020】
中央処理装置が行うデータアクセスのパタンが一方向に進む場合には、先読み量を大きくすることで必要な時期までにデータの先読みを完了している確率を上げ、逆にアクセスパタンが行きつ戻りつするような場合には、保持量を大きくし先読み量を絞ることで予測ミスが起こる確率を下げることが出来る。
【0021】
これにより、中央処理装置が行うデータアクセスのパタンに柔軟に対応可能となり、中央処理装置によるデータアクセスの高速化若しくは先読み予測の外れによるペナルティーの削減を容易に実現することができる。
【0022】
〔2〕項1のデータ処理装置において、前記第2プリフェッチバッファが前記第1プリフェッチバッファからの要求に応答するデータを保有していないとき前記第2プリフェッチバッファによる外部へのデータ取得の要求にしたがってメインメモリの制御を行うメモリコントローラ(14)を更に有する。メモリコントローラとは例えば半導体集積回路の外部インタフェースコントローラとしてのメモリコントローラ、又はメモリが接続するバスの仕様に適合させるためのバスステートコントローラなどであってよい。
【0023】
〔3〕項1及び2を統合した形態に係るデータ処理装置(1)は、命令を実行する中央処理装置(2)と、前記中央処理装置に接続され前記中央処理によるアクセス要求に応答して連想記憶によるメモリ動作を行う第1プリフェッチバッファ(5)と、前記第1プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第1プリフェッチバッファからの要求にしたがってメモリ動作を行う第2プリフェッチバッファ(6)と、前記第2プリフェッチバッファが前記第1プリフェッチバッファからの要求に応答するデータを保有していないとき前記第2プリフェッチバッファからの要求にしたがってメインメモリの制御を行うメモリコントローラ(14)と、を有する。前記第1プリフェッチバッファは中央処理装置による連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を可変可能に制御する第1プリフェッチ制御部(34)を有する。前記第2プリフェッチバッファは、前記メモリコントローラへの要求に従って前記メインメモリから読込むデータ量(D_PF)及び参照された後も保持するデータ量(D_HLD)を可変可能に制御する第2プリフェッチ制御部(41)を有し、前記第1プリフェッチバッファよりも大きな記憶容量を備える。
【0024】
〔4〕項1乃至3の何れかのデータ処理装置において、前記中央処理装置に接続されたキャッシュメモリ(4)をさらに有する。前記第1プリフェッチバッファは前記キャッシュメモリによるキャッシュ対象アドレス範囲外のアドレスに対するアクセス要求に応答してメモリ動作を行う。キャッシュ対象アドレス範囲のアクセスに対してはキャッシュメモリを用いて中央処理装置によるアクセスのレイテンシ縮小を達成する。
【0025】
〔5〕項1乃至4の何れかのデータ処理装置において、前記第1プリフェッチバッファは、エントリデータの有効性を示すバリッドビット(V)、エントリデータが既に参照されたことを示すユーズドビット(U)、アドレスタグ(TAG)及びデータ(DAT)から成るエントリデータ(ETRY)を複数個格納するメモリ部(30)を有し、前記バリッドビット及びユーズドビットを参照して入れ替え対象とするエントリデータを判別する。
【0026】
〔6〕項5のデータ処理装置において、前記アドレスタグの上位複数ビットを、中央処理装置が命令を実行して実現するプロセス毎に相違なものとすることで、前記上位複数ビットをチャネル番号(ch#)を特定する情報として使用可能であり、前記第1プリフェッチ制御部は、アドレスタグにこのチャネル番号を含めて、中央処理装置が出力するアドレス信号と比較して、エントリデータの連想検索を行う複数プロセスに対して第1プリフェッチバッファを共用することができる。
【0027】
〔7〕項5のデータ処理装置において、前記アドレスタグには、中央処理装置が命令を実行して実現するプロセスを区別するために用いられるアドレス空間識別子(asid)が付加され、前記第1プリフェッチ制御部は、アドレスタグ及びアドレス空間識別子を、中央処理装置が出力するアドレス信号及びアドレス空間識別子と比較して、エントリデータの連想検索を行う。
【0028】
アドレス空間識別子によって区別される複数プロセスに対して第1プリフェッチバッファを共用することができる。
【0029】
〔8〕項1乃至項7の何れかのデータ処理装置において、前記第1プリフェッチ制御部は、連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を制御レジスタ(34a)の設定値に基づいて決定し、前記制御レジスタは前記中央処理装置によって可変可能に値が設定される。
【0030】
中央処理装置が実行するプログラムに従って連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を容易に変更することができる。
【0031】
〔9〕項1乃至項7の何れかのデータ処理装置において、前記第1プリフェッチ制御部は、連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を前記中央処理装置によるアクセス履歴に基づいて決定する。
【0032】
連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を実際のアクセス状況に則して自律的に変更することができる。
【0033】
〔10〕項1乃至9の何れかのデータ処理装置において、前記第2プリフェッチ制御部は、メインメモリの制御に際して前記メインメモリから読込むデータ量及び参照された後も保持するデータ量を制御レジスタ(41a)の設定値に基づいて決定し、前記制御レジスタは前記中央処理装置によって可変可能に値が設定される。
【0034】
第2プリフェッチバッファがメインメモリから読込むデータ量及び参照された後も保持するデータ量を中央処理装置が実行するプログラムに従って容易に変更することができる。
【0035】
〔11〕項1乃至9の何れかのデータ処理装置において、前記第2プリフェッチ制御部は、メインメモリの制御に際して前記メインメモリから読込むデータ量を読込みデータ量の履歴に基づいて決定し、メインメモリの制御に際して前記メインメモリから読込んだデータのうち参照された後も保持するデータ量を制御レジスタ(41a)の設定値に基づいて決定し、前記制御レジスタは前記中央処理装置によって可変可能に値が設定される。
【0036】
連想アクセスに際してメインメモリから読込むデータ量を実際のアクセス状況に則して自律的に変更することができ、メインメモリから読込んで参照された後も保持するデータの保持量を中央処理装置が実行するプログラムに従って容易に変更することができる。
【0037】
〔12〕項1乃至11の何れかのデータ処理装置において、前記中央処理装置の制御に基づいて動作すると共にバスアクセス機能を有する複数個のアクセラレータ(7,8,9)と、前記アクセラレータからの要求に従ってメモリ動作を行うアクセラレータ用バッファ(10)と、を更に有する。前記アクセラレータ用バッファは、前記アクセラレータからの要求に応答するデータを保有していないときメモリコントローラにアクセラレータからの要求にしたがってメインメモリを制御させるリードバッファモードと、アクセラレータからのデータを順次蓄積するライトバッファモードと、一つのアクセラレータからの蓄積データを他のアクセラレータに転送するインターコネクトバッファモードとを有する。
【0038】
アクセラレータ用バッファはアクセラレータが要求するデータの取得を効率化する。
【0039】
〔13〕<L1PBとL2PB兼ICBとの直列的配置>
別の実施の形態に係るデータ処理装置(1A)は、命令を実行する中央処理装置(2)と、前記中央処理装置の制御に基づいて動作すると共にバスアクセス機能を有する複数個のアクセラレータと、前記中央処理装置に接続され前記中央処理装置によるアクセス要求に応答して連想記憶によるメモリ動作を行う第1プリフェッチバッファ(5)と、前記第1プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第1プリフェッチバッファからの要求にしたがってメモリ動作を行うプリフェッチモード及び前記アクセラレータからの要求に従ってメモリ動作を行うアクセラレータモードを有し、前記第1プリフェッチバッファ又はアクセラレータからのからの要求に応答するデータを保有していないとき外部にデータ取得を要求する第2プリフェッチバッファ(10A)と、を有する。前記第1プリフェッチバッファは中央処理装置による連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を可変可能に制御する第1プリフェッチ制御部を有する。前記第2プリフェッチバッファは、前記外部へのデータ取得を要求して読込むデータ量及び参照された後も保持するデータ量を前記第1プリフェッチバッファ及び前記アクセラレータのそれぞれに対応して可変可能に制御する第2プリフェッチ制御部を有し、前記第1プリフェッチバッファよりも大きな記憶容量を備える。
【0040】
第2のプリフェッチバッファをアクセラレータ用のバッファと兼用させても、項1と同様に、中央処理装置のデータアクセスパタンに適応して先読みを行うことが可能であり、中央処理装置によるデータアクセスの高速化若しくは先読み予測の外れによるペナルティーの削減を容易に実現することができる。項1に対して、第2プリフェッチバッファは、第1プリフェッチバッファからのからの要求に応答する動作がアクセラレータからの要求に応答する動作によって待たされる場合があるが、回路規模の縮小に寄与する。
【0041】
第2のプリフェッチバッファをアクセラレータ用のバッファと兼用させると、中央処理装置とアクセラレータが連携して行うような処理の場合に、アクセラレータが生成したデータを中央処理装置が読み出す際に、メインメモリを経由することがなくなり、データ処理性能が向上する。逆に中央処理装置が生成したデータをアクセラレータが読み出す場合にも同様の効果が得られる。
【0042】
〔14〕項13のデータ処理装置において、前記第2プリフェッチバッファが前記第1プリフェッチバッファ又はアクセラレータからの要求に応答するデータを保有していないとき前記第2プリフェッチバッファからの要求にしたがってメインメモリの制御を行うメモリコントローラを更に有する。
【0043】
〔15〕項13及び14を統合した形態に係るデータ処理装置は、命令を実行する中央処理装置と、前記中央処理装置の制御に基づいて動作すると共にバスアクセス機能を有する複数個のアクセラレータと、前記中央処理装置に接続され前記中央処理によるアクセス要求に応答して連想記憶によるメモリ動作を行う第1プリフェッチバッファと、前記第1プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第1プリフェッチバッファからの要求にしたがってメモリ動作を行うプリフェッチモード及び前記アクセラレータからの要求に従ってメモリ動作を行うアクセラレータモードを有する第2プリフェッチバッファと、前記第2プリフェッチバッファが前記第1プリフェッチバッファ又は前記アクセラレータからの要求に応答するデータを保有していないとき前記第2プリフェッチバッファからの要求にしたがってメインメモリの制御を行うメモリコントローラと、を有する。前記第1プリフェッチバッファは中央処理装置による連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を可変可能に制御する第1プリフェッチ制御部を有する。前記第2プリフェッチバッファは、前記メモリコントローラへの要求に従って前記メインメモリから読込むデータ量及び参照された後も保持するデータ量を前記第1プリフェッチバッファ及び前記アクセラレータのそれぞれに対応して可変可能に制御する第2プリフェッチ制御部を有し、前記第1プリフェッチバッファよりも大きな記憶容量を備える。
【0044】
〔16〕項13乃至15の何れかのデータ処理装置において、前記アクセラレータモードとして、前記アクセラレータからの要求に応答するデータを保有していないときメモリコントローラにアクセラレータからの要求にしたがってメインメモリを制御させるリードバッファモードと、アクセラレータからのデータを順次蓄積するライトバッファモードと、一つのアクセラレータからの蓄積データを他のアクセラレータに転送するインターコネクトバッファモードとを有する。
【0045】
〔17〕項13乃至16の何れかのデータ処理装置は、前記中央処理装置に接続されたキャッシュメモリをさらに有する。前記第1プリフェッチバッファは前記キャッシュメモリによるキャッシュ対象アドレス範囲外のアドレスに対するアクセス要求に応答してメモリ動作を行う。
【0046】
〔18〕項13乃至17の何れかのデータ処理装置において、前記第1プリフェッチバッファは、エントリデータの有効性を示すバリッドビット、エントリデータが既に参照されたことを示すユーズドビット、アドレスタグ及びデータから成るエントリデータを複数個格納するメモリ部を有し、前記バリッドビット及びユーズドビットを参照して入れ替え対象とするエントリデータを判別する。
【0047】
〔19〕項18のデータ処理装置において、前記アドレスタグの上位複数ビットは中央処理装置が命令を実行して実現するプロセス毎に相違されるアドレス空間のチャネル番号を特定する上位アドレスビットであり、前記第1プリフェッチ制御部は、アドレスタグを、中央処理装置が出力するアドレス信号と比較して、エントリデータの連想検索を行う。
【0048】
〔20〕項18のデータ処理装置において、前記アドレスタグには、中央処理装置が命令を実行して実現するプロセスを区別するために用いられるアドレス空間識別子が付加され、前記第1プリフェッチ制御部は、アドレスタグ及びアドレス空間識別子を、中央処理装置が出力するアドレス信号及びアドレス空間識別子と比較して、エントリデータの連想検索を行う。
【0049】
〔21〕項13乃至20の何れかのデータ処理装置において、前記第1プリフェッチ制御部は、連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を制御レジスタの設定値に基づいて決定し、前記制御レジスタは前記中央処理装置によって可変可能に値が設定される。
【0050】
〔22〕項13乃至20の何れかのデータ処理装置において、前記第1プリフェッチ制御部は、連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を前記中央処理装置によるアクセス履歴に基づいて決定する。
【0051】
〔23〕項13乃至22の何れかのデータ処理装置において、前記第2プリフェッチ制御部は、メインメモリの制御に際して前記メインメモリから読込むデータ量及び参照された後も保持するデータ量を制御レジスタ(61a〜61d)の設定値に基づいて決定し、前記制御レジスタは複数組設けられ、前記第1プリフェッチバッファ及びアクセラレータからのチャネルを識別するためのアドレス信号に対応してどの制御レジスタの組が使用されるかが決定される。制御レジスタはそれぞれ前記中央処理装置によって可変可能に値が設定される。
【0052】
〔24〕項13乃至22の何れかのデータ処理装置において、前記第2プリフェッチ制御部は、メインメモリの制御に際して前記メインメモリから読込むデータ量を読込みデータ量の履歴に基づいて決定し、メインメモリの制御に際して前記メインメモリから読込んだデータのうち参照された後も保持するデータ量を制御レジスタ(61a〜61d)の設定値に基づいて決定し、前記制御レジスタは複数組設けられ、前記第1プリフェッチバッファ及びアクセラレータからのチャネルを識別するためのアドレス信号に対応してどの制御レジスタの組が使用されるかが決定される。制御レジスタはそれぞれ前記中央処理装置によって可変可能に値が設定される。
【0053】
2.実施の形態の詳細
《第1の実施の形態》
第1の実施の形態について詳述する。図1には第1の実施の形態に係るデータ処理装置の機能ブロック構成が例示される。データ処理装置は、特に制限されないが、単一チップに形成されたシステムオンチップの半導体集積回路、複数個のデータ処理デバイスなどが搭載されて単一ケーシングに封止された半導体集積回路モジュール、又は配線基板に複数個のデータ処理デバイス及びメモリデバイス等が実装されて構成されるデータ処理カードによって構成される。ここでは、システムオンチップの半導体集積回路(SOC)を一例として説明する。
【0054】
データ処理装置(SOC)1は、特に制限されないが、単結晶シリコン等の1個の半導体基板に相補型MOS集積回路製造技術などによって構成される。
【0055】
2は中央処理装置(CPU)であり、例えば1個設けられている。CPU2は命令を実行し、データを取得するときはアドレスを演算し、演算したアドレス及び制御信号を出力して外部にアクセスを要求する。本明細書において単にデータと称するときは命令及びオペランドを総称するものとする。
【0056】
4はメインメモリ(MMRY)20が保有するデータの一部をサブセットとして保有するセット・アソシアティブ・メモリのような連想メモリであり、CPU2が最近利用したデータをリプレース可能に保持するキャッシュメモリ(L1CM)である。
【0057】
5は第1プリフェッチバッファ(L1PB)、6は第2プリフェッチバッファ(L2PB)であり、キャッシュ非対象アドレス領域のデータを一時的に蓄積し、第1プリフェッチバッファ5は第2プリフェッチバッファ6が保持するデータの一部をサブセットとして一時的に保持するために利用され、第2プリフェッチバッファ6はメインメモリ20が保持するデータの一部をサブセットとして一次的に保持するために利用される。第2プリフェッチバッファ6の記憶容量は第1プリフェッチバッファ5の記憶容量よりも大きい。
【0058】
CPU2の一部の処理を負担するアクセラレータとして、ハードウェアアクセラレータ(HWAa)7、ハードウェアアクセラレータ(HWAb)8、及び液晶表示コントローラ(LCDC)9を有する。10はHWAa7、HWAb8及びLCDC9が処理するデータをプリフェッチしたり、それらが処理したデータを一時的に蓄積するインターコネクトバッファ(ICB)10である。
【0059】
データ処理装置1には、周辺回路として、例えばグラフィックプロセッシングユニット(GPU)12、サウンドプロセッシングユニット(SPU)13、タイマ(TMR)15、シリアルインタフェース(SIF)16などが搭載されている。
【0060】
外部メモリとして図示されたメインメモリ20はメモリコントローラ(MCNT)14に接続されて制御される。
【0061】
オンチップバス(BUS_OC)11はデータ処理装置1に搭載された各種回路モジュールを接続するためのバスを総称する。
【0062】
図2にはCPU2からメインメモリ20に至る主な構成の接続形態が例示される。オンチップバス11はCPUバス(BUS_CPU)11aとシステムバス(BUS_SYS)11bに分けて図示されている。CPUバス11aにはCPU2を代表として、前記HWAa7、HWAb8、LCDC9が接続される。CPUバス11aはL1CM4、L1PB5及びシステムバス11bに接続され、L1PB5にはL2PB6が直列接続され、L2PB6はシステムバス11bに接続される。システムバス11bにはメモリコントローラ14を代表として、前記GPU,SPU,TMR,SIFが接続される。
【0063】
メモリコントローラ14は例えばデータ処理装置1の外に配置されたシンクロナスDRAM等によって構成あれた大容量のメインメモリ20に接続される。メモリコントローラ14は、キャッシュミスを生じたL1CM4からのキャッシュリプレースやキャッシュフィルのためのデータアクセス、L2PB6によるデータプリフェッチのためのデータアクセス、及びICB10によるデータプリフェッチのためのデータアクセスなどに応答してメインメモリ20の制御を行う。
【0064】
図3にはCPU2のアドレス空間が例示される。CPU2のアドレス空間は、L1CMによるキャッシュの対象にされる領域(キャッシャブル領域)SP1、L1CMによるキャッシュの対象とはされない領域(非キャッシャブル領域)SP2、L1CMによるキャッシュの対象とはされず且つL1PB5及びL2PB6によるプリフェッチ対象にされる領域(プリフェッチ領域)SP3、及び各種制御レジスタが配置される領域(制御レジスタ領域)SP4に大別される。特に制限されないが、ここではCPUバス11a及びシステムバス11bとしてスプリットトランザクションバスを想定し、各バスにはアクセスを要求するイニシエータからのリクエストとそれに応答するターゲットからのレスポンスのルーティングを制御するルータが含まれ、ルーティングの制御はアドレス及びイニシエータ並びにターゲットの識別子などに基づいて行われる。したがって、CPU2のアクセス要求はそのアクセス対象アドレスに従ってアクセス対象回路に供給される。
【0065】
図4にはL1PB5の具体例が示される。L1PB5は連想記憶を行う連想メモリ、例えばダイレクトマップ形式の連想メモリとして構成され、特に制限されないが、8個のエントリデータETRYを格納可能なメモリ部30を備える。エントリデータETRYは、当該エントリデータの有効性を示すバリッドビットV、当該エントリデータが既に参照されたことを示すユーズドビットU、アドレスタグTAG及びデータDATから成る。データDATは例えば32バイトのデータ(byte)とされる。例えばバイトアドレスを想定するとアドレスタグTAGはデータDATのアドレス信号の最下位より5ビットを省略した残りの全アドレスビットに対応される値を有する。
【0066】
アドレスタグTAGはCPUバス11aから供給されるアドレス信号の対応ビットと比較器(COMP)31により比較され、一致したときは当該アドレス信号の下位3ビットを用いて一致に係るエントリデータの32バイトのデータDATをセレクタ(SLCT)32で選択し、選択したデータDATの中から当該アドレス信号の下位3ビットを用いてセレクタ(SLCT)33で4バイトのデータを選択し、これをCPUバス11aに返す。
【0067】
比較器31による比較結果はプリフェッチ制御部(PRD_PETC)34に供給される。
【0068】
プリフェッチ制御部34は、不一致の比較結果を受けると、そのときCPU11aから供給された不一致に係るアドレス信号に基づいて不一致に係るデータをL2PB6から32バイト単位でリードしてメモリ部30に格納し、格納したデータの中から不一致に係る4バイトのデータをセレクタ32,33で選択してCPUバス11aに供給する。プリフェッチ制御部34は制御レジスタ(REG_CNT)34aを有し、制御レジスタ34aには、プリフェッチ制御部34がL2PB6からメモリ部30に読込むデータのサイズが設定され、特に制限されないが、設定値が“1”のときは32バイト、“2”のときは64バイトというように、32バイトを基準単位としたときの倍数値が設定される。制御レジスタ(REG_CNT)34aに対する設定はCPU2がその動作プログラムに従ってプログラマブルに行うことができる。具体的には、不一致に係るアドレスのアドレスタグが例えばAtag1で、制御レジスタ(REG_CNT)34aの設定値が1の場合には、アドレスタグAtag1に対応される32バイトのデータと当該アドレスタグAtag1の値をタグTAGとするエントリデータがメモリ部30への格納対象とされる。また、不一致に係るアドレスのタグがAtag1で、制御レジスタ(REG_CNT)34aの設定値が2の場合には、アドレスタグAtag1に対応される32バイトのデータと当該アドレスタグAtag1の値をタグTAGとするエントリデータと、アドレスタグAtag1の次のアドレスタグAtag2に対応される32バイトのデータと当該アドレスタグAtag2の値をタグTAGとするエントリデータとがメモリ部30への格納対象とされる。
【0069】
プリフェッチ制御部34は、一致の比較結果を受けると、制御レジスタ(REG_CNT)34aの設定値と、各エントリのバリッドビットVとユーズドビットUを参照し、バリッドビットVが有効を意味し、かつユーズドビットUが未参照を意味しているエントリの数が、制御レジスタ(REG_CNT)34aの設定値以下の場合には、L2PB6から最後に読み出したアドレスの次のアドレスを読み出し、メモリ部30へ格納する。
【0070】
比較器31によるアドレス比較による比較結果が不一致になったときL2PB6から読込んだデータによって置き換えるエントリは、プリフェッチ制御部34が各エントリのバリッドビットVとユーズドビットUとを参照して決定する。例えば、バリッドビットVが無効を意味しているエントリ、バリッドビットが有効であってもユーズドビットUが参照済みを意味しているエントリ、そして有効及び未参照のエントリの順に、制御レジスタ34Aで指定された数のエントリがリプレースの対象にされる。特に制限されないが、バリッドビットVが無効というような同じ状態のエントリが複数個ある場合にその一部をリプレースの対象にしなければならない場合には、最後にリードまたは有効にされたのが最も古い(Least Recently Used:LRU)エントリから廃棄するというアルゴリズム、あるいはランダム論理のようなアルゴリズムを採用すればよい。
【0071】
上記説明ではCPU2からのアクセス要求に応答するデータがメモリ部30にない場合にL2PB6からメモリ部30に読込むデータ量は制御レジスタ34aの設定値で決まるものとした。この構成を採用すれば、CPU2が実行するプログラムに従って連想アクセスに際してL2PB6から読込むデータ量を容易に変更することができる。
【0072】
読込みデータ量の制御はこれに限定されず、CPU2によるアクセス履歴に基づいて読込みデータ量を決定してもよい。例えば、CPU2からのアクセス要求が連続するアドレスタグに対するアクセスであるときその連続するアドレスタグ数を計数するカウンタをプリフェッチ制御部34に設け、比較器31による比較結果が不一致になったときのカウンタの計数値を前記レジスタ34aの設定値に代えて用いるようにする。或いはCPU2からの連続アドレスに対する順次4バイト単位のアクセス回数を計数するカウンタをプリフェッチ制御部34に設け、比較器31による比較結果が不一致になったとき、カウンタの計数値を1/8 (3ビットの右シフト)して得られる商に1を加算した値を前記レジスタ34aの設定値に代えて用いるようにする。これによれば、連想アクセスに際して前記L2PBから読込むデータ量を実際のアクセス状況に則して自律的に変更することができる。
【0073】
図5にはL2PB6の具体例が示される。L2PB6はメモリ部(MRY_L2PB)40及びプリフェッチ制御部(CNT_L2PB)41を有する。メモリ部40はL1PB5のメモリ部30よりも大きな記憶容量を有し、例えばSRAMによって構成される。
【0074】
プリフェッチ制御部41は、メモリコントローラ14へリード要求を行ってメインメモリ20が保持するデータの一部をサブセットとして所定のデータブロック(DBLK)単位でメモリ部40に保持させる制御を行うと共に、L1PB5からのプリフェッチ要求に応答するデータをメモリ部40からL1PB5に出力する制御を行う。プリフェッチ制御部41は、その制御を行うために利用する制御レジスタ(REG_CNT)41aを有する。
【0075】
制御レジスタ41aはアドレス変換データ(EXD_ADR)、先読みデータ量(D_PF)、及び保持データ量(D_HLD)がプログラマブルに設定される。先読みデータ量(D_PF)、及び保持データ量(D_HLD)は、特に制限されないがCPU2によってプログラマブルに設定される。アドレス変換データ(EXD_ADR)はL2PB6の動作状況に応じてプリフェッチ制御部41が操作する。
【0076】
先読みデータ量(D_PF)は、前記メモリコントローラ14への要求に従って前記メインメモリ20から読込むデータ量を意味し、例えば32バイトを単位データ(UDAT)とするときデータブロック(BDAT)のサイズを単位データ数によって示す。
【0077】
保持データ量(D_HLD)はL1PB5によって参照された後もデータブロックとして保持するデータ量(D_HLD)を意味し、例えば単位データ数によって示す。即ち、保持データ量(D_HLD)はL1PB5からのアクセスがどこまで進んだら古いデータを破棄してよいかを示すことになる。
【0078】
アドレス変換データ(EXD_ADR)は、データブロックのスタートアドレスを規定するためにデータブロックが保持する先頭単位データのCPUアドレス(メインメモリ20の物理アドレス)とメモリ部40のローカルアドレスとの関係を規定するアドレス変換対、及びデータブロック内において直前にL1PB5によって参照された単位データの次の単位データのローカルアドレスを指す参照ポインタとを有する。STRAは次にデータを格納すべきデータブロックの先頭アドレス、LPNTAは参照ポインタの値を意味する。
【0079】
プリフェッチ制御部41は、L1PB5からのプリフェッチ要求REQ_PFCを受けると、この要求に応ずるデータをメモリ部40が保持しているか否かを判別し、保持しているときはメモリ部40の読み出し制御を行って、そのプリフェッチ要求に応ずるデータをL1PB5に供給する制御を行う。
【0080】
前記判別結果よりメモリ部40が所要のデータを保持していない場合にはプリフェッチ制御部41は、レスポンスRSPによってL1PB5にエラーレスポンスを返すと共に、そのプリフェッチ要求REQ_PFCに応答するためのデータをメインメモリ20からリードするために必要なリード要求REQ_RDをシステムバス11bに出力し、これに応答してメインメモリ20から出力されるデータブロックをメモリ部40に格納し、格納されたデータブロックのうち前記プリフェッチ要求REQ_PFCに応ずるデータをメモリ部40から読み出して、そのプリフェッチ要求に応ずるデータをL1PB5に供給する制御を行う。
【0081】
図6A乃至図6Eに基づいてL2PB6の動作例を説明する。例えば、先読みデータ量(D_PF)=4、保持データ量(D_HLD)=1が初期設定されているものとする。
【0082】
図6AはL2PB6がまだデータを保持していない初期状態を示している。L1PB5からのプリフェッチ要求REQ_PFCに対してメモリ部40が所要のデータを保持していない場合に、プリフェッチ制御部41はそのプリフェッチ要求REQ_PFCによって与えられるメモリアドレスを基点に32バイト単位の単位データを4単位分だけメインメモリ20からメモリ部40に取り込み、取り込まれたデータブロックのうち前記プリフェッチ要求REQ_PFCに応ずる例えば32バイトの1単位のデータをメモリ部40から読み出してL1PB5に供給する。
【0083】
図6Bに例示されるように、この動作により、メモリ部40では先頭アドレス図6AでのSTRAから単位データが領域n+0、n+1、n+1、n+3に4単位格納され、先頭データの領域n+0はL1PB5に参照済みとされたので、参照ポインタLPNTAは次の単位データの領域n+1のローカルアドレスを指している。“hold”は参照後にもその単位データが保持されるべきデータであることを示し、“valid”はその単位データが有効であることを意味する。この動作においてアドレス変換データ(EXD_ADR)にあるSTRAとLPNTAが更新される。
【0084】
図6CにはL1PB5からの新たなプリフェッチ要求REQ_PFCに対してメモリ部40が所要のデータを保持している場合の動作状態が例示される。例えば新たなプリフェッチ要求REQ_PFCが領域n+1の単位データに対するプリフェッチを要求するものである場合、プリフェッチ制御部41はその領域n+1の単位データをメモリ部40から読み出してL1PB5に供給する。これによって参照ポインタLPNTA1は領域n+2を指し、領域n+0の単位データは無効となる。“invalid”はその単位データが無効であることを意味する。即ち、ここでは保持データ量(D_HLD)=1であるから、直前に参照された単位領域n+1よりも前に参照された領域nの単位データは無効にされる。加えて“valid”及び“hold”のブロック数がD_PFで設定された値よりも小さくなるため、単位データを1単位分だけメインメモリ20から読み出し、領域n+4に格納する。この動作において、STRAが領域n+5を指すように更新される。
【0085】
図6CにはL1PB5からの更に新たなプリフェッチ要求REQ_PFCに対してメモリ部40が所要のデータを保持している場合の動作状態が例示される。例えば新たなプリフェッチ要求REQ_PFCが領域n+1の単位データに対するプリフェッチを要求するものである場合、プリフェッチ制御部41はその領域n+1の単位データをメモリ部40から読み出してL1PB5に供給する。この場合、領域n+1は“hold”領域であるため、これによって参照ポインタLPNTAは更新されない。また“valid”及び“hold”のブロック数とD_PFの設定値の関係も変わらないため、メインメモリ20から新たにデータを読み出すこともなく、STRAの値も更新されない。
【0086】
図6DはL1PB5からのプリフェッチ要求が領域n+4まで進み、D_PFの設定にしたがって領域n+7まで先読みデータが格納された場外を例示している。
【0087】
図6Eはこの後更に、L1PB5から領域n+5に対するプリフェッチ要求があり、プリフェッチ制御部41は1単位データを新たにメインメモリ20からメモリ部40に取り込み、領域n+5に応ずる例えば32バイトの1単位のデータをメモリ部40から読み出してL1PB5に供給した状態が示される。この動作において、メモリ部40では、領域n+0のデータは無効(“invalid”)とされているので、その領域n+0を新たなブロックデータの格納に割当てた。
【0088】
図7にはICB10の具体例が示される。アクセラレータ用バッファとしてのICB10はメモリ部(MRY_ICB)50、バッファ制御部(CNT_ICB)51及び調停回路(ARBT)52を有する。メモリ部50は例えばSRAMによって構成される。
【0089】
調停回路(ARBT)52はHWAa7、HWAb8、又はLCDC9からのアクセス要求をその優先度に従って調停し、アクセス要求の競合を回避する。優先度は、特に制限されないが、アクセス要求の最も早いものに高い優先度を与える方式、或いはHWAa7、HWAb8、又はLCDC9に予め優先度を設定する方式等がある。
【0090】
ICB10は、HWAa7、HWAb8、又はLCDC9からのアクセス要求に応答するデータを保有していないときメモリコントローラ14にHWAa7、HWAb8、又はLCDC9からの要求にしたがってメインメモリ20をアクセス制御させるリードバッファモードと、HWAa7、HWAb8、又はLCDC9からのデータを順次蓄積するライトバッファモードと、HWAa7、HWAb8、及びLCDC9の内の一つのアクセラレータからの蓄積データを他のアクセラレータに転送するインターコネクトバッファモードとを有する。それらの動作モードの設定は、特に制限されないが、CPU2又はCPU2の指示に従ってHWAa7、HWAb8、又はLCDC9が行えばよい。バッファ制御部51はHWAa7、HWAb8、及びLCDC9のそれぞれに対応して前記制御レジスタ41aと同様の制御レジスタ(REG_CNT)51a、51b、51cを有し、メモリ部50のローカルアドレスとCPUのアドレス空間上のアドレスとの対応およびデータ読込み量やデータ保持量がプログラマブルに設定可能にされている。
【0091】
図8にはリードバッファモードによる動作例が示される。リードバッファモードには例えば前記L2PBのプリフェッチ制御回路41による制御と同じ制御内容を採用することができる。この場合には、HWAa7、HWAb8、及びLCDC9のそれぞれに対応する前記制御レジスタ41aと同様の制御レジスタ(REG_CNT)51a、51b、51cを用いて、アクセス要求が受け付けられたアクセラレータからの要求に対してデータブロックのプリフェッチやプリフェッチしたデータの出力を行う。
【0092】
ライトバッファモードでは図9に例示されるように、HWAa7、HWAb8、又はLCDC9の一つのアクセラレータがその処理データをメモリ部50に書き込む。書込み量は当該アクセラレータに対応する制御レジスタの設定値(D_PF)に従って決定され、また、データが書込まれるローカルメモリアドレスとその処理データを本来書き込むべきCPUアドレス空間上のメモリアドレスとの関係は、当該アクセラレータに対応する制御レジスタのEXD_ADRに記録される。
【0093】
インターコネクトバッファモードではライトモードで書込まれたデータがHWAa7、HWAb8、又はLCDC9の一つのアクセラレータに転送される。転送するときは当該アクセラレータに対応する制御レジスタの内容を利用してメモリ部50から転送元データを読み出す。
【0094】
上記実施の形態1によれば以下の作用効果を得る。
【0095】
〔1〕小記憶容量のL1PB5はL2PB6よりも高速なメモリ動作を行うことができ、大きな記憶容量のL2PB6には、低速であっても、纏まった大きなデータを蓄積することができる。したがって、L1PB5は先読み予測が外れてもL2PB6から必要なデータを取得できる可能性が高くなり、メインメモリ20から取得する場合のように大きなフィルペナルティを負う回数が減る。L1PB5はCPU2が行うアクセスパタンに応じて先読みデータのデータ量を設定可能にされるから、CPU2のアクセスパタンが変わっても先読み予測が外れる確率を低減することができる。それに応じてL2PB6も制御レジスタ41aの設定に従って先読みデータのデータ量(D_PF)と参照済みの先読みデータの保持量(D_HLD)を可変に設定可能にされるから、L1PB5の先読み予測が外れたときに重ねてL2PB6の先読み予測が外れる確率も低減することができる。
【0096】
〔2〕CPU2が行うデータアクセスのパタンが一方向に進む場合には、先読み量を大きくすることで必要な時期までにデータの先読みを完了している確率を上げ、逆にアクセスパタンが行きつ戻りつするような場合には、保持量を大きくし先読み量を絞ることで予測ミスが起こる確率を下げることが出来る。
【0097】
これにより、CPU2が行うデータアクセスのパタンに柔軟に対応可能となり、CPU2によるデータアクセスの高速化若しくは先読み予測の外れによるペナルティーの削減を容易に実現することができる。
【0098】
〔3〕したがって、CPU2が行うアクセスパタンに適応して、CPU2によるデータアクセスの高速化若しくは先読み予測の外れによるペナルティーの削減を容易に実現することができる。
【0099】
〔4〕CPU2に接続されたL1CM4を採用し、L1PB5はL1CM4によるキャッシュ対象アドレス範囲外のアドレスに対するアクセス要求に応答してメモリ動作を行うから、キャッシュ対象アドレス範囲のアクセスに対してはL1CM4を用いてCPU2によるアクセスのレイテンシ縮小を達成することができる。
【0100】
〔5〕プリフェッチ制御部34は、連想アクセスに際してL2PB6から読込むデータ量を制御レジスタ34aの設定値に基づいて決定し、制御レジスタ34aはCPU2によって可変可能に値が設定されるから、CPU2が実行するプログラムに従って連想アクセスに際してL2PB6から読込むデータ量を容易に変更することができる。
【0101】
〔6〕プリフェッチ制御部34は、連想アクセスに際してL2PB6から読込むデータ量をCPU2によるアクセス履歴に基づいて決定することにより、連想アクセスに際してL2PBから読込むデータ量を実際のアクセス状況に則して自律的に変更することができる。
【0102】
〔7〕プリフェッチ制御部41は、メインメモリ20の制御に際して前記メインメモリ20から読込むデータ量(D_PF)及び参照された後も保持するデータ量(D_HLD)を制御レジスタ41aの設定値に基づいて決定し、制御レジスタ41aはCPU2によって可変可能に値が設定されるから、L2PB6がメインメモリ20から読込むデータ量及び参照された後も保持するデータ量をCPU2が実行するプログラムに従って容易に変更することができる。
【0103】
〔8〕プリフェッチ制御部451は、メインメモリ20の制御に際してメインメモリ20から読込むデータ量を読込みデータ量の履歴に基づいて決定し、メインメモリ20の制御に際して前記メインメモリ20から読込んだデータのうち参照された後も保持するデータ量を制御レジスタ41aの設定値に基づいて決定し、制御レジスタ41aはCPU2によって可変可能に値が設定される構成を採用してもよい。この場合には、連想アクセスに際してメインメモリ20から読込むデータ量を実際のアクセス状況に則して自律的に変更することができ、メインメモリ20から読込んで参照された後も保持するデータの保持量をCPU2が実行するプログラムに従って容易に変更することが可能になる。
【0104】
〔9〕リードバッファモード、ライトバッファモード、及びインターコネクトバッファモードを有するICB10を採用することにより、ICB10はアクセラレータHWAa,HWAb,LCDCが要求するデータの取得を効率化させることができる。
【0105】
〔11〕本実施の形態に係るデータ処理装置1は携帯電話、デジタル家電などのような、画像や音声などのマルチメディア処理を必要とする製品に適用することができる。画像や音声のコーデックのようなマルチメディア処理は、チップ開発時点で規格が固まっているものに関しては、専用のハードウェアアクセラレータとして実装するのが、性能や電力の面から望ましいが、チップ開発後に新たな規格が出現する場合もあり、CPU2上で動作するソフトウェア処理によって対応できるようにする観点に立つことが望ましい。CPU2のソフトウェアで処理する場合、メインメモリ20にある処理対象データを、どのようにCPU20の近傍のメモリに持ってくるかがデータ処理性能を向上させる上で重要になるが、マルチメディア処理では対象データの性質上、キャッシュメモリL1CM4を使うのは効率がよくない場合が多い。それは、画像や音声などのマルチメディアデータはストリーム状になっているストリームデータとして供給されて処理される場合が多く、空間的局所性は高いが、時間的局所性は高くない(一度参照したデータをある程度時間が経ってからまた参照することはあまりない)ためである。このような理由により、マルチメディア処理に関しては、キャッシュメモリL1CM4とは別に、処理の進行に応じてハードウェアでデータを先読みする仕組みを持った、L1PB,L2PBの直列的な構成を採用することが優れている。
【0106】
〔12〕マルチメディア処理で多用される、ストリームデータを処理する際に、アクセス履歴に基づいたプリフェッチを自動実行するようにすれば、実効的なメモリアクセスレイテンシが小さくなり、処理性能が向上する。ストリームデータを保持する場所をL1CM4とは別のL1PB5,L2PB6とすることで、L1CM4のエントリデータの多くがダーティーになってキャッシュヒット率が低下する事態の発生も未然に防止することができる。
【0107】
〔13〕大容量のL2PB6がL1PB5の下位側に配置されているため、L1PB5の容量は小さくてよく、CPU2からのアクセスレイテンシを小さくでき、典型的にはノーウェイトでアクセスすることが可能になる。
【0108】
〔14〕L2PB6の記憶容量を大容量にできるので、かなり先の方まで先行してプリフェッチしておくことが可能である。これは、L2PB6によるプリフェッチ処理が必ずしも高優先度で処理されなくてもよいということであり、システム全体のメモリアクセスの効率化に寄与する。
【0109】
〔15〕CPU2からの細切れのアクセス(例えばワード単位)を、L1PB5のエントリサイズ(例えば32バイト)単位にまとめてL2PB6にアクセスすることで、データ処理装置1のオンチップバスBUS_OCにおける転送効率を向上させることができる。
【0110】
〔16〕L2PB6は大容量故にある程度の幅を持ってデータを保持できるので、例えば単純なストリームアクセスではなく、ある範囲でもってアクセス対象のアドレスが行ったり来たりするようなアクセスパタンでも、メインメモリ20からデータを取り直す必要がなく、アクセスの効率化が可能である。例えばMPEGなどに準拠した画像処理におけるマクロブロック単位の処理のためのデータアクセスに対する効率化を図ることが容易になる。
【0111】
〔17〕上記データ処理装置1は、アクセス対象全体としては特定範囲のデータということが明確化されているが、その中でのアクセス順はランダム性が高いというようなデータアクセス形態を採るデータ処理に有効である。これは、L2PB6は大容量故に対象を丸ごとプリフェッチしておくことができ、かつL1PB5にミスしたケースのレイテンシがメインメモリ20から直接データリードを行う場合に比べて小さいためである。
【0112】
《第2の実施の形態》
第2の実施の形態について詳述する。図10には第2の実施の形態に係るデータ処理装置の機能部ロック構成が例示される。データ処理装置は、特に制限されないが、単一チップに形成されたシステムオンチップの半導体集積回路、複数個のデータ処理デバイスなどが搭載されて単一ケーシングに封止された半導体集積回路モジュール、又は配線基板に複数個のデータ処理デバイス及びメモリデバイス等が実装されて構成されるデータ処理カードによって構成される。ここでは、システムオンチップの半導体集積回路(SOC)を一例として説明する。
【0113】
図1のデータ処理装置1との相違点はL2PB6をICB10と兼用させた点であり、図10ではL1PB5、HWAa、HWAb、LCDCのそれぞれに接続されたプリフェッチバッファ(L2PB&ICB)10Aを採用した。
【0114】
図11にはプリフェッチバッファ10Aの一例が示される。プリフェッチバッファ10Aはメモリ部(MRY_L2PB&ICB)60、バッファ制御部(CNT_L2PB&ICB)61及び調停回路(ARBT)62を有する。メモリ部60は例えばSRAMによって構成される。
【0115】
調停回路(ARBT)62はL1PB5、HWAa7、HWAb8、又はLCDC9からのアクセス要求をその優先度に従って調停し、アクセス要求の競合を回避する。優先度は、特に制限されないが、アクセス要求の最も早いものに高い優先度を与える方式、或いはL2PB5、HWAa7、HWAb8、又はLCDC9に予め優先度を設定する方式等がある。
【0116】
プリフェッチバッファ10Aは、L1PB5がCPU2からのアクセス要求に応答するデータを保有していないときL1PB5からの要求にしたがってメモリ動作を行うプリフェッチモード及び前記アクセラレータHWAa、HWAb、又はLCDCからの要求に従ってメモリ動作を行うアクセラレータモードを有する。
【0117】
バッファ制御部61は、プリフェッチモード及びアクセラレータモードによる動作を制御する。
【0118】
バッファ制御部61は、L1PB5からのアクセス要求がARBT62で受け付けられたときプリフェッチモードで動作し、プリフェッチモードによる動作制御のためにバッファ制御部61は制御レジスタ(REG_CNT)61aを有する。プリフェッチモードによる動作制御の内容は図5及び図6で説明したのと同様にレジスタ設定値やCPU2によるアクセス履歴に基づいて行えばよく、その詳細な説明は省略する。
【0119】
アクセラレータモードとして、HWAa7、HWAb8、又はLCDC9からのアクセス要求に応答するデータを保有していないときメモリコントローラ14にHWAa7、HWAb8、又はLCDC9からの要求にしたがってメインメモリ20をアクセス制御させるリードバッファモードと、HWAa7、HWAb8、又はLCDC9からのデータを順次蓄積するライトバッファモードと、HWAa7、HWAb8、及びLCDC9の内の一つのアクセラレータからの蓄積データを他のアクセラレータに転送するインターコネクトバッファモードとを有する。それらの動作モードの設定は、特に制限されないが、CPU2又はCPU2の指示に従ってHWAa7、HWAb8、又はLCDC9が行えばよい。バッファ制御部61はHWAa7、HWAb8、及びLCDC9のそれぞれに対応して前記制御レジスタ41aと同様の制御レジスタ(REG_CNT)61b、61c、61dを有し、メモリ部60のローカルアドレスとCPUのアドレス空間上のアドレスとの対応およびデータ読込み量やデータ保持量がプログラマブルに設定可能にされている。
【0120】
リードバッファモードには例えばL2PB6のプリフェッチ制御回路41による制御と同じ制御内容を採用することができる。この場合には、HWAa7、HWAb8、及びLCDC9のそれぞれに対応して前記制御レジスタ41aと同様の制御レジスタ(REG_CNT)61b、61c、61dを用いて、アクセス要求が受け付けられたアクセラレータからの要求に対してデータブロックのプリフェッチやプリフェッチしたデータの出力を行う。その処理内容は図8で説明した内容と実質同じである。
【0121】
ライトバッファモードでは図9に例示されるように、HWAa7、HWAb8、又はLCDC9の一つのアクセラレータがその処理データをメモリ部60に書き込む。書込み量は当該アクセラレータに対応する制御レジスタの設定値(D_PF)に従って決定され、また、データが書込まれるローカルメモリアドレスとその処理データを本来書き込むべきCPUアドレス空間上のメモリアドレスとの関係は、当該アクセラレータに対応する制御レジスタのEXD_ADRに記録される。その処理内容は図9で説明した内容と実質同じである。
【0122】
インターコネクトバッファモードではライトモードで書込まれたデータがHWAa7、HWAb8、又はLCDC9の一つのアクセラレータに転送される。転送するときは当該アクセラレータに対応する制御レジスタの内容を利用してメモリ部60から転送元データを読み出す。
【0123】
特にプリフェッチバッファ10Aを採用した場合には、図12に例示されるように、アクセラレータによる処理結果をライトバッファモードでメモリ部60に格納した後、そのデータを用いるCPU2のデータ処理においてL1PB5はプリフェッチモードで必要なデータをメモリ部60から取得することが可能になる。
【0124】
第2の実施の形態によれば以下の作用効果を奏する。
【0125】
〔1〕プリフェッチバッファ10Aをアクセラレータ用のバッファと兼用させても、実施の形態1と同様に、CPU2が行うアクセスパタンに適応してCPU2によるデータアクセスの高速化若しくは先読み予測の外れによるペナルティーの削減を容易に実現することができる。実施の形態1に対して、プリフェッチバッファ10Aは、L1PB5からのからの要求に応答する動作がアクセラレータからの要求に応答する動作によって待たされる場合があるが、回路の兼用により回路規模の縮小が実現される。その他、第1の実施の形態と同様に作用し、奏効する。
【0126】
〔2〕動画の処理など、アクセラレータを連携して行うような処理の一部を、CPU2で行うようにした場合に、アクセラレータが生成したデータを、CPU2が読み出す際に、メインメモリ20を経由することがなくなり、データ処理性能が向上する。メインメモリ20の帯域節約になり、換言すれば、同じ帯域でより多くの処理を行えるようになるからである。ある一連の処理の一部をCPU2で行うことは、チップ開発時には存在しなかったコーデックを後からサポートする必要が生じた際などによく見られることで、この処理性能の向上は、製品の競争力向上に有利である。
【0127】
《第3の実施の形態》
第3の実施の形態について詳述する。第3の実施の形態では、L1PB5を、複数のプロセスが時分割多重で使用できるよう、複数チャネル化する。即ち、別プロセスはL1PB5の別チャネルを使うようにすることで、データの衝突を防ぐことが可能になる。L1PBを複数セット持つと高速性が損なわれるので、L1PB5自体は1組とし、タグTAGにチャネル番号(ch#)を付加する。チャネル番号の与え方は、アドレスの上位のビットとする。
【0128】
図13にはL1PBを16チャネルに分割し、各チャネルに16MB(0x01000000)の領域を割り当てた場合のアドレスマップが例示される。複数プロセスが時分割多重でL1PB5を使用する場合には、異なる16MBを使用するようにする。
【0129】
図14にはチャネル番号(ch#)を付加したL1PB5Aが例示される。チャネル番号ch#はアドレスに上位ビットであるから、図ではチャネル番号ch#をタグTAGとは分離して示されているが、実質的にチャネル番号ch#はタグTAGの上位側ビットを意味するものである。比較器31Aはアクセスアドレスの上位側をチャネル番号ch#と比較し、その下位側をタグTAGと比較する。これにより、複数のプロセスが別々のチャネルを試用した際に、別のプロセスが使用中のデータを誤ってアクセスしてしまうことを防ぐことができる。
【0130】
プロセススイッチ時には、チャネル番号が変わるので、L1PB5A内の他のプロセス用のデータはヒットせず、L2PB6からフィルし直すことが必要意になる。
【0131】
L2PB6は大容量であるので、複数チャネルのデータを同時に格納できる構成にするのがよい。具体的には、プリフェッチ対象の物理アドレスなどを設定する制御レジスタ(REG_CNT)をチャネル毎に備えるようにする。加えてL1PB5AからL2PB6へのアクセスにチャネル番号を付与することで、L2PB6側でもプロセス毎に独立したプリフェッチ動作を行うことが可能になる。
【0132】
また、第3の実施の形態では、時分割多重で走行する二つ以上のプロセスが、それぞれプリフェッチバッファ機能を使用する場合には、コンテキストスイッチの度にプリフェッチバッファを初期化する必要がなくなり、システム全体の処理性能が向上する。
【0133】
《第4の実施の形態》
第4の実施の形態4は第3の実施の形態の変形例であり、L1PBのチャネル番号ch#を仮想アドレスの一部として与えるのではなく、ch#にはOS(オペレーティングシステム)がMMUを制御する際にプロセスIDとして使用するASID(Application Specific ID:アドレス空間識別子)のビットの全部または一部であるasidを利用するようにしたものである。
【0134】
図15に例示されるL1PB5Bでは、各エントリデータにはタグTAGに加えてそのタグのアドレスを用いて実行されるプロセスのASIDに対応されるasidが追加される。L1PB5BにはCPU2からのアクセスに際してアドレスに加えてASIDの情報が供給され、比較器31BはCPU2から供給されたアドレス及びASIDをタグTAG及びasidと比較することで、各プロセス毎に独立した(別チャネルの)プリフェッチバッファ機能を提供できるようになる。
【0135】
第3の実施の形態に比べて、プリフェッチバッファをチャネルごとに分割しなくてよいため、最大サイズを大きく取れるというメリットがある。各プロセスが、自分がプリフェッチバッファのチャネルの何番を使用するかを意識しなくてよい。代わりにOS等のシステムソフトウェアで管理すればよい。
【0136】
《第5の実施の形態》
図16に例示されるようにL1CMに直列に第2のキャッシュメモリ(L2CN)17を配置してもよい。
L2CM17はL1CM4よりもキャッシュエントリ数の多い構成にされ、例えばセット・アソシアティブ・キャッシュメモリによって構成される。キャッシュメモリについても、高速アクセスと大きな容量とを両立させることが可能になる
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0137】
例えば、メインメモリはデータ処理装置にオンチップされていてもよい。データ処理装置1は仮想記憶を採用し、メモリマネージメントユニット(MMU)を用いて論理アドレスを物理アドレスに変換すると共にメモリ保護を行っても良い。L1PB5はダイレクトマップの連想メモリに限定されない。セット・アソシアティブ・キャッシュメモリを採用することも可能である。
【0138】
L1PB5のプリフェッチを自動予測プリフェッチのみとし、L2PB6のプリフェッチをレジスタ制御プリフェッチのみとすることも可能である。L1PB5及びL2PB6を共に自動予測プリフェッチだけとすることも可能である。プリフェッチバッファを使うプログラムが、あらかじめL2PB6の制御レジスタを設定しておかなくてよい。
【0139】
L1PB5及びL2PB6を共にレジスタ制御プリフェッチに統一してもよい。プリフェッチが完全にプログラマの指示通りに行われるので、プリフェッチ予測ミスによる無駄なトラフィックが発生しない。
【0140】
L1PB5の全部または一部を、通常の内蔵メモリとしても使用可能な構成とし、制御レジスタあるいはアクセスに使用するアドレスで、プリフェッチバッファとして動作するか、通常の内蔵メモリとして使用するかを選択可能にすることも可能である。CPUのスクラッチパッドとして高速なメモリが必要な場合に、L1PB5とは別に専用の内蔵メモリを用意することなく、必要な機能を提供することができる。
【0141】
プリフェッチバッファやキャッシュメモリの直列段数は2段に限定されない。
【符号の説明】
【0142】
1 データ処理装置(SOC)
2 中央処理装置(CPU)
4 キャッシュメモリ(L1CM)
5、5A、5B 第1プリフェッチバッファ(L1PB)
6 第2プリフェッチバッファ(L2PB)
7、8 ハードウェアアクセラレータ(HWAa、HWAb)
9 液晶表示コントローラ(LCDC)
10 インターコネクトバッファ(ICB)
11 オンチップバス(BUS_OC)
11a CPUバス(BUS_CPU)
11b システムバス(BUS_SYS)
12 グラフィックプロセッシングユニット(GPU)
13 サウンドプロセッシングユニット(SPU)
15 タイマ(TMR)
16 シリアルインタフェース(SIF)
20 メインメモリ(MMRY)
30 メモリ部
ETRY エントリデータ
V バリッドビット
U ユーズドビット
TAG アドレスタグ
DAT データDAT
31 比較器(COMP)
32,33 セレクタ(SLCT)
34 プリフェッチ制御部(PRD_PETC)
34a 制御レジスタ(REG_CNT)
40 メモリ部(MRY_L2PB)
41 プリフェッチ制御部(CNT_L2PB)
DBLK データブロック
UDAT 単位データ
EXD_ADR アドレス変換データ
D_PF 先読みデータ量
D_HLD 保持データ量
50 メモリ部(MRY_ICB)
51 バッファ制御部(CNT_ICB)
52 調停回路(ARBT)
51a〜51c 制御レジスタ(REG_CNT)
10A プリフェッチバッファ(L2PB&ICB)
60 メモリ部(MRY_L2PB&ICB)
61 バッファ制御部(CNT_L2PB&ICB)
62 調停回路(ARBT)
61a〜61d 制御レジスタ(REG_CNT)
ch# チャネル番号

【特許請求の範囲】
【請求項1】
命令を実行する中央処理装置と、
前記中央処理装置に接続され前記中央処理装置によるアクセス要求に応答して連想記憶によるメモリ動作を行う第1プリフェッチバッファと、
前記第1プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第1プリフェッチバッファからの要求にしたがってメモリ動作を行い、前記第1プリフェッチバッファからの要求に応答するデータを保有していないとき外部にデータ取得を要求する第2プリフェッチバッファと、を有し、
前記第1プリフェッチバッファは前記中央処理装置による連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を可変可能に制御する第1プリフェッチ制御部を有し、
前記第2プリフェッチバッファは、前記外部へのデータ取得を要求して読込むデータ量及び参照された後も保持するデータ量を可変可能に制御する第2プリフェッチ制御部を有し、前記第1プリフェッチバッファよりも大きな記憶容量を備える、データ処理装置。
【請求項2】
前記第2プリフェッチバッファが前記第1プリフェッチバッファからの要求に応答するデータを保有していないとき前記第2プリフェッチバッファによる外部へのデータ取得の要求にしたがってメインメモリの制御を行うメモリコントローラを更に有する、請求項1記載のデータ処理装置。
【請求項3】
命令を実行する中央処理装置と、
前記中央処理装置に接続され前記中央処理装置によるアクセス要求に応答して連想記憶によるメモリ動作を行う第1プリフェッチバッファと、
前記第1プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第1プリフェッチバッファからの要求にしたがってメモリ動作を行う第2プリフェッチバッファと、
前記第2プリフェッチバッファが前記第1プリフェッチバッファからの要求に応答するデータを保有していないとき前記第2プリフェッチバッファからの要求にしたがってメインメモリの制御を行うメモリコントローラと、を有し、
前記第1プリフェッチバッファは前記中央処理装置による連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を可変可能に制御する第1プリフェッチ制御部を有し、
前記第2プリフェッチバッファは、前記メモリコントローラへの要求に従って前記メインメモリから読込むデータ量及び参照された後も保持するデータ量を可変可能に制御する第2プリフェッチ制御部を有し、前記第1プリフェッチバッファよりも大きな記憶容量を備える、データ処理装置。
【請求項4】
前記中央処理装置に接続されたキャッシュメモリをさらに有し、
前記第1プリフェッチバッファは前記キャッシュメモリによるキャッシュ対象アドレス範囲外のアドレスに対するアクセス要求に応答してメモリ動作を行う、請求項1記載のデータ処理装置。
【請求項5】
前記第1プリフェッチバッファは、エントリデータの有効性を示すバリッドビット、エントリデータが既に参照されたことを示すユーズドビット、アドレスタグ及びデータから成るエントリデータを複数個格納するメモリ部を有し、前記バリッドビット及びユーズドビットを参照して入れ替え対象とするエントリデータを判別する、請求項4記載差異のデータ処理装置。
【請求項6】
前記アドレスタグの上位複数ビットは中央処理装置が命令を実行して実現するプロセス毎に相違されるアドレス空間のチャネル番号を特定する上位アドレスビットであり、
前記第1プリフェッチ制御部は、アドレスタグを、中央処理装置が出力するアドレス信号と比較して、エントリデータの連想検索を行う、請求項5記載のデータ処理装置。
【請求項7】
前記アドレスタグには、中央処理装置が命令を実行して実現するプロセスを区別するために用いられるアドレス空間識別子が付加され、
前記第1プリフェッチ制御部は、アドレスタグ及びアドレス空間識別子を、中央処理装置が出力するアドレス信号及びアドレス空間識別子と比較して、エントリデータの連想検索を行う、請求項5記載のデータ処理装置。
【請求項8】
前記第1プリフェッチ制御部は、連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を制御レジスタの設定値に基づいて決定し、前記制御レジスタは前記中央処理装置によって可変可能に値が設定される、請求項1記載のデータ処理装置。
【請求項9】
前記第1プリフェッチ制御部は、連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を前記中央処理装置によるアクセス履歴に基づいて決定する、請求項1記載のデータ処理装置。
【請求項10】
前記第2プリフェッチ制御部は、メインメモリの制御に際して前記メインメモリから読込むデータ量及び参照された後も保持するデータ量を制御レジスタの設定値に基づいて決定し、前記制御レジスタは前記中央処理装置によって可変可能に値が設定される、請求項3記載のデータ処理装置。
【請求項11】
前記第2プリフェッチ制御部は、メインメモリの制御に際して前記メインメモリから読込むデータ量を読込みデータ量の履歴に基づいて決定し、メインメモリの制御に際して前記メインメモリから読込んだデータのうち参照された後も保持するデータ量を制御レジスタの設定値に基づいて決定し、前記制御レジスタは前記中央処理装置によって可変可能に値が設定される、請求項3記載のデータ処理装置。
【請求項12】
前記中央処理装置の制御に基づいて動作すると共にバスアクセス機能を有する複数個のアクセラレータと、
前記アクセラレータからの要求に従ってメモリ動作を行うアクセラレータ用バッファと、を更に有し、
前記アクセラレータ用バッファは、前記アクセラレータからの要求に応答するデータを保有していないときメモリコントローラにアクセラレータからの要求にしたがってメインメモリを制御させるリードバッファモードと、アクセラレータからのデータを順次蓄積するライトバッファモードと、一つのアクセラレータからの蓄積データを他のアクセラレータに転送するインターコネクトバッファモードとを有する、請求項3記載のデータ処理装置。
【請求項13】
命令を実行する中央処理装置と、
前記中央処理装置の制御に基づいて動作すると共にバスアクセス機能を有する複数個のアクセラレータと、
前記中央処理装置に接続され前記中央処理によるアクセス要求に応答して連想記憶によるメモリ動作を行う第1プリフェッチバッファと、
前記第1プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第1プリフェッチバッファからの要求にしたがってメモリ動作を行うプリフェッチモード及び前記アクセラレータからの要求に従ってメモリ動作を行うアクセラレータモードを有し、前記第1プリフェッチバッファ又はアクセラレータからのからの要求に応答するデータを保有していないとき外部にデータ取得を要求する第2プリフェッチバッファと、を有し、
前記第1プリフェッチバッファは前記中央処理装置による連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を可変可能に制御する第1プリフェッチ制御部を有し、
前記第2プリフェッチバッファは、前記外部へのデータ取得を要求して読込むデータ量及び参照された後も保持するデータ量を前記第1プリフェッチバッファ及び前記アクセラレータのそれぞれに対応して可変可能に制御する第2プリフェッチ制御部を有し、前記第1プリフェッチバッファよりも大きな記憶容量を備える、データ処理装置。
【請求項14】
前記第2プリフェッチバッファが前記第1プリフェッチバッファ又はアクセラレータからの要求に応答するデータを保有していないとき前記第2プリフェッチバッファからの要求にしたがってメインメモリの制御を行うメモリコントローラを更に有する、請求項13記載のデータ処理装置。
【請求項15】
命令を実行する中央処理装置と、
前記中央処理装置の制御に基づいて動作すると共にバスアクセス機能を有する複数個のアクセラレータと、
前記中央処理装置に接続され前記中央処理装置によるアクセス要求に応答して連想記憶によるメモリ動作を行う第1プリフェッチバッファと、
前記第1プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第1プリフェッチバッファからの要求にしたがってメモリ動作を行うプリフェッチモード及び前記アクセラレータからの要求に従ってメモリ動作を行うアクセラレータモードを有する第2プリフェッチバッファと、
前記第2プリフェッチバッファが前記第1プリフェッチバッファ又は前記アクセラレータからの要求に応答するデータを保有していないとき前記第2プリフェッチバッファからの要求にしたがってメインメモリの制御を行うメモリコントローラと、を有し、
前記第1プリフェッチバッファは前記中央処理装置による連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を可変可能に制御する第1プリフェッチ制御部を有し、
前記第2プリフェッチバッファは、前記メモリコントローラへの要求に従って前記メインメモリから読込むデータ量及び参照された後も保持するデータ量を前記第1プリフェッチバッファ及び前記アクセラレータのそれぞれに対応して可変可能に制御する第2プリフェッチ制御部を有し、前記第1プリフェッチバッファよりも大きな記憶容量を備える、データ処理装置。
【請求項16】
前記アクセラレータモードとして、前記アクセラレータからの要求に応答するデータを保有していないときメモリコントローラにアクセラレータからの要求にしたがってメインメモリを制御させるリードバッファモードと、アクセラレータからのデータを順次蓄積するライトバッファモードと、一つのアクセラレータからの蓄積データを他のアクセラレータに転送するインターコネクトバッファモードとを有する、請求項13記載のデータ処理装置。
【請求項17】
前記中央処理装置に接続されたキャッシュメモリをさらに有し、
前記第1プリフェッチバッファは前記キャッシュメモリによるキャッシュ対象アドレス範囲外のアドレスに対するアクセス要求に応答してメモリ動作を行う、請求項13記載のデータ処理装置。
【請求項18】
前記第1プリフェッチバッファは、エントリデータの有効性を示すバリッドビット、エントリデータが既に参照されたことを示すユーズドビット、アドレスタグ及びデータから成るエントリデータを複数個格納するメモリ部を有し、前記バリッドビット及びユーズドビットを参照して入れ替え対象とするエントリデータを判別する、請求項17記載差異のデータ処理装置。
【請求項19】
前記アドレスタグの上位複数ビットは中央処理装置が命令を実行して実現するプロセス毎に相違されるアドレス空間のチャネル番号を特定する上位アドレスビットであり、
前記第1プリフェッチ制御部は、アドレスタグを、中央処理装置が出力するアドレス信号と比較して、エントリデータの連想検索を行う、請求項18記載のデータ処理装置。
【請求項20】
前記アドレスタグには、中央処理装置が命令を実行して実現するプロセスを区別するために用いられるアドレス空間識別子が付加され、
前記第1プリフェッチ制御部は、アドレスタグ及びアドレス空間識別子を、中央処理装置が出力するアドレス信号及びアドレス空間識別子と比較して、エントリデータの連想検索を行う、請求項18記載のデータ処理装置。
【請求項21】
前記第1プリフェッチ制御部は、連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を制御レジスタの設定値に基づいて決定し、前記制御レジスタは前記中央処理装置によって可変可能に値が設定される、請求項13記載のデータ処理装置。
【請求項22】
前記第1プリフェッチ制御部は、連想アクセスに際して前記第2プリフェッチバッファから読込むデータ量を前記中央処理装置によるアクセス履歴に基づいて決定する、請求項13記載のデータ処理装置。
【請求項23】
前記第2プリフェッチ制御部は、メインメモリの制御に際して前記メインメモリから読込むデータ量及び参照された後も保持するデータ量を制御レジスタの設定値に基づいて決定し、前記制御レジスタは前記第1プリフェッチバッファ及びアクセラレータのそれぞれに対応して個別に設けられ、それぞれ前記中央処理装置によって可変可能に値が設定される、請求項15記載のデータ処理装置。
【請求項24】
前記第2プリフェッチ制御部は、メインメモリの制御に際して前記メインメモリから読込むデータ量を読込みデータ量の履歴に基づいて決定し、メインメモリの制御に際して前記メインメモリから読込んだデータのうち参照された後も保持するデータ量を制御レジスタの設定値に基づいて決定し、前記制御レジスタは前記第1プリフェッチバッファ及びアクセラレータのそれぞれに対応して個別に設けられ、それぞれ前記中央処理装置によって可変可能に値が設定される、請求項15記載のデータ処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6A】
image rotate

【図6B】
image rotate

【図6C】
image rotate

【図6D】
image rotate

【図6E】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate