[go: up one dir, main page]

JP2008181481A - 要求に基づく処理資源の割り当て - Google Patents

要求に基づく処理資源の割り当て Download PDF

Info

Publication number
JP2008181481A
JP2008181481A JP2007241476A JP2007241476A JP2008181481A JP 2008181481 A JP2008181481 A JP 2008181481A JP 2007241476 A JP2007241476 A JP 2007241476A JP 2007241476 A JP2007241476 A JP 2007241476A JP 2008181481 A JP2008181481 A JP 2008181481A
Authority
JP
Japan
Prior art keywords
instruction
stack
rob
bit
simd
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007241476A
Other languages
English (en)
Inventor
Avinash Sodani
ソダニ アヴィナシュ
Kian Tan Chang
キアン タン チャン
Mirkes Sean
ミークス ショーン
Hawkins Jason
ホーキンス ジェイソン
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2008181481A publication Critical patent/JP2008181481A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • 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)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)

Abstract

【課題】消費電力削減などのための、命令実行に必要な資源(スタック)の割当を、実行を遅延させずに行う。
【解決手段】デコードされた命令の要求に基づきプロセッサー内の多くの資源(スタック)を動的に有効又は無効にする。1つの実施例は、スタックが必要であるか否かを検出するロジックを有し、検出に応じて当該スタックを有効にし、及びもはや必要でない場合に当該スタックを無効にする。
【選択図】図2

Description

本開示は、コンピュータの使用及びコンピューター・ネットワークの分野に関し、より詳細には必要に応じた処理資源の割り当ての分野に関する。
マイクロプロセッサーは、種々のタスクを実行する多くの回路、ロジック及び関数ユニットを有する。より多くの機能がマイクロプロセッサーに組み込まれるにつれ、電力消費は増大し得る。従って、プロセッサー内の種々の回路又はロジックを使用されない時など時々選択的に無効にすることは有利である。残念ながら、プロセッサー内の種々の回路又はロジックを有効にする又は無効にすることは、時間を要し、プロセッサーの性能に影響し得る。従って、いくつかのプロセッサーでは、回路又はロジックを無効にするか否かの選択は、当該回路又はロジックがプロセッサーの性能に影響を与えずに如何に迅速に再び有効にされ得るかに依存し得る。
例えば、特定機能ユニット(例えば浮動小数点機能ユニット)のような特定の回路は、ある時間期間の間に使用されないが、有効にされたままであり、それにより不要な電力を引き出し得る。図1は、例えば、従来のプロセッサー内のロジックのセットを図示し、図示されない種々の他のロジックにより用いられるいくつかの外部スタックを有する。特に、図1は、整数(INT)スタック、単一命令多重データ(SIMD)スタック、及び浮動小数点(FP)スタックを図示する。これら各スタックは、それぞれ整数、SIMD、及び浮動小数点演算を実行するために用いられて良い。スタックは、対応する機能ユニットのデータを保持するレジスタ・ファイルを有しても有さなくても良い。例えば、レジスタは、割り当てユニットにより命令(又は、マイクロ演算若しくは「uop」のようなサブ命令)に割り当てられ、そしてスケジューラーにより実行のためにスケジュールされて良い。スケジューラーは、オペランド・データを読み出し、演算の種類に依存してスタックの1つで実行して良い。命令又はuopは、実行された後、退役され及び退役ユニットによりプロセッサー状態コンテキストに委託されて良い。
上述の処理を通じ、1又は複数のINT、SIMD及びFPスタックは、有効にされ、それにより全てのスタックが特定の命令又はuopの実行を完了するために実際に使用されていなくても電力を引き出し得る。従って、命令又はuopが実行している間、命令又はuopの実行を完了するために使用されないが有効にされているスタックにより不要な電力が消費され得る。しかしながら、後続の命令又はuopが無効にされたスタックの使用を必要とする場合には、如何なるスタックを無効にすることも性能低下をもたらし得る。何故なら無効にされたスタックは、後続の命令又はuopにより使用されるために後続の命令又はuopの実行を遅延することなく十分速く再び有効にされ得ないからである。
本発明は、例を用いて図示されるが、添付の図面に限定されない。
本開示は、必要に応じた処理資源の割り当てを提供する。
本発明の実施例はプロセッサー及びコンピューター・システムに関する。より詳細には、本発明の少なくとも1つの実施例は、種々の処理資源を当該資源の必要に基づき効率的に割り当て及び割り当て解除する技術に関する。
本発明のいくつかの実施例は、プロセッサー内の1又は複数の資源が命令若しくはuop(以後、一般的に「命令」として参照する)のような演算を完了するために又は「オン・デマンド」で必要か否かに基づき、プロセッサー性能を有意に低下することなく、当該資源を有効又は無効にする。本発明の少なくとも1つの実施例は、命令の実行が1又は複数の実行構造を使用しない場合に、当該命令により使用される(1又は複数の実行ロジック又は資源を含む)実行スタックのような1又は複数の実行構造体を無効にし、及び後続の命令の実行がスタックを使用する場合に、当該後続の命令が有意な時間の間、実行されるのを遅延させられることなく、1又は複数のスタックを再び有効にする。
特に、ある実施例は、処理されている命令がSIMD及び/又はFP演算に対応するか否かに依存してSIMD及び/又はFPスタックを有効又は無効にする。更に、ある実施例は、プロセッサー・パイプラインのある時点で命令がSIMD及び/又はFP演算に対応するか否かの検出を実行する。従って命令は検出され、そして命令の実行が有意に遅延されることなく対応するスタックは有効にされる。
図2は、本発明のある実施例によるロジックのセットを示す。図2では、レジスタは命令による使用のために割り当てユニット201により割り当てられる。そして命令はスケジューリング・ユニット205により実行のためにスケジュールされる。更に、図2のロジックは、命令と関連付けられたオペコードに従い命令を実行するための3個の実行構造体(例えば、スタック)を示す。ある実施例では、実行構造体は整数スタック210、SIMDスタック211、及びFPスタック212に対応する。他の実施例では、より少数若しくは多数の、又は異なる種類のスタックが存在して良い。有利なことに、本発明のある実施例では、図2の実行構造体の全てが所与の命令を実行するために必要でなく、及び従って無効にされて良い。図2のロジックはまた、1又は複数の命令の実行により生成された情報をプロセッサー状態へ委託するための及び/又はデータをコンピューター・システム内の他の装置に利用可能にするための退役ユニット225を示す。
命令の実行が図2に示された1又は複数のスタックを使用しないか否かを検出するため、スタック制御装置220は、命令の種類を検出し、そして無効状態にあって良い1又は複数のスタックを有効にして良い。同様に、スタック制御装置220は命令が退役された時を検出して良い。従って1又は複数のスタックは、1又は複数のスタックを使用した命令を実行した後に無効にされて良い。有意な遅延を有さず時間内に命令を実行させるよう、無効状態にある1又は複数のスタックを信号223及び224を介し有効にするため、スタック制御装置220は割り当てユニット201から、無効スタックが割り当てられている命令により使用されるか否かをスタック制御装置に知らせる信号221を受信する。同様に、ある実施例では、スタック制御装置は退役ユニットから信号202を受信し、有効状態に対応する命令が退役された時を決定する。従ってスタック制御装置220は信号223及び224を介し適切なスタックを無効にして良い。スタック制御装置220は、命令のレジスタの割り当て中に生成された情報から命令が特定のスタックを使用するか否かを検出するので、対応するスタックは、有意な遅延を有さず命令の処理を続けるのに十分間に合うよう有効にされて良い。
ある実施例では、信号221は割り当てられている命令の種類を示す信号である。例えば、ある実施例では、信号221は割り当てられている命令がSIMD演算又はFP演算又は両方に対応するか否かを示して良い。ある実施例では、命令がSIMD又はFP演算又は両方に対応するか否かは、命令内の種々のフィールドから決定されて良い。いくつかの実施例では、他の情報はスタック制御装置へ通信されて良く、割り当てられている命令が整数演算又は他の種類の演算に対応するか否かを有する。当該情報から、検出器はINTスタックのような対応する処理資源を有効にするか否かを決定して良い。
ある実施例では、処理されるべき命令の種類に基づき有効又は無効にされる各スタック又は他の資源は、2ビットに対応する。当該2ビットの状態はスタック制御装置220により制御される。例えば、図2に示される実施例では、スタック制御装置はSIMDスタック用の2ビット(例えば、SIMD.validビット及びSIMD.wrapビット)、及びFPスタック用の2ビット(例えば、FP.validビット及びFP.wrapビット)を保持又は操作して良い。
ある実施例では、第1の状態(例えば、論理「1」)であるSIMD.validビットは、割り当てられている命令がSIMD演算に対応すると示して良い。この場合、スタック制御装置はSIMDスタックを有効にして良い。同様に、第1の状態(例えば、論理「1」)であるFP.validビットは、割り当てられている命令がFP演算に対応すると示して良い。この場合、スタック制御装置はFPスタックを有効にして良い。ある実施例では、第1の状態(例えば、論理「1」)であるSIMD.validビット及びFP.validビットは、割り当てられている命令がSIMD FP演算に対応すると示して良い。この場合、スタック制御装置はSIMDスタック及びFPスタックを有効にして良い。
反対に、反対の論理状態(例えば、「0」)であるSIMD.validビット及び/又はFP.validビットは、スタック制御装置に、対応するスタックを有効にさせなくて良い。ある実施例では、SIMD又はFPスタックの対応するビットが、割り当てられている命令は当該スタックの1つ又は両方を使用する演算に対応しないと示す場合、当該スタックは命令の割り当て前と同一状態(有効又は無効)のままで良い。他の実施例では、スタックが有効状態にある場合、スタック制御装置は、SIMD.valid及びFP.validビットの状態に依存して割り当てられている命令により使用されないスタックを無効にして良い。
SIMD.valid及びFP.validビットに加え、スタック制御装置220は、2以上のビットを保持し、SIMD又はFP命令がリオーダー・バッファー(ROB)226に格納されて良い2つの世代の1つを示して良い。ある実施例では、ROBは、命令が割り当てられた順序で書き込まれる順次書き込み構造体であって良い。命令がROBから退役されると、対応するエントリはそれらエントリが割り当てられた順序で割り当て解除されて良い。
ある実施例では、書き込まれるべきROBエントリは、各ROB書き込み動作の後にインクリメントされ書き込まれるべき次のエントリを指す書き込みポインタ又は「先頭ポインタ」により追跡され得る。同様に、退役されるべきROBエントリは、各退役の後にインクリメントされ退役されるべき次のROBエントリを指す退役ポインタ又は「末端ポインタ」により追跡され得る。
用語「世代」は、末端ポインタによるROBの完全なトラバースを参照して良く、その間に全てのROBエントリが退役され及び末端ポインタがROBの始めに戻る。従って、末端ポインタがROBの始めに戻る又は巻戻る時、ROB世代は次の世代に切り替わったと言える。同様に、世代は先頭ポインタの観点から定義され得る。つまり全てのROBエントリが書き込まれ及び先頭ポインタがROBの始めに戻る時、世代は終了する。ROBエントリは書き込まれる前に退役されないので、先頭ポインタは末端ポインタの前に残っている。従ってある実施例では、末端ポインタの前に、先頭ポインタは新たなROB世代に入る。
例えば、ある実施例では、ROBは、図2の割り当てユニット201により割り当てられたSIMD及び/又はFP命令のそれぞれに対応するエントリを有して良い。更に、各ROBエントリ内のフィールド(例えば、ビット記憶領域)は、対応するSIMD又はFP命令が退役ユニット225により退役された時に設定されて良い。ある実施例では、ROBは、最小時間に割り当てられたSIMD又はFP命令を示す先頭ポインタ及び退役されている最長時間に割り当てられたSIMD又はFP命令を示す末端ポインタを有するポインタによりインデックス付けされて良い。
ある実施例では、ROBは2つの世代間で切り替わって良い。従って、末端又は先頭ポインタにより示されたROBの現行世代は、末端又は先頭ポインタ自体に関連付けられたビットで追跡され得る。例えば、対応するポインタ(末端又は先頭)がそれぞれROB世代0からROB世代1へ遷移し、そしてROB世代0へ戻った場合、世代ビットは「0」から「1」状態へ切り替わりそして0状態へ戻って良い。
ある実施例では、スタック制御装置220は、SIMD.wrap及びFP.wrapのような少なくとも2つのビットを保持して良い。SIMD.wrap及びFP.wrapは、最後のSIMD又はFP命令がプロセッサーから退役され、従ってSIMD又はFPスタックを使用する如何なる命令もプロセッサー内に残っていない時を検出するために使用されて良い。ある実施例では、この情報は、SIMD又はFPスタックの電源を切るために、つまりSIMD.valid又はFP.validを0に設定するために使用され得る。
例えば、SIMD命令が割り当てられ及び割り当て装置201が信号221をスタック制御装置220へ送出する場合、SIMD.wrapビットは先頭ポインタのwrapビットの現行値に設定され、最後のSIMD命令により書き込まれたROBエントリの世代を示す。末端ポインタが新たな世代に巻戻る場合、末端ポインタの前の世代は、信号202を介しスタック制御装置220へ送出される。前のROB世代は、SIMD.wrapと比較される。一致した場合、これは、最後のSIMD uopを有するROB世代が退役され及び従ってもはやSIMD uopがプロセッサー内に存在しないことを示す。従って、SIMDスタックは、例えばSIMD.validを0に設定することにより電源を切られ得る。
同様な動作は、ある実施例ではFP.wrapビットに関しFPスタックにも適用されて良い。更にいくつかの実施例では、上述の動作は、メモリー・スタック又は各命令の間に常に使用されなくて良い他の資源を含むプロセッサー内の他の資源にも適用されて良い。
図3は、本発明のある実施例に従い使用されて良いROB並びに対応する先頭及び末端ポインタを示す。ROB301は、ある実施例では128エントリ循環キューとして示され、当該キューのエントリはエントリ0からエントリ127まで満たされる。同様に、先頭ポインタ305及び末端ポインタ310は、エントリ0からエントリ127をトラバースし、ROB内の最後のエントリに達した後にエントリ0に巻戻る。他の実施例では、ROBは「最上部」から「最下部」へではなく「最下部」から「最上部」へ満たされて良く、及びそれに従い先頭及び末端ポインタはROBをトラバースして良い。
ある実施例では、先頭及び末端ポインタは、対応するスタックが有効又は無効にされるべきか否かを決定するため、SIMD.valid、FP.valid、SIMD.wrap、及びFP.wrapビットと一緒に用いられる。例えば、SIMD命令が割り当てられ、及び対応するエントリ315がROBに格納された場合、先頭ポインタ305は、適切なバッファ・エントリをポインタの適切なフィールドに格納することにより当該エントリを指して良い。同様に、末端ポインタは、退役された最も古いエントリ320が見付かるまで最上部から最下部へROBをトラバースして良い。先頭及び末端ポインタにより指された各エントリの世代を追跡するために、SIMD.wrapビットのようなビットは、他の情報とともに図2のスタック制御装置220により使用されて良い。
例えば、SIMD命令が退役され、及びROBの末端ポインタが巻戻った場合、割り当てられるべき最後のSIMD命令のwrapビットは、退役により生じた最小時間SIMD.wrap状態と比較される。それらが同一の場合、割り当てられた最後のSIMD命令が、完全に退役されているROBトラバースの前の「世代」に相当した(つまり、wrapビット状態が変化しているので、前のwrapビット状態は前のトラバース世代の命令に属する)ことを示して良い。現行のSIMD.wrapビッ状態と等しいト前のSIMD.wrapビット状態は、ROB内の最後のSIMD命令が退役されていること、及び如何なるSIMD命令も割り当てられていない又は実行されていないことを示す。従って、SIMD.validビットは、スタック制御装置によりクリアされて良く、及びSIMDスタックは無効にされる。FPスタックを制御するために対応するFP.valid及びFP.wrapビットを使用するFP命令も同様の技術に従う。他のスタック又はINTスタック制御のようなプロセッサー資源は、上述の技術を用いて制御されて良い。
図4は、本発明の少なくとも1つの実施例のいくつかの態様を実行するために使用されて良い動作を説明するフロー図である。フロー図はSIMDスタックを制御する動作を示すが、図4に関して記載される動作は、FPスタック、INTスタック、又は他のプロセッサー資源を制御するために用いられても良い。動作401で、SIMD命令が割り当てられる。そして動作405で、対応するSIMD.validビットが(既に設定されていないならば)設定され、及び対応するSIMD.wrapビットは、ROB先頭ポインタにより示される世代に基づき状態を変化する。ある実施例では、(既に設定されていない場合)SIMD.validを設定すると、有意な遅延を生じることなくSIMD命令がSIMDスタックへのアクセスに間に合うよう、SIMDスタックが有効にされる。動作410でROB末端ポインタが巻戻ると、動作415でROB末端ポインタがROBの始めに巻戻った場合、動作420でROB末端ポインタにより示される世代は状態を変化する。動作425で、ROB末端ポインタにより示される前の世代は、SIMD.wrap状態と比較される。等しい場合、動作430でSIMD.validビットはクリアされ、SIMDスタックは無効にされる。ある実施例では、ROB末端ポインタの世代は、末端ポインタに関連付けられたビット又はビットのグループにより示されて良い。それらが等しくない場合、動作435で、現行のSIMD.valid状態は維持される。
少なくとも1つの実施例では、SIMD.wrapビットは、(例えば、「SIMD.robid」ビットを介し)スタック制御装置に記録されるべき最後のSIMD命令又はuopのROBエントリの表示を格納することにより置き換えられて良い。ある実施例では、SIMD命令又はuopがROBに割り当てられる時は常に、例えばSIMD.robidは先頭ポインタと同様に当該命令へのポインタへ更新される。命令又はuopが退役する場合、退役ROB識別子は(末端ポインタと同様に)、格納されたSIMD.robidと比較されて良い。そしてそれらが等しい場合、対応するスタックの電源を切るためにSIMD.validビットはクリアされ得る。
図5は、本発明のある実施例が使用されて良いフロント・サイド・バス(FSB)・コンピューター・システムを示す。プロセッサー505は、レベル1(L1)キャッシュ・メモリー510及びメイン・メモリー515からデータにアクセスする。本発明の他の実施例では、キャッシュ・メモリーはレベル2(L2)キャッシュ・メモリー又はコンピューター・システム・メモリー階層内の他のメモリーであって良い。更に、いくつかの実施例では、図5のコンピューター・システムはL1キャッシュ及びL2キャッシュの両方を有して良い。
図5のプロセッサー内には、機械状態のための記憶領域506が図示される。ある実施例では、記憶領域はレジスタのセットであって良い。他の実施例では、記憶領域は他のメモリー構造であって良い。プロセッサーは如何なる数のプロセッサー・コアであっても良い。本発明の他の実施例は、しかしながら、別個のバス・エージェントのようなシステム内の他の装置、又はシステム全体に分散されたハードウェア、ソフトウェア、又はそれらの組み合わせに実施されて良い。
メイン・メモリーは、ダイナミック・ランダム・アクセス・メモリー(DRAM)、ハード・ディスク・ドライブ(HDD)520のような種々のメモリー資源、又はネットワーク・インターフェース530を介しコンピューター・システムから遠隔に設置された、種々の記憶装置及び技術を含むメモリー資源に実施されて良い。キャッシュ・メモリーは、プロセッサー内又はプロセッサーのローカル・バス507のようなプロセッサー近傍の何れかに設置されて良い。
更に、キャッシュ・メモリーは、6トランジスター(6T)セルのような比較的高速のメモリー・セル、又は同等の若しくはより速いアクセス速度の他のメモリー・セルを有して良い。図5のコンピューター・システムは、マイクロプロセッサーのようなバス・エージェントのポイント・ツー・ポイント(PtP)ネットワークであって良い。バス・エージェントは、各エージェント専用のバス信号を介しPtPネットワークで通信する。図6は、ポイント・ツー・ポイント(PtP)構成に配置されたコンピューター・システムを示す。特に、図6は、プロセッサー、メモリー、及び入力/出力装置が多数のポイント・ツー・ポイント・インターフェースにより相互接続されるシステムを示す。
図6のシステムはまた、複数のプロセッサーを有する。明確にするため、複数のプロセッサーの内、2個のプロセッサー670、680のみが示される。プロセッサー670、680はそれぞれ、メモリー62、64と接続するため、ローカル・メモリー制御ハブ(MCH)672、682を有する。プロセッサー670、680は、ポイント・ツー・ポイント(PtP)インターフェース650を介し、PtPインターフェース回路678、688を用いデータを交換して良い。プロセッサー670、680はそれぞれ、個々のPtPインターフェース652、654を介し、ポイント・ツー・ポイント・インターフェース回路676、694、686、698を用いチップ・セット690とデータを交換して良い。チップ・セット690はまた、高性能グラフィック・インターフェース639を介し、高性能グラフィック回路638とデータを交換して良い。本発明の実施例は、如何なる数のプロセッサー・コアを有する如何なるプロセッサー内にも、又は図6の各PtPバス・エージェント内にも設置されて良い。
本発明の他の実施例は、しかしながら、他の回路、ロジック単位、又は図6のシステム内の装置に存在して良い。更に、本発明の他の実施例は、複数の回路、ロジック単位、又は図6に示された装置内に分配されて良い。
本願明細書で参照されたプロセッサー、又は本発明の実施例により設計された如何なる他の構成要素は、製造から製作のシミュレーションまで種々の段階で設計されて良い。設計を表すデータは、多くの方法で設計を表して良い。第一に、シミュレーションで有用なように、ハードウェアはハードウェア記述言語又は別の機能記述言語を用い表されて良い。更に又は代案として、ロジック及び/又はトランジスター・ゲートを有する回路レベルモデルは、設計工程のいくつかの段階で生成されて良い。更に、多くの設計は、いくつかの段階で、種々の装置の物理的配置を表すデータでモデル化され得るレベルに達する。従来の半導体製造技術が用いられる場合には、装置配置モデルを表すデータは、修正機回路を製造するために用いられるマスクの異なるマスク・レイヤーにおける種々の特徴の存在又は不在を特定するデータであって良い。
如何なる設計の表現でも、データは如何なる機械可読媒体の形式で格納されて良い。変調された又は情報を送信するために生成された光又は電波、メモリー、又はディスクのような磁気若しくは光記憶媒体は、機械可読媒体であって良い。これらの如何なる媒体も、設計又は誤り回復ルーチン内の命令のような本発明の実施例で用いられる他の情報を「伝達する」又は「示す」。情報を示す又は伝達する電気搬送波が送信される場合、電気信号の複製、バッファリング、又は再送信の範囲で、新たな複製が作成される。従って、通信プロバイダー又はネットワーク・プロバイダーの動作は、本発明の技術を実施する項目、例えば搬送波の複製を作成することであって良い。
従って、読み出し又は格納のようなメモリー・アクセスの舵取りをする技術が公開される。特定の実施例が記載され、添付の図面に示されたが、理解されるべき点は、当該実施例が単に説明のためであり広範な本発明を制限しないこと、及び本開示の獲得により種々の他の変更が当業者に明らかであるので、示され記載された特定の構成及び配置に本発明が限定されないことである。このような技術の分野では、成長が早く更なる進歩は容易に予測できない。開示された実施例は、技術の進歩の助けを得て、本開示の原則又は特許請求の範囲から逸脱することなく直ちに構成及び細部を変更可能である。
本発明の1又は複数の実施例の種々の態様は、本発明の1又は複数の実施例が用いられて良いプロセッサー又はコンピューター・システムの公表において記載、議論又はこれを参照して良い。このような公表は、ニュース、雑誌、広告、又は他の紙面若しくは有形的表現媒体を含んで良いがこれらに限定されない。特に、本発明の1又は複数の実施例の種々の態様は、ウェブサイト又はポップアップを生成するプログラムを収容するサーバーが米国又はその領土に設置されているか否かに関わらず、ウェブサイト、「ポップアップ」広告、又は他のウェブに基づく媒体を介しインターネットで公表されて良い。
従来の、プロセッサー内の種々の演算を実行するために用いられるロジックのセットを示す。 本発明による、プロセッサー内の種々の演算を実行するロジックのセットを示す。 本発明の1又は複数の実施例とともに使用されて良いリオーダー・バッファ(ROB)を示す。 本発明のある実施例の少なくともいくつかの態様を実行するために使用されて良い動作を説明するフロー図である。 本発明の少なくとも1つの実施例が使用されて良い共有バス・コンピューター・システムを示す。 本発明の少なくとも1つの実施例が使用されて良いポイント・ツー・ポイント・バス・コンピューター・システムを示す。
符号の説明
201 割り当てユニット
205 スケジューラー
210 整数スタック
211 SIMDスタック
212 FPスタック
220 スタック制御装置
221、202、223、224 信号
225 退役ユニット
226、301 リオーダー・バッファー(ROB)
305 先頭ポインタ
310 末端ポインタ
315、320 エントリ
505 プロセッサー
506 記憶領域
510 キャッシュ・メモリー
515 メイン・メモリー
520 HDD
530 インターフェース
62、64 メモリー
614 I/O装置
618 バス・ブリッジ
622 キーボード/マウス
624 音声I/O
626 通信装置
628 データ記憶装置
630 コード
638 高性能グラフィック回路
639 高性能グラフィック・インターフェース
650、652、654 ポイント・ツー・ポイント(PtP)インターフェース
670、680 プロセッサー
676、678、686、688、694、698 PtPインターフェース回路
672、682 ローカル・メモリー制御ハブ
674、684 プロセッサー・コア
690 チップ・セット

Claims (30)

  1. 装置であって、
    スタックが割り当てられた命令により用いられるか否かに基づき前記スタックを有効又は無効にするスタック制御装置、を有する装置。
  2. 前記命令は単一命令多重データ(SIMD)命令であり、及び前記スタックは前記SIMD命令に関連付けられた演算を実行するSIMDスタックである、請求項1記載の装置。
  3. 前記命令は浮動小数点(FP)命令であり、及び前記スタックは前記FP命令に関連付けられた演算を実行するFPスタックである、請求項1記載の装置。
  4. 割り当てられた命令に対応する情報を格納し及び前記割り当てられた命令が退役しているか否かを示すリオーダー・バッファー(ROB)、を更に有する請求項3記載の装置。
  5. 前記命令に先行する前記ROBに格納された全ての命令が退役している場合、前記スタック制御装置は前記スタックを無効にする、請求項1記載の装置。
  6. 前記スタック制御装置は、命令が割り当てられているか否かを示す第1のビット、及び命令が退役しているか否かを示す第2のビットを用いる、請求項5記載の装置。
  7. 前記第1のビットは前記ROB内の最小時間に割り当てられた命令をインデックス付けする先頭ポインタに対応し、及び前記第2のビットは退役している前記ROB内の最長時間に割り当てられた命令をインデックス付けする末端ポインタに対応する、請求項6記載の装置。
  8. 命令を割り当てる割り当てユニット、命令をスケジュールするスケジューラー、及び命令を退役する退役ユニット、を更に有する請求項7記載の装置。
  9. システムであって、
    第1の命令及び第2の命令を格納するメモリー、
    レジスタが前記第1及び第2の命令の何れかに割り当てられているか否かを検出し、及びそれに応じて対応する第1又は第2の実行スタックを有効にするか否かを決定するプロセッサー、を有し、前記プロセッサーは前記第1又は第2の命令が退役するのに応じて前記第1又は第2の実行スタックを無効にするか否かを更に決定する、システム。
  10. 前記プロセッサーは、前記レジスタを前記第1又は第2の命令に割り当てる割り当てユニットを有する、請求項9記載のシステム。
  11. 前記プロセッサーはスタック制御装置を更に有し、前記スタック制御装置は、前記レジスタが前記第1又は第2の命令の何れかに割り当てられているか否かの表示を前記割り当てユニットから受信し、それに応じて前記第1又は第2の実行スタックが既に有効になっていない場合に、前記第1又は第2の実行スタックを有効にする、請求項10記載のシステム。
  12. 前記プロセッサーは、前記第1又は第2の命令を退役する退役ユニットを更に有する、請求項11記載のシステム。
  13. 前記割り当てユニットは、前記第1又は第2の命令が退役しているか否かの表示を前記退役ユニットから受信する、請求項12記載のシステム。
  14. 前記プロセッサーはリオーダー・バッファーを更に有し、前記リオーダー・バッファーのエントリは、前記割り当てユニットが前記第1及び第2の命令のレジスタを割り当てた順序に対応する、請求項13記載のシステム。
  15. 前記第1又は第2の命令が退役されるべきROB内のエントリの世代の最後の命令である場合、前記スタック制御装置は前記第1又は第2のスタックを無効にする、請求項14記載のシステム。
  16. 前記第1及び第2の命令はそれぞれ単一命令多重データ(SIMD)命令及び浮動小数点(FP)命令に対応し、前記第1及び第2の実行スタックはそれぞれSIMDスタック及びFPスタックに対応する、請求項15記載のシステム。
  17. 方法であって、
    第1の命令に少なくとも1つのレジスタを割り当てる段階、
    少なくとも1つのレジスタが割り当てられていると示す第1のビットを設定する段階、
    リオーダー・バッファー(ROB)内に前記少なくとも1つのレジスタの割り当ての表示を格納する段階、
    前記第1の命令を退役する段階、及び
    前記第1の命令が退役されるべきROBエントリの第1の世代の最後の命令であるか否かを示す第2のビットを設定する段階、を有する方法。
  18. 割り当てられている少なくとも1つのレジスタより先に前記第1の命令に対応するスタックが無効にされた場合、前記第1のビットが設定されるのに応じて、前記スタックを有効にする段階、を更に有する請求項17記載の方法。
  19. 前記第1のビットが設定されないことに応じて、前記スタックを無効にする段階、を更に有する請求項17記載の方法。
  20. 前記ROBは、割り当てられている少なくとも1つのレジスタに対応するROBエントリを指す先頭ポインタによりインデックス付けされ、及び前記ROBは、退役されている命令に対応するROBエントリを指す末端ポインタによりインデックス付けされる、請求項17記載の方法。
  21. ROBエントリの前記世代は、前記第2のビットの前の状態と比較した前記第2のビットの現行の状態により示される、請求項20記載の方法。
  22. 前記第2のビットの現行の状態及び前記末端ポインタにより示される前のROB世代が同一の場合、前記スタックは無効にされる、請求項21記載の方法。
  23. 前記第1の命令は単一命令多重データ(SIMD)命令であり、及び前記スタックはSIMDスタックである、請求項22記載の方法。
  24. 前記第1の命令は浮動小数点(FP)命令であり、及び前記スタックはFPスタックである、請求項22記載の方法。
  25. 前記第1の命令は整数命令であり、及び前記スタックは整数スタックである、請求項22記載の方法。
  26. プロセッサーであって、
    複数のマイクロ演算(uop)に対応する複数のレジスタを割り当てる割り当てユニット、
    実行されるべき前記複数のuopをスケジュールするスケジューラー、
    前記複数のuopに対応する演算を実行する複数のスタック、
    前記複数のuopを退役する退役ユニット、及び
    前記複数のレジスタの少なくとも1つが前記複数のuopの少なくとも1つに割り当てられるのに応じて、前記複数のスタックの少なくとも1つを有効にするスタック制御装置、を有するプロセッサー。
  27. 前記スタック制御装置は、前記退役ユニットが前記複数のuopの少なくとも1つを退役するのに応じて、前記複数のスタックの少なくとも1つを無効にする、請求項26記載のプロセッサー。
  28. 前記割り当てユニットが前記複数のuopの少なくとも1つに対応するスタックを割り当てているか否かを示すvalidビットを格納するvalidビット記憶領域、を更に有する請求項27記載のプロセッサー。
  29. 少なくとも1つのuopが前記ROB内のエントリの第1の世代に対応するか否かを示すwrapビットを格納するwrapビット記憶領域、を更に有する請求項27記載のプロセッサー。
  30. 前記スタック制御装置は、前記wrapビットの第1の状態が前記wrapビットの前の状態と等しいか否かを決定するロジックを有し、及び前記validビットが設定された場合、前記スタック制御装置は前記少なくとも1つのuopに対応するスタックを無効にする、請求項29記載のプロセッサー。
JP2007241476A 2006-09-18 2007-09-18 要求に基づく処理資源の割り当て Pending JP2008181481A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/523,132 US20080072015A1 (en) 2006-09-18 2006-09-18 Demand-based processing resource allocation

Publications (1)

Publication Number Publication Date
JP2008181481A true JP2008181481A (ja) 2008-08-07

Family

ID=38670083

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007241476A Pending JP2008181481A (ja) 2006-09-18 2007-09-18 要求に基づく処理資源の割り当て

Country Status (7)

Country Link
US (1) US20080072015A1 (ja)
JP (1) JP2008181481A (ja)
KR (1) KR20080025652A (ja)
CN (1) CN101196868A (ja)
DE (1) DE102007044137B4 (ja)
GB (1) GB2441897A (ja)
SG (1) SG141346A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7921280B2 (en) * 2008-06-27 2011-04-05 Intel Corporation Selectively powered retirement unit using a partitioned allocation array and a partitioned writeback array
GB2486485B (en) 2010-12-16 2012-12-19 Imagination Tech Ltd Method and apparatus for scheduling the issue of instructions in a microprocessor using multiple phases of execution
KR20130080323A (ko) * 2012-01-04 2013-07-12 삼성전자주식회사 배열 구조를 갖는 프로세서를 위한 전력 제어 방법 및 장치
US9411739B2 (en) * 2012-11-30 2016-08-09 Intel Corporation System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators
US10191873B2 (en) * 2012-12-20 2019-01-29 Advanced Micro Devices, Inc. Method and apparatus for power reduction for data movement

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04127210A (ja) * 1990-09-19 1992-04-28 Hitachi Ltd 低消費電力プロセッサ
JPH07182160A (ja) * 1993-10-29 1995-07-21 Advanced Micro Devicds Inc スーパースカラマイクロプロセッサ
US5524263A (en) * 1994-02-25 1996-06-04 Intel Corporation Method and apparatus for partial and full stall handling in allocation
US5815724A (en) * 1996-03-29 1998-09-29 Intel Corporation Method and apparatus for controlling power consumption in a microprocessor
JP2001184495A (ja) * 1999-12-27 2001-07-06 Ricoh Co Ltd 画像処理装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666537A (en) * 1994-08-12 1997-09-09 Intel Corporation Power down scheme for idle processor components
JPH10326129A (ja) * 1997-05-23 1998-12-08 Mitsubishi Electric Corp 半導体装置
US6345354B1 (en) * 1999-04-29 2002-02-05 Mips Technologies, Inc. Register file access
KR20050084121A (ko) * 2002-12-04 2005-08-26 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 회로 장치, 전력 소모 제어 방법, 프로그램 저장 매체 및신호 지속 매체
JP2006509291A (ja) * 2002-12-04 2006-03-16 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ マイクロプロセッサ電力消費のソフトウェアベースの制御
US7167989B2 (en) * 2003-10-14 2007-01-23 Intel Corporation Processor and methods to reduce power consumption of processor components
US7246219B2 (en) * 2003-12-23 2007-07-17 Intel Corporation Methods and apparatus to control functional blocks within a processor
US7647481B2 (en) * 2005-02-25 2010-01-12 Qualcomm Incorporated Reducing power by shutting down portions of a stacked register file

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04127210A (ja) * 1990-09-19 1992-04-28 Hitachi Ltd 低消費電力プロセッサ
JPH07182160A (ja) * 1993-10-29 1995-07-21 Advanced Micro Devicds Inc スーパースカラマイクロプロセッサ
US5524263A (en) * 1994-02-25 1996-06-04 Intel Corporation Method and apparatus for partial and full stall handling in allocation
US5815724A (en) * 1996-03-29 1998-09-29 Intel Corporation Method and apparatus for controlling power consumption in a microprocessor
JP2001184495A (ja) * 1999-12-27 2001-07-06 Ricoh Co Ltd 画像処理装置

Also Published As

Publication number Publication date
CN101196868A (zh) 2008-06-11
DE102007044137A1 (de) 2008-04-17
DE102007044137B4 (de) 2011-01-13
GB2441897A (en) 2008-03-19
KR20080025652A (ko) 2008-03-21
US20080072015A1 (en) 2008-03-20
SG141346A1 (en) 2008-04-28
GB0718174D0 (en) 2007-10-31

Similar Documents

Publication Publication Date Title
US8549263B2 (en) Counter-based memory disambiguation techniques for selectively predicting load/store conflicts
JP2007141246A (ja) ベクトルマスク設定技術
CN115867888B (zh) 用于利用主-影子物理寄存器文件的方法和系统
US9875108B2 (en) Shared memory interleavings for instruction atomicity violations
CN101529377A (zh) 处理器中多线程之间的通信
JP2017513128A (ja) マルチスレッド・ゲスト仮想マシン(vm)をディスパッチするためのシステム、方法およびコンピュータ・プログラム製品
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
JP2017515202A (ja) コンピュータ内の複数のスレッドをエグジットするための方法、システム、およびコンピュータ・プログラム
US8205032B2 (en) Virtual machine control structure identification decoder
JP2008181481A (ja) 要求に基づく処理資源の割り当て
US20070061555A1 (en) Call return tracking technique
CN111095203B (zh) 实时寄存器值的集群间通信
US20080244224A1 (en) Scheduling a direct dependent instruction
US8825989B2 (en) Technique to perform three-source operations
US8261028B2 (en) Cached dirty bits for context switch consistency checks
JP6891596B2 (ja) プロセッサ
US12229563B2 (en) Split register list for renaming
US7519792B2 (en) Memory region access management
CN116635833A (zh) 复杂cpu上的精确时间戳或导出计数器值生成
US20260003624A1 (en) Multi-instruction fusion
EP4202664B1 (en) System, apparatus and method for throttling fusion of micro-operations in a processor
JP7078380B2 (ja) 命令制御装置、命令制御方法およびプログラム
JP2024535327A (ja) キャッシュライン変更の抑制
CN120704746A (zh) 寄存器重命名装置、处理器及维护寄存器映射表的方法
US20140075140A1 (en) Selective control for commit lines for shadowing data in storage elements

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100720

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101015

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101020

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110201