JP3668643B2 - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JP3668643B2 JP3668643B2 JP18837299A JP18837299A JP3668643B2 JP 3668643 B2 JP3668643 B2 JP 3668643B2 JP 18837299 A JP18837299 A JP 18837299A JP 18837299 A JP18837299 A JP 18837299A JP 3668643 B2 JP3668643 B2 JP 3668643B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- stage
- instructions
- operand
- 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)
- Executing Machine-Instructions (AREA)
Description
【発明の属する技術分野】
本発明は、パイプライン方式の情報処理装置に係り、特に、分岐命令を効率的に実行することを可能にした情報処理装置に関する。
【0002】
【従来の技術】
図4は従来技術によるパイプライン方式の情報処理装置の命令レジスタおよび命令デコーダ部分の構成例を示すブロック図、図5は命令レジスタ、命令デコーダを含む情報処理装置の構成例を示すブロック図、図6は分岐命令を含む命令群の流れの一例を示す図、図7は図6に示す命令列における動作を説明するタイミングチャートである。以下図4〜図7を参照して従来技術による情報処理装置について説明する。
【0003】
図4において、100はメモリの写しを持つ命令キャッシュ、200は命令キャッシュから読み出した複数の命令を保持する命令バッファ(IBR)、1200は次に実行する命令を保持する第1命令レジスタ(IRP)、1300はIRP1200に続く命令を保持する第2命令レジスタ(IRS)、1500はIRP1200に保持されている命令が有効であることを示す識別子(IRPV)、1600はIRS1300に保持されている命令が有効であることを示す識別子(IRSV)、300はIBR200、IRP1200、IRS1300、IRPV1500およびIRSV1600の制御を行うIBR制御回路、1700はIRP1200およびIRS1300に保持された命令を解読する命令デコーダである。
【0004】
命令キャッシュ100から読み出された複数の命令はIBR200に保持される。次に実行される命令がIBR200から切り出されIRP1200にセットされる。また、IRP1200にセットされた命令の次の命令も同時にIBR200から切り出されIRS1300にセットされる。
【0005】
一般に高性能な情報処理装置では複数の命令を同時に処理するスーパスカラ方式を採用している。IBR制御回路300ではIRP1200とIRS1300にセットされた命令の組み合わせがスーパスカラ処理可能な命令組み合わせか否かを判断する。IRP1200とIRS1300にセットされた命令の組み合わせがスーパスカラ処理可能な命令組み合わせの場合,両方の命令が有効であることを示すために、IBR制御回路300はIRPV1500およびIRSV1600に'1'をセットする。IRP1200とIRS1300にセットされた命令の組み合わせがスーパスカラ不可な命令組み合わせの場合、またはIRP1200にセットされた命令の次の命令がまだIBR200に格納されていない場合、IBR制御回路300はIRPV1500にのみ'1'をセットする。
【0006】
IRP1200にセットされる命令がまだIBR200に格納されていない場合、IBR制御回路300はIRPV1500およびIRSV1600に'0'をセットする。また、IBR制御回路300は次に実行する命令の切り出しをIBR200に対して要求する。このとき、IRPV1500とIRSV1600の両方が'1'の場合はIRS1300にセットされた命令の次命令からの切り出しを要求し、IRPV1500のみ'1'の場合はIRP1200にセットされた命令の次命令からの切り出しを要求する。また、IBR200に空きが生じた場合、IBR制御回路300は命令キャッシュ100に対して命令の読み出しを要求する。
【0007】
命令デコーダ1700はIRP1200,IRS1300に格納されている命令を解読する。
IRP1200またはIRS1300に分岐命令が解読された場合、命令デコーダ1700は命令キャッシュ100に対して分岐先命令の命令読み出しを要求する。
【0008】
次に図5で従来技術による情報処理装置の各パイプラインにおける処理について説明する。
図5において、100は命令キャッシュ、200はIBR、1200はIRP、1300はIRS、1700は命令デコーダ、2000は例えば16本のレジスタ群で構成される汎用レジスタ、2100は命令デコーダ1700での解読結果によりオペランドアドレス計算のために指定された汎用レジスタ2000の内容と命令により指定された変位値から命令の演算実行に必要なメモリオペランドのアドレスを計算するオペランド用アドレス加算器、2200はメモリの写しを持つオペランドキャッシュ、2300はオペランドキャッシュ2200から読み出したデータのうち演算に使用する部分を先頭に並び替えるアライナ、2400はアライナ2300で並び替えを実施した後のメモリオペランドと、命令デコーダ1700での解読結果により演算のために指定された汎用レジスタ2000の内容で演算を行う演算器である。
【0009】
DステージではIRP1200およびIRS1300にセットされた命令を命令デコーダ1700で同じステージ内で解読する。命令の解読結果により汎用レジスタ2000の指定された番号のレジスタを読み出し、オペランド用アドレス加算器2100に転送する。また、別の解読結果である変位値もオペランド用アドレス加算器2100に転送する。
【0010】
Aステージでは指定された汎用レジスタの内容と変位値よりオペランド用アドレス加算器2100でアドレス計算を行い、命令の演算実行に必要なメモリオペランド格納先のオペランドアドレスを計算する。オペランド用アドレス加算器2100により求めたオペランドアドレスはオペランドキャッシュ2200に転送される。
【0011】
Tステージではオペランドキャッシュの参照を実施する。オペランドキャッシュの読み出しデータはアライナ2300に転送される。
【0012】
Bステージではオペランドキャッシュ2200からの読み出しデータの並べ替えを行い、オペランドデータが順序通りに配列されるようになされる。
【0013】
Lステージで演算器に転送する。
Eステージではアライナ2200からのメモリオペランドと汎用レジスタ2000からのレジスタオペランドを使用して演算を行う。演算結果は汎用レジスタ2000に書き込まれる。
このように、命令はD,A,T,B,L,Eの6つのパイプラインステージに分解して実行される。
【0014】
次に分岐命令を含む命令列についての一連の処理について説明する。
図6に示す命令列においてLはロード命令、Aは加算命令、STはストア命令、Cは比較命令、BCは条件分岐命令を示す。また,GR1〜GR4は命令の演算に使用する汎用レジスタの番号を示し、test1〜test6およびpr1は各々メモリ上の領域を示すラベルである。
【0015】
図6に示す一連の命令列を実行するときのタイミングチャートを図7に示す。図7において横軸は時間を表わし,一目盛が1マシンサイクルを示している。横軸に示す1〜21の数字は説明に使うために便宜上付けたサイクル数である。以下、図6に示す命令列の処理を図5および図7で説明する。
【0016】
サイクル2でL命令がIRP1200にセットされる。このときIRS1300にはL命令の次のA命令がセットされるが、L命令もA命令もメモリオペランド参照が必要であるため、オペランド用アドレス加算器2100/オペランドキャッシュ2200の競合によりスーパスカラ処理は実施できない。従って、サイクル2ではL命令のみが解読され、以降、サイクル3でアドレス計算、サイクル4でオペランドキャッシュ参照、サイクル5で読み出しデータのアライン、サイクル6で演算器2400に転送、サイクル7で演算を実行する。以下、A命令、ST命令、L命令、A命令、ST命令、L命令と同様に処理される。
【0017】
次にサイクル9でC命令がIRP1200にセットされる。このとき同時にIRS1300にはBC命令がセットされる。BC命令はオペランド用アドレス加算器2100/オペランドキャッシュ2200を使用しないためC命令とのスーパスカラ処理が可能である。従って、BC命令はサイクル9で命令の解読が行われ、命令キャッシュ100に対して分岐先命令の読み出し要求を行う。サイクル10からサイクル12で命令キャッシュ100の読み出しおよびIBR200への命令の格納が行われ、サイクル13に分岐先命令であるL命令がIRP1200にセットされる。以下、A命令、ST命令と順次処理され、ST命令の実行はサイクル20で完了する。
【0018】
前述した従来技術による情報処理装置は,分岐命令の解読を待ってから分岐先命令の命令読み出しを始めるため、分岐先の命令の解読を開始するまでの間に3サイクルの空きが生じる。即ち、一般に分岐命令が発生すると、分岐先命令読み出しが完了するまで分岐先命令の解読を開始することができず、このため分岐命令以降の命令の演算実行が遅れることになるという問題が発生する。
【0019】
こうしたパイプライン処理における分岐命令の出現における処理の乱れ、(遅れ)については種々の改善案が提案されてきている。例えば、特開平7−239781号公報がある。しかしながら、これは、いずれも実行の為の命令のデコード処理に応答した高速化の工夫がなされている。
【0020】
【発明が解決しようとする課題】
以上のような従来の技術においては、パイプライン処理における分岐命令の出現に対し、処理の遅れが避けられない、分岐先命令のアドレスを記憶するためのバッファメモリなどの大きな物量が必要などの課題が残っている。
【0021】
本発明の目的は,前述した従来技術の問題を解決し,分岐命令が発生した場合においても、分岐先命令読み出しのための遅れを極力減じてパイプライン処理、即ち、命令の解読および演算実行などを進めることのできる情報処理装置を提供することにある。
【0022】
【課題を解決するための手段】
本発明の命令先取り方式は、命令の解読を2つのステージに分け、第1の命令解読ステージでは第1の命令デコーダにより、命令バッファから読み出した命令を1マシンサイクルあたりに複数の命令の解読を行い、また、第1の命令解読ステージでは、分岐命令を解読した場合メモリに対して命令バッファへの当該分岐命令の分岐先命令読み出し要求を行い、そして前記命令を第2の命令解読ステージにおいて第2の命令デコーダにより順次実行のため解読するものである。
【0023】
【発明の実施の形態】
本実施形態ではパイプラインを実質的に2本持つスーパースカラ処理装置を対象にしている。但し、従来の技術で述べたように、オペランドキャッシュを2命令分同時にアクセスすることは出来ないので、そうではない条件が成立したときにのみ2つの命令が併行して実行される。説明する実施形態はスーパースカラ処理装置であるが、本発明はスカラ処理装置にも同様に適用することが出来る。
【0024】
また、本実施形態は分岐成立を前提とした時のパイプライン処理を例にしたものであり、これに分岐予測などの技術を組み合わせてもよい。さらに、本実施形態では、命令キャッシュとオペランドキャッシュと(それぞれメインメモリの写しを格納するメモリである)を別に構成している。命令キャッシュ、オペランドキャッシュは命令、オペランドを含むキャッシュメモリに置き換え得る。
【0025】
以下、本発明による情報処理装置の一実施形態を図面により詳細に説明する。
【0026】
図1は本発明の一実施形態によるパイプライン方式の情報処理装置の命令レジスタおよび命令デコーダ部分の構成例を示すブロック図、図2は命令レジスタ、命令デコーダを含む情報処理装置の構成例を示すブロック図、図3は図6に示す命令列における動作を説明するタイミングチャートである。以下、図1〜図3を参照して本発明による情報処理装置について説明する。
【0027】
図1において100はメモリの写しを持つ命令キャッシュ、200は命令キャッシュから読み出した複数の命令を保持する命令バッファ(IBR)、400は第1の命令解読ステージで次に解読する命令を保持する第1分岐命令レジスタ(BIRP)、500はBIRP400に続く命令を保持する第2分岐命令レジスタ(BIRS)、600はBIRP400およびBIRS500に命令をセットするセット信号ラッチ(SETBIRD)、700はBIRP400に保持されている命令が有効であることを示す識別子(BIRPV)、800はBIRS500に保持されている命令が有効であることを示す識別子(BIRSV)、300はIBR200、BIRP400、BIRS500、SETBIRD600、BIRPV700およびBIRSV800を制御するIBR制御回路、900はBIRP400およびBIRS500に保持された命令を解読する第1命令デコーダ、1000はBIRP400およびBIRS500にセットされた命令を逐次格納する命令フローレジスタ(IFR)であり、例えば8命令分保持することのできるレジスタ群である。
【0028】
1010はBIRP400の出力とIFR1000の出力を選択する選択回路、1200は第2の命令解読ステージで次に解読する命令を保持する第1命令レジスタ(IRP)、1300はIRP1200に続く命令を保持する第2命令レジスタ(IRS)、1500はIRP1200に保持されている命令が有効であることを示す識別子(IRPV)、1600はIRS1300に保持されている命令が有効であることを示す識別子(IRSV)、1100はIFR1000、選択回路1010、IRP1200、IRS1300、IRPV1500およびIRSV1600を制御するIFR制御回路、1700はIRP1200およびIRS1300に保持された命令を解読する第2命令デコーダである。
【0029】
選択回路1010はIFR1000に命令が存在しないときに、IFR1000をバイパスしてBIRP400の命令をIRP1200に格納するためのものであるが、ある場合には空きサイクルが出ても良いとする設計思想のもとに常にIFR1000を経由する方式とすれば持たなくとも構わない。また、本実施形態ではステージの時間的制約上BIRS500からIRS1300へ至る経路に選択回路を持たせなかったが、設計態様によってはここにも選択回路を持たせることも有り得る。また、第1分岐命令レジスタ(BIRP)400、第2分岐命令レジスタ(BIRS)500と物理的に分離した2つのレジスタとして例示してあるが、要は1サイクルに複数の命令の読み出しとデコードが可能であれば良いのであって、必要な書き込み、読み出しが出来るものであれば一体のレジスタであっても良く、これを機能的に第1、第2の分岐命令レジスタと呼んでも良い。
【0030】
命令キャッシュ100から読み出された複数の命令はIBR200に保持される。次に解読される命令がIBR200から切り出され、BIRP400にセットされる。また,BIRP400にセットされた命令の次の命令も同時にIBR200から切り出されBIRS500にセットされる。IBR制御回路300ではBIRP400とBIRS500にセットされた命令が有効か否かを判断する。有効とはレジスタ内に命令全体が格納されていることを示す。BIRP400とBIRS500にセットされた命令が両方とも有効な命令である場合、両方の命令が有効であることを示すために、IBR制御回路300はBIRPV700およびBIRSV800に'1'をセットする。
【0031】
BIRP400にセットされた命令の次の命令がまだIBR200に格納されていない場合、IBR制御回路300はBIRPV700にのみ'1'をセットする。BIRP400にセットされる命令がまだIBR200に格納されていない場合、IBR制御回路300はBIRPV700およびBIRSV800に'0'をセットする。また、IBR制御回路300は次に実行する命令の切り出しをIBR200に対して要求する。このとき、BIRPV700とBIRSV800の両方が'1'の場合はBIRS500にセットされた命令の次命令からの切り出しを要求し、BIRPV700のみ'1'の場合はBIRP400にセットされた命令の次命令からの切り出しを要求する。また、IBR200に空きが生じた場合、IBR制御回路300は命令キャッシュ100に対して命令の読み出しを要求する。
【0032】
第1命令デコーダ900はBIRP400、BIRS500に格納されているBIRPV700、BIRSV800で有効とされた命令を解読する。BIRP400またはBIRS500に分岐命令が解読された場合、第1命令デコーダ900は命令キャッシュ100に対して分岐先命令の命令読み出しを要求する。BIRP400およびBIRS500にセットされた命令はIFR1000に逐次格納される。このとき、IFR1000に対する命令の格納はIFR制御回路1100の制御により、SETBIRD600が'1'(即ち、IFR1000に空きがある)かつBIRPV700が'1'かつBIRSV800が'1(即ち、それぞれの命令が有効に揃っている)ならば、BIRP400にセットされた命令とBIRS500にセットされた命令の両方をIFR1000に格納する。また,SETBIRD600が'1'かつBIRPV700が'1'かつBIRSV800が'0'ならば、BIRP400にセットされた命令のみをIFR1000に格納する。また、SETBIRD600が'1'かつBIRPV700が'0'かつBIRSV800が'0'またはSETBIRD600が'0(即ち、IFR1000に空きがない)ならば、IFR1000に対して命令の格納は行われない。
【0033】
選択回路1010はIFR制御回路1100からの指示に従い、IFR1000に命令が存在しない場合はBIRP400の出力を選択し、IFR1000に命令が存在する場合はIFR1000の第1出力を選択する(選択回路については先に述べた通りである)。IFR1000の第1出力にはIFR1000に格納されている命令の内、最も最初に格納された命令、即ち、次に解読される命令が出力される。また、IFR1000の第2出力には第1出力に出力される命令の次の命令が出力される。選択回路1010の出力,即ち次に解読される命令がIRP1200にセットされる。また、IRP1200にセットされた命令の次の命令も同時にIFR1000から切り出され、IFR1000の第2出力を経由しIRS1300にセットされる。
【0034】
IFR制御回路1100ではIRP1200とIRS1300にセットされた命令の組み合わせがスーパスカラ処理可能な命令組み合わせか否かを判断する。この判断はオペランドキャッシュというメモリからの読み出しに競合が生じるかどうかで行なわれる。IRP1200とIRS1300にセットされた命令の組み合わせがスーパスカラ処理可能な命令組み合わせの場合、IFR制御回路1100はIRPV1500およびIRSV1600に'1'をセットする。
【0035】
IRP1200とIRS1300にセットされた命令の組み合わせがスーパスカラ処理不可な命令組み合わせの場合、またはIRP1200にセットされた命令の次の命令がまだIFR1000に格納されていない場合、IFR制御回路1100はIRPV1500にのみ'1'をセットする。IRP1200にセットされる命令がまだIBR200に格納されていない場合、IFR制御回路1100はIRPV1500およびIRSV1600に'0'をセットする。また、IFR制御回路1100は次に実行する命令の切り出しをIFR1000に対して要求する。このとき、IRPV1500とIRSV1600の両方が'1'の場合はIRS1300にセットされた命令の次命令からの切り出しを要求し、IRPV1500のみ'1'の場合はIRP1200にセットされた命令の次命令からの切り出しを要求する。
【0036】
また、IFR制御回路1100はIFR1000の8命令分のレジスタが全て使用中であることを検出すると、IBR制御回路300に対してBIRP400およびBIRS500への命令のセットを抑止する要求を発行する。BIRP400およびBIRS500への命令のセットが抑止されるとSETBIRD600が'0'となり、IFR1000に対して命令の格納が行われないため、IFR1000に解読されていない命令が残っている状態で、上書きされることはない。そして、第2命令デコーダ1700はIRP1200、IRS1300に格納されている命令を解読する。
【0037】
次に図2で本発明による情報処理装置の各パイプラインにおける処理について説明する。
図2において、100は命令キャッシュ、200はIBR、400はBIRP、500はBIRS、900は第1命令デコーダ、1000はIFR、1010は選択回路、1200はIRP、1300はIRS、1700は第2命令デコーダ、2000は汎用レジスタ、2100は第2命令デコーダ1700での解読結果によりオペランドアドレス計算のために指定された汎用レジスタ2000の内容と命令により指定された変位値から命令の演算実行に必要なメモリオペランドのアドレスを計算するオペランド用アドレス加算器、2200はメモリの写しを持つオペランドキャッシュ、2300はオペランドキャッシュ2200から読み出したデータのうち演算に使用する部分を先頭に並び替えるアライナ、2400はアライナ2300で並び替えを実施した後のメモリオペランドと、命令デコーダ1700での解読結果により演算のために指定された汎用レジスタ2000の内容で演算を行う演算器である。
【0038】
命令フェッチステージであるIFステージではBIRP400およびBIRS500にセットされた命令を第1命令デコーダ900で解読する。第1命令デコーダ900で分岐命令が解読されると命令キャッシュ100に対して分岐先命令の命令読み出し要求が発行される。BIRP400およびBIRS500にセットされた命令はIFR1000に格納される。また、BIRP400にセットされた命令は選択回路1010にも転送される。このように、第1の命令解読ステージであるIFステージでは1マシンサイクルあたり2命令ずつ解読し、第2の命令解読ステージであるDステージに命令を転送する。ここで、IFステージを遂行する回路を命令フェッチ回路と呼ぶこととする。
【0039】
第2の命令解読ステージであるDステージではIRP1200およびIRS1300にセットされた命令を第2命令デコーダ1700で解読する。このとき、第2命令デコーダで同時に2命令解読できる組み合わせは、両方の命令がメモリオペランド参照を必要とするとき以外である。即ち、2つの命令の内、少なくとも片方の命令はメモリオペランド参照を必要としないレジスタ−レジスタ間演算命令もしくは分岐命令のときに、2命令同時に解読することが可能である。一般にはメモリオペランド参照を必要とする命令の出現頻度が高いため、第2の命令解読ステージであるDステージでは平均的にみると1マシンサイクルあたり2命令ずつの解読はできない。また,Dステージでは命令の解読結果により汎用レジスタ2000の指定された番号の汎用レジスタを読み出し、オペランド用アドレス加算器2100に転送する。また、別の解読結果である変位値もオペランド用アドレス加算器2100に転送する。ここで、Dステージを遂行する回路をデコード回路と呼ぶ事とする。
【0040】
Aステージでは指定された汎用レジスタの内容と変位値よりオペランド用アドレス加算器2100でアドレス計算を行い、命令の演算実行に必要なメモリオペランド格納先のオペランドアドレスを計算する。オペランド用アドレス加算器2100により求めたオペランドアドレスはオペランドキャッシュ2200に転送される。
【0041】
Tステージではオペランドキャッシュの参照を実施する。オペランドキャッシュの読み出しデータはアライナ2300に転送される。
【0042】
Bステージではオペランドキャッシュ2200からの読み出しデータの並べ替えを行い、Lステージで演算器に転送する。
【0043】
Eステージではアライナ2200からのメモリオペランドと汎用レジスタ2000からのレジスタオペランドより演算を行う。演算結果は汎用レジスタ2000に書き込まれる。
このように、命令はIF,D,A,T,B,L,Eの7つのパイプラインステージに分解して実行される。
【0044】
次に分岐命令を含む命令列についての一連の処理について説明する。
図6に示す一連の命令列を実行するときのタイミングチャートを図3に示す。図3において横軸は時間を表わし、一目盛が1マシンサイクルを示している。横軸に示す1〜21の数字は説明に使うために便宜上付けたサイクル数である。
【0045】
以下、図6に示す命令列の処理を図2および図3で説明する。
サイクル1にL命令がBIRP400に,A命令がBIRS500にセットされる。サイクル1にBIRP400およびBIRS500にセットされた命令は第1命令デコーダ900で解読されるとともにIFR1000に転送される。また、サイクル1ではIFR1000に命令が格納されていないため、選択回路1010ではBIRP400の出力が選択される。
【0046】
サイクル2ではST命令およびL命令が各々BIRP400、BIRS500にセットされ、第1命令デコーダ900で解読されるとともにIFR1000に転送される。
以降、サイクル3でA命令とST命令が、サイクル4でL命令とC命令がBIRP400およびBIRS500にセットされ,第1命令デコーダ900で解読されるとともにIFR1000に転送される。
【0047】
次にサイクル5でBC命令がBIRP400にセットされ、IFR1000に転送される。第1命令デコーダ900はBIRP400にセットされたBC命令が分岐命令であることを解読すると、命令キャッシュ100に対して分岐先命令の読み出し要求を行う。サイクル6からサイクル8で命令キャッシュ100の読み出しおよびIBR200への命令の格納が行われる。(即ち、ここでは命令キャッシュ100からIBR200への命令の格納に3マシンサイクル掛かるとしている。)従って、BC命令の分岐先命令であるL命令およびA命令はサイクル9でBIRP400およびBIRS500にセットされる。これは第1命令デコーダ900で解読されるとともにIFR1000と選択回路1010にもに転送される。そして、サイクル10ではST命令がBIRP400にセットされ、第1命令デコーダ900で解読されるとともにIFR1000に転送される。
【0048】
このように、IFステージでは毎サイクル2命令ずつ解読し、逐次IFR1000に命令を転送する。一方、サイクル2ではL命令が選択回路1010で選択されIRP1200にセットされる。このときIRS1300にはL命令の次のA命令はまだIFRに転送中のためセットされない。従って,サイクル2ではL命令のみが解読される。以降、サイクル3でアドレス計算、サイクル4でオペランドキャッシュ参照、サイクル5で読み出しデータのアライン、サイクル6で演算器2400に転送、サイクル7で演算を実行する。以下、A命令、ST命令、L命令、A命令、ST命令、L命令と同様に処理される。
【0049】
次にサイクル9でC命令がIRP1200にセットされる。このとき同時にIRS1300にはBC命令がセットされる。BC命令はオペランド用アドレス加算器2100、オペランドキャッシュ2200を使用しないためC命令とのスーパスカラ処理が可能である。従って、BC命令はサイクル9で第2命令デコーダ1700での解読が行われる。サイクル10でBC命令の分岐先命令であるL命令がIRP1200にセットされる。この時はIFR1000からのIRP1200のセットに1マシンサイクル余分にかかってしまうので選択回路1010を通してIRP1200にセットされている。即ち、空きサイクルなしに分岐先命令のデコードのステージに入ることが出来ている。
【0050】
BIRP400,BIRS500へのIFとデコードステージDとの間にもう1つのマシンサイクルの差があればIFR1000からの命令をIRP1200にセットすることが出来る。一般にはIFR1200からの命令のセットが多い。これはどういう命令列になっているのかということに依存するもので、図6に説明のため例示した命令列の場合に上述したようになったということである。
以下、A命令、ST命令と順次処理され、ST命令の実行はサイクル17で完了する。
【0051】
このように本実施形態では分岐先命令の先行読み出しが容易に出来、空きサイクルなしに分岐先命令のデコードが実施出来る。
【0052】
以上の実施形態では第1の命令デコーダで2命令ずつデコードし、第2の命令デコーダでは前述したようにスーパースカラでも命令の実行は必ずしも2命令ずつ行なわれないから平均すれば2命令より小さな数の命令ずつ実行のためデコードされることになっている。また、スカラ計算機の場合は平均は1命令デコード/サイクルを超えない。このように、分岐先命令の先取りのため、第1のデコーダの1サイクルでの先行命令デコード数は、1サイクルでの命令実行デコード数より大きいという関係を保っている。これによって、分岐先命令の先取りを可能にしている。
【0053】
以上,本発明を実施形態に基づいて説明したが,本発明は前述した実施形態に限定されるものではなく,その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0054】
【発明の効果】
以上、説明したように本発明によれば、分岐命令が発生した場合においても、分岐命令以降の命令の解読および演算の実行が遅れることを改善して,命令列の効率的な処理を行うことができる。
【図面の簡単な説明】
【図1】本発明の一実施形態によるパイプライン方式の情報処理装置の命令レジスタおよび命令デコーダ部分の構成例を示すブロック図。
【図2】本発明の一実施形態による命令レジスタおよび命令デコーダ部分を含む情報処理装置の構成例を示すブロック図。
【図3】図6に示す命令列における本発明の一実施形態の動作を説明するタイミングチャート。
【図4】従来技術によるパイプライン方式の情報処理装置の命令レジスタおよび命令デコーダ部分の構成例を示すブロック図。
【図5】従来技術による命令レジスタおよび命令デコーダ部分を含む情報処理装置の構成例を示すブロック図。
【図6】分岐命令を含む命令群の流れの一例を示す図。
【図7】図6に示す命令列における従来技術の動作を説明するタイミングチャート。
【符号の説明】
100:命令キャッシュ
200:命令バッファ(IBR)
300:IBR制御回路
400:第1分岐命令レジスタ(BIRP)
500:第2分岐命令レジスタ(BIRS)
600:分岐命令レジスタセット信号ラッチ(SETBIRD)
700:BIRP有効識別子(BIRPV)
800:BIRS有効識別子(BIRSV)
900:第1命令デコーダ
1000:命令フローレジスタ(IFR)
1010:選択回路
1100:IFR制御回路
1200:第1命令レジスタ(IRP)
1300:第2命令レジスタ(IRS)
1500:IRP有効識別子(IRPV)
1600:IRS有効識別子(IRSV)
1700:第2命令デコーダ
Claims (5)
- 命令を、命令の解読ステージ、オペランドのアドレス計算ステージ、オペランドの読み出しステージ、該オペランドを使用しての演算のステージを含むパイプラインで処理を行なう情報処理装置であって、メモリから先読みした命令を格納する命令バッファと、前記命令バッファから読み出される複数の命令を格納する第1の命令レジスタと、前記解読ステージに先行する命令フェッチステージで前記第1の命令レジスタの複数の命令を解読する第1の命令デコーダと、前記第1の命令レジスタに格納された命令を逐次格納する命令フローレジスタと、前記第1の命令レジスタ、または前記命令フローレジスタの出力する命令を格納する第2の命令レジスタと、前記第2の命令レジスタに格納された命令を解読する第2の命令デコーダと、前記オペランドを使用しての演算を行なう演算器を備え、前記第2の命令デコーダは、前記解読ステージで前記第2の命令レジスタに格納された命令を解読し、前記アドレス計算ステージへ命令を転送するよう構成され、前記第1の命令デコーダは分岐命令を解読すると、前記メモリに対し、当該分岐命令の分岐先命令の読み出し要求をすることを特徴とする情報処理装置。
- 更に、第1の命令レジスタの命令が有効のとき第1の値を取る第1のレジスタ有効識別子と、前記命令フローレジスタに空きがあるとき第1の値を取るセット信号ラッチと、前記第1のレジスタ有効識別子が第1の値であり、前記セット信号ラッチが第1の値であるとき、前記第1の命令レジスタに格納されている命令を前記命令フローレジスタに格納せしめる制御回路とを有することを特徴とする請求項1記載の情報処理装置。
- 命令を、命令の解読ステージ、オペランドのアドレス計算ステージ、オペランドの読み出しステージ、該オペランドを使用しての演算のステージを含むパイプラインで処理を行なう情報処理装置であって、メモリから先読みした命令を格納する命令バッファと、前記命令バッファから読み出される複数の命令を格納する第1の命令レジスタと、前記解読ステージに先行する命令フェッチステージで前記第1の命令レジスタの複数の命令を解読する第1の命令デコーダと、前記第1の命令レジスタに格納された命令を逐次格納する命令フローレジスタと、前記命令フローレジスタの出力する命令を格納する第2の命令レジスタと、前記第2の命令レジスタに格納された命令を解読する第2の命令デコーダと、前記オペランドを使用しての演算を行なう演算器を備え、前記第2の命令デコーダは、前記解読ステージで前記第2の命令レジスタに格納された命令を解読し、前記アドレス計算ステージへ命令を転送するよう構成され、前記第1の命令デコーダは分岐命令を解読すると、前記メモリに対し、当該分岐命令の分岐先命令の読み出し要求をすることを特徴とする情報処理装置。
- 命令を、命令の解読ステージ、オペランドのアドレス計算ステージ、オペランドの読み出しステージ、該オペランドを使用しての演算のステージを含むパイプラインで処理を行なう命令のパイプライン処理装置を持った情報処理装置であって、命令キャッシュと、前記キャッシュから先読みした命令を格納する命令バッファと、前記命令バッファから前記パイプライン処理装置の1マシンサイクルで複数の命令を読み出すレジスタと、前記解読ステージに先行する命令フェッチステージで読み出された複数の命令を解読し、分岐命令が解読されたとき前記命令キャッシュに分岐先命令の先取りを要求する第1の命令デコーダと、前記命令バッファから読み出された命令を命令実行のためデコードする第2の命令デコーダと、オペランドキャッシュと、前記オペランドキャッシュから読み出した前記オペランドを使用しての演算を行なう演算器を有し、前記第2の命令デコーダは、前記解読ステージで前記第2の命令レジスタに格納された命令を解読し、前記アドレス計算ステージへ命令を転送するよう構成され、かつ前記命令バッファから1マシンサイクルで読み出す命令数が前記第2の命令デコーダで1マシンサイクル当たりデコードする平均命令数より大きいことを特徴とする情報処理装置。
- 命令を、命令の解読ステージ、オペランドのアドレス計算ステージ、オペランドの読み出しステージ、該オペランドを使用しての演算のステージを含むパイプラインで処理を行なう命令のパイプライン処理装置を持ったもので、第1、第2の命令デコーダ、先読みした命令を格納する命令バッファ、命令バッファから読み出された命令を一時格納する命令フローレジスタを持った情報処理装置であり、複数の命令を前記パイプライン処理装置の1マシンサイクルで読み出し、前記解読ステージに先行する命令フェッチステージで前記第1の命令デコーダで前記読み出した命令を解読し、解読の結果分岐命令があれば、分岐先命令を前記命令バッファに先取りさせ、前記読み出した命令を前記命令フローレジスタへ転送する命令フェッチ回路と、前記命令フェッチステージに引き続いて設けられ、前記命令フローレジスタの命令を前記解読ステージにおいて前記第2の命令デコーダで解読し前記アドレス計算ステージへ命令を転送するデコード回路と、オペランドキャッシュと、前記オペランドキャッシュから読み出した前記オペランドを使用しての演算を行なう演算器を有することを特徴とする情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP18837299A JP3668643B2 (ja) | 1999-07-02 | 1999-07-02 | 情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP18837299A JP3668643B2 (ja) | 1999-07-02 | 1999-07-02 | 情報処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001014160A JP2001014160A (ja) | 2001-01-19 |
JP3668643B2 true JP3668643B2 (ja) | 2005-07-06 |
Family
ID=16222473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP18837299A Expired - Fee Related JP3668643B2 (ja) | 1999-07-02 | 1999-07-02 | 情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3668643B2 (ja) |
-
1999
- 1999-07-02 JP JP18837299A patent/JP3668643B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001014160A (ja) | 2001-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10776127B2 (en) | Reducing data hazards in pipelined processors to provide high processor utilization | |
EP0207665B1 (en) | Bidirectional branch prediction and optimization | |
EP0238810B1 (en) | Method and system for facilitating instruction processing of a digital computer | |
JP3120152B2 (ja) | コンピューターシステム | |
US5881307A (en) | Deferred store data read with simple anti-dependency pipeline inter-lock control in superscalar processor | |
JPH11212788A (ja) | プロセッサのデータ供給装置 | |
JPS61109147A (ja) | 命令フェッチ及び実行制御方法 | |
US6851033B2 (en) | Memory access prediction in a data processing apparatus | |
EP0499853A2 (en) | Memory access scheme | |
JP2620505B2 (ja) | スーパースカラ・プロセッサ・システムの同期化効率を向上させる方法およびシステム | |
US7275146B2 (en) | Instruction control device and method therefor | |
JP3668643B2 (ja) | 情報処理装置 | |
WO2006006613A1 (en) | Methods and apparatus for updating of a branch history table | |
JPS6329292B2 (ja) | ||
JP2668987B2 (ja) | データ処理装置 | |
JP2894438B2 (ja) | パイプライン処理装置 | |
US6735686B1 (en) | Data processing device including two instruction decoders for decoding branch instructions | |
JP2591325B2 (ja) | 分岐制御装置 | |
JP3743155B2 (ja) | パイプライン制御型計算機 | |
JPH06314196A (ja) | 情報処理方法および装置 | |
JP2003323294A (ja) | スーパースカラプロセッサ | |
JPH08110901A (ja) | マイクロプロセッサ | |
JPH0769800B2 (ja) | データ処理装置 | |
JP2001236223A (ja) | 情報処理装置 | |
JPH03163627A (ja) | 命令処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20041215 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050104 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050307 |
|
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: 20050405 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050411 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090415 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090415 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100415 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110415 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120415 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |