JP2001229022A - コンピュータ処理システムにおけるスタック・リファレンスのリネーム方法およびそのプログラム記憶装置 - Google Patents

コンピュータ処理システムにおけるスタック・リファレンスのリネーム方法およびそのプログラム記憶装置

Info

Publication number
JP2001229022A
JP2001229022A JP2001015920A JP2001015920A JP2001229022A JP 2001229022 A JP2001229022 A JP 2001229022A JP 2001015920 A JP2001015920 A JP 2001015920A JP 2001015920 A JP2001015920 A JP 2001015920A JP 2001229022 A JP2001229022 A JP 2001229022A
Authority
JP
Japan
Prior art keywords
stack
register
location
instruction
memory
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
JP2001015920A
Other languages
English (en)
Other versions
JP3564072B2 (ja
Inventor
K Gushuvindo Michael
マイケル・ケイ・グシュヴィンド
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2001229022A publication Critical patent/JP2001229022A/ja
Application granted granted Critical
Publication of JP3564072B2 publication Critical patent/JP3564072B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 【課題】 コンピュータ処理システムにおいてスタック
場所に対するメモリ参照をリネームする方法を提供す
る。 【解決手段】 この方法は、アーキテクチャ的に定義さ
れたスタック・アクセス方法を使用するスタック参照を
検出するステップと、前記スタック参照をプロセッサ内
部レジスタに対する参照に置き換えるステップとを含
む。アーキテクチャ的に定義されたスタック・アクセス
方法は、スタック・ポインタとフレーム・ポインタと引
数ポインタとのうちの1つを使用するメモリ・アクセス
を含む。さらに、アーキテクチャ的に定義されたスタッ
ク・アクセス方法は、プッシュ、ポップ、およびその他
のスタック操作動作を含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般にはコンピュ
ータ処理システムに関し、より詳細には、コンピュータ
処理システムにおいてスタック・リファレンスをリネー
ムする方法に関する。
【0002】
【従来の技術】メモリは、コンピュータ処理システムに
おける情報のリポジトリとして機能する。図1は、従来
の技術によるコンピュータ・プログラムのメモリ100
の典型的なレイアウトを示すブロック図である。このレ
イアウトは、プログラム・テキスト領域104、プログ
ラム・データ領域106、ヒープ108、およびプログ
ラム・スタック110を含む、明確に区別されたメモリ
領域から成る。プログラム・テキスト領域104は、プ
ログラム・テキスト(すなわちコンピュータ命令)を格
納するために使用される。プログラム・データ領域10
6は、(静的データ参照用の)プログラム・データを格
納するために使用される。ヒープ108は、動的割振り
オブジェクト(dynamically allocated objects)のた
めに使用され、プログラム・スタック110は、関数の
ローカル変数のために使用される。
【0003】図のように、メモリ100には、異なるタ
イプのデータが明確に区別されたメモリ領域に格納され
る。これらのメモリにアクセスするには、以下の異なる
各機構が使用される。 1.プログラム・テキスト領域104には、プログラム
の内容を記述するコンピュータ命令と、場合によって
は、プログラム定数が格納される。プログラム・テキス
ト領域104は、通常読取り専用で、プログラム・カウ
ンタを使用してアクセスされる。 2.プログラム・データ領域106には、静的データ参
照、たとえばグローバル・プログラム変数が保持され
る。プログラム・データ領域106には、グローバル・
データ・ポインタまたは目次データ構造のテーブルを使
用してアクセスする。 3.ヒープ108には、動的割振りオブジェクトが保持
され、いずれかのプロセッサ・レジスタに保持されたポ
インタを使用してアクセスする。 4.プログラム・スタック110には、通常、関数ロー
カル変数が保持され、スタック・ポインタ(SP)、フ
レーム・ポインタ(FP)、または引数ポインタ(A
P)などの特殊目的レジスタを使用してアクセスする。
【0004】通常、すべてのプログラム・メモリには、
レジスタに格納されたポインタを使用してアクセスする
ことができる。しかし、上述のアクセス機構は、典型的
なプログラム中の各領域のために一般的に使用される。
【0005】一般に、プロセッサは、メモリからの情報
にアクセスし、それに対して演算を行い、その結果をメ
モリに格納し戻す。残念ながら、メモリ・アクセスは、
いくつかの犠牲を要する。それらの犠牲の一部を以下に
説明する。
【0006】メモリ・アクセス動作が最初に検出される
と、アクセスするアドレスを解決する必要がある。さら
に、アドレス計算に使用されるレジスタが使用可能でな
ければならない。
【0007】プロセッサが他のメモリ動作に関してメモ
リ読取り動作をリオーダする必要があって、リオーダす
る時点で読み取られたアドレスが異なっていることを判
断することができない場合、メモリ・アドレスの曖昧性
の検査を行う必要がある。
【0008】さらに、ストア動作によってプロセッサ状
態が変更されるため、一般には、ストア動作は順に(イ
ン・オーダ:in-order)実行しなければならない。この
ため、同じ記憶場所に複数の活性範囲(live range)が
割り当てられている場合、逐次化動作によって、達成可
能プロセッサ・パフォーマンスがさらに低速化する。し
たがって、一般には、同じメモリ・アドレスに複数の独
立した値が割り当てられている場合、スーパースカラ・
プロセッサにおいて行うことができるリオーダの程度が
制限される。
【0009】さらに、ロード動作およびストア動作は、
一般にはキャッシュへのアクセスを必要とする。しか
し、キャッシュへのアクセスは、コンピュータ処理シス
テムのメモリ階層内でより上位の層であるプロセッサ・
レジスタへのアクセスと比較して低速である。
【0010】メモリ参照の逐次化効果の多くは、プログ
ラマによるプログラムの作成方法による。しかし、メモ
リ参照の逐次化効果は、プログラムをソース・レベル表
現から実マシンへの変換方法により生じることもある。
そのような場合、プログラム・スタックへの参照が行わ
れる。
【0011】プログラム・スタックには、スタック・フ
レーム、すなわち関数のローカル変数の値を含むレコー
ドと、関数間で受け渡しされるパラメータが格納され
る。スタック場所は頻繁に再使用され、異なる関数が、
同じアドレスを持つ記憶場所を使用して関連性のないオ
ブジェクトを格納する。
【0012】Cプログラム言語で作成された以下のコー
ド例を考えてみる。
【0013】このコードをIntel x86マシン・
コードに変換すると、以下の命令が生成される。 1 mult3: 2 imull $3.4(%esp),%eax 3 ret 4 5 inc: 6 movl 4(%esp),%eax 7 incl %eax 8 ret 9 10 compute: 11 pushl %esi 12 pushl %ebx 13 movl 12(%esp),%eax 14 movl 16(%esp),%ebx 15 push %eax 16 call mult3 17 addl $4,%esp 18 movl %eax,%esi 19 pushl %ebx 20 call inc 21 addl $4,%esp 22 addl %esi,%eax 23 popl %ebx 24 popl %esi 25 ret 上掲のコードは、以下のようなメモリ内でプロセッサ・
スタックを保持する非効率性の例をいくつか示してい
る。 1.レジスタESIおよびEBXの値が命令11および
12でスタックに格納され、命令23および24でリス
トアされる。これらの値は、プロセッサ内部レジスタに
保持することができたはずである。 2.呼出し関数によってスタックにプッシュされたパラ
メータaおよびbを、スタックからプロセッサ・レジス
タに読み込み、次に、それぞれ関数mult3およびi
ncのためにスタックに格納しなければならない。 3.それぞれ関数mult3およびincのパラメータ
aおよびbが同じスタック場所に格納され、したがっ
て、関数incからの動作を関数mult3の命令と同
時にスケジュールすることはできない。この逐次化は不
要である。
【0014】ポスティフ(Postiff)等の「The Limits
of Instruction Level Parallelismin SPEC95 Applicat
ions」(Architectural Support for Programming Lang
uages and Operating Systemsに関する国際会議 (ASPLO
S-VIII) Workshop on Interaction between Compilers
and Computer Archtectures (INTERACT-3)、1998年10
月)には、記憶場所の再使用とスタック・ポインタの操
作によるスタック参照の逐次化効果について記載されて
いる。ポスティフ等は、さらに、これらの逐次化効果を
解決することによって達成可能なパフォーマンス向上に
ついて記載している。
【0015】
【発明が解決しようとする課題】従来のメモリ・リネー
ムは、一般メモリ参照に基づいており、マルチプロセッ
サ効果を無視する傾向があったことを理解する必要があ
る。これらの従来技術の手法のいくつかについて、以下
に説明する。
【0016】メモリ・リネームは、一般に、データ依存
関係の予測を含むことを理解されたい。A.モショフォ
ス(Moshovos)およびG.ソヒ(Sohi)による「Streaml
ining Inter-operation Memory Communication via Dat
a Dependence Prediction」(Microarchitecture Resea
rchに関する第30回年次国際会議議事録、米国ノース
カロライナ州トライアングル・パーク、1997年12月)に
は、アドレス計算なしにデータ依存関係を動的に予測す
る機構について記載されている。依存関係の予測が必要
なのは、ロード動作およびストア動作のアドレスは解決
されないことがあるためである。予測の正確さを保証す
るには、最終的にこれらのメモリ動作を実行する必要が
ある。依存関係を予測する同様の手法については、G.
タイソン(Tyson)およびT.オースチン(Austin)に
よる「Improving the Accuracy and Performance of Me
mory Communication Through Renaming」(Microarchit
ecture Researchに関する第30回年次国際シンポジウ
ム議事録、米国ノースカロライナ州トライアングル・パ
ーク、1997年12月)に記載されている。モショフォスお
よびソヒと、タイソンおよびオースチンは、メモリへの
アクセスをプロセッサ内部レジスタにプロモートする汎
用技法を提供する。これは、かなり複雑なハードウェア
を必要とする。さらに、命令の実際のデコードほど正確
でなく、高くつく修復処置を必要とすることもある予測
を使用する。M.フランクリン(Franclin)およびG.
ソヒ(Sohi)による「ARB: A Hardware Mechanism for D
ynamic Reordering of Memory References」(IEEE Tra
nsactions on Computers, Vol.45, No.5、1996年5月)
には、メモリ動作の順序外れ(アウト・オブ・オーダ:
out-of-order)実行とメモリ・リネームをサポートする
アドレス解決バッファについて記載されている。このバ
ッファは高価であり、必要なハードウェアが複雑で、バ
ッファはマルチプロセッサ・システムおよびその整合性
要件について考慮していないという欠点がある。
【0017】米国特許第5911057号には、メモリ
およびレジスタ・オペランドのリネームを一様な方法で
行うアーキテクチャが記載されている。メモリ・コヒー
レンシは、メモリ要求の「スヌープ」に基づいている。
この手法は、マルチプロセッサ・コンピューティング・
システムにおけるメモリ動作のイン・オーダ実行には十
分であるが、マルチプロセッサ・システムにおけるアウ
ト・オブ・オーダ動作では不正な結果を生じることがあ
る。米国特許第5838941号には、メモリ参照のシ
ンボリック・リネームについて記載されている。その発
明は、あらゆるタイプの等価性を扱い、式と名前の間の
等価性を確立するために連想配列のロックアップを要す
る。その結果、サイクル時間に重大な影響を与える可能
性のある複雑なアーキテクチャになる。
【0018】したがって、スタック参照によって生じる
逐次化効果をなくす方法を設けることが望ましく、きわ
めて有利であろう。そのような方法がマルチプロセッサ
・システムに適用可能であれば、さらに望ましく、有利
であろう。
【0019】
【課題を解決するための手段】従来技術の上述の問題お
よびその他の関連する問題は、本発明、すなわちコンピ
ュータ処理システムにおけるスタック参照をリネームす
る方法によって解決される。
【0020】本発明の第1の態様によると、コンピュー
タ処理システムにおけるスタック場所のメモリ参照をリ
ネームする方法が提供される。この方法は、アーキテク
チャ的に定義されたスタック・アクセス方法を使用する
スタック参照を検出するステップと、そのスタック参照
をプロセッサ内部レジスタに対する参照に置き換えるス
テップとを含む。
【0021】本発明の第2の態様によると、この方法
は、プロセッサ内部レジスタとコンピュータ処理システ
ムのメイン・メモリとの間のアーキテクテッド状態を同
期化するステップをさらに含む。
【0022】本発明の第3の態様によると、この方法
は、書き込みスタック参照であるすべてのスタック参照
のためにイン・オーダ書き込み動作を挿入するステップ
をさらに含む。
【0023】本発明の第4の態様によると、アーキテク
チャ的に定義されたスタック・アクセス方法を使用しな
いスタック参照のための整合性維持動作を行うステップ
をさらに含む。
【0024】本発明の第5の態様によると、整合性維持
動作を行うステップは、所与のプロセッサ内部レジスタ
から値を、スタック領域を参照し、アーキテクチャ的に
定義されたスタック・アクセス方法を使用しないロード
動作にバイパスするステップを含む。
【0025】本発明の第6の態様によると、アーキテク
チャ的に定義されたスタック・アクセス方法は、スタッ
ク・ポインタとフレーム・ポインタと引数ポインタとの
うちの一つを使用するメモリ・アクセスを含む。
【0026】本発明の第7の態様によると、アーキテク
チャ的に定義されたスタック・アクセス方法は、プッシ
ュ、ポップ、およびその他のスタック操作動作を含む。
【0027】本発明の第8の態様によると、コンピュー
タ処理システムにおいてスタック場所のメモリ参照をリ
ネームする方法が提供される。この方法は、ロード命令
がスタック場所にアクセスするためにアーキテクチャ的
に定義されたレジスタを使用してローカル・スタック内
の場所を参照するか否かを判断するステップを含む。ロ
ード命令がアーキテクチャ的に定義されたレジスタを使
用してその場所を参照する場合、ローカル・スタック内
の参照場所のためにリネーム・レジスタが存在するか否
かを判断する。リネーム・レジスタが存在する場合、そ
の場所に対する参照は、リネーム・レジスタに対する参
照に置き換えられる。
【0028】
【発明の実施の形態】本発明は、コンピュータ処理シス
テムにおいてスタック参照をリネームする方法を対象と
する。本発明によると、スタック参照は、プロセッサ内
部レジスタにリネームされる。スタック参照のための頻
繁なリネーム機会に集中することによって、メモリ参照
をリネームする従来技術の手法より、リネーム・アーキ
テクチャをより効率的に実施することができる。
【0029】このような効率は、2つの態様から得られ
る。第1の態様については、プロセッサ・スタックへの
参照が、スタック・ポインタやフレーム・ポインタなど
の限られた数のアドレス指定レジスタを使用するため、
名前がより判断しやすい。これにより、異なる汎用レジ
スタを使用して記憶場所をリネームする際に生じる可能
性がある曖昧性が低減される。他のレジスタを使用した
アクセスも可能であるが、それらは、単純な一義化技法
を使用して処理することができるほどまれである。
【0030】第2の態様については、スタック参照は通
常、ローカル・プロセスからのみ参照されるため、マル
チプロセッサ・システムにおいて整合性維持動作を行う
必要が大幅に削減される。この場合も、他のプロセッサ
からの参照が可能であるが、まれにしかないため、単純
な技法を使用して解決することができる。
【0031】プロセッサ・レジスタに対するスタック参
照のリネームによって、スタック参照が、参照のリオー
ダ、リネームによる逆依存(anti-dependencies)の解
決、および書込み動作の投機実行など、一般にプロセッ
サ・レジスタに適用されるいくつかの最適化が適用され
るようになることを理解されたい。
【0032】本発明を明確に理解しやすいように、本明
細書で使用する用語の定義を以下に示す。ロード命令と
は、メモリ読取りアクセスと、(任意選択により)ロー
ド値に基づく計算を行うあらゆる命令を指す。したがっ
て、ロード命令には、たとえば、記憶場所内のデータを
オペランドとして使用する論理、算術、およびその他の
命令が含まれる。ストア命令とは、メモリ書込みアクセ
スと、任意選択により計算を行うあらゆる命令を指す。
アウト・オブ・オーダ実行とは、後で現れる動作に必要
な資源が解放されている場合、命令の順次ストリーム内
の動作を、後で現れる動作を先に実行するようにリオー
ダする技法である。したがって、命令を命令シーケンス
内の元の位置から命令シーケンスのうちの早い位置に移
動させることによって、アウト・オブ・オーダ命令を静
的にも動的にも作成することができる。
【0033】以下の説明および対応する各例は、(特に
明記しない限り)2つの命令に基づいて示す。第1の命
令は、イン・オーダ命令と呼ぶ論理的に先行する第2の
命令の前に、アウト・オブ・オーダ実行される。したが
って、特に明記のない限り、「イン・オーダ」という表
記は、論理的に先行するイン・オーダ命令と第1の「ア
ウト・オブ・オーダ」命令との順次関係のみを指す。上
記の2つの命令(すなわち、イン・オーダ・ロード命令
とアウト・オブ・オーダ・ロード命令の両方)は、第3
の命令(およびそれ以降の命令)を基準にしてイン・オ
ーダまたはアウト・オブ・オーダであることに留意され
たい。
【0034】本発明の概念を紹介するために、本発明に
ついて以下に概説する。その後で、本発明の様々な態様
について詳述する。
【0035】本発明は、(すべてのメモリ参照をリネー
ムするのではなく)メモリ・スタック参照のみをリネー
ムすることによって、メモリ・リネームの問題を簡略化
する。このような手法は、少なくとも以下の理由により
有利である。 1.スタック参照の逐次化効果によるパフォーマンス低
下は、変換プロセスによって人為的に引き起こされ、プ
ログラムに内在するものではない。 2.スタック参照をリネームするだけで、大幅なパフォ
ーマンス向上を達成することができる。 3.(メモリ内の任意の場所を指し得る他のレジスタと
は異なり)スタック・ポインタとフレーム・ポインタは
明確に定義されたセマンティクスを有するため、スタッ
ク・アクセスの「名前」が判断しやすい。 4.スタック参照は、通常、1つのプロセスおよび単一
のプロセッサに局在的であり、スタック・ポインタまた
はフレーム・ポインタを介して行われるため、マルチプ
ロセッサの整合性の重要度が低くなる。 5.スタックへの参照は通常、スタック・ポインタまた
はフレーム・ポインタを介して行われるため、命名等価
性の検出が容易である(フレーム・ポインタは通常、ス
タック・ポインタからの明確に定義された距離にあ
る)。
【0036】メモリへの異なる参照間の整合性は、スタ
ック参照が通常、ローカル・プロセッサ・スタックのみ
に対するものであり、スタック・ポインタ(SP)やフ
レーム・ポインタ(FP)、任意選択の引数ポインタ
(AP)など、そのスタックを管理するように特に指定
されたレジスタのみを介するということを遵守すること
によって、解決することができる。
【0037】これらの特に指定されたスタック管理レジ
スタ以外の手段による1つのプロセッサのスタック領域
に対する参照があると、整合性を維持する処置が行われ
る。そのような参照は容易に検出することができる。た
とえば、汎用レジスタ(たとえば、SP、FP、APな
どのスタック・レジスタ以外のレジスタ)によるローカ
ル・プロセッサ・スタックへのアクセスは、そのスタッ
クを含むページ・テーブル項目にタグ付けし、メモリ・
ユニット内の条件を示すことによって検出することがで
きる。その後、プロセッサはこの状況をハードウェアで
処理するか、または例外を起こして例外ハンドラ内でそ
の条件を解決することができる。他の例として、マルチ
プロセッシングシステムでは、変換索引バッファ(TL
B)で項目を使用可能にせず、それによって例外をとっ
てソフトウェア内の条件を処理するか、またはページを
使用してそのスタックをリモート・プロセッサに格納す
ることをTLBで示すことによって、別のプロセッサの
スタックへのアクセスを検出することができる。
【0038】図2は、本発明の例示の実施形態による、
単一の命令の初期処理を行う方法を示す流れ図である。
【0039】命令は、プログラム・メモリ100からフ
ェッチされる(ステップ210)。次に、フェッチした
命令がメモリ動作であるか否か(すなわち、フェッチし
た命令がメモリ100を参照するか否か)を判断する
(ステップ212)。メモリ動作である場合、そのメモ
リ動作が本発明により処理される(ステップ214)。
この具体的な処理ステップを、読取りアクセスのために
メモリを参照する命令の場合を図3および図4に詳細に
示し、書込みアクセスのためにメモリを参照する命令の
場合を図5に示す。
【0040】フェッチした命令がメモリ動作でない場
合、プロセッサ・レジスタに対する参照がリネームされ
る(ステップ216)。ステップ216は任意選択であ
り、したがって、所望であれば省くことができることを
理解されたい。次に命令は、実行ユニットの1つにディ
スパッチするためにディスパッチ・テーブルに入れられ
(ステップ218)、この方法は終了する。
【0041】図3は、本発明の例示の実施形態によるロ
ード動作(たとえば図2のステップ214)の処理を示
す流れ図である。一般に、メモリ読取り参照のためのリ
ネーム・レジスタが見つかった場合、そのメモリ読取り
参照はリネーム・レジスタに対する参照に置き換えられ
る。見つからなかった場合は、メモリに記憶されている
スタック場所からのロードが行われる。
【0042】図3の方法によると、ロード命令が、スタ
ック・ポインタSPまたはフレーム・ポインタFPを使
用してローカル・スタック内の場所を参照するか否かを
判断する(ステップ310)。アーキテクチャによって
は、任意選択により、ステップ310で、ロード命令
が、DEC VAXアーキテクチャにおける引数ポイン
タAPなど、スタック場所にアクセスするために使用さ
れる追加のポインタを参照するか否かを判断することが
できる。ロード命令は、SP、FP、またはAPレジス
タを明示的に参照する必要はなく、そのようなポインタ
を少なくとも1つ暗黙的に参照する(たとえばInte
l x86アーキテクチャに見られるような)プッシュ
やポップなどの命令とすることもできる。
【0043】ロード命令がスタック・ポインタSPまた
はフレーム・ポインタFPを使用してローカル・スタッ
ク内の場所を参照する場合、この方法はステップ320
に進む。それ以外の場合は、ロード命令が他のレジスタ
を使用してスタック内の場所を参照するか否かが判断さ
れる(ステップ314)。ローカル・スタック場所のみ
にかかわるステップ310で行われる判断とは異なり、
ステップ314で行われる判断は、ローカルまたはリモ
ートの両方のスタック場所を含む。
【0044】ステップ314は、デコード、アドレス生
成、またはメモリ・アクセス段階のいずれかで行うこと
ができる。本発明の例示の実施形態によると、ステップ
314の一実施形態は、スタック110(図1参照)内
のページのTLB項目を、スタック参照を含むものとし
てマークすることを含めることができる。
【0045】ロード命令が他のレジスタを使用してスタ
ック内の場所を参照しない場合、通常のロード動作(す
なわち、メイン・メモリまたはキャッシュからのロード
動作)を行い、その後でこの方法は終了する(ステップ
316)。しかし、ロード命令が他のレジスタを使用し
てスタック内の場所を参照する場合、整合性維持機構が
実行され、スタック領域からのロード動作が行われる
(ステップ318)。整合性維持機構は、ハードウェ
ア、ソフトウェア、またはその組合せで実施することが
できる。整合性維持機構の例示の実施形態については、
以下で詳述する。
【0046】ステップ320で、ローカル・スタック内
の参照場所のためのリネーム・レジスタが存在するか否
かを判断する。ステップ320は、スタック・ポインタ
からの変位100を有するメモリ参照のためのシンボリ
ック・アドレス、すなわち「(SP)+100」を使用
して、または参照場所のアドレスを実際に計算すること
によって行うことができる。
【0047】ローカル・スタック内の参照場所のための
リネーム・レジスタが存在する場合、スタック場所に対
する参照はリネーム・レジスタに対する参照に置き換え
られ、この方法は終了する(ステップ322)。しか
し、ローカル・スタック内の参照場所のためのリネーム
・レジスタが存在しない場合、通常のロード命令(すな
わち、メイン・メモリまたはキャッシュからのロード命
令)が、命令ストリームに挿入され、この方法は終了す
る。
【0048】メモリ・リネームをスタック参照に限定す
ることによって、前述の従来技術の各メモリ・リネーム
手法に対して、アドレス解決が簡略化されるという利点
が得られる。したがって、前記で引用した「Streamlini
ng Inter-Operation MemoryCommunication via Data De
pendence Prediction」という標題の論文でA.モショ
フォス(Moshovos)およびG.ソヒ(Sohi)が使用した
データ依存関係予測とは異なり、命令をデコードするこ
とによって実際の依存関係を判断することができる。
【0049】さらに、他のシンボリック・リネーム技法
とは異なり、スタック参照のシンボリック・リネーム
は、米国特許第5838941号のように、等価性を判
断するための複雑な論理を必要としない。本発明の手法
では、すべての参照が、互いからの容易に判断可能なオ
フセット位置にあるスタック・レジスタの1つを介す
る。
【0050】図3の方法は、スタック・ポインタ値が変
更されると(たとえばサブルーチン呼出し時)、参照の
調整を必要とすることを理解されたい。しかし、そのよ
うな調整は、当業者なら容易に行うことができる。
【0051】スタック・ポインタおよびフレーム・ポイ
ンタの値は判断しやすく、まれにしか変化しないため、
絶対アドレスの使用も簡単になる。具体的には、これら
のレジスタに加えられる変更は、単純な算術演算で済
み、この算術演算はスタック参照リネーム論理における
リネームにのみ使用されるシャドウ・スタック・ポイン
タを使用して投機的に行うことができる。
【0052】図4は、本発明の他の例示の実施形態によ
るロード動作の処理(たとえば図2のステップ214)
を示す流れ図である。一般に、スタック場所のためのリ
ネーム・レジスタが見つかった場合、メモリ参照はリネ
ーム・レジスタに対する参照に置き換えられる。見つか
らない場合、新しいリネーム・レジスタが割り振られス
タックからリネーム・レジスタに値をロードする命令が
命令ストリームに挿入され、記憶場所に対する元の参照
が新たに割り振られたリネーム・レジスタに対する参照
に置き換えられる。
【0053】図4の方法によると、ロード命令がスタッ
ク・ポインタSPまたはフレーム・ポインタFPを使用
してローカル・スタック内の場所を参照するか否かが判
断される(ステップ410)。アーキテクチャによって
は、ステップ410は、任意選択により、ロード命令
が、DEC VAXアーキテクチャにおける引数ポイン
タAPなど、スタック場所にアクセスするために使用さ
れる追加のポインタを参照するか否かを判断することが
できる。ロード命令は、SP、FP、またはAPレジス
タを明示的に参照する必要はなく、そのようなポインタ
を少なくとも1つ暗黙的に参照する(たとえばInte
l x86アーキテクチャに見られるような)プッシュ
やポップなどの命令とすることもできる。
【0054】ロード命令がスタック・ポインタSPまた
はフレーム・ポインタFPを使用してローカル・スタッ
ク内の場所を参照する場合、この方法はステップ420
に進む。それ以外の場合は、ロード命令が他のレジスタ
を使用してスタック内の場所を参照するか否かが判断さ
れる(ステップ414)。ステップ414は、デコー
ド、アドレス生成、またはメモリ・アクセス段階のいず
れかで行うことができる。本発明の例示の実施形態によ
ると、ステップ414の一実施態様は、スタックメモリ
領域(図1参照)内のページのTLB項目を、スタック
参照を含むものとしてマークすることを含めることがで
きる。
【0055】ロード命令が、他のレジスタを使用してス
タック内の場所を参照しない場合、通常のロード動作
(すなわち、メイン・メモリまたはキャッシュからのロ
ード動作)が行われ、この方法は終了する(ステップ4
16)。しかし、ロード命令が他のレジスタを使用して
スタック内の場所を参照する場合は、整合性維持機構が
実行され、スタック領域からのロード動作が行われる
(ステップ418)。整合性維持機構は、ハードウェ
ア、ソフトウェア、またはその組合せで実施することが
できる。整合性維持機構の例示の実施形態については、
以下で詳述する。
【0056】ステップ420で、参照場所のためのリネ
ーム・レジスタが存在するか否かが判断される。この検
査は、スタック・ポインタからの変位100によるメモ
リ参照のためのシンボリック・アドレス、すなわち
「(SP)+100」を使用するか、または参照場所の
アドレスを実際に計算することによって行うことができ
る。メモリ・リネームをスタック参照に限定することに
より、図3を参照しながら前述した利点が得られる。
【0057】使用する命名技法に関係なく、参照場所の
ためのリネーム・レジスタが存在する場合、スタック場
所に対する参照はリネーム・レジスタに対する参照に置
き換えられ、この方法は終了する(ステップ422)。
しかし、参照場所のためのリネーム・レジスタが存在し
ない場合は、ロード動作によって参照されたスタック場
所のためにリネーム・レジスタが割り振られる(ステッ
プ424)。次に、プロセッサから新たに割り振られた
リネーム・レジスタに値をロードするロード命令が命令
ストリームに挿入され(ステップ426)、この方法は
ステップ422に戻る。
【0058】図5は、本発明の例示の実施形態による、
(たとえば図6のユニット620における)ストア動作
の処理を示す流れ図である。
【0059】ストア命令がスタック・ポインタSPまた
はフレーム・ポインタFPを使用してローカル・スタッ
ク内の場所を参照するか否かが判断される(ステップ5
10)。アーキテクチャによっては、任意選択により、
ステップ510で、ストア命令が、DEC VAXアー
キテクチャにおける引数ポインタAPなど、スタック場
所にアクセスするために使用される追加のポインタを参
照するか否かを判断することができる。ストア命令は、
SP、FP、またはAPレジスタを明示的に参照する必
要はなく、そのようなポインタを少なくとも1つ暗黙的
に参照する(たとえばIntel x86アーキテクチ
ャに見られるような)プッシュやポップなどの命令とす
ることもできる。
【0060】ストア命令がスタック・ポインタSPまた
はフレーム・ポインタFPを使用してローカル・スタッ
ク内の場所を参照する場合、この方法はステップ520
に進む。そうでない場合は、ストア命令が他のレジスタ
を使用してスタック内の場所を参照するか否かが判断さ
れる(ステップ514)。ステップ510で行うローカ
ル・スタック場所のみに関する判断とは異なり、ステッ
プ514で行う判断はローカルとリモートの両方のスタ
ック場所を対象とする。ステップ514は、デコード、
アドレス生成、またはリモート・アクセス段階のいずれ
かで行うことができる。本発明の例示の実施形態による
と、ステップ514の一実施態様は、スタック・メモリ
領域(図1を参照)内のページのTLB項目をスタック
参照を含むものとしてマークすることを含む。
【0061】ストア命令が他のレジスタを使用してスタ
ック内の場所を参照しない場合は、通常のストア動作
(すなわちメイン・メモリまたはキャッシュからのスト
ア動作)を行い、この方法は終了する(ステップ51
6)。しかし、命令が他のレジスタを使用してスタック
内の場所を参照する場合は、整合性維持機構を実行して
スタック領域へのストア動作が行う(ステップ51
8)。整合性維持機構は、ハードウェア、ソフトウェ
ア、またはその組合せで行うことができる。整合性維持
機構の例示の実施形態については、以下で詳述する。
【0062】ステップ520で、ストア動作によって参
照されたスタック場所のために新しいリネーム・レジス
タが割り振られる。リネーム・レジスタは、スタック・
ポインタからの変位100によるメモリ参照のためのシ
ンボリック・アドレス、すなわち「(SP)+100」
を使用するか、または参照場所のアドレスを実際に計算
することによって名前指定することができる。メモリ・
リネームをスタック参照に限定することにより、上記で
図3に関して述べたような利点が得られる。
【0063】メモリ参照は新たに割り振られたリネーム
・レジスタに対する参照に置き換えられる(ステップ5
22)。リネーム・レジスタからメモリに値を格納する
命令が命令ストリームに挿入され(ステップ524)、
この方法は終了する。ステップ524は任意選択であ
り、したがって所望であれば省くことができることを理
解されたい。
【0064】命令を動的にスケジュールすることができ
るプロセッサ(アウト・オブ・オーダ発行プロセッサ)
の従来の実施態様には、以下のような機構がある。 1.命令間の依存関係を検出し、命令が使用するレジス
タをリネームし、命令が使用する資源が使用可能である
かを検出する機能を備えた、命令をアウト・オブ・オー
ダ(順序外れ)で発行する機構。 2.命令が(アウト・オブ・オーダ)実行されるときの
効果を反映したプロセッサのアウト・オブ・オーダ状態
を維持する機構。 3.命令をプログラム順序でリタイアさせ、それと同時
に、リタイアされる命令の効果によってイン・オーダ状
態を更新する機構。 4.イン・オーダ状態を更新せずに命令をプログラム順
序でリタイアさせ(リタイアされる命令の効果を実際上
取り消す)、リタイアされる命令から始まるプログラム
のイン・オーダ実行を再開する(アウト・オブ・オーダ
状態に存在するすべての効果を取り消すことを意味す
る)機構。
【0065】上記のうちの機構3は、リタイヤされる命
令の効果が正しい時に命令をリタイヤするために使用さ
れる。あるいは、機構4は、リタイヤされる命令の実
行、またはある外部の事象から生じる何らかの異常があ
るか否にかかわらず、使用される。
【0066】図6は、本発明を適用することができる
(たとえばスーパスカラ・プロセッサを含む)従来のコ
ンピュータ処理システムの機能ブロック図である。図6
のシステムは、上記の機構を使用するメモリ動作のリオ
ーダ機能をサポートするが、プログラム・スタックに対
する参照をアウト・オブ・オーダでリネームし、実行す
る機能は含まない。このシステムは、メモリ・サブシス
テム601、データ・キャッシュ602、命令キャッシ
ュ604、およびプロセッサ・ユニット600から成
る。プロセッサ・ユニット600は、命令待ち行列60
3、ロード動作およびストア動作を行うためのいくつか
のメモリ・ユニット(MU)605、整数演算、論理演
算、および浮動小数点演算を行ういくつかの機能ユニッ
ト(FU)607、分岐ユニット(BU)609、レジ
スタ・ファイル611、レジスタ・マップ・テーブル6
20、空きレジスタ待ち行列622、ディスパッチ・テ
ーブル624、リタイア待ち行列626、およびイン・
オーダ・マップ・テーブル628を含む。この例示の構
成は、M.モウドギル(Moudgill)、K.ピンガリ(Pi
ngali)、およびS.バシリアディス(Vassiliadis)に
よる「Register Renamingand Dynamic Speculation: An
Alternative Approach」(マイクロアーキテクチャに
関する第26回国際シンポジウム議事録pp.202-213(19
93年12月)に記載されている構成に基づいている。
【0067】図6に示すプロセッサでは、命令は、分岐
ユニット609の制御下で命令キャッシュ604から
(または、命令が命令キャッシュ604にない場合はメ
モリ・サブシステム601から)フェッチされ、命令待
ち行列603に入れられ、その後、命令待ち行列603
からディスパッチされる。命令がオペランドを指定する
ために使用するレジスタ名は、アーキテクテッド・レジ
スタから物理レジスタへの現行マッピングを指定するレ
ジスタ・マップ・テーブル620の内容に従ってリネー
ムされる。命令が結果の宛先を指定するために使用する
アーキテクテッド・レジスタ名には、現在プロセッサに
よって使用されていない物理レジスタの名前が入った空
きレジスタ待ち行列622から取り出された物理レジス
タが割り当てられる。レジスタ・マップ・テーブル62
0は、命令によって指定されたアーキテクテッド宛先レ
ジスタ名への物理レジスタの割当てによって更新され
る。すべてのレジスタがリネームされた命令は、ディス
パッチ・テーブル624に入れられる。命令は、アドレ
ス、物理レジスタ名、およびアーキテクテッド・レジス
タ名を含めてプログラム順序でリタイア待ち行列626
にも入れられる。命令は、命令によって使用されるすべ
ての資源が使用可能な場合(物理レジスタに期待のオペ
ランドが割り当てられており、機能ユニットが空いてい
る場合)、ディスパッチ・テーブル624からディスパ
ッチされる。命令が使用するオペランドは、レジスタ・
ファイル611から読み取られる。レジスタ・ファイル
611は、典型的には、汎用レジスタ(GPR)と浮動
小数点レジスタ(FPR)と条件レジスタ(CR)とを
含む。命令は、対応するメモリ・ユニット605,機能
ユニット607、または分岐ユニット609で、場合に
よってはアウト・オブ・オーダで実行される。実行が完
了すると、命令の結果がレジスタ・ファイル611に入
れられる。実行を完了する命令によって設定される物理
レジスタを待っているディスパッチ・テーブル624内
の命令に通知される。リタイア待ち行列626には、例
外を起こしたか否かも含めて、命令の実行の完了が通知
される。完了した命令は、プログラム順序で(待ち行列
の先頭から)リタイア待ち行列626から除去される。
リタイア時、命令が例外を起こさなかった場合、リタイ
アされる命令の結果が入ったアーキテクテッド・レジス
タ名がレジスタ・ファイル611内の物理レジスタを指
すようにイン・オーダ・マップ・テーブル628が更新
され、イン・オーダ・マップ・テーブル628内の前の
レジスタ名が空きレジスタ待ち行列622に返される。
【0068】一方、命令が例外を起こした場合、プログ
ラムの制御がリタイア待ち行列626からリタイアされ
る命令のアドレスに設定される。さらに、リタイア待ち
行列626がクリア(フラッシュ)され、したがって、
リタイアされていないすべての命令が取り消される。さ
らに、レジスタ・マップ・テーブル620が、イン・オ
ーダ・マップ・テーブル628の内容に設定され、イン
・オーダ・マップ・テーブル628内にないレジスタは
空きレジスタ待ち行列622に加えられる。
【0069】上記の構成要素に加えて、スーパスカラ・
プロセッサは、分岐の結果を予測する分岐履歴テーブル
など、他の構成要素も含むことができる。
【0070】本発明によると、(図6に示すような)前
のロード命令を基準にしたロード命令のリオーダをサポ
ートする従来のスーパスカラ・プロセッサは、以下の機
構によって増強される。 A.ロード動作およびストア動作を検出する第1の機構
(明示的ロード動作またはストア動作、またはCISC
命令セットに典型的に見られるようにスタック・ポイン
タまたはフレーム・ポインタを使用してメモリを参照す
るその他の動作)。 B.ロード動作またはストア動作を内部レジスタへの参
照に変換する第2の機構。 C.(スタック・ポインタまたはフレーム・ポインタを
介してメモリをアドレス指定しない)他のロード命令が
プロセッサ・スタックを参照するか否かを検出し、値を
命令に供給する第3の機構。 D.別のプロセッサのスタック領域へのメモリ参照を検
出し、値を取り出す第4の機構。
【0071】さらに、上記の機構4は、現在リネーム・
レジスタに格納されているすべてのスタック参照を強制
的にプロセッサ・メモリに入れるように拡張することが
好ましい。これは、図5のステップ524で、すべての
スタック参照をプロセッサ・メモリにイン・オーダで記
録するメモリ書込み命令を命令ストリームに入れれば特
に簡単である。
【0072】本発明が提供する機構は、図6に示す従来
のアウト・オブ・オーダ・プロセッサで使用可能な機構
と共に、以下のように使用される。メモリ動作を検出す
る第1の機構は、レジスタ・マップ・テーブル620で
実施される。メモリ動作がスタック参照を参照する場
合、第2の機構を使用して、リネーム・レジスタに対す
る参照に変換される。スタック参照のためのリネーム・
レジスタは、汎用レジスタに使用されるものと共用する
か、または、別個のプロセッサ資源として実施すること
ができる。
【0073】第3および第4の機構は、メモリ・ユニッ
ト605およびハイブリッド構成に従ったシステム・ソ
フトウェアで実施される。
【0074】汎用レジスタ・ベースのメモリ・アクセス
とローカル・スタック参照との衝突を検出する第3の機
構は、プロセッサ・スタックを参照するTLB項目をマ
ークすることによって実施されることが好ましい。この
実施形態では、汎用レジスタを使用したこのようなペー
ジへの参照によって、プロセッサはすべての投機状態を
廃棄し、動作をイン・オーダで行う。この実施形態によ
ると、スタック参照のイン・オーダ値は、プログラム順
に挿入されたストア命令によってプロセッサ・メモリに
格納されている(図5のステップ524)。その後、処
理は現行の命令に続く命令から続行する。
【0075】第4の機構は、リモート・プロセッサ内の
プログラム・スタックとして使用される記憶場所のため
にページ変換をロードしないことによって実施される。
その結果、リモート・プロセッサ上のスタック場所に対
する参照が例外を起こし、その時に、システム・ソフト
ウェアがリモート・プロセッサのスタック領域に対する
メモリ読取り要求をそのプロセッサと同期させることが
できる。
【0076】本発明の例示の実施形態によると、これ
は、ソフトウェアで、リモート・プロセッサ上で実行さ
れているオペレーティング・システム・カーネルに要求
を送ることによって行われる。本発明の他の例示の実施
形態によると、この要求と、整合性を保証するのに必要
な処置は、ハードウェアで行われる。
【0077】図3、図4、および図5のそれぞれステッ
プ318、418、および518の整合性維持機構につ
いて、以下に簡単に説明する。イン・オーダ・ストア動
作は、対応するアドレスからのロード動作を行うことに
よって(図5の任意選択ステップ524で)行うことが
できる。イン・オーダ・ストア動作をスタック参照のた
めに行わない場合、整合性維持機構の一実施態様は、す
べてのスタック・リネーム・レジスタをそれに対応する
スタック場所に強制する。これは、別個の機構として、
または、アウト・オブ・オーダ動作をすべて廃棄する図
6の機構4を起動することによって実施することがで
き、機構4は、すべてのスタック・リネーム場所をメモ
リとするように拡張されていることが好ましい。他の実
施形態では、ローカル・プロセッサ・スタックに対する
ロード参照を、リネーム・レジスタから直接バイパスさ
せることもできる。
【0078】複数の値がある場合、現行ロード動作の前
に書き込まれた最後の値を図3および図4のそれぞれス
テップ318および418で取り出さなければならな
い。これを行う1つの方法は、現行ロード動作に続くす
べての命令を廃棄することである。
【0079】ストア動作のための整合性維持機構は、図
の機構4を起動することによってすべてのアウト・オブ
・オーダ状態を廃棄する処理を含むことができる。機構
4は、すべてのアウト・オブ・オーダ動作を廃棄し、す
べてのスタック・リネーム場所をメモリにするように拡
張することができることが好ましい。実行が再開される
と、図3のステップ316または図4のステップ426
によって、変更された値がメモリからロードされる。
【0080】スタック・ロードおよびストア動作が異な
るサイズのデータ・タイプを参照する場合は特に注意が
必要である。ロード動作が、ストア動作によって供給さ
れるデータ・ビットのサブセットを参照する場合、それ
らのデータ・ビットは単純な方式で取り出すことができ
る。ロード動作によって参照されるデータが、1つまた
は複数のスタック・リネーム・レジスタおよび場合によ
ってはプロセッサ・メイン・メモリに入っている場合、
より複雑なデータ収集が必要である。
【0081】本発明の一実施形態によると、少なくとも
重複するレジスタをすべてメイン・メモリに書き込み、
メモリ読取り動作を行う。これは、図5のステップ52
4でメモリ書込み命令を命令ストリームに入れて、すべ
てのスタック参照をプロセッサ・メモリにイン・オーダ
で記録すれば特に簡単である。
【0082】本発明の他の実施形態によると、プロセッ
サはすべての投機状態を廃棄し、すべてのスタック参照
を強制的にメモリに入れ、メモリ・ロード動作をイン・
オーダで行う。この場合も、これは、図5のステップ5
24でメモリ書込み命令を命令ストリームに入れて、す
べてのスタック参照をプロセッサ・メモリにイン・オー
ダで記録すれば特に簡単である。
【0083】プロセッサ・リネーム機構がリネーム・レ
ジスタを使い果たした場合、保留命令内に参照がないリ
ネーム・レジスタを再使用し、その内容をプロセッサ・
メモリに書き込むことができる。図5のステップ524
でイン・オーダ・ストアを挿入しなかった場合、これに
は、リネーム・レジスタによってストアされた値をメモ
リに書き込む必要がある場合がある。
【0084】最適化された実施形態では、予測子を使用
して、図4のステップ424および図5のステップ52
0で、どのスタック参照をプロセッサ・レジスタにリネ
ームするかを決定し、スタック参照に割り振られるレジ
スタの数を減らす。プロセッサ・レジスタで割り振られ
ていないスタック参照は、メイン・メモリへのロード命
令およびストア命令を使用することによって行われる。
【0085】本発明の一実施形態によると、リネーム・
レジスタをプロセッサ・レジスタとスタック参照のリネ
ームのために共用することができる。本発明の他の実施
形態によると、これらは別個の資源である。
【0086】最適化された実施形態によると、スタック
参照のリネームを、コピー動作の排除と組み合わせるこ
とにより、クリティカル・パスを短縮することができ
る。
【0087】一実施形態によると、「スタックポインタ
値+変位」のためのシンボリック名を使用してスタック
参照を名前指定する。この場合、スタック・ポインタの
内容が変更されるときに名前の同期化が必要である。ま
た、フレーム・ポインタとスタック・ポインタの間の距
離を使用して、FP関係の参照をSP関係の参照に変換
する。
【0088】他の実施形態によると、アドレス(たとえ
ば有効アドレス、仮想アドレス、または物理アドレス)
を使用して、スタック・ポインタを名前指定する。最適
化された実施形態では、スタック・ポインタ(および任
意選択によりフレーム・ポインタ、引数ポインタなど)
を、リネーム・ユニットでシャドウイングし、フェッチ
する命令ストリームと同期して投機的に調整する。これ
により、レジスタ・ファイルに必要なメモリ・ポートの
数が削減され、リネーム時により積極的な投機が可能に
なる。
【0089】一実施形態によると、ローカル・スタック
へのアクセスのための整合性維持動作は、ハードウェア
で、リネームされた各スタック参照をアドレス情報と関
連づけ、リネームされたスタック参照の検索を行って、
要求されたデータがリネーム・レジスタと実際の記憶場
所のいずれに入っているかを判断することによって実施
される。他の実施形態によると、これは、ソフトウェア
のみを使用して実施される。すなわち、汎用レジスタを
使用するスタック領域に対する参照が例外を生じさせ、
リネームされた値をソフトウェアによって現行の要求と
同期させる。
【0090】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0091】(1)コンピュータ処理システムにおいて
スタック場所に対するメモリ参照をリネームする方法で
あって、アーキテクチャ的に定義されたスタック・アク
セス方法を使用するスタック参照を検出するステップ
と、前記スタック参照をプロセッサ内部レジスタに対す
る参照に置き換えるステップとを含む方法。 (2)前記プロセッサ内部レジスタと前記コンピュータ
処理システムのメイン・メモリとの間のアーキテクテッ
ド状態を同期化するステップをさらに含む、上記(1)
に記載の方法。 (3)前記同期化ステップが、書込みスタック参照であ
るすべてのスタック参照のためのイン・オーダ書込み動
作を挿入するステップを含む、上記(2)に記載の方
法。 (4)アーキテクチャ的に定義されたスタック・アクセ
ス方法を使用しないスタック参照のための整合性維持動
作を実行するステップをさらに含む、上記(1)に記載
の方法。 (5)整合性維持動作を実行する前記ステップが、値
を、所与のプロセッサ内部レジスタから、スタック領域
を参照しアーキテクチャ的に定義されたスタック・アク
セス方法を使用しないロード動作に、バイパスするステ
ップを含む、上記(4)に記載の方法。 (6)前記プロセッサ内部レジスタと前記コンピュータ
処理システムのメイン・メモリとの間のアーキテクテッ
ド状態を同期化するステップをさらに含み、整合性維持
動作を実行する前記ステップが、前記同期化ステップの
実行時に前記スタック参照のためのイン・オーダ値を前
記メイン・メモリから回復するステップを含む、上記
(4)に記載の方法。 (7)前記スタック参照が書込みスタック参照である場
合、前記イン・オーダ値が、前記スタック参照に対応す
る命令を含む命令ストリームに挿入されたイン・オーダ
書込み動作によって、前記メイン・メモリに書き込まれ
る、上記(6)に記載の方法。 (8)アーキテクチャ的に定義された前記スタック・ア
クセス方法を使用しないロード動作に応答して、前記イ
ン・オーダ値を前記メイン・メモリに書き込むステップ
をさらに含む、上記(6)に記載の方法。 (9)整合性維持動作を実行する前記ステップが、前記
システムのプロセッサのすべてのアウト・オブ・オーダ
状態を廃棄するステップと、前記プロセッサ内部レジス
タと前記コンピュータ処理システムのメイン・メモリと
の間のアーキテクテッド状態を同期化するステップと、
アーキテクチャ的に定義された前記スタック・アクセス
方法を使用しないストア動作が行われた後に実行を再開
するステップとを含む、上記(4)に記載の方法。 (10)アーキテクチャ的に定義された前記スタック・
アクセス方法が、スタック・ポインタとフレーム・ポイ
ンタと引数ポインタとのうちの少なくとも1つを使用す
るメモリ・アクセスを含む、上記(1)に記載の方法。 (11)アーキテクチャ的に定義されたスタック・アク
セス方法が、プッシュ、ポップ、およびその他のスタッ
ク操作動作を含む、上記(1)に記載の方法。 (12) コンピュータ処理システムにおいてスタック
場所に対するメモリ参照をリネームする方法であって、
ロード命令が、スタック場所にアクセスするためにアー
キテクチャ的に定義されたレジスタを使用してローカル
・スタック内の場所を参照するか否かを判断するステッ
プと、前記ロード命令がアーキテクチャ的に定義された
前記レジスタを使用して前記場所を参照する場合、前記
ローカル・スタック内の前記参照された場所のためのリ
ネーム・レジスタが存在するか否かを判断するステップ
と、前記リネーム・レジスタが存在する場合、前記場所
に対する前記参照を前記リネーム・レジスタに対する参
照に置き換えるステップとを含む方法。 (13)アーキテクチャ的に定義された前記レジスタが
スタック場所にアクセスするためのポインタに対応す
る、上記(12)に記載の方法。 (14)前記スタック場所にアクセスするための前記ポ
インタが、スタック・ポインタとフレーム・ポインタと
引数ポインタとのうちの1つである、上記(13)に記
載の方法。 (15)アーキテクチャ的に定義された前記スタック・
アクセス方法が、プッシュ、ポップ、およびその他のス
タック操作動作を含む、上記(12)に記載の方法。 (16)前記リネーム・レジスタが存在するか否かを判
断する前記ステップが、前記場所のシンボリック・アド
レスと実アドレスとのうちの1つを計算するステップを
含む、上記(12)に記載の方法。 (17)前記リネーム・レジスタが存在するか否かを判
断する前記ステップが、デコード段階、アドレス生成段
階、およびメモリ・アクセス段階のうちの1つの段階で
行われる、上記(12)に記載の方法。 (18)前記リネーム・レジスタが存在しない場合、前
記システムのメイン・メモリとキャッシュとのうちの1
つから前記ロード命令を行うステップをさらに含む、上
記(12)に記載の方法。 (19)前記ロード命令がアーキテクチャ的に定義され
た前記レジスタを使用して前記場所を参照しない場合、
前記ロード命令が、他のレジスタを使用してローカル・
スタックを含むいずれかのスタック内の場所を参照する
か否かを判断するステップをさらに含む、上記(12)
に記載の方法。 (20)前記ロード命令が前記他のレジスタを使用して
前記場所を参照するか否かを判断する前記ステップが、
前記ロード命令が前記他のレジスタを使用して前記場所
を参照する場合に、前記ローカル・スタック内のページ
の変換索引バッファ(TLB)項目を、スタック参照を
含むものとしてマークするステップを含む、上記(1
9)に記載の方法。 (21)前記ロード命令が前記他のレジスタを使用して
前記場所を参照しない場合、前記システムのメイン・メ
モリとキャッシュとのうちの1つから前記ロード命令を
実行するステップをさらに含む、上記(19)に記載の
方法。 (22)前記ロード命令が前記他のレジスタを使用して
前記場所を参照する場合、整合性維持機構を実行して前
記スタック領域から前記ロード命令を実行するステップ
をさらに含む、上記(19)に記載の方法。 (23)前記リネーム・レジスタが存在しない場合、前
記場所のためのリネーム・レジスタを割り振るステップ
をさらに含む、上記(12)に記載の方法。 (24)前記リネーム・レジスタの割振り時に、前記シ
ステムのプロセッサから前記割り振られたリネーム・レ
ジスタに前記場所をロードする動作を、前記ロード命令
を含む命令ストリームに挿入するステップをさらに含
む、上記(23)に記載の方法。 (25)前記動作の挿入時に、前記場所に対する前記参
照を前記割り振られたリネーム・レジスタに対する参照
によって置き換えるステップをさらに含む、上記(2
4)に記載の方法。 (26)コンピュータ処理システムにおいてスタック場
所に対するメモリ参照をリネームする方法であって、ス
トア命令が、スタック場所にアクセスするためにアーキ
テクチャ的に定義されたレジスタを使用してローカル・
スタック内の場所を参照するか否かを判断するステップ
と、前記ストア命令がアーキテクチャ的に定義された前
記レジスタを使用して前記場所を参照する場合、前記場
所のためにリネーム・レジスタを割り振るステップと、
前記場所に対する前記参照を前記リネーム・レジスタに
対する参照によって置き換えるステップとを含む方法。 (27)前記場所に対する前記参照を前記リネーム・レ
ジスタに対する前記参照に置き換えたときに、前記リネ
ーム・レジスタから前記システムのメイン・メモリに前
記場所をストアする動作を、前記ストア命令を含む命令
ストリームに挿入するステップをさらに含む、上記(2
6)に記載の方法。 (28)前記ストア命令がアーキテクチャ的に定義され
た前記レジスタを使用して前記場所を参照しない場合、
前記ストア命令が他のレジスタを使用して前記ローカル
・スタックを含む任意のスタック内の場所を参照するか
否かを判断するステップをさらに含む、上記(26)に
記載の方法。 (29)前記ストア命令が前記他のレジスタを使用して
前記場所を参照しない場合、前記ストア命令を前記シス
テムのメイン・メモリとキャッシュのうちのいずれか1
つから実行するステップをさらに含む、上記(28)に
記載の方法。 (30)前記ストア命令が前記他のレジスタを使用して
前記場所を参照する場合、整合性維持機構を実行して前
記スタック領域への前記ストア命令を実行するステップ
をさらに含む、上記(28)に記載の方法。 (31)コンピュータ処理システムにおいてスタック場
所に対するメモリ参照をリネームする方法ステップを実
行する、機械によって実行可能な命令のプログラムを有
形に実施する機械可読プログラム記憶装置であって、前
記方法ステップは、アーキテクチャ的に定義されたスタ
ック・アクセス方法を使用するスタック参照を検出する
ステップと、前記スタック参照をプロセッサ内部レジス
タに対する参照に置き換えるステップとを含むプログラ
ム記憶装置。 (32)前記プロセッサ内部レジスタと前記コンピュー
タ処理システムのメイン・メモリとの間のアーキテクテ
ッド状態を同期化するステップをさらに含む、上記(3
1)に記載のプログラム記憶装置。 (33)前記同期化ステップが、書込みスタック参照で
あるすべてのスタック参照のためのイン・オーダ書込み
動作を挿入するステップを含む、上記(32)に記載の
プログラム記憶装置。 (34)アーキテクチャ的に定義されたスタック・アク
セス方法を使用しないスタック参照のための整合性維持
動作を実行するステップをさらに含む、上記(31)に
記載のプログラム記憶装置。 (35)整合性維持動作を実行する前記ステップが、所
与のプロセッサ内部レジスタから値を、スタック領域を
参照し、アーキテクチャ的に定義されたスタック・アク
セス方法を使用しないロード動作にバイパスするステッ
プを含む、上記(34)に記載のプログラム記憶装置。 (36)前記プロセッサ内部レジスタと前記コンピュー
タ処理システムのメイン・メモリとの間のアーキテクテ
ッド状態を同期化するステップをさらに含み、整合性維
持動作を実行する前記ステップが、前記同期化ステップ
の実行時に前記スタック参照のためのイン・オーダ値を
前記メイン・メモリから回復するステップを含む、上記
(34)に記載のプログラム記憶装置。 (37)前記スタック参照が書込みスタック参照である
場合、前記イン・オーダ値が前記スタック参照に対応す
る命令を含む命令ストリームに挿入されたイン・オーダ
書込み動作によって前記メイン・メモリに書き込まれ
る、上記(36)に記載のプログラム記憶装置。 (38)アーキテクチャ的に定義された前記スタック・
アクセス方法を使用しないロード動作に応答して、前記
イン・オーダ値を前記メイン・メモリに書き込むステッ
プをさらに含む、上記(36)に記載のプログラム記憶
装置。 (39)整合性維持動作を実行する前記ステップが、前
記システムのプロセッサのすべてのアウト・オブ・オー
ダ状態を廃棄するステップと、前記プロセッサ内部レジ
スタと前記コンピュータ処理システムのメイン・メモリ
との間のアーキテクテッド状態を同期化するステップ
と、アーキテクチャ的に定義された前記スタック・アク
セス方法を使用しないストア動作が行われた後に実行を
再開するステップとを含む、上記(34)に記載のプロ
グラム記憶装置。
【図面の簡単な説明】
【図1】従来の技術によるコンピュータ・プログラムの
典型的なメモリ・レイアウトを示す図である。
【図2】本発明の例示の実施形態による、単一命令の初
期処理を行う方法を示す流れ図である。
【図3】本発明の例示の実施形態による、ロード動作の
処理を示す流れ図である。
【図4】本発明の他の例示の実施形態による、ロード動
作の処理を示す流れ図である。
【図5】本発明の例示の実施形態によるストア動作の処
理を示す流れ図である。
【図6】本発明が適用されるスーパスカラ・アウト・オ
ブ・オーダ・プロセッサを示すブロック図である。
【符号の説明】
600 プロセッサ・ユニット 601 メモリ・サブシステム 602 データ・キャッシュ 603 命令待ち行列 604 命令キャッシュ 605 メモリ・ユニット 607 機能ユニット 609 分岐ユニット 611 レジスタ・ファイル 620 レジスタ・マップ・テーブル 622 空きレジスタ待ち行列 624 ディスパッチ・テーブル 626 リタイア待ち行列 628 イン・オーダ・マップ・テーブル

Claims (39)

    【特許請求の範囲】
  1. 【請求項1】コンピュータ処理システムにおいてスタッ
    ク場所に対するメモリ参照をリネームする方法であっ
    て、 アーキテクチャ的に定義されたスタック・アクセス方法
    を使用するスタック参照を検出するステップと、 前記スタック参照をプロセッサ内部レジスタに対する参
    照に置き換えるステップとを含む方法。
  2. 【請求項2】前記プロセッサ内部レジスタと前記コンピ
    ュータ処理システムのメイン・メモリとの間のアーキテ
    クテッド状態を同期化するステップをさらに含む、請求
    項1に記載の方法。
  3. 【請求項3】前記同期化ステップが、書込みスタック参
    照であるすべてのスタック参照のためのイン・オーダ書
    込み動作を挿入するステップを含む、請求項2に記載の
    方法。
  4. 【請求項4】アーキテクチャ的に定義されたスタック・
    アクセス方法を使用しないスタック参照のための整合性
    維持動作を実行するステップをさらに含む、請求項1に
    記載の方法。
  5. 【請求項5】整合性維持動作を実行する前記ステップ
    が、値を、所与のプロセッサ内部レジスタから、スタッ
    ク領域を参照しアーキテクチャ的に定義されたスタック
    ・アクセス方法を使用しないロード動作に、バイパスす
    るステップを含む、請求項4に記載の方法。
  6. 【請求項6】前記プロセッサ内部レジスタと前記コンピ
    ュータ処理システムのメイン・メモリとの間のアーキテ
    クテッド状態を同期化するステップをさらに含み、整合
    性維持動作を実行する前記ステップが、前記同期化ステ
    ップの実行時に前記スタック参照のためのイン・オーダ
    値を前記メイン・メモリから回復するステップを含む、
    請求項4に記載の方法。
  7. 【請求項7】前記スタック参照が書込みスタック参照で
    ある場合、前記イン・オーダ値が、前記スタック参照に
    対応する命令を含む命令ストリームに挿入されたイン・
    オーダ書込み動作によって、前記メイン・メモリに書き
    込まれる、請求項6に記載の方法。
  8. 【請求項8】アーキテクチャ的に定義された前記スタッ
    ク・アクセス方法を使用しないロード動作に応答して、
    前記イン・オーダ値を前記メイン・メモリに書き込むス
    テップをさらに含む、請求項6に記載の方法。
  9. 【請求項9】整合性維持動作を実行する前記ステップ
    が、 前記システムのプロセッサのすべてのアウト・オブ・オ
    ーダ状態を廃棄するステップと、 前記プロセッサ内部レジスタと前記コンピュータ処理シ
    ステムのメイン・メモリとの間のアーキテクテッド状態
    を同期化するステップと、 アーキテクチャ的に定義された前記スタック・アクセス
    方法を使用しないストア動作が行われた後に実行を再開
    するステップとを含む、請求項4に記載の方法。
  10. 【請求項10】アーキテクチャ的に定義された前記スタ
    ック・アクセス方法が、スタック・ポインタとフレーム
    ・ポインタと引数ポインタとのうちの少なくとも1つを
    使用するメモリ・アクセスを含む、請求項1に記載の方
    法。
  11. 【請求項11】アーキテクチャ的に定義されたスタック
    ・アクセス方法が、プッシュ、ポップ、およびその他の
    スタック操作動作を含む、請求項1に記載の方法。
  12. 【請求項12】コンピュータ処理システムにおいてスタ
    ック場所に対するメモリ参照をリネームする方法であっ
    て、 ロード命令が、スタック場所にアクセスするためにアー
    キテクチャ的に定義されたレジスタを使用してローカル
    ・スタック内の場所を参照するか否かを判断するステッ
    プと、 前記ロード命令がアーキテクチャ的に定義された前記レ
    ジスタを使用して前記場所を参照する場合、前記ローカ
    ル・スタック内の前記参照された場所のためのリネーム
    ・レジスタが存在するか否かを判断するステップと、 前記リネーム・レジスタが存在する場合、前記場所に対
    する前記参照を前記リネーム・レジスタに対する参照に
    置き換えるステップとを含む方法。
  13. 【請求項13】アーキテクチャ的に定義された前記レジ
    スタがスタック場所にアクセスするためのポインタに対
    応する、請求項12に記載の方法。
  14. 【請求項14】前記スタック場所にアクセスするための
    前記ポインタが、スタック・ポインタとフレーム・ポイ
    ンタと引数ポインタとのうちの1つである、請求項13
    に記載の方法。
  15. 【請求項15】アーキテクチャ的に定義された前記スタ
    ック・アクセス方法が、プッシュ、ポップ、およびその
    他のスタック操作動作を含む、請求項12に記載の方
    法。
  16. 【請求項16】前記リネーム・レジスタが存在するか否
    かを判断する前記ステップが、前記場所のシンボリック
    ・アドレスと実アドレスとのうちの1つを計算するステ
    ップを含む、請求項12に記載の方法。
  17. 【請求項17】前記リネーム・レジスタが存在するか否
    かを判断する前記ステップが、デコード段階、アドレス
    生成段階、およびメモリ・アクセス段階のうちの1つの
    段階で行われる、請求項12に記載の方法。
  18. 【請求項18】前記リネーム・レジスタが存在しない場
    合、前記システムのメイン・メモリとキャッシュとのう
    ちの1つから前記ロード命令を行うステップをさらに含
    む、請求項12に記載の方法。
  19. 【請求項19】前記ロード命令がアーキテクチャ的に定
    義された前記レジスタを使用して前記場所を参照しない
    場合、前記ロード命令が、他のレジスタを使用してロー
    カル・スタックを含むいずれかのスタック内の場所を参
    照するか否かを判断するステップをさらに含む、請求項
    12に記載の方法。
  20. 【請求項20】前記ロード命令が前記他のレジスタを使
    用して前記場所を参照するか否かを判断する前記ステッ
    プが、前記ロード命令が前記他のレジスタを使用して前
    記場所を参照する場合に、前記ローカル・スタック内の
    ページの変換索引バッファ(TLB)項目を、スタック
    参照を含むものとしてマークするステップを含む、請求
    項19に記載の方法。
  21. 【請求項21】前記ロード命令が前記他のレジスタを使
    用して前記場所を参照しない場合、前記システムのメイ
    ン・メモリとキャッシュとのうちの1つから前記ロード
    命令を実行するステップをさらに含む、請求項19に記
    載の方法。
  22. 【請求項22】前記ロード命令が前記他のレジスタを使
    用して前記場所を参照する場合、整合性維持機構を実行
    して前記スタック領域から前記ロード命令を実行するス
    テップをさらに含む、請求項19に記載の方法。
  23. 【請求項23】前記リネーム・レジスタが存在しない場
    合、前記場所のためのリネーム・レジスタを割り振るス
    テップをさらに含む、請求項12に記載の方法。
  24. 【請求項24】前記リネーム・レジスタの割振り時に、
    前記システムのプロセッサから前記割り振られたリネー
    ム・レジスタに前記場所をロードする動作を、前記ロー
    ド命令を含む命令ストリームに挿入するステップをさら
    に含む、請求項23に記載の方法。
  25. 【請求項25】前記動作の挿入時に、前記場所に対する
    前記参照を前記割り振られたリネーム・レジスタに対す
    る参照によって置き換えるステップをさらに含む、請求
    項24に記載の方法。
  26. 【請求項26】コンピュータ処理システムにおいてスタ
    ック場所に対するメモリ参照をリネームする方法であっ
    て、 ストア命令が、スタック場所にアクセスするためにアー
    キテクチャ的に定義されたレジスタを使用してローカル
    ・スタック内の場所を参照するか否かを判断するステッ
    プと、 前記ストア命令がアーキテクチャ的に定義された前記レ
    ジスタを使用して前記場所を参照する場合、前記場所の
    ためにリネーム・レジスタを割り振るステップと、 前記場所に対する前記参照を前記リネーム・レジスタに
    対する参照によって置き換えるステップとを含む方法。
  27. 【請求項27】前記場所に対する前記参照を前記リネー
    ム・レジスタに対する前記参照に置き換えたときに、前
    記リネーム・レジスタから前記システムのメイン・メモ
    リに前記場所をストアする動作を、前記ストア命令を含
    む命令ストリームに挿入するステップをさらに含む、請
    求項26に記載の方法。
  28. 【請求項28】前記ストア命令がアーキテクチャ的に定
    義された前記レジスタを使用して前記場所を参照しない
    場合、前記ストア命令が他のレジスタを使用して前記ロ
    ーカル・スタックを含む任意のスタック内の場所を参照
    するか否かを判断するステップをさらに含む、請求項2
    6に記載の方法。
  29. 【請求項29】前記ストア命令が前記他のレジスタを使
    用して前記場所を参照しない場合、前記ストア命令を前
    記システムのメイン・メモリとキャッシュのうちのいず
    れか1つから実行するステップをさらに含む、請求項2
    8に記載の方法。
  30. 【請求項30】前記ストア命令が前記他のレジスタを使
    用して前記場所を参照する場合、整合性維持機構を実行
    して前記スタック領域への前記ストア命令を実行するス
    テップをさらに含む、請求項28に記載の方法。
  31. 【請求項31】コンピュータ処理システムにおいてスタ
    ック場所に対するメモリ参照をリネームする方法ステッ
    プを実行する、機械によって実行可能な命令のプログラ
    ムを有形に実施する機械可読プログラム記憶装置であっ
    て、前記方法ステップは、 アーキテクチャ的に定義されたスタック・アクセス方法
    を使用するスタック参照を検出するステップと、 前記スタック参照をプロセッサ内部レジスタに対する参
    照に置き換えるステップとを含むプログラム記憶装置。
  32. 【請求項32】前記プロセッサ内部レジスタと前記コン
    ピュータ処理システムのメイン・メモリとの間のアーキ
    テクテッド状態を同期化するステップをさらに含む、請
    求項31に記載のプログラム記憶装置。
  33. 【請求項33】前記同期化ステップが、書込みスタック
    参照であるすべてのスタック参照のためのイン・オーダ
    書込み動作を挿入するステップを含む、請求項32に記
    載のプログラム記憶装置。
  34. 【請求項34】アーキテクチャ的に定義されたスタック
    ・アクセス方法を使用しないスタック参照のための整合
    性維持動作を実行するステップをさらに含む、請求項3
    1に記載のプログラム記憶装置。
  35. 【請求項35】整合性維持動作を実行する前記ステップ
    が、所与のプロセッサ内部レジスタから値を、スタック
    領域を参照し、アーキテクチャ的に定義されたスタック
    ・アクセス方法を使用しないロード動作にバイパスする
    ステップを含む、請求項34に記載のプログラム記憶装
    置。
  36. 【請求項36】前記プロセッサ内部レジスタと前記コン
    ピュータ処理システムのメイン・メモリとの間のアーキ
    テクテッド状態を同期化するステップをさらに含み、整
    合性維持動作を実行する前記ステップが、前記同期化ス
    テップの実行時に前記スタック参照のためのイン・オー
    ダ値を前記メイン・メモリから回復するステップを含
    む、請求項34に記載のプログラム記憶装置。
  37. 【請求項37】前記スタック参照が書込みスタック参照
    である場合、前記イン・オーダ値が前記スタック参照に
    対応する命令を含む命令ストリームに挿入されたイン・
    オーダ書込み動作によって前記メイン・メモリに書き込
    まれる、請求項36に記載のプログラム記憶装置。
  38. 【請求項38】アーキテクチャ的に定義された前記スタ
    ック・アクセス方法を使用しないロード動作に応答し
    て、前記イン・オーダ値を前記メイン・メモリに書き込
    むステップをさらに含む、請求項36に記載のプログラ
    ム記憶装置。
  39. 【請求項39】整合性維持動作を実行する前記ステップ
    が、 前記システムのプロセッサのすべてのアウト・オブ・オ
    ーダ状態を廃棄するステップと、 前記プロセッサ内部レジスタと前記コンピュータ処理シ
    ステムのメイン・メモリとの間のアーキテクテッド状態
    を同期化するステップと、 アーキテクチャ的に定義された前記スタック・アクセス
    方法を使用しないストア動作が行われた後に実行を再開
    するステップとを含む、請求項34に記載のプログラム
    記憶装置。
JP2001015920A 2000-01-27 2001-01-24 コンピュータ処理システムにおけるスタック・リファレンスのリネーム方法およびそのプログラム記憶装置 Expired - Fee Related JP3564072B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/492544 2000-01-27
US09/492,544 US7085914B1 (en) 2000-01-27 2000-01-27 Methods for renaming stack references to processor registers

Publications (2)

Publication Number Publication Date
JP2001229022A true JP2001229022A (ja) 2001-08-24
JP3564072B2 JP3564072B2 (ja) 2004-09-08

Family

ID=23956687

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001015920A Expired - Fee Related JP3564072B2 (ja) 2000-01-27 2001-01-24 コンピュータ処理システムにおけるスタック・リファレンスのリネーム方法およびそのプログラム記憶装置

Country Status (5)

Country Link
US (1) US7085914B1 (ja)
JP (1) JP3564072B2 (ja)
KR (1) KR100368166B1 (ja)
CA (1) CA2328559C (ja)
TW (1) TW494300B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020534599A (ja) * 2017-09-19 2020-11-26 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation サブルーチンへの分岐に応じたTable of Contentsポインタ値の予測

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070061551A1 (en) * 2005-09-13 2007-03-15 Freescale Semiconductor, Inc. Computer Processor Architecture Comprising Operand Stack and Addressable Registers
US7508396B2 (en) 2005-09-28 2009-03-24 Silicon Integrated Systems Corp. Register-collecting mechanism, method for performing the same and pixel processing system employing the same
US8392687B2 (en) * 2009-01-21 2013-03-05 Micron Technology, Inc. Solid state memory formatting
JP5583514B2 (ja) 2010-08-11 2014-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーション バイナリコードを最適化するコンパイル方法、及びそのコンパイラシステム、並びにコンピュータ・プログラム
US10185561B2 (en) 2015-07-09 2019-01-22 Centipede Semi Ltd. Processor with efficient memory access
US9575897B2 (en) 2015-07-09 2017-02-21 Centipede Semi Ltd. Processor with efficient processing of recurring load instructions from nearby memory addresses
US10572265B2 (en) 2017-04-18 2020-02-25 International Business Machines Corporation Selecting register restoration or register reloading
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
US10489382B2 (en) 2017-04-18 2019-11-26 International Business Machines Corporation Register restoration invalidation based on a context switch
US10649785B2 (en) 2017-04-18 2020-05-12 International Business Machines Corporation Tracking changes to memory via check and recovery
US10838733B2 (en) 2017-04-18 2020-11-17 International Business Machines Corporation Register context restoration based on rename register recovery
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
US10782979B2 (en) 2017-04-18 2020-09-22 International Business Machines Corporation Restoring saved architected registers and suppressing verification of registers to be restored
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
US10740108B2 (en) 2017-04-18 2020-08-11 International Business Machines Corporation Management of store queue based on restoration operation
US20190163492A1 (en) * 2017-11-28 2019-05-30 International Business Machines Corporation Employing a stack accelerator for stack-type accesses

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3737871A (en) * 1971-07-28 1973-06-05 Hewlett Packard Co Stack register renamer
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
JPH07302200A (ja) * 1994-04-28 1995-11-14 Hewlett Packard Co <Hp> 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。
US5911057A (en) 1995-12-19 1999-06-08 Texas Instruments Incorporated Superscalar microprocessor having combined register and memory renaming circuits, systems, and methods
US5832205A (en) 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US5926832A (en) * 1996-09-26 1999-07-20 Transmeta Corporation Method and apparatus for aliasing memory data in an advanced microprocessor
US5953741A (en) * 1996-11-27 1999-09-14 Vlsi Technology, Inc. Stack cache for stack-based processor and method thereof
US5838941A (en) 1996-12-30 1998-11-17 Intel Corporation Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers
US5872990A (en) 1997-01-07 1999-02-16 International Business Machines Corporation Reordering of memory reference operations and conflict resolution via rollback in a multiprocessing environment

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020534599A (ja) * 2017-09-19 2020-11-26 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation サブルーチンへの分岐に応じたTable of Contentsポインタ値の予測
JP7179838B2 (ja) 2017-09-19 2022-11-29 インターナショナル・ビジネス・マシーンズ・コーポレーション サブルーチンへの分岐に応じたTable of Contentsポインタ値の予測

Also Published As

Publication number Publication date
KR100368166B1 (ko) 2003-01-24
KR20010078088A (ko) 2001-08-20
CA2328559A1 (en) 2001-07-27
TW494300B (en) 2002-07-11
JP3564072B2 (ja) 2004-09-08
CA2328559C (en) 2009-02-24
US7085914B1 (en) 2006-08-01

Similar Documents

Publication Publication Date Title
US9311084B2 (en) RDA checkpoint optimization
JP3564072B2 (ja) コンピュータ処理システムにおけるスタック・リファレンスのリネーム方法およびそのプログラム記憶装置
US5751983A (en) Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
KR100402185B1 (ko) 컴퓨터 처리 시스템에서 순서화된 시퀀스의 명령어를실행하는 방법 및 장치
US9575754B2 (en) Zero cycle move
US5918005A (en) Apparatus region-based detection of interference among reordered memory operations in a processor
US5758051A (en) Method and apparatus for reordering memory operations in a processor
US7024537B2 (en) Data speculation based on addressing patterns identifying dual-purpose register
US6189088B1 (en) Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location
JP5120832B2 (ja) 効率的かつ柔軟なメモリ・コピー動作
US5517657A (en) Segment register file read and write pipeline
US6505293B1 (en) Register renaming to optimize identical register values
US7089400B1 (en) Data speculation based on stack-relative addressing patterns
JP3424202B2 (ja) プロセッサ内で命令を発行するための方法および装置
US6625723B1 (en) Unified renaming scheme for load and store instructions
US20080127182A1 (en) Managing Memory Pages During Virtual Machine Migration
US6098167A (en) Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
US5664137A (en) Method and apparatus for executing and dispatching store operations in a computer system
US11068271B2 (en) Zero cycle move using free list counts
US6378062B1 (en) Method and apparatus for performing a store operation
JPH10283180A (ja) プロセッサ内で命令をディスパッチする方法および装置
US6772317B2 (en) Method and apparatus for optimizing load memory accesses
US6381691B1 (en) Method and apparatus for reordering memory operations along multiple execution paths in a processor
CN116414458A (zh) 指令处理方法以及处理器
CN111133421B (zh) 在无地址转换的情况下操作的加载存储单元中处理有效地址同义词

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040511

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040604

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080611

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20080611

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090611

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100611

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110611

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees