JP2006155204A - マルチスレッド制御装置及び制御方法 - Google Patents

マルチスレッド制御装置及び制御方法 Download PDF

Info

Publication number
JP2006155204A
JP2006155204A JP2004344405A JP2004344405A JP2006155204A JP 2006155204 A JP2006155204 A JP 2006155204A JP 2004344405 A JP2004344405 A JP 2004344405A JP 2004344405 A JP2004344405 A JP 2004344405A JP 2006155204 A JP2006155204 A JP 2006155204A
Authority
JP
Japan
Prior art keywords
cache
way
cache memory
address
monitoring
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
JP2004344405A
Other languages
English (en)
Other versions
JP4487744B2 (ja
Inventor
Naohiro Kiyota
直宏 清田
Itsuki Yamazaki
厳 山崎
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2004344405A priority Critical patent/JP4487744B2/ja
Priority to US11/283,832 priority patent/US7437519B2/en
Priority to EP05257295A priority patent/EP1662389A3/en
Publication of JP2006155204A publication Critical patent/JP2006155204A/ja
Application granted granted Critical
Publication of JP4487744B2 publication Critical patent/JP4487744B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

【課題】
本発明は、複数のスレッドを実行しうるマルチスレッドプロセサにおいて、複数のスレッドを効率的に切り替えうるマルチスレッド制御装置及び制御方法を提供すること。
【解決手段】
本発明は、複数のスレッド処理手段を有し、あるスレッド処理手段の実行中にキャッシュ中の特定ブロックに対して、他のプロセサ又は他のスレッド処理手段による更新がなされた場合には、当該スレッド処理手段に対する排他権が開放されたとみなす同期ロック制御を実行するプロセサにおいて、複数のスレッドを効率的に切り替えうるマルチスレッド制御装置及び制御方法を提供することを目的とする。
【選択図】図11

Description

本発明は、複数のスレッドを実行しうるマルチスレッドプロセサにおいて、複数のスレッドを効率的に切り替えうるマルチスレッド制御装置及び制御方法に関するものである。
近年、コンピュータアーキテクチャの代表的なものとしては、複雑な処理を一命令で行うCISC(Complex Instruction Set Computer)アーキテクチャの他、一命令中に実行する処理を簡素化したRISC(Reduced Instruction Set Computer)アーキテクチャ、複数の同時処理可能な命令をソフトウェアで1つの長い命令にまとめたVLIW(Very Long Instruction Word)アーキテクチャ等が知られている。
また、これらのアーキテクチャを実現するコンピュータの中央演算処理装置(CPU:Central Processing Unit)における処理手法は、インオーダ実行型とアウトオブオーダ実行型との2つに大別することができる。インオーダ実行型は、プログラム順に沿って命令列の逐次的な処理を行う手法であり、アウトオブオーダ実行型は、命令間の依存関係を見て、依存関係のない命令ならばプログラム順に関係なく、先行命令を追い越して処理を行う手法である。
そして、近年においては、一のプロセサにおいて一のプログラム(スレッド)を実行するシングルスレッド処理の他に、物理的に一のプロセサにおいて複数のスレッドを並列的に実行するマルチスレッドプロセサ方式が注目されている。
一般にCPUは、ソフトウェアから可視なレジスタや状態レジスタ(CPU状態レジスタ)に加え、加減算や乗算,除算、またメモリデータをレジスタに読み出すロード処理や、レジスタのデータをメモリに書き込むストア処理を実行する資源を有する。
マルチスレッドプロセサとは、1つのCPU内にソフトウェアから可視なレジスタを多重化し、別々なプログラムを実行するようにしながら、加減算などの命令実行資源を複数のプログラムで共有するものである。
上述の如きマルチスレッド処理を実現するための方式としては、複数のスレッドを同時に実行する、fine grained multithreading方式やSimultaneous multithreading(SMT;同時マルチスレッディング)方式(図1参照)の他、複数のスレッドを同時には実行せず、キャッシュミスのような事象が起きたときに別のスレッドに切り替えて実行する、coarse grained multithreading方式やVertical multithreading(VMT;時分割型マルチスレッディング)方式(図2参照)がある(特許文献1参照)。
図1はSMT方式を説明するための図、図2はVMT方式を説明するための図である。
VMT方式は、処理に長時間かかるキャッシュミスした命令処理を隠蔽することを狙い、キャッシュミスを検出したときに、メモリからキャッシュまでデータを持ってくる処理をキャッシュ制御部(図示省略)が実行している間に、メモリアクセス以外の処理について、実行部や制御部(ともに図示省略)において他のスレッドに切り替え、実行するというものである。又、このVMT方式においては、キャッシュミスが発生しにくいスレッドに関しては、一定時間経過した時点で他のスレッドに切り替えるようになっている。
図3はインオーダ方式におけるキャッシュミス時の処理を説明するための図、図4はアウトオブオーダ方式におけるキャッシュミス時の処理を説明するための図、図5はアウトオブオーダ方式における従来のスレッド切り替え手法を説明するための図である。従来において、VMT方式は、前述したインオーダ型プロセサ上でのみ実装されている。
インオーダ実行するプロセサでは、キャッシュミスの事象はプログラム順に起こり、又、キャッシュミスしたデータがメモリから応答するのも、プログラム順に行なわれる(図3参照)。一方、アウトオブオーダで実行をするプロセサでは、メモリアクセスがプログラム内の命令順序に生じるわけではなく、図4に示すように、キャッシュミスの事象は、必ずしもプログラム順では起こらない。
例えば、図5に示すように、それぞれキャッシュミスが生じるスレッドX上の2つの命令A,Bがあり、スレッドX上の順番では命令A,命令Bの順であった場合において、命令Bの実行を命令Aよりも先に実行できる場合には、命令Aがキャッシュミスしたことを検出する前に、命令Bがキャッシュミスしたことを検出することになる。
例えば、図5に示す例において、命令Bのキャッシュミスを検出して、命令Aがキャッシュミスをする前にスレッドXから別のスレッドYに切り替えてしまうと、スレッドXの実行を再開してから命令Aのキャッシュミスが発生する。
なお、インオーダ実行型のプロセサでは、命令Bの実行開始が命令Aの実行開始を待って行なわれるので、キャッシュミスは命令A,命令Bの順番で生じる。
また、マルチプロセサによる共有メモリのシステムでは、排他権を確保するために、mutex−lockなどのロックによる手法が知られている。ロックを獲得するための代表的な方法の一つにスピンループがある。これは、主記憶上に「ロック変数」を設け、個々のプロセサはロック確保のための「ロック変数」の参照/更新試行とスピンループ(空転待機)を反復し、ロックを取った場合にはロック表示をロック期間中だけ表示し、ロックを解除する場合にはロック解除を表示することで、複数のプロセサ間にて排他権を確保する手法である。
ところが、このような構成でもループをまわって常時チェックすることになるが、近年のプロセサの高速化は、メモリシステムの高速化よりも激しく、相対的な速度はどんどん乖離する傾向にある。
このような状況では、スピンループによる空転回数が非常に多くなるにもかかわらず、そのあいだはスピンループ命令列を解釈して実行するものの、実質的には何も仕事をしておらず、システム性能に与える影響が問題になっている。特に大規模なSMPシステムでは、ある一つのロック変数を集中して取り合う事象は少なくなく、この場合、ある一つのCPU以外は全くの無駄なことをしていることになり、システム運用に掛る性能コストが大きな問題となる。
また、マルチスレッド処理方式を採用したプロセサコアでは、あるスレッド処理部分でこのスピンループが発生していると、実質の仕事のないスピンループ処理による空転がプロセサコアの他のスレッド処理の進行を阻害するという悪影響を与えてしまう。
同様の問題はロック変数を用いる他の処理、たとえばバリア同期などのプロセサ間同期処理(同期待ち)など一般的なプロセサ間同期やI/O同期や、アイドルループなどでも生じる。
なお、マルチプロセサシステムにおける従来の排他制御や同期制御技術としては、特許文献2、特許文献3および特許文献4が知られている。
すなわち、特許文献2では、主記憶上に共有変数を格納して当該主記憶上で集中監視することで排他制御を実現する機構が開示されている。近年のようなキャッシュメモリを持つプロセサでは、キャッシュ内での書き換えが主記憶上に即座に反映されるわけではない。特にライトバックキャッシュ方式においては、書き換え事象が反映されるにはかなりの時間が掛るのが普通である。また、ライトスルーキャッシュであっても現代のプロセサではメモリレイテンシが非常に長く、反映ロスが長くなり性能が低下する。
したがって、特許文献2のように主記憶メモリを集中監視するだけでは、上述のようなスピンループの諸問題は解消されず、メモリレイテンシが影響しないキャッシュメモリ内での解決方法が望まれている。
特許文献3では、複数のCPUで共有されるシステムバスの他に、CPU間の排他制御のためのアクセス制御信号線(ピン)を設けてCPU間の共有メモリに対する排他制御を実現しようとする技術が開示されている。近年ではプロセサ間接続(たとえばLSIの入出力ピン数)はコストが高く、1ピンを排他制御専用に使うよりも、むしろデータ線として利用したほうが性能向上に有効な状況であり、さもなければ、1ピンでも削減したほうがCPUの製作費の削減に寄与することができる。したがってピン増加なしにCPU間の排他制御を実現する方法が求められる。
特許文献4では、主従関係があるプロセサとコプロセサとの間での同期制御を行うための同期制御回路が開示されているが、SMP(対称型マルチプロセサ)やcc−NUMAのように、個々のプロセサが対等に共有メモリを扱うシステムには適用が困難である。
すなわち、プロセサは、コプロセサに対して命令を発動する立場にある関係上、コプロセサの動作状況を自発的に把握可能であるが、SMPシステムでは個々のプロセサが他のプロセサの動作状況に関する情報を原理的に保持していないため特許文献4の技術をスピンループの上述の問題に適用することは困難である。
また、上記スピンループの問題を解決するために、解放待ちのためにスピンループになる特定のイベントを検出した場合に、その要因となったプロセサまたはスレッドを停止し、メモリに停止したスレッドのコンテキストを退避し、メモリから新たなコンテキストを格納して実行を開始する方法が提案されている(特許文献5参照)。しかし、特許文献5ではスピンループになる特定のイベントは,キャッシュアクセス時のミスヒットであるために、スピンループの時間短縮による性能向上効果よりも、余計なスレッド切り替え及びコンテキスト退避が発生することにより、総合的に性能が劣化するおそれがあった。
そこで、上記スピンループの問題を解決するために、メモリアクセスの排他制御のためのロック変数の書き換え事象の可能性を予見し、従来では解放待ちのためにスピンループになる部分でプロセサまたはスレッドを停止させることで、上記課題を解決する方法が提案されている。
すなわち、ロック変数の書き換え事象の可能性予見を実現するために、ロード対象メモリブロックを含む範囲のメモリブロックの監視開始契機を設定する機能を持つ新規なロード命令(以下、LOAD−WITH−LOOKUP命令と記す)と、メモリブロックの監視を行う書き込み事象検出機能とを設け、LOAD−WITH−LOOKUP命令と書き込み事象検出機能の検出結果に連動してSUSPEND命令等の休止命令を実行/解除することでプロセサの停止および再開を実現する。
すなわち、図6(a)のように、従来では、記憶装置上のロック変数[A]のロック獲得に際して、CAS[A]による獲得失敗後にLD[A]を繰り返してロック変数[A]の変化(他のプロセサからの解放)を確認するための無駄なスピンループが実行される。
これに対して、LOAD−WITH−LOOKUP命令を使用する技術の場合には,図6(b)のように、CPU1では、CAS[A]による獲得失敗後にLOAD−WITH−LOOKUP命令を発行して、ロック変数[A]へのストア事象(他のCPU2からの解放の可能性)を監視するとともにSUPENDにて休止状態に移行し、他のCPU2からのロック変数[A]に対するストア可能性の検出を契機としてCPU1を復帰させてロック変数[A]の再獲得を試行させることが可能になり、無駄なスピンループを行わせる必要がなくなる。
すなわち、一般的には、図7のように、CPU1で、LOAD−WITH−LOOKUP命令にて、目的のロック変数[A]の監視を開始させた後、SUSPEND(休止状態)に移行し、他のCPU2からのロック変数[A]の解放のためのアクセスを検出したら、CPU1は休止状態から復帰して後続の命令実行を開始する。
また、LOAD−WITH−LOOKUP命令を使用する技術では、既存のプログラムの命令列を解析してスピンループの発生部位の予見、プロセサの停止/再開を実現する。すなわち、既存の命令列からロック変数の書き換え事象の可能性を見つけるためのスピンループとなる命令列を見いだすステップと、従来のスピンループの代わりに当該プロセサあるいは当該ハードウェアスレッドを停止させるステップとを実行する。
ただし、近年のプロセサはキャッシュを構成することが当然のようになっており、そのまま主記憶を監視するのは非常に困難を伴う。従って、LOAD−WITH−LOOKUP命令を使用する技術では、キャッシュメモリ内にロック変数の書き換え事象の可能性を監視して検出する書き込み事象検出機能を備える。
すなわち、図8に示されるように、ロック変数[A]の書き換え事象の可能性を見いだす方法としては、ロック中のCPU2側からのロック変数[A]のキャッシュメモリ上における無効化を検出契機とし、CPU1側を休止状態から復帰させる。
なお、図9に示されるように、LOAD−WITH−LOOKUP命令から休止状態に移行するまでの間に、ロック変数[A]のキャッシュメモリ上での無効化(解放)が検出される可能性もある。その場合には、休止状態には移行せず、そのまま、ロック変数[A]へのアクセスを続行する。
ロック変数の書き換え可能性の検出精度が高ければ高いほど、プロセサの使用効率が高くなる。また、不当なハングアップに陥らないよう、実際に書き換えが起こっているにもかかわらず検出できないような事態を回避するよう構成する。
また、アドレス監視をせずに従来の割り込みでの再開のみを許すサスペンド手法を使いたい状況は当然ある。したがって、サスペンド命令を使用する際にこれを選択できるように構成すると利便が良い。
既存の命令セットに対し追加命令を作成できない場合や、旧命令コードから改版することが出来ない(あるいは困難な)プログラムが存在する場合が、当然存在する。このような場合、上記命令の追加では何の恩恵を預かることもできない。したがって、これらに対しても恩恵があるべく、命令の追加をせずに解決する方法が希望される。
真に改善されるためにはLOAD−WITH−LOOKUP命令を追加し、その追加した命令を用いて明示的に指示される方がより望ましいと言える。つまり、LOAD−WITH−LOOKUP命令を追加する方式と、既存の命令列を解析する方式はどちらも従来手法からは明確に改善されるが、組み合わせられるのが最も良い。
このLOAD−WITH−LOOKUP命令を実装するにあたり、LOAD−WITH−LOOKUP命令により指定された主記憶装置のメモリ番地が、他のスレッド又は他のプロセサにより更新されたかどうかを監視する必要があり、以下の実装案が従来技術として提案されている。
第一の実装案として、専用のレジスタである監視対象管理レジスタに監視対象となるキャッシュラインの物理アドレスを全ビット保持し、物理アドレスの比較によって監視対象となる物理アドレスへのアクセスの有無を検出する方法が考えられる(特許文献6及び特許文献7参照)。
この場合、監視対象とする物理アドレスと監視中であることを示すビットおよび監視対象とするスレッド番号を示す情報を監視対象管理レジスタに保持する必要がある。例えば、他のスレッドからのキャッシュメモリ又は主記憶へのWRITEアクセスが発生した場合において、その物理アドレスが監視対象の物理アドレスと一致した場合に、監視対象のアドレスが更新されたことを検出するものである。又、監視対象のアドレスを含むキャッシュラインが、キャッシュメモリのリプレースや他のプロセサからのパージ要求(吐き出し要求)又は無効化要求によって当該キャッシュラインが失われる場合には、他のプロセサにより監視対象のアドレスが更新される可能性があるとして、監視対象のアドレスが更新されたことの報告を行う。
次に、第二の実装案として、キャッシュタグに監視対象であることを示すビットを保持し、監視対象であることを示すビットがセットされているキャッシュラインへの更新及び参照の監視を行うことで、監視対象となるメモリ位置へのアクセスの有無を検出する方法が考えられる。
この場合、監視対象であることを示すビット及び監視対象とするスレッド番号を示すビットをキャッシュタグのエントリとして追加する必要がある。例えば、キャッシュメモリまたは主記憶へのWRITEアクセス要求、又は、リプレースによるキャッシュラインの無効化及び吐き出し要求、並びに、他のプロセサからの要求によるキャッシュラインの無効化要求及び吐き出し要求を処理する際に、アクセスしたキャッシュタグに登録されている監視対象であることを示すビット及び監視対象とするスレッド番号を示すビットにより、監視対象のアドレスが更新されたことの報告を行う。
図16は従来技術におけるアドレスコンパレータの構成を示す図であり、第一の実装案に対応するものである。アドレス監視レジスタ1601に保持されているラインアドレス及びキャッシュアクセスの際の更新アクセスアドレスを保持する更新アクセスアドレスレジスタ1602に保持されているラインアドレスの比較を行うものである。Ex−NOR論理ゲート1611〜1518により、各アドレスビット同士の排他的論理和の否定を出力し、それらをANDゲート1619により論理積を出力することにより、ラインアドレスの一致を検出するものである。従来技術の方法では、物理アドレス(図16においてはビット[46:6]の41ビット)を全て比較しなければならないため、このように論理回路の物量が大きくなってしまう。
図17は従来技術におけるキャッシュタグに監視アドレスを保持する方法を示す図であり、第二の実装案に対応するものである。タグRAM1701は複数のエントリを含み、各エントリはVALIDフラグ1702、キャッシュステータス1703、監視フラグ1704、物理アドレス1705から構成される。従来技術の方法では、当該タグRAMの全エントリにVALIDフラグ及び監視フラグを具備しなければならないため、このようにRAMの物量が大きくなってしまう。
図18に監視対象ブロックの更新制御を行うハードウェア構成の従来例を示すものであり、第二の実装案に対応するものである。
READ/WRITE制御部1811は、キャッシュアクセス発生時において当該キャッシュアクセスがREADアクセスかWRITEアクセスかを判断し、マルチプレクサ1812及び1813のセレクト信号の制御を行う。例えば、当該キャッシュアクセスがREADアクセスである場合は、READアドレス1801をマルチプレクサ1812及び1813が出力するようにセレクト信号の制御を行い、WRITEアクセスである場合には、WRITEアドレス1802をマルチプレクサ1812及び1813が出力するようにセレクト信号の制御を行う。
WAY0用タグRAM1815及びWAY1用タグRAM1816は、ライトイネーブル(WE)端子付のRAMであり、当該ライトイネーブルに1が入力された場合に、RAMに対するWRITEを行う。
キャッシュLRU制御RAM1817は、図11のキャッシュLRU制御RAM1112に該当するものであり、キャッシュのLRU(Least Recently Used)制御に使用され、LRU情報に基づいたリプレースWAY−ID1803を出力する。インバータ論理ゲート1814は、入力の否定を出力とする論理ゲートである。
本従来例では、キャッシュアクセスであるREADアクセス1801が発生した場合には、READ/WRITE制御部1811によりマルチプレクサ1812及び1813の選択制御を行い、WAY0用タグRAM1815及びWAY1用タグRAM1816の該当ラインアドレスの検索を行い、かつ、キャッシュLRU制御RAM1817の検索も行う。WAY0用タグRAM1815及びWAY1用タグRAM1816に対する検索の結果においてキャッシュミスが発生した場合には、キャッシュLRU制御RAM1817のLRU情報に基づいたリプレースWAY−ID1803に従って、WAY0又はWAY1用タグRAMの該当ラインアドレスのリプレースによるキャッシュの登録を行う。
従って、キャッシュアクセス発生時のラインアドレスが監視対象ブロックのラインアドレスと同一であり、さらに登録されているタグRAMのWAY−IDが同一である場合には、当該監視対象ブロックがリプレースされてしまうことにより、無駄なスレッド切り替えが発生してしまうことになる。
特開2002−163121号公報 特開平3−164964号公報 特開昭61−229150号公報 特開2002−41489号公報 特開平6−44089号公報 米国特許USP6493741号公報 米国特許USP6674192号公報
従来の技術における第一の実装案では、スレッド毎に全物理アドレスを監視対象管理レジスタに保持することなり、監視対象管理レジスタの物量が大きくなる。将来の動向として、企業の基幹業務処理など特に高い処理能力を要求されるハイエンドサーバの分野においては、大規模CMP(Chip Multi-Processor)等による高マルチスレッド化が図られる傾向にあるため、単純にスレッド数だけ全物理アドレスを保持して監視対象とする方式は、将来の高マルチスレッドプロセサへの拡張性に乏しいといえる。
又、従来の技術における第二の実装案では、キャッシュタグの全キャッシュラインに監視用のエントリを追加する必要が有るが,監視対象となるキャッシュラインが自身のキャッシュリプレースの際に吐き出されてしまう可能性が高く、不用意に監視対象のアドレスの更新を報告してしまうことにより、不測のスレッド切り替えが発生してしまうという問題がある。
従って、上記に挙げた従来技術における第一の実装案及び第二の実装案は、複数のスレッドの切り替え方法に関しては、効率的なアドレスの監視方法を何ら開示していないため、従来技術の域を出ていない。
本発明は、マルチスレッドを実行しうるマルチスレッドプロセサにおいて、物理アドレスの監視をすることなく、キャッシュラインのインデックスに使用されるキャッシュラインアドレス及びキャッシュ上に登録されているWAY−IDを用いることにより、論理量及び物理量の増加によるチップサイズ及び消費電力の増大を招くことなく、複数のスレッドを効率的に切り替えうる制御装置及び制御方法を提供する。
上記目的を達成するために本発明は、
少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサにおいて、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較手段とを有し、
前記比較手段の出力に基づき、スレッド処理手段の排他制御を行うことを特徴とするプロセサであることを特徴とする。
本発明はさらに、
少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサを含む情報処理装置において、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較手段とを有し、
前記比較手段の出力に基づき、スレッド処理手段の排他制御を行うことを特徴とするプロセサを有する情報処理装置であることを特徴とする。
本発明はさらに、
前記プロセサは、前記特定ブロックの更新を検出した場合に、
前記監視アドレス保持手段をリセットすることを特徴とする。
本発明はさらに、
少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサにおいて、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較手段とを有し、
前記キャッシュメモリ手段に対するキャッシュミスが発生したときには、
前記監視アドレス保持手段に保持されたWAY番号とは異なるWAYに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするプロセサであることを特徴とする。
本発明はさらに、
少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサを含む情報処理装置において、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較手段とを有し、
前記キャッシュメモリ手段に対するキャッシュミスが発生したときには、
前記監視アドレス保持手段に保持されたWAY番号とは異なるWAYに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするプロセサを有する情報処理装置であることを特徴とするプロセサを有する情報処理装置であることを特徴とする。
本発明はさらに、
前記キャッシュメモリは1つのWAYにまで縮退可能であり、
前記キャッシュメモリが1つのWAYに縮退した場合には、
前記縮退したキャッシュメモリのWAYに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を強制的に行うことを特徴とする。
本発明はさらに、
少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理部とを有するプロセサにおいて、
前記スレッド処理部毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持部と、
前記スレッド処理部毎に設けられ、一の監視アドレス保持部に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理部からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較部とを有し、
前記キャッシュメモリ部に対するアクセスが発生したときには、
前記アクセスの完了後にラインアドレス及びWAY番号を前記監視アドレス保持部に保持し、
他のプロセサ又は他のスレッド処理部によるライト要求が発行されたときには、
前記監視アドレス保持部に保持されたラインアドレス及びWAY番号を当該キャッシュアクセスのものと比較を行い、
前記ラインアドレス及びWAY番号が一致したときには、前記特定ブロックの更新を検出することを特徴とするキャッシュメモリの制御方法であるということを特徴とする。
本発明はさらに、
前記プロセサは、前記特定ブロックの更新を検出した場合に、
前記監視アドレス保持部をリセットすることを特徴とする。
本発明はさらに、
少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理部とを有するプロセサにおいて、
前記スレッド処理部毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持部と、
前記スレッド処理部毎に設けられ、一の監視アドレス保持部に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理部からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較部とを有し、
前記キャッシュメモリ部に対するキャッシュミスが発生したときには、
前記監視アドレス保持部に保持されたWAY番号とは異なるWAYに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするキャッシュメモリの制御方法であることを特徴とする。
本発明はさらに、
前記キャッシュメモリは1つのWAYにまで縮退可能であり、
前記キャッシュメモリが1つのWAYに縮退した場合には、
前記縮退したキャッシュメモリのWAYに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を強制的に行うことを特徴とする請求項9記載のキャッシュメモリの制御方法であることを特徴とする。
以上説明したように、本発明によれば、複数のスレッドを実行しうるマルチスレッドプロセサにおける同期ロック制御において、他系プロセサ若しくは他系スレッドによる特定のデータ域を監視する命令が実行された場合に、当該監視対象データ域の更新の検出をキャッシュのインデックスアドレス及びWAY−IDで行うことにより、ロックが開放されたものとみなして、論理量及び物理量の増加によるチップサイズ及び消費電力の増大を招くことなく、複数のスレッドを効率的に切り替えうる制御装置及び制御方法に関するものである。
以下、図面を参照しつつ本発明にかかる実施の形態について、詳細に説明する。
図10は本発明の一実施形態としてのマルチスレッドプロセッサの構成を示すブロック図である。
本発明の一実施形態としてのマルチスレッドプロセッサであるCPU(Central Processing Unit)1001は、例えば複数のスレッド(プログラム)を1以上の実行部(演算器)により並列的に実行可能なマルチスレッドプロセッサとして構成されている。
本CPU1001は、図10に示すように、マルチスレッド制御部1002、レジスタファイル1004、実行部(演算器)1003、命令制御部1005、TLB(論理アドレス・物理アドレス変換部)1006、L1命令キャッシュ1011、L1データキャッシュ1014,L2キャッシュ1015,L1命令キャッシュ制御部1012、L1データキャッシュ制御部1013及びL2キャッシュ制御部1016をそなえて構成され、又、バス1021を介してメインメモリ1023と通信可能に接続されている。
命令制御部1005は、1次命令キャッシュ1001やL2キャッシュ1016、メインメモリ1023から命令を取得して実行部1003により実行させるための制御を行うものである。
また、L1データキャッシュ制御部1013は、フェッチにかかる要求の命令完了予定順序を管理する。
さらに、命令制御部1005は、ストア命令に対して、ストア対象のアドレスにかかるデータ応答を待たずにストア命令を完了したものとして扱う突き放し制御を行うようになっている。
TLB(Translation Look-aside Buffer;論理アドレス・物理アドレス変換部)1006は、論理アドレスから物理アドレスへの変換で発生するページテーブル参照のペナルティを小さくするために設けられた一種のキャッシュであり、参照されたアドレスと変換情報の履歴を保存しておき、アドレス変換の高速化を実現するものである。
実行部(演算器)1003は、レジスタファイル1004等を用いて演算等の種々の処理(命令処理)を行うものであり、例えば種々の演算処理を実行する演算器(実行演算器)として機能するようになっている。
メインメモリ1023は、CPU1001の外部にそなえられたメモリであって、種々の命令やデータを格納するものであり、バス1021を介してCPU1001と通信可能に接続され、実行部1003による処理・実行に必要とされる命令やデータがL1命令キャッシ1011、L1データキャッシュ1014およびL2キャッシュ1015に格納されていない場合(キャッシュミス時)には、CPU1001はバス1021等を介してこのメインメモリ1023から命令やデータを読み出すようになっている。
L1命令キャッシュ1011は、実行部1003が実行する命令を格納するための1次キャッシュであり、L1データキャッシュ1014は、実行部1003が命令の実行に際して使用された各種データを格納するための1次キャッシュである。L2キャッシュ1015は、各種命令やデータを格納するための2次キャッシュである。すなわち、本CPU1においては、複数のキャッシュ(L1命令キャッシュ1011、L1データキャッシュ1014、L2キャッシュ1015)が階層的にそなえられている。
そして、本実施形態においては、CPU1001にそなえられた複数のキャッシュのうち、CPU1001の外部にそなえられるメインメモリ1023に最も近い位置にそなえられたL2キャッシュ1015が最下位階層のキャッシュであり、このL2キャッシュ1015に対してL1命令キャッシュ1011やL1データキャッシュ1014が上位階層(上位側)のキャッシュである。
以下、本CPU1001におけるスレッド切り替え手法を、L1データキャッシュ1014およびL2キャッシュ1016におけるキャッシュミスに着目して説明する。
なお、以下、L1データキャッシュ1014を単にL1キャッシュという場合があり、又、L1データキャッシュ制御部1013を単にL1キャッシュ制御部という場合がある。
L1データキャッシュ制御部1013は、L1データキャッシュ1014に対応してそなえられており、L1データキャッシュ1014へのデータの書き込み・読み出しを管理・制御するものである。又、L1命令キャッシュ制御部1012は、L1命令キャッシュ1011に対応してそなえられており、L1命令キャッシュ1011へのデータ(命令データ)の書き込み・読み出しを管理・制御するものである。L2キャッシュ制御部1016は、L2キャッシュ1015に対応してそなえられており、L2キャッシュ1015へのデータ(命令データ,データ)の書き込み・読み出しを管理・制御するものである。
また、L1データキャッシュ制御部1013は、L2キャッシュ1015(L2キャッシュ制御部1016)に出した要求に対する応答データを一時的に格納するバッファ(L1MIB:L1 ムーブ・イン・バッファ)をそれぞれ複数個そなえており、同様に、L2キャッシュ制御部1016も、L2キャッシュミスによりメインメモリ1023に出した要求に対する応答データを一時的に格納するバッファ(L2MIB:L2 ムーブ・イン・バッファ)を複数個そなえている。
L2キャッシュ制御部1016は、L2キャッシュ1015においてキャッシュミスが生じた場合には、メインメモリ1023に出した要求に対する応答データを一旦格納するバッファ(L2MIB:L2 ムーブ・イン・バッファ)を確保してからメインメモリへの要求を発行するようになっている。
マルチスレッド制御部1002は、実行部1003による処理対象のスレッドを選択的に切り替えるものである。なお、このマルチスレッド制御部1002は、実行部1003(演算器)により処理を実行するスレッドを識別するための識別子(実行スレッド識別子)に基づいて、レジスタ(レジスタウィンドウ)1004と実行部1003との間におけるデータ転送を制御するようになっている。
また、マルチスレッド制御部1002は、本CPU1001において並列的に実行される複数のスレッドをそれぞれ識別するための識別子(スレッド識別子)を設定するようになっており、これらのスレッド上の各命令に対して、その命令がどのスレッドに属するものであるかを示す識別子(スレッド識別子)を設定するようになっている。
そして、マルチスレッド制御部1002は、L1命令キャッシュ制御部1012やL1データキャッシュ制御部1013から通知された命令識別子やスレッド識別子に基づいて、次に命令完了すべき命令にキャッシュミスが生じた場合に、スレッドを切り替えるよう制御するようになっている。
図11に本発明の適用分野となるマルチスレッドプロセサにおけるキャッシュリプレース制御部のハードウェア構成の一例を示す。
キャッシュWAY縮退ステータスレジスタ1111は、キャッシュのリプレース制御等に用いるキャッシュのWAY縮退情報の保持を行う。
キャッシュLRU制御RAM1112は、キャッシュのLRU(Least Recently Used)制御、つまり、よく使われるデータや最近使われたデータの優先順位を高めるアルゴリズムにより、リプレース対象となるキャッシュのWAY−IDを決定するために用いる。
キャッシュRAM及びタグRAM1113は、メモリ階層の一部を構成する。なお、本発明はキャッシュ階層に関わらず適用が可能であるため、説明の簡単化のためにキャッシュの階層は意識せずに説明を行う。従って、本発明はキャッシュの構造によって、適用を妨げられるものではない。
スレッド0用アドレス監視レジスタ1117及びスレッド1用アドレス監視レジスタ1118は、それぞれのスレッド毎に監視対象となる特定アドレス域のうちラインアドレスフィールドを保持するものである。説明の簡単化のために、スレッド0及びスレッド1の2スレッドによるマルチスレッドプロセサの場合の構成を示しているが、アドレス監視レジスタの増設により、より高マルチスレッドのCPUにも対応が可能である。
アドレスコンパレータ1115及び1116は、キャッシュアクセス時のラインアドレス1103を、それぞれスレッド0用アドレス監視レジスタ1117及びスレッド1用アドレス監視レジスタ1118に保持されているラインアドレスと比較することにより、監視対象アドレスに対するアクセスの検出を行う。当該アドレスコンパレータは、ラインアドレスの比較のみを行うため、10ビット幅のコンパレータにより構成される。
リプレースキャッシュWAY制御部1114は、キャッシュWAY縮退ステータスレジスタ1111からのキャッシュWAY縮退情報及びキャッシュLRU制御RAM1112からのリプレースWAY−ID情報に基づいて、リプレースを行うキャッシュWAYの制御を行う。
リプレース監視制御部1119は、WRITEアクセス要求1122及びリプレース要求1123並びにパージ要求1124等を契機として、スレッド0用アドレス監視レジスタ1117及びスレッド1用アドレス監視レジスタ1118に保持されているラインアドレスに対する更新の監視を行い、監視対象であるラインアドレスに対する更新が発生した場合には、命令制御部(図10の命令制御部1005参照)の対象スレッドに対して監視対象アドレスの更新報告1125を行うとともにスレッド0用アドレス監視レジスタ1117及びスレッド1用アドレス監視レジスタ1118に対するリセット1121を発行する。
なお、メモリアクセスに用いる仮想アドレス又は物理アドレス1101のうち、キャッシュRAM及びタグRAM1113及びキャッシュLRU制御RAM1112に対するキャッシュアクセスに用いられるのは、キャッシュラインアドレス1102及び1103である。
図19に本発明の適用分野となるキャッシュリプレース制御部における更新監視制御部(図11の更新監視制御部1119参照)のハードウェア構成の一例を示す。
キャッシュアクセスが発生した場合のラインアドレス1911(図11のラインアドレス1103参照)は、LOAD−WITH−LOOKUP命令発行1901による特定のアドレス域に対するアドレス監視リクエストを契機として、AND論理ゲート1912によりアドレス監視レジスタ1914に監視対象として登録される。
また、キャッシュに対するWRITEアクセス1902が発生した場合には、AND論理ゲート1913により、既に監視対象であるラインアドレスが設定されているアドレス監視レジスタ1914の出力と当該WRITEアクセスのラインアドレスの比較がアドレスコンパレータ1915によって行われる。当該アドレスコンパレータは、ラインアドレスの比較のみを行うため、10ビット幅のコンパレータにより構成される。また、当該WRITEアクセス1902には、自CPUの他スレッドからのストアリクエスト及び他CPUからのムーブアウトリクエスト並びに無効化リクエストが含まれる。
アドレスコンパレータ1915により、アドレス一致1903が検出された場合には、監視対象のアドレスに対する更新があったことを命令制御部(図10の命令制御部1005参照)の対象スレッドに対して更新報告1904を通知する。
図12に本発明におけるアドレス監視レジスタの構成の一例を示す。アドレス監視レジスタ1201は、VALIDフラグ1202及びWAY−IDフィールド1203並びにラインアドレスフィールド1204から構成される。VALIDフラグ1202は、アドレス監視レジスタに保持されている情報の有効/無効に関する情報を示す。無効なラインアドレスを監視対象とすることを防止するためである。WAY−IDフィールドは、複数に分割されたキャッシュの領域を指定するフィールドである。ラインアドレス1204は、メモリアクセスに用いる仮想アドレス又は物理アドレス1101のうち、キャッシュRAM及びタグRAM1113及びキャッシュLRU制御RAM1112に対するキャッシュアクセスに用いられるラインアドレスを保持するものである。
図13に監視対象ブロックの更新制御の方法を示すフローチャートを示す。
以下、図13の処理手順を説明する。まず、LOAD−WITH−LOOKUP命令等の発行による特定のアドレス域に対するアドレス監視リクエストを実行する(ステップS1302)。
次に当該アドレス監視リクエストに対して、ラインアドレス(図11のラインアドレス1103)でキャッシュ(図11のキャッシュRAM及びタグRAM1113参照)を引くことにより、キャッシュにヒットしたかどうかについて判定を行う。ヒットした場合には、リクエスト処理完了ステップ(ステップS1305)へ進み、ヒットしなかった場合には、下位のキャッシュへREAD要求の発行を行う。下位のキャッシュにもヒットしない場合には、さらに下位のキャッシュへREAD要求の発行を行う。最終的にどのキャッシュ階層にもヒットしない場合には、メモリに対してREAD要求を発行することにより、リクエスト処理完了ステップ(ステップS1305)へ進む。
監視レジスタ設定ステップ(ステップS1306)では、各スレッド用のアドレス監視レジスタ(図11のスレッド0用アドレス監視レジスタ1117及びスレッド1用アドレス監視レジスタ1118参照)に対して、VALIDフラグ(図12のVALIDフラグ1202参照)及びWAY−ID(図12のWAY−IDフィールド1203参照)並びにラインアドレス(図12のラインアドレスフィールド1204参照)の設定を行い、WRITEアクセス発生時のWAY−ID及びラインアドレスに対する監視を開始する。当該WRITEアクセスには、自CPUの他スレッドからのストアリクエスト及び他CPUからのムーブアウトリクエスト並びに無効化リクエストが含まれる。
WRITEアクセスが発生すると(ステップS1307)、WAY−ID及びラインアドレス監視ステップ(ステップS1308)において、更新監視制御部(図11の更新監視制御部1119参照)が全てのスレッド番号に対応するWAY−ID及びラインアドレスの監視を行い、いずれかのアドレス監視レジスタ(図11のスレッド0用アドレス監視レジスタ1117及びスレッド1用アドレス監視レジスタ1118参照)の値と一致した場合には、更新対象更新報告ステップ(ステップS1309)にて監視対象のアドレスに対する更新があったことを命令制御部(図10の命令制御部1005参照)の対象スレッドに対して監視対象更新報告1125を通知する。
さらに、監視対象であるアドレスに対する更新が報告された場合には、更新レジスタリセットステップ(ステップS1310)にて、対応するスレッド用のアドレス監視レジスタ(図11のスレッド0用アドレス監視レジスタ1117及びスレッド1用アドレス監視レジスタ1118参照)のリセットを行う。アドレス監視レジスタのリセットの方法としては、VALIDフラグ(図12のVALIDフラグ1202参照)を0に落とす方法が考えられる。
また、対応するスレッド用のアドレス監視レジスタ(図11のスレッド0用アドレス監視レジスタ1117及びスレッド1用アドレス監視レジスタ1118参照)の値と一致しない場合には、何もせずに次のWRITEアクセスが発生するまで待つ(ステップS1308)。
図14に監視対象ブロックの更新制御の方法を示すフローチャートを示す。
以下、図14の処理手順を説明する。まず、キャッシュアクセス(ステップS1402)が発生した場合に、キャッシュにヒットした場合にはリプレースキャッシュWAY制御部(図11のリプレースキャッシュWAY制御部1114参照)が、通常どおりLRU(図11のキャッシュLRU制御RAM1112参照)の更新を行う(ステップS1408)。
また、キャッシュミスが発生した場合には、LRU(図11のキャッシュLRU制御RAM1112参照)の登録情報に基づいて空きキャッシュWAYの検索を行い(ステップS1404)、空きキャッシュWAYがある場合にはリプレースキャッシュWAY制御部(図11のリプレースキャッシュWAY制御部1114参照)が空きキャッシュWAYに登録を行い、LRUの更新も行う(ステップS1409)。
さらに、空きWAYがない場合には、対応するスレッド用のアドレス監視レジスタ(図11のスレッド0用アドレス監視レジスタ1117及びスレッド1用アドレス監視レジスタ1118参照)とのラインアドレスの比較を行い(ステップS1405参照)、ラインアドレスが一致した場合には、アドレスが一致したアドレス監視レジスタのWAYとは異なるWAYに登録を行い、LRUの更新も行う(ステップS1410)。従って、監視対象ブロックのラインアドレスと一致した場合においても、当該監視対象ブロックがリプレース対象になることを防ぐことができる。
なお、ラインアドレスが一致しない場合には、LRU(図11のキャッシュLRU制御RAM1112参照)に従い登録を行う(ステップ1406)。この場合には最も古いキャッシュラインのリプレースが発生することになる。
図15に1WAY動作時における監視対象ブロックをリプレース対象とする方法を示すフローチャートを示す。上記、図14で説明した監視対象ブロックの更新制御の方法では、キャッシュの縮退によりキャッシュWAYが1WAYのみとなった場合には、監視対象ブロックがリプレースされないために、当該キャッシュアクセスがキャッシュに登録されない場合が発生する。このような場合には、動作停止の原因となる場合があるため、キャッシュアクセスによる当該監視対象ブロックのリプレースを行いたい場合がある。
以下、図15の処理手順を説明する。まず、キャッシュアクセス(ステップS1502)が発生した場合に、キャッシュにヒットした場合にはリプレースキャッシュWAY制御部(図11のリプレースキャッシュWAY制御部1114参照)が、通常どおりLRU(図11のキャッシュLRU制御RAM1112参照)の更新を行う(ステップS1509)。
また、キャッシュミスが発生した場合には、LRU(図11のキャッシュLRU制御RAM1112参照)の登録情報に基づいて空きキャッシュWAYの検索を行い(ステップS1504)、空きキャッシュWAYがある場合にはリプレースキャッシュWAY制御部(図11のリプレースキャッシュWAY制御部1114参照)が空きキャッシュWAYに登録を行い、LRUの更新も行う(ステップS1510)。
さらに、空きWAYがない場合には、キャッシュWAY縮退ステータスレジスタ(図11のキャッシュWAY縮退ステータスレジスタ1111参照)のキャッシュWAY縮退情報に基づいて縮退されていないキャッシュWAYの検索を行い(ステップS1505)、キャッシュWAYが1WAYのみである場合には、当該監視対象ブロックに当該キャッシュアクセスを登録することによりリプレースを行う(ステップ1511)。従って、キャッシュ縮退によりキャッシュが1WAYのみで動作している場合においても、キャッシュに登録を行うことができる。
また、縮退されていないキャッシュWAYが2WAY以上ある場合には、対応するスレッド用のアドレス監視レジスタ(図11のスレッド0用アドレス監視レジスタ1117及びスレッド1用アドレス監視レジスタ1118参照)とのラインアドレスの比較を行い(ステップS1506参照)、ラインアドレスが一致した場合には、アドレスが一致したアドレス監視レジスタのWAYとは異なるWAYに登録を行い、LRUの更新も行う(ステップS1512)。従って、監視対象ブロックのラインアドレスと一致した場合においても、当該監視対象ブロックがリプレース対象になることを防ぐことができる。
なお、ラインアドレスが一致しない場合には、LRU(図11のキャッシュLRU制御RAM1112参照)に従い登録を行う(ステップ1507)。この場合には最も古いキャッシュラインのリプレースが発生することになる。
図20は監視対象のリプレースを行わない書き込みWAY決定制御回路の構成を示す図であり、図14における監視対象ブロックの更新制御の方法を示すフローチャート及び図15の1WAY動作時における監視対象ブロックをリプレース対象とする方法を示すフローチャートに対応するものである。
READ/WRITE制御部2011は、キャッシュアクセス発生時において当該キャッシュアクセスがREADアクセスかWRITEアクセスかを判断し、マルチプレクサ2012及び2013のセレクト信号の制御を行う。例えば、当該キャッシュアクセスがREADアクセスである場合は、READアドレス2001をマルチプレクサ2012及び2013が出力するようにセレクト信号の制御を行い、WRITEアクセスである場合には、WRITEアドレス2002をマルチプレクサ2012及び2013が出力するようにセレクト信号の制御を行う。
WAY0用タグRAM2021及びWAY1用タグRAM2022は、ライトイネーブル(WE)端子付のRAMであり、当該ライトイネーブルに1が入力された場合に、RAMに対するWRITEを行う。
キャッシュLRU制御RAM2023は、図11のキャッシュLRU制御RAM1112に該当するものであり、キャッシュのLRU(Least Recently Used)制御に使用され、LRU情報に基づいたリプレースWAY−ID2003を出力する。インバータ論理ゲート2014、2015、2016、2017は、入力の否定を出力とする論理ゲートである。また、3入力AND−OR論理ゲート2018及び2019は、AND論理ゲートに入力された信号の論理積の結果とOR論理ゲートに入力された信号との論理和を出力するものである。さらに、AND論理ゲート2018及び2019は、入力された信号の論理積を出力する。
アドレス監視レジスタ2024は、図11のスレッド0用アドレス監視レジスタ1117及びスレッド1用アドレス監視レジスタ1118に相当するものである(ここでは、簡単化のためにスレッド毎のアドレス監視レジスタは省略している)。アドレスコンパレータ2025は、アドレス監視レジスタ2024に保持されているラインアドレス及びリードアクセスのREADアドレス2001との比較を行うものである。
キャッシュWAY縮退ステータスレジスタ2025は、図11のキャッシュWAY縮退ステータスレジスタ1111に相当し、キャッシュのリプレース制御等に用いるキャッシュのWAY縮退情報の保持を行う。また、モード設定レジスタ2026により、図14における監視対象ブロックの更新制御の方法を示すフローチャートの動作、または、図15の1WAY動作時における監視対象ブロックをリプレース対象とする方法を示すフローチャートの動作を選択的に行わせることができる。
本従来例では、キャッシュアクセスであるREADアクセス2001が発生した場合には、READ/WRITE制御部2011によりマルチプレクサ2012及び2013の選択制御を行い、WAY0用タグRAM2021及びWAY1用タグRAM2022の該当ラインアドレスの検索を行い、かつ、キャッシュLRU制御RAM2023の検索も行う。
WAY0用タグRAM2021及びWAY1用タグRAM2022に対する検索の結果においてキャッシュミスが発生した場合には、まずアドレス監視レジスタ2024のラインアドレス及びREADアドレス2001をアドレスコンパレータ2025で比較を行い、アドレス一致2004が検出されない場合にはキャッシュLRU制御RAM2023のLRU情報2003に基づいたリプレースWAY−ID2023に従って、空きWAYに登録を行う。
また、アドレス一致2004が検出された場合にはアドレス監視レジスタ2024に保持しているWAY−IDに基づいて、WAY0又はWAY1用タグRAMの該当ラインアドレスのリプレースによるキャッシュの登録を行う。また、アドレス一致2004が検出されない場合には、キャッシュLRU制御RAM2023のLRU情報に基づいたリプレースWAY−ID2023に従って、WAY0又はWAY1用タグRAMの該当ラインアドレスのリプレースによるキャッシュの登録を行う。
ここで、キャッシュWAY縮退ステータスレジスタ2025(図11のキャッシュWAY縮退ステータスレジスタ1111参照)の情報により、キャッシュWAYが1WAYのみである場合には、アドレスコンパレータ2025におけるアドレス比較をディセーブルにする。従って、キャッシュWAYが1WAYのみである場合には、監視対象ブロックのリプレースを抑止しないことになる。
さらに、当該キャッシュWAY縮退ステータスレジスタ2025は、モード設定レジスタにより出力をディセーブルにすることもできるので、図14における監視対象ブロックの更新制御の方法を示すフローチャートの動作、または、図15の1WAY動作時における監視対象ブロックをリプレース対象とする方法を示すフローチャートの動作を選択的に行わせることができる。
以上、本発明にかかる実施の形態について図面を参照して説明して詳述してきたが、具体的な構成例はこれら実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等があっても本発明に含まれる。
以下に本発明を付記する。
(付記1)
少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサにおいて、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較手段とを有し、
前記比較手段の出力に基づき、スレッド処理手段の排他制御を行うことを特徴とするプロセサ。
(付記2)
少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサを含む情報処理装置において、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較手段とを有し、
前記比較手段の出力に基づき、スレッド処理手段の排他制御を行うことを特徴とするプロセサを有する情報処理装置。
(付記3)
前記プロセサは、前記特定ブロックの更新を検出した場合に、
前記監視アドレス保持手段をリセットすることを特徴とする付記1又は2記載のプロセサ。
(付記4)
少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサにおいて、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較手段とを有し、
前記キャッシュメモリ手段に対するキャッシュミスが発生したときには、
前記監視アドレス保持手段に保持されたWAY番号とは異なるWAYに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするプロセサ。
(付記5)
少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理手段とを有するプロセサを含む情報処理装置において、
前記スレッド処理手段毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持手段と、
前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較手段とを有し、
前記キャッシュメモリ手段に対するキャッシュミスが発生したときには、
前記監視アドレス保持手段に保持されたWAY番号とは異なるWAYに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするプロセサを有する情報処理装置。
(付記6)
前記キャッシュメモリは1つのWAYにまで縮退可能であり、
前記キャッシュメモリが1つのWAYに縮退した場合には、
前記縮退したキャッシュメモリのWAYに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を強制的に行うことを特徴とする付記4又は5記載のプロセサ。
(付記7)
少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理部とを有するプロセサにおいて、
前記スレッド処理部毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持部と、
前記スレッド処理部毎に設けられ、一の監視アドレス保持部に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理部からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較部とを有し、
前記キャッシュメモリ部に対するアクセスが発生したときには、
前記アクセスの完了後にラインアドレス及びWAY番号を前記監視アドレス保持部に保持し、
他のプロセサ又は他のスレッド処理部によるライト要求が発行されたときには、
前記監視アドレス保持部に保持されたラインアドレス及びWAY番号を当該キャッシュアクセスのものと比較を行い、
前記ラインアドレス及びWAY番号が一致したときには、前記特定ブロックの更新を検出することを特徴とするキャッシュメモリの制御方法。
(付記8)
前記プロセサは、前記特定ブロックの更新を検出した場合に、
前記監視アドレス保持部をリセットすることを特徴とする付記7記載のキャッシュメモリの制御方法。
(付記9)
少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
少なくとも1つ以上のスレッド処理部とを有するプロセサにおいて、
前記スレッド処理部毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持部と、
前記スレッド処理部毎に設けられ、一の監視アドレス保持部に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理部からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較部とを有し、
前記キャッシュメモリ部に対するキャッシュミスが発生したときには、
前記監視アドレス保持部に保持されたWAY番号とは異なるWAYに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするキャッシュメモリの制御方法。
(付記10)
前記キャッシュメモリは1つのWAYにまで縮退可能であり、
前記キャッシュメモリが1つのWAYに縮退した場合には、
前記縮退したキャッシュメモリのWAYに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を強制的に行うことを特徴とする付記9記載のキャッシュメモリの制御方法。
図1は、SMT方式を説明するための図である。 図2は、VMT方式を説明するための図である。 図3は、インオーダ方式におけるキャッシュミス時の処理を説明するための図である。 図4は、アウトオブオーダ方式におけるキャッシュミス時の処理を説明するための図である。 図5は、アウトオブオーダ方式におけるスレッド切り替え手法を説明するための図である。 図6(a)は、従来技術におけるロック解除の手法を説明するための図である。図6(b)はLOAD−WITH−LOOKUP命令を使用する技術(1)の手法を説明するための図である。 図7は、LOAD−WITH−LOOKUP命令を使用する技術(2)の手法を説明するための図である。 図8は、LOAD−WITH−LOOKUP命令を使用する技術(3)の手法を説明するための図である。 図9は、LOAD−WITH−LOOKUP命令を使用する技術(4)の手法を説明するための図である。 図10は、マルチスレッドプロセサの構成を示すブロック図である。 図11は、本発明の一実施形態としてのマルチスレッドプロセサにおけるキャッシュリプレース制御部のハードウェア構成を示すブロック図である。 図12は、本発明の一実施形態としての監視レジスタの構成を示す図である。 図13は、本発明の一実施形態としての監視対象ブロックの更新制御の方法を示すフローチャートである。 図14は、本発明の一実施形態としての監視対象ブロックをリプレース対象から外す方法を示すフローチャートである。 図15は、本発明の一実施形態としての1WAY動作時における監視対象ブロックをリプレース対象とする方法を示すフローチャートである。 図16は、従来技術としてのアドレスコンパレータの構成を示す図である。 図17は、従来技術としての監視フラグを保持するRAMの構成を示す図である。 図18は、従来技術としての書き込みWAY決定制御回路の構成を示す図である。 図19は、本発明の一実施形態としての監視レジスタ制御回路の構成を示す図である。 図20は、本発明の一実施形態としての監視対象のリプレースを行わない書き込みWAY決定制御回路の構成を示す図である。
符号の説明
601 LOAD−WITH−LOOKUP命令
602 SUSPEND命令
603 STORE命令
1001 CPU(マルチスレッドプロセサ)
1002 マルチスレッド制御部
1101 キャッシュアクセスの仮想アドレス又は物理アドレス
1102 ラインアドレスフィールド
1114 キャッシュWAYリプレース制御部
1117 スレッド0用アドレス監視レジスタ
1118 スレッド1用アドレス監視レジスタ
1119 更新監視制御部
1201 監視レジスタ
1202 VALIDフラグ
1203 WAY−IDフィールド
1204 ラインアドレスフィールド
1601 アドレス監視レジスタ
1602 更新アクセスアドレスレジスタ
1611 Ex−NOR論理ゲート
1619 AND論理ゲート
1701 TAG−RAM
1811 READ/WRITE制御部
1815 WAY0用TAG−RAM
1816 WAY1用TAG−RAM
1817 LRU−RAM
1911 READサイクル用アドレスレジスタ
1914 アドレス監視レジスタ
2011 READ/WRITE制御部
2021 WAY0用TAG−RAM
2022 WAY1用TAG−RAM
2023 LRU−RAM
2024 アドレス監視レジスタ
2025 WAY縮退ステータスレジスタ

Claims (10)

  1. 少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
    少なくとも1つ以上のスレッド処理手段とを有するプロセサにおいて、
    前記スレッド処理手段毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持手段と、
    前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較手段とを有し、
    前記比較手段の出力に基づき、スレッド処理手段の排他制御を行うことを特徴とするプロセサ。
  2. 少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
    少なくとも1つ以上のスレッド処理手段とを有するプロセサを含む情報処理装置において、
    前記スレッド処理手段毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持手段と、
    前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較手段とを有し、
    前記比較手段の出力に基づき、スレッド処理手段の排他制御を行うことを特徴とするプロセサを有する情報処理装置。
  3. 前記プロセサは、前記特定ブロックの更新を検出した場合に、
    前記監視アドレス保持手段をリセットすることを特徴とする請求項1又は2記載のプロセサ。
  4. 少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
    少なくとも1つ以上のスレッド処理手段とを有するプロセサにおいて、
    前記スレッド処理手段毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持手段と、
    前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較手段とを有し、
    前記キャッシュメモリ手段に対するキャッシュミスが発生したときには、
    前記監視アドレス保持手段に保持されたWAY番号とは異なるWAYに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするプロセサ。
  5. 少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
    少なくとも1つ以上のスレッド処理手段とを有するプロセサを含む情報処理装置において、
    前記スレッド処理手段毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持手段と、
    前記スレッド処理手段毎に設けられ、一の監視アドレス保持手段に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理手段からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較手段とを有し、
    前記キャッシュメモリ手段に対するキャッシュミスが発生したときには、
    前記監視アドレス保持手段に保持されたWAY番号とは異なるWAYに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするプロセサを有する情報処理装置。
  6. 前記キャッシュメモリは1つのWAYにまで縮退可能であり、
    前記キャッシュメモリが1つのWAYに縮退した場合には、
    前記縮退したキャッシュメモリのWAYに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を強制的に行うことを特徴とする請求項4又は5記載のプロセサ。
  7. 少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
    少なくとも1つ以上のスレッド処理部とを有するプロセサにおいて、
    前記スレッド処理部毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持部と、
    前記スレッド処理部毎に設けられ、一の監視アドレス保持部に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理部からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較部とを有し、
    前記キャッシュメモリ部に対するアクセスが発生したときには、
    前記アクセスの完了後にラインアドレス及びWAY番号を前記監視アドレス保持部に保持し、
    他のプロセサ又は他のスレッド処理部によるライト要求が発行されたときには、
    前記監視アドレス保持部に保持されたラインアドレス及びWAY番号を当該キャッシュアクセスのものと比較を行い、
    前記ラインアドレス及びWAY番号が一致したときには、前記特定ブロックの更新を検出することを特徴とするキャッシュメモリの制御方法。
  8. 前記プロセサは、前記特定ブロックの更新を検出した場合に、
    前記監視アドレス保持部をリセットすることを特徴とする請求項7記載のキャッシュメモリの制御方法。
  9. 少なくとも2つ以上の分割された格納領域であるWAYを有するキャッシュメモリと
    少なくとも1つ以上のスレッド処理部とを有するプロセサにおいて、
    前記スレッド処理部毎に設けられ、特定ブロックを指定するWAY番号及びラインアドレスを保持する監視アドレス保持部と、
    前記スレッド処理部毎に設けられ、一の監視アドレス保持部に保持されたキャッシュメモリのWAY番号及びラインアドレスと他のスレッド処理部からアクセスされるキャッシュメモリのWAY番号及びラインアドレスとの比較を行う比較部とを有し、
    前記キャッシュメモリ部に対するキャッシュミスが発生したときには、
    前記監視アドレス保持部に保持されたWAY番号とは異なるWAYに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を行うことを特徴とするキャッシュメモリの制御方法。
  10. 前記キャッシュメモリは1つのWAYにまで縮退可能であり、
    前記キャッシュメモリが1つのWAYに縮退した場合には、
    前記縮退したキャッシュメモリのWAYに、前記キャッシュミスの発生により前記特定ブロックを置換すべきブロックの登録を強制的に行うことを特徴とする請求項9記載のキャッシュメモリの制御方法。
JP2004344405A 2004-11-29 2004-11-29 マルチスレッド制御装置及び制御方法 Expired - Fee Related JP4487744B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004344405A JP4487744B2 (ja) 2004-11-29 2004-11-29 マルチスレッド制御装置及び制御方法
US11/283,832 US7437519B2 (en) 2004-11-29 2005-11-22 Multithread controller and control method
EP05257295A EP1662389A3 (en) 2004-11-29 2005-11-28 Multithread controller and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004344405A JP4487744B2 (ja) 2004-11-29 2004-11-29 マルチスレッド制御装置及び制御方法

Publications (2)

Publication Number Publication Date
JP2006155204A true JP2006155204A (ja) 2006-06-15
JP4487744B2 JP4487744B2 (ja) 2010-06-23

Family

ID=36097041

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004344405A Expired - Fee Related JP4487744B2 (ja) 2004-11-29 2004-11-29 マルチスレッド制御装置及び制御方法

Country Status (3)

Country Link
US (1) US7437519B2 (ja)
EP (1) EP1662389A3 (ja)
JP (1) JP4487744B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011118756A (ja) * 2009-12-04 2011-06-16 Nec Corp 排他制御プログラム、排他制御方法、及び情報処理システム
JP2011150422A (ja) * 2010-01-19 2011-08-04 Renesas Electronics Corp データ処理装置
WO2011142058A1 (ja) * 2010-05-14 2011-11-17 パナソニック株式会社 計算機システム

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8936057B2 (en) * 2005-08-30 2015-01-20 Rockwell Collins, Inc. Substrate lamination system and method
US8230203B2 (en) * 2007-03-30 2012-07-24 Intel Corporation Detecting spin loops in a virtual machine environment
JP5235870B2 (ja) * 2007-04-09 2013-07-10 パナソニック株式会社 マルチプロセッサ制御装置、その制御方法および集積回路
JP2009098819A (ja) * 2007-10-15 2009-05-07 Elpida Memory Inc メモリシステム、メモリシステムの制御方法、及びコンピュータシステム
US8806129B2 (en) 2008-11-21 2014-08-12 International Business Machines Corporation Mounted cache memory in a multi-core processor (MCP)
US9886389B2 (en) 2008-11-21 2018-02-06 International Business Machines Corporation Cache memory bypass in a multi-core processor (MCP)
US9824008B2 (en) 2008-11-21 2017-11-21 International Business Machines Corporation Cache memory sharing in a multi-core processor (MCP)
US9122617B2 (en) 2008-11-21 2015-09-01 International Business Machines Corporation Pseudo cache memory in a multi-core processor (MCP)
US8977878B2 (en) * 2011-05-19 2015-03-10 Texas Instruments Incorporated Reducing current leakage in L1 program memory
WO2013042240A1 (ja) * 2011-09-22 2013-03-28 富士通株式会社 情報処理装置及び情報処理装置の制御方法
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9804846B2 (en) * 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
CN105094747B (zh) * 2014-05-07 2018-12-04 阿里巴巴集团控股有限公司 基于smt的中央处理单元以及用于检测指令的数据相关性的装置
US9600190B2 (en) * 2015-02-27 2017-03-21 Red Hat Israel, Ltd. Virtual machine functions for multiple privileged pages
US10467696B1 (en) * 2015-07-31 2019-11-05 Integral Development Corp. Timing mechanisms to enhance the security of online networks
US10185564B2 (en) * 2016-04-28 2019-01-22 Oracle International Corporation Method for managing software threads dependent on condition variables
CN110955546B (zh) * 2018-09-26 2023-03-21 迈普通信技术股份有限公司 一种内存地址监控方法、装置及电子设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61229150A (ja) 1985-04-04 1986-10-13 Mitsubishi Electric Corp 共有メモリのアクセス制御方式
JPH03164964A (ja) 1989-11-24 1991-07-16 Nippon Telegr & Teleph Corp <Ntt> 情報処理装置における排他制御処理装置
JPH0644089A (ja) 1992-05-18 1994-02-18 Matsushita Electric Ind Co Ltd 情報処理装置
US5546593A (en) 1992-05-18 1996-08-13 Matsushita Electric Industrial Co., Ltd. Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream
JP3309425B2 (ja) 1992-05-22 2002-07-29 松下電器産業株式会社 キャッシュ制御装置
US6493741B1 (en) 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US6651163B1 (en) 2000-03-08 2003-11-18 Advanced Micro Devices, Inc. Exception handling with reduced overhead in a multithreaded multiprocessing system
JP2002041489A (ja) 2000-07-25 2002-02-08 Mitsubishi Electric Corp 同期信号生成回路、それを用いたプロセッサシステムおよび同期信号生成方法
JP2002163121A (ja) 2000-11-22 2002-06-07 Toshiba Corp 仮想マルチスレッドプロセッサ及びスレッド実行方法
US20020087824A1 (en) * 2000-12-29 2002-07-04 Hum Herbert H.J. System and method for employing a process identifier to minimize aliasing in a linear-addressed cache
JP3566677B2 (ja) 2001-08-20 2004-09-15 三菱電機株式会社 回転電機
JP3981070B2 (ja) * 2003-12-26 2007-09-26 株式会社東芝 キャッシュリプレース装置及びキャッシュリプレース方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011118756A (ja) * 2009-12-04 2011-06-16 Nec Corp 排他制御プログラム、排他制御方法、及び情報処理システム
JP2011150422A (ja) * 2010-01-19 2011-08-04 Renesas Electronics Corp データ処理装置
US8725958B2 (en) 2010-01-19 2014-05-13 Renesas Electronics Corporation Methods and systems for maintaining cache coherency in multi-processor systems
WO2011142058A1 (ja) * 2010-05-14 2011-11-17 パナソニック株式会社 計算機システム
JP2011242896A (ja) * 2010-05-14 2011-12-01 Panasonic Corp 計算機システム
CN102822809A (zh) * 2010-05-14 2012-12-12 松下电器产业株式会社 计算机系统
US9063794B2 (en) 2010-05-14 2015-06-23 Socionext Inc. Multi-threaded processor context switching with multi-level cache

Also Published As

Publication number Publication date
EP1662389A2 (en) 2006-05-31
US7437519B2 (en) 2008-10-14
EP1662389A3 (en) 2008-05-07
JP4487744B2 (ja) 2010-06-23
US20060161735A1 (en) 2006-07-20

Similar Documents

Publication Publication Date Title
JP4487744B2 (ja) マルチスレッド制御装置及び制御方法
US9817644B2 (en) Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
US6484254B1 (en) Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses
US10061588B2 (en) Tracking operand liveness information in a computer system and performing function based on the liveness information
KR101524446B1 (ko) 하드웨어 제한에 기초한 조절가능한 트랜잭션 크기를 이용하여 코드를 동적으로 최적화하는 장치, 방법 및 시스템
JP4376692B2 (ja) 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
US8099556B2 (en) Cache miss detection in a data processing apparatus
US20140047219A1 (en) Managing A Register Cache Based on an Architected Computer Instruction Set having Operand Last-User Information
US11868263B2 (en) Using physical address proxies to handle synonyms when writing store data to a virtually-indexed cache
US20220358048A1 (en) Virtually-indexed cache coherency using physical address proxies
US11836080B2 (en) Physical address proxy (PAP) residency determination for reduction of PAP reuse
US11314509B2 (en) Processing of plural-register-load instruction
US11416400B1 (en) Hardware cache coherency using physical address proxies
Radulović et al. An Analysis of Speculation and Coherence Protocols in CMPs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100208

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

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

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

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4487744

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140409

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees