JP2011008732A - プライオリティ回路、演算処理装置及び演算処理方法 - Google Patents

プライオリティ回路、演算処理装置及び演算処理方法 Download PDF

Info

Publication number
JP2011008732A
JP2011008732A JP2009154374A JP2009154374A JP2011008732A JP 2011008732 A JP2011008732 A JP 2011008732A JP 2009154374 A JP2009154374 A JP 2009154374A JP 2009154374 A JP2009154374 A JP 2009154374A JP 2011008732 A JP2011008732 A JP 2011008732A
Authority
JP
Japan
Prior art keywords
instruction
exa
priority circuit
arithmetic unit
arithmetic
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
JP2009154374A
Other languages
English (en)
Inventor
Atsushi Fushijima
敦史 伏島
Yasunobu Akizuki
康伸 秋月
Toshio Yoshida
利雄 吉田
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 JP2009154374A priority Critical patent/JP2011008732A/ja
Priority to US12/801,868 priority patent/US8516223B2/en
Priority to EP10167671A priority patent/EP2270652B1/en
Publication of JP2011008732A publication Critical patent/JP2011008732A/ja
Pending 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/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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)

Abstract

【課題】演算器による演算処理を誤りなく効率化することを課題とする。
【解決手段】プライオリティ回路は、リザベーションステーションと、処理可能な演算が異なる複数の演算器とに接続され、命令デコーダおよびリザベーションステーションによる入力によって、特定の演算器でのみ実行可能な命令であることを示す実行可能フラグが立っていると判定された場合に、当該特定の演算器とは異なる演算器であって、キューに空きが存在する演算器に命令をディスパッチする。
【選択図】図1

Description

本発明は、プライオリティ回路、演算処理装置及び演算処理方法に関する。
従来、プロセッサ(CPU(Central Processing Unit)、MPU(Micro Processing Unit)等を含む)は、情報処理装置や携帯電話機などに含まれ、各種演算処理を実行する演算処理装置である。そして、最近では、プロセッサの小型化や処理能力の向上などによって、当該プロセッサの適用シーンも多様なものとなっている。
ここで、図10および図11を用いて、プロセッサの構成とプロセッサにおけるパイプラインとを説明する。図10は、プロセッサの構成例を示す図であり、図11は、プロセッサにおけるパイプラインの例を示す図である。
例えば、図10に示すように、プロセッサは、1次命令キャッシュから命令デコーダに命令を送り、命令デコーダによってデコード(D)サイクル(図11参照)でデコードされる。この命令デコーダによるデコードは、実行される命令が格納される実行キューであるRS(Reservation Station)に対するデコードであり、インオーダー(プログラム順)で実行される。
例えば、RSには、ロード/ストア命令用のRSA(Reservation Station for Address)、固定小数点演算命令(整数演算命令)用のRSE(Reservation Station for Execution)、浮動小数点演算命令用のRSF(Reservation Station for Floating point)および分岐命令用のRSBR(Reservation Station for BRanch)等がある。
そして、プロセッサは、命令デコーダによってデコードされた全ての命令の管理を行うCSE(Commit Stack Entry)に登録するとともに、プログラム順に関わらず実行可能な命令から実行を行うアウトオブオーダー実行制御を行う各RSに登録する。続いて、プロセッサは、それぞれのRSのプライオリティ(P)サイクル(図11参照)で命令実行が可能となった命令をアウトオブオーダーで選択する。
その後、プロセッサは、バッファ(B)サイクル(図11参照)でレジスタを読み出して、演算実行(X)サイクル(図11参照)で演算処理を実行する。この演算処理による実行結果は、レジスタ更新(U)サイクル(図11参照)で更新バッファに格納され、その後、命令完了の処理であるコミット処理待ちとなる。
そして、プロセッサは、CSEでの演算処理の実行完了、1次データキャッシュからのデータ転送処理の完了および分岐制御機構からの分岐判定処理の完了などの報告を受け、インオーダーによってコミット処理を行う。続いて、プロセッサは、レジスタ書き込み(W)サイクル(図11参照)で更新バッファからレジスタへの書き込み、PC(Program Counter)および次のPCであるNPC(Next Program Counter)の更新を行う。
ところで、プロセッサによる命令の実行に要するキャッシュ、パイプラインおよび演算器などにおける資源の使用効率を向上して、当該プロセッサの性能を引き出す手法として、図12に示すように、スーパースカラ(Superscalar)方式と呼ばれる技術がある。図12は、スーパースカラ方式によるアウトオブオーダー処理を説明する図である。
例えば、図12に示すように、スーパースカラ方式では、演算器を複数有している場合に、当該演算器それぞれに対するRSを有し、当該RSそれぞれへの命令の割り振りは、デコーダによって行なわれる。そして、演算器は、各RSによって最も古いエントリ、且つ実行準備完了(oldest ready)な命令プライオリティに従ってディスパッチ(発行)された演算処理を実行する。
図12では、実行する最大処理数として同時実行可能な4つの演算器を有し、アウトオブオーダーで実行する例を示しており、複数の命令のフェッチ、デコードおよびコミットは、インオーダーで行なわれる。すなわち、図12では、最も古くエントリされた且つ実行準備中(oldest ready)であるものから優先して、複数の演算器によってアウトオブオーダーで実行されたとしても、インオーダーでコミット処理が行われることとなる。
次に、図13を用いて、非対称な固定小数点演算器を複数有するRSについて説明する。図13は、非対称な固定小数点演算器を複数有するRSの例について説明する図である。なお、非対称とは、演算器Aと演算器Bとが存在する場合に、これらの演算器Aと演算器Bとで実行可能な演算が異なる場合のことを言う。非対称の例を挙げると、演算器Aでは加算と減算との演算のみが可能であり、演算器Bでは乗算と除算との演算のみが可能であるような場合である。
例えば、図13に示すように、非対称な固定小数点演算器(EX:EXecution.unit)EXAおよびEXBを有する場合には、当該EXAでのみ実行可能な命令の存在がデコーダで判別され、EXAおよびEXBそれぞれの演算器ごとに該当するRSE(RSEA或いはRSEB)に登録される。そして、RSEごとに命令のプライオリティに従ってEXA或いはEXBにディスパッチされる。
次に、図14を用いて、演算器へのディスパッチを説明する。図14は、演算器へのディスパッチの例を説明する図である。なお、図14では、最大で4つの命令を同時にデコード可能である場合を説明する。また、図14におけるEXA_ONLYは、EXAでのみ実行可能な命令を示している。
例えば、図14に示すように、最大で4つの命令を同時にデコード可能である場合には、デコードされた命令がRSEA或いはRSEBに割り振られて、当該RSEA或いはRSEBそれぞれのキューである「0〜3」に登録される。このとき、上述したように、EXAでのみ実行可能である命令は、RSEAに登録されることとなる。
そして、それぞれのキューに登録された命令は、毎サイクルで古い命令が上の番号(例えば、「4〜9」など)に移動するバブルアップをしつつ、プライオリティ回路でRSEAおよびRSEBそれぞれにおけるoldest readyな命令が選択される。続いて、選択された命令は、EXAおよびEXBそれぞれの演算器に対するディスパッチ抑止フラグである「+INH_EXA(B)_P_TGR」が立っていない場合に、当該演算器のプライオリティ選択信号のor信号である「EXA(B)_VALID」が有効になりディスパッチされる。
図14に示した構成では、バブルアップ後のプライオリティ回路側で各種フラグや条件などの情報が送受され、演算に要する実データやアドレスなどの資源は、当該プライオリティ回路の右側に図示したタグ部分での送受となる。要するに、ディスパッチ抑止フラグが立っていない場合(ディスパッチ抑止フラグが「−INH_EXA(B)_P_TGR」である場合)には、演算器EXA或いはEXBにおいて実データの演算処理が実行されることとなる。
次に、図15を用いて、RSEAのプライオリティ回路の機能ブロックを説明する。図15は、RSEAのプライオリティ回路の機能ブロックを説明する図である。
例えば、図15に示すように、プライオリティ回路は、各エントリとしての9つの命令「+P_RSEA_0」〜「+P_RSEA_9」それぞれのREADY条件を入力条件として、EXAにディスパッチするエントリを選択する信号「+P_EXA_SEL[0:9]」の1bitだけ「1」とする。
各エントリのREADY条件としては、例えば、「条件1:エントリが有効且つディスパッチ中ではない」、「条件2:ソース1レジスタが依存関係無し若しくはバイパス可能」および「条件3:ソース2レジスタが依存関係無し若しくはバイパス可能」となる。
次に、図16を用いて、RSEAのプライオリティ回路によるフローを説明する。図16は、RSEAのプライオリティ回路によるフローを説明する図である。
例えば、図16に示すように、プライオリティ回路は、READY条件から「P_RSEA_0」〜「P_RSEA_9」のREADY条件を決定する(ステップS1)。そして、プライオリティ回路は、「P_RSEA_9」のREADY条件として条件1〜条件3を満たすか否かを判定する(ステップS2)。
続いて、プライオリティ回路は、上記3つの条件を全て満たす場合に(ステップS2肯定)、演算器EXAにディスパッチする命令としてキュー「9」を選択「+P_EXA_SEL[9]=1」する(ステップS3)。ここでの3つの条件の入力におけるプライオリティ回路の詳細は、例えば、図17に示すように、条件1〜条件3を満たしていれば、「0〜9」のうち古いキューすなわち「9」から判定していくこととなる。なお、図17は、RSEAのプライオリティ回路の詳細を示す図である。
また、プライオリティ回路は、上記3つの条件を満たさない場合に(ステップS2否定)、キュー「9」を非選択「+P_EXA_SEL[9]=0」とする(ステップS4)。そして、プライオリティ回路は、「P_RSEA_8」のREADY条件として条件1〜条件3を満たすか否かを判定する(ステップS5)。続いて、プライオリティ回路は、上記3つの条件を全て満たす場合に(ステップS5肯定)、演算器EXAにディスパッチする命令としてキュー「8」を選択「+P_EXA_SEL[8]=1」する(ステップS6)。
また、プライオリティ回路は、上記3つの条件を満たさない場合に(ステップS5否定)、キュー「8」を非選択「+P_EXA_SEL[8]=0」とする(ステップS7)。そして、プライオリティ回路は、「P_RSEA_7」のREADY条件として条件1〜条件3を満たすか否かを判定する(ステップS8)。
続いて、プライオリティ回路は、上記3つの条件を全て満たす場合に(ステップS8肯定)、演算器EXAにディスパッチする命令としてキュー「7」を選択「+P_EXA_SEL[7]=1」する(ステップS9)。なお、プライオリティ回路は、上記3つの条件を満たさない場合に(ステップS8否定)、キュー「0〜6」についても同様に上記処理を実施する。
上述のフローにおけるRSEAのプライオリティ回路では、例えば、図18に示すように、「+P_RSEA_9_READY」であれば「9」が選択され、一方、「9」が選択されていない「−P_RSEA_9_READY」状態において、「+P_RSEA_8_READY」であれば「8」が選択される。
また、「−P_RSEA_9_READY」、「−P_RSEA_8_READY」および「+P_RSEA_7_READY」である場合には、「7」が選択される。なお、図18は、RSEAのプライオリティ回路の詳細を示す図である。また、RSEBについてもRSEAと同様なプライオリティ回路によってディスパッチされる。
但し、上記のように、固定小数点演算器ごとにRSEを有する場合には、回路での実装面積が大きくなる。また、HPC(High Performance Computing)向けなどの固定小数点演算より負荷が高くなる浮動小数点演算のプログラムを実行することを目的とするプロセッサでは、RSEのエントリが全て埋まるようなことが少ないため、より小さな実装で効率的にRSE資源を利用することが好ましい。
そこで、近年では、図19に示すように、固定小数点演算器ごとにRSEを有するのではなく、実装面積をより小さくするためにRSEを共通化して、1つのRSEに命令を登録させる技術がある。なお、図19は、RSEを共通化する例を説明する図である。
特開2000−105699号公報
しかしながら、上述したRSEを共通化する技術では、所定の演算器でのみ実行可能な命令にかかる演算に誤りが発生するという課題がある。具体的には、上述したRSEを共通化する技術では、演算器ごとに異なる実行可能な命令の割り振りについて考慮されていないため、演算器で実行できない命令がディスパッチされることにより、所定の演算器でのみ実行可能な命令にかかる演算に誤りが発生する。
そこで、本願に開示する技術は、上記に鑑みてなされたものであって、演算器による演算処理を誤りなく効率化することが可能であるプライオリティ回路、演算処理装置及び演算処理方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本願に開示するプライオリティ回路は、リザベーションステーションと、処理可能な演算が異なる複数の演算器とに接続されたプライオリティ回路であって、特定の演算器でのみ実行可能な命令であることを示す実行可能フラグに基づいて、当該特定の演算器とは異なる演算器であって、キューに空きが存在する演算器に命令をディスパッチするディスパッチ手段を有する。
本願に開示するプライオリティ回路、演算処理装置及び演算処理方法の一つの様態によれば、演算器による演算処理を誤りなく効率化するという効果を奏する。
図1は、実施例1に係るRSEへの登録とディスパッチとの例を説明する図である。 図2−1は、RSEBのキューが空である場合の演算器へのディスパッチの例を説明する図である。 図2−2は、ディスパッチ抑止フラグが立っている場合の演算器へのディスパッチの例を説明する図である。 図2−3は、命令1と命令2とに依存関係がある場合の演算器へのディスパッチの例を説明する図である。 図2−4は、命令1、命令2および命令3に依存関係がある場合の演算器へのディスパッチの例を説明する図である。 図2−5は、命令1および命令2がEXA_ONLYである場合の演算器へのディスパッチの例を説明する図である。 図3は、実施例1に係るRSEのプライオリティ回路の機能ブロックを説明する図である。 図4は、プライオリティ回路によるEXA_SELに該当するフローを説明する図である。 図5は、プライオリティ回路によるEXB_SEL[9]に該当するフローを説明する図である。 図6は、プライオリティ回路によるEXB_SEL[8]に該当するフローを説明する図である。 図7は、RSEのプライオリティ回路の詳細を示す図である。 図8は、RSEのプライオリティ回路のEXA選択論理部の例を示す図である。 図9は、RSEのプライオリティ回路のEXB選択論理部の例を示す図である。 図10は、プロセッサの構成例を示す図である。 図11は、プロセッサにおけるパイプラインの例を示す図である。 図12は、スーパースカラ方式によるアウトオブオーダー処理を説明する図である。 図13は、非対称な固定小数点演算器を複数有するRSの例について説明する図である。 図14は、演算器へのディスパッチの例を説明する図である。 図15は、RSEAのプライオリティ回路の機能ブロックを説明する図である。 図16は、RSEAのプライオリティ回路によるフローを説明する図である。 図17は、RSEAのプライオリティ回路の詳細を示す図である。 図18は、RSEAのプライオリティ回路の詳細を示す図である。 図19は、RSEを共通化する例を説明する図である。
以下に添付図面を参照して、本願に開示するプライオリティ回路、演算処理装置及び演算処理方法の実施例を説明する。なお、以下の実施例により本発明が限定されるものではない。
最初に、図1を用いて、実施例1に係るRSEへの登録とディスパッチとについて説明する。図1は、実施例1に係るRSEへの登録とディスパッチとの例を説明する図である。なお、以下では、最大で4つの命令を同時にインオーダーでデコード可能な場合を説明する。
例えば、図1に示すように、命令デコーダ100は、0〜4つの命令を同時にインオーダーでデコードする場合に、EXAでのみ実行可能な命令を示すフラグ「EXA_ONLY」をRSEのエントリタグとして登録する。そして、共通化されたRSE110は、バブルアップをするとともに、登録されたフラグ「EXA_ONLY」情報をプライオリティ回路120に入力する。なお、RSE110は、EXA130とEXB140とで実行される演算にかかる該当する実データ「0〜9」をEXA130とEXB140とに入力する。
一方、プライオリティ回路120では、フラグ「EXA_ONLY」情報を判別して、ディスパッチのプライオリティ論理において当該フラグ「EXA_ONLY」が立っているエントリについて、EXB140にディスパッチしないようにする。
また、プライオリティ回路120は、EXA130を利用する命令が実行中のために当該EXA130へのディスパッチを不可とすることを示すディスパッチ抑止フラグ「+INH_EXA_P_TGR」が立っている場合に、「EXA_ONLY」ではないことを条件にして、oldestな命令をEXB140にディスパッチする。そして、EXA130およびEXB140は、このようにして振り分けられた命令にかかる演算処理を実行する。
ここで、図2−1〜図2−5を用いて、RSEの空き、ディスパッチ抑止フラグ、各命令間での依存関係およびフラグEXA_ONLYそれぞれの条件における演算器へのディスパッチを説明する。
まず、図2−1を用いて、RSEBのキューが空である場合の演算器へのディスパッチについて説明する。図2−1は、RSEBのキューが空である場合の演算器へのディスパッチの例を説明する図である。
例えば、図2−1に示すように、RSEAのキュー9〜7に命令1〜命令3が振り分けられており、且つRSEBのキュー9〜7が空である状態において、従来技術のようにRSEを二つに分けている場合には、EXBが空いているにもかかわらず命令2を当該EXBにディスパッチすることができない。そこで、RSEを共通化した本願では、命令2にフラグEXA_ONLYが立っていない場合に、命令2をEXBにディスパッチする。
次に、図2−2を用いて、ディスパッチ抑止フラグが立っている場合の演算器へのディスパッチについて説明する。図2−2は、ディスパッチ抑止フラグが立っている場合の演算器へのディスパッチの例を説明する図である。
例えば、図2−2に示すように、ディスパッチ抑止フラグ「INH_EXA_P_TGR=1」において、RSEAのキュー9に命令1が振り分けられており、且つRSEBのキュー9〜7が空である状態において、従来技術のようにRSEを二つに分けている場合には、命令1をRSEAから発行することができない。そこで、RSEを共通化した本願では、命令1にフラグEXA_ONLYが立っていない場合に、命令1をEXBにディスパッチする。
次に、図2−3を用いて、命令1と命令2とに依存関係がある場合の演算器へのディスパッチについて説明する。図2−3は、命令1と命令2とに依存関係がある場合の演算器へのディスパッチの例を説明する図である。
例えば、図2−3に示すように、命令1の演算結果が命令2と依存関係があり、RSEAのキュー9〜7に命令1、3および4が振り分けられており、且つRSEBのキュー9に命令2が振り分けられている状態において、従来技術のようにRSEを二つに分けている場合には、命令3をRSEBから発行することができない。そこで、RSEを共通化した本願では、命令3および命令4にフラグEXA_ONLYが立っていない場合に、命令2をEXAにディスパッチするとともに、命令3および命令4をEXBにディスパッチする。
次に、図2−4を用いて、命令1、命令2および命令3に依存関係がある場合の演算器へのディスパッチについて説明する。図2−4は、命令1、命令2および命令3に依存関係がある場合の演算器へのディスパッチの例を説明する図である。
例えば、図2−4に示すように、命令1の演算結果が命令2および命令3の両方に依存関係があり、RSEAのキュー9に命令1が振り分けられており、且つRSEBのキュー9〜8に命令2および命令3が割り振られている状態において、従来技術のようにRSEを二つに分けている場合には、命令1の次のサイクルで命令2を、当該命令2の次のサイクルで命令3をディスパッチすることになる。そこで、RSEを共通化した本願では、命令2および命令3にフラグEXA_ONLYが立っていない場合に、命令1がディスパッチされた次のサイクルで命令2をEXAに、命令3をEXBに同時にディスパッチする。
次に、図2−5を用いて、命令1および命令2がEXA_ONLYである場合の演算器へのディスパッチについて説明する。図2−5は、命令1および命令2がEXA_ONLYである場合の演算器へのディスパッチの例を説明する図である。
例えば、図2−5に示すように、命令1および命令2がEXA_ONLYであり、RSEAのキュー9〜7それぞれに命令1〜3が割り振られており、且つRSEBのキューが空である状態において、従来技術のようにRSEを二つに分けている場合には、EXA_ONLYである命令1および命令2が詰まっていることにより、後段でのEXA_ONLYではない命令3がEXBにディスパッチされることはない。そこで、RSEを共通化した本願では、命令3にフラグEXA_ONLYが立っていない場合に、当該命令3をEXBにディスパッチする。
要するに、実施例1に係るプライオリティ回路は、RSEを共通化していることによって、演算器にディスパッチする命令それぞれの依存関係、フラグEXA_ONLYまたはディスパッチ抑止フラグに基づいて、演算器にディスパッチすることとなる。換言すると、プライオリティ回路は、各命令の依存関係や各種フラグなどに基づいて演算器にディスパッチするので、演算処理での誤りがなく、演算処理の効率化をはかることができる。
次に、図3を用いて、RSEのプライオリティ回路の機能ブロックを説明する。図3は、実施例1に係るRSEのプライオリティ回路の機能ブロックを説明する図である。
例えば、図3に示すように、プライオリティ回路は、各エントリとしての9つの命令「+P_RSE_0」〜「+P_RSE_9」それぞれのREADY条件と、EXA_ONLYであるか否かのフラグ「+P_RSE_0_EXA_ONLY」〜「+P_RSE_9_EXA_ONLY」と、ディスパッチ抑止フラグ「+INH_EXA_P_TGR」とを入力として、EXA或いはEXBにディスパッチするエントリを選択する信号「+P_EXA_SEL[0:9]」或いは「+P_EXB_SEL[0:9]」の1bitを「1」とする。
要するに、図3におけるプライオリティ回路は、従来技術に係るプライオリティの条件に、EXAでのみ実行可能な命令であることを示すフラグと、複数サイクルにわたってEXAを使用する命令が実行中であるために当該EXAにディスパッチすることができないディスパッチ抑止フラグとの条件を加えたものである。また、プライオリティ回路による出力としては、EXA或いはEXBにディスパッチするエントリを選択する信号となる。なお、各エントリのREADY条件は、従来技術と同様であるためその説明を省略する。
次に、図4を用いて、プライオリティ回路によるEXA_SELに該当するフローを説明する。図4は、プライオリティ回路によるEXA_SELに該当するフローを説明する図である。
例えば、図4に示すように、プライオリティ回路は、RSEのREADY条件から「P_EXA_0」〜「P_EXA_9」のREADY条件を決定する(ステップS101)。そして、プライオリティ回路は、「P_EXA_9」のREADY条件として条件1〜条件3を満たすか否かを判定する(ステップS102)。
続いて、プライオリティ回路は、上記3つの条件を全て満たす場合に(ステップS102肯定)、演算器EXAにディスパッチする命令としてキュー「9」を選択「+P_EXA_SEL[9]=1」する(ステップS103)。
また、プライオリティ回路は、上記3つの条件を満たさない場合に(ステップS102否定)、キュー「9」を非選択「+P_EXA_SEL[9]=0」とする(ステップS104)。そして、プライオリティ回路は、「P_EXA_8」のREADY条件として条件1〜条件3を満たすか否かを判定する(ステップS105)。続いて、プライオリティ回路は、上記3つの条件を全て満たす場合に(ステップS105肯定)、演算器EXAにディスパッチする命令としてキュー「8」を選択「+P_EXA_SEL[8]=1」する(ステップS106)。
また、プライオリティ回路は、上記3つの条件を満たさない場合に(ステップS105否定)、キュー「8」を非選択「+P_EXA_SEL[8]=0」とする(ステップS107)。そして、プライオリティ回路は、「P_EXA_7」のREADY条件として条件1〜条件3を満たすか否かを判定する(ステップS108)。
続いて、プライオリティ回路は、上記3つの条件を全て満たす場合に(ステップS108肯定)、演算器EXAにディスパッチする命令としてキュー「7」を選択「+P_EXA_SEL[7]=1」する(ステップS109)。なお、プライオリティ回路は、上記3つの条件を満たさない場合に(ステップS108否定)、キュー「0〜6」についても同様に上記処理を実施する。
次に、図5を用いて、プライオリティ回路によるEXB_SEL[9]に該当するフローを説明する。図5は、プライオリティ回路によるEXB_SEL[9]に該当するフローを説明する図である。
例えば、図5に示すように、プライオリティ回路は、RSEのREADY条件から「P_EXA_9」のREADY条件を決定する(ステップS201)。そして、プライオリティ回路は、「P_EXA_9」のREADY条件として条件1〜条件3を満たすか否かを判定する(ステップS202)。
続いて、プライオリティ回路は、上記3つの条件を全て満たす場合に(ステップS202肯定)、フラグEXA_ONLYが立っているか否かを判定する(ステップS203)。その後、プライオリティ回路は、フラグEXA_ONLYが立っていない、すなわち「+P_RSE_9_EXA_ONLY=1」でない場合に(ステップS203否定)、ディスパッチ抑止フラグが立っているか否かを判定する(ステップS204)。
そして、プライオリティ回路は、ディスパッチ抑止フラグが立っている、すなわち「+INH_EXA_P_TGR=1」である場合に(ステップS204肯定)、演算器EXBにディスパッチする命令としてキュー9を選択「+P_EXB_SEL[9]=1」する(ステップS205)。
なお、プライオリティ回路は、3つの条件を満たさない場合(ステップS202否定)、「+P_RSE_9_EXA_ONLY=1」である場合(ステップS203肯定)、或いは「+INH_EXA_P_TGR=1」でない場合(ステップS204否定)に、演算器EXBにディスパッチしないことを選択「+P_EXB_SEL[9]=0」する(ステップS206)。
次に、図6を用いて、プライオリティ回路によるEXB_SEL[8]に該当するフローを説明する。図6は、プライオリティ回路によるEXB_SEL[8]に該当するフローを説明する図である。
例えば、図6に示すように、プライオリティ回路は、RSEのREADY条件から「P_EXA_9」および「P_EXA_8」のREADY条件を決定する(ステップS301)。そして、プライオリティ回路は、「P_EXA_8」のREADY条件として条件1〜条件3を満たすか否かを判定する(ステップS302)。
続いて、プライオリティ回路は、上記3つの条件を全て満たす場合に(ステップS302肯定)、フラグEXA_ONLYが立っているか否かを判定する(ステップS303)。その後、プライオリティ回路は、フラグEXA_ONLYが立っていない、すなわち「+P_RSE_8_EXA_ONLY=1」でない場合に(ステップS303否定)、ディスパッチ抑止フラグが立っているか否かを判定する(ステップS304)。
そして、プライオリティ回路は、ディスパッチ抑止フラグが立っていない、すなわち「+INH_EXA_P_TGR=1」でない場合に(ステップS304否定)、「P_EXA_9」のREADY条件として条件1〜条件3を満たすか否かを判定する(ステップS305)。
続いて、プライオリティ回路は、3つの条件を全て満たす場合、すなわち「+P_EXA_9_READY=1」である場合に(ステップS305肯定)、演算器EXBにディスパッチする命令としてキュー8を選択「+P_EXB_SEL[8]=1」する(ステップS306)。
また、プライオリティ回路は、ディスパッチ抑止フラグが立っている、すなわち「+INH_EXA_P_TGR=1」である場合に(ステップS304肯定)、「P_EXA_9」のREADY条件として条件1〜条件3を満たすか否かを判定する(ステップS307)。そして、プライオリティ回路は、3つの条件を全て満たす場合、すなわち「+P_EXA_9_READY=1」である場合に(ステップS307肯定)、演算器EXBにキュー8をディスパッチしないことを選択「+P_EXB_SEL[8]=0」する(ステップS309)。なお、プライオリティ回路は、ステップS307において、3つの条件を満たさない場合、すなわち「+P_EXA_9_READY=1」でない場合に(ステップS307否定)、演算器EXBにディスパッチする命令としてキュー8を選択「+P_EXB_SEL[8]=1」する(ステップS306)。
また、プライオリティ回路は、ステップS302において3つの条件を満たさない場合(ステップS302否定)、ステップS303において「+P_RSE_8_EXA_ONLY=1」である場合(ステップS303肯定)、或いはステップS305において「+P_EXA_9_READY=1」でない場合(ステップS305否定)に、演算器EXBにキュー8をディスパッチしないことを選択「+P_EXB_SEL[8]=0」する(ステップS308)。
要するに、「+P_EXB_SEL[8]」以降のエントリは、前段の全てのエントリのREADY条件によって選択されることとなる。なお、図4〜6におけるEXAおよびEXBにかかるフローは、同時に実行されるものである。
また、3つの条件の入力におけるプライオリティ回路の詳細では、例えば、図7に示すように、EXAそれぞれのエントリのREADY状態を決定する論理に、「−P_RSE_0(0〜9)_EXA_ONLY」を含めることによって、EXAでのみ実行可能な命令をEXBにディスパッチしないようにする。なお、図7は、RSEのプライオリティ回路の詳細を示す図である。
次に、図8を用いて、RSEのプライオリティ回路のEXA選択論理部を説明する。図8は、RSEのプライオリティ回路のEXA選択論理部の例を示す図である。
例えば、図8に示すように、上述のフローにおけるRSEのプライオリティ回路のEXA選択論理部では、「+P_EXA_9_READY」であれば「9」が選択され、「9」が選択されていない「−P_EXA_9_READY」状態において、「+P_EXA_8_READY」であれば「8」が選択される。
また、例えば、「−P_EXA_9_READY」、「−P_EXA_8_READY」および「+P_EXA_7_READY」である場合には、「7」が選択される。このようにして、EXA選択論理部では、「−P_EXA_9_READY」〜「−P_EXA_1_READY」である場合に、「+P_EXA_0_READY」であれば「0」が選択されることとなる。
次に、図9を用いて、RSEのプライオリティ回路のEXB選択論理部を説明する。図9は、RSEのプライオリティ回路のEXB選択論理部の例を示す図である。
例えば、図9に示すように、上述のフローにおけるRSEのプライオリティ回路のEXB選択論理部では、EXAおよびEXBのREADY信号に基づいて、second oldest readyのエントリをEXBにディスパッチする。但し、ディスパッチ抑止フラグ「+INH_EXA_P_TGR」が「1」である場合には、oldest readyのエントリをEXBにディスパッチする。そして、このとき、EXAにもoldest readyなエントリがディスパッチされているものの、「EXA_VALID」が「−INH_EXA_P_TGR」で「0」になるため、結果的にEXAでの演算が抑止され、実行されることはない。
[実施例1による効果]
上述したように、プライオリティ回路は、命令デコーダによって演算器Aにのみ実行可能である命令を示すEXA_ONLYが一つのリザベーションステーションに入力され、リザベーションステーションによる当該EXA_ONLYの入力によって、EXA_ONLYが立っていると判定された場合に、演算器Bのキューが空であれば当該演算器Bに命令をディスパッチするので、演算器による演算処理を誤りなく効率化することができる。
また、プライオリティ回路は、最も古い命令が演算器Aで複数サイクルでの演算実行中である場合に、ディスパッチ抑止フラグが立っている、且つ演算器Bのキューが空であれば当該演算器Bに命令をディスパッチするので、演算器による演算処理の効率化をより高めることができる。
さて、これまで本願に開示するプライオリティ回路の実施例について説明したが、上述した実施例以外にも種々の異なる形態にて実施されてよいものである。そこで、(1)演算処理装置、(2)浮動小数点演算器、(3)プライオリティ回路の構成、において異なる実施例を説明する。
(1)演算処理装置
上記実施例1では、主にプライオリティ回路への好適な実施例について説明したが、当該プライオリティ回路を含んだ演算処理装置(プロセッサ)として実現することもできる。例えば、プライオリティ回路を図10に示したプロセッサに適用すれば良い。
(2)浮動小数点演算器
また、上記実施例1では、演算器について、固定小数点演算器に適用する場合について説明したが、浮動小数点演算器に対して適用することとしても良い。
(3)プライオリティ回路の構成
また、上記文書中や図面中などで示した処理手順、制御手順、具体的名称、各種のデータやパラメタなどを含む情報(例えば、「ディスパッチ抑止フラグ」の具体的名称など)については、特記する場合を除いて任意に変更することができる。
また、図示した各回路の各構成要素は、機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各回路の分散・統合の具体的形態は、図示のものに限られず、その全部または一部を各種の負担や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合することができる。
100 命令デコーダ
110 RSE
120 プライオリティ回路
130 EXA
140 EXB

Claims (6)

  1. リザベーションステーションと、処理可能な演算が異なる複数の演算器とに接続されたプライオリティ回路であって、
    特定の演算器でのみ実行可能な命令であることを示す実行可能フラグに基づいて、当該特定の演算器とは異なる演算器であって、キューに空きが存在する演算器に命令をディスパッチするディスパッチ手段を有することを特徴とするプライオリティ回路。
  2. 前記ディスパッチ手段は、さらに、特定の演算器へのディスパッチが不可であることを示すディスパッチ抑止フラグに基づいて、当該特定の演算器とは異なる演算器であって、キューに空きが存在する演算器に命令をディスパッチすることを特徴とする請求項1に記載のプライオリティ回路。
  3. リザベーションステーションと、
    処理可能な演算が異なる複数の演算器と、
    特定の演算器でのみ実行可能な命令であることを示す実行可能フラグを前記リザベーションステーションに入力する命令デコーダと、
    前記リザベーションステーションによる前記実行可能フラグの入力に基づいて、前記特定の演算器とは異なる演算器であって、キューに空きが存在する演算器に命令をディスパッチするプライオリティ回路と、
    を有することを特徴とする演算処理装置。
  4. 前記プライオリティ回路は、さらに、特定の演算器へのディスパッチが不可であることを示すディスパッチ抑止フラグに基づいて、当該特定の演算器とは異なる演算器であって、キューに空きがある演算器にディスパッチすることを特徴とする請求項3に記載の演算処理装置。
  5. リザベーションステーションと、処理可能な演算が異なる複数の演算器とを有する演算処理装置の演算処理方法であって、
    前記演算処理装置が有する命令デコーダが、特定の演算器でのみ実行可能な命令であることを示す実行可能フラグを前記リザベーションステーションに入力するステップと、
    前記演算処理装置が有するプライオリティ回路が、前記リザベーションステーションによる前記実行可能フラグの入力に基づいて、前記特定の演算器とは異なる演算器であって、キューに空きが存在する演算器に命令をディスパッチするステップと、
    を含んだことを特徴とする演算処理方法。
  6. 前記プライオリティ回路は、さらに、特定の演算器へのディスパッチが不可であることを示すディスパッチ抑止フラグに基づいて、当該特定の演算器とは異なる演算器であって、キューに空きがある演算器にディスパッチすることを特徴とする請求項5に記載の演算処理方法。
JP2009154374A 2009-06-29 2009-06-29 プライオリティ回路、演算処理装置及び演算処理方法 Pending JP2011008732A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009154374A JP2011008732A (ja) 2009-06-29 2009-06-29 プライオリティ回路、演算処理装置及び演算処理方法
US12/801,868 US8516223B2 (en) 2009-06-29 2010-06-29 Dispatching instruction from reservation station to vacant instruction queue of alternate arithmetic unit
EP10167671A EP2270652B1 (en) 2009-06-29 2010-06-29 Priority circuit for dispatching instructions in a superscalar processor having a shared reservation station and processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009154374A JP2011008732A (ja) 2009-06-29 2009-06-29 プライオリティ回路、演算処理装置及び演算処理方法

Publications (1)

Publication Number Publication Date
JP2011008732A true JP2011008732A (ja) 2011-01-13

Family

ID=42668277

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009154374A Pending JP2011008732A (ja) 2009-06-29 2009-06-29 プライオリティ回路、演算処理装置及び演算処理方法

Country Status (3)

Country Link
US (1) US8516223B2 (ja)
EP (1) EP2270652B1 (ja)
JP (1) JP2011008732A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014002555A (ja) * 2012-06-18 2014-01-09 Fujitsu Ltd プロセッサ
US9952872B2 (en) 2015-06-02 2018-04-24 Fujitsu Limited Arithmetic processing device and processing method of arithmetic processing device

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013206095A (ja) * 2012-03-28 2013-10-07 Fujitsu Ltd データ処理装置及びデータ処理装置の制御方法
US9317294B2 (en) * 2012-12-06 2016-04-19 International Business Machines Corporation Concurrent multiple instruction issue of non-pipelined instructions using non-pipelined operation resources in another processing core
CN104657114B (zh) * 2015-03-03 2019-09-06 上海兆芯集成电路有限公司 并行化的多分派系统和用于排序队列仲裁的方法
US12039329B2 (en) * 2020-12-24 2024-07-16 Intel Corporation Methods, systems, and apparatuses to optimize partial flag updating instructions via dynamic two-pass execution in a processor

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000181705A (ja) * 1998-12-17 2000-06-30 Fujitsu Ltd 命令制御装置
JP2002055814A (ja) * 2000-08-08 2002-02-20 Fujitsu Ltd 適切な発行先に命令を発行する命令発行装置
JP2003280896A (ja) * 2002-03-19 2003-10-02 Toshiba Corp 命令発行装置及び命令発行方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2263565B (en) * 1992-01-23 1995-08-30 Intel Corp Microprocessor with apparatus for parallel execution of instructions
US5592679A (en) * 1994-11-14 1997-01-07 Sun Microsystems, Inc. Apparatus and method for distributed control in a processor architecture
US5809323A (en) * 1995-09-19 1998-09-15 International Business Machines Corporation Method and apparatus for executing fixed-point instructions within idle execution units of a superscalar processor
US6105128A (en) * 1998-04-30 2000-08-15 Intel Corporation Method and apparatus for dispatching instructions to execution units in waves
US6249855B1 (en) * 1998-06-02 2001-06-19 Compaq Computer Corporation Arbiter system for central processing unit having dual dominoed encoders for four instruction issue per machine cycle
US6742111B2 (en) * 1998-08-31 2004-05-25 Stmicroelectronics, Inc. Reservation stations to increase instruction level parallelism
WO2006114874A1 (ja) * 2005-04-21 2006-11-02 Fujitsu Limited プロセッサ装置
US7707390B2 (en) * 2007-04-25 2010-04-27 Arm Limited Instruction issue control within a multi-threaded in-order superscalar processor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000181705A (ja) * 1998-12-17 2000-06-30 Fujitsu Ltd 命令制御装置
JP2002055814A (ja) * 2000-08-08 2002-02-20 Fujitsu Ltd 適切な発行先に命令を発行する命令発行装置
JP2003280896A (ja) * 2002-03-19 2003-10-02 Toshiba Corp 命令発行装置及び命令発行方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSND200300525009; 中森章: 'コンピュータアーキテクチャ その直感的アプローチ4 並列処理の基本,スーパスカラ' Oh!X 2001春号 , 20010301, Pages:256-275, ソフトバンクパブリッシング株式会社 *
CSNG200300006062; 佐藤寿倫,有田五次郎: '過渡故障に対するマイクロプロセッサ向けフォールトトレランス技術の提案' 並列処理シンポジウム2001 , 20010605, Pages:335-342, 社団法人情報処理学会 *
JPN6013042251; 中森章: 'コンピュータアーキテクチャ その直感的アプローチ4 並列処理の基本,スーパスカラ' Oh!X 2001春号 , 20010301, Pages:256-275, ソフトバンクパブリッシング株式会社 *
JPN6013042252; 佐藤寿倫,有田五次郎: '過渡故障に対するマイクロプロセッサ向けフォールトトレランス技術の提案' 並列処理シンポジウム2001 , 20010605, Pages:335-342, 社団法人情報処理学会 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014002555A (ja) * 2012-06-18 2014-01-09 Fujitsu Ltd プロセッサ
US9952872B2 (en) 2015-06-02 2018-04-24 Fujitsu Limited Arithmetic processing device and processing method of arithmetic processing device

Also Published As

Publication number Publication date
EP2270652A1 (en) 2011-01-05
US20100332802A1 (en) 2010-12-30
EP2270652B1 (en) 2013-03-27
US8516223B2 (en) 2013-08-20

Similar Documents

Publication Publication Date Title
US20170083313A1 (en) CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs)
US6968444B1 (en) Microprocessor employing a fixed position dispatch unit
US9946549B2 (en) Register renaming in block-based instruction set architecture
US7263604B2 (en) Heterogeneous parallel multithread processor (HPMT) with local context memory sets for respective processor type groups and global context memory
JP2011008732A (ja) プライオリティ回路、演算処理装置及び演算処理方法
US20160196141A1 (en) Apparatus and method for configuring sets of interrupts
US10846092B2 (en) Execution of micro-operations
CN112540796B (zh) 一种指令处理装置、处理器及其处理方法
CN107209664B (zh) 用于扇出生产指令的结果的方法和设备及计算机可读媒体
TW201528133A (zh) 於多核心處理器中並行功能之高效率硬體分派及相關之處理器系統、方法及電腦可讀媒體
US20210089306A1 (en) Instruction processing method and apparatus
TWI752354B (zh) 提供預測性指令分派節流以防止在基於亂序處理器(oop)的設備中的資源溢出
CN112559048B (zh) 一种指令处理装置、处理器及其处理方法
US11080063B2 (en) Processing device and method of controlling processing device
EP2856304B1 (en) Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media
JP2020091751A (ja) 演算処理装置および演算処理装置の制御方法
US20220197696A1 (en) Condensed command packet for high throughput and low overhead kernel launch
CN112540789B (zh) 一种指令处理装置、处理器及其处理方法
JP5093237B2 (ja) 命令処理装置
US20070043930A1 (en) Performance of a data processing apparatus
US20070005941A1 (en) High performance architecture for a writeback stage
EP1622005B1 (en) Branch instruction control apparatus and control method with a branch reservation station
JP6307975B2 (ja) 演算処理装置及び演算処理装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130812

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130827

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131025

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140210

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140217

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20140314