JP2007226823A - プロセッサ及びプログラム実行方法 - Google Patents
プロセッサ及びプログラム実行方法 Download PDFInfo
- Publication number
- JP2007226823A JP2007226823A JP2007101054A JP2007101054A JP2007226823A JP 2007226823 A JP2007226823 A JP 2007226823A JP 2007101054 A JP2007101054 A JP 2007101054A JP 2007101054 A JP2007101054 A JP 2007101054A JP 2007226823 A JP2007226823 A JP 2007226823A
- Authority
- JP
- Japan
- Prior art keywords
- program
- register
- execution
- time
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【解決手段】複数のレジスタ群と、複数のレジスタ群のうちいずれか1つを、プログラム実行の基礎とする実行対象レジスタ群として選択し、当該選択先を所定時間毎に切り替えるレジスタ切替部112と、切り替えがなされる毎に、複数のレジスタ群のうち選択がなされていない1のレジスタ群にレジスタ値群を復帰し、切り替えがなされる毎に、復帰に先行して、当該復帰の対象となったレジスタ群にある各レジスタ値を、これらレジスタ値に対応するメモリ中のレジスタ値群に上書きすることにより退避する切替入替制御部113と、切り替えがなされる毎に、実行対象レジスタ群にあるプログラムカウンタ値を含むレジスタ値群によりプログラムを特定して実行する処理実行部110とを備え、所定時間は、テーブル情報にもとづいて特定された時間であるプロセッサ。
【選択図】図1
Description
処理実行部1002は、新たなコンテキストがレジスタ群1004に格納される毎に、このコンテキストにもとづいてプログラムやデータを取得してタスクを実行する。制御部1003は、レジスタ群1004内に既に格納されているコンテキストをコンテキストメモリ1010に上書きすることにより退避し、次にどのコンテキストをレジスタ群1004への格納対象とすべきかを判断し、この判断により格納対象とされたコンテキストをコンテキストメモリ1010から読み出してレジスタ群1004に書き込むことにより復帰する。
従来、各タスクの実行に際し、事前に上述の退避、判断及び復帰に実施される。つまり、各タスクを実行する上で、上述の退避、判断及び復帰がオーバーヘッドとなっている。ここで、タスクAからタスクDまでの処理を1サイクルの処理と定義づけると、上述のOSは、この1サイクルにおける、各タスクの実行順序及びタスクの実行時間、つまり、タスクのスケジュールを規定している。
特に、携帯電話などの通信機器及びTV受像機などの放送機器などにおいては、リアルタイムに近い状態でのデータ処理を実行する必要があるが、このような機器において、複数のタスクを擬似並行的に処理する場合、上述のオーバーヘッドがある従来のタスクの実行方法では、上述のようなリアルタイム近い状態でのデータ処理の実施は困難となる。
また、前記プログラム実行手段は、前記切り替えがなされたとき、前記実行を開始するとしてもよい。
これにより、プログラムを実行しようとする際、速やかにプログラムが実行され、オーバーヘッドがほとんど解消される。
これにより、プログラムの実行順序は、前記順序情報により決定される。
また、前記所定時間は、当該順序情報の前記順序に対応するレジスタ値群全てにおいて前記復帰がなれるとしたときに、当該復帰がなされた各レジスタ群が実行対象レジスタ群として選択される時間の合計が所定の期間以内となるように決められているとしてもよい。
また、前記順序情報は、レジスタ値群毎に固有な識別情報が所定の順番に配列されたテーブルであり、前記順序は、前記識別情報の配列の順番により示されるとしてもよい。
これにより、前記レジスタ値群の復帰順序は、識別情報の配列の順番により示され、当該配列の順番を変えることにより、前記レジスタ値群の復帰順序が変更される。
これにより、各プログラムの実行されるタイミングが均等化される。
これにより、擬似的に並列実行される都度、テーブルを変更する機会が与えられる。
また、前記所定時間は、前記複数のプログラム毎に固有の時間であり、さらに、各識別情報は、当該識別情報により特定されるレジスタ値群に対応するプログラムの前記固有の時間を示す時間情報が付加されており、前記管理プログラムは、各識別情報に付加されている時間情報により示される前記固有の時間の合計が前記所定の期間以内となるように前記変更を実施するとしてもよい。
また、前記プログラム実行手段は、前記管理プログラムの実行中において、前記テーブルの変更が必要と判断した場合、前記テーブルに対して前記変更がなされた状態のダミーテーブルを生成し、当該ダミーテーブルと前記テーブルとを入れ替えることにより前記変更を実施するとしてもよい。
また、前記複数のプログラムは、映像処理を実行するための映像処理プログラムを含み、前記配列中における、当該映像処理プログラムに対応するレジスタ値群の所在を特定する識別情報の数は、他のプログラムよりも多いとしてもよい。
また、前記識別情報は、レジスタ値群が記憶されている領域を示すアドレス値であり、前記復帰手段は、前記アドレス値により復帰すべきレジスタ値群の所在を特定し、前記復帰を実施するとしてもよい。
また、前記順序情報は、レジスタ値群毎に固有な識別情報それぞれに他の識別情報を指し示すポインタが付されているテーブルであり、前記順序は、前記ポインタを辿っていくことにより示されているとしてもよい。
また、さらに、プログラムの実行を中断する中断事由が発生していることを検出する中断事由発生検出手段と、前記中断事由が解消したことを検出する中断事由解消検出手段とを備え、前記プログラム実行手段は、プログラムの実行に際し、当該プログラムについての中断事由の発生が検出された場合、当該中断事由が解消するまで、当該プログラムの実行のために割り当てられるべき実行期間を放棄するとしてもよい。
また、前記中断事由は、複数あり、前記放棄のトリガとして有効な中断事由は、プログラム毎に固有であり、前記プログラム実行手段は、実行中のプログラムに有効な中断事由が発生しているときに限り、前記放棄を実施するとしてもよい。
これにより、プログラム毎に、中断事由が生じたときの放棄の可否が判断される。
また、前記設定情報は、中断事由毎に固有のビット位置が定められ、各ビット位置に当該ビット位置に対応する中断事由の有効又は無効を示す値が示されたビット列データあり、前記中断情報は、中断事由毎に固有のビット位置が定められ、各ビット位置に当該ビット位置に対応する中断事由の発生の有無を示す値が示されたビット列データあり、前記プログラム実行手段は、前記設定情報において有効を示す値が存在するビット位置に対応する中断事由が示されている前記中断情報内のビット位置のみを参照して前記判断を実施するとしてもよい。
また、前記プログラム実行手段は、前記放棄を実施するとき、その旨を前記復帰手段に通知し、前記復帰手段は、前記中断事由が解消するまで、前記放棄を行ったプログラムに対応するレジスタ値群を前記復帰の対象としないように、当該レジスタ値群の順序を無視して前記復帰を実施するとしてもよい。
また、前記復帰手段は、前記通知がなされたとき、前記無視を行おうとしている前記レジスタ値群を、例外的に、前記通知後において2回目に実施する復帰における最優先の復帰対象の候補とし、前記2回目の復帰開始までに前記中断事由が解消している場合は、当該レジスタ値群を前記復帰対象に決定し、前記中断事由が解消していない場合、以後中断事由が解消するまで当該レジスタ値群について前記無視を継続するとしてもよい。
また、前記復帰手段は、前記無視がなされたレジスタ値群が複数あり、このうち2以上のレジスタ値群について、前記中断事由が解消した場合、これら2以上のレジスタ値群のいずれか1つについて、前記復帰の時期が到来した場合、これら2以上のレジスタ値群のうち、最後に無視されたレジスタ値群を当該時期における復帰対象とするとしてもよい。
また、前記プログラム実行手段は、前記放棄を行うとき、その旨を前記選択先切り替え手段に通知し、前記選択先切り替え手段は、前記通知を受け取ったとき、前記切り替えを実施するとしてもよい。
また、前記中断事由は、プログラムの実行に際して、キャッシュミスが発生したこととしてもよい。これにより、キャッシュミスが発生したとき、次のプログラムが速やかに実施される。
また、前記中断事由は、プログラム実行の際、共有資源を利用しようとして、当該共有資源が開放されるのを待つ状態となったこととしてもよい。
また、前記プログラム実行手段は、プログラム実行用のCPUを有し、前記放棄がなされた実行期間中、当該CPUを停止するとしてもよい。これにより、無駄な電力消費が回避される。
また、前記プログラム実行手段は、プログラム実行用のCPUを有し、前記放棄がなされた実行期間中、当該CPUの駆動周波数を低減するとしてもよい。
また、前記プログラム実行手段は、プログラム実行用のCPUを有し、前記複数のプログラムを実行する際、前記CPUの処理能力が、これらプログラムの実行負荷に対して高すぎることにより、処理の空き時間が発生しないように、プログラムの実行負荷に応じて、前記CPUの駆動周波数を調整するとしてもよい。
また、前記複数のレジスタ群は、2つであり、前記選択先切り替え手段は、前記2つのレジスタ群に対して、交互に前記切り替えを実施するとしてもよい。これにより、2つのレジスタ群のみにより、オーバーヘッドが解消しつつ、複数のプログラムが擬似的に並列実行される。
また、前記プログラム実行手段は、N段のパイプライン処理を実行し、前記退避手段は、前記選択先切り替えが実施された時点より、(N−1)クロック以降に前記退避を実施するとしてもよい。
また、前記選択先切り替え手段は、前記複数のレジスタ群から所定の順序で前記選択先を決定し、前記切り替えを実施し、前記復帰手段は、前記複数のレジスタ群から所定の順序でレジスタ値群の復帰先を決定し、前記復帰を実施するとしてもよい。
また、前記復帰手段は、前記メモリ内に記憶されている前記レジスタ値群をコピーして前記復帰を実施し、前記プログラム実行手段は、プログラムの実行に伴って、実行対象レジスタ群にあるレジスタ値を変更する場合があり、前記退避手段は、前記プログラム実行手段による前記変更がなされた場合にのみ前記退避を実施するとしてもよい。
また、前記複数のレジスタ群の各レジスタは、それぞれのレジスタに復帰されているレジスタ値が変更されたか否かを示す変更情報が付されており、前記退避手段は、前記変更情報にもとづいて、変更がなされたレジスタ値のみを、これらレジスタ値が変更される前の値が記憶されている前記メモリ内の場所にそれぞれ書き込むことにより、前記退避を実施するとしてもよい。
また、前記変更情報は、1ビットのフラグであるとしてもよい。
これにより、前記フラグにより前記変更が示される。
また、前記テーブル情報は、前記各カウント値に前記複数のレジスタ値群のいずれかを特定する特定情報が対応づけられており、前記復帰の対象は、前記特定情報により復帰するレジスタ値群を前記順番にもとづいて、前記順番で前記カウント値により前記選択の都度特定されたものであり、前記特定情報により復帰されたレジスタ値群を含むレジスタ群が実行対象レジスタ群として選択されてから他のレジスタ群が実行対象レジスタ群として選択されるまでの前記所定時間は、当該復帰に用いられた特定情報に対応づけられていたカウント値が示す時間であるとしてもよい。
また、前記所定時間は、前記複数のプログラム毎に固有であるとしてもよい。
これにより、各プログラムの実行に適したプログラム実行時間が割り当てられ得る。
また、本発明に係るプロセッサは、複数のレジスタ値群を用いて、これらレジスタ値群それぞれに対応するプログラムを逐次実行するプロセッサであって、前記レジスタ値群のそれぞれを格納する複数のレジスタ群と、前記複数のレジスタ群のうちいずれか1つを、プログラム実行の基礎とする実行対象レジスタ群として選択し、当該選択先を所定時間毎に切り替える選択先切り替え手段と、前記切り替えがなされる毎に、前記実行対象レジスタ群にあるプログラムカウンタ値を含むレジスタ値群によりプログラムを特定し、前記特定したプログラムを実行するプログラム実行手段とを備え、前記所定時間は、複数のカウント値がそれぞれのプログラムに対応づけられて格納されたテーブル情報にもとづいて、前記カウント値により特定された時間であることを特徴とし、また、本発明に係るプログラム実行方法は、複数のレジスタ群を備え、複数のレジスタ値群を用いて、これらレジスタ値群それぞれに対応するプログラムを逐次実行するプロセッサにおいて、プログラムを実行するプログラム実行方法であって、前記複数のレジスタ群のうちいずれか1つを、プログラム実行の基礎とする実行対象レジスタ群として選択し、当該選択先を所定時間毎に切り替える選択先切り替えステップと、前記切り替えがなされる毎に、前記実行対象レジスタ群にあるプログラムカウンタ値を含むレジスタ値群によりプログラムを特定し、前記特定したプログラムを実行するプログラム実行ステップとを含み、前記所定時間は、複数のカウント値がそれぞれのプログラムに対応づけられて格納されたテーブル情報にもとづいて、前記カウント値により特定された時間であることを特徴とする。
(1.構成)
本発明の第1の実施形態について、図面を参照しながら詳細に説明する。図1は、本発明の第1の実施形態における仮想マルチプロセッサ100の機能ブロック図である。
仮想マルチプロセッサ100は、プレートの逐次切り替え実行を行うプロセッサである。ここで、プレートとは、従来のタスク又はOSのスケジューリング単位である1以上のタスクをまとめたものであり、プロセッサ側から見た実行対象をいう。1つのプレートは、1つの実行位置、即ち、プログラム中の命令位置を有する。
図34は、仮想マルチプロセッサ100と外部プロセッサ30との接続関係を示す図である。
また、外部プロセッサ30は、主メモリ10から処理の入力データをリードし、主メモリ10に処理結果であるデータをライトする。
また、各レジスタは、プレートが実行される際、このレジスタに格納されたプログラムカウンタなどの値が更新されたか否かを示す更新フラグの値を格納するための1ビットの記憶領域を有する。
また、処理実行部110は、先の待ち要因の発生したとき、外部プロセッサ30に処理を依頼する。
外部I/F117は、外部プロセッサなどの外部機器に接続するインターフェースであり、例えば、外部プロセッサに依頼した処理が完了したことを示す、外部プロセッサ処理完了信号などの外部からの信号を切替入替制御部113に通知する。
つまり、前述したように、外部I/F117は、切替入替制御部113から外部I/F117に処理要求信号が通知されたとき、処理要求信号を外部プロセッサ30に出力する。処理制御部111は、プレート実行の開始から終了まで、処理実行部110において、継続的にプレートを実行させるように制御する。
また、サイクルカウンタ116は、上述の初期値から1クロック毎に1づつディクリメントすることによりカウントダウンを行い、値が0となったとき、切替入替制御部113にその旨を示す信号(以下、「カウント値0信号」という。)を出力すると共に、再度初期値設定を行ってカウントダウンを開始するという処理を繰り返す。
また、外部からの割り込み要求などが到来した場合、外部からの要求に応えるべきか否かを事前に知る必要がある。
この設定フラグ群は、コンテキスト格納領域201に格納されている各コンテキスト内に含まれている。設定フラグレジスタ121は、2つのプレートに含まれている設定フラグ群それぞれを格納するためのレジスタである。プレートの実行に際し、実行されたプレート自らがプレートの実行の中断を要求し、又は、外部からプレートの実行を中断させる要求などが到来したことなどにより、待ち要因が発生したとき、現在実行中のプレートに対応するコンテキストの複数設定フラグのうち発生した待ち要因の種別に対応する設定フラグの値が処理実行部110により0から1に変更される。
上述の退避及び後述のフラグ判定処理が完了すると、切替入替制御部113は、制御レジスタ120内のネクストアドレスの値により特定されるプレートのコンテキストをスタンバイレジスタ群の各レジスタに格納、即ち、復帰する。このとき、切替入替制御部113は、各レジスタの更新フラグの値を0にクリアする。
設定フラグ群のビット列のうち、有効ビットがある場合、切替入替制御部113は、完了通知レジスタ119内の完了通知フラグ群のビット列における上述の有効ビットの位置に対応する位置のみを参照し、この有効ビットの位置に対応する位置全てに1の値が格納されている場合は、ネクストアドレスの値をそのままにしてフラグ判定処理を終了する。
なお、現状のネクストアドレスの値がテーブル終端アドレスの値である場合、ネクストアドレスの値につづき、次に大きな値のテーブルアドレスの値とは、テーブル先頭アドレスの値とする。
(2.データ)
以下、仮想マルチプロセッサ100において用いられるデータについて説明する。
小さい値のテーブルアドレスに格納されているコンテキストアドレスのプレートほど実行順序が先となる。図3は、完了通知フラグ群及び設定フラグ群の各フラグについて説明する図である。完了通知フラグ群は、強制待ちフラグ、キューの空き通知フラグ、割り込み通知フラグ、ソフトウエアの待ち指示フラグ、外部プロセッサ処理完了通知フラグ、転送通知フラグなどを有する。
また、設定フラグの値に1がある場合、対応する完了通知フラグの値により、この設定フラグを含むコンテキストに対応するプレートを実行対象とするか否かが切替入替制御部113により判断される。なお、設定フラグの値に1が格納される例としては、以前この設定フラグを含むコンテキストに対応するプレートが実行されたとき、待ち要因が発生し、プレートの実行が中断されたなどが挙げられ、このようなプレートは、持ち要因が解消されるまで、スリープ状態となる。
つまり、対応する完了通知フラグの値及び設定フラグの値が1の場合、この設定フラグを含むコンテキストに対応するプレートが切替入替制御部113によりウエイクアップされ、対応する完了通知フラグの値が0で、設定フラグの値が1の場合、このプレートのスリープ状態となる。
図4は、タスクとプレートとの関係を示す図である。ソフトウエア側には、複数のタスクが存在し、そのうち、リアルタイムで処理するタスクは、OSを介さず直接、管理アプリケーションの管理下に置かれている。なお、実行順序テーブル300の内容を更新するための管理アプリケーションが、上述のリアルタイムで処理するタスクに含まれており、このタスク、即ち、プレートが実行されるとき、例えば、新たな処理を実行すべき状態となっていれば、処理実行部110により、実行順序テーブル300の内容が更新されることとなる。
(3.動作)
以下、仮想マルチプロセッサ100において、1つのプロセッサにより擬似並行的にプレートを実行する際、効率的なプレートの実行を実現する処理について説明する。
第1レジスタ群114及び第2レジスタ群115内の全ての値をクリアする(ステップS501)。切替入替制御部113は、第1レジスタ群114及び第2レジスタ群115のうちカレントレジスタ群及スタンバイレジスタ群を選択する(ステップS502)。
そして、切替入替制御部113は、フラグ判定処理を実施して、制御レジスタ120内のネクストアドレスの値を確定する(ステップS507)。つづいて、切替入替制御部113は、スタンバイレジスタ群を構成する各レジスタの更新フラグの値が1となっているコンテキスト部分のみをコンテキスト格納領域201に退避させ(ステップS508)、スタンバイレジスタ群に格納されている値を全てクリアする(ステップS509)。
また、本実施の形態において、切替入替制御部113は、フラグ判定処理を、実行順序テーブル300により示される実行順序にもとづいて実施するものとしたことにより、スリープされたプレートがウエイクアップするタイミングは、実行順序テーブル300に規定されたそのプレートの実行順序が巡ってきたときとなるが、フラグ判定処理に際して、スリープしているプレートのコンテキスト内の設定フラグ群を優先的に参照して、フラグ判定処理を実施し、ウエイクアップの条件が揃えば、スリープしているプレートの実行順序を待たずに実行するとしてもよい。
ここで、この突き放しについて説明する。まず、仮想マルチプロセッサは、主メモリ10に外部プロセッサ30が実施する処理の入力データをライトした後、処理要求信号を出力し外部プロセッサ30に処理を要求すると共に、プレートをスリープさせる。外部プロセッサ30は、主メモリ10から命令をフエッチし動作すると共に、主メモリから処理の入力データをリードして要求された処理を行い、その処理結果であるデータを主メモリにライトする。
t2からt4までにおいて、プレートAについて優先的にフラグ判定処理を実施するが、完了通知レジスタ119内の有効ビット、即ち、外部プロセッサ処理完了通知フラグの値は0であるためウエイクアップされない。プレートDの実行期間中であるt5において、外部プロセッサ処理完了通知フラグの値が1となっているためウエイクアップされる。
また、図9においては、スリープしているプレートが1つの場合を示したが、複数のプレートがスリープしている場合も考えられ、このような場合、早くスリープされたプレートのコンテキストに対して優先的にフラグ判定処理を実施してもよく、逆に、遅くスリープされたプレートのコンテキストに対して優先的にフラグ判定処理を実施してもよい。
また、本実施の形態では、完了通知フラグ群及び設定フラグ群は、強制待ちフラグ、キューの空き通知フラグ、割り込み通知フラグ、ソフトウエアの待ち指示フラグ、外部プロセッサ処理完了通知フラグ、転送通知フラグなどを有するとしたが、これ以外のフラグを設けてもよい。
また、本実施の形態では、待ち要因が発生した場合、実行中のプレートに割り当てられている実行時間を放棄して他のプレートに明け渡す例を示したが、これによらず、プレートの実行時間を他のプレートに明け渡さずに、上述の放棄がなされている時間分だけ、プロセッサの駆動周波数を下げ、電力消費を抑えるとしてもよい。
その場合、各プレートの実行に際して、処理が行われていない無駄な時間が削減され、かつ、プロセッサの駆動周波数を下げることにより消費電力も低減される。
その場合、スタンバイレジスタ群に格納されているコンテキストを事前に参照し、次のプレートの実行に必要なデータを把握し、このデータをキャッシュに格納する機能部が必要となる。
なお、この仮想メモリ機能は公知技術である。この場合、キャッシュには、論理アドレスと物理アドレスとの対応関係(マッピング)を示す「アドレス変換テーブル」を格納する「アドレス変換テーブルキャッシュ」が含まれ、この「アドレス変換テーブルキャッシュ」に、次に実行すべきプレートに必要となるデータを示す論理アドレスを物理アドレスに変換できる「アドレス変換テーブル」を格納しておくとしてもよい。
また、これに伴い、サイクルカウンタ116は、オーバーヘッドを解消しつつ随時異なる初期値にもとづいてカウントダウンを実施するために、2つ設けることが望ましい。
また、サイクルカウンタ116は、図12に示す機能部構成とすることもできる。この図において、サイクルカウンタ116は、入出力部301と、第1メモリ302と、第2メモリ303と、カウントダウン部304とを有する。入出力部301は、切替入替制御部113からカウント値の初期値を受信し、受信した上述の初期値を交互に第1メモリ301及び第2メモリ303に格納する機能を有する。
また、処理実行部110は、N段のパイプライン処理によりプレートを実行するとしてもよい。図13は、4段のパイプライン処理を実施する例を示す。
この場合、1段目で、プレートAの処理の実行が終了しても、2段目から4段目までは、まだプレートAが実行中の状態である。つまり、この状態は、カレントレジスタ群のレジスタ値が必要であるため、プレートAのレジスタ値の退避はできない。1段目のプレートAの処理の実行が終了してから3クロック経過したとき、4段目のプレートAの実行が終了するので、ここでプレートAのレジスタ値が退避可能となる。
また、本実施の形態では、一旦プレートがスリープすると、ウエイクアップする機会は、実行順序テーブル300に示された、次の実行順序のみであったが、待ち要因が発生してスリープしても、この待ち要因が瞬時に解消される場合もあるため、これを考慮し、スリープとなった直後から1回分のプレート実行までの間については、スリープしたプレートの実行順序を最先の順序とし、このスリープしたプレートを優先的に実行させてもよい。図14は、このようなプレート実行がなされた場合における、プレート実行状況を説明する図である。
具体的には、図5におけるS508(退避)、S509(スタンバイレジスタ群のクリア)が不要となり、S510とS514の処理が変更される。つまり、第1の実施形態では、S510(スタンバイレジスタ群への格納)は、S507のフラグ判定処理で決定される制御レジスタ120内のネクストアドレスにより特定されるコンテキストをスタンバイレジスタ群に格納させる処理であったが、コンテキスト格納領域が無い場合は、S510を「S507で判断されるネクストアドレスにより特定されるコンテキストにあらかじめ対応づけられているレジスタ群」を「次のカレントレジスタ群」として切替入替制御部113に選択し記憶させる処理とすればよい。
また、レジスタ群及びプレート(プレートA、B、Cがあり、プレートCは第3レジスタ群に対応付けられているものとする。)の数が3つの場合であっても、カレントレジスタ群として選択されているのが実行対象レジスタ群であって、それ以外がスタンバイレジスタ群となる。プレートCを実行する際、第3レジスタ群をカレントレジスタ群として選択される。
また、本第1の実施形態では、コンテキストメモリ200は、SRAMにより構成されるとしたが、DRAMであってもよく、さらに、これらメモリに限らず、高速にアクセスされるレジスタや低速にアクセスされる外部記憶装置であってもよい。
<第2の実施形態>
(1.構成)
第2の実施形態について、図面を参照しながら詳細に説明する。
この仮想マルチプロセッサ400は、複数のタイムスロットそれぞれに割り当てられたプログラムを逐次実行することにより、複数のプログラムを擬似並行的に実行する。ここで、タイムスロットとは、プログラムを時分割して実行する場合における、最小のプログラム実行時間枠のことである。
より具体的には、各タイムスロットには、自タイムスロットへの割り当て候補となる4つ又は1つのプログラムが対応づけられおり、通常、これらのプログラムのうちいずれか1つが前記割り当ての対象となる。原則的には、規定されたタイムスロットの順序にもとづいて各タイムスロットに割り当てられているプログラムが逐次実行される。
図15には、プログラムの実行位置を示すプログラムカウンタの値、プログラム及びデータの格納位置を示すアドレスなどの制御情報、即ち、コンテキストが格納されているコンテキストメモリ500も合わせて示している。このコンテキストメモリ500は、SRAMにより構成され、各プログラムに対応するコンテキストが格納されているコンテキスト格納領域501を有する。
また、これらの機能部の他に、仮想マルチプロセッサ400に関連し、図示していない以下の機能部がある。即ち、プログラム及びデータなどを格納し、DRAMからなる主メモリと、SRAMからなる上述のプログラム及びデータなどを格納するためのキャッシュメモリとが、バスを介して仮想マルチプロセッサ400に接続されている。
レジスタ切替部412は、スケジューリング制御部413からの指示にしたがい、第1レジスタ群414及び第2レジスタ群415のうちいずれか1つのレジスタ群をプログラム実行の際に使用するレジスタ群、即ち、カレントレジスタ群として選択する。第1の実施形態と同様に、この選択先の切り替えを、レジスタ切り替えといい、カレントレジスタ群として選択されていない方のレジスタ群をスタンバイレジスタ群ということとする。
また、処理実行部410は、プログラムの実行中に、処理が続行できない状況となった場合、プログラムの実行を中断する旨を示すウエイトコードを処理制御部411に出力する。
また、waiting及びsuspended-waitingは、現在、プログラムが実行できない状態にあることを示す。
また、プログラム実行中にプログラム実行ができない状態となり、これらコードがsuspended-waitingへと遷移した場合、その時点において割り当てられていたタイムスロットのTS_IDの値がこれらコードに付されることとなる。
このTS_IDの値が小さいほど、時間割付情報格納レジスタ402において、タイムスロット情報が格納されている場所のアドレスの値も小さい。プログラムの実行に通常用いられる上記4つタイムスロットには、0から3までのTS_IDの値が対応づけられている。つまり、上述の先頭アドレスには、TS_IDの値0が示されたタイムスロット情報が格納されており、また、上述の終端アドレスには、TS_IDの値3が示されたタイムスロット情報が格納されている。
前記切り替えが禁止及び前記共通割り込みが生じている場合には、それぞれのフラグの値は、1となり、それ以外の場合には0の値をとる。設定フラグレジスタ421は、プログラムに関する設定情報を格納するためのレジスタである。より具体的には、この設定情報とは、プログラム毎に用意されているフラグの集まり(以下、「設定フラグ群」という。)であり、これら設定フラグ群の各フラグの値が示す内容は、例えば、自プログラムが受付可能な固有割り込み処理要求又はイベント処理要求の種別などである。
つまり、リクエスト検出部419は、受け取った外部信号を理解可能なデータ形式へと変換する。リクエスト検出部419は、更新された共通フラグ群の各フラグの値、及び、設定フラグレジスタ421内の設定フラグ群の値と固有フラグ群の値とを照合した結果にもとづいて、この外部信号の内容を把握する。
ここで、固有割り込み処理要求とは、特定のプログラムのみにおいて実行可能な処理の実行要求であって、この特定のプログラムのみが固有割り込み処理の実行を必要としている。
上述の共通フラグ群は、この共通割り込み処理要求の内容ついて示すものである。なお、これら割り込み処理は、実行可能なプログラム上からサブルーチンプログラムにジャンプして実行される。イベント処理要求とは、実行できない状態となっているプログラム又は現在実行の必要がないプログラムにおいて、実行可能な状態となるイベント又は実行を必要とするイベントが発生したために生じるこれらプログラムの実行要求である。
また、上記判別結果が、イベント処理要求であった場合、リクエスト検出部419は、上述の関連情報により、上述の外部信号から実行要求がなされたプログラムを特定するID(以下、「イベントP_ID」という。)を取得する。
また、リクエスト検出部419は、上述の固有割り込み処理要求、共通割り込み処理要求及びイベント処理要求に応じる処理の実行が完了した旨をスケジューリング制御部413から受け取ったとき、完了した処理に該当する項目のフラグの値をデフォルト値に変更する。
(1−1−1.目的タイムスロット検索処理)
以下、目的タイムスロット検索処理について説明する。
(1−1−2.目的TS割り当てプログラム検索処理)
以下、目的TS割り当てプログラム検索処理について説明する。
(1−1−3.優先度&モード情報検索処理)以下、優先度&モード情報検索処理について説明する。
(1−1−4.アイドルオプション情報検索処理)
以下、アイドルオプション情報検索処理について説明する。
(1−1−5.タイムオプション情報検索処理)
スケジューリング制御部413は、タイムオプション情報検索処理として、目的TSに対応づけられているタイムオプション情報の内容を参照し、「LP_SWITCH」、「TS_SWITCH」及び「MICRO-SLEEP」のいずれが示されているのかを判別する。
(1−2.タイムドリブンスケジューリング)
以下、タイムドリブンスケジューリングについて説明する。
スケジューリング制御部413は、タイムドリブンスケジューリングとして、以下のスケジューリング処理を実施する。
(1−2−1.スケジューリング処理)
以下、スケジューリング処理について説明する。スケジューリング制御部413は、ネクストアドレスを目的アドレスとして先に述べた目的タイムスロット検索処理を実施し、目的TS(以下、ここでは、「ネクストTS」という。)を特定した後、先に述べた目的TS割り当てプログラム検索処理を実施してこのネクストTSに対応づけられている4つのプログラムを特定し、さらに、これらプログラムそれぞれに対応づけられている優先度を把握する。
スケジューリング制御部413は、1つのネクストTSに対して、複数の有効候補プログラムが存在する場合には、優先度の値が最も小さな値が対応づけられている有効候補プログラムをこのネクストTSへの割り付け対象とする。
有効候補プログラムをネクストTSへの割り付け対象とするのに伴い、スケジューリング制御部413は、当該ネクストTSのタイムスロット情報に有効候補プログラムを特定するIDを対応づける。さらに、スケジューリング制御部413は、上述の有効候補プログラムの実行が完了したとき、上述のタイムスロット情報から当該有効候補プログラムを特定するIDを抹消する。
また、上述の情報の内容が、「SWITCH」を示す場合、スケジューリング制御部413は、ネクストアドレスの値に1を加えた値(ただし、ネクストアドレスが終端アドレスであった場合に限り、先頭アドレスの値)を新たなネクストアドレスとし、上述のスケジューリング処理を繰り返し実施する。
(1−3.イベントドリブンスケジューリング)以下、イベントドリブンスケジューリングについて説明する。イベントドリブンスケジューリングとは、現在スケジューリングの対象外となっている以下のプログラムの実行要求が生じているとき、前記タイムドリブンスケジューリングに代えて実施されるスケジューリングである。
(1−3−1.回復イベント処理)
スケジューリング制御部413は、上記特定プログラムの状態がwaiting、属性が「TD」、起床タイミングが「n」を示す場合、LP状態格納レジスタ424におけるイベントP_IDにより特定される現在のプログラムの状態をreadyに遷移させる。
(1−3−2.緊急回復イベント処理)
上記特定プログラムの状態がsuspended-waiting、属性が「TD」、起床タイミングが「e」を示す場合、スケジューリング制御部413は、この特定プログラムの状態をsuspended-readyに遷移させる。
(1−3−3.イベント起床処理)また、上記特定プログラムの状態がsuspended-waiting、属性が「TD」、起床タイミングが「n」を示す場合、LP状態格納レジスタ424におけるイベントP_IDにより特定される現在のプログラムの状態をsuspended-readyに遷移させる。
(1−3−4.緊急イベント起床処理)また、上記特定プログラムの状態がwaiting又はsuspended-waiting、属性が「ED」、起床タイミングが「e」を示す場合、スケジューリング制御部413は、特定プログラムの状態がwaitingであればreadyに、suspended-waitingであればsuspended-readyに変更する。
(1−4.放棄スケジューリング)
スケジューリング制御部413が、処理制御部411を介して処理実行部410からウエイトコードを受け取った場合、もしくは、DMA管理部418から後に述べるキャッシュミス信号を受け取った場合に実施する放棄スケジューリングについて説明する。
受け取ったウエイトコードが「vmp_sus」の場合、スケジューリング制御部413は、タイムオプション情報に関係なく、後述の緊急レジスタ切り替え処理を実施し、退避処理を実施して、さらに後述の制御レジスタ値更新処理を実施する。
なお、前記緊急レジスタ切り替え処理が実施される直前のスタンバイレジスタ群では、タイムドリブンスケジューリングによる復帰処理か、又は、イベントドリブンスケジューリングで実施されるイベント起床処理後の早期復帰処理がなされている。
また、有効候補プログラムが存在しない場合、及び、タイムオプション情報の内容が「MICRO-SLEEP」を示す場合、スケジューリング制御部413は、処理実行部410においてカレントレジスタ群内のレジスタ値の更新を伴わないプログラム実行である後述のNOP実行させるように処理制御部411に指示すると共に、以下の処理を実施する。
次に、復帰処理、緊急復帰処理及び早期復帰処理などの復帰に関する処理について説明する。
(1−5−1.復帰処理)
復帰処理とは、タイムドリブンスケジューリング実施後において、スケジューリング制御部413により実施される、レジスタ値をスタンバイレジスタ群に格納するための処理である。
(1−5−2.緊急復帰処理)
緊急復帰処理とは、イベントドリブンスケジューリングを実施した結果、先に述べた特定プログラムの起床タイミングが「e」を示す場合において、スケジューリング制御部413により実施される、レジスタ値をスタンバイレジスタ群に格納するための処理である。
(1−5−3.早期復帰処理)
早期復帰処理とは、イベントドリブンスケジューリングを実施した結果、先に述べた特定プログラムの起床タイミングが「n」を示す場合において、スケジューリング制御部413により実施される、レジスタ値をスタンバイレジスタ群に格納するための処理である。
(1−6−1.レジスタ切り替え処理)
スケジューリング制御部413は、サイクルカウンタ416からカウント値0信号を受け取ったとき、後述の基本サイクル調整処理を実施し、さらに後述の切り替えタイミング確認処理を行った上でレジスタ切り替えを実施するようにレジスタ切替部412に指示する。
(1−6−1−1.基本サイクル調整処理)
以下、基本サイクル調整処理について説明する。
スケジューリング制御部413は、レジスタ切り替えの直前に、LP状態格納レジスタ424を参照し、スタンバイレジスタ群に格納されているレジスタ値群に対応するプログラムの状態がsuspended-readyであるか否かを判断し、suspended-readyである場合には、スタンバイレジスタ群内の後述の残余サイクル値記憶領域から後述の実カウント値を取得する。
さらに、このタイムスロットのTS_IDの値が3である場合、即ち、リアルタイム処理を保証しないタイムスロットである場合、スケジューリング制御部413は、TS_IDの値が3を示すタイムスロット情報内のタイムラグ値を取得し、このタイムラグ値を上述の基本サイクルの値から差し引いたものを、次回のプログラム実行時における新たな基本サイクルとすると共に、このタイムスロット情報内の前記タイムラグ値を0に更新する。
(1−6−1−2.切り替えタイミング確認処理)
以下、切り替えタイミング確認処理について説明する。
(1−6−1−3.実時間保存処理)
以下、実時間保存処理について説明する。
また、上記実カウント値が負の値をとる場合、もしくは、上記実カウント値が正の値をとり、かつ、上述のレジスタ切り替えのトリガとなる「vmp_wait」コードを受け取っている場合、スケジューリング制御部413は、終端アドレスを目的アドレスとして目的タイムスロット検索処理を実施し、これにより特定されるタイムスロット(TS_ID=3)のタイムスロット情報の格納場所を特定し、このタイムスロット情報に格納されているタイムラグ値からこの実カウント値を加えることにより、このタイムラグ値を更新する。
(1−6−1−4.制御レジスタ値更新処理)
以下、制御レジスタ値更新処理について説明する。
スケジューリング制御部413は、現時点におけるネクストアドレスの値を新たなカレントアドレスの値とすると共に、当該ネクストアドレスの値に1を加えた値(ただし、ネクストアドレスが終端アドレスであった場合に限り、先頭アドレスの値)を新たなネクストアドレスとし、これに伴って、制御レジスタ420内に格納されているカレントアドレスの値及びネクストアドレスの値を更新する。
(1−6−2.緊急レジスタ切り替え処理)
以下、緊急レジスタ切り替え処理について説明する。
(1−7−1.退避処理)
スケジューリング制御部413は、レジスタ切り替えが完了した旨の通知をレジスタ切替部412から受け取ったとき、このレジスタ切り替えによりスタンバイレジスタ群となるレジスタ群に格納されているコンテキストのレジスタ値を、もともとこのコンテキストが格納されていたコンテキストメモリ500上の記憶領域に上書きする、即ち、退避するようにDMA管理部418に指示する。
(1−8−1.固有割込み処理)
また、スケジューリング制御部413は、リクエスト検出部419から、固有P_ID及び固有SP_IDを受け取った場合、以下の処理を実施する。
(1−8−2.共通割り込み処理)
また、スケジューリング制御部413は、リクエスト検出部419から、共通SP_IDを受け取った場合、直ちに処理制御部411を介し、処理実行部410に受け取った共通SP_IDにより特定されるサブルーチンプログラムにジャンプして処理を実行するように指示し、処理制御部411から当該サブルーチンプログラムの実行開始の通知を受け取ったとき、サイクルカウンタ416にカウントダウンを中断するように指示する。
また、DMA管理部418は、各機能部から要求されたDMA転送が完了したとき、その旨を示す信号(以下、「転送完了信号」という。)を当該機能部及びスケジューリング制御部413に出力し、また、処理実行部410からの要求に応じ、キャッシュメモリからプログラム及びデータを取得しようとして、キャッシュミスが生じた場合、キャッシュミスが生じたことを示す信号(以下、「キャッシュミス信号」という。)をスケジューリング制御部413に出力する。
また、サイクルカウンタ416は、スケジューリング制御部413からの指示にもとづき、カウントダウンを中断し、再開し、さらに、指示された時点におけるカウンタの値である実カウント値をスケジューリング制御部413に出力する。
(2.データ)図16は、時間割付情報格納レジスタ402及びLP状態格納レジスタ424に格納されている情報の内容を示す図である。
時間割付情報格納レジスタ402には、1)タイムスロット情報と、2)LP情報と、3)優先度&モード情報と、4)アイドルオプション情報と、5)タイムオプション情報とが格納されている。これらの情報は、タイムスロット毎に用意され、互いに関連付けられている。
(2−1−1.タイムスロット情報)タイムスロット情報には、タイムスロットを特定するためのTS_IDの値と、基本サイクルの値とが含まれている。
また、スケジューリング制御部413によりスケジューリングが実施されると、プログラムが割り当てられたタイムスロットのTS_IDの値に、このプログラムのIDが対応づけられることとなる。
(2−1−2.LP情報)LP情報には、タイムスロットへの割り当て候補となるプログラムに関する情報が格納されている。
また、TDの属性を有する各タイムスロットには、TDの属性を有する4つの候補プログラムが用意されている。
また、EDの属性を有する各タイムスロットには、EDの属性を有する1つの候補プログラムが用意されているのみである。各LP情報は、上述の割り当て先のタイムスロットに対応するタイムスロット情報に対応づけられている。
(2−1−3.優先度&モード情報)
優先度&モード情報には、タイムスロットへの割り当て候補となるプログラムの指定に関する情報が格納されている。
(2−1−4.アイドルオプション情報)
アイドルオプション情報には、タイムスロットに割り付けようとしたプログラムが全て実行不可能な状態となっている場合におけるプログラム実行動作を決定する情報が格納されている。
(2−1−5.タイムオプション情報)
タイムオプション情報には、実行中のプログラムが中断した場合における、中断以降のプログラム実行動作を決定する情報が格納されている。
(2−2.プログラム状態情報)
プログラム状態情報には、プログラム毎に、プログラムを特定するためのIDと、プログラム状態を示すコード及びプログラムの属性ならびにプログラムを起床又は回復させるタイミングを示すコードが格納されている。
また、プログラム実行時間が放棄されたことにより、waitingコード、suspended-waitingコード及びsuspended- readyコードの状態に遷移した場合には、これらコードに、前記放棄が生じた時点において割り当て先となっていたタイムスロットのTS_IDの値が付されている。
ここでスケジューリングの対象範囲外とは、現時点において、候補プログラムにさえなり得ないプログラムの状態を意味する。ちなみに、候補プログラムであって、waiting又はsuspended-waitingの状態となっているものを、候補スケジューリングの対象外ということとする。なお、先に述べたプログラムの回復とは、「TD」属性のプログラムが、waitingの状態からreadyになったこと、あるいは、「TD」属性のプログラムがsuspended-waitingの状態から上述したタイミング「e」で、suspended-readyになったことを意味する。
ただし、例外として、タイムドリブン型のプログラムであっても、イベントが発生すると候補スケジューリングの対象範囲内となり、イベントドリブンスケジューリングにて、タイムドリブンスケジューリングで決定される所定の順番に関係なくタイムスロットに割り付けられ実行される場合がある。つまり、この例外とは、タイムドリブン型のプログラムがsuspended‐waitingの状態からsuspended‐readyに遷移し、イベントドリブンスケジューリングにより、タイムスロットに割り付けられる場合である。
リクエスト検出部419には、図15に示すように、プログラム毎に用意されたLP固有フラグ群及び1つの共通フラグ群が格納されている。LP固有フラグ群とは、固有割込みに関する情報であり、現在、どのプログラムに対してどのような固有割込みの実行要求が発生しているのかを示す。このLP固有フラグ群は、見かけ上プログラム毎に存在するが、その実態は1つのビット列データであって、各フラグは、割込みを許容するプログラム及び固有割込みの内容に対応するビット位置に存在している。
共通フラグ群とは、共通割り込みの実行要求が発生しているか否かを示すフラグの集まりである。ここで、共通割り込みの実行要求とは、どのプログラムにおいても実行可能なサブルーチンプログラムの実行要求を意味する。共通フラグ群の実態は、1つのビット列データであって、割り込んで実行すべきサブルーチンプログラム固有のビット位置が存在する。
切替禁止フラグは、例えば、プログラムの実行中において共有資源へアクセスしており、プログラムを即座に中断することができないなどの理由により、現在レジスタ切り替えを実行できない状況にあることを示し、レジスタ切り替えを実行できない間、1(デフォルト値は0)の値をとる。この切替禁止フラグの値は、実行中のプログラムが発する命令により、書き換えが可能である。
(3.動作)
以下、仮想マルチプロセッサ400において、1つのプロセッサにより擬似並行的にプログラムを実行する際、効率的なプログラムの実行を実現する処理について説明する。
より具体的には、スケジューリング制御部413は、時間割付情報格納レジスタ402内のネクストアドレスに格納されているタイムスロット情報を参照し、タイムスロットを特定するTS_IDによりネクストTSを特定し、さらに、このタイムスロットに割り当てられている基本サイクルの値を取得する。そして、スケジューリング制御部413は、目的TS割り当てプログラム検索処理を実施する(ステップS121)。
より具体的には、スケジューリング制御部413は、ネクストTSに対応づけられている優先度&モード情報を参照し、優先度として0から3のいずれが示されているのか、さらに、モードとしてIndexモード及びLevelモードのいずれが示されているのかを把握する。
より具体的には、スケジューリング制御部413は、ネクストTSに対応づけられているアイドルオプション情報を参照し、「SWITCH」及び「MICRO-SLEEP」のいずれが示されているのかを判別する。つづいて、スケジューリング制御部413は、スケジューリング処理を実施する(ステップS124)。
また、上述の情報の内容が、「SWITCH」を示す場合、スケジューリング制御部413は、ネクストアドレスの値に1を加えた値(ただし、ネクストアドレスが終端アドレスであった場合に限り、先頭アドレスの値)を新たなネクストアドレスとし、ステップS120からS124のスケジューリング処理を繰り返し実施する。
スケジューリング制御部413は、リクエスト検出部419から受け取ったイベントP−IDによりプログラムを特定する。
さらに、スケジューリング制御部413は、LP状態格納レジスタ424を参照し、このプログラムの属性、状態、起床タイミングを判別する。そして、スケジューリング制御部413は、以下に示す(1)から(3)のいずれかに該当しているか否かを判断する(ステップS131)。
(1)プログラムの属性がEDである。
(2)プログラムの属性がTDであって、プログラム状態がsuspended‐waitingであり、かつ、起床タイミングが「n」である。
(3)running状態であったプログラムがイベントドリブンスケジューリングにより緊急レジスタ切り替えされた。
また、ステップS132における判別結果が、「e」である場合、スケジューリング制御部413は、先に述べた緊急回復イベント処理を実施し(ステップS134)、先に述べた緊急復帰処理を実施し(ステップS135)、さらに、先に述べた緊急レジスタ切り替え処理を実施した後(ステップS136)、上述のステップS100へと移行させる。
共通割込み処理の要求が発生している場合、即ち、リクエスト検出部419から共通SP_IDを受け取った場合、スケジューリング制御部413は、この共通SP_IDにより特定されるサブルーチンプログラムが実行されている間、サイクルカウンタ416におけるカウントダウンを中断させる(ステップS151〜ステップS152)一方、共通割込み処理の要求が発生しておらず、固有割込み処理の要求が発生している場合、つまり、リクエスト検出部419から固有P_ID及び固有SP_IDを受け取った場合、スケジューリング制御部413は、この固有SP_IDにより特定されるサブルーチンプログラムが実行されている間、サイクルカウンタ416におけるカウントダウンについては特に何もしない(ステップS153〜ステップS154)。
スケジューリング制御部413は、このタイムオプション情報検索処理を実行することにより、タイムオプション情報の内容を認識する。そして、スケジューリング制御部413は、タイムオプション情報の内容が「MICRO-SLEEP」を示すか否かを判別し、(ステップS165)タイムオプション情報の内容が「MICRO-SLEEP」である場合、処理制御部411を介して処理実行部410にnop実行させ(ステップS166)、上述のステップS102へと移行させる。
また、タイムオプション情報の内容が「TS_SWITCH」を示していない場合、タイムオプション情報の内容は、必然的に「LP_SWITCH」となるので、スケジューリング制御部413は、ここでは、目的TSをカレントTSとし(ステップS169)、先に述べたタイムドリブンスケジューリングを実施する(ステップS170)。
即ち、ステップS170において実施するタイムドリブンスケジューリングでは、目的TSがネクストTSではなくカレントTSであるという点と、スケジューリング処理を実施した結果、有効候補プログラムが存在しないときにアイドルオプション情報とは無関係にNOP実行へと移行するという点である。より具体的には、図18(B)ステップS169の処理にひき続き、スケジューリング制御部413は、目的タイムスロット検索処理を実施する(ステップS120)。
以上の処理が、目的TSをカレントTSとするステップS170におけるタイムドリブンスケジューリングである。このようなタイムドリブンスケジューリングを実行した後、スケジューリング制御部413は、有効候補プログラムがあるか否かを判断する(ステップS171)。
この指示の結果、処理実行部410へのクロックの供給は、遮断される。一方、有効候補プログラムがある場合、復帰処理を実施し(ステップS172)、緊急レジスタ切り替え処理を実施して(ステップS168)、上述のステップS100へと移行させる。
(4.プロセッサ駆動時におけるプログラム実行状況)以下、仮想マルチプロセッサ400の駆動時におけるプログラム実行状況について説明する。
(4−1.基本的なプログラム実行状態)
仮想マルチプロセッサ400では、先に述べたように、複数のタイムスロット及び各タイムスロットに割り当てられたプログラムにもとづいてプログラム実行される。
(4−2.放棄時におけるタイムオプション情報にもとづくプログラム実行状態)タイムオプション情報とは、先に述べたように、プログラム実行中にこのプログラムが実行不可能となり、このプログラムの実行時間が放棄された以後のプログラム実行の内容を決定するタイムスロットについての情報である。
図23(a)に示すように、タイムドリブン型のタイムスロットであるTS0、TS1、TS2及びTS3において、有効な候補プログラムがある場合、各タイムスロットの実行時間枠内で順次プログラムが実行される。ここで、TS0にはLP0が、TS1にはLP1が、TS2にはLP2が、TS3にはLP3がそれぞれ割り当てられている。
即ち、図23(c)に示すように、速やかにレジスタ切り替えが行われ、次のTS2に割り当てられているLP2が繰り上げられて実行される。このとき、スタンバイレジスタ群には、既に、LP2が格納されているため、LP2が速やかに実行される。
なお、上述のnop実行されている間、処理実行部410へのクロックの出力が遮断され、その結果、駆動電力が低減される。
(4−3.放棄時におけるアイドルオプション情報にもとづくプログラム実行状態)アイドルオプション情報とは、先に述べたように、あるタイムスロットにおいて有効な候補プログラムが1つも存在しない場合におけるプログラム実行の内容を決定するタイムスロットについての情報である。
このような状況を前提とし、以下、TS1において、有効な候補プログラムが1つも存在しないこととなった場合のプログラム実行について説明する。TS1において、有効な候補プログラムが1つも存在せず、かつ、このTS1のアイドルオプション情報が「SWITCH」を示す場合には、先に述べた各機能部における処理が実行されることにより、図24(b)に示すように、TS1に代わり、TS2に割り当てられているLP2が実行される。
(4−4.ウエイト状態解消時におけるプログラム実行状態)vmp_susコード出力をトリガとして、実行中であったプログラムは実行不可能な中断状態(suspended‐waiting)となる。
上述の実行不可能な中断状態となったプログラムは、ウエイト状態が解消したときに有効候補プログラムとなる。
図25(a)、(b)は、このような状況におけるプログラムの実行状況を説明する図である。図25(a)は、TS0からTS3の4つのタイムスロットのうち、既にTS3が、中断タイムスロットとなっており、処理実行部410からの「vmp_sus」コード出力をトリガとして、TS0に割り当てられているLP0が有効でなくなり、新たにTS0が中断タイムスロットとなった場合のプログラムの実行状況を示す。
そして、図25(a)に示すように、TS1及びTS2のみが繰り返し実行対象となる。図25(b)は、中断タイムスロットとなったTS0に割り当てられているLP0にウエイト状態の解消、つまり、実行不可能な中断状態(suspended-waiting)の解消が生じ、かつ、LP状態格納レジスタ424においてLP0の起床タイミングが「n」、即ち通常に起床させる旨を示す場合におけるプログラムの実行状況を示す。
これにより、実行不可能な中断状態の解消が生じた時点において、既に、スタンバイレジスタ群に格納されているレジスタ値が使用され、この格納が無駄とならない。このとき、スケジューリング制御部413は、コンテキスト内に保存されている実カウント値分の時間t4だけ、LP0を実行するように制御する。
以下、上述のケースにおいて、LP状態格納レジスタ424におけるLP0の起床タイミングが「e」を示している場合における、ウエイトの解消時、つまり、実行不可能な中断状態が解消したときのプログラム実行状況について説明する。
(4−5.緊急的な復帰イベント発生時におけるプログラム実行状態)図26(a)は、図25(a)と同様に、TS0からTS3の4つのタイムスロットのうち、既にTS3が、中断タイムスロットとなっており、処理実行部410からの「vmp_sus」コード出力をトリガとして、TS0に割り当てられているLP0が有効でなくなり、新たにTS0が中断タイムスロットとなった場合のプログラムの実行状況を示す。
また、図25(a)と同様に、「vmp_sus」コードを受け取った場合、スケジューリング制御部413は、LP0のプログラム状態をsuspended-waitingに更新し、実行時間枠内において使われずに残った時間t6を実カウント値としてコンテキスト内に保存する。
この場合、スケジューリング制御部413は、図26(b)に示すように、ウエイトの解消、つまり、実行不可能な中断状態の解消が生じたとき、LP0のプログラム状態をsuspended-readyに更新し、即座にLP0を実行させようとする。ここで上述の即座とは、復帰処理やレジスタ切り替えなどに要するオーバーヘッド(t2)でのプログラム実行を意味する。
(4−6.イベント処理要求が発生した場合におけるプログラム実行状態)イベント処理要求が発生しない場合、図27(a)に示すように、TS0、TS1、TS2及びTS3が順次実行対象となり、これらタイムスロットそれぞれに割り当てられたプログラムLP0、LP1、LP2及びLP3が逐次実行される。
(4−7.共通割り込み処理要求が発生した場合におけるプログラム実行状況)図28(a)、(b)は、共通割り込み処理要求が発生した場合におけるプログラム実行状況を説明する図である。
この結果、TS2の実行時間枠t9に上述のサブルーチンにおいてプログラムが実行されていた時間t10を加えた時間がLP2の実行時間となる。このように、共通割り込み処理の実行時間を、割り込まれたLP2の本来の実行時間に含めないようにするのは、全てのプログラムが共通割り込み処理の実行を必要としているにもかかわらず、偶然に割り込まれたある1つのタイムスロットの実行時間枠を消費することにより、このタイムスロットに割り当てられているプログラムだけ実行時間が減少するという不公平が生じることを是正するためである。
(4−8.固有割込み処理要求が発生した場合におけるプログラム実行状況)
図29(a)、(b)、(c)は、固有割込み処理要求が発生した場合におけるプログラム実行状況を説明する図である。
このように、LP3に対応する固有割込み処理の実行時間を、割り込まれたLP3の本来の実行時間に含めるのは、LP3のみがこの固有割込み処理の実行を必要としており、固有割込み処理の実行を必要とするプログラムの実行時間から固有割込み処理の実行時間が消費されるとしても、共通割り込み処理の場合のような実行時間についてのプログラム間における不公平が生じないためである。
このときも上述と同様に、スケジューリング制御部413は、固有割込み処理実行用サブルーチンにおけるプログラム実行時間を、割り込まれたLP3の実行時間に含める。以上のように、第2の実施形態によれば、1つの仮想マルチプロセッサ400において、擬似並行的に複数のプログラムを実行しても、コンテキストの退避、判断及び復帰は、プログラムの実行と並行して実施するため、プログラムの実行時間にコンテキストの退避、判断及び復帰に要する時間が介在することがないので、効率的にタスクを実行することができる。
また、本実施形態では、図31(a)に示すように、クロックマスク部427が、スケジューリング制御部413からマスク信号を受信している間、処理実行部410へのクロックパルスの信号経路を遮断することにより、処理実行部410の電力消費を低減しているが、これに限らず、以下のようにしてもよい。
また、図31(c)に示すように、発振器600と処理実行部410との間にあるクロックパルスの信号経路上に配置される分周器などからなる分周部431が、スケジューリング制御部413から上述のマスク信号に代わる分周信号を受信している間、例えば、4分周することにより、処理実行部410の駆動周波数を下げて電力消費を低減してもよい。
また、第2の実施形態では、リクエスト検出部419は、イベントP_IDの出力を行おうとするとき、現在を起点として所定時間分過去に遡った期間における記憶された前記イベントP_IDの出力回数が、予め決められているしきい値を越えることとなる場合、前記出力回数が前記しきい値以下となるように上述の出力を遅延するとしたが、前記出力回数が当該しきい値を越えることとなる場合、前記イベントP_IDの出力を取り止める、即ち、イベント処理要求を無視するとしてもよい。
また、第2の実施形態では、プログラム(LP)の数は、レジスタ群の数を上回っていることを前提として説明していたが、これに限らず、プログラムの数がレジスタ群の数以下であってもよい。
選択先を切り替えた後も、コンテキストメモリにレジスタ値群を退避する動作は不要である。
30 外部プロセッサ
100 仮想マルチプロセッサ
110 処理実行部
111 処理制御部
112 レジスタ切替部
113 切替入替制御部
114 レジスタ群
115 レジスタ群
116 サイクルカウンタ
117 外部I/F
118 DMA管理部
119 完了通知レジスタ
120 制御レジスタ
121 設定フラグレジスタ
200 コンテキストメモリ
201 コンテキスト格納領域
202 実行順序テーブル格納領域
301 入出力部
302 第1メモリ
303 第2メモリ
304 カウントダウン部
400 仮想マルチプロセッサ
402 時間割付情報格納レジスタ
410 処理実行部
411 処理制御部
412 レジスタ切替部
413 スケジューリング制御部
414 レジスタ群
415 レジスタ群
416 サイクルカウンタ
417 外部I/F
418 DMA管理部
419 リクエスト検出部
420 制御レジスタ
421 設定フラグレジスタ
424 LP状態格納レジスタ
425 プロセッサ状態格納部
427 クロックマスク部
430 電力制御部
431 逓倍部
432 通常処理部
433 分周部
500 コンテキストメモリ
501 コンテキスト格納領域
600 発振器
601 PLL
700 バス
701 外部プロセッサ処理要求信号線
702 外部プロセッサ処理完了信号線
Claims (14)
- メモリに格納されている複数のレジスタ値群を用いて、これらレジスタ値群それぞれに対応するプログラムを逐次実行するプロセッサであって、
複数のレジスタ群と、前記複数のレジスタ群のうちいずれか1つを、プログラム実行の基礎とする実行対象レジスタ群として選択し、当該選択先を所定時間毎に切り替える選択先切り替え手段と、
前記切り替えがなされる毎に、前記複数のレジスタ群のうち前記選択がなされていない1のレジスタ群に前記レジスタ値群を復帰する復帰手段と、
前記切り替えがなされる毎に、前記復帰に先行して、当該復帰の対象となったレジスタ群にある各レジスタ値を、これらレジスタ値に対応する前記メモリ中のレジスタ値群に上書きすることにより退避する退避手段と、
前記切り替えがなされる毎に、前記実行対象レジスタ群にあるプログラムカウンタ値を含むレジスタ値群によりプログラムを特定し、前記特定したプログラムを実行するプログラム実行手段と、
プログラムの実行を中断する中断事由が発生していることを検出する中断事由発生検出手段と、
前記中断事由が解消したことを検出する中断事由解消検出手段とを備え、
前記所定時間は、所望の処理時間が異なるプログラムに応じて、プログラム実行手段を占有する時間を配分するために定められる、プログラムの実行時間枠となるタイムスロットを介して、複数のカウント値がそれぞれのプログラムに対応づけられて格納されたテーブル情報にもとづいて、前記カウント値により特定される時間であり、
さらに、前記復帰の候補となる優先順位が対応づけられた候補レジスタ値群が複数存在し、
前記復帰手段は、前記タイムスロットを所定の順番で周期的に切り替えるために、現在実行対象となっているタイムスロット及び次の実行対象とすべきタイムスロットを特定する情報を参照して、次の実行対象とすべきタイムスロットを特定した後、前記カウント値と複数の候補レジスタ値群とをタイムスロットと関連づけた時間割付情報を参照して、前記特定したタイムスロットに割り当てられているプログラムの実行時間枠を取得し、前記特定したタイムスロットに割り当てられている複数の候補レジスタ値群のうちから、前記優先順位にもとづいて、前記復帰の対象とするレジスタ値群を決定して前記復帰を実施し、
前記プログラム実行手段は、プログラムの実行に際し、当該プログラムについての中断事由の発生が検出された場合、当該中断事由が解消するまで、当該プログラムの実行のために割り当てられるべき実行期間を放棄することを特徴とするプロセッサ。 - 前記中断事由は、複数あり、前記放棄のトリガとして有効な中断事由は、プログラム毎に固有であり、前記プログラム実行手段は、実行中のプログラムに有効な中断事由が発生しているときに限り、前記放棄を実施することを特徴とする請求項1記載のプロセッサ。
- さらに、前記複数の中断事由のうちの1つを特定する情報と、特定された当該中断事由の発生の有無を示す情報とを対応づけた中断情報を取得する取得手段を備え、
前記レジスタ値群は、前記複数の中断事由のうちの1つを特定する情報と、特定された当該中断事由の有効又は無効を示す情報とを対応づけた設定情報を含み、
前記プログラム実行手段は、前記中断情報と前記設定情報とを比較参照して、前記放棄を実施するか否かを判断することを特徴とする請求項2記載のプロセッサ。 - 前記設定情報は、中断事由毎に固有のビット位置が定められ、各ビット位置に当該ビット位置に対応する中断事由の有効又は無効を示す値が示されたビット列データあり、
前記中断情報は、中断事由毎に固有のビット位置が定められ、各ビット位置に当該ビット位置に対応する中断事由の発生の有無を示す値が示されたビット列データあり、
前記プログラム実行手段は、前記設定情報において有効を示す値が存在するビット位置に対応する中断事由が示されている前記中断情報内のビット位置のみを参照して前記判断を実施することを特徴とする請求項3記載のプロセッサ。 - 前記プログラム実行手段は、前記放棄を実施するとき、その旨を前記復帰手段に通知し、前記復帰手段は、前記中断事由が解消するまで、前記放棄を行ったプログラムに対応するレジスタ値群を前記復帰の対象としないように、当該レジスタ値群の順序を無視して前記復帰を実施することを特徴とする請求項1記載のプロセッサ。
- 前記復帰手段は、前記通知がなされたとき、前記無視を行おうとしている前記レジスタ値群を、例外的に、前記通知後において2回目に実施する復帰における最優先の復帰対象の候補とし、前記2回目の復帰開始までに前記中断事由が解消している場合は、当該レジスタ値群を前記復帰対象に決定し、前記中断事由が解消していない場合、以後中断事由が解消するまで当該レジスタ値群について前記無視を継続することを特徴とする請求項5記載のプロセッサ。
- 前記復帰手段は、前記無視がなされたレジスタ値群が複数あり、このうち2以上のレジスタ値群について、前記中断事由が解消した場合、これら2以上のレジスタ値群のいずれか1つについて、前記復帰の時期が到来した場合、これら2以上のレジスタ値群のうち、最後に無視されたレジスタ値群を当該時期における復帰対象とすることを特徴とする請求項5記載のプロセッサ。
- 前記プログラム実行手段は、前記放棄を行うとき、その旨を前記選択先切り替え手段に通知し、前記選択先切り替え手段は、前記通知を受け取ったとき、前記切り替えを実施することを特徴とする請求項1記載のプロセッサ。
- 前記中断事由は、プログラムの実行に際して、キャッシュミスが発生したことを特徴とする請求項1記載のプロセッサ。
- 前記中断事由は、プログラム実行の際、外部装置に処理を依頼し、当該外部装置からの処理結果を待つ状態となったことを特徴とする請求項1記載のプロセッサ。
- 前記中断事由は、プログラム実行の際、共有資源を利用しようとして、当該共有資源が開放されるのを待つ状態となったことを特徴とする請求項1記載のプロセッサ。
- 前記プログラム実行手段は、プログラム実行用のCPUを有し、前記放棄がなされた実行期間中、当該CPUを停止することを特徴とする請求項1記載のプロセッサ。
- 前記プログラム実行手段は、プログラム実行用のCPUを有し、前記放棄がなされた実行期間中、当該CPUの駆動周波数を低減することを特徴とする請求項1記載のプロセッサ。
- 前記プログラム実行手段は、プログラム実行用のCPUを有し、前記複数のプログラムを実行する際、前記CPUの処理能力が、これらプログラムの実行負荷に対して高すぎることにより、処理の空き時間が発生しないように、プログラムの実行負荷に応じて、前記CPUの駆動周波数を調整することを特徴とする請求項1記載のプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007101054A JP4295792B2 (ja) | 2002-01-09 | 2007-04-06 | プロセッサ及びプログラム実行方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002002816 | 2002-01-09 | ||
JP2007101054A JP4295792B2 (ja) | 2002-01-09 | 2007-04-06 | プロセッサ及びプログラム実行方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005287949A Division JP4196982B2 (ja) | 2002-01-09 | 2005-09-30 | プロセッサ及びプログラム実行方法 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2007226823A true JP2007226823A (ja) | 2007-09-06 |
JP2007226823A5 JP2007226823A5 (ja) | 2009-03-19 |
JP4295792B2 JP4295792B2 (ja) | 2009-07-15 |
Family
ID=38548506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007101054A Expired - Lifetime JP4295792B2 (ja) | 2002-01-09 | 2007-04-06 | プロセッサ及びプログラム実行方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4295792B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010211526A (ja) * | 2009-03-10 | 2010-09-24 | Fujitsu Ltd | プログラム、コンピュータ及び制御方法 |
-
2007
- 2007-04-06 JP JP2007101054A patent/JP4295792B2/ja not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010211526A (ja) * | 2009-03-10 | 2010-09-24 | Fujitsu Ltd | プログラム、コンピュータ及び制御方法 |
Also Published As
Publication number | Publication date |
---|---|
JP4295792B2 (ja) | 2009-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3813930B2 (ja) | プロセッサ及びプログラム実行方法 | |
US10949249B2 (en) | Task processor | |
US9047120B2 (en) | Virtual queue processing circuit and task processor | |
US9170841B2 (en) | Multiprocessor system for comparing execution order of tasks to a failure pattern | |
KR100649107B1 (ko) | 실시간 동작 수행방법 및 시스템 | |
US20170357536A1 (en) | Task processing device | |
JP5347451B2 (ja) | マルチプロセッサシステム、競合回避プログラム及び競合回避方法 | |
KR20050016170A (ko) | 실시간 동작 수행방법 및 시스템 | |
JPH09128351A (ja) | 並列計算機における並列プロセススケジューリング方法および並列計算機用処理装置 | |
JP4825257B2 (ja) | プロセッサ | |
US20160302255A1 (en) | Sensor data collecting device | |
JP4295792B2 (ja) | プロセッサ及びプログラム実行方法 | |
JP4196982B2 (ja) | プロセッサ及びプログラム実行方法 | |
JP4238246B2 (ja) | プロセッサ | |
US20050066093A1 (en) | Real-time processor system and control method | |
JP2009541852A (ja) | コンピュータマイクロジョブ | |
JP2010165209A (ja) | マルチスレッドプロセッサ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090203 |
|
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: 20090317 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090410 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120417 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4295792 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130417 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130417 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140417 Year of fee payment: 5 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |