説明

バス調停回路及びバス調停方法

【課題】複数のデバイスによるデータ転送を同時に行うことができるとともに、特定のデバイスが故障した場合でも、他のデバイスによるデータ転送を可能とする。
【解決手段】バス調停回路1は、複数の領域からなり、データを所定領域に格納する複数のキューイングバッファ12a〜12cと、デバイス3a〜3cから送信されたデータを各々受信し、受信データのキューイングバッファ12a〜12cへの書き込みを制御する複数の受信制御部11a〜11cと、複数の領域からなり、デバイス3a〜3cからの受信データが格納されたキューイングバッファ12a〜12cを示す情報を、複数の受信制御部によるデータの受信順序に従って所定領域に格納するコヒーレンシバッファ13と、コヒーレンシバッファ13に格納された情報に基づき、データの受信順序通りにキューイングバッファ12a〜12cからデータを読み出し、バス2に送信する送信制御部14とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、バス調停回路に関し、特に、コンピュータ装置や情報処理装置等に適用可能なバス調停回路及びバス調停方法に関する。
【背景技術】
【0002】
従来、複数のデバイスがバスを共有するシステムにおいては、どのデバイスにバスの使用権を与えるのかを決定し、バス使用権の調停を行うバス調停回路が設けられている。従来のバス調停回路を用いた場合、ある特定のデバイスがビジー状態(転送サイクル中)であると、他のデバイスは、この特定のデバイスによるデータの転送が完了するまでリトライを繰り返す。そして、このような動作が連続すると、他のデバイスは、データを転送することができなくなってしまう。
【0003】
そこで、この種のバス調停回路では、ある特定のデバイスがビジー状態(転送サイクル中)である場合、他のデバイスがリトライを繰り返し続けることによりデータの転送が不可能となるのを防ぐ方法が提案されている。
【0004】
例えば、下記の特許文献1には、バスに接続されたデバイスのビジー状態を監視し、リトライを繰り返すデバイスを記憶し、優先してそのデバイスによるデータの転送を開始するバス調停回路が記載されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2002−366511号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、特許文献1に記載のバス調停回路では、リトライを繰り返す特定のデバイスに対して優先的にバス使用権が与えられるが、バス使用権を得るまでは、他のデバイスがバスを占有している。そのため、特定のデバイスがデータの転送を待つか、リトライを繰り返さなければならないという問題があった。
【0007】
また、特定のデバイスが故障し、転送サイクルが完了できない場合には、バスを開放するための施策が必要となり、その条件に合うまでバスを開放することができない。そのため、他のデバイスは、データの転送を待ち続けるか、リトライを繰り返さなければならないという問題があった。
【0008】
そこで、本発明は、上記従来の技術における問題点に鑑みてなされたものであって、複数のデバイスによるデータ転送を同時に行うことができるとともに、特定のデバイスが故障した場合でも、他のデバイスによるデータ転送が可能なバス調停回路システムを提供することを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するため、本発明は、複数のデバイスが接続され、該複数のデバイスから受信したデータを共通のバスに対して送信するバス調停回路であって、複数の領域からなり、データを所定の領域に格納する複数のキューイングバッファと、複数のデバイスから送信されたデータを各々受信し、受信した該データの前記キューイングバッファへの書き込みを制御する複数の受信制御部と、複数の領域からなり、前記デバイスから受信したデータが格納されたキューイングバッファを示す情報を、前記複数の受信制御部がデータを受信した順序に従って所定の領域に格納するコヒーレンシバッファと、前記コヒーレンシバッファに格納された情報に基づき、前記データを受信した順序通りに前記キューイングバッファからデータを読み出し、バスに対して送信する送信制御部とを備えることを特徴とする。
【0010】
そして、本発明によれば、複数のデバイスから受信したデータのキューイングバッファへの書き込みを制御する受信制御部と、受信したデータを格納するキューイングバッファとを、デバイスに応じて各々独立して設けたため、複数のデバイスから同時にデータを受信することができ、特定のデバイスがデータの送信が不可能となった場合であっても、他のデバイスは、影響を受けることなくデータを正常に送信することが可能になる。
【0011】
また、受信したデータが格納されたキューイングバッファを示す情報を、各受信制御部がデータを受信した順序に基づいて保持するコヒーレンシバッファを設けたため、各デバイスから受信したデータを、受信した順序通りにバスへ送信することが可能になる。
【0012】
上記バス調停回路において、前記キューイングバッファは、前記受信制御部により受信したデータを格納する領域を指定する書き込みポインタと、前記送信制御部により読み出されるデータを格納する領域を指定する読み出しポインタとを有し、前記コヒーレンシバッファは、前記デバイスから受信したデータが格納されたキューイングバッファを示す情報を格納する領域を指定する順序待ちポインタと、前記バスに対して送信するデータが格納されたキューイングバッファを示す情報が格納された領域を指定する次送信ポインタとを有し、前記受信制御部は、前記キューイングバッファの前記書き込みポインタが指定する領域に、前記デバイスから受信したデータを格納し、前記デバイスからのデータを正常に受信したことを示す受信完了信号を生成し、前記キューイングバッファ及び前記コヒーレンシバッファに対して送信し、前記コヒーレンシバッファの前記順序待ちポインタが指定する領域に、前記受信完了信号に対応する受信制御部からのデータが格納されたキューイングバッファを示す情報を格納し、前記受信完了信号に基づき前記書き込みポインタ及び前記順序待ちポインタをインクリメントさせ、前記送信制御部は、前記コヒーレンシバッファの前記次送信ポインタが指定する領域に格納された情報を参照し、前記参照した情報に対応するキューイングバッファの前記読み出しポインタが指定する領域に格納されたデータを読み出して前記バスに対して送信し、前記バスへのデータ送信を完了したことを示す送信完了信号を生成し、前記キューイングバッファ及び前記コヒーレンシバッファに対して送信し、前記送信完了信号に基づき前記読み出しポインタ及び前記次送信ポインタをインクリメントさせることができる。
【0013】
上記バス調停回路において、前記複数の受信制御部に対して優先順位を設定し、前記コヒーレンシバッファは、前記複数の受信制御部から同時に受信した複数の受信完了信号と前記設定された優先順位とに基づき、前記優先順位が最も高い受信制御部からのデータが格納されたキューイングバッファを示す情報を、前記順序待ちポインタが指定する領域に格納し、前記優先順位に従って、該優先順位が高い受信制御部からのデータが格納されたキューイングバッファを示す情報を次の領域に順次格納し、前記順序待ちポインタを、同時に受信した前記複数の受信完了信号の数だけインクリメントさせることができる。
【0014】
そして、本発明によれば、複数の受信制御部に対して優先順位を予め設定したため、複数のデバイスから同時にデータを受信した場合であっても、設定された優先順位に従ってデータの送信順序を決定することが可能になる。
【0015】
上記バス調停回路において、前記受信制御部は、前記デバイスから受信したデータを保持する一時バッファを有することができる。
【0016】
また、本発明は、複数のデバイスが接続され、該複数のデバイスから受信したデータを共通のバスに対して送信するバス調停回路のバス調停方法であって、複数のデバイスから送信されたデータを複数の受信制御部で各々受信し、前記受信した複数のデータを、複数の領域からなる複数のキューイングバッファの所定の領域に各々格納し、前記デバイスから受信したデータが格納されたキューイングバッファを示す情報を、前記複数の受信制御部がデータを受信した順序に従って複数の領域からなるコヒーレンシバッファの所定の領域に格納し、前記コヒーレンシバッファに格納された情報に基づき、前記データを受信した順序通りに前記キューイングバッファからデータを読み出し、バスに対して送信することを特徴とする。
【0017】
本発明によれば、前記発明と同様に、複数のデバイスによるデータ転送を同時に行うことができるとともに、特定のデバイスが故障した場合でも、他のデバイスによるデータ転送が可能になる。
【発明の効果】
【0018】
以上のように、本発明によれば、複数のデバイスによるデータ転送を同時に行うことができるとともに、特定のデバイスが故障した場合でも、他のデバイスによるデータ転送が可能になる。
【図面の簡単な説明】
【0019】
【図1】本発明の一実施の形態によるバス調停回路の一例の構成を示すブロック図である。
【図2】受信制御部の状態について説明するための状態遷移図である。
【発明を実施するための形態】
【0020】
次に、発明を実施するための形態について、図面を参照しながら詳細に説明する。
【0021】
図1は、本発明にかかるバス調停回路の一実施の形態を示し、このバス調停回路1には、バス2と、バス2を共有するデバイス3a〜3cとが接続される。尚、図1に示す例では、3つのデバイス3a〜3cが接続されているが、これに限られず、2以下または4以上のデバイスが接続されてもよい。
【0022】
ここで、各デバイス3a〜3cから送信されるデータについて説明する。各デバイス3a〜3cからバス調停回路1に対して送信されるデータは、所定のパケットのペイロードに格納され、パケット単位で送信される。パケットの先頭及び最後尾には、スタートパケット(SOP;Start Of Packet)及びエンドパケット(EOP;End Of Packet)が各々付加される。
【0023】
バス調停回路1は、大別して、受信制御部11a〜11c、キューイングバッファ12a〜12c、コヒーレンシバッファ13及び送信制御部14で構成される。受信制御部11a〜11c及びキューイングバッファ12a〜12cは、バス調停回路1に接続されるデバイスに対応して各々独立して設けられる。尚、以下の説明において、受信制御部11a〜11c及びキューイングバッファ12a〜12cの各々を特に区別する必要がない場合には、単に、受信制御部11及びキューイングバッファ12とする。
【0024】
受信制御部11a〜11cは、デバイス3a〜3cからデータを受信するとともに、受信したデータのキューイングバッファ12a〜12cへの書き込みを制御する。受信制御部11a〜11cには、一時バッファ21a〜21cが接続され、デバイス3a〜3cから受信したパケットを一時バッファ21a〜21cに格納する。受信制御部11a〜11cは、受信したパケットに付加されたSOP及びEOPの有無を判断することにより、パケットが正常に受信できたか否かを判断し、データを正常に受信した際に、一時バッファ21a〜21cに格納されたデータをキューイングバッファ12a〜12cに書き込む。
【0025】
また、受信制御部11a〜11cは、データを正常に受信したことを示す受信完了信号を生成し、この受信完了信号を後述のキューイングバッファ12a〜12cの書き込みポインタ22a〜22c、及びコヒーレンシバッファ13の順序待ちポインタ24に対して送信する。
【0026】
キューイングバッファ12a〜12cは、受信制御部11a〜11cから受信したデータを格納するための複数の領域が設けられ、書き込みポインタ22a〜22c及び読み出しポインタ23a〜23cが接続される。
【0027】
書き込みポインタ22a〜22cは、受信制御部11a〜11cから受け取ったデータを、キューイングバッファ12a〜12cにおける複数の領域のうち、どの領域に格納するかを指定するためのポインタである。書き込みポインタ22a〜22cは、受信制御部11a〜11cから受信完了信号を受信すると、ポインタを1ずつインクリメントさせる。
【0028】
読み出しポインタ23a〜23c(以下、特に区別する必要がない場合には、単に、読み出しポインタ23とする)は、キューイングバッファ12a〜12cの複数の領域に各々格納されたデータのうち、どの領域に格納されたデータを読み出して送信するかを指定するためのポインタである。読み出しポインタ23a〜23cは、送信制御部14から後述の送信完了信号を受信すると、ポインタを1ずつインクリメントさせる。
【0029】
キューイングバッファ12a〜12cは、受信制御部11a〜11cの制御により、受信したデータを書き込みポインタ22a〜22cが指定する領域に格納する。また、キューイングバッファ12a〜12cは、後述する送信制御部14の制御により、読み出しポインタ23a〜23cが指定する領域からデータを読み出して送信制御部14に転送する。
【0030】
コヒーレンシバッファ13は、デバイス3a〜3cから受信したデータを、受信した順序通りにバス2へ送信するために、受信したデータが格納されたキューイングバッファ12a〜12cを示す情報を格納する複数の領域が設けられ、順序待ちポインタ24及び次送信ポインタ25が接続される。
【0031】
順序待ちポインタ24は、バス2への送信の順序待ちをしているデータが格納されたキューイングバッファ12a〜12cを示す情報を格納する領域を指定するためのポインタである。順序待ちポインタ24は、受信制御部11a〜11cから受信完了信号を受信すると、ポインタを1ずつインクリメントさせる。
【0032】
次送信ポインタ25は、コヒーレンシバッファ13における複数の領域のうち、次にバス2に送信するデータが格納されたキューイングバッファ12a〜12cを示す情報が格納された領域を指定するためのポインタである。次送信ポインタ25は、送信制御部14から後述の送信完了信号を受信すると、ポインタを1ずつインクリメントさせる。
【0033】
コヒーレンシバッファ13は、受信制御部11a〜11cのうち所定の受信制御部から受信完了信号を受信すると、この受信完了信号に基づき、順序待ちポインタ24が指定する領域に、所定の受信制御部11からのデータが格納されたキューイングバッファ12を示す情報(以下、「キューイングバッファ12を示す情報」とする)を格納する。
【0034】
送信制御部14は、キューイングバッファ12a〜12cからのデータの読み出し及びバス2への送信を制御する。送信制御部14は、バス2への送信が可能になった際に、コヒーレンシバッファ13の次送信ポインタ25が示す領域に格納された情報に基づき、送信待ちとなっているデータを格納するキューイングバッファ12a〜12cから、読み出しポインタ23a〜23cが示す領域のデータを読み出し、バス2に送信する。また、送信制御部14は、バス2へのデータの送信が完了したことを示す送信完了信号を生成し、この送信完了信号を読み出しポインタ23a〜23c及び次送信ポインタ25に対して送信する。
【0035】
次に、上記構成を有するバス調停回路1の動作について、図1及び図2を参照しながら説明する。図2は、受信制御部11a〜11cにおける動作の一例を示す状態遷移図である。尚、以下では、デバイス3aからデータが転送された場合の動作を例にとって説明する。
【0036】
従来のバス調停回路においては、受信制御部からのチップセレクト信号やレディ信号、あるいはウェイト信号等の制御信号により、デバイスからのデータ転送の開始や待機等を制御する。
【0037】
これに対して、本実施の形態では、複数のデバイスから送信されたデータを受信する受信制御部と、受信したデータを格納するキューイングバッファとをデバイスに応じて各々独立して設けるようにしている。そのため、デバイスからのデータ転送の際には、従来のバス調停回路で用いられているチップセレクト信号等の制御信号が不要であり、各デバイスからの転送を受信制御部が受け付けることができる。
【0038】
例えば、各デバイス3a〜3cと受信制御部11a〜11cとのインタフェースが、スタートパケット(SOP)→ペイロード→チェック→エンドパケット(EOP)というフォーマットである場合、各受信制御部11a〜11cは、図2に示す状態を遷移することになる。
【0039】
初期状態において、受信制御部11aは、SOPステート(図2のステップS1)の状態となっている。受信制御部11aは、デバイス3aからパケットを受信すると、パケットの先頭に付加されたSOPの有無を判断する。受信したパケットからSOPを認識した場合には、状態がペイロードステート(図2のステップS2)に遷移する。一方、SOPを認識しない場合には、そのままの状態で待機する。
【0040】
状態がペイロードステート(ステップS2)に遷移すると、受信制御部11aは、受信したパケットのペイロードに格納されたデータを一時バッファ21aに保持する。そして、デバイス3aからのデータ受信が完了すると、状態がチェックステート(図2のステップS3)に遷移する。
【0041】
状態がチェックステート(ステップS3)に遷移すると、受信制御部11aは、これまでに受信したパケットにおけるエラーの有無を判断する。エラーがないと判断した場合には、状態がEOPステート(図2のステップS4)に遷移する。一方、エラーがあると判断した場合には、一時バッファ21aに保持したデータを初期化し、状態がSOPステート(ステップS1)に遷移する。そして、デバイス3aから次のパケットが転送されるまで待機する。
【0042】
状態がEOPステート(ステップS4)に遷移すると、受信制御部11aは、受信したパケットの最後尾に付加されたEOPの有無を判断する。受信したパケットからEOPを認識した場合には、パケットを正常に受信したと判断する。そして、受信制御部11aは、受信完了信号を生成し、書き込みポインタ22a及び順序待ちポインタ24に対して送信する。また、状態がSOPステート(ステップS1)に遷移し、次のパケットを受信するまで待機する。一方、EOPを認識しない場合には、そのままの状態で待機する。
【0043】
受信制御部11aは、一時バッファ21aに保持したデータを、キューイングバッファ12aの書き込みポインタ22aが指定する領域に格納する。書き込みポインタ22aは、受信制御部11aから受信した受信完了信号により1だけインクリメントされる。
【0044】
例えば、最初に書き込みポインタ22aの指定する領域が第1の領域であった場合、現在送信されたパケットのデータは、キューイングバッファ12aの第1の領域に格納される。そして、書き込みポインタ22aは、受信完了信号によって1だけインクリメントされ、次の領域である第2の領域を指定することになる。従って、次に送信されたパケットのデータは、キューイングバッファ12aの第2の領域に格納されることになる。
【0045】
このようにして、受信完了信号によってポインタが1ずつインクリメントされることにより、デバイス3aから受信したパケットのデータが書き込みポインタ22aが指定するキューイングバッファ12aの所定の領域に順次格納される。
【0046】
他のデバイス3b及び3cからパケットが送信された場合においても、同様に処理が行われ、受信制御部11b及び11cは、デバイス3b及び3cからのパケットを受信し、キューイングバッファ12b及び12cに格納する。すなわち、各デバイス3a〜3cから送信されたパケットのデータをキューイングバッファ12a〜12cに格納する際には、他のデバイスとの関係を考慮する必要がなく、独立してデータを受信することができる。
【0047】
コヒーレンシバッファ13は、受信制御部11aから受信完了信号を受け取った場合、順序待ちポインタ24が指定する領域に、受信制御部11aからのデータが格納されたキューイングバッファ12aを示す情報を保持する。また、順序待ちポインタ24は、受信完了信号によって1だけインクリメントされる。
【0048】
同様に、受信制御部11b及び11cから受信完了信号を受け取った場合についても、順序待ちポインタ24が指定する領域に、受信制御部11b及び11cからのデータが格納されたキューイングバッファ12b及び12cを示す情報を保持する。
【0049】
例えば、受信制御部11a、11b及び11cからのデータが格納されたキューイングバッファ12a、12b及び12cを示す情報を、各々値「01」、値「10」及び値「11」とし、受信完了信号を受信制御部11a、11c、11b及び11bの順序で受け取った場合について考える。この場合、最初に順序待ちポインタ24が指定するコヒーレンシバッファ13の第1の領域には、キューイングバッファ12aを示す情報である値「01」が書き込まれる。次に、受信完了信号によって順序待ちポインタ24が1だけインクリメントされ、コヒーレンシバッファ13の第2の領域には、キューイングバッファ12cを示す情報である値「11」が書き込まれる。以下、同様にして、コヒーレンシバッファ13の第3の領域には、キューイングバッファ12bを示す情報である値「10」が書き込まれるとともに、第4の領域には、キューイングバッファ12bを示す情報である値「10」が書き込まれることになる。
【0050】
送信制御部14は、バス2への送信が可能になると、コヒーレンシバッファ13の次送信ポインタ25が指定する領域に保持された情報を参照し、複数の受信制御部11a〜11cのうちどの受信制御部11からのデータが送信待ちとなっているかを判断する。そして、送信制御部14は、次送信ポインタ25が指定する領域に保持された情報に対応するキューイングバッファ12の読み出しポインタ23が指定する所定の領域に格納されたデータを読み出し、バス2に対して送信する。
【0051】
バス2への送信が正常に完了すると、送信制御部14は、送信完了信号を次送信ポインタ25、及びデータを読み出したキューイングバッファ12に対応する読み出しポインタ23に送信し、各々ポインタを1だけインクリメントさせる。
【0052】
次に、送信制御部14は、1だけインクリメントされた次送信ポインタ25が指定する領域に保持された情報を参照し、この情報に対応するキューイングバッファ12の読み出しポインタ23が指定する所定の領域に格納されたデータを読み出し、バス2に対して送信する。以下、同様にして、送信制御部14は、次送信ポインタ25が指定する領域に保持された情報を参照し、キューイングバッファ12の所定の領域に格納されたデータを順次読み出し、バス2に対して送信する。
【0053】
上述の例においては、最初に、次送信ポインタ25がコヒーレンシバッファ13の第1の領域を指定しているものとすると、送信制御部14は、コヒーレンシバッファ13の第1の領域に保持された情報を参照する。第1の領域に保持された情報は、値「01」であるので、送信制御部14は、受信制御部11aからの送信待ちであると判断する。そして、値「01」に対応するキューイングバッファ12aの読み出しポインタ23aが指定する領域に格納されたデータを読み出し、バス2に対して送信する。
【0054】
送信制御部14は、バス2への送信が正常に完了すると、送信完了信号を次送信ポインタ25及び読み出しポインタ23aに送信し、各々ポインタを1ずつインクリメントさせる。これにより、次送信ポインタ25が指定する領域は、第2の領域となる。
【0055】
次に、送信制御部14は、コヒーレンシバッファ13の第2の領域に保持された情報を参照する。第2の領域に保持された情報は、値「11」であるので、送信制御部14は、受信制御部11cからの送信待ちであると判断し、値「11」に対応するキューイングバッファ12cの読み出しポインタ23cが指定する領域に格納されたデータを読み出し、バス2に対して送信する。
【0056】
送信制御部14は、バス2への送信が正常に完了すると、送信完了信号を次送信ポインタ25及び読み出しポインタ23cに送信し、各々ポインタを1ずつインクリメントさせる。これにより、次送信ポインタ25が指定する領域は、第3の領域となる。
【0057】
以下、同様にして、送信制御部14は、次送信ポインタ25が指定する第3及び第4の領域に保持された情報を参照する。第3及び第4の領域に保持された情報は、各々値「10」であるので、送信制御部14は、値「11」に対応するキューイングバッファ12cの読み出しポインタ23cが指定する領域に格納されたデータを読み出し、バス2に対して送信する。
【0058】
このようにして、複数のデバイス3a〜3cから送信され、キューイングバッファ12a〜12cに格納されたデータを、コヒーレンシバッファ13に保持された情報に基づいて順次読み出すことにより、受信したデータを受信した順序通りにバス2に対して送信することができる。
【0059】
以上のように、本実施の形態によれば、外部に接続された複数のデバイスから送信されたデータを受信する受信制御部と、受信したデータを格納するキューイングバッファとを、デバイスに応じて各々独立して設けたため、他のデバイスの影響を受けることなく、複数のデバイスから同時にデータを受信することができる。このため、ある特定のデバイスが何らかの影響でデータの送信が不可能となった場合であっても、他のデバイスは、その影響を受けることなくデータを正常に送信することができる。
【0060】
また、本実施の形態によれば、受信したデータが格納されたキューイングバッファを示す情報を、データを受信した順序に基づいて保持するコヒーレンシバッファを設けたため、各デバイスから受信したデータを、受信した順序通りにバスへ送信することができる。
【0061】
さらに、本実施の形態によれば、受信制御部及びキューイングバッファを、デバイスに応じて各々独立して設けたため、各デバイスに対してバス使用権を与えることなく、データの転送が可能となる。
【0062】
次に、本発明に係る他の実施形態について説明する。
【0063】
複数のデバイスが接続されたバス調停回路1においては、各デバイス3a〜3cから送信されたデータを同時に受信する場合が考えられる。このような場合、図1及び図2に示した実施形態では、データの受信が完了した際に、各受信制御部11a〜11cにおいて受信完了信号を同時に生成し、順序待ちポインタ24に送信することになる。
【0064】
このとき、順序待ちポインタ24は、同時に複数の受信完了信号を受信することになる。そのため、コヒーレンシバッファ13は、順序待ちポインタ24が指定する領域に対して、どの受信制御部11からのデータが格納されたキューイングバッファ12を示す情報を格納すべきか判断できず、受信したデータをバス2へ送信する際に、適切な送信順序で送信することができないことが考えられる。
【0065】
そこで、本実施の形態では、複数のデバイスからデータを同時に受信した場合でも、受信したデータをバスへ送信する順序を決定できるように、各デバイスに対応する受信制御部に対して優先順位を設定する。
【0066】
尚、本実施の形態に係るバス調停回路1の構成については、図1に示す実施の形態によるバス調停回路1と同様であるため、説明を省略する。
【0067】
本実施の形態に係るバス調停回路1の動作について、図1を参照して説明する。但し、各デバイス3a〜3cから送信されたデータをキューイングバッファ12a〜12cに格納する動作、並びにキューイングバッファ12a〜12cからデータを読み出してバス2に送信する動作については、上述した実施の形態と同様であるため、説明を省略する。
【0068】
本実施の形態では、受信制御部11a〜11cに対して優先順位を予め設定しておく。コヒーレンシバッファ13は、複数の受信完了信号を同時に受信すると、予め設定された優先順位に基づき順序待ちポインタ24が指定する領域に、優先順位が最も高い受信制御部11からのデータが格納されたキューイングバッファ12を示す情報を保持する。次に、この領域の一つ先の領域に、優先順位が次に高い受信制御部11からのデータが格納されたキューイングバッファ12を示す情報を保持する。以下同様に、優先順位に従って、さらに一つ先の領域にキューイングバッファ12を示す情報を順次保持する。
【0069】
そして、順序待ちポインタ24は、同時に受信した受信完了信号の数に応じて、所定数だけインクリメントされる。インクリメントされる数は、同時に受信した受信完了信号の数となる。例えば、順序待ちポインタ24は、2つの受信完了信号を受信した場合に2だけインクリメントされ、3つの受信完了信号を受信した場合に3だけインクリメントされる。
【0070】
ここで、一例として、優先順位を受信制御部11a、11b及び11cの順とした場合について、上述した実施の形態で説明した具体例に基づいて説明する。例えばデバイス3a及び3bから送信された2つのデータを、受信制御部11a及び11bにおいて各々同時に受信した場合、受信制御部11a及び11bは、受信完了信号を各々生成し、コヒーレンシバッファ13の順序待ちポインタ24に対して同時に送信する。
【0071】
最初に順序待ちポインタ24が指定するコヒーレンシバッファ13の領域が第1の領域である場合には、予め設定された優先順位に従い、第1の領域に、受信制御部11aからのデータが格納されたキューイングバッファ12aを示す情報である値「01」が書き込まれ、第2の領域に、受信制御部11bからのデータが格納されたキューイングバッファ12bを示す情報である値「10」が書き込まれる。そして、順序待ちポインタ24は、同時に2つの受信完了信号を受信したことにより、2だけインクリメントされる。
【0072】
また、例えばデバイス3a、3b及び3cから送信された3つのデータを、受信制御部11a、11b及び11cにおいて各々同時に受信した場合には、予め設定された優先順位に従い、順序待ちポインタ24が指定する第1の領域に、キューイングバッファ12aを示す情報である値「01」が書き込まれ、第2の領域に、キューイングバッファ12bを示す情報である値「10」が書き込まれ、第3の領域に、キューイングバッファ12cを示す情報である値「11」が書き込まれる。そして、順序待ちポインタ24は、同時に3つの受信完了信号を受信したことにより、3だけインクリメントされる。
【0073】
このように、同時に受信した受信完了信号の数に応じて、順序待ちポインタ24のインクリメントされる数を決定することにより、次以降の各デバイスからのデータ受信を適切に行うことができる。
【0074】
以上のように、本実施の形態によれば、複数の受信制御部に対して優先順位を予め設定するようにしているため、複数のデバイスから同時にデータを受信した場合であっても、設定された優先順位に従ってデータの送信順序を決定し、データを適切にバスへ送信することができる。
【0075】
以上、本発明の一実施の形態及び他の実施形態について説明したが、本発明は、上述した本発明の一実施の形態及び他の実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【符号の説明】
【0076】
1 バス調停回路
2 バス
3(3a〜3c) デバイス
11(11a〜11c) 受信制御部
12(12a〜12c) キューイングバッファ
13 コヒーレンシバッファ
14 送信制御部
21(21a〜21c) 一時バッファ
22(22a〜22c) 書き込みポインタ
23(23a〜23c) 読み出しポインタ
24 順序待ちポインタ
25 次送信ポインタ

【特許請求の範囲】
【請求項1】
複数のデバイスが接続され、該複数のデバイスから受信したデータを共通のバスに対して送信するバス調停回路であって、
複数の領域からなり、データを所定の領域に格納する複数のキューイングバッファと、
複数のデバイスから送信されたデータを各々受信し、受信した該データの前記キューイングバッファへの書き込みを制御する複数の受信制御部と、
複数の領域からなり、前記デバイスから受信したデータが格納されたキューイングバッファを示す情報を、前記複数の受信制御部がデータを受信した順序に従って所定の領域に格納するコヒーレンシバッファと、
前記コヒーレンシバッファに格納された情報に基づき、前記データを受信した順序通りに前記キューイングバッファからデータを読み出し、バスに対して送信する送信制御部とを備えることを特徴とするバス調停回路。
【請求項2】
前記キューイングバッファは、
前記受信制御部により受信したデータを格納する領域を指定する書き込みポインタと、
前記送信制御部により読み出されるデータを格納する領域を指定する読み出しポインタとを有し、
前記コヒーレンシバッファは、
前記デバイスから受信したデータが格納されたキューイングバッファを示す情報を格納する領域を指定する順序待ちポインタと、
前記バスに対して送信するデータが格納されたキューイングバッファを示す情報が格納された領域を指定する次送信ポインタとを有し、
前記受信制御部は、
前記キューイングバッファの前記書き込みポインタが指定する領域に、前記デバイスから受信したデータを格納し、
前記デバイスからのデータを正常に受信したことを示す受信完了信号を生成し、前記キューイングバッファ及び前記コヒーレンシバッファに対して送信し、
前記コヒーレンシバッファの前記順序待ちポインタが指定する領域に、前記受信完了信号に対応する受信制御部からのデータが格納されたキューイングバッファを示す情報を格納し、
前記受信完了信号に基づき前記書き込みポインタ及び前記順序待ちポインタをインクリメントさせ、
前記送信制御部は、
前記コヒーレンシバッファの前記次送信ポインタが指定する領域に格納された情報を参照し、
前記参照した情報に対応するキューイングバッファの前記読み出しポインタが指定する領域に格納されたデータを読み出して前記バスに対して送信し、
前記バスへのデータ送信を完了したことを示す送信完了信号を生成し、前記キューイングバッファ及び前記コヒーレンシバッファに対して送信し、
前記送信完了信号に基づき前記読み出しポインタ及び前記次送信ポインタをインクリメントさせることを特徴とする請求項1に記載のバス調停回路。
【請求項3】
前記複数の受信制御部に対して優先順位を設定し、
前記コヒーレンシバッファは、
前記複数の受信制御部から同時に受信した複数の受信完了信号と前記設定された優先順位とに基づき、前記優先順位が最も高い受信制御部からのデータが格納されたキューイングバッファを示す情報を、前記順序待ちポインタが指定する領域に格納し、
前記優先順位に従って、該優先順位が高い受信制御部からのデータが格納されたキューイングバッファを示す情報を次の領域に順次格納し、
前記順序待ちポインタを、同時に受信した前記複数の受信完了信号の数だけインクリメントさせることを特徴とする請求項2に記載のバス調停回路。
【請求項4】
前記受信制御部は、前記デバイスから受信したデータを保持する一時バッファを有することを特徴とする請求項1に記載のバス調停回路。
【請求項5】
複数のデバイスが接続され、該複数のデバイスから受信したデータを共通のバスに対して送信するバス調停回路のバス調停方法であって、
複数のデバイスから送信されたデータを複数の受信制御部で各々受信し、
前記受信した複数のデータを、複数の領域からなる複数のキューイングバッファの所定の領域に各々格納し、
前記デバイスから受信したデータが格納されたキューイングバッファを示す情報を、前記複数の受信制御部がデータを受信した順序に従って複数の領域からなるコヒーレンシバッファの所定の領域に格納し、
前記コヒーレンシバッファに格納された情報に基づき、前記データを受信した順序通りに前記キューイングバッファからデータを読み出し、バスに対して送信することを特徴とするバス調停方法。

【図1】
image rotate

【図2】
image rotate


【公開番号】特開2012−94081(P2012−94081A)
【公開日】平成24年5月17日(2012.5.17)
【国際特許分類】
【出願番号】特願2010−242927(P2010−242927)
【出願日】平成22年10月29日(2010.10.29)
【出願人】(303013763)NECエンジニアリング株式会社 (651)
【Fターム(参考)】