JP3808013B2 - 命令実行装置 - Google Patents
命令実行装置 Download PDFInfo
- Publication number
- JP3808013B2 JP3808013B2 JP2002197860A JP2002197860A JP3808013B2 JP 3808013 B2 JP3808013 B2 JP 3808013B2 JP 2002197860 A JP2002197860 A JP 2002197860A JP 2002197860 A JP2002197860 A JP 2002197860A JP 3808013 B2 JP3808013 B2 JP 3808013B2
- Authority
- JP
- Japan
- Prior art keywords
- entry
- instruction
- entries
- cycle
- storage device
- 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
- 238000010586 diagram Methods 0.000 description 20
- 230000010365 information processing Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 6
- 238000000034 method Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 2
- 101000685824 Homo sapiens Probable RNA polymerase II nuclear localization protein SLC7A6OS Proteins 0.000 description 1
- 102100023136 Probable RNA polymerase II nuclear localization protein SLC7A6OS Human genes 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- ZGSXEXBYLJIOGF-BOPNQXPFSA-N iwr-1 Chemical compound C=1C=CC2=CC=CN=C2C=1NC(=O)C(C=C1)=CC=C1N1C(=O)[C@@H]2C(C=C3)CC3[C@@H]2C1=O ZGSXEXBYLJIOGF-BOPNQXPFSA-N 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/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
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】
図1は、本発明の背景を説明する図である。図において、情報処理装置、即ちコンピュータのCPUのコア部の概略構成が示されている。図において、CPUコア部は命令制御部1と、演算器・結果レジスタ2と、ファーストキャッシュ3と、セカンドキャッシュ4とを備えている。
【0003】
本発明は、この命令制御部1に含まれる命令実行装置に関する。
【0004】
【従来の技術】
図2は図1に示した従来の命令制御部1の概略構成を示すブロック図である。図において、201は命令フェッチ有効アドレス発生器(Instruction Fetch Effective Address Generator) IFEAG)、202はブランチヒストリ(BRANCH HISTORY)アドレス格納部、203はファーストキャッシュ内命令を格納するバッファストレージ(IFLBS)、204はファーストキャッシュ内の命令をフェッチして格納する命令バッファ(IBUFFER)、205は図示例では4命令IW0,IW1,IW2,IW3を同時に受け入れてイン・オーダで発行するデコーダ、206はロード命令のアドレスを格納するリザベーション・ステーション・アドレス・レジスタ(RSA)、207は有効アドレス発生器(EAG)、208はファーストキャッシュ内オペランドを格納するバッファストレージ(OPLBS)、209は固定小数点演算用のリザベーション・スレーション(RSE)、210は固定小数点用の演算器、211は浮動小数点用のリザベーション・ステーション(RSF)、212は浮動小数点用の演算器、213はロード・演算・分岐等の命令の実行結果のアドレスを格納する結果レジスタ、214は固定小数点用の結果アドレスバッファであるジェネラル・アップデート・バッファ(GUB)、215は浮動小数点用の結果アドレスバッファであるフローティング・アドレス・バッファFUB)、216は固定小数点用のレジスタ(GPR:General Purpose Register)、217は浮動小数点用のレジスタ(FPR:Floating Purpose Register)、218は分岐命令リザベーション・ステーション(RSBR)、219は本発明に係わるコミットスタックエントリ(CSE:コミット Stack Entry)、220はネクストプログラムカウンタ(NPC)やプログラムカウンタ(PC)等の更新可能なハードウェア資源である。
【0005】
次に上記従来の命令制御部の動作の概略を説明する。
【0006】
上記命令制御部1は、IFEAG201やBRANCH HISTORY202からのアドレスをIFLBS203を経由して命令をIBUFFER204に格納し、IBUFFER204からは、図示例では4命令IWR0-IWR33が同時に発行される。発行デコーダ205はこれらの命令をイン・オーダで、例えばIWR0、IWR1、IWR2、IWR3の順番に出力し、EAG207,演算器210及び212等においてスーパースカラ方式のアウト・オブ・オーダーで命令の実行を行い、演算・フェッチ・分岐等の命令の実行の完了が確定してからイン・オーダーでCSE219のエントリを解放する。
【0007】
即ち、CSE219は,デコーダ205から出力される命令をイン・オーダでそのエントリに格納し、アウト・オブ・オーダによる命令の実行完了後に、イン・オーダでエントリを解放する命令格納装置である。以下の説明ではこの命令格納装置のことをCSEと称する。ここで、イン・オーダの動作とは命令の発行順序に従う動作をいい、アウト・オブ・オーダの動作とは命令の発行順序に関係なく行われる動作をいう。
【0008】
図3は従来の命令実行制御装置の概略構成を示すブロック図である。同図において、従来の命令実行制御装置は、命令をイン・オーダで発行するデコーダと、その命令をイン・オーダで格納し、命令のアウト・オブ・オーダでの実行の完了後にその命令をイン・オーダで出力するCSE32と、CSEのどのエントリ内の命令の実行が完了するのかをCSE32の全エントリの中から選択するCSE選択部33と、選択されたエントリの命令の実行が実際に完了するための条件を判別する完了条件判定部34と、命令実行の完了に伴ってCPUの資源の更新及びエントリの解放を行う資源及びエントリ解放部35とを備えている。
【0009】
CSE選択部33の動作と完了条件判定部34の動作とはクロック信号の1サイクルの期間で行われる。
【0010】
この従来の情報処理装置では、CSEの完了条件のサイクルでCSEの全エントリの中から実行順序の最も古いエントリからはじめて、命令実行完了の対象となるCSEのエントリを抜き出して、抜き出したエントリに格納されている命令の実行が完了したか否かを判別する完了条件の判別を行い、命令の実行が完了していると判別されるとイン・オーダでエントリを解放する、という処理を情報処理装置のクロック周波数の1サイクルで行っている。例えば、従来はCSEのエントリ数は24個であり、そこからCSE選択部33により3個のエントリを選択してその中の命令の完了条件を判定する動作を1サイクルで行っていたが、CSE32のエントリ数がこれ以上増大すると、1サイクルで選択及び完了条件判定を行うことができなくなる。さらに、クロック周波数は益々高くなる傾向にあり、エントリの選択及び完了条件判定の動作を1サイクルで行うことを可能にするために何らかの工夫が必要になっている。
【0011】
【発明が解決しようとする課題】
情報処理装置の性能の向上のために、CSEのエントリの数も1サイクルでエントリを同時に解放する数もクロック周波数も多くすることが要請されている。しかし、全CSEのエントリから完了対象となり得るエントリを抜き出して、完了条件の判別を行い、エントリを解放する処理を完了条件の1サイクルのみで行うことはCSEのエントリ数の増加と1サイクルでエントリを同時に解放する数と情報処理装置のクロック周波数を考慮すると非常に厳しいことになる。
【0012】
すなわち、CSEのエントリ数が多くなればなるほど1サイクルで命令の実行が完了する対象となり得るエントリを抜き出すための回路規模は増加するという課題がある。
【0013】
同様に、1サイクルでエントリを同時に解放する数が多くなるほど、エントリの数と同時に制御する回路の量と回路段数は増加していく傾向にあるという課題もある。
【0014】
さらに、情報処理装置のクロック周波数を従来のものよりも高速化しなければならないことを考慮すると、命令実行の完了条件の判定の1サイクルのみで従来どおりの処理を行うことは非常に厳しいことになってくるという課題もある。
【0015】
特に、イン・オーダで命令をCSEに格納し、アウト・オブ・オーダ・で命令を実行してから、イン・オーダでCSEのエントリを解放する場合に、CSEの全エントリについて完了条件の判定を行っているので、命令の実行完了が遅延すると、エントリの解放がスムースに行われず、この結果、CSE219の全エントリが命令で一杯になり、デコーダ205から命令を発行することができなくなって、コンピュータの動作速度が低下するという課題がある。
【0016】
したがって本発明の目的は、CSEのエントリ数より少ないエントリについて命令実行完了の判定をすることにより、CSEのエントリ数が増大しても、また、クロック周波数が増大しても、CSEのエントリの解放をスムースに行うことが可能な情報処理装置を提供することにある。
【0017】
【課題を解決するための手段】
上記課題を解決するために、本発明の第1の態様により提供されるものは、命令の実行後に命令格納装置(即ち、CSE)のエントリの完了条件判定のサイクルの1サイクル前で、命令格納装置の全エントリの中から、未解放の命令の中で最も古い順位の命令を格納しているエントリを先頭として、1サイクルで同時に完了可能なエントリの最大数分の内容のコピーを格納するレジスタと、命令格納装置のエントリの完了条件判定のサイクルで、レジスタのエントリに格納されている命令の実行が完了したかを判定する完了条件判定部と、命令格納装置のエントリの中で完了判定部により完了したと判定されたエントリのみを解放するエントリ解放部とを備えたことを特徴とする、命令実行装置である。
【0018】
この第1の態様により、レジスタにはCSEのエントリ数よりはるかに少ない数のエントリしかなく、その少ないエントリに格納されている命令の実行完了の判別をするだけで、CSEのエントリの解放を行うことが可能なので、CSEのエントリ数が増大しても高速クロック信号で動作可能になる。また、CSEのエントリ数が増大することで、従来よりCSEの全エントリが命令で一杯になってデコーダから命令を発行できなくなる、という事態が発生する確率は低くなる。
【0019】
しかし、上記第1の態様によれば、従来まで1サイクルで行っていたCSEのエントリの完了の判別を2サイクルに分担することになり、従来よりも処理が遅れてしまうという問題がある。
【0020】
これを解決するために、本発明の第2の態様によれば、上記第1の態様において、レジスタは、命令格納装置に接続されたエントリ選択部と、該エントリ選択部により選択されたエントリの内容のコピーを格納するエントリ内容格納部を備え、エントリ選択部は、命令の実行後に命令格納装置のエントリの完了条件判定のサイクルの1サイクル前で、命令格納装置の全エントリの中から、未解放の命令の中で最も古い順位の命令を格納しているエントリを先頭として、1サイクルで同時に完了可能なエントリの最大より多い数のエントリを選択するものであり、エントリ内容格納部は、エントリ選択部により選択されたエントリの中から、命令格納装置のエントリの完了条件判定のサイクルで、完了条件の判別が確定して解放することがわかっているエントリを除いたものの中から、完了条件の判別をするエントリの対象を選択してその内容のコピーを格納する。
【0021】
この第2の態様によれば、CSEの全エントリから完了対象のエントリを選択するときに1サイクルで完了する可能性のある最大数のエントリより多いエントリを抜き出しておくので、CSEのエントリの完了条件の判別を毎サイクルで行うことが可能になる。この手段を用いると、レジスタには毎サイクルで実行順序の最も古い命令がエントリにセットされ、完了条件の判別をすることが可能となる。
【0022】
本発明の第3の態様によれば、上記第2の態様において、命令の実行完了により発生する完了信号と同時に送られてくるCSEのエントリの番号を示す命令識別子とエントリ選択部により選択されたエントリの番号との一致の有無を検出し、一致したエントリ番号のエントリの中から、現サイクルで完了条件の判別が確定して完了することがわかっているエントリを除いたエントリの完了信号を示すフラグを出力する一致回路と、エントリ選択部の出力と一致回路の出力との論理和をとる論理的OR回路とを備え、論理的OR回路の出力をレジスタに格納するようにした。
【0023】
この第3の態様によれば、命令の実行完了により発生する完了信号と同時に送られてくるCSEのエントリの番号を示す命令識別子からフラグを命令格納装置のエントリにセットするとともに、レジスタにもセットするので、次のサイクルでエントリの完了条件の判別をすることができ、命令格納装置のエントリにのみフラグをセットする場合と比べてエントリ内の命令の解放を速やかに行うことができる。
【0024】
【発明の実施の形態】
図4はデコーダによりデコードされてきた命令を本発明の第1の実施の形態による命令実行制御装置内のレジスタにセットする処理の全体的な流れを示すブロック図である。同図において、本実施の形態による命令実行制御装置41は命令格納装置(CSE)42と、レジスタ43と完了条件判定部44と、エントリ解放部45とを備えている。
【0025】
図の上側のD、D+1、D+2はデコード処理の3つの連続するサイクルを表しており、Jは完了条件判定のサイクルを表しており、Wはエントリの解放に伴う情報処理装置の資源の更新のサイクルを表している。命令実行のサイクルは図示を省略してある。
【0026】
デコーダ46によりデコードされた命令はイン・オーダで発行され、図示省略したサイクルで従来と同様に、スーパースカラ方式のアウト・オブ・オーダーで実行される。デコードされた命令はDサイクルで一旦バッファメモリ47に格納された後に、D+1サイクルでCSE42の複数のエントリの中の空いているエントリにイン・オーダで格納される。CSE42のエントリの数は例えば64個である。
【0027】
レジスタ43には、命令の実行後にCSE42のエントリの完了条件判定のサイクルJの1サイクル前で、CSE42の全エントリの中から、未解放の命令の中で最も古い順位の命令を格納しているエントリを先頭として、1サイクルで同時に完了可能なエントリの最大数分の内容のコピーを格納する。1サイクルで同時に完了可能なエントリの最大数は、デコーダ46から同時に発行される命令数に等しい。例えば、デコーダ46から同時に発行される命令数が4であれば、1サイクルで同時に完了可能なエントリの最大数は4である。
【0028】
完了条件判定部44は、CSE42のエントリの完了条件判定のサイクルJで、レジスタ43のエントリに格納されている命令の実行が完了したかどうかを判定する。
【0029】
エントリ解放部45は、CSE42のエントリの中で完了判定部44により完了したと判定されたエントリのみを解放する。
【0030】
この第1の実施の形態によれば、CSE42の全エントリについて、命令が完了したかどうかを判定する必要がなくなり、レジスタ43のエントリに格納されている命令の実行が完了したかどうかを判定するだけで、CSE42のエントリの解放を行うことが可能になる。したがって、クロック周波数が増大し、且つCSE42のエントリ数が増大しても、CSE42のエントリの解放が滞ることなく行われ、デコーダ46からの命令の発行を止めなければならない事態になる可能性は低くなり情報処理装置の処理速度の低下を防止することができる。
【0031】
しかし、上記第1の実施の形態では、CSE42のエントリの完了条件判定のために、レジスタ43に格納するサイクルD+2と完了条件判定サイクルJの2サイクルが必要になり、従来は毎サイクルでCSEのエントリの完了条件を判定可能であったのと比較すると1サイクル分余計に必要になるという問題がある。
【0032】
そこで、この問題を本発明の第2の実施の形態により解決した。
【0033】
図5は本発明の第2の実施の形態による命令実行制御装置の構成を示すブロック図である。同図において、図4との相違は、レジスタ43を第1エントリ選択部431とエントリ内容格納部432とで構成したことである。
【0034】
第1エントリ選択部431は、命令の実行後にCSE42のエントリの完了条件判定のサイクルの1サイクル前で、CSE42の全エントリの中から、未解放の命令の中で最も古い順位の命令を格納しているエントリを先頭として、1サイクルで同時に完了可能なエントリの最大より多い数のエントリを選択する。
【0035】
エントリ内容格納部432は、第1エントリ選択部431により選択されたエントリの中から、CSE42のエントリの完了条件判定のサイクルで、完了条件の判定が確定して解放することがわかっているエントリを除いたものを選択し、完了条件の判定をするエントリの対象の内容のコピーを格納する。
【0036】
図6は図5に示したCSE42及びレジスタ43の詳細な構成の一例を示す図である。同図において、CSE42は64個のエントリCSE0〜CSE63を有している。レジスタ43は、第1エントリ選択部431とエントリ内容格納部432を備えている。また、デコーダ46から同時に発行される命令数は4であるとする。
【0037】
第1エントリ選択部431は、CSE42の64個のエントリに格納されている命令のうち、現サイクルにおいて実行順序の最も古い番号を示す出力ポインタ<5:0>を使って、1サイクルで同時に完了可能なエントリの最大数4より多い数である8個のエントリを選択する。ここで、<5:0>は0から63までの64個のエントリのそれぞれの番号を第0ビットから第5ビットまでの6ビットで表すことを意味する。
【0038】
エントリ内容格納部432は、第1エントリ選択部431により選択されたエントリから、後に詳述するコミット数に応じて1サイクルで同時に完了可能なエントリの最大数4のエントリを選択する第2エントリ選択部433と、第2エントリ選択部433により選択されたエントリの内容のコピーを格納するサブレジスタ434とを備えている。
【0039】
第1エントリ選択部431における8個のエントリの選択方法の一例として、出力ポインタは、出力ポインタ<5:0>、出力ポインタ+1<5:0>、 ・・・,出力ポインタ+7<5:0>の8種類の値のグループを求めたものをそれぞれ毎サイクルでラッチにセットしておく。8種類のグループの一例は下記の表1通りである。
【0040】
【表1】
【0041】
表1において、第1行のグループ0は6ビットの出力ポインタ+0の下位3ビットが000であるグループであり、第2行のグループは6ビットの出力ポインタ+1の下位3ビットが001であるグループである。第3行以降も同様に、6ビットの出力ポインタ+nの下位3ビットが010,011、・・・等であるグループである。
【0042】
この8グループからそれぞれ1つずつのCSEを選択することになる。そのセレクト信号として、出力ポインタ+0<5:3>、出力ポインタ+1<5:3>、・・・、出力ポインタ+7<5:3>といった8種類の値を使用する。ここで<5:3>とは6ビットの出力ポインタの上位3ビットを表す。即ち、以下の表2に示す値をセレクト信号として用いる。
【0043】
【表2】
【0044】
例えば、出力ポインタの値が10だとすると、グループ0のセレクト信号は10+7=17の上位3ビット、即ち、010001の上位3ビットである010となり、グループ1のセレクト信号は10+6=16の上位3ビット、即ち010000の上位3ビットでやはり010となる。グループ2以降も同様である。
【0045】
上記セレクト信号によって、エントリの番号は以下の表3のように選択される。
【0046】
【表3】
【0047】
例えば、出力ポインタの値が10の場合は上述のようにセレクト信号は010なので、グループ0からはエントリ番号16が選ばれ、グループ1からはエントリ番号17が選ばれる。
【0048】
図7の(a)は、表3の中のグループ0について、セレクト信号が000の場合から111の場合までのエントリ番号の選択回路である。図示のように、グループ0では、セレクト信号が000の場合はエントリ番号0がフラグとして選択され、セレクト信号が001の場合はエントリ番号8がフラグとして選択され、等々である。
【0049】
図7の(b)は、表3の中のグループ1について、セレクト信号が000の場合から111の場合までのエントリ番号の選択回路である。図示のように、グループ1では、セレクト信号が000の場合はエントリ番号1がフラグとして選択され、セレクト信号が001の場合はエントリ番号9がフラグとして選択され、等々である。
【0050】
表3のグループ2以降についても出力ポインタの値が1ずつ減少していくだけで同様に考えられるので図示を省略する。
【0051】
次にこの選択された(1)から(8)のエントリ番号を実行順序の古い順番の番号(出力ポインタ+0から出力ポインタ+7)に並び替えるために、出力ポインタ<2:0>,出力ポインタ+1<2:0>,・・・,OUT_PTR+7<2:0>といった8種類の値の下位3ビットをセレクト信号として使用して、以下の表4のように並び替える。
【0052】
【表4】
【0053】
図8の(a)は出力ポインタ+0<2:0>の場合の上記<1>に示されるグループを選択するための回路である。図示のように、出力ポインタ+0の下位3ビットが000から111の場合はそれぞれ、表3の(1)から(8)示されるエントリ番号が選択される。
【0054】
図8の(b)は出力ポインタ+1<2:0>の場合の上記<2>を得るための回路である。図示のように、出力ポインタ+1の下位3ビットが000から111の場合はそれぞれ、表3の(1)から(8)示されるエントリ番号が選択される。
【0055】
出力ポインタ+2以降についても同じように、下位3ビットが000から111の場合はそれぞれ、表3の(1)から(8)示されるエントリ番号が選択される。
【0056】
以上により、第1エントリ選択部431の出力に、CSE42から選択した8個のエントリが得られる。
【0057】
次にエントリ内容格納部432における第2エントリ選択部433により、エントリ選択部によって選択された8個のエントリから、次のサイクルで完了対象となる最大4個のエントリを選択する。
【0058】
次のサイクルで完了対象となるエントリの数は、現サイクルでコミットした数、即ち、エントリ内の命令の実行が完了したエントリの数によって決まる。
【0059】
図9はコミットした数を決定する回路の回路図である。図示のように、コミットした数は、サブレジスタ434の先頭のエントリTOPが完了しなければ0個、TOPが完了して2NDが完了しなければ1個、2NDが完了して3RDが完了しなければ2個、3RDが完了して4THが完了しなければ3個、4THが完了すれば4個となる。これは、命令の実行がイン・オーダーで完了するためにTOPがコミットしなければ2ND、3RD及び4THがコミットすることはないためである。同様に、2NDがコミットしなければ3RD及び4THがコミットすることはなく、3RDがコミットしなければ4THがコミットすることはないためである。
【0060】
コミットした数をセレクト信号として第2エントリ選択部433(図6)により以下の表5のようにサブレジスタ434にセットするCSEのエントリを選択する。
【0061】
【表5】
【0062】
図10は表5に示したようにしてサブレジスタ434にセットする第2エントリ選択部433の例である。表5及び図10から分かるように、コミット数0の場合は、サブレジスタ434のエントリは完了しないため、前のサイクルと同じサイクルからコピーされ、コミット数が1つ増えると、1つのエントリが完了するために、次のエントリの内容がコピーされる。こうして、サブレジスタ434には実行順序の最も古いエントリから順番に4つのエントリの内容のコピーが格納される。
【0063】
このようにして、第2エントリ選択部433により1サイクルで完了する可能性のある最大数4のエントリ数より多い8個のエントリを選択しておき、その選択されたエントリからコミット数に応じて4個のエントリを選択してサブレジスタ434のTOPから4THの4つのエントリにセットする。サブレジスタ434にセットされたエントリのみが、完了条件判定サイクルで完了条件を判別する対象のエントリとなる。これにより、完了条件判定を毎サイクルに行うことが可能になる。
【0064】
図11は本発明の第3の実施の形態による命令実行制御装置の構成を示すブロック図である。同図において、図5と同一部分には同一参照番号を付してある。図5と異なるところは、本実施の形態では、完了信号生成部111と、一致回路112と、CSE選択部113と論理的OR回路114とが設けられていること、及びCSE42にはデコーダからのフラグが入力されないことである。
【0065】
CSEのエントリに格納されていた命令による演算・フェッチ・分岐等の命令の実行が完了すると、完了信号生成部111にて完了信号が生成される。従来は、この完了信号を示すフラグをCSE42の対応するエントリにのみ設定して次のサイクルでそのエントリの完了条件の判別をしていたが、本発明の第1及び第の実施の形態におけるように1サイクルで完了する可能性のある最大数4のエントリ数を持つレジスタ43を設けた場合は、完了信号を示すフラグをCSE42にのみ設定したのでは次のサイクルでエントリを完了することが出来なくなり、従来よりもエントリを完了するのが1サイクル遅くなってしまう。
【0066】
そこで、本実施の形態では、命令実行の完了信号を示すフラグをCSE42に設定するだけではなく、レジスタ43にも設定するようにした。これにより、従来と同じく、完了信号が送られてきた次のサイクルでCSE42の対応するエントリの完了条件の判別をすることが可能になる。
【0067】
次に図11の装置の動作を説明する。
【0068】
それぞれの命令実行完了にはCSEに命令実行完了と同時に送られてくる命令識別子(IID)がある。このIIDはCSE42の中のエントリ番号を表している。一致回路112はこのIIDとCSE42の現サイクルでの出力ポインタを最小値とする複数の出力ポインタとを比較して、一致する出力ポインタがあればその出力ポインタに対応するエントリを含んでCSE42の全エントリから1サイクルで解放可能な最大数(図6の実施例では4個)より多い数(図6の例では8個)のエントリを選択した後に、図6で説明したのと同様にその選択したエントリからコミット数に応じて1サイクルで解放可能な最大数のエントリのフラグをCSE42にセットするとともに、論理的OR回路114にも出力する。
【0069】
上記照合の結果、出力ポインタがIIDと不一致であれば、そのIIDに対応するエントリは次サイクルでは完了条件の判別をしないので、サブレジスタ434にはフラグをセットせず、CSE42の対応するエントリにのみフラグをセットする。
【0070】
CSE選択部113の構成は図6における第1エントリ選択部431とエントリ内容格納部432内の第2エントリ選択部433を併せた構成と同じである。
【0071】
論理的OR回路114はCSE選択部113の出力と一致回路の出力の論理的ORをとってサブレジスタ434に格納する。
【0072】
完了条件判定部44及びエントリ解放部45の動作は図6に示したものと同じなのでここでは説明を省略する。
【0073】
図12は図11に示した命令実行制御装置の一部を詳細に示した回路図である。図示のように、CSE選択部113は図6に示した装置の第1エントリ選択部431とエントリ内容格納部432内の第2エントリ選択部433とを合成したものと同じである。
【0074】
一致回路112は照合回路121と第3エントリ選択部122とを備えている。照合回路121は後に詳述するように命令識別子IIDと出力ポインタとを照合して8個のエントリを選択する。第3エントリ選択部122は照合回路12の出力からコミット数に基づいて4個のエントリを選択する。
【0075】
一致回路112の出力とCSE選択部113の出力とは論理定OR回路114により論路的ORをとって、サブレジスタ434に格納される。
【0076】
より詳しく述べると、照合回路121では、6ビットのIIDと、現サイクルの6ビットの出力ポインタ<5:0>、出力ポインタ+1<5:0>、,・・・,出力ポインタ+7<5:0>の8種類と全て照合する。もし、これらの出力ポインタの8種類のどれかとIIDとが一致した場合は以下の表6のようになる。ここで8種類の出力ポインタと照合する理由は、現サイクルですでに完了条件の判別が確定していて解放するエントリが最大数の4であった場合でもサブレジスタ434に完了条件判別が確定していないエントリのフラグをセットすることができるからである。
【0077】
【表6】
【0078】
図13は図12における照合回路121の一部の詳細な回路図である。図において、(a)は出力ポインタとIIDを照合して上記表の(1)を導き出す回路である。図示の最上部の論理回路ではIIDの第5ビット<5>と出力ポインタの第5ビット<5>とのENOR論理を出力する。つまり、一致したときに”1”を出力する。同様に第4〜第0ビットについて出力ポインタとIIDを比較して一致した場合に”1”を出力する。これらすべてのENOR論理出力がすべて”1”のときに(1)は”1”となる。
【0079】
(b)は出力ポインタ+1とIIDを照合して上記表の(2)を導き出す回路である。図示の最上部の論理回路ではIIDの第5ビット<5>と出力ポインタ+1の第5ビット<5>とのENOR論理を出力する。つまり、一致したときに”1”を出力する。同様に第4〜第0ビットについて出力ポインタとIIDを比較して一致した場合に”1”を出力する。これらすべてのENOR論理出力がすべて”1”のときに(1)は”1”となる。
【0080】
他の出力ポインタについても、出力ポインタの値が1ずつ増加するだけで、同様の照合を行う。
【0081】
次に、現サイクルでのコミットした数をセレクト信号として以下の表7のようにサブレジスタ434にフラグをセットするか否かを選択する。
【0082】
【表7】
【0083】
この選択は図6における第2エントリ選択部433の動作と同じであり、図10に示した回路における<1>から<8>を(1)から(8)に置き換えれば同様に実現できる。
【0084】
以上によりTOPから4THまで選択されたエントリと、CSE42の64個のエントリからCSE選択部113により選択されたエントリとの論理的ORをとることにより、CSE42のエントリに格納されていた演算・フェッチ・分岐等の命令の実行完了を示すフラグはその完了信号が送られてきたサイクルでサブレジスタ434にセットすることができ、次のサイクルには完了条件の判別をする対象のエントリになることが可能となる。命令実行の完了信号がCSE42に送られてきたサイクルで、完了信号に伴うIIDと出力ポインタの8種類との一致が成立しなかった場合、及びコミットした数によりサブレジスタ434にフラグをセットしない場合には、完了を示すフラグはCSE42の対応するエントリのみにセットするだけとなる。
【0085】
CSE42の全エントリを解放する信号が発生した場合は、CSE42の全エントリのバリッド信号をオフにして命令を完了させないようにする。この場合、サブレジスタ434に存在しているエントリも完了判定の対象としてはならないが、上記全エントリを解放する信号が発生した場合は、第1エントリ選択部431及びエントリ格納部432により既にサブレジスタ434にバリッド信号がオン状態のエントリが存在しており、このままではサブレジスタ434に存在しているエントリが完了判定の対象となってしまう。
【0086】
これを避けるために、CSE42の全エントリを解放する信号が発生したサイクルで、サブレジスタ434内のエントリのバリッド信号をオフにしておく。
【0087】
これにより、次のサイクルでサブレジスタ434のエントリの完了条件が判定されることはなくなる。
【0088】
【発明の効果】
以上の説明から明らかなように、本発明によれば、命令実行完了条件の判定の1サイクルで処理している部分の回路設計を改善したことにより、CSEのエントリ数が増大しても、また、クロック周波数が増大しても、CSEのエントリの解放をスムースに行うことが可能な情報処理装置が提供される。
【図面の簡単な説明】
【図1】本発明の背景を説明する図である。
【図2】図1に示した従来の命令制御部1の概略構成を示すブロック図である。
【図3】従来の命令実行制御装置の概略構成を示すブロック図である。
【図4】デコーダによりデコードされてきた命令を本発明の第1の実施の形態による命令実行制御装置内のレジスタにセットする処理の全体的な流れを示すブロック図である。
【図5】本発明の第2の実施の形態による命令実行制御装置の構成を示すブロック図である。
【図6】図5に示したCSE及びレジスタの詳細な構成の一例を示す図である。
【図7】(a)は、表3の中のグループ0について、セレクト信号が000の場合から111の場合までのエントリ番号の選択回路であり、(b)は、表3の中のグループ1について、セレクト信号が000の場合から111の場合までのエントリ番号の選択回路である。
【図8】(a)は出力ポインタ+0<2:0>の場合の上記<1>に示されるグループを選択するための回路であり、(b)は出力ポインタ+1<2:0>の場合の上記<2>を得るための回路である。
【図9】コミットした数を決定する回路の回路図である。
【図10】表5に示したようにしてサブレジスタにセットする第2エントリ選択部の例である。
【図11】本発明の第3の実施の形態による命令実行制御装置の構成を示すブロック図である。
【図12】図11に示した命令実行制御装置の一部を詳細に示した回路図である。
【図13】図12における照合回路121の一部の詳細な回路図である。
【符号の説明】
41…命令実行制御装置
42…命令格納装置
43…レジスタ
44…完了条件判定部
45…エントリ解放部
46…デコーダ
431…第1エントリ選択部
432…エントリ内容格納部
433…第2エントリ選択部
434…サブレジスタ
111…完了信号生成部
112…一致回路
113…CSE選択部
114…論理的OR回路
121…照合回路
Claims (9)
- 命令を格納する複数のエントリを有する命令格納装置に対して、クロック信号のサイクルに応じて、命令をイン・オーダで前記複数のエントリに格納し、スーパースカラ方式のアウト・オブ・オーダーで命令を実行し、命令の実行が完了した後にイン・オーダーで前記命令格納装置のエントリを解放する装置において、
命令の実行後に前記命令格納装置のエントリの完了条件判定のサイクルの1サイクル前で、前記命令格納装置の全エントリの中から、未解放の命令の中で最も古い順位の命令を格納しているエントリを先頭として、1サイクルで同時に完了可能なエントリの最大数分の内容のコピーを格納するレジスタと、
前記命令格納装置のエントリの完了条件判定のサイクルで、前記レジスタのエントリに格納されている命令の実行が完了したかを判定する完了条件判定部と、
前記命令格納装置のエントリの中で前記完了条件判定部により完了したと判定されたエントリのみを解放するエントリ解放部とを備えたことを特徴とする、命令実行装置。 - 前記エントリ解放部による前記命令格納装置のエントリの解放動作は、前記完了条件判定サイクルの次のサイクルで行うことを特徴とする、請求項1記載の命令実行装置。
- 命令をイン・オーダで発行して前記命令格納装置に格納するデコーダを更に備えていることを特徴とする、請求項1記載の命令実行装置。
- 前記エントリ解放部は、前記完了条件判定部により完了したと判定されたエントリに関係する前記命令実行装置の他の資源の更新も行うことを特徴とする、請求項1記載の命令実行装置。
- 前記レジスタは、前記命令格納装置に接続されたエントリ選択部と、該エントリ選択部により選択されたエントリの内容のコピーを格納するエントリ内容格納部を備え、
前記エントリ選択部は、命令の実行後に前記命令格納装置のエントリの完了条件判定のサイクルの1サイクル前で、前記命令格納装置の全エントリの中から、未解放の命令の中で最も古い順位の命令を格納しているエントリを先頭として、1サイクルで同時に完了可能なエントリの最大数より多い数のエントリを選択するものであり、
前記エントリ内容格納部は、前記エントリ選択部により選択されたエントリの中から、前記命令格納装置のエントリの完了条件判定のサイクルで、完了条件の判別が確定して解放することがわかっているエントリを除いたものの中から、完了条件の判別をするエントリの対象を選択してその内容のコピーを格納するものであることを特徴とする、請求項1記載の命令実行装置。 - 前記エントリ選択部は、前記命令格納装置のエントリのうち前記完了条件判定のサイクルにおける実行順序の最も古いエントリの番号を示す出力ポインタの値に基づいて、前記最も古い順位の命令を格納しているエントリを決定し、決定されたエントリを先頭として、1サイクルで同時に完了可能なエントリの最大数より多い数のエントリを前記命令格納装置の全エントリから選択するものである、請求項5記載の命令実行装置。
- 前記エントリ内容格納部は、前記完了条件判定のサイクルで解放されるエントリの数に基づいて、前記完了条件の判別をするエントリの対象を選択する第2エントリ選択部を備えていることを特徴とする、請求項6記載の命令実行装置。
- 命令の実行完了により発生する完了信号と同時に送られてくる前記命令格納装置のエントリの番号を示す命令識別子と前記エントリ選択部により選択されたエントリの番号との一致の有無を検出し、一致したエントリ番号のエントリの中から、現サイクルで完了条件の判別が確定して完了することがわかっているエントリを除いたエントリの完了信号を示すフラグを出力する一致回路と、
前記エントリ選択部の出力と前記一致回路の出力との論理和をとる論理的OR回路とを備え、
前記論理的OR回路の出力を前記レジスタに格納するようにしたことを特徴とする、請求項5記載の命令実行装置。 - 前記一致回路により不一致が検出されたエントリの完了信号を示すフラグは前記命令格納装置の該エントリ番号に対応するエントリにセットするようにしたことを特徴とする、請求項8記載の命令実行装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002197860A JP3808013B2 (ja) | 2002-07-05 | 2002-07-05 | 命令実行装置 |
US10/331,917 US7278010B2 (en) | 2002-07-05 | 2002-12-31 | Instruction execution apparatus comprising a commit stack entry unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002197860A JP3808013B2 (ja) | 2002-07-05 | 2002-07-05 | 命令実行装置 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2004038805A JP2004038805A (ja) | 2004-02-05 |
JP2004038805A5 JP2004038805A5 (ja) | 2005-10-27 |
JP3808013B2 true JP3808013B2 (ja) | 2006-08-09 |
Family
ID=29997089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002197860A Expired - Fee Related JP3808013B2 (ja) | 2002-07-05 | 2002-07-05 | 命令実行装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7278010B2 (ja) |
JP (1) | JP3808013B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4486434B2 (ja) * | 2004-07-29 | 2010-06-23 | 富士通株式会社 | 命令リトライ検証機能付き情報処理装置および命令リトライ検証方法 |
CN104011669B (zh) * | 2011-12-22 | 2017-12-12 | 英特尔公司 | 用于提交指令的选择性执行的方法、设备和系统 |
JP6098429B2 (ja) * | 2013-08-12 | 2017-03-22 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
JP7020304B2 (ja) * | 2018-06-07 | 2022-02-16 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
JP7131313B2 (ja) * | 2018-11-09 | 2022-09-06 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6735685B1 (en) * | 1992-09-29 | 2004-05-11 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
DE69329778T2 (de) * | 1992-09-29 | 2001-04-26 | Seiko Epson Corp., Tokio/Tokyo | System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor |
TW260765B (ja) * | 1994-03-31 | 1995-10-21 | Ibm | |
US5903740A (en) * | 1996-07-24 | 1999-05-11 | Advanced Micro Devices, Inc. | Apparatus and method for retiring instructions in excess of the number of accessible write ports |
JP3469469B2 (ja) * | 1998-07-07 | 2003-11-25 | 富士通株式会社 | 情報処理装置 |
JP2001075803A (ja) | 1999-09-06 | 2001-03-23 | Ricoh Co Ltd | スーパースカラ型プロセッサにおけるリオーダーバッファ装置 |
JP2001181708A (ja) | 1999-12-23 | 2001-07-03 | Nippon Steel Corp | 微小金属球の製造方法および装置 |
-
2002
- 2002-07-05 JP JP2002197860A patent/JP3808013B2/ja not_active Expired - Fee Related
- 2002-12-31 US US10/331,917 patent/US7278010B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7278010B2 (en) | 2007-10-02 |
US20040006684A1 (en) | 2004-01-08 |
JP2004038805A (ja) | 2004-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN204945992U (zh) | 一种处理器 | |
US8074060B2 (en) | Out-of-order execution microprocessor that selectively initiates instruction retirement early | |
US3728692A (en) | Instruction selection in a two-program counter instruction unit | |
US20080276072A1 (en) | System and Method for using a Local Condition Code Register for Accelerating Conditional Instruction Execution in a Pipeline Processor | |
US6981131B2 (en) | Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction | |
US8943298B2 (en) | Meta predictor restoration upon detecting misprediction | |
JPH07160501A (ja) | データ処理システム | |
EP0093430B1 (en) | Pipeline data processing system | |
EP0094535B1 (en) | Pipe-line data processing system | |
US20060218124A1 (en) | Performance of a data processing apparatus | |
JP3808013B2 (ja) | 命令実行装置 | |
JP3725547B2 (ja) | 限定ラン分岐予測 | |
JP3469469B2 (ja) | 情報処理装置 | |
US7765387B2 (en) | Program counter control method and processor thereof for controlling simultaneous execution of a plurality of instructions including branch instructions using a branch prediction mechanism and a delay instruction for branching | |
US20040148493A1 (en) | Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue | |
JPH08221273A (ja) | 命令レベルの並列処理制御方法およびプロセッサ | |
JP3146077B2 (ja) | プロセッサ | |
CN114546497B (zh) | 乱序处理器中队列的访问方法及装置 | |
JP2001060152A (ja) | 分岐予測を抑止する情報処理装置および方法 | |
US20100100709A1 (en) | Instruction control apparatus and instruction control method | |
US20050273579A1 (en) | Method and apparatus for maintaining status coherency between queue-separated functional units | |
US6578135B1 (en) | Method and apparatus for performing addressing operations in a superscalar superpipelined processor | |
JP3765111B2 (ja) | 分岐登録命令を有するプロセッサ | |
JPWO2008155839A1 (ja) | 命令処理装置 | |
JP2877531B2 (ja) | 並列演算処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050704 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050704 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060414 |
|
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: 20060418 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060516 |
|
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: 20090526 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100526 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100526 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110526 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120526 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130526 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140526 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |