| 【発明の名称】 |
情報処理装置 |
| 【発明者】 |
【氏名】井上 愛一郎
|
| 【要約】 |
【課題】プログラムからアクセス可能な資源に対して、命令実行順序に従う参照・更新動作が行われる情報処理装置において命令実行を高速に処理する。
【解決手段】個々の命令に対応して、該命令の種別に対応するデータが格納され、該命令の実行完了に伴う資源更新までの制御を行う手段2と、該命令実行に関与する機能に対応するデータが格納され、手段2の統合的制御に従って該機能の実行を制御する1つ以上の手段3とを備える。 |
【特許請求の範囲】
【請求項1】 順次与えられる命令を実行する情報処理装置において、個々の命令に対応して、該命令の種別に対応するデータが格納され、該命令の実行完了に伴う資源更新までの制御を行う命令リザベーションステーション手段と、該命令実行に関与する機能に対応したデータが格納され、前記命令リザベーションステーション手段の統合的制御に従って、該機能の実行を制御する1つ以上の機能リザベーションステーション手段とを備えることを特徴とする情報処理装置。 【請求項2】 命令の実行開始に対して、1つの命令に対して前記命令リザベーションステーション手段上の少なくとも1つのエントリへのデータ格納がなされることと、該1つの命令のデコード結果により、該命令の実行に必要な資源の使用に関連する1つ以上の機能リザベーションステーション手段上で、該命令リザベーションステーション手段上のエントリに関連させたエントリへのデータ格納がなされることを特徴とする請求項1記載の情報処理装置。 【請求項3】 前記命令リザベーションステーション手段上のデータ格納済みエントリ数と、各機能リザベーションステーション手段上のデータ格納済みエントリ数とをそれぞれカウントする使用エントリ数カウント手段を更に備え、前記命令の実行開始に際して、該命令に対応する命令リザベーションステーション手段上の少なくとも1つのエントリ、または1つ以上の機能リザベーションステーション手段上に必要なエントリの空きがなく、いずれかのエントリにデータ格納不能の時は、該データ格納不能のエントリが使用可能となる時点まで命令実行開始を遅らせることを特徴とする請求項2記載の情報処理装置。 【請求項4】 前記各機能リザベーションステーション手段のそれぞれのエントリ数が、前記命令リザベーションステーション手段内のエントリ数と同一か、あるいは命令リザベーションステーション手段内のエントリ数より少ないことと、該各機能リザベーションステーション手段の各エントリに、1つの命令の実行に関連する命令リザベーションステーション手段および他の機能リザベーションステーション手段内のエントリにおけると同一の識別子が格納されることを特徴とする請求項2記載の情報処理装置。 【請求項5】 前記機能リザベーションステーション手段が、機能の実行によって得られるデータをプログラムからは観測されない作業レジスタに格納し、プログラマブルな資源の更新を行わないことを特徴とする請求項1記載の情報処理装置。 【請求項6】 前記命令リザベーションステーション手段が、前記機能リザベーションステーション手段、または前記情報処理装置内で該機能リザベーションステーション手段によって制御される機能ユニットからの機能実行完了報告を受けた後に、命令実行順序に従って命令実行時に使用された資源更新の指示を行い、該命令に対応するデータが格納されたエントリの開放を行うことを特徴とする請求項1記載の情報処理装置。 【請求項7】 前記機能リザベーションステーション手段が、主記憶オペランドアドレス生成用リザベーションステーション手段、演算処理用リザベーションステーション手段、および分岐処理用リザベーションステーション手段によって構成されることを特徴とする請求項1記載の情報処理装置。
|
【発明の詳細な説明】【0001】 【発明の属する技術分野】本発明は順次与えられる命令を実行する情報処理装置に係り、更に詳しくはプログラムからアクセス可能な資源、すなわちメモリの記憶領域、レジスタの内容などを、プログラムの命令実行順序に従って、逐次参照および更新する動作が実行される情報処理装置に関する。 【0002】 【従来の技術】情報処理装置において、命令に対する処理を高速に実行するための様々な技術が用いられている。その1つはパイプライン処理である。パイプライン処理における処理のステージをより細かく刻むことにより、より高速のマシンサイクルを実現し、その結果として高性能を狙うスーパーパイプラインと呼ばれる方式や、パイプラインを複数設けたスーパースカラ方式などが実用化されている。 【0003】第2の技術として、命令処理の実行をパイプラインによって制御する代わりに、リザベーションステーションと呼ばれる処理待ちのスタックを設けて、命令の実行制御を行う方式が実現されている。このリザベーションステーションを用いた方式では、パイプライン方式と違って、マシンサイクルを単位とする処理過程の数とは独立にスタックのエントリ数を選ぶことが可能であり、エントリ数を大きくすることによって高い並列度を狙うことができる。 【0004】第3の更に高性能を狙う技術としてアウトオブオーダ方式がある。アウトオブオーダ方式とは、プログラムによって指示された命令順序とは異なった順序で、例えば入力データが揃った命令から随時実行する処理方式である。すなわちアウトオブオーダ方式においては、スタック内で処理可能なエントリが選択され、プログラムにより指示された命令順序とは異なった順序でそのエントリに対応する処理を随時実行することによって、高い並列度を実現することができる。 【0005】アウトオブオーダ方式では命令の実行は任意の順序であるが、プログラムからアクセス可能な資源、すなわちメモリの記憶領域やレジスタの内容などは、プログラムの実行順序に従って参照、および更新されるように命令実行がなされる必要がある。 【0006】このようにレジスタの内容がプログラムの実行順序に従って参照、および更新されることを保証する技術として、レジスタリネーミングがある。従来のレジスタリネーミングでは、アーキテクチャによって指定された論理レジスタの数より多くの物理レジスタが用意され、論理レジスタは全て物理レジスタに対応するように写像されて参照、および更新される。物理レジスタが論理レジスタより多く設けられるのは、何らかの要因でパイプラインがクリアされる時にも、論理レジスタに対応した物理レジスタの内容を保持しておくためである。 【0007】 【発明が解決しようとする課題】このように、パイプライン方式よりも更に高速実行を狙ったリザベーションステーションによる方式を用いて、スタックのエントリ数を増やすことによって単位クロックあたりの処理性能を向上させることができるものの、ハードウェア量の増大を招いてしまうという問題点があった。また機能実行ユニットの数は限られているために、多くのエントリから実行すべき処理に対応するエントリを選択して命令実行を行うことになり、ハードウェア量の増大と相まってマシンサイクルの低下を招く結果となり、性能の向上を図ることが困難であるという問題点があった。 【0008】アウトオブオーダ方式では、演算処理などの実行順序に関係なくプログラマブルな資源、すなわちメモリの記憶領域やレジスタの内容などの更新が命令実行順序に従って行われたように観測されるための仕組、例えば前述のレジスタリネーミングが必要となり、ハードウェア量の増大を招くと共にハードウェアがより複雑となり、高いマシンサイクルの実現を図ることは益々困難であるという問題点があった。 【0009】更に、これらのマシンサイクルの低下とハードウェア量の増大という問題点を緩和するために、パイプライン方式とリザベーションステーション方式とを組み合わせ、処理を複数のステージに分割して、各ステージにスタックを設ける方法もあるが、この場合には1つのステージの処理の完了まで次のステージの処理を開始することはできず、またそのステージの間の遷移をプログラムの命令実行順序に従わずに行うことは困難であり、パイプライン処理方式の限界を越えることができないとう問題点があった。 【0010】本発明の課題は、上述の問題点に鑑み、1つの命令に対応して命令の種別に対応するデータなどが格納される命令リザベーションステーションと、その命令の実行に関与する機能に対応した1種類以上の機能リザベーションステーションを互いに独立に備えることにより、命令実行を高速に処理することができる情報処理装置を提供することである。 【0011】 【課題を解決するための手段】図1は本発明の原理構成ブロック図である。同図は順次与えられる命令を実行する情報処理装置の原理構成ブロック図を示し、この情報処理装置1は命令リザベーションステーション手段2、および1つ以上の機能リザベーションステーション手段3を備えている。 【0012】命令リザベーションステーション手段2は、個々の命令に対応してその命令の種別に対応するデータが格納され、その命令の実行完了に伴う資源更新までの制御を行うものである。 【0013】機能リザベーションステーション手段3は、命令実行に関与する機能に対応したデータが格納され、命令リザベーションステーション手段2の統合的制御に従って、その機能の実行を制御するものであり、例えば複数種類の機能に対応して複数種類の機能リザベーションステーション手段3が備えられる。 【0014】本発明の実施の形態においては、例えば命令の実行開始に際して1つの命令に対応して命令リザベーションステーション手段2上で少なくとも1つのエントリへのデータ格納がなされ、またその1つの命令デコード結果に応じて、命令の実行に必要な資源の使用に関連する1つ以上の機能リザベーションステーション手段3上のエントリへのデータ格納がそれぞれなされる。 【0015】この命令リザベーションステーション手段2上のエントリと、その命令に関連する機能に対応したデーが格納される機能リザベーションステーション手段3上のエントリとは、例えば同一の識別子が格納されることによって、互いに関連させられる。 【0016】また本発明の実施の形態においては、機能リザベーションステーション手段3によって機能の実行によって得られるデータはプログラムからは観測されない作業レジスタに格納され、プログラマブルな資源の更新は機能リザベーションステーション手段3によっては行われない。 【0017】また本発明の実施の形態においては、命令リザベーションステーション手段2が機能リザベーションステーション手段3、または情報処理装置内で機能リザベーションステーション手段3によって制御される機能ユニットからの機能実行完了報告を受けた後に、命令実行順序に従って命令実行時に使用された資源更新の指示を行い、その命令に対応するデータが格納されたエントリの開放を行う。 【0018】更に本発明の実施の形態においては、機能リザベーションステーション手段3は、例えば主記憶オペランドアドレス生成用リザベーションステーション手段、演算処理用リザベーションステーション手段、および分岐処理用リザベーションステーション手段によって構成される。 【0019】以上説明したように本発明によれば、命令リザベーションステーション手段と、その命令によって実行される機能に対応する機能リザベーションステーション手段とが独立に備えられる。 【0020】 【発明の実施の形態】図2は本発明の命令リザベーションステーション、および機能リザベーションステーションが備えられる情報処理装置の全体構成ブロック図である。 【0021】図2において、インストラクションアドレスレジスタ(IAR)10、インストラクションフェッチエフェクティブアドレスジェネレータ(IFEAG)11、インストラクションエフェクティブアドレスレジスタ(IEAR)12、インストラクションフェッチトランスレーションルックアサイドバッファ(IFTLB)13、インストラクションフェッチタグ(IFTAG)14、およびインストラクションフェッチローカルバッファストレージ(IFLBS)15は、本発明の情報処理装置における部分的なパイプラインとしての命令フェッチのパイプライン動作を行うものである。 【0022】この命令フェッチパイプラインは命令フェッチのリクエスト発行サイクルI、タグとTLBへのアクセスサイクルIT、バッファアクセスサイクルIB、およびフェッチ完了サイクルIRから成り、主記憶からフェッチされた命令は命令バッファ16に与えられる。 【0023】命令バッファ16に与えられた命令は、命令デコードのパイプラインにおいてインストラクションワードレジスタ17、デコーダ18によってデコードされる。このパイプラインは、命令のプレゼンテーションサイクルE、およびデコードサイクルDから成る。 【0024】このデコードサイクルの終了(Dリリース)時に命令リザベーションステーションに相当するコミットスタックエントリ(CSE)20にエントリが作成されると共に、命令のデコード結果に対応して主記憶オペランドアドレス生成用リザベーションステーションに相当するリザベーションステーションフォーアドレスジェネレーション(RSA)21、演算処理用リザベーションステーションに相当するリザベーションステーションフォーエクセキューション(RSE)22、および分岐処理用リザベーションステーションに相当するリザベーションステーションフォーブランチ(RSBR)23に必要なエントリが作成される。 【0025】一般的にRSA21,RSE22、およびRSBR23のそれぞれのエントリ数はCSE20のエントリ数より少なく、例えばエントリ数はCSE20に対して16、RSA21に対して6、RSE22に対して8、RSBR23に対して4となる。 【0026】デコードサイクルの完了時(Dリリース)に命令デコードの結果としてエントリが作成されるべき機能リザベーションステーションにエントリの空きがない場合には、その命令はインストラクションワードレジスタ17に止まり、必要なエントリに空きが生じた時点でCSE20、および必要なリザベーションステーション上にエントリが作成される。このために各機能リザベーションステーションに対応して後述するリソースカウンタが用意されており、エントリが作成される時にその値はインクリメントされ、そのエントリに対応する処理が完了するときにポインタの値がデクリメントされる。 【0027】CSE20に対しては後述するインポインタが備えられ、デコードサイクルの終了時にCSE20に作成されるエントリの番号がそのインポインタの値によって指示され、この番号は命令識別子(IID)として、各機能リザベーションステーション上の対応するエントリにも登録され、処理中の命令を命令実行順序と共にユニークに識別するために使用される。 【0028】分岐処理用リザベーションステーションRSBR23に対しても、CSE20に対するインポインタとは異なるインポインタが備えられ、そのインポインタによって指示される位置にエントリが作成される。これに対してRSA21、およびRSE22に対しては基本的にアウトオブオーダ処理が行われるために、リザベーションステーションの中で空いているエントリが探され、エントリの作成が行われる。 【0029】CSE20に対しては、そのエントリが解放される時点でインクリメントされるアウトポインタが備えられ、アウトポインタの指す先頭のエントリが、実行中で未完了の命令のうちで、実行順序が最も古いものとして識別される。エントリの解放に先立って実行されるプログラマブルな資源の更新は、アウトポインタの指す命令から順に行われ、命令の実行順序に従った資源の更新順序が保証される。 【0030】RSBR23も同様にアウトポインタを備えるが、分岐の確定はアウトオブオーダ処理である。これに対してCSE20に対する分岐の完了報告はアウトポインタの指すエントリから順次実行される。 【0031】RSA21とRSE22内のエントリに対する処理順序としては実行可能なエントリから任意の順序で行われるが、複数の実行可能なエントリに対しては命令実行順序の古いものから処理が行われる。 【0032】図2において、命令デコードのパイプライン動作(E−D)の後にアドレス計算のパイプライン、記憶制御(S)ユニットの(キャッシュアクセスの)パイプライン、演算実行のパイプライン、および資源更新のパイプラインの動作が必要に応じて実行される。 【0033】アドレス計算のパイプラインはアドレス生成プライオリティサイクルPA 、アドレス生成サイクルAから成る。SユニットのパイプラインはプライオリティサイクルPS 、タグとTLBへのアクセスサイクルTS 、バッファアクセスサイクルBS 、および完了サイクルRS から成る。演算実行パイプラインは、プライオリティサイクルPE 、バッファアクセスサイクルBE 、および実行サイクルXEから成る。資源更新パイプラインは更新サイクルU、書込みサイクルWから成る。 【0034】これらのパイプラインを用いて実行される処理については、本発明に関連する部分だけを後述することとし、続いて本発明の実施形態における命令リザベーションステーションとしてのCSE20、機能リザベーションステーションとしてのRSA21,RSE22、およびRSBR23に対するエントリの作成について説明する。 【0035】図3は図2のコミットスタックエントリ(CSE)20の各エントリにおけるデータ格納形式の説明図である。CSE20の各エントリに対しては、そのエントリが有効であるか否かを示すビットV、オペレーションコード(OPC)、その命令に対して演算処理が実行されるか否かを示すE、分岐命令か否かを示すB、演算処理が行われる場合にその完了を示すEC、分岐の完了を示すBC、分岐の成立を示すBT、レジスタの更新があるか否かを示すライトタグとしてのWR、主記憶へのストアがあるか否かを示すST、レジスタの更新がある場合のレジスタ番号WA、条件コードの変更があるか否かを示すCX、条件コードCCが格納される。 【0036】命令デコード時のエントリ作成時にはV,OPC,E,B,WR,WA,ST、およびCXの内容が設定される。命令実行時には、例えば演算処理が完了すると演算器からその完了報告がIIDを伴って行われ、それに対応してエントリ内のECビットがセットされ、必要に応じて条件コード(CC)がセットされる。分岐処理の完了の場合には、RSBR23からIIDを伴って完了報告が行われ、分岐完了ビットBCと、分岐結果に応じて分岐成立ビットBTがセットされる。 【0037】Eビットが“0”すなわち演算が実行されない場合か、ECビットが“1”すなわち演算が終了した場合を第1の条件、Bビットが“0”すなわち分岐処理でない場合か、BCビットが“1”すなわち分岐が完了した場合を第2の条件とすると、第1の条件と第2の条件とが共に成立する場合、その命令に関するCSE20内のエントリの処理は完了したと判断される。 【0038】アウトポインタの値が指すCSE20のエントリに対してこの条件が共に成立すると、そのエントリに関する資源の更新(資源更新のパイプラインに対応)とエントリの解放の処理が行われる。そのエントリのWRビットが“1”の場合には、WAによって示されるレジスタ、例えば汎用レジスタ(GR)へのデータ書込み、すなわち作業レジスタとしてのレジスタアップデートバッファ(RUB)36に保持されたデータの書込みが指示され、STビットが“1”の場合には、主記憶へのストアデータを保持するストアバッファ(STB)に保持されているデータの主記憶オペランドへの書込みが指示される。 【0039】資源の更新と同時に、実行される命令のアドレスを示すプログラムステータスワードの命令アドレスレジスタ(PSWIAR)の値の更新の指示も行われる。エントリのBビットが“0”すなわち分岐命令ではないか、BTビットが“0”すなわち分岐が不成立の場合には、エントリのOPCによって決まる命令語長の分だけPSWIARの値がインクリメントされ、Bビットが“1”でBTビットが“1”、すなわち分岐命令で分岐が成立した場合には後述するRSBR23の内部でIIDが一致するエントリのターゲットアドレス(TA)、すなわち分岐の飛び先アドレスが読み出され、この値を用いてPSWIARの値の置き換えが行われる。 【0040】更にCSE20のエントリが解放されることがRSBR23に通知され、IIDが一致するエントリのVビットが“0”とされてRSBR23のエントリが解放され、またCSE20に対するリソースカウンタの値がデクリメントされ、アウトポインタの値がインクリメントされる。 【0041】主記憶オペランドアドレス生成処理用リザベーションステーション(RSA)21に対しては、命令デコードの結果主記憶オペランドアドレスの生成が必要な場合にエントリが作成される。図4はそのエントリにおけるデータ格納形式の説明図である。そのエントリにはエントリが有効か無効かを示す有効ビットV、前述の命令識別子IID、命令コード(OPC)、インデックスレジスタを使用するか否かを示すインデックスバリッド(XV)、使用する場合のレジスタ番号IXA、ベースレジスタを使用するか否かを示すベースバリッド(BV)、使用する場合のその番号(BSA)、ディスプレースメントの値(D、使用しない場合には0)が格納され、これらの値は命令デコードの結果に対応してエントリの作成時に全て設定される。 【0042】RSA21は使用すべきレジスタ、例えばインデックスレジスタやベースレジスタが使用可能か否かを調べる。ここでこれらのレジスタが使用可能でない条件は、基本的に自分自身の命令よりも前の実行順序の命令によってレジスタ内容の更新が予定されていて、その更新がまだ完了していないことである。 【0043】使用すべきレジスタが使用可能である時に、そのエントリに対する処理は可能と判断される。RSA21は処理可能なエントリの中で最も実行順序の古い命令に対応するエントリを優先して1つのエントリを選択し、そのエントリのXV,BV,IXA,BSAの値に従ってレジスタスタックに対する読出し要求を行うと共に、エフェクティブアドレスジェネレータ(EAG)26に対してOPC,IID、およびDの値を用いてアドレスの生成を指示する。 【0044】ここで現在使用可能でないレジスタを必要するエントリに対する処理は命令実行順序に無関係に後回しにされる。すなわちRSA21の処理は基本的にアウトオブオーダである。RSA21は以上の処理(アドレス計算のパイプラインに対応)が終わるとCSE20に対して処理の完了報告を行う。そのエントリのVビットを“0”にしてエントリを解放すると共に、RSA21に対応するリソースカウンタの値をデクリメントする。 【0045】EAG26は、RSA21の指示に従って、受け取ったインデックスレジスタの値とベースレジスタの値、およびRSA21から直接送られるDの値の加算を行って主記憶オペランドアドレスの生成を行い、OPCに従ってフェッチ、またはストアのリクエストをIIDを伴って記憶制御ユニット、すなわちSユニットに対して発行する。更にISBR23に対しても、IIDを伴って主記憶オペランドアドレスの生成を行ったことを報告する。すなわちRSBR23に対して分岐先アドレスとしてオペランドアドレスを与える。 【0046】Sユニットでは、EAG26から要求された処理を行う。その要求がフェッチ(キャッシュアクセスのパイプラインに対応)の場合には、主記憶データのフェッチが完了した時点でステータスバリッド(STV)信号と、その要求に対応するIIDをRSE22に報告する。またその要求がストアの場合には、その処理が可能となった時点でSTV信号とIIDをRSE22に報告して、ストア待機状態に移行する。演算器からストアデータがE(演算実行)ユニットにあるストアデータレジスタEUSTDR34にセットされたことがIIDを伴って報告された時点で、そのデータがストアバッファ(STB)に取り込まれ、その後CSE20からの指示に従って主記憶オペランドへの書込みが実行される。 【0047】RSE22に対しては、演算器(Eユニット)における演算処理(演算実行のパイプラインに対応)が必要な場合にエントリが作成される。図5はそのエントリにおけるデータ格納形式の説明図である。このエントリには有効ビット(V)、IID,OPC、第1オペランドを使用するか否かを示す1V、使用する場合にそれがレジスタオペランドか否かを示す1R、レジスタオペランドの場合のレジスタの番号R1A、第2オペランドを使用するか否かを示す2V、使用する場合にレジスタオペランドか否かを示す2R、レジスタオペランドの場合のレジスタの番号R2Aが、命令デコード結果に従って、エントリ作成時に設定される。 【0048】RSE22は、使用すべきオペランドが使用可能か否かを調べ、使用可能である時、命令順序が最も古いエントリを優先して1つのエントリを選択し、そのエントリに対応する処理を開始する。レジスタオペランドが指示されている場合の使用可能か否かの判断は、RSA21に対する判断と同様である。これに対して主記憶オペランドの場合には、SユニットからのIIDを伴ったSTV信号によってオペランドが使用可能となったことを認識する。使用可能でないオペランドを必要とするエントリに対する処理は、命令実行順序に無関係に後回しにされる。すなわちRSE22における処理は基本的にアウトオブオーダである。 【0049】RSE22は処理を開始すると、エントリ内の1V,2V,1R,2R,R1A,R2Aの値に従ってレジスタスタックに対して読出し要求を行い、読み出されたデータをEユニットの入力に供給する。主記憶オペランドの場合には入力データはSユニットからの指示で供給され、RSE22が演算の実行をIIDを伴って演算器に対して指示する。RSE22は、以上の処理が終わるとそのエントリのVビットを“0”にしてエントリを解放すると共に、RSE22に対応するリソースカウンタの値をデクリメントする。 【0050】演算器はRSEの指示に従った演算の実行を完了すると、作業レジスタ(RUB)36に演算結果のデータを格納すると共に、CSE20に対してIIDと必要に応じて条件コードを伴った完了報告を行う。例えば比較命令では、演算が完了したことと、その結果の条件コードがCSE20に報告される。またそのIIDに対応する命令がストアの場合には、EUSTDR34にデータをセットし、IIDを伴ってそれをSユニットに報告する。 【0051】RSBR23に対しては、分岐命令の場合にエントリが作成される。図6はそのエントリへのデータ格納の説明図である。エントリ作成時には、命令デコード結果に従って有効ビットV,IID,OPC、条件分岐の場合の条件コードマスク(M)が設定される。条件分岐命令ではマスクフィールド4ビットがそれぞれ条件コードの値0,1,2,3に対応し、条件コードの値がマスクフィールドの“1”のビットに対応すると分岐が成立する。例えばマスクフィールド4ビットが“1000”であり、条件コード=0であると分岐が成立する。 【0052】分岐先アドレスが求められたことが、EAG26からIIDを伴って報告されると、そのIIDを持つエントリのターゲットアドレス(TA、分岐先アドレス)の有効性表示(TAV)が“1”にセットされると共に、そのアドレスデータTAがセットされる。 【0053】分岐の確定、すなわち分岐成立、または不成立の決定は、分岐が無条件に行われるものは即時行われ、また条件、例えば条件コードに依存するものはその条件コードが参照可能となった後に行われる。条件コードが参照可能である条件は、自分自身の命令よりも実行順序が古く、条件コードを更新する未完了の命令が存在しないか、またはそれらのうちで自分自身の命令に最も近い命令に関する演算が完了していて、条件コードがすでに確定していることである。これはCSE20の内部で、自分自身の命令よりも実行順序の古い有効なエントリの中のCXビットとECビットとの組合せによって知ることができる。 【0054】分岐が確定すると、分岐の成立か不成立かに応じてT/Rビットがセットされる。分岐成立時にはT=R=1に、不成立時にはT=0でR=1にセットされる。 【0055】分岐が確定し、分岐が不成立、すなわちT=0でR=1である場合、または分岐成立(T=R=1)で、かつ分岐先アドレスが有効(TAV=1)となると、RSBR23はそのエントリに関する完了報告を、IIDを伴ってCSE20に対して行う。 【0056】RSBR23のエントリの解放とリソースカウンタの値の更新は、CSE20からの指示によって行われる。それまでの間は、RSBR23内の解放されるべきエントリは処理完了状態のまま、待機の状態となっている。このように待機状態となっている理由について説明すると、RSBR23は前述のように分岐成立か否かとその分岐先アドレスを格納しており、CSE20は次に完了すべき命令が分岐命令である時に、RSBR23に対応するアウトポインタのポインタ値によって最も実行順序の古い分岐に関する情報をRSBR23から引き出して命令完了処理に使用すると同時に、RSBR23の対応するエントリの解放を指示するためである。 【0057】図7はCSE20,RSA21,RSE22、およびRSBR23に対してそれぞれ設けられるリソースカウンタの説明図である。同図においてリソースカウンタは加算器(演算器)41とレジスタ42から構成されている。それぞれのリザベーションステーションにエントリが作成されるごとに、加算器41の出力はインクリメントされ、加算結果、すなわち使用されているエントリ数としてレジスタ42に格納され、またエントリが解放される場合には加算結果はデクリメントされてレジスタ42に格納される。 【0058】図8はCSE20、およびRSBR23のそれぞれに対応して設けられるインポインタの説明図であり、リソースカウンタと同様に加算器44とレジスタ45とによって構成される。リザベーションステーションにエントリが作成されるごとに、加算器44の加算結果がインクリメントされ、レジスタ45に格納される。 【0059】図9は同じくCSE20、およびRSBR23に対応して設けられるアウトポインタの説明図である。図8のインポインタと同様に、加算器47とレジスタ48によって構成され、エントリが解放されるたびに加算器47の加算結果はインクリメントされ、前述のようにCSE20に対してはアウトポインタの値によって指されるエントリが、実行中で未完了の命令のうちで実行順序が最も古いものとなる。 【0060】具体的な命令に対応して、各リザベーションステーションのエントリに格納される内容を図10〜図13を用いて説明する。図10はRX形式演算命令(加算、減算等)に対応する各リザベーションステーションのエントリへの格納内容の説明図である。この命令はレジスタR1の内容と、X2,B2、およびD2によって指定される主記憶オペランドアドレスの内容との演算結果をレジスタR1に格納する命令であり、CSE20,RSA21,RSE22にエントリが作成され、図に示す内容が格納される。RSBR23にはエントリは作成されない。CSE20のエントリにおいて、ECに対しては演算器からの演算完了報告が行われた時点でその値が“1”とされ、この時同時に条件コードCCのセットが行われる。図11はRR形式演算命令(加算、減算等)に対応するCSE20、およびRSE22のエントリへのデータ設定の説明図である。この命令は、レジスタR1とR2の内容の演算結果をレジスタR1に格納する命令であり、この命令に対してRSA21、およびRSBR23にはエントリは作成されない。CSE20のエントリにおけるECに対しては、図10におけると同様に演算器からの演算完了報告が行われた時点で“1”が設定され、この時同時に条件コードCCがセットされる。 【0061】図12はRX形式分岐命令(ブランチオンコンディション等)に対応する各リザベーションステーションのエントリへの格納データの説明図である。CSE20,RSA21、およびRSBR23にエントリが作成され、RSE22に対してはエントリの作成は行われない。CSE20のエントリにおけるBCに対しては、RSBR23からの分岐完了報告が行われた時点でその値が“1”とされ、分岐が成立する場合にはBTも“1”とされる。またRSBR23のエントリにおけるTAVに対してはエフェクティブアドレスジェネレータ26からのアドレス生成報告の時点でその値が“1”とされ、同時にターゲットアドレスTAの値もセットされる。 【0062】図13はストア命令に対応する各リザベーションステーション上のエントリへのデータ格納の説明図である。この命令においては、レジスタR1の内容がX2,B2、およびD2によって指定される主記憶オペランドアドレスに格納される。この命令に対してはCSE20,RSA21、およびRSE22上にエントリが作成され、RSBR23に対してはエントリの作成は行われない。CSE20のエントリにおけるECに対しては、演算器からの演算完了報告の時点でその値が“1”とされる。 【0063】続いて図2における各リザベーションステーションへのエントリ作成、CSE20の中にエントリが作成された命令完了時における処理などについて、図14〜図18を用いて更に説明する。図14は各リザベーションステーションにエントリを作成するための、Dリリース信号出力の説明図である。前述のように、必要なリザベーションステーション上にエントリの空きがなく、エントリが作成できない場合には、その命令はインストラクションワードレジスタ17(IWR)上に留まるが、エントリに空きがある場合には、Dリリース信号の出力に伴って各リザベーションステーション上に必要なエントリが作成される。 【0064】図14において、各リザベーションステーションに対するリソースカウンタ内のレジスタ42の出力がエントリのフル状態を示す値である時には、デコーダ50によってエントリフル信号が出力される。ここではRSAリソースカウンタのみが示されているが、そのエントリフル信号はIWR17の格納内容のデコード結果としてのRSAの使用(エントリ作成)を示すRSAエントリUSE信号(デコーダ18の出力)と共にアンドゲート53に入力され、アンドゲート53の出力は、他のリソースカウンタのエントリフル信号とエントリUSE信号との論理積、すなわちアンドゲート53と同様のアンドゲートの出力と共にノアゲート51に入力される。ノアゲート51の出力はインストラクションワードレジスタ(IWR)17に有効な命令が格納されていることを示すIWRバリッド信号と共にアンドゲート52に与えられる。アンドゲート52の出力は、全てのリザベションステーションに対応するエントリフル信号とエントリUSE信号との論理積がLであり、IWRバリッド信号がHである時にHとなり、その出力はDリリース信号となる。 【0065】図15はDリリース信号の入力に対応するリザベーションステーションへのエントリ作成の説明図である。図14において全てのリザベーションステーションに対応するエントリフル信号とエントリUSE信号との論理積がLであり、IWRバリッド信号がHである時に、Dリリース信号がデコーダ18と各リザベーションステーションの間に設けられるインゲート制御回路20a〜23aに与えられる。そしてデコーダ18のデコード結果としての各リザベーションステーションのエントリUSE信号に対応して、CSE20からRSBR23に対して、必要なエントリへのデータ格納が行われる。またDリリース信号は、IWR17の前段に備えられるインゲート制御回路17aにも与えられ、IWR17に次の命令語が格納される。 【0066】図16は演算の終了時におけるCSEのエントリに関する資源の更新とエントリ解放の処理の説明図である。CSEのn番目のエントリ20のWRビットが“1”であれば、このn番目のエントリに対応する演算完了信号の入力時点でアンドゲート55の出力はHとなり、この信号は書込み指示信号として汎用レジスタGR、または浮動小数点レジスタ(FR)37に与えられる。そしてWAによって示されるレジスタに作業用レジスタとしてのレジスタアップデートバッファ(RUB)36に格納されていたデータが書き込まれる。 【0067】図17はCSEのエントリ解放時におけるストアデータの主記憶への書込みの説明図である。CSEのn番目のエントリのSTビットが“1”の場合には、このエントリに対応する演算完了信号の入力によってアンドゲート56から主記憶へのストア要求が出され、演算ユニットのストアデータレジスタ(EUSTDR)34に保持されているデータがストアデータとして主記憶に出力される。 【0068】図18は、CSEのエントリ解放に伴って実行される、プログラムステータスワードの命令アドレスレジスタの値の更新の説明図である。n番目のエントリに対する演算完了信号の入力時点でCXビットが“1”の場合にはアンドゲート57の出力がHとなり、その出力はインゲート制御回路58に与えられ、n番目のエントリに格納されている条件コードCCがインゲート制御回路58を介してプログラムステータスワード(PSW)の条件コード格納領域に書き込まれる。 【0069】一方、n番目のエントリのOPCに格納されている命令語のデコーダ62によるデコード結果によって決まるインストラクションレングスコード(ILC)、すなわち命令語の長さを表すコードの値が、現在の命令アドレスレジスタ(IAR)の値と加算器60によって加算され、その加算結果はセレクタ61を介して再びIARに与えられる。 【0070】分岐命令で分岐が成立した場合には、n番目のエントリのBおよびBTビットの“1”が演算完了信号と共にアンドゲート59に与えられ、アンドゲート59の出力はRSBR23のエントリに格納されているターゲットアドレス(TA)、すなわち分岐の飛び先アドレスを選択させるようにセレクタ61を制御し、飛び先アドレスがIARに格納される。 【0071】図19は本発明における命令実行順序とリソース更新順序の説明図である。同図においては上から3つの命令が順次、図2の命令バッファ16に与えられるものとする。最初の命令に対しては、記憶制御ユニット(Sユニット)に対するパイプラインにおいてキャッシュミスが発生し、主記憶からのデータ転送を待つために、実際の演算は遅れて実行される。 【0072】第2、第3の命令に対してはキャッシュにヒットし、直ちに演算が行われるために、これらの命令の実行は第1の命令の再起動以前に終了する。しかしながら資源更新のパイプラインとしてのU,Wの処理は命令の実行順序に従って行われるため、第1の命令に対するこれらの処理が行われた以後に、第2、第3の命令に対する処理が実行される。 【0073】以上の説明においては、1サイクルに1つの命令に対応してDリリース信号が出力され、1つの命令毎に各リザベーションステーションにエントリが作成されるものとして発明の実施形態を説明したが、インストラクションワードレジスタに複数命令を一度に与え、CSEに対応するインポインタの値を一度に“2”以上更新して、複数の命令に対応して複数のエントリを同時に作成することも可能である。 【0074】この場合リソースカウンタやアウトポインタの値も一度に“2”以上更新する機能を追加する必要があるが、複数命令に対応して複数のエントリを同時に作成する場合と、1つずつの命令に対応して1つずつエントリを作成する場合とで、各リザベーションステーションの動作には特別な差は生じない。 【0075】またエフェクティブアドレスジェネレータや演算器をそれぞれ複数個設け、各機能リザベーションステーションから実行可能なエントリを複数個同時に選択して、アドレス生成や演算実行を行うことも可能であり、この場合にも複数のエントリを同時に選択すること以外には、各リザベーションステーションの動作には特別の差は生じない。更にCSEの機能を拡張し、PSWIARの更新時にも、同時に複数のエントリに対応する命令の命令語の長さの加算を行うことによって、複数命令を同時に終了することも可能である。 【0076】 【発明の効果】以上詳細に説明したように、本発明によれば個々の命令に対応する命令リザベーションステーションのエントリと、命令の実行に関与する機能に対応する1種類以上の機能リザベーションステーションのエントリとを互いに独立に作成し、実行可能な命令から命令を実行し、資源更新については命令実行順序に従って行うことが可能となり、処理の並列度を大幅に向上させることができ、情報処理装置の性能向上に寄与するところが大きい。
|
| 【出願人】 |
【識別番号】000005223 【氏名又は名称】富士通株式会社
|
| 【出願日】 |
平成10年7月7日(1998.7.7) |
| 【代理人】 |
【識別番号】100074099 【弁理士】 【氏名又は名称】大菅 義之 (外1名)
|
| 【公開番号】 |
特開2000−20306(P2000−20306A) |
| 【公開日】 |
平成12年1月21日(2000.1.21) |
| 【出願番号】 |
特願平10−191900 |
|