JP4315461B2 - ソリッドステートドライブ及びデータ書き込み方法 - Google Patents

ソリッドステートドライブ及びデータ書き込み方法 Download PDF

Info

Publication number
JP4315461B2
JP4315461B2 JP2008037137A JP2008037137A JP4315461B2 JP 4315461 B2 JP4315461 B2 JP 4315461B2 JP 2008037137 A JP2008037137 A JP 2008037137A JP 2008037137 A JP2008037137 A JP 2008037137A JP 4315461 B2 JP4315461 B2 JP 4315461B2
Authority
JP
Japan
Prior art keywords
data
lru
memory
segment
physical segment
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.)
Active
Application number
JP2008037137A
Other languages
English (en)
Other versions
JP2009134682A (ja
Inventor
浩道 織部
政樹 滝川
佳宏 鬼頭
Original Assignee
株式会社ハギワラシスコム
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 株式会社ハギワラシスコム filed Critical 株式会社ハギワラシスコム
Priority to JP2008037137A priority Critical patent/JP4315461B2/ja
Priority to US12/261,133 priority patent/US8209465B2/en
Publication of JP2009134682A publication Critical patent/JP2009134682A/ja
Application granted granted Critical
Publication of JP4315461B2 publication Critical patent/JP4315461B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory

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)
  • Read Only Memory (AREA)
  • Memory System (AREA)
  • Sewing Machines And Sewing (AREA)
  • Debugging And Monitoring (AREA)
  • Communication Control (AREA)

Description

本発明は、ホストからNAND型フラッシュメモリに書き込み指令されたデータを一旦保持するためのキャッシュメモリを備えたソリッドステートドライブ及びデータ書き込み方法に関する。
はじめに、フラッシュメモリに対する従来のデータの書き込み方法について説明する。NAND型フラッシュメモリは、例えば、図1のような構造をとっており、ページ単位でデータの書き込み(プログラム)及び読み出しが実行され、ブロック単位でデータの消去が実行される。図1の例の場合、NAND型フラッシュメモリは8192のブロック(物理ブロック)で構成されるとともに、1ブロックは64ページで構成され、さらに1ページは、ユーザデータ512byteとECC(エラーチェックコード)と管理情報が計16byteの、合計528byteを1ECCセクタ(本願では単にセクタという)として計4セクタ有する構成からなっている。
NANDフラッシュメモリの物理ブロックアドレスは論理ブロックアドレスとの対応関係で管理される。ホストがNANDフラッシュメモリに対し、データの書き込みやデータの読み出しを実行させる際は、その対象となるアドレスをNAND型フラッシュメモリに対して指定する(ホストが指定するこのアドレスは、一般に“ホストLBA”と称される)。このとき、NANDフラッシュメモリのコントローラは、ホストLBAをNANDフラッシュメモリの論理ブロックアドレスと認識し、論理ブロックアドレスと物理ブロックアドレスの対応関係表(本願では、“論理ブロック-物理ブロック変換テーブル”という)を参照してその論理ブロックアドレスに対応するNANDフラッシュメモリの物理ブロックアドレスを割り出す。そして、その物理ブロックアドレスによって、ホストがその物理ブロックのどのページのどのセクタを基点としてデータの書き込みや読み出しを行うよう指定しているのかを割り出す(図2参照)。尚、ホストからは、ホストLBAとともに、当該書き込みデータサイズ(何セクタ分であるか)が通知される。
ホストからデータの書き込み指令があった場合は、NANDフラッシュメモリ内の空きブロックに、書き換える必要のないデータとホストから送出された書き換え用データを合成してブロック単位でデータを書き直す必要がある。以下、12セクタのデータ(ホストLBAを先頭アドレスとして書き込みを行うセクタ数)がホストから書き込み指令された場合の書き込み処理について、順次、図に従って説明する。
図3に示すように、ホストLBAより、データの書き換え開始を実行すべき物理アドレスが、物理ブロックアドレス1(PB1)の4ページ目(P3)の第2番目のセクタ(S1)であると判明したとする。すると、論理ブロックアドレスと対応付けされていない空きブロックを探し(これを「書き込みブロック」という。ここでは第9番目の物理ブロック/EB8を使用するものとする)、これに、データの書き換えを行わないページであるP0からP2までをコピーする(図4参照)。本例の場合、書き換えがP3の途中(S1)から開始するので、P3からセクタS0を読み出して、一旦バッファに移す(図5参照)。次に、NANDコマンドプロトコルに従って、前記空きブロック(EB8)の4ページ目(P3)のS0に前記バッファに移したデータをコピーするとともに、ホストから送出された書き込み用データをS1から11セクタ分書き込む(図6)。最後の12セクタ目のデータは7ページ目(P6)のS0に書き込まれるべきデータであるが、1ページに満たないデータは書き込みできないので、PB1のP6から、S1からS3までを一旦バッファに移す(図7)。そして、P6のセクタS0に、ホストから送出された12番目のセクタデータを書き込むとともに、S1からS3には、前記バッファに一旦移してあるデータを移し合成する(図8)。
そして、PB1のP7から最終ページまでのデータをEB8にコピーする(図9)。そしてPB1に書き込まれている全データを消去し、論理ブロック-物理ブロック変換テーブルを更新し、ホストからの一のデータ書き込み指令に対する処理が終了する。
ところで、NAND型フラッシュメモリの場合、ホストから書き込み指令がなされた場合、その都度、NAND型フラシュメモリに対して上記書き込み処理が実行される。このため、書き込み処理に時間が掛かる。さらに、NAND型フラッシュメモリの寿命はデータの書き込みや消去の回数に依存するため、これが頻繁に行われる従来の方法では、NAND型フラッシュメモリの長寿命化を図り難いという問題がある。
特開2000−349853 特開2001−273776 特開2006−323739
ここにおいて、本発明が解決すべき課題は、より迅速で、NAND型フラッシュメモリやこれを制御するコントローラに掛かる負荷を軽減することのできるキャッシュメモリを備えたソリッドステートドライブ及びデータ書き込み方法を提供することにある。その他の課題は、明細書、図面、特に特許請求の範囲から自ずと明らかとなろう。
上記課題解決のため、本発明は、ホストから書き込み指令されたデータをキャッシュメモリに一旦待避してからNAND型フラッシュメモリに書き込む、キャッシュメモリを備えたソリッドステートドライブ及びデータ書き込み方法を提供する。即ち、ホストとNAND型フラッシュメモリの間にキャッシュメモリを介在させ、ホストから時々刻々送出されてくる書き込み用データを、キャッシュメモリのセグメントに一旦待避させる。これにより、所定論理ブロックに対するホストからのデータ書き込み指令を纏めて処理することができ、NAND型フラッシュメモリやこれを制御するコントローラに過度の負担を掛けることなく、書き込み時間を軽減し、併せてNAND型フラッシュメモリの寿命延長を図ることができる。
さらに具体的には、本願が特許請求の範囲に記載する新規な特徴的構成により、上記課題を解決する。
以下、本発明を実施するための最良の形態について図面を用いて説明するが、本発明は特許請求の範囲内において種々の形態を採ることができ、下記実施形態に限定されないことはいうまでもない。
(フラシュメモリのデータ領域の構成例)
発明を説明するにあたり、初めに、フラッシュメモリのページ構成例について図10により説明する。フラッシュメモリは、二値小ブロック、二値大ブロックの他、多値大ブロックがある。二値小ブロックは、1ページが1ECCセクタ、即ち、512byteのデータ領域と16byteの冗長領域で構成されるとともに(図10(a))、1ブロックが16ページ又は32ページで構成される。二値大ブロックは、例えば1ページが4ECCセクタで構成されるとともに、1ブロックが64ページで構成される。多値大ブロックも、例えば、1ページが4ECCセクタで構成され得るが(図10(b))、1ブロックが64ページ又は128ページで構成される。本発明のキャッシュメモリを供えたソリッドステートドライブ及びデータ書き込み方法は、前記二値メモリと多値メモリのいずれにも適用可能であるが、本実施形態例では、特にことわりのない限り、1ページが4ECCセクタで構成されるとともに、1ブロックが64ページで構成される二値大ブロックを使用する場合について説明する。
(システム構成例)
図11を用いて、本発明が実施されるシステムの概要について説明する。本発明は、ホスト1と、このホスト1から例えばATAインターフェースで接続されるSSD(ソリッドステートドライブ)2とで構成されるシステムで実施され得る。SSD2は、複数のNAND型フラッシュメモリ21(以降NAND型フラッシュメモリを単にフラッシュメモリという)と、ホスト1から送出された書き込み用データを一時的に待避するためのキャッシュメモリ22と、キャッシュメモリ22に貯蔵されたデータのフラッシュメモリ21に対する書き込み制御などを行なうメインコントローラ23とで構成される。このメインコントローラ23は、ホスト1からフラッシュメモリ21に記憶されているデータ読み出し指令があった場合はこれをホスト1に送出するための制御も実行する。
キャッシュメモリ22は、例えばSDRAM(Synchronous DRAM)で構成することができる。フラッシュメモリ21とメインコントローラ23は、個別のICで構成してもよいし、ワンパッケージで構成してもよい。SSD2は、ホスト1から物理的に独立した構成であってもよいし、基板タイプで構成し、ホスト1から着脱自在にして、フラッシュメモリ21の寿命が到来したときは、新品と容易に交換可能な構成にしてもよい。キャッシュメモリ22は、フラッシュメモリ21の1ページの2のm乗倍(mは0又は1より大きい整数)の大きさのセグメントの集合体で構成される(後述する“仮想セグメント”と区別するためにこれを“物理セグメント”という)。フラッシュメモリ21の1ページが4セクタで構成される場合、1物理セグメントは、4セクタ、8セクタ、16セクタ、32セクタ、64セクタ、128セクタ、256セクタで構成され得るが、後述する本実施形態例では、1物理セグメントが16セクタで構成されるものとして説明する。各物理セグメントはCPU237がアドレスによって管理する。
メインコントローラ23は、以下の構成要素を含む。即ち、フラッシュメモリ21へのデータの書き込みや読み出しをNANDプロトコルに基づいて制御するNANDフラッシュコントローラ235、ホスト1からATAコマンドに基づき書き込み指令されたデータをSSD2に取り込む際の通信制御を行うATAインターフェース制御部231、バス232、ATAインターフェース制御部231からバス232を介してホスト1から送出されたデータをキャッシュメモリ22に転送する際の物理的制御を行うSDRAMコントローラ234、CPU237、CPU237からの指令に基づき、ホストから送出されたデータをキャッシュメモリ22に書き込む際の管理やキャッシュメモリ22のデータをフラッシュメモリ21側に送出する際の管理を行うキャッシュマネージャ236を有する。尚、CPU237は、メインコントローラ23内の上記各ブロックを統括的に管理する。またCPU237は、図示しないプログラムコード格納領域を有し、本願発明を実施するコンピュータプログラム(ファームウエア)を記憶している。また、作業領域としてのRAM領域を有している。NANDフラッシュコントローラ235は、エラー訂正回路を含み、キャッシュメモリ22から送出されたデータをフラッシュメモリ21に書き込む際に、エラー訂正符号を作出し、これをフラッシュメモリ21の各セクタの冗長領域に書き込む。
キャッシュマネージャ236のハードウエア構成を図12に示す。キャッシュマネージャ236は、タグメモリ31、セクタメモリ32、タグメモリ検索/更新回路33、セクタメモリ検索/更新回路34を有し、レジスタ30が、バス232に接続している。タグメモリ31は、上位LBA、グループLBA、LRU番号、書き込まれたデータの有効(Valid=1)若しくは無効(Valid=0)の設定、待ち行列(Queue状態)として設定されているか(Lock=1)否か(Lock=0)、Queue値などの情報を記録するためのものである。詳しくは後述する。タグメモリ検索/更新回路33は、CPU237からレジスタ30を介して送られた指令に従い、タグメモリ31に対して前記情報の書き込みや更新、さらには設定されている情報の検索を実行する回路であり、専用のハードウエアを用いて構成することができる。セクタメモリ32には、セクタマップテーブルが用意されている。セクタマップテーブルは、CPU237が物理セグメントに書き込まれたデータの状況をリアルタイムで記録及び更新し、その状態を検索するセクタマップを構成するためのものである。セクタマップテーブルはシリアル番号が付されてなる仮想セグメントの集合体で構成され、CPU237が当該物理セグメントに書き込まれたデータの状況をセクタ単位で記録する。本願では、仮想セグメントに付される番号を“仮想セグメント番号”と称するものとする。セクタメモリ検索/更新回路34は、CPU237からレジスタ30を介して送られた指令に従い、セクタマップテーブルに対する記録や更新、並びに検索を実行する回路であり、同様に専用のハードウエアを用いて構成することができる。尚、詳細は後述するが、CPU237は、セクタメモリ32のセクタマップに記録されている情報に基づいて、物理セグメントに書き込まれているデータをフラッシュメモリ21に転送する。物理セグメントアドレスとそのデータ書き込み状況を記録する仮想セグメントの番号(仮想セグメント番号)は一対一に固定的に対応付けて扱うことができ(図20参照)、CPU237は、この対応関係に基づき、仮想セグメントの記録根拠である物理セグメントから前記データの転送を行う。
(動作説明)
図13は、タグメモリ31とセクタメモリ32に記録される内容を併せてこれを模式的に表したものである。図の右側がセクタマップテーブルであり、左側がタグメモリに記録される内容である。図において、“Seg.”は仮想セグメントを表し、その下に続く数字は、仮想セグメント番号を表す。図示するように、仮想セグメントには、その先頭が“0”から始まるシリアルな仮想セグメント番号が予め設定されている。
一の仮想セグメントは、一の物理セグメントに格納された16セクタ分のデータの書き込み状況をセクタ単位で記録できるようになっており(16セクタ対応)、このため仮想セグメントは16に分割されている。本実施形態例のセクタマップテーブルは、便宜上、16セクタ対応の仮想セグメントが計16で構成されるものとして説明する。この場合、セクタマップテーブルは、1物理ブロック分(256セクタ)のデータ書き込み状況を記録できることになるが、実際の設計に当たっては、キャッシュメモリ22のデータ格納領域のすべてのデータ書き込み状況を把握できるように構成する。
(A-1:最初の書き込み)
システムに電源投入後、CPU237は、ホスト1から最初に書き込み指令を受けたデータを、物理セグメントアドレス“0”から順に書き込む。そして物理セグメントアドレス“0”におけるデータの書き込み状況は、セクタマップテーブルの仮想セグメント番号“0”から順に記録される。
図13では、ホストLBAが0AC3h(hは16進法の表示であることを表す)で10セクタ分のデータが物理セグメントに書き込まれ、その状況が、仮想セグメント番号“0”に記録されている様子を示している。
本実施形態例の仮想セグメントは16セクタ対応(16分割)であるため、ホストLBAの最終桁の値の取り得る範囲と一致するので、CPU237はこれと対応させるべく、仮想セグメントのセクタアドレス“3h”から始まって、物理セグメントに書き込まれた10セクタ分、“データ書き込み済み状態”である旨記録する(この記録は、仮想セグメントの該当するアドレスに、フラグ(bit“1”)を立てることにより行う)。仮想セグメントにおいてグレーで表された箇所は、“データ書き込み済み状態”として記録されたことを表している。
CPUはこれとともに、タグメモリ検索/更新回路33に指令して、タグメモリ31のタグテーブルに、仮想セグメント番号“0”のデータに関する上位LBA、グループLBAを記憶する(タグテーブルは、図13のセクタマップを除いた部分である)。
上位LBAは、仮想セグメントのサイズとホストLBAとより一義的に決定するものであり、仮想セグメントにおける、ホストLBAの位置からみたその仮想セグメントの先頭位置(セクタ)の見かけ上の論理ブロックアドレスである。よってこの場合、ホストLBA(0AC3h)の上位LBAは、0AC0hとなる。
一方グループLBAは、当該フラッシュメモリの1物理ブロックあたりのセクタ数によって決定する。例えば、1物理ブロックが64ページ構成で、且つ1ページが4セクタで構成されている場合は、1物理ブロックあたり256セクタであるから、ホストLBAの下2桁00hからFFhで1論理ブロックを構成し、したがって、この下2桁を除いた値がフラッシュメモリの物理ブロック番号に該当する(但し、論理ブロックと物理ブロックが1対1に対応する場合である)。ホストLBAが上記0AC3hの場合、グループLBAはその先頭の2桁、即ち “OA”となる。
仮想セグメントが32セクタの場合は、16セクタサイズの倍のサイズで構成されるため、その上位LBAは、その下2桁が00h、20h、40h、60h、80h、A0h、C0h、E0hのいずれかの値をとる(全部で8通り)。
そして、ホストLBAが仮に3BD3hであるとすると、セクタマップにおいては、上位LBAが3BC0hで設定される仮想セグメントの先頭から20番目(Fh+3h)がホストLBAに該当し、上述した記録が開始される位置となる。
また、仮想セグメント番号“0”にデータ書き込み状況が記録されると、CPUは前記上位LBA、グループLBAのほか、その仮想セグメントを構成する物理セグメントのデータが有効(“Valid”=1)である旨設定し、タグメモリ31のタグテーブルに記憶する。ここで“有効”とは、当該物理セグメントに書き込まれているデータが後にフラッシュメモリに書き込まれるかもしれない有効なデータであり、したがってその仮想セグメントに関してタグメモリに記録されている情報が有効であることを意味する。尚、システムに電源を投入したとき、全セグメントはValid=0(無効)に初期化される。
またタグテーブルには、Lockという項目がある。Lockは、CPU237がそのセグメントに書き込まれているデータをフラッシュメモリへ書き込むことを決定し、該書き込みのための待ち行列(Queue)として設定するときに用いる。即ち、待ち行列として設定するときは、Lock=1と設定する。Lock=1と設定されると、その仮想セグメントは、その後、ホストから該仮想セグメントに設定されているのと同じ上位LBAのデータが書き込み指令された場合であっても、CPU237は、そのデータをその仮想セグメントを構成する物理セグメントに上書きすることはない。尚、システムに電源を投入したとき、全仮想セグメントはLock=0に初期化される。
上記の通り、本実施形態例では、1仮想セグメントを16セクタで構成しているが、物理セグメントサイズに対応して、1仮想セグメントを、32セクタサイズ(8ページ分)、64セクタサイズ(16ページ分)、或いは128セクタサイズ(32ページ分)などで構成してもよい。
CPU237は、さらに仮想セグメント番号“0”にLRU(Least
Recently Used)番号“0”を設定し、タグメモリ31のタグテーブルに記憶する。LRU番号は、書き換え対象となるフラッシュメモリの論理ブロックが同一であるデータを記憶している物理セグメントが複数存在する場合、CPUが“同一LRUグループ”として扱うために、これら物理セグメントに対するデータ書き込み状況を記録した複数の仮想セグメントに同一のLRU番号を設定するものである。LRU番号は、“0”から始まり、順に大きい値が設定されるが、グループLBAが同一となるべき他の仮想セグメントが既に存在する場合は、書き込まれた先後を問わず、それら既存の仮想セグメントにも同一のLRU番号が設定され、タグメモリに記憶される。
ホスト1から一の書き込み指令で送出されてきたデータが物理セグメントアドレス“0”に書ききれない場合は、次の空の物理セグメントアドレス“1”に書き込まれる。そして仮想セグメント番号“1”に当該データ書き込み状況が記録される。このとき、仮想セグメント番号“1”の上位LBAは0AD0hとなることが理解できよう。仮想セグメント番号“0”と仮想セグメント番号“1”のグループLBAはともに“0A”で同一のLRU番号が設定される。
ホストLBAが例えば0AE3hで30セクタ分のデータがキャッシュメモリ22に書き込まれる場合は、仮想セグメント番号“1”のグループLBAは“0B”であり、仮想セグメント番号“0”とは異なるグループLBAとなるため(フラッシュメモリの異なる論理ブロックに書き込まれるべきデータとなる)、当然異なるLRU番号が設定されることになる。尚、本実施形態例では、特にことわりのない限り、ホストから書き込み指令されたデータを一の物理セグメントに書き込みできる場合について説明する。
(A-2:引き続く書き込み)
ホストから引き続きデータ書き込み指令があったとき、CPU237はタグメモリ検索/更新回路34に指令して、タグメモリ31を検索させる。そして、当該書き込み指令されたデータの上位LBAと同一の上位LBAが設定されている仮想セグメントがある場合(検索結果=hit)は、当該hitした仮想セグメントを構成する物理セグメント群に対してデータを上書きする。その後、その仮想セグメントのLRU番号を“0”に更新して、タグメモリ31のタグテーブルに記憶する。そして、前記既存の仮想セグメントに設定されていたLRU番号より小さいLRU番号の仮想セグメントが存在すれば、それらの仮想セグメントの各LRU番号をそれぞれ一つだけインクリメントして、タグメモリ31のタグテーブルに記憶する。
(A-3)
CPU237がタグテーブルを検索した結果、当該書き込み指令されたデータの上位LBAと同一の上位LBAが設定されている仮想セグメントが無く(検索結果=miss)、空の仮想セグメントがある場合は、空の物理セグメントにデータの書き込みを実行し、書き込まれたデータの状況をマップテーブル上の新たな仮想セグメントに記録する。そして、その空の物理セグメントに書き込まれたデータの上位LBAとグループLBAをその仮想セグメント番号と対応付けて、タグメモリ31のタグテーブルに記憶する。また、データ書込みを行った当該物理セグメントのデータが“有効”である旨設定する。この新たに設定した仮想セグメントのグループLBAと同一のグループLBAの仮想セグメントがない場合は、新たにデータを書き込んだ物理セグメントに対応する仮想セグメントのLRU番号を“0”に設定するとともに、既存の全仮想セグメントのLRU番号をそれぞれ一つずつインクリメントして、これらをタグメモリに記憶する。
また、グループLBAが同一である既存の仮想セグメントがある場合は、新たにデータを書き込んだ物理セグメントに対応する仮想セグメントのLRU番号を前記既存の仮想セグメントに設定されているそれと同一の値に設定した後、前記既存の仮想セグメントとともにLRU番号を“0”に変更し、前記既存の仮想セグメントに設定されていたLRU番号より小さいLRU番号が設定されていた仮想セグメントがあればその仮想セグメントに設定されているLRU番号を一つだけインクリメントして、それぞれタグメモリに記憶する。以上のステップを、物理セグメントに対するデータの書き込みが仮想セグメントの所定のアドレス(閾値)に至るまで実行する。この閾値は、最終の仮想セグメント番号に至る途中に設定してもよいし、最終仮想セグメント番号に設定してもよい。
以上の変遷状態を、図面を用いて説明する。図14は、図13に引き続き、さらに物理セグメントアドレス“1”から順にデータの書き込みが実行され、上位LBAが同一の仮想セグメントがないので、仮想セグメント番号“1”、“2”、“3”に、順次データの状況が記録された状態例である。
即ち、仮想セグメント番号“1”にホストLBAが0511hでデータ長5セクタ分のデータの状況が記録され、続いて、仮想セグメント番号“2”にホストLBAが13B5hでデータ長10セクタ分のデータの状況が記録され、さらに仮想セグメント番号“3”にホストLBAが008Ahでデータ長6セクタ分のデータの状況が記録された場合である。仮想セグメント番号“0”乃至仮想セグメント番号“3”に設定されたグループLBA(データ書き換え対象論理ブロック)は互いに異なるので、同一LRUグループを構成することなく、最新にデータが書き込まれた物理セグメントによって構成される仮想セグメントのLRU番号がもっとも小さく、古いものほど大きい値に設定されていることが理解できよう。
図15は、その後仮想セグメント番号“4”にホストLBAが0520hで13セクタ分の最新のデータの状況が記録された状態を示している(A-2)。仮想セグメント番号“1”と仮想セグメント番号“4”の“グループLBA”(データ書き換え対象論理ブロック)が同じであるので、これらは同一LRUグループを構成する。したがって、まず、仮想セグメント番号“4”のLRU番号を、既存のセグメントアドレス“1”のLRU番号“2”に設定してから、両者のLRU番号をともに“0”に更新し(図15参照)、タグメモリ31のタグテーブルに記憶する。そして、仮想セグメント番号“1”の更新される前のLRU番号“2”より小さいLRU番号の仮想セグメント(仮想セグメント番号“2”と仮想セグメント番号“3”)は、それぞれそのLRU番号を一つだけインクリメントして、タグメモリ31のタグテーブルに記憶する。図15において、仮想セグメント番号“2”のLRU番号“1”を“2”に更新し、仮想セグメント番号“3”のLRU番号“0”を“1”に更新している。さらに図16に、仮想セグメント番号“5”以下、最終仮想セグメント(仮想セグメント番号“15”)までデータの状況が記録された状態例を示している。
(A−3:キャッシュメモリ充填後の処理)
CPU237が物理セグメントに対するデータの書き込みを仮想セグメントが満杯に至るまで実行すると、CPU237はLRU番号が最大値に設定されている仮想セグメント(グループLBAが同一の複数のセグメントがある場合はそれら全部)にLock=1(Queue状態)を設定し、タグメモリ31に記憶する。これにより、以降この仮想セグメントに対しては、上位LBAがその仮想セグメントのそれと同じデータがホストから送出されても、その仮想セグメントの記録根拠となっている物理セグメントにデータを上書きすることはない。即ち、その物理セグメントのデータの保護が図られる。そして、その最大LRU番号の仮想セグメントに設定されているLRU番号をすべてキャンセルし、新たにQueue値“0”を設定し、これをタグメモリ31に記憶する。Queueとは待ち行列、即ち、フラッシュメモリに対する書き込みが待ち行列状態になっていることを意味する。CPU237は、Queue値の設定された順、即ち、Queue値が小さいものから順に、その仮想セグメントの記録根拠となっている物理セグメントに記憶されているデータをNANDフラッシュコントローラ235に対して書き込み指令する。この書き込み指令は、CPU237が、当該仮想セグメント番号に係るタグメモリ31とセクタメモリ32に記録されているデータの状況に基づき、コマンドを発行して実行する。
図17は、図16の状態になった後に、仮想セグメントの記録根拠となっている物理セグメントからのデータの追い出しを実行する場合のタグテーブルの設定状態を表したものである。(本願では、仮想セグメントの記録根拠となっている物理セグメントに記憶されているデータをフラッシュメモリ21側に転送する処理を、適宜、データの追い出しまたは単に追い出しという)。データの追い出しを実行する際は、図18に示すように、CPU237が、LRU番号が最大の仮想セグメント(仮想セグメント番号“5”と仮想セグメント番号“2”)に、上書き不可のLockを掛け(lock=1に設定)、さらに両者のLRU番号をキャンセルし、新たにQueue値“0”を設定する。
そして、Queue値“0”に設定した仮想セグメント番号“2”及び仮想セグメント番号“5”に格納されているデータは、CPU237によりNANDフラッシュコントローラ235に転送され、NANDフラッシュコントローラ235によりフラッシュメモリ21に書き込まれる。フラッシュメモリ21に対するデータ書き込みの基本手順は、本願の「背景技術」に記載の通りであるが、本発明の場合は、一の空きブロックに、書き換え対象データを構成する複数の物理セグメントのデータを一度に書き込ませることを特徴としている。
まず、書き換え用データ、即ち複数の仮想セグメントの記録根拠となっている物理セグメントのデータを、一の仮想セグメント(実際にはその記録根拠となっている物理セグメント)ごと、コマンドによりNANDフラシュコントローラ235に書き込み指令する。するとNANDフラッシュコントローラ235は、「背景技術」に記載の通り、所定の空きブロックに、データの書き換えを行わないデータをページ単位でコピーするとともに、転送されてきた書き換え用データをページ単位で書き込む。書き込みがページの途中で開始または終了する場合は、「背景技術」で説明した通り、バッファを利用してページ単位のデータに編成して書き込む。空きブロックにデータの書き込みを完了すると、書き換え対象であった物理ブロックの全データを消去して空きブロックとし、論理ブロック-物理ブロック変換テーブルを書き換える。この方法により、通常であれば、所定の空きブロックに対する複数のデータ書き換え作業が必要となるところ、一度の書き換え作業で済み、書き込み時間を短縮できるとともにブロックの書き換え回数を減らすことができる。従ってフラッシュメモリの延命を図ることができる。図18は、Queue値“0”が設定された仮想セグメント番号“2”及び仮想セグメント番号“5”を構成する物理セグメント群に書き込まれているデータがフラッシュメモリ21側に転送されていく様子を模式的に表している。
なお、フラッシュメモリ21にデータが書き込まれた仮想セグメント番号“2”及び仮想セグメント番号“5”の記録は、転送された段階では当該仮想セグメント上、及びセクタマップ上で消去されない。しかし、このデータは既にフラッシュメモリ21側に転送済みであるから、CPU237は、仮想セグメント番号“2”と仮想セグメント番号“5”の記録が“無効(Valid=0)”である旨をタグメモリ31に設定する(図19)。記録が無効とは、CPU237が、その仮想セグメントの記録根拠となっている物理セグメントを空の物理セグメントとして扱ってよいということを意味する。即ち、Valid=0と設定されている限りは、CPU237は、タグメモリ31に記憶されたまま残っている当該セグメントに係るLock=1(上書き不可)の設定、上位LBAの値、グループLBAの値のすべてを無効と看做す。また、フラッシュメモリ21側へのデータの転送が完了すると、その仮想セグメントに設定されていたQueue値は、タグメモリ31上でキャンセルされる(この段階では、Queue値とLRU番号の両者とも設定されていない状態となる。)
その後、ホストLBA(04D4h)が指定されて、5セクタ分のデータの書き込み指令があったとする。CPU237は、ここでタグメモリ検索/更新回路33にタグメモリ31を再度検索させる。すると、上位LBAが同一の仮想セグメントがないこと、並びに、先ほど追い出しを実行した仮想セグメント番号“2”及び仮想セグメント番号“5”の両者が空きセグメント(“無効(Valid=0)”)であることをCPU237は把握する。今回のホストからの書き込み指令は、空きセグメントへのデータ書き込みを実行する場合であるが、一つの仮想セグメントを構成する物理セグメントへの書き込みで足りるものである。斯かる場合、アドレスの小さい空の物理セグメントからデータを書き込むようにルール化しておけば、CPU237は物理セグメント番号“2”に新規なデータを書き込む(図19)。この場合(追い出し後の新規データの書き込み)、SSD2がホスト1から前記データ書き込み指令を受けると、CPU237は、まず、セクタメモリ32のセクタマップから、仮想セグメント番号“2”に記録されているデータの状況を消去する。すると、ATAインターフェース制御部231はCPU237の指令に基づき、ホスト1に対して、データ転送OKのステータス信号を送る。そして、ホスト1はそのバッファ(図示せず)に待機させていた書き込み用データを、SSD2側に転送する。ATAインターフェース制御部231から転送されてきたデータは、CPU237がSDRAMコントローラ234をして、仮想セグメント番号“2”の記録根拠となっている物理セグメントに格納させる。
データを格納すると、新たにデータを書き込んだ仮想セグメント番号“2”の記録根拠となっている物理セグメントのデータを“有効(Valid=1)”に変更し、“Lock=1”を “Lock=0(Queue状態ではない)”に変更し、当該仮想セグメントにLRU番号“0”を設定し、また、上位LBAを04D0h、グループLBAを“04”に変更して、それぞれタグメモリ31に記憶する。さらに、空きセグメントである仮想セグメント番号“5”以外のデータ有効仮想セグメントのLRU番号を一つだけインクリメントし、これらを前記タグメモリに記憶する。図19にその状態を模式的に表している。
Queue値は、物理セグメントからフラッシュメモリ側へのデータの追い出しの度にその値が一つずつ減算される。このとき、それまでにQueue値を設定した数から、それまでにデータの追い出しを完了しているQueueの数を差し引けば、CPU237は、その時点でデータがまだフラッシュメモリ21に転送完了していない待ち行列状態のQueue数を知ることができる。
物理セグメントからデータの追い出しが実行されてQueue値が設定されるごとにHost-Queue-Pointerと名付けたポインタを1ずつ加算する。フラッシュメモリ21に対しては、その値の小さいものから順にデータが転送されるが、この転送が完了するごとに、Disk-Queue-Pointerと名付けたポインタを1ずつ加算する。この値は、フラッシュメモリ21側にデータ転送が完了したQueueの数に相当するので、Host-Queue-Pointerの値からDisk-Queue-Pointerの値を引いた値が、キャッシュメモリからデータの追い出しの完了していないQueueの数となる。CPU237は、この追い出しの完了していないQueue数をフラッシュメモリ21に対するデータの追い出しの制御などに利用してもよい。
(Queue値設定例)
Queue値の設定は上述した通りであるが、前記Queue-Pointer値を利用して、物理セグメントに対するデータの書き込みが仮想セグメントの最終アドレスに至らない段階で、Queue値を複数設定し、追い出し処理を実行してもよい。例えば、システムに電源投入後、キャッシュメモリ22に対するデータの書き込みが予め定めたセグメント数(閾値)を超えたとき、その時点で最大のLRU番号が設定されている仮想セグメントにQueue値“0”を設定してQueue値“0”を構成する仮想セグメントの物理セグメント群からデータの追い出しを実行する。そして、Queue値“0”の仮想セグメントのデータがフラッシュメモリ21に書き込み完了する直前に、新たなQueue値“1”を該当する仮想セグメントに設定する(このタイムインターバルは実験値等で経験的に求めればよい)。これを繰り返すことにより、データ転送状態のQueueが常時存在し、転送待ちのQueueを、実質的に、常時一つにすることができる。言い換えれば、前記一のQueueを構成するセグメントのデータがフラッシュメモリに転送完了した段階で、次の転送待ちであったQueueを構成するセグメントのデータをフラッシュメモリに転送開始でき、フラッシュメモリへのデータ転送の無駄な待ち時間をなくすことができる。また、データ転送待ちのQueue(物理セグメント)を最小限にすることができる。
発明の詳細は上記の通りであるが、ここにその基本手法(骨子)を整理する。
1.システムの電源投入後、先頭のセグメントから順次データを書き込む。
2.フラッシュメモリの書き込み対象ブロックが同一であるセグメントデータを同一
LRUグループとして管理する。
3.データの上書きが可能な場合は優先してこれを実行する。
4.データの上書きができない場合は、空きセグメントにデータを記憶する。
5.データの追い出しは、LRU番号の最も大きいセグメントから順にQueue値を設定し、これに基づきデータの追い出しを実行する。フラッシュメモリへのデータの転送は、タグメモリとセクタマップに記録された情報に基づいて行う。
6.追い出しによって作られた空きセグメントに新たなデータの書き込みを実行する。
7.以上のルーチンを、ホストからのデータ書き込み指令が終了し、キャッシュメモリがすべて空きセグメントになるまで実行する(ホストからのデータ書き込み指令が途絶えると、キャッシュメモリ22に残っているデータは、CPU237が自動的にフラッシュメモリ21側に転送し書き込みが実行される)。
NANDフラッシュメモリのデータ構造例である。 ホストLBAと物理ブロックの対応関係例である。 NANDフラッシュメモリにおけるデータ書き換えの概念図である。 空きブロックへのデータ書き込み手順である(その1)。 空きブロックへのデータ書き込み手順である(その2)。 空きブロックへのデータ書き込み手順である(その3)。 空きブロックへのデータ書き込み手順である(その4)。 空きブロックへのデータ書き込み手順である(その5)。 空きブロックへのデータ書き込み手順である(その6)。 NANDフラッシュメモリのページ構成例である。 本発明を実施するシステムの構成例である。 キャッシュマネージャのハードウエア構成である。 タグメモリとセクタマップの内容を模式的に表した第1の状態例である。 タグメモリとセクタマップの内容を模式的に表した第2の状態例である。 タグメモリとセクタマップの内容を模式的に表した第3の状態例である。 タグメモリとセクタマップの内容を模式的に表した第4の状態例である。 タグメモリとセクタマップの内容を模式的に表した第5の状態例である。 タグメモリとセクタマップの内容を模式的に表した第6の状態例である。 タグメモリとセクタマップの内容を模式的に表した第7の状態例である。 ホストからNANDフラッシュメモリへのデータの流れである。
1 ホスト
2 SSD
21 NANDフラッシュメモリ
22 キャッシュメモリ
23 メインコントローラ
31 タグメモリ
32 セクタメモリ
30 レジスタ
33 タグメモリ検索/更新回路
34 セクタメモリ検索/更新回路
231 ATAインターフェース制御部
232 バス
234 SDRAMコントローラ
235 NANDフラッシュコントローラ
236 キャッシュマネージャ
237 CPU








Claims (4)

  1. ホストからNAND型フラッシュメモリに書き込み指令されたデータを一旦保持するためのキャシュメモリを備えたソリッドステートドライブであって、
    キャッシュメモリはNAND型フラッシュメモリの1ページの2のm乗倍(mは0または正の整数)の大きさの物理セグメントの集合体で構成されるものであり、
    物理セグメント毎に、当該物理セグメントに書き込まれたデータの上位LBA及びグループLBAとLRU番号とを対応付けて記憶するタグメモリを備え、
    ホストからの書き込み指令に係る上位LBAがタグメモリに記憶されておらず、かつ、キャッシュメモリに空の物理セグメントがある場合には、
    1)空の物理セグメントにデータの書き込みを実行し、
    2−1)書き込み指令に係るグループLBAがタグメモリに記憶されていない場合には
    上記1)にて新たにデータを書き込んだ物理セグメントに対応するLRU番号を“0”
    に設定するとともに、既存の全ての物理セグメントに対応するLRU番号をそれぞれ一つずつインクリメントして、タグメモリに記憶し、
    2−2)書き込み指令に係るグループLBAがタグメモリに記憶されている場合には、書き込み指令に係るグループLBAと同一のグループLBAに対応する既存の物理セグメントに対応するLRU番号と、上記1)にて新たにデータを書き込んだ物理セグメントに対応するLRU番号とをともに“0”に設定するとともに、書き込み指令に係るグループLBAと同一のグループLBAに対応する既存の物理セグメントに設定されていたLRU番号よりも小さいLRU番号に対応していた物理セグメントがあれば、その物理セグメントに対応するLRU番号を一つインクリメントして、タグメモリに記憶する、手段を備えたことを特徴とする、ソリッドステートドライブ。
  2. その時点で最大のLRU番号に対応する全ての物理セグメントに対して、対応するLRU番号をキャンセルし、LRU番号をキャンセルした全ての物理セグメントのデータをNAND型フラッシュメモリに転送する動作を繰り返し実行する手段をさらに備えたことを特徴とする請求項1に記載のソリッドステートドライブ
  3. ホストからNAND型フラッシュメモリに書き込み指令されたデータを一旦保持する、NAND型フラッシュメモリの1ページの2のm乗倍(mは0または正の整数)の大きさの物理セグメントの集合体で構成されてなるキャッシュメモリと、物理セグメント毎に当該物理セグメントに書き込まれたデータの上位LBA及びグループLBAとLRU番号とを対応付けて記憶するタグメモリ、とを備えたソリッドステートドライブにおける、NAND型フラッシュメモリに対するデータ書き込み方法であって、
    ホストからの書き込み指令に係る上位LBAがタグメモリに記憶されておらず、かつ、キャッシュメモリに空の物理セグメントがある場合には、
    1)空の物理セグメントにデータの書き込みを実行し、
    2−1)書き込み指令に係るグループLBAがタグメモリに記憶されていない場合には
    上記1)にて新たにデータを書き込んだ物理セグメントに対応するLRU番号を“0”
    に設定するとともに、既存の全ての物理セグメントに対応するLRU番号をそれぞれ
    一つずつインクリメントして、タグメモリに記憶し、
    2−2)書き込み指令に係るグループLBAがタグメモリに記憶されている場合には、書き込み指令に係るグループLBAと同一のグループLBAに対応する既存の物理セグメントに対応するLRU番号と、上記1)にて新たにデータを書き込んだ物理セグメントに対応するLRU番号とをともに“0”に設定するとともに、書き込み指令に係るグループLBAと同一のグループLBAに対応する既存の物理セグメントに設定されていたLRU番号よりも小さいLRU番号に対応していた物理セグメントがあれば、その物理セグメントに対応するLRU番号を一つインクリメントして、タグメモリに記憶する、ことを特徴とする、データ書き込み方法。




  4. その時点で最大のLRU番号に対応する全ての物理セグメントに対して、対応するLRU番号をキャンセルし、LRU番号をキャンセルした全ての物理セグメントのデータをNAND型フラッシュメモリに転送する動作を繰り返し実行する、ことを特徴とする、請求項3に記載のデータ書き込み方法

JP2008037137A 2007-10-30 2008-02-19 ソリッドステートドライブ及びデータ書き込み方法 Active JP4315461B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008037137A JP4315461B2 (ja) 2007-10-30 2008-02-19 ソリッドステートドライブ及びデータ書き込み方法
US12/261,133 US8209465B2 (en) 2007-10-30 2008-10-30 Data writing method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2007281471 2007-10-30
JP2008037137A JP4315461B2 (ja) 2007-10-30 2008-02-19 ソリッドステートドライブ及びデータ書き込み方法

Publications (2)

Publication Number Publication Date
JP2009134682A JP2009134682A (ja) 2009-06-18
JP4315461B2 true JP4315461B2 (ja) 2009-08-19

Family

ID=39847030

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008037137A Active JP4315461B2 (ja) 2007-10-30 2008-02-19 ソリッドステートドライブ及びデータ書き込み方法

Country Status (4)

Country Link
EP (1) EP2056203B1 (ja)
JP (1) JP4315461B2 (ja)
AT (1) ATE490505T1 (ja)
DE (1) DE602008003733D1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5330428B2 (ja) 2011-02-21 2013-10-30 株式会社東芝 データ記憶装置及び誤り検出訂正方法
WO2014047159A1 (en) * 2012-09-21 2014-03-27 Violin Memory Inc. Write cache sorting
JP6089844B2 (ja) 2013-03-22 2017-03-08 富士通株式会社 制御装置,ストレージ装置,及び制御プログラム
JP6467636B2 (ja) 2014-08-28 2019-02-13 パナソニックIpマネジメント株式会社 メモリカード
JP7153435B2 (ja) 2017-10-12 2022-10-14 ラピスセミコンダクタ株式会社 不揮発性メモリのデータ書換方法及び半導体装置
FR3103620B1 (fr) * 2019-11-21 2021-11-26 St Microelectronics Rousset Procédé d’écriture dans une mémoire volatile et circuit intégré correspondant

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3495337B2 (ja) 1991-12-19 2004-02-09 株式会社東芝 メモリベリファイ回路
JP2000349853A (ja) 1999-06-01 2000-12-15 Victor Co Of Japan Ltd データ伝送方法
US20050015557A1 (en) * 2002-12-27 2005-01-20 Chih-Hung Wang Nonvolatile memory unit with specific cache
US8041878B2 (en) * 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
JP2006323739A (ja) 2005-05-20 2006-11-30 Renesas Technology Corp メモリモジュール、メモリシステム、及び情報機器
JP4418439B2 (ja) * 2006-03-07 2010-02-17 パナソニック株式会社 不揮発性記憶装置およびそのデータ書込み方法

Also Published As

Publication number Publication date
ATE490505T1 (de) 2010-12-15
EP2056203B1 (en) 2010-12-01
EP2056203A1 (en) 2009-05-06
JP2009134682A (ja) 2009-06-18
DE602008003733D1 (de) 2011-01-13

Similar Documents

Publication Publication Date Title
US8209465B2 (en) Data writing method
US10496334B2 (en) Solid state drive using two-level indirection architecture
US8041878B2 (en) Flash file system
US8316176B1 (en) Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
JP3977370B2 (ja) フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ
US5524230A (en) External information storage system with a semiconductor memory
JP4315461B2 (ja) ソリッドステートドライブ及びデータ書き込み方法
US20190114272A1 (en) Methods and apparatus for variable size logical page management based on hot and cold data
US6779045B2 (en) System and apparatus for increasing the number of operations per transmission for a media management system
JP5762930B2 (ja) 情報処理装置および半導体記憶装置
US20110099323A1 (en) Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US20120290769A1 (en) Flash memory device, memory control device, memory control method, and storage system
JP5959958B2 (ja) 記憶装置及び記憶装置におけるデータ消去方法
JP5137413B2 (ja) 半導体記憶装置
JP4745465B1 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
US20100318726A1 (en) Memory system and memory system managing method
JP5874525B2 (ja) 制御装置、記憶装置、記憶制御方法
JP2014010498A5 (ja)
US7278001B2 (en) Memory card, semiconductor device, and method of controlling semiconductor memory
TW202042065A (zh) 資料儲存裝置及邏輯至物理位址映射表之載入方法
JP4242245B2 (ja) フラッシュrom制御装置
US10025706B2 (en) Control device, storage device, and storage control method
JPWO2007105688A1 (ja) メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム
JP6817242B2 (ja) ディスクアレイ装置、ディスクアレイ装置の制御方法、及びディスクアレイ装置の制御プログラム
JP2005115562A (ja) フラッシュrom制御装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090414

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090428

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4315461

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120529

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20120529

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20120529

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130529

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250