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

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

Info

Publication number
JP5869009B2
JP5869009B2 JP2014000322A JP2014000322A JP5869009B2 JP 5869009 B2 JP5869009 B2 JP 5869009B2 JP 2014000322 A JP2014000322 A JP 2014000322A JP 2014000322 A JP2014000322 A JP 2014000322A JP 5869009 B2 JP5869009 B2 JP 5869009B2
Authority
JP
Japan
Prior art keywords
register file
buffer
registers
data
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
JP2014000322A
Other languages
English (en)
Other versions
JP2014130606A (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 JP2014130606A publication Critical patent/JP2014130606A/ja
Application granted granted Critical
Publication of JP5869009B2 publication Critical patent/JP5869009B2/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のサイズの最大値を同じ値とすることができる。
本発明は、本明細書において、その特定の特徴、局面および実施形態に関して説明されてきたが、複数の変形例、改良、および他の実施形態が、本発明の範囲内で可能であり、従って、全ての変形例、改良及び実施形態は、本発明の範囲内にあると見なされる。従って、本実施形態は、全ての局面において、限定的ではなく例示的に解釈され、添付する特許請求の範囲の意味および均等な範囲内における全ての変形は、本明細書に包含されるように意図されている。
なお、以下に、出願当初の特許請求の範囲に記載された発明を付記する。
[C1]専用のバッキング記憶装置バッファを有するスタックド・レジスタ・ファイルを管理する方法であって、
物理レジスタファイルから1つまたは複数のレジスタを第1の手順に割り当て、前記第1の手順に関連するデータを、前記割り当てられたレジスタに記憶することと、
前記第1の手順に関連するデータを、前記専用のバッキング記憶装置バッファへ選択的にセーブし、前記第1の手順に割り当てられた1つまたは複数のレジスタを、第2の手順への割り当てのために解放することと、
前記第1の手順の継続した実行の前に、前記第1の手順に関連するデータを、前記専用のバッキング記憶装置バッファから、1つまたは複数のレジスタへリストアし、前記レジスタを、前記第1の手順に再び割り当てることと
を備える方法。
[C2]前記第1の手順に関連するデータを、前記専用のバッキング記憶装置バッファから、バッキング記憶装置へセーブすることと、その後、前記第1の手順に関連するデータを、1つまたは複数のレジスタへリストアする前に、前記第1の手順に関連するデータを、前記バッキング記憶装置から取り出すこととを更に備えるC1に記載の方法。
[C3]前記バッキング記憶装置バッファ内の、アドレス可能な各記憶場所のビット幅が、前記レジスタのビット幅の整数倍であり、複数のレジスタに記憶される前記第1の手順に関連するデータは、前記バッキング記憶装置バッファ内の、1つのアドレス可能な記憶場所へセーブされるC1に記載の方法。
[C4]前記整数倍における整数は、前記物理レジスタファイルの読取ポートの数であるC3に記載の方法。
[C5]前記レジスタの整数倍における整数は、前記物理レジスタファイルから同時に読み取られ、1つの書き込み動作で前記バッキング記憶装置バッファへ書き込まれるC4に記載の方法。
[C6]バッキング記憶装置バッファはスタックとして実現され、前記第1の手順に関連するデータが前記レジスタから前記バッキング記憶装置バッファへセーブされる場合、データは、前記バッキング記憶装置バッファの頂部へ押し入れられ、前記バッキング記憶装置バッファが一杯である場合、前記第1の手順に関連するデータは、前記バッキング記憶装置バッファの底部から、前記バッキング記憶装置へセーブされるC2に記載の方法。
[C7]前記バッキング記憶装置バッファは、前記スタックド・レジスタ・ファイル専用のオンチップRAMとして実現されるC2に記載の方法。
[C8]前記第1の手順に関連するデータを、前記専用のバッキング記憶装置バッファへ選択的にセーブすることは、前記物理レジスタファイル内に、前記第2の手順に割り当てるために十分な未割当レジスタが残っていないときのみ、前記第1の手順に関連するデータを、前記専用のバッキング記憶装置バッファへセーブすることを備えるC1に記載の方法。
[C9]前記第1の手順に関連するデータを、前記専用のバッキング記憶装置バッファへ選択的にセーブすることは、前記第1の手順に関連するデータのみを、前記専用のバッキング記憶装置バッファへセーブすることを備えるC1に記載の方法。
[C10]少なくともプロセッサ命令セットアーキテクチャ内で定められる汎用レジスタの数と同じ数の、ソフトウェア手順に動的に割り当てられるレジスタを備える物理レジスタファイルと、
データを、アクティブでない手順に割り当てられたレジスタから選択的にセーブし、前記手順がアクティブになる前に、前記レジスタへデータをリストアするように動作するレジスタセーブエンジンと、
前記レジスタセーブエンジン専用であり、前記アクティブでない手順に割り当てられたレジスタからセーブされた前記データを記憶するように動作するバッキング記憶装置バッファと
を備えるプロセッサ。
[C11]前記バッキング記憶装置バッファ内のアドレス可能なエントリーは、前記物理レジスタファイル内のレジスタのビット幅の整数倍であるビット幅を有するC10に記載のプロセッサ。
[C12]前記物理レジスタファイルはマルチポートであり、前記整数倍は、前記物理レジスタファイルの読取ポートの数であるC11に記載のプロセッサ。
[C13]前記レジスタセーブエンジンは、前記レジスタの整数倍における整数の、前記物理レジスタファイルからの読み取りと、前記レジスタの整数倍における整数の、前記バッキング記憶装置バッファへの書込みとを、1つの書込動作において同時に行うように動作するC12に記載のプロセッサ。
[C14]前記バッキング記憶装置バッファが一杯である場合、前記アクティブでない手順に割り当てられたレジスタからセーブされたデータを記憶するように動作するバッキング記憶装置を更に備えるC10に記載のプロセッサ。
[C15]前記バッキング記憶装置バッファは、スタックの頂部に押し入れられた1つまたは複数のレジスタからデータを記憶し、前記スタックの頂部からポップされたデータを、1つまたは複数の物理レジスタへリストアするように動作する前記スタックとして実現されるC14に記載のプロセッサ。
[C16]前記バッキング記憶装置バッファは、前記バッキング記憶装置バッファが最大容量に近づく場合、データを、前記スタックの底部から、前記バッキング記憶装置へ記憶するように動作し、前記バッキング記憶装置バッファが、前記物理レジスタファイル内のレジスタへデータをリストアすることによって、容量を獲得する場合、データを、前記バッキング記憶装置から、前記スタックの底部へ取り出すように動作するC15に記載のプロセッサ。
[C17]前記バッキング記憶装置バッファは、前記レジスタセーブエンジン専用のオンチップRAMとして実現されるC14に記載のプロセッサ。
[C18]前記バッキング記憶装置はキャッシュメモリであるC14に記載のプロセッサ。
[C19]前記バッキング記憶装置はオフチップRAMであるC14に記載のプロセッサ。

Claims (17)

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

Applications Claiming Priority (2)

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

Related Parent Applications (1)

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

Publications (2)

Publication Number Publication Date
JP2014130606A JP2014130606A (ja) 2014-07-10
JP5869009B2 true JP5869009B2 (ja) 2016-02-24

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 (2)

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 スタックド・レジスタ・ファイルのレジスタ・セーブ・エンジンのためのバッキング記憶装置バッファ

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寄存器缓存的实现方法
US9971604B2 (en) 2015-02-26 2018-05-15 International Business Machines Corporation History buffer for multiple-field registers
US9996353B2 (en) 2015-02-26 2018-06-12 International Business Machines Corporation Universal history buffer to support multiple register types
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
US10552164B2 (en) 2017-04-18 2020-02-04 International Business Machines Corporation Sharing snapshots between restoration and recovery
US10564977B2 (en) 2017-04-18 2020-02-18 International Business Machines Corporation Selective register allocation
US10545766B2 (en) 2017-04-18 2020-01-28 International Business Machines Corporation Register restoration using transactional memory register snapshots
US10489382B2 (en) 2017-04-18 2019-11-26 International Business Machines Corporation Register restoration invalidation based on a context switch
US10838733B2 (en) 2017-04-18 2020-11-17 International Business Machines Corporation Register context restoration based on rename register recovery
US10782979B2 (en) 2017-04-18 2020-09-22 International Business Machines Corporation Restoring saved architected registers and suppressing verification of registers to be restored
US10649785B2 (en) 2017-04-18 2020-05-12 International Business Machines Corporation Tracking changes to memory via check and recovery
US10963261B2 (en) 2017-04-18 2021-03-30 International Business Machines Corporation Sharing snapshots across save requests
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
US10740108B2 (en) 2017-04-18 2020-08-11 International Business Machines Corporation Management of store queue based on restoration operation
US11010192B2 (en) * 2017-04-18 2021-05-18 International Business Machines Corporation Register restoration using recovery buffers
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
AU2001257323A1 (en) 2000-04-27 2001-11-07 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
KR20080064876A (ko) 2008-07-09
BRPI0617528A2 (pt) 2011-07-26
JP2012234556A (ja) 2012-11-29
US20070094484A1 (en) 2007-04-26
WO2007048128A3 (en) 2007-06-28
JP2009512941A (ja) 2009-03-26
CN101331448A (zh) 2008-12-24
CN101331448B (zh) 2012-01-04
IL190979A0 (en) 2008-12-29
KR100974750B1 (ko) 2010-08-06
EP1941350A2 (en) 2008-07-09
US7962731B2 (en) 2011-06-14
JP2014130606A (ja) 2014-07-10
JP5529212B2 (ja) 2014-06-25
WO2007048128A2 (en) 2007-04-26

Similar Documents

Publication Publication Date Title
JP5869009B2 (ja) スタックド・レジスタ・ファイルのレジスタ・セーブ・エンジンのためのバッキング記憶装置バッファ
CA2630594C (en) Expansion of a stacked register file using shadow registers
JP3529888B2 (ja) レジスタ割当て方法及びレジスタファイルポートアクセス装置
KR100996753B1 (ko) 시퀀서 어드레스를 관리하기 위한 방법, 맵핑 관리자 및 멀티 시퀀서 멀티스레딩 시스템
US5860138A (en) Processor with compiler-allocated, variable length intermediate storage
JP3634379B2 (ja) スタックキャッシングのための方法及び装置
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
US6487630B2 (en) Processor with register stack engine that dynamically spills/fills physical registers to backing store
US6631452B1 (en) Register stack engine having speculative load/store modes
Silberschatz et al. Operating systems
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
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150303

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150603

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150616

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150916

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151016

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160106

R150 Certificate of patent or registration of utility model

Ref document number: 5869009

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

LAPS Cancellation because of no payment of annual fees