JP5853301B2 - プロセッサインストラクションの発行の絞り込み - Google Patents

プロセッサインストラクションの発行の絞り込み Download PDF

Info

Publication number
JP5853301B2
JP5853301B2 JP2012230295A JP2012230295A JP5853301B2 JP 5853301 B2 JP5853301 B2 JP 5853301B2 JP 2012230295 A JP2012230295 A JP 2012230295A JP 2012230295 A JP2012230295 A JP 2012230295A JP 5853301 B2 JP5853301 B2 JP 5853301B2
Authority
JP
Japan
Prior art keywords
instruction
power
throttle
issue
instructions
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.)
Active
Application number
JP2012230295A
Other languages
English (en)
Other versions
JP2013101605A (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.)
Apple Inc
Original Assignee
Apple 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 Apple Inc filed Critical Apple Inc
Publication of JP2013101605A publication Critical patent/JP2013101605A/ja
Application granted granted Critical
Publication of JP5853301B2 publication Critical patent/JP5853301B2/ja
Active 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • G06F11/3062Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2924/00Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
    • H01L2924/0001Technical content checked by a classifier
    • H01L2924/0002Not covered by any one of groups H01L24/00, H01L24/00 and H01L2224/00
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、コンピューティングシステムに関するもので、より特定すれば、問題のある選択されたインストラクションの発行を絞り込むことにより電力消費を効率的に減少することに関する。
各世代の半導体プロセッサコアにおける装置及び金属ルートの幾何学的な大きさが減少しつつある。それ故、ダイ上の有効面積の所与のエリア内に多くの機能が設けられる。その結果、ラップトップコンピュータ、タブレットコンピュータ、スマートホン、ビデオカメラ、等の移動装置は、益々人気を得ている。典型的に、これら移動装置は、1つ以上のバッテリセルから電力を受けている。バッテリは、容量に限度があるから、定期的に外部充電器に接続して再充電される。これら移動装置の重大な問題は、電力消費である。電力消費が増加すると、それら装置のバッテリ寿命が低下し、再充電の頻度が増加する。
ダイ上の集積回路の密度は、複数のパイプライン、大きなキャッシュ、及びより複雑なロジックと共に高くなるので、クロックサイクル当たり切り換わるノード及びバスの数が著しく増加する。それ故、電力消費が増加する。加えて、ソフトウェアアプリケーションは、ハードウェアを高い電力消散値に到達させる特定のコンピュータプログラムコードを実行する。そのようなコードは、偶発的に又は意図的に(例えば、電力ウィルス)これを行う。電力消散は、プログラムコード内に所与のインストラクション形式が複数発生することにより上昇し得る。この電力消散値は、チップの熱設計電力(TDP)又は最大チップ電力消散にも到達し又はそれを越えることもある。
以上に加え、移動装置の冷却システムは、所与の熱設計電力(TDP)又は熱設計点に対して設計される。冷却システムは、半導体ダイの最大接合温度を越えることなくTDP値を消散し得る。しかしながら、所与のインストラクション形式が複数発生すると、電力消散が半導体チップのTDPを越え得る。更に、電源に対して電流制限があるが、これを越えることもある。電力モードがチップの動作モードを変更したりチップ内の特定ブロックをターンオフしたりしない場合には、バッテリが急速に放電し得る。更に、物理的なダメージも生じ得る。ピーク電力消散を管理する1つの解決策は、特定スレッシュホールドを越えないようにインストラクションの発行を単に制限することであるが、これは、全体的な性能の受け容れられない低下を招くことがある。
以上のことから、選択されたインストラクションの発行を絞り込むことにより電力消費を減少するための効率的な方法及びメカニズムが要望される。
選択されたインストラクションの発行を絞り込むことにより電力消費を減少するためのシステム及び方法が意図される。
一実施形態において、プロセッサは、電力スロットルユニットを備えている。この電力スロットルユニットは、同じパイプライン段内でスケジューラとして使用される。電力スロットルユニットは、1つ以上のインストラクション形式に対して1つ以上のインストラクション発行カウントを維持する。インストラクション形式とは、プロセッサ内の実行コアにより実行されるサポートされるインストラクション形式のサブセットである。インストラクション形式は、それら形式のインストラクションを処理するための高電力消費推定値に基づいて選出される。例えば、フローティングポイント(FP)シングルインストラクション・マルチデータ(SIMD)インストラクション形式は、マルチサイクルのレイテンシ中にベクトルエレメントを処理するための広いデータレーンを有する。インストラクション発行カウントを維持する間に、電力スロットルユニットは、所与のインストラクション発行カウントが所与のスレッシュホールドを越えることを決定する。それに応答して、電力スロットルユニットは、各発行レートを制限するために1つ以上のインストラクション形式を選択する。
1つ以上のインストラクション形式の選択は、電力状態推定に基づく。或いは又、この選択は、ソフトウェアを経てなされるユーザの変更に基づいてもよい。電力スロットルユニットは、選択された1つ以上の候補インストラクション形式の各々に対して発行レートを選出する。発行レートのこの選出は、特定のコントロールレジスタの電力状態推定又はソフトウェア更新にも基づく。電力スロットルユニットは、選択された1つ以上のインストラクション形式の各々に対する関連発行レートを各選出された発行レートに制限する。それ故、発行レートの制限は、変化してもよいし、又はプログラム可能でもよい。
これら及び他の実施形態は、添付図面を参照して、以下に詳細に説明される。
無秩序な実行を遂行するプロセッサコアの一実施形態の一般化されたブロック図である。 半導体チップの電力管理の一実施形態の一般化されたブロック図である。 電力スロットルユニットの一実施形態を示す一般化されたブロック図である。 特定のインストラクション形式のインストラクション発行レートをコントロールする方法の一実施形態を示す一般化されたフローチャートである。 スロットルテーブルの一実施形態を示す一般化されたブロック図である。 インストラクション発行レートを制限する一実施形態を示す一般化されたブロック図である。 インストラクション発行レートを制限する別の実施形態を示す一般化されたブロック図である。 インストラクション発行レートを制限する更に別の実施形態を示す一般化されたブロック図である。 特定のインストラクション形式のインストラクション発行レートをコントロールする方法の一実施形態の一般化されたフローチャートである。
本発明は、種々の変更を受けそして別の形態でも実施できるが、その特定の実施形態を一例として添付図面に示して以下に詳細に説明する。しかしながら、添付図面及び詳細な説明は、本発明を、ここに開示する特定の形態に限定するものではなく、本発明は、特許請求の範囲に規定される本発明の精神及び範囲内に入る全ての変更、等効物及び代替え物を網羅することを理解されたい。又、本出願全体に使用される「〜してもよい(may)」という語は、許すという意味(即ち、〜の潜在性があるという意味)で使用されるもので、強制の意味(即ち、〜しなければならないという意味)ではない。同様に、「含む(include)」、「含んでいる(including)」及び「含む(includes)」という語は、含むことを意味するが、それに限定されない。
種々のユニット、回路又は他のコンポーネントは、1つ又は複数のタスクを遂行するように「構成される」ものとして述べる。この点について、「構成される」とは、動作中に1つ又は複数のタスクを遂行する「回路を有する」ことを一般的に意味する構造を広く表現するものである。従って、ユニット/回路/コンポーネントは、そのユニット/回路/コンポーネントが現在オンでなくても、タスクを遂行するように構成することができる。一般的に、「構成される」に対応する構造を形成する回路は、ハードウェア回路を含む。同様に、種々のユニット/回路/コンポーネントは、説明の便宜上、1つ又は複数のタスクを遂行するものとして説明されてもよい。そのような説明は、「構成される」という句を含むものと解釈されねばならない。1つ以上のタスクを遂行するように構成されたユニット/回路/コンポーネントを表現する場合に、そのユニット/回路/コンポーネントに関して35U.S.C.§112、第6節の解釈を引用しないことが明確に意図される。
以下の説明において、本発明を完全に理解するために幾つかの特定の細部について述べる。しかしながら、当業者であれば、これら特定の細部がなくても本発明を実施できることが明らかであろう。ある場合には、本発明を不明瞭にしないため、良く知られた回路、構造及び技術は詳細に示さない。
図1は、無秩序な実行を遂行するプロセッサコア100の一実施形態を示す一般化されたブロック図である。プロセッサ100は、インストラクションを処理するために多段パイプラインを使用する。インストラクションキャッシュ(i−キャッシュ)104は、ソフトウェアアプリケーションのためのインストラクションを記憶する。アドレス選択ロジック102により搬送されるアドレスで指示される1つ以上のインストラクションがi−キャッシュ104からフェッチされる。i−キャッシュミスがない場合にはクロックサイクル当たりi−キャッシュ104から複数のインストラクションがフェッチされる。アドレスは、次回フェッチプレディクタ106によりインクリメントされる。分岐方向プレディクタ108が、次回フェッチプレディクタ106、及びその後のパイプライン段のコントロールフロー評価ロジック110の各々に結合される。プレディクタ106は、次に続くインストラクションを実行することからインストラクションストリームのフローを変更するインストラクションの情報を予想する。
デコードユニット110は、フェッチされた複数のインストラクションのOPコードをデコードする。或いは又、インストラクションがマイクロインストラクション又はマイクロOPに分割されてもよい。ここで使用する「インストラクション」及び「マイクロOP」という語は、交換可能である。というのは、本発明は、各々の具現化を使用するアーキテクチャーで使用されるからである。デコードユニット110は、ディスパッチキュー114においてエントリを割り当てる。一実施形態では、コントロールフロー評価ブロック112は、アドレスセレクタ102におけるインストラクションのフェッチを変更する。例えば、無条件分岐OPコードに関連した絶対アドレス値がアドレスセレクタ102へ送られる。ディスパッチキュー114のインストラクションは、リネーマーアレイ118により再命名された関連オペランド及び行先識別子を有する。リネーマーアレイ118は、フリーリストアロケータ120から候補ネームを受け取る。
依存性合併ブロック122は、受け取ったインストラクションに対する依存性ベクトルを発生する。手前のパイプライン段で選択された再命名された識別子は、インストラクション間の依存性を見出しそして指示するのに使用される。依存性合併ブロック122は、インストラクション及びそれに関連した再命名された識別子、プログラムカウンタ(PC)値、依存性ベクトル、等をスケジューラ124に与える。
スケジューラ124は、インストラクションを、実行コア130において実行するためにスケジュールする。オペランドが得られ、ハードウェアリソースも得られるときには、インストラクションがスケジューラ124から実行コア130内のファンクションユニットの1つへ無秩序に発行される。スケジューラ124は、そのリソースオペランドをアーキテクチャーレジスタファイル(図示せず)又はオペランドバイパスロジックから読み取る。ソースオペランドは、実行コア130に与えられる。
実行コア130は、スケジューラ124へ報告されるインストラクションの実行中に種々のイベントを検出する。その2つの例は、予想を誤った分岐インストラクションと、再生されるロード/記憶インストラクションとを含む。種々の例外が検出される。その2つの例は、非特権モードで実行される特権インストラクション又はメモリアクセスに対する保護例外と、アドレス変換なしに対する例外とを含む。例外は、それに対応する例外取り扱いルーチンを、例えば、マイクロコード116により実行させる。
実行コアは、ロード/記憶ユニット140を含む。該ロード/記憶ユニット140は、記憶インストラクションに対応するアドレスを記憶するための記憶バッファ、記憶インストラクションに対応する記憶データを記憶するための記憶キュー、及びロードインストラクションに対するアドレス及びデータの両方を記憶するロードバッファを含む。ロード/記憶ユニット140は、データキャッシュ(図示せず)に接続される。プロセッサ100は、各i−キャッシュ104に対する変換ルックアサイドバッファ(TLB)、及びキャッシュアクセスを遂行するときに全メモリ変換を遂行するコストを回避するためのデータキャッシュを含む。
実行コア130は、少なくとも、加算、減算、シフト、ビットごとの論理演算、回転、及び/又は他の機能を遂行する多数の計算ユニットを含む。ここに示す例では、実行コア130は、整数演算論理ユニット(ALU)132、整数ALU及び分岐分析ロジックの組み合わせ134、フローティングポイント加算・減算及びシングルインストラクション・マルチデータ(SIMD)計算ロジックの両方をもつフローティングポイントユニット136、並びにフローティングポイント乗算及びSIMD計算ロジックの両方をもつフローティングポイントユニット138を含む。
SIMDインストラクションは、複数のデータレーンにおいて同じオペレーションを遂行する。SIMDインストラクションは、インストラクションセットアーキテクチャー(ISA)において他のインストラクションにより使用されるアーキテクチャーレジスタファイルからの個別のレジスタファイルを使用する。SIMDインストラクションに対するレジスタは、同じデータ形式のエレメントのベクトルとして使用される。SIMDインストラクションは、メディア加速度、信号処理及びグラフィックをサポートするのに使用される。プロセッサ100は、署名及び非署名信号、並びに倍精度フローティングポイントオペレーションの両方をサポートする。これらのSIMDインストラクションの1つ以上は、マルチサイクルレイテンシを有する。
大量の処理及び長いレイテンシのために、特定のインストラクションを実行すると、電源から著しい量の電流が引き出されることがある。従って、それらの識別されたインストラクションは、著しい電力を消費する。それらの高電力インストラクションは、問題のあるインストラクションと称される。それら問題のあるインストラクションの発行レートは、チップにおける所与の電力消費レベルを維持するためにクロックサイクルごとに変更される。例えば、電力スロットル150は、問題のあるインストラクションの発行レートを監視する。適格な状態が生じたときに、電力スロットルは、問題のあるインストラクションの発行レートを、プログラム可能な減少レートに制限する。
図2は、半導体チップの電力管理システム200の一実施形態を示す一般化されたブロック図である。種々の実施形態において、プロセッサ100は、電力スロットルユニット150を使用して特定のインストラクション形式の発行レートを制限するように構成される。電力スロットルユニット150は、ソフトウェア又はハードウェアによりコントロールされる。一実施形態において、プロセッサ100内の選出されたハードウェア構成レジスタ270内の特定ビットフィールドは、ソフトウェアレイヤ260によりスロットルコードで更新される。電力スロットルユニットは、スロットルコードを使用して、特定のインストラクション形式に対するインストラクション発行レート限界を決定する。ソフトウェアレイヤ260は、ユーザプログラム、オペレーティングシステムのカーネル、又は他のソフトウェアである。別の実施形態では、スロットルコード以外のパラメータ値を使用して、特定のインストラクション形式のインストラクション発行レートの限界をセットする。これら他のパラメータは、以下に詳細に述べる。更に別の実施形態では、電力マネージャー210は、電力スロットルユニット150により使用されるスロットルコード又は他のパラメータを調整して、特定のインストラクション形式のインストラクション発行レートの限界をセットする
プロセッサ100は、集積回路(IC)である。種々の実施形態において、プロセッサ100は、オン・ダイ(on-die)インストラクション及びデータキャッシュを各々伴う1つ以上のコアを含む。プロセッサ100は、シングルパイプライン又はマルチパイプラインを伴うスーパースカラープロセッサである。別の実施形態では、プロセッサ100は、特定用途向けIC(ASIC)である。更に別の実施形態では、プロセッサ100は、システムオンチップ(SOC)上に1つ以上の計算ブロックを含む。プロセッサ100を具現化するために、いずれのトランジスタファミリーが使用されてもよい。例えば、金属酸化物半導体電界効果トランジスタ(MOSFET)及びバイポーラ接合トランジスタ(BJT)が含まれる。
一実施形態において、ソフトウェアレイヤ260は、プロセッサ100内のハードウェア構成レジスタ270をスロットルコードで更新する。一実施形態では、プロセッサ100の入力/出力(I/O)ピンは、ハードウェア構成レジスタへのアクセスを与える。或いは又、ユーザソフトウェアプログラム又はオペレーティングシステムのカーネルからの特定のインストラクションがプロセッサ100のハードウェアにより実行され、構成レジスタを指定値で更新する。一例において、構成レジスタ270は、予約された雑多なビットフィールドを伴うスーパーバイザレベル例外取り扱いレジスタである。雑多なビットフィールドの指定部分は、スロットルコードを記憶するように注意して使用される。ユーザレベル及びスーパーバイザレベルの構成レジスタの他の例も使用できる。更に、ハードウェア構成レジスタ270には、他の値が記憶されてもよい。他の値の一例は、インストラクション発行レート限界を含む。他の例は、インストラクションカウントを維持しそしてインストラクション発行レート限界を発生するのに使用される以下に述べるインクリメント値及びデクリメント値を含む。或いは又、ハードウェアロジックを使用して、これらのステップを以下に述べるように遂行してもよい。
一実施形態では、電力マネージャー状態マシン220は、プロセッサ100からデータを収集するのに使用される。1つ又は複数のアプリケーションを実行する間に、プロセッサ100の推定リアルタイム電力消費が電力マネージャー状態マシン220へ搬送される。プロセッサ100の電力消費を決定するのに種々の技術のいずれかが使用される。一実施形態において、オン・ダイ(on-die)電流センサが、引き出される電流の推定値を電力マネージャー状態テーブル230に与える。別の実施形態では、データは、選択されサンプリングされたコントロール及びデータ信号のバイナリ論理値又は重み付けされた数値を含む。データを収集した後に、電力マネージャー状態マシン220は、プロセッサ100の電力消費を推定し、そしてプロセッサ100の動作パラメータに対する変化を決定する。
種々の実施形態において、電力ターゲットがプロセッサ100に指定される。電力ターゲットは、例えば、熱設計電力値である。熱設計電力(TDP)は、熱設計ポイントとも称され、冷却システムがプロセッサ100に対して効率的に消散できる最大電力量を表わす。プロセッサ100において高電力アプリケーション又はウィルスが実行される場合には、電力マネージャー状態マシン220は、動作電圧、動作周波数、等に対して調整を行う。一般的に述べると、電力消費は、プロセッサ100の動作周波数及び動作電圧に比例する。プロセッサ100から更新された電力推定データを受け取るのに応答して、電力マネージャー状態マシン220は、電力性能状態(P状態)を多数の考えられるP状態から選択する。選択されたP状態は、最大性能状態と最小電力状態との間である。最大性能状態は、最大動作周波数に対応し、そして最小電力状態は、最小動作周波数に対応する。これら2つの状態間の中間の個別電力性能状態(P状態)は、動作周波数及び動作電圧の組み合わせに対する所与のスケール値を含む。
電力マネージャー状態マシン220により選択されたP状態は、所与の電力状態コードにより指示される。この電力状態コードは、電力状態テーブル230をインデックスするのに使用される。一実施形態において、電力状態テーブル230は、複数のフィールド242−248を各々含む複数のエントリ240a−240gを含む。フィールド242は、電力状態コードを含む。電力マネージャー状態マシンから送られる電力状態コードは、エントリ240a−240gの各々においてフィールド242に記憶された値と比較される。一致する電力状態コードを有するエントリ240a−240gのうちの所与のエントリは、他のフィールド244−248に記憶された1つ以上の値をプロセッサ100に与えるのに使用される。フィールド244は、フィールド242に記憶された電力状態コードにより指示されたP状態に関連した動作周波数を記憶する。同様に、フィールド246は、フィールド242に記憶された電力状態コードによって指示されたP状態に関連した動作電圧を記憶する。
フィールド248は、電力スロットルコードを記憶する。電力スロットルコードは、プロセッサ100により処理される特定サブセットのインストラクション形式に関連付けられる。特定サブセットのインストラクション形式は、候補インストラクション形式と称される。電力スロットルコードは、候補インストラクション形式に対するインストラクション発行限界を指示する。一例において、所与の電力スロットルコードは、パーセンテージとして表されたインストラクション発行限界を指示する。このパーセンテージは、所与のクロックサイクル数以内に候補インストラクション形式のインストラクションを発行することが許される最大クロックサイクル数として定義される。例えば、50%のパーセンテージとは、2クロックサイクルごとに最大1クロックサイクルで、候補インストラクション形式のインストラクションを実行のために発行できることを指示する。66%のパーセンテージとは、3クロックサイクルごとに最大2クロックサイクルで、候補インストラクション形式のインストラクションを実行のために発行できることを指示する。以下に述べるように、他の発行レート限界パーセンテージも持考えられ、意図される。プロセッサ100におけるアプリケーションの実行中にP状態が変化するので、電力スロットルコードも変化して、より高い性能を与えるか又は電力消費を下げる。
候補インストラクション形式の所与のグループは、実行中に著しい電力を消費することが決定され又は推定される1つ以上のインストラクション形式を含む。例えば、シングルインストラクション・マルチデータ(SIMD)インストラクションは、典型的に、複数のベクトルエレメントを同時に処理するための広いデータレーンを有する。更に、1つ以上のSIMDインストラクションは、著しいレイテンシを有することがある。著しい数のデータレーンに対してレイテンシが8ないし12個のクロックサイクル又はそれ以上というインストラクションは、インストラクション実行中に電源から著しい量の電流を引き出す。
識別された高電力消費のインストラクション形式の幾つかの例は、SIMDフローティングポイント(FP)乗算−加算、SIMD FP乗算、SIMD FP加算、SIMDFP平方根、SIMD逆平方、SIMD加算、等を含む。他の高電力消費インストラクションも考えられ、意図される。候補インストラクション形式の所与のグループは、識別されたインストラクション形式の1つ以上を含む。候補インストラクション形式の所与のグループは、第2グループより大きく、そして電力消費の大きな減少に関連した所与の電力スロットルコードが電力状態テーブル230から選択されたときに強力なインストラクション発行レート限界に関連付けられる。
図3は、電力スロットルユニット300の一実施形態を示す一般化されたブロック図である。一実施形態において、電力スロットルユニット300は、プロセッサ100内に配置され、そしてスケジューラ124と同じパイプライン段内に使用される。電力スロットルユニット300は、スロットルテーブル310を含む。一実施形態において、スロットルテーブル310は、複数のフィールド322−328を各々含む複数のエントリ320a−320jを含む。フィールド322は、電力スロットルコードを記憶する。スロットルテーブル310は、電力スロットルコード値によりインデックスされる。一実施形態において、電力スロットルコード値は、状態コントロールレジスタのような構成レジスタに記憶される。この特定の構成レジスタは、設計者、オペレーティングシステム、等により書かれたソフトウェアアプリケーションのようなソフトウェアにより更新される。別の実施形態では、電力スロットルコードは、図2に示すように、電力状態テーブル230から送信される。電力スロットルコードを維持するための他のメカニズムも考えられ、意図される。維持される電力スロットルコードは、エントリ320a−320gの各々においてフィールド322に記憶された値と比較される。一致する電力スロットルコードを有するエントリ320a−320gのうちの所与のエントリを使用して、他のフィールド324−328に記憶された値をスロットルロジック340に与える。
電力スロットルテーブル310のフィールド324は、フィールド322に記憶された電力スロットルコードに関連した候補インストラクション形式の1つ以上の識別子を記憶する。フィールド326は、フィールド324に記憶された候補インストラクション形式及びフィールド322に記憶された電力スロットルコードの両方に関連したスレッシュホールドインストラクション発行カウントを記憶する。或いは又、フィールド326は、インストラクション発行カウントではなく、インストラクション発行レートのスレッシュホールド値を記憶してもよい。識別された候補インストラクション形式のインストラクションを実行するためにプロセッサ100により遂行される処理の量に対応する他の測定を使用してもよい。フィールド326に記憶されたスレッシュホールド値は、識別された候補インストラクション形式に対してインストラクションレートをいつ制限すべきか決定するためにスロットルロジック340により使用される。スロットルロジック340は、このインストラクションレートを、フィールド328に記憶された制限値に制限する。
監視ユニット330は、1つ以上の候補インストラクション形式に対するインストラクション発行カウントを維持する。このカウント値は、クロックサイクルごとに更新され、そして所与の候補インストラクション形式のインストラクションがプロセッサ100内の実行コア130へ発行されるかどうかに依存する。一実施形態では、候補インストラクション形式ごとに個々のカウントが維持される。別の実施形態では、2つ以上の候補インストラクション形式のグループに対してカウントが維持される。候補インストラクション形式の1つ以上のグループに所与の候補インストラクション形式が含まれる。
一実施形態において、所与の候補インストラクション形式に対するカウントは、所与の候補インストラクション形式のインストラクションが実行コア130へ発行されるところのクロックサイクルごとに1だけインクリメントされる。このカウンタは、所与の候補インストラクション形式のインストラクションが実行コア130へ発行されないクロックサイクルごとに1だけデクリメントされる。以下に更に述べるように、このような実施形態では、発行レート限界は、50%である。一般的に、発行レート限界は、デクリメント値と、インクリメント及びデクリメント値の和との比に対応する。他の実施形態では、異なる発行レート限界を得るためにインクリメント及びデクリメント量に対して1以外の値が使用される。同様に、インクリメント値がデクリメント値と異なってもよい。例えば、所与の候補インストラクション形式のインストラクションが実行コア130へ発行される各クロックサイクルに対してインクリメント値を2にセットし、そして所与の候補インストラクション形式のインストラクションが実行コア130へ発行されない各クロックサイクルに対してデクリメント値を3にセットすることにより、60%の発行レート限界が得られる。種々の他の実施形態では、インクリメント及びデクリメントの各値をプログラムすることができる。一実施形態では、このカウンタ内の値が、テーブル310のエントリ320a−320jのうちの選択されたエントリのフィールド326に記憶された値に達するか又はそれを越えると、スロットルロジック340は、フィールド324に記憶された識別子により識別された候補インストラクション形式のインストラクションの発行を阻止するためにスケジューラ124へのコントロール信号の送信を開始する。
一例において、テーブル310のエントリ320a−320jのうちの選択されたエントリにおいてフィールド324によりSIMD FP乗算−加算インストラクション形式が識別される。フィールド326には、128のスレッシュホールドカウント値が記憶される。監視ユニット330は、上述したように、1だけインクリメント及びデクリメントするカウンタを有する。監視ユニット330は、128のカウント値を検出すると、スロットルロジック340に通知する。テーブル310の同じ選択されたエントリのフィールド328は、50%の発行レート限界を記憶する。スロットルロジックは、次のクロックサイクルにSIMD FP乗算−加算インストラクション形式のインストラクションの発行を阻止するためにコントロール信号をスケジューラ124へ送信する。この阻止の結果として、カウント値が127へデクリメントされる。それに続くクロックサイクルにおいて、カウントがスレッシュホールドより低いので、コントロール信号は、阻止を除去するようにスロットルロジック340によって変更される。SIMD FP乗算−加算インストラクション形式のインストラクションが発行される。カウントは、再び、128へインクリメントされる。再び、コントロール信号がスケジューラ124へ送信されて、このインストラクション形式のインストラクションの発行を防止する。それ故、SIMD FP乗算−加算に対する最大発行レートが50%にセットされる。
一実施形態において、インクリメント及びデクリメントの量は、フィールド326に記憶されたスレッシュホールド値に達したときに変更される。前記の例を続けると、フィールド328が66%の発行レート限界を記憶した場合には、デクリメント量が2へ変更される。SIMD FP乗算−加算インストラクション形式のインストラクションがスロットルロジック340により阻止されると、その関連カウント値が、128から、127ではなく、126へデクリメントされる。それ故、2つのクロックサイクルに対して、この特定インストラクション形式のインストラクションは、1つのクロックサイクルに対して再び阻止される前に発行することが許される。SIMD FP乗算−加算に対する最大発行レートは、66%にセットされる。他の特定の発行レート限界を満足するために他のインクリメント及びデクリメント量が選択されてもよい。例えば、インクリメント量を2に変更し、そしてデクリメント量を1に保つことにより、33%の発行レート限界が得られる。
一実施形態において、フィールド326に記憶された複数のスレッシュホールド値が存在する。そのような実施形態では、各発行レートを制限するために1つ以上の候補インストラクション形式を選択すること、及びその選択された1つ以上の候補インストラクション形式の各1つに対して発行レートを選択することは、どのインストラクション発行カウントがフィールド326に記憶された各スレッシュホールドを越えるかに基づく。
前記実施形態を続けると、候補インストラクション形式の2つ以上のグループがフィールド324において識別される。フィールド324において識別されるグループに関連したフィールド326に2つ以上のスレッシュホールド値が記憶される。候補インストラクション形式の2つ以上のグループの各々に対して発行レートを制限するのではなく、各インストラクション発行カウントがそのスレッシュホールドを越えるかどうかに基づいて各発行レートを制限するために2つ以上のグループのうちの所与のグループが選択される。そのような実施形態では、電力スロットルコードのサイズが制限され、そして電力スロットルコードを定義する上でより高い融通性が与えられる。
図4は、特定のインストラクション形式のインストラクション発行レートをコントロールする方法400の一実施形態を示す一般化されたフローチャートである。この方法400は、別の実施形態を導出するように当業者により変更することができる。又、この実施形態におけるステップは、順次に示されている。しかしながら、あるステップは、図示されたものとは異なる順序で行われてもよく、又、あるステップは、同時に遂行されてもよく、又、あるステップは、他のステップと組み合わされてもよく、そしてあるステップは、別の実施形態では存在しなくてもよい。
ブロック402において、所与のインストラクション形式を、絞り込むべき候補インストラクション形式として選択する。例えば、実行中に比較的高い電力消費に関連したインストラクション形式を絞り込みとして選択する。種々の実施形態では、フローティングポイントSIMDインストラクション、ロード/記憶インストラクション、及び他のものが候補となる。
ブロック404において、候補インストラクション形式に対する発行レート限界を決定するために、インクリメント値A及びデクリメント値Bの両方を選択する。例えば、一実施形態において、発行レート限界は、比B/(A+B)に対応する。それ故、全サイクル数に対して候補インストラクション形式を発行するサイクルのパーセンテージとして表される所与の限界が選択される。例えば、電力スロットルユニット及びスケジューラを60%の限界にセットし又は「ダイヤル」するために、2のインクリメント値及び3のデクリメント値が選択される。これらの選択された値は、3/(2+3)、即ち60%に等しい比を生じる。
一実施形態において、選択値A及びBは、特定のハードウェア構成レジスタを更新するユーザソフトウェアによって選択される。電力スロットルユニットは、この特定のハードウェア構成レジスタを読み取る。上述したように、プロセッサ100の入力/出力(I/O)ピンは、ハードウェア構成レジスタへのアクセスを与える。或いは又、ユーザソフトウェアプログラム又はオペレーティングシステムのカーネルからの特定のインストラクションは、プロセッサ100のハードウェアによって実行され、そして構成レジスタの特定ビットフィールドの特定の値で更新される。更に別の実施形態では、ハードウェアコントロールロジックがインクリメント及びデクリメント値を選択する。又、ある実施形態では、ハードウェアコントロールロジックが少なくともP状態値に基づいてこれらの値を選択する。
図4のブロック406において、発行される候補形式インストラクションのカウントに対するスレッシュホールドを選択する。又、このスレッシュホールドは、選択されたインクリメント及びデクリメント値に対して使用されるハードウェア構成レジスタの特定ビットフィールドにも記憶される。ブロック408において、現在阻止されていない形式のインストラクションをスケジューラから実行ユニットへ発行する。候補形式インストラクションがこのクロックサイクルに発行される場合には(条件ブロック410)、次いで、ブロック412において、候補形式インストラクション発行カウントをインクリメント値だけインクリメントする。このカウント値が、選択されたスレッシュホールドを越える場合には(条件ブロック414)、次いで、ブロック416において、スレッシュホールドに対応する候補形式インストラクション発行ブロックする設定なされる。これに続いて、方法400のコントロールフローは、ブロック408へ戻る。他方、候補形式インストラクションがこのクロックサイクルに発行されない場合には(条件ブロック410)、次いで、ブロック418において、候補形式インストラクションの発行カウントをデクリメント値だけデクリメントする。種々の実施形態では、カウントは、最小値0である。
候補形式インストラクションが阻止され(条件ブロック420)、そしてこのカウント値が選択されたスレッシュホールドより低い場合には(条件ブロック422)、次いで、ブロック424において、候補形式インストラクションの発行の阻止を除去又はリセットする。これに続いて、方法400のコントロールフローは、ブロック408へ戻る。阻止が除去されたことにより、候補形式インストラクションを発行のために選択する。候補形式インストラクションが阻止されず(条件ブロック420)、又はカウント値が選択されたスレッシュホールドより高い場合には(条件ブロック422)、方法400のコントロールフローがブロック408へ戻る。
ブロック404及び406の以上の説明では、インクリメント値、デクリメント値及びスレッシュホールド値の個々の選択について述べた。或いは又、これらの値の特定の組み合わせがテーブルに記憶されてもよい。このテーブルにおいて特定のエントリを選択することにより特定の組み合わせを選択することは、先に述べたソフトウェア及びハードウェアメカニズムで遂行される。そのようなテーブルの1つの具現化について以下に述べる。
図5は、スロットルテーブル500の一実施形態の一般化されたブロック図である。図示されたように、電力スロットルコードは、バイナリ値として記憶される。候補インストラクション形式は、対応するインストラクションを実行するために推定電力消費に基づいてグループ編成される。レイテンシは、電力消費の著しい差を区別するのに使用される。ここでは、SIMD FPインストラクション形式は、レイテンシによりグループ編成される。例えば、‘b000の電力スロットルコードが選択されると、8及び12クロックサイクルのレイテンシをもつSIMD FPインストラクション形式だけが潜在的なインストラクション発行絞り込みに対して選択される。絞り込みが開始すると、8及び12クロックサイクルのレイテンシをもつ識別されたインストラクション形式に対して66%の発行レート限界が使用される。
別の実施形態では、インストラクション発行絞り込みをいつ開始すべきか決定するのに使用されるスレッシュホールド値は、インストラクション発行カウントではなく、実際の発行レートである。例えば、スケジューラ124が、Y個のクロックサイクル内に、識別された候補インストラクション形式のインストラクションをX個以上発行すると、スロットルロジック340は、Z個のクロックサイクルごとに関連インストラクションを阻止する。Y個のクロックサイクルごとに、関連インストラクションが発行されたかどうか指示する最後のY個のクロックサイクルの可動ウインドウが維持される。
一実施形態では、Yを整数とすれば、Yビットのサイズのシフトレジスタを使用して、最後のY個のクロックサイクルの可動ウインドウを維持する。関連候補インストラクション形式のインストラクションが実行コア130へ発行されるクロックサイクルごとにカウントXがインクリメントされる。Y個のクロックサイクルが経過すると、所与のクロックサイクル中に、候補インストラクション形式のインストラクションが実行コアへ発行されないときにカウントXもデクリメントされ、所与のクロックサイクルは、現在クロックサイクルよりもYクロックサイクル前に生じたものである。
スロットルテーブル310を再び参照すると、所与の電力スロットルコードに対するフィールド324−328は、各々、プログラム可能である。これらの値は、プログラムの実行が始まった後にそれらの初期値から変更される。同様に、所与の電力スロットルコードに対するテーブル500内のフィールドも、各々、プログラム可能である。電力マネージャー状態マシン220から送られる電力状態コードと、電力スロットルコードとの間の相関も、プログラム可能である。ソフトウェアを経て、ユーザは、テーブル310又はテーブル500内のエントリに対応する値を記憶する特定のコントロールレジスタを更新する。
図6は、インストラクション発行レートを制限する一実施形態を示す一般化されたブロック図である。図示されたように、この例では、3のカウントスレッシュホールドが使用される。いかなるカウント値が選択されてもよい。3のカウントスレッシュホールドは、例示を容易にするために使用される。スレッシュホールドにヒットする前に、インクリメント及びデクリメント量は、各々、値1である。50%の発行レート限界が選択される。それ故、この例では、インクリメント及びデクリメント量は、スレッシュホールドに到達した後に1のままである。
クロックサイクル(CC)1では、識別された候補インストラクション形式の問題のあるインストラクションが実行コア130へ発行される。それ故、カウントは、0から1へインクリメントされる。同様に、CC2では、問題のあるインストラクションが発行され、そしてカウントがインクリメントされる。このとき、カウントは、2にインクリメントされる。CC3では、おそらく、問題のあるインストラクションがスケジューラ124内にないか、又はスケジューラ124内の選択ロジックが他のインストラクションを発行のために選択していることから、問題のあるインストラクションが選択されない。従って、カウンタは、2から1へデクリメントされる。
CC4及びCC5の各々において、問題のあるインストラクションが発行され、そしてカウントがインクリメントされる。CC5では、カウントがスレッシュホールド値3に達する。それ故、スロットルロジック340は、識別された候補インストラクション形式の問題のあるインストラクションの発行を阻止するためにスケジューラ124へコントロール信号を送信する。CC6では、阻止のために問題のあるインストラクションが発行されず、カウントは、3から2へデクリメントされる。カウントがスレッシュホールドより低いので、阻止が除去される。CC7では、問題のあるインストラクションが発行され、そしてカウントがインクリメントされる。CC7では、カウントが再びスレッシュホールド値3に達する。CC8及びCC9では、CC6及びCC7で生じたように阻止及び発行が生じる。問題のあるインストラクションの発行レートは、2つのクロックサイクル当たり1つのインストラクションの発行、即ち時間の50%という最大限界に到達する。
図7は、インストラクション発行レートを制限する別の実施形態を示す一般化されたブロック図である。図示されたように、この例でも、3のカウントスレッシュホールドが使用される。スレッシュホールドにヒットする前に、インクリメント量は、1であり、そしてデクリメント量は、1の値である。66%の発行レート限界が選択される。それ故、この例では、スレッシュホールドに達した後に、デクリメント量が2に変化する。
CC1からCC4において、問題のあるインストラクションが、スケジューラ124内の選択ロジック及び利用性に基づいて実行コア130へ発行される。カウントが維持されるが、CC5においてスレッシュホールド値に達するまで、問題のあるインストラクションの発行を阻止しない。そこで、カウントが、1ではなく、2だけデクリメントされる。CC6からCC8において、問題のあるインストラクションが実行コア130に発行され、その間、カウントが1だけインクリメントされる。CC8では、再び、スレッシュホールドに達する。CC9では、問題のあるインストラクションの発行が阻止され、そしてカウントが、1ではなく、ここでは、2だけデクリメントされる。問題のあるインストラクションの発行レートは、3つのクロックサイクル当たり2つのインストラクションの発行、即ち時間の66%という最大限界に達する。
図8は、発行レートを制限する更に別の実施形態を示す一般化されたブロック図である。図示されたように、この例でも、3のカウントスレッシュホールドが使用される。スレッシュホールドにヒットする前に、インクリメント量は、1であり、そしてデクリメント量は、1の値である。33%の発行レート限界が選択される。それ故、この例では、スレッシュホールドに達した後に、インクリメント量が2に変化する。
CC1からCC4において、問題のあるインストラクションが、スケジューラ124内の選択ロジック及び利用性に基づいて実行コア130へ発行される。カウントが維持されるが、CC5においてスレッシュホールド値に達するまで、問題のあるインストラクションの発行を阻止しない。そこで、カウントは、依然、1だけデクリメントされる。CC7では、カウントがスレッシュホールドより低いので、問題のあるインストラクションが実行コア130へ発行される。しかしながら、カウントは、ここでは、1ではなく、2だけインクリメントされる。カウントは、2から4に変化する。スレッシュホールドを越えるので、スロットルロジック340は、問題のあるインストラクションの発行を阻止するためにコントロール信号をスケジューラ124へ送信する。CC8では、スレッシュホールドに依然到達し、従って、問題のあるインストラクションは、依然、阻止される。問題のあるインストラクションに対する発行レートは、3つのクロックサイクル当たり1つのインストラクションの発行、即ち時間の33%という最大限界に達する。
図9は、特定のインストラクション形式のインストラクション発行レートをコントロールする方法900の一実施形態の一般化されたフローチャートである。方法900は、別の実施形態を導出するように当業者により変更することができる。又、この実施形態におけるステップは、順次に示されている。しかしながら、あるステップは、図示されたものとは異なる順序で行われてもよく、又、あるステップは、同時に遂行されてもよく、又、あるステップは、他のステップと組み合わされてもよく、そしてあるステップは、別の実施形態では存在しなくてもよい。
図示された実施形態では、ブロック902において、所与のインストラクション形式を、絞り込むべき候補インストラクション形式として選択する。実行中に高い電力消費に関連したインストラクション形式を選択する。関連する高い電力消費は、著しいレイテンシ中に顕著な量の処理が遂行されることによるものである。フローティングポイントSIMDインストラクション、ロード/記憶インストラクション、及び他のものが候補となる。候補インストラクション形式の1つ以上のグループを選択する。
ブロック904において、1つ以上のソフトウェアアプリケーションの実行中に電力スロットルコードを決定する。一実施形態では、1つ以上のソフトウェアアプリケーションの実行中に推定される電力性能状態(P状態)に基づいて電力スロットルコードを選択する。別の実施形態では、ユーザによりソフトウェアを経て書かれた状態コントロールレジスタから電力スロットルコードを読み取る。候補インストラクション形式及び発行レート限界の所与のグループを選択するために電力スロットルコードの所与の値を選択する。一実施形態において、電力スロットルコードに基づいてインストラクション発行カウントの所与のスレッシュホールドを選択する。別の実施形態では、電力スロットルコードに基づいて、インストラクション発行カウントではなく、インストラクション発行レートの所与のスレッシュホールドを選択する。
ブロック906において、プログラム実行中に、1つ以上のインストラクション形式の選択されたグループごとにインストラクション発行カウントを維持する。このカウントは、プログラム実行前に決定された一定量だけインクリメント及びデクリメントされる。別の実施形態では、このカウントは、電力スロットルテーブル310のようなテーブルから読み取られた量だけインクリメント及びデクリメントされる。更に別の実施形態では、先に述べたカウントではなく、インストラクション発行レートが維持される。
維持されたカウント又はレートが所与のスレッシュホールドを越える場合には(条件ブロック908)、次いで、ブロック910において、おそらく絞り込むために、候補インストラクション形式の1つ以上のインストラクション形式の1つ以上のグループを選択する。発行絞り込みの量は、少なくとも電力スロットルコードに基づく。ブロック912において、選択された1つ以上のグループに対する発行レート限界を、少なくとも電力スロットルコードに基づいて選択する。ブロック914において、選択された1つ以上のグループのインストラクション発行レートを、それに関連する選択された発行レートに制限する。電力スロットルコードが変化しない場合には(条件ブロック916)、方法900のコントロールフローは、ブロック906へ戻る。さもなければ、ブロック918において、インストラクション発行カウントのスレッシュホールドを、変更された電力スロットルコードに基づいて更新する。別の実施形態では、インストラクション発行レートのスレッシュホールドを、変更された電力スロットルコードに基づいて更新する。次いで、方法900のコントロールフローは、ブロック918からブロック906へ進む。
以上、本発明の実施形態を詳細に説明したが、当業者であれば、以上の開示が理解されれば、多数の修正や変更が明らかとなろう。そのような変更や修正は、全て、特許請求の範囲内に網羅されることが意図される。
100:プロセッサ
102:アドレス選択ロジック
104:i−キャッシュ
106:次回フェッチプレディクタ
108:分岐方向プレディクタ
110:デコードユニット
112:コントロールフロー評価ブロック
114:ディスパッチキュー
116:マイクロコード
118:リネーマーアレイ
120:PR(フリーリスト)アロケータ
122:依存性合併ブロック
124:スケジューラ
130:実行コア
132:整数ALU
134:整数ALU/分岐ユニット
136:SIMD FP加算ユニット
138:SIMD FP乗算ユニット
140:ロード/記憶ユニット
150:電力スロットルユニット
210:電力マネージャー
220:電力マネージャー状態マシン
230:電力状態テーブル
240a、b、q:エントリ
242:電力状態コード
244:動作周波数
246:動作電圧
248:スロットルコード
260:ソフトウェアレイヤ
270:構成レジスタ

Claims (18)

  1. インストラクションを選択して発行するよう構成されたスケジューラと、
    前記発行されたインストラクションを受け取って実行するよう構成された実行コアと、 電力スロットルユニットと、
    を備え、前記電力スロットルユニットは、
    1つ以上のインストラクション形式に対するインストラクション発行カウントを維持し、前記インストラクション発行カウントは、前記1つ以上のインストラクション形式のうちの所与のインストラクション形式のインストラクション前記実行コアへ発行されるクロックサイクルに第1の量だけインクリメントされ、前記所与のインストラクション形式のインストラクションが発行されないクロックサイクルに第2の量だけデクリメントされるカウンタのカウント値であり
    1つのインストラクション発行カウントが前記所与のインストラクション形式に対応するスレッシュホールドを越えることを決定するのに応答して、
    前記所与のインストラクション形式に対する新たな発行レートであって前記少なくとも1つインストラクション形式の現在の発行レートとは異なり、発効される新たな発行レートを前記第1の量及び前記第2の量の少なくとも1つを変更することにより選出する、
    前記スレッシュホールドを越える前記インストラクション発行カウントに対応する前記所与のインストラクション形式のインストラクションの発行阻止を開始する、
    ように構成され、
    前記スレッシュホールドを越えたインストラクション発行カウントが前記スレッシュホールドより低くなることを決定するのに応答して、当該インストラクション形式のインストラクションの発行阻止を解除する、プロセッサ。
  2. 前記電力スロットルユニットは、更に、複数のエントリを含む電力状態テーブルにアクセスし、電力状態コードを用いて前記電力状態テーブルのエントリを選択し、前記エントリに記憶された電力スロットルコードを読み出し、前記選出を、前記電力スロットルコードに基づいて遂行するように構成された、請求項1に記載のプロセッサ。
  3. 前記電力状態コードは、前記プロセッサの動作電力状態に基づく、請求項に記載のプロセッサ。
  4. 前記電力スロットルユニットは、更に、複数のエントリを含むスロットルテーブルにアクセスし、前記電力スロットルコードを用いて前記スロットルテーブルのエントリを選択し、前記スロットルテーブルの選択されたエントリから所与のインストラクション形式、当該所与のインストラクション形式に対応するスレッシュホールド及び前記所与のインストラクション形式に対応する発行レート限界を読み出すように構成された、請求項2に記載のプロセッサ。
  5. 前記電力スロットルユニットは、更に、前記選出を、どのインストラクション発行カウントが各スレッシュホールドを越えたかに更に基づいて遂行するように構成された、請求項3に記載のプロセッサ。
  6. 前記第1の量及び前記第2の量は等しくない、請求項1に記載のプロセッサ。
  7. 前記インストラクション形式は、シングルインストラクション・マルチデータ(SIMD)インストラクションを含む、請求項1に記載のプロセッサ。
  8. 1つ以上のインストラクション形式に対するインストラクション発行カウントを維持する段階であって、前記インストラクション発行カウントは、前記1つ以上のインストラクション形式のうち所与のインストラクション形式のインストラクションが実行コアへ発行されるクロックサイクルに第1の量だけインクリメントされ、前記所与のインストラクション形式のインストラクションが発行されないクロックサイクルに第2の量だけデクリメントされるカウンタのカウンタ値である、段階と、
    1つのインストラクション発行カウントが前記所与のインストラクション形式に対応するスレッシュホールドを越えることを決定する段階と、
    前記決定に応答して、前記所与のインストラクション形式に対して、前記少なくとも1つのインストラクション形式の現在の発行レートとは異なり、発効される新たな発行レートを前記第1の量及び前記第2の量の少なくとも1つを変更することにより選出し、
    前記スレッシュホールドを越える前記インストラクション発行カウントに対応する前記所与のインストラクション形式の少なくとも1つのインストラクションの発行阻止を開始する、
    という段階と、
    前記スレッシュホールドを越えたインストラクション発行カウントが前記スレッシュホールドより低くなることを決定するのに応答して、当該インストラクション形式のインストラクションの発行阻止を解除する段階と、
    を備える、方法。
  9. 複数のエントリを含む電力状態テーブルにアクセスする段階と、電力状態コードを用いて前記電力状態テーブルのエントリを選択する段階と、前記エントリに記憶された電力スロットルコードを読み出す段階と、前記選出を、ソフトウェアにより書かれた電力スロットルコードに基づいて遂行する段階とを更に備えた、請求項8に記載の方法。
  10. 前記電力状態コードはプロセッサの動作電力状態に基づく、請求項に記載の方法。
  11. 複数のエントリを含むスロットルテーブルにアクセスする段階と、前記電力スロットルコードを用いて前記スロットルテーブルのエントリを選択する段階と、前記スロットルテーブルの選択されたエントリから所与のインストラクション形式、当該所与のインストラクション形式に対応するスレッシュホールド及び前記所与のインストラクション形式に対応する発行レート限界を読み出す段階とを更に備えた、請求項9に記載の方法。
  12. 前記選出を、どのインストラクション発行カウントが各スレッシュホールドを越えたかに更に基づいて遂行する段階を更に備えた、請求項10に記載の方法。
  13. 前記決定に応答して、前記第1の量及び第2の量の1つ以上を変更する段階を更に備えた、請求項8に記載の方法。
  14. 前記インストラクション形式は、シングルインストラクション・マルチデータ(SIMD)インストラクションを含む、請求項9に記載の方法。
  15. インストラクションを選択して発行するよう構成されたスケジューラに対する第1のインターフェイスと、
    前記発行されたインストラクションを受け取って実行するよう構成された実行コアに対する第2のインターフェイスと、
    スロットルコントロールロジックと、
    を備え、前記スロットルコントロールロジックは、
    前記第2のインターフェイスを経て発行されるインストラクションの検出に基づいて1つ以上のインストラクション形式に対するインストラクション発行カウントを維持し、前記インストラクション形式は、前記実行コアにより実行されるサポートされるインストラクション形式のサブセットであり、前記インストラクション発行カウントは、前記1つ以上のインストラクション形式のうちの所与のインストラクション形式のインストラクションが前記実行コアへ発行されるクロックサイクル毎に第1の量だけインクリメントされ、前記所与のインストラクション形式のインストラクションが発行されないクロックサイクルに第2の量だけデクリメントされるカウンタのカウンタ値であり
    1つのインストラクション発行カウント前記所与のインストラクション形式に対応するスレッシュホールドを越えることを決定し、
    前記決定に応答して、
    前記所与のインストラクション形式に対して、前記少なくとも1つのインストラクション形式の現在の発行レートとは異なり、発効される新たな発行レートを前記第1の量及び前記第2の量の少なくとも1つを変更することにより選出し、
    前記スレッシュホールドを越える前記インストラクション発行カウントに対応する前記所与のインストラクション形式の少なくとも1つのインストラクションの発行阻止を開始し、
    前記スレッシュホールドを越えたインストラクション発行カウントが前記スレッシュホールドより低くなることを決定するのに応答して、当該インストラクション形式のインストラクションの発行阻止を解除するコントロール信号を前記第1のインターフェイスを経て送信する、
    ように構成される、電力スロットルユニット。
  16. 前記スロットルコントロールロジックは、更に、複数のエントリを含む電力状態テーブルにアクセスし、電力状態コードを用いて前記電力状態テーブルのエントリを選択し、前記エントリに記憶された電力スロットルコードを読み出し、前記選出を、前記電力スロットルコードに基づいて遂行するように構成された、請求項15に記載の電力スロットルユニット。
  17. 前記電力状態コードは、プロセッサの動作電力状態に基づく、請求項16に記載の電力スロットルユニット。
  18. インストラクションを選択して発行するよう構成されたスケジューラと、
    前記発行されたインストラクションを受け取って実行するよう構成された実行コアに対するインターフェイスと、
    装置内のアクティビティに基づいて電力状態コードを決定するように構成された電力マネージャーと、
    コントロールロジックと、
    を備え、前記電力マネージャーは、更に、電力スロットルコードを前記コントロールロジックへ搬送するように構成され、前記電力スロットルコードは、現在の電力状態コードに関連され、前記コントロールロジックは、
    所与のインストラクション形式に対する発行レートを前記電力スロットルコードに基づいて選出し、
    適格化条件が満足されることの決定に応答して、
    前記所与のインストラクション形式に対して、前記少なくとも1つのインストラクション形式の現在の発行レートとは異なり、発効される新たな発行レートを前記第1の量及び前記第2の量の少なくとも1つを変更することにより選出し
    前記スレッシュホールドを越える前記インストラクション発行カウントに対応する前記所与のインストラクション形式の少なくとも1つのインストラクションの発行阻止を開始する、
    ように構成された、装置であって、
    前記装置は、1つ以上のインストラクション形式に対するインストラクション発行カウントを維持し、前記インストラクション発行カウントは、前記1つ以上のインストラクション形式のうちの所与のインストラクション形式のインストラクションが前記実行コアに発行されるクロックサイクルに第1の量だけインクリメントされ、前記所与のインストラクション形式のインストラクションが発行されないクロックサイクルに第2の量だけデクリメントされるカウンタのカウント値であり
    前記適格化条件が満足されなくなることの決定に応答して、前記所与のインストラクション形式のインストラクションの発行阻止を解除する、装置。
JP2012230295A 2011-10-31 2012-09-28 プロセッサインストラクションの発行の絞り込み Active JP5853301B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/285,361 2011-10-31
US13/285,361 US9009451B2 (en) 2011-10-31 2011-10-31 Instruction type issue throttling upon reaching threshold by adjusting counter increment amount for issued cycle and decrement amount for not issued cycle

Publications (2)

Publication Number Publication Date
JP2013101605A JP2013101605A (ja) 2013-05-23
JP5853301B2 true JP5853301B2 (ja) 2016-02-09

Family

ID=47044792

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012230295A Active JP5853301B2 (ja) 2011-10-31 2012-09-28 プロセッサインストラクションの発行の絞り込み

Country Status (9)

Country Link
US (1) US9009451B2 (ja)
EP (1) EP2587366B1 (ja)
JP (1) JP5853301B2 (ja)
KR (1) KR101421346B1 (ja)
CN (1) CN103092320B (ja)
AU (1) AU2012227209B2 (ja)
BR (1) BR102012024721B1 (ja)
TW (1) TWI517043B (ja)
WO (1) WO2013066519A1 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3483771A1 (en) * 2011-12-30 2019-05-15 Intel Corporation Multi-level cpu high current protection
US9027141B2 (en) * 2012-04-12 2015-05-05 Netflix, Inc. Method and system for improving security and reliability in a networked application environment
US9304573B2 (en) * 2013-06-21 2016-04-05 Apple Inc. Dynamic voltage and frequency management based on active processors
US9292362B2 (en) * 2013-06-25 2016-03-22 Intel Corporation Method and apparatus to protect a processor against excessive power usage
US9396360B2 (en) * 2013-06-27 2016-07-19 Advanced Micro Devices, Inc. System and method for secure control over performance state
SG11201601787QA (en) * 2013-09-09 2016-04-28 Seagate Technology Llc Mobile data storage device with power management
US9547496B2 (en) 2013-11-07 2017-01-17 Microsoft Technology Licensing, Llc Energy efficient multi-modal instruction issue
US9606605B2 (en) 2014-03-07 2017-03-28 Apple Inc. Dynamic voltage margin recovery
US9606602B2 (en) * 2014-06-30 2017-03-28 Intel Corporation Method and apparatus to prevent voltage droop in a computer
US10296348B2 (en) 2015-02-16 2019-05-21 International Business Machines Corproation Delayed allocation of an out-of-order queue entry and based on determining that the entry is unavailable, enable deadlock avoidance involving reserving one or more entries in the queue, and disabling deadlock avoidance based on expiration of a predetermined amount of time
US9841997B2 (en) * 2015-06-25 2017-12-12 Intel Corporation Method and apparatus for execution mode selection
KR102476357B1 (ko) 2015-08-06 2022-12-09 삼성전자주식회사 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법
US9886081B2 (en) * 2015-09-16 2018-02-06 Qualcomm Incorporated Managing power-down modes
CN106775745B (zh) * 2016-12-28 2020-04-28 广州华多网络科技有限公司 合并程序代码的方法及装置
US10423209B2 (en) * 2017-02-13 2019-09-24 Apple Inc. Systems and methods for coherent power management
US11379708B2 (en) * 2018-08-09 2022-07-05 Nvidia Corporation Techniques for efficiently operating a processing system based on energy characteristics of instructions and machine learning
US11487341B2 (en) * 2018-08-09 2022-11-01 Nvidia Corporation Techniques for configuring a processor to execute instructions efficiently
US10877545B2 (en) * 2018-09-20 2020-12-29 Arm Limited Energy management in graphics processing units
US10921872B2 (en) * 2019-03-29 2021-02-16 Intel Corporation Performing soft throttling and hard throttling in a processor
US11422812B2 (en) * 2019-06-25 2022-08-23 Advanced Micro Devices, Inc. Method and apparatus for efficient programmable instructions in computer systems
US11720158B2 (en) * 2020-03-13 2023-08-08 Google Llc Power throttling mechanism using instruction rate limiting in high power machine-learning ASICs
US11061702B1 (en) 2020-05-22 2021-07-13 Rapid7, Inc. Agent-based throttling of command executions
US11416056B2 (en) 2020-09-18 2022-08-16 Apple Inc. Power sense correction for power budget estimator
CN112579396A (zh) * 2020-12-25 2021-03-30 上海安畅网络科技股份有限公司 软件系统动态限流方法、装置及设备
US20230205538A1 (en) * 2021-12-23 2023-06-29 Intel Corporation Adaptive dynamic dispatch of micro-operations
US11855831B1 (en) 2022-06-10 2023-12-26 T-Mobile Usa, Inc. Enabling an operator to resolve an issue associated with a 5G wireless telecommunication network using AR glasses
CN116126631B (zh) * 2022-12-29 2024-09-20 上海芷锐电子科技有限公司 功耗监测装置、方法、soc芯片、电子设备及存储介质
GB2626996A (en) * 2023-02-13 2024-08-14 Advanced Risc Mach Ltd Power management

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0651314A1 (en) 1993-10-27 1995-05-03 International Business Machines Corporation An apparatus and method for thermally protecting a processing device
US5996083A (en) 1995-08-11 1999-11-30 Hewlett-Packard Company Microprocessor having software controllable power consumption
JP3004968B2 (ja) * 1997-09-03 2000-01-31 松下電器産業株式会社 プロセッサ
CN1157641C (zh) 1997-09-03 2004-07-14 松下电器产业株式会社 处理器
US6651176B1 (en) 1999-12-08 2003-11-18 Hewlett-Packard Development Company, L.P. Systems and methods for variable control of power dissipation in a pipelined processor
US6564328B1 (en) 1999-12-23 2003-05-13 Intel Corporation Microprocessor with digital power throttle
US6826704B1 (en) 2001-03-08 2004-11-30 Advanced Micro Devices, Inc. Microprocessor employing a performance throttling mechanism for power management
US6834353B2 (en) 2001-10-22 2004-12-21 International Business Machines Corporation Method and apparatus for reducing power consumption of a processing integrated circuit
US6775787B2 (en) * 2002-01-02 2004-08-10 Intel Corporation Instruction scheduling based on power estimation
US7246219B2 (en) 2003-12-23 2007-07-17 Intel Corporation Methods and apparatus to control functional blocks within a processor
US8190863B2 (en) 2004-07-02 2012-05-29 Intel Corporation Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction
US7319578B2 (en) 2005-06-08 2008-01-15 International Business Machines Corporation Digital power monitor and adaptive self-tuning power management
US7836284B2 (en) * 2005-06-09 2010-11-16 Qualcomm Incorporated Microprocessor with automatic selection of processing parallelism mode based on width data of instructions
TW200825705A (en) 2006-04-26 2008-06-16 Nxp Bv Method and system for power-state transition controllers
US7793125B2 (en) 2007-01-10 2010-09-07 International Business Machines Corporation Method and apparatus for power throttling a processor in an information handling system
US7779237B2 (en) 2007-07-11 2010-08-17 International Business Machines Corporation Adaptive execution frequency control method for enhanced instruction throughput
US7937568B2 (en) 2007-07-11 2011-05-03 International Business Machines Corporation Adaptive execution cycle control method for enhanced instruction throughput
US7992017B2 (en) 2007-09-11 2011-08-02 Intel Corporation Methods and apparatuses for reducing step loads of processors
US20090182986A1 (en) 2008-01-16 2009-07-16 Stephen Joseph Schwinn Processing Unit Incorporating Issue Rate-Based Predictive Thermal Management
US7937563B2 (en) 2008-05-27 2011-05-03 Advanced Micro Devices, Inc. Voltage droop mitigation through instruction issue throttling
EP2515200A1 (en) 2009-12-14 2012-10-24 Fujitsu Limited Arithmetic processing device, information processing device, and method for controlling same

Also Published As

Publication number Publication date
JP2013101605A (ja) 2013-05-23
AU2012227209B2 (en) 2014-01-23
AU2012227209A1 (en) 2013-05-16
KR101421346B1 (ko) 2014-07-18
BR102012024721B1 (pt) 2021-01-05
BR102012024721A2 (pt) 2013-11-26
WO2013066519A1 (en) 2013-05-10
TWI517043B (zh) 2016-01-11
EP2587366B1 (en) 2015-03-04
KR20130047577A (ko) 2013-05-08
CN103092320B (zh) 2015-10-14
EP2587366A1 (en) 2013-05-01
TW201331835A (zh) 2013-08-01
US20130111191A1 (en) 2013-05-02
US9009451B2 (en) 2015-04-14
CN103092320A (zh) 2013-05-08

Similar Documents

Publication Publication Date Title
JP5853301B2 (ja) プロセッサインストラクションの発行の絞り込み
JP5172942B2 (ja) プロセッサによる電力消費を低減する方法、プロセッサ、及び、情報処理システム
JP5853303B2 (ja) レジスタ初期化動作の最適化
JP4811879B2 (ja) 最大パワーを制御するためのマイクロプロセッサ・リソースの相互排除アクティブ化のためのシステム及び方法
US9037837B2 (en) Hardware assist thread for increasing code parallelism
US7676808B2 (en) System and method for CPI load balancing in SMT processors
US9383806B2 (en) Multi-core processor instruction throttling
TWI564707B (zh) 用於控制電流之設備、方法及系統
JP2014002735A (ja) ゼロサイクルロード
CN103513964A (zh) 循环缓冲器打包
CN112673346A (zh) 用于提取组的序列的控制对分支预测单元的存取
US20080229065A1 (en) Configurable Microprocessor
JP2010527071A (ja) マルチスレッド型プロセッサのためのスレッドデエンファシス命令
US11531562B2 (en) Systems, methods, and apparatuses for resource monitoring
US20080229058A1 (en) Configurable Microprocessor
WO2019094492A1 (en) System and method of vliw instruction processing using reduced-width vliw processor
US20100083269A1 (en) Algorithm for fast list allocation and free
US20230099989A1 (en) Scalable toggle point control circuitry for a clustered decode pipeline
Lozano et al. A deeply embedded processor for smart devices
KR20240124412A (ko) 조건부 명령어 예측

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140205

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140501

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140729

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20141006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150122

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20150129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150309

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150609

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150708

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150902

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151116

R150 Certificate of patent or registration of utility model

Ref document number: 5853301

Country of ref document: JP

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250