JP4126959B2 - データ転送システム、およびアクセスモニタ装置 - Google Patents
データ転送システム、およびアクセスモニタ装置 Download PDFInfo
- Publication number
- JP4126959B2 JP4126959B2 JP2002145648A JP2002145648A JP4126959B2 JP 4126959 B2 JP4126959 B2 JP 4126959B2 JP 2002145648 A JP2002145648 A JP 2002145648A JP 2002145648 A JP2002145648 A JP 2002145648A JP 4126959 B2 JP4126959 B2 JP 4126959B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- request
- data
- read
- word
- 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
Links
Images
Landscapes
- Memory System (AREA)
Description
【発明の属する技術分野】
この発明は、複数のクライアントデバイスと、これら複数のクライアントデバイスで共用されるメモリと、メモリの制御を行うメモリコントローラとからなり、複数のクライアントとメモリコントローラとをバスを介して接続するようなデータ転送システム、およびこのようなシステムに用いて好適なアクセスモニタ装置に関するもので、特に、メモリバスとメモリコントローラとの間に設けられるFIFOメモリをモニタして、リードの場合もライトの場合も、所定時間以内のレイテンシを保証できるようにしたものに係わる。
【0002】
【従来の技術】
例えば、MPEG(Moving Picture Coding Experts Group )2のトランスポートストリームを入力し、このトランスポートストリームからビデオパケットやオーディオパケットを分離し、デコードされたビデオデータに対して、画像処理を行ったり、OSD(On Screen Display)画像を重畳したりするような画像処理チップの開発が進められている。このような画像処理チップには、任意のソース矩形領域の画像をデスティネーション領域にコピーするためのBitBLT(Bit Block Transfer)エンジンや、背景となるような静止画の処理を行うJPEG(Joint Photographic Experts Group)エンジン等が配される。これらのクライアントデバイスの処理には、大容量のメモリが必要であり、各クライアントデバイスでメモリが共用される。このような画像処理チップのためのメモリとしては、SDRAM(Synchronous Dynamic Random Access Memory)が用いられている。
【0003】
図13は、このような画像処理クライアントデバイスで使用可能なメモリ制御システムの構成を示すブロック図である。
【0004】
図13において、クライアントデバイス111、112、113は、共用のリソースであるメモリ115をアクセスするデバイスである。例えば、画像処理チップを構成するシステムにおいては、クライアントデバイス111、112、113は、BitBLTエンジン、JPEGエンジン等のプロセッサである。これらのクライアントデバイス111、112、113は、FIFO(First-In First-Out)メモリ121A、121B、121C及びFIFOメモリ122A、122B、122Cをそれぞれ介して、メモリバス110に接続される。また、メモリバス110には、FIFOメモリ123及び124を介して、メモリコントローラ114が接続される。メモリコントローラ114は、メモリ115のリード/ライトを制御するリソース制御回路である。
【0005】
メモリ115は、複数のクライアントデバイス111、112、113で共通に利用可能なリソースである。メモリ115としては、例えば、SDRAMが用いられる。SDRAMは、クロックに同期した連続的なデータ転送が可能であり、バースト転送を指定すると、指定したデータ数のデータ転送を1クロック単位で連続して行うことができる。ここでは、SDRAMの構成とされたメモリ115は、1クロックで64ビットのデータを転送することができる。
【0006】
メモリバス110は、クライアントデバイス111、112、113と、メモリコントローラ114との間で、データの転送を行うバスである。メモリバス110は、クライアントデバイス111、112、113側からメモリコントローラ114側にデータを送る送信バス110Aと、メモリコントローラ114側からのデータをクライアントデバイス111、112、113側で受信する受信バス110Bとからなる。
【0007】
各クライアントデバイス111、112、113とメモリバス110との間には、FIFOメモリ121A、121B、121C及びFIFOメモリ122A、122B、122Cが設けられる。これらのFIFOメモリ121A、121B、121C、FIFOメモリ122A、122B、122Cは、バッファとして設けられる。各クライアントデバイス111、112、113とメモリバス110との間には、FIFOメモリ121A、121B、121C及びFIFOメモリ122A、122B、122Cが設けられているため、各クライアントデバイス111、112、113は、メモリバス110の転送クロックとは非同期で、リクエストの送信やデータの受信が行える。
【0008】
また、メモリコントローラ114とメモリバス110との間には、FIFOメモリ123及びFIFOメモリ124が設けられる。メモリコントローラ114とメモリバス110との間には、FIFOメモリ123及びFIFOメモリ124が設けられているため、メモリコントローラ114は、メモリバス110の転送クロックとは非同期で、リクエストの受信やデータの送信が行える。
【0009】
各クライアントデバイス111、112、113には、固有のデバイスIDが割り振られている。各クライアントデバイス111、112、113は、メモリ115をアクセスする場合には、メモリバス110の送信バス110Aを介して、リクエストを送信する。このリクエストは、パケット構造となっている。
【0010】
クライアントデバイス111、112、113は、全て、共通のメモリ115にアクセスすることが可能である。このため、複数のクライアントデバイス111、112、113で、メモリ115へのリクエストが同時に起こることがあり得る。そこで、クライアントデバイス111、112、113からのリクエストの競合を防ぐために、アービタ116が設けられる。
【0011】
クライアントデバイス111、112、113がメモリ115をアクセスする場合には、まず、アービタ116にバスの使用権を得るためのリクエストが送られる。アービタ116は、複数のクライアントデバイスからのリクエストがあった場合には、そのリクエストを調停し、メモリバス110の使用を許可する1つのクライアントデバイスにのみ、グラントを返す。複数のクライアントデバイス111、112、113のうち、グラントが返されてきたクライアントデバイスのみがメモリ15をアクセスすることができる。
【0012】
メモリのライトのリクエストの場合には、クライアントデバイス111、112、113から、ライトのリクエストが送信される。このライトのリクエストが送信バス110Aを介して、メモリコントローラ114に送られる。メモリコントローラ114により、ライトのリクエストに応じて、クライアントデバイス111、112、113から送られたライトデータがメモリ115の所望のアドレスに書き込まれる。
【0013】
メモリのリードのリクエストの場合には、クライアントデバイス111、112、113から、リードのリクエストが送信される。このリードのリクエストが送信バス110Aを介して、メモリコントローラ114に送られる。メモリコントローラ114で、リードのリクエストに応じて、メモリ115の所望のアドレスからデータが読み出される。このリードデータがメモリコントローラ114から、受信バス110Bを介して転送され、リードのリクエストを送信したクライアントデバイス111、112、113で受信される。
【0014】
このように、このシステムでは、送信バス110Aを介して、クライアントデバイス111、112、113からリクエストが送信され、このリクエストのワードがメモリバス110を介して、FIFOメモリ123に蓄積されていく。
【0015】
ここで、メモリバス110に転送されるワードのクロックと、メモリコントローラ114によりメモリ115がアクセスされるワードのクロックとは非同期になっており、FOFO122及びFIFOメモリ123がメモリバス110に転送されるワードのクロックと、メモリコントローラ114によりメモリ115がアクセスされるワードのクロックとのバッファとなっている。
【0016】
しかしながら、仮に、メモリバス110に転送されるワードのクロックの周波数の方が、メモリコントローラ114によりメモリ115がアクセスされるワードのクロックの周波数より高いとすると、クライアントデバイス110、111、112からメモリバス110のバス110Aを介して送られてくるワードがFIFOメモリ123に貯まり、FIFOメモリ123がオーバーフローを起こすことになる。
【0017】
そこで、図14に示すように、FIFOメモリ残量モニタ回路125が設けられる。このFIFOメモリ残量モニタ回路125により、FIFOメモリ123の残量が監視される。そして、FIFOメモリ123がオーバーフローを起こしそうになったら、FIFOメモリ残量モニタ回路125からアービタ116にストップ信号が送られ、バスの調停が停止される。これにより、クライアントデバイス111、112、113からメモリ115をアクセスするためののリクエストの送信が止められ、FIFOメモリ123のオーバーフローが防止される。
【0018】
また、このFIFOメモリ残量モニタ回路125により、バスのレイテンシを保証できる。
【0019】
すなわち、クライアントデバイス111、112、113がリクエストをバスに送ったら、その処理が所定のレイテンシ以内に終了することが保証されていないと、クライアントデバイス111、112、113は、次の処理に移れない。このため、クライアントデバイス111、112、113がリクエストをメモリバス110に送ったら、その処理が所定のレイテンシ時間以内に終了することを保証している。
【0020】
ライトのリクエストの場合には、ライトのヘッダのワードに続いて、ライトデータのワードが続き、書き込みにかかる時間は、ライトのヘッダのワードに続くライトデータのワードに対応する。したがって、FIFOメモリ123の空き容量が大きいときには、その前にFIFOメモリ123に蓄積されているリクエストに対する処理は直ぐに終わるので、リクエストに対するメモリアクセスが直ちに行われる。FIFOメモリ123の空き容量が小さいと、その前にFIFOメモリ23に蓄積されているリクエストに対する処理を終了してからでないと次の処理に入れないので、送られたリクエストに対するアクセスは時間がかかる。
【0021】
例えば、5ワード分のデータの書き込みを行う場合には、送信バス110Aを介してクライアントデバイス111、112、113から、ヘッダのワードに続いて5ワード分のデータが送られ、FIFOメモリ123に蓄積される。メモリ115のアクセスは例えば1クロックで1ワード(64ビット)がアクセスされる。したがって、このリクエストを処理するためには、メモリコントローラ114とメモリ115との間のクロックで、5クロック分の時間が必要になる。
【0022】
これに対して、10ワード分のデータの書き込みを行う場合には、送信バス110Aを介してクライアントデバイス111、112、113から、ヘッダのワードに続いて10ワード分のデータが送られ、FIFOメモリ123に蓄積される。このリクエストを処理するためには、メモリコントローラ114とメモリ115との間のクロックで、10クロック分の時間が必要になる。
【0023】
このように、ライトの場合には、FIFOメモリ123の蓄積量と処理時間とは、対応する関係となる。したがって、FIFOメモリ123の残量から、処理時間が推定でき、FIFOメモリ123の残量を監視し、FIFOメモリ123がオーバーフローを起こしそうになったら、アービタ116にストップ信号が送ることで、所定時間以内のレイテンシを保証できる。
【0024】
【発明が解決しようとする課題】
しかしながら、このように、FIFOメモリ123の残量を常に監視し、FIFOメモリ123の残量が所定値以下になったら、アービタ116にストップ信号を送るような処理だけでは、メモリバス110のレイテンシを必ずしも保証できない。これは、ライトリクエストについてはワード数が処理時間に対応するが、リードリクエストについては、ワード数が処理時間に係わらず一定であるからである。
【0025】
つまり、クライアントデバイス111、112、113からメモリコントローラ114側に送るライトのリクエストの場合には、ライトを示すヘッダのワードに続いて、メモリ115に書き込むライトデータのワードが送られる。FIFOメモリ123には、ライトのヘッダのワードと、ライトデータのワードとが蓄積される。したがって、メモリに書き込むデータ量が大きくなれば、ヘッダのワードに続いて送られるデータのワード数も多くなり、FIFOメモリ123に貯まるデータ量も大きくなり、FIFOメモリ123の蓄積量が処理時間に対応する。
【0026】
これに対して、リードのときには、リードを示すヘッダのワードのみが送られる。このため、FIFOメモリ123の蓄積量からでは、処理時間は分からない。
【0027】
例えば、5ワード分のデータの読み出し行う場合にも、10ワード分のデータの読み出しを行う場合にも、送られてくるのは、ヘッダの1ワードだけである。これに対して、処理時間は、読み出しを行うデータのワード数により変わってくる。5ワードのデータの読み出しを行うのであれば、メモリコントローラ114とメモリ115との間のクロックで5クロック分の時間が必要になり、10ワードのデータの読み出しを行うのであれば、メモリコントローラ114とメモリ115との間のクロックで10クロック分の時間が必要になる。
【0028】
したがって、例えば、FIFOメモリ123に3ワードのリードリクエストがあったとしても、このFIFOメモリ123にある3ワードのリクエストが全て5ワードの読み出しを行うものであるなら、その処理に(3×5=15)クロックの時間がかかるのに対して、この3ワードが全て10ワードの読み出しを行うものであるなら、その処理に(3×10=30)クロックの時間がかかる。このように、リードのリクエストの場合には、FIFOメモリ123に蓄積されているリクエストのワード数が同じであっても、処理時間は大きく異なる。
【0029】
このように、ライトのリクエストの場合には、FIFOメモリ123の蓄積量と処理時間とが対応する関係となるが、リードのリクエストの場合には、FIFOメモリ123の蓄積量と処理時間との間に関連性がない。したがって、FIFOメモリ123の残量を常に監視し、FIFOメモリ123がオーバーフローを起こしそうになったら、アービタ116にストップ信号を送るような処理だけでは、メモリバス110のレイテンシを必ずしも保証できないということになる。
【0030】
そこで、FIFOメモリ123内に存在するパケットの処理にかかるクロック数を管理する方法として、リクエストのパケット中のアクセスカウント数をFIFOメモリ123の入力側及び出力側で常に監視し、リクエストのパケットが入力されたらそのアクセスカウント数を加算し、リクエストのパケットがFIFOメモリ123からメモリコントローラ114に読み出されたら、そのアクセスカウント数を減算して、FIFOメモリ123内にあるリクエストのパケット中のアクセスカウントの総数を求めることが考えられる。
【0031】
アクセスカウントの総数は、リードリクエストであっても、ライトリクエストであっても、FIFOメモリ123内のすべてのリクエストのパケットの処理時間の総和に対応する。したがって、このカウント値があるしきい値を越えたらストップ信号を生成することにより、メモリバスのレイテンシを保証することができる。
【0032】
ところが、このようなアクセスカウントの総和を求めるようなカウンタを実現するためには、FIFOメモリ123の入力側と出力側にそれぞれモニタ回路を持ち、これらの回路の出力に応じて、カウンタを増減させる必要がある。FIFOメモリ123の入力側と出力側とが同一のクロックなら、そのような回路は実現できるが、この回路では、入力側と出力側とで、周波数が異なっているため、このような回路の実現は容易ではない。
【0033】
すなわち、このようなカウンタをFIFOメモリ123の入力側に持つとすると、その出力側でパケットがFIFOメモリ123から出力されたことを示す信号及びそのアクセスワード数を、クロック乗り換えを行って入力側に伝える必要がある。ここで、メモリバス110のクロックとメモリコントローラ114側のクロックは、どちらが高速であるとは言えない。このように、双方のクロックの大小関係が分からないクロックの載せ変えは、困難である。
【0034】
したがって、この発明の目的は、メモリバスとメモリコントローラとの間に設けられるFIFOメモリをモニタして、リードの場合もライトの場合も、所定時間以内のレイテンシを保証できるようにしたデータ転送システム、およびアクセスモニタ装置を提供することにある。
【0035】
【課題を解決するための手段】
この発明は、複数のクライアントデバイスと、
複数のクライアントデバイスで共用されるリソースと、
リソースを制御するリソース制御手段と、
複数のクライアントデバイスとリソースとの間でデータを送受信するバスと、
各クライアントデバイスからバスを介して転送されてきたリクエストを一旦蓄積し、リソース制御手段に読み出すバッファ手段と、
バッファ手段に蓄積されているリクエストに含まれるアクセスカウント情報を抽出し、バッファ手段に蓄積されているリクエストに含まれるアクセスカウント情報の総和を求めるアクセスカウント数総和算出手段と、
バッファ手段に蓄積されているリクエストに含まれるアクセスカウント情報の総和が所定のしきい値を越えたら、クライアントデバイスのアクセスを制限するようにする手段と
を備え、
アクセスカウント数総和算出手段は、
バッファ手段に蓄積されているリクエストのアクセスカウント情報の総和をカウントする総和カウンタと、
バスからバッファ手段にリクエストが入力されたら、リクエストからアクセスカウントの値を検出し、アクセスカウントの値をそれまでの総和カウンタの値に加算する手段と、
バスからリクエストが入力されたら、リクエストのワードからアクセスカウントの値を検出し、アクセスカウントの値を保持するデータ保持手段と、
バスから入力されるデータ量のカウント値から推定されるバッファの残量の推定値とバッファ手段の実際の残量とを比較して、バッファ手段からのデータの読み出しがあったとことを判断するバッファ読み出し判断手段と、
バッファ手段からリクエストのワードが読み出されたと判断されたら、バッファ手段から読み出されたリクエストのワードのアクセスカウントの値に対応する値をデータ保持手段から読み出し、データ保持手段から読み出された値を総和カウンタの値から減算する手段と
を備えるようにしたデータ転送システムである。
【0037】
この発明は、複数のクライアントデバイスで共用されるリソースを制御するリソース制御手段と、複数のクライアントデバイスとリソースとの間でデータを送受信するバスとの間のバッファ手段に蓄積されているリクエストのアクセスカウント情報の総和をカウントする総和カウンタと、
バスからバッファ手段にリクエストが入力されたら、リクエストからアクセスカウントの値を検出し、アクセスカウントの値をそれまでの総和カウンタの値に加算する手段と、
バスからリクエストが入力されたら、リクエストのワードからアクセスカウントの値を検出し、アクセスカウントの値を保持するデータ保持手段と、
バスから入力されるデータ量のカウント値から推定されるバッファの残量の推定値とバッファ手段の実際の残量とを比較して、バッファ手段からのデータの読み出しがあったとことを判断するバッファ読み出し判断手段と、
バッファ手段からリクエストのワードが読み出されたと判断されたら、バッファ手段から読み出されたリクエストのワードのアクセスカウントの値に対応する値をデータ保持手段から読み出し、データ保持手段から読み出された値を総和カウンタの値から減算する手段と、
総和カウンタによりカウントされるアクセスカウントの総和の値と所定のしきい値とを比較し、総和カウンタアクセスの総和の値が所定のしきい値を越えたら、ストップ信号を出力する手段と
を備えるようにしたアクセスモニタ装置である。
【0038】
この発明では、リソース制御手段とバスとの間のバッファ手段に蓄積されているリクエストのアクセスカウント数の総和をモニタするアクセス総和カウントモニタ回路が設けられる。
【0039】
すなわち、ヘッダのワードには、バイトカウント(Byte Count)が含められている。このバイトカウント(Byte Count)の値が、各クライアントで共用されるリソースであるメモリへのアクセス数を反映している。アクセス総和カウントモニタ回路で、ヘッダのバイトカウントの総和が求められる。そして、このヘッダのバイトカウントの総和が所定のしきい値以上になると、アクセス総和カウントモニタ回路からストップ信号が出力される。このストップ信号がアクセス総和カウントモニタ回路からアービタに供給される。アービタは、FIFOメモリ残量モニタからストップ信号が送られてきたら、リクエストの調停を中止する。これにより、クライアントデバイスのメモリへのアクセスが制限される。
【0040】
このように、FIFOメモリに蓄積されているリクエストのアクセスカウント数の総和をモニタするアクセス総和カウントモニタ回路が設けられ、アクセスカウントの総和が所定のしきい値以上になると、アクセス総和カウントモニタ回路からストップ信号がアービタに送られ、リクエストの調停が中止されるため、メモリバスのレイテンシを保証できる。
【0041】
また、この発明では、入力されるワードのカウント値から推定されるFIFOメモリの残量と、FIFOメモリの実際の残量とを比較し、この比較値からFIFOメモリに読み出しがあったことを検出している。このような構成では、メモリバスからFIFOメモリに送られてくるワードのクロックと、メモリコントローラからメモリをアクセスするときのワードのクロックとの周波数関係に依存しない構成とすることができる。
【0042】
【発明の実施の形態】
以下、この発明の実施の形態について図面を参照しながら説明する。図1は、この発明が適用されたシステムの全体構成を説明するものである。
【0043】
図1において、クライアントデバイス11、12、13は、共用のリソースであるメモリ15をアクセスするデバイスである。例えば、信号処理チップを構成するシステムにおいては、クライアントデバイス11、12、13は、BitBLT(Bit Block Transfer)エンジン、JPEG(Joint Photographic Experts Group)エンジン等のプロセッサである。これらのクライアントデバイス11、12、13は、FIFOメモリ(First-In First-Out)21A、21B、21C及びFIFOメモリ22A、22B、22Cをそれぞれ介して、メモリバス10に接続される。また、メモリバス10には、FIFOメモリ23及び24を介して、メモリコントローラ14が接続される。メモリコントローラ14は、メモリ15のリード/ライトを制御するリソース制御回路である。
【0044】
メモリ15は、複数のクライアントデバイス11、12、13で共通に利用可能なリソースである。メモリ15としては、例えば、SDRAM(Synchronous Dynamic Random Access Memory)が用いられる。SDRAMは、クロックに同期した連続的なデータ転送が可能であり、バースト転送を指定すると、指定したデータ数のデータ転送を1クロック単位で連続して行うことができる。ここでは、SDRAMの構成とされたメモリ15は、1クロックで64ビットのデータを転送することができる。SDRAMは、SDR(Dingle Data Rate)でも、DDR(Double Data Rate)でも良い。
【0045】
メモリバス10は、クライアントデバイス11、12、13と、メモリコントローラ14との間で、データの転送を行うバスである。メモリバス10は、クライアントデバイス11、12、13側からメモリコントローラ14側にデータを送る送信バス10Aと、メモリコントローラ14側からのデータをクライアントデバイス11、12、13側で受信する受信バス10Bとからなる。
【0046】
各クライアントデバイス11、12、13とメモリバス10との間には、FIFOメモリ21A、21B、21C及びFIFOメモリ22A、22B、22Cが設けられる。これらのFIFOメモリ21A、21B、21C、FIFOメモリ22A、22B、22Cは、バッファとして設けられる。各クライアントデバイス11、12、13とメモリバス10との間には、FIFOメモリ21A、21B、21C及びFIFOメモリ22A、22B、22Cが設けられているため、各クライアントデバイス11、12、13は、メモリバス10の転送クロックとは非同期で、リクエストの送信やデータの受信が行える。
【0047】
また、メモリコントローラ14とメモリバス10との間には、FIFOメモリ23及びFIFOメモリ24が設けられる。メモリコントローラ14とメモリバス10との間には、FIFOメモリ23及びFIFOメモリ24が設けられているため、メモリコントローラ14は、メモリバス10の転送クロックとは非同期で、リクエストの受信やデータの送信が行える。
【0048】
各クライアントデバイス11、12、13には、固有のデバイスIDが割り振られている。各クライアントデバイス11、12、13は、メモリ15をアクセスする場合には、メモリバス10の送信バス10Aを介して、リクエストを送信する。このリクエストは、パケット構造となっている。
【0049】
クライアントデバイス11、12、13は、全て、共通のメモリ15にアクセスすることが可能である。このため、複数のクライアントデバイス11、12、13で、メモリ15へのリクエストが同時に起こるようなことがあり得る。そこで、クライアントデバイス11、12、13からのリクエストの競合を防ぐために、アービタ16が設けられる。
【0050】
クライアントデバイス11、12、13がメモリ15をアクセスする場合には、まず、アービタ16にバスの使用権を得るためのリクエストが送られる。アービタ16は、複数のクライアントデバイスからのリクエストがあった場合には、そのリクエストを調停し、メモリバス10の使用を許可する1つのクライアントデバイスにのみ、グラントを返す。複数のクライアントデバイス11、12、13のうち、グラントが返されてきたクライアントデバイスのみがメモリ15をアクセスすることができる。
【0051】
メモリのライトのリクエストの場合には、クライアントデバイス11、12、13から、ライトのリクエストが送信される。このライトのリクエストが送信バス10Aを介して、メモリコントローラ14に送られる。メモリコントローラ14により、ライトのリクエストに応じて、クライアントデバイス11、12、13から送られたライトデータがメモリ15の所望のアドレスに書き込まれる。
【0052】
メモリのリードのリクエストの場合には、クライアントデバイス11、12、13から、リードのリクエストが送信される。このリードのリクエストが送信バス10Aを介して、メモリコントローラ14に送られる。メモリコントローラ14で、リードのリクエストに応じて、メモリ15の所望のアドレスからデータが読み出される。このリードデータがメモリコントローラ14から、受信バス10Bを介して転送され、リードのリクエストを送信したクライアントデバイス11、12、13で受信される。
【0053】
図2は、メモリバス10に転送されるパケットの構成を示すものである。図2に示すように、メモリバス10に転送されるデータは、ヘッダワードと、データワードと、エンドオブパケットワードとからなるパケット構成とされる。これら、ヘッダと、データと、エンドオブパケットのワードは、64ビットのデータにフラグ等の制御信号を加えた72ビットとなっている。
【0054】
図2A、図2B、及び図2Cは、それぞれ、ヘッダと、データと、エンドオブパケットの各ワードのビットアサインを示すものである。
【0055】
図2A〜図2Cに示すように、各ワードの先頭には、2ビットのフラグが設けられる。フラグは、そのワードが、ヘッダか、データか、エンドオブパケットかを識別するものである。このフラグが例えば、「01」ならヘッダであり、「10」ならデータであり、「11」ならエンドオブパケットである。
【0056】
図2Aのヘッダのワードにおいて、フラグの2ビットの次の6ビットは、クライアント側で定義可能とされている。
【0057】
次の6ビットは、デバイスIDである。各クライアントデバイス毎に固有のデバイス番号が割り振られており、このデバイスIDは、ターゲットクライアントデバイスのIDを示している。
【0058】
次の6ビットはモードとなっている。モードは、アドレシングフォーマットと共に、アドレスモードを示している。アドレスモードとしては、リニアモード、2Dモード、サーキュラモード等が用意されている。
【0059】
モードの次の1ビットは、リードかライトかを示している。このビットが例えば「1」ならライトであり、「0」ならリードである。
【0060】
アドレシングフォーマットの次の2ビットは、将来の拡張のためにリザーブされている。
【0061】
その次の30ビットは、スタートアドレスとなっている。スタートアドレスは、リード又はライトするメモリの開始アドレスであり、このアドレスはバイト単位に設定される。
【0062】
図2B及び図2Cに示すように、データワード及びエンドオブパケットワードでは、2ビットのフラグの次に、8ビットのバイトイネーブルが配置され、次に、64ビットのデータが配置される。バイトイネーブルは、対応するデータが有効か無効かを示している。
【0063】
すなわち、1ワードの転送データが64ビットに満たない場合がある。1ワードの転送データが64ビットに満たない場合には、1ワードのデータが64ビットとなるように、図3に示すように、スタッフィングバイトが挿入される。
【0064】
図3Aは、64ビット(8バイト)のうちの下位3バイトがデータで、上位5バイトがスタッフィングバイトの場合を示している。この場合には、図3Aに示すように、バイトイネーブルの8ビットのうち、下位3ビットは有効であることを示す「1」となり、上位5ビットは、無効データであることを示す「0」となる。
【0065】
図3Bは、64ビット(8バイト)のうちの上位2バイトがデータで、下位6バイトがスタッフィングバイトの場合を示している。この場合には、図3Bに示すように、バイトイネーブルの8ビットのうち、上位2ビットは有効であることを示す「1」となり、下位6ビットは、無効データであることを示す「0」となる。
【0066】
図4Aに示すように、ヘッダワード(図2A)には、モードと、アドレシングフォーマットとが設けられ、モードとアドレシングフォーマットは、アドレスモードを示している。アドレスモードとしては、リニアモード、2Dモード、サーキュラモード等が用意されている。
【0067】
図4Bから図4Dは、各アドレスモードを示すものである。リニアモードでは、図4Bに示すように、モードの4ビットが「0000」となる。リニアモードでは、パラメータとして、ジャンプ(Jump)とバイトカウント(Byte Count)が指定される。リニアモードは、バイトカウント(Byte Count)で指定されるアクセス数のデータを、スタートアドレスで指定された位置から順にアクセスするもので、最も標準的なアドレッシングモードである。
【0068】
ジャンプ(Jump)は、2の補数の数値でジャンプするワード(64ビット)を指定するものである。ジャンプは、ワードの境界で行われる。例えば、ジャンプ(Jump=2ワード)にセットすると、ワードの境界で、2ワードジャンプしてアドレスが進められる。負の値を指定することで、逆方法のアドレシングも可能である。
【0069】
バイトカウント(Byte Count)は、必要なバイト数をセットするものである。なお、実際には、バイトカウント(Byte Count-1)が使われており、必要なバイト数から1を引いた数とされる。つまり、1バイトのデータが必要なときには、バイトカウント(Byte Count)の値は0にセットされる。ここでは、説明を簡単とするため、バイトカウント(Byte Count)は、必要なアクセスセバイト数をセットするものとする。
【0070】
2Dモードでは、図4Cに示すように、モードの4ビットが「0001」となる。2Dモードでは、パラメータとして、ジャンプ(Jump)と、高さ(Hight)と、カラム(Col)と、ロウ(Row)とが指定できる。2Dモードは、二次元ブロックベースのアクセスを可能としたもので、ロウとカラムとでアドレスを指定できる。
【0071】
サーキュラモードでは、図4Dに示すように、モードの4ビットが「0010」となる。サーキュラモードでは、パラメータとして、バイトカウント(Byte Count)が指定される。サーキュラモードは、バイトカウント(Byte Count)で指定されるアクセス数のデータを、巡回的にアクセスするものである。すなわち、サーキュラモードでは、バイトカウント(Byte Count)が指定される範囲内で、エンドアドレスがスタートアドレスに戻ってくるような巡回的なアドレシングが行われる。
【0072】
図5は、リニアモードで、スタートアドレスが「05h(hは16進数)」、ジャンプが「2ワード」、バイトカウントが「31」が指定されたときのアクセスを示すものである。これは、メモリ上のアドレス「5h」から31バイト分をアクセスし、ワードとワードの境界で、2ワード分ジャンプするようなアクセスを示している。
【0073】
図5に示すように、最初に、「05h」から「07h」の3バイトのデータが順にアクセスされる。ワードとワードの境界となる「07h」からは、2ワードジャンプされ、「10h」から「17h」の1ワードがアクセスされ、ワードの境界で2ワードジャンプされ、「20h」から「27h」の1ワードがアクセスされ、ワードの境界で2ワードジャンプされ、「30h」から「37h」の1ワードがアクセスされ、ワードの境界で2ワードジャンプされ、「40h」から「43h」の4バイトのデータがアクセスされる。これにより、アドレス「5h」から順に、31バイト分のデータがアクセスされたことになる。
【0074】
このようにしてアクセスされたデータを読み出すと、図6に示すように、ヘッダのワードH1と、データのワードD1からD4と、エンドオブパケットのワードD5とからなるパケットとなる。
【0075】
図7Aに示すように、ヘッダのワードH1には、ヘッダのワードであることを示すフラグ「01」が付加される。ヘッダには、図2Aに示したような各種の情報が記述される。
【0076】
図7Bから図7Eに示すように、ワードD1からD4には、データのワードであることを示すフラグ「10」が付加される。ワードD1には、アドレス「05h」から「07h」の3バイトのデータが配置される。なお、3バイトのデータは64ビットに満たないので、ここには、スタッフィングバイトが挿入される。ワードD2には、アドレス「10h」から「17h」の64ビットのデータが配置される。ワードD3には、アドレス「20h」から「27h」の64ビットのデータが配置される。ワードD4には、アドレス「30h」から「37h」の64ビットのデータが配置される。ワードD5には、エンドオブパケットのワードであることを示すフラグ「11」が付加される。ワードD5には、アドレス「40h」から「47h」の4バイトのデータが配置される。なお、4バイトのデータは64ビットに満たないので、ここには、スタッフィングバイトが挿入される。
【0077】
このように、図1におけるシステムにおいて、メモリバス10に転送されるデータは、パケット構造となっている。クライアントデバイス11、12、13からメモリコントローラ14側に送るパケットの種類は、図8に示すように、ライトリクエストのパケット(図8A)と、リードリクエストのパケット(図8B)との2つに分けられる。
【0078】
ライトリクエストのパケットは、図8Aに示すように、ヘッダのワードと、数ワードの書き込みデータとからなり、最後に、エンドオブパケットのワードが来る。
【0079】
リードリクエストのパケットは、図8Bに示すように、リードヘッダの1ワードであり、データワードやエンドオブパケットのワードは存在しない。
【0080】
リードリクエストかライトリクエストかは、パケットの先頭に付加されたヘッダのワードのR/Wビットにより識別できる(図2A参照)。
【0081】
メモリコントローラ14からクライアントデバイス11、12、13側に送られてくるパケットは、クライアントデバイス11、12、13からのリードリクエストに対応してメモリ15から読み出されてきたリードデータのパケットである。このリードデータのパケットは、図9に示すように、ヘッダのワードと、数ワードの書き込みデータとからなり、最後に、エンドオブパケットのワードが来ることになる。
【0082】
図10に示すように、各クライアントデバイス11、12、13には、ユニークなデバイスIDが割り振られる。例えば、図10に示すように、クライアントデバイス11には、デバイスIDとして(ID=01h)が割り当てられ、クライアントデバイス12には、デバイスIDとして(ID=02h)が割り当てられ、クライアントデバイス13には、デバイスIDとして(ID=03h)で(Byte Count=16)が割り当てられる。
【0083】
図11Aは送信バス10Aに転送されるワードを示し、図11Bは受信バス10Bに転送されるワードを示す。図11Aに示すように、例えば、クライアントデバイス11が16バイトのデータをメモリ15から読み出す要求をしたとすると、クライアントデバイス11から送信バス10Aを介して、リードリクエストのパケットP1が送られる。このリードリクエストのパケットP1はヘッダのみであり、このヘッダには、デバイスID(ID=01h)で、バイトカウント(Byte Count=16)が記述される。
【0084】
次に、クライアントデバイス12が8バイトのデータをメモリ15から読み出す要求をしたとすると、クライアントデバイス12から送信バス10Aを介して、リードリクエストのパケットP2が送られる。このリードリクエストのパケットはヘッダのみであり、このヘッダには、デバイスID(ID=02h)で、バイトカウント(Byte Count=8)が記述される。
【0085】
次に、クライアントデバイス13が24バイトのデータをメモリ15に書き込む要求をしたとすると、クライアントデバイス13から送信バス10Aを介して、ライトリクエストのパケットP3が送られる。このライトリクエストのパケットP3は、ヘッダのワードと、これに続く2バイト分のデータのワードと、1ワードのエンドオブパケットのワードからなる。このヘッダには、デバイスID(ID=03h)で、バイトカウントが(Byte Count=24)が記述される。
【0086】
このように、メモリバス10の送信バス10Aには、クライアントデバイス11、12、13から、リード又はライトのリクエストのパケットP1、P2、P3,P3…が次々に送られてくる。このリード又はライトのリクエストの各ワードは、送信バス10Aから、FIFOメモリ23に一旦読み込まれる。
【0087】
FIFOメモリ23に読み込まれたワードは、順に、メモリコントローラ14に送られる。メモリコントローラ14で、各リクエストに応じて、メモリ15がアクセスされる。
【0088】
すなわち、図11において、クライアントデバイス11からのリードリクエストのパケットP1に応答して、メモリ15から所望のアドレスのデータが16バイト分読み出される。このリードデータは、ヘッダと、それに続く1ワードののデータワードと、1ワードのエンドオブパケットからなるパケットP11にパケット化される。このリードデータのパケットP11は、図11Bに示すように、メモリコントローラ14から、受信バス10Bを介して送られる。このリードデータのパケットのヘッダには、デバイスIDとして(ID=01h)が記述される。クライアントデバイス11では、デバイスIDが(ID=01h)であることから、自分宛のリードデータであることがわかり、このリードデータのパケットP11がクライアントデバイス11で受信される。
【0089】
クライアントデバイス12からのリードリクエストのパケットP2に応答して、メモリ15から所望のアドレスのデータが8バイト分読み出される。このリードデータは、ヘッダと、それに続く1ワードのエンドオブパケットからなるパケットP12にパケット化される。このリードデータのパケットP12は、図11Bに示すように、メモリコントローラ14から、受信バス10Bを介して、送られる。このリードデータのパケットのヘッダには、デバイスIDとして(ID=02h)が記述される。クライアントデバイス12では、デバイスIDが(ID=02h)であることから、自分宛のリードデータであることがわかり、このリードデータのパケットP12がクライアントデバイス12で受信される。
【0090】
クライアントデバイス13からのリードリクエストのパケットP3に応答して、メモリ15の所望のアドレスに、ライトデータとしてクライアントデバイス13から転送されてきた24バイト分のデータが書き込まれる。
【0091】
このように、図1に示すシステムでは、クライアントデバイス11、12、13からは、メモリバス10の送信バス10Aを介して、リード又はライトのリクエストがパケット構造で送られてくる。このリクエストのワードは、FIFOメモリ23に書き込まれていく。
【0092】
FIFOメモリ23に蓄積されたワードは、メモリコントローラ14により読み出される。そして、メモリコントローラ14によりメモリ15がアクセスされる。
【0093】
メモリコントローラ14に送られてきたリクエストがライトなら、アドレシングモードに従って、スタートアドレスで指定されたアドレスからバイトカウントで指定されるデータ分のデータがメモリ15に書き込まれる。
【0094】
メモリコントローラ14に送られてきたリクエストがリードなら、アドレシングモードに従って、スタートアドレスで指定されたアドレスからバイトカウントで指定されるデータ分のデータがメモリ15から読み出される。
【0095】
メモリ15から読み出されたデータは、メモリコントローラ14に送られる。そして、このデータは、メモリコントローラ14で、ヘッダのワードと、数ワードの書き込みデータと、エンドオブパケットとからなるパケットにパケット化され、FIFOメモリ24に蓄積される。FIFOメモリ24の出力がメモリバス10のバス10Bを介して、クライアントデバイス11、12、13に送られる。
【0096】
ここで、メモリバス10に転送されるワードのクロックと、メモリコントローラ14によりメモリ15がアクセスされるワードのクロックとは非同期になっている。FIFOメモリ23及びFIFOメモリ24がメモリバス10に転送されるワードのクロックと、メモリコントローラ14によりメモリ15がアクセスされるワードのクロックとの周波数の違いを吸収するバッファとなっている。
【0097】
しかしながら、仮に、メモリバス10に転送されるワードのクロックの周波数の方が、メモリコントローラ14によりメモリ15がアクセスされるワードのクロックの周波数より高いとすると、クライアントデバイス11、12、13からメモリバス10の送信バス10Aを介して送られてくるワードがFIFOメモリ23に貯まり、FIFOメモリ23がオーバーフローを起こすことになる。
【0098】
このため、FIFOメモリ23の残量を常に監視し、FIFOメモリ23がオーバーフローを起こしそうになったら、アービタ16にストップ信号を送り、バスの調停を停止させ、クライアントデバイス11、12、13からのリクエストが送信されないようにすることが必要である。
【0099】
そこで、FIFOメモリ残量モニタ25が設けられる。FIFOメモリ残量モニタ25により、FIFOメモリ23の残量と所定のしきい値とが比較される。FIFOメモリ残量モニタ25で、FIFOメモリ23の残量が所定のしきい値以下になったことが検出されると、FIFOメモリ残量モニタ25からストップ信号が出力される。このストップ信号がアービタ16に送られる。アービタ16は、FIFOメモリ残量モニタ25からストップ信号が送られてきたら、リクエストの調停を中止する。これにより、クライアントデバイス11、12、13のメモリ15へのアクセス要求が止められる。
【0100】
しかしながら、このように、FIFOメモリ23の残量を常に監視し、FIFOメモリ23がオーバーフローを起こしそうになったら、アービタ16にストップ信号を送るような処理だけでは、メモリバスのレイテンシを保証できない。
【0101】
つまり、クライアントデバイス11、12、13がメモリバス10にリードリクエストを送信すると、このリードリクエストに対応するリードデータがメモリ15から読み出され、クライアントデバイス11、12、13に返されてくる。図11では、クライアントデバイス11がリードリクエストのパケットP1を送信すると、それから少し遅れて、このリードリクエストのパケットP1に応じたリードデータのパケットP11が返されてくる。また、クライアントデバイス12がリードリクエストのパケットP2を送信すると、それから少し遅れて、このリードリクエストのパケットP2に応じたリードデータのパケットP12が返されてくる。このときの処理が所定のレイテンシ以内に終了することを保証する必要がある。
【0102】
ライトのリクエストの場合には、ライトのヘッダのワードに続いて、ライトデータのワードが続き(図8A参照)、書き込みにかかる時間は、ライトのヘッダのワードに続くライトデータのワードに対応する。
【0103】
ところが、ライトのリクエストの場合には、ヘッダのワードのみが送られ(図8B参照)、このヘッダのワードがFIFOメモリ23に書き込まれる。大きなデータを読み出す場合も小さなデータを読み出す場合も、送られるリクエストはヘッダのワードのみであるため、リードのリクエストの場合には、FIFOメモリ123の蓄積量と処理時間との間に関連性がなくなる。したがって、FIFOメモリ123の残量だけでは、バスのレイテンシを必ずしも保証できない。
【0104】
そこで、この発明の実施の形態では、FIFOメモリ23に蓄積されているリクエストのアクセスカウント数の総和をモニタするアクセス数総和カウントモニタ回路26が設けられる。
【0105】
すなわち、図4に示したように、ヘッダのワードには、バイトカウント(Byte Count)が含められている。このバイトカウント(Byte Count)の値がメモリ15へのアクセス数を反映している。
【0106】
アクセス数総和カウントモニタ回路26で、FIFOメモリ23に蓄積されているヘッダのバイトカウントの総和が求められる。そして、このヘッダのバイトカウントの総和が所定のしきい値以上になると、アクセス数総和カウントモニタ回路26からストップ信号が出力される。
【0107】
このストップ信号がアクセス数総和カウントモニタ回路26からアービタ16に供給される。アービタ16は、FIFOメモリ残量モニタ25からストップ信号が送られてきたら、リクエストの調停を中止する。これにより、クライアントデバイス11、12、13のメモリ15へのアクセスが制限される。
【0108】
このように、この発明の実施の形態では、FIFOメモリ23に蓄積されているリクエストのアクセスカウント数の総和をモニタするアクセス数総和カウントモニタ回路26が設けられ、アクセスカウントの総和が所定のしきい値以上になると、アクセス数総和カウントモニタ回路26からストップ信号がアービタ16に送られ、リクエストの調停が中止されるため、メモリバス10のレイテンシを保証できる。
【0109】
なお、ここでは、アクセス数の総和をヘッダのバイトカウントの総和としているが、バイトカウントの総和に限るものではない。アクセス数をワードカウントで指定するシステムでは、ワードカウントの総和を求めることになる。
【0110】
図12は、アクセス数総和カウントモニタ回路26の構成を示すものである。図12において、送信バス10Aを介して送られてきたリクエストのワードは、FIFOメモリ23に書き込まれると共に、アクセス数総和カウントモニタ回路26のバイトカウント検出部51、フラグ検出部52、FIFOメモリ残量カウンタ53に供給される。
【0111】
バイトカウント検出部51は、リクエストのワードがヘッダであったときに、このヘッダのバイトカウントの値(図4参照)を検出するものである。このバイトカウントの値は、バイトカウント総和カウンタ54に供給されると共に、パケットデータ保持レジスタ55に供給される。
【0112】
パケットデータ保持レジスタ55は、シフトレジスタの構成となっている。バイトカウント検出部51でリクエストのワードがヘッダのバイトカウントの値C0、C1、…が検出されると、この検出された各ヘッダのバイトカウントの値C0、C1、…がパケットデータ保持レジスタ55に順に蓄積される。
【0113】
バイトカウント総和カウンタ54は、リクエストのワードのヘッダのバイトカウントの値の総和を求めるものである。このバイトカウント総和カウンタ54で、バイトカウント検出部51でリクエストのワードがヘッダのバイトカウントの値が検出されると、それまでの値に、検出されたヘッダのバイトカウントの値が加算される。
【0114】
また、後に説明するように、FIFOメモリ23からヘッダのワードが読み出されると、シフトレジスタの構成とされたパケットデータ保持レジスタ55が右にシフトされ、パケットデータ保持レジスタ55から、各ヘッダのバイトカウントの値のうち最も先に蓄積されていた値C0が読み出される。パケットデータ保持レジスタ55からバイトカウントの値が読み出されると、パケットデータ保持レジスタ55から読み出されたバイトカウントの値C0だけ、バイトカウント総和カウンタ54値が減算される。
【0115】
フラグ検出部52は、各ワードの先頭の2ビットのフラグ(図2参照)を検出し、入力されたワードがヘッダか、データ又はエンドオブパケットかを判断している。フラグ検出部52の出力がFIFOメモリイメージレジスタ56に供給される。
【0116】
FIFOメモリイメージレジスタ56は、FIFOメモリ23の容量に対応する段数のシフトレジスタの構成とされている。FIFOメモリイメージレジスタ56には、入力されたワードがヘッダの場合には「1」が書き込まれ、データ又はエンドオブパケットの場合には「0」が書き込まれる。
【0117】
FIFOメモリ残量カウンタ53は、入力されたワード数から、FIFOメモリ23の残量を推定するものである。
【0118】
すなわち、FIFOメモリ残量カウンタ53は、送信バス10Aを介して入力されたワード数をカウントしており、FIFOメモリ23の総容量から、カウントされたワード数を減算することで、FIFOメモリ23の残量を推定している。また、FIFOメモリ読み出し判定部58の出力から、FIFOメモリ23の1ワードの読み出しが判定されると、FIFOメモリの残量の推定値が1ワード分増加される。
【0119】
FIFOメモリ残量カウンタ53の出力がFIFOメモリ残量比較部57に供給される。また、FIFOメモリ残量比較部57には、FIFOメモリ23から、実際のFIFOメモリ23の残量が供給される。
【0120】
FIFOメモリ残量比較部57で、FIFOメモリ残量カウンタ53で検出されたFIFOメモリ23の残量の推定値と、FIFOメモリ23から出力されたFIFOメモリ23の実際の残量とが比較される。FIFOメモリ残量比較部57の出力がFIFOメモリ読み出し判定部58に供給される。FIFOメモリ読み出し判定部58で、FIFOメモリ残量比較部57の出力から、FIFOメモリ23の読み出しがあったか否かが判定される。
【0121】
すなわち、FIFOメモリ23には、送信バス10Aを介して、クライアントデバイス11、12、13から送られてきたリクエストのワードが蓄積される。また、FIFOメモリ残量カウンタ53は、送信バス10Aを介して入力されたリクエストのワード数をカウントし、FIFOメモリ23の総容量から減算している。したがって、FIFOメモリ23の読み出しが発生していなければ、FIFOメモリ残量カウンタ53で検出されるFIFOメモリ23の残量の推定値と、FIFOメモリ23から出力されるFIFOメモリ23の実際の残量とは一致するはずである。
【0122】
これに対して、FIFOメモリ23の読み出しが発生し、FIFOメモリ23の出力がメモリコントローラ14に送られると、データが読み出された分だけ、FIFOメモリ23の実際の残量は多くなるが、FIFOメモリ残量カウンタ53で検出されるFIFOメモリ23の残量の推定値はそのままである。
【0123】
このことから、FIFOメモリ残量カウンタ53で検出されたFIFOメモリ23の残量の推定値と、FIFOメモリ23から出力されたFIFOメモリ23の実際の残量とを比較し、FIFOメモリ23から出力されたFIFOメモリ23の実際の残量の方が、FIFOメモリ残量カウンタ53で検出されたFIFOメモリ23の残量の推定値よりも大きい場合には、FIFOメモリ23の読み出しが発生したと判断できる。FIFOメモリ読み出し判定部58は、FIFOメモリ残量カウンタ53で検出されたFIFOメモリ23の残量の推定値と、FIFOメモリ23から出力されたFIFOメモリ23の実際の残量との比較結果から、FIFOメモリ23の読み出しが発生したことを判断している。
【0124】
FIFOメモリ読み出し判定部58の出力は、FIFOメモリ残量カウンタ53に供給されると共に、FIFOメモリイメージレジスタ56に供給される。
【0125】
FIFOメモリ読み出し判定部58の出力から、FIFOメモリ23から1ワードの読み出しが発生したと判断されたら、FIFOメモリ残量カウンタ53のカウント値が1ワード分減少され、FIFOメモリ23残量の推定値が1ワード増加され、FIFOメモリ残量カウンタ53で求められるFIFOメモリ23の推定値と、FIFOメモリ23から出力されるFIFOメモリ23の実際の残量とが一致される。
【0126】
また、FIFOメモリ読み出し判定部58の出力から、FIFOメモリ23から1ワードの読み出しが発生したと判断されると、シフトレジスタの構成とされているFIFOメモリイメージレジスタ56が1ビット右にシフトされる。そして、FIFOメモリイメージレジスタ56から、最も先に蓄積されていた値が読み出される。このFIFOメモリイメージレジスタ56の出力がヘッダ/データ判定部59に供給される。
【0127】
前述したように、FIFOメモリイメージレジスタ56には、入力されたワードがヘッダの場合には「1」が書き込まれ、データ又はエンドオブパケットの場合には「0」が書き込まれている。FIFOメモリ読み出し判定部58の出力から、FIFOメモリ23から1ワードの読み出しが発生したことが検出されると、FIFOメモリイメージレジスタ56から、最も先に蓄積されていた値が読み出される。この値は、FIFOメモリ23から読み出されたワードが、ヘッダか、データ又はエンドオブパケットかを示している。
【0128】
ヘッダ/データ判定部59は、FIFOメモリイメージレジスタ56からの出力が「0」か「1」かにより、FIFOメモリ23から読み出されたワードが、ヘッダか、データ又はエンドオブパケットかを判断している。このヘッダ/データ判定部59の出力がパケットデータ保持レジスタ55に供給される。
【0129】
FIFOメモリイメージレジスタ56の出力が「1」で、FIFOメモリ23から読み出されたワードがヘッダであると判断された場合には、パケットデータ保持レジスタ55が1ビット右にシフトされ、パケットデータ保持レジスタ55から、各ヘッダのバイトカウントの値のうち最も先に蓄積されていた値C0が読み出される。この値C0は、FIFOメモリ23から読み出されたワードがヘッダである場合に、そのヘッダのバイトカウントの値を示している。パケットデータ保持レジスタ55からバイトカウントの値C0が読み出されると、バイトカウント総和カウンタ54のそれまでの値から、パケットデータ保持レジスタ55から読み出されたバイトカウントの値C0が減算される。
【0130】
このように、バイトカウント総和カウンタ54の値は、メモリバス10の送信バス10Aを介してヘッダのワードが入力されると、そのヘッダのバイトカウントの値だけ加算され、FIFOメモリ23からヘッダのワードがメモリコントローラ14に読み出されると、その読み出されたヘッダのバイトカウントの値だけ減算される。したがって、バイトカウント総和カウンタ54の値は、FIFOメモリ23に蓄積されているデータのうちのヘッダにあるバイトカウントの値の総和と等しくなる。
【0131】
バイトカウント総和カウンタ54の出力がストップ信号発生部60に供給される。ストップ信号発生部60には、所定のしきい値が与えられる。ストップ信号発生部60で、バイトカウント総和カウンタ54の出力と所定のしきい値とが比較され、バイトカウント総和カウンタ54の出力が所定のしきい値を越えると、ストップ信号発生部60からストップ信号が出力される。
【0132】
以上説明したように、この発明の実施の形態では、FIFOメモリ23に蓄積されているリクエストのアクセスカウント数(バイトカウント)の総和をモニタするアクセス数総和カウントモニタ回路26が設けられる。そして、FIFOメモリ23に蓄積されているヘッダのワードに含まれているアクセス数の総和がしきい値以上になったら、アービタ16にストップ信号が送られ、クライアントデバイス11、12、13からのメモリ15へのアクセスが制限される。これにより、リードの場合でもライトの場合でも、デバイスがリクエストを送ってから処理が行われるまでのレイテンシを保証することができる。
【0133】
また、この発明の実施の形態では、入力されるワードのカウント値から推定されるFIFOメモリ23の残量と、FIFOメモリ23の実際の残量とを比較部57で比較し、この比較値からFIFOメモリ23に読み出しがあったことを検出している。このような構成では、メモリバス10からFIFOメモリ23に送られてくるワードのクロック(FIFOメモリ23の入力クロック)と、メモリコントローラ14からメモリ15をアクセスするときのワードのクロック(FIFOメモリ23の出力クロック)との周波数関係に依存しない構成とすることができる。
【0134】
つまり、FIFOメモリ23内に存在するパケットの処理にかかるクロック数を管理する方法としては、FIFOメモリ12の入力側及び出力側で、ヘッダのワードに含まれているアクセス数を常に監視し、ヘッダが入力されたらそのアクセス数を加算し、ヘッダが出力されたらそのアクセス数を減算するようにして、アクセス数の総和を求めるようにすることが考えられる。そのためには、FIFOメモリ23の入力側と出力側にそれぞれモニタ回路を持ち、これらの回路の出力に応じて、カウンタを増減させるようにする必要がある。FIFOメモリ23の入力側と出力側とが同一のクロックなら、そのような回路は実現できる。
【0135】
ところが、FIFOメモリ23の入力側と出力側とで周波数が異なっていると、アクセス数の総和を求めるカウンタを入力側に持つと、出力側でワードがFIFOメモリ23から出力されたことを示す信号及びそのアクセス数の値をクロック乗り換えを行って入力側に伝える必要がある。ここで、FIFOメモリ23の入力クロックと、FIFOメモリ23の出力クロックとの周波数関係は、どちらが高速であるとは言えない。このように、双方のクロックの大小関係が分からないクロックの乗せ換えは困難である。
【0136】
この実施の形態では、このようなクロックの乗せ換えが不要なので、FIFOメモリ23の入力クロックと、FIFOメモリ23の出力クロックとの周波数関係に依存しない構成とすることができる。
【0137】
なお、上述の例では、画像処理チップのシステムを構成する場合について説明したが、この発明は、複数のクライアントで1つのリソースを共用するようなシステムでは、同様に適用することが可能である。
【0138】
また、上述の実施の形態では、FIFOメモリ23に蓄積されているリクエストのアクセスカウント数の総和をモニタするアクセス数総和カウントモニタ回路26と、FIFOメモリ23の残量をモニタするFIFOメモリ残量モニタ25とを設ける構成としているが、アクセス数総和カウントモニタ回路26では、FIFOメモリ23の残量がモニタされているので、FIFOメモリ残量モニタ25を特に設ける必要はない。アクセス数総和カウントモニタ回路26で、FIFOメモリ23に蓄積されているリクエストのアクセスカウント数の総和と、FIFOメモリ23の残量とに応じて、ストップ信号が出力されるように構成しても良い。
【0139】
【発明の効果】
この発明によれば、アクセス総和カウントモニタ回路で、ヘッダのバイトカウントの総和が求められる。そして、このヘッダのバイトカウントの総和が所定のしきい値以上になると、アクセス総和カウントモニタ回路からストップ信号が出力される。このストップ信号がアクセス総和カウントモニタ回路からアービタに供給される。アービタは、FIFOメモリ残量モニタからストップ信号が送られてきたら、リクエストの調停を中止する。これにより、クライアントデバイスのメモリへのアクセスが制限される。
【0140】
このように、FIFOメモリに蓄積されているリクエストのアクセスカウント数の総和をモニタするアクセス総和カウントモニタ回路が設けられ、アクセスカウントの総和が所定のしきい値以上になると、アクセス総和カウントモニタ回路からストップ信号がアービタに送られ、リクエストの調停が中止されるため、メモリバスのレイテンシを保証できる。
【0141】
また、この発明では、入力されるワードのカウント値から推定されるFIFOメモリの残量と、FIFOメモリの実際の残量とを比較し、この比較値からFIFOメモリに読み出しがあったことを検出している。このような構成では、メモリバスからFIFOメモリに送られてくるワードのクロックと、メモリコントローラからメモリをアクセスするときのワードのクロックとの周波数関係に依存しない構成とすることができる。
【図面の簡単な説明】
【図1】この発明が適用された複数のクライアントデバイスとリソースとからなるシステムの一例のブロック図である。
【図2】バスに転送されるパケットの各ワードの説明に用いる略線図である。
【図3】バスに転送されるパケットのデータの説明に用いる略線図である。
【図4】バスに転送されるパケットのヘッダの説明に用いる略線図である。
【図5】アドレシングモードの一例の説明に用いる略線図である。
【図6】アドレシングモードの一例の説明に用いるタイミング図である。
【図7】アドレシングモードの一例の説明に用いる略線図である。
【図8】送信バスに送られるパケットの説明に用いる略線図である。
【図9】受信バスに送られるパケットの説明に用いる略線図である。
【図10】この発明が適用された複数のクライアントデバイスとリソースとからなるシステムの一例の説明に用いるブロック図である。
【図11】この発明が適用された複数のクライアントデバイスとリソースとからなるシステムの一例の説明に用いるタイミング図である。
【図12】アクセス数総和カウントモニタ回路の一例のブロック図である。
【図13】従来の複数のクライアントデバイスとリソースとからなるシステムの一例のブロック図である。
【図14】従来の複数のクライアントデバイスとリソースとからなるシステムの他の例のブロック図である。
【符号の説明】
10・・・メモリバス、10A・・・送信バス、10B・・・受信バス、 11、12、13・・・クライアントデバイス、14・・・メモリコントローラ、15・・・メモリ、16・・・アービタ、21A〜21C、22A〜22C、23、24・・・FIFOメモリ、25・・・FIFOメモリ残量モニタ、26・・・アクセス数総和カウントモニタ回路、51・・・バイトカウント検出部、52・・・フラグ検出部、53・・・FIFOメモリ残量カウンタ、54・・・バイトカウント総和カウンタ、55・・・パケットデータ保持レジスタ、56・・・FIFOメモリイメージレジスタ、57・・・残量比較部、60・・・ストップ信号発生部
Claims (5)
- 複数のクライアントデバイスと、
上記複数のクライアントデバイスで共用されるリソースと、
上記リソースを制御するリソース制御手段と、
上記複数のクライアントデバイスと上記リソースとの間でデータを送受信するバスと、
上記各クライアントデバイスから上記バスを介して転送されてきたリクエストを一旦蓄積し、上記リソース制御手段に読み出すバッファ手段と、
上記バッファ手段に蓄積されている上記リクエストに含まれるアクセスカウント情報を抽出し、上記バッファ手段に蓄積されている上記リクエストに含まれるアクセスカウント情報の総和を求めるアクセスカウント数総和算出手段と、
上記バッファ手段に蓄積されている上記リクエストに含まれるアクセスカウント情報の総和が所定のしきい値を越えたら、上記クライアントデバイスのアクセスを制限するようにする手段と
を備え、
上記アクセスカウント数総和算出手段は、
上記バッファ手段に蓄積されているリクエストのアクセスカウント情報の総和をカウントする総和カウンタと、
上記バスから上記バッファ手段にリクエストが入力されたら、上記リクエストからアクセスカウントの値を検出し、上記アクセスカウントの値をそれまでの上記総和カウンタの値に加算する手段と、
上記バスからリクエストが入力されたら、上記リクエストのワードからアクセスカウントの値を検出し、上記アクセスカウントの値を保持するデータ保持手段と、
上記バスから入力されるデータ量のカウント値から推定される上記バッファの残量の推定値と上記バッファ手段の実際の残量とを比較して、上記バッファ手段からのデータの読み出しがあったとことを判断するバッファ読み出し判断手段と、
上記バッファ手段からリクエストのワードが読み出されたと判断されたら、上記バッファ手段から読み出されたリクエストのワードのアクセスカウントの値に対応する値を上記データ保持手段から読み出し、上記データ保持手段から読み出された値を上記総和カウンタの値から減算する手段と
を備えるようにしたデータ転送システム。 - 上記複数のクライアントデバイスと上記リソースとの間では、パケット構造でデータが転送される請求項1に記載のデータ転送システム。
- 上記アクセスカウント情報は、リクエストに付加されているバイトカウントである請求項1に記載のデータ転送システム。
- 上記アクセスカウント情報は、リクエストに付加されているワードカウントである請求項1に記載のデータ転送システム。
- 複数のクライアントデバイスで共用されるリソースを制御するリソース制御手段と、上記複数のクライアントデバイスと上記リソースとの間でデータを送受信するバスとの間のバッファ手段に蓄積されているリクエストのアクセスカウント情報の総和をカウントする総和カウンタと、
上記バスから上記バッファ手段にリクエストが入力されたら、上記リクエストからアクセスカウントの値を検出し、上記アクセスカウントの値をそれまでの上記総和カウンタの値に加算する手段と、
上記バスからリクエストが入力されたら、上記リクエストのワードからアクセスカウントの値を検出し、上記アクセスカウントの値を保持するデータ保持手段と、
上記バスから入力されるデータ量のカウント値から推定される上記バッファの残量の推定値と上記バッファ手段の実際の残量とを比較して、上記バッファ手段からのデータの読み出しがあったとことを判断するバッファ読み出し判断手段と、
上記バッファ手段からリクエストのワードが読み出されたと判断されたら、上記バッファ手段から読み出されたリクエストのワードのアクセスカウントの値に対応する値を上記データ保持手段から読み出し、上記データ保持手段から読み出された値を上記総和カウンタの値から減算する手段と、
上記総和カウンタによりカウントされるアクセスカウントの総和の値と所定のしきい値とを比較し、上記総和カウンタアクセスの総和の値が所定のしきい値を越えたら、ストップ信号を出力する手段と
を備えるようにしたアクセスモニタ装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002145648A JP4126959B2 (ja) | 2002-05-21 | 2002-05-21 | データ転送システム、およびアクセスモニタ装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002145648A JP4126959B2 (ja) | 2002-05-21 | 2002-05-21 | データ転送システム、およびアクセスモニタ装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003337741A JP2003337741A (ja) | 2003-11-28 |
JP4126959B2 true JP4126959B2 (ja) | 2008-07-30 |
Family
ID=29704872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002145648A Expired - Fee Related JP4126959B2 (ja) | 2002-05-21 | 2002-05-21 | データ転送システム、およびアクセスモニタ装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4126959B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7631144B1 (en) * | 2004-09-13 | 2009-12-08 | Datadomain, Inc. | Write latency efficient storage system |
JP4699858B2 (ja) * | 2005-10-13 | 2011-06-15 | シャープ株式会社 | メモリ装置およびメモリ制御方法 |
JP5307755B2 (ja) * | 2010-03-31 | 2013-10-02 | 三菱電機株式会社 | サイクリック通信同期方式 |
JP6127872B2 (ja) * | 2013-09-27 | 2017-05-17 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US10996888B2 (en) * | 2017-10-31 | 2021-05-04 | Qualcomm Incorporated | Write credits management for non-volatile memory |
WO2021111583A1 (ja) | 2019-12-05 | 2021-06-10 | オリンパス株式会社 | データ転送装置およびデータ転送方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3317873B2 (ja) * | 1997-05-07 | 2002-08-26 | 甲府日本電気株式会社 | データ転送制御装置 |
-
2002
- 2002-05-21 JP JP2002145648A patent/JP4126959B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003337741A (ja) | 2003-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR950006565B1 (ko) | 통신제어장치 | |
US7457892B2 (en) | Data communication flow control device and methods thereof | |
US7849214B2 (en) | Packet receiving hardware apparatus for TCP offload engine and receiving system and method using the same | |
US6633926B1 (en) | DMA transfer device capable of high-speed consecutive access to pages in a memory | |
JP2007525876A (ja) | デジタル・カメラにおけるメモリ・アクセス帯域幅割付けおよびレイテンシ制御 | |
US20130046933A1 (en) | Storing data in any of a plurality of buffers in a memory controller | |
US6782433B2 (en) | Data transfer apparatus | |
JP4090883B2 (ja) | 異なるリソースアクセス方式を有するシステム統合エージェント | |
JP4126959B2 (ja) | データ転送システム、およびアクセスモニタ装置 | |
KR100288177B1 (ko) | 메모리 액세스 제어 회로 | |
US6101613A (en) | Architecture providing isochronous access to memory in a system | |
JP2000057318A (ja) | 動画像復号方法及び装置 | |
JPH1198099A (ja) | データ多重化方法および装置 | |
US7529857B2 (en) | Data processing apparatus and data transfer control method | |
JP2010287239A (ja) | リアルタイムストリーミングのための装置及びバス制御方法 | |
US20050210163A1 (en) | Memory control apparatus | |
JP4428779B2 (ja) | データ多重装置 | |
JP4850504B2 (ja) | 信号処理装置、撮像装置およびデータ転送方法 | |
JPH1040215A (ja) | Pciバス・システム | |
US9892088B2 (en) | Data processing system and method of controlling access to a shared memory unit | |
US7159084B1 (en) | Memory controller | |
US7899957B1 (en) | Memory controller having a buffer for providing beginning and end data | |
JP3618249B2 (ja) | データ転送装置 | |
US6785795B1 (en) | Data processing device for use in cooperation with a memory | |
JP4335327B2 (ja) | 調停装置および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050407 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080123 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080129 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080331 |
|
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: 20080422 |
|
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: 20080505 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110523 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110523 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |