(57)【要約】【課題】データ転送のアクセスレイテンシを最適値に設定し、データ転送の処理効率を向上させる。【解決手段】バスマスタ１４が接続された複数のバス１７を有するバスシステム１１と、バスシステム１１に接続されバスマスタ１４とメモリ１２との接続を制御するメモリコントローラ１３とを有し、バスシステム１１は、バスマスタ１４からメモリ１２へのアクセス要求Ｒｅｑを行った時からバスマスタ１４とメモリコントローラ１３の接続が確立するまでの待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）をカウントするカウンタ１６を有し、メモリコントローラ１３は、カウンタ１６によってカウントされた待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）に基づいてバスマスタ１４のメモリ１２へのアクセスを制御する。【選択図】図１
2009025866.tif 000002
【特許請求の範囲】
【請求項１】
バスにバスマスタが接続されたバスシステムと、
前記バスシステムに接続され前記バスマスタとメモリとの接続を制御するメモリコントローラとを有し、
前記バスシステムは、前記バスマスタが前記メモリへのアクセス要求を行った時から前記バスマスタと前記メモリコントローラの接続が確立するまでの待ち時間をカウントするカウンタを有し、
前記メモリコントローラは、前記カウンタによってカウントされた前記待ち時間に基づいて前記バスマスタの前記メモリへのアクセスを制御する
集積回路。
【請求項２】
前記カウンタは、前記バスマスタ毎に設けられている
請求項１記載の集積回路。
【請求項３】
前記バスシステムは、
階層的に接続された第１バス及び第２バスと、
前記第１バスと前記第２バスとの間に介され、前記第１バスと前記第２バスとの接続を制御するブリッジコントローラと、を有し、
前記第１バスに接続された前記バスマスタは、前記第１バス及び前記第２バスを介して前記メモリコントローラに接続され、
前記カウンタは、
前記第１バスに接続された前記バスマスタが前記メモリに対してアクセス要求を行ったときから、前記第１バスを介して前記バスマスタと前記ブリッジコントローラとの接続が確立するまでの時間をカウントする第１カウンタと、
前記第１バスに接続された前記バスマスタと前記ブリッジコントローラとの接続が確立したときに前記第１カウンタに保持されたカウント値を初期値として取り込んでカウントを開始し、前記ブリッジコントローラが第２バスに接続された前記メモリコントローラとの接続が確立するまでカウントする第２カウンタとを有する
請求項１又は２記載の集積回路。
【請求項４】
前記第２バスは、複数のバスが階層的に接続された階層構造を有し、
前記第２カウンタは、階層的に複数設けられ、カウント値を伝達して累積するカウンタ群である
請求項３記載の集積回路。
【請求項５】
前記第１カウンタ及び前記第２カウンタのうち少なくとも一方は、前記バスマスタに設けられている
請求項３又は４記載の集積回路。
【請求項６】
前記第１カウンタは前記第１バスに設けられ、及び／又は、前記第２カウンタは前記第２バスに設けられている
請求項３乃至５のうちいずれか１項に記載の集積回路。
【請求項７】
前記メモリコントローラは、前記カウンタによってカウントされた待ち時間を入力するレイテンシ制御タイマと、前記バスマスタの前記メモリへのアクセスの優先順位を設定するアービタとを備え、
前記レイテンシ制御タイマは、
予め設定されたデータ転送の最大待ち時間が記憶された最大待ち時間管理テーブルに記憶された前記最大待ち時間、及び前記カウンタによってカウントされた前記待ち時間に基づいて、前記バスマスタがデータ転送を行うリミットであるデータ転送補償時間を設定する演算回路と、
前記データ転送補償時間を超過したときに、当該データ転送補償時間を超過した前記バスマスタの前記メモリへのアクセスの優先順位を変更するよう前記アービタに対し制御信号を出力するレイテンシタイマと、を有する
請求項１乃至６のうちいずれか１項に記載の集積回路。
【請求項８】
前記最大待ち時間管理テーブルは、前記バスが接続されるバスインタフェース毎に前記最大待ち時間が設定されている
請求項７記載の集積回路。
【請求項９】
バスマスタとメモリとの接続を制御するメモリコントローラに接続されたバスシステムであって、
バスマスタが前記メモリに対してアクセス要求を行ってから、当該バスマスタと前記メモリコントローラとの接続が確立するまでの待ち時間をカウントするカウンタを有する
バスシステム。
【請求項１０】
前記バスシステムは、
階層的に接続された第１バス及び第２バスと、
前記第１バスと第２バスとの間に介され、前記第１バスと前記第２バスとの接続を制御するブリッジコントローラと、を有し、
前記第１バスに接続された前記バスマスタは、前記第１バス及び前記第２バスを介して前記メモリコントローラに接続され、
前記カウンタは、
前記第１バスに接続された前記バスマスタが前記メモリに対してアクセス要求を行ったときから、前記第１バスを介して前記バスマスタと前記ブリッジコントローラとの接続が確立するまでの時間をカウントする第１カウンタと、
前記第１バスに接続された前記バスマスタと前記ブリッジコントローラとの接続が確立したときに前記第１カウンタに保持されたカウント値を初期値として取り込んでカウントを開始し、前記ブリッジコントローラが第２バスに接続された前記メモリコントローラとの接続が確立するまでカウントする第２カウンタとを有する
請求項９記載のバスシステム。
【請求項１１】
バスマスタが接続された複数のバスを有するバスシステムに接続されたメモリコントローラであって、
前記バスマスタがメモリに対してアクセス要求を行ってから、前記バスマスタと当該メモリコントローラが接続されるまでの待ち時間を前記バスシステムより入力するレイテンシ制御タイマと、
前記バスシステムより入力される前記待ち時間に基づいて、前記バスマスタの前記メモリへのアクセスの優先順位を設定するアービタとを有する
メモリコントローラ。
【請求項１２】
前記レイテンシ制御タイマは、
予め設定されたデータ転送の最大待ち時間が記憶された最大待ち時間管理テーブルに記憶された前記最大待ち時間及び前記待ち時間に基づいて前記バスマスタがデータ転送を行うリミットであるデータ転送補償時間を設定する演算回路と、
前記データ転送補償時間を超過したときに、当該データ転送補償時間を超過した前記バスマスタの前記メモリへのアクセスの優先順位を変更するよう前記アービタに対し制御信号を出力するレイテンシタイマとを有する
請求項１１記載のメモリコントローラ。
【請求項１３】
前記メモリコントローラは、前記バスが接続されたバスインタフェースを備え、
前記レイテンシ制御タイマは、複数の前記バスインタフェースと接続が確立している前記バスマスタの前記待ち時間を統括して管理する
請求項１２記載のメモリコントローラ。
【請求項１４】
前記メモリコントローラは、前記バスが接続されたバスインタフェースを備え、
前記レイテンシ制御タイマは、前記バスインタフェース毎に設けられている
請求項１２記載のメモリコントローラ。
【請求項１５】
バスにバスマスタが接続されたバスシステムと、前記バスシステムに接続され前記バスマスタとメモリとの接続を制御するメモリコントローラとを有する集積回路の制御方法であって、
前記バスマスタが前記メモリに対してアクセス要求を行ってから、当該バスマスタと前記メモリコントローラとの接続が確立するまでの待ち時間をカウントし、
カウントされた前記待ち時間に基づいて、前記バスマスタのメモリアクセスを制御する
集積回路の制御方法。
【請求項１６】
前記バスシステムは、階層的に接続された第１バス及び第２バスと、前記第１バスと第２バスとの間に介され、前記第１バスと前記第２バスとの接続を制御するブリッジコントローラと、を有し、
前記第１バスに接続された前記バスマスタが前記アクセス要求を行ってから、前記第１バスに接続されたバスマスタと、前記ブリッジコントローラとの接続が確立されるまでの第１待ち時間をカウントし、
前記第１バスに接続された前記バスマスタと前記ブリッジコントローラとの接続が確立してから、前記ブリッジコントローラと前記メモリコントローラとの接続が確立するまでの第２待ち時間をカウントし、
前記第１待ち時間と前記第２待ち時間を累積した時間を、前記バスマスタが前記メモリに対してアクセス要求を行ってから、当該バスマスタと前記メモリコントローラとの接続が確立するまでの前記待ち時間として前記メモリコントローラに出力する
請求項１５記載の集積回路の制御方法。
【請求項１７】
予め前記バスマスタ毎に設定されたデータ転送の最大待ち時間とカウントされた前記待ち時間に基づいて前記バスマスタがデータ転送を行うリミットであるデータ転送補償時間を設定し、
前記データ転送補償時間が超過したときに当該バスマスタを優先的に前記メモリに接続する
請求項１５又は１６記載の集積回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスマスタのメモリアクセスを制御するメモリコントローラ、及びこのメモリコントローラを有する集積回路に関する。
【背景技術】
【０００２】
近年、ＬＳＩに内蔵されるシステムの大規模化に伴い、バスを介してメインメモリへアクセスするバスマスタの数が増大している。多数のバスマスタをメモリに接続する方法としては、バスを階層化する方法や、メモリコントローラの入出力ポートを多ポート化する方法がある。
【０００３】
メモリコントローラは、複数のバスマスタからのメモリへのアクセス要求を調停し、バスマスタのメモリへのアクセス権を各バスマスタに順次付与してアービトレーションを行う。このアービトレーションは、接続されるメモリ仕様・特性に応じて、複数のバスマスタからのメモリとのデータ転送の処理効率が最大になるように、言い換えればメモリとのスループットが最大になるように行われる。例えば、マルチバンクのＤＲＡＭ(Dynamic Random Access Memory)コントローラは、複数のアクセス要求をキューとして管理し、メモリのリード／ライト動作の切替えが少なくなるように、かつバンクコンフリクトを回避するようにバスマスタに付与するアクセス権の優先順位を設定するアービトレーションを行うことで、メモリとのデータ転送の処理効率を向上させている。
【０００４】
例えば、音声や映像などのデータを利用する電気機器にＬＳＩが搭載される場合にあっては、ＬＳＩで処理される音声や映像のデータ転送の速度は、当該電気機器を使用するユーザの使用感に直接影響する。そのため、ＬＳＩに搭載されるメモリコントローラでは、バスマスタとメモリとの間で音声や映像といったデータを転送する際には、バスマスタからメモリに対してアクセス要求を行ってから実際にデータ転送されるまでの時間を一定時間以内に補償しなければならい。特許文献１及び非特許文献１には、データ転送を行うリミットであるデータ転送補償時間を設定し、データ転送補償時間以内にデータ転送を行うよう構成されたメモリコントローラ及びメモリコントローラの制御方法が開示されている。
【０００５】
特許文献１には、データ転送の送信側と受信側の最適な待ち時間を設定するために、送信側と受信側の間に介されたバスの周波数の変化に応じてデータ転送補償時間を設定することが開示されている。非特許文献１には、バスマスタから受け取ったリードアクセス要求に対し、バス遅延の最大値を見込んでデータ転送補償時間を設定し、データ転送補償時間が超過してもリードアクセスが実行されなかった場合には、データ転送補償時間が超過したリードアクセス要求を優先的に処理することが開示されている。
【特許文献１】特開平９−２５９０８０号公報
【非特許文献１】Prime Cell Dynamic Memory Controller (PL340) r0p0 Technical Reference Manual Ref:DD10331C,２００５年１１月１６日、［online］、［検索日：２００７年４月４日］,＜ＵＲＬ：http://www.arm.com/products/solutions/PrimeCellMemCtrl.html＞
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載されたメモリコントローラにおいて、複数のバスマスタがバスに対して接続要求を行うと、バスへのアクセスが混み合い、バスマスタがメモリへのアクセス要求を行ってからバスマスタとメモリコントローラとの接続が確立するまでの時間が変化する。特許文献１に記載されたメモリコントローラでは、データ転送補償時間をバス周波数に基づいて一意に決定しており、バスの使用状態がデータ転送補償時間の設定に反映されていない。そのため、特許文献１に記載されたメモリコントローラでは、データ転送補償時間が実際のシステムにおける最適値に設定されないという問題点を有する。
【０００７】
また、非特許文献１に記載されたメモリコントローラの制御方法では、メモリへのアクセス要求に対して、バス遅延の最長の遅延時間を見込んでデータ転送補償時間を設定する必要がある。そのため、非特許文献１に記載されたメモリコントローラの制御方法では、必要以上にデータ転送補償時間を短時間に設定することとなる。データ転送補償時間が短く設定されることにより、データ転送補償時間を過ぎるとアービタに対して入力されるタイムアウト信号が頻繁に入力されることになる。一般に、メモリアクセスのアービトレーションを行うアービタは、メモリとのデータ転送の処理効率を最大にするアービトレーションを行うが、前記のタイムアウト信号が頻繁に入力されることにより、メモリとのデータ転送の処理効率を最大にするアービトレーションが頻繁に中断されることになる。これにより、メモリコントローラのデータ転送の処理効率が低下するという問題点を有する。
【課題を解決するための手段】
【０００８】
本発明に係る集積回路は、バスマスタからメモリへのアクセス要求を受け取り前記バスマスタの前記メモリへのアクセスを制御するメモリコントローラを有する集積回路であって、前記バスマスタからメモリへのアクセス要求を行った時から前記バスマスタと前記メモリコントローラの接続が確立するまでの待ち時間をカウントするカウンタと、カウントされた前記待ち時間に基づき前記バスマスタの前記メモリへのアクセスを制御するメモリコントローラとを有するものである。
【０００９】
本発明に係る集積回路によれば、バスマスタがメモリへのアクセス要求を行ってから当該バスマスタとメモリコントローラとの接続が確立するまでの待ち時間をカウントし、この待ち時間に基づいてバスマスタのメモリアクセスを制御することにより、実際にバスマスタがメモリコントローラに接続されるまでの待ち時間を考慮し、データ転送補償時間を最適値に設定することができる。
【発明の効果】
【００１０】
本発明に係る集積回路によれば、集積積回路のデータ転送の処理効率を向上させることができる。
【発明を実施するための最良の形態】
【００１１】
以下、添付した図面を参照して本発明の実施の形態について説明する。
［第１の実施形態］
図１は、本発明の第１の実施形態に係る集積回路１０の一構成例を示すブロック図である。集積回路１０は、バスマスタ１４からメモリ１２へのアクセス要求Ｒｅｑを受け取りバスマスタ１４のメモリ１２へのアクセスを制御するメモリコントローラ１３を有する集積回路１０であって、バスマスタ１４からメモリ１２へのアクセス要求Ｒｅｑを行った時からバスマスタ１４とメモリコントローラ１３の接続が確立するまでの待ち時間Ｔをカウントするカウンタ１６と、カウンタ１６によりカウントされた待ち時間Ｔに基づきバスマスタ１４のメモリ１２へのアクセスを制御するメモリコントローラ１３とを有している。
【００１２】
第１の実施形態に係る集積回路１０の特徴は、バス１７にバスマスタ１４が接続されたバスシステム１１において、バスマスタ１４がアクセス要求Ｒｅｑを行ってから、バスマスタ１４とメモリコントローラ１３との接続が確立するまでの待ち時間をカウントするカウンタ１６を設けた点にある。これにより、メモリコントローラ１３において、カウンタ１６によってカウントされた待ち時間Ｔを考慮して、バスマスタ１４のメモリ１２への接続の優先順位を設定することができる。カウンタ１６は、図１に示すように、バスマスタ１４とメモリ１２との間の接続パス上に複数散在して配置されている。すなわち、カウンタ１６は、この複数のカウンタを総称したものである。
【００１３】
図１に示すように、集積回路１０は、バスシステム１１、メモリ１２、及びメモリコントローラ１３を備えて構成されている。バスシステム１１は、データの伝送路となる複数のバス１７を有し、バス１７の一部又は全部が階層的に接続されている。すなわち、バスシステム１１は、バスが階層的に接続されたマルチレイヤ構造を有している。図１では、バスの階層を最大で２段としているが、バスの階層数はこれに限定されるものではない。メモリ１２は、例えば、ＤＲＡＭ（Ｄｙｎａｎｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、集積回路１０のメインメモリである。メモリコントローラ１３は、バス１７に接続されたそれぞれのバスマスタ１４からアクセス要求Ｒｅｑを受け取り、複数のバスマスタ１４のメモリ１２へのアクセスを統括制御するよう構成されている。
【００１４】
バスシステム１１は、複数のバス１７を有している。それぞれのバス１７を識別するためにバスＸ、Ｙ、Ｚと示す。バスＸは、ブリッジコントローラ１５を介してバスＹに接続されている。バスＹは、ブリッジコントローラ１５を介してバスＸに接続されると共に、メモリコントローラ１３に接続されている。バスＺは、他のバスに接続されていない単層のバスであり、メモリコントローラ１３に直接接続されている。
【００１５】
バス１７には、バスマスタ１４と、バスマスタ１４の動作に従属して動作するスレーブ１８がそれぞれ接続されている。なお、バスＹ、バスＺに接続されたバスマスタＹ０、Ｙ１、Ｚのスレーブは、スレーブＭ０、及びスレーブＭ１としてメモリコントローラ１３に設けられている。バスシステム１１の上位に接続されたバスマスタ１４からアクセス要求Ｒｅｑがあると、バスシステム１１の下位に接続されたスレーブは、このアクセス要求Ｒｅｑを更に下位に接続されたバス１７やバスマスタ１４に伝達していく。
【００１６】
バスＸには、バスマスタＸ０、バスマスタＸ１が接続されている。バスマスタＸ０、バスマスタＸ１のスレーブとして、バスＸにブリッジコントローラ１５が接続されている。ブリッジコントローラ１５には、バスマスタＸ０、Ｘ１のスレーブとして動作するスレーブＹ０が設けられている。バスＹには、ブリッジコントローラ１５及びバスマスタＹ１が接続されている。ブリッジコントローラ１５及びバスマスタＹ１のスレーブとして、バスＹにはメモリコントローラ１３が接続されている。メモリコントローラ１３は、ブリッジコントローラ１５及びバスバスタＹ１のスレーブとして機能するスレーブＭ０を有している。バスＺには、バスマスタＺ０が接続されている。バスマスタＺ０のスレーブとして、バスＺにはメモリコントローラ１３が接続されている。メモリコントローラ１３は、バスマスタＺ０のスレーブとして機能するスレーブＭ１を有している。
【００１７】
バスマスタ１４は、接続されたバス１７に対してアクセス要求Ｒｅｑを転送してから、スレーブ１８との接続が確立されるまでの待ち時間Ｔをカウントするカウンタ１６をそれぞれ有している。ここで、要素Ａが要素Ｂと接続を確立するようアクセス要求Ｒｅｑを転送してから、要素Ａと要素Ｂとの接続が確立するまでの待ち時間を待ち時間Ｔ（要素Ａ−要素Ｂ）として示す。バスマスタＸ０は、バスＸに対してアクセス要求Ｒｅｑを転送してから、バスマスタＸ０とブリッジコントローラ１５との接続が確立するまでの待ち時間Ｔ（バスマスタＸ０−ブリッジコントローラ１５）をカウントするカウンタＸ０を有している。バスマスタＸ１は、待ち時間Ｔ（バスマスタＸ１−ブリッジコントローラ１５）をカウントするカウンタＸ１を有している。バスマスタＹ１は、待ち時間Ｔ（バスマスタＹ１−メモリコントローラ１３）をカウントするカウンタＹ１を有している。バスマスタＺ０は、待ち時間Ｔ（バスマスタＺ１−メモリコントローラ１３）をカウントするカウンタＺ０を有している。
【００１８】
カウンタ１６によってカウントされた待ち時間Ｔは、バスマスタ１４とバス１７との接続が確立すると、接続先のスレーブ１８、３７に転送される。スレーブ１８、３７は、待ち時間Ｔをそれぞれのスレーブ１８、３７の下位に接続されたバスマスタ１４、３８に転送する。たとえば、バスマスタＸ０のカウンタＸ０によってカウントされた待ち時間Ｔ（バスマスタＸ０−ブリッジコントローラ１５）は、バスマスタＹ０の有するカウンタＹ０に転送される。
【００１９】
１本のバス１７を介してメモリコントローラ１３に接続されるバスマスタＹ１やバスマスタＺ０の待ち時間Ｔ（バスマスタＹ１−メモリコントローラ１３）、待ち時間Ｔ（バスマスタＺ０−メモリコントローラ１３）は、メモリコントローラ１３に転送される。このメモリコントローラ１３に入力されたカウント値は、メモリコントローラ１３内のレイテンシ制御タイマ２２に入力される。一方、バスＸ、ブリッジコントローラ１５、バスＹを介してメモリコントローラ１３と接続されるバスマスタＸ０、Ｘ１については、待ち時間Ｔ（バスマスタＸ０−ブリッジコントローラ１５）、待ち時間Ｔ（バスマスタＸ１−ブリッジコントローラ１５）が、ブリッジコントローラ１５の有するカウンタＹ０に伝達される。カウンタＹ０は、カウンタＸ０、Ｘ１から伝達されたカウント値からカウントを開始し、バスコントローラ１５とメモリコントローラ１３との接続が確立するまでカウントする。カウンタＹ０によってカウントされたカウント値Ｙ０は、メモリコントローラ１３に伝達される。このカウント値は、メモリコントローラ１３のレイテンシ制御タイマ２２に転送される。
【００２０】
図２は、バス１７の一構成例を示すブロック図である。図２では、バスＸを例としてバス１７の一構成例について説明を行うものとする。バスＸは、アービタ３１、バスセレクタ３２、及びカウントセレクタ３３を有している。前述したようにバスＸには、上位にバスマスタＸ０、Ｘ１が接続され、下位にブリッジコントローラ１５が接続されている。バスマスタＸ０のカウンタＸ０によってカウントされた待ち時間Ｔ（バスマスタＸ０−ブリッジコントローラ１５）は、カウントセレクタ３３に入力されている。バスマスタＸ１のカウンタＸ１によってカウントされた待ち時間Ｔ（バスマスタＸ１−ブリッジコントローラ１５）は、カウントセレクタ３３に入力されている。
【００２１】
アービタ３１は、バスマスタＸ０、Ｘ１からアクセス要求ＲｅｑＸ０、ＲｅｑＸ１を入力し、アクセス要求ＲｅｑＸ０、ＲｅｑＸ１に対して優先順位を設定するよう構成されている。バスセレクタ３２は、アービタ３１から入力されるセレクト信号Ｍａｓｔｅｒ  Ｓｅｌに応じて、選択されたバスマスタＸ０又はＸ１に対応するバス情報Ｂｕｓ  ＩｎｆｏをスレーブＹ０に転送し、選択されたバスマスタＸ０又はＸ１をスレーブＹ０に接続するよう構成されている。バス情報Ｂｕｓ  Ｉｎｆｏとは、バスマスタがアクセスするアクセス先のメモリアドレス、バスサイクルの種類や転送されるデータ等である。カウントセレクタ３３は、アービタ３１から入力されるセレクト信号Ｍａｓｔｅｒ  Ｓｅｌに応じて、選択されたバスマスタＸ０（Ｘ１）のカウンタＸ０（Ｘ１）によって保持されたカウント値を、カウンタＹ０に出力するよう構成されている。なお、カウンタＸ０、Ｘ１によって保持されたカウント値は、待ち時間Ｔ（バスマスタＸ０−ブリッジコントローラ１５）、待ち時間Ｔ（バスマスタＸ１−ブリッジコントローラ１５）である。
【００２２】
このように構成されたバスＸでは、アービタ３１に、アクセス要求ＲｅｑＸ０、ＲｅｑＸ１が入力されると、アービタ３１は、アービトレーションを行う公知の制御理論に基づいてバス使用権を付与するバスマスタＸ１又はＸ０を選択し、選択したバスマスタＸ１又はＸ０に対して使用許可信号Ｇｎｔを送信する。ここで、アービタ３１が選択したバスマスタ１４がバスマスタＸ０であった場合には、バスマスタＸ０に対して使用許可信号ＧｎｔＸ０が出力される。これと同時に、アービタ３１は、選択したバスマスタＸ０を示すセレクト信号Ｍａｓｔｅｒ  Ｓｅｌをバスセレクタ３２及びカウントセレクタ３３に送信する。バスセレクタ３２は、アービタ３１から入力されたセレクト信号Ｍａｓｔｅｒ  Ｓｅｌに基づき、選択されたバスマスタＸ０に対応するバス情報Ｂｕｓ  Ｉｎｆｏ（Ｘ０）をスレーブＹ０に転送する。これにより、アービタ３１によって選択されたバスマスタＸ０とブリッジコントローラ１５（スレーブＹ０）との接続が確立される。
【００２３】
カウントセレクタ３３には、アービタ３１から入力されたセレクト信号Ｍａｓｔｅｒ  Ｓｅｌに基づき、選択されたバスマスタＸ０の待ち時間Ｔ（バスマスタＸ０−ブリッジコントローラ１５）を、スレーブＹ０に出力する。スレーブＹ０は、バスセレクタ３２からバス情報Ｂｕｓ  Ｉｎｆｏ（Ｘ０）を入力して保持し、保持したバス情報Ｂｕｓ  Ｉｎｆｏ（Ｘ０）をスレーブＹ０に直接接続されたバスマスタＹ０に転送する。また、スレーブＹ０は、カウントセレクタ３３から入力されたバスマスタＸ０の待ち時間Ｔ（バスマスタＸ０−ブリッジコントローラ１５）を、バスマスタＹ０のカウンタＹ０に出力する。カウンタＹ０は、この値を初期値に設定する。カウンタＹ０は、初期値として設定された待ち時間Ｔ（バスマスタＸ０−ブリッジコントローラ１５）からカウントを開始し、バスマスタＹ０とメモリコントローラ１３（図１）との接続が確立するまでカウントする。すなわち、カウンタＹ０は、初期値として入力した待ち時間Ｔ（バスマスタＸ０−ブリッジコントローラ１５）に、待ち時間Ｔ（ブリッジコントローラ１５−ブリッジコントローラ１５）を累積して加算する。カウンタＹ０の保持するカウント値は、バスマスタＸ０がアクセス要求Ｒｅｑを出力してから、バスマスタＸ０とメモリコントローラ１３との接続が確立するまでの待ち時間Ｔ（バスマスタＸ０−メモリコントローラ１３）である。
【００２４】
その後、図１に戻り、カウンタＹ０によってカウントされた待ち時間Ｔ（バスマスタＸ０−ブリッジコントローラ１５）、又は（バスマスタＸ１−ブリッジコントローラ１５）は、ブリッジコントローラ１５とメモリコントローラ１３との接続が確立されたときにメモリコントローラ１３に出力される。メモリコントローラ１３には、それぞれのインタフェース４０からバスマスタ１４が接続要求Ｒｅｑを行ってから、メモリコントローラ１３に接続されるまでの待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）が入力される。
【００２５】
なお、第１の実施形態では、カウンタＹ０でカウントされるカウント値Ｙ０は、待ち時間Ｔ（バスマスタＸ０−ブリッジコントローラ１５）と待ち時間Ｔ（ブリッジコントローラ１５−メモリコントローラ１３）を単純に加算するよう構成されているが、バスマスタ１４がメモリコントローラ１３に接続されるまでの待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）を取得するためには、加算以外の演算処理を用いて待ち時間Ｔを累積するよう構成することもできる。
【００２６】
メモリコントローラ１３に入力されるカウント値は、レイテンシ制御タイマ２２に入力される。レイテンシ制御タイマ２２には、最終的に、各バスマスタ１４が接続要求Ｒｅｑを行ってから、当該バスマスタ１４とメモリコントローラ１３との接続が確立するまでの待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）が保持されることとなる。レイテンシ制御タイマ２２には、バスマスタ１４とメモリコントローラ１３との間の接続経路となるバス１７やスレーブ１８においてカウントされた待ち時間Ｔの累積時間が保持される。
【００２７】
図１に示すように、メモリコントローラ１３は、バスＹ、バスＺが接続されるバスインタフェース４０、バスインタフェース４０とメモリ１２との接続を制御するバスコントローラ２０、及び、待ち時間Ｔの情報を管理するレイテンシ制御タイマ２２を備えている。また、メモリコントローラ１３は、バスインタフェース４０と接続が確立しているバスマスタ１４に対し、メモリアクセスの優先順位を設定するアービタ２１を有している。バスインタフェース４０は、バス１７が接続された接続部である。バスインタフェース４０は、バスシステム１１に接続され、バス１７のスレーブとして動作するスレーブ３７、及びバスコントローラ２０のマスタとして動作するバスマスタ３８を備えている。バスＹが接続されるバスインタフェース４０は、スレーブＭ０、及びバスマスタＭ０を有している。バスＺが接続されるバスインタフェース４０は、スレーブＭ１、及びバスマスタＭ１を有している。
【００２８】
アービタ２１は、バスマスタＭ０、Ｍ１からアクセス要求ＲｅｑＭ０、ＲｅｑＭ１が入力されるよう構成されている。アービタ２１は、予め内部に設定されたアービトレーションを行う制御理論に基づき、アクセス要求ＲｅｑＭ０、ＲｅｑＭ１の送信元であるバスマスタＭ０、Ｍ１に対してメモリアクセスの優先順位を順次設定する。アービタ２１は、この優先順位に従って、バスコントローラ２０に制御信号Ｃｎｔｌを出力する。バスコントローラ２０は、アービタ２１から入力された制御信号Ｃｎｔｌに基づき、優先順位に従っていずれかのバスインタフェース４０を選択してメモリ１２に接続する。
【００２９】
レイテンシ制御タイマ２２は、バスインタフェース４０毎に予め設定されたデータ転送の最大待ち時間ＭＬが記憶されたＭＬ管理テーブル３６と、最大待ち時間ＭＬ及び待ち時間Ｔに基づいてバスマスタ１４がデータ転送を行うリミットであるデータ転送補償時間ＤＬを設定する減算器３４と、データ転送補償時間ＤＴを管理するレイテンシタイマ３５を備えている。ＭＬ管理テーブル３６は、データ転送を確実に行わなければならないリミットであるデータ転送の最大待ち時間ＭＬを、バスインタフェース４０毎に記憶している。この最大待ち時間ＭＬは、バス１７等の状態に依存しない不変の値である。例えば、バスＹに接続されたバスインタフェース４０には、最大待ち時間ＭＬ（Ｍ０）が設定され、バスＺに接続されたバスインタフェース４０には、最大待ち時間ＭＬ（Ｍ１）が設定されている。なお、最大待ち時間ＭＬは、バスマスタ１４毎に管理することもできる。この場合、バス情報Ｂｕｓ  Ｉｎｆｏや、接続要求Ｒｅｑに、バスマスタ１４を識別する情報を付加すればよい。これにより、レイテンシ制御タイマ２２に入力されたカウント値がどのバスマスタ１４に対応しているのかをメモリコントローラ１３側で知ることができる。
【００３０】
レイテンシ制御タイマ２２は、待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）を入力し、この待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）とＭＬ管理テーブル３６に記憶された予めバスインタフェース４０毎に設定された最大待ち時間ＭＬに基づいて、データ転送補償時間ＤＴを算出する。データ転送補償時間ＤＴとは、最大待ち時間ＭＬから待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）を引いた時間である。レイテンシ制御タイマ２２は、算出したデータ転送補償時間ＤＴが補償されない場合には、アービタ２１に対してタイムアウト信号Ｔｉｍｅ  Ｏｕｔを出力するよう構成されている。
【００３１】
図３は、レイテンシ制御タイマ２２の一構成例を示すブロック図である。レイテンシ制御タイマ２２は、前述したように、ＭＬ管理テーブル３６（図３では図示せず）、減算器３４及びレイテンシタイマ３５を備えている。減算器３４及びレイテンシタイマ３５は、バスインタフェース４０毎に設けられている。すなわち、減算器３４及びレイテンシタイマ３５は、メモリコントローラ１３と接続が確立しているバスマスタ１４毎に設けられている。バスＹが接続されたバスインタフェース４０側の減算器３４及びレイテンシタイマ３５を、減算器Ｍ０及びレイテンシタイマＭ０とし、バスＺに接続されたバスインタフェース４０側の減算器３４及びレイテンシタイマ３５を、減算器Ｍ１及びレイテンシタイマＭ１とする。減算器Ｍ０には、バスＹに接続されたカウンタＹ０、又はカウンタＹ１から、カウント値Ｙ０、又はカウント値Ｙ１が入力される。一方、減算器Ｍ１には、バスＺに接続されたカウンタＺ０からカウント値Ｚ０が入力される。以下では、バスＹに接続されたバスインタフェース４０側の減算器Ｍ０に、カウンタＹ０からカウント値Ｙ０が入力された場合を例として説明を行う。
【００３２】
減算器Ｍ０は、一方にカウンタＹ０から待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）に相当するカウンタＹ０値が入力され、他方にＭＬ管理テーブル３６からバスインタフェース４０（Ｍ０）に設定された最大待ち時間ＭＬ（Ｍ０）が入力される。例えば、バスマスタＸ０とメモリコントローラ１３との接続が確立している場合にあっては、減算器Ｍ０にカウンタＹ０値として待ち時間Ｔ（バスマスタＸ０−メモリコントローラ１３）が入力される。減算器Ｍ０は、最大遅待ち時間ＭＬ（Ｘ０）から待ち時間Ｔ（バスマスタＭ０−メモリコントローラ１３）を減算し、その結果をレイテンシタイマＭ０に出力する。
【００３３】
レイテンシタイマＭ０は、バスマスタＭ０からのアクセス要求Ｒｅｑ（Ｍ０）がアクティブになったタイミングで減算器Ｍ０の出力を取り込む。ここで、取り込んだ減算器Ｍ０の出力が０以下であった場合には、レイテンシタイマＭ０は、バスマスタＸ０の待ち時間Ｔ（バスマスタＸ０−メモリコントローラ１３）が最大待ち時間ＭＬを超過したことを示すタイムアウト信号Ｔｉｍｅ  Ｏｕｔをアービタ２１に出力する。また、レイテンシタイマＭ０は、取り込んだ減算器Ｍ０の出力が０より大きければ、その値を初期値に設定し、その初期値からカウントダウン（ディクリメント）を開始する。レイテンシタイマＭ０は、カウントダウンによって保持した値が０になったときに、タイムアウト信号Ｔｉｍｅ  Ｏｕｔ（Ｍ０）をアービタ２１に出力する。
【００３４】
図１に示すように、アービタ２１は、タイムアウト信号Ｔｉｍｅ  Ｏｕｔ（Ｍ０）が入力されることにより、バスマスタＭ０と接続が確立しているバスマスタ１４が、データ転送が完了しないまま最大待ち時間ＭＬを超過してしまったことが知らされる。アービタ２１は、入力されたタイムアウト信号Ｔｉｍｅ  Ｏｕｔ（Ｍ０）に基づいて、バスマスタＭ０の優先順位を上位に変更し、当該バスマスタＭ０を優先してメモリ１２と接続するようにバスコントローラ２０に対して制御信号Ｃｎｔｌを出力する。これにより、バスマスタＭ０とメモリ１２とが接続される。例えば、バスマスタＸ０とバスマスタＭ０との接続が確立し、レイテンシ制御タイマ２２からアービタ２１に対してタイムアウト信号Ｔｉｍｅ  Ｏｕｔ（Ｍ０）が出力された場合では、アービタ２１は、バスバスタＭ０に設定される優先順位を上位に変更し、バスコントローラ２０に制御信号を出力する。バスコントローラ２０は、この制御信号Ｃｎｔｌに基づきバスマスタＭ０をメモリ１２に接続する。これにより、バスマスタＭ０に接続されたバスマスタＸ０がメモリアクセスを行うことができる。
【００３５】
次に、このように構成された集積回路１０の詳細な動作について説明する。図４は、図２における各構成要素の動作を示すタイミングチャートである。図４は、バスマスタＸ０がアクセス要求Ｒｅｑ（Ｘ０）を転送した場合に、バスマスタＸ０からスレーブＹ０までの経路パスにおける集積回路１０の動作示すものである。
【００３６】
バスマスタＸ０は、時間ｔ１においてメモリアクセスを行うためにバスＸに接続要求Ｒｅｑを転送する。バスマスタＸ０の有するカウンタＸ０は、接続要求Ｒｅｑがアクティブになった時間ｔ１からカウントを開始する。アービタＸは、アービトレーションを行い、時間ｔ２において、使用許可信号Ｇｎｔ（Ｘ０）をアクティブに設定し、バスマスタＸ０にバスＸの使用許可を与える。同時に、時間ｔ２において、アービタＸは、バスセレクタ３２及びカウントセレクタ３３に対してバスマスタＸ０を選択したことを示すセレクト信号Ｍａｓｔｅｒ  Ｓｅｌを出力する。例えば、図４に示すように、バスマスタＸ１が選択された場合にはセレクト信号Ｍａｓｔｅｒ  ＳｅｌをＬレベルとし、バスマスタＸ０が選択された場合にはセレクト信号Ｍａｓｔｅｒ  ＳｅｌをＨレベルとする場合にあっては、時間ｔ２においてセレクト信号Ｍａｓｔｅｒ  ＳｅｌをＨレベルに設定する。
【００３７】
カウンタＸ０は、使用許可信号Ｇｎｔ（Ｘ０）がアクティブになったことを受けてカウントを停止し、カウント値（８）を保持する。図中では、カウンタＸ０は、使用許可信号Ｇｎｔ（Ｘ０）の立ち下がりのタイミング（時間ｔ３）でカウントを停止し、カウント値（８）を保持している。このカウント値（８）は、バスマスタＸ０が接続要求Ｒｅｑを転送してから、バスマスタＸ０とブリッジコントローラ１５が接続されるまでの待ち時間Ｔ（バスマスタＸ０−メモリコントローラ１３）に相当する。バスマスタＸ０は、使用許可信号Ｇｎｔ（Ｘ０）がアクティブになったことを受けて、スレーブＹ０にバスサイクルを起こし、バスセレクタＸを介してバス情報Ｂｕｓ  Ｉｎｆｏ（Ｘ０）をスレーブＹ０に出力する。同時に、バスマスタＸ０は、使用許可信号Ｇｎｔ（Ｘ０）がアクティブになったことを受けて、カウンタＸ０に保持されたカウント値（８）を、カウントセレクタ３３を介してカウンタＹ０に出力する。カウンタＹ０は、カウンタＸ０によってカウントされた待ち時間Ｔ（バスマスタＸ０−メモリコントローラ１３）を初期値に設定し、カウントを開始する。すなわち、カウンタＹ０は、時間ｔ３において初期値として８を設定し、初期値（８）からカウントを始める。
【００３８】
以下同様の手順で、バスマスタＸ０がメモリコントローラ１３に到達するまでの接続パスに設けられたカウンタ１６により、バスマスタＸ０と接続が確立した要素まで、待ち時間Ｔを順に累積していく。図１を用いて具体的に説明すると、カウンタＹ０は、カウンタＸ０から転送されたカウント値（８）を初期値としてカウントアップを行い、バスマスタＹ０とバスＹとの接続が確立したときにＹ０によってカウントされたカウント値Ｙ０をレイテンシ制御タイマ２２に出力する。カウンタＹ０によって保持されるカウント値Ｙ０は、バスマスタＸ０がバスＸにアクセス要求Ｒｅｑを転送してから、バスマスタＸ０とメモリコントローラ１３との接続が確立するまでの待ち時間Ｔ（バスマスタＸ０−メモリコントローラ１３）を示している。
【００３９】
カウンタＹ０は、バスＹからバスマスタＹ０に送信される使用許可信号Ｇｎｔ（Ｙ０）がアクティブになったことを受けて、バスＹを介して保持したカウント値をレイテンシ制御タイマ２２に出力する。これにより、メモリコントローラ１３に、バスマスタＸ０がアクセス要求Ｒｅｑを転送してからバスマスタＸ０とメモリコントローラ１３との接続が確立するまでの待ち時間Ｔ（バスマスタＸ０−メモリコントローラ１３）が出力される。メモリコントローラ１３内のレイテンシ制御タイマ２２は、バスマスタＭ０がレイテンシ制御タイマ２２に接続要求Ｒｅｑ（Ｍ０）を出力するタイミングで待ち時間Ｔ（バスマスタＸ０−メモリコントローラ１３）を取り込む。
【００４０】
レイテンシ制御タイマ２２は、予め設定されたバスマスタＸ０の最大遅延時間ＭＬ（Ｘ０）から、入力された待ち時間Ｔ（バスマスタＸ０−メモリコントローラ１３）を減算器３４よって減算する。レイテンシタイマ３５は、減算器３４によって演算された値を初期値に設定し、初期値からカウントダウンを開始する。レイテンシタイマ３５は、保持する値が０となるまでにバスマスタＸ０がメモリアクセスを実行できなかった場合には、タイムアウト信号Ｔｉｍｅ  Ｏｕｔ（Ｍ０）をアービタ２１に出力する。
【００４１】
アービタ２１は、レイテンシ制御タイマ２２からタイムアウト信号Ｔｉｍｅ  Ｏｕｔ（Ｍ０）が入力されると、バスマスタＭ０のメモリアクセスの優先順位を上位に変更し、優先順位に従って制御信号Ｃｎｔｌをバスコントローラ２０に出力する。バスコントローラ２０は、この制御信号Ｃｎｔｌに従って、バスマスタＭ０とメモリ１２との接続を確立させる。これにより、バスマスタＸ０とメモリ１２との接続が確立され、バスマスタＸ０とメモリ１２との間でデータ転送が実行される。
【００４２】
他のバスマスタ１４（バスマスタＸ１、Ｙ０、Ｙ１、Ｚ０）においても同様に、アクセス要求Ｒｅｑを転送してからバスマスタ１４（バスマスタＸ１、Ｙ０、Ｙ１、Ｚ０）とメモリコントローラ１３との接続が確立するまでの待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）を、接続パス上に設けられた複数のカウンタ１６によって累積してカウントし、バスマスタ１４がアクセス要求Ｒｅｑを送信してから実際にバスマスタ１４とメモリコントローラ１３との接続が完了するまでの待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）をカウントする。
【００４３】
それぞれのバスマスタ１４の待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）は、メモリコントローラ１３内のレイテンシ制御タイマ２２に転送される。レイテンシ制御タイマ２２は、予めバスインタフェース４０毎に設定されたバス１７の使用状態に依存しない最大待ち時間ＭＬから、バス１７の使用状態によって変化する実際の待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）を減算し、減算した値からレイテンシタイマ３５によってカウントダウンを開始する。レイテンシタイマ３５によって保持する値が０になるまでに、当該バスマスタ１４のデータ転送が完了しない場合は、保持した値が０になったときに、レイテンシタイマ３５からアービタ２１にタイムアウト信号Ｔｉｍｅ  Ｏｕｔが出力される。
【００４４】
このように構成された集積回路１０では、各バスマスタ１４とメモリコントローラ１３との接続パス上に複数のカウンタ１６を設け、要素間の待ち時間Ｔを累積してカウントすることにより、バスマスタ１４がアクセス要求Ｒｅｑを転送してから当該バスマスタ１４とメモリコントローラ１３との接続が確立するまでに実際にかかった待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）を取得することができる。レイテンシ制御タイマ２２において、最大待ち時間ＭＬから待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）を減算器３４によって減算し、残りの待ち時間であるデータ転送補償時間ＤＴを設定することにより、バス１７の使用状態に応じて最適なデータ転送補償時間ＤＴを設定することができる。レイテンシタイマ３５によって、データ転送補償時間ＤＴ、すなわち残りの待ち時間から経過時間をディクリメントすることにより、アクセス要求Ｒｅｑを送信したバスマスタ１４とメモリコントローラ１３との接続が確立した後のバスマスタ１４の待ち時間をカウントすることができる。
【００４５】
アービタ２１は、通常、メモリとのデータ転送の処理効率を最大にする優先順位処理を行う。そのため、タイムアウト信号Ｔｉｍｅ  Ｏｕｔのような前記優先順処理を妨げる要因が発生すると、メモリとのデータ転送の処理効率の低下を招く。これに対し、本実施形態は、最大待ち時間ＭＬを超過した場合にのみ、レイテンシ制御タイマ２２からアービタ２１へタイムアウト信号Ｔｉｍｅ  Ｏｕｔを出力するように構成されている。そのため、タイムアウト信号Ｔｉｍｅ  Ｏｕｔによるアービタ２１の前記優先順位処理への割り込みを最小限に留めることができる。また、最大待ち時間ＭＬを超過してもデータ転送が実行されていないバスマスタ１４については、アービタ２１に対してタイムアウト信号Ｔｉｍｅ  Ｏｕｔを出力することにより、各バスマスタ１４の最大待ち時間ＭＬを補償することができる。すなわち、本実施形態によれば、各バスマスタ１４に設定された最大待ち時間ＭＬを補償すると共に、アービタ２１のデータ転送の処理を最大限に効率化することができる。これにより、データ転送時間を補償すると共に、集積回路１０におけるデータ転送の効率化によるスループット向上を図ることができる。
【００４６】
［第２の実施形態］
第２の実施形態の特徴は、バスマスタ１４がアクセス要求Ｒｅｑを転送してからバス１７を介してスレーブであるブリッジコントローラ１５又はメモリコントローラ１３に接続されるまでの待ち時間Ｔ（バスマスタ１４−ブリッジコントローラ１５）、待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）をバス１７内のカウンタ４１によってカウントしている点にある。すなわち、第１の実施形態において、バスマスタ１４が有していたカウンタ１６の代わりとして、待ち時間Ｔ（バスマスタ１４−ブリッジコントローラ１５）及び待ち時間Ｔ（バスマスタ１４−ブリッジコントローラ１５）を計測するカウンタ４１をバス１７内に設けた点にある。図５は、本発明の第２の実施形態に係る集積回路の有するバス４２の一構成例を示すブロック図である。図５に示すバス４２は、図２に示す第１の実施形態のバス１７に対応している。第２の実施形態に係る集積回路の全体構成については、図１に示す第１の実施形態と略同一である。第１の実施形態と略同一機能を有する構成要素については、同一符号を付すことによりその説明を省略する。
【００４７】
図５に示すように、第２の実施形態に係る集積回路の有するバス４２は、アービタ３１にカウンタ４１が接続されている。なお、バス４２の説明として図１に示すバスＸを例とする。カウンタ４１は、バスマスタＸ０又はＸ１からバスＸに対してアクセス要求Ｒｅｑが転送されると、アクセス要求Ｒｅｑが転送されてから、バスマスタＸ０、Ｘ１とブリッジコントローラ１５との接続が確立するまでの待ち時間Ｔ（バスマスタＸ０−ブリッジコントローラ１５）又は待ち時間Ｔ（バスマスタＸ１−ブリッジコントローラ１５）をカウントする。
【００４８】
例えば、バスＸに対してバスマスタＸ０、Ｘ１からそれぞれアクセス要求Ｒｅｑ（Ｘ０）、Ｒｅｑ（Ｘ１）が入力された場合では、カウンタ４１は、バスマスタＸ０の待ち時間Ｔ（バスマスタＸ０−ブリッジコントローラ１５）と、バスマスタＸ１の待ち時間Ｔ（バスマスタＸ１−ブリッジコントローラ１５）とをそれぞれカウントする。アービタ３１は、予め設定されたアービトレーションを行う制御理論に基づき、ブリッジコントローラ１５と接続を確立させるバスマスタＸ０又はＸ１を選択する。アービタ３１は、選択したバスマスタＸ０又はＸ１に対して、使用許可信号Ｇｎｔ（Ｘ０）又はＧｎｔ（Ｘ１）を送信し、バスＸの使用許可を与える。これにより、バスマスタＸ０又はバスマスタＸ１とブリッジコントローラ１５との接続が確立する。なお、待ち時間Ｔ（バスマスタ１４−ブリッジコントローラ１５）を計測する以外の構成及び動作については、第１の実施形態と略同一である。
【００４９】
このように、第２の実施形態において、バスＸに接続されたバスマスタ１４の待ち時間Ｔ（バスマスタ１４−ブリッジコントローラ１５）及び待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）を、バス４２内に設けられたカウンタ４１によってカウントすることにより、１つのバス１７に接続されたバスマスタ１４の待ち時間Ｔを１箇所にまとめられたカウンタ４１で計測することができる。第２の実施形態に係る集積回路では、第１の実施形態のように内部にカウンタ１６を有していない既存のバスマスタをメモリコントローラ１３に接続する場合にあっても、バス４２の有するカウンタ４１によって待ち時間Ｔをカウントすることができる。これにより、既存のバスマスタを接続した場合であっても、データ転送補償時間ＤＴを最適値に設定し、バス１７の使用状態に応じてデータ転送の最大待ち時間ＭＬを補償することができる。
【００５０】
第１及び第２の実施形態において、２以上のバスが接続された階層構造を有する場合にあっては、これに合わせて複数段のカウンタを設け、前段のカウンタによってカウントされたカウント値を、後段のカウンタに伝達していけばよい。これにより、２以上の階層構造を有する集積回路においても、バスマスタがアクセス要求を転送してからメモリコントローラ１３に接続されるまでに実際にかかった待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）をメモリコントローラ１３側で知ることができる。
【００５１】
また、カウンタ１６は、すべての接続パスに設ける必要はなく、任意の位置に設けるように構成してもよい。また、第１の実施形態のバスマスタ１４毎に設けられたカウンタ１６と、第２の実施形態のバス４２に設けられたカウンタ４１とを組み合わせて実施することも可能である。
【００５２】
また、レイテンシ制御タイマ２２におけるデータ転送補償時間ＤＴの設定にあっては、最大待ち時間ＭＬから待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）を減算して求める方法に限らず、待ち時間Ｔ（バスマスタ１４−メモリコントローラ１３）に基づいて演算処理を行い、システムに応じてデータ転送補償時間ＤＴを設定するように構成することも可能である。
【００５３】
［第３の実施形態］
図６は、本発明の第３の実施形態に係る集積回路の有するメモリコントローラ６０の一構成例を示すブロック図である。第３の実施形態の特徴は、バスインタフェース６２毎にレイテンシ制御タイマ６１が設けられている点にある。レイテンシ制御タイマ６１は、第１の実施形態と同様に、内部に減算器３４、ＭＬ管理テーブル３６、レイテンシタイマ３５が設けられ、バスインタフェース６２毎のデータ転送補償時間ＤＴを管理している。なお、他の構成については、第１の実施形態と略同一構成であるため、同一構成については同一符号を付すことによりその説明を省略する。
【００５４】
このように構成された集積回路では、図示しないカウンタＹ０、カウンタＹ１によってカウントされたカウント値Ｙ０、Ｙ１がレイテンシ制御タイマＭ０に入力される。レイテンシ制御タイマＭ０は、バスインタフェース６２（Ｍ０）に設定された最大待ち時間（Ｍ０）から、入力されたカウント値Ｙ０（Ｙ１）を減算した値をデータ転送補償時間ＤＴに設定する。レイテンシ制御タイマＭ０は、データ転送補償時間ＤＴを超過した場合に、アービタ２１に対し、タイムアウト信号Ｍ０（Ｔｉｍｅ  Ｏｕｔ）を出力する。バスＺに接続されたバスインタフェース（Ｍ１）もこれと同様に、カウンタＺ０によってカウントされたカウント値Ｚ０が入力される。レイテンシ制御タイマＭ１は、バスインタフェース（Ｍ１）に設定された最大待ち時間ＭＬ（Ｍ１）からカウント値Ｚ０を減算した値をデータ転送補償時間ＤＴに設定し、このデータ転送補償時間ＤＴが補償されない場合には、アービタ２１に対してタイムアウト信号（Ｍ１）を出力する。
【００５５】
図中では、レイテンシ制御タイマ６１は、バスインタフェース６２の内部に設けられているが、バスインタフェース６２毎にレイテンシ制御タイマ６１が設けられていれば、バスインタフェース６２の外部に設けられていてもよい。
【図面の簡単な説明】
【００５６】
【図１】本発明の第１の実施形態に係る集積回路１０の一構成例を示すブロック図である。
【図２】第１の実施形態に係る集積回路１０のバス１７の一構成例を示すブロック図である。
【図３】第１の実施形態に係る集積回路１０のレイテンシ制御タイマ２２の一構成例を示すブロック図である。
【図４】第１の実施形態に係る集積回路１０の動作を示すタイミングチャートである。
【図５】本発明の第２の実施形態に係る集積回路の有するバス４２一構成例を示すブロック図である。
【図６】本発明の第３の実施形態に係る集積回路の有するメモリコントローラ６０の一構成例を示すブロック図である。
【符号の説明】
【００５７】
１０...集積回路              １１...バスシステム            １２...メモリ
１３...メモリコントローラ    １４...バスマスタ          １５...ブリッジコントローラ
１６...カウンタ              １７，４２...バス              １８...スレーブ
２０...バスコントローラ      ２１...アービタ
２２...レイテンシ制御タイマ  ３２...バスセレクタ            ３３...カウントセレクタ
３４...減算器                ３５...レイテンシタイマ        ３６...ＭＬ管理テーブル
４０...バスインタフェース    ６０...メモリコントローラ  ６１...レイテンシ制御タイマ
６２...バスインタフェース
【図１】
2009025866.tif 000003
【図２】
2009025866.tif 000004
【図３】
2009025866.tif 000005
【図４】
2009025866.tif 000006
【図５】
2009025866.tif 000007
【図６】
2009025866.tif 000008