JP3547562B2 - マイクロプロセッサ - Google Patents
マイクロプロセッサ Download PDFInfo
- Publication number
- JP3547562B2 JP3547562B2 JP16301996A JP16301996A JP3547562B2 JP 3547562 B2 JP3547562 B2 JP 3547562B2 JP 16301996 A JP16301996 A JP 16301996A JP 16301996 A JP16301996 A JP 16301996A JP 3547562 B2 JP3547562 B2 JP 3547562B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- sequence
- execution
- changed
- instruction sequence
- 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)
Description
【発明の属する技術分野】
この発明は、外部又は内部資源が取得できない状態で後続命令が実行できず、命令フェッチが停止している状況において、命令列の実行順序を変更して命令列の実行スループットを向上させるマイクロプロセッサに関する。
【0002】
【従来の技術】
スカラープロセッサにおいて、命令実行時にそのオペランドのデータがまだ決定されていない時、その値が決まるまでストールを起こしていた。パイプライン方式のプロセッサでは、その命令のオペランドフェッチが行なわれるまで命令フェッチ、デコードまでは後続の命令に対して行なっていた。また、さらに進んだプロセッサでは、そのデータの実行ステージに入るまで命令サイクルを続けていた。
【0003】
in−order発行、in−order完了又はin−order発行、out−of−order完了のスーパースカラープロセッサでは、同時にフェッチされた命令の先頭命令はデータが得られない場合に後続命令は全てオペランドフェッチでストールしていた。また、out−of−order完了では特に実行ステージでは、後続命令に真の依存関係及び出力依存関係がない場合にはオペランドステージ、実行ステージともに同時に行なわれていた。
【0004】
out−of−order発行、out−of−order完了のスーパースカラプロセッサでは、後続命令に真の依存関係及び出力依存関係、逆依存関係がない場合にはオペランドステージ、実行ステージともに先行して行なわれていた。また、スーパースカラプロセッサに代表される複数の機能ユニットを持つプロセッサの場合は、同じユニットを同時使用する命令実行が可能であり、そのユニット数を超えた場合にはストールを起こし、解消されるまで待っていた。
【0005】
メモリリードオペランド命令において、資源としてのキャッシュメモリがヒットせず主記憶に命令フェッチを行う間、そのデータを使用することができなかった。このため、その命令がストールを起こし、加えて演算結果を使用する後続命令を実行できなかった。また、ある演算処理のデータの結果による条件分岐命令がある場合に、分岐先が決まらず、後続命令はすべて依存関係があるとして分岐予測によりフェッチし実行しなかった。
【0006】
一方、out−of−order命令発行を行うスーパースカラプロセッサでは、資源割り当てがされずにストールが発生する場合に、後続の依存関係のない命令を先に実行し、資源が得られた時に実行を再開していた。この時に、調べる依存関係はフェッチした命令列の指定通りの依存であり、ひと塊の令命列が実行する演算の内容としての観点からは無駄なデータ相互関係を見ているケースがあった。
【0007】
【発明が解決しようとする課題】
以上説明したように、従来のスカラープロセッサにおいては、命令を実行する際に必要となる資源が取得できない場合にはストールを生じ、後続の命令が実行できず、処理効率の低下を招いていた。
【0008】
一方、従来のスーパースカラプロセッサにおいては、命令の実行に必要な資源が取得できない場合には、資源が取得できず実行できない命令と依存関係のない後続命令が先に実行されていた。しかし、命令間の依存関係を調べるにあたって、複数の命令によって実現される実質的な処理内容の観点からは命令間の依存関係が調べられていなかった。このため、上記観点から見た場合には実行可能な後続命令は、従来の手法によって依存関係があると見なされて実行されず、処理効率の低下を招いていた。
【0009】
そこで、この発明は、上記に鑑みてなされたものであり、その目的とするところは、資源未取得の命令の後続命令であっても実質的な処理内容の観点から見て先行して実行できる命令を先に実行して、処理時間の短縮を図ったマイクロプロセッサを提供することにある。
【0010】
【課題を解決するための手段】
上記目的を達成するために、請求項1記載の発明は、フェッチされた命令列をデコードし、デコードした命令が実行される際に必要となる資源が取得できない場合には、資源が取得できない命令に資源情報を付加して出力する命令デコーダと、前記デコーダによってデコードされた命令又は実行順序が変更された命令列の命令を受けて、命令の実行に必要な資源を取得して命令を実行し、資源が取得できない場合には資源情報を前記命令デコーダに出力し、資源の取得/未取得を示す資源変更情報を出力する実行装置と、前記デコーダによってデコーダされた命令列、及び該命令列の実行順序が変更された命令列を格納する命令バッファと、前記実行装置から資源情報が出力されてストールが発生した時点で、資源未取得の命令を含んで以降の所定の命令列の実行順序を予め設定された規則にしたがって変更し、変更前命令列の実行内容と等価の内容を実行する1又は複数の命令列を生成し、実行順序変更前後の命令列の実行時間を評価し、変更前の命令列よりも実行時間が短いと評価された変更後の命令列がある場合には、該命令列を選択して前記命令バッファに格納するとともに前記実行装置に与え、変更後の命令の実行毎に前記実行装置から出力される資源変更情報に基づいて前記命令バッファに格納された命令列の実行順序の再変更、再評価を行う命令最適化装置と、前記命令最適化装置によって生成された実行順序変更後の1又は複数の命令列を格納する修正命令バッファとを有することを特徴とする。
【0011】
請求項2記載の発明は、請求項1記載のマイクロプロセッサにおいて、分岐命令の実行時には、分岐予測/先行フェッチされた命令列に対して最適化の評価を行ない有利と判定した場合は、変更された命令列に対し分岐予測を行い、分岐命令を間に含む命令列が最適化された場合には、その変更命令列間の評価と同時に通常の分岐予測による候補の評価を合わせて吟味決定することを特徴とする。
【0012】
請求項3記載の発明は、請求項1記載のマイクロプロセッサにおいて、割り込みが発生した時は、前記命令バッファのみを退避し、割り込み処理中には現割り込み処理に対して最適化評価を行ない、元の命令に復帰した時はその時点で資源を解釈し、実行順序を変更して最適化した命令列を生成することを特徴とする。
【0013】
【発明の実施の形態】
図1は請求項1記載の発明の一実施形態に係るマイクロプロセッサの構成を示す図である。
【0014】
図1において、マイクロプロセッサは、命令をフェッチする命令フェッチャ1と、命令フェッチャ1によってフェッチされた命令をデコードする命令デコーダ2と、命令デコーダ2によってデコードされた命令を実行する実行装置3と、命令デコーダ2によってデコードされた命令を受けて、命令を解釈し命令の実行順序を変更する命令列解釈装置4を備えて構成される。
【0015】
命令デコーダ2は、デコードした命令が実行される際に必要となる資源が取得できない場合には、実行装置3から与えられる資源情報を資源が取得できない命令に付加し、資源情報を付加した命令とともに後続のデコードされた一連の命令列を命令列解釈装置4に与える。
【0016】
実行装置3は、命令デコーダ2でデコードされた命令又は命令列解釈装置4から与えられる命令を実行する際に、実行に必要な資源を取得し、取得できなかった場合には資源未取得を示す資源情報を命令デコーダ2に出力し、資源の取得/未取得を示す資源変更情報を命令列解釈装置4に出力する。
【0017】
命令列解釈装置4は、命令デコーダ2でデコードされた命令列又は実行順序が変更された命令列を実行に必要な実行時間の評価値とともに格納し、格納された命令列が実行装置4に与えられる命令バッファ5と、命令バッファ5に格納された命令列の実行順序を変更した1又は複数の命令列を生成する最適化装置6と、最適化装置6で実行順序が変更された1又は複数の命令列を格納する修正命令バッファ7を備えて構成される。なお、この実施形態では、修正命令バッファ7を1つ備え、最適化装置6で実行順序が変更された1つの命令列をこの修正命令バッファ7に格納するようにしている。
【0018】
最適化装置6は、命令バッファ5に格納された、資源未取得の命令を含んで以降の所定の命令列を受けて、この命令列の実行順序を予め設定された規則にしたがって変更し、変更前命令列の実行内容と等価の内容を実行する命令列を生成し、実行順序変更前後の命令列の実行時間を評価し、評価値とともに変更後の命令列を修正命令バッファ7に格納し、評価した変更前の命令列よりも実行時間が短いと評価された変更後の命令列がある場合には、この命令列を選択して命令バッファ5に格納するとともに実行装置3に与え、変更後の命令の実行毎に実行装置3から出力される資源変更情報に基づいて命令バッファ5に格納された変更後の命令列の実行順序を再変更、再評価する。
【0019】
このような構成において、命令フェッチャ1によりフェッチした命令列を取り込み、実行装置3内の資源取得に失敗した時は、その命令列を未実行として命令バッファ5で保持し、後続の命令をフェッチし続ける間に命令バッファ5中に保持される命令列を一定のパターンを抽出する最適化装置6が判定し、先に実行可能な命令パターンを抽出し、残りの命令列の実行速度の評価を行ない、有利と判定した場合には、修正した命令列の実行可能な部分を実行する。
【0020】
アウトオブオーダー命令発行で依存関係があると解釈し、実行待機している命令列の内命令列の演算の意味の解釈から依存関係の考慮不要部分を抜き出し、先に実行可能なものを処理する。資源が取得できた時はその情報を命令列解釈装置4に送り、命令バッファ5の評価値を変更し、再び命令順序の最適化を行う。
【0021】
次に、図2を参照して、図1に示すマイクロプロセッサにおいて、演算Y=a+b+c+dを実行する時の動作を説明する。
【0022】
演算Y=a+b+c+dでは、コンパイラは次のコードを生成するとする。
add A,a,A (命令1)
add A,b,A (命令2)
add A,c,A (命令3)
add A,d,A (命令4)
なお、Aは加算データを保持するレジスタを示す。
【0023】
この命令列実行に際し、実行装置3でデータaが得られない場合には、命令デコーダ2がデータaは未知として命令1を命令バッファ5に送り、通常後続の命令2、3、4が待機状態となる。アウトオブオーダー命令発行機構を持つプロセッサでも、後続命令2、3、4はレジスタAに対し真の依存関係があるとみなし、実行待機状態となる。
【0024】
しかし、元の演算Yは加算で結合法則として対称であるので、どの加算から開始してもよい。コンパイラがこの先に順序がわかる時はそのようにコード生成するが、リアルタイム及び極度に複雑な演算過程の結果決まる順序の場合には、メモリ内の命令列の順序を先に規定することは不可能である。
【0025】
このため、実行装置3から資源情報が出力されてストールが発生した時点で、最適化装置6がこの命令パターンを判定して順序を最適化する。資源判定が未だされていないものは利用可能として考える。例えばデータaのオペランド資源未取得がわかった時点で命令2、3、4までデコード完了していた場合は、
add A,b,A (命令2)
add A,c,A (命令3)
add A,d,A (命令4)
add A,a,A (命令1)
と最適化装置6が命令列の実行順序を修正して変更し、評価値を付けて修正命令バッファ7に書き込む。命令順序変更前の評価値8と変更後の評価値9との比較により変更後の命令の方が有効と判断し、変更後の命令を修正命令バッファ7の下の方から命令バッファ5にコピーし実行装置3へ転送する。
【0026】
また、データbも不確定とわかった場合は、資源変更情報を命令列解釈装置4に送り、命令バッファ5の再評価及び最適化を行ない、修正命令バッファ7を書き直す。以下、この繰り返しで命令列の評価/最適化をリアルタイムに行なう。
【0027】
次に、図3を参照して、演算Y=(a+b)(a−b)を実行する場合の動作例を説明する。
【0028】
演算Y=(a+b)(a−b)からコンパイラは次に示すコードを生成するものとする。
add a,b,c (命令1)
sub a,b,d (命令2)
mul c,d,c (命令3)
【0029】
この命令列を命令バッファ5に取り込んだ時、データaが未決定であると、最適化装置6はこれらをグルーピングし、次の命令列に変換する(Y=a2 −b2 )。
mul b,b,d(命令4)
mul a,a,c(命令5)
sub d,c,c(命令6)
【0030】
これらを評価しつつ命令バッファ5に転送し、命令4はデータaとは無関係になり実行できる。実行後は命令5、6が残り、データaが確定次第実行できる。最適化前は加減算2、乗算1であったのが、最適化後は乗算1、減算1だけが残りデータaが確定後速やかに演算終了することができる。従って、命令4を空いた演算ユニットで実行でき、その間データaが未確定を保てば変更後の命令列の方が有効と評価でき、選択される。
【0031】
このように、上記実施形態では、命令実行の際、資源取得の制約からストールが発生することが多いプログラムをプロセッサで実行する場合は、命令列の最適化を実行する時間的余裕が内在し、それを利用することにより演算実行速度を向上することができる。
【0032】
なお、分岐命令の実行時には、分岐予測/先行フェッチされた命令列に対して最適化の評価を行ない有利と判定した場合は、修正された命令列に対し分岐予測を行い、分岐命令を間に含む命令列が最適化された場合には、その修正命令列間の評価と同時に通常の分岐予測による候補の評価を合わせて吟味決定するようにしている。
【0033】
また、割り込みが発生した時は、命令バッファ5のみを退避し、割り込み処理中には現割り込み処理に対して最適化評価を行なう。元の命令に復帰した時はその時点で資源を解釈し、実行順序を変更して最適化した命令列を生成するようにしている。
【0034】
【発明の効果】
以上説明したように、この発明によれば、資源未取得の命令が待機している間に資源未取得の命令と後続命令との異存関係を調べ、資源未取得の命令の後続命令であっても実質的な処理内容の観点から見て先行して実行できる命令を先に実行するようにしたので、資源獲得時に実行待ち命令が迅速に実行でき、命令の処理時間を短縮することができる。
【図面の簡単な説明】
【図1】請求項1記載の発明の一実施形態に係るマイクロプロセッサの構成を示す図である。
【図2】図1に示すマイクロプロセッサの一動作例を示す図である。
【図3】図1に示すマイクロプロセッサの他の動作例を示す図である。
【符号の説明】
1 命令フェッチャ
2 命令デコーダ
3 実行装置
4 命令列解釈装置
5 命令バッファ
6 最適化装置
7 修正命令バッファ
8,9 評価値
Claims (3)
- フェッチされた命令列をデコードし、デコードした命令が実行される際に必要となる資源が取得できない場合には、資源が取得できない命令に資源情報を付加して出力する命令デコーダと、
前記デコーダによってデコードされた命令又は実行順序が変更された命令列の命令を受けて、命令の実行に必要な資源を取得して命令を実行し、資源が取得できない場合には資源情報を前記命令デコーダに出力し、資源の取得/未取得を示す資源変更情報を出力する実行装置と、
前記デコーダによってデコーダされた命令列、及び該命令列の実行順序が変更された命令列を格納する命令バッファと、
前記実行装置から資源情報が出力されてストールが発生した時点で、資源未取得の命令を含んで以降の所定の命令列の実行順序を予め設定された規則にしたがって変更し、変更前命令列の実行内容と等価の内容を実行する1又は複数の命令列を生成し、実行順序変更前後の命令列の実行時間を評価し、変更前の命令列よりも実行時間が短いと評価された変更後の命令列がある場合には、該命令列を選択して前記命令バッファに格納するとともに前記実行装置に与え、変更後の命令の実行毎に前記実行装置から出力される資源変更情報に基づいて前記命令バッファに格納された命令列の実行順序の再変更、再評価を行う命令最適化装置と、
前記命令最適化装置によって生成された実行順序変更後の1又は複数の命令列を格納する修正命令バッファと
を有することを特徴とするマイクロプロセッサ。 - 分岐命令の実行時には、分岐予測/先行フェッチされた命令列に対して最適化の評価を行ない有利と判定した場合は、変更された命令列に対し分岐予測を行い、分岐命令を間に含む命令列が最適化された場合には、その変更命令列間の評価と同時に通常の分岐予測による候補の評価を合わせて吟味決定する
ことを特徴とする請求項1記載のマイクロプロセッサ。 - 割り込みが発生した時は、前記命令バッファのみを退避し、割り込み処理中には現割り込み処理に対して最適化評価を行ない、元の命令に復帰した時はその時点で資源を解釈し、実行順序を変更して最適化した命令列を生成する
ことを特徴とする請求項1記載のマイクロプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP16301996A JP3547562B2 (ja) | 1996-06-24 | 1996-06-24 | マイクロプロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP16301996A JP3547562B2 (ja) | 1996-06-24 | 1996-06-24 | マイクロプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1011288A JPH1011288A (ja) | 1998-01-16 |
JP3547562B2 true JP3547562B2 (ja) | 2004-07-28 |
Family
ID=15765655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP16301996A Expired - Fee Related JP3547562B2 (ja) | 1996-06-24 | 1996-06-24 | マイクロプロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3547562B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000284970A (ja) * | 1999-03-29 | 2000-10-13 | Matsushita Electric Ind Co Ltd | プログラム変換装置及びプロセッサ |
JP4109902B2 (ja) | 2002-05-27 | 2008-07-02 | キヤノン株式会社 | 表示装置 |
-
1996
- 1996-06-24 JP JP16301996A patent/JP3547562B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH1011288A (ja) | 1998-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3093684B2 (ja) | 命令ループを投機的に実行するプロセッサ及び方法 | |
JP5889986B2 (ja) | 実行された命令の結果を選択的にコミットするためのシステムおよび方法 | |
US6721874B1 (en) | Method and system for dynamically shared completion table supporting multiple threads in a processing system | |
US6260138B1 (en) | Method and apparatus for branch instruction processing in a processor | |
JP3397081B2 (ja) | 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を推測的に実行するためのプロセッサ、データ処理システム及び方法 | |
JP3565499B2 (ja) | コンピュータ処理システムにおいて実行述語を実現する方法及び装置 | |
US5421020A (en) | Counter register implementation for speculative execution of branch on count instructions | |
US8074060B2 (en) | Out-of-order execution microprocessor that selectively initiates instruction retirement early | |
JP3720370B2 (ja) | 自己修飾コード処理装置 | |
US7711934B2 (en) | Processor core and method for managing branch misprediction in an out-of-order processor pipeline | |
US5799180A (en) | Microprocessor circuits, systems, and methods passing intermediate instructions between a short forward conditional branch instruction and target instruction through pipeline, then suppressing results if branch taken | |
JPH09185506A (ja) | プロセッサ内で命令を実行する方法およびシステム | |
JP2006313422A (ja) | 演算処理装置及びデータ転送処理の実行方法 | |
WO2020060639A1 (en) | Commit logic and precise exceptions in explicit dataflow graph execution architectures | |
US7849292B1 (en) | Flag optimization of a trace | |
EP0742517B1 (en) | A program translating apparatus and a processor which achieve high-speed execution of subroutine branch instructions | |
US6871343B1 (en) | Central processing apparatus and a compile method | |
US7634641B2 (en) | Method and apparatus for using multiple threads to spectulatively execute instructions | |
US20100306513A1 (en) | Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline | |
JP3547562B2 (ja) | マイクロプロセッサ | |
US7937564B1 (en) | Emit vector optimization of a trace | |
KR20070108936A (ko) | 조건부 명령어가 실행되지 않을 경우 소스 오퍼랜드를대기하는 것을 중지하는 방법 | |
JP7409208B2 (ja) | 演算処理装置 | |
JPH1196005A (ja) | 並列処理装置 | |
WO2007084202A2 (en) | Processor core and method for managing branch misprediction in an out-of-order processor pipeline |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20031222 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040113 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040315 |
|
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: 20040406 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040414 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080423 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090423 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100423 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |