JPH07334376A - マイクロプロセッサ及びマルチタスク管理方法 - Google Patents
マイクロプロセッサ及びマルチタスク管理方法Info
- Publication number
- JPH07334376A JPH07334376A JP6131716A JP13171694A JPH07334376A JP H07334376 A JPH07334376 A JP H07334376A JP 6131716 A JP6131716 A JP 6131716A JP 13171694 A JP13171694 A JP 13171694A JP H07334376 A JPH07334376 A JP H07334376A
- Authority
- JP
- Japan
- Prior art keywords
- register
- stack
- stack pointer
- given
- value
- 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
Landscapes
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】
【目的】 プログラム開発時においてスタック操作によ
る問題点が発生するか否かを容易にチェックすることが
できる技術を提供する。 【構成】 SPレジスタ9に格納されている値、即ち現
状のスタックポインタの値は信号線19を介して、SP
Pレジスタ15に格納されている値は信号線20を介し
て、それぞれSP比較回路17に与えられる。SP比較
回路17はSPレジスタ9に格納されていた値がSPP
レジスタ15に格納されていた値よりも小さい場合には
信号線21を“H”にし、それ以外の場合には信号線2
1を“L”に設定する。信号線21が“L”から“H”
になったときに、SPPレジスタ15にはSPレジスタ
9に格納されていた値が与えられる。 【効果】 SPPレジスタ15には常にスタックポイン
タの最小値が格納されることになる。
る問題点が発生するか否かを容易にチェックすることが
できる技術を提供する。 【構成】 SPレジスタ9に格納されている値、即ち現
状のスタックポインタの値は信号線19を介して、SP
Pレジスタ15に格納されている値は信号線20を介し
て、それぞれSP比較回路17に与えられる。SP比較
回路17はSPレジスタ9に格納されていた値がSPP
レジスタ15に格納されていた値よりも小さい場合には
信号線21を“H”にし、それ以外の場合には信号線2
1を“L”に設定する。信号線21が“L”から“H”
になったときに、SPPレジスタ15にはSPレジスタ
9に格納されていた値が与えられる。 【効果】 SPPレジスタ15には常にスタックポイン
タの最小値が格納されることになる。
Description
【0001】
【産業上の利用分野】この発明はマイクロプロセッサに
関し、特にスタックサイズを考慮してプログラム開発を
行うことができるマイクロプロセッサ、及びこのマイク
ロプロセッサのマルチタスク管理方法に関するものであ
る。
関し、特にスタックサイズを考慮してプログラム開発を
行うことができるマイクロプロセッサ、及びこのマイク
ロプロセッサのマルチタスク管理方法に関するものであ
る。
【0002】
【従来の技術】一般にマイクロプロセッサによって実行
されるプログラムでは、記憶領域においてデータを一時
的に積み上げておく「スタック」という概念が導入され
る。スタックは通常、主記憶装置の所定の領域に割り当
てられる。
されるプログラムでは、記憶領域においてデータを一時
的に積み上げておく「スタック」という概念が導入され
る。スタックは通常、主記憶装置の所定の領域に割り当
てられる。
【0003】例えばサブルーチンが呼び出される場合に
は、そのサブルーチンの実行が終了した後に戻るべき場
所を示す戻り番地がスタックに保存される。あるいはま
た、割り込みが発生した場合にマイクロプロセッサの内
部レジスタの値を一時的に保存しておくのに用いられ
る。さらには一時変数の変数格納領域としても用いられ
る。
は、そのサブルーチンの実行が終了した後に戻るべき場
所を示す戻り番地がスタックに保存される。あるいはま
た、割り込みが発生した場合にマイクロプロセッサの内
部レジスタの値を一時的に保存しておくのに用いられ
る。さらには一時変数の変数格納領域としても用いられ
る。
【0004】図8はスタックが記憶領域500に割り当
てられる様子を示すアドレスの概念図である。図8にお
いて、上側は記憶領域500の高アドレス側に、下側は
低アドレス側に、それぞれ対応している。通常、記憶領
域500においては、プログラムの命令やデータを格納
するプログラム領域100と、スタックが割り当てられ
るスタック領域200とが設定されている。スタック領
域200はスタック最上位アドレス200uとスタック
最下位アドレス200dとに挟まれた領域となってお
り、またここではプログラム領域100の最上位のアド
レスはスタック最下位アドレス200dに一致してい
る。
てられる様子を示すアドレスの概念図である。図8にお
いて、上側は記憶領域500の高アドレス側に、下側は
低アドレス側に、それぞれ対応している。通常、記憶領
域500においては、プログラムの命令やデータを格納
するプログラム領域100と、スタックが割り当てられ
るスタック領域200とが設定されている。スタック領
域200はスタック最上位アドレス200uとスタック
最下位アドレス200dとに挟まれた領域となってお
り、またここではプログラム領域100の最上位のアド
レスはスタック最下位アドレス200dに一致してい
る。
【0005】スタック領域200においてデータが積み
上げられてゆく場合、高アドレス側から低アドレス側へ
と順に積み上げられて行く。図においては白抜きの矢印
でその積み上げられる方向が示されている。
上げられてゆく場合、高アドレス側から低アドレス側へ
と順に積み上げられて行く。図においては白抜きの矢印
でその積み上げられる方向が示されている。
【0006】スタックの一番上(低アドレス)に新たに
データを積み上げることはスタックプッシュと呼ばれ、
一番新しくスタックプッシュされたデータがあるアドレ
スをスタックポインタと呼ぶ。図においてスタックポイ
ンタは参照符号SPで示されている。スタックプッシュ
される度にスタックポインタSPは小さな(低い)アド
レスを示すことになる。
データを積み上げることはスタックプッシュと呼ばれ、
一番新しくスタックプッシュされたデータがあるアドレ
スをスタックポインタと呼ぶ。図においてスタックポイ
ンタは参照符号SPで示されている。スタックプッシュ
される度にスタックポインタSPは小さな(低い)アド
レスを示すことになる。
【0007】一方、スタックにおいて積み上げられたデ
ータの一番上からデータを取り出すことはスタックポッ
プと呼ばれ、スタックポップされる度にスタックポイン
タSPは大きな(高い)アドレスを示すことになる。
ータの一番上からデータを取り出すことはスタックポッ
プと呼ばれ、スタックポップされる度にスタックポイン
タSPは大きな(高い)アドレスを示すことになる。
【0008】スタック領域200は少なくとも、実行す
るプログラムが使用するスタックの大きさ(スタックサ
イズ)だけ確保しておく必要がある。
るプログラムが使用するスタックの大きさ(スタックサ
イズ)だけ確保しておく必要がある。
【0009】スタックそのものはソフトウェア上の概念
であり、効率よくスタックを割り当てて機能させるた
め、マイクロプロセッサにはスタック操作のための様々
な命令が備えられている。そして更に、スタック操作の
ためのこれらの命令を実現するために、様々なハードウ
ェアも備えられている。
であり、効率よくスタックを割り当てて機能させるた
め、マイクロプロセッサにはスタック操作のための様々
な命令が備えられている。そして更に、スタック操作の
ためのこれらの命令を実現するために、様々なハードウ
ェアも備えられている。
【0010】図9はかかるソフトウェア、ハードウェア
を備えたマイクロプロセッサの構成の概略を示すブロッ
ク図である。命令フェッチ部4はデータバス3を介し、
図示されない主記憶装置から命令を読み込む。読み込ま
れた命令は命令デコード部5において解析され、その結
果が命令実行部6に与えられる。命令実行部6はこの命
令に基づいた様々な処理を行う。上述の「スタック操作
のための様々な命令が備えられている」とは、命令に対
応するデータ自身は外部の主記憶装置に存在していて
も、これをデコードして解析する機能や、その命令を実
行する機能を有することを指している。
を備えたマイクロプロセッサの構成の概略を示すブロッ
ク図である。命令フェッチ部4はデータバス3を介し、
図示されない主記憶装置から命令を読み込む。読み込ま
れた命令は命令デコード部5において解析され、その結
果が命令実行部6に与えられる。命令実行部6はこの命
令に基づいた様々な処理を行う。上述の「スタック操作
のための様々な命令が備えられている」とは、命令に対
応するデータ自身は外部の主記憶装置に存在していて
も、これをデコードして解析する機能や、その命令を実
行する機能を有することを指している。
【0011】命令実行部6により、プログラムカウンタ
7、汎用レジスタ8、スタックポインタレジスタ(SP
レジスタ)9が制御される。プログラムカウンタ7には
実行される命令のアドレスが格納される。SPレジスタ
9にはスタックポインタが格納される。
7、汎用レジスタ8、スタックポインタレジスタ(SP
レジスタ)9が制御される。プログラムカウンタ7には
実行される命令のアドレスが格納される。SPレジスタ
9にはスタックポインタが格納される。
【0012】図10はスタックプッシュ命令を行う場合
の処理を示すフローチャートである。スタックプッシュ
命令が実行される場合には、積み上げるべきデータの大
きさだけSPレジスタ9の値が減少される(ステップS
11)。そして主記憶装置において、SPレジスタ9の
更新された値で示されるアドレス(スタックポインタ)
に対し、積み上げるべきデータが格納される(ステップ
S12)。勿論マイクロプロセッサはスタックポップ命
令をも備えている。
の処理を示すフローチャートである。スタックプッシュ
命令が実行される場合には、積み上げるべきデータの大
きさだけSPレジスタ9の値が減少される(ステップS
11)。そして主記憶装置において、SPレジスタ9の
更新された値で示されるアドレス(スタックポインタ)
に対し、積み上げるべきデータが格納される(ステップ
S12)。勿論マイクロプロセッサはスタックポップ命
令をも備えている。
【0013】また、スタックを使用する他の命令の例と
して、サブルーチンコール命令と、リターンサブルーチ
ン命令とがある。サブルーチンコール命令は、「サブル
ーチンの実行が終わった後で次に実行する命令」のアド
レスをスタックプッシュしてからサブルーチンに実行を
移す命令である。また、リターンサブルーチン命令は、
スタックから戻り先のアドレスをスタックポップし、そ
の番地に実行を移すことによってサブルーチンを呼び出
した元のアドレスに戻る命令である。
して、サブルーチンコール命令と、リターンサブルーチ
ン命令とがある。サブルーチンコール命令は、「サブル
ーチンの実行が終わった後で次に実行する命令」のアド
レスをスタックプッシュしてからサブルーチンに実行を
移す命令である。また、リターンサブルーチン命令は、
スタックから戻り先のアドレスをスタックポップし、そ
の番地に実行を移すことによってサブルーチンを呼び出
した元のアドレスに戻る命令である。
【0014】この他、マイクロプロセッサ内部に汎用レ
ジスタ8が複数設けられ、一つの命令でスタックにセー
ブ、リストアする命令などがある。こうしてマイクロプ
ロセッサにスタックを操作するハードウェアや命令を備
えることで、スタック操作は高速化され、また簡単化さ
れていく。
ジスタ8が複数設けられ、一つの命令でスタックにセー
ブ、リストアする命令などがある。こうしてマイクロプ
ロセッサにスタックを操作するハードウェアや命令を備
えることで、スタック操作は高速化され、また簡単化さ
れていく。
【0015】また、マイクロプロセッサは通常、更に割
り込みスタックポインタレジスタ(SPIレジスタ)1
0を備えている。そして、SPIレジスタ10には、割
り込みルーチン実行中のスタックポインタが格納され
る。このように最近のマイクロプロセッサでは、割り込
みルーチン実行中とそうでない時とで、使用するスタッ
ク領域を自動的に変更し、それぞれのスタックポインタ
を格納するレジスタを別々に有するのが通常である。
り込みスタックポインタレジスタ(SPIレジスタ)1
0を備えている。そして、SPIレジスタ10には、割
り込みルーチン実行中のスタックポインタが格納され
る。このように最近のマイクロプロセッサでは、割り込
みルーチン実行中とそうでない時とで、使用するスタッ
ク領域を自動的に変更し、それぞれのスタックポインタ
を格納するレジスタを別々に有するのが通常である。
【0016】
【発明が解決しようとする課題】しかし、実行しようと
するプログラムが使用するスタック領域200のサイズ
の見積が誤っていると、スタックがスタック領域200
をオーバーフローし、プログラムが暴走する危険性があ
る。通常、スタック領域200を主記憶装置のどの領域
にどれだけのサイズで設定するかはプログラム開発者が
計算して決定するため、スタックがオーバーフローする
ことはしばしば生じる問題である。
するプログラムが使用するスタック領域200のサイズ
の見積が誤っていると、スタックがスタック領域200
をオーバーフローし、プログラムが暴走する危険性があ
る。通常、スタック領域200を主記憶装置のどの領域
にどれだけのサイズで設定するかはプログラム開発者が
計算して決定するため、スタックがオーバーフローする
ことはしばしば生じる問題である。
【0017】図11はスタックがオーバーフローする様
子を示すアドレスの概念図である。スタックがスタック
領域200を越えて積まれ、スタックポインタSPはス
タック最下位アドレス200dよりも低いアドレスにな
っている。このため、プログラム領域100の高アドレ
ス側の領域100aにおいてもスタックが積まれ、領域
100aにおいて予め記憶されていたデータが破壊され
てしまう。この様な事態に陥った場合、破壊された領域
100aを対象としてプログラムが実行されると、もは
や正常な動作は行われないという問題点があった。
子を示すアドレスの概念図である。スタックがスタック
領域200を越えて積まれ、スタックポインタSPはス
タック最下位アドレス200dよりも低いアドレスにな
っている。このため、プログラム領域100の高アドレ
ス側の領域100aにおいてもスタックが積まれ、領域
100aにおいて予め記憶されていたデータが破壊され
てしまう。この様な事態に陥った場合、破壊された領域
100aを対象としてプログラムが実行されると、もは
や正常な動作は行われないという問題点があった。
【0018】スタック領域の設定ミスによるこのような
問題点は、その原因を特定するのが困難である。という
のも、スタックのオーバーフローが生じた時に直ちにプ
ログラムが暴走するわけではなく、スタックによって破
壊された領域100aにプログラムの実行が及んだ時点
で初めて動作不良が発生するためである。この時には既
にスタックポインタは最初に設定したスタック領域20
0内に戻ってしまっているため、スタックによって領域
100aのデータが破壊されたかどうかを直ちに特定す
ることができない。
問題点は、その原因を特定するのが困難である。という
のも、スタックのオーバーフローが生じた時に直ちにプ
ログラムが暴走するわけではなく、スタックによって破
壊された領域100aにプログラムの実行が及んだ時点
で初めて動作不良が発生するためである。この時には既
にスタックポインタは最初に設定したスタック領域20
0内に戻ってしまっているため、スタックによって領域
100aのデータが破壊されたかどうかを直ちに特定す
ることができない。
【0019】また逆に、スタックの使用が間違っていた
りすると、スタック最上位アドレス200uよりも高ア
ドレス側に対してスタックポップを行ってしまう、スタ
ックアンダーフローを生じさせるという問題点もある。
りすると、スタック最上位アドレス200uよりも高ア
ドレス側に対してスタックポップを行ってしまう、スタ
ックアンダーフローを生じさせるという問題点もある。
【0020】これらのような、スタック操作に起因する
問題点を防ぐには、プログラムが使用するスタックのス
タックサイズを正確に把握する必要がある。そしてスタ
ックサイズを正確に把握できれば確保すべきスタック領
域200は最小限度に抑えることができるので、主記憶
装置の記憶領域を節約することができる。
問題点を防ぐには、プログラムが使用するスタックのス
タックサイズを正確に把握する必要がある。そしてスタ
ックサイズを正確に把握できれば確保すべきスタック領
域200は最小限度に抑えることができるので、主記憶
装置の記憶領域を節約することができる。
【0021】しかし、プログラムが使用するスタックサ
イズを算定することは可能であるものの、高級言語でプ
ログラムを既述する場合にはその算定は面倒な場合があ
る。また、初級プログラマーがスタックという概念を知
らずにプログラミングすれば、その算定は不可能であ
る。
イズを算定することは可能であるものの、高級言語でプ
ログラムを既述する場合にはその算定は面倒な場合があ
る。また、初級プログラマーがスタックという概念を知
らずにプログラミングすれば、その算定は不可能であ
る。
【0022】そこで、実際にプログラムを実行させてス
タックサイズを調べる方法が考えられている。従来で
は、適当なタイミングでスタックポインタの値をチェッ
クすることにより、スタックにおいて必要なサイズが求
められていた。しかしそのタイミングにおいてスタック
ポインタがピーク値をとるとは限らず、プログラム領域
100の破壊という問題点を完全に払拭することはでき
ない。
タックサイズを調べる方法が考えられている。従来で
は、適当なタイミングでスタックポインタの値をチェッ
クすることにより、スタックにおいて必要なサイズが求
められていた。しかしそのタイミングにおいてスタック
ポインタがピーク値をとるとは限らず、プログラム領域
100の破壊という問題点を完全に払拭することはでき
ない。
【0023】この発明は以上のような問題点を解消する
ためになされたもので、プログラムが使用するスタック
サイズを正確に知ることができるマイクロプロセッサを
提供し、プログラム開発時においてスタック操作による
問題点が発生するか否かを容易にチェックすることがで
きる技術を提供することを目的としている。
ためになされたもので、プログラムが使用するスタック
サイズを正確に知ることができるマイクロプロセッサを
提供し、プログラム開発時においてスタック操作による
問題点が発生するか否かを容易にチェックすることがで
きる技術を提供することを目的としている。
【0024】
【課題を解決するための手段】この発明のうち請求項1
にかかるものは、スタック操作を行うマイクロプロセッ
サであって、(a)スタックの現状のスタックポインタ
を格納するスタックポインタレジスタと、(b)スタッ
クポインタピークレジスタと、(c)(c−1)前記ス
タックポインタレジスタの格納するデータが与えられる
第1入力端と、(c−2)前記スタックポインタピーク
レジスタの格納するデータが与えられる第2入力端と、
(c−3)前記第1入力端に与えられたデータと、前記
第2入力端に与えられたデータとを比較し、所定の大小
関係に基づいて前記スタックポインタピークレジスタの
格納するデータを更新する出力端とを有する比較器と、
(d)前記スタックポインタピークレジスタに対して所
定の値を格納する命令を解析する、命令解析部とを備え
るマイクロプロセッサである。
にかかるものは、スタック操作を行うマイクロプロセッ
サであって、(a)スタックの現状のスタックポインタ
を格納するスタックポインタレジスタと、(b)スタッ
クポインタピークレジスタと、(c)(c−1)前記ス
タックポインタレジスタの格納するデータが与えられる
第1入力端と、(c−2)前記スタックポインタピーク
レジスタの格納するデータが与えられる第2入力端と、
(c−3)前記第1入力端に与えられたデータと、前記
第2入力端に与えられたデータとを比較し、所定の大小
関係に基づいて前記スタックポインタピークレジスタの
格納するデータを更新する出力端とを有する比較器と、
(d)前記スタックポインタピークレジスタに対して所
定の値を格納する命令を解析する、命令解析部とを備え
るマイクロプロセッサである。
【0025】この発明のうち請求項2にかかるものは、
請求項1記載のマイクロプロセッサであって、前記所定
の大小関係とは、前記第1入力端に与えられたデータが
前記第2入力端に与えられたデータよりも小さい場合
に、前記スタックポインタピークレジスタの値を、前記
第1入力端に与えられたデータに更新することを示す。
請求項1記載のマイクロプロセッサであって、前記所定
の大小関係とは、前記第1入力端に与えられたデータが
前記第2入力端に与えられたデータよりも小さい場合
に、前記スタックポインタピークレジスタの値を、前記
第1入力端に与えられたデータに更新することを示す。
【0026】この発明のうち請求項3にかかるものは、
請求項1記載のマイクロプロセッサであって、前記所定
の大小関係とは、前記第1入力端に与えられたデータが
前記第2入力端に与えられたデータよりも大きい場合
に、前記スタックポインタピークレジスタの値を、前記
第1入力端に与えられたデータに更新することを示す。
請求項1記載のマイクロプロセッサであって、前記所定
の大小関係とは、前記第1入力端に与えられたデータが
前記第2入力端に与えられたデータよりも大きい場合
に、前記スタックポインタピークレジスタの値を、前記
第1入力端に与えられたデータに更新することを示す。
【0027】この発明のうち請求項4にかかるものは、
複数のスタックモードの制御を行うマイクロプロセッサ
であって、(a)前記複数のスタックモードのそれぞれ
に対応して設けられ、各スタックモードの現状のスタッ
クポインタをそれぞれ格納する複数のスタックポインタ
レジスタと、(b)前記複数のスタックポインタレジス
タに対応して設けられたスタックポンタピークレジスタ
と、(c)前記複数のスタックポインタレジスタに対応
して設けられ、その各々が、(c−1)対応する前記ス
タックポインタレジスタの格納するデータが与えられる
第1入力端と、(c−2)対応する前記スタックポイン
タピークレジスタの格納するデータが与えられる第2入
力端と、(c−3)前記第1入力端に与えられたデータ
と、前記第2入力端に与えられたデータとを比較し、所
定の大小関係に基づいて前記スタックポインタピークレ
ジスタの格納するデータを更新する出力端とを有する複
数の比較器とを備える。
複数のスタックモードの制御を行うマイクロプロセッサ
であって、(a)前記複数のスタックモードのそれぞれ
に対応して設けられ、各スタックモードの現状のスタッ
クポインタをそれぞれ格納する複数のスタックポインタ
レジスタと、(b)前記複数のスタックポインタレジス
タに対応して設けられたスタックポンタピークレジスタ
と、(c)前記複数のスタックポインタレジスタに対応
して設けられ、その各々が、(c−1)対応する前記ス
タックポインタレジスタの格納するデータが与えられる
第1入力端と、(c−2)対応する前記スタックポイン
タピークレジスタの格納するデータが与えられる第2入
力端と、(c−3)前記第1入力端に与えられたデータ
と、前記第2入力端に与えられたデータとを比較し、所
定の大小関係に基づいて前記スタックポインタピークレ
ジスタの格納するデータを更新する出力端とを有する複
数の比較器とを備える。
【0028】この発明のうち請求項5にかかるものは、
請求項1記載のマイクロプロセッサにおいて複数のタス
クを時分割で実行させるマルチタスク管理方法であっ
て、(e)一の前記タスクを中断し、前記スタックポイ
ンタピークレジスタ及び前記スタックポインタレジスタ
の値を前記一のタスクのコンテキストとしてセーブする
工程と、(f)他の前記タスクを開始させ、中断させる
工程と、(g)前記一のタスクのコンテキストをリスト
アする工程と、(h)前記一のタスクを、前記一のタス
クのコンテキストに基づいて開始させる工程とを備え
る。
請求項1記載のマイクロプロセッサにおいて複数のタス
クを時分割で実行させるマルチタスク管理方法であっ
て、(e)一の前記タスクを中断し、前記スタックポイ
ンタピークレジスタ及び前記スタックポインタレジスタ
の値を前記一のタスクのコンテキストとしてセーブする
工程と、(f)他の前記タスクを開始させ、中断させる
工程と、(g)前記一のタスクのコンテキストをリスト
アする工程と、(h)前記一のタスクを、前記一のタス
クのコンテキストに基づいて開始させる工程とを備え
る。
【0029】
【作用】この発明のうち請求項1にかかるマイクロプロ
セッサにおいては、プログラムを実行した際に変動する
スタックポインタのピーク値がスタックポインタピーク
レジスタに格納される。
セッサにおいては、プログラムを実行した際に変動する
スタックポインタのピーク値がスタックポインタピーク
レジスタに格納される。
【0030】この発明のうち請求項2にかかるマイクロ
プロセッサにおいては、プログラム実行中にとりえたス
タックポインタの最小ピーク値がスタックポインタピー
クレジスタに格納される。
プロセッサにおいては、プログラム実行中にとりえたス
タックポインタの最小ピーク値がスタックポインタピー
クレジスタに格納される。
【0031】この発明のうち請求項3にかかるマイクロ
プロセッサにおいては、プログラム実行中にとりえたス
タックポインタの最大ピーク値がスタックポインタピー
クレジスタに格納される。
プロセッサにおいては、プログラム実行中にとりえたス
タックポインタの最大ピーク値がスタックポインタピー
クレジスタに格納される。
【0032】この発明のうち請求項4にかかるマイクロ
プロセッサにおいては、複数のスタック毎にスタックポ
インタのピーク値がスタックポインタピークレジスタに
格納される。
プロセッサにおいては、複数のスタック毎にスタックポ
インタのピーク値がスタックポインタピークレジスタに
格納される。
【0033】この発明のうち請求項5にかかるマルチタ
スク管理方法においては、タスクの中断・再開に際し
て、タスクのコンテキストとしてスタックポインタレジ
スタの値、スタックポインタピークレジスタの値がセー
ブ、リストアされる。
スク管理方法においては、タスクの中断・再開に際し
て、タスクのコンテキストとしてスタックポインタレジ
スタの値、スタックポインタピークレジスタの値がセー
ブ、リストアされる。
【0034】
第1実施例:図1はこの発明の第1実施例にかかるマイ
クロプロセッサ11の構造を示すブロック図である。マ
イクロプロセッサ11は、図9に示された従来のマイク
ロプロセッサ1と同様に、命令フェッチ部4、命令デコ
ード部5、命令実行部6、プログラムカウンタ7、汎用
レジスタ8、SPレジスタ9を備えている。しかし、更
に追加してスタックポインタ比較回路(SP比較回路)
17、スタックポインタピークレジスタ(SPPレジス
タ)15が設けられている。
クロプロセッサ11の構造を示すブロック図である。マ
イクロプロセッサ11は、図9に示された従来のマイク
ロプロセッサ1と同様に、命令フェッチ部4、命令デコ
ード部5、命令実行部6、プログラムカウンタ7、汎用
レジスタ8、SPレジスタ9を備えている。しかし、更
に追加してスタックポインタ比較回路(SP比較回路)
17、スタックポインタピークレジスタ(SPPレジス
タ)15が設けられている。
【0035】SPPレジスタ15はSPレジスタ9と同
様に、ソフトウェア命令に基づき、命令実行部6によっ
て、信号線14を介してその値を設定することができ
る。
様に、ソフトウェア命令に基づき、命令実行部6によっ
て、信号線14を介してその値を設定することができ
る。
【0036】SPレジスタ9に格納されている値、即ち
現状のスタックポインタの値は信号線19を介して、S
PPレジスタ15に格納されている値は信号線20を介
して、それぞれSP比較回路17に与えられる。SP比
較回路17は通常用いられる大小比較器で構成され、S
Pレジスタ9に格納されていた値が、SPPレジスタ1
5に格納されていた値よりも小さい場合には信号線21
を“H”にし、それ以外の場合には信号線21を“L”
に設定する。
現状のスタックポインタの値は信号線19を介して、S
PPレジスタ15に格納されている値は信号線20を介
して、それぞれSP比較回路17に与えられる。SP比
較回路17は通常用いられる大小比較器で構成され、S
Pレジスタ9に格納されていた値が、SPPレジスタ1
5に格納されていた値よりも小さい場合には信号線21
を“H”にし、それ以外の場合には信号線21を“L”
に設定する。
【0037】SPPレジスタ15は一種のラッチ回路で
構成されており、SPレジスタ9に格納されていた値が
信号線22を介して与えられている。そして信号線21
が“L”から“H”になったときに、SPPレジスタ1
5にはSPレジスタ9に格納されていた値が与えられ
る。即ちSPPレジスタ15は現状のスタックポインタ
の値を用いて更新される。この様な動作によって、SP
Pレジスタ15には常にスタックポインタの最小値が格
納されることになる。
構成されており、SPレジスタ9に格納されていた値が
信号線22を介して与えられている。そして信号線21
が“L”から“H”になったときに、SPPレジスタ1
5にはSPレジスタ9に格納されていた値が与えられ
る。即ちSPPレジスタ15は現状のスタックポインタ
の値を用いて更新される。この様な動作によって、SP
Pレジスタ15には常にスタックポインタの最小値が格
納されることになる。
【0038】図2は、この実施例においてスタックプッ
シュ命令を実行する場合の手順を示すフローチャートで
ある。図10において示された従来のスタックプッシュ
命令を実行する場合と比較して、ステップS11,S1
2の間にステップS13,S14が介在した構成となっ
ている。ステップS13ではSPレジスタ9に格納され
ていた値が、SPPレジスタ15に格納されていた値よ
りも小さいか否かが判断され、“Y”の場合にはステッ
プS14において、SPレジスタ9に格納されていた値
がSPPレジスタ15に与えられる。
シュ命令を実行する場合の手順を示すフローチャートで
ある。図10において示された従来のスタックプッシュ
命令を実行する場合と比較して、ステップS11,S1
2の間にステップS13,S14が介在した構成となっ
ている。ステップS13ではSPレジスタ9に格納され
ていた値が、SPPレジスタ15に格納されていた値よ
りも小さいか否かが判断され、“Y”の場合にはステッ
プS14において、SPレジスタ9に格納されていた値
がSPPレジスタ15に与えられる。
【0039】第1実施例にかかるマイクロプロセッサで
はこの様に動作するので、一時的にせよ、スタックポイ
ンタが到達したアドレスの最小値がSPPレジスタ15
に格納されている。従って、プログラムの開発時(特に
デバッグ時)に、スタック領域を何処まで使用したか、
スタックオーバーフローが生じなかったか否かを確実に
把握することができる。
はこの様に動作するので、一時的にせよ、スタックポイ
ンタが到達したアドレスの最小値がSPPレジスタ15
に格納されている。従って、プログラムの開発時(特に
デバッグ時)に、スタック領域を何処まで使用したか、
スタックオーバーフローが生じなかったか否かを確実に
把握することができる。
【0040】図3はこの把握の様子を示すフローチャー
トである。ステップS15において、デバッグすべきプ
ログラムの実行に先だって、SPレジスタ9、SPPレ
ジスタ15にそれぞれスタック最上位アドレス200u
を初期値として与える。かかる初期値を与えるのは、ス
タックプッシュが実行され、スタックの積み上げが為さ
れたときには、必ずスタックポインタが低アドレス側に
移動するためである。
トである。ステップS15において、デバッグすべきプ
ログラムの実行に先だって、SPレジスタ9、SPPレ
ジスタ15にそれぞれスタック最上位アドレス200u
を初期値として与える。かかる初期値を与えるのは、ス
タックプッシュが実行され、スタックの積み上げが為さ
れたときには、必ずスタックポインタが低アドレス側に
移動するためである。
【0041】ステップS16においてデバッグすべきプ
ログラムが実行される。この実行によってスタックポイ
ンタは様々に移動するが、その最小のアドレスはSPP
レジスタ15において格納されている。従ってステップ
S17において、SPPレジスタ15に格納された値を
読み出すことにより、スタックポインタがプログラム実
行中にたとえ一時的にせよ何処まで移動したかをチェッ
クすることができる。
ログラムが実行される。この実行によってスタックポイ
ンタは様々に移動するが、その最小のアドレスはSPP
レジスタ15において格納されている。従ってステップ
S17において、SPPレジスタ15に格納された値を
読み出すことにより、スタックポインタがプログラム実
行中にたとえ一時的にせよ何処まで移動したかをチェッ
クすることができる。
【0042】勿論、SPPレジスタ15にはスタック最
上位アドレス200uを初期値としてセットするのみな
らず、スタック最上位アドレス200uよりも高アドレ
ス側であれば、他の任意の値をセットすることができ
る。この場合、SPPレジスタ15には自動的にその時
のスタックポインタの値がコピーされることになる。
上位アドレス200uを初期値としてセットするのみな
らず、スタック最上位アドレス200uよりも高アドレ
ス側であれば、他の任意の値をセットすることができ
る。この場合、SPPレジスタ15には自動的にその時
のスタックポインタの値がコピーされることになる。
【0043】一方、SP比較回路17が、SPレジスタ
9に格納されていた値が、SPPレジスタ15に格納さ
れていた値よりも大きい場合には信号線21を“H”に
し、それ以外の場合には信号線21を“L”に設定する
様に動作するものを用いれば、SPPレジスタ15には
常にスタックポインタの最大値が格納されることにな
る。よって、上記の動作と同様にしてスタックアンダー
フローを検出することができる。
9に格納されていた値が、SPPレジスタ15に格納さ
れていた値よりも大きい場合には信号線21を“H”に
し、それ以外の場合には信号線21を“L”に設定する
様に動作するものを用いれば、SPPレジスタ15には
常にスタックポインタの最大値が格納されることにな
る。よって、上記の動作と同様にしてスタックアンダー
フローを検出することができる。
【0044】勿論、SP比較回路17が、複数の動作モ
ードを有するようにしておき、必要に応じてスタックオ
ーバーフローとスタックアンダーフローの何れかを選択
して検出することもできる。
ードを有するようにしておき、必要に応じてスタックオ
ーバーフローとスタックアンダーフローの何れかを選択
して検出することもできる。
【0045】なお、デバッグすべきプログラムの実行に
先だって、モニタプログラムを実行させる場合がある。
しかし、この発明ではスタックポインタピークレジスタ
に予め所定の値を格納する命令を実行することができる
ので、プログラム開発時においてモニタプログラムが前
もって実行されスタックポインタピークレジスタに既に
何らかの値が格納されていても、新たにスタックポイン
タピークレジスタの値を初期化する事ができる。従っ
て、スタックが必要とする領域の検出は、モニタプログ
ラムの実行によって誤ることはない。
先だって、モニタプログラムを実行させる場合がある。
しかし、この発明ではスタックポインタピークレジスタ
に予め所定の値を格納する命令を実行することができる
ので、プログラム開発時においてモニタプログラムが前
もって実行されスタックポインタピークレジスタに既に
何らかの値が格納されていても、新たにスタックポイン
タピークレジスタの値を初期化する事ができる。従っ
て、スタックが必要とする領域の検出は、モニタプログ
ラムの実行によって誤ることはない。
【0046】第2実施例:図4は第2実施例にかかるマ
イクロプロセッサ11aの構成を示すブロック図であ
る。
イクロプロセッサ11aの構成を示すブロック図であ
る。
【0047】第1実施例におけるSP比較回路17に対
応してSP比較回路17a,17bが、SPPレジスタ
15に対応してSPPレジスタ15a,15bが、それ
ぞれ設けられている。SPレジスタ9、SP比較回路1
7a、SPPレジスタ15aの接続関係と、SPレジス
タ9、SP比較回路17b、SPPレジスタ15bの接
続関係とは、共に第1実施例で示されたSPレジスタ
9、SP比較回路17、SPPレジスタ15の接続関係
と同様である。
応してSP比較回路17a,17bが、SPPレジスタ
15に対応してSPPレジスタ15a,15bが、それ
ぞれ設けられている。SPレジスタ9、SP比較回路1
7a、SPPレジスタ15aの接続関係と、SPレジス
タ9、SP比較回路17b、SPPレジスタ15bの接
続関係とは、共に第1実施例で示されたSPレジスタ
9、SP比較回路17、SPPレジスタ15の接続関係
と同様である。
【0048】SPレジスタ9に格納されていた値が、S
PPレジスタ15に格納されていた値よりも小さい場合
には、SP比較回路17aはSPPレジスタ15aをし
てSPレジスタ9に格納されていた値を格納せしめる。
PPレジスタ15に格納されていた値よりも小さい場合
には、SP比較回路17aはSPPレジスタ15aをし
てSPレジスタ9に格納されていた値を格納せしめる。
【0049】一方、SPレジスタ9に格納されていた値
が、SPPレジスタ15に格納されていた値よりも大き
い場合には、SP比較回路17bはSPPレジスタ15
bをしてSPレジスタ9に格納されていた値を格納せし
める。
が、SPPレジスタ15に格納されていた値よりも大き
い場合には、SP比較回路17bはSPPレジスタ15
bをしてSPレジスタ9に格納されていた値を格納せし
める。
【0050】第2実施例は以上の様に構成され、機能す
るので、スタックポインタの最大値及び最小値をチェッ
クすることができ、スタックオーバーフロー、スタック
アンダーフローの何れをも検出することができる。
るので、スタックポインタの最大値及び最小値をチェッ
クすることができ、スタックオーバーフロー、スタック
アンダーフローの何れをも検出することができる。
【0051】第3実施例:図5は第2実施例にかかるマ
イクロプロセッサ11bの構成を示すブロック図であ
る。
イクロプロセッサ11bの構成を示すブロック図であ
る。
【0052】マイクロプロセッサ11bは、第1実施例
に示されたマイクロプロセッサ11に追加して、SPI
レジスタ10、割り込みスタックポインタ比較回路(S
PI比較回路)18、割り込みスタックポインタピーク
レジスタ(SPIPレジスタ)16を設けた構成を有し
ている。
に示されたマイクロプロセッサ11に追加して、SPI
レジスタ10、割り込みスタックポインタ比較回路(S
PI比較回路)18、割り込みスタックポインタピーク
レジスタ(SPIPレジスタ)16を設けた構成を有し
ている。
【0053】割り込みルーチン実行時においてもスタッ
クを使用し、複数のスタックモードを持つマイクロプロ
セッサでは、それぞれのスタックモード毎にスタックポ
インタレジスタを有している。そこで、この様な場合に
本発明を適用したのが、第3実施例である。
クを使用し、複数のスタックモードを持つマイクロプロ
セッサでは、それぞれのスタックモード毎にスタックポ
インタレジスタを有している。そこで、この様な場合に
本発明を適用したのが、第3実施例である。
【0054】SPIレジスタ10、SPI比較回路1
8、SPIPレジスタ16の接続関係は、第1実施例で
示されたSPレジスタ9、SP比較回路17、SPPレ
ジスタ15の接続関係と同様である。従って、割り込み
ルーチンにおいてもスタックポインタの最大値若しくは
最小値であるピーク値をチェックすることができる。
8、SPIPレジスタ16の接続関係は、第1実施例で
示されたSPレジスタ9、SP比較回路17、SPPレ
ジスタ15の接続関係と同様である。従って、割り込み
ルーチンにおいてもスタックポインタの最大値若しくは
最小値であるピーク値をチェックすることができる。
【0055】第4実施例:マイクロプロセッサにおい
て、複数のタスクを実行させるマルチタスクオペレーシ
ョンシステム(マルチタスクOS)が稼働される場合が
ある。マルチタスクOSは、その上で複数のプログラム
(タスク)を同時に動作させるソフトウェアである。
「同時に」とはいえ、通常のマイクロプロセッサは一度
に一つの処理しかできないために、複数のタスクは時分
割で実行される。
て、複数のタスクを実行させるマルチタスクオペレーシ
ョンシステム(マルチタスクOS)が稼働される場合が
ある。マルチタスクOSは、その上で複数のプログラム
(タスク)を同時に動作させるソフトウェアである。
「同時に」とはいえ、通常のマイクロプロセッサは一度
に一つの処理しかできないために、複数のタスクは時分
割で実行される。
【0056】図6はこのようなタスクの切り替えの手順
を示すフローチャートである。簡単の為に2つのタスク
を切り替える場合について説明するが、更に多くのタス
クを切り替える場合についても同様に行われる。便宜
上、図9に示された従来のマイクロプロセッサ1を参照
して説明する。
を示すフローチャートである。簡単の為に2つのタスク
を切り替える場合について説明するが、更に多くのタス
クを切り替える場合についても同様に行われる。便宜
上、図9に示された従来のマイクロプロセッサ1を参照
して説明する。
【0057】第1のタスクが実行されており、これが中
断される(ステップS20)。タスクを時分割で切り替
える際に、直前まで実行していた第1のタスクのコンテ
キスト(タスクの状態を示す情報)として、マイクロプ
ロセッサの内部レジスタの値を主記憶装置にセーブする
(ステップS21,S22,S23)。そして第2のタ
スクの実行が開始される(ステップS25)。この際、
後述する内部レジスタの値のリストアが、第2のタスク
に関しても行われる(ステップS24)。
断される(ステップS20)。タスクを時分割で切り替
える際に、直前まで実行していた第1のタスクのコンテ
キスト(タスクの状態を示す情報)として、マイクロプ
ロセッサの内部レジスタの値を主記憶装置にセーブする
(ステップS21,S22,S23)。そして第2のタ
スクの実行が開始される(ステップS25)。この際、
後述する内部レジスタの値のリストアが、第2のタスク
に関しても行われる(ステップS24)。
【0058】この後、第2のタスクの実行が終了した
後、ステップS21,S22,S23と同様のセーブ
が、第2のタスクに関して行われる(ステップS2
6)。次に第1のタスクに関して主記憶装置にセーブさ
れていた内部レジスタの値をリストアし(ステップS2
7,S28,S29)、再度第1のタスクが続行される
(ステップS30)。なお、ステップS24におけるリ
ストアは、ステップS27,S28,S29に対応して
いる。
後、ステップS21,S22,S23と同様のセーブ
が、第2のタスクに関して行われる(ステップS2
6)。次に第1のタスクに関して主記憶装置にセーブさ
れていた内部レジスタの値をリストアし(ステップS2
7,S28,S29)、再度第1のタスクが続行される
(ステップS30)。なお、ステップS24におけるリ
ストアは、ステップS27,S28,S29に対応して
いる。
【0059】このようにセーブ、リストアされる内部レ
ジスタのデータは、それぞれのタスクにおけるコンテキ
ストに対応しており、タスクが切り替わって、中断、再
開しても同一タスクに関しては連続した処理が可能とな
る。
ジスタのデータは、それぞれのタスクにおけるコンテキ
ストに対応しており、タスクが切り替わって、中断、再
開しても同一タスクに関しては連続した処理が可能とな
る。
【0060】本発明をマルチタスクOSにおいて適用す
る場合には、コンテキストとしてスタックポインタをも
セーブ、リストアする。
る場合には、コンテキストとしてスタックポインタをも
セーブ、リストアする。
【0061】図7は、本発明をマルチタスクOSに適用
した場合の手順を示すフローチャートである。図6に示
されたフローチャートに対し、ステップS22とステッ
プS23との間にステップS31を、ステップS27と
ステップS28の間にステップS34を、それぞれ追加
し、ステップS24をステップS32に、ステップS2
6をステップS33に、それぞれ置換した構成を有して
いる。
した場合の手順を示すフローチャートである。図6に示
されたフローチャートに対し、ステップS22とステッ
プS23との間にステップS31を、ステップS27と
ステップS28の間にステップS34を、それぞれ追加
し、ステップS24をステップS32に、ステップS2
6をステップS33に、それぞれ置換した構成を有して
いる。
【0062】ステップS31において、第1のタスクに
関してSPPレジスタ15の値が、プログラムカウンタ
7の値及び汎用レジスタ8の値並びにSPレジスタ9の
値と同様、コンテキストの一つとしてセーブされる。ま
た、ステップS34においては第1のタスクに関してS
PPレジスタ15の値がコンテキストの一つとしてリス
トアされる。
関してSPPレジスタ15の値が、プログラムカウンタ
7の値及び汎用レジスタ8の値並びにSPレジスタ9の
値と同様、コンテキストの一つとしてセーブされる。ま
た、ステップS34においては第1のタスクに関してS
PPレジスタ15の値がコンテキストの一つとしてリス
トアされる。
【0063】ステップS32においては第2のタスクに
関するリストアが行われるが、これはステップS27,
S34,S28,S29に対応している。また、ステッ
プS33においては第2のタスクに関するセーブが行わ
れるが、これはステップS21,S22,S31,S2
3に対応している。
関するリストアが行われるが、これはステップS27,
S34,S28,S29に対応している。また、ステッ
プS33においては第2のタスクに関するセーブが行わ
れるが、これはステップS21,S22,S31,S2
3に対応している。
【0064】以上のように、第4実施例においては、タ
スクが時分割で実行されていても、各タスク毎にスタッ
ク領域の最大値・最小値を得ることができる。勿論、中
断・再開されることにより、時間的には不連続であって
も、同一タスクに関する限り、スタックが一時的にせよ
最大値・最小値を採った場合にはその値が最後までSP
Pレジスタ15に格納される。従って、各タスク毎にス
タックオーバーフロー、スタックアンダーフローを容易
に検出することができる。
スクが時分割で実行されていても、各タスク毎にスタッ
ク領域の最大値・最小値を得ることができる。勿論、中
断・再開されることにより、時間的には不連続であって
も、同一タスクに関する限り、スタックが一時的にせよ
最大値・最小値を採った場合にはその値が最後までSP
Pレジスタ15に格納される。従って、各タスク毎にス
タックオーバーフロー、スタックアンダーフローを容易
に検出することができる。
【0065】
【発明の効果】この発明のうち請求項1にかかるマイク
ロプロセッサにおいては、スタックポインタピークレジ
スタにおいてスタックポインタのピーク値が格納される
ので、プログラムの途中でたとえ一時的にせよ、スタッ
クとして使用する領域の最大サイズが検出できる。この
ため、プログラムを開発する際にスタック領域の設定に
おいてスタックサイズを考慮することが容易となる。
ロプロセッサにおいては、スタックポインタピークレジ
スタにおいてスタックポインタのピーク値が格納される
ので、プログラムの途中でたとえ一時的にせよ、スタッ
クとして使用する領域の最大サイズが検出できる。この
ため、プログラムを開発する際にスタック領域の設定に
おいてスタックサイズを考慮することが容易となる。
【0066】しかも、スタックポインタピークレジスタ
に予め所定の値を格納する命令を実行することができる
ので、プログラム開発時においてモニタプログラムが前
もって実行され、スタックポインタピークレジスタに既
に何らかの値が格納されていても、新たにスタックポイ
ンタピークレジスタの値を初期化する事ができる。従っ
て、スタックが必要とする領域の検出は、モニタプログ
ラムの実行によって誤ることはない。
に予め所定の値を格納する命令を実行することができる
ので、プログラム開発時においてモニタプログラムが前
もって実行され、スタックポインタピークレジスタに既
に何らかの値が格納されていても、新たにスタックポイ
ンタピークレジスタの値を初期化する事ができる。従っ
て、スタックが必要とする領域の検出は、モニタプログ
ラムの実行によって誤ることはない。
【0067】この発明のうち請求項2にかかるマイクロ
プロセッサにおいては、スタックオーバーフローが生じ
ないようにプログラムを開発することが容易となる。
プロセッサにおいては、スタックオーバーフローが生じ
ないようにプログラムを開発することが容易となる。
【0068】この発明のうち請求項3にかかるマイクロ
プロセッサにおいては、スタックアンダーフローが生じ
ないようにプログラムを開発することが容易となる。
プロセッサにおいては、スタックアンダーフローが生じ
ないようにプログラムを開発することが容易となる。
【0069】この発明のうち請求項4にかかるマイクロ
プロセッサにおいては、複数のスタック毎にスタックが
必要とする領域が検出できる。
プロセッサにおいては、複数のスタック毎にスタックが
必要とする領域が検出できる。
【0070】この発明のうち請求項5にかかるマルチタ
スク管理方法においては、マルチタスクを実行しつつ、
スタックポインタのピーク値が検出できる。
スク管理方法においては、マルチタスクを実行しつつ、
スタックポインタのピーク値が検出できる。
【図1】 この発明の第1実施例を示すブロック図であ
る。
る。
【図2】 この発明の第1実施例の動作を示すフローチ
ャートである。
ャートである。
【図3】 この発明の第1実施例の動作を示すフローチ
ャートである。
ャートである。
【図4】 この発明の第2実施例を示すブロック図であ
る。
る。
【図5】 この発明の第3実施例を示すブロック図であ
る。
る。
【図6】 この発明の第4実施例の前提を示すフローチ
ャートである。
ャートである。
【図7】 この発明の第4実施例の動作を示すフローチ
ャートである。
ャートである。
【図8】 従来の技術を示すアドレスの概念図である。
【図9】 従来の技術を示すブロック図である。
【図10】 従来の技術を示すフローチャートである。
【図11】 樹来の技術の問題点を示す、アドレスの概
念図である。
念図である。
5 命令デコード部、6 命令実行部、9 SPレジス
タ、10 SPIレジスタ、15,15a,15b S
PPレジスタ、16 SPIPレジスタ、17,17
a,17b SP比較回路、18 SPI比較回路。
タ、10 SPIレジスタ、15,15a,15b S
PPレジスタ、16 SPIPレジスタ、17,17
a,17b SP比較回路、18 SPI比較回路。
Claims (5)
- 【請求項1】 スタック操作を行うマイクロプロセッサ
であって、 (a)スタックの現状のスタックポインタを格納するス
タックポインタレジスタと、 (b)スタックポインタピークレジスタと、 (c)(c−1)前記スタックポインタレジスタの格納
するデータが与えられる第1入力端と、(c−2)前記
スタックポインタピークレジスタの格納するデータが与
えられる第2入力端と、(c−3)前記第1入力端に与
えられたデータと、前記第2入力端に与えられたデータ
とを比較し、所定の大小関係に基づいて前記スタックポ
インタピークレジスタの格納するデータを更新する出力
端とを有する比較器と、 (d)前記スタックポインタピークレジスタに対して所
定の値を格納する命令を解析する、命令解析部とを備え
るマイクロプロセッサ。 - 【請求項2】 前記所定の大小関係とは、前記第1入力
端に与えられたデータが前記第2入力端に与えられたデ
ータよりも小さい場合に、前記スタックポインタピーク
レジスタの値を、前記第1入力端に与えられたデータに
更新することを示す、請求項1記載のマイクロプロセッ
サ。 - 【請求項3】 前記所定の大小関係とは、前記第1入力
端に与えられたデータが前記第2入力端に与えられたデ
ータよりも大きい場合に、前記スタックポインタピーク
レジスタの値を、前記第1入力端に与えられたデータに
更新することを示す、請求項1記載のマイクロプロセッ
サ。 - 【請求項4】 複数のスタックモードの制御を行うマイ
クロプロセッサであって、 (a)前記複数のスタックモードのそれぞれに対応して
設けられ、各スタックモードの現状のスタックポインタ
をそれぞれ格納する複数のスタックポインタレジスタ
と、 (b)前記複数のスタックポインタレジスタに対応して
設けられたスタックポンタピークレジスタと、 (c)前記複数のスタックポインタレジスタに対応して
設けられ、その各々が、(c−1)対応する前記スタッ
クポインタレジスタの格納するデータが与えられる第1
入力端と、(c−2)対応する前記スタックポインタピ
ークレジスタの格納するデータが与えられる第2入力端
と、(c−3)前記第1入力端に与えられたデータと、
前記第2入力端に与えられたデータとを比較し、所定の
大小関係に基づいて前記スタックポインタピークレジス
タの格納するデータを更新する出力端とを有する複数の
比較器とを備えるマイクロプロセッサ。 - 【請求項5】 請求項1記載のマイクロプロセッサにお
いて複数のタスクを時分割で実行させるマルチタスク管
理方法であって、 (e)一の前記タスクを中断し、前記スタックポインタ
ピークレジスタ及び前記スタックポインタレジスタの値
を前記一のタスクのコンテキストとしてセーブする工程
と、 (f)他の前記タスクを開始させ、中断させる工程と、 (g)前記一のタスクのコンテキストをリストアする工
程と、 (h)前記一のタスクを、前記一のタスクのコンテキス
トに基づいて開始させる工程とを備えるマルチタスク管
理方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP6131716A JPH07334376A (ja) | 1994-06-14 | 1994-06-14 | マイクロプロセッサ及びマルチタスク管理方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP6131716A JPH07334376A (ja) | 1994-06-14 | 1994-06-14 | マイクロプロセッサ及びマルチタスク管理方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH07334376A true JPH07334376A (ja) | 1995-12-22 |
Family
ID=15064535
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP6131716A Pending JPH07334376A (ja) | 1994-06-14 | 1994-06-14 | マイクロプロセッサ及びマルチタスク管理方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH07334376A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112948000A (zh) * | 2021-03-17 | 2021-06-11 | 星汉智能科技股份有限公司 | 栈空间统计方法、装置及介质 |
-
1994
- 1994-06-14 JP JP6131716A patent/JPH07334376A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112948000A (zh) * | 2021-03-17 | 2021-06-11 | 星汉智能科技股份有限公司 | 栈空间统计方法、装置及介质 |
| CN112948000B (zh) * | 2021-03-17 | 2023-03-03 | 星汉智能科技股份有限公司 | 栈空间统计方法、装置及介质 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6799236B1 (en) | Methods and apparatus for executing code while avoiding interference | |
| US20100017581A1 (en) | Low overhead atomic memory operations | |
| JP2010522932A (ja) | インストールシーケンスのためのブックマークおよび構成ファイル | |
| JPH07191865A (ja) | オペレーティング・システムにおけるインタブロックの分析方法 | |
| JP2005050208A (ja) | マルチタスクシステムにおけるメモリ管理方式およびタスク制御装置 | |
| US6957367B2 (en) | System and method for controlling activity of temporary files in a computer system | |
| JPH10214203A (ja) | 情報処理装置 | |
| JPH07334376A (ja) | マイクロプロセッサ及びマルチタスク管理方法 | |
| US20060026388A1 (en) | Computer executing instructions having embedded synchronization points | |
| JP2000020352A (ja) | スタックオーバーフロー検出方法及びスタックアンダーフロー検出方法 | |
| JPH0895798A (ja) | データ処理装置 | |
| JPH04266141A (ja) | スタックオーバーフロー検出方式 | |
| JP2552738B2 (ja) | データ処理装置 | |
| JPS6376028A (ja) | 仮想計算機システムにおける命令ステツプ実行制御方式 | |
| KR960014825B1 (ko) | 정보처리시스템 | |
| JPH08249206A (ja) | スタック領域破壊検出機能付き計算機 | |
| JPH05165652A (ja) | タスク切替え制御方法 | |
| JP3120841B2 (ja) | インサーキットエミュレータ | |
| CN119025070A (zh) | 浮点运算支持方法、装置、程序文件形成方法及相关设备 | |
| JP2002116926A (ja) | プログラム処理装置およびプログラム処理方法 | |
| JPH11110250A (ja) | ソフトウェア実行モード切替方法 | |
| JPH0816431A (ja) | 利用者プログラムのデバッグ処理システム | |
| JPH0784786A (ja) | プログラム実行制御方法 | |
| JP3039450B2 (ja) | スタック領域の切替方法、方式およびスタック領域切替プログラムを記録した記憶媒体 | |
| JPH07134656A (ja) | 割り込み制御方法及びそれを実現するマルチタスクシステム |