JP4520788B2 - マルチスレッドプロセッサ - Google Patents
マルチスレッドプロセッサ Download PDFInfo
- Publication number
- JP4520788B2 JP4520788B2 JP2004222042A JP2004222042A JP4520788B2 JP 4520788 B2 JP4520788 B2 JP 4520788B2 JP 2004222042 A JP2004222042 A JP 2004222042A JP 2004222042 A JP2004222042 A JP 2004222042A JP 4520788 B2 JP4520788 B2 JP 4520788B2
- Authority
- JP
- Japan
- Prior art keywords
- cache
- thread
- instruction
- control unit
- identifier
- 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
- 238000012545 processing Methods 0.000 claims description 63
- 230000004044 response Effects 0.000 claims description 58
- 230000007704 transition Effects 0.000 claims description 7
- 238000012544 monitoring process Methods 0.000 claims description 2
- 238000000034 method Methods 0.000 description 47
- 239000000872 buffer Substances 0.000 description 33
- 238000010586 diagram Methods 0.000 description 32
- 230000008569 process Effects 0.000 description 16
- 238000007726 management method Methods 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000003672 processing method Methods 0.000 description 5
- 108700010388 MIBs Proteins 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000001174 ascending effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004587 chromatography analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- 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/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Description
図23はインオーダ実行型の処理方法を説明するための図、図24はアウトオブオーダ実行型の処理方法を説明するための図である。インオーダ実行型は、図23に示すように、プログラム順に沿って命令処理を行なう手法であり、アウトオブオーダ実行型は、図24に示すように、命令間の依存関係を見て、依存関係のない命令ならばプログラム順を追い越してでも処理を行なう手法である。
図25(a),(b)はマルチスレッドプロセッサ方式を説明するための図であり、図25(a)はシングルスレッド処理を説明するための図、図25(b)はマルチスレッド処理を説明するための図である。なお、図25(b)においては、1つのCPUでA,Bの2つのプログラムを並列的に処理するマルチスレッド処理の例を示している。
VMT方式は、処理に長時間かかるキャッシュミスした命令処理を隠蔽することを狙い、キャッシュミスを検出したときに、メモリからキャッシュまでデータを持ってくる処理をキャッシュ制御部(図示省略)が実行している間に、メモリアクセス以外の処理について、実行部や制御部(ともに図示省略)において他のスレッドに切り替え、実行するというものである。又、このVMT方式においては、キャッシュミスが発生しにくいスレッドに関しては、一定時間経過した時点で他のスレッドに切り替えるようになっている。
さて、従来、VMT方式は、前述したインオーダ型プロセッサ上でのみ実装されている。インオーダ実行するプロセッサでは、キャッシュミスの事象はプログラム順に起こり、又、キャッシュミスしたデータがメモリから応答するのも、プログラム順に行なわれる(図28参照)。一方、アウトオブオーダで実行をするプロセッサでは、メモリアクセスがプログラム内の命令順序に生じるわけではなく、図29に示すように、キャッシュミスの事象は、必ずしもプログラム順では起こらない。
本発明は、このような課題に鑑み創案されたもので、スレッドの切り替えを効率良く行なうことにより、処理速度を短縮させることを目的とする。
さらに、該キャッシュ制御部が、該プリフェッチ要求が該外部記憶部に発行されてからの経過時間を監視し、該命令によってアクセスされる該データが、先行するプリフェッチ要求によって該外部記憶部から取得された該データと一致するとともに、該経過時間が所定時間以上経過した場合に、前記マルチスレッド制御部に対して当該命令にかかる該スレッド識別子,該キャッシュ要求識別子および該命令識別子の通知を行なわないようにしてもよい。
図1は本発明の一実施形態としてのマルチスレッドプロセッサの構成を示すブロック図である。
本発明の一実施形態としてのマルチスレッドプロセッサであるCPU(Central Processing Unit)1は、例えば複数のスレッド(プログラム)を1以上の演算器15(図2参照)により並列的に実行可能なマルチスレッドプロセッサとして構成されている。
図2は本発明の一実施形態としてのマルチスレッドプロセッサ(CPU1)におけるIIDの設定手法を説明するための図である。この図2に示すように、本CPU1においては、0〜63までの64個のIIDを予め用意しておき、命令解読(デコード)時において、各命令に対して0から昇順に1,2,3,・・・とIIDを割り当てる(設定する)ようになっており、63まで割り当てを行なった後には、0に戻って再度昇順に割り当てを行なうようになっている。
そして、命令が完了すると、その命令に設定されたIIDは解放され他の命令に割り当てられるようになっている。これにより、命令の解読から実行、完了までを識別することができるようになっている。又、このIIDは、プロセッサ上で実行しているスレッドを切り替えて命令がキャンセルされた場合や、分岐予測ミスやトラップが生じた場合には無効化され、次に解読される命令列は0番から割り当てられていくようになっている。
TLB(Translation Look-aside Buffer;論理アドレス・物理アドレス変換部)17は、論理アドレスから物理アドレスへの変換で発生するページテーブル参照のペナルティを小さくするために設けられた一種のキャッシュであり、参照されたアドレスと変換情報の履歴を保存しておき、アドレス変換の高速化を実現するものである。
メインメモリ21は、CPU1の外部にそなえられたメモリであって、種々の命令やデータを格納するものであり、バス22を介してCPU1と通信可能に接続され、実行部150による処理・実行に必要とされる命令やデータがL1命令キャッシュ18,L1データキャッシュ19およびL2キャッシュ20に格納されていない場合(キャッシュミス時)には、CPU1はバス22等を介してこのメインメモリ21から命令やデータを読み出すようになっている。
以下、本CPU1におけるスレッド切り替え手法を、L1データキャッシュ19およびL2キャッシュ20におけるキャッシュミスに着目して説明する。
L1データキャッシュ制御部(キャッシュ制御部)24は、L1データキャッシュ19に対応してそなえられており、L1データキャッシュ19へのデータの書き込み・読み出しを管理・制御するものである。又、L1命令キャッシュ制御部23は、L1命令キャッシュ18に対応してそなえられており、L1命令キャッシュ18へのデータ(命令データ)の書き込み・読み出しを管理・制御するものである。L2キャッシュ制御部(キャッシュ制御部)25は、L2キャッシュ20に対応してそなえられており、L2キャッシュ20へのデータ(命令データ,データ)の書き込み・読み出しを管理・制御するものである。
なお、これらのMIBについての詳細な説明は後述する。
まず、命令コードをプログラム順序に命令キャッシュからフェッチしてくる。次に、取得した命令コードを解読(デコード)ステージにおいて解読し、何を実行する命令か解読する。また自身の命令の入力データと前の命令の結果データと依存関係があるかを検出する。
次に、図4〜図11を参照しながら、本CPU1におけるL1キャッシュやL2キャッシュ20,メインメモリ21にアクセスするときの動作概要を説明する。なお、図4は本CPU1における命令制御部16,L1キャッシュ制御部およびL2キャッシュ制御部25間において授受される制御信号を説明するための図、図5は本CPU1においてロード命令に対してL1キャッシュヒットしたケースにかかるデータの流れを示す図、図6は本CPU1においてロード命令に対してL1キャッシュミスが生じ且つL2キャッシュヒットしたケースにかかるデータの流れを示す図、図7は本CPU1においてロード命令に対してL1キャッシュミスおよびL2キャッシュミスが生じたケースにかかるデータの流れを示す図、図8はL1プリフェッチ処理を説明するための図、図9はL2プリフェッチ処理を説明するための図、図10は本CPU1における命令制御部のキャンセル時のキャンセル範囲のイメージを示す図、図11は本CPU1におけるキャンセル時の処理を説明するための図である。
また、キャッシュミスが生じた場合にメインメモリ21から持って来るまでの時間を隠蔽するための手法として、レジスタ13には書き込まないが、あらかじめL1キャッシュやL2キャッシュ20上にデータを持ってきておくためのプログラムの命令であるプリフェッチ命令(ソフトウェアプリフェッチ)や、キャッシュミスするデータのアドレスの規則性をハードウェアによって検出し、プログラム上にプリフェッチ命令は指示されていない場合においてもメインメモリ21からデータを先読みするハードウェアプリフェッチ機能がある。
L2プリフェッチ要求に関しては、図9に示すように、L1キャッシュ19への書き込みを行なわない。そのためL1MIB26を確保しない。そのため、L2プリフェッチ要求はL1MIB26がすべて占有された場合もL2キャッシュ20に要求を発行することが可能である。L2キャッシュ20にヒットしたときはL1データキャッシュ19へのデータ応答も行なわず何もしない。L2キャッシュミスした場合は、L2MIB27を確保して、メインメモリ21からデータを要求する。メインメモリ21にデータ応答が返ってきて、L2キャッシュ20に書き込みが完了してL2MIB27を開放する。
図9に示すように、L1キャッシュミスした要求がL2キャッシュ20にアクセスしようとするときに、先行するL1MIB26を確保した要求がL1データキャッシュ19の同一ラインであった場合は、後続のL1キャッシュミスした要求を一旦中止し、キャッシュラインが同一であったL1MIB26の開放をフェッチキュー28内で待つ。これは、同一キャッシュラインに対し、複数のキャッシュミスが発生すると、データ応答の際にどのウェイに書き込むか選択する回路が複雑になることや、実際に同一キャッシュラインにぶつかるケースが稀であることからこのような制御を行なっている。L1キャッシュ19にヒットした要求は、L1MIB26と同一キャッシュラインであっても通常のヒット時と同様に振舞う。
(図11参照)。
そして、マルチスレッド制御部11は、L1命令キャッシュ制御部23やL1データキャッシュ制御部24から通知された命令識別子やスレッド識別子に基づいて、次に命令完了すべき命令にキャッシュミスが生じた場合に、スレッドを切り替えるよう制御するようになっている。
マルチスレッド制御部11は、図12に示すように、走行しているスレッドの識別子(スレッド識別子)をL1データキャッシュ制御部24およびL2キャッシュ制御部25に送るようになっている。そして、L1データキャッシュ制御部24は、L2キャッシュ要求でL1MIB26を確保する際に、その命令(要求)のスレッド識別子をL1MIB26に登録するようになっている。更に、例えば、命令がデマンド要求であれば、その要求がデマンドであることを示すフラグやIID(命令識別子)も登録する。
図14は本CPU1におけるストア命令の突き放し制御を説明するためのパイプライン図である。この突き放し制御は、命令制御部16がストア命令を完了するときに、キャッシュ制御部24がストアデータを専用のバッファ(図示省略)に格納し、データを書き込むべきアドレスのデータがL1データキャッシュ19に返ってきたときに、L1データキャッシュ制御部24がデータ更新を行なう処理である。
ストア命令のキャッシュミスによるペナルティは命令制御部16から直接見えず、最下位階層(本実施形態ではL2)でキャッシュミスを検出するときにはIIDはすでに更新されている。
L2プリフェッチで、L2MIB27を確保しているときに、同一キャッシュラインに後続のデマンド要求またはL1プリフェッチ要求がきて、L2キャッシュミスが生じた場合は、前述のとおり先行して発行されたプリフェッチがL2MIB27を開放するまで、メインメモリまで要求を発行することができないが、後続のL1MIB26を確保した命令にL2キャッシュミスが発生した旨をL1キャッシュに報告するようになっている。
フェッチキュー28において先頭の(一番古い)デマンド要求(便宜上、デマンド要求Aという)に対してL1データキャッシュ19上で割り当てられたキャッシュラインが、プログラム順序上ではデマンド要求Aよりも後続するデマンド要求もしくはL1プリフェッチ要求であって、デマンド要求Aよりも先にL1キャッシュミスが生じL1MIB26が確保されてL2キャッシュ20に発行されたもの(以下、要求Bとする)に割り当てられたキャッシュラインと同一(図16の例ではキャッシュラインX)であり、その要求BにかかるL1MIB26にL2ミスフラグがセットされている状態を考える。
すなわち、先にL1MIB26を確保したものがデマンド要求の場合には、マルチスレッド制御部11に対し、同じL1MIB−IDに対して異なるIIDで2回L2キャッシュミスしたと報告することになる。後述するように、L2キャッシュミスによるスレッドの切り替えは、キャッシュミスした要求のうちプログラム順で一番古い命令が、次に完了するべき状態になったときに起こすので、フェッチキュー28のなかで一番古い要求を優先させて報告するのである。
すなわち、L1データキャッシュ制御部24は、先行するデマンド要求、もしくはL1プリフェッチ要求のL1キャッシュミスでL1データキャッシュ19までデータ応答を待つ間、後続のデマンド要求、もしくはL1プリフェッチ要求でL1データキャッシュ19の同一キャッシュラインでキャッシュミスした場合に限り、L2キャッシュ20への要求を出せないL1キャッシュ制御部24において、後続のデマンド要求がプログラム順で最も古いキャッシュ要求である場合、且つ先行するL2キャッシュ要求がL2キャッシュミスを起こしている場合、後続のデマンド要求がL2キャッシュミス処理を待つと判断して、スレッド識別子と命令識別子に、先行する同一キャッシュラインの要求のキャッシュ要求識別子を、マルチスレッド制御部11に報告するのである。
本CPU1においては、マルチスレッド制御部11は、図17に示すようなL2キャッシュミス情報バッファ29をL1MIB26の数と同数(図17に示す例においては、L1MIB0〜L1MIB3の4つ)そなえて構成されている。L2キャッシュミス情報バッファ29は、L2キャッシュミスが生じたことを示すフラグ(L2MISS)と、そのスレッドIDとIIDとをL1MIB26に関連付けて登録することにより構成されている。すなわち、L2キャッシュミス情報バッファ29は、L2キャッシュミスしたことを報告されたIIDを保持するバッファであって、L1MIBの数だけそなえられたものである。
SET - MIB(N) - L2MISS = L2MISS & MIB - ID - EQ - N ・・・(1)
RESET - MIB(N) - L2MISS
= (L2MISS - DATA - RETURN & MIB - ID - EQ - N) or CANCEL ・・・(2)
なお、NはL1MIB−ID(L1MIBの番号)である。
また、分岐予測ミスやトラップ処理などに入って、L2キャッシュミスしたリクエストがキャンセルされる場合には、キャンセルされたリクエストでスレッドの切り替え処理を行なわない。そのためL2キャッシュミス情報バッファ(L1MIBスレッド切り替え制御バッファ)29のL2キャッシュミスフラグがすでにオン状態の場合はこれをリセットする。またL1キャッシュ部では、キャンセルを受け付けた後、それまでに受け付けたキャッシュミスをキャッシュ要求のL2キャッシュミスをマルチスレッド制御部11に報告しないようにしている。
マルチスレッド制御部11は、図19に示すように、命令完了(コミット)の制御部の次にコミットするべき命令のIIDを監視し、L2キャッシュミス情報バッファ29のL2キャッシュミスフラグがオン、かつバッファ内に保持しているIIDと一致したときに、走行中のスレッドから他のスレッドに切り替えるようになっている。
また、このとき、スレッド切り替えトリガーとなったL1MIB26のキャッシュ要求であることを示すフラグをMIBスレッド切り替え制御バッファにセットする。又、この切り替えトリガーとなったことを示すフラグは、スレッドが復帰したときにリセットする。
図21に示すように、本発明の一実施形態としてのCPU1によれば、VMT方式において、命令A,BがスレッドXの命令であったとして、命令Bのキャッシュミスが発生してもスレッドXを切り替えずに、その前の命令Aがキャッシュミスしてメインメモリ21へのメモリアクセスを開始するのを待って切り替えることにより、その後スレッドXを再開したときに命令A,Bのデータをメモリから持ってくる処理に対して隠蔽効果が得られる。
またL1データキャッシュ19でのL1MIB26が確保できずに、フェッチキュー28のプログラム順で一番古い要求となって切り替わっていた場合は、同一のキャッシュラインでL1MIB26を確保していた命令が完了したことの報告となっているので、スレッドの復帰後にL1MIB26を確保してL2キャッシュ20に要求を出すことができることになる。
さて、VMT方式においては、並列的に実行するスレッドの組み合わせにより処理時間にばらつきが発生してしまう場合がある。例えば、2つのスレッドを走行させる場合に、組み合わせとして、両スレッドが同種(つまり、キャッシュミスするスレッド同士やキャッシュミスしないスレッド同士)のものである場合や、異なる性質のキャッシュミスするスレッドとキャッシュミスしないスレッド等のパターンが考えられる。
本発明の一実施形態としてのマルチスレッドプロセッサ(CPU1)においては、スレッド切り替えの要因になったキャッシュ要求が、メインメモリ21からの応答により処理を再開できるとしてスレッドを復帰させることで、キャッシュミスしないパターンのプログラムとのキャッシュミスするプログラムとの組み合わせであっても、キャッシュミスするプログラムの処理時間が大きく延びることを緩和できる。
そして、キャッシュミスが、必ずしもプログラム命令順に行なわれずに処理を行ない、プリフェッチ処理を備え、ストア命令の突き放し処理を行なうマルチスレッドプロセッサにおいて、メインメモリ21へのデータ応答処理に起因する命令実行及び完了を阻害することの隠蔽を、スレッド切り替えによって効果的に行なうことができる。
例えば、上述した実施形態においては、1次キャッシュ(L1命令キャッシュ18,L1データキャッシュ19)と2次キャッシュ(L2キャッシュ20)とからなる2階層のキャッシュ(キャッシュ)をそなえたCPU1について説明しているが、これに限定されるものではなく、3次(3階層)以上のキャッシュをそなえてもよい。
なお、本発明の各実施形態が開示されていれば、本発明を当業者によって実施・製造することが可能である。
そして、本発明は、以下に示すように要約することができる。
該演算器により処理を実行する該スレッドを選択的に切り替えるとともに、該命令が前記複数のスレッドのうちいずれの該スレッドに属するものであるかを示すスレッド識別子を設定するマルチスレッド制御部と、
該スレッド上の該命令に対して当該命令を特定する命令識別子を設定する命令制御部と、
データを一時的に保持可能であり階層的にそなえられた複数のキャッシュと、
前記複数のキャッシュへの該データの書き込み・読み出しを管理するキャッシュ制御部とをそなえ、
前記複数のキャッシュのうち最下位階層の該キャッシュにおいて該命令にかかる要求についてキャッシュミスが生じた際に、当該キャッシュミスにかかる該要求に関して、該キャッシュ制御部が、当該命令にかかる該命令識別子および該スレッド識別子を該マルチスレッド制御部に通知し、
該マルチスレッド制御部が、該キャッシュ制御部から通知された該命令識別子および該スレッド識別子に基づいて、該演算器により実行中の該スレッドを他のスレッドに切り替えることを特徴とする、マルチスレッドプロセッサ。
前記複数のキャッシュのうちキャッシュミスが生じた上位階層の該キャッシュから下位階層の該キャッシュに対して当該キャッシュミスにかかる要求を出す際に、該要求に対する前記下位階層のキャッシュからのデータ応答を格納する格納領域を確保して、当該格納領域を特定するためのキャッシュ要求識別子を設定するとともに、
該命令が、前記スレッド上の命令であり、該演算器が演算処理を行なうために該データを格納するレジスタと当該マルチスレッドプロセッサ外部の外部記憶部との間において該データの授受を生じるデマンド要求である場合には、当該命令にかかる該スレッド識別子と該キャッシュ要求識別子と該命令識別子とを該マルチスレッド制御部に対して通知することを特徴とする、付記1記載のマルチスレッドプロセッサ。
該命令が、予め該外部記憶部から取得した該データを該レジスタに格納するプリフェッチ要求である場合に、前記マルチスレッド制御部に対して当該命令にかかる該スレッド識別子,該キャッシュ要求識別子および該命令識別子の通知を行なわないことを特徴とする、付記2記載のマルチスレッドプロセッサ。
該プリフェッチ要求が該外部記憶部に発行されてからの経過時間を監視し、該命令によってアクセスされる該データが、先行するプリフェッチ要求によって該外部記憶部から取得された該データと一致するとともに、該経過時間が所定時間以上経過した場合に、前記マルチスレッド制御部に対して当該命令にかかる該スレッド識別子,該キャッシュ要求識別子および該命令識別子の通知を行なわないことを特徴とする、付記2又は付記3記載のマルチスレッドプロセッサ。
該キャッシュ制御部が、
該フェッチ順序管理部における該命令完了予定順序が先頭の該デマンド要求に対して前記上位階層のキャッシュ上で割り当てられたキャッシュラインが、該スレッド上の順番は該デマンド要求よりも後続するものであって、該デマンド要求よりも先に該キャッシュミスが生じており該格納領域が確保されている該命令に対して前記上位階層のキャッシュ上で割り当てられたキャッシュラインと同一である場合に、
該デマンド要求にかかるスレッド識別子および命令識別子を該命令の該キャッシュ要求識別子とともに、該マルチスレッド制御部に通知することを特徴とする、付記2〜付記4のいずれか1項に記載のマルチスレッドプロセッサ。
該マルチスレッド制御部が、該キャッシュミス情報格納部に格納された情報に基づいて、該キャッシュミスに関する情報を取得することを特徴とする、付記2〜付記4のいずれか1項に記載のマルチスレッドプロセッサ。
該マルチスレッド制御部が、該キャッシュミス情報格納部に格納された情報に基づいて、該キャッシュミスに関する情報を取得することを特徴とする、付記5記載のマルチスレッドプロセッサ。
特定するための情報を、該キャッシュ要求識別子として用いることを特徴とする、付記7記載のマルチスレッドプロセッサ。
(付記9) 該キャッシュ制御部が、
該キャッシュミス情報格納部に、少なくとも、該キャッシュミスが生じた旨を示す情報,該キャッシュ要求識別子,当該命令にかかるスレッド識別子および該命令識別子がそれぞれ格納された後に、該命令に対するデータ応答が該外部記憶部から行なわれる際に、該データ応答を示す情報と当該データ応答にかかる該キャッシュ要求識別子とを該マルチスレッド制御部に通知するとともに、該キャッシュミス情報格納部における該当する前記キャッシュミスが生じた旨を示す情報をリセットすることを特徴とする、付記7又は付記8記載のマルチスレッドプロセッサ。
該キャッシュミス情報格納部において、前記キャッシュミスが生じた旨を示す情報が登録されるとともに、そのキャッシュ要求にかかる該命令識別子および該スレッド識別子が、該フェッチ順序管理部において管理される該命令完了予定順序が先頭の命令にかかる命令識別子およびスレッド識別子と一致した時に、該スレッドを切り替えることを特徴とする、付記7〜付記10のいずれか1項に記載のマルチスレッドプロセッサ。
実行中で未完了の該命令をキャンセルするときに該キャッシュミスが生じた場合に、該キャッシュミス情報格納部における該当するキャッシュ要求に対する前記キャッシュミスが生じた旨を示す情報をリセットすることを特徴とする、付記7〜付記11のいずれか1項に記載のマルチスレッドプロセッサ。
(付記14) 該スレッドが切り替わって復帰したときに、該キャッシュミス情報格納部における前記スレッドが休止状態に遷移する要因となったことを示す情報をリセットすることを特徴とする、付記13記載のマルチスレッドプロセッサ。
該マルチスレッド制御部が、該キャッシュミス情報格納部において、前記スレッドが休止状態に遷移する要因となったことを示す情報が格納されている場合に、該スレッドを切り替えて復帰させることを特徴とする、付記13又は付記14記載のマルチスレッドプロセッサ。
該命令制御部が、前記ストア対象のアドレスにかかるデータ応答を待たずにストア命令を完了したものとして扱う突き放し制御を行なうとともに、
該キャッシュ制御部が、該マルチスレッド制御部に対して、当該ストア命令についてのキャッシュミスにかかる通知を行なわないことを特徴とする、付記1〜付記15のいずれか1項に記載のマルチスレッドプロセッサ。
実行中で未完了の該命令をキャンセルするに際して、当該命令に関して該キャッシュミスが生じた場合においても、該キャッシュミスが生じたこと,該キャッシュ要求識別子,該スレッド識別子および該命令識別子のマルチスレッド制御部への通知を行なわないことを特徴とする、付記1〜付記16のいずれか1項に記載のマルチスレッドプロセッサ。
(付記19) 複数のスレッドを1以上の演算器により並列的に実行可能なマルチスレッドプロセッサにおけるスレッド切り替え制御方法であって、
命令が前記複数のスレッドのうちいずれの該スレッドに属するものであるかを示すスレッド識別子を設定するスレッド識別子設定ステップと、
該スレッド上の該命令に対して当該命令を特定する命令識別子を設定する命令識別子設定ステップと、
データを一時的に保持可能であり階層的にそなえられた複数のキャッシュへの該データの書き込み・読み出しを管理するキャッシュ制御ステップと、
前記複数のキャッシュのうち最下位階層の該キャッシュにおいて該命令にかかる要求についてキャッシュミスが生じた際に、当該キャッシュミスにかかる該要求に関して、当該要求にかかる該命令識別子および該スレッド識別子に基づいて、該演算器により実行中の該スレッドを他のスレッドに切り替える切り替えステップとをそなえることを特徴とする、スレッド切り替え制御方法。
11 マルチスレッド制御部
13 レジスタ
16 命令制御部
17 TLB
18 L1命令キャッシュ
19 L1データキャッシュ
20 L2キャッシュ
21 メインメモリ
22 バス
23 L1命令キャッシュ制御部(キャッシュ制御部)
24 L1データキャッシュ制御部(キャッシュ制御部)
25 L2キャッシュ制御部(キャッシュ制御部)
26 L1MIB(格納領域)
27 L2MIB(格納領域)
28 フェッチキュー(フェッチ順序管理部)
29 L2キャッシュミス情報バッファ
150 実行部(演算器)
Claims (9)
- 1以上の命令をそれぞれそなえた複数のスレッドを、1以上の演算器により並列的に実行可能なマルチスレッドプロセッサであって、
該演算器により処理を実行する該スレッドを選択的に切り替えるとともに、該命令が前記複数のスレッドのうちいずれの該スレッドに属するものであるかを示すスレッド識別子を設定するマルチスレッド制御部と、
該スレッド上の該命令に対して当該命令を特定する命令識別子を設定する命令制御部と、
データを一時的に保持可能であり階層的にそなえられた複数のキャッシュと、
前記複数のキャッシュへの該データの書き込み・読み出しを管理するキャッシュ制御部とをそなえ、
前記複数のキャッシュのうち最下位階層の該キャッシュにおいて該命令にかかる要求についてキャッシュミスが生じた際に、当該キャッシュミスにかかる該要求に関して、該キャッシュ制御部が、当該命令にかかる該命令識別子および該スレッド識別子を該マルチスレッド制御部に通知し、
該マルチスレッド制御部が、該キャッシュ制御部から通知された該命令識別子および該スレッド識別子に基づいて、該演算器により実行中の該スレッドを他のスレッドに切り替え、
該キャッシュ制御部が、
前記複数のキャッシュのうちキャッシュミスが生じた上位階層の該キャッシュから下位階層の該キャッシュに対して当該キャッシュミスにかかる要求を出す際に、該要求に対する前記下位階層のキャッシュからのデータ応答を格納する格納領域を確保して、当該格納領域を特定するためのキャッシュ要求識別子を設定するとともに、
該命令が、前記スレッド上の命令であり、該演算器が演算処理を行なうために該データを格納するレジスタと当該マルチスレッドプロセッサ外部の外部記憶部との間において該データの授受を生じるデマンド要求である場合には、当該命令にかかる該スレッド識別子と該キャッシュ要求識別子と該命令識別子とを該マルチスレッド制御部に対して通知することを特徴とする、マルチスレッドプロセッサ。 - 該キャッシュ制御部が、
該命令が、予め該外部記憶部から取得した該データを該レジスタに格納するプリフェッチ要求である場合に、前記マルチスレッド制御部に対して当該命令にかかる該スレッド識別子,該キャッシュ要求識別子および該命令識別子の通知を行なわないことを特徴とする、請求項1記載のマルチスレッドプロセッサ。 - 該キャッシュ制御部が、
該プリフェッチ要求が該外部記憶部に発行されてからの経過時間を監視し、該命令によってアクセスされる該データが、先行するプリフェッチ要求によって該外部記憶部から取得された該データと一致するとともに、該経過時間が所定時間以上経過した場合に、前記マルチスレッド制御部に対して当該命令にかかる該スレッド識別子,該キャッシュ要求識別子および該命令識別子の通知を行なわないことを特徴とする、請求項1又は請求項2記載のマルチスレッドプロセッサ。 - フェッチにかかる該命令の命令完了予定順序を管理するフェッチ順序管理部をそなえ、
該キャッシュ制御部が、
該フェッチ順序管理部における該命令完了予定順序が先頭の該デマンド要求に対して前記上位階層のキャッシュ上で割り当てられたキャッシュラインが、該スレッド上の順番は該デマンド要求よりも後続するものであって、該デマンド要求よりも先に該キャッシュミ
スが生じており該格納領域が確保されている該命令に対して前記上位階層のキャッシュ上で割り当てられたキャッシュラインと同一である場合に、
該デマンド要求にかかるスレッド識別子および命令識別子を該命令の該キャッシュ要求識別子とともに、該マルチスレッド制御部に通知することを特徴とする、請求項1〜請求項3のいずれか1項に記載のマルチスレッドプロセッサ。 - 少なくとも、該キャッシュミスが生じた旨を示す情報,当該キャッシュミスにかかる該キャッシュ要求識別子,当該要求にかかるスレッド識別子および該命令識別子を相互に関連付けて登録可能なキャッシュミス情報格納部をそなえ、
該マルチスレッド制御部が、該キャッシュミス情報格納部に格納された情報に基づいて、該キャッシュミスに関する情報を取得することを特徴とする、請求項4記載のマルチスレッドプロセッサ。 - 該キャッシュ制御部が、
該キャッシュミス情報格納部に、少なくとも、該キャッシュミスが生じた旨を示す情報,該キャッシュ要求識別子,当該命令にかかるスレッド識別子および該命令識別子がそれぞれ格納された後に、該命令に対するデータ応答が該外部記憶部から行なわれる際に、該データ応答を示す情報と当該データ応答にかかる該キャッシュ要求識別子とを該マルチスレッド制御部に通知するとともに、該キャッシュミス情報格納部における該当する前記キャッシュミスが生じた旨を示す情報をリセットすることを特徴とする、請求項5記載のマルチスレッドプロセッサ。 - 該マルチスレッド制御部が、
該キャッシュミス情報格納部において、前記キャッシュミスが生じた旨を示す情報が登録されるとともに、そのキャッシュ要求にかかる該命令識別子および該スレッド識別子が、該フェッチ順序管理部において管理される該命令完了予定順序が先頭の命令にかかる命令識別子およびスレッド識別子と一致した時に、該スレッドを切り替えることを特徴とする、請求項5又は請求項6記載のマルチスレッドプロセッサ。 - 該キャッシュミス情報格納部が、該スレッドの切り替えの要因となった該キャッシュミスが生じた該要求に対して、該スレッドが休止状態に遷移する要因となったことを示す情報を格納するとともに、
該キャッシュ制御部が、該キャッシュミスにかかるデータ応答が行なわれた際に、当該データ応答を示す信号とそのキャッシュ要求識別子とをマルチスレッド制御部に報告し、
該マルチスレッド制御部が、該キャッシュミス情報格納部において、前記スレッドが休止状態に遷移する要因となったことを示す情報が格納されている場合に、該スレッドを切り替えて復帰させることを特徴とする、請求項5〜請求項7のいずれか1項に記載のマルチスレッドプロセッサ。 - 該命令がストア命令である場合に、そのストア対象のアドレスがキャッシュミスした場合には、
該命令制御部が、前記ストア対象のアドレスにかかるデータ応答を待たずにストア命令を完了したものとして扱う突き放し制御を行なうとともに、
該キャッシュ制御部が、該マルチスレッド制御部に対して、当該ストア命令についてのキャッシュミスにかかる通知を行なわないことを特徴とする、請求項1〜請求項8のいずれか1項に記載のマルチスレッドプロセッサ。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004222042A JP4520788B2 (ja) | 2004-07-29 | 2004-07-29 | マルチスレッドプロセッサ |
US10/981,772 US7310705B2 (en) | 2004-07-29 | 2004-11-05 | Multithread processor and thread switching control method |
DE602004023386T DE602004023386D1 (de) | 2004-07-29 | 2004-11-23 | Multithreaded Prozessor und Threadumschaltungssteuerungsverfahren |
EP04257247A EP1622003B1 (en) | 2004-07-29 | 2004-11-23 | Multithread processor and thread switching control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004222042A JP4520788B2 (ja) | 2004-07-29 | 2004-07-29 | マルチスレッドプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006040141A JP2006040141A (ja) | 2006-02-09 |
JP4520788B2 true JP4520788B2 (ja) | 2010-08-11 |
Family
ID=34930820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004222042A Expired - Fee Related JP4520788B2 (ja) | 2004-07-29 | 2004-07-29 | マルチスレッドプロセッサ |
Country Status (4)
Country | Link |
---|---|
US (1) | US7310705B2 (ja) |
EP (1) | EP1622003B1 (ja) |
JP (1) | JP4520788B2 (ja) |
DE (1) | DE602004023386D1 (ja) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7383403B1 (en) * | 2004-06-30 | 2008-06-03 | Sun Microsystems, Inc. | Concurrent bypass to instruction buffers in a fine grain multithreaded processor |
US7434000B1 (en) | 2004-06-30 | 2008-10-07 | Sun Microsystems, Inc. | Handling duplicate cache misses in a multithreaded/multi-core processor |
US8037250B1 (en) | 2004-12-09 | 2011-10-11 | Oracle America, Inc. | Arbitrating cache misses in a multithreaded/multi-core processor |
CA2538503C (en) * | 2005-03-14 | 2014-05-13 | Attilla Danko | Process scheduler employing adaptive partitioning of process threads |
US20060206902A1 (en) * | 2005-03-14 | 2006-09-14 | Sujat Jamil | Variable interleaved multithreaded processor method and system |
US9361156B2 (en) | 2005-03-14 | 2016-06-07 | 2236008 Ontario Inc. | Adaptive partitioning for operating system |
US8245230B2 (en) * | 2005-03-14 | 2012-08-14 | Qnx Software Systems Limited | Adaptive partitioning scheduler for multiprocessing system |
US8387052B2 (en) * | 2005-03-14 | 2013-02-26 | Qnx Software Systems Limited | Adaptive partitioning for operating system |
US7818747B1 (en) * | 2005-11-03 | 2010-10-19 | Oracle America, Inc. | Cache-aware scheduling for a chip multithreading processor |
EP1990729A4 (en) * | 2006-02-27 | 2010-08-25 | Fujitsu Ltd | PROCESSOR DEVICE AND INSTRUCTION PROCESSING METHOD |
WO2007099582A1 (ja) | 2006-02-28 | 2007-09-07 | Fujitsu Limited | プリフェッチ制御装置 |
WO2007099598A1 (ja) | 2006-02-28 | 2007-09-07 | Fujitsu Limited | プリフェッチ機能を有するプロセッサ |
US7502913B2 (en) * | 2006-06-16 | 2009-03-10 | Microsoft Corporation | Switch prefetch in a multicore computer chip |
US8380966B2 (en) * | 2006-11-15 | 2013-02-19 | Qualcomm Incorporated | Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging |
US8341604B2 (en) * | 2006-11-15 | 2012-12-25 | Qualcomm Incorporated | Embedded trace macrocell for enhanced digital signal processor debugging operations |
US8533530B2 (en) * | 2006-11-15 | 2013-09-10 | Qualcomm Incorporated | Method and system for trusted/untrusted digital signal processor debugging operations |
US8370806B2 (en) | 2006-11-15 | 2013-02-05 | Qualcomm Incorporated | Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor |
JP5101128B2 (ja) * | 2007-02-21 | 2012-12-19 | 株式会社東芝 | メモリ管理システム |
US8484516B2 (en) * | 2007-04-11 | 2013-07-09 | Qualcomm Incorporated | Inter-thread trace alignment method and system for a multi-threaded processor |
EP2159700A4 (en) * | 2007-06-19 | 2011-07-20 | Fujitsu Ltd | CACHE CONTROL AND CONTROL PROCEDURES |
WO2008155838A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 命令処理装置 |
KR101086792B1 (ko) | 2007-06-20 | 2011-11-25 | 후지쯔 가부시끼가이샤 | 명령 실행 제어 장치 및 명령 실행 제어 방법 |
JP2009098934A (ja) * | 2007-10-17 | 2009-05-07 | Hitachi Ltd | プロセッサ及びキャッシュメモリ |
US8589925B2 (en) * | 2007-10-25 | 2013-11-19 | Microsoft Corporation | Techniques for switching threads within routines |
US7941646B2 (en) | 2007-12-31 | 2011-05-10 | Freescale Semicondoctor, Inc. | Completion continue on thread switch based on instruction progress metric mechanism for a microprocessor |
JP4843717B2 (ja) | 2008-02-18 | 2011-12-21 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
JP5444889B2 (ja) * | 2009-06-30 | 2014-03-19 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US8850410B2 (en) * | 2010-01-29 | 2014-09-30 | International Business Machines Corporation | System using a unique marker with each software code-block |
JP2010176692A (ja) * | 2010-03-15 | 2010-08-12 | Fujitsu Ltd | 演算処理装置、情報処理装置及び制御方法 |
AU2010201718B2 (en) * | 2010-04-29 | 2012-08-23 | Canon Kabushiki Kaisha | Method, system and apparatus for identifying a cache line |
JP2012033001A (ja) * | 2010-07-30 | 2012-02-16 | Toshiba Corp | 情報処理装置および情報処理方法 |
US9529594B2 (en) * | 2010-11-30 | 2016-12-27 | Oracle International Corporation | Miss buffer for a multi-threaded processor |
US20130086364A1 (en) * | 2011-10-03 | 2013-04-04 | International Business Machines Corporation | Managing a Register Cache Based on an Architected Computer Instruction Set Having Operand Last-User Information |
CN107748673B (zh) | 2012-06-15 | 2022-03-25 | 英特尔公司 | 包括虚拟加载存储队列的处理器和系统 |
EP2862069A4 (en) | 2012-06-15 | 2016-12-28 | Soft Machines Inc | DEFINING INSTRUCTIONS TO REORDER AND OPTIMIZE LOADING AND STORAGE |
KR102248470B1 (ko) * | 2012-06-15 | 2021-05-06 | 인텔 코포레이션 | 메모리로부터 순차적으로 판독하는 load들을 구성하는 메모리 일관성 모델에서 비순차 load들을 갖는 세마포어 방법 및 시스템 |
CN104583957B (zh) | 2012-06-15 | 2018-08-10 | 英特尔公司 | 具有无消歧乱序加载存储队列的重新排序的推测性指令序列 |
CN104583942B (zh) * | 2012-06-15 | 2018-02-13 | 英特尔公司 | 乱序加载的基于锁的和基于同步的方法 |
WO2013188701A1 (en) | 2012-06-15 | 2013-12-19 | Soft Machines, Inc. | A method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization |
WO2013188460A2 (en) | 2012-06-15 | 2013-12-19 | Soft Machines, Inc. | A virtual load store queue having a dynamic dispatch window with a distributed structure |
CN104583975B (zh) | 2012-06-15 | 2017-07-14 | 英特尔公司 | 无消歧乱序加载存储队列 |
CN104620223B (zh) * | 2012-06-15 | 2018-11-16 | 英特尔公司 | 对于基于存储资历实现从不同线程进行转发的线程不可知的加载存储缓冲器 |
KR101832574B1 (ko) * | 2012-06-15 | 2018-02-26 | 인텔 코포레이션 | 모든 store들이 캐시의 모든 워드들에 대한 검사를 스누핑해야만 하는 것을 방지하기 위해 store들을 필터링하는 방법 및 시스템 |
JP2014006807A (ja) * | 2012-06-26 | 2014-01-16 | Fujitsu Ltd | 演算処理装置、キャッシュメモリ制御装置及びキャッシュメモリの制御方法 |
US10140210B2 (en) | 2013-09-24 | 2018-11-27 | Intel Corporation | Method and apparatus for cache occupancy determination and instruction scheduling |
EP3111333B1 (en) | 2014-02-27 | 2022-03-30 | Mercury Kingdom Assets Limited | Thread and data assignment in multi-core processors |
US9715449B2 (en) * | 2014-03-31 | 2017-07-25 | International Business Machines Corporation | Hierarchical translation structures providing separate translations for instruction fetches and data accesses |
JP6390748B1 (ja) * | 2017-04-19 | 2018-09-19 | 富士通株式会社 | 情報処理装置、情報処理方法および情報処理プログラム |
US11221767B2 (en) * | 2017-10-16 | 2022-01-11 | Vmware, Inc. | Cache line persistence indicator for non-volatile memory using coherence states |
US10572389B2 (en) * | 2017-12-12 | 2020-02-25 | Advanced Micro Devices, Inc. | Cache control aware memory controller |
JP7014965B2 (ja) * | 2018-06-06 | 2022-02-02 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US11281589B2 (en) | 2018-08-30 | 2022-03-22 | Micron Technology, Inc. | Asynchronous forward caching memory systems and methods |
CN110413822B (zh) * | 2019-06-19 | 2021-11-19 | 北京旷视科技有限公司 | 离线图像结构化分析方法、装置、系统和存储介质 |
US11288072B2 (en) * | 2019-09-11 | 2022-03-29 | Ceremorphic, Inc. | Multi-threaded processor with thread granularity |
CN113626348A (zh) * | 2021-07-22 | 2021-11-09 | 支付宝(杭州)信息技术有限公司 | 业务执行方法、装置和电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6049867A (en) * | 1995-06-07 | 2000-04-11 | International Business Machines Corporation | Method and system for multi-thread switching only when a cache miss occurs at a second or higher level |
US6269425B1 (en) * | 1998-08-20 | 2001-07-31 | International Business Machines Corporation | Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system |
JP2002132402A (ja) * | 2000-10-20 | 2002-05-10 | Mitsubishi Electric Corp | 負荷調整ボード及び情報処理装置 |
JP2002163121A (ja) * | 2000-11-22 | 2002-06-07 | Toshiba Corp | 仮想マルチスレッドプロセッサ及びスレッド実行方法 |
JP2002268897A (ja) * | 2001-03-08 | 2002-09-20 | Fujitsu Ltd | スレッド管理方法及び情報処理装置 |
JP2002342163A (ja) * | 2001-05-15 | 2002-11-29 | Fujitsu Ltd | マルチスレッドプロセッサ用キャッシュ制御方式 |
US20030191927A1 (en) * | 1999-05-11 | 2003-10-09 | Sun Microsystems, Inc. | Multiple-thread processor with in-pipeline, thread selectable storage |
US20050138333A1 (en) * | 2003-12-19 | 2005-06-23 | Samra Nicholas G. | Thread switching mechanism |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2522176B2 (ja) * | 1993-08-13 | 1996-08-07 | 日本電気株式会社 | プロセッサの制御方法 |
JP3569014B2 (ja) | 1994-11-25 | 2004-09-22 | 富士通株式会社 | マルチコンテキストをサポートするプロセッサおよび処理方法 |
US6073159A (en) * | 1996-12-31 | 2000-06-06 | Compaq Computer Corporation | Thread properties attribute vector based thread selection in multithreading processor |
US6571318B1 (en) * | 2001-03-02 | 2003-05-27 | Advanced Micro Devices, Inc. | Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism |
-
2004
- 2004-07-29 JP JP2004222042A patent/JP4520788B2/ja not_active Expired - Fee Related
- 2004-11-05 US US10/981,772 patent/US7310705B2/en active Active
- 2004-11-23 EP EP04257247A patent/EP1622003B1/en not_active Ceased
- 2004-11-23 DE DE602004023386T patent/DE602004023386D1/de active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6049867A (en) * | 1995-06-07 | 2000-04-11 | International Business Machines Corporation | Method and system for multi-thread switching only when a cache miss occurs at a second or higher level |
US6269425B1 (en) * | 1998-08-20 | 2001-07-31 | International Business Machines Corporation | Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system |
US20030191927A1 (en) * | 1999-05-11 | 2003-10-09 | Sun Microsystems, Inc. | Multiple-thread processor with in-pipeline, thread selectable storage |
JP2002132402A (ja) * | 2000-10-20 | 2002-05-10 | Mitsubishi Electric Corp | 負荷調整ボード及び情報処理装置 |
JP2002163121A (ja) * | 2000-11-22 | 2002-06-07 | Toshiba Corp | 仮想マルチスレッドプロセッサ及びスレッド実行方法 |
JP2002268897A (ja) * | 2001-03-08 | 2002-09-20 | Fujitsu Ltd | スレッド管理方法及び情報処理装置 |
JP2002342163A (ja) * | 2001-05-15 | 2002-11-29 | Fujitsu Ltd | マルチスレッドプロセッサ用キャッシュ制御方式 |
US20050138333A1 (en) * | 2003-12-19 | 2005-06-23 | Samra Nicholas G. | Thread switching mechanism |
Also Published As
Publication number | Publication date |
---|---|
EP1622003A1 (en) | 2006-02-01 |
US20060026594A1 (en) | 2006-02-02 |
DE602004023386D1 (de) | 2009-11-12 |
US7310705B2 (en) | 2007-12-18 |
EP1622003B1 (en) | 2009-09-30 |
JP2006040141A (ja) | 2006-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4520788B2 (ja) | マルチスレッドプロセッサ | |
US7870369B1 (en) | Abort prioritization in a trace-based processor | |
US6687809B2 (en) | Maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses | |
US5613083A (en) | Translation lookaside buffer that is non-blocking in response to a miss for use within a microprocessor capable of processing speculative instructions | |
US11836080B2 (en) | Physical address proxy (PAP) residency determination for reduction of PAP reuse | |
US8539485B2 (en) | Polling using reservation mechanism | |
US7610473B2 (en) | Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor | |
US20040128448A1 (en) | Apparatus for memory communication during runahead execution | |
CN112543916B (zh) | 多表分支目标缓冲器 | |
KR101996462B1 (ko) | 명확화 없는 비순차 load store 큐 | |
US20060149931A1 (en) | Runahead execution in a central processing unit | |
US5751986A (en) | Computer system with self-consistent ordering mechanism | |
GB2520731A (en) | Soft-partitioning of a register file cache | |
US6915395B1 (en) | Active address content addressable memory | |
US7203821B2 (en) | Method and apparatus to handle window management instructions without post serialization in an out of order multi-issue processor supporting multiple strands | |
JP2006039815A (ja) | マルチスレッドプロセッサおよびレジスタ制御方法 | |
JP4608099B2 (ja) | ジョブ信号を処理する多数の処理ユニットを有する処理システムにおけるジョブ信号処理方法および処理システム | |
EP2159691B1 (en) | Simultaneous multithreaded instruction completion controller | |
US8701122B2 (en) | Method and system for exception-less system calls in an operating system | |
JP2002530735A5 (ja) | ||
CN110402434B (zh) | 缓存未命中线程平衡 | |
JP2002530736A5 (ja) | ||
US7783863B1 (en) | Graceful degradation in a trace-based processor | |
JP2024040922A (ja) | 演算処理装置、演算処理方法及び情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061218 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100223 |
|
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: 20100518 |
|
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: 20100521 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130528 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4520788 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130528 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |