JP2007328484A - プロセッサ - Google Patents

プロセッサ Download PDF

Info

Publication number
JP2007328484A
JP2007328484A JP2006158117A JP2006158117A JP2007328484A JP 2007328484 A JP2007328484 A JP 2007328484A JP 2006158117 A JP2006158117 A JP 2006158117A JP 2006158117 A JP2006158117 A JP 2006158117A JP 2007328484 A JP2007328484 A JP 2007328484A
Authority
JP
Japan
Prior art keywords
instruction
queue
instructions
processor
entry
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.)
Pending
Application number
JP2006158117A
Other languages
English (en)
Inventor
Hiroshi Nakamura
宏 中村
Masaaki Kondo
正章 近藤
Hiroshi Sasaki
広 佐々木
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.)
University of Tokyo NUC
Original Assignee
University of Tokyo NUC
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 University of Tokyo NUC filed Critical University of Tokyo NUC
Priority to JP2006158117A priority Critical patent/JP2007328484A/ja
Publication of JP2007328484A publication Critical patent/JP2007328484A/ja
Pending legal-status Critical Current

Links

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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

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)

Abstract

【課題】性能の大幅な劣化を招くことなく、動的命令スケジューリング機構の構成をより簡易な構成とし、以て、消費電力をより低減させることが可能なプロセッサを提案する。
【解決手段】依存情報を用いた命令グループ化による手法を採用する。 マスターキュー(120)とスレーブキュー(122)を備えたプロセッサにおいて、マスターキュー内の命令が選択され、発行のためにアクセスされる際、スレーブキューに命令が格納されていることを示すフラグ(124)が立っていた場合、ラッチ(126)を介して次のサイクルでスレーブキュー内の命令が発行される。ウェイクアップ時に連想マッチを行うためのCAMはマスターキュー側にのみ備えられている。
【選択図】図4

Description

本発明は、汎用プロセッサにおける改良された動的命令スケジューリングに関する。特に命令間の依存情報を用いた命令のグループ化によって消費電力を削減した動的命令スケジューリングに関する。
動的命令スケジューリング機構
近年、汎用のマイクロプロセッサにおいては、多命令同時実行や、アウト・オブ・オーダー実行可能なものが多い。
これは、汎用のマイクロプロセッサにおいては、従来のバイナリコード資産を高速に実行する場合を考慮し、高速処理のために実行時に並列性を抽出することが要求された結果である。
さて、このような、多命令同時実行、アウト・オブ・オーダー実行を行うためのメカニズムを動的命令スケジューリング機構と呼ぶ。
消費電力
動的命令スケジューリング機構の問題点として、ハードウェア構成が複雑になり、消費電力が大幅に増加してしまうことが従来から知られている。この問題点は、特にバッテリ駆動の携帯機器において大きな問題となっている。
また、現在ではハイエンドシステムにおいても消費電力増大にともなう発熱量の増大が深刻化しており、複雑な動的命令スケジューリング機構を用いることが難しくなっている。このため、多命令同時実行や、アウト・オブ・オーダー実行機構のハードウェアの簡単化、低消費電力化は、非常に重要な課題とされている。
このように、現在、動的命令スケジューリング機構を簡単化し低消費電力化を図ることは強く要望されている。
従来の動的命令スケジューリング機構
構成
動的命令スケジューリング機構は、主に、命令キューと、命令スケジューリング機構と、から構成される。
(1)命令キュー
命令キューは、命令が実行可能になるまで命令の情報を保持する手段であり、命令ウィンドウとも呼ばれる。
(2)制御手段
制御手段は、命令スケジューリング動作を実行する手段であり、上記命令キューに所定の命令を格納し、また発行可能な命令を選択し、発行する手段である。
このような動的命令スケジューリング機構の一例を示す構成図が図13に示されている。
ここで示す例では、4widthのスーパースカラープロセッサの例が示されている。この場合、図13に示すように、命令キュー10に命令を書き込む書き込みポート10aが4個備えられている。また、命令キュー10には命令を読み出す読み出しポート10bも4個備えられている。
さらに、制御手段12から、命令キュー10に対しては、発行する命令を選択する選択線12aが4本出ている。
このような構成によって、図13に示す動的命令スケジューリング機構を有するスーパースカラープロセッサは1サイクルで4個の命令を命令キュー10に書き込むことができ、また、1サイクルで4個の命令を選択(Select)することができる。また、1サイクルで4個の命令を発行(Issue)することができる。これらの書き込み、選択、発行は、制御手段12が実行する。
命令キュー10のエントリー数は任意の数を取りうる。例えば、16個でも32個でも、また64個でもよい。
動作
典型的なRISCパイプラインの動作の概念図が図14に示されている。以下、典型的な動的命令スケジューリング機構の動作を図13、図14に基づき説明する。
まず、命令をフェッチ(Fetch)し、そのデコード(Decode)が行われる(図14参照)。そして、命令はレジスタ・リネーミングステージ(Rename)を経て命令キュー10にイン・オーダーに格納(ディスパッチ:Dispatch)される。命令キュー10は、IQ(Instrtuction Queue)と呼ばれる場合もある。この格納は制御手段12が行う。
次に、命令キュー10内の各命令のソース・オペランドが揃い次第、アウト・オブ・オーダーに発行されて演算が行われる。この発行も制御手段12が行う。演算は、実行ステージのALU等の演算手段が行う。
図13、図14に基づき、命令に関する処理をより詳細に説明しよう。
まず、制御手段12は、この命令キュー10内でオペランドが揃った命令を起こす動作を実行する。ここでオペランドが揃うとは、演算対象が全て準備された状態(利用可能な状態)を言う。また、命令を起こすとは、その命令を実行可能な状態に置くことを言い、その動作はウェイクアップ(WakeUp)と呼ばれる。実行可能な状態をレディ(Ready)と呼び、「命令がレディになった」等と表現する。具体的には、レディになった状態を示すフラグ等を立てることによってウェイクアップが行われる。
次に、制御手段12は、実行可能な命令(すなわちレディ状態の命令)の中から、発行する命令を選択する。この選択はセレクト(Select)と呼ばれる。制御手段12は、選択した命令を発行(Issue)し、必要なレジスタファイルの読み出し等が行われる。
次に、発行(Issue)によって命令が実行ステージに送られると、実行ステージにおいて演算が実行され、結果を格納するためにデータキャッシュのアクセスが行われる。最後にコミット処理が実行される(図14参照)。
命令のスケジューリング
さて、命令のスケジューリングは、命令のウェイクアップと、セレクトという2個のフェーズからなる。いずれも制御手段12が行う。
ウェイクアップでは、その前提としてオペランドのレディ状態の設定が行われる。
まず、発行された命令のデスティネーションタグが命令キュー10にブロードキャストされ、命令キュー10内の全ての待機しているエントリー(まだ発行されていない命令が格納されているエントリー)に対して、そのエントリーにストアされているソース・レジスタ(すなわちその命令が用いるソースオペランド)のタグとの連想マッチが行われる。この連想マッチングで、タグが一致したソースはレディであるとマークされる。
このようにして、命令のソースが全てレディとマークされた場合、その命令はウェイクアップされて「レディ」となる。具体的には、制御手段12がマークを確認した上でレディ状態に設定する。
その結果、その命令はセレクトの対象となる。このセレクト(選択)では、選択可能な命令(最大でN)の中からW命令が選ばれる。ここで、Nは命令キュー10のエントリー数であり、Wはプロセッサの発行幅である。すなわち、そのプロセッサは最大W個の命令を発行することができる。この選択も発行も制御手段12が実行する。
図13の例では、4個の読み出しポート10bが備えられているので、上記W(発行幅)は「4」である。
命令キュー10の構成は一般的にはフル・アソシアティブである。そして、各サイクル毎に、新しい命令を発行するためのウェイクアップとセレクトとが実行されうる。潜在的には、どのエントリーに対してもこのウェイクアップとセレクトとを実行することが可能である。したがって、命令キュー10へのアクセスは各サイクル毎に行われる。
具体的には、
・命令のディスパッチ(命令の書き込み)
・ウェイクアップのためのタグのブロードキャスト
・セレクト・発行(命令の読み出し)
の各時点において命令キュー10へのアクセスが生じる。このアクセスが、プロセッサの主要な電力消費要因であると一般的に言われている。
さて、命令レベル並列度(ILP: Instruction Level Parallelism) を可能な限り抽出して、プロセッサを高性能化するためには、大容量の命令キュー、及び多数の同時命令発行が必須のものである。
しかし、一般的に命令キューのキューサイズや命令キューのポート数をむやみに増加させたのでは、消費電力が急激に増大してしまうことが広く知られている。これは、命令キューのエントリーの数に比例して連想記憶メモリーの連想マッチングの比較対象が増え、ポート数が増えれば、指数関数的により一層制御回路が複雑なものとなり、消費電力も指数関数的に増大すると考えられる。
そこで、従来より、これら命令キューや命令スケジューリング機構を対象として、
(a)回路の複雑化を抑え消費電力を削減する技術
(b)サイクルタイムを短縮するための技術
が数多く提案されている。例えば後述する非特許文献1や非特許文献2にこれらの技術が開示されている。
しかしながら、消費電力を削減するための抜本的な手法、特に性能をそれほど落とさずに消費電力を抑制する手法は未だ知られていない。
このように、従来から、動的命令スケジューリング機構の大容量・多ポート化による複雑さや消費電力の増大の問題への対処を目的とした手法が多く提案されている。
例えば、非特許文献3では、命令キューにとどまっている命令の消費電力を考慮し、キャッシュミスなどによるレイテンシの長い命令については、巨大な命令待ちバッファ(Waiting Instruction Buffer: WIB) に待避させる命令キューの設計を提案している。
また、非特許文献4では、命令キューをサイズの小さなセグメントに分割し、パイプライン的に動作させることによって大幅な性能向上を達成するアーキテクチャを提案している。
また、後述する本発明のように複数命令をグループ化するという視点から、命令をMacro−op と呼ばれる単位にグループ化し、ウェイクアップとセレクトのステージをパイプライン化することにより動的命令スケジューリング機構の複雑度を低減する研究が行われている(非特許文献14)。この非特許文献14では、命令をグループ化するという視点は本発明と類似するが、実行レイテンシが単一サイクルである命令をなくすことによって依存のある命令のバックツーバックな実行を可能にすることを目的としている点が本発明と大きく異なっている。
先行特許文献の例
例えば、下記特許文献1には、命令バッファに格納された命令を取り出せる順番で取り出し、なるべく早く実行する技術が開示されている。
また、下記特許文献2では、命令の1次発行キューと、2次発行キューを用いて命令を処理する技術が開示されている。
特開2001−337822号公報(特許第3558001号) 特開2001−297000号公報(特許第3540743号) P. Michaud and A. Seznec: "Data-flow prescheduling for large instruction windows in out-of-order processors.",HPCA, pp. 27・6 (2001). R. Canal and A. Gonzalez: "Reducing the complexity of the issue logic.", ICS, pp. 312・20 (2001). A. R. Lebeck, T. Li, E. Rotenberg, J.Koppanalil and J. Patwardhan:"A large, fast instruction window for tolerating cache misses.", ISCA, pp. 59・0 (2002). S. E. Raasch, N. L. Binkert and S. K. Reinhardt: "A scalable instruction queue design using dependence chains.", ISCA, pp. 318・(2002). D. Folegnani and A. Gonzalez: "Energy-effective issue logic.", ISCA, pp. 230・39 (2001). S. A. Taylor, M. Quinn, D. Brown, N. Dohm, S. Hildebrandt, J. Huggins and C. Ramey: "Functional verification of a multiple-issue, out-of-order, superscalar alpha processor - the dec alpha 21264 microprocessor.", DAC, pp. 638・43 (1998). M. Goshima, K. Nishino, T. Kitamura, Y. Nakashima, S. Tomita and S. ichiro Mori: "A high-speed dynamic instruction scheduling scheme for superscalar processors.", MICRO, pp. 225・36 (2001). A. Buyuktosunoglu, T. Karkhanis, D. H. Albonesi and P. Bose: "Energy efficient co-adaptive instruction fetch and issue.", ISCA, pp. 147・56 (2003). I. Kim and M. H. Lipasti: "Half-price architecture.", ISCA, pp. 28・8 (2003). J. J. Sharkey, D. V. Ponomarev, K. Ghose and O. Ergin:"Instruction packing: reducing power and delay of the dynamic scheduling logic.", ISLPED, pp. 30・5 (2005). T. M. Austin, E. Larson and D. Ernst: "Simplescalar: An infrastructure for computer system modeling.", IEEE Computer, 35, 2, pp. 59・7 (2002). D. Brooks, V. Tiwari and M. Martonosi: "Wattch: a framework for architectural-level power analysis and optimizations.", ISCA, pp. 83・4 (2000). The Standard Performance Evaluation Corporation (SPEC). http://www.specbench.org. I. Kim and M. H. Lipasti: "Macro-op scheduling: Relaxing scheduling loop constraints.", MICRO, pp. 277・90 (2003).
このように、動的命令スケジューリング機構の低消費電力化は、現在、解決すべき課題として多くの技術者が取り組んでいる課題であるが、未だ有効な手法は知られていない。特に性能を落とさずに低消費電力化が図れる技術はほとんど知られていない。
本発明はこのような課題に鑑みなされたものであり、その目的は、性能の大幅な劣化を招くことなく、動的命令スケジューリング機構の構成をより簡易な構成とし、以て、消費電力をより低減させることが可能な仕組みを提案することである。
本発明は、上記目的を達成するために、命令キュー及び命令スケジューリング機構の消費電力削減手法の一つとして、依存情報を用いた命令グループ化による手法をその原理とする。このように、依存情報を用いて命令をグループ化し、そのグループを一つの命令発行単位として扱うことで、命令キューやスケジューリング機構のサイズ/ポート数の増加を抑えつつ、より多くの命令の保持、及び発行を行うものである。
本発明によれば、従来の動的命令スケジューリング機構よりも少ないハードウェア量で、ほぼ同等、あるいはそれ以上の性能が得られ、また消費電力を大きく削減できる。
本発明は、具体的には、以下のような手段を採用する。
(1)本発明は、上記課題を解決するために、実行すべき命令間の依存関係に関する情報を利用し、前記命令を動的にグルーピングし、グルーピングした命令群を命令キューの同一エントリーにディスパッチする制御回路、を備えたプロセッサである。
このようにグルーピングを行うことによって、一つのエントリーに複数の命令を格納し、それらを1個の命令として扱うことができるので、命令キューのポート数を削減し、消費電力の低減を図ることができる。また、選択線を通じた選択動作のための消費電力を削減することができる。
(2)また、本発明は、上記(1)記載のプロセッサにおいて、前記命令キューは、マスターキューと、スレーブキューと、を備え、前記制御回路は、実行すべき命令間の依存関係に関する情報を利用し、前記命令をグルーピングし、グルーピングした命令群に含まれる一方の命令をマスターキューに書き込み、他方の命令をスレーブキューに格納する制御回路と、を備えたプロセッサである。
このような構成によって、同一エントリーのマスターキューとスレーブキューにそれi1この命令、合計2個の命令を格納することができる。
(3)また、本発明は、上記(1)又は(2)記載のプロセッサにおいて、前記命令キューは複数のバンクに分割されており、前記制御回路は、前記グルーピングした命令群を、前記複数のバンクにそれぞれ格納することを特徴とするプロセッサである。
特に、本発明においては、上記選択するための機構や、CAMを複数個用いる必要がなくキューを分割すること(すなわち、マルチバンク化)が性能を落とさずに可能であり、キューの消費電力を削減することができる。
(4)本発明は、上記課題を解決するために、命令キューを含む命令パイプラインを備えたプロセッサにおいて、1エントリーにn個の命令を格納可能な前記命令キューと、実行対象であるプログラムから命令を取り出し、それらの中から、連続して実行可能なn個以下の命令群を取り出し、このn個以下の命令群を前記命令キューの1エントリーに格納する制御回路と、を含み、前記命令キューは、n本のキュー群と、前記n本のキューの内、いずれか1本のマスターキューに対して設けられたCAMと、を備えることを特徴とするプロセッサである。ここで、前記nは2以上の整数である。
なお、本発明では、n本のキューに分散したエントリをまとめて1エントリと考えている。つまり、1本のキューに1命令を格納する構成を採用し、n本のキュー中に分散したエントリをまとめて1個のエントリと考えている。このまとめた1個のエントリには、合計n個の命令が格納されるのである。この点は、下記(5)でも同様である。
このような構成によって、複数の命令を同一エントリーに格納しつつ、CAMを1本分のみ備えているので、消費電力の低減を図ることができる。
(5)本発明は、上記課題を解決するために、命令キューを含む命令パイプラインを備えたプロセッサにおいて、1エントリーにn個の命令を格納可能な前記命令キューと、 実行対象であるプログラムから命令を取り出し、それらの中から、連続して実行可能なn個以下の命令群を取り出し、このn個以下の命令群を前記命令キューの1エントリーに格納する制御回路と、を含み、前記命令キューは、n本のキュー群と、前記n本の各キューの1/nの部分を集めて論理的に構成した論理マスターキューと、前記論理マスターキューに対して設けられたCAMと、を備えることを特徴とするプロセッサである。ここで、前記nは2以上の整数である。
このような構成によっても、複数の命令を同一エントリーに格納しつつ、CAMを1本分のみ備えているので、消費電力の低減を図ることができる。特に、マスターキューが分散しているので、一度に複数個の命令をマスターキューに書き込むことが容易となる。
(6)また、本発明は、上記(4)又は(5)記載のプロセッサにおいて、各レジスタのレディ状態を表すフラグと、前記各レジスタ毎にそのレジスタのプロデューサ命令が前記命令キュー中で存在する位置を記憶するキューフィールドと、を備えるステートテーブル、を含み、前記制御回路は、前記ステートテーブルに基づき、前記命令キューに格納しようとする命令のソースレジスタの一方が、レディ状態にあるという第1の条件を満たし、他方のソースレジスタがレディ状態でなくそのプロデューサ命令が前記命令キュー中に存在するという第2の条件を満たす場合は、前記プロデューサ命令が存在する同一エントリーに、前記格納しようとしている命令を格納することを特徴とするプロセッサである。
このような構成によって、互いに依存関係のある命令を同一エントリーに格納することができる。
(7)また、本発明は、上記(4)又は(5)記載のプロセッサにおいて、各レジスタのレディ状態を表すフラグと、前記各レジスタ毎にそのレジスタのプロデューサ命令が前記命令キュー中で存在する位置を記憶するキューフィールドと、を備えるステートテーブル、を含み、前記制御回路は、前記ステートテーブルに基づき、前記命令キューに格納しようとする命令のソースレジスタの一方が、レディ状態でなくそのプロデューサ命令が前記命令キュー中に存在するという第3の条件を満たし、他方のソースレジスタが前記プロデューサ命令のいずれかのソースレジスタと一致するという第4の条件を満たす場合は、前記プロデューサ命令が存在する同一エントリーに、前記格納しようとしている命令を格納することを特徴とするプロセッサである。
このような構成によっても、互いに依存関係のある命令を同一エントリーに格納することができる。
(8)また、本発明は、上記(4)又は(5)記載のプロセッサにおいて、前記制御回路は、ソースレジスタが全てレディ状態にある命令群を、前記命令キュー中の同一のエントリーに格納することを特徴とするプロセッサである。
(9)また、本発明は、上記(4)又は(5)記載のプロセッサにおいて、前記命令キューは、2個以上の命令が格納されているか否かを表すスレーブキューバリッドフラグを各エントリー毎に有し、さらに、前記命令キュー中の命令を、そのエントリーから取り出して実行する実行手段であって、前記マスターキュー又は前記論理マスターキューから命令を取り出した後、前記スレーブキューバリッドフラグが2個以上の命令を格納していることを表す場合には、引き続き、そのエントリーから残りの命令を取り出して実行する実行手段、を備えることを特徴とするプロセッサ。
このような構成によって、同一エントリーに格納された命令群を連続して実行することができる。
(10)また、本発明は、上記(4)又は(5)記載のプロセッサにおいて、前記命令キューがn本のバンクに分割され、消費電力が削減されていることを特徴とするプロセッサである。
特に、本発明においては、キューを選択するための機構やCAMを複数個用いる必要がなくキューを分割すること(すなわち、マルチバンク化)が性能を落とさずに可能であり、キューの消費電力を削減することができる。
本発明では、動的命令スケジューリング機構の消費電力削減を目的として命令のグループ化による動的命令スケジューリング機構の消費電力削減手法を提案した。この発明は、グループ化した命令を単一の発行単位として扱うことによって、動的命令スケジューリング機構の複雑さを低減するものである。
本発明の好適な実施の形態において性能を評価した結果、従来の動的命令スケジューリング機構を有するプロセッサと比較して、エントリー数が小さいときには高い性能を達成しつつ、動的命令スケジューリング機構の消費電力を大幅に削減可能であることがわかった。さらに、十分に大きいエントリー数に対してもほとんど性能を低下させることなく、同様に動的命令スケジューリング機構の消費電力を大幅に削減可能であることがわかった。
本発明で提案する命令のグループ化による動的命令スケジューリング機構の消費電力削減手法は、動的にグループ化可能な命令を検出することで、例えば汎用プロセッサのように、さまざまな特徴を持つプログラムを実行するような場合にも対応できることも利点として挙げられる。
以下、本発明の好適な実施の形態を図面に基づき説明する。
本実施の形態では、複数の命令をグループ化し、一つの発行単位として扱うことによって動的命令スケジューリング機構のサイズ/ポート数を低減する手法を提案する。ディスパッチステージにおいて複数の命令をグループ化し、発行時までのステージにおいてグループ化された命令を1命令として扱う。
なお、グループ化は、グルーピングと同一の意味であり、グループ分けと称する場合もある。
4命令発行可能なプロセッサの動的命令スケジューリング機構の概念図を図13で示したが、同様のプロセッサにおいて2命令をグループ化した場合のイメージ図(すなわち本発明を適用した場合のイメージ図)を図1に示す。
図1は、動的命令スケジューリング機構の概念図であり、図13の動的命令スケジューリング機構と同様に、命令キュー110と、制御手段112と、から構成されている。
命令キュー110は、同時に2命令を書き込み/読み出しできる命令キュー2本から構成されている。それぞれには書き込みポート110aが設けられている。したがって、書き込みポート110aは2本用意されている。同様に読み出しポート110bも2本用意されている。これらのポート110a、110bは、命令2本分の太さを有している。
また、制御手段112は、命令キュー110に対する選択、発行等の処理のために制御線112aを2本を有している。
この図1に示すように、命令格納部に所定の条件を満たした2命令がグループ化して格納される。2個の命令を格納するために、命令格納部は2個の命令分用意されている。その前半部の命令キュー110をマスターキュー120と呼ぶ。また、後半部をスレーブキュー122と呼ぶ。但し、命令キュー110としてはCAMはマスターキュー120に対するCAMのみを有している。
マスターキュー120に格納されている命令を主命令と呼び、この主命令と所定の依存関係にある命令であって、スレーブキューに格納される命令を従属命令と呼ぶ。
そして、グループ化した2個の命令(すなわち、主命令と従属命令)を1命令としてウェイクアップ、セレクト、そして発行処理の対象とした。これらの処理は実質的には2命令をウェイクアップ、セレクト、そして発行する処理となる。これらの処理は、マスターキュー120に対して設けられているCAMを用いて制御手段112が実行する。
このように本実施の形態においては、図13に示す命令キュー10と同様に、4命令を同時に書き込み可能な命令キュー110であるが、必要とされるポート数が半減できることになり、命令キューの複雑さは低減され、大幅な消費電力削減につながるのである。
なお、本実施の形態では、2本のキューに分散したエントリをまとめて1エントリと考えている。つまり、1本のキューに1命令を格納する構成を採用し、2本のキュー中に分散したエントリをまとめて1エントリと考える。したがって、このまとめたエントリには、合計2個の命令が格納されるのである。これは本実施の形態全体について言えることである。なお、ここでは、2本のキュー、2本の命令の例を示したが、一般的にn本(nは2以上の整数)のキュー、n個の命令としても同様である。
一方、その結果、制御が簡素化されているため、性能を維持するには本実施の形態では種々の工夫をしている。以下、これらの種々の工夫を命令のグループ分けと共に説明する。
なお、本実施の形態では、ウェイクアップ、レディ条件の検知等を主命令に対する処理のみを行っている。したがって、制御回路は1個の命令分(主命令)だけ備えればよく、この点からも消費電力を減少させることができる。
このように、本実施の形態においては、多くの命令に対してグループ化ができれば消費電力の大幅な低減を図りつつ、命令処理能力の維持を図ることが可能である。
すなわち、本実施の形態の動的命令スケジューリング機構を採用する場合、従来の動的命令スケジューリング機構と同等のスループットを確保するためには、できる限り多くの命令をグループ化する必要がある。
例えば、上で述べた例のように、本来、4命令を同時に発行可能なプロセッサにおいて上述した新しい動的命令スケジューリング機構を採用した場合、全くグループ化することができなかったときは最大で2命令しか同一サイクルに発行することができなくなる。
したがって、どのような命令をグループ化するか、及びグループ化された命令を一つの発行単位として扱うためのマイクロアーキテクチャの拡張をどのようにするべきかは、本実施の形態の最も重要な点の一つである。
本実施の形態では、一方の命令発行の次サイクルに確実に他方の命令が発行可能となる命令の組をグループ化する。つまり、一方の命令とは「主命令」であり、他方の命令とは「従属命令」である。
したがって、2命令を発行するためには先に発行される方の命令(主命令)のみをウェイクアップ・セレクトし、この命令が発行された1サイクル後に他方の命令(従属命令)を発行すればよい。このような制御は、制御手段112が実行する。
また、グループ化制御回路113は、グループ化する2命令の検出を行う。その検出のためのハードウェアを簡素にするため、本実施の形態では先行する命令(主命令)としては単一サイクルの実行レイテンシを持つ整数演算命令のみを対象とする。
グループ化制御回路113は、後述する図3のフローチャートの動作を実現するための回路である。さらに、このグループ化制御回路113は、Rename/Dispatchステージにおけるグループ化制御回路である。グループ化制御回路113は、請求の範囲の制御回路の好適な一例に相当する。
グループ化可能な命令の条件
本実施の形態においてグループ化可能な命令の組選択条件としては、以下の2つの条件が挙げられる。
[条件1] 一方(主命令)発行が他方(従属命令)を発行する唯一のトリガーであること。
[条件2] 同一サイクルに実行が可能な命令群であること。
まず、条件1について説明する。
例えば下記例1に示す2命令において、命令2は右オペランドがレディであり、左オペランドr5は命令1のデスティネーションとなっている。

(命令の組の例1)
命令1 : add r5 ← r3, r2
命令2 : add r4 ← r5, R

つまり、命令1が発行されるというただ一つの条件によって命令1と命令2の依存は解消され,命令2は次サイクルに発行可能となる。したがって、この2個の命令は上記[条件1]を満たすため、グループ化可能である。なお、Rは既にレディ状態となっている任意のレジスタを表す。
なお、上記例1では、両命令は、共に加算命令であり、命令1はレジスタr3とr2の内容を加算し、その加算結果をレジスタr5に格納する命令である。また、命令2はレジスタr5の内容にRを加算し、その加算結果をレジスタr4に格納する命令である。命令2が発行可能な状態とは、レジスタr5の内容と、数値Rの内容が確定することを言う。前提からRは既に確定している。そして、レジスタr5の値は、命令1の実行が完了しないと確定しない。したがって、命令1の実行が完了すれば命令2を引き続き実行可能であることは明らかである。
同様に、以下の例2の2命令も上記と同じく条件1を満たす。

[命令の組の例2]
命令1 : add r5 ← r3, r2
命令2 : add r4 ← r5, r3

この例2の命令2の左オペランドは、命令1のデスティネーションである。この点は、上述した例1と同様である。また、命令2の右オペランドr3は命令1の左オペランドでもあり、命令1が発行されるということはr3はレディ状態であるということを意味する。つまり、上記の2命令も条件1を満たし、グループ化が可能である。
次に条件2について説明する。
以下に示す2命令はどちらも両オペランドが揃っているので共にレディ状態にある命令である。

[命令の組の例3]
命令1 : add r1 ← R,R
命令2 : add r2 ← R,R

ここでRは既に述べたように、既にレディ状態となっている任意のレジスタを表す。この2命令には直接の依存関係はないが、どちらも既にレディ状態にあるため、グループ化することが可能である。この場合、命令オーダーの若い命令が、先に発行される命令として格納される。つまり、命令1が主命令として命令キュー110のマスターキュー120に格納され、命令2がスレーブキュー122に格納される。
なお、どちらもレディ状態にある2命令を仮にグループ化しなかった場合は、性能的なペナルティが発生する場合もあると考えられる。これは、Slaveエントリーに命令が入らずスループットが低下してしまうからである。
この点に関して本実施の形態においては、どちらもレディ状態にある2命令をグループ化することによって、命令をなるべく多くグループ化し、スループットを確保することによって性能低下を防ぐ工夫をしている。すなわち、条件2を設けることによって、性能の低下を軽微なものとしている。
なお、レディ状態にある命令は命令キュー10にとどまっているサイクル数が短く次から次へと捌けていくため、クリティカルな命令であることは少ない。したがって、仮に実行が1サイクル程度遅れてもほとんど全体的な性能には影響がないと考えられる。
ディスパッチステージにおけるグループ化の対象となる命令の抽出
(1)処理の概要
十分なスループットを確保するためには上で述べた[命令の組の例1]、[命令の組の例2]、[命令の組の例3](以下、単に例1、例2、例3と呼ぶ)の3種類のグループ化対象となる命令の組をディスパッチステージにおいて発見し、なるべく多くの命令をグループ化する必要がある。そこで、まず同じサイクルにディスパッチされる命令の中からグループ化可能な命令の組を探索する。
例えば、上で述べた例では、一度に4個の命令を命令キュー110にディスパッチすることができる。そこで、4個の命令を前ステージから取り出し、その中からグループ化の対象を抽出することが考えられる。
一般に、アウト・オブ・オーダー実行を行いうるスーパースカラープロセッサは命令をディスパッチする前に、偽の依存性を解消するためのレジスタ・リネーミングを行う。その際、同じサイクルにディスパッチする命令についても各々の依存関係をチェックしリネーミングを行う必要がある。
これは簡単な組み合わせ回路で実現されており、この回路に若干の改良を加えることで上記説明した条件1又は条件2を満たす命令群の発見、すなわち上述した例1〜例3に該当するグループ化可能な命令の組の発見、を行うことができる。この見つけられた命令群をグループ化して命令キュー110に格納する。
さらに、より積極的にグループ化を行うために、ディスパッチする命令を既に命令キュー110に格納されている命令とグループ化することを考える。つまり、既にマスターキュー120に格納されている命令を主命令とする従属命令を見つけ、スレーブキュー122に格納するのである。
以下では、そのような動作の一つの例を説明する。
簡単なハードウェアで実装可能なように上述した3個の例の内、例1に当てはまるパターンのみを対象とする。つまり、例1の命令2をディスパッチする際、命令キュー110に格納されている命令1を発見することが目的となる。
プロセッサは、ディスパッチ時に物理レジスタの状態を知るためにステートテーブルにアクセスするが、このステートテーブルに改良を加えることでこの発見を実現する。一般的にレジスタは最低でも4状態あるため、レジスタの状態を示すフィールドは2ビット設けられている場合が多い。
本実施の形態では、新たにそのレジスタのプロデューサ命令の格納されている命令キュー10のエントリー番号が書き込まれるフィールドを各レジスタのステートテーブルに追加する。
このフィールドをステートテーブルのキューフィールドと呼ぶ。キューフィールドの説明図が図2に示されている。図2では、命令列
inst.A:add r5 ← r3 , r2
inst.B:add r5 ← r5 , r1
を例としてキューフィールドを設けたステートテーブル130及びそれに関連した動作の概要を説明する。
まず、図2(1)には、従来のスーパースカラープロセッサの命令キュー10と、ステートテーブル30とが示されている。ステートテーブル30は各レジスタがレディ状態か否かを表すテーブルである。図2(1)においては、命令キュー10の第3エントリーIQ3に命令であるinstAが格納されている。
一方、ステートテーブル30は、各レジスタがレディ状態か否かが示されている。図2(1)の例では、レジスタr1のみがレディ(R)状態であり、その他のレジスタは非レディ(NR)状態である。
図2(2)には、本実施の形態の命令キュー110とステートテーブル130とが示されている。
本実施の形態においても、同様に命令inst.AがIQ3のマスターキュー120に格納されている。
また、本実施の形態において特徴的なことは、ステートテーブル130にキューフィールド130aが設けられていることである。このキューフィールド130aは、そのレジスタのプロデューサ命令の位置が格納されている。図2(2)の例では、各レジスタのレディ状態は、図2(1)と同様であるが、レジスタr2、r3、r5について、そのプロデューサ命令の位置が記録されている。例えば、レジスタr2の場合は、そのプロデューサ命令が命令キュー110のIQ7に格納されていることがこのキューフィールドから読み取ることができる。
この状態で、命令inst.Bを命令キュー110に格納しよう(ディスパッチしよう)とする場合、以下のことがわかる。
まず、命令inst.Bの右側のソースレジスタであるレジスタr1は、レディ状態である。さらに、左側のソースレジスタであるr5は非レディ状態であるが、そのプロデューサ命令が命令キュー110内のIQ3に既に格納されていることが判明する。
そこで、この命令inst.Bを現在IQ3に格納されている命令を主命令とする従属命令として命令キュー110に書き込む。すなわち、IQ3のスレーブキュー122に命令inst.Bを書き込むのである。
このように、本実施の形態ではレジスタのステートテーブル130に新しいキューフィールドを加えたので、既に命令キュー110に格納されている命令ともグルーピングすることが可能となる。
新たに付け加えられたキューフィールドのビット幅はlog(命令キュー110のサイズ)である。
一般的な場合の動作
一般的な動作を示せば、現在グループ化対象の候補となっている命令をディスパッチする際には、まずステートテーブル130でその命令のソースレジスタの状態を確認する。
この確認の結果、ソースレジスタの一方がレディ状態であり、他方のレジスタに関してキューフィールドに値が書き込まれている場合は、グループ化が可能である。ここで、値が書き込まれているとは、そのレジスタのプロデューサ命令が命令キュー110に格納されていることを意味する。
したがって、現在ディスパッチの対象となっている命令は、そのキューフィールドに書き込まれているエントリー番号(上の例で言えばIQ3)に既に格納されているプロデューサ命令(上の例では、Inst.B)とグループ化可能であることが判明する。この状態は、まさに文字通り、上記(例1)の状態そのものであるので、グループ化の対象となる。
また、整数演算命令をディスパッチする際、ソースレジスタの状態を確認するだけでなく,デスティネーションレジスタのキューフィールド130にその命令が格納されるエントリー番号を書き込む。これによって、そのデスティネーションレジスタのプロデューサ命令のエントリー番号をキューフィールドに書き込むことができる。
以上のような処理によって、命令キュー110に既に格納されている命令とのグループ化も可能となる。
(2)ディスパッチの詳細
以下、これまで述べたグループ化可能な命令群の抽出処理についてフローチャートを用いて詳細に説明する。この処理を表すフローチャートが図3に示されている。このフローチャートは、グループ化制御回路113の動作を表す。
なお、本実施の形態では、グループ化の対象として演算処理命令を対象としている。このような演算処理命令は、一般に

inst rd ← rs1 、 rs2

の形で記述される場合が多い。ここで、instは、命令のニーモニックであり、addやsub等の演算処理を表す。rdは、デスティネーションレジスタであり、演算結果が格納される。rs1は、ソースレジスタ1であり、rs2はソースレジスタ2である。これらソースレジスタの値に関して演算が行われ、その結果がrdに格納される。なお、ソースレジスタ1は、単にソース1と呼ぶ場合もあり、ソースレジスタ2も単にソース2と呼ぶ場合がある。
まず、ステップS3−1においては、上述した2個のソースレジスタについて、ソースレジスタ及びデスティネーションレジスタのステートテーブルを参照する。
ステップS3−2においては、この参照の結果、ソース1がレディ状態であるか否かが検査され、レディ状態であればステップS3−5に移行する。一方、レディ状態でなければステップS3−3に移行する。
ステップS3−3においては、ソース2がレディ状態であるか否かが検査され、レディ状態であればステップS3−4に移行する。一方、レディ状態でなければステップS3−10に移行する。
ステップS3−4においては、ソース2がレディ状態で、ソース1がレディ状態ではなかったので、ソース1側のキューフィールド130にIQ番号が存在するか否かが検査される。ここでIQ番号とは命令キュー110のエントリー番号である。この結果、IQ番号が存在すればステップS3−7に処理が移行し、存在しない場合はステップS3−10に処理移行する。
ステップS3−5においては、ソース2がレディ状態であるか否かが検査され、レディ状態であればステップS3−9に移行する。一方、レディ状態でなければステップS3−6に移行する。
ステップS3−6においては、ステップS3−4とは逆に、ソース1がレディ状態で、ソース2がレディ状態ではなかったので、ソース2側のキューフィールド130にIQ番号が存在するか否かが検査される。この結果、IQ番号が存在すればステップS3−7に処理が移行し、存在しない場合はステップS3−10に処理移行する。
ステップS3−7は、一方のソースレジスタがレディ状態で、他方のソースレジスタのプロデューサ命令が命令キュー110に格納されている場合の処理を行う。この場合、今検査している命令をそのプロデューサ命令を主命令とする従属命令として命令キュー110に書き込むことが可能である。これは上述した例1に該当する。
そこで、このステップS3−7においては、上記プロデューサ命令を主命令として、そのスレーブキュー122側にこの検査対象となっている命令を書き込めるか否かが検査される。そのエントリーが空いており書き込める場合は、ステップS3−8に処理が移行し、書き込めない場合は、ステップS3−10に処理が移行する。
ステップS3−8においては、上記検査したスレーブキュー122の当該エントリーに今検査対象となっている命令を書き込む。これでディスパッチが終了する。
ステップS3−9は、双方のソースレジスタがレディ状態の場合の処理を行う。この場合は、同一サイクル内に、本命令と同様に2個のソースレジスタが既にレディ状態である命令が存在するか否かが検査される。
既に述べたように、本実施の形態では、4個の命令が前ステージから取り出され、最大、この4個の命令が命令キュー110に同時に書き込まれ得る。上で述べた「同一サイクル内」とは、同一タイミングで書き込まれるこの最大4個の命令の中という意味である。
そして、このような命令が存在する場合は、ステップS3−13に処理が移行する。一方、そのような命令が存在しない場合は、ステップS3−10に処理が移行する。
ステップS3−10は、今現在検査の対象となっている命令に対して主命令となる命令が存在しなかった場合の処理を行う。このステップS3−10においてはまず、現在検査対象となっている命令を主命令として命令キュー10に書き込めるか否か、すなわちマスターキュー側に書き込めるか否かが検査される。空きがあり書き込める場合はステップS3−11に処理が移行する。書き込めない場合は、ステップS3−14に処理が移行する
ステップS3−11においては、マスターキュー120側の空いているフリーエントリーに当該命令を書き込む。これでディスパッチが終了するが、キューフィールド130を更新するために、ステップS3−12に処理が移行する。
ステップS3−12においては、当該命令を書き込んだエントリーの番号をステートテーブル中のキューフィールド130に書き込む。書き込まれるキューフィールド130は、当該命令のデスティネーションレジスタである。
この処理によって、当該命令を主命令とする従属命令が見つかった場合に、その従属命令を当該エントリー番号のスレーブキュー122側に書き込むことができるのである。
ステップS3−13においては、既にソース1及びソース2共にレディ状態である命令を主命令とし、現在検査対象となっている命令を従属命令として、命令キュー110に書き込む。すなわち、当該主命令をマスターキュー側に書き込み、その同一エントリーのスレーブキュー側に従属命令(現在検査の対象となっている命令)を書き込む。これによってディスパッチ処理が終了する。
ステップS3−14においては、当該命令以降の命令を現在ディスパッチできない状態であるから、当該命令以降をストールさせる。
このような処理によって、グループ化制御回路113は、命令キュー110に対するディスパッチを行うことができる。
命令の実行
このようにして、マスターキュー側とスレーブキュー側に主命令及び従属命令が書き込まれ(ディスパッチされ)る。これらの命令の実行を以下説明する。
本実施の形態では、2命令を1命令としてグループ化した。この場合の動的命令スケジューリング機構の全体構成図は図4に示した通りである。グループ化される2命令はそれぞれが図4に示すマスターキュー(Master Queue)120とスレーブキュー(Slave Queue)122の同じエントリー番号のエントリーに書き込まれ、以後、1エントリーとして扱われる。マスターキュー120側に書き込まれた命令を主命令と呼び、スレーブキュー122側に書き込まれた命令を従属命令と呼ぶ。
また、マスターキュー120には対応するスレーブキュー122のエントリーに命令が格納されているかどうかを示す1ビットのフラグが設けられており、スレーブキュー122に命令を書き込む際、同時にこのフラグに1が立てられる。このフラグの処理も制御手段112が実行する。このフラグをスレーブキューバリッドフラグ124と呼ぶ。
1サイクル内に最大でマスターキュー120はディスパッチ時に2命令ずつ書き込みを行うことができる。また、スレーブキュー122も1サイクル内にディスパッチ時に2命令ずつ書き込みを行うことができる。また、1サイクル内でマスターキュー120は最大2命令を発行可能であり、同様に1サイクル内でスレーブキュー122も最大2命令を発行可能である。すなわち、マスターキュー120側に2本の書き込みポート110aが設けられており、同様にスレーブキュー122側にも2本の書き込みポート110aが設けられている。また、マスターキュー120側に2本の読み出しポート110bが設けられており、同様にスレーブキュー122側にも2本の読み出しポート110bが設けられている。
また、制御回路112は、2命令をマスターキュー120のエントリーからセレクトする回路を備えている。
また、マスターキュー120とスレーブキュー122との間にはラッチ126が設けられており、マスターキュー120内の命令がセレクトされ、発行のためにアクセスされる際、スレーブキュー122に命令が格納されていることを示すフラグ(スレーブキューバリッドフラグ124)が立っていた場合に、このラッチ126を介して次サイクルでスレーブキュー122内の命令がアクセス・発行される。
このように、提案する動的命令スケジューリング機構において、ウェイクアップ時に連想マッチを行うためのCAMロジックはマスターキュー120側にのみ備えられており、スレーブキュー122側ではCAMは備えられていない。ハードウェア量の一層の低減を図ることができ、低消費電力を実現可能である。
ALUの構成
図5には、本実施の形態の命令キュー110によって発行された命令を実行するためのALUの構成の一例を示す説明図が示されている。図5に示すように、マスター側用、スレーブ側用にそれぞれ2個づつ、ALU140a、140b、142a、142bが設けられている。このような構成によって、パイプライン的な動作を実行することができ、そのスループット(throughput)は4である。
また、命令を十分にグループ化できる場合は、一定のスループットを確保できると考えられる。
また、図5に示すように、本実施の形態においては、スレーブ側のALU142a、142bの一方のオペランド(operand)は、必ずマスター側からバイパスされて供給される。
なお、本実施の形態では4widthのスーパースケーラー(Superscalar)の例を示しているが、特に、最大4命令を一度に命令キュー110に書き込み、最大で2命令を一度に選択(select)でき、また最大4命令を一度に発行(issue)できる例を示している。
ディスパッチの自由度
なお、図4に示す本実施の形態の動的命令スケジューリング機構においては、マスターキュー120・スレーブキュー122それぞれの書き込みポート数が2であるためにディスパッチの自由度は従来の4命令同時ディスパッチ・4命令同時発行のシステムに比べると低くなっている。
例えば、マスターキューに3命令、スレーブキューに1命令を書き込みたい場合が生じる。
上述したように、本実施の形態では、4命令を取り出してこの4個の命令群毎にディスパッチを行う例を示している。この場合、例えばマスターキューに3命令、スレーブキューに1命令を書き込みたい場合が生じる可能性がある。
この場合、マスターキュー120に3命令、スレーブキュー122に1命令を「1サイクルで」書き込むことはできない。その理由は、マスターキュー120・スレーブキュー122それぞれの書き込みポート数が2であるため、マスターキュー120に対して同時に2個の命令しか書き込めないためである。また同様にスレーブキュー122に対して同時に2個の命令しか書き込めない。
このように、本実施の形態は低消費電力を実現しているがディスパッチの自由度は若干減少している。
例えば上記のようにマスターキュー120に3命令、スレーブキュー122に1命令を書き込みたい場合は、結局2サイクル用いて命令を書き込むことになる。結果的にフロントエンドの周波数を低下させた場合と同様の振る舞いを示すことになる。フロントエンドは性能的にクリティカルであることがよく知られており、結果的に本実施の形態で提案する手法では若干の性能の低下が予想される。
そこで、上記の問題を解決するために、動的命令スケジューリング機構の改良例を以下説明する。
動的命令スケジューリング機構の改良例
図4に示す動的命令スケジューリング機構が内包するディスパッチ時の自由度が低いという問題を物理的な改良によって解決する。
図6には、この改良した動的命令スケジューリング機構の構成図が示されている。この図6で特徴的な点は、物理的なキューの構成と、論理上のキューの構成を分離した点である。図4に示した例では、2本の物理的なキューがそのまま、マスターキュー120、スレーブキュー122を構成した。これに対して、図6の構成では、1個のキューの前半が論理的なマスターキューとなり、後半が論理的なスレーブキューを構成する。他方の物理的なキューは、逆に前半がスレーブキューとなり、後半がマスターキューとなる。
具体的に言えば、図6において、命令キュー210の中央に引かれている破線Xを境にしてその上部は図4で示したように左側が論理マスターキュー220、右側が論理スレーブキュー222となっている。一方、破線Xの下部については逆に左側が論理スレーブキュー222、右側が論理マスターキュー220として構成している。
物理的なキューに対する、論理マスターキュー220、論理スレーブキュー222の割り当ては、制御手段212が設定する。
図6に示すような改良によってディスパッチ時の自由度が増すことを説明する。
例えば上で述べたように、「マスターキューに3命令、スレーブキューに1命令を書き込む」という要求にも上部左側の論理マスターキュー220に2命令、下部右側の論理マスターキュー220に1命令そして上部右側の論理スレーブキュー222に1命令を書き込むことによって実現することが可能となっている。
このような形態によってディスパッチ時に命令をグループ化し、そのグループを一つの命令発行単位として扱うという本発明の原理の論理的動作がポート数などの制限によらず、実現可能となる。
性能評価について
ところで、動的命令スケジューリング機構のサイズが比較的小さい場合には十分なILPを抽出することができず、そのサイズ(命令キュー10のサイズ、エントリー数)が性能のボトルネックとなる。このような場合でも、本実施の形態(特に上記改良例)によれば、従来の動的命令スケジューリング機構と比べて高い性能を達成することが期待できる場合がある。
一方、命令キュー10のサイズ(エントリー数)が十分に大きい場合には、本実施の形態で示した機構は、従来の動的命令スケジューリング機構とほぼ同等の性能を達成することが可能である。
また、消費電力に関しては、動的命令スケジューリング機構のサイズに関わらず,本実施の形態で示した形態の動的命令スケジューリング機構を採用すれば、回路構成の複雑さが低減しているので、大幅な消費電力の削減が期待できる。
シミュレーションによる性能の評価
本実施の形態において提案した動的命令スケジューリング機構による性能と消費電力への影響を調べるため、所定のマイクロプロセッサシミュレーションツールを用いたシミュレーションにより評価を行う。なお、図4と図6に示す動的命令スケジューリング機構の評価を行うため、上記マイクロプロセッサシミュレーションツールのマイクロアーキテクチャに変更を加えている。また、消費電力の評価には、所定の消費電力評価ツールを用いている。
評価プログラムは、非特許文献13記載の「SPEC CPU2000」の整数ベンチマーク全て(ref インプットセット)及び「MediaBench」ベンチマーク群から「mpeg2 エンコード」のプログラムを用いた。「SPEC CPU2000」についてはプログラムの最初の2億命令をfast−forwardし、200万命令をシミュレーションした。
シミュレーション評価の前提
図7には、ここで行った評価におけるプロセッサの前提条件を示す。また、命令キューは上記非特許文献6に記載の「Alpha 21264」に搭載されている、整数命令とロード・ストア命令がディスパッチされるものを前提としている。したがって、先行する整数演算命令とそれに依存のあるロード命令の組み合わせもグループ化することが可能である。この評価では、命令キューのサイズを変化させ、従来の動的命令スケジューリング機構と比較する。
また、グループ化対象となる命令を検出するためのハードウェアの消費電力については無視できるものとし、評価には加えていない。
シミュレーション評価結果
(1)性能
まず、従来型の動的命令スケジューリング機構及び提案手法において、命令キューのエントリーサイズが性能に与える影響を調べた。その結果が図8のグラフに示されている。このグラフにおいて、横軸は、命令キューのエントリーサイズを表す。
また、縦軸は評価に用いた全プログラムの平均IPCを表す。図8のグラフ中、normalは従来型における結果を表す。BASICは図4の基本的な実施例における結果を示している。
また、EX−RESTRICTとEX−FULLはどちらも図6に示す改良された実施例における評価結果である。このEX−RESTRICTとEX−FULLとの違いは、次の通りである。まず、EX−RESTRICTはグループ化対象となる命令を同じサイクルにディスパッチされる命令の中のみから選択する。これに対して、EX−FULLはそれに加えて上述したグループ化可能な[命令の組の例1]に該当する命令の組も対象としている。この点が相違している。また、BASICも、EX−FULLと同様に可能な例[命令の組の例1]に当てはまる組もグループ化の対象としている。
注意点
ここで、評価結果における命令キューのエントリーサイズが従来型と提案手法で等しい場合は、従来型の命令キューは1エントリーに1命令を格納するが、本実施例では図4(図6)に示すように、1エントリーに2命令を格納する違いがあることに注意されたい。
さて、図8に示すように、全ての場合で、命令キューのエントリーサイズが増加するにつれてIPCが向上しているのがわかる。これは、命令キューの保持できる命令数が増えるため、よりILP を抽出することができるためである。エントリーサイズが64以上の場合、BASIC、EX−RESTRICT、EX−FULLのnormalに対する性能の低下率はそれぞれ11.1%、3.5%、1.1%である。また一方、EX−FULLにおいてはエントリー数(サイズ)が16、32と比較的小さめの場合、normalに対してむしろ高い性能を達成している点に注目されたい。
詳細な検討
以下、4命令同時発行可能なスーパースカラープロセッサにとって命令キューのエントリーサイズとして現実的な値である48エントリーの場合についてより詳細に検討する。
まず、図8に示すように、EX−FULLはnormalとほぼ変わらない性能を達成していることがわかる。
また、図9には、評価に用いた全プログラムにおけるIPCを示すグラフが示されている。図9のグラフにおいて、縦軸はIPCを表し、横軸はプログラムの種別を表す。また、図10には、グループ化された命令の割合を表すグラフが示されている。図10のグラフにおいて、縦軸は全命令中、グループ化された命令の割合を表し、横軸はプログラムの種別を表す。
例えば、mpeg2、gzip、craftyなどのプログラムにおいてBASICとEX−RESTRICTはnormalに対して性能が大幅に低下しているが、EX−FULLにおいてはほとんど性能低下が見られない。この理由は、図10に示すようにEX−FULLは他の2つの場合と比べて十分な命令数をグループ化し、スループットを確保できたからと考えられる。
図11に、EX−FULLにおいてグループ化された命令の内訳を表すグラフを示す。図11中、(1)(2)(3)は、それぞれ既に述べたグループ化可能な[命令の組の例1]、[命令の組の例2]、[命令の組の例3]の各命令の条件に相当する。この図11から、gzip、gcc、crafty、parser、eon、vortex、bzip2においては30%以上の命令がグループ化されたことがわかる。
また一方、mpeg2、vpr、crafty、gap、bzip2、twolfのプログラムにおいては[命令の組の例1]と[命令の組の例2]の条件に相当する命令が30%以上グループ化されている。また、[命令の組の例1]、[命令の組の例2]、[命令の組の例3]の各条件に相当する命令がグループ化された割合の全プログラムにおける平均値はそれぞれ20.6%,6.3%,32.7%である。
このように、これら3種類の条件を適用することによってさまざまな特徴を持つプログラムにおいても多くの命令をグループ化でき、十分なスループットを得ることができたと言える。
消費電力
本実施の形態の手法は、2命令をグループ化し、動的命令スケジューリング機構内において一つの発行単位として扱うことによって、命令キュー110のサイズ/ポート数を削減し、命令キュー110及びそれに関連する回路の消費電力を削減するものである。
図12はEX−FULLにおいて従来のプロセッサに対する、動的命令スケジューリング機構の消費電力削減率を示したグラフである。
それぞれの棒グラフは左からディスパッチ・ウェイクアップ・セレクト・発行の各ステージにおけるおける電力削減率を示している。すなわち、縦軸は正規化された消費電力比を表す。図12中、左側の48vs.48は命令キュー110のエントリー数48のnormalに対するエントリー数48のEX−FULLの比較を表す。右側の32vs.64はエントリー数64のnormalに対するエントリー数32のEX−FULL(1エントリーに2命令保持可能であるので、潜在的に64命令保持可能)の比較を表す。
まず、48エントリー同士の比較から、EX−FULLは従来の動的命令スケジューリング機構に対してディスパッチ・ウェイクアップ・セレクト・発行の各ステージにおいてそれぞれ、約54%、7%、52%、71%の消費電力を削減したことがわかる。
ウェイクアップステージを除く3ステージにおいて大幅な電力削減を達成している。ウェイクアップステージの消費電力は、ブロードキャストされてきたタグとの連想マッチを行うためのCAMの高さ(エントリー数)に支配されており、どちらもエントリー数が48 のためほぼ同じ結果となったと考えられる。このように、上記の評価結果から同じエントリー数同士の比較ではウェイクアップステージの消費電力はほぼ等しいことがわかる。しかしながら、動的命令スケジューリング機構の消費電力において、ウェイクアップステージの消費電力が支配的な構成の場合は、EX−FULLにおいてエントリー数を減らすことでその消費電力を削減することが可能である。
エントリー数64のnormalの性能とエントリー数32のEX−FULLを比較すると、EX−FULLが約1.5%normalを下回っている。また、そのときEX−FULLのnormalに対する消費電力削減率はディスパッチ・ウェイクアップ・セレクト・発行の各ステージにおいてそれぞれ約70%、50%、74%、80%となっており、同じエントリー数同士の比較よりもさらに大幅な消費電力削減を性能の低下率約1.5%で達成している。
変形例
今まで述べた例では、2個の命令をグループ化することについて述べ、それに合わせてマスターキュー120とスレーブキュー122とを備える命令キュー110等を説明してきた。しかしながら、本発明は、主命令を含むn(nは2以上の正の整数)個の複数の命令群を同一エントリーに格納可能な命令キューとして構成することが可能である。その場合は、命令キューはn本のキュー備えることになる。その内の1本は主命令のためのキューとなりCAMもその主命令を格納している1本のキューに対して備えられる。また、この場合、スレーブキューバリッドフラグ124は、残りのn−1本のスレーブキューに従属命令が1個でも格納されている場合に立てられるフラグである。
本実施の形態における動的命令スケジューリング機構の概念図である。 本実施の形態におけるステートテーブルの構成図である。 本実施の形態におけるディスパッチの動作を示すフローチャートである。 本実施の形態における動的命令スケジューリング機構の全体構成図である。 本実施の形態の命令キューによって発行された命令を実行するためのALUの構成の一例を示す説明図である。 改良した動的命令スケジューリング機構の構成図である。 評価に用いたプロセッサの条件を示す図である。 命令キューのエントリーサイズが性能に与える影響を表すグラフである。 評価に用いた全プログラムにおけるIPCを示すグラフである。 グループ化された命令の割合を表すグラフである。 EX−FULLにおいてグループ化された命令の内訳を表すグラフである。 EX−FULLにおいて従来のプロセッサに対する、本実施の形態の動的命令スケジューリング機構の消費電力削減率を示したグラフである。 従来の動的命令スケジューリング機構の構成図である。 従来のRISCの命令発行の様子を示すフロー図である。
符号の説明
10 命令キュー
10a 書き込みポート
10b 読み出しポート
12 制御手段
12a 制御線
30 ステートテーブル
110 命令キュー
110a 書き込みポート
110b 読み出しポート
112 制御手段
112a 制御線
113 グループ化制御回路
120 マスターキュー
122 スレーブキュー
124 スレーブキューバリッドフラグ
126 ラッチ
130 ステートテーブル
140a、140b ALU
142a、142b ALU
210 命令キュー
210a 書き込みポート
210b 読み出しポート
212 制御手段
212a 制御線
220 論理マスターキュー
222 論理スレーブキュー
224 スレーブキューバリッドフラグ
226 ラッチ

Claims (10)

  1. 実行すべき命令間の依存関係に関する情報を利用し、前記命令を動的にグルーピングし、グルーピングした命令群を命令キューの同一エントリーにディスパッチする制御回路、
    を備えたプロセッサ。
  2. 請求項1記載のプロセッサにおいて、
    前記命令キューは、マスターキューと、スレーブキューと、を備え、
    前記制御回路は、実行すべき命令間の依存関係に関する情報を利用し、前記命令をグルーピングし、グルーピングした命令群に含まれる一方の命令をマスターキューに書き込み、他方の命令をスレーブキューに格納する制御回路と、
    を備えたプロセッサ。
  3. 請求項1又は2記載のプロセッサにおいて、
    前記命令キューは複数のバンクに分割されており、
    前記制御回路は、前記グルーピングした命令群を、前記複数のバンクにそれぞれ格納することを特徴とするプロセッサ。
  4. 命令キューを含む命令パイプラインを備えたプロセッサにおいて、
    1エントリーにn個の命令を格納可能な前記命令キューと、
    実行対象であるプログラムから命令を取り出し、それらの中から、連続して実行可能なn個以下の命令群を取り出し、このn個以下の命令群を前記命令キューの1エントリーに格納する制御回路と、
    を含み、
    前記命令キューは、
    n本のキュー群と、
    前記n本のキューの内、いずれか1本のマスターキューに対して設けられたCAMと、
    を備えることを特徴とするプロセッサ。ここで、前記nは2以上の整数である。
  5. 命令キューを含む命令パイプラインを備えたプロセッサにおいて、
    1エントリーにn個の命令を格納可能な前記命令キューと、
    実行対象であるプログラムから命令を取り出し、それらの中から、連続して実行可能なn個以下の命令群を取り出し、このn個以下の命令群を前記命令キューの1エントリーに格納する制御回路と、
    を含み、
    前記命令キューは、
    n本のキュー群と、
    前記n本の各キューの1/nの部分を集めて論理的に構成した論理マスターキューと、
    前記論理マスターキューに対して設けられたCAMと、
    を備えることを特徴とするプロセッサ。ここで、前記nは2以上の整数である。
  6. 請求項4又は5記載のプロセッサにおいて、
    各レジスタのレディ状態を表すフラグと、前記各レジスタ毎にそのレジスタのプロデューサ命令が前記命令キュー中で存在する位置を記憶するキューフィールドと、を備えるステートテーブル、
    を含み、
    前記制御回路は、前記ステートテーブルに基づき、前記命令キューに格納しようとする命令のソースレジスタの一方が、レディ状態にあるという第1の条件を満たし、他方のソースレジスタがレディ状態でなくそのプロデューサ命令が前記命令キュー中に存在するという第2の条件を満たす場合は、前記プロデューサ命令が存在する同一エントリーに、前記格納しようとしている命令を格納することを特徴とするプロセッサ。
  7. 請求項4又は5記載のプロセッサにおいて、
    各レジスタのレディ状態を表すフラグと、前記各レジスタ毎にそのレジスタのプロデューサ命令が前記命令キュー中で存在する位置を記憶するキューフィールドと、を備えるステートテーブル、
    を含み、
    前記制御回路は、前記ステートテーブルに基づき、前記命令キューに格納しようとする命令のソースレジスタの一方が、レディ状態でなくそのプロデューサ命令が前記命令キュー中に存在するという第3の条件を満たし、他方のソースレジスタが前記プロデューサ命令のいずれかのソースレジスタと一致するという第4の条件を満たす場合は、前記プロデューサ命令が存在する同一エントリーに、前記格納しようとしている命令を格納することを特徴とするプロセッサ。
  8. 請求項4又は5記載のプロセッサにおいて、
    前記制御回路は、ソースレジスタが全てレディ状態にある命令群を、前記命令キュー中の同一のエントリーに格納することを特徴とするプロセッサ。
  9. 請求項4又は5記載のプロセッサにおいて、
    前記命令キューは、2個以上の命令が格納されているか否かを表すスレーブキューバリッドフラグを各エントリー毎に有し、さらに、
    前記命令キュー中の命令を、そのエントリーから取り出して実行する実行手段であって、前記マスターキュー又は前記論理マスターキューから命令を取り出した後、前記スレーブキューバリッドフラグが2個以上の命令を格納していることを表す場合には、引き続き、そのエントリーから残りの命令を取り出して実行する実行手段、
    を備えることを特徴とするプロセッサ。
  10. 請求項4又は5記載のプロセッサにおいて、
    前記命令キューがn本のバンクに分割され、消費電力が削減されていることを特徴とするプロセッサ。
JP2006158117A 2006-06-07 2006-06-07 プロセッサ Pending JP2007328484A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006158117A JP2007328484A (ja) 2006-06-07 2006-06-07 プロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006158117A JP2007328484A (ja) 2006-06-07 2006-06-07 プロセッサ

Publications (1)

Publication Number Publication Date
JP2007328484A true JP2007328484A (ja) 2007-12-20

Family

ID=38928921

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006158117A Pending JP2007328484A (ja) 2006-06-07 2006-06-07 プロセッサ

Country Status (1)

Country Link
JP (1) JP2007328484A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010182139A (ja) * 2009-02-06 2010-08-19 Mitsubishi Electric Corp 描画制御装置
US9652180B2 (en) 2013-01-28 2017-05-16 Samsung Electronics Co., Ltd. Memory device, memory system, and control method performed by the memory system
US10416888B2 (en) 2016-09-09 2019-09-17 Fujitsu Limited Parallel processing device, method for controlling parallel processing device, and controller used in parallel processing device
US11080057B2 (en) 2018-11-09 2021-08-03 Fujitsu Limited Processing device and method of controlling processing device
WO2023216629A1 (zh) * 2022-05-09 2023-11-16 上海登临科技有限公司 异构计算中多进程管理方法及计算设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10275078A (ja) * 1997-03-26 1998-10-13 Internatl Business Mach Corp <Ibm> 命令をディスパッチする方法及びシステム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10275078A (ja) * 1997-03-26 1998-10-13 Internatl Business Mach Corp <Ibm> 命令をディスパッチする方法及びシステム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010182139A (ja) * 2009-02-06 2010-08-19 Mitsubishi Electric Corp 描画制御装置
US9652180B2 (en) 2013-01-28 2017-05-16 Samsung Electronics Co., Ltd. Memory device, memory system, and control method performed by the memory system
US10416888B2 (en) 2016-09-09 2019-09-17 Fujitsu Limited Parallel processing device, method for controlling parallel processing device, and controller used in parallel processing device
US11080057B2 (en) 2018-11-09 2021-08-03 Fujitsu Limited Processing device and method of controlling processing device
WO2023216629A1 (zh) * 2022-05-09 2023-11-16 上海登临科技有限公司 异构计算中多进程管理方法及计算设备

Similar Documents

Publication Publication Date Title
TWI507980B (zh) 最佳化暫存器初始化操作
US8266413B2 (en) Processor architecture for multipass processing of instructions downstream of a stalled instruction
US10409606B2 (en) Verifying branch targets
US20130086368A1 (en) Using Register Last Use Infomation to Perform Decode-Time Computer Instruction Optimization
Hu et al. An approach for implementing efficient superscalar CISC processors
US11188341B2 (en) System, apparatus and method for symbolic store address generation for data-parallel processor
JP2007328484A (ja) プロセッサ
Mittal A survey of value prediction techniques for leveraging value locality
US20160011877A1 (en) Managing instruction order in a processor pipeline
Jeong et al. CASINO core microarchitecture: Generating out-of-order schedules using cascaded in-order scheduling windows
Tabani et al. A novel register renaming technique for out-of-order processors
Tran et al. Dynamically reducing pressure on the physical register file through simple register sharing
Barnes et al. " Flea-flicker" multipass pipelining: An alternative to the high-power out-of-order offense
WO2018217390A1 (en) Microprocessor instruction predispatch before block commit
Roth A high-bandwidth load-store unit for single-and multi-threaded processors
Sharkey et al. Efficient instruction schedulers for SMT processors
Battle et al. Flexible register management using reference counting
Sasaki et al. Energy-efficient dynamic instruction scheduling logic through instruction grouping
Shum et al. Design and microarchitecture of the IBM System z10 microprocessor
CN108845832B (zh) 一种提高处理器主频的流水线细分装置
Kumar et al. Bit-sliced datapath for energy-efficient high performance microprocessors
Citron et al. Revisiting instruction level reuse
Jothi et al. Simultaneous continual flow pipeline architecture
Yazdanpanah et al. EREER: Energy-aware register file and execution unit using exploiting redundancy in GPGPUs
Sharkey et al. Instruction packing: Toward fast and energy-efficient instruction scheduling

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090522

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110405

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110415

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110804