(57)【特許請求の範囲】
【請求項１】
Ｎ個のレジスタと、１つの命令コードに基づき、前記Ｎ個のレジスタのうちＭ個のレジスタを選択して、タスクのコンテキストを前記Ｍ個のレジスタとメモリとの間で転送させることにより前記コンテキストの待避もしくは復帰させる制御手段とを備えた中央処理装置であって（但し、Ｍ、Ｎは自然数で、Ｍ＜Ｎ）、前記命令コードはタスク情報のアドレスを示す第１のアドレス情報、および前記Ｍ個のレジスタを選択するレジスタ選択情報を含んだ待避情報のアドレスを示す第２のアドレス情報を有し、前記制御手段は前記第１のアドレス情報により指定される前記タスク情報を参照して、前記第２のアドレス情報により指定される前記コンテキスト待避情報から前記レジスタ選択情報を選択しロードすることにより前記タスクのコンテキストを前記Ｍ個のレジスタと前記メモリとの間で転送させるようにしたことを特徴とする中央処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、コンピュータの中央処理装置に関するもので、特にコンピュータのコンテキストの待避と復帰とを高速に行なう中央処理装置に関するものである。
【０００２】
【従来の技術】
コンピュータをマルチタスクで実行する場合、タスクのスイッチングを行なう際に中央処理装置内の汎用レジスタにあるタスクＡの内容（コンテキスト）をメモリに待避させ、一方メモリ内に待避されていたタスクＢのコンテキストをメモリから復帰させて実行するという処理を行う。
【０００３】
Ｒ０〜Ｒ７の汎用レジスタを有する中央処理装置において、各汎用レジスタ内のタスクＡのデータをメモリに待避される場合、図１０のように外部メモリにレジスタＲ０〜Ｒ７に対応したコンテキスト待避領域を確保しておく。このような中央処理装置ではタスクＡの使用するレジスタがＲ０〜Ｒ７のうち一部のレジスタであっても全てのレジスタのデータが待避領域に待避されてしまう。そのため各レジスタＲ０〜Ｒ７が例えば８ビットの場合に、仮にタスクＡが使用するレジスタがＲ１、Ｒ３、Ｒ４、Ｒ６のみであったならば待避する領域は図１１のように２バイトの予備領域を含め合計６バイトの待避領域で済むのに図１０のように１０バイトの待避領域を必要をする。
【０００４】
タスクが使用しているレジスタに応じてレジスタＲ０〜Ｒ７を選択的に待避させるものとしてＤＥＣ社製ＶＡＸ１１がある。ＶＡＸ１１の場合、レジスタはＲ０〜Ｒ１５の合計１６個ある（そのうち、Ｒ１５はプログラムカウンタ用、Ｒ１４はスタックポインタ用である）。それぞれのレジスタは３２ビットで構成されている。図１２は待避させるレジスタを指定するレジスタリストの例図であり、１６ビットの値により構成される。レジスタリストのビット０〜ビット１５はそれぞれレジスタＲ０〜Ｒ１５に対応し、それが１か０かの値によって対応するレジスタを待避するか否かを指定する。例えばレジスタリストが００００  ００００  ０１０１  １０１０（２進）の値を取った場合、ビット１、ビット３、ビット４、ビット６が１なのでＲ１、Ｒ３、Ｒ４、Ｒ６のみを待避することを示す。
【０００５】
図１３はＶＡＸ１１でタスク間の実行をスイッチングする場合のメモリに記憶されるコンテキスト情報テーブル図である。例えば、タスク０〜タスクＮ（Ｎは整数）間のスイッチングを行なうときに、図のテーブル内にはタスク毎に固有のレジスタリストが設定され（図ではタスク３まで図示）、同時に待避されるタスクを識別するためにインデクスとして参照されるタスク番号が設定される。
【０００６】
図１２のレジスタリストによるレジスタの待避命令はレジスタリストの指定を通常のアドレッシングモードで行なう。このためタスク番号をインデクスとする場合、タスク番号をメモリからレジスタに一度ロードする必要がある。図１４はこのＶＡＸ１１により待避されるタスクの使用しているレジスタを待避させるためのプログラムを示す例図で、アセンブリ言語により表現されたものである。なお、図１４のメモリ１ワードは１６ビットに相当する。
以下のこのプログラムによる装置の待避動作を説明する。
【０００７】
まず始めに、図１３のタスク番号にはタスク２が指定され、タスク２レジスタリストには００００  ００００  ０１０１  １０１０（２進）が設定されているとする。
（第１行）：レジスタＲ０にある内容をメモリのＴＭＰ２番地に一時的に待避する。
（第２行）：メモリのＴＡＳＫＮＵＭ番地にあるタスク番号を３２ビットに拡張して待避されたレジスタＲ０にロードする。
（第３行）：メモリのＲＬＴＢＬ番地のコンテキスト待避情報テーブルににおいて、レジスタＲ０にロードしたタスク番号２を参照してタスク２レジスタリストをメモリのＴＭＰ１番地にコピーする。実際には中央処理装置内でＲＬＴＢＬ＋２×２（ＶＡＸ１１では８ビットで１アドレスなので１６ビットの値は２倍する必要がある）を演算して、ＲＬＴＢＬ＋４番地にあるタスク２レジスタリストを指定してコピーする。
（第４行）：第１行でＴＭＰ２番地に待避された内容をレジスタＲ０に戻す。
（第５行）：２個分のレジスタの予備領域を確保するためにスタックポインタから８を減算する。
（第６行）：レジスタＲ０〜Ｒ７のうち、第３行でＴＭＰ１番地の領域にコピーしたタスク２レジスタリストで指定されたレジスタの内容をスタックに待避する。
なお、ＶＡＸ１１では１つのレジスタが１６ビット、つまり４バイトなので源算値は２でなく８となる。
【０００８】
この結果、メモリのスタック領域には図１１のように、レジスタリストにより指定されたレジスタＲ１、Ｒ３、Ｒ４、Ｒ６のみが待避される。
【０００９】
【発明が解決しようとする課題】
上記のように、従来のコンピュータの中央処理装置でコンテキストの待避を行なう場合、複数のレジスタから任意のレジスタを選択してその内容を待避、または復帰するような命令を有さない中央処理装置では待避させる必要のないレジスタ内容の待避、復帰まで行う必要があり、その待避領域の分だけＲＡＭ容量が大きくなるという問題点が生じ、さらに不要な待避、復帰により実行時間が増大するという問題点が生じていた。
【００１０】
また、必要なレジスタのみを選択的に待避、復帰させるＶＡＸ１１では、コンテキストの待避を行なう前にタスク番号を参照するためにタスク番号をレジスタに一時移動しなければならない。そのためタスク番号を一時保持させる装置内部のレジスタの内容をメモリに一時的に待避および復帰する必要があり、これにより実行時間が増大するという問題点が生じていた。
【００１１】
この発明は上記の問題点を解決するためになされたもので、コンテキストの待避させるメモリ領域を少なくしつつ、実行時間を大幅に短縮できる中央処理装置を得ることを目的としたものである。
【００１２】
【課題を解決するための手段】
この発明による中央処理装置は、タスク情報のアドレスを示す第１のアドレス情報、およびＭ個のレジスタを選択するレジスタ選択情報を含んだ待避情報のアドレスを示す第２のアドレス情報を有する１つの命令コードに基づき、Ｎ個のレジスタのうちＭ個のレジスタを選択して、タスクのコンテキストをＭ個のレジスタとメモリとの間で転送させることによりコンテキストの待避もしくは復帰させる制御手段とを備えたものであって、その制御手段は、タスク情報を参照して、コンテキスト待避情報からレジスタ選択情報を選択しロードすることにより、上記のタスクのコンテキストをＭ個のレジスタとメモリとの間で転送させるようにしたものである（但し、Ｍ、Ｎは自然数で、Ｍ＜Ｎ）。
【００１３】
【作用】
この発明における中央処理装置によると、タスク情報のアドレスを示す第１のアドレス情報、およびＭ個のレジスタを選択するレジスタ選択情報を含んだ待避情報のアドレスを示す第２のアドレス情報を有する１つの命令コードに基づいて、タスク情報をインデクスとしてコンテキスト待避情報からレジスタ選択情報を選択しロードするようにしたので、コンテキストの待避、復帰に必要なＲＡＭ容量が小さくなり、処理速度が速くなる。
【００１４】
【実施例】
実施例１．
以下、本発明の一実施例を示す。図１は本実施例を示すマイコンの中央処理装置のブロック構成図である。図において、１はレジスタ群でＲ０からＲ７の８個の８ビットの汎用レジスタで構成されている。２は外部のメモリ、またはレジスタ（いずれも図示せず）と入出力されるデータを一時保持するメモリデータレジスタ、３はその外部メモリ、またはレジスタを指定するアドレスを一時保持し、出力するメモリアドレスレジスタ、４はコンテキストを待避、復帰するための保持領域を指定するスタックポインタ、６は演算手段である演算ユニット（以下、ＡＬＵと称す）、７、８はレジスタＲ０〜Ｒ７、メモリデータレジスタ２、一時レジスタ４、スタックポインタ５の各々からオペランドを取り出し、ＡＬＵ４に入力させるための第１オペランドバスおよび第２オペランドバスで、ＡＬＵ６はこの第１および第２オペランド７、８のそれぞれに出力された内容（オペランド）について演算を実行する。９はＡＬＵ４の演算結果を出力するデステネーションバスで、その演算結果はデステネーションバス７を介してレジスタＲ０〜Ｒ７、メモリデータレジスタ２、メモリアドレスレジスタ３、一時レジスタ４またはスタックポインタ５のいずれかにライトされる。１０はレジスタリストを保持する８ビットからなるレジスタリストレジスタ、１１はレジスタリストレジスタ１０から８ビットの出力に対して後述する図６の真理値表に従って動作するプライオリティエンコーダ、１２はプライオリティエンコーダ１１の出力を一時記憶するレジスタポインタレジスタである。
【００１５】
１３は命令の実行に応じて外部メモリ（図示せず）から随時プリフェッチされたマクロ命令を記憶する命令キュー、１４は命令キュー１３からのマクロ命令をデコードするマクロ命令デコーダ、１５は命令キュー１３の出力するマクロ命令を実行するように中央処理装置を動作させるマイクロ命令が記憶されたマイクロＲＯＭ、１６はマクロ命令デコーダ１４に従ってマイクロＲＯＭ１５のアドレスを指定するマイクロアドレスカウンタ、１７はマイクロＲＯＭ１５から読み出されたマイクロ命令をデコードし、この中央処理装置全体の動作を制御するマイクロ命令デコーダである。
【００１６】
また、１８はその指定された外部メモリ、またはレジスタとデータの入出力を行なうメモリデータバス、１９は本中央処理装置の外部のメモリ、またはレジスタを指定するためのメモリアドレスバス、２０はインクリメンタで、メモリアドレスレジスタ３の内容をＡＬＵ６での演算とは独立してインクリメントすることができる。
【００１７】
図２は図１の中央処理装置に設けられたセーブ命令とリストア命令のコードを示した命令コードの例図である。図において、２１は命令の種類、つまりセーブ命令あるいはリストア命令であることを装置に識別させるためのオペコード部、２２は後述の図４に示すタスク番号が格納されているメモリのアドレスを指定するための第１メモリアドレス部、２３は同じく図４に示すコンテキストの待避情報テーブルのアドレスを指定する第２メモリアドレス部である。
【００１８】
また、図３は本実施例の中央処理装置のレジスタリストを示す例図である。この中央処理装置のレジスタ数はレジスタＲ０〜Ｒ７の８個なので、図３のように８ビットの値でレジスタＲ０〜Ｒ７を指定する。従来例と同様、待避すべきレジスタがＲ１、Ｒ３、Ｒ４、Ｒ６である場合は０１０１１０１０（２進）が記憶される。
【００１９】
次に、図１の中央処理装置において、図２のセーブ命令、またはリストア命令を実行する場合の動作について説明する。
【００２０】
［セーブ命令の場合］
例としてタスク０〜タスクＮー１のタスク（合計Ｎ個）のうち２番目のタスク２が待避される場合を示す。図４はメモリ内のコンテキスト待避情報テーブルを示したものである。コンテキスト待避情報として、アドレスＸ１にはタスク番号、アドレスＸ２からは０〜Ｎー１番目の各々タスク毎にタスクレジスタリストとタスク待避領域サイズが８ビットの値で記憶されている。
【００２１】
今、タスク番号と、タスク２のレジスタリスト（Ｘ２＋４番地）、待避情報サイズ（Ｘ２＋５番地）には次の値が記憶されているものとする。
タスク番号：２
レジスタリスト：０１０１１０１０（２進）
待避情報サイズ：６
【００２２】
図５は図２の命令コードにより中央処理装置がセーブ命令を実行するために、マイクロＲＯＭ１５より出力されるマイクロプログラムの例図である。
【００２３】
（第１ステップ）：まず、この条件ロード命令（セーブ命令）の実行に先立ち、その前の命令を実行する最後のマイクロ命令のステップで命令キュー１３からセーブ命令のオペコード部２１がマクロ命令デコーダ１４に取り出される。マクロ命令デコーダ１４はオペコード部２１をデコードし、命令がセーブ命令であることを識別する。そして図５のマイクロプログラムの第１ステップのマイクロ命令が記憶されているマイクロＲＯＭ１５のアドレスをマイクロアドレスカウンタ１６に出力する。マイクロアドレスカウンタ１６はそのアドレスをロードし、マイクロＲＯＭ１５に出力する。マイクロＲＯＭ１２はそのアドレスに記憶されている第１のステップのマイクロ命令をマイクロ命令デコーダ１７に出力し、マイクロ命令デコーダ１７はこれをデコードし、図５の第１ステップを実行するように中央処理装置を制御する。この第１ステップでは、命令キュー１３から第１メモリアドレス部２２に書き込まれているアドレスＸ１を取り出し、第１オペランドバス７、ＡＬＵ６、デステネーションバス９を介してメモリアドレスレジスタ３にライトする。同時にマイクロアドレスカウンタ１６を１だけインクリメントする。
【００２４】
（第２ステップ）：マイクロＲＯＭ１５はこのインクリメントされたアドレスを受け、第２ステップのマイクロ命令をマイクロ命令デコーダ１７に出力する。マイクロ命令デコーダ１７はこれをデコードし、メモリアドレスレジスタ３で指定されたアドレスＸ１のメモリの内容をメモリデータバス１８を介してメモリデータレジスタ２にリードするように外部にリード要求する。すなわち、メモリデータレジスタ２には図４のコンテキスト待避情報テーブルに格納されたタスク番号がリードされる。また同様にマイクロアドレスカウンタ１６を１だけインクリメントする。この中央処理装置は次ステップ以降、上記と同様の手順でもってマイクロＲＯＭ１５から各ステップのマイクロ命令を出力し、このマイクロ命令により実行制御される。
【００２５】
（第３ステップ）：メモリデータレジスタ２のタスク番号の値は第１オペランドバス７よりＡＬＵ６に入力され、２倍だけ乗算される。さらにデステネーションバス９を介して一時レジスタ４にライトする。よって、本実施例のタスク番号２を２倍した４の値が一時レジスタ４に書き込まれる。
【００２６】
（第４ステップ）：命令キュー１３から第２メモリアドレス部２３を取り出し、第１オペランドバス７に出力し、一方、一時レジスタ４の内容を第２オペランドバス８に出力する。ＡＬＵ６にて両者の値を加算し、メモリアドレスレジスタ３、一時レジスタ４の２つにライトする。ここでは、第２メモリアドレス部に書き込まれたアドレスＸ２に第３ステップで演算された４が加えられたＸ２＋４が書き込まれる。
【００２７】
（第５ステップ）：メモリアドレスレジスタ３で指定されたアドレスのメモリ内容を外部メモリよりメモリデータバス１８を介してメモリデータレジスタ２にリードする。ここでは、図４のコンテキスト待避情報テーブルに格納された（Ｘ２＋４）番地のタスク２レジスタリストがリードされる。すなわち、本例においてメモリデータレジスタには０１０１１０１０（２進）がリードされる。
【００２８】
（第６ステップ）：メモリデータレジスタ２にリードされた内容、すなわちタスク２レジスタリストを第１オペランドバス７、ＡＬＵ６を介してレジスタリストレジスタ１０にライトする。さらにライトされた内容はプライオリティエンコーダ１１に入力される。
【００２９】
図６はプライオリティエンコーダ１１の真理値表である。レジスタリストレジスタ１０の８ビットの出力Ｌ０〜Ｌ７を入力して３ビットのエンコード値Ｐ０〜Ｐ２と出力Ｌ０〜Ｌ７のすべてのビットがゼロであるかどうかを示す信号ＲＥＭＺが図の真理値表に従って出力される。例えばタスク２レジスタリスト：０１０１１０１０（２進）が第６ステップでレジスタレストレジスタ１０にライトされ、その出力は（Ｌ７，Ｌ６，…，Ｌ０）＝（０，１，０，１，１，０，１，０）としてプライオリティエンコーダ１１に入力され、（Ｐ２，Ｐ１，Ｐ０）＝（０，０，１）、ＲＥＭＺ＝０が出力される。
【００３０】
（第７ステップ）：一時レジスタ４の内容に１を加算し、メモリアドレスレジスタ３にライトする。第４ステップで書き込まれた値に１を加えたＸ２＋４＋１がメモリアドレスレジスタ３にライトされる。
【００３１】
（第８ステップ）：メモリアドレスレジスタ３で指定されたアドレスＸ２＋５番地のメモリの内容をメモリデータレジスタ２にリードする。すなわち、図４におけるタスク２待避領域サイズをリードし、ここではサイズの値６がメモリデータレジスタ２にリードされる。
【００３２】
（第９ステップ）：待避命令実行前のスタックポインタ５の値から（例えばＺとする）メモリデータレジスタ３の内容（すなわち、６）を減算し、スタックポインタ５をＺー６に書き直す。同時にプライオリティエンコーダ１１のＲＥＭＺ出力をマイクロアドレスカウンタ１６に入力し、ＲＥＭＺが１ならば後述する第１３ステップのマイクロアドレスをロードし、レジスタの待避処理である第１０〜第１２ステップをジャンプする。すなわちレジスタリストレジスタ１０の全ビットが０ならば第１３ステップまでジャンプする。ここでは全てのビットは０でないのでマイクロアドレスカウンタ１６は１だけインクリメントし、次の第１０ステップを実行する。
【００３３】
（第１０ステップ）：スタックポインタ５の値Ｚー６から１を減算してメモリアドレスレジスタ３にライトする。同時にプライオリティエンコーダ１１のエンコード出力をレジスタポインタレジスタ１２にライトする。ここではレジスタリストレジスタ１０は０１０１１０１０で、プライオリティエンコーダ１１は１（２進で００１）を出力する。
【００３４】
（第１１ステップ）：レジスタポインタレジスタ１２は入力されたエンコード値をマイクロ命令デコーダ１７に入力する。マイクロ命令デコーダ１７はこのエンコード値によりＲ０〜Ｒ７のうち待避されるレジスタを識別し、エンコード値の指定するレジスタの内容をメモリデータレジスタ２にライトする。ここではエンコード値は１なのでレジスタＲ１が指定され、レジスタＲ１の内容がメモリデータレジスタ２にライトされる。同時にインクリメンタ２０によってメモリアドレスレジスタ３を１だけインクリメントする。メモリアドレスレジスタ３の値はＺー６になり、第１０ステップで１を減算する前のスタックポインタの値となる。さらに、レジスタリストレジスタ１０に記憶されたレジスタリストで、レジスタポインタレジスタ１７の指定するレジスタＲ１に対応する番号のビット、つまりビット１をクリアにする。この結果、レジスタリストレジスタ１０の値は０１０１１０００（２進）となり、したがってプライオリティエンコーダ１１は図６の真理値表によりエンコード値３（２進で０１１）を出力する。
【００３５】
（第１２ステップ）：メモリアドレスレジスタ３において指定されるアドレスのメモリにメモリデータレジスタ２の内容をライトする。ここではメモリアドレスレジスタ３ではＺー６番地が指定されている。同時にプライオリティエンコーダ１１のエンコード値３をレジスタポインタレジスタ１２にライトする。さらにプライオリティエンコーダ１１のＲＥＭＺ出力が０ならばマイクロアドレスカウンタ１６に第１１ステップのマイクロアドレスをロードさせ、第１１ステップと第１２ステップとを繰り返す。またＲＥＭＺ値が１ならばマイクロアドレスカウンタ１６に第１３ステップのマイクロアドレスをロードさせる。
【００３６】
本実施例では第１１と第１２ステップはレジスタリストレジスタ１０のレジスタリストの全ビットが０になるまで４回実行される。このときメモリアドレスレジスタ３は第１１、第１２ステップの繰返し毎に１インクリメントされる。
以上により、１回目から４回目までの第１１ステップの実行後において、レジスタリストレジスタ１０、レジスタポインタレジスタ１２、待避されるレジスタは次のように決定される。
【００３７】
１回目
レジスタリストレジスタ  ：０１０１１０００
レジスタポインタレジスタ：１
待避レジスタ            ：Ｒ１
２回目
レジスタリストレジスタ  ：０１０１００００
レジスタポインタレジスタ：３
待避レジスタ            ：Ｒ３
３回目
レジスタリストレジスタ  ：０１００００００
レジスタポインタレジスタ：４
待避レジスタ            ：Ｒ４
４回目
レジスタリストレジスタ  ：００００００００
レジスタポインタレジスタ：６
待避レジスタ            ：Ｒ６
【００３８】
（第１３ステップ）：第１２ステップ、または第９ステップにおいてプライオリティエンコーダ１１のＲＥＭＺ値が１、すなわちレジスタリストレジスタ１０の全ビットが０になったら、命令キュー１３から図２のセーブ命令の次の命令のオペコード部をマクロ命令デコーダ１４に取り出し、命令を終了する。
【００３９】
以上の結果、メモリには４個のレジスタＲ１、Ｒ３、Ｒ４、Ｒ６が待避されることになる。図７はメモリの待避領域を示す例図である。第９ステップが実行される前のスタックポインタはメモリのＺ番地を指し、第９ステップの実行後にタスク２待避領域サイズの値６を減算したＺー６番地を指す。第１１ステップでメモリアドレスレジスタ３を１ずつインクリメントしてＺー６番地から順にレジスタＲ１、Ｒ３、Ｒ４、Ｒ６の待避領域が指定され、レジスタ内容が待避される。
【００４０】
［リストア命令の場合］
次に、第１図の中央処理装置で図２のオペコード部２１がリストア命令を実行する場合の動作について説明する。図８は図２のリストア命令コードにより中央処理装置がリストア命令を実行するために、マイクロＲＯＭ１５より出力されるマイクロプログラムの例図である。
ここではコンテキスト待避情報テーブル上のタスク番号、タスク２レジスタリスト、タスク２待避領域サイズは前述のセーブ命令の場合と同じ情報である。さらに図９のようにメモリにＲ１、Ｒ３、Ｒ４、Ｒ６の４つのレジスタに復帰させるタスク２の復帰内容が待避されており、リストア命令の実行前のスタックポインタはＺー６番地のコンテキスト待避領域の下端のアドレスを示している。
【００４１】
リストア命令では第８図のマイクロプログラムを実行するが、第８ステップまでは図５のセーブ命令の場合と同様なので説明を省略する。以降第９ステップより説明する。
【００４２】
（第９ステップ）：Ｚー６番地コンテキスト待避領域の下端のアドレスであるＺー６番地を指すスタックポインタ５の内容をメモリアドレスレジスタ３にライトする。
【００４３】
（第１０ステップ）：第７ステップと第８ステップでメモリからタスク２待避情報領域サイズがメモリデータレジスタ２にリードされており、スタックポインタ５の値にこのメモリデータレジスタ２の値を加算する。この結果、スタックポインタ５の値はＺー６からサイズ６を加えた値Ｚとなり、図９のＺ番地のメモリを指す。同時にプライオリティエンコーダ１１のエンコード出力をレジスタポインタレジスタ１２にライトする。ここではレジスタリストレジスタ１０の出力は０１０１１０１０なので、プライオリティエンコーダ１１は１（２進で００１）のエンコード値を出力する。さらに、レジスタリストレジスタ１０の全ビットが０かどうかを示すＲＥＭＺ値をマイクロアドレスカウンタ１６に入力し、ＲＥＭＺが１ならばマイクロアドレスカウンタ１６に第１３ステップのマイクロアドレスをロードする。すなわちレジスタリストレジスタ１０の全ビットが０のときレジスタ復帰処理である第１１、第１２ステップをジャンプする。ここでは全ビットは０でないのでマイクロアドレスカウンタ１６は１インクリメントされ、第１１ステップを実行する。
【００４４】
（第１１ステップ）：第９ステップでライトされたメモリアドレスレジスタ３で指定されるアドレス（Ｚー６）番地のメモリ内容をメモリデータレジスタ２にリードする。これは図９の復帰するＲ１の内容である。同時に第１０ステップにおいてレジスタポインタレジスタ１２で指定された番号１に対応するレジスタリストレジスタ１０のビットをクリアにする。この結果、レジスタリストレジスタ１０は０１０１１０１０（２進）から０１０１１０００（２進）になる。よってプライオリティエンコーダ１１は３（２進で０１１）のエンコード値を出力する。
【００４５】
（第１２ステップ）：第１０ステップにおいてレジスタポインタレジスタ１２で指定された番号１に従ってメモリデータレジスタ２にリードされたＲ１の復帰内容をレジスタＲ１にライトする。同時にメモリアドレスカウンタ３の値を１だけインクリメントするとともに、プライオリティエンコーダ１１のエンコード出力値３をレジスタポインタレジスタ１２にライトする。さらに、プライオリティエンコーダ１１のＲＥＭＺ値が０ならば（レジスタリストレジスタ１０の全ビットが０でないならば）、マイクロアドレスカウンタ１５に第１１ステップのマイクロアドレスをロードし、第１１ステップと第１２ステップを繰り返す。この実施例ではセーブ命令と同様に第１１ステップと第１２ステップは４回繰り返して実行される。このときメモリアドレスレジスタ３は繰り返す毎に１インクリメントされる。
以上により、１回目から４回目までの第１２ステップの実行後におけるレジスタリストレジスタ１０、レジスタポインタレジスタ１２、復帰されるレジスタは次のように決定される。
【００４６】
１回目
レジスタリストレジスタ  ：０１０１１０００
レジスタポインタレジスタ：１
復帰レジスタ            ：Ｒ１
２回目
レジスタリストレジスタ  ：０１０１００００
レジスタポインタレジスタ：３
復帰レジスタ            ：Ｒ３
３回目
レジスタリストレジスタ  ：０１００００００
レジスタポインタレジスタ：４
復帰レジスタ            ：Ｒ４
４回目
レジスタリストレジスタ  ：００００００００
レジスタポインタレジスタ：６
復帰レジスタ            ：Ｒ６
【００４７】
（第１３ステップ）：第１２ステップ、または第９ステップにおいてレジスタリストレジスタ１０の全ビットが０になったら、命令キュー１３から図２のセーブ命令の次の命令のオペコード部をマクロ命令デコーダ１４に取り出し、命令を終了する。
【００４８】
以上の中央処理装置の動作により図９に待避されていたタスク２の４つの復帰内容がレジスタＲ１、Ｒ３、Ｒ４、Ｒ６に復帰されたことになる。
【００４９】
【発明の効果】
以上説明したように、この発明における中央処理装置によると、１つの命令コードに従って、タスク情報を参照し、コンテキスト待避情報からレジスタ選択情報を選択しロードすることによりＮ個のレジスタのうちＭ個のレジスタを選択し、タスクのコンテキストをＭ個のレジスタとメモリとの間で転送させるようにしたので、タスクのスイッチング処理のとき必要なレジスタの内容のみを１命令で待避、復帰できるようになった。従って、コンテキストの待避もしくは復帰に必要なＲＡＭ容量を少なくすることができ、また、待避・復帰処理を高速に行なうことができるようになった。
【図面の簡単な説明】
【図１】この発明の実施例１に示す中央処理装置の構成図である。
【図２】この発明の中央処理装置のセーブ命令、またはリストア命令の命令コード図である。
【図３】この発明の中央処理装置のレジスタリストの例図である。
【図４】この発明の中央処理装置のコンテキスト待避情報テーブルを示すメモリ領域図である。
【図５】この発明の中央処理装置のセーブ命令のマイクロプログラムの例図である。
【図６】この発明の中央処理装置のプライオリティエンコーダの真理値表を示す表図である。
【図７】この発明の中央処理装置のコンテキスト待避領域を示すメモリ領域図である。
【図８】この発明の中央処理装置のリストア命令のマイクロプログラムの例図である。
【図９】この発明の中央処理装置のコンテキスト復帰領域を示すメモリ領域図である。
【図１０】従来技術による中央処理装置のコンテキスト待避領域を示すメモリ領域図である。
【図１１】従来技術による別の中央処理装置のコンテキスト待避領域を示すメモリ領域図である。
【図１２】図１１における中央処理装置のレジスタリストの例図である。
【図１３】図１１における中央処理装置のコンテキスト待避情報テーブルを示すメモリ領域図である。
【図１４】図１１における中央処理装置のコンテキスト待避命令のプログラム例図である。
【符号の説明】
１…レジスタ群、２…メモリデータレジスタ、３…メモリアドレスレジスタ、４…一時レジスタ、５…スタックポインタ、６…演算ユニット（ＡＬＵ）、７…第１オペランドバス、８…第２オペランドバス、９…デステネーションバス、１０…レジスタリストレジスタ、１１…プライオリティエンコーダ、１２…レジスタポインタレジスタ、１３…命令キュー、１４…マクロ命令デコーダ、１５…マイクロＲＯＭ、１６…マイクロアドレスカウンタ、１７…マイクロ命令デコーダ、１８…メモリデータバス、１９…メモリアドレスバス、２０…インクリメンタ、２１…オペコード部、２２…第１メモリアドレス部、、２３…第２メモリアドレス部
【図１】
0003619939.tif 000002
【図２】
0003619939.tif 000003
【図３】
0003619939.tif 000004
【図４】
0003619939.tif 000005
【図５】
0003619939.tif 000006
【図６】
0003619939.tif 000007
【図７】
0003619939.tif 000008
【図８】
0003619939.tif 000009
【図９】
0003619939.tif 000010
【図１０】
0003619939.tif 000011
【図１１】
0003619939.tif 000012
【図１２】
0003619939.tif 000013
【図１３】
0003619939.tif 000014
【図１４】
0003619939.tif 000015