JP5529212B2 - スタックド・レジスタ・ファイルのレジスタ・セーブ・エンジンのためのバッキング記憶装置バッファ - Google Patents

スタックド・レジスタ・ファイルのレジスタ・セーブ・エンジンのためのバッキング記憶装置バッファ Download PDF

Info

Publication number
JP5529212B2
JP5529212B2 JP2012140009A JP2012140009A JP5529212B2 JP 5529212 B2 JP5529212 B2 JP 5529212B2 JP 2012140009 A JP2012140009 A JP 2012140009A JP 2012140009 A JP2012140009 A JP 2012140009A JP 5529212 B2 JP5529212 B2 JP 5529212B2
Authority
JP
Japan
Prior art keywords
data
register file
register
buffer
procedure
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.)
Expired - Fee Related
Application number
JP2012140009A
Other languages
English (en)
Other versions
JP2012234556A (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 JP2012234556A publication Critical patent/JP2012234556A/ja
Application granted granted Critical
Publication of JP5529212B2 publication Critical patent/JP5529212B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • 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

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Position Fixing By Use Of Radio Waves (AREA)
  • Mobile Radio Communication Systems (AREA)

Description

本発明は、一般にプロセッサの分野に関し、より詳しくは、スタックド・レジスタ・ファイル・アーキテクチャにおけるレジスタ・セーブ・エンジンのためのバッキング記憶装置バッファに関する。
RISCプロセッサは、比較的小さい命令のセットに特徴付けられ、各命令は、たとえば計算動作、論理動作、またはロード/記憶動作のような1つの命令を実行する。計算命令および論理命令は、1つまたは複数の汎用レジスタ(GPR)からオペランドを得、そこに結果を書き入れる。GPRはアーキテクトされたレジスタである。つまり、GPRは、命令セットアーキテクチャ内に明示されたディスクリート・メモリ・ロケーションを備え、命令によって直接アドレス指定される。
GPRは、しばしば高速マルチポートレジスタのアレイとしてハードウェア内で実現され、各々が、命令セットによって定められる言語幅(たとえば、32または64ビット)を有する。この物理レジスタのアレイは、物理レジスタファイルと称される。直接マップされたレジスタ実装において、物理レジスタファイル内のレジスタの数は、アーキテクトされたGPRの数に正確に一致し、各論理GPR識別子は、特定のハードウェアレジスタにマップする。より高い性能のために、およびスーパースケーラ・パイプラインをサポートするために、多数のモデムプロセッサが、論理GPR識別子を、物理レジスタファイル内の物理レジスタから切り離す。レジスタリネーミング、再配置バッファ等は、物理レジスタから論理GPR識別子を切り離すための、当該技術である。直接マップされるにしろ、リネームされるにしろ、多数のソフトウェア手順にわたる物理レジスタファイルの管理は設計課題であり、しばしば性能ボトルネックである。
最新のソフトウェアは、事実上、モジュラである。つまり、ある手順は、別の手順(関数、サブルーチン、サブモジュール等、様々に称される)を「コール」するか、または別の手順に制御を転送する。コールされた手順は、次に別の手順をコールし、それが繰り返され、結果として、入れ子式の手順となり、それはしばしばかなりの深さになる。プロセッサによる実行中、各手順(コンテクストとも称される)は、GPRの数を含む、一定のプロセッサリソースを割り当てられる。手順に割り当てられるGPRの数は、コンパイラによる、手順における命令の分析によって決定され、ごく少数のGPRから、アーキテクトされたGPRのセットの最大限までの範囲にわたりうる。第1の手順が第2の手順をコールするとき(コンテクスト・スウィッチとしても知られる)、第1の、すなわちコールする手順は、第2の、すなわちコールされる手順が、自身のGPRのセットを含む別のリソースを割り当てられている間、アクティブでなくなり、実行を開始する。第2の手順が実行を完了すると、リソースは割り当て解除され、リソースは(必要であれば)コールする手順に再び割り当てられ、コールする手順は実行を再開する。
たとえばインテルi〜960のようないくつかの先行技術プロセッサにおいて、コンテクスト・スウィッチまたは新たな手順は、プロセッサに、物理レジスタファイルの内容全体をメモリに記憶するように指示し、物理レジスタファイル全体を、新しい手順に利用可能にする。コールされた手順が実行を完了し、コールする手順に制御を戻すと、以前にセーブされたレジスタの値は、物理レジスタファイルへリストアされ、コールする手順の実行は継続する。物理レジスタファイルの内容は、たとえばシステムメモリ(RAM)のような「バッキング記憶装置」へセーブされる。バッキング記憶装置がオフチップRAMを備える場合、全てのコンテクスト・スウィッチへの多重オフチップメモリアクセスの性能インパクトを軽減するために、プロセッサは、現行のレジスタ、あるいはオンチップキャッシュメモリを備えうる1つまたは複数の「シャドウ」または「キャッシュ」レジスタファイルを、物理レジスタファイルの内容を記憶するために提供しうる。しかし、物理レジスタファイル全体は、一度に記憶/取り出しされなければならず、シャドウレジスタ記憶の場合にさえも、性能に影響を及ぼす。
物理レジスタファイル全体を一度に記憶し取り出す必要を取り除く、多数のモデムプロセッサを使用する技術は、スタックド・レジスタ・ファイル・アーキテクチャとして知られる。スタックド・レジスタ・ファイル・アーキテクチャにおいて、高レベルプロセッサコントローラは、物理レジスタファイルを、無限の深さの論理スタックと見なす。この論理的に無限のスタックは、手順がコールされるたび、漸増的にレジスタを手順に割り当てること、および以前に割り当てられたレジスタの内容を、必要に応じてセーブすることによって、物理レジスタファイル内で実現される。
図1は、スタックド・レジスタ・ファイル・アーキテクチャを表す機能ブロック図である。物理レジスタファイル1は、高速マルチポート物理レジスタのアレイを備える。このアレイは、命令セットアーキテクチャ内のGPRと少なくとも同じ数のレジスタを含む。たとえば、物理レジスタファイル1は、下は物理レジスタ0(PR0)から、上は物理レジスタ127(PR127)の範囲に及ぶ128のレジスタを備えうる。スタック頂部ポインタおよびセーブ/リストアポインタの2つの論理ポインタが、スタック管理を実現する。
最初に、2つのポインタはどちらもPR0にセットされる。手順がコールされ、レジスタがそこへ割り当てられると、スタック頂部ポインタは上に動く。利用可能であるほぼ全ての物理レジスタが割り当てられ、新たにコールされた手順が、物理レジスタファイル1内に残っている未割当レジスタの数よりも多い数のレジスタを要求すると、スタック頂部ポインタは「ラップ」("wrap")し、PR0から順に、物理レジスタファイル1底部からレジスタを割り当て始めるであろう。しかし、これが起こる前に、物理レジスタファイル1の底部にある十分な数のレジスタは、その内容を、たとえばシステムメモリ(RAM)のようなバッキング記憶装置3にセーブしていなければならない。
レジスタセーブエンジン2は、プロセッサを中断し、物理レジスタファイル1底部の最も前に割り当てられたレジスタの内容をバッキング記憶装置3へセーブするために、レジスタ読取動作およびメモリ記憶動作に必要な命令を実行する。レジスタセーブエンジン2は、セーブ/リストアポインタをインクリメントし、ポインタより下のレジスタが、新しくコールされた手順への割り当てに利用可能であることを示す。レジスタセーブエンジン2が、レジスタセーブ動作を完了し、プロセッサの制御を解くと、プロセッサコントローラは、次の手順にレジスタを割り当て、スタック頂部ポインタをインクリメントし、バッキング記憶装置3にセーブされた内容を有するレジスタが、再び割り当てられ、コールされた手順によって利用されるように、これらのレジスタの上へラップおよびインクリメントする。
同様に、コールされた手順が実行を完了し、コールする手順の制御に戻ると、スタックはポップし、コールされた手順に割り当てられたレジスタは割り当て解除されるか、または他の手順への割り当てに利用可能にされる。もしコールする手順に関連する全てのデータが、物理レジスタファイル1に既になければ、つまり、コールする手順のレジスタのうち1つまたは複数が再び割り当てられれば、レジスタセーブエンジン2は再びプロセッサを中断し、最も新しくセーブされたレジスタの内容をバッキング記憶装置3から取り出し、データを物理レジスタファイル1へリストアし、コールする手順にレジスタを割り当て、セーブ/リストアポインタをインクリメントして、レジスタが割り当てられ、有効なデータを含むことが示される。
スタックド・レジスタ・ファイル・システムは、大きな物理レジスタファイル1、比較的小さい深さの手順重なり、および/または各手順に割り当てられた比較的少数のレジスタを用いて、最適な性能を提供する。これらの状況下で、スタック頂部ポインタは、物理レジスタファイル1を通って単純に上下に動き、遅延することなく、レジスタを必要に応じて手順に割り当てたり、この割り当てを解除する。しかし、手順の数が増加すると、および/または、1つまたは複数の手順が多数のレジスタを必要とすると、プロセッサは、レジスタが新たな手順に再割当されうるように、物理レジスタファイル1内のレジスタからデータをセーブし、またはレジスタへデータをリストアするために、レジスタセーブエンジン2による多くの中断を受ける。
スタックド・レジスタ・ファイル・システムの性能を向上させる1つの方法は、単純に物理レジスタファイル1のサイズを増加することである。これがより高い性能を提供するが、物理レジスタファイル1内のレジスタは、通常、高速マルチポートレジスタである。各レジスタは、たとえば3から5の読取ポートおよび書込ポートを含みうる。更に、動作スケジューリングおよびレジスタ割り当てにおける柔軟性のために、各物理レジスタの読取ポートは、各パイプラインの各実行パイプステージにルートされねばならず、各パイプラインの書き戻しパイプステージは、物理レジスタファイル内の各レジスタの書入れポートと接続していなければならない。従って、物理レジスタファイル1のサイズを増加することは、ゲートカウントおよび配線複雑さによってコストがかかる。与えられた任意の時間で、1つの手順だけが実行しており、物理レジスタファイル1内のレジスタの小さいサブセットのみにアクセスしている。従って、物理レジスタファイル1のサイズを増加することは、コストがかかりハードウェアの実用性が低下するとともに、著しいエリアコストおよび複雑さコストを招く。
1つまたは複数の実施形態において、バッキング記憶装置バッファは、スタックド・レジスタ・ファイル・アーキテクチャ内の物理レジスタファイルとバッキング記憶装置との間に挿入される。バッキング記憶装置バッファは、アクティブでない手順に割り当てられたレジスタからのデータが、オンチップで一時的に記憶されることを可能にし、物理レジスタファイル内のレジスタを、新たな手順に再び割り当てられるためにフリーにする。手順が完了し、以前のアクティブではない手順に制御を戻すと、アクティブではない手順に関連するデータは、既にセーブされている場合、バッキング記憶装置バッファから取り出され、物理レジスタファイル内のレジスタ、および、アクティブではない手順に再割当されたレジスタへリストアされる。データはバッキング記憶装置のみに書き込まれる必要があるので、バッキング記憶装置バッファが一杯の場合、著しい性能低下、および、オフチップRAMアクセスに対して必要とされる電力消費を招く。
1つの実施形態は、専用のバッキング記憶装置バッファを有するスタックド・レジスタ・ファイルを管理する方法に関する。物理レジスタファイルからの1つまたは複数のレジスタが、第1の手順に割り当てられ、第1の手順に関連するデータは、割り当てられたレジスタに記憶される。第1の手順に関連するデータは、専用のバッキング記憶装置バッファへ選択的にセーブされ、第1の手順に割り当てられた1つまたは複数のレジスタは、第2の手順への割り当てのために割り当て解除される。第1の手順の継続する実行に先行して、第1の手順に関連するデータは、専用のバッキング記憶装置バッファから、1つまたは複数のレジスタへリストアされ、レジスタは第1の手順に再び割り当てられる。
別の実施形態は、プロセッサに関する。プロセッサは、プロセッサ命令セットアーキテクチャ内で定められる汎用レジスタの数と、少なくとも同じ数のレジスタを備える物理レジスタファイルを含む。レジスタは、動的にソフトウェア手順に割り当てられる。プロセッサは、アクティブではない手順に割り当てられたレジスタからデータを選択的にセーブし、手順がアクティブになる前に、データをレジスタへリストアするように動作するレジスタセーブエンジンも含む。プロセッサは、レジスタセーブエンジン専用であり、アクティブではない手順に割り当てられたレジスタからセーブされたデータを記憶するように動作するバッキング記憶装置バッファを更に含む。
図1は、先行技術スタックド・レジスタ・ファイルのブロック図である。 図2は、プロセッサの機能ブロック図である。 図3は、バッキング記憶装置バッファを含むスタックド・レジスタ・ファイルの機能ブロック図である。 図4は、スタックド・レジスタ・ファイル・アーキテクチャを管理する方法のフロー図である。
図2は、プロセッサ10の機能ブロック図である。プロセッサ10は、命令実行パイプライン12内で、制御ロジック14に従って命令を実行する。パイプライン12は、たとえばパイプライン12aおよび12bのような複数の並列するパイプラインを備えるスーパースケーラ設計でありうる。パイプライン12aおよび12bの各々は、パイプステージに配置された様々なレジスタまたはラッチ16、および1つまたは複数の算術論理演算ユニット(ALU)18を含む。パイプライン12aおよび12bは、命令側変換索引バッファ(ITLB)22によって管理されるメモリアドレス指定および許可を用いて、命令キャッシュ(i−CacheまたはI$)20から命令をフェッチする。
データは、主要変換索引バッファ(TLB)26によって管理されるメモリアドレス指定および許可を用いて、データキャッシュ(D−CacheまたはD$)24からアクセスされる。様々な実施形態において、ITLB22は、TLB26の一部のコピーを備えうる。あるいは、ITLB22およびTLB26は統合されうる。同様に、プロセッサ10の様々な実施形態において、I−Cache20およびD−Cache24は、統合すなわち一体化されうる。I−Cache20および/またはD−Cache24におけるミスは、メモリインタフェース34の制御下にあるメイン(オフチップ)メモリ36へのアクセスの原因となる。
パイプステージレジスタまたはラッチ16およびALU18は、物理レジスタファイル28内のレジスタからオペランドを読み取り、および/またはそこへ結果を書き込む。物理レジスタファイル28は、バッキング記憶装置バッファ32を含むレジスタセーブエンジン30によって管理される。バッキング記憶装置バッファ32は、メモリインタフェース34経由でメインメモリ36と接続する。物理レジスタファイル28、レジスタセーブエンジン30、およびバッキング記憶装置バッファ32の動作は、以下でより詳細に説明される。
プロセッサ10は、様々な周辺デバイス40および42へのアクセスを制御している入力/出力(I/O)インタフェース38を含む。当業者は、プロセッサ10の多数の変形例が可能であることを明確に理解するだろう。たとえば、プロセッサ10は、IキャッシュおよびDキャッシュの何れかまたは両方の第2レベル(L2)キャッシュを含みうる。また、プロセッサ10内に図示された機能ブロックのうちの1つまたは複数は、特定の実施形態からは省略されうる。
図3は、プロセッサ10のスタックド・レジスタ・ファイル・アーキテクチャの機能ブロック図を示す。少なくともプロセッサ命令セットアーキテクチャが定義するGPRと同じ数の物理レジスタを含む物理レジスタファイル28に、論理的には無限のレジスタスタックが実装される。レジスタのグループは、新たにコールされた手順に割り当てられ、スタック頂部ポインタがインクリメントされる。スタック頂部ポインタより下(かつ、セーブ/リストアポインタより上)のレジスタは手順に割り当てられ、スタック頂部ポインタより上(かつ、セーブ/リストアポインタより下)のレジスタは、新たな手順への割り当てのために固定されていない。手順が実行を完了し、コールする手順の制御に戻ると、スタック頂部ポインタは、完了した手順に割り当てられたレジスタの数だけデクリメントされる。
手順がコールされ、物理レジスタファイル28内に残っている、未割当のレジスタの数よりも多くのレジスタを必要とする場合、レジスタセーブエンジン30は、アクティブではない手順に関連するデータ(つまり、アクティブではない手順に割り当てられたレジスタに記憶されたデータ)を物理レジスタファイル28からセーブする。レジスタセーブエンジン30は、セーブ/リストアポインタをインクリメントし、セーブ/リストアポインタより下(かつ、スタック頂部ポインタより上)の物理レジスタが、新たな手順への割り当てに利用可能であることを示す。
アクティブではない手順がアクティブにされる前に、レジスタセーブエンジン30は、アクティブではない手順に割り当てられた全てのレジスタが、アクティブではない手順に割り当てられたままであり、アクティブではない手順に関連するデータを含んでいることを確認するために、物理レジスタファイル28をチェックする。以前アクティブではない手順に割り当てられたレジスタのうちの1つまたは複数が、再割当された場合、レジスタセーブエンジン30は、セーブされたデータを、物理レジスタファイル28内の利用可能なレジスタにリストアする。データをリストアすると、レジスタセーブエンジン30は、セーブ/リストアポインタを、リストアされたレジスタの数だけデクリメントし、セーブ/リストアポインタより上(かつ、スタック頂部ポインタより下)のレジスタが手順に割り当てられることを示す。アクティブではない手順は、その後アクティブにされる。ここで、手順に以前に割り当てられた全てのレジスタは、手順がアクティブでなかった場合に含まれるものと同じデータを含んでいる。当業者は、本明細書で、図3に示すように、ポインタより「上」「下」という用語が便宜的に用いられていると気付くだろう。実際には、スタック頂部ポインタおよびセーブ/リストアポインタの何れかまたは両方は「ラップする」ことがあり、これらの相対位置は逆になりうる。
たとえばオフチップRAMのようなバッキング記憶装置36に、物理レジスタの内容を、直接的にセーブおよびリストアする先行技術の実施に関する遅延および電力消費を避けるために、1つまたは複数の実施形態では、レジスタセーブエンジン30はバッキング記憶装置バッファ32を含む。バッキング記憶装置バッファ32は、物理レジスタファイル内のレジスタからセーブされ、そこへリストアされたデータを、一時的に記憶する。レジスタセーブエンジン30は、バッキング記憶装置バッファ32が一杯か、または最大容量に近づいている場合、バッキング記憶装置バッファ32からのデータをセーブするためにのみ、バッキング記憶装置バッファ36にアクセスする必要がある。バッキング記憶装置バッファ32の記憶容量と結合した物理レジスタファイル28のサイズが、平均スタック深さに等しいまたはそれより大きい場合、バッキング記憶装置36へのオフチップアクセスは著しく減少される。
更に高い性能のために、1つの実施形態では、バッキング記憶装置バッファ32は、物理レジスタファイル28内のレジスタのビット幅よりも大きいビット幅を有する記憶場所のアレイ(たとえば、レジスタ、ラッチ、またはSRAMアレイ)として構成される。特に、バッキング記憶装置バッファ32内のエントリーは、物理レジスタファイル28のビット幅の整数倍であるビット幅を有しうる。これによって、2つまたはそれ以上の物理レジスタからのデータを、1つのバッキング記憶装置バッファ32エントリー内に、隣り合って記憶することが可能となる。
1つの実施形態において、ビット幅の整数倍における整数は、物理レジスタファイル28内の読取ポートの数に等しい。たとえば、物理レジスタファイル28が3つの読取ポートを含む場合、バッキング記憶装置バッファ32は、各々が物理レジスタファイルの3倍のビット幅を有する記憶素子のアレイとして構成される(図3を参照)。この構成において、レジスタセーブエンジン30は、3つの物理レジスタから同時に(すなわち、単一サイクルで)データを読み取り、3つ全てのレジスタから1つのバッキング記憶装置バッファへ、単一書込サイクルでデータを書き込む。これにより、レジスタがアクティブでない手順から割り当て解除されるとき、物理レジスタファイル28からデータをセーブすることの性能オーバーヘッドが最小化される。同様に、物理レジスタファイル28が更に3つの書込ポートを含む場合、物理レジスタファイル28へデータをリストアすると、レジスタセーブエンジン28は、データを、1つのバッキング記憶装置バッファ32エントリーから、単一サイクルで3つの物理レジスタへリストアされるように読み取る。これらのデータは、物理レジスタファイル28内の3つのレジスタへ、単一サイクルで書き込まれうる。
バッキング記憶装置バッファ32は、多くの技術および動作構成で実現されうる。たとえば、バッキング記憶装置バッファ32は、シンプルな、シングルポートの、高速レジスタまたはラッチのアレイを備える。あるいは、バッキング記憶装置バッファ32は、nが各バッキング記憶装置32エントリーのビット幅であり、mがそれらのエントリーの数である、n×mアレイとして構成されるSRAMアレイとして実装されうる。ハードウェア構成にかかわらず、バッキング記憶装置バッファ32は、たとえばスタックと、FIFOと、データに関連付けられる手順のコンテクストIDによってインデックスされたキャッシュメモリ等のような様々な動作構成において実現されうる。
しかしながら、物理構成または動作構成にかかわらず、バッキング記憶装置バッファ32は、レジスタセーブエンジン30専用のものである。つまり、バッキング記憶装置32内のメモリ記憶場所は、命令セットアーキテクチャの一部ではなく、命令によってアドレス指定されない。加えて、バッキング記憶装置バッファ32は、物理レジスタファイル28内のレジスタが割り当てられた手順がアクティブでなくなる時に、これらのレジスタに含まれるデータのみを記憶する。つまり、バッキング記憶装置バッファ32は、オンチップであろうと、オフチップであろうと、スクラッチレジスタ、キャッシュメモリ、その他任意のプロセッサメモリまたは記憶場所から隔離されている。本明細書で用いられる用語である「専用の」バッキング記憶装置バッファは、バッキング記憶装置バッファ32が、プロセッサ10における他の構成要素からの物理的および機能的に隔離されていることを示す。
1つの実施形態において、バッキング記憶装置バッファ32は、スタックとして動作的に構成される。レジスタセーブエンジン30は、物理レジスタファイル28からデータを読み取り、スタックの頂部にデータをプッシュする。反対に、レジスタセーブエンジン30は、物理レジスタファイル28へリストアされるデータを取り出すためにスタックをポップする。バッキング記憶装置バッファ32が一杯か、またはいくつかの実施形態において、最大容量に近づくと、レジスタセーブエンジン30は、スタックの底部からデータを読み取り、バッキング記憶装置36にデータを記憶する。ここで、バッキング記憶装置36は、L1キャッシュまたはL2キャッシュを備えうるか、図2に示すようなメインシステムメモリ(たとえばRAM)を備えうる。レジスタセーブエンジン30が、十分なデータをバッキング記憶装置バッファ32から物理レジスタファイル28へリストアし、バッキング記憶装置バッファ32の容量が空くと、レジスタセーブエンジン30は、以前にセーブしたデータをバッキング記憶装置38から読み取り、このデータを、バッキング記憶装置バッファ32内のスタック底部へ書き込む。バッキング記憶装置バッファ32をスタックとして動作することは、バッキング記憶装置バッファ32エントリーのビット幅にはよらないことに留意されたい。
バッキング記憶装置バッファ32が、最適性能のためにスタックとして動作する1つの実施形態において、バッキング記憶装置バッファ32は、物理レジスタファイル28に関する上記説明と同様に、スタックの頂部および底部がポインタによって維持される、二重ポートレジスタのアレイとして構成される。これは、たとえば、レジスタセーブエンジン30が、物理レジスタファイル28からセーブしたデータを、データがバッキング記憶装置バッファ32のスタック底部からバッキング記憶装置36へセーブされるのと同時に、バッキング記憶装置バッファ32のスタックの頂部にプッシュすることを可能にする。同様に、データは、物理レジスタファイル28へリストアされるためにスタック頂部からポップされるのと同時に、バッキング記憶装置36から、バッキング記憶装置バッファ32のスタックの底部へリストアされる。
代替実施形態において、回路複雑さおよびシリコン面積を低減するために、バッキング記憶装置バッファ32スタックは、シングルポートレジスタから構成され、レジスタセーブエンジン30スケジューリングは、物理レジスタファイル28からデータをセーブし、そこへデータをリストアする動作に基づいて、バッキング記憶装置との読み書きを行う。
1つの実施形態に従って、スタックド・レジスタ・ファイル・アーキテクチャを動作する方法が、図4にフロー図形式で示されている。最初に、レジスタセーブエンジン(RSE)30を備えるスタックド・レジスタ・コントローラが、たとえば算術命令または論理命令のオペランドまたは結果のようなデータ書込および読取手順に専用に用いられる、物理レジスタファイル(PRF)28内の1つまたは複数のレジスタを割り当てる要求を受け取る(ブロック40)。RSE30は、PRF28内に、十分な数の未割当レジスタが残っているかどうか判定する(ブロック42)。残っているのであれば、要求された数のPRF28レジスタが新たな手順に割り当てられる(ブロック50)。この処理は、各手順が後続する手順をコールするたび、何回か繰り返される(ブロック40)。
ある時点において、手順がコールされ、レジスタの割り当てが要求されるが(ブロック40)、PRF28内に、要求を満たすのに十分な数の未割当レジスタが残っていないのであれば(ブロック42)、RSE30は、要求を満たすために、PRF28内のいくつのレジスタがフリーにされるべきかを決定し、バッキング記憶装置バッファ(BSB)32内で、相伴う量のフリースペースが利用可能であるかを判定する(ブロック44)。もし利用可能であれば、1つまたは複数の現在はアクティブでない手順に割り当てられたレジスタのうち少なくとも要求を満たすだけの数を、BSB32にレジスタの内容をセーブすることによって割り当て解除する(ブロック48)。RSE30はその後、これらの割り当て解除されたレジスタを、PRF28内にある割り当て解除されたレジスタとともに、要求元の新たな手順に割り当てる(ブロック50)。この新たな手順は、実行を続行し、割り当てられたPRF28レジスタ内にデータを記憶する。
もし十分な数の新たな手順がコールされる場合、および/または、もし新たな手順が多くのレジスタの割り当てを要求する場合、BSB32は一杯になっているか、最大容量に近づいている可能性がある。この場合、新たな手順によって要求され(ブロック40)、PRF28内に十分な数のレジスタがなく(ブロック42)、PRF28内に十分なフリースペースがなければ(ブロック44)、RSE30は、古いエントリーを、BSB32から、たとえばオフチップRAMのようなバッキング記憶装置(BS)36へセーブするであろう(ブロック46)。その後データは、PRF28からBSB32へセーブされ(ブロック48)、フリーになったPRF28レジスタが、新たな手順に割り当てられる(ブロック50)。この処理は、新たな手順がコールされるたびに繰り返される(ブロック40)。
ある時点において、新たな手順をコールする(ブロック40)のではなく、アクティブな手順は終了し、コーリング手順に制御を戻す。これは、再びアクティブにすることを要求するであろう(ブロック52)。RSE30は、アクティブでない手順に元々割り当てられていた全てのレジスタが、PRF28内でまだそこに割り当てられているかを判定するためのチェックをするであろう(ブロック54)。割り当てられれば、手順が別の手順をコールしてアクティブでなくなる前に手順によって書き込まれた全てのデータは、PRF54内に残り、手順は再びアクティブになり、実行を再開することができる(ブロック62)。
もしRSE30が、アクティブでない手順に元々割り当てられていた1つまたは複数のレジスタからデータをセーブし、レジスタを別の手順に割り当てれば、RSE30は、データがBSB32内に記憶されているか確かめるためのチェックをする。もし記憶されていれば、RSE30は、少なくともアクティブでない手順に関連するデータをBSB32から読み取り、それをPRF28内のレジスタへ書き込み、レジスタをアクティブでない手順に割り当てる(ブロック60)。その後、アクティブでない手順は、再びアクティブにされる(ブロック62)。
もしアクティブでない手順に関連するデータが、PRF28からセーブされており(ブロック54)、BSB32内に記憶されていなければ(ブロック58)、その後データは、BSB32からBS36へセーブされる。この場合、RSE30は、少なくともアクティブでない手順に関連するデータを、BS36から読み取り、それをBSB32へ書き込む(ブロック58)。RSE30は、その後、BSB32からPRF28へデータをリストアし、受け取るレジスタを、手順を再びアクティブにする(ブロック62)前に、アクティブでない手順に割り当てる(ブロック60)。再びアクティブにされた手順は、その後、別の手順をコールしうる(ブロック40)。または、自身で実行を完了し、以前のコーリング手順に制御を戻す(ブロック52)。
当業者は、本開示を教示する観点から、上記手順の複数の明白な変形例または最適化を認識するであろう。たとえば、データが全面的にBS36にセーブされており、手順を再びアクティブにするように要求される場合、RSE30はBSB32を通らず、BS36からPRF28内のレジスタへ直接データを書き込む。加えて、本明細書に開示されたように、特に、各BSB32エントリーの幅が、PRF28読み取りポートの数の倍数であるPRF28レジスタの幅である実施形態において、データは手順バウンダリとともに、PRF28(またはBSB32)から記憶されたり、そこへリストアされないことがある。すなわち、アクティブでない手順に関連するデータの全てが、PRF23から同時にセーブされうるわけではない。同様に、1つのアクティブでない手順に関連するデータをPRF28へリストアするとき、RSE30は、別の手順に関連するデータを更に(BSB32またはBS36において記憶されている、残りの他の手順に関連する付加データとともに)リストアすることができる。
専用のローカル高速記憶を提供することによって、バッキング記憶装置バッファ32は、レジスタセーブエンジン30が、セーブされたデータをオフチップバッキング記憶装置へ書き込むことに関連する著しい性能低下および電力消費を招くことなく、物理レジスタファイル28からデータをセーブおよびリストアすることを可能にする。バッキング記憶装置バッファ32は、マルチポートであったり、または1つまたは複数の実行パイプライン内のパイプステージに接続されている必要がないために、物理レジスタファイル28のサイズを増加することに対する経済的な代替例である。
実際に、本バッキング記憶装置バッファ32が存在することによって、物理レジスタファイル28が、命令セットアーキテクチャ内のGPRとして定義される数のレジスタのみを含むことが可能となる。つまり、理論上、手順は、定義された全てのGPRに割り当てられるので、命令セットアーキテクチャ内のGPRの数は、物理レジスタファイル28のサイズを小さな値にする。本発明のバッキング記憶装置バッファ32は、バッキング記憶装置36へのオフチップアクセスを回避または最小化することからなる高性能および低電力消費を実現しながら、シリコン面積および配線複雑さを抑えるために、物理レジスタファイル28のサイズの最大値を同じ値とすることができる。
本発明は、本明細書において、その特定の特徴、局面および実施形態に関して説明されてきたが、複数の変形例、改良、および他の実施形態が、本発明の範囲内で可能であり、従って、全ての変形例、改良及び実施形態は、本発明の範囲内にあると見なされる。従って、本実施形態は、全ての局面において、限定的ではなく例示的に解釈され、添付する特許請求の範囲の意味および均等な範囲内における全ての変形は、本明細書に包含されるように意図されている。

Claims (16)

  1. レジスタ・ファイル・システムを管理する方法であって、
    レジスタ・ファイルのうちの指定された数のレジスタを第1の手順に割り当てるための要求を受信することと、ここで、前記レジスタ・ファイルのうちの第1のレジスタと、第2のレジスタと、第3のレジスタとに、第2の手順が関連付けられ、
    前記レジスタ・ファイルが前記要求を満たすのに十分な未割当レジスタを含むかどうかを判定することと、
    前記レジスタ・ファイルが前記要求を満たすのに十分な未割当レジスタを含んでいない場合、
    前記第2の手順がアクティブではない場合、前記レジスタ・ファイルの第1の読取ポートから前記第1のレジスタの全ての内容を備える第1のデータを読み取ることと、前記レジスタ・ファイルの第2の読取ポートから前記第2のレジスタの全ての内容を備える第2のデータを読み取ることとを同時に行うことと、
    単一の書込サイクルのあいだに前記レジスタ・ファイルの外部にあるバッファの単一の記憶場所に前記第1のデータと前記第2のデータとをセーブすることと、ここで、前記バッファおよび前記レジスタ・ファイルは、共に特定のチップ上に存在し、前記バッファは、前記第1のデータの一時的な記憶を可能にする記憶場所のアレイを含み、前記記憶場所のアレイの各記憶場所は、前記レジスタ・ファイルのビット幅の整数倍であるビット幅を有し、前記整数倍は、前記レジスタ・ファイルの読取ポートの数に等しい、
    ここで、前記第3のレジスタの全ての内容を備える第3のデータは、前記単一の書込サイクルのあいだに前記バッファにセーブされない、
    前記バッファに記憶されたデータの量が前記バッファの記憶容量に近づく場合、前記バッファから第2の記憶装置への前記第1のデータの転送を開始することと
    を備える方法。
  2. 前記レジスタ・ファイルのビット幅は、前記レジスタ・ファイルのうちの単一のレジスタのビット幅に等しい、請求項1に記載の方法。
  3. 前記レジスタ・ファイルの読取ポートの数は、3、4、または5である、請求項に記載の方法。
  4. 前記第2の記憶装置は、バッキング記憶装置を備え、コントローラが、前記バッファに前記第1のデータをセーブし、前記バッキング記憶装置への前記第1のデータの転送を開始する、請求項1に記載の方法。
  5. 前記バッファに前記第1のデータをセーブすることは、前記バッファに前記第1のデータをプッシュすることを含み、前記第2の記憶装置への前記第1のデータの転送を開始することは、前記バッファから前記第1のデータを読み取ることを含む、請求項1に記載の方法。
  6. 前記レジスタ・ファイルは、スタックド・レジスタ・ファイルとして動作するように構成された、請求項1に記載の方法。
  7. 前記レジスタ・ファイルは、128個のレジスタからなる単一のスタックを含む、請求項に記載の方法。
  8. 前記第1の手順がアクティブである場合、前記バッファへの第4のデータの記憶をブロックすることをさらに備え、前記第4のデータは、前記第1の手順に関連し、前記レジスタ・ファイルの第4のレジスタの全ての内容を備える、請求項1に記載の方法。
  9. 請求項1乃至のうちのいずれか1項に記載の方法をコンピュータに実行させるプログラム、を記録した、コンピュータ読取可能な記録媒体。
  10. レジスタ・ファイル・ビット幅を有するレジスタ・ファイルであって、第1のデータを有する第1のレジスタと、第2のデータを有する第2のレジスタと、第3のデータを有する第3のレジスタとを含む複数のレジスタを備えるレジスタ・ファイルと、ここで、前記第1のデータと、前記第2のデータと、前記第3のデータは、アクティブではない第1の手順に関連付けられ、
    前記レジスタ・ファイルの外部にあるバッファと、ここで、前記バッファおよび前記レジスタ・ファイルは、共に特定のチップ上に存在し、前記バッファは、前記第1のデータの一時的な記憶を可能にする記憶場所のアレイを含む、ここで、前記記憶場所のアレイの各記憶場所は、前記レジスタ・ファイル・ビット幅の整数倍であるビット幅を有し、前記整数倍は、前記レジスタ・ファイルの読取ポートの数に等しい、
    レジスタ・エンジンであって、
    前記レジスタ・ファイルのうちの指定された数のレジスタを第2の手順に割り当てるための要求を受信し、
    前記レジスタ・ファイルが前記要求を満たすのに十分な未割当レジスタを含むかどうかを判定し、
    前記レジスタ・ファイルが前記要求を満たすのに十分な未割当レジスタを含んでいない場合、
    前記第1の手順がアクティブではない場合、前記レジスタ・ファイルの第1の読取ポートを介して前記第1のデータを、前記レジスタ・ファイルの第2の読取ポートを介して前記第2のデータを、同時に読み取り、
    単一の書込サイクルのあいだに前記バッファの単一の記憶場所に前記第1のデータと前記第2のデータとをセーブし、
    ここで、前記第3のデータは、前記単一の書込サイクルのあいだに前記バッファにセーブされない、
    前記バッファに記憶されたデータの量が前記バッファの記憶容量に近づく場合、前記バッファから第2の記憶装置への前記第1のデータの転送を開始する
    ように構成されたレジスタ・エンジンと
    を備える、プロセッサ。
  11. 前記レジスタ・エンジンは、前記バッファをスタックとして動作するように適合され、前記要求は、前記第2の手順が前記第1の手順によってコールされるのに応答して受信される、請求項10に記載のプロセッサ。
  12. 前記バッファは、前記レジスタ・ファイルから取り出された第1のデータを、前記スタックの頂部へとプッシュし、第2のデータを、前記スタックの底部から、アクティブではない手順に関連付けられたレジスタのデータを記憶するメモリの一部へと同時に転送することを、前記レジスタ・エンジンに可能にさせる二重ポートレジスタのアレイを含む、請求項11に記載のプロセッサ。
  13. 前記レジスタ・ファイル・ビット幅は、前記複数のレジスタのうちの単一のレジスタのビット幅に等しい、請求項10に記載のプロセッサ。
  14. 前記レジスタ・ファイルは、3個の読取ポート、4個の読取ポート、または5個の読取ポートを含、請求項10に記載のプロセッサ。
  15. 前記レジスタ・エンジンは、前記第2の記憶装置に記憶されたデータを前記第2の記憶装置から前記バッファへと転送することと、その後、前記データを前記バッファから前記レジスタ・ファイルへと転送することとによって、前記第2の記憶装置に記憶されたデータを前記レジスタ・ファイルへとリストアするように適合された、請求項10に記載のプロセッサ。
  16. 前記第2の記憶装置は、前記特定のチップ上に存在しない、請求項1に記載の方法。
JP2012140009A 2005-10-20 2012-06-21 スタックド・レジスタ・ファイルのレジスタ・セーブ・エンジンのためのバッキング記憶装置バッファ Expired - Fee Related JP5529212B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/254,320 2005-10-20
US11/254,320 US7962731B2 (en) 2005-10-20 2005-10-20 Backing store buffer for the register save engine of a stacked register file

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2008536645A Division JP2009512941A (ja) 2005-10-20 2006-10-20 スタックド・レジスタ・ファイルのレジスタ・セーブ・エンジンのためのバッキング記憶装置バッファ

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014000322A Division JP5869009B2 (ja) 2005-10-20 2014-01-06 スタックド・レジスタ・ファイルのレジスタ・セーブ・エンジンのためのバッキング記憶装置バッファ

Publications (2)

Publication Number Publication Date
JP2012234556A JP2012234556A (ja) 2012-11-29
JP5529212B2 true JP5529212B2 (ja) 2014-06-25

Family

ID=37770980

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2008536645A Withdrawn JP2009512941A (ja) 2005-10-20 2006-10-20 スタックド・レジスタ・ファイルのレジスタ・セーブ・エンジンのためのバッキング記憶装置バッファ
JP2012140009A Expired - Fee Related JP5529212B2 (ja) 2005-10-20 2012-06-21 スタックド・レジスタ・ファイルのレジスタ・セーブ・エンジンのためのバッキング記憶装置バッファ
JP2014000322A Expired - Fee Related JP5869009B2 (ja) 2005-10-20 2014-01-06 スタックド・レジスタ・ファイルのレジスタ・セーブ・エンジンのためのバッキング記憶装置バッファ

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2008536645A Withdrawn JP2009512941A (ja) 2005-10-20 2006-10-20 スタックド・レジスタ・ファイルのレジスタ・セーブ・エンジンのためのバッキング記憶装置バッファ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2014000322A Expired - Fee Related JP5869009B2 (ja) 2005-10-20 2014-01-06 スタックド・レジスタ・ファイルのレジスタ・セーブ・エンジンのためのバッキング記憶装置バッファ

Country Status (8)

Country Link
US (1) US7962731B2 (ja)
EP (1) EP1941350A2 (ja)
JP (3) JP2009512941A (ja)
KR (1) KR100974750B1 (ja)
CN (1) CN101331448B (ja)
BR (1) BRPI0617528A2 (ja)
IL (1) IL190979A0 (ja)
WO (1) WO2007048128A2 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7962731B2 (en) * 2005-10-20 2011-06-14 Qualcomm Incorporated Backing store buffer for the register save engine of a stacked register file
US7844804B2 (en) * 2005-11-10 2010-11-30 Qualcomm Incorporated Expansion of a stacked register file using shadow registers
JP5186802B2 (ja) * 2007-05-08 2013-04-24 富士通セミコンダクター株式会社 マイクロプロセッサ
KR101927255B1 (ko) * 2011-12-27 2018-12-12 한국전자통신연구원 레지스터 윈도우 오버플로우/언더플로우 처리 장치
US9239801B2 (en) * 2013-06-05 2016-01-19 Intel Corporation Systems and methods for preventing unauthorized stack pivoting
WO2015126429A1 (en) * 2014-02-24 2015-08-27 Hewlett-Packard Development Company, L.P. Repurposable buffers for target port processing of a data transfer
CN104182281B (zh) * 2014-08-25 2017-10-31 浙江大学城市学院 一种gpgpu寄存器缓存的实现方法
US9996353B2 (en) 2015-02-26 2018-06-12 International Business Machines Corporation Universal history buffer to support multiple register types
US9971604B2 (en) 2015-02-26 2018-05-15 International Business Machines Corporation History buffer for multiple-field registers
US10067766B2 (en) 2015-02-26 2018-09-04 International Business Machines Corporation History buffer with hybrid entry support for multiple-field registers
US10049054B2 (en) * 2015-04-01 2018-08-14 Micron Technology, Inc. Virtual register file
KR101810044B1 (ko) * 2015-12-31 2017-12-18 홍익대학교 산학협력단 암호화 키 갱신 장치 및 방법
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
US20170371654A1 (en) * 2016-06-23 2017-12-28 Advanced Micro Devices, Inc. System and method for using virtual vector register files
US10782979B2 (en) 2017-04-18 2020-09-22 International Business Machines Corporation Restoring saved architected registers and suppressing verification of registers to be restored
US10963261B2 (en) 2017-04-18 2021-03-30 International Business Machines Corporation Sharing snapshots across save requests
US10564977B2 (en) 2017-04-18 2020-02-18 International Business Machines Corporation Selective register allocation
US10838733B2 (en) 2017-04-18 2020-11-17 International Business Machines Corporation Register context restoration based on rename register recovery
US10540184B2 (en) 2017-04-18 2020-01-21 International Business Machines Corporation Coalescing store instructions for restoration
US10572265B2 (en) * 2017-04-18 2020-02-25 International Business Machines Corporation Selecting register restoration or register reloading
US10552164B2 (en) 2017-04-18 2020-02-04 International Business Machines Corporation Sharing snapshots between restoration and recovery
US11010192B2 (en) * 2017-04-18 2021-05-18 International Business Machines Corporation Register restoration using recovery buffers
US10740108B2 (en) 2017-04-18 2020-08-11 International Business Machines Corporation Management of store queue based on restoration operation
US10649785B2 (en) 2017-04-18 2020-05-12 International Business Machines Corporation Tracking changes to memory via check and recovery
US10489382B2 (en) 2017-04-18 2019-11-26 International Business Machines Corporation Register restoration invalidation based on a context switch
US10545766B2 (en) 2017-04-18 2020-01-28 International Business Machines Corporation Register restoration using transactional memory register snapshots
CN107621926B (zh) * 2017-09-19 2020-06-16 珠海市杰理科技股份有限公司 栈区数据存取方法、装置、可读存储介质和计算机设备
CN111176582A (zh) * 2019-12-31 2020-05-19 北京百度网讯科技有限公司 矩阵存储方法、矩阵访问方法、装置和电子设备
CN113377438B (zh) * 2021-08-13 2021-11-30 沐曦集成电路(上海)有限公司 一种处理器及其数据读写方法

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4429363A (en) * 1981-10-15 1984-01-31 International Business Machines Corporation Method and apparatus for managing data movements from a backing store to a caching buffer store
US5179734A (en) * 1984-03-02 1993-01-12 Texas Instruments Incorporated Threaded interpretive data processor
JPS62108333A (ja) * 1985-11-06 1987-05-19 Mitsubishi Electric Corp 半導体装置
JPH02148223A (ja) * 1988-11-30 1990-06-07 Toshiba Corp レジスタ退避復活装置
US6370623B1 (en) 1988-12-28 2002-04-09 Philips Electronics North America Corporation Multiport register file to accommodate data of differing lengths
JPH0333934A (ja) * 1989-06-29 1991-02-14 Nec Corp レジスタ退避復帰方式
JP2655191B2 (ja) * 1989-07-05 1997-09-17 三菱電機株式会社 演算処理装置
JPH03149626A (ja) * 1989-11-07 1991-06-26 Matsushita Electric Ind Co Ltd スタック管理方法
US5522072A (en) * 1990-09-04 1996-05-28 At&T Corp. Arrangement for efficiently transferring program execution between subprograms
USH1291H (en) * 1990-12-20 1994-02-01 Hinton Glenn J Microprocessor in which multiple instructions are executed in one clock cycle by providing separate machine bus access to a register file for different types of instructions
US5640582A (en) * 1992-05-21 1997-06-17 Intel Corporation Register stacking in a computer system
JPH06309169A (ja) * 1993-04-27 1994-11-04 Toshiba Corp 情報処理装置
JPH0713765A (ja) * 1993-06-25 1995-01-17 Matsushita Electric Ind Co Ltd 高速データ転送装置
EP0676691A3 (en) 1994-04-06 1996-12-11 Hewlett Packard Co Device for saving and restoring registers in a digital computer.
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
JP3088303B2 (ja) * 1996-09-09 2000-09-18 日本電気アイシーマイコンシステム株式会社 キャッシュ・メモリ・バンク制御装置
TW343318B (en) 1996-09-23 1998-10-21 Advanced Risc Mach Ltd Register addressing in a data processing apparatus
DE69727465T2 (de) * 1997-01-09 2004-12-23 Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto Rechnersystem mit Speichersteuerung für Stossbetrieb-Übertragung
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
US6314513B1 (en) 1997-09-30 2001-11-06 Intel Corporation Method and apparatus for transferring data between a register stack and a memory resource
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
US6078970A (en) * 1997-10-15 2000-06-20 International Business Machines Corporation System for determining adapter interrupt status where interrupt is sent to host after operating status stored in register is shadowed to host memory
US6408325B1 (en) 1998-05-06 2002-06-18 Sun Microsystems, Inc. Context switching technique for processors with large register files
US6243668B1 (en) * 1998-08-07 2001-06-05 Hewlett-Packard Company Instruction set interpreter which uses a register stack to efficiently map an application register state
US6487630B2 (en) * 1999-02-26 2002-11-26 Intel Corporation Processor with register stack engine that dynamically spills/fills physical registers to backing store
US6665793B1 (en) 1999-12-28 2003-12-16 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for managing access to out-of-frame Registers
WO2001082059A2 (en) 2000-04-27 2001-11-01 Sun Microsystems, Inc. Method and apparatus to improve context switch times in a computing system
US6631452B1 (en) * 2000-04-28 2003-10-07 Idea Corporation Register stack engine having speculative load/store modes
US6751749B2 (en) * 2001-02-22 2004-06-15 International Business Machines Corporation Method and apparatus for computer system reliability
JP3737755B2 (ja) * 2001-12-28 2006-01-25 富士通株式会社 レジスタウィンドウ方式によるレジスタファイル及びその制御方法
US6671196B2 (en) * 2002-02-28 2003-12-30 Sun Microsystems, Inc. Register stack in cache memory
US6993603B2 (en) 2002-12-09 2006-01-31 Microsoft Corporation Managed file system filter model and architecture
US7127592B2 (en) * 2003-01-08 2006-10-24 Sun Microsystems, Inc. Method and apparatus for dynamically allocating registers in a windowed architecture
JP2005044124A (ja) * 2003-07-22 2005-02-17 Shinano Kenshi Co Ltd Mpu
GB2417797B (en) * 2004-09-02 2009-05-13 Hewlett Packard Development Co A method and apparatus for managing storage used by a processor when processing instructions
US7600101B2 (en) * 2005-01-13 2009-10-06 Hewlett-Packard Development Company, L.P. Multithreaded hardware systems and methods
US20060294344A1 (en) * 2005-06-28 2006-12-28 Universal Network Machines, Inc. Computer processor pipeline with shadow registers for context switching, and method
US7962731B2 (en) * 2005-10-20 2011-06-14 Qualcomm Incorporated Backing store buffer for the register save engine of a stacked register file
US7844804B2 (en) * 2005-11-10 2010-11-30 Qualcomm Incorporated Expansion of a stacked register file using shadow registers

Also Published As

Publication number Publication date
BRPI0617528A2 (pt) 2011-07-26
EP1941350A2 (en) 2008-07-09
US7962731B2 (en) 2011-06-14
WO2007048128A3 (en) 2007-06-28
US20070094484A1 (en) 2007-04-26
CN101331448A (zh) 2008-12-24
IL190979A0 (en) 2008-12-29
JP2009512941A (ja) 2009-03-26
JP2012234556A (ja) 2012-11-29
KR100974750B1 (ko) 2010-08-06
KR20080064876A (ko) 2008-07-09
CN101331448B (zh) 2012-01-04
WO2007048128A2 (en) 2007-04-26
JP5869009B2 (ja) 2016-02-24
JP2014130606A (ja) 2014-07-10

Similar Documents

Publication Publication Date Title
JP5529212B2 (ja) スタックド・レジスタ・ファイルのレジスタ・セーブ・エンジンのためのバッキング記憶装置バッファ
CA2630594C (en) Expansion of a stacked register file using shadow registers
JP3529888B2 (ja) レジスタ割当て方法及びレジスタファイルポートアクセス装置
US5737624A (en) Superscalar risc instruction scheduling
KR100996753B1 (ko) 시퀀서 어드레스를 관리하기 위한 방법, 맵핑 관리자 및 멀티 시퀀서 멀티스레딩 시스템
US5860138A (en) Processor with compiler-allocated, variable length intermediate storage
US6513107B1 (en) Vector transfer system generating address error exception when vector to be transferred does not start and end on same memory page
US7203820B2 (en) Extending a register file utilizing stack and queue techniques
US20020056024A1 (en) Processor with register stack engine that dynamically spills/fills physical registers to backing store
US6553486B1 (en) Context switching for vector transfer unit
US6631452B1 (en) Register stack engine having speculative load/store modes
Keller et al. Realization of PRAMs: Processor Design
US7206923B2 (en) Method and apparatus for eliminating the need for register assignment, allocation, spilling and re-filling
US6625720B1 (en) System for posting vector synchronization instructions to vector instruction queue to separate vector instructions from different application programs
Quammen et al. Flexible register management for sequential programs
EP0101718B1 (en) Computer with automatic mapping of memory contents into machine registers
Quammen et al. Register window management for a real-time multitasking RISC
Russell et al. A stack-based register set

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130807

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130903

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140106

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140219

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140416

R150 Certificate of patent or registration of utility model

Ref document number: 5529212

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees