特許第5691889号(P5691889)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通セミコンダクター株式会社の特許一覧

特許5691889メモリアクセス制御装置、及びメモリアクセス制御方法
<>
  • 特許5691889-メモリアクセス制御装置、及びメモリアクセス制御方法 図000002
  • 特許5691889-メモリアクセス制御装置、及びメモリアクセス制御方法 図000003
  • 特許5691889-メモリアクセス制御装置、及びメモリアクセス制御方法 図000004
  • 特許5691889-メモリアクセス制御装置、及びメモリアクセス制御方法 図000005
  • 特許5691889-メモリアクセス制御装置、及びメモリアクセス制御方法 図000006
  • 特許5691889-メモリアクセス制御装置、及びメモリアクセス制御方法 図000007
  • 特許5691889-メモリアクセス制御装置、及びメモリアクセス制御方法 図000008
  • 特許5691889-メモリアクセス制御装置、及びメモリアクセス制御方法 図000009
  • 特許5691889-メモリアクセス制御装置、及びメモリアクセス制御方法 図000010
  • 特許5691889-メモリアクセス制御装置、及びメモリアクセス制御方法 図000011
  • 特許5691889-メモリアクセス制御装置、及びメモリアクセス制御方法 図000012
  • 特許5691889-メモリアクセス制御装置、及びメモリアクセス制御方法 図000013
  • 特許5691889-メモリアクセス制御装置、及びメモリアクセス制御方法 図000014
  • 特許5691889-メモリアクセス制御装置、及びメモリアクセス制御方法 図000015
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5691889
(24)【登録日】2015年2月13日
(45)【発行日】2015年4月1日
(54)【発明の名称】メモリアクセス制御装置、及びメモリアクセス制御方法
(51)【国際特許分類】
   G06F 12/00 20060101AFI20150312BHJP
【FI】
   G06F12/00 571B
【請求項の数】5
【全頁数】17
(21)【出願番号】特願2011-148260(P2011-148260)
(22)【出願日】2011年7月4日
(65)【公開番号】特開2013-16015(P2013-16015A)
(43)【公開日】2013年1月24日
【審査請求日】2014年4月1日
(73)【特許権者】
【識別番号】308014341
【氏名又は名称】富士通セミコンダクター株式会社
(74)【代理人】
【識別番号】100094525
【弁理士】
【氏名又は名称】土井 健二
(74)【代理人】
【識別番号】100094514
【弁理士】
【氏名又は名称】林 恒徳
(72)【発明者】
【氏名】川 武慶
【審査官】 原 秀人
(56)【参考文献】
【文献】 特開昭63−170746(JP,A)
【文献】 特開2002−342163(JP,A)
【文献】 特開2009−245047(JP,A)
【文献】 米国特許出願公開第2005/0246340(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00−12/06
G06F 13/16−13/18
G06F 12/08
(57)【特許請求の範囲】
【請求項1】
メモリに対する複数の、それぞれ優先順位を有するリクエストを受け付ける受付部と、
前記優先順位を有する複数のキャッシュと、
第1の優先順位を有する第1のリクエストが受け付けられると、前記第1の優先順位を有する空き状態の第1のキャッシュに当該第1のリクエストを登録し、前記第1のキャッシュが検出されないときには、前記複数のキャッシュにおける空き状態のキャッシュが有する優先順位のうち最も優先順位が低い第2の優先順位を有する空き状態の第2のキャッシュに前記第1のリクエストを登録し、当該第2のキャッシュの前記第2の優先順位を前記第1の優先順位に変更する管理部と、
前記第1、または第2のキャッシュに登録された前記リクエストを実行する実行部と、
を有するメモリアクセス制御装置。
【請求項2】
請求項1おいて、
前記実行部は、前記第2のキャッシュに登録された前記第1のリクエストを実行して当該第1のリクエストを前記第2のキャッシュから削除し、
前記管理部は、前記第1のリクエストが削除されたときに、前記第2のキャッシュの前記第1の優先順位を変更しない、
メモリアクセス制御装置。
【請求項3】
請求項1または2において、
前記管理部は、前記第2のキャッシュの前記第2の優先順位を前記第1の優先順位に変更した後、前記第1の優先順位を有する第2のリクエストが受け付けられると、前記第2のキャッシュを含む前記第1の優先順位を有するキャッシュのうち空き状態のキャッシュに前記第のリクエストを登録する、
メモリアクセス制御装置。
【請求項4】
請求項において、
前記管理部は、前記第2のキャッシュを含む前記第1の優先順位を有するキャッシュから空き状態のキャッシュが検出されないとき、前記複数のキャッシュにおける空き状態のキャッシュが有する優先順位のうち最も低い優先順位を有する空き状態の第3のキャッシュに前記第のリクエストを登録し、当該第3のキャッシュの優先順位を前記第1の優先順位に変更する、
メモリアクセス制御装置。
【請求項5】
メモリに対する複数の、それぞれ優先順位を有するリクエストを受け付け、
第1の優先順位を有する第1のリクエストが受け付けられると、前記第1の優先順位を有する空き状態の第1のキャッシュに当該第1のリクエストを登録し、
前記第1のキャッシュが検出されないときには、前記複数のキャッシュにおける空き状態のキャッシュが有する優先順位のうち最も優先順位が低い第2の優先順位を有する空き状態の第2のキャッシュに前記第1のリクエストを登録し、当該第2のキャッシュの前記第2の優先順位を前記第1の優先順位に変更し、
前記第1、または第2のキャッシュに登録された前記リクエストを実行する、
メモリアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリアクセス制御装置、及びメモリアクセス制御方法に関する。
【背景技術】
【0002】
画像の圧縮・伸長処理用を行う画像処理用LSI(Large Scale Integration)(以下、画像処理装置)は、処理対象の画像データをデータメモリに読み書きしながら、圧縮伸長処理を行う。たとえば、圧縮前の画素の書込みと読出し、圧縮されストリーム化されたデータの書込みと読出し、動きベクトルなど圧縮処理に必要とされる間接的な補助情報の書込みと読出しなどのために、多数のメモリアクセスが行われる。よって、画像処理装置は、データメモリに対し、アクセスを要求する多数のリクエストを発行する。
【0003】
かかる多数のリクエストによるメモリへのアクセスが競合しないように、リクエストの調停を行う方法が提案されている(たとえば、特許文献1〜4)。一例では、メモリ制御装置の内部にリクエスト緩衝用のバッファメモリが設けられる。メモリ制御装置は、画像処理装置から発行される複数のリクエストをバッファメモリに登録しておき、データメモリにおけるデータの書込み・読出し速度に合わせて順次リクエストをデータメモリのコントローラに転送する。そうすることで、アクセスの競合が回避される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平8−221372号公報
【特許文献2】特開昭63−231534号公報
【特許文献3】特開2009−245047号公報
【特許文献4】特開2007−241466号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、画像の圧縮・伸長処理などでは、一の処理が完結しないと新たな処理に移行できない場合がある。すると、処理ごとにデータメモリにアクセスが行われる場合、処理が遅延することがないような順序で、データメモリのコントローラにリクエストが転送されることが望まれる。
【0006】
しかしながら、メモリアクセス制御装置のバッファメモリの容量には制約があり、かつそこに登録されるリクエスト間の優先順序は動的に変化する。よって、たとえば、処理上の優先順位が高いリクエストが発行されたときに、優先順位が低い他のリクエストによりバッファメモリが占有されていると、優先順位が高いリクエストがバッファメモリに登録されない場合がある。すると、優先順位が低いリクエストが実行されてバッファメモリが空くまで、優先順位が高いリクエストが登録されず、したがって、その実行が遅れてしまう。
【0007】
そこで、本発明の目的は、データメモリへのリクエストを優先順位に応じて調停するメモリ制御装置、及びメモリアクセス制御方法を提供することにある。
【課題を解決するための手段】
【0008】
上記の目的を達成するために、一の実施形態におけるメモリアクセス制御装置は、メモリに対する複数の、それぞれ優先順位を有するリクエストを受け付ける受付部と、前記優先順位を有する複数のキャッシュと、第1の優先順位を有する第1のリクエストが受け付けられると、前記第1の優先順位を有する空き状態の第1のキャッシュに当該第1のリクエストを登録し、前記第1のキャッシュが検出されないときには、前記第1の優先順位より低い第2の優先順位を有する空き状態の第2のキャッシュに前記第1のリクエストを登録し、当該第2のキャッシュの前記第2の優先順位を前記第1の優先順位に変更する管理部と、前記第1、または第2のキャッシュに登録された前記リクエストを実行する実行部と、を有する。
【発明の効果】
【0009】
以下に説明する実施形態によれば、データメモリへのリクエストを優先順位に応じて調停することが可能になる。
【図面の簡単な説明】
【0010】
図1】本実施形態におけるメモリアクセス制御装置の構成例を示す。
図2】バッファメモリ120について説明する図である。
図3】キャッシュ管理部122によるリクエストの登録について説明する図である。
図4】キャッシュ管理部122によるリクエストの登録について説明する図である。
図5】キャッシュ管理部122によるリクエストの登録について説明する図である。
図6】キャッシュ管理部122によるリクエストの登録について説明する図である。
図7】キャッシュ管理部122によるリクエストの登録について説明する図である。
図8】キャッシュ管理部122によるリクエストの登録について説明する図である。
図9】キャッシュ管理部122によるリクエストの登録について説明する図である。
図10】キャッシュ管理部122によるリクエストの登録について説明する図である。
図11】キャッシュ管理部122によるリクエストの登録について説明する図である。
図12】メモリアクセス制御装置100の動作手順を示すフローチャート図である。
図13】動作シーケンスを説明するための構成例を示す図である。
図14】リクエスト登録及び実行の動作シーケンスについて説明する図である。
【発明を実施するための形態】
【0011】
以下、図面にしたがって本発明の実施の形態について説明する。但し、適用される技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【0012】
図1は、本実施形態におけるメモリアクセス制御装置の構成例を示す。メモリアクセス制御装置100は、画像処理装置102からデータメモリ106への複数のリクエストを調停する。画像処理装置102は、たとえば、動画像の圧縮・伸展処理を行うLSIである。データメモリ106には、圧縮・伸展処理の対象となる動画像データが格納される。データメモリ106は、SDRAM(Synchronous Dynamic Random Access Memory)などの大容量メモリである。
【0013】
画像処理装置102は、データメモリ106にデータを読み書きするための、複数のリクエストreq0〜req5を発行する。ここで、リクエストreq0〜req5は、画像処理装置102による処理上、読み書きされるデータの種別に応じた分類である。たとえば、リクエストreq0、req1は、それぞれ、圧縮前の画素の書込み、読出しのためのリクエストである。また、リクエストreq2、req3は、それぞれ、圧縮されストリーム化された画像の書込み、読出しのためのリクエストである。そして、リクエストreq4、req5は、それぞれ、補助情報、たとえば動きベクトルやフレーム番号などの書込み、読出しのためのリクエストである。リクエストreq0〜req5は、読み書きされるデータの処理上の優先順位に応じて優先順位を有する。優先順位は、読み書きされる処理単位のデータ量と使用頻度に応じて決定される。処理単位は、たとえば、16×16画素からなるマクロブロックである。使用頻度は、たとえば、各マクロブロックの、他のマクロブロックを符号化・復号する場合にそのマクロブロックが参照される頻度に対応する。リクエストreq0〜req5の優先順位は、たとえば、順に優先順位「1」〜「6」である。優先順位は、値が大きいほど低い優先順位を示す。
【0014】
メモリアクセス制御装置100は、データメモリ106に対する複数のリクエストreq0〜req5を、その優先順位に応じて調停する。
【0015】
複数のリクエストreq0〜req5は、リクエスト入力部108に入力される。リクエスト入力部108は、入力インターフェース100−0〜100−5を有する。リクエストreq0〜req5は、入力インターフェース100−0〜100−5にそれぞれ入力される。入力インターフェース100−0〜100−5は、リクエストreq0〜req5の優先順位「1」〜「6」にそれぞれ対応するインターフェース番号を有する。リクエスト入力部108は、リクエストreq0〜req5とそれぞれのインターフェース番号とを、リクエスト受付部110〜115にそれぞれ伝送する。
【0016】
リクエスト受付部110〜115は、データメモリ106に対する複数の、優先順位を有するリクエストreq0〜erq5をそれぞれ受け付ける。リクエストreq0〜erq5の優先順位は、ともに送られるインターフェース番号から判別される。リクエスト受付部110〜115にて受け付けられたリクエストは、キャッシュ管理部122に転送される。
【0017】
キャッシュ管理部122は、リクエストreq0〜req5をバッファメモリ120に登録する。バッファメモリ120は、たとえば、SRAM(Static Random Access Memory)などの高速なメモリであり、複数の記憶領域を有する。各記憶領域は、リクエストreq0〜req5を登録するキャッシュとして用いられる。キャッシュ管理部122は、リクエストreq0〜req5をバッファメモリ120に登録する際、各リクエストを各記憶領域(以下、キャッシュという)に振り分ける。そして、キャッシュ管理部122は、登録先のキャッシュに、リクエストreq0〜req5の登録状況を書き込む。こうして、リクエストreq0〜req5がバッファメモリ120のキャッシュに登録される。一方、キャッシュ管理部122は、各リクエストreq0〜req5の内容をリクエスト実行部126に転送する。各リクエストreq0〜req5の内容は、リクエスト実行部126内のRAM127に格納される。
【0018】
ここで、図2により、バッファメモリ120について説明する。バッファメモリ120は、リクエストreq0〜req5を登録するためのキャッシュC1〜C18を有する。キャッシュC1〜C18は、リクエストreq0〜req5に対応する優先順位「1」〜「6」のいずれかを有する。
【0019】
たとえば、キャッシュC1〜C3はリクエストreq0に対応する優先順位「1」を有する。便宜上、あるリクエストと同じ優先順位を有するキャッシュを、そのリクエストの固有キャッシュという。リクエストreq0の固有キャッシュC1〜C3において、キャッシュC1はリクエストreq0の専用キャッシュである。また、キャッシュC2、C3は、他のリクエストreq2〜req5との共用が可能な共用キャッシュである。
【0020】
同様に、リクエストreq1の固有キャッシュC4〜C6はリクエストreq1に対応する優先順位「2」を有する。そして、キャッシュC3はリクエストreq1の専用キャッシュであり、キャッシュC2、C3は、他のリクエストreq0、req2〜req5との共用キャッシュである。また、リクエストreq2の固有キャッシュC7〜C9は、リクエストreq2に対応する優先順位「3」を有する。そして、キャッシュC7はリクエストreq2の専用キャッシュであり、キャッシュC8、C9は、他のリクエストreq1、req3〜req5との共用キャッシュである。また、リクエストreq3の固有キャッシュC10〜C12は、リクエストreq3に対応する優先順位「4」を有する。そして、キャッシュC10はリクエストreq3の専用キャッシュであり、キャッシュC11、C12は、他のリクエストreq1、req2、req4、req5との共用キャッシュである。さらに、リクエストreq4の固有キャッシュC13〜C15は、リクエストreq4に対応する優先順位「5」を有する。そして、キャッシュC13はリクエストreq4の専用キャッシュであり、キャッシュC14、C15は、他のリクエストreq1〜req3、req5との共用キャッシュである。そして、リクエストreq5の固有キャッシュC16〜C18は、リクエストreq5に対応する優先順位「6」を有する。そして、キャッシュC16はリクエストreq5の専用キャッシュであり、キャッシュC17、C18は、他のリクエストreq0〜req4との共用のキャッシュである。
【0021】
キャッシュC1〜C18には、それぞれ、キャッシュ番号CNが格納される。キャッシュ番号CNは、たとえば図2(B)に示されるキャッシュC1のキャッシュ番号CNのように、対応するリクエストの優先順位n20と、固有キャッシュ内の追い番n22と、リクエストの登録の有無を示す占有情報n24とを有する。優先順位n20は、たとえば、優先順位「1」〜「6」を示す「01」〜「06」である。これは、リクエストreq0〜req5が入力された入力インターフェース100−0〜100−5のインターフェース番号に対応する。また、固有キャッシュ内の追い番n22は、「00」が専用キャッシュ、「01」、「02」が共用キャッシュを示す。そして、占有情報n24は、「0」が空き状態、「1」が占有状態を示す。
【0022】
リクエストreq0〜req5の登録状況は、キャッシュ番号CNの優先順位n20と占有情報n24により示される。たとえば、キャッシュC1のキャッシュ番号が「00_00_0」のときは空き状態、「00_00_1」のときはリクエストreq0が登録された占有状態を示す。同様に、キャッシュC2のキャッシュ番号が「00_01_0」のときは空き状態、「00_01_1」のときはリクエストreq0が登録された占有状態を示す。また、キャッシュC3のキャッシュ番号が「00_02_0」のときは空き状態、「00_02_1」のときはリクエストreq0が登録された占有状態を示す。キャッシュC4〜C18についても、同様である。リクエストの登録は、占有情報n24の値を、空き状態を示す「0」から占有状態を示す「1」に書き換えることで行われる。図2(A)では、キャッシュC1にリクエストreq0が、キャッシュC4、C5にリクエストreq1が、キャッシュC7、C8にリクエストreq2が、キャッシュC10〜C12にリクエストreq3が、キャッシュC13にリクエストreq2が、そして、キャッシュC17、C18にリクエストreq5がそれぞれ登録された場合が示される。
【0023】
図3図11は、キャッシュ管理部122によるリクエストの登録について説明する図である。図3図11では、説明の便宜上、4つの種別のリクエストreq0〜req3を登録する場合が示される。図3図11では、メモリアクセス制御装置100のうち、リクエストの登録に関係するリクエスト入力部108、リクエスト受付部110〜113、キャッシュ管理部122、及びバッファメモリ120が示される。そして、バッファメモリ120のうち、リクエストreq0〜req3分のキャッシュC1〜C12が示される。そして、キャッシュ管理部122は、リクエスト振分部30、占有情報更新部32、空きキャッシュ検出部34を有する。
【0024】
各リクエストがそれぞれの固有キャッシュに登録される場合について説明する。
【0025】
図3において示されるように、リクエスト入力部108は、リクエストreq0〜req3と、それぞれが入力されたインターフェース100−0〜100−3のインターフェース番号IF00〜IF03とを、リクエスト受付部110〜113にそれぞれ伝送する。
【0026】
リクエスト管理部110〜113は、それぞれ、対応するリクエストを登録するために割り当てられた固有キャッシュの数(以下、固有キャッシュ数)と、対応するリクエストのうち登録済みのリクエストの数(以下、登録済みリクエスト数という)とを有する。ここでは、たとえば、各リクエストreq0〜req3の固有キャッシュ数は「3」である。また、登録済みリクエスト数は「0」〜「3」のいずれかである。リクエスト受付部110〜113は、登録済みリクエスト数が固有キャッシュ数を下回るとき、つまり空き状態の固有キャッシュがあるときには、即時に新たなリクエストを受け付ける。一方、登録済みリクエスト数が固有キャッシュ数以上のときには、キャッシュ管理部122は、登録済みリクエストが処理されて固有キャッシュに空きができるか、または、後述のように他のリクエストの固有キャッシュのうち、利用可能な空きキャッシュを検出したときに、ACKメッセージをリクエスト入力部108に返信して新たなリクエストを受け付ける。
【0027】
まず、リクエスト受付部110〜113により第1の優先順位を有する第1のリクエストが受け付けられると、キャッシュ管理部122は、第1の優先順位を有するキャッシュのうち空きキャッシュに第1のリクエストを登録する。すなわち、各リクエストが、そのリクエストの固有キャッシュに登録される。
【0028】
たとえば、リクエスト受付部110は、空きキャッシュの検索を要求する空きキャッシュ検索コマンドcom50をリクエスト振分部30に発行する。そして、リクエスト振分部30は、キャッシュC1〜C12に対し空きキャッシュ検索コマンドcom50をブロードキャストで送信する。キャッシュC1〜C12は、空きキャッシュ検索コマンドcom50に応答して、それぞれ自らの占有情報n24が空き状態を示す「0」のときにはそれぞれのキャッシュ番号CNを、占有状態を示す「1」のときには振分けを禁止する禁止コードを、キャッシュ管理部122に返信する。すると、リクエスト振分部30は、受信したキャッシュ番号CNに基づき、固有キャッシュのうち専用キャッシュから順にリクエストを振り分ける。たとえば、リクエストreq0は、キャッシュC1〜C3がすべて空きキャッシュのときは専用キャッシュC1に、専用キャッシュC1が占有されているときは共用キャッシュC2に、そして、専用キャッシュC1と共用キャッシュC2が占有されているときは共用キャッシュC3に、振り分けられる。同様にして、リクエスト振分部30は、リクエストreq1〜req3をそれぞれの固有キャッシュに振り分ける。そして、リクエスト振分部30は、各リクエストの登録先を占有情報更新部32に伝送する。
【0029】
次に、図4において示されるように、占有情報更新部32が、キャッシュC1〜C12の占有情報を更新する。占有情報更新部32は、リクエストが振り分けられたキャッシュのキャッシュ番号CNのうち占有情報n24を、占有状態を示す「1」に更新する。具体的には、占有情報更新部32は、占有情報n24を更新すべきキャッシュにその更新を指示するコマンドを送り、キャッシュ側でこれに応答して占有情報n24が更新される。また、占有情報更新部32は、振り分けられたリクエストの内容を、リクエスト実行部126のRAM127に書き込む。そして、占有情報更新部32は、リクエスト受付部110〜111に、占有情報n24を更新したキャッシュ数を送信する。これにより、リクエスト受付部110〜111は、それぞれ、固有キャッシュ数と登録済みリクエスト数を更新する。こうして、リクエストreq0〜req3が登録される。
【0030】
上記のようにしてリクエストreq0〜req3がそれぞれ固有キャッシュに登録されると、新たなリクエストを登録する際に、空き状態の固有キャッシュが存在しない場合がある。その場合、本実施形態では、他のリクエストの固有キャッシュを使用して登録が行われる。すなわち、キャッシュ管理部122は、第1の優先順位を有するキャッシュから空きキャッシュが検出されないときには、第1の優先順位より低い第2の優先順位を有するキャッシュから空きキャッシュを検索して、検出された第2のキャッシュにリクエストを登録する。
【0031】
たとえば、図5には、リクエストreq0の固有キャッシュC1〜C3がreq0により占有され、リクエストreq3の固有キャッシュC10、C11がreq3により占有された状態が示される。すなわち、キャッシュC1〜C3、C10、C11の占有情報n24が「1」である。ここで、あらたなリクエストreq0が振り分けられる。
【0032】
この場合、リクエスト受付部110は、キャッシュ管理部122に空きキャッシュ検索コマンドcom50を発行する。すると、キャッシュ管理部122では、キャッシュ振分部30が、空きキャッシュ検索コマンドcom50を、バッファメモリ120のすべてのキャッシュC1〜C12にブロードキャストで送信する。
【0033】
すると、図6において示されるように、キャッシュC1〜C12は、空きキャッシュ検索コマンドcom50に応答して、それぞれ自らの占有情報が空き状態を示す「0」のときにはそれぞれのキャッシュ番号CNを、占有状態を示す「1」のときには振分けを禁止する禁止コードを、キャッシュ管理部122に返信する。キャッシュ管理部122では、空きキャッシュ検出部34が、返信されたキャッシュ番号CNであって共用キャッシュを示す追い番n22を有するキャッシュ番号CNのうち、優先順位n20が最大、つまり優先順位が最も低いキャッシュのキャッシュ番号CNを検出する。そうすることで、最も優先順位が低い、使用可能な空きキャッシュが簡易な処理で検出される。そうして検出された、たとえば空き状態のキャッシュC12のキャッシュ番号CNが、占有情報更新部32に伝送される。
【0034】
次いで、図7において示されるように、占有情報更新部32は、キャッシュC12の占有情報n24を、空き状態を示す「0」から占有状態を示す「1」に更新する。それとともに、占有情報更新部32は、キャッシュC12の優先順位をリクエストreq0に対応する優先順位に変更する。すなわち、キャッシュC12のキャッシュ番号CNは、「03_02_0」から「00_02_1」に変更される。こうして、キャッシュC12の優先順位は、もともとreq3に対応する優先順位「4」であったところ、req0に対応する優先順位「1」に変更される。ここにおいて、キャッシュC12がリクエストreq0の固有キャッシュになる。
【0035】
また、占有情報更新部32は、req0を、リクエスト実行部126のRAM127に書き込む。そして、占有情報更新部32は、リクエスト受付部110に、占有情報n24を更新したキャッシュ数を送信する。これにより、リクエスト受付部110は、それぞれ、固有キャッシュ数と登録済みリクエスト数を更新する。この場合、キャッシュC12が加わったことにより、固有キャッシュ数が「1」増加する。また、登録済みリクエスト数も「1」増加する。よって、リクエストreq0の固有キャッシュ数は「4」、登録済みリクエスト数は「4」になる。こうして、固有キャッシュに空きがない状態であっても、新たなリクエストreq0が登録される。
【0036】
図1に戻る。リクエスト実行部126は、RAM127に書き込まれたリクエストを先着順でメモリコントローラ104に転送する。これにより、リクエストが順次実行される。アクセス状態監視部128は、リクエストの実行状況を監視し、次のリクエストを実行可能なタイミングをリクエスト実行部126に指示する。そして、リクエスト実行部126は、実行したリクエストの登録情報を、バッファメモリ120から削除する。具体的には、キャッシュ番号CNの占有情報n24が、空き状態を示す「0」に更新される。
【0037】
次に、リクエストが実行され、バッファメモリ120から登録が削除された場合について説明する。
【0038】
図8には、キャッシュC1〜C3、C12のリクエストreq0が実行されて登録が削除された後、再度キャッシュC1〜C3にリクエストreq0が登録された状態が示される。ここで、新たなリクエストreq0が振り分けられる。このとき、図7において示したように、キャッシュC12のキャッシュ番号が変更されているので、リクエストreq0の固有キャッシュは、C1〜C3、及びC12である。すなわち、リクエスト受付部110が管理するリクエストreq0の固有キャッシュ数は「4」、登録済みリクエスト数は「3」である。リクエスト受付部110は、空きキャッシュの検索を要求する空きキャッシュ検索コマンドcom50をリクエスト振分部30に伝送する。そして、リクエスト振分部30は、キャッシュC1〜C12に対し空きキャッシュ検索コマンドcom50をブロードキャストで送信する。
【0039】
キャッシュC1〜C12は、空きキャッシュ検索コマンドcom50に応答して、それぞれ自らの占有情報が空き状態を示す「0」のときにはそれぞれのキャッシュ番号CNを、占有状態を示す「1」のときには振分けを禁止する禁止コードを、キャッシュ管理部122に返信する。すると、リクエスト振分部30は、受信したキャッシュ番号CNに基づき、固有キャッシュのうち専用キャッシュから順にリクエストを振り分ける。このとき、リクエストreq0の専用キャッシュC1、及び共用キャッシュC2、C3は占有状態なので、キャッシュ番号CNは送信されず、禁止コマンドが送信される。しかし、キャッシュC12は空き状態なので、キャッシュ番号CNが送信される。そこで、リクエスト振分部30は、リクエストreq0を、固有キャッシュC12に振り分ける。そして、リクエスト振分部30は、リクエストreq0の振分け先情報を占有情報更新部32に伝送する。
【0040】
そして、図7に示した場合と同様にして、占有情報更新部32が、キャッシュC12の占有情報n24を更新する。そして、占有情報更新部32は、リクエストreq0の内容を、リクエスト実行部126のRAM127に書き込む。このように、優先順位が高く処理頻度も高いリクエストの固有キャッシュとして他のリクエストの共有キャッシュを使用した後、その固有キャッシュを維持することで、優先順位が高くかつ頻繁に発行されるリクエストを登録するための固有キャッシュを確保できる。よって、優先順位が低いリクエストによりキャッシュが占有されていることにより優先順位が高いリクエストが登録されず、その実行が遅延するとういことを回避できる。
【0041】
図9には、キャッシュC12がリクエストreq0の固有キャッシュに変更された後、他のリクエストが振り分けられる場合が示される。たとえば、キャッシュC1〜C3にリクエストreq0が登録され、キャッシュC4〜C6にリクエストreq1が登録された状態が示される。すなわち、キャッシュC1〜C6の占有情報n24は「1」である。この状態で、新たなリクエストreq1が振り分けられる。なお、キャッシュC9、C12は空き状態である。
【0042】
この場合、リクエスト受付部111が管理するリクエストreq1の固有キャッシュ数は「3」、登録済みリクエスト数は「3」である。そして、リクエスト受付部111は、空きキャッシュの検索を要求する空きキャッシュ検索コマンドcom50をリクエスト振分部30に伝送する。そして、リクエスト振分部30は、キャッシュC1〜C12に対し空きキャッシュ検索コマンドcom50をブロードキャストで送信する。
【0043】
キャッシュC1〜C12は、空きキャッシュ検索コマンドcom50に応答して、それぞれ自らの占有情報が空き状態を示す「0」のときにはそれぞれのキャッシュ番号CNを、占有状態を示す「1」のときには振分けを禁止する禁止コードを、キャッシュ管理部122に返信する。たとえば、キャッシュC9、C12からキャッシュ番号CNが送信される。すると、空きキャッシュ検出部34は、共用キャッシュを示す追い番n22を有するキャッシュ番号CNのうち、優先順位n20が最大、つまり優先順位が最も低いキャッシュのキャッシュ番号CNを検出する。この場合、最も優先順位が低い、使用可能な空きキャッシュとして、たとえば、空き状態のキャッシュC9のキャッシュ番号CNが検出される。そして、そのキャッシュ番号CNが占有情報更新部32に伝送される。
【0044】
占有情報更新部32は、キャッシュC9のキャッシュ番号CNにおいて、優先順位n20を「3」から「1」に、占有情報n24を占有を示す「1」に更新する。すなわち、キャッシュC9のキャッシュ番号CNは、「03_02_0」から「01_02_1」に変更される。このようにして、本来はリクエストreq2の固有キャッシュであるキャッシュC9が、より優先順位が高いリクエストreq1の固有キャッシュとして使用されるようになる。このように、複数のリクエスト相互の相対的な優先順位に応じて、より優先順位が高いリクエストが確実に登録されるようになる。
【0045】
図10には、キャッシュC9にリクエストreq1が登録された後、そのリクエストreq1が実行されてキャッシュC9から削除された状態が示される。また、ここでは、キャッシュC1〜C3、C12にリクエストreq0が登録され、キャッシュC4〜C6にリクエストreq1が登録されている。すなわち、キャッシュC1〜C6、C12の占有情報n24は「1」である。そして、キャッシュC9がリクエストreq1の固有キャッシュであり、空き状態である。すなわち、キャッシュC9のキャッシュ番号CNは、「01_02_0」である。
【0046】
ここで、あらたにリクエストreq0が振り分けられる。この場合、リクエスト受付部110が管理するリクエストreq1の固有キャッシュ数は「4」、登録済みリクエスト数は「4」である。そして、リクエスト受付部110は、空きキャッシュの検索を要求する空きキャッシュ検索コマンドcom50をリクエスト振分部30に伝送する。そして、リクエスト振分部30は、キャッシュC1〜C12に対し空きキャッシュ検索コマンドcom50をブロードキャストで送信する。
【0047】
キャッシュC1〜C12は、空きキャッシュ検索コマンドcom50に応答して、それぞれ自らの占有情報n24が空き状態を示す「0」のときにはそれぞれのキャッシュ番号CNを、占有状態を示す「1」のときには振分けを禁止する禁止コードを、キャッシュ管理部122に返信する。すると、空きキャッシュ検出部34は、共用キャッシュを示す追い番n22を有するキャッシュ番号CNのうち、優先順位n20が最大、つまり優先順位が最も低いキャッシュのキャッシュ番号CNを検出する。この場合、最も優先順位が低い、使用可能な空きキャッシュとして、空き状態のキャッシュC9のキャッシュ番号CNが検出される。そして、そのキャッシュ番号CNが占有情報更新部32に伝送される。
【0048】
占有情報更新部32は、キャッシュC9のキャッシュ番号CNにおいて、優先順位n20を「1」から「0」に、占有情報n24を占有を示す「1」に更新する。このようにして、本来はリクエストreq2の固有キャッシュであり、リクエストreq1の固有キャッシュに変更されたキャッシュC9が、より優先順位が高いリクエストreq0の固有キャッシュとして使用されるようになる。
【0049】
このように、振り分けられるリクエストの優先順位に応じて、その都度、最も優先順位が低い空きキャッシュを、優先順位が高いリクエストの固有キャッシュとして使用することができる。そうすることで、優先順位が高くかつ頻繁に発行されるリクエストを登録するための固有キャッシュを確保できる。
【0050】
図11には、キャッシュC1〜C3、C12にリクエストreq0が登録され、キャッシュC4〜C6、C9にリクエストreq1が登録され、そして、キャッシュC10、C11にリクエストreq3が登録された状態が示される。すなわち、キャッシュC1〜C6、C9〜C12の占有情報n24は「1」である。ここで、キャッシュC7、C8はリクエストreq2の固有キャッシュであり、空き状態である。すなわち、キャッシュC7、C8のキャッシュ番号CNは、それぞれ「02_00_0」、「02_01_0」である。
【0051】
ここで、あらたにリクエストreq0が振り分けられる。この場合、リクエスト受付部110が管理するリクエストreq1の固有キャッシュ数は「4」、登録済みリクエスト数は「4」である。そして、リクエスト受付部110は、空きキャッシュの検索を要求する空きキャッシュ検索コマンドcom50をリクエスト振分部30に伝送する。そして、リクエスト振分部30は、キャッシュC1〜C12に対し空きキャッシュ検索コマンドcom50をブロードキャストで送信する。
【0052】
キャッシュC1〜C12は、空きキャッシュ検索コマンドcom50に応答して、それぞれ自らの占有情報n24が空き状態を示す「0」のときにはそれぞれのキャッシュ番号CNを、占有状態を示す「1」のときには振分けを禁止する禁止コードを、キャッシュ管理部122に返信する。この場合、キャッシュC7、C8からキャッシュ番号CNが返信される。すると、空きキャッシュ検出部34は、共用キャッシュを示す追い番n22を有するキャッシュ番号CNのうち、優先順位n20が最大、つまり優先順位が最も低いキャッシュのキャッシュ番号CNを検出する。この場合、最も優先順位が低い、使用可能な空きキャッシュとして、空き状態のキャッシュC8のキャッシュ番号CNが検出される。そして、そのキャッシュ番号CNが占有情報更新部32に伝送される。
【0053】
占有情報更新部32は、キャッシュC8のキャッシュ番号CNにおいて、優先順位n20を「1」から「0」に、占有情報n24を占有を示す「1」に更新する。このようにして、本来はリクエストreq2の固有キャッシュであるキャッシュC8が、より優先順位が高いリクエストreq0の固有キャッシュとして使用されるようになる。
【0054】
この場合、キャッシュC8、C12がリクエストreq0の、キャッシュC9がリクエストreq1の固有キャッシュとして使用される。このように、振り分けられるリクエストの優先順位と、そのときのキャッシュの占有状態に応じて、その都度、最も優先順位が低い空きキャッシュが、優先順位が高いリクエストの固有キャッシュとして使用される。そうすることにより、全体として優先順位が高いリクエストほど多くのキャッシュが固有キャッシュとしてわりあてられることになる。よって、優先順位が高くかつ頻繁に発行されるリクエストを登録するための固有キャッシュを確保できる。
【0055】
図12は、本実施形態におけるメモリアクセス制御装置100の動作手順を示すフローチャート図である。各リクエスト受付部110〜115は、所定の確認周期ごとに、自らの優先順位に対応する処理順かを確認する(S1100、S1102のNo)。自らの処理順のとき(S1102のYes)、対応するリクエストが入力されるかを確認する(S1104)。
【0056】
リクエストが入力されると(S1104のYes)、各リクエスト受付部110〜115は、固有キャッシュ数と、登録済みリクエスト数とから、空きキャッシュの有無を確認する(S1104)。空きの固有キャッシュがあるとき(S1106のYes)、各リクエスト受付部110〜115は、上限ヒット数をクリアする(S1108)。上限ヒット数は、空き固有キャッシュがないと判断された回数である。
【0057】
そして、各リクエスト受付部110〜115は、固有キャッシュ数を更新し(S1110)、さらに登録済みリクエスト数を更新する(S1112)。そして、キャッシュ管理部122が、リクエストを登録する(S1114)。たとえば、キャッシュの占有状態が更新される。そして、リクエスト受付部110〜115が、ACKメッセージを発行する(S1116)。これにより、リクエスト受付部110〜115がリクエストの内容を取得し、キャッシュ管理部122を介してリクエスト実行部126のRAM127にリクエストの内容が書き込まれる。
【0058】
そして、リクエスト受付部110〜115は、次の入力インターフェースへの入力を確認するための要求を、リクエスト入力部108に発行する(S1118)。
【0059】
一方、空きの固有キャッシュがない場合S1106のNo)、リクエスト受付部110〜115は上限ヒット回数を更新する(S1120)。そして、上限ヒット数が閾値以上になったとき(S1122のYes)、リクエスト受付部110〜115は、空きキャッシュ検索コマンドをキャッシュ管理部122に発行する(S1124)。かかる上限ヒット数を閾値と比較することで、ある程度の時間が経てから、空きキャッシュを検索するようにすることができる。かかる待ち時間内にリクエストが実行されてキャッシュが空き状態になる場合もあるので、空きキャッシュの検索を頻繁に行うことで、かえって処理が遅延するといった事態を回避できる。
【0060】
そして、空きキャッシュ検出部34により空きキャッシュが検出されたとき(S1128のYes)、占有情報更新部32は、その空きキャッシュの優先順位を変更する(S1128)。そして、占有情報更新部32は、上限ヒット数を更新する(S1120)。そして、手順S1108に移行する。
【0061】
なお、上限ヒット数が閾値未満(S1122のNo)、あるいは空きキャッシュがないとき(S1126のNo)、手順S1118に移行する。
【0062】
このような手順によれば、優先順位が高くかつ処理頻度が高いリクエストを登録するための固有キャッシュ数を多くすることができる。よって、かかるリクエストが登録される確率を高くすることができ、リクエストを優先的に実行することが可能になる。
【0063】
ここで、図13図14を用いて、本実施形態におけるリクエスト登録及び実行の動作シーケンスについて説明する。図13は、動作シーケンスを説明するための構成例を示し、図14図13の構成例による動作シーケンスを示す。
【0064】
図13に示される構成は、リクエストreq0〜req2を受け付けるリクエスト受付部110〜112と、キャッシュ管理部122とを有し、さらに、リクエストreq0の固有キャッシュC1、C2、リクエストreq1の固有キャッシュC3、C4、及びリクエストreq2の固有キャッシュC5、C6を備えたバッファメモリ120とを有する。かかる構成において、7個のリクエストreq0が連続的に発行され(req0−0〜req0―6)、またリクエスト4個のreq2が連続的に発行される(req2−0〜req2―3)。
【0065】
図14では、図14(A)にリクエストreq0とこれに対するACKメッセージの発行タイミングが、図14(B)にリクエストreq2とこれに対するACKメッセージの発行タイミングが、図14(C)にキャッシュC1、C2に登録されるリクエストが、図14(D)にキャッシュC3、C4に登録されるリクエストが、図14(E)にキャッシュC5、C6に登録されるリクエストが、そして、図14(F)に実行されるリクエストが示される。
【0066】
図14(A)、(B)においてしめされるように、リクエストreq0−0とreq2−0とが同時に発行され、それぞれACKメッセージが返される。また、図14(F)において示されるように、まずリクエストreq0−0が実行され、その間に、図14(E)においてしめされるように、リクエストreq2−0が固有キャッシュC5に登録される(矢印D1300)。そして、図14(F)において示されるように、リクエストreq0−0の実行が終了すると、リクエストreq2−0が実行される(矢印D1302)。そして、その間に、図14(A)において示されるように、リクエストreq0−1〜req0−3が連続して発行され、それぞれにACKメッセージが返される。
【0067】
図14(C)において示されるように、リクエストreq0−1は、固有キャッシュC1に登録される。また、リクエストreq0−2は、固有キャッシュC2に登録される。すると、この時点で、リクエストreq0−・・・の固有キャッシュに空きがなくなる。よって、キャッシュC4〜C6から、最も優先順位の低い空きキャッシュが検索される。その結果、req2−・・・の固有キャッシュであるキャッシュC6が検出される。よって、リクエストreq0−3は、キャッシュC6に登録される(矢印D1304)。
【0068】
一方で、図14(E)に示されるように、リクエストreq2−0が実行されると、その登録が固有キャッシュC5から削除される。そして、図14(B)において示されるように、リクエストreq2−1が発行されてACKメッセージが返される。すると、リクエストreq2−1は、空き状態になった固有キャッシュC5に登録される。
【0069】
そして、図14(F)に示されるように、リクエストreq0−1〜req0−3が順次実行され、キャッシュC1、C2、及びC6が順次空き状態になる(矢印D1306、D1308、D1310)。ここで、キャッシュC6は、リクエストreq0−・・・の固有キャッシュに変更された状態で維持される。
【0070】
一方で、図14(A)に示されるように、リクエストreq0−4〜req0−6が順次受け付けられ、それぞれACKメッセージが返される。リクエストreq0−4、req0−5は、空き状態となった固有キャッシュC1、C2に登録される(矢印D1312、D1314)。一方、リクエストrerq0−6は、空き状態となった固有キャッシュC6に登録される(矢印D1316)。このようにして、優先順位が高いリクエストreq0−・・・を登録するキャッシュを確保できる。
【0071】
そして、図14(F)に示されるようにリクエストreq2−1が実行されると、リクエストreq0−4〜req0−6が順次実行され、次いで、リクエストreq2−2が実行される。
【0072】
その一方、図14(E)に示されるようにキャッシュC5が空き状態になると、図14(B)に示されるようにリクエストreq2−2が受け付けられ、これがキャッシュC5に登録される(矢印D1318)。また、図14(B)に示されるように、リクエストreq2−3が受け付けられ、これがキャッシュC4に登録される(矢印D1320)。
【0073】
このように、本実施形態によれば、優先順位が高いリクエストを登録するためのキャッシュを確保することで、優先順位が低いリクエストによりキャッシュが占有されてしまい、優先順位が高いリクエストが登録されないという事態を回避できる。よって、データメモリへのリクエストを優先順位に応じて調停することが可能になる。
【符号の説明】
【0074】
100:メモリアクセス制御装置、 102:画像処理装置、 106:データメモリ、
110〜115:リクエスト受付部、 バッファメモリ120、 122:キャッシュ管理部、126:リクエスト実行部、 C1〜C18:キャッシュ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14