JP2009251997A - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP2009251997A
JP2009251997A JP2008100121A JP2008100121A JP2009251997A JP 2009251997 A JP2009251997 A JP 2009251997A JP 2008100121 A JP2008100121 A JP 2008100121A JP 2008100121 A JP2008100121 A JP 2008100121A JP 2009251997 A JP2009251997 A JP 2009251997A
Authority
JP
Japan
Prior art keywords
snoop
controller
processing apparatus
condition
program
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
JP2008100121A
Other languages
English (en)
Other versions
JP5255887B2 (ja
Inventor
Masashi Takada
雅士 高田
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.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
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 Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP2008100121A priority Critical patent/JP5255887B2/ja
Priority to US12/420,051 priority patent/US8166284B2/en
Priority to CNA2009101340419A priority patent/CN101556558A/zh
Publication of JP2009251997A publication Critical patent/JP2009251997A/ja
Application granted granted Critical
Publication of JP5255887B2 publication Critical patent/JP5255887B2/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】本発明の目的は、スヌープ処理を制御することで、並列処理のプログラムを効率良くデバッグするための機能を備えた情報処理装置を提供することにある。
【解決手段】スヌープ処理を制御するスヌープコントローラ(60)で中央処理装置からのスヌープ要求の受理を設定可能な構成とし、スヌープ要求の受理によりデバッグコントローラ(90)が複数の中央処理装置(10、20、30、40)を停止可能にするように構成する。
【選択図】図1

Description

本発明は、情報処理装置におけるスヌープ処理に関する。
近年、PCや組み込み機器では、プロセッサの中にCPUを複数搭載するマルチコアが主流のアーキテクチャになっている。従来、CPUの性能向上は、プロセス微細化によるスケーリングとパイプライン段数を深くして動作周波数を上げることで達成してきた。しかし、130−90nmプロセスからプロセス微細化によるスケーリングが鈍化するとともに、動作周波数を上げて動作させたときのリーク電力が非常に大きくなり、冷却コスト・電池寿命の制約からその適用が困難になった。この問題を解決する1つの技術がマルチコアである。マルチコアでは複数のCPUの並列処理により性能を向上させるため、動作周波数を上げる必要がなく消費電力を抑えることができる。
マルチコアによる並列処理を効率良く行うためには、キャッシュコヒーレンシを維持する必要がある。通常、CPUは命令やデータアクセスを高速化するためにキャッシュを備えている。CPUによるキャッシュへの書き込みは局所的に実行されるため、最新のデータはメモリにはなく、キャッシュにのみ存在することが多い。CPU間でデータは共用されることがあるが、別のCPUのキャッシュに書き込まれた最新のデータを直接参照できない場合、該当CPUへ割り込みをかけて最新データをメモリへ書き戻した後に改めてキャッシュし直す必要がある。これは大きな性能低下を招く。このため、マルチコアでは他のCPUのキャッシュに書き込まれた最新のデータを直接参照できること(=キャッシュコヒーレンシの維持)が重要になる。
キャッシュコヒーレンシを維持するためのプロトコルとしてMESIプロトコルやMOESIプロトコルが知られている。これらのプロトコルではスヌープ処理が定義されている。スヌープ処理とは、あるCPUがキャッシュを更新する際に必要に応じて他のCPUへ要求し、要求を受けたCPUは自身のキャッシュを更新してレスポンスを返す一連の処理のことである。
マルチコアによる並列処理ではCPU間でデータが共有されるため、スヌープ処理が多数実行される。これはプログラムのデバッグを非常に困難にする。通常、プログラムのデバッグにはブレークポイントを設定してCPUを停止させ、キャッシュ、レジスタ、メモリの値を確認してバグの原因を特定する。しかし、マルチコアでは、あるCPUを停止させても別のCPU上で動作するプログラムによってこれらの値が更新されてしまう。この問題を対策する従来技術として特許文献1がある。この特許文献1ではブレークポイント例外時に例外を発生させたCPUのみ停止させるか、全CPUを停止させるかを選択できる。全CPUを停止させることでキャッシュ、レジスタ、メモリの値が以降更新されることを防ぐことができる。
特開平6−332747号公報
あるCPUで発生したブレークポイント例外に基づき他のCPUを停止させる場合、数サイクルから数十サイクル程度かかるため、直ぐに停止させることはできない。このサイクル数はCPUやデバッグコントローラの実装に依存するが、動作周波数が高いほど多くのサイクル数を必要とする傾向にある。この期間にスヌープ処理が多数実行された場合、プログラムにブレークポイントを設定してあるCPUを停止させても、他のCPUからのスヌープによりキャッシュの状態が更新されてしまう。そして、そのCPUの停止後にキャッシュに誤った結果が見つかったとしても、何時の時点でバグが混入したのかの特定が難しくなる。従って、情報処理装置におけるスヌープ処理に関し、効率良くプログラムのデバッグを行うための技術を提供することが望ましい。
以上の点に鑑み、本発明は、設定されたCPU以外のスヌープ処理の実行を待たせることで、マルチコアにおける並列処理のプログラムを効率良くデバッグするための機能を備えた情報処理装置を提供することを課題とする。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば、下記のとおりである。すなわちデータアクセスを高速化するためのキャッシュを備えた複数のCPUと、前記複数のCPUからアクセス可能なデータメモリと、前記各CPUのキャッシュデータの一部を複製して記憶するキャッシュを備えたスヌープコントローラと、プログラムをデバッグするためのデバッグコントローラを備え、前記複数のCPUはキャッシュコヒーレンシを維持するためのスヌープ要求とスヌープ処理を実行し、前記スヌープコントローラはキャッシュコヒーレンシを維持するために前記複数のCPUからのスヌープ要求を受理し、スヌープ処理が必要なCPUを特定してスヌープ要求を実行するよう情報処理装置を構成する。
本発明の効果は、設定されたCPU以外のスヌープ処理の実行を待たせることで、マルチコアにおける並列処理のプログラムを効率良くデバッグするための機能を備えた情報処理装置を提供できることである。
《実施の形態》
以下、本発明に係る情報処理装置の好適な実施の形態について添付図面を参照しながら説明する。特に制限されないが、実施の形態の各ブロックを構成する回路素子は、公知のCMOS(相補型MOSトランジスタ)やバイポーラトランジスタ等の半導体集積回路技術によって、単結晶シリコンのような1個の半導体基板上に形成される。
図1に本発明の情報処理装置に基づくマルチコアシステムの実施の形態を示す。このマルチコアシステムはICチップ1上に集積され、中央処理装置10、20、30、40(CPU)、スヌープバス50、スヌープコントローラ60(SNC: Snoop Controller)、バス70、共有メモリ80(MEM)、デバッグコントローラ90(DBG)などからなる。
中央処理装置10、20、30、40(CPU)は、共有メモリ80(MEM)上にあるプログラムを読み込んで解釈し、その結果に従い、データの移動・算術演算・論理演算などを実行する汎用の回路である。中央処理装置10、20、30、40(CPU)はそれぞれキャッシュ11、21、31、41(CACHE)を備えている。キャッシュは有効ビット、ダーティビット、共有ビット、タグ、データを保持する。有効ビット、ダーティビット、共有ビットはそれぞれ、キャッシュエントリが有効であるかどうか、書き込みがあったかどうか、他の中央処理装置のキャッシュとデータを共有しているかどうかを示している。この3ビットにより、MESIプロトコルにおける各キャッシュ状態を表す。タグは物理アドレスの一部であり、キャッシュヒット判定に利用される。なお、MESIプロトコルは図6において後述する。
スヌープバス50は、中央処理装置10、20、30、40(CPU)とスヌープコントローラ60(SNC)間のスヌープ処理を高速化するための専用バスである。中央処理装置10、20、30、40(CPU)、共有メモリ80(MEM)などを結ぶバス70とは独立にデータをやり取りするので、メモリや周辺論理などとのデータ転送を阻害しない。
スヌープコントローラ60(SNC)は、中央処理装置10、20、30、40(CPU)間におけるキャッシュの更新を制御することでキャッシュのコヒーレンシを維持する。キャッシュのコヒーレンシを維持するためのスヌープ処理の詳細は後述する。
バス70は、中央処理装置10、20、30、40(CPU)、スヌープコントローラ60(SNC)、デバッグコントローラ90(DBG)、共有メモリ80(MEM)、周辺論理などが接続される汎用バスである。中央処理装置10、20、30、40(CPU)は、バス70を介して相互接続されるとともに共有メモリ80(MEM)へ接続され、さらにスヌープバス50を介してスヌープコントローラ60(SNC)へ接続される。
共有メモリ80(MEM)は、SRAMやDRAMなどの主記憶装置であり、中央処理装置10、20、30、40(CPU)の処理に必要な命令やデータを保持する。
デバッグコントローラ90(DBG)は、チップ外のエミュレータと配線120を介したデータ通信により、デバッグコントローラ90(DBG)の内部レジスタ、各中央処理装置の内部レジスタ、キャッシュ、内蔵メモリ、スヌープコントローラ60(SNC)の内部レジスタ、共有メモリ80(MEM)、周辺論理といったリソースへのアクセスを行う。また、配線100を介して中央処理装置10、20、30、40(CPU)の停止と再開の指示を行うことができる。
図2は、スヌープコントローラ60(SNC)の詳細を表す図面である。スヌープコントローラ60(SNC)は、複製アドレスアレイ61(DAA)、スヌープマスクレジスタ62(SMR)、スヌープリリースレジスタ63(SRR)、条件一致通知レジスタ64(MNR)、スヌープ制御論理65(SNPL)からなる。
各中央処理装置からのスヌープ要求により複製アドレスアレイ61(DAA)を検索し、その結果を元に他の中央処理装置へのスヌープを行う。また、スヌープコントローラ60(SNC)はバス70を介して共有メモリ80(MEM)へ接続される。スヌープ処理の結果、データを共有メモリ80(MEM)へ書き戻す場合にはこの経路を用いる。
スヌープマスクレジスタ62(SMR)は、スヌープコントローラ60(SNC)が他の中央処理装置からのスヌープをロックするための条件を保持する。
スヌープリリースレジスタ63(SRR)は、スヌープがロックされているかどうかの状態を保持する。
条件一致通知レジスタ64(MNR)は、他の中央処理装置からのスヌープがロックされた時にデバッグコントローラ90(DBG)へ通知するかどうかの設定を保持する。
スヌープ制御論理65(SNPL)は、後述するスヌープ処理の制御と、スヌープマスクレジスタ62(SMR)の設定に基づくスヌープマスク制御と、条件一致通知レジスタ64(MNR)の設定に基づく配線110を介したデバッグコントローラ90(DBG)への条件一致の通知を行う。
図3は、図2に示したスヌープコントローラ60(SNC)内の複製アドレスアレイ61(DAA)の詳細を示す図面である。複製アドレスアレイ61(DAA)は、各中央処理装置のキャッシュ11、21、31、41(CACHE)に対応する複製アドレス611、612、613、614を持つ。複製アドレスには、中央処理装置のキャッシュ情報のうち、有効ビット6100、共有ビット6101、タグ6102を保持する。
図4は、図2に示したデバッグコントローラ90(DBG)の詳細を表す図面である。デバッグコントローラ90(DBG)は、ブレーク条件レジスタ91(BCR)、デバッグステータスレジスタ92(DSR)、デバッグ制御論理93(DBGL)からなる。
ブレーク条件レジスタ91(BCR)は、中央処理装置10、20、30、40(CPU)にブレークポイント例外を発生させるための条件を保持する。
デバッグステータスレジスタ92(DSR)は、ブレークポイント例外が発生したかどうかの状態を保持する。
デバッグ制御論理93(DBGL)は、チップ外のエミュレータからの指示に基づくチップ内リソースへのアクセス制御と、ブレーク条件レジスタ91(BCR)の設定と中央処理装置10、20、30、40(CPU)の状態とスヌープコントローラからの条件一致の通知によるブレークポイント例外の発生制御を行い、ブレークポイント例外発生時に中央処理装置10、20、30、40(CPU)への停止要求とデバッグステータスレジスタ92(DSR)への書き込みを行う。
図5は、スヌープ処理における信号の授受を示す図面である。スヌープ処理では、次の一連の処理を行う。まず、中央処理装置10(CPU)がキャッシュ11(CACHE)を更新する際、中央処理装置20(CPU)のキャッシュ21(CACHE)との間のデータのコヒーレンシを維持するために、スヌープコントローラ60(SNC)へスヌープ要求51を行う。なお、スヌープ要求による一連の処理では、キャッシュ状態の更新に加えてフィルやライトバックを実行するため、スヌープ要求51には、リードやライトといったコマンド、アクセス先の共有メモリ80(MEM)のアドレスやそのライトデータなどが含まれている。スヌープ要求51を受けたスヌープコントローラ60(SNC)が複製アドレスアレイ61(DAA)の検索と更新を行うとともに中央処理装置20(CPU)へキャッシュ21(CACHE)の状態更新要求52を行う。更に、状態更新要求52を受けた中央処理装置20(CPU)はキャシュ21(CACHE)の更新を行い、各々の結果をレスポンス53、54として通知する。また、複製アドレスアレイ61(DAA)の検索の結果、キャッシュ21(CACHE)に有効なデータがない場合、スヌープコントローラ60(SNC)はバス70を介して共有メモリ80(MEM)へアクセスし、中央処理装置10(CPU)へレスポンス53を通知する。
図6は、MESIプロトコル(Modified Exclusive Shared Invalid)を示す図面である。このMESIプロトコルはスヌープ処理に利用されるものである。MESIプロトコルとは、キャッシュ間のコヒーレンシをとるプロトコルであり、キャッシュは次の4状態をとる。
1) M状態(変更状態, Modified State): ある中央処理装置のキャッシュだけに存在し、主記憶上の値から変更されている。他の中央処理装置がこのキャッシュラインに相当する主記憶にアクセスする場合、変更された最新の値を参照できるよう制御しなければならない。
2) E状態(排他状態, Exclusive State): ある中央処理装置のキャッシュだけに存在するが、主記憶上の値と一致している。
3) S状態(共有状態, Shared State): 複数の中央処理装置で同じキャッシュラインが存在し、主記憶の値と一致している。
4) I状態(無効状態, Invalid State): キャッシュ上に存在しない。
なお、以降の説明では、E´状態も用いる。図6に記載していないが、E´状態は、E状態210あるいはM状態200を表すキャッシュ状態を意味する。これは、複製アドレスアレイ61(DAA)はMとE状態を区別しない構成としているためE´状態を用いるのが、簡便なためである。勿論、MとE状態を区別する構成も可能である。
次に中央処理装置10、20、30、40(CPU)とスヌープコントローラ60(SNC)によるスヌープ処理の動作について述べる。特に制限されないが、スヌープ処理は図6に示すMESIプロトコルを利用しているものとする。ここでは、リード・ライトを実行しスヌープ処理の要求元として中央処理装置10(CPU)を、スヌープ処理の要求先として中央処理装置20(CPU)を選択するが、中央処理装置の組み合わせは特に制限されない。まず、リードを実行する場合について説明する。中央処理装置10(CPU)でリードを実行しキャッシュミスした場合、中央処理装置20、30、40(CPU)のキャッシュ21、31、41の最新データを参照するためにスヌープ要求を行う。この時のコマンドはリードで,アドレスはキャッシュミスした共有メモリ80(MEM)のアドレスである。スヌープ要求はスヌープバス50を介してスヌープコントローラ60(SNC)に通知される。スヌープコントローラ60(SNC)は複製アドレスアレイ61(DAA)を検索し、キャッシュ21、31、41に最新データが存在するかどうかを調べる。
複製アドレスアレイ61(DAA)の検索の結果、キャッシュ21、31、41に最新のデータがない場合、スヌープコントローラ60(SNC)はキャッシュ11の該当エントリに対応する複製アドレスアレイ61(DAA)のエントリをI状態230からE´状態に更新し、他の中央処理装置のキャッシュに最新のデータが見つからなかったというレスポンスを中央処理装置10(CPU)へ返す。レスポンスを受け中央処理装置10(CPU)はキャッシュ11の該当エントリをI状態230からE状態210に変更する。最新のデータは共有メモリ80(MEM)にあるため、バス70あるいはスヌープコントローラ60(SNC)とスヌープバス50を介して中央処理装置10(CPU)のキャッシュ11に書き込まれる。
複製アドレスアレイ61(DAA)の検索の結果、例えばキャッシュ21に最新のデータが存在した場合、スヌープコントローラ60(SNC)はキャッシュ11の該当エントリに対応する複製アドレスアレイ61(DAA)のエントリをI状態230からS状態220に更新するとともに、キャッシュ21の該当エントリに対応する複製アドレスアレイ61(DAA)のエントリをE´状態/S状態220からS状態220に更新する。さらに、スヌープバス50を介して中央処理装置10(CPU)へ他の中央処理装置のキャッシュに最新のデータが見つかったというレスポンスを返すとともに、中央処理装置20へキャッシュ状態の更新と最新データの転送を要求する。レスポンスを受け付けた中央処理装置10(CPU)はキャッシュ11の該当エントリをI状態230からS状態220に更新する。要求を受け付けた中央処理装置20はキャッシュ21の該当エントリをM状態200/E状態210/S状態220からS状態220に更新し、最新データをスヌープコントローラ60(SNC)へ返す。スヌープコントローラ60(SNC)は最新のデータを中央処理装置10(CPU)へ返し、キャッシュ11に書き込まれる。
中央処理装置10(CPU)でリードを実行しキャッシュヒットした場合、最新データはキャッシュ11にあるためスヌープを行わない。
次に、ライトを実行する場合について説明する。中央処理装置10(CPU)でライトを実行しキャッシュミスした場合、中央処理装置20、30、40(CPU)のキャッシュ21、31、41の最新データを参照するためにスヌープ要求を行う。この時のコマンドはライトで,アドレスはキャッシュミスした共有メモリ80(MEM)のアドレスである。コマンドがライトの場合はそのライトデータも出力される。スヌープ要求はスヌープバス50を介してスヌープコントローラ60(SNC)に通知される。スヌープコントローラ60(SNC)は複製アドレスアレイ61(DAA)を検索し、キャッシュ21、31、41に最新データが存在するかどうかを調べる。
複製アドレスアレイ61(DAA)の検索の結果、キャッシュ21、31、41に最新のデータがない場合、スヌープコントローラ60(SNC)はキャッシュ11の該当エントリに対応する複製アドレスアレイ61(DAA)のエントリをI状態230からE´状態に更新し、レスポンスを中央処理装置10(CPU)へ返す。レスポンスを受け中央処理装置10(CPU)はキャッシュ11の該当エントリをI状態230からM状態200に変更する。ライト実行前の最新のデータは共有メモリ80(MEM)にあるため、バス70あるいはスヌープコントローラ60(SNC)とスヌープバス50を介して中央処理装置10(CPU)のキャッシュ11に書き込まれる。
複製アドレスアレイ61(DAA)の検索の結果、例えばキャッシュ21に最新のデータが存在した場合、スヌープコントローラ60(SNC)はキャッシュ11の該当エントリに対応する複製アドレスアレイ61のエントリをI状態230からE´状態に更新するとともに、キャッシュ21の該当エントリに対応する複製アドレスアレイ61(DAA)のエントリをM状態200/E状態210/S状態220からI状態230に更新する。さらに、スヌープバス50を介して中央処理装置10(CPU)へレスポンスを返すとともに、中央処理装置20へキャッシュ状態の更新と最新データの転送を要求する。レスポンスを受け付けた中央処理装置10(CPU)はキャッシュ11の該当エントリをI状態230からM状態200に更新する。要求を受け付けた中央処理装置20はキャッシュ21の該当エントリをM状態200/E状態210/S状態220からI状態230に更新し、最新データをスヌープコントローラ60(SNC)へ返す。スヌープコントローラ60は最新のデータを中央処理装置10(CPU)へ返し、キャッシュ11に書き込まれる。
中央処理装置10(CPU)でライトを実行しM状態200/E状態210でキャッシュヒットした場合、最新データはキャッシュ11のみにあるためスヌープを行わない。
中央処理装置10(CPU)でライトを実行しS状態220でキャッシュヒットした場合、他の中央処理装置のキャッシュにあるデータが最新でなくなったことを通知するためにスヌープ要求を行う。スヌープ要求はスヌープバス50を介してスヌープコントローラ60(SNC)に通知される。スヌープコントローラ60(SNC)は複製アドレスアレイ61(DAA)を検索し、キャッシュ21、31、41に最新データが存在するかどうかを調べる。
複製アドレスアレイ61(DAA)の検索の結果、キャッシュ21、31、41に最新のデータがない場合、スヌープコントローラ60(SNC)はキャッシュ11の該当エントリに対応する複製アドレスアレイ61(DAA)のエントリをS状態220からE´状態に更新し、レスポンスを中央処理装置10(CPU)へ返す。レスポンスを受けた中央処理装置10(CPU)はキャッシュ11の該当エントリをS状態220からM状態200に変更する。
複製アドレスアレイ61(DAA)の検索の結果、例えばキャッシュ21に最新のデータが存在した場合、スヌープコントローラ60(SNC)はキャッシュ11の該当エントリに対応する複製アドレスアレイ61(DAA)のエントリをS状態220からE´状態に更新するとともに、キャッシュ21の該当エントリに対応する複製アドレスアレイ61(DAA)のエントリをS状態220からI状態230に更新する。さらに、スヌープバス50を介して中央処理装置10(CPU)へレスポンスを返すとともに、中央処理装置20(CPU)へキャッシュ状態の更新と最新データの転送を要求する。レスポンスを受け付けた中央処理装置10(CPU)はキャッシュ11の該当エントリをS状態220からM状態200に更新する。要求を受け付けた中央処理装置20はキャッシュ21の該当エントリをS状態220からI状態230に更新する。
上述のように、一連のスヌープ処理は全てスヌープコントローラ60(SNC)を通して実行される。そのため、中央処理装置10、20、30、40(CPU)からスヌープ要求を受け付ける際にスヌープマスクレジスタ62(SMR)のマスク条件との一致判定を行い、スヌープコントローラ60(SNC)においてある中央処理装置以外のスヌープ要求の受理を一時的にマスクすることで、他の中央処理装置によってその中央処理装置のキャッシュの状態が更新されることを防ぐことができる。
これを理解するため、スヌープコントローラ60(SNC)とデバッグコントローラ90(DBG)について詳細に説明する。図7、8ではスヌープマスクレジスタ62(SMR)を、図9ではスヌープリリースレジスタ63(SRR)を、図10では条件一致通知レジスタ64(MNR)を説明する。また、図11、12ではブレーク条件レジスタ91(BCR)を説明し、図13ではデバッグステータスレジスタ92(DSR)を説明する。その後、図14ではスヌープ要求の受理のマスクとそのマスク解除を用いたマルチコアにおける並列処理プログラムのデバッグを容易化する方法を説明する。
図7は、図2に示したスヌープコントローラ60(SNC)内のスヌープマスクレジスタ62(SMR)の詳細を示す図面である。スヌープマスクレジスタ62(SNM)にはマスク条件A620、マスク条件B621、…のように複数個のマスク条件を設定可能である。
図8に、スヌープマスクレジスタ62(SMR)に設定されるマスク条件を示す。マスク条件A620、マスク条件B621、…にはこれらを判定対象とするために、条件の対象とする中央処理装置6200、コマンド6201、アドレス6202、ライトデータ6203を設定できる。スヌープコントローラ60(SNC)は、条件の対象とする中央処理装置6200の設定で指定された中央処理装置のスヌープ要求(コマンド、アドレス、ライトデータ)を監視し、コマンド6201、アドレス6202、ライトデータ6203の処理記述子との一致判定を行う。
なお、説明にはマスク条件A620を取り上げるが、他のマスク条件も同様である。一致判定は、マスク条件組み合わせ6204の設定に従い、これらのマスク条件から1つ、あるいは2つ以上の論理和、論理積の組み合わせを選択する。また、複数個のマスク条件一致の組み合わせ6205や、判定が一致した回数6206を更に一致判定条件として選択することもできる。判定が一致した場合、スヌープコントローラ60(SNC)は、スヌープ要求を行った中央処理装置以外の中央処理装置からのスヌープ要求を以降受理しない。なお、マスク条件A620にスヌープ要求を受理しない中央処理装置6207を設定可能とし、その設定に従い中央処理装置(CPU)のスヌープ要求を受理しないよう制御しても良い。
図9は、図2に示したスヌープコントローラ60(SNC)内のスヌープリリースレジスタ63(SSR)の詳細を示す図面である。スヌープリリースレジスタ63(SSR)は指示子630によりスヌープ要求がマスクされているかどうかの状態を示す。スヌープ要求がマスクされるときに1が設定され、0を書き込むことでスヌープ要求のマスク状態を解除できる。
図10は、図2に示したスヌープコントローラ60(SNC)内の条件一致通知レジスタ64(MNR)の詳細を示す図面である。条件一致通知レジスタ64(MNR)は他の中央処理装置へのスヌープ要求がマスクされた時にデバッグコントローラ90(DBG)へ通知するかどうかの設定を保持し、0のときに非通知、1のときに通知を示す。なお、この通知の設定は、スヌープマスクレジスタ62(SMR)のマスク条件毎に設定される。詳細は図14,15にて説明するが、条件一致通知レジスタで通知の設定をしておくことでスヌープロック時にデバッグコントローラでブレークポイント例外を発生させるかどうか指定できる。
図11は、図4に示したデバッグモジュール90(DBG)内のブレーク条件レジスタ91(BCR)の詳細を示す図面である。ブレーク条件レジスタ91(BCR)にはブレーク条件A910、ブレーク条件B911、…のように複数個のブレーク条件を設定可能である。
図12に、ブレーク条件レジスタ91(BCR)に設定されるブレーク条件を示す。ブレーク条件A910、ブレーク条件B911、…にはこれらを判定対象とするために、条件の対象とする中央処理装置9100、プログラムカウンタの値9101、ライトデータ9102を設定できる。デバッグモジュール90(DBG)は、条件の対象とする中央処理装置9100の設定で指定された中央処理装置のプログラムカウンタの値やライトデータを監視し、プログラムカウンタの値9101、ライトデータ9102の処理記述子との一致判定を行う。なお、デバッグコントローラ90(DBG)が中央処理装置(CPU)毎ごとに分かれている場合、中央処理装置(CPU)毎にレジスタがある場合は、対象とする中央処理装置9100の処理記述子は不要になる。
なお、説明にはブレーク条件A910を取り上げるが、他のブレーク条件も同様である。一致判定は、ブレーク条件組み合わせ9103の設定に従い、前述のブレーク条件から1つ、あるいは2つ以上の論理和、論理積の組み合わせを選択する。また、複数個のブレーク条件一致の組み合わせ9104や、判定が一致した回数9105を更に一致判定条件として選択することもできる。判定が一致した場合、ブレークポイント例外が発生する。ブレークポイント例外とは、中央処理装置(CPU)で実行中のプログラムがブレーク条件を満たした場合に、デバッグコントローラ90(DBG)から中央処理装置(CPU)に、そのプログラムの実行停止を要求することである。ブレークポイント例外では、少なくともブレーク条件を満たした中央処理装置(CPU)へ実行停止を要求できれば良く、同時に他の中央処理装置(CPU)へ実行停止を要求するようデバッグコントローラ90(DBG)を構成しても良い。
図13は、図4に示したデバッグコントローラ90(DBG)内のデバッグステータスレジスタ92(DSR)の詳細を示す図面である。デバッグステータスレジスタ92(DSR)は指示子920によりブレークポイント例外が発生したかどうかを示す。0がブレークポイント例外の発生していない状態、1が発生した状態である。
図14にデバッグ処理のフローチャートを、図15に各モジュールの処理シーケンスを示す。なお、スヌープマスクレジスタ62(SMR)のマスク条件の対象となるCPUコアを中央処理装置10(CPU)、マスクの対象とするCPUコアは中央処理装置20(CPU)とする。マルチコアによる並列処理プログラムのデバッグは、スヌープ要求の受理マスクとブレークポイント例外による中央処理装置の停止を組み合わせて行う。
まず、デバッガ160からデバッグコントローラ90(DBG)へブレーク条件とスヌープ要求のマスク条件の設定をあわせて行う(S1001)。これらの設定方法については、図16を用いて説明する。デバッグ対象となるICチップ1は、開発用ボード140と接続し、PCやWSなどの開発環境150とエミュレータ130を介して接続される。開発環境150上ではデバッガ160が動作し、デバッガ160上でのユーザ操作がICチップ1上のデバッグコントローラ90(DBG)へ通知される。ユーザがデバッガ160上で共有メモリ80(MEM)上にあるプログラムにブレークポイントを設定すると、その通知を受けたデバッグコントローラ90(DBG)がバス70を介してブレーク条件レジスタ91(BCR)へ書き込みを行うことで実現される。受理マスクの設定も上記と同様に、ユーザ操作がデバッグコントローラ90(DBG)へ通知され、スヌープマスクレジスタ62(SMR)へ書き込みが行われることで実現される。
これらのレジスタの設定後、デバッグコントローラ90(DBG)を介したデバッガ160からのユーザ操作により、各中央処理装置でプログラムの実行が開始される(S1002)。プログラム実行中に例えばリードミスが発生した場合、前記スヌープ処理を開始するためにスヌープ要求を行った時点でスヌープ要求のマスク条件のヒット判定を行う(S1003)。このヒット判定は、スヌープ要求に含まれるリードやライトといったコマンド、アクセス先の共有メモリ80(MEM)のアドレスやそのライトデータが、マスク条件に合致するか否かによって行われる。マスク条件にヒットした場合、スヌープコントローラSNC(60)は他の中央処理装置からのスヌープ要求を受理しなくなる(S1004)。一方、ミスした場合は以後もスヌープ要求の受理を行う。
ここで、マスク条件のヒットとスヌープ要求のマスクについて具体例を挙げて説明する。スヌープマスクレジスタ62(SMR)のマスク条件A620の条件の対象となるCPUコアを中央処理装置10(CPU)、コマンドをリード、アドレスを0x01234567、マスク条件組み合わせをコマンドとアドレスとし、ライトデータ、他のマスク条件一致、条件一致回数はdon’t careとする。また、マスクの対象とするCPUコアは中央処理装置20とする。以上の設定がなされた状態で、中央処理装置10(CPU)でプログラムが実行され、コマンドがリード、アドレスが0x1234567のときにキャッシュミスなどによりスヌープ要求が発生した場合、コマンドとアドレスの一致によりスヌープ要求のマスク条件がヒットとなる。その結果、スヌープコントローラ60(SNC)は以降、中央処理装置20(CPU)からのスヌープ要求に対し、受理のレスポンスを返さなくなる。その結果、中央処理装置20(CPU)はスヌープレスポンス待ちの状態でストールする。他の中央処理装置はストールして処理が進まないため、ユーザはデバッガ160を用いてプログラムのデバッグを行っている期間、デバッグ対象とする中央処理装置以外の中央処理装置によりキャッシュを更新されることはない。
スヌープコントローラ60(SNC)は、スヌープ要求のマスク条件が一致したときに、条件一致通知レジスタ64(MNR)の通知ビット640の設定に従い、スヌープ制御論理65(SNPL)が配線110を介して条件一致をデバッグコントローラ90へ(DBG)通知する(S1005)。通知を受けたデバッグコントローラ90(DBG)ではブレークポイント例外が発生する(S1007)。一方、設定されていない場合は、通知を行わない。条件一致通知レジスタで通知の設定をしておくことでスヌープロック時にデバッグコントローラでブレークポイント例外を発生させるかどうか指定できる。また、デバッグコントローラ90(DBG)は、中央処理装置上で実行中のプログラムを監視し、プログラムがブレーク条件を満たした場合(S1006)にブレークポイント例外を発生させる(S1007)。その後、デバッグコントローラ90(DBG)は中央処理装置(CPU)へ実行停止要求を行い、中央処理装置(CPU)はそのプログラムの実行を停止する(S1009)。ここで、デバッグコントローラ90(DBG)は、同時ブレークが有効である場合には、ブレークポイント例外の発生条件を満たした中央処理装置以外の中央処理装置に対してもプログラムの実行停止を要求する(S1008、S1010)。同時ブレークの有効・無効を設定する情報は、デバッグコントローラ内の同時ブレークレジスタ内の同時ブレーク有効ビットに保持される。0は、同時ブレークが無効であることを、1は同時ブレークが有効であることを表す。なお、停止させる中央処理装置をスヌープマスクレジスタ62(SMR)、あるいはデバッグコントローラ90(DBG)で設定可能な構成としても良い。
デバッグを終了させる場合(S1011)、中央処理装置の動作を再開させる。中央処理装置の動作を再開させる際にスヌープリリースレジスタ63(SRR)のリリースビット630へ0が書き込まれ、スヌープ要求の受理マスクが解除される(S1012)。これにより、デバッグ終了(S1013)後は再びスヌープコントローラ60(SNC)でスヌープ要求の受付が行われる。スヌープ要求の受理マスクの解除は、ユーザがデバッグ中にデバッグコントローラ90(DBG)を介してスヌープリリースレジスタ63(SRR)へアクセスすることでも可能であり、デバッグ中に他の中央処理装置によるスヌープ要求を再開させたい場合に利用される。
ある中央処理装置のブレークポイント例外の発生によって他の中央処理装置を停止させるには、デバッグコントローラ90(DBG)を介し、かつ、その配線が長距離になるため、停止通知は数サイクルから数十サイクルかかる。そのため、図17に示すように、他の中央処理装置では、停止するまでに複数命令(D、E、…、M)が実行されてしまい、バグの混入箇所の特定が困難になる。一方、本発明により、ある中央処理装置のブレークポイント例外の発生と同時にスヌープ要求のマスク制御を行うことで、各中央処理装置がスヌープ要求を受理されない状態でストールし、そのストール期間に停止通知が完了するようになる。これは、スヌープ要求の受理マスク解除がデバッグ中のユーザによる操作あるいはデバッグ終了時になるため、より多くの時間がかかるためである。そのため、図18に示すように、他の中央処理装置が停止するまでに実行される命令は1命令(D)となり、バグの混入箇所の特定が容易になる。
以上の処理により、設定された中央処理装置以外のスヌープ処理の実行を待たせることで、マルチコアにおける並列処理のプログラムを効率良くデバッグすることができる。
以上本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
本発明の実施の形態に係る情報処理装置のブロック図である。 スヌープコントローラ(SNC)の詳細を表す図面である。 スヌープコントローラ(SNC)内の複製アドレスアレイ(DAA)の詳細を示す図面である。 デバッグコントローラ(DBG)の詳細を表す図面である。 スヌープ処理における信号の授受を示す図である。 キャッシュコヒーレンシを維持するためのMESIプロトコルを示す図である。 スヌープコントローラ(SNC)内のスヌープマスクレジスタ62(SMR)の詳細を示す図面である。 スヌープマスクレジスタ(SMR)に設定されるマスク条件を示す図である。 スヌープコントローラ(SNC)内のスヌープリリースレジスタ(SSR)の詳細を示す図面である。 スヌープコントローラ(SNC)内の条件一致通知レジスタ(MNR)の詳細を示す図面である。 デバッグモジュール(DBG)内のブレーク条件レジスタ(BCR)の詳細を示す図面である。 ブレーク条件レジスタ(BCR)に設定されるブレーク条件を示す図である。 デバッグコントローラ(DBG)内のデバッグステータスレジスタ(DSR)の詳細を示す図面である。 本発明の実施の形態におけるデバッグフローを示すフローチャートである。 図14における各モジュールの処理フローを示す図である。 デバッグ時の環境を示す図である。 本発明の実施の形態を適用しない場合の同時ブレークの実行タイミングチャートである。 本発明の実施の形態を適用した場合の同時ブレークの実行タイミングチャートである。
符号の説明
1:ICチップ
10、20、30、40:中央処理装置(CPU)
11、21、31、41:キャッシュ(CACHE)
50:スヌープバス
60:スヌープコントローラ(SNC)
61:複製アドレスアレイ(DAA)
62:スヌープマスクレジスタ(SMR)
63:スヌープリリースレジスタ(SRR)
64:条件一致通知レジスタ(MNR)
70:バス
80:共有メモリ(MEM)
90:デバッグコントローラ(DBG)
130:エミュレータ
140:開発用ボード
150:開発環境
160:デバッガ

Claims (15)

  1. 第1処理装置と、
    第2処理装置と、
    ブレーク条件が設定されるブレーク条件レジスタを有するデバッグコントローラと、
    マスク条件が設定されるスヌープマスクレジスタを有するスヌープコントローラを有し、
    前記デバッグコントローラは、前記第1処理装置が実行するプログラムを監視し、前記プログラムの状態が前記ブレーク条件に合致した場合に、前記第1処理装置に前記プログラムの実行を停止させ、
    前記第1処理装置から前記スヌープコントローラへのスヌープ要求が、前記マスク条件に合致した場合に、前記スヌープコントローラは前記第2処理装置からのスヌープ要求を受理しないことを特徴とする情報処理装置。
  2. 請求項1記載の情報処理装置において、
    前記プログラムの状態が前記ブレーク条件に合致した場合に、前記デバッグコントローラは、前記第2処理装置にプログラムの実行を停止させることを特徴とする情報処理装置。
  3. 請求項1記載の情報処理装置において、
    前記第1処理装置から前記スヌープコントローラへのスヌープ要求が、前記マスク条件に合致した場合に、前記デバッグコントローラは、前記第1処理装置にプログラムの実行を停止させることを特徴とする情報処理装置。
  4. 請求項1記載の情報処理装置において、
    前記第1処理装置から前記スヌープコントローラへのスヌープ要求が、前記マスク条件に合致した場合に、前記デバッグコントローラは、前記第2処理装置にプログラムの実行を停止させることを特徴とする情報処理装置。
  5. 複数の処理装置と、
    ブレーク条件が設定されるブレーク条件レジスタを有するデバッグコントローラと、
    マスク条件が設定されるスヌープマスクレジスタを有するスヌープコントローラを有し、
    前記デバッグコントローラは、前記処理装置が実行するプログラムを監視し、前記処理装置の一つである第1処理装置が実行するプログラムの状態が前記ブレーク条件に合致した場合に、前記第1処理装置に前記プログラムの実行を停止させ、
    前記第1処理装置から前記スヌープコントローラへのスヌープ要求が、前記マスク条件に合致した場合に、前記スヌープコントローラは前記第1処理装置以外の前記処理装置からのスヌープ要求を受理しないことを特徴とする情報処理装置。
  6. 請求項5記載の情報処理装置において、
    前記第1処理装置が実行する前記プログラムの状態が前記ブレーク条件に合致した場合に、前記デバッグコントローラは、前記第1処理装置以外の前記処理装置にプログラムの実行を停止させることを特徴とする情報処理装置。
  7. 請求項5記載の情報処理装置において、
    前記第1処理装置から前記スヌープコントローラへの前記スヌープ要求が、前記マスク条件に合致した場合に、前記デバッグコントローラは、前記第1処理装置以外の前記処理装置にプログラムの実行を停止させることを特徴とする情報処理装置。
  8. 請求項1乃至7の何れか1項に記載の情報処理装置において、
    前記ブレーク条件として、プログラムカウンタの値、ライトデータの少なくとも1つが設定されることを特徴とする情報処理装置。
  9. 請求項1乃至8の何れか1項に記載の情報処理装置において、
    前記マスク条件として、前記スヌープ要求に含まれるコマンド、アドレス、ライトデータの少なくとも1つが設定されることを特徴とする情報処理装置。
  10. デバッグコントローラにより、第1処理装置が実行するプログラムを監視させ、前記プログラムの状態が前記デバッグコントローラ内のブレーク条件レジスタに設定されるブレーク条件に合致した場合に、前記第1処理装置に前記プログラムの実行を停止させ、
    前記第1処理装置から前記スヌープコントローラへのスヌープ要求が、前記スヌープコントローラ内のスヌープマスクレジスタに設定されるマスク条件に合致した場合に、前記スヌープコントローラに前記第2処理装置からのスヌープ要求を受理させないことを特徴とするデバッグ方法。
  11. 請求項10記載のデバッグ方法において、
    前記プログラムの状態が前記ブレーク条件に合致した場合に、前記デバッグコントローラにより、前記第2処理装置のプログラムの実行を停止させることを特徴とする情報処理装置。
  12. 請求項10記載のデバッグ方法において、
    前記第1処理装置から前記スヌープコントローラへのスヌープ要求が、前記マスク条件に合致した場合に、前記デバッグコントローラにより、前記第1処理装置のプログラムの実行を停止させることを特徴とする情報処理装置。
  13. 請求項10記載のデバッグ方法において、
    前記第1処理装置から前記スヌープコントローラへのスヌープ要求が、前記マスク条件に合致した場合に、前記デバッグコントローラにより、前記第2処理装置のプログラムの実行を停止させることを特徴とする情報処理装置。
  14. 請求項10乃至13の何れか1項に記載の情報処理装置において、
    前記ブレーク条件として、プログラムカウンタの値、ライトデータの少なくとも1つが設定されることを特徴とする情報処理装置。
  15. 請求項10乃至14の何れか1項に記載の情報処理装置において、
    前記マスク条件として、前記スヌープ要求に含まれるコマンド、アドレス、ライトデータの少なくとも1つが設定されることを特徴とする情報処理装置。
JP2008100121A 2008-04-08 2008-04-08 情報処理装置及びデバッグ方法 Expired - Fee Related JP5255887B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2008100121A JP5255887B2 (ja) 2008-04-08 2008-04-08 情報処理装置及びデバッグ方法
US12/420,051 US8166284B2 (en) 2008-04-08 2009-04-07 Information processing device
CNA2009101340419A CN101556558A (zh) 2008-04-08 2009-04-08 信息处理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008100121A JP5255887B2 (ja) 2008-04-08 2008-04-08 情報処理装置及びデバッグ方法

Publications (2)

Publication Number Publication Date
JP2009251997A true JP2009251997A (ja) 2009-10-29
JP5255887B2 JP5255887B2 (ja) 2013-08-07

Family

ID=41134324

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008100121A Expired - Fee Related JP5255887B2 (ja) 2008-04-08 2008-04-08 情報処理装置及びデバッグ方法

Country Status (3)

Country Link
US (1) US8166284B2 (ja)
JP (1) JP5255887B2 (ja)
CN (1) CN101556558A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011161831A1 (ja) * 2010-06-25 2011-12-29 富士通株式会社 マルチプロセッサシステムおよびスケジューリング方法
JP2013516006A (ja) * 2009-12-29 2013-05-09 エンパイア テクノロジー ディベロップメント エルエルシー エネルギー効率のよいマルチコアプロセッサのための共用メモリ
JP2013088394A (ja) * 2011-10-21 2013-05-13 Renesas Electronics Corp 半導体装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5628411B2 (ja) * 2011-03-24 2014-11-19 ルネサスエレクトロニクス株式会社 半導体装置
CN102880568A (zh) * 2012-09-18 2013-01-16 杭州中天微系统有限公司 多核处理器状态跟踪装置
US9697040B2 (en) * 2014-03-26 2017-07-04 Intel Corporation Software replayer for transactional memory programs

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004103024A (ja) * 2002-09-11 2004-04-02 Agere Systems Inc キャッシュをベースとしたソフトウェア・ブレークポイントを有するプロセッサ・システム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2522158B2 (ja) 1993-05-25 1996-08-07 日本電気株式会社 マルチプロセッサシステムのプログラムデバッグ方法
US5680620A (en) * 1995-06-30 1997-10-21 Dell Usa, L.P. System and method for detecting access to a peripheral device using a debug register
US5838897A (en) * 1996-02-27 1998-11-17 Cyrix Corporation Debugging a processor using data output during idle bus cycles
US6292906B1 (en) * 1997-12-17 2001-09-18 Intel Corporation Method and apparatus for detecting and compensating for certain snoop errors in a system with multiple agents having cache memories
US7380071B2 (en) * 2005-03-29 2008-05-27 International Business Machines Corporation Snoop filtering system in a multiprocessor system
US7373462B2 (en) * 2005-03-29 2008-05-13 International Business Machines Corporation Snoop filter for filtering snoop requests
US7386683B2 (en) * 2005-03-29 2008-06-10 International Business Machines Corporation Method and apparatus for filtering snoop requests in a point-to-point interconnect architecture
GB2427715A (en) * 2005-06-24 2007-01-03 Advanced Risc Mach Ltd Managing snoop operations in a multiprocessor system
US7765363B2 (en) * 2007-07-26 2010-07-27 Hewlett-Packard Development Company, L.P. Mask usable for snoop requests

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004103024A (ja) * 2002-09-11 2004-04-02 Agere Systems Inc キャッシュをベースとしたソフトウェア・ブレークポイントを有するプロセッサ・システム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013516006A (ja) * 2009-12-29 2013-05-09 エンパイア テクノロジー ディベロップメント エルエルシー エネルギー効率のよいマルチコアプロセッサのための共用メモリ
US9367462B2 (en) 2009-12-29 2016-06-14 Empire Technology Development Llc Shared memories for energy efficient multi-core processors
WO2011161831A1 (ja) * 2010-06-25 2011-12-29 富士通株式会社 マルチプロセッサシステムおよびスケジューリング方法
JP5447666B2 (ja) * 2010-06-25 2014-03-19 富士通株式会社 マルチプロセッサシステムおよびスケジューリング方法
US9367326B2 (en) 2010-06-25 2016-06-14 Fujitsu Limited Multiprocessor system and task allocation method
JP2013088394A (ja) * 2011-10-21 2013-05-13 Renesas Electronics Corp 半導体装置
US9157959B2 (en) 2011-10-21 2015-10-13 Renesas Electronics Corporation Semiconductor device

Also Published As

Publication number Publication date
CN101556558A (zh) 2009-10-14
US8166284B2 (en) 2012-04-24
JP5255887B2 (ja) 2013-08-07
US20090254739A1 (en) 2009-10-08

Similar Documents

Publication Publication Date Title
US11281562B2 (en) Method and system for cache agent trace and capture
US9442855B2 (en) Transaction layer packet formatting
US8688910B2 (en) Debug control for snoop operations in a multiprocessor system and method thereof
US7827391B2 (en) Method and apparatus for single-stepping coherence events in a multiprocessor system under software control
US9361233B2 (en) Method and apparatus for shared line unified cache
US8762599B2 (en) Delegating a poll operation to another device
US20060282707A1 (en) Multiprocessor breakpoint
JP5255887B2 (ja) 情報処理装置及びデバッグ方法
US8200908B2 (en) Method for debugger initiated coherency transactions using a shared coherency manager
US9448937B1 (en) Cache coherency
WO2019133172A1 (en) Processor, method, and system for reducing latency in accessing remote registers
US8171448B2 (en) Structure for a livelock resolution circuit
US7039901B2 (en) Software shared memory bus
EP1227404A2 (en) Transparent shared memory access in a software development system
US20220197506A1 (en) Data placement with packet metadata

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20100527

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110404

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121003

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121011

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121101

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130422

R150 Certificate of patent or registration of utility model

Ref document number: 5255887

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

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees