トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 SIMDプロセッサにおけるデータ設定装置
【発明者】 【氏名】片山 貴雄

【氏名】山浦 慎一

【氏名】福島 正展

【氏名】原 和彦

【氏名】中村 圭治

【氏名】岩永 和彦

【氏名】高藤 浩資

【要約】 【課題】SIMD型マイクロプロセッサを利用する処理に伴う命令の命令実行サイクル数を減らす。

【解決手段】各プロセッサエレメントは、プロセッサエレメントに含まれる算術論理演算装置の演算結果を汎用レジスタに格納する際の可否を決定する演算制御レジスタを持つ。各プロセッサエレメントにて、プロセッサエレメントに固有の数値を2進法により表記させた際の、指定された位を“0”若しくは“1”に固定させたデータを生成し、上記の各プロセッサエレメントにて生成されたデータと、命令コードにより指定された数値を全プロセッサエレメントに渡って同時に比較し、比較結果を上記演算制御レジスタに含まれるフラグに設定する。以上のようなSIMD型マイクロプロセッサを提供する。
【特許請求の範囲】
【請求項1】 SIMD型マイクロプロセッサにおいて、各々のプロセッサエレメントには、識別のための整数番号が順に付されており、各プロセッサエレメントにて上記の識別のための整数番号を汎用レジスタに格納し、更に、全てのプロセッサエレメントにて、上記の識別のための整数番号を2進法により表記させた際の、指定された位を“0”もしくは“1”に固定させて、汎用レジスタに格納する、SIMD型マイクロプロセッサ。
【請求項2】 SIMD型マイクロプロセッサにおいて、各々のプロセッサエレメントには、識別のための整数番号が順に付されており、上記の識別のための整数番号に応じて、各プロセッサエレメントにてn(nは自然数)おきに周期変動する数値を、汎用レジスタに格納する、SIMD型マイクロプロセッサ。
【請求項3】 SIMD型マイクロプロセッサにおいて、各々のプロセッサエレメントには、識別のための整数番号が順に付されており、各プロセッサエレメントにて、上記の識別のための整数番号に応じて、所定の数値を周期とする周期特性を備える複数のビットを生成して、汎用レジスタに格納し、更に、全てのプロセッサエレメントにて、上記の複数のビットの指定されたものを、“0”に置換して、汎用レジスタに格納する、SIMD型マイクロプロセッサ。
【請求項4】 SIMD型マイクロプロセッサにおいて、各プロセッサエレメントは、プロセッサエレメントに含まれる算術論理演算装置の演算結果を汎用レジスタに格納する際の可否を決定する演算制御レジスタを持ち、各々のプロセッサエレメントには、識別のための整数番号が順に付され、上記の識別のための整数番号と、命令コードにより指定された数値を全プロセッサエレメントに渡って同時に比較し、比較結果を上記演算制御レジスタに含まれるフラグに設定する、SIMD型マイクロプロセッサ。
【請求項5】 SIMD型マイクロプロセッサにおいて、各プロセッサエレメントは、プロセッサエレメントに含まれる算術論理演算装置の演算結果を汎用レジスタに格納する際の可否を決定する演算制御レジスタを持ち、各々のプロセッサエレメントには、識別のための整数番号が順に付され、各プロセッサエレメントにて、上記の識別のための整数番号を2進法により表記させた際の、指定された位を“0”若しくは“1”に固定させたデータを生成し、上記の各プロセッサエレメントにて生成されたデータと、命令コードにより指定された数値を全プロセッサエレメントに渡って同時に比較し、比較結果を上記演算制御レジスタに含まれるフラグに設定する、SIMD型マイクロプロセッサ。
【請求項6】 SIMD型マイクロプロセッサにおいて、各プロセッサエレメントは、プロセッサエレメントに含まれる算術論理演算装置の演算結果を汎用レジスタに格納する際の可否を決定する演算制御レジスタを持ち、各々のプロセッサエレメントには、識別のための整数番号が順に付され、上記の識別のための整数番号に応じて、各プロセッサエレメントにてn(nは自然数)おきに周期変動する数値を生成し、上記の各プロセッサエレメントにて生成される周期変動する数値と、命令コードにより指定された数値を全プロセッサエレメントに渡って同時に比較し、比較結果を上記演算制御レジスタに含まれるフラグに設定する、SIMD型マイクロプロセッサ。
【請求項7】 SIMD型マイクロプロセッサにおいて、各プロセッサエレメントは、プロセッサエレメントに含まれる算術論理演算装置の演算結果を汎用レジスタに格納する際の可否を決定する演算制御レジスタを持ち、各々のプロセッサエレメントには、識別のための整数番号が順に付され、各プロセッサエレメントにて、上記の識別のための整数番号に応じて、所定の数値を周期とする周期特性を備える複数のビットを生成の上、更に指定されたものを“0”に置換したデータを生成し、上記の各プロセッサエレメントにて生成されるデータと、命令コードにより指定された数値を全プロセッサエレメントに渡って同時に比較し、比較結果を上記演算制御レジスタに含まれるフラグに設定する、SIMD型マイクロプロセッサ。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、画像データ等を高速処理するために同一の命令で複数データに対して同じ処理を行うSIMD(Single Instruction−stream Multiple Data−stream)型マイクロプロセッサに関する。
【0002】
【従来の技術】近年、デジタル複写機やファクシミリ装置等の画像処理においては、画素数の増加、画像処理の多様化などにより画質の向上が図られている。このような画像処理では、複数(多数)のデータに対して同時に同じ処理を施すことが多い。その際、高速性を高めるため、1命令で1つのデータを処理するSISD(Single Instruction−stream Single Data−stream)型マイクロプロセッサよりも、1命令で複数のデータを同時処理する、SIMD(Single Instruction−stream Multiple Data−stream)型マイクロプロセッサが用いられることが多い。
【0003】図1は、一般的なSIMD型マイクロプロセッサ2の概略の構成を示すブロック図である。該SIMD型マイクロプロセッサ2は、概略、グローバルプロセッサ(以下では、GPと言う。)4、及びプロセッサエレメント3により構成されるのであるが、複数のデータを一度に処理するためにプロセッサエレメント3を複数個装備している。各プロセッサエレメント3は、レジスタファイル6と演算アレイ8を備える。GP4は、プロセッサ2全体の制御を行ない、プロセッサエレメント3は、外部入出力装置からデータを入力しデータ処理を行ない、外部入出力装置に出力する。
【0004】上記のSIMD型マイクロプロセッサ2は、通常、1クロックサイクルで1命令を処理するが、1命令でプロセッサエレメント3の個数分のデータを一度に処理することができる。SIMD型マイクロプロセッサ2の性能を表す際には、SIMD型マイクロプロセッサ2の動作周波数や、プロセッサエレメント3の個数、即ち1命令で処理できるデータの数などが重要視されるが、更に、命令サイクル数も重要な要素とされる。つまり、同じ画像処理を行う限り1命令サイクルでも少ないほうが性能がよいとされるのである。しかし、1命令で複雑な処理を行うために、複雑な回路を設計・利用するならば、どうしてもコストが増大する。
【0005】
【発明が解決しようとする課題】本発明は、有効な命令と命令を実現する簡素な手段を設けることにより、上記のような画像データ処理に伴う命令の命令実行サイクル数を減らすことを目的とする。
【0006】
【課題を解決するための手段】本発明は、上記の目的を達成するためになされたものである。本発明に係る請求項1に記載のSIMD型マイクロプロセッサは、各々のプロセッサエレメントには、識別のための整数番号が順に付されており、各プロセッサエレメントにて上記の識別のための整数番号を汎用レジスタに格納し、更に、全てのプロセッサエレメントにて、上記の識別のための整数番号を2進法により表記させた際の、指定された位を“0”もしくは“1”に固定させて、汎用レジスタに格納する、SIMD型マイクロプロセッサである。
【0007】本発明に係る請求項2に記載のSIMD型マイクロプロセッサは、各々のプロセッサエレメントには、識別のための整数番号が順に付されており、上記の識別のための整数番号に応じて、各プロセッサエレメントにてn(nは自然数)おきに周期変動する数値を、汎用レジスタに格納する、SIMD型マイクロプロセッサである。
【0008】本発明に係る請求項3に記載のSIMD型マイクロプロセッサは、各々のプロセッサエレメントには、識別のための整数番号が順に付されており、各プロセッサエレメントにて、上記の識別のための整数番号に応じて、所定の数値を周期とする周期特性を備える複数のビットを生成して、汎用レジスタに格納し、更に、全てのプロセッサエレメントにて、上記の複数のビットの指定されたものを、“0”に置換して、汎用レジスタに格納する、SIMD型マイクロプロセッサである。
【0009】本発明に係る請求項4に記載のSIMD型マイクロプロセッサは、各プロセッサエレメントは、プロセッサエレメントに含まれる算術論理演算装置の演算結果を汎用レジスタに格納する際の可否を決定する演算制御レジスタを持ち、各々のプロセッサエレメントには、識別のための整数番号が順に付され、上記の識別のための整数番号と、命令コードにより指定された数値を全プロセッサエレメントに渡って同時に比較し、比較結果を上記演算制御レジスタに含まれるフラグに設定する、SIMD型マイクロプロセッサである。
【0010】本発明に係る請求項5に記載のSIMD型マイクロプロセッサは、各プロセッサエレメントは、プロセッサエレメントに含まれる算術論理演算装置の演算結果を汎用レジスタに格納する際の可否を決定する演算制御レジスタを持ち、各々のプロセッサエレメントには、識別のための整数番号が順に付され、各プロセッサエレメントにて、上記の識別のための整数番号を2進法により表記させた際の、指定された位を“0”若しくは“1”に固定させたデータを生成し、上記の各プロセッサエレメントにて生成されたデータと、命令コードにより指定された数値を全プロセッサエレメントに渡って同時に比較し、比較結果を上記演算制御レジスタに含まれるフラグに設定する、SIMD型マイクロプロセッサである。
【0011】本発明に係る請求項6に記載のSIMD型マイクロプロセッサは、各プロセッサエレメントは、プロセッサエレメントに含まれる算術論理演算装置の演算結果を汎用レジスタに格納する際の可否を決定する演算制御レジスタを持ち、各々のプロセッサエレメントには、識別のための整数番号が順に付され、上記の識別のための整数番号に応じて、各プロセッサエレメントにてn(nは自然数)おきに周期変動する数値を生成し、上記の各プロセッサエレメントにて生成される周期変動する数値と、命令コードにより指定された数値を全プロセッサエレメントに渡って同時に比較し、比較結果を上記演算制御レジスタに含まれるフラグに設定する、SIMD型マイクロプロセッサである。
【0012】本発明に係る請求項7に記載のSIMD型マイクロプロセッサは、各プロセッサエレメントは、プロセッサエレメントに含まれる算術論理演算装置の演算結果を汎用レジスタに格納する際の可否を決定する演算制御レジスタを持ち、各々のプロセッサエレメントには、識別のための整数番号が順に付され、各プロセッサエレメントにて、上記の識別のための整数番号に応じて、所定の数値を周期とする周期特性を備える複数のビットを生成の上、更に指定されたものを“0”に置換したデータを生成し、上記の各プロセッサエレメントにて生成されるデータと、命令コードにより指定された数値を全プロセッサエレメントに渡って同時に比較し、比較結果を上記演算制御レジスタに含まれるフラグに設定する、SIMD型マイクロプロセッサである。
【0013】
【発明の実施の形態】以下、図面を参照して本発明に係る好適な実施の形態を説明する。
【0014】図1は、本発明を含む一般的なSIMD型マイクロプロセッサ2の概略の構成を示すブロック図である。主としてプロセッサ2全体を制御するグローバルプロセッサ(以下、GPと言う。)4と、主として外部入出力装置からデータを入力しデータ処理を行い、外部入出力装置にデータを出力するプロセッサエレメント3とから、構成される。プロセッサエレメント3は、複数データを同時に処理するために複数用意されている。図1では、1個のGP4と、256個のプロセッサエレメント3とにより、SIMD型マイクロプロセッサ2が構成されている。
【0015】図2は、本発明に係るSIMD型マイクロプロセッサ2のより詳細な構成を示すブロック図である。図に示されるようにGP4は、・命令コードで構成されるプログラムを格納するためのプログラムRAM10と、・GP4での演算データを格納するデータRAM12と、・プログラムを解読し各種ブロックに各種制御信号を送るシーケンシャルユニット(SCU)9と、・データを格納する複数の汎用レジスタ(G0〜G3)と、・SCU9にプログラムの命令コードを送るためにプログラムのアドレスを保持するプログラムカウンタ(PC)14と、・データメモリにスタックを形成するためデータメモリのアドレスを格納するスタックポインタ(SP)24と、・プログラムの途中でサブルーチン処理を行う際には分岐が発生するが分岐前のアドレスを格納する複数のリンクレジスタ(LS、LI、LN)と、・データメモリのデータ、命令コード中に記述された数値(即値)データ、若しくは汎用レジスタに格納されているデータのいずれかの組み合わせで算術論理演算を行う算術論理演算装置(ALU)11と、・プロセッサの状態を保持するプロセッサステータスレジスタ(図示せず。)と、・ハードウェア割り込みとソフトウェア割り込みを制御する割り込み制御回路(図示せず。)と、・外部入出力に直接接続され外部からのデータの入出力を制御する外部I/O制御回路(図示せず。)とを含む。
【0016】図2では示していないが、上記SCU9は、GP命令を解読し主にGP内の各ブロックに制御信号を発生するGPインストラクションデコーダと、プロセッサエレメント命令を解読し主にプロセッサエレメント内の各ブロックに制御信号を発生するプロセッサエレメントインストラクションデコーダとで、構成される。即ち、本プロセッサに係る命令コードは、主にGP4内の各ブロックを制御し、プログラムのシーケンスを決定したり、プロセッサエレメント3に転送する共通データをGP4内のALU11で加工したりするGP命令と、外部入出力から一度に入力されたデータをプロセッサエレメント3毎に処理をさせるプロセッサエレメント命令とに、分類される。
【0017】図1に示すように、各プロセッサエレメント3は、外部からの入出力データを一時的に保持するレジスタファイル6と、プロセッサエレメント3内で算術論理演算やビット演算のデータ処理を行うための演算アレイ8を含む。さらに図2に示すようにレジスタファイル6には、例えば、R0〜R31までの8ビットのレジスタ34が32本用意されている。これらのレジスタ34からデータが演算アレイ8に転送され、又逆に演算アレイ8からデータが転送されてレジスタ34に格納される。レジスタ34と演算アレイ6とのバスは、8ビットの双方向バスである。
【0018】更に図2に示すように、単体の演算アレイ8は演算ユニットであり、・レジスタファイル6からのデータをシフトして符号付き拡張もしくは符号無し拡張をし16ビットデータに加工するシフト・拡張器44と、・例えば、Aレジスタ36とFレジスタ40のような複数の汎用レジスタと、・レジスタファイル6からのデータをシフト・拡張器44を経由して加工し1入力とし、他方の入力をAレジスタ36からの入力とする算術論理演算装置(ALU)36と、・(後で説明する)本発明に係るPE番号マスク回路、固定値選択回路、及びnおきビットパターンデータ出力回路の夫々からの出力を入力とし、自らの出力をAレジスタ38やTレジスタ54に繋げる選択回路35とを含む。算術論理演算装置(ALU)36の出力は、Aレジスタ36もしくはFレジスタ40に一時格納されように設定されているが、Aレジスタ36からレジスタファイル6の所定の1レジスタ34にデータ転送されることも可能である。
【0019】また、演算アレイ8は、後でも説明するように、「Tレジスタ」と呼ばれる演算制御レジスタ54を備える。ALU36からの出力は、該Tレジスタ54によって、Aレジスタ36もしくはFレジスタ40への書き込み内容が制御される。例えば、演算制御レジスタ(Tレジスタ)54の中の所定の1ビットの状態に応じて、“1”あればAレジスタ36もしくはFレジスタ54への書き込みを行い、“0”であれば行わないというような制御が行なわれる。
【0020】図3は、レジスタファイル6のレジスタ34と演算アレイ8とを結び付けるマルチプレクサの機能を示すブロック図である。PEi(i=0,1,2,・・・255)のプロセッサエレメントに備わるマルチプレクサは7to1(7対1)のマルチプレクサであり、PEi−3(PEiの3つ左隣り)、PEi−2(PEiの2つ左隣り)、PEi−1(PEiの1つ左隣り)、PEi、PEi+1(PEiの1つ右隣り)、PEi+2(PEiの2つ右隣り)、PEi+3(PEiの3つ右隣り)のプロセッサエレメント3のレジスタファイル6からのデータを入出力することができるように設定されている。この機能を、PEシフト機能と称する。マルチプレクサによって選択されたデータは、演算アレイ8のシフト・拡張部44に転送される。
【0021】ここで、プロセッサエレメント3の番号を含む呼称について定義する。図2に示すように、本発明に係るSIMD型マイクロプロセッサ2には256個のプロセッサエレメント3が設置されており、それらプロセッサエレメント3の個々に対し、(図では左側から)PE0、PE1、PE2、PE3、・・・、PE254、PE255というように、プロセッサエレメント番号(PE番号)を付すと定義する。
【0022】≪第1の実施の形態≫図4は、本発明の第1の実施の形態に係るPE(プロセッサエレメント)番号マスク回路の回路図である。上記PE番号マスク回路は、(従来技術である)PE番号を所定の汎用レジスタに入力する接続線に対し、GP4からのマスク制御信号(即ち、PE番号マスク信号)を取り入れる論理回路を挿入することにより形成される。後でも説明するように、この図4の回路構成では、“0”によりマスクすることになる。
【0023】各PEi(i=0,1,2,・・・255)においては、各PE番号を形成する接続線部50とPE番号マスク信号を取り込む論理回路(AND回路)部51とが結合して設置されている。そこからの出力は、後で説明するように、各プロセッサエレメント3毎に設置されている選択回路35(図2参照)に繋がる。その選択回路35を介して例えばAレジスタ38にて上記出力が格納される。
【0024】(従来技術である)各PE番号を形成する接続線部50を利用して、Aレジスタ38にPE番号を設定することは従来も可能であった。例えば、「LDPN」(Load PE Number)という命令を実行することにより、上記機能を実現していたとする。ここで、本発明の第1の実施の形態に係る回路によっても、全く同じ機能を実現すること、即ち各PE番号を各選択回路35に送ることを「LDPN」の命令の利用によって実現するように設定することができる。なお、図4からも明白なように、LDPN命令を用いるときのPE番号マスク信号は(8ビット)すべて“1”となる。このような設定により、VCCとGNDとで形成されるパターンでPE番号を表すデータが、各プロセッサエレメント3の選択回路35に入力されることになる。
【0025】具体的に示すと、選択回路35に入力されるデータは、・PE0、PE1、PE2、・・・PE255の順に、・0、1、2、・・・255の値となる。
【0026】更に、本発明の第1の実施の形態に係る回路においては、SIMD型マイクロプロセッサ2への命令にて指定するビットを“0”に設定することにより、入力データをマスクすることができる。そのような処理を行なう命令として、「LDNM」(Load PE Number Masking)命令が用意されている。LDNM命令は、マスクパターンを即値で指定することで出力データをマスクする。その即値はPEマスク信号として図4の回路に取り込まれる。LDNM命令は、次のように、記述される。
【0027】
LDNM/0 #00000011b【0028】上記の記述で「00000011b」の末尾のbは、2進数表記であることを示す。上記の命令では、PE番号のビット3からビット7までの出力値に対しマスクが施されることになる。また、“/0”は、“0”によるマスクを表すオプション記述である。
【0029】よって、各選択回路35に入力されるデータは、・PE0、PE1、PE2、PE3、PE4、PE5、PE6、・・・PE254、PE255の順に、・0、1、2、3、0、1、2、・・・2、3の値となる。
【0030】図4の第1の実施の形態にかかる回路では、AND回路が利用されているが、これをOR回路に置き換えることも想定され得る。即ち、各PEi(i=0,1,2,・・・255)において、各PE番号を形成する接続線部50とPE番号マスク信号を取り込む論理回路(OR回路)部(図示せず。)とが結合して設置されることになる。このとき、上記(図4)の回路構成では“0”によりマスクをしていたが、OR回路に置き換える回路の場合、“1”によるマスクとなる。命令は以下のように記述される。
【0031】
LDNM/1 #11111100b【0032】上記の記述では、PE番号のビット3からビット7までの入力値が、“1”でマスクされることになる。/1は“1”によるマスクを表すオプション記述である。
【0033】このとき、各選択回路35に入力されるデータは、・PE0、PE1、PE2、PE3、PE4、PE5、PE6、・・・PE254、PE255の順に、・252(11111100b)、253(11111101b)、254(11111110b)、255(11111111b)、252、253、254、・・・254、255の値となる。
【0034】図4に示される本発明の第1の実施の形態に係る回路を利用することにより、マスク制御信号(PE番号マスク信号)にて“0”であるビットに対応する制御線がマスクされ、所定のビットのみで表され且つ繰り返しの規則性を備えるデータを、1命令で設定(形成)することができる。例えば、上位6ビットを全てマスクすることにより、下位2ビットのみが有効となり、PE0、PE1、PE2、PE3、PE4、PE5、PE6、・・・のプロセッサエレメント3の各選択回路35に対し、・0、1、2、3、0、1、2、3、・・・の規則性のある繰り返しの値を1命令で出力することができる。また、図4の回路において、AND回路を全てOR回路にすることによっても、PE0、PE1、PE2、PE3、PE4、PE5、PE6、・・・のプロセッサエレメント3の各選択回路35に対し、規則性のある繰り返しの値を1命令で出力することができる。但し、このときは“1”によりマスクがなされることになる。
【0035】従来技術を利用する場合、LDPN命令でPE番号を一旦Aレジスタ38に設定し、更にそのAレジスタ38の値を4で割ったときの剰余を同じくAレジスタ38に設定すれば、図4と同様の結果が得られる。しかし、・LDPN命令で1命令サイクル、・(乗除算器があると仮定して、)除算命令で1命令サイクル、計2命令サイクルが必要である。然も、乗除算器をSIMD型マイクロプロセッサ2の全プロセッサエレメント3内に設定するならば、莫大な回路規模が必要となる。通常のSIMD型マイクロプロセッサ2には乗除算器は設定されてないため、除算の実施は、ALU36を利用して被除数のビット数の分までの減算を行なうことで実現される。汎用レジスタであるAレジスタ38は、例えば16ビットであるならば、最短16回の減算が必要となる(現実には除算前の設定が数命令サイクル必要になる)。ここで16命令サイクルかかり、結局、全体で最短18命令サイクルとなる。
【0036】以上、明白なように、本発明の第1の実施の形態に係る回路によって、相当数の命令サイクルの削減が行なえる。
【0037】≪第2の実施の形態≫図5は、本発明の第2の実施の形態に係る固定値選択回路の回路図である。上記固定値選択回路は、n(nは自然数)おきの周期変動を備え1周期内では単調に0から1ずつ増加する数値を、(後で説明する)選択回路35に対し、入力値選択信号による選択制御の下、出力する回路である。図5に示される回路では、nの値として、3、5、7が想定されている。
【0038】図5に示されるように、各プロセッサエレメント3においては、各別の接続線部50’とマルチプレクサ部51’が備わる。接続線部50’は、9ビットの信号を生成するのであるが、左方2ビットは「3」おきの周期変動を備え、中位3ビットは「5」おきの周期変動を備え、右方4ビットは「7」おきの周期変動を備えるように、接続線が設定されている。図5から明白なように、3おきの周期変動は、・PE0、PE1、PE2、PE3、PE4、PE5、PE6、・・・の順に、・0、1、2、0、1、2、0、・・・となる。5おきの周期変動は、・PE0、PE1、PE2、PE3、PE4、PE5、PE6、...の順に、・0、1、2、3、4、0、1、・・・となる。7おきの周期変動は、・PE0、PE1、PE2、PE3、PE4、PE5、PE6、PE7、PE8、・・・の順に、・0、1、2、3、4、5、6、0、1、・・・となる。
【0039】どの周期変動の出力を選択するかは、入力値選択信号により与えられる。該入力値選択信号は、各プロセッサエレメント3におけるマルチプレクサ部51’に指示を与えるものである。上記の周期変動の抽出に係る命令として、次の命令「LDRN」(Load Repeating Number)が設定されている。
【0040】LDRN #3【0041】上記の命令では、各プロセッサエレメント3の選択回路35に対し、3おきの周期変動を備え1周期内では単調に0から2まで1ずつ増加する数値が、プロセッサエレメント3の有するPE番号の順に従い、出力されることになる。
【0042】図5に示される本発明の第2の実施の形態に係る固定値選択回路を利用すれば、上記のような、選択回路35(Aレジスタ38)への数値入力を、1命令サイクルで行なうことができる。ここで、上記の例に示される3、5、7という数字は、一般的に、画像処理において頻繁に使用される値であることが知られている。
【0043】≪第3の実施の形態≫図6は、本発明の第3の実施の形態に係るnおきビットパターンデータ出力回路の回路図である。上記nおきビットパターンデータ出力回路は、個別のビットにおいて(PE番号の順に従い)nおきに“1”を設定する接続線に対し、GP4からのビットマスク信号を取り入れる論理回路を挿入することにより形成される。
【0044】各PEi(i=0,1,2,・・・255)においては、夫々のビットにおいてnおきの“1”を設定する接続線部50”とビットマスク信号を取り込む論理回路(AND回路)部51”が結合して設置されている。そこからの出力は、第1の実施の形態に係る回路、及び第2の実施の形態に係る回路と同様に、各プロセッサエレメント3に設置されている選択回路35(図2参照)に繋がる。その選択回路35を介して例えばAレジスタ38にて上記出力が格納される。
【0045】各PEiの接続線部50”は、8ビットの個別ビットを備える。例えば、ビット0は「2おき」、ビット1は「3おき」、ビット2は「5おき」、ビット3は「7おき」、ビット4は「11おき」、ビット5は「13おき」、ビット6は「17おき」、及びビット7は「23おき」の周期特性を備えている。夫々のビットにおいて各周期特性に相当するPE番号であれば、該ビットが“1”となるように、各PEiの接続線部50”が設定されている(即ち、該当するビットがVCCに接続されている)(図6)。即ち、・2おきの周期特性を有するビット0は、PE0、PE2、PE4、PE6、PE8、・・・において、・3おきの周期特性を有するビット1は、PE0、PE3、PE6、PE9、PE12、・・・において、・5おきの周期特性を有するビット2は、PE0、PE5、PE10、PE15、PE20、・・・においてVCCに接続されている。
【0046】上記のように設定される各PEiの接続線部50”の設定内容の抽出に係る命令として、次の命令「LDRB」(Load Repeating Bit)が用意されている。
【0047】LDRB【0048】この命令により、各PEiの接続線部50”の設定内容が全て、例えば、選択回路35(乃至Aレジスタ38)に入力される。上記の命令では、・PE0、PE1、PE2、PE3、PE4、PE5、PE6、PE7、PE8、PE9、PE10、PE11、・・・の順に、・11111111b(2進数表記。以下同様である。)、00000000b、00000001b、00000010b、00000001b、00000100b、00000011b、00001000b、00000001b、00000110b、00000001b、・・・となる。
【0049】但し、上述したように、上記接続線に対し、GP4からのビットマスク信号を取り入れる論理回路が挿入されているため、命令コードにおいて指定するビットが“0”に設定されることにより、選択回路35(乃至Aレジスタ38)への入力データがマスクされ得る。そのマスク処理を行なうときには、命令は次のように記述される。マスクパターンは、即値で指定されてビットマスク信号として図6の回路に取り込まれ、選択回路35(乃至Aレジスタ38)への入力データをマスクする。
【0050】
LDRB/0 #00000100b【0051】上記の命令では、ビット2に“1”が設定されるPEに係る出力データのみ“00000100b”の数値となる。“00000100b”が、例えばAレジスタ38に設定されるのは、・PE0、PE5、PE10、PE15、PE20、...である。それ以外のPEにおいては、“00000000b”となる。
【0052】第3の実施の形態に係るnおきビットパターンデータ出力回路では、上記のような選択回路35(Aレジスタ38)への数値入力を、1命令サイクルで行なうことができる。
【0053】≪第4の実施の形態≫本発明の第4の実施の形態に係るSIMD型マイクロプロセッサ2について説明する。
【0054】本発明の第1の実施の形態に係る「LDPM」命令において、即値(PE番号マスク信号)をすべてマスクしない数値(#11111111b)とした場合、PE番号がそのまま選択回路35(乃至Aレジスタ38)に入力される。また、前に説明したように、GP4からのPE番号マスク信号を取り入れる論理回路が挿入されない、PE番号を所定の汎用レジスタ等に入力する接続線を、そのまま利用することによっても、PE番号がそのまま選択回路35(乃至Aレジスタ38)に入力される。
【0055】従って、選択回路35には、・PE0、PE1、PE2、・・・PE255の順に、・0、1、2、...255の値が入力される。
【0056】各プロセッサエレメント3において、上記の選択回路35に入力された値を、選択回路35に備わるコンパレータ80(図7)にて(SIMD型マイクロプロセッサ2への)命令で指定された即値と比較し、その結果をTレジスタ(演算制御レジスタ)54の所定の位置のビットに格納する。このTレジスタ54への結果格納により、次命令以降の演算にて、256個あるプロセッサエレメント3のうち特定の1つのプロセッサエレメント3においてのみ演算を行ない、その他のプロセッサエレメント3の演算を行なわないという設定をすることができる。
【0057】図7は、本発明に係る選択回路35の概略回路ブロック図を示す。図4、図5及び図6の、PE番号マスク回路、固定値選択回路及びnおきビットパターンデータ出力回路からの出力データは、図2に示す演算アレイ8内の選択回路35に繋がる。GP4からの制御信号である入力データ選択信号2によってマルチプレクサ78にて選択され、3者のうちいずれか1データがAレジスタ38に入力される。また、選択された1データは、命令コード中の即値データIMM2とコンパレータ80にて比較され、その結果一致した場合には “1”を出力する。一致しなかった場合“0”を出力する。
【0058】ここで、本発明に係るTレジスタ54について説明する。図2のように、各プロセッサエレメント3には、実行条件指定のための演算制御レジスタ(Tレジスタ)54が装備されている。図8は、Tレジスタ54の回路ブロック図の例である。図8では、Tレジスタ54は8ビットのレジスタ(T0、T1、・・・T7)を備え、夫々の1ビットのレジスタは別々に制御される。そのため、1つのプロセッサエレメント3にて8通りの制御パターンを保持できる。
【0059】Tレジスタ54における夫々のビットは、各プロセッサエレメント3の演算実行の無効/有効の制御を行ない、特定のプロセッサエレメント3だけを演算対象として選択するという制御を行なうことができる。例えば、次のような命令が想定される。
【0060】ADD/T1 #12【0061】この命令は加算命令であり、Aレジスタ38の値と即値“12”とが加算されて結果がAレジスタ38に格納される。この命令において、“/T1”という実行制御オプションを記述することにより、Tレジスタ38のうちT1の(ビット)フラグの値が“1”であるプロセッサエレメント3のみ、Aレジスタ38へのALU36からのデータの格納が行なわれる。T1フラグが“0”であるプロセッサエレメント3のAレジスタ54へのデータの格納は行なわれない。
【0062】図8の例では、このTレジスタ54への入力へは、・PE3内の演算ユニット6のALU36にて発生したオーバーフローフラグ(V)、キャリーフラグ(C)からの入力、・全Tフラグへの即値IMM2によるマスク操作の結果に対する、OR操作の結果からの入力、・図2に示される記憶手段2からの入力、・図7の選択回路35でのコンパレータ80出力からの入力などである。
【0063】以上説明した本発明の第4の実施の形態に係るSIMD型マイクロプロセッサ2によれば、特定のPE番号のプロセッサエレメント3のみ演算を行なわせるという処理を、少ない命令数で行なうことができる。従来の技術であれば、全プロセッサエレメント3のTレジスタ54に対し先ず“0”を設定し、更に、演算を行なうプロセッサエレメント3のTレジスタ54に“1”を設定することにより、上記の機能は実現されるが、本発明の第4の実施の形態に比べて命令数は必然的に増加してしまう。
【0064】≪第5の実施の形態≫本発明の第5の実施の形態に係るSIMD型マイクロプロセッサ2について説明する。
【0065】第5の実施の形態に係るSIMD型マイクロプロセッサ2の各プロセッサエレメント3においては、第1の実施の形態に係るPE番号マスク回路から選択回路35に繋げられる(データ)値を、選択回路35に備わるコンパレータ80(図7)にて、命令コード中に指定された即値データと比較し、その結果をTレジスタ54の所定の位置のビットに格納する。このTレジスタ54への結果格納により、次命令以降の演算にて、「2のべき乗」おきのPE番号を備えるプロセッサエレメント3のみの演算を実行させるという制御を行うことができる。
【0066】図4に示されるPE番号マスク回路の出力は図7の選択回路35に入力され、該選択回路35では(予め用意されている)「LDTM」(Load to Tregister Masked PE Number)命令を実行することで、入力データ選択信号2によりそのPE番号マスク回路の出力のデータが選択される。更に、上記LDTM命令の実行時に、即値データ(の1つ)がIMM2に入力され、PE番号マスク回路の出力データとIMM2とがコンパレータ80にて比較される。一致するとそのプロセッサエレメント3のコンパレータ80の出力が“1”となり、一致しなかったプロセッサエレメント3では“0”となる。次の命令は、実行される命令の例である。
【0067】
LDTM/T2 #00000011b、#1【0068】上記命令において、即値オペランドのうち第1オペランドがマスクパターンである。第2オペランドが比較値である。但し、マスクパターンは2進数表記、比較値は10進表記としている。
・PE0、PE1、PE2、PE3、PE4、PE5、PE6、PE7、・・・にマスクした結果の値は、・0、1、2、3、0、1、2、3、・・・のような繰り返しの値となるが、比較値と一致する値のPE、即ち、・PE1、PE5、PE9、・・・のTレジスタ54のT2フラグに“1”が設定される。他のPEのTレジスタ54のT2フラグには“0”が設定される。これによって以降の命令でTレジスタ54のT2フラグを実行制御に用いれば、特定のPE、即ちPE1から始まり「22」おきのPE番号を備えるプロセッサエレメント3のみの演算を実行させることができる。
【0069】≪第6の実施の形態≫本発明の第6の実施の形態に係るSIMD型マイクロプロセッサ2について説明する。
【0070】第6の実施の形態に係るSIMD型マイクロプロセッサ2の各プロセッサエレメント3においては、第2の実施の形態に係る固定値選択回路から選択回路35に繋げられる(データ)値を、選択回路35に備わるコンパレータ80(図7)にて、命令コード中に指定された即値データと比較し、その結果をTレジスタ54の所定の位置のビットに格納する。このTレジスタ54への結果格納により、次命令以降の演算にて、3、5、7のような特定の数値おきのPE番号を備えるプロセッサエレメント3のみの演算を実行させるという制御を行うことができる。
【0071】図5に示される固定値選択回路の出力は図7の選択回路に入力され、該選択回路35では(予め用意されている)「LDTN」(Load to T register Predefined Number)命令を実行することで、入力データ選択信号2によりその固定値選択回路の出力データが選択される。更に、上記LDTN実行時に、即値データ(の1つ)がIMM2に入力され、固定値選択回路の出力データとIMM2とがコンパレータ80にて比較される。一致するとそのプロセッサエレメント3のコンパレータ80の出力が“1”となり、一致しなかったプロセッサエレメント3では“0”となる。次の命令は、実行される命令の例である。
【0072】LDTN/T2 #3、#2【0073】上記命令において、即値オペランドのうち第1オペランドが選択固定値である。第2オペランドが比較値である。
・PE0、PE1、PE2、PE3、PE4、PE5、PE6、PE7、・・・に結果の値は、・0、1、2、0、1、2、0、1、...のような繰り返しの値となるが、比較値と一致する値のPE、即ち、・PE2、PE5、PE8、・・・のTレジスタ54のT2フラグに“1”が設定される。他のPEのTレジスタ54のT2フラグには“0”が設定される。これによって以降の命令でTレジスタ54のT2フラグを実行制御に用いれば、特定のPE、即ちPE2から始まり「3」おきのPE番号を備えるプロセッサエレメント3のみの演算を実行させることができる。
【0074】≪第7の実施の形態≫本発明の第7の実施の形態に係るSIMD型マイクロプロセッサ2について説明する。
【0075】第7の実施の形態に係るSIMD型マイクロプロセッサ2の各プロセッサエレメント3においては、第3の実施の形態に係るnおきビットパターンデータ出力回路から選択回路35に繋げられる(データ)値を、選択回路35に備わるコンパレータ80(図7)にて、命令コード中に指定された即値データと比較し、その結果をTレジスタ54の所定の位置のビットに格納する。このTレジスタ54への結果格納により、次命令以降の演算にて、2、3、5、7、11のような特定の数値おきのPE番号を備えるプロセッサエレメント3のみの演算を実行させるという制御を行うことができる。
【0076】図6に示されるnおきビットパターンデータ出力回路の出力は図7の選択回路35に出力され、該選択回路35では(予め用意されている)「LDTB」(Load to T register Bit Number)命令を実行することで、入力データ選択信号2によりそのnおきビットパターンデータ出力回路の出力のデータが選択される。更に、上記LDTB命令の実行時に、即値データ(の1つ)がIMM2に入力され、nおきビットパターンデータ出力回路の出力データとIMM2とがコンパレータ80にて比較される。一致するとそのプロセッサエレメント3のコンパレータの出力が“1”となり、一致しなかったプロセッサエレメント3では“0”となる。次の命令は、実行される命令の例である。
【0077】
LDTB/T2 #00000010b、#1【0078】上記命令において、即値オペランドのうち第1オペランドがnおきビット指定である。第2オペランドが比較値である。
・PE0、PE1、PE2、PE3、PE4、PE5、PE6、PE7、・・・に結果の値は、・1、0、0、1、0、0、1、0、...のような繰り返しの値となるが、比較値と一致する値のPE、即ち、・PE0、PE3、PE6、・・・のTレジスタ54のT2フラグに“1”が設定される。他のPEのTレジスタ54のT2フラグには“0”が設定される。これによって以降の命令でTレジスタ54のT2フラグを実行制御に用いれば、特定のPE、即ちPE0から始まり「3」おきのPE番号を備えるプロセッサエレメント3のみの演算を実行させることができる。
【0079】
【発明の効果】本発明を利用することにより、特に、画像データ処理に伴う命令の命令実行サイクル数を減らすことができる。そのために増設の必要な回路は、簡素なものであるに過ぎない。
【出願人】 【識別番号】000006747
【氏名又は名称】株式会社リコー
【出願日】 平成12年9月28日(2000.9.28)
【代理人】 【識別番号】100062144
【弁理士】
【氏名又は名称】青山 葆 (外1名)
【公開番号】 特開2002−108832(P2002−108832A)
【公開日】 平成14年4月12日(2002.4.12)
【出願番号】 特願2000−297115(P2000−297115)