JP2009524167A - オペランドの早期の条件付き選択 - Google Patents

オペランドの早期の条件付き選択 Download PDF

Info

Publication number
JP2009524167A
JP2009524167A JP2008551563A JP2008551563A JP2009524167A JP 2009524167 A JP2009524167 A JP 2009524167A JP 2008551563 A JP2008551563 A JP 2008551563A JP 2008551563 A JP2008551563 A JP 2008551563A JP 2009524167 A JP2009524167 A JP 2009524167A
Authority
JP
Japan
Prior art keywords
operand
instruction
operands
pipeline
stage
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
JP2008551563A
Other languages
English (en)
Other versions
JP5335440B2 (ja
JP2009524167A5 (ja
Inventor
ディーフェンダーファー、ジェームズ・ノリス
ブリッジス、ジェフリー・トッド
マクイルバイン、マイケル・スコット
サートリウス、トマス・アンドリュー
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2009524167A publication Critical patent/JP2009524167A/ja
Publication of JP2009524167A5 publication Critical patent/JP2009524167A5/ja
Application granted granted Critical
Publication of JP5335440B2 publication Critical patent/JP5335440B2/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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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

Landscapes

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

Abstract

選択オペランド命令によって使用されないオペランドを待つことによる遅延は、選択オペランド命令の処理を完了するために、そのようなオペランドデータが不要であることを早く認識することに基づいて軽減される。実行前の適切な時点で、選択オペランド命令によって指定された1つ以上の選択基準、選択基準に影響を与える条件、およびオペランドの使用可能性に関して、決定がなされる。ホールド回路は、この決定を使用して、プロセッサパイプラインのストールを制御するホールド信号のアクティベーションおよび解除を制御する。選択されたオペランドが使用可能であるときは、使用されない他のオペランドが使用可能でなくても、オペランドデータを待つのに必要なストールはスキップされるか、またはストールは早く終了する。選択基準が満たされ、選択されたオペランドがフェッチされ、使用可能になるまで、オペランドを待つことに因るストールは維持される。
【選択図】 図2A

Description

本開示は、全体的に、プロセッサパイプラインにおいて命令を処理する技術、より具体的には、パイプラインプロセッサにおける前の命令の実行によって設定された条件に基づいて複数のオペランドからオペランドを早期に条件付きで選択することに関する。
携帯電話、ラップトップコンピュータ、パーソナルデータアシスタント(personal data assistant, PDA)、等のような一般にポータブルの製品は、通信およびマルチメディア アプリケーションをサポートするプログラムを実行するプロセッサの使用を必要とする。このような製品のための処理システムは、プロセッサ、命令のソース、入力オペランドのソース、および実行結果を記憶する記憶空間を含む。例えば、命令および入力オペランドは、汎用レジスタ、例えば命令キャッシュおよびデータキャッシュを含む多段キャッシュ(multi-level cache)、並びにシステムメモリから成る階層メモリ構成に記憶され得る。
プログラムの実行において高い性能を提供するために、プロセッサは、一般に、プロセッサを製造するのに使用される処理技術およびアプリケーションに対して最適化されたパイプラインで命令を実行する。高性能プロセッサにおいて、記憶装置からオペランドにアクセスする速度は、プロセッサの命令実行速度よりも遅いことが多い。したがって、記憶装置からオペランドを指定した命令を得ることにより、記憶装置のアクセス時間とプロセッサのクロックサイクル時間との差に相当する1以上のサイクルの間、プロセッサをストールすることになり得る。さらに、命令が、前の命令の実行結果であるソースオペランドを指定することは、しばしば行われる。複数ステージの実行パイプラインにおいて、前の実行結果を必要とする命令は、前の命令の実行が完了するまで、ストールされなければならない。これらのストールは、プロセッサの性能を制限する。
発明の概要
幾つかの態様において、本開示は、命令を実行するときに生じ得るストール数を最小化することが一般に好都合であると認識している。したがって、ストールを最小化し、通信およびマルチメディア アプリケーションをサポートするプログラムのようなプログラムにおいて分岐命令の使用を回避または最小化するのを助ける、選択オペランド命令(select operand instruction)を実施することが望まれ得る。プロセッサに対するこのような改良は、プロセッサの動作の性能および効率を向上する。
本開示の実施形態は、パイプライン動作の方法に適用される。方法は、少なくとも2つのオペランドのグループから選択される少なくとも1つのオペランドを指定する命令を検出することを含み、その中の少なくとも1つは、パイプラインにおいてインフライト(in flight)であり得る。別のステップは、次に、命令によって指定されたオペランド選択基準を決定する。選択基準が決定されると、次に、それを評価して、少なくとも2つのオペランドのグループから少なくとも1つのオペランドを選択する。少なくとも1つの選択されたオペランドが使用可能になると、選択されていないオペランドが使用可能になるのを待つことなく、命令は実行に引き渡され得る。
本開示の別の態様は、パイプラインプロセッサにおいて命令を処理する装置に関する。装置は、複数の命令の中の各命令によって要求される入力オペランドデータを使用して、命令を実行する実行ステージを含む。ホールド回路を使用して、各命令に対してホールド(hold)を発生し、全ての入力オペランドデータが受信されると、ホールドを終了する。装置は、入力オペランドデータの受信を完了する前に、選択するオペランドデータを決定し、選択されたオペランドデータが使用可能であると決定すると、実行中の命令において指定された選択基準に関してホールドを終了する手段をさらに含む。
本明細書に開示された発明の概念および別の特徴のより完全な理解は、次の詳細な説明および添付の図面から明らかになるであろう。
詳細な説明
ここで、本開示の幾つかの実施形態が示されている添付の図面を参照して、本開示をより完全に説明する。しかしながら、この開示は、種々の形で具現することができ、本明細書で説明された実施形態に制限されると解釈されるべきではない。むしろ、この開示が行われて達成され、本開示の範囲を当業者に十分に伝えるために、これらの実施形態は与えられている。
本開示の教示にしたがって動作を行うときまたは行うために実行されるコンピュータプログラムコードまたは“プログラムコード”は、C、C++、JAVA(登録商標)、Smalltalk、JavaScript(登録商標)、Visual Basic(登録商標)、TSQL、Perl、または種々の他のプログラミング言語のような高水準のプログラミング言語で最初に書かれ得る。これらの言語の1つで書かれたプログラムは、ターゲット プロセッサ アーキテクチャにコンパイルされ、高水準のプログラムコードをネイティブ アセンブラ プログラムに変換する。ターゲット プロセッサ アーキテクチャのプログラムは、直接にネイティブ アセンブラ言語で書かれることもある。ネイティブ アセンブラ プログラムは、機械レベルの2値命令の命令ニーモニック表現(instruction mnemonic representation)を使用する。本明細書で使用されるプログラムコードまたはコンピュータ読み出し可能媒体は、そのフォーマットがプロセッサによって理解可能であるオブジェクトコードのような機械語コードを指す。
図1は、本開示の実施形態が使用され得る例示的な無線通信システム100のブロック図である。説明の目的で、図1は、3つの遠隔ユニット120、130、および150と、2つの基地局140とを示している。一般に、無線通信システムは追加の遠隔ユニットおよび基地局を有し得ることが分かるであろう。遠隔ユニット120、130、および150は、本開示にしたがってプログラムコードを実行して、動作するプロセッサを有するハードウェア構成要素125A、125B、および125Cをそれぞれ含む。図1は、基地局140から遠隔ユニット120、130、および150への順方向リンク信号180と、遠隔ユニット120、130、および150から基地局140への逆方向リンク信号190とを示している。
図1において、遠隔ユニット120は移動電話として示され、遠隔ユニット130はポータブルコンピュータとして示され、遠隔ユニット150は無線ローカルループシステムにおける固定位置の遠隔ユニットとして示されている。例えば、遠隔ユニットは、ハンドヘルド型のパーソナル通信システム(personal communication systems, PCS)ユニット、パーソナル データ アシスタントのようなポータブル データ ユニット、またはメータ示度装置(meter reading equipment)のような固定位置のデータユニットであり得る。図1は、本開示の教示にしたがう遠隔ユニットを示しているが、本開示は、これらの例示的な図示されたユニットに制限されない。例えば、向上した処理効率は、一般に、図示された遠隔デバイスだけでなく、内部プロセッサを有する大多数の製品にとって望ましい特徴である。命令の効率的な実行における改善は、本開示にしたがって、パイプラインプロセッサにおいて、ソースオペランドを条件付きで選択する命令をもつことによって得ることができる。
プロセッサは、一般に、命令が指定したオペランドを演算する命令の様々なセットを使用する。ロード(load)、記憶(store)、加算(add)、乗算(multiply)、シフト(shift)、選択(select)、AND命令、またはOR命令は、命令セットアーキテクチャにおいて与えられ得る命令の例である。選択命令は、命令の一例であって、ここでは、オペランドは2つ以上のオペランドの選択肢から条件付きで選択され、選択されたオペランドはターゲット レジスタ アドレスに記憶され得る。選択命令を効率的に実行するために、どのオペランドを選択するかの決定およびフェッチ動作は、プロセッサのストールのために失われる時間を最短にして処理される。
図2Aは、オペランド機能の条件付き選択が使用され得る、例示的なパイプラインプロセッサ複合体(pipelined processor complex)200の機能ブロック図である。プロセッサ複合体200は、プロセッサパイプライン202、L1命令キャッシュ204、L1データキャッシュ206、およびメモリ階層208を含む。プロセッサ複合体に接続し得る周辺デバイスは、説明を分かり易くするために示されていない。本開示の第1の実施形態にしたがって、プロセッサ複合体200は、メモリ階層208に記憶されているプログラムコードを実行するために、ハードウェア構成要素125Aないし125Cにおいて適切に使用され得る。
プロセッサパイプライン202は、5つの主なステージ、命令フェッチステージ210、デコードステージ212、レジスタ読み出しステージ214、実行ステージ216、およびライトバックステージ218を含む。当業者は、これらのステージの何れが複数のステージに分割されて、関連する機能の一部を行い得るか、またはパイプラインが、追加の機能を提供する他のステージを含み得るかが分かるであろう。説明のために、主なステージの幾つかが1つのステージとして示されているが、各々は、高速設計のために2つ以上のステージに分割されてもよい。例えば、実行ステージ216は、3つのサブステージ、すなわち、実行A(executeA)220、実行B(executeB)222、および実行C(executeC)224に分割される。
1つのプロセッサパイプライン202が示されているが、条件付きで選択されるオペランドに関する命令の処理は、スーパースカラ設計、および並列パイプラインを実施する他のアーキテクチャに適用可能である。別の実施においてオペランド命令の条件付き選択をサポートするプロセッサは、プロセッサパイプライン202よりも少ないステージまたは多いステージをもつこともある。例えば、高クロックレートのために設計されたスーパースカラ プロセッサは、2つ以上の並列パイプラインをもつことができ、各パイプラインは、高クロックレートをサポートするために、命令フェッチステージ210、デコードステージ212、レジスタ読み出しステージ214、実行Aステージ220、実行Bステージ222、および実行Cステージ224、およびライトバックステージ218を、2つ以上のパイプラインステージに分割し、全体的なプロセッサパイプラインの深度(depth)を高め得る。
プロセッサパイプライン202において、第1のステージは、命令フェッチステージ210である。命令フェッチステージ210は、L1命令キャッシュ204から、後のステージによって処理するための命令をフェッチする。命令フェッチが、L1命令キャッシュ204においてミスすると、命令は、レベル2(L2)キャッシュおよびメインメモリを含み得るメモリ階層208からフェッチされる。命令は、ブート読み出し専用メモリ(read only memory, ROM)、ハードドライブ、光ディスクのような他のソースから、あるいはインターネットのような外部インターフェースから、メインメモリにロードされてもよい。
命令フェッチステージ210は、各フェッチされた命令をデコードステージ212へ供給する。デコードステージ212は、命令を、パイプラインの次のステージに供給される制御ビットの集まり(collection)にデコードし、フェッチされた命令の実行に関連したデコードにおける追加の動作をサポートし得る。
選択オペランドタイプ命令(select operand type instruction)の一般的な形態は、プロセッサパイプライン202において使用および実行され、例えば、後述で説明されるように、分岐を回避して、処理の前にデータを操作するか、またはデータをマージ(merge)し得る。例えば、ロード、記憶、算術(arithmetic)、論理、シフト、比較、ビット操作命令、等は、オペランドデータを条件付きで処理するために、オペランド選択機能の追加により増補(augment)され得る。選択オペランドロード命令(select operand load instruction)および選択オペランド記憶命令(select operand store instruction)において、選択は、少なくとも2つのメモリベースアドレス間で行われる。これらは、汎用レジスタ(general purpose register, GPR)ファイルに記憶され、GPRレジスタアドレスとして参照される。選択加算命令(select add instruction)において、オペランドは、少なくとも2つのオペランドの選択肢から選択され、選択されたオペランドは、別のオペランドに加算される。選択オペランド命令の一般的な形態において、オペランドの1つまたはグループは、満たされた1つ以上の選択基準に基づいて、オペランドのより大きなグループから選択され得る。オペランドの選択された1つまたはグループは、選択オペランド命令によって指示されるように、さらなる処理のために実行パスに供給される。1つ以上の基準が、選択を決定する基準として使用され得ることに注意すべきである。選択オペランドタイプ命令の一般的な形態のサブセットは、選択命令であり、オペランドは、2つのレジスタオペランドから条件付きで選択され、選択されたオペランドは、ターゲット レジスタ アドレスに記憶される。選択オペランド命令の別の形態は、レジスタオペランドおよび即値(immediate value)からの選択を指定する命令である。
別の例は、ベクトルプロセッサで使用され得るオペランドの2つ以上のブロックの選択肢からオペランドのブロックを選択するのに使用される選択オペランド命令である。オペランドの各ブロックは、ブロックの始まりのポインタを含んでいる選択オペランド命令内のフィールドによって参照される。さらに、一般的な選択基準は、複数ビット選択基準から得ることができる3つ以上の選択肢を指定し得る。選択基準は、どのオペランドがより大きなグループから選択されるか、選択されるオペランドの数、またはプロセッサの命令セットアーキテクチャによって指定される他の選択機構を指定し得る。
オペランドの選択を決定するのに使用される条件は、種々の算術、論理、および命令セットアーキテクチャにおいて一般に指定されている他の機能命令の実行において、プロセッサによって設定された条件フラグから生成され得る。例えば、負(negative, N)ビット226は、Nビットに影響を与える命令に対して、実行結果が負であるかどうかを示す。ゼロ(zero, Z)ビット228は、Zビットに影響を与える命令に対して、実行結果が全てゼロであるかどうかを示す。桁上げ(carry, C)ビット230は、Cビットに影響を与える命令に対して、実行結果が桁上げ(carry out)に関わるかどうかを示す。オーバーフロー(overflow, V)ビット232は、Vビットに影響を与える命令に対して、実行結果がオーバーフローするかどうかを示す。これらのビットは、プログラム状態レジスタの一部でもあり得る条件コード(condition code, CC)レジスタ234またはフラグレジスタに記憶され得る。
条件コードビットは、実行の種々のステージによって設定され得るが、条件コードビットを変更するプログラムの順序(program order)は維持される。例えば、加算、論理演算、ビット選択、アドレス生成、等のような特定の演算は、実行Aステージ220において達成され得る。これらの実行Aステージ220の命令は、条件コードレジスタ234に影響を与えるようにも指定され、実行の最後に、影響を受けた条件コードビットをパス240により送り得る。レジスタシフト命令を用いた算術論理ユニット(arithmetic logic unit, ALU)の演算において指定されるようなより複雑な演算は、2つの別々の演算ステップに分割され得る。第1の演算ステップは、実行Aステージ220において達成され、第2の演算ステップは、実行Bステージ222において達成される。実行Bステージ222における命令の実行が完了すると、条件コードレジスタ234に対する変更は、パス242により送られ得る。より複雑な性質をもつ演算は、追加の実行ステージを利用して、達成し得る。例えば、乗算命令は、3つのステージ、すなわち、実行Aステージ220、実行Bステージ222、および実行Cステージ224を利用して、乗算の演算を完了し得る。第3のステージが完了すると、条件コードレジスタ234は、パス244を通って送られた適切なビットによって再び影響を受け得る。命令は、実行の長さの違いのために、プログラムの順序とは異なる順序で完了し得るので、条件コードレジスタ234内のビットは、プログラムの順序にしたがって設定される。条件レジスタ234のビットの設定を制御する機能は、説明のために、CC制御論理246に含まれている。
選択オペランド命令の処理は、デコードステージ212から始まり得る。オペランド選択基準の状態を決定する前に、全てのオペランドがフェッチされるのを待つのではなく、デコードステージは、オペランド選択基準を最初に決定する。オペランド選択基準を決定するために、パイプラインを調べて、オペランド選択基準に影響を与え得る命令が、パイプラインに既に存在しているかどうかを決定しなければならない。条件コードレジスタに影響を与える命令は、レジスタ内の1ビットのみ、全ビット、またはビットのある組合せに影響を与え得るので、選択オペランド命令によって指定されるオペランド選択基準をデコードして、条件コードレジスタ内のビットのどの組合せが要求されているかを決定する。例えば、前の結果が、Zビット228の設定によりゼロであったときは、1つのオペランドが選択され、Zビットが設定されなかったときは、異なるオペランドが選択される。前の計算が正の非ゼロ(positive nonzero)になった場合のオペランドの選択は、Nビット226およびZビット228の両者を調べて、その両者が“ゼロ”に設定されているかどうかを確認することによって得ることがきる。条件コードレジスタ234の値は、条件コード(condition code, CC)パス248により、デコードステージ212、レジスタ読み出しステージ214、および実行Aステージ220へ転送(forward)され、ここで条件コードビットは監視され得る。
デコードステージ212において選択オペランド命令を用いるとき、それの先に、プロセッサパイプライン202内に4つまでの追加の命令があり得る。これらの4つの追加の命令の中の3つは、異なる実行ステージにあり得る。複数の実行ステージが、同じ条件コードビットに影響を与え得る命令を用いて、同時に処理されるとき、実行のプログラムの順序は、条件コードビットの設定において、どの命令が優先されるかを指示する。選択オペランド命令よりも前にあって、オペランド選択基準に使用される条件コードビットに影響を与える最後の命令は、ルックアヘッド プロセスによって決定される。
ルックアヘッド プロセスは、さらに、パイプラインを通っている各命令からデコードされた制御ビットを用いて、デコードを開始する。制御ビットの一部は、命令が影響を与える条件ビットを、もしあれば示す。各デコードされた命令の制御ビットは、パイプラインを通っている命令指定動作にしたがい、各パイプラインステージを調べて、その動作ステージが条件コードレジスタ234に影響を与えるかどうかを決定することができる。例えば、ルックアヘッドは、各パイプラインの実行ステージにおいて特定の制御ビットのORとして演算し得る。このアプローチは、パイプライン実行ステージにおける命令が、1つ以上の関連する条件ビットに影響を与えない場合のクイックテスト(quick test)として有益である。制御ビットは、パイプラインの各実行ステージにおいて使用可能であるので、条件レジスタが影響を受け得るときを決定することもできる。
パイプライン実行ステージにおける命令が、1つ以上の関連する条件ビットに影響を与えないとき、デコードステージにおけるオペランド選択基準を決定するのに使用可能な十分な情報がある。どのオペランドが選択されるかが決定されると、処理は、次のレジスタ読み出しステージ214に進み、読み出しステージ214は、制御情報を与えられ、選択されたオペランドのみをフェッチする。
パイプライン実行ステージにおける少なくとも1つの命令が、1つ以上の関連する条件ビットに影響を与えるとき、処理は、次のレジスタ読み出しステージ214に進み、レジスタ読み出しステージ214は、制御情報を与えられ、選択オペランド命令によって要求された全オペランドをフェッチする。全オペランドがフェッチされる一方で、選択基準の決定が監視される。さらに詳しく別途記載されるように、全てのオペランドがフェッチされる前に、選択基準が決定されてもよく、これを使用して、ストール時間を低減することができる。
レジスタ読み出しステージ214は、例えば、実行Aステージ220において、処理されることを要求されたオペランドをフェッチする。オペランドは、汎用レジスタ(general purpose register, GPR)ファイル250から、または転送ネットワーク(forwarding network)(図示されていない)からフェッチされ得る。転送ネットワークは、実行ステージから結果のオペランドが使用可能になると直ぐにそれらを供給するために、GPRファイル250の周りに高速のパスを与えている。転送ネットワークを用いても、深い実行パイプライン202からの結果のオペランドは、プロセッサパイプライン202のように3サイクル、または別の実施では4サイクル以上かかり得る。これらのサイクルの間、実行パイプラインから結果のオペランドデータを要求するレジスタ読み出しステージ214における命令は、結果のオペランドが使用可能になるまで待たなければならない。
説明されなければならないストーリング状況(stalling situation)の別の例は、ロード命令の実行により生じる。L1データキャッシュ206においてミスがあると、ロード命令の実行には、相当な数のサイクルがかかり得る。ロード命令は、GPRファイル250のレジスタを使用して、ベースアドレスを供給し、実行Aステージ220においてベースアドレスに即値を加えて、有効アドレスを生成し得る。有効アドレスは、データパスによりL1データキャッシュ206に送られる。L1データキャッシュ206においてミスがあると、データは、L2キャッシュおよびメインメモリを含み得る記憶階層208からフェッチされなければならない。L1データキャッシュのミスの後でデータをフェッチするのにかかるサイクルの間、ソースオペランドのようなインフライトのロードデータを要求する命令は、インフライトのオペランドが使用可能になるまで、パイプラインにおいてストールされる。ストールは、レジスタ読み出しステージ214において、または実行Aステージ220の最初に生じると考えられ得る。ミスが解決すると、ロードデータは、パス254により、ライトバックステージ218の一部であると考えられ得るライトバック動作に転送される。次に、オペランドは、GPRファイルに書き込まれ、さらに、転送ネットワークへ送られ得る。後述で説明されるように、ロード動作が原因の、選択オペランド命令の実行におけるストールの影響は、最小化され得る。
幾つかのプロセッサパイプラインでは、レジスタファイルへのアクセスが始まった後で、選択基準の評価が行われ得ることに注意すべきである。この場合に、オペランドが不要であって、まだ受信されていないと決定されると、オペランドがインフライトであるときは、命令の処理が追跡を停止するか、またはプロセッサが、オペランドが使用可能であることを示すタグに対して、転送ネットワークを“リッスンすること(listening)”を停止する。この手続きは、フェッチ動作よりもパッシブな動作(passive operation)である。何れのアプローチも、本開示の教示の中で実行可能である。
図2Bは、プロセッサの実行ステージに入る前にプロセッサパイプラインをストールするときを決定する条件を識別する例示的な判定テーブル265である。評価されるパイプライン内の命令は、2つのオペランドの選択肢、すなわち、オペランドA(operandA)およびオペランドB(operandB)から一方のオペランドの選択を指定する、選択オペランド命令である。オペランドBおよびオペランドAの使用可能性(availability)は、列(column)266および267にそれぞれ示されている。テーブル265は、選択基準がオペランドAの選択を決定するというシナリオに基づく。オペランドが使用可能であると示されると、オペランドを得るための追加のサイクルは不要である。選択基準の状態は、列268に示されている。フェッチ動作は、列269に示されているように、使用可能でない一方または両方のオペランドを得るように指示される。オペランドは、転送ネットワークによって、またはGPRファイルから与えられると、パイプラインをストールすることなく、使用可能であり得る。選択基準を決定することができない(使用可能でない)とき、これは、選択基準に影響を与え得る少なくとも1つの命令がパイプライン中にあるためであると見なされる。ストールの列270に示されているように、オペランドおよび選択基準を含めて、実行を完了するための入力が使用可能でないとき、パイプラインはストールされる。全体的な動作のシナリオは、テーブルの行(row)によって示されている。
行271は、オペランドAもオペランドBも使用可能でなく、選択基準も使用可能でないことを示している。パイプラインはオペランド読出しステージにおいてストールされ、その間に両者のオペランドはフェッチされ、1つ以上の選択基準条件ビットは監視される。行272は、両者のオペランドが使用可能になる前に、選択基準が決定されることを示し、この場合、オペランドBは不要であることが分かる。例えば、行271のシナリオで、オペランドBのフェッチが始まっていた場合は、オペランドBのフェッチは支障なく(safely)終了することができる。パイプラインは、読み出しステージにおいてストールされ、オペランドAが使用可能になるのを待つ。行273および275のシナリオにおけるように、選択基準が決定される前に、オペランドAまたはオペランドBが使用可能になると、処理は読み出しステージにおいてストールされたままになって、他方のオペランドが使用可能になるか、または選択基準がオペランドフェッチ動作において影響を与え得るように選択基準が決定されるのを待つ。シナリオ277におけるように、パイプラインのストールは始まった後であるが、選択基準が決定される前に、両者のオペランドが使用可能である、または使用可能になると、処理は読み出しステージにおいてストールされたままになって、選択基準が決定されるのを待つ。行274のシナリオにおけるように、読み出しストールが始まった後で、選択基準が決定され、オペランドAは使用可能であるが、オペランドBが使用可能ではないときは、オペランドBのフェッチは終了し、処理は実行ステージを進む。処理が、ストールすることなく、行274のようなシナリオに達すると、入力は使用可能であり、処理は実行ステージを進むので、レジスタ読み出しステージにおけるストールは不要である。行276のシナリオにおけるように、読み出しストールが始まった後で、選択基準が決定され、オペランドBは使用可能であるが、オペランドAは使用可能ではないときは、オペランドAが使用可能になるまで、ストールは続く。処理が、ストールすることなく、行276のようなシナリオに達すると、オペランドAが使用可能ではないので、レジスタ読み出しステージにおいてストールが必要である。オペランドおよび選択基準の両者が使用可能であるとき、パイプラインのストールは不要であり、処理は実行ステージを進む。
本明細書に教示されているように、選択オペランド命令が実行を開始し、選択されたオペランドが使用可能であるときは、使用されない他方のオペランドが使用可能でなくても、オペランドデータを待つのに必要なストールをスキップするか、またはストールを早く終了する。選択基準が決定され、選択されたオペランドがフェッチされ、使用可能になるまで、選択オペランド命令のオペランドを待つことに因るストールは、維持される。
オペランドが処理のために使用可能になると、実行ステージに入る。選択基準に基づいて2つのGPRファイルのオペランドの中から選択し、選択されたオペランドをターゲットGPRファイルアドレスに記憶する選択命令において、動作は、実行ステージをバイパスし、選択されたオペランドをライトバックステージ218および転送ネットワーク(図示されていない)に転送し得る。通常、結果の転送ネットワーク(図示されていない)があり、各実行ステージの結果を、パイプラインを通っている後の命令に転送する。一般の選択オペランド命令(general select operand instruction)において、選択されたオペランドは、実行Aステージ220に渡され、実行ステージの処理が始まる。
各実行ステージは、命令が指定した動作の複雑さに応じて、命令の処理を完了するか、または要求された動作の一部のみを処理し得る。各実行ステージがその動作を完了すると、結果は、ライトバックステージ218に直接に送られ得る。例えば、命令が、実行Aステージ220の最後に、その指定された動作を完了すると、結果は、パス252によりライトバックステージ218に転送され得る。同様に、実行Bステージ222の最後にその動作を完了する命令は、パス258により結果をライトバックステージ218に転送し、実行Cステージ224の最後にその動作を完了する命令は、パス260により結果をライトバックステージ218に転送する。ライトバックステージ218は、結果をレジスタのGPRファイル250にライトバックする。結果は、プログラムの順序と比較して順序を狂わせて(out of order)、ライトバックステージ218において受信され得るので、ライトバックステージ218は、GPRファイル250に結果を書き込むときに、プロセッサの機能を使用して、プログラムの順序を守る。
パックされたデータの処理を使用するとき、選択オペランドタイプ命令は、追加のフラグの使用によって拡張され得る。例えば、フラグのセットは、パックされたデータの処理において、バイトベースで、同数以上の(greater than or equal, GE)フラグ、より少ないフラグ(less than flags, LE)、または他の条件指示(conditional indication, CI)のように設定され得る。32ビットのデータタイプでは、4個のCIフラグを使用することができる。64ビットのデータタイプでは、8個のCIフラグを使用することができる。
図2Cは、本開示の第2の実施形態にしたがう、パックされたデータの選択オペランド命令(packed data select operand instruction)が使用され得る、パイプラインプロセッサ複合体280の機能ブロック図である。パイプラインプロセッサ282は、パックされた32ビットのオペランドをサポートするCIフラグ284に基づいて、1以上の選択基準を使用する。CIフラグ284は、プログラム状態語で、条件コードレジスタ286と共に、組み合わされたCC/CIレジスタ288として含まれ得る。
パックされたデータの選択オペランド命令は、CIフラグを使用して、2つのパックされたデータオペランドからバイトを選択することができる。例えば、32ビットのパックされたデータ選択命令は、命令セットアーキテクチャにおいて、個々のCI[3:0]フラグを使用するように指定され得る。CI[3:0]フラグは、1で、オペランドAから対応するバイトを選択し、ゼロであるときは、オペランドBから対応するバイトを選択する。CI[3:0]=1010は、オペランドAからバイト3を選択し、オペランドBからバイト2を選択し、オペランドAからバイト1を選択し、オペランドBからバイト0を選択し、選択されたバイトを含んだ32ビットのターゲットレジスタを生成する。CI[3:0]=1111であるときは、オペランドAの全バイトが選択される。CI[3:0]=0000であるときは、オペランドBの全バイトが選択される。CI[3:0]=1111の条件では、オペランドBは不要であり、フェッチされる必要はない。CI[3:0]=0000の条件では、オペランドAは不要であり、フェッチされる必要はない。選択基準は、プログラム状態語におけるCIフラグのビット設定によって決定される。オペランドをフェッチするか、またはオペランドのフェッチングを抑えるかを決定するために、全て1であるか、または全て0であるCIフラグに基づいて選択基準が使用され得る。
図2Aのホールド回路262および図2Cのホールド回路290のようなホールド回路を使用することによって、プロセッサパイプラインにおけるストールが生成され得る。ホールド回路は、ホールド信号を発生し、ホールド信号を使用して、例えば、パイプラインステージレジスタをゲート制御して、パイプラインにおいて命令をストールすることができる。図2Aのプロセッサパイプライン202および図2Cのパイプライン282では、レジスタ読み出しステージにおいて、全入力が使用可能であるわけではないとき、ホールド信号がアクティブにされ、入力が届くまで、パイプラインはホールドされる。全オペランドが使用可能になり、選択基準が決定されると、ホールド信号は解除される。例えば、図2Bのテーブル265に指定されているような動作シナリオにしたがって、ホールド信号を適切にアクティブにしたり、解除したりすることができる。
選択オペランド命令の処理は、命令のタイプを決定し、条件コードおよびフラグ、例えば、CIフラグを調べ、条件およびフラグ状態を示し、選択基準を決定することを伴う。命令は、それが選択オペランド命令であることを示すフィールドを命令フォーマット内にもち得る。本開示の教示は、種々の命令フォーマットおよびアーキテクチャの仕様に適用可能である。
図3は、本開示の教示にしたがう条件付きオペランド選択機能を指定する32ビットの命令300の一般的なフォーマットである。選択オペランド命令300は、命令を選択オペランド命令として識別するオペコード(opcode)302と、少なくとも2つのソース オペランド アドレス フィールドRa304およびRb306とを含んでいる。オペコード302は、選択基準と命令演算の両者を指定し、命令演算は、例えば、加算、乗算、シフト、論理、ビット操作、等である。その代わりに、1つ以上の別々のビットが、命令フォーマットにおいて、機能指定のみに使用されるオペコードおよび選択オペランド命令としての命令を識別するために指定され得る。他のビットフィールド308、310、および312は、命令を実行するかまたは命令を実行しないかを制御する条件フィールド、ターゲット レジスタ アドレス フィールド、データタイプ、等に使用するための命令指定フィールドであり得る。
図4は、プロセッサパイプラインにおいてオペランドを条件付きで早期に選択するのに必要な演算ステップを示すフローチャート400である。ステップ404において、フェッチされた命令は、例えば、デコードステージ212のようなデコードステージにおいてデコードされる。ステップ406において、命令が選択オペランド命令であるかどうかが決定される。命令が選択オペランド命令でないときは、処理はステップ408に移る。ステップ408において、オペランドの全ては、例えば、GPRファイル250のような汎用レジスタファイルから、レジスタ読み出しステージ214に適宜にアクセスされる。オペランドが直ちに使用可能でないとステップ410で決定されると、ステップ412で指示されるように、命令はストールされ、オペランドの全てを待たなければならない。全てのオペランドが使用可能であるとステップ410で決定されると、命令は、ステップ414において、例えば、図2Aの実行ステージ220から始まる、実行パイプラインを進むことを許される。
選択オペランド命令がフェッチされ、ステップ404でデコードされる別のシナリオを検討する。この場合には、ステップ406において、フェッチされた命令は選択オペランド命令であると決定され、処理はステップ416に移る。ステップ416において、図2AのCCレジスタ234または図2CのCC/CIレジスタ288のような条件コードレジスタの現在の状態に基づいて、オペランド選択基準を決定することができるかどうかを判定するテストが行われる。パイプライン内のインフライトの命令または前の命令が条件フラグに影響を与え、したがって、オペランド選択基準に影響を与え得るときは、選択基準を決定することができない。CCまたはCIレジスタの現在の状態に基づいて、オペランド選択基準を決定することができるとき、処理はステップ418に移る。ステップ418において、選択基準に基づいて選択されたオペランドがフェッチされる。処理は、続いてステップ420に進み、例えば、レジスタ読み出しステージ214に達する。ステップ420において、選択されたオペランドが使用可能であるかどうかが決定される。選択されたオペランドが直ちに使用可能ではないとステップ420において決定されると、ステップ422で指示されるように、命令はストールされ、選択されたオペランドを待たなければならない。
選択されたオペランドが使用可能であるとステップ420で決定されると、処理はステップ424に進み、命令が、一般の選択オペランド命令のタイプ(general select operand instruction type)のサブセットまたは一般の選択オペランド命令のタイプである選択命令であるかどうかを決定する。命令が選択命令であるときは、処理は、ステップ426に進み、実行ステージ216のような実行ステージはバイパスされ、オペランドは、ライトバックステージ218のようなライトバックステージに転送される。オペランドはさらに、転送ネットワークへ送られ得る。命令が、一般の選択オペランド命令であるとき、処理は、例えば、実行ステージ220から開始することによって、ステップ414に進む。
ステップ416におけるテストが、パイプライン内のインフライトの命令または前の命令がCCレジスタ234またはCC/CIレジスタ288に影響を与え、したがってオペランド選択基準に影響を与え得ると決定するといったシナリオが存在し得る。この場合に、処理はステップ430に進み、全てのオペランドをフェッチするプロセスが始まり、条件フラグは更新のために監視される。ステップ432において、選択基準の決定に関連する全てのCCまたはCIビットが更新されたかをどうかを決定するテストが行われる。関連するCCまたはCIビットが更新されていないときは、処理はステップ430に戻り、全オペランドのフェッチが続けられる。全ての関連するCCまたはCIビットが更新されたとステップ432において決定されると、処理はステップ434に進み、選択基準によって決定されるように、不要なオペランドのフェッチングは停止される。次に、処理はステップ420に進み、選択されたオペランドが使用可能であるかどうかが決定される。使用可能でないときは、ステップ422で指示されるように、選択されたオペランドが使用可能であると決定されるまで、命令の処理はストールされなければならない。
選択されたオペランドが使用可能であるときは、処理はステップ424に進み、命令が、一般の選択オペランド命令のタイプのサブセットまたは一般の選択オペランド命令のタイプである選択命令であるかどうかを決定する。命令が選択命令であるときは、処理はステップ426に進み、実行ステージ216のような実行ステージはバイパスされ、オペランドは、ライトバックステージ218のようなライトバックステージに転送される。オペランドはさらに、転送ネットワークへ送られる。命令が一般の選択オペランド命令であるときは、処理は、例えば、実行ステージ220から開始することによって、ステップ414に進む。
本開示は、現在の好ましいコンテキスト(context)において開示されたが、この教示は、この開示および本発明の請求項にしたがう種々のコンテキストに適応し得ることが分かるであろう。
本開示の実施形態が使用され得る例示的な無線通信システムのブロック図。 本開示の第1の実施形態にしたがう、オペランド機能の条件付き選択が使用され得る、パイプラインプロセッサ複合体の機能ブロック図。 本開示にしたがってプロセッサの実行ステージに入る前にプロセッサパイプラインをストールするときを決定する条件を識別する判定テーブル。 本開示の第2の実施形態にしたがう、パックされたデータオペランド機能の条件付き選択が使用され得る、パイプラインプロセッサ複合体の機能ブロック図。 本開示にしたがう、条件付きオペランド選択機能を指定する32ビットの命令の一般的なフォーマットの図。 本開示にしたがう、パイプラインにおいてオペランドを条件付きで初期に選択するのに必要な動作ステップのフローチャート。
符号の説明
100・・・無線通信システム、遠隔ユニット・・・120、130、150、125・・・ハードウェア構成要素、基地局・・・140、180・・・順方向リンク、190・・・逆方向リンク、200,280・・・パイプラインプロセッサ複合体、202,282・・・プロセッサパイプライン、216・・・実行ステージ、226・・・負ビット、228・・・ゼロビット、230・・・実行ビット、232・・・オーバーフロービット、234・・・条件コードレジスタ、240,242,244,248,252,254,258,260・・・パス、265・・・判定テーブル、284・・・条件指示(CI)フラグ、286・・・条件コード(CC)レジスタ、288・・・組み合わされたCC/CIレジスタ、300・・・32ビットの命令、304,306・・・ソース オペランド アドレス フィールド、308,310,312・・・他のビットフィールド、400・・・フローチャート。

Claims (20)

  1. パイプライン動作の方法であって、
    少なくとも2つのオペランドのグループから選択される少なくとも1つのオペランドを指定する命令を検出することであって、その中の少なくとも1つはパイプラインにおいてインフライトであり得る、ことと、
    命令によって指定されたオペランド選択基準を決定することと、
    オペランド選択基準を評価して、少なくとも2つのオペランドのグループから少なくとも1つのオペランドを選択することと、
    少なくとも1つの選択されたオペランドが使用可能になると、選択されていないオペランドが使用可能になるのを待つことなく、命令を実行に引き渡すこととを含む方法。
  2. 選択基準を決定することは、
    命令をデコードして、選択基準の基礎として使用される少なくとも1つの条件フラグを決定することをさらに含む請求項1記載の方法。
  3. 選択基準を評価することは、
    条件フラグがまだ実行中である前の命令によって影響を受け得る場合に影響を受ける選択基準によって指定される条件フラグを待つことをさらに含む請求項1記載の方法。
  4. 少なくとも1つの条件フラグを決定するステップは、
    プロセッサ実行パイプラインステージにおいてルックアヘッドして、少なくとも1つの条件フラグが実行中の前の命令によって影響を受け得るかどうかを調べることをさらに含む請求項2記載の方法。
  5. 少なくとも2つのオペランドが選択され、グループは少なくとも3つのオペランドを含む請求項1記載の方法。
  6. 命令は、少なくとも1つの選択されたオペランドの機能を指定する請求項1記載の方法。
  7. 機能は、少なくとも1つの選択されたオペランドに基づく計算結果を戻す請求項6記載の方法。
  8. 少なくとも2つのオペランドのブロックが、オペランドのブロックのグループから選択され、オペランドの各ブロックが2つ以上のオペランドをもつ請求項1記載の方法。
  9. 選択基準は、少なくとも1つのパックされたデータバイトの条件指示に基づく請求項1記載の方法。
  10. プロセッサパイプラインにおいて選択オペランド命令を処理する方法であって、
    プロセッサパイプラインのデコードステージにおいて、選択オペランド命令で指定された選択基準をデコードすることと、
    選択基準によって指定された条件フラグを解析することと、
    条件フラグの解析が、選択オペランド命令において指定された少なくとも2つのオペランドのグループの中の少なくとも1つのオペランドが選択されることを示すとき、選択されていないオペランドに対する実施中であり得る待機を終了することと、
    少なくとも1つの選択されたオペランドを用いて、選択オペランド命令を実行することとを含む方法。
  11. 条件フラグを解析することは、
    条件フラグがまだ実行中である前の命令によって影響を受け得る場合に影響を受け得る選択基準によって指定される条件フラグを待つことをさらに含む請求項10記載の方法。
  12. 少なくとも2つのオペランドのグループは、レジスタオペランドと即値オペランドとを含む請求項10記載の方法。
  13. 選択オペランド命令を実行することは、
    少なくとも1つの選択されたオペランドの機能である結果を戻すことをさらに含む請求項10記載の方法。
  14. 命令を処理するパイプラインプロセッサであって、
    複数の命令の中の各命令によって要求される入力オペランドデータを使用して、命令を実行する実行ステージと、
    複数の命令の各々に対して、実行ステージによってそれを実行する前に、各命令に対する入力オペランドデータの受信を完了するまで、ホールドを発生するホールド回路と、
    入力オペランドデータの受信を完了する前に、選択するオペランドデータを決定し、選択されたオペランドデータが使用可能であると決定すると、実行中の命令において指定された選択基準に関してホールドを終了する手段とを含むパイプラインプロセッサ。
  15. ホールドを終了することが、命令が実行を完了するのに不要な入力オペランドデータに対するフェッチ動作を終了することをさらに含む請求項14記載のパイプラインプロセッサ。
  16. 複数の命令の中の各命令を、選択基準を表わす条件コードを指定する制御ビットを含む制御ビットへデコードするデコーダと、
    パイプラインを通るステージごとに制御ビットを追跡するパイプラインステージとをさらに含む請求項14記載のパイプラインプロセッサ。
  17. 実行ステージが条件コードに影響を与え得るかどうかを決定するために、制御ビットは各パイプラインステージにおいて読み出し可能である請求項16記載のパイプラインプロセッサ。
  18. 実行中の命令は、選択オペランド命令を指定し、少なくとも2つのオペランドのグループから少なくとも1つのオペランドを選択する選択基準を指定する少なくとも1ビットのフィールドと、選択される各オペランドのための少なくとも1ビットのフィールドとを含む請求項14記載のパイプラインプロセッサ。
  19. 命令は、選択された少なくとも1つのオペランドの機能を指定するビットフィールドをさらに含む請求項18記載のパイプラインプロセッサ。
  20. 各オペランドに対する少なくとも1ビットのフィールドは、オペランドデータ要素のブロックを示すアドレスである請求項18記載のパイプラインプロセッサ。
JP2008551563A 2006-01-20 2007-01-22 オペランドの早期の条件付き選択 Expired - Fee Related JP5335440B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/336,357 2006-01-20
US11/336,357 US9710269B2 (en) 2006-01-20 2006-01-20 Early conditional selection of an operand
PCT/US2007/060814 WO2007085010A2 (en) 2006-01-20 2007-01-22 Early conditional selection of an operand

Publications (3)

Publication Number Publication Date
JP2009524167A true JP2009524167A (ja) 2009-06-25
JP2009524167A5 JP2009524167A5 (ja) 2012-03-01
JP5335440B2 JP5335440B2 (ja) 2013-11-06

Family

ID=38286963

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008551563A Expired - Fee Related JP5335440B2 (ja) 2006-01-20 2007-01-22 オペランドの早期の条件付き選択

Country Status (6)

Country Link
US (1) US9710269B2 (ja)
EP (2) EP1974254B1 (ja)
JP (1) JP5335440B2 (ja)
KR (1) KR100986375B1 (ja)
CN (1) CN101371223B (ja)
WO (1) WO2007085010A2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103502935B (zh) 2011-04-01 2016-10-12 英特尔公司 向量友好指令格式及其执行
CN104011670B (zh) 2011-12-22 2016-12-28 英特尔公司 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令
US9280344B2 (en) * 2012-09-27 2016-03-08 Texas Instruments Incorporated Repeated execution of instruction with field indicating trigger event, additional instruction, or trigger signal destination
KR101711388B1 (ko) 2013-01-28 2017-03-02 삼성전자주식회사 파이프라인에서 블럭을 스케줄하는 컴파일 방법 및 장치
US10592252B2 (en) 2015-12-31 2020-03-17 Microsoft Technology Licensing, Llc Efficient instruction processing for sparse data
US10459727B2 (en) 2015-12-31 2019-10-29 Microsoft Technology Licensing, Llc Loop code processor optimizations
US11385897B2 (en) * 2019-10-01 2022-07-12 Marvell Asia Pte, Ltd. Merge execution unit for microinstructions

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02289096A (ja) * 1989-02-27 1990-11-29 Internatl Business Mach Corp <Ibm> データ・プロセツサ
JPH04220722A (ja) * 1990-12-20 1992-08-11 Fujitsu Ltd パイプライン処理装置
JP2000020309A (ja) * 1998-06-30 2000-01-21 Toshiba Microelectronics Corp デジタルシグナルプロセッサ
US6173393B1 (en) * 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
JP2001501755A (ja) * 1996-09-23 2001-02-06 エイアールエム リミテッド データ処理条件コード・フラグ
JP2001051845A (ja) * 1999-08-12 2001-02-23 Hitachi Ltd アウトオブオーダー実行方式
JP2001505679A (ja) * 1996-09-23 2001-04-24 エイアールエム リミテッド データ処理装置におけるレジスタ・アドレッシング
JP2001209538A (ja) * 2000-01-24 2001-08-03 Hewlett Packard Co <Hp> データハザードを検出するシステム
JP2001216275A (ja) * 2000-02-01 2001-08-10 Sony Corp 画像処理装置および画像処理方法
JP2004062401A (ja) * 2002-07-26 2004-02-26 Matsushita Electric Ind Co Ltd 演算プロセッサおよび当該演算プロセッサを用いたカメラ装置
JP2005174298A (ja) * 2003-12-09 2005-06-30 Arm Ltd “ベクトル×スカラ”演算

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5150469A (en) * 1988-12-12 1992-09-22 Digital Equipment Corporation System and method for processor pipeline control by selective signal deassertion
GB2291515B (en) 1994-07-14 1998-11-18 Advanced Risc Mach Ltd Data processing using multiply-accumulate instructions
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions
GB2317466B (en) 1996-09-23 2000-11-08 Advanced Risc Mach Ltd Data processing condition code flags
GB2317464A (en) 1996-09-23 1998-03-25 Advanced Risc Mach Ltd Register addressing in a data processing apparatus
US6633971B2 (en) * 1999-10-01 2003-10-14 Hitachi, Ltd. Mechanism for forward data in a processor pipeline using a single pipefile connected to the pipeline
US20050188182A1 (en) * 1999-12-30 2005-08-25 Texas Instruments Incorporated Microprocessor having a set of byte intermingling instructions
EP1340142A2 (en) 2000-11-27 2003-09-03 Koninklijke Philips Electronics N.V. Data processing apparatus with many-operand instruction
JP4220722B2 (ja) 2001-05-02 2009-02-04 パイオニア株式会社 情報記録媒体および情報読取装置
US7028171B2 (en) * 2002-03-28 2006-04-11 Intel Corporation Multi-way select instructions using accumulated condition codes
US6944747B2 (en) * 2002-12-09 2005-09-13 Gemtech Systems, Llc Apparatus and method for matrix data processing
US7636837B2 (en) * 2003-05-28 2009-12-22 Fujitsu Limited Apparatus and method for controlling instructions at time of failure of branch prediction

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02289096A (ja) * 1989-02-27 1990-11-29 Internatl Business Mach Corp <Ibm> データ・プロセツサ
JPH04220722A (ja) * 1990-12-20 1992-08-11 Fujitsu Ltd パイプライン処理装置
JP2001501755A (ja) * 1996-09-23 2001-02-06 エイアールエム リミテッド データ処理条件コード・フラグ
JP2001505679A (ja) * 1996-09-23 2001-04-24 エイアールエム リミテッド データ処理装置におけるレジスタ・アドレッシング
US6173393B1 (en) * 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
JP2000020309A (ja) * 1998-06-30 2000-01-21 Toshiba Microelectronics Corp デジタルシグナルプロセッサ
JP2001051845A (ja) * 1999-08-12 2001-02-23 Hitachi Ltd アウトオブオーダー実行方式
JP2001209538A (ja) * 2000-01-24 2001-08-03 Hewlett Packard Co <Hp> データハザードを検出するシステム
JP2001216275A (ja) * 2000-02-01 2001-08-10 Sony Corp 画像処理装置および画像処理方法
JP2004062401A (ja) * 2002-07-26 2004-02-26 Matsushita Electric Ind Co Ltd 演算プロセッサおよび当該演算プロセッサを用いたカメラ装置
JP2005174298A (ja) * 2003-12-09 2005-06-30 Arm Ltd “ベクトル×スカラ”演算

Also Published As

Publication number Publication date
KR100986375B1 (ko) 2010-10-08
JP5335440B2 (ja) 2013-11-06
EP1974254A2 (en) 2008-10-01
US9710269B2 (en) 2017-07-18
KR20080087171A (ko) 2008-09-30
CN101371223B (zh) 2015-07-15
EP1974254B1 (en) 2012-06-06
EP2461246B1 (en) 2017-03-29
WO2007085010A3 (en) 2007-12-13
WO2007085010A2 (en) 2007-07-26
EP2461246A1 (en) 2012-06-06
CN101371223A (zh) 2009-02-18
US20070174592A1 (en) 2007-07-26

Similar Documents

Publication Publication Date Title
KR101225075B1 (ko) 실행되는 명령의 결과를 선택적으로 커밋하는 시스템 및 방법
US9367471B2 (en) Fetch width predictor
KR101459536B1 (ko) 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
US6721866B2 (en) Unaligned memory operands
EP2864868B1 (en) Methods and apparatus to extend software branch target hints
US9304774B2 (en) Processor with a coprocessor having early access to not-yet issued instructions
US20120204008A1 (en) Processor with a Hybrid Instruction Queue with Instruction Elaboration Between Sections
JP5335440B2 (ja) オペランドの早期の条件付き選択
JP5745638B2 (ja) 分岐命令の中に符号化されたバイモーダル分岐予測子
JP2009524167A5 (ja)
US6983359B2 (en) Processor and method for pre-fetching out-of-order instructions
US20120110037A1 (en) Methods and Apparatus for a Read, Merge and Write Register File
US20050144427A1 (en) Processor including branch prediction mechanism for far jump and far call instructions
US7783692B1 (en) Fast flag generation

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110621

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110726

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111024

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111031

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111125

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111202

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111226

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120106

A524 Written submission of copy of amendment under section 19 (pct)

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20120116

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120828

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121128

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121205

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130312

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130612

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130731

R150 Certificate of patent or registration of utility model

Ref document number: 5335440

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

LAPS Cancellation because of no payment of annual fees