JP2008544350A - Simd並列処理の自動選択を備えたマイクロプロセッサ - Google Patents

Simd並列処理の自動選択を備えたマイクロプロセッサ Download PDF

Info

Publication number
JP2008544350A
JP2008544350A JP2008515749A JP2008515749A JP2008544350A JP 2008544350 A JP2008544350 A JP 2008544350A JP 2008515749 A JP2008515749 A JP 2008515749A JP 2008515749 A JP2008515749 A JP 2008515749A JP 2008544350 A JP2008544350 A JP 2008544350A
Authority
JP
Japan
Prior art keywords
parallel
data
processing
instructions
width
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
JP2008515749A
Other languages
English (en)
Other versions
JP5074389B2 (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 JP2008544350A publication Critical patent/JP2008544350A/ja
Application granted granted Critical
Publication of JP5074389B2 publication Critical patent/JP5074389B2/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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/20Cooling means
    • G06F1/206Cooling means comprising thermal management
    • 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
    • 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
    • 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/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • 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/30181Instruction operation extension or modification
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode 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/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/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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
    • 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
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Power Sources (AREA)
  • Advance Control (AREA)
  • Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)
  • Electrophonic Musical Instruments (AREA)

Abstract

【解決手段】1又は複数の処理要素の電力及びエネルギーの自動選択制御は、高度な並列プログラマブルデータプロセッサにおいてモニタされた条件に、並列処理の程度を一致させる。例えば、並列プロセッサのロジックは、(例えば、特定のタスクのため、又は、検出された温度によって)プログラム動作が、データパスの全幅未満を必要とするときを検出する。これを受けて、制御ロジックは、並列処理能力のサブセットを要求する動作モードを自動的に設定する。すなわち、必要とされない少なくとも1つの並列処理要素は、エネルギーの節約、及び/又は、熱(すなわち、電力消費)を下げるために停止される。後に、能力を追加する動作が適切な場合、ロジックは、処理条件の変化を検出し、動作モードを、一般には全幅のようなより広いデータパスのモードへ自動的に設定する。このモード変化は、以前に停止された処理要素を再起動する。
【選択図】 図1

Description

本主題は、プロセッサの処理動作に関連する条件に、動作可能な並列処理の程度を一致させるために、例えばSingle Instruction, Multiple Data(SIMD)プロセッサ等のような並列データ処理要素のうちの1又は多くのアクティブ状態(アクティブ及び非アクティブ)を自動制御する技術及び装置に関する。
多くのデバイスが、プログラム命令に従ってデータ処理機能を実行するための複雑なロジック構成を持つ、例えばマイクロプロセッサやデジタルシグナルプロセッサのような統合プロセッサを利用する。例えば、ビデオ、オーディオ、又はグラフィックスのようなマルチメディアデータのデジタル処理を必要とするアプリケーションは、消費者の人気が益々高まっている。しかしながら、そのような情報の処理は、集約的であり、そのようなデータの処理に特に適したプロセッサアーキテクチャに至る。
マルチメディアデータは一般に、相当な量の「並列」データを含んでいる。データは、データの個々のユニットが互いに依存しないところで「並列」である。従って、データの1ユニットの処理は、別のユニットの処理には依存せず、他の何れのユニットの処理の終了をも待つ必要がない。その結果、そのような独立したデータ処理動作を、並列に、同時に行なうことは可能である。データのある種のこの特徴、特に、マルチメディアデータの一般的な形態は、データのユニットを同時に並列して操作することができる並列プロセッサの生成に至った。マルチメディアデータの並列処理は、例えば、しばしば全体的な処理速度を実質的に増やしてしまう。
多くの異なるアーキテクチャ及び命令タイプが、特にマルチメディアアプリケーションのための並列データ処理のために開発された。例えば、Single Instruction, Multiple Data(SIMD)プロセッサは、データを並列処理する。SIMD命令を使用するマルチメディア処理は、多数のデータ要素上において並列して動作することによって、特定のプログラムタスクを実行するために必要な全命令数を減らし、パフォーマンスの速度を高める。プロセッサは、命令のうちの1つのストリームを実行するかもしれないが、それらの命令のSIMD実行は、多くのデータストリームを同時に並列して処理する。
SIMDプロセッサのような高度な並列データ処理タイプのデバイスを含むプロセッサの多くのアプリケーションは、プロセッサ回路が消費できる電力及びエネルギーについて厳しい制約を課す。例えば、セル電話、PDA(ポータブルデジタルアシスタント)、及びハンドヘルドビデオゲームのようなポータブルデバイスは、バッテリ電源を利用する。しかしながら、これらデバイスは、精巧なマイクロプロセッサを含んでおり、ある場合において、マルチメディア関連処理のためにコプロセッサを利用する。そのようなアプリケーションのためのプロセッサ設計は一般に、バッテリ電源の電力の寿命のみならず、内蔵するチップの寿命を延ばすために、電力及びエネルギーの消費の注意深い制御を保証する。
プロセッサのアーキテクチャは、プロセッサを介するデータパスの「幅」、すなわち処理されるデータの最大サイズを確立する。SIMDプロセッサアーキテクチャのような並列処理設計は、一般に、デバイスが、与えられたサイクル内で処理することができる並列データの最大量に対応するデータパス幅を提供するようにスケールされる。現在のSIMDプロセッサは、1度に最大128ビットのデータを処理することができる。これは、全体のデータパス幅が128ビットであることを意味する。しかしながら、与えられた何れの時間においても、プロセッサの並列部は、データの小さなユニットを処理しているかもしれない。
他のサイズも知られているが、今日、一般的な並列プロセッサは、64ビット幅データパス又は128ビット幅データパスを提供する。データパスは、異なる幅を持つデータを取り扱うように構成されているが、並列処理要素から構成される。例えば128ビットデータパスは、より小さなサイズに分割されうる。すなわち、プロセッサは、特定のアプリケーションのために書かれたSIMD命令によって指定されるような8ビット長、16ビット長、32ビット長、又は64ビット長である128ビットデータのセクションを処理することができる。例えば8ビット命令を使用すると、128ビット幅のデータパスを持つプロセッサは、16の8ビットデータユニットを並列に処理することができる。逆に64ビットのデータパスでは、命令が128ビットを必要とする場合、データは2つの64ビットのセクションに分割され、この命令は、両64ビットセクションについて連続して実行される。各64ビットセクションの処理はもちろん、例えば、8つの8ビットデータユニットからなる並列処理を伴う。128ビット命令のため処理を分割することによって、分割される処理のための時間が長くなるが、64ビット幅のデータパスが、128ビット命令を処理することが可能となる。
これら動作によって、プロセッサの並列リソースの最適利用を可能にする。また、特定の処理アプリケーションのために、全ての処理リソースが必要とされる訳ではない時間が生じる。あるいは、フル動作が望ましい時間が生じる。例えば、プロセッサの多くの機能又はアプリケーションが、プロセッサデバイスのフルの処理能力を必要としないかもしれないし、あるいは、極めて限定された時間のみのために、フルの処理能力を必要とするかもしれない。128ビットのデータパスプロセッサの例では、例えば、限定されたデータ並列処理量しかないことによって、処理されるデータ量が少ないことによって、あるいは、速度に対する大きな要求がないことによって、アプリケーション又はその一部が、ある実質的な期間について、64ビットデータ処理しか必要としないかもしれない。しかしながら、128ビット幅データパスを提供する要素が、フル電力が連続して供給される場合、使用されていない並列要素が、不必要にエネルギーを消費している。
別の例として、フルの並列処理動作は、並列要素の全ての重要な動作を含む。従って、並列要素の全ては、熱を生成している。例えば、低コストのアプリケーションのために、プラスチックパッケージにカプセル化された幾つかのプロセッサ設計は、ある温度以上の熱に耐えることができないかもしれない。長期間にわたる並列要素の全アレイの連続的高速動作は、あまりにも多くの熱を生成するかもしれない。
高度な並列処理を必要としないアプリケーションのための更なる効率化のために、幾つかのアプリケーションに要求されるよりも低い程度の並列処理の並列プロセッサが設計されうる。この妥協によって、電力消費量すなわち熱生成量を低減することができるが、より並列処理が必要とされる場合には、エネルギーを浪費し、パフォーマンスが低下する。
従って、処理タスク及び/又は環境条件に基づいて、そのようなプロセッサの並列処理を自動的に調節する技術に対するニーズがある。
本明細書の教示は、検出された処理条件に基づいて、並列プログラマブルデータプロセッサの1又は複数の要素の自動起動/停止(automatic activation/deactivation)を提供する。本質的に、この制御は、並列処理の動作程度を、並列データプロセッサによって実行されるタスクの要件、及び/又は、プロセッサの環境条件に一致させる。例えば、並列処理要素は、必要ではない場合、エネルギーを節約するために、あるいは、プロセッサの温度が極めて高い場合、プロセッサを冷却するために、停止されうる。これらの教示の局面は、並列処理デバイスと同様、様々な動作方法も含む。
例えば、並列データプロセッサの動作の並列処理を制御する方法は、並列データプロセッサによって実行される処理に関連する1又は複数の条件をモニタすることを含む。モニタされた条件が、第1の処理状態に関連している場合、第1の幅を持つデータパスを提供するデータプロセッサの2つの並列処理要素において、1又は複数の命令が並列して実行される。モニタされた条件が、第2の処理状態に関連している場合、2つの並列処理要素における第1の1つにおいて、1又は複数の命令が実行される。この状況下では、第2のより狭い幅を持つデータが、第1の要素を介して処理される。一方、2つの並列処理要素のうちの第2の1つは、アクティブではない。典型的な実装では、第2の要素を停止する(deactivating)ことによって、エネルギーを節約し、及び/又は、プロセッサによる熱生成(すなわち、電力消費)を低減する。
検出された処理要求又は履歴に基づいて、並列処理を自動的に制御(少なくとも1つの並列処理要素を起動及び停止)する例が開示される。このアプローチは、新たに到来する命令セット内の、又は、最近処理された命令セット内の、より広い幅を持つデータ処理に対する要求の頻度によって示されるように、並列処理の程度を、タスク要求に一致させる。他の例は、例えばデバイス温度のような、感知された環境条件に基づいて、並列処理を自動的に制御する。
128ビットのSingle Instruction, Multiple Data(SIMD)タイプの並列コプロセッサの例では、並列処理要素は、2つの64ビットSIMD演算ロジックユニット(ALU)でありうる。両ユニットが動作可能な場合、ALUは、128ビット幅のデータパスを提供し、コプロセッサは、128ビットデータ処理モードで動作する。制御ロジックは、処理条件をモニタし、その状態を検出して、64ビット動作への変更を保証する。これを受けて、ALUのうちの一方が自動的に停止され、引き続き、他方のALUが、64ビット幅データ処理のための命令を実行する。しかしながら、64ビットモードにおいてでさえ、プロセッサは、128ビットデータの処理のための命令を取り扱うかもしれない。例えば、方法は更に、128ビットデータの処理を要求するSIMD命令を受け取ることと、そのSIMD命令を、64ビットデータ幅のデータの処理を要求する2つの命令に展開することとを含む。そして、この方法は、1つの動作可能な64ビットのALUを介して順に展開することによって得られる2つの命令を実行することを含む。
従って、並列データプロセッサの動作の並列処理を制御する別の方法は、第1の幅を持つデータを処理できるように、データプロセッサの2つの並列処理要素において、1又は複数の命令を並列で実行することと、この並列データプロセッサによる処理に関連する条件を感知することと、感知された条件の状態を検出すると、第2の並列処理要素を停止することとを含む。この方法では、第2の並列処理要素が停止している間、より広い幅からなるデータの並列データ処理を要求する命令が、複数の命令へと展開される。そのような2つの命令は、例えば、第2のより狭い幅を持つデータの並列データ処理を要求する。第1の並列処理要素は、2つの命令を連続的に実行する。一方、第2の並列処理要素は、停止される。
上述したように、本教示は、1又は複数のモニタされた条件に応じて、並列処理の程度を制御するように適応された並列データプロセッサをも含む。そのようなデバイスの例は、1つの実装では、プログラム命令に応答して、例えば64ビットであるような第1の幅を持つデータを処理する第1の処理要素を備える。このデータプロセッサはまた、プログラム命令に応答して、第1の処理ユニットと並列に動作するように接続された第2の処理ユニットを含む。これら2つの処理要素の並列動作は、第2のより広い幅(例えば128ビット)を持つデータを並列処理することを備える。プロセッサはまた、データプロセッサの動作を処理することに関連する条件をモニタする制御ロジックを含む。上述したように、モニタされる条件の例は、例えば、処理が第2の幅(例えば、128ビットのデータ)にどれくらいの頻繁で関連するのかのようなタスク関連条件のみならず、例えばプロセッサ温度のような環境条件を含む。このロジックは、モニタした条件の閾値に対する関係に基づいて、第2の処理要素を選択的に起動及び停止する。
このロジックは、スラッシングの可能性を緩和するために、第2の処理要素の起動及び停止を制御するように適応される。ヒステリシスを提供できるように、第2のALUの起動及び停止のため、(温度に関し、及び/又は、128ビット命令の頻度に関し)異なる閾値が使用される例が与えられる。別の例として、使用される閾値の1又は複数は、例えば、潜在的なスラッシング問題を示しうるタイミング測定に応じて、動的に調節される。例えば、タスク関連条件の閾値が、感度が高すぎ、第2のALUが、直近の停止後、極めて迅速に再起動されるのであれば、このロジックは、関連する閾値を増加させる。
更なる目的、利点、及び新規な特徴が、以下の記載において部分的に記述され、また、以下の添付図面を検討することによって、その一部が、当業者に明らかになるか、又は、これら例の結果又は動作によって学習されよう。本教示の目的及び利点は、特に特許請求の範囲で指摘された方法、手段、及びそれら組み合わせの実行又は使用によって実現及び達成される。
図面は、限定ではなく、一例として、本教示に従って1又は複数の実施を示している。図面では、同一の参照番号が、同じ又は類似の要素を示す。
以下の詳細説明では、関連する教示の完全な理解を提供するために、多くの具体的な詳細が、一例として述べられる。しかしながら、本教示は、そのような詳細がなくても実現可能であることが、当業者に明白であるべきである。他の例では、本教示の局面を不必要に不明瞭にしないために、周知の方法、手順、コンポーネント、及び回路が、詳細ではなく、比較的高いレベルで記述される。
本明細書で開示される様々な技術は、高度な並列プログラマブルデータプロセッサにおける1又は複数の並列処理要素の自動選択的な電力及びエネルギー制御に関する。以下により詳細に記載するように、並列プロセッサのロジックは、(例えば、特定のタスクのため、又は、検出された温度によって)プログラム動作が、全幅未満のデータパスを必要とする場合を検出する。これを受けて、制御ロジックは、並列処理能力のサブセットを必要とする動作モードを自動的に設定する。必要とされない少なくとも1つの並列処理要素は、エネルギーの節約のために、及び/又は、電力消費の低減のために、停止することができる。後に、能力を追加する動作が適切な場合、このロジックは、処理条件における変化を検出し、一般に全幅である、より広いデータパスモードに、動作モードを自動的に設定する。このモード変更によって、以前に停止された処理要素を再起動する。
本教示は、並列データ処理要素を有するプロセッサアーキテクチャに適用可能である。SIMDタイプ並列プロセッサアーキテクチャに関する例を説明する。添付図面に例示した例を参照して、以下に説明する。上述したように、現在、市場において利用可能なSIMD設計は一般に、64ビット幅データパス及び128ビット幅データパスを提供している。しかしながら、本教示は、それよりも狭いデータパス又はそれよりも広いデータパスを有する並列プロセッサにも適用可能である。図1の機能ブロック図は、自動並列要素電力及びエネルギー制御を説明するのに役立つSIMDデバイスのコンポーネントを例示する。当業者は、実際のSIMDプロセッサには、その他の要素も含まれうることを認識するだろう。この例では、並列処理デバイスが、例えば、関連するメインコアプロセッサ13の制御の下で、マルチメディアデータ処理動作を実行するSIMDコプロセッサ11として実現される。
図示していないが、例えば、マルチメディア処理の必要がない場合のように、メインプロセッサコア13において動作するアプリケーションによって使用されていない場合、コプロセッサ11の全体を停止するための制御が与えられる。別の動作モードは、デバイス11の別のレベルの並列処理機能を利用するが、本説明は、その代わりに、SIMDデバイス11を介して、少なくとも幾つかの処理が要求される場合に注目する。
動作中、メインプロセッサコア13は、少なくとも幾つかのデータのマルチメディア処理を要求する1又は複数のプログラムを実行する。実行される命令セットは、SIMD展開を含むだろう。すなわち、多くの命令が、SIMDタイプ処理命令になるだろう。メインプロセッサコア13は、これらSIMD命令を、コプロセッサ11へ発行する。そこでは、これら命令はまず、発行キュー(IQ:issue queue)15内に置かれる。発行キューは、実質的には、多くのSIMD命令を、実行前、順に格納するためのファーストインファーストアウト(first-in-first out)バッファである。
IQステージ15は、命令展開ステージ17へ順に命令を供給する。SIMDコプロセッサ11は、多くの異なるデータ幅モードで並列処理を提供することができる。更なるモード、又は、各モードでサポートされるデータ幅における更なるバリエーションがあろうが、本例は、64ビット動作及び128ビット動作をサポートするコプロセッサ11の構成を示す。
フラグビット(M)19は、現在の動作モードを示す。ビット値は、フリップフロップに保持されるか、又は、例えばコンディションレジスタのようなより大きなレジスタ内にビットとして保持される。プロセッサ11の一般的な例は、32ビット制御命令レジスタ(個別に示していない)であり、モードフラグ19は、そのレジスタ内の指定された位置における1ビットでありうる。後で詳述するように、このフラグ19は、例えば、特定の処理タスクのために要求される並列処理レベル、又は、検出されたデバイス温度のような、検出されたプロセッサの条件に応じて自動的に設定される。展開ステージ17は、モードフラグ19の状態に応答する。
SIMDコプロセッサはまた、処理に先立ってオペランドデータを保持するためのレジスタファイル21と、実行ステージとを含む。この単純な例では、実行ステージは、2つのSIMDタイプの演算ロジックユニット(ALU)23,25からなる。128モードでは、ALU23とALU25との両方がアクティブである一方、64ビットモードでは、第1(#1)のALU23のみがアクティブである。
64ビットモードでは、コプロセッサ11は、依然として、128ビットSIMD命令を取り扱うことができる。その目的のために、ステージ17は、128ビット命令を、それぞれ64ビットデータを処理するために構成された2つの命令に分割することにより、128ビット命令を「展開」する。64ビットモードでは、ステージ17は、IQステージ15からのSIMD命令ストリームにおいて、128ビット命令の展開により導かれた64ビット命令のペアと同様、64ビット幅データ処理を元々要求している命令を含む全ての命令をALU23へディスパッチする。128ビットモードでは、ステージ17が、第1のALU23と第2のALU25との両方に命令をディスパッチする。これによって、ユニット23及びユニット25は、並列的に動作し、128ビット幅SIMDデータ処理パスを提供する。
プロセッサ11は、単一の命令ストリームを実行するが、これら命令のSIMD実行は、多数のデータ片を、並列的に同時処理する。例えば、ALU23又はALU25はそれぞれ、2つの32ビットデータワード又は4つの16ビットデータワードについて同時に動作することができる。両ユニット23,25が並列動作する場合、組み合わされたデータ処理能力が、4つの32ビットデータワード又は8つの16ビットデータワードを取り扱うことができる。更に、他の並列処理の組み合わせも可能である。
簡単な例では、レジスタファイル21が、データのために、2つの128ビット幅レジスタを備えることができる。更に、追加レジスタを備えることもできる。当業者であれば、例えば、レジスタファイルは、それぞれが128ビット幅を持つ16のレジスタのような、追加レジスタを備えうることを理解するだろう。レジスタファイル21の制御は、各128ビットのデータを分割し、ALU23とALU25のそれぞれに、適切な量を送る。ファイル21のDポートは、書き込みポートである。ポートDによって、128ビット幅であるデータが、例えば、ソース(図示せず)から、又は、ALUによって出力された結果から、ファイル21内のレジスタに書き込まれる。ファイル21のSポートは、読み出しポートである。ポートSによって、128ビット幅であるデータが、ファイル21内のレジスタから読み出され、例えばメモリのようなシンク(図示せず)へ送られる。レジスタファイル29のAポート及びBポートは、分割されたデータ(各64ビット)をALU23及びALU25へ提供するための読み出しポートである。
128ビットのデータ処理命令の場合、レジスタファイル21は、データの128ビットのうちの下位半分を第2のALU25へ提供し、データの上位半分を第1のALU23へ送る。64ビット命令の場合、プロセッサは、レジスタファイル内の128ビットのデータの下位半分又は上位半分のうちの何れかを選択し、第1のALU23へ提供する。128ビットモードでは、何れの64ビット命令も、第1の(#1)SIMD ALU23へ向かい、何れの128ビット命令も、SIMD ALU23とSIMD ALU25との両方に向かう。64ビットモードでは、64ビット命令はすべて第1のSIMD ALU23に向かう。何れの128ビット命令も、2つの64ビット命令に変換される。それらは、第1のSIMD ALU23に連続して提供される。
本明細書で開示した教示は、並列データプロセッサによって実行された処理に関連する1又は複数の感知された条件に基づいて、並列データプロセッサの動作の並列処理を自動的に制御する。この例では、この自動制御が、第2の(#2)ALU25を選択的に起動及び停止する。
制御された並列処理要素、すなわち、図1の例における第2の(#2)ALU25の動作状態は、一般に論理ゲート27,29によって表される1又は複数のゲート回路又はスイッチ回路によって制御される。そのようなゲート又はスイッチは、特定の要素によって必要とされるイネーブル信号を選択的に提供及び撤回する。図面では、ゲート27,29がANDゲートとして示されているが、それらは、ALU25の要素へ信号を選択的につなぐための一般的な回路表示として意図されている。そのような回路27又は回路29は、任意のタイプの論理ゲート、スイッチ、これらの組み合わせ、あるいはモード制御31からの適切な選択信号に応じて、ALU25の機能要素へ、適切なタイプの信号を提供するように構成されたその他任意の回路でありうる。
このように、モード制御31は、図1の例では、第2の(#2)ALU25のアクティブ状態を制御する。モードフラグはそれ自身が、ゲート27,29の、すなわちALU25の選択的な起動及び停止の直接的な制御を提供する。しかしながら、そのような場合、ALUは、モードフラグ19の状態の変化によって示される動作モードの遷移毎に、直ちに起動及び停止を行う。ほとんどの実装では、ALU23及びALU25は、マルチステージパイプラインユニットを含み、フラグ19が変わった場合、提供中の多くの命令が存在するだろう。電力及びエネルギーの制御ロジックは、モードフラグ19に応答するが、スムーズな処理遷移を可能にするために、状態変化に続くタイムラグを与えることができる。例えば、制御ロジック31は、ALU25の動作をモニタすることができる。これによって、1ビットへの遷移(128ビットモードから64ビットモードへのシフト)が検出されると、提供中の128ビット命令が処理され、そのALUから取り出されるまで、制御31は、ALU25の停止を遅らせるだろう。図示していないが、モード制御ロジック31はまた、例えば、ALU25の起動に必要な時間を考慮するために、128ビットモードへの遷移後、128ビット命令の初期アプリケーションを制御するために、プロセッサの他の要素へ信号を提供することができる。
モード制御31は、適切なゲート又はスイッチ回路27,29の動作によって、ユニットの動作に必要なあらゆる信号を選択的にイネーブル及びディセーブルすることによって、任意の周知の様々な方法で、第2の(#2)ALU25の状態を選択的に制御するように実装される。例えば、ALU25は、ユニット25内又はユニット25への回路切換機能を制御するために使用されるクロック信号(CLK)の制御されたゲーティングによって、選択的にイネーブル及びディセーブルされる。そのような実装の場合、ALU25は、ゲート27によって、ALU25へのクロック信号(CLK)の流れをカットオフすることによりディセーブルされる。これによって、ユニット25の回路は、クロック信号に応答して切り換わることはなくなる。これは、動的な電力消費量を低減する。そのような実装において、リークを低減するために、ALU25のトランジスタは、比較的高いゲート閾電圧をもって設計される。しかしながら、クロック信号のゲーティングにのみ基づいた制御は、ALUの比較的迅速な再起動を可能にしうる。
代替例として、またはそれに加えて(図示するように)、ALU状態が、電源端子への接続の選択的なオンオフによって制御される。例示目的として、達成された接続は、グラウンド又は負の供給電圧へのものかもしれないが、ゲート29は、第2の(#2)SIMD ALU25への電圧Vの供給を制御する。モード制御31によるゲート29の動作は、コプロセッサ11の現在の動作モードに従って、ALU25への電力をオンオフする。そのような実装では、モードフラグが1へシフトした場合(64ビット動作の場合)、残りのあらゆる128ビット命令が処理された後、モード制御31は、ALU25をディセーブする。その時、制御31は、ALU25の回路に関して電源Vを提供する電源端末への接続をカットオフするようにゲート29をトリガする。この種のカットオフは、動的な電力消費と、そのユニットの回路を介したリークとをなくする。
第1の(#1)SIMD ALU23は、両モードにおいてアクティブである。従って、そのALUは、クロック信号(CLK)に直接接続され、ゲート制御無しに電圧(V)が供給されるように示されている。しかしながら、処理要素23への電力信号及び/又はクロック信号は、例えば、コプロセッサ11が必要とされない場合にその停止を許可するために制御される。
図1の例は、アクティブな動作モードに基づいて制御される単一の並列処理要素であるALU25を示す。当業者であれば、与えられたプロセッサが、アクティブではないかもしれない多くの並列要素のためのいくつかの類似制御を含む一方、プロセッサ11が、相当な時間期間にわたって、狭いデータについて動作することを理解するであろう。128ビット最大幅を仮定した別の例では、第1のALUが、2つの32ビットALUとして実現されうる。その場合、1つの32ビットSIMD ALUの更なる選択的な停止を提供するために、27,29,31に類似した追加の制御システムが、第2の32ビットALUを制御し、32ビットのみの動作のために、1つのみのユニットがアクティブになる。
モード制御31の動作は、少なくとも1つの感知された条件の状態に応じて、コプロセッサ11の並列処理を制御する。モニタされた条件が第1の状態である場合、SIMD命令は、128ビット幅のデータパスを提供するデータプロセッサの2つの並列処理要素23,25において並列して実行される。モニタされた条件が第2の状態である場合、命令は、第1の(#1)並列処理要素23で実行される。この状況下では、第2の並列処理要素25がアクティブではない間、64ビット幅のデータが、第1の要素によって処理される。モード制御31はまた、命令展開ステージ17の動作を制御するために、モードフラグ19を設定する。
フラグ19によって示されるモード状態は、ステージ17のディスパッチ機能及び展開機能の動作を選択的に制御する。例えば、フラグ19のビットが1である限り、プロセッサは、64ビット命令の形態をした全ての命令を処理するように構成されうる。まれに、SIMD命令のストリームが128ビット命令を含むのであれば、命令展開ステージ17プロセッサは、それを2つの64ビット命令に分解し、それらを次々にALU23へ送るだろう。フラグ19のビットが0である場合、ステージ17は、128ビットモードに切り換わる。このモードでは、ステージ17が、128ビット幅動作のための命令を、展開することなくALU23とALU25との両方に送る。このモードでは、メインプロセッサ13からのストリーム内に64ビット命令があった場合、ステージ17は、第1のALU23へ64ビット命令をディスパッチすることができる。
モード制御31によって設定されたコプロセッサ11のモード状態は、この例では第2のALU25である少なくとも1つの並列処理要素の選択的な起動及び停止を制御する。ALU25は、128ビットモードにおいてアクティブである(電源供給されている)一方、64ビットモードではそれは必要とされておらず、電源オフ(停止)される。
図示する実装では、モード制御31は、処理タスクに関連する条件、すなわち、プロセッサがどれくらいの頻度で特定のタイプの命令を取り扱うのかに応じる。この実装では、モード選択31はまた、温度のような環境条件に応じる。例えば、モード制御31として役立つプログラマブルデバイス又は状態計算機のロジックは、キューステージ15内の命令から、128ビット命令の数を識別する。128ビットの命令の割合又は頻度が、ある予め定めたレベルであるか、それを超える場合には、モード制御31は、モードフラグ19を0に設定し(128ビットモードの場合)、第2のALU25を起動する。一方、128ビット命令の割合又は頻度が、予め定めたレベルであるか、それを下回る場合には、モード制御31は、モードフラグ19を1に設定し(64ビットモードの場合)、第2のALU25を停止する手順を開始する。当業者であれば、このタスクに応答性のある制御機能が、(デバイス11によってなされているか、丁度なされる命令の数に基づいて)64ビット命令の頻度又は割合、あるいは、最近の何れかのタイプの命令の頻度のような他のモニタされたパラメータをも使用できることを理解するであろう。
環境モニタリングの場合、典型的なプロセッサ11は、温度センサ33を含んでいる。このセンサ33は、モード制御31に信号を供給する。制御31は、温度センサからの信号のレベルに基づいて、実質的には、1又は複数の閾値に対する温度の関係に基づいて、ALU25の起動及び停止を行い、モードフラグ19を設定する。128ビットモードでの動作中、この感知された温度が高すぎる場合、制御31は、デバイス11を冷却できるように、ALU25を停止することができる。後に(例えば、温度読み取り値が低い場合)、タスクが128ビット幅データ処理を要求し、制御31が、ALU25を再起動し、フラグ19を128ビットモードに戻すことができる。当業者であれば、温度の代わりに、あるいは温度に加えて別の環境条件が感知されうることを認識するだろう。
また、命令の実行は、プログラマが、所望の並列処理レベルを設定できるように、モード制御31の自動動作を実質的にオーバライドすることができる。このモード制御は、ALU25のうちの1つから、又は、メインプロセッサコア13からオーバライドコマンドを受け取る。これを受けて、モード制御31は、ステージ17が64ビットモードで動作すべきか否かを示すためにモードフラグ19を設定し、ALU25の動作状態(オフ又はオン)の対応する設定を与える。
オーバライドが使用される場合、プログラムは、処理フロー中の適切なポイントで運転モードを設定するように書かれる。このモード設定命令は、プログラマによって書かれるかもしれないし、又は、プログラムが計算機言語コードにコンパイルされた場合にコンパイラがモード設定命令を挿入するかもしれない。コプロセッサ11は、ALU23,25のうちの1つ又は両方によって実行されるモード命令に応じて、モードをオーバライドとして設定するように設計されうる。その場合、命令は、コア13がこれら命令を実行のためにコプロセッサ11へ発行する形態で書かれる。あるいは、モード命令がメインプロセッサコア13によって実行されることに応じて、コア13がモードを設定できるように、コプロセッサ11がメインプロセッサコア13と接続される。また、プロセッサ11又はコア13の何れか一方が、そのようなオーバライド命令に基づいてモードを設定することも可能である。
オーバライドに関する他のバリエーションもまた可能である。例えば、具体的な命令に応じたメインプロセッサコア13又はALU23,25からのオーバライドコマンドは、タスク関連条件に基づく自動設定をオーバライドするが、重要な環境条件に基づく制御をオーバライドしない。これによって、例えば、モード制御31は、明確な命令に基づくオーバライドによって与えられた設定に反する場合であっても、過剰な温度に応じて並列処理を減らすことができる。
上記議論から、モード制御は、プロセッサ又はその処理動作に関連する様々なモニタされた条件の状態に対して自動的に応答することができる。また、所望の並列処理制御機能を実現するために、様々な異なるアルゴリズムが設計されうる。本教示の利点を完全に理解するために、1つの例を考えることが有効である。
図2は、キュー内の命令の頻度(又は割合)及び感知されたプロセッサ温度に基づく、図1のコプロセッサ11における2つの異なる並列処理レベルの自動切換に含まれる実行の考えられるフローを示すフローチャートである。説明の目的のために、先ず(S1において)、プロセッサが、2つの並列演算ロジックユニット23,25において、命令を並列して実行していると仮定する。このモードでは、処理されるデータは最大128ビット幅である。すなわち、共に動作しているユニット23,25によって提供されるフルデータパスと同じ幅である。この状態では、モード制御31は、温度信号値Tを、高温度閾値Tと比較する(ステップS2)。温度が十分低い場合(値Tが、高温度閾値Tよりも大きくない場合)、処理はS2からS3へ進む。
ステップS3は、タスク関連処理条件の判定を表す。この場合、多くの128ビット命令がキュー内に存在する。IQステージ15がフルの場合、キューが、例えば、最大8つの命令を保持できるのであれば、頻度又は割合fは、8によって除された128ビット命令の数となる。もちろん、タスクが主に128ビット幅のデータの処理を要求するときを判定するために、タスク関連条件の他の測定値も使用されうる。例えば、キュー長さが一定である場合、キュー内の128ビット命令の数が、頻度の代わりに使用される。ALUによって既に提供中であるか又は処理された幾つかの数の命令の類似の分析に基づいて、履歴的な測定値が展開されうる。あるいは、そのような履歴的な測定値が、IQステージ15内の命令の分析と結合されうる。
この説明の目的のために、128ビット命令が、IQステージ15内にどれくらいの頻度で存在するかをロジックがモニタすると仮定する。ステップS3では、現在の値fが、低閾値fであるかそれより高いのであれば、処理はS3からS1に戻り、コプロセッサ11が、128ビットモード動作を続ける。8つの命令が最大のキュー長さであると仮定すると、8つの命令毎のうちの1つが128ビット命令である限り、コプロセッサを、進行中の128ビットモードに維持するために、低頻度閾値fが、約1/8に設定されうる。128ビットモードにとどまるための閾値は、一般に低くなるだろう。1/16でさえも、128ビットモードにとどまるための効率的な判定基準となりうる。もちろん、この閾値は、幾つかの数の処理サイクルに対して、例えば、8つの命令毎のうちの2以上の128ビット命令を必要とするために、時間依存にもなりえる。例示するフローでは、温度が閾値T以下を維持し、128ビット命令の頻度が閾値fより高い値を維持する限り、ステップS1からステップS3によって表される処理が続くだろう。すなわち、コプロセッサが、128ビット幅データ処理モードで動作するだろう。
モード制御31を行っているロジックが、温度Tが閾値Tを超えたことを検出すると、処理は、ステップS2から処理ステップS4へ進む。同様に、モード制御31を行っているロジックが、128ビット命令の頻度fが、閾値fへあるいはそれ未満に下がったと検出すると、処理は、ステップS3から処理ステップS4へ進む。何れの場合も、S4において、命令展開ブロック17が、もしもあれば、次に来る128ビット命令の、64ビット命令のペアへの変換を開始する。ステップS5では、モード制御31が、第2の演算ロジックユニット(ALU#2)25を確認し、処理され、その演算ロジックユニット25から取り出されねばならない提供中の128ビット命令が残っているかが判定される。もしも残っていれば、ロジックは待機し(S6)、再び確認を行う。このモニタリング(S5−S6)は、第2の演算ロジックユニット(ALU#2)25によって処理される提供中の128ビット命令がもはや存在しなくなるまで続く。そして、処理は、フローS7へ進む。
ステップS7では、モード制御31は、エネルギーを節約し、及び/又は、熱の生成を低減するために、第2のALUタイプ処理要素25を非アクティブ化すなわち停止する。上述したように、64ビットモードで更なる処理がなされる(S8)。例えば、第2の演算ロジックユニット25がアクティブではない間、プロセッサ11は、64ビットデータを処理するために、第1の演算ロジックユニット23において1又は複数の命令を実行する。このモードで受け取られたあらゆる128ビット命令も、(ステップS4で開始されたように)2つの64ビット命令として連続的に展開及び処理される
コプロセッサが64ビットモードで動作している間、モード制御31は、どれくらいの頻度でIQステージ15内に128ビット命令が受け取られているかと、温度とを確認し続ける。測定された温度は、ステップS9において閾値と比較される。また、128ビット命令の検出された頻度は、ステップS10において閾値と比較される。S9では、S2で使用されたものと同じ閾値が使用されうる。また、S10では、S3で使用されたものと同じ閾値が使用されうる。しかしながら、同じ閾値を使用することは、モニタされた1又は両方のパラメータにおけるあらゆる小さな変化に応じて、ALU25のオンとオフとを切り換えることにつながる。これは、しばしば、短期間における過剰な切換となる。
停止状態からALU25をウェイクアップすなわち起動することは、時間がかかり、エネルギーを消費する。幾つかの場合、要素25を起動することは、ある短い持続時間の間、単に電力を維持することよりもよりエネルギーを要する。また、コンポーネントをバックアップ起動するには時間もかかる。ALUを再起動する際に、結果として生じる遅延すなわちレイテンシは、プロセッサストールをもたらし、パフォーマンスを低下させる。従って、我々の例ではALU25である制御された並列処理要素が、短時間のウェイクのためだけに、繰り返し停止されないことを保証することが望ましい。繰り返しなされるパワーダウン及びパワーアップは、「スラッシング」と称されうる。例示する例は、切換動作において幾つかのヒステリシスを提供できるよう、切換イベント、及び、スラッシングの可能性を低減するために、異なる動作モードにおいて、異なる比較閾値を用いる。後で詳しく述べるように、モード制御31のロジックは、その他の、あるいは、反スラッシングストラテジを実施してよい。
具体的な例に再び戻り、ステップS9では、モード制御31は、現在の温度測定値Tを、閾値Tと比較する。閾値Tは、閾値Tよりも幾分低い。測定された温度Tが、幾分低い閾値Tよりも未だに高いのであれば、処理は64ビットモードで継続する(S8)。一般に、温度は、このモードでは、低下し続けるだろう。コプロセッサが、十分冷却された場合、モード制御31は、測定された温度Tが、低い閾値T以下である(もはや閾値Tよりも高くない)ことを判定し、処理は、S9からS10へ進む。
プロセッサは、十分冷却され、128ビット動作へ戻ることが可能であるので、モード制御は次に、処理タスクが128ビット動作を保証するかを判定する(S10)。従って、我々の例では、S10において、モード制御が、IQステージ15内の128ビットタイプ命令の頻度又は割合(f)を、高閾値fと比較する。再び、8つの命令が最大のキュー長さであると仮定すると、8つの命令毎に3より多くない128ビット命令である限り、コプロセッサを、進行中の64ビットモードに維持するために、高頻度閾値が、約3/8に設定されうる。もちろん、この閾値は、幾つかの数の処理サイクルに対して、例えば、128ビット動作への遷移をトリガするために、8つの命令毎のうちの4以上の128ビット命令を必要とするために、時間依存にもなりえる。
fが閾値fに等しいかそれ未満である(すなわち、それより大きくない)のであれば、たとえプロセッサ温度が安全であっても、128ビット動作を正当化するための十分な必要性はない。従って、コプロセッサ11が64ビットモード動作で継続できるように、処理はS10からS8に戻る。何れか一方でも閾値を満足しない限り、すなわち、温度が十分低く、128ビット命令の頻度が十分高くて、128ビット動作命令への遷移を保証するまでは、ステップS8乃至S10によって表される処理が続き、コプロセッサが、64ビットワイドデータ処理モードで動作する。
温度が閾値T以下であり、128ビット命令の頻度が閾値fを超える場合、処理は、ステップS9及びS10を介してステップS11に進む。ステップS11では、制御ロジック31は、第2の演算論理ユニット(ALU#2)25を起動させる。この時(S12)、128ビット命令は、変更されることなくALUに渡る(2つの64ビット命令への更なる再コード化はもはや必要ではない)。この状態では、処理はステップS1に戻る。そこで更なる動作は、128ビット命令モードを利用する。
以前に述べたように、モード制御31ロジックは、閾値の相違によって与えられるヒステリシスの代わりに、あるいはそれと組み合わせて、他のアンチスラッシング対策を実行する。例えば、128ビット命令の低い発生率に応じてALUが停止されている間の時間間隔のような、スラッシングを示す測定値に応じて閾値が調節されるかもしれない。
本教示は広範囲の応用を持つ。例えば、その他の並列プロセッサ内で、及び、異なるデータパス幅を有するプロセッサ内で、電力及びエネルギー制御が実施されうる。また、上述した並列プロセッサの例は、メインプロセッサコアに関連付けられたコプロセッサを与えた。しかしながら、当業者であれば、本明細書に記載した並列処理制御技術が、コプロセッサ実装に制限されていないことを理解するだろう。
前述の説明は、何がベストモード及び/又はその他の例であると考えられるかを説明したが、様々な変形がなされることが可能であり、本明細書で開示された主題が様々な形態及び例で実施され、その教示が多くのアプリケーションに適用され、そのうちのほんの幾つかが本明細書に記載されていることが理解される。特許請求の範囲では、本教示の真の範囲内にある何れか及び全ての応用、修正、及び変形の権利を要求することが意図されている。
図1は、例えばSIMDコプロセッサにおける並列処理要素の自動電力及びエネルギー制御を理解するために利用可能な機能ブロック図である。 図2は、コプロセッサ内の2つの異なる並列処理レベル間の自動切換に含まれる動作を制御する例の理解に利用可能な簡略フローチャートである。

Claims (30)

  1. 並列データプロセッサの動作の並列処理を制御する方法であって、
    前記並列データプロセッサによって実行される処理に関連する1又は複数の条件をモニタすることと、
    前記モニタされた1又は複数の条件が、第1の状態に対応している場合、第1の幅からなるデータパスを提供する前記データプロセッサの2つの並列処理要素において、1又は複数の命令を並列して実行することと、
    前記モニタされた1又は複数の条件が、第2の状態に対応している場合、前記第1の幅よりも狭い第2の幅を持つデータを処理できるように、前記2つの並列処理要素における第1の1つにおいて、1又は複数の命令を実行することであって、この間、前記2つの並列処理要素のうちの第2の1つは、アクティブではないことと
    を備える方法。
  2. 前記第2の並列処理要素がアクティブではない間、前記第1の並列処理要素において、1又は複数の命令を実行するステップは、
    前記第1の幅を持つデータの並列データ処理を要求する命令を、前記第2の幅を持つデータの並列データ処理を要求する2つの命令を含む複数の命令に展開することと、
    前記第1の並列処理要素において、前記2つの命令を連続して実行することと
    を備える請求項1に記載の方法。
  3. 前記第1の並列処理要素によって命令の処理を実行することは、実行された命令に基づいて64ビット幅のデータ処理を提供し、
    前記第1及び第2の並列処理要素によって命令の処理を並列して実行することは、実行された命令に基づいて128ビット幅のデータ処理を提供する
    請求項2に記載の方法。
  4. 前記第1及び第2の並列処理要素の各々は、演算ロジックユニットを備える請求項1に記載の方法。
  5. 前記第1及び第2の並列処理要素で実行される命令は、Single Instruction, Multiple Data(SIMD)タイプ命令である請求項4に記載の方法。
  6. 前記第1及び第2の並列処理要素は、SIMDコプロセッサの要素である請求項5に記載の方法。
  7. 前記並列処理要素における命令の実行は、マルチメディアデータ処理を含む請求項1に記載の方法。
  8. 前記第2の並列処理要素がアクティブではない場合、前記第2の並列処理要素へ電力がカットオフされる請求項1に記載の方法。
  9. 前記第2の並列処理要素がアクティブではない場合、前記第2の並列処理要素からのクロック信号がカットオフされる請求項1に記載の方法。
  10. 前記条件をモニタすることは、前記プロセッサの温度をモニタすることを含み、前記第1の状態は、閾値と等しい又は閾値未満であるモニタされた温度に関連し、前記第2の状態は、閾値と等しい又は閾値を超える温度に関連する請求項1に記載の方法。
  11. 前記条件をモニタすることは、前記命令の実行によってなされるタスクをモニタすることを含み、前記第1の状態は、前記タスクが、前記第1の幅を持つデータの処理を頻繁に要求する場合である請求項1に記載の方法。
  12. 前記タスクをモニタすることは、前記第1の幅を持つデータの処理を、命令がどのくらいの頻度で要求するかを判定することを含む請求項11に記載の方法。
  13. 前記条件のモニタから、前記第1の状態から前記第2の状態への遷移を検出することと、
    前記第1の状態から前記第2の状態への検出された遷移に応じて、前記第2の並列処理要素を停止することと、
    前記条件のモニタから、前記第2の状態から前記第1の状態への遷移を検出することと、
    前記第2の状態から前記第1の状態への検出された遷移に応じて、前記第2の並列処理要素を起動することと
    を更に備える請求項1に記載の方法。
  14. 前記停止するステップ及び起動するステップは、スラッシングの可能性を緩和するために適応される請求項13に記載の方法。
  15. 並列データプロセッサの動作の並列処理を制御する方法であって、
    第1の幅を持つデータを処理できるように、前記データプロセッサの第1及び第2の並列演算ロジックユニットにおいて並列して1又は複数の命令を実行することと、
    前記並列データプロセッサによる処理に関連する条件を感知することと、
    前記感知された条件の状態に応じて、前記第2の並列演算論理ユニットを停止することと、
    前記第2の演算論理ユニットが停止している間、前記第1の幅よりも狭い第2の幅を有するデータを処理できるように、前記第1の並列演算ロジックユニットにおいて1又は複数の命令を実行することと
    を備える方法。
  16. 前記第2の演算論理ユニットがアクティブではない間、前記第1の並列演算ロジックユニットにおいて1又は複数の命令を実行するステップは、
    前記第1の幅を持つデータの並列したデータ処理を要求する命令を、前記第2の幅を持つデータの並列したデータ処理を要求する2つの命令を含む複数の命令に展開することと、
    前記第1の演算論理ユニットにおいて、2つの命令を連続して実行することと
    を備える請求項15に記載の方法。
  17. 前記感知された条件は、前記プロセッサの温度が閾値に達することを含む請求項15に記載の方法。
  18. 前記感知された条件は、前記第1の幅を有するデータの処理を要求する処理が、閾値レベルより下がる頻度に関連する請求項15に記載の方法。
  19. 並列データプロセッサの動作の並列処理を制御する方法であって、
    第1の幅を持つデータを処理できるように、前記データプロセッサの第1及び第2の並列処理要素において並列して1又は複数の命令を実行することと、
    前記並列データプロセッサによる処理に関連する条件を感知することと、
    前記感知された条件の状態に応じて、前記第2の並列処理要素を停止することと、
    前記第2の並列処理要素が停止している間、前記第1の幅を持つデータの並列したデータ処理を要求する命令を、前記第1の幅よりも狭い第2の幅を持つデータの並列したデータ処理を要求する2つの命令を含む複数の命令に展開することと、
    前記第2の並列処理要素が停止している間、前記第1の並列処理要素において、2つの命令を連続して実行することと
    を備える方法。
  20. 前記命令はSingle Instruction, Multiple Data(SIMD)タイプの命令であり、
    前記第1の幅を持つデータの並列データ処理を要求する命令は、128ビットSIMD命令であり、
    前記2つの命令の各々は、64ビットSIMD命令である
    請求項19に記載の方法。
  21. 前記感知された条件は、前記データプロセッサの温度か、又は、前記第1の幅を持つデータの処理を要求する処理の頻度かの何れかである請求項19に記載の方法。
  22. 並列データプロセッサであって、
    プログラム命令に応答し、幅を持つデータを処理する第1の処理要素と、
    プログラム命令に応答し、前記第1の処理要素と並列して動作するように接続された第2の処理要素であって、前記第1及び第2の処理要素の並列動作が、前記第1の幅よりも広い第2の幅を持つデータの並列処理を与える第2の処理要素と、
    前記データプロセッサの処理動作に関連する条件をモニタし、前記モニタされた条件の閾値に対する関係に基づいて、前記第2の処理要素の起動及び停止を選択的に行うロジックと
    を備える並列データプロセッサ。
  23. 前記第2の幅を持つデータの処理を要求する命令を、前記第1の幅を持つデータの処理を要求する複数の命令に変換し、前記複数の命令を、実行のために前記第1の処理要素へ連続的に供給する命令展開ステージを更に備える請求項22に記載の並列データプロセッサ。
  24. 前記データプロセッサの温度を検出する温度センサを更に備え、
    閾値が温度閾値であり、前記ロジックは、前記データプロセッサの検出された温度が、前記温度閾値を満足するか又は超えた場合には前記第2の処理要素を停止する請求項22に記載の並列データプロセッサ。
  25. 前記データプロセッサの検出された温度が、温度閾値未満である場合、前記ロジックは、命令がどのくらいの頻度で、前記第2の幅を持つデータの処理を要求するのかの関数として、前記処理要素を起動及び停止する請求項24に記載の並列データプロセッサ。
  26. 前記ロジックは、命令がどのくらいの頻度で、前記第2の幅を持つデータの処理を要求するかをモニタし、
    前記ロジックは、前記頻度が閾値未満であれば前記第2の処理要素を停止し、
    前記ロジックは、前記頻度が閾値を上回るのであれば前記第2の処理要素を起動する
    請求項22に記載の並列データプロセッサ。
  27. 前記第1及び第2の処理要素は、Single Instruction, Multiple Data(SIMD)タイプ命令に応じてデータを処理するように構成された請求項22に記載の並列データプロセッサ。
  28. 前記第1及び第2の処理要素の各々は、SIMDタイプ演算ロジックユニットを備える請求項27に記載の並列データプロセッサ。
  29. 前記第2の幅を持つデータの処理を要求するSIMD命令を、前記第1の幅を持つデータの処理を要求する複数のSIMD命令に変換し、前記第2の処理要素が停止している場合、前記展開された複数のSIMD命令を、実行のために、前記第1の処理要素へ連続的に提供する命令展開ステージを更に備える請求項27に記載の並列データプロセッサ。
  30. 前記ロジックは、スラッシングの可能性を緩和するために、前記第2の処理要素の起動及び停止を制御するように適応される請求項22に記載の並列データプロセッサ。
JP2008515749A 2005-06-09 2006-05-25 Simd並列処理の自動選択を備えたマイクロプロセッサ Expired - Fee Related JP5074389B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/150,729 US7836284B2 (en) 2005-06-09 2005-06-09 Microprocessor with automatic selection of processing parallelism mode based on width data of instructions
US11/150,729 2005-06-09
PCT/US2006/020614 WO2006135554A2 (en) 2005-06-09 2006-05-25 Microprocessor with automatic selection of simd parallelism

Publications (2)

Publication Number Publication Date
JP2008544350A true JP2008544350A (ja) 2008-12-04
JP5074389B2 JP5074389B2 (ja) 2012-11-14

Family

ID=37525522

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008515749A Expired - Fee Related JP5074389B2 (ja) 2005-06-09 2006-05-25 Simd並列処理の自動選択を備えたマイクロプロセッサ

Country Status (11)

Country Link
US (1) US7836284B2 (ja)
EP (2) EP1894091B1 (ja)
JP (1) JP5074389B2 (ja)
KR (1) KR101006030B1 (ja)
CN (1) CN100595730C (ja)
AT (1) ATE504038T1 (ja)
DE (1) DE602006021019D1 (ja)
ES (2) ES2360816T3 (ja)
IL (1) IL187805A0 (ja)
MX (1) MX2007015555A (ja)
WO (1) WO2006135554A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013101605A (ja) * 2011-10-31 2013-05-23 Apple Inc プロセッサインストラクションの発行の絞り込み
JP2013532855A (ja) * 2010-07-13 2013-08-19 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド グラフィクスプロセッサにおけるsimdユニットの動的な有効化及び無効化

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7694114B2 (en) 2005-06-09 2010-04-06 Qualcomm Incorporated Software selectable adjustment of SIMD parallelism
US8024394B2 (en) * 2006-02-06 2011-09-20 Via Technologies, Inc. Dual mode floating point multiply accumulate unit
US8049760B2 (en) * 2006-02-06 2011-11-01 Via Technologies, Inc. System and method for vector computations in arithmetic logic units (ALUs)
US7836316B2 (en) * 2006-03-28 2010-11-16 Intel Corporation Conserving power in processing systems
US8345053B2 (en) * 2006-09-21 2013-01-01 Qualcomm Incorporated Graphics processors with parallel scheduling and execution of threads
US9135017B2 (en) * 2007-01-16 2015-09-15 Ati Technologies Ulc Configurable shader ALU units
US8108845B2 (en) * 2007-02-14 2012-01-31 The Mathworks, Inc. Parallel programming computing system to dynamically allocate program portions
US7868479B2 (en) * 2007-06-27 2011-01-11 Qualcomm Incorporated Power gating for multimedia processing power management
US8325184B2 (en) * 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof
US8335501B1 (en) * 2007-11-21 2012-12-18 At&T Mobility Ii Llc Controlling functions of mobile communications devices
JP4996654B2 (ja) * 2009-08-18 2012-08-08 株式会社東芝 プロセッサ
US9501705B2 (en) 2009-12-15 2016-11-22 Micron Technology, Inc. Methods and apparatuses for reducing power consumption in a pattern recognition processor
US8504855B2 (en) 2010-01-11 2013-08-06 Qualcomm Incorporated Domain specific language, compiler and JIT for dynamic power management
US9235251B2 (en) * 2010-01-11 2016-01-12 Qualcomm Incorporated Dynamic low power mode implementation for computing devices
CN101969402B (zh) * 2010-10-18 2012-05-23 浪潮集团山东通用软件有限公司 基于并行处理的数据交换方法
US20120216011A1 (en) * 2011-02-18 2012-08-23 Darryl Gove Apparatus and method of single-instruction, multiple-data vector operation masking
GB2505818B (en) * 2011-06-16 2016-02-10 Imagination Tech Ltd Graphics processor with non-blocking concurrent architecture
US9691360B2 (en) * 2012-02-21 2017-06-27 Apple Inc. Alpha channel power savings in graphics unit
CN103513958B (zh) * 2012-06-27 2017-01-25 上海芯豪微电子有限公司 高性能指令缓存系统和方法
US10732689B2 (en) 2013-07-09 2020-08-04 Texas Instruments Incorporated Controlling the number of powered vector lanes via a register field
US10175981B2 (en) * 2013-07-09 2019-01-08 Texas Instruments Incorporated Method to control the number of active vector lanes for power efficiency
GB2539038B (en) * 2015-06-05 2020-12-23 Advanced Risc Mach Ltd Processing pipeline with first and second processing modes having different performance or energy consumption characteristics
US9841997B2 (en) * 2015-06-25 2017-12-12 Intel Corporation Method and apparatus for execution mode selection
US10334334B2 (en) * 2016-07-22 2019-06-25 Intel Corporation Storage sled and techniques for a data center
WO2018228399A1 (zh) * 2017-06-13 2018-12-20 上海寒武纪信息科技有限公司 运算装置和方法
US11493967B2 (en) * 2018-06-01 2022-11-08 Interdigital Madison Patent Holdings, Sas Thermal shutdown with hysteresis
US11307860B1 (en) 2019-11-22 2022-04-19 Blaize, Inc. Iterating group sum of multiple accumulate operations
US10996960B1 (en) * 2019-11-22 2021-05-04 Blaize, Inc. Iterating single instruction, multiple-data (SIMD) instructions
US11029958B1 (en) * 2019-12-28 2021-06-08 Intel Corporation Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000047872A (ja) * 1998-08-03 2000-02-18 Hitachi Ltd 低消費電力動作機能を備えたマイクロプロセッサ
JP2000259579A (ja) * 1999-03-11 2000-09-22 Hitachi Ltd 半導体集積回路
JP2000322259A (ja) * 1999-05-11 2000-11-24 Hitachi Ltd データ処理装置
WO2000079405A1 (fr) * 1999-06-21 2000-12-28 Hitachi, Ltd. Processeur de donnees
US20040254965A1 (en) * 2001-03-02 2004-12-16 Eric Giernalczyk Apparatus for variable word length computing in an array processor
JP2004362086A (ja) * 2003-06-03 2004-12-24 Matsushita Electric Ind Co Ltd 情報処理装置および機械語プログラム変換装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5581516A (en) * 1995-07-07 1996-12-03 The United States Of America As Represented By The Secretary Of The Navy Low power transmitter providing selectable waveform generation
JPH10171635A (ja) 1996-10-09 1998-06-26 N T T Data Tsushin Kk 分散環境におけるソフトウエア資源を管理するシステムと方法
US5991531A (en) * 1997-02-24 1999-11-23 Samsung Electronics Co., Ltd. Scalable width vector processor architecture for efficient emulation
JP2002366351A (ja) * 2001-06-06 2002-12-20 Nec Corp スーパースカラ・プロセッサ
US6839828B2 (en) * 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
US20030088799A1 (en) 2001-11-05 2003-05-08 Bodas Devadatta V. Method and apparatus for regulation of electrical component temperature and power consumption rate through bus width reconfiguration
US7328261B2 (en) * 2001-11-21 2008-02-05 Clearcube Technology, Inc. Distributed resource manager
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7694164B2 (en) 2002-09-20 2010-04-06 Intel Corporation Operating system-independent method and system of determining CPU utilization
US6879928B2 (en) * 2003-01-16 2005-04-12 International Business Machines Corporation Method and apparatus to dynamically recalibrate VLSI chip thermal sensors through software control
US7120784B2 (en) 2003-04-28 2006-10-10 International Business Machines Corporation Thread-specific branch prediction by logically splitting branch history tables and predicted target address cache in a simultaneous multithreading processing environment
US20050149701A1 (en) 2003-12-24 2005-07-07 Inching Chen Method, apparatus and system for pair-wise minimum and minimum mask instructions
US20050240699A1 (en) * 2004-03-31 2005-10-27 Yoder Michael E Safe process deactivation
US20050283593A1 (en) * 2004-06-18 2005-12-22 Vladimir Vasekin Loop end prediction
US20060123422A1 (en) * 2004-12-02 2006-06-08 International Business Machines Corporation Processor packing in an SMP server to conserve energy

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000047872A (ja) * 1998-08-03 2000-02-18 Hitachi Ltd 低消費電力動作機能を備えたマイクロプロセッサ
JP2000259579A (ja) * 1999-03-11 2000-09-22 Hitachi Ltd 半導体集積回路
JP2000322259A (ja) * 1999-05-11 2000-11-24 Hitachi Ltd データ処理装置
WO2000079405A1 (fr) * 1999-06-21 2000-12-28 Hitachi, Ltd. Processeur de donnees
US20040254965A1 (en) * 2001-03-02 2004-12-16 Eric Giernalczyk Apparatus for variable word length computing in an array processor
JP2004362086A (ja) * 2003-06-03 2004-12-24 Matsushita Electric Ind Co Ltd 情報処理装置および機械語プログラム変換装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SRINIVAS K. RAMAN ET AL.: ""Implementing Streaming SIMD Extensions on the PENTIUM III Processor"", IEEE MICRO 2000, vol. Volume 20 Issue 4, JPN5008008220, 4 July 2000 (2000-07-04), US, pages 47 - 57, ISSN: 0002281402 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013532855A (ja) * 2010-07-13 2013-08-19 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド グラフィクスプロセッサにおけるsimdユニットの動的な有効化及び無効化
JP2013101605A (ja) * 2011-10-31 2013-05-23 Apple Inc プロセッサインストラクションの発行の絞り込み

Also Published As

Publication number Publication date
MX2007015555A (es) 2008-02-21
DE602006021019D1 (de) 2011-05-12
EP1894091A2 (en) 2008-03-05
EP2290527B1 (en) 2012-07-18
US20060282826A1 (en) 2006-12-14
WO2006135554A3 (en) 2007-12-13
IL187805A0 (en) 2008-08-07
ES2360816T3 (es) 2011-06-09
EP2290527A3 (en) 2011-03-16
EP2290527A2 (en) 2011-03-02
JP5074389B2 (ja) 2012-11-14
CN101228504A (zh) 2008-07-23
ATE504038T1 (de) 2011-04-15
CN100595730C (zh) 2010-03-24
ES2389946T3 (es) 2012-11-05
WO2006135554A2 (en) 2006-12-21
EP1894091A4 (en) 2008-08-13
KR20080021773A (ko) 2008-03-07
US7836284B2 (en) 2010-11-16
EP1894091B1 (en) 2011-03-30
KR101006030B1 (ko) 2011-01-06

Similar Documents

Publication Publication Date Title
JP5074389B2 (ja) Simd並列処理の自動選択を備えたマイクロプロセッサ
US8799627B2 (en) Software selectable adjustment of SIMD parallelism
US8055822B2 (en) Multicore processor having storage for core-specific operational data
CN106155265B (zh) 有功率效率的处理器体系结构
US10423216B2 (en) Asymmetric multi-core processor with native switching mechanism
US8745627B2 (en) System and method of controlling power in a multi-threaded processor
JP2000047872A (ja) 低消費電力動作機能を備えたマイクロプロセッサ
JP2006502488A (ja) 省電力vliwプロセッサ
US20160162293A1 (en) Asymmetric processor with cores that support different isa instruction subsets
US7941650B2 (en) Microprocessor based on event-processing instruction set and event-processing method using the same
JP2009501961A (ja) 予測的なプロセッサコンポーネントサスペンドのためのシステム及びその方法
TW201411334A (zh) 資訊處理裝置及電腦程式產品
CN101727160B (zh) 协处理器系统工作模式的切换方法和装置及处理器系统
KR100500227B1 (ko) 프로세서 아이들 상태
KR20170017382A (ko) 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법
CN107667344B (zh) 可变长度指令处理模式
US7290153B2 (en) System, method, and apparatus for reducing power consumption in a microprocessor
JPH07325788A (ja) マルチプロセッサ
KR101236393B1 (ko) 전자장치 및 그 제어방법
JPH08241145A (ja) データ処理装置の低消費電力化方式

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101207

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110307

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120207

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120507

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120514

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20120529

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120606

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120625

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120823

R150 Certificate of patent or registration of utility model

Ref document number: 5074389

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150831

Year of fee payment: 3

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