(57)【特許請求の範囲】
【請求項１】
データ・プロセッサにおいて後続の命令処理に影響を及ぼす方法であって、
第１の命令を提供すること、
第２の命令を提供することであって、前記第１の命令の実行の完了後に前記第２の命令が実行される場合、前記第２の命令は第１の動作を行い、前記第２の命令の実行が始まる前に前記第１の命令の実行が完了していない場合、前記第２の命令は前記第１の動作とは異なる第２の動作を行なう、第２の命令を提供すること、
を備え、前記第１の命令と第２の命令とは同一の命令であり、前記第１の動作は、割り込み認識を、制御期間中に選択的に遅延させることを含み、前記第２の動作は、無動作命令の実行に対応するものである、方法。
【請求項２】
前記第２の命令の前記第１の動作は、前記データ・プロセッサによる例外の遅延処理を含む、請求項１に記載の方法。
【請求項３】
データ・プロセッサであって、
第１の命令及び第２の命令を実行する命令実行回路であって、前記第１の命令の実行の完了後に第２の命令が実行される場合、前記第２の命令は第１の動作を行い、前記第２の命令の実行開始前に前記第１の命令の実行が完了していない場合、前記第２の命令は、前記第１の動作とは異なる第２の動作を行なう、前記命令実行回路と、
前記データ・プロセッサ内の所定の状態を示すフラグと
を備え、前記第１の命令と第２の命令とは同一の命令であり、前記第１の動作はフラグを所定の第１の状態にすること含み、前記第２の動作は、前記フラグの状態に影響を及ぼさない無動作命令の実行に対応するものである、データ・プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ・プロセッサに関し、更に特定すれば、データ・プロセッサにおける後続の命令処理の影響(affecting)に関するものである。
【背景技術】
【０００２】
リアル・タイム制御システムにおけるデータ・プロセッサの使用が増加しつつあるため、効率的なシステム資源の使用を確保するために、新たな技法が必要とされている。例えば、多くのマルチタスキング・システムでは、メモリ記憶装置，プリンタ，またはディスプレイ画面へのポートのような、同じシステム資源のいくつかを共有しようとするタスクが数個ある。このようなマルチタスキング・システムにおいて、共有システム資源を可能な限り最も効率的に使用することは非常に重要である。例えば、多数のタスクがある資源を共有している場合、どのタスクが現在その資源を使用しており、当該タスクが実行している機能を妨害してはならないか否かについて指示する方法がなければならない。多くのマルチタスキング・システムでは、この機能のためにセマファ（ｓｅｍａｐｈｏｒｅ）が用いられている。
【０００３】
セマファとは、システム資源の現ステータスを反映する、一種のフラグまたはステータス・インディケータである。通常、セマファ内のステータス情報は、システム資源が現在使用されているか否かについての指示を与える。マルチタスキング・システムの中には、セマファが、どのタスクが資源を使用しているのかについての情報、および恐らく当該資源上で実行されている機能の種類についての情報をも含む場合がある。
【０００４】
例えば、メモリ内の特定の位置を、共有変数Ｘに対するセマファの位置として指定することができる。いずれのタスクも、共有変数Ｘを使用したい場合、当該タスクは、このメモリ内の特定位置を読み取ることによって、この共有変数Ｘに対するセマファを読み取らなければならない。変数Ｘのセマファは、変数Ｘが特定のタスクによる排他的アクセスのために現在予約されているか否かというような、変数Ｘのステータスについての状態を含む。変数Ｘが現在予約されておりビジーであることを変数Ｘのセマファが示す場合、新たなタスクは待機しなければならない。新たなタスクは、変数Ｘのセマファにポールし続け、変数Ｘのセマファを周期的に読み取ることによって、変数Ｘが未だ使用されている最中か、または使用可能になったかについて調べる。
【０００５】
一旦、変数Ｘはもはや予約されておらず、したがって使用可能であることを変数Ｘのセマファが示したなら、待機中のタスクは変数Ｘのセマファに書き込みを行い、そのステータスをビジーまたは使用不可に変更する。こうして、待機中のタスクはそれ自体の使用のために、変数Ｘ資源を効果的にロックする。変数Ｘが使用されていることを変数Ｘのセマファが示す間、他のタスクは変数Ｘを使用することができない。一旦待機中のタスクが変数Ｘの使用を終了したなら、変数Ｘのセマファ位置に新しい値を書き込み、変数Ｘのセマファを変更し、変数Ｘが再び使用可能であることを示す。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
セマファを用いて共有システム資源を割り当てるシステムには、重大な問題が発生する。この問題は、１つ以上のタスクが共有資源のセマファにポールし、当該資源が既に使用可能になっているか否か調べる場合に起こる。例えば、タスク＃１およびタスク＃２双方が変数Ｘのセマファをポールしていると仮定する。タスク＃１は、変数Ｘのセマファが変更され変数Ｘが使用可能であることが示された後に、最初に変数Ｘのセマファを読み取る。次に、タスク＃２が変数Ｘのセマファを読み取り、これも変数Ｘが使用可能であることを知る。タスク＃１もタスク＃２も、他のタスクが変数Ｘの使用に競合していることを知らない。
【０００７】
タスク＃１が割り込みを受信した場合、タスク＃１はソフトウエア割り込みルーチンを実行し、その後に中断したところから再開しなければならない。一方、タスク＃２は変数Ｘのセマファにある値を書き込み、変数Ｘは現在ビジーであることを示す。次に、タスク＃２は変数Ｘを使用し始める。タスク＃１はその割り込みルーチンを終了し、そのソフトウエア・プログラムを中断したところから再開する。タスク＃１は、変数Ｘが使用可能であることがわかったのでソフトウエア・プログラムを中断した。したがって、タスク＃１は変数Ｘのセマファにある値を書き込み、変数Ｘが現在ビジーであることを示し、変数Ｘを使用し始めようとする。しかし、変数Ｘは既にタスク＃２によって使用されている。こうして、衝突が発生する結果となる。その結果、変数Ｘは転化（ｃｏｒｒｕｐｔ）する虞れがあり、タスクは誤った値を変数Ｘから受信する可能性がある。したがって、多数のタスクが効果的かつ効率的に共通資源を共有することを可能にする手法が必要とされている。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施例によるデータ・プロセッサ１０を示すブロック図。
【図２】本発明の一実施例による、図１の中央演算装置（ＣＰＵ）１２の一部を示すブロック図。
【図３】本発明の一実施例による遅延割り込み認識命令の一実施例を示す表。
【図４】本発明の一実施例による検査およびセット機能を実行する、一連の命令の一実施例を示す表。
【図５】本発明の一実施例によるメモリ・オペランド交換機能を実行する、一連の命令の一実施例を示す表。
【図６】本発明の一実施例によるメモリ型カウンタ増分機能を実行する、一連の命令の一実施例を示す表。
【発明を実施するための形態】
【０００９】
図１は、データ・プロセッサ１０を示す。一実施例では、データ・プロセッサ１０は、中央演算装置（ＣＰＵ）１２，メモリ１４，バス・インターフェース・モジュール１６，およびその他のモジュール１８を含み、これらは全てバス２０を通じて互いに双方向的に結合されている。バス・インターフェース・モジュール１６は、外部バス２６を通じてデータ・プロセッサ１０外部に結合することも可能である。他のモジュール１８は、オプションとして、１つ以上の集積回路端子２８を介して、データ・プロセッサ１０外部に結合される。また、メモリ１４は、オプションとして、１つ以上の集積回路端子２４を介して、データ・プロセッサ１０外部に結合される。中央演算装置１２は、オプションとして、１つ以上の集積回路端子２２を介して、データ・プロセッサ１０外部に結合される。
【００１０】
更に図１を参照する。本発明の代替実施例では、データ・プロセッサ１０として、いずれの形式の構造でも使用可能である。加えて、データ・プロセッサ１０は、多種多様な機能を実行可能である。例えば、データ・プロセッサ１０は、ＲＩＳＣ(Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ)アーキテクチャを用いても良いし、Ｈａｒｖａｒｄアーキテクチャを用いても良いし、ベクトル・プロセッサであっても良いし、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）プロセッサであっても良いし、浮動小数点算術演算を実行したり、ディジタル信号処理計算を実行するもの等でもよい。
【００１１】
図２は、図１のＣＰＵ１２の一部を示す。一実施例では、ＣＰＵ１２は、命令パイプ回路３０，命令デコード回路３２，レジスタ３４，算術演算論理ユニット（ＡＬＵ）４０，およびＣＰＵ制御回路４２を含む。ＣＰＵ制御回路４２は、制御／ステータス信号５８を通じて、命令パイプ３０，命令デコード３２，レジスタ３４，およびＡＬＵ４０に双方向的に結合され、制御情報を与え、ステータス情報を受信する。命令パイプ３０は、バス２０を通じて命令を受信する。命令パイプ３０は、実行すべき１つ以上の命令を格納することができる。命令パイプ３０は、導体５４を通じて、命令デコード回路３２に命令を供給する。命令デコード回路３２は、命令パイプ３０から受信した命令をデコードし、導体５６を通じてその出力をＣＰＵ制御回路４２に供給する。ＣＰＵ制御回路４２は、例外制御回路４４，割り込み制御回路４６，およびカウンタ／タイマ回路４８を含む。
【００１２】
本発明の一実施例では、割り込み制御回路４６は、カウンタ／タイマ回路４８に双方向的に結合されている。ＣＰＵ制御回路４２は、割り込み信号５０を通じて、バス２０から１つ以上の割り込み要求信号を受信する。他のモジュール１８（図１を参照）または外部バス２６に結合されている回路（図示せず）は、割り込み信号５０を通じてＣＰＵ制御回路４２が受信する１つ以上の割り込み要求のソースとなり得る。ＣＰＵ制御回路４２は、割り込み信号５０を通じて、１つ以上の割り込み承認およびその他の割り込み関連信号をバス２０に供給することができる。ＣＰＵ制御回路４２は、オプションとして、例外信号５２を通じて、１つ以上の例外発生信号を受信する場合がある。本発明の実施例の中には、ＣＰＵ制御回路４２が、１つ以上の例外承認またはその他の例外ステータス信号をバス２０に供給する場合もある。
【００１３】
更に図２を参照すると、本発明の一実施例では、例外制御回路４４が例外信号５２に結合され、割り込み制御回路４６が割り込み信号５０に結合されている。例外制御回路４４および割り込み制御回路４６は双方とも、導体５６および制御／ステータス信号５８に結合されている。割り込み制御回路４６は、オプションとして、オーバーライド回路（ｏｖｅｒｒｉｄｅ  ｃｉｒｃｕｉｔ）４７を含むことができる。本発明の代替実施例では、オーバーライド回路４７は、ＣＰＵ制御回路４２内のいずれかの場所に配置することも可能である。ＣＰＵ制御回路４２は、オプションとして、集積回路端子２２を介して、データ・プロセッサ１０外部に結合される場合もある。レジスタ３４は、バス２０に双方向的に結合され、データ値の受信および供給を行う。レジスタ３４はレジスタ３６を含む。レジスタ３６は条件ビット３８を含む。レジスタ３４は導体６０および導体６２を通じてＡＬＵ４０に結合され、値を供給する。ＡＬＵ４０の出力は、導体６４を通じてレジスタ３４に結合され、ＡＬＵ４０からの出力値を供給する。
【００１４】
図３は、図２のＣＰＵ１２が実行可能な割り込み認識遅延命令の一実施例を示す。
図４は、図３の割り込み認識遅延命令を用いて検査およびセット機能を実行する際に使用可能な一連の命令の一実施例を示す。
【００１５】
図５は、図３の割り込み認識遅延命令を用いてメモリ・オペランド交換機能を実行する際に使用可能な一連の命令の一実施例を示す。
図６は、図３の割り込み認識遅延命令を用いてメモリ型カウンタ増分機能（ｍｅｍｏｒｙ−ｂａｓｅｄ  ｃｏｕｎｔｅｒ  ｆｕｎｃｔｉｏｎ）を実行する際に使用可能な一連の命令の一実施例を示す。
【００１６】
好適実施例の動作次に、好適実施例の動作について説明する。一実施例では、本発明は、所定の時間期間または所定の命令数の間のいずれかの、制御された区間にわたって割り込みの認識を遅延させることにより、変更処理を定義する専用命令を用いずに、リード／モディファイ／ライトの命令シーケンスを実行可能とする効率的な方法および装置を提供する。
【００１７】
尚、「バス」という用語は、データ，アドレス，制御，またはステータスのような１つ以上の様々な種類の情報を転送するために使用可能な複数の信号または導体に言及する際に用いる。また、「アサート」および「ニゲート」という用語は、信号，ステータス・ビット，または同様の機構をその論理的真状態から論理的偽状態にすることをそれぞれ言及する際に用いる。論理真状態が論理レベル１である場合、論理偽状態は論理レベル０となる。更に、論理真状態が論理レベル０である場合、論理偽状態は論理レベル１となる。
【００１８】
図３を参照する。本発明の一実施例では、図１および図２に示したデータ・プロセッサ１０のような、ロード／格納アーキテクチャを用いるプロセッサにおいて、割り込み認識遅延命令（例えば、ＩＤＬＹ４）を用いて、所定数の命令の間割り込み認識を遅延させることができる。
【００１９】
本発明の一実施例では、割り込み認識を遅延させる間に続いて実行される命令の所定数は、固定値（例えば、４命令）とすることができる。本発明の代替実施例では、この所定数の命令を、いずれの正の整数に固定することも可能である。図３に示す本発明の一実施例は、割り込み認識遅延命令（ＩＤＬＹ４）の実行後直ちに実行される４つの命令の間、割り込みの認識を遅延させる。このように、割り込み認識遅延命令を実行し、次いで続く４つの命令の間割り込みを認識せず、ＩＤＬＹ４命令に続く５番目の命令の実行開始と共に、割り込み認識を開始する。
【００２０】
尚、本発明の実施例によっては、所定数の後続命令の一部として、例外処理の一部として実行される命令をカウントする場合があり、一方本発明の他の実施例では、所定数の後続命令の一部として、例外処理の一部として実行される命令をカウントしない場合もあることを注記しておく。
【００２１】
本発明の第１実施例では、割り込み認識遅延命令を実行した後、所定数の命令の実行の間、割り込み認識を禁止または遅延させる。割り込み実行を禁止または遅延する間の所定数の命令は、様々な方法で規定することができる。例えば、割り込み認識遅延命令自体が、割り込みの認識を遅延させる間の命令数を定義するフィールドを含むことができる（例えば、図３におけるオプションの指定フィールド７０を参照）。代替実施例では、ユーザによるプログラムが可能な制御レジスタ（例えば、図２におけるレジスタ３４の１つ）が、割り込みの認識を遅延させる間の所定数の命令を決定する値を含むことも可能である。本発明の代替実施例では、いずれの形式の方法を用いて所定数の命令を選択することも可能であり、例えば、集積回路の端子を介してまたはマスク・プログラム可能な記憶デバイスによって所定数の命令を与えることが可能である。
【００２２】
本発明の一実施例では、割り込み認識遅延命令が所定数の後続の命令を実行する間割り込みの認識を遅延させる場合、図２に示した回路が、以下のように機能する。割り込み認識遅延命令は、バス２０から命令パイプ３０を介して受信される。次に、命令パイプ３０は、適正な時点においてこの命令を命令デコード回路３２に供給する。次に、命令デコード回路３２は、割り込み認識遅延命令のための適切なデコード信号を、導体５６を通じてＣＰＵ制御回路４２に供給する。すると、ＣＰＵ制御回路４２は、割り込み制御回路４６を用いて、割り込み信号５０を通じて受信した割り込み要求の認識を遅延させる。ＣＰＵ制御回路４２は、所定数の命令の間、割り込み要求の認識を遅延させる。ＣＰＵ制御回路４２は、カウンタ／タイマ４８，ならびに命令パイプ３０および命令デコード回路３２から信号５８を通じて受信した情報を用いて、割り込み認識遅延命令の実行の直後からいくつの命令が実行されたのかについて判定を行うことができる。
【００２３】
本発明の実施例では、特にパイプライン・プロセッサ・アーキテクチャを用いた実施例では、ＣＰＵ制御回路４２は、後続の命令の内、実行を完了したもののみをカウントする場合もあり、あるいは、各命令のフェッチ，デコード，実行サイクルの間に所定の段階に到達した、あらゆる後続の命令をカウントする場合もある。
【００２４】
所定数の後続の命令の間割り込みの認識を遅延させる代わりに、本発明の代替実施例では、割り込み認識を遅延させる所定時間期間を定義することも可能である。これらの代替実施例では、カウンタまたはタイマ（例えば、図２におけるカウンタ／タイマ４８）を用いて所定数のクロック・サイクルをカウントしたり、割り込みの認識を遅延させる間の所定のナノ秒数をカウントすることが可能である。
【００２５】
本発明の一実施例では、割り込み認識遅延命令が、所定数の後続クロック・サイクルの実行の間または所定のナノ秒の間割り込みの認識を遅延させる場合、図２に示すＣＰＵ制御回路４２は、カウンタ／タイマ４８を用いて、所定数の命令の実行ではなく、ナノ秒またはクロック・サイクルをカウントする。この場合も、命令自体（例えば、図３におけるオプションの指定フィールド７０），レジスタ値またはその他のプログラム可能な方法のような、ユーザ・プログラム可能な機構を用いて、所定のナノ秒数または所定数のクロック・サイクルをカウンタ／タイマ４８に供給し、割り込み認識遅延命令の実行に続いて、割り込みを認識しない間の区間長を決定することができる。
【００２６】
本発明の一実施例では、ＣＰＵ制御回路４２は、割り込み認識遅延命令の実行を完了した後に、割り込み非認識区間のカウントを開始する。しかしながら、本発明の代替実施例では、ＣＰＵ制御回路４２は、割り込み認識遅延命令のデコードを開始した後のいずれの時点においても、割り込み非認識区間のカウントを開始することが可能である。
【００２７】
本発明の実施例には、割り込み認識遅延命令に続く命令はいずれの種類でも可能な場合がある。しかしながら、状況によっては、除算命令のように多数のサイクルを必要とする命令を、割り込み認識遅延命令に続く命令シーケンスに置くと、過度に時間期間が長い割り込みレイテンシが発生する可能性がある。この問題に対処するために、本発明の実施例には、割り込み認識遅延命令の直後に続く命令の種類を限定する場合もある。例えば、図３を参照すると、割り込み認識遅延命令の直後に続く４つの命令を、単一サイクルの算術演算または論理命令，分岐命令，およびロードまたは格納命令に限定する場合がある。割り込み認識を遅延させる間命令を制限する目的は、割り込みレイテンシの最大時間期間を短縮することである。本発明の代替実施例では、割り込み認識を遅延させる間の命令の種類を制限してもしなくてもよく、したがって、割り込み認識遅延命令に続く可能性がある命令の種類を限定してもしなくてもよい。割り込み認識遅延命令に続く可能性がある命令の特定集合は、プロセッサ１０毎に異なり、実施例によっては、ユーザ・プログラム可能とすることも可能である。
【００２８】
本発明の代替実施例では、異なる方法で例外処理による影響を受ける場合がある。図３に示す本発明の実施例では、割り込みが認識されていない区間においても、例外を検出し通知する。しかしながら、本発明の代替実施例では、割り込み認識を遅延させる区間に発生する例外を検出するが、処理しない場合もある。更に別の代替実施例では、割り込みを認識しない区間では、例外を検出すらせず、したがってそれらの処理も行わない。加えて、本発明の代替実施例では、異なる形式の例外を別々に処理する場合もある。例えば、図３に示す割り込み認識遅延命令（ＩＤＬＹ４）は、割り込みを認識していない区間では、非トレース(non-trace)および非ブレークポイント(non-breakpoint)例外の発生によって条件ビット３８（図２参照）をクリアすることを許すが、トレースおよびブレークポイント例外は、条件ビット３８に影響を与えない。
【００２９】
本発明の実施例には、割り込み認識遅延命令の実行に続く割り込み非認識区間に、割り込みを再度許可する機構を用いることが可能な場合もある。例えば、当該区間では、所定の時間期間にわたって特定のレベルの割り込みが保留になっており、したがって割り込み非認識区間が終了する前にこれを認識する必要があることを、カウンタ／タイマ４８を用いて検出することができる。このように、本発明の実施例によっては、実行が未だ割り込み非認識区間（即ち、所定数の命令，クロック・サイクル，またはナノ秒によって規定される）内に留まっている間でさえも、オーバーライド回路４７を用いて割り込みを再度許可することも可能である。割り込み認識が再び許可された場合、現命令を途中で中断することができ、あるいは割り込みが再び認識される前に、実行を継続し完了することも可能である。
【００３０】
本発明の実施例によっては、全ての割り込みの認識を遅延させることも可能であるが、一方本発明の代替実施例では、所定の割り込みレベル未満の割り込みの認識のみを遅延させることも可能である。所定の割り込みレベルは、いずれの方法で指定してもよい。例えば、所定の割り込みレベルは、割り込み認識遅延命令フォーマット自体の一部として指定してもよく、ユーザ・プログラム可能なレジスタ内にある値を格納することによって指定してもよく、集積回路端子を介してある値を与えることによって指定してもよく、更に、マスク・プログラム可能な記憶回路にある値を格納することによって指定してもよい。
【００３１】
代替実施例では、本発明は、第１命令に、後続の命令がステータス・フラグに影響を与える態様を変化させることを許可する。本発明の一実施例では、図３に示す割り込み認識遅延命令（ＩＤＬＹ４）の実行は、１つ以上の後続の命令が図２における条件ビット３８に影響を与える態様を変化させることができる。例えば、図４ないし図６を参照すると、本発明の一実施例では、ＩＤＬＹ４命令は条件ビット３８をアサートする。次に、後続の４つの命令のいずれかの間に例外が発生した場合、この例外が発生したときに実行していた命令は、条件ビット３８をニゲートする。このように、通常では条件ビット３８を決してクリア即ちニゲートしないように定義されている命令（例えばロード命令）であっても、ここでは、ＩＤＬＹ４命令の後に続く４つの命令の１つがロード命令である場合に、例外がロード命令の実行中に発生したなら、条件コード・ビット３８をクリアすることが可能になる。このように、ＩＤＬＹ４命令は、後続の命令（例えば、ロード命令）が条件ビット３８に影響を及ぼす態様を変化させることができる。このように条件ビット３８を用いる目的の１つは、後続の４つの命令が分割不可能に実行されたのではなく、例外処理が共有資源に影響を与え得ることを示すためである。
【００３２】
尚、図４ないし図６に示す一連の命令は全て、ＩＤＬＹ４命令後の４つの非例外処理命令の間に例外が受信され処理されたか否かについて判定を行うための、条件ビット３８のチェックを含む（即ち、状態コード・ビット３８がゼロに等しい場合、ＳＥＱＵＥＮＣＥ＃ＦＡＩＬＥＤに分岐する）ことを注記しておく。ＩＤＬＹ４命令の後に例外が受信され処理された場合、「ＢＦ」命令が、ＳＥＱＵＥＮＣＥ＃ＦＡＩＬＥＤと呼ばれる命令のサブルーチンに分岐し、これを用いて、ＩＤＬＹ４命令後の４つの命令が分割不可能に実行されなかったこと、および例外処理がセマファのような共有資源に影響を与えた可能性があることを示す。
【００３３】
図４は、図３に示した割り込み認識遅延命令（ＩＤＬＹ４）を用い検査およびセット機能を実行する一連の命令を示す。図４に示す検査およびセット機能は、メモリ・オペランドを検査し、このメモリ・オペランドの現在値が全て１であるか否かについて判定を行い、メモリ・オペランドの値を全て１に変化させる（即ち、メモリ・オペランドの全てのビットがセットされている）。このように、図４に示す一連の命令を用いて、メモリ内に格納されているセマファ値に対して、検査およびセット機能を実行することができる。また、検査およびセット機能が分割不可能に実行されたので、検査処理とセット処理との間で図４に示したソフトウエア・ルーチンに異なるタスクが割り込んだことによるセマファの転化が発生していないことを、割り込み認識遅延命令（ＩＤＬＹ４）を用いて保証することも可能である。 尚、図４に示した命令シーケンスは、実際には、検査処理を実行する前にセット処理を実行することを注記しておく。これが可能なのは、別のタスクが割り込みを許可される前に、セット処理および検査処理双方が完了することをＩＤＬＹ４命令を用いて保証することができ、更に、この場合セマファの値は、２通り即ち全て１または全て０の可能性しかないからである。したがって、セマファの初期値が全て１であった場合、セマファをセットするステップがセマファの値を変化させることはない。尚、検査およびセット機能を実行する代替命令シーケンスには、代わりに、セット処理の前に検査処理を実行する場合もあることを注記しておく。
【００３４】
５は、図３に示した割り込み認識遅延命令（ＩＤＬＹ４）を用いて「メモリ・オペランドとレジスタ・オペランドと交換する」機能を実行する、一連の命令を示す。図５に示す「メモリ・オペランドとレジスタ・オペランドと交換する」機能は、実際には、"ＥＸＣＨＡＮＧＥ＃ＶＡＬＵＥ"と呼ばれる値を、メモリ内のその初期位置からレジスタＲ１に移動させ、次いでセマファ値の位置に移動させる。セマファ値の位置は、"SEMAPHORE"と呼ばれるポインタによって示されることを注記しておく。セマファ値は、メモリ内のその初期位置からレジスタＲ３に移動される。図５に示す特定の命令シーケンスでは、最後の「ＯＲ」命令は、ＩＤＬＹ４命令の後の一連の４つの命令を完了する以外有用な処理は行わず、こうして割り込み認識の遅延を終了させる。したがって、最後の「ＯＲ」命令は、無処理（ＮＯＰ）命令と同じ効果を有し、異なる命令と置き換えてもよい。
【００３５】
図６は、図３に示した割り込み認識遅延命令（ＩＤＬＹ４）を用いて「メモリ型カウンタ増分」機能を実行する一連の命令を示す。図６に示す「メモリ型カウンタ増分」機能は、実際には、セマファ値をメモリ内のその初期位置からレジスタＲ３に移動させ、次いで１加算することによってセマファ値を増分する。尚、セマファ値の位置は、"SEMAPHORE"と呼ばれるポインタによって示されることを注記しておく。増分したセマファ値は、次に、レジスタＲ３からメモリ内のその初期位置に再び移動される。
【００３６】
以上、特定実施例を参照しながら本発明を図示しかつ説明したが、当業者には更なる変更や改良も想起されよう。したがって、本発明は例示した特定形態に限定される訳ではなく、本発明の精神および範囲から逸脱しない全ての変更は、特許請求の範囲に含まれることは理解されよう。
【符号の説明】
【００３７】
１０  データ・プロセッサ
１２  中央演算装置（ＣＰＵ）
１４  メモリ
１６  バス・インターフェース・モジュール
１８  その他のモジュール
２０  バス
２２，２４，２８  集積回路端子
２６  外部バス
３０  命令パイプ回路
３２  命令デコード回路
３４，３６  レジスタ
３８  条件ビット
４０  算術演算論理ユニット（ＡＬＵ）
４２  ＣＰＵ制御回路
４４  例外制御回路
４６  割り込み制御回路
４７  オーバーライド回路
４８  カウンタ／タイマ回路
５０  割り込み信号
５２  例外信号
５４，５６，６０，６２，６４  導体
５８  制御／ステータス信号
７０  指定フィールド
Ｒ１，Ｒ３  レジスタ
【図１】
0004750865.tif 000002
【図２】
0004750865.tif 000003
【図３】
0004750865.tif 000004
【図４】
0004750865.tif 000005
【図５】
0004750865.tif 000006
【図６】
0004750865.tif 000007