JPH11288373A - コンピュ―タ・システム - Google Patents

コンピュ―タ・システム

Info

Publication number
JPH11288373A
JPH11288373A JP11015811A JP1581199A JPH11288373A JP H11288373 A JPH11288373 A JP H11288373A JP 11015811 A JP11015811 A JP 11015811A JP 1581199 A JP1581199 A JP 1581199A JP H11288373 A JPH11288373 A JP H11288373A
Authority
JP
Japan
Prior art keywords
register
instruction
contents
cache
cpu
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
JP11015811A
Other languages
English (en)
Other versions
JPH11288373A5 (ja
JP3871458B2 (ja
Inventor
Dale C Morris
デール・シー・モリス
Douglas B Hunt
ダグラス・ビー・ハント
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH11288373A publication Critical patent/JPH11288373A/ja
Publication of JPH11288373A5 publication Critical patent/JPH11288373A5/ja
Application granted granted Critical
Publication of JP3871458B2 publication Critical patent/JP3871458B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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)
  • 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)

Abstract

(57)【要約】 【課題】コンピュータ・システムのプロセッサのレジス
タについて、特定のレジスタを読み取ろうとする命令が
停止するかどうかを示す使用可能状態を保持するデータ
構造を含むコンピュータ・システムを提供する。 【解決手段】待ち時間調査命令はそのデータ構造からレ
ジスタの使用可能状態を検索し、レジスタの中にこの使
用可能状態を格納する。その後、条件分岐命令が、レジ
スタの中に格納された使用可能状態に基づいて、プログ
ラム実行パスを決定する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータ・シ
ステムの中で実行されるコンピュータ命令に関するもの
である。より詳細には、本発明は、レジスタの内容への
アクセスがコンピュータ・システム上のプログラム実行
を停止する原因となるかどうかを判定し、それによって
メモリの待ち時間を示すコンピュータ命令に関するもの
である。
【0002】
【従来の技術】一般的なコンピュータ・システムには、
1つまたは複数のプロセッサ、メモリ・システム、およ
び記憶媒体が含まれる。メモリ・システムには、一般に
メイン・メモリ、およびメイン・メモリとプロセッサの
間に接続された、1つまたは複数のキャッシュ・メモリ
が含まれる。記憶媒体は、ハードディスク装置、フロッ
ピー・ディスク装置、CD−ROM装置、および同様の
物を備える。
【0003】コンピュータ・システムは、連続する命令
から構成されるコンピュータ・プログラムを実行するこ
とによってタスクを実行する。コンピュータ・システム
の性能は、命令を実行する速度に著しく影響される。
【0004】1つの一般的なタイプの命令は、メモリか
らオペランドを検索しそのオペランドをプロセッサのレ
ジスタ中に格納するロード命令である。オペランドをキ
ャッシュ・メモリの中に格納した場合、それは迅速に検
索される。これは当業者には「キャッシュ・ヒット(cac
he hit)」として周知である。しかしながら、オペラン
ドがメイン・メモリの中でのみ使用可能である場合、オ
ペランドをレジスタの中にロードするのにかなり長い時
間がかかることもある。これは当業者には「キャッシュ
・ミス(cache miss)」として周知である。キャッシュ・
ミスの後、オペランドをメモリからレジスタにロードす
ることを必要とする命令に出会うまで、多くのコンピュ
ータ・システムでは命令を実行し続ける。このような命
令に出会った時、プロセッサはその命令の実行を停止
し、ロードが終了するのを待つ。この技術は当業者には
「ストール・オン・ユーズ(stall on use)」として周知
であり、この方式をサポートするキャッシュ・メモリ
は、「非ブロッキング・キャッシュ(non-blocking cach
e)」として周知である。
【0005】プロセッサの性能はメイン・メモリ・シス
テムの性能よりも急速に向上している。現在のコンピュ
ータ・システムでは、メイン・メモリからオペランドを
検索するのに100プロセッサ・サイクルまでも必要で
あり、将来のコンピュータ・システムでは1000以上
のプロセッサ・サイクルが必要になるだろうと予測され
る。従って、最適なシステム性能を達成するため、プロ
セッサが、オペランドをメイン・メモリから読み出して
いる間に、実行することのできる他の命令を有すること
を保証することが重要である。理想的には、ロードが完
了するのを待つ間プロセッサは停止してはならない。
【0006】いくつかのコンピュータ・システムでは順
序を入れ替えてすなわちアウト・オブ・オーダ(out-of-
order)で命令を実行することができ、従ってロードが完
了するのを待つ間に他の命令を実行することによって停
止を延期することができる。しかしながら、アウト・オ
ブ・オーダの実行は複雑なハードウェアを必要とし、ア
ウト・オブ・オーダで実行することに適した命令ウィン
ドウは比較的小さい(200〜300命令以下)。さら
に、CPUのより多くの論理素子がアウト・オブ・オー
ダ実行のサポートに占有されるので、命令(インストラ
クション)によって指定される機能を遂行するために使
用可能な論理素子はより少なくなる。
【0007】他の技術では、オペランドが使用不能なた
め現在のストリームの命令を続行することができないと
判定した時、プロセッサがコンテキストを切り換えるこ
とができる。例えば、CPU内部で複数のコンテキスト
を保持することができ、停止時には他のコンテキストに
単に切り換える。しかしながらこの方法は、複数のコン
テキストを保持するための追加のハードウェアを必要と
し、従ってアウト・オブ・オーダの実行のように命令が
指定する機能を実行するのに使用可能なハードウェアを
減少させる。また停止時に割り込みが発生し、ソフトウ
ェアが何か他のスレッドもしくはプロセスに切り換わる
こともあり得る。ディスクからのデータの検索などのよ
り長い待ち時間に関してこの方法がうまく動作する一
方、メイン・メモリからのデータのアクセスなどより短
い待ち時間を取り扱う際起こるオーバヘッドによって、
この方法は不可能になる。
【0008】他の技術は、コンピュータ・プログラムの
コンパイル時、実行する命令に関する様々なオペランド
の待ち時間をモデル化することである。待ち時間モデル
に基づいて命令をスケジュールすることによって、コン
パイラは停止をかなり削減することができる。例えば、
キャッシュ・ミスが30CPUサイクルを必要とするだ
ろうと待ち時間モデルが示し、特定のロード命令がキャ
ッシュ・ミスを派生するだろうとコンパイラが判定する
ことができた場合、コンパイラはそのオペランドが必要
になる少なくとも30サイクル前にそのオペランドを検
索するためのメモリ・プリフェッチ・オペレーションを
スケジュールすることができる。
【0009】不幸にも、コンパイル時に待ち時間を予測
することは、多くの場合困難である。コンパイラが、特
定のロードがキャッシュ・ミスもしくはキャッシュ・ヒ
ットを引き起こすかどうかを判定することができない場
合もある。さらに、多くの場合、単一バージョンの「収
縮包装(シュリンク・ラップ:shrink wrup)」のソフ
トウェアが特定の命令セットのために市販される。しか
しながら、性能およびアーキテクチャにおいて実質的に
異なる広く多様なコンピュータ・システム上でこのよう
なソフトウェアを実行することもできる。例えば、Pe
ntium(R)(ペンティアム(商標))CPUを搭
載し、外部L2キャッシュを持たず、高速ページ・モー
ドDRAMメモリを持つラップトップ・コンピュータか
ら、(各CPUがL1およびL2キャッシュを持つ)複
数のPentium(R)II(ペンティアム(商標)
ツー)CPU、および同期式DRAMメモリを持つコン
ピュータ・ワークステーションまでの範囲にわたるコン
ピュータ・システム上で、Intel x86(インテ
ル x86シリーズ)命令セットで書かれたプログラム
を実行することもできる。
【0010】Mark Horowitz、Margaret Martonosi、Tod
d Mowry、およびMichael Smithによる「Informing Load
s: Enabling Software to Observe and React to Memor
y Behavior(通知ロード:ソフトウェアがメモリ動作に
対して監視し反応することができるようにすること)」
という題名の1995年7月に出版された第1の論文
と、「Informing Memory Operations: Providing Memor
y Performance Feedbackin Modern Processors(通知メ
モリ・オペレーション:現代のプロセッサにおけるメモ
リ・パフォーマンス・フィードバックの提供)」という
題名の第2の論文に、ダイナミックで多様な待ち時間に
ついて説明している。本明細書ではこれら両方の論文を
参照する。これらの論文では、「informing load instr
uctions(通知ロード命令)」と呼ばれる命令のクラス
を提案している。ロード・オペレーションがキャッシュ
・ヒットを引き起こす場合、通知ロード命令によって、
スキップされる通知ロード命令の直後の命令が実行さ
れ、ロード・オペレーションがキャッシュ・ミスを引き
起こす場合、通知ロード命令の直後の命令が実行され
る。通知ロードは実行を停止させない非ブロッキング・
ロードである。通知ロード・オペレーションの直後に分
岐命令をスケジュールすることによって、通知ロード・
オペレーションが原因であるキャッシュ・ミスを保守す
る間、通知ロード命令によってコンパイラが代替の動作
をスケジュールすることができる。
【0011】通知ロード・オペレーションは、特定のオ
ペランドが第1レベルのキャッシュの中にあるかどうか
を示すが、待ち時間の量を示さない。オペランドがL2
キャッシュの中にあることもあり、メイン・メモリの中
にあることもあり、あるいは他のCPUのキャッシュの
中にダーティ・ラインとして存在することもある。従っ
て通知ロード・オペレーションは、コンパイラに待ち時
間の量に基づいて代替のコード・スレッドをスケジュー
ルする方法を提供しない。また、通知ロードそれ自体の
実行後レジスタの内容が使用可能であることを確認する
プログラムのためのメカニズムも、通知ロードは提供し
ない。
【0012】
【発明が解決しようとする課題および課題を解決するた
めの手段】本発明は、コンピュータ・システムのプロセ
ッサのレジスタについての使用可能状態を保持するデー
タ構造を含むコンピュータ・システムであって、この使
用可能状態は特定のレジスタを読み取ろうとする命令が
停止するかどうかを示す。このコンピュータ・システム
はまた、1つまたは複数のレジスタの使用可能状態に基
づいて、プログラム実行のパスを変更する1つまたは複
数の命令を復号し実行することができる命令復号/実行
回路も含む。
【0013】一実施形態において、待ち時間調査命令は
そのデータ構造からレジスタの使用可能状態を検索し、
レジスタの中にこの使用可能状態を格納する。その後、
条件分岐命令が、レジスタの中に格納された使用可能状
態に基づいて、プログラム実行パスを決定する。別の実
施形態では、条件分岐命令がレジスタの使用可能状態を
判定するため直接データ構造を照会し、使用可能状態に
基づいて実行パスを決定する。
【0014】本発明は、メモリ・オペレーションの待ち
時間をプログラムに公開し、従ってコンパイラが変化す
る待ち時間に基づいて代替の実行スレッドをスケジュー
ルすることができる。レジスタの内容の使用可能性に基
づいて代替の実行スレッドをスケジュールすることによ
って、停止が最小限になる。コンパイラが、キャッシュ
・ヒットおよびキャッシュ・ミスが引き起こす待ち時間
を正確にモデル化することができる場合、予測されるキ
ャッシュ・イベントに対応する定義済の時間間隔でレジ
スタ内容の使用可能性をチェックするようコードをスケ
ジュールすることができる。あるいは、コンパイラが待
ち時間を正確にモデル化することができない場合、コン
パイラは、定期的にレジスタ内容の使用可能性に関して
チェックするようコードをスケジュールすることができ
る。
【0015】さらにまた、コンパイラはコードを最適化
するために本発明を使用することもできる。本発明は、
プログラム実行中にデータを収集するための強力な方法
を提供する。プログラムの再コンパイル時、実行ファイ
ルを最適化するためこの収集したデータを使用すること
ができる。また、コンパイラは、パフォーマンスを監視
し、基本的には実行時に「オン・ザ・フライ(on-the-fl
y)で」それ自体を再コンパイルするコードをスケジュー
ルするため、本発明を使用することもできる。
【0016】本発明の最も推進する特徴の1つは、多数
の現代のコンピュータ・アーキテクチャの中で実施する
のが容易なことである。「ストール・オン・ユーズ」技
術をサポートし、「非ブロッキング・キャッシュ」を含
むプロセッサは一般に、プロセッサのレジスタについて
の使用可能状態を提供することができるデータ構造を含
む。このようなプロセッサ設計において、条件分岐命令
がレジスタの使用可能状態をテストすることができるよ
うにする命令をコード化するのは、比較的容易な設計の
仕事である。
【0017】
【発明の実施の形態】本発明は、オペランドがレジスタ
の中で使用可能かどうかを判定するコンピュータ命令を
実行することができる、コンピュータ・システムであ
る。様々な時間間隔で本発明の命令を実行することによ
って、メモリ・ロード・オペレーションの待ち時間を調
査することができる。
【0018】図1は、従来技術のコンピュータ・システ
ム10のブロック図である。コンピュータ・システム1
0は、中央処理装置(CPU)12、レベル1(L1)
キャッシュ・メモリ装置14、レベル2(L2)キャッ
シュ・メモリ装置16、およびメイン・メモリ装置18
を含む。L1キャッシュ・メモリ装置14は、CPU1
2に密接に接続する比較的少量の高速で高価なメモリを
備え、メイン・メモリ装置18のメモリ内容のサブセッ
トを格納する。多数の従来技術のCPUは、CPUそれ
自体と同一の集積回路上にL1キャッシュを含む。一般
に、1または2命令クロック・サイクル内で、L1キャ
ッシュ・メモリ装置14からCPU12のレジスタの中
にメモリ・オペランドをロードすることができる。
【0019】L1キャッシュ・メモリ装置14と比較す
ると、L2キャッシュ・メモリ装置16は、比較的大き
な(かつ比較的遅い)量のメモリを備える。L2キャッ
シュ・メモリ装置16もまた、メイン・メモリ装置18
の内容のサブセットを格納する。一般に、数命令クロッ
ク・サイクル内でL2キャッシュ・メモリ装置16から
メモリ・オペランドをロードすることができる。
【0020】メイン・メモリ装置18は、大量で比較的
遅いメモリを備える。メイン・メモリ装置18からCP
U12のレジスタの中にメモリ・オペランドをロードす
るのに、100以上の命令クロック・サイクルを要する
こともある。
【0021】コンピュータ・システム10が多数の従来
技術の構成を表す一方、もちろん多数の他の構成もあ
る。例えば、より多数のもしくはより少数のキャッシュ
・メモリを持つことが一般的である。また、数個のキャ
ッシュを共用し他のキャッシュに排他的アクセスを行う
ことができる、複数のプロセッサを持つことも一般的で
ある。
【0022】メモリ・オペレーションの待ち時間が、特
定のメモリ・オペランドを特定のキャッシュ・メモリ装
置の中に格納するかどうかによって異なることに留意さ
れたい。コンパイラが、オペランドは特定のキャッシュ
・メモリ装置の中にあるかどうかを予測し、それに従っ
てコードをスケジュールすることができることが頻繁に
ある。しかしながら、コンパイラが、キャッシュ・メモ
リのいずれかにオペランドがあるかどうかを判定するこ
とができないこともまた一般的である。
【0023】多数の従来技術のコンピュータ・システム
において、オペランドをメモリからレジスタの中にロー
ドするロード命令がキャッシュ・ミスを派生した時、C
PUは停止しない。むしろ、CPUは、そのレジスタの
内容を必要とする後の命令に到達するまで命令の実行を
続行する。オペランドをメモリからロードし終っていた
ら、この後の命令を実行する。オペランドがメモリから
まだロードされていなかった場合、キャッシュ・ミスへ
の手当てが済むまで、(少なくとも後の命令の)実行を
中断する。キャッシュ・ミスに対する手当てが済んだと
ころで、この後の命令から実行が再開される。この技術
は当業者には「ストール・オン・ユーズ」として周知で
あり、この方式をサポートするキャッシュ・メモリは
「非ブロッキング・キャッシュ」として周知である。
【0024】図2は、レジスタの内容が使用可能でない
時にプロセッサが実行を中断すべきかどうかを判定する
ための一般的な従来技術の技法の簡略図である。図2に
おいて、CPU12はレジスタ20、使用不能フラグ2
2、および停止信号装置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の内容は使用可能ではない。停止信号装置2
4が停止信号を表明(アサート)し、それをCPU12
がメイン・メモリ装置18からr0の中にそのメモリの
内容をロードするまで実行を停止するために使用する。
メモリの内容がロードされた時、加算命令の実行が完了
する。
【0032】もちろん、図2を参照して上記で述べた例
は簡略化されている。パイプライン実行をサポートする
CPUでは、より複雑なメカニズムによって使用不能フ
ラグ22が提供する機能が提供される。命令フェッチ
(IF)の段階と、命令復号およびレジスタ・フェッチ
(RD)の段階と、実行(EX)の段階と、データ・メ
モリ・アクセス(ME)の段階と、レジスタ書き戻し
(WB)の段階から構成される、5段階パイプラインを
持つCPUについて考察されたい。また、かかるプロセ
ッサが、トランザクションの結果を受け取る宛先レジス
タを指定するレジスタ・アドレスを含むテーブルの中に
各アクティブ・エントリを持つ、未解決メモリ読取トラ
ンザクション・テーブルを有すると仮定されたい。レジ
スタの内容が使用可能でないため命令が停止する場合、
RD段階で停止する。RD段階で停止信号を生成するた
め、パイプラインの後の段階中の任意の命令、または未
解決メモリ読取トランザクション・テーブル中の任意の
トランザクションが、RD段階で読み取るレジスタの中
にデータを格納するかどうかを判定しなければならな
い。従って、このようなプロセッサの中では、RD段階
の命令のソース・レジスタを、後の段階の命令の宛先レ
ジスタ、および未解決メモリ読取トランザクション・テ
ーブルのアクティブ・エントリの中に格納する宛先レジ
スタと比較する一連の比較装置およびORゲートが、全
ての比較装置からの結果を共にORすることによって生
成した停止信号を使って、図2の中の使用不能フラグ2
2および停止信号装置24が実行する機能を実行する。
もちろん、当業者には、レジスタの内容が使用可能であ
るかどうかを追跡するため、多様に異なるデータ構造お
よび技術を使用することもできることを認識するであろ
う。さらに、当業者はまた、使用不能であるレジスタの
内容を必要とする命令に対してのみ実行を停止する必要
があることを認識するであろう。他の命令の実行、およ
び他の無関係のCPU機能は続行してもよい。
【0033】本発明は、レジスタの内容が使用可能であ
るかどうか、またはそのレジスタにアクセスすることに
よって実行の停止を引き起こすかどうかを、コンピュー
タ・プログラムが確認することができるようにするため
のメカニズムを提供する。図3はCPU28の簡略化し
たブロック図である。図3は、本発明を実施するため図
1のCPU12をどのように修正するかを示す。CPU
12と同様に、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の中に格納する。従って、
jの内容が使用可能である場合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をロードするl
probe命令である。次の命令は、レジスタr4の内
容をテストする分岐命令である。r0の内容が使用可能
である場合、r4は「0」となり分岐は失敗し、これは
L1キャッシュ・ヒットと一致する。次の命令は、r0
の内容とr2の内容を加算しその結果をr3の中に格納す
る。セグメント40中の残りのコードは、L1キャッシ
ュ・ヒットの仮定に基づいて最適化されたコードであ
る。r0の内容が使用不能である場合、r4は「1」とな
り、分岐はアドレスあるいはラベルmiss_1にある
コード・セグメント42に実行を誘導する。
【0044】最初にコード・セグメント42は、L1キ
ャッシュ・ミスの仮定に基づいて最適化した一連の命令
を実行する。コンパイラは、r0の中にロードしたメモ
リの内容をL2キャッシュの中に格納すると仮定し、r
1の内容によって指定されたメモリの内容をL2キャッ
シュから検索することができるとコンパイラが予測する
時間の間に、実行することもできる他の命令を識別しス
ケジュールする。これらの命令の実行後、r0に関連す
る使用不能フラグ32と一緒にr4をロードする他のl
probe命令を実行する。次の命令はr4の内容をテ
ストする分岐命令である。r0の内容が使用可能である
場合、この分岐は失敗し、これはL2キャッシュ・ヒッ
トと一致する。次に、加算命令およびL2キャッシュ・
ヒットに基づいてスケジュールした他の命令によって実
行が続行される。しかしながら、r0の内容が使用可能
でない場合、分岐はアドレスmiss_2にあるコード
・セグメント44に行く。
【0045】コード・セグメント44の中で、コンパイ
ラはL2キャッシュ・ミスのために最適化したコードの
最初の部分をスケジュールしている。コンパイラの待ち
時間モデルは、最初の部分を実行した後、L2キャッシ
ュ・ミスを保守することができるのに十分な時間が経過
し、r0の内容が使用可能になるだろうと予測する。そ
の後、L2キャッシュ・ミスの仮定に基づいて実行する
ようコンパイラがスケジュールした他の命令と共に、加
算命令を実行する。
【0046】前述の例は、未知であるが限定された定義
済の待ち時間セットを有するレジスタ・ロードの周辺の
コードをスケジュールするため、コンパイラが本発明の
命令をどのように使用することができるかを示す。lp
robe命令を定期的な時間間隔でスケジュールするこ
とによって、ロードしたデータが他のCPUのダーティ
・キャッシュ・ラインの中に保持されている時など、待
ち時間セットを定義することができない時もまたコード
をスケジュールすることができる。
【0047】さらにまた、コンパイラがコードを最適化
するのにも本発明を使用することができる。例えば、プ
ロファイル・ベースの最適化(PBO:profile-based o
ptimization)実行セッションの間にデータを収集する
ことは、当業者には周知である。その場合、最適化実行
可能版プログラムを作るため、この収集したデータを使
用してプログラムを再コンパイルする。キャッシュ・ミ
スを検出しメモリ待ち時間を計測するためにlprob
e命令を使用することもできるので、本発明は、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 (1)

    【特許請求の範囲】
  1. 【請求項1】メイン・メモリ装置と、 前記メイン・メモリ装置に接続された1以上のキャッシ
    ュ・メモリ装置と、 CPUとを有するコンピュータ・システムにおいて、 前記CPUは、 1以上のレジスタと、 前記レジスタの各々の使用可能状態を保持するデータ構
    造であって、前期使用可能状態とは、特定のレジスタを
    読み取ろうとしている命令が停止するかどうかを示す、
    と、 1以上の前記レジスタの前記使用可能状態に基づいてプ
    ログラム実行パスを変更する1以上の命令を復号し実行
    することができる、命令復号および実行回路とを含むこ
    とを特徴とするコンピュータ・システム。
JP01581199A 1998-01-30 1999-01-25 コンピュータ・システム Expired - Fee Related JP3871458B2 (ja)

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

Publication Number Publication Date
JPH11288373A true JPH11288373A (ja) 1999-10-19
JPH11288373A5 JPH11288373A5 (ja) 2006-03-23
JP3871458B2 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016534476A (ja) * 2013-09-24 2016-11-04 インテル・コーポレーション キャッシュ占有決定および命令スケジューリングのための方法および装置
JP2019028865A (ja) * 2017-08-02 2019-02-21 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US7020879B1 (en) * 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US7035997B1 (en) 1998-12-16 2006-04-25 Mips Technologies, Inc. Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US7529907B2 (en) 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US6389449B1 (en) * 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital 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
DE60143896D1 (de) 2000-07-14 2011-03-03 Mips Tech Inc Anweisungsabruf und -absendung in einem multi-thread-system
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
US7441101B1 (en) 2003-12-10 2008-10-21 Cisco Technology, Inc. Thread-aware instruction fetching in a multithreaded embedded processor
US7360064B1 (en) 2003-12-10 2008-04-15 Cisco Technology, Inc. Thread interleaving 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
US8065665B1 (en) 2004-02-28 2011-11-22 Oracle America, Inc. Method and apparatus for correlating profile data
US7827543B1 (en) 2004-02-28 2010-11-02 Oracle America, Inc. Method and apparatus for profiling data addresses
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
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
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)

* Cited by examiner, † Cited by third party
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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016534476A (ja) * 2013-09-24 2016-11-04 インテル・コーポレーション キャッシュ占有決定および命令スケジューリングのための方法および装置
US10140210B2 (en) 2013-09-24 2018-11-27 Intel Corporation Method and apparatus for cache occupancy determination and instruction scheduling
JP2019028865A (ja) * 2017-08-02 2019-02-21 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム

Also Published As

Publication number Publication date
EP0933698B1 (en) 2006-05-17
US6308261B1 (en) 2001-10-23
DE69931288D1 (de) 2006-06-22
DE69931288T2 (de) 2006-12-07
EP0933698A3 (en) 2000-12-06
JP3871458B2 (ja) 2007-01-24
EP0933698A2 (en) 1999-08-04

Similar Documents

Publication Publication Date Title
JP3871458B2 (ja) コンピュータ・システム
JP6095670B2 (ja) コンピュータ・システム内のオペランド活性情報の維持
JP4642305B2 (ja) マルチスレッド・プロセッサ内の複数のスレッドに入り、出る方法と装置
US7676808B2 (en) System and method for CPI load balancing in SMT processors
US6549985B1 (en) Method and apparatus for resolving additional load misses and page table walks under orthogonal stalls in a single pipeline processor
JP5661863B2 (ja) 実行装置内のデータ転送のシステムおよび方法
US5758051A (en) Method and apparatus for reordering memory operations in a processor
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
JP3927546B2 (ja) 同時マルチスレッド化プロセッサ
JP3716414B2 (ja) 同時マルチスレッド化プロセッサ
US9804854B2 (en) Branching to alternate code based on runahead determination
WO2015024452A1 (zh) 一种分支预测方法及相关装置
JPH11288373A5 (ja)
US7263599B2 (en) Thread ID in a multithreaded processor
US20040123081A1 (en) Mechanism to increase performance of control speculation
US20050177819A1 (en) Program tracing in a multithreaded processor
JP2004518183A (ja) マルチスレッド・システムにおける命令のフェッチとディスパッチ
US6735687B1 (en) Multithreaded microprocessor with asymmetrical central processing units
US20050251662A1 (en) Secondary register file mechanism for virtual multithreading
Mowry et al. Software-controlled multithreading using informing memory operations
US20230315453A1 (en) Forward conditional branch event for profile-guided-optimization (pgo)
US7681016B2 (en) Microprocessor instruction execution method for exploiting parallelism by time ordering operations in a single thread at compile time
Yanagawa et al. Complexity analysis of a cache controller for speculative multithreading chip multiprocessors
Packirisamy Exploring efficient architecture design for thread-level speculation—Power and performance perspectives

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