Warning: copy(.htaccess): failed to open stream: Permission denied in /home/jp321/public_html/header.php on line 8
ATRAC用リアルタイム・タスクのスケジュール方法 - 松下電器産業株式会社
米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 松下電器産業株式会社

発明の名称 ATRAC用リアルタイム・タスクのスケジュール方法
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開平7−38510
公開日 平成7年(1995)2月7日
出願番号 特願平5−170005
出願日 平成5年(1993)7月9日
代理人 【弁理士】
【氏名又は名称】松田 正道
発明者 タン ペク ユー
要約 目的
多くの信号処理アルゴリズムが商品に適用されるようになり、アルゴリズムの効率的な実施がプロセッサのダイサイズと電力消費を最小に保つために必要となっている。

構成
タスク・スケジューラは計算能力の利用とディジタル信号プロセッサの内部メモリを最適化するためにアルゴリズムのタスクを割り当てるために使用される。本発明では、タスク・スケジューラを使用してATRACアルゴリズムの実行順序を指定してタスク再同期化時間を最小にし、最低実行付帯時間(オーバーヘッド)に伴うタスク間の結合と複雑性を減少する。タスク・スケジューラは準動的緩衝手法を使用してタスク間のデータのやり取りのための効率的メモリー割付を実現する。
特許請求の範囲
【請求項1】一定数の新しい入力データサンプルを使用する特定の機能を有して出力データサンプルを生成するまたはタスクの入力、出力のデータをそれぞれ制御する処理タスクをスケジュールする方法であって、i) タスクを指定して区割し、ii) プロセッサのタスクを順序化して割当て、iii) 呼び出したタスクにメモリを割り当てるステップを備えたことを特徴とするATRAC用リアルタイム・タスクのスケジュール方法。
【請求項2】同一アルゴリズムを使用した2つないしそれ以上のチャネルの処理が必要となる音声アプリケーションでのタスク間の複合性と結合を削減するスケジュール方法であって、i) 前記フレームの[(フレーム当りのサンプル数)/(Nチャネル)]のバッファサイズを割当て、ii) 2つないしそれ以上の複合し高度に結合したタスクを区割し、iii) 少なくとも(Nチャネルのフレーム当りの処理時間)/N区間により後続のチャネルの処理タスクを実行し、iv) 実現するアルゴリズムの主流部をエミュレートするためにタスクを再順序化し、タスクをホストプロセッサに割り当てる、各ステップを備えた請求項1記載のATRAC用リアルタイム・タスクのスケジュール方法。
【請求項3】準動的緩衝手法を適用することで効率的に呼び出されたタスクのバッファメモリを管理するスケジュール方法であって、i) 呼び出されたタスクが必要とするN循環バッファを作成し、ii) N循環バッファを連結してより大きな循環バッファを形成し、iii) 入力、出力ポインタを大きな循環バッファに指定し、iv) 入出力ポインタをタスク実行中に更新する、各ステップを備えた請求項1記載のATRAC用リアルタイム・タスクのスケジュール方法。
発明の詳細な説明
【0001】
【産業上の利用分野】本発明はミニディスクで使用するディジタル信号プロセッサ(DSP)上でATRACエンコーダ・アルゴリズムを効率的に実施する、スケジュール方法に関するものである。
【0002】
【従来の技術】通常、汎用スケジューリング手法はいくつかあり、その2つの一般的なグループとして、割り込み形および非割り込み形手法がある。非割り込み形スケジューリングは全動的、静的割当て、自己計時、全静的等の異なるスケジューリング・クラスに分けることが出来る。詳細は(エドワードA.リー及びジェフリーC.バイヤー「静的にスケジュールしたデータ流れのアーキテクチャ:DSPアプリケーション用並列アルゴリズムとアーキテクチャ」マージェィA.バヨウミ編集、pp.159190 クルウェー・アカデミック・パブリッシャ、1991年)に詳しい。
【0003】スケジューリング戦略の大部分ではコンパイル時間決定が必要となる。これにはタスクの実行時間を指定して行うタスク指定があり、実行条件がタスク・スケジューラの構築に必要である。上述したスケジューリング方法は複合的なタスク・スケジューリングは考慮にいれていない。
【0004】DSP上での信号処理アルゴリズムの実施には通常、緩衝手法が用いられ、バッファメモリを使用して先行タスクから後続タスクへ大量の処理データあるいは制御データを手渡している。更にバッファを制御するためにDSPのためにコードを生成する必要がある。一般にバッファを実現し、管理する方法には、FIFOと静的緩衝手法の2つの方法がある。FIFO手法は、FIFO待ち行列を直接使用して実現できるが、入出力ポインタを管理するのに大量の付帯の(オーバーヘッド)実行時間を必要とするのでそれらはコストが高くなる。静的緩衝手法はバッファを管理するのにかなり少ない実行時間しか必要としない。これは処理タスクの各々の呼び出しに付いて入力サンプルの位置と出力宛先の宛先を静的に計算することにより行うことが出来る。タスクを呼び出す度に、データは指定メモリ位置から直接読み取り、指定メモリ位置に直接出力する。静的緩衝手法は、タスクを呼び出す度に、呼び出したタスクはその入出力のために同一位置にアクセスすることを意味する。
【0005】
【発明が解決しようとする課題】計算プロセスを行うため、エンコーダをディジタル信号プロセッサ(DSP)を用いて実行する。目標はメモリ利用を最適化し、コード化のためのマシンサイクルを最小に保つことである。それによりチップ数は少なくなり、消費電力も少なくなる。しかしそれらは音質を損なわずに行うようにすべきである。
【0006】図5はエンコーダの処理タスクの従来のスケジューリング方法を示したものである。従来のタスク割付方法は実現が容易であるが、メモリ利用と処理時間に関しては非効率的である。これはATRACアルゴリズムの場合は特にそうである。各々のプロセス(図5に示すような)では、完了するのに特定の実行時間が必要である。プロセス実行時間は様々である。MDCT、QMF、ビット割当プロセスといったプロセスは、他のプロセスに比べてゲインの大きなプロセスである。それらのプロセスではプロセス実行中により多くの実行時間とメモリが必要となる。図1に示す流れ図の流れにしたがってプロセスを実行する際はより多くのメモリを必要とし、プロセス実行において非対称性をもたらす。非対称的プロセスはプロセス実行に関して余分な待機時間をもたらすことになる。
【0007】MDCTのようなゲインの大きなプロセスを実行するときは大きなメモリが必要となる。更に2つのQMFプロセス及びMDCTプロセスは高レベルに結合されたプロセスである。QMFとMDCT間のこの結合関係により、大きなメモリの割り付け要求は更に厳しくなる。後続のプロセスを実行する(発火する)前にスペクトルのデータを蓄積するために大きなメモリが必要となる。この状況を図6に示す。
【0008】QMFとMDCTを処理するのに必要なメモリ要求を表1に示す。
【0009】
【表1】

【0010】データ取得プロセスは背景プロセスと見なされてきた。処理時間の大きな部分は、コード化プロセスに当てられている。リアルタイム処理を行うには、2つの音声入力チャネルから16ビットデータを44.1KHzのレートで連続的に取り込む。1つは現在フレームデータ用、もう1つは次のフレームデータ用、入力バッファを複製する必要がある。これはデータ取得プロセス(背景プロセス)及びコード化プロセス(前景プロセス)の重複故に必要となる。1つのデータバッファは現在のフレーム処理に使用し、もう1つは次のフレーム処理のデータ取得に使用する。
【0011】従って必要なメモリ容量は2音声チャネルに付き、1024 x 2 語である。ウィンドウ化とMDCTについては、ウィンドウ・バッファサイズを表1にまとめて表現した。メモリバッファの半分はMDCTプロセスの最後にスペクトルデータを格納するのに使用し、データの他の半分は次のフレーム計算に使用する。表1は、大きなゲインプロセスとQMFとMDCT間の密接な結合により最低4096語がメモリ利用のピークであることを示している。このピークメモリ利用には、他のプロセスで必要な付帯(オーバーヘッド)メモリは含まれていない。
【0012】大きなメモリ容量に加えて、複合的な高いレベル結合した(自然言語に近いレベルの意味である。)タスクは通常、計算集約的なタスクである。その結果、複合的なタスクでは異なるチャネルの後続タスクと再同期化するのにより多くの時間がかかることになる。複合的なタスクに続く単純なタスクを有するアルゴリズムの場合、そのタスクを通常の方法にしたがってスケジュールしようとすれば非対称処理時間を生じることになる。これはより早い処理速度を必要とする。
【0013】静的緩衝手法の実行時間付帯時間(オーバーヘッド)は小さいが、大きなメモリ割当を必要とする。図7はタスク・スケジュールに基づく静的メモリ割当の作動を示している。各々のフレーム処理に付いて、タスクAは3回、タスクBは2回実行する。タスクAが始動される度に、2ブロックのデータが生成される。合計6ブロックのデータが後続のタスクBに対して生成される。タスクBは各々の呼び出しに付いて3ブロックのデータを読み取る。静的緩衝手法の規則にしたがって生成されたデータと受け取った入力データは同一メモリスペースを占めるはずである。
【0014】コード化プロセスを行うためにより多くの処理出力を有することは、コード化のために高い頻度で作動する2つないしそれ以上のDSPが必要なことになる。これは電力消費とチップ数の増大をもたらす。
【0015】メモリの非効率的な利用はDSPのダイサイズが大きくなり、外部メモリのサイズの増大をもたらす。従って各々の処理を割り当ててメモリを利用する効率的な方法が必要である。この要求を満足させるため、ハードウェア実施レベルで改善を行う必要がある。計算処理方法をプロセッサに割り付け、プロセスのメモリ利用を効率的に管理する方法を開発する必要がある。
【0016】
【課題を解決するための手段】本発明は、上記の目的を達成するため、複数音声チャネルの複合的なハイレベルで結合したタスクを解決する手段と、最適スケジューリング方法を用いてピークメモリ利用を削減する手段と、最小実行と付帯時間(オーバーヘッド)で呼び出したタスク用のバッファを管理する手段と、メモリの再利用が可能なように呼び出したタスクのためにメモリを割り当てる手段と、音質を損なうことなくATRACコード化アルゴリズムの単一DSP解決法を達成する手段とからなるリアルタイム・スケジュール方法を提供する。
【0017】
【作用】上述のように問題を解決する方法を用いて、タスク・スケジューラを用いて結合した複合的な処理タスクを削減し、タスク間のバッファメモリ管理を改善する。複数タスクをリアルタイムで取り扱うタスク・スケジューラは、1つのDSP上で実行するATRACアルゴリズムの異なる処理タスクを割り当てるために発明されたものである。タスク・スケジューラはメモリ利用が最適化され、処理速度が効率的に使用されるようにプロセスの実行を規定する。
【0018】タスク・スケジューラは静的スケジュールの非割り込み形が可能となり、かつ完全に静的な特性という利点を有する。それを更に強化するため、複合的で高レベルで結合したタスクを効率的に割り当てスケジュールする方法を付け加える。非割り込み形スケジューラを使用して、プロセッサの状態を維持及び回復するのに使用する文脈スィッチングでの重大な付帯実行時間を削減する。ATRACアルゴリズムの決定論的な動作の利点を考慮して、スケジュールはコンパイル時間中に決定することが出来る。ピーク時メモリ利用量を削減するため、スケジューラはQMFタスクに対して0.5 フレームの入力メモリを割り当てる。スケジューラはまた、2つのタスクを各々のチャネル(フレーム当りの処理時間)/N別にスケジュールすることにより小節のサイズとQMFとMDCTプロセスの結合を削減するように設計されている(Nはチャネル数を示す)。
【0019】タスク間のデータのやり取りのため、タスク・スケジューラにより準動的緩衝手法を用いて呼び出したタスクにメモリを割り当てる。N循環バッファを呼び出したタスクにより作成し、より大きな循環バッファを形成するためにそのバッファを鎖状につなぐ。出力、入力ポインタはそのタスクで指定され、呼び出したタスクで更新される。N循環バッファは大きな循環バッファ内には一定のメモリ位置を持っていない。そのタスクが呼び出される度に、メモリ領域は入出力ポインタをそれに指定することにより割り当てる。ポインタを管理する際に使用する付帯実行時間(オーバーヘッド)は最小化され、これにより使用されていないメモリを他のタスクで再使用することが出来る。
【0020】
【実施例】以下、本発明の実施例について図面を参照して説明する。図1、2、3、4は本発明の実施例を示したものである。一般にこのスケジューリング方法は処理タスクに利点があり、それは、入力データサンプル数に依存しない。この場合、QMFタスクは異なる時間間隔でスケジュール化され、1回のフレーム周期内でサンプルデータの1つのフレームの処理を完了する。このタスクは外部世界と高いレベルで結合している。プロセッサに到着したサンプルデータはリアルタイム入力する。プロセッサはサンプルデータを優先処理するために現在タスクを中断する必要がある。ハイレベル結合した複合的な処理タスクを区分して、最適バッファ利用を達成する一般化した方法を図1に示す。
【0021】上述のタスクを使用するNチャネル処理を行うため、(図1の参照数字11で示すように)タスクはその入力バッファに(データフレームサイズ)/(Nチャネル)ワードのデータを割り当てる。これにより文脈スィッチングの必要がなくなり、入力バッファサイズを削減できる。
【0022】複合的でハイレベル結合したタスクは、同時性の利点をとるため、複数プロセッサ環境について異なるプロセッサに対しタスクの割当を実行できるように、データを区分する。しかし単一プロセッサ環境においては、ハイレベル結合した複合的なタスクは順次に実行するように指定される。これは図1で参照数字12で示す。このステップでは、複合的なタスクやハイレベルに結合したタスクは大きな小節タスクの結合を削減するように、単純なタスクに分解される。このステップを行う際、結合した複合的なタスクは単純なタスクの結合に還元される。
【0023】単一プロセッサ環境では、複合的なタスクは異なるチャネルに対して1つのフレームサイクル内で順次にN回始動(実行)するようにスケジューリングされる(図1で参照数字13で示す)。このタスクは最小(1フレーム周期)/(Nチャネル)別にスケジュールされる。これによりチャネル間のタスクの再同期化が最小時間での実行を保証し、プロセッサに対する不必要な再同期化オーバーヘッドをなくすことが出来る。更にデータサンプルの1フレームに必要な本当の処理時間を推定するよい方法をもたらす。
【0024】結果的には区分化より、実行アルゴリズムのタスクは再順序化と、再割当の必要を生じる。このステップはアルゴリズムの正確な流れを保証する。図1の参照数字14は、後続タスクを参照数字13で行われた複合的で高レベル結合したタスクの再スケジューリングの結果として、再順序化するするために用いられる。タスク間の待機時間を取り除くために、再割当では後続タスクの実行時間をも考慮に入れている。
【0025】図2はこの発明を用いてATRACのタスク・スケジュールを描いたものである。タスク・スケジューラは最初に(フレームサイズ/2)ワード迄の入力バッファサイズを割り付ける。
【0026】QMFとMDCTはより複合的なタスクであり、この2つのタスクは高レベルで結合されている。
【0027】この2つのタスクは分解されNチャネルに対するMDCTタスクは([フレーム当りの処理時間]/N)間隔でスケジュール化される。2チャネルのケースでは、2つのチャネルのMDCTタスクの間の時間間隔は 0.5フレーム離れている。これは図2で数字23、24で示されている。QMFタスクは数字21で示すように2チャネルあたりの0.5フレームデータを処理するために呼び出される。他の 0.5フレームのデータは、数字22で示すように、フレームサイクルの終わりに呼び出されたQMFタスクにより処理される。個々のチャネルの後続のプロセスのためのタスクは再順序化される。ブロックサイズ決定タスクは数字25で示すようにフレームの終わりにスケジュール化される。
【0028】QMFプロセスの入力バッファサイズは上記のようにフレームサイズの 0.5である。
【0029】図4は前記の発明を使用した結果としての1フレームサイクルに対するメモリ割当を示したものである。
【0030】入力バッファは(フレーム当りのサンプルデータ)/(2チャネル語)のメモリ領域が割り当てられるので、入力バッファは 0.5フレームサイクル周期の後は満杯になる。
【0031】次いて入力データは図4の数字41で示すように左右のチャネルの両方に付いてQMFタスクにより処理される。
【0032】QMFデータの出力は左右のウィンドウバッファに格納される。MDCTタスクはその入力としてのウィンドウ(H/M/L)データを使用することによって左チャネルの処理が発火される。左チャネルに対してスケジュールされた全ての後続タスクが完了した後、ウィンドウバッファの半分を数字42で示すように他のタスクに割り当てることが出来る。
【0033】0.5フレームサイクルが経過すると、入力バッファは満杯になり、データは数字44で示すように左チャネルのウィンドウバッファの空の半分に格納される。データ転送後、図2でスケジュールされたタスクにしたがって数字44で示すように右のチャネルに対する処理が呼び出される。左右のチャネルのスクラッチパッド・バッファとウィンドウ・バッファのメモリスペースを数字45で示すようにMDCTプロセスに続くタスク用として使用される。QMFプロセスは右チャネル処理が完了した後に始動される。QMFの出力は数字46で示すように左右のウィンドウバッファに格納される。
【0034】準動的緩衝手法は、循環緩衝手法で使用するメモリポインタを管理により追加転送動作を削減する。
【0035】この手法はタスク・スケジューラにより呼び出したタスクに対してメモリを割り当てのために用いられる。静的緩衝手法とは異なり、各々の入出力データフレームバッファのメモリ位置は固定されない。
【0036】入出力ポインタはプロセッサに対して現在スケジュールされているタスクに割り当てられる。図7に示す同様な問題を用いて、図3は準動的緩衝手法を用いたメモリ割当例を示している。
【0037】4つの循環バッファは、タスクデータ通過用の中間タスクとして、タスクAとタスクBにより作成される。4つのデータバッファは、より大きな循環バッファを形成するために、鎖状に結合される。循環バッファが正確に作動するには、両方のポインタは、ポインタがバッファの終わりを指したら再びバッファの初めを指し示す循環をする必要がある。図3はタスク実行終了時の循環バッファの内容を示している。時間=0では、小さな循環バッファの4ブロックは空である。時間=t2では、タスクAはバッファに格納する4ブロックのデータを生成し、出力バッファは更新され、ポインタは格納される。タスクBの実行は循環バッファの3つの小さなブロックを消費する。時間=t4では、2ブロックのデータバッファがタスクAにより生成される。後続のタスクBは残りのブロックを消費して1フレームサイクルを完了する。動的緩衝手法の作動は、呼び出されたタスクのメモリは2フレームサイクル毎に異なるメモリ位置を占めることを示している。
【0038】表2は、タスク・スケジューラを使用したピークメモリの利用法が、メモリ容量をかなり削減出来ることを示している。
【0039】
【表2】

【0040】入力バッファサイズは 512語に削減されている。合計2887語がピーク利用で必要となる。
【0041】なお、本発明はオーディオ・エンコーダのサブバンド方式及び変換符号化方式でも使用することが出来る。
【0042】
【発明の効果】以上述べたところから明らかなように、本発明はATRACエンコーダの効率的なファームウエア、ハードウエア化をもたらす。
【0043】効率的なメモリ割当及びATRACアルゴリズムのタスク・スケジューリングの結果、単一のDSPを用いてコード化を行うことが出来る。
【0044】この新しいスケジューリング方法とそのメモリ管理手法は、メモリ利用及びDSPの処理能力に関する点でより優れた性能をもたらす。
【0045】実施レベルで行う改善の結果、より少ないメモリとDSPのより低い作動頻度を達成することが出来る。
【0046】また、タスク・スケジューラはまた2つのチャネルの処理タスク間の再同期化時間を最小にする。再同期化はアルゴリズムに無関係のタスクを処理するのに使用するプロセッサ時間の量、例えばタスクを呼び出す前にデータを待つのに使用する時間量として定義される。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013