JP4635485B2 - データ処理装置 - Google Patents

データ処理装置 Download PDF

Info

Publication number
JP4635485B2
JP4635485B2 JP2004191411A JP2004191411A JP4635485B2 JP 4635485 B2 JP4635485 B2 JP 4635485B2 JP 2004191411 A JP2004191411 A JP 2004191411A JP 2004191411 A JP2004191411 A JP 2004191411A JP 4635485 B2 JP4635485 B2 JP 4635485B2
Authority
JP
Japan
Prior art keywords
request
data transfer
bus master
data
timer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004191411A
Other languages
English (en)
Other versions
JP2006012032A (ja
Inventor
篤史 林
克彦 山中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2004191411A priority Critical patent/JP4635485B2/ja
Publication of JP2006012032A publication Critical patent/JP2006012032A/ja
Application granted granted Critical
Publication of JP4635485B2 publication Critical patent/JP4635485B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)

Description

本発明は、複数のクライアント(バスマスタ)からのデータ転送要求を調停し、メモリバスへのアクセスを許可するデータ処理装置に関する。
複数のクライアント間で1つのメモリバスを共有する際に、そのメモリバスに対する複数のクライアント(バスマスタ)からのアクセスを調停するための、データ処理装置としてのアービタに関する様々な技術が従来より提案されている。
たとえば、下記特許文献1では、複数のバスマスタからのデータ転送要求を調停する際に、バスマスタの数が増大しても、処理速度の低下を防止するために、ツリー構造型のラウンドロビンアービタに関する技術が開示されている。
通常、このようなツリー構造のアービタでは、そのツリーから導き出される割合にしたがって各バスマスタのバンド幅が保証される。
図7は、ラウンドロビンアービタのツリー構造の一例である。図では、たとえば、効率を考慮したバンド幅:10に対して、バスマスタA〜Cの各バスマスタに対し、それぞれ、「2.5」、「2.5」、「5」のバンド幅が保証される。なお、図中の矢印は、トークンが渡される向きを示す。
しかし、昨今、システムモードの多様化によって、1つのバスマスタが複数のモードを有し、各モード毎にバンド幅が著しく変化する場合がある。たとえば、映像表示を行うクライアントの場合、HDモード(高密度映像モード)とSDモード(標準映像モード)とでは、映像の解像度が異なるためにバンド幅が大きく異なるのが通常である。かかる場合には、1つのツリー構造に基づくバンド幅の保証のみでは対応することができない。
また、システムモードの多様化に応じた複数のツリー構造を設定することは、あるモードからその他のモードへの遷移状態をどのように扱うかという問題、モードが非常に多く存在する場合にどの程度ツリーを設定する必要があるかという問題、などがあり、現実的に困難である。
ところで、あるバスマスタが、ツリー構造から割り当てられるバンド幅以上に動作する場合であっても、全バスマスタの合計バンド幅が効率を考えた全バンド幅を超えない限り、比較的長い時間で見ると、当該バスマスタのバンド幅も保証される。これは、ツリー構造上恵まれたバスマスタ(データ転送要求(以下、単にリクエストと称する)以上にバンド幅が割り当てられたバスマスタ)がリクエストを行わないことで、ツリー構造の一時的変化が起こり、他のバスマスタに対して、本来割り当てられたバンド幅以上のバンド幅が与えられるためである。
その一方で、ツリー構造上恵まれたバスマスタがリクエストを行う際の間隔が均一でない場合には、その他のバスマスタが有するFIFOバッファが不利となる。
図8は、(a)リクエストを同じ間隔で行う場合と、(b)リクエストを同じ間隔で行わない場合とで、FIFOバッファに与える影響を説明するための図である。
図8において、時刻rt1〜rt5は、図7で示した各バスマスタA〜Cがリクエスト(REQ_A,REQ_B,REQ_C)を行うタイミングであり、時刻gt1〜gt8は、アービタからグラントを受け取るタイミングである。そして、リクエストのタイミングと、そのリクエストに対して受け取るグラントのタイミングが、対応付けて線で結ばれている。
なお、ここで、バスマスタBは、図示しないメモリからデータの読み込みを行うリード用バスマスタであり、一定レートで外部のクライアントからFIFOバッファ上のデータが引き抜かれる。
図8において、ステップ状に示される線図は、バスマスタBのFIFOバッファに蓄積されるデータ量を示す。たとえば、(a)では、時刻gt3,gt4,gt5,gt8にグラントが与えられ、これらのタイミングで、図示しないメモリコントローラを介し、順次FIFOバッファに蓄積される。
また、図における直線rate_Bは、バスマスタBのクライアントが、バスマスタBのFIFOバッファからデータを引き抜く際のレートを示す。直線rate_Bの傾きは、(a)および(b)ともに一定である。
図8(a)では、バスマスタCのリクエスト(REQ_C)は、割り当てられたバンド幅に応じた均一の間隔で行われている(時刻rt1,時刻rt4,…)。
なお、時刻rt2およびrt3におけるバスマスタBのリクエスト(REQ_B)に応じてグラントが与えられているのは、トークンの向きとしては逆(トークンが渡される順序としては最後)であるものの、他のバスマスタがリクエストを行っていないからである。
一方、図8(b)では、バスマスタCのリクエスト(REQ_C)は、一定の期間で見れば割り当てられたバンド幅に応じた平均的な間隔となっているものの、時刻rt1およびrt2において局所的にリクエストが行われた場合を示している。この時、時刻rt2においてツリー構造上優先度の高い、すなわち、トークンが先に渡されるバスマスタCが先に調停される結果、バスマスタBは、(a)と異なり、時刻gt3でグラントが与えられない。
すなわち、バスマスタBは、(a)の場合と異なり、最初の調停時刻が遅れる(時刻gt4になる)ことになるが、バスマスタBのクライアントからのデータ引き抜きレートは、(a)の場合と(b)の場合とで同一のため、たとえば時刻gt4の時点において、(a)の場合と比較して、図に示すDIFFの分だけ大きく引き抜かれることになり、FIFOバッファにとって不利となる。
以上、図8を参照して説明したように、あるバスマスタが、ツリー構造から割り当てられるバンド幅以上に動作する場合にFIFOバッファによりデータ損失を防止するシステムにおいては、バンド幅が保証される時間がFIFOバッファで補うことができる時間であるか否かが重要なポイントとなり、それはデータ転送に対するリクエスト間隔にむらがあるか否かに依存するのである。
そこで、下記特許文献2では、データ転送のリクエスト間隔のむらを抑制するために、ツリー構造から割り当てられたバンド幅以下で動作するバスマスタに対してタイマを設け、そのタイマによりリクエストをマスクするアービタに関する技術が開示されている。
特開2002−304367号公報 特開2003−256358号公報
しかし、上記特許文献2に開示されているように、タイマにより一度グラントをうけてから次のリクエストをタイマ値のサイクル数だけマスクする方法によれば、バスマスタのリクエストは、タイマによりマスクされた後、さらに調停による待ち時間(調停により順番が回ってくる時間)の後に満たされる(グラントが与えられる)ことになる。
このことは、タイマによりリクエストの制限を与えようとするバスマスタに対して、求められるバンド幅に応じて単純に導き出されるタイマ値を設定すると、調停待ち時間の分だけバンド幅が削減されることを意味する。
したがって、あるバスマスタに対するタイマ値は、ワーストケースでの調停待ち時間を考慮して設定する必要があるが、その一方で、ワーストケースの調停待ち時間を考慮したタイマ値が設定された場合に、実際にはベストケースでの調停待ち時間をもってグラントが与えられると、ツリー構造以上のバンド幅をリクエストするその他のバスマスタが破綻する可能性がある。
すなわち、タイマにより単純に一度グラントをうけてから次のリクエストをタイマ値のサイクル数だけマスクするのでは、調停の待ち時間にむらがある場合に対応することができず、実際にワーストケースを見積もることが困難であるため、FIFOバッファの容量に対して過度のマージンを設定する必要が生ずる。
本発明はかかる事情に鑑みてなされたものであり、その目的は、バスマスタのデータ転送要求の間隔をバンド幅に相当する間隔に抑制するデータ処理装置を提供することにある。
上述した目的を達成するための本発明は、それぞれバッファを含む複数のバスマスタと、データ転送要求を調停し、前記複数のバスマスタの中からデータ転送を許可したバスマスタに対して、メモリバスへのアクセスを許可するアービタと、を有し、前記複数のバスマスタのうち少なくとも一のバスマスタは、タイマによりデータ転送要求を行うタイミングが管理され、第1のデータ転送要求に対する前記アービタの調停が前記タイマの設定時間を経過する回数をカウントし、当該カウント値に応じて、前記第1のデータ転送要求に続く第2のデータ転送要求以後の複数のデータ転送要求を、前記タイマに関わらず直ちに行うデータ処理装置である。
好適には、前記一のバスマスタは、前記アービタからデータ転送要求に対する許可が与えられる毎に、前記カウント値を減ずる。
好適には、前記一のバスマスタは、データ転送要求を、所定量のデータに対応する複数のデータ転送要求に分割して行い、バッファが前記所定量のデータを格納可能な数を、前記カウント値の上限とする。
好適には、前記一のバスマスタは、すべてのデータ転送要求に対して前記アービタより許可が与えられると、前記カウント値をリセットし、または、前記カウント値が「1」以上である場合に「1」に固定する。
好適には、前記一のバスマスタは、バッファがオーバーフローまたはアンダーフローするためにデータ転送要求を行うことができない間は、前記カウント値が「1」以上である場合に「1」に固定する。
本発明のデータ処理装置の作用は、以下の通りである。
すなわち、前記複数のバスマスタのうち少なくとも一のバスマスタは、タイマによりデータ転送要求を行うタイミングが管理されており、通常、タイマによる遅れ時間をもって、データ転送要求を行う。
そして、第1のデータ転送要求に対する前記アービタの調停時間が、前記タイマの設定時間より長くなると、その第1のデータ転送要求の次になされる第2のデータ転送要求については、タイマによる遅れを伴わずに直ちに行う。
これにより、第1のデータ転送要求におけるアービタの調停の遅れ分が、後の第2のデータ転送要求で取り戻される結果、ある一定期間では、アービタの調停時間によらず、データ転送要求のタイミングを均一と見ることができる。
本発明によれば、バスマスタのデータ転送要求の間隔をバンド幅に相当する間隔に抑制するので、その他のバスマスタに対する影響を少なくすることができ、バスマスタ全体のデータ転送性能を向上させることができる。さらに、バスマスタに必要なFIFOバッファの容量を正確に見積もることができるので、過度のマージンを必要とせず、小型化および低コスト化に資する。
実施の形態
本実施形態に係るデータ処理装置は、ラウンドロビンアービタにおけるツリー構造によって割り当てられるバンド幅以上のバンド幅をリクエストするバスマスタのデータ転送を保証するために、ツリー構造の変化を見積もることを可能にするとともに、バスマスタのデータ転送要求(リクエスト)間隔をタイマにより制御して、そのリクエスト間隔を平均化するものである。
図1は、本発明の一実施形態であるデータ処理装置の一構成例である。
図1では、メモリ(MEM)4に対するデータ転送を行う複数のクライアント(CLT)1a〜1dに対して、FIFOバッファを含むバスマスタ(BM)2a〜2dが接続され、各バスマスタからのリクエストをメモリコントローラ(MEM_C)3内のアービタ(ARB)31が調停する。
なお、クライアント1a,1bは、リード用クライアントであり、メモリ4からデータを読み出すクライアントである。クライアント1c,1dは、ライト用クライアントであり、メモリ4に対してデータを書き込むクライアントである。
図1に示すように、各クライアントは、対応するバスマスタに対してデータ転送に係るコマンド(CMD)を与え、各バスマスタはこのコマンドに応じて、データ転送に係るリクエストをアービタ31に対して行う。
アービタ31は、図1に図示した複数のバスマスタからのリクエストを調停した結果、1つのバスマスタに対して、メモリバスに対するアクセスを許可するためのグラント(GNT)を与える。
アービタ31の調停方式としては、たとえば、上述したツリー構造のラウンドロビンアービタを適用することができる。すなわち、複数のバスマスタ間にトークンを走らせ、あるバスマスタにリクエストがない場合には、次のバスマスタにトークンを渡していき、リクエストがあるバスマスタにトークンが回ってきた時に、そのバスマスタに対してグラント信号を与える。そして、この調停をツリー構造に構成された複数のサブアービタによって順次行う。
図2は、リード用クライアントに対応するバスマスタ2の構成を示す回路ブロック図の一例である。
図2において、FIFOバッファ10は、データ転送のむらや調停待ち時間のむらを吸収し、各バスマスタの処理を破綻させないためのデータバッファである。アービタ31は、このFIFOバッファがオーバーフロ/アンダーフロを起こさないように各バスマスタからのリクエストを調停することが必要である。
クライアントからのデータ転送コマンド(CMD)は、順次コマンドバッファ(CMD_BUF)13に蓄積され、パケット分割部14により処理される。
パケット分割部14では、コマンドバッファ13に蓄積されたデータ転送コマンド(CMD)を、メモリコントローラ3によって規定される所定のデータ転送単位(パケット)に分割するとともに、順次、パケット単位でリクエスト信号を生成するようにリクエスト生成部15に指示する。このとき、FIFOバッファの空き容量が1パケット分ない場合は、FIFOバッファの制御として、リクエストを止めなければならない(すなわち、FULLでない場合のみリクエストを行う)。
また、メモリ4のアドレス等のメモリアクセスに関する情報は、パケット分割部14からメモリコントローラ3に対して送出される。
パケットとしては、リード用パケットおよびライト用パケットの2種類が必ず存在するが、その他として、たとえばデータ量の違い、アドレッシングの違いでパケットを設定してもよい。また、リフレッシュ等をパケットに含めてもよい。
リクエスト生成部15により生成されたリクエスト信号(REQ)は、無条件にメモリコントローラ3内のアービタ31に出力されるのではなく、図に示すように、リクエスト信号(REQ)の出力有無は、図に示すリクエスト出力制御部(REQ_CTRL)により、AND回路16を介して制御される。
リクエスト出力制御部(REQ_CTRL)には、図示しないCPUによりタイマ設定値(TIM)が与えられる。
タイマ設定値は、バスマスタによって異なる値であり、リクエスト信号(REQ)の出力をマスクするサイクル数として、各バスマスタに与えられる。すなわち、このタイマ設定値(TIM)に応じたマスク期間では、リクエスト信号(REQ)が停止される。したがって、タイマ設定値(TIM)が小さく設定されているほど、リクエスト信号(REQ)がマスクされる期間が短くなり、優先度が上がることになる。
これにより、タイマ設定値(TIM)に応じたバンド幅を各バスマスタに与えることができることになるが、単にタイマ設定値(TIM)に応じた制御だけでは、調停の待ち時間にむらがある場合には、その待ち時間の分だけバンド幅が削減されることと等価になってしまう。
したがって、本実施形態では、調停の待ち時間に依存せずに、バンド幅のみから導き出せるタイマ値を設定できるように、リクエスト出力制御部(REQ_CTRL)を以下に説明するように構成している。
図3は、リクエスト出力制御部(REQ_CTRL)を構成するタイマカウンタ(CTR)11およびリクエスト制御値生成部(RCVG)12の回路ブロック図の一例である。
タイマカウンタ11は、タイマ設定値(TIM)を順次カウントし、カウントを終了する毎にリクエスト制御値生成部12へ通知する。
すなわち、カウンタ111では、タイマ設定値(TIM)のカウントが終了する毎に、判定回路112およびゲート回路116を介して、タイマ設定値(TIM)がロードされて、またカウントが始められる。そして、タイマ設定値(TIM)のカウントが終了する毎に、判定回路112よりリクエスト制御値生成部12へ制御信号が送出される。
なお、タイマカウンタ111は、対応するバスマスタ2がリクエスト信号(REQ)を出力した後の調停の待ち時間の間も、カウントを継続する。
リクエスト制御値生成部12は、図に示すように、カウンタ122を含んで構成され、このカウンタ122のカウント値がリクエスト制御値(RCV)となる。
カウンタ122は、カウンタ111によりタイマ設定値(TIM)のカウントが終了する毎にゲート回路121に与えられる制御信号に応じて、カウントアップする。
また、カウンタ122は、アービタ31よりグラント信号(GNT)が与えられると、カウントダウンする。
その際、タイマ設定値(TIM)のカウントが終了し、かつ、グラント信号(GNT)がアービタ31より与えられた場合には、カウントアップとカウントダウンが相殺されるので、AND回路123を介して、カウントアップおよびカウントダウンはともに行わない(+/−0)。
また、リクエスト制御値生成部12では、カウンタ122に対してカウントできる最大値を設定している。その最大値は、FIFOバッファの容量に対応していることが望ましい。すなわち、FIFOバッファ10が、クライアントが一回のデータ転送で要するデータ量の何倍に相当するかによって最大値を決定する。
図3では、最大値判定回路(MAX)124がリクエスト制御値(RCV)をモニタし、リクエスト制御値(RCV)が所定の最大値に達した場合には、出力レベルを反転させ、これにより、ゲート回路121は、カウンタ122がカウントアップしないように制御する。
以上、リクエスト出力制御部(REQ_CTRL)の構成および動作について述べた。次に、再び図2に戻って、リクエスト制御値(RCV)によるリクエスト信号(REQ)の出力制御について説明する。
図2に示すように、バスマスタ2では、カウンタ122のカウント値であるリクエスト制御値(RCV)が「0」でない場合(!=0)には、リクエスト生成部15が生成したリクエスト信号(REQ)を直ちにアービタ31に対して送出する。
逆に、リクエスト制御値(RCV)が「0」である場合(=0)には、タイマ設定値(TIM)のカウントが終了し、カウンタ122がカウントアップされてリクエスト制御値(RCV)が「0」でなくなった時点で、リクエスト信号(REQ)をアービタ31に対して送出する。
すなわち、リクエスト出力制御部(REQ_CTRL)は、バンド幅に応じて割り当てられたタイマ設定値(TIM)よりアービタ31の調停待ち時間が長い場合には、次のリクエスト信号(REQ)を抑制せずに直ちに送出する。そして、カウンタ122がカウントアップされ、リクエスト制御値(RCV)が「0」でない(!=0)間は、リクエスト信号(REQ)を直ちに送出し続けることができる。
これにより、調停待ち時間が長い場合であっても、リクエスト信号(REQ)の送出遅れ分を、その後に取り戻すことができることになる。
一方、アービタ31の調停待ち時間が非常に長い場合であっても、リクエスト信号(REQ)をいつまでも直ちに送出できるのではない。すなわち、グラント信号(GNT)を受け取る毎にカウンタ122がカウントダウンし、リクエスト制御値(RCV)が「0」に達すると、タイマ設定値(TIM)に応じた遅延時間をもってリクエスト信号(REQ)を送出する。
以上述べたように、カウンタ122のカウントアップおよびカウントダウンの動作により、アービタ31の調停待ち時間によらず、割り当てられたバンド幅に応じたタイマ設定値(TIM)をもって、リクエスト間隔を平均化させることができる。すなわち、一時的に調停待ち時間が長くなっても、ある一定の期間ではリクエスト間隔が一定であるとして見ることができる。
具体的には、ある時刻tにおいて、下記(I)式を満足する場合にはそのバスマスタがリクエストしていると判断でき、最終的にはツリー構造の一時的変化を判断できるようになるので、ツリー構造によって割り当てられるバンド幅以上のバンド幅をリクエストするバスマスタのデータ転送を保証することができるようになる。

(繰り下げ(t/TIM+1) − ΣGNT)!= 0 ・・・(I)

ここで、繰り下げ(t/TIM+1)は、TIM間隔でリクエストする式である。式の中で+1をしているのは、システム全体でのリクエストのもっとも集中するとき、すなわち各バスマスタのリクエスト周期の位相が合い一斉にリクエストする時刻をt=0としている。
また、リクエスト間隔を等間隔に制御することで、他のバスマスタへの影響を小さくすることができる。
次に、図3を参照して述べたリクエスト出力制御部(REQ_CTRL)において、カウンタ群(カウンタ111およびカウンタ122)のリセットについて説明する。
リクエスト出力制御部(REQ_CTRL)の各カウンタは、以下の(1)および(2)の観点を考慮してリセット機能を有している。
(1)バスマスタが動作していない場合に、カウンタ122をカウントアップしてしまうと、その後に動作を開始する直後のリクエスト間隔を制御できなくなる。
(2)FIFOバッファが一杯になった場合に、カウンタ122がカウントアップしてしまうと、その後のリクエスト間隔を制御できなくなる可能性がある。
本実施形態においては、リセット条件を以下に説明するように設定する。
なお、図3においてリセット信号をtim_1setと称している。そして、カウンタ群をリセットする際には、クライアントからコマンド(CMD)が与えられた直後は直ちにリクエストができるようにするため、図3に示すように、リセット信号(tim_1set)に応じてカウンタ122を「1」にセットする。
第1のリセット条件として、先ず、バスマスタが「動作中(OPG)でない」場合に、カウンタ群のリセットを行う。
すなわち、FIFOバッファ内においてデータ転送コマンド(コマンド)に対する処理が完全に終了した時、具体的には、あるコマンドに対する処理が終了し、その次のコマンドがまだ与えられていない場合に、バスマスタが「動作中(OPG)でない」と判断する。
上述したように、リセットに際し、カウンタ122を「1」にセットするが、前のコマンドの処理の後、短期間だけ「動作中でない」状態になり、カウンタ122が「1」にセットされると、その直後に次のコマンドが来た場合にすぐリクエストが出ることになり、コマンド間隔が保証できなくなる。
したがって、コマンドの処理が完全に終了した時にリクエスト制御値(RCV)が「1」以上の場合には「1」に固定する。また、リクエスト制御値(RCV)が「0」である場合には、「1」になるタイミングまで待ち、「1」に固定することが望ましい。
なお、図3では、ゲート回路113、判定回路114およびAND回路115により上述した処理がなされる。
第2のリセット条件として、FIFOバッファに空き容量がない場合(FULL)に、カウンタ群のリセットを行う。
すなわち、FIFOバッファの制御としてFIFOバッファに1パケット分の空き容量がない場合にリクエストを止めなければならないが、その間にカウンタ122をカウントアップすると、その後のリクエスト間隔がクライアントのデータ転送レートのむらに依存してしまうことになる。
図4は、リクエスト間隔がクライアントのデータ転送レートに依存する場合について説明するための図であり、(a)はカウンタ122のカウント動作を、(b)はリクエスト信号(REQ)のタイミングを、それぞれ示す。図4は、たとえば、FIFOバッファが8パケット分ある場合に、クライアントからのコマンドが16パケット分である時の処理を示している。
時刻t1の時点で、FIFOバッファが一杯となり、その後、クライアントがFIFOバッファのデータを引き抜かないため、時刻t1からt2の間、バスマスタは、リクエスト信号(REQ)を送出しない。また、その間は、カウンタ122のカウント動作が行われているので、リクエスト制御値(RCV)が増加している。
そして、時刻t2の時点から、クライアントがFIFOバッファのデータの引き抜きを開始すると、リクエスト制御値(RCV)が大きな値となっているので、早い転送レートでリクエスト信号(REQ)を送出し、タイマ設定値(TIM)のカウント動作によってはリクエスト信号(REQ)の送出を抑制することができない。
時刻t3になり、ある程度のデータの引き抜きがなされると、リクエスト制御値(RCV)が適切なレベルとなり、リクエスト信号(REQ)の送出タイミングがタイマ設定値(TIM)に応じたタイミングに抑制される。すなわち、タイマが効き始める。
以上、図4を一例として述べたように、FIFOバッファの空き領域がなく、かつ、リクエスト制御値(RCV)がある程度大きな値となっている場合には、その後にFIFOバッファからデータが一気に引き抜かれると、タイマが効かず、クライアントのデータ引き抜きレートに応じたリクエスト間隔となってしまうのである。
この不都合を防止するためには、FIFOバッファの空き容量がない間は、リクエスト制御値(RCV)を「1」以上に蓄積しなければよい。
すでに述べたように、本来的にカウンタ122をカウントアップする理由は、調停の待ち時間分に起因するリクエスト信号(REQ)の送出の遅れを後で取り戻すためであって、クライアントがFIFOバッファからデータを引き抜かないためリクエスト間隔が長引いた場合に、カウントアップする必要はない。
また、カウントアップする必要がある場合であっても、リクエスト間隔にむらが出るということは、ツリー構造の変化を見積もることができなくなる可能性があり、システム全体のデータ処理能力に影響を与えるため、個別に、より大きなバンド幅に対応できるタイマを設定したり、FIFOバッファを増やすことで対応すべきである。
したがって、FIFOバッファの空き容量がない間にリクエスト制御値(RCV)が「1」以上の場合には「1」に固定する。また、リクエスト制御値(RCV)が「0」である場合には、「1」になるタイミングまで待ち、「1」に固定することが望ましい。
なお、図3では、ゲート回路113、判定回路114およびAND回路115により上述した処理がなされる。
次に、バスマスタ2の動作について、添付図面を参照して説明する。
図5は、バスマスタ2の動作を示すタイミングチャートの一例であり、(a)はFIFOバッファ10のデータ量(FIFO)を、(b)はカウンタ111のカウント動作(CTR)を、(c)はリクエスト制御値(RCV)を、(d)はクライアントからのデータ転送コマンド(CMD)を、(e)はクライアントからのデータイネーブル(DEN)を、(f)はリクエスト信号(REQ)を、(g)はグラント信号(GNT)を、それぞれ示す。
図5では、時刻t0で、クライアントからデータ転送コマンドが送出され、バスマスタ2は、そのコマンドを複数のパケットに分割し、パケット毎にリクエスト信号(REQ)を生成してアービタ31に対して出力する。
時刻t0から時刻t1にかけて送出されたリクエスト信号(REQ)が調停され、グラント信号(GNT)が与えられると、(a)に示すように、徐々にFIFOバッファにデータが蓄積される。
ここで、上記前者リセットは、時刻t0までの間に機能し、RCVの値が「1」に固定される。これによりコマンド(CMD)が来た直後にREQを出し、時刻t0から時刻t1にかけて、タイマにコントロールされて、REQを出すことが分かる。
時刻t1になると、FIFOバッファに1パケット分の空き容量がなくなり、FIFOバッファの制御の必要上リクエストを止める。時刻t1から時刻t3まで、FIFOバッファに1パケット分の空き容量がなく、REQは止まり続ける。
ここで、上記後者リセットが機能し、リクエスト制御値(RCV)が「1」以上の値であれば、リクエスト出力制御部(REQ_CTRL)のカウンタ群はともにリセットされる。これにより、データの引き抜きが行われる時刻t2以降、仮にデータ転送レートにむらがあり、バンド幅以上の割合でデータの引き抜きが行われても、タイマにコントロールされてREQを出すことが保証される。
仮にカウンタ群がリセットされずにRCVの値が大きくなると、FIFOバッファに空きがあればREQが出せるようになり、クライアントがバンド幅以上の割合でデータの引き抜きを行うと、そのままそのレートでREQが出ることになり、タイマによる制御が利かなくなる。したがって、カウンタ群をリセットすることで、かかる不都合を回避している。
なお、図では、データ転送レートが一定の場合を示しており、時刻t3以降、FIFOバッファの空き容量がなくなるとき(full)、リクエスト制御値(RCV)は「0」となり、FIFOバッファに空き容量が発生すると、リクエスト制御値(RCV)は「1」以上となる。この結果、図中に円で示したように、FIFOバッファのデータ量が一杯となるタイミングと、リクエスト制御値(RCV)が「0」となるタイミングが一致する。
上述のように、データ転送レートが一定のクライアントの場合、一旦FIFOバッファが一杯(full)になると、クライアントのデータ転送レートに応じた動作となるので、本発明は、たとえば、リード用クライアントが初めてバスマスタに対してデータ転送コマンドを送出し、FIFOバッファが空の状態からデータ蓄積を開始する時からFIFOバッファが一杯になるまでの間(図5で時刻t0からt1まで)において、特に、リクエスト間隔をタイマ設定値(TIM)に応じた値に平均化させる効果が高いということが言える。
一方、クライアントによっては、比較的短い期間でデータ転送レートが一定ではない場合がある。本発明は、かかる場合にリクエスト間隔を平均化させる効果が高い。
たとえば、メモリ上のデータに基づいて画像表示を行うクライアントは、水平方向、垂直方向にブランク期間があるため、データ転送レートが実際には一定ではない。すなわち、そのブランク期間は、FIFOバッファからデータを引き抜かないので、そのブランク期間を含めると、データ転送レートは一定ではなく、メモリバスの上ではバンド幅にむらがあるように見えてしまう。
このような場合でも、バスマスタ2は、タイマによってリクエスト間隔を平均化するので、メモリバス上のバンド幅にむらがないものと見ることができる。
一部の複雑なクライアントのデータ転送レートのむらがそのままリクエストに影響してしまうと、上述したようにツリー構造の変化を見積もることが困難になるうえ、必要なFIFOバッファの容量が増大する。
したがって、データ転送レートのむらのあるクライアントのバスマスタは、個別にFIFOバッファの容量を増加させて対応することで、必要なFIFOバッファ容量を効率的に見積もることができる。図6は、この考え方を模式的に表した図である。
図6は、リードクライアントにおいて、時間に応じてFIFOバッファに蓄積されるデータとの関係を示し、(a)は、リクエストのタイミングにむらがある複雑なクライアントの場合、(b)は、タイマによりリクエスト間隔を抑制されたクライアントの場合である。また、(c)は、合計での必要なFIFOバッファ容量を示す。
図6において、システム全体では、(b)に示すように、タイマによりリクエスト間隔が抑制され、タイマ設定値(TIM)に応じたTIM_rateの割合で、FIFOバッファにデータが蓄積されるが、一部の複雑なクライアントのデータレートは、TIM_rateに応じたデータの蓄積がなされない。
かかる場合には、(c)に示すように、2つのバッファ容量diff1およびdiff2の合計を必要なFIFOバッファ容量として見積もることができる。
なお、今までリードのクライアントを中心に述べてきたが、ライトのクライアントについても、本発明を適用することできる。
ライトのクライアントの場合には、始めの1パケット分のデータがFIFOバッファに書き込まれないと、リクエストをしない点だけがリードのクライアントの場合と異なる。このため、リードのクライアントと異なり、データ転送レートが一定であれば、タイマを持つ必要が無い。
しかし、データ転送レートにむらがある場合には、本発明が有効に機能する。また、理論上データ転送レートにむらがない場合でも、実際上何かの不具合で暴走し始めた場合の保険として本発明は有効に機能する。
以上述べたように、本実施形態に係るデータ処理装置によれば、調停の待ち時間の間もタイマ設定値(TIM)をカウントし、調停待ち時間がタイマ設定値(TIM)より長くなった場合には、その分リクエスト制御値(RCV)をカウントアップし、グラント信号(GNT)を受け取ると、カウントダウンし、リクエスト信号(REQ)の値が「1」以上の場合には、タイマ設定値(TIM)によらず直ちにリクエスト信号(REQ)を送出する。これにより、調停待ち時間に依存せずに、バンド幅から割り当てられたタイマ設定値(TIM)通りにアービタ31に対してリクエスト信号(REQ)を送出することができ、精度の高いバス保証を可能とする。
また、各バスマスタが持つべきFIFOバッファの容量をマージンを考慮せず見積もることができるので、回路規模の小型化および低コスト化を図ることができる。
本実施形態に係るデータ処理装置によれば、タイマ設定値(TIM)に基づいて、リクエスト間隔をバンド幅相当の間隔に正確に抑制することができるので、アービタとしてツリー構造のラウンドロビンアービタを適用した場合に、ツリー構造上割り当てられる以上のバンド幅を要求するバスマスタを保証することができると同時に、FIFOバッファ容量の正確な見積もりが可能となる。
本発明の一実施形態であるデータ処理装置の一構成例である。 実施形態に係るバスマスタの構成を示す回路ブロック図の一例である。 リクエスト出力制御部(REQ_CTRL)を構成するタイマカウンタ11およびリクエスト制御値生成部12の回路ブロック図の一例である。 リクエスト間隔がクライアントのデータ転送レートに依存する場合について説明するための図である。 実施形態に係るバスマスタの動作を示すタイミングチャートの一例である。 リードクライアントにおいて、時間に応じてFIFOバッファに蓄積されるデータとの関係である。 ラウンドロビンアービタのツリー構造の一例である。 リクエストを同じ間隔で行う場合と、リクエストを同じ間隔で行わない場合とで、FIFOバッファに与える影響を説明するための図である。
符号の説明
1a,1b,1c,1d…クライアント、2,2a,2b,2c,2d…バスマスタ、3…メモリコントローラ、31…アービタ、4…メモリ、10…FIFOバッファ、11…タイマカウンタ、12…リクエスト制御値生成部、13…コマンドバッファ、14…パケット分割部、15…リクエスト生成部、16…AND回路。

Claims (5)

  1. それぞれバッファを含む複数のバスマスタと、
    データ転送要求を調停し、前記複数のバスマスタの中からデータ転送を許可したバスマスタに対して、メモリバスへのアクセスを許可するアービタと、
    を有し、
    前記複数のバスマスタのうち少なくとも一のバスマスタは、タイマによりデータ転送要求を行うタイミングが管理され、
    第1のデータ転送要求に対する前記アービタの調停が前記タイマの設定時間を経過する回数をカウントし、当該カウント値に応じて、前記第1のデータ転送要求に続く第2のデータ転送要求以後の複数のデータ転送要求を、前記タイマに関わらず直ちに行う
    データ処理装置。
  2. 前記一のバスマスタは、
    前記アービタからデータ転送要求に対する許可が与えられる毎に、前記カウント値を減ずる
    請求項記載のデータ処理装置。
  3. 前記一のバスマスタは、データ転送要求を、所定量のデータに対応する複数のデータ転送要求に分割して行い、
    バッファが前記所定量のデータを格納可能な数を、前記カウント値の上限とする
    請求項記載のデータ処理装置。
  4. 前記一のバスマスタは、
    すべてのデータ転送要求に対して前記アービタより許可が与えられると、前記カウント値をリセットし、または、前記カウント値が「1」以上である場合に「1」に固定する
    請求項記載のデータ処理装置。
  5. 前記一のバスマスタは、
    バッファがオーバーフローまたはアンダーフローするためにデータ転送要求を行うことができない間は、
    前記カウント値が「1」以上である場合に「1」に固定する
    請求項記載のデータ処理装置。
JP2004191411A 2004-06-29 2004-06-29 データ処理装置 Expired - Fee Related JP4635485B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004191411A JP4635485B2 (ja) 2004-06-29 2004-06-29 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004191411A JP4635485B2 (ja) 2004-06-29 2004-06-29 データ処理装置

Publications (2)

Publication Number Publication Date
JP2006012032A JP2006012032A (ja) 2006-01-12
JP4635485B2 true JP4635485B2 (ja) 2011-02-23

Family

ID=35779202

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004191411A Expired - Fee Related JP4635485B2 (ja) 2004-06-29 2004-06-29 データ処理装置

Country Status (1)

Country Link
JP (1) JP4635485B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5068300B2 (ja) * 2009-11-24 2012-11-07 インターナショナル・ビジネス・マシーンズ・コーポレーション データフロー及びプロセッサのメモリ共有化ための装置、方法及びプログラム
US10481944B2 (en) * 2017-08-09 2019-11-19 Xilinx, Inc. Adaptive quality of service control circuit

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62139075A (ja) * 1985-12-13 1987-06-22 Fujitsu Ltd チヤネルプロセツサのアクセス制御方式
JP2000029777A (ja) * 1998-04-01 2000-01-28 Matsushita Electric Ind Co Ltd デ―タ転送装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62139075A (ja) * 1985-12-13 1987-06-22 Fujitsu Ltd チヤネルプロセツサのアクセス制御方式
JP2000029777A (ja) * 1998-04-01 2000-01-28 Matsushita Electric Ind Co Ltd デ―タ転送装置

Also Published As

Publication number Publication date
JP2006012032A (ja) 2006-01-12

Similar Documents

Publication Publication Date Title
US8312229B2 (en) Method and apparatus for scheduling real-time and non-real-time access to a shared resource
JP4778199B2 (ja) データ転送装置及びデータ転送方法
JP4480427B2 (ja) リソース管理装置
US7149828B2 (en) Bus arbitration apparatus and bus arbitration method
US6792516B2 (en) Memory arbiter with intelligent page gathering logic
JP4436367B2 (ja) 低バンド幅で局所集中アクセスを保証する調停装置、調停方法、及び調停装置を含む動画処理装置
JP7142741B2 (ja) データ転送装置およびデータ転送方法
JP2006195714A (ja) リソース管理装置
US5907688A (en) Smart arbitration for non-symmetric data streams
US20040019749A1 (en) Apparatus, method, and computer program for resource request arbitration
JP4635485B2 (ja) データ処理装置
EP1238342B1 (en) Apparatus for memory resource arbitration based on dedicated time slot allocation
US6412049B1 (en) Method for minimizing CPU memory latency while transferring streaming data
US20030126380A1 (en) Memory arbiter with grace and ceiling periods and intelligent page gathering logic
JP2005316609A (ja) バス調停装置およびバス調停方法
EP1513069A2 (en) Resource management apparatus
JP4850504B2 (ja) 信号処理装置、撮像装置およびデータ転送方法
WO2011016168A1 (ja) メモリアクセス装置、及び映像処理システム
JP2001101128A (ja) データ処理装置
US7120774B2 (en) Efficient management of memory access requests from a video data stream
JP2006040167A (ja) バス調停回路、情報処理装置、並びに、そのプログラムおよび記録媒体
JP4898527B2 (ja) リソース使用管理装置、リソース使用管理システム及びリソース使用管理装置の制御方法
CN114489541B (zh) 一种基于fpga的vga显存带宽调控方法及相关组件
US7747806B2 (en) Resource use management device, resource use management system, and control method for a resource use management device
JP2007102509A (ja) 調停装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070327

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100804

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100810

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101001

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101026

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101108

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131203

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131203

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees