JP3630904B2 - 演算実行方法および演算実行装置 - Google Patents
演算実行方法および演算実行装置 Download PDFInfo
- Publication number
- JP3630904B2 JP3630904B2 JP04409397A JP4409397A JP3630904B2 JP 3630904 B2 JP3630904 B2 JP 3630904B2 JP 04409397 A JP04409397 A JP 04409397A JP 4409397 A JP4409397 A JP 4409397A JP 3630904 B2 JP3630904 B2 JP 3630904B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- execution
- calculation
- result
- fetch
- 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
Images
Landscapes
- Advance Control (AREA)
Description
【発明の属する技術分野】
この発明は、演算実行方法およびその方法を用いた演算実行装置に関する。この発明は特に、演算を含む各種処理が命令の形で与えられるとき、これらの命令を実行する演算実行方法および装置に関する。この発明は、例えばパイプライン方式のマイクロプロセッサに適用することが可能である。
【0002】
【従来の技術】
RISC(Reduced Instruction Set Computer)型のシングルチップ・マイクロプロセッサは、主に特定用途において、高い処理性能、低い消費電力および少ない実装面積を同時に実現するデバイスである。最近ではさらに演算性能の強化を図るために、こうしたマイクロプロセッサの中に専用の演算回路を設けることも多い。
【0003】
日本電気(株)のV851は、そうしたマイクロプロセッサの1つである。NEC技報 Vol.48 No.3/1995の42〜47ページの記載によれば、V851はパイプライン方式のRISCアーキテクチャをとり、乗算命令の高速実行のために、通常のALUの他にMULUと呼ばれるハードウエア乗算器を備える。この乗算器により、乗算を1または2クロックで実行する。
【0004】
図1はV851によるパイプライン処理の様子を示す図である。同図では、命令1がMULUを用いて1クロックで完了し、つづく命令2が1クロック遅れでパイプライン処理されていく様子が示されている。同図において各クロックに対応する処理はステージと呼ばれ、5種類のステージを経ることにより、1つの命令の実行が完了する。V851の場合、5種類のステージはIF、ID、EX、MEM、WBと呼ばれ、これら各ステージはそれぞれ、命令フェッチ、命令解読(およびレジスタの読み出し)、演算(およびメモリアドレス生成)、メモリアクセス(乗算結果取り出し)、レジスタファイルに対するデータの書き戻しを示している。
【0005】
【発明が解決しようとする課題】
パイプライン方式のマイクロプロセッサを設計する場合、割込等例外処理の受付に関し、いくつかの異なる設計方針がある。特に、専用の演算回路を設ける場合、この回路の性質に応じた設計が必要となる。演算実行と例外処理の要求が同時に発生したとき、主な制御方法は以下のとおりである。
【0006】
(1)例外処理を待たせる
いったん演算が起動されたとき、この演算の実行が完了するまで例外処理を待たせ、演算完了後例外処理を行う。
【0007】
(2)演算を中止する
例外処理を優先するために演算を中止し、演算の途中経過を破棄する。例外処理の完了後、演算を最初からやりなおす。
【0008】
(3)演算を中断する
演算をいったん中断し、演算の途中経過を退避する。例外処理の完了後、退避したデータを読み戻し、演算を中途から再開する。
【0009】
これらのうち、(1)は設計上最も単純でハードウエアも少ないが、急を要する例外処理が長時間待たされるおそれがあり、システム上問題が生じうる。(2)にはこの問題がないが、演算が最初からやりなおしになるため、処理性能上問題が生じうる。(3)にはこれらの問題がないが、実現するためのハードウエアが大きくなる。例えば前述のV851のように、演算に高々2クロックしかかからない場合は(1)の方法が現実的と考えられるが、例えば多ビットデータを対象とする浮動小数点演算用の演算回路を設けるような場合、(2)または(3)の方法を選択するほかなかった。
【0010】
[目的]
本発明は、上記課題に鑑みてなされたものであり、その目的は、例外処理を無用に待たせることなく、処理性能の低下を最小限にとどめ、かつハードウエアの増大を招かない演算実行方法および装置の提供にある。
【0011】
【課題を解決するための手段】
(1)本発明の演算実行方法は、命令の形で与えられる演算を実行する方法であって、演算の起動を指示する演算起動命令と、その演算の結果を取り出す演算結果取出命令を別々に設け、演算起動命令によって起動された演算の実行完了をハードウエアによって判定し、その演算の実行が完了するまで、後続の演算結果取出命令の実行を、その演算結果取出命令自体を破棄することが可能な状態で停止する。
【0012】
ここで「演算」は、数値演算に限らず、各種制御機能の単位処理全般を指す。また本発明では、命令の「実行」ということばが2つの意味を持つ。すなわち、この命令を読み取って解読し、解読内容に従って実際にハードウエア資源に対する制御を行い、命令を終了するまでの一連の処理が広義の実行である。一方、前記ハードウエア資源に対する実際の制御のみを指して狭義の実行という。以降、特に区別が必要な個所に限り、広狭を明示して説明する。
【0013】
本発明では、演算起動と演算結果の取り出しを異なる命令で行う。演算起動命令は演算の起動のみを目的とするため、演算が起動された時点でその命令自体の実行は完了する。しかしこれとは別に、演算自体は実行中とする構成が可能であり、この演算の完了がハードウエア的に判定される。
【0014】
一方、演算が完了する前であっても、演算起動命令自体の実行が完了していることから、演算結果取出命令の実行(広義)が開始できる。しかし、この命令は前記演算の完了を待つ必要があるため、その実行(狭義)は演算が完了するまで停止される。このとき、例えば例外処理の要求が発生したら、停止中の演算結果取出命令を破棄し、当該処理を先に実行する。「破棄」とは、命令の実行を中止することをいう。このとき、前記演算自体は必ずしも中止する必要はないため、例外処理等を終えた後、演算結果取出命令のみを再度実行することができる。
【0015】
(2)本発明の演算実行方法のある態様では、この方法は、前記演算起動命令によって起動された演算の実行が完了する前であっても例外処理の要求を受け付け、この要求が実際に発生したとき実行中の演算結果取出命令を破棄し、例外処理を行った後、前記演算結果取出命令を再実行する。この動作原理は(1)で説明したとおりである。
【0016】
(3)本発明の演算実行方法のある態様では、この方法は命令をパイプライン処理によって実行するものであり、前記演算起動命令によって起動された演算の実行完了の判定は、命令の実行状況を見てパイプラインのステージ進行を制御するときに、パイプライン処理動作の一環として行われる。
【0017】
この態様では、前提として、命令がパイプライン処理によって行われる。パイプライン処理を行うとき、パイプラインの各ステージを進めていくために、命令の実行状況の監視が必要となる。そこで、この監視動作を前記演算の実行完了の判定に利用するものである。
【0018】
(4)一方、本発明の演算実行装置は、演算起動命令によって演算が起動され、演算結果取出命令によって演算結果が取り出されるよう構成された演算手段と、演算起動命令によって起動された演算の実行完了をハードウエアによって判定する演算完了判定手段と、演算の実行が完了するまで、後続の演算結果取出命令の実行を、その演算結果取出命令自体を破棄すること可能な状態で停止する取出命令実行停止手段とを含む。「演算手段」の一例に、固有の演算を実行するコプロセッサがある。
【0019】
この態様において、まず演算起動命令が読み込まれると、演算手段において演算が起動される。この演算の実行完了が演算完了判定手段で判定される。つづいて、演算結果取出命令が読み込まれるが、この命令の実行(狭義)は演算の実行が完了するまで停止される。演算結果取出命令は、その命令自体を破棄することが可能な状態、例えば解読までが終了したステージで停止される。このため、例外処理の要求などが発生すれば、演算結果取出命令を破棄してこれを優先的に処理することができる。この後、演算結果取出命令が再実行され、演算手段から演算結果が取り出される。
【0020】
(5)本発明の演算実行装置のある態様は、命令をパイプライン処理によって実行するパイプライン制御手段を含み、このパイプライン制御手段は前記取出命令実行停止手段を含み、この取出命令実行停止手段は、前記演算の実行完了の判定結果に従い、演算結果取出命令の実行停止をパイプライン処理中の関連するステージにて行う。その作用は、(1)の説明に準ずる。
【0021】
(6)このとき本発明のある態様では、前記取出命令実行停止手段は、演算結果取出命令が解読されるステージか、それよりも時間的に前のステージでその命令の実行を停止し、前記パイプライン制御手段は、演算結果取出命令の実行が停止されている間に例外処理の要求が発生したとき、その例外処理の実行後に演算結果取出命令の実行を再開する取出命令再実行手段を含む。
【0022】
この態様によれば、演算結果取出命令は、その命令が解読されるステージ以前のステージ、すなわち狭義の実行が開始される前に停止される。この間に例外処理の要求が発生したとき、その例外処理の実行後に演算結果取出命令の実行が再開される。なお、命令の狭義の実行を開始することを、以降「命令の発行」とも呼ぶ。
【0023】
(7)本発明のある態様では、この装置はさらに、演算起動命令が解読されたとき前記演算手段を利用する旨の予約を行う予約手段と、この予約の状況に応じて演算起動命令の実行を停止する起動命令停止手段を含む。
【0024】
この態様では、演算起動命令が解読されたとき、演算手段が利用されることが判明するため、これが予約手段で予約される。予約は、例えば単にカウンタなどの計数回路の計数値をインクリメントすることでも実現できる。起動命令停止手段は、この予約の状況に応じて演算起動命令の実行を停止する。予約が多い場合、例えばいま解読した演算起動命令の発行を即座に停止してもよいし、この命令は通常どおり発行し、つぎの命令の実行を停止してもよい。
【0025】
(8)このとき、本発明のある態様では、前記演算手段は、演算起動命令の実行の際に演算対象データが送り込まれ、演算結果取出命令の実行の際に演算結果データが取り出されるFIFO構造を有し、前記起動命令停止手段は、このFIFO構造の段数と前記予約の回数との比較結果から演算起動命令の実行を停止する。
【0026】
この態様によれば、演算起動命令が実行されるとき、FIFO構造に演算対象データが送り込まれ、演算結果取出命令が実行されるときFIFO構造から演算結果データが取り出される。FIFO構造であるから、データの入力が出力よりも多いと、いずれ内部がフル状態となる。そこで、起動命令停止手段はFIFO構造の段数と予約の回数との比較し、FIFOが溢れる前に、予め演算起動命令の実行を停止するものである。
【0027】
【発明の実施の形態】
ここで本発明の演算実行装置の好適な実施形態を適宜図面を参照しながら説明する。この装置の説明により、本発明に係る演算実行方法も明らかとなる。本実施形態では、演算実行装置としてパイプライン方式のマイクロプロセッサを考える。V851のMULUに当たる部分はコプロセッサによって実現する。
【0028】
本装置のパイプラインは、5種類のステージ、I(命令フェッチ)、R(命令解読と汎用レジスタの読出)、A(ALUによる演算)、M(メモリアクセス)、W(レジスタ書込)から構成される。なお、「命令の発行」はRステージからAステージへの移行と同義である。
【0029】
[構成]
図2は本装置の全体構成図である。本装置は大別して、通常の処理を統括的に行うプロセッサ40と、V851のMULUに当たるコプロセッサ50、およびプロセッサ40が実行すべき命令を格納する命令メモリ1、プロセッサ40による処理の対象となるデータを格納するデータメモリ19からなる。命令は、命令メモリバス2を介してプロセッサ40に取り込まれる。一方、データはデータメモリバス18を介してプロセッサ40との間でリードライトされる。
【0030】
プロセッサ40内にはまず、命令メモリ2から命令をフェッチする命令フェッチ部3、命令フェッチ部3から命令語を受け取り、これを解読する命令デコード部5がある。これらがIステージと、Rステージの前半に対応する。
【0031】
命令デコード部5では、命令の種類に従って命令語のデコードを行ない、処理すべき演算の機能を示す機能コード6a、命令語内に埋め込まれた定数オペランドである即値オペランド6b、2個のソースレジスタ番号6c、6d、1個のディスティネーションレジスタ番号6eなどを抽出する。
【0032】
ソースレジスタ番号6c、6dは汎用レジスタ群7に送られる。本実施形態では、汎用レジスタ群7の各レジスタがR0、R1…と呼ばれるものとする。汎用レジスタ群7からは、ソースレジスタ番号6c、6dに対応するレジスタの内容が取り出され、これらがソースオペランド8a、8bとして演算部11に送られる。これがRステージの後半である。演算部11は一般のプロセッサが持つ通常のALUであり、これがAステージに対応する。
【0033】
一方、機能コード6aはパイプライン制御部9に送られる。パイプライン制御部9は、同図に示すように、装置全体の状態を監視し、ステージ進行を制御し、個々の命令の発行時期を決定する。
【0034】
命令が発行可能な時期にきたとき、機能コード6aは機能コード10aとして演算部11に送られる。演算部11では、汎用レジスタから得られたソースオペランド8a、8b、および即値オペランド6bのうち必要な値を用い、パイプライン制御部9から与えられる機能コード10aに従って演算を行なう。演算部11で実行される演算の意味は命令の種類毎に異なる。
【0035】
例えば、命令が演算命令のときは、命令に示された演算が演算部11内で実行される。演算結果は演算結果保持部13に蓄えられる。演算結果16は汎用レジスタ書込制御部15を介して汎用レジスタ群7に送られる。このとき書込先のレジスタ番号として、命令のディスティネーションレジスタ番号6eがディスティネーションレジスタ番号10bとしてパイプライン制御部9によって適切なタイミングで送り出される。汎用レジスタ書込制御部15は、パイプライン制御部9から得られたディスティネーションレジスタ番号10bを用いて汎用レジスタへの書込操作を行なう。これがWステージに当たる。この場合、MステージはNOP、すなわち何もしない。
【0036】
一方、実行中の命令がメモリアクセス命令であれば、アクセスすべきメモリアドレスの計算が演算部11で実行される。得られたメモリアドレス12はデータメモリアクセス制御部14に渡される。データメモリアクセス制御部14は、データメモリバス18を介してデータメモリ19のリードライトを行う。これがMステージに相当する。メモリへの書込命令の実行は、データメモリアクセス制御部14における実行によって完了する。この場合はWステージがNOPである。メモリからの読出命令の実行は、リードされたデータ17が汎用レジスタ書込制御部15を介して汎用レジスタに書き込まれたとき、すなわちWステージの完了とともに完了する。
【0037】
プロセッサ40はさらに、外部割込信号28を入力する割込信号入力部27を持つ。割込信号が入力されたとき、これがパイプライン制御部9に通知される。
【0038】
一方、コプロセッサ50は、以下のバスによってプロセッサ40とデータのやりとりを行う。すなわち、プロセッサ40における演算結果16とデータメモリ19からリードされたデータ17を含むコプロセッサ入力バス20と、コプロセッサ50に対するデータ等の入力を制御する信号を含むコプロセッサ入力制御バス21と、コプロセッサ50からのデータの出力を制御する信号を含むコプロセッサ出力制御バス23と、コプロセッサから出力された演算結果データおよび状態信号を含むコプロセッサ出力バス24である。
【0039】
コプロセッサ入力バス20とコプロセッサ入力制御バス21は、コプロセッサ入力制御部30で参照される。コプロセッサ入力制御部30は、コプロセッサ50のいずれのレジスタにデータを入力すべきかを決定するとともに、コプロセッサ50に対してデータが入力過多になることを回避する。
【0040】
コプロセッサ演算部31は、コプロセッサ入力制御部30がデータの入力を受け付けたとき、実際に演算を行う。演算結果はコプロセッサ出力制御部32に与えられ、出力レジスタに格納される。コプロセッサ出力制御部32は、コプロセッサ出力制御バス23を参照し、データを出力すべきレジスタの決定と、そのレジスタからのデータ出力を制御する。出力されたデータはコプロセッサ出力バス24を介してプロセッサ40に与えられる。コプロセッサ出力制御部32はさらに、演算実行の状況と、コプロセッサ入力制御部30において判断されたデータ入力過多の状態をコプロセッサ出力バス24に出力し、プロセッサ40のパイプライン制御部9に対して、ステージの進行停止、命令の破棄、命令の再実行に必要な情報を提供する。
【0041】
図3は、コプロセッサ50の内部構成を示す図である。同図のうち、実際に演算を行うのは、コプロセッサ演算部31のなかの固有演算部213であり、演算の実行は演算制御部209で制御される。固有演算部213では、通常の乗算、除算の他、例えば浮動小数点演算など、コプロセッサに固有の演算(主に2項演算)を行う。固有演算部213に演算対象データを供給するのは、固有演算部213に併設された2つの入力レジスタSR0、1であり、演算結果を格納するのはコプロセッサ出力制御部32のなかの出力レジスタSR2である。SR2は演算結果をコプロセッサ出力バス24に出力する。ここでは出力レジスタが1個のものとして描いているが、これは複数でもよく、その場合は出力レジスタデコーダ214が、データをバスに出力すべきレジスタを選択する。
【0042】
本実施形態では、入力レジスタSR0、1の前段に、それぞれFIFOa202、FIFOb203が設けられている。これらは、直接コプロセッサ入力バス20に接続されており、プロセッサ40から与えられたデータを格納することができる。プロセッサ40がコプロセッサに演算の実行を指示したとき、入力レジスタデコーダ210によって、SR0、1のいずれの入力レジスタに対するデータ入力を行うべきであるかが判定される。この判定は、入力レジスタデコーダ210がコプロセッサ入力制御バス21に乗せられたコプロセッサレジスタ番号を見て行う。データを入力すべきFIFOに対しては、入力レジスタデコーダ210から書込指示信号WaまたはWbが出力され、そのときコプロセッサ入力バス20に乗せられていたデータが、FIFOa202またはFIFOb203に書き込まれる。固有演算部213は、実行中の演算が終了するたびに、FIFOa202、b203からデータを取り出し、新たな2項演算を開始する。
【0043】
本実施形態では、演算起動命令が、単にコプロセッサ50に対するデータ転送命令であるとする。すなわち、明示的に演算を起動するための命令は不要であり、SR0、1に対する以下のデータ転送命令によって演算が起動される。これはプロセッサ40のWステージ(レジスタへの書込)で行われる。
【0044】
LD SR0,(R0) :メモリのR0番地のデータをSR0にロード
LD SR1,(R1) :メモリのR1番地のデータをSR1にロード
固有演算部213は、SR0と1にデータが揃いしだい演算を開始する。一方、本実施形態では、演算結果取出命令がコプロセッサ50からの読出命令であるとする。すなわち、
ST SR2,(R2) :メモリのR2番地にSR2のデータをストア
という命令により、演算結果の取出が行われる。これはプロセッサ40のAステージで行われる。
【0045】
コプロセッサ50内において、FIFO、入力レジスタSR0、1、固有演算部、出力レジスタSR2の経路は全体としてFIFO構造となり、パイプラインを構成する。このパイプラインにおける処理は、プロセッサ40側のパイプラインの各ステージと一定の同期関係を持つ。すなわち、プロセッサ40のWステージでコプロセッサ50のSR0、1にデータが書き込まれると、これが演算を起動する。演算結果は、AステージでSR2から読み出される。
【0046】
演算結果取出命令は、後述のようにRステージでコプロセッサ50の演算完了を待つ。Rステージは、まだハードウエア資源の状態を変化させないため、破棄が容認されることになる。この結果、Rステージで割込要求等を即座に受け付けることが可能となる。本実施形態では、ハードウエア資源の状態が変化しうるAステージ以降では命令を破棄しないものとする。
【0047】
図3において、計数回路a204、b205は、それぞれ前記書込指示信号Wa、Wbが出力されたとき計数値をインクリメントするカウンタである。これらの計数回路は、出力レジスタデコーダ214がSR2に対してデータの出力を指示したとき、演算制御部209を介してこの通知を受け、計数値をデクリメントする。従って、これらの計数回路はそれぞれ、FIFOa202、b203に格納されているデータの個数を示すことになり、図示しない任意の回路から任意の目的で参照される。
【0048】
一方、計数回路ra206、rb207は、それぞれ予約レジスタデコーダ211からの書込指示信号Wra、Wrbに従って計数値をインクリメントし、前記計数回路a204、b205と同様の条件で計数値をデクリメントするカウンタである。書込指示信号Wra、Wrbは、プロセッサ40の命令デコード部5で解読された命令が、それぞれSR0、1に対する書込を予告する場合、予約レジスタデコーダ211から出力される。従って、計数回路ra206、rb207におけるインクリメントの回数は、結果的に計数回路a204、b205のそれらと同じになるが、インクリメントのタイミングが早い。計数回路ra206、rb207の計数値は、実際にFIFOa202、b203に格納されているデータの個数と、近い将来格納されるデータの個数の和を示す。なお、固有演算部213が必ず2項演算を行う場合、計数回路a204、b205はいずれか一方で足りるが、演算結果に対してSR0の値を繰り返し足していくような演算を実現する場合、両計数回路を別々に持つ必要がある。
【0049】
コプロセッサ出力制御部32はさらに、パイプライン処理情報生成部212を持つ。図4はその内部構成図である。同図のごとく、この構成は、演算完了判定部230と起動命令実行停止部231を含み、これらからコプロセッサレディ信号(以下単に「レディ信号」)220が出力される。演算完了判定部230は、演算の完了をソフトウエアのポーリングによってではなく、演算回路内部のシーケンサの状態をハードウエア的に監視することで検出する。ポーリングには一定のオーバヘッドが発生するためである。
【0050】
演算完了判定部230と起動命令実行停止部231の出力は、例えばワイアードオア形式で接続される。レディ信号220は、プロセッサ40がコプロセッサ50との間で処理のハンドシェイクを行うための信号であり、次の条件で出力される。
【0051】
1.SR0へのデータ転送命令の際
予約も考慮し、計数回路ra206の値がFIFOa202に格納できるデータの個数よりも小さいとき
2.SR1へのデータ転送命令の際
同様に、計数回路rb207の値がFIFOb203に格納できるデータの個数よりも小さいとき
3.SR2からのデータ転送命令の際
出力レジスタに演算結果が存在するとき
これらのうち、1と2の場合は前記起動命令実行停止部231によって、3の場合は前記演算完了判定部230によって、それぞれレディ信号220が出力される。このレディ信号220は、それぞれの命令のRステージでコプロセッサ50から出力され、同じステージにおいてプロセッサ40から参照される。レディ信号220が出力されたとき、プロセッサ40は上記1〜3のうち、現在発行が待たされている命令を発行する。Rステージで参照することにより、必要に応じて命令の破棄と再実行が可能となる。
【0052】
一方、図5は、プロセッサ40のパイプライン制御部9の内部構成の一部を示す図である。パイプライン制御部9はステージ進行制御部90を含み、ステージ進行制御部90は、取出命令実行停止部91と取出命令再実行部92を含む。取出命令実行停止部91はレディ信号220を参照し、コプロセッサ50がレディ状態になるまでコプロセッサ50で演算された演算結果をこれより取り出す演算結果取出命令の発行を停止する。取出命令再実行部92は、割込の発生によって演算結果取出命令が破棄された場合、この命令をIステージから再実行する。
【0053】
[動作]
以上の構成による動作をパイプライン関連動作を中心に説明する。
【0054】
図6は、本実施形態の装置によって演算起動命令(図中「命令1」と表記)および演算結果取出命令(同「命令2」)を実行するときのパイプライン処理を示す図である。実際には、命令1は、
LD SR0,(R0)
LD SR1,(R1)
の2つの命令によって構成されるが、ここでは説明の便宜上、1命令として描いている。一方、命令2は、
ST SR2,(R2)
である。
【0055】
まず、図6で命令1が実行される。命令1は演算を起動するだけであるため、I〜Wステージが1クロックづつで終わる。Wステージ(より正確には、そのステージの前半)でコプロセッサ50のレジスタに対する演算対象データの書込が完了するため、Wステージ(より正確には、その中途)からコプロセッサ50による演算が開始される。
【0056】
一方、プロセッサ40自体は命令1のRステージと並行して命令2のIステージを開始する。命令2は、命令1の演算結果を必要とするため、演算の完了まで発行が待たされる。演算実行中は、図4の演算完了判定部230がレディ信号220を出力せず、ノット・レディの状態に維持している。同図では、演算実行中、命令2がRステージを繰り返し、演算完了後のクロック(n+1)ではじめてAステージに進行している。
【0057】
図7は命令2がRステージにあるときにプロセッサ40に対して割込要求が発生した場合のパイプライン処理を示す図である。同図では、クロック6中の矢印が割込要求の発生タイミングを示す。プロセッサ40はクロック7で命令2を破棄し、命令フェッチ部3による命令フェッチは、割込処理ハンドラの先頭アドレスに飛ぶ。以降、ハンドラ処理が同様にパイプラインによって行われ、これが終了した後、図5の取出命令再実行部92により、命令2がIステージから再実行される。
【0058】
このように本実施形態では、コプロセッサ50による演算の実行を演算起動と演算結果取出の2段階に分けることにより、割込要求に対して即座に対応することができる。仮に命令1が、
MUL SR2,SR0,SR1 :SR0、1の積をSR2に格納
のごとく、演算の起動と結果の取出を兼ねる命令であれば、図7の命令1がAステージ(演算)で延々とつづく可能性があり、かつAステージでは命令の破棄が許されないため、割込要求が長時間待たされうる。本実施形態では、仮に命令2を破棄しても、演算の実行自体はコプロセッサ50によって続行されていため、処理性能上ほとんど問題がない。
【0059】
本実施形態では、予約という概念を導入した。すなわち、図3の予約レジスタデコーダ211と計数回路ra206、rb207により、コプロセッサ50内のFIFOa202、b203の予約が行われる。予約でフルの状態になれば、図4の起動命令実行停止部231がつぎの演算起動命令の発行を待たせるため、コプロセッサ50に対するデータ入力の過多状態が回避される。このことから逆に、いったんコプロセッサ50に入力することが許可されたデータについては、必ず円滑に演算が行われることが保証される。本実施形態では、コプロセッサ50に対するデータの書込が命令の最後ステージWで行われる。従って、後続の命令のAステージで、まだFIFOa202、b203に空きがあっても、これが前の命令のWステージで埋まる可能性がある。そのために、Aステージで正しく空きを把握できるよう、予約動作が必要かつ有用となる。
【0060】
以上が実施形態の概要である。なお、本実施形態については、以下の改良または変形が可能である。
【0061】
(1)本実施形態では、データ転送命令で直接コプロセッサ50の演算を起動したが、この必要はない。例えばADDなど、明示的な演算開始命令を演算起動命令としても同様の効果が得られる。
【0062】
(2)コプロセッサ50による演算は、単項演算、積和演算など一般的な演算に限られない。例えばコプロセッサ50に、周辺機器との通信の制御、マルチプロセッサ装置におけるプロセッサ間通信制御など、数値演算以外の演算を担当させてもよい。
【0063】
(3)ここでは5段のパイプライン構成を説明したが、これは任意の段数、任意の処理ステージからなるパイプラインでよい。
【0064】
(4)本実施形態では、演算完了の判定をコプロセッサ50側で行ったが、これはプロセッサ40側で行ってもよい。実際の設計では、プロセッサ40とコプロセッサ50の間に明確な境界線を引くことができないか、または引く必要がない。特に図4と図5の構成については、現実の設計方針に即して同様の効果を得る構成が多数存在すること注意すべきである。
【0065】
(5)本実施形態では、RICSプロセッサを例に挙げたが、これは当然、CISCまたはそれ以外のアーキテクチャであってもよい。
【0066】
(6)本実施形態では、命令破棄の要因として割込要求の発生を挙げたが、これは例外処理などいかなる要因であってもよい。
【0067】
(7)本実施形態では、Rステージで命令の実行を停止したが、異なるパイプライン構成をとる場合、異なるステージで停止することができる。設計の観点からすれば、ハードウエア資源の状態を変更する以前のステージで停止することが望ましいが、必ずしもそれに限るものではない。
【0068】
【発明の効果】
本発明の演算実行方法によれば、演算起動命令と演算結果取出命令を別々に設け、演算完了まで後者の実行を破棄可能な状態で停止するため、例外処理等が不当に待たされることはない。仮に例外処理が発生しても、演算自体を再実行する必要はなく、処理性能が落ちない。このためのハードウエアも複雑化、長大化しない。
【0069】
命令をパイプライン処理によって実行する場合、演算完了の判定をパイプライン処理動作の一環として行うことができるため、好都合である。
【0070】
一方、本発明の演算実行装置によれば、演算実行方法の効果を実際の装置として実現することができる。演算完了もハードウエア的に判定されるため、オーバヘッドによる性能低下もない。
【0071】
この装置がパイプライン制御手段を含むとき、演算結果取出命令の実行停止をパイプライン処理中の関連するステージで行うことができるため、回路構成上自然であり、設計上も好都合である。
【0072】
演算結果取出命令が解読されるステージ以前のステージでその命令の実行が停止されるときは、仮に例外処理が発生しても、ハードウエア資源の状態を変えることなく、例外処理を行うことができる。
【0073】
演算手段に対する予約の効果を考慮して演算起動命令の実行を停止する場合は、演算手段に対するデータ入力がパイプラインの後半のステージにある場合でも、そのデータ入力が予約されるため、演算手段に対してデータの入力が過多になることがない。演算手段がFIFO構造を持つ場合、いったん発行された命令は必ず最後まで実行されることを保証するものである。
【図面の簡単な説明】
【図1】V851によるパイプライン処理の様子を示す図である。
【図2】実施形態に係る演算実行装置の全体構成図である。
【図3】コプロセッサの内部構成を示す図である。
【図4】パイプライン処理情報生成部の内部構成図である。
【図5】プロセッサのパイプライン制御部の内部構成の一部を示す図である。
【図6】実施形態の装置によって演算起動命令および演算結果取出命令を実行するときのパイプライン処理を示す図である。
【図7】命令2がRステージにあるときに割込要求が発生した場合のパイプライン処理を示す図である。
【符号の説明】
1 命令メモリ、2 命令メモリバス、3 命令フェッチ部、5 命令デコード部、7 レジスタ群、9 パイプライン制御部、11 演算部、13 演算結果保持無部、14 データメモリアクセス制御部、15 汎用レジスタ書込制御部、18 データメモリバス、19 データメモリ、20 コプロセッサ入力バス、21 コプロセッサ入力制御バス、23 コプロセッサ出力制御バス、24コプロセッサ出力バス、27 割込信号入力部、30 コプロセッサ入力制御部、31 コプロセッサ演算部、32 コプロセッサ出力制御部、40 プロセッサ、50 コプロセッサ、90 ステージ進行制御部、91 取出命令実行停止部、92 取出命令再実行部、202 FIFOa、203 FIFOb、204 計数回路a、205 計数回路b、206 計数回路ra、207 計数回路rb、209 演算制御部、210 入力レジスタデコーダ、211 予約レジスタデコーダ、212 パイプライン処理情報生成部、213 固有演算部、214 出力レジスタデコーダ、220 レディ信号、230 演算完了判定部、231 起動命令実行停止部。
Claims (8)
- 命令の形で与えられる演算を実行する方法であって、
演算の起動を指示する演算起動命令と、その演算の結果を取り出す演算結果取出命令を別々に設け、
演算起動命令によって起動された演算の実行完了をハードウエアによって判定し、
その演算の実行が完了するまで、後続の演算結果取出命令の実行を、その演算結果取出命令自体を破棄することが可能な状態で停止することを特徴とする演算実行方法。 - 請求項1に記載の演算実行方法において、この方法は、
前記演算起動命令によって起動された演算の実行が完了する前であっても例外処理の要求を受け付け、
この要求が実際に発生したとき、実行中の前記演算結果取出命令を破棄し、
例外処理を行った後、前記演算結果取出命令を再実行することを特徴とする演算実行方法。 - 請求項1、2のいずれかに記載の演算実行方法において、
この方法は、命令をパイプライン処理によって実行するものであり、
前記演算起動命令によって起動された演算の実行完了の判定は、命令の実行状況を見てパイプラインのステージ進行を制御するときに、パイプライン処理動作の一環として行われることを特徴とする演算実行方法。 - 演算起動命令によって演算が起動され、演算結果取出命令によって演算結果が取り出されるよう構成された演算手段と、
演算起動命令によって起動された演算の実行完了をハードウエア的に判定する演算完了判定手段と、
演算の実行が完了するまで、後続の演算結果取出命令の実行を、その演算結果取出命令自体を破棄することが可能な状態で停止する取出命令実行停止手段と、
を含むことを特徴とする演算実行装置。 - 請求項4に記載の演算実行装置において、
この装置は、命令をパイプライン処理によって実行するパイプライン制御手段を含み、
このパイプライン制御手段は、前記取出命令実行停止手段を含み、
この取出命令停止手段は、前記演算の実行完了の判定結果に従い、演算結果取出命令の実行停止をパイプライン処理中の関連するステージにて行うことを特徴とする演算実行装置。 - 請求項5に記載の演算実行装置において、
前記取出命令実行停止手段は、演算結果取出命令が解読されるステージまたはそれよりも前のステージでその命令の実行を停止し、
前記パイプライン制御手段は、演算結果取出命令の実行が停止されている間に例外処理の要求が発生したとき、その例外処理の実行後に演算結果取出命令の実行を再開する取出命令再実行手段を含むことを特徴とする演算実行装置。 - 請求項4〜6のいずれかに記載の演算実行装置において、この装置はさらに、
演算起動命令が解読されたとき前記演算手段を利用する旨の予約を行う予約手段と、
この予約の状況に応じて演算起動命令の実行を停止する起動命令停止手段と、
を含むことを特徴とする演算実行装置。 - 請求項7に記載の演算実行装置において、
前記演算手段は、演算起動命令の実行の際に演算対象データが送り込まれ、演算結果取出命令の実行の際に演算結果データが取り出されるFIFO構造を有し、
前記起動命令停止手段は、このFIFO構造の段数と前記予約の回数との比較結果から演算起動命令の実行を停止することを特徴とする演算実行装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04409397A JP3630904B2 (ja) | 1996-02-29 | 1997-02-27 | 演算実行方法および演算実行装置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4272496 | 1996-02-29 | ||
JP8-42724 | 1996-02-29 | ||
JP04409397A JP3630904B2 (ja) | 1996-02-29 | 1997-02-27 | 演算実行方法および演算実行装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09292993A JPH09292993A (ja) | 1997-11-11 |
JP3630904B2 true JP3630904B2 (ja) | 2005-03-23 |
Family
ID=26382455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP04409397A Expired - Fee Related JP3630904B2 (ja) | 1996-02-29 | 1997-02-27 | 演算実行方法および演算実行装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3630904B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0415851D0 (en) * | 2004-07-15 | 2004-08-18 | Imagination Tech Ltd | Microprocessor output ports and control of instructions provided therefrom |
-
1997
- 1997-02-27 JP JP04409397A patent/JP3630904B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH09292993A (ja) | 1997-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101847857B1 (ko) | 스레드 일시중지 프로세서들, 방법들, 시스템들 및 명령어들 | |
US5218711A (en) | Microprocessor having program counter registers for its coprocessors | |
JP2004171573A (ja) | 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ | |
JPH03282904A (ja) | プログラマブルコントローラ | |
JP3510729B2 (ja) | 命令実行方法および命令実行装置 | |
KR20090042283A (ko) | 효율적 인터럽트 리턴 어드레스 저장 메커니즘 | |
JPH03233630A (ja) | 情報処理装置 | |
JP3630904B2 (ja) | 演算実行方法および演算実行装置 | |
JP3816844B2 (ja) | プロセッサ及び命令制御方法 | |
US7155718B1 (en) | Method and apparatus to suspend and resume on next instruction for a microcontroller | |
JPH096614A (ja) | データ処理装置 | |
US5737562A (en) | CPU pipeline having queuing stage to facilitate branch instructions | |
JP2005521937A (ja) | コンピュータオペレーティングシステムにおけるコンテキスト切り替え方法及び装置 | |
US5898877A (en) | Processor using special instruction set to enhance exception handling | |
JPH0384632A (ja) | データ処理装置 | |
US20040128484A1 (en) | Method and apparatus for transparent delayed write-back | |
CN118295712B (zh) | 数据处理方法、装置、设备和介质 | |
JPH0524537B2 (ja) | ||
US20020129229A1 (en) | Microinstruction sequencer stack | |
JP2924735B2 (ja) | パイプライン演算装置及びデコーダ装置 | |
JP3719241B2 (ja) | 演算装置 | |
JP3102399B2 (ja) | データ処理装置及び方法 | |
JP2002351658A (ja) | 演算処理装置 | |
JP2003029966A (ja) | データ処理装置 | |
JP3743155B2 (ja) | パイプライン制御型計算機 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20041125 |
|
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: 20041207 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041215 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081224 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081224 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091224 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101224 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101224 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111224 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |