JP2004252825A - Simd type microprocessor capable of transferring data even when fault is occurred in pe - Google Patents

Simd type microprocessor capable of transferring data even when fault is occurred in pe Download PDF

Info

Publication number
JP2004252825A
JP2004252825A JP2003043856A JP2003043856A JP2004252825A JP 2004252825 A JP2004252825 A JP 2004252825A JP 2003043856 A JP2003043856 A JP 2003043856A JP 2003043856 A JP2003043856 A JP 2003043856A JP 2004252825 A JP2004252825 A JP 2004252825A
Authority
JP
Japan
Prior art keywords
data
register
data transfer
transfer
address
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.)
Pending
Application number
JP2003043856A
Other languages
Japanese (ja)
Inventor
Kazuhiko Iwanaga
和彦 岩永
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2003043856A priority Critical patent/JP2004252825A/en
Publication of JP2004252825A publication Critical patent/JP2004252825A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To provide an SIMD type microprocessor capable of transferring data even in the case that a fault PE is occurred. <P>SOLUTION: In the SIMD type microprocessor having a plurality of processor elements for processing two or more pieces of data, a data transfer device is connected to a data transfer port for accessing a general purpose register incorporated in each processor element from the outside. The data transfer device is provided with a storage part for indicating whether or not each processor element is a fault, and the data transfer device performs control so as to suppress data transfer to the fault processor element by the contents of the data in the storage part. <P>COPYRIGHT: (C)2004,JPO&NCIPI

Description

【0001】
【発明の属する技術分野】
本発明は、マイクロプロセッサ、特にSIMD(Single Instruction−stream Multiple Data−stream)型マイクロプロセッサに関する。
【0002】
【従来の技術】
SIMD型マイクロプロセッサでは、複数のデータに対して1つの命令で同時に同一の演算処理が実行可能である。この構造により、演算は同一であるがデータ量が非常に多い処理(例えばデジタルコピアなどにおける画像処理)に係る用途において、頻用される。
【0003】
SIMD型マイクロプロセッサにおける通常の画像処理では、複数の演算ユニット(Processor Element [PE]; プロセッサエレメント)を主走査方向に並べ、同一の演算を同時に複数のデータに対して実行することによって、高速な演算処理を可能としている。
【0004】
ところで、近年、製造プロセスの微細化によってLSIの集積度は高まる一方であり、SIMD型マイクロプロセッサにおいてもPE数の増加が可能となってきた。ところが、SIMD型などのように並列プロセッサ構成を採るプロセッサでは、複数個搭載している演算ユニットの内の一つでも故障しているとプロセッサ全体として利用できなくなる虞がある。よって、従来技術のSIMD型マイクロプロセッサでは、例えば、冗長なPEを設けておき故障発生のPEと置き換えるというような手法が用いられてきた。
【0005】
下記の特許文献1、特許文献2及び特許文献3などでは、不良プロセッサを置き換えるための冗長PEを設ける技術を示している。該技術では、故障しているPEがある場合には、PEを特定する信号を、故障しているPEではなく冗長PEに割り当てることで並列プロセッサを救済している。更に特許文献2のプロセッサでは、プロセッサ外部とのデータの受け渡しに関して、外部出力バスに対し3ステートバッファで出力する形態を用いており、バッファの出力イネーブル信号自体が故障PEと冗長PEとで切り替わるように構成されている。これらの技術はPE数が少ない場合には有効な手法であるが、PE数が多い場合に(切り替えを想定して)設定を要する制御線の数が非常に多くなること、予め冗長なPEを必要とすること等の欠点がある。
【0006】
下記の特許文献4、特許文献5及び特許文献6に示される従来技術では、隣接したPEからの出力信号と自身が出力する信号とのマルチプレクサを各PEが有し、故障しているPEでは隣接したPEからの出力信号をバイパスして出力することで並列プロセッサを救済している。また特許文献4のプロセッサでは、プロセッサ外部とのデータの受け渡しをシフトレジスタ構成により行っている。これらの構成は比較的簡単なものである。しかし、シフトレジスタを用いているため、例えば一部のPEにおけるデータ転送を行う場合でも、全てのPEでのデータのシフトを行わなければならないことがある。よって、転送にかかる時間が多くなってしまうこともある。
【0007】
【特許文献1】
特開平9−22400号
【特許文献2】
特開平9−288652号
【特許文献3】
特許第3005243号
【特許文献4】
特開2000−148998
【特許文献5】
特開2002−169787
【特許文献6】
特表2001−527218
【0008】
【発明が解決しようとする課題】
本特許は、SIMD型マイクロプロセッサにおいて、故障のPEが生じた場合にも、データ転送を行うことができることをその目的としている。
【0009】
【課題を解決するための手段】
本発明は、上記の目的を達成するために為されたものである。本発明に係る請求項1に記載のSIMD型マイクロプロセッサは、
複数のデータを処理するための複数のプロセッサエレメントを有するSIMD型マイクロプロセッサである。そのSIMD型マイクロプロセッサにおいて、
各プロセッサエレメントが内蔵する汎用レジスタに外部からアクセスするためのデータ転送用ポートに、データ転送装置が接続し、
上記データ転送装置は、各プロセッサエレメントが故障しているか否かを示す記憶部を有し、
上記データ転送装置は、その記憶部のデータの内容により、故障しているプロセッサエレメントへのデータ転送を抑止するように制御する。
【0010】
本発明に係る請求項2に記載のSIMD型マイクロプロセッサは、
各プロセッサエレメントが正常に動作するか否かを検査するためのセルフテストが適時自動実行され、
その検査結果が上記データ転送装置の上記記憶部に自動格納される、
請求項1に記載のSIMD型マイクロプロセッサである。
【0011】
本発明に係る請求項3に記載のSIMD型マイクロプロセッサは、
上記データ転送装置が、
データ転送のときに転送が開始されるべきプロセッサエレメントのアドレスをデータとして設定する第1のレジスタと、
故障していないプロセッサエレメントのアドレスを発行した時にカウントアップする第1のカウンタとを含み、
上記の第1のカウンタの値が上記の第1のレジスタの値に等しくなるまで、データの転送を抑止する、
請求項1に記載のSIMD型マイクロプロセッサである。
【0012】
本発明に係る請求項4に記載のSIMD型マイクロプロセッサは、
上記の第1のカウンタの値が上記の第1のレジスタの値に等しくなったとき、そのときのプロセッサエレメントのアドレスの値が保持され、
全プロセッサエレメントに関してデータ転送が終了したときに、上記の第1のレジスタに上記のアドレスの値を設定する、
請求項3に記載のSIMD型マイクロプロセッサである。
【0013】
本発明に係る請求項5に記載のSIMD型マイクロプロセッサは、
上記データ転送装置が、
データ転送のときに転送が終了されるべきプロセッサエレメントのアドレスをデータとして設定する第2のレジスタと、
故障していないプロセッサエレメントのアドレスを発行した時にカウントアップする第1のカウンタとを含み、
上記の第1のカウンタの値が上記の第2のレジスタの値に等しくなったとき、そのときの上記データ転送装置の接続する外部メモリのアドレスの値が保持され、
全プロセッサエレメントに関してデータ転送が終了したときに、上記の第2のレジスタに上記外部メモリのアドレスの値を設定する、
請求項1に記載のSIMD型マイクロプロセッサである。
【0014】
本発明に係る請求項6に記載のSIMD型マイクロプロセッサは、
上記データ転送装置が、別のデータ転送装置と同期を取ってデータ転送を行うように構成され、
別のデータ転送装置が転送しているデータと、各プロセッサエレメントが故障しているか否かを示す記憶部のデータとの論理和によって、
データの転送の抑止が制御される、
請求項1に記載のSIMD型マイクロプロセッサである。
【0015】
【発明の実施の形態】
まず、本発明に係る好適な実施の形態を説明する前提として、図1、図2及び図3により、SIMD型マイクロプロセッサ2、メモリ4及びメモリコントローラ6の概略の構成を示す。
【0016】
図1は、本発明に係るSIMD型マイクロプロセッサ2、メモリ4及びメモリコントローラ6の概略ブロック図である。
【0017】
<グローバルプロセッサ>
このブロックは、いわゆるSISD(Single InstructionStream,Single Data Stream)タイプのプロセッサであり、プログラムRAMとデータRAMを内蔵し、プログラムを解読し各種制御信号を生成する(図2参照)。この制御信号は内蔵する各種ブロックの制御以外にもレジスタファイル16、演算アレイ14、及びメモリコントローラ6に供給される。また、GP(グローバルプロセッサ)命令実行時は内蔵する汎用レジスタ、ALU(算術論理演算器)等を使用して各種演算処理、プログラム制御処理をおこなう。
【0018】
<レジスタファイル>
PE(プロセッサエレメント)命令で処理されるデータを保持している。PE命令はSIMD(Single Instruction Stream, Multiple Data Stream)タイプの命令であり、レジスタファイル16に保持されている複数のデータに対し同時に同じ処理をおこなう。このレジスタファイル16からのデータの読み出し/書き込みの制御はグローバルプロセッサ10からの制御によっておこなわれる。読み出されたデータは演算アレイ14に送られ、演算アレイ14での演算処理後にレジスタファイル16に書き込まれる。
【0019】
また、レジスタファイル16は外部インタフェース8を介してプロセッサ外部のメモリコントローラ6からのアクセスが可能であり、グローバルプロセッサ10の制御から独立して、外部から特定のレジスタを読み出し/書き込みが行なわれる。
【0020】
<演算アレイ>
PE命令の演算処理がおこなわれる。処理の制御はすべてグローバルプロセッサ10から行なわれる。
【0021】
<メモリコントローラ>
外部ポートにクロックとアドレス、リード/ライト制御を出力し、メモリ4にクロックとアドレス、リード/ライト制御を出力することで、任意のPEのレジスタ20とメモリ4間で、データ転送を行う。処理の制御はすべてグローバルプロセッサ10から行なわれる。
【0022】
図2は、本発明に係るSIMD型マイクロプロセッサ2のブロック図である。
【0023】
グローバルプロセッサ10には、本プロセッサのプログラム格納用のプログラムRAMと演算データ格納用のデータRAMが内蔵されている。さらに、プログラムのアドレスを保持するプログラムカウンタ(PC)、演算処理のデータ格納のための汎用レジスタであるG0〜G3レジスタ、レジスタ退避、復帰時に退避先データRAMのアドレスを保持しているスタックポインタ(SP)、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ(LS)、同じくIRQ時とNMI時の分岐元アドレスを保持するLI、LNレジスタ、プロセッサの状態を保持しているプロセッサステータスレジスタ(P)が内蔵されている。
【0024】
これらのレジスタと図示していない命令デコーダ、ALU、メモリ制御回路、割り込み制御回路、外部I/O制御回路、GP演算制御回路を使用してGP命令の実行がおこなわれる。
【0025】
また、PE命令実行時は命令デコーダ、図示していないレジスタファイル制御回路、PE演算制御回路を使用して、レジスタファイル16の制御と演算アレイ14の制御をおこなう。
【0026】
レジスタファイル16には1つのPE単位に8ビットのレジスタ20が32本内蔵されており、256PE分の組みがアレイ構成になっている。レジスタ20は同一PE内ではR0、R1、R2、・・・R31と呼ばれる。それぞれのレジスタ20は演算アレイ14に対して1つの読み出しポートと1つの書き込みポートを備えており、8ビットのリード/ライト兼用のバスで演算アレイからアクセスされる。32本のレジスタの内、24本(R0〜R23)は外部インタフェース8を介してプロセッサ外部からアクセス可能であり、外部からクロックとアドレス、リード/ライト制御を入力することで任意のレジスタ20を読み書きできる。
【0027】
レジスタ20の外部からのアクセスでは1つの外部ポートで各PEの1つのレジスタがアクセス可能である。その際には、外部から入力されたアドレスでPEの番号(0〜255)を指定する。したがって、レジスタアクセスの外部ポートは全部で24組搭載されている。
【0028】
なお、PEに対しては順に(例えば、図2の左から)0乃至255の番号が付されている。PEの番号の小さい方向を「前方」、PEの番号の大きい方向を「後方」と称している。
【0029】
また、上記の外部からのアクセスは、隣接する偶数番号目のPEと奇数番号目のPEとの一対の括りで、2つの(同じ)レジスタ20に対して同時になされる。つまり、1回のアクセスで16ビットデータがアクセスされる。
【0030】
演算アレイ14は、16ビットALU18、16ビットAレジスタ22、及びFレジスタ24を内蔵している。PE命令による演算は、レジスタ20から読み出されたデータ若しくはグローバルプロセッサ10から与えられたデータをALU18の片側の入力とし、Aレジスタ22の内容をもう片側の入力とする。その結果は、Aレジスタ22に格納される。即ち、Aレジスタ22のデータと、R0〜R31レジスタ20若しくはグローバルプロセッサ10から与えられたデータとの演算が、行なわれることとなる。
【0031】
レジスタ20とALU(演算部)18との接続に、7to1のマルチプレクサ26を置いている。並列するPEに関して、前方に1つ、2つ若しくは3つ離れたPEのレジスタ20のデータ、後方に1つ、2つ若しくは3つ離れたPEのレジスタ20のデータ、又は中央(即ち、当該ALU18)のPEのレジスタ20のデータを、演算対象として選択している。また、レジスタ20の8ビットのデータは、シフト&拡張回路により任意ビットの左シフトしてALU18に入力する。さらに、図2では示していない8ビットの条件レジスタ(T)(図3参照)により、PEごとに演算実行の無効/有効の制御をしており、特定のPEだけを演算対象として選択できる。
【0032】
≪第1の実施の形態≫
図3は、本発明の第1の実施の形態に係るSIMD型マイクロプロセッサ2の部分ブロック図である。図3のプロセッサ2は、いくつかのPEに故障が生じた場合に、それら故障のあるPEを除き更にプロセッサエレメントブロック12を再構成し、よって、プロセッサ全体の救済をすることが可能である。
【0033】
各PEは、電源起動時又はシステム初期化時において、グローバルプロセッサ10によって正常に動作するかどうかのセルフテストが行われる。セルフテストの結果、正常なPEには(後で説明する)不良フラグ30を“0”に設定し、故障しているPEには不良フラグ30を“1”に設定し、よってプロセッサエレメントグループ12の再構成が行われる。その後、実際のプログラムがプログラムRAMにダウンロードされプログラムが実行される。セルフテストのためのプログラムはROMに内蔵されているか、若しくは上位のホストプロセッサよりダウンロードされる。
【0034】
各PEは、不良フラグ30という1ビットのレジスタを内蔵している。不良フラグ30にはセルフテストの結果が設定される。不良フラグ30はシフトレジスタで構成され、グローバルプロセッサ10より値が設定され得る。不良フラグ30の値は、上記の条件レジスタ(Tレジスタ)32に入力されており、図5のように故障しているPEでは常に演算実行が無効になるように制御される。
【0035】
各PEは、並列するPEに関して、前方に1つ、2つ若しくは3つ離れたPEのレジスタ20のデータ、後方に1つ、2つ若しくは3つ離れたPEのレジスタ20のデータ、又は中央(即ち、当該ALU18)のPEのレジスタ20のデータを、演算対象として選択することが可能なように経路を有している。更に各PEは、これら対象となるべき7つのPEの内に故障しているものがあればそれを無視するため、予備の配線経路を前方に1つ、後方に1つ有している。
【0036】
すなわち、故障しているPEが無いならば、各PEは、並列するPEに関して、前方に1(L1と略記)、2(L2と略記)、3(L3と略記)、4(L4と略記)だけ離れたPEに係るデータが、後方に1(U1と略記)、2(U2と略記)、3(U3と略記)、4(U4と略記)だけ離れたPEに係るデータが、機能上参照可能である。
【0037】
参照するPEを選択するマルチプレクサ(PE選択部)26には、それ自身のPEのレジスタのデータを参照する経路以外に、上記、前方、後方に4つまで離れたPEのレジスタからのデータを参照する経路と、図示していないが、それ自身のPEよりも1、2、3だけ前方のPEの不良フラグ30からの経路と1、2、3だけ後方のPEの不良フラグ30からの経路とが入力されている。さらにグローバルプロセッサ10より、現在実行している命令が自身のPEから見て、前方、後方あるいは自分自身のどのレジスタのデータを参照する命令であるかを示す制御信号が入力されている。
【0038】
PE選択部26では、前後の不良フラグ30と制御信号とから、故障しているPEを避けて配線経路を開くように制御される。例えば、自身のPEの1つ前のPEが故障している場合に、1つ前のPEを参照する命令を発行している場合には、2つ前のPEからの経路を開くように、2つ前のPEを参照する命令を発行している場合には3つ前のPEからの経路を開くように制御される。
【0039】
図4は、あるPEの前方、あるいは後方の、3つのPEの中に故障があった場合に行なわれる制御のための概略の回路図である。
【0040】
C_en、L1_en〜L3_en、U1_en〜U3_enは、現在実行中の命令が、どのPEに格納されているデータを参照するかを示しており、順に、C_en(自身のPE参照)、L1_en(1つ前方のPE参照)、L2_en(2つ前方のPE参照)、L3_en(3つ前方のPE参照)、U1_en(1つ後方のPE参照)、U2_en(2つ後方のPE参照)、U3_en(3つ後方のPE参照)である。
【0041】
C_enable、L1_enable〜L4_enable、U1_enable〜U4_enableは、各PEで実際に開かれる配線経路がどれであるかを示しており、C_enable(自身のPEを参照するゲートが開く)、L1_enable(1つ前のPEを参照するゲートが開く)、L2_enable(2つ前のPEを参照するゲートが開く)、L3_enable(3つ前のPEを参照するゲートが開く)、L4_enable(4つ前のPEを参照するゲートが開く)、U1_enable(1つ後のPEを参照するゲートが開く)、U2_enable(2つ後のPEを参照するゲートが開く)、U3_enable(3つ後のPEを参照するゲートが開く)、U4_enable(4つ後のPEを参照するゲートが開く)である。
【0042】
図3に戻る。各PEは自身が何番目のPEであるかを示すIDレジスタ34を更に有している。IDレジスタ34の値は、データバスを介してALU18に入力されており、ALU18において(図3の)第2の即値データバス36に供給される即値データと比較した結果を、Tレジスタ32に反映することが可能なようになっている。
【0043】
IDレジスタ34の値は、セルフテストの際に故障しているとされたPEを除いて、0から順にインクリメントした数が格納される。画像処理においては、ディザテーブルのロードなどのように、例えば4つおきのPEに同一の値をロードするといった処理が必要になるが、IDレジスタ34を内蔵することによって故障しているPEがあっても対応が可能となる。かかる構成は、4つの連続したPEの中に2つ以上の故障(のPE)がなければ、プロセッサ全体が機能できる。確かに、予備の配線経路を増設すれば、2つ以上の故障がある場合でも対応可能であるが、それに伴う回路規模の増加と故障頻度とを衡量すると、本実施の形態程度が最適であると思料される。図6において、セルフテストのフローを示す。
【0044】
また、本実施の形態のプロセッサ2では、外部インタフェース8を介して、プロセッサ外部のメモリコントローラ6とPEのレジスタファイル16との間でのデータ転送が可能であるが、PEを特定するためのアドレス、リード/ライト制御、クロックなどの信号は、後で説明するメモリコントローラ6の適切な設定により、故障しているPEのことが考慮される必要がない。例えば、冗長なPEを設けてアドレス制御を入れ替えるなどの操作は全く不要である。
【0045】
図7は、本発明の第1の実施の形態に係るメモリコントローラ6の構成を示す。メモリコントローラ6は、メモリ4にデータ書き込みを行うためのライトバッファ部40、メモリ4からデータ読み取りを行うリードバッファ部42、PEのレジスタファイル16への制御を行っている外部インタフェース制御部44、メモリ4への制御を行うRAM制御部46、及びシーケンスユニット(SCU)48より構成されている。メモリコントローラ6は、外部インタフェース8内のデータ転送ポートを介してSIMD型マイクロプロセッサ2のレジスタファイル16と接続し、レジスタファイル16からメモリ4へのデータ転送、及びメモリ4からレジスタファイル16へのデータ転送を行っている。このデータ転送ポートは、出力ポートと入力ポートを備える。また、メモリコントローラ6が制御するレジスタは、I/O空間にマッピングされており、グローバルプロセッサ10からの指示に従いリード・ライト可能となっている。
【0046】
ライトバッファ部40には外部インタフェース8の出力ポートが接続され、リードバッファ部42には外部インタフェース8の入力ポートが接続される。データ転送ポートは、それぞれ(PE番号での)偶数PE用と奇数PE用の入力、出力ポートを独立して有しており、1サイクルで一度に偶数と(その直後方の)奇数との1組のPEのデータにアクセス可能である。一方、ライトバッファ部40・リードバッファ部42とメモリ4との間のデータバスは、それぞれ4PE分のデータ幅で構成されており、1サイクルで一度に4PE分のデータをアクセスできる。なお、本実施の形態では、1PE分のデータは8ビットということになる。よって、外部インタフェース8とライトバッファ部40及びリードバッファ部42との間のデータバスのビット幅は16ビットで構成される。メモリコントローラ6とメモリ4との間のデータバスのビット幅は32ビットで構成される。
【0047】
この結果、外部インタフェース8のデータ転送ポートとメモリコントローラ6間の転送を2回行う間に、メモリ4とメモリコントローラ6間の転送を1回実行すればよいことになる。
【0048】
メモリコントローラ6のライトバッファ部40は、外部インタフェース8より出力されたデータを2回取り込み、4個のPE分のデータに整形した後、メモリ4に転送する動作を行っている。また、リードバッファ部42は、メモリ4から読み出した4個のPE分のデータを2回に分けて、外部インタフェース8に転送する動作を行っている。
【0049】
図8は、第1の実施の形態のメモリコントローラ6を用いて、ライト転送(PEのレジスタファイルからメモリへの転送)の場合、及びリード転送(メモリからPEのレジスタファイルへの転送)の場合に、どのようにデータを転送するかを示している。
【0050】
メモリコントローラ6はデータ転送を行う場合に、各PEが故障しているかどうかを示す転送抑止データを用いてデータ転送を行っている。転送抑止データはデータ転送と同期して、後述する故障レジスタから読み出され、故障しているPEに関してデータ転送を抑止するために用いられる。転送抑止データは、正常なPEでは“0”、故障しているPEでは“1”が読み出される。ライト転送時には、転送抑止データが“0”であるPEのデータのみがメモリ4に格納され、転送抑止データが“1”であるPEのデータはメモリ4に格納されず間引かれる。またリード転送時には、転送抑止データが“1”であるPEに対しては一つPE番号が少ないPEに対して転送したデータと同一のデータを送るようにし、メモリ4からのデータを更新しないように(進めないように)する。
【0051】
図9は、本発明の第1の実施の形態に係るメモリコントローラ6の概略ブロック図である。ライトバッファ部40及びリードバッファ部42は、偶数PEと奇数PEとの専用のポートを持っていて、それぞれ1サイクルで2PE分のデータをアクセスする。
【0052】
ライトバッファ部40は、4PE分のデータがバッファに格納されると、メモリ4にライトアクセスを行うように構成されている。外部インタフェース8の転送ポートからライトバッファ部40に与えられる2PE分のデータは、まず初段のフリップフロップ402に格納された後、次段のフリップフロップ404に転送される。続いて、与えられる2PE分のデータは初段のフリップフロップ402に格納される。そして、フリップフロップ(402、404)に格納された4PE分のデータがそれぞれラッチ406に格納される。ライトバッファ部40は、4PE分のデータがラッチ406に格納されると、メモリにライトアクセスを行う。
【0053】
リードバッファ部42は、メモリ4から4PE分読み出されたデータをバッファとしてのフリップフロップ422に格納する。4PE分のデータから2PE分がマルチプレクサ424により選択され、ラッチ426に格納される。このラッチ426に格納されたデータが、外部インタフェース8を介してSIMD型マイクロプロセッサ2のレジスタファイル16に転送される。4PE分のデータの転送が終わると再びメモリ4にリードアクセスを行う。メモリ4は一度に4PE分のデータをアクセスできるので、2サイクルで一度のアクセスを実現できればSIMD型マイクロプロセッサ2とのインタフェースが取れることとなり、メモリ4のアクセスタイムの制限を緩和できる。
【0054】
RAM制御部46は、後述するシーケンスユニット48からの制御線によって制御され、メモリ4へのクロック、アドレス、リード/ライト制御、バイトセレクトを出力する。RAM制御部46は、RAMアドレス加減器462、ライトポインタレジスタ464、リードポインタレジスタ466、及びマルチプレクサ460等のブロックを含む。各ブロックはアドレス設定用バス(以降、ABと略す)468を介して接続されている。
【0055】
ライトポインタレジスタ464は、次にメモリ4にライトすべきポインタを格納しているレジスタであり、リードポインタレジスタ466は、同様に次にメモリ4からリードすべきポインタを格納しているレジスタである。ライトポインタレジスタ464、リードポインタレジスタ466は、そのポインタへのメモリ4のアクセスの後、RAMアドレス加減器462で更新されたポインタがAB468から入力され格納される。RAMアドレス加減器462は、ライトアクセス時にはライトポインタレジスタ464、リードアクセス時にはリードポインタレジスタ466の値にRAMアクセスサイズに応じた数を、FIFO動作モード時は加算、LIFO動作モード時は減算した値をAB468に出力する。
【0056】
外部インタフェース制御部44は、図7にも示したように外部インタフェース8にPEのアドレス、クロック、リード/ライト制御信号を出力するものであり、SIMD型マイクロプロセッサ2における各PEのレジスタ20のデータを読み書きすることを可能にしている。この外部インタフェース制御部44は、PEアドレスカウンタ4402、転送数カウンタ4404、有効データ数カウンタ4406、及び故障レジスタ部4408とからなる。PEアドレスカウンタ4402は、データ転送開始時に転送開始PEアドレスレジスタ4414に格納されている値が初期ロードされるアップカウンタであり、データ転送するPEのアドレスを生成する。転送数カウンタ4404は、転送するデータ数を初期ロードできるダウンカウンタであり、転送数を管理するのに使用される。転送数カウンタ4404にはライト転送の場合はライト数レジスタ4410の値が初期ロードされ、リード転送の場合はリード数レジスタ4412の値が初期ロードされる。
【0057】
有効データ数カウンタ4406は、メモリ4に格納済みの有効なデータ数を管理するカウンタであり、メモリ4からPEのレジスタファイル16にデータ転送する時に、転送数よりも有効データ数の方が多い時にのみ転送が実施されるようになっている。このように構成することで、データの欠落を防止している。
【0058】
故障レジスタ部4408には、各PEが故障しているかどうかが記録されている故障レジスタが格納されている。本実施の形態では16ビット幅のレジスタ16本(故障レジスタ0〜故障レジスタ15)で構成されており、電源起動時もしくはシステムの初期化時において各PEをテストした結果がGPから書き込まれる。つまり、故障レジスタ0にて、ビット0にはPE0の故障情報(正常:0、故障:1)が、ビット1にはPE1の故障情報(正常:0、故障:1)が、・・・(中略)・・・、ビット15にはPE15の故障情報(正常:0、故障:1)が格納される。同様に故障レジスタ1には、PE16〜PE31の故障情報が格納される。・・・(中略)・・・、故障レジスタ15には、PE240〜PE255の故障情報が格納される。
【0059】
故障レジスタの値は、PEアドレスカウンタ4402の値によって図10のように抽出されて、現在アクセスしている2PE分の故障情報が転送抑止データとしてシーケンスユニット48に出力される。このとき、転送数カウンタ4404及び有効データ数カウンタ4406の値のインクリメント(デクリメント)値を決定するのにも用いられる。
【0060】
シーケンスユニット48は、アドレスデコーダ、制御レジスタとからなる。グローバルプロセッサ10からは、I/O空間にマッピングされた制御レジスタをアクセスすることで、メモリコントローラ6全体の制御を行ったり、メモリコントローラ6の内部状態を監視することが可能になっている。ライト転送時には、シーケンスユニット48は、転送抑止データの値を検出して、転送抑止データが“0”である場合には、データをライトバッファ部内のバッファに書き込ませる。また、転送抑止データが“1”である場合には、データをライトバッファ部内のバッファに格納することを抑止する。ライトバッファ部40は、転送開始時及び転送終了時の例外を除き、4PE分のデータが格納されるまで、メモリ4への転送要求をRAM制御部46に対して出力しないため、ライトポインタレジスタ464の更新とメモリ4へのクロック、リード・ライト制御、バイトセレクトの出力は4PE分のデータがライトバッファ部40に格納されるまで行われない。SIMD型マイクロプロセッサ2のデータ転送ポートからのデータリードは、転送抑止データに拠らず継続する。またリード転送時には、シーケンスユニット48は、上記転送抑止データの値を検出して、“1”が立っている場合は、リードバッファ部42のマルチプレクサ424を制御して、1つ前のPEアドレスを持つPEのレジスタに転送すべきデータを、再度出力できるようにしている。リードバッファ部42は、転送開始時と転送終了時の例外を除き、メモリ4からリードされた4PE分のデータが全て不必要になるまで、RAM制御部46に対してメモリ4へのリードデータ転送要求を出力しないため(例えば、転送抑止データが常に“0”であれば2回のデータ転送ポートへのアクセスがあるまで、であり、逆に転送抑止データに“1”が立っている間はデータが不必要になることはない)、リードポインタレジスタ466の更新とメモリ4へのクロック、リード・ライト制御、バイトセレクトの出力は4PE分のデータが全て不必要になるまで行われない。SIMD型マイクロプロセッサ2の外部インタフェース8へのデータライトは転送抑止データに拠らず継続する。
【0061】
本実施の形態では、故障レジスタを外部インタフェース制御部44に内蔵したが、メモリコントローラ6が複数個ある場合には故障レジスタを複数個のメモリコントローラ6で参照できるように構成することでレジスタ数が削減できる。
【0062】
本実施の形態に係る構成によれば、故障しているPEがあっても、レジスタファイル16のアドレス、リード/ライト制御信号を再構成することなく、レジスタファイル16とメモリ4との間で正しくデータ転送を行うことが可能となる。
【0063】
≪第2の実施の形態≫
図11は、本発明の第2の実施の形態に係るメモリコントローラ6の外部インタフェース制御部44の概略ブロック図である。
【0064】
上記外部インタフェース部44は、図9の第1の実施の形態の構成に加えて、実効アドレスカウンタ4418と比較器4416とが設けられている。実効アドレスカウンタ4418は、正常なPEにアクセスしている時のみカウントアップするアップカウンタである。比較器4416は、実効アドレスカウンタ4418の値と転送開始PEアドレスレジスタ4414とが比較され、一致するまでは故障レジスタ部4408に対して転送抑止制御信号を出力するように構成される。転送抑止制御信号は、故障レジスタから選択(抽出)されたデータと論理和されることにより転送抑止データが生成される。更に転送抑止制御信号は、転送数カウンタ4404と有効データ数カウンタ4406のカウントアップ、カウントダウンを停止させるために用いられる。そのための回路構成は、図16に示される。PEアドレスカウンタ4402は、データ転送開始時に“0”が初期ロードされるアップカウンタで構成される。
【0065】
図9の第1の実施の形態の構成では、転送開始PEアドレスとして、故障しているPEの数だけのオフセットをつけた値が設定される必要があるが、第2の実施の形態の構成では、故障の無いPEにアクセスするときにカウントアップされる実効アドレスカウンタ4418が設定されているので、PEに係る故障を考慮せずに転送開始アドレスを設定することが可能となる。ただし転送開始PEアドレスレジスタ4414が“0”でない場合でも、常にPE番号「0」から転送開始されるため転送にかかる時間が若干増加する。
【0066】
≪第3の実施の形態≫
図12は、本発明の第3の実施の形態に係るメモリコントローラ6の外部インタフェース制御部44の概略ブロック図である。
【0067】
上記外部インタフェース制御部44は、PEアドレスカウンタ4402の初期ロード値として“0”もしくは転送開始PEアドレスレジスタ4414の値のどちらかが選択され得るようなマルチプレクサ4420が備わる。また、実効アドレスカウンタ4418の値と転送開始PEアドレスレジスタ4414の値とが(比較して)等しいときに、PEアドレスカウンタ4402の値を転送開始PEアドレスレジスタ4414にリロード(再ロード)する構成となっている。
【0068】
データ転送の際には、最初のデータ転送では、転送開始PEアドレスレジスタ4414に所定の値を設定し、PEアドレスカウンタ4402に初期ロードの値“0”を設定する。その後、転送開始PEアドレスレジスタ4414の値と実効アドレスカウンタ4418の値とが等しくなったときに、PEアドレスカウンタ4402の値がリロードされることになる。つまり、故障しているPEの数だけのオフセットをつけた値が転送開始PEアドレスレジスタ4414に格納されることになる。よって、2回目からのデータ転送では、PEアドレスカウンタ4402の初期ロード値を転送開始PEアドレスの値とすればよく、更に、転送開始PEアドレスレジスタ4414のリロードが実行されないようにすればよい。
【0069】
第3の実施の形態では、複数回繰り返されるデータ転送の開始時のみ転送にかかる時間が若干増加するだけで、2回目以降の転送ではデータ転送にかかる時間は第1の実施の形態の場合と同様に短縮される。
【0070】
ここで、主走査方向の画素数よりもPEの数が少ないSIMD型マイクロプロセッサ2を用いる場合の、画素データの転送方法について説明する。第3の実施の形態が利用される。
【0071】
図13は、主走査方向の画素数よりもPEの数が少ないSIMD型マイクロプロセッサ2を用いた場合の、画素データの転送方法についての説明図である。
【0072】
主走査方向の画素数よりPE数が少ない場合には、主走査方向の画素データが適宜分割され、SIMD型マイクロプロセッサ2は必要分演算処理を繰り返す。メモリコントローラ6は、SIMD型マイクロプロセッサ2のPEのレジスタファイル16に、分割された画素データをメモリ4から与える。
【0073】
通常、SIMD型マイクロプロセッサ2を用いた画像処理では、フィルター処理のような注目画素前後の画素データを参照する処理を含む処理を実施すると、「SIMD」(即ち、並列する全PEの並び)の両端のPEには無効なデータが格納されることになる。このため、PEのレジスタファイル16からメモリ4にデータを格納する際には、両端のデータを除いて格納する必要がある。一方、メモリ4からPEのレジスタファイル16にデータを転送する際には、注目画素前後の参照用の画素データも併せて転送する必要がある。つまり、フィルター処理などの重み付け処理における画素データの転送は、以下の順序で行われることになる。ここでは、参照用画素の個数をa個とする。
【0074】
(1)処理前画素データをメモリ4からSIMD型マイクロプロセッサ2のPEの対応するレジスタファイル16へ転送する。
(2)SIMD型マイクロプロセッサ2による画像処理を行う。このとき、「SIMD」(並列する全PEの並び)の両端a個のデータは、参照画素不存在により無効になる。つまり、図13における斜線部を施した部分が有効画素数になる。
(3)処理後画素データをSIMD型マイクロプロセッサ2からメモリ4に転送する。このとき、両端a個の画素を除いた有効画素がメモリ4に転送される。
【0075】
図13を参照して、メモリ4とSIMD型マイクロプロセッサ2との間の画素データの転送について説明する。SIMD型マイクロプロセッサ2は、n個のPE、即ち、PE0からPEn−1を備え、これらPEにメモリ4から画素データを送り、画像処理を行った後、これらPEからメモリ4に画素データが転送される。
【0076】
メモリ4には、画像処理前の画素データが、順にアドレス0から格納されているものとする。まず、最初の転送、すなわち、図中の1「SIMD」目の転送では、SIMD型マイクロプロセッサ2のPE並びの両端a個を参照画素として転送している。
【0077】
処理後の画素データをメモリ4に転送する場合、前後それぞれa個の画素データは無効なので、転送する画素データはPE0からPEn−1までのn画素の内、a〜(n−a−1)までの(n−2×a)画素である。
【0078】
2「SIMD」目の転送では、(n−a)〜(2n−3×a−1)までの画素を注目画素として処理を行うため、参照画素として(n−2×a)〜(n−a−1)及び、(2n−3×a)〜(2n−2×a−1)の画素データを併せて転送している。データ処理後、(n−a)〜(2n−3×a−1)の(n−2×a)画素がメモリ4に格納される。
【0079】
主走査方向の分割数が多い場合も、同様の処理を繰り返すだけである。以上の処理を実現するには、メモリ4へのデータライトの場合には、本実施の形態のPEの外部インタフェース制御部44において、転送開始PEアドレスレジスタ4414に“a”を設定し、転送数カウンタ4404に“(n−2×a)”を設定すればよい。
【0080】
上記の設定数は全てPEアドレスを基準としているため、「SIMD」ごとに設定を変更する必要がない。また、メモリ4からのデータリードの場合には、リードポインタレジスタ466を転送終了後に戻すという操作が必要である。上記の例では(n−2×a)に戻すことになる。第1の実施の形態に係るRAM制御部46においては、転送が終了した後に、リードポインタレジスタ466の値をグローバルプロセッサ10から設定する必要がある。また、メモリ4へのデータライトの場合には、ライトポインタレジスタ464への操作を行う必要はない。
【0081】
≪第4の実施の形態≫
図14は、本発明の第4の実施の形態に係るメモリコントローラ6の外部インタフェース制御部44の概略ブロック図である。図15は、本発明の第4の実施の形態に係るメモリコントローラ6のRAM制御部46の概略ブロック図である。
【0082】
外部インタフェース制御部44は、第3の実施の形態の構成と同一であるが、PEアドレス及び実効アドレスをRAM制御部46に対して出力する構成となっている。図15に示すRAM制御部46は、図9に示したRAM制御部46に、さらにリードオフセット生成器4610を設けたものである。このRAM制御部46は、リードオフセット生成器4610によりメモリ4からSIMD型マイクロプロセッサ2のPEの各レジスタファイル16へのデータ転送において、PEへの転送終了後に、リードポインタレジスタ466の値を戻すことができるように設定されている。
【0083】
リードオフセット生成器4610は、最初の転送の際には、マルチプレクサ4614により選択された実効アドレスを監視し、実効アドレスが設定された値と等しくなると、実効アドレスの値をリードオフセット値レジスタ4612にリロードし、またその時のリードポインタレジスタ466の値を保持し、設定された転送数を送り終えるまで転送を継続する。転送が終了すると、保持しておいた値をリードポインタレジスタ466にリロードする。2回目以降の転送の際には、マルチプレクサ4614により(実効アドレスに代わり)PEアドレスが選択されてリードオフセット生成器4610に入力される。またリードオフセット値レジスタ4612自身のリロードは行われないように制御するのがよい。上記図13で示す例では、“(n−2×a−1)”を設定することになる。設定値は全てPEアドレスを基準としているため、第1の実施の形態のRAM制御部46のように、「SIMD」ごとに設定を変更する必要がない。
【0084】
第4の実施の形態によると、図11の第2の実施の形態の場合と同様に、最初の転送の時のみPEアドレスカウンタ4402の初期ロード値として“0”を選択するだけでよいので、リードオフセット機能を用いる必要のある場合(即ち、フィルタ処理などのように左右画素参照の処理があるため、画像データを「SIMD」ごとにオーバラップさせた形で処理していく必要がある場合)にも、故障しているPEのことを考慮せずに処理を行うことができる。
【0085】
≪第5の実施の形態≫
図17は、本発明の第5の実施の形態に係るメモリコントローラ6の故障レジスタ部4408の概略ブロック図である。
【0086】
メモリコントローラ6には、ライト転送時に、隣接し合う偶数番号のPEと奇数番号のPEの、それぞれのデータを間引くかどうかを決定する外部ライト制御信号2本と、リード転送時に、隣接し合う偶数番号のPEと奇数番号のPEの、それぞれのデータを書き込む際に前と同じデータを重複して書き込むかどうかを決定する外部リード制御信号2本とが、入力されている。
【0087】
ライト転送において変倍を行う場合には、間引きライト信号がイネーブルとなり、故障レジスタより選択(抽出)されたデータと、メモリコントローラ6外部より入力された外部ライト制御信号との論理和が、転送抑止データとして出力される。リード転送において変倍を行う場合には、重複リード信号がイネーブルになり、故障レジスタより選択(抽出)されたデータと、メモリコントローラ6外部より入力された外部リード制御信号との論理和が、転送抑止データとして出力される。
【0088】
また、図示していないが、メモリコントローラ6は、外部ライト制御信号及び外部リード制御信号との同期を取るため、転送を開始するタイミングを取るための外部端子を有している。転送を開始する外部同期信号はシーケンスユニット48に入力されており、同期信号がアサートされるとシーケンスユニット48は転送を開始する。
【0089】
第5の実施の形態によると、故障しているPEがあっても、デジタルコピアやファクシミリなどでよく行われる変倍処理を行うことが可能となる。
【0090】
図18の上側は、デジタルコピアやファクシミリなどでよく行われる変倍処理の内、縮小を実現するための間引きライト動作について図示する。図18の上側では、PE0、PE2、PE3、PE5、PE6、・・・などの画素データはそのままメモリ4に格納され、PE1、PE4、PE7、・・・などの画素データがメモリ4に格納されずに間引かれている。
【0091】
図18の下側は、故障しているPEが有る場合の動作について図示したものである。図では、PE2、PE4、PE8、・・・に故障がある場合につき図示している。故障しているPEがある場合には、SIMD型マイクロプロセッサは故障しているPEを飛ばして再構成されるので、ライト制御データは図のように格納されていることになる。また画像データの方も同様に図のように格納されている。
【0092】
ライト制御データと故障PE情報との論理和を転送抑止データとすると、図のようにPE1、PE2、PE4、PE6、PE8のデータが間引かれることになり、メモリ4に格納されるデータは故障のない場合のデータの場合と全く同一であることがわかる。
【0093】
図19の上側は、デジタルコピアやファクシミリなどでよく行われる変倍処理の内、拡大を実現するための重複リード動作について図示する。図19の上側では、PE1、PE4、PE7、・・・などの画素データが直前のPEである、PE0、PE3、PE6に格納されるデータと同じ値のデータとなっている。
【0094】
図19の下側は、故障しているPEが有る場合の動作について図示したものである。図では、PE2、PE4、PE8、・・・に故障がある場合につき図示している。故障しているPEがある場合には、SIMD型マイクロプロセッサは故障しているPEを飛ばして再構成されるので、リード制御データは図のように格納されていることになる。また画像データの方も同様に図のように格納されている。
【0095】
リード制御データと故障PE情報との論理和を転送抑止データとすると、図のようにPE1、PE2、PE4、PE6、PE8に格納されるデータが直前のPEのデータと重複することになり故障のない場合にPEのレジスタファイルに格納されるデータと全く同一であることがわかる。(故障のあるPEを飛ばして順番にデータが格納されている。)
【0096】
つまり、第5の実施の形態によれば、故障しているPEがあっても変倍を正しく行うことが可能であることがわかる。
【0097】
【発明の効果】
本発明を利用することにより、以下のような効果を得ることができる。
【0098】
PEの故障診断を行ない、故障しているPEを除いてデータ転送を行うことができる。よって、故障しているPEがあってもSIMD型マイクロプロセッサを正常に動作させることができる。
【0099】
また、データ転送を行う場合に、データ転送を開始するPEあるいはデータ転送を終了するPEを指定することができるため、PE数が処理を行う画素データよりも少ない場合にデータのつなぎ目を考慮してデータ転送を行うことが可能となる。その場合、2回目以降のデータ転送においては、転送を開始するPEのアドレスを指定することもできるため、データ転送に必要なサイクル数を少なくできる。
【0100】
SIMD型マイクロプロセッサにおいて、故障しているPEがあっても画像処理の変倍処理を行うことが可能となる。
【図面の簡単な説明】
【図1】本発明に係るSIMD型マイクロプロセッサ、メモリ及びメモリコントローラの概略ブロック図である。
【図2】本発明に係るSIMD型マイクロプロセッサのブロック図である。
【図3】本発明の第1の実施の形態に係るSIMD型マイクロプロセッサの部分ブロック図である。
【図4】本発明の第1の実施の形態に係るSIMD型マイクロプロセッサにおいて、あるPEの前方、あるいは後方の、3つのPEの中に故障があった場合に行なわれる制御のための概略の回路図である。
【図5】不良フラグが入力される部分のTレジスタの回路である。
【図6】不良フラグ確定のためのセルフテストのフローチャートである。
【図7】本発明の第1の実施の形態に係るメモリコントローラのブロック図である。
【図8】第1の実施の形態のメモリコントローラを用いて、ライト転送(PEのレジスタファイルからメモリへの転送)の場合、及びリード転送(メモリからPEのレジスタファイルへの転送)の場合に、どのようにデータを転送するかを示す模式図である。
【図9】本発明の第1の実施の形態に係るメモリコントローラの概略ブロック図である。
【図10】転送抑止データを生成する回路である。
【図11】本発明の第2の実施の形態に係るメモリコントローラの外部インタフェース制御部の概略ブロック図である。
【図12】本発明の第3の実施の形態に係るメモリコントローラの外部インタフェース制御部の概略ブロック図である。
【図13】主走査方向の画素数よりもPEの数が少ないSIMD型マイクロプロセッサを用いた場合の、画素データの転送方法についての説明図である。
【図14】本発明の第4の実施の形態に係るメモリコントローラの外部インタフェース制御部の概略ブロック図である。
【図15】本発明の第4の実施の形態に係るメモリコントローラのRAM制御部の概略ブロック図である。
【図16】転送数カウンタと有効データ数カウンタのカウントアップ、カウントダウンを停止させるために、転送抑止制御信号を用いる回路の構成である。
【図17】本発明の第5の実施の形態に係るメモリコントローラの故障レジスタ部の概略ブロック図である。
【図18】デジタルコピアやファクシミリで行われる変倍処理の内、縮小を実現するための間引きライト動作の模式図である。
【図19】デジタルコピアやファクシミリで行われる変倍処理の内、拡大を実現するための重複リード動作の模式図である。
【符号の説明】
2・・・SIMD型マイクロプロセッサ、4・・・メモリ、6・・・メモリコントローラ、8・・・外部インタフェース、16・・・レジスタファイル、20・・・レジスタ、40・・・ライトバッファ部、42・・・リードバッファ部、44・・・外部インタフェース制御部、46・・・RAM制御部、48・・・シーケンスユニット。
[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a microprocessor, and more particularly, to a SIMD (Single Instruction-Stream Multiple Data-stream) microprocessor.
[0002]
[Prior art]
In the SIMD type microprocessor, the same arithmetic processing can be simultaneously performed on a plurality of data with one instruction. With this structure, the calculation is frequently used in applications related to processing that is the same but has a very large amount of data (for example, image processing in a digital copier or the like).
[0003]
In ordinary image processing in a SIMD microprocessor, high-speed processing is performed by arranging a plurality of processing units (Processor Elements [PE]; processor elements) in the main scanning direction and simultaneously executing the same calculation on a plurality of data. Calculation processing is possible.
[0004]
By the way, in recent years, the degree of integration of LSIs has been increasing due to the miniaturization of the manufacturing process, and the number of PEs can be increased even in SIMD type microprocessors. However, in a processor adopting a parallel processor configuration, such as an SIMD type, if even one of the plurality of arithmetic units has failed, it may not be possible to use the entire processor. Therefore, in the conventional SIMD type microprocessor, for example, a method of providing a redundant PE and replacing it with a faulty PE has been used.
[0005]
Patent Literature 1, Patent Literature 2, Patent Literature 3 and the like below show a technique of providing a redundant PE for replacing a defective processor. In this technique, when there is a failed PE, the parallel processor is rescued by allocating a signal specifying the PE to the redundant PE instead of the failed PE. Further, the processor disclosed in Patent Document 2 uses a mode in which data is transferred to and from the outside of the processor by outputting the data to an external output bus using a three-state buffer. Is configured. These techniques are effective when the number of PEs is small. However, when the number of PEs is large, the number of control lines that need to be set becomes large (assuming switching). There are drawbacks such as the need.
[0006]
In the prior arts shown in Patent Literatures 4, 5, and 6, each PE has a multiplexer of an output signal from an adjacent PE and a signal output by itself. The parallel processor is saved by bypassing and outputting the output signal from the PE. Further, in the processor of Patent Document 4, data transfer with the outside of the processor is performed by a shift register configuration. These configurations are relatively simple. However, since a shift register is used, for example, even when data transfer is performed in some PEs, it may be necessary to shift data in all PEs. Therefore, the time required for the transfer may increase.
[0007]
[Patent Document 1]
JP-A-9-22400
[Patent Document 2]
JP-A-9-288652
[Patent Document 3]
Patent No. 3005243
[Patent Document 4]
JP 2000-148998
[Patent Document 5]
JP-A-2002-169787
[Patent Document 6]
Special table 2001-527218
[0008]
[Problems to be solved by the invention]
An object of the present invention is to enable a SIMD microprocessor to perform data transfer even when a faulty PE occurs.
[0009]
[Means for Solving the Problems]
The present invention has been made to achieve the above object. The SIMD type microprocessor according to claim 1 according to the present invention,
It is a SIMD type microprocessor having a plurality of processor elements for processing a plurality of data. In the SIMD type microprocessor,
A data transfer device is connected to a data transfer port for externally accessing a general-purpose register included in each processor element,
The data transfer device has a storage unit that indicates whether each processor element has failed,
The data transfer device controls the data transfer to the failed processor element based on the content of the data in the storage unit.
[0010]
The SIMD type microprocessor according to claim 2 according to the present invention,
A self-test for checking whether or not each processor element operates normally is automatically executed in a timely manner.
The inspection result is automatically stored in the storage unit of the data transfer device.
An SIMD type microprocessor according to claim 1.
[0011]
The SIMD type microprocessor according to claim 3 according to the present invention,
The data transfer device is:
A first register for setting, as data, an address of a processor element from which transfer is to be started at the time of data transfer;
A first counter that counts up when an address of a processor element that has not failed has been issued,
Inhibiting data transfer until the value of the first counter is equal to the value of the first register;
An SIMD type microprocessor according to claim 1.
[0012]
The SIMD type microprocessor according to claim 4 according to the present invention,
When the value of the first counter becomes equal to the value of the first register, the value of the address of the processor element at that time is held,
When the data transfer is completed for all processor elements, the value of the address is set in the first register.
An SIMD microprocessor according to claim 3.
[0013]
The SIMD type microprocessor according to claim 5 according to the present invention,
The data transfer device is:
A second register for setting, as data, an address of a processor element whose transfer is to be terminated at the time of data transfer;
A first counter that counts up when an address of a processor element that has not failed has been issued,
When the value of the first counter becomes equal to the value of the second register, the value of the address of the external memory connected to the data transfer device at that time is held,
When the data transfer is completed for all processor elements, the value of the address of the external memory is set in the second register.
An SIMD type microprocessor according to claim 1.
[0014]
The SIMD type microprocessor according to claim 6 according to the present invention,
The data transfer device is configured to perform data transfer in synchronization with another data transfer device,
By the logical OR of the data being transferred by another data transfer device and the data of the storage unit indicating whether or not each processor element has failed,
Suppression of data transfer is controlled,
An SIMD type microprocessor according to claim 1.
[0015]
BEST MODE FOR CARRYING OUT THE INVENTION
First, as a premise for describing a preferred embodiment according to the present invention, a schematic configuration of a SIMD type microprocessor 2, a memory 4, and a memory controller 6 will be described with reference to FIGS.
[0016]
FIG. 1 is a schematic block diagram of a SIMD microprocessor 2, a memory 4, and a memory controller 6 according to the present invention.
[0017]
<Global processor>
This block is a so-called SISD (Single Instruction Stream, Single Data Stream) type processor, has a built-in program RAM and data RAM, and decodes a program to generate various control signals (see FIG. 2). This control signal is supplied to the register file 16, the operation array 14, and the memory controller 6 in addition to the control of various built-in blocks. When a GP (global processor) instruction is executed, various arithmetic processing and program control processing are performed using a built-in general-purpose register, an ALU (arithmetic logic operation unit), and the like.
[0018]
<Register file>
It holds data processed by PE (processor element) instructions. The PE instruction is a SIMD (Single Instruction Stream, Multiple Data Stream) type instruction, and performs the same processing on a plurality of data held in the register file 16 simultaneously. The reading / writing of data from the register file 16 is controlled by the global processor 10. The read data is sent to the operation array 14 and is written into the register file 16 after the operation processing in the operation array 14.
[0019]
The register file 16 can be accessed from the memory controller 6 outside the processor via the external interface 8, and a specific register is read / written from outside independently of the control of the global processor 10.
[0020]
<Calculation array>
Operation processing of the PE instruction is performed. All control of the processing is performed by the global processor 10.
[0021]
<Memory controller>
By outputting a clock, an address, and read / write control to an external port and outputting a clock, an address, and read / write control to the memory 4, data transfer is performed between the register 20 of an arbitrary PE and the memory 4. All control of the processing is performed by the global processor 10.
[0022]
FIG. 2 is a block diagram of the SIMD type microprocessor 2 according to the present invention.
[0023]
The global processor 10 has a built-in program RAM for storing a program of the present processor and a data RAM for storing operation data. Further, a program counter (PC) for holding a program address, G0 to G3 registers which are general-purpose registers for storing data for arithmetic processing, a stack pointer (for holding an address of a save destination data RAM at the time of register saving and returning). SP), a link register (LS) for holding a call source address at the time of a subroutine call, an LI and LN register for holding a branch source address for IRQ and NMI, and a processor status register (P for holding a processor state). ) Is built-in.
[0024]
The GP instruction is executed using these registers and an unillustrated instruction decoder, ALU, memory control circuit, interrupt control circuit, external I / O control circuit, and GP operation control circuit.
[0025]
When the PE instruction is executed, the control of the register file 16 and the control of the operation array 14 are performed using an instruction decoder, a register file control circuit (not shown), and a PE operation control circuit.
[0026]
The register file 16 contains 32 8-bit registers 20 for each PE unit, and sets of 256 PEs are arranged in an array. The registers 20 are called R0, R1, R2,... R31 in the same PE. Each register 20 has one read port and one write port for the operation array 14, and is accessed from the operation array by an 8-bit read / write bus. Of the 32 registers, 24 (R0 to R23) can be accessed from outside the processor via the external interface 8, and read / write an arbitrary register 20 by inputting a clock, address, and read / write control from outside. it can.
[0027]
In access from outside the register 20, one register of each PE can be accessed by one external port. In that case, the number of the PE (0 to 255) is specified by the address input from the outside. Therefore, a total of 24 sets of external ports for register access are mounted.
[0028]
The numbers 0 to 255 are assigned to the PEs in order (for example, from the left in FIG. 2). The direction in which the PE number is smaller is referred to as “front”, and the direction in which the PE number is higher is referred to as “back”.
[0029]
The above-mentioned external access is made simultaneously to two (same) registers 20 by a pair of adjacent even-numbered PEs and odd-numbered PEs. That is, 16-bit data is accessed by one access.
[0030]
The operation array 14 includes a 16-bit ALU 18, a 16-bit A register 22, and an F register 24. In the operation by the PE instruction, the data read from the register 20 or the data given from the global processor 10 is used as an input on one side of the ALU 18 and the content of the A register 22 is used as an input on the other side. The result is stored in the A register 22. That is, the operation of the data of the A register 22 and the data given from the R0 to R31 registers 20 or the global processor 10 is performed.
[0031]
A 7-to-1 multiplexer 26 is placed at the connection between the register 20 and the ALU (arithmetic unit) 18. Regarding the parallel PEs, the data of the register 20 of the PE 1, 2, or 3 away from the front, the data of the register 20 of the PE 1, 2, or 3 away behind, or the center (that is, the ALU 18 The data of the register 20 of the PE is selected as the operation target. The 8-bit data of the register 20 is input to the ALU 18 by shifting the arbitrary bits to the left by a shift & extension circuit. Further, the execution / invalidation of the execution of the operation is controlled for each PE by an 8-bit condition register (T) (see FIG. 3) not shown in FIG. 2, so that only a specific PE can be selected as an operation target.
[0032]
<< 1st Embodiment >>
FIG. 3 is a partial block diagram of the SIMD type microprocessor 2 according to the first embodiment of the present invention. The processor 2 in FIG. 3 can reconfigure the processor element block 12 except for the failed PEs when some of the PEs have a failure, so that the entire processor can be rescued.
[0033]
Each of the PEs is subjected to a self-test by the global processor 10 at the time of power-on or at the time of system initialization to determine whether or not it operates normally. As a result of the self-test, the fault flag 30 (described later) is set to “0” for a normal PE, and the fault flag 30 is set to “1” for a faulty PE. Is performed. Thereafter, the actual program is downloaded to the program RAM and the program is executed. The program for the self-test is built in the ROM or downloaded from an upper host processor.
[0034]
Each PE has a built-in 1-bit register called a defective flag 30. The result of the self test is set in the failure flag 30. The failure flag 30 is formed of a shift register, and a value can be set by the global processor 10. The value of the failure flag 30 is input to the above-mentioned condition register (T register) 32, and is controlled such that the execution of the operation is always invalidated in the PE that has failed as shown in FIG.
[0035]
Each PE is associated with the data of the register 20 of the PE which is located one, two or three places forward, the data of the register 20 of the PE which is located one, two or three places backward, or the center ( That is, a path is provided so that the data in the register 20 of the PE of the ALU 18) can be selected as an operation target. Further, each PE has one spare wiring path in the front and one in the rear in order to ignore any failed one of the seven PEs to be targeted, if any.
[0036]
That is, if there is no faulty PE, each of the PEs is located ahead (abbreviated as L1), 2 (abbreviated as L2), 3 (abbreviated as L3), 4 (abbreviated as L4) with respect to the parallel PEs. The data related to the PEs separated by only 1 (abbreviated as U1), 2 (abbreviated as U2), 3 (abbreviated as U3), and 4 (abbreviated as U4) are referred to functionally. It is possible.
[0037]
The multiplexer (PE selection unit) 26 for selecting the PE to be referred to refers not only to the path for referring to the data of the register of the PE itself but also to the data from the registers of the PEs up to four in the forward and backward directions. A path from the failure flag 30 of the PE, which is not shown, but one, two, and three ahead of the own PE, and a path from the failure flag 30 of the PE one, two, and three behind. Is entered. Further, a control signal is input from the global processor 10 indicating whether the instruction currently being executed is an instruction referring to data of a register in front of, behind, or of itself as viewed from its own PE.
[0038]
In the PE selection unit 26, control is performed based on the preceding and following failure flags 30 and the control signal so as to open the wiring path avoiding the faulty PE. For example, if the PE immediately preceding the own PE has failed, and if an instruction that refers to the immediately preceding PE has been issued, a path from the immediately preceding PE is opened. When an instruction that refers to the two-preceding PE is issued, control is performed to open the path from the three-preceding PE.
[0039]
FIG. 4 is a schematic circuit diagram for control performed when a failure occurs in three PEs in front of or behind a certain PE.
[0040]
C_en, L1_en to L3_en, and U1_en to U3_en indicate which instruction the currently executing instruction refers to data stored in which PE. In this order, C_en (refer to own PE) and L1_en (one forward) , L2_en (see two PEs ahead), L3_en (see three PEs ahead), U1_en (see one PE behind), U2_en (see two PEs behind), U3_en (see three PE behind) PE).
[0041]
C_enable, L1_enable to L4_enable, and U1_enable to U4_enable indicate which wiring path is actually opened in each PE, and C_enable (the gate that refers to the own PE is open) and L1_enable (the previous PE). L2_enable (the gate that refers to the two previous PEs is open), L3_enable (the gate that refers to the three previous PEs is open), L4_enable (the gate that references the fourth PE is U1_enable (opens the gate that refers to the next PE), U2_enable (opens the gate that references the second PE), U3_enable (opens the gate that refers to the third PE), U4_enable (opens) A gate that refers to the next four PEs It is open).
[0042]
Referring back to FIG. Each PE further has an ID register 34 indicating the number of the PE itself. The value of the ID register 34 is input to the ALU 18 via the data bus, and the result of comparison with the immediate data supplied to the second immediate data bus 36 (FIG. 3) in the ALU 18 is reflected in the T register 32. It is possible to do.
[0043]
As the value of the ID register 34, a number that is sequentially incremented from 0 is stored except for the PE determined to have failed during the self-test. In image processing, processing such as loading the same value into every fourth PE, such as loading a dither table, is required. It is possible to deal with it. In such a configuration, if there are no more than two faults in four consecutive PEs, the entire processor can function. Although it is possible to cope with the case where there are two or more faults by adding a spare wiring route, it is possible to cope with the increase in the circuit scale and the frequency of the faults. It is thought. FIG. 6 shows a flow of the self-test.
[0044]
Further, in the processor 2 of the present embodiment, data can be transferred between the memory controller 6 outside the processor and the register file 16 of the PE via the external interface 8, but an address for specifying the PE is used. For the signals such as read / write control and clock, it is not necessary to consider the faulty PE by appropriate setting of the memory controller 6 described later. For example, an operation such as providing a redundant PE and exchanging address control is completely unnecessary.
[0045]
FIG. 7 shows a configuration of the memory controller 6 according to the first embodiment of the present invention. The memory controller 6 includes a write buffer unit 40 for writing data to the memory 4, a read buffer unit 42 for reading data from the memory 4, an external interface control unit 44 for controlling the PE register file 16, a memory, 4 includes a RAM control unit 46 for controlling the control unit 4 and a sequence unit (SCU) 48. The memory controller 6 is connected to the register file 16 of the SIMD type microprocessor 2 via a data transfer port in the external interface 8, transfers data from the register file 16 to the memory 4, and transfers data from the memory 4 to the register file 16. Transferring. The data transfer port has an output port and an input port. The registers controlled by the memory controller 6 are mapped in the I / O space, and are readable and writable in accordance with an instruction from the global processor 10.
[0046]
The output port of the external interface 8 is connected to the write buffer unit 40, and the input port of the external interface 8 is connected to the read buffer unit 42. The data transfer ports have independent input and output ports for even PEs (in PE numbers) and odd PEs, respectively. One cycle of even and odd (immediately after) one at a time in one cycle. The data of the set of PEs can be accessed. On the other hand, the data bus between the write buffer unit 40 / read buffer unit 42 and the memory 4 has a data width of 4 PEs each, and can access data of 4 PEs at a time in one cycle. In this embodiment, the data for one PE is 8 bits. Therefore, the bit width of the data bus between the external interface 8 and the write buffer unit 40 and the read buffer unit 42 is 16 bits. The data bus between the memory controller 6 and the memory 4 has a bit width of 32 bits.
[0047]
As a result, the transfer between the memory 4 and the memory controller 6 only needs to be performed once while the transfer between the data transfer port of the external interface 8 and the memory controller 6 is performed twice.
[0048]
The write buffer unit 40 of the memory controller 6 takes in the data output from the external interface 8 twice, shapes it into data for four PEs, and transfers the data to the memory 4. Further, the read buffer unit 42 performs an operation of transferring the data for four PEs read from the memory 4 to the external interface 8 twice.
[0049]
FIG. 8 shows the case of write transfer (transfer from a PE register file to a memory) and the case of read transfer (transfer from a memory to a PE register file) using the memory controller 6 of the first embodiment. Shows how data is transferred.
[0050]
When performing data transfer, the memory controller 6 performs data transfer using transfer inhibition data indicating whether each PE has failed. The transfer inhibit data is read from a failure register described later in synchronization with the data transfer, and is used to inhibit the data transfer for the failed PE. As the transfer inhibition data, “0” is read for a normal PE and “1” is read for a faulty PE. At the time of the write transfer, only the data of the PE whose transfer inhibition data is "0" is stored in the memory 4, and the data of the PE whose transfer inhibition data is "1" is thinned out without being stored in the memory 4. At the time of read transfer, the same data as the data transferred to the PE with one less PE number is sent to the PE whose transfer inhibition data is “1”, and the data from the memory 4 is not updated. (Do not proceed).
[0051]
FIG. 9 is a schematic block diagram of the memory controller 6 according to the first embodiment of the present invention. The write buffer unit 40 and the read buffer unit 42 have dedicated ports for even-numbered PEs and odd-numbered PEs, and each access data for 2 PEs in one cycle.
[0052]
The write buffer unit 40 is configured to perform a write access to the memory 4 when data for 4 PE is stored in the buffer. The data for 2 PEs supplied from the transfer port of the external interface 8 to the write buffer unit 40 is first stored in the first-stage flip-flop 402 and then transferred to the next-stage flip-flop 404. Subsequently, the provided data for 2PE is stored in the flip-flop 402 of the first stage. Then, the data for 4 PEs stored in the flip-flops (402, 404) are stored in the latch 406, respectively. When the data for 4 PEs is stored in the latch 406, the write buffer unit 40 performs a write access to the memory.
[0053]
The read buffer unit 42 stores the data read for 4 PEs from the memory 4 in the flip-flop 422 as a buffer. The multiplexer 424 selects two PEs out of the four PEs and stores them in the latch 426. The data stored in the latch 426 is transferred to the register file 16 of the SIMD type microprocessor 2 via the external interface 8. When the transfer of data for 4 PEs is completed, read access to the memory 4 is performed again. Since the memory 4 can access data for 4 PEs at a time, an interface with the SIMD type microprocessor 2 can be obtained if access can be made once in two cycles, and the access time limit of the memory 4 can be relaxed.
[0054]
The RAM control unit 46 is controlled by a control line from a sequence unit 48 described later, and outputs a clock, address, read / write control, and byte select to the memory 4. The RAM control unit 46 includes blocks such as a RAM address adder / subtractor 462, a write pointer register 464, a read pointer register 466, and a multiplexer 460. Each block is connected via an address setting bus (hereinafter abbreviated as AB) 468.
[0055]
The write pointer register 464 is a register storing a pointer to be written to the memory 4 next, and the read pointer register 466 is a register storing a pointer to be read from the memory 4 next. After the access of the memory 4 to the write pointer register 464 and the read pointer register 466, the pointer updated by the RAM address adjuster 462 is input from the AB 468 and stored. The RAM address adder / subtractor 462 adds a value corresponding to the RAM access size to the value of the write pointer register 464 at the time of write access and the value corresponding to the RAM access size at the time of read access, and subtracts a value obtained by subtracting the value at the time of LIFO operation mode. Output to AB468.
[0056]
The external interface control section 44 outputs the address, clock, and read / write control signal of the PE to the external interface 8 as shown in FIG. 7, and outputs the data of the register 20 of each PE in the SIMD type microprocessor 2. It is possible to read and write. The external interface control unit 44 includes a PE address counter 4402, a transfer number counter 4404, a valid data number counter 4406, and a failure register unit 4408. The PE address counter 4402 is an up counter that is initially loaded with a value stored in the transfer start PE address register 4414 at the start of data transfer, and generates an address of a PE to which data is transferred. The transfer number counter 4404 is a down counter that can initially load the number of data to be transferred, and is used to manage the number of transfers. The transfer number counter 4404 is initially loaded with the value of the write number register 4410 in the case of a write transfer, and initially loaded with the value of the read number register 4412 in the case of a read transfer.
[0057]
The valid data number counter 4406 is a counter for managing the number of valid data stored in the memory 4. When data is transferred from the memory 4 to the PE register file 16, the number of valid data is larger than the number of transferred data. Only transfer is performed. With this configuration, data loss is prevented.
[0058]
The failure register unit 4408 stores a failure register that records whether each PE has failed. In the present embodiment, it is composed of 16 registers (failure register 0 to failure register 15) having a 16-bit width, and the result of testing each PE at the time of power-on or system initialization is written from the GP. That is, in the fault register 0, bit 0 is the fault information of PE0 (normal: 0, fault: 1), bit 1 is the fault information of PE1 (normal: 0, fault: 1),. ,...,..., Bit 15 stores failure information (normal: 0, failure: 1) of PE 15. Similarly, the failure register 1 stores failure information of the PEs 16 to 31. ... (Omitted)..., The failure register 15 stores failure information of the PEs 240 to 255.
[0059]
The value of the fault register is extracted as shown in FIG. 10 based on the value of the PE address counter 4402, and fault information for the currently accessed 2PE is output to the sequence unit 48 as transfer inhibition data. At this time, it is also used to determine an increment (decrement) value of the values of the transfer number counter 4404 and the valid data number counter 4406.
[0060]
The sequence unit 48 includes an address decoder and a control register. The global processor 10 can control the entire memory controller 6 and monitor the internal state of the memory controller 6 by accessing a control register mapped in the I / O space. At the time of the write transfer, the sequence unit 48 detects the value of the transfer suppression data, and when the transfer suppression data is “0”, causes the data to be written to the buffer in the write buffer unit. When the transfer suppression data is “1”, the data is prevented from being stored in the buffer in the write buffer unit. The write buffer unit 40 does not output a transfer request to the memory 4 to the RAM control unit 46 until data for 4 PEs is stored, except for the exceptions at the start and end of the transfer. Update, clock, read / write control, and byte select output to the memory 4 are not performed until data for 4 PEs is stored in the write buffer unit 40. The data read from the data transfer port of the SIMD type microprocessor 2 continues irrespective of the transfer inhibition data. At the time of read transfer, the sequence unit 48 detects the value of the transfer inhibition data, and when “1” is set, controls the multiplexer 424 of the read buffer unit 42 to change the immediately preceding PE address. The data to be transferred to the register of the owning PE can be output again. The read buffer unit 42 transfers the read data to the memory 4 to the RAM control unit 46 until all the data of 4 PEs read from the memory 4 becomes unnecessary, except for the exceptions at the start and end of the transfer. Since the request is not output (for example, if the transfer inhibition data is always “0” until the access to the data transfer port is performed twice, on the other hand, while the transfer inhibition data is “1”, The data will not be unnecessary), the updating of the read pointer register 466, the clock to the memory 4, the read / write control, and the output of the byte select will not be performed until all the data for 4 PEs are unnecessary. The data writing to the external interface 8 of the SIMD type microprocessor 2 continues irrespective of the transfer inhibition data.
[0061]
In the present embodiment, the fault registers are incorporated in the external interface control unit 44. However, when there are a plurality of memory controllers 6, the fault registers can be referred to by the plurality of memory controllers 6, thereby reducing the number of registers. Can be reduced.
[0062]
According to the configuration according to the present embodiment, even if there is a faulty PE, the address between the register file 16 and the read / write control signal are correctly reconstructed between the register file 16 and the memory 4 without reconfiguring. Data transfer can be performed.
[0063]
<< 2nd Embodiment >>
FIG. 11 is a schematic block diagram of the external interface control unit 44 of the memory controller 6 according to the second embodiment of the present invention.
[0064]
The external interface unit 44 is provided with an effective address counter 4418 and a comparator 4416 in addition to the configuration of the first embodiment shown in FIG. The effective address counter 4418 is an up counter that counts up only when accessing a normal PE. The comparator 4416 is configured to compare the value of the effective address counter 4418 with the transfer start PE address register 4414 and output a transfer inhibition control signal to the fault register unit 4408 until they match. The transfer inhibition control signal is ORed with data selected (extracted) from the fault register to generate transfer inhibition data. Further, the transfer suppression control signal is used for stopping the count-up and count-down of the transfer number counter 4404 and the valid data number counter 4406. The circuit configuration for that is shown in FIG. The PE address counter 4402 is composed of an up counter that is initially loaded with “0” at the start of data transfer.
[0065]
In the configuration of the first embodiment shown in FIG. 9, a value with an offset equal to the number of failed PEs needs to be set as the transfer start PE address. Since the effective address counter 4418 which is counted up when accessing a PE having no failure is set, the transfer start address can be set without considering the failure related to the PE. However, even when the transfer start PE address register 4414 is not “0”, the transfer starts slightly from the PE number “0”, so that the time required for the transfer slightly increases.
[0066]
<< 3rd Embodiment >>
FIG. 12 is a schematic block diagram of the external interface control unit 44 of the memory controller 6 according to the third embodiment of the present invention.
[0067]
The external interface control unit 44 includes a multiplexer 4420 that can select either “0” or the value of the transfer start PE address register 4414 as the initial load value of the PE address counter 4402. When the value of the effective address counter 4418 is equal to (compared with) the value of the transfer start PE address register 4414, the value of the PE address counter 4402 is reloaded (reloaded) into the transfer start PE address register 4414. Has become.
[0068]
At the time of data transfer, in the first data transfer, a predetermined value is set in the transfer start PE address register 4414, and the initial load value “0” is set in the PE address counter 4402. Thereafter, when the value of the transfer start PE address register 4414 becomes equal to the value of the effective address counter 4418, the value of the PE address counter 4402 is reloaded. In other words, a value with an offset equal to the number of failed PEs is stored in the transfer start PE address register 4414. Therefore, in the second data transfer, the initial load value of the PE address counter 4402 may be used as the value of the transfer start PE address, and the reload of the transfer start PE address register 4414 may be prevented from being executed.
[0069]
In the third embodiment, the time required for the transfer is slightly increased only at the start of the data transfer repeated a plurality of times, and the time required for the data transfer in the second and subsequent transfers is different from that in the first embodiment. It is similarly shortened.
[0070]
Here, a method of transferring pixel data when using the SIMD type microprocessor 2 having a smaller number of PEs than the number of pixels in the main scanning direction will be described. A third embodiment is used.
[0071]
FIG. 13 is an explanatory diagram of a method of transferring pixel data when using a SIMD microprocessor 2 having a smaller number of PEs than the number of pixels in the main scanning direction.
[0072]
When the number of PEs is smaller than the number of pixels in the main scanning direction, the pixel data in the main scanning direction is appropriately divided, and the SIMD microprocessor 2 repeats the arithmetic processing as necessary. The memory controller 6 supplies the divided pixel data from the memory 4 to the register file 16 of the PE of the SIMD type microprocessor 2.
[0073]
Normally, in the image processing using the SIMD type microprocessor 2, if processing including a process of referring to pixel data before and after the pixel of interest, such as a filtering process, is performed, the “SIMD” (that is, a row of all the parallel PEs) is obtained. Invalid data will be stored in the PEs at both ends. Therefore, when storing data from the register file 16 of the PE to the memory 4, it is necessary to store the data excluding data at both ends. On the other hand, when transferring data from the memory 4 to the register file 16 of the PE, it is necessary to transfer reference pixel data before and after the pixel of interest as well. That is, the transfer of the pixel data in the weighting process such as the filter process is performed in the following order. Here, the number of reference pixels is a.
[0074]
(1) Transfer unprocessed pixel data from the memory 4 to the corresponding register file 16 of the PE of the SIMD microprocessor 2.
(2) Image processing by the SIMD type microprocessor 2 is performed. At this time, the data of the both ends a of “SIMD” (the arrangement of all the parallel PEs) becomes invalid due to the absence of the reference pixel. That is, the shaded portion in FIG. 13 is the number of effective pixels.
(3) The processed pixel data is transferred from the SIMD microprocessor 2 to the memory 4. At this time, the effective pixels excluding the pixels at both ends a are transferred to the memory 4.
[0075]
With reference to FIG. 13, transfer of pixel data between the memory 4 and the SIMD type microprocessor 2 will be described. The SIMD type microprocessor 2 includes n PEs, that is, PE0 to PEn-1, and sends pixel data from the memory 4 to these PEs. After performing image processing, the pixel data is transferred from these PEs to the memory 4. Is done.
[0076]
It is assumed that the memory 4 stores pixel data before image processing in order from address 0. First, in the first transfer, that is, in the first “SIMD” transfer in the figure, a-ends at both ends of the PE array of the SIMD microprocessor 2 are transferred as reference pixels.
[0077]
When the processed pixel data is transferred to the memory 4, the pixel data to be transferred are a to (na−1) out of the n pixels from PE 0 to PEn−1, because the a pixel data before and after are invalid. Up to (n−2 × a) pixels.
[0078]
In the 2nd “SIMD” transfer, since the pixels from (na) to (2n−3 × a−1) are processed as the pixel of interest, (n−2 × a) to (n−) are used as reference pixels. a-1) and (2n−3 × a) to (2n−2 × a−1) pixel data. After the data processing, (n−2 × a) pixels (n−a) to (2n−3 × a−1) are stored in the memory 4.
[0079]
Even when the number of divisions in the main scanning direction is large, the same processing is simply repeated. To implement the above processing, in the case of data writing to the memory 4, the external interface control unit 44 of the PE of this embodiment sets “a” in the transfer start PE address register 4414, and What is necessary is just to set “(n−2 × a)” in the counter 4404.
[0080]
Since the above setting numbers are all based on the PE address, there is no need to change the setting for each “SIMD”. In the case of reading data from the memory 4, an operation of returning the read pointer register 466 after the transfer is completed is necessary. In the above example, the value is returned to (n−2 × a). In the RAM control unit 46 according to the first embodiment, the value of the read pointer register 466 needs to be set from the global processor 10 after the transfer is completed. In the case of writing data to the memory 4, it is not necessary to perform an operation on the write pointer register 464.
[0081]
<< 4th Embodiment >>
FIG. 14 is a schematic block diagram of the external interface control unit 44 of the memory controller 6 according to the fourth embodiment of the present invention. FIG. 15 is a schematic block diagram of the RAM control unit 46 of the memory controller 6 according to the fourth embodiment of the present invention.
[0082]
The external interface control unit 44 has the same configuration as that of the third embodiment, but is configured to output the PE address and the effective address to the RAM control unit 46. The RAM control unit 46 shown in FIG. 15 is obtained by further adding a read offset generator 4610 to the RAM control unit 46 shown in FIG. In the data transfer from the memory 4 to each register file 16 of the PE of the SIMD type microprocessor 2 by the read offset generator 4610, the RAM control unit 46 returns the value of the read pointer register 466 after the transfer to the PE is completed. Is set to be able to.
[0083]
The read offset generator 4610 monitors the effective address selected by the multiplexer 4614 at the time of the first transfer, and when the effective address becomes equal to the set value, reloads the effective address value into the read offset value register 4612. Then, the value of the read pointer register 466 at that time is held, and the transfer is continued until the set number of transfers is completed. When the transfer is completed, the stored value is reloaded into the read pointer register 466. In the second and subsequent transfers, the PE address is selected by the multiplexer 4614 (instead of the effective address) and input to the read offset generator 4610. It is preferable to control so that the reload of the read offset value register 4612 itself is not performed. In the example shown in FIG. 13, “(n−2 × a−1)” is set. Since all the setting values are based on the PE address, there is no need to change the setting for each “SIMD” as in the RAM control unit 46 of the first embodiment.
[0084]
According to the fourth embodiment, as in the case of the second embodiment of FIG. 11, only “0” needs to be selected as the initial load value of the PE address counter 4402 only at the time of the first transfer. When it is necessary to use the read offset function (that is, when there is a process of referencing left and right pixels such as filter processing, it is necessary to process image data in an overlapping manner for each "SIMD") Also, the processing can be performed without considering the faulty PE.
[0085]
<< 5th Embodiment >>
FIG. 17 is a schematic block diagram of the fault register unit 4408 of the memory controller 6 according to the fifth embodiment of the present invention.
[0086]
The memory controller 6 has two external write control signals for determining whether to thin out the data of the adjacent even-numbered PEs and odd-numbered PEs during the write transfer, and the adjacent even-numbered PEs during the read transfer. Two external read control signals for determining whether or not to write the same data as before when writing the data of the PEs of the number and the odd-numbered PEs are input.
[0087]
When scaling is performed in the write transfer, the thinning write signal is enabled, and the logical sum of the data selected (extracted) from the fault register and the external write control signal input from outside the memory controller 6 is used to inhibit the transfer. Output as data. When scaling is performed in the read transfer, the overlapping read signal is enabled, and the logical sum of the data selected (extracted) from the fault register and the external read control signal input from outside the memory controller 6 is transferred. Output as suppression data.
[0088]
Although not shown, the memory controller 6 has an external terminal for setting a timing to start transfer in order to synchronize with an external write control signal and an external read control signal. An external synchronization signal for starting transfer is input to the sequence unit 48, and when the synchronization signal is asserted, the sequence unit 48 starts transfer.
[0089]
According to the fifth embodiment, even if there is a faulty PE, it is possible to perform a scaling process often performed in a digital copier, a facsimile, or the like.
[0090]
The upper part of FIG. 18 illustrates a thinning-out write operation for realizing reduction among the scaling processes often performed in a digital copier or a facsimile. In the upper part of FIG. 18, the pixel data such as PE0, PE2, PE3, PE5, PE6,... Is stored in the memory 4 as it is, and the pixel data such as PE1, PE4, PE7,. Have been thinned out.
[0091]
The lower side of FIG. 18 illustrates the operation when there is a faulty PE. The figure shows a case where there is a failure in PE2, PE4, PE8,... If there is a faulty PE, the SIMD microprocessor skips the faulty PE and is reconfigured, so that the write control data is stored as shown in the figure. The image data is also stored as shown in the figure.
[0092]
Assuming that the logical sum of the write control data and the fault PE information is transfer inhibition data, the data of PE1, PE2, PE4, PE6, and PE8 is thinned out as shown in the figure, and the data stored in the memory 4 is faulty. It can be seen that the data is completely the same as the case without the data.
[0093]
The upper part of FIG. 19 illustrates an overlapping read operation for realizing enlargement, out of scaling processing often performed in a digital copier, a facsimile, or the like. In the upper part of FIG. 19, the pixel data such as PE1, PE4, PE7,... Have the same value as the data stored in the immediately preceding PEs PE0, PE3, and PE6.
[0094]
The lower side of FIG. 19 illustrates the operation when there is a faulty PE. The figure shows a case where there is a failure in PE2, PE4, PE8,... If there is a faulty PE, the SIMD microprocessor skips the faulty PE and is reconfigured, so that the read control data is stored as shown in the figure. The image data is also stored as shown in the figure.
[0095]
Assuming that the logical sum of the read control data and the fault PE information is the transfer inhibition data, the data stored in PE1, PE2, PE4, PE6, and PE8 overlap the data of the immediately preceding PE as shown in FIG. It can be seen that when there is no data, the data is exactly the same as the data stored in the register file of the PE. (Data is stored in order, skipping faulty PEs.)
[0096]
That is, according to the fifth embodiment, it can be understood that scaling can be performed correctly even if there is a faulty PE.
[0097]
【The invention's effect】
By utilizing the present invention, the following effects can be obtained.
[0098]
Diagnosis of PE failure is performed, and data transfer can be performed except for the PE that has failed. Therefore, even if there is a faulty PE, the SIMD type microprocessor can operate normally.
[0099]
Also, when performing data transfer, it is possible to specify a PE for starting data transfer or a PE for ending data transfer. Therefore, when the number of PEs is smaller than the pixel data to be processed, a data joint is considered. Data transfer can be performed. In that case, in the second and subsequent data transfers, the address of the PE that starts the transfer can be specified, so that the number of cycles required for the data transfer can be reduced.
[0100]
In the SIMD type microprocessor, it is possible to perform the scaling process of the image processing even if there is a faulty PE.
[Brief description of the drawings]
FIG. 1 is a schematic block diagram of a SIMD microprocessor, a memory, and a memory controller according to the present invention.
FIG. 2 is a block diagram of a SIMD type microprocessor according to the present invention.
FIG. 3 is a partial block diagram of the SIMD type microprocessor according to the first embodiment of the present invention.
FIG. 4 is a schematic diagram of control for a SIMD microprocessor according to the first embodiment of the present invention which is performed when a failure occurs in three PEs in front of or behind a certain PE; It is a circuit diagram.
FIG. 5 is a circuit of a T register in a portion where a failure flag is input.
FIG. 6 is a flowchart of a self-test for determining a defective flag.
FIG. 7 is a block diagram of a memory controller according to the first embodiment of the present invention.
FIG. 8 shows the case of write transfer (transfer from a PE register file to a memory) and read transfer (transfer from a memory to a PE register file) using the memory controller of the first embodiment. FIG. 4 is a schematic diagram showing how data is transferred.
FIG. 9 is a schematic block diagram of a memory controller according to the first embodiment of the present invention.
FIG. 10 is a circuit for generating transfer suppression data.
FIG. 11 is a schematic block diagram of an external interface control unit of a memory controller according to a second embodiment of the present invention.
FIG. 12 is a schematic block diagram of an external interface control unit of a memory controller according to a third embodiment of the present invention.
FIG. 13 is an explanatory diagram of a method of transferring pixel data when using a SIMD microprocessor having a smaller number of PEs than the number of pixels in the main scanning direction.
FIG. 14 is a schematic block diagram of an external interface control unit of a memory controller according to a fourth embodiment of the present invention.
FIG. 15 is a schematic block diagram of a RAM control unit of a memory controller according to a fourth embodiment of the present invention.
FIG. 16 shows a configuration of a circuit that uses a transfer inhibition control signal to stop counting up and counting down of a transfer number counter and a valid data number counter.
FIG. 17 is a schematic block diagram of a fault register unit of a memory controller according to a fifth embodiment of the present invention.
FIG. 18 is a schematic diagram of a thinning-out write operation for realizing reduction in a scaling process performed by a digital copier or a facsimile.
FIG. 19 is a schematic diagram of an overlapping read operation for realizing enlargement in a scaling process performed by a digital copier or a facsimile.
[Explanation of symbols]
2 SIMD microprocessor, 4 memory, 6 memory controller, 8 external interface, 16 register file, 20 register, 40 write buffer unit 42 read buffer unit, 44 external interface control unit, 46 RAM control unit, 48 sequence unit.

Claims (6)

複数のデータを処理するための複数のプロセッサエレメントを有するSIMD型マイクロプロセッサにおいて、
各プロセッサエレメントが内蔵する汎用レジスタに外部からアクセスするためのデータ転送用ポートに、データ転送装置が接続し、
上記データ転送装置は、各プロセッサエレメントが故障しているか否かを示す記憶部を有し、
上記データ転送装置は、その記憶部のデータの内容により、故障しているプロセッサエレメントへのデータ転送を抑止するように制御する、
SIMD型マイクロプロセッサ。
In a SIMD type microprocessor having a plurality of processor elements for processing a plurality of data,
A data transfer device is connected to a data transfer port for externally accessing a general-purpose register included in each processor element,
The data transfer device has a storage unit that indicates whether each processor element has failed,
The data transfer device controls the data transfer to the failed processor element based on the content of the data in the storage unit.
SIMD type microprocessor.
各プロセッサエレメントが正常に動作するか否かを検査するためのセルフテストが適時自動実行され、
その検査結果が上記データ転送装置の上記記憶部に自動格納される、
請求項1に記載のSIMD型マイクロプロセッサ。
A self-test for checking whether or not each processor element operates normally is automatically executed in a timely manner.
The inspection result is automatically stored in the storage unit of the data transfer device.
The SIMD type microprocessor according to claim 1.
上記データ転送装置が、
データ転送のときに転送が開始されるべきプロセッサエレメントのアドレスをデータとして設定する第1のレジスタと、
故障していないプロセッサエレメントのアドレスを発行した時にカウントアップする第1のカウンタとを含み、
上記の第1のカウンタの値が上記の第1のレジスタの値に等しくなるまで、データの転送を抑止する、
請求項1に記載のSIMD型マイクロプロセッサ。
The data transfer device is:
A first register for setting, as data, an address of a processor element from which transfer is to be started at the time of data transfer;
A first counter that counts up when an address of a processor element that has not failed has been issued,
Inhibiting data transfer until the value of the first counter is equal to the value of the first register;
The SIMD type microprocessor according to claim 1.
上記の第1のカウンタの値が上記の第1のレジスタの値に等しくなったとき、そのときのプロセッサエレメントのアドレスの値が保持され、
全プロセッサエレメントに関してデータ転送が終了したときに、上記の第1のレジスタに上記のアドレスの値を設定する、
請求項3に記載のSIMD型マイクロプロセッサ。
When the value of the first counter becomes equal to the value of the first register, the value of the address of the processor element at that time is held,
When the data transfer is completed for all processor elements, the value of the address is set in the first register.
The SIMD type microprocessor according to claim 3.
上記データ転送装置が、
データ転送のときに転送が終了されるべきプロセッサエレメントのアドレスをデータとして設定する第2のレジスタと、
故障していないプロセッサエレメントのアドレスを発行した時にカウントアップする第1のカウンタとを含み、
上記の第1のカウンタの値が上記の第2のレジスタの値に等しくなったとき、そのときの上記データ転送装置の接続する外部メモリのアドレスの値が保持され、
全プロセッサエレメントに関してデータ転送が終了したときに、上記の第2のレジスタに上記外部メモリのアドレスの値を設定する、
請求項1に記載のSIMD型マイクロプロセッサ。
The data transfer device is:
A second register for setting, as data, an address of a processor element whose transfer is to be terminated at the time of data transfer;
A first counter that counts up when an address of a processor element that has not failed has been issued,
When the value of the first counter becomes equal to the value of the second register, the value of the address of the external memory connected to the data transfer device at that time is held,
When the data transfer is completed for all processor elements, the value of the address of the external memory is set in the second register.
The SIMD type microprocessor according to claim 1.
上記データ転送装置が、別のデータ転送装置と同期を取ってデータ転送を行うように構成され、
別のデータ転送装置が転送しているデータと、各プロセッサエレメントが故障しているか否かを示す記憶部のデータとの論理和によって、
データの転送の抑止が制御される、
請求項1に記載のSIMD型マイクロプロセッサ。
The data transfer device is configured to perform data transfer in synchronization with another data transfer device,
By the logical OR of the data being transferred by another data transfer device and the data of the storage unit indicating whether or not each processor element has failed,
Suppression of data transfer is controlled,
The SIMD type microprocessor according to claim 1.
JP2003043856A 2003-02-21 2003-02-21 Simd type microprocessor capable of transferring data even when fault is occurred in pe Pending JP2004252825A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003043856A JP2004252825A (en) 2003-02-21 2003-02-21 Simd type microprocessor capable of transferring data even when fault is occurred in pe

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003043856A JP2004252825A (en) 2003-02-21 2003-02-21 Simd type microprocessor capable of transferring data even when fault is occurred in pe

Publications (1)

Publication Number Publication Date
JP2004252825A true JP2004252825A (en) 2004-09-09

Family

ID=33026739

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003043856A Pending JP2004252825A (en) 2003-02-21 2003-02-21 Simd type microprocessor capable of transferring data even when fault is occurred in pe

Country Status (1)

Country Link
JP (1) JP2004252825A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005316887A (en) * 2004-04-30 2005-11-10 Ricoh Co Ltd Microprocessor
WO2015087684A1 (en) * 2013-12-13 2015-06-18 株式会社東芝 Information processing device, information processing method, and program

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005316887A (en) * 2004-04-30 2005-11-10 Ricoh Co Ltd Microprocessor
WO2015087684A1 (en) * 2013-12-13 2015-06-18 株式会社東芝 Information processing device, information processing method, and program
JP2015115005A (en) * 2013-12-13 2015-06-22 株式会社東芝 Information processing device, information processing method and program
US9952920B2 (en) 2013-12-13 2018-04-24 Kabushiki Kaisha Toshiba Information processing device, information processing method, and program

Similar Documents

Publication Publication Date Title
JP4934356B2 (en) Video processing engine and video processing system including the same
US7430631B2 (en) Access to a wide memory
US20090044044A1 (en) Device and method for correcting errors in a system having at least two execution units having registers
JP2007041781A (en) Reconfigurable integrated circuit device
WO2001090915A2 (en) Processor array and parallel data processing methods
JP3971535B2 (en) SIMD type processor
EP0305639A2 (en) Vector computer
JP3797570B2 (en) Apparatus and method using semaphore buffer for semaphore instructions
US8060726B2 (en) SIMD microprocessor, image processing apparatus including same, and image processing method used therein
JP2004252825A (en) Simd type microprocessor capable of transferring data even when fault is occurred in pe
US6785847B1 (en) Soft error detection in high speed microprocessors
JP3821198B2 (en) Signal processing device
JP2007073010A (en) Simd processor and image processing method using the simd method processor and image processor
JP2006350907A (en) Simd type microprocessor, data transfer unit, and data conversion unit
JP4403009B2 (en) Microprocessor
JP2006155637A (en) Apparatus for processing signal
US20100088493A1 (en) Image processing device and data processor
US9129345B2 (en) Data stream processing architecture enabling extension of neighborhood mask
JP4482356B2 (en) Image processing method and image processing apparatus using SIMD processor
US20100031002A1 (en) Simd microprocessor and operation method
JP4442907B2 (en) SIMD type processor
JP2004206387A (en) Image processing method, processor, and image processor
JP2001202351A (en) Simd type processor
JP5369669B2 (en) SIMD type microprocessor
JP2006293538A (en) Calculation system