説明

メモリコントローラ、不揮発性記憶装置、アクセス装置、及び不揮発性記憶システム

【課題】コマンドの先行発行が可能な不揮発性記憶システムにおいて、アクセス装置が電源遮断時のファイルの整合性を保ちつつ、ユーザーデータおよび管理情報データの制御を実施するのは困難であった。
【解決手段】コマンドスケジューラ162は、ユーザーデータおよび管理情報データにSeq番号を付与し、同一Seq番号をもつユーザーデータの書き込み完了後に、同一Seq番号を有する管理情報データの書き込みを実行するように制御する。これにより、書き込み中に電源遮断が発生してもファイルの整合性を保つことができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性メモリを制御するメモリコントローラ、不揮発性メモリとメモリコントローラを備えた不揮発性記憶装置、前記不揮発性記憶装置へアクセスするアクセス装置、及び前記不揮発性記憶装置とアクセス装置を構成に備える不揮発性記憶システムに関する。
【背景技術】
【0002】
書き換え可能な不揮発性メモリを備える不揮発性記憶装置は、半導体メモリカードを中心にその需要が広まっている。不揮発性記憶装置は、光ディスクやテープメディアなどと比較して高価格なものではあるが、小型・軽量・耐震性・取り扱いの簡便さ等のメリットにより、デジタルスチルカメラや携帯電話などのポータブル機器の記録媒体としてその需要が広まっている。この不揮発性記憶装置は、不揮発性の主記憶メモリとしてフラッシュメモリを備え、それを制御するメモリコントローラを有している。メモリコントローラは、デジタルスチルカメラやパソコン(パーソナルコンピュータ)本体等のアクセス装置からの読み書き指示に応じて、フラッシュメモリに対する読み書き制御を行うものとなっている。
【0003】
半導体メモリカードやポータブルオーディオなどの製品に内蔵されたフラッシュメモリは、記憶単位であるメモリセルアレイへの書き込みや消去に比較的長い時間を必要とするため、複数のメモリセルを一括して消去したり書き込んだりできる構造となっている。具体的には、複数の物理ブロック(消去単位)から構成され、各物理ブロックは複数のページ(書き込み単位)を含み、消去は物理ブロック単位で、書き込みはページ単位で行われる。
【0004】
このような不揮発性記憶装置をデジタルスチルカメラ等のアクセス装置に取り付けて、アクセス装置側からリムーバブルディスクと見なして例えばFATファイルシステム等のファイルシステムで管理する。FATファイルシステムは、ファイル・アローケション・テーブル(以降、FATと明記する)を用いて「クラスタ」ごとにファイルデータを管理し、半導体メモリカードなどの不揮発性記憶装置へファイルデータを書き込む際には、空きクラスタにファイルデータをアロケートし、さらに該ファイルデータと該ファイルデータがアロケートされたクラスタ番号(論理アドレス)とを不揮発性記憶装置に指定する。
【0005】
ファイルデータは、データの実体であるユーザーデータと、ユーザーデータを管理するための管理情報データである、FAT1、FAT2、ディレクトリエントリ(以後DIRと略記する)に大別される。FAT1は、上述したクラスタ単位でのファイルアロケート情報である。FAT2はFAT1のバックアップであり、FAT1と同じ内容を不揮発性記憶装置の別の領域に保持する。DIRはファイル名、ファイル書き込み時刻などファイルの属性が保持されたデータである。FAT1とFAT2の内容が完全に一致したときに限り、FAT情報は正常であるとする。
【0006】
ところで、SDカードをはじめとする半導体メモリカードは、複数のホスト間でのデータ共有が容易にできるブリッジメディアとしての役割が大きく、ホストに対して装着、抜去が容易であることが特徴である。従ってホストから半導体メモリカードに対してデータの書き込みの最中に、ユーザーの故意または不注意により半導体メモリカードが抜去される可能性がある。このとき、ユーザーデータと、FATデータとの関係に不整合が生じると、すでに記録したファイルデータを正しく読み出すことができなくなる。
【0007】
上記を解決するための手段として、特許文献1に、旧データが書き換えられた物理領域に対応するアドレス管理情報を、無効予定状態とし、一連の書き込み処理終了までは書き込みを禁止とすることにより、データ書き込み中に抜去等により電源遮断等の障害が生じても、書き込み前の状態、即ち旧データが残っている状態に戻す方法が開示されている。
【0008】
図7は、不揮発性記憶装置の一つであるSDカードと、ビデオカメラ等のアクセス装置からなる従来の不揮発性記憶システムについて説明したブロック図である。また図8は、図7に示すSDカードの不揮発性メモリ770の論理アドレス空間の一例を示した図である。図8は、FAT1、FAT2データは、システム領域772内の所定の位置に、ユーザーデータとDIRはユーザーデータ領域771に格納されることを示している。
【0009】
アクセス装置700とSDカード710は、インターフェースバス720で接続されている。アクセス装置700は、アプリケーション730、ファイルシステム740、およびSDカードI/F部750を含む。一方SDカード710は、アクセス装置I/F部760と不揮発性メモリ770から構成される。アクセス装置I/F部760はコマンド解析部761と書き込み制御部762を含み、また不揮発性メモリ770はユーザーデータ領域771とシステム領域772を含む。
【0010】
アプリケーション730はAPI呼出部731とユーザーデータ入力部732からなる。ユーザーデータ入力部732は、ファイルに書き込むユーザーデータの供給元であり、アクセス装置700内部の記憶装置(図示せず)から供給される場合もあれば、アクセス装置700の外部からI/F(図示せず)を介して供給される場合もある。
【0011】
ファイルシステム740は、コマンド生成部741と書き込みアドレス生成部742と、管理情報データ生成部743からなる。
【0012】
ユーザーデータのSDカード710への書き込みは、アプリケーション730が、API呼出部731よりAPIを呼び出すと、コマンド生成部741がインターフェースバス720上でのWriteコマンドを、書き込みアドレス生成部742が書き込み先論理アドレスをSDカードI/F部750に供給し、インターフェースバス720上にWriteコマンドおよびユーザーデータ入力部732より供給される書き込むユーザーデータを転送することで実施する。
【0013】
アクセス装置I/F部760はコマンド解析部761にてコマンドを解釈する。コマンドがWriteコマンドのようにデータを伴う場合、アプリケーション730は、ユーザーデータ入力部732より供給されるユーザーデータをSDカードI/F部750を介してインターフェースバス720経由で転送する。
【0014】
アクセス装置I/F部760がユーザーデータを受信したとき、書き込み制御部762は、ユーザーデータ領域771内の指定された論理アドレスに当該ユーザーデータを書き込む。
【0015】
一方FATデータの書き込みは以下のように実施される。アプリケーション730がAPI呼出部731より同期APIを呼び出すと、コマンド生成部741はFAT1データのWriteコマンドが発行され、続いて管理情報データ生成部743のFAT1データをSDカードI/F部750を介してインターフェースバス720経由で転送する。
【0016】
アクセス装置I/F部760がFAT1データを受信したとき、書き込み制御部762は、システム領域772内の指定された論理アドレスに当該FAT1データを書き込む。
【0017】
以下同様にFAT2データ、DIRデータのWriteコマンドが発行され、前者はシステム領域772内に、後者はユーザーデータ領域771内にデータが書き込まれることで、ファイル同期APIが完了する。
【0018】
図9は、図7の不揮発性記憶システムにおいて、動画等のユーザーデータを連続的に記録する場合の、インターフェースバス720上のコマンドおよびファイルデータを時系列に説明した図である。現行のSDカードでは、カード内部で処理を実行中(busy状態)に別のコマンドを発行することができない。またAPI呼出部731がAPIを呼び出したとき、所定の処理が完了するまでblockingされる。
【0019】
また論理アドレス空間上で、アドレスが不連続の領域に1回のコマンドでファイルデータの読み書きはできない。さらに通常、ファイルデータの書き込みは、上述したように最初にユーザーデータを書き込み、上記が正常に終了した後、FATなど、対応する管理情報データの書き込みを実施しなればならない。仮に管理情報データ、ユーザーデータの順に書き込む場合、ユーザーデータ書き込み中に抜去等による電源遮断が発生したとき、FATは正しく更新されているが、対応するユーザーデータが更新されていない場合が生じる。そのため、当該ファイルデータをReadするとき、書き込みに失敗したユーザーデータのクラスタが読み出されることになり、正しくデータをReadすることができなくなるからである。ユーザーデータ、管理情報データの順であれば、例えば特許文献1に記載の方法により、ファイルデータRead時の不整合を防止することができる。
【0020】
アプリケーション730のAPI呼出部731がユーザーデータaの書き込みAPIを発行すると、ファイルシステム740のコマンド生成部741は「Write(ユーザーデータa)」を発行し、続けてユーザーデータ入力部732より供給されたユーザーデータaがアクセス装置700からSDカード710に転送される。通常インターフェースバス720上の転送速度より、不揮発性メモリへ770への書き込み速度が低く、かつ書き込み制御部762でのアドレス変換、プログラミング等のオーバーヘッドがあるため、所定のユーザーデータ転送が完了してもSDカード710内部での処理が未完了のため、しばらくbusy状態が継続する。busy状態では、インターフェースバス720上のコマンドは発行できない。
【0021】
ユーザーデータaの書き込みが完了し、busy状態が解除になった後、アプリケーション730のAPI呼出部731は同期APIを呼び出すことができる。このとき、ファイルシステム740は、SDカードI/F部750を介してユーザーデータaに対応するFAT1aデータのWriteコマンドを発行することができる。
【0022】
時刻T1でFAT1aのWriteコマンドが発行されたとき、続けてFAT1aデータが転送される。以後同様にFAT2a、DIRaのWriteコマンドが発行される。なお、FAT1、FAT2、DIRの管理情報データは通常サイズが小さいため、ここではデータ転送完了とbusy状態解除がほぼ同時であるとみなす。
【0023】
DIRaの書き込みが完了した後、アプリケーション730のAPI呼出部731はユーザーデータbの書き込みAPIを発行できる。
【特許文献1】特開2005−243000号公報
【発明の開示】
【発明が解決しようとする課題】
【0024】
このように、従来の不揮発性記憶システムにおいては、インターフェースバス720上でコマンドもしくはファイルデータの転送が実施されていなくても、SDカードがbusy状態であればコマンドの発行を実施することができないため、バスを効率的に利用できない、という課題があった。
【0025】
そこで本発明の目的は、ファイルデータ書き込みなどコマンド処理実行中であっても別のコマンドを発行してインターフェースバスを効率よく利用することである。
【課題を解決するための手段】
【0026】
前記目的を達成するため本発明は、不揮発性メモリへのデータ記録を制御するメモリコントローラにおいて、不揮発性メモリへのデータ書き込み、又は不揮発性メモリからのデータ読み出しを行う読み書き制御部と、外部から、処理要求が示されるコマンドパケット及び不揮発性メモリへ書き込むデータ有するデータパケットを受信し、これら受信パケットを解析するパケット解析部と、コマンドパケットが有する処理要求を蓄積し、要求される処理の実行時期を管理するコマンドスケジューラとを備え、パケット解析部は、読み書き制御部が不揮発性メモリへのデータ書き込み又はデータ読み出しを行っている際に、コマンドパケットを受信し、該コマンドパケットの処理要求をコマンドスケジューラへ蓄積することを特徴とするものである。
【0027】
これにより、メモリコントローラが不揮発性メモリへデータ書き込み又はデータ読み出しを行っている場合でも、パケット解析部は外部からコマンドパケットを受信することが可能となる。
【0028】
さらに本発明は、上記に記載のメモリコントローラにおいて、受信パケットは、関連付けられるコマンドパケットとデータパケットで共通の識別子を有し、コマンドパケットが有する処理要求の実施状況を識別子で管理する管理部を備え、コマンドスケジューラは、実施状況に基づいて、次に実施する処理及び実行時期を管理することを特徴とするものである。
【0029】
これにより、コマンドスケジューラは、個々のコマンドパケットとデータパケットの関連性を識別(認識)することが可能となる。
【0030】
なお、上記の発明は上記に記載のメモリコントローラと不揮発性メモリを備えた不揮発性記憶装置としても実現することが可能である。この場合には、本発明を各種の情報(データ)を記録する情報記憶媒体として実現することが可能となる。
【0031】
また本発明は、不揮発性メモリを有する不揮発性記憶装置へデータ書き込みを指示するアクセス装置において、不揮発性記憶装置への処理要求を生成するコマンド生成部と、不揮発性記憶装置へ転送するデータと関連付けられる処理要求に対して共通の識別子を割り当てる識別子生成部と、転送するデータ及び処理要求から、共通の識別子を有したデータパケット及びコマンドパケットを生成するとともに、不揮発性記憶装置の処理状態を検出し、不揮発性記憶装置が処理中の際には、不揮発性記憶装置へコマンドパケットのみを出力するデータバッファ部とを備えることを特徴とするものであってもよい。
【0032】
これにより、アクセス装置は不揮発性記憶装置の処理状態を検出することで、不揮発性記憶装置へ出力するパケットを選択することが可能となる。そのため、不揮発性記憶装置内部でデータの書き込み又は読み出しが行われている際にも、アクセス装置はコマンドパケットを不揮発性記憶装置へ出力することが可能となる。
【0033】
さらに本発明は、上記のアクセス装置において、識別子生成部は、不揮発性記憶装置へ転送するデータと関連付けられる該データの管理情報に係わる処理要求についてのみ共通の識別子を割り当てることを特徴とするものであってもよい。
【0034】
これにより、不揮発性記憶装置は、個々のコマンドパケットとデータパケットの関連性を識別(認識)することが可能となる。
【0035】
また本発明は、上記の不揮発性記憶装置とアクセス装置を備える不揮発性記憶システムとしても実現することが可能である。この場合には、情報(データ)を記録する情報記憶媒体及びそれに接続されるアクセス装置(ホスト装置)とを備えたシステム全体として効率的にアクセス装置から不揮発性記憶システムへ効率的にデータ及びコマンドの転送が可能となる。
【発明の効果】
【0036】
本発明によれば、アクセス装置からあるコマンドの実行前、もしくは実行中に、別のコマンドを発行することでコマンド処理のスループットが向上し、インターフェースバスを効率的に利用することが可能となる。
【発明を実施するための最良の形態】
【0037】
(第1の実施の形態)
図1は、本発明の実施の形態に於ける不揮発性記憶システムの実施方法を示したブロック図である。図1において、不揮発性記憶システムは、アクセス装置100と不揮発性記憶装置110とから構成され、両者はインターフェースバス120を介して接続される。
【0038】
アクセス装置100は、アプリケーション130、ファイルシステム140、不揮発性記憶装置I/F部150から構成される。
【0039】
アプリケーション130は、API呼出部131、ユーザーデータ入力部132を含む。またファイルシステム140は、コマンド生成部141、書き込みアドレス生成部142、Seq#生成部143、管理情報データ生成部144を含む。また、不揮発性記憶装置I/F部150は、ヘッダ生成部151、SubSeq#生成部152、データバッファ153を含む。
【0040】
一方不揮発性記憶装置110は、アクセス装置I/F部160および不揮発性メモリ170から構成される。アクセス装置I/F部160は、パケット解析部161、コマンドスケジューラ162、コマンド実行部163、書き込み制御部164、Seq#管理部165を含む。また不揮発性メモリ170は、少なくともユーザーデータ領域171、システム領域172を含む。なお、不揮発性メモリ170内の、ユーザーデータ領域171およびシステム領域172における論理アドレス空間は、図8と同様とする。
【0041】
図2は、本実施の形態において、インターフェースバス120上のパケット構成を説明した図である。
【0042】
図2(a)は、インターフェースバス120上のパケットの基本形である。パケットは、パケット送信順を示すパケット番号(以下パケット#と略記する)、パケットがコマンドであるかデータを示すパケットID、パケットの長さを示すパケット長を含むヘッダと、パケットの内容を示すペイロードから構成される。ヘッダは、パケットがコマンド、データに関わらず共通のフォーマットである。一方ペイロードは、パケットIDによりそのフォーマットが変化する。
【0043】
図2(b)は、コマンドの一例として、Writeコマンドのパケット構成を示したものである。Writeコマンドパケットは、パケット#、パケットID(ここでは「コマンド」が設定される)、パケット長からなるヘッダに続き、コマンド種別(ここでは「Write」が設定される)、どのようなデータをWriteするかを識別するデータ種別(「ユーザーデータ」、「FAT1」などが設定される)、Seq番号、SubSeq番号(以下それぞれSeq#、SubSeq#と略記する)から構成される。Seq#、SubSeq#については、後述する。
【0044】
図2(c)は、ユーザーデータのWriteコマンドにより、アクセス装置100から不揮発性記憶装置110に転送されるユーザーデータのパケット構成を示したものである。ユーザーデータパケットは、パケット#、パケットID(ここでは「データ」が設定される)、パケット長からなるヘッダに続き、データ種別(ここでは「ユーザーデータ」が設定される)、Seq#、SubSeq#、書き込み先アドレス(論理アドレス)、ユーザーデータ実体(誤り訂正符号等も含む)から構成される。
【0045】
図2(d)は、管理情報データの一例として、FAT1データのWriteコマンドにより、アクセス装置100から不揮発性記憶装置110に転送されるFAT1データのパケット構成を示したものである。FAT1データパケットは、パケット#、パケットID(ここでは「データ」が設定される)、パケット長からなるヘッダに続き、データ種別(ここでは「FAT1」が設定される)、Seq#、SubSeq#、書き込み先アドレス(論理アドレス)、FAT1データ実体(誤り訂正符号等も含む)から構成される。
【0046】
以下、図1、図2を用いて、アクセス装置100から不揮発性記憶装置110にデータを書き込むときの動作について説明する。このときインターフェースバス120上には、1個のWriteコマンドパケットに続き、1又は複数個のデータパケットが送信される。
【0047】
はじめにWriteコマンドパケットについて説明する。アプリケーション130内のAPI呼出部131により、データ書き込みのAPIが呼び出される。このときファイルシステム140には、上記指示に合わせて少なくともデータ長、データ参照先が指示される。データ参照先は、ユーザーデータであればユーザーデータ入力部132上の、管理情報データであれば管理情報データ生成部144の所定の領域である。
【0048】
ファイルシステム140は、コマンド生成部141でインターフェースバス120上でのWriteコマンドを生成する。さらにSeq#生成部143で、当該WriteコマンドのSeq#を生成する。Seq#は、ユーザーデータと対応する管理情報データとこれらのデータを記録するためのコマンドを関連付けるための数値であり、Seq#生成部143で一定の規則にしたがって生成する。本実施の形態では、説明の簡略化のために単調増加となるように生成するものとする。ファイルシステム140は、上述したWriteコマンドおよびSeq#を不揮発性記憶装置I/F部150内のデータバッファ153に供給する。
【0049】
不揮発性記憶装置I/F部150では、上記に対して、ヘッダ生成部151により生成されるヘッダ、SubSeq#生成部152により生成されるSubSeq#を付加して、Writeコマンドパケットを生成する。このとき、ヘッダのパケットIDは「コマンド」となる。またコマンドパケットの場合、SubSeq#は常に終端情報が設定される。以下SubSeq#は8ビット長であると仮定し、終端情報は0xFFであると定義する。
【0050】
Writeコマンドパケットは、インターフェースバス120を介して、不揮発性記憶装置110のパケット解析部161に供給される。
【0051】
パケット解析部161では、パケットのヘッダに含まれるパケットIDを解析する。解析した結果、コマンドであると判明したとき、コマンドスケジューラ162に当該コマンドの内容(この場合は「Write」)とSeq#が供給される。その後コマンドスケジューラ162が、蓄積されたコマンドを適切なタイミングでコマンド実行部163に供給することで、当該コマンドが実行される。
【0052】
次にデータパケットの場合について説明する。データパケットは、不揮発性記憶装置110からアクセス装置100へ転送要求があった場合に、転送される。不揮発性記憶装置110から、データパケットの要求があると、書き込み先アドレス生成部142は、前述したWriteコマンド発行に伴って不揮発性メモリ170上にて書き込み可能な領域を検出して、その論理アドレスを書き込みアドレスとして生成し、データバッファ153に供給する。またSeq#生成部143は当該ファイルデータのSeq#をそれぞれ生成し、データバッファ153に供給する。さらに、書き込まれるデータの実体は、上述したユーザーデータ入力部132、または管理情報データ生成部144上のデータ参照先からデータバッファ153に蓄積される。
【0053】
不揮発性記憶装置I/F部150では、上記に加え、ヘッダ生成部151により生成されるヘッダ、SubSeq#生成部152により生成されるSubSeq#を付加して、データパケットを生成する。このとき、ヘッダのパケットIDは「データ」となる。
【0054】
SubSeq#には、同一のSeq#を有するファイルデータを、インターフェースバス120上でパケット分割して送信するときの数値であり、同一Seq#内では単調増加となるように設定する。同一Seq#の最終パケットのSubSeq#は0xFF(終端情報)を設定する。パケット分割する単位は、アクセス装置100および不揮発性記憶装置110内のバッファサイズや、インターフェースバス120の転送速度等に基づいて、不揮発性記憶装置I/F部150が定めるが、不揮発性メモリ170固有の1ページあたりのサイズ、もしくはその倍数であることが望ましい。なお管理情報データはサイズが小さいため、同一Seq#を持つ管理情報データは1個のパケットで送信することが望ましい。この場合、SubSeq#=0xFFとなる。
【0055】
データパケットは、インターフェースバス120を介して、不揮発性記憶装置110のパケット解析部161に供給される。
【0056】
パケット解析部161では、パケットのヘッダに含まれるパケットIDを解析する。解析した結果、データであると判明したとき、当該パケットの内容が書き込み制御部164に蓄積される。書き込み制御部164では、データ種別の解析、および各データパケットに多重されている書き込みアドレスが、不揮発性メモリ170上の物理アドレスに変換された上で、不揮発性メモリ170のユーザーデータ領域171、またはシステム領域172の所定のアドレスに書き込まれる。なお、管理情報データは、書き込み途中での電源遮断対策のため、すでに書き込み済みの同一データに上書きせず、別の領域に書き込む。そしてすべての管理情報データが正しく書き込まれたときに、以前の管理情報データを消去、もしくは無効化する。これにより、仮に電源遮断により管理情報データが書き込みに失敗した場合でも、以前の管理情報データを用いてユーザーデータと管理情報データとの整合性を保つことができる。
【0057】
データが不揮発性メモリ170の所定の領域に正常に書き込まれたとき、書き込み制御部164は、正常に書き込めたパケットのデータ種別、Seq#およびSubSeq#をSeq#管理部155に通知する。
【0058】
Seq#管理部では、データ種別ごとに、正常に書き込めたデータのSeq#およびSubSeq#を管理する。
【0059】
コマンドスケジューラ162は、蓄積されているコマンド、およびSeq#管理部165の情報を参照しながら、次に実行すべきコマンドをコマンド実行部163に供給する。
【0060】
コマンド実行部163は、コマンドスケジューラ162から供給されたコマンドを解析し実行する。具体的には、Seq#=2のデータのWriteコマンドを実行する場合は、Seq#1の際と同様に、インターフェースバス120を介してアクセス装置100に対し当該ファイルデータの転送を要求する。上記転送要求を受けたアクセス装置100は、データバッファ153に蓄積されている当該ファイルデータのデータパケットをインターフェースバス120経由で介して不揮発性記憶装置110に送信し、不揮発性メモリ170の所定の領域への書き込みを実行させる。
【0061】
図3は、本実施の形態において、ユーザーデータおよび管理情報データのWriteコマンド発行タイミング、コマンド実行部163において実際にコマンドが実行されるタイミング、およびユーザーデータおよび管理情報データのパケットが送信されるタイミングについて、説明した図である。また図4は、図3に記載のシーケンス実行に伴うSeq#管理部165の管理情報の遷移を記載した図である。なお、以後説明の簡便のため、ユーザーデータ、FAT1データ、FAT2データ、DIRデータを、それぞれ記号U、A、B、Cと記載する。また同一のSeq#を持つコマンド、および管理情報データは、1個のパケットで送信するものとする。すなわち、これらのパケットのSubSeq#は常に終端情報(0xFF)である。
【0062】
アクセス装置100が不揮発性記憶装置110の装着を検知したとき、不揮発性記憶装置I/F部150は、「Initialize」コマンドパケットを、インターフェースバス120を介して不揮発性記憶装置110に送信する。上記を受信したアクセス装置I/F部160は、パケット解析部161での解析を経てコマンドスケジューラ162に供給される。Initializeコマンドは、不揮発性メモリ170へのデータ書き込みに無関係であるため、直ちにコマンド実行部163に供給され、実行可能状態となる。Initializeコマンドにより、Seq#管理部165の管理情報初期化を含む不揮発性記憶装置110の初期化が行われる。本コマンド処理完了後の、時刻T0におけるSeq#管理部165の管理情報を図4(a)に示す。
【0063】
アクセス装置100が、所定のユーザーデータの書き込みを実行しようとするとき、アプリケーション130のAPI呼出部131は書き込みAPIを呼び出す。このとき、書き込みデータ長(size1)も合わせてファイルシステム140へ通知する。
【0064】
ファイルシステム140は、コマンド生成部141においてWriteコマンドを、Seq#生成部143でSeq#=1を生成し、不揮発性記憶装置I/F部150に供給する。不揮発性記憶装置I/F部150は、Seq#=1のユーザーデータのWriteコマンドである「Write(U[1])」コマンドパケット生成し、インターフェースバス120を介して不揮発性記憶装置110に送信する。上記を受信したアクセス装置I/F部160は、パケット解析部161での解析を経てコマンドスケジューラ162に供給される。
【0065】
コマンドスケジューラ162は、ユーザーデータの書き込みであるため、直ちにコマンド実行部163に供給され、実行可能状態となる。
【0066】
Write(U[1])コマンドの実行に伴い、アクセス装置I/F部160はインターフェースバス120を介して不揮発性記憶装置I/F部150に「U[1]」のユーザーデータパケットを要求する。
【0067】
不揮発性記憶装置I/F部150は、SubSeq#生成部152で生成したSubSeq#=1をもつユーザーデータパケットU[1]−1を生成し、アクセス装置I/F部160に送信する。ここにU[1]−1は、Seq#=1のユーザーデータU[1]のうち、SubSeq#=1のデータパケットであることを意味する。なお、各ユーザーデータパケットをどのような大きさに分割するかは、インターフェースバス120の仕様、データバッファ153の大きさ等により不揮発性記憶装置I/F部150が決定する。
【0068】
上記を受信したアクセス装置I/F部160はパケット解析部161で解析され、書き込み制御部164でアドレス変換等の処理を経て、不揮発性メモリ170のユーザーデータ領域171の所定のアドレスに書き込まれる。
【0069】
本実施の形態においては、アクセス装置I/F部160内のコマンドスケジューラ162がコマンドの蓄積、および所定のタイミングでの実行指示が可能であるため、アプリケーション130は、不揮発性記憶装置110がbusy状態であってもコマンドパケットを送信することが可能である。このため、U[1]−1のユーザーデータパケット転送中、API呼出部131が同期APIを呼び出したとき、ファイルシステム140(不揮発性記憶装置I/F部150)は、不揮発性記憶装置110がbusy状態であってもU[1]−1のパケットの転送が完了すれば、不揮発性記憶装置I/F部150は、Seq#=1のFAT1データのWriteコマンドである「Write(A[1])」コマンドパケットを、インターフェースバス120を介して不揮発性記憶装置110に送信することが可能である。
【0070】
上記を受信したアクセス装置I/F部160は、パケット解析部161での解析を経てコマンドスケジューラ162に供給される。
【0071】
コマンドスケジューラ162は、ユーザーデータの書き込みであるため、直ちにコマンド実行部163に供給され、実行可能状態となる。
【0072】
コマンドスケジューラ162は、Seq#管理部165の管理情報(図4(a))を参照し、Seq#=1であるユーザーデータの書き込みが完了していないことを検出する。よって、Write(A[1])コマンドは、コマンドスケジューラ162で蓄積されたままとなる。コマンドスケジューラ162は、コマンドが蓄積されている間は、定期的にSeq#管理部165の管理情報を参照する。
【0073】
ユーザーデータU[1]−1の書き込みが正常に完了した時刻T1で、書き込み制御部164は、Seq#管理部165に、Seq#=1、SubSeq#=1の正常書き込みを通知する。この結果、Seq#管理部165の管理情報は図4(b)のように更新される。同時にbusy状態が解除される。
【0074】
busyが解除されると、次のユーザーデータパケットであるU[1]−2の転送が行われる。この場合も再びbusy状態となるが、上述したように同期API発行に関連したコマンドを発行することが可能である。すなわち不揮発性記憶装置I/F部150はSeq#=1のFAT2、DIRのWriteコマンドである「Write(B[1])」、「Write(C[1])」コマンドパケットを、U[1]−2パケットの転送完了後送信することが可能となる。そして上記コマンドパケットを送信これらのWriteコマンドを受信したコマンドスケジューラ162は、Seq#管理部165の管理情報(図4(b))を参照して、Seq#=1であるユーザーデータの書き込みが完了していないことを検出する。よって、Write(B[1])、Write(C[1])コマンドは、同様にコマンドスケジューラ162で蓄積されたままとなる。
【0075】
データバッファ153上で、U[1]の書き込み時に指定されたデータ長size1のデータをすべてパケット化できたとき、最終パケットを意味するU[1]−Eを生成し、アクセス装置I/F部160に送信する。U[1]−Eの書き込みが正常に完了した時刻T2で、書き込み制御部164は、Seq#管理部165に、Seq#=1、SubSeq#=0xFFの正常書き込みを通知する。この結果、Seq#管理部165の管理情報は図4(c)のように更新され、同時にbusy状態が解除される。
【0076】
時刻T2の直後、コマンドスケジューラ162がSeq#管理部165の管理情報(図4(c))を参照し、Seq#=1であるユーザーデータの書き込みが完了したことを検出する。これにより、コマンドスケジューラ162は、蓄積していたコマンドのうち、Write(A[1])コマンドをコマンド実行部163に供給する。この結果、Write(A[1])コマンドが実行され、アクセス装置I/F部160は、アクセス装置100へデータパケットの転送を要求し、インターフェースバス120を介してA[1]のデータパケットを受信する。上記を受信したアクセス装置I/F部160はパケット解析部161で解析され、書き込み制御部164でアドレス変換等の処理を経て、不揮発性メモリ170のシステム領域172の所定のアドレスに書き込まれる。従来の不揮発性記憶システムで説明したように、管理情報データの場合は、データ転送完了とbusy状態解除がほぼ同時であるとみなす。
【0077】
A[1]データの書き込みが正常に完了した時刻T3においては、Seq#管理部165の管理情報は、図4(d)のようになる
FAT1データA[1]パケット転送後、アプリケーション130からSeq#2の書き込みを指示されたとき、不揮発性記憶装置I/F部150は、Seq#=2のユーザーデータのWriteコマンドである「Write(U[2])」コマンドパケットを、インターフェースバス120を介して不揮発性記憶装置110に送信する。このとき、コマンドスケジューラ162には他のコマンド(Write(B[1])およびWrite(C[1]))が蓄積された状態であるので、Write(U[2])コマンドは、コマンドスケジューラ162に蓄積される。
【0078】
その後、Write(B[1])コマンド、Write(C[1])コマンドが順次実行されると、コマンドスケジューラ162に蓄積されたコマンドは、Write(U[2])コマンドのみとなる。このとき、Write(U[2])コマンドがコマンド実行部163に供給される。この結果、Write(U[2])コマンドが実行され、アクセス装置I/F部160は、アクセス装置100へデータパケットの転送を要求し、インターフェースバス120を介してユーザーデータパケットU[2]−1が、アクセス装置I/F部160に対して送信される。
【0079】
さて、C[1]データの書き込みが正常に完了した時刻T4においては、Seq#管理部165の管理情報は、図4(e)のようになる。このとき、Seq#=1のユーザーデータ、管理情報データがすべて正しく書き込まれているため、Seq#=1のデータは、ファイルデータとして整合性が取れることを意味している。すなわち、時刻T4の直後に電源遮断が生じても、Seq#=1の管理情報データを用いてSeq#=1のユーザーデータを正しく読み出すことができる。
【0080】
以上説明したように、本実施の形態においては、従来の不揮発性記憶システムと比較した場合、不揮発性記憶装置内でコマンドを蓄積できるようにすることで、不揮発性記憶装置110がbusy状態であっても、その間に以降のコマンドパケットの送信が可能となり、バスを効率よく使用することができる。その結果、書き込み時のシステムのスループットを向上させることができる。
【0081】
また、不揮発性記憶装置内で蓄積されたコマンドを適切なタイミングで実行指示を行うことで、管理情報データは、常に対応するユーザーデータの書き込み完了後に書き込まれるため、書き込み途中の電源遮断が発生しても、正しくファイルを読み出すことができる。具体的には、時刻T3の後、B[1]データの書き込み中に電源遮断が生じたとき、Seq#=1のFAT1データとFAT2データの内容が異なり、かつDIRに含まれるファイル名などの情報が正しく更新されていない事態になる。従ってこの場合、再起動時に、A[1]データ書き込み以前の管理情報データを復元し、U[1]は無効とする。これにより、ユーザーデータU[1]書き込み以前のファイルデータの再生は成功する。
【0082】
なお、不揮発性記憶装置110がbusy状態であるかどうかをアクセス装置100が検出する方法として、インターフェースバス120の専用ピンの状態による検出、もしくはアクセス装置100からの問い合わせコマンドの実行結果などにより実現可能である。
(第2の実施の形態)
図5は本発明の第2の実施の形態について説明した図である。図5において、500はアクセス装置、540はファイルシステム、550は不揮発性記憶装置I/F部、554はSeqサイズ設定部、555はSeq#生成部である。
【0083】
アクセス装置500はアプリケーション130、ファイルシステム540および不揮発性記憶装置I/F部550を含む。
【0084】
ファイルシステム540はコマンド生成部141、書き込みアドレス生成部142および管理情報データ生成部144からなる。
【0085】
不揮発性記憶装置I/F部550は、ヘッダ生成部151、SubSeq#生成部152、データバッファ153、Seqサイズ設定部554、Seq#生成部555からなる。
【0086】
以下、第2の実施の形態におけるアクセス装置100から不揮発性記憶装置110にデータを書き込むときの動作を、第1の実施の形態との相違点を中心に述べる。
【0087】
第1の実施の形態では、API呼出部131が書き込みAPIを呼び出し、ファイルシステム140がWriteコマンドを発行する度にSeq#を設定していた。
【0088】
一方本実施の形態では、アプリケーション130が同一のSeq#を持つユーザーデータのサイズ(以後Seqサイズと呼ぶ)を、不揮発性記憶装置I/F部550のSeqサイズ設定部554にあらかじめ設定しておき、不揮発性記憶装置I/F部550の内部のSeq#生成部555がSeqサイズ毎に同一のSeq#を設定する。このとき、Seqサイズのデータが書き込まれる度に、アクセス装置500が同期APIを発行しなくとも自動的に管理情報データを更新する(同期を取る)。このとき、ファイルシステム540がWriteコマンドを発行するときにSeq#は設定されない。従ってファイルシステム540が不揮発性記憶装置I/F部540へコマンドを発効する段階では、図2(b)におけるWriteコマンドパケットのSeq#はDon’t Careとなる。
【0089】
上記ユーザーデータのWriteコマンドが、コマンド実行部163で実行状態になると、不揮発性記憶装置I/F部550に対してユーザーデータパケットの転送を要求する。
【0090】
不揮発性記憶装置I/F部550は、アクセス装置500の所定の領域に格納されたユーザーデータを保持する。Seqサイズ設定部554は、データバッファ153でパケット化されたデータサイズを監視し、あらかじめ設定されたSeqサイズのデータに同一のSeq#が付与されるよう、Seq#生成部555に指示する。
【0091】
よって、データパケットについては、不揮発性記憶装置I/F部550内において、Seq#生成部555で付与されたSeq#が、SubSeq#とともに設定される。
【0092】
図6は、本実施の形態において、ユーザーデータおよび管理情報データのWriteコマンド発行タイミング、コマンド実行部163において実際にコマンドが実行されるタイミング、およびユーザーデータおよび管理情報データのパケットが送信されるタイミングについて、説明した図である。なお図6に記載のシーケンス実行に伴うSeq#管理部165の管理情報の遷移は、図4と同じになる。
【0093】
第1の実施の形態と同様に、アクセス装置500が不揮発性記憶装置110の装着を検知したとき、Initializeコマンドが発行され、不揮発性記憶装置110の初期化が実行される。
【0094】
続いてアプリケーション130のAPI呼出部131は、Seqサイズ設定APIを呼び出す。これに伴い、不揮発性記憶装置I/F部550のSeqサイズ設定部554には、Seqサイズ設定APIにより設定されたSeqサイズが設定される。
【0095】
アクセス装置500が、所定のユーザーデータの書き込みを実行しようとするとき、アプリケーション130のAPI呼出部131は書き込みAPIを呼び出す。このとき、書き込みデータ長は指定されない。これに伴い、不揮発性記憶装置I/F部550は、ユーザーデータのWriteコマンドである「Write(U)」コマンドパケットを、不揮発性記憶装置110に送信し、コマンドスケジューラ162にコマンドが蓄積されていないことから、直ちに実行される。
【0096】
Write(U)コマンドの実行に伴い、不揮発性記憶装置I/F部550は、ユーザーデータ入力部132が供給するユーザーデータと、書き込みアドレス生成部142で生成された書き込み先のアドレスをデータバッファ153に供給する。
【0097】
不揮発性記憶装置I/F部550において、Seq#生成部555はSeq#として1を、SubSeq#生成部152はSubSeq#として1を設定し、ヘッダ生成部151で生成されるヘッダと合わせてデータバッファ153上のユーザーデータに付加する。このようにして「U[1]−1」のユーザーデータパケットをインターフェースバス120上に送信する。
【0098】
第1の実施の形態と同様に、U[1]−1のユーザーデータパケット転送が完了しても、不揮発性メモリ170に当該ユーザーデータが書き込み完了するまで、不揮発性記憶装置110はbusy状態になり、コマンドスケジューラ162がコマンドの蓄積、および所定のタイミングでの実行指示が可能であるため、アクセス装置500は任意のタイミングでSeq#=1に相当するFAT1データの書き込み指示をすることが可能である。
【0099】
データバッファ153上で、Seqサイズ設定部554で設定されたSeqサイズのデータをすべてパケット化できたとき、最終パケットを意味するU[1]−Eを生成し、アクセス装置I/F部160に送信する。
【0100】
そして次にユーザーデータを送信するとき、Seq#生成部555で生成されるSeq#は2となる。
【0101】
本実施の形態では、U[1]−Eのデータパケット送信が完了しても、Writeコマンドを発行することなく、次のユーザーデータでパケットであるU[2]−1を送信することができる。データ書き込みを終了するときは、アプリケーション130がAPI呼出部131から中断APIを発行する。これに伴い、データの転送および書き込みが直ちに中止され、現時点での管理情報データをファイルに記録するためのWriteコマンドである「Write(A[2])」、「Write(B[2])」、「Write(C[2])を発行し、それぞれデータA[2]、B[2],C[2]を書き込んで終了する。
【0102】
以上より、本実施の形態においても、従来の不揮発性記憶システムと比較した場合、不揮発性記憶装置内でコマンドを蓄積できるようにすることで、不揮発性記憶装置110がbusy状態であっても、その間に以降のコマンドパケットの送信が可能となり、バスを効率よく使用することができる。その結果、書き込み時のシステムのスループットを向上させることができる。
【0103】
また、本実施の形態では、ユーザーデータを連続して書き込む場合、あらかじめSeqサイズを設定しておくことで、管理情報データ書き込み完了後、都度ユーザーデータWriteコマンドを発行しなくてすむために、送信すべきWriteコマンドパケットの数を削減することができる。そのため、データ転送の効率を従来以上に向上させることができ、バスの効率を上げることが可能となる。これは、連続的な動画データの記録などの場合等に特に有効な手段となる。
【0104】
また、第1の実施の形態と同様に、不揮発性記憶装置内で蓄積されたコマンドを適切なタイミングで実行指示を行うことで、管理情報データは、常に対応するユーザーデータの書き込み完了後に書き込まれるため、書き込み途中の電源遮断が発生しても、正しくファイルを読み出すことができる。
【0105】
なお第1の実施の形態、第2の実施の形態において、Writeコマンドが実行可能になった後に、不揮発性記憶装置からアクセス装置へデータ転送を要求していたが、書き込み制御部164の容量が十分な大きさを持っていれば、予め不揮発性記憶装置の書き込み制御部164にWriteコマンドに対応するファイルデータを蓄積しておき、ライトコマンドが実行状態になれば、書き込み制御部164に蓄積されたファイルデータを不揮発性メモリ170に書き込むという形態も実施可能である。また、この場合には、書き込み制御部164に蓄積できるデータ量に応じて、予めデータを蓄積する方法と書き込みの際にアクセス装置へデータ転送を要求する方法を組み合わせる方法を用いても良い。
【0106】
また本発明の実施の形態において、SubSeq#は単調増加の数値であると説明したが、終端情報であるか否かを識別できるだけでもよい。
【0107】
またデータ種別IDとしては、コンテンツ保護のための鍵情報など、所定の認証処理を経ないとアクセスできないデータであるセキュアデータを追加したシステムを考えることもできる。
【0108】
なお、第1の実施の形態、第2の実施の形態では、コマンドとデータの関連付け等をおこなうためにSeq#(Seq番号)やSubSeq#(SubSeq番号)等を付与していたが、本発明は必ずしもこれらの番号に限定するものではない。これらはコマンドとデータの関連付けが他の関連付けとの識別を行えればよく、番号以外でもアルファベット等、他の識別用の記号等(識別子)であってもよい。
【0109】
また、第1の実施の形態、第2の実施の形態では、アクセス装置、不揮発性記憶装置、及びこれらからなる不揮発性記憶システムとして実施の形態を説明したが、本発明はこれに限定されるものではない。不揮発性記憶システム110のアクセス装置I/F部等は、演算部等を備えたメモリコントローラ等の集積回路によって実現することも可能である。その際には、不揮発性記憶装置110は、メモリコントローラと不揮発性メモリを主とした構成要素として備え、アクセス装置I/F部160等で実現した各機能を、メモリコントローラの演算部で実行されるソフトウェア、または同等の機能を回路構成で実現する集積回路としても実現可能である。
【0110】
また、第1の実施の形態、第2の実施の形態で説明した不揮発性記憶装置は、同等の機能を備えるデバイス(機能部品等)としても実現可能である。例えば、不揮発性記憶装置110を、電気回路基板上に実装される、一部のモジュール、又はこれらを集約した集積回路としても実施することができる。この際には、本発明で説明した不揮発性記憶装置は、不揮発性記憶デバイス(モジュール)としても実現可能である。
【産業上の利用可能性】
【0111】
本発明は、データ書き込み途中に電源遮断が生じる可能性の高い、リムーバブルな不揮発性記憶装置において、アクセス装置からコマンドの実行に先んじてコマンドを発行することで、インターフェースバスを効率的に使用し、コマンド処理のスループットを向上させる方法を提案したものであり、高品質の動画撮影など、大容量のデータを高速に不揮発性メモリに書き込むことが要求されるアプリケーションを有する装置、例えばデジタルビデオカメラをはじめとする動画記録再生装置やデジタルスチルカメラをはじめとする静止画記録再生装置、あるいは携帯電話において有益である。
【図面の簡単な説明】
【0112】
【図1】本発明の第1の実施の形態の構成を説明したブロック図
【図2】本発明における各パケットのフォーマットについて説明した図
【図3】第1の実施の形態におけるインターフェースバス上のパケットとコマンド処理との関係を説明した図
【図4】第1の実施の形態におけるSeq#管理部の状態遷移について説明した図
【図5】本発明の第2の実施の形態の構成を説明したブロック図
【図6】第2の実施の形態におけるインターフェースバス上のパケットとコマンド処理との関係を説明した図
【図7】従来の不揮発性記憶システムの構成を説明したブロック図
【図8】従来の不揮発性記憶システムの論理アドレス空間の構成例を説明した図
【図9】従来の不揮発性記憶システムにおけるコマンドおよび書き込みデータの関係を説明した図
【符号の説明】
【0113】
100、500、700 アクセス装置
110 不揮発性記憶装置
120 インターフェースバス
130、730 アプリケーション
131、731 API呼出部
132、732 ユーザーデータ入力部
140、540、740 ファイルシステム
141、741 コマンド生成部
142、742 書き込みアドレス生成部
143、555 Seq#生成部
144、743 管理情報データ生成部
150、550 不揮発性記憶装置I/F部
151 ヘッダ生成部
152 SubSeq#生成部
153 データバッファ
160、760 アクセス装置I/F部
161、761 パケット解析部
162 コマンドスケジューラ
163 コマンド実行部
164、762 書き込み制御部
165 Seq#管理部
170、770 不揮発性メモリ
171、771 ユーザーデータ領域
172、772 システム領域
554 Seqサイズ設定部
710 SDカード
750 SDカードI/F部

【特許請求の範囲】
【請求項1】
不揮発性メモリへのデータ記録を制御するメモリコントローラにおいて、
前記不揮発性メモリへのデータ書き込み、又は前記不揮発性メモリからのデータ読み出しを行う読み書き制御部と、
外部から、処理要求が示されるコマンドパケット及び前記不揮発性メモリへ書き込むデータ有するデータパケットを受信し、これら受信パケットを解析するパケット解析部と、
前記コマンドパケットが有する処理要求を蓄積し、要求される処理の実行時期を管理するコマンドスケジューラとを備え、
前記パケット解析部は、前記読み書き制御部が前記不揮発性メモリへのデータ書き込み又はデータ読み出しを行っている際に、コマンドパケットを受信し、該コマンドパケットの処理要求をコマンドスケジューラへ蓄積することを特徴とするメモリコントローラ。
【請求項2】
請求項1に記載のメモリコントローラにおいて、
前記受信パケットは、関連付けられるコマンドパケットとデータパケットで共通の識別子を有し、
前記コマンドパケットが有する処理要求の実施状況を前記識別子で管理する管理部を備え、
前記コマンドスケジューラは、前記実施状況に基づいて、次に実施する処理及び実行時期を管理することを特徴とするメモリコントローラ。
【請求項3】
請求項1乃至2のいずれかに記載のメモリコントローラと、不揮発性メモリを備えた不揮発性記憶装置。
【請求項4】
不揮発性メモリを有する不揮発性記憶装置へデータ書き込みを指示するアクセス装置において、
前記不揮発性記憶装置への処理要求を生成するコマンド生成部と、
前記不揮発性記憶装置へ転送するデータと関連付けられる前記処理要求に対して共通の識別子を割り当てる識別子生成部と、
前記転送するデータ及び前記処理要求から、共通の識別子を有したデータパケット及びコマンドパケットを生成するとともに、前記不揮発性記憶装置の処理状態を検出し、前記不揮発性記憶装置が処理中の際には、前記不揮発性記憶装置へコマンドパケットのみを出力するデータバッファ部とを備えることを特徴とするアクセス装置。
【請求項5】
請求項4に記載のアクセス装置において、前記識別子生成部は、前記不揮発性記憶装置へ転送するデータと関連付けられる該データの管理情報に係わる処理要求についてのみ共通の識別子を割り当てることを特徴とするアクセス装置。
【請求項6】
請求項3に記載の不揮発性記憶装置と請求項4乃至5のいずれかに記載のアクセス装置を備える不揮発性記憶システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate