JP3991443B2 - タスク切り替え方法及びデータ処理装置 - Google Patents
タスク切り替え方法及びデータ処理装置 Download PDFInfo
- Publication number
- JP3991443B2 JP3991443B2 JP11750598A JP11750598A JP3991443B2 JP 3991443 B2 JP3991443 B2 JP 3991443B2 JP 11750598 A JP11750598 A JP 11750598A JP 11750598 A JP11750598 A JP 11750598A JP 3991443 B2 JP3991443 B2 JP 3991443B2
- Authority
- JP
- Japan
- Prior art keywords
- resource
- task
- resource group
- value
- group
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5014—Reservation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/507—Low-level
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Executing Machine-Instructions (AREA)
Description
【発明の属する技術分野】
本発明は、それぞれのタスクの独立性を保証して複数のタスクを並行して実行するマルチタスクシステムにおけるタスク切り替え方法に関する。また、本発明は、それぞれのタスクの独立性を保証して複数のタスクを並行して実行するデータ処理装置に関する。
【0002】
【従来の技術】
従来、マルチタスク機能を有したオペレーティングシステムでは、タスク切り替えを行うために、図20に示すように、タスク毎に、タスクを制御するのに必要なタスク情報を保存するタスク情報保存領域と、タスクの実行に使用される資源の状態を示す資源値を保存する資源値保存領域とを、メモリ上に一連の領域として確保するようにしている。なお、資源値とは、具体的には、中央処理装置のレジスタ値や、浮動小数点演算装置のレジスタ値などである。
【0003】
そして、例えば、タスクAが実行されているときに、当該タスクAの実行を停止してタスクBの実行を開始するようにタスク切り替えを行う場合には、先ず、それまでにタスクAが資源を使用した結果が反映された資源値を、タスクAについてのタスク情報と共にメモリに保存する。すなわち、タスクAを停止するときには、そのときの資源の状態を示す値を資源値としてメモリに保存する。
【0004】
次いで、これから実行するタスクBについて、当該タスクBがこれまでに実行されたことにより設定されている資源値を、タスクBについてのタスク情報と共にメモリから読み込み、その後、当該タスクBの実行を開始する。このとき、メモリから読み込まれる資源値には、タスクBが以前に停止したときの資源の状態を示す値が設定されている。そして、タスクBの実行を開始するときには、この資源値に基づいて、中央処理装置のレジスタ値や浮動小数点演算装置のレジスタ値などを、タスクBが停止したときの状態に戻す。これにより、中央処理装置のレジスタ値や浮動小数点演算装置のレジスタ値などが、タスクBが停止したときの状態に戻され、その後、タスクBの実行が再開される。
【0005】
なお、中央処理装置には、このようなタスク切り替えの動作を高速化するために、図21(a)に示すように、タスク毎の資源値の保存領域として、レジスタファイルと呼ばれる資源値保存用ハードウェアを用意したものがある。また、図21(b)に示すように、タスク毎の資源値の保存領域として、レジスタスタックと呼ばれる資源値保存用ハードウェアを用意したものもある。これらの中央処理装置では、タスク切り替え時におけるメモリに対する資源値の読み書きを低減することができるので、タスク切り替え動作を高速化することができる。
【0006】
【発明が解決しようとする課題】
従来は、タスク切り替えを行うために、図20に示したように、タスク情報及び資源値を保存するための領域を、メモリ上にタスク毎に確保するようにしている。しかし、このようにしてタスク切り替えを行った場合には、タスク切り替え時に、タスクが使用可能な資源全てについて、それらの資源値の読み書きをメモリに対して行うこととなるため、以下のような問題がある。
【0007】
(1)資源が多数ある場合(例えば、中央処理装置が多数のレジスタを有するような場合)には、タスク切り替えを行う毎に、メモリに対する大量の読み書きが発生するため、タスク切り替えに時間がかかる。
【0008】
(2)資源を新たに追加したような場合、追加された資源を使用しないタスクについても、追加された資源の資源値をメモリに保存することとなるため、タスク切り替えに時間がかかるようになる。例えば、ハードウェアを機能拡張して浮動小数点演算装置を追加したような場合、浮動小数点演算装置の機能を使用しないタスクも、浮動小数点演算装置のレジスタ値を資源値としてメモリに保存するようになり、その結果、タスク切り替えに時間がかかるようになってしまう。
【0009】
(3)使用可能な資源が増加した場合、全てのタスクが全ての資源を使うとは限らず、通常は、一部の資源しか使用しないようなタスクも存在する。しかし、従来のタスク切り替えでは、一部の資源しか使用しないようなタスクについても、全ての資源についての資源値をメモリに保存するようにしていた。そのため、特に使用可能な資源が増加した場合に、タスク切り替えのためにメモリを大量に消費することとなってしまっていた。
【0010】
なお、図21に示したように資源値保存用ハードウェアを用意した場合には、上述の(1)の問題は解決することができるが、この場合にも以下のような問題がある。
【0011】
(4)用意できる資源値保存用ハードウェアには限りがあり、全てのタスク切り替えを資源値保存用ハードウェアだけで賄えるとは限らない。そして、資源が増加したり、切り替わるタスクの数が増えたりして、資源値保存用ハードウェアだけで賄いきれなくなった場合には、結局、図20に示したように、メモリに対する読み書きを行うこととなる。したがって、資源値保存用ハードウェアを用意してタスク切り替えの高速化を図ったとしても、資源が増加したり、切り替わるタスクの数が増えた場合には、その効果が大幅に低下してしまう。
【0012】
(5)取り扱う資源の量に対して、大規模な資源値保存用ハードウェアが必要となる。そのため、中央処理装置等を半導体装置として集積化するにあたって、資源値保存用ハードウェアによってかなりの半導体面積が消費されてしまう。
【0013】
(6)取り扱う資源の量が多くなった場合には、それに応じて資源値保存用ハードウェアを大規模化するか、或いは資源値保存用ハードウェアで保持できるタスク数を減らす必要がある。
【0014】
また、図20に示したようなタスク切り替えの機構を、リアルタイム処理が必要な機器に応用することを考えると、特に使用可能な資源が増加した場合に、以下のような問題が生じる。
【0015】
(7)タスク切り替えを行う毎に、使用可能な資源全ての資源値について、メモリへの保存及びメモリからの読み出しを行うため、特に使用可能な資源が増加した場合に、タスク切り替えに時間がかかるようになる。そのため、割り込み処理等のように高速な起動が必要とされる処理を、タスク切り替えの機構で行うことが不可能となってしまう。これは、特にリアルタイム処理が必要な機器において、大きな問題である。
【0016】
また、図20に示したようにタスク切り替えを行った場合には、タスク切り替え時に大量のメモリアクセスが発生するが、このときにキャッシュメモリやレジスタファイル等を使用できるかできないかで、実際にメモリにアクセスする量が大きく変動するため、以下のような問題もあった。
【0017】
(8)切り替え先のタスクの起動に要する時間の変動が大きく、割り込み処理等を行うときに、処理のタイミングの特定が困難である。
【0018】
以上のように、従来はタスク切り替えについて様々な問題があった。そして、本発明は、以上のような従来の実情に鑑みて提案されたものであり、上述したような従来の問題を解消することが可能なタスク切り替え方法及びデータ処理装置を提供することを目的としている。
【0019】
【課題を解決するための手段】
本発明に係るタスク切り替え方法は、タスク毎に確保した資源値保存領域に資源の状態を示す値である資源値を保存し、タスクを実行するときに当該タスクが使用する資源の資源値を資源値保存領域から読み出すことで、それぞれのタスクの独立性を保証して複数のタスクを並行して実行するマルチタスクシステムにおけるタスク切り替え方法に関する。
【0020】
【課題を解決するための手段】
そして、本発明に係るタスク切り替え方法では、データ処理装置が資源を複数の資源グループに分割して管理し、タスク切り替えにより実行中となったタスクが資源を使用する際、データ処理装置が当該資源が属する資源グループを当該タスクが使用可能か否かを判定する資源グループ使用可能性検査を行う。そして、資源グループ使用可能性検査の結果、当該資源が属する資源グループが実行中のタスクで使用可能と判定された場合には、データ処理装置が実行中のタスクに当該資源の使用を認めて、実行中のタスクの処理を継続する。また、資源グループ使用可能性検査の結果、当該資源が属する資源グループが実行中のタスクで使用可能と判定されなかった場合には、データ処理装置が当該資源が属する資源グループを実行中のタスクが使用可能な状態に変更する資源グループ占有タスク切り替え処理を行った上で、実行中のタスクに当該資源の使用を認めて、実行中のタスクの処理を継続し、タスク切り替えによって実行を開始するタスクが、資源グループ使用可能性検査を行うことができない資源を使用する可能性がある場合には、データ処理装置が当該資源グループの資源値の保存及び/又は読み込みを、タスク切り替えの際に必要に応じて予め行う。
【0022】
また、上記タスク切り替え方法においては、実行中のタスクが資源グループを使用可能であるか否かを示す資源グループ使用許可フラグを設けておくようにしても良い。この場合、資源グループ使用可能性検査では、資源グループ使用許可フラグに基づいて、データ処理装置が実行中のタスクが資源グループを使用可能か否かを判定する。
【0023】
また、以上のように資源グループ使用許可フラグを設けた場合は、更に、タスクが資源グループを占有しているか否かを資源グループ毎に示す資源グループ占有フラグをタスク毎に設けておくようにしても良い。この場合は、タスク切り替え時に、タスク切り替えによって停止するタスクに対応する資源グループ占有フラグのうち、資源グループ使用許可フラグに使用可能であることを示す値が設定されている資源グループに対応する資源グループ占有フラグに、データ処理装置が当該資源グループを占有していることを示す値を設定する。そして、資源グループ占有タスク切り替え処理では、実行中のタスクが使用しようとしている資源が属する資源グループをそれまで使用していたタスクに対応する資源グループ占有フラグのうち、当該資源グループに対応する資源グループ占有フラグに、データ処理装置が当該資源グループを占有していないこと示す値を設定する処理を行う。
【0024】
なお、資源グループ使用許可フラグは、例えば、共通の機能を提供する1以上の資源グループからなる機能ブロック単位で、実行中のタスクが資源グループを使用可能であるか否かを示すものであっても良いし、或いは、資源グループ毎に、実行中のタスクが資源グループを使用可能であるか否かを示すものであっても良い。
【0025】
また、上記タスク切り替え方法において、資源グループ占有タスク切り替え処理では、例えば、実行中のタスクが使用しようとしている資源の資源値を保持する必要がある場合に、データ処理装置が当該資源が属する資源グループの資源値を資源値保存領域に保存する処理と、実行中のタスクに対応した資源値保存領域に、実行中のタスクが使用しようとしている資源の資源値として有効な値が保存されている場合に、データ処理装置が実行中のタスクに対応した資源値保存領域から資源値を読み込む処理とを行う。
【0026】
以上のように資源グループ占有タスク切り替え処理を行う際は、資源グループを占有しているタスクに対応した値が設定される資源グループ占有タスク変数を資源グループ毎に設けておくようにしても良い。この場合、資源グループ占有タスク切り替え処理では、データ処理装置が実行中のタスクが使用しようとしている資源が属する資源グループに対応した資源グループ占有タスク変数に、実行中のタスクに対応した値を設定する処理も行う。
【0027】
また、以上のように資源グループ占有タスク変数を設けた場合は、更に、実行中のタスクに対応した値が設定される実行中タスク変数を設けておくようにしても良い。この場合、資源グループ使用可能性検査では、例えば、データ処理装置が実行中のタスクが使用しようとしている資源が属する資源グループに対応した資源グループ占有タスク変数の値と、実行中タスク変数の値とを比較することにより、当該資源が属する資源グループを実行中のタスクが使用可能か否かを判定する。
【0028】
また、資源グループに属する資源に使用中のものが存在するか否かを資源グループ毎に示す資源グループ保存値有効フラグをタスク毎に設けておくようにしても良い。この場合、タスクが資源を使用することにより当該資源の資源値が有効な値となった場合には、データ処理装置が当該タスクに対応した資源グループ保存値有効フラグのうち、当該資源が属する資源グループに対応した資源グループ保存値有効フラグに、当該資源グループに使用中の資源が存在していることを示す値を設定する。そして、資源グループ占有タスク切り替え処理では、データ処理装置が実行中のタスクが使用しようとしている資源の資源値を保持する必要があるか否かの判断を、当該資源を使用しているタスクに対応した資源グループ保存値有効フラグに基づいて行うとともに、データ処理装置が実行中のタスクに対応した資源値保存領域に、実行中のタスクが使用しようとしている資源の資源値として有効な値が保存されているか否かの判断を、実行中のタスクに対応した資源グループ保存値有効フラグに基づいて行う。
【0029】
なお、資源グループ保存値有効フラグを設けた場合、タスク切り替えによって実行を開始するタスクが、資源グループ使用可能性検査を行うことができない資源を使用する可能性がある場合には、タスク切り替え処理において、データ処理装置が当該資源グループに対応した資源グループ保存値有効フラグに、当該資源グループに対応した資源値保存領域に有効な値が存在していることを示す値を設定する処理も行うことが好ましい。
【0030】
また、タスクの実行を終了する際には、データ処理装置が当該タスクに対応した全ての資源グループ保存値有効フラグの値を、資源グループに使用中の資源が存在しないことを示す値に設定することが好ましい。
【0031】
また、資源グループに属する資源をタスクが使用中であるか否かを示す資源グループ使用中フラグを資源グループ毎に設けておくようにしても良い。この場合、タスクが資源を使用するときには、データ処理装置が当該資源が属する資源グループに対応した資源グループ使用中フラグに、当該資源グループに属する資源をタスクが使用中であることを示す値を設定する。そして、資源グループ占有タスク切り替え処理において、実行中のタスクが使用しようとしている資源の資源値を保持する必要があるか否かの判断を、データ処理装置が当該資源が属する資源グループに対応した資源グループ使用中フラグに基づいて行う。
【0032】
なお、資源グループ使用中フラグを設けた場合、タスク切り替えによって実行を開始するタスクが、資源グループ使用可能性検査を行うことができない資源を使用する可能性がある場合には、タスク切り替え処理において、データ処理装置が当該資源グループに対応した資源グループ使用中フラグに、当該資源グループに使用中の資源が存在していることを示す値を設定する処理も行うことが好ましい。
【0033】
また、タスクが資源グループを占有しているか否かを資源グループ毎に示す資源グループ占有フラグをタスク毎に設けておくようにしても良い。この場合、資源グループ占有タスク切り替え処理では、実行中のタスクが使用しようとしている資源が属する資源グループを占有しているタスクに対応する資源グループ占有フラグのうち、実行中のタスクが使用しようとしている資源が属する資源グループに対応した資源グループ占有フラグに、データ処理装置が当該資源グループを占有していないことを示す値を設定する処理と、実行中のタスクに対応した資源グループ占有フラグのうち、実行中のタスクが使用しようとしている資源が属する資源グループに対応した資源グループ占有フラグに、データ処理装置が当該資源グループを占有していることを示す値を設定する処理とを行う。
【0034】
また、上記タスク切り替え方法において、タスクが使用可能な資源を、キャッシュメモリを備えた中央処理装置を使用して取り扱う場合には、データ処理装置が資源を資源グループに分割する際に、各資源グループに対応した各資源値保存領域のサイズがキャッシュメモリのキャッシュラインサイズの整数倍となるように分割することが好ましい。
【0035】
また、上記タスク切り替え方法において、タスクが使用可能な資源を、キャッシュメモリを備えた中央処理装置を使用して取り扱うとともに、資源値保存領域をキャッシュメモリ上に確保する場合には、データ処理装置が資源値保存領域の先頭アドレスがキャッシュメモリのキャッシュラインの境界となるように資源値保存領域を確保することが好ましい。
【0039】
一方、本発明に係るデータ処理装置は、タスク毎に確保した資源値保存領域に資源の状態を示す値である資源値を保存し、タスクを実行するときに当該タスクが使用する資源の資源値を資源値保存領域から読み出すことで、それぞれのタスクの独立性を保証して複数のタスクを並行して実行するデータ処理装置である。
【0040】
そして、本発明に係るデータ処理装置は、資源を複数の資源グループに分割して管理し、タスク切り替えにより実行中となったタスクが資源を使用する際、当該資源が属する資源グループを当該タスクが使用可能か否かを判定する資源グループ使用可能性検査を行う。そして、資源グループ使用可能性検査の結果、当該資源が属する資源グループが実行中のタスクで使用可能と判定された場合には、実行中のタスクに当該資源の使用を認めて、実行中のタスクの処理を継続する。また、資源グループ使用可能性検査の結果、当該資源が属する資源グループが実行中のタスクで使用可能と判定されなかった場合には、当該資源が属する資源グループを実行中のタスクが使用可能な状態に変更する資源グループ占有タスク切り替え処理を行った上で、実行中のタスクに当該資源の使用を認めて、実行中のタスクの処理を継続し、タスク切り替えによって実行を開始するタスクが、資源グループ使用可能性検査を行うことができない資源を使用する可能性がある場合には、当該資源グループの資源値の保存及び/又は読み込みを、タスク切り替えの際に必要に応じて予め行う。
【0041】
上記データ処理装置は、実行中のタスクが資源グループを使用可能であるか否かを示す資源グループ使用許可フラグの値を保持する資源グループ使用許可フラグ保持手段を備えていても良い。この場合、資源グループ使用可能性検査では、資源グループ使用許可フラグに基づいて、実行中のタスクが資源グループを使用可能か否かを判定する。
【0042】
なお、資源グループ使用許可フラグは、例えば、共通の機能を提供する1以上の資源グループからなる機能ブロック単位で、実行中のタスクが資源グループを使用可能であるか否かを示すものであっても良いし、或いは、資源グループ毎に、実行中のタスクが資源グループを使用可能であるか否かを示すものであっても良い。
【0043】
また、上記データ処理装置において、資源グループ占有タスク切り替え処理では、例えば、実行中のタスクが使用しようとしている資源の資源値を保持する必要がある場合に、当該資源が属する資源グループの資源値を資源値保存領域に保存する処理と、実行中のタスクに対応した資源値保存領域に、実行中のタスクが使用しようとしている資源の資源値として有効な値が保存されている場合に、実行中のタスクに対応した資源値保存領域から資源値を読み込む処理とを行う。
【0044】
また、上記データ処理装置は、資源グループを占有しているタスクに対応した値が資源グループ毎に設定される資源グループ占有タスク変数の値を保持する資源グループ占有タスク変数保持手段を備えていても良い。この場合、資源グループ占有タスク切り替え処理では、実行中のタスクが使用しようとしている資源が属する資源グループに対応した資源グループ占有タスク変数に、実行中のタスクに対応した値を設定する処理も行う。
【0045】
また、上記データ処理装置は、資源グループ占有タスク変数保持手段の他に、更に、実行中のタスクに対応した値が設定される実行中タスク変数の値を保持する実行中タスク変数保持手段を備えていても良い。この場合、資源グループ使用可能性検査では、例えば、実行中のタスクが使用しようとしている資源が属する資源グループに対応した資源グループ占有タスク変数の値と、実行中タスク変数の値とを比較することにより、当該資源が属する資源グループを実行中のタスクが使用可能か否かを判定する。
【0046】
また、上記データ処理装置は、資源グループに属する資源に使用中のものが存在するか否かを資源グループ毎に示す資源グループ保存値有効フラグの値を保持する資源グループ保存値有効フラグ保持手段を備えていても良い。この場合、タスクが資源を使用することにより当該資源の資源値が有効な値となった場合には、当該資源が属する資源グループに対応した資源グループ保存値有効フラグに、当該資源グループに使用中の資源が存在していることを示す値を設定する。そして、資源グループ占有タスク切り替え処理において、実行中のタスクが使用しようとしている資源の資源値を保持する必要があるか否かの判断は、当該資源が属する資源グループに対応した資源グループ保存値有効フラグに基づいて行う。
【0047】
なお、資源グループ保存値有効フラグ保持手段を備えている場合、実行中のタスクが、特定の資源グループの資源値が破壊されることを前提とした処理を実行した場合には、当該資源グループに対応した資源グループ保存値有効フラグに、当該資源グループに対応した資源値保存領域に有効な値が存在していないことを示す値を設定するようにすると良い。
【0048】
また、上記データ処理装置は、資源グループに属する資源をタスクが使用中であるか否かを資源グループ毎に示す資源グループ使用中フラグを保持する資源グループ使用中フラグ保持手段を備えていても良い。この場合、タスクが資源を使用するときには、当該資源が属する資源グループに対応した資源グループ使用中フラグに、当該資源グループに属する資源をタスクが使用中であることを示す値を設定する。そして、資源グループ占有タスク切り替え処理において、実行中のタスクが使用しようとしている資源の資源値を保持する必要があるか否かの判断を、当該資源が属する資源グループに対応した資源グループ使用中フラグに基づいて行う。
【0049】
なお、資源グループ使用中フラグ保持手段を備えている場合、実行中のタスクが、特定の資源グループの資源値が破壊されることを前提とした処理を実行した場合には、資源値が破壊されることが前提とされている資源グループのうち、実行中のタスクが使用可能な資源グループについて、当該資源グループに対応した資源グループ使用中フラグに、当該資源グループを使用中のタスクが存在していないことを示す値を設定するようにすると良い。
【0050】
また、上記データ処理装置は、タスクが使用可能な資源を取り扱う中央処理装置と、上記中央処理装置に設けられたキャッシュメモリとを備えていても良い。この場合、資源グループは、各資源グループに対応した各資源値保存領域のサイズがキャッシュメモリのキャッシュラインサイズの整数倍となるように資源が分割されてなることが好ましい。
【0051】
また、上記データ処理装置が、タスクが使用可能な資源を取り扱う中央処理装置と、上記中央処理装置に設けられたキャッシュメモリとを備えている場合、資源値保存領域は、各資源値保存領域の先頭アドレスがキャッシュメモリのキャッシュラインの境界となるように確保すると良い。
【0052】
また、上記データ処理装置では、資源値保存領域を確保する際に、保存する資源値のサイズに応じて、資源値保存領域のサイズを動的に変化させて確保するようにしても良い。この場合、資源値保存領域のサイズは、資源グループを単位として動的に変化させると良い。また、資源値保存領域のサイズを動的に変化させる場合、当該資源値保存領域は、対応するタスクが使用するスタックと同一のメモリブロックに、当該タスクがスタックにデータを格納していく方向とは逆の方向から確保していくようにすると良い。ただしこの場合、データ処理装置は、資源値保存領域を動的に変化させるときに、スタックとしてタスクが使用中の領域と資源値保存領域とが重複しないかを確認する領域重複チェック手段を備えていることが好ましい。
【0053】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
【0054】
1.本発明の実施の形態の概要
本発明では、中央処理装置のレジスタや浮動小数点演算装置のレジスタなど、タスクが使用する資源で、なおかつタスク毎に独立した値を保持する必要がある資源を、資源グループと呼ぶ複数のグループに分割して管理する。
【0055】
本発明では、実行中のタスクが資源を使用する際に、実行中のタスクが当該資源が属する資源グループを使用可能か否かを判定する、資源グループ使用可能性検査と呼ぶ検査を実行する。なお、本発明では、実行中のタスクが当該資源グループを占有している場合に、資源グループが使用可能であると判断する。そして、資源グループ使用可能性検査の結果、資源が使用可能である場合は、本発明が導入されていない場合と何ら変わりなく処理を継続する。また、それ以外の場合は、資源グループ占有タスク切り替え処理と呼ぶ処理を起動する。
【0056】
資源グループ占有タスク切り替え処理では、切り替え対象となっている資源グループについて、資源値の保存、読み込み、そして資源グループの占有状態の変更を行う。具体的には、切り替えの対象となっている資源グループを現在占有しているタスクを特定し、当該資源グループを現在占有しているタスクが、当該資源グループに属する資源に有効な値を設定している場合は、それらを当該タスクに対応した資源値保存領域に保存する。また、実行中のタスク(すなわち資源を使用しようとしているタスク)が、当該資源グループに対応する有効な値を資源値保存領域に保持している場合は、それらの値を読み込む。そして、これらの処理の後、当該資源グループを占有しているタスクを、現在実行中のタスクに切り替える。
【0057】
また、本発明に係るタスク切り替え方法は、オペレーティングシステム等のソフトウェアの一部として実現することも可能であるし、或いは、本発明を適用したデータ処理装置で実現することも可能であるが、いずれの場合においても、一連の資源グループ使用可能性検査及び資源グループ占有タスク切り替え処理を正常に実行できるように、いくつかのフラグ及び変数を用意し、これらの値を必要に応じて設定したり参照したりする。
【0058】
なお、資源グループ使用可能性検査は、非常に頻繁に行われる処理である。したがって、資源グループ使用可能性検査は、オペレーティングシステム等によるソフトウェア処理によって行うようにするのではなく、資源グループ使用可能性検査を行う機構をデータ処理装置にハードウェアとして実装しておき、ハードウェア処理によって行うようにしておいたほうが、より高速な処理が可能となるので好ましい。
【0059】
このような資源グループ使用可能性検査は、例えば、機能ブロック毎に使用の可否を示す使用許可フラグをデータ処理装置に実装しておき、当該使用許可フラグを用いて行う。ここで、機能ブロックは、共通の機能を提供する1以上の資源グループから構成される。具体的には、例えば、浮動小数点演算装置のレジスタをひとまとめにして機能ブロックとして扱う。
【0060】
そして、機能ブロック毎に使用の可否を示す使用許可フラグを用いて資源グループ使用可能性検査を行う際は、使用不可能な資源グループを含む機能ブロックに対応した使用許可フラグを、当該機能ブロックの使用が不可であることを示すように設定しておく。そして、資源グループ使用可能性検査では、当該使用許可フラグを参照することにより、資源グループの使用の可否を検出する。
【0061】
また、資源グループ毎に使用の可否を示す資源グループ使用許可フラグをデータ処理装置に実装しておき、当該資源グループ使用許可フラグを用いて、資源グループ使用可能性検査を行うようにしても良い。資源グループ毎に使用の可否を示す資源グループ使用許可フラグを用いて資源グループ使用可能性検査を行う際は、使用不可能な資源グループに対応した資源グループ使用許可フラグを、当該資源グループの使用が不可であることを示すように設定しておく。そして、資源グループ使用可能性検査では、当該資源グループ使用許可フラグを参照することにより、資源グループの使用の可否を検出する。
【0062】
また、資源グループを占有しているタスクに対応した値が資源グループ毎に設定される資源グループ占有タスク変数が格納されるレジスタと、実行中のタスクに対応した値が設定される実行中タスク変数が格納されるレジスタとをデータ処理装置に実装しておき、資源グループ占有タスク変数及び実行中タスク変数を用いて、資源グループ使用可能性検査を行うようにしても良い。資源グループ占有タスク変数及び実行中タスク変数を用いて資源グループ使用可能性検査を行う際は、資源グループ占有タスク変数と実行中タスク変数とを比較することで、資源グループの使用の可否を検出する。
【0063】
このように資源グループ使用可能性検査に使用するフラグや変数が格納されるレジスタをデータ処理装置にハードウェアとして実装しておけば、タスク処理の実行効率を落とすことなく、資源グループ使用可能性検査を行うことが可能となる。
【0064】
一方、資源グループ占有タスク切り替え処理についても、より高速に処理を行うという観点からは、資源グループ占有タスク切り替え処理を行う機構をできるだけデータ処理装置にハードウェアとして実装しておき、当該処理をハードウェア処理として行うようにしたほうが好ましい。ただし、資源グループ占有タスク切り替え処理は、資源グループ使用可能性検査ほど頻繁に行われるものではないので、オペレーティングシステム等によるソフトウェア処理によって行うようにしても良い。なお、資源グループ占有タスク切り替え処理の殆どの部分は、オペレーティングシステム等のソフトウェアによる実現も、データ処理装置に実装されたハードウェア又はマイクロプログラムによる実現も可能である。
【0065】
なお、資源グループ占有タスク切り替え処理では、具体的には、切り替え対象となる資源グループの資源値の保存が必要か否かを判断し必要であれば当該資源値を保存する処理や、資源値の保存が必要か否かを判断するのに必要なフラグを更新する処理や、切り替え対象となる資源グループの資源値の読み込みが必要か否かを判断し必要であれば当該資源値を読み込む処理や、資源値の読み込みが必要か否かを判断するのに必要なフラグを更新する処理や、資源グループを占有しているタスクを特定するのに必要な変数を更新する処理や、資源グループ使用可能性検査で使用するフラグを更新する処理などを行う。
【0066】
このような資源グループ占有タスク切り替え処理を行うにあたっては、切り替え対象となる資源グループの資源値の保存が必要か否かを判断する手段として、各資源グループに対応した資源グループ使用中フラグを用意しておく。そして、タスクの実行中に、ある資源グループに属する資源が使用されたら、対応する資源グループ使用中フラグに「真」の値を設定する。また、タスク切り替えによって実行が開始されたタスクが、特定の資源グループの資源値が破壊されることを前提にした処理(例えば、システムコールや、サブルーチン呼び出しや、サブルーチンからの復帰処理など)を実行した場合には、当該資源グループに対応した資源グループ使用中フラグに「偽」の値を設定する。また、タスクの実行終了などにより、タスクが使用していた資源の資源値を破棄しても問題ないと判断された場合には、当該タスクが占有していた資源グループに対応する資源グループ使用中フラグに「偽」の値を設定する。
【0067】
また、上述のような資源グループ占有タスク切り替え処理を行うにあたっては、切り替え対象となる資源グループの資源値の読み込みが必要か否かを判断する手段として、各資源グループに対応した資源グループ保存値有効フラグをタスク毎に用意しておく。そして、実行中のタスクが資源を使用する際に、当該タスクに対応した資源グループ保存値有効フラグのうち、当該資源が属する資源グループに対応する資源グループ保存値有効フラグに「真」の値を設定する。なお、このように資源グループ保存値有効フラグを用いる際は、実行中のタスクに対応する資源グループ保存値有効フラグを保持するレジスタを、データ処理装置に設けておくと良い。これにより、資源グループ保存値有効フラグの更新に要するメモリアクセスを低減させることができる。
【0068】
なお、タスク切り替えによって実行が開始されたタスクが、特定の資源グループの資源値が破壊されることを前提にした処理を含む場合には、当該タスクに対応した資源グループ保存値有効フラグのうち、資源値が破壊されることが前提とされている資源グループに対応した資源グループ保存値有効フラグに「偽」の値を設定する。これにより、不要な資源値の保存や読み込みを省略することが可能となり、メモリアクセスを低減することができる。また、タスクの実行終了などにより、タスクが使用していた資源の資源値を破棄しても問題ないと判断された場合には、当該タスクに対応した資源グループ保存値有効フラグのうち、当該タスクが占有していた資源グループに対応する資源グループ保存値有効フラグに「偽」の値を設定する。これにより、不要な資源値の保存や読み込みを省略することが可能となり、メモリアクセスを更に低減することができる。
【0069】
また、上述のような資源グループ占有タスク切り替え処理を行うにあたっては、資源グループを占有しているタスクを特定する手段として、各資源グループに対応した資源グループ占有タスク変数を用意しておく。そして、資源グループ占有タスク切り替え処理では、切り替え対象となる資源グループに対応した資源グループ占有タスク変数の値を、実行中のタスクに対応した値に更新する。
【0070】
2.基本的な処理の流れ
タスク切り替えが発生した際、オペレーティングシステムは、タスク切り替えによって実行が停止されるタスクに対応した資源グループ保存値有効フラグや資源グループ占有フラグ等を更新する。また、オペレーティングシステムは、必要な場合には、タスク切り替えによって実行が開始されるタスクについて、資源グループ使用許可フラグ、資源グループ保存値有効フラグ、実行中タスク変数などの保存及び設定を行う。また、オペレーティングシステムは、必要な場合には、資源値の保存及び読み込みを、上述のようなフラグの保存及び設定の手順の間の適切な時期に行う。そして、これらの処理を行った後、オペレーティングシステムは、新しいタスクの実行を開始する。
【0071】
そして、タスク切り替えによって実行中となったタスクが、使用を許可されていない資源グループに属する資源を使用しようとしたときには、使用を許可されていない資源グループに属する資源をタスクが使用しようとしていることが、資源グループ使用可能性検査によって検出され、資源グループ占有タスク切り替え処理が起動される。そして、資源グループ占有タスク切り替え処理により、使用を許可されていなかった資源グループに属する資源をタスクが使用できるようにするのに必要な処理が行われる。そして、資源グループ占有タスク切り替え処理により、資源の使用が可能となったら、当該資源を使用してタスクの処理を継続する。
【0072】
なお、資源グループ使用中フラグを保持するレジスタをデータ処理装置が実装している場合は、実行中のタスクが資源を使用しようとしたときに、当該資源が属する資源グループに対応した資源グループ使用中フラグに「真」の値を設定しておく。また、資源グループ保存値有効フラグを保持するレジスタをデータ処理装置が実装している場合は、実行中のタスクが資源を使用しようとしたときに、当該資源が属する資源グループに対応した資源グループ保存値有効フラグに「真」の値を設定しておく。
【0073】
そして、資源グループ占有タスク切り替え処理では、先ず、実行中のタスクが使用しようとしている資源が属する資源グループに対応した資源グループ占有タスク変数から、当該資源グループを占有中のタスクを特定する。そして、当該資源グループを占有中のタスクに対応した資源グループ占有フラグに「偽」の値を設定する。また、当該資源グループを占有中のタスクに対応した資源グループ保存値有効フラグを検査し、その値が「真」ならば、当該資源グループの資源値を、当該資源グループを占有中のタスクに対応した資源値保存領域に保存する。
【0074】
なお、資源グループ使用中フラグの値を保持するレジスタをデータ処理装置が実装している場合には、当該レジスタの内容を検査し、占有タスク切り替え対象の資源グループに対応した資源グループ使用中フラグの値が「真」ならば、当該資源グループの資源値を、当該資源グループを占有中のタスクに対応した資源値保存領域に保存する。
【0075】
次に、実行中のタスクに対応した資源グループ保存値有効フラグを検査し、占有タスク切り替え対象の資源グループに対応した値が「真」ならば、実行中のタスクに対応した資源値保存領域から、当該資源グループの資源値を読み込む。これにより、実行中のタスクからは、あたかも自分が設定した値が当該資源に継続して存在していたかのように見え、タスク間の独立性が保証される。
【0076】
なお、実行中のタスクに対応した資源グループ保存値有効フラグの値が「偽」の場合には、実行中のタスクに対応した資源値保存領域として、占有タスク切り替え対象の資源グループに対応した資源値保存領域が、既に確保されているかどうかを検査する。そして、確保されていない場合には、当該資源グループに対応する資源値保存領域を確保する。その後、当該資源グループに対応する資源グループ保存値有効フラグに「真」の値を設定する。
【0077】
そして、以上の処理を行うとともに、占有タスク切り替え対象の資源グループに対応した資源グループ占有タスク変数に、実行中のタスクに対応した値を設定することにより、資源グループを占有するタスクの切り替え処理がなされ、実行中のタスクが資源を使用できる状態とされる。
【0078】
なお、資源グループ使用許可フラグを使用して資源使用可能性検査を行う場合は、資源グループ占有タスク切り替え処理の中で、占有タスク切り替え対象の資源グループに対応する資源グループ使用許可フラグに「真」の値を設定する処理も行う。
【0079】
3.メモリの使用について
以上のようにタスク切り替えを行うにあたって、各タスクに対応した資源値保存領域は、タスクが使用するスタックと同一のメモリブロックに確保すると良い。スタックに使用するメモリブロックは、タスクが生成されるまでは確保する必要がなく、また、タスクが実行を終了したら開放してしまうことができる。このような性質を利用することで、タスクに動的にスタック用のメモリブロックを割り当ててメモリ使用量を節約する機構を実現できるが、このような機構において、タスクが使用するスタックと同一のメモリブロックに資源値保存領域を確保するようにすれば、資源値保存領域も動的に割り当てることが可能となり、メモリ使用量を更に節約することが可能となる。
【0080】
また、資源値保存領域はタスク毎に確保されるが、当該資源値保存領域を確保する際は、保存する資源値のサイズに応じて、資源値保存領域のサイズを動的に変化させて確保したほうが好ましい。これにより、メモリを効率的に使用することが可能となる。そして、このように資源値保存領域のサイズを動的に変化させるようにした場合には、実行中のタスクがこれまで使用していなかった資源グループを使用しようとしたときに、資源グループ占有タスク切り替え処理の中で、当該資源グループに対応する資源値保存領域を確保するようにする。このとき、資源値保存領域は、タスクが使用するスタックと同一のメモリブロックに、当該タスクがスタックにデータを格納していく方向とは逆の方向から確保していくようにすると良い。これにより、メモリを更に有効に使用できる。
【0081】
なお、資源値保存領域を、タスクが使用するスタックと同一のメモリブロックに確保する場合は、スタックとして使用する領域と資源値保存領域とが重複しないことが望まれる。スタックとして使用する領域と資源値保存領域とが重複しないようにするには、例えば、資源値保存領域のサイズを動的に変化させるときに、スタックとして使用中の領域と資源値保存領域とが重複しないかを確認するようにする。また、例えば、タスクがスタックとして使用する領域のサイズを動的に変化させるときに、スタックとして使用する領域と資源値保存領域とが重複しないかを確認するようにする。
【0082】
また、データ処理装置がキャッシュメモリを備えている場合は、資源を資源グループに分割する際に、各資源グループに対応した各資源値保存領域のサイズがキャッシュメモリのキャッシュラインサイズの整数倍となるように分割したほうが良い。このように、各資源グループに対応した各資源値保存領域のサイズが、キャッシュメモリのキャッシュラインサイズの整数倍となっていれば、メモリアクセスをより効率良く行うことが可能となる。
【0083】
また、データ処理装置がキャッシュメモリを備えており、資源値保存領域をキャッシュメモリ上に確保する場合には、資源値保存領域の先頭アドレスがキャッシュメモリのキャッシュラインの境界となるようにしたほうが良い。このように、資源値保存領域の先頭アドレスがキャッシュメモリのキャッシュラインの境界となっていれば、メモリアクセスをより効率良く行うことが可能となる。
【0084】
4.本発明の具体例
つぎに、以上のような本発明の実施の形態について、より具体的な例を挙げて更に詳細に説明する。なお、以下の説明では、まず、本発明の第1の実施の形態として、本発明に係るタスク切り替え方法を既存のデータ処理装置を用いてオペレーティングシステムの処理によって実現した場合について、具体的な例を挙げて説明する。その後、本発明の第2の実施の形態として、本発明を適用した新規なデータ処理装置を用いてタスク切り替えを行う場合について、具体的な例を挙げて説明する。
【0085】
4−1 第1の実施の形態
まず、本発明の第1の実施の形態として、本発明に係るタスク切り替え方法を、従来より実用化されているデータ処理装置において、オペレーティングシステムの処理によって実現した場合について説明する。
【0086】
なお、以下に説明するタスク切り替え方法は、オペレーティングシステムの処理によって実現されるが、当該オペレーティングシステムは、タスク切り替えを実現するモジュール以外については、任意の構成とすることができる。したがって、タスク切り替えを実現するモジュール以外については、従来のオペレーティングシステムと同様な構成であっても良い。
【0087】
また、以下に説明するタスク切り替え方法では、説明を簡単にするため、タスク切り替え処理等を実行するオペレーティングシステムは、オペレーティングシステム専用のレジスタを用いて処理を行い、タスクが使用するレジスタの値を破壊しないものとする。ただし、本発明は、オペレーティングシステムが、タスクと同一のレジスタを使用するような場合にも適用可能である。オペレーティングシステムが、タスクと同一のレジスタを使用する場合には、当該レジスタをオペレーティングシステムが使用するか、タスクが使用するかによって、当該レジスタの値の保存や読み込みを適切なタイミングで行うようにすれば良い。
【0088】
4−1−1 データ処理装置の構成
まず、本例において使用されるデータ処理装置について説明する。なお、このデータ処理装置自体は既に実用化されているものであり、新規なものではない。
【0089】
本例において使用されるデータ処理装置は、中央処理装置(CPU:Central Processing Unit)と、浮動小数点演算などの演算命令を高速に実行する浮動小数点演算装置とを備えている。ここで、中央処理装置はキャッシュメモリを備えており、当該キャッシュメモリのキャッシュラインサイズは16バイトである。
【0090】
そして、このデータ処理装置は、タスクが使用可能な資源として、図1に示すように、中央処理装置のレジスタ(以下、汎用レジスタと称する。)と、浮動小数点演算装置のレジスタ(以下、浮動小数点レジスタと称する。)とを備えている。
【0091】
ここで、汎用レジスタは、0〜127番まであり、各汎用レジスタは32ビットの容量を持つ。また、浮動小数点レジスタは、0〜63番まであり、各浮動小数点レジスタは64ビットの容量を持つ。したがって、このデータ処理装置は、汎用レジスタと浮動小数点レジスタとで、合計8192ビット(=1024バイト)の容量を持っている。
【0092】
また、このデータ処理装置は、図1に示すように、浮動小数点演算装置が使用可能であるか否かを示す使用許可フラグ(以下、浮動小数点演算装置使用許可フラグと称する。)が格納される1ビットのレジスタも備えている。
【0093】
4−1−2 プログラムの仕様
本例において、データ処理装置によって実行されるプログラムは、サブルーチン呼び出し、サブルーチンからの復帰又はシステムコール等のような機能ブロックの呼び出し或いは復帰の命令(簡単のため、以下の説明では、これらの命令を一括して機能ブロック遷移命令と称する。)を実行する際に、汎用レジスタの0〜63番と浮動小数点レジスタの0〜31番は、作業用レジスタとして使用して、呼び出された機能ブロックの処理中に値を変更しても構わないが、汎用レジスタの64〜127番と浮動小数点レジスタの32〜63番は、機能ブロックの処理を終了して当該プログラムの処理を継続する際に、機能ブロックの呼び出し前の値を保持していなければならないという仕様に従っているものとする。
【0094】
また、実行中のタスクがオペレーティングシステムに指示するタスク切り替えの要求については、機能ブロック遷移命令を使用するものとする。
【0095】
また、任意のタイミングで発生する割り込み処理に対応するため、割り込み処理のときには、全ての汎用レジスタ及び浮動小数点レジスタの値を割り込み直前の値に復元してから、通常処理を再開する必要があるものとする。
【0096】
4−1−3 オペレーティングシステムの概要とデータ構造
つぎに、オペレーティングシステムの概要、並びに当該オペレーティングシステムが取り扱うデータ構造について説明する。
【0097】
本例において使用するオペレーティングシステムは、マルチタスク機能を有している。すなわち、このオペレーティングシステムは、タスクが使用する資源の状態を示す資源値(すなわち、汎用レジスタや小数点レジスタの値)をタスク毎に用意した資源値保存領域に保存し、タスクを実行するときに当該タスクが使用する資源の資源値を資源値保存領域から読み出すことで、それぞれのタスクの独立性を保証して複数のタスクを並行して実行することが可能となっている。
【0098】
そして、本発明は、このようなマルチタスク機能を実現するにあたって、タスクが使用することが可能な資源を、複数の資源グループに分割して管理することを特徴としており、本例においては、オペレーティングシステムによって、タスクが使用することが可能な資源である汎用レジスタ及び浮動小数点レジスタを、図2に示すように、資源グループ0、資源グループ1、資源グループ2、資源グループ3の4つの資源グループに分割して管理する。
【0099】
ここで、資源グループ0は、機能ブロック遷移命令によるタスク切り替えを行う際に、機能ブロック遷移命令前の値を保持する必要がない汎用レジスタのグループである。すなわち、資源グループ0には、汎用レジスタの0〜63番が属する。また、資源グループ1は、機能ブロック遷移命令によるタスク切り替えを行う際に、機能ブロック遷移命令前の値を保持する必要がある汎用レジスタのグループである。すなわち、資源グループ1には、汎用レジスタの64〜127番が属する。また、資源グループ2は、機能ブロック遷移命令によるタスク切り替えを行う際に、機能ブロック遷移命令前の値を保持する必要がない浮動小数点レジスタのグループである。すなわち、資源グループ2には、浮動小数点レジスタの0〜31番が属する。また、資源グループ3は、機能ブロック遷移命令によるタスク切り替えを行う際に、機能ブロック遷移命令前の値を保持する必要がある浮動小数点レジスタのグループである。すなわち、資源グループ3には、浮動小数点レジスタの32〜63番が属する。
【0100】
また、オペレーティングシステムは、図2に示すように、メモリ上の変数として、資源グループ2−3占有タスク変数と、実行中タスク変数とを定義する。ここで、資源グループ2−3占有タスク変数には、資源グループ2及び資源グループ3を占有しているタスクに対応した値が設定される。換言すれば、資源グループ2及び資源グループ3の資源値は、資源グループ2−3占有タスク変数が示すタスクに対応した値となる。また、実行中タスク変数には、現在実行中のタスクに対応した値が設定される。すなわち、本例では、実行中タスク変数の値を参照することにより、実行中のタスクを特定することが可能となっている。
【0101】
また、オペレーティングシステムは、データ処理装置に備えられた浮動小数点演算装置使用許可フラグを、資源グループ2及び資源グループ3に属する資源の使用を許可するか否かを示す資源グループ使用許可フラグとして使用する。具体的には、実行中のタスクが資源グループ2及び資源グループ3に属する資源を使用可能のとき、浮動小数点演算装置使用許可フラグに「真」の値が設定され、実行中のタスクが資源グループ2及び資源グループ3に属する資源を使用してはいけないとき、浮動小数点演算装置使用許可フラグに「偽」の値が設定される。
【0102】
また、オペレーティングシステムは、図3に示すように、複数のタスクを並行して実行する際に、タスク毎に、タスク情報を保存するためのタスク情報保存領域と、タスクの実行に使用される資源の状態を示す資源値を保存するための資源値保存領域とをメモリ上に確保する。
【0103】
ここで、タスク情報保存領域に格納されるタスク情報は、一つのタスクに対して一つ存在する。そして、これらのタスク情報は、図4に示すように、それらのタスクの数に応じた配列としてメモリ上にまとめて保存され、当該配列の添え字を用いて各タスク情報を参照できるようになされている。すなわち、各タスク情報はそれぞれ配列要素としてメモリ上に保存され、各配列要素が保存される領域が、それぞれタスク情報保存領域に対応している。このようにタスク情報を配列としてメモリ上にまとめて保存しておけば、メモリを有効に活用することができ、しかも、各タスク情報に高速にアクセスすることが可能となる。
【0104】
また、各タスク情報保存領域は、図5に示すように、タスク制御情報領域と、資源制御情報領域とを有している。ここで、タスク制御情報領域は、オペレーティングシステムがタスクを制御するのに必要なタスク制御情報が保存される領域である。タスク制御情報領域に保存されるタスク制御情報は、本発明のポイントとなるものではなく、従来のシステムで使用されていたものと同様で良いので、ここでは詳細な説明は省略する。
【0105】
一方、資源制御情報領域は、タスクが使用する資源を制御するのに必要な資源制御情報が保存される領域であり、従来のシステムには無かったものである。この資源制御情報領域には、タスクが使用する資源を制御するのに必要な資源制御情報として、資源グループ2−3占有フラグと、資源グループ保存値有効フラグと、資源値保存領域先頭番地とが保存される。
【0106】
資源制御情報のうち、資源グループ2−3占有フラグは、資源グループ2及び資源グループ3を占有しているか否かを示すフラグである。そして、タスクが資源グループ2及び資源グループ3を占有しているとき、当該タスクに対応したタスク情報の資源グループ2−3占有フラグには、「真」の値が設定される。また、タスクが資源グループ2及び資源グループ3を占有していないとき、当該タスクに対応したタスク情報の資源グループ2−3占有フラグには、「偽」の値が設定される。
【0107】
すなわち、あるタスクに対応したタスク情報の資源グループ2−3占有フラグが「真」のとき、資源グループ2及び資源グループ3の資源値は、当該タスクに対応した値となっている。また、あるタスクに対応したタスク情報の資源グループ2−3占有フラグが「偽」のとき、資源グループ2及び資源グループ3の資源値は、当該タスクに対応した値にはなっていない。
【0108】
また、資源制御情報のうち、資源グループ保存値有効フラグは、有効な値が資源値保存領域に保存されているか否かを資源グループ毎に示すフラグである。この資源グループ保存値有効フラグには、資源グループ0に対応したフラグ(以下、資源グループ保存値有効フラグ0と称する。)と、資源グループ1に対応したフラグ(以下、資源グループ保存値有効フラグ1と称する。)と、資源グループ2に対応したフラグ(以下、資源グループ保存値有効フラグ2と称する。)と、資源グループ3に対応したフラグ(以下、資源グループ保存値有効フラグ4と称する。)とがある。
【0109】
そして、資源値保存領域に、資源グループ0の資源値として有効な値が保存されているとき、資源グループ保存値有効フラグ0には「真」の値が設定され、資源グループ0の資源値として有効な値が保存されていないとき、資源グループ保存値有効フラグ0には「偽」の値が設定される。同様に、資源値保存領域に、資源グループ1の資源値として有効な値が保存されているとき、資源グループ保存値有効フラグ1には「真」の値が設定され、資源グループ1の資源値として有効な値が保存されていないとき、資源グループ保存値有効フラグ1には「偽」の値が設定される。同様に、資源値保存領域に、資源グループ2の資源値として有効な値が保存されているとき、資源グループ保存値有効フラグ2には「真」の値が設定され、資源グループ2の資源値として有効な値が保存されていないとき、資源グループ保存値有効フラグ2には「偽」の値が設定される。同様に、資源値保存領域に、資源グループ3の資源値として有効な値が保存されているとき、資源グループ保存値有効フラグ3には「真」の値が設定され、資源グループ3の資源値として有効な値が保存されていないとき、資源グループ保存値有効フラグ3には「偽」の値が設定される。
【0110】
なお、タスクの実行を終了するときには、資源値の資源値保存領域への保存を行わずに、当該タスクに対応するタスク情報の資源グループ保存値有効フラグの値をすべて「偽」の値に設定する。これにより、無用な資源値の保存を行わなくて済むようになる。
【0111】
また、資源制御情報のうち、資源値保存領域先頭番地には、資源値保存領域のメモリ上での先頭番地を示す値が設定される。従来は、図20に示したように、タスク情報保存領域と資源値保存領域とがメモリ上で一連の領域とされていた。これに対して、本例では、図3及び図5に示すように、タスク情報保存領域と、資源値保存領域とをそれぞれ別々にメモリ上に確保する。そこで、本例では、資源値保存領域の場所が分かるように、資源制御情報として、資源値保存領域先頭番地を保存しておく。
【0112】
また、上述したように、オペレーティングシステムは、各タスク毎に資源値保存領域を確保する。ここで、資源値保存領域には、当該資源値保存領域に対応するタスクの実行に使用される資源の状態を示す資源値が保存されるが、本例において、資源値保存領域には、全ての資源の資源値が保存されるとは限らず、資源グループ単位で必要なものだけが保存される。
【0113】
すなわち、例えば、タスクが資源グループ0及び資源グループ1の資源値だけを保持すれば良い場合には、当該タスクに対応した資源値保存領域には、図5に示すように、資源グループ0及び資源グループ1の資源値だけが保存される。換言すれば、例えば、浮動小数点演算装置を使用しないタスクにおいては、資源グループ2及び資源グループ3のための資源値保存領域が不要となる。
【0114】
なお、従来のタスク切り替え方法では、全てのタスクについて全ての資源値を資源値保存領域に保存するようにしていたので、タスク一つあたりの資源値保存領域として、全ての汎用レジスタ及び浮動小数点レジスタの分のメモリ、すなわち1024バイトのメモリが必要であった。一方、本例では、資源を資源グループに分割して管理し、資源値保存領域には、値を保持すべき資源を含む資源グループについてだけ、資源値を保存するようにする。したがって、例えば、浮動小数点演算装置を使用しないタスクについては、浮動小数点レジスタに対応する資源値保存領域が必要ないので、従来のタスク切り替え方法に比べて、タスク一つあたり512バイトのメモリ(すなわち浮動小数点レジスタの分のメモリ)を節約することができる。
【0115】
このように、本例では、資源を資源グループに分割して管理し、資源値保存領域には、値を保持すべき資源を含む資源グループについてだけ、資源値を保存するようにする。これにより、タスク切り替えを行ったときにメモリに保存すべきデータ量を大幅に削減することができ、タスク切り替え時のメモリアクセスを大幅に削減することができる。
【0116】
なお、資源値保存領域に資源値を格納する際、資源グループ0の資源値は、資源制御情報の資源値保存領域先頭番地が示すメモリ番地から順次格納するようにする。また、資源グループ1の資源値は、資源制御情報の資源値保存領域先頭番地が示すメモリ番地から256バイト分だけ後ろのメモリ番地から順次格納するようにする。また、資源グループ2の資源値は、資源制御情報の資源値保存領域先頭番地が示すメモリ番地から512バイト分だけ後ろのメモリ番地から順次格納するようにする。また、資源グループ3の資源値は、資源制御情報の資源値保存領域先頭番地が示すメモリ番地から768バイト分だけ後ろのメモリ番地から順次格納するようにする。
【0117】
このように、各資源グループの資源値を保存する領域の相対的な位置関係を予め決めておいた場合、各資源グループの資源値を保存する領域を示す情報としては資源値保存領域先頭番地だけがあれば良く、各資源グループの資源値を保存する領域のメモリ番地を個別に記憶しておくような必要が無くなる。
【0118】
4−1−4 タスク切り替え処理の概略
つぎに、以上のようなオペレーティングシステムによって行われるタスク切り替えの処理の概略について説明する。
【0119】
本例におけるタスク切り替えでは、浮動小数点演算装置使用許可フラグによって管理される資源グループ2及び資源グループ3については、タスク切り替えの時点では、資源値保存領域への資源値の保存や、資源値保存領域からの資源値の読み込みを行わない。そして、資源グループ2及び資源グループ3については、それらに属する資源が必要になった段階で必要に応じて、資源値の保存や読み込みを行う。
【0120】
また、資源グループ0や資源グループ1についても、資源値保存領域への資源値の保存や、資源値保存領域からの資源値の読み込みを常に行うとは限らず、必要なものについてだけ、資源値の保存や読み込みを行う。
【0121】
すなわち、タスク切り替えが機能ブロック遷移命令によって起動された場合には、資源グループ1の資源値は保持しなければならないが、資源グループ0の資源値は変更して構わないので、資源グループ1の資源値の保存だけを行う。一方、タスク切り替えが割り込み処理によって起動された場合には、資源グループ0の資源値と資源グループ1の資源値の両方を保持しなければならないので、資源グループ0の資源値と資源グループ1の資源値の両方について、資源値保存領域への保存を行う。
【0122】
また、資源値保存領域から資源値を読み込む場合も、先ず、資源グループ保存値有効フラグを検査し、資源グループ0や資源グループ1の資源値として有効な値が資源値保存領域に保存されているか否かを判別する。そして、有効な値が保存されている場合にだけ、資源値保存領域からの資源値の読み込みを行う。すなわち、タスク切り替えにより実行を再開するタスクに関しては、当該タスクが実行を停止したときに設定した資源グループ保存値有効フラグの値を参照して、有効な資源値だけを資源値保存領域から読み込む。
【0123】
なお、上述したように、資源グループ2及び資源グループ3については、タスク切り替えの時点では、資源値保存領域への資源値の保存や、資源値保存領域からの資源値の読み込みを行わない。そこで、タスクが資源グループ2や資源グループ3に属する資源が必要になったときには、先ず、資源グループ使用可能性検査を行う。資源グループ使用可能性検査では、資源グループ2や資源グループ3に属する資源をタスクが使用可能であるか否かを検査する。なお、資源グループ使用可能性検査については、後で詳細に説明する。
【0124】
そして、資源グループ使用可能性検査の結果、当該資源をタスクが使用可能であると判定された場合には、当該資源を使用してタスクの処理を継続し、使用可能でないと判定された場合には、資源グループ占有タスク切り替え処理を行う。資源グループ占有タスク切り替え処理では、当該資源をタスクが使用可能な状態に変更する。なお、資源グループ占有タスク切り替え処理については、後で詳細に説明する。そして、資源グループ占有タスク切り替え処理により、当該資源をタスクが使用可能な状態に変更されたら、当該資源を使用してタスクの処理を継続する。
【0125】
4−1−5 タスク切り替え処理の詳細
つぎに、以上のようなタスク切り替え処理について、図6のフローチャートを参照して詳細に説明する。なお、ここでは、タスクAからタスクBへのタスク切り替えを行うものとして説明する。
【0126】
タスクAからタスクBへのタスク切り替え処理を行う際は、先ず、ステップST1−1において、タスク切り替えが割り込み処理によるものであるか否かを判断する。割り込み処理によるタスク切り替えの場合には、ステップST1−2へ進み、割り込み処理によるタスク切り替えでない場合(すなわち機能ブロック遷移命令によるタスク切り替えの場合)には、ステップST1−4へ進む。
【0127】
ステップST1−2では、割り込み処理によるタスク切り替えに対応するように、タスクAに対応したタスク情報の資源グループ保存値有効フラグの設定を行う。具体的には、タスクAに対応したタスク情報の資源グループ保存値有効フラグのうち、資源グループ0及び資源グループ1に対応する資源グループ保存値有効フラグの値を「真」にする。なお、タスクAに対応したタスク情報の資源グループ保存値有効フラグのうち、資源グループ2及び資源グループ3に対応する資源グループ保存値有効フラグの値は変更しない。
【0128】
次に、ステップST1−3において、使用許可フラグが存在しない資源グループの資源値を、タスクAに対応した資源値保存領域に保存する。具体的には、資源グループ0及び資源グループ1の資源値を、タスクAに対応した資源値保存領域に保存する。なお、資源グループ2及び資源グループ3については、後述するように浮動小数点演算装置使用許可フラグを用いて資源グループ使用可能性検査を行うことができるので、タスク切り替えの時点では、資源グループ2及び資源グループ3の資源値の保存は行わない。そして、ステップST1−3での処理が完了したら、ステップST1−6へ進む。
【0129】
一方、ステップST1−4では、機能ブロック遷移命令によるタスク切り替えに対応するように、タスクAに対応したタスク情報の資源グループ保存値有効フラグの設定を行う。具体的には、タスクAに対応したタスク情報の資源グループ保存値有効フラグのうち、資源グループ0に対応する資源グループ保存値有効フラグの値を「偽」にし、資源グループ1に対応する資源グループ保存値有効フラグの値を「真」にし、資源グループ2に対応する資源グループ保存値有効フラグの値を「偽」にする。なお、資源グループ3に対応する資源グループ保存値有効フラグの値は変更しない。
【0130】
次に、ステップST1−5において、使用許可フラグが存在しない資源グループの資源値を、タスクAに対応した資源値保存領域に保存する。具体的には、資源グループ1の資源値を、タスクAに対応した資源値保存領域に保存する。なお、使用許可フラグが存在しない資源グループとしては、資源グループ0と資源グループ1とがあるが、機能ブロック遷移命令によるタスク切り替えの場合、資源グループ0の資源値は変更されても構わないので、ここでは、資源グループ0の資源値は保存しない。また、資源グループ2及び資源グループ3については、後述するように浮動小数点演算装置使用許可フラグを用いて資源グループ使用可能性検査を行うことができるので、タスク切り替えの時点では、資源グループ2及び資源グループ3の資源値の保存は行わない。そして、ステップST1−5での処理が完了したら、ステップST1−6へ進む。
【0131】
ステップST1−6以降の処理は、割り込み処理によるタスク切り替えの場合と、機能ブロック遷移命令によるタスク切り替えの場合とで共通であり、先ず、ステップST1−6において、浮動小数点演算装置使用許可フラグの値を、タスクA(すなわち切り替え元のタスク)に対応したタスク情報の資源グループ2−3占有フラグに設定する。
【0132】
次に、ステップST1−7乃至ステップST1−10の処理により、タスクB(すなわち切り替え先のタスク)に対応した資源値保存領域に資源グループ0及び資源グループ1の資源値が保存されている場合には、それらの値を読み出す。すなわち、資源グループ2及び資源グループ3については、資源グループ使用可能性検査が行えるので、資源グループ2及び資源グループ3の資源値の読み込みをタスク切り替えの時点で行う必要はないが、資源グループ0及び資源グループ1については、資源グループ使用可能性検査を行うことができないので、タスク切り替えの時点で、タスクBに対応したタスク情報の資源グループ保存値有効フラグの値に基づいて、資源グループ0及び資源グループ1の資源値の読み込みを行う。
【0133】
具体的には、先ず、ステップST1−7において、タスクBに対応したタスク情報の資源グループ保存値有効フラグのうち、資源グループ保存値有効フラグ0の値を検査する。そして、資源グループ保存値有効フラグ0の値が「真」の場合は、ステップST1−8へ進み、当該ステップST1−8において、資源グループ0の資源値をタスクBに対応した資源値保存領域から読み込み、その後、ステップST1−9へ進む。一方、資源グループ保存値有効フラグ0の値が「偽」の場合は、資源グループ0の資源値の読み込みを行うことなく、ステップST1−9へ進む。
【0134】
次に、ステップST1−9において、タスクBに対応したタスク情報の資源グループ保存値有効フラグのうち、資源グループ保存値有効フラグ1の値を検査する。そして、資源グループ保存値有効フラグ1の値が「真」の場合は、ステップST1−10へ進み、当該ステップST1−10において、資源グループ1の資源値をタスクBに対応した資源値保存領域から読み込み、その後、ステップST1−11へ進む。一方、資源グループ保存値有効フラグ1の値が「偽」の場合は、資源グループ1の資源値の読み込みを行うことなく、ステップST1−11へ進む。
【0135】
次に、ステップST1−11において、浮動小数点演算装置使用許可フラグに、タスクBに対応したタスク情報の資源グループ2−3占有フラグの値を設定する。
【0136】
次に、ステップST1−12において、実行中タスク変数にタスクBに対応した値を設定する。以上の処理で、資源グループの制御に必要な処理と、タスク切り替えの時点で必要な資源値の保存及び読み込みの処理とが完了したこととなる。
【0137】
最後に、ステップST1−13において、その他のタスク切り替え処理を行い、全てのタスク切り替え処理が完了したら、タスクBを起動する。なお、ステップST1−13での処理は、資源の管理に関する処理以外の処理である。したがって、ステップST1−13での処理は、従来のオペレーティングシステムと同様で良く、本発明のポイントではないので、詳細な説明は省略する。
【0138】
なお、ステップST1−12で行うような処理は、実行するタスクを管理するために、従来のオペレーティングシステムにおけるタスク切り替え処理でも行われることが多いが、実行中タスク変数は本発明において使用される変数であるので、ここでは、実行中タスク変数にタスクBに対応した値を設定する処理を、ステップST1−13とは別のステップとして明示した。
【0139】
ところで、従来、図1に示したようなデータ処理装置においてタスク切り替えを行う際は、タスク切り替えを行う毎に、汎用レジスタ及び小数点レジスタの全てについて値の保存及び読み込みを行う必要があるため、1024バイトの資源値の資源値保存領域への保存と、1024バイトの資源値の資源値保存領域からの読み込みとが必要だった。これに対して、上記タスク切り替え処理では、資源を4つの資源グループ0,1,2,3に分割して管理し、必要なものについてだけ、資源値保存領域への保存や資源値保存領域からの読み込みを行うようにしているので、タスク切り替え時のメモリアクセスが非常に少なくて済む。
【0140】
すなわち、上記タスク切り替え処理では、タスク切り替えが割り込み処理によって起動された場合には、切り替え元のタスク(すなわちタスクA)に対応した資源値保存領域への資源値の保存を、資源グループ0及び資源グループ1についてだけ行えば良い。この場合、資源値保存領域への資源値の保存は、512バイトだけで済む。また、タスク切り替えが機能ブロック遷移命令によって起動された場合には、切り替え元のタスク(すなわちタスクA)に対応した資源値保存領域への資源値の保存を、資源グループ1についてだけ行えば良い。この場合、資源値保存領域への資源値の保存は、256バイトだけで済む。
【0141】
また、上記タスク切り替え処理において、資源値保存領域からの資源値の読み込み量が最大となるのは、切り替え先のタスク(すなわちタスクB)に対応したタスク情報の資源グループ保存値有効フラグのうち、資源グループ保存値有効フラグ0及び資源グループ保存値有効フラグ1が「真」の場合であるが、この場合でも、切り替え先のタスクに対応した資源値保存領域からの資源値の読み込みは、資源グループ0及び資源グループ1についてだけ行えば良い。すなわち、上記タスク切り替え処理において、資源値保存領域からの資源値の読み込み量は、最大でも512バイトだけで済む。
【0142】
また、上記タスク切り替え処理において、切り替え先のタスク(すなわちタスクB)に対応したタスク情報の資源グループ保存値有効フラグのうち、資源グループ保存値有効フラグ0が「偽」であり、且つ、資源グループ保存値有効フラグ1が「真」の場合には、切り替え先タスクに対応した資源値保存領域からの資源値の読み込みは、資源グループ1についてだけ行えば良い。この場合、資源値保存領域からの資源値の読み込みは、256バイトだけで済む。
【0143】
なお、切り替え先のタスク(すなわちタスクB)に対応したタスク情報の資源グループ保存値有効フラグのうち、資源グループ保存値有効フラグ0が「真」であり、且つ、資源グループ保存値有効フラグ1が「真」の場合とは、切り替え先のタスクが割り込み処理によるタスク切り替えによって停止していた場合である。また、切り替え先のタスク(すなわちタスクB)に対応したタスク情報の資源グループ保存値有効フラグのうち、資源グループ保存値有効フラグ0が「偽」であり、且つ、資源グループ保存値有効フラグ1が「真」の場合とは、切り替え先のタスクが機能ブロック遷移命令によるタスク切り替えによって停止していた場合である。
【0144】
4−1−6 資源グループ使用可能性検査
つぎに、資源グループ使用可能性検査について、図7のフローチャートを参照して詳細に説明する。
【0145】
資源グループ使用可能性検査は、中央処理装置による命令実行と並行して行われるものである。すなわち、資源グループ使用可能性検査は、タスクの命令を実行しようとする毎に実行される。
【0146】
資源グループ使用可能性検査では、先ず、ステップST2−1において、実行しようとしている命令が浮動小数点演算装置を使用するか否かを判断する。そして、浮動小数点演算装置を使用する場合には、ステップST2−2へ進む。一方、浮動小数点演算装置を使用しない場合には、そのまま資源グループ使用可能性検査を終了して、浮動小数点演算装置を使用することなくタスクの命令を実行する。
【0147】
ステップST2−2では、浮動小数点演算装置使用許可フラグの値を検査する。そして、浮動小数点演算装置使用許可フラグの値が「偽」の場合には、ステップST2−3へ進む。一方、浮動小数点演算装置使用許可フラグの値が「真」の場合には、タスクが浮動小数点演算装置を使用できる状態に既になっているので、資源グループ使用可能性検査を終了して、浮動小数点演算装置を使用してタスクの命令を実行する。
【0148】
ステップST2−3に進むのは、タスクが浮動小数点演算装置を使用できる状態になっていない場合である。そこで、ステップST2−3では、資源グループ占有タスク切り替え処理を行い、タスクが浮動小数点演算装置を使用できるようにする。なお、資源グループ占有タスク切り替え処理については後で詳細に説明する。そして、資源グループ占有タスク切り替え処理により、タスクが浮動小数点演算装置を使用できる状態になったら、資源グループ使用可能性検査を終了して、浮動小数点演算装置を使用してタスクの命令を実行する。
【0149】
以上のような資源グループ使用可能性検査は、中央処理装置による命令実行と並行して行われるものであり、資源グループ占有タスク切り替え処理が起動されない限り、資源グループ使用可能性検査によって処理時間が増加するようなことはない。すなわち、浮動小数点演算装置を使用しないタスクについては、資源グループ占有タスク切り替え処理が起動されることはないので、資源グループ使用可能性検査がタスクの実行速度に悪影響を与えることはない。したがって、浮動小数点演算装置を使用しないタスクは、浮動小数点演算装置に関する資源値の保存や読み込みを行わないことによる処理時間短縮及び資源値保存領域削減の効果のみを受けることとなる。
【0150】
一方、浮動小数点演算装置を使用するタスクにおいては、資源グループ占有タスク切り替え処理が起動される場合がある。そして、資源グループ占有タスク切り替え処理が起動された場合には、資源グループ占有タスク切り替え処理の分だけ、従来に比べて処理量が増加する。
【0151】
ただし、本例では、浮動小数点演算装置を使用しないタスクに切り替えたとき、浮動小数点レジスタの値(すなわち、資源グループ2及び資源グループ3の資源値)について、資源値保存領域への保存や資源値保存領域からの読み込みを行わないようにしており、その分だけ従来に比べて処理量が削減される。すなわち、例えば、浮動小数点演算装置を使用していたタスクが停止してから、当該タスクの実行が再開するまでの間に、他のタスクが浮動小数点演算装置を使用していない場合には、そのまま浮動小数点レジスタの値が保持されるので、タスク切り替えを行う毎に全ての資源値を更新する従来のタスク切り替え方法に比べて、浮動小数点レジスタの値の更新に伴う処理が大幅に削減される。
【0152】
そして、浮動小数点演算装置を使用するタスク同士でよほど頻繁にタスク切り替えを行わない限り、資源グループ占有タスク切り替え処理に伴う処理量の増加よりも、浮動小数点レジスタの値の更新に伴う処理を削減したことによる処理量減少のほうが遥かに寄与が大きい。したがって、タスク切り替えの対象となるタスクに、浮動小数点演算装置を使用するタスクが含まれていたとしても、浮動小数点演算装置を使用するタスク同士でよほど頻繁にタスク切り替えを行わない限りは、本例のほうが従来に比べて処理量が遥かに少なくて済む。
【0153】
4−1−7 資源グループ占有タスク切り替え処理
つぎに、資源グループ占有タスク切り替え処理について、図8のフローチャートを参照して詳細に説明する。
【0154】
資源グループ占有タスク切り替え処理は、上述したように、タスクが資源(本例では浮動小数点レジスタ)を使用しようとしたときに、資源グループ使用可能性検査により、当該資源が使用可能になっていないと判断された場合に実行される。すなわち、タスクが資源を使用しようとしたときに当該資源が使用可能となっていない場合には、資源グループ占有タスク切り替え処理によって、当該資源をタスクが使用可能な状態に変更される。なお、資源グループ占有タスク切り替え処理には、大きく分けて、資源グループの使用権限を変更する処理と、当該資源グループの資源値の保存及び読み込みを行う処理とが含まれる。
【0155】
このような資源グループ占有タスク切り替え処理では、図8のフローチャートに示すように、先ず、ステップST3−1において、資源グループ2−3占有タスク変数が示すタスクに対応したタスク情報(すなわち、浮動小数点演算装置を現在占有しているタスクのタスク情報)を、占有中タスク情報として特定する。
【0156】
次に、ステップST3−2において、占有中タスク情報の資源グループ2−3占有フラグに「偽」の値を設定する。
【0157】
次に、ステップST3−3において、浮動小数点演算装置使用許可フラグに「真」の値を設定する。これにより、現在実行中のタスクに対して、浮動小数点演算装置の使用が許可される。
【0158】
次に、資源グループ2や資源グループ3の資源値を保持する必要がある場合には、ステップST3−4乃至ステップST3−7での処理により、資源グループ2及び資源グループ3を現在占有しているタスクに対応した資源値保存領域に、それらの資源値を保存する。
【0159】
具体的には、先ず、ステップST3−4において、占有中タスク情報の資源グループ保存値有効フラグのうち、資源グループ保存値有効フラグ2を検査する。そして、資源グループ保存値有効フラグ2の値が「真」の場合は、ステップST3−5へ進み、当該ステップST3−5において、資源グループ2の資源値を、占有中タスク情報に対応した資源値保存領域に保存し、その後、ステップST3−6へ進む。一方、資源グループ保存値有効フラグ2の値が「偽」の場合は、資源グループ2の資源値を資源値保存領域に保存することなく、ステップST3−6へ進む。
【0160】
次に、ステップST3−6において、占有中タスク情報の資源グループ保存値有効フラグのうち、資源グループ保存値有効フラグ3を検査する。そして、資源グループ保存値有効フラグ3の値が「真」の場合は、ステップST3−7へ進み、当該ステップST3−7において、資源グループ3の資源値を、占有中タスク情報に対応した資源値保存領域に保存し、その後、ステップST3−8へ進む。一方、資源グループ保存値有効フラグ3の値が「偽」の場合は、資源グループ3の資源値を資源値保存領域に保存することなく、ステップST3−8へ進む。
【0161】
次に、ステップST3−8において、実行中タスク変数が示すタスクに対応したタスク情報(すなわち現在実行中のタスクに対応したタスク情報)を、実行中タスク情報として特定する。
【0162】
次に、現在実行中のタスクに対応した資源値保存領域に、資源グループ2や資源グループ3の資源値として、有効な値が保存されている場合には、ステップST3−9乃至ステップST3−12での処理により、それらの資源値を読み込む。
【0163】
具体的には、先ず、ステップST3−9において、実行中タスク情報の資源グループ保存値有効フラグのうち、資源グループ保存値有効フラグ2を検査する。そして、資源グループ保存値有効フラグ2の値が「真」の場合は、ステップST3−10へ進み、当該ステップST3−10において、資源グループ2の資源値を、実行中タスク情報に対応した資源値保存領域から読み込み、その後、ステップST3−11へ進む。一方、資源グループ保存値有効フラグ2の値が「偽」の場合は、資源グループ2の資源値を資源値保存領域から読み込むことなく、ステップST3−11へ進む。
【0164】
次に、ステップST3−11において、実行中タスク情報の資源グループ保存値有効フラグのうち、資源グループ保存値有効フラグ3を検査する。そして、資源グループ保存値有効フラグ3の値が「真」の場合は、ステップST3−12へ進み、当該ステップST3−12において、資源グループ3の資源値を、実行中タスク情報に対応した資源値保存領域から読み込み、その後、ステップST3−13へ進む。一方、資源グループ保存値有効フラグ3の値が「偽」の場合は、資源グループ3の資源値を資源値保存領域から読み込むことなく、ステップST3−13へ進む。
【0165】
次に、ステップST3−13において、実行中タスク情報の資源グループ保存値有効フラグのうち、資源グループ保存値有効フラグ2及び資源グループ保存値有効フラグ3に「真」の値をする。なお、実行中のタスクに対して資源グループ2及び資源グループ3の使用を許可したからといって、実行中のタスクが資源グループ2と資源グループ3の両方を使用するとは限らない。したがって、実行中のタスクに対して資源グループ2及び資源グループ3の使用を許可したからといって、資源グループ2の資源値と、資源グループ3の資源値の両方を保持する必要があるとは限らない。しかしながら、本例では、タスクが資源グループ2や資源グループ3に属する資源を実際に使用したか否かを判断する手段を設けていない。そこで、本例では、使用可能にした資源については、それらの資源値を全て保持する必要があるものとし、ステップST3−13において、資源グループ保存値有効フラグ2と資源グループ保存値有効フラグ3の両方の値を「真」に設定するようにしている。
【0166】
そして最後に、ステップST3−14において、資源グループ2−3占有タスク変数に実行中タスク変数の値を設定する。
【0167】
以上で資源グループ占有タスク切り替え処理が完了し、現在実行中のタスクが、資源グループ2及び資源グループ3(すなわち浮動小数点レジスタ)を使用することが可能となる。
【0168】
4−2 第2の実施の形態
つぎに、本発明の第2の実施の形態として、本発明を適用した新規なデータ処理装置を用いて行われるタスク切り替えについて説明する。
【0169】
本例では、タスク切り替えに必要な情報を保持するレジスタをデータ処理装置に実装させておく。また、それらのレジスタを用いて行われるタスク切り替えの機構もデータ処理装置に実装させておき、タスク切り替えに伴う処理の大部分をハードウェアによって処理するようにする。
【0170】
このように、タスク切り替えの機構をデータ処理装置に実装させておくことにより、オペレーティングシステムによるソフトウェア処理を大幅に削減することが可能となり、オペレーティングシステムの処理だけでタスク切り替えを行うような場合に比べて、大幅に効率的且つ高速にタスク切り替えを行うことができる。
【0171】
4−2−1 データ処理装置の構成
まず、本例において使用されるデータ処理装置について説明する。なお、このデータ処理装置は、本発明を適用した新規なデータ処理装置である。
【0172】
本例において使用されるデータ処理装置は、中央処理装置(CPU:Central Processing Unit)と、浮動小数点演算などの演算命令を高速に実行する浮動小数点演算装置とを備えている。ここで、中央処理装置はキャッシュメモリを備えており、当該キャッシュメモリのキャッシュラインサイズは16バイトである。
【0173】
そして、このデータ処理装置は、タスクが使用可能な資源として、図9に示すように、中央処理装置のレジスタ(以下、汎用レジスタと称する。)と、浮動小数点演算装置のレジスタ(以下、浮動小数点レジスタと称する。)とを備えている。ここで、汎用レジスタは、0〜127番まであり、各汎用レジスタは32ビットの容量を持つ。また、浮動小数点レジスタは、0〜63番まであり、各浮動小数点レジスタは64ビットの容量を持つ。したがって、このデータ処理装置は、汎用レジスタと浮動小数点レジスタとで、合計8192ビット(=1024バイト)の容量を持っている。
【0174】
なお、本例においても、上述した本発明の第1の実施の形態と同様に、データ処理装置によって実行されるプログラムは、機能ブロック遷移命令を実行する際に、汎用レジスタの0〜63番と浮動小数点レジスタの0〜31番は、作業用レジスタとして使用して、呼び出された機能ブロックの処理中に値を変更しても構わないが、汎用レジスタの64〜127番と浮動小数点レジスタの32〜63番は、機能ブロックの処理を終了して当該プログラムの処理を継続する際に、機能ブロックの呼び出し前の値を保持していなければならないという仕様に従っているものとする。
【0175】
また、実行中のタスクがオペレーティングシステムに指示するタスク切り替えの要求については、機能ブロック遷移命令を使用するものとする。
【0176】
また、任意のタイミングで発生する割り込み処理に対応するため、割り込み処理のときには、全ての汎用レジスタ及び浮動小数点レジスタの値を割り込み直前の値に復元してから、通常処理を再開する必要があるものとする。
【0177】
そして、本発明に係るデータ処理装置は、タスクが使用可能な資源を、複数の資源グループに分割して管理することを特徴としており、本例においては、タスクが使用することが可能な資源である汎用レジスタ及び浮動小数点レジスタを、図9に示すように、16の資源グループに分割して管理する。
【0178】
すなわち、このデータ処理装置は、タスクが使用することが可能な資源である汎用レジスタ及び浮動小数点レジスタを、汎用レジスタの0〜15番が属する資源グループ0、汎用レジスタの16〜31番が属する資源グループ1、汎用レジスタの32〜47番が属する資源グループ2、汎用レジスタの48〜63番が属する資源グループ3、汎用レジスタの64〜79番が属する資源グループ4、汎用レジスタの80〜95番が属する資源グループ5、汎用レジスタの96〜111番が属する資源グループ6、汎用レジスタの112〜127番が属する資源グループ7、浮動小数点レジスタの0〜7番が属する資源グループ8、浮動小数点レジスタの8〜15番が属する資源グループ9、浮動小数点レジスタの16〜23番が属する資源グループ10、浮動小数点レジスタの24〜31番が属する資源グループ11、浮動小数点レジスタの32〜39番が属する資源グループ12、浮動小数点レジスタの40〜47番が属する資源グループ13、浮動小数点レジスタの48〜55番が属する資源グループ14、浮動小数点レジスタの56〜63番が属する資源グループ15の16の資源グループに分割して管理する。
【0179】
なお、資源グループ0,1,2,3は、機能ブロック遷移命令によるタスク切り替えを行う際に、機能ブロック遷移命令前の値を保持する必要がない汎用レジスタのグループである。また、資源グループ4,5,6,7は、機能ブロック遷移命令によるタスク切り替えを行う際に、機能ブロック遷移命令前の値を保持する必要がある汎用レジスタのグループである。また、資源グループ8,9,10,11は、機能ブロック遷移命令によるタスク切り替えを行う際に、機能ブロック遷移命令前の値を保持する必要がない浮動小数点レジスタのグループである。また、資源グループ12,13,14,15は、機能ブロック遷移命令によるタスク切り替えを行う際に、機能ブロック遷移命令後の値を保持する必要がある浮動小数点レジスタのグループである。
【0180】
また、このデータ処理装置は、図9に示すように、タスク切り替えに必要な情報を保持するレジスタとして、資源グループ占有タスク変数レジスタと、実行中タスク変数レジスタと、資源グループ使用許可フラグレジスタと、資源グループ使用中フラグレジスタと、資源グループ保存値有効フラグレジスタとを備えている。なお、これらのレジスタは、従来のデータ処理装置には無かったものであり、本発明を適用した図9に示すデータ処理装置において、新規に実装したものである。
【0181】
資源グループ占有タスク変数レジスタには、資源グループ0に対応した資源グループ占有タスク変数(以下、資源グループ占有タスク変数0と称する。)が格納される32ビットの符号無し整数のレジスタと、資源グループ1に対応した資源グループ占有タスク変数(以下、資源グループ占有タスク変数1と称する。)が格納される32ビットの符号無し整数のレジスタと、資源グループ2に対応した資源グループ占有タスク変数(以下、資源グループ占有タスク変数2と称する。)が格納される32ビットの符号無し整数のレジスタと、資源グループ3に対応した資源グループ占有タスク変数(以下、資源グループ占有タスク変数3と称する。)が格納される32ビットの符号無し整数のレジスタと、資源グループ4に対応した資源グループ占有タスク変数(以下、資源グループ占有タスク変数4と称する。)が格納される32ビットの符号無し整数のレジスタと、資源グループ5に対応した資源グループ占有タスク変数(以下、資源グループ占有タスク変数5と称する。)が格納される32ビットの符号無し整数のレジスタと、資源グループ6に対応した資源グループ占有タスク変数(以下、資源グループ占有タスク変数6と称する。)が格納される32ビットの符号無し整数のレジスタと、資源グループ7に対応した資源グループ占有タスク変数(以下、資源グループ占有タスク変数7と称する。)が格納される32ビットの符号無し整数のレジスタと、資源グループ8に対応した資源グループ占有タスク変数(以下、資源グループ占有タスク変数8と称する。)が格納される32ビットの符号無し整数のレジスタと、資源グループ9に対応した資源グループ占有タスク変数(以下、資源グループ占有タスク変数9と称する。)が格納される32ビットの符号無し整数のレジスタと、資源グループ10に対応した資源グループ占有タスク変数(以下、資源グループ占有タスク変数10と称する。)が格納される32ビットの符号無し整数のレジスタと、資源グループ11に対応した資源グループ占有タスク変数(以下、資源グループ占有タスク変数11と称する。)が格納される32ビットの符号無し整数のレジスタと、資源グループ12に対応した資源グループ占有タスク変数(以下、資源グループ占有タスク変数12と称する。)が格納される32ビットの符号無し整数のレジスタと、資源グループ13に対応した資源グループ占有タスク変数(以下、資源グループ占有タスク変数13と称する。)が格納される32ビットの符号無し整数のレジスタと、資源グループ14に対応した資源グループ占有タスク変数(以下、資源グループ占有タスク変数14と称する。)が格納される32ビットの符号無し整数のレジスタと、資源グループ15に対応した資源グループ占有タスク変数(以下、資源グループ占有タスク変数15と称する。)が格納される32ビットの符号無し整数のレジスタとがある。
【0182】
なお、資源グループ占有タスク変数0には、資源グループ0を占有しているタスクがあるときに、当該タスクに対応したタスク情報が格納されている領域の先頭番地が設定される。また、資源グループ占有タスク変数1には、資源グループ1を占有しているタスクがあるときに、当該タスクに対応したタスク情報が格納されている領域の先頭番地が設定される。また、資源グループ占有タスク変数2には、資源グループ2を占有しているタスクがあるときに、当該タスクに対応したタスク情報が格納されている領域の先頭番地が設定される。また、資源グループ占有タスク変数3には、資源グループ3を占有しているタスクがあるときに、当該タスクに対応したタスク情報が格納されている領域の先頭番地が設定される。また、資源グループ占有タスク変数4には、資源グループ4を占有しているタスクがあるときに、当該タスクに対応したタスク情報が格納されている領域の先頭番地が設定される。また、資源グループ占有タスク変数5には、資源グループ5を占有しているタスクがあるときに、当該タスクに対応したタスク情報が格納されている領域の先頭番地が設定される。また、資源グループ占有タスク変数6には、資源グループ6を占有しているタスクがあるときに、当該タスクに対応したタスク情報が格納されている領域の先頭番地が設定される。また、資源グループ占有タスク変数7には、資源グループ7を占有しているタスクがあるときに、当該タスクに対応したタスク情報が格納されている領域の先頭番地が設定される。また、資源グループ占有タスク変数8には、資源グループ8を占有しているタスクがあるときに、当該タスクに対応したタスク情報が格納されている領域の先頭番地が設定される。また、資源グループ占有タスク変数9には、資源グループ9を占有しているタスクがあるときに、当該タスクに対応したタスク情報が格納されている領域の先頭番地が設定される。また、資源グループ占有タスク変数10には、資源グループ10を占有しているタスクがあるときに、当該タスクに対応したタスク情報が格納されている領域の先頭番地が設定される。また、資源グループ占有タスク変数11には、資源グループ11を占有しているタスクがあるときに、当該タスクに対応したタスク情報が格納されている領域の先頭番地が設定される。また、資源グループ占有タスク変数12には、資源グループ12を占有しているタスクがあるときに、当該タスクに対応したタスク情報が格納されている領域の先頭番地が設定される。また、資源グループ占有タスク変数13には、資源グループ13を占有しているタスクがあるときに、当該タスクに対応したタスク情報が格納されている領域の先頭番地が設定される。また、資源グループ占有タスク変数14には、資源グループ14を占有しているタスクがあるときに、当該タスクに対応したタスク情報が格納されている領域の先頭番地が設定される。また、資源グループ占有タスク変数15には、資源グループ15を占有しているタスクがあるときに、当該タスクに対応したタスク情報が格納されている領域の先頭番地が設定される。
【0183】
実行中タスク変数レジスタは、32ビットの符号無し整数のレジスタであり、実行中タスク変数が格納される。ここで、実行中タスク変数は、現在実行中のタスクに対応したタスク情報が格納されている領域の先頭番地を示す変数である。すなわち、タスクが実行されているとき、実行中タスク変数レジスタには、当該タスクに対応したタスク情報が格納されている領域の先頭番地が、実行中タスク変数として設定される。
【0184】
資源グループ使用許可フラグレジスタは、16ビットの符号無し整数のレジスタであり、16個の資源グループ使用許可フラグが格納される。ここで、資源グループ使用許可フラグは、資源グループの使用を許可するか否かを示すフラグであり、資源グループ使用許可フラグレジスタを構成する16個の各ビットは、16に分割された各資源グループに対応した、16個の独立した資源グループ使用許可フラグとして扱われる。
【0185】
なお、資源グループ使用許可フラグには、実行中のタスクが対応する資源グループを使用可能の場合に「真」の値が設定され、使用可能でない場合に「偽」の値が設定される。したがって、例えば、資源グループ2を使用可能の場合、資源グループ2に対応した資源グループ使用許可フラグに「真」の値が設定され、また、例えば、資源グループ5を使用可能でない場合、資源グループ5に対応した資源グループ使用許可フラグに「偽」の値が設定される。
【0186】
資源グループ使用中フラグレジスタは、16ビットの符号無し整数のレジスタであり、16個の資源グループ使用中フラグが格納される。ここで、資源グループ使用中フラグは、資源グループを使用中のタスクが存在しているか否かを示すフラグであり、資源グループ使用中フラグレジスタを構成する16個の各ビットは、16に分割された各資源グループに対応した、16個の独立した資源グループ使用中フラグとして扱われる。
【0187】
なお、資源グループ使用中フラグには、いずれかのタスクが対応する資源グループが使用中の場合に「真」の値が設定され、使用中でない場合に「偽」の値が設定される。したがって、例えば、資源グループ4を使用中の場合、資源グループ4に対応した資源グループ使用中フラグに「真」の値が設定され、また、例えば、資源グループ10を使用していない場合、資源グループ10に対応した資源グループ使用中フラグに「偽」の値が設定される。
【0188】
資源グループ保存値有効フラグレジスタは、16ビットの符号無し整数のレジスタであり、16個の資源グループ保存値有効フラグが格納される。ここで、資源グループ保存値有効フラグは、実行中のタスクにおいて、各資源グループの資源値として有効な値が、資源グループの各資源或いは対応する資源値保存領域に存在するか否かを示すフラグであり、資源グループ保存値有効フラグレジスタを構成する16個の各ビットは、16に分割された各資源グループに対応した、16個の独立した資源グループ保存値有効フラグとして扱われる。
【0189】
なお、資源グループ保存値有効フラグには、実行中のタスクについて、対応する資源グループの資源値として有効な値が、資源グループの各資源が保持しているか、或いは資源値保存領域に保存されている場合に、「真」の値が設定され、有効な値が保存されていない場合に「偽」の値が設定される。したがって、例えば、資源グループ6の資源値として有効な値が保存されている場合、資源グループ6に対応した資源グループ保存値有効フラグに「真」の値が設定され、また、例えば、資源グループ15の資源値として有効な値が保存されていない場合、資源グループ15に対応した資源グループ保存値有効フラグに「偽」の値が設定される。
【0190】
なお、以上のようにデータ処理装置に新規に実装したレジスタのうち、少なくとも実行中タスク変数レジスタ、資源グループ使用許可フラグレジスタ、資源グループ使用中フラグレジスタ及び資源グループ保存値有効フラグレジスタは、オペレーティングシステムによる読み出しや書き込みができるようにしておく。
【0191】
4−2−2 タスク情報と資源値保存領域
本例においても、複数のタスクを並行して実行する際に、タスク情報を保存するためのタスク情報保存領域と、タスクの実行に使用される資源の状態を示す資源値を保存するための資源値保存領域とを、メモリ上にタスク毎に確保する。以下、このようにメモリ上にタスク毎に確保されるタスク情報保存領域及び資源値保存領域について、図10を参照して詳細に説明する。
【0192】
4−2−2−1 タスク情報保存領域
タスク情報保存領域は、タスク情報を保存するための領域であり、タスク情報保存領域に格納されるタスク情報は、一つのタスクに対して一つ存在する。これらのタスク情報は、上述した本発明の第1の実施の形態と同様に、タスクの数に応じた配列としてメモリ上にまとめて保存され、当該配列の添え字を用いて各タスク情報を参照できるようになされる。すなわち、各タスク情報はそれぞれ配列要素としてメモリ上に保存され、各配列要素が保存される領域が、それぞれタスク情報保存領域に対応している。このようにタスク情報を配列としてメモリ上にまとめて保存しておけば、メモリを有効に活用することができ、しかも、各タスク情報に高速にアクセスすることができる。
【0193】
また、各タスク情報保存領域は、図10に示すように、タスク制御情報領域と、資源制御情報領域とを有している。ここで、タスク制御情報領域は、タスクを制御するのに必要なタスク制御情報が保存される領域である。タスク制御情報領域に保存されるタスク制御情報は、本発明のポイントとなるものではなく、従来のシステムで使用されていたものと同様で良いので、ここでは詳細な説明は省略する。
【0194】
一方、資源制御情報領域は、タスクで使用される資源を制御するのに必要な資源制御情報が保存される領域であり、従来のシステムには無かったものである。この資源制御情報領域には、タスクで使用される資源を制御するのに必要な資源制御情報として、資源グループ占有フラグと、資源グループ保存値有効フラグと、資源値保存領域先頭番地と、最大保存位置と、保存位置配列とが保存される。
【0195】
資源制御情報のうち、資源グループ占有フラグは、タスクが資源グループを占有しているか否かを資源グループ毎に示すフラグであり、各資源グループに対応するように16ビットのフラグとなっている。すなわち、あるタスクが資源グループのいずれかを占有しているとき、当該タスクに対応するタスク情報の資源グループ占有フラグは、当該タスクが占有している資源グループに対応するビットが「真」の値に設定される。なお、占有していない資源グループに対応するビットは「偽」の値に設定される。
【0196】
また、資源制御情報のうち、資源グループ保存値有効フラグは、有効な値が資源値保存領域に保存されているか否かを資源グループ毎に示すフラグであり、各資源グループに対応するように16ビットのフラグとなっている。すなわち、資源値保存領域に資源グループの資源値として有効な値が保存されているとき、当該資源値保存領域に対応したタスク情報の資源グループ保存値有効フラグは、有効な値が保存されている資源グループに対応するビットが「真」の値に設定される。なお、有効な値が保存されていない資源グループに対応するビットは「偽」の値に設定される。
【0197】
なお、タスクの実行を終了するときには、資源値の資源値保存領域への保存を行わずに、当該タスクに対応するタスク情報の資源グループ保存値有効フラグの値をすべて「偽」の値に設定する。これにより、無用な資源値の保存を行わなくて済むようになる。
【0198】
また、資源制御情報のうち、資源値保存領域先頭番地には、資源値保存領域のメモリ上での先頭番地を示す値が設定される。従来は、図20に示したように、タスク制御情報領域と資源値保存領域とがメモリ上で一連の領域とされていた。これに対して、本例では、タスク制御情報領域と資源値保存領域とをそれぞれ別々にメモリ上に確保するようにしている。そこで、本例では、資源値保存領域の場所が分かるように、資源制御情報として、資源値保存領域先頭番地を保存しておく。
【0199】
また、資源制御情報のうち、最大保存位置には、いくつの資源グループについて資源値保存領域が確保済みであるかを示す値が設定される。すなわち、例えば、図10に示すように、3つの資源グループについて、それらの資源グループの資源値を保存するための領域が資源値保存領域に確保されている場合、当該資源値保存領域に対応したタスク情報の最大保存位置には「3」が設定される。
【0200】
また、資源制御情報のうち、保存位置配列には、資源値の保存位置を示す値が資源グループ毎に設定される。例えば、図10に示すように、資源値保存領域の先頭に資源グループ0の資源値が保存されており、資源値保存領域の2番目に資源グループ8の資源値が保存されており、資源値保存領域の3番目に資源グループ2の資源値が保存されているとする。この場合、当該資源値保存領域に対応したタスク情報の保存位置配列のうち、資源グループ0に対応する値が、資源値保存領域の先頭を示す値「0」に設定され、資源グループ8に対応する値が、資源値保存領域の2番目を示す値「1」に設定され、資源グループ2に対応する値が、資源値保存領域の3番目を示す値「2」に設定される。なお、資源値保存領域に資源値が保存されていない資源グループについては、資源値保存領域に資源値が保存されていないことを示す値「16」が設定される。
【0201】
4−2−2−2 資源値保存領域
資源値保存領域には、当該資源値保存領域に対応するタスクの実行に使用される資源の状態を示す資源値が保存される。ただし、資源値保存領域には、全ての資源の資源値が保存されるとは限らず、資源グループ単位で必要なものだけが保存される。
【0202】
なお、従来のタスク切り替え方法では、全てのタスクについて全ての資源の資源値を資源値保存領域に保存するようにしていた。したがって、図10に示したようなデータ処理装置を使用する場合には、タスク一つあたりの資源値保存領域として、全ての汎用レジスタ及び浮動小数点レジスタの分のメモリ、すなわち1024バイトのメモリが必要であった。一方、本例では、資源を資源グループに分割して管理し、資源値保存領域には、資源値を保持すべき資源を含む資源グループについてだけ、資源値を保存するようにしている。したがって、本例では、従来のタスク切り替え方法に比べて、資源値の保存を大幅に削減することができる。
【0203】
このように、本例では、資源を資源グループに分割して管理し、資源値保存領域には、資源値を保持すべき資源を含む資源グループについてだけ、資源値を保存するようにする。これにより、タスク切り替えを行ったときにメモリに保存すべきデータ量を大幅に削減することができ、タスク切り替え時のメモリアクセスを大幅に削減することができる。
【0204】
なお、資源値保存領域への資源値の格納は資源グループ単位で行われるが、このとき、各資源グループの資源値はタスク情報の資源値保存領域先頭番地が示すメモリ番地から順次格納していく。すなわち、例えば、最初に資源グループ0の資源値を保存することとなった場合には、タスク情報の資源値保存領域先頭番地が示すメモリ番地から、資源グループ0の資源値を順次格納し、次に、資源グループ8の資源値を保存することとなった場合には、資源グループ0の資源値が格納されている領域の直ぐ後に、資源グループ8の資源値を順次格納し、次に、資源グループ2の資源値を保存することとなった場合には、資源グループ8の資源値が格納されている領域の直ぐ後に、資源グループ2の資源値を順次格納する。なお、図10は、このようにして資源グループ0、資源グループ8、資源グループ2の資源値が順次格納された状態を示している。
【0205】
4−2−3 タスク切り替え
つぎに、図9に示したようなデータ処理装置を用いて行われるタスク切り替え方法について詳細に説明する。なお、ここで言うタスク切り替え方法とは、本発明を適用したタスク切り替えの一連の処理全体を指しており、換言すれば、後述するタスク切り替え処理、資源グループ使用可能性検査及び資源グループ占有タスク切り替え処理の3つの処理を示している。
【0206】
なお、図9に示したようなデータ処理装置を用いる場合、タスク切り替えは、資源グループ使用許可フラグを使用して行うことも、資源グループ使用許可フラグを使用しないで行うことも可能である。そこで、以下の説明では、資源グループ使用許可フラグを使用してタスク切り替えを行う場合と、資源グループ使用許可フラグを使用しないでタスク切り替えを行う場合とについて、それぞれ説明する。
【0207】
4−2−3−1 資源グループ使用許可フラグを使用する場合
まず、図9に示したようなデータ処理装置を用いて行われるタスク切り替えについて、資源グループ使用許可フラグを使用してタスク切り替えを行う場合について説明する。
【0208】
4−2−3−1−1 タスク切り替え時のオペレーティングシステムの処理
まず、タスク切り替えを行うときに、オペレーティングシステムによって実行される処理について、図11のフローチャートを参照して説明する。なお、ここでは、タスクAからタスクBへのタスク切り替えを行うものとして説明する。
【0209】
タスクAからタスクBへのタスク切り替えを行うとき、オペレーティングシステムは、先ず、ステップST4−1において、タスクB(すなわち切り替え先のタスク)に対応したタスク情報が格納されているタスク情報保存領域の先頭番地(以下、先頭番地Kと称する。)を計算する。なお、フローチャートでは、先頭番地Kのことを単に「K」と表記している。
【0210】
次に、ステップST4−2において、実行中タスク変数レジスタが示すタスク情報(すなわちタスクAのタスク情報)の資源グループ占有フラグに、データ処理装置の資源グループ使用許可フラグレジスタの値を書き込む。
【0211】
次に、ステップST4−3において、実行中タスク変数レジスタが示すタスク情報(すなわちタスクAのタスク情報)の資源グループ保存値有効フラグに、データ処理装置の資源グループ保存値有効フラグレジスタの値を書き込む。
【0212】
次に、ステップST4−4において、実行中タスク変数レジスタに、ステップST4−1で計算した先頭番地Kの値を設定する。
【0213】
次に、ステップST4−5において、実行中タスク変数レジスタが示すタスク情報(すなわちタスクBのタスク情報)の資源グループ使用許可フラグの値を読み込み、その値を資源グループ使用許可フラグレジスタに設定する。
【0214】
次に、ステップST4−6において、実行中タスク変数レジスタが示すタスク情報(すなわちタスクBのタスク情報)の資源グループ保存値有効フラグの値を読み込み、その値を資源グループ保存値有効フラグレジスタに設定する。
【0215】
最後に、ステップST4−7において、その他のタスク切り替え処理を行い、全てのタスク切り替え処理が完了したら、タスクBを起動する。なお、ステップST4−7での処理は、資源の管理に関する処理以外の処理である。したがって、ステップST4−7での処理は、従来のオペレーティングシステムと同様で良く、本発明のポイントではないので、詳細な説明は省略する。
【0216】
以上のように、タスク切り替えの時点で資源値の制御のためにオペレーティングシステムが行うべき処理は、実行中タスク変数やフラグの書き換えだけであり、非常に僅かである。しかも、資源値の保存や読み込みを行わないので、メモリアクセスも非常に少なくて済み、読み書きともに4バイトずつしか発生しない。従来は、タスク切り替えの時点で全ての資源値について保存と読み込みを行っていたので、タスク切り替え毎に1024バイトずつの読み書きが発生していた。すなわち、本例では、従来に比べて、タスク切り替え時のメモリアクセスが1/256にまで低減されている。
【0217】
このように、タスク切り替えの時点での処理が大幅に削減されるのは、資源値を制御する機構をデータ処理装置に実装させているためである。すなわち、資源値の制御に伴う機構をデータ処理装置に実装させることにより、非常に効率的且つ高速なタスク切り替えを実現することが可能となる。
【0218】
4−2−3−1−2 データ処理装置に実装される機構
本例では、上述したように、タスク切り替えの時点においてオペレーティングシステムが行うべき処理は、実行中タスク変数やフラグの書き換えだけであり、タスク切り替えの時点では資源値の保存や読み込みは行わない。その代わり、タスクが資源を使用しようとするときに、当該資源をタスクが使用可能であるかを検査し、必要に応じて資源値の保存や読み込み等の処理を行い、タスクが資源を使用できるようにする。
【0219】
そして、本例では、このような処理を実現するために、資源グループ使用可能性検査を行う機構と、資源グループ占有タスク切り替え処理を行う機構と、資源グループ保存処理を行う機構と、資源グループ読み込み処理を行う機構と、資源グループ保存領域確保処理を行う機構とをデータ処理装置にハードウェアとして実装しておく。
【0220】
以下、このようにデータ処理装置にハードウェアとして実装された機構によって実行される各処理について説明する。
【0221】
4−2−3−1−2−1 資源グループ使用可能性検査
まず、資源グループ使用可能性検査について、図12のフローチャートを参照して詳細に説明する。
【0222】
資源グループ使用可能性検査は、中央処理装置による命令実行と並行して行われるものである。すなわち、資源グループ使用可能性検査は、タスクの命令を実行しようとする毎に実行される。
【0223】
資源グループ使用可能性検査では、先ず、ステップST5−1において、実行しようとしている命令が、機能ブロック遷移命令であるか否かを判断する。そして、機能ブロック遷移命令の場合には、ステップST5−2及びステップST5−3の処理を行い、その後、ステップST5−4へ進む。一方、機能ブロック遷移命令ではない場合には、直ぐに、ステップST5−4へ進む。
【0224】
ステップST5−2では、資源グループ0〜3及び資源グループ8〜11に対応する資源グループ使用中フラグレジスタのうち、対応する資源グループ使用許可フラグレジスタの値が「真」のものに「偽」の値を設定する。具体的には、例えば、資源グループ2に対応する資源グループ使用許可フラグレジスタの値が「真」の場合には、資源グループ2に対応する資源グループ使用中フラグレジスタに「偽」の値を設定する。このように資源グループ使用中フラグレジスタの値を設定しておくことにより、実行中のタスクが現在占有使用している資源グループのうち、資源値の保持が不要な資源グループについては、資源値の資源値保存領域への保存が行われなくなる。
【0225】
また、ステップST5−3では、資源グループ0〜3及び資源グループ8〜11に対応する資源グループ保存値有効フラグレジスタに「偽」の値を設定する。このように資源グループ保存値有効フラグレジスタの値を設定しておくことにより、不要な資源値については、資源値保存領域からの読み込みが行われなくなる。
【0226】
以上のように、実行しようとする命令が機能ブロック遷移命令のときには、ステップST5−2及びステップST5−3での処理を行うことにより、不要な資源値の保存や読み込みを省略することが可能となり、資源値の保存や読み込みを従来に比べて約5割削減できる。
【0227】
ステップST5−4では、実行しようとしている命令が、資源を使用するか否かを判断する。そして、資源を使用する場合は、ステップST5−5へ進む。一方、資源を使用しない場合は、資源グループ使用可能性検査を終了し、タスクの命令を実行する。
【0228】
ステップST5−5においては、実行しようとしている命令が使用する資源が属する資源グループを特定する。なお、以下の説明では、ステップST5−5において特定された資源グループのことを「index番の資源グループ」と称する。すなわち、実行しようとしている命令は、index番の資源グループに属する資源を使用する。
【0229】
次に、ステップST5−6において、資源グループ使用許可フラグレジスタに格納されている資源グループ使用許可フラグの中から、index番の資源グループに対応した資源グループ使用許可フラグを特定する。なお、以下の説明では、ステップST5−6において特定された資源グループ使用許可フラグのことを「資源グループ使用許可フラグJ」と称する。また、フローチャートでは、資源グループ使用許可フラグJのことを単に「J」と表記している。
【0230】
次に、ステップST5−7において、資源グループ使用中フラグレジスタに格納されている資源グループ使用中フラグの中から、index番の資源グループに対応した資源グループ使用中フラグを特定する。なお、以下の説明では、ステップST5−7において特定された資源グループ使用中フラグのことを「資源グループ使用中フラグL」と称する。また、フローチャートでは、資源グループ使用中フラグLのことを単に「L」と表記している。
【0231】
次に、ステップST5−8において、資源グループ保存値有効フラグレジスタに格納されている資源グループ保存値有効フラグの中から、index番の資源グループに対応した資源グループ保存値有効フラグを特定する。なお、以下の説明では、ステップST5−8において特定された資源グループ保存値有効フラグのことを「資源グループ保存値有効フラグM」と称する。また、フローチャートでは、資源グループ保存値有効フラグMのことを単に「M」と表記している。
【0232】
次に、ステップST5−9において、資源グループ使用許可フラグJの値を検査する。そして、資源グループ使用許可フラグJの値が「偽」の場合には、ステップST5−10へ進み、資源グループ使用許可フラグJの値が「真」の場合には、ステップST5−12へ進む。
【0233】
ステップST5−10では、資源グループ占有タスク変数レジスタに格納されている資源グループ占有タスク変数の中から、index番の資源グループに対応した資源グループ占有タスク変数を特定する。なお、以下の説明では、ステップST5−10において特定された資源グループ占有タスク変数のことを「資源グループ占有タスク変数K」と称する。また、フローチャートでは、資源グループ占有タスク変数Kのことを単に「K」と表記している。
【0234】
次に、ステップST5−11において、資源グループ占有タスク切り替え処理を行う。なお、資源グループ占有タスク切り替え処理については、後で詳細に説明する。そして、資源グループ占有タスク切り替え処理が終了したら、ステップST5−12へ進む。
【0235】
ステップST5−12では、資源グループ使用許可フラグJに「真」の値を設定し、資源グループ使用中フラグLに「真」の値を設定し、資源グループ保存値有効フラグMに「真」の値を設定する。これにより、現在実行中のタスクはindex番の資源グループに属する資源を使用中であることが、資源グループ使用中フラグレジスタ及び資源グループ保存値有効フラグレジスタに記録されることとなる。そして、ステップST5−12での処理が完了したら、ステップST5−13へ進む。
【0236】
ステップST5−13では、実行しようとしている命令が、他の資源グループを使用するか否かを判定する。そして、他の資源グループを使用する場合には、ステップST5−5へ戻って、当該資源グループについての検査を行う。一方、他の資源グループを使用しない場合には、資源グループ使用可能性検査を終了し、タスクの命令を実行する。
【0237】
なお、以上のように資源グループ使用可能性検査を行ったとき、資源グループ占有タスク切り替え処理が起動されるのは、資源グループ使用許可フラグJの値が「偽」の場合だけであり、資源グループ使用許可フラグJの値が「真」の場合には、資源グループ占有タスク切り替え処理は起動されない。換言すれば、資源グループ占有タスク切り替え処理が起動されるのは、タスクが実行しようとしている命令が資源を使用しようとしたが、当該資源の使用が許可されていない場合である。
【0238】
4−2−3−1−2−2 資源グループ占有タスク切り替え処理
つぎに、資源グループ占有タスク切り替え処理について、図13のフローチャートを参照して詳細に説明する。なお、資源グループ占有タスク切り替え処理は、上述したように、資源グループ使用可能性検査のステップST5−11において呼び出されて起動される処理である。
【0239】
資源グループ占有タスク切り替え処理では、先ず、ステップST6−1において、資源グループ使用中フラグLの値を検査する。そして、資源グループ使用中フラグLの値が「真」の場合には、ステップST6−2へ進み、資源グループ使用中フラグLの値が「偽」の場合には、ステップST6−3へ進む。
【0240】
ステップST6−2では、資源グループ保存処理を行う。なお、資源グループ保存処理については、後で詳細に説明する。そして、資源グループ保存処理が終了したら、ステップST6−3へ進む。
【0241】
ステップST6−3では、資源グループ占有タスク変数Kに、実行中タスク変数の値を設定する。
【0242】
次に、ステップST6−4において、資源グループ保存値有効フラグMの値を検査する。そして、資源グループ保存値有効フラグMの値が「真」の場合には、ステップST6−5へ進み、資源グループ保存値有効フラグMの値が「偽」の場合には、ステップST6−6へ進む。
【0243】
ステップST6−5では、資源グループ読み込み処理を行う。なお、資源グループ読み込み処理については、後で詳細に説明する。そして、資源グループ読み込み処理が終了したら、資源グループ占有タスク切り替え処理を終了する。
【0244】
また、ステップST6−6では、資源グループ保存領域確保処理を行う。なお、資源グループ保存領域確保処理については、後で詳細に説明する。そして、資源グループ保存領域確保処理が終了したら、資源グループ占有タスク切り替え処理を終了する。
【0245】
4−2−3−1−2−3 資源グループ保存処理
つぎに、資源グループ保存処理について、図14のフローチャートを参照して詳細に説明する。なお、資源グループ保存処理は、上述したように、資源グループ占有タスク切り替え処理のステップST6−2において呼び出されて起動される処理である。
【0246】
資源グループ保存処理では、先ず、ステップST7−1において、資源グループ占有タスク変数Kの示すタスク情報の保存位置配列のうち、index番の資源グループに対応した保存位置配列の値を読み出す。なお、以下の説明では、ステップST7−1において読み出した保存位置配列の値を「保存位置配列値P1」と称する。また、フローチャートでは、保存位置配列値P1のことを単に「P1」と表記している。なお、保存位置配列値P1は、index番の資源グループの資源値が、資源値保存領域中の何番目のブロックに保存されるかを示している。
【0247】
次に、ステップST7−2において、資源グループ占有タスク変数Kの示すタスク情報の資源値保存領域先頭番地の値を読み出し、その値に保存位置配列値P1を64倍した値を加えた値を計算する。なお、以下の説明では、ステップST7−2において計算された値を「保存番地Q1」と称する。また、フローチャートでは、保存番地Q1のことを単に「Q1」と表記している。なお、保存番地Q1は、index番の資源グループの資源値を保存する領域の先頭のメモリ番地を示している。
【0248】
次に、ステップST7−3において、index番の資源グループの資源値を、保存番地Q1を先頭番地とする領域に保存する。
【0249】
以上で、資源グループ保存処理が完了し、index番の資源グループの資源値が、資源値保存領域の所定の位置に保存される。
【0250】
4−2−3−1−2−4 資源グループ読み込み処理
つぎに、資源グループ読み込み処理について、図15のフローチャートを参照して詳細に説明する。なお、資源グループ読み込み処理は、上述したように、資源グループ占有タスク切り替え処理のステップST6−5において呼び出されて起動される処理である。
【0251】
資源グループ読み込み処理では、先ず、ステップST8−1において、実行中タスク変数の示すタスク情報の保存位置配列のうち、index番の資源グループに対応した保存位置配列の値を読み出す。なお、以下の説明では、ステップST8−1において読み出した保存位置配列の値を「保存位置配列値P2」と称する。また、フローチャートでは、保存位置配列値P2のことを単に「P2」と表記している。なお、保存位置配列値P2は、index番の資源グループの資源値が、資源値保存領域中の何番目のブロックに保存されているかを示している。
【0252】
次に、ステップST8−2において、実行中タスク変数の示すタスク情報の資源値保存領域先頭番地の値を読み出し、その値に保存位置配列値P2を64倍した値を加えた値を計算する。なお、以下の説明では、ステップST8−2において計算された値を「保存番地Q2」と称する。また、フローチャートでは、保存番地Q2のことを単に「Q2」と表記している。なお、保存番地Q2は、index番の資源グループの資源値が保存されている領域の先頭のメモリ番地を示している。
【0253】
次に、ステップST8−3において、index番の資源グループの資源値を、保存番地Q2を先頭番地とする領域から読み込む。
【0254】
以上で、資源グループ読み込み処理が完了し、index番の資源グループの資源値が、資源値保存領域から読み込まれる。
【0255】
4−2−3−1−2−5 資源グループ保存領域確保処理
つぎに、資源グループ保存領域確保処理について、図16のフローチャートを参照して詳細に説明する。なお、資源グループ保存領域確保処理は、上述したように、資源グループ占有タスク切り替え処理のステップST6−6において呼び出されて起動される処理である。
【0256】
資源グループ保存領域確保処理では、先ず、ステップST9−1において、実行中タスク変数の示すタスク情報の保存位置配列のうち、index番の資源グループに対応した保存位置配列の値を読み出す。なお、以下の説明では、ステップST9−1において読み出した保存位置配列の値を「保存位置配列値P3」と称する。また、フローチャートでは、保存位置配列値P3のことを単に「P3」と表記している。
【0257】
次に、ステップST9−2において、実行中タスク変数の示すタスク情報の最大保存位置の値を読み出す。なお、以下の説明では、ステップST9−2において読み出し最大保存位置の値を「最大保存位置R」と称する。また、フローチャートでは、最大保存位置Rのことを単に「R」と表記している。
【0258】
次に、ステップST9−3において、保存位置配列値P3と最大保存位置Rとを比較する。このとき、保存位置配列値P3が最大保存位置Rよりも小さくなるのは、index番の資源グループの資源値を保存する領域が、資源値保存領域に既に確保されている場合である。したがって、保存位置配列値P3が最大保存位置Rよりも小さい場合には、資源グループ保存領域確保処理を終了する。
【0259】
一方、ステップST9−3において、保存位置配列値P3が最大保存位置R以上となるのは、index番の資源グループの資源値を保存する領域が、資源値保存領域に未だ確保されていない場合である。したがって、保存位置配列値P3が最大保存位置R以上となっている場合には、index番の資源グループの資源値を保存する領域を確保するため、資源グループ保存領域確保処理を継続し、ステップST9−4へ進む。
【0260】
ステップST9−4では、実行中タスク変数の示すタスク情報の資源値保存領域先頭番地の値を読み出し、その値に最大保存位置Rに1を加算した値を64倍した値を加えた値を計算する。なお、以下の説明では、ステップST9−6において計算された値を「保存番地Q3」と称する。すなわち、実行中タスク変数の示すタスク情報の資源値保存領域先頭番地の値をA、最大保存位置RをRとしたとき、保存番地Q3=A+{(R+1)×64}である。なお、フローチャートでは、保存番地Q3のことを単に「Q3」と表記している。
【0261】
次に、ステップST9−5において、保存番地Q3が、タスクがスタックとして使用しているメモリ領域(以下、スタック変数領域と称する。)の先頭よりも手前であるか否かを判断する。このとき、保存番地Q3がスタック変数領域の先頭よりも手前でないと判断されるのは、未使用領域が不足し、index番の資源グループの資源値を保存する領域を確保できない場合である。したがって、保存番地Q3がスタック変数領域の先頭よりも手前でない場合には、スタック領域不足例外処理を起動する。なお、スタック領域不足例外処理は、未使用領域の不足に対処するための例外処理であるが、未使用領域の不足に対する対処の仕方には様々な手法が考えられるし、このような例外処理は本発明のポイントではないので、ここでは詳細な説明は省略する。
【0262】
一方、ステップST9−5において、保存番地Q3がスタック変数領域の先頭よりも手前であると判断されるのは、未使用領域が十分にあり、index番の資源グループの資源値を保存する領域を確保できる場合である。したがって、保存番地Q3がスタック変数領域の先頭よりも手前である場合には、index番の資源グループの資源値を保存する領域を確保するため、資源グループ保存領域確保処理を継続し、ステップST9−6へ進む。
【0263】
ステップST9−6では、実行中タスク変数の示すタスク情報の保存位置配列のうち、index番の資源グループに対応した保存位置配列に、実行中タスク変数の示すタスク情報の最大保存位置の値(すなわち最大保存位置R)を書き込む。
【0264】
次に、ステップST9−7において、実行中タスク変数の示すタスク情報の最大保存位置に、最大保存位置Rに1を加算した値を書き込む。換言すれば、ステップST9−7では、実行中タスク変数の示すタスク情報の最大保存位置の値を1だけ大きくする。
【0265】
以上で、資源グループ保存領域確保処理が完了し、index番の資源グループの資源値を保存する領域が確保される。
【0266】
4−2−3−2 資源グループ使用許可フラグを使用しない場合
つぎに、図9に示したようなデータ処理装置を用いて行われるタスク切り替えについて、資源グループ使用許可フラグを使用しないでタスク切り替えを行う場合について説明する。
【0267】
4−2−3−2−1 タスク切り替え時のオペレーティングシステムの処理
まず、タスク切り替えを行うときに、オペレーティングシステムによって実行される処理について、図17のフローチャートを参照して説明する。なお、ここでは、タスクAからタスクBへのタスク切り替えを行うものとして説明する。
【0268】
タスクAからタスクBへのタスク切り替えを行うとき、オペレーティングシステムは、先ず、ステップST10−1において、タスクB(すなわち切り替え先のタスク)に対応したタスク情報が格納されているタスク情報保存領域の先頭番地(以下、先頭番地Kと称する。)を計算する。なお、フローチャートでは、先頭番地Kのことを単に「K」と表記している。
【0269】
次に、ステップST10−2において、実行中タスク変数の示すタスク情報(すなわちタスクAのタスク情報)の資源グループ保存値有効フラグに、資源グループ保存値有効フラグレジスタの値を書き込む。
【0270】
次に、ステップST10−3において、実行中タスク変数レジスタに、ステップST10−1で計算した先頭番地Kの値を設定する。
【0271】
次に、ステップST10−4において、実行中タスク変数の示すタスク情報(すなわちタスクBのタスク情報)の資源グループ保存値有効フラグの値を読み込み、その値を資源グループ保存値有効フラグレジスタに設定する。
【0272】
最後に、ステップST10−5において、その他のタスク切り替え処理を行い、全てのタスク切り替え処理が完了したら、タスクBを起動する。なお、ステップST10−5での処理は、資源の管理に関する処理以外の処理である。したがって、ステップST10−5での処理は、従来のオペレーティングシステムと同様で良く、本発明のポイントではないので、詳細な説明は省略する。
【0273】
以上のように、タスク切り替えの時点で資源値の制御のためにオペレーティングシステムが行うべき処理は、実行中タスク変数やフラグの書き換えだけであり、非常に僅かである。しかも、資源値の保存や読み込みを行わないので、メモリアクセスも非常に少なくて済み、読み書きともに2バイトずつしか発生しない。従来は、タスク切り替えの時点で全ての資源値について保存と読み込みを行っていたので、タスク切り替え毎に1024バイトずつの読み書きが発生していた。すなわち、本例では、従来に比べて、タスク切り替え時のメモリアクセスが1/512にまで低減されている。
【0274】
このように、タスク切り替えの時点での処理が大幅に削減されるのは、資源値を制御する機構をデータ処理装置に実装させているためである。すなわち、資源値の制御に伴う機構をデータ処理装置に実装させることにより、非常に効率的且つ高速なタスク切り替えを実現することが可能となる。
【0275】
4−2−3−2−2 データ処理装置に実装される機構
本例では、上述したように、タスク切り替えの時点においてオペレーティングシステムが行うべき処理は、実行中タスク変数やフラグの書き換えだけであり、タスク切り替えの時点では資源値の保存や読み込みは行わない。その代わり、タスクが資源を使用しようとするときに、当該資源をタスクが使用可能であるかを検査し、必要に応じて資源値の保存や読み込み等の処理を行い、タスクが資源を使用できるようにする。
【0276】
そして、本例では、このような処理を実現するために、資源グループ使用可能性検査を行う機構と、資源グループ占有タスク切り替え処理を行う機構と、資源グループ保存処理を行う機構と、資源グループ読み込み処理を行う機構と、資源グループ保存領域確保処理を行う機構とをデータ処理装置にハードウェアとして実装しておく。
【0277】
以下、このようにデータ処理装置にハードウェアとして実装された機構によって実行される各処理について説明する。ただし、これらの処理のうち、資源グループ保存処理、資源グループ読み込み処理及び資源グループ保存領域確保処理については、資源グループ使用許可フラグを使用してタスク切り替えを行う場合と同様なので説明は省略する。
【0278】
4−2−3−2−2−1 資源グループ使用可能性検査
まず、資源グループ使用可能性検査について、図18のフローチャートを参照して詳細に説明する。
【0279】
資源グループ使用可能性検査は、中央処理装置による命令実行と並行して行われるものである。すなわち、資源グループ使用可能性検査は、タスクの命令を実行しようとする毎に実行される。
【0280】
資源グループ使用可能性検査では、先ず、ステップST11−1において、実行しようとしている命令が、機能ブロック遷移命令であるか否かを判断する。そして、機能ブロック遷移命令の場合には、ステップST11−2の処理を行い、その後、ステップST11−3へ進む。一方、機能ブロック遷移命令ではない場合には、直ぐに、ステップST11−3へ進む。
【0281】
ステップST11−2では、資源グループ0〜3及び資源グループ8〜11に対応する資源グループ保存値有効フラグレジスタに「偽」の値を設定する。このように資源グループ保存値有効フラグレジスタの値を設定しておくことにより、不要な資源値については、資源値保存領域からの読み込みが行われなくなる。
【0282】
以上のように、実行しようとする命令が機能ブロック遷移命令のときには、ステップST11−2での処理を行うことにより、不要な資源値の保存や読み込みを省略することが可能となり、資源値の保存や読み込みを従来に比べて約5割削減できる。
【0283】
ステップST11−3では、実行しようとしている命令が、資源を使用するか否かを判断する。そして、資源を使用する場合は、ステップST11−4へ進む。一方、資源を使用しない場合は、資源グループ使用可能性検査を終了し、タスクの命令を実行する。
【0284】
ステップST11−4においては、実行しようとしている命令が使用する資源が属する資源グループを特定する。なお、以下の説明では、ステップST11−4において特定された資源グループのことを「index番の資源グループ」と称する。すなわち、実行しようとしている命令は、index番の資源グループに属する資源を使用する。
【0285】
次に、ステップST11−5において、資源グループ占有タスク変数レジスタに格納されている資源グループ占有タスク変数の中から、index番の資源グループに対応した資源グループ占有タスク変数を特定する。なお、以下の説明では、ステップST11−5において特定された資源グループ占有タスク変数のことを「資源グループ占有タスク変数K」と称する。また、フローチャートでは、資源グループ占有タスク変数Kのことを単に「K」と表記している。
【0286】
次に、ステップST11−6において、資源グループ保存値有効フラグレジスタに格納されている資源グループ保存値有効フラグの中から、index番の資源グループに対応した資源グループ保存値有効フラグを特定する。なお、以下の説明では、ステップST11−6において特定された資源グループ保存値有効フラグのことを「資源グループ保存値有効フラグM」と称する。また、フローチャートでは、資源グループ保存値有効フラグMのことを単に「M」と表記している。
【0287】
次に、ステップST11−7において、実行中タスク変数と資源グループ占有タスク変数Kとを比較する。なお、フローチャートでは実行中タスク変数のことを「D」と表記している。そして、実行中タスク変数の値と、資源グループ占有タスク変数Kの値とが等しくない場合には、ステップST11−8へ進み、等しい場合には、ステップST11−9へ進む。
【0288】
ステップST11−8では、資源グループ占有タスク切り替え処理を行う。なお、資源グループ占有タスク切り替え処理については、後で詳細に説明する。そして、資源グループ占有タスク切り替え処理が終了したら、ステップST11−9へ進む。
【0289】
ステップST11−9では、資源グループ保存値有効フラグMに「真」の値を設定する。これにより、index番の資源グループの資源値を保持すべき状態になったことが、資源グループ保存値有効フラグレジスタに記録されることとなる。そして、ステップST11−9での処理が完了したら、ステップST11−10へ進む。
【0290】
ステップST11−10では、実行しようとしている命令が、他の資源グループを使用するか否かを判定する。そして、他の資源グループを使用する場合には、ステップST11−4へ戻って、当該資源グループについての検査を行う。一方、他の資源グループを使用しない場合には、資源グループ使用可能性検査を終了し、タスクの命令を実行する。
【0291】
なお、以上のように資源グループ使用可能性検査を行ったとき、資源グループ占有タスク切り替え処理が起動されるのは、実行中タスク変数の値と資源グループ占有タスク変数Kの値とが等しくない場合だけであり、実行中タスク変数の値と資源グループ占有タスク変数Kの値とが等しい場合には、資源グループ占有タスク切り替え処理は起動されない。換言すれば、資源グループ占有タスク切り替え処理が起動されるのは、タスクが実行しようとしている命令が資源を使用しようとしたが、当該資源をタスクが占有していない場合である。
【0292】
4−2−3−2−2−2 資源グループ占有タスク切り替え処理
つぎに、資源グループ占有タスク切り替え処理について、図19のフローチャートを参照して詳細に説明する。なお、資源グループ占有タスク切り替え処理は、上述したように、資源グループ使用可能性検査のステップST11−9において呼び出されて起動される処理である。
【0293】
資源グループ占有タスク切り替え処理では、先ず、ステップST12−1において、資源グループ占有タスク変数Kの示すタスク情報の資源グループ保存値有効フラグのうち、index番の資源グループに対応した資源グループ保存値有効フラグの値を読み出す。なお、以下の説明では、ステップST12−1において読み出された資源グループ保存値有効フラグの値を「資源グループ保存値有効フラグL」と称する。また、フローチャートでは、資源グループ保存値有効フラグLのことを単に「L」と表記している。
【0294】
次に、ステップST12−2において、資源グループ保存値有効フラグLの値を検査する。そして、資源グループ保存値有効フラグLの値が「真」の場合には、ステップST12−3へ進み、資源グループ保存値有効フラグLの値が「偽」の場合には、ステップST12−4へ進む。
【0295】
ステップST12−2では、図14のフローチャートに従って、資源グループ保存処理を行う。そして、資源グループ保存処理が終了したら、ステップST12−4へ進む。
【0296】
ステップST12−4では、資源グループ占有タスク変数Kに、実行中タスク変数の値を設定する。
【0297】
次に、ステップST12−5において、資源グループ保存値有効フラグMの値を検査する。そして、資源グループ保存値有効フラグMの値が「真」の場合には、ステップST12−6へ進み、資源グループ保存値有効フラグMの値が「偽」の場合には、ステップST12−7へ進む。
【0298】
ステップST12−6では、図15のフローチャートに従って、資源グループ読み込み処理を行う。そして、資源グループ読み込み処理が終了したら、資源グループ占有タスク切り替え処理を終了する。
【0299】
また、ステップST12−7では、図16のフローチャートに従って、資源グループ保存領域確保処理を行う。そして、資源グループ保存領域確保処理が終了したら、資源グループ占有タスク切り替え処理を終了する。
【0300】
4−2−3−3 まとめ
以上詳細に説明したように、資源グループ使用許可フラグを使用した場合も、資源グループ使用許可フラグを使用しない場合も、タスク切り替えの時点で資源値の制御のためにオペレーティングシステムが行うべき処理は、実行中タスク変数やフラグの書き換えだけであり、非常に僅かである。しかも、タスク切り替えの時点では、資源値の保存や読み込みを行わないので、タスク切り替え時のメモリアクセスも非常に少なくて済む。すなわち、資源値の制御に伴う機構をデータ処理装置に実装させて、資源値の保存や読み込みをオペレーティングシステムによることなく、ハードウェアでの処理によって実行するようにすることで、タスク切り替えに伴う資源値の保存や読み込みを非常に効率的且つ高速に行うことが可能となる。
【0301】
しかも、以上のようにタスク切り替えを行った場合、資源値の保存や読み込みは、単に先送りされた訳ではなく、起動されるタスクで使用しない資源グループについては、保存も読み込みも完全に省略される。また、使用した資源グループについても、他のタスクが使用しなければ、そのまま値が保持され、保存も読み込みも完全に省略される。また、タスク実行中に機能ブロック遷移命令を実行する都度、破壊しても構わない資源グループについては、資源グループ使用中フラグレジスタや資源グループ保存値有効フラグレジスタを更新し、資源値の保存を行わないようにしている。このように、上記タスク切り替え処理では、資源値の保存や読み込みを極力少なくし、本当に必要なものについてだけ資源値の保存や読み込みを行うようにしており、資源値の保存や読み込みが非常に効率的に行われる。
【0302】
なお、従来のタスク切り替え方法では、メモリへの読み書きがタスク切り替え時に集中し、それがバスのボトルネックの原因となるようなこともあったが、上述のようにタスク切り替えを行った場合には、資源値の保存や読み込みは散発的に行われることとなるため、バスのボトルネックも生じ難い。
【0303】
しかも、上述のようにタスク切り替えを行った場合には、タスク切り替え時の資源値の保存や読み込みが非常に少なく、タスク切り替えが非常に高速に行われるので、割り込み処理等のように高速な起動が必要とされる処理も、タスク切り替えの機構で実現することが可能となる。換言すれば、上述のようにタスク切り替えを行った場合には、割り込み処理をタスク切り替えの機構で行うようにしても、割り込み処理の起動や終了時のオーバーヘッドが非常に少なくて済む。
【0304】
5.本発明のその他の実施の形態
本発明は、上述した例に限定されるものではなく、様々な変形が可能である。
【0305】
例えば、中央処理装置のレジスタの数や、浮動小数点演算装置のレジスタの数などは、特に限定されるものではなく、任意の数で構わない。更に、データ処理装置も、中央処理装置及び浮動小数点演算装置からなるものでなくてもよく、例えば、中央処理装置だけであっても良いし、或いは、浮動小数点演算装置の他にも、三次元座標変換計算を行う装置や、画像データの圧縮伸長処理を高速に行うための並列演算を行う装置など、様々なコプロセッサを備えていても良い。
【0306】
また、タスクが使用可能な資源を資源グループに分割して管理するにあたって、その分割数も特に限定されるものではなく、自由に選ぶことができる。ただし、資源の分割の仕方によってタスク切り替え処理の効率は変化するので、資源を資源グループに分割して管理するにあたっては、処理対象となるタスクの種類やデータ処理装置の構成等に応じて、タスク切り替え処理がより効率良く行われるように、資源の分割を最適化したほうが好ましいことは言うまでもない。また、上述したように、中央処理装置がキャッシュメモリを備えているときには、資源を資源グループに分割する際に、各資源グループに対応した各資源値保存領域のサイズが、キャッシュメモリのキャッシュラインサイズの整数倍になるように分割したほうが好ましい。
【0307】
また、本発明の第2の実施の形態では、タスク切り替え処理以外の殆どの処理を、データ処理装置にハードウェア的な機構として実装したが、要求される半導体回路の規模等に応じて、殆どの部分を任意に選んでソフトウェアによる実装に置き換えることも可能である。また、例えば、資源グループ占有タスク切り替え処理についてはソフトウェアで行うが、資源グループの保存や読み込みについては、それを短い命令数で実行できる特別の命令を用意して、高速な処理を可能にするなど、部分的に機能を切り出してハードウェア化するようなことも可能である。
【0308】
また、本発明の第2の実施の形態では、実行中タスク変数に、実行中のタスクに対応したタスク情報保存領域の先頭番地を設定したが、実行中タスク変数には、タスク情報領域の中の資源制御情報領域の先頭番地を設定するようにしても良い。タスク情報領域の中の資源制御情報領域の先頭番地を実行中タスク変数に設定するようにした場合は、タスク情報のうちオペレーティングシステムに依存する部分(すなわちタスク制御情報)のサイズに左右されることなく、実行中タスク変数に基づいて、資源制御情報領域に直接アクセスすることが可能となる。換言すれば、タスク情報の中の資源制御情報領域の先頭番地を実行中タスク変数に設定するようにした場合は、オペレーティングシステムの実装に左右されずに、ハードウェアによる処理だけで、資源の制御に必要なタスク情報を操作することが可能となる。
【0309】
【発明の効果】
以上詳細に説明したように、本発明によれば、タスク切り替えの際に発生するメモリアクセスを分散することができ、しかも、不要なメモリアクセスを大幅に削減することができ、さらに、資源値を保持するための大量のハードウェア資源を必要としない。したがって、本発明によれば、以下のような効果が得られる。
【0310】
(1)多くのレジスタを有する中央処理装置等において、タスク切り替えの時間を大幅に短縮することができる。
【0311】
(2)ハードウェアを機能拡張し、例えば浮動小数点演算装置を追加したような場合、追加機能を使用しないタスクについては、タスク切り替えの時間に影響が出なくなる。
【0312】
(3)使用可能な資源量が増加しても、各タスクが使用した資源グループについてのみ、資源値を保存する領域を確保すればよく、メモリの使用量を大幅に削減できる。
【0313】
(4)切り替わるタスクの数が増えても、効果が下がるようなことはなく、タスク切り替えを高速に行うことができる。
【0314】
(5)中央処理装置等の資源量に対して、わずかな追加ハードウェアのみで実現可能であり、レジスタファイル等の機構によりタスク切り替えの高速化を図るような場合に比べて、半導体面積を大幅に削減できる。
【0315】
(6)中央処理装置等の資源量が多くなっても、本発明のために必要な追加ハードウェアはわずかであり、しかも、高速に切り替え可能なタスク数にも制限がない。
【0316】
(7)高速に起動したいタスクは、使用する資源を限定することで、タスク切り替えを高速に行うことができる。そのため、割り込み処理等のように高速な起動が必要な処理についても、タスク切り替えの機構で行うことが可能となる。
【0317】
(8)タスク切り替え完了までのメモリアクセス量が大幅に減少するため、切り替え先のタスクの起動時間を特定することが容易となる。
【0318】
(9)データ処理装置が資源の使用禁止機能(例えば浮動小数点演算装置使用許可フラグ)を予め備えている場合には、オペレーティングシステムの変更だけで、タスク切り替えを高速化することができる。
【0319】
(10)資源グループ使用可能性検査や資源グループ占有タスク切り替え処理を行う機構を、データ処理装置にハードウェアとして実装した場合には、タスク切り替えに必要な命令ステップを削減して、タスク切り替え時の処理を非常に高速化することができる。しかも、タスク切り替え後に資源を初めて使用する際に発生する占有タスク切り替え処理も非常に高速化することができる。
【0320】
(11)資源値保存領域がキャッシュメモリのキャッシュラインサイズの整数倍となるように資源グループのサイズを設定し、また、資源値保存領域の先頭をキャッシュラインの境界に整合させることによって、資源を資源グループに分割しても、資源値保存領域の前後端での余計なメモリアクセスが発生しないようにすることができ、メモリアクセスを効率良く行うことが可能となる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態で使用するデータ処理装置のレジスタの構成を示す図である。
【図2】本発明の第1の実施の形態における資源グループとメモリ上の変数とを説明するための図である。
【図3】本発明を適用して複数のタスクを並行して実行するときの状態を示す図である。
【図4】本発明の第1及び第2の実施の形態におけるタスク情報の配列を示す図である。
【図5】本発明の第1の実施の形態におけるタスク情報保存領域及び資源値保存領域を示す図である。
【図6】本発明の第1の実施の形態におけるタスク切り替え処理のフローチャートである。
【図7】本発明の第1の実施の形態における資源グループ使用可能性検査のフローチャートである。
【図8】本発明の第1の実施の形態における資源グループ占有タスク切り替え処理のフローチャートである。
【図9】本発明の第2の実施の形態におけるデータ処理装置のレジスタの構成を示す図である。
【図10】本発明の第2の実施の形態におけるタスク情報保存領域及び資源値保存領域を示す図である。
【図11】本発明の第2の実施の形態において、資源グループ使用許可フラグを使用してタスク切り替えを行うときのタスク切り替え処理のフローチャートである。
【図12】本発明の第2の実施の形態において、資源グループ使用許可フラグを使用してタスク切り替えを行うときの資源グループ使用可能性検査のフローチャートである。
【図13】本発明の第2の実施の形態において、資源グループ使用許可フラグを使用してタスク切り替えを行うときの資源グループ占有タスク切り替え処理のフローチャートである。
【図14】本発明の第2の実施の形態における資源グループ保存処理のフローチャートである。
【図15】本発明の第2の実施の形態における資源グループ読み込み処理のフローチャートである。
【図16】本発明の第2の実施の形態における資源グループ保存領域確保処理のフローチャートである。
【図17】本発明の第2の実施の形態において、資源グループ使用許可フラグを使用しないでタスク切り替えを行うときのタスク切り替え処理のフローチャートである。
【図18】本発明の第2の実施の形態において、資源グループ使用許可フラグを使用しないでタスク切り替えを行うときの資源グループ使用可能性検査のフローチャートである。
【図19】本発明の第2の実施の形態において、資源グループ使用許可フラグを使用しないでタスク切り替えを行うときの資源グループ占有タスク切り替え処理のフローチャートである。
【図20】複数のタスクを並行して実行するときの従来の状態を示す図である。
【図21】従来の中央処理装置のタスク切り替え高速化機構を説明するための図であり、(a)はレジスタファイルを示す図、(b)はレジスタウィンドウを示す図である。
Claims (33)
- タスク毎に確保した資源値保存領域に資源の状態を示す値である資源値を保存し、タスクを実行するときに当該タスクが使用する資源の資源値を資源値保存領域から読み出すことで、それぞれのタスクの独立性を保証して複数のタスクを並行して実行するデータ処理装置におけるマルチタスクシステムにより実現されたタスク切り替え方法において、
上記データ処理装置が資源を複数の資源グループに分割して管理し、
タスク切り替えにより実行中となったタスクが資源を使用する際、上記データ処理装置が当該資源が属する資源グループを当該タスクが使用可能か否かを判定する資源グループ使用可能性検査を行い、
資源グループ使用可能性検査の結果、当該資源が属する資源グループが実行中のタスクで使用可能と判定された場合には、上記データ処理装置が実行中のタスクに当該資源の使用を認めて、実行中のタスクの処理を継続し、
資源グループ使用可能性検査の結果、当該資源が属する資源グループが実行中のタスクで使用可能と判定されなかった場合には、上記データ処理装置が当該資源が属する資源グループを実行中のタスクが使用可能な状態に変更する資源グループ占有タスク切り替え処理を行った上で、実行中のタスクに当該資源の使用を認めて、実行中のタスクの処理を継続し、
タスク切り替えによって実行を開始するタスクが、上記資源グループ使用可能性検査を行うことができない資源を使用する可能性がある場合には、上記データ処理装置が当該資源グループの資源値の保存及び/又は読み込みを、タスク切り替えの際に必要に応じて予め行うこと
を特徴とするタスク切り替え方法。 - 実行中のタスクが資源グループを使用可能であるか否かを示す資源グループ使用許可フラグを設けておき、
上記資源グループ使用可能性検査では、資源グループ使用許可フラグに基づいて、上記データ処理装置が実行中のタスクが資源グループを使用可能か否かを判定すること
を特徴とする請求項1記載のタスク切り替え方法。 - タスクが資源グループを占有しているか否かを資源グループ毎に示す資源グループ占有フラグをタスク毎に設けておき、
タスク切り替え時に、タスク切り替えによって停止するタスクに対応する資源グループ占有フラグのうち、資源グループ使用許可フラグに使用可能であることを示す値が設定されている資源グループに対応する資源グループ占有フラグに、上記データ処理装置が当該資源グループを占有していることを示す値を設定し、
上記資源グループ占有タスク切り替え処理では、実行中のタスクが使用しようとしている資源が属する資源グループをそれまで使用していたタスクに対応する資源グループ占有フラグのうち、当該資源グループに対応する資源グループ占有フラグに、上記データ処理装置が当該資源グループを占有していないこと示す値を設定する処理を行うこと
を特徴とする請求項2記載のタスク切り替え方法。 - 上記資源グループ使用許可フラグは、共通の機能を提供する1以上の資源グループからなる機能ブロック単位で、実行中のタスクが資源グループを使用可能であるか否かを示すこと
を特徴とする請求項2記載のタスク切り替え方法。 - 上記資源グループ使用許可フラグは、資源グループ毎に、実行中のタスクが資源グループを使用可能であるか否かを示すこと
を特徴とする請求項2記載のタスク切り替え方法。 - 上記資源グループ占有タスク切り替え処理において、
実行中のタスクが使用しようとしている資源の資源値を保持する必要がある場合に、上記データ処理装置が当該資源が属する資源グループの資源値を資源値保存領域に保存する処理と、
実行中のタスクに対応した資源値保存領域に、実行中のタスクが使用しようとしている資源の資源値として有効な値が保存されている場合に、上記データ処理装置が実行中のタスクに対応した資源値保存領域から資源値を読み込む処理とを行うこと
を特徴とする請求項1記載のタスク切り替え方法。 - 資源グループを占有しているタスクに対応した値が設定される資源グループ占有タスク変数を資源グループ毎に設けておき、
上記資源グループ占有タスク切り替え処理では、上記データ処理装置が実行中のタスクが使用しようとしている資源が属する資源グループに対応した資源グループ占有タスク変数に、実行中のタスクに対応した値を設定する処理も行うこと
を特徴とする請求項6記載のタスク切り替え方法。 - 実行中のタスクに対応した値が設定される実行中タスク変数を設けておき、
上記資源グループ使用可能性検査では、上記データ処理装置が実行中のタスクが使用しようとしている資源が属する資源グループに対応した資源グループ占有タスク変数の値と、実行中タスク変数の値とを比較することにより、当該資源が属する資源グループを実行中のタスクが使用可能か否かを判定すること
を特徴とする請求項7記載のタスク切り替え方法。 - 資源グループに属する資源に使用中のものが存在するか否かを資源グループ毎に示す資源グループ保存値有効フラグをタスク毎に設けておき、
タスクが資源を使用することにより当該資源の資源値が有効な値となった場合には、上記データ処理装置が当該タスクに対応した資源グループ保存値有効フラグのうち、当該資源が属する資源グループに対応した資源グループ保存値有効フラグに、当該資源グループに使用中の資源が存在していることを示す値を設定し、
上記資源グループ占有タスク切り替え処理において、上記データ処理装置が実行中のタスクが使用しようとしている資源の資源値を保持する必要があるか否かの判断を、当該資源を使用しているタスクに対応した資源グループ保存値有効フラグに基づいて行うとともに、
上記資源グループ占有タスク切り替え処理において、上記データ処理装置が実行中のタスクに対応した資源値保存領域に、実行中のタスクが使用しようとしている資源の資源値として有効な値が保存されているか否かの判断を、実行中のタスクに対応した資源グループ保存値有効フラグに基づいて行うこと
を特徴とする請求項6記載のタスク切り替え方法。 - タスク切り替えによって実行を開始するタスクが、上記資源グループ使用可能性検査を行うことができない資源を使用する可能性がある場合には、タスク切り替え処理において、上記データ処理装置が当該資源グループに対応した資源グループ保存値有効フラグに、当該資源グループに対応した資源値保存領域に有効な値が存在していることを示す値を設定する処理を行うこと
を特徴とする請求項9記載のタスク切り替え方法。 - タスクの実行を終了する際に、上記データ処理装置が当該タスクに対応した全ての資源グループ保存値有効フラグの値を、資源グループに使用中の資源が存在しないことを示す値に設定すること
を特徴とする請求項9記載のタスク切り替え方法。 - 資源グループに属する資源をタスクが使用中であるか否かを示す資源グループ使用中フラグを資源グループ毎に設けておき、
タスクが資源を使用するときには、上記データ処理装置が当該資源が属する資源グループに対応した資源グループ使用中フラグに、当該資源グループに属する資源をタスクが使用中であることを示す値を設定し、
上記資源グループ占有タスク切り替え処理において、実行中のタスクが使用しようとしている資源の資源値を保持する必要があるか否かの判断を、上記データ処理装置が当該資源が属する資源グループに対応した資源グループ使用中フラグに基づいて行うこと
を特徴とする請求項6記載のタスク切り替え方法。 - タスク切り替えによって実行を開始するタスクが、上記資源グループ使用可能性検査を行うことができない資源を使用する可能性がある場合には、タスク切り替え処理において、上記データ処理装置が当該資源グループに対応した資源グループ使用中フラグに、当該資源グループに使用中の資源が存在していることを示す値を設定する処理を行うこと
を特徴とする請求項12記載のタスク切り替え方法。 - タスクが資源グループを占有しているか否かを資源グループ毎に示す資源グループ占有フラグをタスク毎に設けておき、
上記資源グループ占有タスク切り替え処理では、
実行中のタスクが使用しようとしている資源が属する資源グループを占有しているタスクに対応する資源グループ占有フラグのうち、実行中のタスクが使用しようとしている資源が属する資源グループに対応した資源グループ占有フラグに、上記データ処理装置が当該資源グループを占有していないことを示す値を設定する処理と、
実行中のタスクに対応した資源グループ占有フラグのうち、実行中のタスクが使用しようとしている資源が属する資源グループに対応した資源グループ占有フラグに、上記データ処理装置が当該資源グループを占有していることを示す値を設定する処理も行うこと
を特徴とする請求項6記載のタスク切り替え方法。 - タスクが使用可能な資源を、キャッシュメモリを備えた中央処理装置を使用して取り扱う場合には、
上記データ処理装置が資源を資源グループに分割する際に、各資源グループに対応した各資源値保存領域のサイズがキャッシュメモリのキャッシュラインサイズの整数倍となるように分割すること
を特徴とする請求項1記載のタスク切り替え方法。 - タスクが使用可能な資源を、キャッシュメモリを備えた中央処理装置を使用して取り扱うとともに、資源値保存領域をキャッシュメモリ上に確保する場合には、
上記データ処理装置が資源値保存領域の先頭アドレスがキャッシュメモリのキャッシュラインの境界となるように資源値保存領域を確保すること
を特徴とする請求項1記載のタスク切り替え方法。 - タスク毎に確保した資源値保存領域に資源の状態を示す値である資源値を保存し、タスクを実行するときに当該タスクが使用する資源の資源値を資源値保存領域から読み出すことで、それぞれのタスクの独立性を保証して複数のタスクを並行して実行するデータ処理装置において、
資源を複数の資源グループに分割して管理し、
タスク切り替えにより実行中となったタスクが資源を使用する際、当該資源が属する資源グループを当該タスクが使用可能か否かを判定する資源グループ使用可能性検査を行い、
資源グループ使用可能性検査の結果、当該資源が属する資源グループが実行中のタスクで使用可能と判定された場合には、実行中のタスクに当該資源の使用を認めて、実行中のタスクの処理を継続し、
資源グループ使用可能性検査の結果、当該資源が属する資源グループが実行中のタスクで使用可能と判定されなかった場合には、当該資源が属する資源グループを実行中のタスクが使用可能な状態に変更する資源グループ占有タスク切り替え処理を行った上で、実行中のタスクに当該資源の使用を認めて、実行中のタスクの処理を継続し、
タスク切り替えによって実行を開始するタスクが、上記資源グループ使用可能性検査を行うことができない資源を使用する可能性がある場合には、当該資源グループの資源値の保存及び/又は読み込みを、タスク切り替えの際に必要に応じて予め行うこと
を特徴とするデータ処理装置。 - 実行中のタスクが資源グループを使用可能であるか否かを示す資源グループ使用許可フラグの値を保持する資源グループ使用許可フラグ保持手段を備え、
上記資源グループ使用可能性検査では、資源グループ使用許可フラグに基づいて、実行中のタスクが資源グループを使用可能か否かを判定すること
を特徴とする請求項17記載のデータ処理装置。 - 上記資源グループ使用許可フラグは、共通の機能を提供する1以上の資源グループからなる機能ブロック単位で、実行中のタスクが資源グループを使用可能であるか否かを示すこと
を特徴とする請求項18記載のデータ処理装置。 - 上記資源グループ使用許可フラグは、資源グループ毎に、実行中のタスクが資源グループを使用可能であるか否かを示すこと
を特徴とする請求項18記載のデータ処理装置。 - 上記資源グループ占有タスク切り替え処理において、
実行中のタスクが使用しようとしている資源の資源値を保持する必要がある場合に、当該資源が属する資源グループの資源値を資源値保存領域に保存する処理と、
実行中のタスクに対応した資源値保存領域に、実行中のタスクが使用しようとしている資源の資源値として有効な値が保存されている場合に、実行中のタスクに対応した資源値保存領域から資源値を読み込む処理とを行うこと
を特徴とする請求項17記載のデータ処理装置。 - 資源グループを占有しているタスクに対応した値が資源グループ毎に設定される資源グループ占有タスク変数の値を保持する資源グループ占有タスク変数保持手段を備え、
上記資源グループ占有タスク切り替え処理では、実行中のタスクが使用しようとしている資源が属する資源グループに対応した資源グループ占有タスク変数に、実行中のタスクに対応した値を設定する処理も行うこと
を特徴とする請求項21記載のデータ処理装置。 - 実行中のタスクに対応した値が設定される実行中タスク変数の値を保持する実行中タスク変数保持手段を備え、
上記資源グループ使用可能性検査では、実行中のタスクが使用しようとしている資源が属する資源グループに対応した資源グループ占有タスク変数の値と、実行中タスク変数の値とを比較することにより、当該資源が属する資源グループを実行中のタスクが使用可能か否かを判定すること
を特徴とする請求項22記載のデータ処理装置。 - 資源グループに属する資源に使用中のものが存在するか否かを資源グループ毎に示す資源グループ保存値有効フラグの値を保持する資源グループ保存値有効フラグ保持手段を備え、
タスクが資源を使用することにより当該資源の資源値が有効な値となった場合には、当該資源が属する資源グループに対応した資源グループ保存値有効フラグに、当該資源グループに使用中の資源が存在していることを示す値を設定し、
上記資源グループ占有タスク切り替え処理において、実行中のタスクが使用しようとしている資源の資源値を保持する必要があるか否かの判断を、当該資源が属する資源グループに対応した資源グループ保存値有効フラグに基づいて行うこと
を特徴とする請求項21記載のデータ処理装置。 - 実行中のタスクが、特定の資源グループの資源値が破壊されることを前提とした処理を実行した場合には、当該資源グループに対応した資源グループ保存値有効フラグに、当該資源グループに対応した資源値保存領域に有効な値が存在していないことを示す値を設定すること
を特徴とする請求項24記載のデータ処理装置。 - 資源グループに属する資源をタスクが使用中であるか否かを資源グループ毎に示す資源グループ使用中フラグを保持する資源グループ使用中フラグ保持手段を備え、
タスクが資源を使用するときには、当該資源が属する資源グループに対応した資源グループ使用中フラグに、当該資源グループに属する資源をタスクが使用中であることを示す値を設定し、
上記資源グループ占有タスク切り替え処理において、実行中のタスクが使用しようとしている資源の資源値を保持する必要があるか否かの判断を、当該資源が属する資源グループに対応した資源グループ使用中フラグに基づいて行うこと
を特徴とする請求項21記載のデータ処理装置。 - 実行中のタスクが、特定の資源グループの資源値が破壊されることを前提とした処理を実行した場合には、
資源値が破壊されることが前提とされている資源グループのうち、実行中のタスクが使用可能な資源グループについて、当該資源グループに対応した資源グループ使用中フラグに、当該資源グループを使用中のタスクが存在していないことを示す値を設定すること
を特徴とする請求項26記載のデータ処理装置。 - タスクが使用可能な資源を取り扱う中央処理装置と、上記中央処理装置に設けられたキャッシュメモリとを備えており、
上記資源グループは、各資源グループに対応した各資源値保存領域のサイズがキャッシュメモリのキャッシュラインサイズの整数倍となるように資源が分割されてなること
を特徴とする請求項17記載のデータ処理装置。 - タスクが使用可能な資源を取り扱う中央処理装置と、上記中央処理装置に設けられたキャッシュメモリとを備えており、
上記資源値保存領域は、各資源値保存領域の先頭アドレスがキャッシュメモリのキャッシュラインの境界となるように確保されること
を特徴とする請求項17記載のデータ処理装置。 - 上記資源値保存領域を確保する際に、保存する資源値のサイズに応じて、資源値保存領域のサイズを動的に変化させて確保すること
を特徴とする請求項17記載のデータ処理装置。 - 上記資源値保存領域のサイズを、資源グループを単位として動的に変化させること
を特徴とする請求項30記載のデータ処理装置。 - 上記資源値保存領域を、対応するタスクが使用するスタックと同一のメモリブロックに、当該タスクがスタックにデータを格納していく方向とは逆の方向から確保していくこと
を特徴とする請求項30記載のデータ処理装置。 - 上記資源値保存領域を動的に変化させるときに、スタックとしてタスクが使用中の領域と資源値保存領域とが重複しないかを確認する領域重複チェック手段を備えていること
を特徴とする請求項32記載のデータ処理装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11750598A JP3991443B2 (ja) | 1998-04-27 | 1998-04-27 | タスク切り替え方法及びデータ処理装置 |
DE69939409T DE69939409D1 (de) | 1998-04-27 | 1999-04-19 | Verfahren und Vorrichtung zum Umschalten von Aufgaben |
EP19990303005 EP0953905B1 (en) | 1998-04-27 | 1999-04-19 | Method and apparatus for switching tasks |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11750598A JP3991443B2 (ja) | 1998-04-27 | 1998-04-27 | タスク切り替え方法及びデータ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11312092A JPH11312092A (ja) | 1999-11-09 |
JP3991443B2 true JP3991443B2 (ja) | 2007-10-17 |
Family
ID=14713423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11750598A Expired - Fee Related JP3991443B2 (ja) | 1998-04-27 | 1998-04-27 | タスク切り替え方法及びデータ処理装置 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP0953905B1 (ja) |
JP (1) | JP3991443B2 (ja) |
DE (1) | DE69939409D1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FI116166B (fi) * | 2002-06-20 | 2005-09-30 | Nokia Corp | Menetelmä ja järjestelmä sovellusistuntojen suorittamiseksi elektroniikkalaitteessa, ja elektroniikkalaite |
JP2005301791A (ja) * | 2004-04-14 | 2005-10-27 | Nec Corp | 移動通信端末および移動通信端末のアプリケーション起動制御方法 |
GB2471138B (en) * | 2009-06-19 | 2014-08-13 | Advanced Risc Mach Ltd | Handling integer and floating point registers during a context switch |
JP5673937B2 (ja) * | 2011-01-07 | 2015-02-18 | アイキューブド研究所株式会社 | 信号処理装置、および信号処理方法 |
US8751774B2 (en) * | 2011-03-31 | 2014-06-10 | Denso International America, Inc. | Method and system for controlling message traffic between two processors |
JP6081300B2 (ja) | 2013-06-18 | 2017-02-15 | 株式会社東芝 | 情報処理装置及びプログラム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4975836A (en) * | 1984-12-19 | 1990-12-04 | Hitachi, Ltd. | Virtual computer system |
JPS63156236A (ja) * | 1986-12-19 | 1988-06-29 | Toshiba Corp | レジスタ装置 |
JP3034873B2 (ja) * | 1988-07-01 | 2000-04-17 | 株式会社日立製作所 | 情報処理装置 |
US5159680A (en) * | 1988-07-28 | 1992-10-27 | Sun Microsystems, Inc. | Risc processing unit which selectively isolates register windows by indicating usage of adjacent register windows in status register |
JP3619939B2 (ja) * | 1994-09-26 | 2005-02-16 | 株式会社ルネサステクノロジ | 中央処理装置 |
-
1998
- 1998-04-27 JP JP11750598A patent/JP3991443B2/ja not_active Expired - Fee Related
-
1999
- 1999-04-19 DE DE69939409T patent/DE69939409D1/de not_active Expired - Fee Related
- 1999-04-19 EP EP19990303005 patent/EP0953905B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH11312092A (ja) | 1999-11-09 |
EP0953905A3 (en) | 2006-07-05 |
EP0953905A2 (en) | 1999-11-03 |
DE69939409D1 (de) | 2008-10-09 |
EP0953905B1 (en) | 2008-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6233599B1 (en) | Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers | |
JP4896376B2 (ja) | コプロセッサの性能を強化するシステムおよび方法 | |
US7290261B2 (en) | Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor | |
US9329988B2 (en) | Parallel dynamic memory allocation using a nested hierarchical heap | |
US5349656A (en) | Task scheduling method in a multiprocessor system where task selection is determined by processor identification and evaluation information | |
US7533236B1 (en) | Off-chip out of order memory allocation for a unified shader | |
JP4599172B2 (ja) | フリーバッファプールを使用することによるメモリの管理 | |
JPS62165250A (ja) | 仮想記憶方法 | |
KR20130018742A (ko) | 가비지 콜렉션을 위한 gpu 서포트 | |
JP2003167737A (ja) | スタック使用方法 | |
JPH05150981A (ja) | データ処理装置 | |
JP2000200219A (ja) | 仮想メモリ管理方式 | |
JP2003241961A (ja) | マルチスレッドプロセッサにおける共有レジスタファイル制御方式 | |
JP2004234123A (ja) | マルチスレッドコンピュータ | |
JP3991443B2 (ja) | タスク切り替え方法及びデータ処理装置 | |
US8266379B2 (en) | Multithreaded processor with multiple caches | |
JP5007868B2 (ja) | プロセッサメモリシステム | |
JP3088303B2 (ja) | キャッシュ・メモリ・バンク制御装置 | |
JP2006518896A (ja) | 特定コード部分のキャッシュトラッシングの低減 | |
JPWO2008114415A1 (ja) | マルチプロセッシングシステム | |
JPH07105091A (ja) | キャッシュの制御装置および制御方法 | |
JP7217341B2 (ja) | プロセッサおよびレジスタの継承方法 | |
JP4088763B2 (ja) | コンピュータシステム及び該コンピュータシステムに適したハードウェア/ソフトウェアロジック並びにキャッシュ方法 | |
US20080072009A1 (en) | Apparatus and method for handling interrupt disabled section and page pinning apparatus and method | |
JPH01145770A (ja) | ベクトル処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050119 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070314 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070417 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070611 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070703 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070716 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100803 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |