(57)【特許請求の範囲】
【請求項１】
複数のデバイスが接続され、該複数のデバイスから受信したデータを共通のバスに対して送信するバス調停回路であって、
複数の領域からなり、データを所定の領域に格納する複数のキューイングバッファと、
データを保持する一時バッファを有し、複数のデバイスから送信されたデータを各々受信して前記一時バッファに各々保持し、該一時バッファに保持した該データの前記キューイングバッファへの書き込みを制御する複数の受信制御部と、
複数の領域からなり、前記デバイスから受信したデータが格納されたキューイングバッファを示す情報を、前記複数の受信制御部がデータを受信した順序に従って所定の領域に格納するコヒーレンシバッファと、
前記コヒーレンシバッファに格納された情報に基づき、前記データを受信した順序通りに前記キューイングバッファからデータを読み出し、バスに対して送信する送信制御部とを備え、
前記受信制御部は、前記一時バッファに保持したデータに対するエラーの有無を判断し、前記データにエラーがあると判断した場合に、前記データを初期化することを特徴とするバス調停回路。
【請求項２】
前記キューイングバッファは、
前記受信制御部により受信したデータを格納する領域を指定する書き込みポインタと、
前記送信制御部により読み出されるデータを格納する領域を指定する読み出しポインタとを有し、
前記コヒーレンシバッファは、
前記デバイスから受信したデータが格納されたキューイングバッファを示す情報を格納する領域を指定する順序待ちポインタと、
前記バスに対して送信するデータが格納されたキューイングバッファを示す情報が格納された領域を指定する次送信ポインタとを有し、
前記受信制御部は、
前記キューイングバッファの前記書き込みポインタが指定する領域に、前記デバイスから受信したデータを格納し、
前記デバイスからのデータを正常に受信したことを示す受信完了信号を生成し、前記キューイングバッファ及び前記コヒーレンシバッファに対して送信し、
前記コヒーレンシバッファの前記順序待ちポインタが指定する領域に、前記受信完了信号に対応する受信制御部からのデータが格納されたキューイングバッファを示す情報を格納し、
前記受信完了信号に基づき前記書き込みポインタ及び前記順序待ちポインタをインクリメントさせ、
前記送信制御部は、
前記コヒーレンシバッファの前記次送信ポインタが指定する領域に格納された情報を参照し、
前記参照した情報に対応するキューイングバッファの前記読み出しポインタが指定する領域に格納されたデータを読み出して前記バスに対して送信し、
前記バスへのデータ送信を完了したことを示す送信完了信号を生成し、前記キューイングバッファ及び前記コヒーレンシバッファに対して送信し、
前記送信完了信号に基づき前記読み出しポインタ及び前記次送信ポインタをインクリメントさせることを特徴とする請求項１に記載のバス調停回路。
【請求項３】
前記複数の受信制御部に対して優先順位を設定し、
前記コヒーレンシバッファは、
前記複数の受信制御部から同時に受信した複数の受信完了信号と前記設定された優先順位とに基づき、前記優先順位が最も高い受信制御部からのデータが格納されたキューイングバッファを示す情報を、前記順序待ちポインタが指定する領域に格納し、
前記優先順位に従って、該優先順位が高い受信制御部からのデータが格納されたキューイングバッファを示す情報を次の領域に順次格納し、
前記順序待ちポインタを、同時に受信した前記複数の受信完了信号の数だけインクリメントさせることを特徴とする請求項２に記載のバス調停回路。
【請求項４】
複数のデバイスが接続され、該複数のデバイスから受信したデータを共通のバスに対して送信するバス調停回路のバス調停方法であって、
複数のデバイスから送信されたデータを複数の受信制御部で各々受信し、
前記受信したデータを一時バッファに各々保持し、
前記一時バッファに保持した複数のデータに対するエラーの有無を判断し、前記データにエラーがないと判断した場合に、前記データを複数の領域からなる複数のキューイングバッファの所定の領域に各々格納すると共に、前記データにエラーがあると判断した場合に、前記データを初期化し、
前記デバイスから受信したデータが格納されたキューイングバッファを示す情報を、前記複数の受信制御部がデータを受信した順序に従って複数の領域からなるコヒーレンシバッファの所定の領域に格納し、
前記コヒーレンシバッファに格納された情報に基づき、前記データを受信した順序通りに前記キューイングバッファからデータを読み出し、バスに対して送信することを特徴とするバス調停方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バス調停回路に関し、特に、コンピュータ装置や情報処理装置等に適用可能なバス調停回路及びバス調停方法に関する。
【背景技術】
【０００２】
従来、複数のデバイスがバスを共有するシステムにおいては、どのデバイスにバスの使用権を与えるのかを決定し、バス使用権の調停を行うバス調停回路が設けられている。従来のバス調停回路を用いた場合、ある特定のデバイスがビジー状態（転送サイクル中）であると、他のデバイスは、この特定のデバイスによるデータの転送が完了するまでリトライを繰り返す。そして、このような動作が連続すると、他のデバイスは、データを転送することができなくなってしまう。
【０００３】
そこで、この種のバス調停回路では、ある特定のデバイスがビジー状態（転送サイクル中）である場合、他のデバイスがリトライを繰り返し続けることによりデータの転送が不可能となるのを防ぐ方法が提案されている。
【０００４】
例えば、下記の特許文献１には、バスに接続されたデバイスのビジー状態を監視し、リトライを繰り返すデバイスを記憶し、優先してそのデバイスによるデータの転送を開始するバス調停回路が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−３６６５１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に記載のバス調停回路では、リトライを繰り返す特定のデバイスに対して優先的にバス使用権が与えられるが、バス使用権を得るまでは、他のデバイスがバスを占有している。そのため、特定のデバイスがデータの転送を待つか、リトライを繰り返さなければならないという問題があった。
【０００７】
また、特定のデバイスが故障し、転送サイクルが完了できない場合には、バスを開放するための施策が必要となり、その条件に合うまでバスを開放することができない。そのため、他のデバイスは、データの転送を待ち続けるか、リトライを繰り返さなければならないという問題があった。
【０００８】
そこで、本発明は、上記従来の技術における問題点に鑑みてなされたものであって、複数のデバイスによるデータ転送を同時に行うことができるとともに、特定のデバイスが故障した場合でも、他のデバイスによるデータ転送が可能なバス調停回路システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明は、複数のデバイスが接続され、該複数のデバイスから受信したデータを共通のバスに対して送信するバス調停回路であって、複数の領域からなり、データを所定の領域に格納する複数のキューイングバッファと、データを保持する一時バッファを有し、複数のデバイスから送信されたデータを各々受信して前記一時バッファに各々保持し、該一時バッファに保持した該データの前記キューイングバッファへの書き込みを制御する複数の受信制御部と、複数の領域からなり、前記デバイスから受信したデータが格納されたキューイングバッファを示す情報を、前記複数の受信制御部がデータを受信した順序に従って所定の領域に格納するコヒーレンシバッファと、前記コヒーレンシバッファに格納された情報に基づき、前記データを受信した順序通りに前記キューイングバッファからデータを読み出し、バスに対して送信する送信制御部とを備え、前記受信制御部は、前記一時バッファに保持したデータに対するエラーの有無を判断し、前記データにエラーがあると判断した場合に、前記データを初期化することを特徴とする。
【００１０】
そして、本発明によれば、複数のデバイスから受信したデータのキューイングバッファへの書き込みを制御する受信制御部と、受信したデータを格納するキューイングバッファとを、デバイスに応じて各々独立して設けたため、複数のデバイスから同時にデータを受信することができ、特定のデバイスがデータの送信が不可能となった場合であっても、他のデバイスは、影響を受けることなくデータを正常に送信することが可能になる。
【００１１】
また、受信したデータが格納されたキューイングバッファを示す情報を、各受信制御部がデータを受信した順序に基づいて保持するコヒーレンシバッファを設けたため、各デバイスから受信したデータを、受信した順序通りにバスへ送信することが可能になる。
【００１２】
上記バス調停回路において、前記キューイングバッファは、前記受信制御部により受信したデータを格納する領域を指定する書き込みポインタと、前記送信制御部により読み出されるデータを格納する領域を指定する読み出しポインタとを有し、前記コヒーレンシバッファは、前記デバイスから受信したデータが格納されたキューイングバッファを示す情報を格納する領域を指定する順序待ちポインタと、前記バスに対して送信するデータが格納されたキューイングバッファを示す情報が格納された領域を指定する次送信ポインタとを有し、前記受信制御部は、前記キューイングバッファの前記書き込みポインタが指定する領域に、前記デバイスから受信したデータを格納し、前記デバイスからのデータを正常に受信したことを示す受信完了信号を生成し、前記キューイングバッファ及び前記コヒーレンシバッファに対して送信し、前記コヒーレンシバッファの前記順序待ちポインタが指定する領域に、前記受信完了信号に対応する受信制御部からのデータが格納されたキューイングバッファを示す情報を格納し、前記受信完了信号に基づき前記書き込みポインタ及び前記順序待ちポインタをインクリメントさせ、前記送信制御部は、前記コヒーレンシバッファの前記次送信ポインタが指定する領域に格納された情報を参照し、前記参照した情報に対応するキューイングバッファの前記読み出しポインタが指定する領域に格納されたデータを読み出して前記バスに対して送信し、前記バスへのデータ送信を完了したことを示す送信完了信号を生成し、前記キューイングバッファ及び前記コヒーレンシバッファに対して送信し、前記送信完了信号に基づき前記読み出しポインタ及び前記次送信ポインタをインクリメントさせることができる。
【００１３】
上記バス調停回路において、前記複数の受信制御部に対して優先順位を設定し、前記コヒーレンシバッファは、前記複数の受信制御部から同時に受信した複数の受信完了信号と前記設定された優先順位とに基づき、前記優先順位が最も高い受信制御部からのデータが格納されたキューイングバッファを示す情報を、前記順序待ちポインタが指定する領域に格納し、前記優先順位に従って、該優先順位が高い受信制御部からのデータが格納されたキューイングバッファを示す情報を次の領域に順次格納し、前記順序待ちポインタを、同時に受信した前記複数の受信完了信号の数だけインクリメントさせることができる。
【００１４】
そして、本発明によれば、複数の受信制御部に対して優先順位を予め設定したため、複数のデバイスから同時にデータを受信した場合であっても、設定された優先順位に従ってデータの送信順序を決定することが可能になる。
【００１６】
また、本発明は、複数のデバイスが接続され、該複数のデバイスから受信したデータを共通のバスに対して送信するバス調停回路のバス調停方法であって、複数のデバイスから送信されたデータを複数の受信制御部で各々受信し、前記受信したデータを一時バッファに各々保持し、前記一時バッファに保持した複数のデータに対するエラーの有無を判断し、前記データにエラーがないと判断した場合に、前記データを複数の領域からなる複数のキューイングバッファの所定の領域に各々格納すると共に、前記データにエラーがあると判断した場合に、前記データを初期化し、前記デバイスから受信したデータが格納されたキューイングバッファを示す情報を、前記複数の受信制御部がデータを受信した順序に従って複数の領域からなるコヒーレンシバッファの所定の領域に格納し、前記コヒーレンシバッファに格納された情報に基づき、前記データを受信した順序通りに前記キューイングバッファからデータを読み出し、バスに対して送信することを特徴とする。
【００１７】
本発明によれば、前記発明と同様に、複数のデバイスによるデータ転送を同時に行うことができるとともに、特定のデバイスが故障した場合でも、他のデバイスによるデータ転送が可能になる。
【発明の効果】
【００１８】
以上のように、本発明によれば、複数のデバイスによるデータ転送を同時に行うことができるとともに、特定のデバイスが故障した場合でも、他のデバイスによるデータ転送が可能になる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施の形態によるバス調停回路の一例の構成を示すブロック図である。
【図２】受信制御部の状態について説明するための状態遷移図である。
【発明を実施するための形態】
【００２０】
次に、発明を実施するための形態について、図面を参照しながら詳細に説明する。
【００２１】
図１は、本発明にかかるバス調停回路の一実施の形態を示し、このバス調停回路１には、バス２と、バス２を共有するデバイス３ａ〜３ｃとが接続される。尚、図１に示す例では、３つのデバイス３ａ〜３ｃが接続されているが、これに限られず、２以下または４以上のデバイスが接続されてもよい。
【００２２】
ここで、各デバイス３ａ〜３ｃから送信されるデータについて説明する。各デバイス３ａ〜３ｃからバス調停回路１に対して送信されるデータは、所定のパケットのペイロードに格納され、パケット単位で送信される。パケットの先頭及び最後尾には、スタートパケット（ＳＯＰ；Start Of Packet）及びエンドパケット（ＥＯＰ；End Of Packet）が各々付加される。
【００２３】
バス調停回路１は、大別して、受信制御部１１ａ〜１１ｃ、キューイングバッファ１２ａ〜１２ｃ、コヒーレンシバッファ１３及び送信制御部１４で構成される。受信制御部１１ａ〜１１ｃ及びキューイングバッファ１２ａ〜１２ｃは、バス調停回路１に接続されるデバイスに対応して各々独立して設けられる。尚、以下の説明において、受信制御部１１ａ〜１１ｃ及びキューイングバッファ１２ａ〜１２ｃの各々を特に区別する必要がない場合には、単に、受信制御部１１及びキューイングバッファ１２とする。
【００２４】
受信制御部１１ａ〜１１ｃは、デバイス３ａ〜３ｃからデータを受信するとともに、受信したデータのキューイングバッファ１２ａ〜１２ｃへの書き込みを制御する。受信制御部１１ａ〜１１ｃには、一時バッファ２１ａ〜２１ｃが接続され、デバイス３ａ〜３ｃから受信したパケットを一時バッファ２１ａ〜２１ｃに格納する。受信制御部１１ａ〜１１ｃは、受信したパケットに付加されたＳＯＰ及びＥＯＰの有無を判断することにより、パケットが正常に受信できたか否かを判断し、データを正常に受信した際に、一時バッファ２１ａ〜２１ｃに格納されたデータをキューイングバッファ１２ａ〜１２ｃに書き込む。
【００２５】
また、受信制御部１１ａ〜１１ｃは、データを正常に受信したことを示す受信完了信号を生成し、この受信完了信号を後述のキューイングバッファ１２ａ〜１２ｃの書き込みポインタ２２ａ〜２２ｃ、及びコヒーレンシバッファ１３の順序待ちポインタ２４に対して送信する。
【００２６】
キューイングバッファ１２ａ〜１２ｃは、受信制御部１１ａ〜１１ｃから受信したデータを格納するための複数の領域が設けられ、書き込みポインタ２２ａ〜２２ｃ及び読み出しポインタ２３ａ〜２３ｃが接続される。
【００２７】
書き込みポインタ２２ａ〜２２ｃは、受信制御部１１ａ〜１１ｃから受け取ったデータを、キューイングバッファ１２ａ〜１２ｃにおける複数の領域のうち、どの領域に格納するかを指定するためのポインタである。書き込みポインタ２２ａ〜２２ｃは、受信制御部１１ａ〜１１ｃから受信完了信号を受信すると、ポインタを１ずつインクリメントさせる。
【００２８】
読み出しポインタ２３ａ〜２３ｃ（以下、特に区別する必要がない場合には、単に、読み出しポインタ２３とする）は、キューイングバッファ１２ａ〜１２ｃの複数の領域に各々格納されたデータのうち、どの領域に格納されたデータを読み出して送信するかを指定するためのポインタである。読み出しポインタ２３ａ〜２３ｃは、送信制御部１４から後述の送信完了信号を受信すると、ポインタを１ずつインクリメントさせる。
【００２９】
キューイングバッファ１２ａ〜１２ｃは、受信制御部１１ａ〜１１ｃの制御により、受信したデータを書き込みポインタ２２ａ〜２２ｃが指定する領域に格納する。また、キューイングバッファ１２ａ〜１２ｃは、後述する送信制御部１４の制御により、読み出しポインタ２３ａ〜２３ｃが指定する領域からデータを読み出して送信制御部１４に転送する。
【００３０】
コヒーレンシバッファ１３は、デバイス３ａ〜３ｃから受信したデータを、受信した順序通りにバス２へ送信するために、受信したデータが格納されたキューイングバッファ１２ａ〜１２ｃを示す情報を格納する複数の領域が設けられ、順序待ちポインタ２４及び次送信ポインタ２５が接続される。
【００３１】
順序待ちポインタ２４は、バス２への送信の順序待ちをしているデータが格納されたキューイングバッファ１２ａ〜１２ｃを示す情報を格納する領域を指定するためのポインタである。順序待ちポインタ２４は、受信制御部１１ａ〜１１ｃから受信完了信号を受信すると、ポインタを１ずつインクリメントさせる。
【００３２】
次送信ポインタ２５は、コヒーレンシバッファ１３における複数の領域のうち、次にバス２に送信するデータが格納されたキューイングバッファ１２ａ〜１２ｃを示す情報が格納された領域を指定するためのポインタである。次送信ポインタ２５は、送信制御部１４から後述の送信完了信号を受信すると、ポインタを１ずつインクリメントさせる。
【００３３】
コヒーレンシバッファ１３は、受信制御部１１ａ〜１１ｃのうち所定の受信制御部から受信完了信号を受信すると、この受信完了信号に基づき、順序待ちポインタ２４が指定する領域に、所定の受信制御部１１からのデータが格納されたキューイングバッファ１２を示す情報（以下、「キューイングバッファ１２を示す情報」とする）を格納する。
【００３４】
送信制御部１４は、キューイングバッファ１２ａ〜１２ｃからのデータの読み出し及びバス２への送信を制御する。送信制御部１４は、バス２への送信が可能になった際に、コヒーレンシバッファ１３の次送信ポインタ２５が示す領域に格納された情報に基づき、送信待ちとなっているデータを格納するキューイングバッファ１２ａ〜１２ｃから、読み出しポインタ２３ａ〜２３ｃが示す領域のデータを読み出し、バス２に送信する。また、送信制御部１４は、バス２へのデータの送信が完了したことを示す送信完了信号を生成し、この送信完了信号を読み出しポインタ２３ａ〜２３ｃ及び次送信ポインタ２５に対して送信する。
【００３５】
次に、上記構成を有するバス調停回路１の動作について、図１及び図２を参照しながら説明する。図２は、受信制御部１１ａ〜１１ｃにおける動作の一例を示す状態遷移図である。尚、以下では、デバイス３ａからデータが転送された場合の動作を例にとって説明する。
【００３６】
従来のバス調停回路においては、受信制御部からのチップセレクト信号やレディ信号、あるいはウェイト信号等の制御信号により、デバイスからのデータ転送の開始や待機等を制御する。
【００３７】
これに対して、本実施の形態では、複数のデバイスから送信されたデータを受信する受信制御部と、受信したデータを格納するキューイングバッファとをデバイスに応じて各々独立して設けるようにしている。そのため、デバイスからのデータ転送の際には、従来のバス調停回路で用いられているチップセレクト信号等の制御信号が不要であり、各デバイスからの転送を受信制御部が受け付けることができる。
【００３８】
例えば、各デバイス３ａ〜３ｃと受信制御部１１ａ〜１１ｃとのインタフェースが、スタートパケット（ＳＯＰ）→ペイロード→チェック→エンドパケット（ＥＯＰ）というフォーマットである場合、各受信制御部１１ａ〜１１ｃは、図２に示す状態を遷移することになる。
【００３９】
初期状態において、受信制御部１１ａは、ＳＯＰステート（図２のステップＳ１）の状態となっている。受信制御部１１ａは、デバイス３ａからパケットを受信すると、パケットの先頭に付加されたＳＯＰの有無を判断する。受信したパケットからＳＯＰを認識した場合には、状態がペイロードステート（図２のステップＳ２）に遷移する。一方、ＳＯＰを認識しない場合には、そのままの状態で待機する。
【００４０】
状態がペイロードステート（ステップＳ２）に遷移すると、受信制御部１１ａは、受信したパケットのペイロードに格納されたデータを一時バッファ２１ａに保持する。そして、デバイス３ａからのデータ受信が完了すると、状態がチェックステート（図２のステップＳ３）に遷移する。
【００４１】
状態がチェックステート（ステップＳ３）に遷移すると、受信制御部１１ａは、これまでに受信したパケットにおけるエラーの有無を判断する。エラーがないと判断した場合には、状態がＥＯＰステート（図２のステップＳ４）に遷移する。一方、エラーがあると判断した場合には、一時バッファ２１ａに保持したデータを初期化し、状態がＳＯＰステート（ステップＳ１）に遷移する。そして、デバイス３ａから次のパケットが転送されるまで待機する。
【００４２】
状態がＥＯＰステート（ステップＳ４）に遷移すると、受信制御部１１ａは、受信したパケットの最後尾に付加されたＥＯＰの有無を判断する。受信したパケットからＥＯＰを認識した場合には、パケットを正常に受信したと判断する。そして、受信制御部１１ａは、受信完了信号を生成し、書き込みポインタ２２ａ及び順序待ちポインタ２４に対して送信する。また、状態がＳＯＰステート（ステップＳ１）に遷移し、次のパケットを受信するまで待機する。一方、ＥＯＰを認識しない場合には、そのままの状態で待機する。
【００４３】
受信制御部１１ａは、一時バッファ２１ａに保持したデータを、キューイングバッファ１２ａの書き込みポインタ２２ａが指定する領域に格納する。書き込みポインタ２２ａは、受信制御部１１ａから受信した受信完了信号により１だけインクリメントされる。
【００４４】
例えば、最初に書き込みポインタ２２ａの指定する領域が第１の領域であった場合、現在送信されたパケットのデータは、キューイングバッファ１２ａの第１の領域に格納される。そして、書き込みポインタ２２ａは、受信完了信号によって１だけインクリメントされ、次の領域である第２の領域を指定することになる。従って、次に送信されたパケットのデータは、キューイングバッファ１２ａの第２の領域に格納されることになる。
【００４５】
このようにして、受信完了信号によってポインタが１ずつインクリメントされることにより、デバイス３ａから受信したパケットのデータが書き込みポインタ２２ａが指定するキューイングバッファ１２ａの所定の領域に順次格納される。
【００４６】
他のデバイス３ｂ及び３ｃからパケットが送信された場合においても、同様に処理が行われ、受信制御部１１ｂ及び１１ｃは、デバイス３ｂ及び３ｃからのパケットを受信し、キューイングバッファ１２ｂ及び１２ｃに格納する。すなわち、各デバイス３ａ〜３ｃから送信されたパケットのデータをキューイングバッファ１２ａ〜１２ｃに格納する際には、他のデバイスとの関係を考慮する必要がなく、独立してデータを受信することができる。
【００４７】
コヒーレンシバッファ１３は、受信制御部１１ａから受信完了信号を受け取った場合、順序待ちポインタ２４が指定する領域に、受信制御部１１ａからのデータが格納されたキューイングバッファ１２ａを示す情報を保持する。また、順序待ちポインタ２４は、受信完了信号によって１だけインクリメントされる。
【００４８】
同様に、受信制御部１１ｂ及び１１ｃから受信完了信号を受け取った場合についても、順序待ちポインタ２４が指定する領域に、受信制御部１１ｂ及び１１ｃからのデータが格納されたキューイングバッファ１２ｂ及び１２ｃを示す情報を保持する。
【００４９】
例えば、受信制御部１１ａ、１１ｂ及び１１ｃからのデータが格納されたキューイングバッファ１２ａ、１２ｂ及び１２ｃを示す情報を、各々値「０１」、値「１０」及び値「１１」とし、受信完了信号を受信制御部１１ａ、１１ｃ、１１ｂ及び１１ｂの順序で受け取った場合について考える。この場合、最初に順序待ちポインタ２４が指定するコヒーレンシバッファ１３の第１の領域には、キューイングバッファ１２ａを示す情報である値「０１」が書き込まれる。次に、受信完了信号によって順序待ちポインタ２４が１だけインクリメントされ、コヒーレンシバッファ１３の第２の領域には、キューイングバッファ１２ｃを示す情報である値「１１」が書き込まれる。以下、同様にして、コヒーレンシバッファ１３の第３の領域には、キューイングバッファ１２ｂを示す情報である値「１０」が書き込まれるとともに、第４の領域には、キューイングバッファ１２ｂを示す情報である値「１０」が書き込まれることになる。
【００５０】
送信制御部１４は、バス２への送信が可能になると、コヒーレンシバッファ１３の次送信ポインタ２５が指定する領域に保持された情報を参照し、複数の受信制御部１１ａ〜１１ｃのうちどの受信制御部１１からのデータが送信待ちとなっているかを判断する。そして、送信制御部１４は、次送信ポインタ２５が指定する領域に保持された情報に対応するキューイングバッファ１２の読み出しポインタ２３が指定する所定の領域に格納されたデータを読み出し、バス２に対して送信する。
【００５１】
バス２への送信が正常に完了すると、送信制御部１４は、送信完了信号を次送信ポインタ２５、及びデータを読み出したキューイングバッファ１２に対応する読み出しポインタ２３に送信し、各々ポインタを１だけインクリメントさせる。
【００５２】
次に、送信制御部１４は、１だけインクリメントされた次送信ポインタ２５が指定する領域に保持された情報を参照し、この情報に対応するキューイングバッファ１２の読み出しポインタ２３が指定する所定の領域に格納されたデータを読み出し、バス２に対して送信する。以下、同様にして、送信制御部１４は、次送信ポインタ２５が指定する領域に保持された情報を参照し、キューイングバッファ１２の所定の領域に格納されたデータを順次読み出し、バス２に対して送信する。
【００５３】
上述の例においては、最初に、次送信ポインタ２５がコヒーレンシバッファ１３の第１の領域を指定しているものとすると、送信制御部１４は、コヒーレンシバッファ１３の第１の領域に保持された情報を参照する。第１の領域に保持された情報は、値「０１」であるので、送信制御部１４は、受信制御部１１ａからの送信待ちであると判断する。そして、値「０１」に対応するキューイングバッファ１２ａの読み出しポインタ２３ａが指定する領域に格納されたデータを読み出し、バス２に対して送信する。
【００５４】
送信制御部１４は、バス２への送信が正常に完了すると、送信完了信号を次送信ポインタ２５及び読み出しポインタ２３ａに送信し、各々ポインタを１ずつインクリメントさせる。これにより、次送信ポインタ２５が指定する領域は、第２の領域となる。
【００５５】
次に、送信制御部１４は、コヒーレンシバッファ１３の第２の領域に保持された情報を参照する。第２の領域に保持された情報は、値「１１」であるので、送信制御部１４は、受信制御部１１ｃからの送信待ちであると判断し、値「１１」に対応するキューイングバッファ１２ｃの読み出しポインタ２３ｃが指定する領域に格納されたデータを読み出し、バス２に対して送信する。
【００５６】
送信制御部１４は、バス２への送信が正常に完了すると、送信完了信号を次送信ポインタ２５及び読み出しポインタ２３ｃに送信し、各々ポインタを１ずつインクリメントさせる。これにより、次送信ポインタ２５が指定する領域は、第３の領域となる。
【００５７】
以下、同様にして、送信制御部１４は、次送信ポインタ２５が指定する第３及び第４の領域に保持された情報を参照する。第３及び第４の領域に保持された情報は、各々値「１０」であるので、送信制御部１４は、値「１１」に対応するキューイングバッファ１２ｃの読み出しポインタ２３ｃが指定する領域に格納されたデータを読み出し、バス２に対して送信する。
【００５８】
このようにして、複数のデバイス３ａ〜３ｃから送信され、キューイングバッファ１２ａ〜１２ｃに格納されたデータを、コヒーレンシバッファ１３に保持された情報に基づいて順次読み出すことにより、受信したデータを受信した順序通りにバス２に対して送信することができる。
【００５９】
以上のように、本実施の形態によれば、外部に接続された複数のデバイスから送信されたデータを受信する受信制御部と、受信したデータを格納するキューイングバッファとを、デバイスに応じて各々独立して設けたため、他のデバイスの影響を受けることなく、複数のデバイスから同時にデータを受信することができる。このため、ある特定のデバイスが何らかの影響でデータの送信が不可能となった場合であっても、他のデバイスは、その影響を受けることなくデータを正常に送信することができる。
【００６０】
また、本実施の形態によれば、受信したデータが格納されたキューイングバッファを示す情報を、データを受信した順序に基づいて保持するコヒーレンシバッファを設けたため、各デバイスから受信したデータを、受信した順序通りにバスへ送信することができる。
【００６１】
さらに、本実施の形態によれば、受信制御部及びキューイングバッファを、デバイスに応じて各々独立して設けたため、各デバイスに対してバス使用権を与えることなく、データの転送が可能となる。
【００６２】
次に、本発明に係る他の実施形態について説明する。
【００６３】
複数のデバイスが接続されたバス調停回路１においては、各デバイス３ａ〜３ｃから送信されたデータを同時に受信する場合が考えられる。このような場合、図１及び図２に示した実施形態では、データの受信が完了した際に、各受信制御部１１ａ〜１１ｃにおいて受信完了信号を同時に生成し、順序待ちポインタ２４に送信することになる。
【００６４】
このとき、順序待ちポインタ２４は、同時に複数の受信完了信号を受信することになる。そのため、コヒーレンシバッファ１３は、順序待ちポインタ２４が指定する領域に対して、どの受信制御部１１からのデータが格納されたキューイングバッファ１２を示す情報を格納すべきか判断できず、受信したデータをバス２へ送信する際に、適切な送信順序で送信することができないことが考えられる。
【００６５】
そこで、本実施の形態では、複数のデバイスからデータを同時に受信した場合でも、受信したデータをバスへ送信する順序を決定できるように、各デバイスに対応する受信制御部に対して優先順位を設定する。
【００６６】
尚、本実施の形態に係るバス調停回路１の構成については、図１に示す実施の形態によるバス調停回路１と同様であるため、説明を省略する。
【００６７】
本実施の形態に係るバス調停回路１の動作について、図１を参照して説明する。但し、各デバイス３ａ〜３ｃから送信されたデータをキューイングバッファ１２ａ〜１２ｃに格納する動作、並びにキューイングバッファ１２ａ〜１２ｃからデータを読み出してバス２に送信する動作については、上述した実施の形態と同様であるため、説明を省略する。
【００６８】
本実施の形態では、受信制御部１１ａ〜１１ｃに対して優先順位を予め設定しておく。コヒーレンシバッファ１３は、複数の受信完了信号を同時に受信すると、予め設定された優先順位に基づき順序待ちポインタ２４が指定する領域に、優先順位が最も高い受信制御部１１からのデータが格納されたキューイングバッファ１２を示す情報を保持する。次に、この領域の一つ先の領域に、優先順位が次に高い受信制御部１１からのデータが格納されたキューイングバッファ１２を示す情報を保持する。以下同様に、優先順位に従って、さらに一つ先の領域にキューイングバッファ１２を示す情報を順次保持する。
【００６９】
そして、順序待ちポインタ２４は、同時に受信した受信完了信号の数に応じて、所定数だけインクリメントされる。インクリメントされる数は、同時に受信した受信完了信号の数となる。例えば、順序待ちポインタ２４は、２つの受信完了信号を受信した場合に２だけインクリメントされ、３つの受信完了信号を受信した場合に３だけインクリメントされる。
【００７０】
ここで、一例として、優先順位を受信制御部１１ａ、１１ｂ及び１１ｃの順とした場合について、上述した実施の形態で説明した具体例に基づいて説明する。例えばデバイス３ａ及び３ｂから送信された２つのデータを、受信制御部１１ａ及び１１ｂにおいて各々同時に受信した場合、受信制御部１１ａ及び１１ｂは、受信完了信号を各々生成し、コヒーレンシバッファ１３の順序待ちポインタ２４に対して同時に送信する。
【００７１】
最初に順序待ちポインタ２４が指定するコヒーレンシバッファ１３の領域が第１の領域である場合には、予め設定された優先順位に従い、第１の領域に、受信制御部１１ａからのデータが格納されたキューイングバッファ１２ａを示す情報である値「０１」が書き込まれ、第２の領域に、受信制御部１１ｂからのデータが格納されたキューイングバッファ１２ｂを示す情報である値「１０」が書き込まれる。そして、順序待ちポインタ２４は、同時に２つの受信完了信号を受信したことにより、２だけインクリメントされる。
【００７２】
また、例えばデバイス３ａ、３ｂ及び３ｃから送信された３つのデータを、受信制御部１１ａ、１１ｂ及び１１ｃにおいて各々同時に受信した場合には、予め設定された優先順位に従い、順序待ちポインタ２４が指定する第１の領域に、キューイングバッファ１２ａを示す情報である値「０１」が書き込まれ、第２の領域に、キューイングバッファ１２ｂを示す情報である値「１０」が書き込まれ、第３の領域に、キューイングバッファ１２ｃを示す情報である値「１１」が書き込まれる。そして、順序待ちポインタ２４は、同時に３つの受信完了信号を受信したことにより、３だけインクリメントされる。
【００７３】
このように、同時に受信した受信完了信号の数に応じて、順序待ちポインタ２４のインクリメントされる数を決定することにより、次以降の各デバイスからのデータ受信を適切に行うことができる。
【００７４】
以上のように、本実施の形態によれば、複数の受信制御部に対して優先順位を予め設定するようにしているため、複数のデバイスから同時にデータを受信した場合であっても、設定された優先順位に従ってデータの送信順序を決定し、データを適切にバスへ送信することができる。
【００７５】
以上、本発明の一実施の形態及び他の実施形態について説明したが、本発明は、上述した本発明の一実施の形態及び他の実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【符号の説明】
【００７６】
１  バス調停回路
２  バス
３（３ａ〜３ｃ）  デバイス
１１（１１ａ〜１１ｃ）  受信制御部
１２（１２ａ〜１２ｃ）  キューイングバッファ
１３  コヒーレンシバッファ
１４  送信制御部
２１（２１ａ〜２１ｃ）  一時バッファ
２２（２２ａ〜２２ｃ）  書き込みポインタ
２３（２３ａ〜２３ｃ）  読み出しポインタ
２４  順序待ちポインタ
２５  次送信ポインタ
【図１】
0005652866.tif 000002
【図２】
0005652866.tif 000003