JP3007612B2 - マイクロコントローラ、データ処理システム及びタスクスイッチの制御方法 - Google Patents

マイクロコントローラ、データ処理システム及びタスクスイッチの制御方法

Info

Publication number
JP3007612B2
JP3007612B2 JP23805798A JP23805798A JP3007612B2 JP 3007612 B2 JP3007612 B2 JP 3007612B2 JP 23805798 A JP23805798 A JP 23805798A JP 23805798 A JP23805798 A JP 23805798A JP 3007612 B2 JP3007612 B2 JP 3007612B2
Authority
JP
Japan
Prior art keywords
task
state
execution
microcontroller
tasks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP23805798A
Other languages
English (en)
Other versions
JPH11134203A (ja
Inventor
浩 今西
敏之 荒木
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 Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP23805798A priority Critical patent/JP3007612B2/ja
Publication of JPH11134203A publication Critical patent/JPH11134203A/ja
Application granted granted Critical
Publication of JP3007612B2 publication Critical patent/JP3007612B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Processing (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マルチタスキング
機能を備えたマイクロコントローラと、該マイクロコン
トローラが複数のハードウェアエンジンを制御するよう
に構成されたデータ処理システムとに関するものであ
る。また、本発明はタスクスイッチの制御方法に関する
ものである。
【0002】
【従来の技術】マルチタスキング機能を備えたマイクロ
コントローラが知られている。この種のマイクロコント
ローラに内蔵された単一のプロセッサは、複数のタスク
をシーケンシャルに実行する。そのため、タスクスイッ
チを要求するタイマ割り込みをタスクタイマが定期的に
発行する。このタイマ割り込みをプロセッサが受理する
たびに、オペレーティングシステム(OS)内の割り込
み処理ルーチンが起動され、該割り込み処理ルーチンが
タスクスケジューリングと資源の退避及び復帰とを行
う。
【0003】
【発明が解決しようとする課題】上記従来のマイクロコ
ントローラは、割り込み処理ルーチンでタスクスケジュ
ーリングを行っていたことから、タスクスイッチにおけ
るオーバーヘッドが大きく、マイクロコントローラの実
質的な稼働率が低下するという問題があった。これは、
特に画像データのエンコードのようなリアルタイム性を
重視するアプリケーションにおいて深刻な問題である。
【0004】本発明の目的は、マイクロコントローラに
おける高速のタスクスイッチを実現することにある。
【0005】本発明の他の目的は、マイクロコントロー
ラが複数のハードウェアエンジンを制御するように構成
されたデータ処理システムにおいて、該マイクロコント
ローラにおける高速のタスクスイッチを実現することに
ある。
【0006】本発明の更に他の目的は、高速のタスクス
イッチを実現するためのタスクスイッチの制御方法を提
供することにある。
【0007】
【課題を解決するための手段】上記目的を達成するた
め、本発明のマイクロコントローラは、割り込み処理ル
ーチンでタスクスイッチを制御するのではなくて、当該
マイクロコントローラ中のプロセッサが複数のハードウ
ェアエンジンと協働してかつプログラムされた命令に従
って複数のタスクをシーケンシャルに実行し、かつ複数
のタスクがそれぞれ対応するハードウェアエンジンに割
り当てられた環境下で、その割り当てを表す情報に基づ
いてハードウェアスケジューラでタスクスイッチを制御
することとしたものである。複数のハードウェアエンジ
ンの各々は、プロセッサによる起動に従ってデータ処理
の実行を開始し、かつ該データ処理の実行が終了すると
スケジューラに対して実行終了を知らせる。スケジュー
ラは、いずれかのハードウェアエンジンの実行終了を検
出した場合には、プロセッサにタスクスイッチをさせ
る。しかも、複数のタスクの処理を、その内容に応じ
て、プロセッサによりシーケンシャルに実行される部分
と、複数のハードウェアエンジンにより実行される部分
とに分割する構成とした。複数のハードウェアエンジン
の中には時間的にクリティカルな処理を実行するもの
と、そうでないものとがある。本発明によれば、このよ
うな複数のハードウェアエンジンの間の関係が複数のタ
スクの各々の実行優先度に反映される結果、いずれのハ
ードウェアエンジンが時間的にクリティカルな処理を実
行するのかをタスクスイッチ時にあらためて判断するこ
となく、次に実行すべきタスクを短時間のうちに選択で
きる。つまり、タスクスイッチにおけるオーバーヘッド
が小さくなり、高速のタスクスイッチが実現される。
【0008】また、本発明のマイクロコントローラで
は、タスクタイマから定期的に発行される割り込みに応
答してタスクスイッチを行う時分割方式では無駄時間が
生じることに鑑み、各ハードウェアエンジンの実行終了
というイベントの発生に直ちに応答してタスクスイッチ
を行うイベントドリブン方式を採用した。複数のタスク
の各々は、実行待ちを表す第1のステート(READY
ステート)と、実行中を表す第2のステート(ACTI
VEステート)と、割り当てられたハードウェアエンジ
ンの実行終了待ちを表す第3のステート(SLEEPス
テート)とを有する。ACTIVEステートは、現在、
タスクがマイクロコントローラを使用している状態であ
り、そのタスクに割り当てられたハードウェアエンジン
の制御を行う。READYステートは、タスクがマイク
ロコントローラを使用可能な状態ではあるが、そのタス
クは選ばれておらず、選ばれるのを待っている状態であ
る。SLEEPステートは、割り当てられたハードウェ
アエンジンの実行終了を待っている状態であり、マイク
ロコントローラを使用可能でない状態である。割り当て
られたハードウェアエンジンの起動を終えたタスクは、
特定の命令(task_sleep命令)に応じて、A
CTIVEステートからSLEEPステートへ遷移す
る。あるハードウェアエンジンが実行終了したとき、該
ハードウェアエンジンに割り当てられたタスクはSLE
EPステートからREADYステートへ遷移し、実行中
のタスクはACTIVEステートからREADYステー
トへ遷移する。そして、READYステートにあるタス
クのうちで最も高い実行優先度を有するタスクが次に実
行すべきタスクとして選択され、該選択されたタスクが
READYステートからACTIVEステートへ遷移す
る。
【0009】複数のハードウェアエンジンの各々が互い
に独立した作業領域として使用する複数のレジスタファ
イルをマイクロコントローラの中に用意しておけば、タ
スクスイッチ時にはプログラムカウンタなどのプロセッ
サ資源のみを退避すればよく、タスクスイッチにおける
オーバーヘッドが更に小さくなる。複数のハードウェア
エンジンに共通の設定パラメータを記憶するためのレジ
スタファイルをマイクロコントローラの中に用意してお
いてもよい。
【0010】
【発明の実施の形態】図1は、本発明に係るデータ処理
システムの1つであるMPEG(Moving Picture Exper
ts Group)画像エンコーダの構成例を示している。図1
のエンコーダは、単一のマイクロコントローラ101
と、マクロブロックパイプラインを構成する5個のハー
ドウェアエンジン(以下、コアという。)111〜11
5と、3個のバッファメモリ116〜118とで構成さ
れている。5個のコアは、動き検出器(Motion Detecto
r:MD)111、動き補償器(Motion Compensator:
MC)112、離散コサイン変換器(Discrete Cosine
Transformer:DCT)113、量子化器(Quantizer:
Q)114及び可変長符号化器(Valiable LengthCode
r:VLC)115であって、マルチタスキング機能を
備えたマイクロコントローラ101によりそれぞれ制御
される。121はエンコードされるべき画像データ、1
22はエンコード結果を表す符号化データである。マイ
クロコントローラ101は、5個のコア111〜115
の各々へ起動信号123を供給し、かつ5個のコア11
1〜115の各々から終了信号124を受け取る。ま
た、マイクロコントローラ101は、信号線131〜1
35を介して5個のコア111〜115と個別に交信し
たり、信号線136を介して5個のコア111〜115
に共通のパラメータを与えたりすることができるように
なっている。
【0011】図2は、マイクロコントローラ101の詳
細構成を示している。マイクロコントローラ101は、
マルチタスキング機能を実現するためのタスクコントロ
ーラ201と、上記5個のコア111〜115の各々が
互いに独立した作業領域として使用する5個のコアレジ
スタファイル211〜215と、上記5個のコア111
〜115のうちの少なくとも2個のコアに共通の設定パ
ラメータを記憶するための1個の共通レジスタファイル
216と、タスクコントローラ201が作業領域として
使用する1個の汎用レジスタファイル217と、乗算器
221と、シフタ222と、算術論理演算ユニット(Ar
ithmetic and Logic Unit:ALU)223と、データ
メモリ224とを備えている。241はAバス、242
はBバス、243はCバス、231はこれらのバスとタ
スクコントローラ201とを接続するための信号線であ
る。タスクコントローラ201は、上記起動信号123
を供給し、かつ上記終了信号124を受け取る。レジス
タファイル211〜216の各々は、Cバス243と上
記信号線131〜136のうちの対応する信号線との間
に介在し、かつその各々の2出力がAバス241及びB
バス242にそれぞれ接続されている。汎用レジスタフ
ァイル217及びデータメモリ224の各々の入力はC
バス243に、その各々の2出力はAバス241及びB
バス242にそれぞれ接続されている。乗算器221、
シフタ222及びALU223の各々の2入力はAバス
241及びBバス242に、その各々の出力はCバス2
43にそれぞれ接続されている。なお、5個のコアレジ
スタファイル211〜215及び共通レジスタファイル
216の配設を省略して、上記信号線131〜136を
Cバス243から直接に引き出すようにしてもよい。
【0012】図1のMPEG画像エンコーダによれば、
16×16画素からなるマクロブロックを単位として画
像データ処理が進められる。まず、入力された画像デー
タ121に対してMDコア111で動きベクトルの候補
が求められる。これらの動きベクトルを用いてMCコア
112で画像の差分データが求められ、最適な動きベク
トルが選択される。選択された動きベクトルに対する差
分データは、DCTコア113で離散コサイン変換さ
れ、Qコア114で量子化され、求めた動きベクトルな
どのサイド情報とともにVLCコア115で可変長符号
化された後、符号化データ122として出力される。
【0013】図2を参照して詳細に説明すると、タスク
コントローラ201は、まず信号線231、ALU22
3及びCバス243を介してMDコアレジスタファイル
211に動作パラメータを設定し、起動信号123によ
りMDコア111を起動する。MDコア111は、MD
コアレジスタファイル211から信号線131を介して
動作パラメータを読み込むとともに、画像データ121
を入力する。MDコア111の実行が終了すると、求め
られた動きベクトルの候補が信号線131を介してMD
コアレジスタファイル211に書き込まれ、MDコア1
11から終了信号124が出力される。タスクコントロ
ーラ201は、この終了信号124を受け取ると、MD
コアレジスタファイル211から動きベクトルの候補を
読み出し、これに基づき乗算器221、シフタ222、
ALU223及び汎用レジスタファイル217を用いて
MCコア112のための動作パラメータを計算する。こ
の動作パラメータはMCコアレジスタファイル212に
設定され、起動信号123によりMCコア112が起動
される。MCコア112は、MCコアレジスタファイル
212から信号線132を介して動作パラメータを読み
込んだ後、画像の差分データを求める。MCコア112
の実行が終了すると、差分データの総和が信号線132
を介してMCコアレジスタファイル212に、画像の差
分データがバッファメモリ116にそれぞれ書き込ま
れ、MCコア112から終了信号124が出力される。
タスクコントローラ201は、この終了信号124を受
け取ると、MCコアレジスタファイル212から差分デ
ータの総和を読み出し、これに基づき乗算器221、シ
フタ222、ALU223及び汎用レジスタファイル2
17を用いて上記候補の中から最適な動きベクトルを選
択する。求められた動きベクトルに対応する差分データ
のアドレスがDCTコアレジスタファイル213に設定
され、起動信号123によりDCTコア113が起動さ
れる。DCTコア113は、DCTコアレジスタファイ
ル213に設定されたアドレスに基づいてバッファメモ
リ116から差分データを読み出し、これを離散コサイ
ン変換する。DCTコア113の実行が終了すると、離
散コサイン変換の結果がバッファメモリ117に書き込
まれ、DCTコア113から終了信号124が出力され
る。以下、Qコア114で量子化処理がなされ、その結
果がバッファメモリ118に書き込まれ、VLCコア1
15で可変長符号化処理がなされ、その結果が符号化デ
ータ122として出力される。なお、上記5個のコア1
11〜115のうちのいくつかのコアは、1マクロブロ
ックを処理する間に、マイクロコントローラ101と起
動信号123及び終了信号124のやりとりを複数回行
う。共通レジスタファイル216は、MPEG1とMP
EG2との切り替えのための共通パラメータを5個のコ
ア111〜115へ予め供給したり、動き評価モードを
指定するための共通パラメータをMDコア111及びM
Cコア112へ予め供給したりする際に用いられる。
【0014】図3は、タスクコントローラ201の詳細
構成を示している。タスクコントローラ201は、プロ
セッサ300と、タスク管理テーブル310と、スケジ
ューラ330とで構成されている。プロセッサ300
は、最大8個のタスクをシーケンシャルに実行すること
ができるRISC(Reduced Instruction Set Compute
r)型のプロセッサであって、命令アドレスを生成する
ためのプログラムカウンタ(PC)301と、一連の命
令からなるプログラムを格納するための命令メモリ30
2と、命令をデコードするための命令デコーダ303と
を備えている。各コアへの起動信号123は、命令デコ
ーダ303から供給される。また、命令デコーダ303
は、命令実行のための資源である上記乗算器221、シ
フタ222、ALU223などに信号線231を介して
接続されている。タスク管理テーブル310は、タスク
管理情報を記憶するための回路ブロックであって、タス
ク0からタスク7までの8個のタスクのそれぞれに対応
した8個のタスク管理レジスタファイル320〜327
を備えている。ここに、タスク管理情報は、複数のタス
クの各々の実行状況を表すステート情報(ST情報)
と、該複数のタスクの各々の実行優先度を表すプライオ
リティ情報(PRI情報)と、該複数のタスクの各々が
5個のコア111〜115のうちのいずれのコアに割り
当てられているかを表すコアID情報(CID情報)と
を含む。更に、タスク管理テーブル310は、プロセッ
サ300の資源すなわちPC301の内容を退避するた
めのタスク毎の領域を有する。この退避領域には、AL
U223(図2参照)の演算結果に係るフラグなども退
避される。スケジューラ330は、タスク管理テーブル
310に記憶されたタスク管理情報に基づいてプロセッ
サ300にタスクスイッチをさせるための回路ブロック
であって、ステートコントローラ331と、終了コア判
定ユニット332と、プライオリティエンコーダ333
と、セレクタ334とを備えている。終了コア判定ユニ
ット332は、5個のコア111〜115のうちのいず
れかのコアから終了信号124を受け取ったとき、実行
終了したコアに割り当てられたタスクを判定するための
ユニットである。この判定はタスク管理テーブル310
を参照して行われ、判定結果を表すタスク番号362が
ステートコントローラ331に知らされる。プライオリ
ティエンコーダ333は、次に実行すべきタスクを選択
するための回路ブロックである。この選択はタスク管理
テーブル310を参照して行われ、選択結果を表すタス
ク番号361がステートコントローラ331及びセレク
タ334に知らされる。ステートコントローラ331
は、タスク管理テーブル310の中のST情報を更新す
るための回路ブロックである。セレクタ334は、プロ
セッサ300への資源復帰を司る。
【0015】図4は、図1のMPEG画像エンコーダに
おけるコアとタスクとの対応関係を示している。マイク
ロコントローラ101は、ここでは6個のタスク400
〜405を実行する。タスク400は、下位階層の5個
のタスク401〜405を制御し、かつエンコード処理
の全体を管理するためのメインタスク(タスク0)であ
る。このメインタスク400が割り当てられるべきコア
は存在しない。タスク401は、割り当てられたMDコ
ア111を制御するための動き検出タスク(タスク1)
である。タスク402は、割り当てられたMCコア11
2を制御するための動き補償タスク(タスク2)であ
る。タスク403は、割り当てられたDCTコア113
を制御するための離散コサイン変換タスク(タスク3)
である。タスク404は、割り当てられたQコア114
を制御するための量子化タスク(タスク4)である。タ
スク405は、割り当てられたVLCコア115を制御
するための可変長符号化タスク(タスク5)である。
【0016】ここで、図4に示す少なくとも6個のタス
ク400〜405に係るタスク管理情報が図3中のタス
ク管理テーブル310に記憶されているものとする。図
3によれば、PRI情報はプライオリティ設定信号34
2に応じて、CID情報はコア設定信号343に応じて
それぞれ設定される。プライオリティ設定信号342は
命令デコーダ303がプライオリティ設定命令をデコー
ドした際に、コア設定信号343は命令デコーダ303
がコア設定命令をデコードした際にそれぞれ命令デコー
ダ303からタスク管理テーブル310へ供給される。
【0017】図5は、各タスクのステート遷移を示す概
念図である。タスクは、停止を表すSTOPステート
と、実行待ちを表すREADYステートと、実行中を表
すACTIVEステートと、割り当てられたコアの実行
終了待ちを表すSLEEPステートとを有する。ただ
し、タスク0にはSLEEPステートがない。リセット
直後のタスクはSTOPステートにある。STOPステ
ートにあるタスクは、task_ready命令により
READYステートへ遷移させられる(遷移501)。
READYステートにあるタスクは、タスクスイッチを
要求するイベントの発生時にスケジューラ330により
選択されると、ACTIVEステートへ遷移させられる
(遷移511)。この際、その時点までACTIVEス
テートにあったタスクは、スケジューラ330によりR
EADYステートへ遷移させられる(遷移522)。A
CTIVEステートにあるタスクは、プロセッサ300
により実行され、task_sleep命令によりSL
EEPステートへ遷移させられたり(遷移521)、t
ask_stop命令によりSTOPステートへ遷移さ
せられたり(遷移523)することができる。SLEE
Pステートにあるタスクは、割り当てられたコアの実行
終了によりREADYステートへ遷移させられる(遷移
531)。
【0018】ここで、図3のタスクコントローラ201
の詳細動作を説明する。命令デコーダ303がtask
_ready命令、task_sleep命令又はta
sk_stop命令をデコードすると、タスクスイッチ
が発生する。例えば、実行中のタスクにおいて該タスク
に割り当てられたコアのための動作パラメータの設定と
該コアの起動とを終えたタスクは、task_slee
p命令によりACTIVEステートからSLEEPステ
ートへ遷移させられる。また、5個のコア111〜11
5のうちのいずれかのコアが実行終了したときにもタス
クスイッチが発生する。タスクスイッチ時のタスクコン
トローラ201の動作シーケンスは、(1)スケジュー
ラの起動、(2)実行中のタスクの資源の退避、(3)
次に実行するタスクの選択、(4)退避されていた資源
の復帰である。
【0019】まず、命令に基づくタスクスイッチのシー
ケンスを説明する。
【0020】(A−1)スケジューラの起動 task_ready命令、task_sleep命令
又はtask_stop命令がデコードされると、命令
デコーダ303からステート変更信号341が出力され
る。ステート変更信号341はステートコントローラ3
31に入力される。その結果、スケジューラ330が起
動される。
【0021】(A−2)実行中のタスクの資源の退避 ステート変更信号341はタスク管理テーブル310に
も入力され、ST情報が更新される。同時にその時点ま
で実行されていたタスクのPC301の値が、信号線3
44を介してレジスタ管理テーブル310の中に退避さ
れる。
【0022】(A−3)次に実行するタスクの選択 プライオリティエンコーダ333は、タスク管理テーブ
ル310から信号線351を介してST情報を、信号線
352を介してPRI情報をそれぞれ受け取り、REA
DYステートにあるタスクのうちで最も高い実行優先度
を有するタスクを次に実行すべきタスクとして選択す
る。この選択の結果を表すタスク番号361は、ステー
トコントローラ331及びセレクタ334に知らされ
る。
【0023】(A−4)退避されていた資源の復帰 ステートコントローラ331は、タスク番号361に応
じたステート変更信号364をタスク管理テーブル31
0へ供給する。その結果、プライオリティエンコーダ3
33により選択されたタスクのST情報が、READY
ステートからACTIVEステートに更新される。セレ
クタ334は、タスク番号361で指定されたタスクの
PCをタスク管理テーブル310から信号線353を介
して読み出し、該PCを信号線363へ供給する。その
結果、次に実行すべきタスクのPCの値がプロセッサ3
00に設定され、該タスクの実行が開始する。
【0024】次に、コアの実行終了に基づくタスクスイ
ッチのシーケンスを説明する。
【0025】(B−1)スケジューラの起動 いずれかのコアが実行終了すると、終了コア判定ユニッ
ト332に終了信号124が入力される。終了コア判定
ユニット332は、いずれのコアが実行終了したかを終
了信号124に基づいて判定する。更に、終了コア判定
ユニット332は、信号線354を介してタスク管理テ
ーブル310の中のCID情報を読み出し、実行終了し
たコアにいずれのタスクが割り当てられているかを判定
する。この判定の結果を表すタスク番号362は、ST
情報から当該タスクがSLEEPステートにあることが
確認された場合に、ステートコントローラ331に知ら
される。その結果、スケジューラ330が起動される。
ステートコントローラ331は、タスク番号362に応
じたステート変更信号364をタスク管理テーブル31
0へ供給する。その結果、実行終了したタスクのST情
報が、SLEEPステートからREADYステートに更
新される。なお、実行終了したコアに割り当てられたタ
スクが存在しない場合には、スケジューラ330は起動
されない。
【0026】(B−2)実行中のタスクの資源の退避 更に、ステートコントローラ331は、その時点まで実
行されていたタスクのST情報がACTIVEステート
からREADYステートに更新されるように、ステート
変更信号364をタスク管理テーブル310へ供給す
る。同時にその時点まで実行されていたタスクのPC3
01の値がタスク管理テーブル310の中に退避され
る。
【0027】(B−3)次に実行するタスクの選択 プライオリティエンコーダ333は、タスク管理テーブ
ル310からST情報及びPRI情報を受け取り、RE
ADYステートにあるタスクのうちで最も高い実行優先
度を有するタスクを次に実行すべきタスクとして選択す
る。この選択の結果を表すタスク番号361は、ステー
トコントローラ331及びセレクタ334に知らされ
る。
【0028】(B−4)退避されていた資源の復帰 ステートコントローラ331は、タスク番号361に応
じたステート変更信号364をタスク管理テーブル31
0へ供給する。その結果、プライオリティエンコーダ3
33により選択されたタスクのST情報が、READY
ステートからACTIVEステートに更新される。セレ
クタ334は、タスク番号361で指定されたタスクの
PCをタスク管理テーブル310から読み出し、該PC
をプロセッサ300へ供給する。その結果、次に実行す
べきタスクのPCの値がプロセッサ300に設定され、
該タスクの実行が開始する。
【0029】図6は、図1中の5個のコア111〜11
5によるマクロブロックパイプライン処理を示してい
る。パイプラインピッチは、各コアにおける1マクロブ
ロックの処理に要する時間の最大値に設定される。した
がって、個々のパイプラインピッチ期間において他のコ
アより早く実行終了するコアが存在するという特性があ
る。ここに、アイドル時間が生じる。しかも、アイドル
時間の長さが画像データに依存して変化するという特性
がある。図1の例では、これらの特性に適合したMPE
G画像エンコーダが、イベントドリブン方式のタスクス
イッチの採用により実現される。なお、個々のパイプラ
インピッチ期間におけるコアの起動回数は、そのコアで
行う処理の内容やデータによって異なる。例えば、DC
Tコア113は1パイプラインピッチ期間に1回起動さ
れる。MCコア112は、1マクロブロックのデータを
輝度成分と色差成分とに分け、各成分毎に処理を細分化
して実行するため、1パイプラインピッチ期間にデータ
に応じて複数回起動される。
【0030】図7は、図6中の破線で特定された一部期
間における3個のタスクの各々のステート遷移の具体例
を示している。タスク0はエンコード処理の全体を管理
するためのメインタスクであり、タスク1はMDコア1
11に割り当てられたタスクであり、タスク2はMCコ
ア112に割り当てられたタスクである(図4参照)。
これら3個のタスクのうちタスク1の実行優先度が最も
高く、タスク2の実行優先度が2番目に高く、タスク0
の実行優先度が最も低いものとする。また、時刻t0に
おいて、タスク1がACTIVEステートに、タスク0
及びタスク2がそれぞれREADYステートにあるもの
とする。
【0031】図7によれば、時刻t1〜t7の各々にお
いてタスクスイッチが発生する。図中のΔtは、1回の
タスクスイッチにおけるオーバーヘッドを表している。
順を追って説明すると、時刻t1より前に、タスク1は
MDコア111を起動する。そして、時刻t1にtas
k_sleep命令によりタスク1がACTIVEステ
ートからSLEEPステートへ遷移する。この時点では
タスク0及びタスク2がREADYステートにあり、タ
スク2の実行優先度がタスク0の実行優先度より高いの
で、タスク2がREADYステートからACTIVEス
テートへ遷移する。タスク2はMCコア112を起動す
る。そして、時刻t2にtask_sleep命令によ
りタスク2がACTIVEステートからSLEEPステ
ートへ遷移する。この時点ではタスク0のみがREAD
Yステートにあるので、タスク0がREADYステート
からACTIVEステートへ遷移する。そして、時刻t
3にMCコア112の実行終了によりタスク2がSLE
EPステートからREADYステートへ遷移する。これ
に伴い、その時点までACTIVEステートにあったタ
スク0がREADYステートへ遷移する。この時点では
タスク0及びタスク2がREADYステートにあり、タ
スク2の実行優先度がタスク0の実行優先度より高いの
で、タスク2がREADYステートからACTIVEス
テートへ遷移する。タスク2はMCコア112を再起動
する。そして、時刻t4にtask_sleep命令に
よりタスク2がACTIVEステートからSLEEPス
テートへ遷移する。この時点ではタスク0のみがREA
DYステートにあるので、タスク0がREADYステー
トからACTIVEステートへ遷移する。そして、時刻
t5にMDコア111の実行終了によりタスク1がSL
EEPステートからREADYステートへ遷移する。こ
れに伴い、その時点までACTIVEステートにあった
タスク0がREADYステートへ遷移する。この時点で
はタスク0及びタスク1がREADYステートにあり、
タスク1の実行優先度がタスク0の実行優先度より高い
ので、タスク1がREADYステートからACTIVE
ステートへ遷移する。そして、時刻t6にMCコア11
2の実行終了によりタスク2がSLEEPステートから
READYステートへ遷移する。これに伴い、その時点
までACTIVEステートにあったタスク1がREAD
Yステートへ遷移する。この時点ではタスク0、タスク
1及びタスク2がREADYステートにあり、タスク1
の実行優先度がタスク0及びタスク2の各々の実行優先
度より高いので、タスク1がREADYステートからA
CTIVEステートへ戻る。タスク1はMDコア111
を再起動する。そして、時刻t7にtask_slee
p命令によりタスク1がACTIVEステートからSL
EEPステートへ遷移する。この時点ではタスク0及び
タスク2がREADYステートにあり、タスク2の実行
優先度がタスク0の実行優先度より高いので、タスク2
がREADYステートからACTIVEステートへ遷移
する。
【0032】従来の割り込み処理ルーチンを用いた時分
割方式のタスクスイッチを採用した場合の1回のタスク
スイッチにおけるオーバーヘッドは10数マシンサイク
ルにもなるが、本発明に係るイベントドリブン方式のタ
スクスイッチを採用した場合の図7中のオーバーヘッド
Δtは数マシンサイクルですむ。図6中の個々のマクロ
パイプラインピッチ期間において最大20数回のタスク
スイッチが発生することを考えると、両方式間のオーバ
ーヘッドの差は更に大きくなる。本発明によるオーバー
ヘッドの短縮は、パイプラインピッチの短縮をも可能に
する。つまり、画像データの高速エンコードが達成可能
になるのである。
【0033】以上のとおり、図1のMPEG画像エンコ
ーダでは高速のタスクスイッチが実現される。また、時
間的にクリティカルな処理を実行するタスクに高い実行
優先度を設定しておくことで、正常な画像エンコード処
理を保証できる。しかも、いずれかのコアが実行終了し
たとき、該実行終了したコアに割り当てられたタスクの
ステートと、その時点まで実行中であったタスクのステ
ートとをいずれもREADYステートに変更したうえ
で、READYステートにある全てのタスクのうちで最
も高い実行優先度を有するタスクを次に実行すべきタス
クとして選択することとしたので、プライオリティエン
コーダ333の内部構成が簡略化される。更に、各タス
ク毎にプログラムを独立して記述することができるの
で、プログラミングが効率化され、デバッグにも有利で
ある。
【0034】なお、本発明は画像デコーダなどの他のデ
ータ処理システムにも適用可能である。上記の例では全
てのハードウェアエンジン(コア)にタスクを1個ずつ
割り当てたが、タスクが割り当てられないコアがあって
もよいし、複数個のタスクを1個のコアに割り当てても
よい。1個のタスクが複数個のコアに同時に割り当てら
れることはない。
【0035】
【発明の効果】以上説明してきたとおり、本発明によれ
ば、複数のタスクがそれぞれ対応するハードウェアエン
ジン(コア)に割り当てられた環境下で、その割り当て
を表す情報に基づいてハードウェアスケジューラでタス
クスイッチを制御することとしたので、高速のタスクス
イッチを実現することができる。
【図面の簡単な説明】
【図1】本発明に係るMPEG画像エンコーダの構成例
を示すブロック図である。
【図2】図1中のマイクロコントローラの詳細構成を示
すブロック図である。
【図3】図2中のタスクコントローラの詳細構成を示す
ブロック図である。
【図4】図1のエンコーダにおけるコアとタスクとの対
応関係を示す概念図である。
【図5】図1のエンコーダにおけるタスクのステート遷
移を示す概念図である。
【図6】図1中の5個のコアによるマクロブロックパイ
プライン処理を示すタイミング図である。
【図7】図6中の一部期間における3個のタスクの各々
のステート遷移の具体例を示すタイミング図である。
【符号の説明】 101 マイクロコントローラ 111 動き検出器(MDコア) 112 動き補償器(MCコア) 113 離散コサイン変換器(DCTコア) 114 量子化器(Qコア) 115 可変長符号化器(VLCコア) 116〜118 バッファメモリ 201 タスクコントローラ 211〜215 コアレジスタファイル 216 共通レジスタファイル 300 プロセッサ 310 タスク管理テーブル 330 スケジューラ 331 ステートコントローラ 332 終了コア判定ユニット 333 プライオリティエンコーダ
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平6−28323(JP,A) インターフェース1995年1月号(CQ 出版社)、p.134〜146 National Technica l Report、Vol.40、No. 6(1994年12月)、p.122〜128(JI CST資料番号:G0474A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/46 G06F 15/16 G06F 9/38 G06T 1/00 H04N 7/24 JICSTファイル(JOIS) CSDB(日本国特許庁)

Claims (16)

    (57)【特許請求の範囲】
  1. 【請求項1】 複数のハードウェアエンジンと協働し
    て、かつプログラムされた命令に従って、複数のタスク
    をシーケンシャルに実行するためのプロセッサと、 前記複数のタスクの各々の実行状況を表すステート情報
    と、前記複数のタスクの各々の実行優先度を表すプライ
    オリティ情報と、前記複数のタスクの各々がいずれのハ
    ードウェアエンジンに割り当てられているかを表す割り
    当て情報とを含むタスク管理情報を記憶するためのタス
    ク管理テーブルと、 前記タスク管理情報に基づいて前記プロセッサにタスク
    スイッチをさせるためのスケジューラとを備え 前記複数のハードウェアエンジンの各々は、前記プロセ
    ッサによる起動に従ってデータ処理の実行を開始し、か
    つ該データ処理の実行が終了すると前記スケジューラに
    対して実行終了を知らせ、 前記スケジューラは、いずれかのハードウェアエンジン
    の実行終了を検出した場合には前記プロセッサにタスク
    スイッチをさせ、 前記複数のタスクの処理を、その内容に応じて、前記プ
    ロセッサによりシーケンシャルに実行される部分と、前
    記複数のハードウェアエンジンにより実行される部分と
    に分割する構成とした ことを特徴とするマイクロコント
    ローラ。
  2. 【請求項2】 請求項1記載のマイクロコントローラに
    おいて、 前記複数のタスクの各々は、実行待ちを表す第1のステ
    ートと、実行中を表す第2のステートと、割り当てられ
    たハードウェアエンジンの実行終了待ちを表す第3のス
    テートとを有することを特徴とするマイクロコントロー
    ラ。
  3. 【請求項3】 請求項2記載のマイクロコントローラに
    おいて、 前記プロセッサは、実行中のタスクにおいて該タスクに
    割り当てられたハードウェアエンジンを起動した後に特
    定の命令をデコードしたとき、該タスクのステートを前
    記第2のステートから前記第3のステートへ変更するよ
    うに前記ステート情報を更新する機能を有することを特
    徴とするマイクロコントローラ。
  4. 【請求項4】 請求項2記載のマイクロコントローラに
    おいて、 前記スケジューラは、 いずれかのハードウェアエンジンが実行終了したとき、
    該ハードウェアエンジンに割り当てられたタスクを前記
    タスク管理情報に基づいて判定するための判定ユニット
    と、 前記判定ユニットにより起動されたとき、前記判定され
    たタスクのステートを前記第3のステートから前記第1
    のステートへ変更するように前記ステート情報を更新す
    る機能を有するステートコントローラとを備えたことを
    特徴とするマイクロコントローラ。
  5. 【請求項5】 請求項4記載のマイクロコントローラに
    おいて、 前記ステートコントローラは、前記判定ユニットにより
    起動されたとき、実行中のタスクのステートを前記第2
    のステートから前記第1のステートへ変更するように前
    記ステート情報を更新する機能を更に有することを特徴
    とするマイクロコントローラ。
  6. 【請求項6】 請求項2記載のマイクロコントローラに
    おいて、 前記スケジューラは、前記タスク管理情報に基づき、前
    記第1のステートにあるタスクのうちで最も高い実行優
    先度を有するタスクを次に実行すべきタスクとして選択
    するためのプライオリティエンコーダを更に備えたこと
    を特徴とするマイクロコントローラ。
  7. 【請求項7】 請求項6記載のマイクロコントローラに
    おいて、 前記ステートコントローラは、前記プライオリティエン
    コーダにより選択されたタスクのステートを前記第1の
    ステートから前記第2のステートへ変更するように前記
    ステート情報を更新する機能を更に有することを特徴と
    するマイクロコントローラ。
  8. 【請求項8】 請求項1記載のマイクロコントローラに
    おいて、 前記タスク管理テーブルは、前記タスクスイッチの時点
    より前に実行されていたタスクに係る前記プロセッサの
    資源を退避するための領域を有することを特徴とするマ
    イクロコントローラ。
  9. 【請求項9】 請求項1記載のマイクロコントローラに
    おいて、 前記複数のハードウェアエンジンの各々が互いに独立し
    た作業領域として使用する複数のレジスタファイルを更
    に備えたことを特徴とするマイクロコントローラ。
  10. 【請求項10】 請求項1記載のマイクロコントローラ
    において、 前記複数のハードウェアエンジンのうちの少なくとも2
    個のハードウェアエンジンに共通の設定パラメータを記
    憶するためのレジスタファイルを更に備えたことを特徴
    とするマイクロコントローラ。
  11. 【請求項11】 各々データ処理を実行するための複数
    のハードウェアエンジンと、 前記複数のハードウェアエンジンを制御するためのマイ
    クロコントローラとを備えたデータ処理システムであっ
    て、 前記マイクロコントローラは、 前記複数のハードウェアエンジンと協働して、かつプロ
    グラムされた命令に従って、複数のタスクをシーケンシ
    ャルに実行するためのプロセッサと、 前記複数のタスクの各々の実行状況を表すステート情報
    と、前記複数のタスクの各々の実行優先度を表すプライ
    オリティ情報と、前記複数のタスクの各々がいずれのハ
    ードウェアエンジンに割り当てられているかを表す割り
    当て情報とを含むタスク管理情報を記憶するためのタス
    ク管理テーブルと、 前記タスク管理情報に基づいて前記プロセッサにタスク
    スイッチをさせるためのスケジューラとを備え 前記複数のハードウェアエンジンの各々は、前記プロセ
    ッサによる起動に従ってデータ処理の実行を開始し、か
    つ該データ処理の実行が終了すると前記スケジューラに
    対して実行終了を知らせ、 前記スケジューラは、いずれかのハードウェアエンジン
    の実行終了を検出した場合には前記プロセッサにタスク
    スイッチをさせ、 前記複数のタスクの処理を、その内容に応じて、前記プ
    ロセッサによりシーケンシャルに実行される部分と、前
    記複数のハードウェアエンジンにより実行される部分と
    に分割する構成とした ことを特徴とするデータ処理シス
    テム。
  12. 【請求項12】 請求項11記載のデータ処理システム
    において、 前記複数のタスクの各々は、実行待ちを表す第1のステ
    ートと、実行中を表す第2のステートと、割り当てられ
    たハードウェアエンジンの実行終了待ちを表す第3のス
    テートとを有することを特徴とするデータ処理システ
    ム。
  13. 【請求項13】 請求項11記載のデータ処理システム
    において、 前記複数のハードウェアエンジンは、各々MPEG画像
    データのエンコードのための部分処理コアであることを
    特徴とするデータ処理システム。
  14. 【請求項14】 少なくとも1つのタスクがそれぞれ対
    応するハードウェアエンジンに割り当てられ、その割り
    当てを表す情報に基づいてスケジューラでタスクスイッ
    チを制御するタスクスイッチの制御方法であって、各タスクの処理をその内容に応じて、プロセッサにより
    シーケンシャルに実行される部分と、複数のハードウェ
    アエンジンにより実行される部分とに分割し、 各ハードウェアエンジンは、前記プロセッサによる起動
    に従ってデータ処理の実行を開始し、かつ該データ処理
    の実行が終了すると前記スケジューラに対して実行終了
    を知らせ、 タスクは、実行待ちを表す第1のステートと、実行中
    を表す第2のステートと、割り当てられたハードウェア
    エンジンの実行終了待ちを表す第3のステートとを有
    し、前記スケジューラは、いずれかの ハードウェアエンジン
    が実行終了したとき、前記プロセッサにタスクスイッチ
    をさせるように、実行終了したハードウェアエンジンに
    割り当てられたタスクのステートを前記第3のステート
    から前記第1のステートへ変更することを特徴とするタ
    スクスイッチの制御方法。
  15. 【請求項15】 請求項14記載のタスクスイッチの制
    御方法において、 ハードウェアエンジンが実行終了したとき、実行中のタ
    スクのステートを前記第2のステートから前記第1のス
    テートへ変更することを特徴とするタスクスイッチの制
    御方法。
  16. 【請求項16】 複数のハードウェアエンジンと協働し
    て、かつプログラムされた命令に従って、複数のタスク
    をシーケンシャルに実行するためのプロセッサと、 前記複数のタスクの各々の実行状況を表すステート情報
    と、前記複数のタスクの各々の実行優先度を表すプライ
    オリティ情報と、前記複数のタスクの各々がいずれのハ
    ードウェアエンジンに割り当てられているかを表す割り
    当て情報とを含 むタスク管理情報を記憶するためのタス
    ク管理テーブルと、 前記タスク管理情報に基づいて前記プロセッサにタスク
    スイッチをさせるためのスケジューラと、 前記複数のハードウェアエンジンのうちの少なくとも2
    個のハードウェアエンジンに共通の設定パラメータを記
    憶するためのレジスタファイルとを備えたことを特徴と
    するマイクロコントローラ。
JP23805798A 1997-09-01 1998-08-25 マイクロコントローラ、データ処理システム及びタスクスイッチの制御方法 Expired - Fee Related JP3007612B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP23805798A JP3007612B2 (ja) 1997-09-01 1998-08-25 マイクロコントローラ、データ処理システム及びタスクスイッチの制御方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP9-235625 1997-09-01
JP23562597 1997-09-01
JP23805798A JP3007612B2 (ja) 1997-09-01 1998-08-25 マイクロコントローラ、データ処理システム及びタスクスイッチの制御方法

Publications (2)

Publication Number Publication Date
JPH11134203A JPH11134203A (ja) 1999-05-21
JP3007612B2 true JP3007612B2 (ja) 2000-02-07

Family

ID=26532242

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23805798A Expired - Fee Related JP3007612B2 (ja) 1997-09-01 1998-08-25 マイクロコントローラ、データ処理システム及びタスクスイッチの制御方法

Country Status (1)

Country Link
JP (1) JP3007612B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4058752B2 (ja) 2001-12-11 2008-03-12 日本電気株式会社 携帯情報端末装置
KR101160640B1 (ko) * 2003-12-30 2012-06-28 삼성전자주식회사 데이터 처리 시스템 및 데이터 처리 방법
KR100705955B1 (ko) 2004-12-30 2007-04-11 지멘스 오토모티브 주식회사 자동차의 엔진 제어 방법
KR100705956B1 (ko) 2004-12-30 2007-04-11 지멘스 오토모티브 주식회사 자동차의 엔진 제어 방법
CN1940858B (zh) * 2005-09-26 2011-06-15 深圳市朗科科技股份有限公司 媒体播放装置上实现多任务的方法
JP4610523B2 (ja) * 2006-06-13 2011-01-12 Okiセミコンダクタ株式会社 動画処理装置
JP4991453B2 (ja) * 2007-08-30 2012-08-01 キヤノン株式会社 符号化処理装置、符号化処理システム及び符号化処理装置の制御方法
JP5056600B2 (ja) * 2008-06-10 2012-10-24 富士通株式会社 画像復号装置
US9270999B2 (en) 2013-09-25 2016-02-23 Apple Inc. Delayed chroma processing in block processing pipelines
US9215472B2 (en) * 2013-09-27 2015-12-15 Apple Inc. Parallel hardware and software block processing pipelines

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
National Technical Report、Vol.40、No.6(1994年12月)、p.122〜128(JICST資料番号:G0474A)
インターフェース1995年1月号(CQ出版社)、p.134〜146

Also Published As

Publication number Publication date
JPH11134203A (ja) 1999-05-21

Similar Documents

Publication Publication Date Title
KR100526213B1 (ko) 마이크로 컨트롤러, 데이터처리 시스템 및 태스크 스위칭의제어방법
US6389446B1 (en) Multi-processor system executing a plurality of threads simultaneously and an execution method therefor
KR100649107B1 (ko) 실시간 동작 수행방법 및 시스템
US6360243B1 (en) Method, device and article of manufacture for implementing a real-time task scheduling accelerator
US6430593B1 (en) Method, device and article of manufacture for efficient task scheduling in a multi-tasking preemptive priority-based real-time operating system
JP3007612B2 (ja) マイクロコントローラ、データ処理システム及びタスクスイッチの制御方法
KR20050016170A (ko) 실시간 동작 수행방법 및 시스템
US7412590B2 (en) Information processing apparatus and context switching method
US5526521A (en) Method and system for process scheduling from within a current context and switching contexts only when the next scheduled context is different
KR20050030871A (ko) 실시간 동작 수행방법 및 시스템
JPWO2007029421A1 (ja) 情報処理装置
JP2003263331A (ja) マルチプロセッサシステム
US20060168430A1 (en) Apparatus and method for concealing switch latency
JPS5833586B2 (ja) 情報処理システム
JP2002530734A (ja) ジョブ並列プロセッサ
EP2282265A1 (en) A hardware task scheduler
JP2000207202A (ja) 制御装置およびデ―タ処理装置
CN1926514B (zh) 从处理器中的并发物理线程的数目中去耦合逻辑线程的数目
US5148542A (en) Multitask processing apparatus utilizing a central processing unit equipped with a micro-program memory which contains no software instructions
Lam et al. Performance guarantee for online deadline scheduling in the presence of overload
US20030074389A1 (en) Scheme for dynamic process network reconfiguration
JPH04172570A (ja) 画像信号のタスク分割並列処理方法
JPH07114518A (ja) マルチプロセッサシステムにおけるタスクスケジューリング方式
JP2570198B2 (ja) タイムスライスディスパッチングシステム
JPH02254544A (ja) マルチタスク型シーケンスプロセッサおよびその起動方法

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19991109

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

Free format text: PAYMENT UNTIL: 20071126

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20081126

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20091126

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20091126

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20101126

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20111126

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20121126

Year of fee payment: 13

LAPS Cancellation because of no payment of annual fees