JP4538462B2 - 二重用途レジスタを識別しているアドレス指定パターンに基づいたデータ投機 - Google Patents
二重用途レジスタを識別しているアドレス指定パターンに基づいたデータ投機 Download PDFInfo
- Publication number
- JP4538462B2 JP4538462B2 JP2006536513A JP2006536513A JP4538462B2 JP 4538462 B2 JP4538462 B2 JP 4538462B2 JP 2006536513 A JP2006536513 A JP 2006536513A JP 2006536513 A JP2006536513 A JP 2006536513A JP 4538462 B2 JP4538462 B2 JP 4538462B2
- Authority
- JP
- Japan
- Prior art keywords
- addressing pattern
- memory
- stack
- entry
- file
- 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
Links
- 230000015654 memory Effects 0.000 claims description 406
- 238000000034 method Methods 0.000 claims description 54
- 238000012545 processing Methods 0.000 claims description 50
- 238000006073 displacement reaction Methods 0.000 claims description 30
- 230000001419 dependent effect Effects 0.000 claims description 26
- 230000008859 change Effects 0.000 claims description 21
- 238000001514 detection method Methods 0.000 claims description 2
- 230000003247 decreasing effect Effects 0.000 claims 2
- 230000004044 response Effects 0.000 description 27
- 239000000872 buffer Substances 0.000 description 17
- 230000008569 process Effects 0.000 description 13
- 230000007246 mechanism Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 238000005457 optimization Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 5
- 230000001427 coherent effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 4
- 102100036464 Activated RNA polymerase II transcriptional coactivator p15 Human genes 0.000 description 3
- 101000713904 Homo sapiens Activated RNA polymerase II transcriptional coactivator p15 Proteins 0.000 description 3
- 229910004444 SUB1 Inorganic materials 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
メモリファイルは、メモリオペレーションの処理時の現在の呼び出し深さが、エントリに記憶されている呼び出し深さと一致する場合に、メモリオペレーションのアドレス指定パターンとエントリに記憶されているアドレス指定パターンとが等しければ、メモリオペレーションのアドレス指定パターンとエントリに記憶されている前記アドレス指定パターンとが一致していると判定するように構成され得る。メモリファイルは、メモリオペレーションの処理時の現在の呼び出し深さが、エントリに記憶されている呼び出し深さと一致する場合に、そのメモリオペレーションのアドレス指定パターンを記憶するための新しいエントリを割り当て、メモリオペレーションの処理時の現在の呼び出し深さの値をその新しいエントリに記憶するように構成され得る。
メモリファイルは、エントリに記憶されているアドレス指定パターンが論理レジスタを識別しており、メモリオペレーションの処理時の現在の呼び出し深さが、エントリに記憶されている呼び出し深さと一致する場合、実行されると論理レジスタの値を変更するオペレーションがディスパッチされると、そのエントリを無効にするように構成され得る。しかし、メモリファイルは、メモリオペレーションの処理時の現在の呼び出し深さが、エントリに記憶されている呼び出し深さと一致しない場合には、オペレーションがディスパッチされても、そのエントリを無効にしないように構成され得る。
本発明は、様々に変形及び他の形態をとり得るが、その特定の実施形態は、例として図面に図示され、かつ本明細書に詳細に記載される。しかし、図面およびその詳細な説明は、開示の形態に本発明を限定することを意図するものではなく、本発明が、添付の特許請求の範囲によって規定される本発明の趣旨ならびに範囲に含まれる全ての変形例、均等物および代替例を含むことを意図することが理解されるべきである。本明細書中に使用されている見出しは、分類のみを意図しており、本明細書または特許請求の範囲を限定するものではない。さらに、本願にわたり「し得る、してもよい(may)」との用語は許容の意味(すなわち、可能性があること、できること)に用いられ、義務的な意味(すなわち必須)の意味には用いられていない点に留意されたい。「含む、備える(include)」との用語ならびにその派生語は、「含むがこれに限定されない」ことを意味する。「接続されている(connected)」との用語は、「直接的または間接的に接続されている」ことを意味し、「結合されている(coupled)」との用語は、「直接的または間接的に結合されている」ことを意味する。
マイクロプロセッサ100がサポートする1つの論理レジスタ(x86アプリケーションにおけるSSなどのスタックセグメントレジスタなど)が、メモリ200のスタック領域のベースアドレスを識別し得る。別の論理レジスタ(ESPなど)が、スタックポインタレジスタとして用いられ、スタック領域の現在の最上位を識別し得る。スタックの現在の最上位のアドレスは、スタック領域のベースアドレスと、スタックポインタレジスタに指定されているスタック内でのオフセットとを組み合わせることで得られる。このアドレスは、スタックに値をプッシュしたり、スタックから値をポップするために使用することができる。
マイクロプロセッサ100は、各種オペレーションのスタック−相対アドレス指定パターン(すなわち、メモリのスタック領域にアクセスするアドレス指定パターン)を用いて予測されたデータ値を使用して、データ投機的実行を行うように構成され得る。例えば、あるオペレーションがスケジューラ118にディスパッチされると、このオペレーションのオペランドのアドレス指定パターンと、スタックファイルに現在記憶されているアドレス指定パターンとを比較することで、オペレーションの1つ以上のオペランドの投機的な値が識別され得る。一部実施形態では、スケジューラ118は、この投機的な値を使用して、実行のためこのオペレーションを発行し得る。後からこの投機が誤っていたと判定された場合、非投機的な値を使用してオペレーションが再発行され得る。
図4Aは、メモリファイル136を備えたディスパッチユニット104の一実施形態である。メモリファイル136は、メモリファイルコントローラ402とメモリファイル記憶部404とを備える。メモリファイル136は、アドレス指定パターンに基づいて、物理レジスタに記憶されているレジスタ値を、メモリの特定のアドレスに記憶されている値にリンクするものであり得る。メモリファイルは、スタックファイルとは異なり、レジスタ値を、スタック領域以外のメモリ領域内のメモリ値にリンクするのに用いられ得る。一部実施形態では、メモリファイル136は、このほかに、レジスタ値をメモリのスタック領域内のメモリ値にリンクするために、前述したスタックファイル132の機能の一部も実施してもよい。別の実施形態では、ディスパッチユニット104は、このような機能を実施するためにスタックファイル132を別に備えていてもよい。
MOV EAX, [EBP + 20]
CALL
<サブルーチンのためにEBPの新しい値を設定するオペレーション>
MOV EBX, [EBP + 20]
RET <CALL以前のEBPの値を戻す>
MOV ECX, [EBP + 20]
各命令は、1つ以上の介入命令によって分けられる可能性がある。ディスパッチユニット104がこの命令のシーケンスを処理する前の、メモリファイルコントローラ402の呼び出し深さを1とする。オペレーション“MOV EAX, [EBP + 20]”の処理時に、メモリファイルコントローラ402は、呼び出し深さ=1を有する“EBP + 20”と、メモリファイル記憶部404にあるその他のエントリに記憶されているアドレス指定パターンとを比較し得る。一致するアドレス指定パターンが存在しないとすると、メモリファイルコントローラ402は、新しいエントリを割り当て、アドレス指定パターン“EBP + 20”と、EAXを識別するタグを記憶し得る。さらに、メモリファイルコントローラ402は、この新しいエントリ内の呼び出し深さフィールドに現在の呼び出し深さ(1など)を識別する値を付加し得る。多くの実施形態では、メモリファイルコントローラ402は、ベースポインタを含むアドレス指定パターンを記憶しているエントリに、この値を付加するだけでもよい点に留意されたい。
MOV EBX, [EDX + EAX - 変位A] (LOAD1)
MOV ECX, [EDX + EAX - 変位A] (LOAD2)
MOV [EDX + EAX - 変位A], EAX (STORE1)
これらのオペレーションの各々は、プログラムの順序内で1つ以上の介入命令によって分けられる可能性がある。上に示すように、これらの3つのオペレーションは、同じアドレス指定パターン(EDX + EAX - 変位A)を有する。
各種の実施形態では、多種多様な方法によって、ロードオペレーションの投機的な結果をレジスタのデータ値にリンクすることができる。一部実施形態では、オペランドについて投機的なソースと非投機的なソースの2種類のソースを識別することで値をリンクし得る。投機的なソースとは、リンクされたデータ値であり得る。ロードの投機的な結果にリンクされているデータ値を示すために、投機的なソースがそのロードオペレーションに提供され得る。一部実施形態では、投機的なソースは、このようなロードオペレーションに依存しているオペレーションにも提供され得る。このため、オペランドのなかには、投機的なソースを識別するタグと、非投機的なソースを識別するタグの2つのタグを有するものがあり得る。このような実施形態では、図5に示すように、各スケジューラ118は、投機的なオペランドと非投機的なオペランドの両方のためのタグの記憶領域を提供し得る。
図7は、マイクロプロセッサ100に備えられ得るディスパッチユニット104の別の実施形態を示す。この実施形態では、ディスパッチユニット104は、レジスタマップ134、スタックファイル132(および/または不図示のメモリファイル136)、および投機レジスタマップ800を備える。レジスタマップ134と同様に、投機レジスタマップ800は、論理レジスタ名を物理レジスタ名に変換し得る。しかし、投機レジスタマップ800は、スタックファイル132(および/またはメモリファイル136)が、物理レジスタに記憶されている値をロードオペレーションの投機的な結果にリンクすると、論理レジスタ名を物理レジスタ名に投機的にマップし得る。投機レジスタマップ800によって、アドレス指定パターンを含まないオペレーションの投機的なオペランド値を、レジスタのデータ値にリンクできるようになり得る。例えば、論理レジスタEAXについて有効な投機マップが存在する場合、ソースオペランドとしてEAXを有するオペレーションは、レジスタマップ134が提供する非投機的なタグと、投機レジスタマップ800が提供する投機的なタグの2つのソースタグを有し得る。投機的なソースが利用可能になると直ちにオペレーションが発行できるため、投機レジスタマップ800は、介入するロードおよびストアを全て迂回して、投機的なオペランドのタグを介して、データの使用先をデータの作成元に直接連結し得る。一部実施形態(投機的なレジスタ状態を記憶するための記憶領域を備えたリオーダバッファを有する実施形態など)では、投機マップが、物理レジスタ名以外のタグを記憶してもよい点に留意されたい。
ADD EBX, EBX (ADD1)
MOV [アドレス指定パターンA], EBX (STORE1)
ADD [アドレス指定パターンA], ECX (ADD2)
これらの命令は、連続する命令であり得る(例えば、これらの命令は、プログラムの順序内で連続的に実行され得る)。これらの命令は、実行コア124内での実行のため、以下の構成要素オペレーション(物理アドレスに変換した論理アドレスで示す)に分離され得る。
ADD PR2, PR2, PR1 (ADD1)
MOV [アドレス指定パターンA], PR2 (STORE1)
MOV PR3, [アドレス指定パターンA] (ADD2のロード)
ADD PR4, PR3, PR5 (ADD2の加算)
MOV [アドレス指定パターン], PR4 (ADD2のストア)
ディスパッチユニット104は、ADD2の構成要素オペレーションであるロード、加算およびストアの各オペレーションをディスパッチする前に、このシーケンス内の構成要素オペレーション間に、投機的な結果にリンクできるようにする依存性が存在するかどうかを検出し得る。さらに、STORE1によってストアされるデータは、ロードの投機的な結果に(例えば、スタックファイルによって)リンクすることができる。介入オペレーションが存在しないため、ディスパッチユニットは、ロードオペレーションと加算オペレーション(いずれのオペレーションも同じ命令に由来する)の間の同じディスパッチサイクルにおける依存性を検出するために必要な情報を全て有し得る。ディスパッチユニット104は、この2つの依存性に基づいて、STORE1によってストアされるデータのタグ(PR2)を、ADD2の一部として実行されるロードオペレーションの投機的な結果にリンクし得る。ディスパッチユニットは、今度はこの投機的なリンクによって、ADD2の一部として実行される加算オペレーションのソースを、PR2に記憶されている値にリンクすることができる。このため、ディスパッチユニット104は、PR2が加算のオペランドのうちの1つのソースとして投機的に使用できるが、PR3はこのオペランドの非投機的なソースであることを示す指標を出力し得る。このため、一実施形態では、ディスパッチユニットが出力するオペレーションとオペランド識別子は、以下のように指定され得る。
ADD PR2, PR2, PR1 (ADD1)
MOV [アドレス指定パターンA], PR2 (STORE1)
MOV PR3, [アドレス指定パターンA] (ADD2のロード)
ADD PR4, PR2*, PR3, PR5 (ADD2の加算であり、PR2*はECXの投機的なソースであり、PR3はECXの非投機的なソースである)
MOV [アドレス指定パターン], PR4 (ADD2のストア)
ADD PR2, PR1, PR1 (ADD1)
STORE [アドレス指定パターンA], PR2 (STORE1)
LOAD PR3, [アドレス指定パターンA] (LOAD1)
ADD PR4, PR3, PR3 (ADD2)
このシーケンスでは、指定されたオペレーションが1つ以上の介入オペレーションによって分けられる可能性がある。しかし、介入オペレーションによって、アドレス指定パターンAで使用されている値が変更されたり、アドレス指定パターンAから計算されたアドレスに記憶されているデータ値とPR2に記憶されているデータ値が変更されることがないとすると、PR2に記憶されているデータ値とアドレス指定パターンAから算出されたアドレスに記憶されているデータ値との間に投機的なリンクが検出され得る。
図1Aは、一実施形態によるマイクロプロセッサを示す。本実施形態では、マイクロプロセッサは、命令および/または少なくとも部分的にデコードされたオペレーションのトレースをキャッシュするように構成されたトレースキャッシュ160を備える。例示した実施形態では、トレースキャッシュ160は、マイクロプロセッサのバックエンドに配置されており、この結果、オペレーションがリタイアされるとトレースフィルユニット162によってトレースが作成される。トレースにあるオペレーションを再フェッチする場合、そのオペレーションは、命令キャッシュ106またはシステムメモリ200からフェッチされずに、トレースキャッシュ160からフェッチされ得る。別の実施形態では、トレースフィルユニット162は、マイクロプロセッサのフロントエンド(例えば、ディスパッチユニット104の前に)に設けられていてもよい点に留意されたい。
PUSH <>
MOV EBP, ESP
PUSH <>
これらの命令は、以下のオペレーションのシーケンスにデコードされ得る。
MOV [ESP - 4], <>
ADD ESP, ESP, -4
MOV EBP, ESP
ADD ESP, ESP, -4
MOV [ESP], <>
上記のオペレーションのほとんどは、前に実行されるオペレーションが生成するデータ値に依存している点に留意されたい。このため、これらのオペレーションは、前のオペレーションの結果が利用可能になるまで待機している間に、スケジューラ内でストールする可能性が高い。トレースフィルユニット162がこのオペレーションのシーケンスを処理して、トレースキャッシュエントリ170内にトレース172の一部として記憶すると、トレースフィルユニット162は、オペレーション間のデータ依存性を下げるために、特定の変換を実行し得る。例えば、上記のオペレーションのシーケンスは、次のように最適化され得る。
MOV [ESP - 4], <>
ADD o1, ESP, -4
MOV EBP, o1
MOV [ESP - 8], <>
ADD ESP, ESP, -8
さらに、トレース内のESPのオフセットの合計が−8であり、ESP−EBP間のオフセットが+4であることを示す情報174が、トレースキャッシュエントリ170に格納され得る。トレースフィルユニット162は、元のオペレーションを1つ処理する度に、この情報を各オペレーションにつき1回更新し、最終的に得た値を、最適化されたオペレーションのトレース172を含むトレースキャッシュエントリ170に記憶し得る。
図11は、バスブリッジ402を介して各種のシステムコンポーネントに結合されているプロセッサ100を備えたコンピュータシステム400の一実施形態のブロック図を示す。プロセッサ100は、前述のようにディスパッチユニット104、スタックファイル132、スケジューラ118および/または投機レジスタマップ800の一実施形態を備え得る。コンピュータシステムのこれ以外の実施形態も可能であり、考察される。図中のシステムにおいて、メインメモリ200は、メモリバス406を介してバスブリッジ402に結合され、グラフィックコントローラ408は、AGPバス410を介してバスブリッジ402に結合されている。PCIバス414を介して複数のPCIデバイス412A〜412Bがバスブリッジ402に結合されている。EISA/ISAバス420を介して1台以上のEISAデバイスまたはISAデバイス418を電気的に接続できるように、セカンダリバスブリッジ416を設けてもよい。この例では、プロセッサ100は、CPUバス424を介してバスブリッジ402に結合されているほか、任意選択で設けられるL2キャッシュ428にも結合されている。一部実施形態では、プロセッサ100は、一体化されたL1キャッシュ(図示せず)を備えていてもよい。
Claims (48)
- アドレス指定パターン及びタグを記憶するように構成されたエントリを有するメモリファイルを有し、前記メモリファイルは、メモリオペレーションのアドレス指定パターンと前記エントリに記憶されている前記アドレス指定パターンとが一致する場合に、前記タグによって識別されるデータ値を前記メモリオペレーションの投機的な結果にリンクするように構成されており、
前記メモリオペレーションの前記アドレス指定パターンは論理レジスタの識別子を含み、前記メモリファイルは、前記メモリオペレーションの前記アドレス指定パターンと前記エントリに記憶されている前記アドレス指定パターンとが一致するかどうかを判定するために、前記論理レジスタが、汎用レジスタまたはスタックフレームポインタレジスタのいずれとして指定されるかを予測するように構成されており、
前記メモリファイルに結合された実行コアを有し、この実行コアは、前記メモリオペレーションに依存する別のオペレーションを実行するときに、前記投機的な結果にアクセスするように構成されている、システム。 - 前記メモリファイルは、前記メモリオペレーションの前記アドレス指定パターンに含まれる前記論理レジスタが前記スタックフレームポインタレジスタとして使用されていると予測する場合に、前記メモリファイルが前記メモリオペレーションの前記アドレス指定パターンと前記エントリに記憶されている前記アドレス指定パターンとが一致しないと判定するように構成されており、
前記メモリファイルは、前記論理レジスタが前記汎用レジスタとして使用されていると予測する場合に、前記メモリファイルが前記メモリオペレーションの前記アドレス指定パターンと前記エントリに記憶されている前記アドレス指定パターンとが等しければ、前記メモリオペレーションの前記アドレス指定パターンと前記エントリに記憶されている前記アドレス指定パターンとが一致していると判定するように構成されている、請求項1に記載のシステム。 - 前記メモリファイルは、更に、当該メモリファイルが前記メモリオペレーションの前記アドレス指定パターンに含まれる論理レジスタがスタックフレームポインタレジスタとして使用されていると予測する場合には、メモリオペレーションのアドレス指定パターンを記憶するための新しいエントリを割り当てないように構成され、
前記メモリファイルが前記論理レジスタが汎用レジスタとして使用されていると予測する場合には、前記メモリファイルは、前記メモリオペレーションの前記アドレス指定パターンと前記エントリに記憶されているアドレス指定パターンとが等しくない場合に、メモリオペレーションのアドレス指定パターンを記憶するための新しいエントリを割り当てるように構成する、請求項2記載のシステム。 - 前記メモリファイルは、複数のエントリを有し、前記メモリファイルは、当該メモリファイルが前記論理レジスタがスタックフレームポインタレジスタとして使用されていると予測する場合には、前記メモリオペレーションの前記アドレス指定パターンは前記複数のエントリ内の複数のアドレス指定パターンのいずれにも一致しないと判定するように構成されている、請求項1記載のシステム。
- 前記メモリファイルは、複数のエントリを有し、前記メモリファイルは、当該メモリファイルが前記論理レジスタが前記スタックフレームポインタレジスタとして使用されていると予測する場合には、前記メモリオペレーションの前記アドレス指定パターンを記憶するための複数のエントリのうちの一つの割り当てを行わないように構成されている、請求項4記載のシステム。
- 前記メモリファイルは、コール命令が検出されると、前記論理レジスタが前記スタックフレームポインタレジスタとして使用されていると予測するように構成されている、請求項1記載のシステム。
- 前記メモリファイルは、リターン命令が検出されると、前記論理レジスタが前記汎用レジスタとして使用されていると予測するように構成されている、請求項1記載のシステム。
- 前記メモリファイルは、前記論理レジスタに前記スタックポインタの値をコピーするオペレーションの検出されると、前記論理レジスタが前記スタックフレームポインタレジスタとして使用されていると予測するように構成されている、請求項1記載のシステム。
- 前記メモリファイルは、エンター命令が検出されると、前記論理レジスタが前記スタックフレームポインタレジスタとして使用されていると予測するように構成されている、請求項1記載のシステム。
- 前記メモリファイルは、現在の呼び出し深さを追跡することによって前記論理レジスタが汎用レジスタまたはスタックフレームポインタレジスタのいずれとして使用されているかを予測するように構成されており、前記メモリファイルは、コール命令が検出されると現在の呼び出し深さを増加させ、リターン命令が検出されると現在の呼び出し深さを減少させるように構成される、請求項1記載のシステム。
- 前記エントリは、前記エントリが割り当てられたとき、コール深さの値を現在のコール深さの値に等しいとして記憶する、請求項10記載のシステム。
- メモリオペレーションの処理時に前記現在のコール深さの値が前記エントリに記憶された前記コール深さの値と等しくない場合には、前記メモリファイルは、前記メモリオペレーションの前記アドレス指定パターンが前記エントリに記憶されたアドレス指定パターンに一致しないと判定するように構成されており、
前記メモリオペレーションの処理時に前記現在のコール深さが前記エントリに記憶された前記コール深さの値に一致する場合には、前記メモリファイルは、前記メモリオペレーションのアドレス指定パターンが前記エントリに記憶された前記アドレス指定パターンに等しい場合には、前記メモリオペレーションの前記アドレス指定パターンが前記エントリに記憶されたアドレス指定パターンに一致すると判定するように構成された、請求項11記載のシステム。 - 前記メモリオペレーションが処理中のときの前記現在のコール深さの値がエントリに記憶されたコール深さの値に等しくない場合、前記メモリファイルは、前記メモリオペレーションのアドレス指定パターンを記憶するための新しいエントリを割り当てるとともに、前記メモリオペレーションが前記新しいエントリで処理されているときに前記現在のコール深さの値を記録するように構成されている、請求項11記載のシステム。
- 前記エントリに記録されたアドレス指定パターンが前記論理レジスタの前記識別子を含む場合、前記メモリファイルは、前記オペレーションが処理されるときの現在のコール深さの値が前記エントリに記憶されたコール深さの値に等しい場合は、その実行時に前記論理レジスタの値を変更するオペレーションがディスパッチされると前記エントリを無効とするように構成されており、
前記メモリファイルは、前記オペレーションが処理されているときの現在のコール深さの値が前記エントリに記憶されたコール深さの値に等しくない場合には、前記オペレーションがディスパッチされても前記エントリを無効化しないように構成されている、請求項11記載のシステム。 - 前記メモリファイルは別のエントリを有しており、前記別のエントリはスタック−相対アドレス指定パターンを記憶しており、前記メモリファイルは、オペレーションのアドレス指定パターンと前記別のエントリに記憶されている前記スタック−相対アドレス指定パターンとが一致するかどうかを判定する際に、前記スタックポインタに対する調整を補正するように構成されている、請求項1に記載のシステム。
- 前記メモリファイルは、その実行時に前記スタックポインタの値を修正するオペレーションがディスパッチされると、前記他のエントリに記憶された変位を変更することで前記スタックポインタに対する調整を補正するように構成されている、請求項15記載のシステム。
- 前記メモリファイルは、アドレス指定パターン調整値を変更することで前記スタックポインタに対する調整を補正するように構成されており、前記メモリファイルは、前記新しいオペレーションのアドレス指定パターンへの前記アドレス指定パターン調整値の適用を、前記新しいオペレーションのアドレス指定パターンが前記他のエントリに記憶されたスタック−相対アドレス指定パターンに一致するかを判定するための前記新しいオペレーションのアドレス指定パターンと前記他のエントリに記憶された前記スタック−相対アドレス指定パターンとの比較に先立って行うように構成されている、請求項15記載のシステム。
- 前記メモリファイルは、前記新しいオペレーションの前記アドレス指定パターンが前記他のエントリに記憶されたスタック−相対アドレス指定パターンに一致しない場合に、前記新しいオペレーションの前記アドレス指定パターンを新しいエントリに割り当てるように構成されており、前記アドレス指定パターン調整値は、前記メモリファイルエントリ内に記憶された前記新しいオペレーションのアドレス指定パターンに適用される、請求項17記載のシステム。
- 前記メモリファイルは、所定のオペレーションがディスパッチされると、スタックフレームポインタのアドレス指定パターン調整値を変更するように構成されており、かつ、前記所定のオペレーションは、実行されると前記スタックフレームポインタレジスタの値を変更するものであり、
前記メモリファイルは、前記メモリオペレーションの前記アドレス指定パターンと前記エントリに記憶されている前記アドレス指定パターンとが一致するかどうかを判定するために、前記メモリオペレーションの前記アドレス指定パターンと前記エントリに記憶されている前記アドレス指定パターンとの比較に先立って、前記スタックフレームポインタのアドレス指定パターン調整値を前記メモリオペレーションの前記アドレス指定パターンに適用するように構成されている、請求項1に記載のシステム。 - 複数のエントリを有したスタックファイルを有し、オペレーションのアドレス指定パターンが前記複数のエントリのうちの一つに記録されたアドレス指定パターンと一致しない場合には、前記スタックファイルは、前記オペレーションのアドレス指定パターンが前記論理レジスタの識別子を含むときには前記オペレーションのアドレス指定パターンを記憶するためのエントリを前記スタックファイル内に割り当てるように構成される、請求項1記載のシステム。
- 前記メモリファイルは、複数のエントリを有し、オペレーションのアドレス指定パターンが前記メモリファイル内の前記複数のエントリのうちの一つに記録されたアドレス指定パターンと一致しない場合には、前記メモリファイルは、前記オペレーションのアドレス指定パターンが前記論理レジスタの識別子を含むときには前記オペレーションのアドレス指定パターンを記憶するためのエントリを割り当てるように構成される、請求項1記載のシステム。
- 前記メモリファイルは、複数のエントリを有し、前記メモリファイルは、前記論理レジスタが汎用レジスタとして特定されていると予測されるか、あるいはスタックフレームポインタレジスタとして特定されていると予測されるか、に応じて、前記オペレーションの前記アドレス指定パターンを記憶するために前記メモリファイル内に選択的にエントリを割り当てるように構成される、請求項20記載のシステム。
- 前記メモリファイルは、そのアドレス指定パターンがスタックポインタレジスタの識別子を含むオペレーションのいずれに対しても前記メモリファイル内のエントリを割り当てないよう構成されている、請求項20記載のシステム。
- 前記スタックファイルは、スタックポインタアドレス指定パターン調整値とスタックフレームポインタアドレス指定ポインタ調整値とを維持するように構成されており、
前記メモリファイルは、前記論理レジスタが汎用レジスタとして特定されているかまたはスタックフレームポインタレジスタとして特定されているかを、前記スタックフレームポインタアドレス指定ポインタ調整値が有効であるか否かに依存している、請求項20記載のシステム。 - 前記タグをメモリオペレーションに対する投機的なオペランドソースタグとして転送するための手段を更に有する、請求項1記載のシステム。
- スケジューラを備え、このスケジューラに前記投機的なソースオペランドタグが与えられると、当該スケジューラが前記メモリオペレーションを発行するように構成されている、請求項25記載のシステム。
- 前記データ値を結果バスに転送しかつ前記データ値が前記メモリオペレーションの結果であることを示すための手段を有する、請求項1記載のシステム。
- 前記エントリに記憶された前記アドレス指定パターンは、記憶オペレーションのアドレス指定パターン一部であり、前記記憶オペレーションは、前記メモリオペレーションよりもプログラムオーダーでより早く発生する請求項1記載のシステム。
- 二重用途レジスタを識別するアドレス指定パターンに基づいたデータ投機を実行する方法であって、
メモリファイルが、メモリオペレーションのアドレス指定パターンにおいて識別される論理レジスタが、汎用レジスタまたはスタックフレームポインタレジスタかいずれとして使用されるかを予測するステップと、
前記メモリファイルが、前記予測に応じて、前記メモリオペレーションの前記アドレス指定パターンと以前のオペレーションのアドレス指定パターンとが一致するかどうかを判定するステップと、
前記メモリファイルが、前記メモリオペレーションの前記アドレス指定パターンと以前のオペレーションのアドレス指定パターンとが一致する場合に、前記以前のオペレーションのオペランドのタグによって識別されるデータ値を前記メモリオペレーションの投機的な結果にリンクするステップと、
前記メモリファイルに結合された実行コアが、前記メモリオペレーションの結果に依存するオペランドソースを有するオペレーションを実行するステップと、を有し、前記実行するステップは、前記タグが識別する前記データ値にアクセスするステップを、有する方法。 - 前記予測において、前記メモリオペレーションの前記アドレス指定パターンに含まれる前記論理レジスタが前記スタックフレームポインタレジスタとして使用されると予測された場合に、前記判定するステップでは、前記メモリオペレーションの前記アドレス指定パターンと前記以前のオペレーションの前記アドレス指定パターンとが一致しないと判定がなされ、
前記予測において、前記論理レジスタが前記汎用レジスタとして使用されていると予測された場合に、前記判定するステップでは、前記メモリオペレーションの前記アドレス指定パターンが前記以前のオペレーションの前記アドレス指定パターンと等しければ、前記メモリオペレーションの前記アドレス指定パターンと前記以前のオペレーションの前記アドレス指定パターンとが一致していると判定される、請求項29に記載の方法。 - 前記予測において前記メモリオペレーションのアドレス指定パターンに含まれる前記論理レジスタが前記スタックフレームポインタレジスタとして使用されていると予測された場合には、前記メモリファイルが、前記メモリファイル内の前記メモリオペレーションの前記アドレス指定パターンを記憶せず、
前記予測で前記論理レジスタが前記汎用レジスタとして使用されていると予測された場合には、前記メモリオペレーションの結果前記アドレス指定パターンが前記より早いオペレーションのアドレス指定パターンに等しくないときは、前記メモリファイルが、前記メモリファイル内の前記メモリオペレーションのアドレス指定パターンを記録する、請求項30記載の方法。 - 前記予測には、コール命令が検出されると前記論理レジスタがスタックフレームポインタレジスタとして使用されていると予測することが含まれる、請求項29記載の方法。
- 前記予測には、リターン命令が検出されると前記論理レジスタが前記汎用レジスタとして使用されていると予測することが含まれる、請求項32記載の方法。
- 前記予測には、エンター命令が検出されると前記論理レジスタが前記スタックフレームポインタレジスタとして使用されていると予測することが含まれる、請求項29記載の方法。
- 前記予測には、前記スタックポインタの値を前記論理レジスタにコピーするよう動作するオペレーションが検出されると、前記論理レジスタは前記スタックフレームポインタレジスタとして使用されていると予測することが含まれる、請求項29記載の方法。
- 前記予測には、コール命令が検出されると現在のコール深さを増加させ、リターン命令が検出されると現在のコール深さを減少させることで、現在のコール深さの追跡を行うことが含まれる、請求項29記載の方法。
- 前記より早いオペレーションの前記アドレス指定パターンはメモリファイルエントリに記憶され、前記メモリファイルエントリには、前記メモリファイルエントリが割り当てられたときの現在のコール深さの値に等しいコール深さを有する、請求項36記載の方法。
- 前記予測するステップは、コール命令が検出されると現在の呼び出し深さを増加させ、リターン命令が検出されると前記現在の呼び出し深さを減少させることにより、前記現在の呼び出し深さを追跡するステップを有する、請求項29に記載の方法。
- 前記メモリオペレーションが処理されているときの現在のコール深さの値が前記メモリファイルエントリに記憶された前記コール深さの値に等しくないときには、前記メモリファイルが、前記メモリオペレーションの前記アドレス指定パターン及び現在のコール深さの値を記憶するため別のメモリファイルエントリを割り当てる、請求項36記載の方法。
- 前記以前のオペレーションの前記アドレス指定パターンはメモリファイルのエントリに記憶され、前記メモリファイルの別のエントリにスタック−相対アドレス指定パターンが記憶され、
前記方法は、前記メモリファイルが、スタックポインタに対する変更を追跡することにより、オペレーションのアドレス指定パターンと前記スタック−相対アドレス指定パターンとが一致するかどうかを判定するステップを更に有する、請求項29に記載の方法。 - 前記スタックポインタに対する追跡の変更には、それ自身が実行されたときに前記スタックポインタの値を変更するオペレーションがディスパッチされると、前記他のエントリ内に記憶された変位を変更することが含まれる、請求項40記載の方法。
- 前記スタックポインタに対する追跡の変更には、前記アドレス指定パターン調整値の変更が含まれ、前記判定には、前記アドレス指定パターン調整値の前記オペレーションのアドレス指定パターンへの適用を、前記オペレーションのアドレス指定パターンを前記他のエントリ内に記憶されたスタック−相対アドレス指定パターンとの比較に先立って行うことが含まれる、請求項40記載の方法。
- それ自身が実行されたときに前記スタックフレームポインタレジスタの値を変更するオペレーションがディスパッチされると、前記メモリファイルが、スタックフレームポインタアドレス指定パターン調整値を変更し、
前記メモリファイルが、前記スタックフレームポインタアドレス指定パターン調整値の前記メモリオペレーションのアドレス指定パターンへの適用を、前記メモリオペレーションのアドレス指定パターンが前記より早いオペレーションのアドレス指定パターンに一致するかを判定するための前記メモリオペレーションのアドレス指定パターンと前記より早いオペレーションのアドレス指定パターンとの比較に先立って行う、請求項29記載の方法。 - 前記メモリオペレーションのアドレス指定パターン前記より早いオペレーションのアドレス指定パターンに一致しない場合には、前記メモリファイルが、前記メモリオペレーションのアドレス指定パターンを記憶するためにメモリファイルエントリを割り当て、前記スタックフレームポインタアドレス指定パターン調整値は前記メモリファイルエントリに記憶されたメモリオペレーションのアドレス指定パターンを変更する、請求項43記載の方法。
- 前記オペレーションのアドレス指定パターンが前記スタックファイル内に含まれる複数のエントリのうちの一つに記憶されたアドレス指定パターンに一致せず、かつ、前記オペレーションのアドレス指定パターンが前記論理レジスタの識別子を含む場合に、オペレーションのアドレス指定パターンを記録するためのエントリを前記スタックファイル内に割り当てるスタックファイルを更に含む、請求項29記載の方法。
- 前記予測に依存して前記オペレーションのアドレス指定パターンを記録するために前記メモリファイルにエントリを選択的に割り当てる前記メモリファイルを更に含む、請求項45記載の方法。
- スタックポインタアドレス指定パターン調整値とスタックフレームポインタアドレス指定ポインタ調整値とを維持するためのスタックファイルを更に有し、前記予測は、前記スタックフレームポインタアドレス指定ポインタ調整値が有効であるか否かに依存する、請求項45記載の方法。
- システムメモリと、
前記システムメモリに結合されたマイクロプロセッサとを備えたコンピュータシステムであって、前記マイクロプロセッサは、
アドレス指定パターン及びタグを記憶するように構成されたエントリを有するメモリファイルを有し、前記メモリファイルは、メモリオペレーションのアドレス指定パターンと前記エントリに記憶されている前記アドレス指定パターンとが一致する場合に、前記タグによって識別されるデータ値を前記メモリオペレーションの投機的な結果にリンクするように構成されており、
前記メモリオペレーションのアドレス指定パターンは論理レジスタの識別子を含み、前記メモリファイルは、前記メモリオペレーションの前記アドレス指定パターンと前記エントリに記憶されている前記アドレス指定パターンとが一致するかどうかを判定するために、前記論理レジスタが、汎用レジスタまたはスタックフレームポインタレジスタかいずれとして指定されるかを予測するように構成されており、
前記マイクロプロセッサは、前記メモリファイルに結合された実行コアを更に有し、前記実行コアは、前記メモリオペレーションに依存する別のオペレーションを実行するときに、前記投機的な結果にアクセスするように構成されているコンピュータシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/348,144 US7024537B2 (en) | 2003-01-21 | 2003-01-21 | Data speculation based on addressing patterns identifying dual-purpose register |
PCT/US2004/000477 WO2004068341A1 (en) | 2003-01-21 | 2004-01-09 | Data speculation based on addressing patterns identifying dual-purpose register |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007504575A JP2007504575A (ja) | 2007-03-01 |
JP4538462B2 true JP4538462B2 (ja) | 2010-09-08 |
Family
ID=32712491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006536513A Expired - Fee Related JP4538462B2 (ja) | 2003-01-21 | 2004-01-09 | 二重用途レジスタを識別しているアドレス指定パターンに基づいたデータ投機 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7024537B2 (ja) |
EP (1) | EP1586029B1 (ja) |
JP (1) | JP4538462B2 (ja) |
KR (1) | KR101019224B1 (ja) |
CN (1) | CN1742257B (ja) |
DE (1) | DE602004015568D1 (ja) |
TW (1) | TWI333629B (ja) |
WO (1) | WO2004068341A1 (ja) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7227994B2 (en) * | 2003-03-20 | 2007-06-05 | International Business Machines Corporation | Method and apparatus for imbedded pattern recognition using dual alternating pointers |
US7366352B2 (en) * | 2003-03-20 | 2008-04-29 | International Business Machines Corporation | Method and apparatus for performing fast closest match in pattern recognition |
US7003629B1 (en) * | 2003-07-08 | 2006-02-21 | Advanced Micro Devices, Inc. | System and method of identifying liveness groups within traces stored in a trace cache |
US7133969B2 (en) * | 2003-10-01 | 2006-11-07 | Advanced Micro Devices, Inc. | System and method for handling exceptional instructions in a trace cache based processor |
US7555633B1 (en) | 2003-11-03 | 2009-06-30 | Advanced Micro Devices, Inc. | Instruction cache prefetch based on trace cache eviction |
US20050114627A1 (en) * | 2003-11-26 | 2005-05-26 | Jacek Budny | Co-processing |
US8069336B2 (en) * | 2003-12-03 | 2011-11-29 | Globalfoundries Inc. | Transitioning from instruction cache to trace cache on label boundaries |
US7213126B1 (en) | 2004-01-12 | 2007-05-01 | Advanced Micro Devices, Inc. | Method and processor including logic for storing traces within a trace cache |
US7197630B1 (en) | 2004-04-12 | 2007-03-27 | Advanced Micro Devices, Inc. | Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation |
US7365007B2 (en) * | 2004-06-30 | 2008-04-29 | Intel Corporation | Interconnects with direct metalization and conductive polymer |
US7415597B2 (en) * | 2004-09-08 | 2008-08-19 | Advanced Micro Devices, Inc. | Processor with dependence mechanism to predict whether a load is dependent on older store |
US7870541B1 (en) * | 2004-11-01 | 2011-01-11 | Wind River Systems, Inc. | Context tracing for software with a frame pointer and a stack pointer and with a stack pointer but without a frame pointer |
WO2007051347A1 (en) * | 2005-10-31 | 2007-05-10 | Intel Corporation | System and method for managing a register-based stack of operand tags |
US7624253B2 (en) * | 2006-10-25 | 2009-11-24 | Arm Limited | Determining register availability for register renaming |
US7730289B2 (en) * | 2007-09-27 | 2010-06-01 | Faraday Technology Corp. | Method for preloading data in a CPU pipeline |
US8458671B1 (en) * | 2008-02-12 | 2013-06-04 | Tilera Corporation | Method and system for stack back-tracing in computer programs |
US20100070730A1 (en) * | 2008-09-17 | 2010-03-18 | Sebastian Pop | Minimizing memory access conflicts of process communication channels |
US8935574B2 (en) | 2011-12-16 | 2015-01-13 | Advanced Micro Devices, Inc. | Correlating traces in a computing system |
US8832500B2 (en) | 2012-08-10 | 2014-09-09 | Advanced Micro Devices, Inc. | Multiple clock domain tracing |
US8959398B2 (en) | 2012-08-16 | 2015-02-17 | Advanced Micro Devices, Inc. | Multiple clock domain debug capability |
US9411590B2 (en) * | 2013-03-15 | 2016-08-09 | Qualcomm Incorporated | Method to improve speed of executing return branch instructions in a processor |
US9164697B2 (en) * | 2013-06-24 | 2015-10-20 | Samsung Electronics Co., Ltd. | Method and architecture for highly scalable data storage |
US9524164B2 (en) * | 2013-08-30 | 2016-12-20 | Advanced Micro Devices, Inc. | Specialized memory disambiguation mechanisms for different memory read access types |
GB2525314B (en) * | 2014-01-17 | 2016-02-24 | Imagination Tech Ltd | Stack pointer value prediction |
WO2017006235A1 (en) * | 2015-07-09 | 2017-01-12 | Centipede Semi Ltd. | Processor with efficient memory access |
US10162526B2 (en) * | 2015-10-20 | 2018-12-25 | Micron Technology, Inc. | Logical address history management in memory device |
US10157268B2 (en) * | 2016-09-27 | 2018-12-18 | Microsoft Technology Licensing, Llc | Return flow guard using control stack identified by processor register |
US10884745B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Providing a predicted target address to multiple locations based on detecting an affiliated relationship |
US10719328B2 (en) | 2017-08-18 | 2020-07-21 | International Business Machines Corporation | Determining and predicting derived values used in register-indirect branching |
US10908911B2 (en) | 2017-08-18 | 2021-02-02 | International Business Machines Corporation | Predicting and storing a predicted target address in a plurality of selected locations |
US10884746B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Determining and predicting affiliated registers based on dynamic runtime control flow analysis |
US10884747B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Prediction of an affiliated register |
US10534609B2 (en) | 2017-08-18 | 2020-01-14 | International Business Machines Corporation | Code-specific affiliated register prediction |
US11150904B2 (en) | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Concurrent prediction of branch addresses and update of register contents |
US11150908B2 (en) | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence |
US11061575B2 (en) | 2017-09-19 | 2021-07-13 | International Business Machines Corporation | Read-only table of contents register |
US10620955B2 (en) | 2017-09-19 | 2020-04-14 | International Business Machines Corporation | Predicting a table of contents pointer value responsive to branching to a subroutine |
US10705973B2 (en) | 2017-09-19 | 2020-07-07 | International Business Machines Corporation | Initializing a data structure for use in predicting table of contents pointer values |
US10713050B2 (en) | 2017-09-19 | 2020-07-14 | International Business Machines Corporation | Replacing Table of Contents (TOC)-setting instructions in code with TOC predicting instructions |
US10884929B2 (en) | 2017-09-19 | 2021-01-05 | International Business Machines Corporation | Set table of contents (TOC) register instruction |
US10725918B2 (en) | 2017-09-19 | 2020-07-28 | International Business Machines Corporation | Table of contents cache entry having a pointer for a range of addresses |
US10896030B2 (en) | 2017-09-19 | 2021-01-19 | International Business Machines Corporation | Code generation relating to providing table of contents pointer values |
US10185595B1 (en) * | 2018-06-04 | 2019-01-22 | Confia Systems, Inc. | Program verification using hash chains |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5127103A (en) * | 1987-10-14 | 1992-06-30 | North American Philips Corporation | Real-time tracing of dynamic local data in high level languages in the presence of process context switches |
US5778219A (en) * | 1990-12-14 | 1998-07-07 | Hewlett-Packard Company | Method and system for propagating exception status in data registers and for detecting exceptions from speculative operations with non-speculative operations |
US5428807A (en) * | 1993-06-17 | 1995-06-27 | Digital Equipment Corporation | Method and apparatus for propagating exception conditions of a computer system |
US5584009A (en) * | 1993-10-18 | 1996-12-10 | Cyrix Corporation | System and method of retiring store data from a write buffer |
US6237082B1 (en) * | 1995-01-25 | 2001-05-22 | Advanced Micro Devices, Inc. | Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received |
US5892936A (en) * | 1995-10-30 | 1999-04-06 | Advanced Micro Devices, Inc. | Speculative register file for storing speculative register states and removing dependencies between instructions utilizing the register |
US6108769A (en) * | 1996-05-17 | 2000-08-22 | Advanced Micro Devices, Inc. | Dependency table for reducing dependency checking hardware |
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 |
US5781752A (en) * | 1996-12-26 | 1998-07-14 | Wisconsin Alumni Research Foundation | Table based data speculation circuit for parallel processing computer |
US6021485A (en) * | 1997-04-10 | 2000-02-01 | International Business Machines Corporation | Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching |
US5845103A (en) * | 1997-06-13 | 1998-12-01 | Wisconsin Alumni Research Foundation | Computer with dynamic instruction reuse |
US6065103A (en) * | 1997-12-16 | 2000-05-16 | Advanced Micro Devices, Inc. | Speculative store buffer |
US6044430A (en) * | 1997-12-17 | 2000-03-28 | Advanced Micro Devices Inc. | Real time interrupt handling for superscalar processors |
US6112296A (en) * | 1997-12-18 | 2000-08-29 | Advanced Micro Devices, Inc. | Floating point stack manipulation using a register map and speculative top of stack values |
US6175910B1 (en) * | 1997-12-19 | 2001-01-16 | International Business Machines Corportion | Speculative instructions exection in VLIW processors |
JPH11212788A (ja) * | 1998-01-28 | 1999-08-06 | Toshiba Corp | プロセッサのデータ供給装置 |
US6202204B1 (en) * | 1998-03-11 | 2001-03-13 | Intel Corporation | Comprehensive redundant load elimination for architectures supporting control and data speculation |
US6108770A (en) * | 1998-06-24 | 2000-08-22 | Digital Equipment Corporation | Method and apparatus for predicting memory dependence using store sets |
US6463580B1 (en) * | 1998-11-18 | 2002-10-08 | Intel Corporation | Parallel processing utilizing highly correlated data values |
US6349382B1 (en) * | 1999-03-05 | 2002-02-19 | International Business Machines Corporation | System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order |
US6658554B1 (en) * | 1999-03-09 | 2003-12-02 | Wisconsin Alumni Res Found | Electronic processor providing direct data transfer between linked data consuming instructions |
US6266744B1 (en) * | 1999-05-18 | 2001-07-24 | Advanced Micro Devices, Inc. | Store to load forwarding using a dependency link file |
US6662280B1 (en) | 1999-11-10 | 2003-12-09 | Advanced Micro Devices, Inc. | Store buffer which forwards data based on index and optional way match |
US6438673B1 (en) * | 1999-12-30 | 2002-08-20 | Intel Corporation | Correlated address prediction |
US6643767B1 (en) * | 2000-01-27 | 2003-11-04 | Kabushiki Kaisha Toshiba | Instruction scheduling system of a processor |
DE10121792C2 (de) * | 2000-05-26 | 2003-09-25 | Ibm | Universelle Ladeadresse/Wertevorhersageschema |
US7028166B2 (en) | 2002-04-30 | 2006-04-11 | Advanced Micro Devices, Inc. | System and method for linking speculative results of load operations to register values |
-
2003
- 2003-01-21 US US10/348,144 patent/US7024537B2/en not_active Expired - Fee Related
-
2004
- 2004-01-09 KR KR1020057010296A patent/KR101019224B1/ko not_active IP Right Cessation
- 2004-01-09 EP EP04701175A patent/EP1586029B1/en not_active Expired - Lifetime
- 2004-01-09 DE DE602004015568T patent/DE602004015568D1/de not_active Expired - Lifetime
- 2004-01-09 CN CN2004800025925A patent/CN1742257B/zh not_active Expired - Fee Related
- 2004-01-09 WO PCT/US2004/000477 patent/WO2004068341A1/en active Application Filing
- 2004-01-09 JP JP2006536513A patent/JP4538462B2/ja not_active Expired - Fee Related
- 2004-01-19 TW TW093101345A patent/TWI333629B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
DE602004015568D1 (de) | 2008-09-18 |
JP2007504575A (ja) | 2007-03-01 |
CN1742257A (zh) | 2006-03-01 |
KR20050089030A (ko) | 2005-09-07 |
CN1742257B (zh) | 2010-04-28 |
KR101019224B1 (ko) | 2011-03-04 |
WO2004068341A1 (en) | 2004-08-12 |
TWI333629B (en) | 2010-11-21 |
EP1586029B1 (en) | 2008-08-06 |
US7024537B2 (en) | 2006-04-04 |
US20040143721A1 (en) | 2004-07-22 |
EP1586029A1 (en) | 2005-10-19 |
TW200422948A (en) | 2004-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4538462B2 (ja) | 二重用途レジスタを識別しているアドレス指定パターンに基づいたデータ投機 | |
US7089400B1 (en) | Data speculation based on stack-relative addressing patterns | |
KR100953207B1 (ko) | 로드/저장 오퍼레이션들을 바이패스하기 위하여 추론적 소스 오퍼랜드를 사용하는 시스템 및 방법 | |
KR100958705B1 (ko) | 로드 동작들의 추론적 결과들을 레지스터 값들에링크시키는 시스템 및 방법 | |
JP5294632B2 (ja) | 読出しが以前の書込みに依存しているかどうかを予測する依存性メカニズムを備えたプロセッサ | |
US6950925B1 (en) | Scheduler for use in a microprocessor that supports data-speculative execution | |
JP2007536626A (ja) | ロードオペレーションの投機的な結果をレジスタ値にリンクするメモリファイルを検証するためのシステムおよび方法 | |
WO2005041024A2 (en) | System and method for handling exceptional instructions in a trace cache based processor | |
KR101093784B1 (ko) | 리플레이 메커니즘을 구비한 로드 저장 유닛 | |
JP4624988B2 (ja) | データ推測マイクロプロセッサにおいて実行中のオペレーションのインスタンスがオペレーションのリプレイの割込みを防ぐためのシステム及び方法 | |
US7043626B1 (en) | Retaining flag value associated with dead result data in freed rename physical register with an indicator to select set-aside register instead for renaming | |
JP4745960B2 (ja) | マイクロプロセッサにおいてデータ推測オペレーションを識別する推測ポインタ | |
US7555633B1 (en) | Instruction cache prefetch based on trace cache eviction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070109 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070110 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090901 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091222 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100319 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100329 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100422 |
|
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: 20100525 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100621 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130625 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20100714 |
|
RD05 | Notification of revocation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7425 Effective date: 20100902 |
|
A072 | Dismissal of procedure [no reply to invitation to correct request for examination] |
Free format text: JAPANESE INTERMEDIATE CODE: A072 Effective date: 20101104 |
|
A072 | Dismissal of procedure [no reply to invitation to correct request for examination] |
Free format text: JAPANESE INTERMEDIATE CODE: A072 Effective date: 20101222 |
|
LAPS | Cancellation because of no payment of annual fees |