JPH05108374A - Multitask execution device - Google Patents
Multitask execution deviceInfo
- Publication number
- JPH05108374A JPH05108374A JP27058791A JP27058791A JPH05108374A JP H05108374 A JPH05108374 A JP H05108374A JP 27058791 A JP27058791 A JP 27058791A JP 27058791 A JP27058791 A JP 27058791A JP H05108374 A JPH05108374 A JP H05108374A
- Authority
- JP
- Japan
- Prior art keywords
- register
- register bank
- bank
- system call
- empty
- 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.)
- Granted
Links
Abstract
Description
【0001】[0001]
【産業上の利用分野】本発明は、マルチタスク実行中に
割込み・例外処理あるいはシステムコールが発生した場
合、ハードウェアによりスケジューリングを行ない、か
つコンテキストスイッチを高速に行うメモリ保護機能を
備えたマルチタスク実行装置に関するものである。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a multitasking system having a memory protection function that performs scheduling by hardware and performs context switching at high speed when an interrupt / exception process or a system call occurs during multitasking execution. It relates to an execution device.
【0002】[0002]
【従来の技術】従来より、マルチタスク処理においてタ
スク実行中に割込み・例外処理あるいはシステムコール
が発生した場合、処理プログラムを実行するため、レジ
スタバンクを割り当てる。このとき、割り当てられるレ
ジスタバンクは特定のものであり、実行されるプログラ
ムが前処理だけであっても、プログラムの実行は必要で
あり、必らずオペレーティングシステム(以下OS)を
起動するためにレジスタバンクを割り当てていた。割込
み・例外処理は実行中のプログラムと非同期に発生する
ものであり、現在実行中のタスク群に新たに割込み・例
外処理タスクが加わるため、実行の際は前処理のため、
1つのレジスタバンクを解放する必要がある。2. Description of the Related Art Conventionally, a register bank is assigned to execute a processing program when an interrupt / exception processing or a system call occurs during task execution in multitask processing. At this time, the register bank to be allocated is a specific one, and even if the program to be executed is only preprocessing, it is necessary to execute the program and inevitably register it to activate the operating system (hereinafter OS). I had assigned a bank. Interrupt / exception processing occurs asynchronously with the program being executed, and a new interrupt / exception processing task is added to the currently executing task group.
One register bank needs to be released.
【0003】これに対し、システムコール処理は実行中
のプログラムと同期して発生するものであり、現在実行
中のタスクに関連してスケジューリングや入出力の制御
が行われるので、システムコールの処理内容は一連の処
理の一部分と考えることができる。したがって、システ
ムコールの場合、システムコールを発行したレジスタバ
ンクで継続してシステムコール処理を実行することによ
り、新たにレジスタバンクを割り当てる必要がないにも
かかわらず、一律一定のレジスタバンクによりシステム
コールの受理を行っていた。On the other hand, the system call processing occurs in synchronization with the program being executed, and scheduling and input / output control are performed in relation to the currently executing task. Can be considered as part of a series of processes. Therefore, in the case of a system call, by continuously executing the system call processing in the register bank that issued the system call, it is not necessary to allocate a new register bank, but the system call is uniformly distributed by a constant register bank. I was accepting.
【0004】このため一連のタスク処理において2つの
レジスタバンクを使用しており、また、割込み・例外処
理あるいはシステムコールを受理する際に実行するレジ
スタバンクに過去タスクを割り当てていたか否かという
判断なしに常にプログラム情報をメモリ空間(以下スタ
ックエリア)に待避をしていた。このため、コンテキス
トスイッチに時間を要していた。For this reason, two register banks are used in a series of task processing, and there is no judgment as to whether or not a past task has been assigned to the register bank to be executed when interrupt / exception processing or a system call is accepted. In addition, the program information was always saved in the memory space (hereinafter referred to as the stack area). Therefore, it takes time to switch the context.
【0005】また、割込み・例外処理では、処理優先レ
ベルがプログラム上で設定できるシステムが多くみら
れ、このため複数の割込み・例外処理が発生しても、あ
るいは複数のタスクが発生していても優先度の高い割込
み・例外処理から集中的に実行できるので、1つの割込
み・例外処理がCPUを独占し、早期に処理を実行する
手段が考えられている。ところがシステムコールの処理
内容は、ほとんどが他のタスクと並行実行可能な処理内
容であるにもかかわらず、システムコールの処理優先レ
ベルはシステムコール発行時点では判断できず、最初に
発生したシステムコールを再優先に受理する手段がとら
れており、システムコールの多重受理が不可能な構成と
なっている。In interrupt / exception processing, there are many systems in which the processing priority level can be set on a program. Therefore, even if a plurality of interrupt / exception processing occur or a plurality of tasks occur. Since it is possible to intensively execute interrupt / exception processing with a high priority, one interrupt / exception processing monopolizes the CPU and a means for executing the processing early is considered. However, even though most of the system call processing can be executed concurrently with other tasks, the system call processing priority level cannot be determined when the system call is issued, and the system call that occurred first The system takes measures to accept the priority again, and it is not possible to accept multiple system calls.
【0006】図5は従来のシステムコール・割込み発生
の場合のレジスタバンク割り当ての実施例を示した図で
ある。レジスタバンク0(図中ではレジスタバンクをバ
ンクという)は特権バンクであり、システム制御を実行
する特権プログラムが実行されるレジスタバンクであ
る。レジスタバンク1,2,3はアプリケーションプロ
グラムや特権プログラム実行により発生したユーザープ
ログラムを実行するレジスタバンクである。横軸(X
軸)は時間である。FIG. 5 is a diagram showing an embodiment of conventional register bank allocation in the case of system call / interrupt generation. Register bank 0 (register bank is referred to as bank in the figure) is a privilege bank, and is a register bank in which a privileged program for executing system control is executed. The register banks 1, 2, and 3 are register banks that execute a user program generated by executing an application program or a privileged program. Horizontal axis (X
(Axis) is time.
【0007】ユーザー用レジスタバンク1においてシス
テムコールが発行され特権プログラムが実行される。こ
のとき、特権プログラムはレジスタバンク0により実行
されるので、レジスタバンク0で実行していたプログラ
ムのインストラクションポインタなどのプログラム情報
をスタック空間に待避する必要がある。レジスタバンク
0においてレジスタバンク1のシステムコール発行を受
けてプログラム情報の待避処理が行われた後、システム
コール処理が実行される。In the user register bank 1, a system call is issued and a privileged program is executed. At this time, since the privileged program is executed by the register bank 0, it is necessary to save the program information such as the instruction pointer of the program executed in the register bank 0 in the stack space. After receiving the system call issued by the register bank 1 in the register bank 0 and saving the program information, the system call process is executed.
【0008】次にレジスタバンク2においてシステムコ
ールが発行された場合、レジスタバンク1の場合と同様
にレジスタバンク0においてレジスタバンク2のシステ
ムコール発行を受けてプログラム情報の待避処理が行わ
れた後、システムコール処理が実行される。次にレジス
タバンク3でタスク実行中に割込みが発生した場合、レ
ジスタバンク0のプログラム情報を待避した後、レジス
タバンク0で割込み処理が実行される。Next, when a system call is issued in the register bank 2, as in the case of the register bank 1, after the system call is issued by the register bank 2 in the register bank 0 to save the program information, System call processing is executed. Next, when an interrupt occurs during execution of a task in the register bank 3, the program information in the register bank 0 is saved, and then the interrupt process is executed in the register bank 0.
【0009】このように、システムコール処理・割込み
処理を実行する場合、特権用レジスタバンクの内容が常
に待避されてから処理が実行されるため、オーバーヘッ
ドが発生していた。特にレジスタバンクの内容を待避す
る場合、一般にすべてのレジスタの内容を待避するので
はなく、必要なレジスタのみを待避するので、どのレジ
スタが必要であるかを判断するソフト処理に時間を要し
ていた。As described above, when the system call process / interrupt process is executed, the contents are always saved in the privilege register bank before the process is executed, which causes an overhead. In particular, when saving the contents of a register bank, in general, not only the contents of all the registers are saved, but only the necessary registers are saved, so it takes time to perform software processing to determine which register is necessary. It was
【0010】また、システムコールの場合、発行したレ
ジスタバンクはタスク実行待ち状態となり、システムコ
ール処理が実行されるまでは解放(動作)されないた
め、システムコールの内容によっては1つのレジスタバ
ンクで処理できるにもかかわらず、複数のバンクを必要
とするので、ハードウェア資源が必要となる。また、1
つのレジスタバンクで処理しようとした場合、タスク実
行待ちに対するソフト処理や、システムの特権/ユーザ
ー状態の切り替えが必要であり、特権タスクとユーザー
タスクのマルチタスク実行をする場合、ハードウェアの
対応がとれていないので、ソフト処理が膨大なものにな
っていた。Further, in the case of a system call, the issued register bank is placed in a task execution wait state and is not released (operated) until the system call process is executed. Therefore, depending on the contents of the system call, it can be processed by one register bank. Nevertheless, since it requires multiple banks, it requires hardware resources. Also, 1
When processing with one register bank, it is necessary to perform software processing for task execution wait and to switch the system privilege / user state. When performing multitask execution of privileged tasks and user tasks, hardware support is not available. Not so, the software processing was enormous.
【0011】一方、メモリ保護機能の一番簡素な形態と
してユーザータスクを実行中であるユーザー状態とOS
を実行中である特権状態を持つシステムが従来より考え
られており、フラグによりユーザー状態か特権状態かを
切り替えが可能である。ところが、このフラグは従来シ
ステムではシステムに1つのみ設けてあり、ユーザータ
スクと特権タスクを並行して実行するためには、このフ
ラグを切り替える必要があり、ユーザータスクと特権タ
スクをマルチ処理することが困難であった。この問題を
解決するため、レジスタバンクを特権バンク用あるいは
ユーザーバンク用に振り分けてタスクを実行する手段も
考えられているが、特権タスクとユーザータスクの数は
固定ではなくシステムの応用性に乏しかった。On the other hand, the simplest form of the memory protection function is the state of the user who is executing the user task and the OS.
A system having a privileged state that is executing is conventionally considered, and it is possible to switch between a user state and a privileged state by a flag. However, in the conventional system, only one flag is provided in the system, and in order to execute the user task and the privileged task in parallel, it is necessary to switch this flag, and the multitasking of the user task and the privileged task is required. Was difficult. In order to solve this problem, it is considered to distribute the register bank to the privilege bank or the user bank and execute the task, but the number of privileged tasks and user tasks is not fixed and the system applicability is poor. ..
【0012】また、データメモリ空間の下限と上限を示
し、その領域外をアクセスした場合、アクセスを禁止
(主に書き込み)し、レジスタバンク間の保護機能を動
作させる領域設定用のメモリポインタの実装形態として
ユーザータスク用と特権タスク用に1組ずつ備えている
ものが考えられている。シングルタスクでプロシジャー
コールする場合、1組のポインタがあればメモリ保護機
能を動作させることができるが、独立した複数のタスク
を実行させる場合、データ領域はタスクに対応して変更
していく必要があり、コンテキストの際にポインタをそ
の都度変更するのは非常に困難であった。この問題を解
決するために各レジスタバンク毎に1組のポインタを備
える手段が考えられている。しかしながら、ユーザータ
スクと特権タスクが混在している場合ではユーザー状態
用と特権状態用で使用するデータ領域は異なるので、同
様にポインタを変更していく必要があり、ソフト処理が
複雑になっていた。Also, the lower limit and the upper limit of the data memory space are shown, and when the outside of the area is accessed, the access is prohibited (mainly writing) and the memory pointer for setting the area for operating the protection function between the register banks is mounted. As a form, one having one set for a user task and one set for a privileged task is considered. When performing a procedure call with a single task, the memory protection function can be operated if there is one set of pointers, but when executing multiple independent tasks, the data area must be changed according to the task. Yes, it was very difficult to change the pointer each time in context. In order to solve this problem, means for providing one set of pointers for each register bank has been considered. However, when user tasks and privileged tasks coexist, the data areas used for the user state and privileged state are different, so it is necessary to change the pointers in the same way, which complicates software processing. ..
【0013】[0013]
【発明が解決しようとする課題】このような従来のマル
チタスク実行装置の構成では、割込み・例外処理あるい
はシステムコール処理の際、常にレジスタバンクやプロ
グラム情報のスタックエリアへの待避処理が存在してい
たため、(待避時間)≧(待避すべきレジスタ群)÷
(バス幅)×(マシンサイクル時間)が必要となり、コ
ンテキストスイッチに時間を要していた。またユーザー
タスクと特権タスクが混在した場合、メモリ保護機能を
動作させる場合、コンテキストスイッチの際常に領域設
定用ポインタの変更が必要であった。In the structure of such a conventional multi-task execution device, there is always a save process to the register bank or program information stack area at the time of interrupt / exception process or system call process. Therefore, (saving time) ≥ (registers that should be saved) ÷
(Bus width) x (machine cycle time) is required, and it takes time to context switch. Also, when user protection and privileged tasks coexist, when the memory protection function is operated, it is necessary to change the pointer for area setting at the time of context switching.
【0014】本発明は上記問題を解決するもので、シス
テムコール・割込み・例外発生の場合、空きレジスタバ
ンクを有効に使用することによって、レジスタ待避によ
るオーバーヘッドを押え、コンテキストスイッチを高速
に実行できるマルチタスク実行装置を提供することを目
的とするものである。The present invention solves the above problem. In the case of a system call / interrupt / exception occurrence, by effectively using an empty register bank, the overhead due to register saving can be suppressed and a context switch can be executed at high speed. It is intended to provide a task execution device.
【0015】[0015]
【課題を解決するための手段】上記課題を解決するため
に、本発明マルチタスク実行装置は、(1)実行中のレ
ジスタバンクがユーザ状態であるか、あるいは特権状態
であるかを示すフラグ(以下特権フラグ)を各レジスタ
バンクに備え、(2)システムコール・割込み・例外を
発行した場合、空きレジスタバンクが存在するときはそ
の空きレジスタバンクの特権フラグを特権状態にセット
し、かつ、その空きレジスタバンクでシステムコール・
割込み・例外を受理し、(3)システムコール発行の
際、空きレジスタバンクが存在しないときはシステムコ
ールを発行したレジスタバンクの特権フラグを特権状態
にセットし、かつ、システムコールを発行したレジスタ
バンクでシステムコールを受理し、(4)割込み・例外
発生の際空きレジスタバンクが存在しないときは特定の
レジスタバンクの特権フラグを特権状態にセットし、か
つ、その特定のレジスタバンクで割込み・例外を受理
し、さらに、(5)特権フラグの切り替えと同時に各レ
ジスタバンクがユーザー状態/特権状態で使用できるデ
ータRAM空間を変更できるようにし、以上の機能をハ
ードウェアで実現したものである。In order to solve the above-mentioned problems, the multitasking execution device of the present invention comprises: (1) a flag () indicating whether the register bank being executed is in the user state or in the privileged state. Each register bank is provided with the following (privilege flag), and (2) when a system call / interrupt / exception is issued, if there is an empty register bank, the privilege flag of the empty register bank is set to the privileged state, and System call with empty register bank
When an interrupt / exception is accepted and (3) a system call is issued, and there is no empty register bank, the privilege flag of the register bank that issued the system call is set to the privileged state, and the register bank that issued the system call Accepts a system call, and (4) sets the privilege flag of a specific register bank to the privileged state when an empty register bank does not exist when an interrupt or exception occurs, and interrupts / exceptions occur in that specific register bank. Further, (5) at the same time as switching the privilege flag, each register bank can change the data RAM space that can be used in the user state / privileged state, and the above functions are realized by hardware.
【0016】[0016]
【作用】この構成により、マルチタスク処理実行におい
て、システムコール・割込み・例外処理時に発生するオ
ーバーヘッドを最小限に押さえることができ、また、メ
モリ保護機能を動作させることができる。With this configuration, it is possible to minimize the overhead generated during system call / interrupt / exception processing in the execution of multitask processing, and to operate the memory protection function.
【0017】[0017]
【実施例】以下本発明の一実施例について図面を参照し
ながら説明する。図1は本発明の一実施例のマルチタス
ク実行装置の構成を示したブロック図である。図1にお
いて、レジスタファイル1はレジスタバンク0〜7の8
枚から構成され、各レジスタバンクに対応するデータR
AM16上のスタック空間のポインタを示すスタックポイ
ンタ2が用意されている。また、各レジスタバンクに対
応して現在実行中のタスク(プログラム)が特権タスク
であるかユーザータスクであるかを示す特権フラグ3が
用意されている。レジスタファイル1、スタックポイン
タ2、特権フラグ3はバス4に接続されプログラムによ
りアクセス可能である。DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS An embodiment of the present invention will be described below with reference to the drawings. FIG. 1 is a block diagram showing the configuration of a multitask execution device according to an embodiment of the present invention. In FIG. 1, the register file 1 is 8 of register banks 0-7.
Data R consisting of one sheet and corresponding to each register bank
A stack pointer 2 indicating the pointer of the stack space on the AM 16 is prepared. Further, a privilege flag 3 indicating whether the currently executing task (program) is a privileged task or a user task is provided corresponding to each register bank. The register file 1, stack pointer 2, and privilege flag 3 are connected to the bus 4 and can be accessed by a program.
【0018】ROM5の情報がマイクロROM6(以下
μROM)で解読実行されシステムコール命令であった
場合、他方を割込み・例外入力7とするOR回路8に入
力される。OR回路8は割込み・例外発生があった場
合、あるいはシステムコールがあった場合にアクティブ
となり、出力信号はビットサーチ回路9と特権フラグ3
に入力される。OR回路8の出力信号が特権フラグ3に
入力されると、現在実行中のタスクを示す実行中バンク
レジスタ11に対応する特権フラグ3が“1”にセットさ
れ、特権状態となる。When the information in the ROM 5 is a system call instruction decoded and executed by the micro ROM 6 (hereinafter referred to as μROM), it is input to the OR circuit 8 having the other as the interrupt / exception input 7. The OR circuit 8 becomes active when an interrupt / exception occurs or when there is a system call, and the output signal is a bit search circuit 9 and a privilege flag 3.
Entered in. When the output signal of the OR circuit 8 is input to the privilege flag 3, the privilege flag 3 corresponding to the executing bank register 11 indicating the currently executing task is set to "1", and the privileged state is set.
【0019】スケジュールバンクレジスタ10はレジスタ
ファイル1のどのレジスタバンクを使ってタスクを実行
するかを決定するレジスタであり、特権プログラムによ
り前もってどのレジスタバンクを使用してタスク群(図
示せず)を処理するかを登録しておく。スケジュールバ
ンクレジスタ10の各ビットはレジスタファイル1の各レ
ジスタバンクに対応しており、実行するレジスタバンク
に対応するビットに“1”がセットされている。ビット
サーチ回路9によりスケジュールバンクレジスタ10に
“0”にクリアされたビットが検索される。検索された
レジスタバンク番号は実行中バンクレジスタ11に書き込
まれる。The schedule bank register 10 is a register that determines which register bank of the register file 1 is used to execute a task, and which privilege bank is used in advance to process a task group (not shown) by a privileged program. Register what you want to do. Each bit of the schedule bank register 10 corresponds to each register bank of the register file 1, and "1" is set to the bit corresponding to the register bank to be executed. The bit search circuit 9 searches the schedule bank register 10 for the bit cleared to "0". The retrieved register bank number is written into the executing bank register 11.
【0020】また、OSによりタスクスケジューリング
する場合、実行中バンクレジスタ11の内容を変更するこ
とにより、使用するレジスタバンクの選択ができる。ビ
ットサーチ回路9による検索動作は実行中バンクレジス
タ11で示される現在実行中のレジスタバンクから検索が
開始され(図示せず)、ビットサーチ回路9で検索され
た結果と実行中バンクレジスタ11の内容が一致した場
合、排他的NOR12により検出される。排他的NOR12
がアクティブになる場合は、空きレジスタバンクが存在
しないときである。When task scheduling is performed by the OS, the register bank to be used can be selected by changing the contents of the executing bank register 11. In the search operation by the bit search circuit 9, the search is started from the register bank currently being executed which is indicated by the executing bank register 11 (not shown), and the result of the search by the bit searching circuit 9 and the contents of the executing bank register 11 are executed. Are matched by exclusive NOR12. Exclusive NOR12
Is activated when there is no free register bank.
【0021】遅延回路13によりビットサーチ回路9の検
出動作後にタイミング調整された信号はμROM6とA
ND回路15に入力される。μROM6は遅延回路13の出
力を受け、すなわち、システムコール・割込み・例外が
発生した場合、空きレジスタバンクが存在しないとき
は、μROM6によりプログラム情報のスタック空間へ
の待避処理が実行される。待避処理が実行されるレジス
タバンクは実行中バンクレジスタ11で示される。The signal whose timing is adjusted by the delay circuit 13 after the detection operation of the bit search circuit 9 is sent to the μROM 6 and A
It is input to the ND circuit 15. The μROM 6 receives the output of the delay circuit 13, that is, when a system call / interrupt / exception occurs, and when there is no empty register bank, the μROM 6 saves program information to the stack space. The register bank in which the save processing is executed is indicated by the executing bank register 11.
【0022】一方、割込み・例外入力7は遅延回路14に
入力され、遅延回路13の出力タイミングと同期がとら
れ、AND回路15に入力される。AND回路15では割込
み発生時に空きレジスタバンクが存在しなかったときに
アクティブになり、実行中バンクレジスタ11の内容のリ
セットとして使われる。On the other hand, the interrupt / exception input 7 is input to the delay circuit 14, synchronized with the output timing of the delay circuit 13, and input to the AND circuit 15. The AND circuit 15 is activated when there is no empty register bank when an interrupt occurs, and is used to reset the contents of the bank register 11 during execution.
【0023】以上の構成によりシステムコール・割込み
・例外処理が発生し、かつ空きレジスタバンクが存在す
る場合、ビットサーチ回路9で検出したレジスタバンク
で待避処理なしに処理プログラムが実行され、空きレジ
スタバンクが存在しない場合、システムコールのときは
システムコールを発行したレジスタバンクで、割込み・
例外処理が発生した場合は特定のレジスタバンクで処理
プログラムが実行される。When a system call / interrupt / exception process is generated by the above configuration and an empty register bank exists, the processing program is executed in the register bank detected by the bit search circuit 9 without saving processing, and the empty register bank is executed. If is not present, in the case of a system call, the interrupt /
When exception processing occurs, the processing program is executed in a specific register bank.
【0024】このように、空きレジスタバンクが存在す
る場合、スタック空間への待避処理が存在せず、オーバ
ーヘッドを最小限に押さえることができる。また、空き
レジスタバンクが存在しない場合、システムコールのと
きは、システムコールをは発行したレジスタバンクでシ
ステムコールが受理されるため、他のタスクを停止して
処理する必要がなく、また、割込み・例外処理では特定
のレジスタバンクで処理が実行されるので、リセット始
動時に実行するレジスタバンクをこの特定レジスタバン
クにしておくことで、再スタート処理が必要な場合タス
ク管理が容易になる。また特権フラグを各レジスタファ
イルに設けることで複数の特権タスクあるいはユーザー
タスクあるいは両方のタスクが混在しても実行可能であ
り、システム設計に柔軟性が生まれる。In this way, when there is an empty register bank, there is no save processing to the stack space, and the overhead can be minimized. If there is no empty register bank, the system call is accepted by the register bank that issued the system call, so there is no need to stop and process other tasks. In the exception processing, the processing is executed in a specific register bank. Therefore, by setting the register bank to be executed at the time of reset start as this specific register bank, task management becomes easy when restart processing is required. Further, by providing a privilege flag in each register file, it is possible to execute even a plurality of privileged tasks or user tasks or a mixture of both tasks, thereby providing flexibility in system design.
【0025】図2は本発明の一実施例のマチルタスク実
行装置のレジスタバンク割り当てを示した図である。ユ
ーザータスクとしてレジスタバンク0,1,2,3を使
用している場合である。ユーザータスクとしてレジスタ
バンク0〜3を使用している場合、空きレジスタバンク
としてレジスタバンク4,5,6,7がある。レジスタ
バンク1(図中ではバンク1)においてシステムコール
を発行した場合、レジスタバンク0,1,2,3をタス
ク割り当てしているのでレジスタバンク4をシステムコ
ール処理バンクとして選択する。このときレジスタバン
ク4は過去にタスクが実行されていなかったので待避す
るべきプログラム情報はなく、スタック空間への待避動
作なしでシステムコール処理を実行する。FIG. 2 is a diagram showing register bank allocation of the matil task execution device according to one embodiment of the present invention. This is a case where the register banks 0, 1, 2, 3 are used as user tasks. When register banks 0 to 3 are used as user tasks, there are register banks 4, 5, 6, and 7 as empty register banks. When a system call is issued in register bank 1 (bank 1 in the figure), register banks 0, 1, 2, and 3 are assigned tasks, so register bank 4 is selected as the system call processing bank. At this time, since no task has been executed in the past in the register bank 4, there is no program information to be saved and the system call process is executed without saving operation to the stack space.
【0026】レジスタバンク2でのシステムコール発行
も同様にレジスタバンク4がその処理バンクとして選択
され、スタック空間への待避動作なしでシステムコール
処理を実行する。レジスタバンク3においてタスク実行
中に割込みが発生した場合も空きバンクであるレジスタ
バンク4に割込み処理が割り当てられ、待避処理なしで
レジスタバンク4で割込み処理が実行される。Similarly, when issuing a system call in the register bank 2, the register bank 4 is selected as the processing bank, and the system call process is executed without saving the stack space. Even if an interrupt occurs during execution of a task in the register bank 3, the interrupt process is assigned to the empty register bank 4, and the interrupt process is executed in the register bank 4 without the save process.
【0027】本実施例ではレジスタバンク4において、
システムコール処理あるいは割込み・例外処理実行でそ
の処理タスクが完結実行された場合を示しており、レジ
スタバンク4に処理タスクが継続実行される場合には、
多重で発生したシステムコール・割込み・例外処理は空
きバンクであるレジスタバンク5で実行される。システ
ムコールあるいは割込み・例外処理が発生した場合に特
権フラグが特権モードにセットされ、特権プログラムが
実行される環境にハードウェアにより設定される。In this embodiment, in the register bank 4,
The figure shows the case where the processing task is completed by the system call processing or the interrupt / exception processing execution. When the processing task is continuously executed in the register bank 4,
The system call / interrupt / exception processing which occurs in multiples is executed in the register bank 5 which is an empty bank. When a system call or interrupt / exception process occurs, the privilege flag is set to the privilege mode, and the environment in which the privilege program is executed is set by the hardware.
【0028】図3は本発明の他の実施例のマルチタスク
実行装置のレジスタバンク割り当てを示した図である。
ユーザータスクとしてレジスタバンク0〜7を使用して
いる場合、空きレジスタバンクは存在しない。レジスタ
バンク1(図中ではバンク1)においてシステムコール
を発行した場合、空きレジスタバンクは存在しないので
システムコールを発行したレジスタバンク1をシステム
コール処理バンクとして選択する。このときレジスタバ
ンク1のプログラム情報を、スタック空間への待避した
後、システムコール処理を実行する。レジスタバンク2
でのシステムコール発行も同様にレジスタバンク2がそ
の処理バンクとして選択され、スタック空間への待避後
システムコール処理を実行する。FIG. 3 is a diagram showing register bank allocation of a multitask execution device according to another embodiment of the present invention.
When register banks 0 to 7 are used as user tasks, there are no empty register banks. When a system call is issued in the register bank 1 (bank 1 in the figure), since there is no empty register bank, the register bank 1 that issued the system call is selected as the system call processing bank. At this time, the program information of the register bank 1 is saved in the stack space, and then the system call process is executed. Register bank 2
Similarly, in issuing the system call, the register bank 2 is selected as the processing bank, and the system call processing is executed after saving to the stack space.
【0029】このように、待避動作が存在するが、シス
テムコール発行と無関係なレジスタバンクのタスクを中
断しプログラム情報を待避するという動作はなくなり、
ソフトウェアによるスケジューリングも簡素化する。As described above, although the saving operation exists, the operation of saving the program information by interrupting the task of the register bank unrelated to the issuance of the system call is eliminated.
Software scheduling is also simplified.
【0030】レジスタバンク3においてタスク実行中に
割込みが発生した場合は空きバンクが存在しないのでレ
ジスタバンク0に割込み処理が割り当てられ、待避処理
後レジスタバンク0で割込み処理が実行される。If an interrupt occurs during execution of a task in the register bank 3, since there is no empty bank, the interrupt process is assigned to the register bank 0, and after the saving process, the interrupt process is executed in the register bank 0.
【0031】本実施例では割込み動作が存在し、プログ
ラム情報待避によるオーバーヘッドが存在するがどのタ
スクを中断して新たにシステムコール・割込み・例外処
理タスクを実行するかというタスク優先度判断などのソ
フトウェア処理が不要となるので、処理が簡素化されリ
アルタイム処理が可能となる。In the present embodiment, there is an interrupt operation, and there is an overhead due to saving of program information, but software for task priority judgment such as which task is interrupted to newly execute a system call / interrupt / exception processing task. Since processing is unnecessary, processing is simplified and real-time processing is possible.
【0032】図4は本発明の一実施例のマルチタスク実
行装置のメモリ保護機能を示したブロック図である。レ
ジスタバンク0(図示せず)に対応するレジスタバンク
0用メモリ領域上限レジスタ(以下バンク0領域上限レ
ジスタという)18、レジスタバンク0用メモリ領域下限
レジスタ(以下バンク0領域下限レジスタという)19は
ユーザータスクがレジスタバンク0を用いてプログラム
実行する場合に使用するデータRAM17の上限アドレス
と下限アドレスをそれぞれ示すアドレスポインタレジス
タであり、レジスタバンク0をユーザー状態で使用して
いるときにプログラムが上限アドレスと下限アドレスの
範囲を越えて書き込みメモリアクセスした場合にエラー
となる。バンク0領域上限レジスタ18、バンク0領域下
限レジスタ19はプログラムにより任意の値に設定可能で
ある。FIG. 4 is a block diagram showing the memory protection function of the multitask execution device of one embodiment of the present invention. Register bank 0 memory area upper limit register (hereinafter referred to as bank 0 area upper limit register) 18, register bank 0 memory area lower limit register (hereinafter referred to as bank 0 area lower limit register) 19 corresponding to register bank 0 (not shown) is user It is an address pointer register that indicates the upper limit address and the lower limit address of the data RAM 17 used when the task executes the program using the register bank 0. When the register bank 0 is used in the user state, the program indicates the upper limit address. An error will occur if the write memory is accessed beyond the lower limit address range. The bank 0 area upper limit register 18 and the bank 0 area lower limit register 19 can be set to arbitrary values by a program.
【0033】現在プログラム実行中の状態として特権状
態かあるいはユーザー状態かを示す特権フラグ20が
“0”でユーザー状態のときに現在実行中のレジスタバ
ンク番号を示す実行中バンクレジスタ21が“000”で
レジスタバンク0を示す場合にAND回路22によりバン
ク0領域上限レジスタ18、バンク0領域下限レジスタ19
が選択されメモリ保護部23により書き込みメモリアクセ
スの際のチェック動作が実行される。A privilege flag 20 indicating whether the program is currently being executed is a privileged state or a user state is "0", and an executing bank register 21 indicating a register bank number currently being executed when the user state is "000". When the register bank 0 is indicated by, the AND circuit 22 causes the bank 0 area upper limit register 18 and the bank 0 area lower limit register 19
Is selected and the memory protection unit 23 executes the check operation at the time of write memory access.
【0034】メモリ保護部23にはシステム上のデータR
AM領域の上限アドレス24、システム上のデータRAM
領域の下限アドレス25、各レジスタバンクの領域設定レ
ジスタのマルチプレクサ値26(バンク0領域上限レジス
タ18、バンク0領域下限レジスタ19などの実行レジスタ
バンクの値、後述)、特権フラグ20の値27、書き込みメ
モリアクセス信号(図示せず)が入力され、領域判定が
実行される。特権フラグ20が“1”で特権状態のときは
実行しているレジスタバンクに関係なくメモリ保護部23
は動作せずデータRAM17全領域が書き込みメモリアク
セス可能となる。The memory protection unit 23 stores data R on the system.
Upper limit address 24 of AM area, data RAM on system
Area lower limit address 25, multiplexer value 26 of area setting register of each register bank (value of execution register bank such as bank 0 area upper limit register 18 and bank 0 area lower limit register 19, described later), privilege flag 20 value 27, write A memory access signal (not shown) is input and area determination is executed. When the privilege flag 20 is “1” and in the privileged state, the memory protection unit 23 is irrespective of the register bank being executed.
Does not operate, and the entire area of the data RAM 17 can be accessed for writing memory.
【0035】レジスタバンク1用のバンク1領域上限レ
ジスタ28とバンク1領域下限レジスタ29、レジスタバン
ク2用のバンク2領域上限レジスタ30とバンク2領域下
限レジスタ31、レジスタバンク3用のバンク3領域上限
レジスタ32とバンク3領域下限レジスタ33、レジスタバ
ンク4用のバンク4領域上限レジスタ34とバンク4領域
下限レジスタ35、レジスタバンク5用のバンク5領域上
限レジスタ36とバンク5領域下限レジスタ37、レジスタ
バンク6用のバンク6領域上限レジスタ38とバンク7領
域下限レジスタ39、レジスタバンク7用のバンク7領域
上限レジスタ40とバンク7領域下限レジスタ41が用意さ
れており、バンク0領域上限レジスタ18、バンク0領域
下限レジスタ19と動作仕様は同じである。特権フラグ20
に対応して使用可能な領域を特権用とユーザー用とにレ
ジスタバンク毎に切り替えることで各プログラムの使用
するデータRAMに対し保護をかけることができ、ユー
ザープログラムによるユーザーデータや特権データの破
壊を容易に回避することができる。Bank 1 area upper limit register 28 and bank 1 area lower limit register 29 for register bank 1, bank 2 area upper limit register 30 and bank 2 area lower limit register 31 for register bank 2, bank 3 area upper limit for register bank 3 Register 32 and bank 3 area lower limit register 33, register bank 4 bank 4 area upper limit register 34 and bank 4 area lower limit register 35, register bank 5 bank 5 area upper limit register 36 and bank 5 area lower limit register 37, register bank A bank 6 area upper limit register 38 and a bank 7 area lower limit register 39 for 6 and a bank 7 area upper limit register 40 and a bank 7 area lower limit register 41 for register bank 7 are prepared. The area lower limit register 19 and the operation specifications are the same. Privilege flag 20
The data RAM used by each program can be protected by switching the usable area for each of the register bank for privilege and for user, and the destruction of user data and privilege data by the user program can be prevented. It can be easily avoided.
【0036】[0036]
【発明の効果】以上のように、本発明によれば、マルチ
タスク処理実行において空きレジスタバンクでシステム
コール・割込み・例外処理プログラム実行することがで
き、オーバーヘッドを最小限に押さえることができる。
また、空きレジスタバンクがない場合でも現在実行中の
プログラム実行のスループットを低下させずにプログラ
ラムを実行することができる。さらに、各プログラムが
実行するデータRAM領域を保護することができ、特に
フラグの切り替えにより特権タスクのメモリ領域とユー
ザータスク領域の変更ができることから高品質かつリア
ルタイム性に優れたシステムを実現することができる。As described above, according to the present invention, it is possible to execute a system call / interrupt / exception processing program in an empty register bank during execution of multitask processing, and it is possible to minimize overhead.
Further, even if there is no empty register bank, the program can be executed without lowering the throughput of the program currently being executed. Further, the data RAM area executed by each program can be protected, and particularly, the memory area of the privileged task and the user task area can be changed by switching the flag, so that a system of high quality and excellent in real time can be realized. it can.
【図1】本発明の一実施例のマルチタスク実行装置の構
成を示したブロック図である。FIG. 1 is a block diagram showing a configuration of a multitask execution device according to an exemplary embodiment of the present invention.
【図2】本発明の一実施例のマルチタスク実行装置にお
いて空きレジスタバンクが存在するときのレジスタバン
ク割り当てを示した図である。FIG. 2 is a diagram showing register bank allocation when an empty register bank exists in the multitask execution device of one embodiment of the present invention.
【図3】本発明の一実施例のマルチタスク実行装置にお
いて空きレジスタバンクが存在しないときのレジスタバ
ンク割り当てを示した図である。FIG. 3 is a diagram showing register bank allocation when there is no empty register bank in the multitask execution device of one embodiment of the present invention.
【図4】本発明の一実施例のマルチタスク実行装置にお
けるメモリ保護機能を示したブロック図である。FIG. 4 is a block diagram showing a memory protection function in a multitask execution device according to an embodiment of the present invention.
【図5】従来のシステムコール・割込み発生の場合のレ
ジスタバンク割り当て実施例を示した図である。FIG. 5 is a diagram showing an example of register bank allocation in the case of conventional system call / interrupt generation.
1 レジスタファイル 2 スタックポインタ 3,20 特権フラグ 5 ROM 6 マイクロROM 7 割込み・例外入力 9 ビットサーチ回路 10 スケジュールバンクレジスタ 11,21 実行中バンクレジスタ 13,14 遅延回路 16,17 データRAM 18 レジスタバンク0用メモリ領域上限レジスタ 19 レジスタバンク0用メモリ領域下限レジスタ 23 メモリ保護部 24 システム上のデータRAM領域の上限アドレ
ス 25 システム上のデータRAM領域の下限アドレ
ス 26 レジスタバンクの領域設定レジスタのマルチ
プレクサ値 27 特権フラグ20の値 28,30,32,34,36,38,40 各レジスタバンクの用メ
モリ領域上限レジスタ 29,31,33,35,37,39,41 各レジスタバンクの用メ
モリ領域下限レジスタ1 register file 2 stack pointer 3,20 privilege flag 5 ROM 6 micro ROM 7 interrupt / exception input 9 bit search circuit 10 schedule bank register 11,21 executing bank register 13,14 delay circuit 16,17 data RAM 18 register bank 0 Memory area upper limit register 19 Register bank 0 memory area lower limit register 23 Memory protector 24 System data RAM area upper limit address 25 System data RAM area lower limit address 26 Register bank area setting register multiplexer value 27 Privilege Value of flag 28 28,30,32,34,36,38,40 Memory area upper limit register for each register bank 29,31,33,35,37,39,41 Memory area lower limit register for each register bank
Claims (3)
つ、ユーザー状態と特権状態の2レベルのメモリ保護機
能を持ち、CPUは前記複数のレジスタバンクの1つを
選択しプログラムを実行し、実行中の前記レジスタバン
クがユーザー状態であるか、あるいは特権状態であるか
を示すフラグを前記レジスタバンクのそれぞれに対応し
て持ち、 システムコール発行時に、 (1)空きレジスタバンクが存在するときは前記空きレ
ジスタバンクの前記フラグを特権状態にセットし、か
つ、スタックエリアへの待避処理を実行せずに前記空き
レジスタバンクでシステムコールを受理し、 (2)空きレジスタバンクが存在しないときはシステム
コールを発行した前記レジスタバンクの前記フラグを特
権状態にセットし、かつ、スタックエリアへの待避処理
を実行した後、前記システムコールを発行したレジスタ
バンクでシステムコールを受理する第1の手段と、 割込み・例外発生時に、 (3)空きレジスタバンクが存在するときは前記空きレ
ジスタバンクの前記フラグを特権状態にセットし、か
つ、スタックエリアへの待避処理を実行せずに前記空き
レジスタバンクで割込み・例外処理を受理し、 (4)空きレジスタバンクが存在しないときは特定の前
記レジスタバンクの前記フラグを特権状態にセットし、
かつ、スタックエリアへの待避処理を実行した後、前記
特定のレジスタバンクで割込み・例外処理を受理する第
2の手段と、 を備えたことを特徴とするマルチタスク実行装置。1. A memory bank comprising a plurality of register banks and having a two-level memory protection function of a user state and a privileged state, a CPU selects one of the plurality of register banks to execute a program, and the program is being executed. Has a flag indicating whether the register bank is in the user state or the privileged state in correspondence with each of the register banks, and at the time of issuing a system call, (1) If there is a free register bank, the empty The flag of the register bank is set to the privileged state, and the system call is accepted by the empty register bank without executing the save processing to the stack area. (2) When the empty register bank does not exist, the system call is issued. Set the issued flag of the register bank to the privileged state and save to the stack area First means for accepting a system call in the register bank that issued the system call after executing the process, and (3) when an empty register bank exists, the flag of the empty register bank Is set to a privileged state, and interrupt / exception processing is accepted in the empty register bank without executing save processing to the stack area. (4) When there is no empty register bank, the specified register bank Set the flag to privileged state,
And a second means for accepting interrupt / exception processing in the specific register bank after executing the saving processing to the stack area.
つ、ユーザー状態と特権状態の2レベルのメモリ保護機
能を持ち、CPUは前記複数のレジスタバンクの1つを
選択しプログラムを実行し、実行中の前記レジスタバン
クがユーザー状態であるか、あるいは特権状態であるか
を示すフラグを前記レジスタバンクのそれぞれに対応し
て持ち、 システムコール発行時に、 (1)空きレジスタバンクが存在するときは前記空きレ
ジスタバンクの前記フラグを特権状態にセットし、か
つ、スタックエリアへの待避処理を実行せずに前記空き
レジスタバンクでシステムコールを受理し、 (2)空きレジスタバンクが存在しないときはシステム
コールを発行した前記レジスタバンクの前記フラグを特
権状態にセットし、かつ、スタックエリアへの待避処理
を実行した後、前記システムコールを発行したレジスタ
バンクでシステムコールを受理する第1の手段と、 割込み・例外発生時に、 (3)空きレジスタバンクが存在するときは前記空きレ
ジスタバンクの前記フラグを特権状態にセットし、か
つ、スタックエリアへの待避処理を実行せずに前記空き
レジスタバンクで割込み・例外処理を受理し、 (4)空きレジスタバンクが存在しないときは特定の前
記レジスタバンクの前記フラグを特権状態にセットし、
かつ、スタックエリアへの待避処理を実行した後、前記
特定のレジスタバンクで割込み・例外処理を受理する第
2の手段と、 前記レジスタバンクのそれぞれにスタックポインタと、 スタックエリアに待避処理をする場合、割込み・例外処
理、システムコールあるいはプロシジャーコールを実行
するレジスタバンクに対応するスタックポインタを使用
して前記待避処理を実行する第3の手段と、 を備えたことを特徴とするマルチタスク実行装置。2. A memory bank composed of a plurality of register banks and having a two-level memory protection function of a user state and a privileged state, the CPU selects one of the plurality of register banks and executes a program, and the program is being executed. Has a flag indicating whether the register bank is in the user state or the privileged state in correspondence with each of the register banks, and at the time of issuing a system call, (1) If there is a free register bank, the empty The flag of the register bank is set to the privileged state, and the system call is accepted by the empty register bank without executing the save processing to the stack area. (2) When the empty register bank does not exist, the system call is issued. Set the issued flag of the register bank to the privileged state and save to the stack area First means for accepting a system call in the register bank that issued the system call after executing the process, and (3) when an empty register bank exists, the flag of the empty register bank Is set to a privileged state, and interrupt / exception processing is accepted in the empty register bank without executing save processing to the stack area. (4) When there is no empty register bank, the specified register bank Set the flag to privileged state,
In addition, after executing the save processing to the stack area, second means for accepting the interrupt / exception processing in the specific register bank, the stack pointer in each of the register banks, and the save processing in the stack area And a third means for executing the save processing by using a stack pointer corresponding to a register bank for executing interrupt / exception processing, a system call or a procedure call, and a multitask execution device.
つ、ユーザー状態と特権状態の2レベルのメモリ保護機
能を持ち、CPUは前記複数のレジスタバンクの1つを
選択しプログラムを実行し、実行中の前記レジスタバン
クがユーザー状態であるか、あるいは特権状態であるか
を示すフラグを前記レジスタバンクのそれぞれに対応し
て持ち、それぞれのレジスタバンクを実行中に使用する
データRAM空間の範囲を示す領域設定のポインタとし
て前記データRAM空間の下限と上限を示す2本のポイ
ンタを各レジスタバンク毎に備え、ユーザー状態の場
合、実行中のレジスタバンクに対応する前記2本のポイ
ンタを用いてメモリ保護を実行する第1の手段と、特権
状態のときは実行しているレジスタバンクに関係なく前
記データRAM空間全領域の範囲を使用可能な第2の手
段を備え、前記レジスタファイル毎に設定した前記フラ
グにより使用する前記データRAM空間を変更可能にし
たことを特徴とする請求項1に記載のマルチタスク実行
装置。3. A memory bank composed of a plurality of register banks and having a two-level memory protection function of a user state and a privileged state, and a CPU selects one of the plurality of register banks to execute a program and is executing the program. An area indicating the range of the data RAM space used during execution of each register bank, having a flag indicating whether the register bank is in the user state or the privileged state in correspondence with each of the register banks. Two pointers indicating the lower limit and the upper limit of the data RAM space are provided for each register bank as setting pointers, and in the user state, memory protection is performed using the two pointers corresponding to the register bank being executed. The first means for executing, and in the privileged state, the entire data RAM space regardless of the register bank being executed. 2. The multitask execution device according to claim 1, further comprising a second means capable of using a range of the area, wherein the data RAM space to be used can be changed by the flag set for each register file. ..
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3270587A JP2585905B2 (en) | 1991-10-18 | 1991-10-18 | Multitask execution device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3270587A JP2585905B2 (en) | 1991-10-18 | 1991-10-18 | Multitask execution device |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05108374A true JPH05108374A (en) | 1993-04-30 |
JP2585905B2 JP2585905B2 (en) | 1997-02-26 |
Family
ID=17488201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3270587A Expired - Fee Related JP2585905B2 (en) | 1991-10-18 | 1991-10-18 | Multitask execution device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2585905B2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006039874A (en) * | 2004-07-26 | 2006-02-09 | Fujitsu Ltd | Information processor |
JP2011216118A (en) * | 2000-11-27 | 2011-10-27 | Arm Ltd | Data processing apparatus and method for executing data processing instruction |
JP2015001947A (en) * | 2013-06-18 | 2015-01-05 | 株式会社東芝 | Information processing device and program |
-
1991
- 1991-10-18 JP JP3270587A patent/JP2585905B2/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011216118A (en) * | 2000-11-27 | 2011-10-27 | Arm Ltd | Data processing apparatus and method for executing data processing instruction |
JP2006039874A (en) * | 2004-07-26 | 2006-02-09 | Fujitsu Ltd | Information processor |
JP2015001947A (en) * | 2013-06-18 | 2015-01-05 | 株式会社東芝 | Information processing device and program |
Also Published As
Publication number | Publication date |
---|---|
JP2585905B2 (en) | 1997-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5390329A (en) | Responding to service requests using minimal system-side context in a multiprocessor environment | |
JP3776449B2 (en) | Multitasking low power controller | |
US4843541A (en) | Logical resource partitioning of a data processing system | |
US6314471B1 (en) | Techniques for an interrupt free operating system | |
US5161226A (en) | Microprocessor inverse processor state usage | |
US5095427A (en) | Dispatch control of virtual machine | |
US5148544A (en) | Apparatus and method for control of asynchronous program interrupt events in a data processing system | |
JP3970609B2 (en) | Processor system | |
JP2585905B2 (en) | Multitask execution device | |
JPH0916409A (en) | Microcomputer | |
EP0297892B1 (en) | Apparatus and method for control of asynchronous program interrupt events in a data processing system | |
JPS6097440A (en) | Virtual multiprocessor device | |
JP2001229038A (en) | Multi-operating computer system | |
WO1992003783A1 (en) | Method of implementing kernel functions | |
JPS62221041A (en) | Dispatch controller in virtual computer system | |
RU1777147C (en) | Multiprogramming computer | |
JP2876629B2 (en) | Data processing device | |
JPH0683640A (en) | Interruption response processing system | |
JPH10240702A (en) | Parallel processing processor and method therefor | |
JPH07141210A (en) | Virtual computer processor | |
JPH0535507A (en) | Central processing unit | |
JPH0764802A (en) | Simulation device for real-time system | |
JPH06242975A (en) | Virtual computer dispatch system of multiple information processing system | |
JPH1196022A (en) | Real-time processing computer | |
JP2001134449A (en) | Data processor and its control method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |