JP4504615B2 - データ損失のないバッファ分割方法および装置 - Google Patents

データ損失のないバッファ分割方法および装置 Download PDF

Info

Publication number
JP4504615B2
JP4504615B2 JP2002369547A JP2002369547A JP4504615B2 JP 4504615 B2 JP4504615 B2 JP 4504615B2 JP 2002369547 A JP2002369547 A JP 2002369547A JP 2002369547 A JP2002369547 A JP 2002369547A JP 4504615 B2 JP4504615 B2 JP 4504615B2
Authority
JP
Japan
Prior art keywords
address
buffer
read
write
new
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2002369547A
Other languages
English (en)
Other versions
JP2003242024A5 (ja
JP2003242024A (ja
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.)
Agere Systems LLC
Original Assignee
Agere Systems LLC
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 Agere Systems LLC filed Critical Agere Systems LLC
Publication of JP2003242024A publication Critical patent/JP2003242024A/ja
Publication of JP2003242024A5 publication Critical patent/JP2003242024A5/ja
Application granted granted Critical
Publication of JP4504615B2 publication Critical patent/JP4504615B2/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
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/06Indexing scheme relating to groups G06F5/06 - G06F5/16
    • G06F2205/066User-programmable number or size of buffers, i.e. number of separate buffers or their size can be allocated freely

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Communication Control (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、一般にバッファ内のデータ格納に関し、特に、バッファに格納されたデータの損失なしに能動バッファを分割する方法および装置に関する。
【0002】
【従来の技術及び発明が解決しようとする課題】
バッファ格納装置は、コンピュータシステムやデータネットワークにおける常用の構成要素である。コンピュータシステムは、リソースによるサービス待機中は、データをバッファしている。たとえば、プリンタは、プロセッサより提供されるのと同一の速度でデータを処理することができないので、データは、プリンタがそれを処理する準備ができるまでバッファされている。データネットワークは、ネットワークプロセッサへのアクセスを待っているとき、データを保持するバッファを必要とする。たとえば、ネットワークスイッチは、典型的に、各入力ライン上に入力バッファを含み、かつ各出力ライン上に出力バッファを含み、それらの間には、スイッチファブリックが配置されている。入力バッファは、パケットが入力ラインに到着して、スイッチによるサービスを争っている間、パケットを格納する。入力バッファサイズは、スイッチ能力とデータネットワークの特性とに依存する。しかし、いったん入力バッファサイズが確立されると、入力バッファサイズは、特にシステムの動作中には、容易に変更されない。同様に、出力バッファは、スイッチからの出力データトラフィックを、出力ラインへのアクセスを争っている間格納する。これらの状況は、データトラフィックが著しく高レベルになる所で発生することがあり、この時、入力または出力バッファは、1つまたはそれ以上のパケットを落とす必要がある。これは、落とされたパケットをデータソースから再送信しなければならないので、ネットワーク効率が悪くなる。
【0003】
典型的には、ネットワークプロセッサと関連づけられるバッファは、ネットワークプロセッサ内で1つのメモリスペースを論理的に分割することにより実行される。このメモリスペースは、複数の論理バッファエリアを形成するように分割され、次いで、入力バッファや出力バッファのような要求される役割に役立つように割り当てられる。いくつかのアプリケーションでは、これらのバッファは、先入れ先出し(FIFO)によって動作し、メモリ位置がリニアな配列になっている。FIFOバッファにおいては、ネットワークプロセッサに転送される次のパケットまたはブロックは、バッファに最初に到着したパケットになる。従来技術によれば、FIFOバッファは、データがバッファ内にある間リサイズできない。したがって、データトラフィックは、バッファをリサイズするために止めなければならない。
【0004】
動的バッファ再分割またはリサイジングが可能な一般的な従来技術のバッファ格納技術は、論理バッファからなるメモリ格納スペースを識別するリンク一覧表を用いる。メモリスペース全体は、等サイズの割り当てユニットに分割され、各割り当てユニットは、そのメモリスペース内の最初および最後のアドレスにしたがって唯一的に識別される。割り当てマネージャーは、割り当てユニットを個々の論理バッファに割り当てる。ほとんどの論理バッファは、1つ以上の割り当てユニットからなり、したがって、割り当てマネージャーは、各バッファ内の割り当てユニット一覧表を作成する。さらに、一覧表は、割り当てマネージャー内でリンクされ、論理バッファの割り当てユニットの整理されたチェインを形成する。リンクされた一連表が作成されると、割り当てマネージャーは、論理バッファに割り当てユニットを追加または削除し、その結果リンクされた一覧表を変更することによって論理バッファサイズを変えるフレキシビリティを提供する。新たな割り当てユニットがリンクされた一覧表に追加された場合は、以前に最後にリンクされた一覧表の登録事項は、新たな割り当てユニットにリンクされる必要がある。データは、論理バッファから伝送される場合、常に、(FIFOバッファの定義にしたがって)最初のバッファ位置から伝送される。この割り当てユニットは、リンクされた一覧表から削除され、次いで、バッファの次の最初の割り当てユニットが、削除されたユニットがリンクされていた割り当てユニットになる。
【0005】
リンクされた一覧表の欠点は、リンク一覧表自体を格納するのにさらに格納スペースが必要なことである。論理バッファスペースへのアクセスは、そのバッファのリンクされた一覧表にしたがうためにアクセス用デバイスを必要とするので、ある程度の遅延時間が、論理バッファから読み出したり論理バッファに書き込んだりする際に固有に存在する。長いリンクされた一覧表を伴う論理バッファへの多数のアクセスがある場合、リンクされた一覧表を探求するのに時間がかかり、したがって望ましいアクセス速度が達成できないので、システム性能は、過度に劣化することがある。また、一覧表にアクセスするのに必要な時間は、バッファ割り当てユニットが変更されたときに、リンクされた一覧表への登録を適時に追加したりそれから削除したりするのを困難にさせる。
【0006】
バッファ管理の他の従来方法は、単に、各論理バッファの専用格納エリアを使用することである。格納スペースは、予想されるバッファ負荷に適合するサイズにされ、動作中は拡張したり縮小したりすることができない。この技術は、システム構成にかなりのコストとスペース要求を加えることがある。また、いくつかの論理バッファは、かなり頻繁に使用されないことがあり、さらに、バッファは、データがバッファ内にある間リサイズすることができないので、この技術は、メモリ格納装置の効率的な使用を提供しない。
【0007】
【課題を解決するための手段】
本発明は、メモリスペースからなる1つ以上の論理バッファを再配置し、リサイズする(再分割する、とも呼ばれる)技術を提供する。バッファは、一般に、異なるサイズからなり、メモリスペース内で隣接している。2つの論理バッファ間に空きメモリ位置がない場合は、バッファの1つ以上が位置を変えさせられ、その結果、他のバッファが空いた位置に拡張される。論理バッファ拡張は、バッファ内の上部メモリ位置をより高いメモリ位置に上げるか、または下部メモリ位置をより低いメモリ位置に下げるかのいずれかを含むことができ、その両方が、隣接する空きメモリスペースの利用可能性を要求する。また、上部および下部メモリ位置の両方とも、上げる/下げることができる。論理バッファ全体は、メモリスペース内に新たな上部および下部位置を割り当てることによって、メモリスペース内の異なるエリアに移動させることができる。しかしながら、メモリスペース内のバッファの順序は、変更することができない。本質的に、バッファは、両端部で空きスペースを含むように拡張するかまたは両端部で空きスペースを解放するように縮小することができる。
【0008】
バッファは、先入れ先出し(FIFO)によって動作し、読み出しアドレスポインタは、データが読み出されるべき次のメモリ位置を示し、書き込みアドレスポインタは、データが書き込まれるべき次のメモリ位置を示す。読み出しおよび書き込みアドレスポインタは、各々の動作が終了した後、1つのメモリ位置で実行される。ポインタは、上部バッファメモリ位置に到達した時、下部メモリ位置にラップバックする。
【0009】
本発明にしたがってバッファを移動またはリサイズするために、(以下に説明されるように)いくつかの条件が満足されると、下部および上部メモリアドレスは、要求されたもしくは新たな下部および/または要求されたもしくは新たな上部アドレスに変更され、論理バッファの移動つまりリサイジングが有効になる。いくつかの可能なシナリオが起こり得る。上部アドレスが、現在の上部アドレスを越えるメモリスペースを含むように変更された場合、論理バッファは、上方に拡張する。読み出しおよび書き込みポインタは、インクリメントするにつれて、以前の上部メモリアドレスを越えて新たな上部メモリアドレスに移動し、その後、下部位置にラップバックする。下部アドレスのみが、下部位置の下に隣接するメモリ位置の追加により変更された場合は、論理バッファは、下方に拡張する。読み出しおよび書き込みポインタは、上部メモリ位置に到達すると、新たな下部位置にラップバックする。隣接するメモリ位置がバッファに上下両方に追加されるように、上部および下部メモリ位置の両方が変更された場合は、上述のように両プロセスが実行される。したがって、本発明の教示によれば、論理バッファは、上部もしくは下部メモリ位置のどちらかから、または両メモリ位置から拡張あるいは縮小することができる。上または下または両方のこれらの移動プロセスの間、バッファ内のデータは違う格納位置に移動されないことに注意されたい。上部および下部メモリ位置、すなわちバッファの境界は拡張されて(または縮小されて)、より多いデータの格納に適合するようにバッファサイズを増大させる。したがって、より多くの格納位置が新たなデータを格納するのに利用可能になるが、既存のバッファデータは移動しない。
【0010】
本発明は、本発明の説明と添付図面に鑑み考察される場合に、より容易に理解されると共に、そのさらなる利点と効用がより容易に明らかになる。
【0011】
【発明の実施の形態】
データネットワークアプリケーションで使用される場合、論理バッファは、格納されたデータをサービスするネットワークプロセッサの利用可能性のために待機中のデータを格納する。たとえば、データは、適当な出力ポートにデータを転送するためにスイッチファブリックを待ち受けている間、ネットワークスイッチに格納される。バッファは、関連づけられるポートの出力データ速度に基づいたサイズにすることができる。一般に、バッファサイズと、このサイズの動的変更は、バッファアプリケーションによって決定される。第2のバッファに到着するデータの速度の2倍で到着するデータを格納する第1のバッファは、一般に、第2のバッファのサイズの2倍になっている。
【0012】
いくつかのアプリケーションにおいては、1つまたはそれ以上の論理バッファのサイズを拡張することによって、メモリスペースを動的に再分割(すなわち、リサイズまたは再配置)する必要がある。これは、入力ラインに現れるパケットの増加数に対してより多くのデータ格納スペースを提供することが要求される。また、バッファサイズの変更は、出力線のデータフロー遅延を制限するために出力ポートの媒体速度の変更を考慮することが要求される。たとえば、媒体ポートが、ポート線が処理することができるよりも多くのデータが伝送されていることを示すフロー制御を主張している場合は、伝送用プロセッサは、そのポートにデータを伝送するのを停止すべきである。しかし、データ伝送を停止するために伝送デバイスに信号を送るのに、有限時間が必要であり、したがって、ポートにおけるデータバッファは、ポートがフロー制御を主張した後に伝送されるこの追加のデータに適合することができなければならない。ポートバッファが、この追加のデータフローを格納するためにリサイズされると、バッファに格納されるデータの損失がないのが好適である。
【0013】
各バッファは、先入れ先出しデバイスとして動作し、2つのアドレスで定義される。第1のアドレスは、バッファのための下部すなわち最も低いメモリアドレスを定義し、第2のアドレスは、上部すなわち最も高いメモリエレメントを定義する。理解を簡単かつ容易にするために、上部および下部バッファアドレスは、論理バッファ参照符号の下付き文字のあるアルファベット文字BおよびTで呼ばれる。たとえば、B20は、論理バッファ20の下部メモリアドレスである。当業者は、一般に、メモリアドレス位置は2進数方式を使用していることが分かっている。
【0014】
典型的には、メモリスペースは、複数の論理バッファに分離され、(ハードウェアまたはソフトウェアで具体化される)コントローラは、各バッファの上部および下部メモリアドレスに基づいて各バッファの位置を追跡する。また、コントローラは、バッファのサイズを変更する必要がある環境を確認し、サイズを元通りに簡単に変更するのに利用できる十分な隣接メモリスペースがあるか否かを判定する。本発明によれば、十分な隣接スペースが利用できない場合は、隣接バッファを移動または拡張/縮小させて、バッファを拡張するための空いたメモリスペースを作り出すことができる。かけがえとして、当該バッファまたは隣接バッファは、十分な未使用メモリ位置が利用できるメモリスペース内の他の位置に移動することができる。本発明は、より大きいバッファの必要性を作り出す環境に適合するのに必要なものとして、データ損失なしに、論理バッファを再配置、拡張および縮小することを提供する。
【0015】
本発明によるリサイズ可能な循環バッファは、バッファの端部のデータラップアラウンドを持つことにより実行される。詳細には、バッファの下部位置が書き込まれた場合、書き込むべき次の位置は、バッファの上部位置である。相応じて、バッファの下部登録事項が読み出された場合、読み出されるべき次の登録事項は、上部または最初のアドレスである。バッファは、読み出しおよび書き込みアドレスが等しい時、空である。バッファは、次の書き込みアドレスが現在の読み出しアドレスに等しい場合、満たされている。バッファは、書き込みアドレスが読み出しアドレスより小さいまたは読み出しアドレスの後に存在する時は必ず、“ラップされて”いる。書き込みアドレス(先頭)が読み出しアドレス(後尾)の前に存在する場合は、バッファは“ラップされて”いない。“ラップされている”とは、基本的に、バッファ内の有効データがバッファの最後のアドレスを含み、そして、最初のアドレスに“ラップしている”ことを意味している。本発明により上部および下部アドレスを変更するための基本条件は、データが“ラップされて”いない時、またバッファ内に現在あるデータが新たなアドレスのいずれも越えて延長していない時を検出することである(要するに、新たなアドレスは、“ラップされて”いる状態を引き起こさないだろうということを証明している。)
【0016】
図1のメモリスペース10は、図示のように論理バッファ20,22,24および26からなり、それらは、対応する上部および下部アドレスを有する。この例では、論理バッファ22および24間と、論理バッファ24および26間に割り当てられていないメモリ位置があることに注目されたい。本発明の教示は、後者の場合に、空きスペースが拡張すべきバッファのためにまず利用可能になされる限り、論理バッファ間に割り当てられていないメモリ位置があるメモリスペースと、論理バッファが隣接しているメモリスペースとに適用することができる。コントローラ(図1には示されていない)は、初期下部および上部アドレス値を論理バッファ20,22,24および26に割り当てることが知られている。初期アドレス値が割り当てられると、本発明の方法および装置は、1つ以上の論理バッファがより多くのメモリ位置を必要とする場合に、上部および下部アドレスを動的に変更するように動作する。
【0017】
各バッファ用の上部および下部アドレスに加えて、読み出しアドレスまたは読み出しポインタ、すなわちデータが処理のために読み出されるアドレスと、データがバッファに書き込まれる書き込みアドレスまたは書き込みポインタがある。たとえば、あるアプリケーションでは、読み出しアドレスから取り出されたデータは、正しい出力ポートに切り替えるためのスイッチファブリックに入力される。読み出しアドレスポインタは、各読み出し動作後、アドレススペースを1つインクリメントする。読み出しアドレスは、論理バッファの上部アドレス(TXX)と等しい場合、下部アドレス(BXX)にラップバックする。読み出しアドレスは、ここでは、論理バッファ参照符号が下付き文字の形で付いている文字Rで示される。書き込みアドレス(または、書き込みポインタ)は、同様に、論理バッファを表す下付き文字が付いている“W”で示される。読み出しアドレスと同様に、書き込みアドレスも、各書き込み動作後、メモリ位置を1つインクリメントし、次いで、論理バッファの最も高いメモリアドレスに達した後、最も低いアドレスにラップバックする。
【0018】
典型的に、読み出しおよび書き込みプロセスは、論理バッファがオーバーフローしないように、同一速度で起こる。また、バッファからの読み出しとバッファへの書き込みのプロセスは、それぞれ、バッファを枯渇させることおよび充填することと呼ばれる。好適には、本発明の教示による循環バッファは、オーバーフローすべきではない。これは、充填速度が枯渇速度より小さいかまたは等しいことを保証することによりオーバーフローを防ぐことで、またはオーバーフローを避ける環境を強いる、たとえばオーバーフローを引き起こすどんな書き込み動作も放棄することで達成される。
【0019】
これらの論理バッファのための従来のアプリケーションにおいては、書き込みプロセスは、読み出しプロセスの前に起こる。したがって、書き込みアドレスは先頭アドレスと呼ばれ、読み出しアドレスは後尾アドレスと呼ばれる。一般に、先頭アドレスは、後尾アドレスより上にある。さもなければ、バッファは、ラップされているとみなされ、本発明によりリサイズまたは再配置されて、その瞬間は実行されない。しかし、データが充填または枯渇している限り、バッファがラップされず、したがって、本発明によりリサイズされない時間がある。たとえば、書き込みアドレスポインタがアドレス1,2および3によりインクリメントするにつれて、データは、論理バッファのメモリ位置1,2,および3に書き込まれる。読み出しプロセスは、書き込みプロセスの後に続く。プロセッサがバッファからのデータを要求するにしたがって、データは、FIFOプロセスを実行するべくアドレス位置1,2および3からその順番に読み出される。データがある位置から読み出されて処理されると、そのメモリ位置は、空とみなされる。すなわち、読み出しプロセスはその位置にデータを保持していたが、データはすでに読み出されて処理されているので、もはや有効ではない。したがって、本発明にしたがって、これらの“空の”メモリ位置を再使用することができるか、または、論理バッファをリサイズし、これらの位置をバッファから削除することができる。
【0020】
本発明の説明を簡単にするために、この時点で、本発明は、1個のバッファと、このバッファを、バッファの下部メモリ位置、バッファの上部メモリ位置または上部および下部メモリ位置の両方のための新たなアドレスで決定される新たな位置に移動またはリサイズするプロセスとに関して考察される。当業者は、これらの教示は、複数のバッファに適用することができることが分かる。図2A,2B,2C,2Dおよび2Eに示されるように、論理バッファを本発明の教示により移動および/またはリサイズすることができるいくつかの異なるシナリオがある。図2Aでは、論理バッファ20の上部および下部アドレスの両方が、ブロックサイズを変えないままで、メモリスペース内のより高い位置に移動される。これは、下部および上部メモリ位置アドレスB20およびT20の両方に、同じ値“1”を加算することによって達成される。図2Bは、論理バッファ20が、より低い下部メモリ位置B20-mを含むより低いメモリ位置に拡張され、上部アドレス位置が固定されたままであるシナリオを示す。図2Cでは、論理バッファは、メモリ位置アドレスT20+nまで上方に拡張されるが、下部アドレスは変更されない。図2Dでは、上部アドレスはT20+pまで移動し、下部メモリ位置はB20+qまで移動している。論理バッファサイズは、(p−q)が(T20−B20)より小さいので、縮小している。図2Dに示されない他のシナリオでは、バッファ20の上端は位置T20に留まり、下端はB20+qに移動する。図2Eでは、論理バッファは、B20-sの下部位置とT20+tの上部アドレスに両方向に拡張する。
【0021】
図3は、バッファサイズを変更することなく、図2Aに示されるように論理バッファを上方に移動させるステップを示すフローチャートである。この宇Hろーチャート入力パラメータは、論理バッファ20の現在の下部および上部メモリ入りを含む。パラメータnew_baseおよびnew_topは、論理バッファが移動されるように要求されたメモリ位置である。論理バッファのいくつかの条件は、フローチャートに示されているように、new_baseおよびnew_top位置の両方への論理バッファの移動を防ぐ。
【0022】
バッファ20を上方に移動させるためには、まず、論理バッファ20の書き込みアドレスが読み出しアドレスより大きいか小さいかを決定する必要がある。一般に、動作中、書き込みアドレスは読み出しアドレスより大きい。なぜなら、データは、バッファから読み出される前に、まずバッファに書き込まれるからである。読み出しアドレスが書き込みアドレスより大きければ、論理バッファは、ラップされた状態にあり、ラップされない状態になるまで移動させることができない。したがって、この決定は、図5の決定ステップ50に示されるように行われる。その結果が否定的ならば、処理は、論理バッファがラップされない状態になるまで、決定ステップ50に戻って継続する。データが書き込まれたり読み出されたりするとき、論理バッファは使用継続中なので、ラップされ状態は、延長期間の間普及しない。
【0023】
ラップされない場合、決定ステップ50からの結果は肯定となり、処理はステップ52に進み、論理バッファ20の下部アドレスが、要求されたnew_baseメモリ位置に等しく設定される。
【0024】
決定ステップ54では、読み出しアドレスが、new_base位置と比較される。読み出しアドレスがnew_baseメモリ位置より大きければ、論理バッファの下部位置は、データ損失なしに上方に移動することができる。なぜなら、下部位置と読み出しポインタ間のメモリ位置は、すでに読み出されており、もはや必要とされないからである。決定ステップ50は、書き込みアドレスが読み出しアドレスの前にあることをすでに保証したことを思い出されたい。しかし、new_base位置が読み出しアドレスより上にあれば、new_base位置と読み出しアドレス間のそのメモリ位置に格納されているデータは、バッファが移動されると失われてしまうだろう。読み出しアドレスとnew_baseアドレスの関係は、決定ステップ54で決定され、そのシナリオは図4Aに示され、ここでは、読み出しアドレスポインタは、new_baseアドレスより下に示されている。論理バッファがこれらの条件の下に移動された場合、下部アドレスは、現在の位置からnew_base位置へ移動し、領域58にあるデータは、図4Bに示されるように読み出しポインタが現在論理バッファ20の外側にあるので失われることに注目されたい。バッファコントローラがこれを悟ると、読み出しポインタは、現在new_baseアドレスになっているバッファ20内の最も近い能動メモリ位置に移動し、領域58内のデータが失われることになる。
【0025】
読み出しアドレスが、new_baseメモリ位置より下にある、つまりより小さい(決定ステップ54の結果が否定である)場合には、プロセスは、ステップ64に進み、ここでは、下部メモリ位置は、読み出しアドレスと等しく設定され、したがって、バッファが移動された時に、新たな下部アドレスが読み出しポインタより上にあるという状態が避けられる。図5を参照されたい。下部メモリ位置が確立されると、上部位置は、それに応じてステップ66で移動される。論理バッファサイズを保持するために、上部位置は、読み出しアドレスプラスnew_top値とnew_base値の差に等しく設定される。他の実施例では、バッファサイズを維持する必要がなく、したがって、new_topアドレスを、要求通りに決定することができる。ステップ68で、論理バッファ20の再配置は終了し、読み出しおよび書き込み動作が継続する。
【0026】
読み出しアドレスポインタがnew_base値より上にある場合は、決定ブロック54からの結果は肯定になり、処理はステップ60に進み、ここでは、論理バッファ20の下部アドレスは、new_base値に再配置される。これを達成するために、ステップ60で、下部アドレスは、要求されたnew_baseメモリアドレスに等しく設定される。ステップ62で、上部メモリアドレスは、要求されたnew_topアドレスに変更される。処理はステップ68に進み、ここでは、データが、論理バッファ20に書き込まれたり論理バッファ20から読み出されたりする。読み出しおよび書き込みアドレスポインタは共に、古い上部アドレスに達するまで、古いバッファメモリ位置によりインクリメントし続ける。この時点で、それらは、new_base位置にラップされ、そして、new_top位置に達するまでバッファアドレスによりインクリメントし続け、その時点で、new_base位置にラップバックされる。
【0027】
図6は、図2B,2Cおよび2Dに示されるように、論理バッファを一方向または両方向にリサイズするプロセスを示すソフトウェアフローチャートである。値new_topおよびnew_baseは、論理バッファが移動されるべき要求された位置である。このプロセスは、決定ステップ84で始まり、ここで、書き込みアドレスは読み出しアドレスと比較され、前者が後者より大きいかまたは等しい(すなわち、バッファがラップされている)かどうかが決定され、次いで、書き込みアドレスは、new_topアドレスと比較され、前者が後者より大きいかまたは等しいかが決定される。両決定の結果が肯定ならば、バッファの上部アドレスを調整するのが安全である。したがって、ステップ86で、バッファのアドレスは、new_top値に等しく設定される。
【0028】
決定ステップ84からの結果が否定ならば、プロセスは決定ステップ88に進み、ここで、書き込みアドレスが読み出しアドレスと比較され、次いで、読み出しアドレスがnew_baseアドレスと比較される。書き込みアドレスが読み出しアドレスより大きいかまたは等しく、読み出しアドレスがnew_baseアドレスより大きいかまたは等しい場合は、下部アドレスを移動させるのが安全である。したがって、ステップ90で、下部アドレスはnew_base値に等しく設定され、バッファ移動は終了する。決定ステップ88からの否定的な結果は、処理をフローチャートのスタートに戻す。
【0029】
図6に示されるように上部および下部アドレスのこれらの変更は、いずれの順番でも発生させることができる。詳細には、バッファが上方へ移動しているならば、上部調整は、下部調整の前に発生することがある(すなわち、上部を拡張し、道を外れて移動させるためにデータを待ち受け、次いで下部を上方へ移動させる)。反対に、バッファが下方に移動されることになる場合は、下部が拡張され、残りのデータが新たな下部アドレスの近くになるまで(したがって、バッファの上端が空になるまで)、バッファ外に移動させるためにデータを待ち受け、次いで、上部を下方へ移動させる。
【0030】
図1に関して説明したように、典型的には、メモリスペース10を構成する複数の論理バッファがある。論理バッファ、たとえば論理バッファ20および22が隣接している場合は、図2Cに示され図6のフローチャートで説明されたように論理バッファ20を上方に拡張するために、論理バッファ22を移動させる、つまり、論理バッファ22をより高い下部メモリ位置に少なくとも移動させて、そこに移動させるためのスペースを論理バッファ20に提供することが、まず必要である。しかしながら、論理バッファ24を上方に拡張して、他の論理バッファのどれも移動させる必要なしに、位置T24およびB26間のメモリ位置を占有することができる。したがって、メモリスペース内の論理バッファの拡張および移動は、同じメモリスペースを占有する他のバッファの位置およびサイズを考えながら実行しなければならない。バッファコントローラは、個々の論理バッファを管理して、各論理バッファおよび利用可能なメモリリソースの予想されるデータ格納必要条件に基づき各々の論理バッファを最適化する必要がある。
【0031】
このようなコントローラの一例は図7に示され、ここでは、コントローラ100は、各論理バッファのために下部および上部メモリ位置を確立するために、メモリスペース10に入力信号を供給する。また、信号は、new_topおよびnew_base値とバッファ番号も含む。バッファモニタ102は、メモリスペース10に応じて、その中の多数のバッファの動作を監視し、予め決められたアルゴリズムに基づいて、特定のバッファのサイズを増大させるべきか減少させるべきかを決定する。たとえば、バッファが、その利用可能な格納位置を頻繁に枯渇させ、それによりデータパケットを失い、したがって、ソースから再伝送されなければならない場合は、バッファモニタ102は、コントローラ100に指示して、メモリスぺーS10内のメモリ位置を再配置し、バッファのための追加のメモリ位置を提供する。この再配置は、本発明にしたがって、上部メモリ位置、下部メモリ位置、または上部および下部メモリ位置の両方を拡張することによって、あるいは、メモリスペース10の異なるエリアにバッファを再配置してそこの追加のメモリ位置を割り当てることによって達成される。また、バッファモニタ102は、メモリスペース10内の論理バッファのサイズを決定する際に有効なシステム利用情報を提供する1つ以上のシステム信号に応答する。たとえば、新しい高速デバイスがシステムに追加され、システムリソースの1つに基づくサービスを主張する場合は、バッファオーバーフローとデータ損失を避けるために新デバイスを支援するバッファのサイズを増大させる必要がある。
【0032】
他の実施例では、本発明の教示は、図3および図6のフローチャートにしたがうソフトウェアで実行することができる。ソフトウェアプログラムは、メモリスペース10内のバッファ位置を制御する専用プロセッサで実行することができる。かけがえとして、ソフトウェアプログラムは、メモリスペースが関連しているシステムと関連するプロセッサによる時分割で実行することができる。
【図面の簡単な説明】
【図1】複数の論理バッファに分離されたメモリスペースを示す図である。
【図2A】リサイジングおよび再配置前および後の論理バッファを示す図である。
【図2B】リサイジングおよび再配置前および後の論理バッファを示す図である。
【図2C】リサイジングおよび再配置前および後の論理バッファを示す図である。
【図2D】リサイジングおよび再配置前および後の論理バッファを示す図である。
【図2E】リサイジングおよび再配置前および後の論理バッファを示す図である。
【図3】本発明の教示によるバッファリサイジングプロセスのフローチャートを示す図である。
【図4】4Aおよび4Bは、リサイジングおよび/または再配置前および後の論理バッファ位置を示す図である。
【図5】リサイジングおよび/または再配置前および後の論理バッファ位置を示す図である。
【図6】本発明の教示によるバッファ再配置プロセスのフローチャートを示す図である。
【図7】メモリスペースと、メモリスペース内の論理バッファを制御する構成要素を示すブロック図である。

Claims (21)

  1. メモリバッファの下部アドレスおよび上部アドレスのうちの少なくとも1つを新たな下部アドレスまたは新たな上部アドレスに変更する方法であって、
    複数のメモリバッファがメモリスペース内に隣接する位置を占め、およびデータが、先入れ先出しにより、書き込みアドレスでバッファに書き込まれ、かつ読み出しアドレスで該第1のバッファから読み出されると共に、書き込みおよび読み出しアドレスが、上部アドレスに達した際に下部アドレスに戻ってラップするようになっている方法において、
    書き込みアドレスが、読み出しアドレスと第1の予め決められた関係を持っているかどうかを決定するステップと、
    読み出しアドレスが、新たな下部アドレスと第2の予め決められた関係を持っているかどうかを決定するステップと、
    該新たな下部アドレスが該複数のバッファのうちの第2のバッファのメモリスペース内にあるかどうかを決定するステップと、
    書き込みアドレスが読み出しアドレスと第1の予め決められた関係を持っており、かつ読み出しアドレスが、新たな下部アドレスと第2の予め決められた関係を持っており、および該新たな下部アドレスが該第2のバッファのメモリスペース内にない場合に、該下部アドレスを該新たな下部アドレスに変更するするステップと、を含む方法。
  2. 請求項1記載の方法において、第1の予め決められた関係は、書き込みアドレスが読み出しアドレスより大きいかまたは等しいことである方法。
  3. 請求項1記載の方法において、第2の予め決められた関係は、読み出しアドレスが新たな下部アドレスより大きいかまたは等しいことである方法。
  4. 請求項1記載の方法において、書き込みアドレスと読み出しアドレスは、それぞれの読み出しまたは書き込み動作にしたがってインクリメントされる方法。
  5. 請求項1記載の方法において、読み出しアドレスが新たな下部アドレスと第2の予め決められた関係を持っている場合、下部アドレスを読み出しアドレスに設定する方法。
  6. 請求項5記載の方法において、読み出しアドレスが新たな下部アドレスと第2の予め決められた関係を持っており、バッファサイズが変更されないままになっている場合、上部アドレスを、読み出しアドレスと新たな上部アドレスおよび新たな下部アドレスの差との和に設定する方法。
  7. メモリバッファの下部アドレスおよび上部アドレスのうちの少なくとも1つを新たな下部アドレスまたは新たな上部アドレスに変更する方法であって、データが、先入れ先出しにより、書き込みアドレスでバッファに書き込まれかつ読み出しアドレスでバッファから読み出されると共に、書き込みおよび読み出しアドレスが、上部アドレスに達したことに基づいて下部アドレスに戻ってラップするようになっている方法において、
    書き込みアドレスが、読み出しアドレスと第1の予め決められた関係を持っているかどうかを決定するステップと、
    書き込みアドレスが、新たな上部アドレスと第2の予め決められた関係を持っているかどうかを決定するステップと、
    書き込みアドレスが読み出しアドレスと第1の予め決められた関係を持っており、かつ書き込みアドレスが、新たな上部アドレスと第2の予め決められた関係を持っている場合、上部アドレスを新たな上部アドレスに設定するステップと、を含む方法。
  8. 請求項7記載の方法において、第1の予め決められた関係は、書き込みアドレスが読み出しアドレスより大きいかまたは等しいことである方法。
  9. 請求項7記載の方法において、第2の予め決められた関係は、書き込みアドレスが新たな上部アドレスより大きいかまたは等しいことである方法。
  10. 請求項7記載の方法において、書き込みアドレスと読み出しアドレスは、それぞれの読み出しまたは書き込み動作にしたがってインクリメントされる方法。
  11. 各々が下部格納位置と上部格納位置間の複数の格納位置を含む、複数のバッファを含むメモリスペースにおいて、データが、先入れ先出しにより、書き込みアドレスでバッファに書き込まれ、かつ読み出しアドレスでバッファから読み出されると共に、書き込みおよび読み出しアドレスが、上部アドレスに達した際に下部アドレスに戻ってラップするようになっており、複数のバッファのうちの1つ以上に割り当てられた格納位置を再配置する方法であって、
    下部格納位置および上部格納位置のうちの少なくとも1つに隣接する空き格納位置の利用可能性を決定するステップと、
    該書き込みアドレスが該読み出しアドレスより大きいかまたは等しいことに応答して、および該読み出しアドレスが新たな下部格納位置のアドレスより大きいかまたは等しいことに応答して、該複数のバッファのうちの1つのバッファの下部格納位置を、利用可能な空きの格納位置における新たな下部格納位置に移動するステップと、を含む方法。
  12. 請求項11記載の方法において、複数のバッファは隣接しており、複数のバッファのうちの少なくとも1つのサイズは、空き格納位置を作り出すために減少される方法。
  13. 請求項11記載の方法において、複数のバッファのうちの少なくとも2つは、空き格納位置によって分離されている方法。
  14. 請求項11記載の方法において、データは、複数のバッファのうちの各バッファから読み出されかつ各バッファに書き込まれ、データが複数のバッファのうちの1つのバッファの格納位置から読み出された後、該格納位置は空き格納位置とみなされる方法。
  15. 請求項11記載の方法において、下部格納位置と読み出しアドレス間に位置している複数のバッファのうちの1つのバッファの格納位置は、空き格納位置とみなされる方法。
  16. 請求項11記載の方法において、下部格納位置および上部格納位置は、複数の隣接する空き格納位置を取り囲むように、共に変更される方法。
  17. 請求項11記載の方法において、複数の格納バッファのうちの1つのバッファの上部格納位置は、新たな上部格納位置に移動され、前記方法はさらに、
    バッファの書き込みアドレスが、その読み出しアドレスと第1の予め決められた関係を持っているかどうかを決定し、
    バッファの読み出しアドレスが、新たな上部アドレスと第2の予め決められた関係を持っているかどうかを決定し、
    書き込みアドレスが読み出しアドレスと第1の予め決められた関係を持っており、かつ書き込みアドレスが、新たな上部アドレスと第2の予め決められた関係を持っている場合、上部アドレスを新たな上部アドレスに設定することを含む方法。
  18. 請求項17記載の方法において、第1の予め決められた関係は、書き込みアドレスが読み出しアドレスより大きいかまたは等しいことである方法。
  19. 請求項17記載の方法において、第2の予め決められた関係は、書き込みアドレスが新たな上部アドレスより大きいかまたは等しいことである方法。
  20. 各々のバッファが下部アドレスと上部アドレスの間の複数のメモリ位置から成る複数のメモリバッファから成るメモリシステムであって、データが、先入れ先出しにより、書き込みアドレスでバッファに書き込まれかつ読み出しアドレスでバッファから読み出されると共に、書き込みおよび読み出しアドレスが、上部アドレスに達した際に下部アドレスに戻ってラップするメモリシステムにおいて、メモリバッファをリサイズするための方法において、
    第1の複数のメモリ位置から成る第1のメモリバッファを第2の複数のメモリ位置にリサイズするステップであって、該書き込みアドレスが該読み出しアドレスよりも大きい又は等しい場合、および該読み出しアドレスが第2の下部アドレスよりも大きい又は等しい場合に第1の下部アドレスを第2の下部アドレスに変更する処理、又は該書き込みアドレスが該読み出しアドレスよりも大きいか又は等しく、かつ該書き込みアドレスが該第2の上部アドレスよりも小さいか又は等しい場合に第1の上部アドレスを第2の上部アドレスに変更する処理から成るステップと、
    該第2のメモリバッファが該第1の複数のメモリ位置の1つもしくは2つ以上から成るように第2のメモリバッファをリサイズするステップと、を含む方法。
  21. 各々のバッファが下部アドレスと上部アドレスの間の複数のメモリ位置から成る複数のメモリバッファから成るメモリシステムであって、データが、先入れ先出しにより、書き込みアドレスでバッファに書き込まれかつ読み出しアドレスでバッファから読み出されると共に、書き込みおよび読み出しアドレスが、上部アドレスに達した際に下部アドレスに戻ってラップするメモリシステムにおいて、メモリバッファをリサイズするためのコントローラにおいて、
    該書き込みアドレスが該読み出しアドレスよりも大きい又は等しい場合、および該読み出しアドレスが第2の下部アドレスよりも大きい又は等しい場合に第1の下部アドレスを第2の下部アドレスに変更することによって、又は該書き込みアドレスが該読み出しアドレスよりも大きいか又は等しく、かつ該書き込みアドレスが該第2の上部アドレスよりも小さいか又は等しい場合に第1の上部アドレスを第2の上部アドレスに変更することによって、第1の複数のメモリ位置から成る第1のメモリバッファを第2の複数のメモリ位置にリサイズするコントローラ要素を備え、このコントローラ素子は、該第2のメモリバッファが該第1の複数のメモリ位置の1つもしくは2つ以上から成るように第2のメモリバッファをリサイズするよう動作するコントローラ。
JP2002369547A 2001-12-21 2002-12-20 データ損失のないバッファ分割方法および装置 Expired - Fee Related JP4504615B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/037163 2001-12-21
US10/037,163 US6801991B2 (en) 2001-12-21 2001-12-21 Method and apparatus for buffer partitioning without loss of data

Publications (3)

Publication Number Publication Date
JP2003242024A JP2003242024A (ja) 2003-08-29
JP2003242024A5 JP2003242024A5 (ja) 2006-02-02
JP4504615B2 true JP4504615B2 (ja) 2010-07-14

Family

ID=21892781

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002369547A Expired - Fee Related JP4504615B2 (ja) 2001-12-21 2002-12-20 データ損失のないバッファ分割方法および装置

Country Status (5)

Country Link
US (1) US6801991B2 (ja)
JP (1) JP4504615B2 (ja)
KR (1) KR100939649B1 (ja)
GB (1) GB2386717A (ja)
TW (1) TW200301421A (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040069344A (ko) * 2001-12-28 2004-08-05 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 데이터 디코딩 방법, 수신기 및 컴퓨터 프로그램 제품
US8386727B2 (en) * 2001-12-31 2013-02-26 Hewlett-Packard Development Company, L.P. Supporting interleaved read/write operations from/to multiple target devices
US6782461B2 (en) * 2002-02-25 2004-08-24 Intel Corporation Dynamically adjustable load-sharing circular queues
US6813658B2 (en) * 2002-03-27 2004-11-02 Intel Corporation Dynamic data queuing mechanism for packet networks
DE10219359B4 (de) * 2002-04-30 2007-05-03 Advanced Micro Devices, Inc., Sunnyvale Vorrichtung und Verfahren mit einem Queuemechanismus
US8635355B2 (en) * 2002-05-01 2014-01-21 Stmicroelectronics, Inc. Method for pre-caching content to enable true VOD systems from NVOD or stream limited VOD systems
US7639263B2 (en) * 2007-01-26 2009-12-29 Microsoft Corporation Fast filtered YUV to RGB conversion
US7783823B2 (en) * 2007-07-31 2010-08-24 Hewlett-Packard Development Company, L.P. Hardware device data buffer
US9911470B2 (en) 2011-12-15 2018-03-06 Nvidia Corporation Fast-bypass memory circuit
US8904067B2 (en) * 2012-03-13 2014-12-02 Microsoft Corporation Adaptive multi-threaded buffer
US9424685B2 (en) 2012-07-31 2016-08-23 Imagination Technologies Limited Unified rasterization and ray tracing rendering environments
CN103632712A (zh) 2012-08-27 2014-03-12 辉达公司 存储单元和存储器
GB2505884B (en) * 2012-09-12 2015-06-03 Imagination Tech Ltd Dynamically resizable circular buffers
US9685207B2 (en) 2012-12-04 2017-06-20 Nvidia Corporation Sequential access memory with master-slave latch pairs and method of operating
US9281817B2 (en) 2012-12-31 2016-03-08 Nvidia Corporation Power conservation using gray-coded address sequencing
US20140244921A1 (en) * 2013-02-26 2014-08-28 Nvidia Corporation Asymmetric multithreaded fifo memory
US10141930B2 (en) 2013-06-04 2018-11-27 Nvidia Corporation Three state latch
US10185651B2 (en) * 2014-04-10 2019-01-22 Hewlett Packard Enterprise Development Lp Relocating a virtual address in a persistent memory
DE102015209486A1 (de) * 2015-05-22 2016-11-24 Robert Bosch Gmbh FIFO Speicher mit im Betrieb veränderbarem Speicherbereich
US10644844B1 (en) * 2017-04-05 2020-05-05 Xilinx, Inc. Circuit for and method of determining error spacing in an input signal

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09128214A (ja) * 1995-10-31 1997-05-16 Toshiba Corp データ処理装置及びデータ処理方法
JPH09190308A (ja) * 1996-01-10 1997-07-22 Canon Inc バッファ管理方法及びそれを用いた印刷装置
JPH11296344A (ja) * 1998-04-03 1999-10-29 Nec Corp データバッファ回路
JP2000330761A (ja) * 1999-05-18 2000-11-30 Canon Inc リングバッファ制御装置およびリングバッファ制御方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4169289A (en) 1977-07-08 1979-09-25 Bell Telephone Laboratories, Incorporated Data processor with improved cyclic data buffer apparatus
GB9510932D0 (en) 1995-05-31 1995-07-26 3Com Ireland Adjustable fifo-based memory scheme
US5860149A (en) 1995-06-07 1999-01-12 Emulex Corporation Memory buffer system using a single pointer to reference multiple associated data
US5956492A (en) * 1996-03-29 1999-09-21 Lsi Logic Corporation N-deep fixed latency fall-through FIFO architecture
US6381659B2 (en) * 1999-01-19 2002-04-30 Maxtor Corporation Method and circuit for controlling a first-in-first-out (FIFO) buffer using a bank of FIFO address registers capturing and saving beginning and ending write-pointer addresses
GB2371641B (en) 2001-01-27 2004-10-06 Mitel Semiconductor Ltd Direct memory access controller for circular buffers

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09128214A (ja) * 1995-10-31 1997-05-16 Toshiba Corp データ処理装置及びデータ処理方法
JPH09190308A (ja) * 1996-01-10 1997-07-22 Canon Inc バッファ管理方法及びそれを用いた印刷装置
JPH11296344A (ja) * 1998-04-03 1999-10-29 Nec Corp データバッファ回路
JP2000330761A (ja) * 1999-05-18 2000-11-30 Canon Inc リングバッファ制御装置およびリングバッファ制御方法

Also Published As

Publication number Publication date
US6801991B2 (en) 2004-10-05
KR100939649B1 (ko) 2010-02-03
GB2386717A (en) 2003-09-24
KR20030053445A (ko) 2003-06-28
JP2003242024A (ja) 2003-08-29
GB0227954D0 (en) 2003-01-08
TW200301421A (en) 2003-07-01
US20030120886A1 (en) 2003-06-26

Similar Documents

Publication Publication Date Title
JP4504615B2 (ja) データ損失のないバッファ分割方法および装置
US6678813B1 (en) Dynamically adaptive buffer mechanism
CN104090847B (zh) 一种固态存储设备的地址分配方法
KR20030054993A (ko) 기지국 모뎀의 메모리 제어장치
US6922765B2 (en) Method of allocating physical memory space having pinned and non-pinned regions
US8478932B2 (en) Power efficient memory management for embedded systems
JP4429780B2 (ja) 記憶制御装置、制御方法、および制御プログラム。
EP3561678B1 (en) Information processing device and memory access method
US5568635A (en) Physical memory allocation system, program execution scheduling system, and information processor
US20030093629A1 (en) Buffer management method and a controller thereof
WO2024060682A1 (zh) 内存管理方法、装置、内存管理器、设备及存储介质
JP2005500620A (ja) 移動するメモリブロックを備えるメモリプール
US7113516B1 (en) Transmit buffer with dynamic size queues
JP3777162B2 (ja) キューを維持するための方法及び装置
EP0694831A2 (en) Computer system having storage unit provided with data compression function andmethod of management of storage area thereof
CN117078495A (zh) 图形处理器的内存分配方法、装置、设备及存储介质
JP4592367B2 (ja) プログラムセクションレイアウト方法およびレイアウト処理プログラム
JP2004527024A (ja) 多重チャネルを有するデータメモリアクセス用のスケジューラ
JPH0784562A (ja) イメージ格納装置
KR102076248B1 (ko) 선택 지연 가비지 컬렉션 방법 및 이를 이용한 메모리 시스템
CN110764707A (zh) 数据处理方法及装置
JP2005521939A (ja) メモリプールの変形
JP2005508114A (ja) 家庭用ビデオ・サーバのための受入れ制御システム
US9965211B2 (en) Dynamic packet buffers with consolidation of low utilized memory banks
US20050198361A1 (en) Method and apparatus for meeting a given content throughput using at least one memory channel

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051207

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081117

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090217

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090220

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090515

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100301

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100312

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20100312

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130430

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130430

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140430

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees