(57)【要約】  データシフト機能及びデータ比較機能を備える複数ビットの記憶素子を１エントリとし、隣接エントリの対応するビット位置間でデータシフトが可能となるよう複数エントリを有する記憶素子アレイ（３３０）を有する。更に、複数エントリに共通に入力されるデータと該エントリを構成する記憶素子に保持される内容との比較結果に基づき、所定の優先度により複数エントリのうちの１エントリを識別する優先度判定回路（３４０）を有する。途中のエントリの保持データが無効になったときエントリ間でのデータシフトによって無効データのエントリが途中に存在しないようにでき、有効なデータを詰めて順次エントリに保持させることが可能になり、データが保持された時間順序をエントリの並びに一致させることが容易になる。エントリの時間順序が一意に保証されるから、ＣＡＭによる検索結果に対して時間順序に従った優先度も加味して所要のデータを識別することができる。
2007110906.tif 000002
【特許請求の範囲】
【請求項１】
データシフト機能及びデータ比較機能を備える複数ビットの記憶素子を１エントリとし、隣接エントリの対応するビット位置間でデータシフトが可能となるよう複数エントリを有する記憶素子アレイと、
前記複数エントリに共通に入力されるデータと該エントリを構成する記憶素子に保持される内容との比較結果に基づき、所定の優先度により複数エントリのうちの１エントリを識別する優先度判定回路と、を備えるデータ処理装置。
【請求項２】
前記所定の優先度は、有意のデータを保持するエントリ中においてデータ保持が行なわれた順番の早遅に関する順位とされる請求項１記載のデータ処理装置。
【請求項３】
データシフト機能及びデータ比較機能を備える複数ビットの記憶素子を１エントリとし、隣接エントリの対応するビット位置間で一方向にデータシフトが可能となるよう複数エントリを有する記憶素子アレイと、
前記エントリに新たなデータを保持させる操作指令に応答するとき、前記エントリに対する新たなデータ保持の時間的順序をエントリのデータシフト方向の配列とは逆方向に制御すると共に、エントリの保持データを無効化する操作指令に応答するとき、無効化されたエントリよりも時間的順序の上流側エントリのデータを無効化エントリ数分だけ下流側にデータシフトさせる制御回路と、
前記複数エントリに共通に入力される検索データと該エントリを構成する記憶素子に保持される被検索データとの比較結果に基づき、所定の優先度により複数エントリのうちの１エントリを識別する優先度判定回路と、を有し、
前記所定の優先度を、前記時間的順序における所定順位とするデータ処理装置。
【請求項４】
新たなデータ保持を可能とするエントリの位置を示す空きエントリ位置ポインタを有する請求項３記載のデータ処理装置。
【請求項５】
データシフト機能を備える複数ビットの記憶素子を１テーブルエントリとし、隣接テーブルエントリの対応するビット位置間で一方向にデータシフトが可能となるよう複数テーブルエントリを備えていて、前記テーブルエントリは前記記憶素子アレイのエントリに一対一対応されるデータテーブルを有し、
前記データテーブルエントリは前記記憶素子アレイのエントリに対するデータシフト動作に同期したデータシフト動作され、
前記データテーブルは前記優先度判定回路で識別された１エントリに対応するテーブルエントリが保有するデータを出力する請求項４記載のデータ処理装置。
【請求項６】
前記記憶素子アレイにおける被検索データとの比較結果を出力可能な拡張出力インタフェースと、前記記憶素子アレイにおける比較結果と論理積が採られる上位側比較結果を入力可能な拡張入力インタフェースとを有する請求項５記載のデータ処理装置。
【請求項７】
マルチタスク制御プログラムを実行可能なプロセッサユニットと、マルチタスク制御プログラムにより実行すべきタスクが割り当てられる複数の演算ユニットと、演算ユニットが実行すべきタスクの選択処理を行なうタスク管理ユニットとを有するデータ処理装置であって、
前記タスク管理ユニットは、データシフト機能及びデータ比較機能を備える複数ビットの記憶素子を１エントリとし、隣接エントリの対応するビット位置間で一方向にデータシフトが可能となるよう複数エントリを有する記憶素子アレイと、
前記エントリに新たなタスク管理情報を保持させる前記プロセッサユニットからの操作指令に応答するとき、前記エントリに対する新たなタスク管理情報保持の時間的順序をエントリのデータシフト方向の配列とは逆方向に制御すると共に、エントリの保持データを無効化する前記プロセッサユニットからの操作指令に応答するとき、無効化されたエントリよりも時間的順序の上流側エントリのデータを無効化エントリ数分だけ下流側にデータシフトさせる制御回路と、
前記複数エントリに共通に入力される検索データと該エントリを構成する記憶素子に保持される被検索データとの比較結果に基づき、所定の優先度により複数エントリのうちの１エントリを識別する優先度判定回路と、を有し、
前記所定の優先度を、前記時間的順序における所定順位とするデータ処理装置。
【請求項８】
前記タスク管理ユニットは、優先度判定回路で識別されたエントリが保持するタスク管理情報に含まれるタスクＩＤを前記プロセッサユニットに出力する請求項７記載のデータ処理装置。
【請求項９】
前記タスク管理ユニットは、データシフト機能を備える複数ビットの記憶素子を１テーブルエントリとし、隣接テーブルエントリの対応するビット位置間で一方向にデータシフトが可能となるよう複数テーブルエントリを備えていて、前記テーブルエントリは前記記憶素子アレイのエントリに一対一対応されるデータテーブルを有し、
前記データテーブルエントリは前記記憶素子アレイのエントリに対するデータシフト動作に同期したデータシフト動作され、
前記データテーブルは前記優先度判定回路で識別された１エントリに対応するテーブルエントリから前記タスクＩＤを出力する請求項８記載のデータ処理装置。
【請求項１０】
前記タスク管理ユニットは、新たなデータ保持を可能とするエントリの位置を示す空きエントリ位置ポインタを有する請求項９記載のデータ処理装置。
【請求項１１】
前記記憶素子アレイにおける被検索データとの比較結果を出力可能な拡張出力インタフェースと、前記記憶素子アレイにおける比較結果と論理積が採られる上位側比較結果を入力可能な拡張入力インタフェースとを有する請求項１０記載のデータ処理装置。
【請求項１２】
１個の半導体基板に形成されて成る請求項１、３又は７記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理装置に関し、特に複数のタスクを同時に実行可能なマルチタスク型データ処理装置における、タスク状態の管理方式、および実行開始可能なタスクの高速検索回路の実現に関する。
【背景技術】
【０００２】
近年、画像・音声などのマルチメディア処理機能や、有線および無線通信機能を内蔵したディジタル多用途ディスク（ＤＶＤ）レコーダ等のデータ処理装置が広く一般的に利用されるようになってきている。これらの機器においては、コーデック処理、無線プロトコル処理、ユーザインタフェース処理などの複数のタスクを同時かつリアルタイムに高速処理可能であることがその機器のユーザビリティや価値そのものに直結する。【０００３】
このような機器におけるマルチタスク制御は、一般に機器を制御する組み込みプロセッサに代表されるデータ処理装置上で所定のソフトウェアを実行することにより実現される。通常このソフトウェア（以下、タスク管理プログラム）はオペレーティングシステムの一部であり、実行タスクの切り替えタイミングを示す割り込みなどの所定の切り替え要因に呼応し、あらかじめ定義されたスケジューリングポリシーにしたがい、次に実行すべきタスクを選択する機能を備える。本来のデータ処理との対比においては処理オーバヘッドとなるマルチタスク制御には、とりわけ組み込みプロセッサのようにリアルタイム性、すなわち特定のタスクを起動する要因となるイベント入力に対するタスク実行開始までの応答時間の保証が必要となる。このため、データ処理装置の単純な高性能化だけではなく、タスク管理プログラムを効率的に実行する新たなマルチタスク制御の実装方式が求められている。【０００４】
マルチタスク制御を実現するタスク管理プログラムの処理について記載された文献の例として特許文献１、２がある。特許文献１には、アウトオブオーダ実行をサポートするマルチスレッドプロセッサのリザベーションステーション（命令バッファ）において、命令毎に付加されたスレッド番号と優先度を利用して命令実行の追い越を可能にする技術が記載される。特許文献２には、マルチストリームを処理するプロセッサにおいて、ストリーム毎のプライオリティに応じて計算リソースへのアクセスを制御することが記載され、プライオリティはオフチップ入力、ソフトウェア、又はハードウェアにより動的に変更可能とする技術が記載される。【０００５】
【特許文献１】特開２００４−２９５１９５号公報
【特許文献２】特表２００２−５３２８０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本願発明者は、マルチタスク制御を実現するタスク管理プログラムの処理内容を検討し、実行効率向上の観点から以下の解決すべき課題を見出した。【０００７】
前記の通り、タスク管理プログラムの備える機能の核となるのは、次に実行すべきタスクを実行開始可能な状態にあるタスク群から一つ選択する処理である。この選択処理は、スケジューリングポリシーに基づいた全てのタスクに対する一連の条件比較・判定処理を含む検索動作であり、本質的には並列実行可能である。これに対し、本処理を一般的なマイクロプロセッサ上で実行する実装方式では、タスク群に対し検索動作を逐次実行する必要があるため、タスク数の増加により処理速度が低下するだけでなく、タスク管理プログラムの処理時間の最悪値に基づくリアルタイム性を保証することが困難になる。本発明者は、生成されてプールされたタスクを実行するときの優先制御において、実行条件が整ったタスクに対してリアルタイム性を考慮するときタスク生成の時間順序を保証することの重要性を見出した。【０００８】
本発明の一つの目的は、データを選択するための条件比較判定処理の高速化と選択されるデータの時間順序を保証することができるデータ処理装置を提供することにある。【０００９】
本発明の別の目的は、高効率でリアルタイム性の高いマルチタスク制御を実現可能なデータ処理装置を提供することにある。【００１０】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。【００１２】
〔１〕本発明に係るデータ処理装置（１００）は、データシフト機能及びデータ比較機能を備える複数ビットの記憶素子（８００−０〜８００−ｍ）を１エントリとし、隣接エントリの対応するビット位置間でデータシフトが可能となるよう複数エントリ（３３３−０〜３３３−２５５）を有する記憶素子アレイ（３３０）を有する。更に、前記複数エントリに共通に入力されるデータと該エントリを構成する記憶素子に保持される内容との比較結果に基づき、所定の優先度により複数エントリのうちの１エントリを識別する優先度判定回路（３４０）を有する。【００１３】
上記手段によれば、各エントリは記憶素子単位でデータシフト機能及びデータ比較機能を備えるから、ＣＡＭ（Content Addressable Memory）としての連想記憶機能により並列比較が可能である。さらに、途中のエントリの保持データが無効になったときエントリ間でのデータシフトによって無効データのエントリが途中に存在しないようにでき、有効なデータを詰めて順次エントリに保持させることが可能になる。従って、新たに追加されるデータをシフト方向最後尾の空きエントリに保持させることにより、エントリの並びに従ってその保持データが追加された時間順序を一意に保証することを容易に実現することができる。エントリの時間順序を一意に保証することが容易であるから、ＣＡＭによる検索結果に対して時間順序に従った優先度も加味して所要のデータを識別することができる。【００１４】
本発明の一つの具体的な形態として、前記所定の優先度は、有意のデータを保持するエントリ中においてデータ保持が行なわれた順番の早遅に関する順位とされる。これにより、エントリを識別するために時間順序を考慮した優先制御を容易に実現することができる。【００１５】
〔２〕本発明に係るデータ処理装置（１００）は、データシフト機能及びデータ比較機能を備える複数ビットの記憶素子（８００−０〜８００−ｍ）を１エントリとし、隣接エントリの対応するビット位置間で一方向にデータシフトが可能となるよう複数エントリ（３３３−０〜３３３−２５５）を有する記憶素子アレイ（３００）を有する。更に、前記エントリに新たなデータを保持させる操作指令に応答するとき、前記エントリに対する新たなデータ保持の時間的順序をエントリのデータシフト方向の配列とは逆方向に制御すると共に、エントリの保持データを無効化する操作指令に応答するとき、無効化されたエントリよりも時間的順序の上流側エントリのデータを無効化エントリ数分だけ下流側にデータシフトさせる制御回路（３１０、３２０、３５０）を有する。更に、前記複数エントリに共通に入力される検索データと該エントリを構成する記憶素子に保持される被検索データとの比較結果に基づき、所定の優先度により複数エントリのうちの１エントリを識別する優先度判定回路（３４０）を備える。このとき、前記所定の優先度を、前記時間的順序における所定順位とする。【００１６】
上記手段によれば、各エントリは記憶素子単位でデータシフト機能及びデータ比較機能を備えるから、その連想記憶機能により並列比較が可能である。そして、途中のエントリの保持データが無効になったときエントリ間でのデータシフトによって無効データのエントリが途中に存在しないようにでき、有効なデータを詰めて順次エントリに保持させることが可能になるから、新たに追加されるデータをシフト方向最後尾の空きエントリに保持させることにより、エントリの並びに従ってその保持データが追加された時間順序を一意に保証することができる。エントリの時間順序を一意に保証することが容易であるから、ＣＡＭによる検索結果に対して時間順序に従った優先度も加味して所要のデータを識別することができる。それらにより、エントリを識別するために時間順序を考慮した優先制御を高速に且つ容易に行うことができる。【００１７】
本発明の別の具体的な形態として、新たなデータ保持を可能とするエントリの位置を示す空きエントリ位置ポインタ（３１８−８）を有する。データを保持させるエントリの追加とエントリが保持するデータのシフト動作に応じて当該ポインタに対するインクリメントとデクリメントを行なえばよい。【００１８】
本発明の更に別の具体的な形態として、データシフト機能を備える複数ビットの記憶素子を１テーブルエントリとし、隣接テーブルエントリの対応するビット位置間で一方向にデータシフトが可能となるよう複数テーブルエントリを備えていて、前記テーブルエントリが前記記憶素子アレイのエントリに一対一対応されているデータテーブル（３６０）を有する。前記データテーブルエントリは前記記憶素子アレイのエントリに対するデータシフト動作に同期したデータシフト動作される。前記データテーブルは前記優先度判定回路で識別された１エントリに対応するテーブルエントリが保有するデータを出力する。出力されたデータが連想検索によって得られた結果となる。【００１９】
本発明の更に別の具体的な形態として、前記記憶素子アレイにおける被検索データとの比較結果を出力可能な拡張出力インタフェース（３８０）と、前記記憶素子アレイにおける比較結果と論理積が採られる上位側比較結果を入力可能な拡張入力インタフェース（３７０）とを有する。記憶素子アレイを並列させて連想記憶の規模を大きくする拡張が可能になる。【００２０】
〔３〕本発明に係るデータ処理装置（１００）は、マルチタスク制御プログラムを実行可能なプロセッサユニット（２００）と、マルチタスク制御プログラムにより実行すべきタスクが割り当てられる複数の演算ユニット（４００−１〜４００−ｎ）と、演算ユニットが実行すべきタスクの選択処理を行なうタスク管理ユニット（３００）とを有する。前記タスク管理ユニットは、記憶素子アレイ（３３０）と、制御回路（３１０，３２０，３５０）と、優先度判定回路（３４０）とを有する。前記記憶素子アレイは、データシフト機能及びデータ比較機能を備える複数ビットの記憶素子を１エントリとし、隣接エントリの対応するビット位置間で一方向にデータシフトが可能となるよう複数エントリを有する。前記制御回路は、前記エントリに新たなタスク管理情報を保持させる前記プロセッサユニットからの操作指令に応答するとき、前記エントリに対する新たなタスク管理情報保持の時間的順序をエントリのデータシフト方向の配列とは逆方向に制御すると共に、エントリの保持データを無効化する前記プロセッサユニットからの操作指令に応答するとき、無効化されたエントリよりも時間的順序の上流側エントリのデータを無効化エントリ数分だけ下流側にデータシフトさせる。前記優先度判定回路は、前記複数エントリに共通に入力される検索データと該エントリを構成する記憶素子に保持される被検索データとの比較結果に基づき、所定の優先度により複数エントリのうちの１エントリを識別する。前記所定の優先度を、前記時間的順序における所定順位とする。データ処理装置は例えば１個の半導体基板に形成される。【００２１】
上記手段によれば、各エントリは記憶素子単位でデータシフト機能及びデータ比較機能を備えるから、その連想記憶機能によりタスク管理情報に対する並列比較が可能である。そして、途中のエントリのタスク管理情報が無効になったとき（対応タスクが実行完了されたとき）エントリ間でのデータシフトによって無効なタスク管理情報のエントリが途中に存在しないようにでき、有効なタスク管理情報を詰めて順次エントリに保持させることが可能になるから、新たに追加されるタスク管理情報をシフト方向最後尾の空きエントリに保持させることにより、エントリの並びに従ってタスク管理情報が追加された時間順序を一意に保証することができる。エントリの時間順序を一意に保証することが容易であるから、ＣＡＭによる検索結果に対して時間順序に従った優先度も加味して所要のデータを識別することができる。それらにより、時間順序を考慮したタスク選択の優先制御を高速に且つ容易に行うことができる。【００２２】
本発明の一つの具体的な形態として、前記タスク管理ユニットは、優先度判定回路で識別されたエントリが保持するタスク管理情報に含まれるタスクＩＤを前記プロセッサユニットに出力する。プロセッサユニットはそのタスクＩＤで特定されるタスクを空いている演算ユニットに処理させる。【００２３】
本発明の更に具体的な形態として、前記タスク管理ユニットは、データシフト機能を備える複数ビットの記憶素子を１テーブルエントリとし、隣接テーブルエントリの対応するビット位置間で一方向にデータシフトが可能となるよう複数テーブルエントリを備えていて、前記テーブルエントリが前記記憶素子アレイのエントリに一対一対応されているデータテーブルを有する。前記データテーブルエントリは前記記憶素子アレイのエントリに対するデータシフト動作に同期したデータシフト動作される。前記データテーブルは前記優先度判定回路で識別された１エントリに対応するテーブルエントリから前記タスクＩＤを出力する。
【発明の効果】
【００２４】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。【００２５】
すなわち、本発明に係るデータ処理装置によれば、データを選択するための条件比較判定処理の高速化と選択されるデータの時間順序を保証することができ、例えば、高効率でリアルタイム性の高いマルチタスク制御を実現可能である。
【図面の簡単な説明】
【００２６】
【図１】本発明によるデータ処理装置の一例を全体的に示すブロック図である。
【図２】マルチタスク制御用タスクプールの一例を示すフォーマット図である。
【図３】タスク管理プロセッサの一例を示すブロック図である。
【図４】主プロセッサインタフェースの一例を示すブロック図である。
【図５】タスク状態管理アレイの一例を示すブロック図である。
【図６】タスク状態管理エントリの一例を示すブロック図である。
【図７】タスク状態管理セルの第１の例を示すブロック図である。
【図８】タスク状態管理セルの第２の例を示すブロック図である。
【図９】図８の端子φＳＥ１、φＳＥ２の波形図である。
【図１０】主プロセッサにおけるタスク制御フローの前半を示すフローチャートである。
【図１１】主プロセッサにおけるタスク制御フローの後半を示すフローチャートである。
【図１２】図１１に示されるエントリ間シフトによるアレイ整列処理の具体例を示すフローチャートである。
【図１３】図１１に示される次タスク検索処理の具体例を示すフローチャートである。
【図１４】タスク管理プロセッサにおけるアレイ整列制御フローを示すフローチャートである。
【図１５】図１４に示されるアレイ更新処理の具体例を示すフローチャートである。
【符号の説明】
【００２７】
１００  データ処理装置
２００  主プロセッサ（プロセッサユニット）
３００  タスク管理プロセッサ（タスク管理ユニット）
４００−１〜４００−ｎ  演算ユニット
５００  内部バス
５１０  演算ユニット制御バス
６００  周辺モジュール
７００  主メモリインタフェース
７１０  主メモリ
ＴＩＤ−０〜ＴＩＤ−ｋ  タスクＩＤ
ＳＴ−０〜ＳＴ−ｋ  タスク状態
ＰＲＩ−０〜ＰＲＩ−ｋ  実行優先度
ＦＬＧ−０〜ＦＬＧ−ｋ  実行フラグ
３１０  主プロセッサインタフェース
３２０  アレイアクセス調停ユニット
３３０  タスク状態管理アレイ
３４０  優先度判定ユニット（優先度判定回路）
３５０  アレイ更新制御ユニット
３６０  タスクＩＤテーブル（データテーブル）
３７０，３８０  タスク管理プロセッサ拡張インタフェース
３１８  制御レジスタ
３１８−８  空きエントリポインタフィールド
３３０  タスク状態管理アレイ
３３２  エントリアクセス制御ユニット
３３３−０〜３３３−２５５  タスク状態管理エントリ
８００−０〜８００−ｍ  タスク状態管理セル
【発明を実施するための最良の形態】
【００２８】
以下、本発明に係るデータ処理装置の好適な一実施の形態について、添付図面を参照しながら説明する。特に制限されないが、以下に説明するデータ処理装置を構成する回路素子は、公知のＣＭＯＳトランジスタやバイポーラトランジスタ等の半導体集積回路技術によって、単結晶シリコンのような１個の半導体基板上に形成される。【００２９】
図１に、本発明によるデータ処理装置の一例が示す。データ処理装置１００は、主プロセッサ（プロセッサユニット）２００、タスク管理プロセッサ（タスク管理ユニット）３００、ｎ個の演算ユニット４００−１〜４００−ｎ、ｎ個のローカルメモリ４１０−１〜４１０−ｎ、ｎ本のローカルメモリバス４２０−１〜４２０−ｎ、内部バス５００、演算ユニット制御バス５１０、周辺モジュール６００、主メモリインタフェース７００、主メモリ７１０、主メモリバス７２０により構成される。【００３０】
主プロセッサ２００は、一般的なマイクロプロセッサと同様の固有の命令セットを備え、主メモリ７１０に格納されたマルチタスク制御プログラムを含む各種制御プログラム（図示せず）に従いデータ処理装置の動作を制御する。【００３１】
タスク管理プロセッサ３００は、主プロセッサ２００上で動作するマルチタスク制御プログラムと協調し、各タスクの状態を保持するとともに、タスク切り替え時に次に実行すべきタスクの選択処理を高速かつ一定時間で実行することにより、マルチタスク制御を効率化する。【００３２】
演算ユニット４００−１〜４００−ｎは、演算ユニット制御バス５１０を介して、主プロセッサ２００上で動作するマルチタスク制御プログラムが当該演算ユニットに対し実行タスクを割り当てたことを示す所定のタスク実行開始要求信号を受信すると、ローカルメモリ４１０−１〜４１０−ｎに格納された演算データをローカルメモリバス４２０−１〜４２０−ｎを経由して読み込み、所定の処理を実行し、演算結果を再びローカルメモリ４１０−１〜４１０−ｎに格納する一連の動作により、割り当てられたタスクを実行する。タスクの実行が完了すると、演算ユニット制御バス５１０を経由し、主プロセッサ２００に対する所定のタスク実行完了通知を送信する。【００３３】
内部バス５００は、主プロセッサ２００、タスク管理プロセッサ３００、演算ユニット４００−１〜４００−ｎ、ローカルメモリ４１０−１〜４１０−ｎ、周辺モジュール６００、主メモリインタフェース７００を相互に接続し、データ転送を制御する。【００３４】
周辺モジュール６００は、主メモリ７１０とローカルメモリ４１０−１〜４１０−ｎとの間のデータ転送を行うＤＭＡ転送機能や、タスク切り替えの基準時間とするタイマ機能、図示しない入出力装置の制御等の各種機能を備える。【００３５】
主メモリインタフェース７００は、主メモリインタフェース７２０を介して主メモリ７１０へのアクセスを制御する。なお、主メモリ７１０はデータ処理装置１００と同一チップであっても別々のチップであっても構わない。【００３６】
以下、データ処理装置１００におけるマルチタスク制御の概要について述べる。図２に、各タスクの状態を管理するマルチタスク制御用タスクプールの一例を示す。各タスクＴＡＳＫ０〜ＴＡＳＫｋの状態はタスク管理情報によって表される。図２においてタスク管理情報は、例えば、タスクＩＤ（ＴＩＤ−０〜ＴＩＤ−ｋ）、タスク状態（ＳＴ−０〜ＳＴ−ｋ）、実行優先度（ＰＲＩ−０〜ＰＲＩ−ｋ）、および実行フラグ（ＦＬＧ−０〜ＦＬＧ−ｋ）を含む。データ処理装置１００におけるタスク管理情報はタスク管理プロセッサ３００の内部に格納される。【００３７】
タスクＩＤは、各タスクを識別するため一意に割り当てられた符号である。タスク状態は、当該タスクが、（１）実行可能となる条件がすべて成立するのを待っている状態（Ｗａｉｔｉｎｇ）、（２）実行可能となる条件がすべて成立し実行開始許可を待っている状態（Ｒｅａｄｙ）、または（３）タスクを実行中であり実行完了を待っている状態（Ｒｕｎｎｉｎｇ）のいずれであるかを示す状態符号である。実行優先度は、当該タスク実行の緊急性を示す符号である。実行フラグは、特定ＩＤをもつタスクの実行完了や初期データの準備完了など、当該タスクの実行開始に必要な条件群の成立状態を示す。【００３８】
マルチタスク制御を実現するタスク管理プログラムは以下のように動作する。【００３９】
（１）新たにタスクを開始する場合、タスクＩＤおよび実行優先度を割り当てタスクプールに追加するとともに、当該タスクに対するタスク状態を“Ｗａｉｔｉｎｇ”に初期化し、すべての実行フラグをクリアする。【００４０】
（２）実行中のタスクが完了した、あるいは実行中のタスクの実行時間が所定の時間を超過したなど、タスク切り替えの必要なイベントが発生した場合、当該タスクを停止させタスクプールから削除する、またはタスク状態を“Ｒｕｎｎｉｎｇ”から“Ｒｅａｄｙ”に更新する。さらに、当該タスクの完了が他タスクの実行開始条件に指定されている場合には、実行フラグを適切に更新するとともに、実行フラグが全て成立したタスクのタスク状態を“Ｗａｉｔｉｎｇ”から“Ｒｅａｄｙ”に更新する。【００４１】
（３）タスク切り替え時、タスク状態が“Ｒｅａｄｙ”であるタスク群から、例えば最も実行優先度が高くかつ最も古くタスクプールに追加されたものなど所定のスケジューリングポリシーに基づき、次に実行すべきタスクを１つ選択する。さらに、選択したタスクに対し実行開始許可を通知するとともに、タスク状態を“Ｒｅａｄｙ”から“Ｒｕｎｎｉｎｇ”に更新する。【００４２】
これらの動作のうち、本発明が主眼とするリアルタイム性が求められるデータ処理装置においては、（３）のタスク切り替え時間が十分小さく、かつその最悪値が保証されていることが最も重要である。タスクプールをオフチップのメモリ７１又は周辺回路６００に含まれる図示を省略するオンチップメモリに格納し、タスク管理制御の全てを主プロセッサ２００のソフトウェアによって実装する場合には、タスク選択に必要なタスクプール内の検索に際しアクセス時間の大きい主メモリ等へのアクセス発生すること、タスクプールに保持されたタスク数に応じて検索時間が増大することにより、リアルタイム性を確保することが困難になる。これに対し、タスク管理プロセッサ３００は、タスク数によらない並列検索動作に加え、時間順序を保証とすることにより効率的なマルチタスク制御を可能とする回路であり、以下それによるタスク管理制御の詳細について説明する。【００４３】
図３に、タスク管理プロセッサ３００の一例を示す。タスク管理プロセッサ３００は、主プロセッサインタフェース３１０、アレイアクセス調停ユニット３２０、タスク状態管理アレイ３３０、優先度判定ユニット（優先度判定回路）３４０、アレイ更新制御ユニット３５０、タスクＩＤテーブル（データテーブル）３６０、及びタスク管理プロセッサ拡張インタフェース３７０、３８０を備える。主プロセッサインタフェース３１０、アレイアクセス調停ユニット３２０、及びアレイ更新制御ユニット３５０は主プロセッサ２００からの動作指令に応答して前記記憶素子アレイを用いたタスク管理制御を行う制御回路を構成する。３１１はアレイアクセス調停ユニット制御バス、３１２はタスク状態管理アレイ制御バス、３１３はタスク状態管理アレイ検索信号である。３１４、３１５はアレイ更新制御ユニット制御信号、３１６はタスクＩＤテーブル制御バスである。３２１−０〜３２１−２５５はタスク状態管理エントリ制御信号、３３１−０〜３３１−２５５はタスク状態管理エントリ比較信号である。３４１−０〜３４１−２５５、３７１−０〜３７１−２５５、３９１−０〜３９１−２５５、３９３−０〜３９３−２５５はタスク状態管理エントリ状態信号、３４２は優先度判定信号である、３５１、３８１、３９２、３９４は外部アレイ更新制御信号、３５２はアレイ更新制御信号３５２である。【００４４】
主プロセッサインタフェース３１０は、タスク管理プロセッサ３００の動作を定義する制御レジスタ群を内包し、内部バス５００およびタスク管理プロセッサ内ユニットとの間の制御レジスタアクセスを制御する。【００４５】
タスク状態管理アレイ３３０は、２５６個のタスク状態管理エントリを有し、ハードウェアにより構成されるタスクプールとして、タスク状態管理アレイ制御バス３１２を介して少なくとも各タスクのタスク状態および実行優先度を格納するとともに、タスク状態管理アレイ検索信号３１３の内容に応じてタスク状態管理エントリ比較信号３３１−０〜３３１−２５５を出力する。各タスク状態管理エントリはデータシフト機能とデータ比較機能とを備える複数ビットの記憶素子から成り、ＣＡＭとしての機能を備える。詳細は後述するが、各タスク状態管理エントリは更に、隣接するタスク状態管理エントリの対応するビット位置間でデータシフトが可能とされる。【００４６】
アレイアクセス調停ユニット３２０は、主プロセッサインタフェース３１０からのアレイアクセス調停ユニット制御バス３１１、およびアレイ更新制御ユニット３５０からのアレイ更新制御信号３５２を調停したアクセス制御信号に、上流側（図の左側）に隣接するタスク管理プロセッサ（図示せず）により出力されるタスク状態管理エントリ状態信号３９１−０〜３９１−２５５に基づいてタスク管理プロセッサ拡張インタフェース３７０により生成されるタスク状態管理エントリ状態信号３７１−０〜３７１−２５５を付加することで、タスク状態管理エントリ制御信号３２１−０〜３２１−２５５を出力する。要するに、アレイアクセス調停ユニット３２０は、タスク状態管理アレイ３３０の各タスク状態管理エントリに対するリード・ライトアクセスの制御を行う。その指示は主プロセッサインタフェース３１０、タスク管理プロセッサ拡張インタフェース３７０、アレイ更新制御ユニット３５０から与えられる。特に、アレイアクセス調停ユニット３２０はアレイ更新制御ユニット３５０からのエントリ更新指示に応答するときはタスク状態管理エントリ間のシフト動作のためのリード・ライト動作を制御する。【００４７】
優先度判定ユニット３４０は、前記のタスク状態管理エントリ比較信号３３１−０〜３３１−２５５のうち一致状態を示す比較信号から、例えばエントリ０（３３３−０）を最高優先度、エントリ２５５（３３３−２５５）を最低優先度とするなど、指定された所定の優先度に従い１つのエントリを選択し、選択されたエントリを識別する優先度判定信号３４２を出力する。さらに、優先度判定ユニット３４０は、タスク管理プロセッサ拡張インタフェース３８０が生成し、下流側（図の右側）に隣接するタスク管理プロセッサ（図示せず）に対して出力されるタスク状態管理エントリ状態信号３９３−０〜３９３−２５５の元となるタスク状態管理エントリ状態信号３４１−０〜３４１−２５５を出力する。タスク管理プロセッサ拡張インタフェース３８０は、下流側（図の右側）に隣接するタスク管理プロセッサ（図示せず）に対して、優先度判定ユニット３４０による判定結果を出力することができる。【００４８】
アレイ更新制御ユニット３５０は、外部アレイ更新制御信号３９４からタスク管理プロセッサ拡張インタフェース３８０により生成される外部アレイ更新制御信号３８１にアレイ更新要求がある場合、もしくは主プロセッサインタフェース３１０内の制御レジスタの設定を反映するアレイ更新制御ユニット制御信号３１４にアレイ更新要求がある場合、アレイ更新制御信号３５２を経由し、アレイアクセス調停ユニット３２０およびタスクＩＤテーブル３６０に対し、前記アレイ更新要求内容に基づくタスク状態管理エントリおよび対応するタスクＩＤのシフト処理を要求する。さらに、要求したシフト処理内容を反映する外部アレイ更新制御信号３５１をタスク管理プロセッサ拡張インタフェース３７０を介して外部アレイ更新制御信号３９２として出力するほか、アレイ更新制御ユニット制御信号３１５によりシフト処理実行の有無を主プロセッサインタフェース３１０に通知する。【００４９】
タスクＩＤテーブル３６０は、ハードウェアにより構成されるタスクプールとして、タスクＩＤテーブル制御バス３１６に従い、タスク状態管理アレイ３３０に格納された各タスクに対応するタスクＩＤを格納するとともに、優先度判定ユニット３４０が出力する優先度判定信号３４２に対応するタスクＩＤをタスクＩＤテーブル制御バス３１６に対し出力する。また、タスクＩＤテーブル３６０は、アレイ更新制御信号３５２によりエントリ間シフト処理が要求された場合、対応するタスクＩＤのシフト処理が行なわれる。即ち、図示は省略するが、タスクＩＤテーブル３６０は、データシフト機能を備える複数ビットの記憶素子を１テーブルエントリとし、隣接テーブルエントリの対応するビット位置間で一方向にデータシフトが可能となるよう複数テーブルエントリを備えている。タスク状態管理アレイ３３０のエントリとはビット数と比較機能を備えていない点が相違される。ＣＡＭ機能を備えていてもよく、その場合にはＣＡＭ機能を用いなければ良い。タスクＩＤテーブル３６０は、前記テーブルエントリが前記記憶素子アレイのエントリに一対一対応されている。前記タスクＩＤテーブル３６０のエントリ（データテーブルエントリ）は前記記憶素子アレイのエントリに対するデータシフト動作に同期したデータシフト動作される。前記タスクＩＤテーブル３６０は前記優先度判定ユニット３４０で識別された１エントリに対応するテーブルエントリが保有するタスクＩＤを出力する。【００５０】
タスク管理プロセッサ拡張インタフェース３７０、３８０は、タスク状態管理アレイの各タスク状態管理エントリから出力される比較信号３３１−０〜３３１−２５５に基づくタスク状態間リエントリ状態信号３４１−０〜３４１−２５５を隣接するタスク管理プロセッサの同一タスク状態管理エントリへと伝達するよう、もしくは必要により伝達しないよう制御する。さらに、タスク状態管理エントリのシフト動作を制御する外部アレイ更新制御信号３９４、３９２についても隣接するタスク管理プロセッサ間で伝達し、アレイ更新制御ユニット３５０によりタスク状態管理エントリの内容が隣接するタスク管理プロセッサ間で矛盾しないよう制御する。これにより、タスク管理プロセッサ３００を複数連結した場合に、各タスク状態管理アレイの同一タスク状態管理エントリを論理的に結合し、単一のエントリとして動作させることができるため、エントリのサイズをスケーラブルに変更することが可能となる。言うまでもなく、タスク管理プロセッサの連結機能が不要の場合には、タスク管理プロセッサ拡張インタフェース３７０、３８０、タスク状態管理エントリ状態信号３４１−０〜３４１−２５５、３７１−０〜３７１−２５５、３９１−０〜３９１−２５５、３９３−０〜３９３−２５５、外部アレイ更新制御信号３５１、３８１、３９２、３９４の一部または全部を削除することによりタスク管理プロセッサ３００のハードウェア規模を削減できる。前段からの前記タスク状態管理エントリ状態信号３９１−０〜３９１−２５５が前段における比較結果不一致を示すときは、タスク状態管理アレイ３３０における対応エントリによる比較結果の有効性を制限する信号として位置付けられる。【００５１】
図４に、主プロセッサインタフェース３１０の具体例を示す。主プロセッサインタフェース３１０は、制御レジスタアクセス制御ユニット３１７、制御レジスタ３１８、制御レジスタアクセスバス３１９により構成される。【００５２】
制御レジスタアクセス制御ユニット３１７は、内部バス５００からのアクセス要求に応答し、制御レジスタアクセスバス３１９を経由した制御レジスタ３１８、アレイアクセス調停ユニット制御バス３１１およびタスク状態管理アレイ制御バス３１２を経由したタスク状態管理アレイ３３０、タスクＩＤテーブル制御バス３１６を経由したタスクＩＤテーブル３６０に対するアクセスをそれぞれ制御する。さらに、制御レジスタ３１８の内容に応じ、タスク状態管理アレイ検索信号３１３、アレイ更新制御ユニット制御信号３１４を出力するとともに、アレイ更新制御ユニット制御信号３１５、優先度判定信号３４２の内容に応じ、制御レジスタ３１８の内容を更新する。【００５３】
制御レジスタ３１８は、タスク状態管理アレイ３３０に対する検索要求の有無を示す検索要求フィールド３１８−１、タスク状態管理アレイ３３０に対する検索キーとなる所定のタスク状態および実行優先度を含む符号列、もしくはタスク状態管理アレイ３３０内の空きエントリ位置を検索する所定の符号を格納する検索キーフィールド３１８−２、検索結果の有効性を示す検索結果有効フィールド３１８−３、検索結果が有効の場合に対応するタスクＩＤ、およびタスク状態管理アレイ３３０内のエントリ位置をそれぞれ格納するタスクＩＤフィールド３１８−４、エントリ位置フィールド３１８−５、アレイ更新制御ユニット３５０によるタスク状態管理エントリのシフト処理要求の有無を示すタスク状態管理アレイ更新要求フィールド３１８−６、前記シフト処理の内容、例えば“ＯＮＥＳＨＯＴ”（１回の要求に対し１回のシフトを実行する）または“ＦＵＬＬ”（１回の要求に対し最大（エントリ数−１）回のシフトを実行する）のいずれかを指定するタスク状態管理アレイ更新モードフィールド３１８−７、新規タスクを追加するタスク状態管理アレイ内のエントリ位置を示す空きエントリポインタフィールド（空きエントリ位置ポインタ）３１８−８、タスク管理プロセッサ３００の動作状態、例えば“ビジー”または“非ビジー”を示す動作状態フィールド３１８−９からなる。【００５４】
図５に、タスク状態管理アレイの具体例を示す。タスク状態管理アレイ３３０は、エントリアクセス制御ユニット３３２、２５６個のタスク状態管理エントリ３３３−０〜３３３−２５５、エントリ間シフトデータバス３３４−１〜３３４−２５５、エントリアクセスバス３３５から構成される。さらに、各タスク状態管理エントリは、当該エントリの内容が有効であるかどうかを示すイネーブルフィールド３３３−０−１〜３３３−２５５−１、当該エントリに格納されているタスク情報のうちタスク状態を示すタスク状態フィールド３３３−０−２〜３３３−２５５−２、および当該エントリに格納されているタスク情報のうち実行優先度を示す実行優先度フィールド３３３−０−３〜３３３−２５５−３を含む。【００５５】
エントリアクセス制御ユニット３３２は、タスク状態管理アレイ制御バス３１２から各タスク状態管理エントリ３３３−０〜３３３−２５５へのアクセスを中継する。それぞれエントリ番号０〜２５５をもつタスク状態管理エントリ３３３−０〜３３３−２５５は、タスク状態管理エントリ制御信号３２１−０〜３２１−２５５で指定される読み出し、書き込み、シフト動作などの要求に応じて当該エントリの内容をエントリアクセスバス３３５に出力する、もしくはエントリアクセスバス３３５上の所定のデータ、あるいはよりエントリ番号の大きい側の隣接エントリの内容を当該エントリに書き込むなどの動作（下流への１段シフト）を行う。また、タスク状態管理アレイ検索信号３１３上の検索要求および検索キーに従い、当該エントリの内容と検索キーの一致性を検査し、その結果をタスク状態管理エントリ比較信号３３１−０〜３３１−２５５に出力する。【００５６】
図６にタスク状態管理エントリの一例を示す。タスク状態管理エントリ３３３−１は、（ｍ＋１）個のタスク状態管理セル８００−０〜８００−ｍ、タスク状態管理セル比較信号８１０−０〜８１０−ｍ、タスク状態管理セル比較バス８１１、タスク状態管理エントリ比較ユニット８２０から構成される。ただし、図５に示すイネーブルフィールド３３３−１−１、タスク状態フィールド３３３−１−２、実行優先度フィールド３３３−１−３のビット幅の和はｍ＋１であるとする。また、特に制限されないが、タスク状態管理エントリ制御信号３２１−１は、エントリシフトイネーブル３２１−１−１、エントリアクセスイネーブル３２１−１−２、タスク状態管理エントリ状態信号３７１−１（図３参照）から生成される隣接アレイエントリマッチ信号３２１−１−３からなる。【００５７】
タスク状態管理セル８００−０〜８００−ｍは、それぞれ１ビットのシフトおよび比較機能つき記憶回路として動作し、以下の入出力端子を備える。
（１）ＳＥ：正論理で表現されるセルへのシフトイネーブル入力であり、エントリシフトイネーブル３２１−１−１を接続する。
（２）ＥＮ：正論理で表現されるタスク状態管理アレイ制御バス３１２を経由したセルへのアクセスイネーブル入力であり、エントリアクセスイネーブル３２１−１−２を接続する。
（３）ＳＩ：下位エントリからセルへのシフトデータ入力であり、エントリ間シフトデータバス３３４−２内の当該ビットに対応する信号を接続する。
（４）ＳＯ：上位エントリへのセルからのシフトデータ出力、すなわちセル内に保持されている１ビットデータそのものであり、エントリ間シフトデータバス３３４−１内の当該ビットに対応する信号へ接続する。
（５）ＬＳ、／ＬＳ：それぞれ正論理および負論理で表現されるタスク状態管理アレイ制御バス３１２を経由したセルへの書き込みデータ（書き込み動作時）またはセルからの読み出しデータ（読み出し動作時）であり、エントリアクセスバス３３５に含まれるロードストアデータフィールド内の当該ビットおよびその反転に対応する信号を接続する。
（６）ＳＫ、／ＳＫ：それぞれ正論理および負論理で表現されるセルへの検索キー入力であり、タスク状態管理アレイ検索信号３１３に含まれる検索キーフィールド内の当該ビットおよびその反転に対応する信号を接続する。また、特に制限されないが、セル内に保持されている１ビットデータの内容に関わらず検索キーとの比較結果が常に一致するよう、ＳＫ＝１かつ／ＳＫ＝１のような特殊な表現（比較マスク）を利用してもよい。
（７）ＣＢ：負論理で表現され、端子ＳＫへの入力とセル内に保持されている１ビットデータの比較結果を示すセルからの比較出力であり、タスク状態管理セル比較信号８１０−０〜８１０−ｍのうち当該ビットに対応する信号へ接続する。【００５８】
タスク状態管理セル比較バス８１１は、（ｍ＋１）個のタスク状態管理セル８００−０〜８００−ｍから出力されるタスク状態管理セル比較信号８１０−０〜８１０−ｍに対し、ワイヤードオアによる負論理表現での論理積演算を実行可能なように構成されたバスである。タスク状態管理エントリ比較ユニット８２０は、タスク状態管理セル比較バス８１１および隣接アレイエントリマッチ信号３２１−１−３がいずれも一致状態を示す場合にエントリ一致状態をタスク状態管理エントリ比較信号３３１−１に出力する。タスク状態管理エントリ比較ユニット８２０は、論理積回路として位置付けることができる。【００５９】
なお、タスク状態管理エントリ３３３−２〜３３３−２５４についても図６の符号を適切に対応付けることにより、その構成を適用することが可能である。また、タスク状態管理エントリ３３３−０、３３３−２５５は、それぞれシフトデータ出力ＳＯが未接続であること、シフトデータ入力ＳＩに適切な固定値（図示せず）が入力されている点を除き、図６の構成を適用可能である。【００６０】
以下、タスク状態管理セルの内部回路構成を説明する。図７にはタスク状態管理セルの第１の例を示し、図８にはタスク状態管理セルの第２の例を示す。ここで、各入出力端子の機能は図６内の対応する入出力端子のそれと一致する。ただし、図７における端子φは図１から図６には図示されていないデータ処理装置の動作クロック信号であり、図８の端子φＳＥ１、φＳＥ２は、図９に例示されるように、ＳＥ＝１かつ動作クロック信号φの立ち上がりエッジ、立ち下がりエッジであることを示す信号である。図７の第１の例においては、検索キー入力として（ＳＫ＝１かつ／ＳＫ＝０）または（ＳＫ＝０かつ／ＳＫ＝１）を設定可能であり、単純な一致比較のみ実行可能である。これに対して図８の第２の例では、上記に加え（ＳＫ＝１かつ／ＳＫ＝１）を設定可能であり、セル内に保持されている１ビットデータの内容に関わらず比較結果が常に一致する、比較マスク動作を実行可能である。【００６１】
ここで、データ処理装置１００においてマルチタスク制御を実行するにあたり、主プロセッサ２００上で動作するマルチタスク制御プログラムから、図３乃至図９で詳述したタスク管理プロセッサ３００を利用する際の要点を以下にまとめる。【００６２】
（１）タスク管理プロセッサ３００内には、タスクプールのうち少なくともタスクＩＤ、タスク状態、実行優先度が格納され、その内容は主プロセッサ２００により設定される。特に制限されないが、タスク状態は“Ｗａｉｔｉｎｇ”、“Ｒｅａｄｙ”、“Ｒｕｎｎｉｎｇ”のいずれか、実行優先度は０（最高）〜２５５（最低）のいずれかにより指定される。実行優先度は複数タスクに同一実行優先度が設定されて良いものとする。
（２）タスク状態管理アレイ３３０を構成し、シフト機能を有する２５６個のタスク状態管理エントリ３３３−０〜３３３−２５５は、各エントリにその情報を保持されたタスク間の時間順序を保証するＦｉｒｓｔ−Ｉｎ−Ｆｉｒｓｔ−Ｏｕｔ（ＦＩＦＯ）として動作するよう、エントリの利用順序が規定される。即ち、途中のタスク状態管理エントリ３３３−０〜３３３−２５５のタスク管理情報が無効になったときタスク状態管理エントリ間での下流への１段データシフトによって無効なタスク管理情報のタスク状態管理エントリが途中に存在しないようにでき、有効なタスク管理情報を詰めて順次タスク状態管理エントリに保持させることが可能になるから、新たに追加されるタスク管理情報をシフト方向最後尾の空きエントリに保持させることにより、タスク状態管理エントリの並びに従ってタスク管理情報が追加された時間順序を一意に保証することができる。
（３）タスク状態管理エントリ３３３−０〜３３３−２５５の優先度（エントリ優先度）は、ＦＩＦＯの出口に相当し時間順序の最も古い３３３−０が最も高く、３３３−２５５が最も低い。エントリ優先度はエントリ毎に相違され、実行優先度とは相違され、複数エントリについてその優先度が重複されることはない。
（４）特に制限されないが、タスク切り替え要因は以下の２つである。（４−ａ）タスクの完了：該当タスクのタスクＩＤ、タスク状態、実行優先度が格納されていたタスク状態管理エントリは無効化される。（４−ｂ）割り込みなどの所定の切り替え要因によるタスクの中断：該当タスクのタスク状態は“Ｒｕｎｎｉｎｇ”から“Ｒｅａｄｙ”に更新される。【００６３】
図１０及び図１１に、主プロセッサ２００上で動作するタスク管理プログラムによるタスク制御フローを示す。まず、ステップＦ１１０においてタスク管理プロセッサ３００の初期化として、全てのタスク状態管理エントリの無効化、および制御レジスタへの初期値の書き込みを行う。ただし、空きエントリポインタフィールド３１８−８にはエントリ０（３３３−０）を示す値０を書き込む。【００６４】
初期化が完了すると、タスク管理プログラムはタスク管理プロセッサ３００の状態を監視し（ステップＦ１２０）、タスク管理プロセッサ３００の状態が非ビジー状態になるまで待機する。タスク管理プロセッサ３００が非ビジー状態になると、タスクの追加および切り替え要求の有無により、それぞれ必要な処理を行う。タスクの追加要求を受理すると（ステップＦ１３０）、当該タスクに対しタスクＩＤおよび実行優先度を割り当て、空きエントリポインタフィールド３１８−８が示すタスク状態管理エントリおよび対応するタスクＩＤテーブル内のエントリの内容を更新する（ステップＦ１３１）とともに、空きエントリポインタフィールド３１８−８の内容をインクリメントする（ステップＦ１３２）。【００６５】
タスクの切り替え要求を受理した場合には（ステップＦ１４０）、その要因により処理内容が異なる（ステップＦ１５０）。まず、当該要求がタスク完了によるものである場合、完了したタスク情報の格納されているタスク状態管理エントリのイネーブルフィールドを無効化（ステップＦ１５１）、空きエントリポインタフィールド３１８−８をデクリメント（ステップＦ１５２）、前記無効化により生じたＦＩＦＯ内部の不整列状態を解消するアレイ整列処理（ステップＦ１５３）を順次実行する。また、当該要求がタスク完了でない所定のタスク中断要求である場合、実行中のタスクに対応するタスク情報のうちタスク状態を“Ｒｕｎｎｉｎｇ”から“Ｒｅａｄｙ”に更新する（ステップＦ１５４）。なお、エントリ更新処理（ステップＦ１５４）には、タスク状態管理アレイ更新要求フィールド３１８−６、およびタスク状態管理アレイ更新モードフィールド３１８−７に対する制御レジスタ書き込みによるアレイ整列要求（ステップＦ２１０）、およびアレイ整列処理完了までの待機（ステップＦ２２０）を含む。アレイ整列要求に対するタスク管理プロセッサの動作については、図１４及び図１５を用いて後述する。【００６６】
タスクの完了または中断処理が完了すると、次に実行すべきタスクを検索し（ステップＦ１５５）、実行可能なタスクが１つ選択された場合には（ステップＦ１６０）、当該タスクのタスク状態を“Ｒｅａｄｙ”から“Ｒｕｎｎｉｎｇ”に更新し（ステップＦ１６１）、タスクに対し実行許可を通知する。【００６７】
このうち、次タスク検索（ステップＦ１５５）の詳細は図１３に例示されるとおりである。まず、検索キーフィールド３１８−２に、次に実行対象となるタスクの候補を示す検索キー、例えばイネーブルフィールドが“有効”、かつタスク状態フィールドが“Ｒｅａｄｙ”、かつ実行優先度フィールドが“０（最高優先度）”を設定し（ステップＦ３１０）、検索要求フィールド３１８−１への書き込みによりタスク状態管理アレイ３３０内の検索を要求する（ステップＦ３２０）。検索結果有効フィールド３１８−３の内容が検索結果有効を示し、検索キーに適合する有効な次タスク情報が発見された場合（ステップＦ３３０）、タスクＩＤフィールド３１８−４およびエントリ位置フィールド３１８−５の内容を次に実行すべきタスクに対応するタスクＩＤ、エントリ番号として受理する（ステップＦ３３１）。有効な次タスクが発見されなかった場合は、検索キー内の実行優先度を２５５（最低優先度）まで順次インクリメントし、検索要求を繰り返す（ステップＦ３４０、Ｆ３４１）。【００６８】
ここで、タスク状態管理アレイ３３０内の検索要求（ステップＦ３２０）に応答するタスク管理プロセッサ３００は検索キーに従って検索を行ない、比較結果を受け取る３４０はその比較結果に対し、エントリ優先度の最も高いエントリを識別し、これをタスクＩＤテーブル３６０に与えることになる。要するに、タスク管理プロセッサ３００側では、エントリの時間順序を一意に保証することが容易であるから、ＣＡＭによる検索結果に対して時間順序に従った優先度も加味して所要のタスクＩＤを識別することができる。これにより、時間順序を考慮したタスク選択の優先制御を高速に且つ容易に行うことができる。【００６９】
なお、実行優先度のインクリメントおよび再検索要求については、前述のように主プロセッサがすべての実行優先度にわたり処理する方式のほか、所定の範囲の実行優先度のみ検索対象とする、あるいは主プロセッサ２００によらずタスク管理プロセッサ３００内で自動的に再検索を実行する方式を採用することにより、検索に要する時間および主プロセッサ２００の処理負荷を削減し、柔軟かつリアルタイム性の高いマルチタスク制御を実現することも可能である。【００７０】
続いて、図１４及び図１５を用いてタスク管理プロセッサにおけるアレイ整列制御フローについて説明する。アレイの整列とは、実行中のタスクが完了し、当該タスク情報がＦＩＦＯを構成するタスク状態管理アレイ内のタスク状態管理エントリから削除される場合に、隣接エントリをシフトすることにより有効エントリの不連続性を解消する処理である。これにより、タスク状態管理アレイ内での時間順序の保証が容易になる、有効なエントリが連続するため次にタスクを追加すべきエントリが一意に決定することなどにより、マルチタスク制御が単純化されるとともに、タスク切り替えに係る処理時間を削減できる。【００７１】
タスク管理プロセッサ３００が起動すると、通常は検索キーフィールド３１８−２の内容を含む検索キーをタスク状態管理アレイ検索信号３１３として出力し（ステップＦ４１０）、タスク管理プロセッサの動作状態を“非ビジー”状態に設定する（ステップＦ４１１）。その後、検索要求フィールド３１８−１を通して主プロセッサからの検索要求を受理した場合には、検索処理を実行しその結果に応じて検索結果有効フィールド３１８−３、タスクＩＤフィールド３１８−４、エントリ位置フィールド３１８−５の内容を更新する（ステップＦ３４０）。【００７２】
隣接するタスク管理プロセッサから外部アレイ更新制御信号３８１を受理すると（ステップＦ４２０）、アレイ更新制御ユニット３５０はプロセッサ動作状態を“ビジー”状態に更新し（ステップＦ４２１）、更新制御信号の内容に応じた信号をアレイ更新制御信号３５２に出力する。この信号を受けたアレイアクセス調停ユニット３２０は、シフト対象となるタスク状態管理エントリに対しエントリシフトイネーブルを経由してタスク状態管理アレイ３３０に対するシフト動作を要求し、シフト処理が実行される（ステップＦ４２２）。また、タスクＩＤテーブル３６０の内容についても、アレイ更新制御信号３５２に呼応しタスク状態管理アレイ３３０の内容と矛盾なく更新される。上記のシフト動作内容は、外部アレイ更新制御信号３５１により隣接プロセッサに対して通知する（ステップＦ４２３）ことにより、連結されている全てのタスク管理プロセッサ間で矛盾なくシフト動作が実行される。シフト動作が完了すると、プロセッサ動作状態を“非ビジー”状態に更新し後続の処理要求が入力されるのを監視する。【００７３】
ＣＰＵタスク管理プログラムのバグやノイズ等による誤動作によってエントリの時間順序が保証できなくなったとき、主プロセッサはアレイ整列要求を発行する。タスク状態管理アレイ更新要求フィールド３１８−６を介して主プロセッサからのアレイ整列要求を受理すると（ステップＦ４３０）、以下に詳述するアレイ更新処理（ステップＦ４３１）を実行する。図１５に例示されるように、まず、空きエントリを検索するため、イネーブルフィールドが“無効”、かつタスク状態フィールドおよび実行優先度フィールドがいずれも“比較マスク”である特殊な検索キーをタスク状態管理アレイ検索信号３１３として出力し（ステップＦ５１０）、タスク管理プロセッサ３００の動作状態を“ビジー”状態に更新する。続いて、アレイ更新制御ユニット３５０内のシフト回数カウンタＣＮＴの内容を０に初期化し（ステップＦ５１２）、空きエントリのうち最も優先度の高い、すなわちエントリ番号の小さい空きエントリを検索する（ステップＦ５１３）。空きエントリが存在する場合（ステップＦ５２０）、当該エントリ以上のエントリ番号をもつ全てのタスク状態管理エントリをシフトし（ステップＦ５２１）、そのシフト動作内容を隣接プロセッサに対して通知する（ステップＦ５２２）。タスク状態管理アレイ更新モードフィールド３１８−７に“ＦＵＬＬ”が指定されている場合（ステップＦ５３０）、シフト回数カウンタＣＮＴをインクリメントし（ステップＦ５３１）、シフト回数カウンタＣＮＴの内容が２５４、すなわち（タスク状態管理エントリのエントリ数−１）となるまで空きエントリの検索以降を繰り返す（ステップＦ５４０）。空きエントリが存在しない、または“ＦＵＬＬ”モードで２５４回シフト動作を実行すると、タスク管理プロセッサ３００の動作状態を“非ビジー”状態に更新し（ステップＦ５４１）、タスク状態管理アレイ検索信号３１３に含まれる検索キーを本来の検索キーとして再設定する（ステップＦ５４２）ことにより、後続の処理要求を受理可能となるようにする。【００７４】
ところで、タスク管理プログラムが一度に完了もしくは中断させるタスクはたかだか１タスクであり、タスク状態管理エントリの利用順序に関する規定を遵守する限りにおいては、１回のエントリ間シフト動作によりタスク状態管理アレイの不整列状態は解消する。タスク管理プログラムの内包する可能性のある不具合を回避し、データ処理装置の信頼性を向上させるため、定期的に“ＦＵＬＬ”シフトを実行するとよい。【００７５】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。【００７６】
例えば、主プロセッサ２００とタスク管理プロセッサ３３０は必ずしも同一チップに搭載される場合に限定されない。アレイ３３０とテーブル３６０は同一アレイ又は別アレイの何れで構成してもよい。
【産業上の利用可能性】
【００７７】
本発明はタスク制御に適用される場合に限定されず、リアルタイム性を考慮して管理しなければならないその他のデータ管理に広く適用することができる。
【図１】
2007110906.tif 000003
【図２】
2007110906.tif 000004
【図３】
2007110906.tif 000005
【図４】
2007110906.tif 000006
【図５】
2007110906.tif 000007
【図６】
2007110906.tif 000008
【図７】
2007110906.tif 000009
【図８】
2007110906.tif 000010
【図９】
2007110906.tif 000011
【図１０】
2007110906.tif 000012
【図１１】
2007110906.tif 000013
【図１２】
2007110906.tif 000014
【図１３】
2007110906.tif 000015
【図１４】
2007110906.tif 000016
【図１５】
2007110906.tif 000017
【国際調査報告】
2007110906.tif 000018
2007110906.tif 000019