(57)【要約】【課題】所定のアクセス制約が設けられたメモリに対するアクセス速度が低下することを抑制することができるメモリ制御回路を提供する。【解決手段】複数のバンクを有するメモリ１１０に対するインターリーブ制御を行うメモリ制御部１０５は、複数のディスクリプタを取得する取得部１０５Ａと、複数のディスクリプタの情報量を所定数で除算したときに剰余が出る場合に、複数のディスクリプタのうち１つのディスクリプタにより構成される第１アクセスと、複数のディスクリプタのうち１つのディスクリプタでないディスクリプタにより構成される所定数の整数倍の情報量を持つ第２アクセスと、をそれぞれメモリ１１０の異なるバンクに書き込む制御を行う制御部１０５Ｂと、を備える。【選択図】図１
2019200592.tif 000002
【特許請求の範囲】
【請求項１】
複数のバンクを有するメモリに対するインターリーブ制御を行うメモリ制御回路であって、
前記メモリに対するデータのアクセス制御に用いられる複数のアクセス制御情報を取得する取得手段と、
前記複数のアクセス制御情報の情報量を所定数で除算したときに剰余が出る場合に、前記複数のアクセス制御情報のうち１つのアクセス制御情報により構成される第１アクセスと、前記複数のアクセス制御情報のうち前記１つのアクセス制御情報でないアクセス制御情報により構成される前記所定数の整数倍の情報量を持つ第２アクセスと、をそれぞれ前記メモリの異なるバンクに書き込む制御を行う制御手段と、
を備えることを特徴とするメモリ制御回路。
【請求項２】
前記制御手段は、
前記剰余が出るか否かを判定する第１判定手段と、
前記剰余が出ると判定された場合、前記取得手段が取得した前記複数のアクセス制御情報を、前記第１アクセスと、前記１つのアクセス制御情報に接続する接続情報を付加した前記第２アクセスとに変更する変更手段と、
を備えることを特徴とする請求項１記載のメモリ制御回路。
【請求項３】
前記１つのアクセス制御情報は、連続した前記複数のアクセス制御情報のうち、最後のアクセス制御情報であり、前記第２アクセスの前記接続情報は、前記第１アクセスの書き込み先のアドレスを示す情報である、
ことを特徴とする請求項２記載のメモリ制御回路。
【請求項４】
前記制御手段は、前記メモリ制御回路に対して入力された情報が前記アクセス制御情報であるか否かを判定する第２判定手段、を備え、
前記入力された情報が前記アクセス制御情報であると前記第２判定手段が判定した場合に、前記書き込む制御が行われる、
ことを特徴とする請求項１乃至３のうち何れか１項に記載のメモリ制御回路。
【請求項５】
１以上のバスマスタから入力した１以上のアクセスを蓄積するバッファを備え、
前記制御手段は、前記バッファに蓄積されている前記１以上のアクセスが使用するバンクの情報に基づいて、前記第１アクセスと前記第２アクセスとを、それぞれ前記メモリの異なるバンクに書き込む制御を行う、
ことを特徴とする請求項１乃至４のうち何れか１項に記載のメモリ制御回路。
【請求項６】
前記制御手段は、先行して処理する前記１以上のアクセスが使用するバンクと異なるバンクに前記第１アクセスが書き込まれるように制御する、
ことを特徴とする請求項５記載のメモリ制御回路。
【請求項７】
前記メモリは、前記複数のバンクのうち同じバンクに、前記所定数に満たない情報量を持つ情報が連続して書き込まれる場合、一定の待ち時間が経過するまで、次の情報の書き込みが制限されるメモリである、
ことを特徴とする請求項１乃至６のうち何れか１項に記載のメモリ制御回路。
【請求項８】
複数のバンクを有するメモリに対するインターリーブ制御を行うメモリ制御回路に対して、前記メモリに対するデータのアクセス制御に用いられる複数のアクセス制御情報を出力する出力回路であって、
前記複数のアクセス制御情報の情報量を所定数で除算したときに剰余が出る場合に、前記複数のアクセス制御情報のうち１つのアクセス制御情報により構成される第１アクセスと、前記複数のアクセス制御情報のうち前記１つのアクセス制御情報でないアクセス制御情報により構成される前記所定数の整数倍の情報量を持つ第２アクセスと、をそれぞれ前記メモリの異なるバンクに書き込む要求を前記メモリ制御回路に出力する要求出力部、  を備えることを特徴とする出力回路。
【請求項９】
前記メモリ制御回路のバッファに蓄積されている１以上のバスマスタから入力した１以上のアクセスが使用するバンクの情報に基づいて、前記複数のアクセス制御情報を、前記第１アクセスと前記第２アクセスとに変更する変更手段、
を備えることを特徴とする請求項８記載の出力回路。
【請求項１０】
複数のバンクを有するメモリに対するインターリーブ制御を行うメモリ制御回路の制御方法であって、
前記メモリに対するデータのアクセス制御に用いられる複数のアクセス制御情報を取得する工程と、
前記複数のアクセス制御情報の情報量を所定数で除算したときに剰余が出る場合に、前記複数のアクセス制御情報のうち１つのアクセス制御情報により構成される第１アクセスと、前記複数のアクセス制御情報のうち前記１つのアクセス制御情報でないアクセス制御情報により構成される前記所定数の整数倍の情報量を持つ第２アクセスと、をそれぞれ前記メモリの異なるバンクに書き込む制御を行う工程と、
を有することをメモリ制御回路の制御方法。
【請求項１１】
前記剰余が出るか否かを判定する工程と、
前記剰余が出ると判定された場合、取得された前記複数のアクセス制御情報を、前記第１アクセスと、前記１つのアクセス制御情報に接続する接続情報を付加した前記第２アクセスとに変更する工程と、
を有することを特徴とする請求項１０記載のメモリ制御回路の制御方法。
【請求項１２】
前記１つのアクセス制御情報は、連続した前記複数のアクセス制御情報のうち、最後のアクセス制御情報であり、前記第２アクセスの前記接続情報は、前記第１アクセスの書き込む先のバンクのアドレスを示す情報である、
ことを特徴とする請求項１１記載のメモリ制御回路の制御方法。
【請求項１３】
前記メモリ制御回路に対して入力された情報が前記アクセス制御情報であると判定された場合に、前記書き込む制御を行う工程が行われる、
ことを特徴とする請求項１０乃至１２のうち何れか１項に記載のメモリ制御回路の制御方法。
【請求項１４】
１以上のバスマスタから入力した１以上のアクセスを蓄積するバッファに蓄積されている前記１以上のアクセスが使用するバンクの情報に基づいて、前記第１アクセスと前記第２アクセスとを、それぞれ前記メモリの異なるバンクに書き込む制御を行う、
ことを特徴とする請求項１０乃至１３のうち何れか１項に記載のメモリ制御回路の制御方法。
【請求項１５】
先行して処理する前記１以上のアクセスが使用するバンクと異なるバンクに前記第１アクセスが書き込まれるように制御する、
ことを特徴とする請求項１４記載のメモリ制御回路の制御方法。
【請求項１６】
前記メモリは、前記複数のバンクのうち同じバンクに、前記所定数に満たない情報量を持つ情報が連続して書き込まれる場合、一定の待ち時間が経過するまで、次の情報の書き込みが制限されるメモリである、
ことを特徴とする請求項１０乃至１５のうち何れか１項に記載のメモリ制御回路の制御方法。
【請求項１７】
複数のバンクを有するメモリに対するインターリーブ制御を行うメモリ制御回路に対して、前記メモリに対するデータのアクセス制御に用いられる複数のアクセス制御情報を出力する出力回路の制御方法であって、
前記複数のアクセス制御情報の情報量を所定数で除算したときに剰余が出る場合に、前記複数のアクセス制御情報のうち１つのアクセス制御情報により構成される第１アクセスと、前記複数のアクセス制御情報のうち前記１つのアクセス制御情報でないアクセス制御情報により構成される前記所定数の整数倍の情報量を持つ第２アクセスと、をそれぞれ前記メモリの異なるバンクに書き込む要求を前記メモリ制御回路に出力する工程、
を有することを特徴とする出力回路の制御方法。
【請求項１８】
前記メモリ制御回路のバッファに蓄積されている１以上のバスマスタから入力した１以上のアクセスが使用するバンクの情報に基づいて、前記複数のアクセス制御情報を、前記第１アクセスと前記第２アクセスとに変更する、
ことを特徴とする請求項１７記載の出力回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリに対してデータの転送制御を行うメモリ制御回路、出力回路、メモリ制御回路の制御方法および出力回路の制御方法に関するものである。
【背景技術】
【０００２】
メモリに対してデータの転送を行う方法として、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）が知られている。ＤＭＡ転送においては、効率的にデータ転送を行うために、ディスクリプタが用いられる。ディスクプリタは、転送元アドレスやデータ量、転送先アドレス、次のディスクリプタのアドレス等の転送のための設定を含む情報である。当該ディスクリプタを用いたデータ転送が行われることで、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が介在することなく、メモリ上に点在するデータを転送先に転送することが可能になる。近年の高機能化および多機能化したＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）回路においては、使用されるディスクリプタの数が膨大な数（例えば、数千個以上）になる場合がある。ディスクリプタの数が多くなると、メモリの帯域が圧迫され、メモリに対するアクセス速度が低下する。
【０００３】
例えば、特許文献１には、ディスクリプタのサイズを小さくする画像処理装置が提案されている。当該画像処理装置は、ｍ個の主走査方向ディスクリプタとｎ個の副走査方向ディスクリプタとを組み合わせて、ｍ×ｎ個のブロック領域の任意のブロック領域に割り当てられたブロックディスクリプターを生成している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−６９６１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の技術は、単にディスクリプタの数を削減するだけで、メモリの種類に応じた固有のアクセス制約を考慮したものではない。メモリには、その種類に応じて、固有のアクセス制約が設けられていることがある。メモリに固有のアクセス制約が設けられている場合、単にディスクリプタの数を削減したとしても、メモリに対するアクセス速度低下を抑制することが難しい。
【０００６】
本発明の目的は、所定のアクセス制約が設けられたメモリに対するアクセス速度が低下することを抑制することができるメモリ制御回路、メモリ制御回路の制御方法、出力回路および出力回路の制御方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明のメモリ制御回路は、複数のバンクを有するメモリに対するインターリーブ制御を行うメモリ制御回路であって、前記メモリに対するデータのアクセス制御に用いられる複数のアクセス制御情報を取得する取得手段と、前記複数のアクセス制御情報の情報量を所定数で除算したときに剰余が出る場合に、前記複数のアクセス制御情報のうち１つのアクセス制御情報により構成される第１アクセスと、前記複数のアクセス制御情報のうち前記１つのアクセス制御情報でないアクセス制御情報により構成される前記所定数の整数倍の情報量を持つ第２アクセスと、をそれぞれ前記メモリの異なるバンクに書き込む制御を行う制御手段と、を備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、所定のアクセス制約が設けられたメモリに対するアクセス速度が低下することを抑制することができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態に係るＬＳＩのハードウェア構成を概略的に示す図である。
【図２】ディスクリプタの構成例を示す図である。
【図３】第１の実施形態のメモリ制御部の処理の流れを示すフローチャートである。
【図４】第１の実施形態におけるディスクリプタの書き込みタイミングを示す図である。
【図５】第２の実施形態に係るＬＳＩのハードウェア構成を概略的に示す図である。
【図６】第２の実施形態のメモリ制御部の処理の流れを示すフローチャートである。
【図７】第２の実施形態におけるディスクリプタの書き込みタイミングを示す図である。
【図８】第３の実施形態に係るＬＳＩのハードウェア構成を概略的に示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明の各実施形態について図面を参照しながら詳細に説明する。しかしながら、以下の各実施形態に記載されている構成はあくまで例示に過ぎず、本発明の範囲は各実施形態に記載されている構成によって限定されることはない。
【００１１】
＜第１の実施形態＞
図１は、第１の実施形態に係るＬＳＩ１０の構成を示す。ＬＳＩ１０は、複数のバスマスタ１００〜１０２、ディスクリプタアクセスマスタ１０３、メモリバス１０４、メモリ制御部１０５およびメモリ１１０を有する。また、ＬＳＩ１０は、マイクロコンピュータで構成され得るＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１７０を有しており、当該ＣＰＵ１７０が、ＬＳＩ１０内の各種コマンドの解析、各種設定等の回路全体を統括制御する。複数のバスマスタ１００〜１０２、ディスクリプタアクセスマスタ１０３、メモリバス１０４、メモリ制御部１０５およびメモリ１１０は、ＬＳＩ１０の一部を構成する回路である。メモリ制御部１０５は、メモリ制御回路である。ＬＳＩ１０は、他の機能を有していてもよい。バスマスタ１００〜１０２は、ＣＰＵ１７０から与えられた処理を行い、処理内容に応じて、メモリバス１０４を介して、メモリ１１０へのアクセス（アクセス要求）をメモリ制御部１０５に通知し、メモリ１１０にアクセスを行う。バスマスタの数は、３つに限られず、任意の数であってよい。ディスクリプタアクセスマスタ１０３は、メモリ１１０内や、ＬＳＩ１０の外部との間で、ダイレクトメモリアクセス（以下、ＤＭＡとする）によるデータ転送が行われる際に使用されるディスクリプタを生成する。ディスクリプタは、メモリ１１０に対するデータのアクセス制御に用いられるアクセス制御情報である。ディスクリプタは、転送元アドレスやデータ量、転送先アドレス、次のディスクリプタのアドレス等の転送のための設定を示す情報を含む。ＤＭＡによりメモリ１１０に転送されるデータとしては、例えば、撮像装置やカメラ機能が搭載されているスマートフォン等が撮影した画像データが適用可能であり、メモリ１１０に記憶された画像データに対して画像処理等が施されてもよい。ディスクリプタアクセスマスタ１０３は、メモリバス１０４を介して、生成したディスクリプタをメモリ制御部１０５に出力する。メモリ制御部１０５は、ディスクリプタアクセスマスタ１０３から入力したディスクリプタを、メモリ１１０に書き込む。
【００１２】
ここで、メモリ１１０について説明する。メモリ１１０は、ＣＰＵ１７０の処理やプログラムの格納、ＬＳＩ１０内で生成される中間データ等の一時記録手段として用いられる。また、図１に示されるように、メモリ１１０は、データ記憶エリアが並列動作できるインターリーブが可能なバンク０〜３に分割されている。各実施形態におけるメモリ１１０には、書き込みを行う際に所定の制約が存在する。各実施形態におけるメモリ１１０には、ＬＰＤＤＲ４の規格に準拠したＬＬＰＤＲ−ＳＤＲＡＭ（Ｌｏｗ  Ｐｏｗｅｒ  ＤＤＲ−ＳＤＲＡＭ）が適用されるものとして説明する。ＬＰＤＤＲ４規格に準拠したメモリ１１０に対して、上記所定数（３２バイト）に満たないサイズのアクセスによる書き込みが行われる場合、ライトデータの一部をマスクした書き込みが行わる。この場合、専用のライトコマンドであるＭａｓｋｅｄ  Ｗｒｉｔｅ（以下、ＭＷＲとする）を実行する必要がある。ＭＷＲの実行の際には、メモリに対する通常の書き込みを実行する場合には存在しない所定の制約がある。当該制約の下でＭＷＲが実行される場合、ＭＷＲの対象バンクに対する書き込みアクセスから、一定時間Ｔｃ（ＣＡＳ  ｔｏ  ＣＡＳ  ｄｅｌａｙ  Ｍａｓｋｅｄ  Ｗｒｉｔｅ、ＣＣＤＭＷ）が経過するまで、次の書き込みアクセスの実行が制限される。上記Ｔｃは、ＬＬＰＤＲ−ＳＤＲＡＭの３２サイクル分に相当し、書き込み時のアクセスバーストサイズを１６とした場合、４回分（１２８バイト）のアクセスに相当する。上記Ｔｃの待ち時間が生じると、当該待ち時間に起因して、メモリ１１０の同一バンクに対するアクセスの書き込み時間が長くなる。一方、メモリ１１０に対する書き込みのアクセスのサイズが、上記所定数（３２バイト）の整数倍である場合には、メモリ１１０の同一バンクに対するアクセスの書き込み時に、上記Ｔｃの待ち時間は生じない。メモリ制御部１０５は、上述した制約があるメモリ１１０に対する書き込み制御を行う。
【００１３】
図２を参照して、ディスクリプタの構成について説明する。各実施形態のディスクリプタのサイズ（情報量）は、２４バイトとして説明するが、ディスクリプタのサイズは任意のサイズであってよい。図２（Ａ）は、ディスクリプタの構成例である。図２（Ａ）のディスクリプタの最初の４バイトは、ヘッダである。ヘッダには、フラグ等の各種制御情報が含まれる。図２（Ａ）のディスクリプタにおけるヘッダの次の８バイトは転送元アドレスを示し、転送元アドレスの次の８バイトは転送先アドレスを示す。連続した複数のディスクリプタは、基本的にメモリ１１０内の連続した領域に書き込まれるが、連続していない領域に書き込まれることもある。この場合、図２（Ｂ）に示されるディスクリプタが用いられる。
【００１４】
図２（Ｂ）は、連続した次のディスクリプタを示す情報を含むディスクリプタの構成例である。ディスクリプタのヘッダには、接続先（チェーン先）が異なることを示すフラグや終了フラグが含まれる。チェーン先が異なることを示すフラグがある場合、ディスクリプタは、図２（Ｂ）に示されるように、フラグの次の８バイトが、メモリ１１０内における次のディスクリプタのアドレス（次ディスクリプタアドレス下位および上位）を示す。
【００１５】
図２（Ｂ）のディスクリプタにより、各ディスクリプタのチェーンが形成され、各ディスクリプタの連続性が維持される。図２（Ｂ）のディスクリプタにおいて、１２バイトは、リザーブの領域となる。ディスクリプタのヘッダに終了フラグがある場合、当該ディスクリプタは、ディスクリプタのチェーンが終了することを示す。ヘッダに終了フラグがあるディスクリプタが読み込まれた場合、最初の４バイトのヘッダのみが読み込まれ、残りの２０バイトは読み込まれない。ディスクリプタのヘッダに、チェーン先が異なることを示すフラグと終了フラグとの両者がない場合、各ディスクリプタは、メモリ１１０内の連続したアドレスに配置され、順次アクセスされる。
【００１６】
図１に示されるように、メモリ制御部１０５は、取得部１０５Ａおよび制御部１０５Ｂを有する。制御部１０５Ｂは、ディスクリプタアクセス判定部１０６、アクセスサイズ判定部１０７およびディスクリプタ変更部１０８を有する。メモリ制御部１０５は、各マスタ（バスマスタ１００〜１０２およびディスクリプタアクセスマスタ１０３）からのアクセスを、ＣＰＵ１７０から設定される優先順位に従い調停し、メモリ１１０に対するアクセス制御を行う。メモリ１１０は、複数のバンクを有しており、メモリ制御部１０５は、メモリ１１０の各バンクに対して、インターリーブ制御を行う。
【００１７】
取得部１０５Ａは、ディスクリプタアクセスマスタ１０３が出力した複数のディスクリプタを取得する取得手段である。また、取得手段１０５Ａは、バスマスタ１００〜１０２が出力したアクセス要求を取得する。ディスクリプタアクセス判定部１０６は、アクセスを出力したマスタがディスクリプタアクセスマスタ１０３であるか否かを判定する。つまり、ディスクリプタアクセス判定部１０６は、メモリ制御部１０５に入力されたアクセスがディスクリプタであるか否かを判定する。ディスクリプタアクセス判定部１０６は、第２判定手段である。ディスクリプタアクセス判定部１０６がディスクリプタであると判定した場合、アクセスサイズ判定部１０７は、複数のディスクリプタのサイズを、所定数で除算したときに剰余が出るか否かを判定する。当該複数のディスクリプタのサイズは、各ディスクリプタのそれぞれのサイズ（情報量）の合計値である。以下、所定数は３２バイトであるものとして説明するが、所定数は任意の値であってもよい。ディスクリプタアクセス判定部１０６は、各ディスクリプタのサイズが「３２」で割り切れる場合、剰余が出ないと判定し、割り切れない場合、剰余が出ると判定する。アクセスサイズ判定部１０７は、第１判定手段である。
【００１８】
ディスクリプタ変更部１０８は、ディスクリプタアクセスマスタ１０３からのアクセス（連続した複数のディスクリプタにより構成されるアクセス）を、１つのディスクリプタと、１以上の他のディスクリプタとに分割する。１つのディスクリプタは、１つのアクセス制御情報に対応し、ディスクリプタサイズは、上述の「剰余」に対応する。他のディスクリプタは、他のアクセス制御情報に対応し、ディスクリプタサイズは、上述の「所定数」の整数倍に対応する。
【００１９】
例えば、ディスクリプタ変更部１０８は、ディスクリプタアクセスマスタ１０３からのアクセスを、最後のディスクリプタと、最後以外の１以上の他のディスクリプタとに分割する。そして、ディスクリプタ変更部１０８は、ディスクリプタアクセスマスタ１０３からのアクセスを、最後のディスクリプタにより構成される第１アクセスと、最後以外の１以上のディスクリプタに接続情報を付加した第２アクセスとに変更する。第１アクセスは、上記剰余に対応するアクセスであり、第２アクセスは、上記所定数の整数倍に対応するアクセスである。第１アクセスおよび第２アクセスは、メモリ１１０のそれぞれ異なるバンクに対する書き込みアクセスである。また、第２アクセスは、上記所定数の整数倍（Ｎをゼロ以上の整数とした場合におけるＮ倍）の情報量を持つ。ディスクリプタ変更部１０８は、変更手段である。
【００２０】
以下、各のディスクリプタのサイズはそれぞれ２４バイトであり、且つメモリ１１０内の連続した３つのディスクリプタを配置するアクセスを、メモリ制御部１０５がディスクリプタアクセスマスタ１０３から入力した場合について説明する。この場合、３つのディスクリプタにより構成されるアクセスのサイズは、７２バイトになる。ディスクリプタアクセスマスタ１０３からのアクセスは、４つ以上の連続したディスクリプタにより構成される場合もある。また、ディスクリプタのサイズは、任意のサイズであってよい。
【００２１】
次に、図３のフローチャートを参照して、メモリ制御部１０５が実行する処理の流れについて説明する。取得部１０５Ａは、メモリ１１０に対するアクセス（アクセス要求）を取得したか否かを判定する（ステップＳ２０１）。ステップＳ２０１でＮＯと判定された場合、メモリ１１０に対するアクセスがないため、本実施形態の処理は行われない。ステップＳ２０１でＹＥＳと判定された場合、ディスクリプタアクセス判定部１０６は、メモリ１１０に対するアクセスが、ディスクリプタアクセスマスタ１０３から出力されたアクセスであるか否かを判定する（ステップＳ２０２）。ステップＳ２０２でＮＯと判定された場合、メモリ１１０に対するアクセスは、ディスクリプタアクセスマスタ１０３から出力されたアクセスではない。つまり、当該アクセスは、ディスクリプタにより構成されるアクセスではない。従って、本実施形態の処理は終了する。ステップＳ２０２でＹＥＳと判定された場合、メモリ１１０に対するアクセスは、ディスクリプタアクセスマスタ１０３から出力されたアクセスであり、ディスクリプタにより構成されるアクセスである。この場合、取得部１０５Ａは、複数のディスクリプタを取得している。
【００２２】
ディスクリプタ変更部１０８は、各ディスクリプタのサイズを、所定数で除算し（ステップＳ２０３）、剰余が出るか否かを判定する（ステップＳ２０４）。各ディスクリプタのサイズは、ディスクリプタアクセスマスタ１０３から出力されたアクセスのサイズである。ステップＳ２０４でＮＯと判定された場合、剰余が出ないため、本実施形態の処理は終了する。ステップＳ２０４でＮＯと判定された場合、各ディスクリプタのそれぞれのサイズの合計は、上記所定数の整数倍となる。この場合、上述したＬＰＤＤＲ４規格に準拠したメモリ１１０に対するアクセスに、上記Ｔｃの待ち時間は生じない。従って、ステップＳ２０４でＮＯと判定された場合、本実施形態の処理は終了する。例えば、上記所定数が「３２」である場合、３２バイトの整数倍の単位の書き込みアクセスであれば、Ｔｃの待ち時間は生じない。
【００２３】
３つの連続したディスクリプタにより構成されるアクセスのサイズが７２バイトであり、上記所定数が「３２」である場合、「７２」を「３２」で除算すると、剰余が出るため、ステップＳ２０４の判定はＹＥＳとなる。この場合、ディスクリプタ変更部１０８は、連続した３つのディスクリプタにより構成されるアクセスを、上記剰余に対応する第１アクセスと上記所定数の整数倍に対応する第２アクセスとに変更する。この際、ディスクリプタ変更部１０８は、連続した３つのディスクリプタを、最後のディスクリプタと、最後以外のディスクリプタ（先頭および２番目の２つのディスクリプタ）とに分割する（ステップＳ２０５）。ディスクリプタ変更部１０８は、最後以外のディスクリプタに、次のディスクリプタのアドレスとして、分割された最後のディスクリプタのアドレスを示す接続情報を付加する（ステップＳ２０６）。
【００２４】
この際、ディスクリプタ変更部１０８は、第２アクセスを、先頭および２番目の連続した２つのディスクリプタの次に接続情報を付加する。この場合、第２アクセスは、先頭から、連続した３つのディスクリプタのうち先頭のディスクリプタ、２番目のディスクリプタ、接続情報の順番で構成される。そして、ディスクリプタ変更部１０８は、３つの連続したディスクリプタを、最後のディスクリプタを第１アクセスに変更し、上記のように最後以外のディスクリプタに接続情報が付加された第２アクセスに変更する（ステップＳ２０７）。第１アクセスは、最後のディスクリプタにより構成される。
【００２５】
ディスクリプタ変更部１０８は、上記接続情報を、図２（Ｂ）に示した次のディスクリプタのアドレスを示すディスクリプタのうち上位１６バイトとして、先頭および２番目のディスクリプタに付加する。先頭および２番目のディスクリプタの合計サイズは４８バイトであり、接続情報は１６バイトであるため、第２アクセスのサイズは６４バイトとなり、所定数（３２バイト）の２倍となる。第２アクセスに含まれる接続情報は、メモリ１１０に記憶される最後のディスクリプタ（第１アクセスを構成するディスクリプタ）のアドレスを示す。従って、第２アクセスに含まれる２つのディスクリプタと、第１アクセスを構成する最後のディスクリプタとの連続性が維持される。
【００２６】
そして、制御部１０５Ｂは、第１アクセスと第２アクセスとを、それぞれメモリ１１０の異なるバンクに書き込む制御を行う（ステップＳ２０８）。当該制御により、メモリ１１０の異なるバンクに第１アクセスと第２アクセスとがインターリーブにより書き込まれる。なお、図面において、バンクは「Ｂａｎｋ」と表記される。第１アクセスと第２アクセスとが異なるバンクに書き込まれたとしても、第２アクセスは、第１アクセスを構成する最後のディスクリプタに対する接続情報を含んでいる。従って、それぞれ異なるバンクに書き込まれる第１アクセスと第２アクセスとの連続性が維持される。
【００２７】
図４（Ａ）は、第１の実施形態におけるディスクリプタ変更部１０８の制御が行われない場合のデータの書き込みタイミングの例を示す。図４（Ｂ）は、第１の実施形態におけるディスクリプタ変更部１０８の制御が行われる場合のデータの書き込みタイミングの例を示す。図４（Ａ）および図４（Ｂ）において、４００、４０２、４０４、４０６、４１１および４１２はアドレスを含んだコマンドを表している。また、図４（Ａ）および図４（Ｂ）において、４０３、４０５、４０７、４１３および４１４はコマンドに対する書き込みデータ（ライトデータ）を表している。４０１は、メモリ１１０内のバンク（Ｂａｎｋ０）に設けられたディスクリプタ書き込み領域を表している。
【００２８】
図４（Ａ）において、コマンド４００は、メモリ１１０のＢａｎｋ０を有効にする。ここで、７２バイトのアクセスを、所定数（３２バイト）ごとに分割した場合、「７２＝２×３２＋８」となり、端数の８バイトが発生する。この場合、７２バイトのうち３２バイト分のデータは、それぞれ、コマンド４０２および４０４により、領域４０１にデータ４０３および４０５で書き込まれる。端数の８バイトは、同一バンク（Ｂａｎｋ０）へのアクセスであり、かつ、３２バイト未満であるため、ＭＷＲコマンドが必要になる。従って、事前にＴｃ期間をあけたコマンド４０６が発行され、領域４０１にデータ４０７が書き込まれる。図４（Ａ）に示されるように、ディスクリプタ変更部１０８による制御（分割、変更等）が行われない場合、コマンド４０４の後、コマンド４０６が発行されるまで、Ｔｃの待ち時間が生じることになる。当該待ち時間Ｔｃは、メモリ１１０に対するアクセス速度を低下させる要因となる。
【００２９】
図４（Ｂ）は、上述したように、第１の実施形態におけるディスクリプタ変更部１０８の制御が行われる場合のデータの書き込みタイミングの例を示す。ディスクリプタ変更部１０８は、ディスクリプタアクセスマスタ２０３からの７２バイト（＝３×２４バイト）のアクセスを、第１アクセスと第２アクセスとに変更する。第１アクセスは、最後のディスクリプタにより構成される。第２アクセスは、先頭から２つのディスクリプタの４８バイト（＝２×２４バイト）と、最後のディスクリプタへの接続先を示す１６バイトの接続情報とにより構成される。従って、第２アクセスのサイズは、６４バイトになる。
【００３０】
図４（Ｂ）に示されるように、コマンド４００でメモリ１１０のＢａｎｋ０が有効にされる。制御部１０５Ｂは、コマンド４０２で、上記６４バイトのうち、３２バイトを領域４０８（Ｂａｎｋ０）にデータ４０３で書き込む。次に、制御部１０５Ｂは、コマンド４０４で３２バイトを領域４０８（Ｂａｎｋ０）にデータ４１３で書き込む。この際のデータ４１３のうち１６バイトは、ディスクリプタアクセスマスタ２０３からの７２バイトのうちの１６バイトである。データ４１３のうち残りの１６バイトは、次のディスクリプタ（最後のディスクリプタ）に対する接続先を示す接続情報（図２（Ｂ）のディスクリプタの上位１６バイト）である。
【００３１】
制御部１０５Ｂは、当該３２バイトのデータ４１３を領域４０８に書き込んでいる間に、コマンド４１１によりＢａｎｋ１を有効にする。そして、制御部１０５Ｂは、コマンド４１２で、ディスクリプタアクセスマスタ２０３からの７２バイトのうちの残りの２４バイト（最後のディスクリプタ）を領域４０９（Ｂａｎｋ１）にデータ４１４で書き込む。ここで、Ｂａｎｋ１に対する書き込みのアクセスのサイズは、所定数（３２バイト）未満であるため、ＭＷＲコマンドが発生する。しかし、制御部１０５Ｂは、第１アクセスと第２アクセスとを、メモリ１１０の異なるバンクに書き込んでいる。このため、バンクインターリーブを適応することができ、Ｔｃ期間が隠ぺいされる。これにより、例えば、固定サイズのディスクリプタを連続してメモリ１１０に書き込む場合に、ＭＷＲという制約が存在したとしても、当該制約に起因する待ち時間Ｔｃが隠ぺいされる。従って、メモリ１１０に対する書き込み速度が低下することを抑制できる。
【００３２】
第１の実施形態では、ディスクリプタの構成として、フラグに応じて、図２（Ａ）と図２（Ｂ）との２種類を適用した例を説明したが、各ディスクリプタが、次のディスクリプタへの接続情報を含んでいてもよい。
【００３３】
＜第２の実施形態＞
第２の実施形態について説明する。図５は、第２の実施形態のＬＳＩ１０の構成を示す図である。第２の実施形態のＬＳＩ１０は、コマンドバッファ１２０を有する。コマンドバッファ１２０は、バッファに対応する。その他の構成は、第１の実施形態と同様である。メモリ制御部１０５は、各マスタ（バスマスタ１００〜１０２およびディスクリプタアクセスマスタ１０３）からのアクセスを、ＣＰＵ１７０から設定される優先順位に従い調停し、メモリ１１０とのアクセス制御を行う。コマンドバッファ１２０は、バスマスタ１００〜１０２から入力したアクセスをバッファリングする機構を有する。コマンドバッファ１２０は、バッファリングするアクセスが書き込みアクセスであれば、データを含めてバッファリングし、メモリ１１０に対するアクセスが可能になったら書き込みを行う。バッファリングするアクセスが読み出しアクセスであれば、コマンドバッファ１２０は、コマンドのみ受け付け、メモリ１１０に対するアクセスが可能になったら読み出し、要求元のマスタ（バスマスタ）へデータを送信する。また、ディスクリプタ変更部１０８は、最後のディスクリプタに対する接続先を示す接続情報を第２アクセスに付加する際に、コマンドバッファ１２０に蓄積されており、且つ先に処理されるアクセスのバンク情報を確認する。そして、ディスクリプタ変更部１０８は、確認したバンク情報に基づいて、バンクインターリーブ可能なようにチェーン先のバンクを選択する。
【００３４】
図６は、第２の実施形態のメモリ制御部１０５の動作を示すフローチャートである。ステップＳ２０７−１およびＳ２０８以外の処理は、第１の実施形態と同様である。ディスクリプタ変更部１０８は、コマンドバッファ１２０に、既に蓄積されているコマンドのアクセス先のバンクの情報に基づいて、第１アクセス（最後のディスクリプタ）を書き込むバンクを選択する（ステップＳ２０７−１）。ディスクリプタ変更部１０８は、コマンドバッファ１２０に蓄積されているコマンドがアクセスしないバンクを、第１アクセスの書き込み先のバンクとして選択してもよい。この際、ディスクリプタ変更部１０８は、第２アクセスに付加する接続情報に、第１アクセスの書き込み先のバンクを示す情報（例えば、バンクのアドレス等）を設定する。これにより、それぞれ異なる書き込まれる第１アクセスと第２アクセスとの間でチェーンが形成される。
【００３５】
図７は、第２の実施形態におけるディスクリプタ変更部１０８の制御が行われる場合のデータの書き込みタイミングの例を示す。図７において、７００、７０１、７０３、７０４、７０６、７０８および７０９はアドレスを含んだコマンドを表している。７０２、７０５、７０７および７１０はコマンドに対する書き込みデータを表している。７１１、７１２、７１３、７１４はメモリ１１０内のバンクに設けられたディスクリプタ書き込み領域を表している。コマンド７００は、コマンドバッファ１２０内に、先行して蓄積されていたバスマスタからの書き込み要求を処理するためのコマンドで、メモリ１１０のＢａｎｋ１を有効にする。次に、制御部１０５Ｂは、コマンド７０１で、コマンドバッファ１２０に蓄積されていた書き込み要求のデータを、領域７１２（Ｂａｎｋ１）にデータ７０２で書き込む。次に、制御部１０５Ｂは、コマンド７０３で、メモリ１１０のＢａｎｋ０を有効にする。制御部１０５Ｂは、コマンド７０４で、ディスクリプタアクセスマスタ２０３から入力した７２バイトのうち、３２バイトを領域７１１（Ｂａｎｋ０）にデータ７０５で書き込み。次に、制御部１０５Ｂは、コマンド７０６で、同一バンク（Ｂａｎｋ１）に３２バイトを領域７１１にデータ７０７で書き込む。この際の１６バイト（データ７０７）は、ディスクリプタアクセスマスタ２０３から入力した７２バイトのうちの１６バイトである。そして、残りの１６バイトは、第１アクセスを構成する最後のディスクリプタへの接続先を示す接続情報である。
【００３６】
ディスクリプタ変更部１０８は、コマンドバッファ１２０に蓄積されているアクセス（コマンド７００および７０１で処理されるアクセス）が使用するバンクと異なるバンクを、最後のディスクリプタ（第１アクセス）の書き込み先として選択する。つまり、ディスクリプタ変更部１０８は、第２アクセスに含まれる第１アクセスへの接続先を示す接続情報を、コマンドバッファ１２０に蓄積されているアクセスとは異なるバンク（Ｂａｎｋ２）の領域７１３のアドレスに設定する。続いて、データ７０７が書き込まれている間に、制御部１０５Ｂは、コマンド７０８でメモリ１１０のＢａｎｋ２を有効にする。そして、制御部１０５Ｂは、コマンド７０９で、ディスクリプタアクセスマスタ２０３から入力した７２バイトのうちの残りの２４バイトを書き込む。ここで、ＭＷＲコマンドが発生するが、Ｔｃ期間は、ディスクリプタアクセスマスタ２０３からのアクセスで既に処理済のアクセスとコマンドバッファ５０１のアクセスとを合わせることで確保できている。このため、第２アクセスだけではなく、コマンドバッファ５０１に蓄積されているアクセスも加味したバンクインターリーブを適用することができ、Ｔｃ期間の隠ぺい効果をより高めることができる。その結果、ＭＷＲという制約があるメモリ１１０に対するアクセス時間が遅くなることを、より効率的に抑制することができる。
【００３７】
また、ディスクリプタ変更部１０８は、コマンドバッファ１２０に蓄積されているコマンドのうち、ｔＣＣＤＭの１２８バイト以上の処理があるバンクを、第１アクセスの書き込み先のバンクとして選択してもよい。ｔＣＣＤＭの１２８バイト以上の処理があるバンクに対して第１アクセスが書き込まれる場合、第１アクセスの書き込みのコマンド自体は、先行して発行できる。このため、ｔＣＣＤＭの１２８バイト以上の処理があるバンクに対して第１アクセスが書き込まれた場合、当該バンクにおいて、上記の処理が終了した後、第１アクセス（最後のディスクリプタ）を迅速に書き込むことができる。これにより、第１アクセスの待ち時間Ｔｃを隠ぺいすることができる。
【００３８】
＜第３の実施形態＞
第３の実施形態について説明する。図８は、第３の実施形態のＬＳＩ１０の構成を示す図である。第３の実施形態のＬＳＩ１０は、第２の実施形態のＬＳＩ１０のうち、メモリ制御部１０５およびディスクリプタアクセスマスタ１０３の構成が異なる。第３の実施形態のメモリ制御部１０５は、ディスクリプタアクセス判定部１０６およびコマンドバッファ１２０を有する。第３の実施形態におけるディスクリプタアクセス判定部１０６およびコマンドバッファ１２０は、第２の実施形態と同様である。第３の実施形態において、ディスクリプタアクセスマスタ１０３は、出力回路に相当する。
【００３９】
第３の実施形態のディスクリプタアクセスマスタ１０３は、アクセスサイズ判定部１５７、ディスクリプタ変更部１５８、コマンドバッファ確認部１５９および要求出力部１６０を有する。コマンドバッファ確認部１５９は、メモリ制御部１０５に対して、コマンドバッファ１２０に蓄積されているコマンドに関する各種情報を確認する。要求出力部１６０は、メモリ制御部１０５のメモリ制御部１０５に対する各種の要求を出力する。
【００４０】
以上の構成において、メモリ制御部１０５は、各マスタ（バスマスタ１００〜１０２およびディスクリプタアクセスマスタ１０３）からのアクセスを、ＣＰＵ１７０から設定される優先順位に従い調停し、メモリ１１０に対するアクセス制御を行う。コマンドバッファ１２０は、バスマスタ１００〜１０２から入力したアクセスをバッファリングする機構を有する。コマンドバッファ１２０は、バッファリングするアクセスが書き込みアクセスであれば、データを含めてバッファリングし、メモリ１１０に対するアクセスが可能になったら書き込みを行う。バッファリングするアクセスが読み出しアクセスであれば、コマンドバッファ１２０は、コマンドのみ受け付け、メモリ１１０に対するアクセスが可能になったら読み出し、要求元のマスタ（バスマスタ）へデータを送信する。
【００４１】
アクセスサイズ判定部１５７は、ディスクリプタアクセスマスタ１０３がメモリ制御部１０５に連続した複数のディスクリプタにより構成されるアクセスを出力する前に、当該アクセスのサイズを、所定数で除算した場合に余剰が出るか否かを判定する。第３の実施形態のアクセスサイズ判定部１５７は、判定部に対応する。また、コマンドバッファ確認部１５９は、メモリバス１０４を介して、コマンドバッファ１２０に蓄積されているアクセスの数やアクセスサイズ、アクセスタイプ（書き込みまたは読み出し）、アドレス情報等のコマンドに関する各種情報を確認する。
【００４２】
このため、コマンドバッファ確認部１５９は、メモリ制御部１０５のコマンドバッファ１２０に蓄積されているコマンドに関する情報を確認するための確認要求を発行する。要求出力部１６０は、メモリバス１０４を介して、確認要求をメモリ制御部１０５に出力する。メモリ制御部１０５は、当該確認要求に応じて、コマンドバッファ１２０に蓄積されているコマンドに関する情報を、ディスクリプタアクセスマスタ１０３に対して返信する。これにより、ディスクリプタアクセスマスタ１０３は、コマンドバッファ１２０に蓄積されているコマンドに関する情報を取得する。
【００４３】
ここで、メモリ１１０の書き込み時のアクセスバーストサイズを「１６」とした場合の１回分のアクセス単位は、３２バイト（上記の所定数）であるとする。アクセスサイズ判定部１５７は、ディスクリプタアクセスマスタ１０３が出力するアクセス（連続した複数のディスクリプタ）のサイズを、「３２」で除算した場合、剰余が出るか否かを判定する。剰余が出るとアクセスサイズ判定部１５７が判定した場合、ディスクリプタ変更部１５８は、連続した複数のディスクリプタを、最後のディスクリプタと、当該最後のディスクリプタ以外の１以上の他のディスクリプタとに分割する。そして、ディスクリプタ変更部１５８は、当該他のディスクリプタに、最後のディスクリプタに接続する接続情報を付加する。当該接続情報は、例えば、図２（Ｂ）のディスクリプタの上位１６バイトである。上記最後のディスクリプタは、第１アクセスとなり、接続情報が付加された他のディスクリプタは、第２アクセスとなる。ディスクリプタ変更部１５８は、ディスクリプタアクセスマスタ１０３が出力するアクセスに、第１アクセスと第２アクセスとをそれぞれ異なるバンクに書き込む設定を行う。
【００４４】
また、ディスクリプタ変更部１５８は、コマンドバッファ１２０に蓄積されているコマンドに関する各種情報に基づいて、メモリ１１０内の複数のバンクのうち第１アクセスの書き込み先のバンクを選択する。この際、ディスクリプタ変更部１５８は、第２アクセスおよびコマンドバッファ１２０に蓄積されているアクセスによる処理で、Ｔｃの時間を確保できるバンクを第１アクセスの書き込み先のバンクに選択する。ディスクリプタ変更部１５８は、第２アクセスに付加する接続情報を、選択した第１アクセスのアドレスに設定する。
【００４５】
要求出力部１６０は、上記第１アクセスおよび第２アクセスを含むアクセス要求を、メモリバス１０４を介して、メモリ制御部１０５に出力する。メモリ制御部１０５は、上記アクセス要求に基づいて、第１アクセスと第２アクセスとをそれぞれ異なるバンクに書き込む。
【００４６】
第３の実施形態によれば、ディスクリプタアクセスマスタ１０３が、アクセスサイズの判定やディスクリプタの変更等を行い、さらにコマンドバッファ１２０の状況も加味した書き込み制御をメモリ制御部１０５に実行させることができる。これにより、待ち時間Ｔｃが隠ぺいできるため、アクセス速度が遅くなることが抑制される。
【００４７】
第３の実施形態では、ディスクリプタアクセスマスタ１０３が、コマンドバッファ１２０の状況を加味した書き込み制御を行っているが、ディスクリプタ変更部１５８は、コマンドバッファ１２０の状況を加味せずに、ディスクリプタの変更を行ってもよい。この場合、第１の実施形態と同様に、連続した複数のディスクリプタのうち最後のディスクリプタにより構成される第１アクセスと、当該最後のディスクリプタ以外の１以上の他のディスクリプタにより構成される第２アクセスとが、異なるバンクに書き込まれる。これにより、待ち時間Ｔｃが隠ぺいできるため、アクセス速度が遅くなることが抑制される。
【００４８】
以上、本発明の好ましい実施形態について説明したが、本発明は上述した各実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。本発明は、上述の各実施形態の１以上の機能を実現するプログラムを、ＡＳＩＣ（ＡＰＰＬＩＣＡＴＩＯＮ  ＳｐｅｃｉｆｉｃＩｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等が実行することによっても実現可能である。
【符号の説明】
【００４９】
１０  ＬＳＩ
１００〜１０２  バスマスタ
１０３  ディスクリプタアクセスマスタ
１０４  メモリバス
１０５  メモリ制御部
１０６  ディスクリプタアクセス判定部
１０７、１５７  アクセスサイズ判定部
１０８、１５８ディスクリプタ変更部
１１０  メモリ
１２０  コマンドバッファ
１６１  要求出力部
【図１】
2019200592.tif 000003
【図２】
2019200592.tif 000004
【図３】
2019200592.tif 000005
【図４】
2019200592.tif 000006
【図５】
2019200592.tif 000007
【図６】
2019200592.tif 000008
【図７】
2019200592.tif 000009
【図８】
2019200592.tif 000010