(57)【特許請求の範囲】
【請求項１】
共通のバスを制御し他の電子デバイスとデータ転送を行うバス転送制御部と、
前記データ転送の相手の電子デバイスからの応答受信についてタイムアウトを検出するタイマーと、
前記タイムアウト検出を受け共通のサスペンド信号を駆動し他の電子デバイスも含めてデータ転送を中断させるサスペンド制御部と、
前記相手の電子デバイスに対しコマンドを送信し、前記コマンドに対する応答の有無を判定する診断制御部とを有することを特徴とする電子デバイス。
【請求項２】
前記診断制御部が、前記コマンドに対する応答を受信した場合に前記タイムアウトをキャンセルし前記サスペンド信号の駆動を停止し、前記コマンドに対する応答を受信できなかった場合に前記タイムアウトしたデータ転送の異常終了を指示することを特徴とする請求項１に記載の電子デバイス。
【請求項３】
退避格納部を備え、
前記バス転送制御部が、前記データ転送を中断時の状態をレジスタから前記退避格納部にセーブし、前記サスペンド信号の駆動停止を受け、前記退避格納部の情報を前記レジスタにリストアすることを特徴とする請求項２記載の電子デバイス。
【請求項４】
前記中断時のデータ転送状態の一部であって、前記コマンドや前記相手の電子デバイスの指定或いは診断応答の送信のため上書きされるレジスタの情報を、前記退避格納部に退避することを特徴とする請求項３記載の電子デバイス。
【請求項５】
前記バス転送制御部と前記診断制御部のそれぞれからのバス制御信号を前記サスペンド信号の状態により選択し、その出力で前記バスのドライバを駆動する選択回路と、
前記コマンドを生成し前記バスを制御し送信する診断制御部とを備え、
前記コマンド及び前記コマンドへの応答のバス転送を前記診断制御部と前記選択回路を用いて行うことを特徴とする請求項２記載の電子デバイス。
【請求項６】
共通のバスと前記バスを介し互いにデータ転送を行う複数の電子デバイスを含むデータ処理装置であって、
前記複数の電子デバイスを接続する共通のサスペンド信号線を備え、
前記電子デバイスが、
前記バスを制御し前記データ転送を行うバス転送制御部と、
前記データ転送の相手の電子デバイスからの応答受信についてタイムアウトを検出するタイマーと、
前記タイムアウト検出を受け前記サスペンド信号を駆動し他の電子デバイスも含めてデータ転送を中断させるサスペンド制御部と、
前記相手の電子デバイスに対しコマンドを送信し、前記コマンドに対する応答の有無を判定する診断制御部とを有することを特徴とするデータ処理装置。
【請求項７】
前記診断制御部が、前記コマンドに対する応答を受信した場合に前記タイムアウトをキャンセルし前記サスペンド信号の駆動を停止し、前記コマンドに対する応答を受信できなかった場合に前記タイムアウトしたデータ転送の異常終了を指示することを特徴とする請求項６に記載のデータ処理装置。
【請求項８】
前記電子デバイスが退避格納部を備え、
前記バス転送制御部が、前記データ転送中断時の状態をレジスタから前記退避格納部にセーブし、前記サスペンド信号の駆動停止を受け、前記退避格納部の情報を前記レジスタにリストアすることを特徴とする請求項７記載のデータ処理装置。
【請求項９】
前記退避格納部には、中断時のデータ転送状態の一部であって、前記コマンドや前記相手の電子デバイスの指定或いは診断応答の送信のため上書きされるレジスタの情報を退避することを特徴とする請求項８記載のデータ処理装置。
【請求項１０】
前記電子デバイスが、
前記バス転送制御部と前記診断制御部のそれぞれからのバス制御信号を前記サスペンド信号の状態により選択し、その出力で前記バスのドライバを駆動する選択回路と、
前記コマンドを生成し前記バスを制御し送信する診断制御部とを備え、
前記コマンド及び前記コマンドへの応答のバス転送を、前記診断制御部と前記選択回路を用いて行うことを特徴とする請求項７記載のデータ処理装置。
【請求項１１】
バスを制御しデータ転送を行うバス転送制御手順と、
データ転送の相手の電子デバイスからの応答受信についてタイムアウトを検出する手順と、
前記タイムアウト検出を受けると、共通のサスペンド信号を駆動し他の電子デバイスも含めてデータ転送を中断させるサスペンド制御手順と、
前記相手の電子デバイスに対しコマンドを送信し、前記コマンドに対する応答の有無を判定する診断制御手順とを有することを特徴とするバス制御方法。
【請求項１２】
前記診断制御手順が、前記コマンドに対する応答を受信した場合に前記タイムアウトをキャンセルし前記サスペンド信号の駆動を停止し、前記コマンドに対する応答を受信できなかった場合に前記タイムアウトしたデータ転送の異常終了を指示することを特徴とする請求項１１に記載のバス制御方法。
【請求項１３】
前記バス転送制御手順が、前記データ転送の中断時の状態をレジスタからセーブし、前記サスペンド信号の駆動停止を受け、前記退避格納部の情報を前記レジスタにリストアすることを特徴とする請求項１２記載のバス制御方法。
【請求項１４】
前記データ転送の状態のセーブを前記中断時のデータ転送状態の一部であって、前記コマンドや前記相手の電子デバイスの指定或いは診断応答の送信のため上書きされるレジスタの情報を退避することを特徴とする請求項１３記載のバス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子デバイス、データ処理装置、及びバス制御方法に関し、特に、バスを通じデータ転送をする電子デバイス、複数の電子デバイスが共通のバスを通じデータ転送するデータ処理装置、及びバス制御方法に関する。
【背景技術】
【０００２】
複数のデバイスが共通のバスに接続されたシステムにおけるデータ転送において、データ転送の相手のデバイスが正常に応答しているか否かの確認手段としてタイムアウトによる異常検出が一般に使用されている。
一般にタイムアウトが検出されるまでの時間はシステムにより固有であり、なんらかの影響でタイムアウトとなる時間までにデータ転送の相手となるデバイスからの応答が得られない場合は、デバイスもしくはバスの異常と判断し、システムやバスのリセットなどといった異常終了処理が行われる。
【０００３】
しかしながら、複数のデバイスが同時にデータ転送を実行するような場合、バスの負荷が増大するため、データ転送の相手となるデバイスの応答までの時間が一時的に増大し、タイムアウトが検出されてしまう場合がある。
このような状況においては、デバイスやバスに異常がないにも拘わらずタイムアウトの検出により、バスリセットなどの異常終了処理が発生するといった問題がある。
【０００４】
タイムアウト検出までの時間を長く設定することで上記の問題を回避することは可能であるが、この場合、デバイスの故障によりデバイスが正常に応答しない場合において、異常の検出が遅れるといった問題が発生する。
【０００５】
これらの問題を解決するための関連技術として特許文献１の情報処理装置がある。この情報処理装置は、共有バスと、これを通じリクエスト信号を発行しそれに対するレスポンス信号を共有バスから受け取り処理を行う複数のデバイスと、共有バスに接続されたバス監視装置とを含む。
【０００６】
そしてバス監視装置が共有バス上における往来状況を監視し、監視結果の往来状況からバスの使用率を求め、それに応じて各デバイスにおけるタイムアウト検出時間を変更するものである。
【０００７】
【特許文献１】特開２００１−２２６５４号公報（第１ページ）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、上記情報処理装置の技術では、デバイスやバスの異常動作によりバスが常に使用されてしまうような故障となる場合においてもタイムアウト時間が長くなり、異常検出が遅れてしまうといった問題が生ずる。
【０００９】
本発明の目的は、上記問題を解決する電子デバイス、データ処理装置、及びバス制御方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の電子デバイスは、
共通のバスを制御し他の電子デバイスとデータ転送を行うバス転送制御部と、
前記データ転送の相手の電子デバイスからの応答受信についてタイムアウトを検出するタイマーと、
前記タイムアウト検出を受け共通のサスペンド信号を駆動し他の電子デバイスも含めてデータ転送を中断させるサスペンド制御部と、
前記相手の電子デバイスに対しコマンドを送信し、前記コマンドに対する応答の有無を判定する診断制御部とを有する。
【００１１】
本発明のデータ処理装置は、共通のバスと前記バスを介し互いにデータ転送を行う複数の電子デバイスを含むデータ処理装置であって、
前記複数の電子デバイスを接続する共通のサスペンド信号線を備え、
前記電子デバイスが、
前記バスを制御し前記データ転送を行うバス転送制御部と、
前記データ転送の相手の電子デバイスからの応答受信についてタイムアウトを検出するタイマーと、
前記タイムアウト検出を受け前記サスペンド信号を駆動し他の電子デバイスも含めてデータ転送を中断させるサスペンド制御部と、
前記相手の電子デバイスに対しコマンドを送信し、前記コマンドに対する応答の有無を判定する診断制御部とを有する。
【００１２】
本発明のバス制御方法は、バスを制御しデータ転送を行うバス転送制御手順と、
前記データ転送の相手の電子デバイスからの応答受信についてタイムアウトを検出する手順と、
前記タイムアウト検出を受けると、共通のサスペンド信号を駆動し他の電子デバイスも含めてデータ転送を中断させるサスペンド制御手順と、
前記相手の電子デバイスに対しコマンドを送信し、前記コマンドに対する応答の有無を判定する診断制御手順とを有する。
【発明の効果】
【００１３】
本発明によれば、バスのデータ転送においてタイムアウトを検出した際、その原因がバスの輻輳（バス上の転送の資源競合）であるか、バスもしくはバスに接続されたデバイスの異常であるかを速やかに判定できる。
【００１４】
従って、バスもしくはデバイスの異常の検出が速やかに行われるとともに、バスの輻輳によるタイムアウトに対して、誤って行われるデータ転送の打ち切りやバスリセットなどの異常終了処理を回避できる。
【発明を実施するための最良の形態】
【００１５】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
図１は、本発明のデータ処理装置１０の第１の実施の形態を示すブロック図である。
データ処理装置１０は、デバイス１１〜６１と共通なバス１とバス要求調停部８を含む。
【００１６】
デバイス１１〜６１は共通なバス１に接続されており、デバイス間のデータ転送は当該バス１を介して行われる。
バス１はクロック信号に同期してデータ転送を実施するものである。
バス要求調停部８は、各デバイス１１〜６１からのバス要求を受け、複数のデバイスから要求が有れば優先順位に従って唯一の要求を選択しそのデバイスにバス使用の許可を返す。
サスペンド信号線７は、全デバイスに共通に接続される信号線であり、データ転送においてタイムアウトを検出したデバイスはサスペンド信号線７のアサートおよびディアサートを実施する。
【００１７】
尚、バス１は、例えばＰＣＩ−Ｘ（Peripheral Component Interconnect−X）バスを含むＰＣＩバス、ＳＣＳＩ（Small Computer System interface）バス等である。
【００１８】
また、デバイス１１〜６１は、例えばＩ／Ｏデバイス、Ｉ／Ｏデバイスやキャッシュメモリ等のコントローラ、ファイルデバイス、プロセッサ、バスブリッジ等の電子デバイスである。
【００１９】
デバイス１１〜６１のそれぞれが種類や機能の異なるデバイスであっても、同種類であってもよい。
デバイス１１〜６１の幾つかが、回路基板で構成されることもある。この場合、バス１のデバイス接続部分がスロットコネクタを含む。
【００２０】
図２は、バス１に接続される各デバイス１１〜６１の内部構成を示すブロック図である。
デバイス１１は、バス転送制御部１４とサスペンド制御部１５と診断制御部１６を含み構成される。
バス転送制御部１４は、バス１を制御するバス制御部１２とこれに要求しデータ転送を行わせる転送制御部１３とを有し、バス１を制御しデータ転送を行う。
【００２１】
同様に、デバイス６１は、バス転送制御部６４とサスペンド制御部６５と診断制御部６６を含み構成され、バス転送制御部６４はバス制御部６２と転送制御部６３とを有する。図示してないが、デバイス２１〜５１の各デバイスについても同様に各制御部を含む。
【００２２】
バス制御部１２は通常は転送制御部１３の要求によりバス１を介した通常のデータ転送を行うが、サスペンド信号線７がアサートされたサスペンド状態ではデータ転送を中断する。
そしてバス制御部１２は、診断制御部１６からの要求によりバス１を介し診断コマンドをデータ転送の相手のデバイス６１に送信する。
【００２３】
診断制御部１６は、相手の電子デバイスに対し診断コマンドを送信し、診断コマンドに対する応答の有無を判定する。
即ち、診断制御部１６はサスペンド信号線７がアサートされるとバス制御部１２に対し診断コマンドの送信を要求する。
【００２４】
そしてデバイス６１が診断コマンドを受信すると、診断コマンドはバス制御部６２を介して診断制御部６６に通知され、診断制御部６６がバス制御部６２に診断応答（診断コマンドへの応答）の送信を要求する。
そして診断制御部１６は、診断コマンドに対する応答を正常に受信した場合に、タイムアウトをキャンセルし、サスペンド制御部１５を介し、サスペンド信号線７の駆動をオフにする。
診断制御部１６は、診断コマンドに対する応答を受信できなかった場合にタイムアウトとなったデータ転送の異常終了を指示する。
【００２５】
サスペンド制御部１５は、データ転送のタイムアウト検出を受けサスペンド信号線７を駆動し他の電子デバイスも含めてデータ転送を中断させる。
即ち、サスペンド制御部１５は、バス制御部１２がデータ転送のタイムアウトを検出した場合、サスペンド信号線７を駆動しアサートする。
また、サスペンド制御部１５は、サスペンド信号線７が自デバイスや他のデバイスによりアサートされたことを検出し、バス制御部１２や転送制御部１３に通知し、データ転送を中断させる。
【００２６】
尚、サスペンド信号線７のアサートおよびディアサートは、全デバイス１１〜６１が同一クロック内に受け取るタイミングで実施するものとする。
即ち、全てのデバイスはサスペンド信号線７がアサートされる次のクロックタイミングで実行中のデータ転送を中断し、サスペンド信号線７がディアサートされる次のクロックタイミングで中断時の状態に戻る。そしてサスペンド制御部１５が異常終了を指示していないデバイスはデータ転送を再開する。
【００２７】
以上デバイス１１、６１について説明したが、他のデバイス２１〜５１の各制御部も同様に動作する。
【００２８】
図３は、デバイス１１のバス制御部１２やサスペンド制御部１５の詳細構成とこれら制御部と転送制御部１３や診断制御部１６とのインタフェースを示したブロック図である。
【００２９】
バス制御部１２は、タイマー１２１と制御回路１２３と送信レジスタ１２５と受信レジスタ１２７と退避格納部１２４を含む。
また、バス制御部１２は、バス１の制御信号のドライバ１２８１と制御信号のレシーバ１２８２とバス１のコマンド信号線及びデータ信号線のドライバ１２８３とコマンド信号線及びデータ信号線のレシーバ１２８４とセレクタ１２６１とセレクタ１２６２とセレクタ１２７１も含む。尚、バス１は例えばＰＣＩバスとする。
【００３０】
タイマー１２１は、データ転送の相手のデバイスからの応答受信についてタイムアウトを検出する。
即ち、タイマー１２１は、制御回路１２３からのタイマーセット指示により例えば所定のタイマー設定値がセットされ、以降クロック、或いは長周期のタイマー用クロックによりカウントダウンし、例えば「０〜０１」になるとタイムアウトとしその状態を保持する。またタイマーセット指示により、タイマー１２１内のタイマー値レジスタとは別のレジスタ（図示せず）に監視対象のデバイスＩＤがセットされる。
【００３１】
このデバイスＩＤは、タイムアウト発生時に診断制御部１６に渡される。
また、タイマー１２１は診断制御部１６からのタイムアウトキャンセル指示により再度所定の設定値がセットされ、タイムアウト出力はオフになる。
【００３２】
送信レジスタ１２５は、８．５バイトの送信用レジスタで、上位からコマンド（４ビット）、アドレス（４バイト）、データ（４バイト）を保持する。
【００３３】
セレクタ１２６１は、転送制御部１３からの転送コマンド及びアドレス、診断制御部１６からの診断コマンド及びアドレス、退避格納部１２４からのリストアデータを切り替え、送信レジスタ１２５のコマンド及びアドレス部分に入力する。選択指示は制御回路１２３から受ける。
【００３４】
セレクタ１２６２は、送信レジスタ１２５のアドレス４バイトとデータ４バイトとを切り替えドライバ１２８３に入力する。
【００３５】
受信レジスタ１２７は８．５バイトの受信用レジスタで、上位からコマンド（４ビット）、アドレス（４バイト）、データ（４バイト）を受信し、要求元の制御部（読み取り転送を要求した転送制御部１３や診断コマンドを要求した診断制御部１６）や制御回路１２３に受信内容を渡す。
しかし、受信レジスタ１２７の内容は、要求元制御部がビジーであれば、その間保持される。
【００３６】
セレクタ１２７１は、受信コマンド及びアドレスと、退避格納部１２４からのリストアデータを切り替え受信レジスタ１２７に入力する。
【００３７】
制御回路１２３は、転送制御部１３からのデータ転送要求を受けるとサスペンド信号がオフであれば要求を受け付けて処理する。
制御回路１２３は、要求が例えば他のデバイス６１への読み取りコマンドであれば、セレクタ１２６１に転送コマンド及びアドレスの選択を指示し、選択したコマンドとアドレスとを送信レジスタ１２５にセットする。上記アドレスにはデバイス６１を示す送信先デバイスＩＤとデバイス１１を示す送信元デバイスＩＤも含む。
また、制御回路１２３は、セレクタ１２６２にアドレスを選択させておく。
【００３８】
制御回路１２３は、バス要求調停部８にバス要求し、デバイス１１へのバス許可がアサートされると、制御信号内のコマンドやアドレス／データが有効であることを示す信号線とコマンド信号線とアドレス／データ信号線（内容はアドレス）をドライバ１２８１やドライバ１２８３により駆動する。
【００３９】
制御回路１２３は、デバイス６１から、制御信号線等によりスプリット通知付きの受付を受信すると、前記有効であることを示す信号線をディアサートしバスを開放する。
そして制御回路１２３は、タイマー１２１のセットを指示する。
【００４０】
例えば所定のタイマー設定値とデータ転送相手のデバイスＩＤ（デバイス６１のＩＤ）が、タイマー１２１にセットされる。
【００４１】
制御回路１２３は、要求が例えば他のデバイス２１へのスプリット応答であれば、セレクタ１２６１に転送コマンド（書き込み）とアドレスの選択を指示し、このコマンドとアドレスと応答データとを送信レジスタ１２５にセットし、バス要求し同様に送信する。
また、制御回路１２３は、送信開始の１サイクル後にセレクタ１２６２で応答データを選択し送信する。
【００４２】
制御回路１２３は、サスペンド制御部１５からのサスペンド信号がアサートされると、データ転送動作を中断する。データ転送要求の受付が抑止される。
また、サスペンド信号アサートで且つ診断用転送フラグ（図示してないが制御回路１２３が内部に持つフラグ）がオフであればバス要求調停部８へのバス要求、バス１への制御信号、アドレス／データ信号等の送信を抑止する。
【００４３】
制御回路１２３はサスペンド信号の立ち上がりで、バス許可信号や他デバイスからのアクティブな制御信号の受信や受信直後の処理の進行も抑止する。前記立ち上がりは１サイクル間でありこの間抑止する。
制御回路１２３は、前記立ち上がりで、送信レジスタ１２５のコマンド及びアドレスと受信レジスタ１２７のコマンド及びアドレスと転送シーケンスカウンタ（図示せず）の内容を退避格納部１２４にセーブする。
【００４４】
制御回路１２３は、診断制御部１６から診断コマンドの送信要求を受けると、サスペンド信号線７がアサート状態であればこの要求を受け付けて処理する。
制御回路１２３は、この診断コマンド送信要求の受付で前記転送シーケンスカウンタを初期値にクリアし、また診断用転送フラグをオンにして、バス要求や他デバイスへの送信についての抑止を一時的に解除する。
【００４５】
バス要求や、バス１への制御信号ドライバ１２８１を駆動するゲートのロック（抑止）が、解除されるが転送シーケンスカウンタが初期値であるのでそれまで抑止されていたデータ転送シーケンスが再開されることはない。
【００４６】
制御回路１２３は、次にセレクタ１２６１に診断制御部１６からの診断コマンドとアドレスを選択させ、送信レジスタ１２５のコマンド及びアドレス部分にセットする。
このアドレスは、送信先デバイスＩＤ（デバイス６１のＩＤ）、送信元デバイスＩＤ（デバイス１１のＩＤ）を含む。
【００４７】
そして制御回路１２３はバス要求し、バス許可がアサートされるとそれまでの転送の相手のデバイス６１に診断コマンドを送信する。
【００４８】
制御回路１２３は、他のデバイスから診断コマンドを受信した場合には、受信レジスタ１２７のアドレス内の送信先（宛先）デバイスＩＤと自デバイスＩＤとの一致をチェックする。
制御回路１２３はチェックの結果自デバイス宛であれば受信した診断コマンドを送信元デバイスＩＤと共に診断制御部１６に渡す。
【００４９】
制御回路１２３は、診断制御部１６から診断応答の送信要求を受けると診断コマンド送信と同様に処理する。
【００５０】
制御回路１２３は、サスペンド制御部１５からのサスペンド信号がディアサートされるとその立ち下がりで、退避格納部１２４の内容を送信レジスタ１２５のコマンド及びアドレス部分、受信レジスタ１２７のコマンド及びアドレス部分、転送シーケンスカウンタにリストアする。そして制御回路１２３は、上記送信や受信の抑止を解除する。
【００５１】
サスペンド制御部１５は、フリップフロップ（Ｆ／Ｆ）１５１とドライバ１５３１とレシーバ１５３２とインバータ１５３３を備える。
フリップフロップ１５１はセット入力とリセット入力付きのフリップフロップであり、タイムアウト信号がアサートされると、サスペンド信号線７がディアサート状態であればセットされ、その出力がサスペンド信号線７をアサート状態にする。
そしてフリップフロップ１５１は、診断制御部１６からのサスペンドリセット指示でリセットされる。
このフリップフロップ１５１の出力は、サスペンド信号線７の駆動元デバイスであることも示している。
【００５２】
診断制御部１６は、サスペンド信号がアサートされると、前記駆動元デバイスであれば診断コマンドの送信を制御回路１２３に要求し、要求が処理されると、診断応答を待ち受ける。
【００５３】
診断制御部１６は診断応答を例えば診断応答コマンドの形で受信し、所定の短期間内に正常に受信できればタイムアウトキャンセルを指示し、次にフリップフロップ１５１のリセットを指示する。これによりタイマー１２１のタイムアウト出力がオフにされ、サスペンド信号線７もディアサートされる。
【００５４】
診断制御部１６は、診断応答を正常に受信できなければ、サスペンド制御部１５にサスペンドリセットを指示し、バス制御部１２をサスペンド直前の状態に一旦戻させた後、タイムアウトしたデータ転送の異常終了処理を転送制御部１３に指示する。
転送制御部１３は、異常終了処理の指示を受けると共に受けたデバイスＩＤを指定し、転送打ち切りをバス制御部１２を介してデバイス６１に指示する。
【００５５】
次に、本発明の第１の実施の形態の動作について図面を参照して説明する。
図１に示すデバイス２１がデバイス３１とデータ転送を開始し、更にデバイス４１がデバイス５１とデータ転送を開始した後に、デバイス１１がデバイス６１からデータを読み出そうとする場合の動作を例に説明する。
【００５６】
デバイス間のデータ転送のそれぞれは、データ転送要求と応答（実際のデータ転送）が分離したスプリットトランザクションで行われるとする。例えば、デバイス２１がバス要求してバス許可を獲得し、デバイス３１を指定して読み取りを指示して要求し、デバイス３１がスプリット通知付きの受付で応答し、デバイス２１は直ぐに要求をオフとしバスを開放する。
デバイス３１が、データを準備できるとその都度バス要求してバス許可を獲得し、デバイス２１のデバイスＩＤを指定しデータを送信する。
【００５７】
図４と図５は、本発明のデータ処理装置１０の第１の実施の形態の動作を示すシーケンスチャートである。
図４を参照すると、デバイス２１とデバイス３１がバス１を介したデバイス間の転送動作を開始する（ステップ１）。次に、デバイス４１と５１がバス１を介したデバイス間の転送動作を開始する（ステップ２）。
【００５８】
次に、デバイス１１が、バスを獲得し、デバイス６１を指定し読み取り指示を送信し（ステップ３−１）、デバイス６１がスプリット通知付きの受付で応答する（ステップ３−２）。デバイス１１がバスを開放し、応答データ待ち状態に入り、タイマー１２１をセットする（ステップ３−３）。
【００５９】
デバイス６１がデータを準備できると、応答のためバス要求するがバス要求は退けられる。即ち、デバイス３１によるバス要求やバス使用のないサイクルに、毎回同期してデバイス５１のバス要求が入ってくる状態が起こっており、デバイス６１のバス要求の受付優先順位は最下位であるためバス許可が長期間アサートされない（ステップ４）。
そのためデバイス６１が応答のデータ転送を行うことができず、デバイス１１が読み出し転送のタイムアウトを検出する（ステップ５）。
【００６０】
タイムアウトを検出したデバイス１１は、フリップフロップ１５１をセットしサスペンド信号線７を駆動しアサートにする（ステップ６）。
また、デバイス１１〜６１は、サスペンド信号線７がアサートされたことを検出し、実行中のデータ転送を直ちに中断し、バス要求と送信を抑止しバス１を開放する。デバイス１１〜６１は、またデータ転送中断時の状態情報の内、診断のための転送で上書きされるレジスタ類の情報を退避格納部１２４にセーブする（ステップ７）。
【００６１】
デバイス１１は診断用転送動作の開始を契機とし、データ転送のシーケンス状態を初期化してからバス要求や送信の抑止を一時解除する。
そしてデバイス１１はバス１を介しデバイス６１に対して診断コマンドを送信し（ステップ８）、デバイス６１が診断コマンドを受信する（ステップ９）。
【００６２】
診断コマンドを受信したデバイス６１は、診断用転送動作の開始を契機としデータ転送のシーケンス状態を初期化してからバス要求や送信の抑止を一時解除する。
そしてデバイス６１は、デバイス１１に対し診断応答を送信し（ステップ１０）、デバイス１１がデバイス６１からの診断応答を受信する（ステップ１１）。
【００６３】
デバイス１１は診断応答を正常に受信すると、タイムアウトはバス１の輻輳（バス１上の転送の資源競合）により生じたものと判定しタイムアウトをキャンセルし（ステップ１２）、サスペンド信号線７の駆動をオフする（ステップ１３）。
デバイス１１〜６１は、サスペンド信号線７のディアサートを検出し、ステップ７でセーブした状態をリストアし、中断していたデータ転送を再開する（ステップ１４）。
【００６４】
やがてデバイス２１とデバイス３１間のデータ転送が終了し（ステップ１５）、デバイス６１がバスを獲得し読み出しデータを送信し（ステップ１６）、デバイス１１が読み出しデータを受信し（ステップ１７）動作を終了する。
【００６５】
また、デバイス１１がステップ８の診断コマンド発行後に、ステップ１１のデバイス６１からの診断応答を所定の短期間内に正常に受信できなかった場合、バス１またはデバイス６１に異常が発生しているとみなし、データ転送打ち切り等の異常終了処理を実施する。
【００６６】
以上の説明では、説明や図示の便宜上タイマー１２１の構成を、タイマー値とこれに対応したデバイスＩＤとを保持するとしたが、実際にはタイマー値とこれに対応したデバイスＩＤとを複数組保有する。
これにより、デバイス１１が、データ転送コマンドを複数のデバイスを相手として順次送信し並列処理する状態でもこれらの時間監視が可能になる。
【００６７】
また、バス制御部１２がタイマー１２１を備える例で説明したが、転送制御部１３が備える例もある。
【００６８】
本発明の第１の実施の形態は、時間監視時間を最初から長くすることなく、タイムアウトを検出するとデータ転送を中断させ、相手デバイスに診断コマンドを送信し、それへの応答受信が正常にできるかどうかでバス輻輳か異常かを判定し、バス輻輳であれば転送を再開する。
【００６９】
従って、本発明の第１の実施の形態によれば、バス１もしくはデバイス１１〜６１の異常の検出が速やかに行われるとともに、バス１の輻輳によるタイムアウトに対して、誤って行われる転送打ち切りやバスリセットなどの異常終了処理を回避できる。
【００７０】
また、タイムアウトを起こした相手デバイスに診断コマンドと応答を送受信する際に、バス１に接続されたドライバ１２８１、１２８３やレシーバ１２８２、１２８４の他周辺の送信レジスタ１２５、受信レジスタ１２７や制御回路１２３についてもデータ転送と同じ手段で行っており、高精度でタイムアウト原因の判定が行える。
【００７１】
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。図６は本発明のデバイス１１〜６１の第２の実施の形態の詳細な構成を示したブロック図である。
第２の実施の形態ではデバイス１１〜６１のバス制御部１２と診断制御部１６の機能や構成が前記第１の実施の形態と一部異なる。
【００７２】
即ち、第１の実施の形態ではバス制御部１２が診断のためのコマンドの送受信と診断応答の送受信も実行していたが、第２の実施の形態ではバス制御部１２Ａはこれらの送受信を行わない。代わりに診断制御部１６Ａがこれらの送受信を行う。
【００７３】
診断制御部１６Ａは、バス１に接続のドライバ１２８１、１２８３やレシーバ１２８２、１２８４をバス制御部１２Ａと共用するが、中断されたデータ転送の状態に影響を及ぼさない形で診断用転送動作を行う。
このためバス１への送出信号とバス要求調停部８へのバス要求信号のドライバの入力側に２ウェイのセレクタ１２６３、１２８７、１２８９（選択回路）が挿入される。
これらにバス制御部１２Ａの内部からのデータ転送用信号と、診断制御部１６Ａからの診断転送用信号とが切り替えて入力される。
【００７４】
またバス１からの受信信号のレシーバ１２８４、１２８２とバス要求調停部８からのバス許可信号のレシーバ（図示せず）の出力に２出力の選択的リピータ回路１２８５、１２８６、１２８８が挿入され、各出力をバス制御部１２Ａ内部と診断制御部１６Ａに分配する。
【００７５】
バス制御部１２Ａはバス制御部１２で備えていた退避格納部１２４とセレクタ１２６１とセレクタ１２７１とを有していない。
制御回路１２３Ａの要求元は、転送制御部１３のみである。
【００７６】
しかし、バス要求信号の入力、制御信号のドライバ１２８１の入力側、ドライバ１２８３の入力側にそれぞれセレクタ１２８９、セレクタ１２８７、セレクタ１２６３が挿入されている。
また、サスペンド信号をフリップフロップで受けたサスペンド受信信号が選択信号としてこれらのセレクタに入力される。これらのセレクタ１２８９、１２８７、１２６３は、選択信号がオンであれば診断制御部１６Ａからの入力であるバス要求Ｄ、制御信号Ｄ、コマンドとアドレスＤを選択し、オフであれば、バス制御部１２Ａ内部からの入力を選択する。
【００７７】
また、バス許可信号、制御信号のレシーバ１２８２の出力側、コマンド及びアドレス／データ信号のレシーバ１２８４の出力側にそれぞれリピータ回路１２８８、リピータ回路１２８６、リピータ回路１２８５が挿入されている。
【００７８】
これらリピータ回路１２８５、１２８６、１２８８は選択的リピータであり、一部しか図示してないが選択信号としてはサスペンド信号が入力されている。
選択信号がオンであれば入力された信号が診断制御部１６Ａへの出力に伝達され、バス制御部１２Ａ内部への出力は駆動されない。
【００７９】
反対に選択信号がオフであれば入力された信号がバス制御部１２Ａ内部への出力に伝達され、診断制御部１６Ａへの出力は駆動されない。
【００８０】
診断制御部１６Ａは、サスペンド信号がアサートされると、駆動元信号オンであれば１〜２サイクル後からバス要求し、バスを獲得しバス１を介した診断コマンドの転送を行う。
【００８１】
またバス１を介してアドレス情報内の送信先デバイスＩＤが自デバイスＩＤである診断コマンドを受信すると、このコマンドの送信元デバイス宛に診断応答を送信する。
診断コマンドを転送した診断制御部１６Ａは、診断応答を待ち受け、バス１を通じ受信する。診断制御部１６Ａの他の動作は前記第１の実施の形態と同様である。
【００８２】
次に第２の実施の形態のデータ処理装置１０としての動作について説明する。
図５のシーケンスチャートのステップ７の処理の内、データ転送の状態のセーブが行われない。
また、ステップ８では、デバイス１１が、データ転送シーケンス状態の初期化及びバス要求と送信の抑止の一時解除を行うことなく、バス１を介しデバイス６１へ診断コマンドを送信する。
【００８３】
ステップ１０では、デバイス６１が、データ転送シーケンス状態の初期化及びバス要求と送信の抑止の一時解除を行うことなく、バス１を介しデバイス１１へ診断応答を送信する。ステップ１４では、デバイス１１〜６１が、サスペンド信号のディアサートを検出すると、状態リストアを行うことなくデータ転送を再開する。
上記以外の動作は前記第１の実施の形態と同様である。
【００８４】
本発明の第２の実施の形態によれば、前記第１の実施の形態と同様に異常の検出が速やかに行われ、また前記輻輳によるタイムアウトに対して、誤って行われる異常終了処理を回避できる。
【００８５】
また、退避格納部１２４や状態セーブやリストアのための回路を必要としないので、診断用転送で上書きされる状態情報が大きくなるデバイスでは第２の実施の形態の方が第１の実施の形態より追加ハードウェア量が少なくなる。
【００８６】
本発明は、デバイス１１〜６１のいずれかにバスブリッジを含み、バスブリッジが第２のバスにも接続されたデータ処理装置においても適用できる。
即ち、バスブリッジが既存の中継機能の他サスペンド信号線７を第２のバスのサスペンド信号線に中継する様にすれば、第２のバス上のデバイスからの応答のタイムアウトをデバイス１１が検出した場合にも同様にデータ転送を中断させ、診断コマンドへの応答により異常かバス輻輳かを判定でき、バス輻輳とみなせる場合にデータ転送を再開させる。
尚、デバイスＩＤは、上位ビットにバスＩＤを含むデバイスＩＤとし、バスブリッジはバス１に接続された第１のポートと第２のバスに接続された第２のポートの構成とする。
そして第１のポートは送信先ＩＤが第２のバスを示していればコマンドを取り込み第２のポートを通じ送信先ＩＤのデバイスＩＤに対応したデバイスに送信する。
【図面の簡単な説明】
【００８７】
【図１】本発明のデータ処理装置１０の第１の実施の形態の構成を示すブロック図である。
【図２】本発明のデータ処理装置１０の第１の実施の形態における各デバイス１１〜６１の内部構成を示すブロック図である。
【図３】本発明の第１の実施の形態におけるデバイス１１のバス制御部１２やサスペンド制御部１５の詳細構成とこれら制御部と転送制御部１３や診断制御部１６とのインタフェースを示したブロック図である。
【図４】本発明の第１の実施の形態における全体動作を示すシーケンスチャートである。
【図５】本発明の第１の実施の形態における全体動作を示すシーケンスチャートである。
【図６】本発明の第２の実施の形態におけるデバイス１１の各制御部の構成を示すブロック図である。
【符号の説明】
【００８８】
１    バス
７    サスペンド信号線
８    バス要求調停部
１０    データ処理装置
１１、２１、３１、４１、５１、６１    デバイス
１２、１２Ａ、６２    バス制御部
１３、６３    転送制御部
１４、６４    バス転送制御部
１５、６５    サスペンド制御部
１６、１６Ａ、６６    診断制御部
１２１    タイマー
１２３、１２３Ａ    制御回路
１２４    退避格納部
１２５    送信レジスタ
１２７    受信レジスタ
１５１    フリップフロップ
１２６１、１２６２、１２６３、１２７１    セレクタ
１２８１、１２８３、１５３１    ドライバ
１２８２、１２８４、１５３２    レシーバ
１２８５、１２８６、１２８８    リピータ回路
１２８７、１２８９    セレクタ
１５３３    インバータ
【図１】
0004941212.tif 000002
【図２】
0004941212.tif 000003
【図３】
0004941212.tif 000004
【図４】
0004941212.tif 000005
【図５】
0004941212.tif 000006
【図６】
0004941212.tif 000007