JP2013140472A - ベクトルプロセッサ - Google Patents

ベクトルプロセッサ Download PDF

Info

Publication number
JP2013140472A
JP2013140472A JP2012000048A JP2012000048A JP2013140472A JP 2013140472 A JP2013140472 A JP 2013140472A JP 2012000048 A JP2012000048 A JP 2012000048A JP 2012000048 A JP2012000048 A JP 2012000048A JP 2013140472 A JP2013140472 A JP 2013140472A
Authority
JP
Japan
Prior art keywords
instruction
data
processing
vector
pipeline
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.)
Granted
Application number
JP2012000048A
Other languages
English (en)
Other versions
JP5786719B2 (ja
Inventor
Makiko Ito
真紀子 伊藤
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012000048A priority Critical patent/JP5786719B2/ja
Publication of JP2013140472A publication Critical patent/JP2013140472A/ja
Application granted granted Critical
Publication of JP5786719B2 publication Critical patent/JP5786719B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】データ語長が異なる命令が混在する場合であっても、パイプライン処理の乱れを抑制し、待ち時間を削減して、処理時間を短縮する。
【解決手段】ベクトルレジスタファイル401と、パイプライン演算器を有する複数の実行ユニット403-406と、パイプライン処理を制御する命令発行制御回路402と、を有し、実行ユニットは、x個を組合せて基本ビット幅のx倍のビット幅のデータを処理可能な複数の基本パイプライン演算器を有し、命令発行制御回路は、基本ビット幅のx倍のビット幅の1系列のデータの処理を実行する場合に、1系列のデータの処理をx個の実行ユニットで実行することが適切であると判定した場合に1系列のデータの処理をx個の実行ユニットで実行する命令を発行する。
【選択図】図4

Description

本発明の実施例の一側面において開示する技術は、ベクトルプロセッサに関する。
データの演算処理を行う回路として、ベクトルプロセッサが知られている。ベクトルプロセッサは、一般にスーパーコンピュータにおいて用いられており、ベクトルレジスタファイルの配列要素に格納された配列型のデータを扱う。
ベクトルプロセッサは、指定された個数(ベクトル長:VL(Vector Length))の演算を1命令で実行する。ベクトルプロセッサは、複数(n)個のパイプライン演算器を有する実行ユニットを持ち、VL個のデータをn個ずつ(VL/n)サイクルに分割して演算を行なう。実行ユニットを複数設けて並列実行することで性能を向上させる。さらに、ベクトルプロセッサが実行する一連の命令の間にはデータの依存関係があることが多く、実行ユニット間でデータをパイパスして先行命令の演算結果を後続命令に渡すことで、レジスタへの書き込みに対する待ちを発生させずに効率良く演算を行なう。また、演算リソースやメモリバンド幅の問題から、乗算やロード・ストアを実行できる実行ユニットは限定されており、非対称であることが多い。
スーパーコンピュータ向けのベクトルプロセッサでは、ベクトルプロセッサが扱う最大のデータ語長(例えば、64ビット)を基本単位として配列要素のサイズが割り当てられている。データ語長の長さが半分の場合(例えば、32ビット)には、各配列要素において前半の32ビットのみを使用し、後半の32ビットは不使用とする方法が採用されている。
従来、ベクトルプロセッサは、スーパーコンピュータのようなハイパフォーマンスコンピューティングの分野において使用されてきた。しかし、近年、ベクトルプロセッサを無線ベースバンド処理のような信号処理系アプリケーションの分野に応用することが検討されている。この場合、ベクトルプロセッサは、DSP(Digital Signal Processor)のような組み込み機器向けのプロセッサにおいて使用されることが想定される。
組み込みシステムでは、メモリサイズや処理量削減のために、データ語長を節約して16ビット演算を行なうことが多いが、精度が必要なところでは32ビット演算を行なう。そのため、上記の無線ベースバンド処理のような分野で使用されるベクトルプロセッサでは、データ語長が16ビットであるハーフワード(Halfword)命令とデータ語長が32ビットであるワード(Word)命令のように、データ語長が異なる命令をプログラム中に混在させて使用するケースが頻繁に発生する。
先行命令と後続命令との間でデータ語長が異なる場合であっても、レジスタ干渉の有無を判定する必要がある。そこで、スーパーコンピュータ向けのベクトルプロセッサと同様に、データ語長の異なる命令が混在する場合であっても、常に同じサイズの配列要素をアクセス単位としてベクトルレジスタファイルへのアクセスを行うことが考えられる。しかしながら、半分のサイズのデータ語長の命令(ハーフワード命令)を実行する場合、各配列要素の後半部分が使用されないため、実質的にベクトルレジスタファイルの半分の領域が使用されず、レジスタの使用に大きな無駄を生じる。このことは、限られた容量のレジスタしか搭載することができず、ベクトルレジスタファイルの全体の容量を十分に大きくすることが困難な、組み込み機器向けプロセッサにおいては大きな問題となる。
一方、データ語長の異なる命令が混在する場合には、レジスタ干渉の有無に関わらず無条件で、先行命令の処理が終了するまで後続命令をストールさせるように、後続命令の実行を遅延させることにより、レジスタ干渉が生じる危険を回避することも考えられる。
しかしながら、この場合、各パイプライン演算器において実質的にパイプライン処理が並行して実行されないことになるので、ベクトル処理回路の利点を活かすことができず、命令実行の効率が極めて悪くなる。このことは、限られた処理能力の演算器しか搭載することができず、パイプライン演算器の処理能力を十分に大きくすることが困難な、組み込み機器向けプロセッサにおいては大きな問題となる。
さらに、組み込みシステム用ベクトルプロセッサでは、回路規模を削減するために、32ビット演算は、2個の16ビット演算器を使って実行することにより、16ビットと32ビットの演算器を共有して実現することが行われる。
16ビットと32ビットの演算器を共有するベクトルプロセッサでは、32ビット演算を行なう場合は16ビット演算と比較して、1サイクルで1/2のデータの処理しか行なえない。そのため、1命令の32ビット演算に要するサイクル数は、16ビット演算の2倍(2×VL/n)となる。
一連の命令を実行する場合に、16ビット演算を完了するのに要するサイクル数と32ビット演算を完了するのに要するサイクル数に違いがあると、16ビット演算と32ビット演算の間でのデータのバイパスには待ちが発生するため、性能が上がらないという問題が生じる。
特開平10−110686号公報 特開平10−124313号公報 特公平07−86838号公報 特開昭61−52740号公報 特開2000−227858号公報
従って、本実施例の一側面におけるベクトルプロセッサは、プログラム中にデータ語長が異なる命令が混在する場合であっても、パイプライン処理の乱れを抑制し、待ち時間を削減して、処理時間を短縮することを目的とする。
本実施例に係るベクトルプロセッサは、複数の配列要素を含むベクトルレジスタファイルと、各々が配列要素に格納されたデータに対して演算処理を行う複数のパイプライン演算器を有する複数の実行ユニットと、命令を発行し、命令に基づいてベクトルレジスタファイル及び実行ユニットの動作を制御することにより、パイプライン処理を制御する命令発行制御回路と、を有し、命令発行制御回路は、1系列のデータの個数を規定するベクトル長を記憶するベクトル長レジスタを有し、ベクトル長で規定された1系列のデータを処理するように複数の実行ユニットに命令をそれぞれ発行するベクトルプロセッサであって、2つ以上の実行ユニットは、基本ビット幅のデータを処理する複数の基本パイプライン演算器を備え、複数の基本パイプライン演算器は、x(x≦X、x:2のべき、X:2のべき)個の基本パイプライン演算器を組合せて、基本ビット幅のx倍のビット幅のデータを処理可能であり、命令発行制御回路は、基本ビット幅のx倍のビット幅の1系列のデータの処理を実行する場合に、1系列のデータの処理をx個の実行ユニットで実行することが適切であるか判定し、適切であると判定した時に、1系列のデータの処理をx個の実行ユニットで実行する命令を発行する。
本実施例に係るベクトルプロセッサでは、基本ビット幅のx倍のビット幅のデータの処理を実行する場合に、x個の実行ユニットで実行することで、基本ビット幅のデータの処理を1個の実行ユニットで実行する場合と同じ処理時間になる。これにより、データ語長が異なる命令が混在する場合であっても、パイプライン処理の乱れを抑制できる。これにより、待ち時間を削減して、処理時間を短縮できる。
図1は、ベクトルプロセッサの基本的な構成例を示す図である。 図2は、ベクトルプロセッサのパイプライン処理を説明するための図である。 図3は、ベクトルレジスタファイルの構成例を示す図である。 図4は、実施形態のベクトルプロセッサの概略構成およびパイプラインステージを示す図である。 図5は、実行ユニットにおいて、16ビット演算器を2個組み合わせて32ビット演算器を実現する場合を説明する図である。 図6はベクトルレジスタファイルの構成例を示す図である。 図7は、命令発行制御回路が4つの実行ユニットに対して発行する命令構成と、スロット制御信号の信号構成を示す図である。 図8は、実施形態のペクトルプロセッサを動作させるためのプログラムの例を示し、(A)はオリジナルC言語で記載したプログラムを、(B)はベクトル化C言語で記載したプログラムを示す。 図9は、32ビット命令を1つの実行ユニットで処理した場合の処理シーケンスを示す図である。 図10は、図9の処理シーケンスを行う場合の命令発行制御回路における命令発行処理を示すフローチャートである。 図11は、実施形態のベクトルプロセッサで、図8のプログラム処理した場合の処理シーケンスを示す図である。 図12は、図11の処理シーケンスを行う場合の命令発行制御回路における命令発行処理を示すフローチャートである。 図13は、図11の処理シーケンスにおけるバイパス回路の動作を説明する図である。 図14は、実施形態のベクトルプロセッサに6個の実行ユニットを設けて、図8のプログラム処理した場合の処理シーケンスを示す図である。
実施形態を説明する前に、スーパーコンピュータ向け等の一般的なベクトルプロセッサの基本的な構成および動作を説明する。ここでは説明を簡単にするため、ベクトルプロセッサが、4個の実行ユニットを有し、各実行ユニットの算術論理演算ユニットが8個のパイプライン演算器を有する例を説明する。
図1は、ベクトルプロセッサ200の基本的な構成例を示す図である。図1に示したように、ベクトルプロセッサ200は、ベクトルレジスタファイル201と、命令発行制御回路202と、4つの実行ユニット203〜206及び命令バッファ207と、を含み、後述する複数のパイプラインステージに従ってパイプライン処理を実行する。
命令バッファ207は、ベクトルプロセッサ200が実行する命令を格納する。命令発行制御回路202は、命令バッファ207に接続され、命令バッファ207から命令を受けとる。命令発行制御回路202は、受けとった命令に基づいてベクトルレジスタファイル201及び実行ユニット203〜206の動作を制御する。命令発行制御回路202は、受けとった命令(後続命令)と、すでに実行中の命令(先行命令)との間でレジスタ干渉の有無を判定し、判定結果に応じて後続命令の発行タイミングを調整する。また、命令発行制御回路202は、ベクトル長(VL)を指定するVLレジスタ210を含む。
ベクトルレジスタファイル201は、4つの実行ユニット203〜206が処理するデータを格納する。ベクトルレジスタファイル201は、命令発行制御回路202の制御の下、各実行ユニット203〜206に処理すべきデータを供給する。ベクトルレジスタファイル201の詳細については後述する。
ベクトルレジスタファイル201と各実行ユニット203〜206の間には、各実行ユニットが処理するデータを格納する各パイプラインレジスタ208が設けられる。各パイプラインレジスタ208は、ベクトルレジスタファイル201から、対応する実行ユニットが処理するデータを受けとる。
各実行ユニット203〜206は、算術論理演算ユニットALU211を含み、各ALU211は8個のパイプライン演算器を含む。各パイプライン演算器は対応するパイプラインレジスタ208と接続され、パイプラインレジスタ208から処理すべきデータの供給を受け、命令発行制御回路202の制御の下、所望の演算を実行する。ここで、各パイプライン演算器は、同時に16ビットのデータを演算することが可能な16ビット演算器である。このため、1つのALUは1サイクルで、16ビットのデータであれば8個のデータを処理することができる。また、後述するように、16ビット演算器を2個組み合わせて32ビット演算器を形成可能であり、32ビットのデータであれば4個のデータを処理することができる。
各実行ユニット203〜206は、ALU211の演算結果を格納するパイプラインレジスタ209を含む。パイプラインレジスタ209は、ベクトルレジスタファイル201を接続されている。各実行ユニット203〜206は、パイプラインレジスタ209を介して、その演算結果をベクトルレジスタファイル201に書き戻すことができる。
図2は、ベクトルプロセッサ200のパイプライン処理を説明するための図である。図2において、IFは命令フェッチ(Instruction Fetch)を、IDは命令デコード(Instruction Decode)を、RRはレジスタロード(Register Read)を、EXは命令実行(Execution)を、WBは書き戻し(Write Back)を表す。すなわち、ベクトルプロセッサ200のパイプライン処理はIF、ID、RR、EX及びWBからなる5段のパイプラインステージを有する。5段のパイプラインステージは連続する5つのサイクルにおいて順番に実行される。
まず、IFステージにおいて、命令バッファ207は、ベクトルプロセッサ200の外部に設けられた命令メモリ(不図示)から、処理すべき命令を受け取る。ここで、命令は、実行ユニット203〜206が処理する演算の内容を示す命令コードと、演算の対象となる配列データが格納された配列レジスタの論理番号を示すソース情報と、演算結果を格納すべき配列レジスタの論理番号を示すディスティネーション情報を含む。
次に、IDステージにおいて、命令発行制御回路202は命令バッファ207から命令を受けとり、受けとった命令をデコードする。
次に、RRステージにおいて、命令発行制御回路202は、命令デコードの結果得られたソース情報に基づいて、ベクトルレジスタファイル201に対して、読み出し対象となる配列データが格納された配列レジスタの論理番号を指定する。ベクトルレジスタファイル201は、命令発行制御回路202の制御の下、指定された論理番号に対応する配列レジスタにおいて所望の配列要素を選択し、選択した配列要素のデータを、命令が実行されるパイプライン演算器に対応するパイプラインレジスタ208に格納する。
次に、EXステージにおいて、各実行ユニット203〜206に含まれるALU211は、命令発行制御回路202の制御の下、パイプラインレジスタ208に格納されたデータに対して、デコードの結果得られた命令コードに応じた演算を実行する。各実行ユニット203〜206の演算結果は、対応するパイプラインレジスタ209に格納される。
次に、WBステージにおいて、各実行ユニット203〜206は、パイプラインレジスタ209に格納された演算結果のデータをベクトルレジスタファイル201に書き戻す。このとき、命令発行制御回路202は、命令デコードの結果得られたディスティネーション情報に基づいて、ベクトルレジスタファイル201に対して、書き込み対象となる配列レジスタの論理番号を指定する。パイプラインレジスタ208に格納された演算結果のデータは、ベクトルレジスタファイル201において、指定された論理番号に対応する配列レジスタに順次格納される。
ベクトルプロセッサ200は4つの実行ユニット203〜206を有するので、上述の5段のパイプラインステージを有するパイプライン処理を実行ユニット203〜206の各々において並行して実行することができる。すなわち、ベクトルプロセッサ200は4つの実行パイプラインを有する。
尚、上述のパイプライン処理では5段のパイプラインステージを用いたが、パイプライン処理のステージ構成はこれに限定されない。例えば、EXステージとWBステージの間に、ベクトルプロセッサ200の外部メモリ(不図示)に対するデータの読み出しや書き込みを行う、メモリアクセスMA(Memory Access)ステージを設けてもよい。MAステージを設けた場合には、MAステージの処理結果のデータを格納するためのパイプラインレジスタが追加で設けられる。
次に、ベクトルレジスタファイル201について説明する。
図3はベクトルレジスタファイル201の構成例を示す図である。図3に示したベクトルレジスタファイル201は、1ダブルワード(doubleword)×256エントリの構成を有し、ベクトル長は16である(VL=16)。
図3に示した例では、1つの配列要素302はそれぞれ64ビットのデータを格納する。16個の配列要素302により1つの配列レジスタ303が構成され、ベクトルレジスタファイル201は16個の配列レジスタ303により構成されている。各配列レジスタ303には配列データ304が格納されている。各配列要素には物理番号(0〜255)が割り当てられており、各配列レジスタには論理番号(0〜15)が割り当てられている。ベクトルレジスタファイル201に対するアクセスは、配列レジスタの論理番号を指定することにより行われるが、更に、指定された論理番号とベクトル長に基づいて、配列要素の物理番号を生成することにより行なわれる。
また、図3の構成例では、ベクトルプロセッサ200が扱う最大のデータ語長(例えば、64ビット)を基本単位として配列要素のサイズが割り当てられている。データ語長の長さが半分の場合(例えば、32ビット)には、各配列要素において前半の32ビットのみを使用し、後半の32ビットは不使用とする方法が採用されている。図3に示したように、例えば、ベクトルプロセッサが倍精度処理型の命令を扱う場合には、データ語長は64ビットであり、例えば、各配列要素において64ビット全てを使用する。一方、単精度処理型の命令を扱う場合には、データ語長は32ビットであるため、各配列要素において前半の32ビットのみを使用する。この場合、実質的にベクトルレジスタファイルの半分の領域が使用されず、レジスタの使用に大きな無駄を生じる。
ところで、ベクトル処理回路においては、命令発行時に、先行命令と後続命令の間でレジスタ干渉の有無が判定される、これは、先行命令で指定された配列レジスタと、後続命令で指定された配列レジスタとが重複する場合、先行命令における処理結果(配列データ)を適切に後続命令における処理に反映させるために、相互の命令の発行タイミングを適切に調整する必要があるからである。
通常、各パイプライン演算器で処理される配列データは対応する配列レジスタを構成する先頭の配列要素の物理番号(または、論理番号)のみで区別することができる。配列データは同一の数の配列要素で構成され、1つの命令に対して、対応する配列レジスタを構成する複数の配列要素が一体として処理されるためである。例えば、図3に示したベクトルレジスタファイル201においては、各配列レジスタ(論理番号0〜15)の配列データの区別は、各配列レジスタの先頭の配列要素の物理番号(0,16,32,・・・,240)により可能である。
このため、先行命令と後続命令の間でレジスタ干渉の有無を判定するときには、先行命令で指定された配列レジスタの先頭の配列要素の物理番号と、後続命令で指定された配列レジスタの先頭の配列要素の物理番号を比較するのが一般的である。
また、先行命令と後続命令の間でレジスタ干渉が検出された場合、先行命令における処理結果がレジスタファイルに書き込まれるまで一定のサイクルだけ遅延させてから後続命令を実行させる技術が知られている。
以上、一般的なベクトルプロセッサの基本的な構成および動作を説明したが、以下に説明する実施形態のベクトルプロセッサは、説明しない要素については、一般的なベクトルプロセッサの構成および動作を使用して実現されるものとする。
図4は、実施形態のベクトルプロセッサ400の概略構成およびパイプラインステージを示す図である。
図4に示すように、ベクトルプロセッサ400は、ベクトルレジスタファイル401と、命令発行制御回路402と、4つの実行ユニット403〜406と、命令バッファ407と、4つのパイプラインレジスタ408と、バイパス回路412と、を含む。ベクトルプロセッサ400は、図示したパイプラインステージIF、ID、RR、EX、MAおよびWBに従ってパイプライン処理を実行する。ベクトルレジスタファイル401、4つの実行ユニット403〜406、4つのパイプラインレジスタ408およびバイパス回路412は、データパスDPを形成する。なお、図示していないが、命令発行制御回路402は、ベクトル長(VL)を指定するVLレジスタを含む。
ベクトルプロセッサ400は、図1および図2に示した一般的なベクトルプロセッサ200で、バイパス412をさらに設け、パイプラインステージにメモリアクセスを行うステージMAを増加させている。ベクトルレジスタファイル401、命令発行制御回路402、4つの実行ユニット403〜406、命令バッファ407および4つのパイプラインレジスタ408の基本的な構成および動作は、図1および図2で説明した一般的なベクトルプロセッサ200の要素と同じであり、異なる事項について説明する。
ベクトルプロセッサ400は、図示のように、4つの実行ユニット403〜406を有する。実行ユニット403〜406を、VS0、VS1、VS2およびVS3で表す。各実行ユニットは、8個のパイプライン演算器を有する。VS0およびVS1の算術論理演算ユニットALU211Aは、ロード・ストア処理および算術演算処理を実行可能な8個のパイプライン演算器を有する。VS2およびVS3の算術論理演算ユニットALU211Bは、8個の算術演算命令専用のパイプライン演算器を有する。算術演算のうち乗算処理は実行ユニットVS2およびVS3でのみ実行され、ロード・ストア処理は実行ユニットVS0およびVS1でのみ実行されるものとする。ベクトルプロセッサ400が処理するデータの基本ビット幅は16ビットであり、基本ビット幅の2倍の32ビット処理が混在したデータを処理する。ベクトル長VLは64であるとする。
上述のように、メモリアクセスを行うステージMAを増加させているため、ALU211Aおよび211Bの出力する演算結果を格納するためのパイプラインレジスタ413が設けられる。さらに、VS0およびVS1では、パイプラインレジスタ413と409の間にメモリアクセスのためのメモリアクセス回路414が設けられる。
バイパス回路412は、ALU411Aおよび411B、パイプラインレジスタ413およびパイプラインレジスタ409の出力する演算結果を、ベクトルレジスタファイル401に書き戻さずに、直接パイプラインレジスタ408に書き込む。これにより、先行命令の演算結果を後続命令に渡す場合に、レジスタへの書き込みに対する待ちの発生をなくすことができ、効率よく演算を行うことができる。
図5は、各実行ユニットのALUにおけるパイプライン演算器の構成を示す図である。
図5に示すように、各実行ユニットのALUは、8個の16ビット演算器501を有しており、隣接する2個の16ビット演算器501は、組み合わせて32ビット演算器502として動作可能である。言い換えれば、各実行ユニットのALUは、8個の16ビット演算器501を有する状態と、4個の32ビット演算器502を有する状態と、の間で動作状態を切替可能である。
図6はベクトルレジスタファイル401の構成例を示す図である。
上述のように、無線ベースバンド処理のような分野にベクトル処理回路を応用する場合、例えば、データ語長が16ビットであるハーフワード命令とデータ語長が32ビットであるワード(Word)命令のように、先行命令と後続命令の間でデータ語長が異なる命令が混在するケースが頻繁に発生する。
そこで、ベクトルレジスタファイル401においては、ハーフワード命令時の論理番号及び物理番号の割り当てが定められるとともに、ワード命令時の論理番号及び物理番号の割り当てが定められている。
まず、ハーフワード命令時の論理番号及び物理番号の割り当ての一例を、図6を用いて説明する。これらの論理番号及び物理番号の割り当ては命令発行制御回路402によって管理される。
図6に示したベクトルレジスタファイル401は、例えば、1ハーフワード(Halfword)×1024エントリの構成を有し、ベクトル長は64である(VL=64)。
図6に示した例では、1つの配列要素602はそれぞれ16ビットのデータを格納する。64個の配列要素302により1つの配列レジスタ603が構成され、ベクトルレジスタファイル401は16個の配列レジスタ603により構成されている。各配列レジスタ603には配列データ604が格納されている。
命令発行制御回路402は各配列要素602に物理番号0〜1023を割り当て、各配列レジスタ603に論理番号0〜15を割り当てる。ベクトルレジスタファイル401に対するアクセスは、配列レジスタ603の論理番号を指定することにより行われるが、更に、指定された論理番号及びベクトル長に基づいて、命令発行制御回路402が配列要素602の物理番号を生成することにより行われる。
尚、図6に示した例では、各実行ユニット(VS0、VS1、VS2、VS3)403〜406は、1サイクルで8つの配列要素602のデータを演算する。上述のとおり、各実行ユニット403〜406のALU411Aおよび411Bは、1サイクルで8個の16ビットデータを処理することができるから、1つの配列データ604の全ての部分データに対する演算処理を実行するためには、8(=64/8)サイクルが必要である。各実行ユニット403〜406のALU411Aおよび411Bは、1つの配列データ604に対して、物理番号の小さいものから8個ずつ分けられた配列要素602からなる8個の部分データを、8サイクルに分けて順番に演算していく。
次に、ワード命令時の論理番号及び物理番号の割り当ての一例を、図6を用いて説明する。これらの論理番号及び物理番号の割り当ては命令発行制御回路402によって管理される。
ワード命令時の配列レジスタの構成と対応する論理番号の割り当ては、ハーフワード命令時の配列レジスタの構成と対応する論理番号の割り当てとは異なるが、それらを利用したものとなっている。
ワード命令時においては、命令発行制御回路402は、ハーフワード命令に対して割り当てられた物理番号に関して、偶数の物理番号Aを有するものと、奇数の物理番号A+1を有するものからなる、隣接する2つの配列要素602を、1つの配列要素605として扱う。
また、命令発行制御回路402は、ハーフワード命令に対して割り当てられた論理番号に関して、偶数の論理番号Nを有するものと、奇数の論理番号N+1を有するものからなる、隣接する2つの配列レジスタ603を1つの配列レジスタ606として扱う。各配列レジスタ606には配列データ607が格納されている。
命令発行制御回路402は、各配列要素605に、対応する2つの配列要素602のうちの偶数の物理番号を有する配列要素602と同一の物理番号を割り当て、偶数のみの物理番号0,2,4,・・・,1020,1022を割り当てる。命令発行制御回路402は、各配列レジスタ606に、対応する2つの配列レジスタ603のうちの偶数の論理番号を有する配列レジスタ603と同一の論理番号を割り当て、偶数のみの論理番号0,2,4,・・・,12,14を割り当てる。ベクトルレジスタファイル401に対するアクセスは、配列レジスタ606の論理番号を指定することにより行われるが、更に、指定された論理番号とベクトル長に基づいて、命令発行制御回路402が配列要素605の物理番号を生成することにより行われる。
すなわち、ベクトルレジスタファイル401においては、データ語長が異なる命令が混在する場合、短い方のデータ語長に合わせて、配列要素及び配列レジスタのサイズや構成を定めておき、長い方のデータ語長に対しては、長い方のデータ語長と短い方のデータ語長の長さの比率に応じて、短い方のデータ語長に対して定められた配列要素及び配列レジスタを複数個組合わせて、仮想的に1つの配列要素及び配列レジスタとして取り扱う方法を採用する。
これにより、ベクトルレジスタファイル401においては、データ語長が異なる命令が混在する場合であっても、各データ語長に合わせて配列要素及び配列レジスタの割り当てを最適化することができるので、ベクトルレジスタファイルにおいて使用されない配列要素のビットをなくすことができる。
従って、実施形態に係るベクトルレジスタファイル401においては、データ語長が異なる命令が混在する場合であって、ベクトルレジスタファイル401が限られたレジスタ容量しか持たない場合であっても、これを無駄なく使用しながら、データ語長が異なる命令を適切に処理することができる。
尚、図6に示した例では、各実行ユニットは1サイクルで4つの配列要素605のデータを演算する。上述のとおり、各実行ユニット403〜406のALU411Aおよび411Bは1サイクルで4個の32ビットのデータを処理することができるからである。1つの配列レジスタ606が64個の配列要素605により構成されることから、1つの配列データ607の全ての部分データに対する演算処理を実行するためには、16(=64/4)サイクルが必要である。各実行ユニット403〜406のALU411Aおよび411Bは1つの配列データ607に対して、物理番号の小さいものから4個ずつ分けられた配列要素605からなる64個の部分データを、16サイクルに分けて順番に演算していく。
図4に示すように、命令発行制御回路402は、IDステージで命令を発行する命令発行部411を有し、RR、EX、MAおよびWBの各ステージで、データパスDPの各部を制御するスロット制御信号を出力する。
図7は、命令発行制御回路402が4つの実行ユニット(VS0、VS1、VS2、VS3)403〜406に対して発行する命令構成と、スロット制御信号の信号構成を示す図である。
命令発行部411は、命令バッファ407から受けとった命令に基づいて、VS0、VS1、VS2、VS3の動作を制御する信号を発行する。この信号は、発行する命令、処理対象のデータ系列を含み、VS0、VS1、VS2、VS3ごとに出力される。
RR、EX、MAおよびWBの各ステージで命令発行制御回路402が出力するスロット制御信号は、制御信号およびオペランドを指定するオペランド指定データが含まれる。
以下、実施形態のペクトルプロセッサの動作を、具体的な処理を行う場合を例として説明する。
図8は、実施形態のペクトルプロセッサを動作させるためのプログラムの例を示し、(A)はオリジナルC言語で記載したプログラムを、(B)はベクトル化C言語で記載したプログラムを示す。
図8(A)の繰り返し部分の処理は、図8(B)では、データロード命令vld32、即値命令addi、変換命令vcut16、ストア命令vst16、およびインクリメント命令addiで表される。vld32は、32ビットのデータロード命令で、レジスタvsr1のアドレスから32ビットデータをVL個読み出してvr0レジスタに格納する命令である。addiは、スカラレジスタに対する即値加算命令で、vsr1レジスタに256を加算してvsr1に格納する命令である。vcut16は、32ビットのデータを16ビットのデータに変換する命令で、vr0レジスタに格納されているVL個の32ビットデータをVL個の16ビットデータに変換し、vr2レジスタに格納する命令である。vst16は、vr3レジスタの値をvsr3レジスタのアドレスに16ビットでストアする命令である。addiは、ストアアドレスを128インクリメントする命令である。
実施形態のベクトルプロセッサでは、図8のプログラムを実行する場合に、vld32命令およびvcut16命令をそれぞれ2つの実行ユニットを利用して8サイクルで処理する。実施形態のベクトルプロセッサの動作を説明する前に、vld32命令およびvcut16命令をそれぞれ1つの実行ユニットで処理した場合の動作を説明する。
図9は、vld32命令およびvcut16命令をそれぞれ1つの実行ユニットで処理した場合の処理シーケンスを示す図であり、繰り返しループの2回目のループの途中までを表現している。
最初のvld32命令は、32ビット命令のため、VS0で、パイプライン演算器を2個組み合わせた32ビット演算器を4個利用し、4つずつデータを処理する。vld32命令は、1サイクル目から開始され、64個のデータの読み出しに16サイクルを必要とする。
addi命令は、スカラ実行ユニットSSで実行し、1サイクルで終了する。
vcut16命令は、32ビットデータを16ビットデータに変換するため、VS2で、パイプライン演算器を2個組み合わせた32ビット演算器を4個利用し、4つずつデータを処理する。vcut16命令は、vld32命令の演算結果を処理対象とするため、vld32命令の最初の演算結果が出力された後開始される。この際、演算結果をメモリからロードする必要があり、そのために1サイクルのペナルティがあるため、vld32命令の処理は、4サイクル目から開始され、64個のデータを変換するのに16サイクルを必要とする。
vst16命令は、16ビットデータをレジスタにストアする処理であり、VS0で、16ビットパイプライン演算器を8個利用し、8つずつデータを処理し、8サイクルで終了する。vst16命令は、vcut16命令の演算結果を処理対象とするため、vcut16命令の演算結果が求められた後でなければ開始できない。この際、vcut16命令の演算結果が求められる19サイクル目から逆算して、vst16命令は、13サイクル目から開始される。
2回目のループは、VS0での1回目のループのvld32命令が終了した後17サイクル目から開始される。以下、上記と同じ処理が繰り返される。
図10は、図9の処理シーケンスを行う場合の命令発行制御回路402の命令発行部411における命令発行処理を示すフローチャートである。
ステップS1では、実行中のすべての先行命令に対し、発行する後続命令のペナルティ値の判定が完了したかを判定し、完了していなければステップS2に進み、完了していればステップS3に進む。
ステップS2では、先行命令に対し、発行する後続命令のペナルティ値の判定を行い、ステップS1に戻る。ペナルティ値の判定については後述する。
ステップS3では、すべての先行命令に対する後続命令のペナルティ値が、1つでも1以上のものが無いか判定し、あればステップS5に進み、無ければステップS4に進む。
ステップS4では、発行しようとしている後続命令が、先行命令を実行している実行ユニットを使用する資源競合が発生するか判定し、発生する場合にはステップS5に進み、発声しなければステップS6に進む。
ステップS5では、後続命令の発行を見合わせるストールを行い、最初に戻る。この場合、後続命令の発行を遅らせた上で、再度S1からS5をS6に進むまで繰り返す。
ステップS6では、後続命令を発行して終了する。
以上のように、図10のフローチャートに従って命令発行処理を行う場合、実行中の各命令とのペナルティおよび資源競合を判定して、ペナルティがなく資源競合が発生していない場合に、命令を発行する。図9の処理シーケンスでは、命令のデータ幅によらず1つの実行ユニットに対して命令を発行するため、32ビット演算は16ビット演算の2倍の処理時間を要するため、ペナルティが増大することになる。このため、図9に示すように、vcut16命令で32ビットデータを16ビットデータに変換するのに16サイクルを必要とし、実行ユニットは空き状態であるにもかかわらず、8サイクルの待ちが発生する。このように、vst16を実行する実行ユニットは空いているにもかかわらず、長い待ちが発生する。
図11は、実施形態のベクトルプロセッサで、図8のプログラム処理した場合の処理シーケンスを示す図であり、繰り返しループの2回目のループの途中までを表現している。
実施形態のベクトルプロセッサでは、図8のプログラムを実行する場合に、vld32命令およびvcut16命令をそれぞれ2つの実行ユニットを利用して8サイクルで処理する。
vld32命令は、32ビットのロード・ストア命令であるため、VS0およびVS1の2つの実行ユニットを利用して実行する。実行ユニットのパイプライン演算器の個数をn(ここではn=8)とし、VL/n=8個のデータを実行ユニットVS0で2サイクルをかけて実行する。次の1サイクル遅れたサイクルで、次の8個のデータを実行ユニットVS1で2サイクルかけて実行する。これにより、vld32命令は、図9のシーケンスに比べて約1/2の9サイクルで実行される。
また、vcut16命令は、空いている実行ユニットVS2およびVS3を用いて同様に処理が行なわれる。VS2におけるvcut16命令の処理は、VS0におけるvld32命令の開始から3サイクル遅れて開始される。VS3におけるvcut16命令の処理は、VS1におけるvld32命令の開始から同様に3サイクル遅れて開始される。したがって、vcut16命令は、図9のシーケンスに比べて約1/2の9サイクルで実行される。
VS0およびVS1がvld32命令を実行し、VS2およびVS3がvcut16命令を実行している間、空き状態のパイプライン演算器は無い。そのため、後続のvst16命令は、VS0が空き状態になるのを待って9番目のサイクルから開始される。vst16命令は、VS0で、16ビットパイプライン演算器を8個利用し、8つずつデータを処理し、8サイクルで終了する。
以上のように、図11の処理シーケンスでは、vld32、vct16およびvst16は、命令の実行完了に要するサイクル数がほぼ一致しており、ペナルティを小さくできるので、待ち時間を削減してデータをバイパスすることができる。
図12は、図11の処理シーケンスを行う場合の命令発行制御回路402の命令発行部411における命令発行処理を示すフローチャートである。ここで、1命令の1系列のデータをx個の実行ユニットで実行する場合に、0番目からx−1番目の実行ユニットを表すパラメータkを導入する。したがって、k<xである。例えば、図11の処理シーケンスで、vld32は1命令で、その処理対象のデータは2副系列(x=2)に分けられ、1番目(k=0)の実行ユニットと、2番目(k=1)の実行ユニットと、で実行される。vct16についても同様である。
ステップS11では、新規のフェッチ命令であるかを判定し、新規のフェッチ命令であればステップS12に進み、新規でなければステップS13に進む。
ステップS12では、パラメータkに0を設定する。
ステップS13では、実行中のすべての先行命令に対し、副系列kについて発行する後続命令のペナルティ値の判定が完了したかを判定し、完了していなければステップS14に進み、完了していればステップS15に進む。
ステップS14では、先行命令に対し、発行する副系列kについての後続命令のペナルティ値の判定を行い、ステップS1に戻る。ペナルティ値の判定については後述する。
ステップS15では、すべての先行命令に対する後続命令のペナルティ値が、1つでも1以上のものが無いか判定し、あればステップS17に進み、無ければステップS16に進む。
ステップS16では、発行しようとしている後続命令が、先行命令を実行している実行ユニットを使用する資源競合が発生するか判定し、発生する場合にはステップS17に進み、発声しなければステップS18に進む。
ステップS17では、発行しようとしている後続命令の発行を見合わせるストールを行い、最初に戻る。この場合、後続命令の発行を遅らせた上で、再度S1からS5をS6に進むまで繰り返す。
ステップS18では、副系列kを対象として後続命令を発行し、k=k+1としてステップS19に進む。
ステップS19では、x=kであるかを判定し、x=kであればステップS20に進み、x=kでなければ一旦この処理を終了する。
ステップS20では、次の命令をフェッチし、一旦この処理を終了する。
一旦この処理を終了した後、適宜上記の処理を繰り返す。
次に、ペナルティ値の判定について説明する。
上記のように、kは、1命令の1系列のデータをx個の実行ユニットで実行する場合に、0番目からx−1番目の実行ユニットを表す。
ステップS14では、実行中の各命令に対し、フェッチされた命令(発行命令と呼ぶ)のk番目の副系列に対してペナルティ値を求める。なお、副系列kは発行命令のデータ幅xによって異なるベクトル・データの集合である。
基本ビット幅*xの演算に対するベクトル・レジスタvr0に対する副系列kのデータは、次の通り表される。
副系列k = { vr[i*n + k*(n/x) +j] | 0 ≦ i < VL/n, 0 ≦ j < n/x }
まず、図9および図10に示した1命令の1系列のデータを1個の実行ユニットで実行する場合のペナルティ値は次のように求められる。
ペナルティ値(Ie,Ii,Ce) =
max(RAWペナルティ値(Ie,Ii,Ce), WAWペナルティ値(Ie,Ii,Ce), WARペナルティ値(Ie,Ii,Ce))
RAWペナルティ値(Ie, Ii, Ce) = RAWレジスタ干渉(Ie,Ii)? max(RAW最大ペナルティ値(Ie,Ii) - Ce, 0) : 0
WAWペナルティ値(Ie, Ii, Ce) = WAWレジスタ干渉(Ie,Ii)? max(WAW最大ペナルティ値(Ie,Ii) - Ce, 0) : 0
WARペナルティ値(Ie, Ii, Ce) = WARレジスタ干渉(Ie,Ii)? max(WAR最大ペナルティ値(Ie,Ii) - Ce, 0) : 0
RAWレジスタ干渉(Ie,Ii) = (出力レジスタ番号(Ie) == 入力レジスタ番号(Ii))
WAWレジスタ干渉(Ie,Ii) = (出力レジスタ番号(Ie) == 出力レジスタ番号(Ii))
WARレジスタ干渉(Ie,Ii) = (入力レジスタ番号(Ie) == 出力レジスタ番号(Ii))
実行中の命令Ieに対して、判定対象の命令Iiに対して、RAW, WAW, RAWの各ケースに対してペナルティ値を求め、最大の値を全体のペナルティ値とする。RAWレジスタ干渉する場合は、実行中の命令Ieと判定対象の命令Iiの間の最大ペナルティ値を求め、実行中の命令が発行されてから経過したサイクル数を引いた値をRAWペナルティ値とする。ただし、減算した結果、0より小さくなる場合は0とする。また、レジスタ干渉が発生しない場合は0とする。RAW最大ペナルティ値(Ie,Ii)は、先行命令Ieの直後にIi命令が連続発行された場合のペナルティ値で、命令の組み合わせによって一意に決まる値である。また、RAWレジスタ干渉は、実行中の命令Ieが出力するレジスタ番号と判定対象の命令Iiのレジスタ番号が一致する場合に発生する。WAW, WARについてもRAWの場合と同様である。
図11および図12に示した1命令の1系列のデータをx個の実行ユニットで実行する場合のペナルティ値は次のように求められる。
ペナルティ値(Ie,Ii,ke,ki,Ce) =
max(RAWペナルティ値(Ie,Ii,ke,ki,Ce), WAWペナルティ値(Ie,Ii,ke,ki,Ce), WARペナルティ値(Ie,Ii,ke,ki,Ce))
RAWペナルティ値(Ie,Ii,ke,ki,Ce) = (RAWレジスタ干渉(Ie,Ii) && (系列衝突(Ie,Ii, ke, ki)))? max(RAW最大ペナルティ値(Ie,Ii) - Ce, 0) : 0
WAWペナルティ値(Ie,Ii,ke,ki,Ce) = (WAWレジスタ干渉(Ie,Ii) && (系列衝突(Ie,Ii, ke, ki)))? max(WAW最大ペナルティ値(Ie,Ii) - Ce, 0) : 0
WARペナルティ値(Ie,Ii,ke,ki,Ce) = (WARレジスタ干渉(Ie,Ii) && (系列衝突(Ie,Ii, ke, ki)))? max(WAR最大ペナルティ値(Ie,Ii) - Ce, 0) : 0
RAWレジスタ干渉(Ie,Ii) = (出力レジスタ番号(Ie) == 入力レジスタ番号(Ii))
WAWレジスタ干渉(Ie,Ii) = (出力レジスタ番号(Ie) == 出力レジスタ番号(Ii))
WARレジスタ干渉(Ie,Ii) = (入力レジスタ番号(Ie) == 出力レジスタ番号(Ii))
系列衝突(Ie,Ii, ke, ki) = ((インデックス(xe, ke) ∩ インデックス(xi, ki) ) ≠ φ)
インデックス(x, k) = { t * x + k | 0 ≦ t < (X/x) }
ここで、系列衝突をハードウェアで実装するならば、
(xe > xi) ? (ke/(xe/xi) == ki) : (ke == ki/(xi/xe))
とすることもできる。
ただし、
Ie: 実行中の命令
Ii: 判定対象命令
Ce: 実行中命令の発行後サイクル数
xe: 実行中命令のデータ幅
ke: 実行中命令のデータ系列
xi: 判定対象命令のデータ幅
ki: 判定対象命令のデータ系列
X: 命令セットで定義されるxの最大値
上記の算出方法では、実行中の先行命令leに対して発行している命令liがRAWレジスタ干渉を起こしていない場合は次の実行ユニットをチェックする。RAWレジスタ干渉が発生しており、実行中命令で処理中のデータ系列keに対して、発行しようとしている命令liのデータ系列が重なっている場合は、命令間のペナルティ値を求める。命令間のペナルティ値は命令セットによって決まるものを想定する。ペナルティ値よりも実行中の先行命令の発行されたサイクル数が多い場合は、ペナルティ値を0とする。サイクル数が少ない場合は、差分をペナルティ値とする。これをWAR, RAWについても計算し、最も大きな値をペナルティ値として返す。
ステップS15では、全ての先行命令に対してペナルティを判定し、その結果ペナルティがある(ペナルティが1以上)場合は、ステップS17でストールする。ペナルティがなく、ステップS16で資源競合が発生しないと判定した場合は、ステップS17で、系列kを対象としてフェッチした命令を発行する。命令を発行すると、kを1増加し、kがxに到達するまで、フェッチした命令の発行を続け、kがxに到達すると次命令のフェッチを行なう。
図13は、図11の処理シーケンスにおけるバイパス回路412の動作を説明する図である。
レジスタ・リードステージ(RR)では、発行された命令に対して、系列kの中の(n/x)個のデータをそれぞれリードして、実行ステージに送る。
ここで、レジスタ・リードステージでは、実行中の各パイプラインに対して、処理するデータのバイパスを判定し、バイパスするデータか存在する場合は、最も近いステージからデータをバイパスする。例えば、図11において、vld32命令によりVS0で処理された配列要素0−7、16−23、32−39および48−55のデータに対する処理結果は、vcut16命令によりVS2でただちに利用される。そこで、VS0から出力された配列要素0−7、16−23、32−39および48−55のデータに対する処理結果は、ベクトルレジスタファイル401を介さずに、バイパス回路412により、VS2に接続されるパイプラインレジスタ408に格納される。VS1から出力された配列要素8−15、24−31、40−47および56−63のデータに対する処理結果も、ベクトルレジスタファイル401を介さずに、バイパス回路412により、VS3に接続されるパイプラインレジスタ408に格納される。これにより、読み出しにおける待ちを低減できる。
なお、バイパスするかの判定を行う判定回路が、命令発行制御回路402に設けられるが、判定回路を簡略化するために、ベクトル・レジスタを(n/x)個単位でインデックス化して判定する。
図11に示した実施形態のベクトルプロセッサの処理シーケンスでは、処理の実行中に、空き状態の実行ユニットが無い、すなわち実行ユニットの不足に起因する待ちが発生している。例えば、実施形態のベクトルプロセッサで、6個の実行ユニットVS0〜VS5を設け、VS0〜VS2の3つがロード・ストア処理可能で、VS3〜VS5が乗算処理可能で、VS0〜VS5が算術演算を実行可能とすると、図14に示す処理シーケンスが実現できる。図14の処理シーケンスでは、さらに待ちが解消されて性能が向上する。
以上、実施形態を説明したが、記載した例には各種の変形例が可能である。例えば、上記の実施形態では、16ビット演算と32ビット演算が混在する場合の例を説明したが、32ビット演算と64ビット演算が混在する場合にも、16ビット演算と32ビット演算と64ビット演算が混在する場合にも、適用可能であり、演算のビット数は限定されない。また、実行ユニット数、ALU数等も、記載した例に限定されるものではない。
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
400 ベクトルプロセッサ
401 ベクトルレジスタファイル
402 命令発行制御回路
403〜406 実行ユニット
411A,411B 算術論理演算ユニット
501 16ビット演算器
502 32ビット演算器

Claims (5)

  1. 複数の配列要素を含むベクトルレジスタファイルと、
    各々が前記配列要素に格納されたデータに対して演算処理を行う複数のパイプライン演算器を有する複数の実行ユニットと、
    命令を発行し、前記命令に基づいて前記ベクトルレジスタファイル及び前記実行ユニットの動作を制御することにより、パイプライン処理を制御する命令発行制御回路と、を備え、
    前記命令発行制御回路は、1系列のデータの個数を規定するベクトル長を記憶するベクトル長レジスタを備え、前記ベクトル長で規定された前記1系列のデータを処理するように前記複数の実行ユニットに命令をそれぞれ発行するベクトルプロセッサであって、
    2つ以上の前記実行ユニットは、前記基本ビット幅のデータを処理する複数の基本パイプライン演算器を備え、前記複数の基本パイプライン演算器は、x(x≦X、X:2のべき)個の前記基本パイプライン演算器を組合せて、前記基本ビット幅のx倍のビット幅のデータを処理可能であり、
    前記命令発行制御回路は、前記基本ビット幅のx倍のビット幅の1系列のデータの処理を実行する場合に、1系列のデータの処理をx個の前記実行ユニットで実行することが適切であるか判定し、適切であると判定した時に、前記1系列のデータの処理をx個の前記実行ユニットで実行する命令を発行する
    ことを特徴とするベクトルプロセッサ。
  2. 前記命令発行制御回路は、1系列のデータの処理をx個の前記実行ユニットで実行することが可能であり、かつ実行する場合のペナルティが小さい時に、前記1系列のデータの処理をx個の前記実行ユニットで実行することが適切であると判定する請求項1記載のベクトルプロセッサ。
  3. 前記ベクトルプロセッサは、m(m:2のべき)個の実行ユニットを有し、
    各実行ユニットは、n(n:2のべき)個のパイプライン演算器を有し、
    前記ベクトル長は、VL(VL:2のべき)であり、
    前記基本ビット幅は、w(w:2のべき)であり、
    Xは、mおよびn以下であり、
    前記基本ビット幅wの処理を行う命令は、1つの前記実行ユニットを使用して、VL/nサイクル+命令固有のペナルティで、処理が実行され、
    前記基本ビット幅wのx倍のビット幅の処理を行う命令は、1系列のデータをn個ずつx個の副系列のデータに分割され、x個の副系列のデータは、x個の前記実行ユニットを使用して、VL/nサイクル+命令固有のペナルティで、処理が実行される請求項1または2記載のベクトルプロセッサ。
  4. 前記ベクトルプロセッサは、前記複数の実行ユニットに対応して設けられ、各実行ユニットで処理するデータを保持する複数のパイプラインレジスタを備え、
    前記命令発行制御回路は、前記1系列のデータを、x個の前記実行ユニットに対応して設けられたx個の前記パイプラインレジスタに格納する命令を発行する請求項1から3のいずれか1項記載のベクトルプロセッサ。
  5. 前記ベクトルプロセッサは、前記複数の実行ユニットの処理結果を、前記ベクトルレジスタファイルを介さずに、前記複数のパイプラインレジスタに直接書き込むバイパス回路を備える請求項4記載のベクトルプロセッサ。
JP2012000048A 2012-01-04 2012-01-04 ベクトルプロセッサ Expired - Fee Related JP5786719B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012000048A JP5786719B2 (ja) 2012-01-04 2012-01-04 ベクトルプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012000048A JP5786719B2 (ja) 2012-01-04 2012-01-04 ベクトルプロセッサ

Publications (2)

Publication Number Publication Date
JP2013140472A true JP2013140472A (ja) 2013-07-18
JP5786719B2 JP5786719B2 (ja) 2015-09-30

Family

ID=49037854

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012000048A Expired - Fee Related JP5786719B2 (ja) 2012-01-04 2012-01-04 ベクトルプロセッサ

Country Status (1)

Country Link
JP (1) JP5786719B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013152544A (ja) * 2012-01-24 2013-08-08 Fujitsu Semiconductor Ltd 命令制御回路、プロセッサ、及び命令制御方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02304676A (ja) * 1989-05-19 1990-12-18 Mitsubishi Electric Corp ディジタル信号処理装置
JP2006285721A (ja) * 2005-04-01 2006-10-19 Seiko Epson Corp 演算処理装置および演算処理方法
US20070143577A1 (en) * 2002-10-16 2007-06-21 Akya (Holdings) Limited Reconfigurable integrated circuit
JP2008250471A (ja) * 2007-03-29 2008-10-16 Nec Corp 再構成可能なsimd型プロセッサ
JP2011522317A (ja) * 2008-05-29 2011-07-28 アクシス・セミコンダクター・インコーポレーテッド リアルタイムな信号処理及び更新のためのマイクロプロセッサ技術
JP2012103959A (ja) * 2010-11-11 2012-05-31 Fujitsu Ltd ベクトル処理回路、命令発行制御方法、及びプロセッサシステム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02304676A (ja) * 1989-05-19 1990-12-18 Mitsubishi Electric Corp ディジタル信号処理装置
US20070143577A1 (en) * 2002-10-16 2007-06-21 Akya (Holdings) Limited Reconfigurable integrated circuit
JP2006285721A (ja) * 2005-04-01 2006-10-19 Seiko Epson Corp 演算処理装置および演算処理方法
JP2008250471A (ja) * 2007-03-29 2008-10-16 Nec Corp 再構成可能なsimd型プロセッサ
JP2011522317A (ja) * 2008-05-29 2011-07-28 アクシス・セミコンダクター・インコーポレーテッド リアルタイムな信号処理及び更新のためのマイクロプロセッサ技術
JP2012103959A (ja) * 2010-11-11 2012-05-31 Fujitsu Ltd ベクトル処理回路、命令発行制御方法、及びプロセッサシステム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6015015099; 葛毅,外6名: '組み込み向けベクトルアーキテクチャ' 情報処理学会研究報告 Vol:2011-ARC-196,No:20, 20110815, Pages:1〜7, 一般社団法人情報処理学会 *
JPN6015015101; 松浦克彦,外2名: 'マルチスレッド技術を用いたマルチメディア処理向けベクトルユニットの設計と実装' 情報処理学会研究報告 第2003巻, 20030508, Vol:2003,No:40,(2003-ARC-153), 社団法人情報処理学会 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013152544A (ja) * 2012-01-24 2013-08-08 Fujitsu Semiconductor Ltd 命令制御回路、プロセッサ、及び命令制御方法

Also Published As

Publication number Publication date
JP5786719B2 (ja) 2015-09-30

Similar Documents

Publication Publication Date Title
JP5699554B2 (ja) ベクトル処理回路、命令発行制御方法、及びプロセッサシステム
KR102413832B1 (ko) 벡터 곱셈 덧셈 명령
US7937559B1 (en) System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes
CN112099852A (zh) 可变格式、可变稀疏矩阵乘法指令
US9164763B2 (en) Single instruction group information processing apparatus for dynamically performing transient processing associated with a repeat instruction
KR101048234B1 (ko) 마이크로프로세서 내부의 다수의 레지스터 유닛들을 결합하기 위한 방법 및 시스템
WO2015114305A1 (en) A data processing apparatus and method for executing a vector scan instruction
KR20030067892A (ko) 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
US10303399B2 (en) Data processing apparatus and method for controlling vector memory accesses
US20030005261A1 (en) Method and apparatus for attaching accelerator hardware containing internal state to a processing core
JP5326314B2 (ja) プロセサおよび情報処理装置
CN101438236A (zh) 用以在微处理器内组合来自多个寄存器单元的对应半字单元的方法及系统
JPH06242953A (ja) データ・プロセッサ
CN116662255A (zh) 结合超越函数硬件加速器的risc-v处理器实现方法及系统
KR20210156860A (ko) True/false 벡터 인덱스 레지스터
TWI770079B (zh) 向量產生指令
JPH10222368A (ja) データ処理装置
CN112506468A (zh) 支持高吞吐多精度乘法运算的risc-v通用处理器
US8055883B2 (en) Pipe scheduling for pipelines based on destination register number
JP5786719B2 (ja) ベクトルプロセッサ
JP2014164659A (ja) プロセッサ
US20090063808A1 (en) Microprocessor and method of processing data
KR20010085353A (ko) 고속 컨텍스트 전환을 갖는 컴퓨터
EP3942407A1 (en) Processor device and a method for parallel processing instructions in a processor device
US20140281368A1 (en) Cycle sliced vectors and slot execution on a shared datapath

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140904

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150409

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150421

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150617

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: 20150630

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150713

R150 Certificate of patent or registration of utility model

Ref document number: 5786719

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees