バスアクセスエラー処理方式
【目的】バスアクセスエラーを処理する方式に関し、CPUにおけるバスアクセスエラーに対する処理を簡単にするとともに、活線保守可能なバスの延長を容易にすることを目的とする。
【構成】バスアクセスエラーの発生時、すなわちバス2を介するCPU1から被制御デバイス3に対するアクセスが正常に終了しなかったとき、被制御デバイス3からバスエラー信号をCPU1に返送することによって、CPU1が基本プログラムに基づいて例外処理を実行するシステムにおいて、CPU1がバスエラー信号を受信したとき、バスアクセスエラー発生を対応するフラグ4に表示することによって、ユーザプログラム側でバスアクセスエラー発生時の回避処理を実行可能にすることで構成する。
【構成】バスアクセスエラーの発生時、すなわちバス2を介するCPU1から被制御デバイス3に対するアクセスが正常に終了しなかったとき、被制御デバイス3からバスエラー信号をCPU1に返送することによって、CPU1が基本プログラムに基づいて例外処理を実行するシステムにおいて、CPU1がバスエラー信号を受信したとき、バスアクセスエラー発生を対応するフラグ4に表示することによって、ユーザプログラム側でバスアクセスエラー発生時の回避処理を実行可能にすることで構成する。
【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、バスアクセスエラーを処理する方式に関し、特に中央処理装置(CPU)におけるバスアクセスエラーに対する処理を簡単にするとともに、活線保守可能なバスの延長を容易にしたバスアクセスエラー処理方式に関するものである。
【0002】
【従来の技術】従来、高機能なCPUにおいては、一般に、CPUからバスをアクセスした結果、アクセスされた側が障害等のため、正常にアクセスできなかった場合等に、CPUに対してバスエラー(BERR)信号をアサートすることによって、CPUに例外割り込みを発生させる機能が具備されている。
【0003】図13は、CPUにおけるBERRの位置付けを示したものであって、CPU11と被制御デバイス12の間において、CPU11からのアドレス信号ADDと、リード/ライト制御信号R/Wとに応じて、CPU11と被制御デバイス12間でデータ信号DATAの授受が行われ、データの転送の処理が終了したとき、被制御デバイス12からCPU11に対してデータ転送終了信号*DCが送出されるとともに、バスアクセスエラー発生時、バスエラー信号*BERRが被制御デバイス12からCPU11に対して送出されることが示されている。
【0004】このような機能を使用すれば、該当アクセス部が存在しなかったり、パリティエラーが発生した場合等のように、障害が発生したときに、CPUが直ちに致命的な状態に遷移することなく、CPUのハードウェアが割り込みを発生することによって、基本プログラム中の例外処理部で障害原因を判定して、再実行や、異常時の回避処理に移行することができる。
【0005】しかしながら、この方式では、システムを構築する場合に、例外処理部のソフトウェアをシステム構成に合わせて作成する必要があるとともに、システムが拡張されたような場合には、基本的な例外処理部に対しても、変更を加える必要が生じる。
【0006】また、あるアドレス空間をアクセスしたときバスエラーが発生する可能性がある場合には、ソフトウェアをプログラミングする際に、バスエラー発生時の回避処理を記述した番地を、例外処理部に登録するなどして、バスエラー割り込み発生時の処理に対応する必要がある。このように従来の方式では、ソフトウェアの記述が複雑になる。
【0007】また、近年において、プロセッサを使用した制御系の場合、その規模が大きくなるのに伴って、システムの機能を分割して、複数のパッケージによって、所望の機能を構成するようにしたシステムが増加している。
【0008】このようなシステムでは、あるパッケージに障害が発生した場合等に、すべての機能を停止することなく、全体の機能としては運転を継続しながら、故障したパッケージのみを交換する、いわゆる活線保守が可能なようにすることが要求されている。
【0009】このような場合には、CPUが該当部をアクセスしようとしたとき、パッケージが存在しないと、CPUからのアクセスに対してバスエラーを発生させることが可能であるが、この場合のエラー原因はパッケージがないためであるから、パッケージの不存在を判断することによって、処理を継続することが可能となる。
【0010】しかしながら、このような判断を例外処理部に記述することは、システムを複雑にする。すなわち、従来のCPUの例外処理は、本来発生しない筈の事象が発生した場合の処理を記述したものであって、致命的なエラーと考えられている。従って、活線保守を行うシステム等においては、利用しづらい面がある。
【0011】また、CPUのバスを延長する場合には、直接、バスを延長する方式の他に、通信LSI等を利用して、CPUの命令を他のプロトコルに変換して遠隔にアクセスする方式が一般に用いられている。
【0012】図14は、通信LSIを用いたバス延長方式のイメージを示したものであって、CPU搭載パッケージ13に、CPU14とCPUバスで接続された通信LSI15を設けるととにも、被制御パッケージ16にも、被制御デバイス17とCPUバスで接続された通信LSI18を設け、両通信LSI15,18間において、それぞれのCPUの命令をあるプロトコルに変換して、往路の通信路と復路の通信路とを経て通信を行うことによって、バスを延長することが示されている。
【0013】この場合における、一般的な通信LSIのプログラミングは、以下のようなものである。
■ 送り元アドレスをLSIに設定する。
■ 宛て先アドレスをLSIに設定する。
■ 転送データをLSIに書き込むことによって、LSIに起動をかけ、通信を開始する。
■ 相手からの応答を待ち、応答情報を受け取る。
【0014】このように、通信LSIを用いたバス延長方式では、CPUは直接、相手に対してデータを書いたり、読んだりすることはできず、所定の手順(プロトコル)に基づいて、処理を行うことが必要である。
【0015】この方式では、ある空間をアクセスする際に、CPUの命令で直接アクセスするのではなく、通信LSIを制御して通信を行う必要がある。そのため、このような方式では、プログラムが複雑化するとともに、処理に時間がかかることになる。
【0016】
【発明が解決しようとする課題】上述のように、バスエラー発生時、CPUが例外割り込みを発生する方式では、システムを構築する際、基本プログラム中の例外処理部のソフトウェアをシステム構成に合わせて作成する必要があるとともに、システムの拡張時には、基本的な例外処理部に対しても、変更を加える必要が生じるとともに、バスエラーが発生する可能性がある場合には、ソフトウェア作成時、バスエラー発生時の回避処理を記述した番地を、例外処理部に登録する等のように、バスエラー割り込み発生時の処理に対応する必要がある。このように従来の方式では、ソフトウェアの記述が複雑になるという問題がある。
【0017】また、活線保守を行うために、パッケージの不存在の判断を例外処理部に記述することは、システムを複雑にするとともに、従来のCPUの例外処理は、活線保守を行うシステム等においては、利用しづらい面があるという問題がある。
【0018】さらに、CPUのバスを延長する際に、通信LSIを制御して通信を行う方式では、プログラムが複雑化するとともに、処理に時間がかかるという問題がある。
【0019】本発明は、このような従来技術の課題を解決しようとするものであって、バスエラー発生時における例外処理部のソフトウェアをシステム構成に合わせて作成する必要がなく、システムの拡張時に、基本的な例外処理部に対して、変更を加える必要がなく、ユーザ側で回避処理を簡単に記述できるとともに、活線保守が可能なシステムに対してバスの拡張が容易であり、また単純にCPUバスを延長できないシステムにおいても、簡単に活線保守が可能なプログラミングを記述できるバスアクセスエラー処理方式を提供することを目的としている。
【0020】
【課題を解決するための手段】
(1) 図1は、本発明の原理的構成を示したものである。本発明は、CPU1からのバス2を介する被制御デバイス3へのアクセスが正常に終了しないバスアクセスエラーの発生時、被制御デバイス3からバスエラー信号をCPU1に返送することによってCPU1が基本プログラムに基づいて例外処理を実行するシステムにおいて、バスエラー信号受信時、CPU1がバスアクセスエラー発生を対応するフラグ4に表示することによって、ユーザプログラム側でバスアクセスエラー発生時の回避処理を実行可能にしたものである。
【0021】(2) また本発明は(1) において、ユーザプログラム側における回避処理が、バスアクセスエラー発生時、CPU1がユーザプログラムにおける次の実行ステップを退避して例外処理へトラップし、この例外処理においてバスアクセスエラーを発生したアドレス空間がシステムに致命的影響を与えないものであることを判断したとき、例外処理を終了して退避されているユーザプログラムへ戻るものである。
【0022】(3) また本発明は(2) において、ユーザプログラムは、バスアクセスエラーが発生する可能性があるアドレス空間をアクセスする際には、アクセス後、フラグ4を確認してから次の処理を行うものである。
【0023】(4) また本発明は(1) において、基本プログラムにおいて使用する第1のバスエラー信号と、ユーザプログラムにおいて使用する第2のバスエラー信号とを設け、第1のバスエラー信号発生時には例外処理を実行し、第2のバスエラー信号発生時にはフラグ4に表示して処理を継続するものである。
【0024】(5) また本発明は(4) において、ユーザプログラムは、バスアクセスエラーが発生する可能性があるアドレス空間をアクセスする際には、アクセス後、フラグ4を確認してから次の処理を行うものである。
【0025】(6) また本発明は(1) または(2) において、CPU1と被制御デバイス3とが異なるパッケージに収容される場合に、活線保守可能なシステムを構築するものである。
【0026】(7) また本発明は(1) または(2) において、CPU1と被制御デバイス3とが異なるパッケージに収容される場合に、それぞれのパッケージにフラグ4の内容を中継可能な通信手段5,6を設け、通信手段5,6を介して通信を行うことによって、活線保守可能なシステムを構築するものである。
【0027】
【作用】バスエラー発生時に、すべて例外処理ルーチンで処理するのではなく、アクセスを行ったプログラム側にそのアクセスでバスエラーが発生したことを通知できれば、プログラム側でバスエラー時の回避処理を記述することができ、上述のような、従来技術の問題点を解決することが可能となる。
【0028】バスエラー発生の通知は、CPUに具備されているフラグに、バスエラー時にセットできるフラグを追加することによって実現できる。このようなバスエラーに対応するフラグに基づく、問題解決の方法としては、次のようなものがある。
【0029】■ CPUへの*BERR信号がアサートされると、一応、例外処理割り込みが発生し、内容を例外処理部で判断したのち、ユーザ側(通常のプログラム側)へ返却する方法。
【0030】■ CPUへの*BERR信号として、ユーザプログラム側で使用する*BERR2信号と、基本プログラム(OS)側で使用する*BERR1信号とを設ける。基本プログラム側で使用する*BERR1がCPUにアサートされると、例外処理が発生して、そこで処理が実行される。ユーザ側で使用する*BERR2がCPUにアサートされると、バスエラーフラグをセットして、そのまま処理を継続する方法。
【0031】図2は、*BERR1信号と*BERR2信号の使用方法を示したものであって、CPU21に対して、メモリ22から*BERR1が入力され、通信用LSI23から*BERR2が入力されることが示されている。
【0032】*BERR1と*BERR2の2つの信号の使い方としては、バスエラーが発生すると、システムに致命的な影響を与え、基本プログラムの介在が必要となる場合には、*BERR1を用いる。一方、バスエラーが発生しても、局所的な影響しかなく、ユーザ側で対処可能なときは、*BERR2を使用する。例えば、バスの拡張の箇所で発生したバスエラー等は、*BERR2に入力し、メモリ等で発生したバスエラー等は、*BERR1に入力する。
【0033】上述の■の方法について詳細に説明する。以下においては、バスエラーが発生した際の例外処理の場合の例について示す。
【0034】バスエラーが発生したとき、CPUは内部のレジスタにバスエラーに対応するフラグをセットして、例外処理へトラップする。トラップする際には、スタック上に、ユーザプログラムで次に実行するプログラムカウンタと、実行時のフラグとを退避するとともに、現在まで動作していたプログラムカウンタと、アクセスしていた空間およびデータを退避してあるものとする。
【0035】バスエラーによる例外処理では、アクセスしていたアドレス空間を確認後、その空間がシステムに致命的な影響を与えない空間であると判断した場合には、例外処理を終了してユーザプログラムに戻る。この際、スタック上に退避されていたフラグが、再度CPUに設定されるので、ユーザプログラム側でバスエラーフラグがセットされていることを確認できる。
【0036】ユーザプログラム側では、バスエラーが発生する可能性があるアドレス空間をアクセスする場合には、アクセスしたあとで、必ずエラーフラグを確認して、もしもセットされていた場合には、異常処理を実行する。もしもクリアされたままであった場合は、アクセスに成功しているので、処理を継続する。
【0037】上述の■の方法について詳細に説明する。以下においては、バスエラーが発生した際の例外処理の場合の例について示す。
【0038】ユーザプログラムが処理するバスエラーは*BERR2に接続する。CPUが*BERR2がアサートされたことを認識した場合には、バスエラーフラグをセットして、処理を継続する。
【0039】ユーザプログラム側では、■の方法と同様に、バスエラーが発生する可能性があるアドレス空間をアクセスする場合には、アクセスしたあとで、必ず、エラーフラグを確認して、もしもセットされていた場合には、異常処理を実行する。もしも、エラーフラグがクリアされたままであった場合には、アクセスに成功しているので、処理を継続する。
【0040】■の方法では、CPUのハードウェアが、*BERR1と*BERR2とを認識できるため、*BERR2がアサートされた場合には、例外処理を行わず、そのまま処理を継続することが可能である。
【0041】以上説明した■と■のどちらの方法でも実現可能である。この方式を用いれば、バスを延長するときにも、延長用のデバイスで相手の応答がない等のプロトコルエラーを検出した場合に、バスエラー信号としてCPUに返送すれば、プログラム上でプロトコルを書き込まなくても、通常のCPUの命令を使用して、バスを延長することが可能である。
【0042】すなわち、通信用のLSIは、直接、CPUバスを通信信号に変換し、コマンドを送出して応答を待つ。無応答の場合には、CPUに対してバスエラー信号を返送する。こうすることによって、プログラム上ではあるアドレス空間にアクセスしたのち、バスエラーフラグを確認するだけで、処理の完了と未完了の判断を行うことができる。
【0043】
【実施例】以下においては、まず本発明の一実施例としてのCPUのモデルを説明する。図3は、フラグの構成例を示したものである。Zはゼロフラグであって、演算結果がゼロか否かを反映する。Nはネガティブフラグであって、演算結果が負か否かを反映する。Vはオーバフラグであって、オーバフローの発生を反映する。Cはキャリアフラグであって、キャリアの発生を反映する。Eはバスエラーフラグであって、バスエラーの発生を反映する。
【0044】以上のフラグは“0”でネゲート、“1”でアサートの意味とされる。これらのフラグは、Eフラグを除いて、一般的に使用されているフラグであり、その他のフラグが存在しても、または、他のフラグで代替されても差し支えない。
【0045】分岐命令は、以下のようなものである。Eフラグの状態によって、分岐をするか否かの命令を、以下にモデルとして示す。
BES Branch Error Set (Eフラグ=1のときブランチする)
BEC Branch Error Clear (Eフラグ=0のときブランチする)
【0046】Eフラグの制御命令は、以下のようなものである。Eフラグをプログラムで強制的にクリアしたり、セットしたりする命令を示す。
SEE Set Error flag (Eフラグを1に設定する)
CLE Clear Error flag (Eフラグを0に設定する)
【0047】Eフラグの設定動作は、以下のようなものである。空間アクセス命令でアドレス空間をアクセスした場合に、バスエラーで終了した場合にはE=1とし、CLE命令が実行されるまでは、フラグにセットされたままである。空間アクセス命令で空間をアクセスした場合に、正常に終了した場合には、変化しない。
【0048】なお、上述の方法■の場合には、BERRが発生した場合に、Eフラグはセットされるが、そのフラグは例外処理ルーチンにトラップする際に、スタック上に保存され、例外処理が終了して本来のプログラムに戻る際に、再度Eフラグに反映されるものとする。
【0049】図4は、バスエラーフラグの実現方法を示すハードウェア(1)のブロック図であって、前述の方法■に対応している。図中において31,32はアンドゲート、33はオアゲート、34はリセットセット(RS)フリップフロップ、35はトライステートバッファである。
【0050】図4において、アンドゲート31は、リセット信号*RESETとCLE命令実行時のアクセスとの論理積によって出力を発生して、RSフリップフロップ34のリセット端子Rに入力する。一方、オアゲート33は、*BERR信号と*DC信号との論理和によって出力を発生する。オアゲート33の出力は、例外処理の起動用信号になるとともに、アンドゲート32に入力される。アンドゲート32は、オアゲート33の出力とSEE命令実行時のアクセスとの論理積によって出力を発生して、RSフリップフロップ34のセット端子Sに入力する。
【0051】RSフリップフロップ34は、リセット端子Rの入力によってリセットし、セット端子Sの入力によってセットして、OUTに出力を発生する。RSフリップフロップ34の出力は、分岐命令に使用されるとともに、入力INからトライステートバッファ35に書き込まれ、フラグの読みだしアクセスに応じてOUTに出力を発生して、データバスに送られる。
【0052】図5は、バスエラーフラグの実現方法を示すハードウェア(2)のブロック図であって、前述の方法■に対応している。図中において、図4におけると同じものを同じ番号で示している。
【0053】図5において、アンドゲート31は、リセット信号*RESETとCLE命令実行時のアクセスとの論理積によって出力を発生して、RSフリップフロップ34のリセット端子Rに入力する。一方、オアゲート33は、*BERR2信号と*DC信号との論理和によって出力を発生し、アンドゲート32は、オアゲート33の出力とSEE命令実行時のアクセスとの論理積によって出力を発生して、RSフリップフロップ34のセット端子Sに入力する。
【0054】RSフリップフロップ34は、リセット端子Rの入力によってリセットし、セット端子Sの入力によってセットして、OUTに出力を発生する。RSフリップフロップ34の出力は、分岐命令に使用されるとともに、入力INからトライステートバッファ35に書き込まれ、フラグの読みだしアクセスに応じてOUTに出力を発生して、データバスに送られる。
【0055】以下においては、上述のCPUのモデルに基づいて、あるアドレス空間(被制御デバイス)をアクセスする場合のプログラムの例を示す。
MOVE #1000,a4000 ; データ1000をアドレス4000番地に書く BES NOPKG ; もしバスエラーの場合にはNOPKG 番地にブランチ ・ ; 正常アクセス時の継続動作プログラム ・NOPKG: CLE ; Eフラグのクリア ・ ; 被制御デバイスアクセスに失敗した場合の対応 ・ ; 処理のプログラムの記述 ・ ; ( 例として、PKG の実装状態を確認した後、未 実装と判断した場合は該当PKG を切り離す等の 処理)
【0056】一方、バス拡張用の通信LSIの機能の実現例を以下に示す。簡単なモデルとして、アドレスバス16本,データバス16本,R/W信号,DC,BERRからなる場合を考えるものとする。
【0057】図6は、多重フォーマットの簡単な例を示したものであって、(a)はコマンド(CMD)側を示し、(b)はレスポンス(RSP)側を示す。
【0058】図6(a)において、TOPは多重情報の開始を示す1ビットの情報であって、1は開始を示す。R/Wは、リード/ライトを示す1ビットの情報であって、1はリード、0はライトである。ADD0:15は、アドレス情報を示し、16ビットからなる。DATA0:15は、データ情報であって16ビットからなり、ライト時にデータを多重する。PTYは、TOP〜DATA0:15までのパリティである。なおフォーマット上において、情報以外の部分は0とする。実際に多重情報を転送する際には、論理を反転させて、負論理にして転送する。
【0059】図6(b)において、TOPは多重情報の開始を示す1ビットの情報であって、1は開始を示す。DCは、完了を示す1ビットの情報であって、1は完了を示す。BERRは、バスエラーが発生したことを示す1ビットの情報であって、1はバスエラーの発生を示す。DATA0:15は、データ情報であって16ビットからなり、リード時にデータを多重する。PTYは、TOP〜DATA0:15までのパリティである。なお、フォーマット上において、情報以外の部分は0とする。実際に多重情報を転送する際には、論理を反転させて、負論理にして転送する。
【0060】図7は、バス拡張用通信LSI BUS EXPAを示したものである。BUS EXPAは、CPUからのバスをクロックCLKに同期させて多重し、コマンド(CMD)信号に変換して送出する。送出後、相手からの応答を待ち、もしもある時間後にも無応答の場合には、*BERR端子からBERR信号をアサートして、CPUに被制御デバイスが存在しないことを通知する。
【0061】BUS EXPAにおいて、CPUからのバスにおける、ADD,DATA,R/WがクロックCLKに同期して多重され、コマンド(CMD)として出力される。一方、レスポンス(RSP)として、DATA,DC,BERRが多重され入力される。
【0062】BUS EXPAの内部には、CPUバス上のどのアドレス空間を外部に拡張するかを設定するレジスタや、応答に対する結果の正常性を保存するレジスタ(無応答や相手側でBERRを検出した等の情報)を具備している。
【0063】BUS EXPAにおいては、CADD0:7で指定されたアドレスがアドレス空間の上位8ビットと一致した場合に、多重して送出するものとする。一例として、40Hを設定すると、アドレス空間で4000〜40FFの空間をアクセスされた場合に、多重して外部にデータを送出する。
【0064】図8は、通信LSI BUS EXPAの送信部の内部構成を示すブロック図、図9は通信LSI BUS EXPAの受信部の内部構成を示すブロック図である。
【0065】送信側においては、起動制御部41において、CADD0:7で設定されたアドレスと、CPUバスのアドレスとを比較して、一致した場合にカウンタ(CNT)42を動作させて、多重回路43に起動をかけて多重を開始する。
【0066】またタイマ44にも起動をかけて、受信部でレスポンス(RSP)がある時間待ってもない場合には、タイムオーバになることによって、DC作成部45に対して、DCとBERRをアサートする。
【0067】また、起動時には、起動制御部41は受信部における制御部51に対しても制御をかけることによって、受信待ちになるようにする。
【0068】多重は、図6にフォーマットを示すように、TOPに1を挿入し、制御信号ラッチ46,アドレスラッチ47,データラッチ48を経て入力された、R/W信号,ADD0:15,DATA0:15を順次多重し、最後にパリティ生成部49において生成されたパリティビットを、合成部50において付加して、コマンド(CMD)として送出する。
【0069】受信側では、TOPが1であることを確認すると同時に、分離部52においてレスポンス(RSP)データを分離し、DC,BERR,DATA0:15に分解するとともに、パリティ監視部55において、パリティをチェックして、正常の場合には、DATA0:15を制御部51からの受信完了信号に応じて、データラッチ53,トライステートバッファ54を経てCPUバスに出力する。
【0070】さらにDC作成部45を経てDC,BERRをCPUバスへのせるとともに、タイマ44に対して停止制御を行う。もしもパリティエラーが発生した場合には、LSI内部でDC,BERRをアサートして、バスエラーとして強制的にアクセスを終了させる。
【0071】図10は、バス拡張用通信LSI BUS EXPBを示したものである。BUS EXPBは、多重されたデータを受信して、再度CPUバスに変換する作用を行う。
【0072】BUS EXPBにおいて、CPUバスにおける、ADD,DATA,R/WがクロックCLKに同期して多重され、コマンド(CMD)を受信し、応答としてDATA,DC,BERRを多重して、レスポンス(RSP)として、CPUバスに返送する。
【0073】図11は、通信LSI BUS EXPBの内部構成をブロック図によって示したものである。
【0074】BUS EXPBでは、多重されたコマンド(CMD)を監視し、TOPが1のとき、受信アドレスチェック部61において、そのあとのアドレスをRADD0:7と比較して、一致したとき、分離部62を起動し、R/W,ADD,DATAを分離する。そしてパリティ監視部63においてパリティが正常のとき、それぞれラッチ64,65を経て,R/W,ADD0:15を出力し、ラッチ66,バッファ67を経て、DATA0:15を出力して、拡張側にCPUバスを延長する。
【0075】その後、被制御部からDCおよびBERRが返送されたとき、多重回路68においてデータDATA0:15を多重して、パリティ生成部69において生成されたパリティビットを合成部70において付加して、レスポンス(RSP)として返送する。
【0076】図12は、バス拡張用通信LSIの使用例を示したものである。CPUパッケージ(PKG)71内において、バス拡張用通信LSI BUS EXPA72を使用し、被制御パッケージ(PKG)73内において、バス拡張用通信LSIBUS EXPB74を使用して、両通信LSI BUS EXPA72とBUS EXPB74とを接続することによって、CPUから被制御デバイス75に対するバスが延長されることが示されている。
【0077】
【発明の効果】以上説明したように本発明によれば、CPUのバスアクセスエラーが発生したとき、CPUにエラーフラグを設定することによって、ユーザ側でバスエラーの回避処理を簡単に行うことができるようになる。また、このようなユーザ側でバスエラーを認識可能となるCPUを用いることによって、パッケージ間の距離が短いシステムの場合、活線保守可能なシステムに対して、容易にバスの延長を行うことができる。さらにこのようなCPUを用いることによって、パッケージ間の距離が長いシステムの場合は、バス延長用通信LSIを使用することによって、活線保守可能なシステムに対して、容易にバスの延長を行うことができる。
【図面の簡単な説明】
【図1】本発明の原理的構成を示す図である。
【図2】*BERR1信号と*BERR2信号の使用方法を示す図である。
【図3】フラグの構成例を示す図である。
【図4】バスエラーフラグの実現方法を示すハードウェア(1)のブロック図である。
【図5】バスエラーフラグの実現方法を示すハードウェア(2)のブロック図である。
【図6】多重フォーマットの簡単な例を示す図であって、(a)はコマンド(CMD)側を示し、(b)はレスポンス(RSP)側を示す。
【図7】バス拡張用通信LSI BUS EXPAを示す図である。
【図8】通信LSI BUS EXPAの送信部の内部構成を示すブロック図である。
【図9】通信LSI BUS EXPAの受信部の内部構成を示すブロック図である。
【図10】バス拡張用通信LSI BUS EXPBを示す図である。
【図11】通信LSI BUS EXPBの内部構成を示すブロック図である。
【図12】バス拡張用通信LSIの使用例を示す図である。
【図13】CPUにおけるBERRの位置付けを示す図である。
【図14】通信LSIを用いたバス延長方式のイメージを示す図である。
【符号の説明】
1 CPU
2 バス
3 被制御デバイス
4 フラグ
5 通信手段
6 通信手段
【0001】
【産業上の利用分野】本発明は、バスアクセスエラーを処理する方式に関し、特に中央処理装置(CPU)におけるバスアクセスエラーに対する処理を簡単にするとともに、活線保守可能なバスの延長を容易にしたバスアクセスエラー処理方式に関するものである。
【0002】
【従来の技術】従来、高機能なCPUにおいては、一般に、CPUからバスをアクセスした結果、アクセスされた側が障害等のため、正常にアクセスできなかった場合等に、CPUに対してバスエラー(BERR)信号をアサートすることによって、CPUに例外割り込みを発生させる機能が具備されている。
【0003】図13は、CPUにおけるBERRの位置付けを示したものであって、CPU11と被制御デバイス12の間において、CPU11からのアドレス信号ADDと、リード/ライト制御信号R/Wとに応じて、CPU11と被制御デバイス12間でデータ信号DATAの授受が行われ、データの転送の処理が終了したとき、被制御デバイス12からCPU11に対してデータ転送終了信号*DCが送出されるとともに、バスアクセスエラー発生時、バスエラー信号*BERRが被制御デバイス12からCPU11に対して送出されることが示されている。
【0004】このような機能を使用すれば、該当アクセス部が存在しなかったり、パリティエラーが発生した場合等のように、障害が発生したときに、CPUが直ちに致命的な状態に遷移することなく、CPUのハードウェアが割り込みを発生することによって、基本プログラム中の例外処理部で障害原因を判定して、再実行や、異常時の回避処理に移行することができる。
【0005】しかしながら、この方式では、システムを構築する場合に、例外処理部のソフトウェアをシステム構成に合わせて作成する必要があるとともに、システムが拡張されたような場合には、基本的な例外処理部に対しても、変更を加える必要が生じる。
【0006】また、あるアドレス空間をアクセスしたときバスエラーが発生する可能性がある場合には、ソフトウェアをプログラミングする際に、バスエラー発生時の回避処理を記述した番地を、例外処理部に登録するなどして、バスエラー割り込み発生時の処理に対応する必要がある。このように従来の方式では、ソフトウェアの記述が複雑になる。
【0007】また、近年において、プロセッサを使用した制御系の場合、その規模が大きくなるのに伴って、システムの機能を分割して、複数のパッケージによって、所望の機能を構成するようにしたシステムが増加している。
【0008】このようなシステムでは、あるパッケージに障害が発生した場合等に、すべての機能を停止することなく、全体の機能としては運転を継続しながら、故障したパッケージのみを交換する、いわゆる活線保守が可能なようにすることが要求されている。
【0009】このような場合には、CPUが該当部をアクセスしようとしたとき、パッケージが存在しないと、CPUからのアクセスに対してバスエラーを発生させることが可能であるが、この場合のエラー原因はパッケージがないためであるから、パッケージの不存在を判断することによって、処理を継続することが可能となる。
【0010】しかしながら、このような判断を例外処理部に記述することは、システムを複雑にする。すなわち、従来のCPUの例外処理は、本来発生しない筈の事象が発生した場合の処理を記述したものであって、致命的なエラーと考えられている。従って、活線保守を行うシステム等においては、利用しづらい面がある。
【0011】また、CPUのバスを延長する場合には、直接、バスを延長する方式の他に、通信LSI等を利用して、CPUの命令を他のプロトコルに変換して遠隔にアクセスする方式が一般に用いられている。
【0012】図14は、通信LSIを用いたバス延長方式のイメージを示したものであって、CPU搭載パッケージ13に、CPU14とCPUバスで接続された通信LSI15を設けるととにも、被制御パッケージ16にも、被制御デバイス17とCPUバスで接続された通信LSI18を設け、両通信LSI15,18間において、それぞれのCPUの命令をあるプロトコルに変換して、往路の通信路と復路の通信路とを経て通信を行うことによって、バスを延長することが示されている。
【0013】この場合における、一般的な通信LSIのプログラミングは、以下のようなものである。
【0014】このように、通信LSIを用いたバス延長方式では、CPUは直接、相手に対してデータを書いたり、読んだりすることはできず、所定の手順(プロトコル)に基づいて、処理を行うことが必要である。
【0015】この方式では、ある空間をアクセスする際に、CPUの命令で直接アクセスするのではなく、通信LSIを制御して通信を行う必要がある。そのため、このような方式では、プログラムが複雑化するとともに、処理に時間がかかることになる。
【0016】
【発明が解決しようとする課題】上述のように、バスエラー発生時、CPUが例外割り込みを発生する方式では、システムを構築する際、基本プログラム中の例外処理部のソフトウェアをシステム構成に合わせて作成する必要があるとともに、システムの拡張時には、基本的な例外処理部に対しても、変更を加える必要が生じるとともに、バスエラーが発生する可能性がある場合には、ソフトウェア作成時、バスエラー発生時の回避処理を記述した番地を、例外処理部に登録する等のように、バスエラー割り込み発生時の処理に対応する必要がある。このように従来の方式では、ソフトウェアの記述が複雑になるという問題がある。
【0017】また、活線保守を行うために、パッケージの不存在の判断を例外処理部に記述することは、システムを複雑にするとともに、従来のCPUの例外処理は、活線保守を行うシステム等においては、利用しづらい面があるという問題がある。
【0018】さらに、CPUのバスを延長する際に、通信LSIを制御して通信を行う方式では、プログラムが複雑化するとともに、処理に時間がかかるという問題がある。
【0019】本発明は、このような従来技術の課題を解決しようとするものであって、バスエラー発生時における例外処理部のソフトウェアをシステム構成に合わせて作成する必要がなく、システムの拡張時に、基本的な例外処理部に対して、変更を加える必要がなく、ユーザ側で回避処理を簡単に記述できるとともに、活線保守が可能なシステムに対してバスの拡張が容易であり、また単純にCPUバスを延長できないシステムにおいても、簡単に活線保守が可能なプログラミングを記述できるバスアクセスエラー処理方式を提供することを目的としている。
【0020】
【課題を解決するための手段】
(1) 図1は、本発明の原理的構成を示したものである。本発明は、CPU1からのバス2を介する被制御デバイス3へのアクセスが正常に終了しないバスアクセスエラーの発生時、被制御デバイス3からバスエラー信号をCPU1に返送することによってCPU1が基本プログラムに基づいて例外処理を実行するシステムにおいて、バスエラー信号受信時、CPU1がバスアクセスエラー発生を対応するフラグ4に表示することによって、ユーザプログラム側でバスアクセスエラー発生時の回避処理を実行可能にしたものである。
【0021】(2) また本発明は(1) において、ユーザプログラム側における回避処理が、バスアクセスエラー発生時、CPU1がユーザプログラムにおける次の実行ステップを退避して例外処理へトラップし、この例外処理においてバスアクセスエラーを発生したアドレス空間がシステムに致命的影響を与えないものであることを判断したとき、例外処理を終了して退避されているユーザプログラムへ戻るものである。
【0022】(3) また本発明は(2) において、ユーザプログラムは、バスアクセスエラーが発生する可能性があるアドレス空間をアクセスする際には、アクセス後、フラグ4を確認してから次の処理を行うものである。
【0023】(4) また本発明は(1) において、基本プログラムにおいて使用する第1のバスエラー信号と、ユーザプログラムにおいて使用する第2のバスエラー信号とを設け、第1のバスエラー信号発生時には例外処理を実行し、第2のバスエラー信号発生時にはフラグ4に表示して処理を継続するものである。
【0024】(5) また本発明は(4) において、ユーザプログラムは、バスアクセスエラーが発生する可能性があるアドレス空間をアクセスする際には、アクセス後、フラグ4を確認してから次の処理を行うものである。
【0025】(6) また本発明は(1) または(2) において、CPU1と被制御デバイス3とが異なるパッケージに収容される場合に、活線保守可能なシステムを構築するものである。
【0026】(7) また本発明は(1) または(2) において、CPU1と被制御デバイス3とが異なるパッケージに収容される場合に、それぞれのパッケージにフラグ4の内容を中継可能な通信手段5,6を設け、通信手段5,6を介して通信を行うことによって、活線保守可能なシステムを構築するものである。
【0027】
【作用】バスエラー発生時に、すべて例外処理ルーチンで処理するのではなく、アクセスを行ったプログラム側にそのアクセスでバスエラーが発生したことを通知できれば、プログラム側でバスエラー時の回避処理を記述することができ、上述のような、従来技術の問題点を解決することが可能となる。
【0028】バスエラー発生の通知は、CPUに具備されているフラグに、バスエラー時にセットできるフラグを追加することによって実現できる。このようなバスエラーに対応するフラグに基づく、問題解決の方法としては、次のようなものがある。
【0029】
【0030】
【0031】図2は、*BERR1信号と*BERR2信号の使用方法を示したものであって、CPU21に対して、メモリ22から*BERR1が入力され、通信用LSI23から*BERR2が入力されることが示されている。
【0032】*BERR1と*BERR2の2つの信号の使い方としては、バスエラーが発生すると、システムに致命的な影響を与え、基本プログラムの介在が必要となる場合には、*BERR1を用いる。一方、バスエラーが発生しても、局所的な影響しかなく、ユーザ側で対処可能なときは、*BERR2を使用する。例えば、バスの拡張の箇所で発生したバスエラー等は、*BERR2に入力し、メモリ等で発生したバスエラー等は、*BERR1に入力する。
【0033】上述の
【0034】バスエラーが発生したとき、CPUは内部のレジスタにバスエラーに対応するフラグをセットして、例外処理へトラップする。トラップする際には、スタック上に、ユーザプログラムで次に実行するプログラムカウンタと、実行時のフラグとを退避するとともに、現在まで動作していたプログラムカウンタと、アクセスしていた空間およびデータを退避してあるものとする。
【0035】バスエラーによる例外処理では、アクセスしていたアドレス空間を確認後、その空間がシステムに致命的な影響を与えない空間であると判断した場合には、例外処理を終了してユーザプログラムに戻る。この際、スタック上に退避されていたフラグが、再度CPUに設定されるので、ユーザプログラム側でバスエラーフラグがセットされていることを確認できる。
【0036】ユーザプログラム側では、バスエラーが発生する可能性があるアドレス空間をアクセスする場合には、アクセスしたあとで、必ずエラーフラグを確認して、もしもセットされていた場合には、異常処理を実行する。もしもクリアされたままであった場合は、アクセスに成功しているので、処理を継続する。
【0037】上述の
【0038】ユーザプログラムが処理するバスエラーは*BERR2に接続する。CPUが*BERR2がアサートされたことを認識した場合には、バスエラーフラグをセットして、処理を継続する。
【0039】ユーザプログラム側では、
【0040】
【0041】以上説明した
【0042】すなわち、通信用のLSIは、直接、CPUバスを通信信号に変換し、コマンドを送出して応答を待つ。無応答の場合には、CPUに対してバスエラー信号を返送する。こうすることによって、プログラム上ではあるアドレス空間にアクセスしたのち、バスエラーフラグを確認するだけで、処理の完了と未完了の判断を行うことができる。
【0043】
【実施例】以下においては、まず本発明の一実施例としてのCPUのモデルを説明する。図3は、フラグの構成例を示したものである。Zはゼロフラグであって、演算結果がゼロか否かを反映する。Nはネガティブフラグであって、演算結果が負か否かを反映する。Vはオーバフラグであって、オーバフローの発生を反映する。Cはキャリアフラグであって、キャリアの発生を反映する。Eはバスエラーフラグであって、バスエラーの発生を反映する。
【0044】以上のフラグは“0”でネゲート、“1”でアサートの意味とされる。これらのフラグは、Eフラグを除いて、一般的に使用されているフラグであり、その他のフラグが存在しても、または、他のフラグで代替されても差し支えない。
【0045】分岐命令は、以下のようなものである。Eフラグの状態によって、分岐をするか否かの命令を、以下にモデルとして示す。
BES Branch Error Set (Eフラグ=1のときブランチする)
BEC Branch Error Clear (Eフラグ=0のときブランチする)
【0046】Eフラグの制御命令は、以下のようなものである。Eフラグをプログラムで強制的にクリアしたり、セットしたりする命令を示す。
SEE Set Error flag (Eフラグを1に設定する)
CLE Clear Error flag (Eフラグを0に設定する)
【0047】Eフラグの設定動作は、以下のようなものである。空間アクセス命令でアドレス空間をアクセスした場合に、バスエラーで終了した場合にはE=1とし、CLE命令が実行されるまでは、フラグにセットされたままである。空間アクセス命令で空間をアクセスした場合に、正常に終了した場合には、変化しない。
【0048】なお、上述の方法
【0049】図4は、バスエラーフラグの実現方法を示すハードウェア(1)のブロック図であって、前述の方法
【0050】図4において、アンドゲート31は、リセット信号*RESETとCLE命令実行時のアクセスとの論理積によって出力を発生して、RSフリップフロップ34のリセット端子Rに入力する。一方、オアゲート33は、*BERR信号と*DC信号との論理和によって出力を発生する。オアゲート33の出力は、例外処理の起動用信号になるとともに、アンドゲート32に入力される。アンドゲート32は、オアゲート33の出力とSEE命令実行時のアクセスとの論理積によって出力を発生して、RSフリップフロップ34のセット端子Sに入力する。
【0051】RSフリップフロップ34は、リセット端子Rの入力によってリセットし、セット端子Sの入力によってセットして、OUTに出力を発生する。RSフリップフロップ34の出力は、分岐命令に使用されるとともに、入力INからトライステートバッファ35に書き込まれ、フラグの読みだしアクセスに応じてOUTに出力を発生して、データバスに送られる。
【0052】図5は、バスエラーフラグの実現方法を示すハードウェア(2)のブロック図であって、前述の方法
【0053】図5において、アンドゲート31は、リセット信号*RESETとCLE命令実行時のアクセスとの論理積によって出力を発生して、RSフリップフロップ34のリセット端子Rに入力する。一方、オアゲート33は、*BERR2信号と*DC信号との論理和によって出力を発生し、アンドゲート32は、オアゲート33の出力とSEE命令実行時のアクセスとの論理積によって出力を発生して、RSフリップフロップ34のセット端子Sに入力する。
【0054】RSフリップフロップ34は、リセット端子Rの入力によってリセットし、セット端子Sの入力によってセットして、OUTに出力を発生する。RSフリップフロップ34の出力は、分岐命令に使用されるとともに、入力INからトライステートバッファ35に書き込まれ、フラグの読みだしアクセスに応じてOUTに出力を発生して、データバスに送られる。
【0055】以下においては、上述のCPUのモデルに基づいて、あるアドレス空間(被制御デバイス)をアクセスする場合のプログラムの例を示す。
MOVE #1000,a4000 ; データ1000をアドレス4000番地に書く BES NOPKG ; もしバスエラーの場合にはNOPKG 番地にブランチ ・ ; 正常アクセス時の継続動作プログラム ・NOPKG: CLE ; Eフラグのクリア ・ ; 被制御デバイスアクセスに失敗した場合の対応 ・ ; 処理のプログラムの記述 ・ ; ( 例として、PKG の実装状態を確認した後、未 実装と判断した場合は該当PKG を切り離す等の 処理)
【0056】一方、バス拡張用の通信LSIの機能の実現例を以下に示す。簡単なモデルとして、アドレスバス16本,データバス16本,R/W信号,DC,BERRからなる場合を考えるものとする。
【0057】図6は、多重フォーマットの簡単な例を示したものであって、(a)はコマンド(CMD)側を示し、(b)はレスポンス(RSP)側を示す。
【0058】図6(a)において、TOPは多重情報の開始を示す1ビットの情報であって、1は開始を示す。R/Wは、リード/ライトを示す1ビットの情報であって、1はリード、0はライトである。ADD0:15は、アドレス情報を示し、16ビットからなる。DATA0:15は、データ情報であって16ビットからなり、ライト時にデータを多重する。PTYは、TOP〜DATA0:15までのパリティである。なおフォーマット上において、情報以外の部分は0とする。実際に多重情報を転送する際には、論理を反転させて、負論理にして転送する。
【0059】図6(b)において、TOPは多重情報の開始を示す1ビットの情報であって、1は開始を示す。DCは、完了を示す1ビットの情報であって、1は完了を示す。BERRは、バスエラーが発生したことを示す1ビットの情報であって、1はバスエラーの発生を示す。DATA0:15は、データ情報であって16ビットからなり、リード時にデータを多重する。PTYは、TOP〜DATA0:15までのパリティである。なお、フォーマット上において、情報以外の部分は0とする。実際に多重情報を転送する際には、論理を反転させて、負論理にして転送する。
【0060】図7は、バス拡張用通信LSI BUS EXPAを示したものである。BUS EXPAは、CPUからのバスをクロックCLKに同期させて多重し、コマンド(CMD)信号に変換して送出する。送出後、相手からの応答を待ち、もしもある時間後にも無応答の場合には、*BERR端子からBERR信号をアサートして、CPUに被制御デバイスが存在しないことを通知する。
【0061】BUS EXPAにおいて、CPUからのバスにおける、ADD,DATA,R/WがクロックCLKに同期して多重され、コマンド(CMD)として出力される。一方、レスポンス(RSP)として、DATA,DC,BERRが多重され入力される。
【0062】BUS EXPAの内部には、CPUバス上のどのアドレス空間を外部に拡張するかを設定するレジスタや、応答に対する結果の正常性を保存するレジスタ(無応答や相手側でBERRを検出した等の情報)を具備している。
【0063】BUS EXPAにおいては、CADD0:7で指定されたアドレスがアドレス空間の上位8ビットと一致した場合に、多重して送出するものとする。一例として、40Hを設定すると、アドレス空間で4000〜40FFの空間をアクセスされた場合に、多重して外部にデータを送出する。
【0064】図8は、通信LSI BUS EXPAの送信部の内部構成を示すブロック図、図9は通信LSI BUS EXPAの受信部の内部構成を示すブロック図である。
【0065】送信側においては、起動制御部41において、CADD0:7で設定されたアドレスと、CPUバスのアドレスとを比較して、一致した場合にカウンタ(CNT)42を動作させて、多重回路43に起動をかけて多重を開始する。
【0066】またタイマ44にも起動をかけて、受信部でレスポンス(RSP)がある時間待ってもない場合には、タイムオーバになることによって、DC作成部45に対して、DCとBERRをアサートする。
【0067】また、起動時には、起動制御部41は受信部における制御部51に対しても制御をかけることによって、受信待ちになるようにする。
【0068】多重は、図6にフォーマットを示すように、TOPに1を挿入し、制御信号ラッチ46,アドレスラッチ47,データラッチ48を経て入力された、R/W信号,ADD0:15,DATA0:15を順次多重し、最後にパリティ生成部49において生成されたパリティビットを、合成部50において付加して、コマンド(CMD)として送出する。
【0069】受信側では、TOPが1であることを確認すると同時に、分離部52においてレスポンス(RSP)データを分離し、DC,BERR,DATA0:15に分解するとともに、パリティ監視部55において、パリティをチェックして、正常の場合には、DATA0:15を制御部51からの受信完了信号に応じて、データラッチ53,トライステートバッファ54を経てCPUバスに出力する。
【0070】さらにDC作成部45を経てDC,BERRをCPUバスへのせるとともに、タイマ44に対して停止制御を行う。もしもパリティエラーが発生した場合には、LSI内部でDC,BERRをアサートして、バスエラーとして強制的にアクセスを終了させる。
【0071】図10は、バス拡張用通信LSI BUS EXPBを示したものである。BUS EXPBは、多重されたデータを受信して、再度CPUバスに変換する作用を行う。
【0072】BUS EXPBにおいて、CPUバスにおける、ADD,DATA,R/WがクロックCLKに同期して多重され、コマンド(CMD)を受信し、応答としてDATA,DC,BERRを多重して、レスポンス(RSP)として、CPUバスに返送する。
【0073】図11は、通信LSI BUS EXPBの内部構成をブロック図によって示したものである。
【0074】BUS EXPBでは、多重されたコマンド(CMD)を監視し、TOPが1のとき、受信アドレスチェック部61において、そのあとのアドレスをRADD0:7と比較して、一致したとき、分離部62を起動し、R/W,ADD,DATAを分離する。そしてパリティ監視部63においてパリティが正常のとき、それぞれラッチ64,65を経て,R/W,ADD0:15を出力し、ラッチ66,バッファ67を経て、DATA0:15を出力して、拡張側にCPUバスを延長する。
【0075】その後、被制御部からDCおよびBERRが返送されたとき、多重回路68においてデータDATA0:15を多重して、パリティ生成部69において生成されたパリティビットを合成部70において付加して、レスポンス(RSP)として返送する。
【0076】図12は、バス拡張用通信LSIの使用例を示したものである。CPUパッケージ(PKG)71内において、バス拡張用通信LSI BUS EXPA72を使用し、被制御パッケージ(PKG)73内において、バス拡張用通信LSIBUS EXPB74を使用して、両通信LSI BUS EXPA72とBUS EXPB74とを接続することによって、CPUから被制御デバイス75に対するバスが延長されることが示されている。
【0077】
【発明の効果】以上説明したように本発明によれば、CPUのバスアクセスエラーが発生したとき、CPUにエラーフラグを設定することによって、ユーザ側でバスエラーの回避処理を簡単に行うことができるようになる。また、このようなユーザ側でバスエラーを認識可能となるCPUを用いることによって、パッケージ間の距離が短いシステムの場合、活線保守可能なシステムに対して、容易にバスの延長を行うことができる。さらにこのようなCPUを用いることによって、パッケージ間の距離が長いシステムの場合は、バス延長用通信LSIを使用することによって、活線保守可能なシステムに対して、容易にバスの延長を行うことができる。
【図面の簡単な説明】
【図1】本発明の原理的構成を示す図である。
【図2】*BERR1信号と*BERR2信号の使用方法を示す図である。
【図3】フラグの構成例を示す図である。
【図4】バスエラーフラグの実現方法を示すハードウェア(1)のブロック図である。
【図5】バスエラーフラグの実現方法を示すハードウェア(2)のブロック図である。
【図6】多重フォーマットの簡単な例を示す図であって、(a)はコマンド(CMD)側を示し、(b)はレスポンス(RSP)側を示す。
【図7】バス拡張用通信LSI BUS EXPAを示す図である。
【図8】通信LSI BUS EXPAの送信部の内部構成を示すブロック図である。
【図9】通信LSI BUS EXPAの受信部の内部構成を示すブロック図である。
【図10】バス拡張用通信LSI BUS EXPBを示す図である。
【図11】通信LSI BUS EXPBの内部構成を示すブロック図である。
【図12】バス拡張用通信LSIの使用例を示す図である。
【図13】CPUにおけるBERRの位置付けを示す図である。
【図14】通信LSIを用いたバス延長方式のイメージを示す図である。
【符号の説明】
1 CPU
2 バス
3 被制御デバイス
4 フラグ
5 通信手段
6 通信手段
【特許請求の範囲】
【請求項1】 CPU(1)からのバス(2)を介する被制御デバイス(3)へのアクセスが正常に終了しないバスアクセスエラーの発生時、被制御デバイス(3)からバスエラー信号をCPU(1)に返送することによってCPU(1)が基本プログラムに基づいて例外処理を実行するシステムにおいて、前記バスエラー信号受信時、CPU(1)がバスアクセスエラー発生を対応するフラグ(4)に表示することによって、ユーザプログラム側でバスアクセスエラー発生時の回避処理を実行可能にしたことを特徴とするバスアクセスエラー処理方式。
【請求項2】 前記ユーザプログラム側における回避処理が、バスアクセスエラー発生時、CPU(1)がユーザプログラムにおける次の実行ステップを退避して例外処理へトラップし、該例外処理においてバスアクセスエラーを発生したアドレス空間がシステムに致命的影響を与えないものであることを判断したとき、該例外処理を終了して退避されているユーザプログラムへ戻ることを特徴とする請求項1に記載のバスアクセスエラー処理方式。
【請求項3】 請求項2に記載のバスアクセスエラー処理方式において、ユーザプログラムは、バスアクセスエラーが発生する可能性があるアドレス空間をアクセスする際には、アクセス後、前記フラグ(4)を確認してから次の処理を行うことを特徴とするバスアクセスエラー処理方式。
【請求項4】 請求項1に記載のバスアクセスエラー処理方式において、基本プログラムにおいて使用する第1のバスエラー信号と、ユーザプログラムにおいて使用する第2のバスエラー信号とを設け、該第1のバスエラー信号発生時には例外処理を実行し、第2のバスエラー信号発生時には前記フラグ(4)に表示して処理を継続することを特徴とするバスアクセスエラー処理方式。
【請求項5】 請求項4に記載のバスアクセスエラー処理方式において、ユーザプログラムは、バスアクセスエラーが発生する可能性があるアドレス空間をアクセスする際には、アクセス後、前記フラグ(4)を確認してから次の処理を行うことを特徴とするバスアクセスエラー処理方式。
【請求項6】 前記CPU(1)と被制御デバイス(3)とが異なるパッケージに収容される場合に、活線保守可能なシステムを構築することを特徴とする請求項1または2に記載のバスアクセスエラー処理方式。
【請求項7】 前記CPU(1)と被制御デバイス(3)とが異なるパッケージに収容される場合に、それぞれのパッケージに前記フラグ(4)の内容を中継可能な通信手段(5,6)を設け、該通信手段(5,6)を介して通信を行うことによって、活線保守可能なシステムを構築することを特徴とする請求項1または2に記載のバスアクセスエラー処理方式。
【請求項1】 CPU(1)からのバス(2)を介する被制御デバイス(3)へのアクセスが正常に終了しないバスアクセスエラーの発生時、被制御デバイス(3)からバスエラー信号をCPU(1)に返送することによってCPU(1)が基本プログラムに基づいて例外処理を実行するシステムにおいて、前記バスエラー信号受信時、CPU(1)がバスアクセスエラー発生を対応するフラグ(4)に表示することによって、ユーザプログラム側でバスアクセスエラー発生時の回避処理を実行可能にしたことを特徴とするバスアクセスエラー処理方式。
【請求項2】 前記ユーザプログラム側における回避処理が、バスアクセスエラー発生時、CPU(1)がユーザプログラムにおける次の実行ステップを退避して例外処理へトラップし、該例外処理においてバスアクセスエラーを発生したアドレス空間がシステムに致命的影響を与えないものであることを判断したとき、該例外処理を終了して退避されているユーザプログラムへ戻ることを特徴とする請求項1に記載のバスアクセスエラー処理方式。
【請求項3】 請求項2に記載のバスアクセスエラー処理方式において、ユーザプログラムは、バスアクセスエラーが発生する可能性があるアドレス空間をアクセスする際には、アクセス後、前記フラグ(4)を確認してから次の処理を行うことを特徴とするバスアクセスエラー処理方式。
【請求項4】 請求項1に記載のバスアクセスエラー処理方式において、基本プログラムにおいて使用する第1のバスエラー信号と、ユーザプログラムにおいて使用する第2のバスエラー信号とを設け、該第1のバスエラー信号発生時には例外処理を実行し、第2のバスエラー信号発生時には前記フラグ(4)に表示して処理を継続することを特徴とするバスアクセスエラー処理方式。
【請求項5】 請求項4に記載のバスアクセスエラー処理方式において、ユーザプログラムは、バスアクセスエラーが発生する可能性があるアドレス空間をアクセスする際には、アクセス後、前記フラグ(4)を確認してから次の処理を行うことを特徴とするバスアクセスエラー処理方式。
【請求項6】 前記CPU(1)と被制御デバイス(3)とが異なるパッケージに収容される場合に、活線保守可能なシステムを構築することを特徴とする請求項1または2に記載のバスアクセスエラー処理方式。
【請求項7】 前記CPU(1)と被制御デバイス(3)とが異なるパッケージに収容される場合に、それぞれのパッケージに前記フラグ(4)の内容を中継可能な通信手段(5,6)を設け、該通信手段(5,6)を介して通信を行うことによって、活線保守可能なシステムを構築することを特徴とする請求項1または2に記載のバスアクセスエラー処理方式。
【図1】
【図2】
【図3】
【図4】
【図6】
【図10】
【図5】
【図7】
【図8】
【図9】
【図12】
【図11】
【図13】
【図14】
【図2】
【図3】
【図4】
【図6】
【図10】
【図5】
【図7】
【図8】
【図9】
【図12】
【図11】
【図13】
【図14】
【公開番号】特開平6−103094
【公開日】平成6年(1994)4月15日
【国際特許分類】
【出願番号】特願平4−249216
【出願日】平成4年(1992)9月18日
【出願人】(000005223)富士通株式会社 (25,993)
【公開日】平成6年(1994)4月15日
【国際特許分類】
【出願日】平成4年(1992)9月18日
【出願人】(000005223)富士通株式会社 (25,993)
[ Back to top ]