JP3842474B2 - データ処理装置 - Google Patents
データ処理装置 Download PDFInfo
- Publication number
- JP3842474B2 JP3842474B2 JP02523899A JP2523899A JP3842474B2 JP 3842474 B2 JP3842474 B2 JP 3842474B2 JP 02523899 A JP02523899 A JP 02523899A JP 2523899 A JP2523899 A JP 2523899A JP 3842474 B2 JP3842474 B2 JP 3842474B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- execution
- step repeat
- instructions
- register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 26
- 230000004044 response Effects 0.000 claims description 12
- 230000001629 suppression Effects 0.000 claims description 11
- 230000005764 inhibitory process Effects 0.000 claims description 4
- 230000001960 triggered effect Effects 0.000 claims description 4
- 230000008859 change Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 39
- 238000010586 diagram Methods 0.000 description 22
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 13
- 101100150299 Penicillium chrysogenum SREP gene Proteins 0.000 description 6
- 230000001343 mnemonic effect Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
【0001】
【発明の属する技術分野】
この発明は、高性能なデータ処理装置に関するものであり、特に、そのリピート処理機能に関する。
【0002】
【従来の技術】
デジタル信号処理等では、同じ命令を繰り返し実行することが多い。幾つかのDSPではこの様な処理を効率よく実行するため、専用の命令と専用のハードウェアを設けている。
【0003】
これはブロックリピート等と呼ばれる処理であり、ある制御レジスタで指定された命令列を、別の制御レジスタで指定された回数だけ繰り返し実行するものである。ブロックリピートは、例えば、「TMS320C5x User’s Guide,1993、3・6・5節」に開示されている。この機能により、繰り返し回数の計数、計数結果の判定、及び繰り返し実行する命令の末尾から先頭への分岐の為の命令等が不要となる。また、同様の例は特開平9−212361号公報(以下、「公報1」と略する)にも開示されている。
【0004】
【発明が解決しようとする課題】
上記公報1では、FIRフィルタを例にとってブロックリピート命令の使用形態を示している(公報1中の図14)。この例は、積和演算の総数が予め256回と判っていた場合であるが、積和演算の総数が予め判っていなかった場合はより複雑な処理が必要となる。詳細は省くが、積和演算総数をリピートブロック内の命令数6で割った商をリピート回数に指定し、その剰余をリピートブロックの後に付け足す、複雑なプログラム作成が必要になる。
【0005】
この発明は上記問題点を解決するためになされたもので、所定の命令列に含まれる命令を繰り返しながら、指定された命令単位の回数で正確に実行することが可能なデータ処理装置を得ることを目的とする。
【0006】
【課題を解決するための手段】
この発明に係る請求項1記載のデータ処理装置は、プログラムにしたがって動作し、前記プログラムに記載中の、第1〜第N(N≧2)命令及び実行命令回数M(M≧1)が指定可能なステップリピート命令に応答して、前記第1〜第Nの命令をK(K=M/Nの商)回繰り返した後、第1〜第L(L=M/Nの余り)の命令を実行するステップリピート機能を有し、前記ステップリピート機能は、前記ステップリピート命令実行時に、前記第1〜第Nの命令の各命令の実行毎に命令実行カウント数をカウントし、該命令実行カウント数が前記実行命令回数に達した達成状態か/達成していない未達成状態かを示す実行命令回数判定結果を出力する実行命令回数判定手段と、前記ステップリピート命令実行時に、第1,第2,…第N,第1,第2の順に、前記第1〜第Nの命令を繰り返し取り込む命令取り込み手段と、前記命令取り込み手段に取り込まれた命令を順次受け、前記ステップリピート命令実行時に、前記実行命令回数判定結果が前記未達成状態を指示するとき前記命令取り込み手段より受ける命令を順次実行させ、前記実行命令回数判定結果が前記達成状態を指示するとき前記命令取り込み手段より受ける命令を無効にする命令実行制御手段とを備えている。
【0007】
請求項2記載のデータ処理装置において、前記ステップリピート機能は、前記ステップリピート命令の実行中である実行状態か/実行中でない非実行状態かを示すステップリピート命令実行情報を格納する情報格納手段をさらに備え、前記ステップリピート命令実行情報は前記ステップリピート命令実行開始時に前記実行状態に設定され、前記命令取り込み手段は、L(L=M/Nの余り)が“0”でないとき、前記第1〜第Nの命令を(K+1)回繰り返し取り込み、(K+1)回目に取り込んだ第Nの命令の前記命令実行制御手段への付与時に前記ステップリピート命令実行情報を前記非実行状態に設定し、前記実行命令回数判定手段は、(K+1)回目の前記第Lの命令の実行中に前記実行命令回数判定結果の指示内容を前記達成状態にし、前記命令実行制御手段は、前記達成状態を指示する実行命令判定結果に応答して、(K+1)回目の第(L+1)〜第Nの命令を順次無効にしている。
【0008】
請求項3記載のデータ処理装置において、前記ステップリピート機能は、前記ステップリピート命令の実行中である実行状態か/実行中でない非実行状態かを示すステップリピート命令実行情報を格納する情報格納手段をさらに備え、前記ステップリピート命令実行情報は前記ステップリピート命令実行開始時に前記実行状態に設定され、前記実行回数判定結果を受け、前記実行回数判定結果の指示内容の前記未達成状態から前記達成状態への変化時をトリガとして、前記ステップリピート命令処理後に実行すべき命令の取り込みを指示する制御信号を発生するとともに、前記ステップリピート命令実行情報を前記非実行状態に設定するタイミング制御手段をさらに備えている。
【0009】
請求項4記載のデータ処理装置は、複数の命令からなる命令列及び繰り返し実行回数が指定可能なブロックリピート命令に応答して、前記命令列を前記繰り返し実行回数繰り返して実行可能なブロックリピート機能を前記ステップリピート機能と独立してさらに有している。
【0010】
請求項5記載のデータ処理装置は、所定の命令と該所定の命令の実行条件を規定した実行条件指定命令とに応答して、条件判定を行って前記所定の命令の実行/抑止を行う条件実行機能をさらに有し、前記条件実行機能は、条件用情報を格納する条件用情報格納手段と、前記実行条件指定命令に応答して、前記条件用情報が前記実行条件を満足するか否かに基づき、前記所定の命令を実行するか抑止するかを制御する実行抑止信号を出力する実行条件判定手段とを備えるとともに、前記命令取り込み手段及び前記命令実行制御手段を前記ステップリピート機能と共有し、前記命令取り込み手段は、前記実行条件指定命令の前記実行条件判定手段の判定処理に並行して前記所定の命令を取り込み、前記命令実行制御手段は、前記実行抑止信号が抑止を指示するときに、前記命令取り込み手段より付与される前記所定の命令を無効にしている。
【0011】
請求項6記載のデータ処理装置において、前記プログラム中に前記ステップリピート命令に連続して前記第1〜第Nの命令が順に記載され、前記ステップリピート命令は、前記第Nの命令のアドレス情報をさらに有している。
【0012】
【発明の実施の形態】
<基本構成>
図1に本データ処理装置100の機能ブロック構成を示す。データ処理装置100は、MPUコア部101と、MPUコア部101からの要求により命令データのアクセスを行う命令フェッチ部102、内蔵命令メモリ103、MPUコア部101からの要求によりオペランドデータのアクセスを行うオペランドアクセス部104、内蔵データメモリ105、命令フェッチ部102とオペランドアクセス部104からの要求を調停し、データ処理装置100の外部メモリのアクセス等を行う外部バスインターフェイス部106からなる。
【0013】
MPUコア部101は、命令キュー111、制御部112、レジスタファイル115、第1演算部116、第2演算部117、PC部118からなる。
【0014】
命令キュー111は、2エントリの32ビット命令バッファと有効ビット、及び入出力ポインタ等からなり、FIFO(先入れ先出し)方式で制御される。命令キュー111は、命令フェッチ部102でフェッチされた命令データを一時保持し、制御部112に送る。
【0015】
制御部112は、前述の命令キュー111の制御、パイプライン制御、命令の実行、命令フェッチ部102やオペランドアクセス部104とのインターフェイスなど、MPUコア部101のすべての制御を行う。また、制御部112には、命令キュー111から送られる命令コードをデコードするための命令デコード部119があり、2つのデコーダを含む。第1デコーダ113は、第1演算部116で実行する命令をデコードし、第2デコーダ114は、第2演算部117で実行する命令をデコードする。
【0016】
2つのショート命令をシーケンシャルに実行する場合、先行して実行される命令のデコード中に後で実行する側の命令が図示していないプリデコーダでデコードされ、どちらのデコーダでデコードすべきかを判定する。後で実行される命令がどちらのデコーダでも処理できる命令の場合は第1デコーダ113でデコードする。先行する命令のデコード後、後で実行する命令の命令コードが選択されたデコーダに取り込まれ、解析される。
【0017】
レジスタファイル115は、複数のレジスタの値を保持し、第1演算部116、第2演算部117、PC部118、オペランドアクセス部104に複数のバスで結合されている。
【0018】
図2に、第1演算部116の詳細ブロック構成を示す。第1演算部116は、レジスタファイル115と、各々S1バス301、S2バス302、S3バス303によって結合されており、これら3つのバス301〜303を介してレジスタファイル115からデータを読み出し、演算器等にリードオペランドとなるデータやストアデータを転送する。S1バス301は偶数番号のレジスタにのみに、S2バス302は奇数番号のレジスタにのみに結合されており、S1バス301とS2バス302でレジスタペアの2ワードを並列に転送することもできる。S3バス303は全レジスタに結合されている。
【0019】
また、第1演算部116は、レジスタファイル115と、各々D1バス311、Wバス314で結合されており、D1バス311を介して演算結果や転送データをレジスタファイル115に転送し、Wバス314でロードしたバイトデータをレジスタファイル115に転送する。D1バス311、Wバス314とも、全レジスタに結合されている。さらに、レジスタファイル115はオペランドアクセス部104と32ビットのODバス322で結合されており、1ワードのデータもしくはレジスタペアの2ワードを並列に転送することが可能である。ODバス322の上位/下位16ビットは、任意のレジスタファイルに書き込みができるようにレジスタファイル115の全レジスタに結合されている。
【0020】
AAラッチ151、ABラッチ152は、ALU153の入力ラッチである。AAラッチ151は、S1バス301、S2バス302もしくはS3バス303を介して読み出されたレジスタ値を取り込む。同ラッチ151は、ゼロクリアする機能も備えている。ABラッチ152は、S3バス303を介して読み出されたレジスタ値もしくは第1デコーダ113でデコードの結果生成された16ビットの即値を取り込み、また、ゼロクリアする機能も備えている。
【0021】
ALU153では、主として転送、比較、算術論理演算、オペランドアドレスの計算/転送、オペランドアドレス値のインクリメント/デクリメント、ジャンプ先アドレスの計算/転送等が行われる。演算結果やアドレスモディファイの結果はセレクタ155、D1バス311を介して、レジスタファイル115中の命令で指定されたレジスタに書き戻される。また、指定された条件が成立した場合には“1”を不成立の場合には“0”をレジスタに書き込む条件セット命令を実行するために、セレクタ155は演算結果の最下位ビットに制御部112から出力されたデータを埋め込む機能を備える。この場合、演算結果は“0”が出力されるように制御される。AOラッチ154は、オペランドのアドレスを保持するラッチであり、ALU153でのアドレス計算結果もしくはAAラッチ151に保持されたベースアドレスの値を選択的に保持し、OAバス321を介してオペランドアクセス部104に出力する。また、ジャンプ先アドレスやリピートエンドアドレスを計算した場合には、ALU153の出力が、JAバス323を介してPC部118に転送される。
【0022】
MOD_S156とMOD_E157とは、それぞれ図1のレジスタCR10及びCR11に相当する制御レジスタである。比較器158は、MOD_E157の値とS3バス303上のベースアドレスの値とを比較して比較結果を制御部112に送る。モジュロアドレッシングがイネーブル状態で、ポストインクリメント/デクリメント付きのレジスタ間接モードで、比較器158の比較結果が一致した場合には、ラッチ159に保持されているMOD_S156の値がセレクタ155、D1バス311を介して、レジスタファイル115中のベースアドレスレジスタとして指定されたレジスタに書き戻される。
【0023】
ストアデータ(SD)レジスタ160は、16ビットのレジスタ2本からなり、S1バス301もしくはS2バス302の一方、もしくは、S1バス301とS2バス302の両方に出力されたストアデータを一時保持する。SDレジスタ160に保持されたデータは、ラッチ161を介して整置回路162に転送される。整置回路162では、オペランドのアドレスに従って、ストアデータが32ビット境界に整置され、ラッチ163、ODバス322を介してオペランドアクセス部104に出力される。
【0024】
また、オペランドアクセス部104でロードされたバイトデータは、ODバス322を介して、16ビットのロードデータ(LD)レジスタ164に取り込まれる。LDレジスタ164の値は、ラッチ165を介して、整置回路166に転送される。整置回路166では、バイト整置及びバイトデータのゼロ/符号拡張を行う。整置、拡張後のデータが、Wバス314を介してレジスタファイル115中の指定されたレジスタに書き込まれる。1ワード(16ビット)ロード、2ワード(32ビット)ロードの場合にはLDレジスタを介さず、ODバス322からレジスタファイル115にロードした値が直接書き込まれる。
【0025】
制御部112中のPSW部171は図2のPSWラッチ172や、PSW更新回路等からなり、演算結果や命令の実行によりPSWラッチ172の値を更新する。PSWラッチ172に値を転送する場合、S3バス303に出力されたデータがTPSWラッチ167を介して、必要なビット(アサインされているビット)のみ転送される。PSWラッチ172の値を読み出す場合には、PSW部171からD1バス311に出力され、レジスタファイル115に書き込まれる。例外処理時には、D1バス311に出力されたPSWの値がBPSWラッチ168に書き込まれる。BPSWラッチ168の値をレジスタファイル115に転送する場合には、BPSWラッチ168の値はS3バス303に読み出され、レジスタファイルなど必要な場所に転送される。アサインされていないビットは強制的に“0”がS3バス303に出力される。例外からの復帰時には、BPSWラッチ168の値は、直接TPSWラッチ167を介して、必要なビット(アサインされているビット)のみPSWラッチ172に転送される。
【0026】
図3は、PC部118の詳細ブロック図である。命令アドレス(IA)レジスタ181は、次にフェッチする命令のアドレスを保持し、次にフェッチする命令のアドレスを命令フェッチ部102に出力する。引き続き後続の命令をフェッチする場合には、IAレジスタ181からラッチ182を介して転送されたアドレス値がインクリメンタ183で1インクリメントされて、IAレジスタ181に書き戻される。ジャンプやリピート等によりシーケンスが切り替わる場合には、IAレジスタ181はJAバス323を介して転送されるジャンプ先アドレス、リピートブロック開始アドレスを取り込む。
【0027】
SRPT_Sレジスタ184、SRPT_Eレジスタ186、SRPT_Cレジスタ188はステップリピート制御用の制御レジスタである。SRPT_Sレジスタ184はステップリピート処理対象命令列の先頭アドレスを格納するレジスタ、SRPT_Eレジスタ186はステップリピート処理対象命令列の最終アドレスを格納するレジスタ、SRPT_Cレジスタ188はステップリピート対象命令列に含まれる命令単位の実行命令回数を格納するレジスタである。
【0028】
最終アドレスは、ステップリピート命令処理時に第1演算部116で計算され、JAバス323を介してSRPT_Eレジスタ186に取り込まれる。比較器187は、ステップリピートを行うブロックの最終命令のアドレスを保持するSRPT_Eレジスタ186の値と、フェッチアドレスを保持しているIAレジスタ181の値とを比較し、その比較結果を制御部112に出力する。
【0029】
もし、ステップリピート処理中であり、ステップリピートする回数を保持するSRPT_Cレジスタ188の値が“1”より大きい場合、SRPT_Sレジスタ184に保持されているステップリピートを行うブロックの開始アドレスが、ラッチ185、JAバス323を介して、IAレジスタ181に転送される。
【0030】
ステップリピート処理中は、ステップリピート群の命令列の一つの命令が実行されるたびに、SRPT_Cレジスタ188の値は、ラッチ189を介してデクリメンタ190で“1”だけデクリメントされる。デクリメントした値が、“0”であった場合にはそれ以上のデクリメントは行わない。
【0031】
SRPT_Sレジスタ184、SRPT_Eレジスタ186、RPT_Cラッチ188は、D1バス311からの入力ポートとS3バス303への出力ポートを持ち、必要に応じてステップリピート時の初期設定や待避復帰が行なわれる。
【0032】
実行ステージPC(EPC)194は実行中の命令のPC値を保持し、次命令PC(NPC)191は次に実行する命令のPC値を保持する。NPC191は、実行段階でジャンプが起こった場合、JAバス323上のジャンプ先アドレス値を取り込み、リピートで分岐が起こった場合には、ラッチ185からリピートを行うブロックの先頭アドレスを取り込む。それ以外の場合には、ラッチ192を介して転送されたNPC191の値が、インクリメンタ193でインクリメントされ、NPC191に書き戻される。サブルーチンジャンプ命令の場合には、ラッチ192の値が戻り先アドレスとしてD1バス311に出力され、レジスタファイル115中のリンクレジスタとして定義されているレジスタ(仮に、レジスタR13とする)に書き戻される。また、次の命令が実行状態に入る場合には、ラッチ192の値がEPC194に転送される。実行中の命令のPC値を参照する場合には、EPC194の値がS3バス303に出力され、第1演算部116に転送される。例外や割り込み等が検出された場合には、EPC194の値がラッチ195を介してBPC196に転送される。BPC196は、D1バス311からの入力ポートとS3バス303への出力ポートを持ち、必要に応じて待避復帰が行なわれる。
【0033】
図4に、第2演算部117の詳細ブロック図を示す。第2演算部117は、レジスタファイル115と、各々S4バス304、S5バス305で結合されており、この2つのバス304,305を介してデータをレジスタファイル115から読み出す。S4バス304とS5バス305でレジスタペアの2ワードを並列に転送することも可能である。また、第2演算部117は、レジスタファイル115と、D2バス312、D3バス313で結合されており、この2つのバス312,313を介してデータをレジスタファイル115内の各レジスタに書き込むことができる。D2バス312は偶数番号のレジスタのみに、D3バス313は奇数番号のレジスタのみに各々結合されている。D2バス312とD3バス313でレジスタペアの2ワードを並列に転送することもできる。
【0034】
40ビットのALU201は、ビット番号0からビット番号7までの8ビットがアキュムレータのガードビット用加算器、ビット番号8からビット番号23までの16ビットが算術論理演算器、ビット番号24からビット番号39までの16ビットがアキュムレータの下位16ビットを加算するための加算器になっており、40ビットまでの加減算と、16ビットの論理演算を行う。
【0035】
Aラッチ202、Bラッチ203は、ALU201の40ビット入力ラッチである。Aラッチ202は、S4バス304からレジスタ値をビット番号8からビット番号23の位置に取り込むか、シフタ204を介して、アキュムレータ208の値をそのままもしくは16ビット算術右シフトした値を取り込む。シフタ205は、アキュムレータ208の値を配線206(ガードビット8ビット)、S4バス304(上位16ビット)、S5バス305(下位16ビット)を介して取り込むか、レジスタの値をS5バス305のみ、もしくは、S4バス304とS5バス305の両方を介して16ビットもしくは32ビットのデータを右詰めで取り込み、40ビットに符号拡張する。シフタ205は、入力したデータを左3ビットから右2ビットの任意のシフト量で算術シフトし出力する。Bラッチ203は、S5バス305上のデータをビット番号8からビット番号23の位置に取り込むか、乗算器211の出力、もしくは、シフタ205の出力を取り込む。Aラッチ202、Bラッチ203は、各々ゼロクリアしたり定数の値に設定したりする機能も持つ。
【0036】
ALU201の出力は、サチュレーション回路209に出力される。サチュレーション回路209は、上位16ビット、もしくは、上位下位あわせた32ビットにする際に、ガードビットを見て、各々16ビットもしくは32ビットで表現できる最大値もしくは最小値にクリッピングする機能を備える。もちろんそのまま出力する機能もある。サチュレーション回路209の出力は配線207に結合されている。
【0037】
デスティネーションオペランドがアキュムレータ208の場合には、配線207の値がアキュムレータ208に書き込まれる。デスティネーションオペランドがレジスタの場合は、配線207の値が、D2バス312やD3バス313を介して、レジスタファイル115に書き込まれる。1ワード転送の場合にはデスティネーションレジスタの番号が偶数の場合D2バス312に、奇数の場合にはD3バス313に出力される。2ワード転送の場合には、上位側の16ビットデータがD2バス312に、下位側のビットデータがD3バス313に出力される。また、転送命令、絶対値の計算、最大値設定命令や、最小値設定命令を実行するために、Aラッチ202とBラッチ203の出力が、配線207に結合されており、Aラッチ202とBラッチ203の値をアキュムレータ208やレジスタファイル115に転送することが可能である。
【0038】
プライオリティエンコーダ210は、ラッチB203の値を取り込み、固定小数点フォーマットの数を正規化するのに必要なシフト量を計算し、レジスタファイル115に書き戻すために結果をD2バス312もしくはD3バス313に出力する。
【0039】
Xラッチ212、Yラッチ213は乗算器211の入力レジスタであり、各々、S4バス304、S5バス305の16ビットの値を取り込み、17ビットにゼロ拡張もしくは符号拡張する機能を備える。乗算器211は、17ビットx17ビットの乗算器であり、Xラッチ212に格納された値とYラッチ213に格納された値との乗算を行う。積和命令や積差命令の場合には、乗算結果はPラッチ214に取り込まれ、Bラッチ203に送られる。乗算命令でデスティネーションオペランドがアキュムレータ208の場合には、乗算結果をアキュムレータ208に書き込む。
【0040】
バレルシフタ215は、40ビットもしくは16ビットのデータに対して、左右16ビットまでの算術/論理シフトが可能である。シフトデータは、アキュムレータ208の値もしくはS4バス304を介してレジスタの値がシフトデータ(SD)ラッチ217に取り込まれる。シフト量については、即値もしくはレジスタ値がS5バス305を介してシフト量(SC)ラッチ216に取り込まれる。バレルシフタ215はSDラッチ217のデータをSCラッチ216で指定されるシフト量だけ、オペレーションコードで指定されたシフトを行う。シフト結果は、サチュレーション回路209に出力され、ALUでの演算結果と同様、必要に応じてサチュレーションが行われ、配線207に出力される。配線207に出力された値は、アキュムレータ208もしくはD2バス312、D3バス313を介してレジスタファイル115に書き戻される。
【0041】
即値ラッチ218は、第2デコーダ114で生成された6ビットの即値を16ビットに拡張して保持し、S5バス305を介して演算器に転送する。ビット操作命令のビットマスクもここで生成される。
【0042】
次に本データ処理装置のパイプライン処理について説明する。図5はパイプライン処理を示す図である。本データ処理装置は、命令データのフェッチを行う命令フェッチ(IF)ステージ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クロックサイクルのスループットで実行できる。
【0043】
IFステージ401では、主として命令のフェッチ、命令キュー111の管理、リピート制御が行われる。命令フェッチ部102、内蔵命令メモリ103、外部バスインターフェイス部106、命令キュー111、PC部118のIAレジスタ181、ラッチ182、インクリメンタ183、比較器187等や制御部112のIFステージステージ制御、命令フェッチ制御、PC部118制御等を行う部分が、このIFステージ401の制御で動作する。IFステージ401は、Eステージ403のジャンプで初期化される。
【0044】
フェッチアドレスは、IAレジスタ181で保持される。Eステージ403でジャンプが起こるとJAバス323を介してジャンプ先アドレスを取り込み、初期化を行う。シーケンシャルに命令データをフェッチする場合には、インクリメンタ183でアドレスをインクリメントする。ステップリピート処理中に、比較器187でIAレジスタ181の値とSRPT_Eレジスタ186の値が一致していることが検出され、かつ、SRPT_Cレジスタ188の値が“1”より大きければ、シーケンスの切り替え制御が行われる。この場合、SRPT_Sレジスタ184に保持されている値がラッチ185、JAバス323を介してIAレジスタ181に転送される。
【0045】
IAレジスタ181の値は命令フェッチ部102に送られ、命令フェッチ部102が命令データのフェッチを行う。対応する命令データが内蔵命令メモリ103にある場合には、内蔵命令メモリ103から命令コードを読み出す。この場合、1クロックサイクルで32ビットの命令のフェッチを完了する。対応する命令データが内蔵命令メモリ103にない場合には、外部バスインターフェイス部106に命令フェッチ要求を出す。外部バスインターフェイス部106は、オペランドアクセス部104からの要求とを調停し、命令の取り込みが可能になったら、外部のメモリから命令データを取り込み、命令フェッチ部102に送る。外部バスインターフェイス部106は、最小2クロックサイクルで外部メモリのアクセスを行うことが可能である。命令フェッチ部102は取り込まれた命令を、命令キュー111に転送する。命令キュー111は2エントリのキューになっており、FIFO制御で取り込まれた命令コードを、命令デコード部119に出力する。
【0046】
Dステージ402では、命令デコード部119でオペレーションコードの解析を行い、第1演算部116、第2演算部117、PC部118等で命令の実行を行うための制御信号群を生成する。Dステージ402は、Eステージ403のジャンプで初期化される。命令キュー111から送られてくる命令コードが無効な場合には、アイドルサイクルとなり、有効な命令コードが取り込まれるまで待つ。Eステージ403が次の処理を開始できない場合には、演算器等に送る制御信号を無効化し、Eステージ403での先行命令の処理の終了を待つ。例えば、Eステージ403で実行中の命令がメモリアクセスを行う命令であり、Mステージ404でのメモリアクセスが終了していない場合にこのような状態になる。
【0047】
Dステージ402では、シーケンシャル実行を行う2命令の分割や、2サイクル実行命令のシーケンス制御も行う。さらに、スコアボードレジスタ(図示せず)を用いたロードオペランドの干渉チェックや第2演算部117での演算器の干渉チェック等も行い、干渉が検出された場合には、干渉が解消されるまで制御信号の出力を抑止する。
【0048】
<ステップリピート処理>
ステップリピート処理中であるか否かは、図6に示すプロセッサステータスワード(以下PSW)中のSRPビット43によって示される。SRPビット43に“1”がセットされているとき、ステップリピートの処理中である。SRPビット43はステップリピート命令の実行によりセットされ、ステップリピート処理の終了によってクリアされる。またPSWに対する通常のデータ転送処理によっても任意の値を設定することができ、割り込みや例外の発生時にはパックアップレジスタに待避される。ステップリピート処理の終了検出については後で説明する。
【0049】
なお、SMビット41はスタックモードを示すビットであり、SMビット41が“0”の場合は割り込みモードであることを示し、“1”の場合はユーザーモードであることを示す。PSWのビット番号5は割り込みイネーブルを指定するIEビット42であり、“0”の場合は割り込みをマスク(アサートされても無視)し、“1”の場合は割り込みを受け付ける。PSWのビット番号7はモジュロイネーブルを指定するMDビット44であり、“0”の場合はモジュロアドレッシングをディスエーブル状態にし、“1”の場合はモジュロアドレッシングをイネーブル状態にする。PSWのビット番号12は実行制御フラグ(F0フラグ)47であり、比較命令の比較結果などがこのフラグにセットされる。PSWのビット番号15はキャリー・フラグ(Cフラグ)49であり、加減算命令実行時のキャリーがこのフラグにセットされる。
【0050】
ステップリピート命令は、SRPT_Sレジスタ184、SRPT_Eレジスタ186、及ぴSRPT_Cレジスタ188に所定の値を設定すると同時に、SRPビット43に“1”をセットする命令である。図7はステップリピート命令SREPのニーモニックを示したものであり、この命令は2クロックサイクルをかけて実行される。
【0051】
第1の実行サイクルにおいて、第一演算部116はSREP命令の命令アドレス値と図7の第3項Labelで指定された値を足し合わせ、JAバスを介してこの結果をSRPT_Eレジスタ186にセットする。SREP命令の命令アドレスはEPC194からS3バス303を介して読み込まれる。図7の第3項Labelの転送経路は図示しない。これと同時にSREP命令の次の命令アドレスがNPC191から読み出され、D1バス311を介してSRPT_Sレジスタ184にセットされる。
【0052】
第2の実行サイクルにおいて、図7の第2項Rsrsで指定されたレジスタより読み出された値がS3バス303を介して第1演算部116に与えられ、この値は第一演算部116をスルーしD1バス311を介してSRPT_Cレジスタ188にセットされる。この時、SRPビット43に“1”がセットされる。ここで、ステップリピート命令SREPは、図8に示すビットマップに割り付けられるべき命令である。
【0053】
同図に示すように、フィールド81にはSREP命令であることを示すコードが、フィールド83にはRsrsで指定されたレジスタ番号が、フィールド84にはLabelで指定された値が格納される。この時、フィールド82は使用されないため“0”が格納される。また、リピート処理対象命令列の命令を幾つ実行するか予め判っている場合にはSREPI命令を用いることができる。図9にSREPI命令のニーモニックを示す。第2項にはRPT_C188に設定すべき値を指定するが、この値はフィールド82とフィールド83の両方を合せた領域に格納される。
【0054】
<実施の形態1>
図10はこの発明の実施の形態1であるデータ処理装置におけるステップリピート実行に関する制御部112の構成を示したものである。同図において、実行制御信号生成部910は、汎用レジスタや制御レジスタへの書き込み許可信号、演算フラグの更新信号、メモリヘの書き込み要求信号などを生成するブロックであり、プログラマが認識できる全リソース(ハードウェアリソース)の更新制御信号はこのブロックで生成される。レジスタからバスへの読み出し等、プログラマの認識するリソースの更新に関与しない制御信号には別のブロック(図示せず)で生成されるものもある。
【0055】
実行制御信号生成部910には、リピート終了フラグ903と、複数のデータラッチ群908を介した命令コード907及び最終命令フラグ906が与えられている。データラッチ群908は、命令フェッチステージで読み込んだ命令コード907を実行制御信号生成部913の動作するステージまでパイプライン転送するためのものである。
【0056】
データラッチ群908はデータラッチ908A〜908Dから構成され半クロック毎にパイプライン転送を行う。したがって、一つの命令コード907に着目した場合、データラッチ908Aは命令フェッチステージのクロックの“L”区間に命令コード907をラッチし、データラッチ908Bはデコードステージのクロックの“H”区間に命令コード907をラッチし、データラッチ908Cはデコードステージのクロックの“L”区間に命令コード907をラッチし、データラッチ908Dは命令実行ステージのクロックの“H”区間に命令コード907をラッチすることになる。
【0057】
リピート終了フラグ903は、ステップリピートの処理中で、かつSRPT_Cレジスタ188に当初指定された実行命令回数の命令実行を完了したことを示すものである。これはSRPT_Cレジスタ188が“0”でSRPビット43が“1”の時、アサートされる。図10に示すように、リピート終了フラグ903は、ゼロ判定器900出力とSRPフラグ43の値とのANDゲート901による論理積により求められ、その後、ラッチ902によって所望の位相に合せ込まれて出力される。なお、ゼロ判定器900はSRPT_Cレジスタ188の値が“0”の時に“1”を出力するものである。
【0058】
基本的に実行制御信号生成部910は、データラッチ群908を介して与えられた命令コード907に基いて順次実行制御信号を生成して命令コード907に規定された命令を実行させる。しかしながらリピート終了フラグ903がアサート(実行命令回数の命令実行達成状態)されている時は、命令コード907の内容に関わらず全ての実行制御信号をネゲートする。その結果、リピート終了フラグ903がアサートされている期間に実行された命令は、全てNOPと同様の動作となり無効にされる。
【0059】
一方、最終命令フラグ906は、ステップリピートの処理中であり、SRPT_Cレジスタ188に指定された命令数の実行を完了しており、かつ命令フェッチによって読み込まれた命令コード907がステップリピート処理対象命令列の最終命令であるか否かを“1”/“0”で示している。最終命令フラグ906はラッチ904を介したPC部118の比較器187出カと、リピート終了フラグ903のANDゲート905による論理積によって求められる。なお、比較器187はSRPT_Eレジスタ186とIA181とを比較し、両者の値が等しい時に“1”を出カする。
【0060】
最終命令フラグ906は対応する命令コード907とともにデータラッチ群908をパイプライン転送され、対応する命令コード907の命令実行時にSRPクリア信号909となる。SRPビット43は、SRPクリア信号909が与えられることによって“0”にクリアされる。
【0061】
図11は、図10で示した実施の形態1の制御部によるステップリピート機能を用いたFIRフィルタ処理の実現例を示したものである。図11において、命令N+6はステップリピート命令であり、SRPT_Sレジスタ184には命令N+7のアドレスが、SRPT_Eレジスタ186には命令N+12のアドレスが、SRPT_Cレジスタ188には前述したレジスタR13に格納されている値が、それぞれ設定される。なお、“||”は2つの命令を並列に実行することを示す。
【0062】
これにより命令N+7〜命令N+12の6命令が繰り返しフェッチされ、予めレジスタR13に設定されていた値(実行命令回数)に対応する回数分、命令が実行される。例えばレジスタR13に“128”が設定されていたならば、命令N+7〜N+12を21回繰り返し(小計126回)、その後、命令N+7,命令N+8を各1回(小計2回)実行し、合計で128個の命令を実行する。命令N+8に引き続いて22回目にフェッチされた命令N+9〜N+12は、実行ステージで実行制御信号生成部910命令実行制御信号の強制的ネゲートすることによりNOP化(無効化)される。レジスタR13に“127”が設定されていたならば、命令N+7〜N+12を21回と、その後命令N+7を1回実行し、合計127個の命令を実行する。そして、命令N+7に引き続いてフェッチされていた命令N+8〜N+12はNOP化される。
【0063】
図12はレジスタR13に“127”が設定されていたときの様子を示した図である。説明の簡単化のため第2演算部117で実行される命令のパイプライン動作のみを示す。命令N+12はステップリピート対象命令列の最終命令であり、その命令アドレスはSRPT_Eレジスタ186の値と一致する。▲2▼で示す命令N+12の21回目のフェッチ時にはSRPT_Cレジスタ188は“0”でないため、次に、SRPT_Sレジスタ184で示される命令N+7をフェッチする。▲3▼で示す命令N+7を実行した時点でSRPT_Cレジスタ188の値が“0”となるため、▲8▼で示す命令N+12のフェッチ後は、通常どおり命令アドレスをインクリメントして、▲9▼で示す命令N+13をフェッチする。SRPT_Cレジスタ188が“0”になってからステップリピート処理を終了する(SRPビット43が“0”になる)までに実行された▲4▼から▲8▼の命令N+8〜N+12は実行制御信号生成部910によって全てNOP化される。これらの命令はNOP化されているためE2で示されるパイプラインステージは動作しない。
【0064】
このように、実施の形態1のデータ処理装置は、ステップリピート命令実行時に、リピート終了フラグ903が達成状態を指示する(“1”)ときデータラッチ群908より受ける命令を順次無効にしている。
【0065】
したがって、ステップリピート命令で指定された命令列の命令単位の総実行回数が実行命令回数に達した後は、データラッチ群908に取り込まれた命令を確実に無効にすることができるため、命令列に含まれる命令を繰り返しながら、指定された命令単位の回数(実行命令回数)で正確に実行することができる。
【0066】
その結果、プログラム設計者は、ステップリピート処理を活用することにより、プログラム実行時に命令の実行回数が動的に決定される場合にも、容易にプログラムを作成することができる。
【0067】
<実施の形態2>
実施の形態1の構成では、ステップリピート対象命令列が多くの命令を含んでいた場合、例えば30の命令を含んでいた場合に、命令列の先頭命令を実行した時点でSRPT_Cレジスタ188の値が“0”になったならば、残り29命令はNOP化して実行されることになる。
【0068】
実施の形態2のデータ処理装置は、この様なケースを想定して、ステップリピート処理中にSRPT_Cレジスタ188の値が“0”になったならば、SRPT_Eレジスタ186の値で示される命令の次の命令(すなわち、ステップリピート命令処理後に実行すべき命令)に分岐する制御を行う装置である。
【0069】
図13は実施の形態2のデータ処理装置における制御部112の構成を示す説明図である。同図に示すように、タイミング発生器911はリピート終了フラグ903に基づいてSRPクリア信号909及び分岐用制御信号BSを生成する。なお、最終命令フラグ906が生成するラッチ904及びANDゲート905が省略された点を除いて、他の構成は図10で示した実施の形態1の制御部と同様である。
【0070】
分岐処理の実行自体は通常の分岐処理と同様に行われ、必要に応じて、IFステージあるいはDステージ以降のパイプラインステージをフラッシュする。すなわち、分岐の実行以前にフェッチされ、未だ実行されていない命令を消し去る。分岐先の命令アドレスは通常の分岐命令と同様に第1演算部116で計算され、JAバス323を介してIA181に設定される。分岐命令の場合は、S3バス303を介して与えられたEPC194の値と、図示しない経路より与えられた所望の分岐変位の加算により分岐先アドレスが求められる。ステップリピートの終了による分岐では、S3バス303を介して与えられたSRPT_Eレジスタ186と、別途与えられた即値“1”の加算により分岐先アドレスを求める。これら、一連の動作は、タイミング発生器911の生成する分岐用制御信号BS信号に基づいて、命令デコード部119(図2参照)が制御する。
【0071】
図14を用いてタイミング発生器911の動作のタイミングを説明する。サイクル1でSRPT_Cレジスタ188に指定された実行命令回数目の命令である最後の命令を実行すると、サイクル2でリピート終了フラグ903がアサートされ、アサートされたリピート終了フラグ903をトリガとしてタイミング発生器911は種々の分岐用制御信号BSを生成する。この分岐用制御信号BSによって下記の分岐処理が行われる。
【0072】
サイクル2でSRPT_Eレジスタ186の値はS3バス303に読み出される。サイクル3で、S3バス303上の値、即ちSRPT_Eレジスタ186の値は第1演算部116に読み込まれ、同じタイミングで読み込まれた即値“1”と足し合わせられる。この様に生成された分岐先命令アドレスは直ちにIA181に設定される。また、タイミング発生器911は、サイクル3の期間中、SRPクリア信号909をアサートする。
【0073】
図15は、図11においてレジスタR13に“127”が設定されていた場合の動作を示したものである。▲3▼に示す命令N+7の実行(E)によってSRPT_Cレジスタ188の値が“0”なる(このサイクルが図14のサイクル1となる)と、その次の次のサイクル、即ちNOP化された▲5▼に示す命令N+9の実行(E)サイクルに合せて命令N+13への分岐が実行される。この時、▲4▼の命令N+8と▲5▼の命令N+9はNOP化されて実行されるが、既にフェッチされていた▲6▼の命令N+10と▲7▼の命令N+11はパイプラインのフラッシュ処理によって処理を取りやめる。分岐先の▲8▼で示す命令N+13は、分岐実行の次のサイクルから命令フェッチが行われる。
【0074】
実施の形態1の図12と比較すると、1サイクル早く、ステップリピート命令処理後に実行すべき命令N+13のフェッチを開始することができる。
【0075】
このように、実施の形態2のデータ処理装置のタイミング発生器911は、リピート終了フラグ903の“1”変化時をトリガとして、ステップリピート命令処理後に実行すべき命令の取り込みを指示する分岐用制御信号BSを発生するとともに、所定のタイミングでSRPクリア信号909をアサート(実行命令回数の命令実行の達成を指示)させている。
【0076】
したがって、ステップリピート命令対象の命令列の命令単位の総実行回数が実行命令回数に達した後は、速やかに、ステップリピート命令処理後に実行すべき命令を実行することができる。
【0077】
このように、実施の形態2のデータ処理装置は、タイミング発生器911を追加する程度の極めてわずかな制御部を追加するだけで、実施の形態1で示したデータ処理装置のステップリピート命令処理性能を更に高めることができる。
【0078】
<実施の形態3>
なお、図3等で示したブロックリピート用のリソース(SRPビット43、SRPT_Sレジスタ184、SRPT_Eレジスタ186、SRPT_Cレジスタ18及びその周辺の比較器等)に加えて、公報1で示されたようなブロック内で指定された命令列を所定回数繰り返す従来のブロックリピート用のリソースを新たに別途追加してブロックリピート機能を追加することも可能である。
【0079】
例えば、図6のPSWにブロックリピートの実行の有無を示すビットを追加して、ブロックリピート処理対象命令列の先頭命令のアドレスを格納するレジスタ、ブロックリピート処理対象命令列の最終命令のアドレスを格納するレジスタ及びブロックリピート対象命令列の繰り返し実行回数を格納するレジスタを、SRPT_Sレジスタ184、SRPT_Eレジスタ186及びSRPT_Cレジスタ188と同様な接続関係となるようにPC部118にそれぞれ設け、これら3つのレジスタに対して、図3のラッチ189、デクリメンタ190、比較器187及びラッチ185に対応する周辺構成をPC部118内に追加すれば良い。
【0080】
このようにステップリピート用リソースに加え、ブロックリピート用リソースを追加したのが実施の形態3のデータ処理装置である。なお、ステップリピート機能は実施の形態1、実施の形態2のいずれの構成で実現しても良い。
【0081】
したがって、実施の形態3のデータ処理装置は、予め処理回数が決まっているリピート処理にはブロックリピート用のリソースを用いてブロックリピート処理を行わせ、処理回数が実行途中で動的に決定される場合には、図3等で示したステップリピート用のリソースを用いてステップリピート処理を実行させるという選択も可能となり、より一層プログラム作成が容易となる。また、ブロックリピートで指定した命令列の中で更にステップリピート処理を行うなどという階層利用も可能となる。
【0082】
なお、新たにリソースを追加することなく、図3等で示したステップリピート用のリソースをそのまま上記ブロックリピート用のリソースとしても用い、必要に応じてステップリピート用あるいはブロックリピート用を選択的に行うこともできる。ただし、この場合、上述した階層利用は不可能となる。また、ステップリピートとブロックリピートのいずれを実行するか識別するための手段が必要なことは言うまでもないことであるが、これは容易に実現できる。例えば、図6に示したPSWにブロックリピートの実行中であることを示すビットを追加し、PSWの状態によっていずれかを選択すればよい。
【0083】
<実施の形態4>
最近のデータ処理装置では、フラグの値に応じてフェッチした命令をNOP化する機能、いわゆる条件実行機能を有しているものがある。例えば、国際公開番号WO98/33115号公報(以下、「公報2」と略す。)の図27等に基本的な構成が開示されている。この様な条件実行を実現するためには、PSWに保持したフラグ情報及び実行条件命令に規定された実行条件に基いて、上記実行条件命令に対応づけられた所定の命令を実行すべきかNOP化すべきかを判定するための実行条件判定部と、与えられた上記所定の命令の命令コードと上記実行条件判定部の判定結果に基いて最終的な命令実行制御信号を生成する実行制御信号生成部があれば良い。
【0084】
また、上記公報2では、一方のサブ命令が他方のサブ命令の実行条件を指定する、という方法で条件実行を実現している。さらに、他の方法として、例えば、「"ACORN RISC MACHINE FAMILY DATA MANUAL, page 2-29" VLSI Technology inc」に開示された命令のように、所定の命令を規定する命令ワード内の特定フィールドに実行条件を併せて指定する、という方法で条件実行を実現するものもある。上記文献の条件実行を実現するためには、PSWに保持したフラグ情報及び命令ワード内に記述された実行条件に基いて、上記所定の命令を実行すべきかNOP化すべきかを判定するための実行条件判定部と、与えられた上記所定の命令の命令コードと上記実行条件判定部の判定結果に基いて最終的な命令実行制御信号を生成する実行制御信号生成部があれば良い。
【0085】
ステップリピート機能と上述した条件実行機能の両方を持ったデータ処理装置を想定する場合、命令をNOP化するための実行制御信号生成部は、両方の機能で共有させることができる。これは、リピート終了フラグ903と実行条件判定結果の簡単な論理演算結果を実行制御信号生成部に与えるだけで実現できる。
【0086】
図16は、この発明の実施の形態4のデータ処理装置における制御部の構成を示す説明図である。公報2の図27では実行条件判定部と実行制御信号生成部が2個ずつあり、4本の実行抑止信号がこれらを接続する場合について述べている。図16では簡単化のために、実行制御信号生成部910と実行条件判定部913とを1個ずつで構成している。
【0087】
実行条件判定部913は、命令コードの一部により指定される実行条件に基づいてPSW部171の保持するフラグ値を判定し、実行条件成立の有/無に基づき、実行(“0”)/抑止(“1”)を指示するの実行条件抑止信号915を出力する。ORゲート914は、リピート終了フラグ903及び実行条件抑止信号915を論理和演算して、その演算結果を最終実行条件抑止信号916として出力する。したがって、リピート終了フラグ903あるいは実行条件抑止信号915が“1”であれば、最終実行条件抑止信号916が“1”となり、抑止を指示する。なお、リピート終了フラグ903の生成用の構成は、図10で示した実施の形態1の構成でも、図13で示した実施の形態2の構成でも良い。
【0088】
実行制御信号生成部910は、最終実行条件抑止信号916が“1”であれば、命令実行制御信号を生成しないように動作する。
【0089】
このように、ステップリピート機能と条件実行機能は、ステップリピート機能用のハードウェア構成から、ORゲート914を追加するだけで、実行制御信号生成部910を共有することができる。
【0090】
条件実行機能は分岐によって生じるペナルティを削減できることから、情報処理装置の性能を向上させる有効な手段である。よって実施の形態4は、ステップリピート機能と条件実行機能を併せ持つことにより、極めて高い処理性能を持ったデータ処理装置を実現することができる。また、両機能は命令のNOP化装置を共有することができるため、これらを併せ持つことはハードウェアコストの観点からも極めて有効である。
【0091】
【発明の効果】
この発明における請求項1記載のデータ処理装置の命令実行制御手段は、ステップリピート命令実行時に、実行命令回数判定結果が未達成状態を指示するとき命令取り込み手段より受ける命令を順次実行させ、実行命令回数判定結果が達成状態を指示するとき命令取り込み手段より受ける命令を順次無効にする。
【0092】
したがって、第1〜第Nの命令の総実行回数が実行命令回数に達した後は、命令取り込み手段に既に取り込まれた第1〜第Nの命令を確実に無効にすることができるため、命令列(第1〜第Nの命令)に含まれる命令を繰り返しながら、指定された命令単位の回数(実行命令回数)で正確に実行することができる。
【0093】
請求項2記載のデータ処理装置の実行命令回数判定手段は、(K+1)回目の第Lの命令(実行命令回数M個目に実行される命令)の実行中に実行命令回数判定結果の指示内容を達成状態にし、命令実行制御手段は、達成状態を指示する実行命令判定結果に応答して、(K+1)回目の第(L+1)〜第Nの命令の実行を順次無効にしている。
【0094】
したがって、第1〜第Nの命令の総実行回数が実行命令回数に達した後は、命令取り込み手段に既に取り込まれた第(L+1)〜第Nの命令を確実に無効にすることができる。
【0095】
請求項3記載のデータ処理装置のタイミング制御手段は、実行回数判定結果の指示内容の未達成状態から達成状態への変化時をトリガとして、ステップリピート命令処理後に実行すべき命令の取り込みを指示する制御信号を発生するとともに、ステップリピート命令実行情報を非実行状態に設定する。
【0096】
したがって、第1〜第Nの命令の総実行回数が実行命令回数に達した後は、速やかに、ステップリピート命令処理後に実行すべき命令を実行することができる。
【0097】
請求項4記載のデータ処理装置はブロックリピート機能をさらに有するため、プログラム設計者は必要に応じてブロックリピート処理とステップリピート処理を使い分けることができる。
【0098】
請求項5記載のデータ処理装置は、ステップリピート機能と条件実行機能との間で命令取り込み手段と命令実行制御手段の共有を図ることにより、ハードウェアコストを必要最小限に抑えながら、ステップリピート機能と条件実行機能とを実現させることができる。
【0099】
請求項6記載のデータ処理装置において、プログラム中にステップリピート命令に連続して第1〜第Nの命令が順に記載され、ステップリピート命令は、第Nの命令のアドレス情報をさらに有している。
【0100】
したがって、ステップリピート命令の実行時に、ステップリピート命令の次の命令のアドレスを第1の命令のアドレスとして認識し、第Nの命令のアドレス情報から第Nの命令のアドレスを認識することにより、ステップリピート命令実行中の第Nの命令後に第1の命令を行うアドレス制御を行うことができる。
【図面の簡単な説明】
【図1】 この発明の実施の形態のデータ処理装置の構成を示すブロック図である。
【図2】 この発明の実施の形態のデータ処理装置の第1演算部の詳細を示すブロック図である。
【図3】 この発明の実施の形態のデータ処理装置のPC部の詳細を示すブロック図である。
【図4】 この発明の実施の形態のデータ処理装置の第2演算部の詳細ブロック図である。
【図5】 この発明の実施の形態のデータ処理装置のパイプライン処理を示す模式図である。
【図6】 PSW部の構成を示す説明図である。
【図7】 ステップリピート命令のニモニックを示す説明図である。
【図8】 ステップリピート命令のフォーマットを示す説明図である。
【図9】 ステップリピート命令の他のニモニックを示す説明図である。
【図10】 実施の形態1の制御部の構成を示す説明図である。
【図11】 ステップリピート機能を用いたプログラム例を示す説明図である。
【図12】 実施の形態1の制御部によるパイプライン制御内容を示す説明図である。
【図13】 実施の形態2の制御部の構成を示す説明図である。
【図14】 実施の形態2の制御部の動作説明用のタイミング図である。
【図15】 実施の形態1の制御部によるパイプライン制御内容を示す説明図である。
【図16】 実施の形態2の制御部の構成を示す説明図である。
【符号の説明】
43 SRPビット、184 SRPT_Sレジスタ、186 SRPT_Eレジスタ、171 PSW部、187 比較器(CMP)、188 SRPT_Cレジスタ、900 ゼロ判定器、910 実行制御信号生成部、911 タイミング発生器、913 実行条件判定部913。
【発明の属する技術分野】
この発明は、高性能なデータ処理装置に関するものであり、特に、そのリピート処理機能に関する。
【0002】
【従来の技術】
デジタル信号処理等では、同じ命令を繰り返し実行することが多い。幾つかのDSPではこの様な処理を効率よく実行するため、専用の命令と専用のハードウェアを設けている。
【0003】
これはブロックリピート等と呼ばれる処理であり、ある制御レジスタで指定された命令列を、別の制御レジスタで指定された回数だけ繰り返し実行するものである。ブロックリピートは、例えば、「TMS320C5x User’s Guide,1993、3・6・5節」に開示されている。この機能により、繰り返し回数の計数、計数結果の判定、及び繰り返し実行する命令の末尾から先頭への分岐の為の命令等が不要となる。また、同様の例は特開平9−212361号公報(以下、「公報1」と略する)にも開示されている。
【0004】
【発明が解決しようとする課題】
上記公報1では、FIRフィルタを例にとってブロックリピート命令の使用形態を示している(公報1中の図14)。この例は、積和演算の総数が予め256回と判っていた場合であるが、積和演算の総数が予め判っていなかった場合はより複雑な処理が必要となる。詳細は省くが、積和演算総数をリピートブロック内の命令数6で割った商をリピート回数に指定し、その剰余をリピートブロックの後に付け足す、複雑なプログラム作成が必要になる。
【0005】
この発明は上記問題点を解決するためになされたもので、所定の命令列に含まれる命令を繰り返しながら、指定された命令単位の回数で正確に実行することが可能なデータ処理装置を得ることを目的とする。
【0006】
【課題を解決するための手段】
この発明に係る請求項1記載のデータ処理装置は、プログラムにしたがって動作し、前記プログラムに記載中の、第1〜第N(N≧2)命令及び実行命令回数M(M≧1)が指定可能なステップリピート命令に応答して、前記第1〜第Nの命令をK(K=M/Nの商)回繰り返した後、第1〜第L(L=M/Nの余り)の命令を実行するステップリピート機能を有し、前記ステップリピート機能は、前記ステップリピート命令実行時に、前記第1〜第Nの命令の各命令の実行毎に命令実行カウント数をカウントし、該命令実行カウント数が前記実行命令回数に達した達成状態か/達成していない未達成状態かを示す実行命令回数判定結果を出力する実行命令回数判定手段と、前記ステップリピート命令実行時に、第1,第2,…第N,第1,第2の順に、前記第1〜第Nの命令を繰り返し取り込む命令取り込み手段と、前記命令取り込み手段に取り込まれた命令を順次受け、前記ステップリピート命令実行時に、前記実行命令回数判定結果が前記未達成状態を指示するとき前記命令取り込み手段より受ける命令を順次実行させ、前記実行命令回数判定結果が前記達成状態を指示するとき前記命令取り込み手段より受ける命令を無効にする命令実行制御手段とを備えている。
【0007】
請求項2記載のデータ処理装置において、前記ステップリピート機能は、前記ステップリピート命令の実行中である実行状態か/実行中でない非実行状態かを示すステップリピート命令実行情報を格納する情報格納手段をさらに備え、前記ステップリピート命令実行情報は前記ステップリピート命令実行開始時に前記実行状態に設定され、前記命令取り込み手段は、L(L=M/Nの余り)が“0”でないとき、前記第1〜第Nの命令を(K+1)回繰り返し取り込み、(K+1)回目に取り込んだ第Nの命令の前記命令実行制御手段への付与時に前記ステップリピート命令実行情報を前記非実行状態に設定し、前記実行命令回数判定手段は、(K+1)回目の前記第Lの命令の実行中に前記実行命令回数判定結果の指示内容を前記達成状態にし、前記命令実行制御手段は、前記達成状態を指示する実行命令判定結果に応答して、(K+1)回目の第(L+1)〜第Nの命令を順次無効にしている。
【0008】
請求項3記載のデータ処理装置において、前記ステップリピート機能は、前記ステップリピート命令の実行中である実行状態か/実行中でない非実行状態かを示すステップリピート命令実行情報を格納する情報格納手段をさらに備え、前記ステップリピート命令実行情報は前記ステップリピート命令実行開始時に前記実行状態に設定され、前記実行回数判定結果を受け、前記実行回数判定結果の指示内容の前記未達成状態から前記達成状態への変化時をトリガとして、前記ステップリピート命令処理後に実行すべき命令の取り込みを指示する制御信号を発生するとともに、前記ステップリピート命令実行情報を前記非実行状態に設定するタイミング制御手段をさらに備えている。
【0009】
請求項4記載のデータ処理装置は、複数の命令からなる命令列及び繰り返し実行回数が指定可能なブロックリピート命令に応答して、前記命令列を前記繰り返し実行回数繰り返して実行可能なブロックリピート機能を前記ステップリピート機能と独立してさらに有している。
【0010】
請求項5記載のデータ処理装置は、所定の命令と該所定の命令の実行条件を規定した実行条件指定命令とに応答して、条件判定を行って前記所定の命令の実行/抑止を行う条件実行機能をさらに有し、前記条件実行機能は、条件用情報を格納する条件用情報格納手段と、前記実行条件指定命令に応答して、前記条件用情報が前記実行条件を満足するか否かに基づき、前記所定の命令を実行するか抑止するかを制御する実行抑止信号を出力する実行条件判定手段とを備えるとともに、前記命令取り込み手段及び前記命令実行制御手段を前記ステップリピート機能と共有し、前記命令取り込み手段は、前記実行条件指定命令の前記実行条件判定手段の判定処理に並行して前記所定の命令を取り込み、前記命令実行制御手段は、前記実行抑止信号が抑止を指示するときに、前記命令取り込み手段より付与される前記所定の命令を無効にしている。
【0011】
請求項6記載のデータ処理装置において、前記プログラム中に前記ステップリピート命令に連続して前記第1〜第Nの命令が順に記載され、前記ステップリピート命令は、前記第Nの命令のアドレス情報をさらに有している。
【0012】
【発明の実施の形態】
<基本構成>
図1に本データ処理装置100の機能ブロック構成を示す。データ処理装置100は、MPUコア部101と、MPUコア部101からの要求により命令データのアクセスを行う命令フェッチ部102、内蔵命令メモリ103、MPUコア部101からの要求によりオペランドデータのアクセスを行うオペランドアクセス部104、内蔵データメモリ105、命令フェッチ部102とオペランドアクセス部104からの要求を調停し、データ処理装置100の外部メモリのアクセス等を行う外部バスインターフェイス部106からなる。
【0013】
MPUコア部101は、命令キュー111、制御部112、レジスタファイル115、第1演算部116、第2演算部117、PC部118からなる。
【0014】
命令キュー111は、2エントリの32ビット命令バッファと有効ビット、及び入出力ポインタ等からなり、FIFO(先入れ先出し)方式で制御される。命令キュー111は、命令フェッチ部102でフェッチされた命令データを一時保持し、制御部112に送る。
【0015】
制御部112は、前述の命令キュー111の制御、パイプライン制御、命令の実行、命令フェッチ部102やオペランドアクセス部104とのインターフェイスなど、MPUコア部101のすべての制御を行う。また、制御部112には、命令キュー111から送られる命令コードをデコードするための命令デコード部119があり、2つのデコーダを含む。第1デコーダ113は、第1演算部116で実行する命令をデコードし、第2デコーダ114は、第2演算部117で実行する命令をデコードする。
【0016】
2つのショート命令をシーケンシャルに実行する場合、先行して実行される命令のデコード中に後で実行する側の命令が図示していないプリデコーダでデコードされ、どちらのデコーダでデコードすべきかを判定する。後で実行される命令がどちらのデコーダでも処理できる命令の場合は第1デコーダ113でデコードする。先行する命令のデコード後、後で実行する命令の命令コードが選択されたデコーダに取り込まれ、解析される。
【0017】
レジスタファイル115は、複数のレジスタの値を保持し、第1演算部116、第2演算部117、PC部118、オペランドアクセス部104に複数のバスで結合されている。
【0018】
図2に、第1演算部116の詳細ブロック構成を示す。第1演算部116は、レジスタファイル115と、各々S1バス301、S2バス302、S3バス303によって結合されており、これら3つのバス301〜303を介してレジスタファイル115からデータを読み出し、演算器等にリードオペランドとなるデータやストアデータを転送する。S1バス301は偶数番号のレジスタにのみに、S2バス302は奇数番号のレジスタにのみに結合されており、S1バス301とS2バス302でレジスタペアの2ワードを並列に転送することもできる。S3バス303は全レジスタに結合されている。
【0019】
また、第1演算部116は、レジスタファイル115と、各々D1バス311、Wバス314で結合されており、D1バス311を介して演算結果や転送データをレジスタファイル115に転送し、Wバス314でロードしたバイトデータをレジスタファイル115に転送する。D1バス311、Wバス314とも、全レジスタに結合されている。さらに、レジスタファイル115はオペランドアクセス部104と32ビットのODバス322で結合されており、1ワードのデータもしくはレジスタペアの2ワードを並列に転送することが可能である。ODバス322の上位/下位16ビットは、任意のレジスタファイルに書き込みができるようにレジスタファイル115の全レジスタに結合されている。
【0020】
AAラッチ151、ABラッチ152は、ALU153の入力ラッチである。AAラッチ151は、S1バス301、S2バス302もしくはS3バス303を介して読み出されたレジスタ値を取り込む。同ラッチ151は、ゼロクリアする機能も備えている。ABラッチ152は、S3バス303を介して読み出されたレジスタ値もしくは第1デコーダ113でデコードの結果生成された16ビットの即値を取り込み、また、ゼロクリアする機能も備えている。
【0021】
ALU153では、主として転送、比較、算術論理演算、オペランドアドレスの計算/転送、オペランドアドレス値のインクリメント/デクリメント、ジャンプ先アドレスの計算/転送等が行われる。演算結果やアドレスモディファイの結果はセレクタ155、D1バス311を介して、レジスタファイル115中の命令で指定されたレジスタに書き戻される。また、指定された条件が成立した場合には“1”を不成立の場合には“0”をレジスタに書き込む条件セット命令を実行するために、セレクタ155は演算結果の最下位ビットに制御部112から出力されたデータを埋め込む機能を備える。この場合、演算結果は“0”が出力されるように制御される。AOラッチ154は、オペランドのアドレスを保持するラッチであり、ALU153でのアドレス計算結果もしくはAAラッチ151に保持されたベースアドレスの値を選択的に保持し、OAバス321を介してオペランドアクセス部104に出力する。また、ジャンプ先アドレスやリピートエンドアドレスを計算した場合には、ALU153の出力が、JAバス323を介してPC部118に転送される。
【0022】
MOD_S156とMOD_E157とは、それぞれ図1のレジスタCR10及びCR11に相当する制御レジスタである。比較器158は、MOD_E157の値とS3バス303上のベースアドレスの値とを比較して比較結果を制御部112に送る。モジュロアドレッシングがイネーブル状態で、ポストインクリメント/デクリメント付きのレジスタ間接モードで、比較器158の比較結果が一致した場合には、ラッチ159に保持されているMOD_S156の値がセレクタ155、D1バス311を介して、レジスタファイル115中のベースアドレスレジスタとして指定されたレジスタに書き戻される。
【0023】
ストアデータ(SD)レジスタ160は、16ビットのレジスタ2本からなり、S1バス301もしくはS2バス302の一方、もしくは、S1バス301とS2バス302の両方に出力されたストアデータを一時保持する。SDレジスタ160に保持されたデータは、ラッチ161を介して整置回路162に転送される。整置回路162では、オペランドのアドレスに従って、ストアデータが32ビット境界に整置され、ラッチ163、ODバス322を介してオペランドアクセス部104に出力される。
【0024】
また、オペランドアクセス部104でロードされたバイトデータは、ODバス322を介して、16ビットのロードデータ(LD)レジスタ164に取り込まれる。LDレジスタ164の値は、ラッチ165を介して、整置回路166に転送される。整置回路166では、バイト整置及びバイトデータのゼロ/符号拡張を行う。整置、拡張後のデータが、Wバス314を介してレジスタファイル115中の指定されたレジスタに書き込まれる。1ワード(16ビット)ロード、2ワード(32ビット)ロードの場合にはLDレジスタを介さず、ODバス322からレジスタファイル115にロードした値が直接書き込まれる。
【0025】
制御部112中のPSW部171は図2のPSWラッチ172や、PSW更新回路等からなり、演算結果や命令の実行によりPSWラッチ172の値を更新する。PSWラッチ172に値を転送する場合、S3バス303に出力されたデータがTPSWラッチ167を介して、必要なビット(アサインされているビット)のみ転送される。PSWラッチ172の値を読み出す場合には、PSW部171からD1バス311に出力され、レジスタファイル115に書き込まれる。例外処理時には、D1バス311に出力されたPSWの値がBPSWラッチ168に書き込まれる。BPSWラッチ168の値をレジスタファイル115に転送する場合には、BPSWラッチ168の値はS3バス303に読み出され、レジスタファイルなど必要な場所に転送される。アサインされていないビットは強制的に“0”がS3バス303に出力される。例外からの復帰時には、BPSWラッチ168の値は、直接TPSWラッチ167を介して、必要なビット(アサインされているビット)のみPSWラッチ172に転送される。
【0026】
図3は、PC部118の詳細ブロック図である。命令アドレス(IA)レジスタ181は、次にフェッチする命令のアドレスを保持し、次にフェッチする命令のアドレスを命令フェッチ部102に出力する。引き続き後続の命令をフェッチする場合には、IAレジスタ181からラッチ182を介して転送されたアドレス値がインクリメンタ183で1インクリメントされて、IAレジスタ181に書き戻される。ジャンプやリピート等によりシーケンスが切り替わる場合には、IAレジスタ181はJAバス323を介して転送されるジャンプ先アドレス、リピートブロック開始アドレスを取り込む。
【0027】
SRPT_Sレジスタ184、SRPT_Eレジスタ186、SRPT_Cレジスタ188はステップリピート制御用の制御レジスタである。SRPT_Sレジスタ184はステップリピート処理対象命令列の先頭アドレスを格納するレジスタ、SRPT_Eレジスタ186はステップリピート処理対象命令列の最終アドレスを格納するレジスタ、SRPT_Cレジスタ188はステップリピート対象命令列に含まれる命令単位の実行命令回数を格納するレジスタである。
【0028】
最終アドレスは、ステップリピート命令処理時に第1演算部116で計算され、JAバス323を介してSRPT_Eレジスタ186に取り込まれる。比較器187は、ステップリピートを行うブロックの最終命令のアドレスを保持するSRPT_Eレジスタ186の値と、フェッチアドレスを保持しているIAレジスタ181の値とを比較し、その比較結果を制御部112に出力する。
【0029】
もし、ステップリピート処理中であり、ステップリピートする回数を保持するSRPT_Cレジスタ188の値が“1”より大きい場合、SRPT_Sレジスタ184に保持されているステップリピートを行うブロックの開始アドレスが、ラッチ185、JAバス323を介して、IAレジスタ181に転送される。
【0030】
ステップリピート処理中は、ステップリピート群の命令列の一つの命令が実行されるたびに、SRPT_Cレジスタ188の値は、ラッチ189を介してデクリメンタ190で“1”だけデクリメントされる。デクリメントした値が、“0”であった場合にはそれ以上のデクリメントは行わない。
【0031】
SRPT_Sレジスタ184、SRPT_Eレジスタ186、RPT_Cラッチ188は、D1バス311からの入力ポートとS3バス303への出力ポートを持ち、必要に応じてステップリピート時の初期設定や待避復帰が行なわれる。
【0032】
実行ステージPC(EPC)194は実行中の命令のPC値を保持し、次命令PC(NPC)191は次に実行する命令のPC値を保持する。NPC191は、実行段階でジャンプが起こった場合、JAバス323上のジャンプ先アドレス値を取り込み、リピートで分岐が起こった場合には、ラッチ185からリピートを行うブロックの先頭アドレスを取り込む。それ以外の場合には、ラッチ192を介して転送されたNPC191の値が、インクリメンタ193でインクリメントされ、NPC191に書き戻される。サブルーチンジャンプ命令の場合には、ラッチ192の値が戻り先アドレスとしてD1バス311に出力され、レジスタファイル115中のリンクレジスタとして定義されているレジスタ(仮に、レジスタR13とする)に書き戻される。また、次の命令が実行状態に入る場合には、ラッチ192の値がEPC194に転送される。実行中の命令のPC値を参照する場合には、EPC194の値がS3バス303に出力され、第1演算部116に転送される。例外や割り込み等が検出された場合には、EPC194の値がラッチ195を介してBPC196に転送される。BPC196は、D1バス311からの入力ポートとS3バス303への出力ポートを持ち、必要に応じて待避復帰が行なわれる。
【0033】
図4に、第2演算部117の詳細ブロック図を示す。第2演算部117は、レジスタファイル115と、各々S4バス304、S5バス305で結合されており、この2つのバス304,305を介してデータをレジスタファイル115から読み出す。S4バス304とS5バス305でレジスタペアの2ワードを並列に転送することも可能である。また、第2演算部117は、レジスタファイル115と、D2バス312、D3バス313で結合されており、この2つのバス312,313を介してデータをレジスタファイル115内の各レジスタに書き込むことができる。D2バス312は偶数番号のレジスタのみに、D3バス313は奇数番号のレジスタのみに各々結合されている。D2バス312とD3バス313でレジスタペアの2ワードを並列に転送することもできる。
【0034】
40ビットのALU201は、ビット番号0からビット番号7までの8ビットがアキュムレータのガードビット用加算器、ビット番号8からビット番号23までの16ビットが算術論理演算器、ビット番号24からビット番号39までの16ビットがアキュムレータの下位16ビットを加算するための加算器になっており、40ビットまでの加減算と、16ビットの論理演算を行う。
【0035】
Aラッチ202、Bラッチ203は、ALU201の40ビット入力ラッチである。Aラッチ202は、S4バス304からレジスタ値をビット番号8からビット番号23の位置に取り込むか、シフタ204を介して、アキュムレータ208の値をそのままもしくは16ビット算術右シフトした値を取り込む。シフタ205は、アキュムレータ208の値を配線206(ガードビット8ビット)、S4バス304(上位16ビット)、S5バス305(下位16ビット)を介して取り込むか、レジスタの値をS5バス305のみ、もしくは、S4バス304とS5バス305の両方を介して16ビットもしくは32ビットのデータを右詰めで取り込み、40ビットに符号拡張する。シフタ205は、入力したデータを左3ビットから右2ビットの任意のシフト量で算術シフトし出力する。Bラッチ203は、S5バス305上のデータをビット番号8からビット番号23の位置に取り込むか、乗算器211の出力、もしくは、シフタ205の出力を取り込む。Aラッチ202、Bラッチ203は、各々ゼロクリアしたり定数の値に設定したりする機能も持つ。
【0036】
ALU201の出力は、サチュレーション回路209に出力される。サチュレーション回路209は、上位16ビット、もしくは、上位下位あわせた32ビットにする際に、ガードビットを見て、各々16ビットもしくは32ビットで表現できる最大値もしくは最小値にクリッピングする機能を備える。もちろんそのまま出力する機能もある。サチュレーション回路209の出力は配線207に結合されている。
【0037】
デスティネーションオペランドがアキュムレータ208の場合には、配線207の値がアキュムレータ208に書き込まれる。デスティネーションオペランドがレジスタの場合は、配線207の値が、D2バス312やD3バス313を介して、レジスタファイル115に書き込まれる。1ワード転送の場合にはデスティネーションレジスタの番号が偶数の場合D2バス312に、奇数の場合にはD3バス313に出力される。2ワード転送の場合には、上位側の16ビットデータがD2バス312に、下位側のビットデータがD3バス313に出力される。また、転送命令、絶対値の計算、最大値設定命令や、最小値設定命令を実行するために、Aラッチ202とBラッチ203の出力が、配線207に結合されており、Aラッチ202とBラッチ203の値をアキュムレータ208やレジスタファイル115に転送することが可能である。
【0038】
プライオリティエンコーダ210は、ラッチB203の値を取り込み、固定小数点フォーマットの数を正規化するのに必要なシフト量を計算し、レジスタファイル115に書き戻すために結果をD2バス312もしくはD3バス313に出力する。
【0039】
Xラッチ212、Yラッチ213は乗算器211の入力レジスタであり、各々、S4バス304、S5バス305の16ビットの値を取り込み、17ビットにゼロ拡張もしくは符号拡張する機能を備える。乗算器211は、17ビットx17ビットの乗算器であり、Xラッチ212に格納された値とYラッチ213に格納された値との乗算を行う。積和命令や積差命令の場合には、乗算結果はPラッチ214に取り込まれ、Bラッチ203に送られる。乗算命令でデスティネーションオペランドがアキュムレータ208の場合には、乗算結果をアキュムレータ208に書き込む。
【0040】
バレルシフタ215は、40ビットもしくは16ビットのデータに対して、左右16ビットまでの算術/論理シフトが可能である。シフトデータは、アキュムレータ208の値もしくはS4バス304を介してレジスタの値がシフトデータ(SD)ラッチ217に取り込まれる。シフト量については、即値もしくはレジスタ値がS5バス305を介してシフト量(SC)ラッチ216に取り込まれる。バレルシフタ215はSDラッチ217のデータをSCラッチ216で指定されるシフト量だけ、オペレーションコードで指定されたシフトを行う。シフト結果は、サチュレーション回路209に出力され、ALUでの演算結果と同様、必要に応じてサチュレーションが行われ、配線207に出力される。配線207に出力された値は、アキュムレータ208もしくはD2バス312、D3バス313を介してレジスタファイル115に書き戻される。
【0041】
即値ラッチ218は、第2デコーダ114で生成された6ビットの即値を16ビットに拡張して保持し、S5バス305を介して演算器に転送する。ビット操作命令のビットマスクもここで生成される。
【0042】
次に本データ処理装置のパイプライン処理について説明する。図5はパイプライン処理を示す図である。本データ処理装置は、命令データのフェッチを行う命令フェッチ(IF)ステージ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クロックサイクルのスループットで実行できる。
【0043】
IFステージ401では、主として命令のフェッチ、命令キュー111の管理、リピート制御が行われる。命令フェッチ部102、内蔵命令メモリ103、外部バスインターフェイス部106、命令キュー111、PC部118のIAレジスタ181、ラッチ182、インクリメンタ183、比較器187等や制御部112のIFステージステージ制御、命令フェッチ制御、PC部118制御等を行う部分が、このIFステージ401の制御で動作する。IFステージ401は、Eステージ403のジャンプで初期化される。
【0044】
フェッチアドレスは、IAレジスタ181で保持される。Eステージ403でジャンプが起こるとJAバス323を介してジャンプ先アドレスを取り込み、初期化を行う。シーケンシャルに命令データをフェッチする場合には、インクリメンタ183でアドレスをインクリメントする。ステップリピート処理中に、比較器187でIAレジスタ181の値とSRPT_Eレジスタ186の値が一致していることが検出され、かつ、SRPT_Cレジスタ188の値が“1”より大きければ、シーケンスの切り替え制御が行われる。この場合、SRPT_Sレジスタ184に保持されている値がラッチ185、JAバス323を介してIAレジスタ181に転送される。
【0045】
IAレジスタ181の値は命令フェッチ部102に送られ、命令フェッチ部102が命令データのフェッチを行う。対応する命令データが内蔵命令メモリ103にある場合には、内蔵命令メモリ103から命令コードを読み出す。この場合、1クロックサイクルで32ビットの命令のフェッチを完了する。対応する命令データが内蔵命令メモリ103にない場合には、外部バスインターフェイス部106に命令フェッチ要求を出す。外部バスインターフェイス部106は、オペランドアクセス部104からの要求とを調停し、命令の取り込みが可能になったら、外部のメモリから命令データを取り込み、命令フェッチ部102に送る。外部バスインターフェイス部106は、最小2クロックサイクルで外部メモリのアクセスを行うことが可能である。命令フェッチ部102は取り込まれた命令を、命令キュー111に転送する。命令キュー111は2エントリのキューになっており、FIFO制御で取り込まれた命令コードを、命令デコード部119に出力する。
【0046】
Dステージ402では、命令デコード部119でオペレーションコードの解析を行い、第1演算部116、第2演算部117、PC部118等で命令の実行を行うための制御信号群を生成する。Dステージ402は、Eステージ403のジャンプで初期化される。命令キュー111から送られてくる命令コードが無効な場合には、アイドルサイクルとなり、有効な命令コードが取り込まれるまで待つ。Eステージ403が次の処理を開始できない場合には、演算器等に送る制御信号を無効化し、Eステージ403での先行命令の処理の終了を待つ。例えば、Eステージ403で実行中の命令がメモリアクセスを行う命令であり、Mステージ404でのメモリアクセスが終了していない場合にこのような状態になる。
【0047】
Dステージ402では、シーケンシャル実行を行う2命令の分割や、2サイクル実行命令のシーケンス制御も行う。さらに、スコアボードレジスタ(図示せず)を用いたロードオペランドの干渉チェックや第2演算部117での演算器の干渉チェック等も行い、干渉が検出された場合には、干渉が解消されるまで制御信号の出力を抑止する。
【0048】
<ステップリピート処理>
ステップリピート処理中であるか否かは、図6に示すプロセッサステータスワード(以下PSW)中のSRPビット43によって示される。SRPビット43に“1”がセットされているとき、ステップリピートの処理中である。SRPビット43はステップリピート命令の実行によりセットされ、ステップリピート処理の終了によってクリアされる。またPSWに対する通常のデータ転送処理によっても任意の値を設定することができ、割り込みや例外の発生時にはパックアップレジスタに待避される。ステップリピート処理の終了検出については後で説明する。
【0049】
なお、SMビット41はスタックモードを示すビットであり、SMビット41が“0”の場合は割り込みモードであることを示し、“1”の場合はユーザーモードであることを示す。PSWのビット番号5は割り込みイネーブルを指定するIEビット42であり、“0”の場合は割り込みをマスク(アサートされても無視)し、“1”の場合は割り込みを受け付ける。PSWのビット番号7はモジュロイネーブルを指定するMDビット44であり、“0”の場合はモジュロアドレッシングをディスエーブル状態にし、“1”の場合はモジュロアドレッシングをイネーブル状態にする。PSWのビット番号12は実行制御フラグ(F0フラグ)47であり、比較命令の比較結果などがこのフラグにセットされる。PSWのビット番号15はキャリー・フラグ(Cフラグ)49であり、加減算命令実行時のキャリーがこのフラグにセットされる。
【0050】
ステップリピート命令は、SRPT_Sレジスタ184、SRPT_Eレジスタ186、及ぴSRPT_Cレジスタ188に所定の値を設定すると同時に、SRPビット43に“1”をセットする命令である。図7はステップリピート命令SREPのニーモニックを示したものであり、この命令は2クロックサイクルをかけて実行される。
【0051】
第1の実行サイクルにおいて、第一演算部116はSREP命令の命令アドレス値と図7の第3項Labelで指定された値を足し合わせ、JAバスを介してこの結果をSRPT_Eレジスタ186にセットする。SREP命令の命令アドレスはEPC194からS3バス303を介して読み込まれる。図7の第3項Labelの転送経路は図示しない。これと同時にSREP命令の次の命令アドレスがNPC191から読み出され、D1バス311を介してSRPT_Sレジスタ184にセットされる。
【0052】
第2の実行サイクルにおいて、図7の第2項Rsrsで指定されたレジスタより読み出された値がS3バス303を介して第1演算部116に与えられ、この値は第一演算部116をスルーしD1バス311を介してSRPT_Cレジスタ188にセットされる。この時、SRPビット43に“1”がセットされる。ここで、ステップリピート命令SREPは、図8に示すビットマップに割り付けられるべき命令である。
【0053】
同図に示すように、フィールド81にはSREP命令であることを示すコードが、フィールド83にはRsrsで指定されたレジスタ番号が、フィールド84にはLabelで指定された値が格納される。この時、フィールド82は使用されないため“0”が格納される。また、リピート処理対象命令列の命令を幾つ実行するか予め判っている場合にはSREPI命令を用いることができる。図9にSREPI命令のニーモニックを示す。第2項にはRPT_C188に設定すべき値を指定するが、この値はフィールド82とフィールド83の両方を合せた領域に格納される。
【0054】
<実施の形態1>
図10はこの発明の実施の形態1であるデータ処理装置におけるステップリピート実行に関する制御部112の構成を示したものである。同図において、実行制御信号生成部910は、汎用レジスタや制御レジスタへの書き込み許可信号、演算フラグの更新信号、メモリヘの書き込み要求信号などを生成するブロックであり、プログラマが認識できる全リソース(ハードウェアリソース)の更新制御信号はこのブロックで生成される。レジスタからバスへの読み出し等、プログラマの認識するリソースの更新に関与しない制御信号には別のブロック(図示せず)で生成されるものもある。
【0055】
実行制御信号生成部910には、リピート終了フラグ903と、複数のデータラッチ群908を介した命令コード907及び最終命令フラグ906が与えられている。データラッチ群908は、命令フェッチステージで読み込んだ命令コード907を実行制御信号生成部913の動作するステージまでパイプライン転送するためのものである。
【0056】
データラッチ群908はデータラッチ908A〜908Dから構成され半クロック毎にパイプライン転送を行う。したがって、一つの命令コード907に着目した場合、データラッチ908Aは命令フェッチステージのクロックの“L”区間に命令コード907をラッチし、データラッチ908Bはデコードステージのクロックの“H”区間に命令コード907をラッチし、データラッチ908Cはデコードステージのクロックの“L”区間に命令コード907をラッチし、データラッチ908Dは命令実行ステージのクロックの“H”区間に命令コード907をラッチすることになる。
【0057】
リピート終了フラグ903は、ステップリピートの処理中で、かつSRPT_Cレジスタ188に当初指定された実行命令回数の命令実行を完了したことを示すものである。これはSRPT_Cレジスタ188が“0”でSRPビット43が“1”の時、アサートされる。図10に示すように、リピート終了フラグ903は、ゼロ判定器900出力とSRPフラグ43の値とのANDゲート901による論理積により求められ、その後、ラッチ902によって所望の位相に合せ込まれて出力される。なお、ゼロ判定器900はSRPT_Cレジスタ188の値が“0”の時に“1”を出力するものである。
【0058】
基本的に実行制御信号生成部910は、データラッチ群908を介して与えられた命令コード907に基いて順次実行制御信号を生成して命令コード907に規定された命令を実行させる。しかしながらリピート終了フラグ903がアサート(実行命令回数の命令実行達成状態)されている時は、命令コード907の内容に関わらず全ての実行制御信号をネゲートする。その結果、リピート終了フラグ903がアサートされている期間に実行された命令は、全てNOPと同様の動作となり無効にされる。
【0059】
一方、最終命令フラグ906は、ステップリピートの処理中であり、SRPT_Cレジスタ188に指定された命令数の実行を完了しており、かつ命令フェッチによって読み込まれた命令コード907がステップリピート処理対象命令列の最終命令であるか否かを“1”/“0”で示している。最終命令フラグ906はラッチ904を介したPC部118の比較器187出カと、リピート終了フラグ903のANDゲート905による論理積によって求められる。なお、比較器187はSRPT_Eレジスタ186とIA181とを比較し、両者の値が等しい時に“1”を出カする。
【0060】
最終命令フラグ906は対応する命令コード907とともにデータラッチ群908をパイプライン転送され、対応する命令コード907の命令実行時にSRPクリア信号909となる。SRPビット43は、SRPクリア信号909が与えられることによって“0”にクリアされる。
【0061】
図11は、図10で示した実施の形態1の制御部によるステップリピート機能を用いたFIRフィルタ処理の実現例を示したものである。図11において、命令N+6はステップリピート命令であり、SRPT_Sレジスタ184には命令N+7のアドレスが、SRPT_Eレジスタ186には命令N+12のアドレスが、SRPT_Cレジスタ188には前述したレジスタR13に格納されている値が、それぞれ設定される。なお、“||”は2つの命令を並列に実行することを示す。
【0062】
これにより命令N+7〜命令N+12の6命令が繰り返しフェッチされ、予めレジスタR13に設定されていた値(実行命令回数)に対応する回数分、命令が実行される。例えばレジスタR13に“128”が設定されていたならば、命令N+7〜N+12を21回繰り返し(小計126回)、その後、命令N+7,命令N+8を各1回(小計2回)実行し、合計で128個の命令を実行する。命令N+8に引き続いて22回目にフェッチされた命令N+9〜N+12は、実行ステージで実行制御信号生成部910命令実行制御信号の強制的ネゲートすることによりNOP化(無効化)される。レジスタR13に“127”が設定されていたならば、命令N+7〜N+12を21回と、その後命令N+7を1回実行し、合計127個の命令を実行する。そして、命令N+7に引き続いてフェッチされていた命令N+8〜N+12はNOP化される。
【0063】
図12はレジスタR13に“127”が設定されていたときの様子を示した図である。説明の簡単化のため第2演算部117で実行される命令のパイプライン動作のみを示す。命令N+12はステップリピート対象命令列の最終命令であり、その命令アドレスはSRPT_Eレジスタ186の値と一致する。▲2▼で示す命令N+12の21回目のフェッチ時にはSRPT_Cレジスタ188は“0”でないため、次に、SRPT_Sレジスタ184で示される命令N+7をフェッチする。▲3▼で示す命令N+7を実行した時点でSRPT_Cレジスタ188の値が“0”となるため、▲8▼で示す命令N+12のフェッチ後は、通常どおり命令アドレスをインクリメントして、▲9▼で示す命令N+13をフェッチする。SRPT_Cレジスタ188が“0”になってからステップリピート処理を終了する(SRPビット43が“0”になる)までに実行された▲4▼から▲8▼の命令N+8〜N+12は実行制御信号生成部910によって全てNOP化される。これらの命令はNOP化されているためE2で示されるパイプラインステージは動作しない。
【0064】
このように、実施の形態1のデータ処理装置は、ステップリピート命令実行時に、リピート終了フラグ903が達成状態を指示する(“1”)ときデータラッチ群908より受ける命令を順次無効にしている。
【0065】
したがって、ステップリピート命令で指定された命令列の命令単位の総実行回数が実行命令回数に達した後は、データラッチ群908に取り込まれた命令を確実に無効にすることができるため、命令列に含まれる命令を繰り返しながら、指定された命令単位の回数(実行命令回数)で正確に実行することができる。
【0066】
その結果、プログラム設計者は、ステップリピート処理を活用することにより、プログラム実行時に命令の実行回数が動的に決定される場合にも、容易にプログラムを作成することができる。
【0067】
<実施の形態2>
実施の形態1の構成では、ステップリピート対象命令列が多くの命令を含んでいた場合、例えば30の命令を含んでいた場合に、命令列の先頭命令を実行した時点でSRPT_Cレジスタ188の値が“0”になったならば、残り29命令はNOP化して実行されることになる。
【0068】
実施の形態2のデータ処理装置は、この様なケースを想定して、ステップリピート処理中にSRPT_Cレジスタ188の値が“0”になったならば、SRPT_Eレジスタ186の値で示される命令の次の命令(すなわち、ステップリピート命令処理後に実行すべき命令)に分岐する制御を行う装置である。
【0069】
図13は実施の形態2のデータ処理装置における制御部112の構成を示す説明図である。同図に示すように、タイミング発生器911はリピート終了フラグ903に基づいてSRPクリア信号909及び分岐用制御信号BSを生成する。なお、最終命令フラグ906が生成するラッチ904及びANDゲート905が省略された点を除いて、他の構成は図10で示した実施の形態1の制御部と同様である。
【0070】
分岐処理の実行自体は通常の分岐処理と同様に行われ、必要に応じて、IFステージあるいはDステージ以降のパイプラインステージをフラッシュする。すなわち、分岐の実行以前にフェッチされ、未だ実行されていない命令を消し去る。分岐先の命令アドレスは通常の分岐命令と同様に第1演算部116で計算され、JAバス323を介してIA181に設定される。分岐命令の場合は、S3バス303を介して与えられたEPC194の値と、図示しない経路より与えられた所望の分岐変位の加算により分岐先アドレスが求められる。ステップリピートの終了による分岐では、S3バス303を介して与えられたSRPT_Eレジスタ186と、別途与えられた即値“1”の加算により分岐先アドレスを求める。これら、一連の動作は、タイミング発生器911の生成する分岐用制御信号BS信号に基づいて、命令デコード部119(図2参照)が制御する。
【0071】
図14を用いてタイミング発生器911の動作のタイミングを説明する。サイクル1でSRPT_Cレジスタ188に指定された実行命令回数目の命令である最後の命令を実行すると、サイクル2でリピート終了フラグ903がアサートされ、アサートされたリピート終了フラグ903をトリガとしてタイミング発生器911は種々の分岐用制御信号BSを生成する。この分岐用制御信号BSによって下記の分岐処理が行われる。
【0072】
サイクル2でSRPT_Eレジスタ186の値はS3バス303に読み出される。サイクル3で、S3バス303上の値、即ちSRPT_Eレジスタ186の値は第1演算部116に読み込まれ、同じタイミングで読み込まれた即値“1”と足し合わせられる。この様に生成された分岐先命令アドレスは直ちにIA181に設定される。また、タイミング発生器911は、サイクル3の期間中、SRPクリア信号909をアサートする。
【0073】
図15は、図11においてレジスタR13に“127”が設定されていた場合の動作を示したものである。▲3▼に示す命令N+7の実行(E)によってSRPT_Cレジスタ188の値が“0”なる(このサイクルが図14のサイクル1となる)と、その次の次のサイクル、即ちNOP化された▲5▼に示す命令N+9の実行(E)サイクルに合せて命令N+13への分岐が実行される。この時、▲4▼の命令N+8と▲5▼の命令N+9はNOP化されて実行されるが、既にフェッチされていた▲6▼の命令N+10と▲7▼の命令N+11はパイプラインのフラッシュ処理によって処理を取りやめる。分岐先の▲8▼で示す命令N+13は、分岐実行の次のサイクルから命令フェッチが行われる。
【0074】
実施の形態1の図12と比較すると、1サイクル早く、ステップリピート命令処理後に実行すべき命令N+13のフェッチを開始することができる。
【0075】
このように、実施の形態2のデータ処理装置のタイミング発生器911は、リピート終了フラグ903の“1”変化時をトリガとして、ステップリピート命令処理後に実行すべき命令の取り込みを指示する分岐用制御信号BSを発生するとともに、所定のタイミングでSRPクリア信号909をアサート(実行命令回数の命令実行の達成を指示)させている。
【0076】
したがって、ステップリピート命令対象の命令列の命令単位の総実行回数が実行命令回数に達した後は、速やかに、ステップリピート命令処理後に実行すべき命令を実行することができる。
【0077】
このように、実施の形態2のデータ処理装置は、タイミング発生器911を追加する程度の極めてわずかな制御部を追加するだけで、実施の形態1で示したデータ処理装置のステップリピート命令処理性能を更に高めることができる。
【0078】
<実施の形態3>
なお、図3等で示したブロックリピート用のリソース(SRPビット43、SRPT_Sレジスタ184、SRPT_Eレジスタ186、SRPT_Cレジスタ18及びその周辺の比較器等)に加えて、公報1で示されたようなブロック内で指定された命令列を所定回数繰り返す従来のブロックリピート用のリソースを新たに別途追加してブロックリピート機能を追加することも可能である。
【0079】
例えば、図6のPSWにブロックリピートの実行の有無を示すビットを追加して、ブロックリピート処理対象命令列の先頭命令のアドレスを格納するレジスタ、ブロックリピート処理対象命令列の最終命令のアドレスを格納するレジスタ及びブロックリピート対象命令列の繰り返し実行回数を格納するレジスタを、SRPT_Sレジスタ184、SRPT_Eレジスタ186及びSRPT_Cレジスタ188と同様な接続関係となるようにPC部118にそれぞれ設け、これら3つのレジスタに対して、図3のラッチ189、デクリメンタ190、比較器187及びラッチ185に対応する周辺構成をPC部118内に追加すれば良い。
【0080】
このようにステップリピート用リソースに加え、ブロックリピート用リソースを追加したのが実施の形態3のデータ処理装置である。なお、ステップリピート機能は実施の形態1、実施の形態2のいずれの構成で実現しても良い。
【0081】
したがって、実施の形態3のデータ処理装置は、予め処理回数が決まっているリピート処理にはブロックリピート用のリソースを用いてブロックリピート処理を行わせ、処理回数が実行途中で動的に決定される場合には、図3等で示したステップリピート用のリソースを用いてステップリピート処理を実行させるという選択も可能となり、より一層プログラム作成が容易となる。また、ブロックリピートで指定した命令列の中で更にステップリピート処理を行うなどという階層利用も可能となる。
【0082】
なお、新たにリソースを追加することなく、図3等で示したステップリピート用のリソースをそのまま上記ブロックリピート用のリソースとしても用い、必要に応じてステップリピート用あるいはブロックリピート用を選択的に行うこともできる。ただし、この場合、上述した階層利用は不可能となる。また、ステップリピートとブロックリピートのいずれを実行するか識別するための手段が必要なことは言うまでもないことであるが、これは容易に実現できる。例えば、図6に示したPSWにブロックリピートの実行中であることを示すビットを追加し、PSWの状態によっていずれかを選択すればよい。
【0083】
<実施の形態4>
最近のデータ処理装置では、フラグの値に応じてフェッチした命令をNOP化する機能、いわゆる条件実行機能を有しているものがある。例えば、国際公開番号WO98/33115号公報(以下、「公報2」と略す。)の図27等に基本的な構成が開示されている。この様な条件実行を実現するためには、PSWに保持したフラグ情報及び実行条件命令に規定された実行条件に基いて、上記実行条件命令に対応づけられた所定の命令を実行すべきかNOP化すべきかを判定するための実行条件判定部と、与えられた上記所定の命令の命令コードと上記実行条件判定部の判定結果に基いて最終的な命令実行制御信号を生成する実行制御信号生成部があれば良い。
【0084】
また、上記公報2では、一方のサブ命令が他方のサブ命令の実行条件を指定する、という方法で条件実行を実現している。さらに、他の方法として、例えば、「"ACORN RISC MACHINE FAMILY DATA MANUAL, page 2-29" VLSI Technology inc」に開示された命令のように、所定の命令を規定する命令ワード内の特定フィールドに実行条件を併せて指定する、という方法で条件実行を実現するものもある。上記文献の条件実行を実現するためには、PSWに保持したフラグ情報及び命令ワード内に記述された実行条件に基いて、上記所定の命令を実行すべきかNOP化すべきかを判定するための実行条件判定部と、与えられた上記所定の命令の命令コードと上記実行条件判定部の判定結果に基いて最終的な命令実行制御信号を生成する実行制御信号生成部があれば良い。
【0085】
ステップリピート機能と上述した条件実行機能の両方を持ったデータ処理装置を想定する場合、命令をNOP化するための実行制御信号生成部は、両方の機能で共有させることができる。これは、リピート終了フラグ903と実行条件判定結果の簡単な論理演算結果を実行制御信号生成部に与えるだけで実現できる。
【0086】
図16は、この発明の実施の形態4のデータ処理装置における制御部の構成を示す説明図である。公報2の図27では実行条件判定部と実行制御信号生成部が2個ずつあり、4本の実行抑止信号がこれらを接続する場合について述べている。図16では簡単化のために、実行制御信号生成部910と実行条件判定部913とを1個ずつで構成している。
【0087】
実行条件判定部913は、命令コードの一部により指定される実行条件に基づいてPSW部171の保持するフラグ値を判定し、実行条件成立の有/無に基づき、実行(“0”)/抑止(“1”)を指示するの実行条件抑止信号915を出力する。ORゲート914は、リピート終了フラグ903及び実行条件抑止信号915を論理和演算して、その演算結果を最終実行条件抑止信号916として出力する。したがって、リピート終了フラグ903あるいは実行条件抑止信号915が“1”であれば、最終実行条件抑止信号916が“1”となり、抑止を指示する。なお、リピート終了フラグ903の生成用の構成は、図10で示した実施の形態1の構成でも、図13で示した実施の形態2の構成でも良い。
【0088】
実行制御信号生成部910は、最終実行条件抑止信号916が“1”であれば、命令実行制御信号を生成しないように動作する。
【0089】
このように、ステップリピート機能と条件実行機能は、ステップリピート機能用のハードウェア構成から、ORゲート914を追加するだけで、実行制御信号生成部910を共有することができる。
【0090】
条件実行機能は分岐によって生じるペナルティを削減できることから、情報処理装置の性能を向上させる有効な手段である。よって実施の形態4は、ステップリピート機能と条件実行機能を併せ持つことにより、極めて高い処理性能を持ったデータ処理装置を実現することができる。また、両機能は命令のNOP化装置を共有することができるため、これらを併せ持つことはハードウェアコストの観点からも極めて有効である。
【0091】
【発明の効果】
この発明における請求項1記載のデータ処理装置の命令実行制御手段は、ステップリピート命令実行時に、実行命令回数判定結果が未達成状態を指示するとき命令取り込み手段より受ける命令を順次実行させ、実行命令回数判定結果が達成状態を指示するとき命令取り込み手段より受ける命令を順次無効にする。
【0092】
したがって、第1〜第Nの命令の総実行回数が実行命令回数に達した後は、命令取り込み手段に既に取り込まれた第1〜第Nの命令を確実に無効にすることができるため、命令列(第1〜第Nの命令)に含まれる命令を繰り返しながら、指定された命令単位の回数(実行命令回数)で正確に実行することができる。
【0093】
請求項2記載のデータ処理装置の実行命令回数判定手段は、(K+1)回目の第Lの命令(実行命令回数M個目に実行される命令)の実行中に実行命令回数判定結果の指示内容を達成状態にし、命令実行制御手段は、達成状態を指示する実行命令判定結果に応答して、(K+1)回目の第(L+1)〜第Nの命令の実行を順次無効にしている。
【0094】
したがって、第1〜第Nの命令の総実行回数が実行命令回数に達した後は、命令取り込み手段に既に取り込まれた第(L+1)〜第Nの命令を確実に無効にすることができる。
【0095】
請求項3記載のデータ処理装置のタイミング制御手段は、実行回数判定結果の指示内容の未達成状態から達成状態への変化時をトリガとして、ステップリピート命令処理後に実行すべき命令の取り込みを指示する制御信号を発生するとともに、ステップリピート命令実行情報を非実行状態に設定する。
【0096】
したがって、第1〜第Nの命令の総実行回数が実行命令回数に達した後は、速やかに、ステップリピート命令処理後に実行すべき命令を実行することができる。
【0097】
請求項4記載のデータ処理装置はブロックリピート機能をさらに有するため、プログラム設計者は必要に応じてブロックリピート処理とステップリピート処理を使い分けることができる。
【0098】
請求項5記載のデータ処理装置は、ステップリピート機能と条件実行機能との間で命令取り込み手段と命令実行制御手段の共有を図ることにより、ハードウェアコストを必要最小限に抑えながら、ステップリピート機能と条件実行機能とを実現させることができる。
【0099】
請求項6記載のデータ処理装置において、プログラム中にステップリピート命令に連続して第1〜第Nの命令が順に記載され、ステップリピート命令は、第Nの命令のアドレス情報をさらに有している。
【0100】
したがって、ステップリピート命令の実行時に、ステップリピート命令の次の命令のアドレスを第1の命令のアドレスとして認識し、第Nの命令のアドレス情報から第Nの命令のアドレスを認識することにより、ステップリピート命令実行中の第Nの命令後に第1の命令を行うアドレス制御を行うことができる。
【図面の簡単な説明】
【図1】 この発明の実施の形態のデータ処理装置の構成を示すブロック図である。
【図2】 この発明の実施の形態のデータ処理装置の第1演算部の詳細を示すブロック図である。
【図3】 この発明の実施の形態のデータ処理装置のPC部の詳細を示すブロック図である。
【図4】 この発明の実施の形態のデータ処理装置の第2演算部の詳細ブロック図である。
【図5】 この発明の実施の形態のデータ処理装置のパイプライン処理を示す模式図である。
【図6】 PSW部の構成を示す説明図である。
【図7】 ステップリピート命令のニモニックを示す説明図である。
【図8】 ステップリピート命令のフォーマットを示す説明図である。
【図9】 ステップリピート命令の他のニモニックを示す説明図である。
【図10】 実施の形態1の制御部の構成を示す説明図である。
【図11】 ステップリピート機能を用いたプログラム例を示す説明図である。
【図12】 実施の形態1の制御部によるパイプライン制御内容を示す説明図である。
【図13】 実施の形態2の制御部の構成を示す説明図である。
【図14】 実施の形態2の制御部の動作説明用のタイミング図である。
【図15】 実施の形態1の制御部によるパイプライン制御内容を示す説明図である。
【図16】 実施の形態2の制御部の構成を示す説明図である。
【符号の説明】
43 SRPビット、184 SRPT_Sレジスタ、186 SRPT_Eレジスタ、171 PSW部、187 比較器(CMP)、188 SRPT_Cレジスタ、900 ゼロ判定器、910 実行制御信号生成部、911 タイミング発生器、913 実行条件判定部913。
Claims (6)
- プログラムにしたがって動作するデータ処理装置であって、前記プログラムに記載中の、第1〜第N(N≧2)命令及び実行命令回数M(M≧1)が指定可能なステップリピート命令に応答して、前記第1〜第Nの命令をK(K=M/Nの商)回繰り返した後、第1〜第L(L=M/Nの余り)の命令を実行するステップリピート機能を有し、
前記ステップリピート機能は、
前記ステップリピート命令実行時に、前記第1〜第Nの命令の各命令の実行毎に命令実行カウント数をカウントし、該命令実行カウント数が前記実行命令回数に達した達成状態か/達成していない未達成状態かを示す実行命令回数判定結果を出力する実行命令回数判定手段と、
前記ステップリピート命令実行時に、第1,第2,…第N,第1,第2の順に、前記第1〜第Nの命令を繰り返し取り込む命令取り込み手段と、
前記命令取り込み手段に取り込まれた命令を順次受け、前記ステップリピート命令実行時に、前記実行命令回数判定結果が前記未達成状態を指示するとき前記命令取り込み手段より受ける命令を順次実行させ、前記実行命令回数判定結果が前記達成状態を指示するとき前記命令取り込み手段より受ける命令を無効にする命令実行制御手段とを備える、
データ処理装置。 - 前記ステップリピート機能は、前記ステップリピート命令の実行中である実行状態か/実行中でない非実行状態かを示すステップリピート命令実行情報を格納する情報格納手段をさらに備え、前記ステップリピート命令実行情報は前記ステップリピート命令実行開始時に前記実行状態に設定され、
前記命令取り込み手段は、L(L=M/Nの余り)が“0”でないとき、前記第1〜第Nの命令を(K+1)回繰り返し取り込み、(K+1)回目に取り込んだ第Nの命令の前記命令実行制御手段への付与時に前記ステップリピート命令実行情報を前記非実行状態に設定し、
前記実行命令回数判定手段は、(K+1)回目の前記第Lの命令の実行中に前記実行命令回数判定結果の指示内容を前記達成状態にし、
前記命令実行制御手段は、前記達成状態を指示する実行命令判定結果に応答して、(K+1)回目の第(L+1)〜第Nの命令を順次無効にする、
請求項1記載のデータ処理装置。 - 前記ステップリピート機能は、
前記ステップリピート命令の実行中である実行状態か/実行中でない非実行状態かを示すステップリピート命令実行情報を格納する情報格納手段をさらに備え、前記ステップリピート命令実行情報は前記ステップリピート命令実行開始時に前記実行状態に設定され、
前記実行回数判定結果を受け、前記実行回数判定結果の指示内容の前記未達成状態から前記達成状態への変化時をトリガとして、前記ステップリピート命令処理後に実行すべき命令の取り込みを指示する制御信号を発生するとともに、前記ステップリピート命令実行情報を前記非実行状態に設定するタイミング制御手段をさらに備える、
請求項1記載のデータ処理装置。 - 複数の命令からなる命令列及び繰り返し実行回数が指定可能なブロックリピート命令に応答して、前記命令列を前記繰り返し実行回数繰り返して実行可能なブロックリピート機能を前記ステップリピート機能と独立してさらに有する、
請求項1ないし請求項3のうち、いずれか1項に記載のデータ処理装置。 - 所定の命令と該所定の命令の実行条件を規定した実行条件指定命令とに応答して、条件判定を行って前記所定の命令の実行/抑止を行う条件実行機能をさらに有し、
前記条件実行機能は、
条件用情報を格納する条件用情報格納手段と、
前記実行条件指定命令に応答して、前記条件用情報が前記実行条件を満足するか否かに基づき、前記所定の命令を実行するか抑止するかを制御する実行抑止信号を出力する実行条件判定手段とを備えるとともに、
前記命令取り込み手段及び前記命令実行制御手段を前記ステップリピート機能と共有し、
前記命令取り込み手段は、前記実行条件指定命令の前記実行条件判定手段の判定処理に並行して前記所定の命令を取り込み、
前記命令実行制御手段は、前記実行抑止信号が抑止を指示するときに、前記命令取り込み手段より付与される前記所定の命令を無効にする、
請求項1ないし請求項4のうち、いずれか1項に記載のデータ処理装置。 - 前記プログラム中に前記ステップリピート命令に連続して前記第1〜第Nの命令が順に記載され、前記ステップリピート命令は、前記第Nの命令のアドレス情報をさらに有する、
請求項1ないし請求項5のうち、いずれか1項に記載のデータ処理装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP02523899A JP3842474B2 (ja) | 1999-02-02 | 1999-02-02 | データ処理装置 |
US09/347,004 US6345357B1 (en) | 1999-02-02 | 1999-07-02 | Versatile branch-less sequence control of instruction stream containing step repeat loop block using executed instructions number counter |
US10/028,697 US6560697B2 (en) | 1999-02-02 | 2001-12-28 | Data processor having repeat instruction processing using executed instruction number counter |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP02523899A JP3842474B2 (ja) | 1999-02-02 | 1999-02-02 | データ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000222206A JP2000222206A (ja) | 2000-08-11 |
JP3842474B2 true JP3842474B2 (ja) | 2006-11-08 |
Family
ID=12160418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP02523899A Expired - Fee Related JP3842474B2 (ja) | 1999-02-02 | 1999-02-02 | データ処理装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US6345357B1 (ja) |
JP (1) | JP3842474B2 (ja) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6763453B2 (en) * | 2000-12-28 | 2004-07-13 | Intel Corporation | Security on hardware loops |
JP2002229779A (ja) * | 2001-02-02 | 2002-08-16 | Mitsubishi Electric Corp | 情報処理装置 |
US7039793B2 (en) * | 2001-10-23 | 2006-05-02 | Ip-First, Llc | Microprocessor apparatus and method for accelerating execution of repeat string instructions |
GB2382672B (en) * | 2001-10-31 | 2005-10-05 | Alphamosaic Ltd | Repeated instruction execution |
US6986028B2 (en) * | 2002-04-22 | 2006-01-10 | Texas Instruments Incorporated | Repeat block with zero cycle overhead nesting |
US6907598B2 (en) * | 2002-06-05 | 2005-06-14 | Microsoft Corporation | Method and system for compressing program code and interpreting compressed program code |
US7062684B2 (en) * | 2002-12-19 | 2006-06-13 | International Business Machines Corporation | Enabling tracing of a repeat instruction |
JP2005149297A (ja) * | 2003-11-18 | 2005-06-09 | Renesas Technology Corp | プロセッサおよびそのアセンブラ |
CN101449256B (zh) | 2006-04-12 | 2013-12-25 | 索夫特机械公司 | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 |
EP2527972A3 (en) | 2006-11-14 | 2014-08-06 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
JP5511299B2 (ja) * | 2009-10-16 | 2014-06-04 | 三菱電機株式会社 | データ演算装置の制御回路及びデータ演算装置 |
KR101685247B1 (ko) | 2010-09-17 | 2016-12-09 | 소프트 머신즈, 인크. | 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측 |
KR101638225B1 (ko) | 2011-03-25 | 2016-07-08 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행 |
KR101636602B1 (ko) | 2011-03-25 | 2016-07-05 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 |
TWI518504B (zh) | 2011-03-25 | 2016-01-21 | 軟體機器公司 | 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的暫存器檔案節段 |
EP2710481B1 (en) | 2011-05-20 | 2021-02-17 | Intel Corporation | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
TWI548994B (zh) | 2011-05-20 | 2016-09-11 | 軟體機器公司 | 以複數個引擎支援指令序列的執行之互連結構 |
US10191746B2 (en) | 2011-11-22 | 2019-01-29 | Intel Corporation | Accelerated code optimizer for a multiengine microprocessor |
US20150039859A1 (en) | 2011-11-22 | 2015-02-05 | Soft Machines, Inc. | Microprocessor accelerated code optimizer |
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 |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
KR102083390B1 (ko) | 2013-03-15 | 2020-03-02 | 인텔 코포레이션 | 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법 |
US9632825B2 (en) | 2013-03-15 | 2017-04-25 | Intel Corporation | Method and apparatus for efficient scheduling for asymmetrical execution units |
KR102063656B1 (ko) | 2013-03-15 | 2020-01-09 | 소프트 머신즈, 인크. | 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법 |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0374419A3 (en) * | 1988-12-21 | 1991-04-10 | International Business Machines Corporation | Method and apparatus for efficient loop constructs in hardware and microcode |
US5303355A (en) * | 1991-03-27 | 1994-04-12 | Motorola, Inc. | Pipelined data processor which conditionally executes a predetermined looping instruction in hardware |
JPH07200292A (ja) * | 1993-12-28 | 1995-08-04 | Mitsubishi Electric Corp | パイプライン式プロセッサ |
US5727194A (en) * | 1995-06-07 | 1998-03-10 | Hitachi America, Ltd. | Repeat-bit based, compact system and method for implementing zero-overhead loops |
JP3658072B2 (ja) | 1996-02-07 | 2005-06-08 | 株式会社ルネサステクノロジ | データ処理装置およびデータ処理方法 |
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 |
JP3670668B2 (ja) | 1997-01-24 | 2005-07-13 | 株式会社ルネサステクノロジ | データ処理装置 |
JP2001505340A (ja) * | 1997-08-18 | 2001-04-17 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 相対飛び越し命令を伴うデータ処理装置 |
-
1999
- 1999-02-02 JP JP02523899A patent/JP3842474B2/ja not_active Expired - Fee Related
- 1999-07-02 US US09/347,004 patent/US6345357B1/en not_active Expired - Fee Related
-
2001
- 2001-12-28 US US10/028,697 patent/US6560697B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6560697B2 (en) | 2003-05-06 |
JP2000222206A (ja) | 2000-08-11 |
US20020056038A1 (en) | 2002-05-09 |
US6345357B1 (en) | 2002-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3842474B2 (ja) | データ処理装置 | |
US5649145A (en) | Data processor processing a jump instruction | |
JP3856737B2 (ja) | データ処理装置 | |
EP0782071A2 (en) | Data processor | |
US6016543A (en) | Microprocessor for controlling the conditional execution of instructions | |
US5091853A (en) | Chained addressing mode pipelined processor which merges separately decoded parts of a multiple operation instruction | |
US5522053A (en) | Branch target and next instruction address calculation in a pipeline processor | |
JP2006004042A (ja) | データ処理装置 | |
JP3543181B2 (ja) | データ処理装置 | |
JP3670668B2 (ja) | データ処理装置 | |
US5313644A (en) | System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word | |
WO1998006042A1 (en) | Wide instruction unpack method and apparatus | |
JPH0496825A (ja) | データ・プロセッサ | |
US4945511A (en) | Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions | |
CN108319559B (zh) | 用于控制矢量内存存取的数据处理装置及方法 | |
JPH01214932A (ja) | データ処理装置 | |
JP3789583B2 (ja) | データ処理装置 | |
US5815420A (en) | Microprocessor arithmetic logic unit using multiple number representations | |
JP2001034471A (ja) | Vliw方式プロセッサ | |
JP3578883B2 (ja) | データ処理装置 | |
JPH07120284B2 (ja) | データ処理装置 | |
EP3559803B1 (en) | Vector generating instruction | |
JP3345787B2 (ja) | データ処理装置 | |
JP3841967B2 (ja) | マイクロプロセッサ | |
JP2556182B2 (ja) | デ−タ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060120 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060801 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060808 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060810 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |