(57)【要約】【課題】エラー発生時の命令アドレス退避およびエラー処理終了後の実行命令復帰制御をおこなわないコプロセッサを付随するマイクロプロセッサを提供する。【解決手段】プロセッサシステムにおいて、エラー検出部でエラーを検出した場合、エラー検出部１２０は割り込み制御部６４にエラー信号を出力し、割り込み制御部６４はエラーアドレスレジスタ６１の値と制御信号をプログラムカウンタ制御部２０に出力し、プログラムカウンタ２１の値をエラーアドレスレジスタ６１の値に書き換えることでエラー割り込みによる分岐処理を実現する。ここでエラーが検出されたときに、エラー発生時のプログラムカウンタ２１の値を退避させる処理をおこなわず、特定の退避レジスタおよびエラー処理実行後にエラー発生時のアドレスに復帰する制御回路を設けない。【選択図】図１
2008262437.tif 000002
【特許請求の範囲】
【請求項１】
コプロセッサを付随するプロセッサシステムにおいて、
分岐アドレスを格納するアドレス記憶手段と、
プロセッサの処理を前記アドレス記憶手段に格納されたアドレス値に分岐させるプログラムカウンタ制御部と、
前記コプロセッサからの指示により前記プログラムカウンタ制御部を制御する割り込み制御手段と、を備え、
前記コプロセッサの処理結果に応じてプロセッサの処理を分岐することを特徴とするプロセッサシステム。
【請求項２】
請求項１に記載のプロセッサシステムにおいて、
前記コプロセッサは前記コプロセッサで実行した処理結果のエラーの有無を判定するエラー検出部を備え、
前記プロセッサは予めレジスタ転送命令により前記アドレス記憶手段にエラー時の分岐アドレスを格納することを特徴とするプロセッサシステム。
【請求項３】
請求項２に記載のプロセッサシステムにおいて、
前記プロセッサは前記コプロセッサのエラー発生時の前記割り込み制御手段の動作を決定するエラーレベル記憶手段を備え、
前記プロセッサは予めレジスタ転送命令により前記エラーレベル記憶手段に２つのエラーレベルのいずれかの値を格納し、
前記割り込み制御手段は、前記コプロセッサのエラー発生時に、前記エラーレベル記憶手段に第１のエラーレベル値が格納されている場合は、前記アドレス記憶手段に格納されている分岐アドレスにプロセッサの処理を分岐し、前記エラーレベル記憶手段に第２のエラーレベル値が格納されている場合には、分岐をおこなわないことを特徴とするプロセッサシステム。
【請求項４】
請求項２に記載のプロセッサシステムにおいて、
前記コプロセッサは、可変長符号の復号処理をおこなう可変長符号処理部と、前記可変長符号処理部の復号結果のレンジからエラー発生の有無を確認するエラー検出部と、を備えることを特徴とするプロセッサシステム。
【請求項５】
請求項４に記載のプロセッサシステムにおいて、
前記プロセッサは、可変長符号処理命令により前記復号結果のレンジの最大値および最小値を前記コプロセッサに通知することを特徴とするプロセッサシステム。
【請求項６】
請求項４に記載のプロセッサシステムにおいて、
前記プロセッサは予めレジスタ転送命令により前記アドレス記憶手段に映像ストリームの次フレームの先頭処理をおこなう分岐アドレスを格納し、
前記コプロセッサのエラー発生時に、前記プロセッサは映像ストリームの次フレームの先頭処理をおこなうアドレスに分岐することを特徴とするプロセッサシステム。
【請求項７】
請求項１に記載のプロセッサシステムにおいて、
前記コプロセッサは、映像コーデックの符号処理をおこなう可変長符号処理部と、復号したパタンがエスケープパタンか否かを判定するエスケープ検出部を備え、
前記プロセッサは予めレジスタ転送命令により前記アドレス記憶手段にエスケープ処理の分岐アドレスを格納することを特徴とするプロセッサシステム。
【請求項８】
コプロセッサを付随するプロセッサシステムにおける例外処理方法であって、
前記コプロセッサのエラー発生時の分岐アドレスをアドレス記憶手段に格納するステップと、
前記コプロセッサのエラー発生を通知するステップと、
前記アドレス記憶手段に格納された分岐アドレスにプロセッサの処理を分岐するステップとを含むことを特徴とする例外処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロプロセッサおよびこれに付随するコプロセッサに関し、特にコプロセッサでエラーが発生した場合のマイクロプロセッサおよびコプロセッサのエラー処理に関するものである。
【背景技術】
【０００２】
近年では様々な電子機器にマイクロプロセッサが搭載されている。これらマイクロプロセッサでは、通常時に正常動作することに加え、エラー検出やエラー発生時に適切な動作をすることが求められている。
【０００３】
マイクロプロセッサにおけるエラー発生時の処理は、そのマイクロプロセッサに依存するが、エラー処理発生時の状態を内部の特殊レジスタに一旦退避させてエラー処理を実行し、エラー処理実行後に、特殊レジスタからエラー発生時の状態を読み出して処理を続行することが一般的である。
【０００４】
例えば、特開２００４−３６２３６８号公報（特許文献１）に示すマイクロプロセッサでは、エラー発生時に実行中および次に命令する命令のアドレスを示すプログラムカウンタ値を特定の退避レジスタに格納して、割り込み処理に分岐し、割り込み処理実行後、前記退避レジスタから停止させた実行中の命令と次に実行する命令のアドレスをプログラムカウンタに書き込み、処理を復帰させている。
【０００５】
マイクロプロセッサにおけるエラー検出としては、四則演算によって発生する演算のデータエラー検出がある。この加算結果がマイクロプロセッサ内部の演算器のビット幅を超えるオーバーフローが発生した場合や、除算において除数に０が設定されたなどに、そのマイクロプロセッサに応じたエラー処理を実行する。例えば、特開平６−２５９１１７号公報（特許文献２）では、２つのプロセッサからなるシステムにおいて、第２のプロセッサで四則演算を実行し、その結果に前記のようなエラーが生じた場合に、第１のプロセッサに対してエラー発生を通知することが記載されている。
【特許文献１】特開２００４−３６２３６８号公報
【特許文献２】特開平６−２５９１１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来のマイクロプロセッサでは、エラーが発生した場合、退避レジスタのような特殊レジスタにエラー発生時の命令アドレス等を格納する。このように特殊レジスタにエラー発生の状態を保持する方式では、退避レジスタおよびエラー発生アドレスへの復帰のための制御回路が必要となり、マイクロプロセッサ全体のハードウェア規模が増加する問題や、エラー発生時の処理に時間がかかる問題があった。
【０００７】
また、従来のマイクロプロセッサでは、演算結果のエラーチェックは、オーバーフローや除数０の除算など、限定された条件でしか実行することができなかった。そのため、演算器のビット数を超えない値の範囲内でありながら、かつ、実行する処理内容から規定される、ある値の範囲に、演算結果がおさまっているか否かを判定するためには、プログラムによるチェックが必要であった。
【０００８】
すなわち、演算結果について、規定される値の範囲の最大値および最小値との比較演算を実行する必要があった。これは、処理全体の中で、結果の値の範囲確認をすべき演算が多い場合、エラー検出のために必要なサイクル数の増加を招き、演算結果としてエラーではない正常な値が得られている場合の性能が落ちてしまうという問題があった。
【０００９】
本発明は上記の問題を解決し、ハードウェア規模が小さく、エラー処理負荷の小さなコプロセッサを付随するマイクロプロセッサシステムを提供することを目的とする。
【００１０】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１２】
上記課題を解決するために、本発明のコプロセッサを付随するプロセッサシステムは、分岐アドレスを格納するアドレス記憶手段と、プロセッサの処理を前記アドレス記憶手段に格納されたアドレス値に分岐させるプログラムカウンタ制御部と、前記コプロセッサからの指示により前記プログラムカウンタ制御部を制御する割り込み制御手段とを備える構成とし、前記コプロセッサの処理結果に応じてプロセッサの処理を分岐するようにした。
【００１３】
また、前記コプロセッサは前記コプロセッサで実行した処理結果のエラーの有無を判定するエラー検出部を備える構成とし、前記プロセッサは予めレジスタ転送命令により前記アドレス記憶手段にエラー時の分岐アドレスを格納するようにした。
【００１４】
さらに、前記コプロセッサは、映像コーデックの符号処理をおこなう可変長符号処理部と、復号したパタンがエスケープパタンか否かを判定するエスケープ検出部を備える構成とし、前記プロセッサは予めレジスタ転送命令により前記アドレス記憶手段にエスケープ処理の分岐アドレスを格納するようにした。
【発明の効果】
【００１５】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１６】
本発明によれば、コプロセッサを付随するマイクロプロセッサシステムの性能向上をはかることができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１８】
図１により、本発明の一実施の形態に係るプロセッサシステムの全体構成について説明する。図１は本発明の一実施の形態に係るプロセッサシステムの全体構成を示すブロック図であり、ＭＰＥＧ−２等に代表される、動画像コーデックにおける可変長符号デコード処理のためのマイクロプロセッサ１０およびコプロセッサ１００から構成されるシステムを示している。
【００１９】
図１において、プロセッサシステムは、マイクロプロセッサ１０、マイクロプロセッサ１０に接続された命令メモリ１５０、コプロセッサ１００から構成されている。
【００２０】
マイクロプロセッサ１０は、プログラムカウンタ制御部２０、プログラムカウンタ２１、命令デコーダ３０、演算部４０、汎用レジスタ５０、割り込み制御部６０、エラーアドレスレジスタ６１、エスケープアドレスレジスタ６２、エラーレベルレジスタ６３、エラーコードレジスタ６４から構成されている。
【００２１】
コプロセッサ１００は、可変長符号処理部１１０、エラー検出部１２０、エスケープ検出部１３０から構成されている。
【００２２】
図１に示すシステムでは、マイクロプロセッサ１０において構文を解析し、コプロセッサ１００において符号表の表引き等の可変長符号処理を実行する。
【００２３】
マイクロプロセッサ１０は、プログラムカウンタ制御部２０に内蔵されるプログラムカウンタ２１の値に従い、命令メモリ１５０から命令を逐次読み出し、この読み出された命令は命令デコーダ３０によりデコードされる。
【００２４】
デコードした命令がマイクロプロセッサ１０で実行する命令であれば、演算部４０により命令を実行し、結果を汎用レジスタ５０にライトバックする。デコードした命令がコプロセッサ１００で実行する符号処理命令であれば、命令デコード結果がコプロセッサ１００の可変長符号処理部１１０に出力される。
【００２５】
次に、図２により、本発明の一実施の形態に係るプロセッサシステムのコプロセッサで実行する可変長符号の復号処理について説明する。図２は本発明の一実施の形態に係るプロセッサシステムのコプロセッサで実行する可変長符号の復号処理を示すフローチャートである。
【００２６】
まず、復号処理が開始され（ステップ２００）、可変長符号処理部１１０において、データの復号処理が実行される（ステップ２１０）。復号処理時および復号処理後、エラー検出部１２０においてエラー発生の有無を確認し（ステップ２２０）、エラーが発生していない場合には、さらにエスケープ検出部１３０において、後述するエスケープ発生の有無を確認する（ステップ２３０）。エスケープが発生していない場合、マイクロプロセッサ１０に出力された復号結果が汎用レジスタ５０にライトされ（ステップ２４０）、復号処理が終了する（ステップ２７０）。
【００２７】
前記ステップ２２０においてエラー発生が検出された場合、エラー処理（ステップ２６０）に移り、前記ステップ２３０においてエスケープ発生が検出された場合、エスケープ処理（ステップ２５０）に移る。
【００２８】
次に、コプロセッサ１００のエラー検出部１２０におけるエラー検出方法および図２のフローチャートのステップ２６０におけるエラー処理について詳細に説明する。
【００２９】
ここで、マイクロプロセッサ１０は予めレジスタ転送命令により、エラー割り込み発生時の分岐先アドレスをエラーアドレスレジスタ６１に設定されているものとする。また、マイクロプロセッサ１０は予めレジスタ転送命令により、エラー発生時の割り込み制御部６０の振る舞いを決定するエラーレベルレジスタ６３にエラーレベル値を設定する。エラーレベルレジスタ６３には、エラーレベルとして「エラー」または「ワーニング」を設定されているものとする。
【００３０】
エラー検出部１２０では、予め設定された復号結果のレンジ、つまり結果の最大値および最小値と、可変長符号処理部１１０の復号結果とを比較する。この最大値および最小値は、マイクロプロセッサ１０が可変長符号処理命令のひとつとして設定するようにする。
【００３１】
エラー検出部１２０は、復号結果が前記最大値を超えた場合、および前記最小値を下回った場合に、エラーを検出する。また可変長符号処理部１１０において、復号対象の可変長符号を当該可変長符号表から復号できなかった場合にもエラーを検出する。
【００３２】
次に、図３により、本発明の一実施の形態に係るプロセッサシステムのエラー発生時の処理について説明する。図３は本発明の一実施の形態に係るプロセッサシステムのエラー発生時の処理を示すフローチャートである。
【００３３】
まず、エラー検出部１２０でエラーを検出した場合（ステップ３００）、エラー検出部１２０は割り込み制御部６０にエラー信号を出力する（ステップ３１０）。割り込み制御部６０は、規定されたエラーコードをエラーコードレジスタ６４に書き込む（ステップ３２０）。
【００３４】
次に、エラーレベルレジスタ６３の設定値がエラーであるかワーニングあるかを確認し（ステップ３３０）、ワーニングであればエラー処理をここで終了する（ステップ３５０）。エラーであれば、エラーアドレスレジスタ６１の値と制御信号をプログラムカウンタ制御部２０に出力し、プログラムカウンタ２１の値を前記エラーアドレスレジスタ６１の値に書き換え（ステップ３４０）、エラー処理が終了し（ステップ３５０）、エラー割り込みによる分岐処理を実現する。
【００３５】
ここで、エラー検出部１２０でエラーが検出され、分岐が発生した場合にも、特定のレジスタを設けておきエラー発生時のプログラムカウンタ２１の値を退避させることをしない。
【００３６】
映像コーデックにおける可変長符号の復号処理等では、可変長符号の列である映像ストリームに一度エラーが発生した場合、例えばそのフレームの終端までは正常にストリームを復号できず、一度エラーが発生した場合、直後の後続のストリームを正常に処理できない。次に正常な復号処理を再開できるのは、次フレームの先頭というように一定している。
【００３７】
エラー処理終了後、正常動作へ戻る際の戻り先が一定であれば、エラー処理シーケンスの最後にフレーム先頭における処理への分岐を通常の命令により実行するようにすればよい。上述したような処理により、エラー発生時にも戻りアドレスを記憶する必要なくエラー処理および正常動作への復帰を実行可能である。
【００３８】
次にエスケープ処理について述べる。映像コーデックでは、画像を周波数変換した後の係数値を可変長符号化して伝送する。ＭＰＥＧ−２やＭＰＥＧ−４等のコーデックでは、この係数値を復号する場合、エスケープ処理と呼ばれる特殊な処理が発生することがある。
【００３９】
係数値の復号では、コーデック規格で定められた可変長符号表を参照し、値の復号をおこなう。このとき、エスケープと呼ばれるある特定のビットパタンがストリーム中に現れた場合、復号方法を変えて係数値を復号しなければならない。ＭＰＥＧ−２の場合、エスケープビットパタンは“０００００１”であり、後続する６ビットをラン（係数値０が連続する数）、１２ビットをレベル（係数値）として復号する。
【００４０】
係数値を復号するたびに、復号したパタンがエスケープであるか否かをチェックし、エスケープでなければ次の係数復号処理、エスケープであればエスケープ処理に分岐して処理を実行し、エスケープ処理後に次の係数デコードにうつるという処理を実行しなければならない。
【００４１】
プログラムのみにより係数の復号処理をおこなった場合、係数値の復号のたびに復号結果のエスケープパタンのチェックを命令で実行する必要があり、処理性能の低下を招いてしまう。復号結果がエスケープパタンでない場合にも、そのチェックを実行する必要があり、無駄な処理が増加する。そこでエスケープ処理を、前記エラー処理と同様にして実行する。
【００４２】
次に、図４により、本発明の一実施の形態に係るプロセッサシステムの前記ステップ２５０のエスケープ処理について説明する。図４は本発明の一実施の形態に係るプロセッサシステムのエスケープ処理を示すフローチャートである。
【００４３】
まず、マイクロプロセッサ１０は予めレジスタ転送命令により、エスケープ割り込み発生時の分岐先アドレスをエスケープアドレスレジスタ６２に設定する。
【００４４】
エスケープ発生時（ステップ４００）、エスケープ検出部１３０から割り込み制御部６０に対して、エスケープ検出信号が出力される（ステップ４１０）。エスケープ検出信号が入力されると、割り込み制御部６０からエスケープアドレスレジスタ６２に設定されたアドレスおよび制御信号がプログラムカウンタ制御部２０に出力され、プログラムカウンタ２１の値が前記エスケープアドレスレジスタ６２の値に書き換えられ（ステップ４２０）、エスケープ処理が終了し（ステップ４３０）、エスケープ割り込みによる分岐処理を実現する。
【００４５】
ここでエスケープ処理とは、固定長符号で符号化されたランおよびレベルの復号処理を示す。エスケープ処理終了後、マイクロプロセッサ１０は分岐命令を実行し、前記係数復号命令を実行する命令アドレスに分岐する。このような処理を実行することにより、映像コーデックにおける可変長符号処理において、性能を低下させることなくエスケープ処理をマイクロプロセッサで実行できる。
【００４６】
上述の実施の形態においては、映像コーデックの可変長符号処理について挙げたが、エラー処理実行後に、エラー発生時に実行中の命令を続行することを必要としない処理にも同様に本実施の形態を適用できる。
【００４７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【図面の簡単な説明】
【００４８】
【図１】本発明の一実施の形態に係るプロセッサシステムの全体構成を示すブロック図である。
【図２】本発明の一実施の形態に係るプロセッサシステムのコプロセッサで実行する可変長符号の復号処理を示すフローチャートである。
【図３】本発明の一実施の形態に係るプロセッサシステムのエラー発生時の処理を示すフローチャートである。
【図４】本発明の一実施の形態に係るプロセッサシステムのエスケープ処理を示すフローチャートである。
【符号の説明】
【００４９】
１０…マイクロプロセッサ、２０…プログラムカウンタ制御部、２１…プログラムカウンタ、３０…命令デコーダ、４０…演算部、５０…汎用レジスタ、６０…割り込み制御部、６１…エラーアドレスレジスタ、６２…エスケープアドレスレジスタ、６３…エラーレベルレジスタ、６４…エラーコードレジスタ、１００…コプロセッサ、１１０…可変長符号処理部、１２０…エラー検出部、１３０…エスケープ検出部。
【図１】
2008262437.tif 000003
【図２】
2008262437.tif 000004
【図３】
2008262437.tif 000005
【図４】
2008262437.tif 000006