(57)【特許請求の範囲】
【請求項１】
（ｉ）データメモリに記憶された所定の複数の命令セットのうちの連続するプログラム命令ワードを実行するように動作可能なプロセッサコアと、
（ｉｉ）前記データメモリ内の次のプログラム命令ワードのアドレスを示すプログラムカウンタレジスタと、
（ｉｉｉ）カレントプログラム命令ワードに応答して前記プログラムカウンタレジスタの内容を変更するように動作可能な論理回路と、
（ｉｖ）前記プログラムカウンタレジスタの１つ以上の所定の表示ビットに応答して、前記プロセッサコアを制御して、前記所定の複数の命令セットから選択されかつ前記プログラムカウンタレジスタの前記１つ以上の所定の表示ビットの状態によって指定されたカレント命令セットのうちの、プログラム命令ワードを前記プロセッサコアに実行させるように動作可能なプロセッサコアコントローラと、
（ｖ）前記データメモリに記憶されたプログラム命令ワードにアクセスするように動作可能であり、かつ、前記プログラムカウンタレジスタの前記１つ以上の所定の表示ビットに応答しないメモリアクセスコントローラと、
を備えた、データ処理装置。
【請求項２】
第１命令セットのプログラム命令ワードをデコードする第１命令デコーダと、
第２命令セットのプログラム命令ワードをデコードする第２命令デコーダと、
を備え、
前記プロセッサコアコントローラが、前記第１命令デコーダまたは前記第２命令デコーダのいずれかを制御してカレントプログラム命令ワードをデコードするように動作可能である、
請求項１記載のデータ処理装置。
【請求項３】
前記第１命令セットのプログラム命令ワードが、Ｘビットのプログラム命令ワードであり、
前記第２命令セットのプログラム命令ワードが、Ｙビットのプログラム命令ワードであり、
ＹがＸと異なる、
請求項２記載のデータ処理装置。
【請求項４】
第１命令セットのプログラム命令ワードが、Ｘビットのプログラム命令ワードであり、
第２命令セットのプログラム命令ワードが、Ｙビットのプログラム命令ワードであり、
ＹがＸと異なる、
請求項１記載のデータ処理装置。
【請求項５】
Ｙが１６であり、Ｘが３２である、請求項３記載のデータ処理装置。
【請求項６】
Ｙが１６であり、Ｘが３２である、請求項４記載のデータ処理装置。
【請求項７】
前記プログラムカウンタレジスタの前記１つ以上の所定の表示ビットが、該プログラムカウンタレジスタの１つ以上の最上位ビットである、請求項１記載のデータ処理装置。
【請求項８】
前記プログラムカウンタレジスタの前記１つ以上の所定の表示ビットが、該プログラムカウンタレジスタの１つ以上の最下位ビットである、請求項１記載のデータ処理装置。
【請求項９】
前記プログラムカウンタレジスタの前記１つ以上の所定の表示ビットが、該プログラムカウンタレジスタの１つ以上の最下位ビットである、請求項２記載のデータ処理装置。
【請求項１０】
前記プログラムカウンタレジスタの前記１つ以上の所定の表示ビットが、該プログラムカウンタレジスタの１つ以上の最下位ビットである、請求項３記載のデータ処理装置。
【請求項１１】
前記プログラムカウンタレジスタの前記１つ以上の所定の表示ビットが、該プログラムカウンタレジスタの１つ以上の最下位ビットである、請求項４記載のデータ処理装置。
【請求項１２】
前記プログラムカウンタレジスタの前記１つ以上の所定の表示ビットが、該プログラムカウンタレジスタの１つ以上の最下位ビットである、請求項５記載のデータ処理装置。
【請求項１３】
前記プログラムカウンタレジスタの前記１つ以上の所定の表示ビットが、前記プログラムカウンタレジスタの１つ以上の最下位ビットである、請求項６記載のデータ処理装置。
【請求項１４】
実行されるべきプログラム命令ワードを記憶するデータメモリを備えた、請求項１記載のデータ処理装置。
【請求項１５】
データ処理装置によって使用される所定の複数の命令セットを切り換える方法であって、
第１命令に応答して、
（ｉ）アドレス部分と命令セット表示部分とを有するあるビットシーケンスにアクセスするステップと、
（ｉｉ）該ビットシーケンスの命令セット表示部分に基づいて前記所定の複数の命令セットから選択された命令セットを識別するステップと、
（ｉｉｉ）前記データ処理装置用のカレント命令セットが前記ビットシーケンスの前記命令セット表示部分に基づいて識別された前記命令セットであることを示すように１つ以上の制御フラグをセットするステップと、
前記ビットシーケンスの前記アドレス部分から誘導されたアドレスから第２命令を検索するステップと、
を含み、
前記ビットシーケンスの前記命令セット表示部分によって識別された前記命令セットが、前記ビットシーケンスの前記アドレス部分から誘導された前記アドレスに関連することなく識別可能である、
方法。
【請求項１６】
前記カレント命令セットの命令として前記第２命令を実行するステップを更に含む、請求項１５記載の方法。
【請求項１７】
前記所定の複数の命令セットが第１命令セットと第２命令セットとを含み、
前記第１命令セットの命令がＸビット命令であり、
前記第２命令セットの命令がＹビット命令であり、
ＹがＸと異なる、
請求項１５記載の方法。
【請求項１８】
Ｘが３２であり、Ｙが１６である、請求項１７記載の方法。
【請求項１９】
前記ビットシーケンスの前記命令セット表示部分が、該ビットシーケンスの１つ以上の最下位ビットを含む、請求項１５記載の方法。
【請求項２０】
前記ビットシーケンスの前記命令セット表示部分が、該ビットシーケンスの１つ以上の最上位ビットを含む、請求項１５記載の方法。
【請求項２１】
データ処理装置によって使用される所定の複数の命令セットを切り換える方法であって、
第１命令に応答して、
（ｉ）アドレス部分と命令セット表示部分とを有するあるビットシーケンスにアクセスするステップであって、前記命令セット表示部分が、前記ビットシーケンスの前記アドレス部分の一部でない少なくとも１つのビットを有する、ステップと
（ｉｉ）前記ビットシーケンスの前記命令セット表示部分に基づいて前記所定の複数の命令セットから選択された命令セットを識別するステップと、
（ｉｉｉ）前記データ処理装置用のカレント命令セットが前記ビットシーケンスの前記命令セット表示部分に基づいて識別された前記命令セットであることを示すように１つ以上の制御フラグをセットするステップと、
前記ビットシーケンスの前記アドレス部分から誘導されたアドレスから第２命令を検索するステップと、
を含む、方法。
【請求項２２】
前記カレント命令セットの命令として前記第２命令を実行するステップを更に含む、請求項２１記載の方法。
【請求項２３】
前記所定の複数の命令セットが第１命令セットと第２命令セットとを含み、
前記第１命令セットの命令がＸビット命令であり、
前記第２命令セットの命令がＹビット命令であり、
ＹがＸと異なる、
請求項２１記載の方法。
【請求項２４】
Ｘが３２であり、Ｙが１６である、請求項２３記載の方法。
【請求項２５】
前記ビットシーケンスの前記命令セット表示部分が、該ビットシーケンスの１つ以上の最下位ビットを含む、請求項２１記載の方法。
【請求項２６】
前記ビットシーケンスの前記命令セット表示部分が、該ビットシーケンスの１つ以上の最上位ビットを含む、請求項２１記載の方法。
【請求項２７】
所定の複数の命令セットからの命令を使用して作動することができるデータ処理装置であって、
（ｉ）第１命令のビットシーケンスの命令セット表示部分に応答し、前記ビットシーケンスのアドレス部分から第２命令のアドレスを誘導し、かつ、前記ビットシーケンスの前記命令セット表示部分を使って１つ以上の制御フラグをセットするプロセッサコアと、
（ｉｉ）前記１つ以上の制御フラグに応答し、前記１つ以上の制御フラグの状態が前記所定の複数の命令セットから選択されたカレント命令セットを指定し、前記カレント命令セットからの命令として前記第２命令を前記プロセッサコアに実行させる、コントローラと、
を含み、
前記１つ以上の制御フラグが、前記ビットシーケンスの前記アドレス部分から誘導された前記アドレスに関係なくセットされる、
データ処理装置。
【請求項２８】
前記１つ以上の制御フラグが、プログラムカウンタの１つ以上の所定のビットを含む、請求項２７記載のデータ処理装置。
【請求項２９】
メモリシステムを更に含み、該メモリシステムが前記１つ以上の制御フラグに応答しない、請求項２７記載のデータ処理装置。
【請求項３０】
メモリシステムを更に含み、該メモリシステムに前記１つ以上の制御フラグが与えられない、請求項２７記載のデータ処理装置。
【請求項３１】
所定の複数の命令セットが、第１命令セットと第２命令セットとを含み、
前記第１命令セットの命令がＸビット命令であり、
前記第２命令セットの命令がＹビット命令であり、
ＹがＸと異なる、
請求項２７記載のデータ処理装置。
【請求項３２】
Ｘが３２であり、Ｙが１６である、請求項３１記載のデータ処理装置。
【請求項３３】
所定の複数の命令セットからの命令を使って作動することができるデータ処理装置であって、
（ｉ）第１命令に応答して、ビットシーケンスにアクセスして第２命令のアドレスを誘導するプロセッサコアであって、前記ビットシーケンスがアドレス部分と命令セット表示部分とを有し、該命令セット表示部分が前記ビットシーケンスの前記アドレス部分の一部でない少なくとも１つのビットを有し、前記第２命令の前記アドレスが前記ビットシーケンスの前記アドレス部分から誘導される、プロセッサコアと、
（ｉｉ）前記ビットシーケンスの前記命令セット表示部分を使って１つ以上の制御フラグをセットする前記プロセッサコアであって、該１つ以上の制御フラグの状態が、前記所定の複数の命令セットから選択されたカレント命令セットを指定する、前記プロセッサコアと、
（ｉｉｉ）前記１つ以上の制御フラグに応答して、前記カレント命令セットからの命令として前記第２命令を前記プロセッサコアに実行させるコントローラと、
を含む、データ処理装置。
【請求項３４】
前記１つ以上の制御フラグが、プログラムカウンタの１つ以上の所定のビットを含む、請求項３３記載のデータ処理装置。
【請求項３５】
メモリシステムを更に含み、該メモリシステムが前記１つ以上の制御フラグに応答しない、請求項３３記載のデータ処理装置。
【請求項３６】
メモリシステムを更に含み、該メモリシステムに前記１つ以上の制御フラグが与えられない、請求項３３記載のデータ処理装置。
【請求項３７】
前記所定の複数の命令セットが、第１命令セットと第２命令セットとを含み、
前記第１命令セットの命令がＸビット命令であり、
前記第２命令セットの命令がＹビット命令であり、
ＹがＸと異なる、
請求項３３記載のデータ処理装置。
【請求項３８】
Ｘが３２であり、Ｙが１６である、請求項３７記載のデータ処理装置。
【請求項３９】
所定の複数の命令セットからの命令を使用して作動することができるデータ処理装置であって、
（ｉ）第１命令に応答してあるビットシーケンスにアクセスするプロセッサコアであって、前記ビットシーケンスがアドレス部分と命令セット表示部分とを有し、前記プロセッサコアが前記ビットシーケンスの前記アドレス部分から第２命令のアドレスを誘導するとともに、前記ビットシーケンスの前記命令セット表示部分を使って１つ以上の制御フラグをセットする、プロセッサコアと、
（ｉｉ）状態が前記所定の複数の命令セットから選択されたカレント命令セットを指定する前記１つ以上の制御フラグに応答して、前記カレント命令セットからの命令として前記第２命令を前記プロセッサコアに実行させるコントローラと、
を含み、
前記１つ以上の制御フラグが、前記ビットシーケンスの前記アドレス部分から誘導された前記アドレスに関係なくセットされる、
データ処理装置。
【請求項４０】
前記１つ以上の制御フラグが、プログラムカウンタの１つ以上の所定のビットを含む、請求項３９記載のデータ処理装置。
【請求項４１】
メモリシステムを更に含み、該メモリシステムが前記１つ以上の制御フラグに応答しない、請求項３９記載のデータ処理装置。
【請求項４２】
メモリシステムを更に含み、該メモリシステムに前記１つ以上の制御フラグが与えられない、請求項３９記載のデータ処理装置。
【請求項４３】
前記所定の複数の命令セットが第１命令セットと第２命令セットとを含み、
前記第１命令セットの命令がＸビット命令であり、
前記第２命令セットの命令がＹビット命令であり、
ＹがＸと異なる、
請求項３９記載のデータ処理装置。
【請求項４４】
Ｘが３２であり、Ｙが１６である、請求項４３記載のデータ処理装置。
【請求項４５】
所定の複数の命令セットからの命令を使って作動することができるデータ処理装置であって、
（ｉ）第１命令に応答して、あるビットシーケンスにアクセスして第２命令のアドレスを誘導するプロセッサコアであって、前記ビットシーケンスがアドレス部分と命令セット表示部分とを有し、前記命令セット表示部分が前記ビットシーケンスの前記アドレス部分の一部でない少なくとも１つのビットを有し、前記第２命令の前記アドレスが前記ビットシーケンスの前記アドレス部分から誘導される、プロセッサコアと、
（ｉｉ）前記ビットシーケンスの前記命令セット表示部分を使って１つ以上の制御フラグをセットする前記プロセッサコアであって、前記１つ以上の制御フラグの状態が、前記所定の複数の命令セットからのカレント命令セットを指定する、前記プロセッサコアと、
（ｉｉｉ）前記１つ以上の制御フラグに応答して前記カレント命令セットからの命令として前記第２命令を前記プロセッサコアに実行させるコントローラと、
を含む、データ処理装置。
【請求項４６】
前記１つ以上の制御フラグが、プログラムカウンタの１つ以上の所定のビットを含む、請求項４５記載のデータ処理装置。
【請求項４７】
メモリシステムを更に含み、該メモリシステムが前記１つ以上の制御フラグに応答しない、請求項４５記載のデータ処理装置。
【請求項４８】
メモリシステムを更に含み、該メモリシステムに前記１つ以上の制御フラグが与えられない、請求項４５記載のデータ処理装置。
【請求項４９】
前記所定の複数の命令セットが第１命令セットと第２命令セットとを含み、
前記第１命令セットの命令がＸビット命令であり、
前記第２命令セットの命令がＹビット命令であり、
ＹがＸと異なる、
請求項４５記載のデータ処理装置。
【請求項５０】
Ｘが３２であり、Ｙが１６である、請求項４９記載のデータ処理装置。
【請求項５１】
所定の複数の命令セットを切り換えることができるデータ処理装置であって、
（ｉ）第１命令に応答してあるビットシーケンスにアクセスする手段であって、前記ビットシーケンスがアドレス部分および命令セット表示部分を有する、手段と、
（ｉｉ）前記第１命令に応答して前記ビットシーケンスの前記命令セット表示部分に基づいて前記所定の複数の命令セットから選択された命令セットを識別する手段と、
（ｉｉｉ）前記データ処理装置用のカレント命令セットが前記第１命令に応答して前記ビットシーケンスの前記命令セット表示部分に基づいて識別された前記命令セットであることを表示するように１つ以上の制御フラグをセットする手段と、
（ｉｖ）前記第１命令に応答して前記ビットシーケンスの前記アドレス部分から誘導されたアドレスから第２命令を検索する手段と、
を含み、
前記ビットシーケンスの前記命令セット部分によって識別された前記命令セットが、前記ビットシーケンスの前記アドレス部分から誘導された前記アドレスとは関係なく識別可能である、
データ処理装置。
【請求項５２】
前記１つ以上の制御フラグが、プログラムカウンタの１つ以上の所定のビットを含む、請求項５１記載のデータ処理装置。
【請求項５３】
メモリシステムを更に含み、該メモリシステムが前記１つ以上の制御フラグに応答しない、請求項５１記載のデータ処理装置。
【請求項５４】
メモリシステムを更に含み、該メモリシステムに前記１つ以上の制御フラグが与えられない、請求項５１記載のデータ処理装置。
【請求項５５】
前記所定の複数の命令セットが第１命令セットと第２命令セットとを含み、
前記第１命令セットの命令がＸビット命令であり、
前記第２命令セットの命令がＹビット命令であり、
ＹがＸと異なる、
請求項５１記載のデータ処理装置。
【請求項５６】
Ｘが３２であり、Ｙが１６である、請求項５５記載のデータ処理装置。
【請求項５７】
データ処理装置を作動させる方法であって、
（ｉ）所定の複数の命令セットから選択された第１命令セットから第１命令を受けるステップと、
（ｉｉ）前記第１命令を変換して第１のセットの１つ以上の制御信号を発生するステップと、
（ｉｉｉ）前記第１のセットの１つ以上の制御信号に応答してアドレス部分および命令セット表示部分を含むあるビットシーケンスにアクセスするステップであって、前記命令セット表示部分が、前記ビットシーケンスの前記アドレス部分の一部でない少なくとも１つのビットを有する、ステップと、
（ｉｖ）前記ビットシーケンスの前記命令セット表示部分の値に基づいて１つの以上の制御フラグをセットして、カレント命令セットが所定の複数の命令セットから選択された第２命令セットであることを指定するステップと、
（ｖ）前記ビットシーケンスの前記アドレス部分から誘導されたアドレスを使って第２命令を検索するステップと、
（ｖｉ）前記カレント命令セットからの命令として前記第２命令を変換して第２のセットの１つ以上の制御信号を発生するステップと、
を含む、方法。
【請求項５８】
前記所定の複数の命令セットが２つの命令セットからなる、請求項５７記載の方法。
【請求項５９】
前記第１命令セットがＸビット命令からなり、
前記第２命令がＹビット命令からなり、
ＹがＸと異なる、
請求項５７記載の方法。
【請求項６０】
前記第１命令セットがＸビット命令からなり、
前記第２命令がＹビット命令からなり、
ＹがＸと異なる、
請求項５８記載の方法。
【請求項６１】
Ｘが３２であり、Ｙが１６である、請求項５９記載の方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はデータ処理技術に関し、より詳細には、複数個のプログラム命令ワードを用いたデータ処理に関する。
【０００２】
【従来技術】
データ処理システムはプログラム命令ワードの制御により作動するプロセッサコアにより作動し、プロセッサ命令ワードはデコードされるとプロセッサ内の個々の素子を制御するコア制御信号を発生し、プログラム命令ワード内に指定された処理を行うよう、必要な演算を実行する。
【０００３】
従来、異なる命令セット間でその使用を切り替える手段を設けることによって、２以上の命令セットからなるプログラム命令ワードを実行するシステムが提供されていた。デジタルイクイップメント社のＶＡＸ１１コンピュータはＶＡＸ命令モード並びにＰＤＰ１１コンピュータの従来機種のための命令をデコードを可能にするコンパーチブルモードの双方を有している。
【０００４】
異なる命令セットへの切り替えを行うための、命令セット切替は、プロセッサコアへのハードウェア配線であっても良いが、これは命令セットの切替のために、プロセッサの物理的な再配線を必要とする。この方法とは異なり、使用される現在の命令セットを指定するようにプロセッサレジスタを使用することもできる。この場合命令セットを指定する値をそのプロセッサレジスタに書き込むことにより、作動中のソフトウェアによりカレント命令セットを選択することができる。しかしながら以下に述べるように、この技術は別のプログラム命令ワードを必要とするので、このことによりソフトウェア作成に余分な時間がかかり、更にプログラム命令ワードを記憶する余分なメモリスペースが必要になる。
【０００５】
１つのコード片を実行するために、２つ以上の命令セットを使用可能なプロセッサは次の２つの情報を有していなければならない。
１）メモリ内のコードのアドレス及び
２）使用する命令セット（すなわちコードが書き込まれる命令セット）
【０００６】
【発明が解決しようとする課題】
一般にこれまで提案されたプロセッサでは、異なる命令内のルーチンの呼び出しには、次に述べる処理を実行しなければならなかった。
１）サブルーチンの呼出し先を、オリジナルから、自動的に生成される命令セットシーケンス即ちベニヤ（ｖｅｎｅｅｒ）に切り替える。
２）次にベニヤは、次を実行しなければならない。
−呼び出し側のコンテキストをセーブ
−正しい命令セットを選択
−オリジナルのルーチンを呼び出す
−オリジナルのルーチンから復帰する際に元の命令セットを選択
−呼び出し側のコンテキストを復帰
【０００７】
このプロセスはリンカーと称される従来のソフトウェアツールを使用することにより、プログラマーに対して比較的見通しの良いものとなるようにすることができる。しかしながらこのプロセスは異なる命令セットから呼び出される命令ごとに５命令のオーバーヘッドを有しており、かなりの処理オーバーヘッドがもたらされる。
【０００８】
本発明の目的は複数の命令セットを切り替えるデータ処理装置の能力を向上させることにある。
【０００９】
【課題を解決するための手段】
本発明は、所定の複数の命令セットの連続するプログラム命令ワードを実行する手段を有するプロセッサコアと、
実行すべきプログラム命令ワードを記憶するためのデータメモリと、
前記データメモリ内の次のプログラム命令ワードのアドレスを表示するためのプログラムカウンタレジスタと、
カレントプログラム命令ワードに応答して前記プログラムカウンタレジスタの内容を変更するための手段と、
前記プログラムカウンタレジスタの１つ以上の所定の表示ビットに応答し、前記所定の複数の命令セットから選択され、前記プログラムカウンタレジスタの前記１つ以上の表示ビットの状態によって指定されるカレント命令セットのうちのプログラム命令ワードを実行するよう、前記プロセッサコアを制御するための制御手段とを備えたデータ処理装置を提供するものである。
【００１０】
本発明ではプログラムカウンターレジスタ内にカレント命令セットを選択するための、１つ或いは複数の制御フラグが設けられる。これにより、例えばブランチ命令の実行の一部としてプログラムカウンターレジスタ内に新しい値が書き込まれる際、カレント命令セットを変更することが可能となる。
【００１１】
本発明は、上記の、これまで提案されているプロセッサの場合と同じように、別個のプロセッサレジスタ（命令セットレジスタとプログラムカウンタレジスタ）で、要求された命令セットとその次の命令アドレスをエンコードする場合、異なる命令セットで書かれたコードセクションの呼び出しを行うのに、２つの別個のレジスタを更新しなければならないので、命令セットを切り替えることが困難になることに注目したものである。
【００１２】
例えば、ソーティングすなわち照合（ｃｏｌｌａｔｉｏｎ）機能を実行するプログラムについて検討する。一般にこのソートを実行するには、一般的なソートルーチンを呼び出す。このソートルーチンは一般的であるので、所定のシーケンスでソーティングできるものでなければならない。例えば数字の順序、アルファベットの順序、ケース（ｃａｓｅ）に依存しないアルファベットの順序またはプログラマーが指定する他の順序で項目をソートするように、呼び出し可能である。プログラマーがソートの順序を指定する手段は、ルーチンのアドレス（比較ルーチンと称される）をソートルーチンに送ることである。この比較ルーチンは次にソートルーチンにより呼び出され、２つの項目のデータが与えられると、ソートされるシーケンス内で第１の項目を第２の項目の前に置くか、或いは後に置くかを示す値を返す。
【００１３】
比較ルーチンのアドレスがソートルーチンへ送られると、ソートルーチンは、ルーチンが呼び出される際にどの命令セットが選択されるべきかを知る方法はない。比較ルーチンの実行が試みられる際に、誤った命令セットがカレント命令セットとなっている場合、その結果はひどい失敗をもたらし得る。比較ルーチンが呼び出される際に、どの命令セットが有効にされるべきかを示すため、ソートルーチンに余分な情報を送る必要がある。しかしながらハイレベルの言語、例えばＣおよびＣ＋＋言語で書かれた多くの現行のプログラムでは、ターゲットルーチン（本例ではアドレスおよび命令セット情報）を一義的に識別するのに必要なすべての情報は、単一の機械語で表現できるものとしている。
【００１４】
本発明は、使用される命令セットを示すための、プログラムカウンタレジスタ（ＰＣ）の所定のビットを定義することにより、これらの問題を解消している。上記特定の実施例では、ソートルーチンへ送られる比較ルーチンのアドレスは、そのアドレスの所定のビット内にエンコードされた必要な命令セットを有することができる。比較ルーチンが呼び出されると、表示ビットを含むアドレスはプログラムカウンタレジスタに送られるだけである。
【００１５】
プログラムカウンタレジスタの所定ビットを、指示ビット（ｉｎｄｉｃａｔｏｒ  ｂｉｔ）として使用するため確保することもできるが、別の方法では、対応するメモリエリア内の種々の命令セットを用いて、実行されるコードの部分を記憶し、これにより、そのメモリエリアがアクセスされる間、プログラムカウンタは、使用される適当な命令セットを特定する、特定の範囲の値を含む。
【００１６】
様々な命令セットから命令をデコードするには、装置は第１命令セットのプログラム命令ワードをデコードするための第１命令デコーダと、第２命令セットのプログラム命令ワードをデコードするための第２命令デコーダを含み、制御手段が現在のプログラム命令ワードをデコードするのに、第１命令デコーダまたは第２命令デコーダのいずれかを制御するように作動できることが好ましい。
【００１７】
第１命令セットのプログラム命令ワードは、Ｘビットのプログラム命令ワードであり、第２の命令セットのプログラム命令ワードは、Ｙビットのプログラム命令ワードであり、ＹはＸと異なることが好ましい。このように共通のプロセッサコアが、より長いプログラム命令ワードを有し、潜在的によりパワフルな関連命令を可能とする命令セットか、或いはより短いプログラム命令ワードを有し、よって潜在的により限られた命令セットが許容されるメモリスペースをセーブする命令セット、のいずれかによりプログラムされ得る。
【００１８】
好ましい実施例では、プログラムカウンタレジスタの１つ以上のビットはプログラムカウンタレジスタの１つ以上の最上位ビットであり、例えば３２ビットのプログラムカウンタレジスタでは、かかる大きなプログラムカウンタレジスタによってアクセスできる最大メモリスペースは、通常使用されるメモリスペースよりもかなり大きいので、最高位ビットが必要になることはほとんどない。
【００１９】
上記と異なり、別の実施例では、プログラムカウンタレジスタの１つ以上のビットはプログラムカウンタレジスタの１つ以上の最下位ビットである。この場合プログラム命令ワードまたはデータワードの最小長さが少なくとも２バイトであり、これらビットは多くの場合使用されない。
【００２０】
アクセスされるデータメモリ内の無効アドレスを避けるため、データメモリに記憶されたプログラム命令ワードにアクセスするための手段を設けることが好ましく、このアクセス手段はプログラムカウンタレジスタの１つ以上のビットには応答しない。
【００２１】
添付図面を参照して次の図示した実施例の詳細な説明を読めば、本発明の上記およびそれ以外の目的、特徴および利点が明らかとなろう。
【００２２】
【実施例】
図１は、プロセッサコア１０がメモリシステム２０に結合されたデータ処理装置の略図である。
【００２３】
このプロセッサコア１０はレジスタバンク３０と、ブースマルチプライヤ４０と、バレルシフタ５０と、３２ビットの算術論理ユニット（ＡＬＵ）６０と、書き込みデータレジスタ７０とを含む。プロセッサコア１０とメモリシステム２０の間には、命令パイプライン８０と、マルチプレクサ９０と、第１命令デコーダ１００と、第２命令デコーダ１１０と、読み出しデータレジスタ１２０とがある。
【００２４】
プロセッサコア１０の一部であるプログラムカウンタ（ＰＣ）は、命令システム２０のアドレス指定を表示するように示されている。プログラムカウンタコントローラ１４０は、各々の命令が実行され、命令パイプライン８０のための新しい命令をフェッチする必要があるたびに、プログラムカウンタレジスタ１３０内のプログラムカウンタ値をインクリメントするように働く。更に分岐命令が実行されると分岐命令のターゲットアドレスがプログラムカウンタコントローラ１４０によりプログラムカウンタ１３０内にロードされる。
【００２５】
プロセッサコア１０は、種々の機能ユニットの間の３２ビットのデータ通路を含む。作動中、命令パイプライン８０内の命令は、（マルチプレクサ９０の制御により）第１命令デコーダ１００または第２命令デコーダ１１０のいずれかによりデコードされ、プロセッサコア１０の個々の機能素子へ送られる種々のコア制御信号を発生する。これらコア制御信号に応答し、プロセッサコアの異なる部分は３２ビットの処理演算、例えば３２ビットの乗算、３２ビットの加算および３２ビットの論理演算を実行する。
【００２６】
レジスタバンク３０はカレントプログラミングステータスのレジスタ（ＣＰＳＲ）１５０と、セーブされたプログラミングステータスのレジスタ（ＳＰＳＲ）１６０を含む。カレントプログラミングステータスレジスタ１６０はプロセッサコア１０のための種々の条件およびステータスフラグをホールドする。これらフラグは処理モードフラグ（例えばシステムモード、ユーザーモード、メモリアボートモード等のフラグ）のみならず、算術演算におけるゼロの結果、桁上げ等の発生を表示するプラグを含むことができる。セーブプログラミングステータスレジスタ１６０（これはバンク状の複数のかかるセーブプログラミングステータスレジスタのうちの１つでよい）は、処理モードスイッチの切り替えをトリガーする例外条件が発生した場合、現在プログラミングステータスレジスタ１５０の内容を一時的に記憶するのに使用される。
【００２７】
プログラムカウンタレジスタ１３０は命令セットフラグＴを含む。この命令セットフラグはマルチプレクサ９０の作動を制御するのに使用され、よって現在データ処理命令をデコードするのに第１命令デコーダ１００または第２命令デコーダ１１０のいずれを使用するかを制御するのに使用される。本実施例では、２つの命令セット、すなわち第１命令セットと第２命令セットとを示す。第１命令セットは３２ビットのプログラム命令ワードから成り、第１命令デコーダ１００によってデコードされ、第２命令セットは１６ビットのプログラム命令ワードを含み、第２命令デコーダ１１０によってデコードされる。第１命令デコーダ１００と、第２命令デコーダ１１０によって発生されるコア制御信号は、コア１０の種々の機能ユニットとコンパーチブルとなっている。
【００２８】
プログラム命令ワード長さが異なる２つの命令セットを使用することにより、より長いワードを有し、潜在的によりパワフルな関連する命令を可能とする第１命令セットまたはより短いプログラム命令ワードを有し、このため、潜在的により限られた命令セットを許容できるメモリスペースをセーブできる第２命令セットのいずれかにより共通処理コア１０にプログラムすることが可能となっている。
【００２９】
命令セットフラグＴを設けたことにより第１命令セットに対し第２命令セットを非直交状態にできる。これは特に別の直交命令セットを提出し、デコードできるようにするのに用いられるフリービットを用いることなく、第１命令セットが現在の命令セットである場合に有効である。
【００３０】
命令セットフラグＴはプログラムカウンタレジスタの通常は使用されないビット内に隠されている。このことは、Ｔフラグはプログラムカウンタコントローラ１４０によりセットまたはリセットできるが、Ｔフラグのステートはメモリシステム２０および命令パイプライン８０の作動に直接影響する必要がないことを意味している。
【００３１】
図２および図３はＴビットをプログラムカウンタレジスタ内にエンコードできる２つの可能な方法を示すプログラムカウンタレジスタの略図である。これら２つの方法ではプログラムカウンタレジスタの通常使用されない高い桁（最高位）ビットとして、またはプログラムカウンタレジスタの通常使用されない低い桁（最下位）のビットとしてＴビットをエンコードする。
【００３２】
図２はＴビットがプログラムカウンタレジスタの最高の桁のビットとしてエンコードされているプログラムカウンタレジスタ１３０’の略図である。
プログラムカウンタレジスタは３２ビットレジスタであり、これにより２32バイトをメモリシステム２０内でアドレス指定できる。しかしながらこのことは、４ギガバイトのアドレス指定可能なメモリスペースに等しいので、２１ビットプログラムカウンタレジスタにより可能とされるフルアドレスレンジが必要となることは、ほとんど可能性がない。
【００３３】
従って図２におけるＴビットはプログラムカウンタレジスタ１３０’の最高の桁のビットとしてエンコードされる。これによっても２ギガバイトのメモリをアドレス指定できるが、実際には通常この数よりも少ない数のメモリがアドレス指定され、プログラムカウンタレジスタのうちの他の上位ビットは（図２に示すようにゼロにできる）。
【００３４】
解決すべき問題は、Ｔビットをセットした時、プログラムカウンタレジスタ１３０’はメモリシステム２０のアドレスレンジをはるかに越えるメモリアドレスをポイントする可能性があることである。換言すれば、プログラムカウンタレンジ１３０の３２ビットによりポイントされるメモリアドレスはメモリシステム２０に関する限り無効アドレスである。
【００３５】
この問題は２つの直接的方法によって解決できる。１つの技術ではプログラムカウンタレジスタ１３０’の最上位のビット（Ｔビット）を、メモリシステム２０の単なるアドレスビットとしては供給しない。これとは異なり、メモリシステム２０内のアドレスデコーディングが所定の数の最小の桁のビット（すなわち１６メガバイトのアドレススペースをアドレス指定するのに最小位の２４ビット）だけを検出してもよい。この場合、残りの、より高い桁のビットのステートは、デコードされるアドレスに対応する。この方法は、ある数のアドレスビットしか必要でないことが予め判っている時のメモリアドレスデコーディングの標準的技術となっている。
【００３６】
先に述べたように、Ｔビットがプログラムカウンタレジスタ１３０’からマルチプレクサ９０へ送られ、このＴビットは第１命令デコーダ１００または第２命令デコーダ１１０のいずれかへの命令のルーチングを決定する。
【００３７】
図３は、プログラムカウンタレジスタの最小位ビットとして命令セットスイッチング用Ｔビットをエンコードする第２プログラムカウンタレジスタ１３０″の略図である。
このプログラムカウンタレジスタの最下位ビットは、最小命令すなわちデータワードサイズが少なくとも２バイト（この場合１６ビット）であるプロセッサ内では、通常、使用されない。従って本実施例では命令プログラムワードは３２ビット長（４バイト）または１６ビット長（２バイト）のいずれかとなり得るので、プログラムカウンタ１３０からメモリシステム２０へ供給されるアドレスは常に２の倍数となり、よって、アドレスの最小位ビットはゼロとなる。
【００３８】
プログラムカウンタレジスタ１３０″の最小位ビットは、Ｔビットを記憶するのに使用され、このＴビットは上記のようにマルチプレクサ９０へ供給される。上記のように、プログラムカウンタレジスタ１３０″の最小位ビットは、メモリシステム２０により無効アドレスにアクセスされないように、メモリシステムへは供給されない。
【００３９】
プログラムカウンタ１３０はプログラムカウンタコントローラ１３０によって制御されるという事実によりコア１０によって実行される分岐命令の一部としてＴビットをセットできることを意味している。例えばＴビットが現在第１（３２ビット）の命令セットの使用を表示するようにセットされており、第２（１６ビット）の命令セットを使用するコードの一部への分岐を望んでいる場合、実行すべき１６ビットコードへジャンプし、同時にプログラムカウンタレジスタ内のＴビットを変更するよう、分岐命令を実行できる。特にプログラムカウンタレジスタ１３０’の最高位ビットとしてＴビットをエンコードする、図２に示される回路では、分岐命令は（ターゲットアドレスプラス10000000000000000000000000000000）への分岐によりＴビットを１にセットできる。これとは異なり、図３のプログラムカウンタレジスタ１３０″内でＴビットを１にセットするには、分岐命令は（ターゲットアドレスプラス１）への分岐の形態をとることができる。再びＴビットを０に変えるのに、同様な回路を使用できる。
【００４０】
図４に、このプロセスを略図で示す。図４は、図３のプログラムカウンタレジスタ１３０″を用いた３２ビット命令セットと１６ビット命令セットとの切り替えを示すフローチャートである。図４ではＴビットが１にセットされている時は、このことは１６ビットの命令セットを使用すべきことを意味している。
【００４１】
図４を参照すると、３２ビット命令セットで処理を開始する（２００）。種々のデータ処理演算（２１０）の後にアドレスＢadd（１）＋１へ分岐するように分岐命令２１０を実行する。アドレスＢadd（１）は１６ビット命令セットを使ったコードの一部のスタートアドレスであり、付け加えられる＋１は、Ｔビットのコードを使用すべきことを表示するＴビットの切り替えに使用される。ターゲットアドレスＢadd（１）では、１６ビット命令セットを用いて種々のデータ処理演算２３０が実行される。次に３２ビット命令セットに戻るように、分岐命令２４０が実行される。特に分岐命令２４０は３２ビットコードの一部を参照するターゲットアドレスＢadd（２）であり、このアドレスにはＴビットをゼロステートへ戻すようにゼロが加算される。ターゲットアドレスＢadd（２）では、種々のデータ処理演算２１０が実行され、処理が終了する（２６０）。
【００４２】
プログラムカウンタ１３０内のＴビットを変えることにより、２つの命令セット間の切り替えが行われると、マルチプレクサ９０による実際の切り替えが遅延され、現在、パイプライン８０内に存在している命令が可能となる。
【００４３】
要約すれば、異なる処理モード（特に異なる命令セットの使用）の切り替えは、分岐命令の実行の一部としてプログラムカウンタにターゲットアドレスおよびモードフラグ（Ｔ）を書き込むことによって行うことができる。
【００４４】
現行のプロセッサで第１命令セットを予め定義し、使用する別のケースでは、プログラムカウンタレジスタ１３０の通常使用されないビットが、命令セットによって変えられることがないように、現行の第１命令セットにおいて論理的制限があり得る。第２の別の命令セットを含むプロセッサの後方コンパーチビリティのために、第１の（現行の）命令セットから第２の命令セットへ１方向に切り替えるよう、短い命令セット選択シーケンスのコードを使用しなければならないこともある。切り替え機構が追加されると同時に、一般に第２命令セットも追加されるので、プログラムカウンタレジスタ１３０の通常使用されないビットへのアクセスを限定することなく、第２命令セットを定義できる。このことは、第２命令セットから第１命令セットへ切り替えるのに、上記分岐機構を使用できることを意味している。
【００４５】
命令セット選択シーケンス（ベニアとして知られている）の一例は次の通りである。
【００４６】
【表１】
ラベル ベニア
ＸＯＲ          （ＰＣ，１）
分岐              ラベル
【００４７】
このルーチンでは、図３のプログラムカウンタレジスタ１３０″の現在の内容を１と排他的ＯＲ演算し、Ｔビットを１にセットする。（これとは異なり、図２のプログラムカウンタ１３０’を用いて現在の内容を10000000000000000000000000000000と排他的ＯＲ演算し、Ｔビットをセットすることもできる。）
【００４８】
別のベニアルーチンでは、排他的ＯＲ演算の代わりに減算演算を用い、プログラムカウンタレジスタ１３０″のＴビットを変えることができる。この方法は、あるプロセッサでは減算演算により命令パイプライン８０をフラッシュすなわちクリアできるという利点もある。
【００４９】
次の例は、プログラムカウンタ１３０″が現在の命令を８ビットだけ越えてポイントし、現在の命令が３２ビット（４バイト）の命令であると仮定したものである。従ってプログラムカウンタレジスタ１３０″の最小位ビットを１に変えるには、現在プログラムカウンタレジスタの内容に対して次の値を加減する必要がある。
【００５０】
【表２】
１を加算      （Ｔビットを１へ変更するため）
８を減算      （カレント命令の前をポイントしているプログラムカウンタを補償するため）
４を加算      （カレント命令の長さを補償するため）
．．．．
３を減算      （全体の変更）
．．．．
【００５１】
従って使用される命令シーケンスは次の通りとなる。
【００５２】
【表３】
ラベル ベニア
ＳＵＢ    （ＰＣ，ＰＣ，３）    （ＰＣをＰＣ−３と置換）
分岐        ラベル
【００５３】
要約すれば、命令セットしてビットを記憶するためにプログラムカウンタを使用することには、少なくとも次のような利点がある。
１．ターゲットアドレスと単一マシンワード内の対応する命令セットの双方を表示することにより、ターゲットルーチンを識別する１つの均一な方法が得られる。
２．より少ない数のシーケンスで足りるので、コードサイズが小さくなる。
３．各命令内セットルーチンの呼び出しごとにシーケンスを実行することが不要となるので、プロセッサの性能を向上させることができる。
【００５４】
以上で添付図面を参照して本発明の図示した実施例について説明したが、本発明はこれら実施例のみに限定されるものでなく、当業者であれば特許請求の範囲に記載した発明の要旨から逸脱することなく、種々の変形および変更が可能であると理解すべきである。
【図面の簡単な説明】
【図１】プロセッサコアおよびメモリシステムを有するデータ処理装置の略図である。
【図２】プログラムカウンタレジスタの略図である。
【図３】プログラムカウンタレジスタの略図である。
【図４】図３のプログラムカウンタレジスタを用いた２つの命令セットの切り替えを示す略フローチャートである。
【符号の説明】
１０  レジスタバンク
２０  メモリシステム
４０  ブース乗算器
５０  バレルシフタ
６０  ３２ビットＡＬＵ
７０  書き込みデータレジスタ
１００、１１０  命令デコーダ
１３０  プログラムカウンタレジスタ
【図１】
0003683230.tif 000002
【図２】
0003683230.tif 000003
【図３】
0003683230.tif 000004
【図４】
0003683230.tif 000005