JP2005316854A - 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ - Google Patents

情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ Download PDF

Info

Publication number
JP2005316854A
JP2005316854A JP2004135875A JP2004135875A JP2005316854A JP 2005316854 A JP2005316854 A JP 2005316854A JP 2004135875 A JP2004135875 A JP 2004135875A JP 2004135875 A JP2004135875 A JP 2004135875A JP 2005316854 A JP2005316854 A JP 2005316854A
Authority
JP
Japan
Prior art keywords
instruction
storage device
information
control unit
processor
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
JP2004135875A
Other languages
English (en)
Other versions
JP4376692B2 (ja
Inventor
Masaki Ukai
昌樹 鵜飼
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 JP2004135875A priority Critical patent/JP4376692B2/ja
Priority to US10/937,253 priority patent/US7853756B2/en
Priority to EP04255531A priority patent/EP1594059A3/en
Publication of JP2005316854A publication Critical patent/JP2005316854A/ja
Application granted granted Critical
Publication of JP4376692B2 publication Critical patent/JP4376692B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • 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
    • 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
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/521Atomic

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Power Sources (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】 複数の論理的または物理的なプロセッサ間の排他制御のためのスピンループに起因する消費電力やプロセッサ資源の無駄を削減する。
【解決手段】 排他制御のための共有変数[A]の監視等のために、目的の共有変数[A]のロード試行およびストア事象の監視開始契機を設定するLOAD-WITH-LOOKUP命令を設けた。CPU1では、CAS[A]による獲得失敗後にLOAD-WITH-LOOKUP命令を発行して、ロック変数[A]へのストア(他のCPU2からの解放アクセス)を監視するとともにSUPENDにて休止状態に移行し、他のCPU2からのロック変数[A]に対するストア可能性の検出を契機としてCPU1を復帰させてロック変数[A]の再獲得を試行させることが可能になり、無駄なスピンループ(空転待ち)を行わせる必要がなくなる。
【選択図】図1

Description

本発明は情報処理技術に関し、特に、複数のプロセッサが結合されたSMP(symmetrical multiprocessor)やcc−NUMA(Non-Uniform Memory Architecture)構成などの共有メモリを持つシステム等に関わる命令処理技術に関する。
マルチプロセッサによる共有メモリのシステムでは、排他権を確保するために、mutex−lockなどのロックによる手法が知られている。ロックを獲得するための代表的な方法の一つにスピンループがある。これは、主記憶上に「ロック変数」を設け、個々のプロセッサはロック確保のための「ロック変数」の参照/更新試行とスピンループ(空転待機)を反復し、ロックを取った場合にはロック表示をロック期間中だけ表示し、ロックを解除する場合にはロック解除を表示することで、複数のプロセッサ間にて排他権を確保する手法である。
参考技術のスピンループ命令列の例を以下に示す。ここで前記「ロック変数」に対応するものは主記憶の[lock]で示されるアドレスのブロック(4バイト)である。この中身が0であればロック解除状態、自分のID(それぞれのプロセスが属する[ID]の中身)であればそのプロセスがロック中であることを示す。
以下の例では、SPARC V9命令セットを使用して説明するが、特定の命令セットに固有の話ではなく一般に通用するものである。
最も単純なスピンループの例としては、図22のような命令列とすることが考えられる。なお、図22において各命令の作用はその右側にコメントとして記載されている。ところで、この図22の構成の命令列では、cas命令にはストアの可能性が常にあるために常にキャッシュブロックの排他権を獲得するよう動作する。このため、同一ロック変数を複数のプロセッサで取り合う状況になると、キャッシュ間競合が激しくなる。
この問題を改善した命令列の例が図23の命令列である。この図23のようにすることで、ロック変数が書き変わらない間(ロックを獲得しているプロセッサがロックを保持し続けている間)は、キャッシュは共有状態で保持されるので、前述のキャッシュ間競合はなくなる。
ところが、このような構成でもループをまわって常時チェックすることになるが、近年のプロセッサの高速化は、メモリシステムの高速化よりも激しく、相対的な速度はどんどん乖離する傾向にある。
このような状況では、スピンループによる空転回数が非常に多くなるにもかかわらず、そのあいだはスピンループ命令列を解釈して実行するものの、実質的には何も仕事をしておらず、消費電力の無駄が問題になっている。特に大規模なSMPシステムでは、ある一つのロック変数を集中して取り合う事象は少なくなく、この場合、ある一つのCPU以外は全くの無駄なことをしていることになり、システム運用に掛る電力コストが大きな問題となる。
また、マルチスレッド処理方式を採用したプロセッサコアでは、あるスレッド処理部分でこのスピンループが発生していると、実質の仕事のないスピンループ処理による空転がプロセッサコアの他のスレッド処理の進行を阻害するという悪影響を与えてしまう。
同様の問題はロック変数を用いる他の処理、たとえばバリア同期などのプロセッサ間同期処理(同期待ち)など一般的なプロセッサ間同期やI/O同期や、アイドルループなどでも生じる。
なお、マルチプロセッサシステムにおける従来の排他制御や同期制御技術としては、特許文献1、特許文献2および特許文献3が知られている。
すなわち、特許文献1では、主記憶上に共有変数を格納して当該主記憶上で集中監視することで排他制御を実現する機構が開示されている。近年のようなキャッシュメモリを持つプロセッサでは、キャッシュ内での書き換えが主記憶上に即座に反映されるわけではない。特にライトバックキャッシュ方式においては、書き換え事象が反映されるにはかなりの時間が掛るのが普通である。また、ライトスルーキャッシュであっても現代のプロセッサではメモリレイテンシが非常に長く、反映ロスが長くなり性能が低下する。
したがって、特許文献1のように主記憶メモリを集中監視するだけでは、上述のようなスピンループの諸問題は解消されず、メモリレイテンシが影響しないキャッシュメモリ内での解決方法が望まれている。
特許文献2では、複数のCPUで共有されるシステムバスの他に、CPU間の排他制御のためのアクセス制御信号線(ピン)を設けてCPU間の共有メモリに対する排他制御を実現しようとする技術が開示されている。近年ではプロセッサ間接続(たとえばLSIの入出力ピン数)はコストが高く、1ピンを排他制御専用に使うよりも、むしろデータ線として利用したほうが性能向上に有効な状況であり、さもなければ、1ピンでも削減したほうがCPUの製作費の削減に寄与することができる。したがってピン増加なしにCPU間の排他制御を実現する方法が求められる。
特許文献3では、主従関係があるプロセッサとコプロセッサとの間での同期制御を行うための同期制御回路が開示されているが、SMP(対称型マルチプロセッサ)やcc−NUMAのように、個々のプロセッサが対等に共有メモリを扱うシステムには適用が困難である。
すなわち、プロセッサは、コプロセッサに対して命令を発動する立場にある関係上、コプロセッサの動作状況を自発的に把握可能であるが、SMPシステムでは個々のプロセッサが他のプロセッサの動作状況に関する情報を原理的に保持していないため特許文献3の技術をスピンループの上述の問題に適用することは困難である。
本願発明はかかる事情に鑑みてなされたものである。もちろん、逆に本願発明をコプロセッサシステムに適用することは可能である。
特開平3−164964号公報 特開昭61−229150号公報 特開2002−41489号公報
本発明の目的は、複数の論理的または物理的なプロセッサ間の排他制御のためのスピンループに起因する消費電力やプロセッサ資源の無駄を削減することにある。
本発明の他の目的は、一つの物理プロセッサコアに複数のハードウェアスレッドを持ち、論理的に複数のプロセッサがあるかのように動作可能なマルチプロセッサシステムにおいて、一つの論理プロセッサのスピンループに起因する他の論理プロセッサの性能低下を防止することにある。
本発明の他の目的は、マルチプロセッサシステムにおいて、既存のプログラムからの書き換えが容易で、ソフトウェアの移行コストの低い排他制御機構の実装を実現することにある。
本発明では、メモリアクセスの排他制御のためのロック変数の書き換え事象の可能性を予見し、従来では解放待ちのためにスピンループになる部分でプロセッサまたはスレッドを停止させることで、上記課題を解決する。
すなわち、本発明では、ロック変数の書き換え事象の可能性予見を実現するために、ロード対象メモリブロックを含む範囲のメモリブロックの監視開始契機を設定する機能を持つ新規なロード命令(以下、LOAD-WITH-LOOKUP命令と記す)と、メモリブロックの監視を行う書き込み事象検出機能とを設け、LOAD-WITH-LOOKUP命令と書き込み事象検出機能の検出結果に連動してSUSPEND命令等の休止命令を実行/解除することでプロセッサの停止および再開を実現する。
すなわち、図1(b)のように、従来では、記憶装置上のロック変数[A]のロック獲得に際して、CAS[A]による獲得失敗後にLD[A]を繰り返してロック変数[A]の変化(他のプロセッサからの解放)を確認するための無駄なスピンループが実行される。
これに対して、本発明の場合には、図1(a)のように、CPU1では、CAS[A]による獲得失敗後にLOAD-WITH-LOOKUP命令を発行して、ロック変数[A]へのストア事象(他のCPU2からの解放の可能性)を監視するとともにSUPENDにて休止状態に移行し、他のCPU2からのロック変数[A]に対するストア可能性の検出を契機としてCPU1を復帰させてロック変数[A]の再獲得を試行させることが可能になり、無駄なスピンループを行わせる必要がなくなる。
すなわち、一般的には、図2のように、CPU1で、LOAD-WITH-LOOKUP命令にて、目的のロック変数[A]の監視を開始させた後、SUSPEND(休止状態)に移行し、他のCPU2からのロック変数[A]の解放のためのアクセスを検出したら、CPU1は休止状態から復帰して後続の命令実行を開始する。
また、本発明では、既存のプログラムの命令列を解析してスピンループの発生部位の予見、プロセッサの停止/再開を実現する。すなわち、既存の命令列からロック変数の書き換え事象の可能性を見つけるためのスピンループとなる命令列を見いだすステップと、従来のスピンループの代わりに当該プロセッサあるいは当該ハードウェアスレッドを停止させるステップとを実行する。
ただし、近年のプロセッサはキャッシュを構成することが当然のようになっており、そのまま主記憶を監視するのは非常に困難を伴う。従って、本発明では、キャッシュメモリ内にロック変数の書き換え事象の可能性を監視して検出する書き込み事象検出機能を備える。
すなわち、図3に示されるように、ロック変数[A]の書き換え事象の可能性を見いだす方法としては、ロック中のCPU2側からのロック変数[A]のキャッシュメモリ上における無効化を検出契機とし、CPU1側を休止状態から復帰させる。
なお、図4に示されるように、LOAD-WITH-LOOKUP命令から休止状態に移行するまでの間に、ロック変数[A]のキャッシュメモリ上での無効化(解放)が検出される可能性もある。その場合には、休止状態には移行せず、そのまま、ロック変数[A]へのアクセスを続行する。
ロック変数の書き換え可能性の検出精度が高ければ高いほど、プロセッサの使用効率が高くなる。また、不当なハングアップに陥らないよう、実際に書き換えが起こっているにもかかわらず検出できないような事態を回避するよう構成する。
また、アドレス監視をせずに従来の割り込みでの再開のみを許すサスペンド手法を使いたい状況は当然ある。したがって、サスペンド命令を使用する際にこれを選択できるように構成すると利便が良い。
既存の命令セットに対し追加命令を作成できない場合や、旧命令コードから改版することが出来ない(あるいは困難な)プログラムが存在する場合が、当然存在する。このような場合、上記命令の追加では何の恩恵を預かることもできない。したがって、これらに対しても恩恵があるべく、命令の追加をせずに解決する方法が希望される。
上述の例で見る通り、典型的なロックルーチンでは、ロックが確保できなかった場合には数十命令の実行範囲内に、メモリアクセス命令が図5のように観察される。運が悪くても図6のように観察される。
あるいはSPARC−V9 ManualのAppendix.J.6の例では、tryルーチンとloopルーチンが逆に配される(とりあえずtryして失敗したらloopで廻る)方式が紹介されている。この場合だと図7のように観察されることになる。
ここで共通するのは、ロック獲得に失敗した場合、スピンループに突入するのは、図8のように、同一アドレスへアクセスする二つの命令が近接して出てくることである。すなわち、この二つの命令の近接を検出する機能と、検出した場合に、サスペンドする機能と、cas時点で監視を開始し他系からの書き換えがあったことを認識する機能があれば、LOAD-WITH-LOOKUPとSUSPEND命令の組み合わせに近い従来の問題を改善する手法が得られる。
なお、原始的な例で示した場合であれば図9のようになるが、このように同一アドレスへのcas命令の連続に適用しても良い。また同一アドレスへのld命令の連続に適用してもよい。
なお、このようなハードウェア補助機構が期待しない動作になるケース(たとえば「セマフォ機構」でもcasを用いるからスピンループと誤認識する危険がある)があり得る。そのため、期待しない動作をなくす、或いは減らすために、期待される動作でも動作しないような状況が発生せざるを得ない。
真に改善されるためにはLOAD-WITH-LOOKUP命令を追加し、その追加した命令を用いて明示的に指示される方がより望ましいと言える。つまり、LOAD-WITH-LOOKUP命令を追加する方式と、既存の命令列を解析する方式はどちらも従来手法からは明確に改善されるが、組み合わせられるのが最も良い。
従来のスピンループの問題は本発明のLOAD-WITH-LOOKUP(llkup)命令を用いることで改善される。改善するための一例を図10に示す。すなわち、llkup命令にてロック変数[lock]をレジスタ%l0にロードするとともに当該ロック変数[lock]のストア可能性の監視を開始させ、tst命令でレジスタ%l0の内容を評価し、その内容が0で無い場合(他のプロセッサが排他権を持った状態)には、loop:に分岐しようとするが、直後の、ロック変数[lock]へのストア可能性の検出で復帰するsuspend命令が実行されるので待機状態となり、ストア可能性が検出された契機で、再び、cas命令等でロック変数[lock]へのアクセスを試行する。これにより、スピンループにおちいることなく、ロック変数[lock]の獲得のための待機が可能となる。
このように、既存のコードの書き換えが非常に少なくて済むのも本発明の大きな利点である。
本発明によれば、複数の論理的または物理的なプロセッサ間の排他制御のためのスピンループに起因する消費電力やプロセッサ資源の無駄を削減することができる。
また、一つの物理プロセッサコアに複数のハードウェアスレッドを持ち、論理的に複数のプロセッサがあるかのように動作可能なマルチプロセッサシステムにおいて、一つの論理プロセッサのスピンループに起因する他の論理プロセッサの性能低下を防止することができる。
また、マルチプロセッサシステムにおいて、既存のプログラムからの書き換えが容易で、ソフトウェアの移行コストの低い排他制御機構を実装することができる。
以下、図面を参照しながら、本発明の実施の形態について詳細に説明する。
図11は、本発明の一実施の形態である情報処理装置の制御方法を実施する情報処理装置の構成の一例を示す概念図である。
本実施の形態の情報処理装置は、複数の命令制御部10と、この命令制御部10がアクセスするデータが格納される記憶装置30と、この記憶装置30と個々の命令制御部10との間に介在し、両者間で授受されるデータを一時的に保持するとともに、記憶装置30よりも高速なデータアクセスが可能なキャッシュメモリ20を備えている。
すなわち、命令制御部10の配下に、(一次オペランド)キャッシュ等のキャッシュメモリ20、二次キャッシュあるいは主記憶などの下位メモリとしての記憶装置30が接続されている。記憶装置30は、複数の命令制御部10で共有されている。
ここで、個々の命令制御部10は命令の解釈実行と演算を担当しレジスタを持つ部分である。そして、キャッシュメモリ20に対して、メモリアクセス命令51およびアドレス51aの発行、記憶装置30に格納すべきストアデータ52の出力、記憶装置30からキャッシュメモリ20を介して読み出したフェッチデータ53の入力を行う機能を備えている。
また、キャッシュメモリ20と記憶装置30の間では、キャッシュメモリ20から記憶装置30に発行されるデータ要求51b、キャッシュメモリ20上のデータを記憶装置30に反映させるためのライトバック/コピーバックデータ52a、記憶装置30からキャッシュメモリ20に読み込まれるデータ53a、等の情報の授受が行われる。
本実施の形態の場合、メモリアクセス命令51として、後述のようなLOAD-WITH-LOOKUP命令54(以下、llkup命令54と記す)、キャッシュメモリ20内の特定データの無効化を指示する無効化要求55、等の制御インターフェイスを備えている。
すなわち、本実施の形態の命令制御部10における命令セット12には、llkup命令54が含まれている。さらに、命令セット12には、後述のストア可能性検出信号56の検出を契機に休止状態から復帰する特定SUSPEND命令12aと、従来の割り込みでの再開のみを許す通常SUSPEND命令12bを備えていて、必要に応じて使い分けることができる構成となっている。
キャッシュメモリ20には、図12に例示されるように、命令制御部10と記憶装置30との間で授受されるデータが、たとえばライン等の単位で一時的に格納されるキャッシュデータ部21と、このキャッシュデータ部21内に格納されたデータを管理するためのキャッシュタグ部22が設けられている。キャッシュタグ部22は、キャッシュデータ部21におけるライン等のデータ格納単位毎に、そのステータス22a、記憶装置30におけるアドレス22c、その他の管理情報22dが設定されている。
さらに、本実施の形態の場合、キャッシュメモリ20には、ストア監視論理40が設けられている。このストア監視論理40は、命令制御部10からの上述のllkup命令54の受領を契機に、当該llkup命令54の記憶装置30のアクセス領域に対応したキャッシュメモリ20内のデータが、当該llkup命令54を発行した命令制御部10とは別の命令制御部10によって書き換えられたか否かを監視し、ストア可能性検出信号56を命令制御部10に応答する機能を備えている。
一次キャッシュ等のキャッシュメモリ20は本実施の形態においてはオペランドキャッシュ部分が重要であり、キャッシュ構成がユニファイドであるかセパレート、つまり命令キャッシュとオペランドキャッシュ(データキャッシュ)が分割された構成、であるかに関わらず、ロード命令(フェッチ命令)などの対象メモリアクセスを扱えるキャッシュであることを意味する。また、キャッシュメモリ20はライトバック(ストアイン)キャッシュであってもライトスルー(ストアスルー)であってもよいが、ここではライトバックキャッシュであるとして説明する。
本実施の形態の動作原理を説明する。SMPあるいはcc−NUMAなどの共有メモリ型システムにおいては、プロセッサ(命令制御部10)間の共有メモリの取り扱いに際し不具合が起こらないよう、ストアオーダに制限を加え、またキャッシュコヒーレントを保つ。
ストアオーダについては、たとえば、サンマイクロシステムズ社のSPARC V9ではTSOと呼ばれる順序規定があり(他の順序規定もあるがこれしか実際には使われない)、端的には、ストアはストアした順番通りに他の観察者から観察されるように動く規定(それだけではないが)である。
この状況でキャッシュコヒーレントを保つ場合、ストアを行う時点でそのストアを行うプロセッサが、そのストア対象メモリ域に対して排他権(書き込み権と言い換えても良い。自分のプロセッサ以外がキャッシュ上にそのメモリ域を保持していない状態、したがってこれでストアを行えばストア順序規定を守ることができる)を獲得する必要がある。
そのために、キャッシュタグ部22のステータス22aにはMCI(Modified、Clean、Invalid),MESI(Modified、Exclusive、Sharable、Invalid)やMOESI(Modified、Owned、Exclusive、Sharable、Invalid)等のキャッシュ状態を保持する構成が知られている。本質的には「共有している(C)(自分しか持っていないかも知れないので排他権を持っていないのと同値)」「排他権を持っている(M)」「持っていない(I)」の3状態であり、MESI,MOESIはこれに対して付加的な状態を持たせているだけであるので、以降MCIで説明する。MESI,MOESIについてもE,Mが排他権を持つ状態であり、O,Sは共有状態であるとして、MCIと同じに扱える。
キャッシュコヒーレントを保つために、ストアを実行する際に実行プロセッサのキャッシュメモリ20では、当該メモリ域へ排他権を獲得する。獲得された時点では、他のプロセッサの当該メモリ域は「持っていない(invalid)」状態になる。
したがって、メモリの書き換え事象(ストア)が起こるときには、書き換え事象を起こすキャッシュメモリ20以外には、そのメモリ域を持っていた場合には必ず当該メモリ域への保持権の放棄(無効化)が行われる。本実施の形態では、このキャッシュメモリ20の制御の仕組みを利用して、複数の命令制御部10にて共有される記憶装置30上に設定されたロック変数等のデータの更新による排他制御における当該ロック変数へのアクセス動作を制御する。
すなわち、このキャッシュメモリ20の制御の基本原理に従い、上述のように、命令制御部10とキャッシュメモリ20との間にllkup命令54(LOAD-WITH-LOOKUP命令54)を新設する。そして、このllkup命令54が実行された場合等に、(1)指定されたメモリ域へのロードを行う、(2)前項(1)に付随して自身のキャッシュメモリ20への登録(通常は共有型[C]で)を行う、(3)このメモリ域をストア監視論理40が監視するとともに、特定SUSPEND命令12aを実行して命令制御部10は休止状態に移行する、(4)llkup命令54で指定されたメモリ域が何らかの形で保持できなくなった場合にストア可能性があったと見做し、ストア可能性検出信号56がllkup命令54の発行元の命令制御部10に応答され、(5)このストア可能性検出信号56の受信を契機に命令制御部10が休止状態から復帰する、という制御動作を行う。
ストア監視論理40によるメモリ域の監視手段は、キャッシュタグ上に実現しても良いし、レジスタで実現しても良い。
キャッシュタグ上で実現する方法を図12に示す。通常、上述のように、キャッシュタグ部22はデータと対になっており、ステータス22aで示されるキャッシュ状態(前述のM,C,I等)、アドレス22cとその他の管理情報22d(特権フラグやコンテキストなど)がある。ここに、LOOKフラグ情報を設ける。すなわち、本実施の形態の場合、キャッシュタグ部22には、各データ格納単位毎に、上述のllkup命令54のためのLOOKフラグ22bが設けられている。
通常のロード実行時に起こるようなキャッシュ登録時はこのLOOKフラグ22bはセットしないようにしておき、llkup命令54が実行された場合には、(1)対応するデータをキャッシュデータ部21上に保持していた場合には、キャッシュタグ部22の当該ラインのLOOKフラグ22bをセット、(2)対応するデータをキャッシュデータ部21上に保持していなかった場合には、キャッシュタグ部22に当該ラインのデータを登録するに伴い当該ラインのLOOKフラグ22bをセットして、llkup命令54に付随するロード処理を実行する。
他のプロセッサからのストア可能性の判断は、このLOOKフラグ22bがセットされているキャッシュラインが無効になることで判断する。一般的なケースとしては、(1)キャッシュラインがリプレース対象となる、(2)他のプロセッサの排他権獲得要求などにより、自プロセッサの外から無効化要求が来る、等の事象で判断する。特に上記だけとは限らず、無効化されることはつまりキャッシュ状態(ステータス22a)がMないしC(他のキャッシュ状態方式であればS,O,E等もあり得るがとにかく保持している状態全般)から、Iに遷移することに等しいので、キャッシュタグ部22の書き換えを行う。ストア監視論理40は、この時にLOOKフラグ22bを確認して、フラグがセットされているのであれば監視状態であることを意味し、ストア可能性の検出対象であるのだから、これをもって検出と判断し、ストア可能性検出信号56をllkup命令54の発行元の命令制御部10に応答する。
なおキャッシュ方式には、ストア管理においてライトスルー/ライトバック方式、キャッシュヒット率改善のためのセットアソシアティブ方式などの連想方式や、アドレス管理の仕方(VIPT:Virtually Indexed Physically Tagged ,PIPT:Physically Indexed Physically Tagged)等いくつかの種類の方式があるが、本願においてその組み合わせの差異が影響を与えることはなく、全く同じように実現できる。
ストア監視論理40をレジスタで実現する回路構成を図13に、その動作のタイミングチヤートを図14に示す。すなわち、キャッシュタグ部22にLOOKフラグ22bを設けるかわりにレジスタ41を準備し、llkup命令54の実行によってアドレス51aをセットする。その後、無効化要求55にてキャッシュ無効化オペレーションが実行されるときに、そのアドレスと、セットされたレジスタ41の内容を比較器42で比較し、比較器42から出力される比較結果と無効化要求55との論理制御回路43による論理積の出力をストア可能性検出信号56として命令制御部10に応答する。
このようにしてllkup命令54の発行とストア可能性検出信号56の応答とを組み合わせることで、記憶装置30上の共有変数(ロック変数)の参照/更新による排他制御において、命令制御部10のスピンループを回避することができる。
より精密にはアドレス範囲をレジスタ41に設定するようにしても良い。たとえば対象フェッチサイズが4バイトのllkup命令54であれば指定されたアドレス範囲4バイトと記録すればよい。また複数のllkup命令54が実行されたらその範囲を記録する形でも良い。
ここでは簡単のため、キャッシュラインサイズをその範囲とする。キャッシュラインが64バイトであれば、llkup命令54がたとえ4バイトフェッチであっても対象アドレス範囲は64バイトと見做すことにする(複数のプロセッサで共有しないキャッシュなら全く問題ない。特に小さいアドレス範囲が意味をなすのは複数プロセッサで共有する場合である。)。
「範囲4バイト」のようにアドレス範囲を取れる方式は、図15に例示されるように、一つのキャッシュメモリ20に対して複数の(論理的)プロセッサ(命令制御部10A、命令制御部10B)が共有可能であるような構成であるときに大いに意味をなす。たとえばGBS(global buffer storage)方式、CMP(chip multi-processor)方式やハードウェアマルチスレッド方式(このときの一つのハードウェアスレッドを実行するプロセッサを論理プロセッサと呼ぶ)である。アドレス範囲を取る場合には、前述の無効化に伴うアドレスマッチ判定に加えて、共有している論理プロセッサが実行するストアによるアドレス範囲判定が加わる。もちろん、必ずしも範囲をこのように制限しておく必要はなく、キャッシュラインによるアドレスマッチ判定でも良い。精度の高い判定を行うか簡易に可能性を判定するかの違いであり、コストとのトレードオフである。
前述した通りのストア監視論理40やLOOKフラグ22b等のストア可能性検出手段を用いることで、サスペンドからの復活(レジューム)をする例を示す。そのために簡便なのは先ずサスペンド状態になる方法としてサスペンド状態へ遷移を指示するSUSPEND命令を作り、その実行をもってサスペンドする方法である。つまり、命令があれば、その命令を解釈して実行したらサスペンドを実施する。模式的には図16のようにクロック制御系(省電力制御部60)を構成し、図17のタイミングチャートのように動作させる。
すなわち、クロック供給源70から命令制御部10、キャッシュメモリ20および記憶装置30に動作クロック71を与えるクロック制御系において、命令制御部10に対する動作クロック71の供給経路に省電力制御部60を介在させる。この省電力制御部60は、命令制御部10からのサスペンド実行信号57をセット入力(SET)とし、キャッシュメモリ20のストア監視論理40からのストア可能性検出信号56をリセット入力(RST)とするフリップフロップ回路61と、フリップフロップ回路61のQ出力を論理反転回路62で論理反転された信号と動作クロック71の論理積をとって動作クロック71aとして命令制御部10に入力する論理積回路63で構成されている。
これにより、図17のタイミングチャートのように、サスペンドする時点で実行制御部のクロック供給を停止し、ストア可能性があった時点でクロック供給を復帰することができる。また既知のサスペンド/レジューム手法を組み合わせることが可能である。
ところで、SUSPEND命令とストア可能性検出信号56の実行の順序関係は、保証されていないため、1.llkup命令の実行〜監視開始、2.suspend命令実行、3.ストア可能性検出、の実行順序を期待する(図3の場合)ところが、実際には、1.llkup命令の実行〜監視開始、2.ストア可能性検出、3.suspend命令実行、というように順序が逆転する(図4の場合)可能性がある。特に監視対象を複数設定すればするほど、この逆転の可能性は高くなる。したがってこれを考慮した制御が必要になる。それを示したのが図18の省電力制御部60Aおよび図19のタイミングチャートである。
この省電力制御部60Aでは、上述の図16のフリップフロップ回路61のリセット入力の経路に、llkup命令54の実行信号をセット入力(SET)とし、サスペンド実行信号57をリセット入力(RST)とするフリップフロップ回路66と、このフリップフロップ回路66のQ出力を反転する論理反転回路67と配置している。さらに、フリップフロップ回路61と論理反転回路62の間には、フリップフロップ回路61のQ出力を反転する論理反転回路64と、この論理反転回路64の出力と、SUSPENDの実行中は常に真となるSUSPEND実行中信号57aの論理積をとる論理積回路65を介在させた構成となっている。
これにより、図19(a)のように、SUSPEND実行後にストア可能性検出信号56が検出された通常の場合には、SUSPEND実行中は、命令制御部10に入力される動作クロック71aは停止する。一方、図19(b)のように、SUSPEND実行前にストア可能性検出信号56が検出された場合には、SUSPEND実行中は、命令制御部10に入力される動作クロック71aは停止せず、命令制御部10は動作し続ける。
また、省電力制御部60Aにおいて、フリップフロップ回路61のQ出力は、必要に応じて、SUSPEND実行前にストア可能性検出信号56が検出された事象を検知するための早期ストア検出信号68として使用することができる。
このように、llkup命令54の発行を契機として、排他制御のための共有変数の、他の命令制御部10のアクセスによる変化をストア監視論理40で監視を開始させるとともに、特定SUSPEND命令12aにて命令制御部10をSUSPEND(動作クロック停止)状態に移行させ、共有変数の変化が予想されたならばストア可能性検出信号56の省電力制御部60への入力を契機として命令制御部10を復帰させることで、従来のスピンループのような命令制御部10の空転待ちによる消費電力の無駄が回避される。
上述の説明では、省電力の観点からの本実施の形態の効用を説明したが、一つの物理チップ内に複数の論理プロセッサを実装した構成では、個々の論理プロセッサの空転待ちは、ハードウェアを共有する他の論理プロセッサの停止を意味し、従って、空転待ちになるプロセッサを的確に休止させる本実施の形態の技術の適用は、省電力の観点だけでなく個々の論理プロセッサの処理能力(プロセッサ資源)の有効利用にも寄与できる。
すなわち、一つの物理チップ内に複数の論理プロセッサを実装したかのように見せかけることで処理性能の向上を図るハードウェアマルチスレッドに対応したプロセッサに応用した場合には、省電力だけでなく、プロセッサの処理能力(プロセッサ資源)の有効利用を実現できる。
たとえばVMT(vertical multi-thread)方式であれば時分割でスレッド処理を行うが、本実施の形態の場合には、排他制御のための空転待ちの代わりにスレッド(論理プロセッサ)をsuspendさせるので、suspendしたならば、そのスレッドの命令処理は休止すれば良く、他のスレッド処理を優先して実行できる。SMT(simultaneous multi-thread)でも同様である。
llkup/suspend命令がない場合、あるいは使わずにスピンループなどを検出して同種の作用を実現することについて述べる。前述においてllkup命令54によってLOOKフラグ22bを設定するかわりに、スピンループの検出結果で動作させれば良いので、フラグ設定以降については割愛する。
スピンループの検出の仕方であるが、上述の図5、図6、図7の説明で述べたように、スピンループになる状況に特徴的なキャッシュアクセス(命令列)を検出する。その特徴は図5、図6、図7で示した通りであり、その特徴を捉えるためのスピンループ判別部80の一例を図20に示す。
すなわち、スピンループ判別部80は、メモリアクセス命令51に随伴するアドレス51aが保持されるレジスタ81、命令制御部10内のデコード部11から出力されるロード命令検出信号58aおよびコンペア&スワップ命令検出信号58cの論理和をとる論理和回路82、レジスタ81の保持内容と、アドレス51aを比較する比較器83、比較器83の出力と論理和回路82の出力の論理積をとり、スピン検出信号87aとして出力する論理積回路87、比較器83の出力を反転させる論理反転回路84、論理反転回路84の出力と論理和回路82の出力の論理積をとる論理積回路85、論理積回路85の出力とデコード部11のストア命令検出信号58bの論理和をとり、スピン解除信号86aとして出力する論理和回路86と、スピン検出信号87aでカウトアップされ、スピン解除信号86aでリセットされるカウンタ88を備えている。
そして、図21のタイミングチヤートのように、コンペア&スワップ命令検出信号58cの検出タイミングでレジスタ81にアドレス51aが取り込まれ、ロード命令検出信号58aの検出タイミングでレジスタ81の内容と当該ロード命令に随伴するアドレス51aが一致するとスピン検出信号87aが出力され、ストア命令検出信号58bの検出、あるいは、ロード命令検出信号58aまたはコンペア&スワップ命令検出信号58cの検出時に、アドレス51aとレジスタ81の保持内容が不一致の場合に、スピン解除信号86aが出力される。
そして、スピン検出信号87aをもってカウンタ88をカウントアップし、一定値(1でもよい)に到達したら、その時点のld/cas命令をllkup命令相当と見做す。これより大きい一定値まで(継続し)カウントに到達したらその時点のld/cas命令の完了をもってsuspend相当に扱う。スピン解除信号86aを検出したらカウンタ88はリセットすることで、誤検出を押さえる。また、ひとたびサスペンドに遷移したらカウンタ88をリセットしておく。さもないとサスペンドから復帰したら即座に次のサスペンド状態に遷移しようとしてしまう。
このようなスピンループ判別部80を設けることで、llkup命令54の実装の有無に関わらずスピンループの検出することができる。また、suspend命令の有無に関わらず省電力の制御などを実現できる。
以上で示した通り、本発明の実施の形態によれば、スピンループの無駄な空転をなくすことで、プロセッサコアの他のスレッド処理への悪影響をなくすことができる。また、ロック獲得待ちの間、プロセッサコアを停止させ、空転待ち等の無駄な動作を低減させることで電力コストを低減でき、動作コストを抑えられる。さらに、LOAD-WITH-LOOKUP命令を備えたプロセッサにソフトウェアを移行させる作業等において、既存命令コードによるプログラムからの書き換えが簡単であり、ソフトウェアの移行コストを抑制することができる。
すなわち、プロセッサの無駄な動作コストを抑えられ、著しい性能向上を達成できる。また、いかなる情報処理装置にも適用可能であり、その適用可能範囲は広い。さらに、LOAD-WITH-LOOKUP命令による既存命令コードからの書き換えも簡単であり、その点でもまた有用である。
(付記1)
キャッシュメモリを介して記憶装置の情報にアクセスするプロセッサの制御方法であって、
前記記憶装置の目的のアドレスまたはアドレス範囲に格納された情報を読み出すとともに、前記アドレスまたはアドレス範囲への他のプロセッサからの更新アクセスの有無の監視を開始させる第1ステップと、
前記プロセッサを休止状態に移行させる第2ステップと、
前記更新アクセスの発生を契機として前記休止状態を解除する第3ステップと、
を含むことを特徴とするプロセッサの制御方法。
(付記2)
前記第1ステップと前記第2ステップとの間に前記更新アクセスの発生が検出された場合には、前記第2ステップの実行を抑止することを特徴とする付記1記載のプロセッサの制御方法。
(付記3)
前記キャッシュメモリを管理するキャッシュ管理情報の一部に、前記記憶装置の前記特定記憶領域に対応した前記キャッシュメモリ上の記憶領域を識別する識別情報を設け、前記第1ステップでアクセスされた前記記憶装置の前記アドレスまたはアドレス範囲に対応した前記キャッシュメモリ上の前記記憶領域に前記識別情報を付与して監視対象とし、前記第3ステップでは、前記識別情報が付与された前記キャッシュメモリ上の前記記憶領域の情報の無効化または書き換えが発生したことを契機として前記休止状態を解除することを特徴とする付記1記載のプロセッサの制御方法。
(付記4)
前記第2ステップでは、前記プロセッサへのクロック供給を停止し、前記第3ステップでは、前記クロック供給を再開することを特徴とする付記1記載のプロセッサの制御方法。
(付記5)
キャッシュメモリを介して記憶装置の情報にアクセスするプロセッサの制御方法であって、
前記記憶装置の目的のアドレスまたはアドレス範囲に格納された情報の読み出しおよび更新を一括して行う第1命令および前記アドレスまたはアドレス範囲の情報の読み出しを行う第2命令の少なくとも一方からなる命令列を検出する第1ステップと、
前記命令列の検出を契機に、前記アドレスまたはアドレス範囲への他のプロセッサからの更新アクセスの有無の監視を開始させるとともに、前記プロセッサを休止状態に移行させる第2ステップと、
前記アドレスまたはアドレス範囲への他のプロセッサからの前記更新アクセスの発生を契機として前記休止状態を解除する第3ステップと、
を含むことを特徴とするプロセッサの制御方法。
(付記6)
前記キャッシュメモリを管理するキャッシュ管理情報の一部に、前記記憶装置の前記特定記憶領域に対応した前記キャッシュメモリ上の記憶領域を識別する識別情報を設け、前記第1ステップでアクセスされた前記記憶装置の前記アドレスまたはアドレス範囲に対応した前記キャッシュメモリ上の前記記憶領域に前記識別情報を付与して監視対象とし、前記第3ステップでは、前記識別情報が付与された前記キャッシュメモリ上の前記記憶領域の情報の無効化または書き換えが発生したことを契機として前記休止状態を解除することを特徴とする付記5記載のプロセッサの制御方法。
(付記7)
前記第2ステップでは、前記プロセッサへのクロック供給を停止し、前記第3ステップでは、前記クロック供給を再開することを特徴とする付記5記載のプロセッサの制御方法。
(付記8)
命令制御部と、前記命令制御部と記憶装置との間に介在するキャッシュメモリと、前記記憶装置から前記命令制御部への情報の読み出しを行うロード命令と、前記ロード命令によるアクセス対象領域を含む前記記憶装置上の特定記憶領域の監視開始契機を設定する監視契機設定機能と、を含むことを特徴とする情報処理装置。
(付記9)
命令制御部と、前記命令制御部と記憶装置との間に介在するキャッシュメモリと、前記記憶装置から前記命令制御部への情報の読み出しを行うロード命令と、前記ロード命令によるアクセス対象領域を含む前記記憶装置上の特定記憶領域を監視し前記特定記憶領域への情報の書き込みが生じる可能性を検出する書き込み事象検出機能と、を含むことを特徴とする情報処理装置。
(付記10)
前記キャッシュメモリを管理するキャッシュ管理情報の一部に、前記記憶装置の前記特定記憶領域に対応した前記キャッシュメモリ上の記憶領域を識別する識別情報を備え、前記識別情報が付与された前記キャッシュメモリ上の前記記憶領域を前記書き込み事象検出機能による監視対象とすることを特徴とする付記9記載の情報処理装置。
(付記11)
前記書き込み事象検出機能は、少なくとも一つのレジスタを備え、前記レジスタに前記特定記憶領域内を指す監視アドレスを設定し、前記監視アドレスと、全キャッシュメモリへのアクセスアドレスとを比較することで、前記特定記憶領域の監視を行うことを特徴とする付記9記載の情報処理装置。
(付記12)
前記キャッシュメモリ上の前記特定記憶領域に対応して格納された情報の無効化指示または前記情報の書き換え指示が発生した場合に、前記特定記憶領域へ書き込みが生じる可能性有りと判定することを特徴とする付記9から付記11のいずれか1項記載の情報処理装置。
(付記13)
命令制御部と、前記命令制御部と記憶装置との間に介在するキャッシュメモリと、前記記憶装置から前記命令制御部への情報の読み出しを行うロード命令と、前記命令制御部を休止状態に移行させるとともに前記ロード命令によるアクセス対象領域を含む前記記憶装置上の特定記憶領域への前記情報の書き込み可能性の検出を契機として前記休止状態を解除する休止命令と、を含むことを特徴とする情報処理装置。
(付記14)
前記休止命令による前記休止状態への移行および前記休止状態の解除に同期して、前記命令制御部に対するクロック供給停止およびクロック供給再開を行うクロック供給制御機能をさらに含むことを特徴とする付記13記載の情報処理装置。
(付記15)
共有メモリ上の特定領域の特定情報の書き換えによって、前記共有メモリに対する複数の命令制御部のアクセスの排他制御を行う排他制御機構を備えた情報処理装置であって、
一つの前記命令制御部が他の前記命令制御部による前記特定情報の書き換え契機を待つ間に当該命令制御部に対するクロック供給を停止するクロック供給制御機能を含むことを特徴とする情報処理装置。
(付記16)
論理的または物理的な複数の命令制御部と、前記命令制御部と記憶装置との間に介在し、複数の前記命令制御部にて共有されるキャッシュメモリと、一つの前記命令制御部による前記記憶装置の特定記憶領域への情報の書き込みが行われたことを他の前記命令制御部に通知する書き込み事象検出機能と、を含むことを特徴とする情報処理装置。
(付記17)
個々の前記命令制御部は、当該命令制御部を休止状態に移行させ、前記書き込み事象検出機能からの通知を契機として前記休止状態を解除する休止命令を備えたことを特徴とする付記16記載の情報処理装置。
(付記18)
キャッシュメモリを介して記憶装置にアクセスし前記記憶装置からの情報の読み出しを行うロード命令と、前記ロード命令によるアクセス対象領域を含む前記記憶装置の特定記憶領域の書き換えの有無の監視開始契機を設定する特定命令とを含む命令セットを具備したことを特徴とするプロセッサ。
(付記19)
キャッシュメモリを介して記憶装置の情報にアクセスする情報処理装置であって、
前記記憶装置の目的のアドレスまたはアドレス範囲に格納された情報の読み出しおよび更新を一括して行う第1命令、および前記アドレスまたはアドレス範囲の情報の読み出しを行う第2命令の少なくとも一方からなる命令列を検出する第1機能と、
前記命令列の検出を契機に、前記アドレスまたはアドレス範囲への他の情報処理装置からの更新アクセスの有無の監視を行うとともに前記情報処理装置を休止状態に移行させる第2機能と、
前記アドレスまたはアドレス範囲への他の情報処理装置からの前記更新アクセスの発生を契機として前記休止状態を解除する第3機能と、
を含むことを特徴とする情報処理装置。
(付記20)
命令制御部と記憶装置との間に介在し、前記記憶装置と前記命令制御部との間で授受される情報が一時的に格納されるキャッシュメモリであって、
前記記憶装置から前記命令制御へ前記情報の読み出しを行うロード命令によるアクセス対象領域を含む前記記憶装置上の特定記憶領域における前記情報の書き込みが生じる可能性を検出する書き込み事象検出機能を備えたことを特徴とするキャッシュメモリ。
(付記21)
前記キャッシュメモリに一時的に格納された情報を管理するキャッシュ管理情報の一部に、前記記憶装置の前記特定記憶領域に対応した前記キャッシュメモリ上の記憶領域を識別する識別情報を備え、前記識別情報が付与された前記キャッシュメモリ上の前記記憶領域を前記書き込み事象検出機能による監視対象とすることを特徴とする付記20記載のキャッシュメモリ。
(付記22)
前記書き込み事象検出機能は、少なくとも一つのレジスタを備え、前記レジスタに前記特定記憶領域内を指す監視アドレスを設定し、前記監視アドレスと、全キャッシュメモリへのアクセスアドレスとを比較することで、前記特定記憶領域の監視を行うことを特徴とする付記21記載のキャッシュメモリ。
(付記23)
キャッシュメモリを持つ情報処理装置上に実装される、(主記憶から値を読み出す)ロード命令を持つ命令セットアーキテクチャにおいて、ロード対象メモリブロックを含む範囲のメモリブロックを監視開始する機能を持つ方式およびアーキテクチャ。
(付記24)
ロード対象メモリブロックを含む範囲のメモリブロックを監視開始する機能を持つロード命令(LOAD-WITH-LOOKUP命令)を持つ方式およびアーキテクチャ。
(付記25)
付記24記載の該メモリブロック監視範囲に(他の論理プロセッサやI/Oデバイスなどからの)ストア事象が生じた可能性を検出する手段を持つ処理方式および情報処理装置。
(付記26)
付記25記載の検出手段に関して、特にキャッシュタグ上に監視中であることを識別するフラグを設け、該フラグが設定されているキャッシュラインについて監視対象とする方式および装置。
(付記27)
付記25記載の検出手段に関して、特にレジスタを一つ以上設けて監視アドレスを設定し、この設定アドレスに基づいてアドレス範囲チェックすることで監視対象とする方式および装置。
(付記28)
キャッシュメモリを持つ処理方式および装置で、付記25記載の該検出手段として、キャッシュの監視対象アドレスに対して、キャッシュにデータを保持し、キャッシュライン無効化指示(Buffer InvalidateまたはCopyback and Invalidate)が来た場合にストア可能性が生じたと判断する方式および装置。
(付記29)
キャッシュメモリを持つ処理方式および装置で、付記25記載の該検出手段として、キャッシュの監視対象アドレスに対して、キャッシュにデータを保持し、リプレースが発生した場合に、ストア可能性が生じたと判断する方式および装置。
(付記30)
論理プロセッサ(論理CPU)を休止させる命令(以下SUSPEND 命令と呼ぶ)を備え、該休止から回復する手段として、付記25記載のストア可能性検出手段により、回復可能とする方式、アーキテクチャ。
(付記31)
付記30において、アドレス監視が不要な一時休止を行う場合のために、該SUSPEND命令にアドレス監視不要であることを指示する手段を設けることで、アドレス監視による再開をしないようにする方式および装置。
(付記32)
suspendするよりも前にストア可能性を検出した場合にはsuspend遷移後すぐ回復するか、もしくはsuspendをno−operation扱いで動作する方式および装置。
(付記33)
共有キャッシュ(GBS方式)、一つの物理チップに複数のプロセッサコアが含まれるもの(CMP方式)、一つの物理プロセッサコアに複数のハードウェアスレッド(ストランド)を持ち論理的に複数のプロセッサがあるように動作可能なもの(MT方式、HMT,SMT,VMTなどの複数の実装がある)のように、一つのキャッシュを複数の論理プロセッサで共有可能な構成において、ある論理プロセッサが該共有キャッシュの付記24記載の該メモリブロック監視範囲に書き込みを行った場合を検出する機構を持つ付記25記載のストア可能性検出手段。
(付記34)
付記23記載の方式および装置において、付記24記載のようなLOAD-WITH-LOOKUP/SUSPEND命令のかわりに(あっても良いが)、同一アドレスブロックを操作するfetch & store命令(cas命令など、メモリからのロードとメモリへのストアをアトミックに行う命令)とload命令の組を、該当監視/休止するものと見做して動作する方式および装置。
(付記35)
付記23記載の方式および装置において、付記30記載のSUSPEND命令のかわりに(あっても良いが)、付記34記載の組のfetch & store命令の実行をLOAD-WITH-LOOKUP相当と見做す方式および装置。
(付記36)
付記23記載の方式および装置において、付記30記載のSUSPEND命令のかわりに(あっても良いが)、付記34記載の組のload命令の実行をSUSPEND相当と見做す方式および装置。
(付記37)
付記23記載の方式および装置において、付記24記載のようなLOAD-WITH-LOOKUP/SUSPEND命令のかわりに(あっても良いが)、同一アドレスブロックを操作する複数の近接したfetch & store命令(cas命令など)がメモリブロックの監視/休止に該当するものと見做して動作する方式および装置。
(付記38)
付記23記載の方式および装置において、付記30記載のSUSPEND命令のかわりに(あっても良いが)、付記37記載の組の1つめのfetch & store命令の実行をLOAD-WITH-LOOKUP相当と見做す方式および装置。
(付記39)
付記23記載の方式および装置において、付記30記載のSUSPEND命令のかわりに(あっても良いが)、付記37記載の組の2つめのfetch & store命令の実行をSUSPEND相当と見做す方式および装置。
(a)および(b)は、本発明の情報処理装置の制御方法と従来技術とを比較対照した説明図である。 本発明の一実施の形態である情報処理装置の作用の一例を示す説明図である。 本発明の一実施の形態である情報処理装置の作用の一例を示す説明図である。 本発明の一実施の形態である情報処理装置の作用の一例を示す説明図である。 本発明の情報処理装置の制御方法で取り扱う命令列の一例を示す説明図である。 本発明の情報処理装置の制御方法で取り扱う命令列の一例を示す説明図である。 本発明の情報処理装置の制御方法で取り扱う命令列の一例を示す説明図である。 本発明の情報処理装置の制御方法で取り扱う命令列の一例を示す説明図である。 本発明の情報処理装置の制御方法で取り扱う命令列の一例を示す説明図である。 本発明の情報処理装置に備えられたLOAD-WITH-LOOKUP命令の使用例を含む命令列の説明図である。 本発明の一実施の形態である情報処理装置の制御方法を実施する情報処理装置の構成の一例を示す概念図である。 図11の情報処理装置の構成の一部をより詳細に例示した概念図である。 図11の情報処理装置に備えられたストア監視論理の構成の一例を示す回路図である。 図13のストア監視論理の作用を示すタイミングチャートである。 本発明の一実施の形態である情報処理装置の変形例を示す概念図である。 本発明の一実施の形態である情報処理装置に備えられた省電力制御部の構成の一例を示す回路図である。 図16の省電力制御部の動作を示すタイミングチャートである。 本発明の一実施の形態である情報処理装置に備えられた省電力制御部の構成の変形例を示す回路図である。 (a)および(b)は、図18の省電力制御部の動作を示すタイミングチャートである。 本発明の一実施の形態である情報処理装置に備えられたスピンループ判別部の構成の一例を示す回路図である。 図20のスピンループ判別部の動作を示すタイミングチャートである。 参考技術の排他制御における命令列を示す説明図である。 参考技術の排他制御における命令列を示す説明図である。
符号の説明
10 命令制御部
10A 命令制御部
10B 命令制御部
11 デコード部
12 命令セット
20 キャッシュメモリ
21 キャッシュデータ部
22 キャッシュタグ部
22a ステータス
22b LOOKフラグ
22c アドレス
22d その他の管理情報
30 記憶装置
40 ストア監視論理
41 レジスタ
42 比較器
43 論理制御回路
51 メモリアクセス命令
51a アドレス
51b データ要求
52 ストアデータ
52a ライトバック/コピーバックデータ
53 フェッチデータ
53a データ
54 LOAD-WITH-LOOKUP命令
55 無効化要求
56 ストア可能性検出信号
57 サスペンド実行信号
57a SUSPEND実行中信号
58a ロード命令検出信号
58b ストア命令検出信号
58c コンペア&スワップ命令検出信号
60 省電力制御部
60A 省電力制御部
61 フリップフロップ回路
62 論理反転回路
63 論理積回路
64 論理反転回路
65 論理積回路
66 フリップフロップ回路
67 論理反転回路
68 早期ストア検出信号
70 クロック供給源
71 動作クロック
71a 動作クロック
80 スピンループ判別部
81 レジスタ
82 論理和回路
83 比較器
84 論理反転回路
85 論理積回路
86 論理和回路
86a スピン解除信号
87 論理積回路
87a スピン検出信号
88 カウンタ

Claims (10)

  1. キャッシュメモリを介して記憶装置の情報にアクセスするプロセッサの制御方法であって、
    前記記憶装置の目的のアドレスまたはアドレス範囲に格納された情報を読み出すとともに、前記アドレスまたはアドレス範囲への他のプロセッサからの更新アクセスの有無の監視を開始させる第1ステップと、
    前記プロセッサを休止状態に移行させる第2ステップと、
    前記更新アクセスの発生を契機として前記休止状態を解除する第3ステップと、
    を含むことを特徴とするプロセッサの制御方法。
  2. キャッシュメモリを介して記憶装置の情報にアクセスするプロセッサの制御方法であって、
    前記記憶装置の目的のアドレスまたはアドレス範囲に格納された情報の読み出しおよび更新を一括して行う第1命令および前記アドレスまたはアドレス範囲の情報の読み出しを行う第2命令の少なくとも一方からなる命令列を検出する第1ステップと、
    前記命令列の検出を契機に、前記アドレスまたはアドレス範囲への他のプロセッサからの更新アクセスの有無の監視を開始させるとともに、前記プロセッサを休止状態に移行させる第2ステップと、
    前記アドレスまたはアドレス範囲への他のプロセッサからの前記更新アクセスの発生を契機として前記休止状態を解除する第3ステップと、
    を含むことを特徴とするプロセッサの制御方法。
  3. 命令制御部と、前記命令制御部と記憶装置との間に介在するキャッシュメモリと、前記記憶装置から前記命令制御部への情報の読み出しを行うロード命令と、前記ロード命令によるアクセス対象領域を含む前記記憶装置上の特定記憶領域の監視開始契機を設定する監視契機設定機能と、を含むことを特徴とする情報処理装置。
  4. 命令制御部と、前記命令制御部と記憶装置との間に介在するキャッシュメモリと、前記記憶装置から前記命令制御部への情報の読み出しを行うロード命令と、前記ロード命令によるアクセス対象領域を含む前記記憶装置上の特定記憶領域を監視し前記特定記憶領域への情報の書き込みが生じる可能性を検出する書き込み事象検出機能と、を含むことを特徴とする情報処理装置。
  5. 命令制御部と、前記命令制御部と記憶装置との間に介在するキャッシュメモリと、前記記憶装置から前記命令制御部への情報の読み出しを行うロード命令と、前記命令制御部を休止状態に移行させるとともに前記ロード命令によるアクセス対象領域を含む前記記憶装置上の特定記憶領域への前記情報の書き込み可能性の検出を契機として前記休止状態を解除する休止命令と、を含むことを特徴とする情報処理装置。
  6. 共有メモリ上の特定領域の特定情報の書き換えによって、前記共有メモリに対する複数の命令制御部のアクセスの排他制御を行う排他制御機構を備えた情報処理装置であって、
    一つの前記命令制御部が他の前記命令制御部による前記特定情報の書き換え契機を待つ間に当該命令制御部に対するクロック供給を停止するクロック供給制御機能を含むことを特徴とする情報処理装置。
  7. 論理的または物理的な複数の命令制御部と、前記命令制御部と記憶装置との間に介在し、複数の前記命令制御部にて共有されるキャッシュメモリと、一つの前記命令制御部による前記記憶装置の特定記憶領域への情報の書き込みが行われたことを他の前記命令制御部に通知する書き込み事象検出機能と、を含むことを特徴とする情報処理装置。
  8. キャッシュメモリを介して記憶装置にアクセスし前記記憶装置からの情報の読み出しを行うロード命令と、前記ロード命令によるアクセス対象領域を含む前記記憶装置の特定記憶領域の書き換えの有無の監視開始契機を設定する特定命令とを含む命令セットを具備したことを特徴とするプロセッサ。
  9. キャッシュメモリを介して記憶装置の情報にアクセスする情報処理装置であって、
    前記記憶装置の目的のアドレスまたはアドレス範囲に格納された情報の読み出しおよび更新を一括して行う第1命令、および前記アドレスまたはアドレス範囲の情報の読み出しを行う第2命令の少なくとも一方からなる命令列を検出する第1機能と、
    前記命令列の検出を契機に、前記アドレスまたはアドレス範囲への他の情報処理装置からの更新アクセスの有無の監視を行うとともに前記情報処理装置を休止状態に移行させる第2機能と、
    前記アドレスまたはアドレス範囲への他の情報処理装置からの前記更新アクセスの発生を契機として前記休止状態を解除する第3機能と、
    を含むことを特徴とする情報処理装置。
  10. 命令制御部と記憶装置との間に介在し、前記記憶装置と前記命令制御部との間で授受される情報が一時的に格納されるキャッシュメモリであって、
    前記記憶装置から前記命令制御へ前記情報の読み出しを行うロード命令によるアクセス対象領域を含む前記記憶装置上の特定記憶領域における前記情報の書き込みが生じる可能性を検出する書き込み事象検出機能を備えたことを特徴とするキャッシュメモリ。
JP2004135875A 2004-04-30 2004-04-30 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ Expired - Fee Related JP4376692B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004135875A JP4376692B2 (ja) 2004-04-30 2004-04-30 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
US10/937,253 US7853756B2 (en) 2004-04-30 2004-09-10 Information processing device, processor, processor control method, information processing device control method and cache memory
EP04255531A EP1594059A3 (en) 2004-04-30 2004-09-13 Information processing devices and control methods therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004135875A JP4376692B2 (ja) 2004-04-30 2004-04-30 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ

Publications (2)

Publication Number Publication Date
JP2005316854A true JP2005316854A (ja) 2005-11-10
JP4376692B2 JP4376692B2 (ja) 2009-12-02

Family

ID=34930647

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004135875A Expired - Fee Related JP4376692B2 (ja) 2004-04-30 2004-04-30 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ

Country Status (3)

Country Link
US (1) US7853756B2 (ja)
EP (1) EP1594059A3 (ja)
JP (1) JP4376692B2 (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010044770A (ja) * 2003-06-27 2010-02-25 Intel Corp モニタメモリ待機を用いたキューされたロック
JP2010517144A (ja) * 2007-01-23 2010-05-20 インターナショナル・ビジネス・マシーンズ・コーポレーション スピン・ロックによりロッキング公平性及びロッキング性能の両方を達成する方法及びシステム
JP2011150422A (ja) * 2010-01-19 2011-08-04 Renesas Electronics Corp データ処理装置
KR20110109608A (ko) * 2010-03-31 2011-10-06 삼성전자주식회사 다중 코어에서 동적으로 부하를 분배하는 장치 및 방법
KR20110114264A (ko) * 2010-04-13 2011-10-19 삼성전자주식회사 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법
JP2012527042A (ja) * 2009-05-13 2012-11-01 アップル インコーポレイテッド 電力管理型ロック最適化
JP2012531681A (ja) * 2009-12-18 2012-12-10 インテル・コーポレーション プロセッサの待機状態をイネーブルする命令
US8607241B2 (en) 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
JP2015148890A (ja) * 2014-02-05 2015-08-20 富士通株式会社 情報処理装置、情報処理システム、および情報処理システムの制御方法
JP2015524597A (ja) * 2012-08-06 2015-08-24 クゥアルコム・インコーポレイテッドQualcomm Incorporated リリース一貫性メモリ順序付けモデルを用いたマルチコア計算キャッシュコヒーレンシ
WO2018150524A1 (ja) * 2017-02-16 2018-08-23 オスカーテクノロジー株式会社 プロセッサシステム及びマルチプロセッサシステム

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7302543B2 (en) * 2004-06-16 2007-11-27 Nec Laboratories America, Inc. Compressed memory architecture for embedded systems
JP4287799B2 (ja) * 2004-07-29 2009-07-01 富士通株式会社 プロセッサシステムおよびスレッド切り替え制御方法
US8936057B2 (en) * 2005-08-30 2015-01-20 Rockwell Collins, Inc. Substrate lamination system and method
US7395418B1 (en) * 2005-09-22 2008-07-01 Sun Microsystems, Inc. Using a transactional execution mechanism to free up processor resources used by a busy-waiting thread
US20070271450A1 (en) * 2006-05-17 2007-11-22 Doshi Kshitij A Method and system for enhanced thread synchronization and coordination
JP5270924B2 (ja) * 2008-01-30 2013-08-21 株式会社東芝 固定長メモリブロック管理装置及び固定長メモリブロック管理装置の制御方法
CN101661438B (zh) * 2008-08-29 2013-08-28 鸿富锦精密工业(深圳)有限公司 电子装置及中央处理器寻址空间扩展方法
EP2450795A1 (en) * 2009-06-30 2012-05-09 Fujitsu Limited Computer device, parallel computer system, and synchronization program
US8713262B2 (en) 2011-09-02 2014-04-29 Nvidia Corporation Managing a spinlock indicative of exclusive access to a system resource
KR101959567B1 (ko) * 2012-05-14 2019-03-18 에스케이하이닉스 주식회사 비휘발성 메모리 장치 및 비휘발성 메모리 장치의 프로그램 방법
CN103885892A (zh) * 2012-12-20 2014-06-25 株式会社东芝 存储器控制器
WO2014118918A1 (ja) * 2013-01-30 2014-08-07 三菱電機株式会社 数値制御装置
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
US9619386B2 (en) 2015-01-29 2017-04-11 Kabushiki Kaisha Toshiba Synchronization variable monitoring device, processor, and semiconductor apparatus
US10185564B2 (en) * 2016-04-28 2019-01-22 Oracle International Corporation Method for managing software threads dependent on condition variables
US11086672B2 (en) * 2019-05-07 2021-08-10 International Business Machines Corporation Low latency management of processor core wait state

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4513367A (en) 1981-03-23 1985-04-23 International Business Machines Corporation Cache locking controls in a multiprocessor
US4780843A (en) * 1983-11-07 1988-10-25 Motorola, Inc. Wait mode power reduction system and method for data processor
JPS61229150A (ja) 1985-04-04 1986-10-13 Mitsubishi Electric Corp 共有メモリのアクセス制御方式
JPH0381859A (ja) 1989-08-25 1991-04-08 Nec Corp マルチプロセッサシステム
JPH03164964A (ja) 1989-11-24 1991-07-16 Nippon Telegr & Teleph Corp <Ntt> 情報処理装置における排他制御処理装置
JP2708943B2 (ja) * 1990-08-08 1998-02-04 三菱電機株式会社 キャッシュメモリ制御装置
JP2963257B2 (ja) 1991-11-01 1999-10-18 富士通株式会社 処理装置
JPH05225149A (ja) 1992-02-13 1993-09-03 Toshiba Corp ロック方式
JPH0659982A (ja) * 1992-08-10 1994-03-04 Hitachi Ltd 仮想記憶制御方法および装置
JP3546694B2 (ja) 1998-03-31 2004-07-28 日本電気株式会社 マルチスレッド計算機システム及びマルチスレッド実行制御方法
US6189088B1 (en) * 1999-02-03 2001-02-13 International Business Machines Corporation Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location
US6360364B1 (en) * 1999-03-17 2002-03-19 Microsoft Corporation System and method for installing an application on a portable computer
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
US6802039B1 (en) * 2000-06-30 2004-10-05 Intel Corporation Using hardware or firmware for cache tag and data ECC soft error correction
JP2002041489A (ja) 2000-07-25 2002-02-08 Mitsubishi Electric Corp 同期信号生成回路、それを用いたプロセッサシステムおよび同期信号生成方法
US6836824B1 (en) * 2000-09-26 2004-12-28 Sun Microsystems, Inc. Method and apparatus for reducing power consumption in a cache memory system
US6877088B2 (en) * 2001-08-08 2005-04-05 Sun Microsystems, Inc. Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition
WO2003040948A1 (fr) 2001-11-08 2003-05-15 Fujitsu Limited Ordinateur et procede de commande
US6986015B2 (en) * 2001-12-10 2006-01-10 Incipient, Inc. Fast path caching
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
US7363474B2 (en) 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
JP4252301B2 (ja) * 2002-12-26 2009-04-08 株式会社日立製作所 記憶システム及びそのデータバックアップ方法
US7349999B2 (en) * 2003-12-29 2008-03-25 Intel Corporation Method, system, and program for managing data read operations on network controller with offloading functions
US7120775B2 (en) * 2003-12-29 2006-10-10 Intel Corporation Inter-procedural allocation of stacked registers for a processor

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010044770A (ja) * 2003-06-27 2010-02-25 Intel Corp モニタメモリ待機を用いたキューされたロック
US9733937B2 (en) 2004-06-30 2017-08-15 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
US8607241B2 (en) 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
JP2010517144A (ja) * 2007-01-23 2010-05-20 インターナショナル・ビジネス・マシーンズ・コーポレーション スピン・ロックによりロッキング公平性及びロッキング性能の両方を達成する方法及びシステム
JP2012527042A (ja) * 2009-05-13 2012-11-01 アップル インコーポレイテッド 電力管理型ロック最適化
JP2014222520A (ja) * 2009-12-18 2014-11-27 インテル・コーポレーション プロセッサ、方法、システム、及び、プログラム
JP2012531681A (ja) * 2009-12-18 2012-12-10 インテル・コーポレーション プロセッサの待機状態をイネーブルする命令
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
KR101641541B1 (ko) 2010-03-31 2016-07-22 삼성전자주식회사 다중 코어에서 동적으로 부하를 분배하는 장치 및 방법
KR20110109608A (ko) * 2010-03-31 2011-10-06 삼성전자주식회사 다중 코어에서 동적으로 부하를 분배하는 장치 및 방법
KR20110114264A (ko) * 2010-04-13 2011-10-19 삼성전자주식회사 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법
KR101664108B1 (ko) 2010-04-13 2016-10-11 삼성전자주식회사 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법
JP2015524597A (ja) * 2012-08-06 2015-08-24 クゥアルコム・インコーポレイテッドQualcomm Incorporated リリース一貫性メモリ順序付けモデルを用いたマルチコア計算キャッシュコヒーレンシ
JP2015148890A (ja) * 2014-02-05 2015-08-20 富士通株式会社 情報処理装置、情報処理システム、および情報処理システムの制御方法
WO2018150524A1 (ja) * 2017-02-16 2018-08-23 オスカーテクノロジー株式会社 プロセッサシステム及びマルチプロセッサシステム

Also Published As

Publication number Publication date
EP1594059A3 (en) 2007-09-05
US7853756B2 (en) 2010-12-14
EP1594059A2 (en) 2005-11-09
JP4376692B2 (ja) 2009-12-02
US20050246506A1 (en) 2005-11-03

Similar Documents

Publication Publication Date Title
JP4376692B2 (ja) 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
US7500087B2 (en) Synchronization of parallel processes using speculative execution of synchronization instructions
KR101524446B1 (ko) 하드웨어 제한에 기초한 조절가능한 트랜잭션 크기를 이용하여 코드를 동적으로 최적화하는 장치, 방법 및 시스템
CN101833475B (zh) 用于执行指令原子块的方法和装置
KR100829638B1 (ko) 슬리프-웨이크 업 메커니즘을 이용한 비교 및 교환 동작
US7529914B2 (en) Method and apparatus for speculative execution of uncontended lock instructions
US10235201B2 (en) Dynamic releasing of cache lines
US9727370B2 (en) Collecting memory operand access characteristics during transactional execution
US9311178B2 (en) Salvaging hardware transactions with instructions
US9514006B1 (en) Transaction tracking within a microprocessor
JP4487744B2 (ja) マルチスレッド制御装置及び制御方法
KR20140091779A (ko) 원자 영역에서 조건부 커미트를 위한 결정 메카니즘 제공 장치, 방법, 및 시스템
EP2889769B1 (en) Processor with transactional capability and logging circuitry to report transactional operations
US10996982B2 (en) Regulating hardware speculative processing around a transaction
US20040123058A1 (en) Method and apparatus for processing a load-lock instruction using a relaxed lock protocol
US10671400B2 (en) Enhanced managed runtime environments that support deterministic record and replay
US20050283783A1 (en) Method for optimizing pipeline use in a multiprocessing system
US7975129B2 (en) Selective hardware lock disabling
Lai et al. A Cache Coherence Protocol Using Distributed Data Dependence Violation Checking in TLS

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060726

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090303

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090616

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090814

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4376692

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120918

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130918

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees