JP2004287576A - バスコントローラ - Google Patents
バスコントローラ Download PDFInfo
- Publication number
- JP2004287576A JP2004287576A JP2003076055A JP2003076055A JP2004287576A JP 2004287576 A JP2004287576 A JP 2004287576A JP 2003076055 A JP2003076055 A JP 2003076055A JP 2003076055 A JP2003076055 A JP 2003076055A JP 2004287576 A JP2004287576 A JP 2004287576A
- Authority
- JP
- Japan
- Prior art keywords
- processing
- access
- cycles
- requester
- cycle number
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Memory System (AREA)
Abstract
【課題】バスコントローラは最大のサイクル数で設計を行なうと、周波数が高く、設計困難度が高く、コストアップとなる
【解決手段】共有メモリ21に対してアクセス要求を行う、各リクエスタ23,24、あるいは63,64,65毎に、サイクル数の異なる処理レベルの処理手段を備えて、現サイクル数に従って限界サイクル数を越えることが予測される場合に、サイクル数の少ない処理レベルを選択し、あるいは、非リアルタイム系のバスアクセス要求を許可しない制御をして、全リクエスタの最大アクセスサイクル数と、その最大アクセス回数分の総和よりも小さいサイクル数で、設計することを可能とした。
【選択図】 図1
【解決手段】共有メモリ21に対してアクセス要求を行う、各リクエスタ23,24、あるいは63,64,65毎に、サイクル数の異なる処理レベルの処理手段を備えて、現サイクル数に従って限界サイクル数を越えることが予測される場合に、サイクル数の少ない処理レベルを選択し、あるいは、非リアルタイム系のバスアクセス要求を許可しない制御をして、全リクエスタの最大アクセスサイクル数と、その最大アクセス回数分の総和よりも小さいサイクル数で、設計することを可能とした。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、バスコントローラに関し、特に、AVデータ、及び通信情報を処理するシステムにおける共有メモリのバスコントローラに関する。
【0002】
【従来の技術】
AVデータを、通信または記録再生するAV処理システムにおいて、通信手段の帯域幅や、記録媒体の容量を削減するために、画像や音声を符号化し、再生時には復号化する、ことが行われている。国際標準の動画像の符号化方式として、MPEG1/2/4などがある。これらの符号化方式は、動きベクトル検出、及び動き補償、DCT(Discrete Cosine Transform)、量子化、VLC(Variable Length Coding)などを組合せた方法である。また、高画質化や、画像の縮小、拡大時には、フィルタリング、さらに、文字データ処理や、グラフィックス処理、通信経路からのデータ転送、などの処理を行なう必要がある。このようなAV処理システムでは、各処理を行なうリクエスタが、共有メモリを用いて各々の処理を行なっている。
【0003】
従来のバスコントローラとしては、例えば、アービタの優先順位変更を行なう特許文献のようなものがある。この従来例を簡単化して示した図6により、従来技術の説明を行なう。図6において、61は共有メモリ、62はバスコントローラ、63は第1のリクエスタ、64は第2のリクエスタ、65は第3のリクエスタである。
【0004】
AV処理システムの例として、画像符号化システムを考え、第1のリクエスタ63として、画像のフィルタリング処理を、第2のリクエスタ64として、画像符号化処理を、第3のリクエスタ65として、情報通信インタフェースによるデータ転送処理を、考えるものとする。
【0005】
第1のリクエスタ63と、第2のリクエスタ64は、リアルタイム系の処理であり、画像1フレームの時間に定まった量の共有メモリへのアクセス、及び、データ処理を必要とする。これに対して、第3のリクエスタ65は、非リアルタイム系の処理であり、画像の処理に比較して、非定期的な共有メモリへのアクセス、及び、データ処理を行なう。
【0006】
バスコントローラ62の構成例を、図5に示す。図5において、51はアービタ、52はプロトコル変換手段である。各リクエスタからの要求信号に従い、アービタ51が優先順位に従って、上記リクエスタのうちの一個に許可信号(共有メモリアクセス信号(CMA))を与える。また、プロトコル変換手段52は、リクエスタのアクセスに用いられるアドレス、データ、及び、READかWRITEを示すリクエスタアクセス信号(RA)を、共有メモリアクセス信号(CMA)にプロトコル変換する機能を持つとともに、該プロトコル変換や、アクセス速度の変換のためのバッファ機能を持つ。共有メモリアクセス信号(CMA)としては、SDRAMアクセスのためのRowアドレス、Columnアドレス出力、及び、コマンド発行、などがある。
【0007】
第1リクエスタ63、第2リクエスタ64、第3のリクエスタ65は、各リクエスタ内の処理に従い、バスコントローラ62に共有メモリ61へのアクセス要求を出し、バスコントローラ62の許可に従って、バスコントローラ62のプロトコル変換を通して、共有メモリ61にアクセスを行なう、すなわち、共有メモリアクセス信号(CMA)により、アクセスする。
【0008】
図7に、サイクル数の例を示す。図7(a)に、各リクエスタのサイクル数の例を示し、簡単のため、第1のリクエスタ(REQ1)、第2のリクエスタ(REQ2)は、1フレーム時間内に、2回ずつのアクセスを必要とし、第3のリクエスタ(REQ3)は、1フレーム時間内に、0回または1回のアクセスを必要とし、各リクエスタは、定まったワード数のデータのアクセスを必要としている。サイクル数は、共有メモリ側のクロック数とする。各リクエスタのサイクル数でアクセスするアドレスによって、共有メモリ側のクロック数が変化することがある。
【0009】
SDRAMの場合、同じワード数のデータをアクセスする場合でも、ローアドレスが変更、連続アドレスかどうかに従い、最も少ないサイクル数でアクセスするためには、SDRAMへ必要なアドレス情報や、コマンド、シーケンスに変更することが必要となる。
【0010】
第1のリクエスタ(REQ1)で、最大のサイクル数を、N1(max)、最も少ないサイクル数を、N1(min)とし、平均的なサイクル数を、N1(ave.)として示し、N1(max)−N1(ave.)を黒色で示し、N1(ave.)−N1(min)を白色で示している。第2のリクエスタ(REQ2)についても、同様である。
【0011】
図7(b)で、1フレーム内の時間での全サイクル数と、そのサイクル数の設計について示している。1フレーム時間内の共有メモリアクセスのサイクル数は、
N1(max)×2+N2(max)×2+N3(max)×1
の場合が最大となる。この場合がありうるので、設計上システムが破綻しないように、このサイクル数を1フレーム時間に確保することが必要となる。ただし、これはすべてのアクセスが最大サイクル数になる場合であるので、頻度としては少ないものとなることが予想される。
【0012】
典型的な場合として、すでに示したように、1フレーム時間内に第3のリクエスタがなく、N1(ave.)×2+N2(ave.)×2の場合、N1(min)+N2(max)+N1(max)+N2(min)の場合などがあり、このような場合が、比較的頻度が多くなると考えられる。また、最小は1フレーム時間内に、N1(min)×2+N2(min)×2で済む。
【0013】
【特許文献1】
特開2001−184300号(第5頁0026〜第6頁0047、第1図)
【0014】
【発明が解決しようとする課題】
上記の従来例では、頻度は少なくても起こりうる最大のサイクル数で設計するため、1フレーム時間当たりのサイクル数が多く、共有メモリの動作周波数が高くなり、共有メモリや、回路のコストアップや、設計難易度が高くなる、ということがおこりうる。
【0015】
また、システム設計後にアプリケーションの改変、増加により、共有メモリアクセスのサイクル数が増加した場合には、動作周波数を上げた新しいバスシステムが必要となり、設計の難易度と、再設計による設計、製造のコストアップに繋がることとなる。
【0016】
本発明は上記従来の問題点を解決するためになされたもので、頻度が少ないような最大サイクル数に対応する高い周波数によるバスシステム設計によるコストアップを抑え、最大サイクル数が増加した場合でも、バスシステムの再設計を抑えるために最大サイクル数よりも小さいサイクル数、すなわち低い周波数で設計することのできるバスコントローラを提供することを目的としている。
【0017】
【課題を解決するための手段】
上記課題を解決するために、本発明の請求項1にかかるバスコントローラは、共有メモリを使用する複数のリクエスタの処理レベルを制御するバスコントローラであって、上記共有メモリをアクセスするアクセルサイクル数をカウントするアクセスサイクル数カウンタと、上記リクエスタ毎に異なる処理レベルの処理を行う処理手段と、上記複数のリクエスタの異なる処理レベルの処理と、上記アクセスサイクル数との対応を記述した対応表と、上記処理手段による処理レベルを指定する処理レベル判定手段と、を備え、上記アクセスサイクル数カウンタにより上記共有メモリをアクセスする現サイクル数をカウントし、上記処理レベル判定手段により上記現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、上記対応表とに従い、各々のリクエスタの処理レベルを指定するものである。
【0018】
また、本発明の請求項2にかかるバスコントローラは、 共有メモリを使用する複数のリクエスタからのアクセス要求に対応して調停するバスコントローラであって、上記共有メモリをアクセスするアクセスサイクル数をカウントするアクセスサイクル数カウンタと、上記複数のリクエスタの処理と、アクセスサイクル数との対応表と、上記複数のリクエスタからのアクセス要求に対応してアクセスの許可を調停するアービタと、を備え、上記アクセスサイクル数カウンタにより上記共有メモリをアクセスする現サイクル数をカウントし、上記アービタにより上記現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、上記対応表とに従い、限界サイクル数を越えることが予測される場合には非リアルタイム系のバスアクセス要求を許可しない制御をするものである。
【0019】
また、本発明の請求項3にかかるバスコントローラは、共有メモリを使用する複数のリクエスタの処理レベルを制御し、複数のリクエスタからのアクセス要求に対応して調停するバスコントローラであって、上記共有メモリをアクセスするアクセスサイクル数をカウントするアクセスサイクル数カウンタと、上記リクエスタ毎に異なる処理レベルの処理を行う処理手段と、上記複数のリクエスタの異なる処理レベルの処理と、アクセスサイクル数との対応を記述した対応表と、上記処理手段による処理レベルを判定する処理レベル判定手段と、上記複数のリクエスタからのアクセス要求に対応してアクセスの許可を調停するアービタと、を備え、上記アクセスサイクル数カウンタにより上記共有メモリをアクセスする現サイクル数をカウントし、上記処理レベル判定手段、および上記アービタにより上記現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、上記対応表とに従い、各々のリクエスタの処理レベルを指定するとともに、限界サイクル数を越えることが予測される場合には非リアルタイム系のバスアクセス要求を許可しない制御をするものである。
【0020】
また、本発明の請求項4にかかるバスコントローラは、請求項1記載のバスコントローラにおいて、上記処理レベル判定手段は、2個後の、上記リクエスタに対する処理から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときのアクセスサイクル数の総和を計算し、限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、上記残サイクル数から上記総和を減算したサイクル数までの範囲で次のリクエスタの処理のレベルを選択するものである。
【0021】
また、本発明の請求項5にかかるバスコントローラは、請求項2記載のバスコントローラにおいて、上記アービタは、非リアルタイム系リクエスタの次の処理から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときのアクセスサイクル数の総和を計算し、限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、上記残サイクル数から上記総和を減算したサイクル数までの範囲で処理を完了できない場合は次の非リアルタイム系のリクエスタを許可しないものである。
【0022】
また、本発明の請求項6にかかるバスコントローラは、請求項3記載のバスコントローラにおいて、上記処理レベル判定手段は、次の処理から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときのアクセスサイクル数の総和を計算し、限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、上記残サイクル数から上記総和を減算したサイクル数までの範囲で処理を完了できない場合は次の非リアルタイム系のリクエスタを許可しないものである。
【0023】
また、本発明の請求項7にかかるバスコントローラは、請求項6記載のバスコントローラにおいて、上記非リアルタイム系リクエスタは、複数の、異なるレベルの処理レベルを有するものである。
【0024】
これらの手段により、全リクエスタについての最大アクセスサイクル数と最大アクセス回数の総和よりも小さいサイクル数で、設計することが可能となる。
【0025】
【発明の実施の形態】
(実施の形態1)
図1は本発明の実施の形態1によるバスコントローラの構成図、図2は本実施の形態1におけるバスシステムの構成例を示す図、図3は本実施の形態1における第1の処理サイクルの説明図、図4は本実施の形態1における第2の処理サイクルの説明図である。
【0026】
図2において、21は共有メモリ、22はバスコントローラ、23は第1のリクエスタ、24は第2のリクエスタである。
AV処理システムの例として、画像符号化システムを考え、第1のリクエスタ23として、画像のフィルタリング処理をするもの、第2のリクエスタ24として、画像符号化処理をするもの、を考える。第1のリクエスタ23と、第2のリクエスタ24は、リアルタイム系の処理であり、画像1フレームの時間にそれぞれ2種類の処理レベルを持ち、それぞれの処理レベルに従った定まった量の共有メモリへのアクセス、及びデータ処理、を必要とする。2種類の処理レベルで、共有メモリのアクセスサイクル数が多い方をAレベル、少ない方をBレベルとする。第1のリクエスタ33は、画像のフィルタリング処理であり、Aレベルとして、現フレームと前フレームのデータを用いたフィルタリング処理を、Bレベルとして、現フレームのデータを用いたフィルタリング処理を、行うものとする。第2のリクエスタ24は、画像符号化処理であり、Aレベルとして、広い動きベクトル検出範囲用の参照画像を用いた画像符号化処理を、Bレベルとして、狭い動きベクトル検出範囲用の参照画像を用いた画像符号化処理を、行うものとする。両方のリクエスタとも、Aレベルの方が、画質は良くなるが、メモリサイクル数は多くなるものとする。
【0027】
バスコントローラ22の構成例を、図1に示す。図1において、11はアービタ、12はサイクルカウンタ、13はリクエスタ処理レベル−メモリサイクル対応表、14はプロトコル変換手段である。各リクエスタからの要求信号に従い、アービタ11が、優先順位に従ってリクエスタのうちの一個に許可信号と、処理レベル制御信号とを与える。第1のリクエスタ、第2のリクエスタの順の繰り返しでアクセス要求が入力され、これらに対して順に許可を与える。
【0028】
サイクルカウンタ12は、メモリプロトコル変換手段14からの情報に従い、共有メモリのアクセスサイクル数をカウントし、アクセス毎に現時点のサイクル数を出力する。
【0029】
アービタ11は、現時点のサイクル数と、予め定められた限界サイクル数から残りサイクル数を計算し、リクエスタ処理レベル−サイクル数対応表13の情報を用いて、共有メモリ21へのアクセスを次にどのリクエスタに許可するかを決定し、調停信号であるアービタ制御信号ACを、出力するとともに、該アクセスを許可したリクエスタの処理レベルを決定して、処理レベル制御信号PLとして出力する。
【0030】
メモリプロトコル変換手段14は、リクエスタのアクセスに用いられるアドレス、データ、READかWRITEを示すリクエスタアクセス信号RAを、共有メモリアクセス信号CMAにプロトコル変換するとともに、プロトコル変換やアクセス速度の変換のためのバッファ機能を持つものである。共有メモリアクセス信号CMAとしては、SDRAMアクセスのためのRowアドレス、Columnアドレス、コマンド発行などがある。
【0031】
第1リクエスタ23、第2リクエスタ24は、各リクエスタ内の処理に従い、バスコントローラ22に共有メモリ21へのアクセス要求を出し、バスコントローラ22の許可と、処理レベル制御信号とに従って、バスコントローラ22のプロトコル変換を通して、共有メモリ21にアクセスを行なう。
【0032】
図3のサイクル数の例で動作を詳しく説明する。図3(a)に各リクエスタのサイクル数の例を示し、簡単のため、第1のリクエスタ(REQ1)、第2のリクエスタ(REQ2)は、1フレーム時間内に3回ずつのアクセスを必要とし、各リクエスタは、定まったワード数のデータのアクセスを必要としている。サイクル数は、共有メモリ側のクロック数とする。各リクエスタのサイクル数でアクセスするアドレスによって共有メモリ側のクロック数が変化することがある。SDRAMの場合、同じワード数のデータをアクセスする場合でも、ローアドレスが変更、連続アドレスかどうかに従い、最も少ないサイクル数でアクセスするためには、SDRAMへ必要なアドレス情報や、コマンド、シーケンスに変更が必要となる。第1のリクエスタ(REQ1)のAレベルの処理で最大のサイクル数をN1A(max)、最も少ないサイクル数をN1A(min)とし、平均的なサイクル数をN1A(ave.)として示し、Bレベルの処理で最大のサイクル数をN1B(max)、最も少ないサイクル数をN1B(min)とし、平均的なサイクル数をN1B(ave.)として示し、N1A(max)−N1A(ave.)、N1B(max)−N1B(ave.)を黒色で示し、N1A(ave.)−N1A(min)、N1B(ave.)−N1B(min)を白色で示している。第2のリクエスタ(REQ2)についても同様である。
【0033】
図3(b)に、1フレーム内の時間での全サイクル数と、そのサイクル数設計について示している。1フレーム時間内の共有メモリアクセスのサイクル数は、N1A(max)×3+N2A(max)×3の場合が最大となる。設計上限界サイクルを図のように設定すると、システムが破綻しないようにリクエスタに対して各処理レベルを判定することにより、最終アクセスが終わった時点で限界サイクルを越えないように制御することになる。
【0034】
図3(b)の処理レベル制御の例1において、限界サイクル数L1は、最大サイクル数N1A(max)×3+N2A(max)×3よりも、N2A(max)−N2B(max)サイクル分少ない、
N1A(max)×3+N2A(max)×3−(N2A(max)−N2B(max))=N1A(max)×3+N2A(max)×2+N2B(max)サイクル、
とする。これは、最後のアクセス開始前の矢印Xで示したタイミングで、処理レベルを判定する場合である。残サイクル数が、Aレベルの処理の最大サイクル数N1A(max)以上であれば、Aレベルの処理を選択し、残サイクル数がAレベルの処理の最大サイクル数N1A(max)未満であれば、Bレベルの処理を選択する。これにより、最後のアクセス開始前に、消費サイクル数が最大N1A(max)×3+N2A(max)×2サイクルになった場合、最後の処理ではBレベルの処理を選ぶこととなり、このBレベルの処理が最大処理サイクル数となった場合であっても、合計サイクル数は、N1A(max)×3+N2A(max)×2+N2B(max)サイクル、となり、限界サイクル数L1を越えることはなく、破綻を防ぐことができる。
【0035】
以下、本実施の形態1における、処理レベルの判定方法を一般化する。単位時間で必要な処理を記号で表現し、n番目(n=1,2,…,N)の処理のq(n)レベルの処理を、pr(n,q(n))、そのサイクル数を、C(pr(n,q(n)))とする。ここで、サイクル数C(pr(n,q(n)))の最大サイクル数を、C(pr(n,q(n)min))maxとする。また、n番目の処理の直前の残りサイクル数を、R(n)とする。
【0036】
処理レベルの判定時、n0番目の処理pr(n0,q(n))の直前の、残りサイクル数R(n0)が、残りの必要な処理をすべて最低レベル(最大のサイクル数が最も小さい処理レベルq(n)min)で行うときのアクセスサイクル数の合計,Σn=n0 NC(pr(n,qmin))max 、以上であれば、この最低レベルqminを選択することにより破綻は生じない。また、n0番目の次アクセス処理が、qレベルの最大サイクル数C(pr(n0,q))max 、を消費しても、その結果の残りサイクル数、R(n0+1)=R(n0)−C(pr(n0,q))max 、が、次アクセス後の残りの必要な処理をすべて最低レベル(最大のアクセスサイクルが最小の処理レベル)で行うときのアクセスサイクル数の合計, Σn=n0+1 NC(pr(n,qmin))max 、以上であれば、この最低レベルを選択することにより破綻は生じない。処理レベルqは、この条件を満たすレベルを選択できる。
【0037】
すなわち、
R(n0)−C(pr(n0,q(n0)))max
≧ Σn=n0+1 NC(pr(n,q(n)min))max
となる処理レベルqを、選ぶことができる。
【0038】
尚、初期状態で、R(1)=L(限界サイクル数)、かつ、
R(1)−C(pr(1,q(1)))max
≧ Σn=2 NC(pr(n,q(n)min))max
となって、破綻しない処理レベルが存在するためには、
R(1)=L
≧C(pr(1,q(1)))max+Σn=2 NC(pr(n,q(n)min))max
≧C(pr(1,q(1)min))max+Σn=2 NC(pr(n,q(n)min))max
=Σn=1 NC(pr(n,q(n)min))max
すなわち、
L≧Σn=1 NC(pr(n,q(n)min))max
である、ことが必要である。
【0039】
図3(b)の限界サイクルL2の場合の例を示す。
R(n0)−C(pr(n0,q(n0)))max
≧ Σn=n0+1 NC(pr(n,q(n)min))max
で、n0=1、2、3では、q(n0)としてAレベルを選択できるが、n0=4では、
R(4)−C(pr(4,q(4)))max
≧ Σn=5 6C(pr(n,q(n)min))max
となるq(4)として、Bレベルしか選べない。これは4番目(n0=4)のアクセスでAレベルを指示した場合、結果がAレベルのmaxであると、5番目、6番目のアクセスでBレベルを指示しても、それぞれがmaxであると破綻するので、4番目のアクセスについてBレベルを指示することに相当する。5番目のアクセス、6番目のアクセス、についても同様である。
【0040】
このように、本実施の形態1によるバスコントローラにおいては、アクセスサイクル数カウンタ12と、リクエスタ毎に異なる処理レベルの処理を行う処理手段であるアービタ11と、各リクエスタの異なる処理レベルの処理とアクセスサイクル数との対応を記述した対応表13とを備え、上記アービタ11は、複数のリクエスタからのアクセス要求に対応してアクセスの許可を調停するとともに、その処理レベルを指定する処理レベル判定手段としても機能するものとしたので、アービタ11により、現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、対応表とに従い、共有メモリ21へのアクセスをどのリクエスタに許可するかを決定するとともに、該アクセスを許可したリクエスタの処理レベルを指定するようにし、該処理レベルを指定するにおいて限界サイクル数を越えることが予測される場合には、サイクル数の少ない処理レベルを選択するようにすることにより、全リクエスタについての、最大アクセスサイクル数×最大アクセス回数の総和よりも小さいサイクル数で設計することが可能となる。たとえば、リクエスタの2個後の処理、すなわち、現在アクセスが完了したリクエスタの次のリクエスタのさらに次のリクエスタのアクセス処理、から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときの、アクセスサイクル数の総和を計算し、限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、上記残サイクル数から上記総和を減算したサイクル数までの範囲で次のリクエスタの処理のレベルを選択する、ようにすることにより、適切な設計を行うことが可能となる。
【0041】
したがって、高い周波数によるバスシステム設計によるコストアップを抑えることができ、かつ、最大サイクル数が増加した場合でも、最大サイクル数よりも小さいサイクル数、すなわち低い周波数でバスコントローラの設計を行うことができ、再設計を抑えることができる効果がある。
【0042】
(実施の形態2)
次に、本発明の実施の形態2について、説明する。
従来例と同様、図6のバスシステムの例を用いて説明する。
第1のリクエスタ63と、第2のリクエスタ64は、リアルタイム系の処理であり、画像1フレームの時間にそれぞれ2種類の処理レベルを持ち、それぞれの処理レベルに従った定まった量の共有メモリへのアクセス、及びデータ処理を必要とする。2種類の処理レベルで共有メモリのアクセスサイクル数が多い方をAレベル、少ない方をBレベルとする。第1のリクエスタ63は、画像のフィルタリング処理であり、Aレベルとして現フレームと前フレームのデータを用いたフィルタリング処理、Bレベルとして現フレームのデータを用いたフィルタリング処理を、行うものとする。第2のリクエスタ64は、画像符号化処理であり、Aレベルとして広い動きベクトル検出範囲用の参照画像を用いた画像符号化処理を、Bレベルとして、狭い動きベクトル検出範囲用の参照画像を用いた画像符号化処理を、行うものとする。両方のリクエスタとも、Aレベルの方が画質は良くなるが、メモリサイクル数は多くなるものとする。第3のリクエスタ65は、非リアルタイム系の処理であり、画像の処理に比較して非定期的な共有メモリへのアクセス、及びデータ処理を行なう。
【0043】
バスコントローラ62の構成は、図1と同様である。
サイクルカウンタ12は、メモリプロトコル変換手段14からの情報に従い、共有メモリのアクセスサイクル数をカウントし、アクセス毎に現時点のサイクル数を出力する。
【0044】
アービタ11は、現時点のサイクル数と、予め定められた限界サイクル数とから残りサイクル数を計算し、リクエスタ処理レベル−サイクル数対応表13の情報を用いて、優先順位に従ってリクエスタの内の一個に許可信号と処理レベル制御信号を与える。第1のリクエスタ、第2のリクエスタの順の繰り返しでアクセス要求が入力され、これらを順に許可し、第3のリクエスタの非定期の要求に対して、残サイクル数と、リクエスタ処理レベル−サイクル数対応情報に従って、許可の挿入を行なう。
【0045】
メモリプロトコル変換手段14は、リクエスタのアクセスに用いられるアドレス、データ、READかWRITEを示すリクエスタアクセス信号を、共有メモリアクセス信号にプロトコル変換するとともに、プロトコル変換やアクセス速度の変換のためのバッファ機能を持つ。共有メモリアクセス信号としては、SDRAMアクセスのためのRowアドレス、Columnアドレス、コマンド発行などがある。
【0046】
第1リクエスタ63、第2リクエスタ64、第3リクエスタ65は、各リクエスタ内の処理に従い、バスコントローラ62に共有メモリ61へのアクセス要求を出し、バスコントローラ62の許可と、処理レベル制御信号に従って、バスコントローラ62のプロトコル変換を通して、共有メモリ61にアクセスを行なう。
【0047】
図4のサイクル数の例で動作を詳しく説明する。図4(a)に各リクエスタのサイクル数の例を示し、簡単のため、第1のリクエスタ(REQ1)、第2のリクエスタ(REQ2)は、1フレーム時間内に2回ずつのアクセスを必要とし、第3のリクエスタ(REQ3)は、1フレーム時間内に0回または1回のアクセスを必要とする。各リクエスタは、定まったワード数のデータのアクセスを必要としている。サイクル数は、共有メモリ側のクロック数とする。各リクエスタのサイクル数でアクセスするアドレスによって、共有メモリ側のクロック数が変化することがある。SDRAMの場合、同じワード数のデータをアクセスする場合でも、ローアドレスが変更、連続アドレスかどうかに従い、最も少ないサイクル数でアクセスするためには、SDRAMへ必要なアドレス情報や、コマンド、シーケンスに変更が必要となる。第1のリクエスタ(REQ1)のAレベルの処理で最大のサイクル数をN1A(max)、最も少ないサイクル数をN1A(min)とし、平均的なサイクル数をN1A(ave.)として示し、Bレベルの処理で最大のサイクル数をN1B(max)、最も少ないサイクル数をN1B(min)とし、平均的なサイクル数をN1B(ave.)として示し、N1A(max)−N1A(ave.)、N1B(max)−N1B(ave.)を黒色で示し、N1A(ave.)−N1A(min)、N1B(ave.)−N1B(min)を白色で示している。第2のリクエスタ(REQ2)についても同様である。第3のリクエスタ(REQ3)については、処理レベルは1種類で,最大のサイクル数をN3(max)、最も少ないサイクル数をN3(min)とし、平均的なサイクル数をN3(ave.)として示し、N3(max)−N3(ave.)、N3(max)−N3(ave.)を黒色で示し、N3(ave.)−N3(min)、N3(ave.)−N3(min)を白色で示している。
【0048】
図4(b)で1フレーム内の時間での全サイクル数と、そのサイクル数設計について示している。1フレーム時間内の共有メモリアクセスのサイクル数は、N1A(max)×2+N2A(max)×2+N3(max)の場合が最大となる。設計上限界サイクルを図のように設定すると、システムが破綻しないようにリクエスタに対して各処理レベルを判定することにより、最終アクセスが終わった時点で限界サイクルを越えないように制御することになる。
【0049】
図4(b)の限界サイクル数L1の動作例において、限界サイクル数L1が最大サイクル数N1A(max)+N2A(max)+N3(max)+N1B(max)+N1B(max)サイクルとする。2番目のアクセス後の矢印Xで示したタイミングまでに第3リクエスタからの要求があり、処理レベルを判定する場合の動作を考える。
【0050】
残サイクル数が、N3(max)+N1B(max)+N1B(max)サイクル以上、であれば、第3のリクエスタの要求に許可を与える。この例では、第3のリクエスタの3番目のアクセスが最大サイクル数の場合でも、1フレーム内の残りのアクセスである、1回の第1リクエスタのアクセス、1回の第2リクエスタのアクセス、をBレベルとすることにより、破綻せずにアクセスを完了することができる。
【0051】
図4(b)の限界サイクル数L2の動作例において、限界サイクル数L2が最大サイクル数N1A(max)+N2A(max)+N3(max)+N1B(max)+N1B(max)サイクルよりも少ないとする。2番目のアクセス後の矢印Xで示したタイミングまでに、第3リクエスタからの要求があり、処理レベルを判定する場合の動作を考える。
【0052】
残サイクル数が、N3(max)+N1B(max)+N1B(max)サイクル以上、であれば、第3のリクエスタの要求に許可を与える。この例では第3のリクエスタのアクセスを許可してしまうと、1フレーム内の残りのアクセスである、1回の第1リクエスタのアクセス、1回の第2リクエスタのアクセス、をBレベルとしても、最大のサイクル数であれば破綻してしまう。したがって、ここでは破綻をさけるために、第3リクエスタのアクセス要求に対しては許可を与えない。代わりに第2フレームの最初に第3のリクエスタによるアクセスを許可することなどにより、待たされるサイクル数を有効に抑えることもできる。
【0053】
処理レベル判定を一般化する。単位時間で必要な処理を実施の形態1と同様に記号で表現し、非リアルタイムの処理をSとする。この処理の最大サイクル数C(S)maxを消費しても、その結果の残りサイクル数R(n0)−C(S)maxが、次アクセス後の残りの必要な処理をすべて最低レベル(最大のアクセスサイクルが最小の処理レベル)で行うときのアクセスサイクル数の合計,Σn=n0 NC(pr(n,qm(n)in))max以上、であれば、最低レベルを選択することにより破綻は生じない。従って、処理Sを許可することができる。
【0054】
すなわち、
R(n0)−C(S)max
≧ Σn=n0 NC(pr(n,q(n)min))max
となる処理Sを許可することができる。
【0055】
リアルタイム処理と同様に、非リアルタイム処理についても処理レベルを設定できる場合には、qレベルの非リアルタイム処理をS(q)として、
R(n0)−C(S(q))max
≧ Σn=n0 NC(pr(n,q(n)min))max
となるqレベルの処理S(q)を、許可することができる。
【0056】
このように、本実施の形態2によるバスコントローラにおいては、アクセスサイクル数カウンタ12と、リクエスタ毎に異なる処理レベルの処理を行う処理手段であるアービタ11と、各リクエスタの異なる処理レベルの処理とアクセスサイクル数との対応を記述した対応表13とを備え、上記アービタ11は、複数のリクエスタからのアクセス要求に対応してアクセスの許可を調停するとともに、その処理レベルを指定する処理レベル判定手段としても機能するものとしたので、アービタ11により、現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、対応表とに従い、限界サイクル数を越えることが予測される場合には、非リアルタイム系のバスアクセス要求を許可しない制御をするようにすることにより、全リクエスタについての、最大アクセスサイクル数×最大アクセス回数の総和よりも小さいサイクル数で設計することが可能となる。たとえば、次のリクエスタである非リアルタイム系リクエスタの次の処理から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときのアクセスサイクル数の総和を計算し、限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、上記残サイクル数から上記総和を減算したサイクル数までの範囲で処理を完了できない場合は、次の非リアルタイム系のリクエスタを許可しない、ようにすることにより、非リアルタイム系の処理サイクル数を含めない総処理サイクル数で設計を行うことが可能となる。
【0057】
したがって、高い周波数によるバスシステム設計によるコストアップを抑えることができ、かつ、最大サイクル数が増加した場合でも、最大サイクル数よりも小さいサイクル数、すなわち低い周波数でバスコントローラの設計を行うことができ、再設計を抑えることができる効果がある。
【0058】
【発明の効果】
以上のように、本発明の請求項1の発明にかかるバスコントローラによれば、共有メモリに対しアクセスする複数のリクエスタの処理レベルを制御するバスコントローラであって、上記共有メモリをアクセスするアクセルサイクル数をカウントするアクセスサイクル数カウンタと、上記各リクエスタ毎に異なる処理レベルの処理を行う処理手段と、上記各リクエスタ毎に異なる処理レベルの処理と上記アクセスサイクル数との対応を記述した対応表と、アクセスが許可される各リクエスタの処理手段による処理レベルを指定する処理レベル判定手段と、を備え、上記処理レベル判定手段は、上記アクセスサイクル数カウンタによりカウントされる現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、上記各リクエスタ毎に異なる処理レベルの処理と上記アクセスサイクル数との対応表とに従い、アクセスが許可される各リクエスタの処理レベルを指定する、ものとしたので、全リクエスタのサイクル数の合計が、限界サイクル数を越えることが予測される場合には、サイクル数の少ない処理レベルを選択するようにすることにより、全リクエスタの最大アクセスサイクル数と、その最大アクセス回数分の総和よりも小さいサイクル数とを用いて設計することを可能とし、サイクル上の破綻を生じさせずに、設計コスト、設計の困難さを抑えることができる効果が得られる。
【0059】
本発明の請求項2の発明によれば、共有メモリに対しアクセスする複数のリクエスタからのアクセス要求に対応して調停するバスコントローラであって、上記共有メモリをアクセスするアクセスサイクル数をカウントするアクセスサイクル数カウンタと、上記複数のリクエスタとアクセスサイクル数との対応表と、上記複数のリクエスタからのアクセス要求に対してアクセスの許可を調停するアービタと、を備え、上記アービタは、上記アクセスサイクル数カウンタによりカウントされる現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、上記複数のリクエスタとアクセスサイクル数との対応表とに従い、全リクエスタのサイクル数の合計が、限界サイクル数を越えることが予測される場合には、非リアルタイム系のバスアクセス要求を許可しない制御をする、ものとしたので、全リクエスタの最大アクセスサイクル数と、その最大アクセス回数分の総和よりも小さいサイクル数とを用いて設計することを可能とし、サイクル上の破綻を生じさせずに、設計コスト、設計の困難さを抑えることができる効果が得られる。
【0060】
本発明の請求項3の発明によれば、共有メモリに対しアクセスする複数のリクエスタの処理レベルを制御し、複数のリクエスタからのアクセス要求に対して調停するバスコントローラであって、上記共有メモリをアクセスするアクセスサイクル数をカウントするアクセスサイクル数カウンタと、上記各リクエスタ毎に異なる処理レベルの処理を行う処理手段と、上記各リクエスタ毎に異なる処理レベルの処理とアクセスサイクル数との対応を記述した対応表と、アクセスが許可される各リクエスタの処理手段による処理レベルを指定する処理レベル判定手段と、上記複数のリクエスタからのアクセス要求に対応しアクセスの許可を調停するアービタと、を備え、上記処理レベル判定手段、および上記アービタは、上記アクセスサイクル数カウンタによりカウントされる現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、上記対応表とに従い、アクセスが許可されるリクエスタの処理手段による処理レベルを指定するとともに、全リクエスタのサイクル数の合計が、限界サイクル数を越えることが予測される場合には、非リアルタイム系のバスアクセス要求を許可しない制御をする、ものとしたので、全リクエスタの最大アクセスサイクル数と、その最大アクセス回数分の総和よりも小さいサイクル数を用いて設計することが可能となり、サイクル上の破綻を生じさせずに、設計コスト、設計の困難さを抑えることができる効果が得られる。
【0061】
本発明の請求項4の発明によれば、請求項1記載のバスコントローラにおいて、上記処理レベル判定手段は、リクエスタの2個後の処理から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときのアクセスサイクル数の総和を計算し、限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、上記残サイクル数から上記総和を減算したサイクル数までの範囲で次のリクエスタの処理のレベルを選択するものとしたので、全リクエスタの最大アクセスサイクル数と、その最大アクセス回数分の総和よりも小さいサイクル数とを用いて設計することを可能となり、サイクル上の破綻を生じさせずに、設計コスト、設計の困難さを抑えることができ、しかも、ほとんど全期間にわたって最適な処理を行うことができる効果がある。
【0062】
本発明の請求項5の発明によれば、請求項2記載のバスコントローラにおいて、上記アービタは、次のリクエスタである非リアルタイム系リクエスタの次の処理から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときのアクセスサイクル数の総和を計算し、限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、上記残サイクル数から上記総和を減算したサイクル数までの範囲で処理を完了できない場合は次の非リアルタイム系のリクエスタを許可しない、ようにすることとしたので、全リクエスタの最大アクセスサイクル数と、その最大アクセス回数分の総和よりも小さいサイクル数とを用いて設計することを可能とし、サイクル上の破綻を生じさせずに、設計コスト、設計の困難さを抑えることができ、しかも、ほとんど全期間にわたって最適な処理を行うことができる効果がある。
【0063】
本発明の請求項6の発明によれば、請求項3記載のバスコントローラにおいて、上記処理レベル判定手段、および上記アービタは、次のリクエスタである非リアルタイム系リクエスタの次の処理から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときのアクセスサイクル数の総和を計算し、限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、上記残サイクル数から上記総和を減算したサイクル数までの範囲で処理を完了できない場合は、次の非リアルタイム系のリクエスタを許可しない、ものとしたので、全リクエスタの最大アクセスサイクル数と、その最大アクセス回数分の総和よりも小さいサイクル数とを用いて設計することが可能となり、サイクル上の破綻を生じさせずに、設計コスト、設計の困難さを抑えることができ、しかも、ほとんど全期間にわたって最適な処理を行うことができる効果がある。
【0064】
本発明の請求項7の発明によれば、請求項6記載のバスコントローラにおいて、上記非リアルタイム系リクエスタは、複数の異なる処理レベルを有するもの、としたので、全リクエスタの最大アクセスサイクル数と、その最大アクセス回数分の総和よりも小さいサイクル数とを用いて設計することが可能となり、サイクル上の破綻を生じさせずに、設計コスト、設計の困難さを抑えることができ、しかも、より一層、ほとんど全期間にわたって最適な処理を行うことができる効果がある。
【図面の簡単な説明】
【図1】本発明の実施の形態1によるバスコントローラの構成図
【図2】上記実施の形態1における、バスシステムの構成例を示す図
【図3】上記実施の形態1における、第1の処理サイクルを説明する図
【図4】上記実施の形態1における、第2の処理サイクルを説明する図
【図5】従来のバスコントローラの構成図
【図6】従来の、バスシステムの構成例を示す図
【図7】従来の処理サイクルを示す図
【符号の説明】
11 アービタ
12 サイクルカウンタ
13 リクエスタ処理レベル−メモリサイクル数対応表
14 プロトコル変換手段
21 共有メモリ
22 バスコントローラ
23,24 リクエスタ
AC アービタ制御信号
PL 処理レベル制御信号
RA リクエスタアクセス信号
CMA 共有メモリアクセス信号
【発明の属する技術分野】
本発明は、バスコントローラに関し、特に、AVデータ、及び通信情報を処理するシステムにおける共有メモリのバスコントローラに関する。
【0002】
【従来の技術】
AVデータを、通信または記録再生するAV処理システムにおいて、通信手段の帯域幅や、記録媒体の容量を削減するために、画像や音声を符号化し、再生時には復号化する、ことが行われている。国際標準の動画像の符号化方式として、MPEG1/2/4などがある。これらの符号化方式は、動きベクトル検出、及び動き補償、DCT(Discrete Cosine Transform)、量子化、VLC(Variable Length Coding)などを組合せた方法である。また、高画質化や、画像の縮小、拡大時には、フィルタリング、さらに、文字データ処理や、グラフィックス処理、通信経路からのデータ転送、などの処理を行なう必要がある。このようなAV処理システムでは、各処理を行なうリクエスタが、共有メモリを用いて各々の処理を行なっている。
【0003】
従来のバスコントローラとしては、例えば、アービタの優先順位変更を行なう特許文献のようなものがある。この従来例を簡単化して示した図6により、従来技術の説明を行なう。図6において、61は共有メモリ、62はバスコントローラ、63は第1のリクエスタ、64は第2のリクエスタ、65は第3のリクエスタである。
【0004】
AV処理システムの例として、画像符号化システムを考え、第1のリクエスタ63として、画像のフィルタリング処理を、第2のリクエスタ64として、画像符号化処理を、第3のリクエスタ65として、情報通信インタフェースによるデータ転送処理を、考えるものとする。
【0005】
第1のリクエスタ63と、第2のリクエスタ64は、リアルタイム系の処理であり、画像1フレームの時間に定まった量の共有メモリへのアクセス、及び、データ処理を必要とする。これに対して、第3のリクエスタ65は、非リアルタイム系の処理であり、画像の処理に比較して、非定期的な共有メモリへのアクセス、及び、データ処理を行なう。
【0006】
バスコントローラ62の構成例を、図5に示す。図5において、51はアービタ、52はプロトコル変換手段である。各リクエスタからの要求信号に従い、アービタ51が優先順位に従って、上記リクエスタのうちの一個に許可信号(共有メモリアクセス信号(CMA))を与える。また、プロトコル変換手段52は、リクエスタのアクセスに用いられるアドレス、データ、及び、READかWRITEを示すリクエスタアクセス信号(RA)を、共有メモリアクセス信号(CMA)にプロトコル変換する機能を持つとともに、該プロトコル変換や、アクセス速度の変換のためのバッファ機能を持つ。共有メモリアクセス信号(CMA)としては、SDRAMアクセスのためのRowアドレス、Columnアドレス出力、及び、コマンド発行、などがある。
【0007】
第1リクエスタ63、第2リクエスタ64、第3のリクエスタ65は、各リクエスタ内の処理に従い、バスコントローラ62に共有メモリ61へのアクセス要求を出し、バスコントローラ62の許可に従って、バスコントローラ62のプロトコル変換を通して、共有メモリ61にアクセスを行なう、すなわち、共有メモリアクセス信号(CMA)により、アクセスする。
【0008】
図7に、サイクル数の例を示す。図7(a)に、各リクエスタのサイクル数の例を示し、簡単のため、第1のリクエスタ(REQ1)、第2のリクエスタ(REQ2)は、1フレーム時間内に、2回ずつのアクセスを必要とし、第3のリクエスタ(REQ3)は、1フレーム時間内に、0回または1回のアクセスを必要とし、各リクエスタは、定まったワード数のデータのアクセスを必要としている。サイクル数は、共有メモリ側のクロック数とする。各リクエスタのサイクル数でアクセスするアドレスによって、共有メモリ側のクロック数が変化することがある。
【0009】
SDRAMの場合、同じワード数のデータをアクセスする場合でも、ローアドレスが変更、連続アドレスかどうかに従い、最も少ないサイクル数でアクセスするためには、SDRAMへ必要なアドレス情報や、コマンド、シーケンスに変更することが必要となる。
【0010】
第1のリクエスタ(REQ1)で、最大のサイクル数を、N1(max)、最も少ないサイクル数を、N1(min)とし、平均的なサイクル数を、N1(ave.)として示し、N1(max)−N1(ave.)を黒色で示し、N1(ave.)−N1(min)を白色で示している。第2のリクエスタ(REQ2)についても、同様である。
【0011】
図7(b)で、1フレーム内の時間での全サイクル数と、そのサイクル数の設計について示している。1フレーム時間内の共有メモリアクセスのサイクル数は、
N1(max)×2+N2(max)×2+N3(max)×1
の場合が最大となる。この場合がありうるので、設計上システムが破綻しないように、このサイクル数を1フレーム時間に確保することが必要となる。ただし、これはすべてのアクセスが最大サイクル数になる場合であるので、頻度としては少ないものとなることが予想される。
【0012】
典型的な場合として、すでに示したように、1フレーム時間内に第3のリクエスタがなく、N1(ave.)×2+N2(ave.)×2の場合、N1(min)+N2(max)+N1(max)+N2(min)の場合などがあり、このような場合が、比較的頻度が多くなると考えられる。また、最小は1フレーム時間内に、N1(min)×2+N2(min)×2で済む。
【0013】
【特許文献1】
特開2001−184300号(第5頁0026〜第6頁0047、第1図)
【0014】
【発明が解決しようとする課題】
上記の従来例では、頻度は少なくても起こりうる最大のサイクル数で設計するため、1フレーム時間当たりのサイクル数が多く、共有メモリの動作周波数が高くなり、共有メモリや、回路のコストアップや、設計難易度が高くなる、ということがおこりうる。
【0015】
また、システム設計後にアプリケーションの改変、増加により、共有メモリアクセスのサイクル数が増加した場合には、動作周波数を上げた新しいバスシステムが必要となり、設計の難易度と、再設計による設計、製造のコストアップに繋がることとなる。
【0016】
本発明は上記従来の問題点を解決するためになされたもので、頻度が少ないような最大サイクル数に対応する高い周波数によるバスシステム設計によるコストアップを抑え、最大サイクル数が増加した場合でも、バスシステムの再設計を抑えるために最大サイクル数よりも小さいサイクル数、すなわち低い周波数で設計することのできるバスコントローラを提供することを目的としている。
【0017】
【課題を解決するための手段】
上記課題を解決するために、本発明の請求項1にかかるバスコントローラは、共有メモリを使用する複数のリクエスタの処理レベルを制御するバスコントローラであって、上記共有メモリをアクセスするアクセルサイクル数をカウントするアクセスサイクル数カウンタと、上記リクエスタ毎に異なる処理レベルの処理を行う処理手段と、上記複数のリクエスタの異なる処理レベルの処理と、上記アクセスサイクル数との対応を記述した対応表と、上記処理手段による処理レベルを指定する処理レベル判定手段と、を備え、上記アクセスサイクル数カウンタにより上記共有メモリをアクセスする現サイクル数をカウントし、上記処理レベル判定手段により上記現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、上記対応表とに従い、各々のリクエスタの処理レベルを指定するものである。
【0018】
また、本発明の請求項2にかかるバスコントローラは、 共有メモリを使用する複数のリクエスタからのアクセス要求に対応して調停するバスコントローラであって、上記共有メモリをアクセスするアクセスサイクル数をカウントするアクセスサイクル数カウンタと、上記複数のリクエスタの処理と、アクセスサイクル数との対応表と、上記複数のリクエスタからのアクセス要求に対応してアクセスの許可を調停するアービタと、を備え、上記アクセスサイクル数カウンタにより上記共有メモリをアクセスする現サイクル数をカウントし、上記アービタにより上記現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、上記対応表とに従い、限界サイクル数を越えることが予測される場合には非リアルタイム系のバスアクセス要求を許可しない制御をするものである。
【0019】
また、本発明の請求項3にかかるバスコントローラは、共有メモリを使用する複数のリクエスタの処理レベルを制御し、複数のリクエスタからのアクセス要求に対応して調停するバスコントローラであって、上記共有メモリをアクセスするアクセスサイクル数をカウントするアクセスサイクル数カウンタと、上記リクエスタ毎に異なる処理レベルの処理を行う処理手段と、上記複数のリクエスタの異なる処理レベルの処理と、アクセスサイクル数との対応を記述した対応表と、上記処理手段による処理レベルを判定する処理レベル判定手段と、上記複数のリクエスタからのアクセス要求に対応してアクセスの許可を調停するアービタと、を備え、上記アクセスサイクル数カウンタにより上記共有メモリをアクセスする現サイクル数をカウントし、上記処理レベル判定手段、および上記アービタにより上記現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、上記対応表とに従い、各々のリクエスタの処理レベルを指定するとともに、限界サイクル数を越えることが予測される場合には非リアルタイム系のバスアクセス要求を許可しない制御をするものである。
【0020】
また、本発明の請求項4にかかるバスコントローラは、請求項1記載のバスコントローラにおいて、上記処理レベル判定手段は、2個後の、上記リクエスタに対する処理から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときのアクセスサイクル数の総和を計算し、限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、上記残サイクル数から上記総和を減算したサイクル数までの範囲で次のリクエスタの処理のレベルを選択するものである。
【0021】
また、本発明の請求項5にかかるバスコントローラは、請求項2記載のバスコントローラにおいて、上記アービタは、非リアルタイム系リクエスタの次の処理から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときのアクセスサイクル数の総和を計算し、限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、上記残サイクル数から上記総和を減算したサイクル数までの範囲で処理を完了できない場合は次の非リアルタイム系のリクエスタを許可しないものである。
【0022】
また、本発明の請求項6にかかるバスコントローラは、請求項3記載のバスコントローラにおいて、上記処理レベル判定手段は、次の処理から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときのアクセスサイクル数の総和を計算し、限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、上記残サイクル数から上記総和を減算したサイクル数までの範囲で処理を完了できない場合は次の非リアルタイム系のリクエスタを許可しないものである。
【0023】
また、本発明の請求項7にかかるバスコントローラは、請求項6記載のバスコントローラにおいて、上記非リアルタイム系リクエスタは、複数の、異なるレベルの処理レベルを有するものである。
【0024】
これらの手段により、全リクエスタについての最大アクセスサイクル数と最大アクセス回数の総和よりも小さいサイクル数で、設計することが可能となる。
【0025】
【発明の実施の形態】
(実施の形態1)
図1は本発明の実施の形態1によるバスコントローラの構成図、図2は本実施の形態1におけるバスシステムの構成例を示す図、図3は本実施の形態1における第1の処理サイクルの説明図、図4は本実施の形態1における第2の処理サイクルの説明図である。
【0026】
図2において、21は共有メモリ、22はバスコントローラ、23は第1のリクエスタ、24は第2のリクエスタである。
AV処理システムの例として、画像符号化システムを考え、第1のリクエスタ23として、画像のフィルタリング処理をするもの、第2のリクエスタ24として、画像符号化処理をするもの、を考える。第1のリクエスタ23と、第2のリクエスタ24は、リアルタイム系の処理であり、画像1フレームの時間にそれぞれ2種類の処理レベルを持ち、それぞれの処理レベルに従った定まった量の共有メモリへのアクセス、及びデータ処理、を必要とする。2種類の処理レベルで、共有メモリのアクセスサイクル数が多い方をAレベル、少ない方をBレベルとする。第1のリクエスタ33は、画像のフィルタリング処理であり、Aレベルとして、現フレームと前フレームのデータを用いたフィルタリング処理を、Bレベルとして、現フレームのデータを用いたフィルタリング処理を、行うものとする。第2のリクエスタ24は、画像符号化処理であり、Aレベルとして、広い動きベクトル検出範囲用の参照画像を用いた画像符号化処理を、Bレベルとして、狭い動きベクトル検出範囲用の参照画像を用いた画像符号化処理を、行うものとする。両方のリクエスタとも、Aレベルの方が、画質は良くなるが、メモリサイクル数は多くなるものとする。
【0027】
バスコントローラ22の構成例を、図1に示す。図1において、11はアービタ、12はサイクルカウンタ、13はリクエスタ処理レベル−メモリサイクル対応表、14はプロトコル変換手段である。各リクエスタからの要求信号に従い、アービタ11が、優先順位に従ってリクエスタのうちの一個に許可信号と、処理レベル制御信号とを与える。第1のリクエスタ、第2のリクエスタの順の繰り返しでアクセス要求が入力され、これらに対して順に許可を与える。
【0028】
サイクルカウンタ12は、メモリプロトコル変換手段14からの情報に従い、共有メモリのアクセスサイクル数をカウントし、アクセス毎に現時点のサイクル数を出力する。
【0029】
アービタ11は、現時点のサイクル数と、予め定められた限界サイクル数から残りサイクル数を計算し、リクエスタ処理レベル−サイクル数対応表13の情報を用いて、共有メモリ21へのアクセスを次にどのリクエスタに許可するかを決定し、調停信号であるアービタ制御信号ACを、出力するとともに、該アクセスを許可したリクエスタの処理レベルを決定して、処理レベル制御信号PLとして出力する。
【0030】
メモリプロトコル変換手段14は、リクエスタのアクセスに用いられるアドレス、データ、READかWRITEを示すリクエスタアクセス信号RAを、共有メモリアクセス信号CMAにプロトコル変換するとともに、プロトコル変換やアクセス速度の変換のためのバッファ機能を持つものである。共有メモリアクセス信号CMAとしては、SDRAMアクセスのためのRowアドレス、Columnアドレス、コマンド発行などがある。
【0031】
第1リクエスタ23、第2リクエスタ24は、各リクエスタ内の処理に従い、バスコントローラ22に共有メモリ21へのアクセス要求を出し、バスコントローラ22の許可と、処理レベル制御信号とに従って、バスコントローラ22のプロトコル変換を通して、共有メモリ21にアクセスを行なう。
【0032】
図3のサイクル数の例で動作を詳しく説明する。図3(a)に各リクエスタのサイクル数の例を示し、簡単のため、第1のリクエスタ(REQ1)、第2のリクエスタ(REQ2)は、1フレーム時間内に3回ずつのアクセスを必要とし、各リクエスタは、定まったワード数のデータのアクセスを必要としている。サイクル数は、共有メモリ側のクロック数とする。各リクエスタのサイクル数でアクセスするアドレスによって共有メモリ側のクロック数が変化することがある。SDRAMの場合、同じワード数のデータをアクセスする場合でも、ローアドレスが変更、連続アドレスかどうかに従い、最も少ないサイクル数でアクセスするためには、SDRAMへ必要なアドレス情報や、コマンド、シーケンスに変更が必要となる。第1のリクエスタ(REQ1)のAレベルの処理で最大のサイクル数をN1A(max)、最も少ないサイクル数をN1A(min)とし、平均的なサイクル数をN1A(ave.)として示し、Bレベルの処理で最大のサイクル数をN1B(max)、最も少ないサイクル数をN1B(min)とし、平均的なサイクル数をN1B(ave.)として示し、N1A(max)−N1A(ave.)、N1B(max)−N1B(ave.)を黒色で示し、N1A(ave.)−N1A(min)、N1B(ave.)−N1B(min)を白色で示している。第2のリクエスタ(REQ2)についても同様である。
【0033】
図3(b)に、1フレーム内の時間での全サイクル数と、そのサイクル数設計について示している。1フレーム時間内の共有メモリアクセスのサイクル数は、N1A(max)×3+N2A(max)×3の場合が最大となる。設計上限界サイクルを図のように設定すると、システムが破綻しないようにリクエスタに対して各処理レベルを判定することにより、最終アクセスが終わった時点で限界サイクルを越えないように制御することになる。
【0034】
図3(b)の処理レベル制御の例1において、限界サイクル数L1は、最大サイクル数N1A(max)×3+N2A(max)×3よりも、N2A(max)−N2B(max)サイクル分少ない、
N1A(max)×3+N2A(max)×3−(N2A(max)−N2B(max))=N1A(max)×3+N2A(max)×2+N2B(max)サイクル、
とする。これは、最後のアクセス開始前の矢印Xで示したタイミングで、処理レベルを判定する場合である。残サイクル数が、Aレベルの処理の最大サイクル数N1A(max)以上であれば、Aレベルの処理を選択し、残サイクル数がAレベルの処理の最大サイクル数N1A(max)未満であれば、Bレベルの処理を選択する。これにより、最後のアクセス開始前に、消費サイクル数が最大N1A(max)×3+N2A(max)×2サイクルになった場合、最後の処理ではBレベルの処理を選ぶこととなり、このBレベルの処理が最大処理サイクル数となった場合であっても、合計サイクル数は、N1A(max)×3+N2A(max)×2+N2B(max)サイクル、となり、限界サイクル数L1を越えることはなく、破綻を防ぐことができる。
【0035】
以下、本実施の形態1における、処理レベルの判定方法を一般化する。単位時間で必要な処理を記号で表現し、n番目(n=1,2,…,N)の処理のq(n)レベルの処理を、pr(n,q(n))、そのサイクル数を、C(pr(n,q(n)))とする。ここで、サイクル数C(pr(n,q(n)))の最大サイクル数を、C(pr(n,q(n)min))maxとする。また、n番目の処理の直前の残りサイクル数を、R(n)とする。
【0036】
処理レベルの判定時、n0番目の処理pr(n0,q(n))の直前の、残りサイクル数R(n0)が、残りの必要な処理をすべて最低レベル(最大のサイクル数が最も小さい処理レベルq(n)min)で行うときのアクセスサイクル数の合計,Σn=n0 NC(pr(n,qmin))max 、以上であれば、この最低レベルqminを選択することにより破綻は生じない。また、n0番目の次アクセス処理が、qレベルの最大サイクル数C(pr(n0,q))max 、を消費しても、その結果の残りサイクル数、R(n0+1)=R(n0)−C(pr(n0,q))max 、が、次アクセス後の残りの必要な処理をすべて最低レベル(最大のアクセスサイクルが最小の処理レベル)で行うときのアクセスサイクル数の合計, Σn=n0+1 NC(pr(n,qmin))max 、以上であれば、この最低レベルを選択することにより破綻は生じない。処理レベルqは、この条件を満たすレベルを選択できる。
【0037】
すなわち、
R(n0)−C(pr(n0,q(n0)))max
≧ Σn=n0+1 NC(pr(n,q(n)min))max
となる処理レベルqを、選ぶことができる。
【0038】
尚、初期状態で、R(1)=L(限界サイクル数)、かつ、
R(1)−C(pr(1,q(1)))max
≧ Σn=2 NC(pr(n,q(n)min))max
となって、破綻しない処理レベルが存在するためには、
R(1)=L
≧C(pr(1,q(1)))max+Σn=2 NC(pr(n,q(n)min))max
≧C(pr(1,q(1)min))max+Σn=2 NC(pr(n,q(n)min))max
=Σn=1 NC(pr(n,q(n)min))max
すなわち、
L≧Σn=1 NC(pr(n,q(n)min))max
である、ことが必要である。
【0039】
図3(b)の限界サイクルL2の場合の例を示す。
R(n0)−C(pr(n0,q(n0)))max
≧ Σn=n0+1 NC(pr(n,q(n)min))max
で、n0=1、2、3では、q(n0)としてAレベルを選択できるが、n0=4では、
R(4)−C(pr(4,q(4)))max
≧ Σn=5 6C(pr(n,q(n)min))max
となるq(4)として、Bレベルしか選べない。これは4番目(n0=4)のアクセスでAレベルを指示した場合、結果がAレベルのmaxであると、5番目、6番目のアクセスでBレベルを指示しても、それぞれがmaxであると破綻するので、4番目のアクセスについてBレベルを指示することに相当する。5番目のアクセス、6番目のアクセス、についても同様である。
【0040】
このように、本実施の形態1によるバスコントローラにおいては、アクセスサイクル数カウンタ12と、リクエスタ毎に異なる処理レベルの処理を行う処理手段であるアービタ11と、各リクエスタの異なる処理レベルの処理とアクセスサイクル数との対応を記述した対応表13とを備え、上記アービタ11は、複数のリクエスタからのアクセス要求に対応してアクセスの許可を調停するとともに、その処理レベルを指定する処理レベル判定手段としても機能するものとしたので、アービタ11により、現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、対応表とに従い、共有メモリ21へのアクセスをどのリクエスタに許可するかを決定するとともに、該アクセスを許可したリクエスタの処理レベルを指定するようにし、該処理レベルを指定するにおいて限界サイクル数を越えることが予測される場合には、サイクル数の少ない処理レベルを選択するようにすることにより、全リクエスタについての、最大アクセスサイクル数×最大アクセス回数の総和よりも小さいサイクル数で設計することが可能となる。たとえば、リクエスタの2個後の処理、すなわち、現在アクセスが完了したリクエスタの次のリクエスタのさらに次のリクエスタのアクセス処理、から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときの、アクセスサイクル数の総和を計算し、限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、上記残サイクル数から上記総和を減算したサイクル数までの範囲で次のリクエスタの処理のレベルを選択する、ようにすることにより、適切な設計を行うことが可能となる。
【0041】
したがって、高い周波数によるバスシステム設計によるコストアップを抑えることができ、かつ、最大サイクル数が増加した場合でも、最大サイクル数よりも小さいサイクル数、すなわち低い周波数でバスコントローラの設計を行うことができ、再設計を抑えることができる効果がある。
【0042】
(実施の形態2)
次に、本発明の実施の形態2について、説明する。
従来例と同様、図6のバスシステムの例を用いて説明する。
第1のリクエスタ63と、第2のリクエスタ64は、リアルタイム系の処理であり、画像1フレームの時間にそれぞれ2種類の処理レベルを持ち、それぞれの処理レベルに従った定まった量の共有メモリへのアクセス、及びデータ処理を必要とする。2種類の処理レベルで共有メモリのアクセスサイクル数が多い方をAレベル、少ない方をBレベルとする。第1のリクエスタ63は、画像のフィルタリング処理であり、Aレベルとして現フレームと前フレームのデータを用いたフィルタリング処理、Bレベルとして現フレームのデータを用いたフィルタリング処理を、行うものとする。第2のリクエスタ64は、画像符号化処理であり、Aレベルとして広い動きベクトル検出範囲用の参照画像を用いた画像符号化処理を、Bレベルとして、狭い動きベクトル検出範囲用の参照画像を用いた画像符号化処理を、行うものとする。両方のリクエスタとも、Aレベルの方が画質は良くなるが、メモリサイクル数は多くなるものとする。第3のリクエスタ65は、非リアルタイム系の処理であり、画像の処理に比較して非定期的な共有メモリへのアクセス、及びデータ処理を行なう。
【0043】
バスコントローラ62の構成は、図1と同様である。
サイクルカウンタ12は、メモリプロトコル変換手段14からの情報に従い、共有メモリのアクセスサイクル数をカウントし、アクセス毎に現時点のサイクル数を出力する。
【0044】
アービタ11は、現時点のサイクル数と、予め定められた限界サイクル数とから残りサイクル数を計算し、リクエスタ処理レベル−サイクル数対応表13の情報を用いて、優先順位に従ってリクエスタの内の一個に許可信号と処理レベル制御信号を与える。第1のリクエスタ、第2のリクエスタの順の繰り返しでアクセス要求が入力され、これらを順に許可し、第3のリクエスタの非定期の要求に対して、残サイクル数と、リクエスタ処理レベル−サイクル数対応情報に従って、許可の挿入を行なう。
【0045】
メモリプロトコル変換手段14は、リクエスタのアクセスに用いられるアドレス、データ、READかWRITEを示すリクエスタアクセス信号を、共有メモリアクセス信号にプロトコル変換するとともに、プロトコル変換やアクセス速度の変換のためのバッファ機能を持つ。共有メモリアクセス信号としては、SDRAMアクセスのためのRowアドレス、Columnアドレス、コマンド発行などがある。
【0046】
第1リクエスタ63、第2リクエスタ64、第3リクエスタ65は、各リクエスタ内の処理に従い、バスコントローラ62に共有メモリ61へのアクセス要求を出し、バスコントローラ62の許可と、処理レベル制御信号に従って、バスコントローラ62のプロトコル変換を通して、共有メモリ61にアクセスを行なう。
【0047】
図4のサイクル数の例で動作を詳しく説明する。図4(a)に各リクエスタのサイクル数の例を示し、簡単のため、第1のリクエスタ(REQ1)、第2のリクエスタ(REQ2)は、1フレーム時間内に2回ずつのアクセスを必要とし、第3のリクエスタ(REQ3)は、1フレーム時間内に0回または1回のアクセスを必要とする。各リクエスタは、定まったワード数のデータのアクセスを必要としている。サイクル数は、共有メモリ側のクロック数とする。各リクエスタのサイクル数でアクセスするアドレスによって、共有メモリ側のクロック数が変化することがある。SDRAMの場合、同じワード数のデータをアクセスする場合でも、ローアドレスが変更、連続アドレスかどうかに従い、最も少ないサイクル数でアクセスするためには、SDRAMへ必要なアドレス情報や、コマンド、シーケンスに変更が必要となる。第1のリクエスタ(REQ1)のAレベルの処理で最大のサイクル数をN1A(max)、最も少ないサイクル数をN1A(min)とし、平均的なサイクル数をN1A(ave.)として示し、Bレベルの処理で最大のサイクル数をN1B(max)、最も少ないサイクル数をN1B(min)とし、平均的なサイクル数をN1B(ave.)として示し、N1A(max)−N1A(ave.)、N1B(max)−N1B(ave.)を黒色で示し、N1A(ave.)−N1A(min)、N1B(ave.)−N1B(min)を白色で示している。第2のリクエスタ(REQ2)についても同様である。第3のリクエスタ(REQ3)については、処理レベルは1種類で,最大のサイクル数をN3(max)、最も少ないサイクル数をN3(min)とし、平均的なサイクル数をN3(ave.)として示し、N3(max)−N3(ave.)、N3(max)−N3(ave.)を黒色で示し、N3(ave.)−N3(min)、N3(ave.)−N3(min)を白色で示している。
【0048】
図4(b)で1フレーム内の時間での全サイクル数と、そのサイクル数設計について示している。1フレーム時間内の共有メモリアクセスのサイクル数は、N1A(max)×2+N2A(max)×2+N3(max)の場合が最大となる。設計上限界サイクルを図のように設定すると、システムが破綻しないようにリクエスタに対して各処理レベルを判定することにより、最終アクセスが終わった時点で限界サイクルを越えないように制御することになる。
【0049】
図4(b)の限界サイクル数L1の動作例において、限界サイクル数L1が最大サイクル数N1A(max)+N2A(max)+N3(max)+N1B(max)+N1B(max)サイクルとする。2番目のアクセス後の矢印Xで示したタイミングまでに第3リクエスタからの要求があり、処理レベルを判定する場合の動作を考える。
【0050】
残サイクル数が、N3(max)+N1B(max)+N1B(max)サイクル以上、であれば、第3のリクエスタの要求に許可を与える。この例では、第3のリクエスタの3番目のアクセスが最大サイクル数の場合でも、1フレーム内の残りのアクセスである、1回の第1リクエスタのアクセス、1回の第2リクエスタのアクセス、をBレベルとすることにより、破綻せずにアクセスを完了することができる。
【0051】
図4(b)の限界サイクル数L2の動作例において、限界サイクル数L2が最大サイクル数N1A(max)+N2A(max)+N3(max)+N1B(max)+N1B(max)サイクルよりも少ないとする。2番目のアクセス後の矢印Xで示したタイミングまでに、第3リクエスタからの要求があり、処理レベルを判定する場合の動作を考える。
【0052】
残サイクル数が、N3(max)+N1B(max)+N1B(max)サイクル以上、であれば、第3のリクエスタの要求に許可を与える。この例では第3のリクエスタのアクセスを許可してしまうと、1フレーム内の残りのアクセスである、1回の第1リクエスタのアクセス、1回の第2リクエスタのアクセス、をBレベルとしても、最大のサイクル数であれば破綻してしまう。したがって、ここでは破綻をさけるために、第3リクエスタのアクセス要求に対しては許可を与えない。代わりに第2フレームの最初に第3のリクエスタによるアクセスを許可することなどにより、待たされるサイクル数を有効に抑えることもできる。
【0053】
処理レベル判定を一般化する。単位時間で必要な処理を実施の形態1と同様に記号で表現し、非リアルタイムの処理をSとする。この処理の最大サイクル数C(S)maxを消費しても、その結果の残りサイクル数R(n0)−C(S)maxが、次アクセス後の残りの必要な処理をすべて最低レベル(最大のアクセスサイクルが最小の処理レベル)で行うときのアクセスサイクル数の合計,Σn=n0 NC(pr(n,qm(n)in))max以上、であれば、最低レベルを選択することにより破綻は生じない。従って、処理Sを許可することができる。
【0054】
すなわち、
R(n0)−C(S)max
≧ Σn=n0 NC(pr(n,q(n)min))max
となる処理Sを許可することができる。
【0055】
リアルタイム処理と同様に、非リアルタイム処理についても処理レベルを設定できる場合には、qレベルの非リアルタイム処理をS(q)として、
R(n0)−C(S(q))max
≧ Σn=n0 NC(pr(n,q(n)min))max
となるqレベルの処理S(q)を、許可することができる。
【0056】
このように、本実施の形態2によるバスコントローラにおいては、アクセスサイクル数カウンタ12と、リクエスタ毎に異なる処理レベルの処理を行う処理手段であるアービタ11と、各リクエスタの異なる処理レベルの処理とアクセスサイクル数との対応を記述した対応表13とを備え、上記アービタ11は、複数のリクエスタからのアクセス要求に対応してアクセスの許可を調停するとともに、その処理レベルを指定する処理レベル判定手段としても機能するものとしたので、アービタ11により、現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、対応表とに従い、限界サイクル数を越えることが予測される場合には、非リアルタイム系のバスアクセス要求を許可しない制御をするようにすることにより、全リクエスタについての、最大アクセスサイクル数×最大アクセス回数の総和よりも小さいサイクル数で設計することが可能となる。たとえば、次のリクエスタである非リアルタイム系リクエスタの次の処理から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときのアクセスサイクル数の総和を計算し、限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、上記残サイクル数から上記総和を減算したサイクル数までの範囲で処理を完了できない場合は、次の非リアルタイム系のリクエスタを許可しない、ようにすることにより、非リアルタイム系の処理サイクル数を含めない総処理サイクル数で設計を行うことが可能となる。
【0057】
したがって、高い周波数によるバスシステム設計によるコストアップを抑えることができ、かつ、最大サイクル数が増加した場合でも、最大サイクル数よりも小さいサイクル数、すなわち低い周波数でバスコントローラの設計を行うことができ、再設計を抑えることができる効果がある。
【0058】
【発明の効果】
以上のように、本発明の請求項1の発明にかかるバスコントローラによれば、共有メモリに対しアクセスする複数のリクエスタの処理レベルを制御するバスコントローラであって、上記共有メモリをアクセスするアクセルサイクル数をカウントするアクセスサイクル数カウンタと、上記各リクエスタ毎に異なる処理レベルの処理を行う処理手段と、上記各リクエスタ毎に異なる処理レベルの処理と上記アクセスサイクル数との対応を記述した対応表と、アクセスが許可される各リクエスタの処理手段による処理レベルを指定する処理レベル判定手段と、を備え、上記処理レベル判定手段は、上記アクセスサイクル数カウンタによりカウントされる現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、上記各リクエスタ毎に異なる処理レベルの処理と上記アクセスサイクル数との対応表とに従い、アクセスが許可される各リクエスタの処理レベルを指定する、ものとしたので、全リクエスタのサイクル数の合計が、限界サイクル数を越えることが予測される場合には、サイクル数の少ない処理レベルを選択するようにすることにより、全リクエスタの最大アクセスサイクル数と、その最大アクセス回数分の総和よりも小さいサイクル数とを用いて設計することを可能とし、サイクル上の破綻を生じさせずに、設計コスト、設計の困難さを抑えることができる効果が得られる。
【0059】
本発明の請求項2の発明によれば、共有メモリに対しアクセスする複数のリクエスタからのアクセス要求に対応して調停するバスコントローラであって、上記共有メモリをアクセスするアクセスサイクル数をカウントするアクセスサイクル数カウンタと、上記複数のリクエスタとアクセスサイクル数との対応表と、上記複数のリクエスタからのアクセス要求に対してアクセスの許可を調停するアービタと、を備え、上記アービタは、上記アクセスサイクル数カウンタによりカウントされる現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、上記複数のリクエスタとアクセスサイクル数との対応表とに従い、全リクエスタのサイクル数の合計が、限界サイクル数を越えることが予測される場合には、非リアルタイム系のバスアクセス要求を許可しない制御をする、ものとしたので、全リクエスタの最大アクセスサイクル数と、その最大アクセス回数分の総和よりも小さいサイクル数とを用いて設計することを可能とし、サイクル上の破綻を生じさせずに、設計コスト、設計の困難さを抑えることができる効果が得られる。
【0060】
本発明の請求項3の発明によれば、共有メモリに対しアクセスする複数のリクエスタの処理レベルを制御し、複数のリクエスタからのアクセス要求に対して調停するバスコントローラであって、上記共有メモリをアクセスするアクセスサイクル数をカウントするアクセスサイクル数カウンタと、上記各リクエスタ毎に異なる処理レベルの処理を行う処理手段と、上記各リクエスタ毎に異なる処理レベルの処理とアクセスサイクル数との対応を記述した対応表と、アクセスが許可される各リクエスタの処理手段による処理レベルを指定する処理レベル判定手段と、上記複数のリクエスタからのアクセス要求に対応しアクセスの許可を調停するアービタと、を備え、上記処理レベル判定手段、および上記アービタは、上記アクセスサイクル数カウンタによりカウントされる現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、上記対応表とに従い、アクセスが許可されるリクエスタの処理手段による処理レベルを指定するとともに、全リクエスタのサイクル数の合計が、限界サイクル数を越えることが予測される場合には、非リアルタイム系のバスアクセス要求を許可しない制御をする、ものとしたので、全リクエスタの最大アクセスサイクル数と、その最大アクセス回数分の総和よりも小さいサイクル数を用いて設計することが可能となり、サイクル上の破綻を生じさせずに、設計コスト、設計の困難さを抑えることができる効果が得られる。
【0061】
本発明の請求項4の発明によれば、請求項1記載のバスコントローラにおいて、上記処理レベル判定手段は、リクエスタの2個後の処理から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときのアクセスサイクル数の総和を計算し、限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、上記残サイクル数から上記総和を減算したサイクル数までの範囲で次のリクエスタの処理のレベルを選択するものとしたので、全リクエスタの最大アクセスサイクル数と、その最大アクセス回数分の総和よりも小さいサイクル数とを用いて設計することを可能となり、サイクル上の破綻を生じさせずに、設計コスト、設計の困難さを抑えることができ、しかも、ほとんど全期間にわたって最適な処理を行うことができる効果がある。
【0062】
本発明の請求項5の発明によれば、請求項2記載のバスコントローラにおいて、上記アービタは、次のリクエスタである非リアルタイム系リクエスタの次の処理から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときのアクセスサイクル数の総和を計算し、限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、上記残サイクル数から上記総和を減算したサイクル数までの範囲で処理を完了できない場合は次の非リアルタイム系のリクエスタを許可しない、ようにすることとしたので、全リクエスタの最大アクセスサイクル数と、その最大アクセス回数分の総和よりも小さいサイクル数とを用いて設計することを可能とし、サイクル上の破綻を生じさせずに、設計コスト、設計の困難さを抑えることができ、しかも、ほとんど全期間にわたって最適な処理を行うことができる効果がある。
【0063】
本発明の請求項6の発明によれば、請求項3記載のバスコントローラにおいて、上記処理レベル判定手段、および上記アービタは、次のリクエスタである非リアルタイム系リクエスタの次の処理から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときのアクセスサイクル数の総和を計算し、限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、上記残サイクル数から上記総和を減算したサイクル数までの範囲で処理を完了できない場合は、次の非リアルタイム系のリクエスタを許可しない、ものとしたので、全リクエスタの最大アクセスサイクル数と、その最大アクセス回数分の総和よりも小さいサイクル数とを用いて設計することが可能となり、サイクル上の破綻を生じさせずに、設計コスト、設計の困難さを抑えることができ、しかも、ほとんど全期間にわたって最適な処理を行うことができる効果がある。
【0064】
本発明の請求項7の発明によれば、請求項6記載のバスコントローラにおいて、上記非リアルタイム系リクエスタは、複数の異なる処理レベルを有するもの、としたので、全リクエスタの最大アクセスサイクル数と、その最大アクセス回数分の総和よりも小さいサイクル数とを用いて設計することが可能となり、サイクル上の破綻を生じさせずに、設計コスト、設計の困難さを抑えることができ、しかも、より一層、ほとんど全期間にわたって最適な処理を行うことができる効果がある。
【図面の簡単な説明】
【図1】本発明の実施の形態1によるバスコントローラの構成図
【図2】上記実施の形態1における、バスシステムの構成例を示す図
【図3】上記実施の形態1における、第1の処理サイクルを説明する図
【図4】上記実施の形態1における、第2の処理サイクルを説明する図
【図5】従来のバスコントローラの構成図
【図6】従来の、バスシステムの構成例を示す図
【図7】従来の処理サイクルを示す図
【符号の説明】
11 アービタ
12 サイクルカウンタ
13 リクエスタ処理レベル−メモリサイクル数対応表
14 プロトコル変換手段
21 共有メモリ
22 バスコントローラ
23,24 リクエスタ
AC アービタ制御信号
PL 処理レベル制御信号
RA リクエスタアクセス信号
CMA 共有メモリアクセス信号
Claims (7)
- 共有メモリを使用する複数のリクエスタの処理レベルを制御するバスコントローラであって、
上記共有メモリをアクセスするアクセルサイクル数をカウントするアクセスサイクル数カウンタと、
上記各リクエスタ毎に異なる処理レベルの処理を行う処理手段と、
上記各リクエスタ毎に異なる処理レベルの処理と上記アクセスサイクル数との対応を記述した対応表と、
アクセスが許可される各リクエスタの処理手段による処理レベルを指定する処理レベル判定手段と、を備え、
上記処理レベル判定手段は、上記アクセスサイクル数カウンタによりカウントされる現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、上記各リクエスタ毎に異なる処理レベルの処理と上記アクセスサイクル数との対応表とに従い、アクセスが許可される各リクエスタの処理レベルを指定する、ことを特徴とするバスコントローラ。 - 共有メモリに対してアクセスする複数のリクエスタからのアクセス要求に対応して調停するバスコントローラであって、
上記共有メモリをアクセスするアクセスサイクル数をカウントするアクセスサイクル数カウンタと、
上記複数のリクエスタとアクセスサイクル数との対応表と、
上記複数のリクエスタからのアクセス要求に対してアクセスの許可を調停するアービタと、を備え、
上記アクセスサイクル数カウンタにより上記共有メモリをアクセスする現サイクル数をカウントし、
上記アービタは、上記アクセスサイクル数カウンタによりカウントされる現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、上記複数のリクエスタとアクセスサイクル数との対応表とに従い、全リクエスタのサイクル数の合計が、限界サイクル数を越えることが予測される場合には、非リアルタイム系のバスアクセス要求を許可しない制御をする、
ことを特徴とするバスコントローラ。 - 共有メモリを使用する複数のリクエスタの処理レベルを制御し、複数のリクエスタからのアクセス要求に対応して調停するバスコントローラであって、
上記共有メモリをアクセスするアクセスサイクル数をカウントするアクセスサイクル数カウンタと、
上記各リクエスタ毎に異なる処理レベルの処理を行う処理手段と、
上記各リクエスタ毎に異なる処理レベルの処理とアクセスサイクル数との対応を記述した対応表と、
アクセスが許可される各リクエスタの処理手段による処理レベルを指定する処理レベル判定手段と、
上記複数のリクエスタからのアクセス要求に対応してアクセスの許可を調停するアービタと、を備え、
上記処理レベル判定手段、および上記アービタは、上記アクセスサイクル数カウンタによりカウントされる現サイクル数と、予め定められた限界サイクル数に対する残サイクル数と、上記対応表とに従い、アクセスが許可されるリクエスタの処理手段による処理レベルを指定するとともに、全リクエスタのサイクル数の合計が、限界サイクル数を越えることが予測される場合には、非リアルタイム系のバスアクセス要求を許可しない制御をする、
ことを特徴とするバスコントローラ。 - 請求項1記載のバスコントローラにおいて、
上記処理レベル判定手段は、リクエスタの2個後の処理から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときのアクセスサイクル数の総和を計算し、
限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、
上記残サイクル数から上記総和を減算したサイクル数までの範囲で次のリクエスタの処理のレベルを選択する、
ことを特徴とするバスコントローラ。 - 請求項2記載のバスコントローラにおいて、
上記アービタは、次のリクエスタである非リアルタイム系リクエスタの次の処理から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときのアクセスサイクル数の総和を計算し、
限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、
上記残サイクル数から上記総和を減算したサイクル数までの範囲で処理を完了できない場合は次の非リアルタイム系のリクエスタを許可しない、
ことを特徴とするバスコントローラ。 - 請求項3記載のバスコントローラにおいて、
上記処理レベル判定手段、および上記アービタは、次のリクエスタである非リアルタイム系リクエスタの次の処理から基準時間の最後の処理までの処理を、最大のサイクル数が最も小さい処理レベルで行うときのアクセスサイクル数の総和を計算し、
限界サイクル数から現在のアクセスサイクル数を減算して残サイクル数を計算し、
上記残サイクル数から上記総和を減算したサイクル数までの範囲で処理を完了できない場合は、次の非リアルタイム系のリクエスタを許可しない、
ことを特徴とするバスコントローラ。 - 請求項6記載のバスコントローラにおいて、
上記非リアルタイム系リクエスタは、複数の異なる処理レベルを有するものである、
ことを特徴とするバスコントローラ。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003076055A JP2004287576A (ja) | 2003-03-19 | 2003-03-19 | バスコントローラ |
US10/802,933 US7231477B2 (en) | 2003-03-19 | 2004-03-18 | Bus controller |
CN200410055088.3A CN1570897A (zh) | 2003-03-19 | 2004-03-19 | 总线控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003076055A JP2004287576A (ja) | 2003-03-19 | 2003-03-19 | バスコントローラ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004287576A true JP2004287576A (ja) | 2004-10-14 |
Family
ID=33291203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003076055A Pending JP2004287576A (ja) | 2003-03-19 | 2003-03-19 | バスコントローラ |
Country Status (3)
Country | Link |
---|---|
US (1) | US7231477B2 (ja) |
JP (1) | JP2004287576A (ja) |
CN (1) | CN1570897A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007072598A (ja) * | 2005-09-05 | 2007-03-22 | Fujifilm Corp | バス調停方法及びバス調停プログラム |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7640446B1 (en) * | 2003-09-29 | 2009-12-29 | Marvell International Ltd. | System-on-chip power reduction through dynamic clock frequency |
JP4625836B2 (ja) * | 2005-01-31 | 2011-02-02 | パナソニック株式会社 | アクセス調停装置 |
US8065457B2 (en) * | 2005-09-09 | 2011-11-22 | Advanced Micro Devices, Inc. | Delayed memory access request arbitration |
TWI318355B (en) * | 2006-04-17 | 2009-12-11 | Realtek Semiconductor Corp | System and method for bandwidth sharing in busses |
US7577780B2 (en) * | 2007-02-28 | 2009-08-18 | National Chiao Tung University | Fine-grained bandwidth control arbiter and the method thereof |
US7962677B2 (en) * | 2008-07-15 | 2011-06-14 | International Business Machines Corporation | Bus access moderation system |
CN105959195B (zh) * | 2016-06-23 | 2020-02-21 | 北京东土科技股份有限公司 | 工业互联网现场层宽带总线技术实现方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5241632A (en) * | 1992-01-30 | 1993-08-31 | Digital Equipment Corporation | Programmable priority arbiter |
US5533205A (en) * | 1994-03-30 | 1996-07-02 | International Business Machines Corporation | Method and system for efficient bus allocation in a multimedia computer system |
US6178475B1 (en) * | 1994-12-19 | 2001-01-23 | Advanced Micro Devices Inc. | Multimedia system employing timers to properly allocate bus access |
US5956493A (en) * | 1996-03-08 | 1999-09-21 | Advanced Micro Devices, Inc. | Bus arbiter including programmable request latency counters for varying arbitration priority |
US6055577A (en) * | 1996-05-06 | 2000-04-25 | Oracle Corporation | System for granting bandwidth for real time processes and assigning bandwidth for non-real time processes while being forced to periodically re-arbitrate for new assigned bandwidth |
US5771358A (en) * | 1996-07-15 | 1998-06-23 | Micron Electronics, Inc. | Method and system for apportioning computer bus bandwidth |
US5784569A (en) * | 1996-09-23 | 1998-07-21 | Silicon Graphics, Inc. | Guaranteed bandwidth allocation method in a computer system for input/output data transfers |
US6138200A (en) * | 1998-06-09 | 2000-10-24 | International Business Machines Corporation | System for allocating bus bandwidth by assigning priority for each bus duration time slot to application using bus frame and bus duration |
US6425032B1 (en) * | 1999-04-15 | 2002-07-23 | Lucent Technologies Inc. | Bus controller handling a dynamically changing mix of multiple nonpre-emptable periodic and aperiodic devices |
JP3491588B2 (ja) * | 1999-12-22 | 2004-01-26 | 日本電気株式会社 | 外部バス制御装置 |
JP2001184300A (ja) * | 1999-12-27 | 2001-07-06 | Hitachi Ltd | データ処理プロセッサ |
US6820152B2 (en) * | 2001-04-25 | 2004-11-16 | Matsushita Electric Industrial Co., Ltd. | Memory control device and LSI |
-
2003
- 2003-03-19 JP JP2003076055A patent/JP2004287576A/ja active Pending
-
2004
- 2004-03-18 US US10/802,933 patent/US7231477B2/en not_active Expired - Fee Related
- 2004-03-19 CN CN200410055088.3A patent/CN1570897A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007072598A (ja) * | 2005-09-05 | 2007-03-22 | Fujifilm Corp | バス調停方法及びバス調停プログラム |
Also Published As
Publication number | Publication date |
---|---|
US20040221113A1 (en) | 2004-11-04 |
CN1570897A (zh) | 2005-01-26 |
US7231477B2 (en) | 2007-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4436367B2 (ja) | 低バンド幅で局所集中アクセスを保証する調停装置、調停方法、及び調停装置を含む動画処理装置 | |
JP4485574B2 (ja) | アクセス制御装置、アクセス制御集積回路、及びアクセス制御方法 | |
US6340973B1 (en) | Memory control unit and memory control method and medium containing program for realizing the same | |
JP2005258867A (ja) | リソース管理装置 | |
JP2006221611A (ja) | リソース管理装置 | |
KR20070089264A (ko) | 버스 중재 시스템 및 버스 중재 방법 | |
JP2006227836A (ja) | データ転送システムおよびデータ転送方法 | |
US7251702B2 (en) | Network controller and method of controlling transmitting and receiving buffers of the same | |
JP2004287576A (ja) | バスコントローラ | |
US7606957B2 (en) | Bus system including a bus arbiter for arbitrating access requests | |
JP2006350573A (ja) | データ転送制御装置,データ転送制御方法,データ転送装置,画像形成装置,データ転送制御プログラム、および該制御プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
US11100019B2 (en) | Semiconductor device and bus generator | |
JP5155221B2 (ja) | メモリ制御装置 | |
JP2006215621A (ja) | Dma制御装置 | |
JP2019200732A (ja) | データ処理装置とデータ処理装置における帯域保証方法、及びプログラム | |
US7111098B2 (en) | Information processing apparatus, information processing method, recording medium and program | |
JP2011034214A (ja) | メモリ制御装置 | |
JP2000276436A (ja) | Dma制御装置 | |
US11068425B2 (en) | Semiconductor device and bus generator | |
JP2011165113A (ja) | バス調停装置およびバス調停方法 | |
JP2017162431A (ja) | メモリ制御装置及び撮像装置 | |
JP4898527B2 (ja) | リソース使用管理装置、リソース使用管理システム及びリソース使用管理装置の制御方法 | |
JP4468754B2 (ja) | 画像形成装置及びメモリ制御方法 | |
JP4689257B2 (ja) | バス制御装置および情報処理システム | |
JP5125296B2 (ja) | 転送量制御装置 |