JP3895267B2 - Simdプロセッサ - Google Patents
Simdプロセッサ Download PDFInfo
- Publication number
- JP3895267B2 JP3895267B2 JP2002352776A JP2002352776A JP3895267B2 JP 3895267 B2 JP3895267 B2 JP 3895267B2 JP 2002352776 A JP2002352776 A JP 2002352776A JP 2002352776 A JP2002352776 A JP 2002352776A JP 3895267 B2 JP3895267 B2 JP 3895267B2
- Authority
- JP
- Japan
- Prior art keywords
- processor
- register
- flag
- global
- simd
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Image Processing (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Description
【発明の属する技術分野】
本発明は、SIMDプロセッサに関し、詳細には、複数処理を実行可能なSIMDプロセッサに関する。
【0002】
【従来の技術】
【特許文献1】
WO96/29646号公報
【特許文献2】
特許第2647315号公報
【特許文献3】
特開平6−35877号公報
【特許文献4】
特開平7−271969号公報
デジタル複写機やファクシミリ等の画像処理装置においては、画素数の増加、画像処理の多様化等により、大量データの高速処理が求められている。
【0003】
そして、この画像処理等においては、SIMD(Single Instruction-stream Multiple Data-stream)方式のプロセッサが用いられることが多く、SIMD方式のプロセッサの特徴は、少ない命令数で大量のデータを処理することができる点にある。
【0004】
SIMD方式のプロセッサ(以下、SIMDプロセッサ)は、一般的に、複数の算術論理演算器(ALU)の集合体である演算アレイと、データの格納を行う複数のレジスタの集合体であるレジスタファイルを備えたプロセッサエレメント(PE)と、を有するブロックと、プログラムを解析し、プログラムの構造化処理(逐次処理、分岐処理、繰り返し処理等のプログラム処理)やプロセッサエレメントの制御やプロセッサエレメントとのデータの入出力等を行うグローバルプロセッサ(GP)と、で構成されている。SIMDプロセッサは、レジスタファイルにポートを設け、外部入出力からデータをレジスタファイルにリードし、また、ライトする。
【0005】
このSIMDプロセッサを利用してデジタル複写機で画像処理を行う場合、CCD等の外部入力装置から取り入れられた画像データが、SIMDプロセッサの外側でいくつかのデータのかたまりとして(1度にSIMDプロセッサが処理できるデータの最大数で、これを1SIMDとする)、1度にポートからレジスタファイルに転送される。SIMDプロセッサは、転送されてきたデータをグローバルプロセッサでプログラム化されたデータ処理手順に従って演算アレイを制御することで加工処理し、加工したデータをレジスタファイルに格納する。デジタル複写機では、SIMDプロセッサで最終的な処理が終わると、データをレジスタファイルから外部出力装置に転送し、プリンタで印刷したり、ディスプレイに表示したりする。
【0006】
そして、画像処理のスピードを上げるためには、SIMDプロセッサの命令サイクルを減らすことが重要であるが、画像処理では同じ処理をすることが多く、1サイクルでも命令を減らすことができれば、全体でかなり処理時間を短縮することができる。
【0007】
SIMDプロセッサは、その特性上、同じ処理を複数プロセッサエレメント(PE)に対して行い、同時に複数の処理を複数のプロセッサエレメントに対して行うことができない。
【0008】
これに対して、MIMD方式のプロセッサは、全てのプロセッサエレメントが命令を解読し制御信号を生成するデコーダを有しており、同時に異なる命令を実行することができる。
【0009】
ところが、SIMD方式のプロセッサは、デコーダが1つだけであり、構成が単純で、回路規模がMIMD方式のプロセッサに比較して、非常に小さいという利点がある。
【0010】
そして、従来、命令コード中に複数の演算ユニットを制御する情報としてVLIW(Very Long Instruction Word)タイプの命令コードを組み込んで、単一命令コードで複数の演算ユニットにおける複数の演算を制御するSIMD方式のプロセッサが提案されている(特許文献1参照)。
【0011】
また、従来、MIMD方式のプロセッサに命令レジスタ・デコーダを設けて、SIMDモードとMIMDモードを切り換えて実行して、動的に複数モードで並列処理するアレイが提案されている(特許文献2参照)。
【0012】
さらに、従来、複数アレイからなるMIMD方式のプロセッサを、複数アレイ毎にSIMDコマンドを解析して、SIMDとしても動作するアレイ・プロセッサが提案されている(特許文献3参照)。
【0013】
また、従来、メモリの記録動作については、プロセッサ毎に状態ビットを用意し、当該状態ビットの値によって、算術論理装置の出力を選択された1対のレジスタのいずれかに格納する格納するレジスタ対から条件付きでメモリへ記憶させる装置が提案されている(特許文献4参照)。
【0014】
【発明が解決しようとする課題】
しかしながら、このような従来の技術にあっては、SIMDプロセッサにおいて、小型で安価に複数処理を実行して、処理速度を向上させる上で、改良の必要があった。
【0015】
すなわち、特許文献1記載の従来技術にあっては、SIMDプロセッサで、命令コード中に複数の演算ユニットを制御する情報としてVLIWタイプの命令コードを組み込んで、単一命令コードで複数の演算ユニットにおける複数の演算を制御しているため、命令コードが煩雑となり、処理速度を向上させる上で、改良の必要があった。
【0016】
また、特許文献2及び特許文献3記載の従来技術にあっては、命令レジスタ・デコーダを備える必要があり、また、SIMDコマンドを解析する必要があり、回路規模が大型で、高価なものになるという問題があった。
【0017】
さらに、特許文献4にあっては、算術論理装置の出力を選択された1対のレジスタのいずれかに格納する格納するレジスタ対から条件付きでメモリへ記憶させる装置が提案されているが、この装置だけでは、SIMDプロセッサの処理を行うことができない。
【0018】
そこで、本発明は、小規模で、単純な回路の追加のみで、複数の処理を実現するSIMDプロセッサを提供することを目的としている。
【0019】
具体的には、請求項1記載の発明は、プロセッサエレメントの算術論理演算器の演算結果の状態を格納し、次の命令の実行を制御するプロセッサエレメント部演算制御フラグと、グローバルプロセッサの算術論理演算器の演算結果の状態を格納するグローバルプロセッサフラグとの組み合わせに応じて、プロセッサエレメントに、3通り以上の命令を実行させることにより、単純な回路の追加のみで、複数の処理を実現し、安価に処理速度を向上させることのできるSIMDプロセッサを提供することを目的としている。
【0020】
請求項2記載の発明は、グローバルプロセッサフラグを命令によって適宜設定可能とすることにより、任意の処理を複数実行させ、安価に処理速度を向上させるとともに、利用性の良好なSIMDプロセッサを提供することを目的としている。
【0021】
【課題を解決するための手段】
請求項1記載の発明のSIMDプロセッサは、複数の算術論理演算器の集合体である演算アレイとデータの格納を行う複数のレジスタの集合体であるレジスタファイルを備えたプロセッサエレメントと、プログラムを解析し、プログラムの構造化処理、前記プロセッサエレメントの制御及び前記プロセッサエレメントとのデータの入出力を行うグローバルプロセッサと、を備えたSIMDプロセッサにおいて、前記プロセッサエレメントの算術論理演算器の演算結果の状態を格納し、次の命令の実行を制御するプロセッサエレメント部演算制御フラグと、前記グローバルプロセッサの算術論理演算器の演算結果の状態を格納するグローバルプロセッサフラグと、を設け、前記プロセッサエレメントが、前記プロセッサエレメント部演算制御フラグと前記グローバルプロセッサフラグの組み合わせに応じて3通り以上の命令を実行することにより、上記目的を達成している。
【0022】
上記構成によれば、プロセッサエレメントの算術論理演算器の演算結果の状態を格納し、次の命令の実行を制御するプロセッサエレメント部演算制御フラグと、グローバルプロセッサの算術論理演算器の演算結果の状態を格納するグローバルプロセッサフラグとの組み合わせに応じて、プロセッサエレメントが、3通り以上の命令を実行するので、単純な回路の追加のみで、複数の処理を実現することができ、安価に処理速度を向上させることができる。
【0023】
この場合、例えば、請求項2に記載するように、前記SIMDプロセッサは、前記グローバルプロセッサフラグが命令によって適宜設定可能であってもよい。
【0024】
上記構成によれば、グローバルプロセッサフラグを命令によって適宜設定可能としているので、任意の処理を複数実行させることができ、安価に処理速度を向上させることができるとともに、利用性を向上させることができる。
【0025】
【発明の実施の形態】
以下、本発明の好適な実施の形態を添付図面に基づいて詳細に説明する。なお、以下に述べる実施の形態は、本発明の好適な実施の形態であるから、技術的に好ましい種々の限定が付されているが、本発明の範囲は、以下の説明において特に本発明を限定する旨の記載がない限り、これらの態様に限られるものではない。
【0026】
図1〜図4は、本発明のSIMDプロセッサの一実施の形態を示す図であり、図1は、本発明のSIMDプロセッサの一実施の形態を適用したSIMDプロセッサ1の回路ブロック図である。
【0027】
図1において、SIMDプロセッサ1は、プロセッサエレメント群2とグローバルプロセッサ3を備え、プロセッサエレメント群2は、複数の演算論理演算器(ALU)の集合体である演算アレイ4と複数のレジスタの集合体であるレジスタファイル5とを備えている。
【0028】
グローバルプロセッサ3は、プログラムを解析して、プログラムの構造化処理(逐次処理、分岐処理、繰り返し処理等のプログラム処理)やプロセッサエレメント群2の制御及びプロセッサエレメント群2とのデータの入出力を行う。
【0029】
SIMDプロセッサ1は、レジスタファイル5にポートを設け、外部入出力からデータをレジスタファイル5に読み込み、また、レジスタファイル5のデータを外部入出力へ読み出す。
【0030】
そして、本実施の形態のSIMDプロセッサ1は、256個のプロセッサエレメントを備えている場合、図2に示すように構成されており、プロセッサエレメント群2は、256個のプロセッサエレメントPE0〜PE255を備えている。
【0031】
各プロセッサエレメントPE0〜PE255は、そのi個目のプロセッサエレメントPEiについて図2に示すように、その演算アレイ4部分に、1つの算術論理演算器(以下、ALU_PEという。)11を中心に、ALU_PE11からの演算結果データを格納するAレジスタ12とFレジスタ13、Aレジスタ12からのデータを再度ALU_PE11に取り込むために一時保持する記憶部14、レジスタファイル5からのデータをシフトしたり拡張したりするシフト・拡張ブロック15と、シフト・拡張ブロック15からのデータを一時保持する記憶部16と、ALU_PE11の演算結果で、オーバーフロー、キャリー、正負、ゼロ検出のステータスを表すステータスフラグの集合であるPEプロセッサステータスレジスタ(以下、PPレジスタという。)17と、PPレジスタ17の結果を取り込んだり、記憶部16からの値を取り込んで、ALU_PE11の演算結果をAレジスタ12に転送するかしないかを制御するPE部演算制御フラグの集合であるTレジスタ18と、を備えている。
【0032】
そして、各プロセッサエレメントPE0〜PE255は、そのレジスタファイル5部分に、32個のレジスタファイルR0〜R31を備えている。
【0033】
一方、グローバルプロセッサ3は、プログラムの格納されているプログラム(Program )RAM21と、データの格納されているデータ(Data)RAM22、プログラムRAM21から転送された命令コードをデコードしてグローバルプロセッサ3内の制御信号やプロセッサエレメントPE0〜PE255へ制御信号(PE制御信号)を出力するSCU(シーケンシャル・ユニット)23、算術論理演算器(以下、ALU_GPという。)24、ALU_GP24の演算結果であって、オーバーフロー、キャリー、正負、ゼロ検出のステータスを表すステータスフラグの集合であるGPプロセッサステータスレジスタ(以降、Pレジスタという。)25と、Pレジスタ25のデータを転送して各プロセッサエレメントPE0〜PE255に複数の算術論理演算命令の実行を指示するモード(デュアルモード)をフラグの値として出力して各プロセッサエレメントPE0〜PE255のモードを制御するグローバルプロセッサフラグI0〜I3の集合であるDレジスタ26と、を備えており、Dレジスタ26からの出力は、それぞれのプロセッサエレメントPE0〜PE255に転送される。
【0034】
そして、上記各プロセッサエレメントPE0〜PE255の演算アレイ4のALU_PE11、PPレジスタ17、Tレジスタ18及びAレジスタ12は、図3にそのiプロセッサエレメントPEiについて示すように回路構成されており、上記プロセッサエレメントPE0〜PE255の演算制御フラグは、例として、8ビットのPE部演算制御フラグT0〜T7が示されており、その集合体をTレジスタ18と呼んでいる。
【0035】
図3において、PPラッチ信号、Tレジスタ18入力選択信号、IMM1、Tラッチ信号、IMM2、T出力ラッチ信号、Aレジスタ12ラッチ信号は、図2のPE制御信号の一部であり、グローバルプロセッサ3から供給される。
【0036】
PPレジスタ17は、Vフラグ(オーバーフローフラグ)用ラッチ17aとCフラグ(キャリーフラグ)用ラッチ17bを備え、Tレジスタ18は、マルチプレクサ(以下、MPXという。)31、演算制御フラグ用ラッチ32〜39、アンド回路40〜47、オア(OR)回路48、ラッチ49及びオア回路50等を備えている。
【0037】
PPレジスタ17の各ラッチ17a、17bには、グローバルプロセッサ3からPPラッチ信号が入力され、また、ALU_PE11から演算結果であるオーバーフローフラグ(V)とキャリーフラグ(C)が入力される。PPレジスタ17は、PPラッチ信号に基づいて、ALU_PE11の演算結果を格納するVフラグ用ラッチ17aとCフラグ用ラッチ17bのいずれかをTレジスタ18のMPX31に出力する。
【0038】
Tレジスタ18は、演算制御フラグ用ラッチ32〜39の値が、MPX31からのPPレジスタ17の値(オーバーフローフラグ(V)とキャリーフラグ(C)のいずれか)、IMM1の値、記憶部16の値、前回保持したTレジスタ18の値をデータ加工した値の何れかで更新され、この値の選択は、MPX31によって、または、Tラッチ信号によって行われる。演算制御フラグ用ラッチ32〜39に保持されたデータは、アンド回路40〜47でIMM2によって選択され、演算制御フラグ用ラッチ32〜39のPE部演算制御フラグT0〜T7のうち、アンド回路40〜47で選択されたPE部演算制御フラグT0〜T7がオア回路48でORされて、当該ORの結果が、ラッチ49に保持される。これは、複数の演算制御フラグT0〜T7のORをPE部演算制御フラグ(プロセッサエレメント演算制御フラグ)として利用することができ、かつ、単一のフラグをPE部演算制御フラグとして利用できることを表している。また、オア回路48のOR結果は、各プロセッサエレメントPE0〜PE255が実行するか、非実行であるかを表す信号(PE実行/非実行信号)として出力される。
【0039】
Tレジスタ18は、オア回路50で、ラッチ49の出力とグローバルプロセッサ3のDレジスタ26の値とのORをとり、Aレジスタ12のラッチ制御信号(Aレジスタラッチ制御信号)として、アンド回路51に出力する。
【0040】
アンド回路51は、このAレジスタラッチ制御信号とAレジスタラッチ信号とのANDをとり、Aレジスタ12にラッチ信号を出力する。すなわち、Aレジスタラッチ制御信号が「0」であると、Aレジスタラッチ信号を無効にし、ALU_PE11の結果がAレジスタ12にラッチされないことで、前回の演算結果のままとなり、プロセッサエレメントPE0〜PE255で演算が実行されなかったような振る舞いとなる。一方、Aレジスタラッチ制御信号が「1」であると、Aレジスタラッチ信号を有効にし、ALU_PE11の演算結果がAレジスタ12にラッチされ、Aレジスタ12が更新されることで、そのプロセッサエレメントPE0〜PE255で演算が実行されたことになる。
【0041】
そして、本実施の形態のSIMDプロセッサ1は、PE部演算制御フラグと、グローバルプロセッサ3に用意されているグローバルプロセッサフラグとの組み合わせにより、本来、PE部演算制御フラグにより実行するプロセッサエレメントPE0〜PE255と、実行しない(非実行)プロセッサエレメントPE0〜PE255と、に分かれていたものを、例えば、実行する「ADD/T1」と命令記述した場合、PE部演算制御フラグが「1」のプロセッサエレメントPE0〜PE255ではADD命令を実行するが、PE部演算制御フラグが「0」のプロセッサエレメントPE0〜PE255では命令は実行されない(NOP命令となる)構成、すなわち、両方のプロセッサエレメントPE0〜PE255で実行するが異なる2つの算術論理演算命令の実行が可能な構成となっている。図2のグローバルプロセッサ3のD(Dual mode)レジスタ26は、これらグローバルプロセッサフラグの集合体であり、グローバルプロセッサフラグI0〜I3として、4ビット分が用意されている。なお、本実施の形態では、便宜上4ビットとしているが、命令の組み合わせを増やすと、それだけフラグ数が増えることとなる。
【0042】
また、一般的なALUでは、加算(本実施の形態のSIMDプロセッサ1の命令ではADD)、減算(本実施の形態のSIMDプロセッサ1の命令ではSUB)、論理和演算(本実施の形態のSIMDプロセッサ1の命令ではOR)、論理積演算(本実施の形態のSIMDプロセッサ1の命令ではAND)、排他的論理和演算(本実施の形態のSIMDプロセッサ1の命令ではXOR)を行うことができ、また、加算命令、減算命令には、キャリー付きの演算も行うことができる。
【0043】
そして、ALUの演算の違いは次の制御信号の違いによって生じる。
【0044】
▲1▼ADD演算に対してSUBは、片側が全ビット反転の制御(ALU_IVS)と、最下位ビットのアダーに「1」を加算する制御(ALU_1P)を付加することで実現される。
【0045】
▲2▼ADD演算に対してOR演算は、各ビットのアダーのキャリーを各ビットの1ビット上位の演算に伝播しない制御(ALU_CP)と、各ビットの演算で「1」と「1」のときに、加算結果が「0」となるが、結果を「1」に変更する制御(ALU_OR)を付加することで実現される。
【0046】
▲3▼OR演算に対してAND演算は、2つの入力データ共に反転する制御(ALU_IVS,ALU_IVD)と、演算結果を反転する制御(ALU_IVO)を付加することで実現される。
【0047】
▲4▼ADD演算もしくはSUB演算に対してADD演算もしくはSUB演算のキャリー付きの演算は、キャリーを最下位ビットのアダーに加算する制御(ALU_CIN)を付加することで実現される。
【0048】
以上のことを考慮して、本実施の形態のSIMDプロセッサ1は、各プロセッサエレメントPE0〜PE255のALU_PE11の制御信号に対して、モードレジスタであるDレジスタ26からの信号を付加し、2つの命令を同時に実行できるように、図4に示すように回路構成されている。
【0049】
すなわち、図4において、PE制御信号の一部として各プロセッサエレメントPE0〜PE255に供給されるALU_PE11に対する制御信号が、ALU_IVS、ALU_IP、ALU_CP、ALU_OR、ALU_IVD、ALU_IVO、ALU_CINの7種類あり、それらに対して、Dレジスタ26のグローバルプロセッサフラグI0〜I3のそれぞれの状態と、PE実行/非実行信号をインバータ61で反転した信号と、をアンド回路62〜65でANDをとり、各アンド回路62〜65のANDの結果を、ALU_PE11の制御信号とオア回路66〜72でOR(オア)をとって、ALU_PE11に入力している。
【0050】
すなわち、グローバルプロセッサフラグI0は、上記▲1▼の状態を制御し、PE部演算制御フラグの状態で実行のプロセッサエレメントPE0〜PE255では、通常のADD命令を実行し、非実行のプロセッサエレメントPE0〜PE255では、SUB命令を実行することとなる。
【0051】
また、グローバルプロセッサフラグI1は、上記▲2▼の状態を制御し、PE部演算制御フラグの状態で実行のプロセッサエレメントPE0〜PE255では、通常のADD命令を実行し、非実行のプロセッサエレメントPE0〜PE255では、OR命令を実行することとなる。
【0052】
グローバルプロセッサフラグI2は、上記▲3▼の状態を制御し、PE部演算制御フラグの状態で実行のプロセッサエレメントPE0〜PE255では、通常のOR命令を実行し、非実行のプロセッサエレメントPE0〜PE255では、AND命令を実行することとなる。
【0053】
グローバルプロセッサフラグI3は、上記▲4▼の状態を制御し、PE部演算制御フラグの状態で実行のプロセッサエレメントPE0〜PE255では、通常のADD命令またはSUB命令を実行し、非実行のプロセッサエレメントPE0〜PE255では、ADD命令またはSUB命令のキャリ−付き演算(ADDに対して、ADDC、SUBに対して、SUBCとなる)を実行することとなる。
【0054】
また、SIMDプロセッサ1では、グローバルプロセッサフラグI0〜I3の設定に対して、専用の命令を用意し、1ビットのみを設定して、それ以外のビットは、全てリセットする。
【0055】
すなわち、SIMDプロセッサ1では、以下のようにビット設定する。
【0056】
SETI0・・・グローバルプロセッサフラグI0に、「1」をセットし、I0以外のグローバルプロセッサフラグは、すべて「0」をセットする。
【0057】
SETI1・・・グローバルプロセッサフラグI1に、「1」をセットし、I1以外のグローバルプロセッサフラグは、すべて「0」をセットする。
【0058】
SETI2・・・グローバルプロセッサフラグI2に、「1」をセットし、I2以外のグローバルプロセッサフラグは、すべて「0」をセットする。
【0059】
SETI3・・・グローバルプロセッサフラグI3に、「1」をセットし、I3以外のグローバルプロセッサフラグは、すべて「0」をセットする。
【0060】
そして、SIMDプロセッサ1では、リセットする命令は、以下の通りである。
【0061】
CLRI0・・・グローバルプロセッサフラグI0に、「0」をセットする。
【0062】
CLRI1・・・グローバルプロセッサフラグI1に、「0」をセットする。
【0063】
CLRI2・・・グローバルプロセッサフラグI2に、「0」をセットする。
【0064】
CLRI3・・・グローバルプロセッサフラグI3に、「0」をセットする。
【0065】
また、SIMDプロセッサ1では、グローバルプロセッサフラグI0〜I3は、グローバルプロセッサ3のALU_GP24の演算結果によって設定することができる。
【0066】
すなわち、グローバルプロセッサ3のALU_GP24の比較命令の演算の結果が真であれば、「1」が、グローバルプロセッサフラグI0〜I3のうちの命令で指定した1つのフラグに設定される。
【0067】
例えば、CMP/I0/NE G0,#12hと記述した場合、「G0」から「12h」を減算した結果、条件/NE(Not Equalの略)で、減算結果が「0」でなければ、等しくない(Not Equal)ので、真であるので、「1」がグローバルプロセッサフラグI0に格納される。演算結果が「0」であれば、等しい(Equal)ので、偽であるため、「0」がグローバルプロセッサフラグI0に格納される。
【0068】
なお、本実施の形態のSIMDプロセッサ1では、同時に全てのグローバルプロセッサフラグI0〜I3をセットするのは、ALU_PEのPE制御信号の制御が複雑になり、プロセッサエレメントPE0〜PE255にデコード回路が必要となって、ハード構成が増大するため、1つのグローバルプロセッサフラグI0〜I3をセットした場合、他のグローバルプロセッサフラグI0〜I3は、「0」にするようにしている。
【0069】
次に、本実施の形態の作用を説明する。本実施の形態のSIMDプロセッサ1は、図2に示したように、グローバルプロセッサ3のDレジスタ26に、グローバルプロセッサフラグI0〜I3を備えており、そのうちの1つのグローバルプロセッサフラグI0〜I3を設定して、図3に示したTレジスタ18からのプロセッサエレメントPE0〜PE255の実行/非実行の状態を表すPE実行/非実行信号を用いて、グローバルプロセッサフラグI0〜I3の値と、PE実行/非実行信号の値と、図4に示したように、ALU_PE11の制御信号(ALU_IVS、ALU_IP、ALU_CP、ALU_OR、ALU_IVD、ALU_IVO、ALU_CIN)を論理演算することで、Tレジスタ18の状態での2つの状態と、グローバルプロセッサフラグI0〜I3の2つの状態で、4通り組み合わせが存在し、実際は、1命令は同じ命令となるため、3通りの命令を実行することができる。
【0070】
すなわち、例えば、ADD命令をグローバルプロセッサフラグI0の状態を参照して実行した場合、以下の組み合わせとなる。
【0071】
そこで、例えば、以下の処理を行うものとする。なお、以下の説明では、PE部演算制御フラグT0〜T7を簡略化のために、必要に応じて、T0〜T7フラグと記載する。
【0072】
ADD/T1 #1h ;T1フラグが「1」のプロセッサエレメントPE0〜PE255はAレジスタ12に「1」を加算し、「0」のプロセッサエレメントPE0〜PE255は何も実行しない(Aレジスタ12の値を更新しない)。
【0073】
SUB/F1 #1h ;T1フラグが「0」のプロセッサエレメントPE0〜PE255はAレジスタ12に「1」を減算し、「1」のプロセッサエレメントPE0〜PE255は何も実行しない(Aレジスタ12の値を更新しない)。
【0074】
本実施の形態のSIMDプロセッサ1では、以下のようになり、命令サイクル数を減らすことができる。
【0075】
ADD/T1 #1h ;T1フラグが「1」のプロセッサエレメントPE0〜PE255はAレジスタ12に「1」を加算し、「0」のプロセッサエレメントPE0〜PE255は「1」を減算する。
【0076】
なお、「/T1」は、T1フラグの値が真「1」で、通常のSIMDプロセッサでは、そのプロセッサエレメントが命令を実行(実行状態、Aレジスタを更新)し、偽「0」で、通常のSIMDプロセッサでは、そのプロセッサエレメントが命令を実行しない(非実行状態、Aレジスタを更新しない)ということになる。「/F1」は、上記の場合と真偽が反対となる。
【0077】
そして、このように、2種類の命令を実行できることになるが、これにグローバルプロセッサフラグI0〜I3の状態が加わるため、さらに命令が追加された状態となる。
【0078】
例えば、以下の処理を行うものとする。
【0079】
FINISH:
この処理では、処理▲1▼、▲2▼は、G0レジスタが「0」であれば、LABEL2に分岐し、LABEL2以降の処理を行う。処理▲3▼、▲4▼は、処理▲2▼の結果によって分岐しなかった場合で、処理▲3▼は、PE部演算制御フラグT0の値が「1」であるプロセッサエレメントPE0〜PE255では、Aレジスタ12の値とR0レジスタの値を加算し、PE部演算制御フラグT0〜T7の値が「0」であるプロセッサエレメントPE0〜PE255では、何も実行しない(NOP命令となる)。処理▲4▼は、PE部演算制御フラグT0の値が「0」であるプロセッサエレメントPE0〜PE255では、Aレジスタ12の値とR0レジスタの値を減算し、PE部演算制御フラグT0〜T7の値が「1」であるプロセッサエレメントPE0〜PE255では、何も実行しない(NOP命令となる)。すなわち、処理▲3▼と処理▲4▼は、プロセッサエレメントPE0〜PE255を2通りに分けて、片側ではADD、もう一方ではSUBを実行していることになる。処理▲5▼は、処理▲2▼で分岐した場合の処理であり、処理▲3▼と同様の処理を行っている。ただし、処理▲4▼がないため、プロセッサエレメントPE0〜PE255を2通りに分けて、片側ではADD、もう一方ではNOPのみを実行していることになる。
【0080】
そして、本実施の形態のSIMDプロセッサ1は、上記処理を以下のように実行する。
【0081】
CMP/EQ/I0 G0,#0h ;処理▲1▼'
ADD/T1 R0 ;処理▲3▼'
このように、本実施の形態のSIMDプロセッサ1は、プロセッサエレメントPE0〜PE255の算術論理演算器(ALU_PE)11の演算結果の状態を格納し、次の命令の実行を制御するプロセッサエレメント部演算制御フラグ(PE部演算制御フラグ)T0〜T7の集合であるTレジスタ18と、グローバルプロセッサ3の算術論理演算器(ALU_GP)24の演算結果の状態を格納するグローバルプロセッサフラグI0〜I3の集合であるDレジスタ26と、を設け、PE部演算制御フラグT0〜T7とグローバルプロセッサフラグI0〜I3との組み合わせに応じて、プロセッサエレメントPE0〜PE255が、3通り以上の命令を実行している。
【0082】
したがって、単純な回路の追加のみで、複数の処理を実現することができ、安価に処理速度を向上させることができる。
【0083】
また、本実施の形態のSIMDプロセッサ1は、グローバルプロセッサフラグI0〜I3を命令によって適宜設定可能としている。
【0084】
したがって、任意の処理を複数実行させることができ、安価に処理速度を向上させることができるとともに、利用性を向上させることができる。
【0085】
以上、本発明者によってなされた発明を好適な実施の形態に基づき具体的に説明したが、本発明は上記のものに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【0086】
【発明の効果】
請求項1記載の発明のSIMDプロセッサによれば、プロセッサエレメントの算術論理演算器の演算結果の状態を格納し、次の命令の実行を制御するプロセッサエレメント部演算制御フラグと、グローバルプロセッサの算術論理演算器の演算結果の状態を格納するグローバルプロセッサフラグとの組み合わせに応じて、プロセッサエレメントが、3通り以上の命令を実行するので、単純な回路の追加のみで、複数の処理を実現することができ、安価に処理速度を向上させることができる。
【0087】
請求項2記載の発明のSIMDプロセッサによれば、グローバルプロセッサフラグを命令によって適宜設定可能としているので、任意の処理を複数実行させることができ、安価に処理速度を向上させることができるとともに、利用性を向上させることができる。
【図面の簡単な説明】
【図1】本発明のSIMDプロセッサの一実施の形態を適用したSIMDプロセッサの基本構成図。
【図2】図1のSIMDプロセッサの詳細な回路ブロック図。
【図3】図2のALU、PPレジスタ、Tレジスタ及びAレジスタの詳細な回路図。
【図4】図2のALU_PEへの制御信号入力部の詳細な回路図。
【符号の説明】
1 SIMDプロセッサ
2 プロセッサエレメント群
3 グローバルプロセッサ
4 演算アレイ
5 レジスタファイル
PE0〜PE255 プロセッサエレメント
11 算術論理演算器(ALU_PE)
12 Aレジスタ
13 Fレジスタ
14 記憶部
15 シフト・拡張ブロック
16 記憶部
17 PEプロセッサステータスレジスタ(PPレジスタ)
17a、17b ラッチ
18 Tレジスタ
R0〜R31 レジスタファイル
21 プログラムRAM
22 データRAM
23 SCU
24 算術論理演算器(ALU_GP)
25 GPプロセッサステータスレジスタ(Pレジスタ)
I0〜I3 グローバルプロセッサフラグ
26 Dレジスタ
31 マルチプレクサ(MPX)
T0〜T7 演算制御フラグ
32〜39 演算制御フラグ用ラッチ
40〜47 アンド回路
48 オア回路
49 ラッチ
50 オア回路
51 アンド回路
61 インバータ
62〜65 アンド回路
66〜72 オア回路
Claims (2)
- 複数の算術論理演算器の集合体である演算アレイとデータの格納を行う複数のレジスタの集合体であるレジスタファイルを備えたプロセッサエレメントと、プログラムを解析し、プログラムの構造化処理、前記プロセッサエレメントの制御及び前記プロセッサエレメントとのデータの入出力を行うグローバルプロセッサと、を備えたSIMDプロセッサにおいて、前記プロセッサエレメントの算術論理演算器の演算結果の状態を格納し、次の命令の実行を制御するプロセッサエレメント部演算制御フラグと、前記グローバルプロセッサの算術論理演算器の演算結果の状態を格納するグローバルプロセッサフラグと、を設け、前記プロセッサエレメントが、前記プロセッサエレメント部演算制御フラグと前記グローバルプロセッサフラグの組み合わせに応じて3通り以上の命令を実行することを特徴とするSIMDプロセッサ。
- 前記SIMDプロセッサは、前記グローバルプロセッサフラグが命令によって適宜設定可能であることを特徴とする請求項1記載のSIMDプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002352776A JP3895267B2 (ja) | 2002-12-04 | 2002-12-04 | Simdプロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002352776A JP3895267B2 (ja) | 2002-12-04 | 2002-12-04 | Simdプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004185422A JP2004185422A (ja) | 2004-07-02 |
JP3895267B2 true JP3895267B2 (ja) | 2007-03-22 |
Family
ID=32754298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002352776A Expired - Fee Related JP3895267B2 (ja) | 2002-12-04 | 2002-12-04 | Simdプロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3895267B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4413117B2 (ja) * | 2004-09-28 | 2010-02-10 | 日東電工株式会社 | 位相差フィルム、偏光板、液晶パネル、液晶表示装置及び位相差フィルムの製造方法 |
JP2013161271A (ja) * | 2012-02-06 | 2013-08-19 | Ricoh Co Ltd | Simd型マイクロプロセッサ |
-
2002
- 2002-12-04 JP JP2002352776A patent/JP3895267B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004185422A (ja) | 2004-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008071130A (ja) | Simd型マイクロプロセッサ | |
US7769982B2 (en) | Data processing apparatus and method for accelerating execution of subgraphs | |
JPH07210369A (ja) | 並列加算および平均演算を行うための回路およびその方法 | |
JP2683488B2 (ja) | 3−1論理演算装置 | |
JP3683773B2 (ja) | Simd演算を実行するために標準macユニットを利用する浮動小数点ユニット | |
EP3329363B1 (en) | Vector arithmethic instruction | |
JP3578883B2 (ja) | データ処理装置 | |
JPH05150979A (ja) | 即値オペランド拡張方式 | |
US20080084424A1 (en) | Early retiring instruction mechanism, method for performing the same and pixel processing system thereof | |
JPH03286332A (ja) | デジタルデータ処理装置 | |
US6055628A (en) | Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks | |
JP3895267B2 (ja) | Simdプロセッサ | |
JP5732139B2 (ja) | データ要素の条件付き選択 | |
US9606798B2 (en) | VLIW processor, instruction structure, and instruction execution method | |
US11080054B2 (en) | Data processing apparatus and method for generating a status flag using predicate indicators | |
WO2020243092A1 (en) | Processing device with vector transformation execution | |
JP2503984B2 (ja) | 情報処理装置 | |
JPH05274143A (ja) | 複合条件処理方式 | |
JP4516495B2 (ja) | Simd型マイクロプロセッサにおけるデータ処理方法 | |
JP3971543B2 (ja) | Simd型プロセッサ | |
JP3742745B2 (ja) | 演算処理装置 | |
JP3971557B2 (ja) | Simdプロセッサにおけるデータ設定装置 | |
JP2925842B2 (ja) | パイプライン処理装置 | |
JP2008071037A (ja) | Simd型マイクロプロセッサ | |
JP2001265592A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050525 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20050526 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061130 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20061212 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061213 |
|
R150 | Certificate of patent (=grant) or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101222 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101222 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111222 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111222 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121222 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131222 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |