図面 (/)

技術 モードを変更する分岐命令を制御する命令処理装置および方法

出願人 富士通株式会社
発明者 砂山竜一井上愛一郎
出願日 1999年9月29日 (21年2ヶ月経過) 出願番号 1999-276233
公開日 2001年4月13日 (19年7ヶ月経過) 公開番号 2001-100994
状態 特許登録済
技術分野 先行制御 機械語命令の実行
主要キーワード SW制御回路 命令制御回路 命令フェッチ回路 命令アドレスレジスタ デコードサイクル 命令処理装置 予測分岐 動作モード情報
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2001年4月13日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (13)

課題

アウトオブオーダー処理方式において、アドレスモードを変更する分岐命令を正しく制御し、より高速命令処理を行うことが課題である。

解決手段

命令のアドレスモード情報を命令アドレスの一部として付加し、命令処理の各サイクルにおいてアドレスモード情報を保持する。ブランチヒストリー15は、分岐先のアドレスモード情報を格納し、命令フェッチ制御回路13は、複数の命令フェッチポートの各々に対応するアドレスモード情報を保持する。また、分岐命令制御回路20は、分岐先のアドレスモード情報を生成して、分岐命令を制御する。

概要

背景

アウトオブオーダー処理方式を採用した情報処理装置においては、1つの命令実行の完了を待たずに後続命令列を順次複数のパイプライン投入し、それらのパイプラインを用いて命令を実行させることで性能の向上を図っている。

しかし、先行している命令の実行結果が後続の命令の実行に影響を与える場合には、先行している命令実行が完了しなければ、後続の命令を実行させることができない。後続の命令の実行に影響を与える命令の処理が遅ければ、その間、後続の命令は実行できず、先行の命令実行の完了を待ち続けることになる。これにより、パイプラインに乱れが生じ、命令処理の性能の低下を引き起こす。

このような命令の代表的なものとして、分岐命令が挙げられる。分岐命令においては、その実行が完了するまで分岐が生ずるかどうかが分からず、かつ、分岐先ターゲットアドレスも分からないため、後続の命令が待ち状態となり、パイプラインが乱れる。

そこで、ブランチヒストリー分岐予測テーブル)を用いることで、分岐命令の高速化が図られている。分岐命令を実行するときに、ブランチ・ヒストリーによる分岐予測を行えば、分岐が生じるかどうかが判明する前に、後続の命令や分岐先の命令を事前に処理することができる。

この処理方式では、分岐命令を実行した結果、分岐が生じることが判明した場合、分岐先の命令アドレスと分岐命令自身の命令アドレスとを対にしてブランチ・ヒストリーに登録しておく。そして、命令の実行にあたって、命令を主記憶装置から取り出すときに、その実行に先立ってブランチ・ヒストリーを検索する。

このように、ブランチ・ヒストリーには、以前に分岐が成立した分岐命令の命令アドレスと分岐先の命令アドレスが対になって登録されている。ブランチ・ヒストリーに登録されていない分岐命令であって、分岐が成立したものについては、新たにブランチ・ヒストリーに登録する必要がある。また、何らかの要因で分岐命令の分岐先のターゲットアドレスが変更されている場合は、ブランチ・ヒストリーを検索して得られた分岐先のターゲットアドレスは無効となる。

ブランチ・ヒストリーのエントリのうち、次の何れかに該当するエントリについては、分岐予測が外れる可能性が高いとされ、ブランチ・ヒストリーから削除される。
(1)分岐が成立するとの予測が2回連続で外れた場合。
(2)分岐が成立するとの予測が外れ、かつ、その分岐先のターゲットアドレスも誤っていた場合。
(3)ある命令が実際には分岐命令ではないにもかかわらず、誤って登録されていた場合。

また、分岐が成立するとの予測が外れたときや、分岐先のターゲットアドレスが誤っていたとき、それらの情報をターゲット別に保存しておく必要がある。

概要

アウトオブオーダー処理方式において、アドレスモードを変更する分岐命令を正しく制御し、より高速な命令処理を行うことが課題である。

各命令のアドレスモード情報を命令アドレスの一部として付加し、命令処理の各サイクルにおいてアドレスモード情報を保持する。ブランチ・ヒストリー15は、分岐先のアドレスモード情報を格納し、命令フェッチ制御回路13は、複数の命令フェッチポートの各々に対応するアドレスモード情報を保持する。また、分岐命令制御回路20は、分岐先のアドレスモード情報を生成して、分岐命令を制御する。

目的

本発明の課題は、アウトオブオーダー処理方式を採用した情報処理装置において、より高速な命令処理を行う命令処理装置およびその方法を提供することである。

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

フェッチされた命令アドレスモード情報を命令アドレスとともに保持する保持手段と、前記フェッチされた命令が分岐命令であるとき、前記アドレスモード情報を用いて該分岐命令の制御を行う分岐命令制御手段と、前記分岐命令が実行されるとき、前記保持手段に保持されたアドレスモード情報を前記分岐命令制御手段に転送する転送手段とを備えることを特徴とする命令処理装置

請求項2

前記分岐命令制御手段は、前記分岐命令の分岐先のアドレスモード情報を分岐先の命令アドレスとともに保持することを特徴とする請求項1記載の命令処理装置。

請求項3

前記分岐命令制御手段は、前記分岐命令のアドレスモード情報に基づいて前記分岐先のアドレスモード情報を生成することを特徴とする請求項2記載の命令処理装置。

請求項4

前記分岐命令制御手段は、前記分岐先のアドレスモード情報と命令アドレスを用いて、分岐予測により予測された分岐先のアドレスモード情報と命令アドレスが正しいか否かを判定することを特徴とする請求項2記載の命令処理装置。

請求項5

前記分岐命令制御手段は、分岐先の命令フェッチ要求を出すとき、前記分岐先のアドレスモード情報と命令アドレスを指定する信号を出力することを特徴とする請求項2記載の命令処理装置。

請求項6

前記分岐命令制御手段は、前記分岐命令の制御が終了するとき、該分岐命令がアドレスモードを変更する分岐命令であるか否かを表す信号を出力することを特徴とする請求項1記載の命令処理装置。

請求項7

分岐命令のアドレスモード情報と命令アドレスと、分岐先のアドレスモード情報と命令アドレスとを対応付けて格納し、前記フェッチされた分岐命令の分岐予測を行うブランチヒストリー手段をさらに備えることを特徴とする請求項1記載の命令処理装置。

請求項8

前記アドレスモード情報を用いて前記分岐命令の分岐先の命令アドレスを生成する分岐先アドレス生成手段をさらに備え、前記転送手段は、該分岐命令が実行されるとき、前記保持手段に保持されたアドレスモード情報を該分岐先アドレス生成手段に転送することを特徴とする請求項1記載の命令処理装置。

請求項9

フェッチされた命令のモード情報を命令アドレスとともに保持する保持手段と、前記フェッチされた命令が分岐命令であるとき、前記モード情報を用いて該分岐命令の制御を行う分岐命令制御手段と、前記分岐命令が実行されるとき、前記保持手段に保持されたモード情報を前記分岐命令制御手段に転送する転送手段とを備えることを特徴とする命令処理装置。

請求項10

命令をフェッチするフェッチ手段と、フェッチされた各命令のモード情報を命令アドレスの一部として保持する保持手段と、保持されたモード情報に基づいて各命令の命令処理を制御する制御手段とを備えることを特徴とする命令処理装置。

請求項11

複数の命令フェッチポートを有し、アウトオブオーダー方式で命令フェッチを行う命令処理装置であって、各ポート毎に、命令フェッチ要求が発行されたときのモード情報を命令アドレスとともに保持する保持手段と、使用されるポートに対応するモード情報に基づいて、命令フェッチを行うフェッチ手段とを備えることを特徴とする命令処理装置。

請求項12

各命令をフェッチするときに決定されるべき情報処理装置のモード情報を、命令アドレスの一部として扱い、命令をフェッチし、フェッチされた命令の命令処理の各サイクルにおいて、該フェッチされた命令のモード情報を保持し、保持されたモード情報に基づいて、該フェッチされた命令の命令処理を制御することを特徴とする命令処理方法

技術分野

0001

本発明は、アウトオブオーダー処理方式を採用した情報処理装置に関する。特に、命令フェッチにおいてアウトオブオーダー処理を行い、命令フェッチのために複数のポートを有する情報処理装置において、モードの変更を伴う分岐命令ハードウェアで制御する命令処理装置およびその方法に関する。

背景技術

0002

アウトオブオーダー処理方式を採用した情報処理装置においては、1つの命令実行の完了を待たずに後続命令列を順次複数のパイプライン投入し、それらのパイプラインを用いて命令を実行させることで性能の向上を図っている。

0003

しかし、先行している命令の実行結果が後続の命令の実行に影響を与える場合には、先行している命令実行が完了しなければ、後続の命令を実行させることができない。後続の命令の実行に影響を与える命令の処理が遅ければ、その間、後続の命令は実行できず、先行の命令実行の完了を待ち続けることになる。これにより、パイプラインに乱れが生じ、命令処理の性能の低下を引き起こす。

0004

このような命令の代表的なものとして、分岐命令が挙げられる。分岐命令においては、その実行が完了するまで分岐が生ずるかどうかが分からず、かつ、分岐先ターゲットアドレスも分からないため、後続の命令が待ち状態となり、パイプラインが乱れる。

0005

そこで、ブランチヒストリー分岐予測テーブル)を用いることで、分岐命令の高速化が図られている。分岐命令を実行するときに、ブランチ・ヒストリーによる分岐予測を行えば、分岐が生じるかどうかが判明する前に、後続の命令や分岐先の命令を事前に処理することができる。

0006

この処理方式では、分岐命令を実行した結果、分岐が生じることが判明した場合、分岐先の命令アドレスと分岐命令自身の命令アドレスとを対にしてブランチ・ヒストリーに登録しておく。そして、命令の実行にあたって、命令を主記憶装置から取り出すときに、その実行に先立ってブランチ・ヒストリーを検索する。

0007

このように、ブランチ・ヒストリーには、以前に分岐が成立した分岐命令の命令アドレスと分岐先の命令アドレスが対になって登録されている。ブランチ・ヒストリーに登録されていない分岐命令であって、分岐が成立したものについては、新たにブランチ・ヒストリーに登録する必要がある。また、何らかの要因で分岐命令の分岐先のターゲットアドレスが変更されている場合は、ブランチ・ヒストリーを検索して得られた分岐先のターゲットアドレスは無効となる。

0008

ブランチ・ヒストリーのエントリのうち、次の何れかに該当するエントリについては、分岐予測が外れる可能性が高いとされ、ブランチ・ヒストリーから削除される。
(1)分岐が成立するとの予測が2回連続で外れた場合。
(2)分岐が成立するとの予測が外れ、かつ、その分岐先のターゲットアドレスも誤っていた場合。
(3)ある命令が実際には分岐命令ではないにもかかわらず、誤って登録されていた場合。

0009

また、分岐が成立するとの予測が外れたときや、分岐先のターゲットアドレスが誤っていたとき、それらの情報をターゲット別に保存しておく必要がある。

発明が解決しようとする課題

0010

しかしながら、上述した従来の命令処理には、次のような問題がある。従来の命令処理装置では、アドレス空間のビットサイズを表すアドレスモードソフトウェア依存で決定され、命令の実行に伴ってアドレスモードが変更される場合がある。しかし、アドレスモードの変更を伴う分岐命令の分岐予測を行おうとしたとき、分岐先のアドレスモードを予測するための機構がないため、分岐先の命令アドレスしか予測することができなかった。このため、変更されたアドレスモードに基づいて分岐先命令列のプリフェッチを行うことができず、正しい命令処理が行われないことがあった。

0011

また、分岐先の命令アドレスをアドレスジェネレータで計算して求める際にも、分岐先のアドレスモードを求めることはできなかった。また、複数の命令フェッチポートを有する命令処理装置において、あるポートで命令のプリフェッチを行い、その後、別のポートでのシーケンシャルな命令フェッチに復帰しようとしたとき、それぞれのポートにおけるアドレスモードが異なれば、正しい命令処理が行われなかった。

0012

このように、従来の命令処理装置では、アドレスモードが変更されたとき正しい命令処理が行われないことがある。このため、マイクロプログラムによる制御が必要になり、制御に必要なクロック数が増大するという問題があった。

0013

本発明の課題は、アウトオブオーダー処理方式を採用した情報処理装置において、より高速な命令処理を行う命令処理装置およびその方法を提供することである。

課題を解決するための手段

0014

図1は、本発明の命令処理装置の原理図である。本発明の第1の局面において、命令処理装置は、保持手段1、分岐命令制御手段2、および転送手段3を備える。保持手段1は、フェッチされた命令のアドレスモード情報を命令アドレスとともに保持する。分岐命令制御手段2は、フェッチされた命令が分岐命令であるとき、アドレスモード情報を用いて分岐命令の制御を行う。転送手段3は、分岐命令が実行されるとき、保持手段1に保持されたアドレスモード情報を分岐命令制御手段2に転送する。

0015

フェッチされた命令のアドレスモード情報は、命令アドレスとともに保持手段1に保持され、転送手段3により、分岐命令制御手段2に転送される。分岐命令制御手段2は、転送されたアドレスモード情報を用いて分岐命令を制御する。

0016

このような命令処理装置によれば、フェッチされた分岐命令のアドレスモード情報が命令フェッチパイプラインから命令実行パイプラインへ自動的に転送される。そして、分岐命令制御手段2は、その分岐命令がアドレスモードを変更する命令であるときは、分岐命令により指定された変更後のアドレスモードを分岐先のアドレスモードとして採用し、その分岐命令がアドレスモードを変更しない命令であるときは、転送されたアドレスモード情報を分岐先のアドレスモードとして採用することができる。

0017

したがって、分岐先の正しいアドレスモードが自動的に決定されるので、マイクロプログラムによる制御が不要になり、命令処理が高速化される。また、本発明の第2の局面において、命令処理装置は、保持手段1、フェッチ手段4、および制御手段5を備える。フェッチ手段4は、命令をフェッチする。保持手段1は、フェッチされた各命令のアドレスモード情報を命令アドレスの一部として保持する。制御手段5は、保持されたアドレスモード情報に基づいて各命令の命令処理を制御する。

0018

フェッチ手段4によりフェッチされた命令のアドレスモード情報は、命令アドレスの一部として保持手段1に保持され、制御手段5は、保持されたアドレスモード情報を用いて命令処理を制御する。

0019

このような命令処理装置によれば、フェッチされた各命令のアドレスモード情報を命令アドレスの一部として保持することができ、アドレスモード情報専用のレジスタ等を新たに設ける必要がない。そして、制御手段5は、命令がアドレスモードを変更する分岐命令であるときは、分岐命令により指定された変更後のアドレスモードを分岐先のアドレスモードとして採用し、その命令がアドレスモードを変更しない分岐命令であるときは、保持されたアドレスモード情報を分岐先のアドレスモードとして採用することができる。

0020

したがって、分岐先の正しいアドレスモードが自動的に決定されるので、マイクロプログラムによる制御が不要になり、命令処理が高速化される。また、本発明の第3の局面において、命令処理装置は、保持手段1、フェッチ手段4、および複数の命令フェッチポートを備え、アウトオブオーダー方式で命令フェッチを行う。保持手段1は、各ポート毎に、命令フェッチ要求発行されたときのアドレスモード情報を命令アドレスとともに保持する。フェッチ手段4は、使用されるポートに対応するアドレスモード情報に基づいて、命令フェッチを行う。

0021

命令フェッチパイプラインにおいて命令フェッチ要求が発行されたとき、フェッチされる命令のアドレスモード情報と命令アドレスが、使用されるポートに対応付けられて保持手段1に保持される。そして、フェッチ手段4は、使用されるポートに対応するアドレスモード情報に基づいて命令アドレスを解釈し、命令をフェッチする。

0022

このような命令処理装置によれば、複数の命令フェッチポートのそれぞれに対してアドレスモード情報を指定することができる。このため、分岐先の命令列のプリフェッチのためにポートの切り替えが起こったとしても、各ポートの正しいアドレスモードが自動的に決定される。したがって、マイクロプログラムによる制御が不要になり、命令処理が高速化される。

0023

例えば、図1の保持手段1および転送手段3は、後述する図2命令アドレスレジスタ11、命令アドレス生成回路12、命令フェッチ制御回路13、命令バッファ16、デコーダ17、分岐先アドレス生成回路19、および分岐命令制御回路20に対応し、分岐命令制御手段2は、分岐命令制御回路20に対応する。

0024

また、例えば、フェッチ手段4は、命令アドレスレジスタ11、命令アドレス生成回路12、および命令フェッチ制御回路13に対応し、制御手段5は、命令制御回路18、分岐先アドレス生成回路19、分岐命令制御回路20、PSW(Program-Status-Word )制御回路21に対応する。

発明を実施するための最良の形態

0025

以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。本実施形態においては、アドレスモードの変更を伴う分岐命令の分岐予測を行うため、分岐先の命令アドレスとともに分岐先のアドレスモード情報をブランチ・ヒストリーに保持する。例えば、分岐先のアドレスモード情報を持つビット分岐先命令アドレスの一部として保持される。そして、分岐命令制御部において、分岐予測を行ったときの分岐先アドレスが正しいか否かを判定すると同時に、分岐先のアドレスモードが正しく指定されているか否かも判定する。

0026

分岐先のアドレスモード情報を持つビットの生成は、分岐命令制御部で行われる。分岐命令制御部は、分岐命令がアドレスモードを変更する命令であるか否かを判断し、アドレスモードを変更する命令であれば、命令のデコード後に、どのアドレスモードに変更するのかという情報を得る。そして、得られたアドレスモードを、分岐先のアドレスモードを指定するビット(アドレスモード指定ビット)にセットする。

0027

また、分岐命令がアドレスモードを変更しない命令であれば、分岐先のアドレスモードは変わらないので、アドレスモード指定ビットには、分岐元の分岐命令と同じアドレスモードをセットする。

0028

なお、分岐命令制御部でアドレスモード指定ビットを生成する代わりに、分岐先アドレス生成回路で、分岐先アドレスを生成すると同時にアドレスモード指定ビットを生成してもよい。

0029

また、命令処理装置が複数の命令フェッチポートを保有し、命令フェッチをアウトオブオーダ方式で処理する場合、ポートが変る度にポートに対応したアドレスモードを指定する必要があるが、従来の装置では、ポート毎にアドレスモードを保持していなかった。

0030

そこで、本実施形態の装置では、ポート毎にアドレスモードを保持するようにする。これにより、例えば、あるポートで命令プリフェッチを行い、その後、別のポートでのシーケンシャルな命令フェッチに復帰しようとしたとき、それぞれのポートのアドレスモードが異なっていても、正しい命令処理が行われる。

0031

図2は、本発明の命令処理装置の構成図である。図2の命令処理装置は、命令アドレスレジスタ11、命令アドレス生成回路12、命令フェッチ制御回路13、命令キャッシュ14、ブランチ・ヒストリー15、命令バッファ16、デコーダ17、命令制御回路18、分岐先アドレス生成回路19、分岐命令制御回路20、およびPSW(Program-Status-Word )制御回路21を備える。

0032

このうち、命令アドレスレジスタ11、命令アドレス生成回路12、命令フェッチ制御回路13、命令キャッシュ14、およびブランチ・ヒストリー15は、命令フェッチパイプラインの回路に対応し、命令バッファ16、デコーダ17、命令制御回路18、分岐先アドレス生成回路19、分岐命令制御回路20、およびPSW制御回路21は、命令実行パイプラインの回路に対応する。

0033

命令フェッチパイプラインは、命令アドレス発行サイクル(IA)、テーブルサイクル(IT)、バッファサイクル(IB)、および結果サイクル(IR)を含み、命令実行パイプラインは、デコードサイクル(D)、アドレス計算サイクル(A)、実行サイクル(E)、およびライトサイクル(W)を含む。

0034

また、命令アドレスレジスタ11、命令アドレス生成回路12、および命令フェッチ制御回路13は、命令フェッチ回路を構成し、それぞれ、A、B、およびCの3つの命令フェッチポートを持つ。この命令フェッチ回路は、例えば、動作開始時にポートAを使用して命令フェッチを行い、命令のプリフェッチを行う場合に別のポートに切り替える。

0035

命令キャッシュ14は、命令フェッチ制御回路13から発行された命令アドレスに対応する命令コードを命令バッファ16に出力し、ブランチ・ヒストリー15は、過去において分岐が成立した分岐命令のアドレスとそのときの分岐先のアドレスを対にして保持する。

0036

デコーダ17は、命令バッファ16に保持された命令コードをデコードし、得られた情報を命令制御回路18、分岐先アドレス生成回路19、および分岐命令制御回路20に渡す。命令制御回路18は、分岐命令以外の命令に関する制御を行い、分岐先アドレス生成回路19は、分岐先の命令アドレスとアドレスモードを生成し、分岐命令制御回路20は、分岐命令に関する制御を行う。また、PSW制御回路21は、PSWを保持する。

0037

また、使用されるアドレスモードには、31ビットモードと24ビットモードの2つがある。ここでは、図3に示すように、アドレスモードは命令アドレスの一部として扱われ、命令アドレスのビット〈0〉がアドレスモード指定ビットになる。

0038

このアドレスモード指定ビットは、命令のアドレスモードとして、すべての命令アドレスのビット〈0〉に付加され、すべてのサイクルにおいて命令アドレスとともに保持される。例えば、アドレスモード指定ビットが論理“1”のときは31ビットモードを表し、それが論理“0”のときは24ビットモードを表す。

0039

以下の説明では、図3に示した拡張された命令アドレスのうち、アドレスモード指定ビット以外の部分を命令アドレスまたはアドレスと呼ぶことにする。このアドレスモード指定ビットを用いた場合、ブランチ・ヒストリー15のエントリのフォーマットは、図4に示すようになる。

0040

図4において、分岐命令アドレス31と分岐先アドレス32は互いに対応付けられている。そして、分岐命令アドレス31には、分岐命令の処理に用いられるアドレスモードを指定するアドレスモード指定ビット33が付加され、分岐先アドレス32には、分岐先命令の処理に用いられるアドレスモードを指定するアドレスモード指定ビット34が付加されている。

0041

図5は、図2の命令処理装置の動作を示すフローチャートである。命令フェッチ制御回路13は、生成された命令アドレスをブランチ・ヒストリー15に与え、ブランチ・ヒストリー15は、与えられた命令アドレスをキーとして対応するエントリを検索する(ステップS1)。

0042

命令アドレスがブランチ・ヒストリー15にヒットしなければ、分岐先命令のプリフェッチは行われない。そして、分岐命令制御回路20において分岐することが確定すると(ステップS2)、分岐命令制御回路20は、分岐先アドレス生成回路19から、分岐先アドレスと分岐先アドレスモードを受け取り、分岐先のアドレスモード指定ビットを生成する(ステップS3)。そして、分岐先アドレスと分岐先アドレスモード指定ビットを命令フェッチ制御回路13に送る。

0043

命令フェッチ制御回路13は、分岐命令制御回路20から受け取った分岐先アドレスと分岐先アドレスモードに基づいて、分岐先の命令フェッチを行う(ステップS4)。

0044

また、命令アドレスがブランチ・ヒストリー15にヒットすれば、別のポートを用いて分岐先命令のプリフェッチが行われる。そして、分岐命令制御回路20において分岐することが確定すると(ステップS5)、分岐命令制御回路20は、分岐先アドレス生成回路19から、分岐先アドレスと分岐先アドレスモードを受け取り、分岐先のアドレスモード指定ビットを生成する(ステップS6)。

0045

次に、分岐命令制御回路20は、ブランチ・ヒストリー15により予測された分岐先アドレスと分岐先アドレスモード指定ビットが正しいか否かを判定する(ステップS7)。それらが正しければ、予測が成功したものとみなして、分岐先命令の処理を続行する(ステップS8)。それらが正しくなければ、予測が失敗したものとみなして、命令フェッチ制御回路13に分岐先命令の再フェッチを指示する(ステップS9)。

0046

また、ステップS5において分岐しないことが確定すると、命令フェッチ制御回路13に分岐先命令列のプリフェッチを停止するように指示する(ステップS10)。これにより、命令フェッチ制御回路13は、フェッチポートを元のポートに戻して、分岐命令の後続命令列の処理を続行する。

0047

図6は、このような命令処理に用いられる信号を示している。命令フェッチ制御回路13は、信号+IAR〈0:31,P0:P3〉を命令キャッシュ14に出力し、命令キャッシュ14は、対応する命令コードを命令バッファ16に出力する。信号+IAR〈0:31,P0:P3〉のうち、+IAR〈0〉はアドレスモード指定ビットに対応し、+IAR〈1:31〉は命令アドレスに対応し、+IAR〈P0:P3〉は、+IAR〈0:31〉のパリティビットに対応する。

0048

また、命令フェッチ制御回路13は、信号+IAR〈0〉を命令バッファ16に出力し、命令バッファ16は、その信号を+D_IAR〈0〉として、デコーダ17に出力する。

0049

また、命令バッファ16は、分岐命令の命令アドレスを表す信号+D_BR_IAR〈0:31,P0:P3〉を保持しており、この信号を分岐命令制御回路20に出力する。この信号は、デコーダ17経由で分岐命令制御回路20に転送してもよく、命令バッファ16から、直接、分岐命令制御回路20に転送してもよい。命令キャッシュ14から出力された命令コードが分岐命令に対応する場合、信号+D_IAR〈0〉は信号+D_BR_IAR〈0〉に一致する。

0050

デコーダ17は、分岐命令のオペランドの1つとして指定されたアドレスモードを表す信号+A_ADRS_MODEを、分岐先アドレス生成のためのデータを表す信号+OP_DATAとともに、分岐先アドレス生成回路19に出力する。この信号+A_ADRS_MODEは、分岐先命令のアドレスモードを表している。

0051

分岐先アドレス生成回路19は、受け取った信号から分岐先命令のアドレスを表す信号+EAG2〈1:31,P0:P3〉を生成し、分岐先命令のアドレスモードを表す信号+A_BSM_31BIT_ADRS_MODEとともに、分岐命令制御回路20に出力する。また、分岐命令のアドレスモード指定ビットを表す信号+D_BR_IAR〈0〉をデコーダ17から受け取り、それに基づいて、分岐先の命令アドレスのマスク処理等を行う。

0052

分岐命令制御回路20は、ブランチ・ヒストリー15から、予測された分岐先命令のアドレスおよびアドレスモード指定ビットを表す信号+BRHIS_TIAR〈0:31,P0:P3〉を受け取り、その信号を分岐先アドレス生成回路19からの信号と比較して、予測結果が正しいか否かを判定する。

0053

そして、予測結果が正しければ、予測された分岐先の処理の続行を命令フェッチ制御回路13に指示する。また、予測結果が正しくなければ、正しい分岐先命令のアドレスおよびアドレスモード指定ビットを表す信号+RSBR_TIAR〈0:31,P0:P3〉と命令再フェッチ要求を、命令フェッチ制御回路13に送る。

0054

次に、図7から図12までを参照しながら、図2の命令処理装置の構成と動作についてより詳細に説明する。最初の命令フェッチおよび割り込みによる再スタート時には、命令フェッチ制御回路13は、PSW制御回路21からアドレスモードの情報を取得して、それを命令フェッチ回路のアドレスモード指定ビットにセットする。これにより、命令アドレスレジスタ11、命令アドレス生成回路12、および命令フェッチ制御回路13のそれぞれにアドレスモードがセットされる。

0055

図7は、命令アドレス生成回路12内でアドレスモード指定ビットを保持する回路を示している。図7ラッチ回路41、42、43は、それぞれ、ポートA、ポートB、ポートCのアドレスモード指定ビットとフェッチすべき命令アドレスを保持する。各ラッチ回路の入力信号+IF_EAG〈0:31〉は、生成されたアドレスモード指定ビットと命令アドレスを表し、出力信号+IARA〈0:31〉、+IARB〈0:31〉、および+IARC〈0:31〉は、図6の信号+IAR〈0:31〉に対応する。

0056

スタート時に使用される命令フェッチポートがAである場合、命令フェッチ要求が発行された時のアドレスモードが、随時、ポートAに入力され、ポートのクリア要求が発行されるまで保持される。アドレスモードは、命令フェッチ要求が発行される度に更新されるので、途中でアドレスモードが変更されれば、変更されたアドレスモードが保持される。

0057

次に、命令フェッチポートが切り替わった場合の動作について説明する。ここでは、一例として、分岐予測に伴う命令プリフェッチのための命令フェッチポートの切り替えについて説明する。

0058

分岐命令の分岐予測において、命令フェッチ制御回路13は、フェッチした命令アドレスをブランチ・ヒストリー15で検索し、過去にそのアドレスの命令が分岐していたか否かを調べる。分岐していれば、どのアドレスに分岐していたかを調べ、分岐先の命令アドレスに対する命令フェッチ要求を発行する。

0059

このとき、分岐先の命令アドレスを予測するのと同時に、分岐先のアドレスモードも予測する必要がある。本実施形態では、図3、4に示したように、アドレスモードをアドレスの一部として扱うことで、両者を同時に予測することを可能にしている。

0060

一般に、ブランチ・ヒストリー15による分岐予測および予測分岐先の命令フェッチは命令デコードの前に行われるので、予測した命令が本当に分岐命令であるのか否か、分岐命令であっても実際に分岐が成立するのか否か、予測した分岐先命令アドレスが正しいのか否かは分からない。したがって、現在使用中のポートとは別の命令フェッチポートを用いて、予測分岐先の命令フェッチを行う必要がある。

0061

なお、分岐等が発生せずに、後続の命令列が順に実行される場合、つまり、シーケンシャルな命令フェッチが行われる場合は、ポートの切り替えは行われないものとする。

0062

まず、分岐予測が行われ、命令のプリフェッチが行われ、命令のデコード後に分岐が確定し、さらに、予測した分岐先の命令アドレスが当たっていた場合を考える。これは、図5のステップS8の動作が行われる場合に相当する。

0063

この場合、分岐後の命令フェッチは、切り替わったポート(ここでは、ポートB)を使用して行われる。また、分岐予測に基づく分岐先の命令プリフェッチは、シーケンシャルな命令フェッチとは異なるポートを用いて行われる。ここでは、シーケンシャルな命令フェッチではポートAが使用され、分岐先の命令プリフェッチではポートBが使用される。

0064

このとき、命令フェッチ制御回路13は、ポートAとポートBにおいて、それぞれのアドレスモード指定ビットを保持している。分岐命令のデコード後に、分岐命令の分岐が確定し、予測した分岐先の命令アドレスが正しいと判明したとき、ポートBがポートAに代わってシーケンシャルな命令フェッチポートとなる。この時点で、命令フェッチ回路は、ポートAのアドレスモードを保持する必要がなくなる。

0065

次に、分岐予測が行われ、命令のプリフェッチが行われ、命令のデコード後に分岐が確定し、さらに、予測した分岐先の命令アドレスが外れていた場合を考える。これは、図5のステップS9の動作が行われる場合に相当する。この場合の動作は、命令のプリフェッチまでは、上述の場合と同様である。

0066

命令のデコード後に分岐が確定し、予測した分岐先の命令アドレスが間違っていると判明したとき、分岐先の命令フェッチをやり直す必要がある。このとき、命令フェッチ制御回路13は、分岐先アドレス生成回路19により生成された分岐先アドレスと分岐命令制御回路20により生成された分岐先のアドレスモード指定ビットを使用して、命令の再フェッチを行う。これにより、一旦、命令フェッチ回路のすべてのポートがクリアされ、命令フェッチが行われる。

0067

次に、分岐予測が行われ、命令のプリフェッチが行われ、命令のデコード後に分岐しないことが確定した場合を考える。これは、図5のステップS10の動作が行われる場合に相当する。この場合の動作は、命令のプリフェッチまでは、上述の場合と同様である。

0068

命令のデコード後に、予測した命令が分岐しなかったとき、すなわち、予測した命令が分岐命令ではなかったとき、もしくは予測した命令が分岐命令であったが分岐条件が満たされなかったときは、シーケンシャルな命令フェッチが行われていた元のポート(ここでは、ポートA)において、再び、シーケンシャルな命令フェッチが再開される。

0069

このとき、命令フェッチ要求で使用されるアドレスモード指定ビットとしては、命令フェッチ制御回路13のポートAに保持されたものが使用される。また、分岐予測に基づいて命令のプリフェッチが行われたポート(ここでは、ポートB)はクリアされる。

0070

分岐予測に伴う命令プリフェッチのための命令フェッチポートの切り替えが行われたときは、以上の動作によりアドレスモード指定ビットがセットされる。次に、分岐先のアドレスモード指定ビットの生成回路について説明する。

0071

分岐命令がアドレスモードを変更する命令である場合、図8に示すような回路により、その分岐命令が指定するアドレスモードの信号が生成される。図8では、BSMという命令に対する信号が示されており、この回路は分岐命令アドレス生成回路19内に設けられる。

0072

図8において、入力信号+A_BSMは、論理“1”のとき、アドレスモードを変更する指示を表し、論理“0”のとき、アドレスモードを変更しない指示を表す。また、入力信号+BR2_BIT32は、論理“1”のとき、31ビットモードを表し、論理“0”のとき、24ビットモードを表す。

0073

また、入力信号−BR2_BIT32は、信号+BR2_BIT32の否定に対応し、論理“1”のとき、24ビットモードを表し、論理“0”のとき、31ビットモードを表す。これらの入力信号は、分岐命令アドレス生成回路19内において、図6の信号+A_ADRS_MODEから生成される。

0074

AND回路51は、信号+A_BSMと−BR2_BIT32の論理積を信号+A_BSM_24BIT_ADRS_MODEとして出力する。したがって、出力信号+A_BSM_24BIT_ADRS_MODEは、論理“1”のとき、アドレスモードが24ビットモードに変更されることを表す。

0075

また、AND回路52は、信号+A_BSMと+BR2_BIT32の論理積を信号+A_BSM_31BIT_ADRS_MODEとして出力する。したがって、出力信号+A_BSM_31BIT_ADRS_MODEは、論理“1”のとき、アドレスモードが31ビットモードに変更されることを表す。

0076

ところで、アドレスモードが24ビットモードと31ビットモードの2通りしかない場合は、信号+A_BSM_24BIT_ADRS_MODEと+A_BSM_31BIT_ADRS_MODEのいずれか一方のみでも、命令処理の制御が可能である。そこで、図6では、信号+A_BSM_31BIT_ADRS_MODEのみが分岐命令制御回路20に出力されている。

0077

また、分岐命令自身のアドレスモードの信号は、分岐命令制御回路20内で、図9に示すような回路により生成される。図9のラッチ回路61は、図6の信号+D_BR_IAR〈0〉をラッチし、信号+RSBR_31BIT_ADRS_MODEとして出力する。信号+RSBR_31BIT_ADRS_MODEは、論理“1”のとき、分岐命令のアドレスモードが31ビットモードであることを表す。

0078

図10は、分岐先のアドレスモード指定ビットを生成する回路を示している。この回路は、分岐命令制御回路20内に設けられ、実行される分岐命令がアドレスモードを変更する命令であるか否かに従って、アドレスモード指定ビットを生成する。

0079

アドレスモードを変更する命令である場合は、分岐先アドレス生成回路19から受け取った、分岐命令が指定するアドレスモードの信号をアドレスモード指定ビットとしてセットし、アドレスモードを変更しない命令である場合は、分岐命令のアドレスモードを、そのままアドレスモード指定ビットとしてセットする。

0080

図10において、入力信号+RSBR_BSM_VALは、論理“1”のとき、デコードされた分岐命令がアドレスモードを変更する命令であることを表す。また、入力信号−RSBR_BSM_VALは、信号+RSBR_BSM_VALの否定に相当し、論理“1”のとき、デコードされた分岐命令がアドレスモードを変更しない命令であることを表す。これらの入力信号は、デコーダ17によるデコード結果から生成される。

0081

AND回路71は、信号+RSBR_BSM_VALと図8の信号+A_BSM_31BIT_ADRS_MODEの論理積をOR回路73に出力する。また、AND回路72は、信号−RSBR_BSM_VALと図9の信号+RSBR_31BIT_ADRS_MODEの論理積をOR回路73に出力する。そして、OR回路73は、これらの2つのAND回路の出力の論理和を、分岐先のアドレスモード指定ビットを表す信号+EAG2〈0〉として出力する。

0082

したがって、出力信号+EAG2〈0〉は、論理“1”のとき、分岐先のアドレスモードが31ビットモードであることを表し、論理“0”のとき、分岐先のアドレスモードが24ビットモードであることを表す。

0083

この信号+EAG2〈0〉が図6の分岐先アドレスを表す信号+EAG2〈1:31〉に付加されて、信号+EAG2〈0:31,P0:P3〉が生成される。信号+EAG2〈0:31,P0:P3〉は、分岐先のアドレスモード指定ビットと分岐先アドレスを表し、分岐命令制御回路20内に保持される。

0084

次に、予測した分岐先の命令アドレスとアドレスモード指定ビットが正しいか否かを判定する回路について説明する。図11は、このような判定を行う回路を示しており、この回路は分岐命令制御回路20内に設けられる。図11において、入力信号+BRHIS_TIAR〈0:31,P0:P3〉は、分岐予測により予測された分岐先アドレスと分岐先アドレスモード指定ビットを表す。

0085

EXNOR回路81は、信号+EAG2〈0:31,P0:P3〉と+BRHIS_TIAR〈0:31,P0:P3〉をビット毎に比較し、対応する2つのビットの排他的論理和の否定を表す信号を出力する。ここでは、アドレスモード指定ビットがアドレスの一部として扱われるので、アドレスモード指定ビット、分岐先アドレス、およびパリティが、同時に比較される。

0086

また、AND回路82は、EXNOR回路81が出力したすべてのビットの比較結果(〈0〉,〈1〉,...,〈P3〉)の論理積を、信号+RSBR_TIAR_MATCHとして出力する。

0087

したがって、アドレスモード指定ビット、分岐先アドレス、およびパリティのすべてが一致した場合、信号+RSBR_TIAR_MATCHは論理“1”となる。この場合、分岐命令制御回路20は、分岐予測が当たったものと判断し、そのまま処理を続行する。

0088

しかし、いずれかのビットが一致しなければ、この信号が論理“0”となり、分岐予測が失敗したと判断される。この場合、分岐命令制御回路20は、分岐先アドレス生成回路19で生成された分岐先アドレスと分岐命令制御回路20で生成されたアドレスモード指定ビットを、図6の信号+RSBR_TIAR〈0:31,P0:P3〉として命令フェッチ制御回路13に出力する。これにより、分岐先の命令フェッチがやり直される。

0089

また、分岐命令制御回路20は、分岐命令の制御が終了するとき、その分岐命令がアドレスモードを変更する分岐命令であるか否かを判定し、判定結果をPSW制御回路21に出力する。これにより、アドレスモードを変更する分岐命令についての情報がPSW制御回路21に保持されるので、どのような命令によりアドレスモードが変更されたかを認識しながら命令処理装置を制御することができる。

0090

また、分岐命令制御回路20は、分岐先の命令再フェッチ要求を出すとき、分岐先の命令アドレスとともにアドレスモード指定ビットをPSW制御回路21に出力する。これにより、分岐先の命令アドレスと同時に分岐先のアドレスモードもPSW制御回路21に保持されるので、そのアドレスモードに基づいて命令処理装置を制御することができる。

0091

図12は、このようなPSW制御回路21への出力信号を生成する回路を示している。この回路は、分岐命令制御回路20内に設けられる。図12において、入力信号+RSBR_TAKENは、論理“1”のとき、分岐命令が実際に分岐したことを表す。

0092

AND回路91は、信号+RSBR_TIAR〈0:31,P0:P3〉と+RSBR_TAKENの論理積を、信号+COMPLETE_RSBR_TIAR〈0:31,P0:P3〉として出力する。したがって、この出力信号は、分岐命令が実行され分岐したときの分岐先のアドレスモード指定ビットと命令アドレスを表す。

0093

また、AND回路92は、図10の信号+RSBR_BSM_VALと+RSBR_TAKENの論理積を、信号+COMPLETE_RSBR_BSMとして出力する。したがって、この出力信号は、論理“1”のとき、分岐命令が分岐したときに実行された命令がアドレスモードを変更する分岐命令BSMであることを表す。

0094

これらの出力信号+COMPLETE_RSBR_TIAR〈0:31,P0:P3〉と+COMPLETE_RSBR_BSMは、制御信号としてPSW制御回路21に出力される。

0095

従来の命令処理装置では、分岐予測の際に、分岐先のアドレスモードを予測することができず、分岐先アドレスを計算する際に、分岐先命令のアドレスモードを生成することができなかった。また、複数の命令フェッチポートを有する場合、アドレスモードをポート毎に保持していなかったので、ポートの切り替えが起こったとき、分岐先のアドレスモードを変更する命令をハードウェアで正確に制御することができなかった。このため、従来の装置では、マイクロプログラムによる制御を必要としていた。

0096

これに対して、本発明の命令処理装置では、すべての命令の命令アドレスに対して、そのアドレスモード情報を命令アドレスの一部として付加し、すべてのサイクルにおいてアドレスモード情報を保持している。このため、どのサイクルにおいても、保持されたアドレスモード情報に基づいて、ハードウェアで正確な制御を行うことができる。

0097

例えば、分岐予測に基づいて、アドレスモードの変更を伴う分岐命令の分岐先命令列のプリフェッチを行うとき、変更後のアドレスモードに基づいて正しいフェッチ動作を行うことができる。また、分岐先の命令アドレスをアドレスジェネレータで計算する際、同時に分岐先のアドレスモードを生成することができる。

0098

さらに、複数の命令フェッチポートを有する場合、アドレスモードをポート毎に保持しているため、ポートの切り替えが起こったときでも、切り替え後のポートのアドレスモードに基づいて正しいフェッチ動作を行うことができる。

0099

このように、アドレスモードの変更を伴う分岐命令がハードウェアにより正確に制御されるため、マイクロプログラムによる制御が不要になり、命令実行時に必要なクロック数を大幅に削減することができる。したがって、命令処理装置の処理速度が大幅に向上する。

0100

以上説明した実施形態においては、24ビットモードと31ビットモードの2つのアドレスモードが使用されているが、3つ以上のアドレスモードが使用される場合でも、複数のアドレスモード指定ビットを用いることで、同様の制御を行うことができる。

0101

また、本発明は、アドレスモード以外にも、命令フェッチ時に決定されるべき情報処理装置の任意のモードに対して適用される。例えば、コンピュータ動作仕様書に規定されたESA(enterprise systems architecture )モード等の動作モードを変更する分岐命令を処理する場合、すべての命令の命令アドレスに対して、その動作モードを指定する情報を命令アドレスの一部として付加し、すべてのサイクルにおいてその情報を保持しておけばよい。これにより、任意のサイクルにおいて、保持された動作モード情報に基づいた制御が可能になる。

発明の効果

0102

本発明によれば、アウトオブオーダー処理方式を採用した情報処理装置において、モードの変更を伴う命令をハードウェアにより正確に制御することが可能になる。したがって、命令処理が高速化される。

図面の簡単な説明

0103

図1本発明の命令処理装置の原理図である。
図2命令処理装置の構成図である。
図3アドレスモード指定ビットを示す図である。
図4ブランチ・ヒストリーのエントリのフォーマットを示す図である。
図5命令処理装置の動作フローチャートである。
図6命令処理に用いられる信号を示す図である。
図7アドレスモード保持回路を示す図である。
図8第1のアドレスモード生成回路を示す図である。
図9第2のアドレスモード生成回路を示す図である。
図10アドレスモード指定ビット生成回路を示す図である。
図11判定回路を示す図である。
図12制御信号生成回路を示す図である。

--

0104

1保持手段
2分岐命令制御手段
3転送手段
4フェッチ手段
5 制御手段
11命令アドレスレジスタ
12命令アドレス生成回路
13命令フェッチ制御回路
14命令キャッシュ
15ブランチ・ヒストリー
16命令バッファ
17デコーダ
18命令制御回路
19分岐先アドレス生成回路
20 分岐命令制御回路
21 PSW制御回路
31分岐命令アドレス
32 分岐先アドレス
33、34アドレスモード指定ビット
41、42、43、61ラッチ回路
51、52、71、72、82、91、92AND回路
73OR回路
81 EXNOR回路

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

該当するデータがありません

関連する公募課題

該当するデータがありません

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

該当するデータがありません

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ