JPH09212371A - レジスタ退避及び復元システム - Google Patents
レジスタ退避及び復元システムInfo
- Publication number
- JPH09212371A JPH09212371A JP8020338A JP2033896A JPH09212371A JP H09212371 A JPH09212371 A JP H09212371A JP 8020338 A JP8020338 A JP 8020338A JP 2033896 A JP2033896 A JP 2033896A JP H09212371 A JPH09212371 A JP H09212371A
- Authority
- JP
- Japan
- Prior art keywords
- register
- contents
- saving
- registers
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/463—Program control block organisation
Abstract
(57)【要約】 (修正有)
【課題】 マルチタスク処理を行うマイクロプロセッサ
において、タスク切替え時におけるレジスタの内容のコ
ンテキスト領域への退避処理に要する時間を極力少なく
して、OSのオーバーヘッドを減少させる。 【解決手段】 複数のレジスタ100に夫々対応して、
ダーティビット104,105を設け、レジスタの内容
が変化したときに対応ビットを“1”とし、変化しない
ときは“0”とする。タスク切替えが発生したときに各
レジスタ内容をコンテキスト領域へ退避する場合、各ビ
ットを参照して、“0”であれば、退避命令を実行しな
い。すなわち、レジスタの内容の退避も退避のための格
納アドレスの更新も行わない。よって、それだけ処理時
間が少なくなる。
において、タスク切替え時におけるレジスタの内容のコ
ンテキスト領域への退避処理に要する時間を極力少なく
して、OSのオーバーヘッドを減少させる。 【解決手段】 複数のレジスタ100に夫々対応して、
ダーティビット104,105を設け、レジスタの内容
が変化したときに対応ビットを“1”とし、変化しない
ときは“0”とする。タスク切替えが発生したときに各
レジスタ内容をコンテキスト領域へ退避する場合、各ビ
ットを参照して、“0”であれば、退避命令を実行しな
い。すなわち、レジスタの内容の退避も退避のための格
納アドレスの更新も行わない。よって、それだけ処理時
間が少なくなる。
Description
【0001】
【発明の属する技術分野】本発明はレジスタ退避及び復
元システムに関し、特にマルチタスク処理を行うOS
(オペレーティングシステム)を使用したマイクプロセ
ッサにおけるタスク切替え時レジスタ内容の退避/復元
処理の制御を行うレジスタ退避及び復元システムに関す
るものである。
元システムに関し、特にマルチタスク処理を行うOS
(オペレーティングシステム)を使用したマイクプロセ
ッサにおけるタスク切替え時レジスタ内容の退避/復元
処理の制御を行うレジスタ退避及び復元システムに関す
るものである。
【0002】
【従来の技術】現在、マイクロプロセッサを効率良く使
用するために、マルチプログラミングの方式が用いられ
ている。マルチプログラミング方式では、プログラムを
実行単位であるタスクに分割し、OSが種々の状況に応
じてタスクを選択し、CPUの実行権を割り当ててい
る。OSがあるタスクにCPUの実行権を割り当てる際
には、現在CPUが使用しているタスクのコンテキスト
をメモリ上の格納領域に退避し、割り当てるタスクのコ
ンテキスト領域からコンテキストを復元する。この時の
動作を図6,7を参照しながら説明する。
用するために、マルチプログラミングの方式が用いられ
ている。マルチプログラミング方式では、プログラムを
実行単位であるタスクに分割し、OSが種々の状況に応
じてタスクを選択し、CPUの実行権を割り当ててい
る。OSがあるタスクにCPUの実行権を割り当てる際
には、現在CPUが使用しているタスクのコンテキスト
をメモリ上の格納領域に退避し、割り当てるタスクのコ
ンテキスト領域からコンテキストを復元する。この時の
動作を図6,7を参照しながら説明する。
【0003】図6はCPUのレジスタの例を示したもの
である。このCPUは32ビット長のレジスタを32本
持つものである。また、CPUはこれ等のレジスタの退
避及び復元を命令で実行するものとする。
である。このCPUは32ビット長のレジスタを32本
持つものである。また、CPUはこれ等のレジスタの退
避及び復元を命令で実行するものとする。
【0004】図7はCPUの実行権を移す際のフローを
示したものである。今、タスクは簡単のためにタスクA
とタスクBの2つとする。初めはタスクAにCPUの実
行権があり、タスクAからタスクBにCPUの実行権が
移るものとする。また、タスクのコンテキストを図6に
示したレジスタとし、コンテキストの格納領域はタスク
コントロールブロック内に確保されているものとする。
示したものである。今、タスクは簡単のためにタスクA
とタスクBの2つとする。初めはタスクAにCPUの実
行権があり、タスクAからタスクBにCPUの実行権が
移るものとする。また、タスクのコンテキストを図6に
示したレジスタとし、コンテキストの格納領域はタスク
コントロールブロック内に確保されているものとする。
【0005】CPUの実行権を切り換えるために(ステ
ップ701)、OSはタスクAのタスクコントロールブ
ロックアドレスを得る(ステップ702)。この時OS
はこのタスクコントロールブロック内にタスクAのコン
テキストを格納するために、レジスタの退避命令を実行
する。この命令によってCPUは32本のレジスタの内
容をレジスタR0から順にレジスタR31まで全てを退
避せしめてメモリ上の退避領域に格納する(ステップ7
03)。
ップ701)、OSはタスクAのタスクコントロールブ
ロックアドレスを得る(ステップ702)。この時OS
はこのタスクコントロールブロック内にタスクAのコン
テキストを格納するために、レジスタの退避命令を実行
する。この命令によってCPUは32本のレジスタの内
容をレジスタR0から順にレジスタR31まで全てを退
避せしめてメモリ上の退避領域に格納する(ステップ7
03)。
【0006】次に、メモリ上の他の領域における実行待
ちの行列の先頭から、タスクBのタスクコントロールブ
ロックアドレスを得る(ステップ704)。OSはこの
タスクコントロールブロック内のタスクBのコンテキス
トをCPUのレジスタに格納するために、レジスタの復
帰命令を実行する。この命令によってCPUはタスクコ
ントロールブロック内に格納してあるデータをレジスタ
R0からR31に格納する(ステップ705)。この様
にして、OSはタスクAからタスクBにCPUのコンテ
キストを入れ替える。
ちの行列の先頭から、タスクBのタスクコントロールブ
ロックアドレスを得る(ステップ704)。OSはこの
タスクコントロールブロック内のタスクBのコンテキス
トをCPUのレジスタに格納するために、レジスタの復
帰命令を実行する。この命令によってCPUはタスクコ
ントロールブロック内に格納してあるデータをレジスタ
R0からR31に格納する(ステップ705)。この様
にして、OSはタスクAからタスクBにCPUのコンテ
キストを入れ替える。
【0007】別の従来例を説明する。この例は特開平4
−211837号公報に開示のものであり、この従来例
では、前述の従来例同様に、OSはレジスタの内容を退
避させるための退避命令を実行する。CPUはレジスタ
R0から順に退避格納するが、この際各レジスタに対応
して予め設けられているモディファイビットの状態を参
照する。
−211837号公報に開示のものであり、この従来例
では、前述の従来例同様に、OSはレジスタの内容を退
避させるための退避命令を実行する。CPUはレジスタ
R0から順に退避格納するが、この際各レジスタに対応
して予め設けられているモディファイビットの状態を参
照する。
【0008】モディファイビットとは実行中のタスク内
でレジスタの内容に変更があった場合に[1]がセット
されるビットのことである。
でレジスタの内容に変更があった場合に[1]がセット
されるビットのことである。
【0009】先ず、CPUはレジスタR0に対応したモ
ディファイビットをチェックする。この場合、モディフ
ァイビットが[1]であったとする。よって、このレジ
スタR0の内容は変更されているので、CPUはレジス
タR0の内容をコンテキスト格納領域に退避格納し、次
のレジスタR1のための格納アドレスを更新する。
ディファイビットをチェックする。この場合、モディフ
ァイビットが[1]であったとする。よって、このレジ
スタR0の内容は変更されているので、CPUはレジス
タR0の内容をコンテキスト格納領域に退避格納し、次
のレジスタR1のための格納アドレスを更新する。
【0010】次に、レジスタR1のモディファイビット
をチェックする。この場合、レジスタR1のモディファ
イビットが[0]であったとする。よって、このレジス
タR1の内容は変更されていないので、レジスタR1の
内容は格納せず、格納アドレスのみを更新する。
をチェックする。この場合、レジスタR1のモディファ
イビットが[0]であったとする。よって、このレジス
タR1の内容は変更されていないので、レジスタR1の
内容は格納せず、格納アドレスのみを更新する。
【0011】この様に、モディファイビットが[1]の
場合は、CPUは対応するレジスタの内容をコンテキス
ト格納領域に格納し、格納アドレスを更新し、モディフ
ァイビットが[0]の場合は、CPUは対応するレジス
タの内容を格納せず、格納アドレスのみを更新する。以
上のように、CPUはレジスタの退避を行う。
場合は、CPUは対応するレジスタの内容をコンテキス
ト格納領域に格納し、格納アドレスを更新し、モディフ
ァイビットが[0]の場合は、CPUは対応するレジス
タの内容を格納せず、格納アドレスのみを更新する。以
上のように、CPUはレジスタの退避を行う。
【0012】次に、OSはタスクBのタスクコントロー
ルブロックアドレスを得る。OSはタスクコントロール
ブロックに格納してあるタスクBのコンテキストをCP
Uのレジスタに格納するために、レジスタの復元命令を
実行する。
ルブロックアドレスを得る。OSはタスクコントロール
ブロックに格納してあるタスクBのコンテキストをCP
Uのレジスタに格納するために、レジスタの復元命令を
実行する。
【0013】この命令によってCPUは、モディファイ
ビットを全て[0]にし、コンテキスト格納領域に格納
してあるデータを全てのレジスタに格納する。この様に
して、OSはタスクAからタスクBにコンテキストを入
れ替える。
ビットを全て[0]にし、コンテキスト格納領域に格納
してあるデータを全てのレジスタに格納する。この様に
して、OSはタスクAからタスクBにコンテキストを入
れ替える。
【0014】
【発明が解決しようとする課題】マイクロプロセッサは
内部におけるコンテキストの転送を非常に高速に行う。
しかし、マルチタスク処理を行うマイクロプロセッサに
おいては、タスクを入れ替える度にレジスタの内容をメ
モリに退避格納し、次に実行するタスクのコンテキスト
をレジスタに復元する必要がある。
内部におけるコンテキストの転送を非常に高速に行う。
しかし、マルチタスク処理を行うマイクロプロセッサに
おいては、タスクを入れ替える度にレジスタの内容をメ
モリに退避格納し、次に実行するタスクのコンテキスト
をレジスタに復元する必要がある。
【0015】その際に、マイクロプロセッサの外部バス
を使用するためにマイクロプロセッサ内部のように高速
にデータ転送が行えない。マイクロプロセッサを使用し
たシステムにおいて、外部アクセスを用いるアクセスが
生じると性能が低下する。
を使用するためにマイクロプロセッサ内部のように高速
にデータ転送が行えない。マイクロプロセッサを使用し
たシステムにおいて、外部アクセスを用いるアクセスが
生じると性能が低下する。
【0016】また、先の特開平4−211837号公報
のモディファイビットを用いたレジスタシステムにおい
ても、レジスタの本数分の退避領域への格納アドレスを
更新し、復元の際にはレジスタの本数分コンテキストを
レジスタに戻すために、外部アクセス時間がOSの処理
時間内のオーバーヘッドとなってしまう。
のモディファイビットを用いたレジスタシステムにおい
ても、レジスタの本数分の退避領域への格納アドレスを
更新し、復元の際にはレジスタの本数分コンテキストを
レジスタに戻すために、外部アクセス時間がOSの処理
時間内のオーバーヘッドとなってしまう。
【0017】本発明の目的は、マルチタスクの切替え時
におけるレジスタ内容の退避/復元処理のオーバーヘッ
ドを極力少なくするようにしたレジスタ退避復元システ
ムを提供することである。
におけるレジスタ内容の退避/復元処理のオーバーヘッ
ドを極力少なくするようにしたレジスタ退避復元システ
ムを提供することである。
【0018】
【課題を解決するための手段】本発明によるレジスタ退
避システムは、複数のレジスタを有し、これ等レジスタ
の格納内容をメモリ上の退避領域に退避するレジスタ退
避システムであって、前記レジスタの各々に対応して設
けられ対応レジスタの内容が変化したことを示すビット
群と、前記レジスタの内容の退避時に、前記ビット群を
参照してそのビットが内容の変化を示すときは前記退避
領域への格納アドレスの更新を行って対応レジスタの内
容の退避を行い、内容の変化を示さないときは前記格納
アドレスの更新及び対応レジスタの退避を行わないよう
制御する手段とを含むことを特徴としている。
避システムは、複数のレジスタを有し、これ等レジスタ
の格納内容をメモリ上の退避領域に退避するレジスタ退
避システムであって、前記レジスタの各々に対応して設
けられ対応レジスタの内容が変化したことを示すビット
群と、前記レジスタの内容の退避時に、前記ビット群を
参照してそのビットが内容の変化を示すときは前記退避
領域への格納アドレスの更新を行って対応レジスタの内
容の退避を行い、内容の変化を示さないときは前記格納
アドレスの更新及び対応レジスタの退避を行わないよう
制御する手段とを含むことを特徴としている。
【0019】そして、前記退避時に、前記ビット群の内
容を全て退避するようにしたことを特徴としている。
容を全て退避するようにしたことを特徴としている。
【0020】また、本発明によるレジスタ退避及び復元
システムは、複数のレジスタを有し、これ等レジスタの
格納内容をメモリ上の退避領域に退避し、また退避領域
の退避中の内容を前記レジスタに復元するようにしたレ
ジスタ退避及び復元システムであって、前記レジスタの
各々に対応して設けられ対応レジスタの内容が変化した
ことを示すビット群と、前記レジスタの内容の退避時
に、前記ビット群を参照してそのビットが内容の変化を
示すときは前記退避領域への格納アドレスの更新を行っ
て対応レジスタの内容の退避を行い、内容の変化を示さ
ないときは前記格納アドレスの更新及び対応レジスタの
退避を行わないよう制御する手段と、前記退避時に前記
ビット群の内容を全て退避するよう制御する手段と、前
記退避領域の退避内容の前記レジスタへの復元時に、前
記退避中のビッド群を参照してそのビットが内容の変化
を示すときは前記退避領域から読出すべき復元アドレス
の更新を行って対応復元データの対応レジスタへの復元
を行い、内容の変化を示さないときは前記復元アドレス
の更新及び対応レジスタへの復元を行わないよう制御す
る手段とを含むことを特徴としている。
システムは、複数のレジスタを有し、これ等レジスタの
格納内容をメモリ上の退避領域に退避し、また退避領域
の退避中の内容を前記レジスタに復元するようにしたレ
ジスタ退避及び復元システムであって、前記レジスタの
各々に対応して設けられ対応レジスタの内容が変化した
ことを示すビット群と、前記レジスタの内容の退避時
に、前記ビット群を参照してそのビットが内容の変化を
示すときは前記退避領域への格納アドレスの更新を行っ
て対応レジスタの内容の退避を行い、内容の変化を示さ
ないときは前記格納アドレスの更新及び対応レジスタの
退避を行わないよう制御する手段と、前記退避時に前記
ビット群の内容を全て退避するよう制御する手段と、前
記退避領域の退避内容の前記レジスタへの復元時に、前
記退避中のビッド群を参照してそのビットが内容の変化
を示すときは前記退避領域から読出すべき復元アドレス
の更新を行って対応復元データの対応レジスタへの復元
を行い、内容の変化を示さないときは前記復元アドレス
の更新及び対応レジスタへの復元を行わないよう制御す
る手段とを含むことを特徴としている。
【0021】そして、前記復元の終了に応答して、前記
レジスタの各々に対応して設けられたビット群を全てク
リアするようにしたことを特徴としている。
レジスタの各々に対応して設けられたビット群を全てク
リアするようにしたことを特徴としている。
【0022】このビット群クリア処理をなす代わりに、
前記退避中のビッド群の参照に際して、前記退避中のビ
ット群の内容を順次ビットシフトしつつシフトアウトし
たビットの内容を参照し、前記ビット群の内容が全てク
リア状態になった時に前記復元処理を終了するようにし
たことを特徴としている。
前記退避中のビッド群の参照に際して、前記退避中のビ
ット群の内容を順次ビットシフトしつつシフトアウトし
たビットの内容を参照し、前記ビット群の内容が全てク
リア状態になった時に前記復元処理を終了するようにし
たことを特徴としている。
【0023】
【発明の実施の形態】本発明の作用について述べる。レ
ジスタの内容に変化がない場合には、退避や復元の必要
もないために、変化のあったレジスタの内容のみを退避
や復元処理すると共に、その時のみメモリ上の退避領域
への退避格納アドレスの更新や復元アドレスの更新を行
うことで、OSのオーバーヘッドを極力少なくすること
が可能となる。
ジスタの内容に変化がない場合には、退避や復元の必要
もないために、変化のあったレジスタの内容のみを退避
や復元処理すると共に、その時のみメモリ上の退避領域
への退避格納アドレスの更新や復元アドレスの更新を行
うことで、OSのオーバーヘッドを極力少なくすること
が可能となる。
【0024】本発明の実施例を図面を参照しながら説明
する。
する。
【0025】図1は本発明の一実施例に用いるレジスタ
システム構成を示したものである。図で使用しているレ
ジスタシステム100は、一つのレジスタが32ビット
構成であり、32本で構成されている。
システム構成を示したものである。図で使用しているレ
ジスタシステム100は、一つのレジスタが32ビット
構成であり、32本で構成されている。
【0026】また、一般使用を目的とした32本のレジ
スタとは別に、各レジスタの変化を示す32個のダーテ
ィビットを並べたダーティビット群レジスタ103を有
する。このダーティビットは、例えば、レジスタR0や
R1に対して夫々ダーティビット104や105という
ように、各レジスタに対して1対1に用意される。
スタとは別に、各レジスタの変化を示す32個のダーテ
ィビットを並べたダーティビット群レジスタ103を有
する。このダーティビットは、例えば、レジスタR0や
R1に対して夫々ダーティビット104や105という
ように、各レジスタに対して1対1に用意される。
【0027】そして、タスクAを実行中にレジスタR0
の内容を変更した場合、レジスタR0に対応するダーテ
ィビット104が[1]にセットされる。また、タスク
Aの最中にレジスタR0の内容が変化しなかった場合、
ダーティビット104の[0]の値は変化しない。同様
に、全てのダーティビットの値がタスクAの実行中に決
定される。
の内容を変更した場合、レジスタR0に対応するダーテ
ィビット104が[1]にセットされる。また、タスク
Aの最中にレジスタR0の内容が変化しなかった場合、
ダーティビット104の[0]の値は変化しない。同様
に、全てのダーティビットの値がタスクAの実行中に決
定される。
【0028】タスクAからタスクBに変更する際、コン
テキストを入れ替える必要があるが、OSは図2に示す
退避格納アルゴリズムに従ってレジスタの内容を退避す
る退避命令を実行することでこれを行う(ステップ30
1)。CPUはレジスタR0の内容から順に退避格納す
るが、この際に各レジスタに対応したダーティビットを
参照する。先ず、CPUはレジスタR0に対応したダー
ティビットをチェックする(ステップ302,30
3)。
テキストを入れ替える必要があるが、OSは図2に示す
退避格納アルゴリズムに従ってレジスタの内容を退避す
る退避命令を実行することでこれを行う(ステップ30
1)。CPUはレジスタR0の内容から順に退避格納す
るが、この際に各レジスタに対応したダーティビットを
参照する。先ず、CPUはレジスタR0に対応したダー
ティビットをチェックする(ステップ302,30
3)。
【0029】この例では、ダーティビット104の値を
[1]、ダーティビット105の値を[0]とする。よ
ってCPUはレジスタR0の内容をコンテキスト格納領
域に格納し(ステップ305)、格納アドレスを更新す
る(ステップ306)。
[1]、ダーティビット105の値を[0]とする。よ
ってCPUはレジスタR0の内容をコンテキスト格納領
域に格納し(ステップ305)、格納アドレスを更新す
る(ステップ306)。
【0030】次に、CPUはレジスタR1のダーティビ
ットをチェックする。レジスタR1のダーティビットは
[0]である。よってレジスタR1の内容は格納せず、
格納アドレスも更新しない。
ットをチェックする。レジスタR1のダーティビットは
[0]である。よってレジスタR1の内容は格納せず、
格納アドレスも更新しない。
【0031】以上のようにレジスタR31までの処理を
繰り返し(ステップ307,308)、CPUはレジス
タの退避を行う。レジスタR31の処理の後、ダーティ
ビット群のレジスタ103の内容もコンテキスト格納領
域に格納し(ステップ309)、格納アドレスを更新す
る(ステップ310)。
繰り返し(ステップ307,308)、CPUはレジス
タの退避を行う。レジスタR31の処理の後、ダーティ
ビット群のレジスタ103の内容もコンテキスト格納領
域に格納し(ステップ309)、格納アドレスを更新す
る(ステップ310)。
【0032】次にOSは、タスクBのタスクコントロー
ルブロックアドレスを得る。この時、タスクBのコンテ
キスト格納領域の内容は図3に示す如くであるとする。
OSはタスクコントロールブロックに格納してあるタス
クBのコンテキスト200をCPUのレジスタに格納す
るために、レジスタの復元命令を実行する。この命令に
よってCPUは、先ずコンテキスト格納領域に格納して
あるタスクBのダーティビット群のレジスタ(図1の1
03)に格納する。
ルブロックアドレスを得る。この時、タスクBのコンテ
キスト格納領域の内容は図3に示す如くであるとする。
OSはタスクコントロールブロックに格納してあるタス
クBのコンテキスト200をCPUのレジスタに格納す
るために、レジスタの復元命令を実行する。この命令に
よってCPUは、先ずコンテキスト格納領域に格納して
あるタスクBのダーティビット群のレジスタ(図1の1
03)に格納する。
【0033】つまりこのレジスタ203は、タスクBの
コンテキストの内、コンテキスト格納領域から復元すべ
きコンテキスト内容を示している。
コンテキストの内、コンテキスト格納領域から復元すべ
きコンテキスト内容を示している。
【0034】タスクBからの他のタスクに切り替わると
きに、コンテキスト格納領域に退避格納した値が図3に
示す如くなっているわけであり、つまりタスクBの最中
に変化のなかったレジスタに関しては対応するダーティ
ビットが[0]となり、格納の際に格納アドレスを更新
していないために、ダーティビットが[1]の値のレジ
スタの内容のみが格納されていることになる。
きに、コンテキスト格納領域に退避格納した値が図3に
示す如くなっているわけであり、つまりタスクBの最中
に変化のなかったレジスタに関しては対応するダーティ
ビットが[0]となり、格納の際に格納アドレスを更新
していないために、ダーティビットが[1]の値のレジ
スタの内容のみが格納されていることになる。
【0035】図3では、レジスタのR0,R2の各内容
が格納されていて、それに対応するダーティビット20
4,206は夫々[1]になっている。また、レジスタ
R1の内容は格納されておらず、よってそれに対応する
ダーティビット205は[0]になっている。
が格納されていて、それに対応するダーティビット20
4,206は夫々[1]になっている。また、レジスタ
R1の内容は格納されておらず、よってそれに対応する
ダーティビット205は[0]になっている。
【0036】この様に本発明の実施例では、タスク実行
中に変更のあったコンテキストのみをコンテキスト格納
領域に退避格納している。
中に変更のあったコンテキストのみをコンテキスト格納
領域に退避格納している。
【0037】次に復元命令によって、タスクのコンテキ
ストが入れ替わる様子を図4の復元アルゴリズムに従っ
て説明する。CPUが復元命令を実行すると(ステップ
401)、先ず、コンテキスト格納領域に格納された3
2ビットのダーティビット群203をCPU内のダーテ
ィビット用の32ビットのダーティビットレジスタ10
3に格納する(ステップ402)。
ストが入れ替わる様子を図4の復元アルゴリズムに従っ
て説明する。CPUが復元命令を実行すると(ステップ
401)、先ず、コンテキスト格納領域に格納された3
2ビットのダーティビット群203をCPU内のダーテ
ィビット用の32ビットのダーティビットレジスタ10
3に格納する(ステップ402)。
【0038】次に、CPUはコンテキスト格納領域から
32ビットずつレジスタの内容を読出し格納するが、そ
の際は先に格納したダーティビットレジスタ103の内
容を参照し(ステップ403,404)、ダーティビッ
トが[1]になっているレジスタのみに格納を行い(ス
テップ405,406)、復元アドレスを更新する(ス
テップ407)。全てのダーティビットのチェックが終
了すると(ステップ408,409)、ダーティビット
群103を全て[0]クリアする(ステップ410)。
32ビットずつレジスタの内容を読出し格納するが、そ
の際は先に格納したダーティビットレジスタ103の内
容を参照し(ステップ403,404)、ダーティビッ
トが[1]になっているレジスタのみに格納を行い(ス
テップ405,406)、復元アドレスを更新する(ス
テップ407)。全てのダーティビットのチェックが終
了すると(ステップ408,409)、ダーティビット
群103を全て[0]クリアする(ステップ410)。
【0039】この様にしてOSは、タスクのコンテキス
トを入れ替える(ステップ411)。
トを入れ替える(ステップ411)。
【0040】次に、図5を用いて本発明の他の実施例を
説明する。尚、図5において、図4と同等ステップは同
一符号を付してその説明を省略する。
説明する。尚、図5において、図4と同等ステップは同
一符号を付してその説明を省略する。
【0041】先の実施例である図4に示した復元アルゴ
リズムでは、タスクのコンテキストをコンテキスト格納
領域から復元する際は、ダーティビットレジスタの内容
を基に各レジスタにコンテキストを格納し、その後全て
のダーティビットをチェックする際に、ダーティビット
レジスタ(図1の103)の内容を1ビットずつ左にシ
フトし(ステップ503)、キャリーアウトした値をチ
ェックするようにする(ステップ505)。この時、最
下位ビットには1ビットの左シフトの度に0を右から詰
めていく(ステップ504)。
リズムでは、タスクのコンテキストをコンテキスト格納
領域から復元する際は、ダーティビットレジスタの内容
を基に各レジスタにコンテキストを格納し、その後全て
のダーティビットをチェックする際に、ダーティビット
レジスタ(図1の103)の内容を1ビットずつ左にシ
フトし(ステップ503)、キャリーアウトした値をチ
ェックするようにする(ステップ505)。この時、最
下位ビットには1ビットの左シフトの度に0を右から詰
めていく(ステップ504)。
【0042】また、左シフト動作の直後に毎回ダーティ
ビットレジスタの値が全て[0]になっていないかをチ
ェックする(ステップ508)。コンテキストの復元の
最中にダーティビットレジスタの内容が全て[0]にな
ったら、コンテキストの復元命令は終了する。
ビットレジスタの値が全て[0]になっていないかをチ
ェックする(ステップ508)。コンテキストの復元の
最中にダーティビットレジスタの内容が全て[0]にな
ったら、コンテキストの復元命令は終了する。
【0043】本実施例では、コンテキストを復元する命
令の最後のダーティビットの0クリアが必要ないこと
と、ダーティビットのチェックの順番で最後の[1]を
チェックした後の余分なチェックを省略することができ
る。
令の最後のダーティビットの0クリアが必要ないこと
と、ダーティビットのチェックの順番で最後の[1]を
チェックした後の余分なチェックを省略することができ
る。
【0044】尚、本発明のより良い理解のために、追加
的に説明を加える。コンテキストの切替えが発生する
と、レジスタ(汎用レジスタ)の内容をメモリ上に退避
するが、この時、メモリ上の退避箇所のアドレスが必要
となる。従来においては、ストア命令等を用いてメモリ
上の退避領域へ格納して行くが、その際のアドレスはソ
フトウェア上で更新しながら行われる。
的に説明を加える。コンテキストの切替えが発生する
と、レジスタ(汎用レジスタ)の内容をメモリ上に退避
するが、この時、メモリ上の退避箇所のアドレスが必要
となる。従来においては、ストア命令等を用いてメモリ
上の退避領域へ格納して行くが、その際のアドレスはソ
フトウェア上で更新しながら行われる。
【0045】つまり、上述した32本のレジスタが存在
するようなハードウェアの場合、32回のアドレス更新
を行うストア命令を実行して退避が行われることにな
る。
するようなハードウェアの場合、32回のアドレス更新
を行うストア命令を実行して退避が行われることにな
る。
【0046】しかし、本発明では、メモリ上の格納場所
を節約するためにも、内容が変化していないレジスタに
関するストア命令を実行しないようにしたものであり、
よって内容が変化しないレジスタに関しては、退避及び
そのアドレス更新も行わないようにしているのである。
を節約するためにも、内容が変化していないレジスタに
関するストア命令を実行しないようにしたものであり、
よって内容が変化しないレジスタに関しては、退避及び
そのアドレス更新も行わないようにしているのである。
【0047】
【発明の効果】以上述べた如く、本発明によれば、内容
に変更のあったレジスタのみをコンテキスト格納領域に
格納し、復元する際も変更のあったレジスタの内容のみ
を復元しているために、余計なメモリアクセス、つまり
外部バスのアクセスが必要最小限になり、従って、OS
の処理時間内のオーバーヘッドを最小に押さえられるた
め、コンテキストの変更によるOS性能のロスを最小限
に押さえることができるという効果がある。
に変更のあったレジスタのみをコンテキスト格納領域に
格納し、復元する際も変更のあったレジスタの内容のみ
を復元しているために、余計なメモリアクセス、つまり
外部バスのアクセスが必要最小限になり、従って、OS
の処理時間内のオーバーヘッドを最小に押さえられるた
め、コンテキストの変更によるOS性能のロスを最小限
に押さえることができるという効果がある。
【図1】本発明の実施例におけるレジスタの構成を示す
図である。
図である。
【図2】本発明の実施例の退避処理動作を示すフローチ
ャートである。
ャートである。
【図3】本発明の実施例におけるタスクBのコンテキス
ト格納領域内の内容を示す図である。
ト格納領域内の内容を示す図である。
【図4】本発明の実施例の復元処理動作の一例を示すフ
ローチャートである。
ローチャートである。
【図5】本発明の実施例の復元処理動作の他の例を示す
フローチャートである。
フローチャートである。
【図6】従来例を説明するためのレジスタの構成図であ
る。
る。
【図7】従来のコンテキスト入れ替え処理時の動作を示
すフローチャートである。
すフローチャートである。
100 レジスタ 103 ダーティビットレジスタ 104,105 ダーティビット 200 コンテキスト格納領域の内容 203 ダーティビット群の内容 204〜206 ダーティビット
Claims (6)
- 【請求項1】 複数のレジスタを有し、これ等レジスタ
の格納内容をメモリ上の退避領域に退避するレジスタ退
避システムであって、前記レジスタの各々に対応して設
けられ対応レジスタの内容が変化したことを示すビット
群と、前記レジスタの内容の退避時に、前記ビット群を
参照してそのビットが内容の変化を示すときは前記退避
領域への格納アドレスの更新を行って対応レジスタの内
容の退避を行い、内容の変化を示さないときは前記格納
アドレスの更新及び対応レジスタの退避を行わないよう
制御する手段とを含むことを特徴とするレジスタ退避シ
ステム。 - 【請求項2】 前記退避時に、前記ビット群の内容を全
て退避するようにしたことを特徴とする請求項1記載の
レジスタ退避システム。 - 【請求項3】 複数のレジスタを有し、これ等レジスタ
の格納内容をメモリ上の退避領域に退避し、また退避領
域の退避中の内容を前記レジスタに復元するようにした
レジスタ退避及び復元システムであって、前記レジスタ
の各々に対応して設けられ対応レジスタの内容が変化し
たことを示すビット群と、前記レジスタの内容の退避時
に、前記ビット群を参照してそのビットが内容の変化を
示すときは前記退避領域への格納アドレスの更新を行っ
て対応レジスタの内容の退避を行い、内容の変化を示さ
ないときは前記格納アドレスの更新及び対応レジスタの
退避を行わないよう制御する手段と、前記退避時に前記
ビット群の内容を全て退避するよう制御する手段と、前
記退避領域の退避内容の前記レジスタへの復元時に、前
記退避中のビッド群を参照してそのビットが内容の変化
を示すときは前記退避領域から読出すべき復元アドレス
の更新を行って対応復元データの対応レジスタへの復元
を行い、内容の変化を示さないときは前記復元アドレス
の更新及び対応レジスタへの復元を行わないよう制御す
る手段とを含むことを特徴とするレジスタ退避及び復元
システム。 - 【請求項4】 前記復元の終了に応答して前記レジスタ
の各々に対応して設けられたビット群を全てクリアする
ようにしたことを特徴とする請求項3記載のレジスタ退
避及び復元システム。 - 【請求項5】 前記退避中のビッド群の参照に際して、
前記退避中のビット群の内容を順次ビットシフトしつつ
シフトアウトしたビットの内容を参照するようにしたこ
とを特徴とする請求項3記載のレジスタ退避及び復元シ
ステム。 - 【請求項6】 前記ビット群の内容が全てクリア状態に
なった時に前記復元処理を終了するようにしたことを特
徴とする請求項5記載のレジスタ退避及び復元システ
ム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8020338A JPH09212371A (ja) | 1996-02-07 | 1996-02-07 | レジスタ退避及び復元システム |
US08/796,057 US5974512A (en) | 1996-02-07 | 1997-02-07 | System for saving and restoring contents of a plurality of registers |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8020338A JPH09212371A (ja) | 1996-02-07 | 1996-02-07 | レジスタ退避及び復元システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH09212371A true JPH09212371A (ja) | 1997-08-15 |
Family
ID=12024361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8020338A Pending JPH09212371A (ja) | 1996-02-07 | 1996-02-07 | レジスタ退避及び復元システム |
Country Status (2)
Country | Link |
---|---|
US (1) | US5974512A (ja) |
JP (1) | JPH09212371A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003233508A (ja) * | 2002-01-04 | 2003-08-22 | Microsoft Corp | コンピューティングシステム中のコプロセッサの計算リソースを制御するための方法およびコンピューティング装置 |
WO2004063925A1 (ja) | 2003-01-09 | 2004-07-29 | Japan Science And Technology Agency | コンテキスト切り替え方法・装置・プログラム・記憶媒体、中央演算装置 |
US7412590B2 (en) | 2004-09-21 | 2008-08-12 | Sanyo Electric Co., Ltd. | Information processing apparatus and context switching method |
JP2015534188A (ja) * | 2012-09-28 | 2015-11-26 | インテル・コーポレーション | ユーザレベルのスレッディングのために即時のコンテキスト切り替えを可能とする新規の命令および高度に効率的なマイクロアーキテクチャ |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6408325B1 (en) * | 1998-05-06 | 2002-06-18 | Sun Microsystems, Inc. | Context switching technique for processors with large register files |
GB2369693B (en) * | 2000-11-29 | 2002-10-16 | Sun Microsystems Inc | Protection for memory modification tracking |
US20030088761A1 (en) * | 2001-11-02 | 2003-05-08 | Paver Nigel C. | Register context usage indicator |
US20030177342A1 (en) * | 2002-03-15 | 2003-09-18 | Hitachi Semiconductor (America) Inc. | Processor with register dirty bits and special save multiple/return instructions |
US7130997B2 (en) * | 2003-05-29 | 2006-10-31 | International Business Machines Corporation | Method of registering a portion of RAM with firmware to preserve the portion during reboot |
EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
US8171268B2 (en) * | 2005-09-19 | 2012-05-01 | Intel Corporation | Technique for context state management to reduce save and restore operations between a memory and a processor using in-use vectors |
US8407715B2 (en) * | 2007-04-30 | 2013-03-26 | National Tsing Hua University | Live range sensitive context switch procedure comprising a plurality of register sets associated with usage frequencies and live set information of tasks |
US8762692B2 (en) * | 2007-09-27 | 2014-06-24 | Intel Corporation | Single instruction for specifying and saving a subset of registers, specifying a pointer to a work-monitoring function to be executed after waking, and entering a low-power mode |
CN103890713B (zh) * | 2011-10-01 | 2018-08-24 | 英特尔公司 | 用于管理处理系统内的寄存器信息的装置及方法 |
US9898330B2 (en) * | 2013-11-11 | 2018-02-20 | Intel Corporation | Compacted context state management |
US9817664B2 (en) | 2015-02-19 | 2017-11-14 | Apple Inc. | Register caching techniques for thread switches |
US10740108B2 (en) | 2017-04-18 | 2020-08-11 | International Business Machines Corporation | Management of store queue based on restoration operation |
US10963261B2 (en) | 2017-04-18 | 2021-03-30 | International Business Machines Corporation | Sharing snapshots across save requests |
US10540184B2 (en) | 2017-04-18 | 2020-01-21 | International Business Machines Corporation | Coalescing store instructions for restoration |
US10782979B2 (en) * | 2017-04-18 | 2020-09-22 | International Business Machines Corporation | Restoring saved architected registers and suppressing verification of registers to be restored |
US10564977B2 (en) | 2017-04-18 | 2020-02-18 | International Business Machines Corporation | Selective register allocation |
US10552164B2 (en) * | 2017-04-18 | 2020-02-04 | International Business Machines Corporation | Sharing snapshots between restoration and recovery |
US10572265B2 (en) | 2017-04-18 | 2020-02-25 | International Business Machines Corporation | Selecting register restoration or register reloading |
US10545766B2 (en) | 2017-04-18 | 2020-01-28 | International Business Machines Corporation | Register restoration using transactional memory register snapshots |
US10489382B2 (en) | 2017-04-18 | 2019-11-26 | International Business Machines Corporation | Register restoration invalidation based on a context switch |
US10649785B2 (en) | 2017-04-18 | 2020-05-12 | International Business Machines Corporation | Tracking changes to memory via check and recovery |
US11010192B2 (en) * | 2017-04-18 | 2021-05-18 | International Business Machines Corporation | Register restoration using recovery buffers |
US10838733B2 (en) | 2017-04-18 | 2020-11-17 | International Business Machines Corporation | Register context restoration based on rename register recovery |
US10403351B1 (en) * | 2018-02-22 | 2019-09-03 | Advanced Micro Devices, Inc. | Save and restore scoreboard |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4099234A (en) * | 1976-11-15 | 1978-07-04 | Honeywell Information Systems Inc. | Input/output processing system utilizing locked processors |
JPH04211837A (ja) * | 1990-03-28 | 1992-08-03 | Nec Corp | レジスタ退避方式 |
US5680570A (en) * | 1991-06-12 | 1997-10-21 | Quantum Corporation | Memory system with dynamically allocatable non-volatile storage capability |
US5689732A (en) * | 1994-06-21 | 1997-11-18 | Sony Corporation | Apparatus for recording and reproducing data having a single recording and reproducing unit and a plurality of detachable interfaces for connecting to different types of computer ports |
US5682517A (en) * | 1994-06-21 | 1997-10-28 | Pitney Bowes Inc. | Method of transferring data to a memory medium in a mailing machine |
US5680640A (en) * | 1995-09-01 | 1997-10-21 | Emc Corporation | System for migrating data by selecting a first or second transfer means based on the status of a data element map initialized to a predetermined state |
-
1996
- 1996-02-07 JP JP8020338A patent/JPH09212371A/ja active Pending
-
1997
- 1997-02-07 US US08/796,057 patent/US5974512A/en not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003233508A (ja) * | 2002-01-04 | 2003-08-22 | Microsoft Corp | コンピューティングシステム中のコプロセッサの計算リソースを制御するための方法およびコンピューティング装置 |
WO2004063925A1 (ja) | 2003-01-09 | 2004-07-29 | Japan Science And Technology Agency | コンテキスト切り替え方法・装置・プログラム・記憶媒体、中央演算装置 |
US8020169B2 (en) | 2003-01-09 | 2011-09-13 | Japan Science And Technology Agency | Context switching system having context cache and a register file for the save and restore context operation |
US7412590B2 (en) | 2004-09-21 | 2008-08-12 | Sanyo Electric Co., Ltd. | Information processing apparatus and context switching method |
JP2015534188A (ja) * | 2012-09-28 | 2015-11-26 | インテル・コーポレーション | ユーザレベルのスレッディングのために即時のコンテキスト切り替えを可能とする新規の命令および高度に効率的なマイクロアーキテクチャ |
Also Published As
Publication number | Publication date |
---|---|
US5974512A (en) | 1999-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH09212371A (ja) | レジスタ退避及び復元システム | |
JPH0353328A (ja) | レジスタ退避回復方法ならびに処理装置 | |
JPS63156236A (ja) | レジスタ装置 | |
US5928356A (en) | Method and apparatus for selectively controlling groups of registers | |
JPS62221732A (ja) | 情報処理装置 | |
JPH1011301A (ja) | マルチタスク処理装置及びマルチタスク処理制御方法 | |
JP2003058381A (ja) | プログラムによる例外処理設定を可能にしたプロセッサ | |
JPH1083349A (ja) | キャッシュ・メモリ・バンク制御装置 | |
EP0953905B1 (en) | Method and apparatus for switching tasks | |
JPS62151940A (ja) | レジスタ退避/復帰方式 | |
JPH1139171A (ja) | マルチタスク処理装置、マルチタスク処理制御方法及び制御プログラム記憶媒体 | |
JPH11167494A (ja) | 演算処理装置、及び演算処理装置のレジスタ管理方法 | |
JPH044630B2 (ja) | ||
JP3278624B2 (ja) | ベクトル処理装置及び最大ベクトル長制御方法 | |
JPH0333954A (ja) | 情報処理装置 | |
JPH04211837A (ja) | レジスタ退避方式 | |
JPH0497433A (ja) | ベクトル計算機 | |
JPH04293159A (ja) | ベクトルデータ処理装置 | |
JP2639988B2 (ja) | データ駆動型データ処理装置 | |
JPH03280132A (ja) | 中央処理装置 | |
JP2799528B2 (ja) | マルチプロセッサシステム | |
JPH03182945A (ja) | 主記憶内データ転送方式 | |
JPH05143331A (ja) | 仮想記憶制御における命令中断情報制御方式 | |
JP2001084151A (ja) | 中央処理装置 | |
JPH08166887A (ja) | 割込み処理からの復帰方法 |