JP3808013B2 - 命令実行装置 - Google Patents

命令実行装置 Download PDF

Info

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
Application number
JP2002197860A
Other languages
English (en)
Other versions
JP2004038805A5 (ja
JP2004038805A (ja
Inventor
康伸 秋月
愛一郎 井上
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2002197860A priority Critical patent/JP3808013B2/ja
Priority to US10/331,917 priority patent/US7278010B2/en
Publication of JP2004038805A publication Critical patent/JP2004038805A/ja
Publication of JP2004038805A5 publication Critical patent/JP2004038805A5/ja
Application granted granted Critical
Publication of JP3808013B2 publication Critical patent/JP3808013B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result 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

【0001】
【発明の属する技術分野】
本発明は、情報処理装置における命令実行装置に関し、より詳しくは命令格納装置のエントリ数の増加を可能とすると共にクロック周波数の増加を可能にした命令実行装置に関する。
【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は浮動小数点用の演算器、21はロード・演算・分岐等の命令の実行結果のアドレスを格納する結果レジスタ、21は固定小数点用の結果アドレスバッファであるジェネラル・アップデート・バッファ(GUB)、215は浮動小数点用の結果アドレスバッファであるフローティング・アドレス・バッファFUB)、21は固定小数点用のレジスタ(GPR:General Purpose Register)、21は浮動小数点用のレジスタ(FPR:Floating Purpose Register)、21は分岐命令リザベーション・ステーション(RSBR)、21は本発明に係わるコミットスタックエントリ(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等においてスーパースカラ方式のアウト・オブ・オーダーで命令の実行を行い、演算・フェッチ・分岐等の命令の実行の完了が確定してからイン・オーダーでCSE21のエントリを解放する。
【0007】
即ち、CSE21は,デコーダ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の全エントリについて完了条件の判定を行っているので、命令の実行完了が遅延すると、エントリの解放がスムースに行われず、この結果、CSE21の全エントリが命令で一杯になり、デコーダ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】
Figure 0003808013
【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】
Figure 0003808013
【0044】
例えば、出力ポインタの値が10だとすると、グループ0のセレクト信号は10+7=17の上位3ビット、即ち、010001の上位3ビットである010となり、グループ1のセレクト信号は10+6=16の上位3ビット、即ち010000の上位3ビットでやはり010となる。グループ2以降も同様である。
【0045】
上記セレクト信号によって、エントリの番号は以下の表3のように選択される。
【0046】
【表3】
Figure 0003808013
【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】
Figure 0003808013
【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】
Figure 0003808013
【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】
Figure 0003808013
【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】
Figure 0003808013
【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サイクルで同時に完了可能なエントリの最大数分の内容のコピーを格納するレジスタと、
    前記命令格納装置のエントリの完了条件判定のサイクルで、前記レジスタのエントリに格納されている命令の実行が完了したかを判定する完了条件判定部と、
    前記命令格納装置のエントリの中で前記完了条件判定部により完了したと判定されたエントリのみを解放するエントリ解放部とを備えたことを特徴とする、命令実行装置。
  2. 前記エントリ解放部による前記命令格納装置のエントリの解放動作は、前記完了条件判定サイクルの次のサイクルで行うことを特徴とする、請求項1記載の命令実行装置。
  3. 命令をイン・オーダで発行して前記命令格納装置に格納するデコーダを更に備えていることを特徴とする、請求項1記載の命令実行装置。
  4. 前記エントリ解放部は、前記完了条件判定部により完了したと判定されたエントリに関係する前記命令実行装置の他の資源の更新も行うことを特徴とする、請求項1記載の命令実行装置。
  5. 前記レジスタは、前記命令格納装置に接続されたエントリ選択部と、該エントリ選択部により選択されたエントリの内容のコピーを格納するエントリ内容格納部を備え、
    前記エントリ選択部は、命令の実行後に前記命令格納装置のエントリの完了条件判定のサイクルの1サイクル前で、前記命令格納装置の全エントリの中から、未解放の命令の中で最も古い順位の命令を格納しているエントリを先頭として、1サイクルで同時に完了可能なエントリの最大数より多い数のエントリを選択するものであり、
    前記エントリ内容格納部は、前記エントリ選択部により選択されたエントリの中から、前記命令格納装置のエントリの完了条件判定のサイクルで、完了条件の判別が確定して解放することがわかっているエントリを除いたものの中から、完了条件の判別をするエントリの対象を選択してその内容のコピーを格納するものであることを特徴とする、請求項1記載の命令実行装置。
  6. 前記エントリ選択部は、前記命令格納装置のエントリのうち前記完了条件判定のサイクルにおける実行順序の最も古いエントリの番号を示す出力ポインタの値に基づいて、前記最も古い順位の命令を格納しているエントリを決定し、決定されたエントリを先頭として、1サイクルで同時に完了可能なエントリの最大数より多い数のエントリを前記命令格納装置の全エントリから選択するものである、請求項5記載の命令実行装置。
  7. 前記エントリ内容格納部は、前記完了条件判定のサイクルで解放されるエントリの数に基づいて、前記完了条件の判別をするエントリの対象を選択する第2エントリ選択部を備えていることを特徴とする、請求項6記載の命令実行装置。
  8. 命令の実行完了により発生する完了信号と同時に送られてくる前記命令格納装置のエントリの番号を示す命令識別子と前記エントリ選択部により選択されたエントリの番号との一致の有無を検出し、一致したエントリ番号のエントリの中から、現サイクルで完了条件の判別が確定して完了することがわかっているエントリを除いたエントリの完了信号を示すフラグを出力する一致回路と、
    前記エントリ選択部の出力と前記一致回路の出力との論理和をとる論理的OR回路とを備え、
    前記論理的OR回路の出力を前記レジスタに格納するようにしたことを特徴とする、請求項5記載の命令実行装置。
  9. 前記一致回路により不一致が検出されたエントリの完了信号を示すフラグは前記命令格納装置の該エントリ番号に対応するエントリにセットするようにしたことを特徴とする、請求項8記載の命令実行装置。
JP2002197860A 2002-07-05 2002-07-05 命令実行装置 Expired - Fee Related JP3808013B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 微小金属球の製造方法および装置

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