JP3656587B2 - 並列演算プロセッサ、その演算制御方法及びプログラム - Google Patents

並列演算プロセッサ、その演算制御方法及びプログラム Download PDF

Info

Publication number
JP3656587B2
JP3656587B2 JP2001305786A JP2001305786A JP3656587B2 JP 3656587 B2 JP3656587 B2 JP 3656587B2 JP 2001305786 A JP2001305786 A JP 2001305786A JP 2001305786 A JP2001305786 A JP 2001305786A JP 3656587 B2 JP3656587 B2 JP 3656587B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
parallel
arithmetic
loop
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
Application number
JP2001305786A
Other languages
English (en)
Other versions
JP2003108368A (ja
Inventor
大二 石井
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2001305786A priority Critical patent/JP3656587B2/ja
Priority to US10/254,543 priority patent/US7136989B2/en
Publication of JP2003108368A publication Critical patent/JP2003108368A/ja
Application granted granted Critical
Publication of JP3656587B2 publication Critical patent/JP3656587B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は並列演算プロセッサ、その演算制御方法及びプログラムに関し、特に消費電力の少ない高速なループ処理を可能とする並列演算プロセッサ、その演算制御方法及びプログラムに関する。
【0002】
【従来の技術】
代表的な並列演算プロセッサの一つにDSP(ディジタル・シグナル・プロセッサ)がある。DSPは、ディジタル信号処理の特徴である「処理の並列性」を利用して、複数の演算器を並列に動作させることでディジタル信号処理プログラムを高速に実行する。
【0003】
例えば、典型的なディジタル信号処理であるFIRフィルタでは以下のような計算を行なう。
y(n)=a(0)x(n)+a(1)x(n-1)+a(2)x(n-2)+a(3)x(n-3) (1)
但し、y(n)は時刻nのフィルタ出力、x(n−1)は時刻n−iのフィルタ入力、a(i)はi番目のフィルタ係数を表す。この計算は、次の3処理▲1▼▲2▼▲3▼のi=0,1,2,3に関する繰り返しである。
▲1▼:a(i)をメモリからロードする。
▲2▼:x(n−i)をメモリからロードする。
▲3▼:a(i)とx(n−i)を乗算し、その結果を累加算する。
【0004】
一般的なDSPでは、この点に着目してメモリからデータをロードするユニット2個と、乗算と累加算を行なうユニット1個を有し、これらユニットを並列動作させる。これにより、▲1▼▲2▼▲3▼を並列に処理することができるため、式(1)の計算を高速に実行することができる。
【0005】
演算器の搭載数は今後ますます増加することが予想される。一方、プロセッサ内の演算資源が増えるにつれて消費電力も増加する。そのため、メモリアクセスに用いるバス等の演算器以外の演算資源をできるだけ減らして、消費電力の増加を抑える必要がある。
【0006】
このような消費電力の低減を目的とした並列演算プロセッサとして、従来、図6に示すように、搭載する演算器の数に対して並列に発行可能な命令数を少なくすることで、命令発行に関係する演算資源を減らすプロセッサが提案されている。
【0007】
図6には、この並列演算プロセッサの構成が示されている。本プロセッサは、演算器の個数nより少ない最大m個の命令を並列に発行できる機構を有している。具体的には、メモリからm個の命令を同時にフェッチする命令バス201と、フェッチした命令を保持するm個の命令レジスタIR1〜IRm202と、レジスタ202から読み出したm個の命令を同時にデコードする命令デコーダD1〜Dm203と、命令デコーダ203による命令のデコード結果を並列に発行する命令ディスパッチャ204と、発行された命令を並列に実行するn個の演算器E1〜En205と、演算器205に入力データを供給したり、同ユニットの出力結果を格納する汎用レジスタファイル206とを含んで構成される。なお、命令ディスパッチャ204は、並列に発行する命令数を命令間のデータ依存関係により決定し、本命令数として1〜mの任意の値を取ることができる。
【0008】
次に、本プロセッサの動作について説明する。まず、命令バス201を介して命令メモリからm個の命令を同時にフェッチし、フェッチした同命令を命令レジスタ202に書き込む。そして、命令レジスタ202から読み出したm個の命令を命令デコーダ203により並列にデコードし、m個のデコード結果を命令ディスパッチャ204に供給する。命令ディスパッチャ204は、命令どうしの依存関係に基づいて並列発行命令数1〜mを決定し、1〜m個の命令を同時に発行する。こうして発行された1〜m個の命令を、n個ある演算器205のいずれかで実行する。
【0009】
【発明が解決しようとする課題】
上述した従来の並列演算プロセッサは、処理の並列性を利用しにくい分岐やIF−ELSE文などの制御処理が多いプログラムの実行には有効である。しかし、命令発行数と演算器の個数が一致していないことから明らかなように、演算器の個数に見合った性能を十分に発揮していない。
【0010】
このような課題を解決するため、低消費電力を維持しつつ、命令発行数と演算器の個数を一致させることでより大きな演算能力を引き出すことができる並列演算プロセッサとして、例えば特開平7−110769号公報に開示されたものが知られている。本プロセッサは、命令をフェッチするバスのバンド幅を小さくしたままで、フェッチした命令をバッファに蓄積してから演算器の個数と同じ命令発行数で並列に実行する。
【0011】
ところで、並列演算プロセッサとしてDSPを想定する場合、ディジタル信号処理プログラムに多い、一連の命令列を繰り返し実行するループ処理を高速に実行することが要求される。こうした観点から、従来より、ループ処理を高速に実行する方法として、ゼロオーバヘッドループ等の工夫がなされている。ゼロオーバヘッドループとは、繰り返し実行すべき一連の命令モジュールの最初に、予め繰り返すべき命令のステップ数と、繰り返す回数、即ちリピート回数を指定する命令を設け、この命令モジュールの最後尾までくると自動的にモジュールの先頭番地に戻り、分岐命令の実行によるオーバヘッドをなくす制御方法である。
【0012】
しかし、特開平7−110769号公報に記載の並列演算プロセッサは、ループ処理を効率的に実行することが目的ではないため、ループ処理においてループの終端にある命令から先頭にある命令へ実行シーケンスを移すのにオーバヘッドが発生する構造になっている。
【0013】
本発明は上記事情に鑑みてなされたものであり、電力消費を抑制しつつ、演算器と同数の命令を並列に発行してループ処理を高速に実行する並列演算プロセッサ、その演算制御方法及びプログラムを提供することを目的とする。
【0014】
【課題を解決するための手段】
係る目的を達成するために請求項1記載の発明は、命令メモリから1からm個(mは任意の自然数)の命令を並列にフェッチする命令バスと、フェッチした命令を保持する命令レジスタと、命令レジスタから読み出した1からm個の命令を並列にデコードする命令デコーダと、デコードされた1からm個の命令を並列に発行する命令ディスパッチャと、命令デコーダによってデコードされた1からm個の命令が並列に直接入力され、それらの命令を保持し、n個(nはmよりも大きい任意の自然数)の前記命令を並列に発行する命令バッファと、ループ処理を行わない通常命令モード、1回目のループ処理を行うVLOOP初回モード、及び2回目以降のループ処理を行うVLOOPモードのいずれかに切り替わるようにループ処理のシーケンスを制御すると共に命令バッファにおける命令の蓄積及び発行を制御するループ制御ユニットと、ループ制御ユニットの制御に基づいて命令ディスパッチャが発行した命令あるいは命令バッファが発行した命令の何れかを選択するマルチプレクサと、マルチプレクサによって選択された1からm個またはn個の命令を同時に実行するn個の演算器と、を具備することを特徴とする。
【0015】
請求項2記載の発明は、請求項1記載の発明において、ループ制御手段は、ループ処理の開始を宣言する命令をデコードすることにより命令バッファへの命令の蓄積を開始し、n個の命令が蓄積される度にn個の命令を並列に発行し、n個の演算器によって同時に実行され、ループ処理を形成するすべての命令の蓄積が終了すると、それ以降のループ処理の繰り返しでは命令バッファに蓄積された命令をn個ずつ並列に発行するように制御することを特徴とする。
【0016】
請求項3記載の発明は、命令メモリより並列に読み出され、デコードされたm個(mは任意の自然数)の命令を命令ディスパッチャで並列に発行してn個(nはmより大きい任意の自然数)の演算器の何れかで演算を行なう並列演算プロセッサの演算制御方法であって、ループ処理の開始を宣言するVLOOP命令をデコードすることで命令バッファへデコードされた命令の蓄積を開始し、n個の命令が蓄積される度にこれらの命令を発行してn個の演算器で同時に演算を実行し、1回目のループ処理のためのすべての命令の蓄積が終了するとそれ以降のループ処理では命令バッファに蓄積された命令をn個ずつ並列に発行してn個の演算器で同時に演算を実行することを特徴とする。
【0017】
請求項4記載の発明は、命令メモリより並列に読み出され、デコードされたm個(mは任意の自然数)の命令を命令ディスパッチャで並列に発行してn個(nはmより大きい任意の自然数)の演算器の何れかで演算を行なう並列演算プロセッサに適用される演算制御プログラムであって、ループ処理の開始を宣言するVLOOP命令をデコードすることで命令バッファへデコードされた命令の蓄積を開始させ、n個の命令が蓄積される度にこれらの命令を発行させてn個の演算器で同時に演算を実行させ、1回目のループ処理のためのすべての命令の蓄積が終了すると、それ以降のループ処理では命令バッファに蓄積した命令をn個ずつ並列に発行させてn個の演算器で同時に演算を実行させることを特徴とする。
【0018】
本発明は、ループ処理の開始を宣言する命令をデコードすることにより命令バッファ(図1の105)へ命令の蓄積を開始し、搭載する演算器と同数の命令が蓄積される度にこれら命令を並列に発行し、すべての命令の蓄積が終了した後は命令バッファに蓄積済みの命令を繰り返して並列発行するように制御するループ制御ユニット(図1の106) を有する。
【0019】
このように、ループ処理において搭載する演算器をすべて動作させる並列命令発行を可能とし、かつループ処理のシーケンスを小さいオーバヘッドで制御できる手段を有することにより、ループ処理を高速に実行することができる。
【0020】
【発明の実施の形態】
(構成の説明)
本発明の実施の一形態について図面を参照して説明する。図1 は本発明による並列演算プロセッサの実施の一形態を示すブロック図である。同図において、本プロセッサは、通常の命令( 以下、通常命令) 、あるいは搭載する演算器の個数nと同じ数の通常命令を連結した命令( 以下、VLIW型命令) のいずれかをモードに応じて選択的に実行できる機構を有しており、命令メモリからm個(ただし、nはmの整数倍)の通常命令を並列にフェッチする命令バス101と、フェッチした通常命令を保持するm個の命令レジスタIR1〜IRm102と、命令レジスタ102から読み出したm個の通常命令を同時にデコードする命令デコーダD1〜Dm103と、命令デコーダ103によるデコード結果を1〜mの並列命令数で発行する命令ディスパッチャ104と、命令デコーダ103によるm個のデコード結果112を逐次蓄積してn個の通常命令からなるVLIW型命令を構築し、複数のVLIW型命令からなるVLIWルーチンを保持する命令バッファ105と、ループ処理時の命令蓄積と発行およびシーケンスを制御するループ制御ユニット106と、命令ディスパッチャ104から発行された1〜m個の通常命令、あるいは命令バッファ105から発行されたVLIW型命令のいずれかを選択するn個のマルチプレクサM1〜Mn107と、これら通常命令、あるいはVLIW型命令を実行するn個の演算器E1〜En108と、演算器108に入力データを供給したり、同ユニットの出力結果を格納する汎用レジスタファイル109と、命令アドレスを保持し、発行された命令数をカウントするプログラムカウンタ(PC)110とを含んで構成される。なお、本プロセッサにおけるループ処理では、1つのVLIWルーチンを繰り返し実行する。また、本処理は、ユーザがプログラム中に記述するループ処理の開始を宣言する命令「VLOOP」をデコードすることで開始される。
【0021】
VLOOP命令は、VLIWルーチンにおけるVLIW型命令の数(VNUM)と、繰り返し回数(VLC)を指定する。
【0022】
命令バス101は、命令メモリに接続されており、本メモリからm個の通常命令を並列に転送する。
【0023】
命令レジスタIR1〜IRm102は、命令バス101を介してフェッチされたm個の通常命令を各レジスタに入力し、入力した各通常命令を次サイクルで命令デコーダ103に向けて出力する。
【0024】
命令デコーダD1〜Dm103は、命令レジスタ102から出力されたm個の通常命令を各デコーダに入力し、入力した各命令のデコード結果112を命令ディスパッチャ104と命令バッファ105に向けて出力する。また、VLOOP命令をデコードしたことを示すVLOOPデコード信号111も出力する。
【0025】
命令ディスパッチャ104は、命令デコーダ103によるm個のデコード結果112を入力し、命令間のデータ依存関係により決定した並列命令発行数1〜mの命令をマルチプレクサ107に向けて出力する。
【0026】
命令バッファ105は、命令デコーダ103からのデコード結果112と、デコード結果112の書き込み可否を制御する書き込みイネーブル信号113と、発行すべきVLIW型命令を選択するための読み出し選択信号114とを入力する。そして、本バッファ105に保持されているVLIWルーチンから、選択信号114により選択されたVLIW型命令をマルチプレクサ107に向けて出力する。
【0027】
ループ制御ユニット106は、PC110の値とVLOOPデコード信号111とを入力し、書き込みイネーブル信号113と読み出し選択信号114、並びに命令ディスパッチャ104による命令発行と命令バッファ105による命令発行とを切り替えるための発行選択信号115を出力する。このループ制御ユニット106は、さらに、ループ処理のシーケンスや命令の蓄積・発行を制御するループ制御部1060と、VLIWルーチンの先頭にあるVLIW型命令のアドレス(LSA)を保持するレジスタ1061と、同ルーチンの終端にあるVLIW型命令のアドレス(LEA)を保持するレジスタ1062と、ループ処理の繰り返し回数(LC)をカウントダウンするレジスタ1063と、PC110に保持されている命令アドレスとLEA1062とが一致するかどうかを検知する比較器1064とを含んで構成される。なお、LSA1061には、VLOOP命令があるアドレスの次のアドレス、LEA1062には、LSA+VNUM×n(VLIWルーチンの先頭にあるVLIW型命令のアドレス+VLIW型命令の数×n)、LC1063には、VLC(繰り返し回数)がそれぞれ代入される。
【0028】
n個のマルチプレクサM1〜Mn107は、命令ディスパッチャ104から発行された1〜m個の通常命令( のデコード結果) と命令バッファ105から発行されたVLIW型命令(におけるn個の通常命令のデコード結果)を入力し、同じくループ制御ユニット106より入力した発行選択信号115によりどちらか一方を選択して出力する。
【0029】
n個の演算器E1〜En108は、マルチプレクサ107の出力を各演算器に対する制御信号として入力すると共に、1〜m個の通常命令あるいはVLIW型命令により指定される実行入力データを汎用レジスタファイル109より入力する。そして、各演算器による命令実行結果を汎用レジスタファイル109に向けて出力する。
【0030】
汎用レジスタファイル109は、演算器108で用いられる実行入力データを出力され、演算器108による実行結果を入力する。
【0031】
プログラムカウンタPC110には命令アドレスが保持されており、命令ディスパッチャ104もしくは命令バッファ105によりi個の通常命令が発行されるとiだけ加算する。例えば、VLIW型命令が発行された場合、本PC110の値としてnを加算する。
【0032】
VLOOPデコード信号111は、命令デコーダ103により、VLOOP命令がデコードされるとアサートされ、それ以外のときはネゲートされる。
【0033】
書き込みイネーブル信号113は、ループ制御ユニット106により書き込み可のときはアサートされ、書き込み不可のときはネゲートされる。
【0034】
発行選択信号115は、ループ制御ユニット106により、命令バッファ105から出力されたVLIW型命令を発行するときにはアサートされ、命令ディスパッチャ104から出力された1〜m個の通常命令を発行するときにはネゲートされる。
【0035】
(動作の説明)
本実施の形態の動作について図1を参照して説明する。本実施の形態の動作には、通常モード/VLOOP初回モード/VLOOPモードという3種類の動作モードがある。通常モードでは、命令ディスパッチャ104から発行される1〜m個の通常命令を並列に実行する。通常モード中、VLOOP命令がデコードされると、プロセッサの動作モードをVLOOP初回モードへ移行し、ループ処理の実行を開始する。VLOOP初回モードでは、ループ処理の初回としてVLIWルーチンを1回だけ実行する。そして、VLOOP初回モードにおける実行が終わると、プロセッサの動作モードをVLOOPモードへ移行する。VLOOPモードでは、ループ処理が終了するまでVLIWルーチンを繰り返し実行する。以下、各動作モードについて図3〜図5に示されたフローチャートを参照しながら詳細に説明する。
【0036】
まず、命令デコーダ103によってVLOOP命令がデコードされるまでの通常モードにおける動作について図3を参照しながら説明する。通常モード中、書き込みイネーブル信号113と発行選択信号115をネゲートしておく。命令バス101を介して命令メモリからフェッチしたm個の通常命令を命令レジスタ102に書き込む(ステップS1)。そして、命令レジスタ102に保持したm個の通常命令を読み出し、命令デコーダ103において並列にデコードする(ステップS2)。なお、ここでVLOOP命令がデコードされ、VLOOP初期モードに移行した際の処理(ステップS3/YES)については後述する。命令デコーダ103はデコード結果112を命令ディスパッチャ104に向けて出力する(ステップS4)。命令ディスパッチャ104は、1〜m個の通常命令をマルチプレクサ107に向けて発行する(ステップS5)。マルチプレクサ107では、発行選択信号115に基づいて、命令ディスパッチャ104から出力された通常命令を選択する(ステップS6)。この後、選択された通常命令をn個の演算器108のうち対応するユニットにおいて実行する(ステップS7)。
【0037】
次に、図4に示されたフローチャートを参照しながらVLOOP初回モードの動作手順について説明する。通常モードによるプログラム実行中、命令デコーダ103は、VLOOP命令をデコードすると(ステップS3/YES)、VLOOPデコード信号111をアサートする。本信号111がアサートされたのを受けて、ループ制御部1060は、動作モードをVLOOP初回モードへ移行し、ループ処理を開始する。また、LSA1061、LEA1062、LC1063に、VLOOP命令があるアドレスの次のアドレス、LSA+VNUM*n、VLCをそれぞれ代入する(ステップS8)。
【0038】
VLOOP初回モード中、書き込みイネーブル信号113と発行選択信号115をアサートしておく(ステップS9)。命令バス101を介して命令メモリからフェッチしたm個の通常命令を命令レジスタ102に書き込む(ステップS10)。命令レジスタ102に保持したm個の通常命令を読み出し、命令デコーダ103において並列にデコードする(ステップS11)。そして、m個のデコード結果112を命令バッファ105に書き込む(ステップS12)。一連の通常命令に対してこれらの動作を繰り返し、命令バッファ105におけるn個の命令格納スロットINSTi−1・・・INSTi−n(iは命令バッファ105における行番号)に通常命令が格納されて1VLIW型命令が蓄積されると(ステップS13/YES)、読み出し選択信号114によりVLIW型命令を選択し、マルチプレクサ107に向けて発行する(ステップS14)。マルチプレクサ107は、発行選択信号115に基づいて、命令バッファ105から出力されたVLIW型命令を選択する(ステップS15)。その後、選択されたVLIW型命令におけるn個の通常命令を、n個の演算器108においてそれぞれ実行する(ステップS16)。VLOOP初回モード中、比較器1064においてPC110の値とLEA1062が一致したとき[すなわち、プログラムの実行がアドレスLEAにあるVLIW型命令まで到達したとき](ステップS17/YES)、ループ制御部1060は、LC1063をデクリメントし、PC110にLSA1061の値を代入することでアドレスLSAにあるVLIW型命令へプログラムの実行を分岐した後、動作モードをVLOOPモードへ移行する(ステップS18)。
【0039】
最後に、VLOOPモードにおける動作手順について図5に示されたフローチャートを参照しながら説明する。VLOOPモード中、書き込みイネーブル信号113をネゲートし、発行選択信号115をアサートしておく(ステップS19)。これにより、命令バッファ105への書き込みは行われない。命令バッファ105に格納されているVLIWルーチンから1VLIW型命令を読み出し選択信号114により選択し、マルチプレクサ107に向けて発行する(ステップS20)。マルチプレクサ107は、発行選択信号115に基づいて、VLIW型命令を選択する(ステップS21)。そして、選択されたVLIW型命令を、演算器108において実行する(ステップS22)。これら一連の動作を繰り返していき、比較器1064においてPC110の値がLEA1062に一致すると(ステップS23)、ループ制御部1060はLC1063をデクリメントし、PC110にLSA1061の値を代入することでアドレスLSAにあるVLIW型命令へプログラムの実行を分岐する(ステップS24)。そして、LC1063の値が0になるまでこのループ処理を繰り返す。ループ処理の繰り返し回数をカウントダウンするLC1063の値が0になると(ステップS25/YES)、VLIWルーチンの実行が所定回数に達したので、同ループ制御部1060は、ループ処理を終了して、動作モードを通常モードへ移行する(ステップS26)。
【0040】
このように、VLOOP初回モードではn/m回に1 回しかVLIW型命令を実行できないといったオーバーヘッドがあるものの、それ以外の繰り返しではVLIW型命令を毎サイクル実行することができる。
【0041】
なお、本発明の並列演算プロセッサの演算制御プログラムに係る実施形態は、図1に示されたループ制御ユニット106に図3〜図5のフローチャートに示された手順に従って命令バッファ105への命令の蓄積、命令バッファ105からの命令の発行、命令ディスパッチャ104から発行された命令、命令バッファ105から発行された命令の何れかを選択させる制御を行なう演算制御プログラムを格納することで実現できる。
【0042】
なお、上述した実施形態は本発明の好適な実施の形態である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施が可能である。
【0043】
【発明の効果】
以上説明したように、本発明により、ループ処理において搭載する演算器の処理能力を最大限に発揮することができ、かつループ処理のシーケンスにおけるオーバーヘッドが小さいため、ループ処理を高速に実行できる。
【図面の簡単な説明】
【図1】本発明の実施の形態による並列演算プロセッサの構成を示すブロック図である。
【図2】本発明の実施の形態によるループ制御ユニットの構成を示すブロック図である。
【図3】通常モードにおける動作手順を示すフローチャートである。
【図4】VLOOP初回モードにおける動作手順を示すフローチャートである。
【図5】VLOOPモードにおける動作手順を示すフローチャートである。
【図6】従来の並列演算プロセッサの構成を示すブロック図である。
【符号の説明】
101 命令バス
102 命令レジスタ
103 命令デコーダ
104 命令ディスパッチャ
105 命令バッファ
106 ループ制御ユニット
107 マルチプレクサ
108 演算器
109 汎用レジスタ

Claims (4)

  1. 命令メモリから1からm個(mは任意の自然数)の命令を並列にフェッチする命令バスと、
    フェッチした命令を保持する命令レジスタと、
    前記命令レジスタから読み出した1からm個の命令を並列にデコードする命令デコーダと、
    デコードされた1からm個の命令を並列に発行する命令ディスパッチャと、
    前記命令デコーダによってデコードされた1からm個の命令が並列に直接入力され、それらの命令を保持し、n個(nはmよりも大きい任意の自然数)の前記命令を並列に発行する命令バッファと、
    ループ処理を行わない通常命令モード、1回目のループ処理を行うVLOOP初回モード、及び2回目以降のループ処理を行うVLOOPモードのいずれかに切り替わるようにループ処理のシーケンスを制御すると共に前記命令バッファにおける命令の蓄積及び発行を制御するループ制御ユニットと、
    前記ループ制御ユニットの制御に基づいて前記命令ディスパッチャが発行した命令あるいは前記命令バッファが発行した命令の何れかを選択するマルチプレクサと、
    前記マルチプレクサによって選択された前記1からm個またはn個の命令を同時に実行する前記n個の演算器と、
    を具備することを特徴とする並列演算プロセッサ。
  2. 前記ループ制御手段は、
    ループ処理の開始を宣言する命令をデコードすることにより前記命令バッファへの命令の蓄積を開始し、前記n個の命令が蓄積される度に該n個の命令を並列に発行し、前記n個の演算器によって同時に実行され、前記ループ処理を形成するすべての命令の蓄積が終了すると、それ以降のループ処理の繰り返しでは前記命令バッファに蓄積された命令をn個ずつ並列に発行するように制御することを特徴とする請求項1記載の並列演算プロセッサ。
  3. 命令メモリより並列に読み出され、デコードされたm個(mは任意の自然数)の命令を命令ディスパッチャで並列に発行してn個(nはmより大きい任意の自然数)の演算器の何れかで演算を行なう並列演算プロセッサの演算制御方法であって、
    ループ処理の開始を宣言するVLOOP命令をデコードすることで命令バッファへ前記デコードされた命令の蓄積を開始し、前記n個の前記命令が蓄積される度にこれらの命令を発行して前記n個の演算器で同時に演算を実行し、前記1回目のループ処理のためのすべての命令の蓄積が終了するとそれ以降のループ処理では前記命令バッファに蓄積された命令をn個ずつ並列に発行して前記n個の演算器で同時に演算を実行することを特徴とする並列演算プロセッサの演算制御方法。
  4. 命令メモリより並列に読み出され、デコードされたm個(mは任意の自然数)の命令を命令ディスパッチャで並列に発行してn個(nはmより大きい任意の自然数)の演算器の何れかで演算を行なう並列演算プロセッサに適用される演算制御プログラムであって、
    ループ処理の開始を宣言するVLOOP命令をデコードすることで命令バッファへ前記デコードされた命令の蓄積を開始させ、前記n個の前記命令が蓄積される度にこれらの命令を発行させて前記n個の演算器で同時に演算を実行させ、前記1回目のループ処理のためのすべての命令の蓄積が終了すると、それ以降のループ処理では前記命令バッファに蓄積した命令をn個ずつ並列に発行させて前記n個の演算器で同時に演算を実行させることを特徴とする並列演算プロセッサの演算制御プログラム。
JP2001305786A 2001-10-01 2001-10-01 並列演算プロセッサ、その演算制御方法及びプログラム Expired - Fee Related JP3656587B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001305786A JP3656587B2 (ja) 2001-10-01 2001-10-01 並列演算プロセッサ、その演算制御方法及びプログラム
US10/254,543 US7136989B2 (en) 2001-10-01 2002-09-26 Parallel computation processor, parallel computation control method and program thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001305786A JP3656587B2 (ja) 2001-10-01 2001-10-01 並列演算プロセッサ、その演算制御方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2003108368A JP2003108368A (ja) 2003-04-11
JP3656587B2 true JP3656587B2 (ja) 2005-06-08

Family

ID=19125523

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001305786A Expired - Fee Related JP3656587B2 (ja) 2001-10-01 2001-10-01 並列演算プロセッサ、その演算制御方法及びプログラム

Country Status (2)

Country Link
US (1) US7136989B2 (ja)
JP (1) JP3656587B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9703559B2 (en) 2011-11-09 2017-07-11 Nec Corporation Digital signal processor, program control method, and control program

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1703670B (zh) * 2002-10-11 2010-12-08 Nxp股份有限公司 指令的寻址范围相关并行化的数据处理设备
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
EP1826667A4 (en) * 2004-11-25 2008-07-23 Matsushita Electric Ind Co Ltd INSTRUCTION PROVIDING DEVICE
US7370136B2 (en) * 2005-01-26 2008-05-06 Stmicroelectronics, Inc. Efficient and flexible sequencing of data processing units extending VLIW architecture
US7673119B2 (en) * 2005-05-13 2010-03-02 Texas Instruments Incorporated VLIW optional fetch packet header extends instruction set space
US7904695B2 (en) * 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous power saving computer
US20070073999A1 (en) * 2005-09-28 2007-03-29 Verheyen Henry T Hardware acceleration system for logic simulation using shift register as local cache with path for bypassing shift register
US8768411B2 (en) * 2005-09-30 2014-07-01 Intel Corporation Systems and methods for RF communication between processors
KR20070059349A (ko) * 2005-12-06 2007-06-12 삼성에스디아이 주식회사 전자방출표시소자 및 그의 구동방법
US7617383B2 (en) * 2006-02-16 2009-11-10 Vns Portfolio Llc Circular register arrays of a computer
US7752422B2 (en) * 2006-02-16 2010-07-06 Vns Portfolio Llc Execution of instructions directly from input source
US7904615B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
US7913069B2 (en) * 2006-02-16 2011-03-22 Vns Portfolio Llc Processor and method for executing a program loop within an instruction word
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US7676647B2 (en) * 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
US7555637B2 (en) * 2007-04-27 2009-06-30 Vns Portfolio Llc Multi-port read/write operations based on register bits set for indicating select ports and transfer directions
JP4978332B2 (ja) * 2007-06-22 2012-07-18 富士通株式会社 演算処置装置および電力制御方法
US20100023730A1 (en) * 2008-07-24 2010-01-28 Vns Portfolio Llc Circular Register Arrays of a Computer
US8266414B2 (en) * 2008-08-19 2012-09-11 Freescale Semiconductor, Inc. Method for executing an instruction loop and a device having instruction loop execution capabilities
US7941644B2 (en) * 2008-10-16 2011-05-10 International Business Machines Corporation Simultaneous multi-thread instructions issue to execution units while substitute injecting sequence of instructions for long latency sequencer instruction via multiplexer
KR20110103256A (ko) * 2010-03-12 2011-09-20 삼성전자주식회사 다중 입출력 오퍼레이션 지원 프로세서 및 그 방법
WO2012160794A1 (ja) * 2011-05-20 2012-11-29 日本電気株式会社 演算処理装置、演算処理方法
US10423421B2 (en) * 2012-12-28 2019-09-24 Intel Corporation Opportunistic utilization of redundant ALU
US9424039B2 (en) * 2014-07-09 2016-08-23 Intel Corporation Instruction for implementing vector loops of iterations having an iteration dependent condition
US9830152B2 (en) * 2015-12-22 2017-11-28 Qualcomm Incorporated Selective storing of previously decoded instructions of frequently-called instruction sequences in an instruction sequence buffer to be executed by a processor

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5333280A (en) * 1990-04-06 1994-07-26 Nec Corporation Parallel pipelined instruction processing system for very long instruction word
JPH07110769A (ja) 1993-10-13 1995-04-25 Oki Electric Ind Co Ltd Vliw型計算機
US5898865A (en) * 1997-06-12 1999-04-27 Advanced Micro Devices, Inc. Apparatus and method for predicting an end of loop for string instructions
US6032252A (en) * 1997-10-28 2000-02-29 Advanced Micro Devices, Inc. Apparatus and method for efficient loop control in a superscalar microprocessor
US6490673B1 (en) * 1998-11-27 2002-12-03 Matsushita Electric Industrial Co., Ltd Processor, compiling apparatus, and compile program recorded on a recording medium
US6425069B1 (en) * 1999-03-05 2002-07-23 International Business Machines Corporation Optimization of instruction stream execution that includes a VLIW dispatch group
US6598155B1 (en) * 2000-01-31 2003-07-22 Intel Corporation Method and apparatus for loop buffering digital signal processing instructions
US6671799B1 (en) * 2000-08-31 2003-12-30 Stmicroelectronics, Inc. System and method for dynamically sizing hardware loops and executing nested loops in a digital signal processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9703559B2 (en) 2011-11-09 2017-07-11 Nec Corporation Digital signal processor, program control method, and control program

Also Published As

Publication number Publication date
US7136989B2 (en) 2006-11-14
JP2003108368A (ja) 2003-04-11
US20030065905A1 (en) 2003-04-03

Similar Documents

Publication Publication Date Title
JP3656587B2 (ja) 並列演算プロセッサ、その演算制御方法及びプログラム
US5949996A (en) Processor having a variable number of stages in a pipeline
US20080133880A1 (en) Instruction Controlled Data Processing Device
JP2006502505A (ja) トークン・トリガ・マルチスレッディングの方法および装置
US6108768A (en) Reissue logic for individually reissuing instructions trapped in a multiissue stack based computing system
JP2801135B2 (ja) パイプラインプロセッサの命令読み出し方法及び命令読み出し装置
JP2003005958A (ja) データ処理装置およびその制御方法
US6167529A (en) Instruction dependent clock scheme
JP3212213B2 (ja) データ処理装置
US20050102659A1 (en) Methods and apparatus for setting up hardware loops in a deeply pipelined processor
JPH03233630A (ja) 情報処理装置
US6237086B1 (en) 1 Method to prevent pipeline stalls in superscalar stack based computing systems
US6170050B1 (en) Length decoder for variable length data
JP5209390B2 (ja) 情報処理装置及び命令フェッチ制御方法
JP2584156B2 (ja) プログラム制御型プロセッサ
JP3461887B2 (ja) 可変長パイプライン制御装置
JP5491113B2 (ja) ベクトル処理装置、ベクトル処理方法、およびプログラム
US20100153688A1 (en) Apparatus and method for data process
JP2771373B2 (ja) 命令先取り装置
JP2000003279A (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
JP3435252B2 (ja) 情報処理装置
JPH05173785A (ja) 命令先取り装置
US20040243875A1 (en) Instruction dependent clock scheme
JP4151497B2 (ja) パイプライン処理装置
JPH04287227A (ja) 演算処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050124

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050228

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080318

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090318

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100318

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100318

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110318

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110318

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120318

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120318

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130318

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130318

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140318

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees