JP2002333985A - Register saving and restoring method - Google Patents
Register saving and restoring methodInfo
- Publication number
- JP2002333985A JP2002333985A JP2001138680A JP2001138680A JP2002333985A JP 2002333985 A JP2002333985 A JP 2002333985A JP 2001138680 A JP2001138680 A JP 2001138680A JP 2001138680 A JP2001138680 A JP 2001138680A JP 2002333985 A JP2002333985 A JP 2002333985A
- Authority
- JP
- Japan
- Prior art keywords
- register
- program
- executed
- contents
- data
- 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
Abstract
Description
【0001】[0001]
【発明の属する技術分野】この発明は、情報処理または
ディジタル信号処理等でしばしば使用されるディジタル
信号処理装置において、あるプログラムで使用されるレ
ジスタの内容を退避して、別のプログラムのレジスタの
内容を復旧するレジスタ退避復旧方法に関するもので、
特に、プログラムを実行して制御する場合において、複
数プログラムを並列して実行する際のプログラム切り替
え時のレジスタの退避および復旧を効率的に実行するレ
ジスタ退避復旧方法に関するものである。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a digital signal processing device often used in information processing or digital signal processing, for example, which saves the contents of registers used in one program and saves the contents of registers in another program. Register save and restore method to restore
In particular, the present invention relates to a register saving / restoring method for efficiently saving and restoring registers at the time of program switching when executing a plurality of programs in parallel when executing and controlling a program.
【0002】[0002]
【従来の技術】レジスタを含んでいるディジタル信号処
理装置の用途は、ディジタル信号の数値演算処理をはじ
め、外部ハードウエア等の制御があげられる。外部ハー
ドウエアの制御は一般に複数の装置に対して実行するこ
とが多い。また、制御装置の状況に応じて実時間で実行
しなければならないケースが多い。例えば、携帯電話で
は、送受信データに対する信号処理に加え、送受信系に
関わる外部ハードウエアの制御を所定の時間内に実行す
る必要がある。それぞれの処理は、プログラム単位とし
て存在し、並列に処理されてゆく。プログラムを並列に
処理するためには、実行中のプログラムを切り替える
際、切り替える前のディジタル信号処理装置のレジスタ
状態を保存しておく必要がある。2. Description of the Related Art Applications of a digital signal processing apparatus including a register include control of external hardware and the like, in addition to numerical signal processing of digital signals. Generally, control of external hardware is often performed for a plurality of devices. In many cases, it must be executed in real time according to the status of the control device. For example, in a mobile phone, in addition to signal processing for transmission / reception data, it is necessary to execute control of external hardware related to a transmission / reception system within a predetermined time. Each process exists as a program unit and is processed in parallel. In order to process programs in parallel, it is necessary to save the register state of the digital signal processing device before switching when switching the program being executed.
【0003】ディジタル信号処理装置は、比較的小規模
なプログラムを効率的に処理するために使用されること
が多い。このため、算術演算レジスタ、データアドレス
レジスタ等の機能が分離されているレジスタ群に加え、
繰り返しの処理を高速に実行するために、繰り返し処理
専用のレジスタ群を用意していることが多い。[0003] Digital signal processing devices are often used to efficiently process relatively small programs. For this reason, in addition to the registers in which functions such as arithmetic operation registers and data address registers are separated,
In order to execute repetitive processing at high speed, a register group dedicated to repetitive processing is often prepared.
【0004】上述のとおり、実行中のプログラムを切り
替える際、切り替えた次の命令から実行をのちに継続す
ることができるように、レジスタの内容を退避して、切
り替え後のプログラムで必要とされるレジスタの内容を
復旧する必要がある。しかしながら、退避および復旧す
べきレジスタが多く、プログラム切り替えごとに発生す
る退避および復旧に要する処理量が問題となる。As described above, when switching the program being executed, the contents of the registers are saved so that the program can be continued after execution of the next instruction, which is required by the switched program. It is necessary to restore the contents of the register. However, there are many registers to be saved and restored, and the amount of processing required for saving and restoring that occurs each time the program is switched becomes a problem.
【0005】[0005]
【発明が解決しようとする課題】以上のように、並列に
プログラムが実行される場合においては、プログラムを
効率的に実行するために準備されたレジスタが、逆にレ
ジスタを退避および復旧に要する処理量の増加を招くと
いう不具合があった。As described above, in the case where programs are executed in parallel, the registers prepared for efficiently executing the program, on the contrary, perform the processing required for saving and restoring the registers. There was a problem that the amount was increased.
【0006】この発明は、このような状況を考慮してな
されたものであり、その目的はプログラム切り替え時
に、実行中のプログラムに関するレジスタの内容を退避
して、その後、変更後のプログラムに関するレジスタの
内容を復旧させる処理を効率的に実行するレジスタ退避
復旧方法を提供することにある。The present invention has been made in view of such a situation, and has as its object to save the contents of registers relating to a program being executed at the time of program switching, and thereafter to save the contents of registers relating to a program after change. An object of the present invention is to provide a register save / restore method for efficiently executing a process of restoring contents.
【0007】この発明のほかの目的は、プログラム切り
替えで発生するレジスタ退避および復旧に要する処理を
効率的に実行することにより、頻繁なプログラム切り替
えに対しても効率的に対処することが可能となるレジス
タ退避復旧方法を提供することにある。Another object of the present invention is to efficiently cope with frequent program switching by efficiently executing the processing required for saving and restoring registers which occurs when the program is switched. An object of the present invention is to provide a register save / restore method.
【0008】[0008]
【課題を解決するための手段】この発明によれば、識別
番号がプログラムごとに付与されていて、プログラムを
実行するためにデータを一時的に格納するためのレジス
タのデータ内容をプログラムにしたがって、データを格
納する第1の格納手段に退避し、データを格納する第2
の格納手段からレジスタのデータ内容をプログラムした
がって復旧するレジスタ退避復旧方法において、実行さ
れているプログラムの識別番号を取得し、この実行され
ているプログラムを一時停止して、第2のプログラムを
実行させる命令をする割り込み信号を発生し、この割り
込み信号を検出することによって、この実行されている
プログラムの識別番号に基づいて、レジスタと識別番号
とが対応付けられているテーブルを参照して、レジスタ
の内容を前記第1の格納手段に退避させ、割り込み信号
に基づいて、実行されているプログラムの識別番号を第
2のプログラムの識別番号に変更し、変更後の第2のプ
ログラムの識別番号に基づいて、テーブルを参照して、
レジスタの内容を第2の格納手段から復旧させる、こと
を特徴とするレジスタ退避復旧方法によって提供され
る。According to the present invention, an identification number is assigned to each program, and the data content of a register for temporarily storing data for executing the program is determined according to the program. Evacuating to the first storage means for storing data, and storing the data in the second storage means
In the register saving and restoring method for restoring the data content of the register from the storage means, the identification number of the program being executed is obtained, the executed program is temporarily stopped, and the second program is executed. By generating an interrupt signal for giving an instruction and detecting the interrupt signal, the register of the register is referenced with reference to the table in which the register and the identification number are associated based on the identification number of the program being executed. The contents are saved in the first storage means, and the identification number of the program being executed is changed to the identification number of the second program based on the interrupt signal, and based on the identification number of the changed second program. And refer to the table,
A register saving / restoring method is provided in which the contents of the register are restored from the second storage means.
【0009】[0009]
【発明の実施の形態】以下、図面を参照してこの発明の
実施形態について説明する。Embodiments of the present invention will be described below with reference to the drawings.
【0010】図1は一実施形態に係わるレジスタ退避復
旧方法を実行するディジタル信号処理装置の主要部分の
構成を示したものである。FIG. 1 shows a configuration of a main part of a digital signal processing device for executing a register save / restore method according to an embodiment.
【0011】図1に示すようにこの実施形態のディジタ
ル信号処理装置は、割り込み制御ユニット11を具備し
ている。この割り込み制御ユニット11には、実行中の
プログラムを一時停止して、この実行中のプログラムに
割り込まれたときに実行するために用意されたプログラ
ムを実行するための割り込み信号が生成される。割り込
み信号は外部バスを介して外部の指示、もしくはプログ
ラム内部の指示によって生成される。割り込み信号に基
づいて、割り込み要因が判断され、割り込み要因に対処
するための演算処理が決定される。そして、決定された
演算処理を指定する演算処理指定信号が、プログラムデ
コーダユニット14に出力される。また、図1の割り込
み制御ユニット11の上からの矢印は、割り込み制御用
の信号線であり、この信号線を介して外部装置等から割
り込み信号が入力される。As shown in FIG. 1, the digital signal processing device of this embodiment has an interrupt control unit 11. The interrupt control unit 11 generates an interrupt signal for temporarily suspending the program being executed and executing a program prepared to be executed when the program being executed is interrupted. The interrupt signal is generated by an external instruction via an external bus or an instruction within a program. The cause of the interrupt is determined based on the interrupt signal, and an arithmetic process for coping with the cause of the interrupt is determined. Then, an arithmetic processing designation signal for designating the determined arithmetic processing is output to the program decoder unit 14. An arrow from above the interrupt control unit 11 in FIG. 1 is a signal line for interrupt control, and an interrupt signal is input from an external device or the like via this signal line.
【0012】プログラムアドレス生成ユニット12で
は、割り込み制御ユニット11から出力されたリセット
信号により、リセットされる。また、演算処理指定信号
が後述のプログラムデコーダユニット14に出力され
る。そして、プログラムデコーダユニット14からの制
御に基づいて、割り込み処理をするために必要なプログ
ラムのアドレスが生成される。生成されたプログラムア
ドレスは、プログラムメモリ13に出力される。The program address generation unit 12 is reset by a reset signal output from the interrupt control unit 11. Further, the arithmetic processing designation signal is output to a program decoder unit 14 described later. Then, based on the control from the program decoder unit 14, the address of the program necessary for performing the interrupt processing is generated. The generated program address is output to the program memory 13.
【0013】プログラムメモリ13には、実行すべき演
算処理の手順が記述されたプログラムが格納してある。
そして、プログラムメモリ13は、プログラムアドレス
生成ユニット12から出力されたプログラムアドレスに
対応する命令(エンコードされたデータ)を読み出し
て、このデータをプログラムデコーダユニット14に出
力する。The program memory 13 stores a program in which the procedure of the arithmetic processing to be executed is described.
Then, the program memory 13 reads an instruction (encoded data) corresponding to the program address output from the program address generation unit 12 and outputs this data to the program decoder unit 14.
【0014】プログラムデコーダユニット14では、プ
ログラムメモリ13から読み込んだデータをデコードす
る。そのデコード結果にしたがって、図示しないプログ
ラムカウンタを制御する。プログラムカウンタによっ
て、プログラムの実行順序が制御される。また、プログ
ラムデコーダユニット14には、ハードウエアスタック
15が接続されている。さらに、割り込み制御ユニット
11から出力される演算処理指定信号がプログラムデコ
ーダユニット14に出力される。そして、プログラムデ
コーダユニット14からの制御に基づいて、割り込み処
理をするために必要なプログラムのアドレスがプログラ
ムアドレス生成ユニット12で生成される。The program decoder unit 14 decodes data read from the program memory 13. A program counter (not shown) is controlled according to the decoding result. The program execution order is controlled by the program counter. Further, a hardware stack 15 is connected to the program decoder unit 14. Further, an arithmetic processing designation signal output from the interrupt control unit 11 is output to the program decoder unit 14. Then, based on the control from the program decoder unit 14, the program address necessary for performing the interrupt processing is generated by the program address generation unit 12.
【0015】ハードウエアスタック15では、一時的に
レジスタの値を退避させたり、サブルーチンへの分岐の
際の戻り番地を入れたりする場合に、データが格納され
る。In the hardware stack 15, data is stored when the value of a register is temporarily saved or a return address is entered when branching to a subroutine.
【0016】また、実行されているプログラムのプロセ
スIDが、レジスタ退避・復旧制御ユニット16にプロ
グラムデコーダユニット14から出力される。この現在
実行されているプログラムのプロセスIDは、レジスタ
退避・復旧制御ユニット16に記憶される。プロセスI
Dは、あらかじめプログラムごとに割り当てられて付与
されている。レジスタ退避・復旧制御ユニット16で
は、プログラム切り替え時にプログラムに対応したレジ
スタの内容を退避したり、復旧したりする動作が、プロ
セスIDにしたがって制御される。すなわち、データア
ドレスレジスタ18、算術演算レジスタ20、汎用レジ
スタ22、および演算制御ユニット23にプログラムに
対応したレジスタの内容を退避したり、復旧したりする
動作を開始するように命令される。プロセスIDが変わ
る際には変更前すなわち現在実行中のプログラムのレジ
スタ内容をプロセスIDから導かれるレジスタ退避・復
旧情報に基づき退避を実行する。そして、プロセスID
変更後すなわち次に実行するプログラムのレジスタ内容
を変更後のプロセスIDから導かれるレジスタ退避・復
旧情報に基づいて復旧する。レジスタ退避・復旧制御ユ
ニット16では、現在実行しているプログラムのプロセ
スIDを記憶している。したがって、新たなプロセスI
Dをプログラムデコーダユニット14から取得すると、
現在実行中のプロセスIDをもとに、プロセスIDテー
ブル17を参照し、該当するテーブルの内容にしたがっ
て、レジスタの退避を実行する。そして、この新たなプ
ロセスIDにしたがって、テーブルを参照し、その内容
にしたがって、レジスタの復旧動作を実行する。なお、
退避および復旧を実行するレジスタの内容は、データメ
モリ24もしくは、バンク構成されたレジスタ等に記憶
してある。これらのレジスタの内容の退避および復旧
は、プロセスIDテーブル17を参照して実行される。
そして、レジスタ退避・復旧制御ユニット16は、退避
・復旧を実行するレジスタを識別する。The process ID of the program being executed is output from the program decoder unit 14 to the register save / restore control unit 16. The process ID of the currently executed program is stored in the register save / restore control unit 16. Process I
D is assigned and assigned in advance for each program. In the register saving / restoring control unit 16, the operation of saving and restoring the contents of the register corresponding to the program when the program is switched is controlled according to the process ID. That is, the data address register 18, the arithmetic operation register 20, the general-purpose register 22, and the operation control unit 23 are instructed to start an operation of saving and restoring the contents of the register corresponding to the program. When the process ID changes, the register contents of the program before the change, that is, the currently executed program, are saved based on the register save / restore information derived from the process ID. And the process ID
After the change, that is, the register contents of the program to be executed next are restored based on the register save / restore information derived from the process ID after the change. The register save / restore control unit 16 stores the process ID of the currently executing program. Therefore, a new process I
When D is obtained from the program decoder unit 14,
The process refers to the process ID table 17 based on the currently executed process ID, and saves the registers according to the contents of the corresponding table. Then, the table is referenced according to the new process ID, and the register is restored according to the contents. In addition,
The contents of the registers for performing the save and the restoration are stored in the data memory 24 or in a bank-structured register. Saving and restoring the contents of these registers are executed with reference to the process ID table 17.
Then, the register save / restore control unit 16 identifies a register for executing save / restore.
【0017】プロセスIDテーブル17では、プログラ
ムに割り当てられたプロセスIDごとにレジスタを退避
または復旧するための識別番号が記憶されている。プロ
セスID番号に対応する番号付けがなされており、複数
の要素から構成されている。各要素は退避・復旧の対象
となる算術演算レジスタ20、データアドレスレジスタ
18等レジスタ種別ごとのフィールドを有している。そ
れぞれのフィールドには、レジスタ退避・復旧に係わる
識別番号が配置されている。これらの識別番号はレジス
タの退避および復旧を実行する際、参照すべき格納先の
番号を示しており、レジスタ退避・復旧制御ユニット1
6がこの番号を取得し、該当する場所を対象にレジスタ
の退避・復旧動作を実行する。たとえば、プロセスID
=1のプログラム実行中、プログラムデコーダユニット
14によって、プロセスID=2が発行されたとき、レ
ジスタ退避・復旧制御ユニット16はまず、プロセスI
D=1のテーブルを参照し、退避すべきレジスタ情報を
取得する。また、このプロセスIDテーブル17は、デ
ータメモリ24内の特定の記憶領域に配置されていても
よい。データメモリ24は、プログラムを実行する際、
もしくは演算結果等の必要なデータを記憶する。また、
データメモリ24は、外部バスに接続している。The process ID table 17 stores an identification number for saving or restoring a register for each process ID assigned to a program. Numbering corresponding to the process ID number is performed, and is composed of a plurality of elements. Each element has a field for each register type such as an arithmetic operation register 20 and a data address register 18 to be saved and restored. In each field, an identification number related to register save / restore is arranged. These identification numbers indicate the numbers of storage destinations to be referred to when register saving and restoring are performed.
6 obtains this number, and executes the save / restore operation of the register for the corresponding location. For example, process ID
When the process ID = 2 is issued by the program decoder unit 14 during the execution of the program of = 1, the register saving / restoring control unit 16 first executes the process I
The register information to be saved is acquired by referring to the table of D = 1. The process ID table 17 may be arranged in a specific storage area in the data memory 24. When executing the program, the data memory 24
Alternatively, necessary data such as a calculation result is stored. Also,
The data memory 24 is connected to an external bus.
【0018】プログラムデコーダユニット14では、デ
コードした結果がループ制御に係わる命令であった場合
は、そのループの先頭アドレス、終端アドレスおよびル
ープ回数などの情報がハードウエアスタック15に保存
される。そして、この情報が基にされて、プログラムデ
コーダユニット14がプログラムアドレス生成ユニット
12を制御する。また、デコードした結果がレジスタ退
避・復旧に係わる命令である場合は、割り込み信号によ
り実行すべき割り込みプログラムの先頭アドレスを割り
込み制御ユニット11から算出し、そのアドレスをプロ
グラムアドレス生成ユニット12に出力し、該当する割
り込みプログラムに制御を移す。In the program decoder unit 14, when the decoded result is an instruction related to loop control, information such as the start address, end address and the number of loops of the loop is stored in the hardware stack 15. The program decoder unit 14 controls the program address generation unit 12 based on this information. If the decoded result is an instruction relating to register save / restore, the interrupt control unit 11 calculates the start address of the interrupt program to be executed by the interrupt signal, and outputs the address to the program address generation unit 12. Transfer control to the corresponding interrupt program.
【0019】以上に説明したプログラムアドレス生成ユ
ニット12、プログラムデコーダユニット14、ハード
ウエアスタック15、レジスタ退避・復旧制御ユニット
16、およびプロセスIDテーブル17からプログラム
制御ユニット31は構成される。プログラム制御ユニッ
ト31は、プログラムメモリ13からプログラムを読み
込み処理内容の判断を実行する。また、時間分割による
並列実行すべき複数のプログラムごとに、固有のプロセ
スIDを認識することができる。The program control unit 31 is composed of the program address generation unit 12, the program decoder unit 14, the hardware stack 15, the register save / restore control unit 16, and the process ID table 17 described above. The program control unit 31 reads a program from the program memory 13 and determines the processing contents. In addition, a unique process ID can be recognized for each of a plurality of programs to be executed in parallel by time division.
【0020】また、プログラムデコーダユニット14
は、4つのレジスタに接続して、データのやり取りがな
される。第1のユニット32は、データアドレスレジス
タ18および第1の算術演算ユニット19を具備して、
データメモリ24へのアクセスのためのアドレスを生成
する。このアドレスは、データメモリ24からデータを
読み出す場合、もしくはデータメモリ24へデータを書
き込む場合に使用される。また、プログラムデコーダユ
ニット14では、データメモリ24へのアクセスのため
のアドレスの生成および、書き込みもしくは読み出しを
実行するデータが一時的に記憶されている。すなわち、
データアドレスレジスタ18において、内部バス25を
介して、もしくはプログラムデコーダユニット14から
デコードされたデータが入力されて一時的に記憶され
る。これらのデータは、所定の記憶領域に格納されてい
る(たとえば、図1に示されるi0,i1,i2,・・
・等に対応する領域)。それらのデータが第1の算術演
算ユニット19に出力される。第1の算術演算ユニット
19では、データメモリ24にアクセスするためのアド
レスが、入力されたデータから計算される。そして、計
算の結果、求められたアドレスは、データアドレスレジ
スタ18の所定の領域に格納するとともに内部バス25
あるいはデータメモリ24に出力される。The program decoder unit 14
Is connected to four registers to exchange data. The first unit 32 includes the data address register 18 and the first arithmetic operation unit 19,
An address for accessing the data memory 24 is generated. This address is used when reading data from the data memory 24 or when writing data to the data memory 24. Further, in the program decoder unit 14, data for generating an address for accessing the data memory 24 and performing writing or reading is temporarily stored. That is,
In the data address register 18, decoded data is input via the internal bus 25 or from the program decoder unit 14, and is temporarily stored. These data are stored in a predetermined storage area (for example, i0, i1, i2,... Shown in FIG. 1).
・ Area corresponding to etc.). Those data are output to the first arithmetic operation unit 19. In the first arithmetic operation unit 19, an address for accessing the data memory 24 is calculated from the input data. The address obtained as a result of the calculation is stored in a predetermined area of the data address register 18 and the internal bus 25
Alternatively, the data is output to the data memory 24.
【0021】各レジスタからのデータの読み出しおよび
書き込みは、実行すべき演算処理の手順を記述したプロ
グラムが記憶されているプログラムメモリ13から順次
命令を取り出し、この命令に基づいて演算を実行するこ
とによってなされる。この演算を実行するにあたり演算
に必要なデータをプログラムメモリ13に記憶し、読み
出しあるいは書き込みを実行する。Data is read from and written to each register by sequentially taking out instructions from a program memory 13 in which a program describing a procedure of an operation process to be executed is stored, and executing an operation based on the instructions. Done. The data necessary for the operation for executing the operation is stored in the program memory 13 and read or written.
【0022】第2のユニット33は、算術演算レジスタ
20および第2の算術演算ユニット21を具備してい
て、算術演算を実行する。このユニットでは、たとえば
信号処理等を実現するための演算処理が実行される。算
術演算レジスタ20では、内部バス25を介して、もし
くはプログラムデコーダユニット14からデコードされ
たデータが入力されて一時的に記憶される。これらのデ
ータは、所定の記憶領域に格納されている(たとえば、
図1に示されるz0,z1,・・・等に対応する領
域)。そのデータは、第2の算術演算ユニット21での
計算に使用される。第2の算術演算ユニット21では、
第1の算術演算ユニット19よりも複雑な計算が実行さ
れる。すなわち、第1の算術演算ユニット19ではアド
レス計算が実行される程度であったが、第2の算術演算
ユニット21では、より複雑な計算が実行される。たと
えば、上述した信号処理等の計算である。第2の算術演
算ユニット21では、算術演算レジスタ20あるいは内
部バス25から得られるデータを第2の算術演算ユニッ
ト21に入力し計算を実行する。そして、計算結果は第
2の算術演算ユニット21内の所定の記憶領域に格納さ
れるとともに、内部バス25あるいはデータメモリ24
に出力される。また、データアドレスレジスタ18、算
術演算レジスタ20等のレジスタは同一機能および同一
個数の複数レジスタを有した同一構成のレジスタバンク
で構成されている。たとえば、図1に示されるデータア
ドレスレジスタ18、算術演算レジスタ20、汎用レジ
スタ22、制御レジスタ、およびモード選択レジスタは
いずれも2個のレジスタから構成されている(このよう
なレジスタをバンク構成されたレジスタと呼ぶ。レジス
タの個数は2個に限定されない)。この数量は、もちろ
ん多ければ多いほど処理動作が速くなる。この数量は、
設計上必要な動作速度、コスト、装置内にレジスタが占
めることができる容量等が考慮されて決定される。ま
た、プロセスIDテーブル17にある特定の値を設定す
ることで、レジスタ退避・復旧制御ユニット16を介し
て、バンク切り替えが可能となるように設定されてい
る。The second unit 33 has an arithmetic operation register 20 and a second arithmetic operation unit 21, and executes an arithmetic operation. In this unit, for example, arithmetic processing for realizing signal processing and the like is executed. In the arithmetic operation register 20, decoded data is input via the internal bus 25 or from the program decoder unit 14, and is temporarily stored. These data are stored in a predetermined storage area (for example,
Regions corresponding to z0, z1,... Shown in FIG. 1). The data is used for calculation in the second arithmetic operation unit 21. In the second arithmetic operation unit 21,
More complicated calculations are performed than in the first arithmetic unit 19. That is, while the first arithmetic operation unit 19 performs only the address calculation, the second arithmetic operation unit 21 performs a more complicated calculation. For example, calculation such as the signal processing described above. In the second arithmetic operation unit 21, data obtained from the arithmetic operation register 20 or the internal bus 25 is input to the second arithmetic operation unit 21 to execute a calculation. Then, the calculation result is stored in a predetermined storage area in the second arithmetic operation unit 21 and the internal bus 25 or the data memory 24
Is output to The registers such as the data address register 18 and the arithmetic operation register 20 are constituted by register banks of the same configuration having the same function and the same number of registers. For example, the data address register 18, the arithmetic operation register 20, the general purpose register 22, the control register, and the mode selection register shown in FIG. 1 are each composed of two registers (such registers are bank-configured). (The number of registers is not limited to two.) Of course, the larger the number, the faster the processing operation. This quantity is
The decision is made in consideration of the operation speed and cost necessary for the design, the capacity that the register can occupy in the device, and the like. Further, by setting a specific value in the process ID table 17, the bank can be switched via the register save / restore control unit 16.
【0023】第3のユニット34は、汎用レジスタ22
を具備して、演算に必要なデータの一時記憶等に使用さ
れる。すなわち、プログラムデコーダユニット14から
デコードされたデータが入力されて一時的に記憶され
る。この汎用レジスタ22は、上記の算術演算等の特定
の用途を持ったレジスタとは異なる。汎用レジスタ22
は、多目的なレジスタであって、演算に必要なデータや
中間結果の一時的記憶域として使用したり、アドレス修
飾のために命令のアドレス部を修飾して、実際にアクセ
スするデータなどのアドレスを求める際に使用されるレ
ジスタ、または実行中のプログラムの先頭アドレスが記
憶されているレジスタとして使用したりすることができ
る。ここで、アドレス修飾とは、命令のアドレス部に、
アドレスを求める際に使用されるレジスタの値を加えて
目的のアドレスを得る動作のことである。この汎用レジ
スタ22でも、上述のレジスタに同様に所定の記憶領域
にデータが格納されている(たとえば、図1に示される
r0,r1,r2・・・等に対応する領域)。そのデー
タは、内部バス25を介して各ユニット等に出力され
る。また、プログラムデコーダユニット14または内部
バス25を介してほかのユニットからの指示に基づい
て、記憶されているデータから新たなデータがつくられ
て、その新たなデータが汎用レジスタ22に記憶される
場合もある。The third unit 34 includes the general-purpose register 22
And is used for temporary storage of data necessary for the calculation. That is, the decoded data is input from the program decoder unit 14 and is temporarily stored. The general-purpose register 22 is different from a register having a specific use such as the arithmetic operation described above. General purpose register 22
Is a versatile register that can be used as temporary storage for data required for operations and intermediate results, or can be used to modify the address part of an instruction for address modification to store the address of data that is actually accessed. It can be used as a register used for the calculation or as a register storing the start address of the program being executed. Here, the address modification means that
This is the operation to obtain the target address by adding the value of the register used for obtaining the address. Also in this general-purpose register 22, data is stored in a predetermined storage area in the above-described register similarly (for example, areas corresponding to r0, r1, r2,... Shown in FIG. 1). The data is output to each unit and the like via the internal bus 25. Also, when new data is created from stored data based on an instruction from another unit via the program decoder unit 14 or the internal bus 25, and the new data is stored in the general-purpose register 22. There is also.
【0024】第4のユニット35は、演算制御ユニット
23を具備して、算術演算等を実行する場合、その演算
モードを記憶する。演算制御ユニット23は、制御レジ
スタ、およびモード選択レジスタ等を具備している。制
御レジスタは、プログラムの実行順序を制御する。ま
た、主記憶から読み出された命令を記憶する。モード選
択レジスタは、演算処理モードを選択する。それらのデ
ータは、内部バス25を介して各ユニット等に出力され
る。The fourth unit 35 includes the operation control unit 23, and stores an operation mode when executing an arithmetic operation or the like. The arithmetic and control unit 23 includes a control register, a mode selection register, and the like. The control register controls the execution order of the program. Also, it stores the instruction read from the main memory. The mode selection register selects an operation processing mode. These data are output to each unit via the internal bus 25.
【0025】また、データアドレスレジスタ18、算術
演算レジスタ20、汎用レジスタ22、および演算制御
ユニット23に記憶されるデータは、プログラムデコー
ダユニット14に転送することができるように設定され
ている。The data stored in the data address register 18, the arithmetic operation register 20, the general purpose register 22, and the operation control unit 23 are set so as to be transferred to the program decoder unit 14.
【0026】また、データメモリ24、プログラム制御
ユニット31、第1のユニット32、第2のユニット3
3、第3のユニット34、および第4のユニット35は
内部バス25に接続され、必要に応じて演算結果等のデ
ータを転送可能となっている。The data memory 24, the program control unit 31, the first unit 32, the second unit 3
The third, third and fourth units 34 and 35 are connected to the internal bus 25 and can transfer data such as operation results as needed.
【0027】プログラムデコーダユニット14はデコー
ド結果にしたがってプログラムカウンタの制御を実行す
るとともにそのデコード結果をレジスタ退避・復旧制御
ユニット16、第1のユニット32、第2のユニット3
3、第3のユニット34、および第4のユニット35へ
任意に出力する。The program decoder unit 14 controls the program counter according to the decoding result, and stores the decoding result in the register save / restore control unit 16, the first unit 32, and the second unit 3.
3, arbitrarily output to the third unit 34 and the fourth unit 35.
【0028】以上のように、プロセスIDごとに各格納
場所を指定するプロセスIDテーブルが参照されて、レ
ジスタ退避・復旧制御ユニット16によってレジスタが
退避および復旧される。適切な格納場所がプロセスID
ごとに供給されることにより、退避または復旧するべき
レジスタの内容が少なくなる。したがって、退避または
復旧するための処理量が少なくなる。また、プログラム
メモリ内にある退避または復旧のためのプログラムも少
なくなる。ゆえに、レジスタの退避および復旧処理を効
率的に実行することが可能になる。その結果、頻繁なプ
ログラム切り替えに対しても効率的に対処することが可
能になる。As described above, the registers are saved and restored by the register save / restore control unit 16 with reference to the process ID table designating each storage location for each process ID. The appropriate storage location is the process ID
The contents of the registers to be saved or restored are reduced by being supplied every time. Therefore, the amount of processing for saving or restoring is reduced. Also, the number of programs for saving or restoring in the program memory is reduced. Therefore, the saving and restoring processing of the register can be efficiently executed. As a result, it is possible to efficiently cope with frequent program switching.
【0029】図2を参照して、プロセスIDごとに各レ
ジスタ種別に付される識別番号の例を示し、その例に対
応するレジスタの退避および復旧動作を説明する。Referring to FIG. 2, an example of an identification number assigned to each register type for each process ID will be described, and the saving and restoring operation of the register corresponding to the example will be described.
【0030】図2に示される例では、プロセスID=1
が付されているプログラムが実行されている間、プログ
ラムデコーダユニット14によってプロセスID=2が
発行される場合を想定する。レジスタ退避・復旧制御ユ
ニット16はまず、プロセスID=1のテーブルを参照
し、退避すべきレジスタの情報を取得する。この例では
プロセスID=1のとき、モード選択レジスタのフィー
ルドに識別番号“1”それ以外のレジスタおよびハード
ウエアスタック15のフィールドに識別番号“0”が格
納されている。ここで、識別番号は、上述したように、
参照すべき格納先の番号を示しており、この番号によっ
て格納される場所が指定される。識別番号“0”は特別
の意味を有し、退避・復旧動作を行わないことを示す。In the example shown in FIG. 2, process ID = 1
It is assumed that the process ID = 2 is issued by the program decoder unit 14 while the program marked with “.” Is being executed. First, the register save / restore control unit 16 refers to the table of the process ID = 1, and acquires the information of the register to be saved. In this example, when the process ID = 1, the identification number “1” is stored in the field of the mode selection register and the identification number “0” is stored in the other registers and the field of the hardware stack 15. Here, the identification number is, as described above,
The number of the storage destination to be referred to is indicated, and the storage location is designated by this number. The identification number “0” has a special meaning and indicates that the save / restore operation is not performed.
【0031】レジスタ退避・復旧制御ユニット16はプ
ロセスID=1のテーブルに基づき、各レジスタの退避
動作を実行する。図2に示される例では、モード選択レ
ジスタのみが退避される対象である。その識別番号
“1”から格納すべき場所が確定され、モード選択レジ
スタの退避が実行される。The register save / restore control unit 16 executes the save operation of each register based on the table of process ID = 1. In the example shown in FIG. 2, only the mode selection register is a target to be saved. The location to be stored is determined from the identification number "1", and the mode selection register is saved.
【0032】つぎにプログラムデコーダユニット14か
ら取得したプロセスID=2に基づき、レジスタの復旧
が実行される。図2ではデータアドレスレジスタ18、
算術演算レジスタ20、ハードウエアスタック15、お
よび汎用レジスタ22に対しては識別番号“1”が割り
当てされ、モード選択レジスタに対しては識別番号
“2”が割り当てされている。レジスタ退避・復旧制御
ユニット16はこの識別番号“1”および“2”に対応
する場所から、これらのレジスタに内容を復旧させる。
なお、識別番号はデータアドレスレジスタ18、算術演
算レジスタ20等のレジスタごとに割り当てされてお
り、レジスタ種別間で同じ識別番号であっても、その格
納場所は異なる。Next, the register is restored based on the process ID = 2 obtained from the program decoder unit 14. In FIG. 2, the data address register 18,
The identification number "1" is assigned to the arithmetic operation register 20, the hardware stack 15, and the general-purpose register 22, and the identification number "2" is assigned to the mode selection register. The register save / restore control unit 16 restores the contents of these registers from the locations corresponding to the identification numbers “1” and “2”.
The identification number is assigned to each register such as the data address register 18 and the arithmetic operation register 20. Even if the register number is the same, the storage location is different.
【0033】またさらに、プロセスID=2が付されて
いるプログラムが実行されている間、プログラムデコー
ダユニット14によってプロセスID=3が発行される
場合は、レジスタ退避・復旧ユニットは、プロセスID
=2のテーブルを参照し、退避すべきレジスタの情報を
取得する。すなわち、データアドレスレジスタ18、算
術演算レジスタ20、ハードウエアスタック15、およ
び汎用レジスタ22には、識別番号“1”が付されてい
て、モード選択レジスタには識別番号“2”が付されて
いる。その後、この識別番号にしたがってレジスタ退避
・復旧制御ユニット16は、各レジスタの退避動作を実
行する。すなわち、データアドレスレジスタ18、算術
演算レジスタ20、ハードウエアスタック15、および
汎用レジスタ22は、それぞれ識別番号“1”に対応す
る退避場所に、レジスタの内容が退避され格納される。
モード選択レジスタは、識別番号“2”に対応する退避
場所に、レジスタの内容退避され格納されている。Further, when the program decoder unit 14 issues the process ID = 3 while the program with the process ID = 2 is being executed, the register save / restore unit sets the process ID
= 2, the information of the register to be saved is acquired. That is, the data address register 18, the arithmetic operation register 20, the hardware stack 15, and the general-purpose register 22 are assigned an identification number "1", and the mode selection register is assigned an identification number "2". . Thereafter, the register save / restore control unit 16 executes the save operation of each register according to the identification number. That is, the contents of the data address register 18, the arithmetic operation register 20, the hardware stack 15, and the general-purpose register 22 are saved and stored in the save locations corresponding to the identification numbers "1", respectively.
The mode selection register is saved and stored in the save location corresponding to the identification number “2”.
【0034】つぎに、プログラムデコーダユニット14
から取得したプロセスID=3に基づいて、レジスタの
復旧動作が実行される。図2を参照すると、データアド
レスレジスタ18、算術演算レジスタ20、ハードウエ
アスタック15、および汎用レジスタ22には、識別番
号“2”が付されていて、モード選択レジスタには識別
番号“3”が付されている。したがって、レジスタ退避
・復旧制御ユニット16がこの識別番号“2”および識
別番号“3”に対応する場所から、これらレジスタに内
容を復旧させる。Next, the program decoder unit 14
The register recovery operation is executed based on the process ID = 3 obtained from the process. Referring to FIG. 2, the data address register 18, the arithmetic operation register 20, the hardware stack 15, and the general-purpose register 22 are provided with an identification number "2", and the mode selection register is provided with an identification number "3". Is attached. Therefore, the register save / restore control unit 16 restores the contents of these registers from the location corresponding to the identification numbers “2” and “3”.
【0035】またほかの例として、プロセスID=1が
実行されている間、プログラムデコーダユニット14に
よってプロセスID=nが発行される場合を想定する。
この場合は、レジスタ退避・復旧制御ユニット16はま
ず、プロセスID=1のテーブルを参照し、退避すべき
レジスタの情報を取得する。この例ではプロセスID=
1のとき、モード選択レジスタのフィールドに識別番号
“1”それ以外のレジスタおよびハードウエアスタック
15のフィールドに識別番号“0”が格納されている。
したがって、モード選択レジスタの内容のみが識別番号
“1”で特定される場所に格納される。As another example, it is assumed that the process ID = n is issued by the program decoder unit 14 while the process ID = 1 is being executed.
In this case, the register save / restore control unit 16 first refers to the table of the process ID = 1, and acquires information of the register to be saved. In this example, process ID =
When it is 1, the identification number “1” is stored in the field of the mode selection register and the identification number “0” is stored in the other registers and the field of the hardware stack 15.
Therefore, only the contents of the mode selection register are stored in the location specified by the identification number "1".
【0036】つぎに、プログラムデコーダユニット14
から取得したプロセスID=nに基づいて、レジスタの
復旧動作が実行される。図2を参照すると、データアド
レスレジスタ18、算術演算レジスタ20、モード選択
レジスタ、ハードウエアスタック15、および汎用レジ
スタ22には、それぞれ識別番号“a”、“b”、
“c”、“d”、および“d”が付されている。したが
って、レジスタ退避・復旧制御ユニット16がこの識別
番号“a”、“b”、“c”、および“d”に対応する
場所から、これらレジスタに内容を復旧させる。Next, the program decoder unit 14
, The register is restored based on the process ID = n obtained from the process. Referring to FIG. 2, the data address register 18, the arithmetic operation register 20, the mode selection register, the hardware stack 15, and the general-purpose register 22 have identification numbers "a", "b",
“C”, “d”, and “d” are added. Therefore, the register save / restore control unit 16 restores the contents of these registers from the locations corresponding to the identification numbers “a”, “b”, “c”, and “d”.
【0037】図3のフロー図を参照して、実行中のプロ
グラムに関するレジスタの内容が退避されて、割り込み
プログラムに関するレジスタの内容が復旧される動作を
説明する。Referring to the flowchart of FIG. 3, the operation of saving the register contents related to the program being executed and restoring the register contents related to the interrupt program will be described.
【0038】まず、実行中のプログラムのプロセスID
がレジスタ退避・復旧制御ユニット16に取得される。
このプロセスIDは、プログラムデコーダユニット14
から出力される(ST−1)。First, the process ID of the program being executed
Is acquired by the register save / restore control unit 16.
This process ID is stored in the program decoder unit 14
(ST-1).
【0039】ステップST−2では、割り込み制御ユニ
ット11で割り込み信号が生成される。割り込み信号
は、実行中のプログラムを一時停止して、割り込みプロ
グラムを実行するための信号である。この割り込み信号
は、プログラムデコーダユニット14に出力されて、さ
らにレジスタ退避・復旧制御ユニット16に出力され
る。In step ST-2, the interrupt control unit 11 generates an interrupt signal. The interrupt signal is a signal for temporarily stopping the program being executed and executing the interrupt program. This interrupt signal is output to the program decoder unit 14 and further output to the register save / restore control unit 16.
【0040】ステップST−3では、レジスタ退避・復
旧制御ユニット16が、割り込み信号を検出して、プロ
セスIDテーブル17を参照して、割り込まれる実行中
のプログラムのプロセスIDに関して、各レジスタの内
容をどこに退避させるかを認識する。In step ST-3, the register save / restore control unit 16 detects the interrupt signal and refers to the process ID table 17 to determine the contents of each register with respect to the process ID of the interrupted program being executed. Know where to evacuate.
【0041】ステップST−4では、ステップST−3
での認識にしたがって、各レジスタの内容を退避させ
る。In step ST-4, step ST-3
The contents of each register are saved in accordance with the recognition in the above.
【0042】ステップST−5では、レジスタ退避・復
旧制御ユニット16において、実行中のプログラムに対
応するプロセスIDを割り込みプログラムに対応するプ
ロセスIDに変更する。In step ST-5, the register save / restore control unit 16 changes the process ID corresponding to the program being executed to the process ID corresponding to the interrupt program.
【0043】ステップST−6では、レジスタ退避・復
旧制御ユニット16によって、ステップST−5で変更
されたプロセスIDに基づいて、プロセスIDテーブル
17を参照して、割り込みプログラムで使用されるレジ
スタの内容の格納場所が認識される。In step ST-6, the register save / restore control unit 16 refers to the process ID table 17 based on the process ID changed in step ST-5, and reads the contents of the register used in the interrupt program. Is recognized.
【0044】ステップST−7では、ステップST−6
で認識された割り込みプログラムで使用されるレジスタ
の内容が各レジスタに復旧される。In step ST-7, step ST-6
The contents of the registers used in the interrupt program recognized in step are restored to the respective registers.
【0045】図4を参照して、あるプログラムが実行さ
れていて、その後割り込みプログラムがそのプログラム
に割り込む場合を説明する。図4はプロセスIDが
“1”に割り当てされているプログラム実行途中にプロ
セスIDが“2”に割り当てされている割り込みプログ
ラムが入り、処理を切り替える例を示したものである。Referring to FIG. 4, a case will be described in which a certain program is being executed and then an interrupt program interrupts the program. FIG. 4 shows an example in which an interrupt program assigned to the process ID "2" enters during the execution of the program assigned to the process ID "1", and the process is switched.
【0046】プロセスID=1が付されているプログラ
ムが動作OP−1、動作OP−2と実行された後、プロ
セスID=2が付されているプログラムが割り込む。す
なわち、動作OP−2が実行された後に、プロセスID
=2が付されているプログラムの動作1が実行される。
ここで、図3の右に示されているプロセスID=2の割
り込みプログラムの左側に示されている番号1,2,
3,・・・,m,m+1,およびm+2は、プロセスI
D=2が付されているプログラム中で実行される順番に
対応している。After the program with process ID = 1 is executed in the operations OP-1 and OP-2, the program with process ID = 2 is interrupted. That is, after the operation OP-2 is executed, the process ID
Operation 1 of the program marked with = 2 is executed.
Here, the numbers 1, 2, and 2 shown on the left side of the interrupt program of process ID = 2 shown on the right side of FIG.
3,..., M, m + 1, and m + 2 are processes I
This corresponds to the order of execution in the program with D = 2.
【0047】プロセスID=1が付されているプログラ
ムの動作OP−2の実行後は、動作1の“getpro
cessID temp”の命令が実行される。この命
令は、実行途中で割り込まれたプログラムのプロセスI
Dを取得する。そして、このプロセスIDをデータメモ
リ24の仮の領域であるtempに格納する。すなわ
ち、プロセスIDの“1”を取得して、この“1”をt
empに格納する。After the execution of the operation OP-2 of the program assigned with the process ID = 1, the “getpro” of the operation 1 is executed.
cessID temp ”is executed. This instruction corresponds to the process I of the program interrupted during execution.
Get D. Then, the process ID is stored in the temporary area temp of the data memory 24. That is, “1” of the process ID is acquired, and this “1” is set to t.
Store in emp.
【0048】つぎに、動作2の“restoreReg
2”の命令が実行される。この命令は、現在のプロセ
スIDを“1”から“2”に変更するとともに、プロセ
スIDテーブル17に記述された内容に基づいて、レジ
スタの退避および復旧を実行する。Next, in operation 2, "restoreReg"
This instruction changes the current process ID from "1" to "2" and executes the saving and restoring of the register based on the contents described in the process ID table 17. I do.
【0049】図5、図6および図7を参照して、図4に
対応したレジスタの退避および復旧動作を説明する。図
4に示される例でのプロセスIDテーブル17は図5に
示されるものであるとする。プログラムデコーダユニッ
ト14において命令“restoreReg 2”がデ
コードされると、現在設定されているプロセスID(換
言すれば、割り込まれたプログラムのプロセスID。こ
の例では、プロセスID=1)に基づき、プロセスID
テーブル17が参照される。図4において、プロセスI
D=1に対応するテーブル値は、(データアドレスレジ
スタ18、算術演算レジスタ20、モード選択レジス
タ、ハードウエアスタック15、汎用レジスタ22)=
(1,1,1,1,1)に設定されている。したがっ
て、図6に示されるように、これら各レジスタおよびハ
ードウエアスタック15の内容を識別番号1に対応する
場所に退避する。Referring to FIGS. 5, 6, and 7, the saving and restoring operations of the register corresponding to FIG. 4 will be described. It is assumed that the process ID table 17 in the example shown in FIG. 4 is as shown in FIG. When the instruction “restoreReg 2” is decoded in the program decoder unit 14, the process ID is determined based on the currently set process ID (in other words, the process ID of the interrupted program. In this example, the process ID = 1).
Table 17 is referenced. Referring to FIG.
The table value corresponding to D = 1 is (data address register 18, arithmetic operation register 20, mode selection register, hardware stack 15, general-purpose register 22) =
(1, 1, 1, 1, 1). Therefore, as shown in FIG. 6, these registers and the contents of the hardware stack 15 are saved to a location corresponding to the identification number 1.
【0050】つぎに、この退避処理が完了した後、割り
込みプログラムのプロセスID=2に基づいてプロセス
IDテーブル17が参照されて、プロセスID=2に対
応するテーブル値、(データアドレスレジスタ18、算
術演算レジスタ20、モード選択レジスタ、ハードウエ
アスタック15、汎用レジスタ22)=(0,0,2,
0,0)が得られる。すなわち、図6に示されるよう
に、モード選択レジスタの内容を識別番号2に対応する
場所から、モード選択レジスタに順次書き込みを実行し
て、モード選択レジスタの内容を復旧させる。なお、モ
ード選択レジスタ以外のレジスタおよび汎用レジスタ2
2に対しては、復旧動作は実行されない。Next, after the saving process is completed, the process ID table 17 is referred to based on the process ID = 2 of the interrupt program, and the table value corresponding to the process ID = 2 (data address register 18, arithmetic Arithmetic register 20, mode selection register, hardware stack 15, general-purpose register 22) = (0, 0, 2, 2)
(0,0) is obtained. In other words, as shown in FIG. 6, the contents of the mode selection register are sequentially written from the location corresponding to the identification number 2 to the contents of the mode selection register to restore the contents of the mode selection register. Note that registers other than the mode selection register and the general-purpose register 2
No recovery operation is performed for the second.
【0051】その後は、動作3(OP−3)が実行され
る(図4参照)。そして、順に割り込みプログラムに記
述された動作が、動作m(OP−m)まで実行される。
そして、プロセスID=2の処理が終了される。Thereafter, the operation 3 (OP-3) is executed (see FIG. 4). Then, the operations described in the interrupt program in order are executed up to the operation m (OP-m).
Then, the process of process ID = 2 is terminated.
【0052】この割り込みプログラムの処理が終了され
る場合は、図4に示される動作m+1および動作m+2
が実行される。すなわち、動作m+1の“restor
eReg temp”の命令が実行される。この命令
は、動作1でデータメモリ24の仮領域に取得されたt
empに格納されているプロセスIDにプロセスIDを
変更し、プロセスIDテーブル17に記述された内容に
基づいて、レジスタの退避および復旧を実行する。When the processing of the interrupt program is completed, the operations m + 1 and m + 2 shown in FIG.
Is executed. That is, “restor” of operation m + 1
The instruction of “eReg temp” is executed. This instruction corresponds to the t acquired in the temporary area of the data memory 24 in the operation 1.
The process ID is changed to the process ID stored in emp, and the register is saved and restored based on the contents described in the process ID table 17.
【0053】プログラムデコーダユニット14において
命令“restoreReg temp”がデコードさ
れると、現在設定されているプロセスID(換言すれ
ば、割り込みプログラムのプロセスID。これの例で
は、プロセスID=2)に基づき、プロセスIDテーブ
ル17が参照される。図4において、プロセスID=2
に対応するテーブル値は、(データアドレスレジスタ1
8、算術演算レジスタ20、モード選択レジスタ、ハー
ドウエアスタック15、汎用レジスタ22)=(0,
0,2,0,0)に設定されている。したがって、図7
に示されるように、モード選択レジスタの内容が識別番
号2に対応する場所に退避される。なお、モード選択レ
ジスタ以外のレジスタおよび汎用レジスタ22に対して
は、退避動作は実行されない。When the instruction "restoreReg temp" is decoded in the program decoder unit 14, based on the currently set process ID (in other words, the process ID of the interrupt program. In this example, process ID = 2) The process ID table 17 is referred to. In FIG. 4, process ID = 2
Table value corresponding to (data address register 1
8, arithmetic operation register 20, mode selection register, hardware stack 15, general-purpose register 22) = (0,
(0, 2, 0, 0). Therefore, FIG.
As shown in (1), the contents of the mode selection register are saved to the location corresponding to the identification number 2. The save operation is not performed on the registers other than the mode selection register and the general-purpose register 22.
【0054】つぎに、この退避処理が完了した後、割り
込まれたプログラムのプロセスID=1に基づいてプロ
セスIDテーブル17が参照されて、プロセスID=1
に対応するテーブル値、(データアドレスレジスタ1
8、算術演算レジスタ20、モード選択レジスタ、ハー
ドウエアスタック15、汎用レジスタ22)=(1,
1,1,1,1)が得られる。すなわち、図7に示され
るように、これら各レジスタおよびハードウエアスタッ
ク15に順次書き込みを実行して、これら各レジスタお
よびハードウエアスタック15の内容を復旧させる。そ
して、その後、動作m+2の“iret”が実行され
る。この動作m+2によって、プロセスID=1のプロ
グラムに戻る。なお、格納場所はプロセスIDによって
データメモリ24あるいはレジスタバンクの片側に割り
当てることが可能である。Next, after the saving process is completed, the process ID table 17 is referred to based on the process ID = 1 of the interrupted program, and the process ID = 1.
Table value corresponding to (data address register 1
8, arithmetic operation register 20, mode selection register, hardware stack 15, general-purpose register 22) = (1,
1, 1, 1, 1) are obtained. That is, as shown in FIG. 7, the contents of these registers and the hardware stack 15 are restored by sequentially writing to these registers and the hardware stack 15. After that, “iret” of the operation m + 2 is executed. The operation m + 2 returns to the program with the process ID = 1. The storage location can be assigned to the data memory 24 or one side of the register bank by the process ID.
【0055】この発明は、上述した実施の形態に限定さ
れるものではなく、その技術的範囲において種々変形し
て実施することができる。The present invention is not limited to the above-described embodiment, but can be implemented with various modifications within the technical scope.
【0056】[0056]
【発明の効果】この発明によれば、割り込み動作処理を
実行する環境下において、レジスタの退避・復旧をその
レジスタ種別ごとに実行することが可能になる。According to the present invention, it is possible to save and restore a register for each register type in an environment where an interrupt operation process is executed.
【0057】また、実行するプロセスの種別応じて、選
択的に退避・復旧動作を実行することにより、プログラ
ムの切り替えに要する処理を効率的に実行することがで
きる。Further, by selectively executing the save / restore operation according to the type of the process to be executed, it is possible to efficiently execute the processing required for switching the program.
【0058】さらに、プログラム切り替えで発生するレ
ジスタ退避および復旧に要する処理を効率的に実行する
ことにより、頻繁なプログラム切り替えに対しても効率
的に対処することが可能になる。Further, by efficiently executing the processing required for saving and restoring the registers generated by the program switching, it is possible to efficiently cope with the frequent program switching.
【図1】この発明の一実施形態に係るレジスタ退避復旧
方法を実行するディジタル信号処理装置の機能ブロック
図である。FIG. 1 is a functional block diagram of a digital signal processing device that executes a register save / restore method according to an embodiment of the present invention.
【図2】図1に示されるプロセスIDテーブルに記憶さ
れるテーブルであって、各レジスタおよびハードウエア
スタックの内容を退避したり、復旧したりする場合の内
容の格納場所をプロセスIDごとに示すテーブルであ
る。FIG. 2 is a table stored in the process ID table shown in FIG. 1 and shows, for each process ID, a storage location of the contents when saving and restoring the contents of each register and a hardware stack; It is a table.
【図3】図1に示されるレジスタ退避・復旧制御ユニッ
トにおいて、実行中のプログラムのレジスタの内容を退
避して、変更後のプロセスIDに基づいてレジスタの内
容を復旧する一連の流れを示すフロー図である。FIG. 3 is a flowchart showing a series of flows in the register saving / restoring control unit shown in FIG. 1 for saving the contents of a register of a program being executed and restoring the contents of the register based on a changed process ID; FIG.
【図4】実行中のプログラムに割り込みプログラムが割
り込む場合の一例であって、プロセスID=1のプログ
ラムにプロセスID=2のプログラムが割り込まれる場
合の例を示す図である。FIG. 4 is a diagram illustrating an example in which an interrupt program interrupts a program being executed, in which a program with process ID = 2 is interrupted with a program with process ID = 1.
【図5】図4に示される例でのプロセスIDテーブルの
内容を示す。FIG. 5 shows the contents of a process ID table in the example shown in FIG.
【図6】図4に示されるプロセスID=2のプログラム
中の動作2が実行される場合の退避および復旧動作を示
す図である。6 is a diagram showing a save and restore operation when an operation 2 in a program with a process ID = 2 shown in FIG. 4 is executed.
【図7】図4に示されるプロセスID=2のプログラム
中の動作m+1が実行される場合の退避および復旧動作
を示す図である。7 is a diagram showing a save and restore operation when an operation m + 1 in a program with a process ID = 2 shown in FIG. 4 is executed.
【符号の説明】 11 割り込み制御ユニット 12 プログラムアドレス生成ユニット 13 プログラムメモリ 14 プログラムデコーダユニット 15 ハードウエアスタック 16 レジスタ退避・復旧制御ユニット 17 プロセスIDテーブル 18 データアドレスレジスタ 19 第1の算術演算ユニット 20 算術演算レジスタ 21 第2の算術演算ユニット 22 汎用レジスタ 23 演算制御ユニット 24 データメモリ 25 内部バス 31 プログラム制御ユニット 32 第1のユニット 33 第2のユニット 34 第3のユニット 35 第4のユニット[Description of Signs] 11 Interrupt control unit 12 Program address generation unit 13 Program memory 14 Program decoder unit 15 Hardware stack 16 Register save / restore control unit 17 Process ID table 18 Data address register 19 First arithmetic operation unit 20 Arithmetic operation Register 21 Second arithmetic operation unit 22 General-purpose register 23 Operation control unit 24 Data memory 25 Internal bus 31 Program control unit 32 First unit 33 Second unit 34 Third unit 35 Fourth unit
Claims (3)
て、プログラムを実行するためにデータを一時的に格納
するためのレジスタのデータ内容をプログラムにしたが
って、データを格納する第1の格納手段に退避し、デー
タを格納する第2の格納手段から前記レジスタのデータ
内容をプログラムしたがって復旧するレジスタ退避復旧
方法において、 実行されているプログラムの識別番号を取得し、 この実行されているプログラムを一時停止して、第2の
プログラムを実行させる命令をする割り込み信号を発生
し、 この割り込み信号を検出することによって、この実行さ
れているプログラムの識別番号に基づいて、レジスタと
識別番号とが対応付けられているテーブルを参照して、
レジスタの内容を前記第1の格納手段に退避させ、 前記割り込み信号に基づいて、実行されているプログラ
ムの識別番号を第2のプログラムの識別番号に変更し、 変更後の第2のプログラムの識別番号に基づいて、前記
テーブルを参照して、レジスタの内容を前記第2の格納
手段から復旧させる、 ことを特徴とするレジスタ退避復旧方法。An identification number is assigned to each program, and data contents of a register for temporarily storing data for executing the program are stored in first storage means for storing data in accordance with the program. In a register save / restore method for restoring and registering the data content of the register from a second storage means for saving and storing data, an identification number of a program being executed is obtained, and the program being executed is temporarily stopped. Then, an interrupt signal for giving an instruction to execute the second program is generated. By detecting the interrupt signal, the register and the identification number are associated with each other based on the identification number of the program being executed. With reference to the table
The contents of the register are saved in the first storage means, and the identification number of the program being executed is changed to the identification number of the second program based on the interrupt signal, and the identification of the second program after the change is performed. A register save / restore method, wherein the contents of a register are restored from the second storage unit by referring to the table based on a number.
いに参照される格納場所が、プログラムの前記識別番号
に対応して指定されていて、この番号に基づいてレジス
タの内容が退避および復旧されることを特徴とする請求
項1記載のレジスタ退避復旧方法。2. A plurality of registers are provided. In the table, a storage location to be referred to when saving and restoring for each register is specified in correspondence with the identification number of a program. 2. The register saving / restoring method according to claim 1, wherein the contents of the register are saved and restored based on the number.
ジスタまたはデータが格納されるメモリであることを特
徴とする請求項2記載のレジスタ退避復旧方法。3. The register saving / restoring method according to claim 2, wherein said storage location is a register in a bank or a memory for storing data.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001138680A JP2002333985A (en) | 2001-05-09 | 2001-05-09 | Register saving and restoring method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001138680A JP2002333985A (en) | 2001-05-09 | 2001-05-09 | Register saving and restoring method |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2002333985A true JP2002333985A (en) | 2002-11-22 |
Family
ID=18985577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001138680A Pending JP2002333985A (en) | 2001-05-09 | 2001-05-09 | Register saving and restoring method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2002333985A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007257257A (en) * | 2006-03-23 | 2007-10-04 | Matsushita Electric Ind Co Ltd | Task execution environment switching method in multi-task system |
CN104995608A (en) * | 2013-03-15 | 2015-10-21 | 高通股份有限公司 | Method, apparatus and program product to save and restore system memory management unit (mmu) contexts |
-
2001
- 2001-05-09 JP JP2001138680A patent/JP2002333985A/en active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007257257A (en) * | 2006-03-23 | 2007-10-04 | Matsushita Electric Ind Co Ltd | Task execution environment switching method in multi-task system |
CN104995608A (en) * | 2013-03-15 | 2015-10-21 | 高通股份有限公司 | Method, apparatus and program product to save and restore system memory management unit (mmu) contexts |
KR20150130499A (en) * | 2013-03-15 | 2015-11-23 | 퀄컴 인코포레이티드 | Method, apparatuses and program product to save and store system memory management unit contexts |
JP2016511493A (en) * | 2013-03-15 | 2016-04-14 | クアルコム,インコーポレイテッド | Method and apparatus for saving and restoring system memory management unit context |
KR101701910B1 (en) * | 2013-03-15 | 2017-02-13 | 퀄컴 인코포레이티드 | Method, apparatuses and program product to save and store system memory management unit contexts |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6269440B1 (en) | Accelerating vector processing using plural sequencers to process multiple loop iterations simultaneously | |
JPH0223431A (en) | Interrupt processing system | |
JPS61286931A (en) | Information processor | |
JPH0460720A (en) | Control system for condition branching instruction | |
JP3970609B2 (en) | Processor system | |
EP0240606A2 (en) | Pipe-line processing system and microprocessor using the system | |
JP2002333985A (en) | Register saving and restoring method | |
KR100188374B1 (en) | Central processing unit and an arithmetic operation processing unit | |
JPH056281A (en) | Information processor | |
JP2826309B2 (en) | Information processing device | |
JPH0377137A (en) | Information processor | |
JPS63197234A (en) | Information processor | |
JPH0218732B2 (en) | ||
JP2876629B2 (en) | Data processing device | |
JP2672955B2 (en) | Additional processor control system | |
JPS6239779B2 (en) | ||
JP2679603B2 (en) | Microcomputer | |
JPH0916399A (en) | Computer | |
JPH0348365A (en) | Exception processing system | |
JPH08297583A (en) | Processor and method for interruption processing | |
JPH03196204A (en) | Programmable controller | |
JPH0269826A (en) | System for controlling instruction with condition | |
JPS6329847A (en) | Data processor | |
JPH02137028A (en) | Instruction control system | |
JPH01130228A (en) | Microprogram controller |