(57)【要約】本発明の実施形態は、レジスタバンク（５０）に多数のレジスタを有するプロセッサ（２２）である。前記レジスタは、共通のレジスタ名を有する汎用レジスタ（５２ａ）とスタックポインタレジスタ（５２ｂ）とを有している。プロセッサ（２２）は、共通のレジスタ名を参照するプログラム命令を実行するために、プログラミングに対応する論理を有している。この命令は、第１の条件下で汎用レジスタ（５２ａ）を用い且つ第２の条件下でスタックポインタレジスタ（５２ｂ）を用いて実行される。したがって、特定の条件の成立に基づいて、同じ名前によって識別される複数のレジスタに選択的にアクセスすることができる。
2004520662.tif 000002
【特許請求の範囲】
【請求項１】
２つ以上のレジスタを有するプロセッサを動作させ、前記レジスタは、共通のレジスタ名を有する汎用レジスタとスタックポインタレジスタとを有し、
プログラミング命令を用いて前記レジスタ名を参照し、
第１の条件下で汎用レジスタを用い且つ第２の条件下でスタックポインタレジスタを用いてプログラミング命令を実行することを特徴とする方法。
【請求項２】
所定の状態値が前記参照に対する必須条件として与えられるとともに、プログラミング命令が前記汎用レジスタを用いて実施可能な様々な命令タイプの所定のサブセットのうちの１つである場合に、前記第２の条件が定められることを特徴とする請求項１に記載の方法。
【請求項３】
前記第２の条件が定められる度に、命令性能のための予め定めた命令量制限をスタックポインタレジスタに与えることを特徴とする請求項１に記載の方法。
【請求項４】
前記予め設定された命令制限量が１つであることを特徴とする請求項３に記載の方法。
【請求項５】
プロセッサ動作の共通のモードで、前記汎用レジスタを用いて、ユーザプログラムを実行し、
割り込みに応じて前記スタックポインタレジスタを用いて規定された前記メモリスタックに汎用レジスタの状態を保存し、
前記保存の後、プロセッサ動作の割り込みモードで、前記汎用レジスタを用いて割り込みルーチンを実行し、
前記スタックポインタレジスタを用いて割り込みを実行することにより、前記汎用レジスタの状態をリストアすることを特徴とする請求項１〜４のいずれか一項に記載の方法。
【請求項６】
前記第１の条件は、状態ビットの第１の状態に対応しており、前記第２の条件は、状態ビットの第２の状態に対応しており、前記第２の状態が前記第１の状態と逆であることを特徴とする請求項１から４のいずれか一項に記載の方法。
【請求項７】
第１のレジスタおよび第２のレジスタを有するプロセッサを動作させ、前記第１のレジスタおよび前記第２のレジスタは共通のレジスタ名によって識別され、
所定の条件が定められない場合には、前記第１のレジスタを用いて共通のレジスタ名を参照する多数の命令を実行し、
所定の条件が定められる度に、前記第１のレジスタの代わりに第２のレジスタを用いて命令を実行するために、予め設定された命令制限量を与えることを特徴とする方法。
【請求項８】
前記予め設定された命令制限量が１つであることを特徴とする請求項７に記載の方法。
【請求項９】
前記所定の条件は、前記第２のレジスタを用いて命令を実行するための必須条件として与えられる所定の状態値に対応していることを特徴とする請求項７に記載の方法。
【請求項１０】
前記所定の条件は、状態レジスタビット状態に基づいていることを特徴とする請求項７に記載の方法。
【請求項１１】
前記第２のレジスタを用いてスタックポインタを規定するとともに、前記スタックポインタに基づいて前記第１のレジスタのコンテンツをメモリスタックに送り且つ第１のレジスタのコンテンツをメモリスタックから送ることを特徴とする請求項７から１０のいずれか一項に記載の方法。
【請求項１２】
多数のレジスタを有するプロセッサを備え、前記レジスタは、共通のレジスタ名を持つ汎用レジスタとスタックポインタレジスタとを有し、プロセッサは、第１の条件下で前記汎用レジスタを用い且つ第２の条件下で前記スタックポインタレジスタを用いて共通のレジスタ名を参照するプログラム化された命令を実行するためにプログラミングに対応する論理を有することを特徴とする装置。
【請求項１３】
前記プロセッサに接続されたメモリを更に備え、さらに、前記論理は、プログラミングに対応して、メモリポインタを前記スタックポインタレジスタに保存するとともに、前記メモリポインタを用いて指定されたメモリ内に規定されたスタックに前記レジスタのコンテンツを送り且つこのコンテンツを前記スタックから送ることを特徴とする請求項１２に記載の装置。
【請求項１４】
前記プロセッサは、集積回路デバイスの形態を成していることを特徴とする請求項１２に記載の装置。
【請求項１５】
前記プロセッサは、レジスタに接続された演算／論理ユニットを有していることを特徴とする請求項１９に記載の装置。
【請求項１６】
前記論理は、さらに、前記第１の条件が満たされている場合に、それぞれが、前記汎用レジスタへのアクセスを許容する前記プロセッサの多くの異なる動作モードを規定するように動作可能であることを特徴とする請求項１２〜１５のいずれか一項に記載の装置。
【請求項１７】
レジスタが状態レジスタを有し、前記第１の条件は、状態レジスタのビットの前記第１の状態に対応しており、前記第２の条件は、前記状態レジスタのビットの第２の状態に対応しており、前記第１の状態が前記第２の状態と逆であることを特徴とする請求項１２〜１５のいずれか一項に記載の装置。
【請求項１８】
前記論理は、前記第１の条件が定められる度に、前記スタックポインタレジスタを用いて命令を実行するための所定の命令制限量を与えるように動作可能であることを特徴とする請求項１２〜１５のいずれか一項に記載の装置。
【発明の詳細な説明】
【０００１】
（発明の背景）
本発明は、プログラム可能装置および／またはプログラミング方法に関する。特に、本発明は、同じプログラミング識別子を有するプログラム可能デバイスの複数のレジスタに選択的にアクセスするための技術に関するが、これに限られない。
【０００２】
デジタルプロセッサおよび他のプログラム可能デバイスは、しばしば、個別にアクセス可能なハードウェアレジスタを有している。一般に、各レジスタは、固有のアセンブリ言語プログラミング名、すなわち、そのようなレジスタをオペランドとして使用するために対応するアセンブリ言語命令によって参照可能な「論理識別子」を有している。これに対し、低レベル実行可能形式にしたがった高レベルのアプリケーションプログラムは、ある程度まで、一般に、適切な演算のための所定のレジスタ構成によって決まる。
【０００３】
時々、プロセッサのレジスタ構成を変更することが望ましい。１つの一般的な例において、利用可能なレジスタの総数は、更に能力がある「次世代」プロセッサを設計する努力の一端として増大される。他の例においては、既存の設計を修正する結果、１以上のハードウェアレジスタを追加する可能性がある。これらの努力に付随するものは、既に存在するプログラムとの互換性を維持するという目的である。
【０００４】
したがって、プログラム可能デバイスのレジスタ構成に変更を行なうための新たな方法が現在において必要である。
【０００５】
（発明の概要）
本発明の一実施形態は、複数のレジスタを使用する固有の技術である。本発明の他の実施形態は、共通のレジスタ名すなわち識別子を有するレジスタにアクセスする固有の装置、方法、システム、装置を含んでいる。
【０００６】
本発明の更なる実施形態は、レジスタ名を共通に持つ第１のレジスタおよび第２のレジスタを有するプログラム化できるデバイスの動作を含んでいる。この名前は、プログラミング命令において参照される。プログラミング命令は、第１の条件が満たされる場合、第１のレジスタを用いて実行され、第２の条件が満たされる場合、第２のレジスタを用いて実行される。
【０００７】
また、更なる実施形態は、多数のレジスタを有するプロセッサを動作させ、レジスタは、レジスタ識別子を共通に持つ汎用レジスタとスタックポインタレジスタとを有し、プログラミング命令を用いてこの識別子を参照し、所定の条件に基づいてスタックポインタレジスタおよび汎用レジスタの一方を用いてプログラミング命令を実行する。
【０００８】
他の実施形態において、プロセッサは、共通の識別子を持つ第１のレジスタおよび第２のレジスタを有している。この識別子は、第１の条件下で第１のレジスタを用い且つ第２の条件下で第２のレジスタを用いて実行されるプログラミング命令によって参照される。第１の条件および第２の条件はそれぞれ、プロセッサを動作する共通のモード中に確立することができる。一形態においては、第１のレジスタが汎用タイプであり、第２のレジスタがスタックポインタを形成する。
【０００９】
本発明の更に他の実施形態の場合、プロセッサは、レジスタ名を共通に持つ第１のレジスタおよび第２のレジスタを含む２つ以上のレジスタを有している。第１の条件下で、この名前は、第１のレジスタのメモリ空間に１つのポインタをロードするために参照される。第２の条件下でレジスタ名を参照して第２のレジスタのコンテンツを変更する他のプログラミング命令が実行される。これらのコンテンツは、第１のレジスタを用いて与えられたポインタに基づいて、メモリ空間内に記憶される。
【００１０】
更に他の実施形態は、同じプログラミング識別子を持つ２つ以上のレジスタを有するプログラム可能デバイスを含んでいる。プログラミング命令によってこの識別子が参照されると、条件／状態に基づくアクセスのために、レジスタのうちの１つが選択される。レジスタのうちの１つへのアクセスは、他のレジスタよりも制限される。この制限は、より制約されたレジスタで実行されうるタイプの命令に関する条件または状態および／または制限の各成立のためのより制限されたレジスタで実行される命令量の制限でありうる。
【００１１】
本発明の更なる実施形態においては、同じレジスタ名によって共に識別されるデフォルトのレジスタおよび代替レジスタを有するプログラム可能デバイスが動作される。所定の条件が定められない場合には、規定のレジスタを用いてこの名前を参照する多くの命令が実行される。この条件の設定の度に、規定のレジスタの代わりに代替レジスタを用いて命令を実行するために、所定の命令量の制限が与えられる。一形態において、この量制限はたった１つの命令であり、これにより、代替レジスタを用いて各命令を実行するために、所定の条件を再設定する必要がある。
【００１２】
更なる実施形態は、プロセッサによる実行のためにプログラミング命令を伝える装置に関するものである。プロセッサは、レジスタ名を共通に持つ汎用レジスタおよびスタックポインタレジスタを有している。プログラミング命令は、スタックポインタアクセス条件を定め、この条件の成立に応じてレジスタ名を参照することによりスタックポインタレジスタにメモリポインタをロードし、レジスタ名を参照してスタックポインタアクセス条件と異なる動作条件で汎用レジスタを用いてユーザルーチンを実行し、スタックポインタレジスタアクセス条件を再設定するとともに、割り込みに応じてポインタに基づき汎用レジスタのコンテンツをメモリ内に記憶し、汎用レジスタを用いて割り込みルーチンを実行し、割り込みルーチンの実行後にポインタに基づいて汎用レジスタのコンテンツをメモリからリストアするように実施可能である。
【００１３】
したがって、本発明の１つの目的は、複数のレジスタを使用する固有の技術を提供することである。
【００１４】
本発明の他の目的は、共通の名前を有する複数のレジスタに関与する固有のデバイス、方法、システム、装置を提供することである。
【００１５】
本発明の更なる目的、実施形態、形式、特徴、利点、効果は、明細書本文及びこれに含まれる図面から明らかとなる。
【００１６】
（特定の実施形態の詳細な説明）
本発明は、多くの様々な形態で具体化することができるが、本発明の原理の理解を促すため、図面に示された実施形態を参照するとともに、この実施形態を説明するために特定の専門用語を使用する。しかしながら、無論、それによって本発明の範囲が限定されるものではない。また、本発明の関連技術の当業者が普通に考えるように、ここで説明する実施形態を任意に変更したり更に改良することも考えられ、また、ここで説明する本発明の原理における任意の更なる用途も考えられる。
【００１７】
本発明の一実施形態において、プロセッサは、同じアセンブリ言語識別子によって参照される汎用レジスタおよびスタック・ポインタ・レジスタを有している。この識別子が１つのアセンブリ言語命令によって参照されると、参照に対する必須条件として所定のプログラム演算状態が形成されていない場合、汎用レジスタを用いて命令が実行される。さもなければ、スタック・ポインタ・レジスタへのアクセスおよびスタック・ポインタ・レジスタを用いた実行は、汎用レジスタを用いて行なうことができる命令の一部に抑えられ或は制限される可能性がある。また、これに加えて、あるいは、これに代えて、動作状態が定められる度に、スタック・ポインタ・レジスタを用いて命令を実行する際、所定の命令制限量が課されても良い。
【００１８】
図１は、本発明の他の実施形態の処理システム２０を示している。処理システム２０は、プロセッサ２２と、メモリ２４と、周辺回路２６とを有している。プロセッサ２２は、データバスＤおよびアドレスバスＡによってメモリ２４に動作可能に接続されるとともに、標準的な態様でメモリ２４と連動するように配置されている。プロセッサ２２は、図１に概略的に示される多数の論理演算子２８を有している。演算子２８はメモリ読み取り論理３０を有している。このメモリ読み取り論理３０は、データバスＤに接続されて、更なる処理を実行できるまでメモリ２４からロードされた情報を選択的に受けて保持する。この情報は、実行可能なマイクロコード形式でプロセッサ２２のプログラム命令を含んでいる。一実施形態において、読み取り論理３０は、命令を先取りして命令パイプラインを形成するような演算が可能である。これに加えて、あるは、これに代え、読み取り論理３０を用いて他のデータ形式を記憶し且つメモリ２４から読み取ることができる。読み取り論理３０は、１以上のレジスタ、レジスタファイル、キャッシュおよび／またはデータや命令を予備的処理するように動作可能な他のローカル高速メモリ構成を有していても良い。
【００１９】
また、演算子２８は、周辺回路２６に動作可能に接続されたデコード・制御論理３２を有している。デコード・制御論理３２は、読み取り論理３０から受けた命令をデコードして、プロセッサ２２の演算を適切な状態で指揮するとともに、プロセッサ２２の他の演算子２８に対して制御信号を方向付ける。これらの制御関係が、矢印を伴う接続ラインで概略的に示されている。これに加えて、あるは、これに代え、デコード・制御論理３２は、回路２６からの入力に応答し、それに応じてプロセッサ２２の演算を指揮する。また、デコード・制御論理３２は、様々な状態を形成して、回路２６が応答する出力を制御することができる。限定されない一例として、プロセッサ２２から回路２６への出力は、当業者が考えるように、プロセッサのモード状態、メモリインタフェース、デジタル・アナログ（Ｄ／Ａ）変換、コプロセス（相互処理）、データ通信および／または、１以上の様々な出力信号タイプに関与していても良い。回路２６からプロセッサ２２への入力は、当業者が考えるように、１以上のハードウェア割り込み、プロセッサリセットおよび／またはサスペンド演算信号、１以上のクロック信号またはタイミング信号、１以上のプロセッサ・コンフィギュレーション信号、アナログ・デジタル（Ａ／Ｄ）変換信号、データ通信信号および／または、１以上の様々な入力信号タイプを含んでいても良い。
【００２０】
プロセッサ２２においては、デコード・制御論理３２に応答する多数の他の演算子２８が示されている。これらの演算子２８には、前述した読み取り論理３０の他、書き込み論理３４と、アドレス論理３６と、演算論理ユニット（ＡＬＵ）３８と、レジスタバンク５０とが含まれる。書き込み論理３４は、プロセッサ２２からメモリ２４にデータを書き込むために設けられており、出力のためのデータを保持する１以上のレジスタを有していても良い。アドレス論理３６は、読み取り論理３０および書き込み論理３４をそれぞれ用いた読み取り・書き込み演算においてアドレスバスＡ上にアドレスを与えるための１以上のレジスタを有している。また、アドレス論理３６は、必要に応じてアドレスを増減する論理を有していても良い。ＡＬＵ３８は、デコード・制御論理３２によってデコードされた命令にしたがって、メモリ２４および／またはレジスタバンク５０から供給されたデータに関して算術および論理演算を行なう。レジスタバンク５０は、図２および図３に基づいて後述するように、様々な汎用レジスタおよび専用レジスタから成る。
【００２１】
図示のように、プロセッサ２２は、集積回路デバイス４０の形態を成している。また、プロセッサ２２は、２つ以上の構成要素および／または様々な種類の構成要素から成っていても良い。プロセッサ２２は、アナログ回路、デジタル回路、あるいは、これらの組み合わせを有していても良い。プロセッサ２２の演算は、ソフトウェア、ファームウェアおよび／またはハードウェアに組み込まれた専用のステートマシン形式の論理を用いて、少なくとも部分的にプログラムされていても良い。一実施形態において、プロセッサ２２は、アドバンストＲＩＳＣマシン社から提供されるプロセッサのＡＲＭ７またはＡＲＭ９シリーズの３２ビットの縮小命令セット・コンピュータ（ＲＩＳＣ）として動作するように設けられている。
【００２２】
メモリ２４は、固体電子タイプの１以上の部品を備えていても良く、また、これに加え、あるいは、これに代えて、他のタイプのもの、例えば数例を挙げると、磁気または光学といったタイプのものを有していても良い。例えば、メモリ２４は、固体電子ランダムアクセスメモリ（ＲＡＭ）、連続アクセス可能メモリ（ＳＡＭ）（例えば、先入れ先出し（ＦＩＦＯ）系、または、後入れ先出し（ＬＩＦＯ）系）、プログラム可能読み出し専用メモリ（ＰＲＯＭ）、電気的プログラム可能読み出し専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）、光ディスクメモリ（例えばＣＤ  ＲＯＭ）、磁気的にエンコードされたハードディスク、フロッピーディスク、テープ、カートリッジ媒体、あるいは、これらのタイプの任意の組み合わせを有していても良い。また、メモリ２４は、揮発性、非揮発性であっても良く、あるいは、揮発性と非揮発性とのハイブリットな組み合わせであっても良い。
【００２３】
プロセッサ２２は、複数の考えられる動作モードで命令を実行することができる。この場合、１つのモードが一時に作動する。１つのモードから他のモードへの変更は、当業者が考えるように、一般に、プログラミング、外部割り込み、または、他の例外処理によって生じる。プロセッサ２２の様々な動作モードは、ユーザルーチンを実行するユーザモードと、システム管理ルーチンを実行するためのスーパーバイザーモード等の１以上の特権モードと、割り込み処理ルーチンを実行するための１以上の割り込みモードとを含んでいる。一般に、特権モードがトリガーされ、これによって、ユーザモードでユーザプログラムまたはルーチンが実行される際に生じる例外を処理するように、アプリケーションが設けられる。
【００２４】
図２に示されるように、レジスタバンク５０は、汎用レジスタセット５２を有している。
【００２５】
レジスタセット５２の構成要素は、ユーザモードと１以上の特権モード等のプロセッサ２２の２つ以上の動作モード間でアクセスすることができる汎用ハードウェアレジスタである。セット５２の各ハードウェアレジスタは、プログラミング識別子、すなわち、シリーズＲ０、Ｒ１、．．．．．．Ｒｎに対応する名前で示されている。この場合、ｎはインデックス整数であり、セット５２の汎用レジスタの総数はｎよりも大きい数である。ＡＲＭ７  ＲＩＳＫプロセッサに基づく実施形態の場合、汎用レジスタオペランドＲ０からＲ７は、全ての動作モードに共通であり、また、レジスタオペランドＲ８からＲ１２は、１つのモードを除く全てに共通である。
【００２６】
アセンブリレベルプログラミングの場合、所定のレジスタのプログラミング名、例えば「Ｒ０」は、アセンブリ命令によって参照され、これによって、対応するハードウェアレジスタがプログラムオペランドとして使用される。無論、モードが変更される場合、レジスタセット５２中のレジスタのコンテンツは、次のモードでアクセスして変更することができる。したがって、幾つかの実施形態においては、１以上の汎用ハードウェアレジスタのコンテンツをモード変更の一部として保存するために、メモリスタックが形成される。１つの一般的な例においては、ユーザモードで実行するルーチンが中断され、特権モードで割り込み処理を実行する。この例の場合、割り込み処理は、一般に、汎用レジスタのユーザモード状態をメモリスタック内に保存するとともに、割り込みを行ない、メモリスタックから汎用レジスタのユーザモード状態をリストアし、ユーザモードに戻してユーザルーチンを再開する。
【００２７】
また、レジスタバンク５０は、プライベートレジスタセット５４を有している。レジスタセット５４の各構成要素は、プロセッサ２２の特定の動作モードに固有のものである。レジスタセット５４の構成要素は、一般に、シリーズＲｍ、Ｒｍ＋１、．．．．、Ｒｐ（ｍ＝ｎ＋１）にしたがって名付けられ、各動作モードに専用のレジスタを区別するために幾つかの更なる名称を含んでいても良いが、共通の数値表示を有している。例えば、ＡＲＭ７という名称は、様々な動作モード毎にプライベート「Ｒ１３」レジスタを示すために、Ｒ１３、Ｒ１３ ｆｉｑ、Ｒ１３ ｓｖｃ、Ｒ１３ａｂｔ、Ｒ１３ ｉｒｑ、Ｒ１３ ｕｎｄを使用する。プライベート‘Ｒ１４’レジスタにおいても同様の表示が使用される。
【００２８】
したがって、セット５２内の異なるレジスタ、セット５４のプライベートレジスタのコンテンツは、保存してメモリスタックから状態をリストアする必要なく、保護される。
【００２９】
レジスタ５６は、全てのモードに共通で且つ一般的な方法で使用される標準的なプログラムカウンタ（ＰＣ）レジスタである。一般状態レジスタ５８（あるいは、所定のレジスタＳＲ）は、プロセッサ２２の現在使用中の動作モードで実行するプログラムを反映する動作および様々な条件の状態を与える。一般状態レジスタ５８は、全てのプロセッサ動作モードによって共有される。また、レジスタバンク５０には、動作の特権モードのそれぞれのための固有状態保存レジスタ（ＵＳＲ）を有するレジスタセット５９が設けられている。レジスタセット５９の構成要素はそれぞれ、１つのモードから次のモードに切り換わる時に一般状態レジスタ５８のコンテンツを保存するように構成されている。したがって、セット５９内のレジスタは、特定の状況下で先に実行されたモードに戻る際に、状態レジスタＳＲをリストアする。ＡＲＭ７の実施形態の場合、レジスタ５８は、オペランド名ＣＰＳＲによって示され、また、レジスタセット５９の構成要素は、ＳＰＳＲ ｆｉｇ、ＳＰＳＲ ｓｖｃ、ＳＰＳＲ ａｂｔ、ＳＰＳＲ ｉｒｑ、ＳＰＳＲ ｕｎｄによって示される。
【００３０】
特定の場合、動作を促進するためには、１以上の別個のレジスタが望ましいことが分かっている。また、既存のレジスタと同じ名前によって命令をプログラムする際に、この別個のレジスタを参照することができることも分かっている。所定の動作モードにおいて、既存のレジスタは１つの状況下で参照されるが、スタックポインタレジスタは、異なる状況下で参照される。１つの形態においては、既存のレジスタが汎用タイプであり、加えられたレジスタは、セット５２の汎用レジスタを保存してリストアするための専用のスタックポインタとして設けられる。このような構成は、メモリスタックを参照して汎用レジスタコンテンツを保存および／または読み込んだりする専用のスタックポインタが存在しない幾つかの実施形態において望ましい。
【００３１】
図４は、そのような実施形態を実現するための詳細を示している。図４に示されるように、レジスタバンク５０は、汎用レジスタ５２ａと、レジスタセット５２に対応するスタックポインタ（ＳＰ）レジスタ５２ｂとを備えている。レジスタ５２ａ、５２ｂはそれぞれ、プロセッサ２２の異なるハードウェアレジスタとして設けられており、共通のアセンブリ言語プログラミング名Ｒ０によって参照される。無論、他の実施形態においては、異なる名前を選択することができる。プログラム命令によってレジスタ名Ｒ０が参照されると、通常、スタックポインタレジスタ５２ｂへのアクセスを示すために状態レジスタ５８に１ビットが設定されていない場合には汎用レジスタ５２ａがアクセスされる。したがって、状態ビットの２つの状態は、２つの状況を与える。この場合、１つの状況は、汎用レジスタ５２ａを用いてＲ０への命令参照を実行できる状況であり、他の状況は、スタックポインタレジスタ５２ｂを用いてＲ０への命令参照を実行できる状況である。
【００３２】
また、スタックポインタレジスタ５２ｂを用いてＲ０を参照する命令を実行できる状況は、命令のタイプによって決まる。具体的には、汎用レジスタ５２ａを用いて実施可能なプログラミング命令の一部だけが、状態ポインタレジスタ５２ｂを用いて実施可能である。この一部には、ロード・マルチプル・レジスタ（ＬＤＭ）命令、ストア・マルチプル・レジスタ（ＳＴＭ）命令、ムーブ・レジスタ（ＭＯＶ）命令が含まれる。この場合、デコード・制御論理３２のＬＤＭ状態マシン３２ａ、ＳＴＭ状態マシン３２ｂ、ＭＯＶ状態マシン３２ｃがそれぞれ図４に示されている。これらの表示は、ＡＲＭの実施形態における同様の命令記憶術と一致している。状態マシン３２ａ、３２ｂ、３２ｃは、状態レジスタ５８に接続され、対応する前述したスタックポインタアクセスビットにアクセスする。レジスタ５２ａ、５２ｂ間での状態マシン３２ａ、３２ｂ、３２ｃの選択性を表わすために、図４にはスイッチ６０が示されている。他の実施形態においては、多数または少数の命令を有する異なる命令サブセットを使用して、スタックポインタレジスタ５２ｂにアクセスでき、あるいは、そのような限定が存在し得ないことは言うまでもない。
【００３３】
図３Ａおよび図３Ｂの手続き１２０は、マルチプロセッサ動作モードでのレジスタ５２ａ、５２ｂの一実施形態を示している。手続き１２０は、初期設定ルーチン１３０で開始される。ルーチン１３０では、工程１３２において状態レジスタ５８で所定ビットを設定することにより、スタックポインタレジスタ５２ｂへのアクセスが可能となる。工程１３４では、メモリ２４内の所定のメモリスタック空間へのポインタとして機能するべく、メモリ場所がスタックポインタレジスタ５２ｂにロードされる。工程１３４では、汎用レジスタ５２ａの代わりにスタックポインタレジスタ５２ｂをロードするため、ＭＯＶ状態マシン３２ｃが使用される。他の実施形態においては、汎用レジスタ５２ａのコンテンツもスタックポインタレジスタ５２ｂと同じ方法で状態マシン３２ｃにより変更される。ＡＲＭ７の実施形態の場合、ＡＲＭ７状態レジスタＣＰＳＲの例えば２４ビットといった確保された状態レジスタビットを使用して、実行が汎用レジスタ５２ａを用いて行なわれるのか或はスタックポインタレジスタ５２ｂを用いて行なわれるのかを決定することができる。この実施においては、命令ＭＳＲ ＣＰＳＲ ｆｌｇ、＃０ｘ０１００００００にしたがって状態レジスタＣＰＳＲを設定することにより、工程１３２を実行することができ、また、以下のようなムーブレジスタ命令、すなわち、ＭＯＶ  Ｒ０，＃Ｓｔａｃｋ Ｌｏｃａｔｉｏｎを用いて工程１３２を実行することができる。ここで、「Ｓｔａｃｋ Ｌｏｃａｔｉｏｎ」は、ポインタとしてロードされるアドレスを示している。
【００３４】
工程１３４から、条件節１３６に達する。スタックポインタレジスタ５２ｂへアクセスできるように状態レジスタ５８が設定される度に、実行が汎用レジスタ５２ａに自動的に切換復帰する前に、限られた量の命令だけを実行することができる。条件節１３６は、この命令量の限界を検査する。限界量に達していない場合には、工程１３８に移行する。工程１３８では、次の命令がレジスタＲ０を参照し且つ状態マシン３２ａ、３２ｂ、３２ｃのうちの１つに対応するタイプである場合に、その命令がスタックポインタレジスタ５２ｂを用いて実行されるといった条件下で、次の命令を実行する。次の命令が実行された後、ルーチン１３０は、再び戻って、条件節１３６を用いて命令量の限界を検査する。限界量に達すると直ちに、初期設定ルーチン１３０が終了する。一実施形態において、命令量の限界は、１つの命令だけに対して予め設定される。これにより、条件節１３６が真となる前に、１つの命令だけを実行することができる。この実施形態の場合、条件節１３６は、常に、工程１３４の後に真となり、これにより、工程１３８は決して実行されない。他の実施形態においては、当業者であれば分かるように、異なる命令限界量および／または実行を制限する異なる方法を使用することができる。
【００３５】
手続き１２０は、ルーチン１３０から、ユーザモードルーチン１４０へと続く。ルーチン１４０において、工程１４２は、スタックポインタレジスタ５２ｂの代わりに汎用レジスタ５２ａを用いて、共通のレジスタ名Ｒ０を参照する各命令が実行されることを示している。ルーチン１４０は、工程１４２から、プログラムが終了したか否かを検査する条件節１４４へと続く。プログラムが終了した場合には、手続き１２０が中断される。条件節１４４の検査によってプログラムが終了していない場合には、条件節１４６へと移行する。ここでは、特権動作モードへの変更が成されたか否かを検査する。条件節１４６の検査が真でない場合、ルーチン１４０は、工程１４２にループバックし、スタックポインタレジスタ５２ｂの代わりにレジスタＲ０への各命令参照を用いて、汎用レジスタ５２ａにアウセスし続ける。条件節１４６の検査が真である場合には、ルーチン１４０が終了する。
【００３６】
特に図３Ｂに示されるように、手続き１２０は、ルーチン１４０から、割込み処理ルーチン等の特権モードルーチン１５２へと続く。ルーチン１５０は、ルーチン１３０に関して前述した工程１３２でのレジスタ名Ｒ０に対する次の参照のため、汎用レジスタ５２ａの代わりにスタックポインタレジスタ５２ｂへアクセスできることにより開始される。ルーチン１５０は、工程１３２から工程１５４へと移行する。工程１５４では、スタックポインタレジスタ５２ｂによって指定されたメモリスタックに所定数の汎用レジスタセット５２が保存される。ＳＴＭ状態マシン３２ｂを使用して工程１５４を実行し、工程１５４では、スタックポインタレジスタ５２ｂを使用してメモリスタック空間にアドレスをとる（スタックを指定する）とともに、指定された場合には汎用レジスタ５２ａを含む所定のレジスタのコンテンツをスタックに記憶する。また、１つのＡＲＭ７の実施において、状態マシン３２ｂは、リストアップされた任意のレジスタを記憶する前に、ＳＰＳＲ状態レジスタを記憶するとともに、スタックポインタレジスタ５２ｂへの「ライトバック」を行なって、そのコンテンツを自動的に調整し、選択されたスタックアドレス管理フォーマットにしたがって新たな記憶場所を指定する。ＡＲＭ７の実施においては、以下の命令を使用して、Ｒ０によっても示される汎用レジスタ５２ａのコンテンツ、すなわち、ＳＴＭＩＡ  Ｒ０，｛Ｒ０−Ｒ１４｝を含むレジスタセット全体を保存することができる。
【００３７】
ルーチン１５０は、工程１５４から、ルーチン１３０に関して前述した条件節１３６へと再び移行する。条件節１３６の検査結果が否定的である場合、ルーチン１３０において説明したように次の命令が実行される。条件部１３６の検査結果が肯定的である場合、ルーチン１５０は工程１５６へと続く。工程１５６においては、スタックポインタレジスタ５２ｂの代わりに汎用レジスタ５２ａを用いて、Ｒ０に対する各参照が実行される。工程１５６から、特権モード動作が終了したか否かを検査する条件節１６４へと移行する。条件節１６４での検査結果が否定的である場合、ルーチン１５０は工程１５６にループバックする。条件節１６４での検査結果が肯定的である場合、ルーチン１５０は、スタックポインタレジスタ５２ｂへのアクセスを再び可能とすべく、前述した工程１３２へと移行する。ルーチン１５０は、この２度目の工程１３２の後、工程１６８へと移行する。工程１６８では、ＬＤＭ状態マシン３２ａを用いて実行されるロードマルチプル命令を使用して、工程１５４中にメモリスタックに保存された汎用レジスタセット５２のコンテンツがリストアされる。ＬＤＭ状態マシン３２ａは、スタックポインタレジスタ５２ａのコンテンツを使用してメモリスタックを指定するとともに、指定されている場合には汎用レジスタ５２ａのコンテンツを含む汎用レジスタの所定のリスト内容をメモリスタックからロードする。１つのＡＭＲ７の実施においては、リストアップされたレジスタの前に、ＳＰＳＲレジスタが最初にロードされ、スタックポインタレジスタ５２ｂに対する所定のスタックアドレス管理スキームにおいてライトバックが実行される。このＡＲＭ７の実施の場合、工程１６８を実行する命令は、以下の通りである。すなわち、ＬＤＭＩＡ  Ｒ０，｛Ｒ０−Ｒ１４｝である。ルーチン１５０は工程１６８から終了し、これにより、ユーザモード動作の先の状態がリストアされる。したがって、初期設定ルーチン１３０が再び開始され、条件節３６の命令限界検査が実行された後、ルーチン１４０におけるユーザモード動作が再開される。
【００３８】
他の実施形態において、共通のレジスタ名を有する２つ以上のレジスタに対する条件付きアクセスは、レジスタタイプおよび／または一般目的以外のレジスタタイプとスタックポインタレジスタ種との組み合わせにおいて使用される。また、更なる実施形態においては、状態レジスタビットに加えて或はそれに代えて、１以上の他の条件を使用し、共通のレジスタ名を有する多数のレジスタのうちの所定の１つを用いて命令を実行することができる。非限定的な例として、モード変更は、スタックポインタの使用を自動的にトリガすることができる。
【００３９】
また、１以上のレジスタ命令参照技術においては、様々な制限を使用することができ、あるいは、そのような制限を無くすこともできる。他の実施形態においては、複数の動作モードを有していても良く或は有していなくても良いデバイスや他のタイプのプログラム化した装置と共に、共通の識別子を有する複数のレジスタを使用することができる。これに加え、あるいは、これに代えて、本発明の更に他の実施形態においては、前述した他の特徴を用いて、本発明にしたがって、所定のレジスタへのアクセスを制限あるいは制約することができる。
【００４０】
ここで述べた任意の理論、動作機構、証拠、所見は、本発明の理解を更に深めるのに意味を持つとともに、本発明をそのような理論、動作機構、証拠、所見に制限することを意図したものではない。本発明を図示して図面および先の説明で詳細に述べてきたが、これらは単なる一例であり、特徴を限定するものではなく、所定の実施形態だけを図示して説明したにすぎず、ここに規定され或は以下の請求の範囲によって規定された本発明の思想に属する全ての等価物、変更、改良を保護することが望まれる。
【図面の簡単な説明】
【図１】
本発明に係るシステムの概略図である。
【図２】
図１のシステムのレジスタバンクの詳細を示す概略図である。
【図３Ａ】
図１のシステムを用いて実行可能な本発明に係るプロセスを示すフローチャートである。
【図３Ｂ】
図１のシステムを用いて実行可能な本発明に係るプロセスを示すフローチャートである。
【図４】
図１のシステム用のプロセッサの一部の概略図である。
【図１】
2004520662.tif 000003
【図２】
2004520662.tif 000004
【図３Ａ】
2004520662.tif 000005
【図３Ｂ】
2004520662.tif 000006
【図４】
2004520662.tif 000007
【国際公開パンフレット】
2004520662.tif 000008
2004520662.tif 000009
2004520662.tif 000010
2004520662.tif 000011
2004520662.tif 000012
2004520662.tif 000013
2004520662.tif 000014
2004520662.tif 000015
2004520662.tif 000016
2004520662.tif 000017
2004520662.tif 000018
2004520662.tif 000019
2004520662.tif 000020
2004520662.tif 000021
2004520662.tif 000022
2004520662.tif 000023
2004520662.tif 000024
2004520662.tif 000025
2004520662.tif 000026
2004520662.tif 000027
【国際調査報告】
2004520662.tif 000028
2004520662.tif 000029