(57)【要約】【課題】ＣＰＵによるストリームデータのような一連の構造を持つデータのアクセスを高速化する。【解決手段】ＣＰＵからのアクセス要求に応答してメモリ動作を行う第１プリフェッチバッファに、当該第１プリフェッチバッファが必要なデータを保有していないとき第１プリフェッチバッファからの要求に従ってメモリ動作を行い且つ第１プリフェッチバッファよりも記憶容量の大きな第２プリフェッチバッファを配置し、第１プリフェッチバッファには連想アクセスで第２プリフェッチバッファから読込むデータ量を可変可能に制御する第１プリフェッチ制御部を、第２プリフェッチバッファには第１プリフェッチバッファからの要求に従ってメインメモリから読込むデータ量及び読込んだデータを保持する範囲を可変可能に制御する第２プリフェッチ制御部を設ける。【選択図】図１
2011154528.tif 000002
【特許請求の範囲】
【請求項１】
命令を実行する中央処理装置と、
前記中央処理装置に接続され前記中央処理装置によるアクセス要求に応答して連想記憶によるメモリ動作を行う第１プリフェッチバッファと、
前記第１プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第１プリフェッチバッファからの要求にしたがってメモリ動作を行い、前記第１プリフェッチバッファからの要求に応答するデータを保有していないとき外部にデータ取得を要求する第２プリフェッチバッファと、を有し、
前記第１プリフェッチバッファは前記中央処理装置による連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を可変可能に制御する第１プリフェッチ制御部を有し、
前記第２プリフェッチバッファは、前記外部へのデータ取得を要求して読込むデータ量及び参照された後も保持するデータ量を可変可能に制御する第２プリフェッチ制御部を有し、前記第１プリフェッチバッファよりも大きな記憶容量を備える、データ処理装置。
【請求項２】
前記第２プリフェッチバッファが前記第１プリフェッチバッファからの要求に応答するデータを保有していないとき前記第２プリフェッチバッファによる外部へのデータ取得の要求にしたがってメインメモリの制御を行うメモリコントローラを更に有する、請求項１記載のデータ処理装置。
【請求項３】
命令を実行する中央処理装置と、
前記中央処理装置に接続され前記中央処理装置によるアクセス要求に応答して連想記憶によるメモリ動作を行う第１プリフェッチバッファと、
前記第１プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第１プリフェッチバッファからの要求にしたがってメモリ動作を行う第２プリフェッチバッファと、
前記第２プリフェッチバッファが前記第１プリフェッチバッファからの要求に応答するデータを保有していないとき前記第２プリフェッチバッファからの要求にしたがってメインメモリの制御を行うメモリコントローラと、を有し、
前記第１プリフェッチバッファは前記中央処理装置による連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を可変可能に制御する第１プリフェッチ制御部を有し、
前記第２プリフェッチバッファは、前記メモリコントローラへの要求に従って前記メインメモリから読込むデータ量及び参照された後も保持するデータ量を可変可能に制御する第２プリフェッチ制御部を有し、前記第１プリフェッチバッファよりも大きな記憶容量を備える、データ処理装置。
【請求項４】
前記中央処理装置に接続されたキャッシュメモリをさらに有し、
前記第１プリフェッチバッファは前記キャッシュメモリによるキャッシュ対象アドレス範囲外のアドレスに対するアクセス要求に応答してメモリ動作を行う、請求項１記載のデータ処理装置。
【請求項５】
前記第１プリフェッチバッファは、エントリデータの有効性を示すバリッドビット、エントリデータが既に参照されたことを示すユーズドビット、アドレスタグ及びデータから成るエントリデータを複数個格納するメモリ部を有し、前記バリッドビット及びユーズドビットを参照して入れ替え対象とするエントリデータを判別する、請求項４記載差異のデータ処理装置。
【請求項６】
前記アドレスタグの上位複数ビットは中央処理装置が命令を実行して実現するプロセス毎に相違されるアドレス空間のチャネル番号を特定する上位アドレスビットであり、
前記第１プリフェッチ制御部は、アドレスタグを、中央処理装置が出力するアドレス信号と比較して、エントリデータの連想検索を行う、請求項５記載のデータ処理装置。
【請求項７】
前記アドレスタグには、中央処理装置が命令を実行して実現するプロセスを区別するために用いられるアドレス空間識別子が付加され、
前記第１プリフェッチ制御部は、アドレスタグ及びアドレス空間識別子を、中央処理装置が出力するアドレス信号及びアドレス空間識別子と比較して、エントリデータの連想検索を行う、請求項５記載のデータ処理装置。
【請求項８】
前記第１プリフェッチ制御部は、連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を制御レジスタの設定値に基づいて決定し、前記制御レジスタは前記中央処理装置によって可変可能に値が設定される、請求項１記載のデータ処理装置。
【請求項９】
前記第１プリフェッチ制御部は、連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を前記中央処理装置によるアクセス履歴に基づいて決定する、請求項１記載のデータ処理装置。
【請求項１０】
前記第２プリフェッチ制御部は、メインメモリの制御に際して前記メインメモリから読込むデータ量及び参照された後も保持するデータ量を制御レジスタの設定値に基づいて決定し、前記制御レジスタは前記中央処理装置によって可変可能に値が設定される、請求項３記載のデータ処理装置。
【請求項１１】
前記第２プリフェッチ制御部は、メインメモリの制御に際して前記メインメモリから読込むデータ量を読込みデータ量の履歴に基づいて決定し、メインメモリの制御に際して前記メインメモリから読込んだデータのうち参照された後も保持するデータ量を制御レジスタの設定値に基づいて決定し、前記制御レジスタは前記中央処理装置によって可変可能に値が設定される、請求項３記載のデータ処理装置。
【請求項１２】
前記中央処理装置の制御に基づいて動作すると共にバスアクセス機能を有する複数個のアクセラレータと、
前記アクセラレータからの要求に従ってメモリ動作を行うアクセラレータ用バッファと、を更に有し、
前記アクセラレータ用バッファは、前記アクセラレータからの要求に応答するデータを保有していないときメモリコントローラにアクセラレータからの要求にしたがってメインメモリを制御させるリードバッファモードと、アクセラレータからのデータを順次蓄積するライトバッファモードと、一つのアクセラレータからの蓄積データを他のアクセラレータに転送するインターコネクトバッファモードとを有する、請求項３記載のデータ処理装置。
【請求項１３】
命令を実行する中央処理装置と、
前記中央処理装置の制御に基づいて動作すると共にバスアクセス機能を有する複数個のアクセラレータと、
前記中央処理装置に接続され前記中央処理によるアクセス要求に応答して連想記憶によるメモリ動作を行う第１プリフェッチバッファと、
前記第１プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第１プリフェッチバッファからの要求にしたがってメモリ動作を行うプリフェッチモード及び前記アクセラレータからの要求に従ってメモリ動作を行うアクセラレータモードを有し、前記第１プリフェッチバッファ又はアクセラレータからのからの要求に応答するデータを保有していないとき外部にデータ取得を要求する第２プリフェッチバッファと、を有し、
前記第１プリフェッチバッファは前記中央処理装置による連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を可変可能に制御する第１プリフェッチ制御部を有し、
前記第２プリフェッチバッファは、前記外部へのデータ取得を要求して読込むデータ量及び参照された後も保持するデータ量を前記第１プリフェッチバッファ及び前記アクセラレータのそれぞれに対応して可変可能に制御する第２プリフェッチ制御部を有し、前記第１プリフェッチバッファよりも大きな記憶容量を備える、データ処理装置。
【請求項１４】
前記第２プリフェッチバッファが前記第１プリフェッチバッファ又はアクセラレータからの要求に応答するデータを保有していないとき前記第２プリフェッチバッファからの要求にしたがってメインメモリの制御を行うメモリコントローラを更に有する、請求項１３記載のデータ処理装置。
【請求項１５】
命令を実行する中央処理装置と、
前記中央処理装置の制御に基づいて動作すると共にバスアクセス機能を有する複数個のアクセラレータと、
前記中央処理装置に接続され前記中央処理装置によるアクセス要求に応答して連想記憶によるメモリ動作を行う第１プリフェッチバッファと、
前記第１プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第１プリフェッチバッファからの要求にしたがってメモリ動作を行うプリフェッチモード及び前記アクセラレータからの要求に従ってメモリ動作を行うアクセラレータモードを有する第２プリフェッチバッファと、
前記第２プリフェッチバッファが前記第１プリフェッチバッファ又は前記アクセラレータからの要求に応答するデータを保有していないとき前記第２プリフェッチバッファからの要求にしたがってメインメモリの制御を行うメモリコントローラと、を有し、
前記第１プリフェッチバッファは前記中央処理装置による連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を可変可能に制御する第１プリフェッチ制御部を有し、
前記第２プリフェッチバッファは、前記メモリコントローラへの要求に従って前記メインメモリから読込むデータ量及び参照された後も保持するデータ量を前記第１プリフェッチバッファ及び前記アクセラレータのそれぞれに対応して可変可能に制御する第２プリフェッチ制御部を有し、前記第１プリフェッチバッファよりも大きな記憶容量を備える、データ処理装置。
【請求項１６】
前記アクセラレータモードとして、前記アクセラレータからの要求に応答するデータを保有していないときメモリコントローラにアクセラレータからの要求にしたがってメインメモリを制御させるリードバッファモードと、アクセラレータからのデータを順次蓄積するライトバッファモードと、一つのアクセラレータからの蓄積データを他のアクセラレータに転送するインターコネクトバッファモードとを有する、請求項１３記載のデータ処理装置。
【請求項１７】
前記中央処理装置に接続されたキャッシュメモリをさらに有し、
前記第１プリフェッチバッファは前記キャッシュメモリによるキャッシュ対象アドレス範囲外のアドレスに対するアクセス要求に応答してメモリ動作を行う、請求項１３記載のデータ処理装置。
【請求項１８】
前記第１プリフェッチバッファは、エントリデータの有効性を示すバリッドビット、エントリデータが既に参照されたことを示すユーズドビット、アドレスタグ及びデータから成るエントリデータを複数個格納するメモリ部を有し、前記バリッドビット及びユーズドビットを参照して入れ替え対象とするエントリデータを判別する、請求項１７記載差異のデータ処理装置。
【請求項１９】
前記アドレスタグの上位複数ビットは中央処理装置が命令を実行して実現するプロセス毎に相違されるアドレス空間のチャネル番号を特定する上位アドレスビットであり、
前記第１プリフェッチ制御部は、アドレスタグを、中央処理装置が出力するアドレス信号と比較して、エントリデータの連想検索を行う、請求項１８記載のデータ処理装置。
【請求項２０】
前記アドレスタグには、中央処理装置が命令を実行して実現するプロセスを区別するために用いられるアドレス空間識別子が付加され、
前記第１プリフェッチ制御部は、アドレスタグ及びアドレス空間識別子を、中央処理装置が出力するアドレス信号及びアドレス空間識別子と比較して、エントリデータの連想検索を行う、請求項１８記載のデータ処理装置。
【請求項２１】
前記第１プリフェッチ制御部は、連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を制御レジスタの設定値に基づいて決定し、前記制御レジスタは前記中央処理装置によって可変可能に値が設定される、請求項１３記載のデータ処理装置。
【請求項２２】
前記第１プリフェッチ制御部は、連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を前記中央処理装置によるアクセス履歴に基づいて決定する、請求項１３記載のデータ処理装置。
【請求項２３】
前記第２プリフェッチ制御部は、メインメモリの制御に際して前記メインメモリから読込むデータ量及び参照された後も保持するデータ量を制御レジスタの設定値に基づいて決定し、前記制御レジスタは前記第１プリフェッチバッファ及びアクセラレータのそれぞれに対応して個別に設けられ、それぞれ前記中央処理装置によって可変可能に値が設定される、請求項１５記載のデータ処理装置。
【請求項２４】
前記第２プリフェッチ制御部は、メインメモリの制御に際して前記メインメモリから読込むデータ量を読込みデータ量の履歴に基づいて決定し、メインメモリの制御に際して前記メインメモリから読込んだデータのうち参照された後も保持するデータ量を制御レジスタの設定値に基づいて決定し、前記制御レジスタは前記第１プリフェッチバッファ及びアクセラレータのそれぞれに対応して個別に設けられ、それぞれ前記中央処理装置によって可変可能に値が設定される、請求項１５記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中央処理装置が利用するデータを予め蓄積するプリフェッチバッファを備えたデータ処理装置に関し、例えばシステムオンチップの半導体集積回路化されたマイクロコンピュータに適用して有効な技術に関する。
【背景技術】
【０００２】
ストリームデータなどを効率的に処理するためにプリフェッチバッファを採用する技術がある。例えば特許文献１では、キャッシュメモリとは別に（並列に）、メインメモリからデータの先読みを行うプリフェッチバッファを設けることが記載されている。このプリフェッチバッファは中央処理装置からのリード要求がプリフェッチ対象空間に対するものであったときに、それをトリガにメインメモリに対してデータの先読み（プリフェッチ）を開始する。
【０００３】
また特許文献２では、メモリコントローラ内にプリフェッチバッファを設けている。このプリフェッチバッファは、特定のバスマスタからのアクセスである場合に、要求されたアクセスサイズよりも大きな単位で、メインメモリからデータの先読みを行うことで、メインメモリのアクセス効率を改善している。
【０００４】
特許文献３にはハードウェアアクセラレータのメモリアクセスを効率化するためのバッファ（インターコネクタバッファ）を用いる技術が記載される。このインターコネクタバッファは画像処理用のハードウェアアクセラレータからのメモリアクセスを効率化するもので、インターコネクタバッファに予めプリフェッチに必要な情報（先読み量やアクセス方向）を設定しておき、ハードウェアアクセラレータからのアクセスをトリガに、メインメモリからのデータの先読みを行うものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−１４８５８４号公報
【特許文献２】特開２００４−１２６６４５号公報
【特許文献３】特開２００８−１１７１０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載されているように、中央処理装置側の最上位側のキャッシュメモリ（Ｌ１キャッシュ）と並列にプリフェッチバッファを搭載すると、プリフェッチバッファの容量を大きくできない。なぜならば、大きくすると中央処理装置はプリフェッチバッファをノーウェイトではアクセスできなくなり、中央処理装置のデータ処理性能を低下させてしまう。
【０００７】
特許文献２に記載のように、メモリコントローラの近傍等のように、中央処理装置から遠いところにプリフェッチバッファを搭載する場合には、最初から中央処理装置からのノーウェイトアクセスはあきらめているので、大きな記憶容量を割当てることができるが、中央処理装置からのアクセス毎(例えば３２ビットアクセス毎)にアクセスレイテンシがかかり、やはり中央処理装置のデータ処理性能が出ない。
【０００８】
特許文献３のインターコネクタバッファは、ハードウェアアクセラレータに最適化して構成されているため、ストリームデータに対するデータスループットを重視した構成にされ、中央処理装置によるワードやロングワード単位のような比較的小さな単位で低レイテンシが求められるアクセス形態には適していない。
【０００９】
本発明の目的は、中央処理装置がアクセスするデータの単位が小さい場合にも、中央処理装置によるデータアクセスの高速化若しくは先読み予測が外れることによるペナルティーの削減を容易に実現することが可能なデータ処理装置を提供することにある。
【００１０】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１２】
すなわち、中央処理装置によるアクセス要求に応答して連想記憶によるメモリ動作を行う第１プリフェッチバッファに、当該第１プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第１プリフェッチバッファからの要求にしたがってメモリ動作を行い且つ前記第１プリフェッチバッファよりも大きな記憶容量を有する第２プリフェッチバッファを直列的に配置し、前記第１プリフェッチバッファには連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を可変可能に制御する第１プリフェッチ制御部を設け、前記第２プリフェッチバッファには前記第１プリフェッチバッファからの要求にしたがってメインメモリから読込むデータ量及び読込んだデータを保持する範囲を可変可能に制御する第２プリフェッチ制御部を設ける。
【００１３】
これにより、小記憶容量の第１プリフェッチバッファは第２プリフェッチバッファよりも高速なメモリ動作を行うことができ、大きな記憶容量の第２プリフェッチバッファには、低速であっても、纏まった大きなデータを蓄積することができる。したがって、第１プリフェッチバッファは先読み予測が外れても第２プリフェッチバッファから必要なデータを取得できる可能性が高くなり、メインメモリから取得する場合のように大きなフィルペナルティを負う回数が減る。第１プリフェッチバッファは中央処理装置のアクセスパタンに応じてデータの先読み量を設定可能にされるから、中央処理装置のアクセスパタンが変わっても先読み予測が外れる確率を低減することができる。それに応じて第２プリフェッチバッファもデータの先読み量と先読みしたデータの保持量を可変に設定可能にされるから、第１プリフェッチバッファの先読み予測が外れたときに重ねて第２プリフェッチバッファの先読み予測が外れる確率も低減することができる。
【発明の効果】
【００１４】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１５】
すなわち、中央処理装置がアクセスするデータの単位が小さい場合にも、中央処理装置によるデータアクセスの高速化若しくは先読み予測が外れることによるペナルティーの削減を容易に実現することが可能である。
【図面の簡単な説明】
【００１６】
【図１】図１は第１の実施の形態に係るデータ処理装置の機能部ロック構成を例示するブロック図である。
【図２】図２は図１のデータ処理装置におけるＣＰＵからメインメモリに至る主な構成の接続形態を例示するブロック図である。
【図３】図３はＣＰＵのアドレス空間を例示するアドレスマップである。
【図４】図４はＬ１ＰＢ５の具体例を示すブロック図である。
【図５】図５はＬ２ＰＢ６の具体例を示すブロック図である。
【図６Ａ】図６ＡはＬ２ＰＢ６の動作例を説明するための第１の動作説明図である。
【図６Ｂ】図６ＢはＬ２ＰＢ６の動作例を説明するための第２の動作説明図である。
【図６Ｃ】図６ＣはＬ２ＰＢ６の動作例を説明するための第３の動作説明図である。
【図６Ｄ】図６ＤはＬ２ＰＢ６の動作例を説明するための第４の動作説明図である。
【図６Ｅ】図６ＥはＬ２ＰＢ６の動作例を説明するための第５の動作説明図である。
【図７】図７はＩＣＢ１０の一例を示すブロック図である。
【図８】図８はリードバッファモードによる動作を例示する説明図である。
【図９】図９はライトバッファモードによる動作を例示する説明図である。
【図１０】図１０は第２の実施の形態に係るデータ処理装置の機能部ロック構成を例示するブロック図である。
【図１１】図１１はプリフェッチバッファ１０Ａの一例を示すブロック図である。
【図１２】図１２はプリフェッチバッファ１０Ａを採用した場合に可能になる特有の動作を例示する説明図である。
【図１３】図１３はＬ１ＰＢを１６チャネルに分割し、各チャネルに１６ＭＢの領域を割り当てた場合のアドレスマップである。
【図１４】図１４はチャネル番号（ｃｈ＃）を付加したＬ１ＰＢ５Ａを例示するブロック図である。
【図１５】図１５はａｓｉｄを付加したＬ１ＰＢ５Ｂを例示するブロック図である。
【図１６】図１６はＬ１ＣＭに直列にＬ２ＣＮを配置した例を示すブロック図である。
【発明を実施するための形態】
【００１７】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１８】
〔１〕＜L1PB及びL2PBの直列的配置＞
代表的な実施の形態に係るデータ処理装置（１）は、命令を実行する中央処理装置（２）と、前記中央処理装置に接続され前記中央処理によるアクセス要求に応答して連想記憶によるメモリ動作を行う第１プリフェッチバッファ（５）と、前記第１プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第１プリフェッチバッファからの要求にしたがってメモリ動作を行い、前記第１プリフェッチバッファからの要求に応答するデータを保有していないとき外部にデータ取得を要求する第２プリフェッチバッファ（６）と、を有する。前記第１プリフェッチバッファは中央処理装置による連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を可変可能に制御する第１プリフェッチ制御部(３４)を有する。前記第２プリフェッチバッファは、前記外部へのデータ取得を要求して読込むデータ量（Ｄ＿ＰＦ）及び参照された後も保持するデータ量（Ｄ＿ＨＬＤ）を可変可能に制御する第２プリフェッチ制御部(４１)を有し、前記第１プリフェッチバッファよりも大きな記憶容量を備える。
【００１９】
これにより、小記憶容量の第１プリフェッチバッファは第２プリフェッチバッファよりも高速なメモリ動作を行うことができ、大きな記憶容量の第２プリフェッチバッファには、低速であっても、纏まった大きなデータを蓄積することができる。したがって、第１プリフェッチバッファは先読み予測が外れても第２プリフェッチバッファから必要なデータを取得できる可能性が高くなり、メインメモリから取得する場合のように大きなフィルペナルティを負う回数が減る。第１プリフェッチバッファは中央処理装置のアクセスパタンに応じてデータの先読み量を設定可能にされるから、中央処理装置のアクセスパタンが変わっても先読み予測が外れる確率を低減することができる。それに応じて第２プリフェッチバッファも先読みデータのデータ量と参照済みの先読みデータの保持量を可変に設定可能にされるから、第１プリフェッチバッファの先読み予測が外れたときに重ねて第２プリフェッチバッファの先読み予測が外れる確率も低減することができる。
【００２０】
中央処理装置が行うデータアクセスのパタンが一方向に進む場合には、先読み量を大きくすることで必要な時期までにデータの先読みを完了している確率を上げ、逆にアクセスパタンが行きつ戻りつするような場合には、保持量を大きくし先読み量を絞ることで予測ミスが起こる確率を下げることが出来る。
【００２１】
これにより、中央処理装置が行うデータアクセスのパタンに柔軟に対応可能となり、中央処理装置によるデータアクセスの高速化若しくは先読み予測の外れによるペナルティーの削減を容易に実現することができる。
【００２２】
〔２〕項１のデータ処理装置において、前記第２プリフェッチバッファが前記第１プリフェッチバッファからの要求に応答するデータを保有していないとき前記第２プリフェッチバッファによる外部へのデータ取得の要求にしたがってメインメモリの制御を行うメモリコントローラ(14)を更に有する。メモリコントローラとは例えば半導体集積回路の外部インタフェースコントローラとしてのメモリコントローラ、又はメモリが接続するバスの仕様に適合させるためのバスステートコントローラなどであってよい。
【００２３】
〔３〕項１及び２を統合した形態に係るデータ処理装置（１）は、命令を実行する中央処理装置（２）と、前記中央処理装置に接続され前記中央処理によるアクセス要求に応答して連想記憶によるメモリ動作を行う第１プリフェッチバッファ（５）と、前記第１プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第１プリフェッチバッファからの要求にしたがってメモリ動作を行う第２プリフェッチバッファ（６）と、前記第２プリフェッチバッファが前記第１プリフェッチバッファからの要求に応答するデータを保有していないとき前記第２プリフェッチバッファからの要求にしたがってメインメモリの制御を行うメモリコントローラ（１４）と、を有する。前記第１プリフェッチバッファは中央処理装置による連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を可変可能に制御する第１プリフェッチ制御部(３４)を有する。前記第２プリフェッチバッファは、前記メモリコントローラへの要求に従って前記メインメモリから読込むデータ量（Ｄ＿ＰＦ）及び参照された後も保持するデータ量（Ｄ＿ＨＬＤ）を可変可能に制御する第２プリフェッチ制御部（４１）を有し、前記第１プリフェッチバッファよりも大きな記憶容量を備える。
【００２４】
〔４〕項１乃至３の何れかのデータ処理装置において、前記中央処理装置に接続されたキャッシュメモリ（４）をさらに有する。前記第１プリフェッチバッファは前記キャッシュメモリによるキャッシュ対象アドレス範囲外のアドレスに対するアクセス要求に応答してメモリ動作を行う。キャッシュ対象アドレス範囲のアクセスに対してはキャッシュメモリを用いて中央処理装置によるアクセスのレイテンシ縮小を達成する。
【００２５】
〔５〕項１乃至４の何れかのデータ処理装置において、前記第１プリフェッチバッファは、エントリデータの有効性を示すバリッドビット（Ｖ）、エントリデータが既に参照されたことを示すユーズドビット（Ｕ）、アドレスタグ(ＴＡＧ)及びデータ(ＤＡＴ)から成るエントリデータ(ＥＴＲＹ)を複数個格納するメモリ部(３０)を有し、前記バリッドビット及びユーズドビットを参照して入れ替え対象とするエントリデータを判別する。
【００２６】
〔６〕項５のデータ処理装置において、前記アドレスタグの上位複数ビットを、中央処理装置が命令を実行して実現するプロセス毎に相違なものとすることで、前記上位複数ビットをチャネル番号(ｃｈ＃)を特定する情報として使用可能であり、前記第１プリフェッチ制御部は、アドレスタグにこのチャネル番号を含めて、中央処理装置が出力するアドレス信号と比較して、エントリデータの連想検索を行う複数プロセスに対して第１プリフェッチバッファを共用することができる。
【００２７】
〔７〕項５のデータ処理装置において、前記アドレスタグには、中央処理装置が命令を実行して実現するプロセスを区別するために用いられるアドレス空間識別子（ａｓｉｄ）が付加され、前記第１プリフェッチ制御部は、アドレスタグ及びアドレス空間識別子を、中央処理装置が出力するアドレス信号及びアドレス空間識別子と比較して、エントリデータの連想検索を行う。
【００２８】
アドレス空間識別子によって区別される複数プロセスに対して第１プリフェッチバッファを共用することができる。
【００２９】
〔８〕項１乃至項７の何れかのデータ処理装置において、前記第１プリフェッチ制御部は、連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を制御レジスタ（３４ａ）の設定値に基づいて決定し、前記制御レジスタは前記中央処理装置によって可変可能に値が設定される。
【００３０】
中央処理装置が実行するプログラムに従って連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を容易に変更することができる。
【００３１】
〔９〕項１乃至項７の何れかのデータ処理装置において、前記第１プリフェッチ制御部は、連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を前記中央処理装置によるアクセス履歴に基づいて決定する。
【００３２】
連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を実際のアクセス状況に則して自律的に変更することができる。
【００３３】
〔１０〕項１乃至９の何れかのデータ処理装置において、前記第２プリフェッチ制御部は、メインメモリの制御に際して前記メインメモリから読込むデータ量及び参照された後も保持するデータ量を制御レジスタ（４１ａ）の設定値に基づいて決定し、前記制御レジスタは前記中央処理装置によって可変可能に値が設定される。
【００３４】
第２プリフェッチバッファがメインメモリから読込むデータ量及び参照された後も保持するデータ量を中央処理装置が実行するプログラムに従って容易に変更することができる。
【００３５】
〔１１〕項１乃至９の何れかのデータ処理装置において、前記第２プリフェッチ制御部は、メインメモリの制御に際して前記メインメモリから読込むデータ量を読込みデータ量の履歴に基づいて決定し、メインメモリの制御に際して前記メインメモリから読込んだデータのうち参照された後も保持するデータ量を制御レジスタ（４１ａ）の設定値に基づいて決定し、前記制御レジスタは前記中央処理装置によって可変可能に値が設定される。
【００３６】
連想アクセスに際してメインメモリから読込むデータ量を実際のアクセス状況に則して自律的に変更することができ、メインメモリから読込んで参照された後も保持するデータの保持量を中央処理装置が実行するプログラムに従って容易に変更することができる。
【００３７】
〔１２〕項１乃至１１の何れかのデータ処理装置において、前記中央処理装置の制御に基づいて動作すると共にバスアクセス機能を有する複数個のアクセラレータ（７，８，９）と、前記アクセラレータからの要求に従ってメモリ動作を行うアクセラレータ用バッファ（１０）と、を更に有する。前記アクセラレータ用バッファは、前記アクセラレータからの要求に応答するデータを保有していないときメモリコントローラにアクセラレータからの要求にしたがってメインメモリを制御させるリードバッファモードと、アクセラレータからのデータを順次蓄積するライトバッファモードと、一つのアクセラレータからの蓄積データを他のアクセラレータに転送するインターコネクトバッファモードとを有する。
【００３８】
アクセラレータ用バッファはアクセラレータが要求するデータの取得を効率化する。
【００３９】
〔１３〕＜L1PBとL2PB兼ICBとの直列的配置＞
別の実施の形態に係るデータ処理装置（１Ａ）は、命令を実行する中央処理装置（２）と、前記中央処理装置の制御に基づいて動作すると共にバスアクセス機能を有する複数個のアクセラレータと、前記中央処理装置に接続され前記中央処理装置によるアクセス要求に応答して連想記憶によるメモリ動作を行う第１プリフェッチバッファ（５）と、前記第１プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第１プリフェッチバッファからの要求にしたがってメモリ動作を行うプリフェッチモード及び前記アクセラレータからの要求に従ってメモリ動作を行うアクセラレータモードを有し、前記第１プリフェッチバッファ又はアクセラレータからのからの要求に応答するデータを保有していないとき外部にデータ取得を要求する第２プリフェッチバッファ（１０Ａ）と、を有する。前記第１プリフェッチバッファは中央処理装置による連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を可変可能に制御する第１プリフェッチ制御部を有する。前記第２プリフェッチバッファは、前記外部へのデータ取得を要求して読込むデータ量及び参照された後も保持するデータ量を前記第１プリフェッチバッファ及び前記アクセラレータのそれぞれに対応して可変可能に制御する第２プリフェッチ制御部を有し、前記第１プリフェッチバッファよりも大きな記憶容量を備える。
【００４０】
第２のプリフェッチバッファをアクセラレータ用のバッファと兼用させても、項１と同様に、中央処理装置のデータアクセスパタンに適応して先読みを行うことが可能であり、中央処理装置によるデータアクセスの高速化若しくは先読み予測の外れによるペナルティーの削減を容易に実現することができる。項１に対して、第２プリフェッチバッファは、第１プリフェッチバッファからのからの要求に応答する動作がアクセラレータからの要求に応答する動作によって待たされる場合があるが、回路規模の縮小に寄与する。
【００４１】
第２のプリフェッチバッファをアクセラレータ用のバッファと兼用させると、中央処理装置とアクセラレータが連携して行うような処理の場合に、アクセラレータが生成したデータを中央処理装置が読み出す際に、メインメモリを経由することがなくなり、データ処理性能が向上する。逆に中央処理装置が生成したデータをアクセラレータが読み出す場合にも同様の効果が得られる。
【００４２】
〔１４〕項１３のデータ処理装置において、前記第２プリフェッチバッファが前記第１プリフェッチバッファ又はアクセラレータからの要求に応答するデータを保有していないとき前記第２プリフェッチバッファからの要求にしたがってメインメモリの制御を行うメモリコントローラを更に有する。
【００４３】
〔１５〕項１３及び１４を統合した形態に係るデータ処理装置は、命令を実行する中央処理装置と、前記中央処理装置の制御に基づいて動作すると共にバスアクセス機能を有する複数個のアクセラレータと、前記中央処理装置に接続され前記中央処理によるアクセス要求に応答して連想記憶によるメモリ動作を行う第１プリフェッチバッファと、前記第１プリフェッチバッファが前記アクセス要求に応答するデータを保有していないとき前記第１プリフェッチバッファからの要求にしたがってメモリ動作を行うプリフェッチモード及び前記アクセラレータからの要求に従ってメモリ動作を行うアクセラレータモードを有する第２プリフェッチバッファと、前記第２プリフェッチバッファが前記第１プリフェッチバッファ又は前記アクセラレータからの要求に応答するデータを保有していないとき前記第２プリフェッチバッファからの要求にしたがってメインメモリの制御を行うメモリコントローラと、を有する。前記第１プリフェッチバッファは中央処理装置による連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を可変可能に制御する第１プリフェッチ制御部を有する。前記第２プリフェッチバッファは、前記メモリコントローラへの要求に従って前記メインメモリから読込むデータ量及び参照された後も保持するデータ量を前記第１プリフェッチバッファ及び前記アクセラレータのそれぞれに対応して可変可能に制御する第２プリフェッチ制御部を有し、前記第１プリフェッチバッファよりも大きな記憶容量を備える。
【００４４】
〔１６〕項１３乃至１５の何れかのデータ処理装置において、前記アクセラレータモードとして、前記アクセラレータからの要求に応答するデータを保有していないときメモリコントローラにアクセラレータからの要求にしたがってメインメモリを制御させるリードバッファモードと、アクセラレータからのデータを順次蓄積するライトバッファモードと、一つのアクセラレータからの蓄積データを他のアクセラレータに転送するインターコネクトバッファモードとを有する。
【００４５】
〔１７〕項１３乃至１６の何れかのデータ処理装置は、前記中央処理装置に接続されたキャッシュメモリをさらに有する。前記第１プリフェッチバッファは前記キャッシュメモリによるキャッシュ対象アドレス範囲外のアドレスに対するアクセス要求に応答してメモリ動作を行う。
【００４６】
〔１８〕項１３乃至１７の何れかのデータ処理装置において、前記第１プリフェッチバッファは、エントリデータの有効性を示すバリッドビット、エントリデータが既に参照されたことを示すユーズドビット、アドレスタグ及びデータから成るエントリデータを複数個格納するメモリ部を有し、前記バリッドビット及びユーズドビットを参照して入れ替え対象とするエントリデータを判別する。
【００４７】
〔１９〕項１８のデータ処理装置において、前記アドレスタグの上位複数ビットは中央処理装置が命令を実行して実現するプロセス毎に相違されるアドレス空間のチャネル番号を特定する上位アドレスビットであり、前記第１プリフェッチ制御部は、アドレスタグを、中央処理装置が出力するアドレス信号と比較して、エントリデータの連想検索を行う。
【００４８】
〔２０〕項１８のデータ処理装置において、前記アドレスタグには、中央処理装置が命令を実行して実現するプロセスを区別するために用いられるアドレス空間識別子が付加され、前記第１プリフェッチ制御部は、アドレスタグ及びアドレス空間識別子を、中央処理装置が出力するアドレス信号及びアドレス空間識別子と比較して、エントリデータの連想検索を行う。
【００４９】
〔２１〕項１３乃至２０の何れかのデータ処理装置において、前記第１プリフェッチ制御部は、連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を制御レジスタの設定値に基づいて決定し、前記制御レジスタは前記中央処理装置によって可変可能に値が設定される。
【００５０】
〔２２〕項１３乃至２０の何れかのデータ処理装置において、前記第１プリフェッチ制御部は、連想アクセスに際して前記第２プリフェッチバッファから読込むデータ量を前記中央処理装置によるアクセス履歴に基づいて決定する。
【００５１】
〔２３〕項１３乃至２２の何れかのデータ処理装置において、前記第２プリフェッチ制御部は、メインメモリの制御に際して前記メインメモリから読込むデータ量及び参照された後も保持するデータ量を制御レジスタ（６１ａ〜６１ｄ）の設定値に基づいて決定し、前記制御レジスタは複数組設けられ、前記第１プリフェッチバッファ及びアクセラレータからのチャネルを識別するためのアドレス信号に対応してどの制御レジスタの組が使用されるかが決定される。制御レジスタはそれぞれ前記中央処理装置によって可変可能に値が設定される。
【００５２】
〔２４〕項１３乃至２２の何れかのデータ処理装置において、前記第２プリフェッチ制御部は、メインメモリの制御に際して前記メインメモリから読込むデータ量を読込みデータ量の履歴に基づいて決定し、メインメモリの制御に際して前記メインメモリから読込んだデータのうち参照された後も保持するデータ量を制御レジスタ（６１ａ〜６１ｄ）の設定値に基づいて決定し、前記制御レジスタは複数組設けられ、前記第１プリフェッチバッファ及びアクセラレータからのチャネルを識別するためのアドレス信号に対応してどの制御レジスタの組が使用されるかが決定される。制御レジスタはそれぞれ前記中央処理装置によって可変可能に値が設定される。
【００５３】
２．実施の形態の詳細
《第１の実施の形態》
第１の実施の形態について詳述する。図１には第１の実施の形態に係るデータ処理装置の機能ブロック構成が例示される。データ処理装置は、特に制限されないが、単一チップに形成されたシステムオンチップの半導体集積回路、複数個のデータ処理デバイスなどが搭載されて単一ケーシングに封止された半導体集積回路モジュール、又は配線基板に複数個のデータ処理デバイス及びメモリデバイス等が実装されて構成されるデータ処理カードによって構成される。ここでは、システムオンチップの半導体集積回路（ＳＯＣ）を一例として説明する。
【００５４】
データ処理装置（ＳＯＣ）１は、特に制限されないが、単結晶シリコン等の1個の半導体基板に相補型ＭＯＳ集積回路製造技術などによって構成される。
【００５５】
２は中央処理装置（ＣＰＵ）であり、例えば１個設けられている。ＣＰＵ２は命令を実行し、データを取得するときはアドレスを演算し、演算したアドレス及び制御信号を出力して外部にアクセスを要求する。本明細書において単にデータと称するときは命令及びオペランドを総称するものとする。
【００５６】
４はメインメモリ（ＭＭＲＹ）２０が保有するデータの一部をサブセットとして保有するセット・アソシアティブ・メモリのような連想メモリであり、ＣＰＵ２が最近利用したデータをリプレース可能に保持するキャッシュメモリ（Ｌ１ＣＭ）である。
【００５７】
５は第１プリフェッチバッファ（Ｌ１ＰＢ）、６は第２プリフェッチバッファ（Ｌ２ＰＢ）であり、キャッシュ非対象アドレス領域のデータを一時的に蓄積し、第１プリフェッチバッファ５は第２プリフェッチバッファ６が保持するデータの一部をサブセットとして一時的に保持するために利用され、第２プリフェッチバッファ６はメインメモリ２０が保持するデータの一部をサブセットとして一次的に保持するために利用される。第２プリフェッチバッファ６の記憶容量は第１プリフェッチバッファ５の記憶容量よりも大きい。
【００５８】
ＣＰＵ２の一部の処理を負担するアクセラレータとして、ハードウェアアクセラレータ（ＨＷＡａ）７、ハードウェアアクセラレータ（ＨＷＡｂ）８、及び液晶表示コントローラ（ＬＣＤＣ）９を有する。１０はＨＷＡａ７、ＨＷＡｂ８及びＬＣＤＣ９が処理するデータをプリフェッチしたり、それらが処理したデータを一時的に蓄積するインターコネクトバッファ（ＩＣＢ）１０である。
【００５９】
データ処理装置１には、周辺回路として、例えばグラフィックプロセッシングユニット（ＧＰＵ）１２、サウンドプロセッシングユニット（ＳＰＵ）１３、タイマ（ＴＭＲ）１５、シリアルインタフェース（ＳＩＦ）１６などが搭載されている。
【００６０】
外部メモリとして図示されたメインメモリ２０はメモリコントローラ（ＭＣＮＴ）１４に接続されて制御される。
【００６１】
オンチップバス（ＢＵＳ＿ＯＣ）１１はデータ処理装置１に搭載された各種回路モジュールを接続するためのバスを総称する。
【００６２】
図２にはＣＰＵ２からメインメモリ２０に至る主な構成の接続形態が例示される。オンチップバス１１はＣＰＵバス（ＢＵＳ＿ＣＰＵ）１１ａとシステムバス（ＢＵＳ＿ＳＹＳ）１１ｂに分けて図示されている。ＣＰＵバス１１ａにはＣＰＵ２を代表として、前記ＨＷＡａ７、ＨＷＡｂ８、ＬＣＤＣ９が接続される。ＣＰＵバス１１ａはＬ１ＣＭ４、Ｌ１ＰＢ５及びシステムバス１１ｂに接続され、Ｌ１ＰＢ５にはＬ２ＰＢ６が直列接続され、Ｌ２ＰＢ６はシステムバス１１ｂに接続される。システムバス１１ｂにはメモリコントローラ１４を代表として、前記ＧＰＵ，ＳＰＵ，ＴＭＲ，ＳＩＦが接続される。
【００６３】
メモリコントローラ１４は例えばデータ処理装置１の外に配置されたシンクロナスＤＲＡＭ等によって構成あれた大容量のメインメモリ２０に接続される。メモリコントローラ１４は、キャッシュミスを生じたＬ１ＣＭ４からのキャッシュリプレースやキャッシュフィルのためのデータアクセス、Ｌ２ＰＢ６によるデータプリフェッチのためのデータアクセス、及びＩＣＢ１０によるデータプリフェッチのためのデータアクセスなどに応答してメインメモリ２０の制御を行う。
【００６４】
図３にはＣＰＵ２のアドレス空間が例示される。ＣＰＵ２のアドレス空間は、Ｌ１ＣＭによるキャッシュの対象にされる領域（キャッシャブル領域）ＳＰ１、Ｌ１ＣＭによるキャッシュの対象とはされない領域（非キャッシャブル領域）ＳＰ２、Ｌ１ＣＭによるキャッシュの対象とはされず且つＬ１ＰＢ５及びＬ２ＰＢ６によるプリフェッチ対象にされる領域（プリフェッチ領域）ＳＰ３、及び各種制御レジスタが配置される領域（制御レジスタ領域）ＳＰ４に大別される。特に制限されないが、ここではＣＰＵバス１１ａ及びシステムバス１１ｂとしてスプリットトランザクションバスを想定し、各バスにはアクセスを要求するイニシエータからのリクエストとそれに応答するターゲットからのレスポンスのルーティングを制御するルータが含まれ、ルーティングの制御はアドレス及びイニシエータ並びにターゲットの識別子などに基づいて行われる。したがって、ＣＰＵ２のアクセス要求はそのアクセス対象アドレスに従ってアクセス対象回路に供給される。
【００６５】
図４にはＬ１ＰＢ５の具体例が示される。Ｌ１ＰＢ５は連想記憶を行う連想メモリ、例えばダイレクトマップ形式の連想メモリとして構成され、特に制限されないが、８個のエントリデータＥＴＲＹを格納可能なメモリ部３０を備える。エントリデータＥＴＲＹは、当該エントリデータの有効性を示すバリッドビットＶ、当該エントリデータが既に参照されたことを示すユーズドビットＵ、アドレスタグＴＡＧ及びデータＤＡＴから成る。データＤＡＴは例えば３２バイトのデータ(byte)とされる。例えばバイトアドレスを想定するとアドレスタグＴＡＧはデータＤＡＴのアドレス信号の最下位より５ビットを省略した残りの全アドレスビットに対応される値を有する。
【００６６】
アドレスタグＴＡＧはＣＰＵバス１１ａから供給されるアドレス信号の対応ビットと比較器（ＣＯＭＰ）３１により比較され、一致したときは当該アドレス信号の下位３ビットを用いて一致に係るエントリデータの３２バイトのデータＤＡＴをセレクタ（ＳＬＣＴ）３２で選択し、選択したデータＤＡＴの中から当該アドレス信号の下位３ビットを用いてセレクタ（ＳＬＣＴ）３３で４バイトのデータを選択し、これをＣＰＵバス１１ａに返す。
【００６７】
比較器３１による比較結果はプリフェッチ制御部（ＰＲＤ＿ＰＥＴＣ）３４に供給される。
【００６８】
プリフェッチ制御部３４は、不一致の比較結果を受けると、そのときＣＰＵ１１ａから供給された不一致に係るアドレス信号に基づいて不一致に係るデータをＬ２ＰＢ６から３２バイト単位でリードしてメモリ部３０に格納し、格納したデータの中から不一致に係る４バイトのデータをセレクタ３２，３３で選択してＣＰＵバス１１ａに供給する。プリフェッチ制御部３４は制御レジスタ（ＲＥＧ＿ＣＮＴ）３４ａを有し、制御レジスタ３４ａには、プリフェッチ制御部３４がＬ２ＰＢ６からメモリ部３０に読込むデータのサイズが設定され、特に制限されないが、設定値が“１”のときは３２バイト、“２”のときは６４バイトというように、３２バイトを基準単位としたときの倍数値が設定される。制御レジスタ（ＲＥＧ＿ＣＮＴ）３４ａに対する設定はＣＰＵ２がその動作プログラムに従ってプログラマブルに行うことができる。具体的には、不一致に係るアドレスのアドレスタグが例えばＡｔａｇ１で、制御レジスタ（ＲＥＧ＿ＣＮＴ）３４ａの設定値が１の場合には、アドレスタグＡｔａｇ１に対応される３２バイトのデータと当該アドレスタグＡｔａｇ１の値をタグＴＡＧとするエントリデータがメモリ部３０への格納対象とされる。また、不一致に係るアドレスのタグがＡｔａｇ１で、制御レジスタ（ＲＥＧ＿ＣＮＴ）３４ａの設定値が２の場合には、アドレスタグＡｔａｇ１に対応される３２バイトのデータと当該アドレスタグＡｔａｇ１の値をタグＴＡＧとするエントリデータと、アドレスタグＡｔａｇ１の次のアドレスタグＡｔａｇ２に対応される３２バイトのデータと当該アドレスタグＡｔａｇ２の値をタグＴＡＧとするエントリデータとがメモリ部３０への格納対象とされる。
【００６９】
プリフェッチ制御部３４は、一致の比較結果を受けると、制御レジスタ（ＲＥＧ＿ＣＮＴ）３４ａの設定値と、各エントリのバリッドビットＶとユーズドビットＵを参照し、バリッドビットＶが有効を意味し、かつユーズドビットＵが未参照を意味しているエントリの数が、制御レジスタ（ＲＥＧ＿ＣＮＴ）３４ａの設定値以下の場合には、Ｌ２ＰＢ６から最後に読み出したアドレスの次のアドレスを読み出し、メモリ部３０へ格納する。
【００７０】
比較器３１によるアドレス比較による比較結果が不一致になったときＬ２ＰＢ６から読込んだデータによって置き換えるエントリは、プリフェッチ制御部３４が各エントリのバリッドビットＶとユーズドビットＵとを参照して決定する。例えば、バリッドビットＶが無効を意味しているエントリ、バリッドビットが有効であってもユーズドビットＵが参照済みを意味しているエントリ、そして有効及び未参照のエントリの順に、制御レジスタ３４Ａで指定された数のエントリがリプレースの対象にされる。特に制限されないが、バリッドビットＶが無効というような同じ状態のエントリが複数個ある場合にその一部をリプレースの対象にしなければならない場合には、最後にリードまたは有効にされたのが最も古い（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ：ＬＲＵ）エントリから廃棄するというアルゴリズム、あるいはランダム論理のようなアルゴリズムを採用すればよい。
【００７１】
上記説明ではＣＰＵ２からのアクセス要求に応答するデータがメモリ部３０にない場合にＬ２ＰＢ６からメモリ部３０に読込むデータ量は制御レジスタ３４ａの設定値で決まるものとした。この構成を採用すれば、ＣＰＵ２が実行するプログラムに従って連想アクセスに際してＬ２ＰＢ６から読込むデータ量を容易に変更することができる。
【００７２】
読込みデータ量の制御はこれに限定されず、ＣＰＵ２によるアクセス履歴に基づいて読込みデータ量を決定してもよい。例えば、ＣＰＵ２からのアクセス要求が連続するアドレスタグに対するアクセスであるときその連続するアドレスタグ数を計数するカウンタをプリフェッチ制御部３４に設け、比較器３１による比較結果が不一致になったときのカウンタの計数値を前記レジスタ３４ａの設定値に代えて用いるようにする。或いはＣＰＵ２からの連続アドレスに対する順次４バイト単位のアクセス回数を計数するカウンタをプリフェッチ制御部３４に設け、比較器３１による比較結果が不一致になったとき、カウンタの計数値を１／８ (３ビットの右シフト)して得られる商に１を加算した値を前記レジスタ３４ａの設定値に代えて用いるようにする。これによれば、連想アクセスに際して前記Ｌ２ＰＢから読込むデータ量を実際のアクセス状況に則して自律的に変更することができる。
【００７３】
図５にはＬ２ＰＢ６の具体例が示される。Ｌ２ＰＢ６はメモリ部（ＭＲＹ＿Ｌ２ＰＢ）４０及びプリフェッチ制御部（ＣＮＴ＿Ｌ２ＰＢ）４１を有する。メモリ部４０はＬ１ＰＢ５のメモリ部３０よりも大きな記憶容量を有し、例えばＳＲＡＭによって構成される。
【００７４】
プリフェッチ制御部４１は、メモリコントローラ１４へリード要求を行ってメインメモリ２０が保持するデータの一部をサブセットとして所定のデータブロック（ＤＢＬＫ）単位でメモリ部４０に保持させる制御を行うと共に、Ｌ１ＰＢ５からのプリフェッチ要求に応答するデータをメモリ部４０からＬ１ＰＢ５に出力する制御を行う。プリフェッチ制御部４１は、その制御を行うために利用する制御レジスタ（ＲＥＧ＿ＣＮＴ）４１ａを有する。
【００７５】
制御レジスタ４１ａはアドレス変換データ（ＥＸＤ＿ＡＤＲ）、先読みデータ量（Ｄ＿ＰＦ）、及び保持データ量（Ｄ＿ＨＬＤ）がプログラマブルに設定される。先読みデータ量（Ｄ＿ＰＦ）、及び保持データ量（Ｄ＿ＨＬＤ）は、特に制限されないがＣＰＵ２によってプログラマブルに設定される。アドレス変換データ（ＥＸＤ＿ＡＤＲ）はＬ２ＰＢ６の動作状況に応じてプリフェッチ制御部４１が操作する。
【００７６】
先読みデータ量（Ｄ＿ＰＦ）は、前記メモリコントローラ１４への要求に従って前記メインメモリ２０から読込むデータ量を意味し、例えば３２バイトを単位データ（ＵＤＡＴ）とするときデータブロック（ＢＤＡＴ）のサイズを単位データ数によって示す。
【００７７】
保持データ量（Ｄ＿ＨＬＤ）はＬ１ＰＢ５によって参照された後もデータブロックとして保持するデータ量（Ｄ＿ＨＬＤ）を意味し、例えば単位データ数によって示す。即ち、保持データ量（Ｄ＿ＨＬＤ）はＬ１ＰＢ５からのアクセスがどこまで進んだら古いデータを破棄してよいかを示すことになる。
【００７８】
アドレス変換データ（ＥＸＤ＿ＡＤＲ）は、データブロックのスタートアドレスを規定するためにデータブロックが保持する先頭単位データのＣＰＵアドレス（メインメモリ２０の物理アドレス）とメモリ部４０のローカルアドレスとの関係を規定するアドレス変換対、及びデータブロック内において直前にＬ１ＰＢ５によって参照された単位データの次の単位データのローカルアドレスを指す参照ポインタとを有する。ＳＴＲＡは次にデータを格納すべきデータブロックの先頭アドレス、ＬＰＮＴＡは参照ポインタの値を意味する。
【００７９】
プリフェッチ制御部４１は、Ｌ１ＰＢ５からのプリフェッチ要求ＲＥＱ＿ＰＦＣを受けると、この要求に応ずるデータをメモリ部４０が保持しているか否かを判別し、保持しているときはメモリ部４０の読み出し制御を行って、そのプリフェッチ要求に応ずるデータをＬ１ＰＢ５に供給する制御を行う。
【００８０】
前記判別結果よりメモリ部４０が所要のデータを保持していない場合にはプリフェッチ制御部４１は、レスポンスＲＳＰによってＬ１ＰＢ５にエラーレスポンスを返すと共に、そのプリフェッチ要求ＲＥＱ＿ＰＦＣに応答するためのデータをメインメモリ２０からリードするために必要なリード要求ＲＥＱ＿ＲＤをシステムバス１１ｂに出力し、これに応答してメインメモリ２０から出力されるデータブロックをメモリ部４０に格納し、格納されたデータブロックのうち前記プリフェッチ要求ＲＥＱ＿ＰＦＣに応ずるデータをメモリ部４０から読み出して、そのプリフェッチ要求に応ずるデータをＬ１ＰＢ５に供給する制御を行う。
【００８１】
図６Ａ乃至図６Ｅに基づいてＬ２ＰＢ６の動作例を説明する。例えば、先読みデータ量（Ｄ＿ＰＦ）＝４、保持データ量（Ｄ＿ＨＬＤ）＝１が初期設定されているものとする。
【００８２】
図６ＡはＬ２ＰＢ６がまだデータを保持していない初期状態を示している。Ｌ１ＰＢ５からのプリフェッチ要求ＲＥＱ＿ＰＦＣに対してメモリ部４０が所要のデータを保持していない場合に、プリフェッチ制御部４１はそのプリフェッチ要求ＲＥＱ＿ＰＦＣによって与えられるメモリアドレスを基点に３２バイト単位の単位データを４単位分だけメインメモリ２０からメモリ部４０に取り込み、取り込まれたデータブロックのうち前記プリフェッチ要求ＲＥＱ＿ＰＦＣに応ずる例えば３２バイトの１単位のデータをメモリ部４０から読み出してＬ１ＰＢ５に供給する。
【００８３】
図６Ｂに例示されるように、この動作により、メモリ部４０では先頭アドレス図６ＡでのＳＴＲＡから単位データが領域ｎ＋０、ｎ＋１、ｎ＋１、ｎ＋３に４単位格納され、先頭データの領域ｎ＋０はＬ１ＰＢ５に参照済みとされたので、参照ポインタＬＰＮＴＡは次の単位データの領域ｎ＋１のローカルアドレスを指している。“hold”は参照後にもその単位データが保持されるべきデータであることを示し、“valid”はその単位データが有効であることを意味する。この動作においてアドレス変換データ（ＥＸＤ＿ＡＤＲ）にあるＳＴＲＡとＬＰＮＴＡが更新される。
【００８４】
図６ＣにはＬ１ＰＢ５からの新たなプリフェッチ要求ＲＥＱ＿ＰＦＣに対してメモリ部４０が所要のデータを保持している場合の動作状態が例示される。例えば新たなプリフェッチ要求ＲＥＱ＿ＰＦＣが領域ｎ＋１の単位データに対するプリフェッチを要求するものである場合、プリフェッチ制御部４１はその領域ｎ＋１の単位データをメモリ部４０から読み出してＬ１ＰＢ５に供給する。これによって参照ポインタＬＰＮＴＡ１は領域ｎ＋２を指し、領域ｎ＋０の単位データは無効となる。“invalid”はその単位データが無効であることを意味する。即ち、ここでは保持データ量（Ｄ＿ＨＬＤ）＝１であるから、直前に参照された単位領域ｎ＋１よりも前に参照された領域ｎの単位データは無効にされる。加えて“ｖａｌｉｄ”及び“ｈｏｌｄ”のブロック数がＤ＿ＰＦで設定された値よりも小さくなるため、単位データを１単位分だけメインメモリ２０から読み出し、領域ｎ＋４に格納する。この動作において、ＳＴＲＡが領域ｎ＋５を指すように更新される。
【００８５】
図６CにはＬ１ＰＢ５からの更に新たなプリフェッチ要求ＲＥＱ＿ＰＦＣに対してメモリ部４０が所要のデータを保持している場合の動作状態が例示される。例えば新たなプリフェッチ要求ＲＥＱ＿ＰＦＣが領域ｎ＋１の単位データに対するプリフェッチを要求するものである場合、プリフェッチ制御部４１はその領域ｎ＋１の単位データをメモリ部４０から読み出してＬ１ＰＢ５に供給する。この場合、領域ｎ＋１は“ｈｏｌｄ”領域であるため、これによって参照ポインタＬＰＮＴＡは更新されない。また“ｖａｌｉｄ”及び“ｈｏｌｄ”のブロック数とＤ＿ＰＦの設定値の関係も変わらないため、メインメモリ２０から新たにデータを読み出すこともなく、ＳＴＲＡの値も更新されない。
【００８６】
図６ＤはＬ１ＰＢ５からのプリフェッチ要求が領域ｎ＋４まで進み、Ｄ＿ＰＦの設定にしたがって領域ｎ＋７まで先読みデータが格納された場外を例示している。
【００８７】
図６Ｅはこの後更に、Ｌ１ＰＢ５から領域ｎ＋５に対するプリフェッチ要求があり、プリフェッチ制御部４１は１単位データを新たにメインメモリ２０からメモリ部４０に取り込み、領域ｎ＋５に応ずる例えば３２バイトの１単位のデータをメモリ部４０から読み出してＬ１ＰＢ５に供給した状態が示される。この動作において、メモリ部４０では、領域ｎ＋０のデータは無効（“invalid”）とされているので、その領域ｎ＋０を新たなブロックデータの格納に割当てた。
【００８８】
図７にはＩＣＢ１０の具体例が示される。アクセラレータ用バッファとしてのＩＣＢ１０はメモリ部（ＭＲＹ＿ＩＣＢ）５０、バッファ制御部（ＣＮＴ＿ＩＣＢ）５１及び調停回路（ＡＲＢＴ）５２を有する。メモリ部５０は例えばＳＲＡＭによって構成される。
【００８９】
調停回路（ＡＲＢＴ）５２はＨＷＡａ７、ＨＷＡｂ８、又はＬＣＤＣ９からのアクセス要求をその優先度に従って調停し、アクセス要求の競合を回避する。優先度は、特に制限されないが、アクセス要求の最も早いものに高い優先度を与える方式、或いはＨＷＡａ７、ＨＷＡｂ８、又はＬＣＤＣ９に予め優先度を設定する方式等がある。
【００９０】
ＩＣＢ１０は、ＨＷＡａ７、ＨＷＡｂ８、又はＬＣＤＣ９からのアクセス要求に応答するデータを保有していないときメモリコントローラ１４にＨＷＡａ７、ＨＷＡｂ８、又はＬＣＤＣ９からの要求にしたがってメインメモリ２０をアクセス制御させるリードバッファモードと、ＨＷＡａ７、ＨＷＡｂ８、又はＬＣＤＣ９からのデータを順次蓄積するライトバッファモードと、ＨＷＡａ７、ＨＷＡｂ８、及びＬＣＤＣ９の内の一つのアクセラレータからの蓄積データを他のアクセラレータに転送するインターコネクトバッファモードとを有する。それらの動作モードの設定は、特に制限されないが、ＣＰＵ２又はＣＰＵ２の指示に従ってＨＷＡａ７、ＨＷＡｂ８、又はＬＣＤＣ９が行えばよい。バッファ制御部５１はＨＷＡａ７、ＨＷＡｂ８、及びＬＣＤＣ９のそれぞれに対応して前記制御レジスタ４１ａと同様の制御レジスタ（ＲＥＧ＿ＣＮＴ）５１ａ、５１ｂ、５１ｃを有し、メモリ部５０のローカルアドレスとＣＰＵのアドレス空間上のアドレスとの対応およびデータ読込み量やデータ保持量がプログラマブルに設定可能にされている。
【００９１】
図８にはリードバッファモードによる動作例が示される。リードバッファモードには例えば前記Ｌ２ＰＢのプリフェッチ制御回路４１による制御と同じ制御内容を採用することができる。この場合には、ＨＷＡａ７、ＨＷＡｂ８、及びＬＣＤＣ９のそれぞれに対応する前記制御レジスタ４１ａと同様の制御レジスタ（ＲＥＧ＿ＣＮＴ）５１ａ、５１ｂ、５１ｃを用いて、アクセス要求が受け付けられたアクセラレータからの要求に対してデータブロックのプリフェッチやプリフェッチしたデータの出力を行う。
【００９２】
ライトバッファモードでは図９に例示されるように、ＨＷＡａ７、ＨＷＡｂ８、又はＬＣＤＣ９の一つのアクセラレータがその処理データをメモリ部５０に書き込む。書込み量は当該アクセラレータに対応する制御レジスタの設定値（Ｄ＿ＰＦ）に従って決定され、また、データが書込まれるローカルメモリアドレスとその処理データを本来書き込むべきＣＰＵアドレス空間上のメモリアドレスとの関係は、当該アクセラレータに対応する制御レジスタのＥＸＤ＿ＡＤＲに記録される。
【００９３】
インターコネクトバッファモードではライトモードで書込まれたデータがＨＷＡａ７、ＨＷＡｂ８、又はＬＣＤＣ９の一つのアクセラレータに転送される。転送するときは当該アクセラレータに対応する制御レジスタの内容を利用してメモリ部５０から転送元データを読み出す。
【００９４】
上記実施の形態１によれば以下の作用効果を得る。
【００９５】
〔１〕小記憶容量のＬ１ＰＢ５はＬ２ＰＢ６よりも高速なメモリ動作を行うことができ、大きな記憶容量のＬ２ＰＢ６には、低速であっても、纏まった大きなデータを蓄積することができる。したがって、Ｌ１ＰＢ５は先読み予測が外れてもＬ２ＰＢ６から必要なデータを取得できる可能性が高くなり、メインメモリ２０から取得する場合のように大きなフィルペナルティを負う回数が減る。Ｌ１ＰＢ５はＣＰＵ２が行うアクセスパタンに応じて先読みデータのデータ量を設定可能にされるから、ＣＰＵ２のアクセスパタンが変わっても先読み予測が外れる確率を低減することができる。それに応じてＬ２ＰＢ６も制御レジスタ４１ａの設定に従って先読みデータのデータ量（Ｄ＿ＰＦ）と参照済みの先読みデータの保持量（Ｄ＿ＨＬＤ）を可変に設定可能にされるから、Ｌ１ＰＢ５の先読み予測が外れたときに重ねてＬ２ＰＢ６の先読み予測が外れる確率も低減することができる。
【００９６】
〔２〕ＣＰＵ２が行うデータアクセスのパタンが一方向に進む場合には、先読み量を大きくすることで必要な時期までにデータの先読みを完了している確率を上げ、逆にアクセスパタンが行きつ戻りつするような場合には、保持量を大きくし先読み量を絞ることで予測ミスが起こる確率を下げることが出来る。
【００９７】
これにより、ＣＰＵ２が行うデータアクセスのパタンに柔軟に対応可能となり、ＣＰＵ２によるデータアクセスの高速化若しくは先読み予測の外れによるペナルティーの削減を容易に実現することができる。
【００９８】
〔３〕したがって、ＣＰＵ２が行うアクセスパタンに適応して、ＣＰＵ２によるデータアクセスの高速化若しくは先読み予測の外れによるペナルティーの削減を容易に実現することができる。
【００９９】
〔４〕ＣＰＵ２に接続されたＬ１ＣＭ４を採用し、Ｌ１ＰＢ５はＬ１ＣＭ４によるキャッシュ対象アドレス範囲外のアドレスに対するアクセス要求に応答してメモリ動作を行うから、キャッシュ対象アドレス範囲のアクセスに対してはＬ１ＣＭ４を用いてＣＰＵ２によるアクセスのレイテンシ縮小を達成することができる。
【０１００】
〔５〕プリフェッチ制御部３４は、連想アクセスに際してＬ２ＰＢ６から読込むデータ量を制御レジスタ３４ａの設定値に基づいて決定し、制御レジスタ３４ａはＣＰＵ２によって可変可能に値が設定されるから、ＣＰＵ２が実行するプログラムに従って連想アクセスに際してＬ２ＰＢ６から読込むデータ量を容易に変更することができる。
【０１０１】
〔６〕プリフェッチ制御部３４は、連想アクセスに際してＬ２ＰＢ６から読込むデータ量をＣＰＵ２によるアクセス履歴に基づいて決定することにより、連想アクセスに際してＬ２ＰＢから読込むデータ量を実際のアクセス状況に則して自律的に変更することができる。
【０１０２】
〔７〕プリフェッチ制御部４１は、メインメモリ２０の制御に際して前記メインメモリ２０から読込むデータ量（Ｄ＿ＰＦ）及び参照された後も保持するデータ量（Ｄ＿ＨＬＤ）を制御レジスタ４１ａの設定値に基づいて決定し、制御レジスタ４１ａはＣＰＵ２によって可変可能に値が設定されるから、Ｌ２ＰＢ６がメインメモリ２０から読込むデータ量及び参照された後も保持するデータ量をＣＰＵ２が実行するプログラムに従って容易に変更することができる。
【０１０３】
〔８〕プリフェッチ制御部４５１は、メインメモリ２０の制御に際してメインメモリ２０から読込むデータ量を読込みデータ量の履歴に基づいて決定し、メインメモリ２０の制御に際して前記メインメモリ２０から読込んだデータのうち参照された後も保持するデータ量を制御レジスタ４１ａの設定値に基づいて決定し、制御レジスタ４１ａはＣＰＵ２によって可変可能に値が設定される構成を採用してもよい。この場合には、連想アクセスに際してメインメモリ２０から読込むデータ量を実際のアクセス状況に則して自律的に変更することができ、メインメモリ２０から読込んで参照された後も保持するデータの保持量をＣＰＵ２が実行するプログラムに従って容易に変更することが可能になる。
【０１０４】
〔９〕リードバッファモード、ライトバッファモード、及びインターコネクトバッファモードを有するＩＣＢ１０を採用することにより、ＩＣＢ１０はアクセラレータＨＷＡａ，ＨＷＡｂ，ＬＣＤＣが要求するデータの取得を効率化させることができる。
【０１０５】
〔１１〕本実施の形態に係るデータ処理装置１は携帯電話、デジタル家電などのような、画像や音声などのマルチメディア処理を必要とする製品に適用することができる。画像や音声のコーデックのようなマルチメディア処理は、チップ開発時点で規格が固まっているものに関しては、専用のハードウェアアクセラレータとして実装するのが、性能や電力の面から望ましいが、チップ開発後に新たな規格が出現する場合もあり、ＣＰＵ２上で動作するソフトウェア処理によって対応できるようにする観点に立つことが望ましい。ＣＰＵ２のソフトウェアで処理する場合、メインメモリ２０にある処理対象データを、どのようにＣＰＵ２０の近傍のメモリに持ってくるかがデータ処理性能を向上させる上で重要になるが、マルチメディア処理では対象データの性質上、キャッシュメモリＬ１ＣＭ４を使うのは効率がよくない場合が多い。それは、画像や音声などのマルチメディアデータはストリーム状になっているストリームデータとして供給されて処理される場合が多く、空間的局所性は高いが、時間的局所性は高くない（一度参照したデータをある程度時間が経ってからまた参照することはあまりない）ためである。このような理由により、マルチメディア処理に関しては、キャッシュメモリＬ１ＣＭ４とは別に、処理の進行に応じてハードウェアでデータを先読みする仕組みを持った、Ｌ１ＰＢ，Ｌ２ＰＢの直列的な構成を採用することが優れている。
【０１０６】
〔１２〕マルチメディア処理で多用される、ストリームデータを処理する際に、アクセス履歴に基づいたプリフェッチを自動実行するようにすれば、実効的なメモリアクセスレイテンシが小さくなり、処理性能が向上する。ストリームデータを保持する場所をＬ１ＣＭ４とは別のＬ１ＰＢ５，Ｌ２ＰＢ６とすることで、Ｌ１ＣＭ４のエントリデータの多くがダーティーになってキャッシュヒット率が低下する事態の発生も未然に防止することができる。
【０１０７】
〔１３〕大容量のＬ２ＰＢ６がＬ１ＰＢ５の下位側に配置されているため、Ｌ１ＰＢ５の容量は小さくてよく、ＣＰＵ２からのアクセスレイテンシを小さくでき、典型的にはノーウェイトでアクセスすることが可能になる。
【０１０８】
〔１４〕Ｌ２ＰＢ６の記憶容量を大容量にできるので、かなり先の方まで先行してプリフェッチしておくことが可能である。これは、Ｌ２ＰＢ６によるプリフェッチ処理が必ずしも高優先度で処理されなくてもよいということであり、システム全体のメモリアクセスの効率化に寄与する。
【０１０９】
〔１５〕ＣＰＵ２からの細切れのアクセス（例えばワード単位）を、Ｌ１ＰＢ５のエントリサイズ（例えば３２バイト）単位にまとめてＬ２ＰＢ６にアクセスすることで、データ処理装置１のオンチップバスＢＵＳ＿ＯＣにおける転送効率を向上させることができる。
【０１１０】
〔１６〕Ｌ２ＰＢ６は大容量故にある程度の幅を持ってデータを保持できるので、例えば単純なストリームアクセスではなく、ある範囲でもってアクセス対象のアドレスが行ったり来たりするようなアクセスパタンでも、メインメモリ２０からデータを取り直す必要がなく、アクセスの効率化が可能である。例えばＭＰＥＧなどに準拠した画像処理におけるマクロブロック単位の処理のためのデータアクセスに対する効率化を図ることが容易になる。
【０１１１】
〔１７〕上記データ処理装置１は、アクセス対象全体としては特定範囲のデータということが明確化されているが、その中でのアクセス順はランダム性が高いというようなデータアクセス形態を採るデータ処理に有効である。これは、Ｌ２ＰＢ６は大容量故に対象を丸ごとプリフェッチしておくことができ、かつＬ１ＰＢ５にミスしたケースのレイテンシがメインメモリ２０から直接データリードを行う場合に比べて小さいためである。
【０１１２】
《第２の実施の形態》
第２の実施の形態について詳述する。図１０には第２の実施の形態に係るデータ処理装置の機能部ロック構成が例示される。データ処理装置は、特に制限されないが、単一チップに形成されたシステムオンチップの半導体集積回路、複数個のデータ処理デバイスなどが搭載されて単一ケーシングに封止された半導体集積回路モジュール、又は配線基板に複数個のデータ処理デバイス及びメモリデバイス等が実装されて構成されるデータ処理カードによって構成される。ここでは、システムオンチップの半導体集積回路（ＳＯＣ）を一例として説明する。
【０１１３】
図１のデータ処理装置１との相違点はＬ２ＰＢ６をＩＣＢ１０と兼用させた点であり、図１０ではＬ１ＰＢ５、ＨＷＡａ、ＨＷＡｂ、ＬＣＤＣのそれぞれに接続されたプリフェッチバッファ（Ｌ２ＰＢ＆ＩＣＢ）１０Ａを採用した。
【０１１４】
図１１にはプリフェッチバッファ１０Ａの一例が示される。プリフェッチバッファ１０Ａはメモリ部（ＭＲＹ＿Ｌ２ＰＢ＆ＩＣＢ）６０、バッファ制御部（ＣＮＴ＿Ｌ２ＰＢ＆ＩＣＢ）６１及び調停回路（ＡＲＢＴ）６２を有する。メモリ部６０は例えばＳＲＡＭによって構成される。
【０１１５】
調停回路（ＡＲＢＴ）６２はＬ１ＰＢ５、ＨＷＡａ７、ＨＷＡｂ８、又はＬＣＤＣ９からのアクセス要求をその優先度に従って調停し、アクセス要求の競合を回避する。優先度は、特に制限されないが、アクセス要求の最も早いものに高い優先度を与える方式、或いはＬ２ＰＢ５、ＨＷＡａ７、ＨＷＡｂ８、又はＬＣＤＣ９に予め優先度を設定する方式等がある。
【０１１６】
プリフェッチバッファ１０Ａは、Ｌ１ＰＢ５がＣＰＵ２からのアクセス要求に応答するデータを保有していないときＬ１ＰＢ５からの要求にしたがってメモリ動作を行うプリフェッチモード及び前記アクセラレータＨＷＡａ、ＨＷＡｂ、又はＬＣＤＣからの要求に従ってメモリ動作を行うアクセラレータモードを有する。
【０１１７】
バッファ制御部６１は、プリフェッチモード及びアクセラレータモードによる動作を制御する。
【０１１８】
バッファ制御部６１は、Ｌ１ＰＢ５からのアクセス要求がＡＲＢＴ６２で受け付けられたときプリフェッチモードで動作し、プリフェッチモードによる動作制御のためにバッファ制御部６１は制御レジスタ（ＲＥＧ＿ＣＮＴ）６１ａを有する。プリフェッチモードによる動作制御の内容は図５及び図６で説明したのと同様にレジスタ設定値やＣＰＵ２によるアクセス履歴に基づいて行えばよく、その詳細な説明は省略する。
【０１１９】
アクセラレータモードとして、ＨＷＡａ７、ＨＷＡｂ８、又はＬＣＤＣ９からのアクセス要求に応答するデータを保有していないときメモリコントローラ１４にＨＷＡａ７、ＨＷＡｂ８、又はＬＣＤＣ９からの要求にしたがってメインメモリ２０をアクセス制御させるリードバッファモードと、ＨＷＡａ７、ＨＷＡｂ８、又はＬＣＤＣ９からのデータを順次蓄積するライトバッファモードと、ＨＷＡａ７、ＨＷＡｂ８、及びＬＣＤＣ９の内の一つのアクセラレータからの蓄積データを他のアクセラレータに転送するインターコネクトバッファモードとを有する。それらの動作モードの設定は、特に制限されないが、ＣＰＵ２又はＣＰＵ２の指示に従ってＨＷＡａ７、ＨＷＡｂ８、又はＬＣＤＣ９が行えばよい。バッファ制御部６１はＨＷＡａ７、ＨＷＡｂ８、及びＬＣＤＣ９のそれぞれに対応して前記制御レジスタ４１ａと同様の制御レジスタ（ＲＥＧ＿ＣＮＴ）６１ｂ、６１ｃ、６１ｄを有し、メモリ部６０のローカルアドレスとＣＰＵのアドレス空間上のアドレスとの対応およびデータ読込み量やデータ保持量がプログラマブルに設定可能にされている。
【０１２０】
リードバッファモードには例えばＬ２ＰＢ６のプリフェッチ制御回路４１による制御と同じ制御内容を採用することができる。この場合には、ＨＷＡａ７、ＨＷＡｂ８、及びＬＣＤＣ９のそれぞれに対応して前記制御レジスタ４１ａと同様の制御レジスタ（ＲＥＧ＿ＣＮＴ）６１ｂ、６１ｃ、６１ｄを用いて、アクセス要求が受け付けられたアクセラレータからの要求に対してデータブロックのプリフェッチやプリフェッチしたデータの出力を行う。その処理内容は図８で説明した内容と実質同じである。
【０１２１】
ライトバッファモードでは図９に例示されるように、ＨＷＡａ７、ＨＷＡｂ８、又はＬＣＤＣ９の一つのアクセラレータがその処理データをメモリ部６０に書き込む。書込み量は当該アクセラレータに対応する制御レジスタの設定値（Ｄ＿ＰＦ）に従って決定され、また、データが書込まれるローカルメモリアドレスとその処理データを本来書き込むべきＣＰＵアドレス空間上のメモリアドレスとの関係は、当該アクセラレータに対応する制御レジスタのＥＸＤ＿ＡＤＲに記録される。その処理内容は図９で説明した内容と実質同じである。
【０１２２】
インターコネクトバッファモードではライトモードで書込まれたデータがＨＷＡａ７、ＨＷＡｂ８、又はＬＣＤＣ９の一つのアクセラレータに転送される。転送するときは当該アクセラレータに対応する制御レジスタの内容を利用してメモリ部６０から転送元データを読み出す。
【０１２３】
特にプリフェッチバッファ１０Ａを採用した場合には、図１２に例示されるように、アクセラレータによる処理結果をライトバッファモードでメモリ部６０に格納した後、そのデータを用いるＣＰＵ２のデータ処理においてＬ１ＰＢ５はプリフェッチモードで必要なデータをメモリ部６０から取得することが可能になる。
【０１２４】
第２の実施の形態によれば以下の作用効果を奏する。
【０１２５】
〔１〕プリフェッチバッファ１０Ａをアクセラレータ用のバッファと兼用させても、実施の形態１と同様に、ＣＰＵ２が行うアクセスパタンに適応してＣＰＵ２によるデータアクセスの高速化若しくは先読み予測の外れによるペナルティーの削減を容易に実現することができる。実施の形態１に対して、プリフェッチバッファ１０Ａは、Ｌ１ＰＢ５からのからの要求に応答する動作がアクセラレータからの要求に応答する動作によって待たされる場合があるが、回路の兼用により回路規模の縮小が実現される。その他、第1の実施の形態と同様に作用し、奏効する。
【０１２６】
〔２〕動画の処理など、アクセラレータを連携して行うような処理の一部を、ＣＰＵ２で行うようにした場合に、アクセラレータが生成したデータを、ＣＰＵ２が読み出す際に、メインメモリ２０を経由することがなくなり、データ処理性能が向上する。メインメモリ２０の帯域節約になり、換言すれば、同じ帯域でより多くの処理を行えるようになるからである。ある一連の処理の一部をＣＰＵ２で行うことは、チップ開発時には存在しなかったコーデックを後からサポートする必要が生じた際などによく見られることで、この処理性能の向上は、製品の競争力向上に有利である。
【０１２７】
《第３の実施の形態》
第３の実施の形態について詳述する。第３の実施の形態では、Ｌ１ＰＢ５を、複数のプロセスが時分割多重で使用できるよう、複数チャネル化する。即ち、別プロセスはＬ１ＰＢ５の別チャネルを使うようにすることで、データの衝突を防ぐことが可能になる。Ｌ１ＰＢを複数セット持つと高速性が損なわれるので、Ｌ１ＰＢ５自体は１組とし、タグＴＡＧにチャネル番号（ｃｈ＃）を付加する。チャネル番号の与え方は、アドレスの上位のビットとする。
【０１２８】
図１３にはＬ１ＰＢを１６チャネルに分割し、各チャネルに１６ＭＢ（０ｘ０１００００００）の領域を割り当てた場合のアドレスマップが例示される。複数プロセスが時分割多重でＬ１ＰＢ5を使用する場合には、異なる１６ＭＢを使用するようにする。
【０１２９】
図１４にはチャネル番号（ｃｈ＃）を付加したＬ１ＰＢ５Ａが例示される。チャネル番号ｃｈ＃はアドレスに上位ビットであるから、図ではチャネル番号ｃｈ＃をタグＴＡＧとは分離して示されているが、実質的にチャネル番号ｃｈ＃はタグＴＡＧの上位側ビットを意味するものである。比較器３１Ａはアクセスアドレスの上位側をチャネル番号ｃｈ＃と比較し、その下位側をタグＴＡＧと比較する。これにより、複数のプロセスが別々のチャネルを試用した際に、別のプロセスが使用中のデータを誤ってアクセスしてしまうことを防ぐことができる。
【０１３０】
プロセススイッチ時には、チャネル番号が変わるので、Ｌ１ＰＢ５Ａ内の他のプロセス用のデータはヒットせず、Ｌ２ＰＢ６からフィルし直すことが必要意になる。
【０１３１】
Ｌ２ＰＢ６は大容量であるので、複数チャネルのデータを同時に格納できる構成にするのがよい。具体的には、プリフェッチ対象の物理アドレスなどを設定する制御レジスタ（ＲＥＧ＿ＣＮＴ）をチャネル毎に備えるようにする。加えてＬ１ＰＢ５ＡからＬ２ＰＢ６へのアクセスにチャネル番号を付与することで、Ｌ２ＰＢ６側でもプロセス毎に独立したプリフェッチ動作を行うことが可能になる。
【０１３２】
また、第３の実施の形態では、時分割多重で走行する二つ以上のプロセスが、それぞれプリフェッチバッファ機能を使用する場合には、コンテキストスイッチの度にプリフェッチバッファを初期化する必要がなくなり、システム全体の処理性能が向上する。
【０１３３】
《第４の実施の形態》
第４の実施の形態４は第３の実施の形態の変形例であり、Ｌ１ＰＢのチャネル番号ｃｈ＃を仮想アドレスの一部として与えるのではなく、ｃｈ＃にはＯＳ（オペレーティングシステム）がＭＭＵを制御する際にプロセスＩＤとして使用するＡＳＩＤ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  ＩＤ：アドレス空間識別子）のビットの全部または一部であるａｓｉｄを利用するようにしたものである。
【０１３４】
図１５に例示されるＬ１ＰＢ５Ｂでは、各エントリデータにはタグＴＡＧに加えてそのタグのアドレスを用いて実行されるプロセスのＡＳＩＤに対応されるａｓｉｄが追加される。Ｌ１ＰＢ５ＢにはＣＰＵ２からのアクセスに際してアドレスに加えてＡＳＩＤの情報が供給され、比較器３１ＢはＣＰＵ２から供給されたアドレス及びＡＳＩＤをタグＴＡＧ及びａｓｉｄと比較することで、各プロセス毎に独立した（別チャネルの）プリフェッチバッファ機能を提供できるようになる。
【０１３５】
第３の実施の形態に比べて、プリフェッチバッファをチャネルごとに分割しなくてよいため、最大サイズを大きく取れるというメリットがある。各プロセスが、自分がプリフェッチバッファのチャネルの何番を使用するかを意識しなくてよい。代わりにＯＳ等のシステムソフトウェアで管理すればよい。
【０１３６】
《第５の実施の形態》
図１６に例示されるようにＬ１ＣＭに直列に第２のキャッシュメモリ（Ｌ２ＣＮ）１７を配置してもよい。
Ｌ２ＣＭ１７はＬ１ＣＭ４よりもキャッシュエントリ数の多い構成にされ、例えばセット・アソシアティブ・キャッシュメモリによって構成される。キャッシュメモリについても、高速アクセスと大きな容量とを両立させることが可能になる
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１３７】
例えば、メインメモリはデータ処理装置にオンチップされていてもよい。データ処理装置１は仮想記憶を採用し、メモリマネージメントユニット（ＭＭＵ）を用いて論理アドレスを物理アドレスに変換すると共にメモリ保護を行っても良い。Ｌ１ＰＢ５はダイレクトマップの連想メモリに限定されない。セット・アソシアティブ・キャッシュメモリを採用することも可能である。
【０１３８】
Ｌ１ＰＢ５のプリフェッチを自動予測プリフェッチのみとし、Ｌ２ＰＢ６のプリフェッチをレジスタ制御プリフェッチのみとすることも可能である。Ｌ１ＰＢ５及びＬ２ＰＢ６を共に自動予測プリフェッチだけとすることも可能である。プリフェッチバッファを使うプログラムが、あらかじめＬ２ＰＢ６の制御レジスタを設定しておかなくてよい。
【０１３９】
Ｌ１ＰＢ５及びＬ２ＰＢ６を共にレジスタ制御プリフェッチに統一してもよい。プリフェッチが完全にプログラマの指示通りに行われるので、プリフェッチ予測ミスによる無駄なトラフィックが発生しない。
【０１４０】
Ｌ１ＰＢ５の全部または一部を、通常の内蔵メモリとしても使用可能な構成とし、制御レジスタあるいはアクセスに使用するアドレスで、プリフェッチバッファとして動作するか、通常の内蔵メモリとして使用するかを選択可能にすることも可能である。ＣＰＵのスクラッチパッドとして高速なメモリが必要な場合に、Ｌ１ＰＢ５とは別に専用の内蔵メモリを用意することなく、必要な機能を提供することができる。
【０１４１】
プリフェッチバッファやキャッシュメモリの直列段数は２段に限定されない。
【符号の説明】
【０１４２】
１  データ処理装置（ＳＯＣ）
２  中央処理装置（ＣＰＵ）
４  キャッシュメモリ（Ｌ１ＣＭ）
５、５Ａ、５Ｂ  第１プリフェッチバッファ（Ｌ１ＰＢ）
６  第２プリフェッチバッファ（Ｌ２ＰＢ）
７、８  ハードウェアアクセラレータ（ＨＷＡａ、ＨＷＡｂ）
９  液晶表示コントローラ（ＬＣＤＣ）
１０  インターコネクトバッファ（ＩＣＢ）
１１    オンチップバス（ＢＵＳ＿ＯＣ）
１１ａ  ＣＰＵバス（ＢＵＳ＿ＣＰＵ）
１１ｂ  システムバス（ＢＵＳ＿ＳＹＳ）
１２  グラフィックプロセッシングユニット（ＧＰＵ）
１３  サウンドプロセッシングユニット（ＳＰＵ）
１５  タイマ（ＴＭＲ）
１６  シリアルインタフェース（ＳＩＦ）
２０  メインメモリ（ＭＭＲＹ）
３０  メモリ部
ＥＴＲＹ  エントリデータ
Ｖ  バリッドビット
Ｕ  ユーズドビット
ＴＡＧ  アドレスタグ
ＤＡＴ  データＤＡＴ
３１  比較器（ＣＯＭＰ）
３２，３３  セレクタ（ＳＬＣＴ）
３４  プリフェッチ制御部（ＰＲＤ＿ＰＥＴＣ）
３４ａ  制御レジスタ（ＲＥＧ＿ＣＮＴ）
４０  メモリ部（ＭＲＹ＿Ｌ２ＰＢ）
４１  プリフェッチ制御部（ＣＮＴ＿Ｌ２ＰＢ）
ＤＢＬＫ  データブロック
ＵＤＡＴ  単位データ
ＥＸＤ＿ＡＤＲ  アドレス変換データ
Ｄ＿ＰＦ  先読みデータ量
Ｄ＿ＨＬＤ  保持データ量
５０  メモリ部（ＭＲＹ＿ＩＣＢ）
５１  バッファ制御部（ＣＮＴ＿ＩＣＢ）
５２  調停回路（ＡＲＢＴ）
５１ａ〜５１ｃ  制御レジスタ（ＲＥＧ＿ＣＮＴ）
１０Ａ  プリフェッチバッファ（Ｌ２ＰＢ＆ＩＣＢ）
６０  メモリ部（ＭＲＹ＿Ｌ２ＰＢ＆ＩＣＢ）
６１  バッファ制御部（ＣＮＴ＿Ｌ２ＰＢ＆ＩＣＢ）
６２  調停回路（ＡＲＢＴ）
６１ａ〜６１ｄ  制御レジスタ（ＲＥＧ＿ＣＮＴ）
ｃｈ＃  チャネル番号
【図１】
2011154528.tif 000003
【図２】
2011154528.tif 000004
【図３】
2011154528.tif 000005
【図４】
2011154528.tif 000006
【図５】
2011154528.tif 000007
【図６Ａ】
2011154528.tif 000008
【図６Ｂ】
2011154528.tif 000009
【図６Ｃ】
2011154528.tif 000010
【図６Ｄ】
2011154528.tif 000011
【図６Ｅ】
2011154528.tif 000012
【図７】
2011154528.tif 000013
【図８】
2011154528.tif 000014
【図９】
2011154528.tif 000015
【図１０】
2011154528.tif 000016
【図１１】
2011154528.tif 000017
【図１２】
2011154528.tif 000018
【図１３】
2011154528.tif 000019
【図１４】
2011154528.tif 000020
【図１５】
2011154528.tif 000021
【図１６】
2011154528.tif 000022