JP2008242647A - プロセッサ - Google Patents

プロセッサ Download PDF

Info

Publication number
JP2008242647A
JP2008242647A JP2007080000A JP2007080000A JP2008242647A JP 2008242647 A JP2008242647 A JP 2008242647A JP 2007080000 A JP2007080000 A JP 2007080000A JP 2007080000 A JP2007080000 A JP 2007080000A JP 2008242647 A JP2008242647 A JP 2008242647A
Authority
JP
Japan
Prior art keywords
instruction
type
arithmetic unit
processor
data
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.)
Granted
Application number
JP2007080000A
Other languages
English (en)
Other versions
JP5154119B2 (ja
Inventor
Kazunori Asanaka
和典 浅中
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.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
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 Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Priority to JP2007080000A priority Critical patent/JP5154119B2/ja
Priority to US12/529,184 priority patent/US20100095091A1/en
Priority to EP08718099A priority patent/EP2140348A2/en
Priority to PCT/EP2008/053384 priority patent/WO2008116830A2/en
Publication of JP2008242647A publication Critical patent/JP2008242647A/ja
Application granted granted Critical
Publication of JP5154119B2 publication Critical patent/JP5154119B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】回路構成の複雑化を抑制しつつ、プロセッサの処理速度を高速化する。
【解決手段】演算対象のデータの性質に基づいて分類された、第1タイプの命令及び第2タイプの命令を含むプログラムから命令を順次取得してデコードするデコーダと、前記第1タイプの命令を前記デコーダから順次受信して実行する第1演算ユニットと、前記第2タイプの命令のオペランドに含まれる、前記第1演算ユニットに関連するレジスタにセットされる変数値を定数値に置換するオペランド処理回路と、前記デコーダによってデコードされ、前記オペランド処理回路によってオペランドが置換された前記第2タイプの命令をキューイングするバッファと、前記第2タイプの命令を前記バッファから順次取得して実行する第2演算ユニットと、を備えることを特徴とするプロセッサを提供する。
【選択図】図3

Description

本発明は、演算対象のデータの性質に基づいて分類された2つのタイプの命令を含むプログラムのためのプロセッサに関する。
プロセッサの高速化技術として、パイプライン処理が知られている。パイプライン処理を実行可能なCPU、デジタル信号プロセッサ(DSP)、及び特定用途向けプロセッサ(ASP)などのプロセッサ(パイプラインプロセッサ)は、以下の処理を順に実行する(但し、処理のステージ数はプロセッサの実装に依存する)。
(1)命令をデコード
(2)レジスタ又はメモリからソースオペランドをフェッチ
(3)演算を実行
(4)演算結果をレジスタ又はメモリに書き込む
パイプラインプロセッサでは、以下の理由などにより、処理の停滞(パイプラインストール)が発生する場合がある。
(1)リソース(例えばメモリのポート、又は演算リソース)の衝突又は不足
(2)パイプラインレイテンシ(遅延)によって引き起こされる、依存関係のあるデータ(例えばソースオペランド、アドレス、又はフラグ)の準備未完了
パイプラインストールの発生を抑制してプロセッサを更に高速化する技術として、命令の順序を並び替えて実行する、アウト・オブ・オーダー実行(OoO実行)が知られている(特許文献1)。
また、プロセッサの高速化のために、分岐命令と分岐の条件を計算するための命令(まとめて、「制御フローコード」と呼ぶ)を、それらを除く通常の命令から分離する技術も知られている(特許文献2)。
特開2001−236222号公報 特開2004−171248号公報
OoO実行を実現するためには、プロセッサは命令間の依存関係を確認する必要があり、プロセッサの回路構成が複雑化する。そのため、例えばプロセッサのトランジスタ数の増加と、それに伴う消費電力の増加、チップ面積の大型化、及びコストの上昇などの問題が存在する。この問題は、装置の小型化や消費電力の低減などが求められる移動体デバイスのためのプロセッサにとって、特に深刻である。
また、特許文献2の技術では、分岐条件の判定に使用される変数をループ中で利用できない。即ち、引用文献2の図1(a)のソースコードでは、変数iが「for」で始まるループ中で変数z及び変数bのインデックスとして利用されている。しかし、引用文献2の図1(b)のアセンブリコードでは、変数iを計算するための命令を分離するために、変数iのレジスタ(C6)をループ中で利用することができない。そのため、命令数が増加し、プロセッサの高速化の妨げとなると共に、制御フローコードのためのレジスタを別途用意しなければならないという問題がある。
本発明はこのような状況に鑑みてなされたものであり、回路構成の複雑化を抑制しつつ、プロセッサの処理速度を高速化する技術を提供することを目的とする。
上記課題を解決するために、本発明によれば、演算対象のデータの性質に基づいて分類された、第1タイプの命令及び第2タイプの命令を含むプログラムから命令を順次取得してデコードするデコーダと、前記第1タイプの命令を前記デコーダから順次受信して実行する第1演算ユニットと、前記第2タイプの命令のオペランドに含まれる、前記第1演算ユニットに関連するレジスタにセットされる変数値を定数値に置換するオペランド処理回路と、前記デコーダによってデコードされ、前記オペランド処理回路によってオペランドが置換された前記第2タイプの命令をキューイングするバッファと、前記第2タイプの命令を前記バッファから順次取得して実行する第2演算ユニットと、を備えることを特徴とするプロセッサが提供される。
また、本発明の他の態様によれば、演算対象のデータの性質に基づいて分類された、第1タイプの命令及び第2タイプの命令を含むプログラムから命令を順次取得してデコードするデコーダと、前記第1タイプの命令を前記デコーダから順次受信して実行する第1演算ユニットと、前記第2タイプの命令のオペランドに含まれる、前記第1演算ユニットに関連するレジスタにセットされる変数値を定数値に置換するオペランド処理回路と、前記デコーダによってデコードされ、前記オペランド処理回路によってオペランドが置換された前記第2タイプの命令をキューイングするバッファと、前記第2タイプの命令に係るレジスタの値を記憶するレジスタファイルと、を備えるサブプロセッサを複数備え、更に、前記第2タイプの命令に係る演算を実行する複数の演算器と、前記複数のサブプロセッサそれぞれの前記バッファから並行して前記第2タイプの命令を順次取得し、取得した命令により実行される演算の種類に基づいて前記複数の演算器から選択した演算器に前記取得した命令を供給する制御回路と、を備えることを特徴とするプロセッサが提供される。
なお、その他の本発明の特徴は、添付図面及び以下の発明を実施するための最良の形態における記載によって更に明らかになるものである。
以上の構成により、本発明によれば、回路構成の複雑化を抑制しつつ、プロセッサの処理速度を高速化することが可能となる。
以下、添付図面を参照して、本発明の実施形態を説明する。以下で説明される個別の実施形態は、本発明の上位概念、中位概念および下位概念など種々の概念を理解するために役立つであろう。
なお、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。また、実施形態の中で説明されている特徴の組み合わせすべてが、本発明に必須とは限らない。
[第1の実施形態]
<基本的な概念>
図1のC言語で記述されたプログラムを参照して、第1の実施形態の基本的な概念を説明する。
本実施形態のプロセッサが実行する命令は、演算対象のデータの性質に基づいて分類された、オブジェクティブ命令と非オブジェクティブ命令を含む。
オブジェクティブ命令とは、プログラムの目的の入出力データ及びその中間物(計算途中のデータ)を演算対象として扱う命令である。
非オブジェクティブ命令とは、プログラムの目的の入出力データ或いはその中間物以外の、補助的なデータを演算対象として扱う命令である。
図1においては、X[i]*Y[i]における乗算命令(*)や、乗算結果をZ[i]に代入する代入命令(=)などがオブジェクティブ命令である。一方、「for」で始まるループを制御するための変数iをインクリメントする命令(++)や、ループの終了を判定するために変数iと定数Nを比較する命令(<)などは非オブジェクディブ命令である。
また、本実施形態では、オブジェクティブ命令による演算対象データをオブジェクティブデータと呼び、非オブジェクティブ命令による演算対象データを非オブジェクティブデータと呼ぶ。
なお、同じ種類の演算子(例えば、「+」)であっても、演算対象データによって、オブジェクティブ命令として扱われる場合もあれば、非オブジェクティブ命令として扱われる場合もあることに注意されたい。
図1においては、X[i]、Y[i]、Z[i]がオブジェクティブデータであり、N、iが非オブジェクティブデータである。
一般的に、オブジェクティブデータは、単位(メートル、秒、メートル/秒など)を持つ物理量であり、プログラム中では浮動小数として扱われる。これは例えば、携帯電話のプロセッサは、電圧値や電流値などを算出するプログラムを実行するからである。
一方、非オブジェクティブデータは、ループを制御するための変数や配列のインデックスなどとして使用される値であるため、単位を持たず、プログラム中では整数として扱われる。
従って、一実施形態においては、オブジェクティブ命令は浮動小数のデータを演算対象のデータとして扱い、非オブジェクティブ命令は整数のデータを演算対象のデータとして扱うものとしてもよい。
本実施形態の基本的な概念は、プロセッサがオブジェクティブ命令と非オブジェクティブ命令とを分離し、それぞれを並行して実行することである。そのため、本発明のプロセッサは、オブジェクティブ命令用の浮動小数演算装置(浮動小数ALU)と、非オブジェクティブ命令用の論理演算装置(整数ALU)とを備える。
通常、プロセッサがオブジェクティブ命令を実行するには、非オブジェクティブ命令を実行するよりも多くのサイクル数を要する。そのため、本実施形態に係るプロセッサが図1のプログラムを実行すると、変数iに関連する処理(即ち、非オブジェクティブ命令の実行)は早期に完了し、プログラムのループは次のように展開される。
Z[0]=X[0]*Y[0]
Z[1]=X[1]*Y[1]
Z[2]=X[2]*Y[2]
Z[3]=X[3]*Y[3]
・・・
・・・
・・・
Z[999]=X[999]*Y[999]
浮動小数ALUは、展開済みの演算を順次実行すればよいので、非オブジェクティブ命令を分離しない場合に比べて高速に演算を完了することができる。
図2は、図1に示すプログラムをコンパイルして得られるアセンブリコードの一例を示す図である。ここで注意すべきことは、ループを制御するための変数iの値(レジスタr3にセットされる変数値)が、ループ中で配列X、Y、及びZのインデックスとしても使用されていることである。
図2に示すアセンブリコードにおいて、非オブジェクティブ命令とオブジェクティブ命令とを単純に分離しただけでは、プロセッサはレジスタr3を変化させる非オブジェクティブ命令
add r3, #1
を、レジスタr3を使用するオブジェクティブ命令
fmov fr0, @(r0+4*r3)
fmov fr1, @(r1+4*r3)
fmov @(r2+4*r3), fr0
よりも先に実行することができない。仮に、先に実行してしまったとすると、配列X、Y、及びZのインデックスの値は非オブジェクティブ命令の実行に依存して変化し、正しいメモリアドレスを指し示すことができない。
なお、アセンブリコードを生成するコンパイラを、オブジェクティブ命令と非オブジェクティブ命令が共通のレジスタを使用しないように構成することも可能であるが、「課題を解決するための手段」の欄で説明した通り、命令数の増加及び必要なレジスタ数の増加を招くため、本実施形態では採用しない。
そこで、本実施形態に係るプロセッサは、以下に詳述する構成を備える。
なお、全てのオブジェクティブ命令が浮動小数ALUによって処理されるわけでは必ずしもない。同様に、全ての非オブジェクティブ命令が整数ALUによって処理されるわけでは必ずしもない。例えば、図2のアセンブリコードにおける条件分岐命令(jle)は非オブジェクティブ命令であるが、整数ALUではなく、命令デコーダによって処理される。
<プロセッサ300の構成>
図3は、第1の実施形態に係るプロセッサ300の構成例を示すブロック図である。また、図4はプロセッサ300の命令セットの一例を示す図、図5はプロセッサ300が備えるレジスタの一例を示す図、図6は本実施形態におけるオペランドの表記法を説明する図である。本実施形態では、図4の整数命令が非オブジェクティブ命令であり、浮動小数命令がオブジェクティブ命令であるものとする。従って、整数データが非オブジェクティブデータであり、浮動小数データがオブジェクティブデータである。しかし、オブジェクティブ命令(及びデータ)、及び非オブジェクティブ命令(及びデータ)の定義は「基本的な概念」のセクションで説明した通りであり、これに限られるものではない。また、制御命令は、非オブジェクティブ命令であるが、後述する命令デコーダ305内で処理される。制御命令が図4に示すjleのようにフラグレジスタccを分岐で使用する場合は、図3に示すように、フラグレジスタの値が整数レジスタファイル311あるいは浮動小数レジスタファイル313から命令デコーダ305に供給される。ここでフラグレジスタccはソフトウエアから見た論理フラグレジスタであり、直前のフラグ生成を行う命令が整数演算であるか浮動小数演算であるかに応じて、整数レジスタファイル311あるいは浮動小数レジスタファイル313内の物理フラグレジスタ値(iccあるいはfcc)のいずれかが選択される。整数部306と浮動小数部307がそれぞれ物理フラグレジスタを持つのは、整数部306と浮動小数部307における演算が並行して実行されるためである。仮に物理フラグレジスタが1つしかなく整数と浮動小数で共有されている場合、FIFO308(バッファ)によるキューイングのため遅れて実行されたオブジェクティブ命令が生成するフラグ値が、非オブジェクティブ命令により生成されたフラグ値を破壊するという問題が発生する。
図3において、プロセッサ300は、メモリ301、メモリインタフェース(I/F)302、命令キュー及びフェッチ制御回路303、プログラムカウンタ304、命令デコーダ305、整数部306、浮動小数部307、FIFO(First Input First Out)308、オペランド処理回路309、及び変換回路314を備える。但し、図3に示す全てのブロック(構成要素)がプロセッサ300に一体形成される必要は無い。例えば、メモリ301は、プロセッサ300とは別のチップ上に備えられていてもよい。FIFO308は、半導体メモリなどの記憶素子によって実装可能である。
なお、本実施形態では、プロセッサ300はRISCプロセッサであるものとするが、CISCプロセッサに対しても本実施形態の概念を適用可能である。ここで言うRISCプロセッサとは、ALUとメモリI/Fが並列接続されており、1命令でメモリアクセスと主たる演算のいずれか一方しかできないプロセッサのことである(図11(a)参照)。CISCプロセッサに適用した場合は、メモリから読み出した入力オペランド値をALUに供給し、演算結果をメモリに書き戻すというという処理を1命令で行っても良い(図11(b)参照)。また、後述する整数ALU310及び浮動小数ALU312が受け付け可能なオペランドは、入力オペランドが2つまで、出力オペランドは1つであるものとするが、これに限られるものではない。
メモリ301は、プロセッサ300が実行するプログラムや、プログラムによって処理されるデータを格納するためのものであり、メモリI/F302を介して他の構成要素からアクセスされる。
命令キュー及びフェッチ制御回路303は、プログラムカウンタ304が示すアドレスに従って、メモリ301から命令を取得し、キューイングする。
命令デコーダ305は、命令キュー及びフェッチ制御回路303から古い順(キューイングされた順)に命令を取得してデコードし、命令がオブジェクティブ命令か非オブジェクティブ命令かを判定する。
命令が非オブジェクティブ命令であれば、命令デコーダ305は、整数部306を制御する制御信号を生成する。整数部306の制御信号は、演算ユニット制御信号、レジスタファイル制御信号、及びメモリアクセス制御信号を含む。演算ユニット制御信号は、整数ALU310に実行させる演算の種類(加算、減算等)を示す。レジスタファイル制御信号は、整数レジスタファイル311に含まれるレジスタのうち、アクセス対象のレジスタを示す。メモリアクセス制御信号は、整数部306がアクセスする、メモリ301における読み書きの制御信号を示す。
命令がオブジェクティブ命令であれば、命令デコーダ305は、浮動小数部307を制御する制御信号を生成し、FIFO308にキューイングする。FIFO308が一杯(フル)の場合は、FIFO308はFIFO制御信号によって命令デコーダ305に通知し、FIFO308に空きができるまで命令デコーダ305は処理を停止する。浮動小数部307の制御信号は、演算ユニット制御信号、レジスタファイル制御信号、及びメモリアクセス制御信号を含む。演算ユニット制御信号は、浮動小数ALU312に実行させる演算の種類を示す。レジスタファイル制御信号は、浮動小数レジスタファイル313に含まれるレジスタのうち、アクセス対象のレジスタを示す。メモリアクセス制御信号は、浮動小数部307がアクセスする、メモリ301における読み書きの制御信号を示す。
また、命令のオペランドに定数が含まれていた場合、命令デコーダ305はその定数をオペランド処理回路309に供給する。
更に、命令がオブジェクティブ命令であっても、命令のオペランドに整数レジスタが含まれていた場合、命令デコーダ305はその整数レジスタを示すレジスタファイル制御信号を生成して整数レジスタファイル311に供給することにより、その整数レジスタの値をオペランド処理回路309に供給する。
オペランド処理回路309は、オペランドを処理するが、その処理内容はオペランドがメモリを参照するタイプ(図6で@マーク付きのもの)であるか否かによって異なる。また、命令がオブジェクティブ命令の場合と非オブジェクティブ命令の場合とでも異なる。なお、前述の通り、オペランドに含まれる定数は命令デコーダ305から供給され、整数レジスタの値は整数レジスタファイル311から供給される。
●オペランドがメモリを参照するタイプである場合
オペランド処理回路309は、オペランドのアドレスの演算を行う。例えば、オペランドが@(r0+4*r3)であり、レジスタr0の値が0x1000、レジスタr3の値が0x100の場合、オペランド処理回路309は、r0+4*r3を計算することにより、アドレス0x1400を求める。
命令が非オブジェクティブ命令の場合、オペランド処理回路309はメモリI/F302にアドレス0x1400を供給する。メモリI/F302は、オペランドの位置に応じて、メモリ301のアドレス0x1400のデータをIX−バス又はIY−バスを介して整数ALU310に供給するか、或いは、整数ALU310による演算結果をIZ−バスを介してメモリ301のアドレス0x1400に書き込む。
命令がオブジェクティブ命令の場合、オペランド処理回路309は、@(r0+4*r3)というオペランドを、アドレス演算後の@(0x1400)というオペランドに変換し、FIFO308に供給する。これにより、例えば図2の
fmov fr0, @(r0+4*r3)
という命令は、
fmov fr0, @(0x1400)
という命令に変換される(厳密には、命令は命令デコーダ305によって浮動小数部307の制御信号の形式にデコードされている)。即ち、オペランド処理回路309は、オブジェクティブ命令のオペランドに含まれる、変数としての整数部306に係るレジスタ(例えば、r0やr3など)の値を定数値に置換する。更に、置換後の定数値間の演算(例えば、加算や乗算)も実行してもよい。
これにより、ループを制御するための変数iを格納したレジスタr3との依存関係が解消される。変換された後の非オブジェクティブ命令はFIFO308でキューイングされ、浮動小数部307が空き次第実行が開始される。メモリI/F302は、メモリを参照するオペランドの位置に応じて、メモリ301のアドレス0x1400の読み出しデータをFZ−バスを介して浮動小数レジスタファイル313に書き込むか、或いは、浮動小数レジスタファイル313から読み出されたデータをFX−バス又はFY−バスを介してメモリ301のアドレス0x1400に書き込む。上記の例では、オペランド「@(0x1400)」は1つ目の入力オペランドであるので、メモリ301のアドレス0x1400のデータがFZ−バスを介して浮動小数レジスタファイル313に書き込まれる。
CISCプロセッサに適用する場合は、メモリをオペランドの位置に応じて、メモリ301のアドレス0x1400の読み出しデータをFZ−バスを介して浮動小数ALU312に供給するか、或いは浮動小数ALUによる演算結果をFZ−バスを介してメモリに書き込む。入出力ともにメモリを参照するオペランドを持つ命令の場合は、これらの両方を行う。
●オペランドがメモリを参照しないタイプである場合
命令がオブジェクティブ命令の場合、fmov以外の命令は、浮動小数のオペランドのみが使用可能である。このため、浮動小数部307と整数部306との間の依存関係の解消は必要ない。
整数データを浮動小数データに変換する場合、及び浮動小数データを整数データに変換する場合は、下記の通り、fmovのオペランドに整数レジスタが含まれる。
fmov fr0, r3 (整数を浮動小数に変換)
fmov r3, fr0 (浮動小数を整数に変換)
前者の場合、オペランド処理回路309がレジスタr3の値を取得してFIFO308に供給し、浮動小数ALU312がレジスタr3の値を浮動小数レジスタ313内のレジスタfr0に書き込む。
後者の場合、fmov命令は、変換回路314によって処理される。変換回路314は、浮動小数を整数に変換し、IZ−バスを経由して変換結果を整数レジスタファイル311内のレジスタr3に書き込む。
なお、いずれの場合も、浮動小数部307と整数部306との間に依存関係が存在する。従って、変換元のデータの準備が完了するまで処理を停止するか、或いは、他の方法で依存関係を解消する必要がある(詳細は後述)。
整数部306は、整数ALU310、整数レジスタファイル311、IX−バス、IY−バス、及びIZ−バスを含む。整数ALU310は、命令デコーダ305から供給される演算ユニット制御信号に従って非オブジェクティブ命令を実行する。このとき、入力オペランドはIX−バス及びIY−バスの少なくとも一方を介して供給される。出力オペランドは、IZ−バスに通知され、整数ALU310の演算結果は、出力オペランドに従って整数レジスタファイル311に供給される(CISCプロセッサに適用する場合はメモリ301にも供給可能)。
浮動小数部307は、浮動小数ALU312、浮動小数レジスタファイル313、FX−バス、FY−バス、及びFZ−バスを含む。浮動小数部307は、FIFO308から古い順(キューイングされた順)に命令(命令デコーダ305でデコードされて得られた制御信号、及びオペランド処理回路で得られたオペランド)の供給を受け付ける。浮動小数ALU312は、FIFO308から供給される演算ユニット制御信号に従ってオブジェクティブ命令を実行する。このとき、入力オペランド値はFX−バス及びFY−バスの少なくとも一方を介して供給される。出力オペランド値は、FZ−バスに通知され、浮動小数ALU312の演算結果は、出力オペランドに従って浮動小数レジスタファイル313に供給される(CISCプロセッサに適用する場合はメモリ301にも供給可能)。
なお、プロセッサ300は、整数部306を複数備えていてもよいし、また、浮動小数部307を複数備えていてもよい。
以上の構成により、プロセッサ300は、実行に要するサイクル数が比較的多いオブジェクティブ命令と、実行に要するサイクル数が比較的少ない非オブジェクティブ命令とを分離し、それぞれを並行して実行することができる。
これにより、プロセッサの処理速度が高速化される。
ところで、プロセッサ300は、例えば他の命令によって生成される演算対象のデータの準備(演算)が完了していない状況など、データやリソースの依存関係が原因で、処理を一時的に停止(ストール)しなければならない場合がある。以下では、プロセッサ300がストールを制御するための構成と、ストールの発生を抑制して処理を高速化するための構成を説明する。
<ストール制御>
データやリソースの依存関係の例としては、アドレス生成によるもの(AGI(Address Generation Interlock)ストール)、データ或いはフラグの依存関係によるもの、メモリアクセス待ちによるもの、演算リソース待ちによるものなどがある。
図9は、プロセッサ300における、ストール制御のための構成例を示す図である。図9において、図3の構成要素と同一の構成要素には同一の符号を付し、説明を省略する。
プロセッサ300は、AGIストール制御回路901、整数データ依存ストール制御回路902、及び浮動小数ストール制御回路903を備える。
●AGIストール制御
例えば図2のアセンブリコードに示される、
mov r3, #0 …(1)
fmov fr0, @(r0+4*r3) …(2)
という連続する2つの命令において、レジスタr3の依存関係があり、オペランド処理回路309が命令(2)のオペランドを処理する前にレジスタr3の値が確定しなければならない(即ち、命令(1)の実行結果が整数レジスタファイル311に書き戻されなければならない)。しかしながら、整数部306のパイプラインレイテンシのためにレジスタr3の値が確定できない場合は、処理待ちを行わなければならない。このため、AGIストール制御回路901は、オペランド処理回路309の前になければならない。AGIストールが必要かどうかは、整数レジスタの番号(r3の3という番号)には依存するが、レジスタr3の内容には依存しない。
●データ生成の依存関係によるストール制御
連続する2つの命令、例えば、
fmov @(r0), fr1 …(3)
fmov fr0,@(r2+4*r3) …(4)
において、オペランド「@(r0)」と「@(r2+4*r3)」が同じアドレスを指すかどうかは、オペランドのアドレスが確定したあとでなければ検出できない。データ生成の依存関係のストール制御回路はオペランド処理回路309の後になければならない(整数データ依存ストール制御回路902に対応)。
更に、浮動小数部307がメモリ301にアクセスするときに、メモリ301がビジーであるかどうかは、浮動小数部307がメモリ301にアクセスする直前まで分からない。また、例えば、図4に示したfsqrt命令で、誤差(この場合、演算結果の候補の二乗から入力値を引いたもの)を計算してそれが基準以内なら演算を終了するという場合、サイクル数は入力値に依存するので、演算が終了するまで知ることができない。こうした場合は、メモリ301あるいは浮動小数ALU312等のビジー信号を用いて、FIFO308の後で浮動小数演算のストールを制御する必要がある(浮動小数ストール制御回路903に対応)。例えば、浮動小数部307は、fsqrt命令を実行中の間、ビジー信号を浮動小数ストール制御回路903に供給する。浮動小数ストール制御回路903は、ビジー信号に応答して、浮動小数部307がFIFO308から次の命令を受信することを停止させる。
<バイパス回路>
プロセッサ300は、図7及び図8に示すようにパイプライン及びバイパス回路(BP)を備えることができる。図7及び図8において、図3の構成要素と同一の構成要素には同一の符号を付し、説明を省略する。
●同じ種類の命令におけるレジスタのデータのバイパス(図8参照)
例えば図2のアセンブリコードに示される、
fmov fr0, @(r0+4*r3) …(A)
fmov fr1, @(r1+4*r3) …(B)
fmul fr0, fr0, fr1 …(C)
という連続する3つの命令において、命令(B)の実行結果は1命令後の命令(C)で使用され、命令(A)の実行結果は2命令後の命令(C)で使用される。ここで、命令(A)と命令(B)の実行結果はそれぞれ、メモリI/F302を通して浮動小数ALU312へ同じサイクル数(レイテンシ)でFZ−バスに供給されるものとする。命令(C)が浮動小数レジスタファイル313のレジスタfr0及びfr1の内容を選択する時点で、命令(A)及び命令(B)の実行結果の浮動小数レジスタファイル313への格納は完了していない。そこで、命令(A)の実行結果は、バイパス回路803を通してレジスタfr0の値の代わりに供給され、命令(B)の実行結果はバイパス回路802を通してEX(Execution)ステージに直接供給することで、実行結果が浮動小数レジスタファイル313に書き戻されるのを待つことなく、命令(C)の実行が可能となる。バイパス条件としては、データの行き先とデータの由来元の比較を行い、一致すればバイパス回路よりデータが供給される。
●アドレス生成におけるバイパス(図7参照)
例えば図2のアセンブリコードに示される、
mov r3, #0 …(D)
fmov fr0, @(r0+4*r3) …(A)
という連続する2つの命令において、命令(D)の実行結果は命令(A)のオペランドのアドレスの計算で使用される。命令(A)の実行結果が整数レジスタファイル311に書き戻されるためには、命令(A)は2サイクル待たなければならない。そこで、命令(D)の実行結果をバイパス回路706を通して整数レジスタファイル311からの値の代わりに供給することで、命令(A)の待ち時間が1サイクルに短縮される。
●メモリのバイパス
2つの連続する命令、例えば、
fmov @(r0), fr1 …(E)
fmov fr2, @(r2+4*r3) …(F)
で、オペランド「@(r0)」と「@(r2+4*r3)」とが同じアドレスを指し示す場合は、命令(E)と命令(F)との間に依存関係が存在するが、異なるアドレスである場合は依存関係が存在しない。このため、オペランドの処理結果に応じてパイパスをさせるか、ストール制御をすることが必要である。この場合のバイパス回路は、図7及び図8に示すバイパス回路と同様にメモリインタフェース302内部に実装可能である。
●フラグ値のバイパス
フラグレジスタ(icc又はfcc)の値も、データの場合と同様に、バイパス回路707又はバイパス回路805を設けることで、フラグを使用する命令の待ち時間を短縮あるいはゼロにすることができる。
●オペランド処理回路309を経由した値がALUにロードされる場合(図7参照)
2つの連続する命令、例えば、
mov r3, #0 …(G)
mov r2, r0+4*r3 …(H)
で、命令(G)の実行結果は命令(H)のオペランドの計算で使用される。この場合、命令(H)のオペランド「r0+4*r3」内に、命令(G)の実行結果を収めるレジスタr3が入るが、バイパス回路701を経由して、命令(G)の結果を命令(H)に供給してはいけない。(仮にパイパス回路701を使用すると、命令(H)のオペランド「r0+4*r3」が、r3の値に置き換えられてしまう。)この場合、命令(H)の実行開始を1サイクル遅らせて、整数レジスタファイル311内のバイパス回路706を使用して命令(G)の実行結果をオペランド処理回路309に供給するのが、最も待ち時間が少ない。
また、例えば、
fmov fr3, #0x1000 …(I)
のように定数値をロードする命令の場合、この前の命令が何であっても依存関係が存在しない。
これらを実現するために、オペランド処理回路を経由してIX、IY、FX、FYのいずれかのバスに供給される信号の場合、由来元として、いずれにも属さないNULLとすることでALU内のバイパス回路(701、702、801、802)の動作を防止する。
<投機実行>
プロセッサ300は、投機実行機能を備えることができる。投機実行を利用すると、プロセッサ300は、分岐条件の計算の完了を待つことなく、分岐予測(計算結果の予測)に基づいて処理を分岐し、分岐後の命令を実行することができる。分岐予測の正誤は、分岐条件の計算の完了により確定する。分岐予測が誤っていた場合は、投機実行により実行された命令を取り消す必要がある。
図10は、プロセッサ300に投機実行機能を追加した構成例を示す図である。図10において、図3に示す各構成要素と同一の構成要素には同一の符号を付し、説明を省略する。
命令デコーダ305は、分岐予測回路1001及び投機実行制御回路1002を備える。デコードされた命令が条件分岐命令(例えば、図4に示すjle)である場合、分岐予測回路1001は、分岐条件の計算結果を予測し、投機実行制御回路1002に通知する。投機実行制御回路1002は、投機実行される命令(厳密には、デコードされた制御信号)に、その命令が投機実行されたことを示す投機実行フラグ(投機実行情報)をセットする。図10においては、「1」が投機実行フラグがセットされた状態を示し、「0」が投機実行フラグがセットされていない(或いは、クリアされた)状態を示す。
ところで、オブジェクティブ命令の場合は、FIFO308にキューイングされるため、FIFO308にキューイングされている命令も含めて取り消す必要がある。FIFO308にキューイングされている命令の数は、処理状況に応じて変動するため、取り消す命令の数(分岐予測の誤りが判明してから何命令先まで取り消すかという数)に基づいて対応するパイプラインのステージを一意に定めることができない。
そこで、投機実行制御回路1002は、承認信号と取り消し信号を用いて、投機的に発行された命令の制御を行う。分岐予測が正しいと判明したとき、投機実行制御回路1002は、プロセッサ300で実行されているパイプライン中の全命令に対して承認信号を発行し、投機実行フラグのクリアを行う。一方、分岐予測が誤っていると判明したとき、投機実行制御回路1002は、プロセッサ300で実行されているパイプライン中の全命令に対して取り消し信号を発行し、投機実行フラグがセットされている命令の削除を行う。投機実行フラグがセットされていない命令に対しては、承認信号或いは取り消し信号が発行されてもこのような操作は行われず、処理が継続される。承認信号も取り消し信号も発行されなかった場合は、パイプライン中の制御信号は、投機実行フラグの状態を維持したまま次のステージに移動する。
分岐予測が誤っており、投機実行を取り消した場合は、命令デコーダ305は予測対象の分岐命令まで戻り、フラグレジスタccの値に基づいて分岐をやり直す。
本実施形態において、条件分岐命令は2つの候補の経路(分岐先)の中から1つの経路を選択するものであるが、3つ以上の候補から1つの経路を選択する条件分岐命令にも、ここで説明した投機実行は適用可能である。
また、本実施形態において、投機実行中に別の投機実行による分岐(即ち、投機実行のネスト)は行わないものとする。しかし、投機実行フラグを複数ビットに拡張すれば、投機実行のネストを行う場合も、投機実行制御回路1002は、投機実行の承認及び取り消しの制御を行うことが可能である。
また、分岐予測は、必ず特定の分岐先を選択したり、前回の分岐先を選択したりするなど、任意の基準で実行することができる。
<フラグの依存性>
フラグ(フラグレジスタの値)は、整数ALU310あるいは浮動小数ALU312による演算によって生成され、条件分岐命令jle、整数或いは浮動小数の条件付選択命令sel,fselなど(図4参照)で使用される。前述のように、オブジェクティブ命令と非オブジェクティブ命令とは並行して実行されるため、フラグを生成する命令と、フラグを使用する命令との間で、フラグに起因する依存関係が発生する場合がある。
従って、例えば、非オブジェクティブ命令で生成されるフラグがオブジェクティブ命令で使用される場合は、対応関係を保ったままフラグをオブジェクティブ命令へ伝播させる必要がある。反対に、オブジェクティブ命令で生成されるフラグが非オブジェクティブ命令(或いは、命令デコーダ305で実行される制御命令)で使用される場合は、浮動小数ALU312でのオブジェクティブ命令の実行(フラグ生成)を待つ必要がある。以下、具体的に説明する。
●非オブジェクティブ命令で生成されるフラグがオブジェクティブ命令で使用される場合
例えば、最も直前の整数フラグレジスタiccの値を生成する命令が、
cmp r3,#0x10 …(J)
であり、レジスタiccに基づきレジスタfr1かレジスタfr2のいずれかを選択してレジスタfr0に代入する命令が、
fsel fr0,fr1,fr2 …(K)
であるとする。命令(K)は、以下のように関数fを用いてオペランド2個の命令として表すことができる。
fmov fr0,f(icc,fr1,fr2) …(L)
非オブジェクティブ命令によるメモリアクセスと同様に、オペランド処理回路309で、オペランド「f(icc,fr1,fr2)」をレジスタiccに基づきfr1あるいはfr2に置換することにより、命令(L)は、
fmov fr0,fr1 …(M)
あるいは、
fmov fr0,fr2 …(N)
という命令に変換される(厳密には、命令は命令デコーダ305によって浮動小数部307の制御信号の形式にデコードされている)。これにより、レジスタiccとの依存関係が解消される。
●オブジェクティブ命令で生成されるフラグが非オブジェクティブ命令或いは制御命令で使用される場合
オブジェクティブ命令で生成されるフラグを、非オブジェクティブ命令或いは制御命令へ伝播させるためには、浮動小数部307の処理待ちをする必要がある。この場合、命令デコーダ305は、非オブジェクティブ命令のデコードを停止(或いは、制御命令のデコードを停止)することで、同期処理を行う。
多くの物理演算は微分可能な関数(連続でかつ滑らかな関数)で表され、物理量をもとに分岐が行われることは少ない。例えば、WCDMA受信機における物理データの演算においては、浮動小数の比較に基づく分岐は全体の演算の1%程度である。このため、浮動小数部307での処理を待っても処理性能に大きな影響は出ない。
なお、命令デコーダ305は、フラグの生成を待つことなく投機実行を行ってもよい。
例えば、最も直前のフラグを生成する命令が、
fcmp fr3,#0x10 …(O)
であり、そのレジスタfccに基づきr1かr2のいずれかを選択してr0に代入する命令が、
sel r0,r1,r2 …(P)
であるとき、浮動小数部307でのフラグの生成を待たずに、例えば前回の演算結果などに基づいて投機的にr1あるいはr2を選択してr0に代入することができる。この場合、FIFO308が整数部306のパイプライン長よりも深い場合、浮動小数部307おける命令(O)の開始前に、命令(P)の投機実行の結果がレジスタr0に格納されてしまうという問題が発生する。この場合の投機実行をキャンセルするためには、投機実行前のレジスタr0の内容を保存しておかなければならない。そこで、図10に示した投機実行フラグを用いて、投機実行前のレジスタr0の保存等の制御を行うことができる。

<浮動小数と整数との間の変換>
浮動小数と整数の変換を行う場合は、フラグの依存性と同様の処理が必要である。整数を浮動小数に変換する場合は、対応関係を保ったまま伝播させる必要がある。逆に、浮動小数を整数に変換する場合は、浮動小数演算の処理待ちをする必要がある。
●整数から浮動小数への変換
非オブジェクティブ命令からオブジェクティブ命令へのフラグの伝播と同様に、オペランド処理回路309で整数レジスタのオペランドを浮動小数レジスタのオペランドへ変換することができる。
●浮動小数から整数への変換
浮動小数から整数への変換結果を整数部306が直ちに使用する場合は、オブジェクティブ命令から条件分岐命令あるいは非オブジェクティブ命令へのフラグの伝播と同様に、浮動小数部307の処理待ちをする必要がある。この場合はハードウェアにより同期処理を行い、浮動小数部307と整数部306を直結する変換回路314で浮動小数部307から整数部306へ変換結果が転送されるのが好ましい。変換結果を直ちに使用しない場合は、浮動小数部307が変換結果をメモリへ格納して、必要になった段階で整数部306が読み出して使用することもできる。
以上説明したように、本実施形態によれば、プロセッサ300が実行するプログラムは、演算対象のデータの性質に基づいて分類された2種類の命令を含む。2種類の命令は、典型的には、実行に要するサイクル数が比較的多いオブジェクティブ命令と、実行に要するサイクル数が比較的少ない非オブジェクティブ命令とである。プロセッサ300は、命令デコーダ305及びFIFO308を備える。命令デコーダ305は、オブジェクティブ命令をFIFO308に供給し、オブジェクティブ命令と非オブジェクティブ命令とを、それぞれ異なる演算部(例えば、浮動小数部307と整数部306)に実行させる。浮動小数部307と整数部306は、それぞれオブジェクティブ命令と非オブジェクティブ命令を並行して実行する。
この構成により、プロセッサの回路構成の複雑化を抑制しつつ、処理速度を高速化することが可能となる。従って、トランジスタ数の増加と、それに伴う消費電力の増加、チップ面積の大型化、及びコストの上昇などを抑制しつつ、より高速なプロセッサを提供することが可能となる。
[第2の実施形態]
第2の実施形態では、演算リソース(具体的には浮動小数ALU)を複数のプロセッサで共有することにより、回路構成の複雑化を抑制しつつ、複数の命令を並列に実行可能に構成されたプロセッサを説明する。
図12は、第2の実施形態に係るプロセッサ1200の構成例を示すブロック図である。プロセッサ1200は、第1の実施形態に示したプロセッサ300から浮動小数ALU312を除いたプロセッサを1単位(以下、「単位プロセッサ」或いは「サブプロセッサ」と呼ぶ)とし、複数の単位プロセッサ1201、1202、及び1203を備える(単位プロセッサの数は、3個に限られるものではない)。また、プロセッサ1200は、浮動小数ALUの演算リソースを共用する。プロセッサ1200は、演算リソースとして、加算器、乗算器、平方根器等、さまざまな演算器を備えるが、これらの演算リソースが同時に使用されることは比較的少ない。そこで、演算リソースを複数の単位プロセッサで共有することで、回路規模が削減される。
図12において、プロセッサ1200は、演算リソースとして、2つの加算器1205及び1206、2つの乗算器1207及び1208、及び1つの平方根器1209を備える。プロセッサ1200はまた、調停及び選択回路1204を備える。但し、図3及び図12に示す全てのブロック(構成要素)がプロセッサ1200に一体形成される必要は無い。例えば、単位プロセッサ(1201、1202及び1203)に含まれるメモリ301は、プロセッサ1200とは別のチップ上に備えられていてもよい。更に、メモリ301は、複数の単位プロセッサ1201、1202及び1203で共用されていても良い。
プロセッサ1200において、演算リソースは、演算の種類(加算、乗算等)の使用頻度に応じて設ける。図12の例の場合、加算器と乗算器はそれぞれ2個に対して、使用頻度の少ない平方根器は1個しか設けられていない。各単位プロセッサ1201、1202及び1203は、調停及び選択回路1204を通して、演算器を選択し使用する。即ち、制御回路として機能する調停及び選択回路1204は、複数の単位プロセッサそれぞれのFIFO308から並行してオブジェクティブ命令を順次受信し、受信した命令に係る演算の種類に基づいて演算器を選択し、選択した演算器に受信した命令を供給する。競合により、演算器のリソースが不足する場合は、浮動小数部のストールを行う。
従来のプロセッサを単位プロセッサとして使用した場合、浮動小数部のストールを行うと、命令デコーダ及び整数部のストールも発生する。従来技術のOoO実行のスケジューリングでは、命令デコーダで事前にスケジューリングが行われるため、外部要因に応じた臨機応変なスケジューリングが困難である。これに対して、本実施形態の場合、浮動小数部のストールを行っても、単位プロセッサ1201、1202及び1203それぞれのFIFO308で浮動小数命令がキューイングされるため、多くの場合において、命令デコーダ及び整数部のストールは発生しない。
以上説明したように、本実施形態によれば、プロセッサ1200は、浮動小数ALUを複数の単位プロセッサで共有するが、リソース不足により浮動小数部のストールが発生する場合は、単位プロセッサそれぞれに含まれるFIFO308でオブジェクティブ命令をキューイングする。
この構成により、プロセッサの回路構成の複雑化を抑制しつつ、複数の命令を並列に実行することが可能になる。また、リソース不足によるストールを抑制することが可能になる。
第1の実施形態の基本的な概念を説明するための、C言語で記述されたプログラムを示す図である。 図1に示すプログラムをコンパイルして得られるアセンブリコードの一例を示す図である。 第1の実施形態に係るプロセッサの構成例を示すブロック図である。 第1の実施形態に係るプロセッサの命令セットの一例を示す図である。 第1の実施形態に係るプロセッサが備えるレジスタの一例を示す図である。 第1の実施形態におけるオペランドの表記法を説明する図である。 第1の実施形態に係るプロセッサの整数部のパイプライン及びバイパス回路の一例を示す図である。 第1の実施形態に係るプロセッサの浮動小数部のパイプライン及びバイパス回路の一例を示す図である。 第1の実施形態に係るプロセッサにおける、ストール制御のための構成例を示す図である。 第1の実施形態に係るプロセッサに投機実行機能を追加した構成例を示す図である。 RISCプロセッサ及びCISCプロセッサそれぞれの整数部又は浮動小数部とメモリインタフェースとの間のデータの流れを示す図である。 第2の実施形態に係るプロセッサの構成例を示すブロック図である。

Claims (7)

  1. 演算対象のデータの性質に基づいて分類された、第1タイプの命令及び第2タイプの命令を含むプログラムから命令を順次取得してデコードするデコーダと、
    前記第1タイプの命令を前記デコーダから順次受信して実行する第1演算ユニットと、
    前記第2タイプの命令のオペランドに含まれる、前記第1演算ユニットに関連するレジスタにセットされる変数値を定数値に置換するオペランド処理回路と、
    前記デコーダによってデコードされ、前記オペランド処理回路によってオペランドが置換された前記第2タイプの命令をキューイングするバッファと、
    前記第2タイプの命令を前記バッファから順次取得して実行する第2演算ユニットと、
    を備えることを特徴とするプロセッサ。
  2. 前記第2タイプの命令は、前記プログラムの目的の入出力データ、又は前記入出力データの演算途中のデータを演算対象として扱う命令であり、
    前記第1タイプの命令は、前記入出力データ又は前記演算途中のデータ以外のデータを演算対象として扱う命令である
    ことを特徴とする請求項1に記載のプロセッサ。
  3. 前記第2タイプの命令は、浮動小数のデータを演算対象のデータとして扱う命令であり、
    前記第1タイプの命令は、整数のデータを演算対象のデータとして扱う命令である
    ことを特徴とする請求項1に記載のプロセッサ。
  4. 前記第1演算ユニットは論理演算装置を含み、
    前記第2演算ユニットは浮動小数演算装置を含む
    ことを特徴とする請求項1乃至3のいずれか1項に記載のプロセッサ。
  5. 前記デコーダは、分岐予測に基づいて投機実行を制御する投機実行制御回路を備え、
    前記投機実行制御回路は、
    投機実行されたことを示す投機実行情報を、投機実行される命令にセットし、
    前記分岐予測が正しいと判明した場合に、前記投機実行情報がセットされた命令から当該投機実行情報をクリアするように前記第1演算ユニット、前記第2演算ユニット、及び前記バッファを制御し、
    前記分岐予測が誤っていると判明した場合に、前記投機実行情報がセットされた命令を取り消すように前記第1演算ユニット、前記第2演算ユニット、及び前記バッファを制御する
    ことを特徴とする請求項1乃至4のいずれか1項に記載のプロセッサ。
  6. 前記第2演算ユニットから供給される、前記第2演算ユニットが前記第2タイプの命令を実行中であることを示す信号に応答して、前記第2演算ユニットによる次の前記第2タイプの命令の受信を停止させるストール制御回路を更に備えることを特徴とする請求項1乃至5のいずれか1項に記載のプロセッサ。
  7. 演算対象のデータの性質に基づいて分類された、第1タイプの命令及び第2タイプの命令を含むプログラムから命令を順次取得してデコードするデコーダと、
    前記第1タイプの命令を前記デコーダから順次受信して実行する第1演算ユニットと、
    前記第2タイプの命令のオペランドに含まれる、前記第1演算ユニットに関連するレジスタにセットされる変数値を定数値に置換するオペランド処理回路と、
    前記デコーダによってデコードされ、前記オペランド処理回路によってオペランドが置換された前記第2タイプの命令をキューイングするバッファと、
    前記第2タイプの命令に係るレジスタの値を記憶するレジスタファイルと、
    を備えるサブプロセッサを複数備え、
    更に、
    前記第2タイプの命令に係る演算を実行する複数の演算器と、
    前記複数のサブプロセッサそれぞれの前記バッファから並行して前記第2タイプの命令を順次取得し、取得した命令により実行される演算の種類に基づいて前記複数の演算器から選択した演算器に前記取得した命令を供給する制御回路と、
    を備えることを特徴とするプロセッサ。
JP2007080000A 2007-03-26 2007-03-26 プロセッサ Expired - Fee Related JP5154119B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2007080000A JP5154119B2 (ja) 2007-03-26 2007-03-26 プロセッサ
US12/529,184 US20100095091A1 (en) 2007-03-26 2008-03-20 Processor, Method and Computer Program
EP08718099A EP2140348A2 (en) 2007-03-26 2008-03-20 Processor, method and computer program
PCT/EP2008/053384 WO2008116830A2 (en) 2007-03-26 2008-03-20 Processor, method and computer program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007080000A JP5154119B2 (ja) 2007-03-26 2007-03-26 プロセッサ

Publications (2)

Publication Number Publication Date
JP2008242647A true JP2008242647A (ja) 2008-10-09
JP5154119B2 JP5154119B2 (ja) 2013-02-27

Family

ID=39616560

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007080000A Expired - Fee Related JP5154119B2 (ja) 2007-03-26 2007-03-26 プロセッサ

Country Status (4)

Country Link
US (1) US20100095091A1 (ja)
EP (1) EP2140348A2 (ja)
JP (1) JP5154119B2 (ja)
WO (1) WO2008116830A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012095984A1 (ja) * 2011-01-13 2012-07-19 富士通株式会社 スケジューリング方法及びスケジューリングシステム

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10387158B2 (en) 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10387156B2 (en) 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10303525B2 (en) 2014-12-24 2019-05-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10942744B2 (en) 2014-12-24 2021-03-09 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US9785442B2 (en) 2014-12-24 2017-10-10 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10061583B2 (en) 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10061589B2 (en) 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10229470B2 (en) * 2016-08-05 2019-03-12 Intel IP Corporation Mechanism to accelerate graphics workloads in a multi-core computing architecture
GB2564144B (en) 2017-07-05 2020-01-08 Advanced Risc Mach Ltd Context data management
JP7014965B2 (ja) * 2018-06-06 2022-02-02 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN115222015A (zh) * 2021-04-21 2022-10-21 阿里巴巴新加坡控股有限公司 指令处理装置、加速单元和服务器

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH052484A (ja) * 1991-06-24 1993-01-08 Mitsubishi Electric Corp スーパースカラプロセツサ
JPH05250499A (ja) * 1992-01-06 1993-09-28 Univ Bar Ilan データフロー計算機
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
JPH08263287A (ja) * 1995-01-24 1996-10-11 Internatl Business Mach Corp <Ibm> 思惑命令の例外処理
JPH09185506A (ja) * 1995-11-09 1997-07-15 Internatl Business Mach Corp <Ibm> プロセッサ内で命令を実行する方法およびシステム
WO1998037485A1 (en) * 1997-02-21 1998-08-27 Richard Byron Wilmot Method and apparatus for forwarding of operands in a computer system
JP2001525966A (ja) * 1997-05-23 2001-12-11 アスペックス・テクノロジー・リミテッド 命令発行速度を加速するプロセッサ・コントローラ
US6615340B1 (en) * 2000-03-22 2003-09-02 Wilmot, Ii Richard Byron Extended operand management indicator structure and method
JP2006313422A (ja) * 2005-05-06 2006-11-16 Nec Electronics Corp 演算処理装置及びデータ転送処理の実行方法
JP2007026392A (ja) * 2005-07-21 2007-02-01 Toshiba Corp マイクロプロセッサ

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5813045A (en) * 1996-07-24 1998-09-22 Advanced Micro Devices, Inc. Conditional early data address generation mechanism for a microprocessor
US6516405B1 (en) * 1999-12-30 2003-02-04 Intel Corporation Method and system for safe data dependency collapsing based on control-flow speculation
US7085310B2 (en) * 2001-01-29 2006-08-01 Qualcomm, Incorporated Method and apparatus for managing finger resources in a communication system
JP3895228B2 (ja) * 2002-05-07 2007-03-22 松下電器産業株式会社 無線通信装置および到来方向推定方法
JP4407829B2 (ja) * 2003-05-21 2010-02-03 日本電気株式会社 受信装置及びそれを用いる無線通信システム
US20060203894A1 (en) * 2005-03-10 2006-09-14 Nokia Corporation Method and device for impulse response measurement

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
JPH052484A (ja) * 1991-06-24 1993-01-08 Mitsubishi Electric Corp スーパースカラプロセツサ
JPH05250499A (ja) * 1992-01-06 1993-09-28 Univ Bar Ilan データフロー計算機
JPH08263287A (ja) * 1995-01-24 1996-10-11 Internatl Business Mach Corp <Ibm> 思惑命令の例外処理
JPH09185506A (ja) * 1995-11-09 1997-07-15 Internatl Business Mach Corp <Ibm> プロセッサ内で命令を実行する方法およびシステム
WO1998037485A1 (en) * 1997-02-21 1998-08-27 Richard Byron Wilmot Method and apparatus for forwarding of operands in a computer system
JP2001525966A (ja) * 1997-05-23 2001-12-11 アスペックス・テクノロジー・リミテッド 命令発行速度を加速するプロセッサ・コントローラ
US6615340B1 (en) * 2000-03-22 2003-09-02 Wilmot, Ii Richard Byron Extended operand management indicator structure and method
JP2006313422A (ja) * 2005-05-06 2006-11-16 Nec Electronics Corp 演算処理装置及びデータ転送処理の実行方法
JP2007026392A (ja) * 2005-07-21 2007-02-01 Toshiba Corp マイクロプロセッサ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012095984A1 (ja) * 2011-01-13 2012-07-19 富士通株式会社 スケジューリング方法及びスケジューリングシステム
US9507635B2 (en) 2011-01-13 2016-11-29 Fujitsu Limited Assigning speculative processes to plurality of CPUs based on calculated maximum number of speculative processes capable of being assigned and other processes assigned to each CPU

Also Published As

Publication number Publication date
JP5154119B2 (ja) 2013-02-27
US20100095091A1 (en) 2010-04-15
WO2008116830A2 (en) 2008-10-02
WO2008116830A3 (en) 2009-02-26
EP2140348A2 (en) 2010-01-06

Similar Documents

Publication Publication Date Title
JP5154119B2 (ja) プロセッサ
US11061672B2 (en) Chained split execution of fused compound arithmetic operations
KR101515311B1 (ko) 승산-승산-누산 명령 수행
US8601239B2 (en) Extended register addressing using prefix instruction
US8069340B2 (en) Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions
US8074060B2 (en) Out-of-order execution microprocessor that selectively initiates instruction retirement early
JP5491071B2 (ja) 命令融合演算装置および命令融合演算方法
JP2018519602A (ja) 連続ブロックの並列実行を有するブロックベースアーキテクチャ
US8516223B2 (en) Dispatching instruction from reservation station to vacant instruction queue of alternate arithmetic unit
US20220035635A1 (en) Processor with multiple execution pipelines
US11080063B2 (en) Processing device and method of controlling processing device
US7437544B2 (en) Data processing apparatus and method for executing a sequence of instructions including a multiple iteration instruction
JP4444305B2 (ja) 半導体装置
KR20080008683A (ko) 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치
US11314505B2 (en) Arithmetic processing device
JP7495030B2 (ja) プロセッサ、処理方法、および関連デバイス
JP5786719B2 (ja) ベクトルプロセッサ
JP2001142694A (ja) データフィールドのエンコード方法、情報フィールドの拡張方法、及び、コンピュータシステム
US10606602B2 (en) Electronic apparatus, processor and control method including a compiler scheduling instructions to reduce unused input ports
JP6307975B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP6314620B2 (ja) 演算処理装置および演算処理装置の制御方法
JP2002318689A (ja) 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法
WO2017031975A1 (en) System and method for multi-branch switching
JP4703735B2 (ja) コンパイラ、コード生成方法、コード生成プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120824

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121113

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: 20121126

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121205

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151214

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5154119

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees