JP3769249B2 - 命令処理装置および命令処理方法 - Google Patents
命令処理装置および命令処理方法 Download PDFInfo
- Publication number
- JP3769249B2 JP3769249B2 JP2002188262A JP2002188262A JP3769249B2 JP 3769249 B2 JP3769249 B2 JP 3769249B2 JP 2002188262 A JP2002188262 A JP 2002188262A JP 2002188262 A JP2002188262 A JP 2002188262A JP 3769249 B2 JP3769249 B2 JP 3769249B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- processing
- decoders
- arithmetic unit
- 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
- 238000003672 processing method Methods 0.000 title claims description 16
- 238000000034 method Methods 0.000 claims description 35
- 230000008569 process Effects 0.000 claims description 27
- 238000001514 detection method Methods 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000010365 information processing Effects 0.000 description 5
- 238000009825 accumulation Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- 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/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- 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
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
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)
- Executing Machine-Instructions (AREA)
Description
【発明の属する技術分野】
本発明は、例えばスーパースカラ方式やアウトオブオーダ方式等の命令実行制御方式を採用した情報処理装置において、命令を命令実行部へ供給して処理するための命令処理装置および命令処理方法に関する。
【0002】
【従来の技術】
図6は一般的な情報処理装置における命令処理部の構成を示すブロック図で、この図6に示す命令処理部は、命令キャッシュメモリ1,命令バッファ2,命令制御部3,デコーダ4,リザベーションステーション5,演算器6,結果レジスタ7およびオペランドレジスタ8をそなえて構成されている。
【0003】
命令キャッシュメモリ1は、主記憶上の命令領域の一部のコピーを格納している装置である。
命令バッファ〔図中ではI(Instruction)−BUFFERと表記〕2は、命令アドレス生成部(図1の符号20参照)により命令キャッシュメモリ1からフェッチされた命令語群(例えば最大で48個の命令)を一時的に蓄え、命令制御部3からの指示に応じて後段のデコーダ4へ命令を発行するものである。
【0004】
命令制御部3は、命令バッファ2からデコーダ4への命令発行動作を制御するもので、命令バッファ2に対し、この命令バッファ2に蓄積されている命令をデコーダ4へ発行するための指示を行なうものである。図6に示す装置では、デコーダ4が4つそなえられているので、命令制御部3は、最大で同時に4つの命令をデコーダ4へ発行するように、命令バッファ2への指示を行なう。また、命令制御部3は、スーパースカラ方式のメリットを最大限に発揮させるべく、通常、命令バッファ2に命令が蓄積されている時には、なるべく多くの命令、つまり同時発行可能な最大数の命令(図6に示す装置では4つの命令)を発行するように指示を行なっている。
【0005】
デコーダ4としてはD0,D1,D2,D3の4つがそなえられている。これらのデコーダD0,D1,D2,D3は、命令バッファ2から同時に発行された4つの命令をそれぞれ受信して並列的にデコードするもので、各デコーダ4は、受信した命令から、実際に情報処理装置(命令処理部)が命令の内容を認識することの可能な形式であるオペコードとその命令の対象であるオペランドとを抽出するものである。
【0006】
リザベーションステーション5としてはRSE(Reservation Station for Execution)AとRSEBとの2つがそなえられている。これらのリザベーションステーションRSEAおよびRSEBは、それぞれ、デコーダ4によってデコードされた命令を、最大で8個、蓄積するものである。デコードされた各命令は、演算器6での演算処理対象となるまでリザベーションステーションRSEAまたはRSEBに蓄積され、演算器6が前の命令に基づく演算処理を終了すると、直ちに演算器6へ送られるようになっている。
【0007】
演算器6としてはEX(Execution unit)AとEXBとの2つがそなえらえれている。これらの演算器EXAおよびEXBは、それぞれ、リザベーションステーションRSEAおよびRSEBに蓄積された命令に基づく演算処理(命令処理)を順次実行し、その演算処理の結果を後段の結果レジスタ7に送るものである。
結果レジスタ〔図中ではRR(Result Register)と表記〕7は、演算器6(EXAおよびEXB)による演算結果を書き込まれるもので、各演算器6の後段に1つずつそなえられている。
【0008】
演算器6間のクロスバイパス使用が発生せず、書き込まれた演算結果を同じ演算器6に再投入する場合(即ち、演算器EXAでの演算結果を演算器EXAに再投入する場合または演算器EXBでの演算結果を演算器EXBに再投入する場合;図6のルート10参照)は、図6に示すルート10のごとく、演算器6による演算結果は、結果レジスタ7に書き込まれた後、直ぐにまた同じ演算器6に投入されて演算処理のために利用されるようになっている。
【0009】
演算器6間のクロスバイパス使用が発生し、書き込まれた演算結果を別の演算器6に投入する場合(即ち、演算器EXAでの演算結果を演算器EXBに投入する場合または演算器EXBでの演算結果を演算器EXAに投入する場合)は、図6に示すルート9のごとく、一方の演算器6による演算結果は、結果レジスタ7に書き込まれた後、他方の演算器6に投入する前にオペランドレジスタ〔図中ではOPR(OPerand Register)と表記〕8に一旦書き込まれてから、他方の演算器6に投入されて演算処理のために利用されるようになっている。
【0010】
従って、クロスバイパス使用が発生したとき、図6に示すルート9のごとく、一方の演算器6による演算結果は、結果レジスタ7に書き込まれた後、オペランドレジスタ8に一旦書き込まれてから、他方の演算器6に送られて演算処理のために利用されるようになっている。
なお、クロスバイパスとは、ある演算器6で得られた演算結果を別の演算器6で用いて演算処理を行なう必要が生じた場合に、前者の演算器6から後者の演算器6へ演算結果を送るための経路(正に図6に示すルート9)のことである。
【0011】
上述のごとく構成された命令処理部においては、基本的に、デコーダD0およびD2でデコードされた命令はリザベーションステーションRSEAに蓄積されてから演算器EXAに投入される一方、デコーダD1およびD3でデコードされた命令はリザベーションステーションRSEBに蓄積されてから演算器EXBに投入される。また、分岐先の命令は、必ず、デコーダD0でデコードされる。そして、命令バッファ2に命令が蓄積されている限り、命令制御部3は、命令バッファ2から4つのデコーダ4(D0〜D1)へ4つの命令を同時に発行させるように、命令バッファ2の発行動作を制御する。
【0012】
【発明が解決しようとする課題】
ところで、上述した従来の命令処理手法では、スーパースカラ方式のメリットを最大限に発揮させるために、発行できる限りの命令を演算器6に供給した方が良いと考えられており、命令発行数を敢えて絞ることは行なわれていない。従って、図6に示す装置では、前述した通り、命令バッファ2に命令が蓄積されている限り、常に、同時発行可能な最大数の命令(図6に示す装置では4つの命令)を命令バッファ2からデコーダ4へ発行している。
【0013】
また、図6に示す装置では、演算器6に投入される前の命令を演算器6ごとに蓄えるスプリットキュー方式と呼ばれる方式が採用されており、このような方式では、一方の演算器6で演算した結果を他方の演算器6での演算に用いる場合(演算器6間のクロスバイパス使用が発生した場合)、結果レジスタ7およびオペランドレジスタ8を経由してその演算結果を他方の演算器6へ投入しなければならない。このため、演算結果を同じ演算器6での演算に用いる場合(演算器6間のクロスバイパス使用が発生していない場合)よりも、命令処理に要する時間は、オペランドレジスタ8を経由するデータ移動の時間〔1制御周期(以下、1τという)〕だけ余分にかかることになる。
【0014】
このようなクロスバイパス使用は、同時発行可能な最大数の命令を発行して2つの演算器6を同時並列的に動作させる場合に発生しやすくなる。特に、十数個程度の命令からなるショートループ処理を多数回繰り返し実行する際に各ショートループ処理においてクロスバイパス使用が発生すると、命令を速やかに演算器6に投入することができず、上述のようなデータ移動に伴う時間遅れが累積されて、命令処理に要する時間が大幅に増大することになる。
【0015】
ここで、演算器6間のクロスバイパス使用が発生するショートループ処理の具体例について、図5および図7を参照しながら説明する。
下記命令(1)〜(12)からなる命令列は、クロスバイパス使用が発生するショートループ処理の一例である。
なお、図5の左側には、下記ショートループ処理を図6に示す装置で実行した場合において、各命令(1)〜(12)をデコードするデコーダ4(D0〜D3)と、各命令(1)〜(12 )に基づく演算処理を実行する演算器6(EXA,EXB)とが示されている。この図5において“―”を記入されている命令(つまり、ロード命令や分岐命令)は、演算器6を使用しないで処理される。
【0016】
また、図7には、図6に示す装置において下記ショートループ処理を3回繰り返し実行した際の、処理内容と時間(制御時間τ)との関係が示されている。この図7において、左側の括弧付き数字はそれぞれ下記命令(1)〜(12)に対応し、左欄には、その括弧付き数字に対応する命令が記入されている。また、左欄における( )内のEXA/EXBは、各命令がどちらの演算器6により処理されたかを表している。さらに、上側の数字1〜40は、時間の経過(制御時間τ)を表している。
【0017】
図7において、p,b,a,t,m,b,r,xは処理内容(ステージ)を示すもので、pは“priority”、bは“buffer”、aは“address”、tは“TLB/TAG”、mは“match”、rは“result”、xは“execute”の各ステージを表し、各命令は、それぞれのステージを経て処理される。
【0018】
(1) lduh [%g2+%l4], %g2
(2) subcc %g2, %l0, %g0
(3) bleu,pn %icc, (pc+0x14)
(4) or %g0, %g2, %g5
(5) subcc %o3, %0x1, %o3
(6) bne,pt %icc, (pc+0xfffffe8c)
(7) add %g5, %l2, %o0
(8) ldub [%o0+%o2], %g2
(9) subcc %g2, %o7, %g0
(10) bne,pt %icc, (pc+0x154)
(11) and %g5, %l1, %g2
(12) sll %g2, 0x1, %g2
【0019】
さて、(1)のlduh命令(ロード命令)は、デコーダD1でデコードされ、アドレス%g2に値が書き込まれるのを待ち、その値を用いてアドレス%g2+%l4からデータをロードし、アドレス%g2に書き込む。次の行(2)のsubcc命令(減算命令)は、デコーダD2でデコードされ、アドレス%g2に値が書き込まれるのを待ち、その値を用いて演算器EXAで処理される。
【0020】
次に、(3)のbleu命令(分岐命令)は、デコーダD3でデコードされ、このbleu命令のディレイスロット命令である、(4)のor命令(論理和命令)は、デコーダD0でデコードされ、演算器EXAで、(5)のsubcc命令(減算命令)の後に実行される。(3)のbleu命令は、pnが指定されて分岐しないので、次に、or命令の次の行(5)のsubcc命令が、デコーダD1でデコードされ、演算器EXBで実行される。
【0021】
続いて、(6)のbne命令(分岐命令)は、デコーダD2でデコードされ、このbne命令のディレイスロット命令である、(7)のadd命令(加算命令)が、デコーダD3でデコードされ、演算器EXBで実行される。このとき、(7)のadd命令が(4)のor命令の結果を用いるため、図7に示すように、制御時間8τで演算器EXAから演算器EXBへのクロスバイパス使用が発生する。このクロスバイパス使用は、2回目のループ中の制御時間20τや、3回目のループ中の制御時間32τでも発生している。
【0022】
ついで、(7)のadd命令による演算結果を利用して、(6)のbne命令の分岐先である、(8)のldub命令(ロード命令)が実行される。このl dub命令は、bne命令の分岐先の命令であるので、デコーダD0でデコードされる。このldub命令によってアドレス%o0+%o2からロードされたデータは、rステージでアドレス%g2に書き込まれる。ldub命令の次の行(9)のsubcc命令(減算命令)は、デコーダD1でデコードされ、アドレス%g2にrステージで値が書き込まれるのを待ち、その値を用いて演算器EXBで処理される。
【0023】
(9)のsubcc命令が値を待っている間に、(10)のbne命令(分岐命令)のディレイスロット命令である(11)のand命令と、その後の(12)のsll命令とが先に実行される。ここで、(10)のbne命令はデコーダD2でデコードされる。
(11)のand命令(論理積命令)が、デコーダD3でデコードされ演算器EXBで実行された後、そのand命令による演算結果を利用して、bne命令の分岐先であるsll命令が、デコーダD0でデコードされ演算器EXAで実行される。このとき、(11)のand命令が演算器EXBで実行されるとともに(12)のsll命令が演算器EXAで実行されるため、図7に示すように、制御時間11τで演算器EXAから演算器EXBへのクロスバイパス使用が発生する。このクロスバイパス使用は、2回目のループ中の制御時間23τや、3回目のループ中の制御時間35τでも発生している。
【0024】
そして、(12)のsll命令による演算結果を用いて、再び、(1)のlduh命令によってアドレス%g2+%l4からデータがロードされ、アドレス%g2に書き込まれ、上述のような処理が繰り返される。
図6に示す装置を用いた場合、図7に示すように、命令(1)〜(12)からなるショートループを1周処理するのに要する時間は12τであり、上述したように、1周する間にクロスバイパスの使用が2回発生しており、このクロスバイパスの使用により、上述のごとく、命令を速やかに演算器6に投入することができず、命令処理に要する時間が大幅に増大することになる。
【0025】
そこで、2つの演算器6のうちの一方のみを使用して演算を行なうようにすれば、上述のようなクロスバイパス使用は発生しなくなるが、一方の演算器6のみを使用すると、並列処理を行なえなくなるため、クロスバイパス使用を発生させながら命令処理を行なっている場合よりも処理時間が増大してしまうことになる。従って、並列処理による効率的な処理を実現しながら、クロスバイパス使用の発生を抑制してさらなる処理時間の短縮をも実現することが望まれている。
【0026】
本発明は、このような課題に鑑み創案されたもので、並列処理による効率的な処理を実現しながら、クロスバイパス使用の発生を抑制できるようにして、命令処理に要する時間の短縮をはかった、命令処理装置および命令処理方法を提供することを目的とする。
【0027】
【課題を解決するための手段】
上記目的を達成するために、本発明の命令処理装置(請求項1)は、命令を蓄積する命令バッファと、該命令バッファから同時に発行される複数の命令を並列的にデコードしうる複数のデコーダと、該複数のデコーダによってデコードされた命令を処理する複数の演算器と、該複数の演算器の全てを用いて前記命令を処理しながら前記命令を処理する頻度を該複数の演算器のうちの一の演算器に偏らせるように、該命令バッファから該複数のデコーダへ発行される命令の数を制限しうる命令発行数制限手段とをそなえて構成されたことを特徴としている。
【0028】
このとき、各デコーダとそのデコーダによってデコードされた命令を処理すべき演算器との対応関係を、一の演算器に2以上のデコーダを対応付けるようにして予め設定し、該命令発行数制限手段が、命令処理頻度を偏らせるべき演算器以外の各演算器に対応付けられた前記2以上のデコーダのうちの一部のデコーダへ該命令バッファから命令を発行するのを禁止することにより、該命令バッファから該複数のデコーダへ発行される命令の数を制限するように構成してもよい(請求項2)。
【0029】
また、該複数の演算器のうちの一の演算器での処理結果を他の演算器に投入するためのクロスバイパスを使用する頻度が高くなる状況を検出する検出手段をさらにそなえ、該検出手段により前記クロスバイパスの使用頻度が高くなる状況を検出した場合に、該命令発行数制限手段を起動するように構成してもよい(請求項3)。
【0030】
一方、本発明の命令処理方法(請求項4)は、命令を命令バッファに蓄積し、該命令バッファから複数の命令を同時に発行し、該命令バッファから発行された該複数の命令を複数のデコーダで並列的にデコードし、該複数のデコーダによってデコードされた命令を複数の演算器で処理し、該複数の演算器の全てを用いて前記命令を処理しながら前記命令を処理する頻度を該複数の演算器のうちの一の演算器に偏らせるように、該命令バッファから該複数のデコーダへ発行される命令の数を制限することを特徴としている。
【0031】
このとき、各デコーダとそのデコーダによってデコードされた命令を処理すべき演算器との対応関係を、一の演算器に2以上のデコーダを対応付けるようにして予め設定し、命令処理頻度を偏らせるべき演算器以外の各演算器に対応付けられた前記2以上のデコーダのうちの一部のデコーダへ該命令バッファから命令を発行するのを禁止することにより、該命令バッファから該複数のデコーダへ発行される命令の数を制限してもよい(請求項5)。
【0032】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
〔1〕本発明の一実施形態の説明
図1は本発明の一実施形態としての命令処理装置の構成を示すブロック図、図2は本実施形態における要部(命令発行数制限装置および命令制御部)の構成を示す図である。
【0033】
図1に示すように、本実施形態の命令処理装置は、情報処理装置内にそなえられ、図6に示した命令処理部におけるものと同様の命令キャッシュメモリ1,命令バッファ2,デコーダ4,リザベーションステーション5,演算器6,結果レジスタ7およびオペランドレジスタ8をそなえるほか、命令アドレス生成部20,命令制御部21,命令発行数制限装置22,クロスバイパス検出器23,分岐履歴蓄積部24,RSE_USEDカウンタ25およびタイマ26をそなえて構成されている。なお、図1中、既述の符号と同一の符号は、同一の部分もしくはほぼ同一の部分を示しているので、その詳細な説明は省略する。
【0034】
命令アドレス生成部20は、命令アドレスを生成して命令キャッシュメモリ1から命令をフェッチするものであり、命令バッファ(I−BUFFER)2は、命令アドレス生成部20により命令キャッシュメモリ1からフェッチされた命令語群(例えば最大で48個の命令)を一時的に蓄え、後述する命令制御部21からの指示に応じて後段のデコーダ4へ命令を発行するものである。
【0035】
命令制御部21は、図6に示した命令制御部3と同様、命令バッファ2からデコーダ4への命令発行動作を制御するもので、命令バッファ2に対し、この命令バッファ2に蓄積されている命令をデコーダ4へ発行するための指示を行なうものである。本実施形態においても、デコーダ4(D0〜D3)が4つそなえられており、命令制御部21は、通常、同時発行可能な最大数の命令(本実施形態では4つの命令)を発行するように命令バッファ2に対し指示を行なっている。
【0036】
また、本実施形態の命令制御部21は、後述する命令発行数制限装置22からの指示(信号SET_3_DECODE_MODE)に従って、命令バッファ2からデコーダD3への命令発行を禁止する機能も有している。このような機能を実現するため、命令制御部21は、図2に示すように、ANDゲート21aを有している。このANDゲート21aは、命令発行数制限装置22からの信号SET_3_DECODE_MODEと、命令バッファ2からデコーダD3への命令発行を有効化するための信号E3_VALIDとの論理積を算出し、その論理積(信号E3_VALID_TO_D3)を命令バッファ2への指示として出力するものである。
【0037】
つまり、命令発行数制限装置22からの信号SET_3_DECODE_MODEは通常“1”に立ち上がっており、命令制御部21が通常発行する、命令バッファ2からデコーダD3への命令発行を有効化するための信号E3_VALIDはANDゲート21aを通過し、このANDゲート21aの出力E3_VALID_TO_D3は“1”となり、命令バッファ2からデコーダD3への命令発行は通常通り行なわれる。これに対し、命令発行数制限装置22からの信号SET_3_DECODE_MODEが、後述するごとく“0”になると、信号E3_VALIDはANDゲート21aを通過できず、このANDゲート21aの出力E3_VALID_TO_D3は“0”となり、命令バッファ2からデコーダD3への命令発行は禁止されることになる。
【0038】
命令発行数制限装置(命令発行数制限手段)22は、2つの演算器6(EXA,EXB)の両方を用いて命令を処理しながら命令処理頻度を2つの演算器6のうちの一方の演算器6(本実施形態ではEXA)に偏らせるように、命令バッファ2からデコーダ4(D0〜D3)へ発行される命令の数を制限しうるものである。
【0039】
ここで、本実施形態においても、図6に示した装置と同様、デコーダD0およびD2でデコードされた命令はリザベーションステーションRSEAに蓄積されてから演算器EXAに投入される一方、デコーダD1およびD3でデコードされた命令はリザベーションステーションRSEBに蓄積されてから演算器EXBに投入される。つまり、各デコーダ4とそのデコーダ4によってデコードされた命令を処理すべき演算器6との対応関係が、1つの演算器6に2つのデコーダ4を対応付けるようにして予め設定されている(EXAとD0,D2とが対応付けられ、EXBとD1,D3とが対応付けらている)。なお、本実施形態においても、分岐先の命令は、必ずデコーダD0でデコードされる。
【0040】
そして、本実施形態では、後述するごとくクロスバイパスを使用する頻度が高くなる状況が検出されると、命令発行数制限装置22が、起動され、命令制御部21へ出力される信号SET_3_DECODE_MODEを“1”から“0”に切り換え、命令処理頻度を偏らせるべき演算器EXA以外の演算器EXBに対応付けられた2つのデコーダD1,D3の一方(ここでは、デコーダD3)へ命令バッファ2から命令を発行するのを禁止するようになっている。これにより、命令バッファ2から4つのデコーダ4へ発行される命令の数が制限される。
【0041】
なお、信号SET_3_DECODE_MODEの切換は、図2を参照しながら後述するごとく、命令発行数制限装置22にそなえられた反転素子22a,22cおよびANDゲート22bにより行なわれる。また、クロスバイパスを使用する頻度が高くなる状況が検出されていない通常の状態では、命令発行数制限装置22から命令制御部21へ出力される信号SET_3_DECODE_MODEは“1”に維持される。このような状態では、上述のような命令発行数の制限は行なわれず、図6に示した装置と同様、命令バッファ2に命令が蓄積されている限り、命令制御部22は、命令バッファ2から4つのデコーダ4(D0〜D1)へ4つの命令を同時に発行させるように、命令バッファ2の発行動作を制御する。
【0042】
上述したように、本実施形態では、クロスバイパスを使用する頻度が高くなる状況が検出されると、命令発行数制限装置22が起動されるが、このような状況を検出するための手段として、クロスバイパス検出器23および分岐履歴蓄積部24がそなえられている。
【0043】
クロスバイパス検出器(クロスバイパス検出手段)23は、ルート(クロスバイパス)9における信号の通過を監視し信号の通過を確認した場合、クロスバイパスが使用されたものと判断し、信号EX_CROSS_BYPASSを“0”から“1”に立ち上げることにより、クロスバイパスの使用が検出された旨を命令発行数制限装置22に通知するものである。
【0044】
分岐履歴蓄積部〔図中ではBRHIS(BRanch HIStory)と表記〕24は、所定の命令列を繰り返し処理するループの存在を検出するループ検出手段として機能するものである。このBRHIS24は、分岐命令の履歴を蓄積・保存するもので、蓄積された分岐命令の履歴に基づいて、ショートループの存在を検出するようになっている。ここでいうショートループとは、命令キャッシュメモリ1に全て納まるような個数の命令からなる命令群であって、最後の命令を処理したらまた最初の命令に戻って処理を行なうというように何度も繰り返し処理を行なうことになる命令群のことである。
【0045】
特に、本実施形態のBRHIS24は、分岐命令の数を計数するカウンタ(図示省略)を有しており、例えば16回同じアドレスで分岐することを確認したらショートループが存在するものと判断し、信号SHORT_LOOPを“0”から“1”に立ち上げることにより、ショートループの存在が検出された旨を命令発行数制限装置22に通知するものである。
【0046】
RSE_USEDカウンタ(カウンタ)25は、各リザベーションステーション5(RSEA,RSEB)に蓄積されている命令の数を計数するもので、各リザベーションステーション5に蓄積されている命令の数が0のときに“1”となり、その命令数が1以上になると“0”となる信号USE_RSE_0が、カウンタ25から命令発行数制限装置22に通知されるようになっている。
【0047】
リザベーションステーション5を使用中の命令数、つまりリザベーションステーション5に蓄えられている命令数が少ないときは、演算器6に投入される命令が不足して演算器6が演算処理を行なわない時間が発生する可能性がある。これを防ぐために、この時は命令発行数は絞らずにリザベーションステーション5への命令供給数を増やすことが必要になる。
【0048】
そこで、本実施形態では、上述のごとくリザベーションステーション5における命令数が所定数以上(本実施形態では1以上)である場合に命令発行数制限装置22を起動する一方、リザベーションステーション5における命令数が0の時には、命令発行数制限装置22を起動せず命令発行数の制限を行なわないようにしてデコーダ4からリザベーションステーション5への命令供給数を増やす。
【0049】
そして、命令発行数制限装置22では、図2に示すように、反転素子22a,22cおよびANDゲート22bがそなえられている。反転素子22aは、カウンタ25からの信号USE_RSE_0を反転して出力するものであり、ANDゲート22bは、BRHIS24からの信号SHORT_LOOPと反転素子22aからの信号とクロスバイパス検出器23からの信号EX_CROSS_BYPASSとの論理積を出力するものであり、反転素子22cは、ANDゲート22bからの信号を反転し信号SET_3_DECODE_MODEとして命令制御部21のANDゲート21aへ出力するものである。
【0050】
従って、本実施形態では、ショートループの存在とクロスバイパス使用の発生とが同時に検出された場合(つまりクロスバイパスを使用する頻度が高くなる状況)であって、且つ、リザベーションステーション5に蓄積された命令が0でないことが検出されている場合に、BRHIS24からの信号SHORT_LOOPおよびクロスバイパス検出器23からの信号EX_CROSS_BYPASSがいずれも “1”になり、カウンタ25からの信号USE_RSE_0が“0”になる。これに応じて、命令発行数制限装置22が起動され、命令制御部21へ出力される信号SET_3_DECODE_MODEが“1”から“0”に切り換えられ、命令バッファ2からデコーダD3への命令発行が禁止される。
【0051】
このようにして、本実施形態では、図1に示すような命令処理装置を情報処理装置内に組み込み、処理中のプログラム(命令列)中にショートループの存在を確認し、且つ、クロスバイパス使用の発生を検出し、且つ、リザベーションステーション5を使用中の命令数が0でないことを検出した場合、最大同時命令発行数が“4”から“3”に制限される。
【0052】
さらに、本実施形態では、命令発行数制限装置22の起動後に所定条件を満たした時にこの命令発行数制限装置22による制限動作が解除されるようになっている。このような解除を行なう解除機能(解除手段)は、命令発行数制限装置22にそなえられており、タイマ26を用いて制限動作の解除タイミングが決定されている。
【0053】
ここで、タイマ26は、命令発行数制限装置22が命令発行数を制限する信号を出力した後(つまり、命令発行数制限装置22が起動され、信号SET_3_DECODE_MODEを“1”から“0”に切り換えられた後)の経過時間を計時するものである。
【0054】
そして、タイマ26により計時された経過時間が所定時間に達した時、上記解除機能が、命令発行数制限装置22から命令制御部21へ、命令発行数を絞る機能を無効にする信号を送る。つまり、命令発行数制限装置22から命令制御部21へ出力される信号SET_3_DECODE_MODEを“0”から“1”に切り換え、命令発行数制限装置22による制限動作を解除する。
【0055】
次に、上述のごとく構成された本実施形態の命令処理装置(命令発行数制限装置22)の動作を、図3に示すフローチャート(ステップS1〜S8)に従って簡単に説明する。
本実施形態の命令処理装置が命令処理を開始すると、常時、クロスバイパス検出器23によりクロスバイパス使用状況が監視され(ステップS1)、BRHIS24によりショートループの存在が監視され(ステップS2)、カウンタ25によりリザベーションステーション5に蓄積されている命令の数が計数される(ステップS3)。
【0056】
そして、ショートループの存在とクロスバイパス使用の発生とが同時に検出され、且つ、リザベーションステーション5に蓄積された命令が0でないことが検出されると(ステップS4のYESルート)、上述した通り、命令発行数制限装置22が起動され、命令バッファ2からデコーダD3への命令発行が禁止され、最大同時命令発行数が“4”から“3”に制限される(ステップS5)。これにより、2つの演算器6の両方を用いて命令を処理しながら命令処理頻度を一方の演算器6(EXA)に偏らせることができる。
【0057】
命令発行数の制限動作が開始されると同時に、タイマ26の動作も起動され、制限動作開始後の経過時間の計測が行なわれる(ステップS6)。
そして、タイマ26により計時された経過時間が所定時間に達した時(もしくはショートループ処理の終了が検出された時;ステップS7のYESルート)、命令発行数制限装置22における解除機能により、命令発行数の制限動作が解除され(ステップS8)、ステップS1の処理へ戻る。
【0058】
ついで、本実施形態の命令処理装置の、より具体的な動作について、図4および図5を参照しながら説明する。特に、ここでは、上述した命令命令(1)〜(12)からなる命令列(クロスバイパス使用が発生するショートループ処理)を、本実施形態の命令処理装置において、命令発行数を制限した状態で処理する時の動作について説明する。
【0059】
なお、図5の右側には、下記ショートループ処理を図1に示す装置で実行した場合において、各命令(1)〜(12)をデコードするデコーダ4(D0〜D2)と、各命令(1)〜(12)に基づく演算処理を実行する演算器6(EXA,EXB)とが示されている。この図5において“―”を記入されている命令(つまり、ロード命令や分岐命令)は、演算器6を使用しないで処理される。
【0060】
また、図4には、図1に示す装置において、命令発行数制限下で上記ショートループ処理〔命令列(1)〜(12)〕を3回繰り返し実行した際の、処理内容と時間(制御時間τ)との関係が示されている。この図4においても、図7と同様、左側の括弧付き数字はそれぞれ上記命令(1)〜(12)に対応し、左欄には、その括弧付き数字に対応する命令が記入されている。また、左欄における( )内のEXA/EXBは、各命令がどちらの演算器6により処理されたかを表している。さらに、上側の数字1〜32は、時間の経過(制御時間τ)を表している。さらに、図4においても、p,b,a,t,m,b,r,xは処理内容(ステージ)を示すもので、pは“priority”、bは“buffer”、aは“address”、tは“TLB/TAG”、mは“match”、rは“result”、xは“execute”の各ステージを表し、各命令は、それぞれのステージを経て処理される。
【0061】
さて、(1)のlduh命令(ロード命令)は、デコーダD1でデコードされ、アドレス%g2に値が書き込まれるのを待ち、その値を用いてアドレス%g2+%l4からデータをロードし、アドレス%g2に書き込む。次の行(2)のsubcc命令(減算命令)は、デコーダD2でデコードされ、アドレス%g2に値が書き込まれるのを待ち、その値を用いて演算器EXAで処理される。
【0062】
次に、(3)のbleu命令(分岐命令)は、デコーダD2でデコードされ、このbleu命令のディレイスロット命令である、(4)のor命令(論理和命令)は、デコーダD0でデコードされ、演算器EXBで実行される。このor命令は、アドレス%g0の値を使用するが、アドレス%g0の値は常に0であり、(5)のsubcc命令(減算命令)との依存関係が無いので、このsubcc命令と同時に実行される。このとき、(3)のbleu命令は、pnが指定されて分岐しないので、次に、or命令の次の行(5)のsubcc命令が、デコーダD2でデコードされ、演算器EXAで実行される。
【0063】
続いて、(6)のbne命令(分岐命令)は、デコーダD0でデコードされ、このbne命令のディレイスロット命令である、(7)のadd命令(加算命令)が、デコーダD1でデコードされ、演算器EXBで実行される。そして、このadd命令による演算結果を利用して、(6)のbne命令の分岐先である、(8)のldub命令(ロード命令)が実行される。このldub命令は、bne命令の分岐先の命令であるので、デコーダD0でデコードされる。このldub命令によってアドレス%o0+%o2からロードされたデータは、rステージでアドレス%g2に書き込まれる。ldub命令の次の行(9)のsubcc命令(減算命令)は、デコーダD1でデコードされ、アドレス%g2にrステージで値が書き込まれるのを待ち、その値を用いて演算器EXBで処理される。
【0064】
(9)のsubcc命令が値を待っている間に、(10)のbne命令(分岐命令)のディレイスロット命令である(11)のand命令と、その後の(12)のsll命令とが先に実行される。ここで、(10)のbne命令はデコーダD2でデコードされる。このとき、(11)のand命令は、演算器EXBで得られた、(4)のor命令による演算結果を用いて演算器EXAで処理されるため、図4に示すように、制御時間7τで演算器EXBから演算器EXAへのクロスバイパス使用が発生する。このクロスバイパス使用は、2回目のループ中の制御時間16τや、3回目のループ中の制御時間25τでも発生している。
【0065】
(11)のand命令(論理積命令)が、デコーダD0でデコードされ演算器EXAで実行された後、そのand命令による演算結果を利用して、bne命令の分岐先であるsll命令が、デコーダD0でデコードされ演算器EXAで実行される。このとき、(11)のand命令も (12)のsll命令も演算器EXAで実行されるため、図7(制御時間11τ,23τ,35τ)に示すようなクロスバイパス使用は発生しない。
【0066】
そして、(12)のsll命令による演算結果を用いて、再び、(1)のlduh命令によってアドレス%g2+%l4からデータがロードされ、アドレス%g2に書き込まれ、上述のような処理が繰り返される。
図1に示す装置を用いた場合、図4に示すように、命令(1)〜(12)からなるショートループを1周処理するのに要する時間は9τであり、上述したように、1周する間にクロスバイパスの使用が1回だけ発生している。つまり、本実施形態の装置を用いることにより、命令処理が演算器EXBよりも演算器EXAで実行される頻度が高くなるため、クロスバイパスの使用回数が減り、ショートループを1周処理するのに要する時間を短縮することが可能になっている。
【0067】
なお、(2)のsubcc命令と(4)のor命令とは、図7に示す例では同じ演算器EXAで処理されているため、同時に処理できなかったが、図4に示す例では、異なる演算器EXA,EXBにおいて同時に並列処理されることになるため、ショートループの処理時間がさらに短縮されている。
【0068】
このように、本発明の一実施形態としての命令処理装置によれば、命令バッファ2からデコーダ4(D0〜D3)へ発行される命令の数を制限することにより、全ての演算器6(EXA,EXB)を用いて命令を処理しながら命令処理頻度が一つの演算器EXAに偏ることになり、この一つの演算器EXAによる演算結果が同一の演算器EXAに投入される可能性が高くなる。従って、上述したように、並列処理による効率的な処理を実現しながら、クロスバイパス使用の発生を抑制することができる。
【0069】
特に、クロスバイパスの使用頻度が高くなる状況、具体的には、クロスバイパス使用が発生するショートループ処理を繰り返し実行するような状況を、クロスバイパス検出器23およびBRHIS24により検出した場合に、命令発行数制限装置22が命令処理頻度を演算器EXAに偏るように命令発行数を制限することにより、クロスバイパス使用の発生が極めて有効に抑制され、命令処理に要する時間を確実に短縮することができる。
【0070】
このとき、演算器EXBに対応付けられた2つのデコーダD1,D3のうちの一方のデコーダD3へ命令バッファ2から命令を発行するのを禁止することにより、容易に、全ての演算器6を用いて命令を処理しながら命令処理頻度を一つの演算器EXAに偏らせることができ、つまりはクロスバイパス使用の発生を極めて容易に抑制することができる。
【0071】
また、本実施形態では、リザベーションステーション5における命令数が所定数以上である場合(本実施形態では1以上である場合)に命令発行数の制限を行ない、リザベーションステーション5における命令数が少ない時(命令数が0である時)には、命令発行数の制限を行なわないようにしてデコーダ4からリザベーションステーション5への命令供給数を増やすことにより、各演算器6が演算処理を行なわない時間が発生するのを確実に抑制している。
【0072】
一方、クロスバイパス使用の発生頻度が高い状況はずっと継続するわけではないので、命令処理頻度を一つの演算器EXAに偏らせた状態を継続すると、クロスバイパス使用の発生を抑制することができたとしても、効率のよい並列処理を行なえず、逆に命令処理効率を低下させてしまうおそれがある。そこで、本実施形態では、命令発行数の制限動作の開始後に所定条件を満たした時(例えば所定時間の経過後,所定数の命令の処理後,ショートループ処理終了後など)に命令発行数の制限動作を解除することにより、命令処理状態を、命令処理頻度を一つの演算器EXAに偏らせない通常の状態、つまり命令を2つの演算器6で均等に処理する状態に復帰させることができ、より効率的な命令処理を実現することができる。
【0073】
〔2〕その他
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態では、デコーダ4の数が4、リザベーションステーション5の数が2、演算器6の数が2である場合について説明しているが、本発明は、これに限定されるものではない。
また、上述した実施形態では、命令発行数の制限動作を開始してから所定時間経過後にその制限動作を解除しているが、ショートループ処理の終了を検出し、その終了を検出した時点で制限動作を解除するようにしてもよい。
【0074】
さらに、上述した実施形態では、命令処理装置により、上記命令(1)〜(12)から成る命令群を処理する場合について説明したが、本発明の処理対象となる命令群は、これに限定されるものではない。
また、上述した実施形態では、命令処理頻度を演算器EXAに偏らせているが、デコーダD0またはD2からリザベーションステーションRSEAへの命令発行を制限することにより、演算器EXBに命令処理頻度を偏らせてもよく、この場合も上述した実施形態と同様の作用効果を得ることができる。
【0075】
〔3〕付記
(付記1) 命令を蓄積する命令バッファと、
該命令バッファから同時に発行される複数の命令を並列的にデコードしうる複数のデコーダと、
該複数のデコーダによってデコードされた命令を処理する複数の演算器と、
該複数の演算器の全てを用いて前記命令を処理しながら前記命令を処理する頻度を該複数の演算器のうちの一の演算器に偏らせるように、該命令バッファから該複数のデコーダへ発行される命令の数を制限しうる命令発行数制限手段とをそなえて構成されたことを特徴とする、命令処理装置。
【0076】
(付記2) 各デコーダとそのデコーダによってデコードされた命令を処理すべき演算器との対応関係が、一の演算器に2以上のデコーダを対応付けるようにして予め設定され、
該命令発行数制限手段が、命令処理頻度を偏らせるべき演算器以外の各演算器に対応付けられた前記2以上のデコーダのうちの一部のデコーダへ該命令バッファから命令を発行するのを禁止することにより、該命令バッファから該複数のデコーダへ発行される命令の数を制限することを特徴とする、付記1記載の命令処理装置。
【0077】
(付記3) 該複数の演算器のうちの一の演算器での処理結果を他の演算器に投入するためのクロスバイパスを使用する頻度が高くなる状況を検出する検出手段をさらにそなえ、
該検出手段により前記クロスバイパスの使用頻度が高くなる状況を検出した場合に、該命令発行数制限手段が起動されることを特徴とする、付記1または付記2に記載の命令処理装置。
【0078】
(付記4) 該検出手段として、前記クロスバイパスの使用を検出するクロスバイパス検出手段と、所定の命令列を繰り返し処理するループの存在を検出するループ検出手段とをそなえ、
該クロスバイパス検出手段により前記クロスバイパスの使用が検出され且つ該ループ検出手段により前記ループの存在が検出された場合に、該命令発行数制限手段が起動されることを特徴とする、付記3記載の命令処理装置。
【0079】
(付記5) 該ループ検出手段が、分岐命令の履歴に基づいて前記ループの存在を検出することを特徴とする、付記4記載の命令処理装置。
(付記6) 該複数のデコーダによりデコードされ該複数の演算器に投入されるべき命令を一時的に蓄積するリザベーションステーションと、
該リザベーションステーションに蓄積されている命令の数を計数するカウンタとをさらにそなえ、
該カウンタにより計数された命令数が所定数以上である場合に、該命令発行数制限手段が起動されることを特徴とする、付記1〜付記5のいずれか一つに記載の命令処理装置。
【0080】
(付記7) 該命令発行数制限手段の起動後に所定条件を満たした時に該命令発行数制限手段による制限動作を解除する解除手段をさらにそなえたことを特徴とする、付記1〜付記6のいずれか一つに記載の命令処理装置。
(付記8) 該命令発行数制限手段の起動後の経過時間を計時するタイマをさらにそなえ、
該タイマにより計時された前記経過時間が所定時間に達した時に、該解除手段が、該命令発行数制限手段による制限動作を解除することを特徴とする、付記7記載の命令処理装置。
【0081】
(付記9) 命令を命令バッファに蓄積し、
該命令バッファから複数の命令を同時に発行し、
該命令バッファから発行された該複数の命令を複数のデコーダで並列的にデコードし、
該複数のデコーダによってデコードされた命令を複数の演算器で処理し、
該複数の演算器の全てを用いて前記命令を処理しながら前記命令を処理する頻度を該複数の演算器のうちの一の演算器に偏らせるように、該命令バッファから該複数のデコーダへ発行される命令の数を制限することを特徴とする、命令処理方法。
【0082】
(付記10) 各デコーダとそのデコーダによってデコードされた命令を処理すべき演算器との対応関係を、一の演算器に2以上のデコーダを対応付けるようにして予め設定し、
命令処理頻度を偏らせるべき演算器以外の各演算器に対応付けられた前記2以上のデコーダのうちの一部のデコーダへ該命令バッファから命令を発行するのを禁止することにより、該命令バッファから該複数のデコーダへ発行される命令の数を制限することを特徴とする、付記9記載の命令処理方法。
【0083】
(付記11) 該複数の演算器のうちの一の演算器での処理結果を他の演算器に投入するためのクロスバイパスを使用する頻度が高くなる状況を検出し、
前記クロスバイパスの使用頻度が高くなる状況を検出した場合に、該命令バッファから該複数のデコーダへ発行される命令の数を制限することを特徴とする、付記9または付記10に記載の命令処理方法。
【0084】
(付記12) 前記クロスバイパスの使用を検出するとともに、所定の命令列を繰り返し処理するループの存在を検出し、
前記クロスバイパスの使用が検出され且つ前記ループの存在が検出された場合に前記クロスバイパスの使用頻度が高くなる状況であると判断し、該命令バッファから該複数のデコーダへ発行される命令の数を制限することを特徴とする、付記11記載の命令処理方法。
【0085】
(付記13) 分岐命令の履歴に基づいて前記ループの存在を検出することを特徴とする、付記12記載の命令処理方法。
(付記14) 該複数のデコーダによりデコードされ該複数の演算器に投入されるべき命令を一時的に蓄積するためにそなえられたリザベーションステーションにおける命令の数を計数し、
計数された命令数が所定数以上である場合に、該命令バッファから該複数のデコーダへ発行される命令の数を制限することを特徴とする、付記9〜付記13のいずれか一つに記載の命令処理方法。
【0086】
(付記15) 命令発行数の制限動作の開始後に所定条件を満たした時に該制限動作を解除することを特徴とする、付記9〜付記14のいずれか一つに記載の命令処理方法。
(付記16) 該制限動作の開始後、所定時間が経過した時に、該制限動作を解除することを特徴とする、付記15記載の命令処理方法。
【0087】
【発明の効果】
以上詳述したように、本発明の命令処理装置および命令処理方法によれば、命令バッファから複数のデコーダへ発行される命令の数を制限することにより、複数の演算器の全てを用いて命令を処理しながら命令を処理する頻度が一つの演算器に偏ることになり、この一つの演算器による演算結果が同一の演算器に投入される可能性が高くなる。従って、並列処理による効率的な処理を実現しながら、クロスバイパス使用の発生を抑制することができるので、命令処理に要する時間を大幅に短縮することができる。
【0088】
特に、クロスバイパスの使用頻度が高くなる状況、具体的には、クロスバイパス使用が発生するショートループ処理を繰り返し実行するような状況を検出した場合に、命令処理頻度を一つの演算器に偏るように命令発行数の制限を行なうことにより、クロスバイパス使用の発生が極めて有効に抑制され、命令処理に要する時間を確実に短縮することができる。
【0089】
このとき、命令処理頻度を偏らせるべき演算器以外の各演算器に対応付けられた2以上のデコーダのうちの一部のデコーダへ命令バッファから命令を発行するのを禁止することにより、容易に、複数の演算器の全てを用いて命令を処理しながら命令処理頻度を一つの演算器に偏らせることができ、つまりはクロスバイパス使用の発生を極めて容易に抑制することができる。
【0090】
また、リザベーションステーションにおける命令数が所定数以上である場合に命令発行数の制限を行ない、リザベーションステーションにおける命令数が少ない時には、命令発行数の制限を行なわないようにしてリザベーションステーションへの命令供給数を増やすことにより、各演算器が演算処理を行なわない時間が発生するのを確実に抑制することができる。
【0091】
さらに、命令発行数の制限動作の開始後に所定条件を満たした時(例えば所定時間の経過後,所定数の命令の処理後)に命令発行数の制限動作を解除することにより、命令処理状態を、命令処理頻度を一つの演算器に偏らせない通常の状態、つまり命令を複数の演算器で均等に処理する状態に復帰させることができ、より効率的な命令処理を実現することができる。
【図面の簡単な説明】
【図1】本発明の一実施形態としての命令処理装置の構成を示すブロック図である。
【図2】本実施形態における要部(命令発行数制限装置および命令制御部)の構成を示す図である。
【図3】本実施形態の命令発行数制限装置の動作を説明するためのフローチャートである。
【図4】図1に示す装置においてショートループ処理を3回繰り返し実行した際の、処理内容と時間との関係を示す図である。
【図5】ショートループ処理を図1および図6に示す装置で実行した場合において、各命令をデコードするデコーダと各命令に基づく演算処理を実行する演算器とを示す図である。
【図6】一般的な情報処理装置における命令処理部の構成を示すブロック図である。
【図7】図6に示す装置においてショートループ処理を3回繰り返し実行した際の、処理内容と時間との関係を示す図である。
【符号の説明】
1 命令キャッシュメモリ
2 命令バッファ(I−BUFFER)
3 命令制御部
4 デコーダ(D0〜D3)
5 リザベーションステーション(RSEA,RSEB)
6 演算器(EXA,EXB)
7,7a,7b 結果レジスタ(RR)
8 オペランドレジスタ(OPR)
9 ルート(クロスバイパス)
10 ルート
20 命令アドレス生成部
21 命令制御部
21a ANDゲート
22 命令発行数制限装置(命令発行数制限手段,解除手段)
22a,22c 反転素子
22b ANDゲート
23 クロスバイパス検出器(クロスバイパス検出手段)
24 分岐履歴蓄積部(BRHIS)
25 RSE_USEDカウンタ(カウンタ)
26 タイマ
Claims (5)
- 命令を蓄積する命令バッファと、
該命令バッファから同時に発行される複数の命令を並列的にデコードしうる複数のデコーダと、
該複数のデコーダによってデコードされた命令を処理する複数の演算器と、
該複数の演算器の全てを用いて前記命令を処理しながら前記命令を処理する頻度を該複数の演算器のうちの一の演算器に偏らせるように、該命令バッファから該複数のデコーダへ発行される命令の数を制限しうる命令発行数制限手段とをそなえて構成されたことを特徴とする、命令処理装置。 - 各デコーダとそのデコーダによってデコードされた命令を処理すべき演算器との対応関係が、一の演算器に2以上のデコーダを対応付けるようにして予め設定され、
該命令発行数制限手段が、命令処理頻度を偏らせるべき演算器以外の各演算器に対応付けられた前記2以上のデコーダのうちの一部のデコーダへ該命令バッファから命令を発行するのを禁止することにより、該命令バッファから該複数のデコーダへ発行される命令の数を制限することを特徴とする、請求項1記載の命令処理装置。 - 該複数の演算器のうちの一の演算器での処理結果を他の演算器に投入するためのクロスバイパスを使用する頻度が高くなる状況を検出する検出手段をさらにそなえ、
該検出手段により前記クロスバイパスの使用頻度が高くなる状況を検出した場合に、該命令発行数制限手段が起動されることを特徴とする、請求項1または請求項2に記載の命令処理装置。 - 命令を命令バッファに蓄積し、
該命令バッファから複数の命令を同時に発行し、
該命令バッファから発行された該複数の命令を複数のデコーダで並列的にデコードし、
該複数のデコーダによってデコードされた命令を複数の演算器で処理し、
該複数の演算器の全てを用いて前記命令を処理しながら前記命令を処理する頻度を該複数の演算器のうちの一の演算器に偏らせるように、該命令バッファから該複数のデコーダへ発行される命令の数を制限することを特徴とする、命令処理方法。 - 各デコーダとそのデコーダによってデコードされた命令を処理すべき演算器との対応関係を、一の演算器に2以上のデコーダを対応付けるようにして予め設定し、
命令処理頻度を偏らせるべき演算器以外の各演算器に対応付けられた前記2以上のデコーダのうちの一部のデコーダへ該命令バッファから命令を発行するのを禁止することにより、該命令バッファから該複数のデコーダへ発行される命令の数を制限することを特徴とする、請求項4記載の命令処理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002188262A JP3769249B2 (ja) | 2002-06-27 | 2002-06-27 | 命令処理装置および命令処理方法 |
US10/339,414 US7103755B2 (en) | 2002-06-27 | 2003-01-10 | Apparatus and method for realizing effective parallel execution of instructions in an information processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002188262A JP3769249B2 (ja) | 2002-06-27 | 2002-06-27 | 命令処理装置および命令処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004030424A JP2004030424A (ja) | 2004-01-29 |
JP3769249B2 true JP3769249B2 (ja) | 2006-04-19 |
Family
ID=29774216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002188262A Expired - Fee Related JP3769249B2 (ja) | 2002-06-27 | 2002-06-27 | 命令処理装置および命令処理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7103755B2 (ja) |
JP (1) | JP3769249B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008155840A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 命令制御装置及び命令制御方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006018412A (ja) * | 2004-06-30 | 2006-01-19 | Fujitsu Ltd | アドレス生成器および演算回路 |
US7389406B2 (en) * | 2004-09-28 | 2008-06-17 | Intel Corporation | Apparatus and methods for utilization of splittable execution units of a processor |
US7774582B2 (en) * | 2005-05-26 | 2010-08-10 | Arm Limited | Result bypassing to override a data hazard within a superscalar processor |
KR100867269B1 (ko) * | 2007-02-22 | 2008-11-06 | 삼성전자주식회사 | 프로세서의 추론적 로드 명령 실행 방법 및 상기 방법을채용한 프로세서 |
JP5949327B2 (ja) * | 2012-08-24 | 2016-07-06 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US20150082006A1 (en) * | 2013-09-06 | 2015-03-19 | Futurewei Technologies, Inc. | System and Method for an Asynchronous Processor with Asynchronous Instruction Fetch, Decode, and Issue |
JP7032647B2 (ja) | 2018-04-17 | 2022-03-09 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2760273B2 (ja) | 1993-12-24 | 1998-05-28 | 日本電気株式会社 | 演算装置及びその制御方法 |
US5758116A (en) * | 1994-09-30 | 1998-05-26 | Intel Corporation | Instruction length decoder for generating output length indicia to identity boundaries between variable length instructions |
US5689674A (en) * | 1995-10-31 | 1997-11-18 | Intel Corporation | Method and apparatus for binding instructions to dispatch ports of a reservation station |
US5909573A (en) * | 1996-03-28 | 1999-06-01 | Intel Corporation | Method of branch prediction using loop counters |
JP3760035B2 (ja) | 1996-08-27 | 2006-03-29 | 松下電器産業株式会社 | 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ |
CN1280714C (zh) | 1996-08-27 | 2006-10-18 | 松下电器产业株式会社 | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 |
US6128687A (en) * | 1997-07-23 | 2000-10-03 | Texas Instrumenets Incorporated | Fast fault detection circuitry for a microprocessor |
JP3534987B2 (ja) | 1997-10-20 | 2004-06-07 | 富士通株式会社 | 情報処理装置 |
US6014735A (en) * | 1998-03-31 | 2000-01-11 | Intel Corporation | Instruction set extension using prefixes |
US6175911B1 (en) * | 1998-08-21 | 2001-01-16 | Advanced Micro Devices, Inc. | Method and apparatus for concurrently executing multiplication and iterative operations |
US6604188B1 (en) * | 1999-10-20 | 2003-08-05 | Transmeta Corporation | Pipeline replay support for multi-cycle operations wherein all VLIW instructions are flushed upon detection of a multi-cycle atom operation in a VLIW instruction |
-
2002
- 2002-06-27 JP JP2002188262A patent/JP3769249B2/ja not_active Expired - Fee Related
-
2003
- 2003-01-10 US US10/339,414 patent/US7103755B2/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008155840A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 命令制御装置及び命令制御方法 |
KR101122180B1 (ko) * | 2007-06-20 | 2012-03-20 | 후지쯔 가부시끼가이샤 | 명령 제어 장치 및 명령 제어 방법 |
Also Published As
Publication number | Publication date |
---|---|
US7103755B2 (en) | 2006-09-05 |
JP2004030424A (ja) | 2004-01-29 |
US20040003205A1 (en) | 2004-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7958339B2 (en) | Instruction execution control device and instruction execution control method | |
JP5431308B2 (ja) | システムおよびパイプラインプロセッサにおける条件命令実行の加速のためのローカル条件コードレジスタの使用方法 | |
US6792525B2 (en) | Input replicator for interrupts in a simultaneous and redundantly threaded processor | |
US6260138B1 (en) | Method and apparatus for branch instruction processing in a processor | |
US8195924B2 (en) | Early instruction text based operand store compare reject avoidance | |
US9658853B2 (en) | Techniques for increasing instruction issue rate and reducing latency in an out-of order processor | |
US20140164738A1 (en) | Instruction categorization for runahead operation | |
TW201439904A (zh) | 在提前執行中管理潛在無效結果 | |
JP2018005488A (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US20170123808A1 (en) | Instruction fusion | |
US20140195790A1 (en) | Processor with second jump execution unit for branch misprediction | |
JP3769249B2 (ja) | 命令処理装置および命令処理方法 | |
US20080244244A1 (en) | Parallel instruction processing and operand integrity verification | |
US8977837B2 (en) | Apparatus and method for early issue and recovery for a conditional load instruction having multiple outcomes | |
US8447961B2 (en) | Mechanism for efficient implementation of software pipelined loops in VLIW processors | |
US10095518B2 (en) | Allowing deletion of a dispatched instruction from an instruction queue when sufficient processor resources are predicted for that instruction | |
JPH04188229A (ja) | 浮動小数点演算処理装置 | |
EP0778519B1 (en) | Multiple instruction dispatch system for pipelined microprocessor without branch breaks | |
JP5155655B2 (ja) | マイクロプロセッサ出力ポート、及び、そこから提供された命令の制御 | |
JP5115555B2 (ja) | 演算処理装置 | |
KR20030007425A (ko) | 고속 및 저속 리플레이 경로를 갖는 리플레이 구조를구비한 프로세서 | |
JP5093237B2 (ja) | 命令処理装置 | |
US8473725B2 (en) | System and method for processing interrupts in a computing system | |
JP7487535B2 (ja) | 演算処理装置 | |
JP6225554B2 (ja) | 演算処理装置及び演算処理装置の制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041026 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060117 |
|
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: 20060124 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060203 |
|
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: 20090210 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100210 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110210 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110210 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120210 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130210 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140210 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |