(57)【要約】【課題】１つのスレーブモジュールを共有する複数のマスタモジュールの各々に対して、予め定められた単位時間当たりのデータ転送量を確実に保証する。【解決手段】複数のマスタモジュールの各々とスレーブモジュールとの間のデータ転送を制御するアクセスコントローラとして、単位処理時間を繰り返し計時する計時手段と、単位処理時間におけるスレーブモジュールとの間のデータ転送量をマスタモジュール毎にカウントする転送量カウンタと、複数のマスタモジュールの各々について転送量カウンタによりカウントされたデータ転送量が予め定められた上限値に達したか否かを判定し、達したと判定されたマスタモジュールについては、次の単位処理時間の計時が開始されるまでスレーブモジュールとの間のデータ転送を停止させる制御手段とを有するものを提供する。【選択図】図１
2011095966.tif 000002
【特許請求の範囲】
【請求項１】
複数のマスタモジュールの各々とスレーブモジュールとの間のデータ転送を制御するアクセスコントローラにおいて、
単位処理時間を繰り返し計時する計時手段と、
前記単位処理時間における前記スレーブモジュールとの間のデータ転送量をマスタモジュール毎にカウントする転送量カウンタと、
前記複数のマスタモジュールの各々について前記転送量カウンタによりカウントされたデータ転送量が予め定められた上限値に達したか否かを判定し、達したと判定されたマスタモジュールについては、次の単位処理時間の計時が開始されるまで前記スレーブモジュールとの間のデータ転送を制限する制御手段と、
を有すること特徴とするアクセスコントローラ。
【請求項２】
前記複数のマスタモジュールに前記スレーブモジュールとの間で周期的なデータ転送を行うものと非周期的なデータ転送を行うものとが含まれている場合には、単位処理時間あたりの転送帯域幅に対して、前者についてはその周期的なデータ転送を実現するために前記単位処理時間内に転送を完了するべきデータ量に対して余裕のある上限値を設定し、後者については十分に小さな上限値を設定することを特徴とする請求項１に記載のアクセスコントローラ。
【請求項３】
前記制御手段は、前記スレーブモジュールとの間で非周期的なデータ転送を行うマスタモジュールに対してのみ、そのデータ転送に制限を課すことを特徴とする請求項１に記載のアクセスコントローラ。
【請求項４】
前記複数のマスタモジュールの各々が、データ転送の開始から完了までの時間幅として許容される許容時間が所定の閾値を超えるものと超えないものとに分類される場合には、後者については許容時間内にデータ転送が完了するように定められる単位処理時間当たりのデータ転送量に対して余裕のある上限値を設定し、前者については十分に小さな上限値を設定することを特徴とする請求項１に記載のアクセスコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のマスタモジュールの各々によるスレーブモジュールへのアクセスを制御するアクセスコントローラに関する。
【背景技術】
【０００２】
この種のアクセスコントローラでは、スレーブモジュールに対する各マスタモジュールからのアクセス要求が競合した場合に、その調停が行われる。具体的には、各マスタモジュールに優先順位を付けておき、その優先順位にしたがってアクセス要求の競合を調停したり、各マスタモジュールのアクセス比率を定めておき、アクセス比率にしたがってアクセス要求の競合を調停したりするのである。なお、特許文献１には、アクセス要求の調停をシステムの稼動状況に応じて行えるようにするために、各マスタモジュールの優先順位をシステムの稼動状況に則して動的に変動させることが開示されている。また、特許文献２には、各マスタモジュールとスレーブモジュールとの間のデータ転送を、周期的なデータ転送（周期的に一定の帯域の確保が必要となるもの）と、非周期的なデータ転送（必要に応じて随時実行され、必要とする帯域もその都度異なり得るもの）とに分類し、後者については一回のアクセス当たりのアクセス時間に制限を設け、前者の周期的な実行が妨げられないようにする技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３２８８３２号公報
【特許文献２】特開２００３−２８１０８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、アクセスコントローラによる制御下でスレーブモジュールを共有する複数のマスタモジュールを含むシステムの設計・製造を行う際には、そのシステムに対する要求仕様に応じて単位処理時間（例えば、システムの性能設計のために定められる一定の長さの時間）当たりの各マスタモジュールのデータ転送量を適切に定め、システム全体として破綻を来たさないようにする性能設計を行うことが必要となる。しかし、特許文献２に開示された技術では、単位処理時間当たりの各マスタモジュールのデータ転送量を制御することが難しく、上記のような性能設計を行うことが困難になる、といった問題がある。
本発明は上記課題に鑑みて為されたものであり、スレーブモジュールを共有する複数のマスタモジュールの各々について単位処理時間当たりのデータ転送量を制御することを可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために本発明は、複数のマスタモジュールの各々とスレーブモジュールとの間のデータ転送を制御するアクセスコントローラにおいて、単位処理時間を繰り返し計時する計時手段と、前記単位処理時間における前記スレーブモジュールとの間のデータ転送量をマスタモジュール毎にカウントする転送量カウンタと、前記複数のマスタモジュールの各々について前記転送量カウンタによりカウントされたデータ転送量が予め定められた上限値に達したか否かを判定し、達したと判定されたマスタモジュールについては、次の単位処理時間の計時が開始されるまで前記スレーブモジュールとの間のデータ転送を制限する制御手段とを有すること特徴とするアクセスコントローラ、を提供する。
【０００６】
このようなアクセスコントローラによれば、単位処理時間における各マスタモジュールのデータ転送量をそのマスタモジュールに対して予め定められた上限値まで保証しつつ、各マスタモジュールにデータ転送を行わせることが可能になる。ここで、転送量カウンタによりカウントされたデータ転送量が予め定められた上限値に達したマスタモジュールに対して、どのような制限を課すのかについては種々の態様が考えられる。例えば、次の単位処理時間の計時が開始されるまでデータ転送を停止させる態様であっても良いし、また、データ転送を継続させるものの、転送速度をより低く制限する態様（例えばアクセス要求の送信間隔を長くさせる）であっても良い。また、スレーブモジュールが複数のバンクを有するメモリである場合には、転送済みデータ量が上限値に達するまでは全てのバンクへのアクセスを許可し、転送済みデータ量が上限値に達した以降は、それら複数のバンクのうちの予め定められたものに対してのみアクセスを許可するといった制限を課す態様も考えられる。
【０００７】
単位処理時間における各マスタモジュールのデータ転送量の上限値をどのように定めるのかについては種々の態様が考えられる。例えば、上記アクセスコントローラによるアクセス制御の下でスレーブモジュールとデータ転送を行う複数のマスタモジュールに前記スレーブモジュールとの間で周期的なデータ転送を行うものと非周期的なデータ転送を行うものとが含まれている場合、単位処理時間あたりの転送帯域幅に対して、前者についてはその周期的なデータ転送を実現するために単位処理時間にて転送を完了するべきデータ量（以下、単位処理時間当たりの要求データ量）に対して余裕のある上限値を設定し、後者については十分に小さな上限値を設定すれば良い。このような態様によれば、非周期的なデータ転送は周期的なデータに比較してその実行が厳しく制限されることとなり、非周期的なデータ転送によって周期的なデータ転送の実行が妨げられることが回避される。なお、非周期的なデータ転送によって周期的なデータ転送の実行が妨げられることを回避するという観点からは、前記スレーブモジュールとの間で非周期的なデータ転送を行うマスタモジュールに対してのみ、そのデータ転送に制限を課す態様も考えられる。
【０００８】
また、別の好ましい態様としては、前記複数のマスタモジュールの各々が、データ転送の開始から完了までの時間幅として許容される許容時間が所定の閾値を超えるものと超えないものとに分類される場合には、後者については許容時間内にデータ転送が完了するように定められる単位処理時間当たりのデータ転送量に対して余裕のある上限値を設定し、前者については十分に小さな上限値を設定することが考えられる。このような態様によれば、データ転送の開始からその完了までの許容時間が所定の閾値を超えないマスタモジュールに対してデータ転送帯域が優先的に確保されることになる。
【図面の簡単な説明】
【０００９】
【図１】本発明に係るアクセスコントローラの一実施形態であるメモリコントローラ３０を含むメモリ共有システムの構成例を示すブロック図である。
【図２】同メモリコントローラ３０の動作の概要を説明するための概念図である。
【図３】変形例（１）におけるメモリコントローラ３０の動作の概要を説明するための概念図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照しつつ本発明の実施形態について説明する。
（Ａ：構成）
図１は、本発明の一実施形態のメモリコントローラ３０を含むメモリ共有システムの構成例を示す図である。このメモリ共有システムは、例えばゲーム機などの電子機器に組み込まれ、ゲーム等の進行に合わせて各シーンを構成する画像や音声の再生制御を行うものである。図１に示すように、メモリコントローラ３０には、マスタモジュール１０Ａ、１０Ｂおよび１０Ｃと、スレーブモジュールたるメモリ２０が接続されている。メモリ２０は、ＲＡＭなどで構成されており、図１に示すメモリ共有システムを含む電子機器の主記憶装置である。図１のメモリコントローラ３０は、マスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々とメモリ２０との間のデータ転送（メモリ２０から各マスタモジュールへのデータの読み出し、或いは、各マスタモジュールからメモリ２０へのデータの書き込み）を制御するアクセスコントローラである。
【００１１】
マスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々は、ホストＣＰＵ（図示略）による制御の下、メモリ２０に格納されているデータの読み出し、或いはメモリ２０へのデータの書き込みを行う。これら３つのマスタモジュールは、各々異なる役割を担っている。マスタモジュール１０Ｃは、所謂ＤＭＡコントローラであり、ＵＳＢメモリなどの補助記憶装置（図１では図示略）に格納されている各種データを読み出し、メモリ２０へＤＭＡ転送する。本実施形態にてＵＳＢメモリからメモリ２０へＤＭＡ転送されるデータの一例としては、各シーンにて一定のフレームレート（１秒当たり３０フレーム等）で再生される各画像の画像データに圧縮符号化を施して得られる圧縮符号化データや、同じく各シーンにて再生される音声を所定のサンプリング周期（４４．１ｋＨｚ等）でサンプリングして得られる音声データなどが挙げられる。このマスタモジュール１０Ｃは、各シーンにて再生する画像や音声に対応するデータをそのシーンの開始前に予めメモリ２０へＤＭＡ転送しておく役割を担う。ただし、次のシーンにて再生される音声や画像に対応するデータの全部または一部が既にメモリ２０に格納されている場合には、当該格納済みのデータに関して上記ＤＭＡ転送が再度実行されることはない。つまり、マスタモジュール１０Ｃが実行するデータ転送は、必要に応じて随時行われ、かつ、転送データ量もその時々に異なりえる非周期的なデータ転送である。
【００１２】
図１のマスタモジュール１０Ａは画像処理機能を担う。このマスタモジュール１０Ａは、マスタモジュール１０Ｃによってメモリ２０へＤＭＡ転送された圧縮符号化データを読み出してデコードするデコーダと、そのデコード結果の画像データに応じた画像の表示制御を行う表示制御回路とを含んでいる（何れも図示略）。マスタモジュール１０Ｂは音声処理機能を担い、マスタモジュール１０Ｃによってメモリ２０へＤＭＡ転送された音声データを読み出し、その音声データに応じた音声を音として出力する処理を実行する。マスタモジュール１０Ａ（或いはマスタモジュール１０Ｂ）によるデータ転送は、フレームレート等に応じて周期的に実行されるデータ転送である。
【００１３】
マスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々は、メモリ２０との間でデータ転送を行う場合、従来のものと同様に、まず、アクセス要求をメモリコントローラ３０に送信し、メモリコントローラ３０からアクセス許可を受信するとそのデータ転送を開始するように構成されている。マスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々には予め優先順位が付けられている。本実施形態では、マスタモジュール１０Ｃの優先順位が最も高く、次いでマスタモジュール１０Ｂの優先順位が高く、マスタモジュール１０Ａの優先順位が最も低いといった具合である。複数のマスタモジュールからのアクセス要求が競合した場合、メモリコントローラ３０では各マスタモジュールの優先順位にしたがってその調停が行われる。そして、メモリコントローラ３０による調停の結果、アクセス許可を与えられなかったマスタモジュールは、アクセス許可が与えられるまで一定の時間間隔でアクセス要求を送信する処理を繰り返すように構成されている。また、マスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々は、データ転送の停止を指示する旨のサブバンド信号（以下、停止指示信号）ＳＳをメモリコントローラ３０から受信すると、停止解除を指示する旨のサブバンド信号（停止解除信号）ＲＳをメモリコントローラ３０から受信するまで、アクセス要求の送信を停止するように構成されている。
【００１４】
前述したように、マスタモジュール１０Ａ（或いはマスタモジュール１０Ｂ）とメモリ２０との間のデータ転送は、一定のフレームレート等に応じた周期で実行される周期的なデータ転送であり、マスタモジュール１０ＣによるＤＭＡ転送は必要に応じて随時行われる非周期的なデータ転送である。このような非周期的なデータ転送が無条件に行われてしまうと、周期的なデータ転送の実行時に十分な帯域を確保することができず、その実行が妨げられる虞があることは前述した通りである。そこで、本実施形態では、単位処理時間における各マスタモジュールのデータ転送量をメモリコントローラ３０に制御させ、非周期的なデータ転送の実行によって周期的なデータ転送の実行が妨げられないようにし、メモリ共有システム全体の性能設計を容易にしている点に特徴がある。
以下、本実施形態の特徴を顕著に示すメモリコントローラ３０を中心に説明する。
【００１５】
図１に示すようにメモリコントローラ３０は、マルチポートデータ転送制御部３１０、タイマ３２０、および、ポート番号ｎ（ｎ＝１〜３）で各々区別される３つのポート３３０−ｎを有している。図１に示すように本実施形態では、ポート３３０−１にはマスタモジュール１０Ａが、ポート３３０−２にはマスタモジュール１０Ｂが、ポート３３０−３にはマスタモジュール１０Ｃが接続されている。
【００１６】
マルチポートデータ転送制御部３１０は、所謂マルチプレクサであり、従来のアクセスコントローラが備えるものと特段に変わったところはない。このマルチポートデータ転送制御部３１０は、ポート３３０−１、３３０−２および３３０−３の各々を介して各マスタモジュールから送信されてくるアクセス要求を受信し、メモリ２０へのアクセス制御を行う。具体的には、アクセス要求の競合がない場合にはその送信元へアクセス許可を返信し、複数のアクセス要求が競合した場合には最も優先順位の高いものへアクセス許可を返信する。そして、マルチポートデータ転送制御部３１０は、アクセス許可を与えたマスタモジュールとメモリ２０との間のデータ転送制御を行う。
【００１７】
タイマ３２０は、所定の単位処理時間を繰り返し計時する計時手段である。この単位処理時間は、所定周波数のクロック（例えば、メモリ共有システムのシステムクロック等）の何クロック分に相当するかの数値により表わされる。例えば、単位処理時間が上記所定周波数のクロックのＮクロック分に相当する場合、タイマ３２０は、上記所定周波数のクロックをカウントし、そのカウント値がＮになったことを契機としてパルスＰを発生させる。ここで、単位処理時間をどのような長さにするのかについては後に詳細に説明する。
【００１８】
ポート３３０−１、３３０−２および３３０−３の各々は、図１に示すように、データパス部３３０ａ、転送量カウンタ３３０ｂおよびアクセス停止制御部３３０ｃを含んでいる。データパス部３３０ａは、その接続先のマスタモジュールとマルチポートデータ転送制御部３１０との間のデータの転送を仲介するバッファ（ＦＩＦＯ等）である。転送量カウンタ３３０ｂは、データパス部３３０ａを介して転送されたデータのデータ量をカウントするカウンタである。図１に示すように転送量カウンタ３３０ｂにはタイマ３２０が発生させるパルスＰが与えられる。転送量カウンタ３３０ｂはパルスＰを検出すると、それまでのカウント値をゼロにリセットし、その後、転送データ量のカウントを再開する。つまり、図１の転送量カウンタ３３０ｂの各々は、マスタモジュール毎に単位処理時間におけるメモリ２０とのデータ転送量をカウントする手段として機能するのである。
【００１９】
アクセス停止制御部３３０ｃは、転送量カウンタ３３０ｂによりカウントされたデータ転送量が予め定められた上限値に達したか否かを判定し、当該上限値に達したことを契機としてマスタモジュールに停止指示信号ＳＳを与える処理を実行する。図１に示すように、このアクセス停止制御部３３０ｃにはタイマ３２０が発生させるパルスＰが与えられる。アクセス停止制御部３３０ｃは、パルスＰを検出すると、アクセスの停止を指示したマスタモジュールに対して停止解除信号ＲＳを与える。つまり、アクセス停止制御部３３０ｃは、単位処理時間におけるデータ転送量が予め定められた上限値に達したマスタモジュールのデータ転送を、次の単位処理時間の計時が開始されるまで制限する制御手段の役割を果たすのである。なお、上限値については、例えばメモリコントローラ３０の初期化ステップにおいて、ホストＣＰＵ等によるレジスタ（図示略）への書き込みで設定させるようにすれば良い（単位処理時間についても同様）。また、上限値をどのような値とするかについては後に詳細に説明する。
以上がメモリコントローラ３０の構成である。
【００２０】
次いで、単位処理時間や各マスタモジュールのデータ転送量の上限値をどのように定めるかについて説明する。単位処理時間については、どの程度の時間単位で各マスタモジュールのデータ転送量を制御する必要があるのかといった要求仕様との兼ね合いで適宜定めるようにすれば良い。具体的には、周期的なデータ転送の実行周期に応じて定めるようにしても良いし、それら周期的なデータ転送の実行周期とは無関係に１ミリ秒や１０ミリ等としても良い。前者の態様であれば、本実施形態のように各々周期の異なる複数種の周期的なデータ転送が含まれている場合には、それらのうちの最も短い周期と等しくなるように単位処理時間を定める態様やそれら複数の周期の最大公約数となるように単位処理時間を定める態様等が考えられる。
【００２１】
一方、各マスタモジュールのデータ転送量の上限値については、単位処理時間の長さとの兼ね合いでメモリ共有システムに対する要求仕様を満たすように定めるようにすれば良い。ただし、非周期的なデータ転送の実行によって周期的なデータ転送の実行が妨げられないように各上限値を設定する必要がある。すなわち、メモリ２０との間のデータ転送の単位処理時間あたりの転送帯域幅に対して、周期的なデータ転送を実行するマスタモジュールについてはそのデータ転送を実現するために単位処理時間にて転送を完了するべきデータ量（以下、単位時間当たりの要求データ量）に対して余裕のある上限値を設定し、非周期的なデータ転送を実行するマスタモジュールについては十分に小さな上限値を設定するのである。例えば、単位処理時間がデータの転送周期の１／Ｎ（Ｎは２以上の整数）である場合には、周期的なデータ転送を実行するマスタモジュールについての上記上限値は、一周期当たりのデータ転送量の１／Ｎ以上の値とすれば良い。なお、マスタモジュールとメモリ２０との間の単位処理時間当たりのデータ転送量に上限値を設けたのは非周期的なデータ転送が無制限に実行されることによって、周期的なデータ転送の実行が妨げられないようにするためである。したがって、周期的なデータ転送を実行するマスタモジュールが接続されるポート３３０についてはアクセス停止制御部３３０ｃの動作を停止させ、単位処理時間当たりのデータ転送量に制限を設けないようにしても良い。
【００２２】
（Ｂ：動作）
以下、図１に示すメモリ共有システムにおいて、画像データの転送周期（フレーム周期）ＴＦに比較して単位処理時間Ｔが短い場合（例えば、ＴＦ＝Ｎ×Ｔ：Ｎは２以上の整数）にメモリコントローラ３０が実行する動作の概要を説明する。なお、以下に説明する動作例においては、１つのシーンには複数の画像（図２に示す例では、Ｍ（Ｍは２以上の整数）枚の画像）が含まれており、１つのシーンの時間長（シーン周期）ＴＳとフレーム周期ＴＦとの間には、ＴＳ＝Ｍ×ＴＦの関係があるものとする。また、以下に説明する動作例では、マスタモジュール１０Ｃについてのみ単位処理時間におけるデータ転送量に制限を課すものとする。これはマスタモジュール１０Ｃが行う非周期的なデータ転送によってマスタモジュール１０Ａおよび１０Ｂが実行する周期的なデータ転送が妨げられないようにするためである。ここで、マスタモジュール１０Ｃについての単位処理時間当たりのデータ転送量の上限値を十分に小さい値とする必要があることは前述した通りである。その一方、シーン周期ＴＳが経過するまでにマスタモジュール１０Ｃによるデータ転送が完了することを保証する必要もある。そこで、各シーンに含まれる画像や音声に対応するデータの全てを転送するとした場合のデータ量（すなわち、シーン周期ＴＳ内にマスタモジュール１０Ｃが転送するべきデータ量の最大値）がＤである場合には、マスタモジュール１０Ｃについての上限値をＤ／（Ｎ×Ｍ）と設定するのである。これにより、マスタモジュール１０Ｃによるデータ転送がシーン周期ＴＳ内に完了すること、を保証することができるのである。
【００２３】
図２は、単位処理時間Ｔ、フレーム周期ＴＦおよびシーン周期ＴＳの関係を表わすとともに、メモリコントローラ３０を介してマスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々とメモリ２０との間で行われるデータ転送の概要を表わす図である。なお、図２においては、シーン周期ＴＳの先頭からｎ（ｎ＝１〜Ｎ）番目のフレーム周期ＴＦを「ＴＦ（ｎ）」と表現し、フレーム周期ＴＦ（ｎ）の先頭からｍ（ｍ＝１〜Ｍ）番目の単位処理時間Ｔを「Ｔ（ｍ）」と表記した。また、以下に説明する動作例では、マスタモジュール１０Ｂによる音声データの転送周期は単位処理時間Ｔよりも短く、かつ、一周期分当たりのデータ転送量もマスタモジュール１０Ａの一周期分のデータ転送量に比較して十分に少ないものとする（図２参照）。
【００２４】
図２に示すように、時刻ｔ０においてマスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々とメモリ２０との間のデータ転送が開始されると、これを契機としてタイマ３２０は単位処理時間Ｔの計時を開始する。なお、図２では詳細な図示は省略したが、各マスタモジュールからのアクセス要求が競合した場合には、各マスタモジュールの優先順位にしたがってその調停が行われることはいうまでもない。図２の単位処理時間Ｔ（１）におけるマスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々の転送済みデータ量は転送量カウンタ３２０ｂによってマスタモジュール毎にカウントされる。より詳細に説明すると、マスタモジュール１０Ａとメモリ２０との間のデータ転送量はポート３３０−１の転送量カウンタ３３０ｂによって、マスタモジュール１０Ｂとメモリ２０との間のデータ転送量はポート３３０−２の転送量カウンタ３３０ｂによって、マスタモジュール１０Ｃとメモリ２０との間のデータ転送量はポート３３０−３の転送量カウンタ３３０ｂによって各々カウントされる。
【００２５】
マスタモジュール１０Ｃについては、単位処理時間Ｔにおけるデータ転送量の上限値が予め定められている。このため、ポート３３０−３の転送量カウンタ３３０ｂのカウント値が当該上限値に達すると、同ポート３３０−３のアクセス停止制御部３３０ｃによって停止指示信号ＳＳがマスタモジュール１０Ｃに与えられる。前述したように、マスタモジュール１０Ｃは、メモリコントローラ３０から停止指示信号ＳＳを受け取ると、停止解除信号ＲＳを受け取るまで新たなアクセス要求の送信を停止し、メモリ２０との間のデータ転送を停止する。これに対してマスタモジュール１０Ａおよび１０Ｂについては単位処理時間Ｔにおけるデータ転送量に上限値は定められていない。このため、マスタモジュール１０Ａおよび１０Ｂに対してデータ転送の停止が指示されることはなく、これらマスタモジュールとメモリ２０との間のデータ転送は継続される。
【００２６】
時刻ｔ０から単位処理時間Ｔが経過するとタイマ３２０はパルスＰを発生させる。ポート３３０−１、３３０−２および３３０−３の各々の転送量カウンタ３３０ｂは、このパルスＰを検出すると、そのカウント値をゼロにリセットした後に転送済みデータ量のカウントを再開する。また、ポート３３０−３のアクセス停止制御部３３０ｃは、上記パルスＰを検出したことを契機として停止解除信号ＲＳをマスタモジュール１０Ｃに送信する。この停止解除信号ＲＳを受け取ったマスタモジュール１０Ｃはメモリ２０との間のデータ転送を再開する。以降、単位処理時間Ｔ（２），Ｔ（３）・・・の各々において上記動作が繰り返し実行される。従来は、ＤＭＡ転送のような非周期的なデータ転送の実行に関して特段の制限を設けていなかったため、非周期的なデータ転送が帯域を取り続けると、周期的なデータ転送処理（例えば、マスタモジュール１０Ａが実行する画像データの転送処理）の帯域が極端に狭くなり、この帯域が極端に狭くなった時点の性能によってシステム全体の性能が制約を受けるという問題や、周期的なデータ転送の実行が妨げられるという問題があった。しかし、本実施形態では、単位処理時間における非周期的なデータ転送の転送量に上限を設けることによって、これらの問題を解決しているのである。なお、図２に示すように、マスタモジュール１０Ａとメモリ２０との間のデータ転送がフレーム周期ＴＦの経過前に完了した場合には、そのデータ転送が完了した時点からフレーム周期ＴＦの終端までの残りの期間においては、同データ転送に用いられていた帯域は余裕帯域となる。また、マスタモジュール１０Ｃとメモリ２０との間のデータ転送は、図２に示すように単位処理時間毎に細切れに実行されることとなるが、マスタモジュール１０Ｃが実行するデータ転送はシーン周期ＴＳが経過するまでには完了するので、特段の問題が生じることはない。
【００２７】
以上説明したように、本実施形態のメモリコントローラ３０によれば、単位処理時間における各マスタモジュールとスレーブモジュール（上記実施形態では、メモリ２０）との間のデータ転送量はそのマスタモジュールについて予め定められた上限値までに制限されることとなる。つまり、本実施形態によれば、メモリコントローラ３０によれば、スレーブモジュールを共有する複数のマスタモジュールの各々について単位処理時間当たりのデータ転送量を制御することが可能になり、メモリ共有システム全体の性能設計をし易くなるのである。
【００２８】
（Ｃ：他の実施形態）
以上、本発明の一実施形態について説明した。しかし、かかる実施形態に以下に述べる変形を加えても良いことは勿論である。
（１）上述した実施形態では、単位処理時間Ｔを画像データの転送周期ＴＦよりも短く設定した。しかし、単位処理時間をシーン周期ＴＳよりは短く、かつ、フレーム周期ＴＦよりは長く設定しても勿論良い。図３は、単位処理時間Ｔをマスタモジュール１０Ａおよび１０Ｂの転送周期よりも長く（前者の転送周期はＴ／３に相当し、後者の転送周期はＴ／２に相当する）、かつシーン周期よりは短く（シーン間隔は数十〜数百Ｔ程度）設定し、マスタモジュール１０Ａおよび１０Ｂについての上限値を一周期分のデータ転送量よりも十分に大きくした場合の動作を概念的に示した図である。
【００２９】
図３に示す時刻ｔ０の時点において、マスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々から送信されたアクセス要求が競合すると、メモリコントローラ３０のマルチポートデータ転送制御部３１０は、各マスタモジュールの優先順位にしたがってアクセス要求の競合を調停する。本変形例では前述した実施形態とは異なり、マスタモジュール１０Ａに最も高い優先順位が与えられており、マスタモジュール１０Ｂには次に高い優先順位が与えられており、マスタモジュール１０Ｃの優先順位が最も低くなっている。このため、マルチポートデータ転送制御部３１０は、マスタモジュール１０Ａ、１０Ｂおよび１０Ｃの各々からのアクセス要求が競合すると、マスタモジュール１０Ａにアクセス許可を与える。すると、マスタモジュール１０Ａは、ポート３３０−１およびマルチポートデータ転送制御部３１０を介してメモリ２０との間のデータ転送を行う。このデータ転送が行われている間、転送済みのデータ量がポート３３０−１の転送量カウンタ３３０ｂによってカウントされる。前述したように単位処理時間Ｔにおけるマスタモジュール１０Ａについての上限値は一周期分のデータ転送量よりも十分に大きいため、同転送量カウンタ３３０ｂのカウント値が当該上限値に達する前に一周期分のデータ転送が完了する。このため、このデータ転送の実行過程でポート３３０−１のアクセス停止制御部３３０ｃからマスタモジュール１０Ａに停止指示信号ＳＳが送信されることはない。
【００３０】
このようにマスタモジュール１０Ａには停止指示信号ＳＳは与えられないのであるから、一周期分のデータ転送が完了した後もマスタモジュール１０Ａはアクセス要求を送信することができる。しかし、マスタモジュール１０Ａが行うデータ転送の実行周期はＴ／３であるため、その実行周期Ｔ／３が経過するまでマスタモジュール１０Ａがアクセス要求を送信することはない。このため、優先順位に基づく調停の下、マスタモジュール１０Ｂにアクセス許可が与えられる。マスタモジュール１０Ｂとメモリ２０との間のデータ転送についても同様に、そのデータ転送が行われている間、転送済みデータ量がポート３３０−２の転送量カウンタ３３０ｂによってカウントされる。前述したようにマスタモジュール１０Ｂについても上限値が十分に大きい値に設定されているため、一周期分のデータ転送量が当該上限値に達することはなく、ポート３３０−２のアクセス停止制御部３３０ｃからマスタモジュール１０Ｂへ停止指示信号ＳＳが送信されることはない。
【００３１】
マスタモジュール１０Ｂとメモリ２０との間の一周期分のデータ転送が完了すると、転送周期Ｔ／２が経過するまでマスタモジュール１０Ｂがアクセス要求を行うことはなく、マスタモジュール１０Ｃとメモリ２０との間のデータ転送が開始される。このデータ転送が行われている間、転送済みデータ量がポート３３０−３の転送量カウンタ３３０ｂによってカウントされ、上限値に達するとポート３３０−３のアクセス停止制御部３３０ｃからマスタモジュール１０Ｃへ停止指示信号ＳＳが送信される。以後、マスタモジュール１０Ｃは、停止解除信号ＲＳを同アクセス停止制御部３３０ｃから受信するまでアクセス要求を送信することはない。ここで、アクセス停止制御部３３０ｃは時刻ｔ０から単位処理時間Ｔが経過するまでは停止解除信号ＲＳを送信することはないのであるから、単位処理時間Ｔが経過するまで（すなわち、時刻ｔ０＋Ｔに到るまで）はマスタモジュール１０Ｃがアクセス要求を送信することはない。このように、次の単位処理時間Ｔの計時が開始されるまでマスタモジュール１０Ｃはデータ転送の実行を制限されるため、図３に示すように、マスタモジュール１０Ａによる２周期目のデータ転送やマスタモジュール１０Ｂによる２周期目のデータ転送の実行が妨げられることはない。
【００３２】
（２）上述した実施形態では、単位処理時間を繰り返し計時するためのタイマを１つだけ設けたが、ポート毎にタイマを設けても勿論良い。このようにポート毎にタイマを設ける態様においてはタイマ毎に異なる単位処理時間を計時させても良い。また、上述した実施形態では、単位処理時間を繰り返し計時する計時手段（タイマ３２０）、単位処理時間におけるスレーブモジュール（メモリ２０）との間のデータ転送量をマスタモジュール毎にカウントする転送量カウンタ（転送量カウンタ３３０ｂ）、および、複数のマスタモジュールの各々について転送量カウンタによりカウントされたデータ転送量が予め定められた上限値に達したか否かを判定し、達したと判定されたマスタモジュールについては次の単位処理時間の計時が開始されるまでスレーブモジュールとの間のデータ転送を制限する制御手段（アクセス停止制御部３３０ｃ）の各々をハードウェアで構成したが、これら各手段をソフトウェアモジュールで構成しても良い。
【００３３】
（３）上述した実施形態では、転送量カウンタ３３０ｂによりカウントされたデータ転送量が予め定められた上限値に達したマスタモジュールについては、次の単位処理時間の計時が開始されるまでスレーブモジュール（メモリ２０）との間のデータ転送を停止させたが、転送速度を引き下げてデータ転送を継続させる（具体的には、アクセス要求の送信間隔を長くさせる）ようにしても良い。また、メモリ２０を構成する複数のバンクのうちアクセスを許可するバンクを制限する態様（例えば、単位処理時間におけるデータ転送量が上限値に達するまでは全てのバンクに対するアクセスを許可し、上限値に達した以降は特定のバンクに対するアクセスのみを許可する態様）であっても良い。要は、転送量カウンタによりカウントされたデータ転送量が予め定められた上限値に達したマスタモジュールについては、次の単位処理時間の計時が開始されるまでスレーブモジュールとの間のデータ転送に何らかの制限を加える態様であれば良い。
【００３４】
（４）上述した実施形態では、単位処理時間における各マスタモジュールのデータ転送量の上限値が固定されていたが、時間の経過とともに上記上限値を変化させるようにしても良い。また、上述した実施形態では、単位処理時間におけるデータ転送量が予め定められた上限値に達したマスタモジュールに対してデータ転送の停止をサブバンド信号の送信により指示したが、バスプロトコルにて予め用意されている停止指示コマンドを用いてその指示を行うようにしても良い。
【００３５】
（５）上述した実施形態では、メモリコントローラ３０の３つのポートの全てについて、その接続先のマスタモジュールの単位処理時間当たりのデータ転送量を予め定められた上限値までに制限することができる構成（すなわち、上記実施形態の特徴を顕著に示す３つの構成要素（データパス部３３０ａ、転送量カウンタ３３０ｂおよびアクセス停止制御部３３０ｃ）を含む構成）とした。しかし、メモリコントローラ３０が備える３つのポートのうちの少なくとも１つを単位処理時間当たりのデータ転送量を予め定められた上限値までに制限することができる構成とし、他のポートについては従来のものと同様の構成（例えば、上記実施形態の特徴を顕著に示す３つの構成要素のうちデータパス部３３０ａのみを含む構成）としても良い。
【００３６】
（６）上述した実施形態では、メモリコントローラ３０に、３つのマスタモジュール（画像処理機能を担うマスタモジュール１０Ａ、音声処理機能を担うマスタモジュール１０ＢおよびＤＭＡコントローラの役割を担うマスタモジュール１０Ｃ）が接続される場合について説明したが、２つまたは４つ以上のマスタモジュールを接続しても良いことは言うまでもない。また、メモリコントローラ３０に接続されるマスタモジュールの種類も上記３種類に限定されるものではなく、ＣＰＵやＤＳＰであっても勿論良い。また、上述した実施形態では、メモリコントローラ３０に接続される複数のマスタモジュールのうちの１つが非周期的なデータ転送を行う場合について説明したが、それらのうちの複数のものが非周期的なデータ転送を行う態様であっても良く、また、それらの全てが周期的なデータ転送を行う態様であっても良い。
【００３７】
（７）上述した実施形態では、メモリ２０を共有する複数のマスタモジュールの各々のアクセス制御を行うメモリコントローラへの本発明の適用例を説明した。しかし、複数のマスタモジュールとスレーブモジュールとが共有バスに接続されたシステムにおいて、各マスタモジュールがスレーブモジュールにアクセスする際の競合を調停するバス調停回路に本発明を適用して勿論良い。要は、複数のマスタモジュールにより共有されるスレーブモジュールに対する各マスタモジュールのアクセスを制御するアクセスコントローラであれば、本発明を適用することが可能である。
【００３８】
（８）上述した実施形態のメモリ２０はＤＲＡＭやＳＲＡＭなどの比較的高速なメモリであった。しかし、データの読み出しのみが可能なＲＯＭや比較的低速なストレージデバイスをメモリ２０として用い、高速なアクセスを必要とするマスタモジュールに対するデータを必要に応じて別メモリに転送する形態も考えられる。限られた帯域を有効に使用し、システムの破綻を防止しつつ性能設計を容易にするという意味では、低速メモリに対するアクセス制御に本発明を適用することによって顕著な効果が得られるからである。
【００３９】
（９）上述した実施形態では各マスタモジュールが実行するデータ転送を周期的に実行されるものと、非周期的に実行されるものとに分類し、後者に対してのみ単位処理時間当たりのデータ転送量に上限値を設定した。しかし、データ転送の開始から完了までの時間幅として許容される許容時間が所定の閾値を超えるか否かによって各マスタモジュールを分類し、超えないものに対しては許容時間内にデータ転送を完了するように定められる単位処理時間当たりのデータ転送量に対して余裕のある上限値を設定し（或いは、上限値を設定しない）、超えるものに対しては十分に小さな上限値を設定するようにしても良い。このような態様によれば、データ転送の開始からその完了までの許容時間が所定の閾値を超えるマスタモジュール（すなわち、時間的な制約が緩やかなデータ転送を実行するマスタモジュール）については単位処理時間におけるデータ転送の実行が厳しく制限される一方、許容時間が閾値を超えないマスタモジュール（すなわち、時間的な制約が厳しいデータ転送を実行するマスタモジュール）に対してデータ転送帯域が優先的に確保されることになる。なお、上記閾値としてどのような値を採用するのかについては、複数のマスタモジュールとスレーブモジュールとを含むシステム全体に対する要求仕様に基づいて定めるようにすれば良い。例えば、上述した実施形態は、本変形例における閾値としてシーン周期ＴＳよりは小さく、かつ、フレーム周期ＴＦよりは大きい値を採用した場合に相当する。
【符号の説明】
【００４０】
１０Ａ、１０Ｂ、１０Ｃ…マスタモジュール、２０…メモリ、３０…メモリコントローラ、３１０…マルチポートデータ転送制御部、３２０…タイマ、３３０−１,３３０−２，３３０−３…ポート、３３０ａ…データパス部、３３０ｂ…転送量カウンタ、３３０ｃ…アクセス停止制御部。
【図１】
2011095966.tif 000003
【図２】
2011095966.tif 000004
【図３】
2011095966.tif 000005