JP2002229779A - 情報処理装置 - Google Patents

情報処理装置

Info

Publication number
JP2002229779A
JP2002229779A JP2001027416A JP2001027416A JP2002229779A JP 2002229779 A JP2002229779 A JP 2002229779A JP 2001027416 A JP2001027416 A JP 2001027416A JP 2001027416 A JP2001027416 A JP 2001027416A JP 2002229779 A JP2002229779 A JP 2002229779A
Authority
JP
Japan
Prior art keywords
instruction
register
repeat
processing
information processing
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.)
Withdrawn
Application number
JP2001027416A
Other languages
English (en)
Inventor
Masahito Matsuo
雅仁 松尾
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2001027416A priority Critical patent/JP2002229779A/ja
Priority to US09/921,554 priority patent/US7010677B2/en
Publication of JP2002229779A publication Critical patent/JP2002229779A/ja
Withdrawn legal-status Critical Current

Links

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/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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

Landscapes

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

Abstract

(57)【要約】 【課題】 繰り返し回数がダイナミックに変化する場
合、繰り返し回数を条件判定するためのオーバーヘッド
が大きくなり高い性能が得られない等の課題があった。 【解決手段】 比較器172は、RPT_Bレジスタ1
71に保持されている値と、IAレジスタ181に保持
されている次にフェッチする命令のアドレスとを比較
し、これらの値が一致しているか否かを示す一致情報を
出力する。制御部112は、リピートブロックの最終の
繰り返し処理においてその一致情報に基づきハードウェ
ア的にリピートブロックの次の命令への命令処理シーケ
ンス切り替えを行うための制御信号を生成する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、複数の命令から
なり繰り返し処理されるリピートブロックを含むプログ
ラムを実行する情報処理装置に関するものである。
【0002】
【従来の技術】一般に、ディジタル信号処理は多くの繰
り返し処理を含む。ディジタル・シグナル・プロセッサ
(DSP)は、ディジタル信号処理を高速に実現する専
用のプロセッサであり、単一命令や繰り返し処理(リピ
ート処理)される複数の命令を含むリピートブロックを
効率よく処理するためのリピート命令を備えているもの
が多い。
【0003】一方、VLIW(Very Long I
nstruction Word)技術を用いディジタ
ル信号処理を効率よく行うマルチメディア向け情報処理
装置が開発されている。図36は特開平9−21236
1号公報(米国特許5,901,301)に開示された
このような従来の情報処理装置の一例のソフトウェアに
より実現された繰り返し処理を示すフローチャート図で
ある。特開平9−212361号公報に開示された従来
の情報処理装置は、信号処理の流れをハードウェア化し
たDSPとは異なり、繰り返し処理を高速化するため
に、ロードのレイテンシ、レジスタ値のライフタイム等
のソフトウェアパイプライニングが必要であり、ある程
度ソフトウェアで繰り返し処理を展開し最適化を行う必
要がある。また、単純な積和演算処理でもメモリ上の2
カ所の領域からデータを読み出す必要がある。それ故、
高速な処理を実現するために、複数データの処理を繰り
返し(ループの)単位としている。
【0004】次に動作について説明する。図36に示し
た例は、積和演算の基本処理単位が4回の処理でループ
処理が実現できる場合であり、1,2,…,7,4n,
4n+1,4n+2,4n+3(nは2以上の整数)回
それぞれ積和演算処理を行う(すなわちリピートブロッ
クを実行する)複数のプログラムが独立に設けられたも
のである。情報処理装置はまず、ステップST1におい
て、リピートブロックを繰り返し処理する回数すなわち
繰り返し回数が8以上であるか否かを判定する。繰り返
し回数が8以上である場合には、情報処理装置は、ステ
ップST2において、繰り返し回数が4n,4n+1,
4n+2,4n+3のいずれに等しいか否かをさらに判
定し、その判定結果にしたがって積和演算処理を行うプ
ログラムへの分岐を行い、そのプログラムを実行する
(ステップST3a〜ST3d)。一方、繰り返し回数
が8未満である場合には、情報処理装置は、ステップS
T4において、繰り返し回数が1〜7のいずれに等しい
か否かをさらに判定し、その判定結果にしたがって積和
演算処理を行うプログラムへの分岐を行い、そのプログ
ラムを実行する(ステップST5a〜ST5g)。
【0005】以上のように、リピートブロックを処理す
る繰り返し回数がダイナミックに変化する場合、情報処
理装置はソフトウェアにより繰り返し回数を判定し繰り
返し回数に対応したプログラムへ分岐する。
【0006】
【発明が解決しようとする課題】従来の情報処理装置は
以上のように構成されているので、リピートブロックを
処理する繰り返し回数がダイナミックに変化する場合
や、任意の繰り返し回数で同一サブルーチンを呼び出そ
うとする場合には、繰り返し回数を条件判定するための
オーバーヘッドが大きくなり、高い性能が得られないと
いう課題があった。また、繰り返し回数の条件判定、こ
の判定結果に基づく分岐、および繰り返し回数に応じた
繰り返し処理のためのコードが必要となるため、繰り返
し処理を実現するためのプログラムサイズが大きくなる
という課題もあった。特に、ソフトウェアをROM化す
る場合には、実装ROMサイズはコードサイズに依存す
るのでハードウェアコストも高くなり、さらに、高速処
理を行うために単純な繰り返し処理でも結構複雑なプロ
グラムとなるので、プログラム開発負荷が大きくバグ混
入の可能性も高いという課題もあった。
【0007】この発明は上記のような課題を解決するた
めになされたもので、1つのプログラムでリピートブロ
ックを任意の繰り返し回数処理してリピートブロックの
途中でリピート処理を終了させることを可能にし、それ
故プログラムサイズを大幅に削減するとともにプログラ
ムの開発効率を向上させることができる、高性能で低コ
ストな情報処理装置を得ることを目的とする。
【0008】
【課題を解決するための手段】この発明に係る情報処理
装置は、実行される命令で特定されるオペレーションと
は独立して、リピートブロック内で繰り返し処理の終了
を検出する、ハードウェアにより実現された検出手段
と、上記検出手段が繰り返し処理の終了を検出した場
合、上記リピートブロック内の残りの命令の実行を抑止
する命令実行抑止手段とを備えたものである。
【0009】この発明に係る情報処理装置は、命令実行
抑止手段が、検出手段が繰り返し処理の終了を検出した
場合、リピートブロック内の残りの命令をノーオペレー
ション化する、ハードウェアにより実現された手段であ
るものである。
【0010】この発明に係る情報処理装置は、命令実行
抑止手段が、検出手段が繰り返し処理の終了を検出した
場合、命令フェッチ段階でリピートブロックの次の命令
に命令処理シーケンスを切り替える命令処理シーケンス
切替手段であるものである。
【0011】この発明に係る情報処理装置は、命令実行
抑止手段が、検出手段が繰り返し処理の終了を検出した
場合、命令実行段階でリピートブロックの次の命令に命
令処理シーケンスを切り替える命令処理シーケンス切替
手段であるものである。
【0012】この発明に係る情報処理装置は、命令処理
シーケンス切替手段が、リピートブロックの繰り返し処
理において最後に実行される最終命令の実行時に、リピ
ートブロックの次の命令へのジャンプ処理を行う手段で
あるものである。
【0013】この発明に係る情報処理装置は、命令処理
シーケンス切替手段が、リピートブロックの繰り返し処
理において最後に実行される最終命令の実行後に、リピ
ートブロックの次の命令へのジャンプ処理を行うもので
ある。
【0014】この発明に係る情報処理装置は、検出手段
が、リピートブロックの繰り返し処理時に実行される命
令のアドレスに基づき繰り返し処理が終了したか否かを
判定する手段であるものである。
【0015】この発明に係る情報処理装置は、検出手段
が、リピートブロックを繰り返し処理する回数をカウン
トするカウント手段と、上記リピートブロック内の実行
される命令のアドレスと最後に実行される最終命令のア
ドレスとを比較する比較手段とを有しており、上記カウ
ント手段のカウント数が所定の数に到達し、上記比較手
段が実行される命令のアドレスが最終命令のアドレスと
一致したことを通知した際に繰り返し処理の終了と判定
するものである。
【0016】この発明に係る情報処理装置は、検出手段
が、リピートブロックの繰り返し処理時に実行される命
令数に基づき繰り返し処理が終了したか否かを判定する
手段であるものである。
【0017】この発明に係る情報処理装置は、検出手段
が、リピートブロック内の実行された命令数をカウント
するカウント手段を有しており、上記カウント手段のカ
ウント数が所定の数に到達した際に繰り返し処理の終了
と判定するものである。
【0018】この発明に係る情報処理装置は、検出手段
が、リピートブロックを繰り返し処理する回数をカウン
トする第1カウント手段と、上記リピートブロック内の
実行された命令数をカウントする第2カウント手段とを
有しており、上記第1カウント手段のカウント数が第1
の所定の数に到達し、上記リピートブロックの最終の繰
り返し処理において上記第2カウント手段のカウント数
が第2の所定の数に到達した際に繰り返し処理の終了と
判定するものである。
【0019】
【発明の実施の形態】以下、この発明の実施の一形態を
説明する。 実施の形態1.図1はこの発明の実施の形態1による情
報処理装置のレジスタセットを示す図である。なお、以
下では、この発明による情報処理装置は、16ビットプ
ロセッサであり、アドレスおよびデータのビット長は1
6ビットであると仮定する。また、この発明による情報
処理装置はビット順およびバイト順に関してビッグエン
ディアンを採用しておリ、ビット位置についてMSBが
ビット0である。
【0020】図1において、1〜15はそれぞれデータ
またはアドレス値を保持する汎用レジスタR0〜R14
である。なお、汎用レジスタR13は、サブルーチンジ
ャンプ時の戻り先アドレスを保持するためのリンク(L
INK)レジスタである。また、汎用レジスタR15は
スタックポインタ(SP)を保持するためのものであ
り、割り込み用のスタックポインタSPI16とユーザ
用のスタックポインタSPU17とから成る。汎用レジ
スタR15は、後で説明するプロセッサ・ステータス・
ワード(PSW)によって切り替えられてSPI16ま
たはSPU17を選択する。以後、SPI16およびS
PU17を総称して、スタックポインタ(SP)と呼
ぶ。特別な場合を除き、4ビットのレジスタ指定フィー
ルドでオペランドとなる汎用レジスタの番号が指定され
る。この発明による情報処理装置では、例えば汎用レジ
スタR0 1,R1 2のように2つの汎用レジスタを
ペアにして指定する命令が設けられている。この場合、
単に偶数番号の汎用レジスタを指定することにより、こ
れとペアの汎用レジスタとして、そのレジスタ番号を1
プラスした奇数番号の汎用レジスタが暗に指定される。
【0021】21〜30はそれぞれ16ビットの制御レ
ジスタCR0〜CR3,CR6〜CR11である。各制
御レジスタの番号も汎用レジスタと同様に4ビットのレ
ジスタ指定フィールドで指定される。制御レジスタCR
0 21は、情報処理装置の動作モードを指定するビッ
トや演算結果を示すフラグからなるプロセッサ・ステー
タス・ワード(PSW)を保持するレジスタである。
【0022】図2は制御レジスタCR0 21に保持さ
れるPSWの構成を示す図である。図において、41す
なわちビット0はスタックモードを示すSMビットであ
る。SMビット41が“0”の場合は割り込みモードで
あることを示しており、汎用レジスタR15としてSP
I16が選択される。他方、SMビット41が“1”の
場合はユーザモードであることを示しており、汎用レジ
スタR15としてSPU17が選択される。42すなわ
ちビット5は割り込みイネーブルを指定するIEビット
であり、IEビット42が“0”の場合は割り込みはマ
スク(アサートされても無視)され、IEビット42が
“1”の場合は割り込みは受け付けられる。
【0023】また、この情報処理装置は、ゼロオーバー
ヘッドのリピート処理を実現するためのリピート機能を
備えている。図2において、43すなわちビット6はリ
ピート状態を示すRPビットであり、RPビット43が
“0”の場合はリピート中でないことを示しており、R
Pビット43が“1”の場合はリピート中であることを
示している。この情報処理装置では、さらに、サーキュ
ラーバッファをアクセスするためのアドレッシングであ
るモジュロアドレッシング機能がインプリメントされて
いる。44すなわちビット7はモジュロイネーブルを指
定するMDビットであり、MDビット44が“0”の場
合はモジュロアドレッシングはディスエーブル状態にさ
れ、MDビット44が“1”の場合はモジュロアドレッ
シングはイネーブル状態にされる。また、45すなわち
ビット8は、アキュムレータのデータフォーマットを指
定するFXビットであり、FXビット45が“0”の場
合乗算結果は整数フォーマットでアキュムレータに格納
され、FXビット45が“1”の場合乗算結果は固定小
数点フォーマットとして1ビット左にシフトされてアキ
ュムレータに格納される。46すなわちビット9はサチ
ュレーションモードを指定するSTビットであり、ST
ビット46が“0”の場合アキュムレータに演算結果を
格納する際、演算結果が40ビットとして書き込まれ、
STビット46が“1”の場合アキュムレータに演算結
果を格納する際、演算結果は32ビットで表現できる値
にリミット処理されて書き込まれる。例えば、演算結果
が16進で007fffffffより大きい値の場合に
は、アキュムレータには007fffffffが書き込
まれ、演算結果が16進でff80000000より小
さい値の場合には、アキュムレータにはff80000
000が書き込まれる。
【0024】また、47すなわちビット12は実行制御
フラグ(F0フラグ)であり、比較命令の比較結果など
がこのフラグにセットされる。48すなわちビット13
も実行制御フラグ(F1フラグ)であり、比較命令等に
よりF0フラグ47が更新される際に、更新前のF0フ
ラグ47の値が、F1フラグにコピーされる。また、4
9すなわちビット15はキャリーフラグであり、加減算
命令実行時のキャリーがこのキャリーフラグにセットさ
れる。
【0025】図1において、制御レジスタCR2 23
はプログラムカウンタ(PC)であり、実行中の命令ア
ドレスを示すものである。この発明による情報処理装置
が処理する命令は、基本的に32ビット固定長であり、
制御レジスタCR2 23は32ビットを1ワードとし
た命令ワードアドレスを保持する。制御レジスタCR1
22はバックアップ・プロセッサ・ステータス・ワー
ド(BPSW)を保持するレジスタであり、制御レジス
タCR3 24はバックアップ・プログラム・カウンタ
(BPC)であり、これらはそれぞれ例外や割り込みが
検出された場合の実行中のPSWの値とPCの値を待
避、保持するためのレジスタである。また、制御レジス
タCR6〜CR9 25〜28はリピート関連のレジス
タであり、リピート中であっても割り込みを受け付けら
れるように、ユーザに値の読み書きを可能にするための
ものである。制御レジスタCR7 26は、繰り返し回
数を示すカウント値RPT_Cを保持するリピート・カ
ウンタ(RPT_C)レジスタであり、制御レジスタC
R8 27は、リピートブロックの先頭の命令(すなわ
ち開始命令)のアドレスRPT_Sを保持するリピート
・ブロック・スタート・アドレス(RPT_S)レジス
タであり、制御レジスタCR9 28は、リピートブロ
ックの最後の命令(以下リピートブロック最終命令と称
する)のアドレスRPT_Eを保持するリピート・ブロ
ック・エンド・アドレス(RPT_E)レジスタであ
り、制御レジスタCR6 25は、リピートブロック内
でリピート処理を終了する最終命令(以下リピート処理
最終命令と称する)のアドレスRPT_Bを保持するリ
ピート・ブレーク・アドレス(RPT_B)レジスタで
ある。
【0026】また、制御レジスタCR10 29および
制御レジスタCR11 30は、モジュロ・アドレッシ
ングを行うために使用されるレジスタであり、制御レジ
スタCR10 29はモジュロ・スタート・アドレス
(MOD_S)を保持し、制御レジスタCR11 30
はモジュロ・エンド・アドレス(MOD_E)を保持す
る。これらの制御レジスタは共にデータ・ワード(16
ビット)・アドレスを保持する。ポストインクリメント
でアドレスを更新するモジュロアドレッシングを利用す
る場合には、制御レジスタCR10 29に小さい方の
アドレスがセットされ、制御レジスタCR11 30に
大きい方のアドレスがセットされる。そして、インクリ
メント前のレジスタ値が制御レジスタCR11 30に
保持されているアドレスと一致した場合、インクリメン
ト結果として制御レジスタCR1029に保持されてい
る値が汎用レジスタに書き戻される。
【0027】図1において、31,32はそれぞれ40
ビットのアキュムレータA0,A1である。アキュムレ
ータA0 31は、積和演算結果の上位16ビットを保
持するA0H 31b、積和演算結果の下位16ビット
を保持するA0L 31c、積和演算結果の上位からあ
ふれたビットを保持する8ビットのガードビットA0G
31aからなる。同様に、アキュムレータA1 32
は、積和演算結果の上位16ビットを保持するA1H
32b、積和演算結果の下位16ビットを保持するA1
L 32c、積和演算結果の上位からあふれたビットを
保持する8ビットのガードビットA1G 32aからな
る。
【0028】この発明による情報処理装置は2ウェイの
VLIW(Very Long Instructio
n Word)命令セットを処理する。図3はこの発明
による情報処理装置の32ビット命令のフォーマットを
示す図である。基本命令長は32ビット固定であり、各
命令は32ビット単位で整置されている。32ビットの
各命令コードは、命令のフォーマットを示す2ビットの
フォーマット指定ビット(FMビット)51と、15ビ
ットの左コンテナ52および15ビットの右コンテナ5
3とから構成される。各コンテナ52,53はそれぞれ
15ビットのショートフォーマットのサブ命令を格納で
きるほか、2つで1つの30ビットのロングフォーマッ
トのサブ命令を格納できる。なお、以下では、ショート
フォーマットのサブ命令をショート命令、ロングフォー
マットのサブ命令をロング命令と呼ぶ。
【0029】FMビット51は命令のフォーマットおよ
び2つのショート命令の実行順序を指定する。FMビッ
ト51が“11”の場合は、左コンテナ52および右コ
ンテナ53の30ビットで1つのロング命令を保持して
いることを示しており、それ以外の場合は左コンテナ5
2および右コンテナ53がそれぞれショート命令を保持
していることを示している。さらに、命令コードが2つ
のショート命令を保持している場合、そのFMビット5
1が実行順序を指定している。FMビット51が“0
0”の場合、2つのショート命令を並列に実行すること
を示している。FMビット51が“01”の場合、左コ
ンテナ52に保持されているショート命令を実行した後
に、右コンテナ53に保持されているショート命令を実
行することを示している。また、FMビット51が“1
0”の場合、右コンテナ53に保持されているショート
命令を実行した後に、左コンテナ52に保持されている
ショート命令を実行することを示している。このよう
に、この発明による情報処理装置は、シーケンシャルに
実行する2つのショート命令も含めて1つの32ビット
命令にエンコードしてコード効率の向上を図っている。
【0030】図4〜図7は典型的な命令のビット割り付
けの例を示す図である。図4は2つのオペランドを持つ
ショート命令のビット割り付けの例を示している。図に
おいて、61,64はオペレーションコードフィールド
である。これに代わって、フィールド64はアキュムレ
ータ番号を指定してもよい。また、62,63は、オペ
ランドとして参照あるいは更新されるデータの格納位置
をレジスタ番号やアキュムレータ番号で指定するフィー
ルドである。これに代わって、フィールド63は4ビッ
トの小さな即値データを指定してもよい。図5はショー
トフォーマットの分岐命令のビット割り付けの例を示し
ており、図において、71はオペレーションコードフィ
ールドであり、72は8ビットの分岐変位フィールドで
ある。分岐変位は、PC値と同様、命令ワード(32ビ
ット)のオフセットで指定される。図6は16ビットの
変位や即値データを持つ3オペランド命令やロード/ス
トア命令のビット割り付けの例を示しており、図におい
て、81はオペレーションコードフィールドであり、8
2,83はショートフォーマットと同様にレジスタ番号
を指定するフィールドであり、84は変位や即値データ
等を指定する16ビットの拡張データフィールドであ
る。図7は右コンテナ53側にオペレーションコードを
持つロングフォーマットの命令のビット割り付けの例を
示しており、2ビットのフィールド91が“01”であ
る例である。93,96はオペレーションコードフィー
ルドであり、94,95はレジスタ番号等を指定するフ
ィールドである。また、92は予約フィールドであり、
必要に応じてオペレーションコードやレジスタ番号等の
指定に使用される。
【0031】上述以外に、NOP(ノーオペレーショ
ン)命令のように、15ビットすべてがオペレーション
コードとなる命令や、1オペランド命令等の特殊なビッ
ト割り付けを持つ命令がある。
【0032】この発明による情報処理装置の各サブ命令
はRISCライクな命令セットである。メモリデータの
アクセスを行う命令はロード/ストア命令のみであり、
演算命令はレジスタ/アキュムレータ中のオペランドや
即値オペランドに対して演算を行う。オペランドデータ
のアドレッシングモードとしては、レジスタ間接モー
ド、ポストインクリメント付きレジスタ間接モード、ポ
ストデクリメント付きレジスタ間接モード、プッシュモ
ード、レジスタ相対間接モードの5種類がある。各々の
ニーモニックは、“@Rsrc”、“@Rsrc+”、
“@Rsrc−”、“@−SP”、“@(disp1
6,Rsrc)”で示される。Rsrcはべースアドレ
スを指定するレジスタ番号を示しており、disp16
は16ビットの変位値を示している。また、オペランド
のアドレスはバイトアドレスで指定される。
【0033】レジスタ相対間接モード以外のロード/ス
トア命令は、図4に示す命令フォーマットを有する。か
かるロード/ストア命令では、フィールド63でベース
レジスタ番号が指定され、フィールド62でメモリから
ロードしてきた値を書き込むレジスタの番号もしくはス
トアする値を保持するレジスタの番号が指定される。レ
ジスタ間接モードでは、ベースレジスタとして指定され
たレジスタの値がオペランドアドレスとなる。ポストイ
ンクリメント付きレジスタ間接モードでは、ベースレジ
スタとして指定されたレジスタの値がオペランドアドレ
スとなり、このベースレジスタの値がオペランドのサイ
ズ(バイト数)分ポストインクリメントされて書き戻さ
れる。ポストデクリメント付きレジスタ間接モードで
は、ベースレジスタとして指定されたレジスタの値がオ
ペランドアドレスとなり、このベースレジスタの値がオ
ペランドのサイズ(バイト数)分ポストデクリメントさ
れて書き戻される。プッシュモードは、ストア命令の実
行で且つベースレジスタが汎用レジスタR15である場
合にのみ使用可能であり、スタックポインタ(SP)値
がオペランドのサイズ(バイト数)分プリデクリメント
された値が、オペランドアドレスとなり、デクリメント
された値がSPに書き戻される。
【0034】レジスタ相対間接モードのロード/ストア
命令は図6に示す命令フォーマットを有している。かか
るロード/ストア命令では、フィールド83でベースレ
ジスタ番号が指定され、フィールド82でメモリからロ
ードしてきた値を書き込むレジスタの番号もしくはスト
アする値を保持するレジスタの番号が指定される。ま
た、フィールド84はオペランド格納位置のベースアド
レスからの変位値を指定する。レジスタ相対間接モード
では、ベースレジスタとして指定されたレジスタの値に
16ビットの変位値を加算した値がオペランドアドレス
となる。
【0035】ポストインクリメント付きレジスタ間接モ
ードおよびポストデクリメント付きレジスタ間接モード
では、制御レジスタCR0 21に保持されたPSW中
のMDビット44を“1”にすることにより、モジュロ
アドレッシングモードが使用され得る。
【0036】ジャンプ命令のジャンプ先アドレス指定に
は、ジャンプ先アドレスをレジスタ値で指定するレジス
タ間接モードと、ジャンプ命令のPCからの分岐変位で
指定するPC相対間接モードとがある。さらに、PC相
対間接モードについては、分岐変位を8ビットで指定す
るショートフォーマットと、分岐変位を16ビットで指
定するロングフォーマットの2種類ある。また、オーバ
ーヘッドなしにリピート処理を実現するリピート機能を
起動するためのリピート命令も設けられている。
【0037】図8はこの発明の実施の形態1による情報
処理装置100の構成を示すブロック図である。図にお
いて、101はMPUコア部であり、102はMPUコ
ア部101からの要求により命令データのアクセスを行
う命令フェッチ部であり、103は命令データを格納す
るための内蔵命令メモリであり、104はMPUコア部
101からの要求によりオペランドデータのアクセスを
行うオペランドアクセス部であり、105はオペランド
データを格納するための内蔵データメモリであり、10
6は命令フェッチ部102およびオペランドアクセス部
104からの要求を調停し、情報処理装置100の外部
のメモリへアクセスする外部バスインタフェース部であ
る。
【0038】また、MPUコア部101は、命令キュー
111と、制御部(検出手段、命令実行抑止手段、命令
処理シーケンス切替手段)112と、レジスタファイル
115と、第1演算部116と、第2演算部117と、
PC部(検出手段、命令実行抑止手段、命令処理シーケ
ンス切替手段)118とを備えている。
【0039】命令キュー111は、2エントリ分の32
ビット命令バッファおよび有効ビットと、入出力ポイン
タとを有しており、FIFO(先入れ先出し)方式で制
御される。命令キュー111は、命令フェッチ部102
でフェッチされた命令データを一時保持し、制御部11
2に送る。
【0040】制御部112は、命令キュー111の制
御、パイプライン制御、命令の実行制御、命令フェッチ
部102やオペランドアクセス部104とのインターフ
ェイス制御など、MPUコア部101に含まれるすべて
の構成要素の制御を行う。また、制御部112は命令キ
ュー111から送られる命令コードをデコードするため
の命令デコード部119を備えており、命令デコード部
119は第1デコーダ113および第2デコーダ114
を含む。第1デコーダ113は第1演算部116により
実行される命令をデコードし、第2デコーダ114は第
2演算部117により実行される命令をデコードする。
32ビットの命令のデコードの第1サイクルでは、必ず
左コンテナ52の命令コードが第1デコーダ113によ
り解析され、右コンテナ53の命令コードが第2デコー
ダ114により解析される。ただし、FMビット51お
よび左コンテナのビット0とビット1のデータは両方の
デコーダ113,114により解析される。また、右コ
ンテナ53のデータから拡張データを抽出するために、
右コンテナ53のデータは第1デコーダ113に送られ
るが、解析は行われない。従って、最初に実行する命令
はその命令を実行する演算部に対応した位置すなわち左
コンテナ52または右コンテナ53に置かれなければな
らない。2つのショート命令をシーケンシャルに実行す
る場合、先行して実行される命令のデコード中に後で実
行される命令が図示していないプリデコーダでデコード
され、そのプリデコーダによりどちらのデコーダでデコ
ードすべきかが判定される。後で実行される命令がどち
らのデコーダでも処理できる命令の場合は、第1デコー
ダ113によりデコードされる。先行する命令のデコー
ド後、後で実行する命令の命令コードが選択されたデコ
ーダに取り込まれ、解析される。
【0041】レジスタファイル115は、汎用レジスタ
R0〜R15に相当する複数のレジスタを有しており、
第1演算部116、第2演算部117、PC部118お
よびオペランドアクセス部104に複数のバスを介して
接続されている。
【0042】図9は第1演算部116の構成を詳細に示
すブロック図である。図に示すように、第1演算部11
6は、S1バス301、S2バス302およびS3バス
303を介してレジスタファイル115に接続されてい
る。第1演算部116は、これら3つのバスを介してレ
ジスタファイル115からデータを読み出し、内部の演
算器等にリードオペランドとなるデータやストアデータ
を転送する。S1バス301はレジスタファイル115
内の偶数番号のレジスタのみに接続されており、S2バ
ス302は奇数番号のレジスタのみに接続されており、
第1演算部116はS1バス301およびS2バス30
2を介してレジスタペアの2ワードを並列にレジスタフ
ァイル115から読み出すこともできる。S3バス30
3はレジスタファイル115内の全レジスタに接続され
ている。
【0043】第1演算部116は、また、D1バス31
1およびWバス314を介してレジスタファイル115
に接続されており、第1演算部116は、D1バス31
1を介して演算結果やデータをレジスタファイル115
へ転送し、Wバス314を介してロードしたバイトデー
タをレジスタファイル115へ転送する。D1バス31
1およびWバス314は、レジスタファイル115内の
全レジスタに接続されている。
【0044】レジスタファイル115は32ビットのO
Dバス322を介してオペランドアクセス部104に接
続されており、情報処理装置は1ワードのデータまたは
レジスタペアの2ワードを並列にオペランドアクセス部
104からレジスタファイル115へ転送することが可
能である。ODバス322の上位16ビットおよび下位
16ビットは、ともにレジスタファイル115の任意の
レジスタにデータ等を書き込むことができるようにレジ
スタファイル115内の全レジスタに接続されている。
【0045】また、図9において、153は主として転
送、比較、算術論理演算、オペランドアドレスの計算/
転送、オペランドアドレス値のインクリメント/デクリ
メント、ジャンプ先アドレスの計算/転送等を行う算術
論理演算部(ALU)であり、151,152はALU
153の入力ラッチであるAAラッチ,ABラッチであ
る。AAラッチ151は、S1バス301、S2バス3
02またはS3バス303を介して読み出されたレジス
タ値を取り込む。AAラッチ151は保持する内容をゼ
ロクリアする機能も備えている。ABラッチ152は、
S3バス303を介して読み出されたレジスタ値もしく
は第1デコーダ113によるデコードの結果生成された
16ビットの即値データを取り込む。ABラッチ152
は保持する内容をゼロクリアする機能も備えている。
【0046】上記したように、ALU153は、主とし
て転送、比較、算術論理演算、オペランドアドレスの計
算/転送、オペランドアドレス値のインクリメント/デ
クリメント、ジャンプ先アドレスの計算/転送等を行
う。ALU153は、また、演算結果やアドレスモディ
ファイの結果をセレクタ155およびD1バス311を
介してレジスタファイル115中の実行される命令で指
定されたレジスタに書き戻す。
【0047】また、154はオペランドのアドレスを保
持するAOラッチであり、AOラッチ154はALU1
53によるアドレス計算結果またはAAラッチ151に
保持されたベースアドレスの値を選択的に保持し、保持
した値をOAバス321を介してオペランドアクセス部
104に出力する。また、ALU153がジャンプ先ア
ドレスやリピートエンドアドレスなどを計算した場合に
は、ALU153は出力をJAバス323を介してPC
部118へ転送する。
【0048】さらに、156,157はそれぞれ図1に
示す制御レジスタCR10 29および制御レジスタC
R11 30に相当するMOD_Sレジスタ、MOD_
Eレジスタであり、158はMOD_Eレジスタ157
に保持されている値とS3バス303上のベースアドレ
スの値とを比較する比較器(CMP)である。MOD_
Sレジスタ156はラッチ159を介してセレクタ15
5に接続されている。
【0049】また、169はセレクタ155と協働し
て、S1バス301およびS2バス302とD1バス3
11との間に転送経路を形成するラッチである。
【0050】さらに、160は2つの16ビットのレジ
スタからなり、S1バス301もしくはS2バス302
に、または、S1バス301およびS2バス302の両
方に出力されたストアデータを一時保持するストアデー
タ(SD)レジスタであり、162はラッチ161を介
して転送されたSDレジスタ160に保持されていたス
トアデータをオペランドのアドレスに従って32ビット
境界に整置する整置回路である。整置後のストアデータ
は、ラッチ163およびODバス322を介してオペラ
ンドアクセス部104に出力される。
【0051】また、164はオペランドアクセス部10
4によりロードされたバイトデータをODバス322を
介して取り込む16ビットのロードデータ(LD)レジ
スタである。LDレジスタ164が取り込んだデータは
ラッチ165を介して整置回路166へ転送される。整
置回路166は、そのデータに対してバイト整置を行
い、さらにバイトデータのゼロ/符号拡張を行う。そし
て、整置、拡張後のデータは、Wバス314を介してレ
ジスタファイル115中の指定されたレジスタに書き込
まれる。1ワード(16ビット)ロードまたは2ワード
(32ビット)ロードの場合には、LDレジスタ164
を介さず、ロードした値がODバス322からレジスタ
ファイル115へ直接書き込まれる。
【0052】221は制御部112に含まれ、図1に示
す制御レジスタCR0 21の内容を保持するPSWラ
ッチ222等のラッチやPSW更新回路等からなり、演
算結果や命令の実行に応じてPSWラッチ222に保持
されている値を更新するPSW部である。情報処理装置
は、PSWラッチ222に値を転送する場合、TPSW
ラッチ167を介して、S3バス303に出力されたデ
ータの必要なビット(アサインされているビット)のみ
を転送する。情報処理装置は、PSWラッチ222に保
持されている値を読み出す場合には、PSW部221か
らその値をD1バス311に出力し、レジスタファイル
115へ書き込む。また、168は図1に示す制御レジ
スタCR1 22に相当するBPSWレジスタである。
例外処理時には、D1バス311に出力されたPSWラ
ッチ222に保持されている値がBPSWレジスタ16
8に書き込まれる。BPSWレジスタ168に書き込ま
れた値をレジスタファイル115へ転送する等の場合に
は、BPSWレジスタ168に保持されている値はS3
バス303上に読み出された後レジスタファイル115
等の必要な場所へ転送される。この際、アサインされて
いないビットは強制的にゼロがS3バス303に出力さ
れる。例外からの復帰時には、BPSWレジスタ168
に保持されている値は、直接TPSWラッチ167を介
して、必要なビット(アサインされているビット)のみ
PSW部221のPSWラッチ222へ転送される。
【0053】図10はPC部118の構成を詳細に示す
ブロック図である。図において、181は次にフェッチ
する命令のアドレスすなわち命令フェッチアドレスを保
持し、そのアドレスを命令フェッチ部102に出力する
命令アドレス(IA)レジスタであり、183は命令フ
ェッチ部102が引き続き後続の命令をフェッチするこ
とを可能にするために、IAレジスタ181からラッチ
182を介して転送されたアドレス値を1インクリメン
トするインクリメンタ(INC)である。インクリメン
タ183でインクリメントされたアドレス値はIAレジ
スタ181に書き戻される。ジャンプやリピート等によ
りシーケンスが切り替わる場合には、IAレジスタ18
1は、JAバス323を介して転送されるジャンプ先ア
ドレス、リピートブロック開始アドレス、リピートブロ
ックの次の命令のアドレスを取り込む。
【0054】また、184,186,188,171
は、それぞれリピート制御用の制御レジスタであるRP
T_Sレジスタ、RPT_Eレジスタ、RPT_Cレジ
スタ、RPT_Bレジスタであり、それぞれ図1に示す
制御レジスタCR8,CR9,CR7,CR6に相当し
ていおり、それぞれRPT_S、RPT_E、RPT_
C、RPT_Bを保持する。RPT_Sレジスタ18
4、RPT_Eレジスタ186、RPT_Cレジスタ1
88、RPT_Bレジスタ171は、それぞれD1バス
311に接続された入力ポートとS3バス303に接続
された出力ポートを有しており、各レジスタには必要に
応じてリピート時の初期設定や待避復帰が行なわれる。
【0055】RPT_Sレジスタ184はリピートブロ
ックの開始命令のアドレスRPT_Sを保持する。RP
T_Sレジスタ184の初期設定直後には、ラッチ18
5の内容も更新される。リピート処理中にリピートブロ
ックの先頭命令に戻る場合は、ラッチ185に保持され
ている値はJAバス323を介してIAレジスタ181
へ転送される。
【0056】RPT_Eレジスタ186はリピートブロ
ック最終命令のアドレスRPT_Eを保持する。このリ
ピートブロック最終命令のアドレスは、リピート命令処
理時に第1演算部116により計算され、JAバス32
3を介してRPT_Eレジスタ186に取り込まれる。
【0057】187はRPT_Eレジスタ186に保持
されている値と、IAレジスタ181に保持されている
命令フェッチアドレスとを比較し、これらの値が一致し
ているか否かを示す一致情報を出力する比較器(CM
P)であり、173はRPT_Eレジスタ186の内容
の更新時に、RPT_Eレジスタ186に保持されてい
る値を1インクリメントしてリピートブロックの次の命
令のアドレスを計算するインクリメンタ(INC)であ
り、インクリメントされた値はラッチ174に書き込ま
れる。リピート処理完了時には、ラッチ174に保持さ
れている値はJAバス323を介してIAレジスタ18
1へ転送される。
【0058】RPT_Bレジスタ171はリピート処理
を終了(ブレイク)するリピートブレイクアドレスRP
T_Bを保持する。このリピートブレイクアドレスは、
リピート命令処理時に第1演算部116により計算さ
れ、JAバス323を介してRPT_Bレジスタ171
に取り込まれる。172はRPT_Bレジスタ171に
保持されている値と、IAレジスタ181に保持されて
いる命令フェッチアドレスとを比較し、これらの値が一
致しているか否かを示す一致情報を出力する比較器(C
MP)である。この比較器172は比較手段に相当す
る。
【0059】RPT_Cレジスタ188およびTRPT
_Cレジスタ175は、それぞれリピートブロックの繰
り返し回数を管理するためのカウント値RPT_Cを保
持する。TRPT_Cレジスタ175は、D1バス31
1に接続された入力ポートを備えており、RPT_Cレ
ジスタ188の初期設定と同時に初期化される。なお、
TRPT_Cレジスタ175に保持されているカウント
値RPT_Cを先行更新情報と呼ぶ。
【0060】また、177は命令フェッチ段階で繰り返
し回数を更新する場合、ラッチ176を介して転送され
てきたTRPT_Cレジスタ175に保持されている値
を1デクリメントするデクリメンタ(DEC)であり、
1デクリメントされた値はTRPT_Cレジスタ175
に書き戻される。また、178はTRPT_Cレジスタ
175に保持されている値がゼロであるか否かを検出
し、検出結果を出力するゼロ検出回路(ZERO)であ
る。TRPT_Cレジスタ175に保持されている値
は、ラッチ176を介してRPT_Cレジスタ188へ
転送される。また、179はジャンプが起こった場合に
TRPT_Cレジスタ175に保持されている値を初期
化するために、RPT_Cレジスタ188からTRPT
_Cレジスタ175へ至る転送経路を形成するラッチで
ある。なお、カウント手段は、TRPT_Cレジスタ1
75、ラッチ176およびデクリメンタ177からな
る。
【0061】さらに、194は実行中の命令のPC値を
保持する実行ステージプログラムカウンタ(EPC)で
あり、191は次に実行する命令のPC値を保持する次
命令プログラムカウンタ(NPC)である。NPC19
1は、実行段階でジャンプが起こった場合、JAバス3
23上のジャンプ先アドレス値を取り込む。リピートブ
ロックの処理を繰り返す場合には、NPC191はラッ
チ185からリピートブロックの先頭アドレスを取り込
む。他方、リピート処理を終了する場合には、NPC1
91はラッチ174からリピートブロックの次の命令の
アドレスを取り込む。それ以外の場合には、ラッチ19
2を介して転送されたNPC191に保持されている値
はインクリメンタ(INC)193により1インクリメ
ントされNPC191に書き戻される。サブルーチンジ
ャンプ命令の場合には、ラッチ192に保持されている
値が戻り先アドレスとしてD1バス311に出力され、
レジスタファイル115中のリンクレジスタとして定義
されている汎用レジスタR13 14に書き込まれる。
次に実行する命令のPC値を参照する場合には、NPC
191に保持されている値がS3バス303に出力さ
れ、第1演算部116へ転送される。また、次の命令が
実行状態に入る場合には、ラッチ192に保持されてい
る値がEPC194へ転送される。情報処理装置は、実
行中の命令のPC値を参照する場合、EPC194に保
持されている値をS3バス303に出力し、第1演算部
116へ転送する。
【0062】196は図1に示すレジスタセットに含ま
れる制御レジスタCR3 24に対応するバックアップ
プログラムカウンタ(BPC)である。例外や割り込み
等が検出された場合には、EPC194に保持されてい
る値がラッチ195を介してBPC196へ転送され
る。BPC196はD1バス311に接続された入力ポ
ートとS3バス303に接続された出力ポートとを有し
ており、BPC196は必要に応じて待避復帰される。
【0063】図11は第2演算部117の構成を詳細に
示すブロック図である。図11に示すように、第2演算
部117は、S4バス304およびS5バス305を介
してレジスタファイル115に接続されており、これら
2つのバスを介して2つの任意のレジスタからデータを
読み出すことができる。第2演算部117は、また、S
4バス304およびS5バス305を介してレジスタフ
ァイル115中の任意のレジスタペアの2ワードを並列
に読み出すことも可能である。第2演算部117は、さ
らに、D2バス312およびD3バス313を介してレ
ジスタファイル115に接続されており、これら2つの
バスのいずれかを介してデータをレジスタファイル11
5中の任意のレジスタに書き込むことができる。D2バ
ス312はレジスタファイル115中の偶数番号のレジ
スタのみに接続されており、D3バス313はレジスタ
ファイル115中の奇数番号のレジスタのみに接続され
ている。第2演算部117は、また、D2バス312お
よびD3バス313を介してレジスタファイル115中
の任意のレジスタペアに2ワードのデータを並列に書き
込むこともできる。
【0064】図11において、208は図1に示す2つ
の40ビットアキュムレータA0,A1 31,32に
相当するアキュムレータであり、201は40ビットの
ALUである。ALU201は、ビット0からビット7
までの8ビットがアキュムレータ208のガードビット
用加算器、ビット8からビット23までの16ビットが
算術論理演算器、ビット24からビット39までの16
ビットがアキュムレータ208の下位16ビットを加算
するための加算器になっており、40ビットまでの加減
算と16ビットの論理演算とを行うことができる。
【0065】また、202,203はともにALU20
1の40ビット入力ラッチであるAラッチ、Bラッチで
あり、204はアキュムレータ208に保持されている
値をそのままもしくは16ビット算術右シフトして出力
するシフタである。Aラッチ202は、S4バス304
からレジスタ値をALU201の入力のビット8からビ
ット23の位置に取り込むか、シフタ204を介して、
アキュムレータ208に保持されている値をそのままも
しくは16ビット算術右シフトした値を取り込む。
【0066】さらに、205はアキュムレータ208に
保持されている値を配線206(ガードビット8ビッ
ト)、S4バス304(上位16ビット)およびS5バ
ス305(下位16ビット)を介して取り込むか、レジ
スタファイル115中の任意のレジスタに保持されてい
る値をS5バス305のみ、もしくは、S4バス304
およびS5バス305の両方を介して16ビットもしく
は32ビットのデータを右詰めで取り込み、40ビット
に符号拡張し、入力データを左3ビットから右2ビット
の任意のシフト量で算術シフトして出力するシフタであ
る。Bラッチ203は、S5バス305上のデータをA
LU201の入力のビット8からビット23の位置に取
り込むか、または、後述する乗算器211のPラッチ2
14の値もしくはシフタ205の出力を取り込む。な
お、Aラッチ202およびBラッチ203は、それぞれ
保持する値をゼロクリアしたり定数の値に設定したりす
る機能を有する。
【0067】209はALU201の40ビットの出力
を受け、この出力を上位16ビットもしくは上位下位あ
わせた32ビットのデータに変換する際に、ガードビッ
トをチェックして、ALU201の出力の上位20ビッ
トまたは40ビットの出力全体を16ビットまたは32
ビットで表現できる最大値もしくは最小値にクリッピン
グする機能および入力をそのまま出力する機能を備えた
サチュレーション回路であり、207はマルチプレクサ
(MUX)である。サチュレーション回路209の出力
はマルチプレクサ207に接続されている。
【0068】デスティネーションオペランドがアキュム
レータ208を示す場合には、マルチプレクサ207の
出力はアキュムレータ208に書き込まれる。デスティ
ネーションオペランドがレジスタを示す場合は、マルチ
プレクサ207の出力はD2バス312やD3バス31
3を介してレジスタファイル115の指定したレジスタ
に書き込まれる。1ワード転送の場合にはデスティネー
ションレジスタの番号が偶数ならば、その1ワードデー
タはD2バス312に出力され、奇数ならばD3バス3
13に出力される。2ワード転送の場合には、上位側の
16ビットデータがD2バス312に出力され、下位側
の16ビットデータがD3バス313に出力される。ま
た、転送命令、絶対値の計算命令、最大値設定命令また
は最小値設定命令を実行するために、Aラッチ202お
よびBラッチ203の出力はマルチプレクサ207に接
続されており、Aラッチ202およびBラッチ203に
保持されている値をアキュムレータ208やレジスタフ
ァイル115へ転送することが可能である。
【0069】また、210はBラッチ203に保持され
ている値を取り込み、固定小数点フォーマットの数を正
規化するのに必要なシフト量を計算し、レジスタファイ
ル115に書き戻すために結果をD2バス312または
D3バス313に出力するプライオリティエンコーダで
ある。さらに、212,213はそれぞれ乗算器211
の入力レジスタとして働き、S4バス304およびS5
バス305の16ビットの値を取り込み、17ビットに
ゼロ拡張または符号拡張する機能を備えるXラッチ,Y
ラッチである。乗算器211は、17ビットx17ビッ
トの乗算器であり、Xラッチ212に保持されている値
とYラッチ213に保持されている値との乗算を行う。
積和命令や積差命令の場合には、第2演算部117は乗
算器211による乗算結果をPラッチ214に書き込み
Bラッチ203へ転送する。乗算命令でデスティネーシ
ョンオペランドがアキュムレータ208を示す場合に
は、第2演算部117は乗算器211による乗算結果を
マルチプレクサ207を介してアキュムレータ208に
書き込む。
【0070】215は40ビットまたは16ビットのデ
ータに対して、左右16ビットまでの算術/論理シフト
を行うバレルシフタであり、216は即値データまたは
レジスタ値をS5バス305を介してシフト量として取
り込むシフト量(SC)ラッチであり、217は、アキ
ュムレータ208に保持されている値またはS4バス3
04上に出力されたレジスタに保持されている値をシフ
トデータとして取り込むシフトデータ(SD)ラッチで
ある。バレルシフタ215は、SDラッチ217に保持
されたシフトデータをSCラッチ216で指定されるシ
フト量だけ、オペレーションコードで指定されたシフト
を行う。シフト結果はサチュレーション回路209に出
力され、ALU201による演算結果と同様、必要に応
じてサチュレーションが行われた後マルチプレクサ20
7に出力される。マルチプレクサ207に出力された値
は、アキュムレータ208に書き戻されるか、または、
D2バス312およびD3バス313を介してレジスタ
ファイル115に書き戻される。
【0071】また、218は第2デコーダ114により
生成された6ビットの即値データを16ビットに拡張し
て保持し、S5バス305を介して第2演算部117へ
転送するための即値ラッチである。即値ラッチ218
は、また、ビット操作命令のビットマスクも生成する。
【0072】次に動作について説明する。まず、この発
明の実施の形態1による情報処理装置のパイプライン処
理について説明する。図12は実施の形態1による情報
処理装置のパイプライン処理を示す図である。情報処理
装置は、命令データのフェッチを行う命令フェッチ(I
F)ステージ401、命令の解析を行う命令デコード
(D)ステージ402、演算実行を行う命令実行(E)
ステージ403、データメモリのアクセスを行うメモリ
アクセス(M)ステージ404、メモリからロードした
バイトオペランドをレジスタヘ書き込むライトバック
(W)ステージ405の5段のパイプライン処理を行
う。Eステージ403での演算結果のレジスタヘの書き
込みはEステージ403で完了する。また、ワード(2
バイト)、2ワード(4バイト)ロード時のレジスタヘ
の書き込みはMステージ404で完了する。積和/積差
演算に関する命令は、更に乗算と加算の2段のパイプラ
インで実行される。後段の処理を命令実行2(E2)ス
テージ406と呼ぶ。連続する積和/積差演算を1回/
1クロックサイクルのスループットで実行できる。
【0073】IFステージ401では、主して命令のフ
ェッチ、命令キュー111の管理、リピート制御が行わ
れる。命令フェッチ部102、内蔵命令メモリ103、
外部バスインタフェース部106、命令キュー111、
PC部118の一部(IAレジスタ181、ラッチ18
2、インクリメンタ183、TRPT_Cレジスタ17
5、ラッチ176、デクリメンタ177、ゼロ検出回路
178、比較器187,172等)、および、制御部1
12のIFステージ制御、命令フェッチ制御、PC部1
18制御等を行う部分は、IFステージ401の制御で
動作する。IFステージ401は、Eステージ403の
ジャンプにより初期化される。
【0074】命令フェッチアドレスは、図10に示すI
Aレジスタ181により保持される。Eステージ403
でジャンプが起こると、IAレジスタ181は、制御部
112の制御のもとでJAバス323を介してジャンプ
先アドレスを取り込む。この結果、IAレジスタ181
は初期化される。シーケンシャルに命令データをフェッ
チする場合には、制御部112はインクリメンタ183
にIAレジスタ181に保持されているアドレスを1イ
ンクリメントさせIAレジスタ181に書き戻す。リピ
ート処理中で、リピートブロックの最終命令処理後リピ
ートブロックの先頭の命令に戻る場合、および、リピー
ト処理終了時には、制御部112はIFステージ401
で命令処理シーケンスの切り替え制御を行う。前者の場
合、PC部118は、制御部112の制御のもとでRP
T_Sレジスタ184に保持されているアドレスをラッ
チ185からJAバス323を介してIAレジスタ18
1へ転送する。後者の場合、RPT_Eレジスタ186
の内容に1を加算したアドレスの値をラッチ174から
JAバス323を介してIAレジスタ181へ転送す
る。
【0075】IAレジスタ181に保持されている値は
命令フェッチ部102に送られ、命令フェッチ部102
はこの値に従い命令データをフェッチする。対応する命
令データが図8に示す内蔵命令メモリ103にある場合
には、命令フェッチ部102は内蔵命令メモリ103か
ら命令コードを読み出す。この場合、1クロックサイク
ルで32ビットの命令のフェッチを完了する。対応する
命令データが内蔵命令メモリ103にない場合には、命
令フェッチ部102は外部バスインタフェース部106
に命令フェッチ要求を出す。外部バスインタフェース部
106は、その命令フェッチ要求とオペランドアクセス
部104からの要求とを調停し、命令の取り込みが可能
になったら、外部メモリから命令データを取り込み、命
令フェッチ部102に送る。外部バスインタフェース部
106は、最小2クロックサイクルで外部メモリにアク
セスすることが可能である。命令フェッチ部102は取
り込んだ命令を命令キュー111へ転送する。
【0076】命令キュー111は、2エントリのキュー
であり、FIFO制御で取り込んだ命令コードを制御部
112の命令デコード部119へ出力する。図10に示
すTRPT_Cレジスタ175の内容がゼロでなく且つ
命令フェッチアドレスがRPT_Eレジスタ186の内
容と一致したことを示すリピートブロック最終命令情
報、または、TRPT_Cレジスタ175がゼロであり
且つ命令フェッチアドレスがRPT_Bレジスタ171
の内容と一致したこと(すなわち比較器172の一致情
報が一致していること示している場合)を示すリピート
処理最終命令情報が、命令キューに対応する命令コード
とともに命令キュー111により保持され、対応する命
令コードとともに命令デコード部119に出力される。
なお、RPT_Eレジスタ186の内容とRPT_Bレ
ジスタ171の内容が一致する場合は、リピート処理最
終命令情報が送られる。以降のステージでは、リピート
ブロック最終命令情報およびリピート処理最終命令情報
に基づき、リピート処理に関する命令非依存のハードウ
ェア制御が行われる。
【0077】Dステージ402において、命令デコード
部119は、オペレーションコードの解析を行い、第1
演算部116、第2演算部117、PC部118等で命
令の実行を行うための制御信号群を生成する。Dステー
ジ402は、Eステージ403のジャンプにより初期化
される。命令キュー111から送られてくる命令コード
が無効な場合には、アイドルサイクルとなり、命令デコ
ード部119は有効な命令コードを取り込むまで待つ。
Eステージ403が次の処理を開始できない場合には、
命令デコード部119は第1演算部116、第2演算部
117等に送る制御信号群を無効化し、Eステージ40
3での先行命令の処理の終了を待つ。例えば、Eステー
ジ403で実行中の命令がメモリアクセスを行う命令で
あり、Mステージ404でのメモリアクセスが終了して
いない場合にこのような状態になる。
【0078】Dステージ402において、命令デコード
部119はシーケンシャル実行を行う2命令の分割や、
2サイクル実行命令のシーケシス制御も行う。さらに、
命令デコード部119は、スコアボードレジスタ(図示
せず)を用いたロードオペランドの干渉チェックや第2
演算部117における演算器の干渉チェック等も行い、
干渉を検出した場合には、干渉が解消されるまで制御信
号群の出力を抑止する。図13はロードオペランド干渉
の例を示す図である。ワードまたは2ワードのロード命
令の直後にロードするオペランドを参照する積和演算命
令がある場合、命令デコード部119はレジスタへのロ
ードが完了するまで積和演算命令の実行開始を抑止す
る。この場合、メモリアクセスが1クロックサイクルで
終了する場合でも1クロックサイクルストールが起こ
る。バイトデータをロードする場合には、Wステージ4
05でレジスタファイル115ヘの書き込みが完了する
ので更に1クロックサイクルストール期間が延びる。図
14は演算ハードウェア干渉の例を示す図である。例え
ば、積和演算命令の直後に加算器を使用する丸め命令が
ある場合、命令デコード部119は先行の積和演算命令
の演算が終了するまで丸め命令の実行開始を抑止する。
この場合1クロックサイクルストールが起こる。なお、
積和演算命令が連続する場合ストールは起こらない。
【0079】第1デコーダ113は、主として第1演算
部116のすべて、PC部118のIFステージ401
で制御される部分以外、およびレジスタファイル115
のS1バス301,S2バス302およびS3バス30
3への読み出し制御とD1バス311からの書き込み制
御に関する制御信号群を生成する。第1デコーダ113
は、また、命令に依存するMステージ404やWステー
ジ405での処理に必要な制御信号群も生成し、パイプ
ラインの処理の流れに付随してMステージ404やWス
テージ405へ転送する。一方、第2デコーダ114
は、主として第2演算部117での実行制御、レジスタ
ファイル115のS4バス304およびS5バス305
への読み出し制御とD2バス312およびD3バス31
3からの書き込み制御に関する制御信号群を生成する。
【0080】命令デコード部119は、また、命令キュ
ー111から取り込まれたリピートブロック最終命令情
報およびリピート処理最終命令情報に基づき、命令に依
存しないリピート処理に関する図10に示すNPC19
1の更新に関する制御信号、RPT_Cレジスタ188
の更新に関する制御信号や、図9のPSWラッチ222
のRPビット43の更新に関する制御信号などを生成す
る。
【0081】Eステージ403では、演算、比較、制御
レジスタを含むレジスタ間転送、ロード/ストア命令の
オペランドアドレス計算、ジャンプ命令のジャンプ先ア
ドレスの計算、ジャンプ処理、EIT(例外、割り込
み、トラップの総称)検出と各EITのベクタアドレス
ヘのジャンプ等、メモリアメセスと積和/積差演算命令
の加算処理を除く命令実行に関するほとんどすべての処
理が行われる。
【0082】割り込みイネーブルの場合の割り込みの検
出は、必ず32ビット命令の切れ目で行われる。従っ
て、32ビット命令の中にシーケンシャルに実行される
2つのショート命令がある場合、この2つのショート命
令間でいかなる割り込みも受け付けられない。
【0083】Eステージ403で処理中の命令がオペラ
ンドアクセスを行う命令であり、Mステージ404でメ
モリアクセスが完了していない場合には、Eステージ4
03での完了は待たされる。この際、Eステージ403
の制御は制御部112で行われる。
【0084】Eステージ403において、第1演算部1
16のALU153は、算術論理演算、比較、転送を行
う。第1演算部116のALU153は、また、モジュ
ロの制御を含むメモリオペランドのアドレス計算や分岐
先のアドレス計算も行う。レジスタファイル115は、
オペランドとして指定されたレジスタに保持されている
値をS1バス301、S2バス302およびS3バス3
03に出力する。ALU153は、演算やアドレス計算
等を行う場合、これらのバスに出力された値や、必要に
応じて別途取り込まれる即値データ、変位等の拡張デー
タを使用して必要な演算を行う。汎用レジスタへの書き
込みを行う場合、演算結果はD1バス311を介してレ
ジスタファイル115中のオペランドにより指定された
レジスタに書き込まれる。ロード/ストア命令の場合に
は、情報処理装置は、オペランドアドレスとなるALU
153の出力をAOラッチ154およびOAバス321
を介してオペランドアクセス部104へ転送する。ジャ
ンプ命令の場合には、情報処理装置は、ジャンプ先アド
レスとなるALU153の出力をJAバス323を介し
てPC部118へ転送する。第1演算部116は、レジ
スタファイル115からS1バス301およびS2バス
302上に出力されたストアデータをSDレジスタ16
0およびラッチ161を介して整置回路162へ転送す
る。そして、整置回路162は受け取ったストアデータ
を整置する。PC部118は、実行中の命令のPC値の
管理、次に実行する命令のアドレスの生成を行う。第1
演算部116およびPC部118に含まれる制御レジス
タ(アキュムレータを除く)とレジスタファイル115
と間でのデータの転送は、S3バス303およびD1バ
ス311を介して行われる。
【0085】Eステージ403において、第2演算部1
16は、算術論理演算、比較、転送、シフト他積和演算
の加算以外のすべての演算を行う。第2演算部116の
各演算器は、レジスタファイル115、即値レジスタ2
18、アキュムレータ208等から、S4バス304お
よびS5バス305やその他の専用経路を介してオペラ
ンドの値を受け取ると、指定された演算を行う。演算結
果は、アキュムレータ208、または、D2バス312
およびD3バス313を介してレジスタファイル115
に書き戻される。
【0086】第1演算部116および第2演算部117
による演算結果に基づいたPSWラッチ222に保持さ
れた値の更新制御もEステージ403で行われる。しか
し、演算結果の確定がEステージ403の遅い時期に行
われるので、PSWラッチ222に保持されている値の
更新は実際には次のクロックサイクルで行われる。一
方、データ転送によるPSWラッチ222により保持さ
れている値の更新は対応するクロックサイクルで完了す
る。
【0087】Eステージ403では、実行される命令に
依存しないPC値の更新やリピート制御も行われる。新
たに32ビット命令の処理を開始するたびに、PC部1
18は、制御部112の制御のもとでラッチ192に保
持されている値をEPC194へ転送する。NPC19
1は次に処理する命令のアドレスを保持する。Eステー
ジでジャンプが起こった場合、情報処理装置は、第1演
算部116のALU153により生成されたジャンプ先
アドレスをJAバス323を介してNPC191へ書き
込み、NPC191を初期化する。シーケンシャルに命
令を継続的に処理する場合には、32ビット命令の処理
を開始するたびに、PC部118は、制御部112の制
御のもとでインクリメンタ193により1インクリメン
トされた値をNPC191へ書き戻す。リピートブロッ
ク最終命令の処理を開始する際には、NPC191はラ
ッチ185からリピートブロックの先頭アドレスを取り
込む。リピート処理最終命令の処理を開始する際には、
NPC191はラッチ174からリピートブロックの次
の命令のアドレスを取り込む。そして、リピートブロッ
ク最終命令の処理を終了するクロックサイクルにおい
て、PC部118は、制御部112の制御のもとでIF
ステージ401ですでに1デクリメントされているカウ
ンタ値をラッチ176からRPT_Cレジスタ188へ
転送する。リピート処理最終命令の処理を終了するクロ
ックサイクルにおいて、制御部112はPSWラッチ2
22のRPビット43をゼロクリアする。
【0088】第2デコーダ114により生成された積和
/積差演算の加減算実行のための制御信号群は、Eステ
ージ403制御のもとで保持される。メモリアクセス情
報およびロードレジスタ情報は、Mステージ404に送
られる。制御部112はEステージ403のステージ制
御も行う。
【0089】Mステージ404では、第1演算部116
から送られたアドレスでオペランドのアクセスが行われ
る。オペランドアクセス部104は、オペランドが内蔵
データメモリ105やチップ内I/O(図示せず)にあ
る場合には、内蔵データメモリ105やチップ内I/O
に対し、1クロックサイクルに1回のオペランドのリー
ドまたはライトを行う。オペランドが内蔵データメモリ
105やチップ内I/Oにない場合には、オペランドア
クセス部104は外部バスインタフェース部106へデ
ータアクセス要求を出す。外部バスインタフェース部1
06は、外部メモリに対してデータアクセスを行い、ロ
ードの場合には読み出されたデータをオペランドアクセ
ス部104へ転送する。外部バスインタフェース部10
6は、最小2クロックサイクルで外部メモリへのアクセ
スを行うことが可能である。ロードの場合には、オペラ
ンドアクセス部104は読み出したデータをODバス3
22に出力する。バイトデータロードの場合、LDレジ
スタ164がODバス322上のロードデータを取り込
む。ワードまたはタブルワードデータロードの場合、レ
ジスタファイル115がODバス322上のロードデー
タを直接取り込む。ストアの場合には、第1演算部11
6は、制御部112の制御のもとで整置されたストアデ
ータの値を整置回路162からラッチ163およびOD
バス322を介してオペランドアクセス部104へ転送
し、対象となるメモリヘの書き込みが行われる。制御部
112はMステージ404のステージ制御も行う。
【0090】Wステージ405において、第1演算部1
16は、LDレジスタ164に保持されたロードオペラ
ンド(バイト)をラッチ165へ転送し、整置回路16
6により整置、ゼロ/符号拡張した後にWバス314に
出力する。レジスタファイル115はWバス314上の
ロードデータを命令で指定されたレジスタに書き込む。
【0091】E2ステージ406において、図11に示
す第2演算部117のALU201は、積和/積差演算
の加減算処理を行い、加減算結果をアキュムレータ20
8に書き戻す。
【0092】この実施の形態1による情報処理装置は入
力クロックに基づいて内部制御を行う。最短の場合、各
パイプラインステージでは、1クロックサイクルで処理
が終了する。なお、クロック制御はこの発明に直接関係
ないので以下ではその説明を省略する。
【0093】次にサブ命令の処理例について説明する。
加減算、論理演算、比較等の演算命令やレジスタ間の転
送命令を実行する場合、IFステージ401、Dステー
ジ402、Eステージ403の3段でその命令の処理が
終了する。その際、演算やデータ転送はEステージ40
3において行われる。積和/積差命令を実行する場合、
乗算を行うEステージ403および加減算を行うE2ス
テージ406がそれぞれ1クロックサイクルで処理され
る。すなわち、4段で積和/積差命令の処理が終了す
る。
【0094】バイトロード命令を実行する場合、IFス
テージ401、Dステージ402、Eステージ403、
Mステージ404、Wステージ405の5段でその命令
の処理が終了する。ワード/2ワードロードやストア命
令を実行する場合、IFステージ401、Dステージ4
02、Eステージ403、Mステージ404の4段でそ
の命令の処理が終了する。
【0095】非整置アクセスの場合には、オペランドア
クセス部104が、Mステージ404の制御のもと非整
置アクセスを2回のアクセスに分割しメモリアクセスを
行う。また、実行に2クロックサイクルかかかる命令で
は、第1および第2命令デコーダ113,114が、そ
れぞれ各クロックサイクル毎に制御信号群を生成し、2
クロックサイクルかけて演算実行を行う。
【0096】1つの32ビット命令が1つのロング命令
で構成されている場合、この1つのロング命令を実行す
ることにより32ビット命令の実行が完了する。また、
パラレルに2つのショート命令を実行する場合、これら
の2つのショート命令を実行するのに要するクロックサ
イクル数は、2つのショート命令のうち処理サイクル数
の大きい方の命令により決まる。例えば、2クロックサ
イクル実行の命令と1クロックサイクル実行の命令との
組み合わせの場合、これらの命令をパラレルに実行する
には2クロックサイクル要する。2つのショート命令を
シーケンシャルに実行する場合、これら2つのショート
命令がシーケンシャルにデコードされ実行される。例え
ば、Eステージ403において1クロックサイクルで実
行が完了する加算命令を2つシーケンシャルに実行する
場合、Dステージ402、Eステージ403とも各加算
命令の処理に1クロックサイクル要し、各加算命令の実
行には合計2クロックサイクル要する。Eステージ40
3における先行命令の実行と並列して、Dステージ40
2で後続命令のデコードが行われる。
【0097】次にこの実施の形態1による情報処理装置
のリピート処理の動作を詳細に説明する。図15はリピ
ート命令“REP Rsrc1,Rsrc2,disp
16”のビット割り付けを示す図である。リピート命令
は図6に示すロング命令のフォーマットを有している。
図15において、501はFMビットであり、ここで
は、ロングフォーマットを示す“11”である。また、
502はオペレーションコードであり、503はリピー
トブロック内のリピート処理が終了されるリピートブレ
イクアドレスを指定するレジスタ番号Rsrc1であ
る。なお、リピートブレイクアドレスは、リピートブロ
ックの開始命令アドレスからの変位で指定され、Rsr
c1にはこの変位値が設定される。リピートブロック内
で分岐等が起こらない場合には、Rsrc1に設定され
る値は“最終リピートサイクルで実行されるリピートブ
ロック内の命令数−1”に等しい。リピートブレイクア
ドレスとしてリピートブロック内の任意の命令のアドレ
ス(ただし開始命令アドレスからの変位で)を指定可能
である。リピートブロックの開始命令や最終命令のアド
レスであっても構わない。また、504は(リピートブ
ロックの繰り返し回数(途中でブレイクする最後の回も
含む)−1)を保持するレジスタを指定するレジスタ番
号Rsrc2であり、505はリピートブロック最終命
令のリピート命令からの変位値disp16である。従
って、リピートブロックは、リピート命令の直後の命令
からdisp16で指定される命令までの範囲に等し
い。この実施の形態1では、パイプライン処理の都合
上、リピートブロックが32ビット命令で2命令以下で
あるか、または、レジスタ番号Rsrc2により指定さ
れるレジスタに設定される値が“0”でレジスタ番号R
src1により指定されるレジスタに設定される値が
“2”以下の場合には、動作保証しないものとする。
【0098】次に以下の積和演算を例に具体的な動作に
ついて説明する。
【0099】
【数1】
【0100】図16は上記式(1)に従って積和演算を
行うアセンブラ記述の、REP命令を含むプログラム例
を示す図である。なお、図において、各行のセミコロン
以降はコメントである。また、“||”は2つのショー
ト命令を並列に実行することを示している。
【0101】以下では、汎用レジスタR8 9にはA
[0]のアドレスが、汎用レジスタR9 10にはB
[0]のアドレスが、汎用レジスタR10 11には
“積和演算回数N”が設定されているものとする。ま
た、A[i]およびB[i](i=0〜N−1)は16
ビットデータであり、A[0]〜A[N−1]およびB
[0]〜B[N−1]はともにこの順番で内蔵データメ
モリ105上のアドレスが順に増大する複数のメモリ位
置にそれぞれ格納されており、A[0]およびB[0]
は、32ビツト(4バイト)整置されているものとす
る。また、積和演算結果は16ビットに丸められ、汎用
レジスタR0 1に保持されるものとする。
【0102】なお、以下では、図16に示す10個の3
2ビット命令をそれぞれI1〜I10で参照し、並列に
実行される2命令における“||”の左側の命令をIx
a(xは2〜4または6〜10のいずれか)、“||”
の右側の命令をIxb(xは2〜4または6〜10のい
ずれか)で参照する。例えば、I2の命令において、L
D2W命令をI2a、SRLI命令をI2bで参照す
る。I1からI4の命令はリピート処理を行うための前
処理であり、I5の命令はリピート命令であり、I6か
らI9の命令は積和演算を行うためのリピートブロック
であり、I10の命令は後処理である。
【0103】この実施の形態1による情報処理装置は、
2つの異なる領域に割り当てられた配列データをロード
する場合、異なるロード命令で読み出す必要がある。ま
た、Mステージ404でロードが行われるので、パイプ
ラインストールなしに積和演算を実行するためには、積
和命令で参照するオペランドデータは、内蔵データメモ
リ105に格納されている場合でも2クロックサイクル
以上前に実行される命令でロードされる必要がある。従
って、1クロックサイクルに1回のスループットで積和
演算を実行するためには、最低4命令でリピート処理を
行う必要がある。汎用レジスタR0〜R3 1〜4の4
つのレジスタがA[i]のバッファとして、汎用レジス
タR4〜R7 5〜8の4つのレジスタがB[i]のバ
ッファとして使用される。
【0104】I1のAND3命令を実行する場合、情報
処理装置は、汎用レジスタR1011に保持されている
データと即値データ“3”のビット毎との論理積をと
り、その結果を汎用レジスタR11 12に書き込む。
図16のI5に示すように、汎用レジスタR11に保持
されている値がリピート命令のレジスタ番号Rsrc1
で指定される値である。I2bのSRLI命令は、汎用
レジスタR10 11に保持されている値を2ビット算
術右シフトする命命である。汎用レジスタR10 11
に保持されている値がリピート命令のレジスタ番号Rs
rc2で指定される値となる。例えば、上記式(1)に
おけるNが10の場合、汎用レジスタR10 11に設
定される初期値は“9”であり、上記I1およびI2の
命令の実行により、汎用レジスタR10 11および汎
用レジスタR11 12にはそれぞれ“2”と“1”が
書き込まれる。I3bのNOP命令はノーオペレーショ
ン命令である。この命令は、命令コードの整置のために
挿入されており、実行されても有効なオペレーションは
行われない。I4bのCLRAC命令は、アキュムレー
タA0 31をゼロクリアする命令である。
【0105】リピート処理を開始するために、前処理と
して、オペランドデータのロードを行っておく必要があ
る。I2a,I3aおよびI4aのLD2W命令がその
処理を行う。たとえば、I2aのLD2W命令は、ポス
トインクリメント付きレジスタ間接モードの2ワードロ
ード命令である。この命令が実行されると、汎用レジス
タR8 9で指定されるアドレスから始まる16ビット
データ2つが汎用レジスタR0 1および汎用レジスタ
R1 2にそれぞれロードされ、汎用レジスタR8 9
に保持されている値がオペランドサイズに相当する4だ
けポストインクリメントされる。
【0106】情報処理装置は次にI5のREP命令を実
行する。REP命令は2クロックサイクルかけて実行さ
れる。情報処理装置は、第1クロックサイクルで図1に
示す制御レジスタCR9 28(RPT_E)、制御レ
ジスタCR7 26(RPT_C)にそれぞれ相当する
RPT_Eレジスタ186、RPT_Cレジスタ188
等の設定を行い、第2クロックサイクルで図1に示す制
御レジスタCR6 25(RPT_B)、制御レジスタ
CR8 27(RPT_S)にそれぞれ相当するRPT
_Bレジスタ171、RPT_Sレジスタ184等の設
定を行い、制御レジスタCR0 21のPSWのRPビ
ット43を“1”に設定する。
【0107】まず、第1クロックサイクルにおいて、P
C部118は、制御部112の制御のもとでREP命令
のPC値をEPC194からS3バス303に出力し、
第1演算部116のAAラッチ151はS3バス303
上に出力されたそのPC値を取り込む。また、ABラッ
チ152は、第1デコーダ113から出力されるREP
命令のdisp16で指定される変位値を取り込む。第
1演算部116のALU153は、AAラッチ151お
よびABラッチ152に保持されている値同士を加算
し、リピートブロックの最終命令のアドレスであるI9
の命令のアドレスを計算する。第1演算部116は制御
部112の制御のもとでALU153による計算結果を
JAバス323に出力し、PC部118のRPT_Eレ
ジスタ186はJAバス323上に出力されたその計算
結果を取り込む。その後、PC部118のインクリメン
タ173は、RPT_Eレジスタ186に保持されてい
る値を1インクリメントする。そのインクリメント結果
はラッチ174に書き込まれる。その結果、ラッチ17
4は、リピートブロックの次の命令すなわちI10の命
令のアドレスを保持する。また、上記処理と並行して、
I5のREP命令のレジスタ番号Rsrc2で指定され
る値すなわち汎用レジスタR10 11に保持されてい
る値が、S1バス301を介して第1演算部116のラ
ッチ169へ転送され、さらに、セレクタ155および
D1バス311を介してRPT_Cレジスタ188およ
びTRPT_Cレジスタ175の両方に書き込まれる。
そして、RPT_Cレジスタ188に書き込まれた値は
さらにラッチ179へ転送される。
【0108】第2クロックサイクルでは、PC部118
のNPC191がリピートブロックの開始命令のアドレ
スであるI6の命令のアドレスを保持している。PC部
118は制御部112の制御のもとでNPC191に保
持されている値をS3バス303に出力し、第1演算部
116のABラッチ152はS3バス303上に出力さ
れたその値を取り込む。また、REP命令のレジスタ番
号Rsrc1により指定される汎用レジスタR11 1
2に保持されている値が、S2バス302を介して第1
演算部116のAAラッチ151へ転送される。そし
て、ALU153は、AAラッチ151およびABラッ
チ152に保持されている値同士を加算し、リピート処
理の最後に実行される命令のアドレスを計算する。第1
演算部116は制御部112の制御のもとでALU15
3による計算結果をJAバス323に出力し、PC部1
18のRPT_Bレジスタ171はJAバス323上に
出力されたその計算結果を取り込む。また、上記処理と
並行して、PC部118は、NPC191に保持されて
いる値をラッチ192およびD1バス311を介してR
PT_Sレジスタ184へ転送する。その後、PC部1
18は、さらに、RPT_Sレジスタ184に保持され
ている値をラッチ185へ転送する。そして、制御部1
12はPSWラッチ222のRPビット43を“1”に
設定する。
【0109】図17および図18はこの実施の形態1に
よる、図16に示したプログラムのREP命令実行から
リピート処理完了までのパイプライン処理を示すタイミ
ングチャート図である。これら2つの図は連続した図で
あり、わかりやすいように2クロックサイクルT8,T
9は重複して示している。図の上部4行は各パイプライ
ンステージの処理を示しており、残りの下部はリピート
処理に関係するレジスタに保持されている値や信号の値
を示している。また、簡単のため、各命令およびアドレ
スをI5等命令の仮称で示している。“IA==RPT
_E”、“IA==RPT_B”はそれぞれ、比較器1
87,172の比較結果を示しており、“TRPT_C
==0”はゼロ検出回路178の出力を示している。ま
た、図17および図18は10回の積和を行う場合のパ
イプライン処理を示している。図示した例は、リピート
処理最終命令がI7の命令であり、I6〜I9の4命令
のリピートブロックの処理を2回さらにI6,I7の2
命令を実行した後、I10の命令の実行を行うものであ
る。
【0110】図17に示すように、情報処理装置は、2
クロックサイクルT3,T4でI5のREP命令を実行
する。上記したようにI6〜I9までの4命令がリピー
トブロックであり、情報処理装置はこれらの命令を繰り
返し実行する。情報処理装置は2ワードのロード(LD
2W)命令と積和演算(MAC)命令とを並列に実行す
る。例えば、I6bのMAC命令は、汎用レジスタR0
1に保持されている値と汎用レジスタR4 5に保持
されている値とを乗算し、乗算結果とアキュムレータA
0 31に保持されている値とを加算して、アキュムレ
ータA0 31に書き戻すものである。ロードオペラン
ドの干渉を起こさず1クロックサイクルで1回の積和を
実行できるように、I6,I7の命令で参照されるデー
タはI7,I8の命令で、I8,I9の命令で参照され
るデータはI9,I6の命令でロードされる。積和演算
自体の詳細はこの発明とは直接関連がないので、以下で
はその説明を省略する。
【0111】次に実行する命令とは無関係にハードウェ
ア的に行われるリピート処理中の命令処理シーケンス制
御について詳細に説明する。
【0112】実行する命令処理シーケンスの切り替えは
IFステージ401で行われる。この際、PC部118
の比較器187は、IAレジスタ181に保持されてい
る命令フェッチアドレスとRPT_Eレジスタ186に
保持されているリピートブロック最終命令のアドレスと
を比較する。また、比較器172は、IAレジスタ18
1に保持されている命令フェッチアドレスとRPT_B
レジスタ171に保持されているリピート処理の最終実
行命令のアドレスとを比較する。
【0113】PSWラッチ222のRPビット43が
“1”(リピート処理中)に設定されており且つTRP
T_Cレジスタ175に保持されている値が非ゼロであ
る状態でI9の命令をフェッチした場合、比較器187
による比較結果は比較された値同士が一致していること
を示しており、これを受けて制御部112はリピートブ
ロックの先頭のI6の命令を次に実行すると判断する。
図17のクロックサイクルT6および図18のクロック
サイクルT10がこの状態に対応する。I9の命令のア
ドレス出力完了後、ラッチ185に保持されているリピ
ートブロックの先頭命令であるI6の命令のアドレスが
JAバス323を介してIAレジスタ181へ転送され
ると、命令フェッチ部102は次にI6の命令をフェッ
チする。また、2クロックサイクルT6,T10では、
デクリメンタ177がTRPT_Cレジスタ175に保
持されている値を1デクリメントし、デクリメント結果
はTRPT_Cレジスタ175に書き戻される。この
間、TRPT_Cレジスタ175に保持されている値が
非ゼロであるならば、制御部112は比較器172の比
較結果を無視する。
【0114】リピートブロック最終命令情報がI9の命
令の実行に同期してパイプライン中で転送され、この情
報に基づき以下の処理が行われる。Eステージ403で
のI9の命令の実行開始前(2クロックサイクルT7,
T11)、PC部118は次に実行する命令のPC値と
してI6の命令のアドレスをラッチ185からNPC1
91へ転送する。また、Eステージ403でI9の命令
処理を完了する2クロックサイクルT8,T12で、P
C部118はTRPT_Cレジスタ175に保持されて
いる値をラッチ176を介してRPT_Cレジスタ18
8およびラッチ179へ転送する。従って、RPT_C
レジスタ188は、常にEステージ403で実行命令に
連動した状態更新情報を保持する。
【0115】PSWラッチ222のRPビット43が1
(リピート処理中)であり且つTRPT_Cレジスタ1
75に保持されている値がゼロである状態で、I7の命
令をフェッチした場合、比較器172による比較結果は
比較された値同士が一致していることを示している。図
18のクロックサイクルT12がこの状態に対応する。
I7の命令アドレス出力完了後、PC部118が、制御
部112の制御のもとでラッチ174に保持されている
リピートブロックの次の命令であるI10の命令のアド
レスをJAバス323を介してIAレジスタ181へ転
送すると、命令フェッチ部102は次にI10の命令を
フェッチする。この場合、デクリメンタ177はTRP
T_Cレジスタ175に保持されている値をデクリメン
トしない。
【0116】リピート処理最終命令情報はI7の命令の
実行に同期してパイプライン中で転送され、この情報に
基づき以下の処理が行われる。Eステージ403でのI
7の命令の実行開始前(クロックサイクルT13)、P
C部118は、次に実行する命令のPC値としてI10
の命令のアドレスをラッチ174からNPC191へ転
送する。また、Eステージ403でI7の命令処理を完
了するクロックサイクルT14で、制御部112はPS
Wラッチ222のRPビット43をゼロクリアする。こ
れで、リピート処理は完了したことになる。
【0117】リピート処理終了後、リピートブロックの
次の命令(I10)の処理が行われる。I10aのRA
CHI命令は、アキュムレータA0 31に保持されて
いる値のビット8〜23(A0H)を16ビットに丸
め、サチュレーション処理を行い、その結果を汎用レジ
スタR0 1に書き込む命令である。この例では、I7
bのMAC命令とI10のRACHI命令とは演算ハー
ドウェア干渉を起こすので、クロックサイクルT15で
のI7の命令のEステージ406における処理終了後ク
ロックサイクルT16でI10の命令が実行される。
【0118】以上リピート処理最終命令がI7の命令で
ある例を示したが、リピート処理最終命令はこれに限定
されるものではなくリピートブロック内のどの命令であ
っても良い。たとえば、リピート処理最終命令はリピー
トブロックの開始命令I6であってもよいし、リピート
ブロックの最終命令I9であってもよい。さらに、リピ
ート処理最終命令はリピートブロック以外の命令であっ
ても良く、この命令は例えばリピートブロック内でサブ
ルーチンコールなどを行う場合のサブルーチン内の命令
であり得る。
【0119】なお、ロードに関しては、3命令分投機的
に発行され実行される。リピート処理中に、Eステージ
403でジャンプ命令が実行された場合には、リピート
関係の前処理に優先してジャンプ処理が行われる。この
際、第1演算部116のALU153は生成したジャン
プ先アドレスをJAバス323に出力し、PC部118
のNPC191およびIAレジスタ181はJAバス3
23上に出力されたそのジャンプ先アドレスを取り込
む。また、実行ステージジャンプ時には、PC部118
はラッチ179に保持されている値をTRPT_Cレジ
スタ175へ転送し、TRPT_Cレジスタ175に保
持されていた先行更新情報をクリアする。ただし、リピ
ートブロックの最終命令でジャンプが起こった場合に
は、更新された情報をRPT_Cレジスタ188に反映
させるため、PC部118はTRPT_Cレジスタ17
5へのラッチ179に保持されている値の転送を行わな
い。
【0120】次にリピート処理中に外部割り込みを受け
付けた場合の処理について簡単に説明する。
【0121】この実施の形態1による情報処理装置は、
32ビット命令の切れ目で外部割り込みを受け付けるこ
とができる。制御レジスタCR0 21に保持されてい
るPSWのIEビット42が“1”の状態で外部割り込
みを検出すると、情報処理装置は割り込みを受け付け
る。割り込みを受け付けると、Eステージ403はハー
ドウェア的に1クロックサイクルの間ノーオペレーショ
ン状態となり、情報処理装置は、ハードウェア的に生成
される制御信号に基づいて1クロックサイクル割り込み
処理を行う。まず、PC部118は、割り込み処理の前
クロックサイクルにおいて、NPC191に保持されて
いる次に実行する命令のPC値をラッチ192を介して
EPC194へ転送する。これは、割り込み処理復帰後
実行する命令のアドレスをEPC194に保持されてい
る値に戻すためである。割り込み処理サイクルでは以下
の処理を行う。PC部118は、EPC194に保持さ
れている値をラッチ195を介してBPC196に待避
する。また、情報処理装置は、PSWラッチ222に保
持されている値をD1バス311を介して第1演算部1
16のBPSWレジスタ168に待避する。その後、制
御部112のPSW部221は、PSWラッチ222を
ハードウェア的にゼロクリアする。そして、情報処理装
置は、仕様としてあらかじめ決まっている割り込み処理
で最初に実行する命令のアドレスをハードウェア的に生
成し、第1演算部116のABラッチ152へ転送す
る。第1演算部116のALU153は、ABラッチ1
52に保持されている値と0とを加算し、加算結果をJ
Aバス323に出力する。PC部118は、JAバス3
23上に出力されたその加算結果をNPC191および
IAレジスタ181に取り込み、ジャンプ処理を行う。
割り込み処理ではPSWラッチ222のRPビット43
がゼロクリアされるので割り込み前に行われていたリピ
ート処理は中断される。第1演算部116のBPSWレ
ジスタ168は、割り込み前にリピート処理中であった
旨を示す情報を保持している。
【0122】この実施の形態1による情報処理装置は、
図1に示す制御レジスタと汎用レジスタと間の転送を行
う命令を備えており、割り込み処理を行う前に必要に応
じて割り込み処理ハンドラ内で、リピート関連の制御レ
ジスタに保持されている値をコンテキスト情報としてメ
モリに待避し、割り込み処理終了後に制御レジスタの内
容を割り込み処理以前の状態に復帰させることができ
る。制御レジスタに保持されている値を汎用レジスタへ
転送する場合には、制御レジスタからS3バス303上
に値が出力され、ABラッチ152、ALU153(ゼ
ロとの加算を行う)、セレクタ155およびD1バス3
11を介してレジスタファイル115へ転送される。汎
用レジスタから制御レジスタへ転送する場合には、レジ
スタファイル115からS3バス303に復帰される値
が出力され、ABラッチ152、ALU153(ゼロと
の加算を行う)、セレクタ155およびD1バス311
を介して、各制御レジスタに書き込まれる。REP命令
実行時と同様、リピート関連の制御レジスタ更新時に
は、リピート制御に必要な関連リソースの更新も行われ
る。例えば、RPT_Cレジスタ188への書き込み時
には、TRPT_Cレジスタ175へも同時に書き込ま
れる。また、RPT_Sレジスタ184やRPT_Eレ
ジスタ186の更新時には、ラッチ185,174に保
持されている値も連動して更新される。
【0123】割り込み処理から復帰する場合は、情報処
理装置は割り込み処理前に待避したコンテキスト情報を
汎用レジスタ、制御レジスタ等へ復帰させた後、割り込
み処理からのリターン(RTE)命令を実行する。以下
では、割り込み受け付け前にリピート処理中であった場
合を考える。RTE命令実行前に、情報処理装置は、第
1演算部116のBPSWレジスタ168、PC部11
8のBPC196、およびリピート関連の制御レジスタ
等に保持されている値を割り込み処理起動直後の状態に
復帰させる。この結果、BPSWレジスタ168のPS
WのRPビット43に対応するビットは“1”になる。
この状態で、情報処理装置はRTE命令を実行する。R
TE命令の実行では以下の処理が行われる。PC部11
8はBPC196に保持されている値をS3バス303
に出力し、第1演算部116のABラッチ152はS3
バス303上に出力されたその値を取り込む。ALU1
53は、ABラッチ152に保持されている値とゼロと
を加算し、加算結果をJAバス323に出力する。PC
部118はJAバス323上に出力されたその加算結果
をNPC191およびIAレジスタ181に取り込む。
その結果、情報処理装置はBPC196に保持されてい
たアドレス値へのジャンプ処理を行う。また、第1演算
部116は、BPSWレジスタ168に保持されている
値をTPSWラッチ167を介して制御部112へ転送
し、PSWラッチ222はその値を取り込む。この結
果、PSWラッチ222のRPビット43に1がセット
され、リピート処理が再開される。
【0124】このように、この実施の形態1による情報
処理装置は、リピート中に割り込み、トラップまたは例
外処理が起動されても、復帰後正しく中断されていたリ
ピート処理を再開できる。
【0125】上述のREP命令は、リピート関連のパラ
メータ設定を1命令で実行できるので非常に使いやすい
が、その反面、実行ステージで各種リソースの設定を行
うので、REP命令実行時にすでにフェッチを終了して
しまう命令に関しては、命令フェッチ段階でのシーケン
ス制御ができないという欠点がある。従って、REP命
令使用時のリピートブロックの最小サイズや繰り返し回
数の最小値はパイプラインの構成や命令バッファ(命令
キュー)のサイズなどに依存しており、リピートブロッ
クの最小サイズや繰り返し回数の最小値には制限があ
る。例えば、上述のREP命令では、上記したように、
リピートブロックが2つ以下の32ビット命令から成る
場合、または、レジスタ番号Rsrc2により指定され
る値が“0”でレジスタ番号Rsrc1により指定され
る値が“2”以下の場合には、動作保証しないものとし
ている。
【0126】次に上述のものとは異なるリピート処理の
起動方法について簡単に説明する。この実施の形態1に
よる情報処理装置は、図2に示すPSWのRPビット4
3をセットするSETRP命令を備えている。図19は
リピートブロック内の1命令しか実行しない場合の処理
例を示すタイミングチャート図である。図19は、I5
の命令がSETRP命令であり、I6〜I9の命令がリ
ピートブロックであり、I6の命令がリピート処理最終
命令である場合を示している。SETRP命令実行前
に、情報処理装置は、図1に示すRPT_S,RPT_
E,RPT_C,RPT_Bをそれぞれ対応する制御レ
ジスタ等へ初期設定する転送命令を実行する。なお、R
PT_Cはゼロに設定される。すなわち、情報処理装置
は、PC部118のRPT_Cレジスタ188およびT
RPT_Cレジスタ175にゼロを書き込む。
【0127】命令デコード部119は、IFステージ4
01で命令がフェッチされた段階でその命令のプリデコ
ードを行い、その命令がSETRP命令であるか否かを
判別する。そして、SETRP命令であるならばテンポ
ラリリピート(TRP)ビットを“1”にセットする。
TRPビットは、制御部112内のラッチ(図示せず)
に保持されており、Eステージ403に先行してIFス
テージ401で管理される情報であり、PSWのRPビ
ット43に対応している。このTRPビットによって、
IFステージによりリピート処理が行われるかどうかが
制御される。
【0128】TRPビットが“1”の状態になると、上
記のREP命令と同様のハードウェアリピート(シーケ
ンス)制御が行われる。TRPT_Cレジスタ175に
保持されている値がゼロであり、RPT_Bレジスタ1
71に保持されている値とIAレジスタ181に保持さ
れている値とが一致した場合には、制御部112はTR
Pビットをゼロクリアしリピート処理を終了する。
【0129】Eステージ403で管理しているPSWラ
ッチ222のRPビット43は、SETRP命令がEス
テージ403で処理されるクロックサイクルT5でセッ
トされる。Eステージ403でジャンプが起こった場合
には、実行ステージで管理しているPSWラッチ222
のRPビット43の値がTRPビットに書き込まれ、E
ステージ403での更新に先立ちIFステージ401で
更新され実行されなかった情報が取り消される。
【0130】SETRP命令を簡単に判別できるように
命令のエンコードをしておけば、プリデコードに要する
時間を短縮できる。また、パイプライン処理上の制約に
応じて、リピート関連の制御レジスタの設定をSETR
P命令の何命令前に設定完了しておけば良いかを規定す
れば良い。この実施の形態1では、SETRP命令の2
命令前までにリピート関連の制御レジスタの設定を完了
しておく必要がある。また、SETRP命令はREP命
令と異なりフラグを設定するだけなので、必ずしもリピ
ートブロックの直前に実行する必要はない。パイプライ
ン処理としてタイミングが間に合うように、リピートブ
ロックの2命令以上前に実行するように制約を設けても
良い。ただし、設定をしてから条件判定によりリピート
ブロックの実行を行わない場合については、SETRP
命令の使用を禁止する等別途制約を設ける必要がある。
【0131】REP命令と異なり、SETRP命令で
は、図1に示すRPT_C,RPT_S,RPT_Eお
よびRPT_Bの4つの値を先行する命令で対応する制
御レジスタに初期設定しておく必要がある。ただし、同
一ルーチンを繰り返し呼び出す場合には、RPT_S、
RPT_EおよびRPT_Bは毎回設定する必要はな
い。
【0132】上記したように、この実施の形態1による
情報処理装置は、実行される命令で特定されるオペレー
ションとは独立して、リピートブロック内でリピート処
理の終了を検出し、検出するとリピートブロックの途中
でリピート処理を終了し、リピートブロックの次の命令
に命令処理シーケンスを切り替える、ハードウェアによ
り実現した機能を備えている。従って、リピートブロッ
クを繰り返し処理する繰り返し回数がダイナミックに変
わり且つリピートブロックの途中でリピート処理を終了
する場合にも、同一のプログラムで高速にリピートブロ
ックを所定の繰り返し回数処理できる。例えば、上述の
REP命令を用いた積和演算の例で4回以上の積和を行
う場合でも、リピートブロックの処理を途中で終了する
ハードウェアにより実現された機能を有していないなら
ば、ロードの投機実行を許しても、繰り返し回数が4
n,4n+1,4n+2,4n+3(nは1以上の整
数)の少なくとも4通りのいずれかであるかを条件判定
する必要がある。これら4つの場合についてそれぞれプ
ログラムが必要になる。また、3回以下の積和にも対応
するために、それに対応した条件判定およびプログラム
が必要になる。積和演算等の処理に関して演算ライブラ
リを準備する場合においても、繰り返し回数をパラメー
タとすると同様なことがいえる。
【0133】また、繰り返し回数が静的に設定される場
合にも、ロード処理の投機実行を行ってもよいならば、
例えば、上記式(1)に基づき4回以上積和演算する図
16に示すようなプログラムを作成することが可能であ
り、繰り返し回数がダイナミックに指定される場合と同
様の効果を得ることができる。すなわち、コード効率を
上げると共にプログラムを簡素化してプログラムの開発
効率を上げることが可能である。
【0134】また、この実施の形態1による情報処理装
置は、リピートブロックが複数命令で構成される場合に
も、オーバーヘッドなくリピートブロックの途中でリピ
ート処理を終了できるので、上記の繰り返し回数の判定
が不要となり、且つ、1つのプログラムで任意回数の繰
り返しに対処できる。従って、条件判定、分岐のための
前処理/後処理によるオーバーヘッドがなくなり性能の
向上をはかることができるとともに、プログラムサイズ
を大幅に削減できる。特に、ディジタル信号処理におい
ては、繰り返し処理の占める割合が非常に多く、繰り返
し処理のコードサイズの削減は有効である。プログラム
をROM化する場合にはプログラムのコード効率がチッ
プサイズに直接影響を及ぼすので、この実施の形態1に
よる情報処理装置はコスト削減にも大きく寄与する。ま
た、プログラムを簡素化することができるので、プログ
ラム開発の生産性を向上できるとともにバグの混入を低
減できるという効果もある。
【0135】この実施の形態1による情報処理装置は、
基本的に、リピートブロックを所定の繰り返し回数処理
するハードウェアにより実現されたリピート機能と、リ
ピートブロックの途中のリピート処理終了命令でリピー
ト処理を終了するとともに、リピートブロックの次の命
令に命令処理シーケンスを切り替える機能とを備えてい
ればよく、上記した構成に限定されるものではない。ど
のようなハードウェア構成を有していても同様の効果を
奏することができる。
【0136】また、この実施の形態1は、上記のものと
は異なるパイプライン処理構成のものに適用しても良い
し、VLIWプロセッサではなく通常のプロセッサやD
SPに適用しても良い。
【0137】さらに、REP命令やSETRP命令のよ
うな、該当する命令の次の命令からリピート処理を開始
する命令を実行せずに、指定されたアドレスからリピー
ト処理を開始するように事前に設定しておくようにして
も良い。
【0138】上述のREP命令では、リピートブロック
の命令数が2のn乗(nは整数)の場合に、レジスタ番
号Rsrc1,Rsrc2に設定する設定値の計算が単
純になるように、レジスタ番号Rsrc2に“リピート
ブロックの繰り返し回数−1”を、レジスタ番号Rsr
c1に“リピート処理の最終サイクルで実行するリピー
トブロック内の命令数−1”を設定しているが、これに
限定されるものではない。例えば、レジスタ番号Rsr
c2に“リピートブロックの繰り返し回数”を設定して
も良いし、レジスタ番号Rsrc1に“リピート処理の
最終サイクルで実行するリピートブロック内の命令数”
を設定してもよい。すなわち、ハードウェア的に計算で
き対応関係が明確であれば、いかなるリピート命令も実
現可能である。
【0139】リピート処理用に、フェッチした命令のア
ドレスと比較するための2つの比較器187,172が
独立して設けられているが、1つの比較器を設け、TR
PT_Cレジスタ175に保持されている値が非ゼロで
ある場合には、比較器にフェッチした命令のアドレスを
RPT_Eレジスタ186に保持されている値とを比較
させ、TRPT_Cレジスタ175に保持されている値
がゼロの場合には、比較器にフェッチした命令のアドレ
スをRPT_Bレジスタ171に保持されている値とを
比較させるように切り替えるセレクタを設けてもよい。
【0140】リピートブロックの開始の直前でなく、2
命令以上前にリピート命令を実行するディレイドリピー
トを行うようにすれば(実施の形態6にて詳細に述べ
る)、リピートブロックのサイズの制約やリピート最終
命令アドレスの制約は限定される。この場合、リピート
ブロックに関する各種の設定値、その設定方法、その計
算方法等を変更すればよい。例えば、リピート命令をリ
ピートブロックの2命令前に実行するのであれば、レジ
スタ番号Rsrc1に“リピート処理の最終サイクルで
実行するリピートブロック内の命令数”を設定して同様
の計算を行えば、RPT_Bは計算できる。RPT_E
は、同様に、リピート命令のアドレスからの変位値を指
定することにより計算できる。また、RPT_Sは、ラ
ッチ192の出力ではなくインクリメンタ193の出力
を用いれば、ハードウェア量の増加なしに計算できる。
このようなディレイドリピート制御を行えば、リピート
ブロックの命令のフェッチ開始とリピート命令実行によ
るリピート関連の制御レジスタ等の設定とのパイプライ
ン処理による時間差が短くなる。従って、2命令前にリ
ピート命令を実行する場合、この実施の形態1による情
報処理装置では動作保証できなかった、リピートブロッ
クが2つの32ビット命令から成る場合や、レジスタ番
号Rsrc2により指定される値が“0”でレジスタ番
号Rsrc1により指定される値が“2”の場合にも、
正しく動作できるようになる。
【0141】また、この実施の形態1による情報処理装
置は、複数レベルのリピート機能を備えていてもよい。
【0142】さらに、ダイナミックに変化し得る繰り返
し回数が設定できるようにレジスタで繰り返し回数を指
定するリピート命令の代わりに、レジスタ番号Rsrc
1,Rsrc2で設定する値に相当する値を即値データ
で設定するリピート命令を実装した場合、Rsrc1,
Rsrc2によるレジスタ設定が不要となり、さらにレ
ジスタ設定等のオーバヘッドが削減でき、リピート命令
の前処理を省略することができリピート処理を高速化で
きる。
【0143】実施の形態2.この発明の実施の形態2に
よる情報処理装置は、上記実施の形態1と異なり、リピ
ート処理最終命令の処理後、リピートブロックの次の命
令に命令処理シーケンスを切り替えずに、リピートブロ
ックの最終命令まで命令の実行を抑止するものである。
この実施の形態2による情報処理装置は、基本的には、
上記実施の形態1による情報処理装置とほぼ同一の構成
を有しており、以下では、その説明を省略し異なる部分
についてのみ説明する。
【0144】図20はこの発明の実施の形態2による情
報処理装置が用いるPSWの構成を示す図である。この
実施の形態2によるPSWはREビット601を備えて
いる点で上記実施の形態1によるものと相違する。RE
ビット601は、“1”の場合、リピート処理最終命令
の処理後であってリピートブロック最終命令までの命令
が処理中であることを示している。すなわち、“1”に
設定されたREビット601は、リピート処理が完了し
ており、命令の実行を抑止する命令の処理中であること
を示している。実行開始時にREビット601が“1”
である場合には、Eステージ403では、命令の実行は
行われない(ノーオペレーション)。
【0145】図21はこの実施の形態2による情報処理
装置のPC部118の構成を示すブロック図である。こ
の実施の形態2による情報処理装置のPC部118は、
インクリメンタ173、ラッチ174を有していない点
が、上記実施の形態1によるPC部118と異なる。ま
た、この実施の形態2によるPC部118は、ラッチ1
74からNPC611へ至る転送経路も有していない。
【0146】次に動作について説明する。以下では図1
6に示したプログラム例を実行する場合の動作について
説明する。図22は図16に示したプログラム実行時の
パイプライン処理を示すタイミングチャート図であり、
上記実施の形態1における図18に相当する。なお、ク
ロックサイクルT1〜T9に相当する部分は図17に示
したものと同一である。この実施の形態2が上記実施の
形態1と大きく異なる点は、リピート処理最終命令の処
理後、IFステージ401でリピートブロックの次の命
令に命令処理シーケンスを切り替えずにリピートブロッ
クの最終命令まで命令の実行を抑止することである。
【0147】TREビットは、制御部112内のレジス
タ等(図示せず)に保持されており、PSWのREビッ
ト601に相当し、IFステージ401で更新される。
制御部112に設けられたPSW部221のPSWラッ
チ222のRPビット43が“1”(リピート処理中)
であり且つPC部118のTRPT_Cレジスタ175
に保持されている値が非ゼロである場合の処理は上記実
施の形態1と同じである。リピート処理中にTRPT_
Cレジスタ175に保持されている値がゼロである場
合、命令フェッチ部102がI7の命令をフェッチする
と、PC部118の比較器172は比較結果が一致した
旨を示す一致信号を制御部112へ送出する。図22の
クロックサイクルT12はこの状態を示している。制御
部112は、比較器172から一致信号を受信するとT
REビットを“1”にセットする。その後、命令フェッ
チ部102がI9の命令をフェッチする場合、比較器1
87は比較結果が一致した旨を示す一致信号を制御部1
12へ送出する。図22のクロックサイクルT14はこ
の状態を示している。制御部112は、比較器187か
ら一致信号を受信するとTREビットをゼロクリアす
る。リピートブロックの最終命令が、リピート処理最終
命令である場合すなわちRPT_Eレジスタ186に保
持されている値とRPT_Bレジスタ171に保持され
ている値とが同一の場合、2つの比較器187,172
は比較結果が一致した旨を示す一致信号を同時に制御部
112へ送出する。この場合、制御部112はTREビ
ットを“1”にセットしない。TREビットの値は、命
令実行抑止情報として対応する命令コードに従ってパイ
プライン転送される。リピート処理最終命令の次の命令
からリピートブロックの最終命令までの処理の間、TR
Eビットの値は“1”のまま保持される。
【0148】Dステージ402では、命令実行抑止情報
が1の場合、情報処理装置は命令コードに依存せずノー
オペレーションの実行制御情報を生成し、Eステージ4
03に発行する。
【0149】Eステージ403では、情報処理装置はリ
ピート処理最終命令の次の命令からリピートブロックの
最終命令まで命令の実行は行わない。リピート処理最終
命令情報およびリピートブロック最終命令情報は、上記
実施の形態1と同様、パイプライン転送される。リピー
ト処理最終命令実行時、リピート処理最終命令がリピー
トブロック最終命令でないならば、制御部112はPS
Wラッチ222に保持されているPSWのREビット6
01を“1”に設定する。REビット601が“1”の
状態でリピートブロック最終命令が実行されると、制御
部112はPSWのREビット601をゼロクリアす
る。リピート処理最終命令がリピートブロック最終命令
である場合には、制御部112はPSWのREビット6
01をセットすることなくリピート処理を終了する。ま
た、PC部118は、上記実施の形態1と同様に、RP
T_Cレジスタ188の内容を更新する。
【0150】リピート処理最終命令処理開始時、ならび
に、PSWのREビット601が“1”の状態でリピー
トブロック最終命令の処理開始時、PC部118のNP
C611の内容は、シーケンシャルに命令を実行する場
合と同様に、インクリメンタ193でインクリメントさ
れたアドレスに更新される。REビット601が“1”
の状態でリピートブロック最終命令の処理開始時には、
上記実施の形態1と同様、PC部118はラッチ185
に保持されている値をNPC611に書き込む。
【0151】Eステージジャンプ時には、TREビット
の値は、Eステージで管理しているPSWのREビット
601の情報に基づき更新され、TREビットの初期設
定が行われる。
【0152】上記したように、この実施の形態2による
情報処理装置は、Dステージ402で実行抑止対象の命
令のノーオペレーション化を行うが、実行の抑止は、D
ステージ402に限定されずEステージ403以前のど
のパイプラインステージで行っても良い。ユーザから見
えるハードウェアリソース(汎用レジスタ、アキュムレ
ータ、制御レジスタやメモリの値)の更新さえ行われな
ければ、どのパイプラインステージで実行抑止対象の命
令のノーオペレーション化が行われても良い。また、D
ステージ402で実行抑止対象の命令のノーオペレーシ
ョン化を行う代わりに、命令のフェッチ自体を抑止して
も良いし、命令フェッチを行いフェッチした命令を特定
の命令コードに置き換えてもよい。命令フェッチアドレ
スを含めPC値が正しく管理されるように制御されさえ
すればよい。例えば、フェッチした命令をNOP命令の
並列実行コードに置き換えれば、特別なノーオペレーシ
ョン化の処理は必要なくなる。
【0153】また、Eステージ403において実行抑止
対象の命令のノーオペレーション化を行っても良い。E
ステージ403で実行抑止判定を行う場合には、命令実
行抑止情報のパイプライン転送は必須ではない。ただ
し、シーケンシャルに実行する2命令等の命令デコード
に複数クロックサイクルを要する場合もあるので、無駄
なクロックサイクルが増える可能性がある。
【0154】REビット601は、実行抑止中に外部割
り込み等を受け付ける場合にも正しく処理が復帰できる
ように、PSWに割り付けられている。従って、リピー
ト処理最終命令実行後からリピートブロック最終命令の
実行後までの間割り込みを受け付けないような制御を行
えば、REビット601は不要である。
【0155】以上のように、この実施の形態2による情
報処理装置は、上記実施の形態1と異なり、リピート処
理最終命令の処理後、リピートブロックの次の命令に命
令処理シーケンスを切り替えずに、リピートブロックの
最終命令まで命令の実行を抑止するものであるが、上記
実施の形態1によるものと同様な効果を奏する。すなわ
ち、繰り返し回数がダイナミックに変化する場合の繰り
返し処理において、条件判定、分岐のための前処理/後
処理によるオーバーヘッドをなくし性能の向上をはかる
ことができるとともに、プログラムサイズを大幅に削減
できる。従って、プログラムをROM化する場合のコス
トも削減できるうえに、プログラム開発の生産性を向上
することができる。
【0156】さらに、この実施の形態2による情報処理
装置のPC部118は、図10に示すインクリメンタ1
73やラッチ174を備えていないので、上記実施の形
態1に比べさらに少ないコストで前述の効果を得ること
ができる。ただし、この実施の形態2による情報処理装
置は、実行抑止対象の命令に関してもパイプライン処理
を行うので、上記実施の形態1の場合に比べて多少無駄
なクロックサイクルが生じる。
【0157】実施の形態3.この発明の実施の形態3に
よる情報処理装置は、上記実施の形態1と異なり、リピ
ート処理最終命令の処理後、IFステージ401ではな
くEステージ403でリピートブロックの次の命令に命
令処理シーケンスを切り替えるものである。この実施の
形態3による情報処理装置は、基本的には、上記実施の
形態1による情報処理装置とほぼ同一の構成を有してお
り、以下では、その説明を省略し異なる部分についての
み説明する。
【0158】なお、この実施の形態3による情報処理装
置のPC処理部118は図10に示すものと同一の構成
を有する。
【0159】次に動作について説明する。以下では図1
6に示したプログラム例を実行する場合の動作について
説明する。図23は図16に示したプログラム実行時の
パイプライン処理を示すタイミングチャート図であり、
上記実施の形態1における図18に相当する。なお、ク
ロックサイクルT1〜T9に相当する部分は図17に示
したものと同一である。この実施の形態3が上記実施の
形態1と異なる点は、リピート処理最終命令の処理後の
リピートブロックの次の命令への命令処理シーケンスの
切り替えを、IFステージ401ではなくEステージ4
03で行うことにある。
【0160】REP命令の処理およびリピート中の処理
は、IFステージ401におけるI7の命令のフェッチ
後I10の命令のフェッチを開始せず、シーケンシャル
な命令フェッチを継続することを除いて、上記実施の形
態1とまったく同様に行われる。また、この実施の形態
3による情報処理装置は、上記実施の形態1と同じよう
に、NPC191の更新を制御する。さらに、この実施
の形態3による情報処理装置は、I7の命令実行開始時
に上記実施の形態1と同一の制御を行う。情報処理装置
は、また、サブルーチンコール時の戻り先アドレスとし
て、NPC191に保持されている値を参照する。従っ
て、実施の形態3による情報処理装置は、上記実施の形
態1による情報処理装置と同様に、I7の命令がサブル
ーチンコールを行う命令を含む場合でも、I10の命令
のアドレスを戻り先アドレスとして参照することができ
る。
【0161】この実施の形態3の情報処理装置は、I7
の命令のEステージ403での実行時(図23のクロッ
クサイクルT14)に、リピートブロックの次の命令で
あるI10の命令へのジャンプ処理を行う。実行される
命令で特定されるオペレーションとは独立して、制御部
112は、リピート処理最終命令情報に基づき、ハード
ウェア的にジャンプ処理のための制御信号を生成する。
クロックサイクルT14において、PC部118は、ラ
ッチ174に保持されているI10の命令のアドレスを
JAバス323を介してIAレジスタ181およびNP
C191へ転送し、ジャンプ処理を行う。リピート処理
最終命令の実行に複数クロックサイクルを要する場合に
は、情報処理装置はその最終クロックサイクルでジャン
プ処理を行う。
【0162】ただし、リピート処理最終命令がリピート
ブロックの最終命令である場合には、この実施の形態3
による情報処理装置は単にリピートブロックの次の命令
を実行すれば良い。無駄なオーバーヘッド発生を抑止す
るため、情報処理装置はこの場合にはEステージ403
でのジャンプ処理を行わない。なお、この実施の形態3
による情報処理装置は、上記実施の形態1とは異なり、
TRPT_Cレジスタ175の内容がゼロであっても命
令フェッチアドレスがRPT_Eレジスタ186の内容
と一致した場合、リピートブロック最終命令情報として
一致した情報を出力するように制御する。情報処理装置
は、実行する命令がリピート処理最終命令であることを
示すリピート処理最終命令情報と、実行する命令がリピ
ートブロック最終命令であることを示すリピートブロッ
ク最終命令情報とに基づき、リピート処理最終命令がリ
ピートブロックの最終命令であるか否かを判定し、そう
である場合には、単にリピートブロックの次の命令を実
行する。
【0163】リピート処理最終命令がEステージ403
でジャンプ処理を行う命令である場合には、情報処理装
置は、命令実行に伴うジャンプ処理を優先し、リピート
処理に関するジャンプ処理は行わない。
【0164】以上のように、この発明の実施の形態3に
よる情報処理装置は、IFステージ401ではなくEス
テージ403でリピート処理最終命令実行後の命令処理
シーケンスの切り替え(リピートブロックの次の命令へ
のジャンプ)を行うが、上記実施の形態1と同じ効果を
奏することができる。すなわち、繰り返し回数がダイナ
ミックに変化するとともにリピートブロックの途中でリ
ピート処理を終了する場合において、条件判定、分岐の
ための前処理/後処理によるオーバーヘッドをなくし性
能の向上をはかることができるとともに、プログラムサ
イズを大幅に削減できる。従って、プログラムをROM
化する場合のコストも削減できるうえに、プログラム開
発の生産性を向上することができる。
【0165】なお、リピート処理最終命令としてサブル
ーチンコール命令を用いることを禁止すれば、ラッチ1
74からNPC191へ至る転送経路は不要である。
【0166】また、RPT_Eレジスタ186に保持さ
れている値を1インクリメントするために専用のインク
リメンタ173をPC部118に設けているが、インク
リメンタ173の代わりに既存のリソースを使用してハ
ードウェアリソースを削減することも可能である。この
場合、性能およびハードウェアコストを考慮して、ハー
ドウェア構成や制御方法を決定することが好ましい。た
だし、そのハードウェアリソースを実行時に使用する命
令は、リピート処理最終命令として実行を禁止する必要
がある。
【0167】なお、図23に示す例では、IFステージ
401においてI8以降の命令のフェッチは継続して行
われているが、これらは無駄なフェッチであるので、I
8以降の命令フェッチを抑止するように制御しても良
い。
【0168】実施の形態4.この発明の実施の形態4に
よる情報処理装置は、上記実施の形態3と同様に、リピ
ート処理最終命令の処理後、リピートブロックの次の命
令に命令処理シーケンスをIFステージ401ではなく
Eステージ403で切り替えるが、リピートに関するジ
ャンプ処理をリピート処理最終命令の実行時に行うので
はなく、実行後の次のクロックサイクルで行うものであ
る。この実施の形態4による情報処理装置は、基本的に
は、上記実施の形態1による情報処理装置と同一の構成
を有しており、以下では、その説明を省略し異なる部分
についてのみ説明する。
【0169】なお、この実施の形態4による情報処理装
置のPC処理部118は図21に示すものと同一の構成
を有する。
【0170】次に動作について説明する。以下では図1
6に示したプログラム例を実行する場合の動作について
説明する。図24は図16に示したプログラム実行時の
パイプライン処理を示すタイミングチャート図であり、
上記実施の形態1における図18に相当する。なお、ク
ロックサイクルT1〜T9に相当する部分は図17に示
したものと同一である。上記したように、この実施の形
態4による情報処理装置は、上記実施の形態3と同様
に、リピート処理最終命令処理後のリピートブロックの
次の命令へのシーケンス切り替えをEステージ403で
行う。上記実施の形態3と異なる点は、リピートに関す
るジャンプ処理をリピート処理最終命令の実行時に行う
のではなく、実行後の次のクロックサイクルで行うこと
にある。
【0171】図24のクロックサイクルT14でI7の
リピート処理最終命令が実行される。図24において、
“(jmp)”はリピートブロックの次の命令へのジャ
ンプ処理を示している。クロックサイクルT14におい
て、制御部112は、実行される命令で特定されるオペ
レーションとは独立して、リピート処理最終命令情報に
基づき、ハードウェア的にリピートブロックの次の命令
へのジャンプ処理を行うための制御信号を生成し、クロ
ックサイクルT15において、情報処理装置はジャンプ
処理を行う。クロックサイクルT15において、PC部
118はRPT_Eレジスタ186に保持されている値
をS3バス303へ出力し、第1演算部116のAAラ
ッチ151はS3バス303上に出力されたその値を取
り込む。また、第1演算部116のABラッチ152に
は1がセットされる。ALU153はAAラッチ151
およびABラッチ152に保持されている値からリピー
トブロックの次の命令のアドレスを生成し、このアドレ
スをJAバス323へ出力し、PC部118はJAバス
323上に出力されたそのアドレスをIAレジスタ18
1およびNPC611に取り込む。この結果、情報処理
装置はジャンプ処理を行う。
【0172】ただし、リピート処理最終命令がリピート
ブロックの最終命令である場合には、この実施の形態4
による情報処理装置は単にリピートブロックの次の命令
を実行するだけで良い。無駄なオーバーヘッド発生を抑
止するため、情報処理装置は、この場合、Eステージ4
03でのジャンプ処理を行わない。なお、この実施の形
態4による情報処理装置は、上記実施の形態3と同様
に、TRPT_Cレジスタ175の内容がゼロであって
も命令フェッチアドレスがRPT_Eレジスタ186の
内容と一致した場合、リピートブロック最終命令情報と
して一致した情報を出力するように制御する。情報処理
装置は、実行する命令がリピート処理最終命令であるこ
とを示すリピート処理最終命令情報と、実行する命令が
リピートブロック最終命令であることを示すリピートブ
ロック最終命令情報とに基づき、リピート処理最終命令
がリピートブロックの最終命令であるか否かを判定する
ことができる。
【0173】リピート処理最終命令がEステージ403
でジャンプ処理を行う命令である場合、この実施の形態
4による情報処理装置は、命令実行に伴うジャンプ処理
を優先しリピート処理に関するジャンプ処理を行わな
い。
【0174】上記したように、この実施の形態4による
情報処理装置のPC部118は図21に示す構成を有し
ており、図10に示すインクリメンタ173を備えてい
ない。従って、この実施の形態4による情報処理装置
は、リピート処理最終命令としてサブルーチンコール命
令を実行することはできない。図24において、I7の
リピート処理最終命令実行時のNPC値は、I10では
なくI8の命令のアドレスとなっている。それ故、リピ
ート処理最終命令としてサブルーチンコール命令を実行
できるようにする場合には、PC部118にインクリメ
ンタを追加すればよい。
【0175】以上のように、この発明の実施の形態4に
よる情報処理装置は、IFステージ401ではなくEス
テージ403でリピート処理最終命令実行後の命令処理
シーケンスの切り替え(リピートブロックの次の命令へ
のジャンプ)を行い、さらに、リピートに関するジャン
プ処理をリピート処理最終命令の実行時に行うのではな
く、実行後の次のクロックサイクルで行うものである
が、上記実施の形態1と同じ効果を奏することができ
る。すなわち、繰り返し回数がダイナミックに変化する
とともにリピートブロックの途中でリピート処理を終了
する場合において、条件判定、分岐のための前処理/後
処理によるオーバーヘッドをなくし性能の向上をはかる
ことができるとともに、プログラムサイズを大幅に削減
できる。従って、プログラムをROM化する場合のコス
トも削減できるうえに、プログラム開発の生産性を向上
することができる。
【0176】実施の形態5.この発明の実施の形態5に
よる情報処理装置は、上記実施の形態1〜4に示したよ
うなリピートブロックの最終処理サイクルでのリピート
処理終了判定をアドレスに基づいて行うのではなく、リ
ピートブロックの最終処理サイクルでの処理終了判定を
リピートブロックで実行される命令数(以下実行命令数
と称する)に基づいて行うものである。この実施の形態
5による情報処理装置は、基本的には、上記実施の形態
1による情報処理装置と同一の構成を有しており、以下
では、その説明を省略し異なる部分についてのみ説明す
る。
【0177】図25はこの実施の形態5による情報処理
装置のリピート関連の制御レジスタを示す図である。図
25と図1との比較からわかるように、この実施の形態
5による制御レジスタCR6 701はRPT_Bの代
わりに“リピートブロックの最終リピートサイクルで実
行する命令数−1”に等しい初期値に設定されるRPT
_BCを保持している。すなわち、この実施の形態5に
よる情報処理装置は、アドレスではなく実行命令数に基
づいてリピート処理の終了を判定する。
【0178】図26はこの実施の形態5による情報処理
装置のPC部118の構成を示すブロック図である。図
に示すように、PC部118は、上記実施の形態1によ
るものとは異なり、図10に示すRPT_Bレジスタ1
71関連のハードウェアを備えていない。図26におい
て、711はRPT_BCを保持するRPT_BCレジ
スタであり、713はラッチ712を介して入力された
RPT_BCレジスタ711に保持されている値を1デ
クリメントするデクリメンタ(DEC)であり、714
はIFステージ401でRPT_BCを先行して更新す
るためにRPT_BCを保持するTRPT_BCレジス
タであり、716はラッチ715を介して入力されたT
RPT_BCレジスタ714に保持されている値を1デ
クリメントするデクリメンタ(DEC)である。PC部
118は、1命令毎にRPT_BCを更新するため、I
Fステージ401でのRPT_BC更新用とEステージ
403でのRPT_BC更新用に独立した2つのデクリ
メンタ713,716を備えている。また、717はT
RPT_BCレジスタ714に保持されている値がゼロ
になったことを検出するゼロ検出回路(ZERO)であ
る。PC部118は、また、ジャンプが起こった際にパ
イプラインの前段での前処理をキャンセルして初期化す
るために、ラッチ718を介してRPT_BCレジスタ
711からTRPT_BCレジスタ714へ至る転送経
路を備えている。なお、カウント手段は、TRPT_B
Cレジスタ714、ラッチ715およびデクリメンタ7
16からなる。また、第1カウント手段は、TRPT_
Cレジスタ175、ラッチ176およびデクリメンタ1
77からなり、第2カウント手段は、TRPT_BCレ
ジスタ714、ラッチ715およびデクリメンタ716
からなる。
【0179】また、PC部118は、次に実行する命令
のPC値を保持するラッチ192からJAバス323へ
至る出力経路と、JAバス323からRPT_Sレジス
タ184へ至る転送経路とを備えている。
【0180】次に動作について説明する。図27および
図28は、図16に示したプログラム実行時のパイプラ
イン処理を示すタイミングチャート図であり、上記実施
の形態1の図17および図18に相当する。上記したよ
うに、この実施の形態5による情報処理装置は、上記実
施の形態1〜4と異なり、実行命令数に基づきリピート
ブロックの最終処理サイクルでのリピート処理終了判定
を行う。
【0181】この実施の形態5による情報処理装置は、
上記実施の形態1と同様に、図16に示すI5のREP
命令を2クロックサイクルかけて実行する。情報処理装
置は、第1クロックサイクルにおいて、図25に示すR
PT_EおよびRPT_Cを設定し、第2クロックサイ
クルにおいて、図25に示すRPT_BC、RPT_S
および図2に示すPSWのRPビット43を設定する
(物理的なレジスタでなく論理的な制御レジスタを示し
ている)。
【0182】情報処理装置は、上記実施の形態1と同様
に、第1クロックサイクルの処理を行う。第2クロック
サイクルでは、I5のREP命令のレジスタ番号Rsr
c1で指定される汎用レジスタR11 12に保持され
ている値が、S2バス302、ラッチ169、セレクタ
155、D1バス311を介して、RPT_BCレジス
タ711およびTRPT_BCレジスタ714へ転送さ
れ、さらにその後、RPT_BCレジスタ711の値が
ラッチ718へ転送される。上記処理と並行して、PC
部118は、リピートブロックの先頭の命令のアドレス
となるREP命令の次の命令のアドレスを、NPC19
1からラッチ192およびJAバス323を介してRP
T_Sレジスタ184へ転送し、さらにその後、ラッチ
185へ転送する。また、制御部112は、PSWラッ
チ222のRPビット43を“1”に設定する。
【0183】情報処理装置は、TRPT_Cレジスタ1
75に保持されている値がゼロになるまで、上記実施の
形態1とまったく同じ処理を行う。TRPT_Cレジス
タ175に保持されている値がゼロになると、その後、
命令フェッチ部102が1命令フェッチする毎に、デク
リメンタ716はTRPT_BCレジスタ714に保持
されている値を1デクリメントする。そして、TRPT
_BCレジスタ714に保持されている値がゼロになる
と、制御部112は命令処理シーケシスの切り替えを行
う。すなわち、制御部112は、I7の命令フェッチ後
I10の命令のフェッチを行うようにPC部118を制
御する。情報処理装置は、上記実施の形態1とまったく
同じように、命令処理シーケンスの切り替えを行う。T
RPT_Cレジスタ175に保持されている値がゼロの
状態でフェッチされた命令に関しては、リピートブロッ
クの最終処理サイクルであることを示している情報が命
令のパイプライン処理に同期して転送される。Eステー
ジ403では、リピートブロックの最終処理サイクル
中、1命令の実行が完了する毎に、RPT_BCレジス
タ711に保持されている値のデクリメントが行われ
る。ただし、I7のリピート処理最終命令処理時にはそ
のデクリメントは行われない。制御部112は、I7の
リピート処理最終命令処理時にPSWラッチ222のR
Pビット43をゼロクリアする。
【0184】Eステージ403でジャンプが起こった際
には、PC部118は、RPT_BCレジスタ711に
保持されている値をラッチ718を介してTRPT_B
Cレジスタ714へ転送する。
【0185】以上のように、この発明の実施の形態5に
よる情報処理装置は、上記実施の形態1〜4とは異な
り、リピートブロックの最終処理サイクルでのリピート
処理終了判定をアドレスではなく実行命令数に基づいて
行うものであるが、上記実施の形態1と同じ効果を奏す
ることができる。すなわち、繰り返し回数がダイナミッ
クに変化するとともにリピートブロックの途中でリピー
ト処理を終了する場合において、条件判定、分岐のため
の前処理/後処理によるオーバーヘッドをなくし性能の
向上をはかることができるとともに、プログラムサイズ
を大幅に削減できる。従って、プログラムをROM化す
る場合のコストも削減できるうえに、プログラム開発の
生産性を向上することができる。ただし、この実施の形
態5による情報処理装置は、リピートブロックの最終処
理サイクルでのリピート処理終了判定を実行命令数に基
づいて行うので、最後にリピートブロックの先頭の命令
のアドレスに戻ってからリピート処理終了命令を実行す
るまでの間(RPT_Cレジスタ188に保持されてい
る値がゼロの状態)に条件分岐命令がある等、リピート
ブロックの最終処理サイクルで実行される命令数がダイ
ナミックに変化するような場合には適用できない。従っ
て、この実施の形態5による情報処理装置のこのような
状況での使用は禁止する必要がある。
【0186】なお、この実施の形態5による情報処理装
置は、リピートブロックの最終処理サイクルであるか否
かをEステージ403で判定してもよい。この場合、情
報のパイプライン転送は不要である。
【0187】また、この実施の形態5による情報処理装
置は、IFステージ401でのRPT_BC更新用とE
ステージ403でのRPT_BC更新用に独立した2つ
のデクリメンタを備えている代わりに、IFステージ4
01でのRPT_BC更新用に1つのデクリメンタを備
え、TRPT_BCレジスタ714に保持されている値
をRPT_BCレジスタ711へパイプライン転送して
もよい。
【0188】さらに、この実施の形態5による情報処理
装置は、RPT_BCを所定の設定値からデクリメント
する代わりに、ゼロからインクリメントするようにして
所定の設定値との一致判定を行うような制御方法を用い
てもよい。
【0189】実施の形態6.この発明の実施の形態6に
よる情報処理装置は、リピート処理中に実行される命令
数(すなわち実行命令数)のみに基づきリピート処理終
了判定を行うとともに、リピートブロックを処理するた
めに、リピートブロックの開始直前にリピート命令を実
行するのではなく、リピートブロックの2命令以上前に
設けたディレイドリピート命令(遅延リピート)を実行
するものである。この実施の形態6による情報処理装置
は、基本的には、上記実施の形態1による情報処理装置
と同一の構成を有しており、以下では、その説明を省略
し異なる部分についてのみ説明する。
【0190】図29はこの実施の形態6による情報処理
装置のリピート関連の制御レジスタを示す図である。図
29と図1との比較からわかるように、この実施の形態
6による情報処理装置は、制御レジスタCR6(RPT
_B)を有していない。制御レジスタCR7 801
は、“リピート処理中に実行される命令数”に相当する
RPT_Cを保持する。この実行命令数は32ビット命
令を1命令としてカウントされる。RPT_Cは、リピ
ート処理開始時に実行される総実行命令数に設定され、
リピート処理中に1命令実行毎に1デクリメントされ
る。RPT_Cがゼロになるとリピート処理は終了す
る。
【0191】図30はこの実施の形態6による情報処理
装置のPC部118の構成を示すブロック図である。図
に示すように、PC部118は、上記実施の形態1によ
るものとは異なり、図10に示すRPT_Bレジスタ1
71関連のハードウェアを有していない。さらに、RP
T_Cレジスタ関連のハードウェア構成は上記実施の形
態1によるものとは大きく異なる。図30において、8
13はラッチ812を介して入力されたRPT_Cレジ
スタ811に保持されている値を1デクリメントするデ
クリメンタ(DEC)であり、814はIFステージ4
01でカウント値RPT_Cを先行して更新するために
RPT_Cを保持するTRPT_Cレジスタであり、8
16はラッチ815を介して入力されたTRPT_Cレ
ジスタ814に保持されている値を1デクリメントする
デクリメンタ(DEC)である。PC部118は、1命
令毎にRPT_Cを更新するため、IFステージ401
でのRPT_C更新用とEステージ403でのRPT_
C更新用に独立した2つのデクリメンタ813,816
を備えている。また、817はTRPT_Cレジスタ8
14に保持されている値が1になったことを検出する1
検出回路(ONE)である。また、ジャンプが起こった
際にパイプラインの前段での前処理をキャンセルして初
期化するために、PC部118は、ラッチ818を介し
てRPT_Cレジスタ811からTRPT_Cレジスタ
814へ至る転送経路を備えている。また、RPT_C
レジスタ811およびTRPT_Cレジスタ814にD
1バス311からの転送経路が設けられている。
【0192】次に動作について説明する。図31および
図32はこの実施の形態6による情報処理装置のディレ
イドリピート命令の2つの例“DREP Rsrc,d
isp16”および“DREPIimm8,disp1
6”の命令フォーマットをそれぞれ示す図である。これ
らの命令はロングフォーマットの命令である。これらの
図において、831,836はFMビットであり、83
2,837はオペレーションコードであり、833は予
約ビットであり、834(Rsrc)はリピートブロッ
ク中の実行命令数(実行される32ビット命令の数)を
保持するレジスタを指定するレジスタ番号であり、83
8(imm8)はリピートブロック中の実行命令数を示
す8ビットの即値データであり、835,839(di
sp16)はリピートブロック最終命令のアドレスのリ
ピート命令のアドレスからの変位値である。
【0193】ディレイドリピート命令は、リピート処理
の開始に関して1命令遅延した制御を行う命令である。
ディレイドリピート命令の次々命令からリピートブロッ
クが始まる。ディレイドリピート命令の次の命令は、デ
ィレイドリピート命令実行後必ず実行されるものとす
る。すなわち、外部割り込み要求がアサートされてお
り、割り込み受け付け可能状態(図2に示すPSWのI
Eビット42が“1”の場合)であっても、情報処理装
置は、割り込みの受け付けを抑止する。また、ディレイ
ドリピート命令直後の命令は命令処理シーケンスを切り
替えるジャンプ命令等であってはならないし、リピート
ブロックは2命令以上の命令を含んでいなければならな
い。しかしながら、リピートブロック内の実行命令数が
1であっても、情報処理装置は正しくリピート処理を行
える。
【0194】図33は図16に示したものと同じく上記
式(1)に従って積和演算を行うアセンブラで記述され
ており、DREP命令を含むプログラム例を示す図であ
る。汎用レジスタR10 11は積和演算回数Nを保持
しており、汎用レジスタR89および汎用レジスタR9
10は積和対象の2つの配列の先頭A[0],B
[0]のアドレスをそれぞれ保持している。I1a〜I
3の命令が前処理およびリピート命令であり、I4〜I
7の命令がリピートブロックである。リピートブロック
の開始命令であるI4の2命令前でDREP命令が実行
される。
【0195】図34および図35はこの実施の形態6に
よるリピート処理中のパイプライン処理を示すタイミン
グチャート図である。これら2つの図は連続した図であ
り、わかりやすいようにクロックサイクルT9およびT
10は重複して示している。図の上部4行は各パイプラ
インステージの処理を示しており、残りの下部はリピー
ト処理に関係するレジスタに保持されている値や信号の
値を示している。また、簡単のため、各命令およびアド
レスをI2等命令の仮称で示している。“IA==RP
T_E”は比較器187の比較結果を示しており、“T
RPT_C==1”は1検出回路817の出力を示す。
また、図34および図35は10回の積和を行う場合の
パイプライン処理を示している。図示した例は、リピー
ト処理最終命令がI5であり、I4〜I7の4命令のリ
ピートブロックの処理を2回さらにI4,I5の2命令
を実行したのち、I8の実行を行うものである。
【0196】図34に示すように、情報処理装置は2ク
ロックサイクルT3,T4でI2のDREP命令を実行
する。また、情報処理装置は、クロックサイクルT3に
おいて、図29に示すRPT_EおよびRPT_Cを設
定し、PSWラッチ222のRPビット43を設定す
る。PC部118は制御部112の制御のもとでEPC
194に保持されている値をS3バス303へ出力し、
第1演算部116のAAラッチ151はS3バス303
上に出力されたその値を取り込む。また、disp16
835は第1演算部116のABラッチ152へ転送
される。第1演算部116のALU153は、AAラッ
チ151およびABラッチ152に保持されている値同
士を加算し、加算結果であるリピートブロックの最終命
令のアドレスをJAバス323に出力する。PC部11
8のRPT_Eレジスタ186はJAバス323上に出
力されたそのアドレスを取り込む。その後、インクリメ
ンタ173は、RPT_Eレジスタ186に保持されて
いる値を1インクリメントし、インクリメント結果はラ
ッチ174へ転送される。また、情報処理装置は、Rs
rc834で指定された汎用レジスタR10 11に保
持されている値をS1バス301、ラッチ169、セレ
クタ155およびD1バス311を介してRPT_Cレ
ジスタ811およびTRPT_Cレジスタ814へ転送
する。その後、RPT_Cレジスタ811の値はラッチ
818へ転送される。そして、制御部112は、PSW
ラッチ222のPRビット43を“1”にセットする。
【0197】クロックサイクルT4において、制御部1
12はRPT_Sレジスタ184の設定を行う。PC部
118はNPC191に保持されている値をS3バス3
03へ出力し、第1演算部116のAAラッチ151は
S3バス303上に出力されたその値を取り込む。一
方、制御部112は、第1演算部116のABラッチ1
52にハードウェア的に“1”を設定する。第1演算部
116のALU153は、AAラッチ151およびAB
ラッチ152に保持されている値同士を加算し、加算結
果であるリピートブロックの先頭の命令のアドレスをセ
レクタ155、D1バス311を介してPC部118の
RPT_Sレジスタ184へ転送する。その後、RPT
_Sレジスタ184に保持されている値はラッチ185
へ転送される。
【0198】この実施の形態6による情報処理装置は、
I2のDREP命令のデコードを開始した段階でI3の
命令フェッチを開始するが、DREP命令のDステージ
での処理が終了するまで、I4の命令フェッチの開始を
抑止する。DREP命令のデコードがクロックサイクル
T3で終了するので、情報処理装置はI4の命令フェッ
チをクロックサイクルT4で行う。DREP命令の実行
により、クロックサイクルT3でRPT_E、TRPT
_C、PSWラッチ222のRPビット43の設定が行
われる。従って、この実施の形態6による情報処理装置
は、リピートブロックの先頭命令であるI4の命令フェ
ッチからディレイドリピート命令で設定された内容でリ
ピート処理を行うことが可能である。
【0199】上記した処理例では、リピートブロック内
の10個の命令が実行される。リピート処理中(PSW
ラッチ222のRPビット43が“1”の場合)は、命
令フェッチ部102が32ビットの命令コードをフェッ
チする度に、PC部118のデクリメンタ816は、ラ
ッチ815を介して受け取ったTRPT_Cレジスタ8
14に保持されている値を1デクリメントし、デクリメ
ント結果はTRPT_Cレジスタ814に書き戻され
る。そして、1検出回路817は、TRPT_Cレジス
タ814に保持されている値が“1”になったか否かを
判定する。リピート処理中にリピートブロックの命令が
実行されると、デクリメンタ813は、各32ビット命
令の処理の最終クロックサイクルにおいてRPT_Cレ
ジスタ811に保持されている値を1デクリメントし、
デクリメント結果はTRPT_Cレジスタ814に書き
戻される(なお、I3の命令の処理時はデクリメントし
ない)。その後、RPT_Cレジスタ811の値はラッ
チ818へ転送される。TRPT_Cレジスタ814に
保持されている値が“1”になるまで、この実施の形態
6による情報処理装置は、上記実施の形態1と同様に、
リピートブロックのリピート処理を行う。この実施の形
態6によるリピートブロックのリピート処理方法は上記
実施の形態1によるものと同じである。また、RPT_
Eレジスタ186に保持されている値とIAレジスタ1
81に保持されている値が一致した場合、PC部118
は、次にフェッチする命令のアドレスとしてラッチ18
5に保持されている値をJAバス323を介してIAレ
ジスタ181へ転送し、命令フェッチシーケンスの切り
替えを行う。
【0200】TRPT_Cレジスタ814に保持されて
いる値が“1”の状態でフェッチしている命令は、リピ
ートブロック内で最後に実行される命令すなわちリピー
ト処理最終命令である。従って、この場合、情報処理装
置は次にフェッチする命令をリピートブロックの次の命
令に切り替える。この実施の形態6による情報処理装置
は、上記実施の形態1と同様に、命令処理シーケンスの
切り替えを行う。PC部118は、制御部112の制御
のもとでラッチ174に保持されている値をJAバス3
23を介してIAレジスタ181へ転送する。TRPT
_Cレジスタ814に保持されている値は、リピート処
理最終命令のフェッチ時にも、デクリメンタ816によ
り1デクリメントされる。また、リピート処理最終命令
の実行時には、制御部112はPSWラッチ222のR
Pビット43をゼロクリアする。
【0201】リピート処理最終命令がリピートブロック
の開始命令やリピートブロックの最終命令であっても、
情報処理装置は正しくリピート処理を行える。
【0202】また、リピートブロック最終命令処理情報
およびリピート処理最終命令処理情報は、上記実施の形
態1と同様に、対応する命令のパイプライン処理に同期
して転送され、NPC191の更新やPSWラッチ22
2のRPビット43のゼロクリア処理に使用される。D
REP命令直後のI3の命令を処理する際には、情報処
理装置はRPT_CがデクリメントされないようにEス
テージ403でその命令の処理を制御する。
【0203】Eステージ403でジャンプが起こった場
合、PC部118は、制御部112の制御のもとでRP
T_Cレジスタ811に保持されている値をラッチ81
8を介してTRPT_Cレジスタ814へ転送する。従
って、リピートブロック内でジャンプを禁止する場合に
は、この転送経路は不要である。
【0204】上述のように、この実施の形態6による情
報処理装置は、リピートブロックで実行される命令数を
管理することにより、リピートブロックの処理終了判定
を行っている。従って、リピート処理途中で条件分岐を
行う場合など、実行命令数がデータに依存する場合には
この実施の形態6による情報処理装置は適用できないた
め、このような場合のリピート処理を禁止する必要があ
る。
【0205】なお、図32に示すDREPI命令を実行
する時には、制御部112は、第1クロックサイクルに
おいて、図9に示すPSW部221からD1バス311
へ至る転送経路を使用して、図32のimm8 838
で指定されるリピートブロック内の実行命令数をPC部
118のRPT_Cレジスタ811およびTRPT_C
レジスタ814へ転送する。それ以外の処理は、上記し
たDREP命令の実行の場合とまったく同じである。
【0206】この実施の形態6には多くの変形例があり
得る。この実施の形態6では、DREP命令による設定
が終了するまでI4の命令のフェッチを開始しないよう
に制御している。フェッチした命令をプリデコードし、
DREP命令、DREPI命令フェッチ後は、PSWラ
ッチ222のRPビット43がセットされるまで、リピ
ートブロックの開始命令のフェッチを抑止するように制
御することにより、実施の形態6とは異なる命令キュー
のサイズや命令フェッチの制御方法を使用した場合にも
この実施の形態6を適用することが可能である。また、
ディレイドリピート命令のプリデコードがタイミング的
に厳しいような場合には、2命令分遅延するようなディ
レイドリピート命令を実装しても良い。
【0207】また、RPT_C,RPT_S,RPT_
E等の各種設定値の設定方法は、必要な値を設定するど
のようなものであっても良い。例えば、RPT_Sレジ
スタ184へRPT_Sを設定する場合、インクリメン
タ193の出力をD1バス3111を介してRPT_S
レジスタ184に設定するようにしても良い。
【0208】この実施の形態6による情報処理装置は、
リピートブロックは2命令以上の場合を対象としてい
る。これは、RPT_Sレジスタ184の設定後RPT
_Sがラッチ185へ転送されるが、I4の命令のフェ
ッチにおいて比較器187で一致が検出された場合には
ラッチ185への設定がまだ完了していないためであ
る。DREP命令実行直後にI4の命令のフェッチにお
いて比較器187が一致を検出した場合には、例えばR
PT_Sレジスタ184に設定する値をJAバス323
を介して直接IAレジスタ181へも転送するようにす
れば、この実施の形態6による情報処理装置は、リピー
トブロックが1命令の場合にも対処可能である。
【0209】また、この実施の形態6による情報処理装
置は、DREP命令直後には割り込みを受け付けない。
しかし、図2に示すPSW等にDREP命令の直後の命
令であることを示す情報を保持することにより、DRE
P命令直後に割り込みを受け付けた場合には、この情報
に基づき、DREP命令の次の1命令(図33のI3)
については、TRPT_Cレジスタ814およびRTP
_Cレジスタ811に保持されている値のデクリメント
を抑止するような制御を行うことにより割り込みの禁止
制約を解除することができる。
【0210】RPT_Cレジスタ811およびTRPT
_Cレジスタ814に“リピートブロックで実行される
命令数”に等しいRPT_Cを設定するようにしている
が、代わりに、“リピートブロックで実行される命令数
−1”を設定し、RPT_Cがゼロであるか否かを判定
するゼロ検出回路を1検出回路817の代わりに設けて
も良い。また、これに代わって、RPT_Cをゼロから
インクリメントして、設定した命令数との一致判定を行
うようにしても良い。
【0211】この実施の形態6による情報処理装置は、
ハードウェア制約により、DREP命令等を2クロック
サイクルで実行するものであるが、ハードウェアを追加
することにより、1クロックサイクルで実行することが
できる。また、これに代わって、ハードウェアを削減す
ることにより、3クロックサイクル以上かけてDREP
命令等を実行するように制御することも可能である。ま
た、専用のリピート命令すなわちDREP命令等ですべ
ての状態設定を行う必要もなく、プリミティブとなる命
令で設定を行うようにしてもよい。
【0212】IFステージ401とEステージ403で
独立してTRPT_Cレジスタ814およびRPT_C
レジスタ811に保持されている値(カウンタ値)を更
新するために、独立したデクリメンタ816,813を
備えているが、パイプライン処理に同期してカウンタ値
をIFステージ401からEステージ403へ転送する
ようにすれば、デクリメンタ813は不要である。ただ
し、そのための転送経路の追加が必要となる。
【0213】また、この実施の形態6による情報処理装
置はディレイドリピート命令を実装した例であるが、R
PT_Cに“リピートブロックで実行される命令数−
1”を設定し、リピートブロックの処理の1命令目はR
PT_Cをデクリメントしない仕様のリピート命令(デ
ィレイドリピート命令ではない)を実装すれば、実施の
形態6による情報処理装置とほぼ同じハードウェア構成
で、遅延制御を行うことなく途切れることのない命令実
行を実現できる。ただし、リピート命令によるリピート
関連のレジスタ等の設定前に1命令のフェッチが終了し
ているので、1命令でリピートブロックを構成したり、
1命令のみの実行でリピート処理を終了することはでき
ない。
【0214】以上のように、この実施の形態6による情
報処理装置は、リピートブロックで実行される命令数を
管理することにより、リピートブロックの処理終了判定
を行うとともに、リピートブロックを処理するために、
リピートブロックの開始直前にリピート命令を実行する
のではなく、リピートブロックの2命令以上前に設けた
ディレイドリピート命令(遅延リピート)を実行するも
のであるが、上記実施の形態1による情報処理装置と同
様の効果が得られる。すなわち、繰り返し回数がダイナ
ミックに変化するとともにリピートブロックの途中でリ
ピート処理を終了する場合において、条件判定、分岐の
ための前処理/後処理によるオーバーヘッドをなくし性
能の向上をはかることができるとともに、プログラムサ
イズを大幅に削減できる。従って、プログラムをROM
化する場合のコストも削減できるうえに、プログラム開
発の生産性を向上することができる。また、リピートブ
ロックの実行命令数を静的に設定できる場合すなわちD
REPI命令を使用可能な場合でも、ロード処理の投機
実行を行っても良いならば、コード効率を上げるととも
にプログラムを簡素化できる。
【0215】上記実施の形態1から実施の形態6による
情報処理装置には多くの変形例があり得る この発明に
よる、リピート処理途中でブレイク(命令処理シーケン
ス切り替え)をハードウェアにより実現する技術は、上
記実施の形態に開示している情報処理装置に限定的に適
用されるものではなく、リピート処理を行うどのような
形態の情報処理装置であっても適用可能であり、同様の
効果を得ることができる。例えば、情報処理装置はVL
IWプロセッサでなく、スパースケーラを一含む通常の
プロセッサやDSP等とのようなプロセッサであっても
よい。また、この発明は上記したようなパイプライン構
成や命令実行制御方法等に限定的に適用されるものでは
ない。
【0216】さらに、この発明による情報処理装置は、
上述の実施の形態に示したようなリピート関連の設定を
効率よく行う専用のリピート命令を用いる代わりに、プ
リミティブとなる命令でリピート関連のハードウェアリ
ソースの初期設定を行うようにしてもよい。また、上述
の実施の形態による情報処理装置は、実行する命令で指
定されるオペレーションとは独立してハードウェア的に
リピート制御を行うものであるが、通常の分岐命令やル
ープ制御命令(ループカウンタ値のデクリメント、カウ
ント値の判定を伴う分岐/ジャンプ命令等)でループ処
理を実現するものにも適用可能である。
【0217】また、ハードウェアによるリピート制御の
実現方法を、搭載するハードウェア量(コスト)と性能
向上のオーバーヘッドを考慮して決定することが可能で
ある。リピートブロック内で実行できる命令や処理可能
な条件(リピートブロック内の実行命令数や繰り返し回
数など)等に制約を加えてハードウェア量を削減しても
よいし、性能優先でハードウェアを追加して限定を少な
くなるような選択をしてもよい。リピートブロックのサ
イズに制限を加えるのであれば、アドレスの比較等につ
いても全ビットで比較する必要はなく、リピートブロッ
クの最大サイズに相当するビット数分のみ比較するよう
にして、ハードウェアコストを削減してもよい。
【0218】また、この発明による特徴の機能を実現す
るためにどのような実現手段を用いてもかまわない。例
えば、RPT_C等のカウント値についても、設定値か
らデクリメントする代わりに、ゼロからインクリメント
するように更新するように制御し、そのカウント値と設
定値との比較を行うような実現手段を用いてもよい。
【0219】また、アドレス比較、カウント値の先行更
新/判定、命令処理シーケンスの切り替えを、命令フェ
ッチ段階で行う代わりに命令実行段階で行ってもよい。
この場合においてもコードサイズを削減することができ
る。また、この場合、命令フェッチ段階で判定するより
もハードウェアコストを削減できる。ただし、命令実行
段階でのシーケンス切り替えとなるため、分岐によるオ
ーバーヘッドが生じるため、性能の向上度は低くなる。
【0220】上記したように、上記したいずれの実施の
形態を採用しても、リピート処理途中のブレイク(命令
処理シーケンスの切り替え)をハードウェアにより実現
しているので、繰り返し回数がダイナミックに変化する
とともにリピートブロックの途中でリピート処理を終了
する場合において、条件判定、分岐のための前処理/後
処理によるオーバーヘッドをなくし性能の向上をはかる
ことができるとともに、プログラムサイズを大幅に削減
できる。従って、プログラムをROM化する場合のコス
トも削減できるうえに、プログラム開発の生産性を向上
することができる。
【0221】
【発明の効果】以上のように、この発明によれば、情報
処理装置が、実行される命令で特定されるオペレーショ
ンとは独立して、リピートブロック内で繰り返し処理の
終了を検出する、ハードウェアにより実現された検出手
段と、上記検出手段が繰り返し処理の終了を検出した場
合、上記リピートブロック内の残りの命令の実行を抑止
する命令実行抑止手段とを備えるので、条件判定、分岐
のための前処理/後処理によるオーバーヘッドをなくし
性能の向上をはかることができるとともに、プログラム
サイズを大幅に削減できる効果がある。従って、プログ
ラムをROM化する場合のコストも削減できるうえに、
プログラム開発の生産性を向上することができる効果が
ある。
【0222】この発明によれば、命令実行抑止手段が、
検出手段が繰り返し処理の終了を検出した場合、リピー
トブロック内の残りの命令をノーオペレーション化す
る、ハードウェアにより実現された手段であるので、条
件判定、分岐のための前処理/後処理によるオーバーヘ
ッドをなくし性能の向上をはかることができるととも
に、プログラムサイズを大幅に削減できる効果がある。
また、単にリピートブロック内の残りの命令をノーオペ
レーション化するので、ハードウェアコストをさらに低
減できる効果がある。
【0223】この発明によれば、命令実行抑止手段が、
検出手段が繰り返し処理の終了を検出した場合、命令フ
ェッチ段階でリピートブロックの次の命令に命令処理シ
ーケンスを切り替える命令処理シーケンス切替手段であ
るので、条件判定、分岐のための前処理/後処理による
オーバーヘッドをなくし性能の向上をはかることができ
るとともに、プログラムサイズを大幅に削減できる効果
がある。
【0224】この発明によれば、命令実行抑止手段が、
検出手段が繰り返し処理の終了を検出した場合、命令実
行段階でリピートブロックの次の命令に命令処理シーケ
ンスを切り替える命令処理シーケンス切替手段であるの
で、条件判定、分岐のための前処理/後処理によるオー
バーヘッドをなくし性能の向上をはかることができると
ともに、プログラムサイズを大幅に削減できる効果があ
る。
【0225】この発明によれば、命令処理シーケンス切
替手段が、リピートブロックの繰り返し処理において最
後に実行される最終命令の実行時に、リピートブロック
の次の命令へのジャンプ処理を行う手段であるので、条
件判定、分岐のための前処理/後処理によるオーバーヘ
ッドをなくし性能の向上をはかることができるととも
に、プログラムサイズを大幅に削減できる効果がある。
【0226】この発明によれば、命令処理シーケンス切
替手段が、リピートブロックの繰り返し処理において最
後に実行される最終命令の実行後に、リピートブロック
の次の命令へのジャンプ処理を行う手段であるので、条
件判定、分岐のための前処理/後処理によるオーバーヘ
ッドをなくし性能の向上をはかることができるととも
に、プログラムサイズを大幅に削減できる効果がある。
【0227】この発明によれば、検出手段が、リピート
ブロックの繰り返し処理時に実行される命令のアドレス
に基づき繰り返し処理が終了したか否かを判定する手段
であるので、条件判定、分岐のための前処理/後処理に
よるオーバーヘッドをなくし性能の向上をはかることが
できるとともに、プログラムサイズを大幅に削減できる
効果がある。
【0228】この発明によれば、検出手段が、リピート
ブロックを繰り返し処理する回数をカウントするカウン
ト手段と、上記リピートブロック内の実行される命令の
アドレスと最後に実行される最終命令のアドレスとを比
較する比較手段とを有しており、上記カウント手段のカ
ウント数が所定の数に到達し、上記比較手段が実行され
る命令のアドレスが最終命令のアドレスと一致したこと
を通知した際に繰り返し処理の終了と判定するので、条
件判定、分岐のための前処理/後処理によるオーバーヘ
ッドをなくし性能の向上をはかることができるととも
に、プログラムサイズを大幅に削減できる効果がある。
【0229】この発明によれば、検出手段が、リピート
ブロックの繰り返し処理時に実行される命令数に基づき
繰り返し処理が終了したか否かを判定する手段であるの
で、条件判定、分岐のための前処理/後処理によるオー
バーヘッドをなくし性能の向上をはかることができると
ともに、プログラムサイズを大幅に削減できる効果があ
る。
【0230】この発明によれば、検出手段が、リピート
ブロック内の実行された命令数をカウントするカウント
手段を有しており、上記カウント手段のカウント数が所
定の数に到達した際に繰り返し処理の終了と判定するの
で、条件判定、分岐のための前処理/後処理によるオー
バーヘッドをなくし性能の向上をはかることができると
ともに、プログラムサイズを大幅に削減できる効果があ
る。
【0231】この発明によれば、検出手段が、リピート
ブロックを繰り返し処理する回数をカウントする第1カ
ウント手段と、上記リピートブロック内の実行された命
令数をカウントする第2カウント手段とを有しており、
上記第1カウント手段のカウント数が第1の所定の数に
到達し、上記リピートブロックの最終の繰り返し処理に
おいて上記第2カウント手段のカウント数が第2の所定
の数に到達した際に繰り返し処理の終了と判定するの
で、条件判定、分岐のための前処理/後処理によるオー
バーヘッドをなくし性能の向上をはかることができると
ともに、プログラムサイズを大幅に削減できる効果があ
る。
【図面の簡単な説明】
【図1】 この発明の実施の形態1による情報処理装置
のレジスタセットを示す図である。
【図2】 制御レジスタCR0に保持されるPSWの構
成を示す図である。
【図3】 この発明による情報処理装置の32ビット命
令のフォーマットを示す図である。
【図4】 2つのオペランドを持つショート命令のビッ
ト割り付けの例を示す図である。
【図5】 ショートフォーマットの分岐命令のビット割
り付けの例を示す図である。
【図6】 16ビットの変位や即値を持つ3オペランド
命令やロード/ストア命令のビット割り付けの例を示す
図である。
【図7】 右コンテナ側にオペレーションコードを持つ
ロングフォーマットの命令のビット割り付けの例を示す
図である。
【図8】 この発明の実施の形態1による情報処理装置
の構成を示すブロック図である。
【図9】 図8に示すこの発明の実施の形態1による情
報処理装置の第1演算部の構成を詳細に示すブロック図
である。
【図10】 図8に示すこの発明の実施の形態1による
情報処理装置のPC部の構成を詳細に示すブロック図で
ある。
【図11】 図8に示すこの発明の実施の形態1による
情報処理装置の第2演算部の構成を詳細に示すブロック
図である。
【図12】 この発明の実施の形態1による情報処理装
置のパイプライン処理を示す図である。
【図13】 ロードオペランド干渉の例を示す図であ
る。
【図14】 演算ハードウェア干渉の例を示す図であ
る。
【図15】 リピート命令“REP Rsrc1,Rs
rc2,disp16”のビット割り付けを示す図であ
る。
【図16】 積和演算を行うアセンブラで記述されてお
り、REP命令を含むプログラム例を示す図である。
【図17】 この発明の実施の形態1による、図16に
示したプログラムのREP命令実行からリピート処理完
了までのパイプライン処理を示すタイミングチャート図
である。
【図18】 この発明の実施の形態1による、図16に
示したプログラムのREP命令実行からリピート処理完
了までのパイプライン処理を示すタイミングチャート図
である。
【図19】 リピートブロック内の1命令しか実行しな
い場合の処理例を示すタイミングチャート図である。
【図20】 この発明の実施の形態2による情報処理装
置が用いるPSWの構成を示す図である。
【図21】 この発明の実施の形態2による情報処理装
置のPC部の構成を示すブロック図である。
【図22】 この発明の実施の形態2による、図16に
示したプログラム実行時のパイプライン処理を示すタイ
ミングチャート図である。
【図23】 この発明の実施の形態3による、図16に
示したプログラム実行時のパイプライン処理を示すタイ
ミングチャート図である。
【図24】 この発明の実施の形態4による、図16に
示したプログラム実行時のパイプライン処理を示すタイ
ミングチャート図である。
【図25】 この発明の実施の形態5による情報処理装
置のリピート関連の制御レジスタを示す図である。
【図26】 この発明の実施の形態5による情報処理装
置のPC部の構成を示すブロック図である。
【図27】 この発明の実施の形態5による、図16に
示したプログラム実行時のパイプライン処理を示すタイ
ミングチャート図である。
【図28】 この発明の実施の形態5による、図16に
示したプログラム実行時のパイプライン処理を示すタイ
ミングチャート図である。
【図29】 この発明の実施の形態6による情報処理装
置のリピート関連の制御レジスタを示す図である。
【図30】 この発明の実施の形態6による情報処理装
置のPC部の構成を示すブロック図である。
【図31】 この発明の実施の形態6による情報処理装
置のディレイドリピート(遅延リピート)命令“DRE
P Rsrc,disp16”の命令フォーマットを示
す図である。
【図32】 この発明の実施の形態6による情報処理装
置のディレイドリピート命令“DREPI imm8,
disp16”の命令フォーマットを示す図である。
【図33】 積和演算を行うアセンブラで記述されてお
り、DREP命令を含むプログラム例を示す図である。
【図34】 この発明の実施の形態6による情報処理装
置のリピート処理中のパイプライン処理を示すタイミン
グチャート図である。
【図35】 この発明の実施の形態6による情報処理装
置のリピート処理中のパイプライン処理を示すタイミン
グチャート図である。
【図36】 従来の情報処理装置の繰り返し処理の例を
示すフローチャートである。
【符号の説明】
1〜17 汎用レジスタ、21〜30,701,801
制御レジスタ、31,32 アキュムレータ、41
SMビット、42 IEビット、43 RPビット、4
4 MDビット、45 FXビット、46 STビッ
ト、47,48実行制御フラグ、49 キャリーフラ
グ、51,501,831,836 フォーマット指定
ビット(FMビット)、52 左コンテナ、53 右コ
ンテナ、61,64,71,81,93,96 オペレ
ーションコードフィールド、62,63,82,83,
91,94,95 フィールド、72 分岐変位フィー
ルド、84 拡張データフィールド、92 予約フィー
ルド、100 情報処理装置、101 MPUコア部、
102 命令フェッチ部、103 内蔵命令メモリ、1
04 オペランドアクセス部、105 内蔵データメモ
リ、106 外部インタフェース部、111 命令キュ
ー、112 制御部(検出手段、命令実行抑止手段、命
令処理シーケンス切替手段)、113 第1デコーダ、
114 第2デコーダ、115 レジスタファイル、1
16 第1演算部、117 第2演算部、118 PC
部(検出手段、命令実行抑止手段、命令処理シーケンス
切替手段)、119 命令デコード部、151 AAラ
ッチ、152 ABラッチ、153,201 ALU、
154 AOラッチ、155 セレクタ、156 MO
D_Sレジスタ、157 MOD_Eレジスタ、15
8,187 比較器、172比較器(比較手段)、15
9,161,163,165,169,174,17
9,182,185,192,195,712,71
8,812,815,818 ラッチ、160 SDレ
ジスタ、162,166 整置回路、164 LDレジ
スタ、167 TPSWラッチ、168 BPSWレジ
スタ、171 RPT_Bレジスタ、173,183,
193 インクリメンタ、175 TRPT_Cレジス
タ(カウント手段、第1カウント手段)、176 ラッ
チ(カウント手段、第1カウント手段)、177 デク
リメンタ(カウント手段、第1カウント手段)、17
8,717 ゼロ検出回路、181 IAレジスタ、1
84RPT_Sレジスタ、186 RPT_Eレジス
タ、188,811 RPT_Cレジスタ、191,6
11 NPC、194 EPC、196 BPC、20
2 Aラッチ、203 Bラッチ、204,205 シ
フタ、206 配線、207 マルチプレクサ、208
アキュムレータ、209 サチュレーション回路、2
10 プライオリティエンコーダ、211 乗算器、2
12 Xラッチ、213 Yラッチ、214 Pラッ
チ、215 バレルシフタ、216 SCラッチ、21
7 SDラッチ、218 即値ラッチ、221 PSW
部、222PSWラッチ、301 S1バス、302
S2バス、303 S3バス、304 S4バス、30
5 S5バス、311 D1バス、312 D2バス、
313 D3バス、314 Wバス、321 OAバ
ス、322 ODバス、323JAバス、401 IF
ステージ、402 Dステージ、403 Eステージ、
404 Mステージ、405 Wステージ、406 E
2ステージ、502,832,837 オペレーション
コード、503,504,834 レジスタ番号、50
5 リピートブロック最終命令のアドレス、601 R
Eビット、711 RPT_BCレジスタ、713,8
13,816 デクリメンタ、714TRPT_BCレ
ジスタ(カウント手段、第2カウント手段)、715
ラッチ(カウント手段、第2カウント手段)、716
デクリメンタ(カウント手段、第2カウント手段)、8
14 TRPT_Cレジスタ、817 1検出回路、8
33 予約ビット、838 即値データ、835,83
9 リピートブロック最終命令のリピート命令からの変
位値。

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 複数の命令からなり繰り返し処理される
    リピートブロックを含むプログラムを実行する情報処理
    装置において、 実行される命令で特定されるオペレーションとは独立し
    て、上記リピートブロック内で繰り返し処理の終了を検
    出する、ハードウェアにより実現された検出手段と、 上記検出手段が繰り返し処理の終了を検出した場合、上
    記リピートブロック内の残りの命令の実行を抑止する命
    令実行抑止手段とを備えたことを特徴とする情報処理装
    置。
  2. 【請求項2】 命令実行抑止手段は、検出手段が繰り返
    し処理の終了を検出した場合、リピートブロック内の残
    りの命令をノーオペレーション化する、ハードウェアに
    より実現された手段であることを特徴とする請求項1記
    載の情報処理装置。
  3. 【請求項3】 命令実行抑止手段は、検出手段が繰り返
    し処理の終了を検出した場合、命令フェッチ段階でリピ
    ートブロックの次の命令に命令処理シーケンスを切り替
    える命令処理シーケンス切替手段であることを特徴とす
    る請求項1記載の情報処理装置。
  4. 【請求項4】 命令実行抑止手段は、検出手段が繰り返
    し処理の終了を検出した場合、命令実行段階でリピート
    ブロックの次の命令に命令処理シーケンスを切り替える
    命令処理シーケンス切替手段であることを特徴とする請
    求項1記載の情報処理装置。
  5. 【請求項5】 命令処理シーケンス切替手段は、リピー
    トブロック内の繰り返し処理において最後に実行される
    最終命令を実行時に、リピートブロックの次の命令への
    ジャンプ処理を行う手段であることを特徴とする請求項
    4記載の情報処理装置。
  6. 【請求項6】 命令処理シーケンス切替手段は、リピー
    トブロック内の繰り返し処理において最後に実行される
    最終命令を実行後に、リピートブロックの次の命令への
    ジャンプ処理を行う手段であることを特徴とする請求項
    4記載の情報処理装置。
  7. 【請求項7】 検出手段は、リピートブロックの繰り返
    し処理時に実行される命令のアドレスに基づき繰り返し
    処理が終了したか否かを判定する手段であることを特徴
    とする請求項1から請求項6のうちのいずれか1項記載
    の情報処理装置。
  8. 【請求項8】 検出手段は、リピートブロックを繰り返
    し処理する回数をカウントするカウント手段と、上記リ
    ピートブロック内の実行される命令のアドレスと最後に
    実行される最終命令のアドレスとを比較する比較手段と
    を有しており、上記カウント手段のカウント数が所定の
    数に到達し、上記比較手段が実行される命令のアドレス
    が最終命令のアドレスと一致したことを通知した際に繰
    り返し処理の終了と判定することを特徴とする請求項7
    記載の情報処理装置。
  9. 【請求項9】 検出手段は、リピートブロックの繰り返
    し処理時に実行される命令数に基づき繰り返し処理が終
    了したか否かを判定する手段であることを特徴とする請
    求項1から請求項6のうちのいずれか1項記載の情報処
    理装置。
  10. 【請求項10】 検出手段は、リピートブロック内の実
    行された命令数をカウントするカウント手段を有してお
    り、上記カウント手段のカウント数が所定の数に到達し
    た際に繰り返し処理の終了と判定することを特徴とする
    請求項9記載の情報処理装置。
  11. 【請求項11】 検出手段は、リピートブロックを繰り
    返し処理する回数をカウントする第1カウント手段と、
    上記リピートブロック内の実行された命令数をカウント
    する第2カウント手段とを有しており、上記第1カウン
    ト手段のカウント数が第1の所定の数に到達し、上記リ
    ピートブロックの最終の繰り返し処理において上記第2
    カウント手段のカウント数が第2の所定の数に到達した
    際に繰り返し処理の終了と判定することを特徴とする請
    求項9記載の情報処理装置。
JP2001027416A 2001-02-02 2001-02-02 情報処理装置 Withdrawn JP2002229779A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001027416A JP2002229779A (ja) 2001-02-02 2001-02-02 情報処理装置
US09/921,554 US7010677B2 (en) 2001-02-02 2001-08-06 Data processor speeding up repeat processing by inhibiting remaining instructions after a break in a repeat block

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001027416A JP2002229779A (ja) 2001-02-02 2001-02-02 情報処理装置

Publications (1)

Publication Number Publication Date
JP2002229779A true JP2002229779A (ja) 2002-08-16

Family

ID=18892074

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001027416A Withdrawn JP2002229779A (ja) 2001-02-02 2001-02-02 情報処理装置

Country Status (2)

Country Link
US (1) US7010677B2 (ja)
JP (1) JP2002229779A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011204208A (ja) * 2010-03-26 2011-10-13 Fujitsu Ltd マルチコアプロセッサ
WO2015021803A1 (zh) * 2013-08-13 2015-02-19 华为技术有限公司 一种数据处理的方法及装置
US9164763B2 (en) 2009-10-26 2015-10-20 Sony Corporation Single instruction group information processing apparatus for dynamically performing transient processing associated with a repeat instruction
JP2017228213A (ja) * 2016-06-24 2017-12-28 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8112615B1 (en) * 2002-09-27 2012-02-07 Cypress Semiconductor Corporation Single cycle reduced complexity CPU
CN1703670B (zh) * 2002-10-11 2010-12-08 Nxp股份有限公司 指令的寻址范围相关并行化的数据处理设备
US7254698B2 (en) 2003-05-12 2007-08-07 International Business Machines Corporation Multifunction hexadecimal instructions
US9280344B2 (en) * 2012-09-27 2016-03-08 Texas Instruments Incorporated Repeated execution of instruction with field indicating trigger event, additional instruction, or trigger signal destination
US20170052782A1 (en) * 2015-08-21 2017-02-23 Apple Inc. Delayed zero-overhead loop instruction
US11182160B1 (en) * 2020-11-24 2021-11-23 Nxp Usa, Inc. Generating source and destination addresses for repeated accelerator instruction

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3658072B2 (ja) 1996-02-07 2005-06-08 株式会社ルネサステクノロジ データ処理装置およびデータ処理方法
JPH09237186A (ja) 1996-03-04 1997-09-09 Hitachi Ltd ループ制御装置およびプロセッサ
US5752015A (en) * 1996-03-29 1998-05-12 Integrated Device Technology, Inc. Method and apparatus for repetitive execution of string instructions without branch or loop microinstructions
US6085315A (en) * 1997-09-12 2000-07-04 Siemens Aktiengesellschaft Data processing device with loop pipeline
US6079008A (en) * 1998-04-03 2000-06-20 Patton Electronics Co. Multiple thread multiple data predictive coded parallel processing system and method
US6263489B1 (en) * 1998-04-30 2001-07-17 Hewlett-Packard Company Method and apparatus for debugging of optimized code
JP3842474B2 (ja) * 1999-02-02 2006-11-08 株式会社ルネサステクノロジ データ処理装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9164763B2 (en) 2009-10-26 2015-10-20 Sony Corporation Single instruction group information processing apparatus for dynamically performing transient processing associated with a repeat instruction
JP2011204208A (ja) * 2010-03-26 2011-10-13 Fujitsu Ltd マルチコアプロセッサ
WO2015021803A1 (zh) * 2013-08-13 2015-02-19 华为技术有限公司 一种数据处理的方法及装置
JP2017228213A (ja) * 2016-06-24 2017-12-28 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
US20020133692A1 (en) 2002-09-19
US7010677B2 (en) 2006-03-07

Similar Documents

Publication Publication Date Title
US5901301A (en) Data processor and method of processing data
US5826089A (en) Instruction translation unit configured to translate from a first instruction set to a second instruction set
JP3856737B2 (ja) データ処理装置
US6560697B2 (en) Data processor having repeat instruction processing using executed instruction number counter
US20070174596A1 (en) Data processor
JP3670668B2 (ja) データ処理装置
JPH07168714A (ja) ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法
JP2006004042A (ja) データ処理装置
US20050262329A1 (en) Processor architecture for executing two different fixed-length instruction sets
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
JPH0496825A (ja) データ・プロセッサ
JP3789583B2 (ja) データ処理装置
US6449712B1 (en) Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions
JP2002229779A (ja) 情報処理装置
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
JPH10222368A (ja) データ処理装置
US5768553A (en) Microprocessor using an instruction field to define DSP instructions
JP4502532B2 (ja) データ処理装置
US6988121B1 (en) Efficient implementation of multiprecision arithmetic
JP2006302324A (ja) データ処理装置
JP2001142694A (ja) データフィールドのエンコード方法、情報フィールドの拡張方法、及び、コンピュータシステム
JP2006031329A (ja) データ処理装置
JP2001216154A (ja) むき出しのパイプラインを具備するコードのサイズを、nop演算を命令オペランドとしてコード化することで削減するための方法並びに装置
JP2005134987A (ja) パイプライン演算処理装置
JP2002123389A (ja) データ処理装置

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20060123

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20071101

A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20080513