(57)【要約】【課題】各データ処理回路と大容量メモリとの間のメモリアクセスを最適化する。【解決手段】  データ処理エンジンとメモリバスとの間で転送されるデータを一時的に保持するメモリと、前記データ処理エンジンに対するデータの転送を制御する入出力制御部と、前記入出力制御部と前記メモリとの間のデータ転送及び前記メモリと前記メモリバスとの間のデータ転送を制御すると共に、前記メモリの使用容量を第１の設定値に基づいて規定するメモリ制御部と、メモリバスに対するコマンドを保持するコマンドレジスタを有し、前記メモリバスに対するコマンドの発行を制御すると共に、前記コマンドレジスタに保持可能なコマンド数を第２の設定値に基づいて規定するメモリバスコマンド制御部とを具備したことを特徴とする。【選択図】図２
2009003893.tif 000002
【特許請求の範囲】
【請求項１】
データ処理エンジンとメモリバスとの間で転送されるデータを一時的に保持するメモリと、
前記データ処理エンジンに対するデータの転送を制御する入出力制御部と、
前記入出力制御部と前記メモリとの間のデータ転送及び前記メモリと前記メモリバスとの間のデータ転送を制御すると共に、前記メモリの使用容量を第１の設定値に基づいて規定するメモリ制御部と、
コマンドを保持するコマンドレジスタを有し、前記メモリバスに対するコマンドの発行を制御すると共に、前記コマンドレジスタに保持可能なコマンド数を第２の設定値に基づいて規定するメモリバスコマンド制御部とを具備したことを特徴とするデータ転送装置。
【請求項２】
複数のデータ処理エンジンに対応した複数の領域を有し、前記複数のデータ処理エンジンとメモリバスとの間で転送されるデータを各データ処理エンジンに対応した領域に一時的に保持するメモリと、
前記複数のデータ処理エンジンに対するデータの転送を夫々制御する複数の入出力制御部と、
前記複数の入出力制御部と前記メモリとの間のデータ転送及び前記メモリと前記メモリバスとの間のデータ転送を制御すると共に、前記メモリの各領域毎の使用容量を各領域毎の第１の設定値に基づいて規定するメモリ制御部と、
コマンドを保持するコマンドレジスタを有し、前記メモリバスに対するコマンドの発行を制御すると共に、前記コマンドレジスタに保持可能なコマンド数を第２の設定値に基づいて規定するメモリバスコマンド制御部とを具備したことを特徴とするデータ転送装置。
【請求項３】
前記入出力制御部は、前記データ処理エンジンと前記メモリとの間で転送するデータを一時的に保持するバッファ回路を備え、
前記バッファ回路に保持されるデータ量に従って、前記データ処理エンジンに対するデータの転送を制御することを特徴とする請求項１又は２に記載のデータ転送装置。
【請求項４】
複数の前記データ処理エンジンに対応して設けられた請求項１乃至３のいずれか１つに記載の複数の前記データ転送装置と、
前記複数のデータ転送装置に対して、前記第１及び第２の設定値を夫々設定する制御部と
を具備したことを特徴とするデータ処理装置。
【請求項５】
前記メモリバスからのアクセプト数をカウントするアクセプト数カウンタを具備し、
前記制御部は、前記アクセプト数のカウント結果に基づいて前記第１及び第２の設定値を設定することを特徴とする請求項４に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリバスに対するアクセス頻度を制御可能にしたデータ転送装置及びデータ処理装置に関する。
【背景技術】
【０００２】
近年のマルチメディア用のＳｏＣ（System on Chip）においては、多様なコンテンツの増加に伴い、多様なアプリケーションに対応する必要がある。アプリケーションを実現するモジュールの多くは、ＳＤＲＡＭ等の大容量メモリを用い、メモリバスを介し、大容量メモリにアクセスすることで、データ処理を行っている。
【０００３】
ところで、映像処理等を行うアプリケーションにおいては、リアルタイム処理を行う必要がある。しかし、複数のアプリケーションモジュールによって大容量メモリへのアクセスが集中することがあり、メモリアクセスの設定によっては、リアルタイム処理を行うアプリケーションモジュールにおいて、リアルタイム処理ができなくなることがある。そうすると、例えば、映像が破綻してしまう等の不具合が生じる。
【０００４】
そこで、メモリコントローラによって、メモリアクセスの順序補償を行うことが一般的となっている。しかし、多アプリケーション化に伴い、同時にメモリアクセスするアプリケーションモジュール数が増大している。このため、メモリコントローラが、全てのメモリアクセスの順序補償を行うことができず、メモリアクセスの最適化は困難になっている。
【０００５】
特許文献１では、メモリバスの最適化手法として、各アプリケーションモジュールのメモリアクセス頻度を時間的概念を用いて制御する手法を採用したＤＭＡ転送制御装置が開示されている。特許文献１の装置は、時間的概念を用いてメモリアクセスの優先度を確定し、均等なメモリアクセスを補償するものである。
【０００６】
しかしながら、特許文献１の装置は、固定レートで転送されるデータ転送の制御を考慮されたものであり、ランダムレートでデータ転送がなされる場合には、そのランダム性が予測できなければ時間的な制御を行うことができない。
【０００７】
例えば、不定期に発生するユーザ操作に基づくデータ転送のように、不規則なランダムレートでデータ転送が行われた場合には、時間的な制御ではメモリアクセスの最適化を達成することはできない。
【特許文献１】特開２００５−５６０６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、各々アプリケーションモジュール内に、メモリバスへのアクセス頻度を調整する機能を設けることで、多種レートのデータ転送においても、メモリバスアクセスの最適化を達成することができるデータ転送装置及びデータ処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様のデータ転送装置は、データ処理エンジンとメモリバスとの間で転送されるデータを一時的に保持するメモリと、前記データ処理エンジンに対するデータの転送を制御する入出力制御部と、前記入出力制御部と前記メモリとの間のデータ転送及び前記メモリと前記メモリバスとの間のデータ転送を制御すると共に、前記メモリの使用容量を第１の設定値に基づいて規定するメモリ制御部と、コマンドを保持するコマンドレジスタを有し、前記メモリバスに対するコマンドの発行を制御すると共に、前記コマンドレジスタに保持可能なコマンド数を第２の設定値に基づいて規定するメモリバスコマンド制御部とを具備したことを特徴とし、
また、本発明の一態様のデータ処理装置は、複数の前記データ処理エンジンに対応して設けられた複数の前記データ転送装置と、前記複数のデータ転送装置に対して、前記第１及び第２の設定値を夫々設定する制御部とを具備したことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、各々アプリケーションモジュール内に、メモリバスへのアクセス頻度を調整する機能を設けることで、多種レートのデータ転送においても、メモリバスアクセスの最適化を達成することができるという効果を有する。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して本発明の実施の形態について詳細に説明する。
【００１２】
＜第１の実施の形態＞
図１は本発明の第１の実施の形態に係るデータ転送装置を採用したデータ処理装置を示すブロック図である。また、図２は図１中のデータ転送装置の具体的な構成を示すブロック図である。
【００１３】
データ処理装置１１は、各種処理を実行するためのモジュールＭ１，Ｍ２，…を有している。モジュールＭ１は、処理を実行するためのデータ処理エンジンＥ１、データ処理エンジンＥ１のデータ転送を司るデータ転送装置Ｄ１及びデータ転送に関する設定が保持された設定レジスタＲ１によって構成されている。他のモジュールＭ２，Ｍ３，…の構成もモジュールＭ１と同様であり、夫々、データ処理エンジンＥ２，Ｅ３，…、データ転送装置Ｄ２，Ｄ３，…及び設定レジスタＲ２，Ｒ３，…を有している。
【００１４】
各モジュールＭ１，Ｍ２，…は、メモリバス１２に接続されている。メモリバス１２にはメモリ制御部１３も接続されており、メモリ制御部１３は大容量メモリ１４のアクセスを制御するようになっている。各モジュールＭ１，Ｍ２，…からのデータは、メモリバス１２を介してメモリ制御部１３に転送されて、大容量メモリ１４に記憶させることができるようになっている。また、各モジュールＭ１，Ｍ２，…は、メモリ制御部１３によって大容量メモリ１４から読み出されたデータをメモリバス１２を介して取り込むことができるようになっている。
【００１５】
本実施の形態においては、データ転送装置Ｄ１，Ｄ２，…には、第２のメモリ及びこの第２のメモリを制御するメモリ制御部（図１では図示省略）が設けられている。データ転送装置Ｄ１，Ｄ２，…は、データ処理エンジンＥ１，Ｅ２，…によるデータの書き込み及び読み出しに際して、データを第２のメモリを介してメモリバス１２に転送する。この場合において、データ転送装置Ｄ１，Ｄ２，…は、メモリ制御部によって、第２のメモリに蓄積可能なデータの容量を変化させることができるようになっている。これにより、データ転送装置Ｄ１，Ｄ２，…は、データ処理エンジンＥ１，Ｅ２，…と大容量メモリ１４との間のデータ転送を制御するようになっている。
【００１６】
また、データ転送装置Ｄ１，Ｄ２，…には、データ転送装置Ｄ１，Ｄ２，…において発生したコマンドを保持するコマンドレジスタ及びこのコマンドレジスタを制御するレジスタ制御部（図１では図示省略）が設けられている。データ転送装置Ｄ１，Ｄ２，…は、発生したコマンドをコマンドレジスタを介してメモリバス１２に転送する。この場合において、データ転送装置Ｄ１，Ｄ２，…は、レジスタ制御部によって、コマンドレジスタに蓄積可能なコマンドの容量を変化させることができるようになっている。これにより、データ転送装置Ｄ１，Ｄ２，…は、データ処理エンジンＥ１，Ｅ２，…と大容量メモリ１４との間のデータ転送を制御するようになっている。
【００１７】
設定レジスタＲ１，Ｒ２，…は、夫々、各データ転送装置Ｄ１，Ｄ２，…のメモリ制御部及びレジスタ制御部による制御のための情報を保持する。制御部１５は、各設定レジスタＲ１，Ｒ２，…に、データ転送に関する情報を設定するようになっている。制御部１５の設定によって、各モジュールＭ１，Ｍ２，…と大容量メモリ１４との間のデータ転送が制御される。
【００１８】
図２はデータ転送装置の具体的な構成の一例を示すものである。データ転送装置Ｄ１，Ｄ２，…（以下、その１つを代表してデータ転送装置Ｄという）は、入出力制御部２１、第２のメモリ制御部２２、第２のメモリ２３及びメモリバスコマンド制御部２４によって構成されている。データ処理エンジンＥ１，Ｅ２，…（以下、その１つを代表してデータ処理エンジンＥという）は、所定の処理を実現する機能を有し、大容量メモリ１４に格納するデータを出力すると共に、大容量メモリ１４からのデータを読み込むようになっている。設定レジスタＲ１，Ｒ２，…（以下、その１つを代表して設定レジスタＲという）は、入出力制御部２１、第２のメモリ制御部２２及びメモリバスコマンド制御部２４を夫々制御するための各設定を保持する。
【００１９】
なお、本実施の形態においては、データ処理エンジンＥは、大容量メモリ１４に対して書き込み又は読み出しのいずれか一方の処理のみを行うものとして説明する。なお、データ転送装置Ｄは、大容量メモリ１４に対する書き込み処理時と読み出し処理時とでは、第２のメモリ制御部２２及び入出力制御部２１の構成が若干異なるのみである。従って、データ処理エンジンＥが大容量メモリ１４に対して書き込み又は読み出しの両方の処理を行う場合でも、第２のメモリ制御部２２として書き込み処理用と読み出し処理用の２つの処理回路を採用すると共に書き込み及び読み出し処理用の２つの第２のメモリを採用することで、書き込み及び読み出し処理に対応したデータ転送装置Ｄを構成することができる。
【００２０】
設定レジスタＲは、データ処理エンジンＥが大容量メモリ１４にデータ転送を行うための設定（以下、大容量メモリ転送設定という）であるスタートアドレス、バースト長及び転送サイズの情報を保持する。なお、大容量メモリ転送設定としては、種々の方式を採用することができ、例えばスタートアドレス（Start_address）、エンドアドレス（End_address）、ピッチ（Pitch）及びハイト（Height）を用いた矩形転送を採用することもできる。なお、Start_addressは大容量メモリ１４に矩形転送を行うための開始アドレスであり、End_addressは矩形１ラインの終了アドレスを示し、Pitchは１ラインの設定サイズ、Heightは矩形転送のライン数である。
【００２１】
また、設定レジスタＲは、第１の設定値として、第２のメモリ２３として使用可能な容量を規定するメモリサイズ設定を保持する。また、設定レジスタＲは、第２の設定値として、後述するコマンドレジスタ２５に記憶可能なコマンド数を規定するコマンドレジスタ数設定を保持する。
【００２２】
データ処理エンジンＥと大容量メモリ１４との間で転送されるデータは一時的に第２のメモリ２３に保持される。後述するように、第２のメモリ制御部２２は第２のメモリ２３のメモリアクセスを制御する。データ処理エンジンＥと第２のメモリ２３との間のデータ転送は、入出力制御部２１によって制御される。
【００２３】
図３は図２中の入出力制御部２１の具体的な構成を示すブロック図である。入出力制御部２１は、メモリバス制御部３１、バッファ回路３２，バッファ制御部３３及び第２のメモリリクエスト制御部３４によって構成されている。
【００２４】
バッファ回路３２は、バッファ制御部３３によって書き込み及び読み出しアドレスが制御されて、データ処理エンジンＥから大容量メモリ１４に対する書き込み動作時には、データ処理エンジンＥからのデータを保持して第２のメモリ制御部２２に出力し、データ処理エンジンＥによる大容量メモリ１４からの読み出し動作時には、第２のメモリ制御部２２からのデータを保持してデータ処理エンジンＥに出力する。
【００２５】
バッファ制御部３３は、ｖａｌｉｄ信号又はｗａｉｔ信号をデータ処理エンジンＥに出力してデータ処理エンジンＥとバッファ回路３２との間のデータ転送を制御する。ｖａｌｉｄ信号は、データの有効無効を示す信号であり、ｗａｉｔ信号はデータ転送を停止させるための信号である。バッファ制御部３３は、データ処理エンジンＥが大容量メモリ１４に対して書き込みを行う場合には、ｖａｌｉｄ信号をＨレベルにし、ｗａｉｔ信号をＬレベルにする。これにより、データ処理エンジンＥからの有効データがバッファ回路３２に転送される。
【００２６】
また、バッファ制御部３３は、バッファ回路３２のライトアドレス及びリードアドレスを発生する。データ処理エンジンＥから大容量メモリ１４に対して書き込みを行う場合には、バッファ制御部３３は、ライトアドレスをインクリメントする。また、バッファ制御部３３は、バッファ回路３２から読み出したデータを第２のメモリ制御部２２を介して第２のメモリ２３に転送させる。この場合には、第２のメモリリクエスト制御部３４は第２のメモリ２３への書き込みが終了したことを示す第２のメモリ書き込み終了信号を発生する。バッファ制御部３３はこの第２のメモリ書き込み終了信号によって、リードアドレスをインクリメントするようになっている。
【００２７】
データ処理エンジンＥが大容量メモリ１４から読み出し動作を行う場合には、バッファ制御部３３は、ｖａｌｉｄ信号をＨレベルにして、リードアドレスをインクリメントする。また、バッファ制御部３３は、第２のメモリリクエスト制御部３４からの第２のメモリ書き込み終了信号により、ライトアドレスをインクリメントする。
【００２８】
なお、バッファ制御部３３は、データ処理エンジンＥが大容量メモリ１４からデータを読み込む場合において、バッファ回路３２が空（Ｅｍｐｔｙ）となって有効なデータが存在しない場合にはｖａｌｉｄ信号をＬレベルにする。また、バッファ制御部３３は、データ処理エンジンＥが大容量メモリ１４にデータを書き込む場合において、バッファ回路３２がフル（Ｆｕｌｌ）となってデータ転送を停止させる場合にはｗａｉｔ信号をＨレベルにする。
【００２９】
図４は図３中のバッファ回路３２の具体的な構成を示すブロック図である。バッファ回路３２はデータを保持する複数のイネーブル付きフリップフロップＦＦ１，ＦＦ２，…を有している。デコード回路４１は、バッファ制御部３３からライトアドレスが与えられ、ライトアドレスをデコードしてデータを保持するフリップフロップＦＦ１，ＦＦ２，…を決定する。フリップフロップＦＦ１，ＦＦ２…は、デコード回路４１に制御されて、入力されたデータを一時的に保持して選択回路４４に出力する。選択回路４４には、バッファ制御部３３からリードアドレスが供給される。選択回路４４は、リードアドレスに従って、フリップフロップＦＦ１，ＦＦ２…からのデータを出力データとして第２のメモリ制御部２２に出力する。
【００３０】
バッファ回路３２にはアンプダウンカウンタ４５も設けられている。アップダウンカウンタ４５にはライトアドレス及びリードアドレスが与えられる。アップダウンカウンタ４５は、ライトアドレス入力によってアップカウントし、リードアドレス入力によってダウンカウントする。これにより、アップダウンカウンタ４５のカウント出力は、フリップフロップＦＦ１，ＦＦ２…に保持されているデータ量（保持量）となる。この保持量の情報は、第２のメモリリクエスト制御部３４に供給される。
【００３１】
第２のメモリリクエスト制御部３４は、バッファ回路３２の保持量の情報を受けとることで、第２のメモリ制御部２２に対するメモリリクエスト（第２のメモリリクエスト）を発行する。即ち、第２のメモリリクエスト制御部３４は、データ処理エンジンＥから大容量メモリ１４に対する書き込み動作時においては、保持量が０よりも大きい場合、即ち、バッファ回路３２に１個以上のデータが保持されている場合には、第２のメモリ制御部２２に対して第２のメモリリクエストを発行する。一方、データ処理エンジンＥによる大容量メモリ１４からのデータの読み出し動作時においては、保持量が全容量よりも小さい場合、即ち、バッファ回路３２に１個以上のデータを取り込める空きがある場合には、第２のメモリ制御部２２に対して第２のメモリリクエストを発行する。第２のメモリ制御部２２は、第２のメモリリクエストに対して第２のメモリアクノリッジを返す。
【００３２】
なお、バッファ制御部３３は、上述したｖａｌｉｄ信号及びｗａｉｔ信号を、バッファ回路３２の保持量に応じて発生させている。即ち、上述したように、大容量メモリ１４に対する書き込み動作時には、保持量が全容量に到達してバッファ回路３２がフルになると、データ処理エンジンＥにＨレベルのｗａｉｔ信号を返す。また、大容量メモリ１４からの読み出し動作時には、保持量が０となりバッファ回路３２が空になると、データ処理エンジンＥにＬレベルのｖａｌｉｄ信号を返す。こうして、バッファ回路３２がオーバーフローすること及びアンダーフローすることを抑制することができる。
【００３３】
第２のメモリ制御部２２は、第２のメモリリクエスト制御部３４からの第２のメモリリクエストが入力されると、第２のメモリ２３に対する書き込み又は読込み動作を行う。第２のメモリ制御部２２は、第２のメモリ２３に対する書き込み又は読込み動作が完了すると、第２のメモリリクエスト制御部３４に対して第２のメモリアクノリッジを返す。第２のメモリリクエスト制御部３４は、第２のメモリアクノリッジが返されると、第２のメモリリクエストをデアサートし、第２のメモリ書き込み終了信号をバッファ制御部３３に転送する。第２のメモリ制御部２２は、第２のメモリ２３のメモリ残量を把握しており、第２のメモリ２３のメモリ残量の情報をメモリバス制御部３１に出力する。
【００３４】
メモリバス制御部３１は、第２のメモリ制御部２２からのメモリ残量の情報によって、第２のメモリ２３に蓄積されたデータ量を把握する。メモリバス制御部３１は、大容量メモリ１４に対する書き込み動作時においては、入力されたメモリ残量の情報によって、第２のメモリ２３にバースト長分のデータが保持されたことを検出すると、メモリバスリクエストを発行してメモリバスコマンド制御部２４に出力するようになっている。また、メモリバス制御部３１は、大容量メモリ１４からの読み出し動作時においては、第２のメモリ２３にバースト長分の空きが生じると、メモリバスリクエストを発行してメモリバスコマンド制御部２４に出力する。
【００３５】
入出力制御部２１のメモリバス制御部３１は、設定レジスタＲから与えられた大容量メモリ転送設定に基づいて、大容量メモリ１４に対するメモリバスアドレス、バースト長を算出する。
【００３６】
メモリバス制御部３１は、スタートアドレスにバースト長を加算し、次転送アドレスを生成する。ここで、アドレス計算は転送サイズまでバースト長を加算して行う。
【００３７】
尚、上述におけるバースト長は固定長で考慮されており、スタートアドレスにバースト長の加算を繰返し、転送サイズを超えた場合、その超える前のアドレスを最終のアドレスとし、転送サイズから最終アドレスを減算したものを最終バースト長とする。
【００３８】
メモリバス制御部３１は、大容量メモリ１４に対するアドレス／バースト長を算出すると、メモリバスコマンド制御部２４に対して、メモリバスリクエストのタイミングで、メモリバスアドレス／バースト長設定をメモリバスコマンド制御部２４に転送する。
【００３９】
メモリバスコマンド制御部２４は、メモリバスリクエストを受けると、メモリバスアクノリッジを発行する。このメモリバスアクノリッジによって、メモリバス制御部３１はメモリバスリクエストをデアサートする。メモリバスリクエストの発行条件については、後述する。
【００４０】
図５は図２中のメモリバスコマンド制御部２４の具体的な構成を示すブロック図である。メモリバスコマンド制御部２４は、メモリバスへのライト／リードコマンド及び入出力制御部２１で生成されたメモリバスアドレス／バースト長設定を保持するコマンドレジスタ５３を有する。コマンドレジスタ５３は、コマンドレジスタライトアドレス制御部５１及びコマンドレジスタリードアドレス制御部５２により、アドレス制御されるレジスタ構成である。
【００４１】
本実施の形態においては、コマンドレジスタ５３は、設定レジスタＲによって設定されるコマンドレジスタ数設定により、メモリバス１２に出力するコマンド、アドレス／バースト長の保持数を変更することができるようになっている。
【００４２】
コマンドレジスタライトアドレス制御部５１は、入出力制御部２１により生成されるメモリバスリクエストにより、コマンドレジスタ５３に対するライトアドレスをインクリメントする。また、コマンドレジスタライトアドレス制御部５１は、コマンドレジスタ５３からコマンドレジスタの書き込み完了信号が入力されると、入出力制御部２１にメモリバスアクノリッジを返す。
【００４３】
コマンドレジスタ５３は、入出力制御部２１から得られるメモリバスアドレス／バースト長設定を保持し、メモリバスアドレス／バースト設定にライト／リードコマンドを付加して、メモリバスコマンド群としてメモリバス１２に出力する。
【００４４】
また、コマンドレジスタリードアドレス制御部５２には、メモリバス１２を介してコマンドに対するコマンドアクセプト（コマンド受領）信号が返送される。コマンドレジスタリードアドレス制御部５２は、コマンドアクセプト信号が返送されると、第２のメモリ制御部２２に対して、メモリバス転送開始信号を転送する。第２のメモリ制御部２２は、メモリバス転送開始信号が入力されると、書き込み時には、メモリバス１２にライトデータを出力し、そのデータをバースト長分出力した後に、メモリバス転送完了信号を出力し、読み出し時には、メモリバス１２からリードデータを入力し、そのデータがバースト長分入力された後に、メモリバス転送完了信号を出力する。このメモリバス転送完了信号は、コマンドレジスタリードアドレス制御部５２に返される。
【００４５】
コマンドレジスタリードアドレス制御部５２は、メモリバス転送完了信号を受信すると、コマンドレジスタリードアドレスをインクリメントする。これにより、コマンドレジスタ５３は、次のメモリバスコマンド群をメモリバス１２に対し出力するようになっている。
【００４６】
なお、コマンドレジスタライトアドレス制御部５１及びコマンドレジスタリードアドレス制御部５２は、設定レジスタＲからのコマンドレジスタ数設定により設定されるコマンドレジスタ数まで、アドレスをインクリメント可能である。これにより、コマンドレジスタ数設定に応じた保持数だけ、コマンドレジスタ５３においてコマンドを保持することが可能である。
【００４７】
なお、本実施の形態では、コマンドレジスタ５３をメモリバスコマンド制御部２４内に構成した例を説明したが、コマンドレジスタ５３はメモリバスコマンド制御部２４の外部に設けてもよい。
【００４８】
図６は図５中のコマンドレジスタ５３の出力及びコマンドアクセプト信号についてメモリバス１２のプロトコルの一例を示す説明図である。図６に示すように、クロックに対して、メモリバスコマンド群として、ライト／リードコマンド[1:0]、３２ビットのメモリバスアドレス[31:0]及びバースト長[5:0]が伝送される。リード／ライトコマンドは、アイドル動作、ライト動作及びリード動作を２ビットで表現する。また、これらのメモリバスコマンド群に対して、メモリバス１２からコマンドアクセプト信号が返るようになっている。
【００４９】
図７はこのようなメモリバスコマンド群を発生するコマンドレジスタ５３の具体的な構成を示すブロック図である。コマンドレジスタ５３は、メモリバスコマンド群を保持するためのイネーブル付きフリップフロップ７２-1〜７２-Nを有している。入出力制御部２１からのメモリバスアドレス／バースト長設定は、例えば、下位３２ビットがメモリバスアドレス[31:0]で、上位５ビットがバースト長[37:32]であり、更にこれらの上位の２ビット[38:37]にライト又はリードコマンドを付加して、フリップフロップ７２-1〜７２-Nに与える。デコード回路７１にはコマンドレジスタライトアドレス制御部５１からのライトアドレスが与えられる。デコード回路７１は、バースト長の上位側に付加するライト又はリードコマンドを出力すると共に、ライトアドレスに基づいて、フリップフロップ７２-1〜７２-Nａの書き込みを指示する書き込みイネーブル信号を出力する。
【００５０】
選択回路７３にはコマンドレジスタリードアドレス制御部５２からのリードアドレスが与えられる。選択回路７３は、リードアドレスに従って、フリップフロップ７２-1〜７２-Nの出力を読み出してメモリバスコマンド群として出力する。
【００５１】
なお、デコード回路７１は、書き込みイネーブル信号の発生と同様のタイミングで、コマンドレジスタの書き込み完了信号を発生してコマンドレジスタライトアドレス制御部５１に返す。この書き込み完了信号を受信すると、コマンドレジスタライトアドレス制御部５１は、メモリバスアクノリッジを入出力制御部２１に返すようになっている。
【００５２】
次に、図８及び図９を参照して第２のメモリ制御部２２について説明する。第２のメモリ制御部２２は、大容量メモリ１４に対する書き込み処理と読み出し処理とで、相互に異なる回路部分を有する。図８は書き込み処理における回路構成を示し、図９は読み出し処理における回路構成を示している。本実施の形態におけるデータ転送装置Ｄが書き込み及び読み出しの両方の処理を行う場合には、図８及び図９の回路構成を有する第２のメモリ制御部２２を備える必要がある。
【００５３】
図８において、第２のメモリ制御部２２は、設定レジスタＲによってメモリサイズ設定の情報が与えられる。本実施の形態においては、メモリサイズ設定によって、第２のメモリ２３の使用領域を変更することができる。
【００５４】
メモリサイズ設定の情報は、第２のメモリライトアドレス／ライトイネーブル生成部８３及び第２のメモリリードアドレス／リードイネーブル生成部８５に与えられる。第２のメモリライトアドレス／ライトイネーブル生成部８３は、第２のメモリ２３にライトアドレスを供給するライトアドレスカウンタ８４を有している。また、第２のメモリリードアドレス／リードイネーブル生成部８５は、第２のメモリ２３にリードアドレスを供給するリードアドレスカウンタ８６を有している。
【００５５】
ライトアドレスカウンタ８４は入出力制御部２１からの第２のメモリリクエストに従ってライトアドレスをアップカウントする。リードアドレスカウンタ８６は、メモリバスコマンド制御部２４からのメモリバス転送開始信号に従ってリードアドレスをアップカウントする。ライトアドレスカウンタ８４及びリードアドレスカウンタ８６は、メモリサイズ設定によってカウント値の上限が規定されている。これにより、第２のメモリライトアドレス／ライトイネーブル生成部８３は、メモリサイズ設定に応じた使用領域で、第２のメモリ２３のライトアドレスを指定し、第２のメモリリードアドレス／リードイネーブル生成部８５は、メモリサイズ設定に応じた使用領域で、第２のメモリのリードアドレスを指定する。
【００５６】
また、第２のメモリライトアドレス／ライトイネーブル生成部８３は、ライトイネーブル信号を発生して第２のメモリ２３に与える。また、第２のメモリライトアドレス／ライトイネーブル生成部８３は、ライトアドレス及びライトイネーブルに同期したライトデータ同期信号をライトデータ制御部８２に出力する。ライトデータ制御部８２は、ライトデータ同期信号に基づいて、入出力制御部２１からのデータをライトアドレス及びライトイネーブルに同期させて第２のメモリ２３に供給する。
【００５７】
また、ライトアドレスカウンタ８４は、第２のメモリリクエストによりカウントアップし、第２のメモリ２３にライトデータを書込んだ後、第２のメモリアクノリッジを入出力制御部２１に返すようになっている。
【００５８】
第２のメモリリードアドレス／リードイネーブル生成部８５は、リードイネーブルを発生して第２のメモリ２３に供給する。また、第２のメモリリードアドレス／リードイネーブル生成部８５は、リードアドレス及びリードトイネーブルに同期したリードデータ同期信号をリードデータ制御部８７に出力する。リードデータ制御部８７は、リードデータ同期信号に基づいて、第２のメモリ２３からのデータを、リードアドレス及びリードイネーブルに同期させて読み出し、メモリバス１２に出力する。
【００５９】
なお、リードアドレスカウンタ８６は、メモリバスコマンド制御部２４からのメモリバス転送開始信号が与えられると、カウントアップを開始する。リードアドレスカウンタ８６は、第２のメモリ２３からメモリバス１２に対するライトデータがバースト長分読み出されると、メモリバスコマンド制御部２４にメモリバス転送完了信号を返すようになっている。
【００６０】
また、第２のメモリライトアドレス／ライトイネーブル生成部８３はメモリライト情報をアップダウンカウンタ８１に出力し、第２のメモリリードアドレス／リードイネーブル生成部８５はメモリリード情報をアップダウンカウンタ８１に出力する。アップダウンカウンタ８１は、メモリライト情報及びメモリリード情報によって、第２のメモリ２３に対するライト及びリードを把握し、ライトによってアップカウントを行い、リードによってダウンカウントを行う。これにより、アップダウンカウンタ８１は第２のメモリ２３のメモリ残量を求めて、入出力制御部２１に出力するようになっている。
【００６１】
図９の読み出し時の回路においても、図８の書き込み時の回路と同様の構成を有する。図９の読み出し時の回路が図８の書き込み時の回路と異なる点は、メモリバス１２を介して大容量メモリ１４から読み出されたリードデータがライトデータ制御部８２に供給される点、メモリバス転送開始信号が第２のメモリライトアドレス／ライトイネーブル生成部８３に供給される点である。第２のメモリライトアドレス／ライトイネーブル生成部８３のライトアドレスカウンタ８４は、メモリバス転送開始信号によりカウントアップし、第２のメモリ２３にバースト長分のデータが書込まれた後に、メモリバス転送完了信号をメモリバスコマンド制御部２４に返す。
【００６２】
また、入出力制御部２１からの第２のメモリリクエストが第２のメモリリードアドレス／リードイネーブル生成部８５に供給される点も図８の書き込み時の回路と異なる。第２のメモリリードアドレス／リードイネーブル生成部８５のリードアドレスカウンタ８６は、入出力制御部２１からの第２のメモリリクエストによりカウントアップし、第２のメモリ２３からデータが読み出された後に、第２のメモリアクノリッジを入出力制御部２１へ返す。第２のメモリ２３から読み出されたリードデータはリードデータ制御部８７に与えられ、リードデータ制御部８７は第２のメモリ２３から読み出したデータを入出力制御部２１に出力する。
【００６３】
次に、このように構成された実施の形態の動作について図１０及び図１１を参照して説明する。図１０はライトアドレス及びリードアドレスの遷移状態を示す説明図である。図１１は第１の実施の形態の具体的な効果を説明するための説明図である。
【００６４】
図１において、制御部１５は、モジュールＭ１，Ｍ２，…の各データ処理エンジンＥ１，Ｅ２，…の機能等に従って、各設定レジスタＲ１，Ｒ２，…に対して、大容量メモリ転送設定群、メモリサイズ設定、コマンドレジスタ数設定の情報を設定する。
【００６５】
各モジュールＭ１，Ｍ２，…のデータ転送装置Ｄ１，Ｄ２，…は、設定レジスタＲ１，Ｒ２，…に設定された情報に基づいて、データ処理エンジンＥ１，Ｅ２，…と大容量メモリ１４とのデータ転送を制御する。
【００６６】
（書き込み時）
いま、所定のデータ処理エンジンＥが書き込み処理を行う機能を有するものとする。このデータ処理エンジンＥからのデータが供給されるデータ転送装置Ｄの設定レジスタＲからは、大容量メモリ転送設定群の情報が入出力制御部２１に与えられ、メモリサイズ設定の情報が第２のメモリ制御部２２に与えられ、コマンドレジスタ数設定の情報がメモリバスコマンド制御部２４に与えられる。
【００６７】
入出力制御部２１のバッファ制御部３３は、ｗａｉｔ信号をＬレベルにする。これにより、データ処理エンジンＥからのデータ（ライトデータ）がバッファ回路３２に転送される。
【００６８】
バッファ回路３２に１個以上のデータが蓄積されると、第２のメモリリクエスト制御部３４は、保持量の情報に基づいて、第２のメモリ制御部２２に対して第２のメモリリクエストを発行する。図８に示す第２のメモリ制御部２２の第２のメモリライトアドレス／ライトイネーブル生成部８３は、ライトアドレスに空きがある場合には、第２のメモリアクノリッジを第２のメモリリクエスト制御部３４に返す。これにより、バッファ制御部３３は、バッファ回路３２にリードアドレスを与えてバッファ回路３２に保持されているライトデータを第２のメモリ制御部２２に転送する。
【００６９】
第２のメモリ制御部２２の第２のメモリライトアドレス／ライトイネーブル生成部８３は、第２のメモリ２３に対するライトアドレス及びライトイネーブルを第２のメモリ２３に出力すると共に、ライトデータ同期信号をライトデータ制御部８２に出力する。ライトデータ制御部８２は、ライトデータ同期信号に同期させて入出力制御部２１からのライトデータを第２のメモリ２３に書込む。アップダウンカウンタ８１は、ライトアドレス及びリードアドレスの発生によってアップダウンカウントすることで、第２のメモリ２３のメモリ残量を求めて、その情報を入出力制御部２１に出力する。
【００７０】
メモリバス制御部３１は、メモリ残量の情報によって、第２のメモリ２３に蓄積されたデータ量を把握する。メモリバス制御部３１は、第２のメモリ２３にバースト長分のデータが保持されたことを検出すると、メモリバスリクエストを発行してメモリバスコマンド制御部２４に出力する。また、メモリバス制御部３１は、設定レジスタＲからの大容量メモリ転送設定群の情報に基づいて、メモリバスアドレス／バースト長を求めて、その情報をメモリバスコマンド制御部２４に出力する。なお、メモリバス制御部３１は、第２のメモリ２３にバースト長分のデータが蓄積される毎に、スタートアドレスに順次バースト長を加算することで、メモリアドレスを求める。
【００７１】
メモリバスコマンド制御部２４のコマンドレジスタライトアドレス制御部５１は、メモリバスリクエストを受信すると、コマンドレジスタ５３に空きがある場合には、メモリバスアクノリッジをメモリバス制御部３１に返すと共に、コマンドレジスタに対してライトアドレスを発生する。メモリバスアクノリッジによって、メモリバスコマンド制御部２４からのメモリバスアドレス／バースト長の情報がコマンドレジスタ５３に取り込まれる。コマンドレジスタ５３は、メモリバスアドレス／バースト長にライトコマンドを付加して、メモリバスコマンド群のデータを生成してフリップフロップ７２-1〜７２-Nにこのデータを保持する。
【００７２】
大容量メモリ１４にデータ処理エンジンＥからのライトデータを書き込み可能である場合には、メモリバス１２からメモリバスコマンド制御部２４のコマンドレジスタリードアドレス制御部５２に対してコマンドアクセプト信号が供給される。これにより、コマンドレジスタリードアドレス制御部５２は、コマンドレジスタ５３にリードアドレスを与えると共に、メモリバス転送開始信号を第２のメモリ制御部２２に出力する。コマンドレジスタ５３は、図６に示すフォーマットで、保持しているメモリバスコマンド群のデータをメモリバス１２に対して出力する。
【００７３】
また、第２のメモリ制御部２２の第２のメモリリードアドレス／リードイネーブル生成部８５は、メモリバス転送開始信号が入力されると、リードアドレスを発生して第２のメモリ２３に出力する。このリードアドレスに従って、第２のメモリ２３からライトデータが読み出される。リードデータ制御部８７は、リードデータ同期信号に同期させて、第２のメモリ２３からのライトデータを、読み出し、メモリバス１２に出力する。
【００７４】
メモリバス１２に転送されたライトデータ及びメモリバスコマンド群のデータは、メモリ制御部１３に与えられる。メモリ制御部１３は、メモリバスコマンド群のデータに従って、大容量メモリ１４にライトデータを書込む。
【００７５】
いま、例えば、メモリバス１２に接続された各モジュールＭ１，Ｍ２，…中の１つのモジュールＭ１のデータ処理エンジンＥ１がイメージデータに対するリアルタイム処理を行うものであるものとする。この場合には、設定レジスタＲ１のメモリサイズ設定及びコマンドレジスタ数設定としては、比較的大きな値が設定される。
【００７６】
例えば、設定レジスタＲ１のメモリサイズ設定は、第２のメモリ２３のアドレスの最大値に設定される。図１０（ａ）はこの場合における第２のメモリライトアドレス／ライトイネーブル生成部８３のライトアドレスカウンタ８４によるライトアドレスの変化を示している。
【００７７】
ライトアドレスカウンタ８４は、ライトアドレスとして、０〜１０２３を出力する。ライトアドレスが１０２３に到達すると次にライトアドレスを０に戻してサイクリックにライトアドレスを指定する。これにより、第２のメモリ２３は１０２４個のアドレスが使用可能となり、アップダウンカウンタ８１は、１０２４個のアドレスを基準として、メモリ残量を求める。
【００７８】
また、例えば、メモリバス１２に接続された各モジュールＭ１，Ｍ２，…中の１つのモジュールＭ２のデータ処理エンジンＥ２が高速での処理が要求されない比較的低速の処理を行うものであるものとする。この場合には、設定レジスタＲ２のメモリサイズ設定及びコマンドレジスタ数設定としては、比較的小さい値が設定される。
【００７９】
図１０（ｂ）は、設定レジスタＲ２のメモリサイズ設定を、第２のメモリ２３のアドレスの半分の５２４に設定した例を示しており、この場合における第２のメモリライトアドレス／ライトイネーブル生成部８３のライトアドレスカウンタ８４によるライトアドレスの変化を示している。
【００８０】
ライトアドレスカウンタ８４は、ライトアドレスとして、０〜５２３を出力する。ライトアドレスが５２３に到達すると次にライトアドレスを０に戻してサイクリックにライトアドレスを指定する。これにより、第２のメモリ２３は５２４個のアドレスが使用可能となり、アップダウンカウンタ８１は、５２４個のアドレスを基準として、メモリ残量を求める。このように、第２のメモリ２３の使用量は、メモリサイズ設定によって決定される。
【００８１】
メモリ残量によって第２のメモリ２３にライトデータを書込むことができなくなった場合には、メモリバス制御部３１は、メモリバスリクエストの発生を停止する。また、第２のメモリ制御部２２は、メモリ残量が無くなると、第２のメモリアクノリッジを発行しない。これにより、バッファ制御部３３は、バッファ回路３２からの読み出しを停止する。第２のメモリリクエスト制御部３４は、バッファ回路３２からの読み出しの停止によって、バッファ回路３２の保持量が増大してフルになると、バッファ制御部３３からのｗａｉｔ信号をＨレベルにする。これにより、データ処理エンジンＥはライトデータの入出力制御部２１の転送を停止する。
【００８２】
設定レジスタＲのメモリサイズ設定が比較的小さい値の場合には、バッファ回路３２はフルになりやすく、データ処理エンジンＥのデータ転送は停止しやすくなる。一方、設定レジスタＲのメモリサイズ設定が比較的大きい値の場合には、バッファ回路３２はフルになりにくく、データ処理エンジンＥのデータ転送は停止しにくい。こうして、メモリサイズ設定によって、データ処理エンジンＥからのライトデータの転送を制御することができる。
【００８３】
また、本実施の形態においては、メモリサイズ設定と共にコマンドレジスタ数設定も設定する。コマンドレジスタ数設定によって、コマンドレジスタライトアドレス制御部５１から発生されるコマンドレジスタライトアドレスの最大値が変化し、コマンドレジスタ５３において使用可能なアドレス数、即ち、コマンドレジスタ５３に保持可能なコマンド数を制御することができる。
【００８４】
例えば、メモリサイズ設定を比較的大きな値に設定した場合には、コマンドレジスタ数設定も比較的大きな値に設定する。例えば、コマンドレジスタ数設定によって、コマンドレジスタ５３に保持可能なコマンド数を最大に設定するものとする。この場合には、コマンドレジスタ５３には、保存可能な最大数までメモリバスコマンド群のデータを蓄積することができる。
【００８５】
一方、コマンドレジスタ数設定を比較的小さな値に設定すると、コマンドレジスタ５３に保持可能なコマンド数を少なくすることができる。そうすると、コマンドレジスタ５３の空きがなくなりやすくなり、メモリバスリクエストに対してメモリバスアクノリッジが発行されにくくなる。
【００８６】
例えば、大容量メモリ１４に対する書き込みが許可されず、コマンドアクセプト信号がメモリバスコマンド制御部２４に返されない場合には、メモリバスコマンド群のデータがコマンドレジスタ５３に順次蓄積されても、メモリバス１２には出力されない。この場合には、コマンドレジスタ５３の使用可能な容量一杯までメモリバスコマンド群のデータが蓄積されて、最終的にはメモリバスアクノリッジが発生されないことになる。
【００８７】
即ち、この場合には、第２のメモリ２３に保持されたライトデータが出力されにくくなり、結果的に、バッファ回路３２がフルになりやすくなって、データ処理エンジンＥのデータ転送は停止しやすくなる。
【００８８】
例えば、第２のメモリ２３の使用容量を制限するだけでなく、コマンドレジスタ５３の使用可能な容量を制限することで、メモリバス１２に転送不能な場合等において、第２のメモリ２３に空きがある場合でも、データ転送にウェイトを掛けることが可能である。
【００８９】
なお、コマンドレジスタ数設定が比較的大きい値の場合には、コマンドレジスタ５３に保持可能なコマンド数が大きく、メモリバスコマンド制御部２４はメモリバスアクノリッジを発行しやすくなって、結果的に、バッファ回路３２はフルになりにくく、データ処理エンジンＥのデータ転送は停止しにくい。こうして、コマンドレジスタ数設定によって、データ処理エンジンＥからのライトデータの転送を制御することができる。
【００９０】
（読み出し時）
一方、所定のデータ処理エンジンＥが読み出し処理を行う機能を有するものとする。大容量メモリ１４から読み出されたリードデータは、メモリ制御部１３によってメモリバス１２に転送される。メモリバス１２に転送されたリードデータは、図９に示す第２のメモリ制御部２２内のライトデータ制御部８２に与えられる。第２のメモリライトアドレス／ライトイネーブル生成部８３内のライトアドレスカウンタ８４は、メモリバスコマンド制御部２４から得られるメモリバス転送開始信号によってカウントアップする。これにより、ライトデータ制御部８２からのリードデータが第２のメモリ２３に与えられて書き込まれる。
【００９１】
第２のメモリ２３にバースト長分のリードデータが書き込まれると、第２のメモリライトアドレス／ライトイネーブル生成部８３は、メモリバス転送完了信号をメモリバスコマンド制御部２４に返す。また、第２のメモリリードアドレス／リードイネーブル生成部８５内のリードアドレスカウンタ８６は、入出力制御部２１からの第２のメモリリクエストによってカウントアップし、第２のメモリ２３に書込まれたリードデータを読み出す。第２のメモリリードアドレス／リードイネーブル生成部８５は、第２のメモリアクノリッジを入出力制御部２１に返す。読み出されたデータは、リードデータ制御部８７から入出力制御部２１に供給される。
【００９２】
第２のメモリ制御部２２からのリードデータは、入出力制御部２１のバッファ回路３２に与えられる。一方、入出力制御部２１のバッファ制御部３３は、バッファ回路３２にリードデータが保持され、
ｖａｌｉｄ信号をＨレベルにし、データ処理エンジンＥに転送される。
【００９３】
いま、例えば、設定レジスタＲ１のメモリサイズ設定及びコマンドレジスタ数設定として、比較的小さい値が設定されるものとする。この場合には、第２のメモリ２３において使用可能なアドレスが少なくなる。従って、メモリバス１２からの第２のメモリ２３に転送されて保持されるリードデータは比較的少ないデータ量となる。そうすると、バッファ回路３２において空となりやすい。バッファ回路３２が空になると、バッファ制御部３３は、ｖａｌｉｄ信号をＬレベルにし、データ処理エンジンＥに対するリードデータの転送を停止させる。
【００９４】
即ち、設定レジスタＲのメモリサイズ設定が比較的小さい値の場合には、バッファ回路３２が空となりやすく、データ処理エンジンＥに対するデータ転送が停止しやすくなる。
【００９５】
また、コマンドレジスタ数設定が比較的小さい値であるので、コマンドレジスタ５３に保持可能なコマンド数が少なくなる。そうすると、コマンドレジスタ５３が空となりやすくなる。コマンドレジスタ５３が空になると、メモリバス転送開始信号が発行されない。
【００９６】
即ち、この場合には、第２のメモリ２３からバッファ回路３２にリードデータが転送されなくなり、結果的にバッファ回路３２が空となりやすくなって、データ処理エンジンＥに対するデータ転送は停止しやすくなる。
【００９７】
逆に、設定レジスタＲのメモリサイズ設定が比較的大きい値の場合及びコマンドレジスタ数設定が大きい値の場合には、バッファ回路３２は空となりにくく、データ処理エンジンＥに対するデータ転送は停止しにくい。こうして、メモリサイズ設定及びコマンドレジスタ数設定によって、データ処理エンジンＥに対するリードデータの転送を制御することができる。
【００９８】
図１の制御部１５において、各モジュールＭ１，Ｍ２，…の各設定レジスタＲ１，Ｒ２，…に対して、メモリサイズ設定及びコマンドレジスタ数設定を適宜設定することによって、各モジュール毎にデータ転送の転送効率を制御することができる。
【００９９】
各モジュールＭ１，Ｍ２，…のうち、大容量メモリ１４に対するメモリアクセス頻度を抑制したいモジュールについては、メモリサイズ設定及びコマンドレジスタ数設定を比較的小さい値にし、メモリアクセス頻度を大きくするモジュールほど、メモリサイズ設定及びコマンドレジスタ数設定を大きな値にする。
【０１００】
図１１（ａ）はメモリサイズ設定及びコマンドレジスタ数設定が比較的大きい値の例を示し、図１１（ｂ）はメモリサイズ設定及びコマンドレジスタ数設定が比較的小さい値の例を示している。図１１（ｂ）の例は、図１１（ａ）の例に対して、第２のメモリ２３の使用容量が半分の例である。この場合には、第２のメモリ２３の使用容量を半分にすることにより、第２のメモリ２３には全容量の半分しかデータ処理エンジンＥのデータを蓄えることができない。例えば、メモリバス１２からのコマンドアクセプト信号が遅かった場合でも、第２のメモリ２３の使用効率を低下させることで、データ処理エンジンＥのデータ転送レートを低下させることができる。また、コマンドレジスタ５３の保持数を少なくすることで、１コマンドバースト長分のデータ転送効率を低下させることができる。
【０１０１】
これらの制御によって、図１１（ｂ）の例は図１１（ａ）の例に比べて、メモリバス１２に対するアクセス時間を遅延させることができる。こうして、各モジュールＭ１，Ｍ２，…のメモリバス１２に対するアクセス頻度を個別に調整可能である。
【０１０２】
このように、本実施の形態においては、データ処理エンジンとメモリバスとの間に第２のメモリを設け、この第２のメモリの使用可能な容量と、データ転送に必要なコマンドを保持するコマンドレジスタにおけるコマンドの保持数とを、各モジュール毎に制御することで、メモリバスに対するアクセス頻度を制御することができる。第２のメモリの使用可能な容量とコマンドの保持数とを、各モジュール毎に制御することで、各モジュールのデータ転送効率をその機能等に応じて制御することができる。
【０１０３】
図１２は本発明の第２の実施の形態に係るデータ転送装置を示すブロック図である。図１２において図２と同一の構成要素には同一符号を付して説明を省略する。
【０１０４】
本実施の形態は１つのモジュール内に複数のデータ処理エンジンを備えた例に適用したものである。システム全体としては、各モジュールは、１つのデータ処理エンジンのみを備えていてもよく、また、複数のデータ処理エンジンを備えていてもよい。データ処理エンジンＥａ，Ｅｂ，…Ｅｎは、所定のモジュール中に設けられたｎ個のデータ処理エンジンを示しており、モジュールの機能を実現するために夫々所定のデータ処理を実行する。
【０１０５】
データ転送装置Ｄ’は、データ処理エンジンＥａ，…Ｅｎに夫々対応した入出力制御部２１ａ〜２１ｎを有する。各入出力制御部２１ａ〜２１ｎの構成は図１の入出力制御部２１と同様である。第２のメモリ制御部２２’は第２のメモリリクエストアービタ２６を有する。第２のメモリ制御部２２’の他の構成は図１の第２のメモリ制御部２２と同様である。
【０１０６】
第２のメモリリクエストアービタ２６は、第２のメモリに対するデータ転送の相手のアービトレーションを行う。これにより、各期間において、第２のメモリ２３に対する使用権は、複数の入出力制御部２１ａ〜ｎのうちの１つに制限される。
【０１０７】
第２のメモリリクエストアービタ２６によって、第２のメモリ２３の使用権が設定された入出力制御部と第２のメモリ制御部２２’との間で、第２のメモリリクエスト及び第２のメモリアクノリッジのやり取りが行われる。なお、第２のメモリ２３は各データ処理エンジンＥａ〜Ｅｎ毎の領域を有しており、データ処理エンジンＥａ〜Ｅｎとの間で送受するデータを対応する領域に記憶するようになっている。
【０１０８】
メモリバスコマンド制御部２４’はメモリバスコマンドリクエストアービタ２７を有する。メモリバスコマンド制御部２４’の他の構成は図１のメモリバスコマンド制御部２４と同様である。メモリバスコマンドリクエストアービタ２７は、第２のメモリリクエストアービタ２６の調停と同様にして、コマンドレジスタ２５の使用権のアービトレーションを行う。これにより、各期間において、コマンドレジスタ２５に対する使用権は、複数の入出力制御部２１ａ〜ｎのうちの１つに制限される。
【０１０９】
メモリバスコマンドリクエストアービタ２７によって、コマンドレジスタ２５の使用権が設定された入出力制御部とメモリバスコマンド制御部２４’との間で、メモリバスアドレス／バースト長設定の情報及びメモリバスリクエストのやり取りが行われる。なお、コマンドレジスタ２５は、各入出力制御部２１ａ〜２1ｎからのメモリアドレス／バースト長設定の情報を記憶するようになっている。また、メモリバスコマンド制御部２４’は、データ処理エンジンＥａ〜Ｅｎに対応した第２のメモリ２３の各領域に対して、各メモリバス転送開始信号を送信し、その応答として各メモリバス転送完了信号を受信する。メモリバスコマンド制御部２４’は、メモリバスコマンドリクエストアービタ２７による使用権の設定に応じたメモリバス転送開始信号を出力すると共に、メモリバス転送完了信号を受信する。
【０１１０】
設定レジスタＲ’は、複数の入出力制御部２１ａ〜２１ｎに対する第１乃至第ｎ大容量メモリ転送設定群の情報を保持する。また、設定レジスタＲ’は、第２のメモリリクエストアービタ２６によって使用権が設定された入出力制御部２１ａ〜２1ｎに対して、第１乃至第ｎのメモリサイズ設定の情報を保持する。
【０１１１】
このように構成された実施の形態においては、第２のメモリ制御部２２’は、設定レジスタＲ’からの第１乃至第ｎのメモリサイズ設定によって、第２のメモリ２３の各領域の使用容量を夫々変化させることができる。これにより、第２のメモリ制御部２２’は、各データ処理エンジンＥａ〜Ｅｎ毎に第２のメモリ２３の使用容量を設定可能であり、第１の実施の形態と同様に、各データ処理エンジン毎にメモリバス１２の使用頻度を制御することができる。
【０１１２】
また、メモリバスコマンド制御部２４’コマンドレジスタ数設定によって、メモリバスコマンド群の各データの保持数を設定することができる。これにより、第１の実施の形態と同様に、メモリバス１２の使用頻度を制御することができる。
【０１１３】
なお、メモリリクエストアービタ２６及びメモリバスコマンドリクエストアービタ２７としては、公知のラウンドロビン方式を用いるもの等を採用することができる。
【０１１４】
本実施の形態においても、メモリ制御部２２’は、書き込み時と読み出し時とで、異なる構成を採用する必要がある。図１３及び図１４は夫々メモリ制御部２２’の書き込み時と読み出し時に夫々必要な構成を示すブロック図である。図１３及び図１４において夫々図８及び図９と同一の構成要素には同一符号を付して説明を省略する。なお、図１３及び図１４においては、図面の簡略化のために、各ｎ個の構成要素のうち第１及び第ｎの２個の構成要素のみを示している。
【０１１５】
（書き込み時）
図１３の構成は、図８の入出力制御部２１、アップダウンカウンタ８１、ライトアドレスカウンタ８４、リードアドレスカウンタ８６に対して、夫々同様の構成のｎ個の入出力制御部２１ａ〜２１ｎ、アップダウンカウンタ８１ａ〜８１ｎ、ライトアドレスカウンタ８４ａ〜８４ｎ、リードアドレスカウンタ８６ａ〜８６ｎを備えた点が異なる。
【０１１６】
第２のメモリリクエストアービタ２６は、各入出力制御部２１ａ〜２１ｎからの第２のメモリリクエストを受けて１つずつ選択して第２のメモリライトアドレス／ライトイネーブル生成部８３’に与える。第２のメモリライトアドレス／ライトイネーブル生成部８３’は、選択された第２のメモリリクエストに対応したメモリサイズ設定に従って、第２のメモリ２３の使用容量を設定する。
【０１１７】
ライトアドレスカウンタ８４ａ〜８４ｎのうち選択された第２のメモリリクエストに対応するライトアドレスカウンタは、ライトアドレスをインクリメントする。ライトデータ制御部８２は、第２のメモリリクエストアービタ２６によって選択された第２のメモリリクエストに対応するライトデータを第２のメモリ２３の対応する領域に書込む。なお、第２のメモリライトアドレス／ライトイネーブル生成部８３’は、入出力制御部２１ａ〜２１ｎのうち選択された第２のメモリリクエストに対応する入出力制御部に対して、第２のメモリアクノリッジを返す。
【０１１８】
一方、メモリバスコマンド制御部２４は、メモリバスコマンドリクエストアービタ２７によって、リードアドレスカウンタ８６ａ〜８６ｎのうちの１つを選択し、選択したリードアドレスカウンタに対してメモリバス転送開始信号を出力する。
【０１１９】
第２のメモリリードアドレス／リードイネーブル生成部８５’は、リードアドレスカウンタ８６ａ〜８６ｎのうち選択されたリードアドレスカウンタを動作させ、第２のメモリ２３の対応する領域からの読み出しを行う。リードアドレスカウンタ８６ａ〜８６ｎのうちの選択されたリードアドレスカウンタは、バースト長分のデータを読み出すと、メモリバス転送完了信号をメモリバスコマンド制御部２４’に返す。
【０１２０】
書き込み時の他の動作は第１の実施の形態と同様である。
【０１２１】
（読み込み時）
図１４の構成は、図９の入出力制御部２１、アップダウンカウンタ８１、ライトアドレスカウンタ８４、リードアドレスカウンタ８６に対して、夫々同様の構成のｎ個の入出力制御部２１ａ〜２１ｎ、アップダウンカウンタ８１ａ〜８１ｎ、ライトアドレスカウンタ８４ａ〜８４ｎ、リードアドレスカウンタ８６ａ〜８６ｎを備えた点が異なる。
【０１２２】
大容量メモリ１４から読み出されたリードデータは、メモリバス１２を介してライトデータ制御部８２に供給される。第２のメモリライトアドレス／ライトイネーブル生成部８３’内のライトアドレスカウンタ８４ａ〜８４ｎのうちの１つは、メモリバスコマンド制御部２４’から得られるメモリバス転送開始信号によってカウントアップする。これにより、選択されたライトアドレスカウンタに対応する第２のメモリ２３の領域に、リードデータが蓄積される。第２のメモリ２３の対応する領域にバースト長分のデータが蓄積されると、第２のメモリライトアドレス／ライトイネーブル生成部８３’は、メモリバス転送完了信号をメモリバスコマンド制御部２４’に返す。
【０１２３】
また、第２のメモリリードアドレス／リードイネーブル生成部８５’内のリードアドレスカウンタ８６ａ〜８６ｎのうちの１つは、入出力制御部２１ａ〜２１ｎのうちの１つからの第２のメモリリクエストによりカウントアップし、第２のメモリ２３の対応する領域からリードデータが読み出される。この読み出し後に、第２のメモリリードアドレス／リードイネーブル生成部８５’は、第２のメモリアクノリッジを第２のメモリリクエストアービタ２６を介して、選択された入出力制御部２１ａ〜２１ｎの１つに返される。また、第２のメモリ２３の対応する領域から読み出されたリードデータは、リードデータ制御部８７から第２のメモリリクエストアービタ２６を介して、対応する入出力制御部２１ａ〜２１ｎの１つに送られる。
【０１２４】
読み出し時の他の動作は第１の実施の形態と同様である。
【０１２５】
図１５は第２の実施の形態の具体的な効果を説明するための説明図である。
【０１２６】
ライトアドレスカウンタ８４ａ〜８４ｎ及びリードアドレスカウンタ８６ａ〜８６ｎは、第１乃至第ｎのメモリサイズ設定に従って、第２のメモリ２３の各領域の使用容量を設定する。図１５に示すように、リード／ライトアドレスは、設定レジスタＲ’によって設定される各メモリサイズ設定で規定されるアドレスの範囲内で変化する。なお、図１５では、入出力制御部２１ａに対応してアドレス０〜２５５が使用可能領域であり、入出力制御部２１ｎに対してアドレス２５６〜１０２３が使用可能領域であることを示している。
【０１２７】
このように、本実施の形態においても、第１の実施の形態と同様の効果を得ることができると共に、本実施の形態においては、各モジュール内の複数のデータ処理エンジン毎に、メモリバス１２に対するアクセス頻度を制御することができる。これにより、各モジュールのデータ転送効率をその機能等に応じて更に高精度に制御することができる。
【０１２８】
図１６及び図１７は本発明の第３の実施の形態を示すブロック図である。図１６及び図１７において図１及び図１２と同一の構成要素には同一符号を付して説明を省略する。
【０１２９】
本実施の形態は大容量メモリ１４に対する各モジュールの実際のメモリアクセス数に応じて、設定レジスタの内容を設定するものである。
【０１３０】
図１７は図１６中のデータ転送装置Ｄ２１，Ｄ２２，…の具体的な構成を示している。データ転送装置Ｄ２１，Ｄ２２，…（以下、その１つを代表してデータ転送装置Ｄ２０という）は、図１２のメモリバスコマンド制御部２４’に代えてメモリバスコマンド制御部２８を採用した点がデータ転送装置Ｄ’と異なる。メモリバスコマンド制御部２８は、アクセプト数カウンタ２９を有している。アクセプト数カウンタ２９は、メモリバス１２からのコマンドアクセプト信号の入力数（アクセプト数）をカウントする。アクセプト数カウンタ２９からのアクセプト数カウント値は、図１６の制御部１６に与えられる。
【０１３１】
図１６において、データ転送装置Ｄ２１，Ｄ２２，…からのアクセプト数カウント値は、制御部１６に供給される。制御部１６は各データ転送装置Ｄ２１，Ｄ２２，…からのアクセプト数カウント値によって、各データ転送装置Ｄ２１，Ｄ２２，…と大容量メモリ１４との間の実際のアクセス頻度を求める。
【０１３２】
なお、設定レジスタＲ１’，Ｒ２’，…は、夫々図１２の設定レジスタＲ’と同一構成である。
【０１３３】
閾値設定レジスタ１７は、各データ転送装置Ｄ２１，Ｄ２２，…に対して許可するアクセプト数の上限閾値を保持している。制御部１６は閾値設定レジスタ１７からのアクセプト数の上限閾値とアクセプト数カウント値とに基づいて、各設定レジスタＲ１’，Ｒ２’，…に対して設定するメモリサイズ設定及びコマンドレジスタ数設定を決定して、各設定レジスタＲ１’，Ｒ２’，…に転送して設定させるようになっている。
【０１３４】
このように構成された実施の形態においては、各データ転送装置Ｄ２０内のメモリバスコマンド制御部２８内のアクセプト数カウンタ２９によって、メモリバス１２からのアクセプト数をカウントする。各データ転送装置Ｄ２０のアクセプト数カウンタ２９は、アクセプト数カウント値を制御部１６に出力する。これにより、制御部１６は、各データ転送装置Ｄ２１，Ｄ２２，…によるメモリバス１２に対する実際のアクセス頻度を監視することができる。
【０１３５】
閾値設定レジスタ１７は、各データ転送装置Ｄ２１，Ｄ２２，…のアクセプト数の上限閾値を保持する。制御部１６は、各データ転送装置Ｄ２１，Ｄ２２，…のアクセス上限閾値と、各データ転送装置Ｄ２１，Ｄ２２，…の実際のアクセス頻度とに基づいて、各設定レジスタＲ’に設定するメモリサイズ設定、コマンドレジスタ数設定を最適値に制御する。これにより、各データ転送装置Ｄ２１，Ｄ２２，…のアクセス頻度を、最適化することができる。
【０１３６】
このように本実施の形態においては、メモリアクセス頻度を動的にモニタすることよって、各データ転送装置のアクセス調整を行うことから、データ転送装置Ｄ２１，Ｄ２２，…のメモリアクセスを動的に最適化することができる。
【図面の簡単な説明】
【０１３７】
【図１】本発明の第１の実施の形態に係るデータ転送装置を採用したデータ処理装置を示すブロック図。
【図２】データ転送装置の具体的な構成の一例を示すブロック図。
【図３】図２中の入出力制御部２１の具体的な構成を示すブロック図。
【図４】図３中のバッファ回路３２の具体的な構成を示すブロック図。
【図５】図２中のメモリバスコマンド制御部２４の具体的な構成を示すブロック図。
【図６】図５中のコマンドレジスタ５３の出力及びコマンドアクセプト信号についてメモリバス１２のプロトコルの一例を示す説明図。
【図７】メモリバスコマンド群を発生するコマンドレジスタ５３の具体的な構成を示すブロック図。
【図８】第２のメモリ制御部２２を説明するためのブロック図。
【図９】第２のメモリ制御部２２を説明するためのブロック図。
【図１０】第１の実施の形態の動作を説明するための説明図。
【図１１】第１の実施の形態の動作を説明するための説明図。
【図１２】本発明の第２の実施の形態に係るデータ転送装置を示すブロック図。
【図１３】メモリ制御部２２’の書き込み時に必要な構成を示すブロック図。
【図１４】メモリ制御部２２’の読み出し時に必要な構成を示すブロック図。
【図１５】第２の実施の形態の具体的な効果を説明するための説明図。
【図１６】本発明の第３の実施の形態を示すブロック図。
【図１７】本発明の第３の実施の形態を示すブロック図。
【図１】
2009003893.tif 000003
【図２】
2009003893.tif 000004
【図３】
2009003893.tif 000005
【図４】
2009003893.tif 000006
【図５】
2009003893.tif 000007
【図６】
2009003893.tif 000008
【図７】
2009003893.tif 000009
【図８】
2009003893.tif 000010
【図９】
2009003893.tif 000011
【図１０】
2009003893.tif 000012
【図１１】
2009003893.tif 000013
【図１２】
2009003893.tif 000014
【図１３】
2009003893.tif 000015
【図１４】
2009003893.tif 000016
【図１５】
2009003893.tif 000017
【図１６】
2009003893.tif 000018
【図１７】
2009003893.tif 000019