JP2003271399A - プロセッサ及びプログラム実行方法 - Google Patents

プロセッサ及びプログラム実行方法

Info

Publication number
JP2003271399A
JP2003271399A JP2003001616A JP2003001616A JP2003271399A JP 2003271399 A JP2003271399 A JP 2003271399A JP 2003001616 A JP2003001616 A JP 2003001616A JP 2003001616 A JP2003001616 A JP 2003001616A JP 2003271399 A JP2003271399 A JP 2003271399A
Authority
JP
Japan
Prior art keywords
program
execution
register
time
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.)
Granted
Application number
JP2003001616A
Other languages
English (en)
Other versions
JP3813930B2 (ja
Inventor
和司 ▲くら▼田
Kazuji Kurata
Tetsuya Tanaka
哲也 田中
Shigeki Fujii
茂樹 藤井
Nobuo Higaki
信生 檜垣
Tokuzo Kiyohara
督三 清原
Kozo Kimura
浩三 木村
Hideshi Nishida
英志 西田
Toshio Sugimura
敏夫 杉村
Hiroshi Kadota
浩 廉田
Kazuya Furukawa
量也 古川
Kunihiko Hayashi
邦彦 林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2003001616A priority Critical patent/JP3813930B2/ja
Priority to US10/338,408 priority patent/US7386707B2/en
Publication of JP2003271399A publication Critical patent/JP2003271399A/ja
Application granted granted Critical
Publication of JP3813930B2 publication Critical patent/JP3813930B2/ja
Priority to US12/110,513 priority patent/US7921281B2/en
Priority to US12/110,491 priority patent/US8006076B2/en
Priority to US12/110,539 priority patent/US7930520B2/en
Priority to US13/179,614 priority patent/US8719827B2/en
Priority to US14/203,569 priority patent/US9823946B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets

Abstract

(57)【要約】 【課題】 1つのプロセッサで擬似並行的に複数のプロ
グラムを実行しても、効率的にプログラム実行可能なプ
ロセッサを提供する。 【解決手段】 メモリに格納されている複数のレジスタ
値群を用いて、各レジスタ値群に対応するプログラムを
実行するプロセッサであって、複数のレジスタ群と、複
数のレジスタ群のうちいずれか1つを、実行対象レジス
タ群として選択し、選択先を所定時間毎に切り替えるレ
ジスタ切替部112と、複数のレジスタ群のうち前記選
択がなされていない1のレジスタ群にレジスタ値群を復
帰し、当該復帰に先行して、復帰の対象となった各レジ
スタ値を、これらレジスタ値に対応する前記メモリ中の
レジスタ値群に上書きすることにより退避する切替入替
制御部113と、切り替えがなされる毎に、実行対象レ
ジスタ群にあるレジスタ値群により特定されるプログラ
ムを実行する処理実行部110とを備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プロセッサに関
し、特に、効率的にプログラムを実行する技術に関す
る。
【0002】
【従来の技術】従来、複数のタスクを1つのプロセッサ
で擬似並行的に処理するためのOS(Operating Syste
m)がある。このOSは、以下の処理をプロセッサに実
行させる。即ち、プロセッサは、タスク毎に対応するプ
ログラムの実行位置やデータの格納位置などを示す制御
情報(以下、「コンテキスト」という。)をプロセッサ
内部のレジスタ群に格納し、格納されたコンテキストに
もとづいてプログラムやデータを取得してタスクを実行
し、タスクの実行に伴ってコンテキストを更新し、この
コンテキストをメモリに書き込むという処理を繰り返
す。
【0003】ここで、便宜的に、外部のメモリに格納さ
れているコンテキストをレジスタ群に書き込むことを復
帰といい、レジスタ群に格納されているコンテキストを
このメモリに書き込むことを退避ということとする。図
32は、このようなOSの支配のもと、タスクを実行す
る従来のプロセッサ1001の機能ブロック図であり、
上述のコンテキストを格納しているコンテキストメモリ
1010も合わせて示す。
【0004】プロセッサ1001は、タスクを実行する
処理実行部1002と、処理実行部1002における処
理に関する制御を実施する制御部1003と、実行する
タスクのコンテキストを格納するレジスタ群1004と
を有する。レジスタ群1004は、1つのタスクに対応
するコンテキスト、即ち、レジスタ値群を格納するため
のレジスタの集まりである。
【0005】処理実行部1002は、新たなコンテキス
トがレジスタ群1004に格納される毎に、このコンテ
キストにもとづいてプログラムやデータを取得してタス
クを実行する。制御部1003は、レジスタ群1004
内に既に格納されているコンテキストをコンテキストメ
モリ1010に上書きすることにより退避し、次にどの
コンテキストをレジスタ群1004への格納対象とすべ
きかを判断し、この判断により格納対象とされたコンテ
キストをコンテキストメモリ1010から読み出してレ
ジスタ群1004に書き込むことにより復帰する。
【0006】したがって、処理実行部1002は、上述
の退避、判断及び復帰中においては、レジスタ群100
4の内容であるコンテキストを更新している最中である
ので、プログラムの実行を中断せざるを得ない。図33
は、プロセッサ1001におけるタスク実行の流れ及び
レジスタ群1004とコンテキストメモリ1010との
間におけるコンテキストの入出力の状況を示す図であ
る。
【0007】この図の左から右へと時間が経過するもの
とする。ここでは、例えば、タスクA、タスクB、タス
クC及びタスクDの4つのタスクがあるものとし、タス
クの実行順序は、各タスクが均等に処理されるようにタ
スクA、タスクB、タスクC及びタスクDの順となって
いるものとし、タスクDの次は、また、タスクAから実
行されるものとする。
【0008】従来、各タスクの実行に際し、事前に上述
の退避、判断及び復帰に実施される。つまり、各タスク
を実行する上で、上述の退避、判断及び復帰がオーバー
ヘッドとなっている。ここで、タスクAからタスクDま
での処理を1サイクルの処理と定義づけると、上述のO
Sは、この1サイクルにおける、各タスクの実行順序及
びタスクの実行時間、つまり、タスクのスケジュールを
規定している。
【0009】制御部1003は、このスケジュールにも
とづいて、上述の判断、即ち、レジスタ群1004への
格納対象とするコンテキストを決定する。以上のような
処理を実施することにより、1つのプロセッサで複数の
タスクを擬似並行的に処理することができる。また、上
述の退避、判断及び復帰をハードウエアで実行し、複数
のタスクを擬似並行的に処理するプロセッサもある。
(例えば、特許文献1参照)。
【0010】
【特許文献1】特開平10−11301号公報
【0011】
【発明が解決しようとする課題】しかしながら、このよ
うに1つのプロセッサで複数のタスクを擬似並行的に処
理する場合、1つのタスクのみを継続的に実行する場合
に比べ、タスクの実行までに上述の退避、判断及び復帰
のオーバーヘッドが生じ、タスクの実行開始から次のタ
スクの実行開始までの時間がかかり、効率的にタスクの
実行が行えないという問題がある。
【0012】特に、携帯電話などの通信機器及びTV受像
機などの放送機器などにおいては、リアルタイムに近い
状態でのデータ処理を実行する必要があるが、このよう
な機器において、複数のタスクを擬似並行的に処理する
場合、上述のオーバーヘッドがある従来のタスクの実行
方法では、上述のようなリアルタイム近い状態でのデー
タ処理の実施は困難となる。
【0013】そこで本発明は、上記問題点に鑑みてなさ
れたものであり、1つのプロセッサで擬似並行的に複数
のタスク、即ち、プログラムを実行する場合に、効率的
にタスクを実行可能なプロセッサ及びプログラム実行方
法を提供することを目的とする。
【0014】
【課題を解決するための手段】上記の目的を達成するた
めに、本発明に係るプロセッサは、メモリに格納されて
いる複数のレジスタ値群を用いて、これらレジスタ値群
それぞれに対応するプログラムを逐次実行するプロセッ
サであって、複数のレジスタ群と、前記複数のレジスタ
群のうちいずれか1つを、プログラム実行の基礎とする
実行対象レジスタ群として選択し、当該選択先を所定時
間毎に切り替える選択先切り替え手段と、前記切り替え
がなされる毎に、前記複数のレジスタ群のうち前記選択
がなされていない1のレジスタ群に前記レジスタ値群を
復帰する復帰手段と、前記切り替えがなされる毎に、前
記復帰に先行して、当該復帰の対象となったレジスタ群
にある各レジスタ値を、これらレジスタ値に対応する前
記メモリ中のレジスタ値群に上書きすることにより退避
する退避手段と、前記切り替えがなされる毎に、前記実
行対象レジスタ群にあるレジスタ値群により特定される
プログラムを実行するプログラム実行手段とを備えるこ
とを特徴とし、また、複数のレジスタ値群を用いて、こ
れらレジスタ値群それぞれに対応するプログラムを逐次
実行するプロセッサであって、前記レジスタ値群のそれ
ぞれを格納する複数のレジスタ群と、前記複数のレジス
タ群のうちいずれか1つを、プログラム実行の基礎とす
る実行対象レジスタ群として選択し、当該選択先を所定
時間毎に切り替える選択先切り替え手段と、前記切り替
えがなされる毎に、前記実行対象レジスタ群にあるレジ
スタ値群により特定されるプログラムを実行するプログ
ラム実行手段とを備えることを特徴とする。
【0015】また、本発明に係るプログラム実行方法
は、複数のレジスタ群を備え、メモリに格納されている
複数のレジスタ値群を用いて、これらレジスタ値群それ
ぞれに対応するプログラムを逐次実行するプロセッサに
おいて、プログラムを実行するプログラム実行方法であ
って、前記複数のレジスタ群のうちいずれか1つを、プ
ログラム実行の基礎とする実行対象レジスタ群として選
択し、当該選択先を所定時間毎に切り替える選択先切り
替えステップと、前記切り替えがなされる毎に、前記複
数のレジスタ群のうち前記選択がなされていない1のレ
ジスタ群に前記レジスタ値群を復帰する復帰ステップ
と、前記切り替えがなされる毎に、前記復帰に先行し
て、当該復帰の対象となったレジスタ群にある各レジス
タ値を、これらレジスタ値に対応する前記メモリ中のレ
ジスタ値群に上書きすることにより退避する退避ステッ
プと、前記切り替えがなされる毎に、前記実行対象レジ
スタ群にあるレジスタ値群により特定されるプログラム
を実行するプログラム実行ステップとを含むことを特徴
とし、また、複数のレジスタ群を備え、複数のレジスタ
値群を用いて、これらレジスタ値群それぞれに対応する
プログラムを逐次実行するプロセッサにおいて、プログ
ラムを実行するプログラム実行方法であって、前記複数
のレジスタ群のうちいずれか1つを、プログラム実行の
基礎とする実行対象レジスタ群として選択し、当該選択
先を所定時間毎に切り替える選択先切り替えステップ
と、前記切り替えがなされる毎に、前記実行対象レジス
タ群にあるレジスタ値群により特定されるプログラムを
実行するプログラム実行ステップとを含むことを特徴と
する。
【0016】
【発明の実施の形態】<第1の実施形態> (1.構成)本発明の第1の実施形態について、図面を
参照しながら詳細に説明する。図1は、本発明の第1の
実施形態における仮想マルチプロセッサ100の機能ブ
ロック図である。
【0017】仮想マルチプロセッサ100は、プレート
の逐次切り替え実行を行うプロセッサである。ここで、
プレートとは、従来のタスク又はOSのスケジューリン
グ単位である1以上のタスクをまとめたものであり、プ
ロセッサ側から見た実行対象をいう。1つのプレート
は、1つの実行位置、即ち、プログラム中の命令位置を
有する。
【0018】また、図1には、上述のプレート毎に用意
されるプレートに対応するプログラムの実行位置を示す
プログラムカウンタの値、上述のプログラム及びデータ
の格納位置を示すアドレスなどの制御情報、即ち、コン
テキストが格納されているコンテキストメモリ200も
合わせて示している。ここで、上述のプレートに対応す
るプログラムを実行することを、プレートの実行という
こととする。
【0019】上述のコンテキストメモリ200は、SR
AMにより構成され、複数のプレートの各コンテキスト
が格納されているコンテキスト格納領域201及び各プ
レートの実行順序を示す実行順序テーブル300が格納
されている実行順序テーブル格納領域202を有する。
この実行順序テーブル300は、1つのプレートに含ま
れる管理用アプリケーションプログラム(以下、「管理
アプリケーション」という。)により生成されたプレー
トの実行スケジュールを定めたテーブルであり、コンテ
キスト格納領域201における複数のメモリアドレス
(以下、「コンテキストアドレス」という。)の値の配
列であり、これらコンテキストアドレスの値により示さ
れるそれぞれの場所には、各プレートを実行するのに必
要なコンテキストが存在する。
【0020】なお、実行順序テーブル格納領域202に
おいて、各コンテキストアドレスの値が格納されている
物理的位置を示すアドレスを以下、テーブルアドレスと
いうこととする。上述のテーブルアドレスは、数値で示
されるものであって、この数値の大小関係は、このテー
ブルアドレスにより特定される位置に格納されたコンテ
キストアドレスの上記配列における順序に対応する。
【0021】つまり、スケジューリング1サイクルにお
いては、テーブルアドレスの値が小さい順に、このテー
ブルアドレスの値により示される物理的位置に格納され
たコンテキストアドレスの値により特定されるコンテキ
ストアドレスと対応するプレートが実行されることとな
る。このようにして、実行順序テーブル300に、プレ
ートの実行順序が、A→B→C→A→D→Cと示されて
いる場合、このような順序で1サイクル分の各プレート
の実行が終了し、このサイクルが複数回繰り返されるこ
ととなる。
【0022】各プレートの1回分の処理時間をいずれも
同じ時間となっており、処理に時間がかかるプレート
は、上述のプレートAのように、1サイクルにおける実
行回数が多くなっている。図34は、仮想マルチプロセ
ッサ100と外部プロセッサ30との接続関係を示す図
である。
【0023】上述の機能部の他に、仮想マルチプロセッ
サ100に関連し、以下の機能部がある。即ち、プログ
ラム及びデータなどを格納し、DRAMからなる主メモリ1
0と、図示していないが、この主メモリ10と仮想マル
チプロセッサ100との間に接続され、SRAMからな
る上述のプログラム及びデータなどを格納するためのキ
ャッシュメモリとが存在し、これらはバス700を介し
て仮想マルチプロセッサ100に接続されている。
【0024】また、仮想マルチプロセッサ100は、複
数のプレートを擬似並行的に実行するものであるが、こ
れら複数のプレートのうちの1つが、外部のプロセッサ
に処理を依頼する場合もあり、そのための外部プロセッ
サが、上記と同様にバスを介して仮想マルチプロセッサ
100に接続されている。即ち、図34に示すように、
外部プロセッサ30と主メモリ10はバス700によっ
て接続されており、仮想マルチプロセッサ100と外部
プロセッサ30は、主メモリ10を介して接続されてい
る。
【0025】仮想マルチプロセッサ100は、上述のバ
ス700を介して、主メモリ10に外部プロセッサ30
が実行する処理の入力データをライトし、主メモリ10
から外部プロセッサ30が実行した処理の結果であるデ
ータをリードする。また、外部プロセッサ30は、主メ
モリ10から処理の入力データをリードし、主メモリ1
0に処理結果であるデータをライトする。
【0026】外部プロセッサ処理要求信号線701及び
外部プロセッサ処理完了信号線702は、上述のバス7
00とは独立して設けられ、それぞれ仮想マルチプロセ
ッサ100と外部プロセッサ30と接続する。より具体
的には、上記外部プロセッサ処理要求信号線701は、
処理要求信号を仮想マルチプロセッサ100から外部プ
ロセッサ30へと送信するための信号系統であり、ま
た、外部プロセッサ処理完了信号線702は、処理完了
信号を外部プロセッサ30から仮想マルチプロセッサ1
00へと送信するための信号系統である。
【0027】これらそれぞれの信号の伝達により、仮想
マルチプロセッサ100から外部プロセッサへの処理の
依頼と、外部プロセッサから仮想マルチプロセッサ10
0への処理完了の通知とがなされる。仮想マルチプロセ
ッサ100は、SIMD(Single Instruction / Multi
pleData)型のプロセッサであって、処理実行部110
と、処理制御部111と、レジスタ切替部112と、切
替入替制御部113と、第1レジスタ群114と、第2
レジスタ群115と、サイクルカウンタ116と、外部
I/F117と、DMA管理部118と、完了通知レジ
スタ119と、制御レジスタ120と、設定フラグレジ
スタ121とを有する。
【0028】第1レジスタ群114及び第2レジスタ群
115は、コンテキストの内容であるプログラムカウン
タの値、プログラム及びデータの格納位置を示すアドレ
スなどのレジスタ値をそれぞれ格納するためのレジスタ
の集まりである。また、各レジスタは、プレートが実行
される際、このレジスタに格納されたプログラムカウン
タなどの値が更新されたか否かを示す更新フラグの値を
格納するための1ビットの記憶領域を有する。
【0029】上述の値が更新された場合、更新フラグの
値は1を示し、更新がなされていない場合、更新フラグ
の値は0を示す。なお、デフォルトの状態では、第1レ
ジスタ群114及び第2レジスタ群115の各レジスタ
の更新フラグの値は0となっている。レジスタ切替部1
12は、切替入替制御部113からの指示にしたがい、
第1レジスタ群114及び第2レジスタ群115のうち
いずれか1つのレジスタ群をプログラム実行の際に使用
するレジスタ群(以下、「カレントレジスタ群」)とし
て選択する。
【0030】ここで、便宜的にカレントレジスタ群とし
て選択されていない方のレジスタ群をスタンバイレジス
タ群といい、上述の選択対象を現在選択がなされている
レジスタからもう一方のレジスタに切り替えることを、
レジスタ切り替えということとする。処理実行部110
は、上述のレジスタ切り替え、つまり、カレントレジス
タ群の選択がなされると、このカレントレジスタ群に格
納されているコンテキストにもとづいて、実行するプロ
グラム及びこのプログラムの実行に必要なデータの所在
を特定し、DMA管理部118にこれらプログラム及び
データを取得するように指示する。
【0031】これらプログラム及びデータの取得は、キ
ャッシュメモリからの取得を前提としており、キャッシ
ュメモリに目的とするデータが存在する場合(以下、
「キャッシュヒット」という。)、または、例外的に後
述する外部記憶装置からブログラム及びデータを取得し
た場合、処理実行部110は、これらプログラム及びデ
ータを取得し、これらプログラム及びデータを用いて、
処理制御部111からの指示にしたがいプレートを実行
する。
【0032】ただし、処理実行部110は、例外的にD
MA管理部118に図示されない外部記憶装置からプロ
グラム及びデータを取得するように指示する場合もあ
る。この外部記憶装置は、同じく図示されない他の入出
力装置などによってアクセス(例えばリード、ライト)
することも可能であり.複数の装置からアクセスする場
合と、1つの装置からアクセスする場合とではそのアク
セスの時間が異なる(複数の装置からのアクセス時間の
方が長くなる)。
【0033】一方、キャッシュメモリに目的とするデー
タが存在しない場合、即ち、キャッシュミスが生じた場
合、または、外部記憶装置へのアクセスに時間がかかる
と判断された場合、処理実行部110は、その旨を処理
制御部111に通知し、処理制御部111からの指示に
したがって以降の処理を実施する。このプレートの実行
に伴い、処理実行部110は、コンテキストに格納され
ている値でプログラムカウンタなどの更新すべき値を更
新し、値を更新したレジスタに含まれる更新フラグの値
を1にする。
【0034】また、処理実行部110は、プレートの実
行中に後述の待ち要因が発生した場合、プレートをスリ
ープさせたことを示す通知を、処理制御部111を介し
て切替入替制御部113に出力すると共に、設定フラグ
レジスタ121内における発生した待ち要因の種別に対
応する後述の設定フラグの値を1に変更する。また、処
理実行部110は、先の待ち要因の発生したとき、外部
プロセッサ30に処理を依頼する。
【0035】さらに、この待ち要因の解消となる事由
が、外部プロセッサ30から処理結果を受け取ることで
ある場合、処理実行部110は、外部プロセッサ30に
処理を依頼してプレートをスリープさせたことを示す通
知を、処理制御部111を介して切替入替制御部113
に出力する。このとき、切替入替制御部113は、後述
の外部I/F117に処理要求信号を出力する。
【0036】なお、図1は、ある瞬間の状態を示す図で
あり、処理実行部110(プレートB実行)とあるの
は、第1レジスタ群114にプレートBに対応するコン
テキストが格納され、さらに、この第1レジスタ群11
4がカレントレジスタとして選択されている時点の状態
を示すものである。仮想マルチプロセッサ100内部で
のデータの入出力と、コンテキストメモリ200、主メ
モリ10、キャッシュメモリ及び外部プロセッサとにお
けるデータの入出力は、DMA転送により実施され、D
MA管理部118は、このDMA転送を制御する。
【0037】また、DMA管理部118は、各機能部か
らの要求にもとづいてDMA転送を実施してその転送が
完了したとき、その旨を示す信号(以下、「転送完了信
号」という。)を切替入替制御部113に出力し、ま
た、キャッシュメモリからプログラム及びデータを取得
しようとして、キャッシュミスが生じた場合、キャッシ
ュミスが生じたことを示す信号(以下、「キャッシュミ
ス信号」という。)を切替入替制御部113に出力す
る。
【0038】さらに、DMA管理部118は、図示され
ない外部記憶装置からプログラム及びデータを取得しよ
うとして、外部記憶装置へのアクセスに時間がかかる
(レイテンシが大きい)と判断されたとき、メモリレイ
テンシが大きいことを示す信号(以下、「メモリアクセ
ス遅延信号」という)を切替入替制御部113に出力す
る。
【0039】外部I/F117は、外部プロセッサなど
の外部機器に接続するインターフェースであり、例え
ば、外部プロセッサに依頼した処理が完了したことを示
す、外部プロセッサ処理完了信号などの外部からの信号
を切替入替制御部113に通知する。また、外部I/F
117は、例えば、外部プロセッサ30に処理を依頼す
ることを示す処理要求信号を外部プロセッサ30に通知
する。
【0040】つまり、前述したように、外部I/F11
7は、切替入替制御部113から外部I/F117に処
理要求信号が通知されたとき、処理要求信号を外部プロ
セッサ30に出力する。処理制御部111は、プレート
実行の開始から終了まで、処理実行部110において、
継続的にプレートを実行させるように制御する。
【0041】サイクルカウンタ116は、クロックカウ
ンタを有し、切替入替制御部113及び処理制御部11
1を介し、処理実行部110において、管理アプリケー
ションが含まれるプレートが実行されたことにより決定
された値を、このカウント値を初期値として登録する。
また、サイクルカウンタ116は、上述の初期値から1
クロック毎に1づつディクリメントすることによりカウ
ントダウンを行い、値が0となったとき、切替入替制御
部113にその旨を示す信号(以下、「カウント値0信
号」という。)を出力すると共に、再度初期値設定を行
ってカウントダウンを開始するという処理を繰り返す。
【0042】なお、上述のカウント値の初期値は、各プ
レート共通の値である。制御レジスタ120は、現在の
実行中のプレート及び次に実行すべきプレートを特定す
る情報を格納するためのレジスタである。より具体的に
は、制御レジスタ120は、現在の実行中のプレートに
対応するコンテキストアドレスの値が格納されている物
理的位置のテーブルアドレス(以下、「カレントアドレ
ス」という。)の値及び次に実行すべきプレートに対応
するコンテキストアドレスが格納されている物理的位置
のテーブルアドレス(以下、「ネクストアドレス」とい
う。)の値を格納しており、さらに、実行順序テーブル
格納領域202において、最も小さなテーブルアドレス
(以下、「テーブル先頭アドレス」という。)の値と、
最も大きなテーブルアドレス(以下、「テーブル終端ア
ドレス」という。)の値とを格納している。
【0043】ところで、タスクの実行時に使用する共有
資源が、他の機器により利用されており、直ちに使用で
きないことによる待機の発生及びいわゆる割り込みの発
生などをトリガとしてソフトウエアにより、非定常的に
現在実行中のタスクを中断してタスクの実行スケジュー
ルから除外し、このタスクに割り当てられた実行時間を
他のタスクに明け渡し、また、タスク中断のトリガとな
った要因が解消されたときに、このタスクの実行順序を
再度スケジューリングして実行することは、公知技術で
ある。
【0044】本発明は、さらに、ハードウエアにより、
プレート実行中断のトリガとなり得る所定の要因(以
下、「待ち要因」という。)が発生したとき、レジスタ
切り替え、即ち、プレートの切り替えを実施し、レジス
タ切り替えがなされたプレートを実行順序から除外する
スリープを実行し、また、この待ち要因が解消したと
き、このプレートの実行を試みるウエイクアップを実施
する。
【0045】このようなスリープ及びウエイクアップを
実施する際、ウエイクアップのトリガとなる待ち要因を
特定するために、プレート毎にどのような待ち要因でス
リープが発生しているのかを知る必要がある。また、外
部からの割り込み要求などが到来した場合、外部からの
要求に応えるべきか否かを事前に知る必要がある。
【0046】そのため、各プレートのコンテキストの中
に、スリープの発生のトリガとなった待ち要因の種別、
割り込み要求を受け付けるか否かなどをそれぞれ示す設
定フラグの値を格納する領域を有する。このように待ち
要因には複数の種別があり、これら種別毎に設定フラ
グ、つまり、設定フラグ群がある。
【0047】この設定フラグ群は、コンテキスト格納領
域201に格納されている各コンテキスト内に含まれて
いる。設定フラグレジスタ121は、2つのプレートに
含まれている設定フラグ群それぞれを格納するためのレ
ジスタである。プレートの実行に際し、実行されたプレ
ート自らがプレートの実行の中断を要求し、又は、外部
からプレートの実行を中断させる要求などが到来したこ
となどにより、待ち要因が発生したとき、現在実行中の
プレートに対応するコンテキストの複数設定フラグのう
ち発生した待ち要因の種別に対応する設定フラグの値が
処理実行部110により0から1に変更される。
【0048】ここで、上述のプレートの実行を中断させ
る要求には、いわゆる割り込み要求を含んでおり、この
ような割り込みが発生した場合に実行中のプレートを必
ずしも中断する必要はなく、割り込みを受け付けるか否
かは、プレート毎に定められている。そのため、割り込
みを許容するプレートにおいては、プログラム設計者に
より割り込み要求を受け付けるか否かを示す設定フラグ
の値に割り込み可能を示す値である1が格納されてい
る。
【0049】完了通知レジスタ119は、上述の待ち要
因が現在解消されているか否か、割り込み要求が発生し
たか否かなどをそれぞれ示すフラグ(以下、「完了通知
フラグ」という。)を格納するためのレジスタである。
この完了通知フラグは、1つのコンテキスト中に含まれ
る設定フラグの数と同数存在し、各完了通知フラグは、
待ち要因の種別毎に存在する各設定フラグのそれぞれと
1対1に対応している。
【0050】つまり、完了通知フラグの集まりを構成す
る完了通知フラグ群のビット列長は、設定フラグの集ま
りを構成する設定フラグ群のビット列長と同一であり、
先頭からのビット位置が同じであれば同じ待ち要因につ
いての値を格納している。切替入替制御部113は、サ
イクルカウンタ116からカウント値0信号を受け取っ
たとき、処理実行部110からプレートをスリープさせ
たことを示す通知を受け取ったとき、及び、DMA管理
部118よりキャッシュミス信号を受け取ったとき、ま
たは、メモリアクセス遅延信号を受け取ったとき、後述
のフラグ判定処理を実施して現状のネクストアドレスの
値をそのままにしておくのか、それとも、他のテーブル
アドレスの値を新たなネクストアドレスの値とするのか
を判断してネクストアドレスの値の見直しを図りつつ、
制御レジスタ120内に格納されているネクストアドレ
スの値を新たなカレントアドレスの値として格納し直す
と共に、上述のネクストアドレスの値の次に大きなテー
ブルアドレスの値を新たなネクストアドレスの値として
格納し、上述のレジスタ切り替えを実施するようにレジ
スタ切替部112に指示する。
【0051】さらに、切替入替制御部113は、このレ
ジスタ切り替えが実施された結果、スタンバイレジスタ
群となったレジスタ群の各レジスタの更新フラグを参照
し、更新フラグの値が1となっているレジスタに格納さ
れているレジスタ値をコンテキスト格納領域201のこ
のレジスタ値に対応する記憶領域、即ち、レジスタ群へ
の格納時に変更される前のレジスタ値が読み出された場
所に上書きすることにより退避するようにDMA管理部
118に指示すると共に、後述のフラグ判定処理を実施
する。
【0052】また、切替入替制御部113は、前記退避
に伴って、当該退避されるコンテキストの設定フラグ
を、設定フラグレジスタ121から読み出して、コンテ
キスト格納領域201内のこの設定フラグに対応する記
憶領域、即ち、設定フラグレジスタ121への格納時に
設定フラグが読み出された場所に上書きすることにより
設定フラグの値を退避する。
【0053】上述の退避及び後述のフラグ判定処理が完
了すると、切替入替制御部113は、制御レジスタ12
0内のネクストアドレスの値により特定されるプレート
のコンテキストをスタンバイレジスタ群の各レジスタに
格納、即ち、復帰する。このとき、切替入替制御部11
3は、各レジスタの更新フラグの値を0にクリアする。
【0054】切替入替制御部113は、上述の退避、フ
ラグ判定処理及び復帰を、カレントレジスタ群に格納さ
れたコンテキストを用いた処理実行部110によるプレ
ートの実行と並行して実施する。なお、上述の退避、フ
ラグ判定処理及び復帰に要する時間は、上述のプレート
の実行時間よりも短くなるように、管理アプリケーショ
ンなどにより、上述のレジスタ切り替えのタイムスパン
が定められている。
【0055】以下、切替入替制御部113におけるフラ
グ判定処理の詳細について説明する。切替入替制御部1
13は、コンテキスト格納領域201内に存在し、制御
レジスタ120のネクストアドレスの値により特定され
るコンテキストに含まれる設定フラグ群のビット列のう
ち、1の値が格納されているビット(以下、「有効ビッ
ト」という。)の位置を把握する。
【0056】このような有効ビットの位置を把握する処
理を有効ビット位置検索処理ということとする。このと
き、設定フラグ群のビット列のうち、有効ビットが1つ
もない場合、切替入替制御部113は、ネクストアドレ
スの値をそのままにしてフラグ判定処理を終了する。
【0057】設定フラグ群のビット列のうち、有効ビッ
トがある場合、切替入替制御部113は、完了通知レジ
スタ119内の完了通知フラグ群のビット列における上
述の有効ビットの位置に対応する位置のみを参照し、こ
の有効ビットの位置に対応する位置全てに1の値が格納
されている場合は、ネクストアドレスの値をそのままに
してフラグ判定処理を終了する。
【0058】なお、有効ビットの位置に対応する位置と
は、設定フラグ群のビット列の先頭位置から有効ビット
までのビット数と同じビット数分、完了通知フラグ群の
ビット列の先頭位置から離れた位置(以下、「有効ビッ
ト対応位置」という。)のことである。一方、完了通知
フラグ群の有効ビット対応位置のいずれかに0の値が格
納されている場合、切替入替制御部113は、実行順序
テーブル格納領域202に示されている現時点における
ネクストアドレスの値につづき、次に大きな値のテーブ
ルアドレスの値を暫定的に新たなネクストアドレスの値
とする。
【0059】そして、切替入替制御部113は、この暫
定的なネクストアドレスの値により特定されるコンテキ
ストに含まれている設定フラグについて、上述の有効ビ
ット位置検索処理を実施した後、完了通知フラグ群の有
効ビット対応位置の値に応じてネクストアドレスを見直
す上述の処理を、フラグ判定処理が終了するまで繰り返
し実施する。
【0060】なお、現状のネクストアドレスの値がテー
ブル終端アドレスの値である場合、ネクストアドレスの
値につづき、次に大きな値のテーブルアドレスの値と
は、テーブル先頭アドレスの値とする。 (2.データ)以下、仮想マルチプロセッサ100にお
いて用いられるデータについて説明する。
【0061】図2は、コンテキストメモリ200に格納
されている実行順序テーブル300及びコンテキストの
データ構成を示す図である。実行順序テーブル300
は、コンテキストが格納されているコンテキスト格納領
域201内のコンテキストアドレスの値が複数示されて
おり、これらコンテキストアドレスの値の物理的な格納
位置、即ち、テーブルアドレスが各コンテキストアドレ
スにより特定されるプレートの実行順序を決定してい
る。
【0062】つまり、小さな値のテーブルアドレスが割
り当てられている場所に格納されているコンテキストア
ドレスほどこのコンテキストアドレスに対応するプレー
トの実行順序が先順位となっている。上述のフラグ判定
処理により、プレートの実行順序が飛ばされることがあ
るものの、基本的にはコンテキストアドレスの値の物理
的格納位置、即ち、配列により示される順序に従ってプ
レートが実行され、テーブル最終アドレスがカレントア
ドレスとなっている場合における、カレントアドレスに
より特定されるプレートが実行された後は、テーブル先
頭アドレスをカレントアドレスとすることにより特定さ
れるプレートが実行される。
【0063】つまり、コンテキストアドレスの物理的格
納位置、即ち、テーブルアドレスは、1サイクルのプレ
ートの実行順序を示す。図2において、テーブルアドレ
スは、2000から2005までの値を有しており、こ
の場合、テーブル先頭アドレスの値は、2000とな
り、テーブル終端アドレスの値は、2005となる。
【0064】小さい値のテーブルアドレスに格納されて
いるコンテキストアドレスのプレートほど実行順序が先
となる。図3は、完了通知フラグ群及び設定フラグ群の
各フラグについて説明する図である。完了通知フラグ群
は、強制待ちフラグ、キューの空き通知フラグ、割り込
み通知フラグ、ソフトウエアの待ち指示フラグ、外部プ
ロセッサ処理完了通知フラグ、転送通知フラグなどを有
する。
【0065】強制待ちフラグは、0の値が固定的に格納
されているフラグである。キューの空き通知フラグは、
プレートの実行中、容量的に空きが少ないキューに命令
などをキュー登録しようとした場合など、キューを管理
する外部機器からキューに空きがないことを示す通知が
到来したか否かを示すフラグであり、キューに空きがな
いことを示す通知がなされた場合、0の値をとり、キュ
ーに空きがある状態では、1の値をとる。
【0066】割り込み通知フラグは、外部機器から割り
込み要求が到来したか否かを示すフラグであり、割り込
み要求が到来していない場合、デフォルト値である1の
値をとり、また、割り込み要求が到来した場合、切替入
替制御部113により0の値にされる。ソフトウエアの
待ち指示フラグは、アプリケ−ションソフトなどからプ
レートの実行を待たせる指示が到来したか否かを示すフ
ラグであり、上述の指示が到来していない場合、デフォ
ルト値である1の値をとり、上述の指示が到来した場
合、切替入替制御部113により0の値にされる。
【0067】外部プロセッサ処理完了通知フラグは、プ
レートの実行時に外部のプロセッサに処理を依頼した場
合、依頼した処理が完了したことを示す通知が到来した
か否かを示すフラグであり、すなわち、キャッシュミス
信号あるいはメモリアクセス遅延信号を発生させる要因
となったDMA転送や、プログラムによって要求される
DMA転送などの完了を示すフラグであり、この通知が
到来していない場合、デフォルト値である0の値をと
り、また、依頼した処理が完了したことを示す通知が到
来した場合、切替入替制御部113により、1の値にさ
れる。
【0068】転送通知フラグは、DMA転送が完了した
ことを示す通知が到来したか否かを示すフラグであり、
この通知が到来していない場合、デフォルト値である0
の値をとり、また、DMA転送が完了したことを示す通
知が到来した場合、切替入替制御部113により、1の
値にされる。なお、これら上述のフラグそれぞれは、そ
のフラグをトリガとして、新たなプレートが実行された
場合、そのプレートの実行によりそのフラグの値が、切
替入替制御部113により上述のデフォルト値にリ復帰
されることとなる。
【0069】設定フラグ群を構成する各フラグは、完了
通知フラグ群の各フラグに対応するフラグであって、対
応するフラグを無視するか否かを示す。コンテキスト中
に含まれる設定フラグ群を構成する設定フラグの値が0
の場合、対応する完了通知フラグの値に影響されること
なく、このコンテキストにもとづいてプレートが実行さ
れる。
【0070】また、設定フラグの値に1がある場合、対
応する完了通知フラグの値により、この設定フラグを含
むコンテキストに対応するプレートを実行対象とするか
否かが切替入替制御部113により判断される。なお、
設定フラグの値に1が格納される例としては、以前この
設定フラグを含むコンテキストに対応するプレートが実
行されたとき、待ち要因が発生し、プレートの実行が中
断されたなどが挙げられ、このようなプレートは、持ち
要因が解消されるまで、スリープ状態となる。
【0071】より具体的には、対応するものどうしの完
了通知フラグの値及び設定フラグの値が1の場合、この
設定フラグを含むコンテキストに対応するプレートが実
行対象とされ、対応するものどうしの完了通知フラグの
値が0で、設定フラグの値が1の場合、このコンテキス
トに対応するプレートが非実行対象とされ、即ち、プレ
ートの実行順序から除外される。
【0072】つまり、対応する完了通知フラグの値及び
設定フラグの値が1の場合、この設定フラグを含むコン
テキストに対応するプレートが切替入替制御部113に
よりウエイクアップされ、対応する完了通知フラグの値
が0で、設定フラグの値が1の場合、このプレートのス
リープ状態となる。また、設定フラグの値が0の場合、
この0の値が格納されている場所の対応する種別の待ち
要因については切替入替制御部113より無視がなさ
れ、この待ち要因に対応する完了通知フラグも参照され
ない。
【0073】図4は、タスクとプレートとの関係を示す
図である。ソフトウエア側には、複数のタスクが存在
し、そのうち、リアルタイムで処理するタスクは、OS
を介さず直接、管理アプリケーションの管理下に置かれ
ている。なお、実行順序テーブル300の内容を更新す
るための管理アプリケーションが、上述のリアルタイム
で処理するタスクに含まれており、このタスク、即ち、
プレートが実行されるとき、例えば、新たな処理を実行
すべき状態となっていれば、処理実行部110により、
実行順序テーブル300の内容が更新されることとな
る。
【0074】これにより、1サイクル分プレートが実行
される毎に、少なくとも1回はタスクのスケジューリン
グを見直す機会が発生する。より具体的には、管理アプ
リケーションに対応するプレートが実行される毎に、前
記条件の発生の有無を判断し、この条件が発生した場合
に、新たな内容の実行順序テーブルであるダミーテーブ
ルを実行順序テーブル格納領域202内に生成し、プレ
ート実行の基礎とする実行順序テーブルを現状の実行順
序テーブル300からダミーテーブルへと切り替えるこ
とにより更新する。
【0075】一方、リアルタイムで処理する必要のない
タスクは、まず、OSの管理下に置かれ、さらに管理ア
プリケーションの管理下に置かれている。プレートは、
ハードウエア側、即ち、処理実行部110における1実
行単位であり、1つのタスクそのものである場合と、複
数のタスクをまとめたものである場合とがあり、これら
のプレートの割り振りは、プログラミングにより自由に
決定可能である。 (3.動作)以下、仮想マルチプロセッサ100におい
て、1つのプロセッサにより擬似並行的にプレートを実
行する際、効率的なプレートの実行を実現する処理につ
いて説明する。
【0076】図5は、仮想マルチプロセッサ100にお
いて実施される処理を示すフローチャートである。切替
入替制御部113は、コンテキストメモリ200内の実
行順序テーブル300を参照し、制御レジスタ120内
に、テーブル先頭アドレス、カレントアドレス、ネクス
トアドレス及びテーブル終端アドレスを登録する(ステ
ップS500)。
【0077】第1レジスタ群114及び第2レジスタ群
115内の全ての値をクリアする(ステップS50
1)。切替入替制御部113は、第1レジスタ群114
及び第2レジスタ群115のうちカレントレジスタ群及
スタンバイレジスタ群を選択する(ステップS50
2)。
【0078】そして、切替入替制御部113は、カレン
トアドレスにより特定されるコンテキストをカレントレ
ジスタ群に格納させる(ステップS503)。つづい
て、切替入替制御部113は、処理制御部111を介し
て処理実行部110にプレート実行の指示を与え、その
結果、処理実行部110は、カレントレジスタ群に格納
されているコンテキストにもとづいて、プレートの実行
を開始する(ステップS504)。
【0079】サイクルカウンタ116は、プレート実行
開始と共に、プレートの実行により設定される初期値か
らカウントダウンを開始する(ステップS505)。切
替入替制御部113は、外部I/F117及びDMA管
理部118からの信号入力を受付け、入力された信号に
応じて完了通知レジスタ119の完了通知フラグの値を
更新する(ステップS506)。
【0080】そして、切替入替制御部113は、フラグ
判定処理を実施して、制御レジスタ120内のネクスト
アドレスの値を確定する(ステップS507)。つづい
て、切替入替制御部113は、スタンバイレジスタ群を
構成する各レジスタの更新フラグの値が1となっている
コンテキスト部分のみをコンテキスト格納領域201に
退避させ(ステップS508)、スタンバイレジスタ群
に格納されている値を全てクリアする(ステップS50
9)。
【0081】さらに、切替入替制御部113は、制御レ
ジスタ120内のネクストアドレスにより特定されるコ
ンテキストをスタンバイレジスタ群に格納させる(ステ
ップS510)。そして、切替入替制御部113は、制
御レジスタ120内のネクストアドレスをカレントアド
レスとして登録し直し、ネクストアドレスの次のアドレ
スを新たなネクストアドレスとして登録し直す(ステッ
プS511)。
【0082】切替入替制御部113は、サイクルカウン
タ116よりカウント値0信号が入力された、即ち、プ
レート実行の終了が指示されたか又は処理実行部110
より実行中のプレートをスリープさせたことを示す通知
があったかどうか、さらに、その通知が外部プロセッサ
30に処理を依頼してからプレートをスリープさせたこ
とを示す通知であったかどうかを判断し(ステップS5
12)、これら信号の入力又は通知がなされた場合、処
理実行部110にプレートの実行を終了させ、さらに、
外部プロセッサ30に処理を依頼してからプレートをス
リープさせた場合は、切替入替制御部113から外部I
/F117に処理要求信号を通知させ、外部I/F11
7から外部プロセッサ30に処理要求信号を出力させ
(ステップS513)、レジスタ切替部112にレジス
タ切り替えを実施させ(ステップS514)、プレート
の実行を開始するステップS504に戻る。
【0083】一方、これら信号の入力又は通知がなされ
ない場合、現在のプレートの実行を継続し、終了又はス
リープさせたことを示す通知があったかどうかを判断す
るステップS512に戻る。図6は、フラグ判定処理を
示すフローチャートである。切替入替制御部113は、
コンテキスト格納領域201内に存在し、制御レジスタ
120のネクストアドレスにより特定されるコンテキス
トに含まれる設定フラグ群のビット列のうち、1の値が
格納されている有効ビットの位置を把握する有効ビット
位置検索処理を実施する(ステップS600)。
【0084】そして、切替入替制御部113は、有効ビ
ットが1つも存在しないかどうかを判断し(ステップS
601)、有効ビットが1つも存在しない場合、制御レ
ジスタ120におけるネクストアドレスの値をそのまま
にしてフラグ判定処理を終了する。一方、有効ビットが
1以上存在する場合、切替入替制御部113は、完了通
知レジスタ119内の完了通知フラグ群のビット列にお
ける上述の有効ビットの位置のみを参照し(ステップS
602)、この有効ビット全てに1の値が格納されてい
るか否かを判断する(ステップS603)。
【0085】完了通知フラグ群の有効ビット全てに1の
値が格納されている場合、切替入替制御部113は、ネ
クストアドレスの値をそのままにしてフラグ判定処理を
終了する(ステップS604)。一方、完了通知フラグ
群のビット列における有効ビットのいずれかに0の値が
格納されている場合、切替入替制御部113は、実行順
序テーブル格納領域202内に示されている現時点にお
けるネクストアドレスの次のアドレスを暫定的に新たな
ネクストアドレスとし(ステップS604)、有効ビッ
ト位置検索処理を実施するステップS600に戻る。
【0086】以上の処理を実施することにより、仮想マ
ルチプロセッサ100は、プレートの終了から次のプレ
ートの開始までの間に、コンテキストの退避、判断及び
復帰に要する時間を介在させることなくプレートを実行
することができる。図7は、このような状態を時系列的
に説明する図である。コンテキストの退避、判断及び復
帰は、プレートの実行と並行して実施されている。
【0087】このため、プレートの終了から次のプレー
トの開始までの間に、コンテキストの退避、判断及び復
帰に要する時間が介在することが回避されている。以上
のように、本実施形態によれば、1つの仮想マルチプロ
セッサ100において、擬似並行的に複数のプレートを
実行しても、コンテキストの退避、判断及び復帰は、プ
レートの実行と並行して実施するため、プレートの実行
時間にコンテキストの退避、判断及び復帰に要する時間
が介在することがないので、効率的にタスクを実行する
ことができる。
【0088】なお、本実施の形態では、この実行順序テ
ーブル300は、プレートの実行順序を示し、この実行
順序テーブル300内におけるコンテキストアドレスの
値の物理的格納位置、即ち、配列により基本的なプレー
トの実行順序が定められているが、この方法に限らず、
例えば、実行順序テーブル300内にコンテキストアド
レスの値とテーブルアドレスの値との組を格納し、この
テーブルアドレスの値が次の実行順序に対応するコンテ
キストアドレスの物理的な格納位置を示すことにより、
つまり、このテーブルアドレスの値をポインタとして用
いることにより、プレートの実行順序を定めるとしても
よい。
【0089】その場合、格納されているコンテキストア
ドレスの値の物理的な格納位置に実行順序が左右され
ず、また、このポインタを変更することにより、容易に
実行順序の変更を行うことができる。図8は、このよう
なポインタを用いる場合の実行順序を示すテーブルのデ
ータ構成を示す図であり、コンテキストの格納位置との
対応関係を示すために、コンテキスト格納領域201に
おけるデータ構成も合わせて示している。
【0090】この実行順序テーブルは、上述のコンテキ
ストアドレスと次の実行順序を指し示すポインタとして
のテーブルアドレスとの組を格納している。また、本実
施の形態において、切替入替制御部113は、フラグ判
定処理を、実行順序テーブル300により示される実行
順序にもとづいて実施するものとしたことにより、スリ
ープされたプレートがウエイクアップするタイミング
は、実行順序テーブル300に規定されたそのプレート
の実行順序が巡ってきたときとなるが、フラグ判定処理
に際して、スリープしているプレートのコンテキスト内
の設定フラグ群を優先的に参照して、フラグ判定処理を
実施し、ウエイクアップの条件が揃えば、スリープして
いるプレートの実行順序を待たずに実行するとしてもよ
い。
【0091】図9は、このような場合におけるプレート
実行状況を時系列的に示す図である。t0において、プ
レートAは、外部プロセッサ30に処理を依頼し、外部
のプロセッサ30から処理結果を受け取るまでスリープ
に入るいわゆる突き放しを実施している。
【0092】ここで、この突き放しについて説明する。
まず、仮想マルチプロセッサは、主メモリ10に外部プ
ロセッサ30が実施する処理の入力データをライトした
後、処理要求信号を出力し外部プロセッサ30に処理を
要求すると共に、プレートをスリープさせる。外部プロ
セッサ30は、主メモリ10から命令をフエッチし動作
すると共に、主メモリから処理の入力データをリードし
て要求された処理を行い、その処理結果であるデータを
主メモリにライトする。
【0093】その後、外部プロセッサ30は、処理完了
信号を出力し、仮想マルチプロセッサ100に処理が完
了した旨を通知する。処理の完了が通知されると、図
5、図6において先述したフラグ判定処理などにより、
仮想マルチプロセッサ100は、スリープしたプレート
を再度実行し、主メモリ10から外部プロセッサ30が
処理した結果であるデータをリードする。
【0094】このように、プレートを実行することによ
り、仮想マルチプロセッサ100は、外部のプロセッサ
に処理を依頼し、外部のプロセッサから処理結果を受け
取るまでスリープする。以下、具体的に動作を説明す
る。まず、t0では、設定フラグ群における、外部プロ
セッサ処理完了通知フラグの値が1に変更される。
【0095】t2からt4までにおいて、プレートAに
ついて優先的にフラグ判定処理を実施するが、完了通知
レジスタ119内の有効ビット、即ち、外部プロセッサ
処理完了通知フラグの値は0であるためウエイクアップ
されない。プレートDの実行期間中であるt5におい
て、外部プロセッサ処理完了通知フラグの値が1となっ
ているためウエイクアップされる。
【0096】このウエイクアップに伴って、切替入替制
御部113は、ウエイクアップされたプレートのコンテ
キストをスタンバイレジスタ群に格納する。そして、t
6において、切替入替制御部113は、レジスタ切替部
112にレジスタ切り替えを実施させる。そして、処理
実行部110は、カレントレジスタに格納されたプレー
トAに対応するコンテキストにもとづいて、プレートA
を実行する。
【0097】なお、この後、再度プレートAが実行され
るのは、プレートAの正規の実行順序が巡ってきたとき
となる。また、図9においては、スリープしているプレ
ートが1つの場合を示したが、複数のプレートがスリー
プしている場合も考えられ、このような場合、早くスリ
ープされたプレートのコンテキストに対して優先的にフ
ラグ判定処理を実施してもよく、逆に、遅くスリープさ
れたプレートのコンテキストに対して優先的にフラグ判
定処理を実施してもよい。
【0098】図10は、遅くスリープされたプレートの
コンテキストに対して優先的にフラグ判定処理を実施す
る例を時系列的に示す図である。プレートBにつづきプ
レートDがスリープ状態となっており、図中における5
回目の判定において、プレートB及びプレートDが実行
可能な状態と判定され、この時点においてスリープして
いる時間が最も短いプレートDが優先的にウエイクアッ
プされ、これにつづいてプレートBがウエイクアップさ
れている。
【0099】これは、先にスリープされたプレートの実
行の順序は、後にスリープされたプレートよりも近づい
てきているため、先にスリープされたプレートをウエイ
クアップして実行してしまうと、直ぐに、またこのプレ
ートの実行順序が巡ってきてしまうため、この時点を捕
らえれば、プレートの実行開始の間隔が極端に狭くな
り、プレートの実行時間が均等化されない可能性がある
ためである。
【0100】また、図9及び図10を用いて説明した上
述のフラグ判定処理において、プレートのスリープ時間
が決められた時間を超える場合、上述の優先を取り止め
るとしてもよい。また、本実施の形態では、完了通知フ
ラグ群及び設定フラグ群は、強制待ちフラグ、キューの
空き通知フラグ、割り込み通知フラグ、ソフトウエアの
待ち指示フラグ、外部プロセッサ処理完了通知フラグ、
転送通知フラグなどを有するとしたが、これ以外のフラ
グを設けてもよい。
【0101】例えば、複数のプレートがスリープしてい
る場合、種々の完了通知フラグがどのプレートに対応す
るものなのかが判らなくなる。そこで、プレートを識別
するための番号が対応づけられているフラグを、完了通
知フラグ群及び設定フラグ群に設け、スリープが生じた
とき、処理実行部110から実行中のプレートを特定す
るためのユニークな番号を発生させ、この番号を設定フ
ラグ群内に新たに設けたフラグに登録すると共に、この
番号をスリープの発生のトリガとなった外部機器に対し
通知する。
【0102】待ち要因が解消されたとき、例えば、外部
プロセッサなどの外部機器により、外部プロセッサ処理
管理信号などと共に、上述の番号が合わせて通知される
ことにより、外部プロセッサ処理完了通知フラグが1と
されるのに加え、この番号を示すフラグも1とされるの
で、どのプレートに対応するものかを判定することが可
能となる。
【0103】また、本実施の形態では、待ち要因が発生
した場合、実行中のプレートに割り当てられている実行
時間を放棄して他のプレートに明け渡す例を示したが、
これによらず、プレートの実行時間を他のプレートに明
け渡さずに、上述の放棄がなされている時間分だけ、プ
ロセッサの駆動周波数を下げ、電力消費を抑えるとして
もよい。
【0104】その場合、プレートの実行に割り当てられ
た絶対時間が変らないようにするため、例えば、プロセ
ッサの駆動周波数、即ち、クロック周波数を2分の1に
低減した場合、サイクルカウンタ116は、1クロック
あたり1づつディクリメントしていたものを、1クロッ
クあたり2づつディクリメントすることとなる。本実施
の形態では、退避、フラグ判定処理及び復帰に要する時
間は、上述のプレートの実行時間よりも短くなるよう
に、管理アプリケーションなどにより、上述のレジスタ
切り替えのタイムスパンが定められているとしたが、こ
れはこのタイムスパンの下限値を決定する制約条件であ
る。
【0105】一方、このタイムスパンの上限値を決める
制約条件について、本実施の形態では、特筆していない
が、このタイムスパンは、プレートを実行することがで
きる限界の時間であり、各プレートの実質的な実行時間
が、この限界の時間に対して極めて短い時間で処理を実
施していた場合、各プレートの実行に際して、処理が行
われていない無駄な時間が生じていることとなり、この
ような無駄を避けるために、管理アプリケーションは、
プレートの実質的な実行時間と上述のタイムスパンがほ
ぼ同様の時間で、かつ、上述のタイムスパンが各プレー
トの実質的な実行時間以上となるようにタイムスパンの
上限値を決定してもよい。
【0106】ところで、通信処理などのリアルタイムな
処理では、プレートの実行により処理すべきデータの到
来する周期がほぼ決まっている。つまり、1サイクルに
おける各プレートの処理負荷が決まっており、上述のよ
うに決められた上限値及び下限値を有するタイムスパン
を用いて、1サイクル分の各プレートが実行されたとし
ても、次のサイクルで処理すべきデータが到来していな
かったのでは意味がない。
【0107】そこで、処理実行部110における処理能
力が、1サイクルで処理すべきプレートの処理負荷に勝
って処理時間に余裕が生じている場合、このような余裕
が生じなくなる程度に、処理実行部110におけるプロ
セッサの駆動周波数、即ち、処理能力を低減し、各プレ
ートの実質的な実行時間を大きくするようにしてもよ
い。
【0108】その場合、各プレートの実行に際して、処
理が行われていない無駄な時間が削減され、かつ、プロ
セッサの駆動周波数を下げることにより消費電力も低減
される。また、現在実行中のプレートの次に実行すべき
プレート、即ち、スタンバイレジスタ群に格納されてい
るコンテキストに対応するプレートの実行に必要なデー
タを事前にキャッシュに格納しておくとしてもよい。
【0109】その場合、スタンバイレジスタ群に格納さ
れているコンテキストを事前に参照し、次のプレートの
実行に必要なデータを把握し、このデータをキャッシュ
に格納する機能部が必要となる。また、メインメモリの
容量を物理的な容量よりも仮想的に大きくするために、
「プログラムによって指定される論理アドレス」と「プ
ロセッサが物理的にアクセスする物理アドレス」との対
応関係(マッピング)を管理する「仮想メモリ機能部」
を本実施の形態に付与してもよい。
【0110】なお、この仮想メモリ機能は公知技術であ
る。この場合、キャッシュには、論理アドレスと物理ア
ドレスとの対応関係(マッピング)を示す「アドレス変
換テーブル」を格納する「アドレス変換テーブルキャッ
シュ」が含まれ、この「アドレス変換テーブルキャッシ
ュ」に、次に実行すべきプレートに必要となるデータを
示す論理アドレスを物理アドレスに変換できる「アドレ
ス変換テーブル」を格納しておくとしてもよい。
【0111】その場合、現在実行中のプレートの次に実
行すべきプレート、即ち、スタンバイレジスタ群に格納
されているコンテキストを事前に参照し、次のプレート
の実行に必要なデータを把握し、さらに、そのデータの
論理アドレスを物理アドレスに変換できるアドレス変換
テーブルの値を把握して、それをアドレス変換テーブル
キャッシュに格納する機能部が必要となる。
【0112】また、サイクルカウンタ116におけるカ
ウント値の初期値は、各プレート共通の値であるとした
が、プレート毎に異なっているとしてもよい。つまり、
この初期値は、プレートの実行のために用意される時間
を示し、プレートの処理の内容に応じてプレート固有の
実行時間を割り当ててもよい。その場合、図11に示す
ように、実行順序テーブル格納領域202内にコンテキ
ストアドレスに対応づけられてカウント値の初期値が格
納される。
【0113】そして、切替入替制御部113は、制御レ
ジスタ120内のカレントアドレスス及びネクストアド
レスそれぞれに上述のカウント値の初期値を対応づけて
格納する。また、これに伴い、サイクルカウンタ116
は、オーバーヘッドを解消しつつ随時異なる初期値にも
とづいてカウントダウンを実施するために、2つ設ける
ことが望ましい。
【0114】また、サイクルカウンタ116は、図12
に示す機能部構成とすることもできる。この図におい
て、サイクルカウンタ116は、入出力部301と、第
1メモリ302と、第2メモリ303と、カウントダウ
ン部304とを有する。入出力部301は、切替入替制
御部113からカウント値の初期値を受信し、受信した
上述の初期値を交互に第1メモリ301及び第2メモリ
303に格納する機能を有する。
【0115】また、入出力部301は、カウントダウン
部304からの信号を受け取ったとき、切替入替制御部
113にカウント値0信号を出力する。第1メモリ30
2及び第2メモリ303は、FIFOメモリである。カ
ウントダウン部304は、第1メモリ302及び第2メ
モリ303から交互に初期値を読み出してその初期値に
もとづきカウントダウンを実施する。
【0116】以上のような構成により、プレートの処理
の内容に応じてプレート固有の実行時間を割り当てるこ
とができる。また、処理実行部110は、N段のパイプ
ライン処理によりプレートを実行するとしてもよい。図
13は、4段のパイプライン処理を実施する例を示す。
【0117】この場合、1段目で、プレートAの処理の
実行が終了しても、2段目から4段目までは、まだプレ
ートAが実行中の状態である。つまり、この状態は、カ
レントレジスタ群のレジスタ値が必要であるため、プレ
ートAのレジスタ値の退避はできない。1段目のプレー
トAの処理の実行が終了してから3クロック経過したと
き、4段目のプレートAの実行が終了するので、ここで
プレートAのレジスタ値が退避可能となる。
【0118】よって、例えば、N段のパイプライン処理
によりプレートが実行される場合は、1段目のプレート
の実行が終了してから少なくとも(N−1)クロック後
でなければ、レジスタ値、即ち、コンテキストを退避で
きないこととなる。また、本実施の形態では、一旦プレ
ートがスリープすると、ウエイクアップする機会は、実
行順序テーブル300に示された、次の実行順序のみで
あったが、待ち要因が発生してスリープしても、この待
ち要因が瞬時に解消される場合もあるため、これを考慮
し、スリープとなった直後から1回分のプレート実行ま
での間については、スリープしたプレートの実行順序を
最先の順序とし、このスリープしたプレートを優先的に
実行させてもよい。 図14は、このようなプレート実
行がなされた場合における、プレート実行状況を説明す
る図である。
【0119】この図において、プレートCがスリープし
た直後にスリープの原因となった待ち要因が解消されて
おり、プレートDの実行中は、プレートCの実行順序を
最先の順位にしているので、プレートDが実行された後
にプレートCが実行されている。ただし、この場合、待
ち要因の解消タイミングが、プレートDの実行終了間際
であった場合、本実施の形態においては、スタンバイレ
ジスタの数は、1つのみであるため、本来プレートDの
後に実施されるはずであるプレートAの復帰の時間のマ
ージンを見込まなければならない。
【0120】そのため、スリープしたプレートの実行順
序を最優先とする時間(以下、「優先期間」という。)
は、この図の場合、プレートDの実行時間よりも短くな
っている。このような不都合を解消すべく、レジスタ群
を少なくとも3つ設け、このうちの1つをカレントレジ
スタ群、また、残りの2つをスタンバイレジスタ群とす
ることにより、図14におけるプレートCのコンテキス
トと、プレートAのコンテキストとを同時に、2つのス
タンバイレジスタ群に格納することにより、上述の優先
期間は、プレートDの実行終了間際まで長くなる。
【0121】また、第1の実施形態では、プレートの数
は、レジスタ群の数を上回っていることを前提として説
明していたが、これに限らず、プレートの数がレジスタ
群の数以下であってもよい。その場合、コンテキストメ
モリ内のコンテキスト格納領域を備えなくても良く、退
避、復帰のステップが不要となる。
【0122】具体的には、図5におけるS508(退
避)、S509(スタンバイレジスタ群のクリア)が不
要となり、S510とS514の処理が変更される。つ
まり、第1の実施形態では、S510(スタンバイレジ
スタ群への格納)は、S507のフラグ判定処理で決定
される制御レジスタ120内のネクストアドレスにより
特定されるコンテキストをスタンバイレジスタ群に格納
させる処理であったが、コンテキスト格納領域が無い場
合は、S510を「S507で判断されるネクストアド
レスにより特定されるコンテキストにあらかじめ対応づ
けられているレジスタ群」を「次のカレントレジスタ
群」として切替入替制御部113に選択し記憶させる処
理とすればよい。
【0123】そして、S514で、切替入替制御部11
3が先ほど「次のカレントレジスタ群」として選択した
レジスタ群がカレントレジスタ群になるように、レジス
タ切替部112はレジスタ切り替えを実施すればよい。
この場合、切替入替制御部113は、上記のネクストア
ドレスにより特定されるコンテキストに対応付けられて
いるレジスタ群がどれであるかを把握して記憶する機能
を、レジスタ切巻部112は、切替入替制御部113が
記憶したレジスタ群にカレントレジスタ群を切り替える
機能を、それぞれ有することとなる。
【0124】ここで、プレート及びレジスタ群の数が2
つの場合、より具体的には、プレートAは第1レジスタ
群、プレートBは第2レジスタ群に対応付けられている
とする。例えば、切替入替制御部113は、プレートA
を実行するときは、コンテキストメモリからレジスタ値
群を復帰する動作なしで、第1レジスタ群をカレントレ
ジスタ群として選択する。
【0125】また、レジスタ群及びプレート(プレート
A、B、Cがあり、プレートCは第3レジスタ群に対応
付けられているものとする。)の数が3つの場合であっ
ても、カレントレジスタ群として選択されているのが実
行対象レジスタ群であって、それ以外がスタンバイレジ
スタ群となる。プレートCを実行する際、第3レジスタ
群をカレントレジスタ群として選択される。
【0126】選択先を切り替えた後も、コンテキストメ
モリにレジスタ値群を退避する動作は不要である。コン
テキスト格納領域を備えない上記の構成でも、複数のプ
ログラムが所定時間毎に頻繁に切り替えられながら高速
に実行されるので、擬似的なリアルタイム処理の並列実
行に効果的である。
【0127】また、本第1の実施形態では、コンテキス
トメモリ200は、SRAMにより構成されるとした
が、DRAMであってもよく、さらに、これらメモリに
限らず、高速にアクセスされるレジスタや低速にアクセ
スされる外部記憶装置であってもよい。また、本第1の
実施形態では、管理アプリケーションが1つのプレート
に含まれているとしたが、複数のプレートに含まれてい
るとしてもよい。<第2の実施形態>(1.構成)第2
の実施形態について、図面を参照しながら詳細に説明す
る。
【0128】図15は、第2の実施形態における仮想マ
ルチプロセッサ400の機能ブロック図である。仮想マ
ルチプロセッサ400は、第1の実施形態における仮想
マルチプロセッサ100と同様に、複数のプログラムを
擬似並行的に実行するプロセッサである。
【0129】この仮想マルチプロセッサ400は、複数
のタイムスロットそれぞれに割り当てられたプログラム
を逐次実行することにより、複数のプログラムを擬似並
行的に実行する。ここで、タイムスロットとは、プログ
ラムを時分割して実行する場合における、最小のプログ
ラム実行時間枠のことである。
【0130】第1の実施形態における仮想マルチプロセ
ッサ100では、プレートそのもの、即ち、プログラム
の実行順序が規定されているが、第2の実施形態の仮想
マルチプロセッサ400では、まず、タイムスロットの
順序が規定され、さらに、タイムスロット毎に実行され
るプログラムの候補が用意されている点で第1の実施形
態とは異なる。
【0131】より具体的には、各タイムスロットには、
自タイムスロットへの割り当て候補となる4つ又は1つ
のプログラムが対応づけられおり、通常、これらのプロ
グラムのうちいずれか1つが前記割り当ての対象とな
る。原則的には、規定されたタイムスロットの順序にも
とづいて各タイムスロットに割り当てられているプログ
ラムが逐次実行される。
【0132】また、仮想マルチプロセッサ400は、前
記割り当ての対象となるプログラムが実行不可能な状態
となった場合における処理の内容が、第1の実施形態に
おける仮想マルチプロセッサ100とは異なる。なお、
プロセッサ側からみた実行対象となるプログラムのこと
を、便宜上、ロジカルプロセッサ(以下、「LP」とい
う。)という。
【0133】図15には、プログラムの実行位置を示す
プログラムカウンタの値、プログラム及びデータの格納
位置を示すアドレスなどの制御情報、即ち、コンテキス
トが格納されているコンテキストメモリ500も合わせ
て示している。このコンテキストメモリ500は、SR
AMにより構成され、各プログラムに対応するコンテキ
ストが格納されているコンテキスト格納領域501を有
する。
【0134】コンテキスト格納領域501は、コンテキ
ストメモリ500内の決められた記憶領域にあって、各
プログラムに対応するコンテキストの値が格納されてい
る。さらに、図15には、基準信号を生成する発振器6
00と、この基準信号にもとづいて仮想マルチプロセッ
サ400に供給するクロックパルスを生成するPLL6
01とが示されている。
【0135】また、これらの機能部の他に、仮想マルチ
プロセッサ400に関連し、図示していない以下の機能
部がある。即ち、プログラム及びデータなどを格納し、
DRAMからなる主メモリと、SRAMからなる上述のプロ
グラム及びデータなどを格納するためのキャッシュメモ
リとが、バスを介して仮想マルチプロセッサ400に接
続されている。
【0136】仮想マルチプロセッサ400は、時間割付
情報格納レジスタ402と、処理実行部410と、処理
制御部411と、レジスタ切替部412と、スケジュー
リング制御部413と、第1レジスタ群414と、第2
レジスタ群415と、サイクルカウンタ416と、外部
I/F417と、DMA管理部418と、リクエスト検
出部419と、制御レジスタ420と、設定フラグレジ
スタ421と、LP状態格納レジスタ424と、プロセ
ッサ状態格納部425と、クロックマスク部427とを
有する。
【0137】時間割付情報格納レジスタ402は、タイ
ムスロット及びプログラムに関する情報が格納されてい
る。より具体的には、この情報は、タイムスロットのプ
ログラム実行時間枠と実行順序などを規定する1)タイ
ムスロット情報と、各タイムスロットにおいて実行され
るプログラムの候補を特定するための2)LP情報と、
プログラムの候補の範囲を限定するための3)優先度&
モード情報と、実行可能なプログラムの候補がタイムス
ロットに存在しない場合における処理の内容を決定する
ための4)アイドルオプション情報と、実行中のプログ
ラムが中断した場合における処理の内容を決定するため
の5)タイムオプション情報とからなる。
【0138】タイムスロット毎に、これら5種類の情報
が存在し、タイムスロット単位で互いに関連付けられて
いる。第1レジスタ群414及び第2レジスタ群415
は、コンテキストの内容であるプログラムカウンタの
値、プログラム及びデータの格納位置を示すアドレスな
どのレジスタ値をそれぞれ格納するためのレジスタの集
まりである。
【0139】レジスタ切替部412は、スケジューリン
グ制御部413からの指示にしたがい、第1レジスタ群
414及び第2レジスタ群415のうちいずれか1つの
レジスタ群をプログラム実行の際に使用するレジスタ
群、即ち、カレントレジスタ群として選択する。第1の
実施形態と同様に、この選択先の切り替えを、レジスタ
切り替えといい、カレントレジスタ群として選択されて
いない方のレジスタ群をスタンバイレジスタ群というこ
ととする。
【0140】ちなみに、このレジスタ切り替えのこと
を、コンテキストスイッチングと呼ぶ場合もある。 処
理実行部410は、プログラム実行するためのCPUな
どを有し、上述のレジスタ切り替え、つまり、カレント
レジスタ群の選択がなされると、このカレントレジスタ
群に格納されているコンテキストにもとづいて、実行す
るプログラム及びこのプログラムの実行に必要なデータ
の所在を特定し、DMA管理部418にこれらプログラ
ム及びこのプログラムの実行に必要なデータを取得する
ように指示する。
【0141】そして、処理実行部410は、プログラム
の実行に必要なデータが取得されたとき、処理制御部4
11からの指示にしたがいプログラムの実行を開始す
る。また、処理実行部410は、プログラムの実行中
に、処理が続行できない状況となった場合、プログラム
の実行を中断する旨を示すウエイトコードを処理制御部
411に出力する。
【0142】なお、上述のCPUは、クロックマスク部
427を介しPLL601から出力されるクロックパル
スに同期して駆動しており、このクロックパルスが途絶
えた場合、プログラム実行も停止する。LP状態格納レ
ジスタ424は、各プログラムの状態及び属性などを示
すプログラム状態情報と各タイムスロットの設定内容が
示されたタイムスロット設定情報を格納するためのレジ
スタである。
【0143】より具体的には、このタイムスロット設定
情報は、タイムスロットを特定するためのID(以下。
「TS_ID」という。)と、このタイムスロットの属性を
示すコードとからなる。ここで、タイムスロットの属性
のコードとして、そのタイムスロットが、定常的に実行
されることを原則とするプログラムの実行用として用意
されたタイムドリブン型タイムスロットである場合には
「TD」が、また、イベントが発生した場合にのみに実
行するような非定常的なプログラム実行のために用意さ
れたイベントドリブン型タイムスロットである場合には
「ED」が示されている。
【0144】つまり、タイムドリブン型タイムスロット
は、イベントが発生しなくても、実行対象となり得る
が、イベントドリブン型タイムスロットは、イベントが
発生したときでなくては、実行対象とはなり得えない。
上述のプログラム状態情報には、プログラムを特定す
るIDの値と、プログラムの状態を特定するコードと、
このプログラムの属性を示すコードと、プログラムを起
床又は回復させるタイミング(以下、「起床タイミン
グ」という。)を示すコードとが示されている。
【0145】プログラムの状態を特定するコードとして
は、waiting、ready、running、suspended-waiting、su
spended-ready、non-existentの6つがある。このう
ち、ready及びrunningは、現在、プログラムが実行でき
る状況であり、特に、runningは、現在プログラム実行
中であることを示す。また、waiting及びsuspended-wai
tingは、現在、プログラムが実行できない状態にあるこ
とを示す。
【0146】non-existentは、現在、プログラムを実行
する必要がない状態にあることを示す。つまり、これら
waiting、suspended-waiting及びnon-existentの状態で
あるプログラムは、プログラム実行のスケジューリング
の対象範囲外となる。また、プログラム実行中にプログ
ラム実行ができない状態となり、これらコードがsuspen
ded-waitingへと遷移した場合、その時点において割り
当てられていたタイムスロットのTS_IDの値がこれらコ
ードに付されることとなる。
【0147】なお、これらのコードは、プログラム実行
が可能となった時点で、それぞれsuspended-readyへと
遷移するが、プログラムの実行がなされるまで上述のTS
_IDの値が付されたままとなる。プログラムの属性を示
すコードとしては、そのプログラムが、定常的に実行さ
れることを原則とするプログラムである場合には「T
D」が、また、イベントが発生した場合にのみに実行さ
れるプログラムである場合には「ED」が示されてい
る。
【0148】起床タイミングを示すコードとしては、プ
ログラムの実行要求が発生したときにスタンバイレジス
タ群となっているレジスタ群が開放された後、コンテキ
ストを格納して実行するプログラム、つまり、処理時間
の制約が少ないプログラムの場合には、「n」が示さ
れ、また、既にスタンバイレジスタ群内に格納したコン
テキストを入れ替えてまで早急に実行を必要とするプロ
グラムの場合、「e」のコードが示されている。
【0149】制御レジスタ420は、現在実行対象とな
っているタイムスロット及び次の実行対象とすべきタイ
ムスロットを特定する情報を格納するためのレジスタで
ある。より具体的には、制御レジスタ420は、現在実
行対象となっているタイムスロットに対応するタイムス
ロット情報が格納されている場所を示すカレントアドレ
スの値と、次の実行対象とすべきタイムスロットに対応
するタイムスロット情報が格納されている場所を示すネ
クストアドレスの値を格納している。
【0150】仮想マルチプロセッサ400においては、
16個タイムスロットが設定されており、これに伴い、
タイムスロット情報の数も16存在する。上記16個の
タイムスロットのうち、プログラムの実行に通常用いら
れるタイムスロットは、4つのみである。なお、この4
つのタイムスロットに対応するタイムスロット情報のア
ドレスの値が、連続した値をとるように、タイムスロッ
ト情報が時間割付情報格納レジスタ402に格納されて
いる。
【0151】制御レジスタ420は、上述の連続したア
ドレス値における、その値が最も小さい先頭アドレスの
値及びその値が最も大きい終端アドレスの値も格納して
いる。各タイムスロット情報は、各タイムスロットを特
定するためのTS_IDの値(0から15のいずれか)
を含んでいる。
【0152】このTS_IDの値が小さいほど、時間割
付情報格納レジスタ402において、タイムスロット情
報が格納されている場所のアドレスの値も小さい。プロ
グラムの実行に通常用いられる上記4つタイムスロット
には、0から3までのTS_IDの値が対応づけられて
いる。つまり、上述の先頭アドレスには、TS_IDの
値0が示されたタイムスロット情報が格納されており、
また、上述の終端アドレスには、TS_IDの値3が示
されたタイムスロット情報が格納されている。
【0153】上記4つタイムスロットのそれぞれには、
優劣関係があり、先頭アドレスに格納されているタイム
スロット情報により特定されるタイムスロット(TS_ID=
0)が最も優先度が高く、終端アドレスに向かってアドレ
スの値が大きくなるほど、そのアドレスに格納されてい
るタイムスロットの優先度が低くなる。このタイムスロ
ットの優先度とは、リアルタイム処理が必要とされる度
合いを示し、特に、終端アドレスに格納されているタイ
ムスロット情報(TS_ID=3)により特定されるタイムス
ロットにおいては、リアルタイム処理を保証しない。
【0154】プロセッサ状態格納部425は、現在実行
中のプログラムの状態に関する情報を格納するレジスタ
である。この情報は、1)現在においてレジスタ切替部
412による切り替えが禁止されているか否かを示す切
替禁止フラグの値と、2)現在、後述の共通割り込処理
が実行されているか否かを示す共通割込フラグの値とか
らなる。
【0155】前記切り替えが禁止及び前記共通割り込み
が生じている場合には、それぞれのフラグの値は、1と
なり、それ以外の場合には0の値をとる。設定フラグレ
ジスタ421は、プログラムに関する設定情報を格納す
るためのレジスタである。より具体的には、この設定情
報とは、プログラム毎に用意されているフラグの集まり
(以下、「設定フラグ群」という。)であり、これら設
定フラグ群の各フラグの値が示す内容は、例えば、自プ
ログラムが受付可能な固有割り込み処理要求又はイベン
ト処理要求の種別などである。
【0156】リクエスト検出部419は、プログラム毎
に用意されているフラグの集まり(以下、「固有フラグ
群」という。)と、各プログラムに共通して用意されて
いるフラグの集まり(以下、「共通フラグ群」とい
う。)を有する。この固有フラグ群の各フラグは、設定
フラグレジスタ421に格納されている設定フラグ群の
各フラグと1対1に対応しており、固有フラグ群を構成
するビットデータのビット列長は、設定フラグ群を構成
するビットデータのビット列長と同一であり、先頭から
のビット位置が同じであれば同じ項目についての値を示
している。
【0157】なお、これらのフラグには、各フラグが示
す項目に関連する情報、例えば、この項目に対応するプ
ログラムを特定するIDなどの関連情報が付されている
ものがある。リクエスト検出部419は、外部I/F4
17から受け取った外部信号のビットデータの配列及び
値にもとづいて、上述の固有フラグ群及び共通フラグ群
の値を更新する。
【0158】つまり、リクエスト検出部419は、受け
取った外部信号を理解可能なデータ形式へと変換する。
リクエスト検出部419は、更新された共通フラグ群の
各フラグの値、及び、設定フラグレジスタ421内の設
定フラグ群の値と固有フラグ群の値とを照合した結果に
もとづいて、この外部信号の内容を把握する。
【0159】このような処理を、便宜的に、外部信号解
読処理という。外部信号の内容としては、大別すると、
割り込み処理要求とイベント処理要求の2つがある。割
り込み処理要求には、さらに、固有割り込み処理要求と
共通割り込み処理要求とがある。
【0160】ここで、固有割り込み処理要求とは、特定
のプログラムのみにおいて実行可能な処理の実行要求で
あって、この特定のプログラムのみが固有割り込み処理
の実行を必要としている。また、共通割り込み処理要求
とは、全てのプログラムにおいて実行可能な処理の実行
要求であって、これらプログラムが共通してこの共通割
り込み処理の実行を必要としている。
【0161】上述の共通フラグ群は、この共通割り込み
処理要求の内容ついて示すものである。なお、これら割
り込み処理は、実行可能なプログラム上からサブルーチ
ンプログラムにジャンプして実行される。イベント処理
要求とは、実行できない状態となっているプログラム又
は現在実行の必要がないプログラムにおいて、実行可能
な状態となるイベント又は実行を必要とするイベントが
発生したために生じるこれらプログラムの実行要求であ
る。
【0162】より具体的には、リクエスト検出部419
は、上述の外部信号解読処理の実行により、受け取った
外部信号が、固有割り込み処理要求、共通割り込み処理
要求及びイベント処理要求のいずれを示すのかを判別す
る。上記判別結果が、固有割り込み処理要求であった場
合、リクエスト検出部419は、上述の関連情報によ
り、この固有割り込み処理の割込み先となるプログラム
を特定するID(以下、「固有P_ID」という。)及
び固有割り込み処理を実行するサブルーチンプログラム
を特定するID(以下、「固有SP_ID」という。)
も取得する。
【0163】また、上記判別結果が、共通割り込み処理
要求であった場合、リクエスト検出部419は、上述の
関連情報により、上述の外部信号から共通割り込み処理
を実行するサブルーチンプログラムを特定するID(以
下、「共通SP_ID」という。)を取得する。また、
上記判別結果が、イベント処理要求であった場合、リク
エスト検出部419は、上述の関連情報により、上述の
外部信号から実行要求がなされたプログラムを特定する
ID(以下、「イベントP_ID」という。)を取得す
る。
【0164】リクエスト検出部419は、上述の取得に
伴い、取得したこれらIDをスケジューリング制御部4
13に出力する。また、リクエスト検出部419は、上
述の固有割り込み処理要求、共通割り込み処理要求及び
イベント処理要求に応じる処理の実行が完了した旨をス
ケジューリング制御部413から受け取ったとき、完了
した処理に該当する項目のフラグの値をデフォルト値に
変更する。
【0165】さらに、リクエスト検出部419は、上記
判別結果が、イベント処理要求であった場合、先に述べ
たイベントP_IDのスケジューリング制御部413へ
の出力に先行して、LP状態格納レジスタ424を参照
する。このとき、このイベントP_IDにより特定され
るプログラムの属性が「ED」を示す場合、つまり、こ
のプログラムが非定常的に実行されるイベントドリブン
型のプログラムである場合、リクエスト検出部419
は、後述するサイクル先頭信号の直近の受信時点から現
在までにおいて、プログラムの属性が「ED」であるプ
ログラムを示すP_IDをスケジューリング制御部41
3に出力したことがない場合に限り、このP_IDをス
ケジューリング制御部413に出力するものとする。
【0166】リクエスト検出部419は、以上の処理を
実施した結果、P_IDの出力できなかったものについ
て、このP_IDを記憶し、次にサイクル先頭信号を受
信したときに、スケジューリング制御部413に出力す
るようにする。スケジューリング制御部413は、1タ
イムスロット分のプログラム実行時間枠内において、プ
ログラム実行のスケジューリングを実施し、コンテキス
トをスタンバイレジスタ群に復帰するための処理(以
下、「復帰処理」という。)を実施し、レジスタ切り替
えのための処理(以下、「レジスタ切り替え処理」とい
う。)を実施し、スタンバイレジスタ群からコンテキス
トをコンテキストメモリ500上に退避するための処理
(以下、「退避処理」という。)を実施する機能を有す
る。(1−1.スケジューリング)まず、上述のスケジ
ューリングについて説明する。
【0167】スケジューリングには、定常的な処理の実
行についてのスケジューリングである1)タイムドリブ
ンスケジューリング、現在スケジューリングの対象外と
なっているプログラムの実行についてのスケジューリン
グである2)イベントドリブンスケジューリング及びプ
ログラムの実行中にプログラムの実行時間が放棄された
場合におけるスケジューリングである3)放棄スケジュ
ーリングの3つがある。
【0168】スケジューリング制御部413は、これら
3つのスケジューリング及びレジスタ切り替え処理の予
備的処理として、(1)目的タイムスロット検索処理、
(2)目的TS割り当てプログラム検索処理、(3)優
先度&モード情報検索処理、(4)アイドルオプション
情報検索処理及び(5)タイムオプション情報検索処理
を実施する。 (1−1−1.目的タイムスロット検索処理)以下、目
的タイムスロット検索処理について説明する。
【0169】スケジューリング制御部413は、制御レ
ジスタ420内に格納されているカレントアドレスの
値、ネクストアドレスの値、先頭アドレスの値及び終端
アドレスの値のうち、目的とするいずれか1つのアドレ
ス(以下、「目的アドレス」という。)の値を参照し、
時間割付情報格納レジスタ402内の目的アドレスに格
納されているタイムスロット情報内のTS_IDの値を
参照し、当該タイムスロット(以下、「目的TS」とい
う。)を特定し、さらに、このタイムスロットに割り当
てられているプログラム実行時間枠、即ち、基本サイク
ルの値を取得する。 (1−1−2.目的TS割り当てプログラム検索処理)
以下、目的TS割り当てプログラム検索処理について説
明する。
【0170】スケジューリング制御部413は、目的T
Sに対応づけられているLP情報を参照し、このLP情
報が示す4つのプログラムを特定し、さらに、これらプ
ログラムそれぞれに対応づけられている優先度(0から
3のいずれか)を把握する。 (1−1−3.優先度&モード情報検索処理)以下、優
先度&モード情報検索処理について説明する。
【0171】スケジューリング制御部413は、目的T
Sに対応づけられている優先度&モード情報を参照し、
優先度として0から3のいずれが示されているのか、さ
らに、モードとしてIndexモード及びLevelモードのいず
れが示されているのかを把握する。上述のIndexモード
及びLevelモードとは、タイムスロットへのプログラム
の割り付け方を規定する設定情報であり、優先度&モー
ド情報にIndexモードが示されている場合、ある1つの
プログラムのみに対してタイムスロットへの割り付けを
試み、また、優先度&モード情報にLevelモードが示さ
れている場合、指定された優先度よりも上位の優先度を
有するプログラムのみに対してタイムスロットへの割り
付けを試みられることとなる。 (1−1−4.アイドルオプション情報検索処理)以
下、アイドルオプション情報検索処理について説明す
る。
【0172】スケジューリング制御部413は、アイド
ルオプション情報検索処理として、目的TSに対応づけ
られているアイドルオプション情報を参照し、「SWITC
H」及び「MICRO-SLEEP」のいずれが示されているのかを
判別する。 (1−1−5.タイムオプション情報検索処理)スケジ
ューリング制御部413は、タイムオプション情報検索
処理として、目的TSに対応づけられているタイムオプ
ション情報の内容を参照し、「LP_SWITCH」、「TS_SWIT
CH」及び「MICRO-SLEEP」のいずれが示されているのか
を判別する。 (1−2.タイムドリブンスケジューリング)以下、タ
イムドリブンスケジューリングについて説明する。
【0173】タイムドリブンスケジューリングとは、通
常のプログラム実行に関するスケジューリングである。
後述のイベントドリブンスケジューリング及び放棄スケ
ジューリングが実行されない限り、スケジューリング制
御部413は、タイムドリブンスケジューリングを実行
し、これにもとづいて復帰処理、レジスタ切り替え処理
及び退避処理を実施する。
【0174】スケジューリング制御部413は、タイム
ドリブンスケジューリングとして、以下のスケジューリ
ング処理を実施する。 (1−2−1.スケジューリング処理)以下、スケジュ
ーリング処理について説明する。スケジューリング制御
部413は、ネクストアドレスを目的アドレスとして先
に述べた目的タイムスロット検索処理を実施し、目的T
S(以下、ここでは、「ネクストTS」という。)を特
定した後、先に述べた目的TS割り当てプログラム検索
処理を実施してこのネクストTSに対応づけられている
4つのプログラムを特定し、さらに、これらプログラム
それぞれに対応づけられている優先度を把握する。
【0175】次に、スケジューリング制御部413は、
先に述べた優先度&モード情報検索処理を実行し、上述
のネクストTSに対応づけられている優先度&モード情
報の内容、即ち、優先度及びモードを検索する。検索さ
れたモードがLevelモードであるとき、スケジューリン
グ制御部413は、検索された優先度の値以下の値が対
応づけられている全てのプログラムを上述の目的TSへ
と割り当てるプログラムの候補(以下、「候補プログラ
ム」という。)とする。
【0176】検索されたモードがIndexモードであると
き、スケジューリング制御部413は、優先度&モード
情報検索処理により検索された優先度の値が対応づけら
れている1つのプログラムを上述の候補プログラムとす
る。さらに、スケジューリング制御部413は、LP状
態格納レジスタ424内の各候補プログラムに対応する
プログラム状態情報を参照し、各候補プログラムがそれ
ぞれ実行可能であるか否かを検出する。
【0177】より具体的には、スケジューリング制御部
413は、候補プログラムのプログラム状態情報がread
yを示している場合に、そのプログラムが実行可能であ
ると判断し、そのプログラムを上述のネクストTSへの
割り付け候補として有効にする。このようにして有効と
された候補プログラムを、有効候補プログラムという。
【0178】スケジューリング制御部413は、1つの
ネクストTSに対して、複数の有効候補プログラムが存
在する場合には、優先度の値が最も小さな値が対応づけ
られている有効候補プログラムをこのネクストTSへの
割り付け対象とする。また、スケジューリング制御部4
13は、1つのネクストTSに対して、1つの有効候補
プログラムが存在する場合には、その有効候補プログラ
ムをこのネクストTSへの割り付け対象とする。
【0179】有効候補プログラムをネクストTSへの割
り付け対象とするのに伴い、スケジューリング制御部4
13は、当該ネクストTSのタイムスロット情報に有効
候補プログラムを特定するIDを対応づける。さらに、
スケジューリング制御部413は、上述の有効候補プロ
グラムの実行が完了したとき、上述のタイムスロット情
報から当該有効候補プログラムを特定するIDを抹消す
る。
【0180】また、1つのネクストTSに対して、有効
候補プログラムが1つも存在しない場合には、スケジュ
ーリング制御部413は、アイドルオプション情報検索
処理を実施することにより得られる情報の内容にもとづ
いて、その後の処理の内容を決定する。より具体的に
は、スケジューリング制御部413は、上述の情報の内
容が、「MICRO-SLEEP」を示す場合、いずれのプログラ
ムも上述のネクストTSへの割り当て対象としない。
【0181】なお、このようにしてプログラムが割り当
てられなかったタイムスロットをエンプティタイムスロ
ットという。また、上述の情報の内容が、「SWITCH」を
示す場合、スケジューリング制御部413は、ネクスト
アドレスの値に1を加えた値(ただし、ネクストアドレ
スが終端アドレスであった場合に限り、先頭アドレスの
値)を新たなネクストアドレスとし、上述のスケジュー
リング処理を繰り返し実施する。
【0182】以上のようなタイムドリブンスケジューリ
ングを実施した後、スケジューリング制御部413は、
復帰処理、レジスタ切り替え処理及び退避処理を実施す
る。 (1−3.イベントドリブンスケジューリング)以下、
イベントドリブンスケジューリングについて説明する。
イベントドリブンスケジューリングとは、現在スケジュ
ーリングの対象外となっている以下のプログラムの実行
要求が生じているとき、前記タイムドリブンスケジュー
リングに代えて実施されるスケジューリングである。
【0183】実行要求が生じている上述のプログラムと
は、即ち、EDの属性を有するプログラムであって、wait
ingの状態からreadyへと遷移したもの、及び、TD又はED
の属性を有するプログラムであって、suspended- waiti
ng 又はrunningの状態からsuspended-readyの状態とな
っているプログラムである。なお、スケジューリング制
御部413は、タイムドリブンスケジューリングを実施
しようとしたとき、その直前において、上述のプログラ
ムの実行要求が生じているか否かを判断する。
【0184】スケジューリング制御部413は、リクエ
スト検出部419からイベントP_IDを受け取ったと
き、受け取ったイベントP_IDによりプログラムを特
定し、LP状態格納レジスタ424を参照し、このプロ
グラムの状態とTS_IDの値、プログラムの属性、起
床タイミングを把握し、把握した内容に応じて以下の処
理を実施する。 (1−3−1.回復イベント処理)スケジューリング制
御部413は、上記特定プログラムの状態がwaiting、
属性が「TD」、起床タイミングが「n」を示す場合、
LP状態格納レジスタ424におけるイベントP_ID
により特定される現在のプログラムの状態をreadyに遷
移させる。
【0185】スケジューリング制御部413は、このよ
うな回復イベント処理の実施後、タイムドリブンスケジ
ューリング後に実施する復帰処理、レジスタ切り替え処
理及び退避処理を実施する。 (1−3−2.緊急回復イベント処理)上記特定プログ
ラムの状態がsuspended-waiting、属性が「TD」、起
床タイミングが「e」を示す場合、スケジューリング制
御部413は、この特定プログラムの状態をsuspended-
readyに遷移させる。
【0186】そして、スケジューリング制御部413
は、この特定プログラムの状態を示すコードに付されて
いるTS_IDの値からタイムスロット(以下、「特定
TS」という。)を特定し、この特定TSに上述の特定
プログラムを割り当てる。このような緊急回復イベント
処理を実施した後、スケジューリング制御部413は、
後述の緊急復帰処理を実施し、また、タイムドリブンス
ケジューリング後に実施されるレジスタ切り替え処理に
代えて、後述の緊急レジスタ切り替え処理を実施する。 (1−3−3.イベント起床処理)また、上記特定プロ
グラムの状態がsuspended-waiting、属性が「TD」、
起床タイミングが「n」を示す場合、LP状態格納レジ
スタ424におけるイベントP_IDにより特定される
現在のプログラムの状態をsuspended-readyに遷移させ
る。
【0187】さらに、上記特定プログラムの状態がwait
ing又はsuspended-waiting、属性が「ED」、起床タイ
ミングが「n」を示す場合、スケジューリング制御部4
13は、受け取ったイベントP_IDにより特定される
プログラムの状態がwaitingであればreadyに、suspende
d-waitingであればsuspended-readyに変更する。加え
て、スケジューリング制御部413は、イベントドリブ
ンスケジューリング後に実施される起床タイミング
「e」の緊急レジスタ切り替え処理が発生した場合、そ
の事象の発生によって、実行中のプログラムの状態を属
性に関係なくrunningからsuspended-readyへと変更す
る。
【0188】このイベント起床処理を実施した場合、ス
ケジューリング制御部413は、タイムドリブンスケジ
ューリング後に実施される復帰処理に代えて、後述の早
期復帰処理を実施し、カウント値0信号の到来をトリガ
として、後述のレジスタ切り替え処理を実施する。この
ようなイベント処理をイベント起床処理という。 (1−3−4.緊急イベント起床処理)また、上記特定
プログラムの状態がwaiting又はsuspended-waiting、属
性が「ED」、起床タイミングが「e」を示す場合、ス
ケジューリング制御部413は、特定プログラムの状態
がwaitingであればreadyに、suspended-waitingであれ
ばsuspended-readyに変更する。
【0189】この緊急イベント起床処理を実施した場
合、スケジューリング制御部413は、タイムドリブン
スケジューリング後に実施される復帰処理に代えて、後
述の緊急復帰処理を実施し、また、タイムドリブンスケ
ジューリング後に実施されるレジスタ切り替え処理に代
えて、後述の緊急レジスタ切り替え処理を実施する。こ
のようなイベント処理を緊急イベント起床処理という。 (1−4.放棄スケジューリング)スケジューリング制
御部413が、処理制御部411を介して処理実行部4
10からウエイトコードを受け取った場合、もしくは、
DMA管理部418から後に述べるキャッシュミス信号
を受け取った場合に実施する放棄スケジューリングにつ
いて説明する。
【0190】上述のウエイトコードとは、実行中のプロ
グラムの継続が不可能となったとき、実行中のプログラ
ムに割り当てられている時間が放棄されたことを示すコ
ードであり、このウエイトコードには、「vmp_wait」
と、「vmp_sus」とがある。「vmp_wait」コードは、上
述の放棄時間が比較的長いことが見込まれる場合に、処
理実行部410により発せられるコードであり、また、
「vmp_sus」コードは、上述の放棄時間が比較的短いこ
とが見込まれる場合に、処理実行部410により発せら
れるコードである。
【0191】スケジューリング制御部413は、処理制
御部411を介して処理実行部410から「vmp_wait」
コード、「vmp_sus」コード及びキャッシュミス信号を
受け取った場合、LP状態格納レジスタ424内に格納
されている実行中のプログラムの状態を更新する。より
具体的には、「vmp_wait」コードを受け取った場合、ス
ケジューリング制御部413は、実行中のプログラムの
状態をrunningからwaitingに変更する。
【0192】また、「vmp_sus」コードを受け取った場
合、又は、キャッシュミス信号を受け取った場合、スケ
ジューリング制御部413は、実行中のプログラムの状
態をrunningからsuspended-waitingに変更する。そし
て、スケジューリング制御部413は、カレントアドレ
スを目的アドレスとして、先に述べたタイムオプション
情報検索処理を実施する。
【0193】受け取ったウエイトコードが「vmp_sus」
の場合、スケジューリング制御部413は、タイムオプ
ション情報に関係なく、後述の緊急レジスタ切り替え処
理を実施し、退避処理を実施して、さらに後述の制御レ
ジスタ値更新処理を実施する。また、受け取ったウエイ
トコードが「vmp_wait」であり、かつ、タイムオプショ
ン情報の内容が「TS_SWITCH」を示す場合においても、
上記と同様にスケジューリング制御部413は、後述の
緊急レジスタ切り替え処理を実施し、退避処理を実施し
て、さらに後述の制御レジスタ値更新処理を実施する。
【0194】なお、前記緊急レジスタ切り替え処理が実
施される直前のスタンバイレジスタ群では、タイムドリ
ブンスケジューリングによる復帰処理か、又は、イベン
トドリブンスケジューリングで実施されるイベント起床
処理後の早期復帰処理がなされている。また、受け取っ
たウエイトコードが「vmp_wait」であって、かつ、タイ
ムオプション情報の内容が「LP_SWITCH」を示すとき、
スケジューリング制御部413は、現在実行対象となっ
ているタイムスロットに有効候補プログラムが存在する
か否かを判断し、有効候補プログラムが存在する場合に
は、有効候補プログラムのうち最も優先度が高いプログ
ラム(有効候補プログラムが1つの場合には、そのプロ
グラム)に対応するコンテキストのレジスタ値をスタン
バイレジスタ群に格納、即ち、復帰を実施する。
【0195】その後、スケジューリング制御部413
は、後述の緊急レジスタ切り替え処理を実施し、退避処
理を実施する。また、有効候補プログラムが存在しない
場合、及び、タイムオプション情報の内容が「MICRO-SL
EEP」を示す場合、スケジューリング制御部413は、
処理実行部410においてカレントレジスタ群内のレジ
スタ値の更新を伴わないプログラム実行である後述のNO
P実行させるように処理制御部411に指示すると共
に、以下の処理を実施する。
【0196】即ち、スケジューリング制御部413は、
直ちにマスク信号のクロックマスク部427への出力を
開始し、さらに、スタンバイレジスタ群に格納されてい
るコンテキストの内容を参照し、このコンテキストに対
応するプログラムの実行に必要なデータが格納されてい
るメモリのアドレスの値を取得し、このアドレスに格納
されているデータをキャッシュメモリに書き込むように
DMA管理部418に指示する。
【0197】さらに、スケジューリング制御部413
は、次にレジスタ切り替え、又は緊急レジスタ切り替え
が実施されるとき、マスク信号のクロックマスク部42
7への出力を停止する。スケジューリング制御部413
は、サイクルカウンタ416からカウント値0信号を受
け取ったとき、後述のレジスタ切り替え処理及び退避処
理を実施する。
【0198】次に、復帰処理、緊急復帰処理及び早期復
帰処理などの復帰に関する処理について説明する。 (1−5−1.復帰処理)復帰処理とは、タイムドリブ
ンスケジューリング実施後において、スケジューリング
制御部413により実施される、レジスタ値をスタンバ
イレジスタ群に格納するための処理である。
【0199】スケジューリング制御部413は、復帰処
理として、スタンバイレジスタ群が開放されたとき、即
ち、退避が完了したとき、上述のタイムドリブンスケジ
ューリングにより割り当てられたプログラムのコンテキ
ストのレジスタ値を、上述のスタンバイレジスタ群に格
納するようにDMA管理部418に指示する。 (1−5−2.緊急復帰処理)緊急復帰処理とは、イベ
ントドリブンスケジューリングを実施した結果、先に述
べた特定プログラムの起床タイミングが「e」を示す場
合において、スケジューリング制御部413により実施
される、レジスタ値をスタンバイレジスタ群に格納する
ための処理である。
【0200】スケジューリング制御部413は、緊急復
帰処理として、上述の緊急回復イベント処理又は緊急イ
ベント起床処理を実行が完了したとき、スタンバイレジ
スタ群に格納されているレジスタ値を退避して、直ちに
特定プログラムに対応するコンテキストのレジスタ値を
上述のスタンバイレジスタ群に格納、即ち、緊急的な復
帰を実施するようにDMA管理部418に指示する。
【0201】なお、上述の退避及び復帰は、レジスタ群
単位ではなく、各レジスタ単位で実行することが可能で
あり、レジスタ毎に退避、復帰を順次実施することによ
り、これらの退避及び復帰が擬似並行的に実施されるこ
ととなる。 (1−5−3.早期復帰処理)早期復帰処理とは、イベ
ントドリブンスケジューリングを実施した結果、先に述
べた特定プログラムの起床タイミングが「n」を示す場
合において、スケジューリング制御部413により実施
される、レジスタ値をスタンバイレジスタ群に格納する
ための処理である。
【0202】スケジューリング制御部413は、早期復
帰処理として、スタンバイレジスタ群が開放されたと
き、即ち、退避が完了したとき、直ちに特定プログラム
に対応するコンテキストのレジスタ値を、上述のスタン
バイレジスタ群に格納するようにDMA管理部418に
指示する。なお、スケジューリング制御部413は、緊
急復帰処理と同様に、上述の格納に先行して、スタンバ
イレジスタ群のレジスタ値の初期化を実施する。
【0203】つづいて、レジスタ切り替え処理及び緊急
レジスタ切り替え処理などのレジスタ切り替えに関する
処理について説明する。 (1−6−1.レジスタ切り替え処理)スケジューリン
グ制御部413は、サイクルカウンタ416からカウン
ト値0信号を受け取ったとき、後述の基本サイクル調整
処理を実施し、さらに後述の切り替えタイミング確認処
理を行った上でレジスタ切り替えを実施するようにレジ
スタ切替部412に指示する。
【0204】また、スケジューリング制御部413は、
レジスタ切り替えが完了した旨の通知をレジスタ切替部
412から受け取ったとき、基本サイクルの値をサイク
ルカウンタ416に出力し、さらに、後述の実時間保存
処理及び後述の制御レジスタ値更新処理を実施する。こ
の時、実行対象となっているタイムスロットが先に述べ
たエンプティタイムスロットである場合、スケジューリ
ング制御部413は、基本サイクルの値をサイクルカウ
ンタ416に出力するのに伴い、処理実行部410にお
いてNOP実行させるように処理制御部411に指示する
と共に、クロックマスク部427へのマスク信号の出力
を開始し、さらに、スタンバイレジスタ群に格納されて
いるコンテキストの内容を参照し、このコンテキストに
対応するプログラムの実行に必要なデータが格納されて
いるメモリのアドレスの値を取得し、このアドレスに格
納されているデータをキャッシュメモリに書き込むよう
にDMA管理部418に指示する。
【0205】また、スケジューリング制御部413は、
次にレジスタ切り替え又は緊急レジスタ切り替えが実施
されたとき、このマスク信号のクロックマスク部427
への出力を停止する。 (1−6−1−1.基本サイクル調整処理)以下、基本
サイクル調整処理について説明する。
【0206】スケジューリング制御部413は、レジス
タ切り替えの直前に、LP状態格納レジスタ424を参
照し、スタンバイレジスタ群に格納されているレジスタ
値群に対応するプログラムの状態がsuspended-readyで
あるか否かを判断し、suspended-readyである場合に
は、スタンバイレジスタ群内の後述の残余サイクル値記
憶領域から後述の実カウント値を取得する。
【0207】そして、スケジューリング制御部413
は、次回のプログラム実行時において、このプログラム
が割り当てられているタイムスロットのタイムスロット
情報に示されている正規の基本サイクルに代えて、この
実カウント値をこのプログラムの実行時間、つまり、こ
のプログラムが割り当てられているタイムスロットの基
本サイクルとする。
【0208】さらに、このタイムスロットのTS_ID
の値が3である場合、即ち、リアルタイム処理を保証し
ないタイムスロットである場合、スケジューリング制御
部413は、TS_IDの値が3を示すタイムスロット
情報内のタイムラグ値を取得し、このタイムラグ値を上
述の基本サイクルの値から差し引いたものを、次回のプ
ログラム実行時における新たな基本サイクルとすると共
に、このタイムスロット情報内の前記タイムラグ値を0
に更新する。
【0209】なお、スケジューリング制御部413は、
処理制御部411からプログラム実行の開始の通知を受
け取ったとき、以上のように求められた基本サイクルの
値をサイクルカウンタ416に出力する。 (1−6−1−2.切り替えタイミング確認処理)以
下、切り替えタイミング確認処理について説明する。
【0210】プログラムを時分割実行する場合、例え
ば、プログラムの実行に用いられる共有資源などの都合
によりプログラムの実行を任意の時間に終了することが
できない。つまり、任意の時間でレジスタ切り替えを実
施することはできない。このため、スケジューリング制
御部413は、まず、プログラムの終了を処理制御部4
11に依頼し、プログラムの実行の終了が可能な点でプ
ログラムを終了させ、レジスタ切り替えが可能であるか
否かを確認する。
【0211】より具体的には、上述の依頼後、スケジュ
ーリング制御部413は、プロセッサ状態格納部425
内の切替禁止フラグの値及び共通割り込みフラグの値を
参照し、この切替禁止フラグの値及び共通割り込みフラ
グの値が0である場合にはレジスタ切り替えが可能であ
り、切替禁止フラグの値及び共通割り込みフラグの値が
1である場合にはレジスタ切り替えが不可能であると判
断する。 (1−6−1−3.実時間保存処理)以下、実時間保存
処理について説明する。
【0212】スケジューリング制御部413は、レジス
タ切り替えを実施するようにレジスタ切替部412に指
示したとき、その時点においてサイクルカウンタ416
が有するカウント値を取得し、このカウント値(以下、
「実カウント値」という。)が正の値をとり、かつ、上
述のレジスタ切り替えのトリガとなる「vmp_sus」コー
ドを受け取っている場合、この実カウント値を、前記レ
ジスタ切り替えが実行された結果、スタンバイレジスタ
群となるレジスタ群の決められた領域(以下、「残余サ
イクル値記憶領域」という。)に書き込む。
【0213】このようにすることにより、実行を終了し
たプログラムの実カウント値が、このプログラムのコン
テキストに付され、このコンテキストの退避に伴い、コ
ンテキストメモリ500へと格納されるため、次回プロ
グラム実行時において、前回のプログラム実行時におけ
る実カウント値が取得可能となる。また、上記実カウン
ト値が負の値をとる場合、もしくは、上記実カウント値
が正の値をとり、かつ、上述のレジスタ切り替えのトリ
ガとなる「vmp_wait」コードを受け取っている場合、ス
ケジューリング制御部413は、終端アドレスを目的ア
ドレスとして目的タイムスロット検索処理を実施し、こ
れにより特定されるタイムスロット(TS_ID=3)のタイ
ムスロット情報の格納場所を特定し、このタイムスロッ
ト情報に格納されているタイムラグ値からこの実カウン
ト値を加えることにより、このタイムラグ値を更新す
る。
【0214】なお、上述の切り替えタイミング確認処理
の説明において述べた理由により、切り替えのタイミン
グをタイムスロットの基本サイクルと厳密に一致させる
ことはできず、通常、数サイクル程度オーバーして切り
替えるため、上述の実カウント値は、負の値をとり、ま
た、プログラムの実行が中断されることによりレジスタ
切り替えが行なわれたときなどには、実カウント値は、
実行対象となっているタイムスロットの基本サイクル未
満となるため正の値をとる。 (1−6−1−4.制御レジスタ値更新処理)以下、制
御レジスタ値更新処理について説明する。
【0215】制御レジスタ値更新処理とは、以下に示す
スケジューリングの実施に伴って実行される制御レジス
タ420内のデータ更新である。上述のスケジューリン
グの実施とは、即ち、1)タイムドリブンスケジューリ
ングの実施、2)タイムオプション情報の内容が「TS_S
WITCH」を示す場合における放棄スケジューリングの実
施のことである。
【0216】スケジューリング制御部413は、現時点
におけるネクストアドレスの値を新たなカレントアドレ
スの値とすると共に、当該ネクストアドレスの値に1を
加えた値(ただし、ネクストアドレスが終端アドレスで
あった場合に限り、先頭アドレスの値)を新たなネクス
トアドレスとし、これに伴って、制御レジスタ420内
に格納されているカレントアドレスの値及びネクストア
ドレスの値を更新する。
【0217】また、スケジューリング制御部413は、
カレントアドレスの値を、終端アドレスの値から先頭ア
ドレスの値へと移行させたとき、サイクル先頭信号をリ
クエスト検出部419に出力する。 (1−6−2.緊急レジスタ切り替え処理)以下、緊急
レジスタ切り替え処理について説明する。
【0218】スケジューリング制御部413は、放棄ス
ケジューリングのタイムオプション処理において、タイ
ムオプション情報の内容が「TS_SWITCH」を示すとき、
並びに、イベントドリブンスケジューリング時の緊急回
復イベント処理及び緊急イベント起床処理後に緊急復帰
処理が完了したときに、上述の基本サイクル調整処理を
実施し、さらに上述の切り替えタイミング確認処理を行
った上でレジスタ切り替えを実施するようにレジスタ切
替部412に指示する。
【0219】そして、スケジューリング制御部413
は、レジスタ切り替えが完了した旨の通知をレジスタ切
替部412から受け取ったとき、基本サイクルの値をサ
イクルカウンタ416に出力し、さらに、上述の実時間
保存処理を実施する。 (1−7−1.退避処理)スケジューリング制御部41
3は、レジスタ切り替えが完了した旨の通知をレジスタ
切替部412から受け取ったとき、このレジスタ切り替
えによりスタンバイレジスタ群となるレジスタ群に格納
されているコンテキストのレジスタ値を、もともとこの
コンテキストが格納されていたコンテキストメモリ50
0上の記憶領域に上書きする、即ち、退避するようにD
MA管理部418に指示する。
【0220】なお、上述のレジスタ切り替えが実施され
る直前において、実行対象となっていたタイムスロット
が先に述べたエンプティタイムスロットであるときにお
いても上述の退避を行う。 (1−8−1.固有割込み処理)また、スケジューリン
グ制御部413は、リクエスト検出部419から、固有
P_ID及び固有SP_IDを受け取った場合、以下の
処理を実施する。
【0221】即ち、スケジューリング制御部413は、
LP状態格納レジスタ424を参照し、受け取った固有
P_IDにより特定されるプログラムが、現在実行中で
あるか否かを判断し、現在実行中である場合、直ちに処
理制御部411を介し、処理実行部410に受け取った
固有SP_IDにより特定されるサブルーチンプログラ
ムにジャンプして処理を実行するように指示する。
【0222】また、受け取った固有P_IDにより特定
されるプログラムが、現在実行中でない場合、スケジュ
ーリング制御部413は、リクエスト検出部419内の
フラグを参照することによりこのサブルーチンプログラ
ムの割込み先となるプログラムを特定し、この特定され
たプログラムが実行される時に、処理制御部411を介
して処理実行部410にこのサブルーチンプログラムに
ジャンプして処理を実行するように指示する。 (1−8−2.共通割り込み処理)また、スケジューリ
ング制御部413は、リクエスト検出部419から、共
通SP_IDを受け取った場合、直ちに処理制御部41
1を介し、処理実行部410に受け取った共通SP_I
Dにより特定されるサブルーチンプログラムにジャンプ
して処理を実行するように指示し、処理制御部411か
ら当該サブルーチンプログラムの実行開始の通知を受け
取ったとき、サイクルカウンタ416にカウントダウン
を中断するように指示する。
【0223】また、スケジューリング制御部413は、
処理制御部411から上述の共通SP_IDにより特定
されるサブルーチンプログラムの実行が完了したことを
示す通知を受け取ったとき、サイクルカウンタ416に
カウントダウンの再開を指示するカウント再開信号を出
力する。以上のように、スケジューリング制御部413
は、様々な処理を実行する機能を有する。
【0224】処理制御部411は、処理実行部410に
おけるプログラムの実行状況を管理する機能を有し、処
理実行部410のプログラム実行状況を監視し、処理実
行部410におけるプログラム実行の開始タイミング及
び終了タイミングと、割込み処理の開始タイミング及び
終了タイミングを把握する。処理制御部411は、これ
らタイミングが到来するごとに、これらタイミングが到
来した旨をスケジューリング制御部413に通知する。
【0225】また、処理制御部411は、処理実行部4
10からウエイトコードを受け取ったとき、このウエイ
トコードをスケジューリング制御部413に出力する。
さらに、処理制御部411は、処理実行部410におけ
るプログラム実行が中断できない状態にあるとき、プロ
セッサ状態格納部425内の切替禁止フラグの値を1
(デフォルト値は0)にし、また、処理実行部410に
おいて、共通SP_IDにより特定されるサブルーチン
プログラムが実行されている間、プロセッサ状態格納部
425内の共通割り込みフラグの値を1(デフォルト値
は0)にする。
【0226】さらに、処理制御部411は、処理実行部
410からレジスタ切替禁止命令を受け取ったとき、プ
ロセッサ状態格納部425内の切替禁止フラグの値を1
にし、また、処理実行部410からレジスタ切替禁止解
除命令を受け取ったとき、上記切替禁止フラグの値を0
にする。 また、処理制御部411は、スケジューリン
グ制御部413からNOP実行させる指示を受け取った場
合、処理実行部410をNOP実行させる。
【0227】DMA管理部418は、DMA転送を円滑
に実施し、管理する機能部であり、処理実行部410、
スケジューリング制御部413などの各機能部からの要
求にもとづいてDMA転送を実施する。また、DMA管
理部418は、各機能部から要求されたDMA転送が完
了したとき、その旨を示す信号(以下、「転送完了信
号」という。)を当該機能部及びスケジューリング制御
部413に出力し、また、処理実行部410からの要求
に応じ、キャッシュメモリからプログラム及びデータを
取得しようとして、キャッシュミスが生じた場合、キャ
ッシュミスが生じたことを示す信号(以下、「キャッシ
ュミス信号」という。)をスケジューリング制御部41
3に出力する。
【0228】外部I/F417は、外部プロセッサなど
の外部機器に接続するインターフェースであり、外部か
ら受け取った信号をスケジューリング制御部413およ
びリクエスト検出部419に出力する。サイクルカウン
タ416は、クロックカウンタを有し、スケジューリン
グ制御部413から基本サイクルの値を受け取ったと
き、この値をカウンタの初期値としてカウントダウンを
開始する。
【0229】サイクルカウンタ416は、上述の初期値
から1クロック毎に1づつディクリメントすることによ
り上述のカウントダウンを行い、値が0となったとき、
スケジューリング制御部413にその旨を示す信号(以
下、「カウント値0信号」という。)を出力する。ま
た、サイクルカウンタ416は、スケジューリング制御
部413からの指示にもとづき、カウントダウンを中断
し、再開し、さらに、指示された時点におけるカウンタ
の値である実カウント値をスケジューリング制御部41
3に出力する。
【0230】クロックマスク部427は、スケジューリ
ング制御部413からマスク信号を受信している間、処
理実行部410へのクロックパルスの信号経路を遮断す
る機能を有する。 (2.データ)図16は、時間割付情報格納レジスタ4
02及びLP状態格納レジスタ424に格納されている
情報の内容を示す図である。
【0231】時間割付情報格納レジスタ402には、
1)タイムスロット情報と、2)LP情報と、3)優先
度&モード情報と、4)アイドルオプション情報と、
5)タイムオプション情報とが格納されている。これら
の情報は、タイムスロット毎に用意され、互いに関連付
けられている。 (2−1−1.タイムスロット情報)タイムスロット情
報には、タイムスロットを特定するためのTS_IDの
値と、基本サイクルの値とが含まれている。
【0232】また、TS_IDの値が3のタイムスロッ
ト情報には、さらに、タイムラグ値が含まれている。ま
た、スケジューリング制御部413によりスケジューリ
ングが実施されると、プログラムが割り当てられたタイ
ムスロットのTS_IDの値に、このプログラムのID
が対応づけられることとなる。 (2−1−2.LP情報)LP情報には、タイムスロッ
トへの割り当て候補となるプログラムに関する情報が格
納されている。
【0233】1つのタイムスロットへの割り当て候補と
なるプログラムの属性及び数は、割り当て先のタイムス
ロットの属性により異なる。即ち、TDの属性を有する
プログラムは、必ずTDの属性を有するタイムスロット
に割り当てられる。また、TDの属性を有する各タイム
スロットには、TDの属性を有する4つの候補プログラ
ムが用意されている。
【0234】一方、EDの属性を有するプログラムは、
必ずEDの属性を有するタイムスロットに割り当てられ
る。また、EDの属性を有する各タイムスロットには、
EDの属性を有する1つの候補プログラムが用意されて
いるのみである。各LP情報は、上述の割り当て先のタ
イムスロットに対応するタイムスロット情報に対応づけ
られている。
【0235】LP情報には、プログラムを特定するため
のIDの値と、優先度を示す値と、このプログラムに対
応するコンテキストが格納されているコンテキストメモ
リ500上のアドレスの値との組が、割り当て候補とな
るプログラムの数だけ格納されている。上述の優先度を
示す値は、0、1、2、3のいずれかの値であって、割
り当て候補となる各プログラム同士の優先度が重複しな
いように設定されている。
【0236】なお、割り当て候補となるプログラムの数
が1つの場合の優先度を示す値は、0となる。 (2−1−3.優先度&モード情報)優先度&モード情
報には、タイムスロットへの割り当て候補となるプログ
ラムの指定に関する情報が格納されている。
【0237】即ち、優先度&モード情報には、優先度を
示す0、1、2、3のいずれか1つの値と、モードを示
すコード「I」又は「L」が格納されている。ここでコ
ード「I」は、Indexモードを示し、コード「L」は、L
evelモードを示す。この優先度&モード情報の内容を変
更することにより、有効となる候補プログラムの範囲が
変化するため、各候補プログラムの実行頻度を設計上好
ましい値に近づけることができる。 (2−1−4.アイドルオプション情報)アイドルオプ
ション情報には、タイムスロットに割り付けようとした
プログラムが全て実行不可能な状態となっている場合に
おけるプログラム実行動作を決定する情報が格納されて
いる。
【0238】即ち、アイドルオプション情報には、省電
力化を示すコード「MICRO-SLEEP」又は高効率なプログ
ラム実行を示すコード「SWITCH」が格納されている。 (2−1−5.タイムオプション情報)タイムオプショ
ン情報には、実行中のプログラムが中断した場合におけ
る、中断以降のプログラム実行動作を決定する情報が格
納されている。
【0239】即ち、タイムオプション情報には、実行中
のプログラムが中断した場合、このプログラムに代え
て、このプログラムが属しているタイムスロットに対応
づけられている実行可能な別のプログラムをタイムスロ
ットに割り付けることを示すコード「LP_SWITCH」、次
のタイムスロットを実行対象とすることを示すコード
「TS_SWITCH」、又は、省電力化を示すコード「MICRO-S
LEEP」が格納されている。
【0240】LP状態格納レジスタ424には、1)プ
ログラム状態情報と、2)タイムスロット設定情報とが
格納されている。 (2−2.プログラム状態情報)プログラム状態情報に
は、プログラム毎に、プログラムを特定するためのID
と、プログラム状態を示すコード及びプログラムの属性
ならびにプログラムを起床又は回復させるタイミングを
示すコードが格納されている。
【0241】プログラム状態を示すコードとしては、wa
iting、suspended-waiting、ready、suspended- read
y、running、nonexistentの6つがある。waitingコード
は、現在、プログラムの実行時間を放棄しており、か
つ、次回プログラム実行時に通常のタイムスロットのプ
ログラム実行時間枠でプログラム実行することを示し、
また、suspended-waitingコードは、現在、プログラム
の実行時間を放棄しており、かつ、放棄して使用されな
かった時間(最大1スロット分)を次回プログラム実行
時におけるプログラム実行時間とすることを示す。
【0242】readyコードは、現在、プログラムが実行
可能な状態であることを示し、suspended- readyコード
は、suspended-waitingコードであったプログラムが、
現在、プログラムが実行可能な状態であることを示す。
また、プログラム実行時間が放棄されたことにより、wa
itingコード、suspended-waitingコード及びsuspended-
readyコードの状態に遷移した場合には、これらコード
に、前記放棄が生じた時点において割り当て先となって
いたタイムスロットのTS_IDの値が付されている。
【0243】なお、このTS_IDの値は、実行される
までクリアされないため、 readyコード及びsuspended-
readyコードにも付されている場合がある。runningコー
ドは、現在、プログラムが実行可能な状態であり、か
つ、実行中であることを示す。nonexistentコードは、
現在、プログラムがスケジューリングの対象範囲外にあ
ることを示す。
【0244】ここでスケジューリングの対象範囲外と
は、現時点において、候補プログラムにさえなり得ない
プログラムの状態を意味する。ちなみに、候補プログラ
ムであって、waiting又はsuspended-waitingの状態とな
っているものを、候補スケジューリングの対象外という
こととする。なお、先に述べたプログラムの回復とは、
「TD」属性のプログラムが、waitingの状態からready
になったこと、あるいは、「TD」属性のプログラムが
suspended-waitingの状態から上述したタイミング
「e」で、suspended-readyになったことを意味する。
【0245】また、プログラムの起床とは、「TD」属
性のプログラムが、suspended-waitingの状態から上述
したタイミング「n」で、suspended-readyになったこ
と、あるいは、「ED」属性のプログラムが、waiting
又はsuspended-waitingの状態からそれぞれready又はsu
spended-readyの状態となったことを意味する。なお、
このようなプログラムを起床又は回復させるタイミング
を総称して、本実施例では、先に述べたように単に起床
タイミングと呼んでいる。
【0246】プログラムの属性を示すコードには、イベ
ントが発生すると候補スケジューリングの対象範囲内と
なりイベントドリブンスケジューリングにて、タイムド
リブンスケジューリングで決定される所定の順番に関係
なく、タイムスロットに割り付けられて実行されるイベ
ントドリブン型のプログラムであることを示すコード
「ED」と、イベントが発生すると、候補スケジューリ
ングの対象範囲内となるが、タイムドリブンスケジュー
リングにより所定の順番まで待ってからタイムスロット
に割り付けられて実行されるプログラム、即ち、タイム
ドリブン型のプログラムであることを示すコード「T
D」がある。
【0247】つまり、ED属性のプログラムは、waitin
g又はsuspended‐waitingの状態からそれぞれready又は
suspended‐readyに移行し、イベントドリブンスケジュ
ーリングによりタイムスロットに割り付けられ、一方、
TD属性のプログラムはwaitingからreadyに遷移し、タ
イムドリブンスケジューリングにより、タイムスロット
に割り付けられる。
【0248】ただし、例外として、タイムドリブン型の
プログラムであっても、イベントが発生すると候補スケ
ジューリングの対象範囲内となり、イベントドリブンス
ケジューリングにて、タイムドリブンスケジューリング
で決定される所定の順番に関係なくタイムスロットに割
り付けられ実行される場合がある。つまり、この例外と
は、タイムドリブン型のプログラムがsuspended‐waiti
ngの状態からsuspended‐readyに遷移し、イベントドリ
ブンスケジューリングにより、タイムスロットに割り付
けられる場合である。
【0249】起床タイミングを示すコードには、既にス
タンバイレジスタ群への格納が完了したコンテキストを
消去してまでも、カウント値0信号を受け取るまで待つ
ことなく緊急的にプログラムを実行する必要があること
を示すコード「e」、及び、スタンバイレジスタ群から
退避処理が完了した後、スタンバイレジスタ群への格納
が完了し、カウント値0信号を受け取ってからプログラ
ムを実行することを示すコード「n」がある。
【0250】設定フラグレジスタ421には、プログラ
ム毎に用意された設定フラグ群が格納されている。この
設定フラグ群は、各プログラムが許容する割込みやイベ
ントの内容を特定するためのものであり、プログラム毎
に用意されている以外は、第1の実施形態において述べ
た設定フラグ群と同様であるため、ここでは詳細な説明
を省略する。
【0251】リクエスト検出部419には、図15に示
すように、プログラム毎に用意されたLP固有フラグ群
及び1つの共通フラグ群が格納されている。LP固有フ
ラグ群とは、固有割込みに関する情報であり、現在、ど
のプログラムに対してどのような固有割込みの実行要求
が発生しているのかを示す。このLP固有フラグ群は、
見かけ上プログラム毎に存在するが、その実態は1つの
ビット列データであって、各フラグは、割込みを許容す
るプログラム及び固有割込みの内容に対応するビット位
置に存在している。
【0252】つまり、或るプログラムにおいてその内容
の割込みを許容する場合には、そのプログラム及び割込
みの内容に対応するビット位置に存在するLP固有フラ
グの値(デフォルト値は0)が1となっている。そのデ
ータ構成については、第1の実施形態において述べた完
了通知フラグと同様であるため、ここでは詳細な説明を
省略する。
【0253】共通フラグ群とは、共通割り込みの実行要
求が発生しているか否かを示すフラグの集まりである。
ここで、共通割り込みの実行要求とは、どのプログラム
においても実行可能なサブルーチンプログラムの実行要
求を意味する。共通フラグ群の実態は、1つのビット列
データであって、割り込んで実行すべきサブルーチンプ
ログラム固有のビット位置が存在する。
【0254】つまり、共通割込み要求が生じているサブ
ルーチンプログラムがある場合に、そのサブルーチンプ
ログラムに対応するビット位置のフラグの値が1(デフ
ォルト値は0)となっている。プロセッサ状態格納部4
25は、切替禁止フラグの値及び共通割り込みフラグの
値を格納している。
【0255】切替禁止フラグは、例えば、プログラムの
実行中において共有資源へアクセスしており、プログラ
ムを即座に中断することができないなどの理由により、
現在レジスタ切り替えを実行できない状況にあることを
示し、レジスタ切り替えを実行できない間、1(デフォ
ルト値は0)の値をとる。この切替禁止フラグの値は、
実行中のプログラムが発する命令により、書き換えが可
能である。
【0256】共通割り込みフラグは、現在、共通割り込
みの処理が実行中であることを示し、共通割り込みの処
理が実行されている間、1(デフォルト値は0)の値を
とる。 (3.動作)以下、仮想マルチプロセッサ400におい
て、1つのプロセッサにより擬似並行的にプログラムを
実行する際、効率的なプログラムの実行を実現する処理
について説明する。
【0257】図17は、仮想マルチプロセッサ400に
おいて実施される処理を示すフローチャートである。処
理実行部410は、処理制御部411からの指示にもと
づいて、プログラムの実行を開始する(ステップS10
0)。このプログラム実行に並行して、スケジューリン
グ制御部413は、スタンバイレジスタ群に格納されて
いるレジスタ値を対象とする退避処理を実施し(ステッ
プS101)、リクエスト検出部419は、外部I/F
417から受け取った外部信号にもとづいて、イベント
処理要求が発生しているか否かを判別する(ステップS
102)。
【0258】イベント処理要求が発生している場合、リ
クエスト検出部419は、イベントP_IDをスケジュ
ーリング制御部413に出力する。スケジューリング制
御部413は、このイベントP_IDにもとづいて、イ
ベントドリブンスケジューリングを実施する(ステップ
S103)。なお、イベントドリブンスケジューリング
実施後に実施される処理の内容は、イベントドリブンス
ケジューリングの実施結果により異なる。
【0259】イベント処理要求が発生していない場合、
スケジューリング制御部413は、目的TSをネクスト
TSとし(ステップS104)、タイムドリブンスケジ
ューリングを実施し(ステップS105)、さらに、復
帰処理を実施する(ステップS106)。そして、リク
エスト検出部419は、割込み処理要求が発生している
か否かを判別し(ステップS107)、割込み処理要求
が発生している場合、割込みの種別に応じて、固有P_
ID、固有SP_ID及び共通SP_IDなどをスケジ
ューリング制御部413に出力する。
【0260】これらIDを受け取ったとき、スケジュー
リング制御部413は、割込み処理を実行する(ステッ
プS108)。一方、割込み処理要求が発生していない
場合、スケジューリング制御部413は、ウエイトコー
ド及びキャッシュミス信号にもとづいて、プログラム実
行時間の放棄又はキャッシュミスが発生しているか否か
を判断し(ステップS109)、これらが発生している
場合には、放棄スケジューリングを実施する(ステップ
S110)。
【0261】なお、放棄スケジューリング実施後に実施
される処理の内容は、放棄スケジューリングの実施結果
により異なる。一方、プログラム実行時間の放棄又はキ
ャッシュミスが発生していない場合、スケジューリング
制御部413は、カウント値0信号をサイクルカウンタ
416から受け取ったとき、処理実行部410における
プログラム実行を終了させ(ステップS111)、レジ
スタ切り替え処理を実施した後(ステップS112)、
処理実行部410によるプログラム実行を開始するステ
ップS100に戻る。
【0262】図18は、スケジューリング制御部413
により実施されるタイムドリブンスケジューリングの内
容を示すフローチャートである。まず、目的TSをネク
ストTSとした場合の動作を説明する。スケジューリン
グ制御部413は、図18(A)のステップS104の
処理に引き続き、目的タイムスロット検索処理を実施す
る(ステップS120)。
【0263】より具体的には、スケジューリング制御部
413は、時間割付情報格納レジスタ402内のネクス
トアドレスに格納されているタイムスロット情報を参照
し、タイムスロットを特定するTS_IDによりネクス
トTSを特定し、さらに、このタイムスロットに割り当
てられている基本サイクルの値を取得する。そして、ス
ケジューリング制御部413は、目的TS割り当てプロ
グラム検索処理を実施する(ステップS121)。
【0264】より具体的には、スケジューリング制御部
413は、ネクストTSに対応づけられているLP情報
を参照し、このLP情報が示す候補プログラムを特定
し、さらに、これらプログラムそれぞれに対応づけられ
ている優先度を把握する。そして、スケジューリング制
御部413は、優先度&モード情報検索処理を実施する
(ステップS122)。
【0265】より具体的には、スケジューリング制御部
413は、ネクストTSに対応づけられている優先度&
モード情報を参照し、優先度として0から3のいずれが
示されているのか、さらに、モードとしてIndexモード
及びLevelモードのいずれが示されているのかを把握す
る。また、スケジューリング制御部413は、アイドル
オプション情報検索処理を実施する(ステップS12
3)。
【0266】より具体的には、スケジューリング制御部
413は、ネクストTSに対応づけられているアイドル
オプション情報を参照し、「SWITCH」及び「MICRO-SLEE
P」のいずれが示されているのかを判別する。つづい
て、スケジューリング制御部413は、スケジューリン
グ処理を実施する(ステップS124)。
【0267】より具体的には、スケジューリング制御部
413は、目的タイムスロット検索処理により得られた
ネクストTSに対応づけられている4つのプログラムを
特定し、目的TS割り当てプログラム検索処理により、
これらプログラムそれぞれに対応づけられている優先度
を把握する。そして、スケジューリング制御部413
は、優先度&モード情報検索処理により得られた、優先
度及びモードにもとづいて、上記4つのプログラムから
候補プログラムを選出する。
【0268】さらに、スケジューリング制御部413
は、LP状態格納レジスタ424内の各候補プログラム
に対応するプログラム状態情報を参照し、各候補プログ
ラムがそれぞれ実行可能であるか否かを検出し、候補プ
ログラムから有効候補プログラムを選出する。このと
き、有効候補プログラムが複数ある場合、優先度の値が
最も小さな値が対応づけられている有効候補プログラム
をこのネクストTSへの割り付け対象とする。
【0269】また、有効候補プログラムが1つも存在し
ない場合には、スケジューリング制御部413は、アイ
ドルオプション情報検索処理を実施することにより得ら
れる情報の内容にもとづいて、その後の処理の内容を決
定する。即ち、上述の情報の内容が、「MICRO-SLEEP」
を示す場合、スケジューリング制御部413は、いずれ
のプログラムも上述のネクストTSへの割り当て対象と
しない。
【0270】この場合、スケジューリング制御部413
は、このネクストTSが実行対象となっている期間、処
理実行部410にNOP実行させる共に、クロックマス
ク部427に処理実行部410へのクロックパルスの供
給を遮断させる。また、上述の情報の内容が、「SWITC
H」を示す場合、スケジューリング制御部413は、ネ
クストアドレスの値に1を加えた値(ただし、ネクスト
アドレスが終端アドレスであった場合に限り、先頭アド
レスの値)を新たなネクストアドレスとし、ステップS
120からS124のスケジューリング処理を繰り返し
実施する。
【0271】以上の処理が終了したとき、割込み処理要
求が発生しているか否かを判別する上述のステップS1
06へと移行する。なお、目的TSをカレントTSとす
る場合の動作については、後述する。図19は、スケジ
ューリング制御部413により実施されるイベントドリ
ブンスケジューリングの内容を示すフローチャートであ
る。
【0272】スケジューリング制御部413は、リクエ
スト検出部419から受け取ったイベントP−IDによ
りプログラムを特定する。また、スケジューリング制御
部413は、実行中のプログラムがイベントドリブンス
ケジューリングにより緊急レジスタ切り替えすることで
中断させられるとき、中断させられるこのプログラムを
特定する(ステップS130)。
【0273】さらに、スケジューリング制御部413
は、LP状態格納レジスタ424を参照し、このプログ
ラムの属性、状態、起床タイミングを判別する。そし
て、スケジューリング制御部413は、以下に示す
(1)から(3)のいずれかに該当しているか否かを判
断する(ステップS131)。 (1)プログラムの属性がEDである。 (2)プログラムの属性がTDであって、プログラム状
態がsuspended‐waitingであり、かつ、起床タイミング
が「n」である。 (3)running状態であったプログラムがイベントドリ
ブンスケジューリングにより緊急レジスタ切り替えされ
た。
【0274】この判定の結果、該当しなかった場合、つ
まり、「いいえ」のとき、スケジューリング制御部41
3は、LP状態格納レジスタ424を参照し、このプロ
グラムの起床タイミングが「e」であるか否かを判別し
(ステップS132)、「e」でない場合、即ち、
「n」である場合、回復イベント処理を実施する。より
具体的には、スケジューリング制御部413は、LP状
態格納レジスタ424に示されているこのプログラムの
状態がwaitingであればreadyに変更する。
【0275】この後、タイムドリブンスケジューリング
を実施する上述のステップS104へと移行する。ま
た、ステップS132における判別結果が、「e」であ
る場合、スケジューリング制御部413は、先に述べた
緊急回復イベント処理を実施し(ステップS134)、
先に述べた緊急復帰処理を実施し(ステップS13
5)、さらに、先に述べた緊急レジスタ切り替え処理を
実施した後(ステップS136)、上述のステップS1
00へと移行させる。
【0276】また、上述のステップS131において、
判定の結果、該当した場合、即ち、「はい」の場合、ス
ケジューリング制御部413は、LP状態格納レジスタ
424を参照し、このプログラムの起床タイミングが
「e」であるか否かを判別し(ステップS137)、
「e」でない場合、即ち、「n」である場合、先に述べ
たイベント起床処理を実施し(ステップS141)、先
に述べた早期復帰処理を実施し(ステップS142)、
上述のステップS107へと移行させる。
【0277】また、上述のステップS137における判
別において、起床タイミングが「e」である場合、スケ
ジューリング制御部413は、先に述べた緊急イベント
起床処理を実施し(ステップS138)、先に述べた緊
急復帰処理を実施し(ステップS139)、さらに、先
に述べた緊急レジスタ切り替え処理を実施した後(ステ
ップS140)、上述のステップS100へと移行させ
る。
【0278】図20は、上述のステップS108におい
て実施される割込み処理の内容を示すフローチャートで
ある。スケジューリング制御部413は、リクエスト検
出部419から受け取る固有P_ID、固有SP_ID
及び共通SP_IDにもとづいて、共通割込み処理の要
求が発生しているか否かを判別する(ステップS15
0)。
【0279】共通割込み処理の要求が発生している場
合、即ち、リクエスト検出部419から共通SP_ID
を受け取った場合、スケジューリング制御部413は、
この共通SP_IDにより特定されるサブルーチンプロ
グラムが実行されている間、サイクルカウンタ416に
おけるカウントダウンを中断させる(ステップS151
〜ステップS152)一方、共通割込み処理の要求が発
生しておらず、固有割込み処理の要求が発生している場
合、つまり、リクエスト検出部419から固有P_ID
及び固有SP_IDを受け取った場合、スケジューリン
グ制御部413は、この固有SP_IDにより特定され
るサブルーチンプログラムが実行されている間、サイク
ルカウンタ416におけるカウントダウンについては特
に何もしない(ステップS153〜ステップS15
4)。
【0280】以上の処理が実行された後、上述のステッ
プS109へと移行する。図21は、上述のステップS
110において実施される放棄スケジューリングの内容
を示すフローチャートである。スケジューリング制御部
413は、DMA管理部418からキャッシュミス信号
を受け取ったか否かを判別し(ステップS160)、キ
ャッシュミス信号を受け取っている場合、実行中のプロ
グラムのプログラム状態をsuspended-waitingに変更し
(ステップS161)、先に述べたタイムオプション情
報検索処理を実施する(ステップS162)。
【0281】また、キャッシュミス信号を受け取ってい
ない場合、スケジューリング制御部413は、さらに、
「vmp_sus」コードを受け取っているか否かを判別し
(ステップS163)、「vmp_sus」コードを受け取っ
ている場合、実行中のプログラムのプログラム状態をsu
spended-waitingに変更し(ステップS161)、先に
述べたタイムオプション情報検索処理を実施する(ステ
ップS162)。
【0282】上述のステップS163における判別にお
いて、「vmp_sus」コードを受け取っていない場合、必
然的に「vmp_wait」コードを受け取っているので、スケ
ジューリング制御部413は、実行中のプログラムのプ
ログラム状態をwaitingに変更し(ステップS16
6)、先に述べたタイムオプション情報検索処理を実施
する(ステップS162)。
【0283】スケジューリング制御部413は、このタ
イムオプション情報検索処理を実行することにより、タ
イムオプション情報の内容を認識する。そして、スケジ
ューリング制御部413は、タイムオプション情報の内
容が「MICRO-SLEEP」を示すか否かを判別し、(ステッ
プS165)タイムオプション情報の内容が「MICRO-SL
EEP」である場合、処理制御部411を介して処理実行
部410にnop実行させ(ステップS166)、上述
のステップS102へと移行させる。
【0284】また、タイムオプション情報の内容が「MI
CRO-SLEEP」でない場合、スケジューリング制御部41
3は、さらに、タイムオプション情報の内容が「TS_SWI
TCH」を示すか否かを判別し、「TS_SWITCH」を示す場
合、緊急レジスタ切り替え処理を実施し(ステップS1
68)、上述のステップS100へと移行させる。ま
た、タイムオプション情報の内容が「TS_SWITCH」を示
していない場合、タイムオプション情報の内容は、必然
的に「LP_SWITCH」となるので、スケジューリング制御
部413は、ここでは、目的TSをカレントTSとし
(ステップS169)、先に述べたタイムドリブンスケ
ジューリングを実施する(ステップS170)。
【0285】ここで、ステップS170において実施す
るタイムドリブンスケジューリングの内容について、ス
テップS105において実施するタイムドリブンスケジ
ューリングの内容との相違点を挙げつつ説明する。上記
2つのタイムドリブンスケジューリングの内容につい
て、以下の2つの違いがある。
【0286】即ち、ステップS170において実施する
タイムドリブンスケジューリングでは、目的TSがネク
ストTSではなくカレントTSであるという点と、スケ
ジューリング処理を実施した結果、有効候補プログラム
が存在しないときにアイドルオプション情報とは無関係
にNOP実行へと移行するという点である。より具体的
には、図18(B)ステップS169の処理にひき続
き、スケジューリング制御部413は、目的タイムスロ
ット検索処理を実施する(ステップS120)。
【0287】つまり、スケジューリング制御部413
は、時間割付情報格納レジスタ402内のカレントアド
レスに格納されているタイムスロット情報を参照し、タ
イムスロットを特定するTS−IDによりカレントTS
を特定し、さらに、このタイムスロットに割り当てられ
ている基本サイクルの値を取得する。そして、スケジュ
ーリング制御部413は、目的TS割り当てプログラム
検索処理を実施し(ステップS121)、優先度&モー
ド情報検索処理を実施する(ステップS122)。
【0288】つづいて、スケジューリング制御部413
は、アイドルオプション情報検索処理を実施し(ステッ
プS123)、スケジューリング処理を実施する(ステ
ップS124)。より具体的には、スケジューリング制
御部413は、目的タイムスロット検索処理により得ら
れたカレントTSに対応付けられている4つのプログラ
ムを特定し、目的TS割り当てプログラム検索処理によ
り、これらプログラムそれぞれに対応づけられている優
先度を把握する。
【0289】そして、スケジューリング制御部413
は、優先度&モード情報検索処理により得られた、優先
度及びモードにもとづいて、上記4つのプログラムから
候補プログラムを選出する。さらに、スケジューリング
制御部413は、LP状態格納レジスタ424内の各候
補プログラムに対応するプログラム状態情報を参照し、
各候補プログラムがそれぞれ実行可能であるか否かを検
出し、候補プログラムから有効候補プログラムを選出す
る。
【0290】このとき、有効候補プログラムが複数ある
場合、優先度の値が最も小さな値が対応付けられている
有効候補プログラムをこのカレントTSへの割り付け対
象とする。もし、有効候補プログラムが1つも存在しな
い場合には、取得したアイドルオプションに関わりなく
有効候補プログラムが存在しないことを記憶する。
【0291】以上の処理が、目的TSをカレントTSと
するステップS170におけるタイムドリブンスケジュ
ーリングである。このようなタイムドリブンスケジュー
リングを実行した後、スケジューリング制御部413
は、有効候補プログラムがあるか否かを判断する(ステ
ップS171)。
【0292】有効候補プログラムがない場合、スケジュ
ーリング制御部413は、処理制御部411を介して処
理実行部410にnop実行させると共に(ステップS
166)、nop実行させている間、クロックマスク部
427に処理実行部410へのクロック供給を遮断する
ように指示し、上述のステップS102へと移行させ
る。
【0293】この指示の結果、処理実行部410へのク
ロックの供給は、遮断される。一方、有効候補プログラ
ムがある場合、復帰処理を実施し(ステップS17
2)、緊急レジスタ切り替え処理を実施して(ステップ
S168)、上述のステップS100へと移行させる。 (4.プロセッサ駆動時におけるプログラム実行状況)
以下、仮想マルチプロセッサ400の駆動時におけるプ
ログラム実行状況について説明する。 (4−1.基本的なプログラム実行状態)仮想マルチプ
ロセッサ400では、先に述べたように、複数のタイム
スロット及び各タイムスロットに割り当てられたプログ
ラムにもとづいてプログラム実行される。
【0294】図22は、このタイムスロットについて説
明する図である。以下、便宜上、各タイムスロットを、
TSn(nは、0から15までの整数)と記し、このn
の値は、タイムスロット毎に固有であるものとする。設
定上16個のタイムスロット用意されており、このうち
4つのタイムスロット(TS0〜TS3)が通常のスケ
ジューリングに用いられるタイムドリブン型のタイムス
ロットである。
【0295】つまり、TS0からTS3までの各タイム
スロットに割り当てられている1つのプログラムが順次
実行され、TS3のタイムスロットに割り当てられてい
るプログラムの実行が終了すると、また、TS0のタイ
ムスロットに割り当てられているプログラムから実行さ
れることとなる。TS0からTS2までのタイムスロッ
トは、映像や音声などを対象とするリアルタイムでの処
理を前提とするプログラム実行用のタイムスロットであ
る。
【0296】また、TS3(TS_ID=3)は、リアルタイ
ムでの処理を前提としないプログラム実行用のタイムス
ロットである。その他のタイムスロット(TS4〜TS
15)は、イベントが発生したときに起床するイベント
ドリブン型のタイムスロットである。図22(a)に示
すように、各タイムスロットは、基本サイクルの値が対
応づけられており、この基本サイクルの値に相当する時
間が、プログラム実行時間枠となる。
【0297】図22(b)に示すように、切り替えのタ
イミングをタイムスロットの基本サイクルと厳密に一致
させることはできず、通常、数サイクル程度オーバーし
て切り替わる。仮想マルチプロセッサ400では、先に
述べた基本サイクル調整処理を実施することにより、T
S0からTS3までのタイムスロットにおいて、実行時
間枠からオーバーした時間をTS3のタイムスロットの
実行時間枠から差し引き、実行時間に破綻を来たさない
ようにする。
【0298】また、仮想マルチプロセッサ400では、
実行予定のプログラムに割り当てられているプログラム
実行時間が放棄されている場合、効率的なプログラム実
行又は省電力化を図るための措置の内容を決定するもの
として、タイムオプション情報及びアイドルオプション
情報の2つの情報がある。 (4−2.放棄時におけるタイムオプション情報にもと
づくプログラム実行状態)タイムオプション情報とは、
先に述べたように、プログラム実行中にこのプログラム
が実行不可能となり、このプログラムの実行時間が放棄
された以後のプログラム実行の内容を決定するタイムス
ロットについての情報である。
【0299】図23は、プログラム実行時間が放棄され
た場合のタイムオプション情報にもとづくプログラム実
行状態、即ち、タイムオプション情報検索処理によるプ
ログラム実行状態について説明する図である。以下、便
宜上、各プログラムを、LPm(mは、0から31まで
の整数)と記し、このmの値は、プログラム毎に固有で
あるものとする。
【0300】図23(a)に示すように、タイムドリブ
ン型のタイムスロットであるTS0、TS1、TS2及
びTS3において、有効な候補プログラムがある場合、
各タイムスロットの実行時間枠内で順次プログラムが実
行される。ここで、TS0にはLP0が、TS1にはL
P1が、TS2にはLP2が、TS3にはLP3がそれ
ぞれ割り当てられている。
【0301】図23(b)に示すように、TS1の実行
時間枠においてLP1の実行中に、処理実行部410に
よる「vmp_wait」コード出力をトリガとして、プログラ
ム実行時間の放棄が行なわれ、かつ、このTS1のタイ
ムオプション情報が「LP_SWITCH」を示す場合には、先
に述べた各機能部における処理が実行されることによ
り、以下のようにプログラム実行される。
【0302】即ち、このTS1の実行時間枠を使いきる
まで、LP1に代わって、同じTS1に対応づけられ実
行可能な状態となっている有効候補プログラムであっ
て、最も優先度が高い候補プログラムであるLP4が実
行される。このとき、スタンバイレジスタ群に格納され
ていたLP2に対応するコンテキストのレジスタ値は一
旦破棄され、LP4に対応するコンテキストのレジスタ
値が格納される。
【0303】このような破棄やLP4の復帰を行い、L
P4の実行が開始されるまでにt2の時間を要する。通
常、このt2は、サイクルカウンタ416によるパルス
出力のおよそ30サイクル分に相当する時間である。と
ころで、TS1に有効候補プログラムが1つもないと
き、もはやこのタイムスロットにおいてのプログラム実
行は不可能となり、このような場合、スケジューリング
制御部413は、後述のTS1のタイムオプション情報
が「MICRO-SLEEP」を示す場合におけるプログラム実行
と同様のプログラム実行を行うように制御するものとす
る。
【0304】なお、有効候補プログラムが1つもないた
めに、実行対象範囲外となったTS1のようなタイムス
ロットをスリーピングタイムスロットという。上述のプ
ログラム実行時間の放棄が行なわれ、かつ、このTS1
のタイムオプション情報が「TS_SWITCH」を示す場合に
は、以下のようにプログラム実行される。
【0305】即ち、図23(c)に示すように、速やか
にレジスタ切り替えが行われ、次のTS2に割り当てら
れているLP2が繰り上げられて実行される。このと
き、スタンバイレジスタ群には、既に、LP2が格納さ
れているため、LP2が速やかに実行される。また、上
述のプログラム実行時間の放棄が行なわれ、かつ、この
TS1のタイムオプション情報が「MICRO-SLEEP」を示
す場合には、図23(d)に示すように、このTS1の
実行時間枠を使いきるまで、本来実行するプログラムと
は無関係な意味のないプログラムの実行、即ち、nop
実行される。
【0306】なお、上述のnop実行されている間、処
理実行部410へのクロックの出力が遮断され、その結
果、駆動電力が低減される。 (4−3.放棄時におけるアイドルオプション情報にも
とづくプログラム実行状態)アイドルオプション情報と
は、先に述べたように、あるタイムスロットにおいて有
効な候補プログラムが1つも存在しない場合におけるプ
ログラム実行の内容を決定するタイムスロットについて
の情報である。
【0307】図24(a)、(b)、(c)は、タイム
ドリブン型のタイムスロットにおいて、有効な候補プロ
グラムが1つもない場合のアイドルオプション情報にも
とづくプログラム実行の状況を説明する図である。図2
4(a)は、タイムドリブン型の各タイムスロットにお
いて、有効な候補プログラムが少なくとも1つある場合
のプログラム実行状況を示す。
【0308】このような状況を前提とし、以下、TS1
において、有効な候補プログラムが1つも存在しないこ
ととなった場合のプログラム実行について説明する。T
S1において、有効な候補プログラムが1つも存在せ
ず、かつ、このTS1のアイドルオプション情報が「SW
ITCH」を示す場合には、先に述べた各機能部における処
理が実行されることにより、図24(b)に示すよう
に、TS1に代わり、TS2に割り当てられているLP
2が実行される。
【0309】また、TS1において、有効な候補プログ
ラムが1つも存在せず、かつ、このTS1のアイドルオ
プション情報が「MICRO-SLEEP」を示す場合には、図2
4(c)に示すように、このTS1の実行時間枠を使い
きるまでnop実行される。なお、上述のnop実行さ
れている間、処理実行部410、即ち、CPUへのクロ
ックパルスの出力が遮断され、その結果、駆動電力が低
減される。 (4−4.ウエイト状態解消時におけるプログラム実行
状態)vmp_susコード出力をトリガとして、実行中であ
ったプログラムは実行不可能な中断状態(suspended‐w
aiting)となる。
【0310】また、緊急レジスタ切り替えをともなって
他のプログラムにより中断されたときに、実行中であっ
たプログラムは実行可能な中断状態(suspended‐read
y)となる。これらのプログラムが実行中に割り付けら
れていたタイムスロットを中断タイムスロットといい、
上述したとおりプログラムのP_IDがTS_IDに関
連付けられて記憶されている。
【0311】上述の実行不可能な中断状態となったプロ
グラムは、ウエイト状態が解消したときに有効候補プロ
グラムとなる。また、他のプログラムにより中断させら
れたプログラムは、実行可能な中断状態となったときに
有効候補プログラムとなる。以下、一旦中断させられた
プログラムが有効候補プログラムとなり、中断タイムス
ロットに割り付けられてタイムスロットの途中から実行
を再開する状況について説明する。
【0312】図25(a)、(b)は、このような状況
におけるプログラムの実行状況を説明する図である。図
25(a)は、TS0からTS3の4つのタイムスロッ
トのうち、既にTS3が、中断タイムスロットとなって
おり、処理実行部410からの「vmp_sus」コード出力
をトリガとして、TS0に割り当てられているLP0が
有効でなくなり、新たにTS0が中断タイムスロットと
なった場合のプログラムの実行状況を示す。
【0313】このとき、TS0においては、設定されて
いる実行時間枠に相当する時間t3が使いきられていな
い。「vmp_sus」コードを受け取った場合、スケジュー
リング制御部413は、LP0のプログラム状態をsusp
ended-waitingに更新し、実行時間枠内において使われ
ずに残った時間t4を実カウント値としてコンテキスト内
に保存する。
【0314】そして、図25(a)に示すように、TS
1及びTS2のみが繰り返し実行対象となる。図25
(b)は、中断タイムスロットとなったTS0に割り当
てられているLP0にウエイト状態の解消、つまり、実
行不可能な中断状態(suspended-waiting)の解消が生
じ、かつ、LP状態格納レジスタ424においてLP0
の起床タイミングが「n」、即ち通常に起床させる旨を
示す場合におけるプログラムの実行状況を示す。
【0315】この場合、スケジューリング制御部413
は、図25(b)に示すように、実行不可能な中断状態
の解消が生じたとき、LP0のプログラム状態をsuspen
ded-readyに更新するが、即座にLP0を実行させよう
とせず、カウント値0信号を待って、他のTSでのプロ
グラム実行を中断させないタイミングで、LP0を実行
するように制御する。
【0316】これにより、実行不可能な中断状態の解消
が生じた時点において、既に、スタンバイレジスタ群に
格納されているレジスタ値が使用され、この格納が無駄
とならない。このとき、スケジューリング制御部413
は、コンテキスト内に保存されている実カウント値分の
時間t4だけ、LP0を実行するように制御する。
【0317】なお、このLP0の実行は、イベントドリ
ブンスケジューリングによりなされる。そして、これに
つづいて、通常のタイムドリブンスケジューリングによ
り実行対象となったTS0に割り当てられているLP0
がt3だけ実行されることとなる。
【0318】以下、上述のケースにおいて、LP状態格
納レジスタ424におけるLP0の起床タイミングが
「e」を示している場合における、ウエイトの解消時、
つまり、実行不可能な中断状態が解消したときのプログ
ラム実行状況について説明する。 (4−5.緊急的な復帰イベント発生時におけるプログ
ラム実行状態)図26(a)は、図25(a)と同様
に、TS0からTS3の4つのタイムスロットのうち、
既にTS3が、中断タイムスロットとなっており、処理
実行部410からの「vmp_sus」コード出力をトリガと
して、TS0に割り当てられているLP0が有効でなく
なり、新たにTS0が中断タイムスロットとなった場合
のプログラムの実行状況を示す。
【0319】このとき、TS0においては、設定されて
いる実行時間枠t5が全て使い切られていない。また、
図25(a)と同様に、「vmp_sus」コードを受け取っ
た場合、スケジューリング制御部413は、LP0のプ
ログラム状態をsuspended-waitingに更新し、実行時間
枠内において使われずに残った時間t6を実カウント値
としてコンテキスト内に保存する。
【0320】図26(b)は、スリーピングタイムスロ
ットとなったTS0に割り当てられているLP0にウエ
イトの解消、つまり、実行不可能な中断状態の解消が生
じ、かつ、LP状態格納レジスタ424においてLP0
の起床タイミングが「e」、即ち緊急的に起床させる旨
を示している場合におけるプログラムの実行状況を示
す。
【0321】この場合、スケジューリング制御部413
は、図26(b)に示すように、ウエイトの解消、つま
り、実行不可能な中断状態の解消が生じたとき、LP0
のプログラム状態をsuspended-readyに更新し、即座に
LP0を実行させようとする。ここで上述の即座とは、
復帰処理やレジスタ切り替えなどに要するオーバーヘッ
ド(t2)でのプログラム実行を意味する。
【0322】より具体的には、スケジューリング制御部
413は、ウエイトの解消、つまり、実行不可能な中断
状態の解消が生じた時点において、既に、スタンバイレ
ジスタ群に格納されているレジスタ値を破棄し、このス
タンバイレジスタ群にLP0に対応するコンテキストの
レジスタ値を格納するという緊急復帰処理を実施し、緊
急レジスタ切り替え処理を実行し、直ちにLP0を上述
のt6の時間分実行させると共に、LP1のプログラム
状態をsuspended-readyに更新し、TS1の実行時間枠
内において使われずに残った時間t7を実カウント値と
してLP1のコンテキスト内に保存する。
【0323】上述のレジスタ切り替え処理を実行により
スタンバイレジスタ群となったレジスタ群には、それま
で実行されていたLP1に対応するコンテキストのレジ
スタ値が存在するが、スケジューリング制御部413
は、このLP1のレジスタ値を退避し、LP0の実行に
伴い復帰処理を実行し、LP0の実行が終了後、レジス
タ切り替え処理を実施して、直ちにLP1を上述のt7
の時間分実行させる。
【0324】なお、このLP1の実行も、イベントドリ
ブンスケジューリングによりなされ、具体的には、イベ
ント起床処理(起床タイミング「n」)により実行再開
される。 (4−6.イベント処理要求が発生した場合におけるプ
ログラム実行状態)イベント処理要求が発生しない場
合、図27(a)に示すように、TS0、TS1、TS
2及びTS3が順次実行対象となり、これらタイムスロ
ットそれぞれに割り当てられたプログラムLP0、LP
1、LP2及びLP3が逐次実行される。
【0325】図27(b)は、上述の状態を前提とし
て、イベント用のタイムスロットであるTS4のLP4
を実行するイベント処理要求が発生し、かつ、LP状態
格納レジスタ424においてLP4の起床タイミングが
「n」、即ち通常に起床させる旨を示す場合におけるプ
ログラムの実行状況を示す。この場合、スケジューリン
グ制御部413は、図27(b)に示すように、イベン
ト処理要求が発生したとき、LP4のプログラム状態を
waitingからreadyに更新するが、即座にLP4を実行さ
せようとせず、イベント処理要求が発生したときにカレ
ントレジスタ群となっているレジスタ群が、スタンバイ
レジスタ群となり、かつ、このレジスタ群が開放された
とき、このレジスタ群にLP4に対応するコンテキスト
のレジスタ値を格納し、このレジスタ群がカレントレジ
スタ群となったときに、LP4を実行するようにする。
【0326】これにより、イベント処理要求が発生した
時点において、既に、スタンバイレジスタ群に格納され
ているレジスタ値が使用され、この格納が無駄とならな
い。図27(c)は、イベント用のタイムスロットであ
るTS4のLP4を実行するイベント処理要求が発生
し、かつ、LP状態格納レジスタ424においてLP4
の起床タイミングが「e」、即ち緊急的に起床させる旨
を示している場合におけるプログラムの実行状況を示
す。
【0327】この場合、スケジューリング制御部413
は、図27(c)に示すように、イベント処理要求が発
生したとき、LP4のプログラム状態をreadyに更新
し、即座に、即ち、上述のt2でLP4を実行させよう
とする。より具体的には、スケジューリング制御部41
3は、イベント処理要求が発生した時点において、既
に、スタンバイレジスタ群に格納されているレジスタ値
を破棄し、このスタンバイレジスタ群にLP4に対応す
るコンテキストのレジスタ値を格納し、緊急レジスタ切
り替え処理を実行し、直ちにLP4を実行させると共
に、実行が中断されたLP1のプログラム状態をsuspen
ded-readyに更新し、TS1の実行時間枠内において使
われずに残った時間、即ち、実カウント値をLP1のコ
ンテキスト内に保存する。
【0328】上述のレジスタ切り替え処理を実行により
スタンバイレジスタ群となったレジスタ群には、それま
で実行されていたLP1に対応するコンテキストのレジ
スタ値が存在し、スケジューリング制御部413は、こ
のレジスタ値を一旦退避するそして、再度このレジスタ
値をスタンバイレジスタ群に復帰して、LP4の実行が
終了後、直ちにレジスタ切り替え処理を実施して、直ち
にLP1を上述の使われずに残った時間分実行させるよ
うに制御する。
【0329】なお、このLP1の実行も、イベントドリ
ブンスケジューリングによりなされ、具体的には、イベ
ント起床処理(起床タイミング「n」)により実行再開
される。 (4−7.共通割り込み処理要求が発生した場合におけ
るプログラム実行状況)図28(a)、(b)は、共通
割り込み処理要求が発生した場合におけるプログラム実
行状況を説明する図である。
【0330】図28(a)に示すように、共通割り込み
処理要求が発生していない場合、TS0からTS3の4
つのタイムスロットが順次実行対象のタイムスロットと
なり、これらタイムスロットそれぞれに割り当てられて
いるLP0、LP1、LP2及びLP3が逐次実行され
る。TS2におけるLP2実行中に共通割り込み処理要
求が発生した場合、図28(b)に示すように、スケジ
ューリング制御部413は、LP2のプログラム実行中
にこの共通割り込み処理専用サブルーチンにジャンプし
て共通割り込み処理を実行させ、この共通割り込み処理
が完了した後、LP2に戻ってプログラム実行させる。
【0331】このとき、スケジューリング制御部413
は、上述のサブルーチンにおけるプログラム実行時間
を、割り込まれたLP2の実行時間に含めないように制
御する。より具体的には、スケジューリング制御部41
3は、上述のサブルーチンにおいて、共通割り込み処理
が実行されている間、サイクルカウンタ416における
カウントダウンをストップさせる。
【0332】この結果、TS2の実行時間枠t9に上述
のサブルーチンにおいてプログラムが実行されていた時
間t10を加えた時間がLP2の実行時間となる。この
ように、共通割り込み処理の実行時間を、割り込まれた
LP2の本来の実行時間に含めないようにするのは、全
てのプログラムが共通割り込み処理の実行を必要として
いるにもかかわらず、偶然に割り込まれたある1つのタ
イムスロットの実行時間枠を消費することにより、この
タイムスロットに割り当てられているプログラムだけ実
行時間が減少するという不公平が生じることを是正する
ためである。 (4−8.固有割込み処理要求が発生した場合における
プログラム実行状況)図29(a)、(b)、(c)
は、固有割込み処理要求が発生した場合におけるプログ
ラム実行状況を説明する図である。
【0333】図29(a)に示すように、固有割込み処
理要求が発生していない場合、TS0からTS3の4つ
のタイムスロットが順次実行対象のタイムスロットとな
り、これらタイムスロットそれぞれに割り当てられてい
るLP0、LP1、LP2及びLP3が逐次実行され
る。図29(b)に示すように、TS2におけるLP2
実行中にLP3に対応する固有割込み処理要求が発生し
た場合、スケジューリング制御部413は、次にLP3
が実行されるときに、この固有割込み処理専用サブルー
チンにジャンプして固有割込み処理を実行させ、この固
有割込み処理が完了した後、LP3に戻ってプログラム
実行させる。
【0334】このとき、スケジューリング制御部413
は、固有割込み処理専用サブルーチンにおけるプログラ
ム実行時間を、割り込まれたLP3の実行時間に含め
る。つまり、スケジューリング制御部413は、上述の
サブルーチンにおいて、固有割込み処理が実行されてい
る間、サイクルカウンタ416におけるカウントダウン
をストップさせない。
【0335】このように、LP3に対応する固有割込み
処理の実行時間を、割り込まれたLP3の本来の実行時
間に含めるのは、LP3のみがこの固有割込み処理の実
行を必要としており、固有割込み処理の実行を必要とす
るプログラムの実行時間から固有割込み処理の実行時間
が消費されるとしても、共通割り込み処理の場合のよう
な実行時間についてのプログラム間における不公平が生
じないためである。
【0336】また、図29(c)に示すように、TS3
におけるLP3実行中にLP3に対応する固有割込み処
理要求が発生した場合、スケジューリング制御部413
は、直ちにこの固有割込み処理専用サブルーチンにジャ
ンプして固有割込み処理を実行させ、この固有割込み処
理が完了した後、LP3に戻ってプログラム実行させ
る。
【0337】このときも上述と同様に、スケジューリン
グ制御部413は、固有割込み処理実行用サブルーチン
におけるプログラム実行時間を、割り込まれたLP3の
実行時間に含める。以上のように、第2の実施形態によ
れば、1つの仮想マルチプロセッサ400において、擬
似並行的に複数のプログラムを実行しても、コンテキス
トの退避、判断及び復帰は、プログラムの実行と並行し
て実施するため、プログラムの実行時間にコンテキスト
の退避、判断及び復帰に要する時間が介在することがな
いので、効率的にタスクを実行することができる。
【0338】また、タイムスロット毎に複数のプログラ
ムが用意されているため、1つのプログラムが実行でき
ない状態となっても、そのプログラムに代わって別のプ
ログラムが実行することができ、プログラムの実行時間
を有効に使用することができる。さらに、プログラムが
実行できない状態となった場合、そのプログラムの実行
時間において、処理実行部410にNOP実行させてい
る状態で駆動を停止させることにより消費電力を低減す
ることができる。
【0339】なお、本実施形態では、スケジューリング
制御部413は、固有割込み処理実行用サブルーチンに
おけるプログラム実行時間を、割り込まれたプログラム
の実行時間に含めるとしたが、これに限らず、例えば、
以下のようにしてもよい。ここで、図30(a)に示す
ように、固有割込み処理が発生していない場合には、T
S0からTS3の4つのタイムスロットが順次実行対象
のタイムスロットとなり、これらタイムスロットそれぞ
れに割り当てられているLP0、LP1、LP2及びL
P3が逐次実行されているものとする。
【0340】各タイムスロットに割り当てられているL
P0からLP3までのプログラムが実行されたとき、1
巡目のプログラム実行が終了する。図30(b)に示す
ように、k巡目のLP2の実行中において、LP2に対
応する固有割込み処理が発生した場合、スケジューリン
グ制御部413は、このときに限り、固有割込み処理実
行用サブルーチンにおけるプログラム実行時間t13
を、割り込まれたプログラム(LP)の実行時間に含め
ない。
【0341】つまり、スケジューリング制御部413
は、固有割込み処理実行用サブルーチンにおいてプログ
ラム実行している時間t13の間、サイクルカウンタ4
16におけるカウントダウンをストップさせる。そし
て、スケジューリング制御部413は、図30(c)に
示すように、k+1順目において、TS2に割り当てら
れているLP2が実行されるとき、このTS2の実行時
間枠t12から上述のおけるプログラム実行時間t13
を差し引いた時間分LP2を実行させる。
【0342】より具体的には、スケジューリング制御部
413は、サイクルカウンタ416に出力する基本サイ
クルの値に代えて、上述のt12からt13を差し引い
た時間に相当する値をサイクルカウンタ416に出力す
る。なお、k+2巡目では、図30(a)に示すような
通常の実行がなされる。また、本実施形態では、図31
(a)に示すように、クロックマスク部427が、スケ
ジューリング制御部413からマスク信号を受信してい
る間、処理実行部410へのクロックパルスの信号経路
を遮断することにより、処理実行部410の電力消費を
低減しているが、これに限らず、以下のようにしてもよ
い。
【0343】即ち、図31(b)に示すように、処理実
行部410への電力供給経路上に配置される電力制御部
430が、スケジューリング制御部413から上述のマ
スク信号に代わる電力制御信号を受信している間、この
電力供給経路を遮断することにより、処理実行部410
における電力消費を0にしてもよい。また、図31
(c)に示すように、発振器600と処理実行部410
との間にあるクロックパルスの信号経路上に配置される
分周器などからなる分周部431が、スケジューリング
制御部413から上述のマスク信号に代わる分周信号を
受信している間、例えば、4分周することにより、処理
実行部410の駆動周波数を下げて電力消費を低減して
もよい。
【0344】さらに、図31(d)に示すように、発振
器600と仮想マルチプロセッサ400との間にあるク
ロックパルスの信号経路上に配置される分周器などから
なる分周部431が、スケジューリング制御部413か
ら上述のマスク信号に代わる分周信号を受信している
間、このクロックパルスの周波数を、例えば、4分周す
ることにより、処理実行部410の駆動周波数を下げて
電力消費を低減してもよい。
【0345】このとき、サイクルカウンタ416は、従
来の機能を発揮する通常処理部432に加え、逓倍器な
どからなる逓倍部433を有し、クロックパルスの周波
数を、例えば、4逓倍するなどして上述の分周による影
響を相殺し、カウントダウンを行うとしてもよい。な
お、上述の分周及び逓倍の値は、無論、4に限るもので
はない。
【0346】また、第2の実施形態では、リクエスト検
出部419は、イベントP_IDの出力を行おうとする
とき、現在を起点として所定時間分過去に遡った期間に
おける記憶された前記イベントP_IDの出力回数が、
予め決められているしきい値を越えることとなる場合、
前記出力回数が前記しきい値以下となるように上述の出
力を遅延するとしたが、前記出力回数が当該しきい値を
越えることとなる場合、前記イベントP_IDの出力を
取り止める、即ち、イベント処理要求を無視するとして
もよい。
【0347】また、第2の実施形態では、スケジューリ
ング制御部413は、スタンバイレジスタ群に格納され
ているコンテキストに対応するプログラムの実行に必要
なデータをキャッシュメモリに書き込むようにDMA管
理部418に指示するとしたが、これに代えて、ガーベ
ジコレクションを実行する機能部に対し、ガーベジコレ
クションの実行を指示するとしてもよい。
【0348】また、本第2の実施形態では、或る時点に
おいて、2以上のプログラムの状態が新たにready 又は
suspended-readyとなった場合、即ち、イベントドリブ
ンスケジューリングの候補内、つまり、スケジューリン
グの対象範囲内に、複数のプログラムが存在するとき、
いずれのプログラムを先に実行するのかについては、記
載していないが、プログラムに付与された優先度にもと
づいて、優先度が最も高いものから先に実行対象として
もよい。
【0349】例えば、プログラムIDの値が小さいもの
ほど、優先度が高いとする場合、プログラムのIDの小
さなものから先に実行対象とすることとなる。また、第
2の実施形態では、プログラム(LP)の数は、レジス
タ群の数を上回っていることを前提として説明していた
が、これに限らず、プログラムの数がレジスタ群の数以
下であってもよい。
【0350】その場合、コンテキストメモリ500を備
えなくても良く、退避、復帰のステップが不要となる。
プログラムの数が2つの場合、LP0は、第1レジスタ
群に、LP1は、第2レジスタ群にそれぞれ対応付けら
れているものとする。例えば、スケジューリング制御部
413は、LP0を実行するときは、コンテキストメモ
リからレジスタ値群を復帰する動作なしで、第1レジス
タ群をカレントレジスタ群として選択する。
【0351】仮に、プログラム及びレジスタ群の数が3
つの場合であっても、カレントレジスタ群として選択さ
れているものが実行対象レジスタ群であって、それ以外
がスタンバイレジスタ群となる。ここで、LP2は第3
レジスタ群に対応付けられているものとする。LP2を
実行するときは、第3レジスタ群をカレントレジスタ群
として選択する。
【0352】選択先を切り替えた後も、コンテキストメ
モリにレジスタ値群を退避する動作は不要である。ま
た、コンテキストメモリ500は、SRAMにより構成
されるとしたが、DRAMであってもよく、さらに、こ
れらメモリに限らず、高速にアクセスされるレジスタや
低速にアクセスされる外部記憶装置であってもよい。
【0353】
【発明の効果】以上の説明から明らかなように、本発明
に係るプロセッサは、メモリに格納されている複数のレ
ジスタ値群を用いて、これらレジスタ値群それぞれに対
応するプログラムを逐次実行するプロセッサであって、
複数のレジスタ群と、前記複数のレジスタ群のうちいず
れか1つを、プログラム実行の基礎とする実行対象レジ
スタ群として選択し、当該選択先を所定時間毎に切り替
える選択先切り替え手段と、前記切り替えがなされる毎
に、前記複数のレジスタ群のうち前記選択がなされてい
ない1のレジスタ群に前記レジスタ値群を復帰する復帰
手段と、前記切り替えがなされる毎に、前記復帰に先行
して、当該復帰の対象となったレジスタ群にある各レジ
スタ値を、これらレジスタ値に対応する前記メモリ中の
レジスタ値群に上書きすることにより退避する退避手段
と、前記切り替えがなされる毎に、前記実行対象レジス
タ群にあるレジスタ値群により特定されるプログラムを
実行するプログラム実行手段とを備えることを特徴と
し、また、本発明に係るプログラム実行方法は、複数の
レジスタ群を備え、メモリに格納されている複数のレジ
スタ値群を用いて、これらレジスタ値群それぞれに対応
するプログラムを逐次実行するプロセッサにおいて、プ
ログラムを実行するプログラム実行方法であって、前記
複数のレジスタ群のうちいずれか1つを、プログラム実
行の基礎とする実行対象レジスタ群として選択し、当該
選択先を所定時間毎に切り替える選択先切り替えステッ
プと、前記切り替えがなされる毎に、前記複数のレジス
タ群のうち前記選択がなされていない1のレジスタ群に
前記レジスタ値群を復帰する復帰ステップと、前記切り
替えがなされる毎に、前記復帰に先行して、当該復帰の
対象となったレジスタ群にある各レジスタ値を、これら
レジスタ値に対応する前記メモリ中のレジスタ値群に上
書きすることにより退避する退避ステップと、前記切り
替えがなされる毎に、前記実行対象レジスタ群にあるレ
ジスタ値群により特定されるプログラムを実行するプロ
グラム実行ステップとを含むことを特徴とする。
【0354】これにより、プログラムの実行に影響を及
ぼすことなく、事前にレジスタ値群が実行対象レジスタ
群以外のレジスタ群に復帰されるので、当該レジスタ値
にもとづいてプログラムを実行しようとする際、前記復
帰及び退避などのオーバーヘッドが解消されているた
め、速やかにプログラムが実行され得る環境となってお
り、プログラムがより高速に実行される。
【0355】また、上述のオーバーヘッドの解消によ
り、頻繁に前記切り替えがなされても、プログラムの実
行時間には影響がなく、擬似的なリアルタイム処理の並
列実行に効果的である。また、前記プログラム実行手段
は、前記切り替えがなされたとき、前記実行を開始する
としてもよい。
【0356】これにより、プログラムを実行しようとす
る際、速やかにプログラムが実行され、オーバーヘッド
がほとんど解消される。また、前記プロセッサは、さら
に、各プログラムに対応するレジスタ値群の順序を示す
順序情報を取得する順序情報取得手段を備え、前記復帰
手段は、前記順序情報にもとづいて、復帰すべきレジス
タ値群を決定し、前記復帰を実施するとしてもよい。
【0357】これにより、プログラムの実行順序は、前
記順序情報により決定される。また、前記所定時間は、
当該順序情報の前記順序に対応するレジスタ値群全てに
おいて前記復帰がなれるとしたときに、当該復帰がなさ
れた各レジスタ群が実行対象レジスタ群として選択され
る時間の合計が所定の期間以内となるように決められて
いるとしてもよい。
【0358】これにより、限られた時間以内で複数の処
理が擬似的に並列実行される。つまり、処理時間が限ら
れたリアルタイム処理の擬似的な並列などに有効とな
る。また、前記順序情報は、レジスタ値群毎に固有な識
別情報が所定の順番に配列されたテーブルであり、前記
順序は、前記識別情報の配列の順番により示されるとし
てもよい。
【0359】これにより、前記レジスタ値群の復帰順序
は、識別情報の配列の順番により示され、当該配列の順
番を変えることにより、前記レジスタ値群の復帰順序が
変更される。また、前記順序情報は、前記配列中に同一
の識別情報を1以上含み、同一の識別情報どうしが位置
的に偏らないように配列され、当該配列中における同じ
識別情報の数は、各識別情報により特定されるレジスタ
値群に対応するプログラム毎に固有であるとしてもよ
い。
【0360】これにより、各プログラムの実行されるタ
イミングが均等化される。また、前記複数のプログラム
は、前記テーブルの変更の要否を判断して前記テーブル
を変更するための管理プログラムを含み、前記配列中に
おける、前記管理プログラムに対応するレジスタ値群の
所在を特定する識別情報の数は1つのみであるとしても
よい。
【0361】これにより、擬似的に並列実行される都
度、テーブルを変更する機会が与えられる。また、前記
所定時間は、前記複数のプログラム毎に固有の時間であ
り、さらに、各識別情報は、当該識別情報により特定さ
れるレジスタ値群に対応するプログラムの前記固有の時
間を示す時間情報が付加されており、前記管理プログラ
ムは、各識別情報に付加されている時間情報により示さ
れる前記固有の時間の合計が前記所定の期間以内となる
ように前記変更を実施するとしてもよい。
【0362】これにより、限られた時間以内で複数の処
理が擬似的に並列実行されるように、管理プログラムに
より前記固有の時間が更新される。また、前記プログラ
ム実行手段は、前記管理プログラムの実行中において、
前記テーブルの変更が必要と判断した場合、前記テーブ
ルに対して前記変更がなされた状態のダミーテーブルを
生成し、当該ダミーテーブルと前記テーブルとを入れ替
えることにより前記変更を実施するとしてもよい。
【0363】これにより、プログラムの実行に影響を与
えることなく、前記テーブルが変更され得る。また、前
記複数のプログラムは、映像処理を実行するための映像
処理プログラムを含み、前記配列中における、当該映像
処理プログラムに対応するレジスタ値群の所在を特定す
る識別情報の数は、他のプログラムよりも多いとしても
よい。
【0364】これにより、情報量の多い映像処理プログ
ラムについては、総合的にみると、処理時間が長く割り
当てられる。また、前記識別情報は、レジスタ値群が記
憶されている領域を示すアドレス値であり、前記復帰手
段は、前記アドレス値により復帰すべきレジスタ値群の
所在を特定し、前記復帰を実施するとしてもよい。
【0365】これにより、前記レジスタ値群の復帰順序
は、アドレス値の大小関係により示され得る。また、前
記順序情報は、レジスタ値群毎に固有な識別情報それぞ
れに他の識別情報を指し示すポインタが付されているテ
ーブルであり、前記順序は、前記ポインタを辿っていく
ことにより示されているとしてもよい。
【0366】これにより、前記レジスタ値群の復帰順序
は、前記ポインタにより示され、当該ポインタの指し示
す先を変更することにより、前記レジスタ値群の復帰順
序が変更される。また、さらに、プログラムの実行を中
断する中断事由が発生していることを検出する中断事由
発生検出手段と、前記中断事由が解消したことを検出す
る中断事由解消検出手段とを備え、前記プログラム実行
手段は、プログラムの実行に際し、当該プログラムにつ
いての中断事由の発生が検出された場合、当該中断事由
が解消するまで、当該プログラムの実行のために割り当
てられるべき実行期間を放棄するとしてもよい。
【0367】これにより、意味のないプログラムの実行
が回避される。また、前記中断事由は、複数あり、前記
放棄のトリガとして有効な中断事由は、プログラム毎に
固有であり、前記プログラム実行手段は、実行中のプロ
グラムに有効な中断事由が発生しているときに限り、前
記放棄を実施するとしてもよい。
【0368】これにより、プログラム毎に、中断事由が
生じたときの放棄の可否が判断される。また、さらに、
前記複数の中断事由のうちの1つを特定する情報と、特
定された当該中断事由の発生の有無を示す情報とを対応
づけた中断情報を取得する取得手段を備え、前記レジス
タ値群は、前記複数の中断事由のうちの1つを特定する
情報と、特定された当該中断事由の有効又は無効を示す
情報とを対応づけた設定情報を含み、前記プログラム実
行手段は、前記中断情報と前記設定情報とを比較参照し
て、前記放棄を実施するか否かを判断するとしてもよ
い。
【0369】これにより、前記複数の中断事由が複数あ
っても、有効な中断事由が特定される。また、前記設定
情報は、中断事由毎に固有のビット位置が定められ、各
ビット位置に当該ビット位置に対応する中断事由の有効
又は無効を示す値が示されたビット列データあり、前記
中断情報は、中断事由毎に固有のビット位置が定めら
れ、各ビット位置に当該ビット位置に対応する中断事由
の発生の有無を示す値が示されたビット列データあり、
前記プログラム実行手段は、前記設定情報において有効
を示す値が存在するビット位置に対応する中断事由が示
されている前記中断情報内のビット位置のみを参照して
前記判断を実施するとしてもよい。
【0370】これにより、前記複数の中断事由が複数あ
っても、参照範囲が限定されるため、有効な中断事由が
速やかに特定される。また、前記プログラム実行手段
は、前記放棄を実施するとき、その旨を前記復帰手段に
通知し、前記復帰手段は、前記中断事由が解消するま
で、前記放棄を行ったプログラムに対応するレジスタ値
群を前記復帰の対象としないように、当該レジスタ値群
の順序を無視して前記復帰を実施するとしてもよい。
【0371】これにより、無駄なレジスタ値群の前記復
帰が回避される。また、前記復帰手段は、前記通知がな
されたとき、前記無視を行おうとしている前記レジスタ
値群を、例外的に、前記通知後において2回目に実施す
る復帰における最優先の復帰対象の候補とし、前記2回
目の復帰開始までに前記中断事由が解消している場合
は、当該レジスタ値群を前記復帰対象に決定し、前記中
断事由が解消していない場合、以後中断事由が解消する
まで当該レジスタ値群について前記無視を継続するとし
てもよい。
【0372】これにより、前記放棄がなされた時間に、
他の有効なプログラムが実行され得る。また、前記復帰
手段は、前記無視がなされたレジスタ値群が複数あり、
このうち2以上のレジスタ値群について、前記中断事由
が解消した場合、これら2以上のレジスタ値群のいずれ
か1つについて、前記復帰の時期が到来した場合、これ
ら2以上のレジスタ値群のうち、最後に無視されたレジ
スタ値群を当該時期における復帰対象とするとしてもよ
い。
【0373】これにより、中断事由が解消した後におい
て、偏った時期に前記無視がなされたレジスタ値の復帰
がなされることが回避される。また、前記プログラム実
行手段は、前記放棄を行うとき、その旨を前記選択先切
り替え手段に通知し、前記選択先切り替え手段は、前記
通知を受け取ったとき、前記切り替えを実施するとして
もよい。
【0374】これにより、前記放棄がなされた場合にお
いて、次のプログラムが速やかに実施され得る。また、
前記中断事由は、プログラムの実行に際して、キャッシ
ュミスが発生したこととしてもよい。これにより、キャ
ッシュミスが発生したとき、次のプログラムが速やかに
実施される。
【0375】また、前記中断事由は、プログラム実行の
際、外部装置に処理を依頼し、当該外部装置からの処理
結果を待つ状態となったこととしてもよい。これによ
り、前記状態となったとき、次のプログラムが速やかに
実施される。また、前記中断事由は、プログラム実行の
際、共有資源を利用しようとして、当該共有資源が開放
されるのを待つ状態となったこととしてもよい。
【0376】これにより、前記状態となったとき、次の
プログラムが速やかに実施される。また、前記プログラ
ム実行手段は、プログラム実行用のCPUを有し、前記
放棄がなされた実行期間中、当該CPUを停止するとし
てもよい。これにより、無駄な電力消費が回避される。
また、前記プログラム実行手段は、プログラム実行用の
CPUを有し、前記放棄がなされた実行期間中、当該C
PUの駆動周波数を低減するとしてもよい。
【0377】これにより、無駄な電力消費が低減され
る。また、前記プログラム実行手段は、プログラム実行
用のCPUを有し、前記複数のプログラムを実行する
際、前記CPUの処理能力が、これらプログラムの実行
負荷に対して高すぎることにより、処理の空き時間が発
生しないように、プログラムの実行負荷に応じて、前記
CPUの駆動周波数を調整するとしてもよい。
【0378】これにより、無駄な電力消費が低減され
る。また、前記複数のレジスタ群は、2つであり、前記
選択先切り替え手段は、前記2つのレジスタ群に対し
て、交互に前記切り替えを実施するとしてもよい。これ
により、2つのレジスタ群のみにより、オーバーヘッド
が解消しつつ、複数のプログラムが擬似的に並列実行さ
れる。
【0379】即ち、擬似的に並列実行されるプログラム
の数に関係なく、2つのレジスタ群で足りる。また、前
記プログラム実行手段は、N段のパイプライン処理を実
行し、前記退避手段は、前記選択先切り替えが実施され
た時点より、(N−1)クロック以降に前記退避を実施
するとしてもよい。
【0380】これにより、パイプライン処理を実行した
場合においても、オーバーヘッドが解消しつつ、複数の
プログラムが擬似的に並列実行される。また、前記選択
先切り替え手段は、前記複数のレジスタ群から所定の順
序で前記選択先を決定し、前記切り替えを実施し、前記
復帰手段は、前記複数のレジスタ群から所定の順序でレ
ジスタ値群の復帰先を決定し、前記復帰を実施するとし
てもよい。
【0381】これにより、前記復帰及び退避などのオー
バーヘッドが解消されているため、速やかにプログラム
が実行され、プログラムが高速に実行される。また、前
記復帰の候補となる優先順位が対応づけられた候補レジ
スタ値群が複数存在し、前記復帰手段は、前記優先順位
にもとづいて、複数の候補レジスタ値群のうちから前記
復帰の対象とするレジスタ値群を決定し、前記復帰を実
施するとしてもよい。
【0382】これにより、前記優先順位にもとづいて、
複数の候補レジスタ値群のうちから前記復帰の対象とな
る候補レジスタ値群が決定される。つまり、前記復帰の
対象が固定的ではないため、前記復帰における自由度が
向上する。また、前記候補レジスタ値群は、実行予定時
間が対応づけられている複数の復帰グループのいずれか
に属しており、前記復帰手段は、前記復帰グループ毎
に、当該復帰グループに属する候補レジスタ値群のいず
れか1つを前記復帰の対象とするレジスタ値群として決
定し、前記選択先切り替え手段は、原則的に、前記選択
先切り替え手段によるm(mは、自然数)回目の前記切
り替えにおいて実行対象レジスタ群にあるレジスタ値群
の属する復帰グループに対応づけられている実行予定時
間を、m回目の前記切り替えからm+1回目の前記切り
替えまでの時間間隔とするとしてもよい。
【0383】これにより、復帰グループに対応づけられ
ている実行予定時間が、選択先切り替え手段により実施
される前記切り替えの間隔とされる。また、さらに、プ
ログラムの実行を中断する中断事由が発生していること
を検出する中断事由発生検出手段と、前記中断事由が解
消したことを検出する中断事由解消検出手段とを備え、
前記プログラム実行手段は、プログラムの実行に際し、
当該プログラムについての中断事由の発生が検出された
場合、当該中断事由が解消するまで、当該プログラムの
実行のために割り当てられるべき実行期間を放棄すると
してもよい。
【0384】これにより、プログラムの実行を中断する
中断事由が発生しているのにもかかわらず、当該プログ
ラムを前記プログラム実行手段においてなおも実行させ
ようとすることが回避される。また、前記選択先切り替
え手段は、前記プログラム実行手段により前記放棄が実
施されたとき、例外的に前記切り替えを実施するとして
もよい。
【0385】これにより、前記放棄がなされたとき、復
帰済みのレジスタ値群に対応するプログラムが直ちに実
行される。また、前記プログラム実行手段は、前記放棄
を実施するとき、その旨を前記選択先切り替え手段に通
知し、前記選択先切り替え手段は、前記通知にもとづい
て、例外的な前記切り替えを実施するとしてもよい。
【0386】これにより、前記選択先切り替え手段にお
いて、前記通知を受けることにより、例外的な前記切り
替えが実施される。また、前記復帰手段は、複数の候補
レジスタ値群のうちから前記復帰の対象とするレジスタ
値群を決定する際、前記中断事由が解消するまで、前記
放棄がなされたプログラムに対応する候補レジスタ値群
を前記復帰の対象から除外するとしてもよい。
【0387】これにより、プログラムの実行を中断する
中断事由が発生しているのにもかかわらず、当該プログ
ラムを次回に実行させようとすることが回避される。ま
た、前記復帰手段は、前記除外がなされていない候補レ
ジスタ値群のうち、最も優先順位が高い候補レジスタ値
群を前記復帰の対象とするレジスタ値群として決定する
としてもよい。
【0388】これにより、前記復帰がなされるレジスタ
値群に対応するプログラムは、前記中断事由が発生して
いないものに限られ、さらに、当該プログラムは、高い
優先順位が対応づけられているものであるため、より効
率的なプログラム実行がなされる。また、さらに、前記
復帰グループ毎に優先順位を指定する情報を取得する優
先順位指定情報取得手段を備え、前記復帰手段は、前記
優先順位指定情報取得手段により前記取得がなされた場
合、前記除外がなされておらず、かつ、指定された優先
順位が対応づけられている候補レジスタ値群を前記復帰
の対象とするレジスタ値群として決定するとしてもよ
い。
【0389】これにより、指定する優先順位を変更する
ことにより、前記復帰の対象とするレジスタ値群が変更
される。また、さらに、前記復帰グループ毎に優先順位
を指定する情報を取得する優先順位指定情報取得手段を
備え、前記復帰手段は、前記優先順位指定情報取得手段
により前記取得がなされた場合、指定された優先順位以
上の優先順位が対応づけられている候補レジスタ値群の
うち、前記除外がなされておらず、かつ、優先順位が最
も高いものを前記復帰の対象とするレジスタ値群として
決定するとしてもよい。
【0390】これにより、前記放棄がなされたプログラ
ムに代わって、前記中断事由が発生しておらず、指定さ
れた優先順位の範囲でプログラムが実行されるため、プ
ログラム実行の機会が増大する。また、前記選択先切り
替え手段は、k(kは、自然数)回目の前記切り替えを
実施したことにより、前記放棄が取り止められたプログ
ラムが当該放棄後初めて実行されることとなったとき、
前記放棄時において前記切り替えを早めたためにプログ
ラムの実行に使用されなかった時間を、k回目の前記切
り替えからk+1回目の前記切り替えまでの時間間隔と
するとしてもよい。
【0391】これにより、使われずに残された時間があ
る場合には、次にプログラム実行される際に、この時間
が消費される。また、さらに、前記放棄が実施されてい
る間、当該放棄が終了したときに実行対象レジスタ群と
して選択されるレジスタ群に格納されているレジスタ値
群に対応するプログラムの実行に必要なデータを、外部
のキャッシュに書き込むプリキャッシュ手段を備えると
してもよい。
【0392】これにより、次回のプログラム実行時にお
いて、キャッシュミスの発生が防止される。また、さら
に、前記放棄が実施されている間、ガーベジコレクショ
ンを実施するガーベジコレクション手段を備えるとして
もよい。これにより、次回のプログラム実行時におい
て、メモリ開放待ちの発生が防止される。
【0393】また、さらに、非定常的に実行すべきプロ
グラムの実行要求を取得する実行要求取得手段と、前記
要求が取得されたとき、実行要求された前記プログラム
が、いずれのプログラムの実行中においても実行可能な
共通処理用プログラムであるか否かを判断する共通処理
判断手段とを備えるとしてもよい。これにより、共通処
理用プログラムの実行要求を受け取ったとき、当該プロ
グラムがいずれのプログラムの実行中においても実行可
能であることが認識される。
【0394】また、前記プログラム実行手段は、前記共
通処理判断手段において、実行要求があったプログラム
が共通処理用プログラムと判断されたとき、実行中のプ
ログラムに割り込んで当該共通処理用プログラムを実行
し、前記選択先切り替え手段は、当該共通処理用プログ
ラムが実行されたとき、当該共通処理用プログラムの実
行時間を前記実行中のプログラムの実行時間に含めない
としてもよい。
【0395】これにより、実行中のプログラムの実行時
間は、共通処理用プログラムの割り込み実行による影響
を受けない。また、前記選択先切り替え手段は、前記共
通処理が実行されている間、時間計測用のカウンタを停
止させることにより、前記共通処理用プログラムの実行
時間を前記実行中のプログラムの実行時間に含めないよ
うにするとしてもよい。
【0396】これにより、前記実行中のプログラムにお
ける実行予定時間の消費時間から共通処理用プログラム
の割込み実行に費やされた時間が容易に除外される。ま
た、前記共通処理は、共有資源の操作を伴う処理であっ
て、前記選択先切り替え手段は、前記共通処理の実行開
始から完了に至るまでの間、前記切り替えを取り止める
としてもよい。
【0397】これにより、前記実行中のプログラムにお
ける実行予定時間の消費時間から共有資源の割込み操作
に費やされた時間が容易に除外される。また、さらに、
非定常的に実行すべきプログラムの実行要求を取得する
実行要求取得手段と、前記要求が取得されたとき、非定
常的に実行すべき前記プログラムが特定のプログラムの
実行に伴って実行される特定処理用プログラムであるか
否かを判断する特定処理判断手段とを備えるとしてもよ
い。
【0398】これにより、特定処理用プログラムの実行
要求を受け取ったとき、当該プログラムが特定のプログ
ラムにおいて実行可能であることが認識される。また、
前記プログラム実行手段は、前記特定処理判断手段によ
り実行要求されたプログラムが特定処理用プログラムで
あると判断されたとき、前記特定のプログラムの実行に
伴って当該特定処理用プログラムを実行し、前記選択先
切り替え手段は、当該特定処理用プログラムが実行され
たとき、当該特定処理用プログラムの実行に費やされた
時間を前記特定のプログラムの実行予定時間における消
費された時間に含めるとしてもよい。
【0399】これにより、前記特定のプログラム実行時
間は、特定処理用プログラムの割り込み実行による影響
を受け短くなる。さらに、特定プログラムの処理の実行
要求を受け取ったとき、この要求を受け付けるか否かの
判断を、プログラム実行手段、即ち、CPUに実施させ
なくても済むため、効率的なプログラム実行がなされ
る。
【0400】また、前記プログラム実行手段は、前記特
定処理判断手段において、特定処理用プログラムである
と判断されたとき、前記特定のプログラムの実行に伴っ
て当該特定処理用プログラムを実行し、前記選択先切り
替え手段は、前記特定処理用プログラムが実行されたと
き、当該特定処理用プログラムの実行に費やされた第1
消費時間を前記特定のプログラムの実行予定時間におけ
る第2消費時間に含めず、次回に当該特定のプラグムが
実行されるとき、前記第1消費時間を当該特定のプログ
ラムの実行予定時間における第3消費時間に含めるとし
てもよい。
【0401】これにより、特定処理用プログラムの割り
込み実行がなされたとき、前記特定のプログラムの実行
時間は、特定処理用プログラムの割り込み実行による影
響を受けず、次回に特定のプログラムを実行したとき、
当該特定のプログラム実行時間は、特定処理用プログラ
ムの割り込み実行による影響を受け短くなる。つまり、
一連の割込み処理が中断されることなく、速やかに処理
される。
【0402】また、さらに、イベント用プログラムの実
行要求の発生を検出するイベント検出手段を備え、前記
復帰グループには、順番が対応づけられている第1復帰
グループと、順番が対応づけられていない第2復帰グル
ープとがあり、前記イベント用プログラムに対応するイ
ベント用レジスタ値群は、前記第2復帰グループに属し
ており、前記復帰手段は、通常、第1復帰グループに対
応づけられている前記順番にもとづいて、第1復帰グル
ープのうちから前記決定を順次実施し、前記イベント検
出手段においてイベント用プログラムの実行要求の発生
が検出されたとき前記順番に割り込んで、前記イベント
用レジスタ値群を前記復帰の対象とするレジスタ値群と
して決定するとしてもよい。
【0403】これにより、イベント用プログラムの実行
要求の発生したとき、直ちに当該イベント用プログラム
が実行され得る。また、前記復帰手段は、前記イベント
検出手段においてイベント用プログラムの実行要求の発
生が検出されたとき、前記イベント用レジスタ値群を実
行対象レジスタ群として選択されていない1のレジスタ
群に復帰し、前記選択先切り替え手段は、前記イベント
用レジスタ値群の前記復帰が完了したとき、例外的に前
記切り替えを実施するとしてもよい。
【0404】これにより、イベント用プログラムの実行
要求の発生したとき、直ちに当該イベント用プログラム
が実行される。また、さらに、例外的な前記切り替えが
行われることにより、それまで実行中であったプログラ
ムにおいて、プログラムの実行が放棄された後に当該プ
ログラムが実行されることとなったとき、放棄された前
記時間分を取り返すように、プログラムの実行時間を調
整する時間調整手段を備えるとしてもよい。
【0405】これにより、放棄がなされても、後にその
時間分を取り返すように、プログラムの実行時間が調整
されるので、プログラムの実行時間が保証される。ま
た、さらに、前記イベント用プログラムの実行頻度がし
きい値を越えた場合、前記復帰手段による前記イベント
用レジスタ値群の前記決定を遅延させ、当該実行頻度が
前記しきい値を越えないように調整する調整手段を備え
るとしてもよい。
【0406】これにより、第1復帰グループに属するレ
ジスタ値群に対応するプログラムの実行頻度の減少が抑
制される。また、さらに、現在における前記選択先の切
り替えの可否を判断する切り替え判断手段を備え、前記
前記選択先切り替え手段は、前記切り替えを実施しよう
とするとき、前記切り替え判断手段による判断結果が切
り替え不可である場合には、当該切り替えを前記判断結
果が切り替え可となるまで遅延させるとしてもよい。
【0407】これにより、不都合なくプログラムが終了
される。また、さらに、前記遅延により前記実行予定時
間からオーバーした時間を特定の復帰グループに対応す
る実行予定時間から差し引く時間調整手段を備えるとし
てもよい。これにより、前記オーバーした時間が積算さ
れることにより生じるプログラム実行時間の破綻が防止
される。
【0408】つまり、特定の復帰グループ以外の復帰グ
ループに属するレジスタ値に対応するプログラムの実際
の実行時間が、当該復帰グループに対応づけられた実行
予定時間以上となり、当該プログラムの実行時間が保証
される。また、各復帰グループには、順番が対応づけら
れており、前記復帰手段は、復帰グループに対応づけら
れている前記順番にもとづいて前記決定を順次実施する
としてもよい。
【0409】これにより、復帰グループに対応づけられ
ている順番でプログラムが実行される。また、さらに、
前記候補レジスタ値群に対応づけられている優先順位を
変更する優先順位変更手段を備えるとしてもよい。これ
により、実行するプログラムが容易に変更される。
【0410】また、さらに、プログラムの実行を中断す
る中断事由が発生していることを検出する中断事由発生
検出手段と、前記中断事由が解消したことを検出する中
断事由解消検出手段と、プログラムの実行をするハード
ウエア部分の消費電力を低減する消費電力低減手段とを
備え、前記プログラム実行手段は、プログラムの実行に
際し、当該プログラムについての中断事由の発生が検出
された場合、当該中断事由が解消するまで、当該プログ
ラムの実行のために割り当てられるべき実行期間を放棄
し、前記消費電力低減手段は、前記放棄が実施されてい
る間、前記低減を実施するとしてもよい。
【0411】これにより、実行中のプログラムにおける
実行予定時間のうち、前記放棄がなされた時間におい
て、消費電力低減手段により前記低減が実施され、省電
力化が図られる。さらに、プログラムの実行中断により
残された時間において、何もしないことにより、プログ
ラムの実行周期をできる限り均一に保つ(周期性を保
つ)ことができる。
【0412】また、前記プログラム実行手段は、プログ
ラム実行用のCPUを有し、前記消費電力低減手段は、
前記放棄が実施されている間、前記CPUに供給されて
いるクロック信号を遮断することにより、前記低減を実
施するとしてもよい。これにより、容易に前記省電力化
が図られる。また、前記プログラム実行手段は、プログ
ラム実行用のCPUを有し、前記消費電力低減手段は、
前記放棄が実施されている間、前記CPUに印加されて
いる電圧を低下又は0にすることにより、前記低減を実
施するとしてもよい。
【0413】これにより、容易に前記省電力化が図られ
る。また、さらに、非定常的に実行すべきプログラムの
実行要求を受け付ける実行要求受付手段を備え、前記消
費電力低減手段は、前記要求が受け付けられたとき、前
記低減を取り止めるとしてもよい。これにより、緊急的
に実行されるプログラム以外の実行要求は、受け付けら
れないため、プログラム実行手段、即ち、CPUによる
プログラム実行の要否判断の処理を省くことができ、効
率的なプログラム実行がなされる。
【0414】また、前記実行要求は、割り込み処理要求
であるとしてもよい。これにより、割り込み処理要求が
発生した場合、消費電力低減手段による前記低減が取り
止められる。また、 前記実行要求は、前記前記選択先
切り替え手段により例外的な前記切り替えを伴って、緊
急的にプログラムを実行するためのイベント処理要求で
あるとしてもよい。
【0415】これにより、イベント処理要求が発生した
場合、消費電力低減手段による前記低減が取り止められ
る。また、前記復帰手段は、前記メモリ内に記憶されて
いる前記レジスタ値群をコピーして前記復帰を実施し、
前記プログラム実行手段は、プログラムの実行に伴っ
て、実行対象レジスタ群にあるレジスタ値を変更する場
合があり、前記退避手段は、前記プログラム実行手段に
よる前記変更がなされた場合にのみ前記退避を実施する
としてもよい。
【0416】これにより、変更されたレジスタ値のみを
退避するので、退避時間が短縮される。また、前記複数
のレジスタ群の各レジスタは、それぞれのレジスタに復
帰されているレジスタ値が変更されたか否かを示す変更
情報が付されており、前記退避手段は、前記変更情報に
もとづいて、変更がなされたレジスタ値のみを、これら
レジスタ値が変更される前の値が記憶されている前記メ
モリ内の場所にそれぞれ書き込むことにより、前記退避
を実施するとしてもよい。
【0417】これにより、変更の有無が容易に認識さ
れ、変更されたレジスタ値のみを退避するので、退避時
間がより短縮される。また、前記変更情報は、1ビット
のフラグであるとしてもよい。これにより、前記フラグ
により前記変更が示される。また、前記所定時間は、固
定の時間であるとしてもよい。
【0418】これにより、前記切り替えが容易となる。
また、前記所定時間は、前記複数のプログラム毎に固有
であるとしてもよい。これにより、各プログラムの実行
に適したプログラム実行時間が割り当てられ得る。ま
た、さらに、プログラムの実行に必要な実行データを格
納するための複数のキャッシュと、前記復帰手段による
前記復帰に伴って、当該復帰がなされたレジスタ値群を
参照して、当該レジスタ値群に対応するプログラムの実
行データを特定する実行データ特定手段と、前記複数の
キャッシュのうち、プログラムの実行に用いられていな
いいずれか1つのキャッシュに、特定された前記実行デ
ータを書き込むキャッシュ書き込み手段とを備えるとし
てもよい。
【0419】これにより、キャッシュミスの発生が回避
される。また、本発明に係るプロセッサは、複数のレジ
スタ値群を用いて、これらレジスタ値群それぞれに対応
するプログラムを逐次実行するプロセッサであって、前
記レジスタ値群のそれぞれを格納する複数のレジスタ群
と、前記複数のレジスタ群のうちいずれか1つを、プロ
グラム実行の基礎とする実行対象レジスタ群として選択
し、当該選択先を所定時間毎に切り替える選択先切り替
え手段と、前記切り替えがなされる毎に、前記実行対象
レジスタ群にあるレジスタ値群により特定されるプログ
ラムを実行するプログラム実行手段とを備えることを特
徴とし、また、本発明に係るプログラム実行方法は、複
数のレジスタ群を備え、複数のレジスタ値群を用いて、
これらレジスタ値群それぞれに対応するプログラムを逐
次実行するプロセッサにおいて、プログラムを実行する
プログラム実行方法であって、前記複数のレジスタ群の
うちいずれか1つを、プログラム実行の基礎とする実行
対象レジスタ群として選択し、当該選択先を所定時間毎
に切り替える選択先切り替えステップと、前記切り替え
がなされる毎に、前記実行対象レジスタ群にあるレジス
タ値群により特定されるプログラムを実行するプログラ
ム実行ステップとを含むことを特徴とする。
【0420】これにより、それぞれのプログラムの実行
時間に影響を及ぼすことなく、速やかにプログラムが実
行され得る環境となっており、複数のプログラムが所定
時間毎に頻繁に切り替えられながら高速に実行されるの
で、擬似的なリアルタイム処理の並列実行に効果的であ
る。
【図面の簡単な説明】
【図1】第1の実施形態における仮想マルチプロセッサ
100の機能ブロック図である。
【図2】コンテキストメモリに格納されているテーブル
及びコンテキストのデータ構成を示す図である。
【図3】完了通知フラグ群及び設定フラグ群の各フラグ
について説明する図である。
【図4】タスクとプレートとの関係を示す図である。
【図5】仮想マルチプロセッサにおいて実施される処理
を示すフローチャートである。
【図6】フラグ判定処理を示すフローチャートである。
【図7】仮想マルチプロセッサにおいて実施される処理
を時系列的に説明する図である。
【図8】ポインタを用いて実行順序を示すテーブルのデ
ータ構成を示す図である。
【図9】スリープしているプレートのコンテキストに対
して優先的にフラグ判定処理を実施する場合のプレート
実行状況を時系列的に示す図である。
【図10】遅くスリープされたプレートのコンテキスト
に対して優先的にフラグ判定処理を実施する例を時系列
的に示す図である。
【図11】コンテキストアドレスにカウント値の初期値
が付加された実行順序テーブルのデータ構成を示す図で
ある。
【図12】サイクルカウンタの機能ブロック図である。
【図13】4段のパイプライン処理を実施する例を示す
図である。
【図14】スリープとなった直後から1回分のプレート
実行までの間については、スリープしたプレートの実行
順序を最先の順序とし、このスリープしたプレートを優
先的に実行する場合のプレート実行の流れを示す図であ
る。
【図15】第2の実施形態における仮想マルチプロセッ
サの機能ブロック図である。
【図16】時間割付情報格納レジスタ及びLP状態格納
レジスタに格納されている情報の内容を示す図である。
【図17】第2の実施形態における仮想マルチプロセッ
サにおいて実施される処理を示すフローチャートであ
る。
【図18】スケジューリング制御部により実施されるタ
イムドリブンスケジューリングの内容を示すフローチャ
ートである。
【図19】スケジューリング制御部により実施されるイ
ベントドリブンスケジューリングの内容を示すフローチ
ャートである。
【図20】割込み処理の内容を示すフローチャートであ
る。
【図21】放棄スケジューリングの内容を示すフローチ
ャートである。
【図22】(a)は、各タイムスロットの基本サイクル
の値を示す図である。(b)は、基本サイクル調整処理
による基本サイクルの値の見直しについて説明する図で
ある。
【図23】(a)は、プログラム実行時間が放棄されな
い通常のプログラム実行状態を示す図である。(b)
は、プログラム実行時間が放棄され、タイムオプション
情報が「LP_SWITCH」を示す場合におけるプログラム実
行状態を示す図である。(c)は、プログラム実行時間
の放棄が行なわれ、かつ、このLP1のタイムオプショ
ン情報が「TS_SWITCH」を示す場合におけるプログラム
実行状態を示す図である。(d)は、プログラム実行時
間の放棄が行なわれ、かつ、このLP1のタイムオプシ
ョン情報が「MICRO-SLEEP」を示す場合におけるプログ
ラム実行状態を示す図である。
【図24】(a)は、タイムドリブン型のタイムスロッ
トにおいて、有効な候補プログラムが1つもない場合の
アイドルオプション情報にもとづくプログラム実行の状
況を説明する図である。(b)は、有効な候補プログラ
ムが1つも存在せず、かつ、このLP1のアイドルオプ
ション情報が「SWITCH」を示す場合におけるプログラム
実行状態を示す図である。(c)は、TS1において、
有効な候補プログラムが1つも存在せず、かつ、このL
P1のアイドルオプション情報が「MICRO-SLEEP」を示
す場合におけるプログラム実行状態を示す図である。
【図25】(a)は、スリーピングタイムスロットがあ
る場合のプログラムの実行状況を示す。(b)は、スリ
ーピングタイムスロットに割り当てられているプログラ
ムにウエイト状態の解消が発生し、かつ、このプログラ
ムの起床タイミングが「n」を示す場合におけるプログ
ラムの実行状況を示す。
【図26】(a)は、スリーピングタイムスロットがあ
る場合のプログラムの実行状況を示す。(b)は、スリ
ーピングタイムスロットに割り当てられているプログラ
ムにウエイト状態の解消が発生し、かつ、このプログラ
ムの起床タイミングが「e」を示す場合におけるプログ
ラムの実行状況を示す。
【図27】(a)は、イベント処理要求が発生しない場
合におけるプログラム実行状態を示す図である。(b)
は、イベント処理要求が発生し、かつ、このイベント処
理を実行するプログラムの起床タイミングが「n」を示
す場合におけるプログラムの実行状況を示す。(c)
は、イベント処理要求が発生し、かつ、このイベント処
理を実行するプログラムの起床タイミングが「e」を示
す場合におけるプログラムの実行状況を示す。
【図28】(a)は、共通割り込み処理要求が発生して
いない場合におけるプログラム実行状態を示す図であ
る。(b)は、共通割り込み処理要求が発生している場
合におけるプログラム実行状態を示す図である。
【図29】(a)は、固有割込み処理要求が発生してい
ない場合におけるプログラム実行状態を示す図である。
(b)は、固有割込み処理要求が発生したとき、この固
有割込み処理を実行するプログラム以外が実行されてい
る場合における固有割込み処理の実行状態を示す図であ
る。(c)は、固有割込み処理要求が発生したとき、こ
の固有割込み処理を実行するプログラムが実行されてい
る場合における固有割込み処理の実行状態を示す図であ
る。
【図30】(a)は、固有割込み処理要求が発生してい
ない場合におけるプログラム実行状態を示す図である。
(b)は、k巡目に固有割込み処理が発生した場合にお
ける、第1及び2の実施形態以外の方法によるk巡目の
固有割込み処理の実行状態を示す図である。(c)は、
k巡目に固有割込み処理が発生した場合における、第1
及び2の実施形態以外の方法によるk+1巡目の固有割
込み処理の実行状態を示す図である。
【図31】(a)は、第2の実施形態における電力消費
の低減化する機能部の構成を示す図である。(b)は、
第2の実施形態以外の方法による電力消費の低減化する
機能部の構成の一例を示す図である。(c)は、第2の
実施形態以外の方法による電力消費の低減化する機能部
の構成の一例を示す図である。(d)は、第2の実施形
態以外の方法による電力消費の低減化する機能部の構成
の一例を示す図である。
【図32】従来のプロセッサの機能ブロック図である。
【図33】従来のプロセッサにおけるタスク実行の流れ
及びレジスタ群とコンテキストメモリとの間におけるコ
ンテキストの入出力の状況を示す図である。
【図34】第1の実施形態における仮想マルチプロセッ
サ100と外部プロセッサ30の接続関係を示す図であ
る。
【符号の説明】
10 主メモリ 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 外部プロセッサ処理完了信号線
───────────────────────────────────────────────────── フロントページの続き (72)発明者 藤井 茂樹 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 檜垣 信生 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 清原 督三 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 木村 浩三 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 西田 英志 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 杉村 敏夫 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 廉田 浩 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 古川 量也 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 林 邦彦 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 Fターム(参考) 5B098 DD05 GC05 GC06 HH01

Claims (71)

    【特許請求の範囲】
  1. 【請求項1】 メモリに格納されている複数のレジスタ
    値群を用いて、これらレジスタ値群それぞれに対応する
    プログラムを逐次実行するプロセッサであって、 複数のレジスタ群と、 前記複数のレジスタ群のうちいずれか1つを、プログラ
    ム実行の基礎とする実行対象レジスタ群として選択し、
    当該選択先を所定時間毎に切り替える選択先切り替え手
    段と、 前記切り替えがなされる毎に、前記複数のレジスタ群の
    うち前記選択がなされていない1のレジスタ群に前記レ
    ジスタ値群を復帰する復帰手段と、 前記切り替えがなされる毎に、前記復帰に先行して、当
    該復帰の対象となったレジスタ群にある各レジスタ値
    を、これらレジスタ値に対応する前記メモリ中のレジス
    タ値群に上書きすることにより退避する退避手段と、 前記切り替えがなされる毎に、前記実行対象レジスタ群
    にあるレジスタ値群により特定されるプログラムを実行
    するプログラム実行手段とを備えることを特徴とするプ
    ロセッサ。
  2. 【請求項2】 前記プログラム実行手段は、前記切り替
    えがなされたとき、前記実行を開始することを特徴とす
    る請求項1記載のプロセッサ。
  3. 【請求項3】 前記プロセッサは、さらに、各プログラ
    ムに対応するレジスタ値群の順序を示す順序情報を取得
    する順序情報取得手段を備え、 前記復帰手段は、前記順序情報にもとづいて、復帰すべ
    きレジスタ値群を決定し、前記復帰を実施することを特
    徴とする請求項2記載のプロセッサ。
  4. 【請求項4】 前記所定時間は、当該順序情報の前記順
    序に対応するレジスタ値群全てにおいて前記復帰がなれ
    るとしたときに、当該復帰がなされた各レジスタ群が実
    行対象レジスタ群として選択される時間の合計が所定の
    期間以内となるように決められていることを特徴とする
    請求項3記載のプロセッサ。
  5. 【請求項5】 前記順序情報は、レジスタ値群毎に固有
    な識別情報が所定の順番に配列されたテーブルであり、 前記順序は、前記識別情報の配列の順番により示される
    ことを特徴とする請求項4記載のプロセッサ。
  6. 【請求項6】 前記順序情報は、前記配列中に同一の識
    別情報を1以上含み、同一の識別情報どうしが位置的に
    偏らないように配列され、当該配列中における同じ識別
    情報の数は、各識別情報により特定されるレジスタ値群
    に対応するプログラム毎に固有であることを特徴とする
    請求項5記載のプロセッサ。
  7. 【請求項7】 前記複数のプログラムは、前記テーブル
    の変更の要否を判断して前記テーブルを変更するための
    管理プログラムを含み、 前記配列中における、前記管理プログラムに対応するレ
    ジスタ値群の所在を特定する識別情報の数は1つのみで
    あることを特徴とする請求項6記載のプロセッサ。
  8. 【請求項8】 前記所定時間は、前記複数のプログラム
    毎に固有の時間であり、 さらに、各識別情報は、当該識別情報により特定される
    レジスタ値群に対応するプログラムの前記固有の時間を
    示す時間情報が付加されており、 前記管理プログラムは、各識別情報に付加されている時
    間情報により示される前記固有の時間の合計が前記所定
    の期間以内となるように前記変更を実施することを特徴
    とする請求項7記載のプロセッサ。
  9. 【請求項9】 前記プログラム実行手段は、前記管理プ
    ログラムの実行中において、前記テーブルの変更が必要
    と判断した場合、前記テーブルに対して前記変更がなさ
    れた状態のダミーテーブルを生成し、当該ダミーテーブ
    ルと前記テーブルとを入れ替えることにより前記変更を
    実施することを特徴とする請求項8記載のプロセッサ。
  10. 【請求項10】 前記複数のプログラムは、映像処理を
    実行するための映像処理プログラムを含み、前記配列中
    における、当該映像処理プログラムに対応するレジスタ
    値群の所在を特定する識別情報の数は、他のプログラム
    よりも多いことを特徴とする請求項6記載のプロセッ
    サ。
  11. 【請求項11】 前記識別情報は、レジスタ値群が記憶
    されている領域を示すアドレス値であり、 前記復帰手段は、前記アドレス値により復帰すべきレジ
    スタ値群の所在を特定し、前記復帰を実施することを特
    徴とする請求項6記載のプロセッサ。
  12. 【請求項12】 前記順序情報は、レジスタ値群毎に固
    有な識別情報それぞれに他の識別情報を指し示すポイン
    タが付されているテーブルであり、 前記順序は、前記ポインタを辿っていくことにより示さ
    れていることを特徴とする請求項5記載のプロセッサ。
  13. 【請求項13】 さらに、 プログラムの実行を中断する中断事由が発生しているこ
    とを検出する中断事由発生検出手段と、 前記中断事由が解消したことを検出する中断事由解消検
    出手段とを備え、 前記プログラム実行手段は、プログラムの実行に際し、
    当該プログラムについての中断事由の発生が検出された
    場合、当該中断事由が解消するまで、当該プログラムの
    実行のために割り当てられるべき実行期間を放棄するこ
    とを特徴とする請求項3記載のプロセッサ。
  14. 【請求項14】 前記中断事由は、複数あり、 前記放棄のトリガとして有効な中断事由は、プログラム
    毎に固有であり、 前記プログラム実行手段は、実行中のプログラムに有効
    な中断事由が発生しているときに限り、前記放棄を実施
    することを特徴とする請求項13記載のプロセッサ。
  15. 【請求項15】 さらに、 前記複数の中断事由のうちの1つを特定する情報と、特
    定された当該中断事由の発生の有無を示す情報とを対応
    づけた中断情報を取得する取得手段を備え、 前記レジスタ値群は、前記複数の中断事由のうちの1つ
    を特定する情報と、特定された当該中断事由の有効又は
    無効を示す情報とを対応づけた設定情報を含み、 前記プログラム実行手段は、前記中断情報と前記設定情
    報とを比較参照して、前記放棄を実施するか否かを判断
    することを特徴とする請求項14記載のプロセッサ。
  16. 【請求項16】 前記設定情報は、中断事由毎に固有の
    ビット位置が定められ、各ビット位置に当該ビット位置
    に対応する中断事由の有効又は無効を示す値が示された
    ビット列データあり、 前記中断情報は、中断事由毎に固有のビット位置が定め
    られ、各ビット位置に当該ビット位置に対応する中断事
    由の発生の有無を示す値が示されたビット列データあ
    り、 前記プログラム実行手段は、前記設定情報において有効
    を示す値が存在するビット位置に対応する中断事由が示
    されている前記中断情報内のビット位置のみを参照して
    前記判断を実施することを特徴とする請求項15記載の
    プロセッサ。
  17. 【請求項17】前記プログラム実行手段は、前記放棄を
    実施するとき、その旨を前記復帰手段に通知し、 前記復帰手段は、前記中断事由が解消するまで、前記放
    棄を行ったプログラムに対応するレジスタ値群を前記復
    帰の対象としないように、当該レジスタ値群の順序を無
    視して前記復帰を実施することを特徴とする請求項13
    記載のプロセッサ。
  18. 【請求項18】 前記復帰手段は、前記通知がなされた
    とき、前記無視を行おうとしている前記レジスタ値群
    を、例外的に、前記通知後において2回目に実施する復
    帰における最優先の復帰対象の候補とし、前記2回目の
    復帰開始までに前記中断事由が解消している場合は、当
    該レジスタ値群を前記復帰対象に決定し、前記中断事由
    が解消していない場合、以後中断事由が解消するまで当
    該レジスタ値群について前記無視を継続することを特徴
    とする請求項17記載のプロセッサ。
  19. 【請求項19】 前記復帰手段は、前記無視がなされた
    レジスタ値群が複数あり、このうち2以上のレジスタ値
    群について、前記中断事由が解消した場合、これら2以
    上のレジスタ値群のいずれか1つについて、前記復帰の
    時期が到来した場合、これら2以上のレジスタ値群のう
    ち、最後に無視されたレジスタ値群を当該時期における
    復帰対象とすることを特徴とする請求項17記載のプロ
    セッサ。
  20. 【請求項20】前記プログラム実行手段は、前記放棄を
    行うとき、その旨を前記選択先切り替え手段に通知し、 前記選択先切り替え手段は、前記通知を受け取ったと
    き、前記切り替えを実施することを特徴とする請求項1
    3記載のプロセッサ。
  21. 【請求項21】 前記中断事由は、プログラムの実行に
    際して、キャッシュミスが発生したことを特徴とする請
    求項13記載のプロセッサ。
  22. 【請求項22】 前記中断事由は、プログラム実行の
    際、外部装置に処理を依頼し、当該外部装置からの処理
    結果を待つ状態となったことを特徴とする請求項13記
    載のプロセッサ。
  23. 【請求項23】 前記中断事由は、プログラム実行の
    際、共有資源を利用しようとして、当該共有資源が開放
    されるのを待つ状態となったことを特徴とする請求項1
    3記載のプロセッサ。
  24. 【請求項24】 前記プログラム実行手段は、プログラ
    ム実行用のCPUを有し、前記放棄がなされた実行期間
    中、当該CPUを停止することを特徴とする請求項13
    記載のプロセッサ。
  25. 【請求項25】 前記プログラム実行手段は、プログラ
    ム実行用のCPUを有し、前記放棄がなされた実行期間
    中、当該CPUの駆動周波数を低減することを特徴とす
    る請求項13記載のプロセッサ。
  26. 【請求項26】 前記プログラム実行手段は、プログラ
    ム実行用のCPUを有し、前記複数のプログラムを実行
    する際、前記CPUの処理能力が、これらプログラムの
    実行負荷に対して高すぎることにより、処理の空き時間
    が発生しないように、プログラムの実行負荷に応じて、
    前記CPUの駆動周波数を調整することを特徴とする請
    求項13記載のプロセッサ。
  27. 【請求項27】 前記複数のレジスタ群は、2つであ
    り、 前記選択先切り替え手段は、前記2つのレジスタ群に対
    して、交互に前記切り替えを実施することを特徴とする
    請求項3記載のプロセッサ。
  28. 【請求項28】 前記プログラム実行手段は、N段のパ
    イプライン処理を実行し、 前記退避手段は、前記選択先切り替えが実施された時点
    より、(N−1)クロック以降に前記退避を実施するこ
    とを特徴とする請求項27記載のプロセッサ。
  29. 【請求項29】 前記選択先切り替え手段は、前記複数
    のレジスタ群から所定の順序で前記選択先を決定し、前
    記切り替えを実施し、 前記復帰手段は、前記複数のレジスタ群から所定の順序
    でレジスタ値群の復帰先を決定し、前記復帰を実施する
    ことを特徴とする請求項3記載のプロセッサ。
  30. 【請求項30】 前記復帰の候補となる優先順位が対応
    づけられた候補レジスタ値群が複数存在し、 前記復帰手段は、前記優先順位にもとづいて、複数の候
    補レジスタ値群のうちから前記復帰の対象とするレジス
    タ値群を決定し、前記復帰を実施することを特徴とする
    請求項1記載のプロセッサ。
  31. 【請求項31】 前記候補レジスタ値群は、実行予定時
    間が対応づけられている複数の復帰グループのいずれか
    に属しており、 前記復帰手段は、前記復帰グループ毎に、当該復帰グル
    ープに属する候補レジスタ値群のいずれか1つを前記復
    帰の対象とするレジスタ値群として決定し、 前記選択先切り替え手段は、原則的に、前記選択先切り
    替え手段によるm(mは、自然数)回目の前記切り替え
    において実行対象レジスタ群にあるレジスタ値群の属す
    る復帰グループに対応づけられている実行予定時間を、
    m回目の前記切り替えからm+1回目の前記切り替えま
    での時間間隔とすることを特徴とする請求項30記載の
    プロセッサ。
  32. 【請求項32】 さらに、 プログラムの実行を中断する中断事由が発生しているこ
    とを検出する中断事由発生検出手段と、 前記中断事由が解消したことを検出する中断事由解消検
    出手段とを備え、 前記プログラム実行手段は、プログラムの実行に際し、
    当該プログラムについての中断事由の発生が検出された
    場合、当該中断事由が解消するまで、当該プログラムの
    実行のために割り当てられるべき実行期間を放棄するこ
    とを特徴とする請求項31記載のプロセッサ。
  33. 【請求項33】 前記選択先切り替え手段は、前記プロ
    グラム実行手段により前記放棄が実施されたとき、例外
    的に前記切り替えを実施することを特徴とする請求項3
    2記載のプロセッサ。
  34. 【請求項34】 前記プログラム実行手段は、前記放棄
    を実施するとき、その旨を前記選択先切り替え手段に通
    知し、 前記選択先切り替え手段は、前記通知にもとづいて、例
    外的な前記切り替えを実施することを特徴とする請求項
    33記載のプロセッサ。
  35. 【請求項35】 前記復帰手段は、複数の候補レジスタ
    値群のうちから前記復帰の対象とするレジスタ値群を決
    定する際、前記中断事由が解消するまで、前記放棄がな
    されたプログラムに対応する候補レジスタ値群を前記復
    帰の対象から除外することを特徴とする請求項34記載
    のプロセッサ。
  36. 【請求項36】 前記復帰手段は、前記除外がなされて
    いない候補レジスタ値群のうち、最も優先順位が高い候
    補レジスタ値群を前記復帰の対象とするレジスタ値群と
    して決定することを特徴とする請求項35記載のプロセ
    ッサ。
  37. 【請求項37】 さらに、 前記復帰グループ毎に優先順位を指定する情報を取得す
    る優先順位指定情報取得手段を備え、 前記復帰手段は、前記優先順位指定情報取得手段により
    前記取得がなされた場合、前記除外がなされておらず、
    かつ、指定された優先順位が対応づけられている候補レ
    ジスタ値群を前記復帰の対象とするレジスタ値群として
    決定することを特徴とする請求項35記載のプロセッ
    サ。
  38. 【請求項38】 さらに、 前記復帰グループ毎に優先順位を指定する情報を取得す
    る優先順位指定情報取得手段を備え、 前記復帰手段は、前記優先順位指定情報取得手段により
    前記取得がなされた場合、指定された優先順位以上の優
    先順位が対応づけられている候補レジスタ値群のうち、
    前記除外がなされておらず、かつ、優先順位が最も高い
    ものを前記復帰の対象とするレジスタ値群として決定す
    ることを特徴とする請求項35記載のプロセッサ。
  39. 【請求項39】 前記選択先切り替え手段は、k(k
    は、自然数)回目の前記切り替えを実施したことによ
    り、前記放棄が取り止められたプログラムが当該放棄後
    初めて実行されることとなったとき、前記放棄時におい
    て前記切り替えを早めたためにプログラムの実行に使用
    されなかった時間を、k回目の前記切り替えからk+1
    回目の前記切り替えまでの時間間隔とすることを特徴と
    する請求項35記載のプロセッサ。
  40. 【請求項40】 さらに、 前記放棄が実施されている間、当該放棄が終了したとき
    に実行対象レジスタ群として選択されるレジスタ群に格
    納されているレジスタ値群に対応するプログラムの実行
    に必要なデータを、外部のキャッシュに書き込むプリキ
    ャッシュ手段を備えることを特徴とする請求項32記載
    のプロセッサ。
  41. 【請求項41】 さらに、 前記放棄が実施されている間、ガーベジコレクションを
    実施するガーベジコレクション手段を備えることを特徴
    とする請求項32記載のプロセッサ。
  42. 【請求項42】 さらに、 非定常的に実行すべきプログラムの実行要求を取得する
    実行要求取得手段と、前記要求が取得されたとき、実行
    要求された前記プログラムが、いずれのプログラムの実
    行中においても実行可能な共通処理用プログラムである
    か否かを判断する共通処理判断手段とを備えることを特
    徴とする請求項31記載のプロセッサ。
  43. 【請求項43】 前記プログラム実行手段は、前記共通
    処理判断手段において、実行要求があったプログラムが
    共通処理用プログラムと判断されたとき、実行中のプロ
    グラムに割り込んで当該共通処理用プログラムを実行
    し、 前記選択先切り替え手段は、当該共通処理用プログラム
    が実行されたとき、当該共通処理用プログラムの実行時
    間を前記実行中のプログラムの実行時間に含めないこと
    を特徴とする請求項42記載のプロセッサ。
  44. 【請求項44】 前記選択先切り替え手段は、前記共通
    処理が実行されている間、時間計測用のカウンタを停止
    させることにより、前記共通処理用プログラムの実行時
    間を前記実行中のプログラムの実行時間に含めないよう
    にすることを特徴とする請求項43記載のプロセッサ。
  45. 【請求項45】 前記共通処理は、共有資源の操作を伴
    う処理であって、 前記選択先切り替え手段は、前記共通処理の実行開始か
    ら完了に至るまでの間、前記切り替えを取り止めること
    を特徴とする請求項42記載のプロセッサ。
  46. 【請求項46】 さらに、 非定常的に実行すべきプログラムの実行要求を取得する
    実行要求取得手段と、前記要求が取得されたとき、非定
    常的に実行すべき前記プログラムが特定のプログラムの
    実行に伴って実行される特定処理用プログラムであるか
    否かを判断する特定処理判断手段とを備えることを特徴
    とする請求項31記載のプロセッサ。
  47. 【請求項47】 前記プログラム実行手段は、前記特定
    処理判断手段により実行要求されたプログラムが特定処
    理用プログラムであると判断されたとき、前記特定のプ
    ログラムの実行に伴って当該特定処理用プログラムを実
    行し、 前記選択先切り替え手段は、当該特定処理用プログラム
    が実行されたとき、当該特定処理用プログラムの実行に
    費やされた時間を前記特定のプログラムの実行予定時間
    における消費された時間に含めることを特徴とする請求
    項46記載のプロセッサ。
  48. 【請求項48】 前記プログラム実行手段は、前記特定
    処理判断手段において、特定処理用プログラムであると
    判断されたとき、前記特定のプログラムの実行に伴って
    当該特定処理用プログラムを実行し、 前記選択先切り替え手段は、前記特定処理用プログラム
    が実行されたとき、当該特定処理用プログラムの実行に
    費やされた第1消費時間を前記特定のプログラムの実行
    予定時間における第2消費時間に含めず、次回に当該特
    定のプラグムが実行されるとき、前記第1消費時間を当
    該特定のプログラムの実行予定時間における第3消費時
    間に含めることを特徴とする請求項46記載のプロセッ
    サ。
  49. 【請求項49】 さらに、 イベント用プログラムの実行要求の発生を検出するイベ
    ント検出手段を備え、 前記復帰グループには、順番が対応づけられている第1
    復帰グループと、順番が対応づけられていない第2復帰
    グループとがあり、 前記イベント用プログラムに対応するイベント用レジス
    タ値群は、前記第2復帰グループに属しており、 前記復帰手段は、通常、第1復帰グループに対応づけら
    れている前記順番にもとづいて、第1復帰グループのう
    ちから前記決定を順次実施し、前記イベント検出手段に
    おいてイベント用プログラムの実行要求の発生が検出さ
    れたとき前記順番に割り込んで、前記イベント用レジス
    タ値群を前記復帰の対象とするレジスタ値群として決定
    することを特徴とする請求項31記載のプロセッサ。
  50. 【請求項50】 前記復帰手段は、前記イベント検出手
    段においてイベント用プログラムの実行要求の発生が検
    出されたとき、前記イベント用レジスタ値群を実行対象
    レジスタ群として選択されていない1のレジスタ群に復
    帰し、 前記選択先切り替え手段は、前記イベント用レジスタ値
    群の前記復帰が完了したとき、例外的に前記切り替えを
    実施することを特徴とする請求項49記載のプロセッ
    サ。
  51. 【請求項51】 さらに、 例外的な前記切り替えが行われることにより、それまで
    実行中であったプログラムにおいて、プログラムの実行
    が放棄された後に当該プログラムが実行されることとな
    ったとき、放棄された前記時間分を取り返すように、プ
    ログラムの実行時間を調整する時間調整手段を備えるこ
    とを特徴とする請求項50記載のプロセッサ。
  52. 【請求項52】 さらに、 前記イベント用プログラムの実行頻度がしきい値を越え
    た場合、前記復帰手段による前記イベント用レジスタ値
    群の前記決定を遅延させ、当該実行頻度が前記しきい値
    を越えないように調整する調整手段を備えることを特徴
    とする請求項49記載のプロセッサ。
  53. 【請求項53】 さらに、 現在における前記選択先の切り替えの可否を判断する切
    り替え判断手段を備え、 前記前記選択先切り替え手段は、前記切り替えを実施し
    ようとするとき、前記切り替え判断手段による判断結果
    が切り替え不可である場合には、当該切り替えを前記判
    断結果が切り替え可となるまで遅延させることを特徴と
    する請求項31記載のプロセッサ。
  54. 【請求項54】 さらに、 前記遅延により前記実行予定時間からオーバーした時間
    を特定の復帰グループに対応する実行予定時間から差し
    引く時間調整手段を備えることを特徴とする請求項53
    記載のプロセッサ。
  55. 【請求項55】 各復帰グループには、順番が対応づけ
    られており、 前記復帰手段は、復帰グループに対応づけられている前
    記順番にもとづいて前記決定を順次実施することを特徴
    とする請求項31記載のプロセッサ。
  56. 【請求項56】 さらに、 前記候補レジスタ値群に対応づけられている優先順位を
    変更する優先順位変更手段を備えることを特徴とする請
    求項30記載のプロセッサ。
  57. 【請求項57】 さらに、 プログラムの実行を中断する中断事由が発生しているこ
    とを検出する中断事由発生検出手段と、 前記中断事由が解消したことを検出する中断事由解消検
    出手段と、 プログラムの実行をするハードウエア部分の消費電力を
    低減する消費電力低減手段とを備え、 前記プログラム実行手段は、プログラムの実行に際し、
    当該プログラムについての中断事由の発生が検出された
    場合、当該中断事由が解消するまで、当該プログラムの
    実行のために割り当てられるべき実行期間を放棄し、 前記消費電力低減手段は、前記放棄が実施されている
    間、前記低減を実施することを特徴とする請求項1記載
    のプロセッサ。
  58. 【請求項58】 前記プログラム実行手段は、プログラ
    ム実行用のCPUを有し、 前記消費電力低減手段は、前記放棄が実施されている
    間、前記CPUに供給されているクロック信号を遮断す
    ることにより、前記低減を実施することを特徴とする請
    求項57記載のプロセッサ。
  59. 【請求項59】 前記プログラム実行手段は、プログラ
    ム実行用のCPUを有し、 前記消費電力低減手段は、前記放棄が実施されている
    間、前記CPUに印加されている電圧を低下又は0にす
    ることにより、前記低減を実施することを特徴とする請
    求項57記載のプロセッサ。
  60. 【請求項60】 さらに、 非定常的に実行すべきプログラムの実行要求を受け付け
    る実行要求受付手段を備え、 前記消費電力低減手段は、前記要求が受け付けられたと
    き、前記低減を取り止めることを特徴とする請求項57
    記載のプロセッサ。
  61. 【請求項61】 前記実行要求は、割り込み処理要求で
    あることを特徴とする請求項60記載のプロセッサ。
  62. 【請求項62】 前記実行要求は、前記前記選択先切り
    替え手段により例外的な前記切り替えを伴って、緊急的
    にプログラムを実行するためのイベント処理要求である
    ことを特徴とする請求項60記載のプロセッサ。
  63. 【請求項63】 前記復帰手段は、前記メモリ内に記憶
    されている前記レジスタ値群をコピーして前記復帰を実
    施し、 前記プログラム実行手段は、プログラムの実行に伴っ
    て、実行対象レジスタ群にあるレジスタ値を変更する場
    合があり、 前記退避手段は、前記プログラム実行手段による前記変
    更がなされた場合にのみ前記退避を実施することを特徴
    とする請求項1記載のプロセッサ。
  64. 【請求項64】 前記複数のレジスタ群の各レジスタ
    は、それぞれのレジスタに復帰されているレジスタ値が
    変更されたか否かを示す変更情報が付されており、 前記退避手段は、前記変更情報にもとづいて、変更がな
    されたレジスタ値のみを、これらレジスタ値が変更され
    る前の値が記憶されている前記メモリ内の場所にそれぞ
    れ書き込むことにより、前記退避を実施することを特徴
    とする請求項63記載のプロセッサ。
  65. 【請求項65】 前記変更情報は、1ビットのフラグで
    あることを特徴とする請求項64記載のプロセッサ。
  66. 【請求項66】 前記所定時間は、固定の時間であるこ
    とを特徴とする請求項1記載のプロセッサ。
  67. 【請求項67】 前記所定時間は、前記複数のプログラ
    ム毎に固有であることを特徴とする請求項1記載のプロ
    セッサ。
  68. 【請求項68】 さらに、 プログラムの実行に必要な実行データを格納するための
    複数のキャッシュと、 前記復帰手段による前記復帰に伴って、当該復帰がなさ
    れたレジスタ値群を参照して、当該レジスタ値群に対応
    するプログラムの実行データを特定する実行データ特定
    手段と、 前記複数のキャッシュのうち、プログラムの実行に用い
    られていないいずれか1つのキャッシュに、特定された
    前記実行データを書き込むキャッシュ書き込み手段とを
    備えることを特徴とする請求項1記載のプロセッサ。
  69. 【請求項69】 複数のレジスタ群を備え、メモリに格
    納されている複数のレジスタ値群を用いて、これらレジ
    スタ値群それぞれに対応するプログラムを逐次実行する
    プロセッサにおいて、プログラムを実行するプログラム
    実行方法であって、 前記複数のレジスタ群のうちいずれか1つを、プログラ
    ム実行の基礎とする実行対象レジスタ群として選択し、
    当該選択先を所定時間毎に切り替える選択先切り替えス
    テップと、 前記切り替えがなされる毎に、前記複数のレジスタ群の
    うち前記選択がなされていない1のレジスタ群に前記レ
    ジスタ値群を復帰する復帰ステップと、 前記切り替えがなされる毎に、前記復帰に先行して、当
    該復帰の対象となったレジスタ群にある各レジスタ値
    を、これらレジスタ値に対応する前記メモリ中のレジス
    タ値群に上書きすることにより退避する退避ステップ
    と、 前記切り替えがなされる毎に、前記実行対象レジスタ群
    にあるレジスタ値群により特定されるプログラムを実行
    するプログラム実行ステップとを含むことを特徴とする
    プログラム実行方法。
  70. 【請求項70】 複数のレジスタ値群を用いて、これら
    レジスタ値群それぞれに対応するプログラムを逐次実行
    するプロセッサであって、 前記レジスタ値群のそれぞれを格納する複数のレジスタ
    群と、 前記複数のレジスタ群のうちいずれか1つを、プログラ
    ム実行の基礎とする実行対象レジスタ群として選択し、
    当該選択先を所定時間毎に切り替える選択先切り替え手
    段と、 前記切り替えがなされる毎に、前記実行対象レジスタ群
    にあるレジスタ値群により特定されるプログラムを実行
    するプログラム実行手段とを備えることを特徴とするプ
    ロセッサ。
  71. 【請求項71】 複数のレジスタ群を備え、複数のレジ
    スタ値群を用いて、これらレジスタ値群それぞれに対応
    するプログラムを逐次実行するプロセッサにおいて、プ
    ログラムを実行するプログラム実行方法であって、 前記複数のレジスタ群のうちいずれか1つを、プログラ
    ム実行の基礎とする実行対象レジスタ群として選択し、
    当該選択先を所定時間毎に切り替える選択先切り替えス
    テップと、 前記切り替えがなされる毎に、前記実行対象レジスタ群
    にあるレジスタ値群により特定されるプログラムを実行
    するプログラム実行ステップとを含むことを特徴とする
    プログラム実行方法。
JP2003001616A 2002-01-09 2003-01-07 プロセッサ及びプログラム実行方法 Expired - Lifetime JP3813930B2 (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2003001616A JP3813930B2 (ja) 2002-01-09 2003-01-07 プロセッサ及びプログラム実行方法
US10/338,408 US7386707B2 (en) 2002-01-09 2003-01-08 Processor and program execution method capable of efficient program execution
US12/110,513 US7921281B2 (en) 2002-01-09 2008-04-28 Processor and program execution method capable of efficient program execution
US12/110,491 US8006076B2 (en) 2002-01-09 2008-04-28 Processor and program execution method capable of efficient program execution
US12/110,539 US7930520B2 (en) 2002-01-09 2008-04-28 Processor and program execution method capable of efficient program execution
US13/179,614 US8719827B2 (en) 2002-01-09 2011-07-11 Processor and program execution method capable of efficient program execution
US14/203,569 US9823946B2 (en) 2002-01-09 2014-03-11 Processor and program execution method capable of efficient program execution

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2002-2816 2002-01-09
JP2002002816 2002-01-09
JP2003001616A JP3813930B2 (ja) 2002-01-09 2003-01-07 プロセッサ及びプログラム実行方法

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP2005287949A Division JP4196982B2 (ja) 2002-01-09 2005-09-30 プロセッサ及びプログラム実行方法
JP2005287950A Division JP4238246B2 (ja) 2002-01-09 2005-09-30 プロセッサ

Publications (2)

Publication Number Publication Date
JP2003271399A true JP2003271399A (ja) 2003-09-26
JP3813930B2 JP3813930B2 (ja) 2006-08-23

Family

ID=27667400

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003001616A Expired - Lifetime JP3813930B2 (ja) 2002-01-09 2003-01-07 プロセッサ及びプログラム実行方法

Country Status (2)

Country Link
US (6) US7386707B2 (ja)
JP (1) JP3813930B2 (ja)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007317171A (ja) * 2006-04-27 2007-12-06 Matsushita Electric Ind Co Ltd マルチスレッド計算機システム、マルチスレッド実行制御方法
WO2008023426A1 (fr) * 2006-08-24 2008-02-28 Netcleus Systems Corporation Dispositif de traitement de tâche
US7386707B2 (en) 2002-01-09 2008-06-10 Matsushita Electric Industrial Co., Ltd. Processor and program execution method capable of efficient program execution
WO2009022371A1 (ja) * 2007-08-16 2009-02-19 Netcleus Systems Corporation タスク処理装置
CN101382911A (zh) * 2007-09-03 2009-03-11 松下电器产业株式会社 程序控制装置
JP2009175960A (ja) * 2008-01-23 2009-08-06 Panasonic Corp 仮想マルチプロセッサシステム
JP2010049700A (ja) * 2009-10-21 2010-03-04 Net Kuriasu Systems Kk タスク処理装置
US7735087B2 (en) 2003-03-13 2010-06-08 Panasonic Corporation Task switching apparatus, method and program
JP2010170320A (ja) * 2009-01-22 2010-08-05 Denso Corp プログラム、及び制御装置
US7822952B2 (en) 2005-10-06 2010-10-26 Panasonic Corporation Context switching device
US8001549B2 (en) 2006-04-27 2011-08-16 Panasonic Corporation Multithreaded computer system and multithread execution control method
WO2011114394A1 (ja) * 2010-03-18 2011-09-22 パナソニック株式会社 仮想マルチプロセッサシステム
US8042116B2 (en) 2004-09-17 2011-10-18 Panasonic Corporation Task switching based on the execution control information held in register groups
WO2011142058A1 (ja) * 2010-05-14 2011-11-17 パナソニック株式会社 計算機システム
US8108719B2 (en) 2006-10-13 2012-01-31 Nec Corporation Information processing device and failure concealing method therefor
CN102436393A (zh) * 2006-08-24 2012-05-02 科尼龙硅公司 任务处理装置
US8327379B2 (en) 2006-08-24 2012-12-04 Kernelon Silicon Inc. Method for switching a selected task to be executed according with an output from task selecting circuit
US8850168B2 (en) 2009-02-24 2014-09-30 Panasonic Corporation Processor apparatus and multithread processor apparatus
WO2021157448A1 (ja) * 2020-02-03 2021-08-12 株式会社ソニー・インタラクティブエンタテインメント データ処理システム、データ転送装置およびコンテキストスイッチ方法

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1387273B1 (en) * 2002-07-31 2010-07-21 Texas Instruments Incorporated Conditional garbage collection based on monitoring to improve real time performance
US7987333B2 (en) * 2004-02-05 2011-07-26 Broadcom Corporation Reprogramming of select registers in a linked list
WO2005122543A1 (ja) * 2004-06-14 2005-12-22 Nec Corporation 外部依頼型機能制御システム、端末装置、外部依頼型機能制御方法及び外部依頼型機能制御プログラム
US7603673B2 (en) * 2004-10-28 2009-10-13 Intel Corporation Method and system for reducing context switch times
US7543136B1 (en) * 2005-07-13 2009-06-02 Nvidia Corporation System and method for managing divergent threads using synchronization tokens and program instructions that include set-synchronization bits
JP4855864B2 (ja) * 2006-08-11 2012-01-18 富士通セミコンダクター株式会社 ダイレクトメモリアクセスコントローラ
US8903968B2 (en) * 2006-08-29 2014-12-02 International Business Machines Corporation Distributed computing environment
JP2009044677A (ja) * 2007-08-10 2009-02-26 Panasonic Corp 機密情報処理装置、機密情報処理機器、及び機密情報処理方法
JP2009110209A (ja) * 2007-10-29 2009-05-21 Panasonic Corp 演算処理装置、プロセッサ、プログラム変換装置およびプログラム
CN101482903B (zh) * 2008-01-09 2010-09-29 联想(北京)有限公司 硬件安全单元
JP4996519B2 (ja) * 2008-03-27 2012-08-08 パナソニック株式会社 仮想マルチプロセッサ、システムlsi、携帯電話機器、及び仮想マルチプロセッサの制御方法
JPWO2009150815A1 (ja) * 2008-06-11 2011-11-10 パナソニック株式会社 マルチプロセッサシステム
JP2010211526A (ja) * 2009-03-10 2010-09-24 Fujitsu Ltd プログラム、コンピュータ及び制御方法
JP5099251B1 (ja) * 2011-07-15 2012-12-19 オムロン株式会社 Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体
CN102521151A (zh) * 2011-11-28 2012-06-27 华为技术有限公司 数据缓存方法和装置
US8898376B2 (en) 2012-06-04 2014-11-25 Fusion-Io, Inc. Apparatus, system, and method for grouping data stored on an array of solid-state storage elements
US9317105B2 (en) * 2013-01-09 2016-04-19 Htc Corporation Method for performing application wake-up management for a portable device by classifying one application wake-up event of a plurality of application wake-up events as a triggering event for the other application wake-up events
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9354883B2 (en) * 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US10437650B2 (en) * 2014-06-19 2019-10-08 Nec Corporation Controlling execution of tasks in a series of operational processing by identifying processing units based on task command, task setting information, state of operational processing
KR20170065845A (ko) * 2015-12-04 2017-06-14 삼성전자주식회사 프로세서 및 제어 방법
CN108108237B (zh) * 2017-12-27 2021-09-28 电子科技大学 一种基于milp的周期关联任务异构多核映射调度方法
US10452689B1 (en) * 2018-04-06 2019-10-22 Banjo, Inc. Consolidating information from different signals into an event
US11567527B2 (en) * 2019-07-23 2023-01-31 Texas Instruments Incorporated Preemptive wakeup circuit for wakeup from low power modes
US11748024B2 (en) 2020-04-01 2023-09-05 Samsung Electronics Co., Ltd. Apparatus and method of managing registers based on register group

Family Cites Families (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55115155A (en) 1979-02-27 1980-09-04 Matsushita Electric Ind Co Ltd One chip multi-microcomputer
JPS61150039A (ja) 1984-12-24 1986-07-08 Matsushita Electric Ind Co Ltd プロセツサ制御回路
JPS62266630A (ja) 1986-05-15 1987-11-19 Nec Corp 情報処理装置の実行時間アカウンテイング方式
JP2666824B2 (ja) 1986-05-15 1997-10-22 三菱電機株式会社 プログラマブル制御装置
JPS63245529A (ja) * 1987-03-31 1988-10-12 Toshiba Corp レジスタ退避復元装置
US5109512A (en) * 1990-05-31 1992-04-28 International Business Machines Corporation Process for dispatching tasks among multiple information processors
US5452452A (en) * 1990-06-11 1995-09-19 Cray Research, Inc. System having integrated dispatcher for self scheduling processors to execute multiple types of processes
JPH04101233A (ja) 1990-08-20 1992-04-02 Matsushita Electric Ind Co Ltd 2階層キュー構造によるタスク管理方法
US5349680A (en) 1990-11-07 1994-09-20 Kabushiki Kaisha Toshiba Information processing apparatus for executing application programs under control of a system program
JP3144842B2 (ja) 1991-08-09 2001-03-12 株式会社東芝 マイクロプロセッサ
JPH05127926A (ja) 1991-10-31 1993-05-25 Nec Corp タスク制御装置
JP2866241B2 (ja) 1992-01-30 1999-03-08 株式会社東芝 コンピュータシステムおよびスケジューリング方法
DE4309532C2 (de) * 1992-03-25 1996-10-31 Intel Corp Verfahren zum Sichern einer Systemabbildung eines Computersystems auf einer permanenten Speichereinrichtung sowie ein Computersystem
JPH0667905A (ja) 1992-08-17 1994-03-11 Matsushita Electric Ind Co Ltd マイクロプロセッサ
US5628013A (en) 1992-09-30 1997-05-06 Apple Computer, Inc. Apparatus and method for allocating processing time in a frame-based computer system
US5768276A (en) * 1992-10-05 1998-06-16 Telefonaktiebolaget Lm Ericsson Digital control channels having logical channels supporting broadcast SMS
JP2760721B2 (ja) 1992-11-12 1998-06-04 三菱電機株式会社 計算機システム
JPH0744401A (ja) 1993-08-03 1995-02-14 Hitachi Ltd 論理集積回路およびそのデータ処理システム
CA2131406C (en) 1993-09-21 2002-11-12 David D'souza Preemptive multi-tasking with cooperative groups of tasks
US5706459A (en) * 1994-01-06 1998-01-06 Fujitsu Limited Processor having a variable number of stages in a pipeline
JPH07210400A (ja) 1994-01-20 1995-08-11 Sony Corp マルチタスク処理の処理装置
JPH07295694A (ja) 1994-04-25 1995-11-10 Matsushita Electric Ind Co Ltd 演算処理装置の省電力方法
IL110181A (en) * 1994-06-30 1998-02-08 Softchip Israel Ltd Install microprocessor and peripherals
JP3588485B2 (ja) 1994-08-26 2004-11-10 富士通株式会社 プロセススケジューリング方式
US5754869A (en) * 1994-10-04 1998-05-19 Intel Corporation Method and apparatus for managing power consumption of the CPU and on-board system devices of personal computers
JP3727382B2 (ja) 1994-12-26 2005-12-14 三菱電機株式会社 制御ソフトウェア実行システムの制御方法
JPH08190491A (ja) 1995-01-04 1996-07-23 Hitachi Koki Haramachi Co Ltd タスク切り換え方法
JPH0916409A (ja) 1995-06-30 1997-01-17 Matsushita Electric Ind Co Ltd マイクロコンピュータ
DE19530483A1 (de) 1995-08-18 1997-02-20 Siemens Ag Einrichtung und Verfahren zur Echtzeit-Verarbeitung einer Mehrzahl von Tasks
JPH09128248A (ja) 1995-10-31 1997-05-16 Matsushita Electric Ind Co Ltd マイクロプロセッサ
US5812844A (en) 1995-12-07 1998-09-22 Microsoft Corporation Method and system for scheduling the execution of threads using optional time-specific scheduling constraints
US6400819B1 (en) 1996-03-28 2002-06-04 Hitachi, Ltd. Method and apparatus for executing communication in real-time and data structure for real-time data communication
JPH09282182A (ja) 1996-04-19 1997-10-31 Hitachi Ltd 計算機システムにおけるプリエンプト制御方法
US6438573B1 (en) * 1996-10-09 2002-08-20 Iowa State University Research Foundation, Inc. Real-time programming method
JPH10143376A (ja) 1996-11-11 1998-05-29 Matsushita Electric Ind Co Ltd 情報処理装置
JPH10171667A (ja) 1996-12-13 1998-06-26 Chokosoku Network Computer Gijutsu Kenkyusho:Kk タスク管理方法
JP3605978B2 (ja) 1997-01-17 2004-12-22 松下電器産業株式会社 マイクロコンピュータ
JP3037182B2 (ja) 1997-02-17 2000-04-24 日本電気株式会社 タスク管理方式
DE69841526D1 (de) 1997-03-04 2010-04-15 Panasonic Corp Zur effizienten Ausführung vieler asynchronen Ereignisaufgaben geeigneter Prozessor
JP3356677B2 (ja) 1997-03-04 2002-12-16 松下電器産業株式会社 非同期に実行すべきタスクが多数あっても、非同期イベントタスクを効率良く実行することができるプロセッサ
US5872950A (en) * 1997-03-31 1999-02-16 International Business Machines Corporation Method and apparatus for managing register renaming including a wraparound array and an indication of rename entry ages
CN1156171C (zh) 1997-04-07 2004-06-30 松下电器产业株式会社 提高处理效率的图象声音处理装置
JP3589565B2 (ja) 1997-04-07 2004-11-17 松下電器産業株式会社 映像音声処理装置
US6223208B1 (en) 1997-10-03 2001-04-24 International Business Machines Corporation Moving data in and out of processor units using idle register/storage functional units
US6145049A (en) * 1997-12-29 2000-11-07 Stmicroelectronics, Inc. Method and apparatus for providing fast switching between floating point and multimedia instructions using any combination of a first register file set and a second register file set
KR100280460B1 (ko) 1998-04-08 2001-02-01 김영환 데이터 처리 장치 및 이의 복수의 스레드 처리 방법
US6006293A (en) * 1998-04-21 1999-12-21 Comsat Corporation Method and apparatus for zero overhead sharing for registered digital hardware
JP4048638B2 (ja) 1998-04-27 2008-02-20 ソニー株式会社 スケジューリング装置及び方法並びに記録媒体
US6408325B1 (en) * 1998-05-06 2002-06-18 Sun Microsystems, Inc. Context switching technique for processors with large register files
JP2000066904A (ja) 1998-08-21 2000-03-03 Canon Inc マルチタスク制御方法及び記憶媒体
US6438557B1 (en) 1999-06-23 2002-08-20 Ericsson Inc. System and method for performing context switching and rescheduling of a processor
US6754690B2 (en) * 1999-09-16 2004-06-22 Honeywell, Inc. Method for time partitioned application scheduling in a computer operating system
DE19955776C1 (de) 1999-11-19 2001-07-19 Infineon Technologies Ag Multitasking-Prozessorsystem
US7925869B2 (en) 1999-12-22 2011-04-12 Ubicom, Inc. Instruction-level multithreading according to a predetermined fixed schedule in an embedded processor using zero-time context switching
US7120783B2 (en) 1999-12-22 2006-10-10 Ubicom, Inc. System and method for reading and writing a thread state in a multithreaded central processing unit
US7308686B1 (en) 1999-12-22 2007-12-11 Ubicom Inc. Software input/output using hard real time threads
JP2001202258A (ja) 2000-01-20 2001-07-27 Yaskawa Electric Corp リアルタイム処理装置
US6757897B1 (en) 2000-02-29 2004-06-29 Cisco Technology, Inc. Apparatus and methods for scheduling and performing tasks
US6957432B2 (en) * 2000-03-21 2005-10-18 Microsoft Corporation Real-time scheduler
US7849463B2 (en) * 2000-06-02 2010-12-07 Microsoft Corporation Dynamically variable idle time thread scheduling
US7010612B1 (en) 2000-06-22 2006-03-07 Ubicom, Inc. Universal serializer/deserializer
US6684342B1 (en) 2000-06-22 2004-01-27 Ubicom, Inc. Apparatus and method of dynamic and deterministic changes in clock frequency for lower power consumption while maintaining fast interrupt handling
US7047396B1 (en) 2000-06-22 2006-05-16 Ubicom, Inc. Fixed length memory to memory arithmetic and architecture for a communications embedded processor system
US6742086B1 (en) * 2000-08-11 2004-05-25 Unisys Corporation Affinity checking process for multiple processor, multiple bus optimization of throughput
US20020073129A1 (en) * 2000-12-04 2002-06-13 Yu-Chung Wang Integrated multi-component scheduler for operating systems
FR2818769B1 (fr) 2000-12-21 2004-06-18 Eads Airbus Sa Procede et systeme d'exploitation temps reel multitaches
US6820263B1 (en) * 2000-12-29 2004-11-16 Nortel Networks Limited Methods and system for time management in a shared memory parallel processor computing environment
EP1365328B1 (en) 2001-02-28 2013-09-04 Fujitsu Limited Method for executing parallel process, and multi-processor computer
JP2002342097A (ja) * 2001-05-17 2002-11-29 Matsushita Electric Ind Co Ltd タスク割当可能時間決定装置及びタスク割当可能時間決定方法
JP3636679B2 (ja) 2001-07-03 2005-04-06 松下電器産業株式会社 コンテンツ配信方法および端末管理サーバ装置
US20030037091A1 (en) 2001-08-09 2003-02-20 Kozo Nishimura Task scheduling device
US6779065B2 (en) * 2001-08-31 2004-08-17 Intel Corporation Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads
US7028300B2 (en) 2001-11-13 2006-04-11 Microsoft Corporation Method and system for managing resources in a distributed environment that has an associated object
US6816977B2 (en) * 2001-12-03 2004-11-09 Hewlett-Packard Development Company, L.P. Power reduction in computing devices using micro-sleep intervals
JP3813930B2 (ja) * 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
KR100714752B1 (ko) 2002-04-25 2007-05-07 가부시키가이샤 아드반테스트 전자부품 시험장치
JP2005531860A (ja) 2002-07-03 2005-10-20 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ マルチプロセッサコンピュータシステム

Cited By (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719827B2 (en) 2002-01-09 2014-05-06 Panasonic Corporation Processor and program execution method capable of efficient program execution
US8006076B2 (en) 2002-01-09 2011-08-23 Panasonic Corporation Processor and program execution method capable of efficient program execution
US7386707B2 (en) 2002-01-09 2008-06-10 Matsushita Electric Industrial Co., Ltd. Processor and program execution method capable of efficient program execution
US9823946B2 (en) 2002-01-09 2017-11-21 Socionext Inc. Processor and program execution method capable of efficient program execution
US7930520B2 (en) 2002-01-09 2011-04-19 Panasonic Corporation Processor and program execution method capable of efficient program execution
US7921281B2 (en) 2002-01-09 2011-04-05 Panasonic Corporation Processor and program execution method capable of efficient program execution
US7735087B2 (en) 2003-03-13 2010-06-08 Panasonic Corporation Task switching apparatus, method and program
US8276156B2 (en) 2003-03-13 2012-09-25 Panasonic Corporation Task switching based on assigned time slot
US7950016B2 (en) 2003-03-13 2011-05-24 Panasonic Corporation Apparatus for switching the task to be completed in a processor by switching to the task assigned time slot
US8042116B2 (en) 2004-09-17 2011-10-18 Panasonic Corporation Task switching based on the execution control information held in register groups
US7822952B2 (en) 2005-10-06 2010-10-26 Panasonic Corporation Context switching device
US8001549B2 (en) 2006-04-27 2011-08-16 Panasonic Corporation Multithreaded computer system and multithread execution control method
JP2007317171A (ja) * 2006-04-27 2007-12-06 Matsushita Electric Ind Co Ltd マルチスレッド計算機システム、マルチスレッド実行制御方法
CN102436393B (zh) * 2006-08-24 2015-03-25 科尼龙硅公司 任务处理装置
US8327379B2 (en) 2006-08-24 2012-12-04 Kernelon Silicon Inc. Method for switching a selected task to be executed according with an output from task selecting circuit
US9342350B2 (en) 2006-08-24 2016-05-17 Renesas Electronics Corporation System for selecting a task to be executed according to an output from a task control circuit
US9753729B2 (en) 2006-08-24 2017-09-05 Renesas Electronics Corporation System for selecting a task to be executed according to an output from a task control circuit
WO2008023426A1 (fr) * 2006-08-24 2008-02-28 Netcleus Systems Corporation Dispositif de traitement de tâche
CN102436393A (zh) * 2006-08-24 2012-05-02 科尼龙硅公司 任务处理装置
US8108719B2 (en) 2006-10-13 2012-01-31 Nec Corporation Information processing device and failure concealing method therefor
US9766924B2 (en) 2007-08-16 2017-09-19 Renesas Electronics Corporation Task processor
US10949249B2 (en) 2007-08-16 2021-03-16 Renesas Electronics Corporation Task processor
US10387191B2 (en) 2007-08-16 2019-08-20 Renesas Electronics Corporation Task processor
WO2009022371A1 (ja) * 2007-08-16 2009-02-19 Netcleus Systems Corporation タスク処理装置
JPWO2009022371A1 (ja) * 2007-08-16 2010-11-04 ネットクリアスシステムズ株式会社 タスク処理装置
US8341641B2 (en) 2007-08-16 2012-12-25 Kernelon Silicon Inc. Task processor
US8776079B2 (en) 2007-08-16 2014-07-08 Kernelon Silicon Inc. Task processor
US9104470B2 (en) 2007-08-16 2015-08-11 Renesas Electronics Corporation Task processor
US8413163B2 (en) 2007-09-03 2013-04-02 Panasonic Corporation Program control device including per-timeslot switching of thread execution
CN101382911A (zh) * 2007-09-03 2009-03-11 松下电器产业株式会社 程序控制装置
JP2009059310A (ja) * 2007-09-03 2009-03-19 Panasonic Corp プログラム制御装置
JP2009175960A (ja) * 2008-01-23 2009-08-06 Panasonic Corp 仮想マルチプロセッサシステム
JP2010170320A (ja) * 2009-01-22 2010-08-05 Denso Corp プログラム、及び制御装置
US8850168B2 (en) 2009-02-24 2014-09-30 Panasonic Corporation Processor apparatus and multithread processor apparatus
JP2010049700A (ja) * 2009-10-21 2010-03-04 Net Kuriasu Systems Kk タスク処理装置
US8725921B2 (en) 2010-03-18 2014-05-13 Panasonic Corporation Virtual multi-processor system
WO2011114394A1 (ja) * 2010-03-18 2011-09-22 パナソニック株式会社 仮想マルチプロセッサシステム
JP2011197869A (ja) * 2010-03-18 2011-10-06 Panasonic Corp 仮想マルチプロセッサシステム
US9063794B2 (en) 2010-05-14 2015-06-23 Socionext Inc. Multi-threaded processor context switching with multi-level cache
WO2011142058A1 (ja) * 2010-05-14 2011-11-17 パナソニック株式会社 計算機システム
CN102822809A (zh) * 2010-05-14 2012-12-12 松下电器产业株式会社 计算机系统
JP2011242896A (ja) * 2010-05-14 2011-12-01 Panasonic Corp 計算機システム
WO2021157448A1 (ja) * 2020-02-03 2021-08-12 株式会社ソニー・インタラクティブエンタテインメント データ処理システム、データ転送装置およびコンテキストスイッチ方法
JPWO2021157448A1 (ja) * 2020-02-03 2021-08-12
US11789714B2 (en) 2020-02-03 2023-10-17 Sony Interactive Entertainment Inc. Data processing system, data transfer device, and context switching method
JP7368511B2 (ja) 2020-02-03 2023-10-24 株式会社ソニー・インタラクティブエンタテインメント データ処理システム、データ転送装置およびコンテキストスイッチ方法

Also Published As

Publication number Publication date
US9823946B2 (en) 2017-11-21
US20110283288A1 (en) 2011-11-17
US20140196045A1 (en) 2014-07-10
US7930520B2 (en) 2011-04-19
US7386707B2 (en) 2008-06-10
US8719827B2 (en) 2014-05-06
US20080215858A1 (en) 2008-09-04
JP3813930B2 (ja) 2006-08-23
US8006076B2 (en) 2011-08-23
US20080209162A1 (en) 2008-08-28
US7921281B2 (en) 2011-04-05
US20080209192A1 (en) 2008-08-28
US20030149864A1 (en) 2003-08-07

Similar Documents

Publication Publication Date Title
JP3813930B2 (ja) プロセッサ及びプログラム実行方法
US9047120B2 (en) Virtual queue processing circuit and task processor
US9766924B2 (en) Task processor
KR101686010B1 (ko) 실시간 멀티코어 시스템의 동기화 스케쥴링 장치 및 방법
JP5653431B2 (ja) マルチプロセッサシステム
US20110010713A1 (en) Computer system, virtual machine monitor and scheduling method for virtual machine monitor
JPH09128351A (ja) 並列計算機における並列プロセススケジューリング方法および並列計算機用処理装置
JP5347451B2 (ja) マルチプロセッサシステム、競合回避プログラム及び競合回避方法
JP2008527558A (ja) タスクスケジューリングのデータ処理システム及び方法
JP4170364B2 (ja) プロセッサ
JP4825257B2 (ja) プロセッサ
JP4238246B2 (ja) プロセッサ
JP2001117786A (ja) プロセススケジューリング装置およびプロセススケジューリング方法
JP4295792B2 (ja) プロセッサ及びプログラム実行方法
JP4196982B2 (ja) プロセッサ及びプログラム実行方法
JP2010165209A (ja) マルチスレッドプロセッサ装置
CN114691376A (zh) 一种线程执行方法、装置、电子设备和存储介质
JP2003241977A (ja) 中央演算処理装置及び情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20030107

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040817

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060327

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060327

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: 20060523

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060601

R150 Certificate of patent or registration of utility model

Ref document number: 3813930

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100609

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100609

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110609

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110609

Year of fee payment: 5

R154 Certificate of patent or utility model (reissue)

Free format text: JAPANESE INTERMEDIATE CODE: R154

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120609

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120609

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130609

Year of fee payment: 7

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term