[go: up one dir, main page]

JP2008191701A - エラー回復処理方法および情報処理装置 - Google Patents

エラー回復処理方法および情報処理装置 Download PDF

Info

Publication number
JP2008191701A
JP2008191701A JP2007022085A JP2007022085A JP2008191701A JP 2008191701 A JP2008191701 A JP 2008191701A JP 2007022085 A JP2007022085 A JP 2007022085A JP 2007022085 A JP2007022085 A JP 2007022085A JP 2008191701 A JP2008191701 A JP 2008191701A
Authority
JP
Japan
Prior art keywords
data
error
block
flash memory
information
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
JP2007022085A
Other languages
English (en)
Inventor
Keisuke Yasui
啓介 安井
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2007022085A priority Critical patent/JP2008191701A/ja
Publication of JP2008191701A publication Critical patent/JP2008191701A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】 NAND型フラッシュメモリのエラーブロックの代替え処理には時間がかかり、このフラッシュメモリが記憶するデータを高速に読み出す場合の妨げになる。
【解決手段】 読み出したデータにエラーがあった場合、このデータと共に記憶された冗長データを用いて訂正し、この訂正データとこのデータが記憶されていたブロックを特定する情報とを含むエラー訂正情報を出力する。後に起動された第2のアプリケーションは、フラッシュメモリの使用可能な未使用のブロックにこのエラー訂正情報に含まれる訂正データを書き込むと共に、このエラーブロックをこの未使用のブロックに置き換える。
【選択図】 図6

Description

本発明は、NANDフラッシュメモリで発生したエラーを回復するための方法に関し、特に、記憶したデータの読み出し処理を優先する場合のエラーの回復処理方法に関する。
情報機器の半導体記憶媒体として、大容量化が容易なNAND型フラッシュメモリが利用されている。この型のフラッシュメモリは、データの記憶、読出し、消去はブロック単位で行われる。また、NAND型フラッシュメモリは構造上、書き換えできる回数に制限がある。このため記憶するデータを補償するためにECC(Error Correcting Code)を付加して、読み出したデータにエラーが発見された場合には修復できるような仕組みを備えている。エラーが発見されたブロックは、以後データ記憶に使用しないよう別のブロックに代替える処理が必要となる。
しかしながら、フラッシュメモリから読み出したときでないと、そのブロックにエラーがあることが分からないうえ、エラーが発見されたブロックの代替え処理には読み込み操作とは別に書き込み操作も必要となり余計に時間がかかる。読み出しの際エラーが発見されたからといってその都度代替え処理をしていては、必要なデータを全て読み出すまでに多くの時間がかかってしまい、高速処理の妨げになる場合がある。
また、OS立ち上げ時など書き込み機能を省いたフットプリントの小さい読み出しソフトウェアが必要な場合、代替え処理そのものが実装できず、以後別の手段により読み出しが行われなければ修復される機会も失われ、結果、信頼性の低下を招く場合も考えられる。
NAND型フラッシュメモリの記憶するデータにエラーが発見された場合、ECCによりデータを修復しながらデータを読み出す発明が開示されている(特許文献1を参照)。
特開2005−190201号公報
NAND型フラッシュメモリのエラーブロックの代替え処理には時間がかかり、このフラッシュメモリが記憶するデータを高速に読み出す妨げになる。
本発明は上記問題に鑑みてなされたもので、発見されたエラーブロックの代替え処理を省くことなく、NANDフラッシュメモリに格納されたデータの読み出しを高速に行えるエラー回復処理方法および情報処理装置を提供する。
本発明のエラー回復処理方法は、
ブロック単位にアクセスされるフラッシュメモリにおける、エラーブロックのエラー回復処理方法であって、第1のアプリケーションは、第1のアクセスドライバにより前記フラッシュメモリに記憶したデータを読み出し、読み出したデータにエラーがあった場合、第1のアクセスドライバは、このデータと共に記憶された冗長データを用いて訂正し、この訂正データとこのデータが記憶されていたブロックを特定する情報とを含むエラー訂正情報を出力し、前記エラー訂正情報が存在する場合、前記第1のアプリケーションの後に起動された第2のアプリケーションは、第2のアクセスドライバにより前記フラッシュメモリの使用可能な未使用のブロックにこのエラー訂正情報に含まれる前記訂正データを書き込むと共に、このエラー訂正情報に基づいて特定される前記フラッシュメモリのブロックを該未使用のブロックに置き換えるエラーブロック回復処理を行うことを特徴とする。
また本発明の情報処理装置とすれば、
ブロック単位にアクセスされ、読み出したあるブロックのデータに誤りが発見された場合、そのブロックの回復処理を必要とするフラッシュメモリを搭載した情報処理装置であって、前記フラッシュメモリに記憶したデータを読み出す機能を備え、この読み出したデータにエラーが発見された場合、このデータを正しく訂正すると共に、このデータが記憶されていたブロックを特定する情報と訂正後の訂正データとを含むエラー訂正情報を出力する第1のアクセスドライバと、前記第1のアクセスドライバを介して前記フラッシュメモリから所定のデータを読み出す処理手段と、前記エラー訂正情報が存在する場合、前記フラッシュメモリの使用可能な未使用のブロックにこのエラー訂正情報に含まれる前記訂正データを書き込むと共に、このエラー訂正情報に基づいて特定される前記フラッシュメモリのブロックを該未使用のブロックに置き換えるエラーブロック回復処理を行う第2のアクセスドライバとを具備し、前記処理手段による読み出し処理の後に、前記第2のアクセスドライバによるエラーブロック回復処理をすることを特徴とする情報処理装置が提供される。
エラーが発見されたメモリブロックの代替え処理を省くことなくデータの読み出しを高速に行えるエラー回復処理方法および情報処理装置が提供される
図1は、本実施形態にかかる情報処理装置のブロック構成図の一例を示す図である。図1では、CPU100、NORフラッシュメモリ101、RAM102、NANDフラッシュメモリ104、IOコントローラ105および内部バス106が示されている。
CPU100は、このCPU(Central Processing Unit)用に作成されたプログラムコードに従い、所定の処理をする演算処理部である。
NORフラッシュメモリ101は、不揮発性のNOR型のフラッシュメモリである。NORフラッシュメモリは、NAND型フラッシュメモリと比べてアクセス速度が高速で、さらに1バイト単位でのランダムアクセスが可能となっている。本実施形態では、HDD(Hard Disk Drive)などの大容量の記憶装置の代わりに小容量のNORフラッシュメモリ101にCPU100が処理するプログラムコードなどを記憶しておき、省電力化、耐震性、耐環境性を向上させる。このような構成は、特定機器への組込み用やPDA(Personal Digital Assistant)などのモバイル機器で有利である。
RAM102は、たとえばDRAM(Dynamic Random Access Memory)などの揮発性の半導体メモリで構成されている。大容量、高速アクセスが可能な反面、電源を遮断すると記憶内容が消失する。主にCPU100がプログラムコードを処理する際の一時記憶領域として利用される。
NANDフラッシュメモリ103は、不揮発性のNAND型と呼ばれるフラッシュメモリである。このフラッシュメモリはNOR型のフラッシュメモリとは異なり、データの消去や書き込み速度が速く大容量化に適している。一方、ブロック単位でのアクセスになるため、HDDなどの記憶媒体の代わりとして利用されることが多い。また、記憶するデータの書き換え回数に制限があり、それを超えると記憶したデータが正常に読み出せなくなる特性がある。このためエラーが発生したブロックについては、そのブロックに記憶していたデータを空いている他のブロックに移し、以後はデータの書き込みに使用しないための目印としてバッドブロックマークを書き込む。この一連の処理をエラーブロック回復処理という。また、記憶したデータを読み出すよりも、たいていの場合、データ書き込みを完了するまでの時間の方がかかる。
IOコントローラ104は、NANDフラッシュメモリ103へのデータの入出力を制御する機能を有する。
内部バス105は、上記構成要素間を結び、それぞれの間のデータ授受を実現するための機能を有する。
次からは、図面に基づいて情報処理装置の動作を説明する。
図2は、本実施形態にかかるモジュール構成図の第1の動作を説明する図である。図2では、本実施形態にかかる情報処理装置のブロック構成図に示した各ブロック内に記憶されたデータおよびモジュール構成が示されている。
ブートローダ200は、情報処理装置の立ち上げの際、各部の最低限の初期設定を行うとともに、その情報処理装置で動く本来のプログラムをロードする機能を有する。
NANDアクセスドライバ201は、IOコントローラ104を制御してNANDフラッシュメモリ103内のデータを読み出す機能を備えている。データの読み出しに際しては、NANDフラッシュメモリ103に記憶されたECCを用いて必要に応じて読み出すデータを修復する。また、データを修復した場合にはその修復したブロックの識別情報と修復後のデータとを別途記憶しておく機能も備えている。
OSイメージ202は、この情報処理装置が本来処理すべきOS(Operating System)のようなプログラムであり、ブートローダ200の支援を受けることでCPU100による実行が可能となる。たとえば、NANDフラッシュメモリ103はブロック単位でのアクセスとなることからCPU100のメインメモリとしての利用には適さず、一旦他のメモリにロードする必要がある。
NANDアクセスドライバ203は、NANDアクセスドライバ201と同様にNANDフラッシュメモリ103のアクセスを実現するが、読み出し機能の他に、書き込み機能、エラーブロック回復処理機能などNANDフラッシュメモリ103に必要な全ての機能を備えている。
情報処理装置はブートの最初に、CPU100はNORフラッシュメモリ101に記憶したブートローダ200を実行し、各種初期設定を完了する。
図3は、本実施形態にかかるモジュール構成図の第2の動作を説明する図である。
初期設定を終わったブートローダ200は、NANDアクセスドライバ201を介して、NANDフラッシュメモリ103に記憶されたOSイメージ202を読み出し、必要であれば読み出したデータを修復する。このデータは内部バス105を介してRAM102上にOSイメージ300としてコピーされる。
このとき、NANDアクセスドライバ201が修復したデータがあれば、その修復後のデータと、NANDフラッシュメモリ103のエラーがあったブロックの識別情報を、ECCエラー訂正情報302として記録する。本実施形態では、ECCエラー訂正情報302をRAM102上に記憶するようにしているが、OSからアクセスできる記憶媒体であればどこに記憶しても良い。
図4は、本実施形態にかかるモジュール構成図の第3の動作を説明する図である。
ブートローダ200は、OSイメージ202をOSイメージ300としてコピーし終えると、RAM102にコピーしたOSイメージ300の処理を開始する。
OSイメージ300の処理は、最初にOS起動のための初期設定処理が実行される。この初期設定処理の中で、必要であればNANDアクセスドライバ301がECCエラー訂正情報302を参照し、その中の識別情報に従ってブロックの代替え処理を含む、NANDフラッシュメモリ103のエラーブロック回復処理を実施する。
図5は、本実施形態にかかるECCエラー訂正情報302の一例を示す図である。
ECCエラー訂正情報302は大きく2つの情報から成り立っている。一つはエラーとなったページの数(エラーページ数500)であり、もう一つはエラーページ情報である。エラーページ数500は、読み出し時エラーとなったページが無ければゼロとなる。もしくはECCエラー訂正情報302そのものを作成しない。
エラーページ情報は、ページ識別番号501、冗長データ502および訂正後データ503の組からなる。ページ識別番号501は、エラーのあったページを示すページ識別番号が格納される。訂正後データ503には、エラーを発見したページに付加されたECCを元に修復した後のデータが格納される。NANDフラッシュメモリの場合、通常512バイト長の領域を取る。冗長データ502は、訂正後データ503に格納している修復後のデータに対するECCである。ECCは通常、16バイト長の領域を取る。
このとき、エラーが発見されるページが複数ある場合、修復したページ総数をエラーページ数500に格納すると共に、その数だけ繰り返しエラーページ情報が格納される。
図6は、本実施形態にかかる情報処理装置の動作フローの一例を示す図である。
まずCPU100は、NORフラッシュメモリ101に格納したブートローダ200を実行する(ステップS01)。
続いて、ブートローダ200に内蔵されたNANDアクセスドライバ201を介して、NANDフラッシュメモリ103に記憶したOSイメージ202を1ページ分読み出す(ステップS02)。このときECCに基づき読み出したデータにエラーが発生しているか否かを判断する(ステップS03)。
エラーが発生している場合(Yes)、ECCを用いてエラーを訂正する処理(ECCエラー訂正処理)を実施し(ステップS04)、正しいデータを修復する。そしてエラーとなったページの識別情報と修復後データおよびその修復後データのECCを計算し、ECCエラー訂正情報302を作成する(ステップS05)。修復後データはRAM102にコピーされる(ステップS06)。
ステップS03でエラーが発生しなければ(No)、読み出したデータをそのままRAM102にコピーする(ステップS06)。
OSイメージ202を格納するページが残っている場合(ステップS07でNo)、次のページを読み出すためにステップS02からの処理を繰り返す。
全てのページを読み出したら(Yes)、次にブートローダ200はRAM上にコピーしたOSイメージ300の処理を開始する(ステップS08)。
OSイメージ300は最初にOS稼動のための初期設定処理が記述されている。この初期設定処理の中で、必要であればNANDフラッシュメモリ103に対しエラーブロック回復処理を実施する。
まずECCエラー訂正情報302がRAM102上に作成されているか否かを判断する(ステップS09)。作成されていた場合(Yes)、エラーページ数500で示される数分、NANDフラッシュメモリ103の使用可能な未使用のブロックを探し、読み出したECCエラー訂正情報302の冗長データ502および訂正後データ503を含む、そのページが含まれるブロックのデータを書き込み(ステップS10)、ページ識別番号501が含まれるブロックと置き換える。ページ識別番号501で示されるページを含む元のブロックは信頼性が低いと判断し、以後データの保存に使用されることが無いようにバッドブロックマークを設定する(ステップS11)。
ここまでの一通りの処理を含む初期設定処理が終わると、OS本来の機能に移行する(ステップS12)。
本実施形態では上記のように、ECCエラー訂正情報302として作成した、読み出し時エラーとなったページの修復後のデータをエラーブロック回復処理に使用する。これにより、一度エラーを起こしたフラッシュメモリの不安定なページのデータを再び読まねばならないというリスクを回避することができる。
このような一連の構成とすることで、エラーが発見されたメモリブロックの代替え処理を省くことなく、NANDフラッシュメモリに格納されたデータの読み出しを高速に行えるエラー回復処理方法および情報処理装置を実現することができる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
本実施形態にかかる情報処理装置のブロック構成図の一例を示す図である。 本実施形態にかかるモジュール構成図の第1の動作を説明する図である。 本実施形態にかかるモジュール構成図の第2の動作を説明する図である。 本実施形態にかかるモジュール構成図の第3の動作を説明する図である。 本実施形態にかかるECCエラー訂正情報の一例を示す図である。 本実施形態にかかる情報処理装置の動作フローの一例を示す図である。
符号の説明
100・・・CPU、101・・・NORフラッシュメモリ、102・・・RAM、103・・・NANDフラッシュメモリ、104・・・IOコントローラ、105・・・内部バス、200・・・ブートローダ、201・・・NANDアクセスドライバ、202・・・OSイメージ、203・・・NANDアクセスドライバ、300・・・OSイメージ、301・・・NANDアクセスドライバ、302・・・ECCエラー訂正情報

Claims (5)

  1. ブロック単位にアクセスされるフラッシュメモリにおける、エラーブロックのエラー回復処理方法であって、
    第1のアプリケーションは、第1のアクセスドライバにより前記フラッシュメモリに記憶したデータを読み出し、
    読み出したデータにエラーがあった場合、第1のアクセスドライバは、このデータと共に記憶された冗長データを用いて訂正し、この訂正データとこのデータが記憶されていたブロックを特定する情報とを含むエラー訂正情報を出力し、
    前記エラー訂正情報が存在する場合、前記第1のアプリケーションの後に起動された第2のアプリケーションは、第2のアクセスドライバにより前記フラッシュメモリの使用可能な未使用のブロックにこのエラー訂正情報に含まれる前記訂正データを書き込むと共に、このエラー訂正情報に基づいて特定される前記フラッシュメモリのブロックを該未使用のブロックに置き換えるエラーブロック回復処理を行う
    ことを特徴とするエラー回復処理方法。
  2. 前記第1のアクセスドライバが前記エラー訂正情報を出力する際、さらに該エラー訂正情報に前記訂正データから算出した冗長データを付加すると共に、
    前記第2のアクセスドライバが前記エラーブロック回復処理を行う際、この付加した冗長データを前記未使用のブロックの冗長データとして書き込む
    ことを特徴とする請求項1に記載のエラー回復処理方法。
  3. ブロック単位にアクセスされ、読み出したあるブロックのデータに誤りが発見された場合、そのブロックの回復処理を必要とするフラッシュメモリを搭載した情報処理装置であって、
    前記フラッシュメモリに記憶したデータを読み出す機能を備え、この読み出したデータにエラーが発見された場合、このデータを正しく訂正すると共に、このデータが記憶されていたブロックを特定する情報と訂正後の訂正データとを含むエラー訂正情報を出力する第1のアクセスドライバと、
    前記第1のアクセスドライバを介して前記フラッシュメモリから所定のデータを読み出す処理手段と、
    前記エラー訂正情報が存在する場合、前記フラッシュメモリの使用可能な未使用のブロックにこのエラー訂正情報に含まれる前記訂正データを書き込むと共に、このエラー訂正情報に基づいて特定される前記フラッシュメモリのブロックを該未使用のブロックに置き換えるエラーブロック回復処理を行う第2のアクセスドライバと
    を具備し、
    前記処理手段による読み出し処理の後に、前記第2のアクセスドライバによるエラーブロック回復処理をすることを特徴とする情報処理装置。
  4. 前記第1のアクセスドライバが行うデータの訂正は、エラーが発見されたデータに付加された冗長データを用いて行われることを特徴とする、請求項3に記載の情報処理装置。
  5. 前記第1のアクセスドライバが前記エラー訂正情報を出力する際、さらに該エラー訂正情報に前記訂正データから算出した冗長データを付加すると共に、
    前記第2のアクセスドライバが前記エラーブロック回復処理を行う際、この付加した冗長データを前記未使用のブロックの冗長データとして書き込む
    ことを特徴とする請求項3に記載の情報処理装置。
JP2007022085A 2007-01-31 2007-01-31 エラー回復処理方法および情報処理装置 Pending JP2008191701A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007022085A JP2008191701A (ja) 2007-01-31 2007-01-31 エラー回復処理方法および情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007022085A JP2008191701A (ja) 2007-01-31 2007-01-31 エラー回復処理方法および情報処理装置

Publications (1)

Publication Number Publication Date
JP2008191701A true JP2008191701A (ja) 2008-08-21

Family

ID=39751786

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007022085A Pending JP2008191701A (ja) 2007-01-31 2007-01-31 エラー回復処理方法および情報処理装置

Country Status (1)

Country Link
JP (1) JP2008191701A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012069107A (ja) * 2010-08-31 2012-04-05 Apple Inc 不揮発性メモリからの装置ブートアップ中のエラーの取り扱い
JP2012155430A (ja) * 2011-01-25 2012-08-16 Sony Corp メモリシステムおよびその動作方法
JP2013137771A (ja) * 2011-12-12 2013-07-11 Apple Inc データ利用についてのマウント時間の調停
US9003262B2 (en) 2011-03-24 2015-04-07 Samsung Electronics Co., Ltd. Memory controller, devices including the same, and operating method thereof
JP2018136735A (ja) * 2017-02-22 2018-08-30 三菱電機株式会社 メモリ制御装置及びメモリ制御方法
CN109643261A (zh) * 2016-09-08 2019-04-16 法国大陆汽车公司 闪存中的纠错方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012069107A (ja) * 2010-08-31 2012-04-05 Apple Inc 不揮発性メモリからの装置ブートアップ中のエラーの取り扱い
US8589730B2 (en) 2010-08-31 2013-11-19 Apple Inc. Handling errors during device bootup from a non-volatile memory
JP2012155430A (ja) * 2011-01-25 2012-08-16 Sony Corp メモリシステムおよびその動作方法
US9003262B2 (en) 2011-03-24 2015-04-07 Samsung Electronics Co., Ltd. Memory controller, devices including the same, and operating method thereof
JP2013137771A (ja) * 2011-12-12 2013-07-11 Apple Inc データ利用についてのマウント時間の調停
US8756458B2 (en) 2011-12-12 2014-06-17 Apple Inc. Mount-time reconciliation of data availability
KR101451482B1 (ko) 2011-12-12 2014-10-22 애플 인크. 데이터 이용가능성의 마운트타임 조정
US9104329B2 (en) 2011-12-12 2015-08-11 Apple Inc. Mount-time reconciliation of data availability
KR101930092B1 (ko) 2011-12-12 2018-12-17 애플 인크. 데이터 이용가능성의 마운트타임 조정
CN109643261A (zh) * 2016-09-08 2019-04-16 法国大陆汽车公司 闪存中的纠错方法
CN109643261B (zh) * 2016-09-08 2023-06-02 法国大陆汽车公司 闪存中的纠错方法
JP2018136735A (ja) * 2017-02-22 2018-08-30 三菱電機株式会社 メモリ制御装置及びメモリ制御方法

Similar Documents

Publication Publication Date Title
JP5492679B2 (ja) 記憶装置およびメモリコントローラ
US8914702B2 (en) Bit error repair method and information processing apparatus
US8046528B2 (en) Data writing method for flash memory, and flash memory controller and storage device thereof
US8448046B2 (en) Memory access method capable of reducing usage rate of problematic memory blocks
US9996462B1 (en) Data storage device and data maintenance method thereof
JP4828816B2 (ja) メモリカード、半導体装置、及びメモリカードの制御方法
US20050091445A1 (en) Internal maintenance schedule request for non-volatile memory system
JP2010015197A (ja) ストレージ制御装置、データ復元装置およびストレージシステム
TW201916018A (zh) 資料儲存裝置與將資料寫入記憶體裝置之方法
TWI633428B (zh) 資料儲存裝置與記憶體裝置之資料處理方法
US20090100290A1 (en) Memory controller, nonvolatile memory device, nonvolatile memory system, and data writing method
US9547566B2 (en) Storage control apparatus, storage apparatus, information processing system, and storage control method therefor
KR20130069364A (ko) 비휘발성 반도체 기억 장치 및 그 관리 방법
JP2009301194A (ja) 半導体記憶装置の制御システム
JP2008191701A (ja) エラー回復処理方法および情報処理装置
JPWO2009004674A1 (ja) 記憶装置、ディスク装置、書込み判定方法、制御装置
JP5592478B2 (ja) 不揮発性記憶装置及びメモリコントローラ
JP4373943B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4956230B2 (ja) メモリコントローラ
JP2010086009A (ja) 記憶装置およびメモリ制御方法
JP4357305B2 (ja) 外部記憶装置
CN119025020A (zh) 数据存取管理的方法、存储器装置的存储器控制器、存储器装置以及电子装置
JP4661369B2 (ja) メモリコントローラ
JP2013069171A (ja) メモリシステムとその制御方法
JP5533141B2 (ja) 書き込み装置、書き込み方法、及び書き込みプログラム