JP5848153B2 - 信号処理装置及び半導体装置 - Google Patents

信号処理装置及び半導体装置 Download PDF

Info

Publication number
JP5848153B2
JP5848153B2 JP2012032685A JP2012032685A JP5848153B2 JP 5848153 B2 JP5848153 B2 JP 5848153B2 JP 2012032685 A JP2012032685 A JP 2012032685A JP 2012032685 A JP2012032685 A JP 2012032685A JP 5848153 B2 JP5848153 B2 JP 5848153B2
Authority
JP
Japan
Prior art keywords
task
output
signal processing
input
data
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
JP2012032685A
Other languages
English (en)
Other versions
JP2013171296A (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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2012032685A priority Critical patent/JP5848153B2/ja
Priority to US13/748,390 priority patent/US9195319B2/en
Priority to KR1020130010355A priority patent/KR20130095206A/ko
Priority to CN201310052963.1A priority patent/CN103336716B/zh
Publication of JP2013171296A publication Critical patent/JP2013171296A/ja
Priority to US14/945,136 priority patent/US20160070592A1/en
Application granted granted Critical
Publication of JP5848153B2 publication Critical patent/JP5848153B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Image Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、複数の信号処理タスクを実行する装置およびLSIに係り、特に、優先処理へのタスク切替えに伴うオーバーヘッドを抑えるために有効な技術に関する。
携帯電話、デジタルカメラ、カーナビゲーションシステムなど、画像を扱うディジタルディジタル機器において、画像の解像度が大型化し、機能が高度化、複雑化する傾向にあるため、画像などのストリームデータを対象とした信号処理を行うLSIなどには、複数の画像処理タスクを実行することが求められている。そのとき、信号処理装置においては、優先処理要求に伴うタスク切替えが発生するが、その際のオーバーヘッドを低く抑えることが求められる。優先処理要求に伴うタスク切替えとは、あるタスクの実行中に他のタスクを優先処理する要求を受け付け、実行中のタスクを中断して優先すべきタスクを実行し、優先処理の完了を待って元のタスクに復帰することをいう。タスク切替えのために、一般には、コンテキストスイッチと呼ばれる手法が用いられる。コンテキストスイッチは、タスク切り替えの際に実行中のタスクの途中経過情報であるレジスタの値や状態を退避し、タスクを切り替えて優先処理を実行し、優先処理が完了したら、退避した情報を復元して元のタスクを再開するという手法である。画像などのストリームデータを対象とした信号処理のタスクは、一般のソフトウェアと比較して、取り扱う情報量が膨大であるため、実行中のタスクの途中経過をメモリなどに退避しようとした場合、退避および復帰に要する時間が膨大となり、オーバーヘッドが大きくなるという問題がある。
特に、画像処理はフレーム単位の処理を行うことが多く、1つのフレームの画像処理が完了する毎に割り込み等通知を行う仕組みを持ち、これらをトリガーとしてシステムとして各種処理を行っていく。処理する画像の高解像化(画像サイズの大型化)、画像処理の複雑化により1フレームの処理にかける時間・データ量がさらに増大してきている。そのため、実行中の画像処理タスクの途中経過をメモリなどに退避しようとした場合、退避および復帰に要する時間はより膨大となり、オーバーヘッドがより大きくなるという問題がある。
特許文献1は、第0007段落で「画像処理は一括して処理するデータが大量(例えば1画面分の画像)であるため、コンテキストスイッチは出来ない(不可能ではないが非常に効率が悪い)」旨を指摘し、マルチタスクの画像処理を行うために、複数の画像処理装置を設けて並列動作させ、コンテキストスイッチングが発生しないようにスケジューリングしている。
特許文献2は、撮像して得た画像データに対して、画像処理部で圧縮処理などを行って記録する撮像装置において、圧縮処理の実行中に表示を優先して行う技術が開示されている。この装置においては、画像処理部は表示には使用されないので、表示を優先させている間、画像処理部を停止させておけば、処理途中の状態は維持され、優先処理から復帰するときはそのまま画像処理部を再開させればよい。つまり、画像処理部でのコンテキストスイッチは発生しない。
特開2009−86789号公報 特開2006−197548号公報
本願において開示される実施の形態においては、ストリームデータに対してマルチタスクを行う信号処理装置において、優先処理要求に伴うタスク切替えが発生したときに、退避すべき情報量を必要最小限にし、退避および復帰に要する時間的なオーバーヘッドを抑えることを課題とする。
その他の課題と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される実施の形態の概要を簡単に説明すれば下記の通りである。
すなわち、信号処理部の処理の経過に応じたストリームデータにおけるデータの位置情報を示すポインタを備え、優先タスクの処理が要求されたときには、そのポインタの値のみを退避する。復帰のときには、退避したポインタの値に基づいて、復帰後のタスクにおいて次に出力すべき出力ストリームデータの位置情報を求め、そのデータを算出するために信号処理部に入力する必要がある全ての入力データのうち先頭の入力データの入力ストリームにおける位置情報を求めて処理を再開する。
本願において開示される実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、退避すべき情報量はポインタの値のみで必要最小限であり、膨大な情報の退避と復帰を行わず、退避および復帰に要する時間的なオーバーヘッドを抑えることができる。
図1は、実施形態1に係る信号処理装置の機能ブロック図である。 図2は、実施形態1に係る半導体装置のブロック図である。 図3は、信号処理のタスクを実行中に、さらなる信号処理タスクの実行要求を受けたときの処理フローを表すフローチャートである。 図4は、優先処理を完了した後、元の信号処理を再開するときの処理フローを表すフローチャートである。 図5は、タスク切替前の信号処理部の状態を表す説明図である。 図6は、タスク切替後、優先処理を実行中の信号処理部の状態を表す説明図である。 図7は、優先処理を完了し復帰した後の、信号処理部の状態を表す説明図である。 図8は、実施形態1によるタスク切替の効果を表す説明図である。 図9は、空間フィルタ処理に対応する画像位置関数の考え方を表す説明図である。 図10は、上下反転処理に対応する画像位置関数の考え方を表す説明図である。 図11は、ブレンド処理に対応する画像位置関数の考え方を表す説明図である。 図12は、ブロック処理におけるタスク切替についての説明図である。 図13は、フレーム間処理を行う信号処理装置の機能ブロック図である。 図14は、優先処理中のさらなる優先処理要求によるタスク切替についての説明図である。 図15は、コンテキスト処理部を備える半導体装置のブロック図である。
1.実施の形態の概要
先ず、本願において開示される実施の形態について概要を説明する。実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕<ポインタのみを退避し、復帰後の先頭入力データの位置をポインタから算出>
複数の入力データからなる入力ストリーム(11)が入力され、ストリームデータに所定のタスクを実行して複数の出力データからなる出力ストリーム(12)を出力する信号処理部(10)を備える、信号処理装置であって、以下のように動作する。
前記入力ストリームは入力データを前記信号処理部に順次入力し、前記出力ストリームを構成する出力データを前記信号処理部から順次出力し、前記信号処理部の処理の経過に応じた前記ストリームデータにおけるデータの位置情報を示すポインタ(21)を備える。
第1のタスクを実行中に第2のタスクの優先処理が要求されたとき(81)、前記ポインタが保持する値を退避(84)した後、前記第2のタスクを実行する(86)。
前記第2のタスクが完了したとき(87)、前記退避したポインタの値に基づいて、前記第1のタスクにおいて次に出力すべき出力データの前記出力ストリームにおける位置情報を求め(90)、前記次に出力すべき出力データを算出するために前記信号処理部に入力する必要がある全ての入力データのうち先頭の入力データの前記入力ストリームにおける位置情報を求める(90)。
これにより、退避すべき情報量はポインタの値のみで必要最小限であり、膨大な情報の退避と復帰を行わず、復帰後の信号処理を再開するために必要な入力データの位置情報はそのポインタ値から算出しているだけなので、退避および復帰に要する時間的なオーバーヘッドを抑えることができる。
〔2〕<入出力位置関数と入出力アドレス関数>
項1において、前記信号処理装置は、前記入力ストリームを格納し前記出力ストリームを書き込むメモリ(40)と、タスク切替制御部(50)とを備え、以下のように動作する。
前記信号処理部は、入力アドレスレジスタ(23)と出力アドレスレジスタ(22)とを備え、前記入力アドレスレジスタは、前記信号処理部が読み込む前記入力データの前記メモリ上のアドレスを保持し、前記出力アドレスレジスタは、前記信号処理部が書き込む前記出力データの前記メモリ上のアドレスを保持する。
前記タスク切替制御部は、前記第2のタスクが完了したとき、出力位置関数により、前記退避したポインタの値に基づいて、前記第1のタスクにおいて次に出力すべき出力データの出力ストリームにおける位置情報を算出し、出力アドレス関数(52)により、前記出力位置関数の出力に基づいて、前記次に出力すべき出力データの前記メモリにおけるアドレスを算出して、前記出力アドレスレジスタに書き込む。
前記タスク切替制御部は、前記第2のタスクが完了したとき、入力位置関数により、前記退避したポインタの値に基づいて、前記先頭の入力データの入力ストリームにおける位置情報を算出し、入力アドレス関数により、前記先頭の入力データの前記メモリにおけるアドレスを算出して、前記入力アドレスレジスタに書き込む。
これにより、タスク切替制御部におけるアドレスの算出が簡略化される。
〔3〕<ポインタは出力済みライン番号等を保持>
項2において、前記ストリームデータが画像データであって、前記ポインタは、前記信号処理部が出力を完了した出力データの前記出力ストリームにおける画素番号、ライン番号、ブロック番号、もしくはフレーム番号、またはその組み合わせを保持する。
前記出力位置関数は、前記退避したポインタの値に基づいて、前記第1のタスクにおいて次に出力すべき出力データの画素番号、ライン番号、ブロック番号、もしくはフレーム番号、またはその組み合わせを算出する。
前記入力位置関数により、前記退避したポインタの値に基づいて、前記先頭の入力データの前記入力ストリームにおける画素番号、ライン番号、ブロック番号、もしくはフレーム番号、またはその組み合わせを算出する。
これにより、出力位置関数は、退避したポインタ値に1を加算して出力すればよく、簡略化される。
〔4〕<ポインタは入力済みライン番号等を保持>
項2において、前記ストリームデータが画像データであって、前記ポインタは、前記信号処理部が入力を完了した入力データの前記入力ストリームにおける画素番号、ライン番号、ブロック番号、もしくはフレーム番号、またはその組み合わせを保持する。
前記出力位置関数は、前記退避したポインタの値に基づいて、前記第1のタスクにおいて次に出力すべき出力データの画素番号、ライン番号、ブロック番号、もしくはフレーム番号、またはその組み合わせを算出する。
前記入力位置関数により、前記退避したポインタの値に基づいて、前記先頭の入力データの前記入力ストリームにおける画素番号、ライン番号、ブロック番号、もしくはフレーム番号、またはその組み合わせを算出する。
これにより、入力位置関数は、退避したポインタ値に1を加算して出力すればよく、簡略化される。
〔5〕<位置関数を部分位置関数のネスティングにより構成>
項2、3、または4において、前記第1のタスクが、前記信号処理部によって、前記入力ストリームに信号処理を実施して得た出力ストリームを順次次の信号処理の入力ストリームとする複数の信号処理を含む信号処理タスクであり、以下のように動作する。
前記複数の信号処理のそれぞれについて、次に出力すべき出力データを算出するために前記信号処理部に入力する必要がある全ての入力データのうち先頭の入力データの位置情報を出力する部分位置関数を備える。前記複数の信号処理のうち前記第1のタスクにおいて最後に実行される信号処理に対応する部分位置関数に前記退避したポインタの値を入力し、前記複数の信号処理のうち前記第1のタスクにおいて後に実行される信号処理に対応する部分位置関数の出力を、その直前に実行される信号処理に対応する部分位置関数に入力することにより、順次ネスティングして、前記入力位置関数を構成する。
これにより、信号処理が複数の信号処理の組合せである場合であっても、入力位置関数と出力位置関数を適切に構成することができる。
〔6〕<空間フィルタ(FIRフィルタ)>
項5において、前記ストリームデータは画像データであって、前記信号処理部によって実施される信号処理の1つがn×n(nは3以上の奇数)の空間フィルタであって、前記空間フィルタ処理に対応する部分位置関数が、出力を完了したライン番号を入力し、前記退避させたポインタの値の(n−1)/2ライン前のライン番号を出力し、前記入力位置関数が前記空間フィルタ処理に対応する前記部分位置関数を含む。
これにより、信号処理が画像の空間フィルタを含む実施の形態を提供することができる。
〔7〕<上下反転処理>
項5において、前記ストリームデータが画像データであって、前記信号処理部によって実施される信号処理の1つが、先頭から第V−n+1ラインの入力ストリームを読み込んで先頭から第nラインに出力する垂直方向のサイズがVの画像の上下反転処理であって、前記ポインタは、前記上下反転処理の出力を完了したライン番号pを保持し、前記上下反転処理に対応する部分位置関数は、第V−pラインを出力する。
これにより、信号処理が画像の上下反転処理を含む実施の形態を提供することができる。
〔8〕<多重の優先処理におけるタスク切替>
項1乃至7のうちの1項において、以下のように動作する。
第1のタスクを実行中に第2のタスクの優先処理が要求されたとき、前記ポインタが保持する第1の値を退避した後、前記第2のタスクを実行し、さらに、前記第2のタスクを実行中に第3のタスクの優先処理が要求されたとき、前記ポインタが保持する第2の値を退避した後、前記第3のタスクを実行する。
前記第3のタスクが完了したとき、前記退避したポインタの第2の値に基づいて、前記第2のタスクにおいて次に出力すべき出力データの位置情報を求めて前記第2のタスクを再開し、さらに、前記第2のタスクが完了したとき、前記退避したポインタの第1の値に基づいて、前記第1のタスクにおいて次に出力すべき出力データの位置情報を求めて前記第1のタスクを再開する。
これにより、多重の優先処理におけるタスク切替が可能となる。
〔9〕<半導体装置>
CPU(45)とメモリ(40)と信号処理部(10)とがそれぞれバス(55)に接続された半導体装置であって、以下のように構成される。
前記信号処理部は、信号処理モジュール(30)と信号処理制御部(20)とを備える。
前記信号処理モジュールは、入力された複数の入力データからなる入力ストリーム(11)を入力し、ストリームデータに所定の信号処理を施して複数の出力データからなる出力ストリーム(12)を出力する。
前記信号処理制御部は、前記信号処理モジュールの処理経過に応じた処理対象データのストリームデータにおける位置情報を指すポインタ(21)を備え、前記メモリから読み出しアドレスを指定して前記入力データを読み出して前記信号処理モジュールに入力し、書き出しアドレスを指定して前記信号処理モジュールの前記出力データを前記メモリに出力する。
前記CPUは、第1のタスクを実行中に第2のタスクの優先処理が要求されたとき、前記ポインタが保持する値を退避させた後、前記信号処理部に前記第2のタスクを実行させる。前記第2のタスクが完了したとき、前記退避させたポインタの値を復帰させ、前記復帰したポインタの値に基づいて、前記第1のタスクにおいて次に出力すべき出力データを格納すべき前記メモリ上のアドレスを求めて前記書き出しアドレスを設定する。さらに、前記次に出力すべき出力データを算出するために前記信号処理部に入力する必要がある全ての入力データのうち先頭の入力データが格納されているアドレスを求めて前記読み出しアドレスを設定する。
これにより、退避および復帰に要する時間的なオーバーヘッドを抑えた、半導体装置を提供することができる。
〔10〕<CPUがタスク切替を制御>
項9において、前記信号処理制御部は、前記読み出しアドレスを保持する読み出しアドレスレジスタ(23)と、前記書き出しアドレスを保持する書き出しアドレスレジスタ(22)と、前記ポインタの値を保持するポインタレジスタ(21)とを備える。
前記CPUは、前記優先処理が要求されたとき、前記ポインタレジスタの第1の値を前記メモリに退避する。
前記第2のタスクが完了したとき、前記第1の値を前記メモリから前記ポインタレジスタに復帰する。さらに、出力位置関数により、前記第1の値に基づいて、前記第1のタスクにおいて次に出力すべき出力データの前記出力ストリームにおける位置情報を算出し、出力アドレス関数により、前記出力位置関数の出力に基づいて、前記第1のタスクにおいて次に出力すべき出力データの前記メモリにおけるアドレスを算出して、前記書き出しアドレスレジスタに書き込む。また、入力位置関数により、前記第1の値に基づいて前記先頭の入力データの前記入力ストリームにおける位置情報を算出し、入力アドレス関数により、前記先頭の入力データの前記メモリにおけるアドレスを算出して、前記読み出しアドレスレジスタに書き込む。
これにより、タスク切替制御部におけるアドレスの算出が簡略化される。
〔11〕<信号処理パラメータレジスタ>
項9または10において、前記信号処理制御部は、パラメータレジスタ(24)をさらに備え、前記信号処理モジュールは、前記パラメータレジスタが保持するパラメータにしたがって信号処理を実行する。前記CPUは、前記優先処理が要求されたとき、前記パラメータレジスタが保持する値を退避せずに破棄し、前記信号処理モジュールに前記第2のタスクを実行させるためのパラメータを、前記パラメータレジスタに書き込む。
これにより、信号処理パラメータを退避しないので、退避および復帰に要する時間的なオーバーヘッドを抑えることができる。
〔12〕<信号処理パラメータをメモリから転送>
項11において、前記パラメータは、前記信号処理モジュールが実行する処理の処理内容ごとに前記メモリに格納されており、前記CPUは、処理タスクが要求されたとき、前記処理タスクの処理内容に対応する前記パラメータを前記メモリから読み出して前記パラメータレジスタに書き込む。
これにより、信号処理パラメータの管理が簡略化される。
〔13〕<コンテキスト処理部>
CPU(45)とメモリ(40)と信号処理部(10)とコンテキスト処理部(70)がそれぞれバス(55)に接続された半導体装置であって、以下のように構成される。
前記信号処理部は、信号処理モジュール(30)と信号処理制御部(20)とを備える。
前記信号処理モジュールは、入力された複数の入力データからなる入力ストリーム(11)を入力し、ストリームデータに所定の信号処理を施して複数の出力データからなる出力ストリーム(12)を出力する。
前記信号処理制御部は、前記信号処理モジュールの処理経過に応じた処理対象データのストリームデータにおける位置情報を指すポインタ(21)を備え、前記メモリから読み出しアドレス(23)を指定して前記入力データを読み出して前記信号処理モジュールに入力し、書き出しアドレス(22)を指定して前記信号処理モジュールの前記出力データを前記メモリに出力する。
前記コンテキスト処理部は、コンテキスト位置記憶部(72)と復元部(73)とを備える。
前記コンテキスト処理部は、第1のタスクを実行中に第2のタスクの優先処理が要求されたとき、前記ポインタが保持する値を前記コンテキスト位置記憶部に退避させた後、前記信号処理部に前記第2のタスクを実行させ、前記第2のタスクが完了したとき、前記退避させたポインタの値を復帰させる。
前記復元部は、前記復帰したポインタの値に基づいて、前記第1のタスクにおいて次に出力すべき出力データを格納すべき前記メモリ上のアドレスを求めて前記書き出しアドレスを設定し、前記次に出力すべき出力データを算出するために前記信号処理部に入力する必要がある全ての入力データのうち先頭の入力データが格納されているアドレスを求めて前記読み出しアドレスを設定する。
これにより、退避および復帰に要する時間的なオーバーヘッドを抑え、さらに、CPUに負荷をかけることなく、タスク切替を実行することができる。
〔14〕<コンテキストスイッチ部によるタスク切替制御>
項13において、前記信号処理制御部は、前記読み出しアドレスを保持する読み出しアドレスレジスタ(23)と、前記書き出しアドレスを保持する書き出しアドレスレジスタ(22)と、前記ポインタの値を保持するポインタレジスタ(21)とを備え、以下のように動作する。
記コンテキスト処理部は、前記優先処理が要求されたとき、前記ポインタレジスタの第1の値を前記コンテキスト位置記憶部に退避する。
前記第2のタスクが完了したとき、前記コンテキスト処理部は、前記第1の値を前記コンテキスト位置記憶部から前記ポインタレジスタに復帰する。さらに、前記復元部は、出力位置関数により、前記第1の値に基づいて、前記第1のタスクにおいて次に出力すべき出力データの前記出力ストリームにおける位置情報を算出し、出力アドレス関数により、前記出力位置関数の出力に基づいて、前記第1のタスクにおいて次に出力すべき出力データの前記メモリにおけるアドレスを算出して、前記書き出しアドレスレジスタに書き込む。また、入力位置関数により、前記第1の値に基づいて前記先頭の入力データの前記入力ストリームにおける位置情報を算出し、入力アドレス関数により、前記先頭の入力データの前記メモリにおけるアドレスを算出して、前記読み出しアドレスレジスタに書き込む。
これにより、タスク切替制御部におけるアドレスの算出が簡略化される。
〔15〕<信号処理パラメータレジスタ>
項13または14において、前記信号処理制御部は、パラメータレジスタ(24)をさらに備え、前記信号処理モジュールは、前記パラメータレジスタが保持する処理パラメータにしたがって信号処理を実行する。
前記復元部は、前記優先処理が要求されたとき、前記パラメータレジスタが保持する値を退避せずに破棄し、前記信号処理モジュールに前記第2のタスクを実行させるための処理パラメータを、前記パラメータレジスタに書き込む。
これにより、信号処理パラメータを退避しないので、退避および復帰に要する時間的なオーバーヘッドを抑えることができる。
〔16〕<信号処理パラメータをコンテキスト処理部がメモリから転送>
項15において、前記処理パラメータは、前記信号処理モジュールが実行する処理の内容ごとに前記メモリに格納されており、前記復元部は、タスクが要求されたとき、前記タスクの処理内容に対応する前記処理パラメータを前記メモリから前記パラメータレジスタに転送する。
これにより、信号処理パラメータの管理が簡略化される。
〔17〕<コンテキスト番号とポインタの紐付け>
項13乃至16のうちの1項において、以下のように動作する。
前記コンテキスト処理部は、第1のタスクを実行中に第2のタスクの優先処理が要求されたとき、前記第1のタスクのコンテキスト番号と前記ポインタが保持する値とを対応付けて前記コンテキスト位置記憶部に退避させる。前記第2のタスクが完了したとき、前記復元部は、退避した前記コンテキスト番号と復帰した前記ポインタの値とに基づいて、前記書き出しアドレスと前記読み出しアドレスとを設定する。
これにより、復帰処理が簡略化される。
〔18〕<信号処理パラメータを復帰>
項17において、前記処理パラメータは、前記信号処理モジュールが実行する処理の内容ごとに前記メモリに格納されており、前記復元部は、前記優先処理が完了したとき、前記退避したコンテキスト番号に基づいて、前記第1のタスクの処理内容に対応する前記処理パラメータを前記メモリから前記パラメータレジスタに転送する。
これにより、信号処理パラメータの管理が簡略化される。
〔19〕<多重優先処理>
項18において、以下のように動作する。
第1のタスクを実行中に第2のタスクの優先処理が要求されたとき、前記コンテキスト処理部は、前記第1のタスクのコンテキスト番号と前記ポインタが保持する第1タスクのポインタ値とを対応付けて前記コンテキスト位置記憶部に退避させる。
前記第2のタスクを実行中に第3のタスクの優先処理が要求されたとき、前記コンテキスト処理部は、前記第2のタスクのコンテキスト番号と前記ポインタが保持する第2タスクのポインタ値とを対応付けて前記コンテキスト位置記憶部に退避させる。
前記第3のタスクが完了したとき、前記復元部は、前記第2のタスクのコンテキスト番号に基づいて前記第2のタスクの処理パラメータを復帰し、前記第2のタスクのポインタの値を復元し、さらに、前記第2のタスクが完了したとき、前記復元部は、前記第1のタスクのコンテキスト番号に基づいて前記第1のタスクの処理パラメータを復帰し、前記第1のタスクのポインタの値を復元する。
これにより、多重の優先処理が可能となる。
2.実施の形態の詳細
実施の形態について更に詳述する。
〔実施形態1〕
実施形態1に係る信号処理装置の構成について説明する。図1は、実施形態1に係る信号処理装置の機能ブロック図である。
実施形態1に係る信号処理装置は、複数の入力データからなる入力ストリーム11が入力され、ストリームデータに所定のタスクを実行して複数の出力データからなる出力ストリーム12を出力する信号処理部10を備え、以下のように動作する。
入力ストリーム11を構成する入力データは信号処理部10に順次入力され、出力ストリーム12を構成する出力データを信号処理部10から順次出力される。信号処理部10は、信号処理の経過に応じたストリームデータにおけるデータの位置情報を示すポインタ21を備える。
信号処理装置は、第1のタスクを実行中に第2のタスクの優先処理が要求されたとき、ポインタ21が保持する値を退避した後、第2のタスクを実行する。第2のタスクが完了したとき、退避したポインタの値に基づいて、第1のタスクにおいて次に出力すべき出力データの、出力ストリーム12における位置情報を求め、その出力データを算出するために信号処理部10に入力する必要がある全ての入力データのうち先頭の入力データの、入力ストリーム11における位置情報を求める。
入力データおよび出力データの位置情報は、それぞれ、退避したポインタの値pを入力とする関数(51、52)によって算出することができる。
図1において破線で囲んだ部分が、本実施形態1の本質部分である。
このような信号処理装置は、例えば、図1に示すように、入力ストリーム11を格納しており出力ストリーム12を書き込むメモリ40と、タスク切替制御部50とを備え、信号処理部10において、制御部20に、入力アドレスレジスタ23と出力アドレスレジスタ22とを備えて構成することができる。入力アドレスレジスタ23は、信号処理部10が読み込む入力データのメモリ40上のアドレスを保持し、出力アドレスレジスタ22は、信号処理部が書き込む出力データのメモリ40上のアドレスを保持している。信号処理部10には、さらに信号処理モジュール30を備えることができる。信号処理モジュール30は、信号処理部10が入力アドレスレジスタ23によって指定する入力データストリーム11を入力とし、設定された信号処理を実行して、出力アドレスレジスタによって指定されるアドレスに出力データストリーム12を書き込む。
優先処理を終えて元の処理を再開するときに、退避したポインタの値を入力とし、入力データおよび出力データの位置情報を求める関数(51、52)の演算は、タスク切替制御部50の機能として実現することができる。
このような信号処理装置は、例えば図2または図15に示すような、半導体装置によって実施することができる。この半導体装置による実施形態については後述する。
実施形態1に係る信号処理装置の動作について説明する。
図3は、信号処理のタスクを実行中に、さらなる信号処理タスクの実行要求を受けたときの処理フローを表すフローチャートであり、図4は、優先処理を完了した後、元の信号処理を再開するときの処理フローを表すフローチャートである。信号処理タスクが画像処理である場合についての例であるが、入力データが時系列データなどで順次入力され、定形の処理を施して入力データと同様な時系列データを順次出力するような信号処理一般に、適用することができる。このような定形の処理では、出力すべきデータの位置が与えられると、そのデータの算出に必要な入力データが一意に決まり、そのデータを出力するために、どの入力データから入力を再開すれば良いか、関数などによって導出することができるからである。
画像処理タスク(第2のタスク)の優先処理が要求されたとき(ステップ81)、既に別の画像処理タスク(第1のタスク)を実行中か否かを判定する(ステップ82)。第1のタスクが実行中に第2のタスクの優先処理が要求されたときは、いずれのタスクの優先度が高いかを判定する(ステップ83)。第2タスクの優先度が高い場合には、第1タスクの画像処理を中断し、ポインタ21の値を退避する(ステップ84)。その後、第2タスクの画像処理を実行するためのパラメータを設定し(ステップ85)、処理を開始する(ステップ86)。
一方、第2タスクの優先度が低い場合には、第1タスクが終了するまでステップ82で待ち、第1タスクの終了後に第2タスクの画像処理を実行するためのパラメータを設定し(ステップ85)、第2タスクの処理を開始する(ステップ86)。
第2タスクの画像処理を完了したとき(ステップ87)、中断した画像処理タスクの要求があるか否かを判定する(ステップ88)。中断した画像処理タスクの要求がない場合には画像処理を終了する(ステップ92)。一方、中断した画像処理タスクの要求がある場合には、中断したタスクを実行するためのパラメータを再設定する(ステップ89)。さらに、ステップ84で退避したポインタの値を読み出し、その値に基づいて、中断したタスクを再開する入力アドレスと出力アドレスを求める(ステップ90)。出力アドレスは、退避したポインタの値に基づいて導出することができる。第1のタスクにおいて次に出力すべき出力データの出力ストリーム12における位置情報を、退避したポインタの値に基づいて求め、そのデータが格納されているメモリ上のアドレスに換算することによって導出することができる。入力アドレスは、その出力データを算出するために信号処理部10に入力する必要がある全ての入力データのうち先頭の入力データのアドレスとして、退避したポインタの値に基づいて導出することができる。
その後、中断した第1の画像処理タスクを再開する(ステップ91)。
これにより、退避すべき情報量はポインタの値のみで必要最小限であり、膨大な情報の退避と復帰を行わず、復帰後の信号処理を再開するために必要な入力データの位置情報はそのポインタ値から算出しているだけなので、退避および復帰に要する時間的なオーバーヘッドを抑えることができる。
図5〜7を用いて、実施形態1に係る信号処理装置の動作をさらに詳細に説明する。
図5はタスク切替前、図6はタスク切替後優先処理を実行中、図7は優先処理を完了し復帰した後の、信号処理部の状態を、それぞれ表す説明図である。
図5〜7は、信号処理部10が特に画像処理を行う画像処理部10であって、画像処理を実行する画像処理モジュール30と、その画像処理の内容を表すパラメータを保持するパラメータレジスタ24を制御部20内に設け、タスク切替制御部50に、読み出しアドレスの算出を行う読み出しアドレス関数51と書き出しアドレスの算出を行う書き出しアドレス関数52を備えた例である。
画像処理Xの実行中に、画像処理Yを優先処理するために、タスク切替が発生した例について説明する。入力データ41はメモリ40のアドレスAを先頭として格納されており、出力データ42はアドレスA’を先頭として書き込まれる。メモリ40上には、アドレスBを先頭として画像処理Yの入力データ43が格納されており、アドレスB’を先頭として画像処理Yの出力データ44を格納するためのメモリ領域が確保されている。画像処理の進捗に合わせて、読み出し(入力)アドレスレジスタ23の値と、書き出し(出力)アドレスレジスタ22の値を、それぞれ変化させる。ポインタレジスタ21は、画像処理の進捗を表すポインタ値を格納している。ポインタ値としては、画像処理を終えて出力を完了したラインのライン番号、ブロック番号、フレーム番号などを使うことができる。ラインごとの処理の場合はポインタとしてライン番号が適しており、ブロック処理の場合はブロック番号が適している。
図5は、画像処理Yの優先処理要求を受けた時点の状態を表す。画像処理XのためのパラメータXがパラメータレジスタ24に格納され、ポインタレジスタ21は画像処理Xが第pラインまで出力が完了したことを示しており、読み出しアドレスレジスタ23の値はその時点での入力データのアドレスa、書き出しアドレスレジスタ22の値はその時点での出力データのアドレスa’となっている。
優先処理要求を受けると、図3ステップ81〜83について説明したとおり、実行中のタスクである画像処理Xと要求された画像処理Yの優先度の比較を行う。優先度の高いタスクからの要求であると判断すると、タスク切替制御部は、画像処理Xを中断し、ポインタレジスタ21の値pを退避する(図3のステップ84)。このとき、退避するのはポインタ値pのみで、読み出しアドレスレジスタ23の値a、書き出しアドレスレジスタ22の値a’、およびパラメータレジスタ24の値パラメータXは、全て破棄する。これらの値を始め、さらに、画像処理モジュール30の内部の情報も含め、画像処理Xの途中経過を保持するための種々の値を一切退避せず、退避する情報をポインタpの値のみとする。これにより、中断処理が極めて短時間となる。
次に図6に示すように、画像処理Yのため、パラメータレジスタ24にパラメータYを、読み出しアドレスレジスタ23に入力データ43の先頭のデータが格納されているアドレスBを、書き込みアドレスレジスタ22に出力データの先頭のデータを格納すべきアドレスB’を、それぞれ設定し、ポインタレジスタ21は、0に初期化する。画像処理の内容によっては、データの格納順序、処理順序が、格納されている順序と異なる場合がある。その場合は、最初に入力あるいは出力すべきデータのアドレスを、読み出しおよび書き出しアドレスレジスタ23、22に設定すればよく、ポインタも0から始めて順次増加させる他、末尾から始めて順次減少させるなど、処理内容に応じて適宜設定すればよい。
読み出しアドレスレジスタ23によりアドレスbを指定してメモリ40から画像処理モジュール30に入力データ43を順次読み込んで処理し、書き出しアドレスレジスタ22にアドレスb’を指定して処理結果を出力する。ポインタレジスタ21は、この間、画像処理Yの進捗を表すポインタ値を格納している。
画像処理Yのタスクを完了すると、図7に示すように、中断した画像処理Xへの復帰処理を行う。ポインタ値pをポインタレジスタ21に復帰する。書き出しアドレスレジスタ22には、画像処理Xの再開後最初に出力すべきデータのアドレスを設定し、読み出しアドレスレジスタ23には、画像処理Xの再開後最初に入力すべきデータのアドレスを設定する。このアドレスは、タスク切替部における読み出しアドレス関数51および書き出しアドレス関数52にポインタ位置pを入力することにより算出する。
この例では、ポインタ値pが中断前に出力を完了したライン数であるので、書き出しアドレスは先頭の出力データのアドレスA’にポインタ値pのライン数に相当する出力データを格納したアドレスを加えて、再開後最初に出力するデータを格納すべきアドレスを求める。書き出しアドレス関数52は、書き出しアドレスG(p)=G(Pl’(p))である。さらに、読み出しアドレス関数51を用い、読み出しアドレス=F(p)=F(Pl(p))を算出して読み出しアドレスレジスタ23に設定する。ここで、Pl’(p)はポインタ値から画像処理Xの再開後最初に出力すべきデータのライン番号を算出する書き出し画像位置関数であり、Pl(p)はポインタ値から画像処理Xの再開後最初に入力すべきデータのライン番号を算出する読み出し画像位置関数である。書き出しアドレスは先頭アドレスA’と1ライン当たりのアドレス数から算出することができ、読み出しアドレスは先頭アドレスAと1ライン当たりのアドレス数から算出することができる。1ライン当たりのアドレス数は、メモリ上のストライドサイズを指す。画像の1ライン当たりのデータ数とは必ずしも一致しない。画像データをメモリ上に割り付けるとき、隣接する画素のデータを格納するアドレス値の算出を容易にするため、画像の1ラインのデータ数より大きく、アドレスの区切りが良い値でストライドサイズを定めることが多い。このとき、ある画素の格納されているアドレスと上下で隣接する画素のアドレスとは、ストライドサイズ分の差がある。
読み出し画像位置関数Pl(p)と書き出し画像位置関数Pl’(p)は、それぞれ画像入力データ41と画像出力データ42におけるライン番号などで画像の位置を特定する。この例では、書き出し画像位置関数Pl’(p)=p+1である。ポインタ値pが中断前に出力を完了したライン数であるから、再開後にその次のラインから出力を再開すればよい。画像処理Xの再開後最初に出力すべきデータが決まると、画像処理Xにおいてそのデータを求めるために、どこまで入力データを遡って入力すべきかを算出することができる。これを予め求めて読み出し画像位置関数Pl(p)を規定しておく。例えば空間フィルタの場合、そのタップ数によって何ライン遡れば良いかがわかる。空間フィルタの例、上下反転処理の例、およびブレンド処理の例を後述するが、画像処理の内容によって、遡るべき入力データの量が分かるので、それに基づいて読み出し画像位置関数Pl(p)を規定しておけばよい。
読み出しアドレス関数F(p)と書き出しアドレス関数G(p)は、それぞれ、読み出し画像位置関数Pl(p)と書き出し画像位置関数Pl’(p)の出力を、実際のメモリ上のアドレスに変換する関数である。
パラメータレジスタ24には、画像処理モジュール30に画像処理Xを実行させるためのパラメータXを、再設定する。パラメータは処理の経過によって変化しない画像処理に固有の値である。例えば、画像の空間フィルタの場合には、タップ数やフィルタ係数である。復帰すべきタスクが画像処理Xであることがわかれば、そのパラメータはその画像処理を開始するときと同様に、予めプログラム内に保持している値を転送するなどの方法により、再度同じ値を設定すればよい。
以上のように、退避するデータがポインタ値pのみであっても、再開後の書き出しアドレスレジスタ22、読み出しアドレスレジスタ23、パラメータレジスタ24の値を、適切に再設定することができる。
ただし、パラメータレジスタへ再設定すべきパラメータの種類は、ポインタ値から求めることはできない。中断した画像処理の進捗状況がポインタ値で、進捗状況には依存しない画像処理の内容がパラメータであるため、パラメータを退避する必要としない点が本実施形態の本質だからである。したがって、再開するときにどの画像処理のパラメータをパラメータレジスタに再設定すれば良いかを表す、コンテキスト番号を定義して、ポインタ値とともに退避しておくことも有効である。このような実施形態については後述する。
本実施形態では、読み出しアドレス関数51と書き出しアドレス関数52は、画像位置関数を用いて表す例を示したが、再開すべき入力アドレスと出力アドレスをポインタ値に基づいて算出することができればよく、必ずしも画像位置関数を用いる必要はない。入出力データが格納されているアドレスは、画像処理タスクが実行されるハードウェア環境に依存するが、画像処理の進捗を入力データの位置、演算中のデータの位置、出力データの位置を、画像位置関数を用いることにより、それぞれのストリームにおける画像データとしての位置で表現し、画像位置関数をハードウェア環境に依存しないものとすることができる。これにより、タスク切替制御部におけるアドレスの算出が簡略化される。例えば、画像処理タスクを記述するソフトウェアを他のハードウェア環境に移植する場合には、データの格納されている先頭アドレス、1ライン当たりのデータ量など、入出力データがメモリ上にどのようにマッピングされているかの情報のみを整合させればよい。また、画像処理モジュール30が複数の画像処理を実行する場合には、対応する複数の画像位置関数と、入出力それぞれのアドレス関数によって表現することによって、アドレスの算出が簡略化される。複数の画像処理を実行する場合については、後述の実施形態5において説明する。
実施形態1に係る信号処理装置の効果について説明する。
図8は、実施形態1によるタスク切替の効果を表す説明図である。横軸に時間の経過を取り、画像処理の流れを表している。(a)は優先処理を要求する割り込みがない通常処理である。この例では、画像のフレームごとに処理を行うタスクが実行され、タスクの終了時にフレーム処理の終了がこれら画像処理を管理するOSなどのソフトウェアに対して通知される。フレーム1の処理中に別の画像処理タスクの優先処理を要求する割り込みがあったとき、従来技術では、2種類の対応方法が考えられる。(b)はフレーム1の終了を待って優先画像処理Yのタスクを開始する場合であり、(c)はフレーム1の処理をすぐに中断して優先画像処理Yのタスクを開始し、Yの終了後、フレーム1の先頭に戻って処理を再開する場合である。
(b)では、フレーム1の終了を待って中断処理を行い、その後、優先画像処理Yのタスクを実行し、優先処理が完了した後に、既に終了しているフレーム1の次のフレーム2の先頭から中断前の画像処理を再開する。フレーム1の処理を途中で中断しているわけではないので、退避すべき情報はフレーム1を完了したという情報のみでよく、完了したフレーム1に続いてフレーム2から再開すれば良いので、復帰すべき情報もない。しかし、優先されるべき画像処理Yの開始が処理中のフレームの処理を待たされる分だけ遅れるという問題がある。
一方、(c)は、フレーム1の処理を強制的に中断する。演算経過などの情報をすべて破棄して、優先画像処理Yを実行する。これにより、優先されるべき画像処理Yの開始が処理中のフレームの処理を待たされる分だけ遅れるという、上記の問題は解決される。しかし、再開するときに、フレーム1についての処理が中断したときの途中経過情報を残していなければ、フレーム1の処理の先頭から再度処理を行わなければならず、優先処理割り込みの前までに実行されたフレーム1の処理が無駄になる。
画像処理を始めとする信号処理は、取り扱うデータの量が膨大であるとともに、処理の途中経過のデータも、通常のソフトウェアよりも膨大である。例えば、3×3の画像の空間フィルタの場合、中央の画素のデータを計算するために、入力として周囲の8画素のデータを必要とする。タップ数が多ければ当然に入力として必要なデータ数も多くなる。これを通常のソフトウェアのコンテキストスイッチと同様の考え方で、処理途中のデータ全てを退避させるようにすると、ある画素の演算後に中断した後、次の画素から再開するためには、入力に必要な周囲の画素データはもちろん、既に入力され今後タスクで参照される画素データを全て退避しておくことになる。この場合に退避すべきデータの量が、通常のソフトウェアと比較して膨大になってしまうことは明らかである。そのため、通常のソフトウェアのコンテキストスイッチと同様に処理の途中経過の全ての情報を退避させることは、現実的に許されず、従来は優先処理のための処理として(b)または(c)が採用されている。
本実施形態1においては、退避するデータはポインタ値pのみであり、ポインタ値は、画像処理部が出力を完了した出力データのライン番号である。復帰するときは、退避したポインタ値pから必要な読み出しアドレスと書き出しアドレスを算出してアドレスレジスタ22、23に設定し、パラメータレジスタ24を再設定するだけなので、(d)に示すように、中断処理と再開処理に要する時間は、(b)(c)と同様に極めて短くて済む。(c)と同様に、優先処理割り込みの後、フレーム1の画像処理の途中で中断処理を行い、すぐに優先画像処理Yを開始しているので、(b)のように優先画像処理Yを待たせることがなく、かつ、再開処理後は、(c)のようにフレームの先頭に戻るのではなく、フレーム1で出力済みの第pラインの次のラインから処理を再開するので、既に行った処理が無駄になることがない。
本実施形態においては、ポインタ値が出力済みのライン番号である場合について説明したが、ポインタ値は、出力ストリームにおける画素番号、ライン番号、ブロック番号、もしくはフレーム番号、またはその組み合わせのいずれかであってもよい。また、ポインタ値が出力ではなく入力済みの入力データの、入力ストリームにおける画素番号、ライン番号、ブロック番号、もしくはフレーム番号、またはその組み合わせのいずれかであってもよい。
画像処理を始めとする信号処理は、入力データを順次入力し、演算処理を施して出力データを順次出力する。タスク切替において、演算の途中経過を全て退避し復帰することができれば理想的であるが、これが現実的には許されないことは、上述した通りである。本願の発明者は、演算の途中経過は、入力データをある程度遡って再度入力すれば、再現することができることを見出した。退避するデータを画像処理の経過を表すポインタの値のみとし、復帰の時にはそのポインタ値に基づいて、次に出力すべきデータの位置を求め、さらにその出力を算出するために必要な全ての入力データのうちの先頭へ戻って処理を再開すれば、再開後の画像処理タスクの進行に伴って中断したときの処理の途中経過が再現され、次に出力すべきデータの算出を始めとして、その後の画像処理を中断した位置からの引き続き再開したのと同様に再開することができる。
また、退避する値はポインタ値のみで十分であるが、再開する画像処理の内容を示す、例えばコンテキスト番号をさらに退避してもよい。ポインタ値とコンテキスト番号は、取り得る値が限られるので、それぞれ1バイト乃至2バイトあれば十分である。画像処理の途中経過を全て退避する場合と比較して極めて少ない情報量を退避すれば足りることになる。
〔実施形態2〕<空間フィルタ(FIRフィルタ)>
画像処理モジュール30の実行する画像処理が画像の空間フィルタである場合の実施形態について説明する。実施形態1において、空間フィルタ処理に対応する画像位置関数を用いればよく、他の構成および動作は実施形態1と同じである。
図9は、空間フィルタ処理に対応する画像位置関数の考え方を表す説明図である。水平サイズH、垂直サイズVの画像データに、3×3のFIRフィルタで表される空間フィルタ処理を施し、同じ大きさの画像データを出力する。H×Vの入力画像データは、メモリ40上に先頭アドレスをAとして格納されており、アドレスA’を先頭として出力する。画像の水平サイズHは、メモリのストライドサイズhと一致させてもよいし、異なっていてもよい。入力データ41と出力データ42は、先頭アドレスが異なるが同じ構造であるから、図9では、入力データ41のみを図示し、出力データの図示を省略してある。
FIRフィルタは、Finite Impulse Response Filterの略で、ある画素の値を求めるために、その画素の周辺の画素データに所定の係数をかけて重みづけ加算する演算を行うものである。出力する画素を中心に全方向で隣接する8画素のデータを用いるのが、3×3のFIRフィルタである。画像データを平面としたとき、3×3の正方形の領域を入力としてその中央の画素について出力データを算出する。2画素遠方までのデータを入力するときには5×5、3画素遠方までのデータを入力するときには7×7のFIRフィルタとなる。3×3、5×5、7×7などの大きさをタップ数、あるいは次数と呼ぶ。
先頭からCラインの出力を完了した時点で優先処理が要求され、空間フィルタ処理を中断したとする。このときポインタ値pはCであり、タスク切替制御部はこの値を退避する。この時点で、読み出しアドレスレジスタは、C+1ラインの読み出しを完了している。3×3のFIRフィルタは、出力する画素のデータを求めるために、隣接する8画素全てのデータを入力として演算するので、Cラインのデータの出力を完了しているということは、C+1ラインの入力を完了していることになるからである。
優先処理を完了して復帰するときには、中断前に出力を完了したCラインに続いて、C+1ラインの出力から再開する。このため、書き出し画像位置関数はPl’(p)=p+1である。C+1ラインのデータを算出するために必要なデータのうちの先頭のデータは、Cラインの入力データである。このため、読み出し画像位置関数はPl(p)=pとなる。このとき、読み出しアドレス関数はF(p)=A+(p−1)×hとなり、書き出しアドレス関数はG(p)=A’+p×hとなる。ここで、hはメモリストライドサイズである。
図9は3×3のFIRフィルタによる空間フィルタについて例示したが、一般にN×N(Nは奇数)のFIRフィルタによる空間フィルタの場合、書き出し画像位置関数はPl’(p)=p+1であり、読み出し画像位置関数はPl(p)=(p+1)−(N−1)/2となる。退避したポインタ値の次のラインから出力を再開すればよいので、書き出し画像位置関数は3×3のFIRフィルタによる空間フィルタの場合と同じである。読み出し画像位置関数については、p+1ラインの出力を求めるために、(N−1)/2ライン前までのデータが入力として必要であるので、上記のように規定される。
3×3のFIRフィルタによる空間フィルタの場合、Cラインの出力を完了して中断した時点では、C+1ラインのデータまで、画像処理モジュール30に入力されている。一般のソフトウェアのコンテキストスイッチングと同じ手法を適用すれば、C+1ラインの出力から再開するためにC+2ラインから入力を再開することになる。しかし、これを実現するためには、既に画像処理モジュール30に入力されているCラインおよびC+1ラインのデータ全てを退避することが必要となる。画像の水平サイズは、VGAで640pixel、高精細化により、800〜1024pixelに増えてきており、1ライン分のデータは1画素の輝度データが8ビットと仮定しても約1KByteとなり、3色各2Byteとすれば約6KByteにもなる。フィルタのタップ数が大きくなれば、それに応じて退避すべきデータのライン数が増えるので、退避すべきデータ量は膨大になる。実用上、画像処理のデータを退避させることは許されない。
本実施形態においては、2ライン分の入力データを退避し、復帰させる代わりに、それらのデータを再度入力する。そのために、C+2ラインからの入力を再開ではなく、Cラインまで遡って入力を再開する。これにより、退避すべきデータはポインタ値のみとなる。ポインタ値は実施形態ではライン番号であれば良いので、2Byteあれば十分である。
以上は、出力を完了したライン数をポインタとした場合について説明したが、入力を完了したライン数をポインタとしてもよい。入力画像位置関数はPl(p)=p−2となり、出力画像位置関数はPl’(p)=p−1となる。
本実施形態では、ラインの途中で優先処理の要求があっても、そのラインの処理を完了した後で中断する処理を行うか、処理中のラインの処理を強制終了して中断し、再開後はそのラインの最初から処理を再開する。さらに改良して、ラインの途中で処理を中断し、かつ再開させるためには、ポインタをライン数と画素数で構成すればよい。退避・復帰するデータがポインタの値のみであることは同様であるが、ポインタの内容がライン数だけでなく画素数も含むので、退避・復帰するデータの量は多くなるが、ライン処理の終了を待つことなく優先処理を開始することができ、あるいは処理の途中経過を破棄することなくライン処理の途中から再開することができるので、退避および復帰に要する時間的なオーバーヘッドをさらに抑えて、タスク切替を実行することができる。
なお、H×Vの長方形の画像周辺部では、本来必要な画素がH×Vの長方形の外側に相当する場合に入力すべきデータが得られない状態となる。この場合には、本実施形態にも、画像の空間フィルタ一般における周知の画像端処理を適用することができる。
本実施形態では、処理対象ラインの上下のラインのデータを入力する信号処理の例として、FIRフィルタを取り上げた。拡大縮小処理についても、補間あるいは間引きするために処理対象ラインの上下のラインのデータを入力する必要があるので、同様の考え方で画像位置関数とアドレス関数を構成することができる。
〔実施形態3〕<上下反転処理>
画像処理モジュール30の実行する画像処理が画像の上下反転処理である場合の実施形態について説明する。実施形態1において、上下反転処理に対応する画像位置関数を用いればよく、他の構成および動作は実施形態1と同じである。
図10は、上下反転処理に対応する画像位置関数の考え方を表す説明図である。水平サイズH、垂直サイズVの画像データに、上下反転処理を施し、同じ大きさの画像データを出力する。H×Vの入力画像データは、メモリ40上に先頭アドレスをAとして格納されており、アドレスA’を先頭として出力する。画像の水平サイズHは、メモリストライドサイズhと一致させてもよいし、異なっていてもよい。入力データ41と出力データ42は、先頭アドレスが異なるが同じ構造であるから、図10では、入力データ41のみを図示し、出力データ42の図示を省略してある。
上下反転処理では、上から順に入力して下から順に出力する場合と、下から順に入力して上から順に出力する場合がある。上から順に入力して下から順に出力する場合は入力データが下まで揃っていなくても処理を開始することができるが、出力は先頭データが最後に出力されるので、先頭データが出力されるまで次の処理を開始することができないことが多い。逆に下から順に入力して上から順に出力する場合は、入力データ全て揃うのを待って処理を開始しなければならないが、先頭データから順次出力されるので、次の処理を順次始めることが可能となる。
下から順に入力して上から順に出力する実施形態について説明する。
ポインタは、出力済みのライン数を保持するものとする。下からCラインまで入力されCライン出力済みの時点で優先処理が要求されたとすると、退避されるポインタ値はp=Cとなる。図10において濃いハッチングの部分が入力データ41において入力済みの領域である。反転処理なので、下からCライン入力されたデータは、図示を省略したアドレスA’を先頭とする領域に上からCラインまで出力されている。
復帰後、次に出力すべきデータは、C+1ラインであるので、書き出し画像位置関数Pl’(p)=p+1となる。このとき、書き出しアドレス関数はG(p)=A’+p×hとなる。
読み出し位置関数は、中断前までに下からCラインまで入力が終わっており、上下反転処理ではそれに対応する反転出力も完了しているので、再開後に入力が必要なのは下からC+1ライン目で、メモリ上ではV−Cライン目である。読み出し画像位置関数はPl(p)=V−pであり、読み出しアドレス関数はF(p)A+(V−p−1)×hとなる。
本実施形態では、処理対象のラインに対して必要となるラインの順番が異なる例として、上下反転処理を取り上げて説明したが、左右反転処理、回転処理についても、同様の考え方で、画像位置関数とアドレス関数を構成することができる。
なお、上下反転処理と左右反転処理で対称軸が画面中央にない場合、および、回転処理では、画像の末端処理が必要になる場合があるが、本実施形態についても、周知の画像端処理の手法を適用することができる。
〔実施形態4〕<ブレンド処理>
画像処理モジュール30の実行する画像処理が複数の画像のブレンド処理である場合の実施形態について説明する。実施形態1において、ブレンド処理に対応する画像位置関数を用いればよく、他の構成および動作は実施形態1と同じである。
図11は、ブレンド処理に対応する画像位置関数の考え方を表す説明図である。
説明を簡略化するため、2画面の画像を合成する実施形態について説明する。メモリ40上にアドレスApを先頭として格納されているHp×Vpの親画面と、アドレスAcを先頭として格納されているHc×Vcの子画面とを合成して、アドレスA’を先頭として合成された画像を出力する。親画面、子画面および出力画像のメモリストライドサイズをそれぞれ、hp、hc、およびhとする。合成された画像は、Hp×Vpの親画面の内側に左上からの水平方向にHoffと垂直方向にVoffのオフセットを加えた領域をHc×Vcの子画面に置き換えたものである。
ポインタは、出力済みのライン数を保持するものとする。Cラインまで出力した時点で優先処理が要求されたとすると、退避されるポインタ値はp=Cとなる。
復帰後、次に出力すべきデータは、C+1ラインであるので、書き出し画像位置関数Pl’(p)=p+1となる。このとき、書き出しアドレス関数はG(p)=A’+p×hとなる。
読み出し位置関数は、親画面についてのPlp(p)と子画面についてのPlc(p)とを定義し、読み出しアドレス関数は、親画面についてのFp(p)と子画面についてのFc(p)とを定義する。
合成画像のC+1ラインの出力に必要な親画面からの入力は、C+1ラインであるので、Plp(p)=p+1であり、アドレス関数はFp(p)=Ap+p×hpとなる。
合成画像のC+1ラインの出力に必要な子画面からの入力は、C−Voff≧0であればC−Voff+1ラインであるので、Plc(p)=p−Voff+1であり、アドレス関数はAc+(p−Voff)×hcとなる。C−Voff<0の場合は当該ラインでは子画面が重なっていないので、子画面のデータを入力する必要はない。
このように、複数の画像を入力する場合には、それぞれの入力画像に読み出し画像位置関数と読み出しアドレス関数を用意する。
〔実施形態5〕<複数の処理の組合せ>
画像処理モジュール30の実行する画像処理が複数の画像処理の組合せである場合の実施形態について説明する。実施形態1において、複数の画像処理の組合せに対応する画像位置関数を用いればよく、他の構成および動作は実施形態1と同じである。
複数の画像処理の組合せは多岐に渡るが、まず、入力画像に対して画像処理Xを実行し、その出力に対して画像処理Yを実行して出力画像を得るような、縦続処理について説明する。
出力画像において、出力済みのライン番号をポインタ値pとし、中断処理で退避させる。復帰後、最初に出力すべきはp+1ラインとなる。画像処理Yについて、出力すべきライン番号を入力してそれに必要な入力データの先頭のライン番号を出力するように、画像位置関数Ply(p)を定義する。このとき、その前段の画像処理Xは、画像処理Yが最初に必要とする入力データの先頭のライン番号即ちPly(p)を入力して、それに必要な入力データの先頭のライン番号を出力するように、画像位置関数Plx(p)を定義する。
アドレス関数F(p)は、Plx(p)が指定するデータのメモリ上のアドレスを与えるように定義する。出力画像の先頭アドレスをA’、メモリストライドサイズをhとすると、アドレス関数はF(p)=A’+(Plx(Ply(p))−1)×hとして定義することができる。
画像位置関数とアドレス関数は、合成したときに適切なアドレスを算出することができれば足りるので、画像位置関数の入出力を出力済みのライン数とするか、入力済みのライン数とするか、画面全体におけるライン番号とするかなど、定義の方法は一般には任意である。
上記のような組み合わせを考える場合には、入力画像、Xの出力画像、Yの入力画像および最終的な出力画像が、全て同じ大きさで、画像位置関数の入出力を先頭からのライン番号に統一すると、関数の結合が簡略化される。即ち、複数の画像処理についての画像位置関数の間で、オフセットなどの処理を施すことなく、後段の処理に係る画像位置関数の出力をその前段の処理に係る画像位置関数の入力としてネスティングすることができる。例えば、本実施例では、Plx(Ply(p))としている。Ply(p)の出力の定義が画像先頭からのライン数でも、Plxの入力の定義が画像の下からのライン数であるような場合には、単純にPlx(Ply(p))とすることはできない。画像の垂直方向のサイズVを使いPlx(V−Ply(p))などのように、整合を取る必要が生じる。
以上、ポインタが出力済のライン番号である場合について主に説明したが、ポインタは画像処理の経過を表す別の方法でも、同様に本実施形態を適用することができる。ポインタはライン番号の他、画素番号、ブロック番号、フレーム番号、またはそれらの組合せであっても、同様に画像位置関数を定義し、復帰後の入力開始アドレスを求めることによって、同様の効果を奏することができる。また、画像位置関数の入出力が、ライン番号に統一されていなく、画素番号、ブロック番号、フレーム番号、またはそれらの組合せを用いる関数が混在していても、後段の処理に係る画像位置関数の出力をその前段の処理に係る画像位置関数の入力としてネスティングする際に整合を取ればよい。退避したポインタの値に基づいて、復帰後の出力が中断時点から再開できるように、その出力を算出するために必要な入力データの先頭を順次遡って算出し、そのデータのメモリ上のアドレスを指定して入力を再開すればよい。
これにより、退避すべき情報量はポインタの値のみで必要最小限であり、膨大な情報の退避と復帰を行わず、復帰後の信号処理を再開するために必要な入力データの位置情報はそのポインタ値から算出しているだけなので、退避および復帰に要する時間的なオーバーヘッドを抑えることができる。
〔実施形態6〕<ブロック処理>
画像処理には、画像を正方形のブロックに分け、ブロックごとに処理を実行するものがある。例えば、離散コサイン変換は、一般に8画素×8画素のブロックに対して、行列演算を実行して周波数領域のデータに変換する処理である。ブロックの形状は正方形が一般的であるが、それに限定されるものではない。
ブロック処理の場合でも、ライン処理と同様にライン毎に順次読み込んで、画像処理モジュール内への入力が完了したブロックから順に処理を実行することもできる。画像処理モジュール内に数ブロック分のバッファが必要となるが、読み出しアドレスの制御は簡略で済む。この場合は、今まで述べてきたのと同様に、ポインタはライン数で表すことができる。内部の処理がブロック処理であっても、ポインタがライン番号であれば、実施形態1をそのまま適用することができる。
ライン毎ではなくブロックごとに入力し出力する場合は、読み出しと書き出しのアドレス制御は、より複雑になるが、画像処理モジュールへは、必要なデータのみが入力されるので、処理前のデータを保持するための内部バッファを必要としない。この場合、ポインタは入力済みまたは出力済みのブロック番号とすることができる。
図12は、ブロック処理におけるタスク切替についての説明図である。画像処理部10の制御部20に設けられたパラメータレジスタ24には、画像処理モジュール30に対してブロック処理を指示するパラメータWが格納されている。入力データ41はアドレスAを先頭としてメモリ40に格納されており、出力データ42はアドレスA’を先頭として出力される。ブロックサイズはM×Mとし、メモリの横方向にL個のブロックが格納されているものとし、出力データ42も同様の形状でメモリ上に格納されるものとする。
ポインタは出力済みのブロックのブロック番号qを保持しており、優先処理が要求されて中断した時点で、出力データ42がqブロックまで出力され、入力データ41はq+1ブロックまで入力を完了している。タスク切替制御部は、ポインタ値qを退避して優先処理を実行させ、これが終わった時にポインタ値qに基づいて読み出しアドレスと書き出しアドレスを算出する。整数iとjを使ってブロック番号qをq=i×L+j(0≦j<L)と表したとき、そのブロックの先頭アドレスは、A+i×L×M^2+(j―1)×Mとなる。
再開後最初に出力すべきブロックは、q+1ブロックであり、q+1=i×L+jと表せるとき、書き出しアドレスは、A’+i×L×M^2+(j―1)×Mとなる。これを出力するために必要な入力ブロックはq+1ブロックで、読み出しアドレスは、A+i×L×M^2+(j―1)×Mとなる。
ブロック番号に基づいてアドレスを求める関数が単純ではなくなるが、考え方は、ライン番号をポインタとした場合と同様である。退避したポインタ値qに基づいて、再開後最初に出力すべきブロックを求め、これを出力するために必要な入力ブロックの位置から、そのデータが格納されているメモリ上のアドレスを求め、そのアドレスから処理を再開する。
これにより、退避すべき情報量はブロック番号であるポインタの値のみで必要最小限であり、膨大な情報の退避と復帰を行わず、復帰後の信号処理を再開するために必要な入力データの位置情報はそのポインタ値から算出しているだけなので、退避および復帰に要する時間的なオーバーヘッドを抑えることができるという効果も同様である。
なお、ブロック処理とライン処理が組み合わされた場合も、同様の考え方で実施することができる。
〔実施形態7〕<フレーム間処理>
画像処理には、さらに、フレーム間のデータを参照して行う処理がある。例えば、動き補償等をする場合に、1フレーム前の画像との差分を取って、動きの有無や方向、大きさなどを算出する処理である。
図13は、フレーム間処理を行う信号処理装置の機能ブロック図である。
入力データ41は、アドレスAを先頭として格納されている処理対象のフレームに加えて、アドレスA−1frameを先頭として格納されている1フレーム前のデータも、画像処理モジュール30に入力する必要がある。出力データ42は、アドレスA’を先頭としてメモリ40に書き込む。ポインタ21には、例えば出力済のライン番号を保持する。中断したときにはポインタ値pを退避し、退避したポインタ値pに基づいて処理を再開した後最初に出力すべきデータの位置をp+1ラインとして求めて、それに対応する書き出しアドレスを設定する点は、同様である。一方、読み出しアドレスは、処理対象のフレームとその1フレーム前のフレームについて、それぞれ、画像位置関数とアドレス関数を定義し、それぞれのフレームについて読み出しアドレスレジスタを設けるとよい。通常、処理対象の画像データの位置とその処理に必要な1フレーム前の画像データの位置は、フレーム内の相対的な位置が同じであることがほとんどであるので、それぞれに設けても、アドレス関数などはちょうど1フレームの差を持たせればよい。
これにより、フレーム処理であっても、退避すべき情報量はポインタの値のみであり、ポインタ値もライン番号とすることもできるので、退避すべき情報量は必要最小限である。膨大な情報の退避と復帰を行わず、復帰後の信号処理を再開するために必要な入力データの位置情報はそのポインタ値から算出している点でも他の実施形態と同様であるから、退避および復帰に要する時間的なオーバーヘッドを抑えることができるという効果も同様である。さらに、動き補償等を行うような複数フレームのデータを用いて画像処理を行う場合においても画像位置関数とアドレス関数をそれぞれ用意することで本実施形態を適用することができる。
〔実施形態8〕<多重優先処理>
図14は、優先処理中のさらなる優先処理要求によるタスク切替についての説明図である。
図中の優先度は数字が小さいほど優先度が高いものとする。
優先度3を持った処理Xの画像処理を開始する。
処理Xの途中で優先度2を持った処理Yの要求が入ると、処理Xで処理が完了しているラインを示すポインタ値Pxを退避し、処理Xを中断、ポインタを初期化の上、処理Yを開始する。
さらに、途中で優先度1を持った処理Zの要求が入ると、処理Yで処理が完了しているラインを示すポインタ値Pyを保存し、処理Yを中断、ポインタを初期化の上、処理Zを開始する。
処理Zが終了すると、中断している処理のうち、最も優先度の高い処理Yを再開するため、退避したポインタ値Pyから再開するアドレスを求めて処理を再開する。
処理Yが終了すると、最後に残っている処理Xを再開するため、退避したポインタ値Pxから再開するアドレスを求めて処理を再開する。
ポインタ値は、例えば、周知のプッシュポップ型のスタックに退避し、復帰させることができる。
図14では2つ優先処理が割り込んだ場合の例を示したが、先のフローチャートで示した処理を行うことで3つ以上複数要求が途中で発生した場合でも同様の処理方法により、ポインタ1つで多重の優先度処理を行うことができる。
〔実施形態9〕<半導体装置>
実施形態1に係る信号処理装置を実施した画像処理システムについて説明する。この画像処理システムは、半導体装置として実現することができる。
図2は、実施形態1に係る信号処理装置を実施した、半導体装置46のブロック図である。
画像処理部10は、画像入力部63、画像出力部64、およびCPU45とメモリ40に、バス55を介して接続されている。CPU45は、タスク切替制御部50の機能の他、システム全体の制御も行う。メモリ40はシステムで使用する画像データの格納等に用いる。画像入力部63はカメラやテレビ放送等入力装置61から送られてくる画像データを、バス55を通してメモリ40へ書き込む。画像処理部10はメモリ40上のデータを入力として必要な画像処理(拡大縮小・画面合成・フィルタ処理等)を行い、処理済みの画像データを再びメモリ40へ格納する。画像出力部64はLCD等表示装置62へ出力するためのインターフェースで処理済画像データをメモリから読み出しシステムから出力して表示する。これらの制御はCPU45によってハードウェアとソフトウェアが協調して行われる。
画像処理部10は、図2では内部を省略して示しているが、図1、12、13などに示したような実施形態で構成することができる。画像処理モジュールは、複数の画像処理を行うハードウェアをそれぞれ備えて構成することができ、あるいは、1つのプログラマブルなアクセラレータでもよく、また、その組み合わせによって実現してもよい。また、CPU上で動作するソフトウェアによって実現してもよい。
図1、12、13などに示したような実施形態において、タスク切替制御部50として説明した機能は、CPU45で実現することができる。中断処理においてポインタ値はポインタレジスタ21から読み出してメモリに書き込み、再開処理においてCPU45は、ポインタ値をメモリ40から読み出し、画像位置関数とアドレス関数に代入して再開後の読み出しアドレスと書き出しアドレスを求め、各アドレスレジスタ22、23に設定する。ポインタの退避と復帰は、通常の割り込みなどの例外処理における退避・復帰と同様に、プッシュポップ型のスタックを用いた周知技術によることができる。各種の画像処理のパラメータは、メモリ40上に予め格納しておき、要求のあった処理、あるいは再開する処理の内容に応じて読み出し、画像処理部10のパラメータレジスタ24に設定して、画像処理モジュール30に該当する処理を実行させる。ポインタを退避するだけでも良いが、中断された画像処理の内容を示すコンテキスト番号をさらに退避させてもよい。再開するときに、退避したポインタ値とともに中断した画像処理のコンテキスト番号を読み出し、その番号から画像処理内容を判断し、必要なパラメータをメモリ40から読み出してパラメータレジスタ24に設定することができる。
パラメータを、処理の経過に依存して変化しない画像処理内容に固有の値とし、処理の経過を示すのをポインタのみとすることで、中断処理においてパラメータ値を退避する必要がなくポインタ値のみを退避すれば足りるので、退避および復帰に要する時間的なオーバーヘッドを抑えることができる。中断された画像処理の内容を示すコンテキスト番号をさらに退避すれば、再開時に必要なパラメータの再設定が容易になる。
〔実施形態10〕<コンテキスト処理部>
図15は、コンテキスト処理部を備える半導体装置のブロック図である。
実施形態9において、タスク切替処理部50の機能をCPU45のソフトウェアで実現したのに代え、コンテキスト処理部70をさらに備えたものである。
コンテキスト処理部70は、制御部71、コンテキスト位置記憶部72、および復元部73を備える。優先処理が要求されたとき、コンテキスト位置記憶部72は、ポインタ値pを読み出して記憶部76に記憶し、合わせて、中断する処理のコンテキスト番号75も記憶する。ポインタ値pとコンテキスト番号75を紐付け(関連付け)して記憶する。この記憶はプッシュポップ方式でも良いし、スタックした順序を表す制御NOを合わせて記憶してもよい。
優先処理が終了して中断した処理を再開する場合には、コンテキスト位置記憶部72に記憶したポインタ値に基づいて、復元部73において再開後の読み出しアドレスと書き出しアドレスを求めて、読み出しアドレスレジスタ23と書き出しアドレスレジスタ22に設定する。さらに、コンテキスト番号75に基づいて中断した処理内容を判別し、メモリ40に記憶されているパラメータ群から該当するパラメータを読み出してパラメータレジスタ24に設定する。メモリ40からのパラメータの転送は、コンテキスト処理部70がバスマスタとして振舞うダイレクトメモリアクセスであっても良いし、コンテキスト処理部70が復元部73にパラメータ群を予め記憶しておいて転送しても良く、あるいは、CPU45にそのような転送制御を要求してもよい。
これにより、CPU45の負担を軽減して、タスク切替を実施することができる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、実施の形態の詳細では、主に信号処理が画像信号を対象とした場合について述べたが、入力データが時系列データなどで順次入力され、定形の処理を施して入力データと同様な時系列データを順次出力する実施形態も、容易に実現することができる。順次出力される出力データが、優先処理によって中断したとき、復帰するときに中断後切れ目なく出力するために必要な出力データの位置を求め、そのデータを出力するために必要なすべての入力データのうちの先頭に戻って入力を再開すればよいからである。
10 信号処理部
11 入力ストリーム
12 出力ストリーム
20 画像(信号)処理制御部
21 ポインタ
22 書き出し(出力)アドレスレジスタ
23 読み出し(入力)アドレスレジスタ
24 パラメータレジスタ
30 画像(信号)処理モジュール
40 メモリ
45 CPU
46 半導体装置
50 タスク切替制御部
51 読み出し(入力)アドレス関数
52 書き出し(出力)アドレス関数
55 バス
70 コンテキスト処理部
72 コンテキスト位置記憶部
73 復元部
81 優先処理を受け付けるステップ
84 処理を中断し、ポインタ値を退避するステップ
86 優先処理を開始するステップ
90 再開時に、退避したポインタ値から再開するアドレス値を導出、再設定するステップ

Claims (16)

  1. 複数の入力データからなる入力ストリームが入力され、ストリームデータに所定のタスクを実行して複数の出力データからなる出力ストリームを出力する信号処理部を備える信号処理装置であって
    前記入力ストリームは入力データを前記信号処理部に順次入力し、前記出力ストリームを構成する出力データを前記信号処理部から順次出力し、前記信号処理部の処理の経過に応じた前記ストリームデータにおけるデータの位置情報を示すポインタを備え、
    第1のタスクを実行中に第2のタスクの優先処理が要求されたとき、前記ポインタが保持する値を退避した後、前記第2のタスクを実行し、
    前記第2のタスクが完了したとき、前記退避したポインタの値に基づいて、前記第1のタスクにおいて次に出力すべき出力データの前記出力ストリームにおける位置情報を求め、前記次に出力すべき出力データを算出するために前記信号処理部に入力する必要がある全ての入力データのうち先頭の入力データの前記入力ストリームにおける位置情報を求め、
    前記信号処理装置は、前記入力ストリームを格納し前記出力ストリームを書き込むメモリと、タスク切替制御部とをさらに備え、
    前記信号処理部は、入力アドレスレジスタと出力アドレスレジスタとを備え、前記入力アドレスレジスタは、前記信号処理部が読み込む前記入力データの前記メモリ上のアドレスを保持し、前記出力アドレスレジスタは、前記信号処理部が書き込む前記出力データの前記メモリ上のアドレスを保持し、
    前記タスク切替制御部は、前記第2のタスクが完了したとき、
    出力位置関数により、前記退避したポインタの値に基づいて、前記第1のタスクにおいて次に出力すべき出力データの出力ストリームにおける位置情報を算出し、出力アドレス関数により、前記出力位置関数の出力に基づいて、前記次に出力すべき出力データの前記メモリにおけるアドレスを算出して、前記出力アドレスレジスタに書き込み、
    入力位置関数により、前記退避したポインタの値に基づいて、前記先頭の入力データの入力ストリームにおける位置情報を算出し、入力アドレス関数により、前記先頭の入力データの前記メモリにおけるアドレスを算出して、前記入力アドレスレジスタに書き込み、
    前記第1のタスクが、前記信号処理部によって、前記入力ストリームに信号処理を実施して得た出力ストリームを順次次の信号処理の入力ストリームとする複数の信号処理を含む信号処理タスクであり、
    前記複数の信号処理のそれぞれについて、次に出力すべき出力データを算出するために前記信号処理部に入力する必要がある全ての入力データのうち先頭の入力データの位置情報を出力する部分位置関数を備え、
    前記複数の信号処理のうち前記第1のタスクにおいて最後に実行される信号処理に対応する部分位置関数に前記退避したポインタの値を入力し、
    前記複数の信号処理のうち前記第1のタスクにおいて後に実行される信号処理に対応する部分位置関数の出力を、その直前に実行される信号処理に対応する部分位置関数に入力することにより、順次ネスティングして、前記入力位置関数を構成する、信号処理装置。
  2. 請求項1において、前記ストリームデータが画像データであって、前記ポインタは、前記信号処理部が出力を完了した出力データの前記出力ストリームにおける画素番号、ライン番号、ブロック番号、もしくはフレーム番号、またはその組み合わせを保持し、
    前記出力位置関数は、前記退避したポインタの値に基づいて、前記第1のタスクにおいて次に出力すべき出力データの画素番号、ライン番号、ブロック番号、もしくはフレーム番号、またはその組み合わせを算出し、
    前記入力位置関数により、前記退避したポインタの値に基づいて、前記先頭の入力データの前記入力ストリームにおける画素番号、ライン番号、ブロック番号、もしくはフレーム番号、またはその組み合わせを算出する、信号処理装置。
  3. 請求項1において、前記ストリームデータが画像データであって、前記ポインタは、前記信号処理部が入力を完了した入力データの前記入力ストリームにおける画素番号、ライン番号、ブロック番号、もしくはフレーム番号、またはその組み合わせを保持し、
    前記出力位置関数は、前記退避したポインタの値に基づいて、前記第1のタスクにおいて次に出力すべき出力データの画素番号、ライン番号、ブロック番号、もしくはフレーム番号、またはその組み合わせを算出し、
    前記入力位置関数により、前記退避したポインタの値に基づいて、前記先頭の入力データの前記入力ストリームにおける画素番号、ライン番号、ブロック番号、もしくはフレーム番号、またはその組み合わせを算出する、信号処理装置。
  4. 請求項1において、前記ストリームデータは画像データであって、前記信号処理部によって実施される信号処理の1つがn×n(nは3以上の奇数)の空間フィルタであって、前記空間フィルタ処理に対応する部分位置関数が、出力を完了したライン番号を入力し、前記退避させたポインタの値の(n−1)/2ライン前のライン番号を出力し、
    前記入力位置関数が前記空間フィルタ処理に対応する前記部分位置関数を含む、信号処理装置。
  5. 請求項1において、前記ストリームデータが画像データであって、前記信号処理部によって実施される信号処理の1つが、先頭から第V−n+1ラインの入力ストリームを読み込んで先頭から第nラインに出力する垂直方向のサイズがVの画像の上下反転処理であって、前記ポインタは、前記上下反転処理の出力を完了したライン番号pを保持し、前記上下反転処理に対応する部分位置関数は、第V−pラインを出力する、信号処理装置。
  6. 請求項1において、
    第1のタスクを実行中に第2のタスクの優先処理が要求されたとき、前記ポインタが保持する第1の値を退避した後、前記第2のタスクを実行し、
    前記第2のタスクを実行中に第3のタスクの優先処理が要求されたとき、前記ポインタが保持する第2の値を退避した後、前記第3のタスクを実行し、
    前記第3のタスクが完了したとき、前記退避したポインタの第2の値に基づいて、前記第2のタスクにおいて次に出力すべき出力データの位置情報を求めて前記第2のタスクを再開し、
    前記第2のタスクが完了したとき、前記退避したポインタの第1の値に基づいて、前記第1のタスクにおいて次に出力すべき出力データの位置情報を求めて前記第1のタスクを再開する、信号処理装置。
  7. CPUとメモリと信号処理部とがそれぞれバスに接続されており、
    前記信号処理部は、信号処理モジュールと信号処理制御部とを備え、
    前記信号処理モジュールは、入力された複数の入力データからなる入力ストリームを入力し、ストリームデータに所定の信号処理を施して複数の出力データからなる出力ストリームを出力し、
    前記信号処理制御部は、前記信号処理モジュールの処理経過に応じた処理対象データのストリームデータにおける位置情報を指すポインタを備え、前記メモリから読み出しアドレスを指定して前記入力データを読み出して前記信号処理モジュールに入力し、書き出しアドレスを指定して前記信号処理モジュールの前記出力データを前記メモリに出力し、
    前記CPUは、第1のタスクを実行中に第2のタスクの優先処理が要求されたとき、前記ポインタが保持する値を退避させた後、前記信号処理部に前記第2のタスクを実行させ、前記第2のタスクが完了したとき、前記退避させたポインタの値を復帰させ、前記復帰したポインタの値に基づいて、前記第1のタスクにおいて次に出力すべき出力データを格納すべき前記メモリ上のアドレスを求めて前記書き出しアドレスを設定し、前記次に出力すべき出力データを算出するために前記信号処理部に入力する必要がある全ての入力データのうち先頭の入力データが格納されているアドレスを求めて前記読み出しアドレスを設定し、
    前記信号処理制御部は、前記読み出しアドレスを保持する読み出しアドレスレジスタと、前記書き出しアドレスを保持する書き出しアドレスレジスタと、前記ポインタの値を保持するポインタレジスタとを備え、
    前記CPUは、前記優先処理が要求されたとき、前記ポインタレジスタの第1の値を前記メモリに退避し、
    前記第2のタスクが完了したとき、前記第1の値を前記メモリから前記ポインタレジスタに復帰し、
    出力位置関数により、前記第1の値に基づいて、前記第1のタスクにおいて次に出力すべき出力データの前記出力ストリームにおける位置情報を算出し、出力アドレス関数により、前記出力位置関数の出力に基づいて、前記第1のタスクにおいて次に出力すべき出力データの前記メモリにおけるアドレスを算出して、前記書き出しアドレスレジスタに書き込み、
    入力位置関数により、前記第1の値に基づいて前記先頭の入力データの前記入力ストリームにおける位置情報を算出し、入力アドレス関数により、前記先頭の入力データの前記メモリにおけるアドレスを算出して、前記読み出しアドレスレジスタに書き込み、
    前記第1のタスクが、前記信号処理部によって、前記入力ストリームに信号処理を実施して得た出力ストリームを順次次の信号処理の入力ストリームとする複数の信号処理を含む信号処理タスクであり、
    前記複数の信号処理のそれぞれについて、次に出力すべき出力データを算出するために前記信号処理部に入力する必要がある全ての入力データのうち先頭の入力データの位置情報を出力する部分位置関数を備え、
    前記複数の信号処理のうち前記第1のタスクにおいて最後に実行される信号処理に対応する部分位置関数に前記退避したポインタの値を入力し、
    前記複数の信号処理のうち前記第1のタスクにおいて後に実行される信号処理に対応する部分位置関数の出力を、その直前に実行される信号処理に対応する部分位置関数に入力することにより、順次ネスティングして、前記入力位置関数を構成する、半導体装置。
  8. 請求項7において、前記信号処理制御部は、パラメータレジスタをさらに備え、前記信号処理モジュールは、前記パラメータレジスタが保持するパラメータにしたがって信号処理を実行し、
    前記CPUは、前記優先処理が要求されたとき、前記パラメータレジスタが保持する値を退避せずに破棄し、前記信号処理モジュールに前記第2のタスクを実行させるためのパラメータを、前記パラメータレジスタに書き込む、半導体装置。
  9. 請求項8において、前記パラメータは、前記信号処理モジュールが実行する処理の処理内容ごとに前記メモリに格納されており、前記CPUは、処理タスクが要求されたとき、前記処理タスクの処理内容に対応する前記パラメータを前記メモリから読み出して前記パラメータレジスタに書き込む、半導体装置。
  10. CPUとメモリと信号処理部とコンテキスト処理部がそれぞれバスに接続されており、
    前記信号処理部は、信号処理モジュールと信号処理制御部とを備え、
    前記信号処理モジュールは、入力された複数の入力データからなる入力ストリームを入力し、ストリームデータに所定の信号処理を施して複数の出力データからなる出力ストリームを出力し、
    前記信号処理制御部は、前記信号処理モジュールの処理経過に応じた処理対象データのストリームデータにおける位置情報を指すポインタを備え、前記メモリから読み出しアドレスを指定して前記入力データを読み出して前記信号処理モジュールに入力し、書き出しアドレスを指定して前記信号処理モジュールの前記出力データを前記メモリに出力し、
    前記コンテキスト処理部は、コンテキスト位置記憶部と復元部とを備え、
    前記コンテキスト処理部は、第1のタスクを実行中に第2のタスクの優先処理が要求されたとき、前記ポインタが保持する値を前記コンテキスト位置記憶部に退避させた後、前記信号処理部に前記第2のタスクを実行させ、前記第2のタスクが完了したとき、前記退避させたポインタの値を復帰させ、
    前記復元部は、前記復帰したポインタの値に基づいて、前記第1のタスクにおいて次に出力すべき出力データを格納すべき前記メモリ上のアドレスを求めて前記書き出しアドレスを設定し、前記次に出力すべき出力データを算出するために前記信号処理部に入力する必要がある全ての入力データのうち先頭の入力データが格納されているアドレスを求めて前記読み出しアドレスを設定し、
    前記信号処理制御部は、前記読み出しアドレスを保持する読み出しアドレスレジスタと、前記書き出しアドレスを保持する書き出しアドレスレジスタと、前記ポインタの値を保持するポインタレジスタとを備え、
    前記コンテキスト処理部は、前記優先処理が要求されたとき、前記ポインタレジスタの第1の値を前記コンテキスト位置記憶部に退避し、
    前記第2のタスクが完了したとき、前記コンテキスト処理部は、前記第1の値を前記コンテキスト位置記憶部から前記ポインタレジスタに復帰し、
    前記復元部は、出力位置関数により、前記第1の値に基づいて、前記第1のタスクにおいて次に出力すべき出力データの前記出力ストリームにおける位置情報を算出し、出力アドレス関数により、前記出力位置関数の出力に基づいて、前記第1のタスクにおいて次に出力すべき出力データの前記メモリにおけるアドレスを算出して、前記書き出しアドレスレジスタに書き込み、
    入力位置関数により、前記第1の値に基づいて前記先頭の入力データの前記入力ストリームにおける位置情報を算出し、入力アドレス関数により、前記先頭の入力データの前記メモリにおけるアドレスを算出して、前記読み出しアドレスレジスタに書き込み、
    前記第1のタスクが、前記信号処理部によって、前記入力ストリームに信号処理を実施して得た出力ストリームを順次次の信号処理の入力ストリームとする複数の信号処理を含む信号処理タスクであり、
    前記複数の信号処理のそれぞれについて、次に出力すべき出力データを算出するために前記信号処理部に入力する必要がある全ての入力データのうち先頭の入力データの位置情報を出力する部分位置関数を備え、
    前記複数の信号処理のうち前記第1のタスクにおいて最後に実行される信号処理に対応する部分位置関数に前記退避したポインタの値を入力し、
    前記複数の信号処理のうち前記第1のタスクにおいて後に実行される信号処理に対応する部分位置関数の出力を、その直前に実行される信号処理に対応する部分位置関数に入力することにより、順次ネスティングして、前記入力位置関数を構成する、半導体装置。
  11. 請求項10において、前記信号処理制御部は、パラメータレジスタをさらに備え、前記信号処理モジュールは、前記パラメータレジスタが保持する処理パラメータにしたがって信号処理を実行し、
    前記復元部は、前記優先処理が要求されたとき、前記パラメータレジスタが保持する値を退避せずに破棄し、前記信号処理モジュールに前記第2のタスクを実行させるための処理パラメータを、前記パラメータレジスタに書き込む、半導体装置。
  12. 請求項11において、前記処理パラメータは、前記信号処理モジュールが実行する処理の内容ごとに前記メモリに格納されており、前記復元部は、タスクが要求されたとき、前記タスクの処理内容に対応する前記処理パラメータを前記メモリから前記パラメータレジスタに転送する、半導体装置。
  13. 請求項10において、
    前記コンテキスト処理部は、第1のタスクを実行中に第2のタスクの優先処理が要求されたとき、前記第1のタスクのコンテキスト番号と前記ポインタが保持する値とを対応付けて前記コンテキスト位置記憶部に退避させ、
    前記第2のタスクが完了したとき、前記復元部は、退避した前記コンテキスト番号と復帰した前記ポインタの値とに基づいて、前記書き出しアドレスと前記読み出しアドレスとを設定する、半導体装置。
  14. 請求項13において、前記信号処理制御部は、パラメータレジスタをさらに備え、前記信号処理モジュールは、前記パラメータレジスタが保持する処理パラメータにしたがって信号処理を実行し、
    前記復元部は、前記優先処理が要求されたとき、前記パラメータレジスタが保持する値を退避せずに破棄し、前記信号処理モジュールに前記第2のタスクを実行させるための処理パラメータを、前記パラメータレジスタに書き込む、半導体装置。
  15. 請求項14において、前記処理パラメータは、前記信号処理モジュールが実行する処理の内容ごとに前記メモリに格納されており、前記復元部は、前記優先処理が完了したとき、前記退避したコンテキスト番号に基づいて、前記第1のタスクの処理内容に対応する前記処理パラメータを前記メモリから前記パラメータレジスタに転送する、半導体装置。
  16. 請求項15において、
    第1のタスクを実行中に第2のタスクの優先処理が要求されたとき、前記コンテキスト処理部は、前記第1のタスクのコンテキスト番号と前記ポインタが保持する第1タスクのポインタ値とを対応付けて前記コンテキスト位置記憶部に退避させ、
    前記第2のタスクを実行中に第3のタスクの優先処理が要求されたとき、前記コンテキスト処理部は、前記第2のタスクのコンテキスト番号と前記ポインタが保持する第2タスクのポインタ値とを対応付けて前記コンテキスト位置記憶部に退避させ、
    前記第3のタスクが完了したとき、前記復元部は、前記第2のタスクのコンテキスト番号に基づいて前記第2のタスクの処理パラメータを復帰し、前記第2のタスクのポインタの値を復元し、
    前記第2のタスクが完了したとき、前記復元部は、前記第1のタスクのコンテキスト番号に基づいて前記第1のタスクの処理パラメータを復帰し、前記第1のタスクのポインタの値を復元する、半導体装置。
JP2012032685A 2012-02-17 2012-02-17 信号処理装置及び半導体装置 Expired - Fee Related JP5848153B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2012032685A JP5848153B2 (ja) 2012-02-17 2012-02-17 信号処理装置及び半導体装置
US13/748,390 US9195319B2 (en) 2012-02-17 2013-01-23 Signal processing device and semiconductor device for executing a plurality of signal processing tasks
KR1020130010355A KR20130095206A (ko) 2012-02-17 2013-01-30 신호 처리 장치 및 반도체 장치
CN201310052963.1A CN103336716B (zh) 2012-02-17 2013-02-17 信号处理装置和半导体装置
US14/945,136 US20160070592A1 (en) 2012-02-17 2015-11-18 Signal processing device and semiconductor device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012032685A JP5848153B2 (ja) 2012-02-17 2012-02-17 信号処理装置及び半導体装置

Publications (2)

Publication Number Publication Date
JP2013171296A JP2013171296A (ja) 2013-09-02
JP5848153B2 true JP5848153B2 (ja) 2016-01-27

Family

ID=48981868

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012032685A Expired - Fee Related JP5848153B2 (ja) 2012-02-17 2012-02-17 信号処理装置及び半導体装置

Country Status (4)

Country Link
US (2) US9195319B2 (ja)
JP (1) JP5848153B2 (ja)
KR (1) KR20130095206A (ja)
CN (1) CN103336716B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6324222B2 (ja) * 2014-06-04 2018-05-16 キヤノン株式会社 撮像装置、その制御方法、および制御プログラム
US10313683B2 (en) * 2014-08-30 2019-06-04 Apple Inc. Video encoder with context switching
JP6239078B1 (ja) * 2016-11-04 2017-11-29 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置および読出し方法
JP2018103383A (ja) * 2016-12-22 2018-07-05 キヤノン株式会社 画像処理装置およびその画像処理装置の制御方法またはプログラム
US10521880B2 (en) * 2017-04-17 2019-12-31 Intel Corporation Adaptive compute size per workload
TWI684860B (zh) * 2018-10-15 2020-02-11 慧榮科技股份有限公司 用來進行讀取加速之方法以及資料儲存裝置及其控制器
KR20200129700A (ko) * 2019-05-09 2020-11-18 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2705804B1 (fr) * 1993-05-27 1995-08-11 Sgs Thomson Microelectronics Architecture de processeur multi-tâches.
EP0863462B8 (en) * 1997-03-04 2010-07-28 Panasonic Corporation Processor capable of efficiently executing many asynchronous event tasks
US6128641A (en) * 1997-09-12 2000-10-03 Siemens Aktiengesellschaft Data processing unit with hardware assisted context switching capability
US6671762B1 (en) * 1997-12-29 2003-12-30 Stmicroelectronics, Inc. System and method of saving and restoring registers in a data processing system
US7055151B1 (en) * 1998-04-03 2006-05-30 Applied Micro Circuits Corporation Systems and methods for multi-tasking, resource sharing and execution of computer instructions
US6895583B1 (en) * 2000-03-10 2005-05-17 Wind River Systems, Inc. Task control block for a computing environment
GB2372847B (en) * 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US7434222B2 (en) * 2001-12-20 2008-10-07 Infineon Technologies Ag Task context switching RTOS
JP2006197548A (ja) 2004-08-26 2006-07-27 Matsushita Electric Ind Co Ltd 撮像装置
US20060044420A1 (en) 2004-08-26 2006-03-02 Matsushita Electric Industrial Co., Ltd. Image pickup apparatus
WO2007032123A1 (ja) * 2005-09-14 2007-03-22 Matsushita Electric Industrial Co., Ltd. マルチストリーム復号装置
CN101212676B (zh) * 2006-12-29 2010-06-02 北京展讯高科通信技术有限公司 高效并行cabac解码方法及其装置
JP2009086789A (ja) 2007-09-28 2009-04-23 Hitachi Ltd 並列型画像処理装置

Also Published As

Publication number Publication date
US20130215020A1 (en) 2013-08-22
CN103336716A (zh) 2013-10-02
US9195319B2 (en) 2015-11-24
CN103336716B (zh) 2017-11-14
KR20130095206A (ko) 2013-08-27
JP2013171296A (ja) 2013-09-02
US20160070592A1 (en) 2016-03-10

Similar Documents

Publication Publication Date Title
JP5848153B2 (ja) 信号処理装置及び半導体装置
US20090006773A1 (en) Signal Processing Apparatus
WO2016118346A1 (en) User mode driver extension and preprocessing
US20110102465A1 (en) Image processor, electronic device including the same, and image processing method
JP5679763B2 (ja) 半導体集積回路及び全周囲映像システム
US9460489B2 (en) Image processing apparatus and image processing method for performing pixel alignment
CN102209191A (zh) 执行图像信号处理的方法及用于执行图像信号处理的装置
US20120274856A1 (en) Frame List Processing for Multiple Video Channels
JP2010176547A (ja) 画像処理装置に含まれる制御装置、制御方法、及び制御処理プログラム
US9019284B2 (en) Input output connector for accessing graphics fixed function units in a software-defined pipeline and a method of operating a pipeline
JP6750847B2 (ja) 画像処理装置およびその制御方法並びにプログラム
JP2008172410A (ja) 撮像装置、画像処理装置、画像処理方法、画像処理方法のプログラム及び画像処理方法のプログラムを記録した記録媒体
US6614438B1 (en) Data-processing arrangement for processing different types of data
KR20050010912A (ko) 화상 스트립 및 순환적 어드레싱 배열을 이용하여 화상데이터를 처리하는 방법 및 장치
JP6295619B2 (ja) 画像処理装置及び方法、並びに電子機器
JP2020112998A (ja) 情報処理装置及びメモリ制御方法
US20140055498A1 (en) Method for scaling video data, and an arrangement for carrying out the method
JP5658612B2 (ja) 画像処理装置、画像処理システム及び画像処理方法
JPH04349496A (ja) 画像処理装置及びその方式
JP7159555B2 (ja) 画像処理装置、画像処理方法及びプログラム
WO2001006461A1 (fr) Procede et dispositif de dessin
JP5890044B2 (ja) 車両
US20100211623A1 (en) Filter processing module and semiconductor device
JP2024015829A (ja) 画像処理装置及び画像処理回路
CN115641251A (zh) 2d桌面图像预取分块融合方法、装置及设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140828

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150521

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150806

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150821

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151126

R150 Certificate of patent or registration of utility model

Ref document number: 5848153

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees