JP3871458B2 - コンピュータ・システム - Google Patents
コンピュータ・システム Download PDFInfo
- Publication number
- JP3871458B2 JP3871458B2 JP01581199A JP1581199A JP3871458B2 JP 3871458 B2 JP3871458 B2 JP 3871458B2 JP 01581199 A JP01581199 A JP 01581199A JP 1581199 A JP1581199 A JP 1581199A JP 3871458 B2 JP3871458 B2 JP 3871458B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- instruction
- execution
- contents
- computer system
- 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
- 238000000034 method Methods 0.000 claims description 18
- 230000008859 change Effects 0.000 claims description 8
- 238000012360 testing method Methods 0.000 claims description 5
- 238000012546 transfer Methods 0.000 claims description 3
- 230000015654 memory Effects 0.000 description 57
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 230000000903 blocking effect Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000010420 art technique Methods 0.000 description 2
- 230000007334 memory performance Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000001360 synchronised effect Effects 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の属する技術分野】
本発明は、コンピュータ・システムの中で実行されるコンピュータ命令に関するものである。より詳細には、本発明は、レジスタの内容へのアクセスがコンピュータ・システム上のプログラム実行を停止する原因となるかどうかを判定し、それによってメモリの待ち時間を示すコンピュータ命令に関するものである。
【0002】
【従来の技術】
一般的なコンピュータ・システムには、1つまたは複数のプロセッサ、メモリ・システム、および記憶媒体が含まれる。メモリ・システムには、一般にメイン・メモリ、およびメイン・メモリとプロセッサの間に接続された、1つまたは複数のキャッシュ・メモリが含まれる。記憶媒体は、ハードディスク装置、フロッピー・ディスク装置、CD−ROM装置、および同様の物を備える。
【0003】
コンピュータ・システムは、連続する命令から構成されるコンピュータ・プログラムを実行することによってタスクを実行する。コンピュータ・システムの性能は、命令を実行する速度に著しく影響される。
【0004】
1つの一般的なタイプの命令は、メモリからオペランドを検索しそのオペランドをプロセッサのレジスタ中に格納するロード命令である。オペランドをキャッシュ・メモリの中に格納した場合、それは迅速に検索される。これは当業者には「キャッシュ・ヒット(cache hit)」として周知である。しかしながら、オペランドがメイン・メモリの中でのみ使用可能である場合、オペランドをレジスタの中にロードするのにかなり長い時間がかかることもある。これは当業者には「キャッシュ・ミス(cache miss)」として周知である。キャッシュ・ミスの後、オペランドをメモリからレジスタにロードすることを必要とする命令に出会うまで、多くのコンピュータ・システムでは命令を実行し続ける。このような命令に出会った時、プロセッサはその命令の実行を停止し、ロードが終了するのを待つ。この技術は当業者には「ストール・オン・ユーズ(stall on use)」として周知であり、この方式をサポートするキャッシュ・メモリは、「非ブロッキング・キャッシュ(non-blocking cache)」として周知である。
【0005】
プロセッサの性能はメイン・メモリ・システムの性能よりも急速に向上している。現在のコンピュータ・システムでは、メイン・メモリからオペランドを検索するのに100プロセッサ・サイクルまでも必要であり、将来のコンピュータ・システムでは1000以上のプロセッサ・サイクルが必要になるだろうと予測される。従って、最適なシステム性能を達成するため、プロセッサが、オペランドをメイン・メモリから読み出している間に、実行することのできる他の命令を有することを保証することが重要である。理想的には、ロードが完了するのを待つ間プロセッサは停止してはならない。
【0006】
いくつかのコンピュータ・システムでは順序を入れ替えてすなわちアウト・オブ・オーダ(out-of-order)で命令を実行することができ、従ってロードが完了するのを待つ間に他の命令を実行することによって停止を延期することができる。しかしながら、アウト・オブ・オーダの実行は複雑なハードウェアを必要とし、アウト・オブ・オーダで実行することに適した命令ウィンドウは比較的小さい(200〜300命令以下)。さらに、CPUのより多くの論理素子がアウト・オブ・オーダ実行のサポートに占有されるので、命令(インストラクション)によって指定される機能を遂行するために使用可能な論理素子はより少なくなる。
【0007】
他の技術では、オペランドが使用不能なため現在のストリームの命令を続行することができないと判定した時、プロセッサがコンテキストを切り換えることができる。例えば、CPU内部で複数のコンテキストを保持することができ、停止時には他のコンテキストに単に切り換える。しかしながらこの方法は、複数のコンテキストを保持するための追加のハードウェアを必要とし、従ってアウト・オブ・オーダの実行のように命令が指定する機能を実行するのに使用可能なハードウェアを減少させる。また停止時に割り込みが発生し、ソフトウェアが何か他のスレッドもしくはプロセスに切り換わることもあり得る。ディスクからのデータの検索などのより長い待ち時間に関してこの方法がうまく動作する一方、メイン・メモリからのデータのアクセスなどより短い待ち時間を取り扱う際起こるオーバヘッドによって、この方法は不可能になる。
【0008】
他の技術は、コンピュータ・プログラムのコンパイル時、実行する命令に関する様々なオペランドの待ち時間をモデル化することである。待ち時間モデルに基づいて命令をスケジュールすることによって、コンパイラは停止をかなり削減することができる。例えば、キャッシュ・ミスが30CPUサイクルを必要とするだろうと待ち時間モデルが示し、特定のロード命令がキャッシュ・ミスを派生するだろうとコンパイラが判定することができた場合、コンパイラはそのオペランドが必要になる少なくとも30サイクル前にそのオペランドを検索するためのメモリ・プリフェッチ・オペレーションをスケジュールすることができる。
【0009】
不幸にも、コンパイル時に待ち時間を予測することは、多くの場合困難である。コンパイラが、特定のロードがキャッシュ・ミスもしくはキャッシュ・ヒットを引き起こすかどうかを判定することができない場合もある。さらに、多くの場合、単一バージョンの「収縮包装(シュリンク・ラップ:shrink wrup)」のソフトウェアが特定の命令セットのために市販される。しかしながら、性能およびアーキテクチャにおいて実質的に異なる広く多様なコンピュータ・システム上でこのようなソフトウェアを実行することもできる。例えば、Pentium(R)(ペンティアム(商標))CPUを搭載し、外部L2キャッシュを持たず、高速ページ・モードDRAMメモリを持つラップトップ・コンピュータから、(各CPUがL1およびL2キャッシュを持つ)複数のPentium(R)II(ペンティアム(商標)ツー)CPU、および同期式DRAMメモリを持つコンピュータ・ワークステーションまでの範囲にわたるコンピュータ・システム上で、Intel x86(インテル x86シリーズ)命令セットで書かれたプログラムを実行することもできる。
【0010】
Mark Horowitz、Margaret Martonosi、Todd Mowry、およびMichael Smithによる「Informing Loads: Enabling Software to Observe and React to Memory Behavior(通知ロード:ソフトウェアがメモリ動作に対して監視し反応することができるようにすること)」という題名の1995年7月に出版された第1の論文と、「Informing Memory Operations: Providing Memory Performance Feedback in Modern Processors(通知メモリ・オペレーション:現代のプロセッサにおけるメモリ・パフォーマンス・フィードバックの提供)」という題名の第2の論文に、ダイナミックで多様な待ち時間について説明している。本明細書ではこれら両方の論文を参照する。これらの論文では、「informing load instructions(通知ロード命令)」と呼ばれる命令のクラスを提案している。ロード・オペレーションがキャッシュ・ヒットを引き起こす場合、通知ロード命令によって、スキップされる通知ロード命令の直後の命令が実行され、ロード・オペレーションがキャッシュ・ミスを引き起こす場合、通知ロード命令の直後の命令が実行される。通知ロードは実行を停止させない非ブロッキング・ロードである。通知ロード・オペレーションの直後に分岐命令をスケジュールすることによって、通知ロード・オペレーションが原因であるキャッシュ・ミスを保守する間、通知ロード命令によってコンパイラが代替の動作をスケジュールすることができる。
【0011】
通知ロード・オペレーションは、特定のオペランドが第1レベルのキャッシュの中にあるかどうかを示すが、待ち時間の量を示さない。オペランドがL2キャッシュの中にあることもあり、メイン・メモリの中にあることもあり、あるいは他のCPUのキャッシュの中にダーティ・ラインとして存在することもある。従って通知ロード・オペレーションは、コンパイラに待ち時間の量に基づいて代替のコード・スレッドをスケジュールする方法を提供しない。また、通知ロードそれ自体の実行後レジスタの内容が使用可能であることを確認するプログラムのためのメカニズムも、通知ロードは提供しない。
【0012】
【発明が解決しようとする課題および課題を解決するための手段】
本発明は、コンピュータ・システムのプロセッサのレジスタについての使用可能状態を保持するデータ構造を含むコンピュータ・システムであって、この使用可能状態は特定のレジスタを読み取ろうとする命令が停止するかどうかを示す。このコンピュータ・システムはまた、1つまたは複数のレジスタの使用可能状態に基づいて、プログラム実行のパスを変更する1つまたは複数の命令を復号し実行することができる命令復号/実行回路も含む。
【0013】
一実施形態において、待ち時間調査命令はそのデータ構造からレジスタの使用可能状態を検索し、レジスタの中にこの使用可能状態を格納する。その後、条件分岐命令が、レジスタの中に格納された使用可能状態に基づいて、プログラム実行パスを決定する。別の実施形態では、条件分岐命令がレジスタの使用可能状態を判定するため直接データ構造を照会し、使用可能状態に基づいて実行パスを決定する。
【0014】
本発明は、メモリ・オペレーションの待ち時間をプログラムに公開し、従ってコンパイラが変化する待ち時間に基づいて代替の実行スレッドをスケジュールすることができる。レジスタの内容の使用可能性に基づいて代替の実行スレッドをスケジュールすることによって、停止が最小限になる。コンパイラが、キャッシュ・ヒットおよびキャッシュ・ミスが引き起こす待ち時間を正確にモデル化することができる場合、予測されるキャッシュ・イベントに対応する定義済の時間間隔でレジスタ内容の使用可能性をチェックするようコードをスケジュールすることができる。あるいは、コンパイラが待ち時間を正確にモデル化することができない場合、コンパイラは、定期的にレジスタ内容の使用可能性に関してチェックするようコードをスケジュールすることができる。
【0015】
さらにまた、コンパイラはコードを最適化するために本発明を使用することもできる。本発明は、プログラム実行中にデータを収集するための強力な方法を提供する。プログラムの再コンパイル時、実行ファイルを最適化するためこの収集したデータを使用することができる。また、コンパイラは、パフォーマンスを監視し、基本的には実行時に「オン・ザ・フライ(on-the-fly)で」それ自体を再コンパイルするコードをスケジュールするため、本発明を使用することもできる。
【0016】
本発明の最も推進する特徴の1つは、多数の現代のコンピュータ・アーキテクチャの中で実施するのが容易なことである。「ストール・オン・ユーズ」技術をサポートし、「非ブロッキング・キャッシュ」を含むプロセッサは一般に、プロセッサのレジスタについての使用可能状態を提供することができるデータ構造を含む。このようなプロセッサ設計において、条件分岐命令がレジスタの使用可能状態をテストすることができるようにする命令をコード化するのは、比較的容易な設計の仕事である。
【0017】
【発明の実施の形態】
本発明は、オペランドがレジスタの中で使用可能かどうかを判定するコンピュータ命令を実行することができる、コンピュータ・システムである。様々な時間間隔で本発明の命令を実行することによって、メモリ・ロード・オペレーションの待ち時間を調査することができる。
【0018】
図1は、従来技術のコンピュータ・システム10のブロック図である。コンピュータ・システム10は、中央処理装置(CPU)12、レベル1(L1)キャッシュ・メモリ装置14、レベル2(L2)キャッシュ・メモリ装置16、およびメイン・メモリ装置18を含む。L1キャッシュ・メモリ装置14は、CPU12に密接に接続する比較的少量の高速で高価なメモリを備え、メイン・メモリ装置18のメモリ内容のサブセットを格納する。多数の従来技術のCPUは、CPUそれ自体と同一の集積回路上にL1キャッシュを含む。一般に、1または2命令クロック・サイクル内で、L1キャッシュ・メモリ装置14からCPU12のレジスタの中にメモリ・オペランドをロードすることができる。
【0019】
L1キャッシュ・メモリ装置14と比較すると、L2キャッシュ・メモリ装置16は、比較的大きな(かつ比較的遅い)量のメモリを備える。L2キャッシュ・メモリ装置16もまた、メイン・メモリ装置18の内容のサブセットを格納する。一般に、数命令クロック・サイクル内でL2キャッシュ・メモリ装置16からメモリ・オペランドをロードすることができる。
【0020】
メイン・メモリ装置18は、大量で比較的遅いメモリを備える。メイン・メモリ装置18からCPU12のレジスタの中にメモリ・オペランドをロードするのに、100以上の命令クロック・サイクルを要することもある。
【0021】
コンピュータ・システム10が多数の従来技術の構成を表す一方、もちろん多数の他の構成もある。例えば、より多数のもしくはより少数のキャッシュ・メモリを持つことが一般的である。また、数個のキャッシュを共用し他のキャッシュに排他的アクセスを行うことができる、複数のプロセッサを持つことも一般的である。
【0022】
メモリ・オペレーションの待ち時間が、特定のメモリ・オペランドを特定のキャッシュ・メモリ装置の中に格納するかどうかによって異なることに留意されたい。コンパイラが、オペランドは特定のキャッシュ・メモリ装置の中にあるかどうかを予測し、それに従ってコードをスケジュールすることができることが頻繁にある。しかしながら、コンパイラが、キャッシュ・メモリのいずれかにオペランドがあるかどうかを判定することができないこともまた一般的である。
【0023】
多数の従来技術のコンピュータ・システムにおいて、オペランドをメモリからレジスタの中にロードするロード命令がキャッシュ・ミスを派生した時、CPUは停止しない。むしろ、CPUは、そのレジスタの内容を必要とする後の命令に到達するまで命令の実行を続行する。オペランドをメモリからロードし終っていたら、この後の命令を実行する。オペランドがメモリからまだロードされていなかった場合、キャッシュ・ミスへの手当てが済むまで、(少なくとも後の命令の)実行を中断する。キャッシュ・ミスに対する手当てが済んだところで、この後の命令から実行が再開される。この技術は当業者には「ストール・オン・ユーズ」として周知であり、この方式をサポートするキャッシュ・メモリは「非ブロッキング・キャッシュ」として周知である。
【0024】
図2は、レジスタの内容が使用可能でない時にプロセッサが実行を中断すべきかどうかを判定するための一般的な従来技術の技法の簡略図である。図2において、CPU12はレジスタ20、使用不能フラグ22、および停止信号装置24を含む。命令復号装置、浮動小数点実行装置、整数実行装置、メモリ・アクセス装置、および相当物が提供する機能など他のCPU機能をボックス26で包括的に表現する。
【0025】
CPU12が実行を中断すべきかどうかを判定する方法を理解するため、CPU12がレジスタ1(r1)の内容で指定されたメモリ位置の内容をレジスタ0(r0)の中にロードするロード命令の実行を開始したと仮定されたい。この命令は下記のように表現することができる。
【0026】
ld r0=[r1]
【0027】
さらに、r1の内容によって指定されたメモリ位置の内容がL1キャッシュ・メモリ装置14の中にあると仮定されたい。命令の実行時、r0の内容が使用不能であることを示すため、r0に関連する使用不能フラグ22を「1」にセットする。次の命令クロック・サイクルで、r0をL1キャッシュ・メモリ装置14よりロードし、r0の内容が使用可能であることを示すため、r0に関連する使用不能フラグ22を「0」にクリアする。
【0028】
ここで、次の命令が下記のものであると仮定されたい。
【0029】
add r3=r0,r2
【0030】
この命令は、r0およびr2の内容を加算し、その結果をr3の中に格納する。r2の内容が使用可能であり、従ってr2に関連する使用不能フラグ22を「0」にクリアしたと仮定されたい。命令の実行開始時、停止信号装置24はr0およびr2に関連する使用不能フラグ22に基づいて停止信号を生成する。両方のレジスタの内容が使用可能であるため、停止信号を表明せず加算命令を実行する。
【0031】
次に、r1の内容によって指定されたメモリ位置の内容を、キャッシュ・メモリ装置14もしくは16ではなく、メイン・メモリ18の中に格納することを除いて、同一順の命令を実行すると仮定されたい。従って、次の命令クロック・サイクルで加算命令を実行する時、r0の内容は使用可能ではない。停止信号装置24が停止信号を表明(アサート)し、それをCPU12がメイン・メモリ装置18からr0の中にそのメモリの内容をロードするまで実行を停止するために使用する。メモリの内容がロードされた時、加算命令の実行が完了する。
【0032】
もちろん、図2を参照して上記で述べた例は簡略化されている。パイプライン実行をサポートするCPUでは、より複雑なメカニズムによって使用不能フラグ22が提供する機能が提供される。命令フェッチ(IF)の段階と、命令復号およびレジスタ・フェッチ(RD)の段階と、実行(EX)の段階と、データ・メモリ・アクセス(ME)の段階と、レジスタ書き戻し(WB)の段階から構成される、5段階パイプラインを持つCPUについて考察されたい。また、かかるプロセッサが、トランザクションの結果を受け取る宛先レジスタを指定するレジスタ・アドレスを含むテーブルの中に各アクティブ・エントリを持つ、未解決メモリ読取トランザクション・テーブルを有すると仮定されたい。レジスタの内容が使用可能でないため命令が停止する場合、RD段階で停止する。RD段階で停止信号を生成するため、パイプラインの後の段階中の任意の命令、または未解決メモリ読取トランザクション・テーブル中の任意のトランザクションが、RD段階で読み取るレジスタの中にデータを格納するかどうかを判定しなければならない。従って、このようなプロセッサの中では、RD段階の命令のソース・レジスタを、後の段階の命令の宛先レジスタ、および未解決メモリ読取トランザクション・テーブルのアクティブ・エントリの中に格納する宛先レジスタと比較する一連の比較装置およびORゲートが、全ての比較装置からの結果を共にORすることによって生成した停止信号を使って、図2の中の使用不能フラグ22および停止信号装置24が実行する機能を実行する。もちろん、当業者には、レジスタの内容が使用可能であるかどうかを追跡するため、多様に異なるデータ構造および技術を使用することもできることを認識するであろう。さらに、当業者はまた、使用不能であるレジスタの内容を必要とする命令に対してのみ実行を停止する必要があることを認識するであろう。他の命令の実行、および他の無関係のCPU機能は続行してもよい。
【0033】
本発明は、レジスタの内容が使用可能であるかどうか、またはそのレジスタにアクセスすることによって実行の停止を引き起こすかどうかを、コンピュータ・プログラムが確認することができるようにするためのメカニズムを提供する。図3はCPU28の簡略化したブロック図である。図3は、本発明を実施するため図1のCPU12をどのように修正するかを示す。CPU12と同様に、CPU28はレジスタ30、使用不能フラグ32、および停止信号装置34を含む。CPU28はまた、任意の使用不能フラグ32の内容を任意のレジスタ30の中に発送あるいはルーティングすることができるマルチプレクサ36も含む。最後に、ボックス38が表すCPU機能は、本発明に従って命令を復号し(下記に述べる)、マルチプレクサ36を制御することができる回路を含む。
【0034】
マルチプレクサ36は、使用不能フラグをレジスタの中にリンクすることができる任意のメカニズムを表す。本発明を理解するため、マルチプレクサ36を使用不能フラグ32およびレジスタ30とリンクする別々のデータ・パスを示す。しかしながら、当業者は、レジスタの中に至る1ビットの共通データ・パスを使用不能フラグの1つに格納された値まで延ばすことによって、マルチプレクサ36が表す機能を実施することがよくあることを認識するであろう。さらに図2を参照して上記で述べたように、パイプライン・プロセッサでは、パイプラインの後の段階および未解決メモリ読取トランザクション・テーブルの中で、ソース・レジスタ・アドレスを宛先レジスタ・アドレスと比較する比較装置が、使用不能フラグ32が実行する機能を実行することもできる。本明細書で使用するように、「使用不能フラグ」という用語はこのような方法で生成された使用可能状態を含む。
【0035】
本発明によるコンピュータ命令を復号するため必要とされる回路をボックス38で表現する。当従来技術の技術者は、本発明による命令に関してオペレーション・コードを適正に定義し、その命令を復号するための適正な復号論理を設計し、本明細書で述べた機能を実施するようマルチプレクサ36を操作するため、本明細書の教示をどのように適合させるかを認識するであろう。
【0036】
待ち時間調査命令と呼ばれる本発明による命令について考察されたい。このような命令の1つの書式(フォーマット)は、次の通りである。
【0037】
lprobe ri=rj
【0038】
lprobe命令の実行時、rjに関連する使用不能フラグ32をriの中に格納する。従って、rjの内容が使用可能である場合riの内容は「0」であり、rjの内容が使用不能である場合、riの内容は「1」である。次に、レジスタrjにアクセスする命令を実行すべきかどうかを判定するため、条件分岐命令を介してriの内容をテストする。もちろん、本発明による他の命令もまた可能である。例えば一実施形態では、プロセッサが動作の分岐を制御するために使用する条件(または属性あるいは述語(predicate))レジスタを含むこともあり、指定された使用不能フラグ32を指定された条件レジスタに転送するよう、lprobe命令を定義することもできる。別の実施形態では、条件分岐が基づくこともできるレジスタとして使用不能フラグを取り扱うよう、分岐命令のクラスを定義することもできる。このような命令に関する1つの書式は、次の通りである。
【0039】
br rjuf,miss
【0040】
このような命令は、rjに関連する使用不能フラグが使用不能である場合のみ、アドレスmissに分岐する。
【0041】
もちろん、多数の他の命令コード化が可能である。本発明の鍵は、コンピュータ命令が、レジスタをアクセスする命令が停止するかどうかを判定するため、レジスタの内容が使用可能であるかどうかを判定するのに使用するデータ構造もしくは技術を照会することもでき、その照会結果に基づいて実行スレッドを変更することができることである。従って、本発明はレジスタ・ロード・オペレーションの待ち時間をコンパイラに公開し、それによってコンパイラが、レジスタの内容が使用可能であるかどうかに基づいて代替のスレッドをスケジュールすることができる。
【0042】
図4は、本発明のコンピュータ命令の簡単な応用例を示す。図3の中のCPU28などの本発明によるCPUが、図1の中のコンピュータ・システム10などのL1およびL2キャッシュ装置とメイン・メモリ装置を有するコンピュータ・システムの中に存在すると仮定されたい。さらに、コンパイラがL1およびL2のキャッシュ・ヒットおよびキャッシュ・ミスの待ち時間を予測する正確な待ち時間モデルを持ち、r1の内容で指定されたメモリの内容をr0の中にロードし、r0の内容とr2の内容を加算し、その結果をr3の中に格納するコードを、コンパイラがスケジュールしなければならないと仮定されたい。また、このコンパイラがr2の内容が使用可能であることを予測することができることも仮定されたい。
【0043】
最初に、コンパイラはコード・セグメント40をスケジュールする。コード・セグメント40の最初の命令がr1の内容で指定されたメモリの内容をr0の中にロードする。次の命令は、r0に関連する使用不能フラグ32の内容と一緒にレジスタr4をロードするlprobe命令である。次の命令は、レジスタr4の内容をテストする分岐命令である。r0の内容が使用可能である場合、r4は「0」となり分岐は失敗し、これはL1キャッシュ・ヒットと一致する。次の命令は、r0の内容とr2の内容を加算しその結果をr3の中に格納する。セグメント40中の残りのコードは、L1キャッシュ・ヒットの仮定に基づいて最適化されたコードである。r0の内容が使用不能である場合、r4は「1」となり、分岐はアドレスあるいはラベルmiss_1にあるコード・セグメント42に実行を誘導する。
【0044】
最初にコード・セグメント42は、L1キャッシュ・ミスの仮定に基づいて最適化した一連の命令を実行する。コンパイラは、r0の中にロードしたメモリの内容をL2キャッシュの中に格納すると仮定し、r1の内容によって指定されたメモリの内容をL2キャッシュから検索することができるとコンパイラが予測する時間の間に、実行することもできる他の命令を識別しスケジュールする。これらの命令の実行後、r0に関連する使用不能フラグ32と一緒にr4をロードする他のlprobe命令を実行する。次の命令はr4の内容をテストする分岐命令である。r0の内容が使用可能である場合、この分岐は失敗し、これはL2キャッシュ・ヒットと一致する。次に、加算命令およびL2キャッシュ・ヒットに基づいてスケジュールした他の命令によって実行が続行される。しかしながら、r0の内容が使用可能でない場合、分岐はアドレスmiss_2にあるコード・セグメント44に行く。
【0045】
コード・セグメント44の中で、コンパイラはL2キャッシュ・ミスのために最適化したコードの最初の部分をスケジュールしている。コンパイラの待ち時間モデルは、最初の部分を実行した後、L2キャッシュ・ミスを保守することができるのに十分な時間が経過し、r0の内容が使用可能になるだろうと予測する。その後、L2キャッシュ・ミスの仮定に基づいて実行するようコンパイラがスケジュールした他の命令と共に、加算命令を実行する。
【0046】
前述の例は、未知であるが限定された定義済の待ち時間セットを有するレジスタ・ロードの周辺のコードをスケジュールするため、コンパイラが本発明の命令をどのように使用することができるかを示す。lprobe命令を定期的な時間間隔でスケジュールすることによって、ロードしたデータが他のCPUのダーティ・キャッシュ・ラインの中に保持されている時など、待ち時間セットを定義することができない時もまたコードをスケジュールすることができる。
【0047】
さらにまた、コンパイラがコードを最適化するのにも本発明を使用することができる。例えば、プロファイル・ベースの最適化(PBO:profile-based optimization)実行セッションの間にデータを収集することは、当業者には周知である。その場合、最適化実行可能版プログラムを作るため、この収集したデータを使用してプログラムを再コンパイルする。キャッシュ・ミスを検出しメモリ待ち時間を計測するためにlprobe命令を使用することもできるので、本発明は、PBOセッションの間にデータを収集するための強力な方法を提供する。
【0048】
本発明の別の応用例は、連続実行時最適化である。コンピュータ・システム構成の数は急増し続けると予想される。将来、異なるメモリ構成やCPUの数を持つ様々なコンピュータ・システム上で、1つのコンパイル済コンピュータ・プログラムが効果的に実行されることが一般的になるであろう。プログラムのコンパイル時、可能な構成をすべて予測するのは実用的ではない。従って、パフォーマンスを監視し、基本的に実行時「直接」再コンパイルするコードをプログラムが含むことが期待される。本発明は、プログラムがそのパフォーマンスを監視し、それによってコードを再スケジュールするためのメカニズムを提供する。従来技術と異なり、本発明によって、プログラムがレジスタ・ロードよりキャッシュ・ヒットを派生するかどうかを判定することができるだけでなく、プログラムがまた、レジスタの内容が使用可能になる間どのくらいの時間がかかるかを計測することもできる。
【0049】
レジスタの内容が使用可能でない時プログラムの実行パスを変更するため、本発明を使用することができる一方、アウト・オブ・オーダの命令実行が可能なコンピュータ・システムにおいてキャッシュ・プリフェッチ・オペレーションを制御するためにもまた、本発明を使用することができる。例えば、メモリからロードした値に基づいて分岐条件を決定すると仮定されたい。ロードした値がキャッシュの中にある場合、プロセッサがその結果を計算し分岐条件を解析する前に長い時間はかからない。従って、プリフェッチを必要とするロード命令が実行パス上にあるかどうかがすぐに分かるため、投機的キャッシュ・プリフェッチ・オペレーションを開始する潜在的な利益は小さい。利益が小さいため、不要なデータでキャッシュを汚染しないようにプリフェッチ・オペレーションを避けるのが望ましい。一方、分岐条件を決定するため必要なロードがキャッシュ・ミスを派生する場合、プロセッサがその分岐条件を解析するのに多少時間がかかる。この状況では、予想される(しかし未確認の)実行パスに沿うロード命令に対する投機的プリフェッチ・オペレーションを実行する利益は、より大きい。本発明は、コンパイラが、分岐条件を迅速に解析するかどうかを判定するコードをスケジュールし、それによって投機的プリフェッチ・オペレーションを含む実行パスをたどるべきかどうかを決定することができる、オーバヘッドの少ないメカニズムを提供する。
【0050】
本発明の最も大きな利益の1つは、実施するのが比較的簡単であることと、「ストール・オン・ユーズ」技術をサポートし、「非ブロッキング」キャッシュを含むプロセッサ・アーキテクチャの中に追加の回路をほとんど必要としないことである。このようなプロセッサは既に停止信号を生成する実質的回路を含んでいる。本発明によると、このようなプロセッサに追加すべきものは、特定のレジスタに関する停止信号を生成する回路を活動化し、その停止信号の結果を他のレジスタに格納する(もしくは停止信号に基づいて分岐する)命令だけである。従って、その命令を復号し、宛先レジスタのデータ・パスの中へ既に存在する停止信号の進路を変更する少数のゲートによって、本発明を実施することができる。
【0051】
本発明について好ましい実施形態を参照して述べたが、当業者は、本発明の精神と範囲を超えることなく形式もしくは詳細において変更することもできることを認識するであろう。
【0052】
以上、本発明の実施例について詳述したが、以下、本発明の各実施態様の例を示す。
【0053】
(実施態様1)
メイン・メモリ装置と、
前記メイン・メモリ装置に接続された1以上のキャッシュ・メモリ装置と、
CPUと
を有するコンピュータ・システムにおいて、
前記CPUは、
1以上のレジスタと、
前記レジスタの各々の使用可能状態を保持するデータ構造であって、前期使用可能状態とは、特定のレジスタを読み取ろうとしている命令が停止するかどうかを示す、と、
1以上の前記レジスタの前記使用可能状態に基づいてプログラム実行パスを変更する1以上の命令を復号し実行することができる、命令復号および実行回路と
を含むことを特徴とするコンピュータ・システム。
【0054】
(実施態様2)
前記データ構造は、1以上の使用不能フラグを有し、各使用不能フラグは1つのレジスタに対応する実施態様1に記載のコンピュータ・システム。
【0055】
(実施態様3)
選択したレジスタおよび選択した使用不能フラグを指定する第1の命令が定義され、前記命令復号/実行回路は、選択した使用不能フラグの前記使用可能状態を選択したレジスタにルーティングすることができるマルチプレクサを含む、実施態様2に記載のコンピュータ・システム。
【0056】
(実施態様4)
前記データ構造は、ソース・レジスタと一連の宛先レジスタとの間の比較を含む、実施態様1に記載のコンピュータ・システム。
【0057】
(実施態様5)
レジスタ中の内容の使用可能性に基づいてプログラム内で代替の実行スレッドを選択する方法において、
前記レジスタの内容が使用可能であるかどうかを判定するため、データ構造を照会する前記プログラムの命令を実行するステップと、
前記レジスタの内容が使用可能である場合、第1の実行スレッドを選択するステップと、
前記レジスタの前記内容が使用不能である場合、第2の実行スレッドを選択するステップと
を含む方法。
【0058】
(実施態様6)
前記レジスタの内容が使用可能であるかどうかを判定するためにデータ構造を照会するステップは、
第1のレジスタの使用可能状態を、前記第1のレジスタに関連する使用不能フラグから第2のレジスタに転送する命令を実行するステップを含む、
実施態様5に記載の方法。
【0059】
(実施態様7)
前記レジスタの内容が使用可能である場合は、第1の実行スレッドを選択するステップが、また前記レジスタの前記内容が使用不能である場合は、第2の実行スレッドを選択するステップが、
前記第2のレジスタの内容に基づいて前記第1もしくは第2の実行スレッドのいずれかに実行の経路を定める、条件分岐命令を実行するステップを共に含む、実施態様5に記載の方法。
【0060】
(実施態様8)
命令が読み取るために検索しているレジスタの内容がまだ使用可能でない時、前記命令の実行を停止することができる停止回路を有するコンピュータ・システムにおいて、
前記停止回路の実質的部分を使用して前記レジスタの内容の使用可能状態を判定し、前記レジスタの前記使用可能状態に基づいてプログラム実行パスを変更する、1以上の命令を復号し実行することができる、命令復号/実行回路
を備えることを特徴とするコンピュータ・システム。
【0061】
【発明の効果】
以上のように、本発明を用いると、コンピュータ・システムのプロセッサのレジスタについて、特定のレジスタを読み取ろうとする命令が停止するかどうかを示す使用可能状態を保持するデータ構造を含むコンピュータ・システムを提供することができる。
【0062】
また、本発明の利益の1つは、実施するのが比較的簡単であることと、「ストール・オン・ユーズ」技術をサポートし、「非ブロッキング」キャッシュを含むプロセッサ・アーキテクチャの中に追加の回路をほとんど必要としないことである。
【図面の簡単な説明】
【図1】中央処理装置(CPU)、レベル1(L1)キャッシュ・メモリ装置、レベル2(L2)キャッシュ・メモリ装置、およびメイン・メモリ装置を含む、従来技術のコンピュータ・システムのブロック図である。
【図2】レジスタの内容が使用可能でないためプロセッサが実行を中断すべきかどうかを判定するための、一般的な従来技術の技法の簡略図である。
【図3】本発明によるCPUの簡略ブロック図である。
【図4】本発明が提供するコンピュータ命令の簡単な応用例を示す図である。
【符号の説明】
28:CPU
30:レジスタ
32:使用不能フラグ
34:停止信号装置
36:マルチプレクサ
38:他のCPU機能
Claims (7)
- メインメモリ装置と、
前記メインメモリ装置に接続された1以上のキャッシュメモリ装置と、
CPUと
を有するコンピュータシステムであって、
前記CPUは、
1つ以上のレジスタと、
前記レジスタのそれぞれの可用性の状態を保持するデータ構造であって、前期可用性の状態は、前記レジスタの中にオペランドをロードしている間に、特定のレジスタを読み取ろうとしている命令が停止するか否かを示すデータ構造と、
1つ以上の前記レジスタの可用性の状態をテストし、前記可用性の状態に基づいて、プログラム実行の経路を変更する1つ以上の命令を復号し、実行することにより、レジスタロード操作の待ち時間を明らかにして、コンパイラに、レジスタの内容の可用性に基づいて、代替のプログラム実行の経路の変更を可能とさせる命令復号および実行回路と
を有するコンピュータシステム。 - 前記データ構造は、1つ以上の使用不能フラグを有し、各使用不能フラグは1つのレジスタに対応する
請求項1に記載のコンピュータシステム。 - 選択したレジスタおよび選択した使用不能フラグを指定する第1の命令が定義され、
前記命令復号および実行回路は、
選択した使用不能フラグの前記可用性の状態を、選択したレジスタにルーティングするマルチプレクサ
を含む、
請求項2に記載のコンピュータシステム。 - 前記データ構造は、ソースレジスタと一連の宛先レジスタとの間の比較を含む、
請求項1に記載のコンピュータシステム。 - プログラム内で代替の実行スレッドを選択する方法であって、
レジスタを読み取ろうとしている第2の命令の実行が、前記レジスタの中にオペランドをロードしている間に停止するか否かを判定するため、データ構造を照会する前記プログラムの第1の命令を実行するステップと、
前記第2の命令の実行が停止しない場合には、前記第2の命令を含む第1の実行スレッドを選択するステップと、
前記レジスタの中に前記オペランドをロードしている間に前記第2の命令の実行が停止する場合には、前記第2の命令を含まない第2の実行スレッドを選択することにより、レジスタロード操作の待ち時間を明らかにして、コンパイラに、レジスタの内容の可用性に基づいて、代替のプログラム実行の経路の変更を可能とさせる第2の実行スレッドを選択するステップと
を含む方法。 - レジスタを読み取ろうとしている第2の命令の実行が、前記レジスタの中にオペランドをロードしている間に停止するか否かを判定するため、データ構造を照会する前記プログラムの第1の命令を実行するステップは、
第1のレジスタの可用性の状態を、前記第1のレジスタに関連する使用不能フラグから第2のレジスタに転送する第1の命令を実行するステップを含む、
請求項5に記載の方法。 - 第1の実行スレッドを選択するステップおよび第2の実行スレッドを選択するステップは、
前記第2のレジスタの内容に基づいて、前記第1もしくは第2の実行スレッドのいずれかに実行の経路を定める条件分岐命令を実行するステップを共に含む、
請求項6に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US016,692 | 1998-01-30 | ||
US09/016,692 US6308261B1 (en) | 1998-01-30 | 1998-01-30 | Computer system having an instruction for probing memory latency |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11288373A JPH11288373A (ja) | 1999-10-19 |
JP3871458B2 true JP3871458B2 (ja) | 2007-01-24 |
Family
ID=21778434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP01581199A Expired - Fee Related JP3871458B2 (ja) | 1998-01-30 | 1999-01-25 | コンピュータ・システム |
Country Status (4)
Country | Link |
---|---|
US (1) | US6308261B1 (ja) |
EP (1) | EP0933698B1 (ja) |
JP (1) | JP3871458B2 (ja) |
DE (1) | DE69931288T2 (ja) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7035997B1 (en) | 1998-12-16 | 2006-04-25 | Mips Technologies, Inc. | Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors |
US7257814B1 (en) * | 1998-12-16 | 2007-08-14 | Mips Technologies, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
US7237093B1 (en) * | 1998-12-16 | 2007-06-26 | Mips Technologies, Inc. | Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams |
US6389449B1 (en) * | 1998-12-16 | 2002-05-14 | Clearwater Networks, Inc. | Interstream control and communications for multi-streaming digital processors |
US7529907B2 (en) | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
US7020879B1 (en) * | 1998-12-16 | 2006-03-28 | Mips Technologies, Inc. | Interrupt and exception handling for multi-streaming digital processors |
JP2004518183A (ja) | 2000-07-14 | 2004-06-17 | クリアウオーター・ネツトワークス・インコーポレイテツド | マルチスレッド・システムにおける命令のフェッチとディスパッチ |
US6965914B2 (en) * | 2000-10-27 | 2005-11-15 | Eric Morgan Dowling | Negotiated wireless peripheral systems |
US6973561B1 (en) * | 2000-12-04 | 2005-12-06 | Lsi Logic Corporation | Processor pipeline stall based on data register status |
US20030101336A1 (en) * | 2001-11-28 | 2003-05-29 | Sun Microsystems, Inc. | Technique for associating instructions with execution events |
US7137111B2 (en) * | 2001-11-28 | 2006-11-14 | Sun Microsystems, Inc. | Aggressive prefetch of address chains |
US7134139B2 (en) * | 2002-02-12 | 2006-11-07 | International Business Machines Corporation | System and method for authenticating block level cache access on network |
US7100157B2 (en) * | 2002-09-24 | 2006-08-29 | Intel Corporation | Methods and apparatus to avoid dynamic micro-architectural penalties in an in-order processor |
US7454747B2 (en) * | 2003-02-07 | 2008-11-18 | Sun Microsystems, Inc. | Determining maximum acceptable scheduling load latency using hierarchical search |
US20040226011A1 (en) * | 2003-05-08 | 2004-11-11 | International Business Machines Corporation | Multi-threaded microprocessor with queue flushing |
US7360064B1 (en) | 2003-12-10 | 2008-04-15 | Cisco Technology, Inc. | Thread interleaving in a multithreaded embedded processor |
US7441101B1 (en) | 2003-12-10 | 2008-10-21 | Cisco Technology, Inc. | Thread-aware instruction fetching in a multithreaded embedded processor |
US7206922B1 (en) | 2003-12-30 | 2007-04-17 | Cisco Systems, Inc. | Instruction memory hierarchy for an embedded processor |
US7735073B1 (en) | 2004-02-28 | 2010-06-08 | Oracle International Corporation | Method and apparatus for data object profiling |
US7827543B1 (en) | 2004-02-28 | 2010-11-02 | Oracle America, Inc. | Method and apparatus for profiling data addresses |
US8065665B1 (en) | 2004-02-28 | 2011-11-22 | Oracle America, Inc. | Method and apparatus for correlating profile data |
US7711928B2 (en) * | 2004-03-31 | 2010-05-04 | Oracle America, Inc. | Method and structure for explicit software control using scoreboard status information |
US7707554B1 (en) | 2004-04-21 | 2010-04-27 | Oracle America, Inc. | Associating data source information with runtime events |
US7516306B2 (en) * | 2004-10-05 | 2009-04-07 | International Business Machines Corporation | Computer program instruction architecture, system and process using partial ordering for adaptive response to memory latencies |
JP4783005B2 (ja) * | 2004-11-25 | 2011-09-28 | パナソニック株式会社 | プログラム変換装置、プログラム変換実行装置およびプログラム変換方法、プログラム変換実行方法。 |
US7552318B2 (en) * | 2004-12-17 | 2009-06-23 | International Business Machines Corporation | Branch lookahead prefetch for microprocessors |
US7266674B2 (en) | 2005-02-24 | 2007-09-04 | Microsoft Corporation | Programmable delayed dispatch in a multi-threaded pipeline |
US20070260856A1 (en) * | 2006-05-05 | 2007-11-08 | Tran Thang M | Methods and apparatus to detect data dependencies in an instruction pipeline |
US8122439B2 (en) * | 2007-08-09 | 2012-02-21 | International Business Machines Corporation | Method and computer program product for dynamically and precisely discovering deliquent memory operations |
US7711936B2 (en) * | 2007-08-28 | 2010-05-04 | Sun Microsystems, Inc. | Branch predictor for branches with asymmetric penalties |
US10140210B2 (en) * | 2013-09-24 | 2018-11-27 | Intel Corporation | Method and apparatus for cache occupancy determination and instruction scheduling |
US10896130B2 (en) * | 2016-10-19 | 2021-01-19 | International Business Machines Corporation | Response times in asynchronous I/O-based software using thread pairing and co-execution |
JP7013707B2 (ja) * | 2017-08-02 | 2022-02-01 | 富士通株式会社 | 情報処理装置および情報処理方法 |
US11467966B2 (en) * | 2020-09-02 | 2022-10-11 | Shenzhen GOODIX Technology Co., Ltd. | Cache memory having a programmable number of ways |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5142631A (en) * | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | System for queuing individual read or write mask and generating respective composite mask for controlling access to general purpose register |
GB2234613B (en) * | 1989-08-03 | 1993-07-07 | Sun Microsystems Inc | Method and apparatus for switching context of state elements in a microprocessor |
US5251306A (en) | 1990-01-16 | 1993-10-05 | Advanced Micro Devices, Inc. | Apparatus for controlling execution of a program in a computing device |
US5493687A (en) * | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
US5530825A (en) * | 1994-04-15 | 1996-06-25 | Motorola, Inc. | Data processor with branch target address cache and method of operation |
JPH096633A (ja) | 1995-06-07 | 1997-01-10 | Internatl Business Mach Corp <Ibm> | データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム |
US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
JP2970553B2 (ja) * | 1996-08-30 | 1999-11-02 | 日本電気株式会社 | マルチスレッド実行方法 |
US5802386A (en) * | 1996-11-19 | 1998-09-01 | International Business Machines Corporation | Latency-based scheduling of instructions in a superscalar processor |
US5887166A (en) * | 1996-12-16 | 1999-03-23 | International Business Machines Corporation | Method and system for constructing a program including a navigation instruction |
US5905889A (en) * | 1997-03-20 | 1999-05-18 | International Business Machines Corporation | Resource management system using next available integer from an integer pool and returning the integer thereto as the next available integer upon completion of use |
US6016542A (en) * | 1997-12-31 | 2000-01-18 | Intel Corporation | Detecting long latency pipeline stalls for thread switching |
-
1998
- 1998-01-30 US US09/016,692 patent/US6308261B1/en not_active Expired - Lifetime
-
1999
- 1999-01-22 DE DE69931288T patent/DE69931288T2/de not_active Expired - Fee Related
- 1999-01-22 EP EP99300464A patent/EP0933698B1/en not_active Expired - Lifetime
- 1999-01-25 JP JP01581199A patent/JP3871458B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0933698B1 (en) | 2006-05-17 |
JPH11288373A (ja) | 1999-10-19 |
EP0933698A3 (en) | 2000-12-06 |
DE69931288T2 (de) | 2006-12-07 |
EP0933698A2 (en) | 1999-08-04 |
US6308261B1 (en) | 2001-10-23 |
DE69931288D1 (de) | 2006-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3871458B2 (ja) | コンピュータ・システム | |
US7676808B2 (en) | System and method for CPI load balancing in SMT processors | |
JP6095670B2 (ja) | コンピュータ・システム内のオペランド活性情報の維持 | |
JP4642305B2 (ja) | マルチスレッド・プロセッサ内の複数のスレッドに入り、出る方法と装置 | |
US6907520B2 (en) | Threshold-based load address prediction and new thread identification in a multithreaded microprocessor | |
US7698707B2 (en) | Scheduling compatible threads in a simultaneous multi-threading processor using cycle per instruction value occurred during identified time interval | |
US6256775B1 (en) | Facilities for detailed software performance analysis in a multithreaded processor | |
US7500240B2 (en) | Apparatus and method for scheduling threads in multi-threading processors | |
JP3927546B2 (ja) | 同時マルチスレッド化プロセッサ | |
JP3716414B2 (ja) | 同時マルチスレッド化プロセッサ | |
JP3579414B2 (ja) | 投機的な実行を用いたアウトオブオーダー・プロセッサにおける精密な例外を配達する機構 | |
KR20000076584A (ko) | 컴퓨터 프로세싱 시스템에서의 로드 연산을 재순서화하기위한 방법 및 장치 | |
US20040133769A1 (en) | Generating prefetches by speculatively executing code through hardware scout threading | |
JP2000347863A (ja) | 投機的プロセッサ内で非投機的イベントをカウントするための方法およびシステム | |
JP2011513843A (ja) | 実行装置内のデータ転送のシステムおよび方法 | |
US20040123081A1 (en) | Mechanism to increase performance of control speculation | |
US6516462B1 (en) | Cache miss saving for speculation load operation | |
JP2004518183A (ja) | マルチスレッド・システムにおける命令のフェッチとディスパッチ | |
US7725659B2 (en) | Alignment of cache fetch return data relative to a thread | |
US6735687B1 (en) | Multithreaded microprocessor with asymmetrical central processing units | |
JP3808314B2 (ja) | 長レイテンシ命令に対する命令属性およびステータス情報を示す処理システムおよび方法 | |
US20040133767A1 (en) | Performing hardware scout threading in a system that supports simultaneous multithreading | |
JP2002014868A (ja) | メモリ参照動作検出機構を有するマイクロプロセッサおよびコンパイル方法 | |
Yanagawa et al. | Complexity analysis of a cache controller for speculative multithreading chip multiprocessors | |
KR100953986B1 (ko) | 우선순위 기반 실행을 이용한 캐시미스 대기시간 활용 방법및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20051108 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20051109 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051121 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051121 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060919 |
|
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: 20060921 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061017 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |