説明

プロセッサ

【課題】 プロセッサにおいて中央処理回路を異常状態から所望の正常状態に復帰させる機能を簡易な回路構成により実現する。
【解決手段】 中央処理回路(140)は、条件付分岐命令に関して強制ジャンプの有効/無効を示すレジスタ(149)を有し、条件付分岐命令の実行時にレジスタ(149)が有効を示す状態であれば分岐条件が成立したものと判定する。レジスタ(149)は、タイマ回路(130)の割り込み要求の発行に伴って無効を示す状態から有効を示す状態に遷移する。メモリ回路(110)に格納されるプログラムは、条件付分岐命令を用いたループ処理に関して条件付分岐命令の分岐条件の成立がループ処理の終了条件となるように生成される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロセッサに関し、特に、プロセッサにおいて中央処理回路(CPU:Central Processing Unit)を異常状態から正常状態に復帰させる技術に関する。
【背景技術】
【0002】
圧縮符号化されたストリーム(ビデオストリーム/オーディオストリーム)を復号するデコーダシステムにおいては、伝送上の原因でストリームにエラーが混入されていることがあるため、プロセッサによるストリーム解析が実施される。
【0003】
図7は、プロセッサによるストリーム解析の様子を示している。例えば、オーディオストリームに関しては、プロセッサのCPUがプログラムに従って動作することで、PESヘッダ(Packetized Elementary Stream Header)およびES(Elementary Stream)が順次解析される。PESヘッダについては、一般に、パラメータ値の範囲チェックが実施されることで、ストリームにおけるエラーの混入が検出されてCPUのハングアップが回避される。ESについては、音声圧縮符号化方式(MPEG(Moving Picture Experts Group)やDolby−AC3等)に応じてESの構造が異なり、任意に値を制限できない場合があるため、ストリームに混入されているエラーのパターンによっては、ストリーム解析が延々と実施され、結果的にCPUのハングアップとして見える場合がある。
【0004】
一般に、デコーダシステムで使用されるプロセッサにおいては、いかなるストリームに対してもCPUがハングアップ状態で停滞することなく動作することが要求される。CPUのハングアップの検出は、所定時間の経過に伴って割り込み要求を発行するウォッチドッグタイマを使用することで実現可能である。また、エラーが混入されたストリームについては、デコード処理をスキップして前回のデコード処理結果を使用する等により対処する。従って、CPUのハングアップが検出された場合、CPUを初期状態(リセット直後の状態)ではなく特定の正常状態に復帰させる必要がある。
【0005】
図8は、デコーダシステムの一例を示している。デコーダシステム10は、マルチプロセッサ構成を採用しており、システム全体を管理するためのメインプロセッサ20と、ビデオストリームをデコードするためのビデオプロセッサ30と、オーディオストリームをデコードするためのオーディオプロセッサ40とを備えて構成されている。ビデオプロセッサ30およびオーディオプロセッサ40は、メインプロセッサ20の初期化指示や動作指示等に従って各種処理を実施する。
【0006】
図9は、図8のオーディオプロセッサの動作を示している。図10は、図8のオーディオプロセッサにおけるスタック構造を示している。オーディオプロセッサ40においては、リセット解除に伴ってスタートアップルーチンが実行され、続いて、メインルーチン(main)が実行される。メインルーチンでは、メインプロセッサ20からの初期化指示に従って初期化処理(ステップS11)が実行され、その後、ウォッチドッグタイマの設定(ステップS12)、シーケンス管理タスク(ステップS13)、ES抽出タスク(ステップS14)およびデコード処理タスク(ステップS15)で構成されるループ処理が実行される。シーケンス管理タスクでは、メインプロセッサ20からの動作指示に基づいて状態遷移の判断が実施される。ES抽出タスクでは、PESヘッダの解析やESの抽出が実施される。デコード処理タスクでは、ESの解析やESのデコードが実施される。例えば、デコード処理タスクは、DecTaskDecode、decode、fnc1、fnc2と関数をネストして構成されている。デコード処理タスクの実行時には、図10に示すように、実行対象の関数が変わる度にオーディオプロセッサ40のRAM(Random Access Memory)のユーザスタック領域に関数の引数、関数でのローカル変数およびリターンアドレス等が格納される。なお、オーディオプロセッサ40のRAMには、ユーザスタック領域とは別に、グローバル変数を格納する領域や割り込みルーチンの実行時に使用されるIRQスタック領域も設けられている。
【0007】
例えば、fnc2内のループ処理の実行中に、ウォッチドッグタイマに設定された時間が経過してウォッチドッグタイマの割り込み要求が発行されると、fnc2内のループ処理の実行が中断されて割り込みルーチンが実行される(図9(1))。割り込みルーチンでは、CPUに対して発行された割り込み要求がウォッチドッグタイマの割り込み要求であるため、DMA(Direct Memory Access)転送完了後処理(ステップS21)およびメインプロセッサ指示処理(ステップS22)は実行されず、CPUに対して発行された割り込み要求がウォッチドッグタイマの割り込み要求であるか否かを判定する判定処理(ステップS23)が実行される。なお、CPUに対して発行された割り込み要求がメインプロセッサ20およびオーディオプロセッサ40間のDMA転送の完了に伴う割り込み要求である場合には、DMA転送完了後処理が実行される。また、CPUに対して発行された割り込み要求がメインプロセッサ20からの動作指示に伴う割り込み要求である場合には、メインプロセッサ指示処理が実行される。
【0008】
CPUに対して発行された割り込み要求がウォッチドッグタイマの割り込み要求であると判定されると、CPUが復帰すべき正常状態に関する情報がないため、CPUが初期状態(メインルーチンの実行開始時点の状態)に戻される(図9(2))。なお、CPUに対して発行された割り込み要求がウォッチドッグタイマの割り込み要求ではないと判定された場合には、fnc2内のループ処理の実行が再開される。デコーダシステム10では、システム全体として処理シーケンスが組まれているため、オーディオプロセッサ40のCPUのみが初期状態に戻されると、その他のプロセッサとの整合性がとれなくなり、システム全体で処理が破綻してしまう可能性がある。
【0009】
なお、特許文献1には、マイクロコンピュータにおいて、CPUのデータ(プログラムカウンタやレジスタの値)を退避用メモリに退避させ、CPUの暴走検出後に退避用メモリのデータを復帰させることで、CPUの暴走状態から正常状態への復帰を実現する技術が開示されている。
【特許文献1】特開平9−190360号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
マルチプロセッサ構成のデータ処理システムで使用されるプロセッサでは、CPUがハングアップ状態に陥った場合にCPUを初期状態ではなく特定の正常状態に復帰させる必要がある。しかしながら、従来のプロセッサでは、ウォッチドッグタイマを使用してCPUのハングアップを検出できるが、CPUのハングアップが検出された場合にはCPUを初期状態に戻すしかなかった。
【0011】
また、特許文献1に開示された技術では、退避用メモリを設ける必要があるため、コストが増大するという問題がある。また、退避用メモリにはプログラムカウンタやレジスタの情報のみが退避されるため、グローバル変数やスタックの情報が確保される保証がない。
【0012】
本発明は、このような問題に鑑みてなされたものであり、プロセッサにおいて中央処理回路(CPU)を異常状態から所望の正常状態に復帰させる機能を簡易な回路構成により実現することを目的とする。
【課題を解決するための手段】
【0013】
プロセッサは、中央処理回路と、中央処理回路により実行されるプログラムを格納するメモリ回路とを備える。中央処理回路は、条件付分岐命令に関して強制ジャンプの有効/無効を示すレジスタを有し、条件付分岐命令の実行時にレジスタが有効を示す状態であれば分岐条件が成立したものと判定する。また、プロセッサは、所定時間の経過に伴って中央処理回路に割り込み要求を発行するタイマ回路を備える。レジスタは、タイマ回路の割り込み要求の発行に伴って無効を示す状態から有効を示す状態に遷移する。更に、メモリ回路に格納されるプログラムは、条件付分岐命令を用いたループ処理に関して条件付分岐命令の分岐条件の成立がループ処理の終了条件となるように生成される。
【0014】
以上のようなプロセッサでは、中央処理回路のループ処理の実行時間が長い場合には、タイマ回路により割り込み要求が発行され、レジスタが無効を示す状態から有効を示す状態に遷移する。中央処理回路は、レジスタが有効を示す状態であれば条件付分岐命令の実行時に分岐条件が成立したものと判定する。また、中央処理回路により実行されるプログラムは、ループ処理に関して条件付分岐命令の分岐条件の成立がループ処理の終了条件となるように生成される。従って、中央処理回路によるループ処理の実行を強制的に終了させることができ、中央処理回路を異常状態から所望の正常状態に復帰させることができる。中央処理回路のデータを退避するための回路(退避用メモリ等)を設ける必要がないため、中央処理回路を異常状態から所望の正常状態に復帰させる機能を簡易な回路構成により実現可能である。
【発明の効果】
【0015】
プロセッサにおいて中央処理回路を異常状態から所望の正常状態に復帰させる機能を簡易な回路構成により実現することができる。
【発明を実施するための最良の形態】
【0016】
以下、本発明の実施形態について図面を用いて説明する。
【0017】
図1は、本発明の一実施形態を示している。本発明の一実施形態におけるプロセッサ100は、例えば、図8のデコーダシステム10と同様のマルチプロセッサ構成を採用したデコーダシステムにおいてオーディオプロセッサを具現しており、プログラムメモリ110と、データメモリ120と、ウォッチドッグタイマ130と、CPU140とを備えて構成されている。プログラムメモリ110、データメモリ120、ウォッチドッグタイマ130およびCPU140は、バス150を介して相互に接続されており、これらの間でデータの授受が可能である。
【0018】
プログラムメモリ110は、CPU140により実行されるプログラム(アセンブラ命令列)等が格納されるROM(Read Only Memory)である。なお、プログラムメモリ110に格納されるプログラムは、条件付分岐命令を用いたループ処理に関して条件付分岐命令の分岐条件の成立がループ処理の終了条件となるように生成されている。このようなプログラム生成(コーディング)は、例えば、コンパイラのプラグマオプションを使用して実現される。組み込み用途等に最も使用されるC言語であれば、C言語の文法レベルでこのようなプログラム生成が可能であるため、コンパイラへの負担は少なくて済む。また、ここでは、条件付分岐命令の分岐条件の成立をループ処理の終了条件とする制約は、プログラム全体に対して適用されるものとするが、CPU140のハングアップが予想される箇所に対してのみ適用されてもよい。
【0019】
データメモリ120は、デコーダシステムのメインプロセッサからDMA転送されるオーディオストリームやデコーダシステムのメインプロセッサにDMA転送されるPCM(Pulse Code Modulation)データ等が格納されるRAMである。また、データメモリ120は、CPU140のワークメモリ(スタック領域等)としても使用される。
【0020】
ウォッチドッグタイマ130は、CPU140により設定された時間の経過に伴って割り込み要求信号131を活性化させる。なお、CPU140は、ウォッチドッグタイマ130の割り込み要求信号131を含む複数の割り込み要求信号を受けており、活性化された割り込み要求信号の種類に応じて割り込み処理を実行する。
【0021】
CPU140は、アドレスレジスタ141と、プログラムカウンタ(PC:Program Counter)142と、データレジスタ143と、命令レジスタ144と、命令デコーダ145と、制御回路146と、ALU(Arithmetic and Logic Unit)147と、条件フラグレジスタ148と、強制ジャンプレジスタ149とを備えて構成されている。
【0022】
CPU140においては、アドレスレジスタ141を介してプログラムカウンタ142に設定されたアドレスが出力され、制御回路146によりリードアクセスを示す制御信号が出力されることで、プログラムメモリ110から命令コードが読み出されてデータレジスタ143を介して命令レジスタ144に格納される。そして、命令デコーダ145により、命令レジスタ144に格納された命令コードがデコードされ、デコード結果に応じて各種命令が実行される。演算命令の実行時には、命令デコーダ145から制御回路146を介してALU147に演算の指示が出される。この結果、ALU147により、データレジスタ143(汎用レジスタ)に格納されたデータを用いた演算が実行され、演算結果がデータレジスタに書き戻される。一般には、データレジスタ143に書き戻されたALU147の演算結果はデータメモリ120に書き込まれる。また、ALU147の演算結果に応じて、条件フラグレジスタ148のゼロフラグ、キャリーフラグおよびオーバフローフラグ等が設定される。条件フラグレジスタ148は、命令デコーダ145により条件付分岐命令の実行時に分岐条件の成立/不成立の判定に使用される。条件付分岐命令の実行時には、強制ジャンプレジスタ149が“0”にリセットされていれば、条件フラグレジスタ148に基づいて分岐条件の成立/不成立が判定され、分岐条件が成立したと判定された場合、命令により指定されるジャンプ先アドレスがプログラムカウンタ142に設定される。一方、強制ジャンプレジスタ149が“1”にセットされていれば、条件フラグレジスタ148とは無関係に分岐条件が成立したものとして、強制的にジャンプ先アドレスがプログラムカウンタ142に設定される。
【0023】
図2は、図1のオーディオプロセッサの動作を示している。図3は、図2のデコード処理タスクの詳細を示している。図4は、図1の強制ジャンプレジスタの状態遷移の様子を示している。なお、オーディオプロセッサ100の動作(図2)を説明するにあたって、オーディオプロセッサ40の動作(図9)と同様の動作については、詳細な説明を省略する。
【0024】
オーディオプロセッサ100においては、リセット解除に伴ってスタートアップルーチンが実行され、続いて、メインルーチン(main)が実行される。メインルーチンでは、初期化処理(ステップS11)が実行され、その後、ウォッチドッグタイマ130の設定(ステップS12)、シーケンス管理タスク(ステップS13)、ES抽出タスク(ステップS14)およびデコード処理タスク(ステップS15’)で構成されるループ処理が実行される。デコード処理タスクは、DecTaskDecode’、decode、fnc1、fnc2と関数をネストして構成されている。
【0025】
例えば、fnc2内のループ処理の実行中に、ウォッチドッグタイマ130に設定された時間が経過してウォッチドッグタイマ130の割り込み要求信号131が活性化されると、fnc2内のループ処理の実行が中断されて割り込みルーチンが実行される(図2(1))。割り込みルーチンでは、CPU140に対して発行された割り込み要求がウォッチドッグタイマ130の割り込み要求であるため、DMA転送完了後処理(ステップS21)およびメインプロセッサ指示処理(ステップS22)は実行されず、CPU140に対して発行された割り込み要求がウォッチドッグタイマ130の割り込み要求であるか否かを判定する判定処理(ステップS23)が実行される。CPU140に対して発行された割り込み要求がウォッチドッグタイマ130の割り込み要求であると判定されると、強制ジャンプレジスタ149が“1”にセットされ(ステップS24)、その後、fnc2内のループ処理の実行が再開される(図2(2))。強制ジャンプレジスタ149が“1”にセットされたことで、これ以降、条件付分岐命令の実行時には、分岐条件が成立したものと判定され、条件付分岐命令により指定されるジャンプ先アドレスがプログラムカウンタ142に設定される。これにより、実行対象の関数がfnc1、decode、DecTaskDecode’と順次戻される(図2(3))。
【0026】
decode(ステップS31)の実行が終了して実行対象の関数がdecodeからDecTaskDecode’に戻されると、強制ジャンプレジスタ149が“1”にセットされているか否かを判定する判定処理(ステップS32)が実行される。強制ジャンプレジスタ149が“1”にセットされていると判定されると、デコード処理で使用される変数の初期化等を実施するためのデコード処理タスク用初期化処理(ステップS33)が実行され、その後、強制ジャンプレジスタ149が“0”にリセットされる(ステップS34)。これにより、DecTaskDecode’の実行が終了して実行対象の関数がDecTaskDecode’からmainに戻される。なお、強制ジャンプレジスタ149が“1”にセットされていないと判定された場合には、デコード処理タスク用初期化処理等が実行されることなくDecTaskDecode’の実行が終了して実行対象の関数がDecTaskDecode’からmainに戻される。このように、強制ジャンプレジスタ149は、ウォッチドッグタイマ130の割り込み要求の発行に伴って“1”にセットされ(図4(1))、メインルーチンの復帰ポイントで“0”にリセットされる(図4(2))。
【0027】
図5は、図1のオーディオプロセッサのプログラムに適用されるループ処理の構成例を示している。図5(a)のループ処理は、変数Aの値が0であるか否かを判定する判定処理と演算処理とで構成され、判定処理において変数Aの値が0であると判定された場合にループ処理が終了するものである。判定処理は、比較命令「CMP R0,#0」および条件付分岐命令「BEQ LBL」からなる命令列で実現される。オーディオプロセッサ100(CPU140)において、比較命令「CMP R0,#0」の実行時には、データレジスタ143における汎用レジスタR0の値(変数Aの値に相当)が0であれば条件フラグレジスタ148のゼロフラグが“1”に設定され、データレジスタ143における汎用レジスタR0の値が0でなければ条件フラグレジスタ148のゼロフラグが“0”に設定される。強制ジャンプレジスタ149が“0”にリセットされている場合、条件付分岐命令「BEQ LBL」の実行時には、条件フラグレジスタ148のゼロフラグが“1”に設定されていればラベルLBLのアドレス(ループ処理内の判定処理または演算処理を実現する命令以外の命令のアドレス)がプログラムカウンタ142に設定され、条件フラグレジスタ148のゼロフラグが“0”に設定されていればループ処理内の演算処理を実現する命令のアドレスがプログラムカウンタ142に設定される。一方、強制ジャンプレジスタ149が“1”にセットされている場合、条件付分岐命令「BEQ LBL」の実行時には、条件フラグレジスタ148のゼロフラグが“1”に設定されているものとして、強制的にラベルLBLのアドレスがプログラムカウンタ142に設定される。
【0028】
図5(b)のループ処理は、変数Aの値が0ではないか否かを判定する判定処理と演算処理とで構成され、判定処理において変数Aの値が0ではないと判定された場合にループ処理が終了するものである。判定処理は、比較命令「CMP R0,#0」および条件付分岐命令「BNE LBL」からなる命令列で実現される。オーディオプロセッサ100(CPU140)において、強制ジャンプレジスタ149が“0”にリセットされている場合、条件付分岐命令「BNE LBL」の実行時には、条件フラグレジスタ148のゼロフラグが“0”に設定されていればラベルLBLのアドレス(ループ処理内の判定処理または演算処理を実現する命令以外の命令のアドレス)がプログラムカウンタ142に設定され、条件フラグレジスタ148のゼロフラグが“1”に設定されていればループ処理内の演算処理を実現する命令のアドレスがプログラムカウンタ142に設定される。一方、強制ジャンプレジスタ149が“1”にセットされている場合、条件付分岐命令「BNE LBL」の実行時には、条件フラグレジスタ148のゼロフラグが“0”に設定されているものとして、強制的にラベルLBLのアドレスがプログラムカウンタ142に設定される。
【0029】
オーディオプロセッサ100においてCPU140により実行されるプログラム(プログラムメモリ110に格納されるプログラム)には、条件付分岐命令を用いたループ処理に関して、図5(a)、(b)のループ処理のように、条件付分岐命令の分岐条件の成立がループ処理の終了条件となるようなループ処理が適用される。
【0030】
図6は、図1のオーディオプロセッサのプログラムに適用されないループ処理の構成例を示している。図6(a)のループ処理は、演算処理と変数Aの値が0であるか否かを判定する判定処理とで構成され、判定処理において変数Aの値が0ではないと判定された場合にループ処理が終了するものである。図6(b)のループ処理は、演算処理と変数Aの値が0ではないか否かを判定する判定処理とで構成され、判定処理において変数Aの値が0であると判定された場合にループ処理が終了するものである。
【0031】
オーディオプロセッサ100においてCPU140により実行されるプログラムには、条件付分岐命令を用いたループ処理に関して、図6(a)、(b)のループ処理のように、条件付分岐命令の分岐条件の不成立がループ処理の終了条件となるようなループ処理は適用されない。
【0032】
以上のような本発明の一実施形態では、オーディオストリームにおけるエラーの混入に起因してCPU140がハングアップ状態に陥った場合、ウォッチドッグタイマ130の割り込み要求が発行されて強制ジャンプレジスタ149が“1”にセットされ、それ以降、条件付分岐命令の実行時には、命令により指定されるジャンプ先アドレスへの強制ジャンプが実行される。従って、いかなるオーディオストリームに対してもCPU140がハングアップ状態で停滞することなく動作することが可能になる。結果的に、あらゆるストリームパターンの膨大な検証を実施しなくても、CPU140のハングアップに対する普遍的な回避策が実現されているため、システム開発工数の削減が可能になる。また、従来のスタックのポップ/プッシュ動作が踏襲されるため、退避用メモリ等を設ける必要はなく、CPU140をハングアップ状態から所望の正常状態に復帰させる機能を簡易な回路構成により実現できる。
【0033】
以上、本発明について詳細に説明してきたが、前述の実施形態は発明の一例に過ぎず、本発明はこれに限定されるものではない。本発明を逸脱しない範囲で変形可能であることは明らかである。
【図面の簡単な説明】
【0034】
【図1】本発明の一実施形態を示す説明図である。
【図2】図1のオーディオプロセッサの動作を示す説明図である。
【図3】図2のデコード処理タスクの詳細を示す説明図である。
【図4】図1の強制ジャンプレジスタの状態遷移の様子を示す説明図である。
【図5】図1のオーディオプロセッサのプログラムに適用されるループ処理の構成例を示す説明図である。
【図6】図1のオーディオプロセッサのプログラムに適用されないループ処理の構成例を示す説明図である。
【図7】プロセッサによるストリーム解析の様子を示す説明図である。
【図8】デコーダシステムの一例を示す説明図である。
【図9】図8のオーディオプロセッサの動作を示す説明図である。
【図10】図8のオーディオプロセッサにおけるスタック構造を示す説明図である。
【符号の説明】
【0035】
100‥プロセッサ;110‥プログラムメモリ;120‥データメモリ;130‥ウォッチドッグタイマ;131‥割り込み要求信号;140‥CPU;141‥アドレスレジスタ;142‥プログラムカウンタ;143‥データレジスタ;144‥命令レジスタ;145‥命令デコーダ;146‥制御回路;147‥ALU;148‥条件フラグレジスタ;149‥強制ジャンプレジスタ;150‥バス

【特許請求の範囲】
【請求項1】
中央処理回路と、
前記中央処理回路により実行されるプログラムを格納するメモリ回路とを備え、
前記中央処理回路は、条件付分岐命令に関して強制ジャンプの有効/無効を示すレジスタを有し、条件付分岐命令の実行時に前記レジスタが有効を示す状態であれば分岐条件が成立したものと判定することを特徴とするプロセッサ。
【請求項2】
請求項1に記載のプロセッサにおいて、
所定時間の経過に伴って前記中央処理回路に割り込み要求を発行するタイマ回路を備え、
前記レジスタは、前記タイマ回路の割り込み要求の発行に伴って無効を示す状態から有効を示す状態に遷移することを特徴とするプロセッサ。
【請求項3】
請求項1または請求項2に記載のプロセッサにおいて、
前記メモリ回路に格納されるプログラムは、条件付分岐命令を用いたループ処理に関して条件付分岐命令の分岐条件の成立がループ処理の終了条件となるように生成されることを特徴とするプロセッサ。
【請求項4】
請求項1〜請求項3のいずれかに記載のプロセッサにおいて、
前記プロセッサは、圧縮符号化された音声データを復号する音声復号装置を構成することを特徴とするプロセッサ。
【請求項5】
請求項1〜請求項3のいずれかに記載のプロセッサにおいて、
前記プロセッサは、複数のプロセッサにより構成されるデータ処理システムで使用されることを特徴とするプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2009−163514(P2009−163514A)
【公開日】平成21年7月23日(2009.7.23)
【国際特許分類】
【出願番号】特願2008−703(P2008−703)
【出願日】平成20年1月7日(2008.1.7)
【出願人】(308014341)富士通マイクロエレクトロニクス株式会社 (2,507)
【Fターム(参考)】