(57)【要約】【課題】故障のＰＥが生じた場合にも、データ転送を行うことができるＳＩＭＤ型マイクロプロセッサを提供する。【解決手段】複数のデータを処理するための複数のプロセッサエレメントを有するＳＩＭＤ型マイクロプロセッサにおいて、各プロセッサエレメントが内蔵する汎用レジスタに外部からアクセスするためのデータ転送用ポートにデータ転送装置が接続し、上記データ転送装置は、各プロセッサエレメントが故障しているか否かを示す記憶部を有し、上記データ転送装置は、その記憶部のデータの内容により、故障しているプロセッサエレメントへのデータ転送を抑止するように制御する。【選択図】図９
2004252825.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを処理するための複数のプロセッサエレメントを有するＳＩＭＤ型マイクロプロセッサにおいて、
各プロセッサエレメントが内蔵する汎用レジスタに外部からアクセスするためのデータ転送用ポートに、データ転送装置が接続し、
上記データ転送装置は、各プロセッサエレメントが故障しているか否かを示す記憶部を有し、
上記データ転送装置は、その記憶部のデータの内容により、故障しているプロセッサエレメントへのデータ転送を抑止するように制御する、
ＳＩＭＤ型マイクロプロセッサ。
【請求項２】
各プロセッサエレメントが正常に動作するか否かを検査するためのセルフテストが適時自動実行され、
その検査結果が上記データ転送装置の上記記憶部に自動格納される、
請求項１に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項３】
上記データ転送装置が、
データ転送のときに転送が開始されるべきプロセッサエレメントのアドレスをデータとして設定する第１のレジスタと、
故障していないプロセッサエレメントのアドレスを発行した時にカウントアップする第１のカウンタとを含み、
上記の第１のカウンタの値が上記の第１のレジスタの値に等しくなるまで、データの転送を抑止する、
請求項１に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項４】
上記の第１のカウンタの値が上記の第１のレジスタの値に等しくなったとき、そのときのプロセッサエレメントのアドレスの値が保持され、
全プロセッサエレメントに関してデータ転送が終了したときに、上記の第１のレジスタに上記のアドレスの値を設定する、
請求項３に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項５】
上記データ転送装置が、
データ転送のときに転送が終了されるべきプロセッサエレメントのアドレスをデータとして設定する第２のレジスタと、
故障していないプロセッサエレメントのアドレスを発行した時にカウントアップする第１のカウンタとを含み、
上記の第１のカウンタの値が上記の第２のレジスタの値に等しくなったとき、そのときの上記データ転送装置の接続する外部メモリのアドレスの値が保持され、
全プロセッサエレメントに関してデータ転送が終了したときに、上記の第２のレジスタに上記外部メモリのアドレスの値を設定する、
請求項１に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項６】
上記データ転送装置が、別のデータ転送装置と同期を取ってデータ転送を行うように構成され、
別のデータ転送装置が転送しているデータと、各プロセッサエレメントが故障しているか否かを示す記憶部のデータとの論理和によって、
データの転送の抑止が制御される、
請求項１に記載のＳＩＭＤ型マイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサ、特にＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ−ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ−ｓｔｒｅａｍ）型マイクロプロセッサに関する。
【０００２】
【従来の技術】
ＳＩＭＤ型マイクロプロセッサでは、複数のデータに対して１つの命令で同時に同一の演算処理が実行可能である。この構造により、演算は同一であるがデータ量が非常に多い処理（例えばデジタルコピアなどにおける画像処理）に係る用途において、頻用される。
【０００３】
ＳＩＭＤ型マイクロプロセッサにおける通常の画像処理では、複数の演算ユニット（Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ  ［ＰＥ］；  プロセッサエレメント）を主走査方向に並べ、同一の演算を同時に複数のデータに対して実行することによって、高速な演算処理を可能としている。
【０００４】
ところで、近年、製造プロセスの微細化によってＬＳＩの集積度は高まる一方であり、ＳＩＭＤ型マイクロプロセッサにおいてもＰＥ数の増加が可能となってきた。ところが、ＳＩＭＤ型などのように並列プロセッサ構成を採るプロセッサでは、複数個搭載している演算ユニットの内の一つでも故障しているとプロセッサ全体として利用できなくなる虞がある。よって、従来技術のＳＩＭＤ型マイクロプロセッサでは、例えば、冗長なＰＥを設けておき故障発生のＰＥと置き換えるというような手法が用いられてきた。
【０００５】
下記の特許文献１、特許文献２及び特許文献３などでは、不良プロセッサを置き換えるための冗長ＰＥを設ける技術を示している。該技術では、故障しているＰＥがある場合には、ＰＥを特定する信号を、故障しているＰＥではなく冗長ＰＥに割り当てることで並列プロセッサを救済している。更に特許文献２のプロセッサでは、プロセッサ外部とのデータの受け渡しに関して、外部出力バスに対し３ステートバッファで出力する形態を用いており、バッファの出力イネーブル信号自体が故障ＰＥと冗長ＰＥとで切り替わるように構成されている。これらの技術はＰＥ数が少ない場合には有効な手法であるが、ＰＥ数が多い場合に（切り替えを想定して）設定を要する制御線の数が非常に多くなること、予め冗長なＰＥを必要とすること等の欠点がある。
【０００６】
下記の特許文献４、特許文献５及び特許文献６に示される従来技術では、隣接したＰＥからの出力信号と自身が出力する信号とのマルチプレクサを各ＰＥが有し、故障しているＰＥでは隣接したＰＥからの出力信号をバイパスして出力することで並列プロセッサを救済している。また特許文献４のプロセッサでは、プロセッサ外部とのデータの受け渡しをシフトレジスタ構成により行っている。これらの構成は比較的簡単なものである。しかし、シフトレジスタを用いているため、例えば一部のＰＥにおけるデータ転送を行う場合でも、全てのＰＥでのデータのシフトを行わなければならないことがある。よって、転送にかかる時間が多くなってしまうこともある。
【０００７】
【特許文献１】
特開平９−２２４００号
【特許文献２】
特開平９−２８８６５２号
【特許文献３】
特許第３００５２４３号
【特許文献４】
特開２０００−１４８９９８
【特許文献５】
特開２００２−１６９７８７
【特許文献６】
特表２００１−５２７２１８
【０００８】
【発明が解決しようとする課題】
本特許は、ＳＩＭＤ型マイクロプロセッサにおいて、故障のＰＥが生じた場合にも、データ転送を行うことができることをその目的としている。
【０００９】
【課題を解決するための手段】
本発明は、上記の目的を達成するために為されたものである。本発明に係る請求項１に記載のＳＩＭＤ型マイクロプロセッサは、
複数のデータを処理するための複数のプロセッサエレメントを有するＳＩＭＤ型マイクロプロセッサである。そのＳＩＭＤ型マイクロプロセッサにおいて、
各プロセッサエレメントが内蔵する汎用レジスタに外部からアクセスするためのデータ転送用ポートに、データ転送装置が接続し、
上記データ転送装置は、各プロセッサエレメントが故障しているか否かを示す記憶部を有し、
上記データ転送装置は、その記憶部のデータの内容により、故障しているプロセッサエレメントへのデータ転送を抑止するように制御する。
【００１０】
本発明に係る請求項２に記載のＳＩＭＤ型マイクロプロセッサは、
各プロセッサエレメントが正常に動作するか否かを検査するためのセルフテストが適時自動実行され、
その検査結果が上記データ転送装置の上記記憶部に自動格納される、
請求項１に記載のＳＩＭＤ型マイクロプロセッサである。
【００１１】
本発明に係る請求項３に記載のＳＩＭＤ型マイクロプロセッサは、
上記データ転送装置が、
データ転送のときに転送が開始されるべきプロセッサエレメントのアドレスをデータとして設定する第１のレジスタと、
故障していないプロセッサエレメントのアドレスを発行した時にカウントアップする第１のカウンタとを含み、
上記の第１のカウンタの値が上記の第１のレジスタの値に等しくなるまで、データの転送を抑止する、
請求項１に記載のＳＩＭＤ型マイクロプロセッサである。
【００１２】
本発明に係る請求項４に記載のＳＩＭＤ型マイクロプロセッサは、
上記の第１のカウンタの値が上記の第１のレジスタの値に等しくなったとき、そのときのプロセッサエレメントのアドレスの値が保持され、
全プロセッサエレメントに関してデータ転送が終了したときに、上記の第１のレジスタに上記のアドレスの値を設定する、
請求項３に記載のＳＩＭＤ型マイクロプロセッサである。
【００１３】
本発明に係る請求項５に記載のＳＩＭＤ型マイクロプロセッサは、
上記データ転送装置が、
データ転送のときに転送が終了されるべきプロセッサエレメントのアドレスをデータとして設定する第２のレジスタと、
故障していないプロセッサエレメントのアドレスを発行した時にカウントアップする第１のカウンタとを含み、
上記の第１のカウンタの値が上記の第２のレジスタの値に等しくなったとき、そのときの上記データ転送装置の接続する外部メモリのアドレスの値が保持され、
全プロセッサエレメントに関してデータ転送が終了したときに、上記の第２のレジスタに上記外部メモリのアドレスの値を設定する、
請求項１に記載のＳＩＭＤ型マイクロプロセッサである。
【００１４】
本発明に係る請求項６に記載のＳＩＭＤ型マイクロプロセッサは、
上記データ転送装置が、別のデータ転送装置と同期を取ってデータ転送を行うように構成され、
別のデータ転送装置が転送しているデータと、各プロセッサエレメントが故障しているか否かを示す記憶部のデータとの論理和によって、
データの転送の抑止が制御される、
請求項１に記載のＳＩＭＤ型マイクロプロセッサである。
【００１５】
【発明の実施の形態】
まず、本発明に係る好適な実施の形態を説明する前提として、図１、図２及び図３により、ＳＩＭＤ型マイクロプロセッサ２、メモリ４及びメモリコントローラ６の概略の構成を示す。
【００１６】
図１は、本発明に係るＳＩＭＤ型マイクロプロセッサ２、メモリ４及びメモリコントローラ６の概略ブロック図である。
【００１７】
＜グローバルプロセッサ＞
このブロックは、いわゆるＳＩＳＤ（Ｓｉｎｇｌｅ  ＩｎｓｔｒｕｃｔｉｏｎＳｔｒｅａｍ，Ｓｉｎｇｌｅ  Ｄａｔａ  Ｓｔｒｅａｍ）タイプのプロセッサであり、プログラムＲＡＭとデータＲＡＭを内蔵し、プログラムを解読し各種制御信号を生成する（図２参照）。この制御信号は内蔵する各種ブロックの制御以外にもレジスタファイル１６、演算アレイ１４、及びメモリコントローラ６に供給される。また、ＧＰ（グローバルプロセッサ）命令実行時は内蔵する汎用レジスタ、ＡＬＵ（算術論理演算器）等を使用して各種演算処理、プログラム制御処理をおこなう。
【００１８】
＜レジスタファイル＞
ＰＥ（プロセッサエレメント）命令で処理されるデータを保持している。ＰＥ命令はＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ，  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ  Ｓｔｒｅａｍ）タイプの命令であり、レジスタファイル１６に保持されている複数のデータに対し同時に同じ処理をおこなう。このレジスタファイル１６からのデータの読み出し／書き込みの制御はグローバルプロセッサ１０からの制御によっておこなわれる。読み出されたデータは演算アレイ１４に送られ、演算アレイ１４での演算処理後にレジスタファイル１６に書き込まれる。
【００１９】
また、レジスタファイル１６は外部インタフェース８を介してプロセッサ外部のメモリコントローラ６からのアクセスが可能であり、グローバルプロセッサ１０の制御から独立して、外部から特定のレジスタを読み出し／書き込みが行なわれる。
【００２０】
＜演算アレイ＞
ＰＥ命令の演算処理がおこなわれる。処理の制御はすべてグローバルプロセッサ１０から行なわれる。
【００２１】
＜メモリコントローラ＞
外部ポートにクロックとアドレス、リード／ライト制御を出力し、メモリ４にクロックとアドレス、リード／ライト制御を出力することで、任意のＰＥのレジスタ２０とメモリ４間で、データ転送を行う。処理の制御はすべてグローバルプロセッサ１０から行なわれる。
【００２２】
図２は、本発明に係るＳＩＭＤ型マイクロプロセッサ２のブロック図である。
【００２３】
グローバルプロセッサ１０には、本プロセッサのプログラム格納用のプログラムＲＡＭと演算データ格納用のデータＲＡＭが内蔵されている。さらに、プログラムのアドレスを保持するプログラムカウンタ（ＰＣ）、演算処理のデータ格納のための汎用レジスタであるＧ０〜Ｇ３レジスタ、レジスタ退避、復帰時に退避先データＲＡＭのアドレスを保持しているスタックポインタ（ＳＰ）、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ（ＬＳ）、同じくＩＲＱ時とＮＭＩ時の分岐元アドレスを保持するＬＩ、ＬＮレジスタ、プロセッサの状態を保持しているプロセッサステータスレジスタ（Ｐ）が内蔵されている。
【００２４】
これらのレジスタと図示していない命令デコーダ、ＡＬＵ、メモリ制御回路、割り込み制御回路、外部Ｉ／Ｏ制御回路、ＧＰ演算制御回路を使用してＧＰ命令の実行がおこなわれる。
【００２５】
また、ＰＥ命令実行時は命令デコーダ、図示していないレジスタファイル制御回路、ＰＥ演算制御回路を使用して、レジスタファイル１６の制御と演算アレイ１４の制御をおこなう。
【００２６】
レジスタファイル１６には１つのＰＥ単位に８ビットのレジスタ２０が３２本内蔵されており、２５６ＰＥ分の組みがアレイ構成になっている。レジスタ２０は同一ＰＥ内ではＲ０、Ｒ１、Ｒ２、・・・Ｒ３１と呼ばれる。それぞれのレジスタ２０は演算アレイ１４に対して１つの読み出しポートと１つの書き込みポートを備えており、８ビットのリード／ライト兼用のバスで演算アレイからアクセスされる。３２本のレジスタの内、２４本（Ｒ０〜Ｒ２３）は外部インタフェース８を介してプロセッサ外部からアクセス可能であり、外部からクロックとアドレス、リード／ライト制御を入力することで任意のレジスタ２０を読み書きできる。
【００２７】
レジスタ２０の外部からのアクセスでは１つの外部ポートで各ＰＥの１つのレジスタがアクセス可能である。その際には、外部から入力されたアドレスでＰＥの番号（０〜２５５）を指定する。したがって、レジスタアクセスの外部ポートは全部で２４組搭載されている。
【００２８】
なお、ＰＥに対しては順に（例えば、図２の左から）０乃至２５５の番号が付されている。ＰＥの番号の小さい方向を「前方」、ＰＥの番号の大きい方向を「後方」と称している。
【００２９】
また、上記の外部からのアクセスは、隣接する偶数番号目のＰＥと奇数番号目のＰＥとの一対の括りで、２つの（同じ）レジスタ２０に対して同時になされる。つまり、１回のアクセスで１６ビットデータがアクセスされる。
【００３０】
演算アレイ１４は、１６ビットＡＬＵ１８、１６ビットＡレジスタ２２、及びＦレジスタ２４を内蔵している。ＰＥ命令による演算は、レジスタ２０から読み出されたデータ若しくはグローバルプロセッサ１０から与えられたデータをＡＬＵ１８の片側の入力とし、Ａレジスタ２２の内容をもう片側の入力とする。その結果は、Ａレジスタ２２に格納される。即ち、Ａレジスタ２２のデータと、Ｒ０〜Ｒ３１レジスタ２０若しくはグローバルプロセッサ１０から与えられたデータとの演算が、行なわれることとなる。
【００３１】
レジスタ２０とＡＬＵ（演算部）１８との接続に、７ｔｏ１のマルチプレクサ２６を置いている。並列するＰＥに関して、前方に１つ、２つ若しくは３つ離れたＰＥのレジスタ２０のデータ、後方に１つ、２つ若しくは３つ離れたＰＥのレジスタ２０のデータ、又は中央（即ち、当該ＡＬＵ１８）のＰＥのレジスタ２０のデータを、演算対象として選択している。また、レジスタ２０の８ビットのデータは、シフト＆拡張回路により任意ビットの左シフトしてＡＬＵ１８に入力する。さらに、図２では示していない８ビットの条件レジスタ（Ｔ）（図３参照）により、ＰＥごとに演算実行の無効／有効の制御をしており、特定のＰＥだけを演算対象として選択できる。
【００３２】
≪第１の実施の形態≫
図３は、本発明の第１の実施の形態に係るＳＩＭＤ型マイクロプロセッサ２の部分ブロック図である。図３のプロセッサ２は、いくつかのＰＥに故障が生じた場合に、それら故障のあるＰＥを除き更にプロセッサエレメントブロック１２を再構成し、よって、プロセッサ全体の救済をすることが可能である。
【００３３】
各ＰＥは、電源起動時又はシステム初期化時において、グローバルプロセッサ１０によって正常に動作するかどうかのセルフテストが行われる。セルフテストの結果、正常なＰＥには（後で説明する）不良フラグ３０を“０”に設定し、故障しているＰＥには不良フラグ３０を“１”に設定し、よってプロセッサエレメントグループ１２の再構成が行われる。その後、実際のプログラムがプログラムＲＡＭにダウンロードされプログラムが実行される。セルフテストのためのプログラムはＲＯＭに内蔵されているか、若しくは上位のホストプロセッサよりダウンロードされる。
【００３４】
各ＰＥは、不良フラグ３０という１ビットのレジスタを内蔵している。不良フラグ３０にはセルフテストの結果が設定される。不良フラグ３０はシフトレジスタで構成され、グローバルプロセッサ１０より値が設定され得る。不良フラグ３０の値は、上記の条件レジスタ（Ｔレジスタ）３２に入力されており、図５のように故障しているＰＥでは常に演算実行が無効になるように制御される。
【００３５】
各ＰＥは、並列するＰＥに関して、前方に１つ、２つ若しくは３つ離れたＰＥのレジスタ２０のデータ、後方に１つ、２つ若しくは３つ離れたＰＥのレジスタ２０のデータ、又は中央（即ち、当該ＡＬＵ１８）のＰＥのレジスタ２０のデータを、演算対象として選択することが可能なように経路を有している。更に各ＰＥは、これら対象となるべき７つのＰＥの内に故障しているものがあればそれを無視するため、予備の配線経路を前方に１つ、後方に１つ有している。
【００３６】
すなわち、故障しているＰＥが無いならば、各ＰＥは、並列するＰＥに関して、前方に１（Ｌ１と略記）、２（Ｌ２と略記）、３（Ｌ３と略記）、４（Ｌ４と略記）だけ離れたＰＥに係るデータが、後方に１（Ｕ１と略記）、２（Ｕ２と略記）、３（Ｕ３と略記）、４（Ｕ４と略記）だけ離れたＰＥに係るデータが、機能上参照可能である。
【００３７】
参照するＰＥを選択するマルチプレクサ（ＰＥ選択部）２６には、それ自身のＰＥのレジスタのデータを参照する経路以外に、上記、前方、後方に４つまで離れたＰＥのレジスタからのデータを参照する経路と、図示していないが、それ自身のＰＥよりも１、２、３だけ前方のＰＥの不良フラグ３０からの経路と１、２、３だけ後方のＰＥの不良フラグ３０からの経路とが入力されている。さらにグローバルプロセッサ１０より、現在実行している命令が自身のＰＥから見て、前方、後方あるいは自分自身のどのレジスタのデータを参照する命令であるかを示す制御信号が入力されている。
【００３８】
ＰＥ選択部２６では、前後の不良フラグ３０と制御信号とから、故障しているＰＥを避けて配線経路を開くように制御される。例えば、自身のＰＥの１つ前のＰＥが故障している場合に、１つ前のＰＥを参照する命令を発行している場合には、２つ前のＰＥからの経路を開くように、２つ前のＰＥを参照する命令を発行している場合には３つ前のＰＥからの経路を開くように制御される。
【００３９】
図４は、あるＰＥの前方、あるいは後方の、３つのＰＥの中に故障があった場合に行なわれる制御のための概略の回路図である。
【００４０】
Ｃ＿ｅｎ、Ｌ１＿ｅｎ〜Ｌ３＿ｅｎ、Ｕ１＿ｅｎ〜Ｕ３＿ｅｎは、現在実行中の命令が、どのＰＥに格納されているデータを参照するかを示しており、順に、Ｃ＿ｅｎ（自身のＰＥ参照）、Ｌ１＿ｅｎ（１つ前方のＰＥ参照）、Ｌ２＿ｅｎ（２つ前方のＰＥ参照）、Ｌ３＿ｅｎ（３つ前方のＰＥ参照）、Ｕ１＿ｅｎ（１つ後方のＰＥ参照）、Ｕ２＿ｅｎ（２つ後方のＰＥ参照）、Ｕ３＿ｅｎ（３つ後方のＰＥ参照）である。
【００４１】
Ｃ＿ｅｎａｂｌｅ、Ｌ１＿ｅｎａｂｌｅ〜Ｌ４＿ｅｎａｂｌｅ、Ｕ１＿ｅｎａｂｌｅ〜Ｕ４＿ｅｎａｂｌｅは、各ＰＥで実際に開かれる配線経路がどれであるかを示しており、Ｃ＿ｅｎａｂｌｅ（自身のＰＥを参照するゲートが開く）、Ｌ１＿ｅｎａｂｌｅ（１つ前のＰＥを参照するゲートが開く）、Ｌ２＿ｅｎａｂｌｅ（２つ前のＰＥを参照するゲートが開く）、Ｌ３＿ｅｎａｂｌｅ（３つ前のＰＥを参照するゲートが開く）、Ｌ４＿ｅｎａｂｌｅ（４つ前のＰＥを参照するゲートが開く）、Ｕ１＿ｅｎａｂｌｅ（１つ後のＰＥを参照するゲートが開く）、Ｕ２＿ｅｎａｂｌｅ（２つ後のＰＥを参照するゲートが開く）、Ｕ３＿ｅｎａｂｌｅ（３つ後のＰＥを参照するゲートが開く）、Ｕ４＿ｅｎａｂｌｅ（４つ後のＰＥを参照するゲートが開く）である。
【００４２】
図３に戻る。各ＰＥは自身が何番目のＰＥであるかを示すＩＤレジスタ３４を更に有している。ＩＤレジスタ３４の値は、データバスを介してＡＬＵ１８に入力されており、ＡＬＵ１８において（図３の）第２の即値データバス３６に供給される即値データと比較した結果を、Ｔレジスタ３２に反映することが可能なようになっている。
【００４３】
ＩＤレジスタ３４の値は、セルフテストの際に故障しているとされたＰＥを除いて、０から順にインクリメントした数が格納される。画像処理においては、ディザテーブルのロードなどのように、例えば４つおきのＰＥに同一の値をロードするといった処理が必要になるが、ＩＤレジスタ３４を内蔵することによって故障しているＰＥがあっても対応が可能となる。かかる構成は、４つの連続したＰＥの中に２つ以上の故障（のＰＥ）がなければ、プロセッサ全体が機能できる。確かに、予備の配線経路を増設すれば、２つ以上の故障がある場合でも対応可能であるが、それに伴う回路規模の増加と故障頻度とを衡量すると、本実施の形態程度が最適であると思料される。図６において、セルフテストのフローを示す。
【００４４】
また、本実施の形態のプロセッサ２では、外部インタフェース８を介して、プロセッサ外部のメモリコントローラ６とＰＥのレジスタファイル１６との間でのデータ転送が可能であるが、ＰＥを特定するためのアドレス、リード／ライト制御、クロックなどの信号は、後で説明するメモリコントローラ６の適切な設定により、故障しているＰＥのことが考慮される必要がない。例えば、冗長なＰＥを設けてアドレス制御を入れ替えるなどの操作は全く不要である。
【００４５】
図７は、本発明の第１の実施の形態に係るメモリコントローラ６の構成を示す。メモリコントローラ６は、メモリ４にデータ書き込みを行うためのライトバッファ部４０、メモリ４からデータ読み取りを行うリードバッファ部４２、ＰＥのレジスタファイル１６への制御を行っている外部インタフェース制御部４４、メモリ４への制御を行うＲＡＭ制御部４６、及びシーケンスユニット（ＳＣＵ）４８より構成されている。メモリコントローラ６は、外部インタフェース８内のデータ転送ポートを介してＳＩＭＤ型マイクロプロセッサ２のレジスタファイル１６と接続し、レジスタファイル１６からメモリ４へのデータ転送、及びメモリ４からレジスタファイル１６へのデータ転送を行っている。このデータ転送ポートは、出力ポートと入力ポートを備える。また、メモリコントローラ６が制御するレジスタは、Ｉ／Ｏ空間にマッピングされており、グローバルプロセッサ１０からの指示に従いリード・ライト可能となっている。
【００４６】
ライトバッファ部４０には外部インタフェース８の出力ポートが接続され、リードバッファ部４２には外部インタフェース８の入力ポートが接続される。データ転送ポートは、それぞれ（ＰＥ番号での）偶数ＰＥ用と奇数ＰＥ用の入力、出力ポートを独立して有しており、１サイクルで一度に偶数と（その直後方の）奇数との１組のＰＥのデータにアクセス可能である。一方、ライトバッファ部４０・リードバッファ部４２とメモリ４との間のデータバスは、それぞれ４ＰＥ分のデータ幅で構成されており、１サイクルで一度に４ＰＥ分のデータをアクセスできる。なお、本実施の形態では、１ＰＥ分のデータは８ビットということになる。よって、外部インタフェース８とライトバッファ部４０及びリードバッファ部４２との間のデータバスのビット幅は１６ビットで構成される。メモリコントローラ６とメモリ４との間のデータバスのビット幅は３２ビットで構成される。
【００４７】
この結果、外部インタフェース８のデータ転送ポートとメモリコントローラ６間の転送を２回行う間に、メモリ４とメモリコントローラ６間の転送を１回実行すればよいことになる。
【００４８】
メモリコントローラ６のライトバッファ部４０は、外部インタフェース８より出力されたデータを２回取り込み、４個のＰＥ分のデータに整形した後、メモリ４に転送する動作を行っている。また、リードバッファ部４２は、メモリ４から読み出した４個のＰＥ分のデータを２回に分けて、外部インタフェース８に転送する動作を行っている。
【００４９】
図８は、第１の実施の形態のメモリコントローラ６を用いて、ライト転送（ＰＥのレジスタファイルからメモリへの転送）の場合、及びリード転送（メモリからＰＥのレジスタファイルへの転送）の場合に、どのようにデータを転送するかを示している。
【００５０】
メモリコントローラ６はデータ転送を行う場合に、各ＰＥが故障しているかどうかを示す転送抑止データを用いてデータ転送を行っている。転送抑止データはデータ転送と同期して、後述する故障レジスタから読み出され、故障しているＰＥに関してデータ転送を抑止するために用いられる。転送抑止データは、正常なＰＥでは“０”、故障しているＰＥでは“１”が読み出される。ライト転送時には、転送抑止データが“０”であるＰＥのデータのみがメモリ４に格納され、転送抑止データが“１”であるＰＥのデータはメモリ４に格納されず間引かれる。またリード転送時には、転送抑止データが“１”であるＰＥに対しては一つＰＥ番号が少ないＰＥに対して転送したデータと同一のデータを送るようにし、メモリ４からのデータを更新しないように（進めないように）する。
【００５１】
図９は、本発明の第１の実施の形態に係るメモリコントローラ６の概略ブロック図である。ライトバッファ部４０及びリードバッファ部４２は、偶数ＰＥと奇数ＰＥとの専用のポートを持っていて、それぞれ１サイクルで２ＰＥ分のデータをアクセスする。
【００５２】
ライトバッファ部４０は、４ＰＥ分のデータがバッファに格納されると、メモリ４にライトアクセスを行うように構成されている。外部インタフェース８の転送ポートからライトバッファ部４０に与えられる２ＰＥ分のデータは、まず初段のフリップフロップ４０２に格納された後、次段のフリップフロップ４０４に転送される。続いて、与えられる２ＰＥ分のデータは初段のフリップフロップ４０２に格納される。そして、フリップフロップ（４０２、４０４）に格納された４ＰＥ分のデータがそれぞれラッチ４０６に格納される。ライトバッファ部４０は、４ＰＥ分のデータがラッチ４０６に格納されると、メモリにライトアクセスを行う。
【００５３】
リードバッファ部４２は、メモリ４から４ＰＥ分読み出されたデータをバッファとしてのフリップフロップ４２２に格納する。４ＰＥ分のデータから２ＰＥ分がマルチプレクサ４２４により選択され、ラッチ４２６に格納される。このラッチ４２６に格納されたデータが、外部インタフェース８を介してＳＩＭＤ型マイクロプロセッサ２のレジスタファイル１６に転送される。４ＰＥ分のデータの転送が終わると再びメモリ４にリードアクセスを行う。メモリ４は一度に４ＰＥ分のデータをアクセスできるので、２サイクルで一度のアクセスを実現できればＳＩＭＤ型マイクロプロセッサ２とのインタフェースが取れることとなり、メモリ４のアクセスタイムの制限を緩和できる。
【００５４】
ＲＡＭ制御部４６は、後述するシーケンスユニット４８からの制御線によって制御され、メモリ４へのクロック、アドレス、リード／ライト制御、バイトセレクトを出力する。ＲＡＭ制御部４６は、ＲＡＭアドレス加減器４６２、ライトポインタレジスタ４６４、リードポインタレジスタ４６６、及びマルチプレクサ４６０等のブロックを含む。各ブロックはアドレス設定用バス（以降、ＡＢと略す）４６８を介して接続されている。
【００５５】
ライトポインタレジスタ４６４は、次にメモリ４にライトすべきポインタを格納しているレジスタであり、リードポインタレジスタ４６６は、同様に次にメモリ４からリードすべきポインタを格納しているレジスタである。ライトポインタレジスタ４６４、リードポインタレジスタ４６６は、そのポインタへのメモリ４のアクセスの後、ＲＡＭアドレス加減器４６２で更新されたポインタがＡＢ４６８から入力され格納される。ＲＡＭアドレス加減器４６２は、ライトアクセス時にはライトポインタレジスタ４６４、リードアクセス時にはリードポインタレジスタ４６６の値にＲＡＭアクセスサイズに応じた数を、ＦＩＦＯ動作モード時は加算、ＬＩＦＯ動作モード時は減算した値をＡＢ４６８に出力する。
【００５６】
外部インタフェース制御部４４は、図７にも示したように外部インタフェース８にＰＥのアドレス、クロック、リード／ライト制御信号を出力するものであり、ＳＩＭＤ型マイクロプロセッサ２における各ＰＥのレジスタ２０のデータを読み書きすることを可能にしている。この外部インタフェース制御部４４は、ＰＥアドレスカウンタ４４０２、転送数カウンタ４４０４、有効データ数カウンタ４４０６、及び故障レジスタ部４４０８とからなる。ＰＥアドレスカウンタ４４０２は、データ転送開始時に転送開始ＰＥアドレスレジスタ４４１４に格納されている値が初期ロードされるアップカウンタであり、データ転送するＰＥのアドレスを生成する。転送数カウンタ４４０４は、転送するデータ数を初期ロードできるダウンカウンタであり、転送数を管理するのに使用される。転送数カウンタ４４０４にはライト転送の場合はライト数レジスタ４４１０の値が初期ロードされ、リード転送の場合はリード数レジスタ４４１２の値が初期ロードされる。
【００５７】
有効データ数カウンタ４４０６は、メモリ４に格納済みの有効なデータ数を管理するカウンタであり、メモリ４からＰＥのレジスタファイル１６にデータ転送する時に、転送数よりも有効データ数の方が多い時にのみ転送が実施されるようになっている。このように構成することで、データの欠落を防止している。
【００５８】
故障レジスタ部４４０８には、各ＰＥが故障しているかどうかが記録されている故障レジスタが格納されている。本実施の形態では１６ビット幅のレジスタ１６本（故障レジスタ０〜故障レジスタ１５）で構成されており、電源起動時もしくはシステムの初期化時において各ＰＥをテストした結果がＧＰから書き込まれる。つまり、故障レジスタ０にて、ビット０にはＰＥ０の故障情報（正常：０、故障：１）が、ビット１にはＰＥ１の故障情報（正常：０、故障：１）が、・・・（中略）・・・、ビット１５にはＰＥ１５の故障情報（正常：０、故障：１）が格納される。同様に故障レジスタ１には、ＰＥ１６〜ＰＥ３１の故障情報が格納される。・・・（中略）・・・、故障レジスタ１５には、ＰＥ２４０〜ＰＥ２５５の故障情報が格納される。
【００５９】
故障レジスタの値は、ＰＥアドレスカウンタ４４０２の値によって図１０のように抽出されて、現在アクセスしている２ＰＥ分の故障情報が転送抑止データとしてシーケンスユニット４８に出力される。このとき、転送数カウンタ４４０４及び有効データ数カウンタ４４０６の値のインクリメント（デクリメント）値を決定するのにも用いられる。
【００６０】
シーケンスユニット４８は、アドレスデコーダ、制御レジスタとからなる。グローバルプロセッサ１０からは、Ｉ／Ｏ空間にマッピングされた制御レジスタをアクセスすることで、メモリコントローラ６全体の制御を行ったり、メモリコントローラ６の内部状態を監視することが可能になっている。ライト転送時には、シーケンスユニット４８は、転送抑止データの値を検出して、転送抑止データが“０”である場合には、データをライトバッファ部内のバッファに書き込ませる。また、転送抑止データが“１”である場合には、データをライトバッファ部内のバッファに格納することを抑止する。ライトバッファ部４０は、転送開始時及び転送終了時の例外を除き、４ＰＥ分のデータが格納されるまで、メモリ４への転送要求をＲＡＭ制御部４６に対して出力しないため、ライトポインタレジスタ４６４の更新とメモリ４へのクロック、リード・ライト制御、バイトセレクトの出力は４ＰＥ分のデータがライトバッファ部４０に格納されるまで行われない。ＳＩＭＤ型マイクロプロセッサ２のデータ転送ポートからのデータリードは、転送抑止データに拠らず継続する。またリード転送時には、シーケンスユニット４８は、上記転送抑止データの値を検出して、“１”が立っている場合は、リードバッファ部４２のマルチプレクサ４２４を制御して、１つ前のＰＥアドレスを持つＰＥのレジスタに転送すべきデータを、再度出力できるようにしている。リードバッファ部４２は、転送開始時と転送終了時の例外を除き、メモリ４からリードされた４ＰＥ分のデータが全て不必要になるまで、ＲＡＭ制御部４６に対してメモリ４へのリードデータ転送要求を出力しないため（例えば、転送抑止データが常に“０”であれば２回のデータ転送ポートへのアクセスがあるまで、であり、逆に転送抑止データに“１”が立っている間はデータが不必要になることはない）、リードポインタレジスタ４６６の更新とメモリ４へのクロック、リード・ライト制御、バイトセレクトの出力は４ＰＥ分のデータが全て不必要になるまで行われない。ＳＩＭＤ型マイクロプロセッサ２の外部インタフェース８へのデータライトは転送抑止データに拠らず継続する。
【００６１】
本実施の形態では、故障レジスタを外部インタフェース制御部４４に内蔵したが、メモリコントローラ６が複数個ある場合には故障レジスタを複数個のメモリコントローラ６で参照できるように構成することでレジスタ数が削減できる。
【００６２】
本実施の形態に係る構成によれば、故障しているＰＥがあっても、レジスタファイル１６のアドレス、リード／ライト制御信号を再構成することなく、レジスタファイル１６とメモリ４との間で正しくデータ転送を行うことが可能となる。
【００６３】
≪第２の実施の形態≫
図１１は、本発明の第２の実施の形態に係るメモリコントローラ６の外部インタフェース制御部４４の概略ブロック図である。
【００６４】
上記外部インタフェース部４４は、図９の第１の実施の形態の構成に加えて、実効アドレスカウンタ４４１８と比較器４４１６とが設けられている。実効アドレスカウンタ４４１８は、正常なＰＥにアクセスしている時のみカウントアップするアップカウンタである。比較器４４１６は、実効アドレスカウンタ４４１８の値と転送開始ＰＥアドレスレジスタ４４１４とが比較され、一致するまでは故障レジスタ部４４０８に対して転送抑止制御信号を出力するように構成される。転送抑止制御信号は、故障レジスタから選択（抽出）されたデータと論理和されることにより転送抑止データが生成される。更に転送抑止制御信号は、転送数カウンタ４４０４と有効データ数カウンタ４４０６のカウントアップ、カウントダウンを停止させるために用いられる。そのための回路構成は、図１６に示される。ＰＥアドレスカウンタ４４０２は、データ転送開始時に“０”が初期ロードされるアップカウンタで構成される。
【００６５】
図９の第１の実施の形態の構成では、転送開始ＰＥアドレスとして、故障しているＰＥの数だけのオフセットをつけた値が設定される必要があるが、第２の実施の形態の構成では、故障の無いＰＥにアクセスするときにカウントアップされる実効アドレスカウンタ４４１８が設定されているので、ＰＥに係る故障を考慮せずに転送開始アドレスを設定することが可能となる。ただし転送開始ＰＥアドレスレジスタ４４１４が“０”でない場合でも、常にＰＥ番号「０」から転送開始されるため転送にかかる時間が若干増加する。
【００６６】
≪第３の実施の形態≫
図１２は、本発明の第３の実施の形態に係るメモリコントローラ６の外部インタフェース制御部４４の概略ブロック図である。
【００６７】
上記外部インタフェース制御部４４は、ＰＥアドレスカウンタ４４０２の初期ロード値として“０”もしくは転送開始ＰＥアドレスレジスタ４４１４の値のどちらかが選択され得るようなマルチプレクサ４４２０が備わる。また、実効アドレスカウンタ４４１８の値と転送開始ＰＥアドレスレジスタ４４１４の値とが（比較して）等しいときに、ＰＥアドレスカウンタ４４０２の値を転送開始ＰＥアドレスレジスタ４４１４にリロード（再ロード）する構成となっている。
【００６８】
データ転送の際には、最初のデータ転送では、転送開始ＰＥアドレスレジスタ４４１４に所定の値を設定し、ＰＥアドレスカウンタ４４０２に初期ロードの値“０”を設定する。その後、転送開始ＰＥアドレスレジスタ４４１４の値と実効アドレスカウンタ４４１８の値とが等しくなったときに、ＰＥアドレスカウンタ４４０２の値がリロードされることになる。つまり、故障しているＰＥの数だけのオフセットをつけた値が転送開始ＰＥアドレスレジスタ４４１４に格納されることになる。よって、２回目からのデータ転送では、ＰＥアドレスカウンタ４４０２の初期ロード値を転送開始ＰＥアドレスの値とすればよく、更に、転送開始ＰＥアドレスレジスタ４４１４のリロードが実行されないようにすればよい。
【００６９】
第３の実施の形態では、複数回繰り返されるデータ転送の開始時のみ転送にかかる時間が若干増加するだけで、２回目以降の転送ではデータ転送にかかる時間は第１の実施の形態の場合と同様に短縮される。
【００７０】
ここで、主走査方向の画素数よりもＰＥの数が少ないＳＩＭＤ型マイクロプロセッサ２を用いる場合の、画素データの転送方法について説明する。第３の実施の形態が利用される。
【００７１】
図１３は、主走査方向の画素数よりもＰＥの数が少ないＳＩＭＤ型マイクロプロセッサ２を用いた場合の、画素データの転送方法についての説明図である。
【００７２】
主走査方向の画素数よりＰＥ数が少ない場合には、主走査方向の画素データが適宜分割され、ＳＩＭＤ型マイクロプロセッサ２は必要分演算処理を繰り返す。メモリコントローラ６は、ＳＩＭＤ型マイクロプロセッサ２のＰＥのレジスタファイル１６に、分割された画素データをメモリ４から与える。
【００７３】
通常、ＳＩＭＤ型マイクロプロセッサ２を用いた画像処理では、フィルター処理のような注目画素前後の画素データを参照する処理を含む処理を実施すると、「ＳＩＭＤ」（即ち、並列する全ＰＥの並び）の両端のＰＥには無効なデータが格納されることになる。このため、ＰＥのレジスタファイル１６からメモリ４にデータを格納する際には、両端のデータを除いて格納する必要がある。一方、メモリ４からＰＥのレジスタファイル１６にデータを転送する際には、注目画素前後の参照用の画素データも併せて転送する必要がある。つまり、フィルター処理などの重み付け処理における画素データの転送は、以下の順序で行われることになる。ここでは、参照用画素の個数をａ個とする。
【００７４】
（１）処理前画素データをメモリ４からＳＩＭＤ型マイクロプロセッサ２のＰＥの対応するレジスタファイル１６へ転送する。
（２）ＳＩＭＤ型マイクロプロセッサ２による画像処理を行う。このとき、「ＳＩＭＤ」（並列する全ＰＥの並び）の両端ａ個のデータは、参照画素不存在により無効になる。つまり、図１３における斜線部を施した部分が有効画素数になる。
（３）処理後画素データをＳＩＭＤ型マイクロプロセッサ２からメモリ４に転送する。このとき、両端ａ個の画素を除いた有効画素がメモリ４に転送される。
【００７５】
図１３を参照して、メモリ４とＳＩＭＤ型マイクロプロセッサ２との間の画素データの転送について説明する。ＳＩＭＤ型マイクロプロセッサ２は、ｎ個のＰＥ、即ち、ＰＥ０からＰＥｎ−１を備え、これらＰＥにメモリ４から画素データを送り、画像処理を行った後、これらＰＥからメモリ４に画素データが転送される。
【００７６】
メモリ４には、画像処理前の画素データが、順にアドレス０から格納されているものとする。まず、最初の転送、すなわち、図中の１「ＳＩＭＤ」目の転送では、ＳＩＭＤ型マイクロプロセッサ２のＰＥ並びの両端ａ個を参照画素として転送している。
【００７７】
処理後の画素データをメモリ４に転送する場合、前後それぞれａ個の画素データは無効なので、転送する画素データはＰＥ０からＰＥｎ−１までのｎ画素の内、ａ〜（ｎ−ａ−１）までの（ｎ−２×ａ）画素である。
【００７８】
２「ＳＩＭＤ」目の転送では、（ｎ−ａ）〜（２ｎ−３×ａ−１）までの画素を注目画素として処理を行うため、参照画素として（ｎ−２×ａ）〜（ｎ−ａ−１）及び、（２ｎ−３×ａ）〜（２ｎ−２×ａ−１）の画素データを併せて転送している。データ処理後、（ｎ−ａ）〜（２ｎ−３×ａ−１）の（ｎ−２×ａ）画素がメモリ４に格納される。
【００７９】
主走査方向の分割数が多い場合も、同様の処理を繰り返すだけである。以上の処理を実現するには、メモリ４へのデータライトの場合には、本実施の形態のＰＥの外部インタフェース制御部４４において、転送開始ＰＥアドレスレジスタ４４１４に“ａ”を設定し、転送数カウンタ４４０４に“（ｎ−２×ａ）”を設定すればよい。
【００８０】
上記の設定数は全てＰＥアドレスを基準としているため、「ＳＩＭＤ」ごとに設定を変更する必要がない。また、メモリ４からのデータリードの場合には、リードポインタレジスタ４６６を転送終了後に戻すという操作が必要である。上記の例では（ｎ−２×ａ）に戻すことになる。第１の実施の形態に係るＲＡＭ制御部４６においては、転送が終了した後に、リードポインタレジスタ４６６の値をグローバルプロセッサ１０から設定する必要がある。また、メモリ４へのデータライトの場合には、ライトポインタレジスタ４６４への操作を行う必要はない。
【００８１】
≪第４の実施の形態≫
図１４は、本発明の第４の実施の形態に係るメモリコントローラ６の外部インタフェース制御部４４の概略ブロック図である。図１５は、本発明の第４の実施の形態に係るメモリコントローラ６のＲＡＭ制御部４６の概略ブロック図である。
【００８２】
外部インタフェース制御部４４は、第３の実施の形態の構成と同一であるが、ＰＥアドレス及び実効アドレスをＲＡＭ制御部４６に対して出力する構成となっている。図１５に示すＲＡＭ制御部４６は、図９に示したＲＡＭ制御部４６に、さらにリードオフセット生成器４６１０を設けたものである。このＲＡＭ制御部４６は、リードオフセット生成器４６１０によりメモリ４からＳＩＭＤ型マイクロプロセッサ２のＰＥの各レジスタファイル１６へのデータ転送において、ＰＥへの転送終了後に、リードポインタレジスタ４６６の値を戻すことができるように設定されている。
【００８３】
リードオフセット生成器４６１０は、最初の転送の際には、マルチプレクサ４６１４により選択された実効アドレスを監視し、実効アドレスが設定された値と等しくなると、実効アドレスの値をリードオフセット値レジスタ４６１２にリロードし、またその時のリードポインタレジスタ４６６の値を保持し、設定された転送数を送り終えるまで転送を継続する。転送が終了すると、保持しておいた値をリードポインタレジスタ４６６にリロードする。２回目以降の転送の際には、マルチプレクサ４６１４により（実効アドレスに代わり）ＰＥアドレスが選択されてリードオフセット生成器４６１０に入力される。またリードオフセット値レジスタ４６１２自身のリロードは行われないように制御するのがよい。上記図１３で示す例では、“（ｎ−２×ａ−１）”を設定することになる。設定値は全てＰＥアドレスを基準としているため、第１の実施の形態のＲＡＭ制御部４６のように、「ＳＩＭＤ」ごとに設定を変更する必要がない。
【００８４】
第４の実施の形態によると、図１１の第２の実施の形態の場合と同様に、最初の転送の時のみＰＥアドレスカウンタ４４０２の初期ロード値として“０”を選択するだけでよいので、リードオフセット機能を用いる必要のある場合（即ち、フィルタ処理などのように左右画素参照の処理があるため、画像データを「ＳＩＭＤ」ごとにオーバラップさせた形で処理していく必要がある場合）にも、故障しているＰＥのことを考慮せずに処理を行うことができる。
【００８５】
≪第５の実施の形態≫
図１７は、本発明の第５の実施の形態に係るメモリコントローラ６の故障レジスタ部４４０８の概略ブロック図である。
【００８６】
メモリコントローラ６には、ライト転送時に、隣接し合う偶数番号のＰＥと奇数番号のＰＥの、それぞれのデータを間引くかどうかを決定する外部ライト制御信号２本と、リード転送時に、隣接し合う偶数番号のＰＥと奇数番号のＰＥの、それぞれのデータを書き込む際に前と同じデータを重複して書き込むかどうかを決定する外部リード制御信号２本とが、入力されている。
【００８７】
ライト転送において変倍を行う場合には、間引きライト信号がイネーブルとなり、故障レジスタより選択（抽出）されたデータと、メモリコントローラ６外部より入力された外部ライト制御信号との論理和が、転送抑止データとして出力される。リード転送において変倍を行う場合には、重複リード信号がイネーブルになり、故障レジスタより選択（抽出）されたデータと、メモリコントローラ６外部より入力された外部リード制御信号との論理和が、転送抑止データとして出力される。
【００８８】
また、図示していないが、メモリコントローラ６は、外部ライト制御信号及び外部リード制御信号との同期を取るため、転送を開始するタイミングを取るための外部端子を有している。転送を開始する外部同期信号はシーケンスユニット４８に入力されており、同期信号がアサートされるとシーケンスユニット４８は転送を開始する。
【００８９】
第５の実施の形態によると、故障しているＰＥがあっても、デジタルコピアやファクシミリなどでよく行われる変倍処理を行うことが可能となる。
【００９０】
図１８の上側は、デジタルコピアやファクシミリなどでよく行われる変倍処理の内、縮小を実現するための間引きライト動作について図示する。図１８の上側では、ＰＥ０、ＰＥ２、ＰＥ３、ＰＥ５、ＰＥ６、・・・などの画素データはそのままメモリ４に格納され、ＰＥ１、ＰＥ４、ＰＥ７、・・・などの画素データがメモリ４に格納されずに間引かれている。
【００９１】
図１８の下側は、故障しているＰＥが有る場合の動作について図示したものである。図では、ＰＥ２、ＰＥ４、ＰＥ８、・・・に故障がある場合につき図示している。故障しているＰＥがある場合には、ＳＩＭＤ型マイクロプロセッサは故障しているＰＥを飛ばして再構成されるので、ライト制御データは図のように格納されていることになる。また画像データの方も同様に図のように格納されている。
【００９２】
ライト制御データと故障ＰＥ情報との論理和を転送抑止データとすると、図のようにＰＥ１、ＰＥ２、ＰＥ４、ＰＥ６、ＰＥ８のデータが間引かれることになり、メモリ４に格納されるデータは故障のない場合のデータの場合と全く同一であることがわかる。
【００９３】
図１９の上側は、デジタルコピアやファクシミリなどでよく行われる変倍処理の内、拡大を実現するための重複リード動作について図示する。図１９の上側では、ＰＥ１、ＰＥ４、ＰＥ７、・・・などの画素データが直前のＰＥである、ＰＥ０、ＰＥ３、ＰＥ６に格納されるデータと同じ値のデータとなっている。
【００９４】
図１９の下側は、故障しているＰＥが有る場合の動作について図示したものである。図では、ＰＥ２、ＰＥ４、ＰＥ８、・・・に故障がある場合につき図示している。故障しているＰＥがある場合には、ＳＩＭＤ型マイクロプロセッサは故障しているＰＥを飛ばして再構成されるので、リード制御データは図のように格納されていることになる。また画像データの方も同様に図のように格納されている。
【００９５】
リード制御データと故障ＰＥ情報との論理和を転送抑止データとすると、図のようにＰＥ１、ＰＥ２、ＰＥ４、ＰＥ６、ＰＥ８に格納されるデータが直前のＰＥのデータと重複することになり故障のない場合にＰＥのレジスタファイルに格納されるデータと全く同一であることがわかる。（故障のあるＰＥを飛ばして順番にデータが格納されている。）
【００９６】
つまり、第５の実施の形態によれば、故障しているＰＥがあっても変倍を正しく行うことが可能であることがわかる。
【００９７】
【発明の効果】
本発明を利用することにより、以下のような効果を得ることができる。
【００９８】
ＰＥの故障診断を行ない、故障しているＰＥを除いてデータ転送を行うことができる。よって、故障しているＰＥがあってもＳＩＭＤ型マイクロプロセッサを正常に動作させることができる。
【００９９】
また、データ転送を行う場合に、データ転送を開始するＰＥあるいはデータ転送を終了するＰＥを指定することができるため、ＰＥ数が処理を行う画素データよりも少ない場合にデータのつなぎ目を考慮してデータ転送を行うことが可能となる。その場合、２回目以降のデータ転送においては、転送を開始するＰＥのアドレスを指定することもできるため、データ転送に必要なサイクル数を少なくできる。
【０１００】
ＳＩＭＤ型マイクロプロセッサにおいて、故障しているＰＥがあっても画像処理の変倍処理を行うことが可能となる。
【図面の簡単な説明】
【図１】本発明に係るＳＩＭＤ型マイクロプロセッサ、メモリ及びメモリコントローラの概略ブロック図である。
【図２】本発明に係るＳＩＭＤ型マイクロプロセッサのブロック図である。
【図３】本発明の第１の実施の形態に係るＳＩＭＤ型マイクロプロセッサの部分ブロック図である。
【図４】本発明の第１の実施の形態に係るＳＩＭＤ型マイクロプロセッサにおいて、あるＰＥの前方、あるいは後方の、３つのＰＥの中に故障があった場合に行なわれる制御のための概略の回路図である。
【図５】不良フラグが入力される部分のＴレジスタの回路である。
【図６】不良フラグ確定のためのセルフテストのフローチャートである。
【図７】本発明の第１の実施の形態に係るメモリコントローラのブロック図である。
【図８】第１の実施の形態のメモリコントローラを用いて、ライト転送（ＰＥのレジスタファイルからメモリへの転送）の場合、及びリード転送（メモリからＰＥのレジスタファイルへの転送）の場合に、どのようにデータを転送するかを示す模式図である。
【図９】本発明の第１の実施の形態に係るメモリコントローラの概略ブロック図である。
【図１０】転送抑止データを生成する回路である。
【図１１】本発明の第２の実施の形態に係るメモリコントローラの外部インタフェース制御部の概略ブロック図である。
【図１２】本発明の第３の実施の形態に係るメモリコントローラの外部インタフェース制御部の概略ブロック図である。
【図１３】主走査方向の画素数よりもＰＥの数が少ないＳＩＭＤ型マイクロプロセッサを用いた場合の、画素データの転送方法についての説明図である。
【図１４】本発明の第４の実施の形態に係るメモリコントローラの外部インタフェース制御部の概略ブロック図である。
【図１５】本発明の第４の実施の形態に係るメモリコントローラのＲＡＭ制御部の概略ブロック図である。
【図１６】転送数カウンタと有効データ数カウンタのカウントアップ、カウントダウンを停止させるために、転送抑止制御信号を用いる回路の構成である。
【図１７】本発明の第５の実施の形態に係るメモリコントローラの故障レジスタ部の概略ブロック図である。
【図１８】デジタルコピアやファクシミリで行われる変倍処理の内、縮小を実現するための間引きライト動作の模式図である。
【図１９】デジタルコピアやファクシミリで行われる変倍処理の内、拡大を実現するための重複リード動作の模式図である。
【符号の説明】
２・・・ＳＩＭＤ型マイクロプロセッサ、４・・・メモリ、６・・・メモリコントローラ、８・・・外部インタフェース、１６・・・レジスタファイル、２０・・・レジスタ、４０・・・ライトバッファ部、４２・・・リードバッファ部、４４・・・外部インタフェース制御部、４６・・・ＲＡＭ制御部、４８・・・シーケンスユニット。
【図１】
2004252825.tif 000003
【図２】
2004252825.tif 000004
【図３】
2004252825.tif 000005
【図４】
2004252825.tif 000006
【図５】
2004252825.tif 000007
【図６】
2004252825.tif 000008
【図７】
2004252825.tif 000009
【図８】
2004252825.tif 000010
【図９】
2004252825.tif 000011
【図１０】
2004252825.tif 000012
【図１１】
2004252825.tif 000013
【図１２】
2004252825.tif 000014
【図１３】
2004252825.tif 000015
【図１４】
2004252825.tif 000016
【図１５】
2004252825.tif 000017
【図１６】
2004252825.tif 000018
【図１７】
2004252825.tif 000019
【図１８】
2004252825.tif 000020
【図１９】
2004252825.tif 000021