(57)【要約】【課題】演算結果の信頼性と並列度との最適化を図ることが可能なプロセッサを提供すること。【解決手段】通常モードが設定されている場合に、ＰＥ群１１〜２６のデータレジスタに別個の演算対象のデータが書き込まれ、エラー検出モードが設定されている場合に、ＰＥ群１１〜１８のデータレジスタと、ＰＥ群１９〜２６のデータレジスタとに同じ演算対象のデータが書き込まれる。通常モードが設定されている場合に、マルチプレクサ４０〜４２が、ＰＥ群１１〜２６から出力される演算結果を別個の演算結果として選択的に出力し、エラー検出モードが設定されている場合に、判定回路４３がＰＥ群１１〜１８と、ＰＥ群１９〜２６とから出力される演算結果を比較し、一致するときにマルチプレクサ４０〜４２がその演算結果を出力し、一致しないときに判定回路４３が外部にエラー検出を通知する。したがって、演算結果の信頼性と並列度との最適化を図ることが可能となる。【選択図】図２
2012103772.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサエレメントと、前記複数のプロセッサエレメントのそれぞれに対応して設けられ、前記複数のプロセッサエレメントの演算対象のデータおよびその演算結果を記憶する複数のデータレジスタとを含んだプロセッサであって、
前記複数のプロセッサエレメントおよび前記複数のデータレジスタが複数のグループに分けられており、
外部から第１のモードが設定されている場合に、前記複数のグループのデータレジスタに別個の演算対象のデータを書き込み、外部から第２のモードが設定されている場合に、前記複数のグループの少なくとも２つのグループのデータレジスタに同じ演算対象のデータを書き込む書込手段と、
前記複数のグループから出力される演算結果を選択的に出力する選択手段と、
前記少なくとも２つのグループから出力される演算結果の比較判定を行なう判定手段とを含み、
前記第１のモードが設定されている場合に、前記選択手段が前記複数のグループから出力される演算結果を別個の演算結果として選択的に出力し、前記第２のモードが設定されている場合に、前記判定手段が前記少なくとも２つのグループから出力される演算結果を比較し、一致するときに前記選択手段がその演算結果を出力し、一致しないときに前記判定手段が外部にエラー検出を通知する、プロセッサ。
【請求項２】
外部から第３のモードが設定されている場合に、前記書込手段が前記複数のグループの少なくとも３つのグループのデータレジスタに同じデータを書き込み、前記判定手段が前記少なくとも３つのグループから出力される演算結果の多数決判定を行ない、多数決がとれたときに前記選択手段がその演算結果を出力し、多数決がとれなかったときに前記判定手段が外部にエラー訂正不可を通知する、請求項１記載のプロセッサ。
【請求項３】
前記書込手段は、前記第１のモードが設定されている場合に前記複数のグループのデータレジスタに別個の演算対象のデータを書き込み、前記第２のモードが設定されている場合に前記少なくとも２つのグループのデータレジスタに同じ演算対象のデータを同時に書き込み、前記第３のモードが設定されている場合に前記少なくとも３つのグループのデータレジスタに同じ演算対象のデータを同時に書き込む、請求項２記載のプロセッサ。
【請求項４】
前記複数のプロセッサエレメントおよび前記複数のデータレジスタが４つのグループに分けられており、
前記選択手段は、第１のグループから出力される演算結果と第２のグループから出力される演算結果とのいずれかを選択して出力する第１のセレクタと、第３のグループから出力される演算結果と第４のグループから出力される演算結果とのいずれかを選択して出力する第２のセレクタと、前記第１のセレクタから出力される演算結果と前記第２のセレクタから出力される演算結果とのいずれかを選択して出力する第３のセレクタとを含み、
前記プロセッサはさらに、前記第１のモードが設定されている場合には、前記第１〜第３のセレクタを制御して前記第１〜第４のグループから出力される演算結果を順次出力させ、前記第２のモードが設定されている場合には、前記判定手段によって前記第１のグループから出力される演算結果と前記第３のグループから出力される演算結果とが一致していると判定されたときに、前記第１のセレクタおよび前記第３のセレクタを制御して前記第１のグループから出力される演算結果を出力させ、前記判定手段によって前記第２のグループから出力される演算結果と前記第４のグループから出力される演算結果とが一致していると判定されたときに、前記第１のセレクタおよび前記第３のセレクタを制御して前記第２のグループから出力される演算結果を出力させる制御手段を含む、請求項２または３記載のプロセッサ。
【請求項５】
前記第３のモードが設定されている場合には、前記判定手段によって前記第１〜第４のグループから出力される演算結果の多数決がとれたときに、前記制御手段は、前記第１のセレクタおよび前記第３のセレクタを制御して前記多数決がとれたデータを出力させる、請求項４記載のプロセッサ。
【請求項６】
複数のプロセッサエレメントと、前記複数のプロセッサエレメントのそれぞれに対応して設けられ、前記複数のプロセッサエレメントの演算対象のデータおよびその演算結果を記憶する複数のデータレジスタとを含んだ第１のプロセッサと、
カメラセンサによって撮像された画像データを入力するカメラインタフェースと、
前記第１のプロセッサに命令を発行して、前記カメラインタフェースによって入力された画像データに演算処理を行なわせる第２のプロセッサとを含んだ画像処理システムであって、
前記複数のプロセッサエレメントおよび前記複数のデータレジスタが複数のグループに分けられており、
前記第１のプロセッサは、前記第２のプロセッサによって第１のモードが設定されている場合に、前記複数のグループのデータレジスタに別個の演算対象のデータを書き込み、前記第２のプロセッサによって第２のモードが設定されている場合に、前記複数のグループの少なくとも２つのグループのデータレジスタに同じ演算対象のデータを書き込む書込手段と、
前記複数のグループから出力される演算結果を選択的に出力する選択手段と、
前記少なくとも２つのグループから出力される演算結果の比較判定を行なう判定手段とを含み、
前記第１のモードが設定されている場合に、前記選択手段が前記複数のグループから出力される演算結果を別個の演算結果として選択的に出力し、前記第２のモードが設定されている場合に、前記判定手段が前記少なくとも２つのグループから出力される演算結果を比較し、一致するときに前記選択手段がその演算結果を出力し、一致しないときに前記判定手段が外部にエラー検出を通知する、画像処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理アプリケーションなどを高速に処理する技術に関し、特に、単一命令複数データ流（ＳＩＭＤ：Single Instruction Multiple Data stream）の演算方式を用いて大量のデータを高速に処理するプロセッサおよびそれを用いた画像処理システムに関する。
【背景技術】
【０００２】
近年、音声や画像といった大量のデータを高速に処理するデジタル信号処理の重要性が高まってきている。このようなデジタル信号処理においては、一般に専用の半導体装置としてＤＳＰ（Digital Signal Processor）が用いられることが多い。しかしながら、信号処理アプリケーション、特に画像処理アプリケーションにおいては、処理対象のデータ量が非常に大きいため、ＤＳＰでも処理能力が十分ではない。
【０００３】
これに対して、複数の演算器を並列に動作させることによって高い信号処理性能を実現する並列プロセッサ技術の開発が進んでいる。このような専用プロセッサをＣＰＵ（Central Processing Unit）に付随するアクセラレータとして用いれば、組み込み機器に搭載されるＬＳＩのように低消費電力、低コストが要求される場合においても高い信号処理性能を実現することができる。
【０００４】
ＳＩＭＤ型プロセッサを信号処理アプリケーション、画像処理アプリケーションなどに適用する場合、演算結果の信頼性向上のためにエラー検出やエラー訂正などの機能が必要となる。このとき、データパス上にパリティ判定回路やＥＣＣ（Error Check and Correction）回路などが組み込まれることが多い。これに関連する技術として、下記の特許文献１〜４に開示された発明がある。
【０００５】
特許文献１は、プロセッサエレメント等の資源の有効活用ができ、縮退動作が実現でき、プロセッサエレメントの数を増やさずに冗長度を高めることを目的とする。複数のタスクに分けられたアプリケーションプログラムを記憶媒体に格納し、これらのタスクをＣＰＵ内の複数のプロセッサエレメント上で重複させて実行し、タスクの処理結果をプロセッサエレメント間インタフェースを介して各プロセッサエレメント間で送受信して多数決によって決める。そして、多数決の結果と異なる処理結果を出したタスクを停止し、このタスクと同一のタスクを代替タスクとして他のプロセッサエレメント上で実行させるようにして、タスクを冗長管理の単位とする。
【０００６】
特許文献２は、いわゆる二重プロセッサ・モードで互いに並列して動作する第１および第２計算ユニットを有するプロセッサの中に読み込まれる命令に属するデータ・ワードのビット誤りチェックで利用可能な情報を利用する方法に関する。このプロセッサ構造はまた読み込みデータ内の起こりうるビット誤りを連続的にチェックすることを意図した第３および第４計算ユニットと、並列動作ユニットからの出力データを比較するための比較器と、比較器内で出力データ間の差が検出された際にどちらの計算ユニットが正しい出力データを出したかを判定するように適合された診断ユニットと、そしてプロセッサ構造からの出力データが正しい出力データを出した計算ユニットから出されるよう制御するように適合された制御ユニットとを含む。プロセッサは出力データ間の差が比較器内で検出された時に単一プロセッサ・モードに切り替わる。プロセッサが二重プロセッサ・モードで動作している時はデータ・ワードは起こりうるビット誤りを訂正することなくそれぞれの計算ユニットの中に直接読み込まれ、第３および第４計算ユニットからの情報は診断ユニット内での判定を行うために使用される。ビット誤り制御およびビット誤り訂正はプロセッサが単一プロセッサ・モードで動作中は既知の方法で使用される。
【０００７】
特許文献３は、ＳＲＡＭアレイの各列ごとに演算器を配置し、メモリセル列（エントリ）との対応の演算器の間でデータ転送を行なって並列演算を実行する構成が示されている。
【０００８】
特許文献４は、並列演算を実行する主演算回路において、データを記憶するために、ダイナミック型メモリセルを有するＤＲＡＭセルアレイを配置し、ＤＲＡＭセルアレイの所定数のビット線対に対応して演算エレメントが配置された演算回路との間で１ビット単位または複数ビット単位でデータ転送を実行し、演算エレメント内で命令に応じた演算を実行する構成が示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平１１−０８５７１３号公報
【特許文献２】特表２００１−５２６４２２号公報
【特許文献３】特開２００６−１２７４６０号公報
【特許文献４】特開２００９−０９８８６１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述のように、演算結果の信頼性向上を図るためにデータパス上にパリティ判定回路やＥＣＣ回路を配置するとパスが長くなってしまい、周波数性能が低下するといった問題点があった。
【００１１】
また、特許文献３の図１２のセンスアンプ群（４２）の出力や特許文献４の図１５のセンスアンプ（ＳＡ）の出力にパリティ判定回路やＥＣＣ回路を追加した場合にはチップ面積が大きくなったり、電力オーバヘッドが大きくなったりするといった問題点があった。
【００１２】
さらには、特許文献１に開示された発明においては、１つのタスクを複数のプロセッサエレメントで処理する場合に、複数のプロセッサエレメント間で処理結果を比較するための制御タスクを用意し、タスク完了、完了通知、一致判定といった処理を互いに同期をとって行なう必要がある。そのため、同期をとる手順が必要となって処理時間が増大すると共に、互いに通信を行なうための専用ハードウェアが必要となって、ハードウェアが増大するといった問題点もあった。
【００１３】
本発明は、上記問題点を解決するためになされたものであり、その目的は、演算結果の信頼性と並列度との最適化を図ることが可能なプロセッサおよびそれを用いた画像処理システムを提供することである。
【課題を解決するための手段】
【００１４】
本発明の一実施例によれば、複数のＰＥと、複数のＰＥのそれぞれに対応して設けられ、複数のＰＥの演算対象のデータおよびその演算結果を記憶する複数のデータレジスタとを含んだプロセッサが提供される。複数のＰＥおよび複数のデータレジスタが複数のグループ（ＰＥ群）に分けられている。
【００１５】
ＣＰＵによって通常モードが設定されている場合に、複数のＰＥ群のデータレジスタに別個の演算対象のデータが書き込まれ、ＣＰＵによってエラー検出モードが設定されている場合に、複数のＰＥ群の少なくとも２つのＰＥ群のデータレジスタに同じ演算対象のデータが書き込まれる。マルチプレクサは、複数のＰＥ群から出力される演算結果を選択的に出力する。判定回路は、２つのＰＥ群から出力される演算結果の比較判定を行なう。
【００１６】
通常モードが設定されている場合に、マルチプレクサが、複数のＰＥ群から出力される演算結果を別個の演算結果として選択的に出力し、エラー検出モードが設定されている場合に、判定回路が２つのＰＥ群から出力される演算結果を比較し、一致するときにマルチプレクサがその演算結果を出力し、一致しないときに判定回路が外部にエラー検出を通知する。
【発明の効果】
【００１７】
本発明の一実施例によれば、通常モードが設定されている場合に、マルチプレクサが、複数のＰＥ群から出力される演算結果を別個の演算結果として選択的に出力し、エラー検出モードが設定されている場合に、判定回路が２つのＰＥ群から出力される演算結果を比較するので、演算結果の信頼性と並列度との最適化を図ることが可能となる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施の形態におけるプロセッサの概念を説明するための図である。
【図２】本発明の実施の形態におけるプロセッサの内部構成を示すブロック図である。
【図３】判定回路４３およびエラー検出／モード選択回路４４の構成例を示す図である。
【図４】エラー検出モード時におけるプロセッサの動作を説明するための図である。
【図５】エラー訂正モード時におけるプロセッサの動作を説明するための図である。
【図６】通常モード時におけるデータレジスタからの読み出し動作を説明するためのタイミングチャートである。
【図７】エラー検出モード時におけるデータレジスタからの読み出し動作を説明するためのタイミングチャートである。
【図８】エラー訂正モード時におけるデータレジスタからの読み出し動作を説明するためのタイミングチャートである。
【図９】本発明の実施の形態におけるプロセッサの通常モード時に動作するデータ出力部分のみを抽出した図である。
【図１０】本発明の実施の形態におけるプロセッサのエラー検出モード時に動作するデータ出力部分のみを抽出した図である。
【図１１】本発明の実施の形態におけるプロセッサのエラー訂正モード時に動作するデータ出力部分のみを抽出した図である。
【図１２】本発明の実施の形態におけるプロセッサを用いた画像処理システムの構成例を示す図である。
【図１３】図１２に示す画像処理システムの処理手順を説明するためのフローチャートである。
【発明を実施するための形態】
【００１９】
図１は、本発明の実施の形態におけるプロセッサの概念を説明するための図である。プロセッサは、複数のＰＥ（Processor Element）１０１と、プロセッサ全体の制御を行なうコントローラ１０２と、ＰＥ１０１が演算を行なうデータを格納するＳＲＡＭ（Static Random Access memory）１０３と、ＳＲＡＭ１０３から出力されるデータの比較／多数決判定を行なう比較多数決回路１０４とを含む。
【００２０】
ＰＥ１０１は、コントローラ１０２から単一のＳＩＭＤ命令を受け、ＳＲＡＭ１０３に格納されるデータに対して演算を行なう。ＰＥ１０１による演算結果は、再度ＳＲＡＭ１０３に書き戻される。
【００２１】
このプロセッサは、通常モード、エラー検出モード、エラー訂正モードの３つのモードを有している。通常モードが設定されている場合には、ＳＲＡＭ１０３に書き戻された演算結果がそのまま外部に出力される。
【００２２】
エラー検出モードが設定されている場合には、ＳＲＡＭ１０３に書き戻された演算結果の２つを比較し、一致しているときはエラーが検出されなかったとして、そのデータを外部に出力する。また、不一致の場合にはエラーが検出されたとして、エラー検出を外部に通知する。
【００２３】
また、エラー訂正モードが設定されている場合には、ＳＲＡＭ１０３に書き戻された演算結果の少なくとも３つの多数決を判定し、多数決がとれた場合には、最も数が多い演算結果を外部に出力する。また、多数決がとれなかった場合には、エラー訂正が不可であることを外部に通知する。
【００２４】
図２は、本発明の実施の形態におけるプロセッサの内部構成を示すブロック図である。このプロセッサは、演算処理部１と、プロセッサの全体的な制御を行なうコントローラ２と、バスインタフェース回路３とを含む。
【００２５】
また、演算処理部１は、ＰＥ群１１〜２６と、エントリコミュニケータ２７と、マルチプレクサ（ｍｕｘ）２８〜３１と、デマルチプレクサ（ｄｅｍｕｘ）３２〜３５と、ＡＮＤ回路３６〜３９と、マルチプレクサ４０〜４２と、判定回路４３と、エラー検出／モード選択回路４４と、フリップフロップ（以下、ＦＦと略す。）４５および４６とを含む。
【００２６】
ＰＥ群１１〜２６は、それぞれ６４個のＰＥと、ＰＥのそれぞれに対応して設けられた６４個のデータレジスタ（ＳＲＡＭ）とを有している。たとえば、ＰＥ群１１は、ＰＥ０〜ＰＥ６３と、それに対応するデータレジスタ０〜６３とを有しており、ＰＥ群１２は、ＰＥ６４〜ＰＥ１２７と、それに対応するデータレジスタ６４〜１２７とを有している。ＰＥ群１３〜２６も同様にして６４個のＰＥと、６４個のデータレジスタとを有しており、ＰＥ群１１〜２６全体で、１０２４個のＰＥ（ＰＥ０〜ＰＥ１０２３）と、１０２４個のデータレジスタ（データレジスタ０〜１０２３）とを有することになる。
【００２７】
ＰＥ０〜ＰＥ１０２３は、コントローラ２から出力される単一のＰＥコマンドに応じて同一の演算を行なうものであり、データレジスタ０〜１０２３の中の対応するデータレジスタに格納されたデータに対して演算を実行し、演算結果を対応するデータレジスタに書き戻す。
【００２８】
エントリコミュニケータ２７は、ＰＥ０〜ＰＥ１０２３の接続経路を切換えることができ、ＰＥ０〜ＰＥ１０２３に異なるエントリ（データレジスタ）のデータの演算を行なわせることが可能である。
【００２９】
マルチプレクサ２８は、コントローラ２から出力される２ビットのアドレスＡ［１：０］に応じて、ＰＥ群１１〜１４から出力される６４ビットのデータのいずれかを選択してマルチプレクサ４０および判定回路４３に出力する。
【００３０】
マルチプレクサ２９は、コントローラ２から出力される２ビットのアドレスＡ［１：０］に応じて、ＰＥ群１５〜１８から出力される６４ビットのデータのいずれかを選択してマルチプレクサ４０および判定回路４３に出力する。
【００３１】
マルチプレクサ４０は、エラー検出／モード選択回路４４から出力される１ビットのアドレスＡＥ［２］に応じて、マルチプレクサ２８およびマルチプレクサ２９から出力される６４ビットのデータのいずれかを選択してマルチプレクサ４２に出力する。
【００３２】
マルチプレクサ３０は、コントローラ２から出力される２ビットのアドレスＡ［１：０］に応じて、ＰＥ群１９〜２２から出力される６４ビットのデータのいずれかを選択してマルチプレクサ４１および判定回路４３に出力する。
【００３３】
マルチプレクサ３１は、コントローラ２から出力される２ビットのアドレスＡ［１：０］に応じて、ＰＥ群２３〜２６から出力される６４ビットのデータのいずれかを選択してマルチプレクサ４１および判定回路４３に出力する。
【００３４】
マルチプレクサ４１は、エラー検出／モード選択回路４４から出力される１ビットのアドレスＡＥ［２］に応じて、マルチプレクサ３０およびマルチプレクサ３１から出力される６４ビットのデータのいずれかを選択してマルチプレクサ４２に出力する。
【００３５】
マルチプレクサ４２は、エラー検出／モード選択回路４４から出力される１ビットのアドレスＡＥ［３］に応じて、マルチプレクサ４０およびマルチプレクサ４１から出力される６４ビットのデータのいずれかを選択してＦＦ４６に出力する。
【００３６】
ＦＦ４６は、マルチプレクサ４２から受けた６４ビットのデータを保持してバスインタフェース回路３に出力する。そして、バスインタフェース回路３は、ＦＦ４６から受けた６４ビットのデータを後述のメディアバスに出力する。
【００３７】
ＦＦ４５は、バスインタフェース回路３を介して受けた６４ビット幅の入力データを保持してＡＮＤ回路３６〜３９に出力する。
【００３８】
ＡＮＤ回路３６〜３９は、ＦＦ４５から出力される６４ビットのデータに対応して設けられており、それぞれ一方の端子にはＦＦ４５から出力されるデータ信号が接続され、他方の端子にはエラー検出／モード選択回路４４から出力されるアドレスデコード信号ＰＡ［３：０］のいずれかが接続されている。
【００３９】
４ビットのアドレスデコード信号ＰＡ［３：０］は、モードに応じて、いずれか１ビット、いずれか２ビット、または４ビットすべてがハイレベル（以下、Ｈレベルと略す。）となり、他のビットがロウレベル（以下、Ｌレベルと略す。）となる。たとえば、ＰＡ［０］のみがＨレベルのときは、ＡＮＤ回路３６が６４ビットのデータをデマルチプレクサ３２に出力し、ＰＥ群１１〜１４のいずれかに６４ビットのデータを書き込むことができる。
【００４０】
また、ＰＡ［０］およびＰＡ［２］がＨレベルのときは、ＡＮＤ回路３６および３８が６４ビットのデータをデマルチプレクサ３２および３４に出力し、ＰＥ群１１〜１４のいずれかおよびＰＥ群１９〜２２のいずれかに６４ビットのデータを書き込むことができる。したがって、同じ６４ビットのデータを２つのＰＥ群に同時に書き込むことができる。同様にして、ＰＡ［０］〜ＰＡ［３］がすべてＨレベルのときは、同じ６４ビットのデータを４つのＰＥ群に同時に書き込むことができる。
【００４１】
デマルチプレクサ３２は、コントローラ２から出力される２ビットのアドレスＡ［１：０］に応じて、ＡＮＤ回路３６から受けた６４ビットのデータをＰＥ群１１〜１４のいずれかに出力する。データを受けたＰＥ群は、６４ビットのデータを６４個のデータレジスタに書き込む。
【００４２】
デマルチプレクサ３３は、コントローラ２から出力される２ビットのアドレスＡ［１：０］に応じて、ＡＮＤ回路３７から受けた６４ビットのデータをＰＥ群１５〜１８のいずれかに出力する。データを受けたＰＥ群は、６４ビットのデータを６４個のデータレジスタに書き込む。
【００４３】
デマルチプレクサ３４は、コントローラ２から出力される２ビットのアドレスＡ［１：０］に応じて、ＡＮＤ回路３８から受けた６４ビットのデータをＰＥ群１９〜２２のいずれかに出力する。データを受けたＰＥ群は、６４ビットのデータを６４個のデータレジスタに書き込む。
【００４４】
デマルチプレクサ３５は、コントローラ２から出力される２ビットのアドレスＡ［１：０］に応じて、ＡＮＤ回路３９から受けた６４ビットのデータをＰＥ群２３〜２６のいずれかに出力する。データを受けたＰＥ群は、６４ビットのデータを６４個のデータレジスタに書き込む。
【００４５】
図３は、判定回路４３およびエラー検出／モード選択回路４４の構成例を示す図である。判定回路４３は、ＮＡＮＤ回路５１と、ＯＲ回路５２と、ＡＮＤ回路５３〜５４と、ＥＸ−ＯＲ（排他的論理和）回路５５〜５８と、マルチプレクサ５９〜６０とを含む。
【００４６】
なお、図３においては、マルチプレクサ２８〜３１から受けたそれぞれ６４ビットのデータの中の１ビットを比較または多数決判定を行なう構成となっているが、同様の比較回路が複数存在し、複数ビットの比較または多数決判定を行なうものとする。
【００４７】
ＮＡＮＤ回路５１は、マルチプレクサ２８〜３１から受けた４つのデータＱ［２５６×０＋Ｎ］、Ｑ［２５６×１＋Ｎ］、Ｑ［２５６×２＋Ｎ］、Ｑ［２５６×３＋Ｎ］がすべて“１”のときのみＬレベルを出力し、それ以外の場合にはＨレベルを出力する。また、ＯＲ回路５２は、４つのデータがすべて“０”のときのみＬレベルを出力し、それ以外の場合にはＨレベルを出力する。
【００４８】
したがって、ＡＮＤ回路５３は、４つのデータが一致する場合にＬレベルを出力し、一致しない場合にはＨレベルを出力する。なお、Ｎ＝０〜２５５とする。
【００４９】
ＥＸ−ＯＲ回路５５は、マルチプレクサ２８および３０から受けた２つのデータＱ［２５６×０＋Ｎ］、Ｑ［２５６×２＋Ｎ］が一致する場合にＬレベルを出力し、一致しない場合にＨレベルを出力する。また、ＥＸ−ＯＲ回路５６は、マルチプレクサ２９および３１から受けた２つのデータＱ［２５６×１＋Ｎ］、Ｑ［２５６×３＋Ｎ］が一致する場合にＬレベルを出力し、一致しない場合にＨレベルを出力する。
【００５０】
したがって、ＥＸ−ＯＲ回路５７は、２つのデータＱ［２５６×０＋Ｎ］、Ｑ［２５６×２＋Ｎ］が一致し、かつ２つのデータＱ［２５６×１＋Ｎ］、Ｑ［２５６×３＋Ｎ］が一致する場合、または２つのデータＱ［２５６×０＋Ｎ］、Ｑ［２５６×２＋Ｎ］が一致せず、かつ２つのデータＱ［２５６×１＋Ｎ］、Ｑ［２５６×３＋Ｎ］が一致しない場合にＬレベルを出力し、それ以外の場合にＨレベルを出力する。
【００５１】
ＥＸ−ＯＲ回路５８は、ＡＮＤ回路５３からＨレベルが出力され、ＥＸ−ＯＲ回路５７からＬレベルが出力されたとき、すなわち４つのデータの中で２つのデータが“０”であり、残りの２つのデータが“１”のときにＨレベルを出力する。なお、エラー訂正モード時に、ＥＸ−ＯＲ回路５８からの出力信号がエラー訂正不可信号として後述のＣＰＵに出力され、割り込み信号として使用される。
【００５２】
ＥＸ−ＯＲ回路５８は、ＡＮＤ回路５３からＬレベルが出力され、ＥＸ−ＯＲ回路５７からＬレベルが出力されたとき、すなわち４つのデータがすべて一致する場合にＬレベルを出力する。また、ＥＸ−ＯＲ回路５８は、ＡＮＤ回路５３からＨレベルが出力され、ＥＸ−ＯＲ回路５７からＨレベルが出力されたとき、すなわち４つのデータの中の３つのデータが一致する場合にＬレベルを出力する。エラーが検出されない場合、またはエラーが検出されても訂正できる場合に、ＥＸ−ＯＲ回路５８からＬレベルが出力される。
【００５３】
マルチプレクサ５９は、ＡＥ［２］がＬレベルのときに、ＥＸ−ＯＲ回路５５から出力される値、すなわち、Ｑ［２５６×０＋Ｎ］とＱ［２５６×２＋Ｎ］とが一致するか否かの値を出力する。また、マルチプレクサ５９は、ＡＥ［２］がＨレベルのときに、ＥＸ−ＯＲ回路５６から出力される値、すなわち、Ｑ［２５６×１＋Ｎ］とＱ［２５６×３＋Ｎ］とが一致するか否かの値を出力する。なお、エラー検出モード時に、マルチプレクサ５９からの出力信号がエラー検出信号として後述のＣＰＵに出力され、割り込み信号として使用される。
【００５４】
マルチプレクサ６０は、通常モードまたはエラー検出モード時にマルチプレクサ５９から出力される値を選択して出力し、エラー訂正モード時にＥＸ−ＯＲ回路５８から出力される値を選択して出力する。
【００５５】
ＡＮＤ回路５４は、エラー検出モードまたはエラー訂正モード時にマルチプレクサ６０から出力される値を出力し、通常モード時にＬレベルを出力する。したがって、ＡＮＤ回路５４は、エラー検出モード時にエラーが発生した場合、およびエラー訂正モード時にエラー訂正が不可能な場合にＨレベルを出力し、それ以外の場合にＬレベルを出力する。
【００５６】
エラー検出／モード選択回路４４は、アドレス選択プリデコーダ６１と、ＦＦ６２〜６５とを含む。ＦＦ６２は、ＡＮＤ回路５３から受けた値を保持し、エラー検出通知信号として後述のＣＰＵに出力する。また、ＦＦ６３は、ＡＮＤ回路５４から受けた値を保持し、エラー発生割り込み信号として後述のＣＰＵに出力する。
【００５７】
ＦＦ６４は、エラー検出モード信号（Ａ）の値を保持し、ＡＮＤ回路５４およびアドレス選択プリデコーダ６１に出力する。また、ＦＦ６５は、エラー訂正モード信号（Ｂ）の値を保持し、マルチプレクサ６０およびアドレス選択プリデコーダ６１に出力する。
【００５８】
エラー検出モード信号（Ａ）は、通常モード時にＬレベルとなり、エラー検出モードおよびエラー訂正モード時にＨレベルとなる。また、エラー訂正モード信号（Ｂ）は、通常モードおよびエラー検出モード時にＬレベルとなり、エラー訂正モード時にＨレベルとなる。これらの信号は、後述のＣＰＵによって設定される。
【００５９】
アドレス選択プリデコーダ６１は、通常モード時に、Ａ［３：２］の値をそのままＡＥ［３：２］に出力し、Ａ［３：２］の値のデコード結果をＰＡ［３：０］に出力する。したがって、ＰＡ［０］〜ＰＡ［３］の１つがＨレベルとなり、それ以外の３つがＬレベルとなる。
【００６０】
アドレス選択プリデコーダ６１は、エラー検出モード時に、ＡＥ［３］をＬレベルに固定し、Ａ［２］の値をＡＥ［２］に出力する。アドレス選択プリデコーダ６１は、エラー検出モード時に、Ａ［０］がＬレベルであれば、ＰＡ［０］およびＰＡ［２］にＨレベルを出力し、ＰＡ［１］およびＰＡ［３］にＬレベルを出力する。また、Ａ［０］がＨレベルであれば、ＰＡ［０］およびＰＡ［２］にＬレベルを出力し、ＰＡ［１］およびＰＡ［３］にＨレベルを出力する。
【００６１】
アドレス選択プリデコーダ６１は、エラー訂正モード時に、ＡＥ［３］をＬレベルに固定し、マルチプレクサ２８および２９から出力されるデータの中で正しいデータが選択されるようにＡＥ［２］を出力する。また、アドレス選択プリデコーダ６１は、ＰＡ［０］〜ＰＡ［３］にＨレベルを出力する。
【００６２】
図４は、エラー検出モード時におけるプロセッサの動作を説明するための図である。アドレスＡ［２］がＬレベルの場合には、２つのデータＱ［２５６×０＋Ｎ］とＱ［２５６×２＋Ｎ］とが比較される。一致する場合には、正しいデータが出力され、エラー検出信号にＬレベルが出力される。また、一致しない場合には、データが不定となり、エラー検出信号にＨレベルが出力される。
【００６３】
アドレスＡ［２］がＨレベルの場合には、２つのデータＱ［２５６×１＋Ｎ］とＱ［２５６×３＋Ｎ］とが比較される。一致する場合には、正しいデータが出力され、エラー検出信号にＬレベルが出力される。また、一致しない場合には、データが不定となり、エラー検出信号にＨレベルが出力される。
【００６４】
図５は、エラー訂正モード時におけるプロセッサの動作を説明するための図である。４つのデータＱ［２５６×０＋Ｎ］、Ｑ［２５６×１＋Ｎ］、Ｑ［２５６×２＋Ｎ］、Ｑ［２５６×３＋Ｎ］の多数決がとられ、４つのデータがすべて一致する場合には、正しいデータが出力され、エラー検出信号にＬレベルが出力され、エラー訂正不可信号にＬレベルが出力される。
【００６５】
４つのデータの中で３つのデータが一致する場合には、正しいデータが出力され、エラー検出信号にＨレベルが出力され、エラー訂正不可信号にＬレベルが出力される。
【００６６】
それ以外の場合には、データが不定となり、エラー検出信号にＨレベルが出力され、エラー訂正不可信号にＨレベルが出力される。
【００６７】
なお、図５では４つの出力データＱ［２５６×０＋Ｎ］、Ｑ［２５６×１＋Ｎ］、Ｑ［２５６×２＋Ｎ］、Ｑ［２５６×３＋Ｎ］の多数決がとられる例を説明したが、例えば、２つ以上の出力データが共にエラーを起す可能性が極めて低い場合、４つのデータのうち１つのデータを考慮せず、３つのデータに基づき多数決をとってもよい。具体的には図３においてＰＥ群からの出力データＱ［２５６×３＋Ｎ］の値を判定回路４３に入力しないようにＮＡＮＤ回路５１とＯＲ回路５２をそれぞれ３入力タイプのものに変更し、ＥＸ−ＯＲ５６の入力を共にＱ［２５６×３＋Ｎ］から受けるように変更することにより実現可能である。この場合、エラー訂正不可信号にＨレベルが出力される状態（正しいデータが不定の状態）は起こらないため、エラー訂正モード動作真理値表は図５の１行目から３行目、５行目、８行目、９行目、１２行目、１４行目から１６行目となる。
【００６８】
図６は、通常モード時におけるデータレジスタからの読み出し動作を説明するためのタイミングチャートである。Ｔ１より前において、１０２４個のデータレジスタ（０〜１０２３）の各々には、対応するＰＥ（０〜１０２３）により単一のＰＥコマンドに応じて演算処理されたデータが書き戻されている。そして、１０２４個のデータレジスタ（０〜１０２３）の各々は８ビットのデータ（ＳＲＡＭビット０〜７）が格納されており、その８ビットのデータを順次読み出していく例を示す。Ｔ１において、アドレスＡ［３：０］に“４’ｂ００００”が出力され、ＰＥ群１１のデータ出力が開始される。まず、ＰＥ群１１の中の６４個のデータレジスタのＳＲＡＭビット０に対応するデータが読み出され、マルチプレクサ２８へ出力される。その後順次ＳＲＡＭビット１，２，３，…，７の順にデータが読み出され、マルチプレクサ２８へ出力される。結果として、合計６４×８ビットのデータが出力される。
【００６９】
Ｔ２において、ＰＥ群１１の中のＳＲＡＭビット０に対応する出力データＱ０がマルチプレクサ２８から出力され、Ｑ１，Ｑ２，Ｑ３，…，Ｑ７の順に出力データが出力される。
【００７０】
Ｔ３において、アドレスＡ［３：０］に“４’ｂ０００１”が出力され、ＰＥ群１２のデータ出力が開始される。まず、ＰＥ群１２の中の６４個のデータレジスタのＳＲＡＭビット０に対応するデータが読み出され、マルチプレクサ２８へ出力される。その後順次ＳＲＡＭビット１，２，３，…，７の順にデータが読み出され、マルチプレクサ２８へ出力される。
【００７１】
同様の動作が繰り返され、Ｔ４において、アドレスＡ［３：０］に“４’ｂ１１１１”が出力され、ＰＥ群２６のデータ出力が開始される。まず、ＰＥ群２６の中の６４個のデータレジスタのＳＲＡＭビット０に対応するデータが読み出され、マルチプレクサ３１へ出力される。その後順次ＳＲＡＭビット１，２，３，…，７の順にデータが読み出され、マルチプレクサ３１へ出力される。
【００７２】
図７は、エラー検出モード時におけるデータレジスタからの読み出し動作を説明するためのタイミングチャートである。Ｔ１より前において、１０２４個のデータレジスタ（０〜１０２３）の各々には、対応するＰＥ（０〜１０２３）により単一のＰＥコマンドに応じて演算処理されたデータが書き戻されている。そして、１０２４個のデータレジスタ（０〜１０２３）の各々は８ビットのデータ（ＳＲＡＭビット０〜７）が格納されており、その８ビットのデータを順次読み出していく例を示す。通常モード時と異なり、ＰＥ群１１からＰＥ群１８のデータレジスタと同じ値のデータがそれぞれＰＥ群１９からＰＥ群２６のデータレジスタに書き込まれている。Ｔ１において、アドレスＡ［３：０］に“４’ｂ００００”が出力され、ＰＥ群１１およびＰＥ群１９のデータ出力が開始される。まず、ＰＥ群１１およびＰＥ群１９の中のそれぞれ６４個のデータレジスタのＳＲＡＭビット０に対応するデータが読み出され、それぞれマルチプレクサ２８、マルチプレクサ３０へ出力される。その後順次ＳＲＡＭビット１，２，３，…，７の順にデータが読み出され、それぞれマルチプレクサ２８、マルチプレクサ３０へ出力される。結果として、合計６４×８ビットのデータがＰＥ群１１およびＰＥ群１９からそれぞれ出力される。
【００７３】
Ｔ２において、ＰＥ群１１およびＰＥ群１９の中のＳＲＡＭビット０に対応する出力データＱ０およびＱ０’がそれぞれマルチプレクサ２８、マルチプレクサ３０から出力される。このとき、判定回路４３は、出力データＱ０とＱ０’との比較を行なう。同様にして、判定回路４３は、ＰＥ群１１およびＰＥ群１９からマルチプレクサを介して出力される出力データＱ１〜Ｑ７とＱ１’〜Ｑ７’との比較を順次行なう。
【００７４】
Ｔ３において、アドレスＡ［３：０］に“４’ｂ０００１”が出力され、ＰＥ群１２およびＰＥ群２０のデータ出力が開始される。まず、ＰＥ群１２およびＰＥ群２０の中のそれぞれ６４個のデータレジスタのＳＲＡＭビット０に対応するデータが読み出され、それぞれマルチプレクサ２８、マルチプレクサ３０へ出力される。その後順次ＳＲＡＭビット１，２，３，…，７の順にデータが読み出され、それぞれマルチプレクサ２８、マルチプレクサ３０へ出力される。
【００７５】
同様の動作が繰り返され、Ｔ４において、アドレスＡ［３：０］に“４’ｂ０１１１”が出力され、ＰＥ群１８およびＰＥ群２６のデータ出力が開始される。まず、ＰＥ群１８およびＰＥ群２６の中のそれぞれ６４個のデータレジスタのＳＲＡＭビット０に対応するデータが読み出され、それぞれマルチプレクサ２９、マルチプレクサ３１へ出力される。その後順次ＳＲＡＭビット１，２，３，…，７の順にデータが読み出され、それぞれマルチプレクサ２９、マルチプレクサ３１へ出力される。このとき、判定回路４３が、２つのＰＥ群から出力される出力データを比較し、不一致を検出すると、エラー検出信号にＨレベルを出力する。図７では、Ｔ４の直前のアドレスＡ［３：０］に“４’ｂ０１１０”が出力されていたとし、Ｔ４において、ＰＥ群１７からマルチプレクサ２９を介して出力される出力データＱ５とＰＥ群２５からマルチプレクサ３１を介して出力される出力データＱ５’とを比較した結果、不一致が検出されエラー検出信号にＨレベルを出力した例を示している。
【００７６】
図８は、エラー訂正モード時におけるデータレジスタからの読み出し動作を説明するためのタイミングチャートである。Ｔ１より前において、１０２４個のデータレジスタ（０〜１０２３）の各々には、対応するＰＥ（０〜１０２３）により単一のＰＥコマンドに応じて演算処理されたデータが書き戻されている。そして、１０２４個のデータレジスタ（０〜１０２３）の各々は８ビットのデータ（ＳＲＡＭビット０〜７）が格納されており、その８ビットのデータを順次読み出していく例を示す。通常モード時とは異なり、ＰＥ群１１からＰＥ群１４のデータレジスタと同じ値のデータがそれぞれＰＥ群１５からＰＥ群１８のデータレジスタ、ＰＥ群１９からＰＥ群２２のデータレジスタ、ＰＥ群２３からＰＥ群２６のデータレジスタに書き込まれている。Ｔ１において、アドレスＡ［３：０］に“４’ｂ００００”が出力され、ＰＥ群１１、ＰＥ群１５、ＰＥ群１９およびＰＥ群２３のデータ出力が開始される。まず、ＰＥ群１１、ＰＥ群１５、ＰＥ群１９およびＰＥ群２３の中のそれぞれ６４個のデータレジスタのＳＲＡＭビット０に対応するデータが読み出され、それぞれマルチプレクサ２８、マルチプレクサ２９、マルチプレクサ３０、マルチプレクサ３１へ出力される。その後順次ＳＲＡＭビット１，２，３，…，７の順にデータが読み出され、それぞれマルチプレクサ２８、マルチプレクサ２９、マルチプレクサ３０、マルチプレクサ３１へ出力される。結果として、合計６４×８ビットのデータがＰＥ群１１、ＰＥ群１５、ＰＥ群１９およびＰＥ群２３からそれぞれ出力される。
【００７７】
Ｔ２において、ＰＥ群１１、ＰＥ群１５、ＰＥ群１９およびＰＥ群２３の中のＳＲＡＭビット０に対応する出力データＱ０、Ｑ０’、Ｑ０”およびＱ０'''がそれぞれマルチプレクサ２８、マルチプレクサ２９、マルチプレクサ３０、マルチプレクサ３１から出力される。このとき、判定回路４３は、出力データＱ０、Ｑ０’、Ｑ０”およびＱ０'''の多数決判定を行なう。同様にして、判定回路４３は、ＰＥ群１１、ＰＥ群１５、ＰＥ群１９およびＰＥ群２３からマルチプレクサを介して出力される出力データＱ１〜Ｑ７、Ｑ１’〜Ｑ７’、Ｑ１”〜Ｑ７”およびＱ１'''〜Ｑ７'''の多数決判定を順次行なう。
【００７８】
Ｔ３において、アドレスＡ［３：０］に“４’ｂ０００１”が出力され、ＰＥ群１２、ＰＥ群１６、ＰＥ群２０およびＰＥ群２４のデータ出力が開始される。まず、ＰＥ群１２、ＰＥ群１６、ＰＥ群２０およびＰＥ群２４の中のそれぞれ６４個のデータレジスタのＳＲＡＭビット０に対応するデータが読み出され、それぞれマルチプレクサ２８、マルチプレクサ２９、マルチプレクサ３０、マルチプレクサ３１へ出力される。その後順次ＳＲＡＭビット１，２，３，…，７の順にデータが読み出され、それぞれマルチプレクサ２８、マルチプレクサ２９、マルチプレクサ３０、マルチプレクサ３１へ出力される。
【００７９】
Ｔ４において、判定回路４３が、出力データＱ６、Ｑ６’、Ｑ６”、Ｑ６'''の中の１つが不一致であることを検出して、エラー検出信号にＨレベルを出力するが、エラー訂正が可能であるためエラー訂正不可信号にＬレベルを出力する。また、エラー検出／モード選択回路４４は、正しいデータを選択するようにアドレスＡＥ［２］を出力する。
【００８０】
同様の動作が繰り返され、Ｔ５において、アドレスＡ［３：０］に“４’ｂ００１１”が出力され、ＰＥ群１４、ＰＥ群１８、ＰＥ群２２およびＰＥ群２６のデータ出力が開始される。まず、ＰＥ群１４、ＰＥ群１８、ＰＥ群２２およびＰＥ群２６の中のそれぞれ６４個のデータレジスタのＳＲＡＭビット０に対応するデータが読み出され、それぞれマルチプレクサ２８、マルチプレクサ２９、マルチプレクサ３０、マルチプレクサ３１へ出力される。その後順次ＳＲＡＭビット１，２，３，…，７の順にデータが読み出され、それぞれマルチプレクサ２８、マルチプレクサ２９、マルチプレクサ３０、マルチプレクサ３１へ出力される。このとき、判定回路４３が、出力データＱ５、Ｑ５’、Ｑ５”、Ｑ５'''の多数決がとれないことを検出して、エラー検出信号にＨレベルを出力し、エラー訂正が不可能であるためエラー訂正不可信号にＨレベルを出力する。図８では、Ｔ５の直前のアドレスＡ［３：０］に“４’ｂ００１０”が出力されていたとし、Ｔ５において、判定回路４３がＰＥ群１３からマルチプレクサ２８を介して出力される出力データＱ５と、ＰＥ群１７からマルチプレクサ２９を介して出力される出力データＱ５’と、ＰＥ群２１からマルチプレクサ３０を介して出力される出力データＱ５”と、ＰＥ群２５からマルチプレクサ３１を介して出力される出力データＱ５'''との多数決がとれないことを検出して、エラー検出信号にＨレベルを出力し、エラー訂正が不可能であるためエラー訂正不可信号にＨレベルを出力する例を示している。
【００８１】
図９は、本発明の実施の形態におけるプロセッサの通常モード時に動作するデータ出力部分のみを抽出した図である。図９に示すように、ＰＥ０〜ＰＥ１０２３がそれぞれ異なるデータに対して演算を行ない、マルチプレクサ２８〜３１および４０〜４２によって順次選択され、ＦＦ４６から６４ビット幅のデータとして出力される。この場合、全てのＰＥに対して異なるデータが与えられるので、高い並列性を有し、演算性能も高くなる。
【００８２】
図１０は、本発明の実施の形態におけるプロセッサのエラー検出モード時に動作するデータ出力部分のみを抽出した図である。図１０に示すように、ＰＥ０〜ＰＥ５１１と、ＰＥ５１２〜１０２３とがそれぞれ同じデータに対して演算を行ない、比較回路（判定回路）４３が２つのデータの比較判定を行なう。このとき、比較判定が行なわれるエントリが５１２エントリだけ物理的に離れているため、２つのデータが共にソフトエラー発生する確率は低くなり、ソフトエラー発生時のエラー検出率が向上する。
【００８３】
図１１は、本発明の実施の形態におけるプロセッサのエラー訂正モード時に動作するデータ出力部分のみを抽出した図である。図１１に示すように、ＰＥ０〜ＰＥ２５５と、ＰＥ２５６〜５１１と、ＰＥ５１２〜７６７と、ＰＥ７６８〜１０２３とがそれぞれ同じデータに対して演算を行ない、多数決回路（判定回路）４３が４つのデータの多数決判定を行なう。このとき、多数決判定が行なわれるエントリが２５６エントリだけ物理的に離れているため、４つのデータのうち複数のデータが共にソフトエラー発生する確率は低くなり、ソフトエラー発生時のエラー検出率が向上するとともに多数決判定によりエラー訂正することも可能となる。
【００８４】
図１２は、本発明の実施の形態におけるプロセッサを用いた画像処理システムの構成例を示す図である。この画像処理システムは、ＳｏＣ（System on Chip）として実現されており、図２に示すＳＩＭＤ型プロセッサ（演算処理部１、コントローラ２、バスインタフェース回路３）と、カメラＩ／Ｆ４と、周辺回路５と、ＣＰＵ６と、メモリコントローラ７と、ＤＭＡＣ（Direct Memory Access Controller）８とを含む。
【００８５】
ＣＰＵ６は、画像処理システムの全体的な制御を行なう。たとえば、ＣＰＵ６は、ＳＩＭＤ型プロセッサの演算処理部１のデータレジスタ０〜１０２３にデータを書き込み、ＰＥ０〜ＰＥ１０２３にＰＥコマンドを発行することによって演算を行なわせる。このときの演算処理部１の動作は上述の通りである。また、ＣＰＵ６が、ＳＩＭＤ型プロセッサ（１〜３）からエラー検出通知信号、エラー検出信号、エラー訂正不可信号などを受け、それに応じた処理を行なう。
【００８６】
カメラＩ／Ｆ４は、図示しないカメラセンサからの画像データを受け、ＣＰＵバス７１またはメディアバス７２に出力する。
【００８７】
メモリコントローラ７は、ＣＰＵバス７１を介してカメラＩ／Ｆ４から画像データを受け、外部メモリ９に画像データを書き込む。また、メモリコントローラ７は、ＤＭＡＣ８によるＤＭＡ転送によってカメラＩ／Ｆ４またはＳＩＭＤ型プロセッサ（１〜３）から画像データまたは処理結果を受け、外部メモリ９に書き込むことも可能である。また、メモリコントローラ７は、ＣＰＵ６からの要求に応じて、外部メモリ９に格納される画像データを読み出して、ＣＰＵ６やＳＩＭＤ型プロセッサ（１〜３）に出力する。
【００８８】
周辺回路５は、タイマ、シリアルＩ／Ｆ、割り込みコントローラなどによって構成され、ＩＯポートによるデータ入出力が可能である。ＤＭＡＣ８は、ＣＰＵ６からの要求に応じて、カメラＩ／Ｆ４や周辺回路５と、外部メモリ９との間のデータ転送を行なう。
【００８９】
図１３は、図１２に示す画像処理システムの処理手順を説明するためのフローチャートである。まず、図示しないカメラセンサから画像データが入力されると（Ｓ１０）、カメラＩ／Ｆ４はその画像データを外部メモリ９に格納する（Ｓ１１）。
【００９０】
次に、ＣＰＵ６は、ＳＩＭＤ型プロセッサ（１〜３）に演算処理命令を設定し、通常モードを設定する（Ｓ１２）。そして、外部メモリ９から画像データを読み出してＳＩＭＤ型プロセッサ（１〜３）のデータレジスタ０〜１０２３に書き込んで、ＳＩＭＤ型プロセッサ（１〜３）に通常処理を行なわせる（Ｓ１３）。この通常処理とは、画像全体に対するノイズ除去などのフィルタ処理やオフセット処理などであり、それほど信頼性が要求されない処理である。この場合、高い並列度で処理を行なうことができる。
【００９１】
次に、ＳＩＭＤ型プロセッサ（１〜３）による処理結果がＤＭＡＣ８を介して外部メモリ９に格納される（Ｓ１４）。
【００９２】
次に、ＣＰＵ６は、ＳＩＭＤ型プロセッサ（１〜３）に演算処理命令を設定し、高信頼性モード（エラー検出モードまたはエラー訂正モード）を設定する（Ｓ１５）。そして、外部メモリ９から画像データを読み出してＳＩＭＤ型プロセッサ（１〜３）のデータレジスタ０〜１０２３に書き込んで、ＳＩＭＤ型プロセッサ（１〜３）に高信頼性処理を行なわせる（Ｓ１６）。この高信頼性処理とは、特定領域に対してしきい値処理やラベリング処理を行ない、得られた特徴量からその物体が何であるかを認識する画像認識処理などであり、高い信頼性が要求される処理である。この場合、通常モードと比較して並列度が低下するが、処理結果の信頼性を高めることができる。
【００９３】
エラー検出またはエラー訂正不可が発生した場合には、ＣＰＵ６にエラー発生またはエラー訂正不可を通知し（Ｓ１７）、処理のリアルタイム性を考慮して、再処理またはデータの破棄などが行なわれる。また、エラーが検出されないか、エラー訂正が可能な場合には、ＳＩＭＤ型プロセッサ（１〜３）による処理結果がＤＭＡＣ８を介して外部メモリ９に格納される（Ｓ１８）。
【００９４】
たとえば、この画像処理システムが車載用途として用いられる場合、車載カメラから入力された画像データ全体に対してフィルタ処理やオフセット処理を行なうことになるが、カメラセンサからの情報にはノイズが含まれているためビットエラーに対してシビアではなく、信頼性はそれほど要求されないので、通常モードで処理を行なう。この処理においては、大量のデータに対する演算が必要となるため、通常モードにより並列度を高くして高速に処理を行なうことができる。
【００９５】
一方、白線認識などのような特定の範囲から特徴を抽出する処理では、データ数自体はそれほど大きくはないが、ビットエラーにより異なる特徴が抽出されることは許容されないため、エラー検出モードまたはエラー訂正モードで処理を行なう。なお、リアルタイム性の制約で演算の再実行が不可能な場合や、データの連続性が重要なため演算結果の破棄が許容されない場合は、エラー訂正モードで処理を行なうのが有効である。
【００９６】
図２に示す判定回路４３の判定処理を、ＳＩＭＤ型プロセッサ自体に行なわせることも可能である。この場合、判定処理がソフトウェアによって実現される。
【００９７】
以上説明したように、本実施の形態におけるプロセッサによれば、通常モードが設定されている場合には、ＰＥ群１１〜２６のデータレジスタに別個のデータを書き込んでＰＥに演算処理を行なわせ、エラー検出モードが設定されている場合には、ＰＥ群１１〜１８のデータレジスタとＰＥ群１９〜２６のデータレジスタに同じデータを書き込んでＰＥに演算処理を行なわせ、その演算結果を比較してエラー発生の有無を検出するようにした。したがって、演算結果の信頼性と並列度との最適化を図ることが可能となった。
【００９８】
また、エラー訂正モードが設定されている場合には、ＰＥ群１１〜１４、ＰＥ群１５〜１８、ＰＥ群１９〜２２、ＰＥ群２３〜２６のデータレジスタに同じデータを書き込んで演算処理を行なわせ、多数決判定によってエラー訂正を行なうようにしたので、リアルタイム性が要求されるアプリケーションやデータの連続性が重要なアプリケーションにも対応することが可能となった。
【００９９】
また、エラー検出／エラー訂正回路をクリティカルパスであるデータパスから削除したので、周波数性能の低下を防止することが可能となった。
【０１００】
また、比較判定回路および多数決判定回路のみでデータのエラー検出、エラー訂正が行なえるため、ハードウェア量を削減することが可能となった。
【０１０１】
また、演算結果の出力時にのみエラー検出、エラー訂正を行なうので、消費電力の削減を図ることが可能となった。
【０１０２】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【０１０３】
特にデータレジスタはＳＲＡＭとして説明しているが、ＭＲＡＭやＦＬＡＳＨメモリのような不揮発性メモリやＤＲＡＭのような揮発性メモリであってもよいと考えられるべきである。
【符号の説明】
【０１０４】
１  演算処理部、２  コントローラ、３  バスインタフェース回路、４  カメラＩ／Ｆ、５  周辺回路、６  ＣＰＵ、７  メモリコントローラ、８  ＤＭＡＣ、９  外部メモリ、１１〜２６  ＰＥ群、２７  エントリコミュニケータ、２８〜３１  マルチプレクサ、３２〜３５  デマルチプレクサ、３６〜３９  ＡＮＤ回路、４０〜４２  マルチプレクサ、４３  判定回路、４４  エラー検出／モード選択回路、４５，４６  フリップフロップ、５１  ＮＡＮＤ回路、５２  ＯＲ回路、５３〜５４  ＡＮＤ回路、５５〜５８  ＥＸ−ＯＲ回路、５９〜６０  マルチプレクサ、６１  アドレス選択プリデコーダ、６２〜６５  フリップフロップ。
【図１】
2012103772.tif 000003
【図２】
2012103772.tif 000004
【図３】
2012103772.tif 000005
【図４】
2012103772.tif 000006
【図５】
2012103772.tif 000007
【図６】
2012103772.tif 000008
【図７】
2012103772.tif 000009
【図８】
2012103772.tif 000010
【図９】
2012103772.tif 000011
【図１０】
2012103772.tif 000012
【図１１】
2012103772.tif 000013
【図１２】
2012103772.tif 000014
【図１３】
2012103772.tif 000015