JP2001256062A - 割込処理方法およびその方法を用いた演算処理装置 - Google Patents

割込処理方法およびその方法を用いた演算処理装置

Info

Publication number
JP2001256062A
JP2001256062A JP2000064371A JP2000064371A JP2001256062A JP 2001256062 A JP2001256062 A JP 2001256062A JP 2000064371 A JP2000064371 A JP 2000064371A JP 2000064371 A JP2000064371 A JP 2000064371A JP 2001256062 A JP2001256062 A JP 2001256062A
Authority
JP
Japan
Prior art keywords
program
interrupt
work area
occurrence
time
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
Application number
JP2000064371A
Other languages
English (en)
Inventor
Hiroyuki Yanagi
博之 柳
Motoyuki Katou
意之 加藤
Yosuke Baba
洋介 馬場
Shinji Nakagawa
伸二 中川
Yasuhiro Nishimura
康裕 西村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Omron Corp
Original Assignee
Omron Corp
Omron Tateisi Electronics Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Omron Corp, Omron Tateisi Electronics Co filed Critical Omron Corp
Priority to JP2000064371A priority Critical patent/JP2001256062A/ja
Priority to US09/801,899 priority patent/US6820153B2/en
Publication of JP2001256062A publication Critical patent/JP2001256062A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 メモリ資源を無駄にせず、割込処理の煩雑さ
を解消する。 【解決手段】 優先すべき割込が発生すると、待避・復
元部3は、割込発生時のプログラムカウンタおよび汎用
レジスタを、割込発生時のプログラムの作業領域内に待
避させる。また待避・復元部3は、実行中のスレッド作
業領域4内に割込処理用の作業領域を確保して、この作
業領域内に割込発生時のフレームアドレスを待避させ
る。割込処理が終了すると、待避・復元部3は、待避さ
せていたフレームアドレスから割込発生時のプログラム
の作業領域の設定位置を取得し、その作業領域に待避さ
せていたプログラムカウンタ,汎用レジスタを読み出
し、前記フレームアドレスとともに内部レジスタ7にセ
ットする。これにより割込発生時のプログラムの実行状
態が復元され、プログラムの実行が再開される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、演算処理装置におい
て、所定のプログラムの実行を外部割込の発生に応じて
一時中断し、割込用プログラムを実行する割込処理に関
するもので、殊に、処理内容に応じて動的に作業領域を
確保しながらプログラムを実行する演算処理装置におけ
る割込処理に関連する。
【0002】
【従来の技術】近年のマルチスレッド処理を行う演算処
理装置では、スレッド毎に個別の作業領域(以下各領域
を「スレッド作業領域」という)を設定するとともに、
実行中のスレッドでプログラムの呼出しが行われる都
度、スレッド作業領域内に「フレーム」と呼ばれる作業
領域を積み重ね、新規に呼び出されたプログラムを順に
処理している。
【0003】この種の演算処理装置では、外部割込信号
を受け付けてプログラムの実行を中断して割込処理を実
行するために、割込発生時のプログラムの実行状態や演
算の途中経過などを待避させるための領域(以下「待避
情報格納領域」という)を用意している。この場合、割
込は1つに限らず、連続的に発生するケースもあるの
で、各割込発生時の待避情報を順に格納するようなスタ
ック領域が設定される。
【0004】図6は、この種演算処理装置の従来の構成
を示す。図中、プログラム実行部31,割込制御部3
2,待避・復元部33の各部は、図示しないプロセッサ
(CPU)の機能により実現するもので、スレッド作業
領域34,割込用プログラム作業領域35,待避情報格
納領域36の各領域はRAM内に、割込ベクタ格納領域
37および割込用設定値格納領域38(以下単に「設定
値格納領域38」という)はROMまたはRAMに、そ
れぞれ設定される。
【0005】プログラム実行部31は、プログラムの実
行に必要な情報を格納するための内部レジスタ30を具
備し、この内部レジスタ30および実行中のスレッドに
対応するスレッド作業領域34に情報を読み書きしつつ
プログラムを実行する。なお前記内部レジスタ30に
は、プログラムの実行アドレスの格納レジスタであるプ
ログラムカウンタ,使用中のスレッド作業領域34のア
ドレスを格納するスレッドアドレスレジスタ,プロセッ
サの内部状態を示す情報を格納するステータスレジス
タ,演算の実行結果を格納するための汎用レジスタなど
が含まれる。
【0006】割込制御部32は、外部割込信号を受け付
けて、その信号に応じた割込処理をカレントプログラム
の実行より優先すべきであるかどうかを判断する。そし
て割込処理を優先すべきであると判断した場合は、待避
・復元部33を作動させる。待避・復元部33は、割込
発生時の内部レジスタ30の設定値(以下「レジスタ情
報」という)を一時待避させ、割込処理の終了後に前記
待避させたレジスタ情報を内部レジスタ30に戻して元
のプログラム実行状態を復元するためのもので、内部に
つぎの情報待避先を示すスタックポインタを具備してい
る。
【0007】図7は、前記図1の演算処理装置における
メモリ内のデータ構造を示す。スレッド作業領域34
は、起動しているスレッド(図示例ではM個とする)毎
に設定されており、各スレッド作業領域34内には、そ
れぞれ関数呼出しなどに応じて立ち上げられたプログラ
ムの作業領域が、呼出し順に設定される。なおこれらの
プログラム作業領域は、呼び出されたプログラムの実行
終了に伴って消失し、その位置に新たに呼び出されたプ
ログラムに応じた作業領域が設定される。
【0008】一方、待避情報格納領域36としては、想
定される割込処理の数に応じた数の領域(図示例ではN
個の領域)が設定される。また割込用プログラム作業領
域35には、各割込用プログラムに個別に割り当てられ
た複数の作業領域(図示例ではL個とする)が設定され
る。なお同じ割込が何度も発生する場合に備えて、各プ
ログラムの作業領域は、そのプログラムによる処理が所
定回数繰り返されることを想定した容量に設定される。
【0009】割込ベクタ格納領域37には、割込信号の
種毎に設定された複数の割込用プログラムについて、そ
れぞれ個別に設定されたポインタ(「プログラムポイン
タ」という)が格納される。設定値格納領域38には、
これらのプログラムポインタ毎に、そのポインタに対応
するプログラムの実行に必要な内部レジスタ30の初期
設定値、ならびにそのプログラムに割り当てられた作業
領域の先頭アドレスなどが格納される。
【0010】図8は、割込発生時の処理手順を示し、図
9は、割込処理用のプログラムの終了に伴う手順を示
す。なお便宜上、各図のステップ(ST)には、通し番
号を付けてある。
【0011】以下、各図の流れに沿って、図6の構成の
演算処理装置において、割込の発生ならびに割込処理の
終了に対して実行される処理を説明する。プログラム実
行部31が所定のプログラムを実行している間に、外部
割込信号が与えられると、割込制御部32は、その信号
による割込処理の優先度をチェックする(ST1)。そ
して実行中のプログラムより優先順位の低い処理である
と判断した場合は、ST10で、実行中のプログラムが
終了するまで割込用プログラムの実行を待機させるマス
ク処理を実行する。
【0012】一方、実行中のプログラムより優先順位の
高い処理であると判断すると、割込制御部32は、前記
割込ベクタ格納領域37から前記割込信号に対応するプ
ログラムポインタを読み出して待避・復元部33に送信
する(ST2)。待避・復元部33は、このポインタを
受け付けると、前記プログラム実行部31にプログラム
の中断要求を送信する(ST3)。プログラム実行部3
1は、この中断要求に応じてプログラムを中断すると、
内部レジスタ30よりその時点のレジスタ情報を読み出
して、待避・復元部33に送信する。
【0013】待避・復元部33は、このレジスタ情報の
受信によりプログラムの中断を確認すると、受け取った
レジスタ情報を、前記スタックポインタの値に応じたス
タックレベルの待避情報格納領域36に格納する(ST
4,5)。さらに待避・復元部33は、前記設定値格納
領域38より前記プログラムポインタの値に応じた設定
情報を読み出して、これをプログラム実行部31に伝送
する(ST6)。プログラム実行部31は、与えられた
設定情報に基づき、内部レジスタ30を初期設定すると
ともに、使用中の作業領域から割込用プログラムに割り
当てられた作業領域に移行するためのスレッドの切替え
処理などを実行する(ST7)。
【0014】この設定が完了すると、待避・復元部33
は、前記スタックポインタを「1」加算し、プログラム
実行部31に割込用プログラムの開始要求を送信する
(ST8,9)。プログラム実行部31は、前記開始要
求に応じて割込用プログラムを実行した後、待避・復元
部33に終了通知を送信する。この通知を受けて、待避
・復元部33は、スタックポインタを「1」減算して、
その減算後のスタックレベルに対応する待避情報格納領
域36からレジスタ情報を読み出し、これをプログラム
実行部31に送信する(ST11,12)。プログラム
実行部31は、受け取ったレジスタ情報を内部レジスタ
30にセットすることにより、割込発生前のプログラム
実行状態に復帰する(ST13)。そしてST14での
待避・復元部33からプログラム再開要求が出されるこ
とにより前記中断していたプログラムの実行再開が可能
となる。
【0015】なお複数の優先度の高い割込が続いて発生
した場合、割込が発生する都度、ST1〜9の手順を実
行することにより、スタックポインタを加算しつつ、各
割込発生時のレジスタ情報を待避させながら、割込処理
を実行してゆく。そして割込処理が終わる都度、その処
理のための割込の発生時に待避させたレジスタ情報を順
に読み出して内部レジスタ30に戻すことにより、各割
込発生時のプログラムの実行状態を過去に遡って復元し
てゆき、最終的に最初の割込発生前のプログラム実行状
態を復元して通常の処理を再開する。
【0016】上記の構成によれば、実行中のスレッド作
業領域34の記憶内容を保持したまま、内部レジスタ3
0内のレジスタ情報のみを待避させて割込処理を実行す
るので、待避処理や復元処理に要する時間を短縮して処
理を高速化することが可能となる。
【0017】
【発明が解決しようとする課題】しかしながら上記の構
成には、つぎのような問題点がある。まず連続的な割込
の発生に備えて多数の待避情報格納領域や割込処理の数
に応じた容量の割込用プログラム作業領域を確保してい
るが、これらの領域がすべて使用されることは稀であ
り、殆どの場合は、メモリ資源が無駄に使用されること
になる。また割込発生時に、スタックポインタの値を動
かしたり、割込処理用のスレッドへの切替えを行う必要
があるので、処理が煩雑化する。なお割込用プログラム
作業領域については、通常のスレッド作業領域における
ように、割込が発生する都度、動的に作業領域を設定し
て、メモリ容量の削減をはかることができる。しかしな
がらこの方法によっても、通常のプログラムとは異なる
作業領域が必要となる点には変わりはなく、メモリ資源
を有効に活用したり、処理の煩雑化を回避するには不十
分である。
【0018】この発明は上記問題点に着目してなされた
もので、メモリ資源を無駄にせず、また割込処理の煩雑
さを解消して処理を高速化することを目的とする。
【0019】
【課題を解決するための手段】サン・マイクロシステム
ズ社により開発されたオブジェクト指向言語「Java」
(同社保有の登録商標)に基づき動作する演算処理装置
では、関数の呼出し命令に応じてその関数用のプログラ
ムを実行する毎に、実行中のスレッド作業領域内に呼び
出されたプログラムのための作業領域を動的に設定す
る。そして呼び出された関数用のプログラムの実行にあ
たり、呼出し側のプログラムの作業領域に、前記関数呼
出し時のプログラム実行状態を示すレジスタ情報を待避
させるとともに、前記関数用のプログラムの作業領域
に、呼出し側のプログラムの作業領域に戻るためのアド
レス(フレームアドレス)を書き込む。この状態下で関
数用のプログラムが実行されて終了すると、前記フレー
ムアドレスから呼出し側のプログラムの作業領域に戻
り、その領域内に待避させていたレジスタ情報を読み出
して内部レジスタにセットする。これによりプロセッサ
は、前記関数呼出し時のプログラム実行状態に復帰し
て、元のプログラムの実行を再開するのである。
【0020】この発明は、上記の処理を外部割込に対す
る処理にも適用することにより、割込処理のために必要
なメモリ領域を別途確保する必要をなくし、かつ情報の
待避や復元、プログラムの実行切替えなどに関する処理
の簡単化を実現したもので、請求項1の発明にかかる割
込処理方法は、プログラム実行のための作業領域が動的
に設定されるメモリ領域において、割込の発生に応じて
その割込発生時のプログラムの作業領域に割込発生時の
プログラム実行状態を示すレジスタ情報を待避させると
ともに、前記メモリ領域に割込処理用の作業領域を確保
して、この作業領域に前記割込発生時のプログラムの作
業領域に戻るためのアドレスを待避させる。また割込処
理の終了に応じて前記待避させていたアドレスから前記
割込発生時のプログラムの作業領域に戻り、その作業領
域に待避させていたレジスタ情報を用いて前記割込発生
時のプログラム実行状態を復元する。
【0021】請求項2の発明にかかる演算処理装置は、
読み書き可能なメモリと、前記メモリ内の所定のメモリ
領域に動的に作業領域を確保しつつプログラムを実行す
るプログラム実行手段と、前記プログラム実行手段に対
し、割込の発生に応じてその割込発生時のプログラムの
実行を一時中断させて割込処理用のプログラムを実行さ
せる制御手段とを具備する。前記制御手段は、請求項1
の割込方法を実行するために、前記割込の発生に応じて
前記メモリ領域の割込発生時のプログラムの作業領域に
割込発生時のプログラム実行状態を示すレジスタ情報を
待避させるとともに、前記メモリ領域に割込処理用の作
業領域を設定して、この作業領域に前記割込発生時のプ
ログラムの作業領域に戻るためのアドレスを待避させる
待避処理手段と、割込処理の終了に応じて前記待避させ
ていたアドレスから前記割込発生時の作業領域に戻り、
その作業領域に待避させていたレジスタ情報に基づき前
記割込発生時のプログラム実行状態を復元する復元処理
手段とを具備する。
【0022】前記メモリ領域とは、RAMのような読み
書き可能なメモリ内においてプログラムの実行に割り当
てられた領域であり、マルチスレッド処理が実行される
場合は、各スレッド毎に設定される領域(前記したスレ
ッド作業領域)のことを指す。
【0023】「割込」とは、入出力装置などの周辺装置
からプロセッサに対して不定期に発生する外部割込を意
味する。なお請求項1,2の発明とも、割込発生時のプ
ログラムより割込処理を優先させる必要がある場合の
み、割込発生時のプログラムを一時中断するためのレジ
スタ情報の待避処理が実行される。
【0024】割込発生時のプログラム実行状態を示すレ
ジスタ情報とは、プログラムの実行アドレスを表すプロ
グラムカウンタや、これまでのプログラム実行により得
た演算結果など、プログラムがどこまで実行され、どの
ような結果が得られているかを示すためにプロセッサ内
に保持されていた情報のことをいう。また割込発生時の
プログラムの作業領域に戻るためのアドレスとは、前記
メモリ領域においてそのプログラムの作業領域の先頭ア
ドレス、またはその作業領域内の特定のデータ格納位置
のアドレスなどをいう。
【0025】
【作用】割込が発生すると、割込発生時のプログラム用
の作業領域内に割込発生時のプログラム実行状態を示す
レジスタ情報が格納されるとともに、プログラムの作業
領域が動的に設定されるメモリ領域に割込み処理用の作
業領域が設定され、その領域内に、割込発生時のプログ
ラムの作業領域に戻るためのアドレスが格納される。そ
して一連の割込処理が終了すると、前記待避させていた
アドレスにより割込発生時のプログラムの作業領域に戻
り、その領域内に格納されていたレジスタ情報をプロセ
ッサに戻すことにより、割込発生時のプログラム実行状
態に復帰し、そのプログラムの実行が再開される。
【0026】この方法によれば、待避用の領域や割込処
理のための作業領域用のメモリ領域を別途設定する必要
がない上、割込処理時の作業領域を通常のプログラムと
同様に動的に確保することにより、メモリ内には割込の
発生数に応じた作業領域が設定されるので、メモリ資源
の無駄な使用がなくなる。また通常のプログラムの実行
に用いるメモリ領域において作業を行うから、割込処理
のためのスレッドの切替えも不要となる。さらにJavaに
よるプログラムに基づき動作する演算処理装置において
は、通常のプログラムの呼出しや、呼出し元のプログラ
ムに戻る場合と同様の方法で、割込発生時のプログラム
に対する待避,復元処理を行うことが可能となる。
【0027】
【実施例】図1は、この発明の一実施例にかかる演算処
理装置の構成を示す。この演算処理装置は、Javaによる
ソースプログラムに基づく情報処理を実行するもので、
図中、プログラム実行部1,割込制御部2,待避・復元
部3の各部は、プロセッサに与えられた機能により実現
する。また各スレッド作業領域4はRAMに、割込ベク
タ格納領域5,割込用設定値格納領域6(以下「設定格
納領域」という)はROMまたはRAMに設定される。
【0028】プログラム実行部1は、図示しないプログ
ラム格納領域から実行中のスレッドの実行プログラムを
順に読み出し、内部レジスタ7およびスレッド作業領域
4に情報を読み書きしつつ各プログラムを実行する。な
お内部レジスタ7には、プログラムカウンタ,ステータ
スレジスタ,汎用レジスタの他に、実行中のプログラム
の作業領域の先頭アドレス(フレームアドレス)を格納
するフレームレジスタが設定される。
【0029】この実施例における割込制御部2,待避・
復元部3は、割込の発生に伴って動作するだけでなく、
通常のスレッド実行時のプログラムの呼出しに応じてそ
の呼出し側のプログラムのレジスタ情報を待避させた
り、待避したレジスタ情報を復元する処理を実行する。
またこの実施例では、割込の発生に応じて内部レジスタ
7内のレジスタ情報を待避させるための待避情報格納領
域を設けていないので、待避・復元部3に、従来のよう
なスタックポインタを持たせる必要はない。
【0030】図2は、前記図1の装置におけるメモリ内
のデータ構成を示す。割込ベクタ格納領域5には、従来
と同様に、各割込用プログラムに設定されたプログラム
ポインタが格納される。設定値格納領域6には、各プロ
グラムポインタ毎に、そのポインタに対応する割込用プ
ログラムを実行するのに必要な内部レジスタ7の初期設
定値、およびそのプログラムの実行に必要な作業領域の
メモリサイズなどが格納される。
【0031】スレッド作業領域4は、起動しているスレ
ッド毎に設定される。実行中のスレッドのスレッド作業
領域4には、プログラムの呼出しに応じて順に個別のプ
ログラム作業領域(以下単に「作業領域」という)が確
保され、新規の作業領域から順に処理が実行される。こ
のほか、この実施例では、実行中のスレッド作業領域4
内に、割込の発生に応じて割込用プログラムの作業領域
も確保するようにしている。
【0032】図3は、前記図2の各スレッド作業領域4
のうち、スレッド0の作業領域についての詳細なデータ
構成を示す。図中、8は、所定の処理を実行するための
プログラム(以下「プログラム1−1」という)に対し
て設定された作業領域であって、9は、このプログラム
1−1から呼び出されたプログラム(以下「プログラム
1−2」という)の作業領域である。10は、前記プロ
グラム1−2の実行中に発生した最初の割込(以下「割
込0」という)に対する処理用のプログラムの作業領域
であり、11は、前記割込0に対する処理の実行中に発
生した第2の割込(以下「割込1」という)用のプログ
ラムの作業領域である。
【0033】これらいずれの作業領域8〜11にも、プ
ログラムカウンタ,フレームアドレス,汎用レジスタの
各レジスタ情報を保持するための領域が設定され、残り
の領域がプログラムの実行のための作業領域として機能
する(このようなデータ構成の作業領域を「フレーム構
造体」という)。各作業領域8〜11において、プログ
ラムカウンタおよび汎用レジスタの保持領域には、実行
中のプログラムが中断した際の各レジスタの値、すなわ
ち関数実行のためのプログラムが呼び出された時点や割
込が発生した時点におけるカレントプログラムの実行位
置および演算結果が格納される。一方、フレームアドレ
スの保持領域には、1段階前に実行されていたプログラ
ムについてのフレームアドレスが格納される。なおこの
実施例では、内部レジスタ7内のステータスレジスタ
は、プロセッサが動いているか否かなど、プロセッサの
内部状態を示すだけであるとして、割込発生時のステー
タスレジスタの待避を行っていない。ただしこのステー
タスレジスタが、プログラムに影響を与えるコンディシ
ョンコード(キャリーなど)や動作モード(インターロ
ックなど)を含む場合は、プログラムや汎用レジスタと
ともに待避させる必要がある。
【0034】図4は、上記演算処理装置において割込発
生から割込処理を開始するまでの手順を示し、図5は、
図4での割込処理の終了後に元のプログラムの実行環境
を復元するための手順を示す。なお説明の都合上、各図
の各ステップには、通し番号を付けてある。
【0035】ST1では、所定の割込の発生に対し、割
込制御部2が、その割込処理をカレントプログラムの実
行よりも優先させるべきかどうか判断する。そして以下
のST2〜ST4で、従来と同様の処理により、プログ
ラム実行部1におけるプログラムの実行が中断し、内部
レジスタ7のレジスタ情報が読み出されて待避・復元部
3に与えられる。待避・復元部3は、レジスタ情報の受
信によりプログラムの中断を確認すると、このプログラ
ムの作業領域に、プログラムカウンタおよび汎用レジス
タの各レジスタ情報を待避させる(ST5)。
【0036】つぎに待避・復元部3は、設定値格納領域
6からST2で読み出されたプログラムポインタの値に
基づく設定情報を読み出し、その設定情報に基づき、実
行中のスレッド作業領域4内に割込用のプログラムの作
業領域を確保する(ST7)。また前記設定情報に応じ
て、内部レジスタ7に割込用プログラムの実行に必要な
設定値をセットする(ST8)。
【0037】つぎに待避・復元部3は、新規作成された
割込用プログラムの作業領域内に、アドレス情報の保持
領域を確保し、その領域内に前記内部レジスタ7から読
み出したフレームアドレス、すなわち割込発生時のプロ
グラムの作業領域に戻るための戻り値を待避させる(S
T9)。これら一連の設定が終了すると、待避・復元部
3は、プログラム実行部1に割込用プログラムの実行の
開始を要求する(ST10)。なおST1で、割込処理
を優先させる必要はないと判断した場合は、ST11
で、先のプログラムの実行が終了するまで割込用プログ
ラムを待機させるマスク処理を実行する。
【0038】プログラム実行部1が設定された割込用プ
ログラムを実行して終了通知を送信すると、待避・復元
部3は、まず実行中の割込用のプログラムの作業領域に
待避させていたフレームアドレスを読み出して、割込発
生時の実行プログラムの作業領域の設定位置を取得する
(ST12)。さらに待避・復元部3は、この割込発生
時の実行プログラムの作業領域に戻って、前記ST5で
待避させたプログラムカウンタや汎用レジスタを読み出
す(ST13)。
【0039】つぎのST14では、前記ST12,13
で読み出された各レジスタ情報がプログラム実行部1に
与えられる。プログラム実行部1は、これらのレジスタ
情報を内部レジスタ7にセットすることにより、割込発
生時のプログラム実行状態を復元する。そして続くST
15で、待避・復元部3よりプログラムの再開要求が送
信されたことに応じて、割込発生時のプログラムの実行
が再開される。
【0040】たとえば、図3に示したプログラム1−2
の実行時に割込0が発生して割込処理を行う場合を例に
とると、割込発生に応じて内部レジスタ7からプログラ
ム1−2についてのレジスタ情報が読み出される。この
うちプログラムカウンタおよび汎用レジスタは、プログ
ラム1−2の作業領域9内に格納され、フレームアドレ
スは、新規に設定された割込0用のプログラムの作業領
域10に格納される。
【0041】この状態下で、内部レジスタ7には、割込
0用のプログラムを実行するための設定値がセットされ
て、そのプログラムが実行される。プログラム実行部1
から待避・復元部3に、割込0用のプログラムの実行終
了が通知されると、待避・復元部3は、まず割込0用の
作業領域10に待避させていたフレームアドレスを読み
出して、割込発生時のプログラム1−2の作業領域9の
設定位置を取得し、さらにこの領域9内に待避させてい
たプログラムカウンタや汎用レジスタを読み出す。そし
て読み出された各レジスタ情報を内部レジスタ7にセッ
トすることにより、割込発生時のプログラム1−2の実
行状態が復元され、中断していたプログラム1−2の実
行再開が可能となるのである。
【0042】なお割込0に対する処理の途中でつぎの割
込1が発生した場合も、同様にして割込0のプログラム
の実行状態を示すレジスタ情報を待避させておき、割込
1のプログラム終了後に、待避させた各レジスタ情報を
読み出して内部レジスタ7にセットすることにより、割
込1の発生により中断していた割込0のプログラムの実
行状態を復元して、中断していた割込処理を再開する。
【0043】なお、Javaプログラムに基づき動作する演
算処理装置では、通常のスレッド内の処理においても、
所定の処理用のプログラムの実行下で他の処理用のプロ
グラム(関数)を呼び出す場合、上記と同様の方法で呼
出し側のプログラムのレジスタ情報を待避させている。
例えば図3において、プログラム1−1からプログラム
1−2を呼び出す際には、プログラム実行部1から待避
・復元部3に、スレッド作業領域4内における作業領域
の確保を要求するために、呼び出されるプログラムのプ
ログラムポインタを送信する。これに応じて待避・復元
部3は、プログラム実行部1に内部レジスタ7からのレ
ジスタ情報の読出しを要求し、その要求に応じて、読み
出されたレジスタ情報のうちプログラムカウンタと汎用
レジスタとを、呼出し側のプログラム1−1の作業領域
8内に格納する。さらに待避・復元部3は、スレッド作
業領域4内に呼び出されたプログラム1−2の作業領域
9を確保し、この作業領域9内にプログラム1−2の呼
出し時点で待避させたフレームアドレス、すなわちプロ
グラム1−1の作業領域8に戻るための戻り値を格納す
る。
【0044】つぎに待避・復元部3は、プログラム実行
部1から与えられたプログラムポインタに基づき、設定
情報格納領域から前記プログラム1−2の設定情報を読
み出しており、このプログラム1−2の実行のために必
要なレジスタ情報を読み出してプログラム実行部1に与
える。プログラム実行部1は、このレジスタ情報を内部
レジスタ7にセットして、待避・復元部3からのプログ
ラム実行要求に応じてプログラム1−2の実行を開始す
る。
【0045】こうしてプログラム1−2の実行が終了す
ると、待避・復元部3は、プログラム1−2の作業領域
9内に待避させていたフレームアドレスを読み出して、
呼出し側のプログラム1の作業領域8の設定位置を取得
する。そしてこの作業領域8から前記待避させていたプ
ログラムカウンタや汎用レジスタの値を読み出して、こ
れら値を前記フレームアドレスとともに内部レジスタ7
にセットすることにより、プログラム1−1が呼び出さ
れた時点のプログラム実行状態が復元される。この後、
待避・復元部3からプログラム実行部1に、プログラム
再開要求を送信することにより、前記プログラム1−1
が再開されることになる。
【0046】なお図1の演算処理装置は、Javaによるプ
ログラムに基づく演算処理を実行する場合の構成を示し
ているが、これに限らず、Javaと同様のメモリ使用方法
を採用したプログラム言語に基づく処理を実行する場合
も、同様の構成を実現することができる。
【0047】
【発明の効果】上記したようにこの発明では、割込発生
時のプログラムの作業領域内に、プログラムカウンタや
汎用レジスタなどプログラム実行状態を示すレジスタ情
報を待避させるとともに、この作業領域が設定されてい
るメモリ領域に割込処理用の作業領域を設定し、その領
域内に割込発生時のプログラムの作業領域のアドレスを
待避させて割込処理を実行するので、割込処理のため
に、別途、レジスタ情報の待避やプログラム実行のため
のメモリ領域を設定する必要がなくなり、メモリ資源を
有効に使用することができる。
【0048】またこの発明によれば、スタックポインタ
によりレジスタ情報の待避位置を管理する必要がない
上、割込が発生する前と同一のスレッド内の処理として
割込処理を実行できるので、スタックポインタの管理や
スレッド切替えなどの煩雑な処理が不要となる。また通
常のプログラムの実行に用いるメモリ領域において作業
を行うから、割込処理のためのスレッドの切替えが不要
となり、処理を高速化できる。さらにJavaによるプログ
ラムに基づき動作する演算処理装置においては、通常の
プログラムの呼出しおよび呼出し側のプログラムに復帰
する場合と同様の方法で、レジスタ情報の待避処理や復
元処理を実行できるので、割込発生時に通常と異なる処
理を行う必要がなくなり、割込処理をより簡単かつ高速
に実行できる。
【図面の簡単な説明】
【図1】この発明が適用された演算処理装置の構成例を
示す機能ブロック図である。
【図2】図1の演算処理装置のメモリ内におけるデータ
構成を示す説明図である。
【図3】1スレッド作業領域内の詳細なデータ構成を示
す説明図である。
【図4】割込発生から割込処理の開始までの手順を示す
フローチャートである。
【図5】割込処理の終了から割込発生時のプログラムの
実行再開までの手順を示すフローチャートである。
【図6】従来の演算処理装置の構成例を示す機能ブロッ
ク図である。
【図7】図6の演算処理装置のメモリ内におけるデータ
構成を示す説明図である。
【図8】割込発生から割込処理の開始までの従来の手順
を示すフローチャートである。
【図9】割込処理の終了から割込発生時のプログラムの
実行再開までの従来の手順を示すフローチャートであ
る。
【符号の説明】
1 プログラム実行部 2 割込制御部 3 待避・復元部 4 スレッド作業領域 7 内部レジスタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 馬場 洋介 京都府京都市右京区花園土堂町10番地 オ ムロン株式会社内 (72)発明者 中川 伸二 京都府京都市右京区花園土堂町10番地 オ ムロン株式会社内 (72)発明者 西村 康裕 京都府京都市右京区花園土堂町10番地 オ ムロン株式会社内 Fターム(参考) 5B098 DD08 GA06

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 動的に作業領域を確保しつつプログラム
    を実行する演算処理装置において、割込の発生に応じて
    前記プログラムの実行を一時中断して所定の割込処理を
    実行する方法であって、 前記プログラムの作業領域が動的に設定されるメモリ領
    域において、割込の発生に応じてその割込発生時のプロ
    グラムの作業領域に割込発生時のプログラム実行状態を
    示すレジスタ情報を待避させるとともに、前記メモリ領
    域に割込処理用の作業領域を確保して、この作業領域に
    前記割込発生時のプログラムの作業領域に戻るためのア
    ドレスを待避させておき、 割込処理の終了に応じて前記待避させていたアドレスか
    ら前記割込発生時のプログラムの作業領域に戻り、その
    作業領域に待避させていたレジスタ情報を用いて前記割
    込発生時のプログラム実行状態を復元することを特徴と
    する割込処理方法。
  2. 【請求項2】 読み書き可能なメモリと、 前記メモリ内の所定のメモリ領域に動的に作業領域を確
    保しつつプログラムを実行するプログラム実行手段と、 前記プログラム実行手段に対し、割込の発生に応じてそ
    の割込発生時のプログラムの実行を一時中断させて割込
    処理用のプログラムを実行させる制御手段とを具備し、 前記制御手段は、 前記割込の発生に応じて前記メモリ領域の割込発生時の
    プログラムの作業領域に割込発生時のプログラム実行状
    態を示すレジスタ情報を待避させるとともに、前記メモ
    リ領域に割込処理用の作業領域を設定して、この作業領
    域に前記割込発生時のプログラムの作業領域に戻るため
    のアドレスを待避させる待避処理手段と、 割込処理の終了に応じて前記待避させていたアドレスか
    ら前記割込発生時の作業領域に戻り、その作業領域に待
    避させていたレジスタ情報に基づき前記割込発生時のプ
    ログラム実行状態を復元する復元処理手段とを具備する
    演算処理装置。
JP2000064371A 2000-03-09 2000-03-09 割込処理方法およびその方法を用いた演算処理装置 Pending JP2001256062A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000064371A JP2001256062A (ja) 2000-03-09 2000-03-09 割込処理方法およびその方法を用いた演算処理装置
US09/801,899 US6820153B2 (en) 2000-03-09 2001-03-09 Interrupt processing and memory management method in an operation processing device and a device using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000064371A JP2001256062A (ja) 2000-03-09 2000-03-09 割込処理方法およびその方法を用いた演算処理装置

Publications (1)

Publication Number Publication Date
JP2001256062A true JP2001256062A (ja) 2001-09-21

Family

ID=18584083

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000064371A Pending JP2001256062A (ja) 2000-03-09 2000-03-09 割込処理方法およびその方法を用いた演算処理装置

Country Status (2)

Country Link
US (1) US6820153B2 (ja)
JP (1) JP2001256062A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1304941C (zh) * 2003-11-06 2007-03-14 国际商业机器公司 用于自主硬件辅助的线程栈跟踪的装置与方法
US7742349B2 (en) 2007-06-29 2010-06-22 Hynix Semiconductor, Inc. Semiconductor memory device

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7185183B1 (en) 2001-08-02 2007-02-27 Mips Technologies, Inc. Atomic update of CPO state
US7181600B1 (en) 2001-08-02 2007-02-20 Mips Technologies, Inc. Read-only access to CPO registers
JP2003167737A (ja) * 2001-11-30 2003-06-13 Nec Corp スタック使用方法
US7634638B1 (en) * 2002-10-22 2009-12-15 Mips Technologies, Inc. Instruction encoding for system register bit set and clear
US7392428B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for recovering from abnormal interruption of a parity update operation in a disk array system
GB2533415B (en) * 2014-12-19 2022-01-19 Advanced Risc Mach Ltd Apparatus with at least one resource having thread mode and transaction mode, and method
US10831478B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Sort and merge instruction for a general-purpose processor
US10831503B2 (en) * 2018-11-06 2020-11-10 International Business Machines Corporation Saving and restoring machine state between multiple executions of an instruction

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4296470A (en) * 1979-06-21 1981-10-20 International Business Machines Corp. Link register storage and restore system for use in an instruction pre-fetch micro-processor interrupt system
AU3424693A (en) * 1992-01-02 1993-07-28 Amdahl Corporation Software control of hardware interruptions
US5701493A (en) * 1995-08-03 1997-12-23 Advanced Risc Machines Limited Exception handling method and apparatus in data processing systems
US6044430A (en) * 1997-12-17 2000-03-28 Advanced Micro Devices Inc. Real time interrupt handling for superscalar processors
JPH11184712A (ja) * 1997-12-24 1999-07-09 Toshiba Corp 情報処理装置
JP3320358B2 (ja) * 1998-06-18 2002-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイル方法、例外処理方法、及びコンピュータ
US6243804B1 (en) * 1998-07-22 2001-06-05 Scenix Semiconductor, Inc. Single cycle transition pipeline processing using shadow registers
US6275893B1 (en) * 1998-09-14 2001-08-14 Compaq Computer Corporation Method and apparatus for providing seamless hooking and intercepting of selected kernel and HAL exported entry points in an operating system
US6370606B1 (en) * 1998-11-05 2002-04-09 Compaq Computer Corporation System and method for simulating hardware interrupts in a multiprocessor computer system
JP3557947B2 (ja) * 1999-05-24 2004-08-25 日本電気株式会社 複数のプロセッサで同時にスレッドの実行を開始させる方法及びその装置並びにコンピュータ可読記録媒体
JP3404322B2 (ja) * 1999-05-25 2003-05-06 株式会社エルミックシステム 割込処理方法、os支援システム、情報処理装置、記録媒体
JP4151198B2 (ja) * 1999-06-23 2008-09-17 株式会社デンソー 割込コントローラ及びマイクロコンピュータ
US6493781B1 (en) * 1999-08-19 2002-12-10 Koninklijke Philips Electronics N.V. Servicing of interrupts with stored and restored flags
US6539448B1 (en) * 2000-05-26 2003-03-25 Texas Instruments Incorporated Priority first come first serve interrupt controller

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1304941C (zh) * 2003-11-06 2007-03-14 国际商业机器公司 用于自主硬件辅助的线程栈跟踪的装置与方法
US7742349B2 (en) 2007-06-29 2010-06-22 Hynix Semiconductor, Inc. Semiconductor memory device

Also Published As

Publication number Publication date
US20010037425A1 (en) 2001-11-01
US6820153B2 (en) 2004-11-16

Similar Documents

Publication Publication Date Title
US5613114A (en) System and method for custom context switching
US6006247A (en) Method and system for scheduling threads and handling exceptions within a multiprocessor data processing system
US5390329A (en) Responding to service requests using minimal system-side context in a multiprocessor environment
US9798595B2 (en) Transparent user mode scheduling on traditional threading systems
US6820155B1 (en) Interruption managing device and interruption managing method
JP2561801B2 (ja) プロセス・スケジューリングの管理方法およびシステム
KR970016979A (ko) 다중 처리 시스템에서 타스크의 큐잉 시스템 및 방법
CN106406991B (zh) 一种ThreadX操作系统在ARM处理器上的运行方法
JPH05197568A (ja) コンピュータ・システムおよびイベント管理方法
JPH0895821A (ja) マルチタスクのプログラムデバッグ方法とその装置
JPWO2009157178A1 (ja) 仮想計算機制御装置、仮想計算機制御プログラム及び仮想計算機制御回路
US20050028159A1 (en) Memory managing system and task controller in multitask system
JP2001256062A (ja) 割込処理方法およびその方法を用いた演算処理装置
US20040098722A1 (en) System, method, and computer program product for operating-system task management
JPH10326205A (ja) システムコール発行方法
JP2693916B2 (ja) タスクスケジュール方法
JPH05108380A (ja) データ処理システム
JPH11184828A (ja) マルチプロセッサシステムのテスト方式
JPH10260850A (ja) 仮想計算機システム
JP2581327B2 (ja) 仮想計算機の入出力割込み処理方式
JPH04155532A (ja) タスク切替方式
JP3022848B2 (ja) マルチタスクのタスク切り替え方法とリアルタイム・オペレーティング・システム
JPH076045A (ja) 多重処理システムにおけるメモリ管理方法
JP2000029850A (ja) オペレーティングシステムのプロセッサ間通信を使用したタスク制御方法
JPH03248231A (ja) マルチタスクの排他制御方法