JP3556246B2 - パイプラインプロセッサにおける割込み処理のための装置 - Google Patents
パイプラインプロセッサにおける割込み処理のための装置 Download PDFInfo
- Publication number
- JP3556246B2 JP3556246B2 JP23358093A JP23358093A JP3556246B2 JP 3556246 B2 JP3556246 B2 JP 3556246B2 JP 23358093 A JP23358093 A JP 23358093A JP 23358093 A JP23358093 A JP 23358093A JP 3556246 B2 JP3556246 B2 JP 3556246B2
- Authority
- JP
- Japan
- Prior art keywords
- address
- memory
- terminal
- memory storage
- instruction
- 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
- 230000005055 memory storage Effects 0.000 claims description 59
- 238000012545 processing Methods 0.000 claims description 41
- 230000006870 function Effects 0.000 claims description 29
- 230000002401 inhibitory effect Effects 0.000 claims description 5
- 238000013500 data storage Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 description 57
- 239000000872 buffer Substances 0.000 description 24
- 238000000034 method Methods 0.000 description 20
- 238000007667 floating Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 101100379079 Emericella variicolor andA gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000011084 recovery Methods 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/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
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)
Description
【産業上の利用分野】
本発明は、パイプライン制御により命令の実行処理の高速化を図っているパイプラインプロセッサにおいて割込み処理を行うための装置に関する。
【0002】
【従来の技術】
伝統的なコンピュータアーキテクチャは、命令の発行と実行が連続的に行われるシーケンシャルモデルに基礎を置くものであった。即ち、各命令は、次の命令が開始される前に完了される。このモデルに従ったエラー回復は非常に容易である。というのは、割込みが検出された時点におけるプログラムカウンタ、汎用レジスタ、メインメモリ等の状態は予め決められており、連続的に実行される最後の命令と矛盾が生じないからである。従って、連続的に実行される最後の命令のすぐ後のプログラム命令を実行することによって処理が容易に再開される。
【0003】
技術の進歩に伴って、複数の命令が同時に実行段階にあるパイプラインプロセッサが開発された。パイプライン化された命令の処理状態はシーケンシャルアーキテクチャモデルの命令とは異なる。つまり、割込みが検出された時の処理状態は全ての命令が連続的に実行された時の状態とは一致しない。この結果、処理の再開は不可能ではないまでも非常に困難である。
【0004】
パイプラインプロセッサにおいて割込み処理を行うための技術は、例えば、James E.Smith達による「パイプラインプロセッサにおける正確な割込み処理の実行」EEE TRANSACTIONS on Computers第37巻No.5(1988年5月発行)の第562〜573頁に開示されている。ここに開示された一つの方法(結果シフトレジスタ法)において、ある命令によって処理状態が変化するのは、その命令の前に発行されたすべての命令が例外状態(exception conditions)を発生しなかった場合だけである。これを達成するために、命令の実行を制御すべくN段の結果シフトレジスタが使用されている。ここでNは一つの命令を実行するのに必要なクロック数の最大値である。iクロックを必要とする命令は、発行された時に結果シフトレジスタのi段目に制御情報を置く。この制御情報は1クロック毎に1段ずつ1段目の方へシフトダウンされる。制御情報が1段目に達すれば、次のクロック周期でこの情報は、命令によって発生した結果データがそのとき正しい結果レジスタに記憶されるようにハードウェアを制御するために使用される。
【0005】
先に発行された命令の制御情報がj段目(j>i)に置かれている場合に、命令が処理状態を順序正しく変化させることを確実にするためには、その命令の制御情報をi段目に置いてはならない。このように、j段目に制御情報を置く命令が発行されるとj以下の段が全て確保される。その後、確保された段を指定する命令が発行された場合は、指定された段の確保が解除されるまで、その命令は発行ステージで待機しなければならない。
【0006】
上記の方法の主たる問題点は、速い命令が、他の命令と独立して別個に発行可能であっても、発行レジスタのところで停止してしまうことにある。更に、停止した命令が、その後におそらく発行可能な遅い命令の発行レジスタをも塞いでしまう。
【0007】
開示された別の方法(リオーダバッファ法)は、命令の順番通りでない完了を許容することにより問題点を解決するものであるが、結果シフトレジスタに加えてリオーダ(reorder)バッファと呼ばれる特殊な循環バッファを使用して、命令が処理状態を変化させる前に命令の順番を再編成する。命令が発行される毎に、この命令によって発生する結果データのために確保された領域を含む次の連続するリオーダバッファ段に制御情報がロードされる。このようにリオーダバッファへのエントリによって発行シーケンスが保存される。命令に対応するリオーダバッファのエントリを識別するために、適当な結果シフトレジスタ段にタグが置かれる。
【0008】
一つの命令が完了すると、結果データと例外状態とがリオーダバッファに記憶される。リオーダバッファの先頭のエントリに有効な結果がある(それに対応する命令が完了している)場合は、例外データがチェックされる。例外データが無い場合は、結果データがレジスタに書き込まれる。例外データがある場合は、命令の発行が停止され、以降のレジスタファイルへの書き込みがすべて禁止される。
【0009】
この方法は前述の結果レジスタ法の改良ではあるが、この方法においても性能の低下は免れない。例えば、互いに独立した命令であるにもかかわらず、後に完了する前の命令によってレジスタファイルが更新されるまで、順番から外れて発生した計算結果がリオーダバッファに保持される。更に、リオーダバッファに保持されている結果の影響を受ける命令は、結果がレジスタファイルに書き込まれるまで発行することができない。
【0010】
開示された第3の方法(履歴バッファ法)は、上述の結果レジスタ法と記録バッファ法との両方の問題点を解決しようとするものである。この方法によれば、計算結果は作業レジスタファイルに置かれるが、例外状態が発生したときに正確な状態を回復するのに十分な情報は履歴(history)バッファに記憶される。この履歴バッファは前述のリオーダバッファとよく似た構造及び機能を有する。命令が発行されると、履歴バッファのエントリに制御情報がロードされ、目的地レジスタの現在値(発行命令によってオーバーライトされる)がレジスタファイルから読み出されてバッファエントリに書き込まれる。命令によって発生した結果は命令が完了する時にレジスタファイルに直接書き込まれる。例外データは履歴バッファに書き込まれる。履歴バッファの先頭のエントリから、例外状態を発生せずに完了したことがわかる場合は、それ以降の履歴バッファエントリは不要であり、そのバッファ位置は他に使用できる。
【0011】
バッファの先頭エントリに例外状態が検出された場合は、バッファはホールドされ、命令の発行はすぐに中断され、パイプラインにある命令はキャンセルされる。次に、能動状態のバッファエントリが最後から先頭へ順に空にされ、履歴値(history values)はそれぞれの対応するレジスタへ戻される。その後、例外状態を発生させた命令とそれに続くすべての命令とを再発行することによってプログラムが再開される。この方法の主な欠点は、例外状態が検出された時にパイプラインレジスタにある命令がキャンセルされることである。つまり、キャンセルされた命令は、例外状態が検出された時に正常に完了していたとしても、システムが再開する時に再実行されることになる。
【0012】
【発明が解決しようとする課題】
以上のように、従来の各種の方法は解決すべきそれぞれの欠点を有するものであった。そこで本発明の目的は、従来の方法をさらに改良して、命令がシーケンスを外れて完了すことを可能にすると共に、例外状態が検出された時にも命令の同時実行を可能にするパイプラインプロセッサにおける割込み処理のための装置を提供することにある。
【0013】
【課題を解決するための手段】
本発明によるパイプラインプロセッサにおける割込み処理のための装置の主な特徴は、第1メモリと第2メモリと第3メモリとを備え、前記第1メモリは、アドレス指定可能な複数の第1メモリ記憶素子と、第1アドレスを第1命令から受け取るために前記複数の第1メモリ記憶素子に接続された第1アドレス入力手段と、第2アドレスを前記第1命令から受け取るために前記複数の第1メモリ記憶素子に接続された第2アドレス入力手段と、第3アドレスを受け取るために前記複数の第1メモリ記憶素子に接続された第3アドレス入力手段と、前記第1アドレスによってアドレス指定された第1オペランドを出力するため、及び、前記第2アドレスによってアドレス指定された第2オペランドを出力するために、前記複数の第1メモリ記憶素子に接続された第1メモリ出力手段とを有し、前記第1オペランド及び前記第2オペランドに関数処理を行い結果データを生成するために前記第1メモリ出力手段に接続された命令実行手段とを有し、前記第2メモリは、アドレス指定可能な複数の第2メモリ記憶素子を有し、前記第1アドレスを前記第2メモリ記憶素子の一つに記憶するために前記第1アドレス入力手段と前記第2メモリ記憶素子とに接続され、前記第3アドレス入力手段に前記第1アドレスを第3アドレスとして出力するために、前記第2メモリ記憶素子及び前記第3アドレス入力手段(SBIN端子)に接続されており、前記結果データを前記第3アドレスによってアドレス指定された前記第1メモリ記憶素子に選択的に記憶するために前記第2メモリ及び前記第3アドレス入力手段に接続された第1メモリ記憶制御手段を有し、前記第3メモリは、アドレス指定可能な複数の第3メモリ記憶素子を有し、第4アドレスを受け取るために前記複数の第3メモリ記憶素子に接続され、前記第2オペランドを前記第4アドレスによってアドレス指定された前記第3メモリ記憶素子に記憶するために前記第1メモリ出力手段及び前記複数の第3メモリ記憶素子に接続されており、前記関数処理が実行された時に例外 (exception) が発生したか否かを示す例外データを生成する例外手段を前記命令実行手段が有し、前記第1メモリ記憶制御手段は、前記第1メモリと前記例外手段とに接続された禁止手段を有し、前記禁止手段は、前記関数処理が実行された時に例外が発生したことを前記例外データが示している場合に、前記第3アドレスによってアドレス指定された前記第1メモリ記憶素子に前記結果データを記憶することを禁止することを特徴とする点にある。
【0014】
【0015】
さらに、前記第1アドレス入力手段と前記第2アドレス入力手段とに接続され、各命令の第1アドレスを前記第1アドレス入力手段に伝送することにより、且つ、各命令の第2アドレスを前記第2アドレス入力手段に伝送することにより、複数の命令を発行する命令発行手段や、前記命令発行手段と前記第2メモリとに接続され、第2命令の第1アドレスが前記第2メモリに記憶された第1アドレスに一致した場合に、前記第2命令の発行を禁止する発行制御手段を備えていることが好ましい。その他の好ましい具体構成については後述する。
【0016】
【作用】
第1メモリである浮動小数点レジスタが複数の第1メモリ記憶素子を有し、第1アドレス入力手段が第1命令からBオペランドアドレスを受け取り、第2アドレス入力手段が第1命令からAオペランドアドレスを受け取る。A及びBオペランドアドレスは、複数の第1メモリ記憶素子である浮動小数点レジスタ記憶素子の一つをアドレス指定するのに使用される。第1メモリ出力手段である浮動小数点レジスタ出力手段がA及びBオペランドアドレスによってアドレス指定されたオペランドデータを出力する。
【0017】
命令実行手段が、浮動小数点レジスタから出力されたオペランドデータに基づいて、第1命令によって指定された関数処理を実行して結果データを生成する。命令実行手段が有する例外手段は、関数処理が実行された時に例外が発生したか否かを示す例外データを生成する。
【0018】
第2メモリであるシフトレジスタが有する複数の記憶素子が、アドレスと制御情報とを記憶する。第2メモリが複数のシフトレジスタ記憶素子のうちの選択された一つの素子にBオペランドデータを入力することにより、第1命令に対応する結果データが命令実行手段から出力されるのとほぼ同時に、記憶された第1命令のBオペランドアドレスがシフトレジスタ出力手段から出力される。第2命令のAオペランドアドレス又はBオペランドアドレスがシフトレジスタに記憶されたBオペランドアドレスと一致している場合は、この第2命令の発行は禁止される。この状況では第1命令に対する依存性が存在するからである。
【0019】
浮動小数点レジスタが有するアドレス入力手段は、シフトレジスタ出力手段から出力されたBオペランドアドレスを受け取る。関数処理が実行された時に例外が発生しない限り、第1メモリ記憶制御手段である浮動小数点レジスタ記憶制御手段が第1命令に対応する結果データを前述の記憶された第1命令Bオペランドアドレスによってアドレス指定された浮動小数点レジスタ記憶素子に記憶する。しかし、例外が発生した時には、誤りである可能性が高い値によって旧のBオペランド値が破壊されてしまわないように、浮動小数点レジスタ記憶制御手段は結果データの浮動小数点レジスタへの記憶を禁止する。
【0020】
第3メモリであるオペランドキュー(待ち行列)が、オペランドデータを記憶するための複数の記憶素子を有している。このオペランドキューが受け取るライトアドレス及びリードアドレスは、複数の第3メモリ記憶素子であるオペランドキュー記憶素子の一つをアドレス指定するのに使用される。オペランドキューデータ記憶手段が、浮動小数点レジスタから出力されたAオペランドデータをライトアドレスによってアドレス指定されたオペランドキュー記憶素子に記憶し、オペランドキュー出力手段が、リードアドレスによってアドレス指定されたAオペランド記憶データを出力する。
【0021】
第4メモリであるトラップキューが備えられ、例外データを出力した命令に対応するAオペランドデータを記憶するための複数の記憶素子を有している。トラップキューが受け取るライトアドレス及びリードアドレスは、複数の第4メモリ記憶素子であるトラップキュー記憶素子の一つをアドレス指定するのに使用される。例外状態が検出された場合は常に、トラップキュー記憶手段がオペランドキューから出力されたAオペランドデータをライトアドレスによってアドレス指定されたトラップキュー記憶素子に記憶し、トラップキュー出力手段がリードアドレスによってアドレス指定されたデータを出力する。
【0022】
例外が検出されたときは常に浮動小数点レジスタへの書き込みが禁止されるので、対応する命令のBオペランドの元の値が依然有効である。更に、Aオペランドの元の値がオペランドキューに記憶される。例外が検出されたとき、オペランドキューに記憶されたAオペランドはトラップキューに移される。命令の発行が停止され、パイプライン内の残りの命令の実行は継続され、以降の例外も同様に取り扱われる。パイプラインがクリアされた後、トラップされた命令のA及びBオペランドの元の値がトラップキューと浮動小数点レジスタとにそれぞれ記憶される。トラップされた命令は、処理状態をシーケンシャルアーキテクチャモデルに対応するように更新すべく記憶された値を使用して再実行(又はシミュレート)される。その後、第1の例外的状態を発生させた命令からではなく、例外が検出された時に発行される直前であったプログラム命令から処理が再開される。
【0023】
【発明の効果】
従って本発明によれば、例外状態が検出された時にも命令の同時実行が可能となり、従来より一層処理速度を向上することができる。
【0024】
【実施例】
以下、本発明の実施例を図面に基づいて説明する。図1は、パイプラインコンピュータシステムにおいて割込み処理を実行するための装置10の概念を示すブロック図である。装置10は、「A op B =B」なる形式の命令を発行する命令発行器14を有している。命令発行器14は、通信線24,26を通してAアドレスレジスタ18にAオペランドアドレスを、Bアドレスレジスタ22にBオペランドアドレスをそれぞれ与える。そして、各アドレスレジスタ18,24から通信線34,38を通して浮動小数点レジスタ30の第2アドレス入力手段であるAIN端子と第1アドレス入力手段であるBIN端子とに、第2及び第1アドレスであるA及びBのオペランドアドレスがそれぞれ与えられる。命令発行器14はロード/ストア命令をも発行し、ロード/ストアアドレスは通信線90を通してロード/ストアアドレスレジスタ92へ伝送される。ロード/ストアアドレスは通信線94を通してロード/ストアアドレスレジスタ92から浮動小数点レジスタ30のLSIN端子に入力される。
【0025】
浮動小数点レジスタ30は、キャッシュメモリ等から通信線42を通してメモリデータが入力されるとともに通信線46を通して他のデータ処理手段へデータを出力する汎用レジスタのスタックを備えている。A及びBのオペランドアドレスによってアドレス指定されたオペランドは単一エレメントによって代表されている複数の関数ユニット50に、第1メモリ出力手段であるAOUT端子、BOUT端子から通信線54,58を通して伝送される。関数ユニット50は、A及びBのオペランドの関数を実行し、その結果データを浮動小数点レジスタ30のRIN端子に通信線62を通して伝送する。又、関数ユニット50は、その関数を実行中に例外(トラップ)が発生した場合に、例外データを通信線66に出力する。
【0026】
Bアドレスレジスタ22に記憶されたBオペランドアドレスをシフトレジスタ84の複数の段80A〜80Hの一つに通信線88を通して伝送すべく、シフトレジスタロード回路72が通信線38に接続されている。シフトレジスタ段80Hには後述の理由で遅延素子81が接続されている。又、後述の理由により、制御情報(通信線66を通して伝送される例外データを含む)が通信線103を通してロードされる制御シフトレジスタ段98A〜98Hが各シフトレジスタ段80A〜80Hに接続されている。
【0027】
ロード/ストアアドレスレジスタ92に記憶されたロード/ストアアドレスを複数のシフトレジスタ段96A〜96Hの一つに通信線97を通して伝送すべく、別のシフトレジスタロード回路73が通信線94に接続されている。後述の理由により、シフトレジスタ段96A,96Bには、制御情報が通信線101を通してロードされる制御シフトレジスタ段99A,99Bが接続されている。
【0028】
シフトレジスタ84にはクロック信号線100を通してクロック信号が供給される。後述の理由により、シフトレジスタ段80A〜80H,96A,96B,98A〜98Hは記憶されたデータを各クロック信号毎に1シフトレジスタ段ずつシフトする。
【0029】
シフトレジスタ段80A,98A,99A,96Aは記憶されたデータをそれぞれの通信線105〜108を通して記憶制御回路104に伝送する。記憶制御回路104はシフトレジスタ段80A,98A,99A,96Aからのデータを、通信線111,112,113,115を通して、浮動小数点レジスタ30の第3アドレス入力手段であるSBIN,SCTL,SLSCTL,SLSINの各端子にそれぞれ伝送する。
【0030】
装置10は、更に、オペランドキュー(オペランド待ち行列)114とトラップキュー(トラップ待ち行列)118とからなるトラップレジスタ110を有している。オペランドキュー114は、通信線54に接続された通信線128を通して受け取ったAオペランド値を記憶するための複数の記憶手段を有している。最初の命令に対応するプログラムカウンタ値を、Aオペランド値と共にオペランドキュー114に記憶させてもよく、あるいはCPUに別個に記憶させてもよい。オペランドキュー114用のライトアドレスとして使用される第4アドレスであるカウント値はLカウンタ122が発生し、発生したアドレスは通信線124を通してオペランドキュー114へ、そして通信線132を通してシフトレジスタ段98A〜98Hへ伝送される。伝送されたライトアドレスは、シフトレジスタ段98Aまでシフトされると、記憶制御回路104から通信線136を通ってオペランドキュー114へ戻される。通信線136上の第5アドレスからなるアドレスはオペランドキュー114のリードアドレスとして機能する。
【0031】
オペランドキュー114から読み取られたオペランド(及びオプションのプログラムカウンタ値)は、第3メモリ出力手段であるJ端子から通信線150を通してトラップキュー118の第2メモリデータ記憶手段であるM端子に伝送される。トラップキュー118用のアドレスとして使用される第6アドレスとしてのカウント値はMカウンタ138が発生し、発生したアドレスは通信線136を通してトラップキュー118に伝送される。Mカウンタ138には通信線146を介してMカウンタ初期化回路142が接続されている。Mカウンタ初期化回路142は通信線66に接続され、例外状態の最初の発生に対応してMカウンタ138を初期化する。トラップキュー118用のアドレスとして使用される第7アドレスとしてのカウント値はKカウンタ151が発生し、発生したアドレスは通信線146を通してトラップキュー118に伝送される。Kカウンタ151には通信線158を介してKカウント初期化回路154が接続されている。
【0032】
トラップキュー118から読み出されたオペランドは、第4メモリ出力手段であるK端子から通信線184を通して特殊関数回路180に伝送される。特殊関数回路180は、命令発行器14から通信線188を通して受け取られる信号によって制御され、記憶されたオペランドを通信線192を通して通信線62に与える。又、特殊関数回路180は制御信号を通信線196を通してトラップレジスタ110に与える。
【0033】
特殊関数回路180は、MOVE命令のようにソースオペランドを通常一つだけ含み(例えばAオペランド)例外状態を発生させない単純な命令のために、関数ユニット50の代わりに用いられる。命令発行器14は、関数ユニット50がバイパスされることを特殊関数回路180に知らせる信号を通信線188に与える。これに応じて特殊関数回路180は、オペランドキュー114のLカウンタ122にて指示されたアドレスに記憶されたAオペランドをトラップキュー118のKカウンタ151にて指示されたアドレスへ直ちに転送するための信号を、通信線196を通してトラップレジスタ110に与える。トラップレジスタ110はオペランドを特殊関数回路180に伝送し、特殊関数回路180にて所定の処理がオペランドに施される。その結果が(あれば)、通信線192及び62を通して浮動小数点レジスタ30のRIN端子に伝送される。
【0034】
装置10の全体処理は次の通りである。命令発行器14が、通信線24,26を通してAオペランドアドレスをAアドレスレジスタ18に、BオペランドアドレスをBアドレスレジスタ22にそれぞれ与えることにより命令を発行する。A及びBのオペランドアドレスは次に浮動小数点レジスタ30に送られ、記憶されたオペランドのアドレス指定に用いられる。指定されたオペランドは通信線54,58を通して関数ユニット50に送られる。これと同時に、シフトレジスタロード回路72がBオペランドアドレスをシフトレジスタ段80A〜80Hの一つにストアし、これによってBオペランドアドレスは、対応する命令の結果データが関数ユニット50によって通信線62に与えられるのとほぼ同時にシフトレジスタ段80Aにシフトされる。例えば、3クロック周期を必要とする命令に対応するBオペランドアドレスであればシフトレジスタ段80Cにストアされる。
【0035】
本実施例において、浮動小数点除算命令以外のすべての命令は7クロック周期以下で実行されるが、浮動小数点除算命令の実行には例えば30クロック周期が必要である。そこで、シフトレジスタ84を30段にする代わりに、浮動小数点除算命令用のBオペランドアドレスをシフトレジスタ段80Hにストアし、遅延素子81によって時間を稼いで7クロック周期が残るようにする。その後、Bオペランドアドレスはシフトレジスタ段80Gへとシフトされ、以後は他の命令のBオペランドアドレスと同様に処理される。
【0036】
ロード/ストア命令の場合は、ロード/ストアアドレスがロード/ストアアドレスレジスタ92に置かれたのち浮動小数点レジスタ30とシフトレジスタ段96A,96Bとに伝送される。本実施例において、ロード/ストア命令は2クロック周期を要するので、ロード/ストアアドレスはシフトレジスタ段96Bに入力される。
【0037】
Aオペランドが通信線54に与えられると、オペランドキュー114にも伝送され、Lカウンタ122によって生成された値によって指定された位置に(場合によっては対応するプログラムカウンタ値と共に)記憶される。Lカウンタ値はシフトレジスタ段98A〜98Hにも送られ、Bオペランドアドレスを記憶しているシフトレジスタ段80A〜80Hのいずれかに対応するシフトレジスタ段に記憶される。例えば、Bオペランドアドレスがシフトレジスタ段80Eに記憶されていた場合はLカウンタ値がシフトレジスタ段98Eに記憶される。
【0038】
命令のBオペランドアドレスは、対応する制御情報と共に、各クロック毎に1レジスタ段ずつシフトレジスタ段80A及び98Aまでシフトされる。その時、記憶制御回路104が制御情報を調べてBオペランドアドレスを浮動小数点レジスタ30のSBIN端子へ伝送する。更に、最初の命令の結果データが通信線62を通して浮動小数点レジスタのRIN端子に伝送されなければならない。次に、通信線111上の第3アドレスであるBオペランドアドレスによって指定された位置に結果データを記憶するための信号が通信路112を通して浮動小数点レジスタ30のSCTL端子に伝送される。
【0039】
オペランドデータに関数処理が実行されている間に例外状態が発生すれば、例外データが通信線66に出力され、命令のBオペランドアドレスに対応するシフトレジスタ段と記憶制御回路104とに伝送される。例外データがシフトレジスタ段98Aまでシフトされると、記憶制御回路104が結果データの浮動小数点レジスタ30への記憶を禁止する信号を通信線112に出力して浮動小数点レジスタ30のSCTL端子に伝送する。更に、シフトレジスタ段98Aに記憶されたオペランドキューアドレスが通信線136を通してオペランドキュー114に送られ、例外(exception) を発生した命令に対応するAオペランドをアドレス指定する。アドレス指定されたAオペランド(及びオプションのプログラムカウンタ値)は通信線150を通してトラップキュー118へ伝送され、Mカウンタ138が発生したアドレスに記憶される。初めて例外が発生したのであれば、Aオペランドがトラップキュー118に記憶される前にMカウンタ初期化回路142がMカウンタ138を初期化する。そうでない場合は、Aオペランドがトラップキュー118に記憶される前にMカウンタがインクレメントされる。
【0040】
ロード/ストア命令が発行されていた場合は、命令のロード/ストアアドレスが、対応する制御情報と共に、各クロック毎に1レジスタ段ずつシフトレジスタ段98A,99Aまでシフトされる。その時、記憶制御回路104が制御情報を調べてロード/ストアアドレスを通信線115を通して浮動小数点レジスタ30のSLSIN端子に伝送する。ロード命令である場合は、メモリデータが通信線42を通して浮動小数点レジスタ30のMDIN端子に送られなければならない。その後、通信線113上のロード/ストアアドレスによってアドレス指定された位置にメモリデータを記憶するための信号が通信線113を通して浮動小数点レジスタ30のSLSCTL端子に与えられる。ストア命令である場合は、アドレス指定されたメモリデータを通信線46に出力するための信号が通信線113に出力され浮動小数点レジスタ30のSLSCTL端子に伝送される。
【0041】
通常、ロード/ストア命令では指定された旧値を記憶しておく必要はない。従ってこれらの命令は、関数ユニット50を使用する命令と同時に実行されることが許容される。しかしながら、何らかの理由によりロード/ストア命令が中断されるべき場合は、その影響に関する制御情報が通信路101を通してシフトレジスタ段99A又は99Bに記憶される。制御情報がシフトレジスタ段99Aまでシフトされると、記憶制御回路104はロード/ストア命令を禁止する信号を通信路113を通して浮動小数点レジスタ30のSLSCTL端子に伝送する。
【0042】
パイプラインプロセッサにおける割込処理のための公知の装置とは異なり、既に発行された命令は、前の命令において例外状態が発生した場合であっても継続実行が許容される。トラップされた命令に続く命令が自らは例外状態を発生することなく完了した場合は、結果データは通常の場合と同様に記憶される。他の命令が例外状態を発生させた場合は、結果データの記憶は禁止され、オペランドキュー114に記憶された関連するAオペランドがトラップキュー118のMカウンタ138(例外状態が発生する毎にインクレメントされる)によって指定されるアドレスに転送される。シフトレジスタ84が空になった後、Kカウント初期化回路154がKカウンタ151を初期化し、Aオペランドがトラップレジスタ118から読み出され、通信線184,192を通して浮動小数点レジスタ30のRIN端子に伝送され記憶される。例外状態を発生させた命令は、その後トラップレジスタ118又はCPUに記憶されたプログラムカウンタ値を用いて再実行され、或はシーケンシャルアーキテクチャモデルに対応するように浮動小数点レジスタ30を更新すべく適当なソフトウェアにてシミュレートされる。
【0043】
以上説明した本発明の実施例に種々の変更を施して実施してもよい。例えば、Bオペランド値を記憶する別のトラップレジスタを追加することによって、「Aop B = C」なる形式の命令を発行する命令発行器と共に使用できるように改造することも可能である。
【図面の簡単な説明】
【図1】本発明によるパイプラインプロセッサにおける割込処理のための装置の一実施例を示すブロック図
【符号の説明】
14 命令発行手段
AIN 第2アドレス入力手段
BIN 第1アドレス入力手段
30 第1メモリ
50 命令実行手段
84 第2メモリ
SBIN 第3アドレス入力手段
104 第1メモリ記憶制御手段
114 第3メモリ
118 第4メモリ平成15年12月24日付けで出願人名義変更届を提出しております。
Claims (15)
- コンピュータシステムにおいて命令の実行処理を行うための装置であって、
第1メモリ(30)と第2メモリ(84)と第3メモリ(114)とを備え、
前記第1メモリ(30)は、アドレス指定可能な複数の第1メモリ記憶素子と、第1アドレスを第1命令から受け取るために前記複数の第1メモリ記憶素子に接続された第1アドレス入力手段(BIN端子)と、第2アドレスを前記第1命令から受け取るために前記複数の第1メモリ記憶素子に接続された第2アドレス入力手段(AIN端子)と、第3アドレスを受け取るために前記複数の第1メモリ記憶素子に接続された第3アドレス入力手段(SBIN端子)と、前記第1アドレスによってアドレス指定された第1オペランドを出力するため、及び、前記第2アドレスによってアドレス指定された第2オペランドを出力するために、前記複数の第1メモリ記憶素子に接続された第1メモリ出力手段(AOUT端子、BOUT端子)とを有し、
前記第1オペランド及び前記第2オペランドに関数処理を行い結果データを生成するために前記第1メモリ出力手段(BOUT端子、AOUT端子)に接続された命令実行手段(50)とを有し、
前記第2メモリ(84)は、アドレス指定可能な複数の第2メモリ記憶素子を有し、前記第1アドレスを前記第2メモリ記憶素子の一つに記憶するために前記第1アドレス入力手段(BIN端子)と前記第2メモリ記憶素子とに接続され、前記第3アドレス入力手段(SBIN端子)に前記第1アドレスを第3アドレスとして出力するために、前記第2メモリ記憶素子及び前記第3アドレス入力手段(SBIN端子)に接続されており、
前記結果データを前記第3アドレスによってアドレス指定された前記第1メモリ記憶素子に選択的に記憶するために前記第2メモリ(84)及び前記第3アドレス入力手段(SBIN端子)に接続された第1メモリ記憶制御手段(104)を有し、
前記第3メモリ(114)は、アドレス指定可能な複数の第3メモリ記憶素子を有し、第4アドレスを受け取るために前記複数の第3メモリ記憶素子に接続され、前記第2オペランドを前記第4アドレスによってアドレス指定された前記第3メモリ記憶素子に記憶するために前記第1メモリ出力手段(AOUT端子)及び前記複数の第3メモリ記憶素子に接続されており、
前記関数処理が実行された時に例外 (exception) が発生したか否かを示す例外データを生成する例外手段を前記命令実行手段(50)が有し、
前記第1メモリ記憶制御手段(104)は、前記第1メモリ(30)と前記例外手段とに接続された禁止手段を有し、
前記禁止手段は、前記関数処理が実行された時に例外が発生したことを前記例外データが示している場合に、前記第3アドレスによってアドレス指定された前記第1メモリ記憶素子に前記結果データを記憶することを禁止することを特徴とするパイプラインプロセッサにおける割込み処理のための装置。 - 前記第3メモリ(114)は、第5アドレスを受け取り、更に、
前記第5アドレスに対応する第3オペランドを出力するために前記複数の第3メモリ記憶素子に接続された第3メモリ出力手段(J端子)を有している請求項1記載のパイプラインプロセッサにおける割込み処理のための装置。 - アドレス指定可能な複数の第4メモリ記憶素子を有し、
第6アドレスを受け取り、更に、
前記第3オペランドを前記第6アドレスによってアドレス指定された前記第4メモリ記憶素子に記憶するために前記第3メモリ出力手段(J端子)及び前記複数の第4メモリ記憶素子に接続された第2メモリデータ記憶手段(M端子)を有する第4メモリ(118)を備えている請求項2記載のパイプラインプロセッサにおける割込み処理のための装置。 - 前記第4メモリ(118)は、第7アドレスを受け取り、更に、
前記第7アドレスに対応する第4オペランドを出力するために前記第4メモリ記憶素子に接続された第4メモリ出力手段(K端子)を備えている請求項3記載のパイプラインプロセッサにおける割込み処理のための装置。 - 前記第4アドレスによってアドレス指定された前記第3メモリ記憶素子の一つに記憶されたデータを、前記第7アドレスによってアドレス指定された前記複数の第4メモリ記憶素子の一つに直接伝送するために前記第3メモリ(114)と前記4メモリ(118)とを接続する請求項4記載のパイプラインプロセッサにおける割込み処理のための装置。
- 前記第2メモリデータ記憶手段(M端子)は、前記例外手段に接続され、前記関数処理が実行された時に例外が発生したことを前記例外データが示している場合に、前記第5アドレスによってアドレス指定された前記第3メモリ記憶素子からの出力データを、前記第6アドレスによってアドレス指定された前記第4メモリ記憶素子の一つに記憶する請求項3記載のパイプラインプロセッサにおける割込み処理のための装置。
- 前記第1メモリ記憶制御手段(104)は、前記第2メモリ(84)と前記第3メモリ(114)とに接続された第4アドレス記憶手段を有し、
この第4アドレス記憶手段は、前記第4アドレスが前記第3アドレスとほぼ同時に前記第2メモリ(84)によって出力されるように、選択された前記第2メモリ記憶素子に対応する第2メモリ記憶素子に前記第4アドレスを記憶する請求項6記載のパイプラインプロセッサにおける割込み処理のための装置。 - 前記第3メモリ(114)は、前記第2メモリ(84)に接続され、前記関数処理が実行された時に例外が発生したことを前記例外データが示している場合に、前記第5アドレスからなる前記第4アドレスを受け取る請求項7記載のパイプラインプロセッサにおける割込み処理のための装置。
- 前記第4メモリ(118)は、第7アドレスを受け取るために前記第4メモリ記憶素子に接続され、更に、
前記第7アドレスに対応する第4オペランドを出力するために前記第4メモリ記憶素子に接続された第4メモリ出力手段(K端子)を備えている請求項8記載のパイプラインプロセッサにおける割込み処理のための装置。 - 前記第4アドレスによってアドレス指定された前記第3メモリ記憶素子の一つに記憶されたデータを、前記第7アドレスによってアドレス指定された前記複数の第4メモリ記憶素子の一つに直接伝送するために前記第3メモリ(114)と前記4メモリ(118)とを接続する請求項9記載のパイプラインプロセッサにおける割込み処理のための装置。
- 前記第1アドレス入力手段(BIN端子)と前記第2アドレス入力手段(AIN端子)とに接続され、各命令の第1アドレスを前記第1アドレス入力手段(BIN端子)に伝送することにより、且つ、各命令の第2アドレスを前記第2アドレス入力手段(AIN端子)に伝送することにより、複数の命令を発行する命令発行手段(14)を備えている請求項10記載のパイプラインプロセッサにおける割込み処理のための装置。
- 前記命令発行手段(14)と前記第2メモリ(84)とに接続され、第2命令の第1アドレスが前記第2メモリ(84)に記憶された第1アドレスに一致した場合に、前記第2命令の発行を禁止する発行制御手段を備えている請求項11記載のパイプラインプロセッサにおける割込み処理のための装置。
- 前記第1アドレス入力手段(BIN端子)と前記第2アドレス入力手段(AIN端子)とに接続され、各命令の第1アドレスを前記第1アドレス入力手段(BIN端子)に伝送することにより、且つ、各命令の第2アドレスを前記第2アドレス入力手段(AIN端子)に伝送することにより、複数の命令を発行する命令発行手段(14)を備えている請求項1又は6又は8記載のパイプラインプロセッサにおける割込み処理のための装置。
- 前記命令発行手段(14)と前記第2メモリ(84)とに接続され、第2命令の第1アドレスが前記第2メモリ(84)に記憶された第1アドレスに一致した場合に、前記第2命令の発行を禁止する発行制御手段を備えている請求項13記載のパイプラインプロセッサにおける割込み処理のための装置。
- 前記命令実行手段(50)が、前記第2メモリ(84)と前記例外手段とに接続され、選択された前記第2メモリ記憶素子に対応する第2メモリ記憶素子に前記例外データを記憶して、前記第2メモリ(84)から前記例外データと前記第3アドレスとをほぼ同時に出力する請求項1又は8又は12記載のパイプラインプロセッサにおける割込み処理のための装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US94721592A | 1992-09-18 | 1992-09-18 | |
US947215 | 1992-09-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06195229A JPH06195229A (ja) | 1994-07-15 |
JP3556246B2 true JP3556246B2 (ja) | 2004-08-18 |
Family
ID=25485754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP23358093A Expired - Fee Related JP3556246B2 (ja) | 1992-09-18 | 1993-09-20 | パイプラインプロセッサにおける割込み処理のための装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5504925A (ja) |
EP (1) | EP0588252B1 (ja) |
JP (1) | JP3556246B2 (ja) |
CA (1) | CA2105806C (ja) |
DE (1) | DE69318914T2 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG48907A1 (en) * | 1993-12-01 | 1998-05-18 | Intel Corp | Exception handling in a processor that performs speculative out-of-order instruction execution |
US6006033A (en) * | 1994-08-15 | 1999-12-21 | International Business Machines Corporation | Method and system for reordering the instructions of a computer program to optimize its execution |
US5649088A (en) * | 1994-12-27 | 1997-07-15 | Lucent Technologies Inc. | System and method for recording sufficient data from parallel execution stages in a central processing unit for complete fault recovery |
US5893930A (en) * | 1996-07-12 | 1999-04-13 | International Business Machines Corporation | Predictive translation of a data address utilizing sets of associative entries stored consecutively in a translation lookaside buffer |
US5778220A (en) * | 1996-11-18 | 1998-07-07 | Intel Corporation | Method and apparatus for disabling interrupts in a highly pipelined processor |
US6216222B1 (en) | 1998-05-14 | 2001-04-10 | Arm Limited | Handling exceptions in a pipelined data processing apparatus |
US6167504A (en) * | 1998-07-24 | 2000-12-26 | Sun Microsystems, Inc. | Method, apparatus and computer program product for processing stack related exception traps |
US6697939B1 (en) * | 2000-01-06 | 2004-02-24 | International Business Machines Corporation | Basic block cache microprocessor with instruction history information |
US6609190B1 (en) * | 2000-01-06 | 2003-08-19 | International Business Machines Corporation | Microprocessor with primary and secondary issue queue |
US7085940B2 (en) * | 2002-05-09 | 2006-08-01 | International Business Machines Corporation | Floating point unit power reduction via inhibiting register file write during tight loop execution |
JP2006039874A (ja) * | 2004-07-26 | 2006-02-09 | Fujitsu Ltd | 情報処理装置 |
US7984273B2 (en) | 2007-12-31 | 2011-07-19 | Intel Corporation | System and method for using a mask register to track progress of gathering elements from memory |
US8447962B2 (en) * | 2009-12-22 | 2013-05-21 | Intel Corporation | Gathering and scattering multiple data elements |
US10387151B2 (en) | 2007-12-31 | 2019-08-20 | Intel Corporation | Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks |
US10175990B2 (en) | 2009-12-22 | 2019-01-08 | Intel Corporation | Gathering and scattering multiple data elements |
CN104303142B (zh) | 2012-06-02 | 2019-03-08 | 英特尔公司 | 使用索引阵列和有限状态机的分散 |
US8972697B2 (en) | 2012-06-02 | 2015-03-03 | Intel Corporation | Gather using index array and finite state machine |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4285035A (en) * | 1979-01-02 | 1981-08-18 | Honeywell Information Systems Inc. | Apparatus and method for rewrite data insertion in a three descriptor instruction |
US4484259A (en) * | 1980-02-13 | 1984-11-20 | Intel Corporation | Fraction bus for use in a numeric data processor |
WO1985000453A1 (en) * | 1983-07-11 | 1985-01-31 | Prime Computer, Inc. | Data processing system |
US5201057A (en) * | 1987-01-22 | 1993-04-06 | Uht Augustus K | System for extracting low level concurrency from serial instruction streams |
US5003462A (en) * | 1988-05-31 | 1991-03-26 | International Business Machines Corporation | Apparatus and method for implementing precise interrupts on a pipelined processor with multiple functional units with separate address translation interrupt means |
JP2858140B2 (ja) * | 1988-10-19 | 1999-02-17 | アポロ・コンピューター・インコーポレーテッド | パイプラインプロセッサ装置および方法 |
US5072364A (en) * | 1989-05-24 | 1991-12-10 | Tandem Computers Incorporated | Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel |
-
1993
- 1993-09-09 CA CA002105806A patent/CA2105806C/en not_active Expired - Fee Related
- 1993-09-10 DE DE69318914T patent/DE69318914T2/de not_active Expired - Fee Related
- 1993-09-10 EP EP93114558A patent/EP0588252B1/en not_active Expired - Lifetime
- 1993-09-20 JP JP23358093A patent/JP3556246B2/ja not_active Expired - Fee Related
-
1994
- 1994-12-02 US US08/348,786 patent/US5504925A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CA2105806A1 (en) | 1994-03-19 |
EP0588252A3 (en) | 1995-01-04 |
DE69318914T2 (de) | 1999-01-14 |
EP0588252A2 (en) | 1994-03-23 |
DE69318914D1 (de) | 1998-07-09 |
EP0588252B1 (en) | 1998-06-03 |
US5504925A (en) | 1996-04-02 |
CA2105806C (en) | 2001-11-20 |
JPH06195229A (ja) | 1994-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5881216A (en) | Register file backup queue | |
JP3556246B2 (ja) | パイプラインプロセッサにおける割込み処理のための装置 | |
EP0437044B1 (en) | Data processing system with instruction tag apparatus | |
JP2645669B2 (ja) | データ処理システム | |
US6233670B1 (en) | Superscalar processor with direct result bypass between execution units having comparators in execution units for comparing operand and result addresses and activating result bypassing | |
JPH0517588B2 (ja) | ||
JPH07506445A (ja) | スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法 | |
US20020069346A1 (en) | Method for mapping instructions using a set of valid and invalid logical to physical register assignments indicated by bits of a valid vector together with a logical register list | |
US5740398A (en) | Program order sequencing of data in a microprocessor with write buffer | |
RU2142157C1 (ru) | Способ функционирования системы обработки | |
JP2682232B2 (ja) | 浮動小数点演算処理装置 | |
US5678016A (en) | Processor and method for managing execution of an instruction which determine subsequent to dispatch if an instruction is subject to serialization | |
JP3093635B2 (ja) | カウント・レジスタおよびリンク・レジスタへの書込みを行う多重分岐命令を処理するための方法と装置 | |
JP4160705B2 (ja) | プロセッサ及びプロセッサシステム | |
US5784606A (en) | Method and system in a superscalar data processing system for the efficient handling of exceptions | |
JPS6161416B2 (ja) | ||
JP2783285B2 (ja) | 情報処理装置 | |
JPH10283178A (ja) | 命令を発行するための方法及びシステム | |
JP2685713B2 (ja) | データ処理装置 | |
JP2824484B2 (ja) | パイプライン処理計算機 | |
JP2511063B2 (ja) | パイプライン制御方式 | |
JP3068406B2 (ja) | ベクトル演算装置 | |
JPH05307483A (ja) | レジスタ書き込み制御方法および回路 | |
JPH0740226B2 (ja) | 分岐命令制御方式 | |
JPS59220844A (ja) | 命令再実行制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20031224 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20031224 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040219 |
|
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: 20040415 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040512 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090521 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |