JP2008539472A - スタック型レジスタファイルの一部分をシャットダウンすることによる電力低減 - Google Patents

スタック型レジスタファイルの一部分をシャットダウンすることによる電力低減 Download PDF

Info

Publication number
JP2008539472A
JP2008539472A JP2007557200A JP2007557200A JP2008539472A JP 2008539472 A JP2008539472 A JP 2008539472A JP 2007557200 A JP2007557200 A JP 2007557200A JP 2007557200 A JP2007557200 A JP 2007557200A JP 2008539472 A JP2008539472 A JP 2008539472A
Authority
JP
Japan
Prior art keywords
bank
registers
register
banks
stack
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
JP2007557200A
Other languages
English (en)
Other versions
JP4801100B2 (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 JP2008539472A publication Critical patent/JP2008539472A/ja
Application granted granted Critical
Publication of JP4801100B2 publication Critical patent/JP4801100B2/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
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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
    • 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
    • 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
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers

Landscapes

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

Abstract

【課題】スタック型レジスタファイルの一部分をシャットダウンすることによる電力低減。
【解決手段】多くのプロセッサアーキテクチャは、処理オペレーションの実行中に使用されるデータを保持するための、スタック型レジスタファイルの形態のレジスタを含んでいる。ここにおいて教示されるように、スタックを形成する物理レジスタは、バンクに構成される。1つまたは複数のバンクは、レジスタ割付けの要求を満たすために必要に応じて、アクティブにされ、非アクティブにされる。
【選択図】 図1

Description

本教示は、マイクロプロセッサやコンパイラなどのプロセッサの、スタック型レジスタファイル(stacked register file)を形成するレジスタのバンクのような、1組のレジスタの一部分を選択的にシャットダウンする(shut down)技法に関する。
レジスタファイル(register file)は、情報を一時的に記憶するために使用される高速ストレージ構造である。プロセッサは、一般的にプロセッサコア(processor core)の比較的近くにデータまたは命令を保持する1つまたは複数のレジスタファイルを含んでいる。レジスタファイルは、多くの場合にプロセッサの実行リソースによる使用のためのデータの一次ソースとしての役割を果たし、高性能プロセッサは、多くの場合にレジスタファイルの低いアクセスレイテンシ(access latency)を利用するために大きなレジスタファイルを含んでいる。
レジスタ管理技法は、レジスタをプロセスに割り付け(allocate)、より低速なストレージ媒体からレジスタをフィルし(fill)、そして後に、レジスタが他のプロシージャ(procedure)またはファンクションに再割り付けされる(reallocated)ときに、それらのレジスタを空にして他のストレージ媒体に入れる。例えば、アクティブな第2のファンクションが現在使用可能であるよりも多くのレジスタを必要とする場合、第1のファンクションが非アクティブである間、第1のファンクションによって使用されるレジスタからのデータは、他のストレージに対して転送されることができる。制御が第1のファンクションに戻されるときに、諸レジスタは、再割り付けされることができるが、それらのレジスタは、一般的には、先行するアクティビティ(activity)中にそのファンクションによって使用された同じレジスタではないであろう。ファンクションについてのアクティビティを復元する(restore)ために、記憶されたデータは、ストレージから新しく割り付けられたレジスタへとロードされる。高い命令/サイクル(instruction/cycle)(IPC)スループット(throughput)を達成するためには、マイクロプロセッサや自動並列化コンパイラ(parallelizing compilers)のような現代のプロセッサと、効率的なレジスタの再命名(renaming)と、レジスタの使用と、ファンクションパラメータの受け渡し(passing)とが、考慮すべき事項である。
マイクロプロセッサまたはコンパイラあるいは同様の類を利用する多くのデバイスおよび用途は、低電力要件(low power requirements)を有する。一般に、プロセッサ中のレジスタファイルは、その多数のポートおよび高速性に起因して、電力の主要な消費主体(consumer)である。一部のプロセッサにおいては、これは、多数のレジスタによって悪化させられる。さらに、トランジスタ技術が縮小するにつれて、 − レジスタファイルのアクセスされない部分にさえ存在する − リーク電力(leakage power)が、より重大に(more significant)なる。一般的に、プロセッサは、常に組内のすべてのレジスタに対して電力を供給する。たいていの場合、レジスタファイルの使用されない部分は、これらのレジスタがいつでも使用されることができるであろう値を、あるいは、万が一レジスタの電源が切られた場合には失われるであろう値を保持するので、意図的に遮断(shut off)されない。
例えば、ポータブル/ハンドヘルドデバイスへの利用のために、あるいは、限られた又は制限された電源を有する他の利用のために、より低電力を必要とするプロセッサを設計する必要性が引き続き存在する。この一般的な必要性をサポートするために、スタック型レジスタファイルなど、プロセッサのレジスタのグループによって消費される電力を低減させる技法についての特定の必要性が存在する。
(概要)
電力消費を低減させるために、1組のレジスタの選択された一部分が、使用中でないときにシャットダウンされる。電力の節約を提供し、しかもその1組のレジスタを含むプロセッサの希望する性能を保持するように、アクティブにされるレジスタとそうでないレジスタとを選択するための特定の技法が開示される。
したがって、ここにおいて開示される教示の一態様は、プロセッサ中のスタック型レジスタファイルのレジスタを動作させるための電力制御方法に関連する。本方法は、スタック型レジスタファイル中のレジスタの割付けに関する情報を受信することを必要とする。スタック型レジスタファイルは、レジスタの複数のバンク(a plurality of banks of registers)に分割される。本方法は、受信された割付けによって指示されるレジスタ要件の数(number of register requirements)に対応して、スタック型レジスタファイル内のレジスタのバンク(banks of registers)のオペレーションを選択的にアクティブにし、非アクティブにする(activating and deactivating)ことを伴う。
本教示は、スタック型レジスタファイル中の1つまたは複数のバンクのアクティブ化および非アクティブ化を制御するための様々なアルゴリズムを包含する。2つの特定の例が詳細に論じられる。第1の例においては、電力制御アルゴリズムは、第1のバンクを形成するレジスタの数に対するあらかじめ決定された関係(predetermined relationship)を有するしきい値(threshold)以下のレジスタの数の割付けに応じて、第1のバンクのレジスタをアクティブに保持し、第2のバンクのレジスタを非アクティブに保持する。しきい値よりも大きなレジスタ数の割付けに応じて、その制御アルゴリズムは、第1のバンクのレジスタをアクティブに保持し、第2のバンクのレジスタをアクティブにする。
制御アルゴリズムの第2の例においては、レジスタの各割付けは、スタックポインタのそれぞれのトップ(respective top of stack pointer)とそれぞれの保存/復元ポイント(respective save/restore point)を指し示す。各割付けに応じて、このアルゴリズムは、それぞれの保存/復元ポイントからスタックポインタのそれぞれのトップまでの範囲における少なくとも1つのレジスタを有するスタック型レジスタファイルの任意のバンクを動作させる。しかしながら、その範囲内における少なくとも1つのレジスタも有さないスタック型レジスタファイルの任意のバンクは、非アクティブである。
ここにおいて開示される教示の他の態様は、プロセッサ中において使用するためのスタック型レジスタシステムに関する。そのような一態様においては、レジスタのスタックは、第1の数のレジスタ(a first number of registers)を備える第1のレジスタバンクと、第2の数のレジスタ(a second number of registers)を備える第2のレジスタバンクと、を含む。プロセッサの処理オペレーションに対するレジスタの割付けと非割付け(allocations and de-allocations)に応じて、レジスタバンクのうちの少なくとも1つを選択的にアクティブにし非アクティブにするための手段が提供される。アクティブ化および非アクティブ化は、割り付けられたレジスタの数のファンクションとして、アクティブであるバンクの数を動的に調整する。
別の態様においては、プロセッサにおいて使用するためのスタック型レジスタシステムは、各レジスタバンクが1以上のレジスタを含むレジスタバンクを備えるレジスタのスタックを含んでいる。このシステムはまた、スタック内のレジスタの割付けに関する情報に応答し、1つまたは複数のレジスタバンクのON/OFF状態を選択的に制御するコントローラも含んでいる。該コントローラは、レジスタの数を増加させる少なくとも1つの割付けを満たすためにONであるバンクの数を増加させるため、スタック内に割り付けられたレジスタの数に応答する。コントローラはまた、減少させられたレジスタの数の少なくとも1つの割付けに応じて、ONであるバンク数を減少させる。
更なる目的、利点および新規の特徴は、以下に続く説明の中で一部分記述され、また一部分は、以下のそして添付している図面を検討すれば当業者には明らかになるであろう、あるいは実例の製造またはオペレーションによって学習されることができる。本教示の目的および利点は、特に添付特許請求の範囲中において指摘される方法、装置および組合せの実施あるいは使用によって理解され達成されることができる。
図面の図は、限定のためではなく、例のみの目的で、本教示による1または複数の実施形態(implementation)を表わしている。図において、同様な参照番号は、同じまたは同様な要素(elements)を意味する。
以下の詳細な説明においては、関連する教示についての十分な理解を提供するために、多くの特定の詳細が、例として述べられている。しかし、本教示は、そのような詳細無しに実施されることができるということは、当業者には明らかである。他の例においては、よく知られている方法、プロシージャ、コンポーネント、および回路は、本教示の態様を不必要に不明瞭にすることを避けるために、詳細無しに、比較的高いレベルで説明されている。
電力消費を低減させるために、レジスタの組またはスタック(a set or stack of registers)の選択された一部分が、特定のオペレーションのために必要とされるであろうレジスタの割付けに関連した命令および/またはポインタの解析に基づいて、使用中でないときに、シャットダウンされる(shut down)。ここにおいて論じられる技法は、いくつかの観察を利用している。第1に、少なくともいくつかのプロセッサにおけるレジスタの割付けに関する命令は、任意の時点において必要とされるレジスタの数の事前の知識を与える。ほとんどの機能は、必ずしも使用可能なレジスタのすべてを必要とはしない。したがって、レジスタスタック(register stack)による電力消費は、レジスタファイルの一部分をシャットダウンすること(shutting down)により節約されることができる。どのようにしてレジスタが割り付けられ、そして使用されるかのかを、また、バンクをアクティブにし非アクティブにするためにどのようにして処理が制御されるのかを、認識するためには、先ず、スタック型レジスタファイルのオペレーションのある種の一般的な側面を調べてみることが、助けになり得る。
スタック型レジスタファイルを用いて、コンパイラ(compiler)は、ALLOC命令を使用し理論的に無限のスタック上にレジスタを割り付けることそして割付けを解除することによって、物理レジスタ名に対する仮想レジスタ名のマッピング(mapping)を管理する。ALLOC命令のコアファンクションは、現行のスタックフレームについてのコンパイラによって要求される物理レジスタの数が、使用可能であることを保証することであり、またレジスタスタックベース(Register Stack Base)(RSB)レジスタに記憶されるレジスタマッピングオフセット(register mapping offset)を調整することである。実行中に、すべてのレジスタアクセス命令(register-accessing instruction)によって使用される実際の物理レジスタ名を生成する助けをするために、RSBは、コンパイラによって指定される仮想レジスタ名に加えられる。
以下の例は、ALLOC命令の簡略化されたオペレーションを実証する。
簡略化されたアセンブリ:
;;Rx=仮想レジスタx
;;PRx=物理レジスタx
;;RSB=0;0個のローカルレジスタを仮定する
ALLOC 0,2 ;;2個のローカルレジスタ(RSB=0)を要求する
;;スタックトップ=2(PR1を指し示す)
MOV R0=1 ;;PR0=1
ADD R1=R0,3 ;;PR1=PR0+3(PR1=4)
CALL f ;;ファンクションコールf(x)
ALLOC 1,2 ;;1個の入力レジスタ、2個のローカルレジスタを要求する
;;RSB=(以前のローカル−要求された入力)=(2−1)=1
;;スタックトップ=4(PR3を指し示す)
MOV R1=5 ;;PR2=5
MUL R2=R0,R1 ;;PR3=PR1*PR2(PR3=20)
;;MOV R3=7 ;;不正! スタックトップを超えてアクセスすることはできない
;;入力+ローカル=1+2=3個のレジスタのみが割り付けられる
この一般的な設計の特徴は、ALLOC命令が、コンパイラが各ファンクション中において使用しているレジスタの数を正確にプロセッサに対して示し、コンパイラは明示的に割り付けられたレジスタを超えるレジスタにアクセスする命令を決して生成すべきではないことである。一部のアーキテクチャは、上記のメカニズムを使用して、再マッピングのないグローバルであるべきある種のレジスタと、再マッピングされるべき他のレジスタを実際に指定することに注意すべきである。しかし、簡単にするために、この文書は、すべてのレジスタが再マッピングされることを仮定している。
オペレーション中に、無限のレジスタスタックの幻想を保持するために、実施される物理レジスタの数を超えるレジスタの割付けは、スタックされた物理レジスタ0へと折り返す(wraps around)。そのような場合には、レジスタ保存エンジン(Register Save Engine)(RSE)は、必要に応じてレジスタからメモリ中に保有された補助記憶部(Backing Store)に、またメモリ中に保有された補助記憶部からレジスタへとデータを自動的に保存し、復元することができる。そのようなオペレーションにおいては、保存/復元ポイントはまた、必要に応じて物理レジスタスタックを介して折り返す(wraps)(図12Aおよび図12Bを参照)。このようにして、レジスタスタックファイルは、レジスタデータの最新のフレームを含む循環バッファ(circular buffer)としての役割を果たす。RSEは、現行の割付けによって必要とされないときに、メモリ中に保有される補助記憶部へとデータを移動させ(「スピル(spill)」オペレーション)、RSEは、必要とされるときに、補助記憶部から割り付けられたレジスタへとデータを復元する(restore)(「フィル(fill)」オペレーション)。RSEは、スタック中において現在アクティブであるグループまたはフレームの外側のレジスタからスピルし、外側のレジスタへとフィルする。
図1を参照すると、省電力(power saving)を円滑に進めるために、例(example)は、物理レジスタファイルを個別の電力制御を有するバンクに効果的に区分している(partition)。その例においては、レジスタスタック11は、128個の命令レジスタPR0からPR127を含んでいる。各バンクは、1つまたは複数のレジスタを含んでいる。例においては、ほとんどの処理は、30個以下のレジスタを必要とするので、128個のレジスタスタック11を各々32個のレジスタの4つのバンクに分割することが便利である。例においては、バンク0(13)は、今、レジスタPR0からPR31を含み、バンク1(15)は、今、レジスタPR32からPR63を含んでいる。次に、バンク2(17)は、今、レジスタPR64からPR95を含み、バンク3(19)は、今、レジスタPR96からPR127を含んでいる。ほかの数のバンク、あるいはバンクの各々においてほかの数のレジスタが、使用されてもよく、そして、例えば、各バンクにおけるレジスタの数は等しい必要はない、ということを、当業者は認識するであろう。例においては、アクティブであるバンクの数、したがってアクティブなレジスタの数を、レジスタ要件(register requirements)の変化する数に動的にマッチングさせるために、バンクの各々は、別々にアクティブにされ、非アクティブにされることができる。必要とされないバンクを非アクティブにすることは、電力を節約する。
バンクのオンオフ制御を実施するために、プロセッサは、スタック型レジスタファイルのバンクに関連づけられた電力制御部(power control)21を含んでいる。制御部21は、必要とされるレジスタの数に関する割付け情報に応答する。いくつかのプロセッサにおいては、例えばALLOC命令および他の命令は、レジスタの使用に関するヒント(hints)を提供し、電力制御部21はこのヒントを、必要に応じてバンクの電力をON/OFFにするために、また、様々なスタックメインテナンスポインタ(stack maintenance pointer)を調整するために、思慮深く(judiciously)使用する。
電力制御部は、適切なアルゴリズムを使用して、分割されたレジスタスタックのバンクを選択的にアクティブにし、非アクティブにする。一例においては、アルゴリズムは、バンクのアクティブ化/非アクティブ化の頻度を減少させるために、バンクの電力がONにされ、OFFにされるときに、バンクの固定された順序付け(fixed ordering)を利用する。固定された順序付けアルゴリズムは、一般に第1のバンクをONに保ち、レジスタの割付けが、バンクの境界に対応するレジスタの数に関連したしきい値に到達し、またはしきい値を通過するときに、追加のバンクをONにする。バンクは、レジスタの割付けが減少するときに、逆の順序で非アクティブにされる。
別の例においては、アルゴリズムは、同時にアクティブであるバンクの数を最小にし、したがって電力消費の節約を増大させるために、バンクの電力がONにされ、OFFにされるときに、バンクの可変な順序付けを利用する。プロセッサが、割り付けられたレジスタのスタックトップ(top of stack)(TOS)とRSE保存/復元ポイント(割り付けられたスタックのボトム(bottom))に対してポインタ(pointers)を提供する場合は、アルゴリズムは、ポインタ(pointers)が、バンク(banks)をとおして移動するときにバンク(banks)をアクティブにし、非アクティブにする。1つのポインタからもう一方のポインタまでの(あるいは関連するオフセット値間の)範囲内に1つまたは複数のレジスタを有するバンクは、アクティブである。その範囲内にレジスタのないバンクは、非アクティブである。スタックポインタのトップ(top of stack pointer)が、新しいバンクに近づき入るときに、制御部は、そのバンクをアクティブにする。保存/復元ポイントが、バンクを離れるときに、そのバンクは、非アクティブにされることができる。
図2は、固定された順序付けアルゴリズムを使用して電力制御を実施するプロセッサの一部分の機能ブロック図である。レジスタバンクのレジスタオペレーションおよび電力制御に関係するプロセッサのエレメントが示される。プロセッサは一般的に、便宜上示されていない多数の他のエレメントを含んでいることを、当業者は認識するであろう。もちろん、これらのエレメントの一部は、スタック中のレジスタにデータを供給し、あるいはスタック中のレジスタからのデータを利用することができるが、それらは、例示のON/OFF制御アルゴリズムに直接的には参加してはいない。
この第1の例の目的のために、物理レジスタスタック25は、128個のレジスタPR0からPR127を含み、電力制御の目的のために4つのバンクに分割されることが、この場合にも仮定される。この場合にも、バンク0(27)は、レジスタPR0からPR31を含み、バンク1(29)は、レジスタPR32からPR63を含んでいる。次に、バンク2(31)は、レジスタPR64からPR95を含み、バンク3(33)は、今、レジスタPR96からPR127を含んでいる。
接続および他のエレメントは、便宜上示されていないが、スタック25における個々のレジスタは、プロセッサおよび/または別個のストレージの他のエレメントからデータを受け取り、他のエレメントに対してデータを供給する。例えば、レジスタは、最初にメモリからのデータを用いてロードされることができ、このデータは、プロセッサチップ上、または別個のチップ上に存在することができる。レジスタは、処理するためのコア処理エレメント(core processing element)に対してそのデータを供給し、結果を受け取り記憶する。データは、レジスタが一時的に再割り付けされるときに補助記憶部に/から転送され、またデータは、特定のオペレーションが完了するときに、メモリに対して逆転送されることができる。一般に、物理レジスタスタックファイル(physical register stack file)25におけるレジスタのオペレーションは、よく知られているレジスタスタックファイルのオペレーションと同じであり、そのようなオペレーションが本教示の1つ(または複数)の電力制御アルゴリズムに影響を及ぼすかあるいは電力制御アルゴリズムによって影響を及ぼされる場合を除いて、ここにおいては詳細に論じられてはいない。
スタック25のバンク27〜33のアクティブなステータスは、様々の知られている方法のうちの何らかの方法で、電力制御部37からの選択信号に応じて制御されることができる。一般的な考察の目的のために、図2は、レジスタ駆動のために必要とされる信号(SRD)と、電力制御部37からのバンク電力制御信号に応じてそのSRD信号をバンクに結合するための包括的なゲート回路とを示している。例えば、ゲート41は、制御部37からの電力制御信号に応じてレジスタ駆動信号SRDをバンク0(27)に対して選択的に供給し、ゲート43は、制御部37からの別の電力制御信号に応じてレジスタ駆動信号SRDをバンク1(29)に対して選択的に供給する。同様に、ゲート45は、制御部37からの電力制御信号に応じてレジスタ駆動信号SRDをバンク2(31)に対して選択的に供給し、ゲート47は、制御部37からの別の電力制御信号に応じてレジスタ駆動信号SRDをバンク3(33)に対して選択的に供給する。ゲートは、制御部37からの適切な選択信号に応じて、適切なタイプの信号をレジスタバンクに対して供給するように構成されたロジックゲート、スイッチ、それらの組合せ、または他の任意の回路とすることができる。
気づかれるように、いくつかの異なる技法が、レジスタバンクのON−OFFステータスを制御するために使用されることができる。十分な理解を確かなものとするためには、2つの例を考慮することが助けになり得る。
第1の例においては、それらのバンクは、必要なクロック信号が各バンクに対して供給されるか否かを制御することにより、選択的にアクティブ/非アクティブにされる。図3は、ロジック回路27に印加されるそのような制御を示している。その例において、ゲート41は、ANDゲートである。クロック信号(CLK)は、ANDゲート41の一方の入力に対して印加され、ON/OFF制御信号は、電力制御部37からの他方の入力に対して印加される。制御信号がONであるときに、ゲート41は、クロック信号(CLK)を印加し、このクロック信号により、レジスタバンク27のロジックは、通常の方法でデータINを受け取り、データOUTを供給することができるようになる。制御信号がOFFであるとき、ゲート41は、クロック信号(CLK)を阻止する。この状態においては、レジスタバンク27のロジックは、循環しないことになり、それ故に、ロジックは、より少ない電力を引き込む。同様な制御が、他のバンク上でも使用されることができる。
別の例においては、各バンクに対する電力が、オンにされ、オフにされる。これは、図4の例において示されるように、供給電圧(supply voltage)に対する接続を制御することにより、あるいはグラウンド(ground)に対する選択的な接続により、実施されることができる。直接の電力制御は、非アクティブなレジスタバンクのリーク電流をなくする点で長所を有する。図4の例においては、2つのトランジスタは、バンク29のCMOS回路をグラウンドに選択的に接続するゲート43としての役割を果たす。制御部37が、ゲート43に対してON状態の信号を印加するときに、そのゲートは、グラウンド接続を実現する。バンク29の回路は、供給電圧(V)とグラウンド(GND)との間で電力を引き込み、バンクは、ここにおいて説明されるように動作する。電力制御部37が、ゲート43をOFFにするときに、ゲートは、バンク29の回路をグラウンドから切り離し、電力が、シャットダウンされ、バンク29は、非アクティブにされる。同様な電力制御が、他のバンクのためにも使用されることができる。
当業者は、他の技法が、レジスタバンクのON/OFF状態を制御するために使用されることができることを認識するであろう。ある与えられたプロセッサはまた、スタック型レジスタファイル25を形成する異なるバンク上で異なる技法の組合せを実施することができる。
図2に戻ると、電力制御部37は、有限状態機械(finite state machine)である。その状態機械は、プログラマブルなプロセッサとして実施されることができるが、特定の入力に応じて望ましい出力を生成するために、すなわち特定の制御アルゴリズムを実施するために、回路および/またはロジックブロックから形成されることもできる。例(例えば、図2および8)においては、状態機械は、単一の制御アルゴリズムを実施するが、そのアルゴリズムの一部のパラメータは、プロセッサによって設定されることができる。当業者は、制御部が、プロセッサまたはユーザからの選択入力または制御入力に応じて、2つ以上のアルゴリズムを選択的に実施するように設計されることができることを認識するであろう。例えば、一時的な「高性能」モードにおいては、電力制御アルゴリズムをディスエーブルにし、レジスタのすべてをONにして動作させることも可能にすることができる。
電力制御を実施するときに、制御部37の状態機械は、特定の電力制御アルゴリズムに従って、レジスタスタックファイル25のバンク27〜33をアクティブにする信号を選択的に出力するためにある種の入力情報に応答する。この例においては、制御部37の状態機械は、スタック25と対話し、またはそのスタックを利用するプロセッサのいくつかのエレメントからの信号に応答する。それらの接続はレジスタバンクのアクティブ化/非アクティブ化に関連しているので、電力制御部37に対する接続は示されているが、スタック25に対する/からの他のプロセッサエレメントの通常の接続は、説明を容易にするためにこの図から省略されている。
例においては、電力制御部37は、高レベルのプロセッサ制御エレメント51に応答する。プロセッサ制御部51は、電力制御部37によって使用される電力設定、プリファランス(preference)、しきい値などを変更するために、ソフトウェア制御されるか、または内部制御されるかいずれかの様々な制御レジスタを使用することができる。
電力制御部37はまた、レジスタファイル制御エレメント53からのいくつかの信号にも応答する。レジスタファイル制御部53は、例えば、様々なプロセスによって使用されるファンクションに対してこれらのレジスタを命名/再命名すること(naming/renaming)により、スタック型レジスタファイル25のレジスタの割付けおよびオペレーションを正常に制御するエレメントである。制御部53は、ファイルのスタックトップ(TOS)ポイントを設定し、レジスタスタックベース(RSB)レジスタを特定し、スタック型レジスタファイルの折返しおよび/または他の管理のために使用される他の任意のポインタを生成するために、アクティブなレジスタの数に対応するモジュラス(modulus)を使用する。標準的な128個のレジスタスタックにおいては、例えば、制御部53は、モジュロ(modulo)128で動作することになり、制御部53は、4つのすべてのバンク27〜33がアクティブであるときに、スタック25を制御するためにそのモジュロを使用する。しかし、レジスタファイル制御部53は、バンクのうちの1つ、2つまたは3つだけがアクティブであるときに、そのモジュロカウンティング(modulo counting)を32、64または96へと調整する。したがって、電力制御部37は、電力がオンされるバンクの数を指し示す信号BON.RSCをレジスタファイル制御部53に対して供給し、レジスタファイル制御部53は、そのポインタ設定プロセスなどにおいて、対応するモジュロ数を使用するためにその内部カウンティングロジックを設定する。
ALLOC命令は、いくつかのレジスタをある与えられたプロセスに割り付ける明示的な命令(コール)である。割付け解除は、もはや必要とされないときに、そのプロセスからのレジスタの回復を実質的に指し示すリターンまたは応答である。これらの命令は、それ故に与えられた任意の時刻において(at any given )必要とされるレジスタの数を定義する。レジスタファイル制御部53は、スタック型レジスタファイルにおけるバンクをアクティブにし、非アクティブにする際に使用するための、割り付けられ、割付けが解除されたレジスタの数に関するこの情報を電力制御部37に供給する。レジスタファイル制御部53はまた、以下で論考されるようにポインタTOSとある数値AおよびDも供給する。
レジスタ保存エンジン(RSE)55は、データを、スタックファイル25中のレジスタから、およびスタックファイル125中のレジスタに、必要に応じてメモリ中に保有された補助記憶部に、自動的に保存し、復元する(図12Aおよび12B参照)。一般に、RSE55のオペレーションは、通常のプロセッサにおけるのと同じである。しかしながら、レジスタファイル制御部53と同様に、RSEは、この場合には、レジスタ保存エンジン保存/復元ポイント(Register Save Engine Save/Restore Point)(RSEP)の位置を設定するためにアクティブなレジスタの数に対応するモジュロ数(modulo number)の形でカウントする。したがって、電力制御部37は、電力がオンされるバンクの数を指し示す信号BON.RSEをRSE55に対して供給し、RSE55は、それに応じてそのオペレーションを調整する。BON.RSC信号およびBON.RSE信号は、類似しているが、すべての場合において厳密に同じではないこともあり得る。
固定される順序付けアルゴリズムの説明される実施形態においては、各バンク27〜33は、個々の制御下にあり、その結果、各バンクは、スタック25を構成する他のバンクとは独立にアクティブにされ、非アクティブにされることができる。次いで、プロセッサは、必要とされるときだけバンクをアクティブにし、必要とされないバンクの電力を落とすことにより、物理スタックまたはファイル25のレジスタによって消費される電力に関して低電力モードで動作することができる。
図2の例は、固定された順序付け技法を利用している。スタック25は、多くの場合、電力がONにされたただ1つのバンク27のレジスタを用いて実行され、そして、制御部37は、もし複数のバンクのレジスタが単一の割付けによって必要とされる場合に、追加のレジスタバンクに電力を投入するだけである。
次の定義、すなわち
・Rは、各バンクにおけるレジスタの数であるものとする。
・Bは、0からB−1までの番号が付けられた総バンク数であるものとする。
oしたがって、全部でB*R個のスタック型レジスタが存在する。
・B_Onは、電力がオンにされたバンクの数であるものとする。
・Aは、割付けについて要求されるレジスタの数であるものとする。
・Dは、割付け解除について要求されるレジスタの数であるものとする。
・TOSは、レジスタスタックトップの位置であるものとする。
・RSEPは、レジスタ保存エンジン保存/復元ポイントの位置であるものとする。
を使用し、固定された順序付けアルゴリズムを多少詳細に考慮することは有用である。
本例のために使用される命名法(nomenclature)においては、B×Rは、96、すなわちスタック型レジスタファイルにおける物理的折返しのために使用可能なレジスタの総数であろう。本例のアーキテクチャは、実際には、再マッピングのないグローバルとして(as global)レジスタR0〜R31を指定し、そして、レジスタR32〜R127だけが、再マッピングされ、電力制御アルゴリズムに従うことができる。ここでは考察のために、すべての128個のレジスタが再マッピングされることができ(B×R=128)、そして、電力制御に従うと仮定された。
固定された順序付けの例においては、バンクは、常に厳密に昇順で、すなわち、最初にバンク0、次いでバンク1、等、バンクB−1まで、電力がオンにされる。4つのバンクの例においては、これは、バンク0(27)が最初に電力供給され(事実上常にON)、バンク1(29)が次に電力供給され、バンク2(32)が次に電力供給され、そしてバンク3(33)が最後に電力供給される(96個のレジスタよりも多くが必要とされるときのみON)ことを意味する。逆に、バンクは、常に厳密に降順で、すなわち最初にバンクB−1、次いでバンクB−2、等、バンク1まで、電力がオフにされる。4つのバンクの例においては、これは、バンク3(31)が最初に電力遮断され(powered down)、バンク2(31)が電力遮断され、次いでバンク1(29)が電力遮断されることを意味する。バンク0(27)は、一般的に、プロセッサの最小限の低電力オペレーション中にONのままである。この第1のモードにおいては、A≧B_On*Rであるときのみに、更なるバンクが、電力がオンにされる。TOS>RSEPであるときのみに、バンクは、電力がオフにされる。
この動作モードについての例示のアルゴリズムは、次のようにすることができる。
1.バンク0(27)(R個のレジスタ)のみが電力がオンにされた状態で開始する。
2.レジスタ割付け要求(ALLOC命令に起因)があるとすぐに、
a.(A<B_On*R)である場合に、現在電力供給されるレジスタバンクをB_On*Rのサイズの折り返すレジスタファイルとして使用する。これは、RSB、TOS、およびRSEPについてのすべての演算が、モジュロ−(B_On*R)演算に従うことを意味する。
b.(A≧B_On*R)である場合、その場合には
i.B_On_previous=B_Onとする。
ii.(A≧B_On*R)の間、別のバンク(B_On++)の電力をオンにする。
iii.(TOS+=A)mod(B_On*R)を増分する。
iv.(RSEP>TOS)の間、それが物理レジスタ0へと折り返すまで、RSEPポイントを伴うモジュロ−((B_On−1)*R,以前の値)演算を使用する。これは、TOSとPR0の間に現在割り付けられるレジスタが正しく保存されることを保証する。
v.ステップ2へと進む。
3.レジスタ割付け解除(コールリターンなどに起因)があるとすぐに、
a.((TOS−D)mod(B_On*R)>RSE保存/復元ポイント)である場合に、
i.((TOS−D)mod(B_On*R)<(B_on−1*R))の間、別のバンク(B_On−−)の電力をオフにする。
ii.(TOS_=D)mod(B_On*R)を減分する。
iii.ステップ2へと進む。
ONは、RSE.N_STACKED_PHYSに対応し、これは、スタック型レジスタの数、一般的に96を表す。しかしながら、図2の実施形態を使用すると、この値は、アクティブであるバンクの数に応じて変化する。
RSB値は、RSE.BOF(RSEのファイルのボトム)に対応する。TOS値は、RSE.BOF+CFM.solに対応する。その場合にはRSEP値は、RSE.LoadRegに対応し、これは、スタック型物理レジスタの数に対応するモジュロの中にロードされるべき次のレジスタよりも1大きい(one greater than)物理レジスタ番号(physical register number)である。
図5〜7は、この第1の例示の順序付けアルゴリズムによるスタックのオペレーションにおけるいくつかの例示の状態を表す。図5に示される状態においては、現行の割付けは、32個よりも少ないレジスタを利用している。RSE保存/復元ポイント(RSEP)は、レジスタPR0の下(below)にあり、すなわち物理レジスタスタック25のボトムにある。スタックトップ(TOS)ポインタは、バンク0(27)中のより高位のレジスタ(higher registers)のうちの1つを特定する。RSEは、スタックトップポイントの上(above)のレジスタ上で、折り返して、この場合は、レジスタPR0の下の、RSE保存/復元ポイントに行き、スピルオペレーションおよびフィルオペレーションを実行する。割り付けられたアクティブなレジスタは、PR0からTOSポインタの下のレジスタまでの範囲内のレジスタである。この状態において、電力制御部37は、1つのバンク、バンク0(27)のみに電力供給するためにON信号を供給する。電力制御部37は、OFF信号を他のバンク29〜33へと供給し、その結果、これらのバンクは、非アクティブになる。32個以下のレジスタが割り付けられて動作する間に、システムは、RSEを介してスピルオペレーションおよびフィルオペレーションを円滑に進めるために、TOSおよびRSE保存/復元ポイントが移動することになる以外は、図5の状態と同様な状態にとどまることになる。これらのポインタの折返しは、バンク0内にとどまることになる。そのようにする際に、これらのポインタを移動させるために使用される制御部53およびRSE55のカウンティングオペレーション(counting operation)は、32、アクティブバンク0(27)におけるレジスタの数にリンクされたカウンティングモジュロ(counting modulo)を利用することになる。
図5に示される特定の状態は、32個よりも多くのレジスタが必要とされるときに、2つのバンク中のレジスタを使用する状態まで遷移するために都合がよい。しかしながら、もしバンク0における処理が、バンク0内での折返しのために物理的に保存/復元ポイントよりも下にあるスタックトップ(TOS)ポインタを有する場合は、プロセッサは、次のより高位のバンクをアクティブにする前に、保存/復元ポイントが、折り返して、物理的にTOSポインタの下に再び行くまで(TOS>RSEPまで)、次のバンク、バンク1のアクティブ化を遅延させる必要がある。この遅延は、その遷移の前に物理的に保存/復元ポイントの上にあるバンク0におけるレジスタ内のデータが、より多くのレジスタを必要とするプロセスについての早すぎる割付けのために失われないことを、保証する。
図6に示される例においては、現行の割付けは、32個よりも多いが64個よりも少ないレジスタを利用している。この例においては、電力制御部37は、バンク0(27)とバンク1(29)の両方をアクティブにするためにON信号を供給する。電力制御部37は、他の2つのバンク31および33に対してOFF信号を供給し、その結果、これらのバンクは非アクティブになる。図6は、RSE保存/復元ポイントが、レジスタPR0にある、すなわち、物理レジスタスタック25のボトムにある場合におけるそのような状態を示している。スタックトップ(TOS)ポインタは、バンク1(29)におけるより高位のレジスタのうちの1つを特定する。割り付けられたアクティブなレジスタは、PR0からTOSポインタの下のレジスタまでの範囲内におけるレジスタである。バンク1(29)における割り付けられていないアクティブなレジスタは、TOSポイントと、現在はレジスタPR0の下にあるRSE保存/復元ポイントとの間のレジスタである。RSEは、この例においてはレジスタPR0の下にあるRSE保存/復元ポイントへと折り返して、バンク1におけるスタックトップポイントの上のレジスタ上でスピルオペレーションおよびフィルオペレーションを実行する。
RSEエンジンによる折返し処理は、折返しカウンティングが、アクティブなバンク0および1の64個のレジスタだけに制限される以外は、完全な128レジスタのスタックを使用するときの処理に実質的に類似している。そのような処理は、図7に示されるような状態をもたらす。そこでは、現行の割付けは、32個よりも多いが64個よりも少ないレジスタを利用している。電力制御部37は、依然としてバンク0(27)とバンク1(29)の両方をアクティブにするためにON信号を供給し、電力制御部37は、依然として他の2つのバンク31および33に対してOFF信号を供給し、その結果、これらのバンクは、非アクティブになる。しかしながら、この状態においては、RSE保存/復元ポイントは、バンク1中における1つのレジスタにある、すなわち、PR32に、あるいはその上にある。その処理は、バンク0のレジスタ中へと折り返しており、それ故に、スタックトップ(TOS)ポインタは、バンク0におけるレジスタのうちの1つを、例えばレジスタPROなどを、特定する。
もちろん、その順序付けアルゴリズムは、3つのバンクのレジスタを使用して、また4つのすべてのバンクのレジスタを使用して同様な遷移をサポートする。1つのバンクだけがアクティブであった場合と同様に、制御部37が、さらに増大させられた割付けを満たすために次のバンクのレジスタをアクティブにする前に、ポインタは、折返し状態(図7においてと同様)からTOS>RSEPの場合の状態(図6においてと同様)へと遷移する必要がある。例えば、図7に示されるような状態から、3バンクまたは4バンクがアクティブな状態へと遷移する必要がある場合、以前のRSE保存/復元ポイント(図7に示される)からトップバンク1(29)におけるレジスタPR63までの範囲内のレジスタ中のデータが、メモリ中の補助記憶部に保存されていることを保証するためには、RSE処理が、バンク1(29)を介して保存/復元ポイントを上に移動させ、図6に示される状態と同様に、その場合にもレジスタバンク0(27)中のポイントまで折り返すことができるようにすることが必要である。TOS>RSEPについての要件は、3つのバンクから4つのバンクへの遷移についても同様に当てはまる。同様な制約条件を用いて、より多い数のアクティブバンク(higher numbers of active banks)へと、例えば、1つのバンクから3つまたは4つのバンクへと、あるいは2つのバンクから4つのバンクへと、直接に遷移することも可能である。
より少ない数のアクティブバンク(smaller number of active banks)へと減少する各遷移は、ポインタの適切な状態を待つ必要もある。とりわけ、レジスタのアクティブなスタックのボトムにおける保存/復元ポイントは、折り返されて、アクティブにとどまる1つ(または複数)のバンク内に存在する必要がある。スタックトップポインタは、保存/復元ポイントの上にあり、配置される必要がある、あるいは、アクティブにとどまる1つ(または複数)のバンク中のポイントへと安全に移動させられることができる。
ひとたび、割付けが、我々の例においてはバンク0からバンク1へと、バンク間の境界を横切ると、より多い数のバンクは、レジスタ割付けが、より少ない数のアクティブバンク(lower number of active banks)へと戻る遷移を可能とする状態に到達するまで、アクティブにとどまる。我々の例においては、そのような新しい割付け状態は、バンク1がアクティブである状態からバンク0だけがアクティブである状態へと戻る遷移を可能にするであろう。
例えば、RSE保存/復元ポイントとスタックトップポイントとが図7に示されるように配置されるときに、もし、32より小さい数へのレジスタの割付け解除が未決定(pending)である場合は、スタックトップポイントとRSE保存/復元ポイントとが、両方バンク0内に戻るまで、RSEによる処理を継続することが必要であり、そのあと、電力制御部37が、図5に示されるように、より低い状態に戻るために、他のバンク、バンク1をオフにすることができる。
コンパイラは、レジスタのその割付けを変更することができる。性能を最適化するように意図された設計では、コンパイラは、性能を向上させるためにより多くのレジスタを割り付けることができる。しかしながら、電力制御ファンクションがありながら、これは、より多くのバンクが電力をオンにされて省電力を低下させてしまう場合を、増大させることになる。別のプロセッサ設計においてか、または、1つのプロセッサがより低電力モードでコンパイルしているとき、あまり積極的でないレジスタ割付けは、性能を犠牲にして、より少ないレジスタを割り付けることになるであろう。しかしながら、そのようなオペレーションは、レジスタバンク電力制御によって得られる利点を増大させることになるであろう。
例においては、バンク中のレジスタの数は、実質的にレジスタ割付けをマッチングさせるために、いつバンクの電力をオンにし、オフにするかを決定するためのしきい値(thresholds)を定義する。以上の考察において、これらのしきい値は、バンク中のレジスタの数にマッチングしており、したがってバンクの境界に対応している。上記アルゴリズムに対する変形においては、バンクの電力をオンにする又は電力をオフにするトリガまたはしきい値は、時間に先立ってバンクへの電力をオンにすることを開始するために、また、それらの電力をオフにすることを遅延させるために、更なるしきい値オフセット(すなわち、A+T≧B_On*Rについての検査)を用いて変化させられることができる。これは、特に、電力オン/オフ時間をマスキングする(masking)ために役立つ可能性がある。
上記で考察された例においては、バンク0(27)は、常にONである。当業者は、そのような実施形態では、電力制御部37によるそのバンクの動作状態のゲート制御(gated control)は、必要ではないことを認識するであろう。したがって、他のバンクの動作ステータスのアクティブ化および非アクティブ化に対する制御を制限することが可能になるが、他のバンクを制御するための方法またはアルゴリズムは、基本的には上記のように動作することになる。特に簡単な実施形態においては、スタックは、一方のバンクが常にONであり、他方のバンクが固定された順序付けアルゴリズムに従ってON/OFF制御される、2つのバンクのみに分割されることができる。
スタック型レジスタファイルをバンクに分割すること、そして、バンクのアクティブ化を制御することによって、プロセッサは、ほとんどの時間、より少ないレジスタへの電力を必要とする。
様々な電力制御アルゴリズムが、バンクをアクティブにし、非アクティブにするために使用されることができる。上記の例は、固定された順序付けの例を使用した。上記の例において説明された固定されたアルゴリズムの特定の特徴は、それがかなり少ない頻度でバンクの電力をオン/オフすることである。新しいバンクは、ファンクションが、すでに電力供給されているレジスタの数よりも多い同時のレジスタ割付けを必要とするときに、電力がオンにされるだけである。同様に、バンクは、特定の条件が満たされるときだけに、電力がオフにされる。これは、バンクの電力がオン/オフされる頻度を制限するために、それを適したものにする。今から、レジスタバンクの電力オン/オフオペレーションの可変な順序付けを使用した一例を考察する。
以下の考察から理解されるように、可変な順序付けアルゴリズムでは、レジスタ割付けが、全体的にアクティブなスタックにおける方法に類似した方法で(例えば、図12Aおよび12Bにおけるように)、全体のスタックを介してループする(loops)ので、レジスタ制御部およびRSEのモジュロカウンティングを修正する必要はない。第2の例示のアルゴリズムは、レジスタファイルの部分の電力をより頻繁にオン/オフするが、これは、その瞬間に実際に必要とされるレジスタに対して電力供給されるレジスタのより近い可能性のある適合性(fit)をもたらす。固定のあらかじめ決定された順序でレジスタバンクの電力をオンにすること及び電力をオフにすることの代わりに、第2のアルゴリズムによって実施される順序付けは、プロセッサのコードの動作(behavior)に完全に依存する。
図8は、可変な順序付けアルゴリズムを使用して電力制御を実施するプロセッサの一部分の機能ブロック図である。レジスタバンクのレジスタオペレーションおよび電力制御に関係する、プロセッサのエレメントが示される。当業者は、プロセッサが、一般的に、便宜上示されていない多くの他のエレメントを含んでいることを、認識するであろう。もちろん、これらのエレメントのうちの一部は、スタックにおけるレジスタに対してデータを供給し、あるいはレジスタからのデータを利用することができるが、それらのエレメントは、例示のON/OFF制御アルゴリズムに直接的には関与していない。
この第2の例の目的のために、物理レジスタスタック125が、128個のレジスタPR0からPR127までを含んでおり、そして、電力制御の目的のため4つのバンクに分割されている、ということが、この場合にも仮定される。考察の目的のため、すべてのレジスタは折返しに従い、そして、すべてのバンクは電力制御に従う。この場合にも同様に、バンク0(127)はレジスタPR0からPR31を含み、バンク1(129)はレジスタPR32からPR63を含んでいる。次に、バンク2(131)はレジスタPR64からPR95を含み、バンク3(133)はレジスタPR96からPR127を含んでいる。
接続および他のエレメントは、便宜上示されていないが、スタック125における個々のレジスタは、プロセッサおよび/または別個のストレージの他のエレメントからデータを受け取り、プロセッサおよび/または別個のストレージの他のエレメントにデータを供給する。例えば、レジスタは、最初にメモリからのデータを用いてロードされることができ、このデータは、プロセッサチップ上、または別個のチップ上に存在することができる。レジスタは、処理するためのコア処理エレメントに対してそのデータを供給し、結果を受け取り記憶する。データは、レジスタが一時的に再割り付けされるときに補助記憶部に/から転送され、またデータは、特定のオペレーションが完了するときに、メモリに対して逆転送されることができる。一般に、物理レジスタスタックファイル125におけるレジスタのオペレーションは、よく知られているレジスタスタックファイルのオペレーションと同じであり、そのようなオペレーションが、本教示の1つ(または複数)の電力制御アルゴリズムに影響を及ぼし、あるいは電力制御アルゴリズムによって影響を及ぼされる場合を除いて、ここにおいては詳細に論じられてはいない。
スタック125のバンク127〜133のアクティブなステータスは、様々な、知られている方法のうちのどれにおいても、電力制御部137からの選択信号に応じて制御されることができる。一般的な考察の目的のために、図8は、レジスタ駆動のために必要とされる信号(SRD)と、電力制御部137からのバンク電力制御信号に応じてそのSRD信号をバンクに結合するための汎用の(generic)ゲート回路とを示している。例えば、ゲート141は、制御部137からの電力制御信号に応じてレジスタ駆動信号SRDをバンク0(127)に対して選択的に供給し、ゲート143は、制御部137からの別の電力制御信号に応じてレジスタ駆動信号SRDをバンク1(129)に対して選択的に供給する。同様に、ゲート145は、制御部137からの電力制御信号に応じてレジスタ駆動信号SRDをバンク2(131)に対して選択的に供給し、ゲート147は、制御部137からの別の電力制御信号に応じてレジスタ駆動信号SRDをバンク3(133)に対して選択的に供給する。
ゲートは、制御部137からの適切な選択信号に応じて、適切なタイプの信号をレジスタバンクに対して供給するように構成されたロジックゲート、スイッチ、それらの組合せ、または他の任意の回路であってよい。前の例と同様に、個別のレジスタバンクの実際のアクティブ化は、(図3中におけるような)クロックゲーティング(clock gating)、(図4中におけるような)電源電圧をゲートする回路、グラウンドへの接続をゲートする回路、または他の手段、を使用することができる。
前の例におけるように、電力制御部137は、有限状態機械であるが、状態機械137は、異なる1組の入力に応答し、可変な順序付けアルゴリズムに従ってバンクのアクティブ化および非アクティブ化を制御する。状態機械137は、その電力制御アルゴリズムに従ってレジスタスタックファイル25のバンク127〜133をアクティブにするためにゲート141〜147に対してそれらの信号を選択的に出力する。この場合にも、制御部137の状態機械は、スタック125と対話し、またはそのスタックを利用するプロセッサのいくつかのエレメントからの信号に応答する。それらの接続はレジスタバンクのアクティブ化/非アクティブ化に関連しているので、電力制御部137に対する接続は示されているが、スタック125への/からの他のプロセッサエレメントの通常の接続は、説明を簡単にするためにこの図から省略されている。
第2の例においては、電力制御部137は高レベルのプロセッサ制御エレメント151に対応する。プロセッサ制御部151は、電力制御部137によって使用される電力設定、プリファランス、しきい値、などを変更するために、ソフトウェア制御されたか又は内部制御された、様々な制御レジスタを使用することができる。
電力制御部137はまた、レジスタファイル制御エレメント153からのいくつかの信号にも応答する。この場合にも、レジスタファイル制御部153は、例えば、様々なプロセスによって使用されるファンクションに対してこれらのレジスタを命名/再命名することにより、スタック型レジスタファイル125のレジスタの割付けおよびオペレーションを正常に制御するエレメントである。制御部153は、ファイルのスタックトップ(TOS)ポイントを設定し、レジスタスタックベース(RSB)レジスタを特定し、スタック型レジスタファイルの折返しおよび/または他の管理のために使用される他の任意のポインタを生成するために、アクティブなレジスタの数に対応するモジュラスを使用する。この例においては、制御部153は、あたかも全128個のレジスタが継続してアクティブであるかのようによく、モジュロ128を使用し続ける。
ALLOC命令は、いくつかのレジスタをある与えられたプロセスに割り付ける明示的な命令(コール)である。割付け解除は、もはや必要とされないときに、そのプロセスからのレジスタの回復を実質的に指し示すリターンまたは応答である。これらの命令は、それ故に与えられた任意の時刻において必要とされるレジスタの数を定義する。レジスタファイル制御部53は、スタック型レジスタファイルにおけるバンクをアクティブにし、非アクティブにする際に使用するための、割り付けられ、割付けが解除された、レジスタの数に関するこの情報を電力制御部37に供給する。レジスタファイル制御部53はまた、以下で考察されるようにポインタTOSとある数値AおよびDも供給する。
レジスタ保存エンジン(RSE)155は、データを、スタックファイル125中のレジスタから、およびスタックファイル125中のレジスタに、必要に応じてメモリ中に保有された補助記憶部(図示されず)に、自動的に保存し、復元する。RSE155のオペレーションは、図12Aおよび12Bによって表されるオペレーションにおけるのと実質的に同じである。レジスタ保存エンジン保存/復元ポイント(RSEP)の位置を設定するために、RSE155は、基本的に、レジスタのすべてが全時間にわたって電力供給されるプロセッサにおけるように、この場合128である、アクティブレジスタの数に対応するモジュロ数でカウントする。
各バンク127〜133は、個々の電力制御の下にあり、その結果、各バンクは、スタック125を構成する他のバンクとは独立に電力が投入され/電力が落とされることができる。次いで、プロセッサは、TOSとRSEPとの間の範囲内にあるレジスタを有するバンクをアクティブにし、他のバンクを非アクティブにすることにより、物理スタックまたはファイル125のレジスタによって消費される電力に関して低電力モードで動作することができる。
図8の例は、同時にアクティブなバンクの数をレジスタ割付けに動的にマッチングさせる順序付けアルゴリズムを利用している。このモードにおいては、電力供給されたバンクの数は、現行のスタックフレームのサイズ(またはフレームの設定された数)によってのみ決定され、レジスタスタックトップ(register stack top)の位置が、どのバンクが電力供給されるかを決定するので、バンクは、より高い頻度で電源がオン/オフされる可能性が高い。
以下の定義、すなわち
・Rは、各バンクにおけるレジスタの数であるものとする。
・Bは、0からB−1までの番号が付けられた総バンク数であるものとする。
oしたがって、全部でB*R個のスタック型レジスタが存在する。
・TOSは、レジスタスタックトップの位置であるものとする。
・RSBは、現行フレームのボトムの位置であるものとする。
・RSEPは、レジスタ保存エンジン保存/復元ポイントの位置であるものとする。
・ポインタは、それがバンクXにおける1つのレジスタを指すときはいつでも、バンクXを指すといわれる。
・Bank(ポインタ)は、そのポインタが指すバンクの番号であるものとする。
・(X,Z)は、XとZとの間のバンクであるものとする。モジュロB演算を用いてXを増分することにより、我々がZよりも前にYに到達する場合に、バンクYは、バンクXとバンクZとの間にあるといわれる。
を使用して、どちらかというとより詳細に、固定された順序付けアルゴリズムを考慮することが助けになり得る。
(X,Z]が、Zを含んでいる、XとZとの間のバンクを意味することを、含めて示すブラケット表記法(bracket notation)を我々は使用することができることに、注意が必要である。この可変な順序付けにおいては、このモードのバンクは、どのような厳密な順序でも(in any strict order)電力はオン/オフされないが、電力供給されるバンクは常に隣接している(バンクB−1はバンク0に隣接しているといわれる)。バンクは、TOSまたはRSEPがバンク境界を横切るときにはいつでも電力がオン/オフされる。しきい値は、バンク境界に対応するが、後で考察されるように、トリガポイントは、バンク中におけるレジスタの数に関連する境界から、いくぶんオフセットされることができる。TOS、RSB、およびRSEPの折返しは、バンクN−1からバンク0に対して(我々のN=4の例においては、バンク3からバンク0に対して)起こるだけである;これは、モジュロB*R演算が、TOS、RSB、およびRSEPのポインタ値を増分/減分する(increment/decrement)ために常に使用されていることを意味する。
この動作モードについてのアルゴリズムは、以下のとおりである。
1.任意のバンクIの電力がオンにされた状態で開始する。RSB、RSEP、およびTOSが、バンクIを確実に指すようにする。
2.TOSが、バンクIからバンクJを指すように(割付けに起因して)増分されようとしているときはいつでも、(Jを含めて)IとJとの間の電力供給されていないどのバンクの電力もオンにする。((I,J]におけるバンクの電力をオンにする。)
3.TOSが、バンクJからバンクI、およびJ!=I、ならびにBank(RSEP)!=Jを指すように(割付け解除に起因して)減分されようとしているときはいつでも、(Jを含めて)IとJとの間のバンクの電力をオフにする。((I,J]におけるバンクの電力をオフにする。)
4.RSEPが、バンクIからバンクJ、およびI!=J、ならびにBank(TOS)!=Iを指すように(レジスタ保存に起因して)増分されようとしているときはいつでも、(Iを含めて)IとJとの間のバンクの電力をオフにする。(バンク[I,J)の電力をオフにする。)
5.RSEPが、バンクJからバンクIを指すように(レジスタ復元に起因して)減分されようとしているときはいつでも、(Iを含めて)IとJとの間の電力供給されていない任意のバンクの電力をオンにする。(バンク[I,J)の電力をオンにする。)
6.電力がオンにされなければならないバンクの数を最小にするために、レジスタをバックグラウンドにおける補助記憶部へと積極的に保存する。
この方法は、任意の数のバンクおよびレジスタ/バンクを用いてトランスペアレントに(transparently)機能する。
図9〜11は、この第2の順序付けアルゴリズムによる、スタックのオペレーションにおけるいくつかの例示の状態を表している。例えば、図9は、アルゴリズムが、ただ1つのバンクの電力がオンにされた状態で動作している状態を表している。バンク0(127)は、電力がオンにされるべきバンク1(129)またはより高位のバンクのうちのどれかのために、電力がオンにされる必要はない。現行の割付けは、32個よりも少ないレジスタを利用している。図示された状態においては、割り付けられたレジスタは、バンク1(129)中にあるが、同様な状態は、他の3つのレジスタバンクのうちのいずれの1つの内部に割り付けられた全レジスタを用いても可能である。図示される状態において、RSE保存/復元ポイント(RSEP)は、レジスタPR32にまたはその上にあり、そして、スタックトップ(TOS)ポインタは、バンク1(27)中のより高位のレジスタのうちの1つ、この場合にはPR63、を特定する。この状態において、電力制御部137は、ただ1つのバンク、バンク1(127)を、アクティブにしあるいはイネーブルにするためにON信号を供給しかつ/または保持し、そして、他のバンク127、131および133に対してOFF信号を供給する。アクティブな、あるいは割り付けられたレジスタは、RSE保存/復元ポイント(RSEP)とスタックトップ(TOS)ポインタとの間の領域内にあり、現在は折返しを有さない。RSEは、RSE保存/復元ポイントの下で、スピルオペレーションおよびフィルオペレーションを実行する。
基本的には、境界でのレジスタ数は、トリガポイントまたはしきい値として機能する。TOSポインタがしきい値に到達し、またはしきい値を超えるときに、電力制御部137は、次のバンクをアクティブにする。RSEPポインタがしきい値を通過するときに、電力制御部は、より低位のバンクを非アクティブにすることができる。いくつかの実施形態においては、しきい値は、実際の境界からオフセットされることができる。
図9に示される状態のような、第1の単一バンクのアクティブな状態を仮定すると、スタックトップポインタが、次のより高位なバンク境界、例えば図9および10の例におけるバンク1(129)中のレジスタPR63とバンク2(131)中のレジスタPR64との間の境界を、横切るときに、2つのバンクのアクティブな状態への遷移が起こる。図10は、アルゴリズムが、2つのバンクの電力がオンにされて動作している状態を表している。その例においては、RSE保存/復元ポイントは、依然としてレジスタPR32に、またはその上にある。しかしながら、スタックトップ(TOS)ポインタは、上に移動し、バンク境界を横切ってバンク2(131)中のレジスタへと入っていく。バンク2およびバンク1は両方共、RSEPからTOSまでの割り付けられた範囲内に1つまたは複数のレジスタを有している。他のバンクは有していない。
この状態への遷移を予想して、電力制御部137は、バンク1(129)をONに保ちながら、バンク2(131)をアクティブにするためにON信号を印加している。電力制御部137は、この状態の例においては他の2つのバンク127および133に対してOFF信号を供給し続け、その結果、これらのバンクは、非アクティブである。スタックトップが上に移動し、(バンク0中の)スタックのボトムにあるレジスタへと折り返すときに、追加のバンクに電力を供給するために、同様な技法が使用される。RSE保存/復元ポイントが、スタックを介して上に移動し、スタックのボトムへと折り返すときに、レジスタバンクは、同様にして電力が落とされる。
例においては、遷移は、1つのアクティブなバンクから2つのアクティブなバンクへと進み、また1つのアクティブなバンクへと戻っている。レジスタの割付けおよび関連するポインタが移動するときに、そして、より多くの数のレジスタの割付けをサポートするためにより多くのバンクがアクティブにされるときに、類似した遷移、すなわち、3つのアクティブバンクのレジスタを使用する状態への及びからの遷移、また、すべての4つのバンクのレジスタを使用する状態への及びからの遷移、が起こる。
図11は、2つのバンクのアクティブな状態を表している、しかしながら、この状態においては、そのアルゴリズムは、電力がオンにされた2つのバンクと折り返されたスタックトップ(wrapped Top-of-Stack)とを動作させている。RSE保存/復元ポイント(RSEP)は、バンク3(133)中のPR96より上のレジスタを特定し、そして、スタックトップ(TOS)ポインタは、バンク0(127)中のPR0より上のレジスタを特定する。この状態においては、電力制御部137は、バンク3(133)をONに保ちながらバンク0(127)をアクティブにするためにON信号を印加している。電力制御部137は、この状態の例においては、他の2つのバンク129および131に対してOFF信号を供給し、その結果、これらのバンクは、非アクティブである。
上記の可変な順序付けアルゴリズムに対する変形においては、バンクの電力をオンにするあるいは電力をオフにするトリガは、時間の前にバンクの電力をオンにすることを開始するために、そしてそれらの電力をオフにすることを遅延させるために、追加のしきい値オフセットを用いて変化させられることができる。例えば、TOS+Tが、レジスタ割付け中にバンクの電力をオンにすべきかどうかを決定するためにTOSの代わりに検査されることができる;そして、類似したしきい値が、他のトリガのために使用されることができる。これは、バンクの電源をオン/オフにする時間をマスキングするためにとりわけ助けになり得る。
また、バンクのアクティブ化/非アクティブ化をトリガするために使用されるしきい値、およびRSEエンジンの積極性は、様々なファクタ、例えば、電力消費および熱、プロセッサの性能、バンクアクティブ化/非アクティブ化の頻度など、に応じて、実行時に変更させられることもできる。これは、望どおりにバンクアクティブ化の頻度をチューニングするために助けになり得る。
第1の例と同様に、レジスタバンク電力制御の可変な順序付けにより、プロセッサは、その時間のほとんど、より少ないレジスタに電力供給することができるようになる。
可変な順序付けアルゴリズムの特有の特徴は、それが電力供給されたレジスタの数を現行のレジスタの使用に対して可能な限り近くマッチングさせる試みにおいて、かなり頻繁にバンクの電力をオン/オフさせることである。これは、バンクの電力をオン/オフさせることがかなりのコストをもたらさないときに、また電力供給されたバンクの数を最小にすることが重要であるときに、それを適したものにする。それはまた、レジスタスタックを管理するために使用されるポインタを調整するために使用される演算を変更もしない。
上記は、最良の形態(best mode)および/または他の例であると考えられるものについて説明したが、様々な修正がその中で行われることができること、ここにおいて開示される主題は様々な形態および例において実施されることができること、そして、本教示は多くのアプリケーション(application)において適用されることができるがそれらの一部だけがここにおいて説明されていること、が理解される。本教示の真の範囲内に属するありとあらゆるアプリケーション、修正、および変形を請求することが、添付の特許請求の範囲によって意図されている。
スタック型レジスタファイルから形成される、バンクのアクティブ化の選択的制御を説明する際に有用な論理図である。 スタック型レジスタファイルのバンクをアクティブにし、非アクティブにするために固定された順序付けを利用する電力制御アルゴリズムの第1の例を実施するための、スタック型レジスタファイルのバンクおよび電力制御部と、その制御部と対話するある種のエレメントを含む、プロセッサの一部分の機能ブロック図である。 電力制御部に応じて、クロック信号を制御することにより、レジスタバンクをアクティブにし、非アクティブにするためのゲート回路の第1のグラフィックな説明図である。 電力制御部に応じて、電力を制御することにより、レジスタバンクをアクティブにし、非アクティブにするためのゲート回路の第2のグラフィックな説明図である。 第1の電力制御アルゴリズムによるオペレーション中における、3つの異なる状態のうちの1つにおける図2のレジスタファイルと電力制御部の図である。 第1の電力制御アルゴリズムによるオペレーション中における、3つの異なる状態のうちの1つにおける図2のレジスタファイルと電力制御部の図である。 第1の電力制御アルゴリズムによるオペレーション中における、3つの異なる状態のうちの1つにおける図2のレジスタファイルと電力制御部の図である。 スタック型レジスタファイルのバンクをアクティブにし、非アクティブにするために可変の順序付けスキームを利用する電力制御アルゴリズムの第2の例を実施するための、スタック型レジスタファイルのバンクおよび電力制御部と、その制御部と対話するある種のエレメントを含む、プロセッサの一部分の機能ブロック図である。 第2の電力制御アルゴリズムによるオペレーション中における、3つの異なる状態のうちの1つにおける図8のレジスタファイルと電力制御部の図である。 第2の電力制御アルゴリズムによるオペレーション中における、3つの異なる状態のうちの1つにおける図8のレジスタファイルと電力制御部の図である。 第2の電力制御アルゴリズムによるオペレーション中における、3つの異なる状態のうちの1つにおける図8のレジスタファイルと電力制御部の図である。 レジスタ保存エンジン(RSE)および補助記憶部を有するスタック型レジスタファイルの一般的なオペレーションを説明する際に有用な論理図である。 スタック型レジスタファイルにおけるレジスタ割付けを折り返す一例の一般的なオペレーションを説明する際に有用な論理図である。

Claims (25)

  1. プロセッサにおいて使用するためのスタック型レジスタシステムであって、
    複数のレジスタバンクを備えるレジスタのスタックと、なお各レジスタバンクは少なくとも1つのレジスタを備える;
    前記スタック内のレジスタの割付けに関する情報に応じて、前記レジスタバンクのうちの1つまたは複数のレジスタバンクのON/OFFステータスを選択的に制御するコントローラと;
    を備え、
    前記コントローラは、レジスタの数を増加させる少なくとも1つの割付けを満たすため、ONである前記バンクの数を増加させるために、また減少させられた数のレジスタの少なくとも1つの割付けに応じてONである前記のバンクの数を減少させるために、前記スタック内に割り付けられたレジスタの数に応答する、
    システム。
  2. 前記コントローラに応じて、前記レジスタバンクのうちの各々がONである時を、また前記レジスタバンクのうちの各々がOFFである時を制御するために、電源端子に前記バンクを選択的に接続し、前記電源端子から前記バンクを選択的に切り離すための回路を、さらに備える請求項1に記載のシステム。
  3. 前記レジスタバンクのうちの各々がONである時を制御するために前記コントローラに応じて、システムクロック信号を前記バンクに選択的に供給するためのゲート回路を、さらに備える請求項1に記載のシステム。
  4. 前記バンクのうちの第1のバンクは複数のレジスタを備えており、
    前記第1のバンクにおける前記のレジスタの数に対してあらかじめ決定された関係を有するしきい値以下のレジスタの数を必要とする、前記割付けのすべてに対し、前記第1のバンクのみがONであり、
    前記コントローラは、前記のレジスタの数を前記しきい値よりも多いレジスタの数まで増加させる割付けに応じて、前記バンクのうちの次に続くバンクをONにする、
    請求項1に記載のシステム。
  5. 前記バンクのうちの前記次に続くバンクがONであるときに、前記コントローラは、前記のレジスタの数を、前記第1のバンクにおける前記のレジスタの数に対してあらかじめ決定された関係を有する別のしきい値以下のレジスタの数まで減少させる次の割付けに応じて、前記バンクのうちの前記次に続くバンクをOFFにする、請求項4に記載のシステム。
  6. 前記しきい値のうちの少なくとも1つは、前記第1のバンクにおける前記のレジスタの数に等しい、請求項5に記載のシステム。
  7. 前記しきい値のうちの少なくとも1つは、前記第1のバンクにおける前記のレジスタの数からのあらかじめ決定されたオフセットを有する、請求項5に記載のシステム。
  8. レジスタの前記割付けは、レジスタの前記スタック内のスタックトップポイントを示し、前記スタックトップポイントが、前記バンク中へと連続的に移動するときに、前記コントローラは、前記レジスタのバンクを順次にONにする、請求項1に記載のシステム。
  9. 前記レジスタを使用する前記プロセッサのオペレーションは、保存/復元ポイントを特定し、前記保存/復元ポイントが、前記バンクから外に連続的に移動するときに、前記コントローラは、前記レジスタのバンクを順次にOFFにする、請求項7に記載のシステム。
  10. 前記バンクのうちの少なくとも1つは、少なくとも32個のレジスタを備える、請求項1に記載のシステム。
  11. レジスタの前記スタックは、少なくとも4つの前記レジスタバンクを備え、前記4つのレジスタバンクのうちの各々は、少なくとも32個のレジスタを備える、請求項1に記載のシステム。
  12. プロセッサにおいて使用するためのスタック型レジスタシステムであって、
    第1の数のレジスタを備える第1のレジスタバンクと、
    第2の数のレジスタを備える第2のレジスタバンクと、
    を備えるレジスタのスタックと、
    前記プロセッサの処理オペレーションに対するレジスタの割付けおよび割付け解除に応じて、割り付けられたレジスタの数のファンクションとしてアクティブである前記バンクの数を動的に調整するために、前記の第1および第2のレジスタバンクのうちの少なくとも一方を選択的にアクティブにし、非アクティブにするための手段と、
    を備える、システム。
  13. 前記手段は、
    前記第1のレジスタの数に対してあらかじめ決定された関係を有するしきい値以下のレジスタの数を必要とする任意の割付けに応じて、前記第1のバンクだけをアクティブに保ち、
    前記しきい値よりも大きなレジスタの数を必要とする任意の割付けを満たすために、前記第1のバンクと前記第2のバンクの両方をアクティブであるように前記第2のバンクをイネーブルにする、請求項12に記載のシステム。
  14. 第3の数のレジスタを備える第3のレジスタバンクをさらに備えており、
    前記しきい値よりも大きく、前記第2のレジスタの数に対するあらかじめ決定された関係を有する別のしきい値以下のレジスタの数を必要とする任意の割付けを満たすために、前記第1のバンクと前記第2のバンクの両方はアクティブであるが、前記のレジスタの第3のバンクはアクティブでなく、
    他のしきい値よりも大きなレジスタの数を必要とする任意の割付けを満たすために、前記の第1、第2および第3のバンクはアクティブである、
    請求項13に記載のシステム。
  15. レジスタの前記割付けは、レジスタの前記スタック内のスタックトップポイントを示し、
    前記スタックトップポイントが、前記バンク中に連続的に移動するときに、前記手段は、前記のレジスタの第1および第2のバンクを順次にアクティブにする、
    請求項12に記載のシステム。
  16. 前記レジスタを使用した前記プロセッサのオペレーションは、レジスタ保存エンジンのスピルオペレーションについての保存/復元ポイントを特定し、
    前記保存/復元ポイントが、前記バンクから外に連続的に移動するときに、前記手段は、前記のレジスタの第1および第2のバンクを順次に非アクティブにする、
    請求項15に記載のシステム。
  17. 前記手段は、有限状態機械として実施される電力コントローラを備える、請求項12に記載のシステム。
  18. プロセッサにおいてスタック型レジスタファイルのレジスタを動作させるための電力制御方法であって、
    前記スタック型レジスタファイル中のレジスタの割付けに関する情報を受け取ることと、
    前記スタック型レジスタファイル中の第1のバンクを形成するレジスタの数に対するあらかじめ決定された関係を有するしきい値以下のレジスタの数の割付けに応じて、前記のレジスタの第1のバンクをアクティブに保持し、前記スタック型レジスタファイル中の第2のバンクを形成するレジスタを非アクティブに保持することと、
    前記しきい値よりも大きなレジスタの数の割付けに応じて、前記のレジスタの第1のバンクをアクティブに保持し、前記のレジスタの第2のバンクをアクティブにすることと、
    を備える方法。
  19. 前記第2のバンクがアクティブであるときに受け取られる前記第1のバンクを形成する前記のレジスタの数に対するあらかじめ決定された関係を有する別のしきい値以下のレジスタの数の割付けに応じて、前記のレジスタの第1のバンクをアクティブに保持し、前記のレジスタの第2のバンクを非アクティブにすること、をさらに備える請求項18に記載の方法。
  20. 前記しきい値のうちの少なくとも1つは、前記第1のバンクを形成する前記のレジスタの数に等しい、請求項19に記載の方法。
  21. 前記しきい値のうちの少なくとも1つは、前記第1のバンクを形成する前記のレジスタの数からオフセットされる、請求項19に記載の方法。
  22. プロセッサにおいて、スタック型レジスタファイルのレジスタを動作させるための電力制御方法であって、
    それぞれのスタックトップポインタおよびそれぞれの保存/復元ポイントを含んだ、前記スタック型レジスタファイルにおけるレジスタの割付けに関する情報を受け取ること、を備え、
    各割付けに応じて、
    前記それぞれの保存/復元ポイントから前記それぞれのスタックトップポインタまでの範囲内に少なくとも1つのレジスタを有する前記スタック型レジスタファイルの任意のバンクを、動作させ、
    一方、前記それぞれの保存/復元ポイントから前記それぞれのスタックトップポインタまでの前記範囲内に少なくとも1つのレジスタも有していない前記スタック型レジスタファイルのどのバンクも、非アクティブである、
    方法。
  23. 前記それぞれの保存/復元ポイントから前記それぞれのスタックトップポインタまでの前記範囲内に少なくとも1つのレジスタも有していない、前記スタック型レジスタファイルのどのバンクも、それへの電力をディスエーブルにすることあるいはそれからのプロセッサクロック信号を切り離すことにより、非アクティブに保たれる、請求項22に記載の方法。
  24. 前記割付けが前記それぞれのスタックトップポインタを前記スタック型レジスタファイルの前記バンクを介して移動させるときに、前記バンクの各々は、順に選択的にONにされ、
    前記割付けが、前記それぞれの保存/復元ポイントを前記スタック型レジスタファイルの前記バンクを介して移動させるときに、前記バンクの各々は、順に選択的にOFFにされる、
    請求項22に記載の方法。
  25. プロセッサにおいてスタック型レジスタファイルのレジスタを動作させるための電力制御方法であって、
    前記スタック型レジスタファイルにおけるレジスタの割付けに関する情報を受け取ることと、
    前記受け取られた割付けのレジスタ要件の数に対応して、前記スタック型レジスタファイル内のレジスタの複数のバンクのうちの1以上のオペレーションを選択的にアクティブにし、非アクティブにすることと、
    を備える方法。
JP2007557200A 2005-02-25 2006-02-24 スタック型レジスタファイルの一部分をシャットダウンすることによる電力低減 Active JP4801100B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/066,958 2005-02-25
US11/066,958 US7647481B2 (en) 2005-02-25 2005-02-25 Reducing power by shutting down portions of a stacked register file
PCT/US2006/006653 WO2006091846A2 (en) 2005-02-25 2006-02-24 Reducing power by shutting down portions of a stacked register file

Publications (2)

Publication Number Publication Date
JP2008539472A true JP2008539472A (ja) 2008-11-13
JP4801100B2 JP4801100B2 (ja) 2011-10-26

Family

ID=36695178

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007557200A Active JP4801100B2 (ja) 2005-02-25 2006-02-24 スタック型レジスタファイルの一部分をシャットダウンすることによる電力低減

Country Status (9)

Country Link
US (1) US7647481B2 (ja)
EP (1) EP1851618A2 (ja)
JP (1) JP4801100B2 (ja)
KR (1) KR100976107B1 (ja)
CN (1) CN101160559B (ja)
BR (1) BRPI0608556A2 (ja)
IL (1) IL185426A0 (ja)
TW (1) TW200707178A (ja)
WO (1) WO2006091846A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011018120A (ja) * 2009-07-07 2011-01-27 Nec Computertechno Ltd 情報処理装置及びベクトル型情報処理装置
JP2012043249A (ja) * 2010-08-20 2012-03-01 Fujitsu Ltd メモリの制御装置、及び制御方法
JP2013516006A (ja) * 2009-12-29 2013-05-09 エンパイア テクノロジー ディベロップメント エルエルシー エネルギー効率のよいマルチコアプロセッサのための共用メモリ

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1465069B1 (en) * 2003-04-01 2017-01-25 Sap Se Method and computer system for activation of source files
US7634621B1 (en) * 2004-07-13 2009-12-15 Nvidia Corporation Register file allocation
TW200746161A (en) * 2005-12-21 2007-12-16 Nxp Bv Power partitioning memory banks
US8429634B2 (en) * 2006-07-26 2013-04-23 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device, memory circuit, and machine language program generation device, and method for operating semiconductor device and memory circuit
US20080072015A1 (en) * 2006-09-18 2008-03-20 Julier Michael A Demand-based processing resource allocation
US20080109670A1 (en) * 2006-11-06 2008-05-08 Reino Johansson Power control for memories
US7900018B2 (en) * 2006-12-05 2011-03-01 Electronics And Telecommunications Research Institute Embedded system and page relocation method therefor
US8407715B2 (en) * 2007-04-30 2013-03-26 National Tsing Hua University Live range sensitive context switch procedure comprising a plurality of register sets associated with usage frequencies and live set information of tasks
US8082387B2 (en) 2007-10-29 2011-12-20 Micron Technology, Inc. Methods, systems, and devices for management of a memory system
US7509511B1 (en) 2008-05-06 2009-03-24 International Business Machines Corporation Reducing register file leakage current within a processor
DE102009019891B3 (de) * 2009-05-04 2010-11-25 Texas Instruments Deutschland Gmbh Mikrocontroller- oder Mikroprozessoreinheit und Verfahren zum Betreiben derselben
US9298460B2 (en) 2011-11-29 2016-03-29 International Business Machines Corporation Register management in an extended processor architecture
US9021280B1 (en) * 2013-03-12 2015-04-28 Pmc-Sierra Us, Inc. Power saving for FIFO buffer without performance degradation
US9256433B2 (en) * 2013-03-15 2016-02-09 Intel Corporation Systems and methods for move elimination with bypass multiple instantiation table
KR20140126190A (ko) * 2013-04-22 2014-10-30 삼성전자주식회사 프로세서의 긴 라우팅 처리를 지원하는 메모리 장치, 그 메모리 장치를 이용한 스케줄링 장치 및 방법
US10339624B2 (en) 2014-12-22 2019-07-02 Intel Corporation Reversed polish notation processing elements
US10372500B1 (en) 2016-02-17 2019-08-06 Apple Inc. Register allocation system
MA44821A (fr) * 2016-02-27 2019-01-02 Kinzinger Automation Gmbh Procédé d'allocation d'une pile de registres virtuels dans une machine à pile
US10403351B1 (en) 2018-02-22 2019-09-03 Advanced Micro Devices, Inc. Save and restore scoreboard
US20230068637A1 (en) * 2021-09-01 2023-03-02 International Business Machines Corporation Routing instruction results to a register block of a subdivided register file based on register block utilization rate

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281897A (ja) * 1994-04-06 1995-10-27 Hewlett Packard Co <Hp> レジスタ割当て方法及びレジスタファイルポートアクセス装置
JPH10340129A (ja) * 1996-12-27 1998-12-22 Cirrus Logic Inc 電子システムにおける電力使用量を制御する回路および方法
WO2004051450A2 (en) * 2002-12-04 2004-06-17 Koninklijke Philips Electronics N.V. Software-based control of microprocessor power dissipation
JP2004334296A (ja) * 2003-04-30 2004-11-25 Kyushu Inst Of Technology 電力制御装置
JP2006509290A (ja) * 2002-12-04 2006-03-16 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ マイクロプロセッサ電力消費低減のためのレジスタファイルゲーティング

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263401B1 (en) * 1997-09-30 2001-07-17 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for transferring data between a register stack and a memory resource
US6345354B1 (en) * 1999-04-29 2002-02-05 Mips Technologies, Inc. Register file access
US6845445B2 (en) * 2000-05-12 2005-01-18 Pts Corporation Methods and apparatus for power control in a scalable array of processor elements
CN1146796C (zh) * 2000-07-18 2004-04-21 多思资讯(集团)有限公司 堆栈式寄存器堆及其控制方法
JP2004102799A (ja) * 2002-09-11 2004-04-02 Nec Electronics Corp レジスタファイル及びレジスタファイルの設計方法
US7231509B2 (en) * 2005-01-13 2007-06-12 International Business Machines Corporation Extended register bank allocation based on status mask bits set by allocation instruction for respective code block

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281897A (ja) * 1994-04-06 1995-10-27 Hewlett Packard Co <Hp> レジスタ割当て方法及びレジスタファイルポートアクセス装置
JPH10340129A (ja) * 1996-12-27 1998-12-22 Cirrus Logic Inc 電子システムにおける電力使用量を制御する回路および方法
WO2004051450A2 (en) * 2002-12-04 2004-06-17 Koninklijke Philips Electronics N.V. Software-based control of microprocessor power dissipation
JP2006509290A (ja) * 2002-12-04 2006-03-16 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ マイクロプロセッサ電力消費低減のためのレジスタファイルゲーティング
JP2004334296A (ja) * 2003-04-30 2004-11-25 Kyushu Inst Of Technology 電力制御装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011018120A (ja) * 2009-07-07 2011-01-27 Nec Computertechno Ltd 情報処理装置及びベクトル型情報処理装置
JP2013516006A (ja) * 2009-12-29 2013-05-09 エンパイア テクノロジー ディベロップメント エルエルシー エネルギー効率のよいマルチコアプロセッサのための共用メモリ
US9367462B2 (en) 2009-12-29 2016-06-14 Empire Technology Development Llc Shared memories for energy efficient multi-core processors
JP2012043249A (ja) * 2010-08-20 2012-03-01 Fujitsu Ltd メモリの制御装置、及び制御方法

Also Published As

Publication number Publication date
WO2006091846A3 (en) 2007-06-14
EP1851618A2 (en) 2007-11-07
KR20070107784A (ko) 2007-11-07
TW200707178A (en) 2007-02-16
CN101160559B (zh) 2011-06-29
KR100976107B1 (ko) 2010-08-16
CN101160559A (zh) 2008-04-09
IL185426A0 (en) 2008-01-06
WO2006091846A2 (en) 2006-08-31
JP4801100B2 (ja) 2011-10-26
US20060195707A1 (en) 2006-08-31
US7647481B2 (en) 2010-01-12
BRPI0608556A2 (pt) 2010-01-12

Similar Documents

Publication Publication Date Title
JP4801100B2 (ja) スタック型レジスタファイルの一部分をシャットダウンすることによる電力低減
JP3857052B2 (ja) マイクロプロセッサ
US20080313482A1 (en) Power Partitioning Memory Banks
JP3718251B2 (ja) データ処理装置
KR100496429B1 (ko) 저전력 프로세서의 동적 전력 제어 방법 및 장치
CA2630594C (en) Expansion of a stacked register file using shadow registers
KR100806284B1 (ko) 동적 전압 스케일링을 적용한 고효율 프로세서
WO2006117950A1 (ja) 情報処理装置における電力制御装置
JP2008507762A (ja) 動的なdllパワーダウン並びにメモリ・セルフリフレッシュの方法及び装置
JP2004502224A (ja) フラッシュブリッジとオートロードとを有する集積回路
JPH0969063A (ja) 低電力メモリシステム
WO2005069148A2 (en) Memory management method and related system
JP6000708B2 (ja) メモリ制御装置および方法
JP2006287675A (ja) 半導体集積回路
JP2023045456A (ja) コンピュテーショナルストレージドライブ
Lynch et al. Processor choice for wireless sensor networks
JP2004038642A (ja) マルチプロセッサ
US6895497B2 (en) Multidispatch CPU integrated circuit having virtualized and modular resources and adjustable dispatch priority
JP2009070389A (ja) 処理装置のためのコントローラ
EP3945424B1 (en) Memory power management method and processor system
JP3893463B2 (ja) キャッシュメモリ、及びキャッシュメモリの電力削減方法
JP3699947B2 (ja) マイクロコントローラ
JPH11212863A (ja) 命令メモリ回路
Hemani et al. Trends in soc architectures
JP2017187895A (ja) メモリー管理装置およびメモリー管理方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100921

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101221

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110104

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110121

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110217

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

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

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

Free format text: PAYMENT UNTIL: 20140812

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4801100

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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