(57)【特許請求の範囲】
【請求項１】
特定のチャネル装置のために作成されたチャネルコマンド列（ＣＣＷ列）を、他のチャネル装置のための別のチャネルコマンド列（ＤＣＷ列）に変換し、該変換されたチャネルコマンド列（ＤＣＷ列）を用いて他のチャネル装置が前記特定のチャネル装置と同一のＩ／Ｏ動作を実行するＩ／Ｏ処理方法において、
前記変換に際して、チャネルコマンドＣＣＷのアドレスと変換されたチャネルコマンドＤＣＷのアドレスとの対応をＣＣＷ・ＤＣＷ対応テーブルに記憶し、
チャネルコマンドＣＣＷが単純なジャンプコマンドの場合、分岐先チャネルコマンドＣＣＷが既に変換済みであるか否かを前記ＣＣＷ・ＤＣＷ対応テーブルをサーチして判断し、変換済みの場合には対応するチャネルコマンドＤＣＷに分岐するチャネルコマンドＤＣＷを作成し、変換済みでない場合には該分岐先チャネルコマンドＣＣＷ以降のチャネルコマンドＣＣＷをチャネルコマンドＤＣＷに変換し、
チャネルコマンドがスキップコマンド（分岐ＣＣＷ）の場合、該分岐ＣＣＷを分岐先アドレスが未定の分岐ＤＣＷに変換し、
ついで、条件が不成立の場合におけるＣＣＷ列をＤＣＷ列に変換し、
しかる後、条件成立の場合における分岐先チャネルコマンドＣＣＷが既に変換済みであるか否かを前記ＣＣＷ・ＤＣＷ対応テーブルをサーチして判断し、
変換済みの場合には該分岐先チャネルコマンドＣＣＷに対応する分岐先チャネルコマンドＤＣＷに分岐するように前記分岐ＤＣＷの分岐先アドレスを決定し、
変換済みでない場合には、次のチャネルコマンドＤＣＷを格納するアドレスを前記分岐ＤＣＷの分岐先アドレスとし、前記分岐先チャネルコマンドＣＣＷ以降のチャネルコマンドＣＣＷをチャネルコマンドＤＣＷに変換することを特徴とするＩ／Ｏ処理方法。
【請求項２】
前記変換時に、異常チャネルコマンドＣＣＷが検出された時、直前のチャネルコマンドＣＣＷに対応するチャネルコマンドＤＣＷのチェインビットをオフすると共に、ＣＣＷ・ＤＣＷ対応テーブルにおいて該チャネルコマンドＤＣＷのエラーフラグビットをオンし、
前記変換により得られたチャネルコマンドＤＣＷの実行時、チェインビットのオフによりチャネルコマンドの実行が停止した時、ＣＣＷ・ＤＣＷ対応テーブルを参照してエラーフラグビットがオンしているかチェックし、オンしている場合には、次のチャネルコマンドＣＣＷ（異常チャネルコマンドＣＣＷである）を読み出してチェック後、異常終了の割込みを発生することを特徴とする請求項１記載のＩ／Ｏ処理方法。
【請求項３】
前記ＣＣＷ・ＤＣＷ対応テーブルに、リードコマンドのデータ入力領域の先頭アドレスとデータ長を記憶する欄を設け、
前記変換に際して、チャネルコマンドＣＣＷがリードコマンドの場合には前記テーブルにデータ入力領域の先頭アドレスとデータ長を記憶すると共に、チャネルコマンドＣＣＷのアドレスが前記テーブルに記憶されているデータ領域内に存在するか判断し、
存在する場合は、該チャネルコマンドＣＣＷは外部装置より読み込んだチャネルコマンドであると判定し、前記データ領域をデータ入力領域とするリードコマンド（チャネルコマンドＣＣＷ）に対応するチャネルコマンドＤＣＷにフラグをセットし、
前記変換により得られたチャネルコマンドＤＣＷの実行時、前記フラグが検出された時、該フラグ付きのチャネルコマンドＤＣＷ（リードコマンド）により外部装置より前記データ領域に読み込んだチャネルコマンド列ＣＣＷを、順次別のチャネルコマンド列ＤＣＷに変換し、変換後、該チャネルコマンド列ＤＣＷを実行することを特徴とする請求項１記載のＩ／Ｏ処理方法。
【請求項４】
所定のチャネルコマンドＣＣＷにフラグをセットしておき、前記変換時に該フラグをセットされたチャネルコマンドＣＣＷに応じたチャネルコマンドＤＣＷにフラグをセットし、
前記変換により得られたチャネルコマンドＤＣＷの実行時に、前記フラグが検出された時、該検出をオペレーションシステムＯＳに通知し、
しかる後、一定間隔で前記変換時におけるチャネルコマンド列（ＣＣＷ列）と現在のチャネルコマンド列（ＣＣＷ列）を比較し、変更により不一致のチャネルコマンドＣＣＷが存在する場合には、該変更チャネルコマンドＣＣＷをチャネルコマンドＤＣＷに再変換することを特徴とする請求項１記載のＩ／Ｏ処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はＩ／Ｏ処理方法に係わり、特に特定のチャネル装置のために作成されたチャネルコマンド列（ＣＣＷ列）を、他のチャネル装置のための別のチャネルコマンド列（ＤＣＷ列）に変換し、該変換されたチャネルコマンド列（ＤＣＷ列）を用いて他のチャネル装置が前記特定のチャネル装置と同一のＩ／Ｏ動作を実行するＩ／Ｏ処理方法に関する。
【０００２】
【従来の技術】
汎用の計算機のために作成されたチャネルコマンド列（ＣＣＷ列）を、ワークステーション上のパソコン等のための別のチャネルコマンド列（ＤＣＷ列）に変換し、該変換されたチャネルコマンド列（ＤＣＷ列）を用いてパソコンが汎用計算機と同一のＩ／Ｏ動作を実行するシステムがある。図２０はかかるシステムの構成図であり、１ａは汎用計算機等の第１処理装置、２ａは第１処理装置対応に設けた第１チャネル装置、３ａは第１チャネル装置に接続された第１のＩ／Ｏ装置、１ｂはパソコン等の第２処理装置でＩ／Ｏ処理を専用に実行するもの、２ｂはパソコン用の第２チャネル装置、３ｂは第２チャネル装置に接続された第２のＩ／Ｏ装置である。４は主記憶装置で、領域５にはＩ／Ｏバッファ部５ａやチャネルコマンド列（ＣＣＷ列）を記憶する領域５ｂ設けられている。６はバス線である。領域５に記憶されているチャネルコマンド列（ＣＣＷ列）は、第１処理装置１ａが第１チャネル２ａを介してＩ／Ｏ装置３ａにアクセスするために作成したものである。
第１、第２処理装置１ａ，１ｂは同一の主記憶装置４を共有しているが、第１処理装置は領域５のみをアクセス可能であり、両者は異なるアドレス空間で動作する。
【０００３】
ところで、第１チャネル装置２ａで動作するチャネルコマンド列（ＣＣＷ列）と第２チャネル装置２ｂで動作するチャネルコマンド列（ＤＣＷ列）は異なる形式を有している。このため、第１チャネル装置２ａのために作成されたチャネルコマンド列（ＣＣＷ列）を第２チャネル装置２ｂのためのチャネルコマンド列（ＤＣＷ列）に変換して実行しなければならない。すなわち、第２処理装置１ｂは、第１処理装置１ａが第１チャネル２ａを介してＩ／Ｏ装置３ａにアクセスするために作成したチャネルコマンド列（ＣＣＷ列）を、第２処理装置１ｂが第２チャネル装置２ｂを介してＩ／Ｏ装置３ｂにアクセスするためのコマンド列（ＤＣＷ列）に変換し、該ＤＣＷ列に基づいて第１処理装置と同様のＩ／Ｏ動作を実行する。
【０００４】
【発明が解決しようとする課題】
特定のチャネルを想定したチャネルコマンド（ＣＣＷ列）を他のチャネル上で実行する方法としては、特開平7-44324号公報及び特開平1-293455号公報に開示されているものがある。
特開平7-44324号公報に開示されている方法は、ソフトあるいはＩ／Ｏ制御装置が与えられたＣＣＷ列上のＣＣＷを１個づつ変換しながらＩ／Ｏ処理を実行するもので、実行時のオーバヘッドが大きい。このため、十分なＩ／Ｏ性能を得るためには巨大なディスクキャッシュを主記憶上に持たなければならない問題がある。
特開平1-293455号公報に開示されている方法は、静的にＣＣＷ列を変換するものであるが、変換対象ＣＣＷ列が限定されており、分岐、ループを伴うような複雑なＣＣＷ列に対しては、十分に変換を行えない問題がある。
又、変換対象ＣＣＷが異常なものであった場合、異常ＣＣＷまでは正常に実行し、異常ＣＣＷについて適切なエラー報告をしなければならないが、従来の方法では適切なエラー報告ができない問題がある。
更に、ＣＣＷ列の中には、外部装置に格納されたＣＣＷ列を後続するＣＣＷ列として使用する場合があるが、従来方法はこれに対応できない問題がある。
又、ＣＣＷ列の中には実行の途中でソフト（ＯＳ）によりＣＣＷ列の変更を行わせる場合があるが、かかる場合にも従来方法は対応できない問題がある。
【０００５】
以上から、本発明の目的は、ＣＣＷ列の変換を最初に一括して行うことにより、実行時のオーバヘッドを削減でき、十分なＩ／Ｏ処理性能を発揮できるＩ／Ｏ処理方法を提供することである。
本発明の別の目的は、分岐、ループを伴うような複雑なＣＣＷ列に対しても変換が行えるＩ／Ｏ処理方法を提供することである。
本発明の更に別の目的は、変換対象ＣＣＷが異常なものであった場合、異常ＣＣＷまで正常に実行し、異常ＣＣＷについて適切なエラー報告ができるＩ／Ｏ処理方法を提供することである。
本発明の他の目的は、外部装置に格納されたＣＣＷ列を後続するＣＣＷ列として使用する場合であっても、変換及び実行が可能なＩ／Ｏ処理方法を提供することである。
本発明の更に他の目的は、実行の途中でソフト（ＯＳ）によりＣＣＷ列の変更を行わせる場合であっても、変換及び実行が可能なＩ／Ｏ処理方法を提供することである。
【０００６】
【課題を解決するための手段】
図１は本発明の原理説明図である。(a)において、１２はチャネルコマンド列（ＣＣＷ列）を別のチャネルコマンド列（ＤＣＷ列）に変換するＣＣＷ変換部、１３はチャネルコマンドＣＣＷのアドレスと変換されたチャネルコマンドＤＣＷのアドレスとの対応を記憶するＣＣＷ・ＤＣＷ対応テーブル、２１は主記憶装置であり、ＣＣＷ列及び変換により得られたＤＣＷ列が記憶される。
ＣＣＷ変換部１２は、一括変換に際して、ＣＣＷのアドレスと変換されたＤＣＷのアドレスとの対応をＣＣＷ・ＤＣＷ対応テーブル１３に記憶する。ＣＣＷ変換部１２は、(b)に示すように変換すべきＣＣＷが単純なジャンプコマンド(分岐コマンド)Ｊ１，Ｊ２の場合、分岐先ＣＣＷ列▲２▼が既に変換済みであるか否かをＣＣＷ・ＤＣＷ対応テーブル１３をサーチして判断し、変換済みでない場合には（Ｊ１の場合）、分岐ＣＣＷ（Ｊ１）を変換することなく分岐先ＣＣＷ以降のＣＣＷ列▲２▼をＤＣＷ列▲２▼に変換する。一方、変換済みの場合（Ｊ２の場合）には、分岐先ＣＣＷに対応するＤＣＷ（ＤＣＷ列▲２▼の先頭）に分岐するＤＣＷを作成する。
【０００７】
ＣＣＷが(c)に示すように条件つきジャンプコマンド(分岐ＣＣＷ)ＳＫの場合、該分岐ＣＣＷを分岐先アドレスが未定の分岐ＤＣＷ（ＳＫ′）に変換し、ついで、条件が不成立の場合におけるＣＣＷ列▲２▼をＤＣＷ列に変換する。しかる後、条件成立の場合における分岐先ＣＣＷ列▲３▼が既に変換済みであるか否かをＣＣＷ・ＤＣＷ対応テーブル１３をサーチして判断し、変換済みでない場合には、前記分岐ＤＣＷの分岐先アドレスを次のＤＣＷを格納するアドレスとし、以後、分岐先ＣＣＷ以降のＣＣＷ列▲３▼をＤＣＷ列▲３▼に変換する。又、分岐先ＣＣＷ列▲３▼が既に変換済みの場合には該分岐先ＣＣＷに対応する分岐先ＤＣＷに分岐するように前記分岐ＤＣＷの分岐先アドレスを決定する。
以上のようにすれば、ＣＣＷ列を、内部に分岐が存在しない一連のＣＣＷの集まりであるＣＣＷ群に分割して変換を行い、又、ＣＣＷのアドレスと変換されたＤＣＷのアドレスとの対応をＣＣＷ・ＤＣＷ対応テーブルで管理し、該テーブルを参照して分岐コマンド、ジャンプコマンドを適切に変換処理するようにしたから、分岐、ループを伴うような複雑なＣＣＷ列に対しても効率良く変換を行って実行することができる。・・・請求項１
【０００８】
ＣＣＷ変換部１２は、一括変換時に、異常ＣＣＷが検出された時、直前のＣＣＷに対応するＤＣＷのチェインビットをオフすると共に、ＣＣＷ・ＤＣＷ対応テーブル１３においてＤＣＷアドレスに応じたエラーフラグビットをオンする。そして、一括変換により得られたＤＣＷの実行時、チェインビットのオフによりＤＣＷの実行が停止した時、ＣＣＷ・ＤＣＷ対応テーブル１３を参照してエラーフラグビットがオンしているかチェックし、オンしている場合には、次のＣＣＷ（異常ＣＣＷである）を読み出してチェック後、異常終了の割込みを発生する。このようにすれば、変換対象ＣＣＷが異常なものであった場合、異常ＣＣＷまで正常に実行し、異常ＣＣＷについて適切なエラー報告ができる。・・・請求項２
【０００９】
ＣＣＷ・ＤＣＷ対応テーブル１３に、リードコマンドのデータ入力領域の先頭アドレスとデータ長を記憶する欄を設ける。ＣＣＷ変換部１２は、一括変換に際して、ＣＣＷがリードコマンドの場合には該テーブル１３にデータ入力領域の先頭アドレスとデータ長を記憶すると共に、以降のＣＣＷのアドレスが前記テーブルに記憶されているデータ領域内に存在するか判断する。存在する場合は、該ＣＣＷは外部装置より読み込んだＣＣＷであると判定し、前記データ領域をデータ入力領域とするリードコマンド（ＣＣＷ）に対応するＤＣＷにフラグをセットする。そして、一括変換により得られたＤＣＷ列の実行時、前記フラグが検出された時、該フラグ付きのＤＣＷ（リードコマンド）により外部装置より前記データ領域に読み込んだＣＣＷ列を、順次別のＤＣＷ列に変換し、変換後、該ＤＣＷ列を実行する。このようにすれば、外部装置に格納されたＣＣＷ列を後続するＣＣＷ列として使用する場合であっても、変換及び実行できる。・・・請求項３
【００１０】
所定のＣＣＷにフラグをセットしておき、ＣＣＷ変換部１２は、一括変換時に該ＣＣＷに応じたＤＣＷにフラグをセットする。そして、一括変換により得られたＤＣＷの実行時に、前記フラグが検出された時、該検出をオペレーションシステムＯＳに通知する。しかる後、一定間隔で一括変換時におけるＣＣＷ列と現在のＣＣＷ列を比較し、変更ＣＣＷが存在する場合には、該変更ＣＣＷをＤＣＷに再変換する。このようにすれば、実行の途中でソフト（ＯＳ）によりＣＣＷ列の変更を行う場合であっても、変更通りに正しくＣＣＷ列をＤＣＷ列に変換して実行することができる。・・・請求項４
以上のように、本発明においては、ＣＣＷ列の変換を最初に一括して行うことにより、実行時のオーバヘッドを削減でき、十分なＩ／Ｏ処理性能を発揮することができる。
【００１１】
【発明の実施の形態】
（ａ）本発明の構成
図２は本発明の概略構成図であり、１０はチャネルコマンド列（ＣＣＷ列）を別のチャネルコマンド列（ＤＣＷ列）に変換するＣＣＷ変換機構、２０は第１チャネル装置、３０は第２チャネル装置、４０は入出力動作終了時における割込み処理部である。図３はＣＣＷの説明図であり、READ,WRITE,TRANSFER IN CHANNEL等のコマンドコードＣＭ、入出力データ領域の先頭アドレスＤＡＤ、細かな指示を与えるフラグＦＧ、データのバイト数（データ長）ＤＬを備えている。図４は入出力割込み時に設定されるチャネルステータスワードＣＳＷの説明図であり、プロテクションキーＫ、直前に実行したコマンドアドレスＣＡＤ、入出力装置の状態を示すＩ／ＯステータスＩＳＴ、チャネルの状態を示すチャネルステータスＣＳＴ、異常終了時において未処理（残っている）データのバイト数ＤＴを備えている。
【００１２】
図５はＣＣＷ変換機構１０におけるＣＣＷ→ＤＣＷ変換の説明図である。ＣＣＷ→ＤＣＷ変換において、▲１▼ＣＣＷのデータサイズＤＬはそのままＤＣＷにおいて使用することができる。▲２▼ＣＣＷ、ＤＣＷのコマンドは１：１に対応しており、コマンド変換テーブルによりＣＣＷのコマンドＣＭをＤＣＷのコマンドに変換することができる。▲３▼ＣＣＷの先頭アドレスは物理アドレスの場合と論理アドレスの場合があり、物理アドレスの場合にはそのままＤＣＷにおいて使用することができるが、論理アドレスの場合には、動的アドレス変換機構ＤＡＴにより論理アドレス（ＣＣＷアドレス）→物理アドレス（ＤＣＷアドレス）に変換を行うことにより得ることができる。
【００１３】
図６は割込み処理部４０におけるＤＳＷ→ＣＳＷ変換説明図であり、第２チャネル装置３０より入力されたチャネルステータスワードＤＳＷをＯＳが認識できるチャネルステータスワードＣＳＷに変換する場合の説明図である。ＤＳＷ→ＣＳＷ変換において、▲１▼ＤＳＷのチャネルステータスＣＳＴ、Ｉ／ＯステータスＩＳＴ、残りバイト数ＤＴはそのままＣＳＷにおいて使用することができる。▲２▼直前に実行したコマンドアドレス（ＤＣＷアドレス）はＣＣＷアドレスに変換する必要がある。変換は、ＣＣＷ変換機構１０に設けられている後述のＣＣＷ・ＤＣＷ対応テーブルより求めることができる。
【００１４】
図７はＣＣＷ変換機構１１の構成図である。１２はチャネルコマンド列（ＣＣＷ列）を別のチャネルコマンド列（ＤＣＷ列）に変換するＣＣＷ変換部、１３はは、▲１▼ＣＣＷのアドレスと▲２▼該ＣＣＷを変換することにより得られたＤＣＷのアドレスと▲３▼各種フラグFlagの対応を記憶するＣＣＷ・ＤＣＷ対応テーブル、１４は機種と該機種におけるスキップコマンドの対応を記憶するスキップコマンド一覧テーブルである。
ＣＣＷ変換部１２において、１２ａはＣＣＷ・ＤＣＷ変換制御部、１２ｂは動的アドレス変換機構（ＤＡＴ）、１２ｃはＤＣＷ組立て部である。ＣＣＷ・ＤＣＷ変換制御部１２ａは、▲１▼主記憶装置（図示せず）の所定のＣＣＷアドレスよりＣＣＷを読み出し、▲２▼該読み出したＣＣＷをコマンドコードＣＭ、データアドレスＤＡＤ、フラグＦＧ、データバイト数ＤＬに分解し、▲３▼データアドレスＤＡＤを動的アドレス変換機構１２ｂに入力し、▲４▼コマンドコードを内蔵のコマンドコード変換部で変換すると共に、必要に応じて所定のフラグをオン・オフセットし、▲５▼得られたコマンドコード、フラグ、データバイト数をＤＣＷ組立て部１２ｃに入力する。又、ＣＣＷ・ＤＣＷ変換制御部１２ａは、▲６▼ＣＣＷ・ＤＣＷ対応テーブル１３の更新、参照、▲７▼その他後述する種々の制御を実行する。
【００１５】
動的アドレス変換機構１２ｂは、入力されたＣＣＷのデータアドレス（先頭アドレス）をＤＣＷのデータアドレス（先頭アドレス）に動的に変換し、得られたＤＣＷのデータアドレス（先頭アドレス）をＤＣＷ組立て部１２ｃに入力する。ＤＣＷ組立て部１２ｃは入力されたコマンドコード、データサイズ、フラグ、データアドレスを用いてＤＣＷを組立て、主記憶装置の所定のアドレス（ＤＣＷアドレス）に格納する。尚、ＣＣＷ・ＤＣＷ変換制御部１２ａは、ＣＣＷを読み出したＣＣＷアドレスとＤＣＷを記憶するＤＣＷアドレスとの対応及びフラグをＣＣＷ・ＤＣＷ対応テーブル１３に記憶する。
【００１６】
（ｂ）分岐コマンドを含む場合の変換処理
与えられたＣＣＷ列が分岐やジャンプによるループ等がない単純なものである場合は、その変換方法は容易に考えることが可能である。だが、分岐等があるＣＣＷ列では、分岐先ＣＣＷ列が変換後のＤＣＷ列上でいずれのＤＣＷに対応するかを検出し、ＤＣＷ上の分岐コマンド上に記述しなければならない。
図８及び図９は分岐コマンドを含む場合におけるＣＣＷ→ＤＣＷ変換処理のフローである。
チャネルアドレスワードＣＡＷの指定する主記憶装置より先頭のＣＣＷを読み取り（ステップ１０１）、該ＣＣＷが単純なジャンコマンド（ＴＩＣ）であるかチェックし（ステップ１０２）、ジャンプコマンドでなければ、条件つきジャンコマンド（スキップコマンド）であるかチェックする（ステップ１０３）。尚、機種とスキップコマンドの対応はテーブル１４に登録されているから、該テーブルを参照してスキップコマンドの判別を行う。
【００１７】
スキップコマンドでなければ、ＣＣＷ→ＤＣＷ変換を行うと共に、ＣＣＷアドレスとＤＣＷアドレスの対応をテーブル１３に記憶する（ステップ１０４）。しかる後、全ＣＣＷ列の変換が終了したかチェックし（ステップ１０５）、終了してなければ、次のＣＣＷをＣＣＷアドレスより読み取り（ステップ１０６）、ステップ１０２以降の処理を行う。一方、全ＣＣＷのＤＣＷへの変換が終了すれば、第２チャネル装置３０は順次ＤＣＷを実行し（ステップ１０７，１０８）、全ＤＣＷの実行終了によりＤＳＷを割込み処理部４０に入力する。割込み処理部４０はＤＳＷをＣＳＷに変換して上位装置（ＯＳ）に入出力割込みを掛け（ステップ１０９）、入出力動作を終了する。。
【００１８】
一方、ステップ１０２において、ＣＣＷが単純なジャンプコマンドの場合には、分岐先ＣＣＷが既に変換済みであるか否かをＣＣＷ・ＤＣＷ対応テーブル１３をサーチして判断する（ステップ１１０）。すなわち、分岐先ＣＣＷが変換済みの場合には、該分岐先ＣＣＷのＣＣＷアドレスがＣＣＷ・ＤＣＷ対応テーブル１３に記憶されるから、該テーブル１３に分岐先ＣＣＷアドレスが存在するか調べ、存在する場合には変換済みであると判定し、存在しない場合には変換済みでないと判定する。変換済みの場合には分岐先ＣＣＷに対応する分岐先ＤＣＷに分岐するようにＤＣＷを作成し（ステップ１１１）、変換済みでない場合には該分岐先ＣＣＷ以降のＣＣＷ列をＤＣＷ列に変換する（ステップ１１２）。しかる後、ステップ１０５以降の処理を行う。
【００１９】
図１０は単純ジャンプコマンドの場合におけるＣＣＷ→ＤＣＷ変換説明図である。図１０に示すようにＣＣＷ列▲１▼，▲２▼の後のＣＣＷが単純なジャンプコマンド(ＴＩＣ)Ｊ１，Ｊ２の場合、分岐先ＣＣＷ列▲２▼が既に変換済みであるか否かをＣＣＷ・ＤＣＷ対応テーブル１３をサーチして判断し、変換済みでない場合には（Ｊ１の場合）、分岐ＣＣＷをＤＣＷに変換することなく分岐先ＣＣＷ列▲２▼をＤＣＷ列▲２▼に変換する。一方、変換済みの場合（Ｊ２の場合）には、分岐先ＣＣＷに対応するＤＣＷ（ＤＣＷ列▲２▼の先頭）に分岐するＤＣＷを作成する。
【００２０】
又、ステップ１０３において、ＣＣＷがスキップコマンド（分岐ＣＣＷ）の場合には、該分岐ＣＣＷを分岐先アドレスが未定の分岐ＤＣＷに変換する（ステップ１１３）。ついで、分岐条件が不成立の場合におけるＣＣＷ列をＤＣＷ列に変換する（ステップ１１４，１１５）。
しかる後、条件成立の場合における分岐先ＣＣＷが既に変換済みであるか否かをＣＣＷ・ＤＣＷ対応テーブル１３をサーチして判断する（ステップ１１６）。変換済みの場合には該分岐先ＣＣＷに対応する分岐先ＤＣＷに分岐するように前記ステップ１１３における分岐ＤＣＷの分岐先アドレスを決定して埋め込み（ステップ１１７）、以後ステップ１０５以降の処理を行う。一方、変換済みでない場合には、前記ステップ１１３における分岐ＤＣＷの分岐先アドレスを次のＤＣＷの格納アドレスする。ついで、分岐先ＣＣＷ以降のＣＣＷ列をＤＣＷ列に変換し、ステップ１０５以降の処理を行う。
【００２１】
図１１はスキップコマンドの場合におけるＣＣＷ→ＤＣＷ変換説明図である。図１１に示すよう条件コマンドＣＫの後のコマンドＳＫがスキップコマンド(分岐ＣＣＷ)の場合、該分岐ＣＣＷを分岐先アドレスが未定の分岐ＤＣＷ（ＳＫ′）に変換し、ついで、条件が不成立の場合におけるＣＣＷ列▲２▼をＤＣＷ列▲２▼に変換する。しかる後、条件成立の場合における分岐先ＣＣＷ列▲３▼が既に変換済みであるか否かをＣＣＷ・ＤＣＷ対応テーブル１３をサーチして判断し、変換済みでない場合には、前記分岐ＤＣＷ（ＳＫ′）の分岐先アドレスを次のＤＣＷを格納するアドレスとし、以後、分岐先ＣＣＷ列▲３▼をＤＣＷ列▲３▼に変換する。又、分岐先ＣＣＷ列▲３▼が既に変換済みの場合には該分岐先ＣＣＷに対応する分岐先ＤＣＷに分岐するように前記分岐ＤＣＷ（ＳＫ′）の分岐先アドレスを決定する。
【００２２】
以上、ＣＣＷ列を、内部に分岐が存在しない一連のＣＣＷの集まりであるＣＣＷ群に分割して変換を行い、又、ＣＣＷのアドレスと変換されたＤＣＷのアドレスとの対応をＣＣＷ・ＤＣＷ対応テーブルで管理し、該テーブルを参照して分岐コマンド、ジャンプコマンドを適切に変換処理するから、分岐、ジャンプによるループを伴うような複雑なＣＣＷ列に対しても効率良く変換を行って実行することができる。
【００２３】
（ｃ）ＣＣＷに異常ＣＣＷが存在する場合の処理
変換対象ＣＣＷが異常なものであった場合、異常ＣＣＷの直前までは正常に実行し、異常ＣＣＷについては適切なエラー報告をしなければならない。
図１２はＣＣＷに異常ＣＣＷが存在する場合のＣＣＷ→ＤＣＷ変換処理の説明図、図１３はＣＣＷに異常ＣＣＷが存在する場合のＤＣＷ実行処理の説明図である。
ＣＣＷを主記憶装置の所定のＣＣＷアドレスより読み取り（ステップ２０１）、該ＣＣＷが異常ＣＣＷかチェックする（ステップ２０２）。なお、ＣＣＷはフォーマットエラー、未定義コード使用、文法エラー等が検出された場合、異常ＣＣＷである。
異常ＣＣＷでなければ、ＣＣＷ→ＤＣＷの変換を実行し（ステップ２０３）、ついで、全ＣＣＷ列について変換したかチェックし（ステップ２０４）、変換してなければステップ２０１以降の処理を繰返す。
【００２４】
一方、ステップ２０２において、異常ＣＣＷの場合には、直前のＣＣＷに対応するＤＣＷのチェインビットをオフすると共に（ステップ２０５）、ＣＣＷ・ＤＣＷ対応テーブル１３において該ＣＣＷ、ＤＣＷのアドレスに対応するフラグ（エラーフラグビット）をオンする（ステップ２０６）。尚、ＤＣＷ実行時にチェインビットがオン（”１”）の場合には次のＤＣＷを実行し、チェインビットがオフ（”０”）の場合には次のＤＣＷの実行を中止する。
ついで、異常ＣＣＷ以降のＣＣＷ列の変換を打切る。そして、異常ＣＣＷ以前に分岐ＣＣＷ（スキップコマンド）の分岐先ＣＣＷ列で変換をしてないものが存在するかチェックし（ステップ２０７）、存在しなければ変換処理を終了し、存在すれば、分岐先ＣＣＷ列を読み取り（ステップ２０８）、以後、ステップ２０２以降の変換処理を実行する。
【００２５】
ＣＣＷ列変換終了後、ＤＣＷを読み取って実行する（ステップ３０１）。実行後、チェインビットがオフかチェックし（ステップ３０２）、オフでなければ、全ＤＣＷの実行が終了したかチェックし（ステップ３０３）、終了してなければステップ３０１に戻り次のＤＣＷを実行する。
一方、チェインビットがオフあるいは、全ＤＣＷの実行が終了すれば、その時のＤＣＷアドレスに対応するエラーフラグをＣＣＷ・ＤＣＷ対応テーブル１３より求め、エラーフラグビット＝”１”かチェックする（ステップ３０４）。
エラーフラグビット＝”０”の場合には、正常終了報告を出力し（ステップ３０５）、エラーフラグビット＝”１”の場合には、次のＣＣＷ（異常ＣＣＷである）を主記憶装置より読み出してチェック後、異常終了の割込みによりエラー報告する（ステップ３０７）。
以上により、変換対象ＣＣＷが異常なものであった場合、異常ＣＣＷまで正常に実行し、異常ＣＣＷについて適切なエラー報告をすることができる。
【００２６】
（ｄ）ＣＣＷ列が外部装置に格納されている場合の処理
ＣＣＷ列の中には、磁気ディスク装置等の外部装置に格納されたＣＣＷ列を後続するＣＣＷ列として使用するようなものがある。図１４はかかる場合の説明図であり、２１は主記憶装置、５０は磁気ディスク装置である。主記憶装置２１には、ＣＣＷ列▲１▼、磁気ディスク装置よりデータ（実はＣＣＷ列）を読み出すリードコマンド（ＲＤ α Ｌ）、ＣＣＷ列▲２▼がそれぞれ格納されている。又、磁気ディスク装置５０には、上記リードコマンドにより読み取られるＣＣＷ列▲２▼が記憶されている。このように外部装置にＣＣＷ列が記憶されている場合、ＣＣＷ列は以下のように実行される。すなわち、まず、ＣＣＷ列▲１▼を実行し、ついで、リードコマンドにより磁気ディスク装置５０よりＣＣＷ列▲２▼を主記憶装置２１に読み込み、しかる後、ＣＣＷ列▲２▼を実行し、最後にＣＣＷ列▲３▼を実行する。従って、ＣＣＷ列をＤＣＷ列に変換した場合、上記と同様の順序でＤＣＷ列を実行するようにしなければならない。
【００２７】
ところで、本発明のように、ＣＣＷ列を一括変換する方式では、変換後のＤＣＷ列により外部装置より読み出したＣＣＷ列は最初のＣＣＷ→ＤＣＷ変換時には変換がされていない。このため、外部装置よりＣＣＷ列を読み出した後に再度、ＣＣＷ列の変換を行うようにしなければならない。更に、いずれのＣＣＷがＣＣＷの変更を行うものであるか、変更されたＣＣＷはいずれのものであるかを知る手段が必要である。
【００２８】
そこで、図１５に示すように、ＣＣＷ・ＤＣＷ対応テーブル１３に、リードコマンド（ＣＣＷ）のデータ入力領域の先頭アドレスαとデータ長Ｌを記憶する欄を設ける。そして、ＣＣＷ変換部１２はＣＣＷがリードコマンドの場合、ＣＣＷ・ＤＣＷ対応テーブル１３にＣＣＷアドレス、ＤＣＷアドレスと共に該リードコマンド（ＣＣＷ）のデータ入力領域の先頭アドレスαとデータ長Ｌを記入する。かかる状態において、以降のＣＣＷのＣＣＷアドレスが上記領域に含まれているならば、その領域をデータ入力領域とするリードコマンド（ＣＣＷ）を変換して得られたＤＣＷによってＣＣＷの書替えが行われる。このため、該ＤＣＷ上のＰＣＩフラグをセットし、ＣＣＷの変更が行われることをＣＣＷ変換機構が検出可能にする。すなわち、最初に各ＣＣＷを変換する際、変換対象のＣＣＷが変換済みＣＣＷのデータ領域に含まれているか否かをチェックし、含まれているならば該変換対象ＣＣＷは変換済みＣＣＷの実行によって書き替えられるため、該変換済みＣＣＷに対応するＤＣＷのＰＣＩフラグをセットする。
【００２９】
そして、ＤＣＷ列実行時にＰＣＩ割込みが発生すると、ＣＣＷ変換機構１１はＰＣＩ割込みを通知したＤＣＷアドレスによってＣＣＷ・ＤＣＷ対応テーブル１３をサーチし、書替えが行われた領域を検出し、対応するＣＣＷ列を読み出して再変換し、再変換したＤＣＷを実行する。
【００３０】
図１６はＣＣＷ列が外部装置に格納されている場合のＣＣＷ→ＤＣＷ変換処理フローである。
所定のＣＣＷアドレスよりＣＣＷを読み込み（ステップ４０１）、該ＣＣＷがリードコマンドであるかチェックする（ステップ４０２）。リードコマンドでなければ、該ＣＣＷアドレスがＣＣＷ・ＤＣＷ対応テーブル１３に格納されているデータ領域内に存在するかチェックし（ステップ４０３）、存在しなければ、ＣＣＷ→ＤＣＷ変換を行うと共に、ＣＣＷアドレス、ＤＣＷアドレスの対応をＣＣＷ・ＤＣＷ対応テーブル１３に記入する（ステップ４０４）。ついで、全ＣＣＷをＤＣＷに変換したかチェックし（ステップ４０５）、変換が終了してなければ、ステップ４０１に戻り以降のＣＣＷについてステップ４０１以降の処理を実行し、変換が終了していれば、ＣＣＷ→ＤＣＷ変換処理を終了する。
【００３１】
一方、ステップ４０２において、ＣＣＷがリードコマンドであれば、ＣＣＷ→ＤＣＷ変換を行うと共に、ＣＣＷアドレス、ＤＣＷアドレス及びリードコマンドの先頭アドレスα、データ長ＬをＣＣＷ・ＤＣＷ対応テーブル１３に記入し（ステップ４０６）、以後、ステップ４０５以降の処理を実行する。
又、ステップ４０３において、ＣＣＷアドレスがＣＣＷ・ＤＣＷ対応テーブル１３に格納されているデータ領域内に存在すれば、ＣＣＷは外部装置より主記憶装置に読み込んであるＣＣＷであると判定し、前記データ領域をデータ入力領域とするリードコマンド（ＣＣＷ）を変換して得られたＤＣＷにＰＣＩフラグをセットする（ステップ４０６）。
ついで、該ＣＣＷをＤＣＷに変換すると共に、以降のＣＣＷ列をＤＣＷ列に変換し（ステップ４０７、４０８）、変換処理を終了する。
【００３２】
図１７はＣＣＷ列が外部装置に格納されている場合のＤＣＷ実行処理フローである。
ＤＣＷを読み取って実行すると共に（ステップ５０１）、該ＤＣＷのＰＣＩフラグがセットされているか（”１”であるか）チェックする（ステップ５０２）。ＰＣＩフラグがセットされていなければ、全ＤＣＷを実行したかチェックする（ステップ５０３）。全ＤＣＷの実行が終了してなければ、ステップ５０１に戻り以降のＤＣＷ実行処理を繰返し、全ＤＣＷの実行が終了すれば、ＤＳＷを作成して割込み処理部４０に入力してＩ／Ｏ処理を終了する（ステップ５０４）。
【００３３】
一方、ステップ５０２において、ＰＣＩフラグがセットされている場合には、ＰＣＩ割込みを発生する（ステップ５０５）。これにより、ＣＣＷ変換部１２は現ＤＣＷアドレスに対応するデータ領域をＣＣＷ・ＤＣＷ対応テーブル１３より求め（ステップ５０６）、該データ領域よりＣＣＷ列（外部装置より読み込んだＣＣＷ列）を順次読み取ってＣＣＷ→ＤＣＷ変換を行う（ステップ５０７，５０８）。
外部装置より読み込んだＣＣＷ列のＣＣＷ→ＤＣＷ変換が終了すれば、再変換したＤＣＷ列を順次実行する（ステップ５０９）。ＤＣＷ列の実行終了後、ステップ５０３において全ＤＣＷを実行したかチェックし、以降の処理を行う。
以上のようにすれば、ＣＣＷ列の中に外部装置に格納されたＣＣＷ列を後続するＣＣＷ列として使用する場合であっても、正しくＣＣＷ→ＤＣＷ変換を行って実行することができる。
【００３４】
ところで、ＰＣＩ割込みが遅れたり、再変換処理に時間を要した場合、再変換終了より以前に、変更対象ＤＣＷが実行される可能性がある。この場合、変換前のＤＣＷは本来実行すべきものではなく、予期しない動作が行われてしまう。そこで、変更対象のＤＣＷは、ステップ４０７において先頭ＤＣＷをＮＯＰ（NO  Operation)にすると共に、チェインビットフラグをオフすることにより、変更前ＤＣＷの実行によって弊害が生じないようにする。さらに、該ＮＯＰコマンドに対応するＣＣＷ・ＤＣＷ対応テーブル１３上の動的変更ビットを立てる（”１”にする）ことで、動的変更の遅延によってＤＣＷ実行が終了したことを検出可能にする。
上記のように、ＣＣＷの動的変更の遅れによってＤＣＷの実行が終了した場合、通常は動的変更が終了すると、変更を行ったＤＣＷより処理を再開する。しかし、場合によっては、オリエンテーションが崩れているため、予期しない動作が行われる可能性がある。そこで、ＣＣＷ変換部は、以前のＣＣＷをチェックし、該ＣＣＷより実行を再開すれば問題となる可能性がある場合は、先頭ＤＣＷより再度、実行を行わせる。この場合、ＣＣＷの動的変更、再変換は既に終了しているため、処理再開前に、変更を行うＤＣＷのＰＣＩフラグ並びに対応するＣＣＷ・ＤＣＷ対応テーブル上の動的変更ビットをオフする。
【００３５】
（ｅ）ソフトによるＣＣＷ変更があった場合の処理
ＣＣＷ列の中には、実行の途中でソフトにＰＣＩ（Program Controlled Interrupt)を通知し、ソフトにＣＣＷの変更を行わせるようなものがある。この場合、いずれのＣＣＷがどのタイミングで変換されたかが、ＣＣＷ変換部では認識することができない。そこで、ソフト（ＯＳ）へのＰＣＩ報告後、一定時間ごとに変換時のＣＣＷ列と最新のＣＣＷ列を照合比較し、ＣＣＷ変更の有無をチェックする。変更が確認された場合は変更ＣＣＷを再変換する。
図１８はソフトによるＣＣＷ変更がある場合のＣＣＷ→ＤＣＷ変換処理フローである。尚、所定のＣＣＷには、該ＣＣＷまでの実行終了をソフトに通知するためにＰＣＩフラグがセットされている。このＰＣＩを報告されるとソフトはＣＣＷを変更する。
【００３６】
まず、ＣＣＷアドレスよりＣＣＷを読み取り（ステップ６０１）、該ＣＣＷのＰＣＩフラグがセットされているかチェックする（ステップ６０２）。ＰＣＩフラグがセットされていなければ、該ＣＣＷをＤＣＷに変換すると共にＣＣＷアドレス、ＤＣＷアドレスをＣＣＷ・ＤＣＷ対応テーブル１３に記入する（ステップ６０３）。以後、全ＣＣＷの変換が終了したかチェックし（ステップ６０４）、変換が終わってなければ、ステップ６０２に戻り以降のＣＣＷの変換を行う。
一方、ステップ６０２において、ＣＣＷのＰＣＩフラグがセットされていれば、ＣＣＷ→ＤＣＷ変換すると共にＤＣＷのＰＣＩフラグをセットする（ステップ６０５）。又、ＣＣＷアドレス、ＤＣＷアドレスをＣＣＷ・ＤＣＷ対応テーブル１３に記入すると共に、これらアドレスに対応するフラグ上のＰＣＩビットをセット子（ステップ６０６）、以後ステップ６０４以降の処理を実行する。
【００３７】
図１９はソフトによるＣＣＷ変更がある場合のＤＣＷ実行処理フローである。ＤＣＷを読み取って実行すると共に（ステップ７０１）、該ＤＣＷのＰＣＩフラグがセットされているかチェックし（ステップ７０２）、セットされていれば、ＣＣＷ変換部１２を介してソフト（ＯＳ）にＰＣＩ通知を行う（ステップ７０３）。しかる後、あるいはステップ７０２において、ＰＣＩフラグがセットされていない場合には、全ＤＣＷの実行が終了したかチェックする（ステップ７０４）。全ＤＣＷの実行が終了すれば、実行処理を終える。しかし、全ＤＣＷの実行が終了してなければ、保持しているＣＣＷ→ＤＣＷ変換時のＣＣＷ列と現在のＣＣＷ列との比較が必要であるかチェックする（ステップ７０５）。ＰＣＩが検出されず、ＰＣＩ通知をしてなければ、比較する必要はなく、以後ステップ７０１以降の処理を実行する。
【００３８】
一方、ＰＣＩ通知をしており、比較する必要がある場合には、定期的に変換時のＣＣＷ列と現在のＣＣＷ列との比較を行う（ステップ７０６）。比較の結果、不一致のＣＣＷがあったか調べ（ステップ７０７）、なければステップ７０１以降の処理を行い、不一致のＣＣＷが存在すれば、ソフトによりＣＣＷが変更されたものであるから、該変更ＣＣＷをＤＣＷに再変換し（ステップ７０８）、以後、ステップ７０１以降の処理を実行する。
以上のようにすれば、実行の途中でソフト（ＯＳ）によりＣＣＷ列の変更を行う場合であっても、変更通りに正しくＣＣＷ列をＤＣＷ列に変換して実行することができる。
以上、本発明を実施例により説明したが、本発明は請求の範囲に記載した本発明の主旨に従い種々の変形が可能であり、本発明はこれらを排除するものではない。
【００３９】
【発明の効果】
以上本発明によれば、ＣＣＷ列の変換を最初に一括して行うことにより、実行時のオーバヘッドを削減でき、十分なＩ／Ｏ処理性能を発揮することができる。
又、本発明によれば、ＣＣＷ列を、内部に分岐が存在しない一連のＣＣＷの集まりであるＣＣＷ群に分割して変換を行い、又、ＣＣＷのアドレスと変換されたＤＣＷのアドレスとの対応をＣＣＷ・ＤＣＷ対応テーブルで管理し、該テーブルを参照して分岐コマンド、ジャンプコマンドを適切に変換処理するようにしたから、分岐、ループを伴うような複雑なＣＣＷ列に対しても効率良く変換を行って実行することができる。
【００４０】
更に本発明によれば、変換対象ＣＣＷが異常なものであった場合、異常ＣＣＷまで正常に実行し、異常ＣＣＷについて適切なエラー報告ができる。
又、本発明によれば、外部装置に格納されたＣＣＷ列を後続するＣＣＷ列として使用する場合であっても、変換及び実行ができる。
更に、本発明によれば、実行の途中でソフト（ＯＳ）によりＣＣＷ列の変更を行う場合であっても、変更通りに正しくＣＣＷ列をＤＣＷ列に変換して実行することができる。
【図面の簡単な説明】
【図１】本発明の原理説明図である。
【図２】本発明の概略構成図である。
【図３】ＣＣＷの説明図である。
【図４】ＣＳＷの説明図である。
【図５】ＣＣＷ→ＤＣＷ変換説明図である。
【図６】ＤＳＷ→ＣＳＷ変換説明図である。
【図７】ＣＣＷ変換機構の構成図である。
【図８】分岐を含むＣＣＷ→ＤＣＷ変換処理フロー（その１）である。
【図９】分岐を含むＣＣＷ→ＤＣＷ変換処理フロー（その２）である。
【図１０】単純ジャンプの場合の変換説明図である。
【図１１】条件つきジャンプコマンド（スキップコマンド）の場合の変換説明図である。
【図１２】異常ＣＣＷが検出された場合のＣＣＷ→ＤＣＷ変換処理フローである。
【図１３】異常ＣＣＷが検出された場合のＤＣＷ実行処理フローである。
【図１４】ＣＣＷ列が外部装置に格納されている場合の説明図である。
【図１５】ＣＣＷ・ＤＣＷ対応テーブルの別の説明図である。
【図１６】ＣＣＷ列が外部装置に格納されている場合のＣＣＷ→ＤＣＷ変換処理フローである。
【図１７】ＣＣＷ列が外部装置に格納されている場合のＤＣＷ実行処理フローである。
【図１８】ソフトによるＣＣＷ変更がある場合のＣＣＷ→ＤＣＷ変換処理フローである。
【図１９】ソフトによるＣＣＷ変更がある場合のＤＣＷ実行処理フローである。
【図２０】本発明の背景説明図である。
【符号の説明】
１２・・ＣＣＷ変換部
１３・・ＣＣＷ・ＤＣＷ対応テーブル
２１・・主記憶装置
【図１】
0003796281.tif 000002
【図２】
0003796281.tif 000003
【図３】
0003796281.tif 000004
【図４】
0003796281.tif 000005
【図５】
0003796281.tif 000006
【図６】
0003796281.tif 000007
【図７】
0003796281.tif 000008
【図８】
0003796281.tif 000009
【図９】
0003796281.tif 000010
【図１０】
0003796281.tif 000011
【図１１】
0003796281.tif 000012
【図１２】
0003796281.tif 000013
【図１３】
0003796281.tif 000014
【図１４】
0003796281.tif 000015
【図１５】
0003796281.tif 000016
【図１６】
0003796281.tif 000017
【図１７】
0003796281.tif 000018
【図１８】
0003796281.tif 000019
【図１９】
0003796281.tif 000020
【図２０】
0003796281.tif 000021