(57)【特許請求の範囲】
【請求項１】
複数のコンピュータ命令を受理すべく配置され、前記命令を検索する命令フェッチユニットと、
前記フェッチユニットに結合され、前記コンピュータ命令の各々と複数のプログラミング可能な値のうちの１つとを比較し、そして前記比較によって前記各コンピュータ命令につきその動作属性を含む実行すべき機能を示す前記各命令に対する命令トラップ制御信号を生成するプログラマブル命令トラップユニットと、を有し、前記プログラマブル命令トラップユニットは、
複数の第１のプログラマブルレジスタであって、その各々が、ユーザーがトラップすることを望む１つ又は複数のトラップ命令を表し、かつユーザーがプログラミングできる第１の値を自動的に受理して記憶し、
複数の第１の比較器であって、その各々が、前記コンピュータ命令の１つと前記プログラマブルレジスタ値の１つとを受理するように配置され、前記コンピュータ命令が前記プログラマブルレジスタ値と一致するか否かを判断し、
複数のプログラマブル制御レジスタであって、その各々が、前記第１のプログラマブルレジスタのうちの１つと関連し、前記コンピュータ命令が前記プログラマブルレジスタ値と一致すると前記第１の比較器が判断した場合に前記コンピュータ命令の動作属性を含む実行すべき機能を表す第２の値を記憶し、
複数の制御ユニットであって、その各々が、前記プログラマブル制御レジスタと結合され、前記第１のプログラマブルレジスタの１つが前記コンピュータ命令の１つと一致する場合に、前記第２の値を表す複数の信号を生成する、
上記構成を含むことを特徴とするマイクロプロセッサ。
【請求項２】
前記第１の比較器の各々は、
前記コンピュータ命令を受理するように配置された第２の比較器と、
前記制御ユニットに結合され、前記第２の比較器の出力を受理するように配置された第３の比較器と、
を含む請求項１に記載のマイクロプロセッサ。
【請求項３】
前記第１のプログラマブルレジスタの各々は、
前記第２の比較器に結合され、前記トラップ命令のうちの１つ又は複数を表わすデータを記憶する値レジスタと、
前記第３の比較器に結合され、前記値レジスタと関連するマスク情報を記憶するマスクレジスタと、を含み、
前記マスク情報の各ビットは、マスクビットインジケータ及びドントマスクビットインジケータの１つを表わす請求項２に記載のマイクロプロセッサ。
【請求項４】
前記第２の比較器は、前記コンピュータ命令の各ビットと前記値レジスタの関連するビットとを比較し、第２の比較器の結果を表わす第１のビット値を生成する請求項３に記載のマイクロプロセッサ。
【請求項５】
前記第３の比較器は、各第１のビット値出力と前記マスクレジスタからの関連するビットとを比較し、第３の比較器の結果を表わす第２のビット値を生成する請求項４に記載のマイクロプロセッサ。
【請求項６】
前記第３の比較器は、前記第２の比較器により出力された前記第１のビット値の全てと前記マスクレジスタの全ての関連するビットとを比較し、全てのビット比較が一致した場合に一致信号を生成する請求項４に記載のマイクロプロセッサ。
【請求項７】
４つの命令は、前記第１のプログラマブルレジスタの全てと同時に比較される請求項１に記載のマイクロプロセッサ。
【請求項８】
複数の第１のレジスタ、複数の第２のレジスタ、及び複数の制御レジスタを含むマイクロプロセッサにおいて、
前記複数の第１のレジスタ、前記複数の第２のレジスタ、及び前記複数の制御レジスタの全てのビットをプログラミングすること、
複数のビットをもつ複数の命令を受理すること、
各命令の各ビットと前記各第１のレジスタの関連ビットとの第１の比較を実行すること、
前記第１の比較の各々に対して第１のビット値を生成すること、
前記第１のビット値の各々と前記第１のビット値と関連する前記第２のレジスタの関連ビットとの第２の比較を実行すること、
前記命令が前記第２の比較を満足した場合に、前記命令の動作属性を含む関連する制御レジスタの内容を表わす信号を生成すること、
から成ることを特徴とする、前記マイクロプロセッサにおけるコンピュータプログラム命令の識別方法。
【請求項９】
前記複数の第１のレジスタの各々は、第１のコンピュータプログラム命令表現を記憶する請求項８に記載の方法。
【請求項１０】
前記複数の第２のレジスタの各々は、前記第２の比較と関連する前記命令のビットを識別するためのマスクビットを記憶する請求項８に記載の方法。
【請求項１１】
前記複数の制御レジスタの各々は、前記命令が前記第２の比較と一致した場合に取るべきアクションに対応する代わりのコンピュータプログラムを記憶した、メモリ装置のロケーションを識別する請求項８に記載の方法。
【請求項１２】
前記複数の第１のレジスタ、前記複数の第２のレジスタ、及び前記複数の制御レジスタの全てのビットをプログラミングする前記ステップは、前記第１のレジスタ、前記第２のレジスタ、及び前記制御レジスタの全ての値をスキャンインするステップを含む請求項８に記載の方法。
【請求項１３】
前記スキャニングステップは、２進値をシーケンシャルに受理し、その値を前記第１のレジスタ、第２のレジスタ、及び制御レジスタに記憶するステップを含む請求項12に記載の方法。
【請求項１４】
複数の第１のレジスタと、
複数の第２のレジスタと、
複数の制御レジスタと、
前記複数の第１のレジスタ、前記複数の第２のレジスタ、及び前記複数の制御レジスタにおける全てのビットをプログラミングするプログラミング手段と、
複数のビットを有する複数の命令を受理する命令受理手段と、
前記第１のレジスタ及び前記命令受理手段に結合され、各々の命令の各ビットを前記第１のレジスタの各々の関連ビットと第１の比較を行う第１の比較手段と、
前記第１の比較手段に結合され、前記第１の比較の各々に対する第１のビッ値を生成する第１の生成手段と、
前記第１の生成手段に結合され、前記第１のビット値の各々と、前記第１のビット値と関連する前記第２のレジスタの関連ビットとの、第２の比較を行う第２の比較手段と、
前記第２の比較手段に結合され、前記命令が前記第２の比較を満足する場合に、前記命令の動作属性を含む関連する制御レジスタの内容を表す信号を生成する第２の生成手段と、
で構成することを特徴とするコンピュータプログラム命令を識別するマイクロプロセッサ。
【請求項１５】
前記複数の第１のレジスタの各々は、第１のコンピュータプログラム命令表現を記憶する請求項14に記載のマイクロプロセッサ。
【請求項１６】
前記複数の第２のレジスタの各々は、前記第２の比較と関連する前記命令のビットを識別するためのマスクビットを記憶する請求項14に記載のマイクロプロセッサ。
【請求項１７】
前記複数の制御レジスタの各々は、前記命令が前記第２の比較と一致した場合に取るべきアクションに対応する代わりのコンピュータプログラムを記憶した、メモリ装置のロケーションを識別する請求項14に記載のマイクロプロセッサ。
【請求項１８】
前記複数の第１のレジスタ、前記複数の第２のレジスタ、及び前記複数の制御レジスタの全てのビットをプログラミングする前記ステップは、前記第１のレジスタ、前記第２のレジスタ、及び前記制御レジスタの全ての値をスキャンインするステップを含む請求項14に記載のマイクロプロセッサ。
【請求項１９】
前記スキャニングステップは、２進値をシーケンシャルに受理し、その値を前記第１のレジスタ、第２のレジスタ、及び制御レジスタに記憶するステップを含む請求項18に記載のマイクロプロセッサ。
【請求項２０】
さらに、前記プログラマブル命令トラップユニットに結合され、前記命令トラップ制御信号を受理しかつ非同期に前記機能を実行する発行ユニットを含む請求項１に記載のマイクロプロセッサ。
【請求項２１】
複数のコンピュータ命令を受理するように配置され、前記複数のコンピュータ命令を受理する命令フェッチユニットと、
前記フェッチユニットに結合され、前記コンピュータ命令の各々と複数のプログラマブル値の１つとを比較し、前記比較により、前記コンピュータ命令に代えて実行すべきエミュレーションルーチンを表す前記命令の各々に対する命令トラップ制御信号を生成するプログラマブル命令トラップユニットと、を有し、
前記プログラマブル命令トラップユニットは、
複数の第１のプログラマブルレジスタであって、その各々が、ユーザーがトラップすることを望む１つ又は複数のトラップ命令を表し、かつユーザーがプログラミングできる第１の値を記憶し、
複数の第１の比較器であって、その各々が、前記コンピュータ命令の１つと前記プログラマブルレジスタ値の１つとを受理するように配置され、前記コンピュータ命令が前記プログラマブルレジスタ値と一致するか否かを判断し、
複数のプログラマブル制御レジスタであって、その各々が、前記第１のプログラマブルレジスタのうちの１つと関連し、前記コンピュータ命令が前記プログラマブルレジスタ値と一致すると前記第１の比較器が判断した場合に実行すべきトラップ同期機能を表す第２の値を記憶し、
複数の制御ユニットであって、その各々が、前記プログラマブル制御レジスタと結合され、前記第１のプログラマブルレジスタの１つが前記コンピュータ命令の１つと一致する場合に、前記第２の値を表す複数の信号を生成する、
上記構成を含むことを特徴とする、非同期にコンピュータ命令を実行可能なコンピュータ処理システム。
【請求項２２】
前記第１の比較器の各々は、
前記コンピュータ命令を受理するように配置された第２の比較器と、
前記制御ユニットに結合され、前記第２の比較器の出力を受理するように配置された第３の比較器と、
を含む請求項21に記載のコンピュータ処理システム。
【請求項２３】
前記第１のプログラマブルレジスタの各々は、
前記第２の比較器に結合され、前記トラップ命令のうちの１つ又は複数を表わすデータを記憶する値レジスタと、
前記第３の比較器に結合され、前記値レジスタと関連するマスク情報を記憶するマスクレジスタと、を含み、
前記マスク情報の各ビットは、マスクビットインジケータ及びドントマスクビットインジケータの１つを表わす請求項21に記載のコンピュータ処理システム。
【請求項２４】
前記第２の比較器は、前記コンピュータ命令の各ビットと前記値レジスタの関連するビットとを比較し、第２の比較器の結果を表わす第１のビット値を生成する請求項23に記載のコンピュータ処理システム。
【請求項２５】
前記第３の比較器は、各第１のビット値出力と前記マスクレジスタからの関連するビットとを比較し、第３の比較器の結果を表わす第２のビット値を生成する請求項24に記載のコンピュータ処理システム。
【請求項２６】
前記第３の比較器は、前記第２の比較器により出力された前記第１のビット値の全てと前記マスクレジスタの全ての関連するビットとを比較し、全てのビット比較が一致した場合に一致信号を生成する請求項25に記載のコンピュータ処理システム。
【請求項２７】
４つの命令は、前記第１のプログラマブルレジスタの全てと同時に比較される請求項26に記載のコンピュータ処理システム。
【発明の詳細な説明】
関連出願の相互参照
本願発明の主題は、下記に掲げる出願の主題と関連している。
出願番号特願平８−536744、「並列データプロセッサにおけるアクティブ命令を回転させる方法および装置」の名称で、Sunil Savkar,Michael C.Shebanow,Gene W.ShenおよびFarnad Sajjadianによって1995年６月１日に出願、
出願番号08/388,602、「スーパースケーラ  マイクロプロセッサ用命令フロー制御回路」の名称で、Takeshi Kitaharaによって1995年２月14日に出願、
出願番号08/388,389、「格納命令に関して負荷命令を順不同に実行するアドレス方法」の名称で、Michael A.SimoneおよびMichael C.Shebanowによって1995年２月14日に出願、
出願番号08/388,606、「名前を付け替えられたレジスタに結果を効率的に書き込む方法及び装置」の名称で、DeForest W.Tovey,Michael C.ShebanowおよびJohn Gmuenderによって1995年２月14日に出願、
出願番号08/388,364、「マイクロプロセッサにおける物理レジスタの利用を調整する方法および装置」の名称で、DeForest W.Tovey,Michael C.ShebanowおよびJohn Gmuenderによって1995年２月14日に出願、
出願番号特願平８−525085、「精密な状態を保持するため命令状態をトラッキングするプロセッサ構造および方法」の名称で、Gene W.Shen,John Szeto,Niteen A.PatkarおよびMichael C.Shebanowによって1995年２月14日に出願、
出願番号特願平８−526887、「アドレス変換の高速化のための並列アクセス  マイクロ−TLB」の名称で、Chih−Wei David Chang,Kioumars Dawallu,Joel F.Boney,Ming−Ying LiおよびJen−Hong Charles Chenによって1995年３月３日に出願、
出願番号特願平８−526888、「コンピュータシステムにおけるアドレス変換用ルックアサイドバッファ」の名称で、Leon Kuo−Liang Peng,Yolin LinおよびChin−Wei David Changによって1995年３月３日に出願、
出願番号08/397,893、「データプロセッサにおけるプロセッサ資源の再生利用」の名称で、Michael C.Shebanow,Gene W.Shen,Ravi Swami,Niteen A.Patkarによって1995年３月３日に出願、
出願番号08/397,891、「実行準備ができたものから命令を選択する方法および装置」の名称で、Michael C.Shebanow,John Gmuender,Michael A.Simone,John R.F.S.Szeto,Takumi MaruyamaおよびDeForest W.Toveyによって1995年３月３日に出願、
出願番号08/397,911、「不履行命令の高速ソフトウェア  エミュレーション用ハードウェアサポート」の名称で、Shalesh Thusoo,Farnad Sajjadian,Jaspal KohliおよびNiteen A.Patkarによって1995年３月３日に出願、
出願番号08/398,284、「制御転送リターンを加速する方法および装置」の名称で、Akiro Katsuno,Sunil SavkarおよびMichael C.Shebanowによって1995年３月３日に出願、
出願番号08/398,066、「フェッチプログラムカウンタの更新方法」の名称で、Akira Katsuno,Niteen A.Patkar,Sunil SavkarおよびMichael C.Shebanowによって1995年３月３日に出願、
出願番号08/397,910、「コンピュータシステムにおけるエラーの優先化および処理方法および装置」の名称で、Chin−Wei David Chang,Joel Fredrick BoneyおよびJaspal Kohliによって1995年３月３日に出願、
出願番号08/398,151、「制御転送命令の迅速な実行方法および装置」の名称で、Sunil W.Savkarによって1995年３月３日に出願、
出願番号08/397,800、「マイクロプロセッサにおけるゼロビット状態フラッグの生成方法および装置」の名称で、Michael Simoneによって1995年３月３日に出願、
出願番号08/397,912、「パイプライン化読取り−修正−書込みアクセスを備えたECC保護メモリ編成」の名称で、Chien ChenおよびYuzhi Luによって1995年３月３日に出願および、
出願番号08/398,299、「精密な状態を保持するため命令状態をトラッキングするプロセッサ構造および方法」の名称で、Chien Chen,John R.F.S.Szeto,Niteen A.Patkar,Michael C.Shebanow,Hideki Osone,Takumi MaruyamaおよびMichael A.Simoneによって1995年３月３日に出願、
参考として、上記の出願の全てを本願発明の全体に亘って取り入れている。
1.発明の分野
本発明は、一般にデータプロセッサに関する。特に本発明は、マイクロプロセッサ内でプログラミング可能なハードウェア命令トラップを提供するシステム及び方法に関する。
2.背景技術の説明
データプロセッサを設計する場合には、テープアウト（tape−out）の前に設計を厳しくテストすることが重要である。一般に、このようなテストは、データプロセッサの機能特性中の誤りを識別しようとするものである。しかしながら、時間的制約のためにテープアウト前にデータプロセッサ設計の全ての機能特性を充分にテストできるとは限らない。テープアウトは、例えばデータプロセッサ等の部品を製造する物理データベース設計が完了した時点で生じる。
場合によっては、データプロセッサの設計における機能誤りが、テープアウト後まで発見されないこともある。このような状況では、設計を修正し、新しいデータプロセッサ部品を生産するのに多大な費用がかかる。機能誤りは、或る命令に影響を与える製造上の欠陥によっても生じる可能性がある。
関連する制限内容は、スーパースカラ中央処理ユニット（CPU）についても生じる。多くのソフトウェアアプリケーションプログラムは、スーパースカラ環境で使用されるようには開発されていない。スーパースカラCPUがそのようなアプリケーションプログラムにおける命令を実行した場合、いくつかの命令は設計通りに実行されない可能性がある。
必要なことは、CPU内に複数の命令をその実行前にトラップできるようにするプログラミング可能なハードウェアデバイスを与えるシステム及び方法である。トラップされるべき命令は、CPUのデバッギング中の融通性を提供し、CPUがさまざまなアプリケーションプログラムを適切に実行できるようにプログラミング可能である。このシステムは、またトラップされた命令をエミュレートし及び／又は順次実行することを可能にする手段を提供しなければならない。
発明の要約
本発明は、CPU内でプログラミング可能なハードウエアデバイスを提供するシステム及び方法に関する。プログラミング可能なハードウェアデバイスは、実行前に複数の命令をトラップ可能にする。トラップされるべき命令は、CPUデバッギングの間の融通性を提供し、又CPUがさまざまなアプリケーションプログラムを適切に実行し得るようにプログラミング可能である。システムは、またトラップされた命令をエミュレートし及び／又は順次実行させる手段も提供しなければならない。
【図面の簡単な説明】
図１は、本発明の好適な実施例が存在するコンピュータ環境の例示である。
図２は、本発明の好適な実施例のスーパースカラ中央処理ユニットのより詳細な例示である。
図３は、本発明の好適な実施例によるプログラミング可能な命令トラップユニットのより詳細な例示である。
図４は、本発明の好適な実施例によるプログラミング可能な命令トラップユニットのより詳細な例示である。
図５は、本発明の好適な実施例による命令トラップレジスタ値（ITRV）及び命令トラップレジスタマスク（ITRM）のさらに詳し例示である。
図６は、本発明の好適な実施例によるビットレジスタのより詳細な例示である。
図７は、本発明の好適な実施例による命令をトラップする方法を記述したフロー図である。
図８は、本発明の好適な実施例による命令をテストする方法を記述したフロー図である。
好適な実施例の詳細な説明
本発明の好適な実施例について図面を参照しながら説明する。ここで、同じ引用符号は同一の又は機能的に類似した構成要素を表わしている。また、図面中、各引用符号の最も左側の数字は、その引用符号が最初に用いられた図面と対応している。
図１は、本発明の好適な実施例が与えられたコンピュータ環境の例示である。従来のメモリーユニット104及び従来の入出力（I/O）デバイス106はデータプロセッサ102と通信する。好適な実施例において、プロセッサは、HaL Computer Systems,Compbell,Californiaにより開発されたHaL R1プロセッサである。HaL R1プロセッサは、SPARC International,In.,Menlo Park,Californiaによって開発されたSPARC V9 64ビットの命令セットアーキテクチャを具備する。プロセッサ102は、スーパースカラCPU108、メモリー管理ユニット（MMU）、及び４つのキャッシュメモリーユニット110,112を含む。
キャッシュメモリユニット110,112は、好適には２つの64キロバイト（KB）従来型データキャッシュと２つの64KB従来型命令キャッシュを内含している。データキャッシュ110は、スーパースカラCPU108及びMMU114にデータを与える。キャッシュメモリユニット110,112の両セットは、仮想インデックスとタグ付けされている。各キャッシュチップ110 112は、４セットとして構成された64KBのデータ記憶装置を含む。各64KBのキャッシュチップ110,112は、スーパースカラーCPU108からの独立した２つの要求をサービス可能である。スーパースカラCPU108とキャッシュ110,112の間のインタフェイスはブロッキングされず、キャッシュラインがリフィル（refill）又はフラッシュ（flash）されると同時にスーパースカラCPU108はキャッシュ110,112にアクセスできる。キャッシュメモリユニット110,112に関し、さらなる詳細は、本文にその全体が参考として内含されるChen,Chien,Y.Lu,A.Wondの「HaL Cacheのマイクロアーキテクチャ」Compcon議事録、1995年、の中に記載されている。
MMU114の機能は、プロセッサ102のために、メモリ管理及びデータの一貫性（coherence）を制御すること、メモリ104及びI/Oデバイス106とインタフェースすること、そしてエラー操作を含む。MMU114は、次の３つのレベルのアドレス空間を内含する：すなわち、（１）プロセッサ102のための仮想アドレス空間、（２）I/Oデバイス106及び診断プロセッサのための論理アドレス空間、そして（３）メモリ104のための物理アドレス空間である。これらの階層化されたアドレス空間は、大きなアドレス空間を管理するのに有効なメカニズムを提供する。好適な実施例において使用されるMMU114のより詳細な説明は、本文にその全体が参考として内含されるDavid Chang,D.Lyon,C.Chen.L.Peng,M.Massouni,M.Hakini,s.lyengar,E.Li,R.Remedios「HaLのメモリ管理ユニットのマイクロアーキテクチャ」、Compcon Proceedings 1995の中に記載されている。
図２は、本発明の好適な実施例のスーパースカラCPU108のさらに詳細な例示である。プロセッサ102は、固定小数点命令のための４段のパイプライン、及び「LOAD」命令のための６段のパイプラインを備える。スーパースカラCPU108は、命令フェッチユニット202、プログラマブル命令トラップユニット204、命令発行ユニット206、命令実行ユニット218、精細状態ユニット220、分岐履歴テーブル208、復帰予測テーブル210、プリフェッチバッファ212、記録済み命令キャッシュ214、そして分岐ユニット216を含む。
フェッチユニット202は、図２にデータライン202として示されるオフチップ（off−chip）64KB命令キャッシュ112、プリフェッチバッファ212、又は記録済み命令キャッシュ214のいずれかにリクエストしてそれから４つの命令を受理する。４つの命令は、次にどの命令をトラップすべきか決定するため、プログラマブル命令トラップユニット204に送られる。前記プログラマブル命令トラップユニット204については、以下図３−８を参照して詳細に説明する。分岐履歴テーブル208は、実行分岐の方向予測のために用いられる複数のカウンタを含む。復帰予測テーブル210は、実行された命令の復帰アドレスを予測するのに用いられる。分岐ユニット216は、発行ユニット206、分岐履歴テーブル208、及び復帰予測テーブル210からの情報を使用して制御転送命令が現行の発行ウインドウ内にあるか否かを決定し、さらに制御転送命令が用いられた場合にはプログラムカウンタを修正する。発行ユニット206は、利用可能なコンピュータ資源及び例えば１つの命令を同期化すべき等の、発行制約条件を決定する。全ての命令は、従来のシリアルプロセッサ内で発行される順序で発行ユニット206により発行され、そして命令実行ユニット218へ送られる。命令実行ユニット218は命令を実行するが、必ずしも前記発行された順序である必要はない。命令実行ユニット218は、命令の実行結果をデータバス222上に出力する。好適な実施例のスーパースカラCPU108についてさらに詳細な説明は、Niteen Patkar,A.Katsuno,S.Li,T.Maruyama,S.Savkar,M.Simone,G.Shen,R.Swami,D.Tovey,HaL PM1 CPUのマイクロアーキテクチャ、Compcon議事録1995、に記述されている。本発明は、ここで述べるプログラマブル命令トラップユニット204の中に存在する。
図３は、本発明の好適な実施例によるプログラマブル命令トラップユニット204のより詳細な例示である。プログラマブル命令トラップユニット204は、好適にはフェッチユニット202から４つの命令を受信する。命令は、図３にINST00,INST01,INST10,INST11として示されている。各命令は、命令トラップ論理ユニット（ITLU）302へ送られる。命令トラップ論理ユニットは、また好適には４つの命令トラップレジスタ（ITRV）304、４つの命令トラップレジスタマスク（ITRM）306、及び４つの制御レジスタ（CR）308からの信号を受信する。命令トラップ論理ユニット302、ITRM304、ITRM306、及びCR308については、以下図４−８を参照して詳細に説明する。
図４は、本発明の好適な実施例によるプログラマブル命令トラップユニットのより詳細な例示である。命令トラップ論理ユニと302は、好適には４つの排他的NOR論理デバイス404A−Ｄを含み、ここで各排他的NORはそれぞれのITRV304と結合する。各排他的NORデバイス404は、命令の各反転ビットと、関連するITRV、例えばITRVO410、からの対応するビットとを比較し、各々のビットについて、一致するか否かを表わす値を出力する。命令INST00の各ビットをITRV304中の各ビットと比較するのに他の技術も使用可能と考えられる。この比較を行なう方法については、以下図７−８を参照してより詳細に説明する。
命令トラップ論理ユニット302は、好適には関連する排他的NORにより出力された各ビットと、ITRM306のビット値とを比較する４つのデバイス406A−Ｄを含む。各ITRM306は、「ケア（care）」又は「ドントケア（don't care）」値を含む複数のビットを有する。４つのデバイス406A−Ｄの各々は、関連する排他的NORデバイスによって出力されたビットと、それと関連するITRM306中のビットとを比較する。各デバイス406は、命令ビットの全てが関連するITRV−ITRMレジスタ対と一致するか否かを表わす１ビットの値を出力する。好適には、各デバイス406は、A 032×２デバイスである。このデバイスは、２セットの32ビット入力を有し、１つのセットは、関連する排他的NOR404出力の各ビットラインに結合され、もう１つのセットは関連するITRM306に結合される。A 032×２は、32の論理ANDゲートを含み、それらの出力は論理ORゲートに入力される。この比較を実施する方法については、図７−８により以下さらに詳細に説明する。
CR308は、一つのITRV−ITRM対と関連する。例えば、CROはITRV0及びITRM0と関連する。各CRは、命令がその関連するITRV−ITRMレジスタ対と一致した場合にとるべきアクションを表わすデータを含む。各制御レジスタは、任意の数のビットを含むことができるが、好適な実施例では各CR308は２つのビットを含む。１つのビットは同期動作を表わし、もう１つのビットは命令トラップを表わす。すなわち、制御レジスタのビットが「00」であり、命令が関連するITRV−ITRMレジスタ対304,306と一致する場合には、特別なアクションは全くとられない。制御レジスタ内のビットが「01」であり、命令が関連するITRV−ITRMレジスタ対304,306と一致する場合、プログラマブル命令トラップユニットは、一致命令を同期的に、すなわち、一致命令より前に発行した全ての命令が実行を完了し、マシンは既知の状態、すなわち一致命令を実行する前の状態、となるよう、実行させる信号を出力する。さらに、同期命令が発行され、実行され、完了され、そして次の命令が発行される前の状態となる。制御レジスタのビットが「10」であり、命令が関連するITRV−ITRMレジスタ対304,306と一致する場合、プログラマブル命令トラップユニット204は、非同期命令発行トラップを生成する。すなわち、前記、命令は命令トラップのセマンティクスを引き継ぐ。制御レジスタのビットが「11」であり、命令が、付随するITRV−ITRMレジスタ対304,306と一致する場合、プログラマブル命令トラップユニット204は同期命令発行トラップを生成する。すなわち命令はトラップされ同期して実行されることになる。
命令トラップ論理ユニット302は、例えばINST00といった受信した命令と一致するITRV−ITRMレジスタ対304,306と関連するCR308に記憶された値を生成するためのデバイスを有する。この値を生成するためには、さまざまな技術を利用することができる。好適には、４つの論理ORゲート（各々はそれぞれのCR308と関連する）の２つのセットが、CR308から入力を受理する。第１のORゲートセットの各ORゲートは、（１）例えばCR0といったCR308の第１のビット及び（２）前記CR308と関連するA 032×２からの１ビットの出力、という２つの入力を受理する。同様に、第２のORゲートセットの各ORゲートは、（１）例えばCR0といたCR308の第２ビット及び（２）前記CR308と関連するA 032×２からの１ビットの出力という２つの入力を受理する。各々のORゲートセットの全てのORゲート出力は、論理NANDゲート408A−Ｂに与えられる。命令トラップ論理ユニット302の出力を生成する方法は、以下図７−８を参照して詳細に説明する。
ITRV304,ITRM306及びCR308の値はプログラミング可能である。これらの値は、上述の通り、ユーザーが命令をトラップし、或る種の命令を同期的に実行させるようにプログラミングできるものである。本発明のプログラミング可能であるという特長は、命令をトラップし同期化する有効な技術を提供し、例えばITRV304,ITRM306に記憶された命令などのある命令を同期的に実行することによって、プロセッサ命令の機能誤りを正し、アプリケーションプログラムの適切なオペレーションを確保する。ITRV304,ITRM306、及びCR308（まとめてプログラマブルレジスタと呼ぶ）をプログラミングするには、さまざまな技術を使用することができる。例えば、プログラマブルレジスタはデータバスに結合され、そこからデータを受理できるようにし得る。好適な実施例では、コンピュータブートアップオペレーション中に、データは「スキャンイン」される。プログラマブルレジスタは、シフトレジスタと同様な技術を用いてプログラミングされる。
図５は、本発明の好適な実施例によるITRV304及びITRM306のより詳細な例示である。各プログラマブルレジスタ410は、複数のビットレジスタ502を有する。好適には、各ITRV304及び各ITRM306は27のビットレジスタ502を含み、一方各CR306は２つのビットレジスタ502を含む。図５は、ITRV304又はITRM306を示している。CR308は、その各々が好適には上述の通り27ビットのレジスタ502ではなく２ビットのレジスタ502を含む点を除いて、同じ仕方で動作する。各プログラマブルレジスタ410は、スキャンクロック（SC）信号、スキャン−イネーブル（SE）信号及びスキャン−入力（SI）信号を受信し、スキャン−出力（SO）信号及びＱ出力信号を生成する。
図６は、本発明の好適な実施例によるビットレジスタ502のより詳細な例示である。ビット値を含む信号はSIライン上で受理される。SC及びSE信号が高レベルの場合、すなわち信号がバイナリの「１」値を表わす場合、論理ANDゲート602は高レベル信号を生成する。この信号は、トランジスタ604のゲートに結合される。その結果、トランジスタ604は導通し、それによってSIライン上の信号がトランジスタ604を通過し、その論理値は２つのインバータ604によって保持される。SE信号が高レベルの間にSCが低レベルになると、トランジスタ604はオフされ、論理ANDゲート608は高レベル信号を生成する。前記論理ANDゲート608は、トランジスタ612のゲートに結合される。その結果として、トランジスタ612は導通し、反転SI信号は再びインバータ610の１つにより反転され、SOライン上に出力される。前記信号は、またビットレジスタがITRV304の一部である場合にはデバイス404Aに、ビットレジスタがITRM306の一部である場合にはインバータ及びデバイス406Aに、又はビットレジスタがCR308の一部である場合にはインバータ及び論理ORゲート、のいずれかに結合されるＱライン上に出力される。SOラインは次のビットレジスタSIラインに結合される。ITRV304の最後のビットレジスタのSOラインは、第１のITRM306の第１のビットレジスタに結合される。ITRM306の最後のビットレジスタは、第１のCR308の第１のビットレジスタに結合される。コンピュータ初期化プロセス中、プログラマブルレジスタ値を表わすデータは第１のSIライン412内に体系的に入力され、各々のプログラマブルレジスタが所望の値を得るまで全てのビットレジスタを通じてシフトされる、すなわちビットレジスタ値はスキャンインされる。
ここで、本発明の方法について詳細に説明する。図７は、本発明の好適な実施例による命令をトラップする方法を示したフロー図である。まず最初に、ITRV304,ITRM306、及びCR308がプログラミングされる。上述の通り、これらのプログラマブルレジスタは、データバス及び制御信号を用いて個別にプログラミングできる（704,706,708）。好適には、プログラマブルレジスタはスキャンイン、すなわち図５−６を参照して上述したビットシフティング技術を用いて、コンピュータ初期化の間にプログラミングされる。プログラマブルレジスタがプログラミングされた後（702）、命令がテストされる（710）。命令テスト方法は、図８を用いて以下で述べられる。
図８は、本発明の好適な実施例による命令のテスト方法を示したフロー図である。好適には、図２に示されているように、プログラマブル命令トラップユニット204によりフェッチユニット202から４つの命令が受理される（802）。各命令は、個々の命令トラップ論理ユニット302に送られる。例えば、命令INST00は、命令トラップ論理ユニット302Aに送られる。命令トラップ論理ユニット302Aは、インバータ402を用いて命令内の各ビットを反転させる。反転された命令ビットは、図４で説明したように４つの排他的NORデバイス404A−Ｄにより受理される。各排他的NORデバイス404は、各反転された命令ビットを、先にプログラミングされたITRV304の１つの対応ビットと比較する（804）。例えば、排他的NORデバイス404Aは、図４−６に示すように命令ビット０とITRV0のビットレジスタ０とを比較する。反転された命令ビットがITRV304の１つの関連するビットと一致する場合には、排他的NORは、論理「１」を表わす信号を生成する。そうでなければ、排他的NORは、論理「０」を表わす信号を生成する。排他的NORデバイスは、関連するITRVビットレジスタ502と命令の反転ビットとを比較するため、排他的NORが論理「０」を表わす信号を生成した場合、ITRVビットは命令ビットと一致する。命令の各反転ビット、INST00、は、各ITRV304のそれぞれ関連するビットと比較される。好適には、これらの比較結果は、デバイス404A−Ｄの排他的NOR比較の結果を表わす４つの27ビット信号である。
好適には、27ビット信号の各セットにおける各ビットは、A 032×２デバイス406A−Ｄを用いて関連するITRM306のビットレジスタ502と比較される（806）。各A 032×２デバイス406A−Ｄは、少なくとも27の論理ANDゲートで構成され、その出力は論理ORゲートに入力される。例えば、デバイス404Aから出力される最下位ビット又はゼロビットは、ITRM0の反転ゼロビットレジスタに伴う論理ANDゲートに入力される。ITRM306はマスクである。時として、各命令を関連する命令パターンセットと比較することが望ましい。例えば、ビット５−９の或る組合せからなる全ての命令と一致させることが望ましい場合もある。この状況下では、残りのビット例えばビット０−４及び10−26は、その値がこの特定の一致に対して不適切であることから、マスキングされるべきである。この一致は、適切なITRMビットレジスタ内に「ドントケア」値を配置することによって達成される。本発明においては、「ドントケア」値は論理「１」である。図４に示すように、ITRM値は、A 032×２によって受理される前に反転される。従って、命令ビットが関連するITRVビットレジスタと一致したことからデバイス404Aからのビットがゼロであるならば、A 032×2 406内の関連する論理ANDゲートの出力はゼロとなる。同様にして、デバイス404Aからのビットが論理１の場合、AND出力は、ITRM0内の関連するビットレジスタがマスクされたすなわちその反転値がゼロに等しい場合にのみ、ゼロとなる。
上述したように、全てのANDゲート出力は、ORゲートに結合される。いずれかのANDゲート出力が論理的１であるなら、ORゲートの出力は論理１である。ORゲートの出力は、A 032×2 406の出力である。従って、A 032×2 406は、命令INST00からのビットの全てが関連するITRVビットと一致するか又はマスキングされた場合のみ、すなわち命令INST00がITRV−ITRM304,306レジスタ対と一致する場合にのみ、論理ゼロを表わす命令一致値（IMV）信号を生成する。
プログラマブル命令トラップユニット204は、何らかの一致が発生したか否かを決定し（810）、発生した場合には関連するCR308の値を生成する（812）。これを達成するプロセスについて述べる。各A 032×２デバイス406からの出力は、図４に示されるように２つの論理ORゲート、例えばORゲート418,420、によって受理される。第１のORゲート418に対する第２の入力は、関連するCR308の第１のビットレジスタの値である。第２のORゲート420に対する第２の入力は、関連するCR308の第２のビットレジスタの値である。例えば、命令INST00がレジスタ対ITRV0−ITRM0のみと一致する場合、A 032×2 406Aはその出力で論理ゼロを表わす信号を生成し、残りのA 032×2 406B−Ｄは、その出力で論理１を表わす信号を生成する。A 032×2 406B−Ｄと関連する３つのORゲートは、その入力の１でバイナリ１を受理する。従って、これら３つのORゲートは、バイナリ１を表わす信号を出力する。NANDゲート408Aは、ORゲート418の出力が論理１を生成した場合にのみ論理ゼロ出力を生成する。デバイス406Aの出力は論理的ゼロであるため、ORゲート418の出力は、CR0の第１のビットレジスタが論理ゼロを含む場合にのみ論理１である。４つのORゲート及び１つのNANDゲート408の各セットは、上述のとおり、（１）NANDゲート408A−Ｂにより出力されるべき一致レジスタ対と関連するCR308の値、又は（２）命令INST00がいかなるレジスタ対とも一致しない場合、NANDゲート408A−Ｂはいかなる特別なアクションもとるべきでないということを表わす「00」値、のいずれかを出力する。
受理した４つの命令、すなわちINST00,INST01,INST10、及びINST11、は全て、それぞれの４つのITRVレジスタ及びITRMレジスタと同様に比較される。
複数のレジスタ対が一つの命令と一致することも可能である。例えば、レジスタ対ITRV1−ITRM1及びレジスタ対ITRV2−ITRM2の両方が特定の命令、例えばINST00と一致することも可能である。このような状況下では、１つのCR、例えばCR2、のCRビットレジスタ内のビット値「１」により、関連するNANDゲートが論理１を表わす信号を生成する。
４つの命令すべてが一緒にテストされた後もこの方法は続行される（814）。より多くの命令が受理された場合、前記プロセスは反復する（712）。全ての命令がテストされた後、上述のとおりデータバスを使用することにより、又は好適にはコンピュータをリブートし、新しいプログラマブルレジスタ値におけるスキャンによって、ITRV304,ITRM306、及びCR308の新しい値をプログラミングすることができる（714）。その後、プロセス702−714が繰り返される。
発明は、好適な実施例及びそのいくつかの別の実施例を参考にして特定的に図示され記述されてきたが、当業者であれば、本発明の精神及び範囲から逸脱することなく形状及び細部のさまざまな変更をそれに加えることが可能である。
【図１】
0003604697.tif 000002
【図２】
0003604697.tif 000003
【図３】
0003604697.tif 000004
【図４】
0003604697.tif 000005
【図５】
0003604697.tif 000006
【図６】
0003604697.tif 000007
【図７】
0003604697.tif 000008
【図８】
0003604697.tif 000009