JPH09237186A - ループ制御装置およびプロセッサ - Google Patents

ループ制御装置およびプロセッサ

Info

Publication number
JPH09237186A
JPH09237186A JP4580196A JP4580196A JPH09237186A JP H09237186 A JPH09237186 A JP H09237186A JP 4580196 A JP4580196 A JP 4580196A JP 4580196 A JP4580196 A JP 4580196A JP H09237186 A JPH09237186 A JP H09237186A
Authority
JP
Japan
Prior art keywords
instruction
loop
processor
instructions
counter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP4580196A
Other languages
English (en)
Inventor
Keimei Nakada
啓明 中田
Kazuhiko Tanaka
和彦 田中
Toru Nojiri
徹 野尻
Kiyokazu Nishioka
清和 西岡
Noriyoshi Kurokawa
能毅 黒川
Keiji Kojima
啓二 小島
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP4580196A priority Critical patent/JPH09237186A/ja
Publication of JPH09237186A publication Critical patent/JPH09237186A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【課題】パイプラインや複数の演算器を持つプロセッサ
のループ制御に要する実行サイクル数を削減する。 【解決手段】演算装置5とデータの受渡しを行なう経路
を持ち、命令により任意の値を設定可能なループ開始ア
ドレスを維持するループ開始アドレスレジスタ11と、
ループ終了アドレスを維持するループ終了レジスタ12
と、反復回数をカウントするループカウンタ13と、ル
ープ範囲の終了を検出する比較器14とからなる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はループ制御装置およ
びプロセッサに関する。
【0002】
【従来の技術】ループは反復して実行される命令ブロッ
クから構成され、ベクトル演算や行列演算、画像処理等
に用いられる。
【0003】ソフトウェアによってループを実現するに
は、ループ回数を管理するためにレジスタまたはメモリ
を割り当て、ループの最後で割り当てたレジスタまたは
メモリの値を1減らし、結果が非0であればループの先
頭に分岐することにより行う。しかし、ソフトウェアの
みによってループを実現する場合、ループ制御を行うた
めだけに減分/比較/分岐処理がループ毎に必要となり、
オーバーヘッドが生じる。
【0004】このようなオーバヘッドを削減する手法と
して、特開平2−183831号公報に開示された手法
がある。この手法では、ループ初期化命令を用意し、ル
ープ初期化命令でループ反復回数及びループ範囲内に存
在する命令数を指定することで、ループ範囲内からルー
プ制御を行う上で必要な減分/比較/分岐処理に要する実
行サイクル数を削減している。
【0005】ところが、この手法では必ずループ範囲の
直前にループ初期化命令を配置する必要があり、命令記
述位置を制限する。この制限により、パイプラインや複
数の演算器を持つプロセッサにおいて処理の高速化に重
要な役割を果たす命令記述位置の最適化が困難となる。
【0006】パイプラインを持つプロセッサで命令記述
位置の重要性を示す例として図1及び図2に命令101
Bと101Cの位置が入れ替わっている以外全く同様の
処理を行なう二つのプログラムを示す。プロセッサが加
算命令の実行を2ステージのパイプラインで処理する場
合、それぞれのプログラムを実行した際のパイプライン
の動作は図3及び図4に示したようになり、実行に必要
なサイクル数が2サイクル異なる。これは命令101B
が命令101Aの結果を、命令101Dが命令101C
の結果をそれぞれ必要とする為、図1に示したプログラ
ムの実行では命令101A,101Cの終了を待つ必要
が生じ、何も処理を行なっていない空きスロット111
A,111Bがパイプラインに発生するのに比べ、図2
に示したプログラムの実行では命令101Aの実行中に
命令101Aの結果を必要としない命令101Cを実行
するため、命令101A,101Cの終了を待つのに必
要な空きスロットがパイプラインに発生しないからであ
る。
【0007】このように、パイプライン処理を行なうプ
ロセッサでは空きスロットをできるだけ発生させないよ
う命令記述位置を最適化することが実行サイクル数の削
減、すなわち処理の高速化に重要な役割を果たす。
【0008】
【発明が解決しようとする課題】パイプラインや複数の
演算器をもつプロセッサのループ制御に要する実行サイ
クル数を削減することである。
【0009】
【課題を解決するための手段】本発明では、ループ制御
を行うためにハードウェアを設け、そのハードウェアの
初期化を行う専用のループ初期化命令を用いる。ループ
制御を行うハードウェアはループ開始アドレスを維持す
るループ開始アドレスレジスタ、ループ終了アドレスを
維持するループ終了アドレスレジスタ、残りの反復回数
を管理するループカウンタ及び現在実行している命令の
アドレスとループ終了アドレスの一致を検出する比較器
により構成される。ループ開始アドレスレジスタ、ルー
プ終了アドレスレジスタ、ループカウンタは、ループ初
期化命令に相当するループ開始アドレス指定命令、ルー
プ終了アドレス指定命令、反復回数指定命令によりそれ
ぞれ内容を直接設定可能なように構成する。
【0010】まず、ループ開始アドレス指定命令、ルー
プ終了アドレス指定命令、反復回数指定命令の3つから
成るループ初期化命令によってループ制御ハードウェア
の設定が行われる。ループ開始アドレス指定命令により
指定されたループ開始アドレスがループ開始アドレスレ
ジスタに設定され、ループ終了アドレス指定命令により
指定されたループ終了アドレスがループ終了アドレスレ
ジスタに設定され、さらに反復回数指定命令により指定
された反復回数がループカウンタに設定される。
【0011】現在プロセッサが読み込もうとしている命
令のアドレスを管理するプログラムカウンタの内容とル
ープ終了アドレスレジスタの内容は比較器によって常時
比較され、比較器が一致を検出すると、ループカウンタ
の内容が非0の場合には、ループカウンタの内容が減分
され、さらにループ開始アドレスレジスタの内容がプロ
グラムカウンタ転送され、分岐が実行される。一方、比
較器が一致を検出し、ループカウンタの内容が0であっ
た場合には、ループカウンタの内容は減分されず、ルー
プ開始アドレスレジスタの内容もプログラムカウンタに
転送されない為、プログラムカウンタはループ範囲の次
の命令を指すこととなり、ループ処理は終了する。
【0012】ループ開始アドレス指定命令によりループ
開始アドレスを直接指定する為、ループ初期化命令を必
ずしもループ範囲の直前に記述する必要がなくなり、ル
ープ初期化命令記述位置の最適化が可能となる。
【0013】これにより、課題となっていたパイプライ
ンや複数の演算器を持つプロセッサのループ制御に要す
る実行サイクル数の削減が実現可能となる。
【0014】
【発明の実施の形態】実施例として本発明を用いたプロ
セッサの構成例を図5に示す。プロセッサが読み込もう
としている命令の存在するアドレスを管理しているプロ
グラムカウンタ1、記憶装置3とプロセッサ内部のデー
タ転送を制御する記憶制御装置2、プログラムやデータ
を保持する記憶装置3、記憶装置3から記憶制御装置2
を介して読み込んだ命令を解読して演算装置5の制御を
行なう命令解読装置4、実際に演算処理を行なう演算装
置5、演算に必要なデータや演算結果を保持する汎用レ
ジスタ6、ループの制御を行なうループ制御装置7で構
成されている。
【0015】プロセッサは記憶装置3に存在するプログ
ラムにしたがって動作を行う。プロセッサはプログラム
カウンタ1の示すアドレスを用いて記憶装置3から命令
を読み込み、通常では命令を読み込んだ後に次の命令ア
ドレスを指すようにプログラムカウンタ1を更新する。
しかし、演算装置5またはループ制御装置7から値が代
入された場合には、プログラムカウンタ1の値はこれら
の装置から代入された値となり分岐が実行される。
【0016】プロセッサが命令を記憶装置3から読み込
む場合、プログラムカウンタ1の値が命令アドレスとし
て記憶制御装置2に伝えられ、記憶制御装置2はこの命
令アドレスにしたがって記憶装置3より命令をプロセッ
サに読み込む。
【0017】読み込まれた命令は記憶制御装置2を介し
て命令解読装置4に送られ、命令解読装置4は命令にし
たがって適切な制御信号を発生し、演算装置5を制御す
る。
【0018】演算装置5は汎用レジスタ6、ループ制御
装置7及びプログラムカウンタ1とのデータのやりとり
が可能であり、さらに記憶制御装置2を介すことで記憶
装置3とのデータのやりとりも可能であるため、命令解
読装置4からの制御信号にしたがってこれらデータの演
算や転送を行う。演算装置5はパイプライン処理を用い
て演算処理を行い、また演算処理中に転送処理を独立し
て行うことが可能である。
【0019】ループ制御を行うハードウェアであるルー
プ制御装置7の内部構成は図6に示したようになってお
り、ループ開始アドレスを維持するループ開始アドレス
レジスタ(lsr)11、ループ終了アドレスを維持するル
ープ終了アドレスレジスタ(ler)12、残りの反復回数
を維持するループカウンタ(lc)13、及び現在プロセッ
サが読み込もうとしている命令のアドレスを維持するプ
ログラムカウンタ1の内容とループ終了アドレスレジス
タ12の内容の一致を検出する比較器14で構成され
る。
【0020】ループ制御装置7の初期化を行う為には専
用の転送命令を用い、この転送命令はループ開始アドレ
スレジスタ11を設定するmove lsa命令、ループ終了ア
ドレスレジスタ12を設定するmove lea命令、ループカ
ウンタ13を設定するmove lc命令の3命令により構成
される。
【0021】プログラムカウンタ1の内容とループ終了
アドレスレジスタ12の内容は比較器14で常時比較さ
れており、比較器14が出力する一致検出信号16はル
ープカウンタ13のカウント動作制御及びループ開始ア
ドレスレジスタ11からプログラムカウンタ1への値の
書き込み制御に用いられる。ループカウンタ13は比較
器14からの一致検出信号16により、その時点でのル
ープカウンタ13の値が非0である場合には値を減分す
る。しかしその時点でのループカウンタ13の値が0で
ある場合には値の更新は行わない。また、ループカウン
タ13はカウント値が非0の場合非0検出信号17を出
力し、非0検出信号17は比較器14の出力する一致検
出信号16と共にループ開始アドレスレジスタ11から
プログラムカウンタ1への値の書き込み制御に用いられ
る。
【0022】比較器14の出力する一致検出信号16及
びループカウンタ13の出力する非0検出信号17が同
時に発生するとループ開始アドレスレジスタ11の値が
プログラムカウンタ15へ書き込まれ、ループ開始アド
レスへの分岐が実行される。
【0023】このように構成することで、ループカウン
タ13が0になるまで、ループカウンタ13を減分しな
がらループ開始アドレスレジスタ11の示すアドレスと
ループ終了アドレスレジスタ12の示すアドレスの間に
存在する命令ブロックを繰り返し実行することになるの
で、ループ処理を実現することができる。さらに、ルー
プ開始アドレスレジスタ11を設定する専用のmove lsa
命令を用意したことで、ループ初期化命令に相当する命
令をループ範囲の直前以外に記述することが可能とな
る。
【0024】次に、図5に示したプロセッサのプログラ
ム実行時における命令実行タイミングの例をループ開始
アドレス指定命令の存在しないループ制御方式をもつプ
ロセッサと比較して説明する。ループ開始アドレス指定
命令の存在しないループ制御方式をもつプロセッサ用の
プログラム例とその実行タイミングを図7、図8に、図
5に示したプロセッサのプログラム例とその実行タイミ
ングを図9、図10に示す。ループ開始アドレス指定命
令の存在しないプロセッサではループ初期化命令に相当
する転送命令23,24をループ範囲の直前に記述する
ことでループ開始アドレスを示す必要がある。この場
合、instA20の実行に必要なステージがnでinstB21
がinstA20の実行結果を必要とする場合、図8の命令
実行タイミングが示すように、instA20の実行が終了
するまでのnサイクルの間instB21以降の実行は開始
されず、instA20の実行結果を必要としないループ初
期化命令に相当する転送命令23,24も実行されな
い。
【0025】ところが本発明を用いた手法ではループ初
期化命令によって明示的にループ開始アドレスを指定可
能な為、instA20とinstB21の間にループ初期化命令
に相当する転送命令22〜24を記述でき、instA10
の実行期間中にループ初期化命令に相当する転送命令2
2〜24を実行可能となり、空きスロットを削減できる
ため、効率の良い実行が可能となる。この結果、実施例
ではn=3の場合、1サイクル、nが4以上の場合2サ
イクル実行サイクルを削減することができる。
【0026】別の実施例として、本発明を用いたVLI
W方式のプロセッサの構成例を図11に示す。
【0027】このプロセッサは基本的に図5に示したプ
ロセッサと同様の動作を行う。しかし、演算装置5A〜
5D及びこれに関係する命令解読装置4A〜4D、汎用
レジスタ6A〜6Dが存在し、独立した命令をそれぞれ
の演算装置5A〜5Dに対して同時に発行可能である。
これに伴い記憶装置3から記憶制御装置2を介して読み
込まれる命令は、図12に示すように4個の命令フィー
ルド9A〜9Dにより構成される長命令10となってお
り、1命令フィールドには図5に示したプロセッサの1
命令が記述される。また、プログラムカウンタ1も長命
令単位でプロセッサが現在読み込もうとしているアドレ
スを管理している為、分岐も長命令単位で行われる。
【0028】記憶装置3からプロセッサに読み込まれた
長命令は、まず記憶制御装置2を介して命令分配装置8
に送られ、命令分配装置8で独立した4個の命令に分解
された後に、それぞれ命令解読装置4A〜4Dに送られ
る。命令解読装置4A〜4Dはそれぞれ演算装置5A〜
5Dの制御を行うことで命令の実行を行う。
【0029】演算装置5A〜5Dにはそれぞれ専用の汎
用レジスタ6A〜6Dが接続されている他、プログラム
カウンタ1、ループ制御装置7、記憶制御装置2が接続
され、さらに演算装置5A〜5D間で相互に接続されて
いる。演算装置5A〜5Dは接続された装置からデータ
を得て演算処理をしたり接続された装置間のデータ転送
をすることで、命令の実行を行う。
【0030】ループ制御装置7の動作は図5に示したプ
ロセッサと同じであるが、ループ開始アドレスレジスタ
11及びループ終了アドレスレジスタ12に設定するア
ドレスは長命令単位となる。
【0031】次に、ループ開始アドレス指定命令の存在
しないループ制御方式を用いたVLIW方式のプロセッ
サでの命令スロットの使用例を図13に、図12に示し
たプロセッサでの命令スロットの使用例を図14に示
し、両者の違いを説明する。
【0032】図13に示したように命令スロット42,
44,48がnop(No Operation)となる場合でも、ルー
プ開始アドレス指定命令の存在しないプロセッサではル
ープ初期化命令に相当する転送命令をループ範囲の直前
に記述する必要があるため、ループ初期化命令に相当す
る転送命令を記述する為の命令スロット53,54を別
に用意する必要がある。しかし本発明を用いた方式で
は、ループ初期化命令をループ範囲の直前に記述する必
要がない為、図14に示すように命令スロット42,4
4,48をループ初期化命令に相当する転送命令の為に
用いることができる。この結果、長命令1命令分プログ
ラムステップを削減でき、プログラムサイズ及び実行サ
イクルの削減に役立つ。
【0033】
【発明の効果】本発明により、プログラム中におけるル
ープ初期化命令記述位置の最適化が可能となり、ループ
初期化命令によるオーバーヘッドを削減できる。特にV
LIW方式のプロセッサに本発明を適用した場合には、
プログラム中に含まれるnop命令の命令スロットをルー
プ初期化命令に活用でき、長命令を削減できる可能性が
あるので、実行サイクルの削減だけではなく、プログラ
ムサイズの削減にも効果がある。
【図面の簡単な説明】
【図1】パイプライン構成のプロセッサを効率良く利用
しない命令列の説明図。
【図2】パイプライン構成のプロセッサを効率良く利用
する命令列の説明図。
【図3】図1の命令列実行時のパイプラインの動作例の
説明図。
【図4】図2の命令列実行時のパイプラインの動作例の
説明図。
【図5】本発明のループ制御装置を含むプロセッサのブ
ロック図。
【図6】図5に示したプロセッサ構成例のループ制御装
置部分のブロック図。
【図7】ループ開始アドレスを指定できない場合のプロ
グラム例の説明図。
【図8】図7に示したプログラム実行時のパイプライン
の動作例の説明図。
【図9】ループ開始アドレスを指定できる場合のプログ
ラム例の説明図。
【図10】図9に示したプログラム実行時のパイプライ
ンの動作例の説明図。
【図11】本発明のループ制御装置を含むVLIWプロ
セッサのブロック図。
【図12】図11に示したVLIWプロセッサで用いる
長命令の説明図。
【図13】図11に示したVLIWプロセッサでループ
開始アドレスを指定できない場合の命令スロット使用例
の説明図。
【図14】図11に示したVLIWプロセッサでループ
開始アドレスを指定できる場合の命令スロット使用例の
説明図。
【符号の説明】
1…プログラムカウンタ、5…演算装置、7…ループ制
御装置、11…ループ開始アドレスレジスタ、12…ル
ープ終了アドレスレジスタ、13…ループカウンタ、1
4…比較器、16…一致検出信号、17…非0検出信
号。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 西岡 清和 神奈川県川崎市麻生区王禅寺1099番地株式 会社日立製作所システム開発研究所内 (72)発明者 黒川 能毅 神奈川県川崎市麻生区王禅寺1099番地株式 会社日立製作所システム開発研究所内 (72)発明者 小島 啓二 神奈川県川崎市麻生区王禅寺1099番地株式 会社日立製作所システム開発研究所内

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】記憶装置に格納されたプログラムを構成す
    る命令の中からある時点で処理を要する命令を特定する
    手段、前記命令を特定する手段により特定された命令を
    取り込む手段、前記取り込む手段により取り込まれた命
    令により指示された演算を実行する手段により構成され
    るプロセッサにおいて、 連続した複数命令を複数回にわたり反復して実行するル
    ープ処理の初期設定手段、前記初期設定手段に結合され
    た反復の回数をカウントする手段、前記初期設定手段に
    結合された前記複数命令の終了位置を維持する手段、及
    び前記複数命令の開始位置のアドレスを明示的に指定す
    る前記初期設定手段に結合された前記複数命令の開始位
    置を維持する手段を含むことを特徴とするループ制御装
    置。
  2. 【請求項2】命令の実行を複数のステージに分割して行
    なう手段、及び前記命令を実行する手段で1ステージの
    処理が終了し次の命令の実行に必要な準備が整い次第次
    の命令の実行を開始する手段を含むパイプライン構成の
    プロセッサで、請求項1のループ制御装置を持つプロセ
    ッサ。
  3. 【請求項3】一つの処理を指示する命令を複数個連結し
    て長命令とし、記憶装置に格納されたプログラムを構成
    する前記長命令の中からある時点で処理を要する前記長
    命令を特定する手段、前記長命令を特定する手段により
    特定された長命令を取り込む手段、前記取り込む手段に
    より取り込まれた長命令を複数の命令に分割する手段、
    及び前記分割する手段により分割された複数の命令をそ
    れぞれ実行する複数の演算する手段を含むVLIW(Ver
    y Long Instruction Word)プロセッサで、請求項1のル
    ープ制御装置を持つプロセッサ。
JP4580196A 1996-03-04 1996-03-04 ループ制御装置およびプロセッサ Pending JPH09237186A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4580196A JPH09237186A (ja) 1996-03-04 1996-03-04 ループ制御装置およびプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4580196A JPH09237186A (ja) 1996-03-04 1996-03-04 ループ制御装置およびプロセッサ

Publications (1)

Publication Number Publication Date
JPH09237186A true JPH09237186A (ja) 1997-09-09

Family

ID=12729382

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4580196A Pending JPH09237186A (ja) 1996-03-04 1996-03-04 ループ制御装置およびプロセッサ

Country Status (1)

Country Link
JP (1) JPH09237186A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7010677B2 (en) 2001-02-02 2006-03-07 Renesas Technology Corp. Data processor speeding up repeat processing by inhibiting remaining instructions after a break in a repeat block
US7194610B2 (en) 2004-06-30 2007-03-20 Fujitsu Limited Processor and pipeline reconfiguration control method
JP2011086157A (ja) * 2009-10-16 2011-04-28 Mitsubishi Electric Corp データ演算装置の制御回路及びデータ演算装置
US9286066B2 (en) 2009-11-24 2016-03-15 Nec Corporation Processor, and method of loop count control by processor

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7010677B2 (en) 2001-02-02 2006-03-07 Renesas Technology Corp. Data processor speeding up repeat processing by inhibiting remaining instructions after a break in a repeat block
US7194610B2 (en) 2004-06-30 2007-03-20 Fujitsu Limited Processor and pipeline reconfiguration control method
JP2011086157A (ja) * 2009-10-16 2011-04-28 Mitsubishi Electric Corp データ演算装置の制御回路及びデータ演算装置
US9286066B2 (en) 2009-11-24 2016-03-15 Nec Corporation Processor, and method of loop count control by processor

Similar Documents

Publication Publication Date Title
US5499349A (en) Pipelined processor with fork, join, and start instructions using tokens to indicate the next instruction for each of multiple threads of execution
US6219775B1 (en) Massively parallel computer including auxiliary vector processor
US6356994B1 (en) Methods and apparatus for instruction addressing in indirect VLIW processors
US5353418A (en) System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread
EP0365188B1 (en) Central processor condition code method and apparatus
JPH02110763A (ja) 並列処理システム及び並列プロセッサの同期方法
JP2653037B2 (ja) データ処理システム
KR920004290B1 (ko) 명령파이프라인방식의 마이크로프로세서
JPH09292991A (ja) 命令処理方法及び命令処理装置
US6826522B1 (en) Methods and apparatus for improved efficiency in pipeline simulation and emulation
EP0521486B1 (en) Hierarchical structure processor
JPS58149541A (ja) デ−タ処理装置
JPH09237186A (ja) ループ制御装置およびプロセッサ
KR102145457B1 (ko) 방향 인디케이터
JPS60178580A (ja) 命令制御方式
JPS6116335A (ja) 情報処理装置
JP2825315B2 (ja) 情報処理装置
JPH03136136A (ja) 命令実行時刻制御方式
JP2504224B2 (ja) デ―タ処理装置
JP3743155B2 (ja) パイプライン制御型計算機
JP2504263B2 (ja) デ―タ処理装置
JPS5899867A (ja) 並列処理方式
JPH0340169A (ja) 多重プロセツサシステムおよび複数の処理装置を制御する方法
JP2861234B2 (ja) 命令処理装置
JPH03172958A (ja) 同期処理方法および並列処理システムおよび並列処理方法および並列化プログラム生成装置