(57)【特許請求の範囲】
【請求項１】
バス使用要求に応じてラウンドロビン方式によりバス使用権を与えるバス調停部と、
ターゲット装置にバスを介してアクセス可能な複数のイニシエータ装置とを備え、
前記イニシエータ装置は、
前記バス調停部にバス使用要求を出力して該バス調停部からバス使用権が得られた場合に、前記ターゲット装置にデータ転送要求して該ターゲット装置からデータ転送可能通知が得られた場合に、当該イニシエータ装置から該ターゲット装置にデータ転送し、
前記ターゲット装置は、
前記複数のイニシエータ装置の数−１に設定された所定のリトライ応答回数までカウントするカウンタを有し、
前記イニシエータ装置からデータ転送要求された場合に、
当該ターゲット装置が転送されたデータを処理するためにビジー状態であるとき、当該ターゲット装置から該イニシエータ装置に対してリトライ応答し、
当該ターゲット装置がビジー状態でなく、且つ前記カウンタが所定のリトライ応答回数までカウントしていないとき、当該ターゲット装置から該イニシエータ装置に対してリトライ応答すると共に、該カウンタによりリトライ応答回数をカウントし、
当該ターゲット装置がビジー状態でなく、且つ前記カウンタが所定のリトライ応答回数までカウントしているとき、当該ターゲット装置から該イニシエータ装置に対してデータ転送可能通知すると共に、該カウンタによるカウントを初期化する
ことを特徴とするデータ転送システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＰＣＩ（Peripheral Components Interconnect）バスの使用調停に関し、複数のバスマスタによるデータ転送を平準化制御するデータ転送システム及びターゲット装置に関するものである。
【背景技術】
【０００２】
ＰＣＩバス等における従来のバス調停では、複数のイニシエータが均等にバスを使用できるように、ラウンドロビン方式等のバス調停アルゴリズムが用いられている。ラウンドロビン方式では、バスに接続する全てのイニシエータに対して公平にバスの使用権の獲得機会を与えることができる。
【０００３】
図６は、ＰＣＩバスにおける従来のデータ転送システムの構成を概略的に示すブロック図であり、ラウンドロビン方式のバス調停を行う構成の一例を示している。図６において、データ転送システム１００は、バス調停部１０１、イニシエータＡ，Ｂ及びターゲットデバイス１０２を備え、イニシエータＡ，Ｂ及びターゲットデバイス１０２がＰＣＩバス１０３を介して接続している。
【０００４】
イニシエータＡ，Ｂは、ＰＣＩバス１０３を介してデータ転送するデバイスであり、ターゲットデバイス１０２は、ＰＣＩバス１０３を介してイニシエータＡ若しくはイニシエータＢからのデータを受信するデバイスである。バス調停部１０１は、ＰＣＩバス１０３に接続するイニシエータＡ，ＢのうちのいずれにＰＣＩバス１０３の使用権を与えるのかを決定し、ラウンドロビン方式でバス使用権の調停を行う。
【０００５】
バス使用要求ＲＥＱ＃１〜ＲＥＱ＃３は、ＰＣＩバス１０３のバス使用権を取得するためのリクエスト信号であり、バス使用権ＧＮＴ＃１〜ＧＮＴ＃３は、バス調停によりＰＣＩバス１０３の使用権を与えるためのグラント信号である。バス使用要求ＲＥＱ＃３及びバス使用権ＧＮＴ＃３は、ターゲットデバイス１０２がイニシエータＡ，Ｂ側へデータ転送する際のリクエスト信号及びグラント信号である。
【０００６】
また、図７は、図６中のデータ転送システムによるバス調停動作を示すタイミングチャートである。図６及び図７を用いて、従来のＰＣＩバスのデータ転送システムにおけるバス調停を説明する。ここで、イニシエータＡ，Ｂが、ターゲットデバイス１０２に対してデータ転送要求を行い、ターゲットデバイス１０２が、イニシエータＡ，Ｂのトランザクションを受ける場合を考える。
【０００７】
イニシエータＡ，Ｂが共にバス使用要求ＲＥＱ＃１，ＲＥＱ＃２をアサートしてＰＣＩバス１０３の使用を要求した場合、バス調停部１０１は、ラウンドロビン方式のバス調停アルゴリズムに基づいて、優先順位の高いイニシエータに対してバス使用権ＧＮＴをアサートし、ＰＣＩバス１０３を使用させる。ここでは、図７に示すように、バス調停部１０１が、最初にイニシエータＡに対しバス使用権ＧＮＴ＃１をアサートした場合を考える。
【０００８】
バス使用権を獲得したイニシエータＡは、ターゲットデバイス１０２に対してデータ転送要求を行う。ターゲットデバイス１０２は、図７に示すように、イニシエータＡからのトランザクション（データ転送）を処理するためにビジー状態となる。このとき、イニシエータＡがデータ転送イニシエータとなってデータ転送が実行される。
【０００９】
イニシエータＡへのデータ転送が終了すると、バス調停部１０１は、ラウンドロビン方式のバス調停アルゴリズムに基づいて、次に優先順位が高いイニシエータＢに対してバス使用権ＧＮＴをアサートし、ＰＣＩバス１０３を使用させる。これにより、バス使用権を獲得したイニシエータＢは、ターゲットデバイス１０２に対してデータ転送要求を行う。
【００１０】
しかしながら、図７に示すように、ターゲットデバイス１０２は、先のイニシエータＡからのデータ転送要求を受けてビジー状態となっている。このため、イニシエータＢに対してリトライ応答（データ再転送要求）がなされる。一方、イニシエータＡは、イニシエータＢより優先順位が高いため、イニシエータＢがリトライ応答されている間に、バス調停部１０１からバス使用権が与えられる。
【００１１】
ターゲットデバイス１０２は、イニシエータＢへのリトライ応答後に、イニシエータＡからのデータ転送に係る処理を完了すると、ビジー状態でなくなる。このとき、バス使用権を獲得したイニシエータＡが、ターゲットデバイス１０２に対して再びデータ転送を行う。この間に、イニシエータＢがバス使用権を獲得したとしても、ターゲットデバイス１０２は、イニシエータＡからのデータ転送に係る処理を実行してビジー状態となる。
【００１２】
図７に示すトランザクションの組み合わせが続くと、イニシエータＡとイニシエータＢが、共に同じ頻度でバス使用権を獲得できているにも関わらず、イニシエータＢは、ターゲットデバイス１０２からリトライ応答を受け続ける。このため、イニシエータＢは、イニシエータＡのデータ転送が完了するまで長期間データ転送を行えなくなる。
【００１３】
このように、ラウンドロビン方式のバス調停では、複数のイニシエータＡ，Ｂが同一のターゲットデバイス１０２に対して継続的にデータ転送するにあたり、イニシエータのデータ転送要求とターゲットデバイス１０２がビジー状態になるタイミングとが周期的になるため、特定のイニシエータがバスの使用権を獲得したタイミングで、データ転送相手となるターゲットデバイスが常にビジー状態となり、データ転送を長時間行うことができない場合がある。
【００１４】
上述した不具合を解消する技術として、例えば特許文献１に記載されるバス調停回路がある。このバス調停回路は、ターゲットシステムのビジー状態を監視するビジー管理部を設けている。このビジー管理部は、ターゲットデバイスのビジー状態を監視し、ビジー状態のためリトライになったイニシエータとターゲットデバイスのデバイス番号を記憶部に記憶する。上記ターゲットデバイスのビジー状態が解除されると、上記記憶部に記憶したイニシエータに対して優先的にバス使用権を与える。このようにすることにより、特定のイニシエータからのデータ転送が行えなくなることが防止され、公平にバスの使用権を与えることができる。
【００１５】
【特許文献１】特開２００２−３６６５１１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
上述したように、従来のデータ転送システムでは、複数のイニシエータが同一のターゲットデバイスに対して継続的にデータ転送を続ける場合、ラウンドロビン方式のバス調停を行うと、ターゲットデバイスがビジー状態になるタイミングによっては、特定のイニシエータのトランザクションのみがリトライされ続け、バス使用権の獲得頻度が同じであっても、データ転送頻度が公平にならないという課題があった。
【００１７】
また、特許文献１のバス調停回路は、上記課題を解決するために提案されたものであるが、バス調停の機能を実現するために必須な構成に加え、ターゲットデバイスのビジー状態を管理するビジー管理部や、リトライ応答されたイニシエータを記憶する記憶部等の専用装置が必要となる。このため、特許文献１の発明をＰＣＩバスのデータ転送システムに適用する際、既製品のホストブリッジに内蔵されるバス調停回路をそのまま用いることができないばかりか、上記専用装置に対応する回路をホストブリッジの外部等に実装しなければならない。
【００１８】
この発明は、上記のような課題を解決するためになされたもので、ラウンドロビン方式等のバス調停における上記不具合を解消でき、かつ簡易な構成で実現することができるデータ転送システム及びこれに用いるターゲット装置を得ることを目的とする。
【課題を解決するための手段】
【００１９】
この発明に係るデータ転送システムは、バス使用要求に応じてラウンドロビン方式によりバス使用権を与えるバス調停部と、ターゲット装置にバスを介してアクセス可能な複数のイニシエータ装置とを備え、前記イニシエータ装置は、前記バス調停部にバス使用要求を出力して該バス調停部からバス使用権が得られた場合に、前記ターゲット装置にデータ転送要求して該ターゲット装置からデータ転送可能通知が得られた場合に、当該イニシエータ装置から該ターゲット装置にデータ転送し、前記ターゲット装置は、前記複数のイニシエータ装置の数−１に設定された所定のリトライ応答回数までカウントするカウンタを有し、前記イニシエータ装置からデータ転送要求された場合に、当該ターゲット装置が転送されたデータを処理するためにビジー状態であるとき、当該ターゲット装置から該イニシエータ装置に対してリトライ応答し、当該ターゲット装置がビジー状態でなく、且つ前記カウンタが所定のリトライ応答回数までカウントしていないとき、当該ターゲット装置から該イニシエータ装置に対してリトライ応答すると共に、該カウンタによりリトライ応答回数をカウントし、当該ターゲット装置がビジー状態でなく、且つ前記カウンタが所定のリトライ応答回数までカウントしているとき、当該ターゲット装置から該イニシエータ装置に対してデータ転送可能通知すると共に、該カウンタによるカウントを初期化するものである。
【発明の効果】
【００２０】
この発明によれば、ラウンドロビン方式のバス調停において、複数のイニシエータ装置が同一のターゲット装置に対して継続的にデータ転送する際、ターゲット装置がビジー状態になるタイミングによって特定のイニシエータ装置のトランザクションのみがリトライされ続ける不具合を解消することができる。また、ターゲット装置に簡易な構成を追加するだけで、前記効果を有するシステムを実現できるという効果がある。
【発明を実施するための最良の形態】
【００２１】
実施の形態１．
図１は、この発明の実施の形態１によるデータ転送システムの構成を示すブロック図であり、ラウンドロビン方式のバス調停を行う構成を示している。図１において、実施の形態１によるデータ転送システム１は、イニシエータＡ，Ｂ、バス調停部２、及びイニシエータＡ，ＢとＰＣＩバス７を介して接続するターゲットデバイス３を備える。また、本発明における特徴的な構成として、ターゲットデバイス３のＰＣＩインタフェース部４に、バス制御部５及びリトライ挿入部６を設ける。
【００２２】
イニシエータ（イニシエータ装置）Ａ，Ｂは、ＰＣＩバス７を介してデータ転送するデバイスである。バス調停部２は、ＰＣＩバス７に接続するイニシエータＡ，ＢのうちのいずれにＰＣＩバス７の使用権を与えるのかを決定し、ラウンドロビン方式でバス使用権の調停を行う。
【００２３】
バス使用要求ＲＥＱ＃１〜ＲＥＱ＃３は、ＰＣＩバス７のバス使用権を取得するためのリクエスト信号であり、バス使用権ＧＮＴ＃１〜ＧＮＴ＃３は、バス調停によってＰＣＩバス７の使用権を与えるためのグラント信号である。バス使用要求ＲＥＱ＃３及びバス使用権ＧＮＴ＃３は、ターゲットデバイス３がイニシエータＡ，Ｂ側へデータ転送する際のリクエスト信号及びグラント信号である。
【００２４】
ターゲットデバイス（ターゲット装置）３は、ＰＣＩインタフェース部４により、ＰＣＩバス７を介してイニシエータＡ若しくはイニシエータＢとの間でデータを送受信する。ＰＣＩインタフェース部４は、ＰＣＩバス７との入出力インタフェースを制御する構成要素であり、バス制御部５及びリトライ挿入部６を有する。
【００２５】
バス制御部５は、ＰＣＩバス７からのデータ転送要求と自ターゲットデバイス３のビジー状態とをリトライ挿入部６へ通知し、リトライ挿入部６からのビジー情報（図２で後述するＢＵＳＹ２信号）に基づいて、トランザクションを受けるかリトライするかを決定する。
【００２６】
リトライ挿入部６は、リトライ応答回数を保持するレジスタを有し、バス制御部５から通知された情報に基づいて、トランザクションをリトライ応答するか否かを決定するとともに、リトライ応答回数を制御する。
【００２７】
図２は、図１中のターゲットデバイスの構成を概略的に示すブロック図であり、ＰＣＩインタフェース部とデバイス内の他の機能部との関係を示している。図２において、機能部８は、ＰＣＩバス７を介してイニシエータＡ若しくはイニシエータＢから受信したデータを処理する構成要素であり、トランザクションの処理のためにビジー状態になっているか否かをバス制御部５によって監視される。
【００２８】
バス制御部５は、ＰＣＩバス７と機能部８との間のインタフェースとして、ターゲットインタフェース部９及びイニシエータインタフェース部１０を備える。ターゲットインタフェース部９は、ＰＣＩバス７側から機能部８へのトランザクションを受信するためのインタフェースであり、バス１１及び信号線１４を介して機能部８と接続している。
【００２９】
バス１１は、ＰＣＩバス７側から受信したトランザクションを機能部８へ伝達するバスであり、信号線１４は、ＰＣＩバス７を介してイニシエータＡ，Ｂから受信したデータ転送要求ＲＥＱ信号を機能部８及びリトライ挿入部６側へ伝える信号線である。
【００３０】
イニシエータインタフェース部１０は、機能部８からのトランザクションをＰＣＩバス７側（イニシエータＡ，Ｂ側）へ送信するためのインタフェースであり、バス１２を介して機能部８と接続している。バス１２は、機能部８からのトランザクションをＰＣＩバス７側へ発行するバスである。
【００３１】
また、リトライ挿入部６は、リトライ制御部１６、リトライカウンタ１７及びリトライ回数格納レジスタ１８を備える。リトライ制御部１６は、データ転送要求ＲＥＱ信号、機能部８がビジー状態であることを示すＢＵＳＹ１信号、リトライカウンタ１７のカウント値、及びリトライ回数格納レジスタ１８の値を入力し、図３を用いて後述する真理値表に基づいて、ＰＣＩバス７側へリトライ応答を行うためのＢＵＳＹ２信号を決定し、リトライカウンタ１７の値を更新する。
【００３２】
リトライカウンタ１７は、リトライ応答した回数が設定されるレジスタであり、リトライ応答する度に回数値がデクリメントされ、データ転送のトランザクションを受ける度にリトライ回数格納レジスタ１８の値で初期化される。リトライ回数格納レジスタ１８は、リトライ応答する回数が初期値（リトライカウンタ１７によるカウントの目標値）として固定的に設定される。
【００３３】
リトライ回数格納レジスタ１８の初期値は、ＰＣＩバス７上にあるイニシエータとなるデバイス（バス使用権を得てターゲットデバイスに同時にアクセス可能なデバイス）の数によって決まり、デバイス数−１となる。例えば、バス７上に７つのイニシエータがあり、そのうち３つのイニシエータが同時にターゲットデバイスにアクセスすることが予め把握されている場合、リトライ回数格納レジスタ１８の初期値は、３−１＝２となる。
【００３４】
信号線１３は、ターゲットインタフェース部９とリトライ制御部１６との間を接続し、リトライ制御部１６で生成されたＢＵＳＹ２信号をターゲットインタフェース部９へ伝える信号線である。信号線１５は、機能部８とリトライ制御部１６との間を接続し、機能部８で生成されたＢＵＳＹ１信号をリトライ制御部１６へ伝える信号線である。
【００３５】
信号線１９は、リトライ制御部１６とリトライ回数格納レジスタ１８との間を接続し、リトライ制御部１６によるリトライ回数格納レジスタ１８の値の読み出し、リトライ回数格納レジスタ１８への初期値の書き込みを実行するための信号線である。信号線２０は、リトライ制御部１６とリトライカウンタ１７との間を接続し、リトライ制御部１６によるリトライカウンタ１７の値の読み出し、リトライ回数格納レジスタ１８の値の書き込み（初期化）を実行するための信号線である。
【００３６】
図３は、図２中のリトライ制御部の動作基準となる真理値表を示す図である。図３において、Ｘは、リトライカウンタ１７に格納された０以外の値（リトライ応答回数のカウント値）を示している。Ｙは、リトライ回数格納レジスタ１８に格納された初期値（リトライカウンタ１７によるカウントの目標値）を示している。Ｘ−１は、リトライカウンタ１７のカウント値を１デクリメントする場合を示している。
【００３７】
リトライ制御部１６は、データ転送要求ＲＥＱ信号の論理値、機能部８がビジー状態であることを示すＢＵＳＹ１信号の論理値、リトライカウンタ１７のカウント値、及びリトライ回数格納レジスタ１８の値の組み合わせと図３中の真理値表とを比較して、ＰＣＩバス７側へリトライ応答を行うためのＢＵＳＹ２信号の値を決定し、リトライカウンタ１７のカウント値を更新する。
【００３８】
次に動作について説明する。
図４は、実施の形態１によるデータ転送システムのバス調停動作を示すタイミングチャートである。また、図５は、図２中のターゲットデバイスによる動作の流れを示すフローチャートである。これらは、複数のイニシエータＡ，Ｂから同一のターゲットデバイス３に対して継続的にデータ転送を続ける場合を示している。
【００３９】
先ず、イニシエータＡ，Ｂは、ターゲットデバイス３に対してデータ転送を行うため、バス調停部２に対しバスリクエストＲＥＱ＃１，ＲＥＱ＃２をアサートする。バス調停部２は、ラウンドロビン方式のバス調停アルゴリズムに基づいて、優先順位の高いイニシエータＡへバス使用権ＧＮＴ＃１をアサートし、イニシエータＡにＰＣＩバス７の使用権を付与する。この後、イニシエータＡは、ＰＣＩバス７を介しターゲットデバイス３に対してデータ転送要求ＲＥＱ信号を送信する。
【００４０】
ターゲットデバイス３では、イニシエータＡからのデータ転送要求ＲＥＱ信号をターゲットインタフェース部９が受信する。ターゲットインタフェース部９は、信号線１４を介してデータ転送要求ＲＥＱ信号を機能部８及びリトライ挿入部６のリトライ制御部１６へ伝える。
【００４１】
リトライ制御部１６は、データ転送要求ＲＥＱ信号の値に基づいて、自ターゲットデバイス３がＰＣＩバス７側からトランザクションを受けているか否かを判定する（ステップＳＴ１）。ここで、データ転送要求ＲＥＱ信号（値０）が入力されており、自ターゲットデバイス３のＰＣＩインタフェース部４がトランザクションを受けていない場合、リトライ制御部１６は、ステップＳＴ１の処理に戻る。このときの各信号、レジスタの値は、図３に示す真理値表のＲＥＱ信号が値０の欄に示す通りである。
【００４２】
一方、データ転送要求ＲＥＱ信号（値１）が入力され、自ターゲットデバイス３のＰＣＩインタフェース部４がトランザクションを受けていると判定すると、リトライ制御部１６は、信号線２０を介して機能部８から入力されるＢＵＳＹ１信号の値に基づいて、機能部８がビジー状態であるか否かを判定する（ステップＳＴ２）。
【００４３】
このとき、機能部８がビジー状態であるならば、リトライ制御部１６は、ＰＣＩバス７側へリトライ応答を行うためのＢＵＳＹ２信号を値１（オン）に設定し、ターゲットインタフェース部９を介してＰＣＩバス７側へ送信することにより、リトライ応答する（ステップＳＴ３）。この後、リトライ制御部１６は、ステップＳＴ１の処理に戻る。
【００４４】
また、機能部８がビジー状態でない場合、リトライ制御部１６は、本発明に特有な処理である図５中に破線で囲った一連の処理Ｃを実行する。具体的に説明すると、リトライ制御部１６は、機能部８がビジー状態でないと判定されると、信号線２０を介してリトライカウンタ１７のカウント値を読み出し、カウント値が０であるか否かを判定する（ステップＳＴ４）。
【００４５】
ステップＳＴ４において、リトライカウンタ１７のカウント値が０であれば、リトライ制御部１６は、ＢＵＳＹ２信号に値０を設定してターゲットインタフェース部９へ送信する。ターゲットインタフェース部９は、ＰＣＩバス７を介してバス使用権を獲得しているイニシエータに対しデータ転送可能である旨を通知する。これにより、ターゲットデバイス３は、ＰＣＩバス７を介したイニシエータからのデータ転送が開始される（ステップＳＴ５）。
【００４６】
リトライ制御部１６は、データ転送が開始されると、図３の真理値表に示すように、リトライ回数格納レジスタ１８の値（Ｙ）をリトライカウンタ１７に格納して初期化する（ステップＳＴ６）。この後、リトライ制御部１６は、ステップＳＴ１の処理に戻って、上記処理を繰り返す。
【００４７】
一方、ステップＳＴ４において、リトライカウンタ１７のカウント値が０でない場合、リトライ制御部１６は、ＢＵＳＹ２信号に値１を設定してターゲットインタフェース部９へ送信する。ＢＵＳＹ２信号（値１）を受けると、ターゲットインタフェース部９は、ＰＣＩバス７を介してバス使用権を獲得しているイニシエータに対しリトライ応答する（ステップＳＴ７）。
【００４８】
次に、リトライ制御部１６は、リトライカウンタ１７のカウント値を１デクリメント（Ｘ−１）する（ステップＳＴ８）。この後、リトライ制御部１６は、ステップＳＴ１の処理に戻って、トランザクションを受けた全てのイニシエータからのデータ転送が終了するまで、上記処理を繰り返す。
【００４９】
従来では、機能部８がビジー状態であるならばリトライ応答し、ビジー状態でない場合、イニシエータからのデータ転送を開始していた。これに対し、この実施の形態１によるリトライ制御部１６では、リトライカウンタ１７のカウント値が０でなければ、機能部８がビジー状態であるか否かに関わらず、イニシエータからのトランザクションをリトライ応答する。
【００５０】
このように、リトライカウンタ１７には、リトライ回数格納レジスタ１８の初期値が設定され、この値が０になるまで、ＰＣＩバス７の使用権を獲得したいずれのイニシエータからのデータ転送要求があってもリトライ応答する。なお、上記初期値は、デバイス数（バス使用権を得てイニシエータとなり得るデバイスの最大数）−１であり、図４の例では、初期値（リトライ回数）が１となる。
【００５１】
図４では、ターゲットデバイス３が、始めにイニシエータＡからのトランザクション（データ転送）を受け、機能部８がビジー状態になる。このとき、イニシエータＢからのデータ転送要求があっても、ターゲットデバイス３は、イニシエータＡからのデータ転送を処理するためにリトライ応答する（図５中のステップＳＴ３）。
【００５２】
また、リトライカウンタ１７のカウント値０でイニシエータＡからのデータ転送が開始されるが、データ転送開始後に、リトライ制御部１６が、リトライ回数格納レジスタ１８の値（図４の例では１）をリトライカウンタ１７に設定する。
【００５３】
これにより、機能部８がイニシエータＡからの当初のトランザクション処理を完了してビジー状態ではなくなり、引き続きイニシエータＡからデータ転送要求があっても、リトライカウンタ１７のカウント値（リトライ回数）が１であることから、リトライ制御部１６は、イニシエータＡにリトライ応答する（図５中のステップＳＴ８）。このとき、ターゲットデバイス３は、図４に示すように、ビジー状態ではないが、イニシエータＡからのデータ転送を受けないレディ状態となる。
【００５４】
イニシエータＡにリトライ応答すると、リトライ制御部１６は、リトライカウンタ１７のカウント値（リトライ回数）を１デクリメントする。図４の例では、初期値が１であることから、カウント値が０となる。この後、ターゲットデバイス３が、イニシエータＢからのトランザクション（データ転送）を受けると、機能部８がビジー状態でなく（レディ状態）、かつ、リトライカウンタ１７のカウント値が０であるため、イニシエータＢからのデータ転送が開始される。これにより、機能部８は、イニシエータＢからのデータ転送を処理する。
【００５５】
従来では、イニシエータＡのトランザクションを受けたターゲットデバイスは、その次のタイミングで必ずビジー状態となり、結果として次にトランザクションを開始するイニシエータＢがリトライ応答を受け続けることになっていたが、本発明では、図４に示すように、イニシエータＡのトランザクションをリトライ応答することで、次のイニシエータＢのトランザクションをレディ状態で応答することが可能となる。
【００５６】
上記説明では、ＰＣＩバス７上に２つのイニシエータＡ，Ｂが存在する場合を述べたが、イニシエータが３つ以上ある場合であっても同様に処理することが可能である。例えば、イニシエータＡ〜Ｃの３つある場合（初期値２）であり、ラウンドロビン方式のバス調停でイニシエータＡの優先順位が最も高く、続いてイニシエータＢ、その次がイニシエータＣであるものとする。
【００５７】
先ず、リトライカウンタ１７のカウント値が０であると、イニシエータＡからのデータ転送が開始され、機能部８は、イニシエータＡとのデータ転送処理のためにビジー状態となる。このとき、イニシエータＢからデータ転送要求があっても、機能部８がビジー状態であるため、イニシエータＢは、リトライ応答される。
【００５８】
また、上記データ転送が開始されると、リトライカウンタ１７にはカウント値２が設定され、イニシエータＡについてのリトライ回数格納レジスタ１８の値は１デクリメントされて１となる。なお、イニシエータＢ，Ｃについてのリトライ回数格納レジスタ１８の値は初期値２のままである。
【００５９】
機能部８は、イニシエータＡのデータ転送処理を完了するとビジー状態ではなくなる。このとき、イニシエータＣがデータ転送要求すると、リトライカウンタ１７にはカウント値２が設定されているので、イニシエータＣはリトライ応答される。これにより、リトライカウンタ１７のカウント値は１デクリメントされて１となる。
【００６０】
この後、イニシエータＡが、引き続きデータ転送要求しても、リトライカウンタ１７にはカウント値１が設定されていることから、イニシエータＡはリトライ応答される。これにより、リトライカウンタ１７のカウント値は１デクリメントされて０となる。つまり、機能部８のレディ状態で、イニシエータＣ，Ａはリトライ応答される。
【００６１】
続いて、イニシエータＢからデータ転送要求があると、機能部８がビジー状態でなく、かつリトライカウンタ１７のカウント値が０であるので、イニシエータＢからのデータ転送が開始される。このとき、イニシエータＣからデータ転送要求があっても、機能部８がビジー状態であるため、イニシエータＣはリトライ応答される。また、上記データ転送が開始されると、イニシエータＣについてのリトライ回数格納レジスタ１８の値２がリトライカウンタ１７のカウント値として設定される。
【００６２】
イニシエータＢのデータ転送処理を完了すると、機能部８はビジー状態ではなくなる。このとき、イニシエータＡがデータ転送要求しても、リトライカウンタ１７にはカウント値２が設定されていることから、イニシエータＡはリトライ応答される。これにより、リトライカウンタ１７のカウント値は１デクリメントされて１となる。
【００６３】
この後、イニシエータＢが、引き続きデータ転送要求しても、リトライカウンタ１７にはカウント値１が設定されていることから、イニシエータＢはリトライ応答される。これにより、リトライカウンタ１７のカウント値は１デクリメントされて０となる。つまり、機能部８のレディ状態で、イニシエータＡ，Ｂはリトライ応答される。
【００６４】
続いて、イニシエータＣからデータ転送要求があると、機能部８がビジー状態でなく、かつリトライカウンタ１７のカウント値が０であるので、イニシエータＣからのデータ転送が開始される。このとき、イニシエータＡからデータ転送要求があっても、機能部８がビジー状態であるため、イニシエータＡはリトライ応答される。また、上記データ転送が開始されると、イニシエータＡについてのリトライ回数格納レジスタ１８の値２がリトライカウンタ１７のカウント値として設定される。
【００６５】
イニシエータＣのデータ転送処理を完了すると、機能部８はビジー状態ではなくなる。このとき、イニシエータＡがデータ転送要求しても、リトライカウンタ１７にはカウント値２が設定されていることから、イニシエータＡはリトライ応答される。これにより、リトライカウンタ１７のカウント値は１デクリメントされて１となる。
【００６６】
このように、ターゲットデバイス３がデータ転送を行う度にリトライ応答回数のカウント値が変化する。逆に言えば、データ転送を行うタイミングが変動する。このため、複数のイニシエータが同じタイミングで交互にバス使用権を取得してターゲットデバイス３へデータ転送を行う場合であっても、特定のパターンにはまりこむことがなくなり、特定のイニシエータが常にリトライ応答を受ける状況を回避できる。
【００６７】
また、上述したように、本発明は、ターゲットデバイス３のＰＣＩインタフェース部４に、ＰＣＩバス７とのインタフェースとなるバス制御部５と、入力された信号値とレジスタの値の簡単な比較によってリトライ応答すべきか否かを決定するリトライ挿入部６を設けるだけで実現可能である。
【００６８】
例えば、既製品のホストブリッジとＦＰＧＡ（Field Programmable Gate Array）等のプログラマブルデバイスで構成したＰＣＩデバイスとを組み合わせて、本発明によるデータ転送システムを実現する場合、ＦＰＧＡのＰＣＩインタフェース部に上記構成（バス制御部５及びリトライ挿入部６）を組み込むことで、データ転送機会の平準化を図ることが可能となる。
【００６９】
以上のように、この実施の形態１によれば、ターゲットデバイス３が、所定のリトライ応答回数をカウントするリトライカウンタ１７を有し、複数のイニシエータＡ，Ｂの各々との間でデータ転送を逐次実行するにあたり、データ転送が完了してビジー状態が解除された時点からリトライカウンタ１７が所定のリトライ応答回数をカウントするまで、リトライ応答させるための制御信号を出力し、この制御信号に従ってリトライ応答する。このようにすることで、複数のイニシエータが同一のターゲットデバイス３に対して継続的にデータ転送する際、ターゲットデバイス３がビジー状態になるタイミングによって特定のイニシエータのトランザクションのみがリトライされ続ける不具合を解消することができる。
【００７０】
また、バスインタフェースやレジスタ及び比較回路等の簡単な回路で実現可能なバス制御部５及びリトライ挿入部６をターゲットデバイス３に設けるだけで、上述のような効果を有するデータ転送システム１を実現することができる。これにより、既製品のホストブリッジに内蔵されるバス調停回路を利用することができ、実装の容易さ、低コスト化、汎用性の向上を図ることができる。
【図面の簡単な説明】
【００７１】
【図１】この発明の実施の形態１によるデータ転送システムの構成を示すブロック図である。
【図２】図１中のターゲットデバイスの構成を概略的に示すブロック図である。
【図３】図２中のリトライ制御部の動作基準となる真理値表を示す図である。
【図４】実施の形態１によるデータ転送システムのバス調停動作を示すタイミングチャートである。
【図５】図２中のターゲットデバイスによる動作の流れを示すフローチャートである。
【図６】ＰＣＩバスにおける従来のデータ転送システム構成を概略的に示すブロック図である。
【図７】図６中のデータ転送システムによるバス調停動作を示すタイミングチャートである。
【符号の説明】
【００７２】
１  データ転送システム、２  バス調停部、３  ターゲットデバイス（ターゲット装置）、４  ＰＣＩインタフェース部、５  バス制御部、６  リトライ挿入部、７  ＰＣＩバス、８  機能部、９  ターゲットインタフェース部、１０  イニシエータインタフェース部、１１，１２  バス、１３，１４，１５，１９，２０  信号線、１６  リトライ制御部、１７  リトライカウンタ（カウンタ）、１８  リトライ回数格納レジスタ、Ａ，Ｂ  イニシエータ（イニシエータ装置）、１００  データ転送システム、１０１  バス調停部、１０２  ターゲットデバイス、１０３  ＰＣＩバス。
【図１】
0004969513.tif 000002
【図２】
0004969513.tif 000003
【図３】
0004969513.tif 000004
【図４】
0004969513.tif 000005
【図５】
0004969513.tif 000006
【図６】
0004969513.tif 000007
【図７】
0004969513.tif 000008