(57)【特許請求の範囲】
【請求項１】
メモリに対する複数の、それぞれ優先順位を有するリクエストを受け付ける受付部と、
前記優先順位を有する複数のキャッシュと、
第１の優先順位を有する第１のリクエストが受け付けられると、前記第１の優先順位を有する空き状態の第１のキャッシュに当該第１のリクエストを登録し、前記第１のキャッシュが検出されないときには、前記複数のキャッシュにおける空き状態のキャッシュが有する優先順位のうち最も優先順位が低い第２の優先順位を有する空き状態の第２のキャッシュに前記第１のリクエストを登録し、当該第２のキャッシュの前記第２の優先順位を前記第１の優先順位に変更する管理部と、
前記第１、または第２のキャッシュに登録された前記リクエストを実行する実行部と、
を有するメモリアクセス制御装置。
【請求項２】
請求項１において、
前記実行部は、前記第２のキャッシュに登録された前記第１のリクエストを実行して当該第１のリクエストを前記第２のキャッシュから削除し、
前記管理部は、前記第１のリクエストが削除されたときに、前記第２のキャッシュの前記第１の優先順位を変更しない、
メモリアクセス制御装置。
【請求項３】
請求項１または２において、
前記管理部は、前記第２のキャッシュの前記第２の優先順位を前記第１の優先順位に変更した後、前記第１の優先順位を有する第２のリクエストが受け付けられると、前記第２のキャッシュを含む前記第１の優先順位を有するキャッシュのうち空き状態のキャッシュに前記第２のリクエストを登録する、
メモリアクセス制御装置。
【請求項４】
請求項３において、
前記管理部は、前記第２のキャッシュを含む前記第１の優先順位を有するキャッシュから空き状態のキャッシュが検出されないとき、前記複数のキャッシュにおける空き状態のキャッシュが有する優先順位のうち最も低い優先順位を有する空き状態の第３のキャッシュに前記第２のリクエストを登録し、当該第３のキャッシュの優先順位を前記第１の優先順位に変更する、
メモリアクセス制御装置。
【請求項５】
メモリに対する複数の、それぞれ優先順位を有するリクエストを受け付け、
第１の優先順位を有する第１のリクエストが受け付けられると、前記第１の優先順位を有する空き状態の第１のキャッシュに当該第１のリクエストを登録し、
前記第１のキャッシュが検出されないときには、前記複数のキャッシュにおける空き状態のキャッシュが有する優先順位のうち最も優先順位が低い第２の優先順位を有する空き状態の第２のキャッシュに前記第１のリクエストを登録し、当該第２のキャッシュの前記第２の優先順位を前記第１の優先順位に変更し、
前記第１、または第２のキャッシュに登録された前記リクエストを実行する、
メモリアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセス制御装置、及びメモリアクセス制御方法に関する。
【背景技術】
【０００２】
画像の圧縮・伸長処理用を行う画像処理用ＬＳＩ（Large Scale Integration）（以下、画像処理装置）は、処理対象の画像データをデータメモリに読み書きしながら、圧縮伸長処理を行う。たとえば、圧縮前の画素の書込みと読出し、圧縮されストリーム化されたデータの書込みと読出し、動きベクトルなど圧縮処理に必要とされる間接的な補助情報の書込みと読出しなどのために、多数のメモリアクセスが行われる。よって、画像処理装置は、データメモリに対し、アクセスを要求する多数のリクエストを発行する。
【０００３】
かかる多数のリクエストによるメモリへのアクセスが競合しないように、リクエストの調停を行う方法が提案されている（たとえば、特許文献１〜４）。一例では、メモリ制御装置の内部にリクエスト緩衝用のバッファメモリが設けられる。メモリ制御装置は、画像処理装置から発行される複数のリクエストをバッファメモリに登録しておき、データメモリにおけるデータの書込み・読出し速度に合わせて順次リクエストをデータメモリのコントローラに転送する。そうすることで、アクセスの競合が回避される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−２２１３７２号公報
【特許文献２】特開昭６３−２３１５３４号公報
【特許文献３】特開２００９−２４５０４７号公報
【特許文献４】特開２００７−２４１４６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、画像の圧縮・伸長処理などでは、一の処理が完結しないと新たな処理に移行できない場合がある。すると、処理ごとにデータメモリにアクセスが行われる場合、処理が遅延することがないような順序で、データメモリのコントローラにリクエストが転送されることが望まれる。
【０００６】
しかしながら、メモリアクセス制御装置のバッファメモリの容量には制約があり、かつそこに登録されるリクエスト間の優先順序は動的に変化する。よって、たとえば、処理上の優先順位が高いリクエストが発行されたときに、優先順位が低い他のリクエストによりバッファメモリが占有されていると、優先順位が高いリクエストがバッファメモリに登録されない場合がある。すると、優先順位が低いリクエストが実行されてバッファメモリが空くまで、優先順位が高いリクエストが登録されず、したがって、その実行が遅れてしまう。
【０００７】
そこで、本発明の目的は、データメモリへのリクエストを優先順位に応じて調停するメモリ制御装置、及びメモリアクセス制御方法を提供することにある。
【課題を解決するための手段】
【０００８】
上記の目的を達成するために、一の実施形態におけるメモリアクセス制御装置は、メモリに対する複数の、それぞれ優先順位を有するリクエストを受け付ける受付部と、前記優先順位を有する複数のキャッシュと、第１の優先順位を有する第１のリクエストが受け付けられると、前記第１の優先順位を有する空き状態の第１のキャッシュに当該第１のリクエストを登録し、前記第１のキャッシュが検出されないときには、前記第１の優先順位より低い第２の優先順位を有する空き状態の第２のキャッシュに前記第１のリクエストを登録し、当該第２のキャッシュの前記第２の優先順位を前記第１の優先順位に変更する管理部と、前記第１、または第２のキャッシュに登録された前記リクエストを実行する実行部と、を有する。
【発明の効果】
【０００９】
以下に説明する実施形態によれば、データメモリへのリクエストを優先順位に応じて調停することが可能になる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態におけるメモリアクセス制御装置の構成例を示す。
【図２】バッファメモリ１２０について説明する図である。
【図３】キャッシュ管理部１２２によるリクエストの登録について説明する図である。
【図４】キャッシュ管理部１２２によるリクエストの登録について説明する図である。
【図５】キャッシュ管理部１２２によるリクエストの登録について説明する図である。
【図６】キャッシュ管理部１２２によるリクエストの登録について説明する図である。
【図７】キャッシュ管理部１２２によるリクエストの登録について説明する図である。
【図８】キャッシュ管理部１２２によるリクエストの登録について説明する図である。
【図９】キャッシュ管理部１２２によるリクエストの登録について説明する図である。
【図１０】キャッシュ管理部１２２によるリクエストの登録について説明する図である。
【図１１】キャッシュ管理部１２２によるリクエストの登録について説明する図である。
【図１２】メモリアクセス制御装置１００の動作手順を示すフローチャート図である。
【図１３】動作シーケンスを説明するための構成例を示す図である。
【図１４】リクエスト登録及び実行の動作シーケンスについて説明する図である。
【発明を実施するための形態】
【００１１】
以下、図面にしたがって本発明の実施の形態について説明する。但し、適用される技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１２】
図１は、本実施形態におけるメモリアクセス制御装置の構成例を示す。メモリアクセス制御装置１００は、画像処理装置１０２からデータメモリ１０６への複数のリクエストを調停する。画像処理装置１０２は、たとえば、動画像の圧縮・伸展処理を行うＬＳＩである。データメモリ１０６には、圧縮・伸展処理の対象となる動画像データが格納される。データメモリ１０６は、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）などの大容量メモリである。
【００１３】
画像処理装置１０２は、データメモリ１０６にデータを読み書きするための、複数のリクエストｒｅｑ０〜ｒｅｑ５を発行する。ここで、リクエストｒｅｑ０〜ｒｅｑ５は、画像処理装置１０２による処理上、読み書きされるデータの種別に応じた分類である。たとえば、リクエストｒｅｑ０、ｒｅｑ１は、それぞれ、圧縮前の画素の書込み、読出しのためのリクエストである。また、リクエストｒｅｑ２、ｒｅｑ３は、それぞれ、圧縮されストリーム化された画像の書込み、読出しのためのリクエストである。そして、リクエストｒｅｑ４、ｒｅｑ５は、それぞれ、補助情報、たとえば動きベクトルやフレーム番号などの書込み、読出しのためのリクエストである。リクエストｒｅｑ０〜ｒｅｑ５は、読み書きされるデータの処理上の優先順位に応じて優先順位を有する。優先順位は、読み書きされる処理単位のデータ量と使用頻度に応じて決定される。処理単位は、たとえば、１６×１６画素からなるマクロブロックである。使用頻度は、たとえば、各マクロブロックの、他のマクロブロックを符号化・復号する場合にそのマクロブロックが参照される頻度に対応する。リクエストｒｅｑ０〜ｒｅｑ５の優先順位は、たとえば、順に優先順位「１」〜「６」である。優先順位は、値が大きいほど低い優先順位を示す。  
【００１４】
メモリアクセス制御装置１００は、データメモリ１０６に対する複数のリクエストｒｅｑ０〜ｒｅｑ５を、その優先順位に応じて調停する。
【００１５】
複数のリクエストｒｅｑ０〜ｒｅｑ５は、リクエスト入力部１０８に入力される。リクエスト入力部１０８は、入力インターフェース１００−０〜１００−５を有する。リクエストｒｅｑ０〜ｒｅｑ５は、入力インターフェース１００−０〜１００−５にそれぞれ入力される。入力インターフェース１００−０〜１００−５は、リクエストｒｅｑ０〜ｒｅｑ５の優先順位「１」〜「６」にそれぞれ対応するインターフェース番号を有する。リクエスト入力部１０８は、リクエストｒｅｑ０〜ｒｅｑ５とそれぞれのインターフェース番号とを、リクエスト受付部１１０〜１１５にそれぞれ伝送する。
【００１６】
リクエスト受付部１１０〜１１５は、データメモリ１０６に対する複数の、優先順位を有するリクエストｒｅｑ０〜ｅｒｑ５をそれぞれ受け付ける。リクエストｒｅｑ０〜ｅｒｑ５の優先順位は、ともに送られるインターフェース番号から判別される。リクエスト受付部１１０〜１１５にて受け付けられたリクエストは、キャッシュ管理部１２２に転送される。
【００１７】
キャッシュ管理部１２２は、リクエストｒｅｑ０〜ｒｅｑ５をバッファメモリ１２０に登録する。バッファメモリ１２０は、たとえば、ＳＲＡＭ（Static Random Access Memory）などの高速なメモリであり、複数の記憶領域を有する。各記憶領域は、リクエストｒｅｑ０〜ｒｅｑ５を登録するキャッシュとして用いられる。キャッシュ管理部１２２は、リクエストｒｅｑ０〜ｒｅｑ５をバッファメモリ１２０に登録する際、各リクエストを各記憶領域（以下、キャッシュという）に振り分ける。そして、キャッシュ管理部１２２は、登録先のキャッシュに、リクエストｒｅｑ０〜ｒｅｑ５の登録状況を書き込む。こうして、リクエストｒｅｑ０〜ｒｅｑ５がバッファメモリ１２０のキャッシュに登録される。一方、キャッシュ管理部１２２は、各リクエストｒｅｑ０〜ｒｅｑ５の内容をリクエスト実行部１２６に転送する。各リクエストｒｅｑ０〜ｒｅｑ５の内容は、リクエスト実行部１２６内のＲＡＭ１２７に格納される。
【００１８】
ここで、図２により、バッファメモリ１２０について説明する。バッファメモリ１２０は、リクエストｒｅｑ０〜ｒｅｑ５を登録するためのキャッシュＣ１〜Ｃ１８を有する。キャッシュＣ１〜Ｃ１８は、リクエストｒｅｑ０〜ｒｅｑ５に対応する優先順位「１」〜「６」のいずれかを有する。
【００１９】
たとえば、キャッシュＣ１〜Ｃ３はリクエストｒｅｑ０に対応する優先順位「１」を有する。便宜上、あるリクエストと同じ優先順位を有するキャッシュを、そのリクエストの固有キャッシュという。リクエストｒｅｑ０の固有キャッシュＣ１〜Ｃ３において、キャッシュＣ１はリクエストｒｅｑ０の専用キャッシュである。また、キャッシュＣ２、Ｃ３は、他のリクエストｒｅｑ２〜ｒｅｑ５との共用が可能な共用キャッシュである。
【００２０】
同様に、リクエストｒｅｑ１の固有キャッシュＣ４〜Ｃ６はリクエストｒｅｑ１に対応する優先順位「２」を有する。そして、キャッシュＣ３はリクエストｒｅｑ１の専用キャッシュであり、キャッシュＣ２、Ｃ３は、他のリクエストｒｅｑ０、ｒｅｑ２〜ｒｅｑ５との共用キャッシュである。また、リクエストｒｅｑ２の固有キャッシュＣ７〜Ｃ９は、リクエストｒｅｑ２に対応する優先順位「３」を有する。そして、キャッシュＣ７はリクエストｒｅｑ２の専用キャッシュであり、キャッシュＣ８、Ｃ９は、他のリクエストｒｅｑ１、ｒｅｑ３〜ｒｅｑ５との共用キャッシュである。また、リクエストｒｅｑ３の固有キャッシュＣ１０〜Ｃ１２は、リクエストｒｅｑ３に対応する優先順位「４」を有する。そして、キャッシュＣ１０はリクエストｒｅｑ３の専用キャッシュであり、キャッシュＣ１１、Ｃ１２は、他のリクエストｒｅｑ１、ｒｅｑ２、ｒｅｑ４、ｒｅｑ５との共用キャッシュである。さらに、リクエストｒｅｑ４の固有キャッシュＣ１３〜Ｃ１５は、リクエストｒｅｑ４に対応する優先順位「５」を有する。そして、キャッシュＣ１３はリクエストｒｅｑ４の専用キャッシュであり、キャッシュＣ１４、Ｃ１５は、他のリクエストｒｅｑ１〜ｒｅｑ３、ｒｅｑ５との共用キャッシュである。そして、リクエストｒｅｑ５の固有キャッシュＣ１６〜Ｃ１８は、リクエストｒｅｑ５に対応する優先順位「６」を有する。そして、キャッシュＣ１６はリクエストｒｅｑ５の専用キャッシュであり、キャッシュＣ１７、Ｃ１８は、他のリクエストｒｅｑ０〜ｒｅｑ４との共用のキャッシュである。
【００２１】
キャッシュＣ１〜Ｃ１８には、それぞれ、キャッシュ番号ＣＮが格納される。キャッシュ番号ＣＮは、たとえば図２（Ｂ）に示されるキャッシュＣ１のキャッシュ番号ＣＮのように、対応するリクエストの優先順位ｎ２０と、固有キャッシュ内の追い番ｎ２２と、リクエストの登録の有無を示す占有情報ｎ２４とを有する。優先順位ｎ２０は、たとえば、優先順位「１」〜「６」を示す「０１」〜「０６」である。これは、リクエストｒｅｑ０〜ｒｅｑ５が入力された入力インターフェース１００−０〜１００−５のインターフェース番号に対応する。また、固有キャッシュ内の追い番ｎ２２は、「００」が専用キャッシュ、「０１」、「０２」が共用キャッシュを示す。そして、占有情報ｎ２４は、「０」が空き状態、「１」が占有状態を示す。
【００２２】
リクエストｒｅｑ０〜ｒｅｑ５の登録状況は、キャッシュ番号ＣＮの優先順位ｎ２０と占有情報ｎ２４により示される。たとえば、キャッシュＣ１のキャッシュ番号が「００＿００＿０」のときは空き状態、「００＿００＿１」のときはリクエストｒｅｑ０が登録された占有状態を示す。同様に、キャッシュＣ２のキャッシュ番号が「００＿０１＿０」のときは空き状態、「００＿０１＿１」のときはリクエストｒｅｑ０が登録された占有状態を示す。また、キャッシュＣ３のキャッシュ番号が「００＿０２＿０」のときは空き状態、「００＿０２＿１」のときはリクエストｒｅｑ０が登録された占有状態を示す。キャッシュＣ４〜Ｃ１８についても、同様である。リクエストの登録は、占有情報ｎ２４の値を、空き状態を示す「０」から占有状態を示す「１」に書き換えることで行われる。図２（Ａ）では、キャッシュＣ１にリクエストｒｅｑ０が、キャッシュＣ４、Ｃ５にリクエストｒｅｑ１が、キャッシュＣ７、Ｃ８にリクエストｒｅｑ２が、キャッシュＣ１０〜Ｃ１２にリクエストｒｅｑ３が、キャッシュＣ１３にリクエストｒｅｑ２が、そして、キャッシュＣ１７、Ｃ１８にリクエストｒｅｑ５がそれぞれ登録された場合が示される。
【００２３】
図３〜図１１は、キャッシュ管理部１２２によるリクエストの登録について説明する図である。図３〜図１１では、説明の便宜上、４つの種別のリクエストｒｅｑ０〜ｒｅｑ３を登録する場合が示される。図３〜図１１では、メモリアクセス制御装置１００のうち、リクエストの登録に関係するリクエスト入力部１０８、リクエスト受付部１１０〜１１３、キャッシュ管理部１２２、及びバッファメモリ１２０が示される。そして、バッファメモリ１２０のうち、リクエストｒｅｑ０〜ｒｅｑ３分のキャッシュＣ１〜Ｃ１２が示される。そして、キャッシュ管理部１２２は、リクエスト振分部３０、占有情報更新部３２、空きキャッシュ検出部３４を有する。
【００２４】
各リクエストがそれぞれの固有キャッシュに登録される場合について説明する。
【００２５】
図３において示されるように、リクエスト入力部１０８は、リクエストｒｅｑ０〜ｒｅｑ３と、それぞれが入力されたインターフェース１００−０〜１００−３のインターフェース番号ＩＦ００〜ＩＦ０３とを、リクエスト受付部１１０〜１１３にそれぞれ伝送する。
【００２６】
リクエスト管理部１１０〜１１３は、それぞれ、対応するリクエストを登録するために割り当てられた固有キャッシュの数（以下、固有キャッシュ数）と、対応するリクエストのうち登録済みのリクエストの数（以下、登録済みリクエスト数という）とを有する。ここでは、たとえば、各リクエストｒｅｑ０〜ｒｅｑ３の固有キャッシュ数は「３」である。また、登録済みリクエスト数は「０」〜「３」のいずれかである。リクエスト受付部１１０〜１１３は、登録済みリクエスト数が固有キャッシュ数を下回るとき、つまり空き状態の固有キャッシュがあるときには、即時に新たなリクエストを受け付ける。一方、登録済みリクエスト数が固有キャッシュ数以上のときには、キャッシュ管理部１２２は、登録済みリクエストが処理されて固有キャッシュに空きができるか、または、後述のように他のリクエストの固有キャッシュのうち、利用可能な空きキャッシュを検出したときに、ＡＣＫメッセージをリクエスト入力部１０８に返信して新たなリクエストを受け付ける。
【００２７】
まず、リクエスト受付部１１０〜１１３により第１の優先順位を有する第１のリクエストが受け付けられると、キャッシュ管理部１２２は、第１の優先順位を有するキャッシュのうち空きキャッシュに第１のリクエストを登録する。すなわち、各リクエストが、そのリクエストの固有キャッシュに登録される。
【００２８】
たとえば、リクエスト受付部１１０は、空きキャッシュの検索を要求する空きキャッシュ検索コマンドｃｏｍ５０をリクエスト振分部３０に発行する。そして、リクエスト振分部３０は、キャッシュＣ１〜Ｃ１２に対し空きキャッシュ検索コマンドｃｏｍ５０をブロードキャストで送信する。キャッシュＣ１〜Ｃ１２は、空きキャッシュ検索コマンドｃｏｍ５０に応答して、それぞれ自らの占有情報ｎ２４が空き状態を示す「０」のときにはそれぞれのキャッシュ番号ＣＮを、占有状態を示す「１」のときには振分けを禁止する禁止コードを、キャッシュ管理部１２２に返信する。すると、リクエスト振分部３０は、受信したキャッシュ番号ＣＮに基づき、固有キャッシュのうち専用キャッシュから順にリクエストを振り分ける。たとえば、リクエストｒｅｑ０は、キャッシュＣ１〜Ｃ３がすべて空きキャッシュのときは専用キャッシュＣ１に、専用キャッシュＣ１が占有されているときは共用キャッシュＣ２に、そして、専用キャッシュＣ１と共用キャッシュＣ２が占有されているときは共用キャッシュＣ３に、振り分けられる。同様にして、リクエスト振分部３０は、リクエストｒｅｑ１〜ｒｅｑ３をそれぞれの固有キャッシュに振り分ける。そして、リクエスト振分部３０は、各リクエストの登録先を占有情報更新部３２に伝送する。
【００２９】
次に、図４において示されるように、占有情報更新部３２が、キャッシュＣ１〜Ｃ１２の占有情報を更新する。占有情報更新部３２は、リクエストが振り分けられたキャッシュのキャッシュ番号ＣＮのうち占有情報ｎ２４を、占有状態を示す「１」に更新する。具体的には、占有情報更新部３２は、占有情報ｎ２４を更新すべきキャッシュにその更新を指示するコマンドを送り、キャッシュ側でこれに応答して占有情報ｎ２４が更新される。また、占有情報更新部３２は、振り分けられたリクエストの内容を、リクエスト実行部１２６のＲＡＭ１２７に書き込む。そして、占有情報更新部３２は、リクエスト受付部１１０〜１１１に、占有情報ｎ２４を更新したキャッシュ数を送信する。これにより、リクエスト受付部１１０〜１１１は、それぞれ、固有キャッシュ数と登録済みリクエスト数を更新する。こうして、リクエストｒｅｑ０〜ｒｅｑ３が登録される。
【００３０】
上記のようにしてリクエストｒｅｑ０〜ｒｅｑ３がそれぞれ固有キャッシュに登録されると、新たなリクエストを登録する際に、空き状態の固有キャッシュが存在しない場合がある。その場合、本実施形態では、他のリクエストの固有キャッシュを使用して登録が行われる。すなわち、キャッシュ管理部１２２は、第１の優先順位を有するキャッシュから空きキャッシュが検出されないときには、第１の優先順位より低い第２の優先順位を有するキャッシュから空きキャッシュを検索して、検出された第２のキャッシュにリクエストを登録する。
【００３１】
たとえば、図５には、リクエストｒｅｑ０の固有キャッシュＣ１〜Ｃ３がｒｅｑ０により占有され、リクエストｒｅｑ３の固有キャッシュＣ１０、Ｃ１１がｒｅｑ３により占有された状態が示される。すなわち、キャッシュＣ１〜Ｃ３、Ｃ１０、Ｃ１１の占有情報ｎ２４が「１」である。ここで、あらたなリクエストｒｅｑ０が振り分けられる。
【００３２】
この場合、リクエスト受付部１１０は、キャッシュ管理部１２２に空きキャッシュ検索コマンドｃｏｍ５０を発行する。すると、キャッシュ管理部１２２では、キャッシュ振分部３０が、空きキャッシュ検索コマンドｃｏｍ５０を、バッファメモリ１２０のすべてのキャッシュＣ１〜Ｃ１２にブロードキャストで送信する。
【００３３】
すると、図６において示されるように、キャッシュＣ１〜Ｃ１２は、空きキャッシュ検索コマンドｃｏｍ５０に応答して、それぞれ自らの占有情報が空き状態を示す「０」のときにはそれぞれのキャッシュ番号ＣＮを、占有状態を示す「１」のときには振分けを禁止する禁止コードを、キャッシュ管理部１２２に返信する。キャッシュ管理部１２２では、空きキャッシュ検出部３４が、返信されたキャッシュ番号ＣＮであって共用キャッシュを示す追い番ｎ２２を有するキャッシュ番号ＣＮのうち、優先順位ｎ２０が最大、つまり優先順位が最も低いキャッシュのキャッシュ番号ＣＮを検出する。そうすることで、最も優先順位が低い、使用可能な空きキャッシュが簡易な処理で検出される。そうして検出された、たとえば空き状態のキャッシュＣ１２のキャッシュ番号ＣＮが、占有情報更新部３２に伝送される。
【００３４】
次いで、図７において示されるように、占有情報更新部３２は、キャッシュＣ１２の占有情報ｎ２４を、空き状態を示す「０」から占有状態を示す「１」に更新する。それとともに、占有情報更新部３２は、キャッシュＣ１２の優先順位をリクエストｒｅｑ０に対応する優先順位に変更する。すなわち、キャッシュＣ１２のキャッシュ番号ＣＮは、「０３＿０２＿０」から「００＿０２＿１」に変更される。こうして、キャッシュＣ１２の優先順位は、もともとｒｅｑ３に対応する優先順位「４」であったところ、ｒｅｑ０に対応する優先順位「１」に変更される。ここにおいて、キャッシュＣ１２がリクエストｒｅｑ０の固有キャッシュになる。
【００３５】
また、占有情報更新部３２は、ｒｅｑ０を、リクエスト実行部１２６のＲＡＭ１２７に書き込む。そして、占有情報更新部３２は、リクエスト受付部１１０に、占有情報ｎ２４を更新したキャッシュ数を送信する。これにより、リクエスト受付部１１０は、それぞれ、固有キャッシュ数と登録済みリクエスト数を更新する。この場合、キャッシュＣ１２が加わったことにより、固有キャッシュ数が「１」増加する。また、登録済みリクエスト数も「１」増加する。よって、リクエストｒｅｑ０の固有キャッシュ数は「４」、登録済みリクエスト数は「４」になる。こうして、固有キャッシュに空きがない状態であっても、新たなリクエストｒｅｑ０が登録される。
【００３６】
図１に戻る。リクエスト実行部１２６は、ＲＡＭ１２７に書き込まれたリクエストを先着順でメモリコントローラ１０４に転送する。これにより、リクエストが順次実行される。アクセス状態監視部１２８は、リクエストの実行状況を監視し、次のリクエストを実行可能なタイミングをリクエスト実行部１２６に指示する。そして、リクエスト実行部１２６は、実行したリクエストの登録情報を、バッファメモリ１２０から削除する。具体的には、キャッシュ番号ＣＮの占有情報ｎ２４が、空き状態を示す「０」に更新される。
【００３７】
次に、リクエストが実行され、バッファメモリ１２０から登録が削除された場合について説明する。
【００３８】
図８には、キャッシュＣ１〜Ｃ３、Ｃ１２のリクエストｒｅｑ０が実行されて登録が削除された後、再度キャッシュＣ１〜Ｃ３にリクエストｒｅｑ０が登録された状態が示される。ここで、新たなリクエストｒｅｑ０が振り分けられる。このとき、図７において示したように、キャッシュＣ１２のキャッシュ番号が変更されているので、リクエストｒｅｑ０の固有キャッシュは、Ｃ１〜Ｃ３、及びＣ１２である。すなわち、リクエスト受付部１１０が管理するリクエストｒｅｑ０の固有キャッシュ数は「４」、登録済みリクエスト数は「３」である。リクエスト受付部１１０は、空きキャッシュの検索を要求する空きキャッシュ検索コマンドｃｏｍ５０をリクエスト振分部３０に伝送する。そして、リクエスト振分部３０は、キャッシュＣ１〜Ｃ１２に対し空きキャッシュ検索コマンドｃｏｍ５０をブロードキャストで送信する。
【００３９】
キャッシュＣ１〜Ｃ１２は、空きキャッシュ検索コマンドｃｏｍ５０に応答して、それぞれ自らの占有情報が空き状態を示す「０」のときにはそれぞれのキャッシュ番号ＣＮを、占有状態を示す「１」のときには振分けを禁止する禁止コードを、キャッシュ管理部１２２に返信する。すると、リクエスト振分部３０は、受信したキャッシュ番号ＣＮに基づき、固有キャッシュのうち専用キャッシュから順にリクエストを振り分ける。このとき、リクエストｒｅｑ０の専用キャッシュＣ１、及び共用キャッシュＣ２、Ｃ３は占有状態なので、キャッシュ番号ＣＮは送信されず、禁止コマンドが送信される。しかし、キャッシュＣ１２は空き状態なので、キャッシュ番号ＣＮが送信される。そこで、リクエスト振分部３０は、リクエストｒｅｑ０を、固有キャッシュＣ１２に振り分ける。そして、リクエスト振分部３０は、リクエストｒｅｑ０の振分け先情報を占有情報更新部３２に伝送する。
【００４０】
そして、図７に示した場合と同様にして、占有情報更新部３２が、キャッシュＣ１２の占有情報ｎ２４を更新する。そして、占有情報更新部３２は、リクエストｒｅｑ０の内容を、リクエスト実行部１２６のＲＡＭ１２７に書き込む。このように、優先順位が高く処理頻度も高いリクエストの固有キャッシュとして他のリクエストの共有キャッシュを使用した後、その固有キャッシュを維持することで、優先順位が高くかつ頻繁に発行されるリクエストを登録するための固有キャッシュを確保できる。よって、優先順位が低いリクエストによりキャッシュが占有されていることにより優先順位が高いリクエストが登録されず、その実行が遅延するとういことを回避できる。
【００４１】
図９には、キャッシュＣ１２がリクエストｒｅｑ０の固有キャッシュに変更された後、他のリクエストが振り分けられる場合が示される。たとえば、キャッシュＣ１〜Ｃ３にリクエストｒｅｑ０が登録され、キャッシュＣ４〜Ｃ６にリクエストｒｅｑ１が登録された状態が示される。すなわち、キャッシュＣ１〜Ｃ６の占有情報ｎ２４は「１」である。この状態で、新たなリクエストｒｅｑ１が振り分けられる。なお、キャッシュＣ９、Ｃ１２は空き状態である。
【００４２】
この場合、リクエスト受付部１１１が管理するリクエストｒｅｑ１の固有キャッシュ数は「３」、登録済みリクエスト数は「３」である。そして、リクエスト受付部１１１は、空きキャッシュの検索を要求する空きキャッシュ検索コマンドｃｏｍ５０をリクエスト振分部３０に伝送する。そして、リクエスト振分部３０は、キャッシュＣ１〜Ｃ１２に対し空きキャッシュ検索コマンドｃｏｍ５０をブロードキャストで送信する。
【００４３】
キャッシュＣ１〜Ｃ１２は、空きキャッシュ検索コマンドｃｏｍ５０に応答して、それぞれ自らの占有情報が空き状態を示す「０」のときにはそれぞれのキャッシュ番号ＣＮを、占有状態を示す「１」のときには振分けを禁止する禁止コードを、キャッシュ管理部１２２に返信する。たとえば、キャッシュＣ９、Ｃ１２からキャッシュ番号ＣＮが送信される。すると、空きキャッシュ検出部３４は、共用キャッシュを示す追い番ｎ２２を有するキャッシュ番号ＣＮのうち、優先順位ｎ２０が最大、つまり優先順位が最も低いキャッシュのキャッシュ番号ＣＮを検出する。この場合、最も優先順位が低い、使用可能な空きキャッシュとして、たとえば、空き状態のキャッシュＣ９のキャッシュ番号ＣＮが検出される。そして、そのキャッシュ番号ＣＮが占有情報更新部３２に伝送される。
【００４４】
占有情報更新部３２は、キャッシュＣ９のキャッシュ番号ＣＮにおいて、優先順位ｎ２０を「３」から「１」に、占有情報ｎ２４を占有を示す「１」に更新する。すなわち、キャッシュＣ９のキャッシュ番号ＣＮは、「０３＿０２＿０」から「０１＿０２＿１」に変更される。このようにして、本来はリクエストｒｅｑ２の固有キャッシュであるキャッシュＣ９が、より優先順位が高いリクエストｒｅｑ１の固有キャッシュとして使用されるようになる。このように、複数のリクエスト相互の相対的な優先順位に応じて、より優先順位が高いリクエストが確実に登録されるようになる。
【００４５】
図１０には、キャッシュＣ９にリクエストｒｅｑ１が登録された後、そのリクエストｒｅｑ１が実行されてキャッシュＣ９から削除された状態が示される。また、ここでは、キャッシュＣ１〜Ｃ３、Ｃ１２にリクエストｒｅｑ０が登録され、キャッシュＣ４〜Ｃ６にリクエストｒｅｑ１が登録されている。すなわち、キャッシュＣ１〜Ｃ６、Ｃ１２の占有情報ｎ２４は「１」である。そして、キャッシュＣ９がリクエストｒｅｑ１の固有キャッシュであり、空き状態である。すなわち、キャッシュＣ９のキャッシュ番号ＣＮは、「０１＿０２＿０」である。
【００４６】
ここで、あらたにリクエストｒｅｑ０が振り分けられる。この場合、リクエスト受付部１１０が管理するリクエストｒｅｑ１の固有キャッシュ数は「４」、登録済みリクエスト数は「４」である。そして、リクエスト受付部１１０は、空きキャッシュの検索を要求する空きキャッシュ検索コマンドｃｏｍ５０をリクエスト振分部３０に伝送する。そして、リクエスト振分部３０は、キャッシュＣ１〜Ｃ１２に対し空きキャッシュ検索コマンドｃｏｍ５０をブロードキャストで送信する。
【００４７】
キャッシュＣ１〜Ｃ１２は、空きキャッシュ検索コマンドｃｏｍ５０に応答して、それぞれ自らの占有情報ｎ２４が空き状態を示す「０」のときにはそれぞれのキャッシュ番号ＣＮを、占有状態を示す「１」のときには振分けを禁止する禁止コードを、キャッシュ管理部１２２に返信する。すると、空きキャッシュ検出部３４は、共用キャッシュを示す追い番ｎ２２を有するキャッシュ番号ＣＮのうち、優先順位ｎ２０が最大、つまり優先順位が最も低いキャッシュのキャッシュ番号ＣＮを検出する。この場合、最も優先順位が低い、使用可能な空きキャッシュとして、空き状態のキャッシュＣ９のキャッシュ番号ＣＮが検出される。そして、そのキャッシュ番号ＣＮが占有情報更新部３２に伝送される。
【００４８】
占有情報更新部３２は、キャッシュＣ９のキャッシュ番号ＣＮにおいて、優先順位ｎ２０を「１」から「０」に、占有情報ｎ２４を占有を示す「１」に更新する。このようにして、本来はリクエストｒｅｑ２の固有キャッシュであり、リクエストｒｅｑ１の固有キャッシュに変更されたキャッシュＣ９が、より優先順位が高いリクエストｒｅｑ０の固有キャッシュとして使用されるようになる。
【００４９】
このように、振り分けられるリクエストの優先順位に応じて、その都度、最も優先順位が低い空きキャッシュを、優先順位が高いリクエストの固有キャッシュとして使用することができる。そうすることで、優先順位が高くかつ頻繁に発行されるリクエストを登録するための固有キャッシュを確保できる。  
【００５０】
図１１には、キャッシュＣ１〜Ｃ３、Ｃ１２にリクエストｒｅｑ０が登録され、キャッシュＣ４〜Ｃ６、Ｃ９にリクエストｒｅｑ１が登録され、そして、キャッシュＣ１０、Ｃ１１にリクエストｒｅｑ３が登録された状態が示される。すなわち、キャッシュＣ１〜Ｃ６、Ｃ９〜Ｃ１２の占有情報ｎ２４は「１」である。ここで、キャッシュＣ７、Ｃ８はリクエストｒｅｑ２の固有キャッシュであり、空き状態である。すなわち、キャッシュＣ７、Ｃ８のキャッシュ番号ＣＮは、それぞれ「０２＿００＿０」、「０２＿０１＿０」である。
【００５１】
ここで、あらたにリクエストｒｅｑ０が振り分けられる。この場合、リクエスト受付部１１０が管理するリクエストｒｅｑ１の固有キャッシュ数は「４」、登録済みリクエスト数は「４」である。そして、リクエスト受付部１１０は、空きキャッシュの検索を要求する空きキャッシュ検索コマンドｃｏｍ５０をリクエスト振分部３０に伝送する。そして、リクエスト振分部３０は、キャッシュＣ１〜Ｃ１２に対し空きキャッシュ検索コマンドｃｏｍ５０をブロードキャストで送信する。
【００５２】
キャッシュＣ１〜Ｃ１２は、空きキャッシュ検索コマンドｃｏｍ５０に応答して、それぞれ自らの占有情報ｎ２４が空き状態を示す「０」のときにはそれぞれのキャッシュ番号ＣＮを、占有状態を示す「１」のときには振分けを禁止する禁止コードを、キャッシュ管理部１２２に返信する。この場合、キャッシュＣ７、Ｃ８からキャッシュ番号ＣＮが返信される。すると、空きキャッシュ検出部３４は、共用キャッシュを示す追い番ｎ２２を有するキャッシュ番号ＣＮのうち、優先順位ｎ２０が最大、つまり優先順位が最も低いキャッシュのキャッシュ番号ＣＮを検出する。この場合、最も優先順位が低い、使用可能な空きキャッシュとして、空き状態のキャッシュＣ８のキャッシュ番号ＣＮが検出される。そして、そのキャッシュ番号ＣＮが占有情報更新部３２に伝送される。
【００５３】
占有情報更新部３２は、キャッシュＣ８のキャッシュ番号ＣＮにおいて、優先順位ｎ２０を「１」から「０」に、占有情報ｎ２４を占有を示す「１」に更新する。このようにして、本来はリクエストｒｅｑ２の固有キャッシュであるキャッシュＣ８が、より優先順位が高いリクエストｒｅｑ０の固有キャッシュとして使用されるようになる。
【００５４】
この場合、キャッシュＣ８、Ｃ１２がリクエストｒｅｑ０の、キャッシュＣ９がリクエストｒｅｑ１の固有キャッシュとして使用される。このように、振り分けられるリクエストの優先順位と、そのときのキャッシュの占有状態に応じて、その都度、最も優先順位が低い空きキャッシュが、優先順位が高いリクエストの固有キャッシュとして使用される。そうすることにより、全体として優先順位が高いリクエストほど多くのキャッシュが固有キャッシュとしてわりあてられることになる。よって、優先順位が高くかつ頻繁に発行されるリクエストを登録するための固有キャッシュを確保できる。
【００５５】
図１２は、本実施形態におけるメモリアクセス制御装置１００の動作手順を示すフローチャート図である。各リクエスト受付部１１０〜１１５は、所定の確認周期ごとに、自らの優先順位に対応する処理順かを確認する（Ｓ１１００、Ｓ１１０２のＮｏ）。自らの処理順のとき（Ｓ１１０２のＹｅｓ）、対応するリクエストが入力されるかを確認する（Ｓ１１０４）。
【００５６】
リクエストが入力されると（Ｓ１１０４のＹｅｓ）、各リクエスト受付部１１０〜１１５は、固有キャッシュ数と、登録済みリクエスト数とから、空きキャッシュの有無を確認する（Ｓ１１０４）。空きの固有キャッシュがあるとき（Ｓ１１０６のＹｅｓ）、各リクエスト受付部１１０〜１１５は、上限ヒット数をクリアする（Ｓ１１０８）。上限ヒット数は、空き固有キャッシュがないと判断された回数である。
【００５７】
そして、各リクエスト受付部１１０〜１１５は、固有キャッシュ数を更新し（Ｓ１１１０）、さらに登録済みリクエスト数を更新する（Ｓ１１１２）。そして、キャッシュ管理部１２２が、リクエストを登録する（Ｓ１１１４）。たとえば、キャッシュの占有状態が更新される。そして、リクエスト受付部１１０〜１１５が、ＡＣＫメッセージを発行する（Ｓ１１１６）。これにより、リクエスト受付部１１０〜１１５がリクエストの内容を取得し、キャッシュ管理部１２２を介してリクエスト実行部１２６のＲＡＭ１２７にリクエストの内容が書き込まれる。
【００５８】
そして、リクエスト受付部１１０〜１１５は、次の入力インターフェースへの入力を確認するための要求を、リクエスト入力部１０８に発行する（Ｓ１１１８）。
【００５９】
一方、空きの固有キャッシュがない場合Ｓ１１０６のＮｏ）、リクエスト受付部１１０〜１１５は上限ヒット回数を更新する（Ｓ１１２０）。そして、上限ヒット数が閾値以上になったとき（Ｓ１１２２のＹｅｓ）、リクエスト受付部１１０〜１１５は、空きキャッシュ検索コマンドをキャッシュ管理部１２２に発行する（Ｓ１１２４）。かかる上限ヒット数を閾値と比較することで、ある程度の時間が経てから、空きキャッシュを検索するようにすることができる。かかる待ち時間内にリクエストが実行されてキャッシュが空き状態になる場合もあるので、空きキャッシュの検索を頻繁に行うことで、かえって処理が遅延するといった事態を回避できる。
【００６０】
そして、空きキャッシュ検出部３４により空きキャッシュが検出されたとき（Ｓ１１２８のＹｅｓ）、占有情報更新部３２は、その空きキャッシュの優先順位を変更する（Ｓ１１２８）。そして、占有情報更新部３２は、上限ヒット数を更新する（Ｓ１１２０）。そして、手順Ｓ１１０８に移行する。
【００６１】
なお、上限ヒット数が閾値未満（Ｓ１１２２のＮｏ）、あるいは空きキャッシュがないとき（Ｓ１１２６のＮｏ）、手順Ｓ１１１８に移行する。
【００６２】
このような手順によれば、優先順位が高くかつ処理頻度が高いリクエストを登録するための固有キャッシュ数を多くすることができる。よって、かかるリクエストが登録される確率を高くすることができ、リクエストを優先的に実行することが可能になる。
【００６３】
ここで、図１３、図１４を用いて、本実施形態におけるリクエスト登録及び実行の動作シーケンスについて説明する。図１３は、動作シーケンスを説明するための構成例を示し、図１４は図１３の構成例による動作シーケンスを示す。
【００６４】
図１３に示される構成は、リクエストｒｅｑ０〜ｒｅｑ２を受け付けるリクエスト受付部１１０〜１１２と、キャッシュ管理部１２２とを有し、さらに、リクエストｒｅｑ０の固有キャッシュＣ１、Ｃ２、リクエストｒｅｑ１の固有キャッシュＣ３、Ｃ４、及びリクエストｒｅｑ２の固有キャッシュＣ５、Ｃ６を備えたバッファメモリ１２０とを有する。かかる構成において、７個のリクエストｒｅｑ０が連続的に発行され（ｒｅｑ０−０〜ｒｅｑ０―６）、またリクエスト４個のｒｅｑ２が連続的に発行される（ｒｅｑ２−０〜ｒｅｑ２―３）。
【００６５】
図１４では、図１４（Ａ）にリクエストｒｅｑ０とこれに対するＡＣＫメッセージの発行タイミングが、図１４（Ｂ）にリクエストｒｅｑ２とこれに対するＡＣＫメッセージの発行タイミングが、図１４（Ｃ）にキャッシュＣ１、Ｃ２に登録されるリクエストが、図１４（Ｄ）にキャッシュＣ３、Ｃ４に登録されるリクエストが、図１４（Ｅ）にキャッシュＣ５、Ｃ６に登録されるリクエストが、そして、図１４（Ｆ）に実行されるリクエストが示される。
【００６６】
図１４（Ａ）、（Ｂ）においてしめされるように、リクエストｒｅｑ０−０とｒｅｑ２−０とが同時に発行され、それぞれＡＣＫメッセージが返される。また、図１４（Ｆ）において示されるように、まずリクエストｒｅｑ０−０が実行され、その間に、図１４（Ｅ）においてしめされるように、リクエストｒｅｑ２−０が固有キャッシュＣ５に登録される（矢印Ｄ１３００）。そして、図１４（Ｆ）において示されるように、リクエストｒｅｑ０−０の実行が終了すると、リクエストｒｅｑ２−０が実行される（矢印Ｄ１３０２）。そして、その間に、図１４（Ａ）において示されるように、リクエストｒｅｑ０−１〜ｒｅｑ０−３が連続して発行され、それぞれにＡＣＫメッセージが返される。
【００６７】
図１４（Ｃ）において示されるように、リクエストｒｅｑ０−１は、固有キャッシュＣ１に登録される。また、リクエストｒｅｑ０−２は、固有キャッシュＣ２に登録される。すると、この時点で、リクエストｒｅｑ０−・・・の固有キャッシュに空きがなくなる。よって、キャッシュＣ４〜Ｃ６から、最も優先順位の低い空きキャッシュが検索される。その結果、ｒｅｑ２−・・・の固有キャッシュであるキャッシュＣ６が検出される。よって、リクエストｒｅｑ０−３は、キャッシュＣ６に登録される（矢印Ｄ１３０４）。  
【００６８】
一方で、図１４（Ｅ）に示されるように、リクエストｒｅｑ２−０が実行されると、その登録が固有キャッシュＣ５から削除される。そして、図１４（Ｂ）において示されるように、リクエストｒｅｑ２−１が発行されてＡＣＫメッセージが返される。すると、リクエストｒｅｑ２−１は、空き状態になった固有キャッシュＣ５に登録される。
【００６９】
そして、図１４（Ｆ）に示されるように、リクエストｒｅｑ０−１〜ｒｅｑ０−３が順次実行され、キャッシュＣ１、Ｃ２、及びＣ６が順次空き状態になる（矢印Ｄ１３０６、Ｄ１３０８、Ｄ１３１０）。ここで、キャッシュＣ６は、リクエストｒｅｑ０−・・・の固有キャッシュに変更された状態で維持される。
【００７０】
一方で、図１４（Ａ）に示されるように、リクエストｒｅｑ０−４〜ｒｅｑ０−６が順次受け付けられ、それぞれＡＣＫメッセージが返される。リクエストｒｅｑ０−４、ｒｅｑ０−５は、空き状態となった固有キャッシュＣ１、Ｃ２に登録される（矢印Ｄ１３１２、Ｄ１３１４）。一方、リクエストｒｅｒｑ０−６は、空き状態となった固有キャッシュＣ６に登録される（矢印Ｄ１３１６）。このようにして、優先順位が高いリクエストｒｅｑ０−・・・を登録するキャッシュを確保できる。
【００７１】
そして、図１４（Ｆ）に示されるようにリクエストｒｅｑ２−１が実行されると、リクエストｒｅｑ０−４〜ｒｅｑ０−６が順次実行され、次いで、リクエストｒｅｑ２−２が実行される。
【００７２】
その一方、図１４（Ｅ）に示されるようにキャッシュＣ５が空き状態になると、図１４（Ｂ）に示されるようにリクエストｒｅｑ２−２が受け付けられ、これがキャッシュＣ５に登録される（矢印Ｄ１３１８）。また、図１４（Ｂ）に示されるように、リクエストｒｅｑ２−３が受け付けられ、これがキャッシュＣ４に登録される（矢印Ｄ１３２０）。
【００７３】
このように、本実施形態によれば、優先順位が高いリクエストを登録するためのキャッシュを確保することで、優先順位が低いリクエストによりキャッシュが占有されてしまい、優先順位が高いリクエストが登録されないという事態を回避できる。よって、データメモリへのリクエストを優先順位に応じて調停することが可能になる。    
【符号の説明】
【００７４】
１００：メモリアクセス制御装置、  １０２：画像処理装置、  １０６：データメモリ、
１１０〜１１５：リクエスト受付部、  バッファメモリ１２０、  １２２：キャッシュ管理部、１２６：リクエスト実行部、  Ｃ１〜Ｃ１８：キャッシュ
【図１】
0005691889.tif 000002
【図２】
0005691889.tif 000003
【図３】
0005691889.tif 000004
【図４】
0005691889.tif 000005
【図５】
0005691889.tif 000006
【図６】
0005691889.tif 000007
【図７】
0005691889.tif 000008
【図８】
0005691889.tif 000009
【図９】
0005691889.tif 000010
【図１０】
0005691889.tif 000011
【図１１】
0005691889.tif 000012
【図１２】
0005691889.tif 000013
【図１３】
0005691889.tif 000014
【図１４】
0005691889.tif 000015