JP2005536798A - メモリバスのプロトコル特性に適合するプロセッサのプリフェッチ - Google Patents

メモリバスのプロトコル特性に適合するプロセッサのプリフェッチ Download PDF

Info

Publication number
JP2005536798A
JP2005536798A JP2004530473A JP2004530473A JP2005536798A JP 2005536798 A JP2005536798 A JP 2005536798A JP 2004530473 A JP2004530473 A JP 2004530473A JP 2004530473 A JP2004530473 A JP 2004530473A JP 2005536798 A JP2005536798 A JP 2005536798A
Authority
JP
Japan
Prior art keywords
memory
cache
processor
data elements
mode
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.)
Pending
Application number
JP2004530473A
Other languages
English (en)
Inventor
ジャン‐ウィレム、バン、デ、ウェールド
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of JP2005536798A publication Critical patent/JP2005536798A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

Landscapes

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

Abstract

キャッシュラインをフェッチする実施形態は、第1のN個のデータ要素の組(209a)および隣接する第2のN個のデータ要素の組(209b)を記憶するメモリロケーションを有する第1のメモリ(206)を準備することを含む。両方のデータ要素の組が前記第1のメモリ(206)内でライン状に整列される。前記N個のデータ要素が整数個のラインを形成する。 前記キャッシュメモリ(207)にアクセスするプロセッサ(202)が準備され、第1のモード(290)および第2のモード(291)の二つのモードで動作する。 前記プロセッサの動作モードが判定される。前記第1の動作モード(290)にある時、前記第1のメモリから前記キャッシュメモリ(207)へN個のデータ要素が同時に転送される。Mが1よりも大きい整数であり、前記プロセッサが前記第2の動作モード(291)にある時少なくとも時折は、前記プロセッサは前記第1のメモリ(206)から前記キャッシュメモリへM×N個のデータ要素を同時に転送する。

Description

本発明はデータプリフェッチの分野に係わり、特に、プロセッサのストールサイクルを容易に減少させるようにメモリからデータをプリフェッチする分野に関する。
集積回路テクノロジーが形状の小型化を進めるにつれて、その結果として、より高速な中央処理演算装置(CPU)が開発されている。残念ながら、命令およびデータが典型的に記憶されているランダムアクセスメモリ(RAM)の形の主メモリのようなメモリサブシステムのアクセス時間は、未だCPUの高速化に適合していない。CPUは、これらの低速装置にアクセスして、そこから命令およびデータを取り出して処理しなければならない。これらの命令およびデータを取り出す際に、CPUと低速のメモリサブシステムとの間でボトルネックが実感される。典型的に、このボトルネックの影響を縮小するために、キャッシュメモリがメモリサブシステムとCPUとの間に導入され、最近使用された(MRU)命令およびデータをより低いレイテンシーでプロセッサに供給する。このキャッシュメモリの目的は、メモリサブシステムからCPUへ流れる情報の命令およびデータのレイテンシーを向上させることである。レイテンシーは、所定の量の情報をメインメモリからCPUへ転送するために要するクロックサイクル数で測定される。所要クロック数が減少するほど、レイテンシーが良くなる。
CPUによる命令の実行中に、メモリサブシステムとキャッシュメモリの両方がアクセスされる。キャッシュメモリは、対応したデータバイトがメモリアクセス要求を満たすかどうかを調べるために最初にアクセスされる。メモリアクセス要求が満たされるならば、キャッシュ「ヒット」が起こり、メモリアクセス要求が満たされないならば、メモリサブシステムがそのデータバイトを取り出すためにアクセスされる。要求されたデータバイトを取り出すためにメモリサブシステムにアクセスしなければならないことは、キャッシュ「ミス」と呼ばれる。キャッシュミスが発生すると、プロセッサにはストールサイクルが生じ、その間に要求されたデータバイトがメモリサブシステムからプロセッサおよびキャッシュメモリへ転送される。
メモリサブシステムからデータバイトをプリフェッチするプロセスは、プロセッサストールサイクル数を減少させるため実行される。将来の命令およびデータの使用を予想することにより、実際に使用される時にこの情報がキャッシュメモリへ高速に供給できるように、この予想されたデータのメモリサブシステムからのプリフェッチが実行される。その結果として、データはプリフェッチ済であり、メモリサブシステムからフェッチする必要がないので、プロセッサのストールサイクル数は減少させられる。
データブロックをプリフェッチするプロセスはデータバスを使用し、データバスがメモリサブシステムとキャッシュメモリとの間の通信を担う。プリフェッチオペレーションの結果として、データバスの帯域幅が減少する。一部のケースでは、プリフェッチのプロセスは、プロセッサによって使用されないことがあるメモリサブシステムからデータブロックを取り出す。これはバスの利用に不必要な負荷を加える。データブロックをキャッシュメモリ階層のあるレベルへ取り込むためには、既存のキャッシュデータブロックを置き換えることが必要であり、このようなデータブロックの置き換えは、メモリサブシステムから正しいデータを得るために別のフェッチオペレーションが発生させられるので、余分なバス利用の原因となる。キャッシュデータブロックは置き換えられるブロックがキャッシュメモリ階層のより低いレベルへ移されるように再編成されることがよくある。さらに、移されたデータブロックが将来の参照のためキャッシュメモリ階層の最上位レベルでもはや利用できなくなるならば、キャッシュミスが起こるかもしれない。
さらに、プロセッサによる将来の使用を予想して余分なデータブロックをプリフェッチすることは、以下の理由によって非効率的でもある。多数のプリフェッチが次から次へ発生するならば、バスが爆発的に利用され、最終的にバス帯域幅を減少させることになる。爆発的なバス利用は、共有データバスリソースを使用する他のコンポーネントの一時的な飢餓状態を引き起こし、その結果として、他のタイプのプロセッサストールが生じ、プロセッサおよびシステムの性能を低下させる影響を与える。
メモリサブシステムからキャッシュメモリへデータバイトを転送する時、転送の単位はキャッシュラインとして知られている。あるキャッシュラインがメモリサブシステムから転送されると、後続キャッシュラインがメモリからプリフェッチされる。このプリフェッチ処理は、メモリサブシステムからの後続ラインのプリフェッチがプロセッサ性能を向上させるという仮定に基づいている。現在のキャッシュライン上でキャッシュミスが発生した時、対応したキャッシュラインはメモリサブシステムからフェッチ済であり、キャッシュラインのフェッチレイテンシーを効果的に減少させる。このケースでは、プリフェッチされたキャッシュラインは、このライン上でキャッシュミスが発生した時に限りキャッシュメモリに入れられ、キャッシュミスが発生する前に、プリフェッチされたキャッシュラインはプリフェッチキャッシュラインバッファ内に存在する。これは使用されないプリフェッチされたキャッシュラインによって有効なキャッシュラインを犠牲にすることを回避する。
後続キャッシュラインのプリフェッチを実行するこの機能は、プロセッサ側に現れる低速メモリサブシステムのアクセス時間の影響、すなわち、メモリレイテンシーを軽減するために使用されるよく知られた技術である。プリフェッチを使用してこのレイテンシーを隠すことにより、予想される可能性があるキャッシュラインはキャッシュメモリの近くのプリフェッチバッファに既に存在するので、プロセッサに生じるストールサイクル数が減少する。プロセッサはキャッシュメモリからこのプリフェッチされたキャッシュラインにより効率的にアクセスすることが可能であるので、プロセッサ性能を向上させる可能性がある。
キャッシュラインプリフェッチはシステム性能を低下させる。プロセッサによって実質的に要求されないプリフェッチされたキャッシュラインは、次に、メモリサブシステムからプロセッサへ転送され、これにより、メモリ帯域幅を無駄に使用し、他のメモリトランザクションの発生を妨げる。この副次的な悪影響は、多数の処理エレメントがクリティカルなメモリ帯域幅リソースを共有しなければならない統合メモリシステムオンチップアーキテクチャにおいてより明白になる。したがって、プリフェッチは、プロセッサの観点だけでなく、システムアーキテクチャの観点からも取り扱われるべきプロセスである。
典型的に、キャッシュメモリで使用されるキャッシュラインのサイズはプロセッサの最適性能を考慮に入れて決められ、典型的に、これは、最も一般的な状況、すなわち、キャッシュヒットにおいてキャッシュラインのサイズを最適化することを要求する。また、キャッシュラインのサイズはキャッシュミスの増減にも関係する。キャッシュラインがあまりに大きいならば、キャッシュメモリは非常に大量のデータを格納し、このデータの大半は正しくないためプロセッサによって使用できないので、キャッシュ汚染が生じる。キャッシュラインがあまりに小さいならば、キャッシュは大部分のキャッシュミスを防止するために十分な量のデータを格納せず、プロセッサは処理動作を円滑に進めるためにメモリサブシステムからデータをプリフェッチすることが必要である。
上記の問題は、複数のプロセッサがメモリおよびバスリソースを共有するマルチプロセッサシステムにおいてより一層重大になる。このようなシステムにおいて、キャッシュミスはすべてのプロセッサの性能に影響を与え、キャッシュミスの効率的な解決が全体的なシステム性能を維持するために適時に求められる。効率的なプリフェッチはプロセッサ性能を著しく向上させる。
発明が解決しようとする手段
本発明によれば、第1のN個のデータ要素の組および隣接する第2のN個のデータ要素の組を記憶するメモリロケーションを有する第1のメモリであって、両方のデータ要素の組が前記第1のメモリ内でライン状に整列され、前記N個のデータ要素が整数個のラインを形成する、前記第1のメモリを準備するステップと、キャッシュメモリを準備するステップと、前記キャッシュメモリにアクセスし、かつ、第1のモードおよび第2のモードの二つのモードのそれぞれで動作するプロセッサを準備するステップと、前記プロセッサの動作モードを判定するステップと、前記プロセッサが前記第1の動作モードにある時、前記第1のメモリから前記キャッシュメモリへN個のデータ要素を同時に転送するステップと、Mが1よりも大きい整数であり、前記プロセッサが前記第2の動作モードにある時少なくとも時折は、前記第1のメモリから前記キャッシュメモリへM×N個のデータ要素を同時に転送するステップと、を有する、キャッシュラインをフェッチする方法が提供される。
本発明の他の特徴によれば、第1の動作モードおよび第2の動作モードを含む複数の動作モードの中からプロセッサの動作モードを判定するステップと、前記プロセッサが前記第1の動作モードにある時、第1のメモリからキャッシュメモリへN個のデータ要素を同時に転送するステップと、Mが1よりも大きい整数であり、前記プロセッサが前記第2の動作モードにある時に少なくとも時折は、前記第1のメモリから前記キャッシュメモリへM×N個のデータ要素を同時に転送するステップと、を実行する命令を記述するデータが記憶されたメモリが提供される。
本発明のさらに他の特徴によれば、キャッシュメモリと、M>Nであり、MおよびNのそれぞれはキャッシュラインがもつ整数であり、第1の動作モードにおいて、1本以上のキャッシュラインを形成するN個のデータ要素を前記キャッシュメモリに単一オペレーションでフェッチし、第2の別の動作モードにおいて、2本以上のキャッシュラインを形成するM個のデータ要素を前記キャッシュメモリに単一オペレーションでフェッチするキャッシュラインフェッチ回路と、を有する、メモリシステム回路が提供される。
以下、添付図面を参照して本発明を説明する。
図1は従来技術によるシステムオンチップ(SoC)アーキテクチャ101を例示する。SoCはオフチップメモリコントローラ104に結合されたプロセッサ102を規定する。オフチップメモリコントローラは外部データバス105を介してダイナミックランダムアクセスメモリ(DRAM)の形態のメモリサブシステム106に結合される。メモリサブシステム106は、n個のメモリページ106a〜106nにより構成され、nページのそれぞれは個別にアドレス指定可能である。また、キャッシュバッファ108は、SoC101の一部として設けられたキャッシュメモリ107内に記憶する前に、メモリサブシステムから転送されたキャッシュラインを記憶するため設けられる。
オフチップメモリコントローラ104は、外部データバス105を使用してメモリサブシステムからのデータバイトをキャッシュメモリ107およびキャッシュバッファ108へ供給するため、メモリページ106a〜106nのいずれかにアクセスするため使用される。典型的に、メモリサブシステム106とキャッシュメモリ107またはキャッシュバッファ108との間で転送されるデータバイトの量はキャッシュライン109を形成するデータバイトの量である。オフチップメモリコントローラ104はプロセッサ102によって制御され、プロセッサのストールサイクル数を減少させるため、メモリサブシステム106からキャッシュメモリ107およびキャッシュバッファ108へのプリフェッチトランザクションを実行する責任を担う。
プロセッサ102がプリフェッチトランザクションを発生する時、一定レイテンシーおよび可変レイテンシーが生じる。一定レイテンシーは、同じ時間量がすべてのプリフェッチトランザクションを設定するために必要とされるという点で一定の時間量を有する。可変レイテンシーは、トランザクション中にプリフェッチされるべきデータ要素の量に応じて時間が伸縮する。したがって、可変レイテンシー時間は、プリフェッチオペレーションで転送されるデータ要素の数が乗算され、一定レイテンシーに加算され、結果として総プリフェッチレイテンシーを生ずる。
プリフェッチトランザクションが行われる時、外部データバス105は現在のプリフェッチトランザクションだけのために使用され、その結果として、他のトランザクションは、プリフェッチが終了するまで同じ外部バス105のリソースを同時に共有できない。プリフェッチトランザクションを終了するために要する時間は、トランザクション中に転送されるデータバイト数に依存する。このように、一部のケースでは、外部バスリソースがトランザクション毎にあまり利用されないように、小さいキャッシュラインサイズを有するプリフェッチトランザクションを実行する方が有利である。しかし、多数のプリフェッチトランザクションを発生させることにより、より多くの時間が各トランザクションを設定する際に費やされるので、一定レイテンシーに基づく時間の量が増加する。したがって、プリフェッチトランザクションの回数と、各プリフェッチトランザクションで転送されるデータの量との間にはトレードオフがある。
メモリサブシステムがアクセスされる時にさらなる問題点が生じるが、その理由は、メモリサブシステム106内のメモリページをアクセスすることによって余分なレイテンシーが生じるからである。メモリサブシステム106内のメモリページがアクセスされる時、同じメモリページに対する後続のアクセスは可能ではないが、その理由は、そのページを記憶するため使用されたメモリ回路が典型的に1ポート型であり、したがって、異なるアドレスでの複数の読み出しをサポートしないからである。プリフェッチトランザクションが第1のアドレスで現在のメモリページにアクセスするため既に実行されているならば、第2のメモリアドレスで同じメモリページにアクセスする後続のトランザクションの実行は、先行のトランザクションが終了するまで遅らせられる。これは後続キャッシュラインのプリフェッチに問題を引き起こすが、その理由は、典型的に後続キャッシュラインが先にフェッチされたキャッシュラインと同じメモリページにあるからである。しかし、後続キャッシュラインのプリフェッチトランザクションは前のキャッシュラインのフェッチトランザクションが終了するまで待機させることが必要であるため、後続キャッシュラインをプリフェッチするプロセスは開始前に遅延させられる。フェッチオペレーションが終了すると、メモリページはアクセスのため利用可能であり、後続キャッシュラインのプリフェッチトランザクションが開始する。典型的に、トランザクションが終了するまでの待ち時間中に、プロセッサはストールサイクルに陥り、その結果として、プロセッサ102による命令処理の効率が低下する。言うまでもなく、外部データバスリソースがプリフェッチオペレーションのため利用される間に、他のメモリサブシステムから同じバスリソースを使用しようとする干渉が生じる。勿論、プロセッサに接続する内部データバス、キャッシュメモリ、および、オフチップメモリコントローラは、また、プリフェッチオペレーション中にも利用されるので、後続キャッシュラインのフェッチは他のSoCエレメントに由来するメモリサブシステムトランザクションからの干渉を生じる。このように、メモリサブシステム106内のオフチップメモリページが閉じているため、大きいトランザクションレイテンシーが典型的に観察される。上記の問題は、極めてマルチプロセッサシステム中に含まれる。
図1bはマルチプロセッサ型システムオンチップ(SoC)アーキテクチャ111を例示する。SoC内のアーキテクチャは図1aに示されたSoC内のアーキテクチャと同様である。しかし、このケースでは、付加的なプロセッサ112が追加されている。プロセッサ102および112の両方はオフチップメモリコントローラ104に結合され、メモリサブシステム106からデータ要素を取り出す時に外部データバス105を共有する。このように、ある種の状況では、オフチップメモリコントローラ104は、プロセッサ102のためのプリフェッチトランザクションを遂行するため、メモリサブシステムにアクセスする。これと同じ状況の間に、付加的なプロセッサ112はメモリサブシステムに即時アクセスできないが、その理由は外部バス105が利用されているからである。付加的なプロセッサ112がプリフェッチオペレーションを始めるために待機しているならば、付加的なプロセッサ112は、プロセッサ102のプリフェッチオペレーションが終了するまで待機するために、この時間中にストールサイクルを生じる。したがって、付加的なプロセッサをSoCに追加することは、必ずしもシステムの処理容量を増大させない。各プロセッサが他のプロセッサのプリフェッチオペレーションの終了をほぼ常に待機させられると、デュアルプロセッサシステムの性能はシングルプロセッサシステムの性能またはそれより悪くなるまで低下させられる。かくして、付加的なプロセッサの追加が処理帯域幅の増加を促進するために役立たない限り、マルチプロセッサシステムは有利にならない。実際上、2台のプロセッサが同じ外部バス105のリソースに対して互いに競合する時、性能は低下する。
図1cはマルチプロセッサ型システムオンチップ(SoC)アーキテクチャ121の別の実施形態を例示する。SoC内のアーキテクチャは図1bに示されたアーキテクチャと同様である。しかし、このケースでは、付加的なプロセッサ112は特殊プロセッサ122によって置き換えられる。SoCの動作は図1bのSoCの動作とほぼ同一である。そうであるとしても、プロセッサのそれぞれは異なり、異なるアプリケーションのための性能を提供することを目的としているので、このようなシステムは、ストールサイクル数が多い時でさえ、依然として性能が向上する可能性がある。
勿論、ストールサイクル数の削減は上記のシステムのいずれにおいても性能の向上をもたらす。
ここでは、メモリサブシステムへのSoCインタフェースの特性を利用する後続ラインのプリフェッチ技術が説明される。キャッシュミスの発生毎にメモリサブシステムからの単一のキャッシュラインのプリフェッチを生成するのではなく、ミスが発生したキャッシュラインと次に続くキャッシュラインの両方をフェッチする単一のトランザクションが生成される。その結果は、単一のキャッシュラインだけがメモリサブシステムからプリフェッチされる時のトランザクションサイズと比べると、2倍のトランザクションサイズを有する単一のメモリサブシステムのプリフェッチトランザクションであり、勿論、一定レイテンシーはそのまま変わらない。したがって、nがキャッシュライン内の要素の数である場合に、n個の要素を要求し、最初のn個の要素がキャッシュミスを解決できない時にその後に続く後続のn要素を要求するのではなく、2n個の要素を要求する単一のプリフェッチトランザクションが生成される。このタイプのプリフェッチオペレーションは、かくして爆発的なバス利用を減少させる。同数のデータバイトがプリフェッチオペレーションで転送されるので、可変レイテンシーは2n個の要素が取り出される時に両方のケースで同一である。勿論、2n個、3n個、4n個などの要素を要求するプリフェッチトランザクションの可能性は、ストールサイクル数および爆発的なバス利用を減少させる観点でどれが最も効果的であるかに依存する。
図2aはシステムオンチップ(SoC)アーキテクチャ201を例示する。SoCは、内部データバスおよびオフチップメモリコントローラ204に結合されたプロセッサ202を定める。オフチップメモリコントローラは、外部データバス205を介して、ダイナミックランダムアクセスメモリ(DRAM)の形態のメモリサブシステム206、すなわち、第1のメモリ206に結合される。メモリサブシステム206は、n個のメモリページ206a〜206nにより構成され、n個のページのそれぞれは個別にアドレス指定可能である。キャッシュバッファ208は、また、メモリサブシステムから転送された単一のキャッシュラインのため設けられ、SoC201の一部として設けられたキャッシュメモリ207内に格納される前に、メモリサブシステムから転送された多数のキャッシュラインを記憶する。
オフチップメモリコントローラ204は、外部データバス205を使用してメモリサブシステムからのデータバイトをキャッシュメモリ207およびキャッシュバッファ208へ供給するため、メモリページ206a〜206nのいずれかにアクセスするため使用される。典型的に、メモリサブシステムとキャッシュメモリ207またはキャッシュバッファ208との間で転送されるデータバイトの量はキャッシュラインを形成するデータバイトの量であるが、キャッシュミスの状況の間に、多数のキャッシュラインを形成する大量のデータバイトが転送される。オフチップメモリコントローラ204はプロセッサ202によって制御され、プロセッサのストールサイクル数を減少させるため、メモリサブシステム206からキャッシュメモリ207およびキャッシュバッファ208へのプリフェッチトランザクションを実行する責任を担う。オフチップメモリコントローラ204は、単一キャッシュライン209aの転送オペレーションを実行し、かつ多重キャッシュラインの転送オペレーションを実行する回路をその中に含む。たとえば、多重キャッシュラインの転送オペレーションは、キャッシュミスの状況の間に、2本の後続キャッシュライン209aおよび209bを転送する。
図2bはマルチプロセッサ型システムオンチップ(SoC)アーキテクチャ211を例示する。SoC内のアーキテクチャは図2aに示されたアーキテクチャと同様である。しかし、このケースでは、付加的なプロセッサ212が追加された。プロセッサ202および212の両方はオフチップメモリコントローラ204に結合され、メモリサブシステム206からデータ要素を取り出す時に外部データバス205を共有する。このように、ある種の状況の間に、オフチップメモリコントローラ204は、プロセッサ202のためのプリフェッチトランザクションを遂行するため、メモリサブシステムにアクセスしている。これと同じ状況の間に、付加的なプロセッサ212はメモリサブシステムに即時アクセスできないが、その理由は外部バス205が利用されているからである。
図2cはマルチプロセッサ型システムオンチップ(SoC)アーキテクチャ221の別の実施形態を例示する。SoC内のアーキテクチャは図2bに示されたアーキテクチャと同様である。しかし、このケースでは、特殊プロセッサ222が付加的なプロセッサ212を置き換える。SoCの動作は図2bのSoCの動作とほぼ同一である。
図2dによれば、プロセッサがプリフェッチトランザクション内でデータを転送するため第1の動作モード290と第2の動作モード291のどちらで動作するかを示すフローチャートが表されている。第1の動作モード290では、プロセッサは第1のメモリからキャッシュメモリへN個のデータ要素を同時に転送し、第2の動作モード291では、プロセッサは、Mが1よりも大きい整数である場合に、第1のメモリからキャッシュメモリへM×N個のデータ要素を同時に転送する。
図3aによれば、5本の順次キャッシュライン301〜305を記憶したメモリサブシステムのメモリページ206aが表されている。これらのキャッシュラインのそれぞれは、4個のデータ要素301a〜301dから305a〜305dまでをそれぞれに有する。5×4個のデータ要素が開始アドレス0x00から0x10に位置する。データ要素のアドレスがAによって一般的に表現されるならば、n番目の要素の次に続くラインは、
n+1=A+(4×要素サイズ)
を使用して見つけられる。
メモリサブシステムからSoC内の回路エレメントであるメモリシステムへキャッシュラインを転送する時に、プロトコルが使用される。これらのプロトコルは典型的に3つの特徴が観察される。最初に、メモリサブシステムのプロトコルは、典型的に、トランザクション要素サイズの2の整数べき乗であるトランザクションサイズをサポートする。すなわち、このプロトコルは、2のべき乗、すなわち、2であるトランザクションサイズを使用して動作する。その結果として、2個、4個および8個のデータ要素転送はメモリサブシステムのトランザクションに共通である。
次に、メモリサブシステムのトランザクションメモリ領域は、一般に、トランザクションサイズに応じて整列された領域である。したがって、4個の要素のトランザクションは、図3aに示されるように、先頭の要素が4要素の境界に揃えられた領域を参照し、ここで、
MOD (要素サイズ)=0
である。メモリサブシステム内のキャッシュラインを整列させることにより、メモリサブシステムからのこれらのキャッシュラインの読み出しが容易になる。図3aのキャッシュラインは、それぞれが、4個の要素を有し、すなわち、
MOD 4=0
であるとしても、8個の要素のキャッシュラインもまた容易にサポートされる。8個の要素からなるキャッシュラインを有するメモリは図3bに示されている。
図3bによれば、5本の順次キャッシュライン311〜315を記憶したメモリサブシステムのメモリページ106aが示されている。これらのキャッシュラインのそれぞれは、8個のデータ要素311a〜311hから315a〜315hまでをそれぞれに有する。5×8個のデータ要素が開始アドレス0x00から0x20に位置する。データ要素のアドレスがAによって一般的に表現されるならば、n番目の要素の次に続くラインは、
n+1=A+(8×要素サイズ)
を使用して見つけられる。
さらに、殆どのメモリサブシステムのプロトコルは、トランザクション内で線形アドレスのラップアラウンドをサポートする。したがって、キャッシュラインが4要素の境界による整列以外の整列を使用してアクセスされるならば、4個のデータ要素が依然として転送されるが、アドレス昇順の順次データ要素の形ではない。たとえば、要素301bに対しキャッシュミスが発生した場合、プリフェッチトランザクションが要素301bに対するアドレスで始まり、これにより、メモリサブシステムから301b、301c、301d、301aの順序でデータ要素を転送する。4個の要素が転送されるのは、これが本実施例で使用されるキャッシュラインサイズであり、メモリサブシステムは4要素のラインで整列されているからである。キャッシュミスの原因となり、アドレス0x00におけるキャッシュライン内にある要素、すなわち、要素301bがメモリサブシステムからプロセッサへ供給されると直ちに、プロセッサはアンストールオペレーションを開始する。勿論、将来の使用のためプロセッサのリフィル(refill)ユニットを解放するために、4要素のキャッシュラインの全体がメモリサブシステムから転送される。
図3aと図3bのメモリサブシステムアーキテクチャ間の差は単なる設計の選択の範囲の問題であることは明白であるが、プロセッサの異なる動作モードのそれぞれで、両方のアーキテクチャをサポートすることはシステム全体の性能の向上をもたらす。図4のメモリの概要図を参照して次に説明する。
図4には、4個のデータ要素の形で整列されたメモリアーキテクチャが表され、太線は8個のデータ要素の形で整列されたデータ要素を分離する。キャッシュヒットの状況が発生した時、キャッシュは従来技術のキャッシュと類似した形式で動作させられ、プロセッサは第1のモード290で動作するので、キャッシュラインが単一のメモリアクセスオペレーション内で転送される。キャッシュミスが発生した時、プロセッサは第2のモード291で動作するので、2本のキャッシュラインが単一のメモリアクセスオペレーション内で転送される。好ましくは、2本のキャッシュラインは8要素で整列させられる。かくして、キャッシュミスがデータ要素401aに対して発生した時、キャッシュライン401が取り出される。しかし、キャッシュミスが要素402eに対して発生した時、単一のキャッシュラインが最初のキャッシュミスデータ転送オペレーションで転送され、その後、キャッシュミス状況が持続するならば、2本のキャッシュライン401が取り出される。或いは、2本のキャッシュライン402が取り出されるが、これは殆ど可能性のない利益のためにバス利用を増加させるのであまり有利ではない。
要素403aに対してキャッシュミスが発生した時、2本のキャッシュライン403を転送することは、キャッシュミスを解決し、引き続くキャッシュミスの可能性を低下させるために十分なデータがキャッシュ内に記憶される可能性を高くする。この可能性が存在する理由は、データ要素403aがそのキャッシュラインの終点付近にあるからである。
本発明の別の実施形態は、再度図4のメモリ概要図を参照して開示される。キャッシュミス中に、それぞれが4個のデータ要素を有する2本のキャッシュライン402の形で複数のキャッシュラインをプリフェッチするプリフェッチトランザクションが実行されるのは、以下の二つの条件が充たされる時であり、その条件は、キャッシュラインにキャッシュミスを生じさせた要素が当該キャッシュラインの先頭の要素402aであること、および、キャッシュラインにキャッシュミスを生じさせた要素402aが4個のデータ要素による境界と8個のデータ要素による境界の両方に揃えられていることである。
上記の二つの条件が充たされる時、2倍のサイズのプリフェッチトランザクションが実行され、これにより、第2の動作モードを使用して8個のデータ要素402を転送する。これは、キャッシュミスを生じさせた先頭の要素402aがプロセッサへ供給されると直ちに、プロセッサがストールされずに動作することを可能にさせる点で有利である。さらに、最初のキャッシュラインのすべてのデータ要素は、次のライン、すなわち、プリフェッチされるラインのデータ要素がプロセッサに与えられるよりも前に、プロセッサによって受け取られる。したがって、これは、8要素のトランザクションの最初の4個の要素がプロセッサへ供給されると直ぐに、プロセッサのリフィルユニットが解放されることを可能にさせる。
キャッシュライン内の先頭のデータ要素以外のデータ要素がキャッシュミスを発生する時、線形アドレスのラップアラウンドのため、2本の順次キャッシュラインを転送することは本実施形態において防止される。したがって、次に続くキャッシュラインからの要素は、プロセッサが第1の動作モードで動作する時に転送されない。
有利的には、本実施形態によるプリフェッチ技術の性能は、命令キャッシュ参照が非常に規則正しい順次アクセスパターンを有する時に、効率的に動作する。ある種のキャッシュラインへの参照がメモリサブシステム内で行われる時、後続キャッシュラインは近い将来に参照される可能性が非常に高い。したがって、現在と後続の両方のキャッシュラインをプロセッサへ供給することにより、プリフェッチトランザクションに関連した一定レイテンシーの合計のみならず、プロセッサのストールサイクル数が減少する。
ストリーミングアクセスパターン/順次アクセスパターンのデータキャッシュ参照は、順次プリフェッチによる恩恵を受ける。これらのアクセスパターンは、一般に、その先頭の要素に関してキャッシュラインをミスする。有利的には、本発明の実施形態にしたがって現在のキャッシュラインおよび次に続くキャッシュラインをプリフェッチするプロセスは、ミスが発生したキャッシュライン内の先頭の要素が8個の要素の境界に揃えられている時に、ストリーミングアクセスパターン/順次アクセスパターンに役立つ。
勿論、ミスが発生したキャッシュライン内の先頭の要素が8個の要素の境界に揃えられた要素以外の要素である時、システムの「通常」のキャッシュプリフェッチオペレーションになるので、システム上でパフォーマンスヒットはない。
本発明は、1本のキャッシュラインサイズと2本のキャッシュラインサイズに関して説明されているが、その他の多重キャッシュラインサイズに適用することができる。好ましくは、多重キャッシュラインサイズは2のべき乗である。さらに好ましくは、キャッシュライン内のデータ要素の個数は2のべき乗個である。
多数のその他の実施形態が本発明の精神や範囲を逸脱することなく想定される。
従来技術によるシステムオンチップアーキテクチャの説明図である。 従来技術によるマルチプロセッサ型システムオンチップ(SoC)アーキテクチャの説明図である。 別の従来技術によるマルチプロセッサ型システムオンチップ(SoC)アーキテクチャの説明図である。 本発明と共に使用するシステムオンチップ(SoC)アーキテクチャの説明図である。 マルチプロセッサ型システムオンチップ(SoC)アーキテクチャの説明図である。 マルチプロセッサ型システムオンチップ(SoC)アーキテクチャの別の実施形態の説明図である。 プロセッサの第1および第2の動作モードの説明図である。 4個のデータ要素が記憶された5本の順次キャッシュラインを有するメモリサブシステムのメモリページの簡単化されたメモリ概略図である。 8個のデータ要素が記憶された5本の順次キャッシュラインを有するメモリサブシステムのメモリページの簡単化されたメモリ概略図である。 4個のデータ要素が並べられ、太線で8個のデータ要素が分離されたメモリアーキテクチャを有する簡単化されたメモリ概略図である。

Claims (29)

  1. 第1のN個のデータ要素の組および隣接する第2のN個のデータ要素の組を記憶するメモリロケーションを有する第1のメモリであって、両方のデータ要素の組が前記第1のメモリ内でライン状に整列され、前記N個のデータ要素が整数個のラインを形成する、前記第1のメモリを準備するステップと、
    キャッシュメモリを準備するステップと、
    前記キャッシュメモリにアクセスし、かつ、第1のモードおよび第2のモードの二つのモードのそれぞれで動作するプロセッサを準備するステップと、
    前記プロセッサの動作モードを判定するステップと、
    前記プロセッサが前記第1の動作モードにある時、前記第1のメモリから前記キャッシュメモリへN個のデータ要素を同時に転送するステップと、
    Mが1よりも大きい整数であり、前記プロセッサが前記第2の動作モードにある時少なくとも時折は、前記第1のメモリから前記キャッシュメモリへM×N個のデータ要素を同時に転送するステップと、
    を有する、キャッシュラインをフェッチする方法。
  2. 前記第1のモードは前記プロセッサによって要求されたデータがその要求の時点で前記キャッシュメモリ内に記憶されているキャッシュヒットモードを含み、
    前記第2のモードは前記プロセッサによって要求されたデータがその要求の時点で前記キャッシュメモリ以外に記憶されているキャッシュミスモードを含む、
    請求項1に記載の方法。
  3. キャッシュミスが発生したデータ要素が前記第1のメモリ内でM本のラインの境界に揃えられているかどうかを判定するステップをさらに有し、
    前記第1のメモリから前記キャッシュメモリへM×N個のデータ要素を同時に転送するステップは前記データ要素がM本のラインの境界に揃えられている時に限り実行される、
    請求項2に記載のキャッシュラインをフェッチする方法。
  4. Mが2のべき乗である、請求項3に記載の方法。
  5. Mが2である、請求項4に記載の方法。
  6. N=4である、請求項5に記載の方法。
  7. キャッシュミスが発生したデータ要素が前記第1のメモリ内でM本のラインの境界に揃えられたデータ要素のライン内にあるかどうかを判定するステップをさらに有し、
    前記第1のメモリから前記キャッシュメモリへM×N個のデータ要素を同時に転送するステップは前記データ要素がM本のラインの境界に揃えられている時に限り実行される、
    請求項2に記載の方法。
  8. Mが2のべき乗である、請求項7に記載の方法。
  9. Mが2である、請求項8に記載の方法。
  10. N=4である、請求項9に記載の方法。
  11. 第1の動作モードおよび第2の動作モードを含む複数の動作モードの中からプロセッサの動作モードを判定するステップと、
    前記プロセッサが前記第1の動作モードにある時、第1のメモリからキャッシュメモリへN個のデータ要素を同時に転送するステップと、
    Mが1よりも大きい整数であり、前記プロセッサが前記第2の動作モードにある時に少なくとも時折は、前記第1のメモリから前記キャッシュメモリへM×N個のデータ要素を同時に転送するステップと、
    を実行する命令を記述するデータが記憶されたメモリ。
  12. 前記データは、前記第1の動作モードが前記プロセッサによって要求されたデータがその要求の時点で前記キャッシュメモリ内に記憶されているキャッシュヒットモードを含み、前記第2の動作モードが前記プロセッサによって要求されたデータがその要求の時点で前記キャッシュメモリ以外に記憶されているキャッシュミスモードを含むように、命令を実行するためのデータである、請求項11に記載のメモリ。
  13. 前記データは、キャッシュミスが発生したデータ要素が前記第1のメモリ内でM本のラインの境界に揃えられているかどうかを判定するステップを実行する命令を記述し、
    前記第1のメモリから前記キャッシュメモリへM×N個のデータ要素を同時に転送するステップは前記データ要素がM本のラインの境界に揃えられている時に限り実行される、
    請求項12に記載のメモリ。
  14. Mが2のべき乗である、請求項13に記載のメモリ。
  15. Mが2である、請求項14に記載のメモリ。
  16. N=4である、請求項15に記載のメモリ。
  17. 前記データは、キャッシュミスが発生したデータ要素が前記第1のメモリ内でM本のラインの境界に揃えられたデータ要素のライン内にあるかどうかを判定するステップを実行する命令を記述し、
    前記第1のメモリから前記キャッシュメモリへM×N個のデータ要素を同時に転送するステップは前記データ要素がM本のラインの境界に揃えられている時に限り実行される、
    請求項12に記載のメモリ。
  18. Mが2のべき乗である、請求項17に記載のメモリ。
  19. Mが2である、請求項18に記載のメモリ。
  20. N=4である、請求項19に記載のメモリ。
  21. キャッシュメモリと、
    M>Nであり、MおよびNのそれぞれはキャッシュラインがもつ整数であり、第1の動作モードにおいて、1本以上のキャッシュラインを形成するN個のデータ要素を前記キャッシュメモリに単一オペレーションでフェッチし、第2の別の動作モードにおいて、2本以上のキャッシュラインを形成するM個のデータ要素を前記キャッシュメモリに単一オペレーションでフェッチするキャッシュラインフェッチ回路と、
    を有する、メモリシステム回路。
  22. N個のデータ要素が1本のキャッシュラインを形成し、M個のデータ要素が複数個のキャッシュラインを形成する、請求項21に記載のメモリシステム回路。
  23. M個のデータ要素が2本のキャッシュラインを形成する、請求項22に記載のメモリシステム回路。
  24. N=4である、請求項23に記載のメモリシステム。
  25. キャッシュヒット動作モードとキャッシュミス動作モードの範囲内で動作するプロセッサを有し、
    前記第1の動作モードが前記プロセッサの前記キャッシュヒット動作モードであり、前記第2の別の動作モードが前記プロセッサの前記キャッシュミス動作モードである、
    請求項23に記載のメモリシステム。
  26. キャッシュヒット動作モードとキャッシュミス動作モードの範囲内で動作するプロセッサを有し、
    前記第1の動作モードが前記プロセッサの前記キャッシュヒット動作モードであり、前記第2の別の動作モードが前記プロセッサの前記キャッシュミス動作モードである、
    請求項21に記載のメモリシステム。
  27. 前記第2の別の動作モードがキャッシュミスモードであり、
    キャッシュミスがM個のデータ要素の境界に揃えられたデータ要素であるキャッシュライン内のデータ要素に関係する、
    請求項26に記載のメモリシステム。
  28. 前記第2の別の動作モードがキャッシュミスモードであり、
    キャッシュミスがM個のデータ要素の境界に揃えられたデータ要素に関係する、
    請求項27に記載のメモリシステム。
  29. キャッシュメモリと、
    M>Nであり、MおよびNのそれぞれはキャッシュラインがもつ整数であり、第1のキャッシュヒット動作モードにおいて、1本以上のキャッシュラインを形成するN個のデータ要素をキャッシュメモリに単一オペレーションでフェッチし、第2のキャッシュミス動作モードにおいて、2本以上のキャッシュラインを形成するM個のデータ要素を前記キャッシュメモリに単一オペレーションでフェッチするキャッシュラインフェッチ回路と、
    を有する、メモリシステム回路。
JP2004530473A 2002-08-23 2003-08-15 メモリバスのプロトコル特性に適合するプロセッサのプリフェッチ Pending JP2005536798A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/226,158 US7162588B2 (en) 2002-08-23 2002-08-23 Processor prefetch to match memory bus protocol characteristics
PCT/IB2003/003755 WO2004019213A1 (en) 2002-08-23 2003-08-15 Processor prefetch to match memory bus protocol characteristics

Publications (1)

Publication Number Publication Date
JP2005536798A true JP2005536798A (ja) 2005-12-02

Family

ID=31887174

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004530473A Pending JP2005536798A (ja) 2002-08-23 2003-08-15 メモリバスのプロトコル特性に適合するプロセッサのプリフェッチ

Country Status (6)

Country Link
US (1) US7162588B2 (ja)
EP (1) EP1535163A1 (ja)
JP (1) JP2005536798A (ja)
CN (1) CN100390757C (ja)
AU (1) AU2003255978A1 (ja)
WO (1) WO2004019213A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW576977B (en) * 2002-09-11 2004-02-21 Sunplus Technology Co Ltd Structure and method for planning control commands and data access
US7237068B2 (en) * 2003-01-28 2007-06-26 Sun Microsystems, Inc. Computer system employing bundled prefetching and null-data packet transmission
US7904887B2 (en) * 2006-02-16 2011-03-08 International Business Machines Corporation Learning and cache management in software defined contexts
JP4574712B2 (ja) * 2006-02-28 2010-11-04 富士通株式会社 演算処理装置、情報処理装置及び制御方法
US20080098176A1 (en) * 2006-10-18 2008-04-24 Krishna M V V Anil Method and Apparatus for Implementing Memory Accesses Using Open Page Mode for Data Prefetching
US8032711B2 (en) * 2006-12-22 2011-10-04 Intel Corporation Prefetching from dynamic random access memory to a static random access memory
US8166277B2 (en) * 2008-02-01 2012-04-24 International Business Machines Corporation Data prefetching using indirect addressing
US8209488B2 (en) * 2008-02-01 2012-06-26 International Business Machines Corporation Techniques for prediction-based indirect data prefetching
US8473688B2 (en) * 2010-03-26 2013-06-25 Microsoft Corporation Anticipatory response pre-caching
US9285860B2 (en) * 2010-05-03 2016-03-15 Qualcomm Incorporated Apparatus and methods employing variable clock gating hysteresis for a communications port
JP5598337B2 (ja) * 2011-01-12 2014-10-01 ソニー株式会社 メモリアクセス制御回路、プリフェッチ回路、メモリ装置および情報処理システム
CN102591799B (zh) 2011-12-30 2015-04-15 华为技术有限公司 一种存放数据的方法和装置
US9507628B1 (en) 2015-09-28 2016-11-29 International Business Machines Corporation Memory access request for a memory protocol
CN106844232A (zh) * 2016-12-23 2017-06-13 北京北大众志微系统科技有限责任公司 一种面向多核处理器的共享末级高速缓存访存方法和装置
CN106844231A (zh) * 2016-12-23 2017-06-13 北京北大众志微系统科技有限责任公司 末级高速缓存软硬件协作分区域管理系统及管理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02257235A (ja) * 1988-10-28 1990-10-18 Apollo Computer Inc キャッシュメモリを関連する主メモリから選択的にローディングする装置及び方法
JP2001075866A (ja) * 1999-08-21 2001-03-23 Koninkl Philips Electronics Nv 記憶装置を動作する方法および記憶装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1989009444A1 (en) * 1988-04-01 1989-10-05 Digital Equipment Corporation Cache with at least two fill sizes
US5784711A (en) 1990-05-18 1998-07-21 Philips Electronics North America Corporation Data cache prefetching under control of instruction cache
US5752263A (en) * 1995-06-05 1998-05-12 Advanced Micro Devices, Inc. Apparatus and method for reducing read miss latency by predicting sequential instruction read-aheads
US5664147A (en) * 1995-08-24 1997-09-02 International Business Machines Corp. System and method that progressively prefetches additional lines to a distributed stream buffer as the sequentiality of the memory accessing is demonstrated
US5835929A (en) * 1996-05-20 1998-11-10 Integrated Device Technology, Inc. Method and apparatus for sub cache line access and storage allowing access to sub cache lines before completion of a line fill
US5854934A (en) * 1996-08-23 1998-12-29 Hewlett-Packard Company Optimizing compiler having data cache prefetch spreading
US6279081B1 (en) * 1998-12-22 2001-08-21 Hewlett-Packard Company System and method for performing memory fetches for an ATM card
US6754780B1 (en) * 2000-04-04 2004-06-22 Hewlett-Packard Development Company, L.P. Providing data in response to a read command that maintains cache line alignment
TW480406B (en) * 2000-08-09 2002-03-21 Via Tech Inc Two-way cache system of peripheral device interface and its operating method
US6499085B2 (en) * 2000-12-29 2002-12-24 Intel Corporation Method and system for servicing cache line in response to partial cache line request
US6584549B2 (en) * 2000-12-29 2003-06-24 Intel Corporation System and method for prefetching data into a cache based on miss distance
US6662277B2 (en) * 2001-07-31 2003-12-09 Hewlett-Packard Development Company, L.P. Cache system with groups of lines and with coherency for both single lines and groups of lines

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02257235A (ja) * 1988-10-28 1990-10-18 Apollo Computer Inc キャッシュメモリを関連する主メモリから選択的にローディングする装置及び方法
JP2001075866A (ja) * 1999-08-21 2001-03-23 Koninkl Philips Electronics Nv 記憶装置を動作する方法および記憶装置

Also Published As

Publication number Publication date
AU2003255978A1 (en) 2004-03-11
US7162588B2 (en) 2007-01-09
WO2004019213A1 (en) 2004-03-04
EP1535163A1 (en) 2005-06-01
US20040039878A1 (en) 2004-02-26
CN100390757C (zh) 2008-05-28
CN1679006A (zh) 2005-10-05

Similar Documents

Publication Publication Date Title
US6131155A (en) Programmer-visible uncached load/store unit having burst capability
JP3816586B2 (ja) 先取り命令を生成する方法とシステム
US6138213A (en) Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line
US4933837A (en) Methods and apparatus for optimizing instruction processing in computer systems employing a combination of instruction cache and high speed consecutive transfer memories
JP3718319B2 (ja) 命令とデータの先取りを最適化するためのハードウェア機構
US8725987B2 (en) Cache memory system including selectively accessible pre-fetch memory for pre-fetch of variable size data
JP4006436B2 (ja) 種々のキャッシュ・レベルにおける連想セットの重畳一致グループを有するマルチレベル・キャッシュ
US5838945A (en) Tunable software control of harvard architecture cache memories using prefetch instructions
JP2005536798A (ja) メモリバスのプロトコル特性に適合するプロセッサのプリフェッチ
WO1998027492A1 (en) Cache hierarchy management with locality hints for different cache levels
US6748496B1 (en) Method and apparatus for providing cacheable data to a peripheral device
WO2021243340A1 (en) Computer memory expansion device and method of operation
US6101589A (en) High performance shared cache
US6094711A (en) Apparatus and method for reducing data bus pin count of an interface while substantially maintaining performance
US20020056027A1 (en) Information processing system
JP4173858B2 (ja) 命令キャッシュ、及びメモリ競合を低減する方法
US6836823B2 (en) Bandwidth enhancement for uncached devices
JP2008257508A (ja) キャッシュ制御方法およびキャッシュ装置並びにマイクロコンピュータ
JP2004240616A (ja) メモリコントローラ及びメモリアクセス制御方法
EP1930811A1 (en) Methods and devices for cache enhancing
US20120151150A1 (en) Cache Line Fetching and Fetch Ahead Control Using Post Modification Information
EP2062144B1 (en) Arrangement with instruction cache
WO2012069874A1 (en) Integrated circuit device, signal processing system and method for prefetching lines of data therefor
JPH06282489A (ja) コンピュータメモリシステム、データキャッシュ動作の方法およびデータキャッシュシステム
JP2004213544A (ja) マルチプロセッサ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060814

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090508

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090810

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090825

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091225

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100311

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20100402

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110421

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110426

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110523

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110526

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110621

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110627

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20111118