(57)【特許請求の範囲】
【請求項１】
複数個の解読済命令を格納するリザベーションステーションでソースオペランドが使用可能となった命令の演算部に対する発行制御を行う発行命令制御部と、
前記発行命令制御部で発行された命令をその各命令サイクルに対応して格納するレジスタ群、及び前記レジスタ群の各レジスタ毎に設けられ、前記発行された命令の種別に応じて前記更新タイミング信号及び／又は発行抑止信号を適宜生成するデコーダを含み、前記デコーダで解読した命令の種別に応じてその後続命令に対するソースオペランド使用可能情報の更新タイミング信号及び発行抑止信号を生成する演算パイプライン制御部と、を具備し、
前記発行命令制御部は、前記演算パイプライン制御部からの更新タイミング信号及び発行抑止信号に従って、前記後続命令の発行を適宜制御することを特徴とする命令制御装置。
【請求項２】
前記発行命令制御部は、
前記リザベーションステーションから与えられた命令のソースオペランド使用可能情報を表示するテーブルを有し、それを参照して前記ソースレジスタの使用可／不可情報を出力するソースオペランド使用可能表示部と、
前記リザベーションステーションから与えられた命令のオペコードの発行可／抑止情報を出力する命令発行抑止制御部と、
前記ソースオペランド使用可能表示部からソースレジスタの使用可情報が与えられ、且つ前記命令発行抑止制御部からオペコードの発行可情報が与えられたときに前記演算器に命令を発行する命令発行部と、を有する請求項１記載の命令制御装置。
【請求項３】
前記ソースオペランド使用可能情報は前記更新タイミング信号によって更新され、そして前記オペコードの発行可／抑止情報の出力タイミングは前記発行抑止信号によって制御される請求項２記載の命令制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は命令制御装置に関し、特にリザベーションステーションを有する情報処理装置において、異なった演算サイクル数で演算を行う演算器群が入力レジスタと出力レジスタを共用しながら並行に動作することを可能とする命令制御装置に関するものである。
【０００２】
【従来の技術】
命令処理を高速に実行するために順序を外れた命令実行を可能とする情報処理装置においては、命令の解読サイクルの後にリザベーションステーションと呼ばれる解読済命令格納手段に解読済命令を格納し、ソースオペランドが使用可能となった命令が解読順序に関係なく選ばれてリザベーションステーションから演算器に命令が発行される。
【０００３】
ここで、順序を外れた命令実行  （ｏｕｔ−ｏｆ−ｏｒｄｅｒ）  とは、プログラムにより指示された命令順序とは異なった順序で、入力データがそろった命令から随時実行する処理をいう。命令の実行は任意の順序であるが、プログラムからアクセス可能な資源、すなわち記憶域、レジスタ内容等はプログラム順序で更新参照されたように命令は実行される。
【０００４】
図１は、従来の命令発行及び演算実行のパイプライン処理例を示したものである。
図１の（ａ）は、リザベーションステーションを介した基本的なパイプライン処理の一例を示したものであり、ここでＤサイクルは命令デコードサイクル、Ｐサイクルはリザベーションステーション上で発行すべき命令が選択されるサイクル、Ｂサイクルはソースオペランド読み出しサイクル、Ｘサイクルは演算実行サイクル、そしてＵサイクルはレジスタ更新サイクルである。
【０００５】
図１の（ａ）によれば、命令１のＰサイクルで命令１の更新すべきレジスタ番号に相当するソースオペランド使用可能表示が有効化され、ただちに次のＢサイクルでそのレジスタをソースオペランドとして使用する命令２が発行される。命令１の演算結果は図１の（ａ）に点線で示すように命令２へフォワーディングされ、命令１及び命令２が順次パイプライン処理される。
【０００６】
図１の（ｂ）は、演算に必要なサイクル数が異なった演算処理の一例を示したものである。図１の（ｂ）に示すように、浮動小数点の乗算には４つの演算実行サイクル（Ｘ１〜Ｘ４）が必要である。一方、浮動小数点の加算には２つの演算実行サイクル（Ｘ１及びＸ２）が必要である。このように演算実行サイクル数が異なる演算をパイプライン処理する場合には、従来において以下に示す処理を行っていた。
【０００７】
すなわち、常にＰサイクルでソースオペランド使用可能表示を有効化することを前提に、先行する命令が演算サイクルが長い命令、例えば浮動小数点乗算のような命令、を実行する場合には、後続命令の演算開始を一括して抑止し、その演算結果を後の所定のタイミングで後続の命令にフォワーディングする処理をおこなっていた。図１の（ｂ）の例では、先行する乗算命令の演算が終了する４番目の演算実行サイクルＸ４で、その演算結果が後続の加算命令にフォワーディングされる。
【０００８】
【発明が解決しようとする課題】
その結果、従来のパイプライン処理においては乗算命令後の命令発行が一律に遅延するという問題が存在し、それは例えば科学計算のように乗算と加算が頻繁に繰り返される積和演算等の演算効率を大きく低下させる要因になっていた。
【０００９】
ところで、本来順序を外れた命令実行を可能とする情報処理においては、各命令間でレジスタ干渉が存在する場合は別として、レジスタ干渉が存在しない場合には図１の（ｂ’）に示すようにそれぞれ独立に命令が実行されるべきである。また、ＣＰＵ内部の乗算器や加算器はそれぞれ別箇のハードウェアとして備えられており、それぞれ並列動作が可能である。
【００１０】
そこで本発明の目的は、上記問題点に鑑み、入出力レジスタを共用し、且つ演算に必要なサイクル数が異なった演算処理を順次実行する際に、各演算を適切なタイミングで並列実行させることで演算遅延を低減し、高速なパイプライン処理を可能とする命令制御装置を提供することにある。
【００１１】
【課題を解決するための手段】
本発明によれば、複数個の解読済命令を格納するリザベーションステーションでソースオペランドが使用可能となった命令の演算部に対する発行制御を行う発行命令制御部と、前記発行命令制御部で発行された命令をその各命令サイクルに対応して格納するレジスタ群、及び前記レジスタ群の各レジスタ毎に設けられ、前記発行された命令の種別に応じて前記更新タイミング信号及び／又は発行抑止信号を適宜生成するデコーダを含み、前記デコーダで解読した命令の種別に応じてその後続命令に対するソースオペランド使用可能情報の更新タイミング信号及び発行抑止信号を生成する演算パイプライン制御部と、を具備し、前記発行命令制御部は、前記演算パイプライン制御部からの更新タイミング信号及び発行抑止信号に従って、前記後続命令の発行を適宜制御する命令制御装置が提供される。
【００１２】
前記発行命令制御部は、前記リザベーションステーションから与えられた命令のソースオペランド使用可能情報を表示するテーブルを有し、それを参照して前記ソースレジスタの使用可／不可情報を出力するソースオペランド使用可能表示部と、前記リザベーションステーションから与えられた命令のオペコードの発行可／抑止情報を出力する命令発行抑止制御部と、前記ソースオペランド使用可能表示部からソースレジスタの使用可情報が与えられ、且つ前記命令発行抑止制御部からオペコードの発行可情報が与えられたときに前記演算器に命令を発行する命令発行部と、を有する。前記ソースオペランド使用可能情報は前記更新タイミング信号によって更新され、そして前記オペコードの発行可／抑止情報の出力タイミングは前記発行抑止信号によって制御される。
【００１３】
【発明の実施の形態】
図２は、本発明による命令制御装置の基本構成例を示したものである。
図２において、命令レジスタ（ＩＷＲ）１１は、図示しない命令キャッシュから命令をフェッチし、その解読済命令がリザベーションステーション（ＲＥＳ）１２に格納される。リザベーションステーション１２の各エントリー上の命令は、ソースオペランドが使用可能となったものから順次命令発行制御部１３により選択され、演算器１４へ発行される。
【００１４】
その発行命令（ＯＰＣＯＤＥ）は、同時に演算パイプライン制御部１５にも送られる。演算パイプライン制御部１５では、前記発行命令から後続命令のためのソースオペランド使用可能表示更新制御信号（ＷＥ１、ＷＡ１、ＷＥ２、ＷＡ２）と命令発行抑止信号（ＩＮＨ１、ＩＮＨ２）とを生成し、それを命令発行制御部１３に返送する。命令発行制御部１３では前記ソースオペランド使用可能表示更新制御信号及び命令発行抑止信号を使って、前記後続命令の発行タイミングを先行命令の種別に基づき適宜制御する。以下、本発明を実現する各構成要素について詳述する。
【００１５】
図３は、図２のリザベーションステーション１２の一構成例を示したものである。
図３において、リザベーションステーション１２の各エントリー（ＲＳＥ０、ＲＳＥ１、．．．）には命令レジスタ１１で解読された命令が逐次格納される。各エントリーで、ＯＰＣＯＤＥは演算の種類を示すコード部であり、Ｒ１及びＲ２はソースレジスタ番号を、そしてＲ３は書き込みレジスタ番号を示している。
【００１６】
図４は、図２の命令発行制御部１３の一構成例を示したものである。
図４に示すように、命令発行制御部１３は、ソースオペランド使用可能表示部２１、命令発行抑止制御部２２、及び命令発行部２３を含む。前記リザベーションステーション１２上のあるエントリーから発行されたソースレジスタ番号Ｒ１，Ｒ２はソースオペランド使用可能表示部２１に、そしてそのＯＰＣＯＤＥは命令発行抑止制御部２２にそれぞれ与えられる。
【００１７】
ソースオペランド使用可能表示部２１では、その内部に備えたソースオペランド使用可能表示テーブルを参照して与えられたソースレジスタ番号Ｒ１の使用可／不可信号２４及びソースレジスタ番号Ｒ２の使用可／不可信号２５を出力する。また、命令発行抑止制御部２２では与えられたＯＰＣＯＤＥの発行可／抑止を指示する信号２６を出力する。命令発行部２３は、ソースレジスタＲ１，Ｒ２が使用可能で且つＯＰＣＯＤＥが発行可能の時、すなわち前記各信号２４〜２６の論理積によってその命令が発行可能であることを示す信号２７を出力する。
【００１８】
前記各信号２４〜２６の出力は、図２の演算パイプライン制御部１５から与えられる信号によって制御される。演算パイプライン制御部１５は発行された命令を基に更新レジスタアドレス（ＷＡ１、ＷＡ２）を含むその更新タイミング信号（ＷＥ１、ＷＥ２）を生成し、それによって命令発行制御部１３ではソースオペランド使用可能表示部２１の前記ソースオペランド使用可能表示テーブルが更新される。同様に、演算パイプライン制御部１５は先行する発行命令を基に命令に依存する命令発行抑止信号（ＩＮＨ１、ＩＮＨ２）を生成し、それによって命令発行抑止制御部２２は後続命令の発行抑止タイミングを制御する。
【００１９】
図５は、命令発行制御部１３の命令発行制御フローの一例を示したものである。
図５のステップＳ１０１では、リザベーションステーション１２に格納された解読済命令のうちソースレジスタが使用可能な命令が発行対象として選択される。次に、選択された命令が浮動小数点加算命令か否かが判断され（Ｓ１０２）、浮動小数点加算命令の場合には加算の発行を抑止する命令発行抑止信号ＩＮＨ１の有無が判断される（Ｓ１０３）。
【００２０】
ＩＮＨ１＝１の場合にはＩＮＨ１＝０となるまでその命令の発行が抑止され、ＩＮＨ１＝０となった時点で命令が発行される。また、その発行された浮動小数点加算命令のＢサイクルでオペランド使用可能表示テーブルが更新される（Ｓ１０４）。ＩＮＨ１＝０の場合には、従来どおり発行された先行命令のＰサイクルの後直ちに後続の浮動小数点加算命令が発行される。
【００２１】
選択された命令が浮動小数点乗算命令の場合には、乗算の発行を抑止する命令発行抑止信号ＩＮＨ２の有無が判断される（Ｓ１０５及び１０６）。ＩＮＨ２＝１の場合にはＩＮＨ２＝０となるまで命令が抑止され、ＩＮＨ２＝０となった時点で命令が発行される。また、その発行された浮動小数点乗算命令のＸ２サイクルでオペランド使用可能表示テーブルが更新される（Ｓ１０７）。ＩＮＨ２＝０の場合には、従来どおり前記発行命令のＰサイクルの後直ちに後続の浮動小数点乗算命令が発行される。
【００２２】
選択された命令が浮動小数点加算命令及び浮動小数点乗算命令以外の命令（１サイクル演算命令）の場合には、前記ＩＮＨ１＝０且つＩＮＨ２＝０の時に、従来どおり先行命令のＰサイクルの後直ちに後続命令が発行される。また、その発行命令のＰサイクルでオペランド使用可能表示テーブルが更新される（Ｓ１０８及び１０９）。ＩＮＨ１＝１又はＩＮＨ２＝１の時にはＩＮＨ１＝０且つＩＮＨ２＝０となるまで後続の命令発行が抑止される（Ｓ１０８）。
【００２３】
図６及び図７は、図２の演算パイプライン制御部１５の一構成例を示したものである。
図６において、命令発行制御部１３で発行されたＯＰＣＯＤＥは、その命令の各命令サイクル（Ｐ、Ｂ、Ｘ１、Ｘ２、．．．）毎に対応するレジスタ３１〜３５へ順次シフトされる。そして各レジスタ３１〜３５毎に設けられたＯＰＥＣＯＤＥのデコーダにより発行命令の種別に対応してその更新タイミング信号（ＷＥ１、ＷＥ２）及び命令発行抑止信号（ＩＮＨ１、ＩＮＨ２）が生成される。また、図示しない書き込みレジスタ番号Ｒ３も同様にシフトレジスタに保持され、更新レジスタアドレス（ＷＡ１、ＷＡ２）が適宜生成される。
【００２４】
具体的には、図７に示すようにＰサイクルではＰ＿ＯＰＣＯＤＥレジスタ３１に入力されたは発行命令（ＯＰＣＯＤＥ）がＰデコーダ３６で解読され、命令が１サイクル演算命令の時には更新タイミング信号ＷＥ１が出力される（図５のＳ１０９）。次にＢサイクルでは、前記Ｐ＿ＯＰＣＯＤＥレジスタ３１からＢ＿ＯＰＣＯＤＥレジスタ３２へシフトされたは発行命令がＢデコーダ３６で解読され、命令が浮動少数点加算命令の時には更新タイミング信号ＷＥ１が出力され（図５のＳ１０４）、又は浮動少数点乗算命令の時には命令発行抑止信号ＩＮＨ２が出力される。
【００２５】
以降の各命令サイクルにおけるシフト及びデコード動作も上記と同様であり、Ｘ１サイクルではＸ１デコーダ３８により浮動少数点乗算命令の時に命令発行抑止信号ＩＮＨ１及びＩＮＨ２が出力される。また、Ｘ２サイクルではＸ２デコーダ３９により浮動少数点乗算命令の時に更新タイミング信号ＷＥ１が出力される（図５のＳ１０７）。
【００２６】
このように、加算や乗算等の各演算に対応する命令発行の抑止タイミングを生成することで共用する出力レジスタ使用の際の調停が行われ、同時並列に各演算器による演算が可能となる。また、各演算に対応する演算器群毎にソースオペランド使用可能の指示と出力レジスタ使用の際の抑止タイミングとを組み合わせることにより、演算実行結果を異なったタイミングで後続命令へ適宜フォワーディングすることが可能となる。
【００２７】
図８には、これまでの説明の一例として浮動小数点乗算命令に続く後続命令の動作タイムチャート例を示している。
図８の（ａ）には、図６及び７で説明した演算パイプライン制御部１５に浮動少数点乗算命令が入力されそれが各レジスタでデコードされ、Ｂ及びＸ１サイクルで乗算の発行を抑止するＩＮＨ２を出力し、またＸ１サイクルで加算の発行を抑止するＩＮＨ１を出力し、さらにＸ２サイクルでソースオペランド使用可能表示の更新タイミング及びアドレス信号ＷＥ１、ＷＡ１を出力する場合を示している。
【００２８】
図８の（ｂ）は、前記発行された浮動少数点乗算命令と後続の浮動少数点加算命令とが相互にレジスタ干渉を有しない場合の動作の一例を示している。従来は一律に後続命令の処理が遅延させられていたのに対し、本例ではレジスタ干渉がない時に後続の加算命令は乗算のＰサイクル後のＢサイクルで直ちに発行可能となる。
【００２９】
一方、図８の（ｃ）は、先行する乗算命令とレジスタ干渉を有する後続の加算命令の動作例を示したものである。この場合には先行する乗算命令によりオペランド使用可能表示テーブルが更新されるＸ２サイクル後のＸ３サイクルで命令発行が可能となる。従って、この場合は従来一律に更新を遅延させていた場合と同様となる（  図１の（ｂ）参照）。
【００３０】
図８の（ｄ）は、先行する浮動少数点乗算命令の後続命令も浮動少数点乗算命令の場合を示している。この場合、ＩＮＨ２＝０となった後のＸ２サイクルで直ちに命令が発行される。これは乗算器の資源が互いにオーバラップして干渉するのを防ぐためである。従来は一律にＸ３サイクルで命令発行が成されていたのに対し、それよりも１命令サイクル早く適宜フォワーディング処理がなされる。
【００３１】
【発明の効果】
以上説明したように、本発明によれば、命令発行制御部１３が演算パイプライン制御部１５からの先行命令に関する情報（レジスタの更新情報及び遅延処理タイミング情報）を入手し、それに基づいて後続命令の発行タイミングを適宜制御するため、入出力レジスタを共用し且つ演算に必要なサイクル数が異なる演算処理間の遅延を最小化し高速にパイプライン処理することが可能となる。
【図面の簡単な説明】
【図１】従来の命令発行及び演算実行のパイプライン処理例を示した図である。
【図２】本発明による命令制御装置の基本構成例を示した図である。
【図３】リザベーションステーションの一構成例を示した図である。
【図４】命令発行制御部の一構成例を示した図である。
【図５】命令発行制御部の命令発行制御フローの一例を示した図である。
【図６】演算パイプライン制御部の一構成例（１）を示した図である。
【図７】演算パイプライン制御部の一構成例（２）を示した図である。
【図８】浮動小数点乗算命令に続く後続命令の動作タイムチャートの一例を示した図である。
【符号の説明】
１１…命令レジスタ
１２…リザベーションステーション
１３…命令発行制御部
１４…演算器
１５…演算パイプライン制御部
２１…ソースオペランド使用可能表示部
２２…命令発行抑止制御部
２３…命令発行部
３１〜３５…シストレジスタ
３６〜３９…デコーダ
【図１】
0003560482.tif 000002
【図２】
0003560482.tif 000003
【図３】
0003560482.tif 000004
【図４】
0003560482.tif 000005
【図５】
0003560482.tif 000006
【図６】
0003560482.tif 000007
【図７】
0003560482.tif 000008
【図８】
0003560482.tif 000009