(57)【要約】【課題】本発明は複数のデバイスをマザーボードに接続するためのＰＣＩバスの制御方法に関し、特にＰＣＩバスを効率よく使用し、利用効率の優れたＰＣＩバスの制御方法を提供するものである。【解決手段】マザーボードにはＣＰＵ１と主記憶メモリ２が配設され、ホストブリッジ３を介してＰＣＩバスが形成され、ＰＣＩバスにはＰＣＩスロット０〜ＰＣＩスロット２が接続されている。ここで、ＰＣＩスロット０にはＰＣＩデバイスＡが接続され、ＰＣＩデバイスＡにはシーケンサ４を介して待機カウンタ５及び待機カウンタ値Ｆ．Ｆ６が配設されている。この待機カウンタ５はＰＣＩデバイスＡがマザーボードをアクセスする際、再アクセスまでの時間を計数し、効率よくＰＣＩバスを制御する構成である。【選択図】  図１
2004213255.tif 000002
【特許請求の範囲】
【請求項１】
ターゲットからのリトライ要求に対し、再アクセスを繰り返し行う第１の処理と、
前記リトライ要求後、マスター内に配設された計数手段によって計数を行い、前記ターゲットからの応答があると該計数値を記憶手段に記憶する第２の処理と、
前記マスターからの再アクセスの際、前記記憶手段に記憶させた計数値を使用して再アクセスのタイミングを設定する第３の処理と、
該タイミングに従ってターゲットを再アクセスする第４の処理と、
を行うことを特徴とするＰＣＩバスの制御方法。
【請求項２】
前記第４の処理は、前記記憶手段に記憶した計数値より少ない計数値に基づいて実行することを特徴とする請求項１記載のＰＣＩバスの制御方法。
【請求項３】
前記記憶手段に記憶した計数値より少ない計数値に基づいて次のアクセスを行う際、前記ターゲットが行うリトライの時間を計算することを特徴とする請求項２記載のＰＣＩバスの制御方法。
【請求項４】
ターゲットのバースト回数を記憶する処理と、再アクセスした際該処理によって記憶した回数より少ない回数でバーストを中断する処理と、を行うことを特徴とする請求項１、２、又は３記載のＰＣＩバスの制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はＰＣＩバス（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｂｕｓ）を使用し、複数のデバイスをマザーボードに接続してデータの授受を行うＰＣＩバスの制御方法に関する。
【０００２】
【従来の技術】
マザーボードにＰＣＩスロットを用いて複数のデバイスを接続し、マザーボード上のメモリ等にアクセスを行う場合、ＰＣＩバスを効率よく使用する必要がある。
【０００３】
例えば、デバイスとしてプリンタ装置を使用する場合、プリンタ装置をＰＣＩスロットに接続し、ＰＣＩバスを介して記憶装置をアクセスする。この場合、ＰＣＩバスに接続されたデバイスがマスターとなり、マザーボード上の記憶装置にアクセスを行う。
【０００４】
従来、ホスト機器（マザーボード）に構築されたホストブリッジが遅延トランザクションに対応する場合、デバイスからデータリードのアクセス（ＲＥＱ）があると、マザーボード側からリトライの応答があり（ＧＮＴ）、マザーボード側で要求のあったデータが用意できるまでＰＣＩバスを解放する。したがって、基本的に特定のデバイスがＰＣＩバスを占有することはない。
【０００５】
また、ＰＣＩバスに接続された複数のデバイスからアクセス要求がある場合、要求元デバイスと要求先デバイスとの対応関係からマスク時間を設け、特定の要求元デバイスからのアクセスに対応する発明も開示されている（特許文献１）。
【０００６】
【特許文献１】特開平２０００−２０７３５４号公報
【０００７】
【発明が解決しようとする課題】
しかしながら、上記ＰＣＩバスの解放制御では、記憶装置にリードアクセスしたデバイスは、一定時間後、再度リードアクセスを行うことになり、この処理を繰り返すことによって、ＰＣＩバスの処理効率が低下する。すなわち、処理効率はＰＣＩバスが完全に解放された場合に比べて低下する。
【０００８】
そこで、本発明は上記課題に鑑み、ＰＣＩバスを効率よく使用し、利用効率の優れたＰＣＩバスの制御方法を提供するものである。
【０００９】
【課題を解決するための手段】
上記課題は、請求項１記載の発明によれば、ターゲットからのリトライ要求に対し、再アクセスを繰り返し行う第１の処理と、前記リトライ要求後、マスター内に配設された計数手段によって計数を行い、前記ターゲットからの応答があると該計数値を記憶手段に記憶する第２の処理と、前記マスターからの再アクセスの際、前記記憶手段に記憶させた計数値を使用して再アクセスのタイミングを設定する第３の処理と、該タイミングに従ってターゲットを再アクセスする第４の処理とを行うＰＣＩバスの制御方法を提供することによって達成できる。
【００１０】
このように構成することにより、前のアクセス要求からリトライまでの時間に基づいて、次にアクセス要求を行うことができ、プリンタ装置等のデバイスは効率よくターゲットに対してアクセス要求を行うことができる。
請求項２の記載は、上記請求項１記載の発明において、前記第４の処理は、前記記憶手段に記憶した計数値より少ない計数値に基づいて実行する構成である。
【００１１】
このように構成することにより、前のアクセス要求からターゲットに対するリトライまでの時間を減算しアクセス要求を行うことができる。したがって、より効率よくアクセス要求を行うことが可能となる。
請求項３の記載は、上記請求項２の記載において、前記記憶手段に記憶した計数値より少ない計数値に基づいて次のアクセスを行う際、前記ターゲットが行うリトライの時間を計算する構成である。
【００１２】
このように構成することにより、アクセス要求からターゲットに対するリトライまでの時間を正確に知ることができ、前のリトライ後、次のリトライの直前で効率よくアクセス要求を行うことができる。
請求項４の記載は、上記請求項１、２、又は３の記載において、ターゲットのバースト回数を記憶する処理と、再アクセスした際該処理によって記憶した回数より少ない回数でバーストを中断する処理とを行う構成である。
【００１３】
このように構成することにより、ターゲットに対するバースト要求に対しても効率よく中断要求を実行できる。
【００１４】
【発明の実施形態】
以下、本発明の実施形態を図面を参照しながら説明する。
＜第１の実施形態＞
図１は本例で使用するＰＣＩバスを含むシステム構成図である。同図において、ＣＰＵ１は中央処理装置であり、マザーボード上に構築された主記憶メモリ２に記憶されたプログラムに従って処理を行う。
【００１５】
ホストブリッジ３は、ホスト機器とＰＣＩバスに接続されるデバイス間のインターフェース（Ｉ／Ｆ）であり、ホストブリッジ３にはＰＣＩバスを介して複数のスロットが接続され、本例ではＰＣＩスロット０にＰＣＩデバイスＡが接続され、ＰＣＩスロット１にはＰＣＩデバイスＢが接続され、ＰＣＩスロット２にはＰＣＩデバイスＣが接続されている。
【００１６】
ここで、ＰＣＩデバイスはマスター機能を有し、マザーボード上の主記憶メモリ２をアクセスすることができる。また、マザーボード上のホストブリッジ３はＰＣＩデバイスＡ〜Ｃのアクセス要求に対してターゲットとして応答し、主記憶メモリ２との間でデータの授受を行う。
【００１７】
また、ホストブリッジ３はＰＣＩバスの調停も行い、ＰＣＩデバイスＡ〜Ｃからのメモリアクセス要求に対してリトライを発行し、ＰＣＩバスを解放する。また、その間、ＣＰＵ１に主記憶メモリ２をアクセスさせ、例えばリードデータの準備を行う。さらに、ホストブリッジ３は主記憶メモリ２をアクセスする間、再度主記憶メモリ２に対してアクセス要求がある場合にはリトライを再発行する。
【００１８】
一方、ＰＣＩデバイスＡにはシーケンサ４が配設され、シーケンサ４には待機カウンタ５、及び待機カウンタ値Ｆ．Ｆ６が接続されている。待機カウンタ５はホストブリッジ３から後述するＦＲＡＭＥ出力が発行された後、ＴＲＤＹ信号が出力されるまでカウント処理を行うカウンタである。また、待機カウンタ値Ｆ．Ｆ６は上記待機カウンタ５のカウント値に対応するカウント値を記録し、以後ＰＣＩデバイスＡからのリクエスト要求に利用する。
【００１９】
上記構成において、以下に本例の処理を説明する。図２は本例の処理を説明するタイムチャートであり、図３及び図４は本例の処理を説明するフローチャートである。
先ず、ＰＣＩデバイスＡは、マザーボード上の主記憶メモリ２に記憶されたデータを読み出すべく、ＰＣＩバスを介してホストブリッジ３に対してリードアクセスの要求を行う（ステップ（以下、Ｓで示す）１）。例えば、このタイミングは図２に示す▲１▼である。
【００２０】
ホストブリッジ３では上記リクエストのアサートがあると、ＰＣＩバスの使用が可能であるか判断し、ＧＮＴをアサートする（ＳＴ２がＹＥＳ、図２に示す▲２▼）。このＧＮＴがアサートされた後、ＰＣＩバスの使用は可能となり、バスサイクルがＰＣＩデバイスＡのドライブによって実行される（Ｓ３、図２に示すＦＲＡＭＥの出力▲３▼）。すなわち、主記憶メモリ２に対するリードデータのアドレスを提示するアドレスフェーズ（図２に示すＡＤ［３１：０］）のタイミング（同図に示す▲４▼）、及びデータ転送が可能であるデータフェーズ（図２に示すＣ／ＢＥ［３：０］）のタイミング（同図に示す▲５▼）が確保され（Ｓ４）、ホストブリッジ３からのＤＥＶＳＥＬの出力を待つ。
【００２１】
ここで、ホストブリッジ３は、主記憶メモリ２に要求されたデータが準備されるまでバスサイクルを中止すべく、ＤＥＶＳＥＬを出力すると共に、ＳＴＯＰ（リクエスト）を出力する（Ｓ５がＹＥＳ、Ｓ６がＹＥＳ）。したがって、このタイミングで、一旦バスサイクルを終了する（Ｓ７、図２に示す▲６▼）。
【００２２】
一方、ＰＣＩデバイスＡ内の待機カウンタ５は前述のＦＲＡＭＥの出力のタイミングでカウント処理を開始し（Ｓ８）、カウント処理を継続している。この間、ＰＣＩデバイスＡは、マザーボード上の主記憶メモリ２に記憶されたデータを読み出すべく所定周期でホストブリッジ３に対してリードアクセスの要求を行い（Ｓ１）、上記処理を繰り返す（Ｓ２〜Ｓ７、図２に示す▲７▼）。
【００２３】
その後、指定されたデータが主記憶メモリ２からＰＣＩデバイスＡに出力できる状態になると、ホストブリッジ３からＰＣＩバスにＴＲＤＹが出力され、ＰＣＩデバイスＡにデータ転送の準備が整ったことが通知される（Ｓ９がＹＥＳ、図２に示す▲８▼のタイミング）。
【００２４】
ホストブリッジ３からＴＲＤＹが出力されると（Ｓ９がＹＥＳ）、ＰＣＩデバイスＡはＩＲＤＹの出力に基づいてホストブリッジ３から転送されるデータをＰＣＩスロット０を介して入力する。そして、バスサイクルを終了する（Ｓ１０）。また、この時同時に待機カウンタ５のカウント処理を終了する（Ｓ１１）。  本例では、この時の待機カウンタ５のカウント値を「３２」とする（図２に示す▲９▼）。
【００２５】
その後、ＰＣＩデバイスＡは再度主記憶メモリ２からデータを読み出す為ＰＣＩバスを介してホストブリッジ３に対してリードアクセスの要求を行う。図４は、ＰＣＩデバイスＡから２度目のメモリリードが行われた際の処理を説明するフローチャートである。
【００２６】
この場合、前述と同様ＰＣＩバスの使用が可能であるか判断し、ＧＮＴ信号をアサートする（Ｓ１３がＹＥＳ、図２に示す▲２▼’）。そして、ＦＲＡＭＥの出力と同時に待機カウンタ５のカウント処理を開始する（Ｓ１４、Ｓ１５、図２に示す▲３▼’のタイミング）。
【００２７】
また、ＰＣＩバスは主記憶メモリ２に対するデータリードのアドレスを提示するアドレスフェーズ、及びデータ転送のデータフェーズのタイミングを確保し（Ｓ１６）、ホストブリッジ３からのＤＥＶＳＥＬの出力を待つ。
ここで、ホストブリッジ３は前述と同様、主記憶メモリ２に要求されたデータが準備されるまでバスサイクルを中止すべく、ＤＥＶＳＥＬを出力すると共に、ＳＴＯＰを出力する（Ｓ１７がＹＥＳ、Ｓ１８がＹＥＳ）。したがって、このタイミングで一旦バスサイクルを終了する（Ｓ１９、図２に示す▲６▼’）。
【００２８】
その後、上記処理によってカウント処理を開始した待機カウンタ５は、カウント処理を継続し、この間１回目のデータリードの場合のようなリクエスト要求は行われない。すなわち、この間ＰＣＩデバイスＡからデータリードのリクエスト要求を行うことがない。したがって、２回目のデータリードの際には、図２に示す▲７▼’のタイミングに示すようにＰＣＩバスにはＰＣＩデバイスＡからのリクエスト、及びホストブリッジ３からのＧＮＴ出力等がなく、ＰＣＩバスを有効利用することができる。
【００２９】
その後、待機カウンタ５がカウントアップすると（Ｓ２０がＹＥＳ）、ＰＣＩデバイスＡからリクエスト要求が行われる。尚、この時待機カウンタ５のカウント値は待機カウンタ値Ｆ．Ｆ６に記憶されたカウント値と比較され、待機カウンタ５のカウント値が待機カウンタ値Ｆ．Ｆ６に記録されたカウント値に達した時カウント処理を終了する。
【００３０】
ここで、待機カウンタ値Ｆ．Ｆ６には前述の待機カウンタ５のカウント値「３２」から４カウントを減算したカウント値は記録されている。この４カウントは２回目以降に出力されるＦＲＡＭＥまでのカウント値を取り除く為である。
したがって、上記カウント値「２８」は前のリクエストの履歴を考慮したものであり、ＰＣＩデバイスＡから上記リクエストが出力されると、直ちにホストブリッジ３からＴＲＤＹが出力され（Ｓ２１、図２に示す▲８▼’のタイミング）、ＰＣＩデバイスＡはＩＲＤＹの出力に基づいてホストブリッジ３から転送されるデータをＰＣＩスロット０を介して入力する。そして、バスサイクルを終了する（Ｓ２２）。
【００３１】
以後、３回目のデータリード、４回目のデータリード、・・・についても、図４に示すフローチャートに従って処理を繰り返し、ＰＣＩバスを有効利用することができる。
以上のように、本例によれば図２に示すタイムチャートに従って処理がおこなわれ、例えば従来処理である図５のタイムチャートに比べてＰＣＩバスの解放時間が長いことがわかる。
【００３２】
尚、本例において、待機カウンタ５のカウント値は「３２」に限るわけではなく、他のカウント値であってもよい。また、ＰＣＩデバイスＡに限らず、他のＰＣＩスロットに接続されたデバイスについても同様に実行することができる。
＜第２の実施形態＞
次に、本発明の第２の実施形態について説明する。
【００３３】
本例は前述の実施形態において説明した待機カウンタ値Ｆ．Ｆ６に記憶するカウント値をリクエストの出力毎に１カウントづつ減算する構成である。以下、具体的に説明する。
図６は本例を説明するフローチャートであり、前述の実施形態と同様、ＰＣＩデバイスＡからのリクエストの出力、ホストブリッジ３からのＧＮＴの出力が行われ、更にＦＲＡＭＥの出力、ＩＲＤＹの出力等が順次行われる。本例においては、前述と同じ処理によって取得したカウント値を順次減算し、より効率のよいＰＣＩバスの利用を図る構成である。
【００３４】
例えば、同図において最初待機カウンタ５がカウントしたカウント値は「３２」であり、待機カウンタ値Ｆ．Ｆ６には前述と同様「２８」のカウント値が初期値として記録される（図６に示す▲１▼）。
その後、ＰＣＩデバイスＡからの次のリクエストに対する待機時間は、「２７」のカウント値に設定され（同図に示す▲２▼）、待機カウンタ５が２７をカウントするとホストブリッジ３からデータ転送が行われる。したがって、１カウント分の早くデータ転送することが可能になり、データ転送を迅速に行うことができる。
【００３５】
さらに、次のＰＣＩデバイスＡからのリクエストに対する待機時間は、「２６」のカウント値に設定され（同図に示す▲３▼）、待機カウンタ５が２６をカウントするとホストブリッジ３からデータ転送が行われる。したがって、更に１カウント分早くデータ転送することが可能になり、データ転送を迅速に行うことができる。
【００３６】
以下、同様に処理することによって、データの転送処理を高速に行うことが可能になる。
尚、カウント処理が完了し、再度のリクエストを行った時点でホストブリッジ３側でのデータの転送準備が整わない場合には、逆にカウント値を加算し（図６に示す▲４▼）、次のデータリクエストを行う構成にする。
【００３７】
その後、図７に示すようにＰＣＩデバイスＡがデータリードを行う際、待機カウンタ値Ｆ．Ｆ６のカウント値を「２７」に設定し、一定期間維持する。
このように構成することにより、データ転送を高速に行うと共に、柔軟性のあるデータ転送を行い、ＰＣＩバスを効率よく制御することができる。
＜第３の実施形態＞
次に、本発明の第３の実施形態について説明する。
【００３８】
本例はバースモードにおいても、前述と同様の処理を行いバーストアクセスを効率良く行うＰＣＩバスの制御方法を提供するものである。以下、具体的に説明する。
図８は本例で使用するＰＣＩバスを含むシステム構成図である。同図の構成は基本的に前述の図１と同じであるが、ＰＣＩデバイスＡ内のシーケンサ７に接続されたカウンタが異なる。すなわち、シーケンサ７にはバースト回数カウンタ８が接続され、バースト転送を効率良く行う為の構成である。
【００３９】
ホストブリッジ３はＰＣＩバスからのバーストメモリアクセスに対して対応することができ、ホストブリッジ３は主記憶メモリ２に対するバーストアクセス回数を固定値として持つ。例えば、本例においてはこの固定値を「４」とする。尚、この固定値「４」はデータリードを実行する際、ＰＣＩデバイスＡからのリードアクセスの要求に対して４回だけデータを出力すると、ディスコネクトを発行してバーストアクセスの処理を中断する為に利用される。
【００４０】
図９は本例の処理を説明するフローチャートであり、前述と同様メモリリードの要求があると、先ずＰＣＩバスの使用が可能であるか判断し、ＧＮＴ信号をアサートする（ＳＴ１、ＳＴ２がＹＥＳ、図９に示す▲１▼、▲２▼）。
その後、マスタ機器としてバーストリードのバスサイクルを開始し（ＳＴ３〜ＳＴ６）、同時にホストブリッジ３が出力するＴＲＤＹの回数をバースト回数カウンタ８にてカウントする。前述のようにホストブリッジ３はＰＣＩデバイスＡからのバースト要求に対してターゲットとなるホストブリッジ３は４回だけＴＲＤＹを出力し、最後にディスコネクトを発行する。
【００４１】
ＰＣＩデバイスＡではこのディスコネクトが発行されると、ＦＲＡＭＥをディアサートし、アクセスサイクルを終了する。また、バースト回数カウンタ８によるカウント処理も終了する（ＳＴ８、ＳＴ９）。
次に、２回目以降のＰＣＩデバイスＡのバーストアクセス回数は、上記バースト回数カウンタ８でカウントしたカウント値で終了させる。この時、アクセスサイクルに要するクロック数は、図１０に示すように１回目より１カウント少なく設定する。
【００４２】
このように構成することにより、バースト回数をディスコネクトが発行され、中断要求が出力される直前ぎりぎりまで短縮することができ、データ転送のアクセス時間を短縮することができる。
【００４３】
【発明の効果】
以上詳細に説明したように、本発明によればＰＣＩバスを効率よく利用することができ、データ転送を高速で行うことが可能となる。
また、バースト転送要求に対してＰＣＩバスを効率よく利用することができる。
【図面の簡単な説明】
【図１】第１の実施形態で使用するＰＣＩバスを含むシステム構成図である。
【図２】第１の実施形態の処理を説明するタイムチャートである。
【図３】第１の実施形態の処理を説明するフローチャートである。
【図４】第１の実施形態の処理を説明するフローチャートである。
【図５】従来の処理を説明するタイムチャートである。
【図６】第２の実施形態の処理を説明するタイムチャートである。
【図７】第２の実施形態の処理を説明するタイムチャートである。
【図８】第３の実施形態で使用するＰＣＩバスを含むシステム構成図である。
【図９】第３の実施形態の処理を説明するフローチャートである。
【図１０】第３の実施形態の処理を説明するタイムチャートである。
【符号の説明】
１  ＣＰＵ
２  主記憶メモリ
３  ホストブリッジ
４  シーケンサ
５  待機カウンタ
６  待機カウンタ値Ｆ．Ｆ
７  シーケンサ
８  バースト回数カウンタ
【図１】
2004213255.tif 000003
【図２】
2004213255.tif 000004
【図３】
2004213255.tif 000005
【図４】
2004213255.tif 000006
【図５】
2004213255.tif 000007
【図６】
2004213255.tif 000008
【図７】
2004213255.tif 000009
【図８】
2004213255.tif 000010
【図９】
2004213255.tif 000011
【図１０】
2004213255.tif 000012