(57)【特許請求の範囲】
【請求項１】
ストレージスタックと通信するように連結され、アプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトするように構成される入出力インターフェイスと、
前記入出力インターフェイスから前記複数の書込み入出力を受信し、前記複数の書込み入出力を格納するように構成される１つ以上の臨時書込みホールディングバッファと、
前記１つ以上の臨時書込みホールディングバッファと通信するように連結され、前記１つ以上の臨時書込みホールディングバッファに格納された前記複数の書込み入出力の順序を変更し、前記変更された順序の複数の書込み入出力を結合して結合された書込み入出力を生成するように構成される順序変更ロジック部と、
前記入出力インターフェイスから前記複数のフラッシュ要請を受信し、前記複数の書込み入出力を不揮発性ストレージ装置に格納せず、前記複数の書込み入出力に関する書込み入出力完了を前記アプリケーションに通知し、前記複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して前記結合された書込み入出力が前記不揮発性ストレージ装置に格納されるように構成されるフラッシュ制御ロジック部と、を含む入出力インターセプタロジック。
【請求項２】
前記選択されたフラッシュ要請は、前記複数のフラッシュ要請の中でＮ番目のフラッシュ要請に対応し、
前記Ｎは、予め選択された正の整数値（Ｎ＝１を除く）を有する請求項１に記載の入出力インターセプタロジック。
【請求項３】
前記選択されたフラッシュ要請は、前記複数のフラッシュ要請の中でＮ番目のフラッシュ要請に対応し、
前記Ｎは、３以上の整数である請求項１に記載の入出力インターセプタロジック。
【請求項４】
前記入出力インターフェイスは、
前記複数の書込み入出力の中でデータ書込み入出力の第１サブセット、前記複数のフラッシュ要請の中で、第１フラッシュ要請、前記複数の書込み入出力の中でメタデータ書込み入出力の第１サブセット、前記複数のフラッシュ要請の中で第２フラッシュ要請、前記複数の書込み入出力の中でデータ書込み入出力の第２サブセット、前記複数のフラッシュ要請の中で第３フラッシュ要請、前記複数の書込み入出力の中でメタデータ書込み入出力の第２サブセット、及び前記複数のフラッシュ要請の中で前記選択されたフラッシュ要請をインターセプトするように構成される請求項１に記載の入出力インターセプタロジック。
【請求項５】
前記順序変更ロジック部は、
前記データ書込み入出力の第１サブセット、前記メタデータ書込み入出力の第１サブセット、前記データ書込み入出力の第２サブセット、及び前記メタデータ書込み入出力の第２サブセットに含まれる前記複数の書込み入出力の順序を変更して前記複数の書込み入出力と関連された論理ブロックアドレスを昇順又は降順に配列し、
前記データ書込み入出力の第１サブセット、前記メタデータ書込み入出力の第１サブセット、前記データ書込み入出力の第２サブセット、及び前記メタデータ書込み入出力の第２サブセットに含まれる前記変更された順序の複数の書込み入出力を結合して前記結合された書込み入出力を生成するように構成される請求項４に記載の入出力インターセプタロジック。
【請求項６】
前記順序変更ロジック部は、
前記複数の書込み入出力、ヘッダ、及びフッタを再マッピングメモリ部にコピーして前記結合された書込み入出力を生成するように構成され、
前記結合された書込み入出力に含まれる前記複数の書込み入出力に各々対応する複数の論理ブロックアドレスは、昇順又は降順に配列され、
前記結合された書込み入出力に含まれる前記複数の書込み入出力の各々は、前記再マッピングメモリ部で物理的に互いに隣接する請求項４に記載の入出力インターセプタロジック。
【請求項７】
前記フラッシュ制御ロジック部は、
前記選択されたフラッシュ要請に応答して、各々が物理的に互いに隣接する前記複数の書込み入出力を含む前記結合された書込み入出力が前記不揮発性ストレージ装置に格納されるように構成される請求項６に記載の入出力インターセプタロジック。
【請求項８】
前記順序変更ロジック部は、
前記複数の書込み入出力に含まれるランダムの書込み入出力を順次的な書込み入出力に変換するように構成される請求項１に記載の入出力インターセプタロジック。
【請求項９】
ストレージスタックと通信するように連結され、アプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトするように構成される入出力インターフェイスと、
前記入出力インターフェイスから前記複数の書込み入出力を受信し、前記複数の書込み入出力を格納するように構成される複数の臨時書込みホールディングバッファと、
前記複数の臨時書込みホールディングバッファをホールドするように構成されるマルチバッファホールディングキューと、
前記入出力インターフェイスから前記複数のフラッシュ要請を受信し、前記複数の書込み入出力を不揮発性ストレージ装置に格納されなく、前記複数の書込み入出力に関する書込み入出力完了を前記アプリケーションに通知し、前記複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して前記マルチバッファホールディングキューが前記複数の書込み入出力を前記複数の臨時書込みホールディングバッファから前記不揮発性ストレージ装置に伝達するように構成されるフラッシュ制御ロジック部と、を含む入出力インターセプタロジック。
【請求項１０】
前記選択されたフラッシュ要請は、前記複数のフラッシュ要請の中でＮ番目のフラッシュ要請に対応し、
前記Ｎは、予め選択された正の整数値（Ｎ＝１を除く）を有する請求項９に記載の入出力インターセプタロジック。
【請求項１１】
前記選択されたフラッシュ要請は、前記複数のフラッシュ要請の中でＮ番目のフラッシュ要請に対応し、
前記Ｎは、３以上の整数である請求項９に記載の入出力インターセプタロジック。
【請求項１２】
前記入出力インターフェイスは、
前記複数の書込み入出力の中でデータ書込み入出力の第１サブセット、前記複数のフラッシュ要請の中で第１フラッシュ要請、前記複数の書込み入出力の中でメタデータ書込み入出力の第１サブセット、前記複数のフラッシュ要請の中で第２フラッシュ要請、前記複数の書込み入出力の中でデータ書込み入出力の第２サブセット、前記複数のフラッシュ要請の中で第３フラッシュ要請、前記複数の書込み入出力の中でメタデータ書込み入出力の第２サブセット、及び前記複数のフラッシュ要請の中で前記選択されたフラッシュ要請をインターセプトするように構成される請求項９に記載の入出力インターセプタロジック。
【請求項１３】
前記複数の臨時書込みホールディングバッファは、第１臨時書込みホールディングバッファ、第２臨時書込みホールディングバッファ、第３臨時書込みホールディングバッファ、及び第４臨時書込みホールディングバッファを含み、
前記フラッシュ制御ロジック部は、
前記データ書込み入出力の第１サブセットが前記第１臨時書込みホールディングバッファに格納されるようにし、前記メタデータ書込み入出力の第１サブセットが前記第２臨時書込みホールディングバッファに格納されるようにし、前記データ書込み入出力の第２サブセットが前記第３臨時書込みホールディングバッファに格納されるようにし、前記メタデータ書込み入出力の第２サブセットが前記第４臨時書込みホールディングバッファに格納されるように構成される請求項１２に記載の入出力インターセプタロジック。
【請求項１４】
入出力インターセプタロジックを利用してアプリケーションから入出力をインターセプトするためにコンピュータで具現される方法において、
前記入出力インターセプタロジックの入出力インターフェイスによって、前記アプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトする段階と、
前記入出力インターフェイスによってインターセプトされた前記複数の書込み入出力を１つ以上の臨時書込みホールディングバッファに格納する段階と、
前記入出力インターセプタロジックの順序変更ロジック部によって、前記１つ以上の臨時書込みホールディングバッファに格納された前記複数の書込み入出力の順序を変更する段階と、
前記順序変更ロジック部によって、前記変更された順序の複数の書込み入出力を結合して結合された書込み入出力を生成する段階と、
前記入出力インターセプタロジックのフラッシュ制御ロジック部によって、前記入出力インターフェイスから前記複数のフラッシュ要請を受信する段階と、
前記複数の書込み入出力を不揮発性ストレージ装置に格納せず、前記フラッシュ制御ロジック部によって、前記複数の書込み入出力に関する書込み入出力完了を前記アプリケーションに通知する段階と、
前記複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して、前記フラッシュ制御ロジック部によって、前記結合された書込み入出力が前記不揮発性ストレージ装置に格納されるようにする段階と、を含む方法。
【請求項１５】
前記選択されたフラッシュ要請は、前記複数のフラッシュ要請の中でＮ番目のフラッシュ要請に対応し、
前記Ｎは、予め選択された正の整数値（Ｎ＝１を除く）を有する請求項１４に記載の方法。
【請求項１６】
前記選択されたフラッシュ要請は、前記複数のフラッシュ要請の中でＮ番目のフラッシュ要請に対応し、
前記Ｎは、３以上の整数である請求項１４に記載の方法。
【請求項１７】
前記インターセプトする段階は、
前記入出力インターフェイスによって、前記複数の書込み入出力の中でデータ書込み入出力の第１サブセット、前記複数のフラッシュ要請の中で第１フラッシュ要請、前記複数の書込み入出力の中でメタデータ書込み入出力の第１サブセット、前記複数のフラッシュ要請の中で第２フラッシュ要請、前記複数の書込み入出力の中でデータ書込み入出力の第２サブセット、前記複数のフラッシュ要請の中で第３フラッシュ要請、前記複数の書込み入出力の中でメタデータ書込み入出力の第２サブセット、及び前記複数のフラッシュ要請の中で前記選択されたフラッシュ要請をインターセプトする段階を含む請求項１４に記載の方法。
【請求項１８】
前記変更する段階は、
前記順序変更ロジック部によって、前記データ書込み入出力の第１サブセット、前記メタデータ書込み入出力の第１サブセット、前記データ書込み入出力の第２サブセット、及び前記メタデータ書込み入出力の第２サブセットに含まれる前記複数の書込み入出力の順序を変更する段階を含み、
前記生成する段階は、
前記順序変更ロジック部によって、前記データ書込み入出力の第１サブセット、前記メタデータ書込み入出力の第１サブセット、前記データ書込み入出力の第２サブセット、及び前記メタデータ書込み入出力の第２サブセットに含まれる前記変更された順序の複数の書込み入出力を結合して前記結合された書込み入出力を生成する段階を含む請求項１７に記載の方法。
【請求項１９】
前記生成する段階は、
前記順序変更ロジック部によって、前記複数の書込み入出力、ヘッダ、及びフッタを再マッピングメモリ部にコピーして前記結合された書込み入出力を生成する段階を含み、
前記結合された書込み入出力に含まれる前記複数の書込み入出力に各々対応する複数の論理ブロックアドレスは、昇順又は降順に配列され、
前記結合された書込み入出力に含まれる前記複数の書込み入出力の各々は、前記再マッピングメモリ部で物理的に互いに隣接する請求項１７に記載の方法。
【請求項２０】
前記格納されるようにする段階は、
前記選択されたフラッシュ要請に応答して、前記フラッシュ制御ロジック部によって、各々が物理的に互いに隣接する前記複数の書込み入出力を含む前記結合された書込み入出力が前記不揮発性ストレージ装置に格納されるようにする段階を含む請求項１９に記載の方法。
【請求項２１】
入出力インターセプタロジックを利用してアプリケーションから入出力をインターセプトするためにコンピュータで具現される方法において、
前記入出力インターセプタロジックの入出力インターフェイスによって、前記アプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトする段階と、
前記入出力インターフェイスによってインターセプトされた前記複数の書込み入出力を複数の臨時書込みホールディングバッファに格納する段階と、
前記入出力インターセプタロジックのマルチバッファホールディングキューによって、前記複数の臨時書込みホールディングバッファをホールドする段階と、
前記入出力インターセプタロジックのフラッシュ制御ロジック部によって、前記入出力インターフェイスから前記複数のフラッシュ要請を受信する段階と、
前記複数の書込み入出力を不揮発性ストレージ装置に格納せず、前記フラッシュ制御ロジック部によって、前記複数の書込み入出力に関する書込み入出力完了を前記アプリケーションに通知する段階と、
前記複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して、前記フラッシュ制御ロジック部によって、前記マルチバッファホールディングキューが前記複数の書込み入出力を前記複数の臨時書込みホールディングバッファから前記不揮発性ストレージ装置に伝達するようにする段階と、を含む方法。
【請求項２２】
前記選択されたフラッシュ要請は、前記複数のフラッシュ要請の中でＮ番目のフラッシュ要請に対応し、
前記Ｎは、予め選択された正の整数値（Ｎ＝１を除く）を有する請求項２１に記載の方法。
【請求項２３】
前記選択されたフラッシュ要請は、前記複数のフラッシュ要請の中でＮ番目のフラッシュ要請に対応し、
前記Ｎは、３以上の整数である請求項２１に記載の方法。
【請求項２４】
前記インターセプトする段階は、
前記入出力インターフェイスによって、前記複数の書込み入出力の中でデータ書込み入出力の第１サブセット、前記複数のフラッシュ要請の中で第１フラッシュ要請、前記複数の書込み入出力の中でメタデータ書込み入出力の第１サブセット、前記複数のフラッシュ要請の中で第２フラッシュ要請、前記複数の書込み入出力の中でデータ書込み入出力の第２サブセット、前記複数のフラッシュ要請の中で第３フラッシュ要請、前記複数の書込み入出力の中でメタデータ書込み入出力の第２サブセット、及び前記複数のフラッシュ要請の中で前記選択されたフラッシュ要請をインターセプトする段階を含む請求項２１に記載の方法。
【請求項２５】
前記複数の臨時書込みホールディングバッファは、第１臨時書込みホールディングバッファ、第２臨時書込みホールディングバッファ、第３臨時書込みホールディングバッファ、及び第４臨時書込みホールディングバッファを含み、
前記格納する段階は、
前記フラッシュ制御ロジック部によって、前記データ書込み入出力の第１サブセットが前記第１臨時書込みホールディングバッファに格納されるようにし、前記メタデータ書込み入出力の第１サブセットが前記第２臨時書込みホールディングバッファに格納されるようにし、前記データ書込み入出力の第２サブセットが前記第３臨時書込みホールディングバッファに格納されるようにし、前記メタデータ書込み入出力の第２サブセットが前記第４臨時書込みホールディングバッファに格納されるようにする段階を含む請求項２４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータで具現化される（Ｃｏｍｐｕｔｅｒｉｚｅｄ）格納技法に係り、さらに具体的には移動式電話機、タブレットのようなコンピュータ化された装置のストレージスタック（Ｓｔｏｒａｇｅ  Ｓｔａｃｋ）に内装される（Ｅｍｂｅｄｄｅｄ）フラッシュコントロールロジック（Ｆｌｕｓｈ  Ｃｏｎｔｒｏｌ  Ｌｏｇｉｃ）を利用する入出力インターセプタ（Ｉｎｔｅｒｃｅｐｔｏｒ）ロジックに関する。
【背景技術】
【０００２】
移動式電話機、タブレットのような移動式装置の性能向上に対する要求が増加している。カメラ、計算機、個人用コンピュータ、サーバ、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）装置等のような様々な別個装置によって遂行される機能が統合され、移動式装置によって取り扱われるようになってきている。移動式装置でのプロセッサの性能やデータの無線伝送速度は着実に向上されているが、ローカルストレージスタック（Ｌｏｃａｌ  Ｓｔｏｒａｇｅ  Ｓｔａｃｋ）の性能はさほど急速には向上されていない。データの一貫性（Ｃｏｎｓｉｓｔｅｎｃｙ）を保障するために利用されるフラッシュ要請は性能向上に阻害になっている。これはフラッシュ命令が実行される間、入出力が中断されるためである。結果的に、ストレージスタック及びそれと関連するローカルストレージ装置がモバイル装置の性能上のボトルネック（Ｂｏｔｔｌｅｎｅｃｋ）になっていた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第８、１６１、２４１号公報
【特許文献２】米国特許公開第２０１０／０１８００６５号明細書
【特許文献３】米国特許公開第２０１４／００４７１８１号明細書
【特許文献４】米国特許公開第２０１４／００５９２９２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のような問題を解決するために、フラッシュコントロールロジックを利用する入出力インターセプタロジックを設ける。本発明の実施形態で、フラッシュコントロールロジックはアプリケーション（Ａｐｐｌｉｃａｔｉｏｎ）から発生する書込み入出力を不揮発性ストレージ装置に格納する前に書込み入出力完了をアプリケーションに通知することができる。書込み入出力はアプリケーションのフラッシュ要請の中で選択されたＮ番目のフラッシュ要請が発生する時まで臨時書込みホールディングバッファに累積され、１つの書込み入出力に結合することができる。フラッシュコントロールロジックは選択されたＮ番目のフラッシュ要請に応答して、結合された書込み入出力を不揮発性ストレージ装置に伝達することができる。
【課題を解決するための手段】
【０００５】
本発明の一実施形態による入出力インターセプタロジックは、ストレージスタックと通信するように連結され、アプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトするように構成される入出力インターフェイスと、入出力インターフェイスから複数の書込み入出力を受信し、複数の書込み入出力を格納するように構成される１つ以上の臨時書込みホールディングバッファと、１つ以上の臨時書込みホールディングバッファと通信するように連結され、１つ以上の臨時書込みホールディングバッファに格納された複数の書込み入出力の順序を変更し、変更された順序の複数の書込み入出力を結合して、結合された書込み入出力を生成するように構成される順序変更ロジック部と、入出力インターフェイスから複数のフラッシュ要請を受信し、複数の書込み入出力を不揮発性ストレージ装置に格納せず、複数の書込み入出力に関する書込み入出力完了をアプリケーションに通知し、複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して結合された書込み入出力が不揮発性ストレージ装置に格納されるように構成されるフラッシュ制御ロジック部と、を含むことができる。
【０００６】
実施形態として、選択されたフラッシュ要請は、複数のフラッシュ要請の中でＮ番目のフラッシュ要請に対応し、Ｎは、予め選択された正の整数値を有することができる。
実施形態として、選択されたフラッシュ要請は、複数のフラッシュ要請の中でＮ番目のフラッシュ要請に対応し、Ｎは、３以上の整数であってもよい。
実施形態として、入出力インターフェイスは、複数の書込み入出力の中でデータ書込み入出力の第１サブセット、複数のフラッシュ要請の中で、第１フラッシュ要請、複数の書込み入出力の中でメタデータ書込み入出力の第１サブセット、複数のフラッシュ要請の中で第２フラッシュ要請、複数の書込み入出力の中でデータ書込み入出力の第２サブセット、複数のフラッシュ要請の中で第３フラッシュ要請、複数の書込み入出力の中でメタデータ書込み入出力の第２サブセット、及び複数のフラッシュ要請の中で選択されたフラッシュ要請をインターセプトするように構成することができる。
【０００７】
実施形態として、順序変更ロジック部は、データ書込み入出力の第１サブセット、メタデータ書込み入出力の第１サブセット、データ書込み入出力の第２サブセット、及びメタデータ書込み入出力の第２サブセットに含まれる複数の書込み入出力の順序を変更して複数の書込み入出力と関連する論理ブロックアドレスを昇順又は降順に配列し、データ書込み入出力の第１サブセット、メタデータ書込み入出力の第１サブセット、データ書込み入出力の第２サブセット、及びメタデータ書込み入出力の第２サブセットに含まれる変更された順序の複数の書込み入出力を結合して結合された書込み入出力を生成するように構成することができる。
【０００８】
実施形態として、順序変更ロジック部は、複数の書込み入出力、ヘッダ、及びフッタを再マッピングメモリ部にコピーして結合された書込み入出力を生成するように構成され、結合された書込み入出力に含まれる複数の書込み入出力に各々対応する複数の論理ブロックアドレスは、昇順又は降順に配列され、結合された書込み入出力に含まれる複数の書込み入出力の各々は、再マッピングメモリ部で物理的に互いに隣接することができる。
【０００９】
実施形態として、フラッシュ制御ロジック部は、選択されたフラッシュ要請に応答して、各々が物理的に互いに隣接する複数の書込み入出力を含む結合された書込み入出力が不揮発性ストレージ装置に格納されるように構成することができる。
実施形態として、順序変更ロジック部は、複数の書込み入出力に含まれるランダムの書込み入出力を順次的な書込み入出力に変換するように構成することができる。
【００１０】
本発明の他の実施形態による入出力インターセプタロジックは、ストレージスタックと通信するように連結され、アプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトするように構成される入出力インターフェイスと、入出力インターフェイスから複数の書込み入出力を受信し、複数の書込み入出力を格納するように構成される複数の臨時書込みホールディングバッファと、複数の臨時書込みホールディングバッファをホールドするように構成されるマルチバッファホールディングキューと、入出力インターフェイスから複数のフラッシュ要請を受信し、複数の書込み入出力を不揮発性ストレージ装置に格納せず、複数の書込み入出力に関する書込み入出力完了をアプリケーションに通知し、複数のフラッシュ要請の中で選択されたフラッシュ要請に応答してマルチバッファホールディングキューが複数の書込み入出力を複数の臨時書込みホールディングバッファから不揮発性ストレージ装置に伝達するように構成されるフラッシュ制御ロジック部と、を含むことができる。
【００１１】
実施形態として、入出力インターフェイスは、複数の書込み入出力の中でデータ書込み入出力の第１サブセット、複数のフラッシュ要請の中で第１フラッシュ要請、複数の書込み入出力の中でメタデータ書込み入出力の第１サブセット、複数のフラッシュ要請の中で第２フラッシュ要請、複数の書込み入出力の中でデータ書込み入出力の第２サブセット、複数のフラッシュ要請の中で第３フラッシュ要請、複数の書込み入出力の中でメタデータ書込み入出力の第２サブセット、及び複数のフラッシュ要請の中で選択されたフラッシュ要請をインターセプトするように構成することができる。
【００１２】
実施形態として、複数の臨時書込みホールディングバッファは、第１臨時書込みホールディングバッファ、第２臨時書込みホールディングバッファ、第３臨時書込みホールディングバッファ、及び第４臨時書込みホールディングバッファを含み、フラッシュ制御ロジック部は、データ書込み入出力の第１サブセットが第１臨時書込みホールディングバッファに格納されるようにし、メタデータ書込み入出力の第１サブセットが第２臨時書込みホールディングバッファに格納されるようにし、データ書込み入出力の第２サブセットが第３臨時書込みホールディングバッファに格納されるようにし、メタデータ書込み入出力の第２サブセットが第４臨時書込みホールディングバッファに格納されるように構成することができる。
【００１３】
本発明のその他の実施形態にしたがって入出力インターセプタロジックを利用してアプリケーションから入出力をインターセプトするためにコンピュータで具現される方法は、入出力インターセプタロジックの入出力インターフェイスによって、アプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトする段階と、入出力インターフェイスによってインターセプトされた複数の書込み入出力を１つ以上の臨時書込みホールディングバッファに格納する段階と、入出力インターセプタロジックの順序変更ロジック部によって、１つ以上の臨時書込みホールディングバッファに格納された複数の書込み入出力の順序を変更する段階と、順序変更ロジック部によって、変更された順序の複数の書込み入出力を結合して結合された書込み入出力を生成する段階と、入出力インターセプタロジックのフラッシュ制御ロジック部によって、入出力インターフェイスから複数のフラッシュ要請を受信する段階と、複数の書込み入出力を不揮発性ストレージ装置に格納せず、フラッシュ制御ロジック部によって、複数の書込み入出力に関する書込み入出力完了をアプリケーションに通知する段階と、複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して、フラッシュ制御ロジック部によって、結合された書込み入出力が不揮発性ストレージ装置に格納されるようにする段階と、を含むことができる。
【００１４】
実施形態として、インターセプトする段階は、入出力インターフェイスによって、複数の書込み入出力の中でデータ書込み入出力の第１サブセット、複数のフラッシュ要請の中で第１フラッシュ要請、複数の書込み入出力の中でメタデータ書込み入出力の第１サブセット、複数のフラッシュ要請の中で第２フラッシュ要請、複数の書込み入出力の中でデータ書込み入出力の第２サブセット、複数のフラッシュ要請の中で第３フラッシュ要請、複数の書込み入出力の中でメタデータ書込み入出力の第２サブセット、及び複数のフラッシュ要請の中で選択されたフラッシュ要請をインターセプトする段階を含むことができる。
【００１５】
実施形態として、変更する段階は、順序変更ロジック部によって、データ書込み入出力の第１サブセット、メタデータ書込み入出力の第１サブセット、データ書込み入出力の第２サブセット、及びメタデータ書込み入出力の第２サブセットに含まれる複数の書込み入出力の順序を変更する段階を含むことができる。さらに、生成する段階は、順序変更ロジック部によって、データ書込み入出力の第１サブセット、メタデータ書込み入出力の第１サブセット、データ書込み入出力の第２サブセット、及びメタデータ書込み入出力の第２サブセットに含まれる変更された順序の複数の書込み入出力を結合して結合された書込み入出力を生成することができる。
【００１６】
実施形態として、生成する段階は、順序変更ロジック部によって、複数の書込み入出力、ヘッダ、及びフッタを再マッピングメモリ部にコピーして結合された書込み入出力を生成する段階を含み、結合された書込み入出力に含まれる複数の書込み入出力に各々対応する複数の論理ブロックアドレスは、昇順又は降順に配列され、結合された書込み入出力に含まれる複数の書込み入出力の各々は、再マッピングメモリ部で物理的に互いに隣接することができる。
実施形態として、格納されるようにする段階は、選択されたフラッシュ要請に応答して、フラッシュ制御ロジック部によって、各々が物理的に互いに隣接する複数の書込み入出力を含む結合された書込み入出力が不揮発性ストレージ装置に格納されるようにする段階を含むことができる。
【００１７】
本発明のその他の実施形態による非一時的にコンピュータで読み出される格納媒体は、コンピューティング装置及び入出力インターセプタロジックを利用して処理される命令語を格納することができる。 格納された命令語は、入出力インターセプタロジックの入出力インターフェイスによって、コンピューティング装置で実行されるアプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトする段階と、 入出力インターフェイスによってインターセプトされた複数の書込み入出力を１つ以上の臨時書込みホールディングバッファに格納する段階と、 入出力インターセプタロジックの順序変更ロジック部によって、１つ以上の臨時書込みホールディングバッファに格納された複数の書込み入出力の順序を変更する段階と、順序変更ロジック部によって、変更された順序の複数の書込み入出力を結合して結合された書込み入出力を生成する段階と、 入出力インターセプタロジックのフラッシュ制御ロジック部によって、入出力インターフェイスから複数のフラッシュ要請を受信する段階と、 複数の書込み入出力を不揮発性ストレージ装置に格納せず、フラッシュ制御ロジック部によって、複数の書込み入出力に関する書込み入出力完了をアプリケーションに通知する段階と、複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して、フラッシュ制御ロジック部によって、結合された書込み入出力が不揮発性ストレージ装置に格納されるようにする段階と、をコンピューティング装置で実行するように構成することができる。
【００１８】
本発明のその他の実施形態にしたがって入出力インターセプタロジックを利用してアプリケーションから入出力をインターセプトするためにコンピュータで具現される方法は、入出力インターセプタロジックの入出力インターフェイスによって、アプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトする段階と、入出力インターフェイスによってインターセプトされた複数の書込み入出力を複数の臨時書込みホールディングバッファに格納する段階と、入出力インターセプタロジックのマルチバッファホールディングキューによって、複数の臨時書込みホールディングバッファをホールドする段階と、入出力インターセプタロジックのフラッシュ制御ロジック部によって、入出力インターフェイスから複数のフラッシュ要請を受信する段階と、複数の書込み入出力を不揮発性ストレージ装置に格納せず、フラッシュ制御ロジック部によって、複数の書込み入出力に関する書込み入出力完了をアプリケーションに通知する段階と、複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して、フラッシュ制御ロジック部によって、マルチバッファホールディングキューが複数の書込み入出力を複数の臨時書込みホールディングバッファから不揮発性ストレージ装置に伝達するようにする段階と、を含むことができる。
【００１９】
実施形態として、インターセプトする段階は、入出力インターフェイスによって、複数の書込み入出力の中でデータ書込み入出力の第１サブセット、複数のフラッシュ要請の中で第１フラッシュ要請、複数の書込み入出力の中でメタデータ書込み入出力の第１サブセット、複数のフラッシュ要請の中で第２フラッシュ要請、複数の書込み入出力の中でデータ書込み入出力の第２サブセット、複数のフラッシュ要請の中で第３フラッシュ要請、複数の書込み入出力の中でメタデータ書込み入出力の第２サブセット、及び複数のフラッシュ要請の中で選択されたフラッシュ要請をインターセプトする段階を含むことができる。
【００２０】
実施形態として、複数の臨時書込みホールディングバッファは、第１臨時書込みホールディングバッファ、第２臨時書込みホールディングバッファ、第３臨時書込みホールディングバッファ、及び第４臨時書込みホールディングバッファを含むことができる。さらに格納する段階は、フラッシュ制御ロジック部によって、データ書込み入出力の第１サブセットが第１臨時書込みホールディングバッファに格納されるようにし、メタデータ書込み入出力の第１サブセットが第２臨時書込みホールディングバッファに格納されるようにし、データ書込み入出力の第２サブセットが第３臨時書込みホールディングバッファに格納されるようにし、メタデータ書込み入出力の第２サブセットが第４臨時書込みホールディングバッファに格納されるようにする段階を含むことができる。
【００２１】
本発明のその他の実施形態による非一時的にコンピュータで読み出される格納媒体は、コンピューティング装置及び入出力インターセプタロジックを利用して処理される命令語を格納することができる。格納された命令語は、入出力インターセプタロジックの入出力インターフェイスによって、コンピューティング装置で実行されるアプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトする段階と、 入出力インターフェイスによってインターセプトされた複数の書込み入出力を複数の臨時書込みホールディングバッファに格納する段階と、入出力インターセプタロジックのマルチバッファホールディングキューによって、複数の臨時書込みホールディングバッファをホールドする段階と、入出力インターセプタロジックのフラッシュ制御ロジック部によって、入出力インターフェイスから複数のフラッシュ要請を受信する段階と、複数の書込み入出力を不揮発性ストレージ装置に格納せず、フラッシュ制御ロジック部によって、複数の書込み入出力に関する書込み入出力完了をアプリケーションに通知する段階と、複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して、フラッシュ制御ロジック部によって、マルチバッファホールディングキューが複数の書込み入出力を複数の臨時書込みホールディングバッファから不揮発性ストレージ装置に伝達するようにする段階と、をコンピューティング装置で実行するように構成することができる。
【００２２】
本発明のその他の実施形態によるシステムはアプリケーションスペース、カーネルスペース、及び１つ以上の物理的なハードウェア装置を含む移動式装置、及びカーネルスペースで動作するように構成される入出力インターセプタロジック部を含むことができる。この実施形態で、入出力インターセプタロジックは、ストレージスタックと通信するように連結され、アプリケーションスペースのアプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトするように構成される入出力インターフェイスと、入出力インターフェイスから複数の書込み入出力を受信し、複数の書込み入出力を格納するように構成される１つ以上の臨時書込みホールディングバッファと、１つ以上の臨時書込みホールディングバッファと通信するように連結され、１つ以上の臨時書込みホールディングバッファに格納された複数の書込み入出力の順序を変更し変更された順序の複数の書込み入出力を結合して、結合された書込み入出力を生成するように構成される順序変更ロジック部と、入出力インターフェイスから複数のフラッシュ要請を受信し、複数の書込み入出力を１つ以上の物理的なハードウェア装置に含まれる不揮発性ストレージ装置に格納せず、複数の書込み入出力に関する書込み入出力完了を通知し、複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して結合された書込み入出力が不揮発性ストレージ装置に格納されるように構成されるフラッシュ制御ロジック部と、を含むことができる。
【発明の効果】
【００２３】
本発明の実施形態によれば、個別的な書込み入出力の各々が独立的に不揮発性ストレージ装置に転送されることによって発生するオーバーヘッド（Ｏｖｅｒｈｅａｄ）を減らし、データ格納の性能を向上させることができる。さらに、データがさらに効率的に書き込まれるので、電力消費（例えば、移動式装置に含まれるバッテリの消費）を減少させることができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施形態によるシステムスタック（Ｓｙｓｔｅｍ  Ｓｔａｃｋ）を示すブロック図。
【図２】図１のシステムスタックに含まれる様々な構成要素を示す概念図。
【図３】図１及び図２の入出力インターセプタロジック部に含まれる順序変更（Ｒｅ−ｏｒｄｅｒ）ロジック部及び臨時書込みホールディングバッファ（Ｔｅｍｐｏｒａｒｙ  Ｗｒｉｔｅ  Ｈｏｌｄｉｎｇ  Ｂｕｆｆｅｒ）を示す概念図。
【図４】図１及び図２の入出力インターセプタロジック部に含まれる順序変更ロジック部、及び再マッピング（Ｒｅ−ｍａｐｐｅｄ）メモリ部を示す概念図。
【図５】図１及び図２の入出力インターセプタロジック部に含まれるフラッシュ制御ロジック部及び臨時書込みホールディングバッファを示す概念図。
【図６】図１及び図２の入出力インターセプタロジック部に含まれるフラッシュ制御ロジック部及び臨時書込みホールディングバッファを示す他の概念図。
【図７】本発明の実施形態による図１の入出力インターセプタロジック部が内装される多様な装置を示す概念図。
【図８】本発明の実施形態による図１の入出力インターセプタロジック部が内装される多様な装置を示す概念図。
【図９】本発明の実施形態による図１の入出力インターセプタロジック部が内装される多様な装置を示す概念図。
【図１０】本発明の実施形態による図１の入出力インターセプタロジック部が内装される多様な装置を示す概念図。
【図１１】本発明の実施形態による図１の入出力インターセプタロジック部が内装される多様な装置を示す概念図。
【図１２】本発明の実施形態による図１の入出力インターセプタロジック部が内装される多様な装置を示す概念図。
【図１３】本発明の実施形態による入出力インターセプタロジック部を利用してアプリケーションから入出力をインターセプトする方法を説明するフローチャート。
【図１４】本発明の実施形態による入出力インターセプタロジック部を利用してアプリケーションから入出力をインターセプトする他の方法を説明するフローチャート。
【図１５】本発明の実施形態による入出力インターセプタロジック部を含むコンピューティングシステムを示すブロック図。
【発明を実施するための形態】
【００２５】
前述した特性及び以下詳細な説明は全てが本発明の説明及び理解を助けるための例示的な事項である。即ち、本発明はこのような実施形態に限定されず、他の形態に具体化することができる。以下の実施形態は単なる本発明を完全に開示するための例示に過ぎず、本発明が属する技術分野の通常の技術者に本発明を伝達するための説明である。したがって、本発明の構成要素を具現するための方法が様々である場合には、これらの方法の中で特定なこと又はこれと同一性がある範囲内で、何らかのことであっても本発明の具現が可能であることを明確にする必要がある。
【００２６】
本明細書で所定の構成が特定要素を含むと言及されている場合又は所定の過程が特定段階を含むと言及された場合は、その他の要素又はその他の段階をさらに含むことができることを意味する。即ち、本明細書で使用される用語は特定実施形態を説明するためのものであり、本発明の概念を限定するためのものではない。さらに、発明の理解を助けるために説明した例示はそれの相補的な実施形態をも含む。
【００２７】
本明細書で使用される用語は本発明が属する技術分野の通常の技術者が一般的に理解する意味を有する。普遍的に使用される用語は本明細書の脈絡にしたがって一貫的な意味として解釈されなければならない。また本明細書で使用される用語は、その意味が明確に定義された場合でなければ、あまりにも理想的であるか、或いは形式的な意味として解釈してはならない。
【００２８】
本発明の実施形態はＡＲＭプロセッサのようなプロセッサによって具現することができる。他の種類のプロセッサ又はＡＳＩＣｓ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｓ）及び／又はファームウェア（Ｆｉｒｍｗａｒｅ）もやはり本発明の実施形態を具現するために利用することができる。本発明の実施形態はスマートフォン、タブレット、ノート型コンピュータ等のような多様な移動式装置、又はデスクトップコンピュータ、ルータ等のような多様な固定式の装置のプロセッサ及び／又はメモリモジュール内に具現することができる。以下、添付された図面を通じて本発明の実施形態を説明する。
【００２９】
図１は本発明の実施形態によるシステムスタック（Ｓｙｓｔｅｍ  Ｓｔａｃｋ）を示すブロック図である。システムスタック１００はアプリケーションスペース（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐａｃｅ）１０５、カーネルスペース１１０（Ｋｅｒｎａｌ  Ｓｐａｃｅ）及び物理的なハードウェア装置１１５を含む。本発明の一実施形態によれば、カーネルスペース１１０内で入出力インターセプタ（Ｉｎｔｅｒｃｅｐｔｏｒ）ロジック部１２０が動作する。他の実施形態で、入出力インターセプタロジック部１２０はアプリケーションスペース１０５内で動作するか、或いは他の適当なコンピューティング装置の他の部分又はスペースに内装されて動作する。システムスタック１００は、例として、スマートフォン、タブレット、カメラ、ラップトップ、コンピュータ等のような移動式の装置に含まれるが、これの詳細は後述する。
【００３０】
図１に示したように、システムスタック１００はストレージスタック（Ｓｔｏｒａｇｅ  Ｓｔａｃｋ）１２５を含む。ストレージスタック１２５はアプリケーションスペース１０５の１つ以上のアプリケーション１３０（例えば、アプリケーション１３２）と物理的なハードウェア装置１１５の１つ以上の不揮発性ストレージ装置１３５との間で入出力の送信及び受信を可能にする。１つ以上の不揮発性ストレージ装置１３５はＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）１４０、フラッシュメモリ（Ｆｌａｓｈ  Ｍｅｍｏｒｙ）１４５、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１５０等を含む。
【００３１】
入出力インターセプタロジック部１２０は入出力インターフェイス（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｉｎｔｅｒｆａｃｅ）１５５、１つ以上の臨時書込みホールディングバッファ（Ｔｅｍｐｏｒａｒｙ  Ｗｒｉｔｅ  Ｈｏｌｄｉｎｇ  Ｂｕｆｆｅｒｓ）１６０、順序変更（Ｒｅ−ｏｒｄｅｒ）ロジック部１６５、及びフラッシュ（Ｆｌｕｓｈ）制御ロジック部１７０を含む。入出力インターフェイス１５５はストレージスタック１２５と連結されて通信する。入出力インターセプタロジック部１２０はフラッシュ要請を含んで、アプリケーション１３０（例えば、アプリケーション１３２）から発生するすべての入出力をインターセプトする。例として、入出力インターフェイス１５５はアプリケーション１３０（例えば、アプリケーション１３２）から発生する書込み入出力、読出し入出力、及びフラッシュ要請をインターセプトする。
【００３２】
１つ以上の臨時書込みホールディングバッファ１６０は入出力インターフェイス１５５から書込み入出力を受信し、その書込み入出力を格納する。１つ以上の臨時書込みホールディングバッファ１６０はシステムメモリの余分の空間から予め割当される。
順序変更ロジック部１６５は１つ以上の臨時書込みホールディングバッファ１６０と連結されて通信する。順序変更ロジック部１６５は１つ以上の臨時書込みホールディングバッファ１６０に格納された書込み入出力の順序を変更する。順序変更ロジック部１６５は変更された順序の書込み入出力を結合して、結合された書込み入出力を生成するが、これの詳細は後述する。
【００３３】
フラッシュ制御ロジック部１７０は入出力インターフェイス１５５からフラッシュ要請を受信する。書込み入出力が１つ以上の不揮発性ストレージ装置１３５の中でどこかに実際に書き込まれなくとも、フラッシュ制御ロジック部１７０は書込み入出力に関する書込み入出力完了をアプリケーション１３０（例えば、アプリケーション１３２）に通知する。実際には書込み入出力が特定時点で１つ以上の不揮発性ストレージ装置１３５に伝達されないうちに、アプリケーション１３２は書込み入出力が完了されたと認識する。言い換えれば、書込み入出力が１つ以上の不揮発性ストレージ装置１３５の中のどこかに実際に書き込まれる前に、フラッシュ制御ロジック部１７０は書込み入出力に関する書込み入出力完了をアプリケーション１３２に通知する。フラッシュ制御ロジック部１７０はフラッシュ要請の中で選択されたＮ番目のフラッシュ要請に応答して（又は、他の基準にしたがって）、結合された書込み入出力が１つ以上の不揮発性ストレージ装置１３５に書き込まれるようにするが、これの詳細は後述する。
【００３４】
図２は図１のシステムスタックに含まれる様々な構成要素を示す概念図である。図２は本発明の実施形態にしたがって時間の流れに対して発生する一連のイベントを示す。
入出力インターフェイス１５５は、例として、アプリケーション１３２から発生するデータ書込み入出力Ｄ１（即ち、Ｗ０１乃至Ｗｎ３）、メタデータ（Ｍｅｔａｄａｔａ）書込み入出力Ｍ１（即ち、Ｗ０４乃至Ｗｎ６）、データ書込み入出力Ｄ２（即ち、Ｗ０７乃至Ｗｎ９）、メタデータ書込み入出力Ｍ２（即ち、Ｗ０１０乃至Ｗｎ１２）、及びフラッシュ要請Ｆ０、Ｆ１、Ｆ２、Ｆ３、Ｆｎを含む書込み入出力をインターセプトする。１つ以上の臨時書込みホールディングバッファ１６０は入出力インターフェイス１５５から書込み入出力を受信し、その書込み入出力を格納する。１つ以上の臨時書込みホールディングバッファ１６０にデータが格納されている間に、アプリケーション１３２から読出し入出力を受信した場合、入出力インターセプタロジック部１２０は１つ以上の臨時書込みホールディングバッファ１６０に格納されているデータのコピーを利用して読出し入出力要請を処理するか、又は再マッピングされた（Ｒｅ−ｍａｐｐｅｄ）メモリ位置を利用するが、これの詳細は後述する。
【００３５】
順序変更ロジック部１６５は１つ以上の臨時書込みホールディングバッファ１６０に格納された書込み入出力の順序を変更するが、これの詳細は後述する。順序変更ロジック部１６５はランダムの（Ｒａｎｄｏｍ）書込み入出力を順次的な（Ｓｅｑｕｅｎｔｉａｌ）書込み入出力に変換する。順序変更ロジック部１６５は変更された順序の書込み入出力（例えば、Ｄ１、Ｍ１、Ｄ２、及びＭ２）を結合して、結合された書込み入出力ＣＷを生成する。
【００３６】
フラッシュ制御ロジック部１７０は入出力インターフェイス１５５からフラッシュ要請Ｆ０、Ｆ１、Ｆ２、Ｆ３、Ｆｎを受信する。書込み入出力が１つ以上の不揮発性ストレージ装置１３５の中でどこかに実際に書き込まれなくとも、フラッシュ制御ロジック部１７０は書込み入出力に対応する完了メッセージＣＭ０、ＣＭ１、ＣＭ２、ＣＭ３、ＣＭｎを利用して書込み入出力完了をアプリケーション１３２に通知する。言い換えれば、フラッシュ制御ロジック部１７０はフラッシュ要請の各々に対して概ね直ちに応答することができる。したがって、アプリケーション１３２は、不揮発性ストレージ装置１３５の中の１つに対してフラッシュ要請が実際に完了されるのを待つ必要がなく、追加の書込み入出力を引き続き伝送することができる。したがって、アプリケーション１３２の性能を顕著に向上させることができる。言い換えれば、書込み入出力が１つ以上の不揮発性ストレージ装置１３５の中でどこかに実際に書き込まれる前に、フラッシュ制御ロジック部１７０は書込み入出力に対応する完了メッセージＣＭ０、ＣＭ１、ＣＭ２、ＣＭ３、ＣＭｎを利用して書込み入出力に関する書込み入出力完了をアプリケーション１３２に通知する。
【００３７】
書込み入出力が１つ以上の臨時書込みホールディングバッファ１６０に格納されるので、フラッシュ制御ロジック部１７０は時間が僅かに過ぎた後に、結合された書込み入出力ＣＷが１つ以上の不揮発性ストレージ装置１３５に伝達されたフラッシュＣＦｎに実際に書き込まれるようにすることができる。言い換えれば、フラッシュ制御ロジック部１７０は選択的なフラッシュ技法を具現することができる。伝達されたフラッシュＣＦｎは同期式の（Ｓｙｎｃｈｒｏｎｏｕｓ）動作である。
【００３８】
結合された書込み入出力ＣＷの大きさは個別的な書込み入出力の大きさより大きいので、個別的な書込み入出力の各々が独立的に不揮発性ストレージ装置１３５に伝送されることにより発生するオーバーヘッド（Ｏｖｅｒｈｅａｄ）を減らすことによって、ストレージの性能が向上する。さらに、書込み入出力が不揮発性ストレージ装置１３５より顕著に高い性能（即ち、高い処理量及び低いレイテンシ（Ｌａｔｅｎｃｙ））を有するシステムメモリで完了させることができるので、アプリケーションの性能が顕著に向上する。
【００３９】
その上に、結合された書込み入出力ＣＷの伝達されたフラッシュＣＦｎはフラッシュバウンダリ（Ｆｌｕｓｈ  Ｂｏｕｎｄａｒｙ）Ｆｎと共に又はフラッシュバウンダリＦｎより僅かに後に（例えば、選択されたＮ番目のフラッシュＦｎに応答して）発生するので、データは一貫性を維持することができる。急な（Ｓｕｄｄｅｎ）電力損失が発生してデータが損失しても、不揮発性ストレージ装置１３５のデータは一貫性を維持することができる。アプリケーションはデータの損失を容認することができる。なぜならば、アプリケーションは不揮発性ストレージ装置１３５に格納されたデータを読み出すことができ、その格納されたデータに基づいてアプリケーションの状態を複旧するか、或は異なる方式にロールバック（Ｒｏｌｌ  Ｂａｃｋ）できるためである。
【００４０】
しかし、データの非一貫性（Ｉｎｃｏｎｓｉｓｔｅｎｃｙ）は普通アアプリケーションによって容認されず、予測し難い行為を発生させるか、甚だしくはアプリケーションが動作できなくなるようにする可能性がある。本発明の実施形態によれば、伝達されたフラッシュ（例えば、ＣＦ０乃至ＣＦｎ）の間に書込み入出力を累積した後、結合された書込み入出力のデータを不揮発性ストレージ装置１３５にフラッシュすることによって、データの一貫性が保障される。
【００４１】
１つ以上の不揮発性ストレージ装置１３５はフラッシュ確認メッセージＣＦＭ０、ＣＦＭｎを返還（Ｒｅｔｕｒｎ）する。フラッシュ確認メッセージＣＦＭ０、ＣＦＭｎは入出力インターセプタロジック部１２０に提供されて、不揮発性ストレージ装置１３５に伝達されたフラッシュＣＦ０、ＣＦｎの各々のトランザクション（Ｔｒａｎｓａｃｔｉｏｎ）が完了したことを確認するために利用される。そのため、同期式のフラッシュ動作を提供することができる。言い換えれば、特定の同期式のフラッシュ動作の間に、書込み入出力Ｄ１、Ｍ１、Ｄ２、Ｍ２及びその特定のフラッシュ動作を構成せず、伝達されないフラッシュ要請Ｆ１、Ｆ２、Ｆ３はその特定のフラッシュ動作に繋がる他の同期式のフラッシュ動作が遂行される前まで累積されるが、不揮発性ストレージ装置１３５に実際にフラッシュされない。
【００４２】
ある時点で急な電力損失が発生しても、データは一貫性を維持することができる。言い換えれば、データと対をなすメタデータがいつも１つ以上の不揮発性ストレージ装置１３５に格納されている。言い換えれば、メタデータがそれに対応するデータ無しで１つ以上の不揮発性ストレージ装置１３５に格納される場合は発生しない。結果的に、本発明の実施形態によれば、アプリケーション及びストレージスタックの性能を顕著に向上させながらも、データの一貫性を維持させることができる。
【００４３】
さらに、元の伝達されるフラッシュ要請（例えば、Ｆ１、Ｆ２、及びＦ３）が伝達されないフラッシュ要請に変換される可能性があるので、書込み入出力の順序を変更するための機会の幅が拡張される。普通、書込み入出力の順序はフラッシュバウンダリの間（例えば、Ｆ０とＦ１との間）のみで変更される。しかし、本発明の実施形態で、普通のフラッシュ要請（例えば、Ｆ１、Ｆ２、及びＦ３）は伝達されないフラッシュ要請に変更され、書込み入出力の順序は伝達されないフラッシュ要請のバウンダリに亘って（即ち、Ｆ１、Ｆ２、及びＦ３に亘ってＦ０とＦｎとの間で）変更される。実際に伝達されるフラッシュ（例えば、ＣＦ０及びＣＦｎ）は拡張された時間の幅で発生するためである。
【００４４】
言い換えれば、２つの伝達されたフラッシュ（例えば、ＣＦ０及びＣＦｎ）の間の書込み入出力の数はさらに短い時間の幅で頻繁に発生する２つの伝達されないフラッシュ要請の間（例えば、Ｆ０とＦ１との間、Ｆ１とＦ２との間、Ｆ２とＦ３との間等）の書込み入出力の数より多い。書込み入出力の順序を変更する機会の幅を拡張することによって、性能をさらに向上させることができる。なぜならば、書込み入出力が不揮発性ストレージ装置１３５にさらに効率的に書き込まれるように、及びさらに大きい大きさの１つの書込み入出力に結合できるように、書込み入出力の順序が変更できるためである。
【００４５】
フラッシュ制御ロジック部１７０はフラッシュ要請の中で選択されたＮ番目のフラッシュ要請（例えば、Ｆｎ）に応答して結合された書込み入出力ＣＷが１つ以上の不揮発性ストレージ装置１３５に書き込まれるようにすることができる。例として、選択されるＮ番目のフラッシュ要請は予め定まられ、Ｎは予め定まれた正の整数である。例として、Ｎは３以上の整数である。例として、Ｎは４、５、８、１０、１６、２０、３２、６４、１００等のような整数である。Ｎは正の整数の中で適当ないずれかの値に設定されてもよい。伝達されたフラッシュＣＦｎが発生する前に累積されたＮ個のフラッシュ要請の数は動作の前に予め定まられる。又は、伝達されたフラッシュＣＦｎが発生する前に累積されたＮ個のフラッシュ要請の数は使用者又はシステム管理者によって修正されるように設定可能である値を有する。
【００４６】
又は、フラッシュ制御ロジック部１７０は累積されたデータの閾値（Ｔｈｒｅｓｈｏｌｄ  Ａｍｏｕｎｔ）に応答して伝達されたフラッシュＣＦｎが結合された書込み入出力ＣＷを１つ以上の不揮発性ストレージ装置１３５に書き込まれるようにすることができる。言い換えれば、累積されたデータの量が閾値に到達した場合、フラッシュ制御ロジック部１７０は伝達されるフラッシュＣＦｎを発生させることができる。
【００４７】
又は、フラッシュ制御ロジック部１７０は設定された時間の満了に応答して伝達されたフラッシュＣＦｎが結合された書込み入出力ＣＷを１つ以上の不揮発性ストレージ装置１３５に書き込むようにすることができる。設定された時間は、例として、５秒、１０秒、３０秒、６０秒等のように秒単位で設定されてもよい。これは急な電力損失が発生した時、データが損失される可能性を減少させながらも、性能を向上させデータの一貫性を維持させるようにする。
【００４８】
又は、フラッシュ制御ロジック部１７０は累積されたデータの閾値に関する第１基準（Ｃｒｉｔｅｒｉａ）の満足及びそれに続いて選択されたＮ番目のフラッシュ要請に関する第２基準の満足に応答して伝達されたフラッシュＣＦｎが結合された書込み入出力ＣＷを１つ以上の不揮発性ストレージ装置１３５に書き込むようにすることができる。言い換えれば、２つの基準が全て満足された場合、伝達されたフラッシュＣＦｎが発生することができる。
【００４９】
入出力インターセプタロジック部１２０の入出力インターフェイス１５５は、データ書込み入出力の第１サブセットＤ１、第１フラッシュ要請Ｆ１、メタデータ書込み入出力の第１サブセットＭ１、第２フラッシュ要請Ｆ２、データ書込み入出力の第２サブセットＤ２、第３フラッシュ要請Ｆ３、メタデータ書込み入出力の第２サブセットＭ２、及び選択されたＮ番目のフラッシュ要請Ｆｎを受信することができる。
【００５０】
順序変更ロジック部１６５はデータ書込み入出力の第１サブセットＤ１、メタデータ書込み入出力の第１サブセットＭ１、データ書込み入出力の第２サブセットＤ２、及びメタデータ書込み入出力の第２サブセットＭ２に含まれる書込み入出力の順序を変更することができる。言い換えれば、順序変更ロジック部１６５は各々のサブセットに含まれる書込み入出力の順序を変更するか、或は様々なサブセットに亘って書込み入出力の順序を変更することができる。順序変更ロジック部１６５はデータ書込み入出力の第１サブセットＤ１、メタデータ書込み入出力の第１サブセットＭ１、データ書込み入出力の第２サブセットＤ２、及びメタデータ書込み入出力の第２サブセットＭ２を結合して結合された書込み入出力ＣＷを生成することができる。順序変更ロジック部１６５は結合された書込み入出力２２５にヘッダ（Ｈｅａｄｅｒ；ＨＤＲ）及びフッタ（Ｆｏｏｔｅｒ；ＦＴＲ）を挿入するが、これの詳細は後述する。
【００５１】
図３は図１及び図２の入出力インターセプタロジック部に含まれる順序変更ロジック部及び臨時書込みホールディングバッファを示す概念図である。上から説明されたことのように、順序変更ロジック部１６５は各々のサブセットに含まれる書込み入出力の順序を変更するか、或は様々なサブセットに亘って書込み入出力の順序を変更することができる。
【００５２】
図３の実施形態で、書込み入出力Ｗ０１は論理ブロックアドレス（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ、以下、“ＬＢＡ”）６に対応し、書込み入出力Ｗ１２はＬＢＡ２に対応し、書込み入出力Ｗｎ３はＬＢＡ９に対応し、書込み入出力Ｗ０４はＬＢＡ７に対応し、書込み入出力Ｗ１５はＬＢＡ１０に対応し、書込み入出力Ｗｎ６はＬＢＡ１１に対応し、書込み入出力Ｗ０７はＬＢＡ５に対応し、書込み入出力Ｗ１８はＬＢＡ４に対応し、書込み入出力Ｗｎ９はＬＢＡ８に対応し、書込み入出力Ｗ０１０はＬＢＡ２に対応し、書込み入出力Ｗ１１１はＬＢＡ３に対応し、書込み入出力Ｗｎ１１２はＬＢＡ１に対応する。ＬＢＡは複数の書込み入出力が１つ以上の不揮発性ストレージ装置１３５に格納された論理的な位置に各々対応する。
【００５３】
順序変更ロジック部１６５は様々な書込み入出力の順序を変更することができる。したがって、書込み入出力は結合された書込み入出力ＣＷの書込み入出力に各々対応するＬＢＡが昇順又は降順に整列されるように結合された書込み入出力ＣＷに配列される。例として、書込み入出力は最初にＷ０１／ＬＢＡ６、Ｗ１２／ＬＢＡ１２、Ｗｎ３／ＬＢＡ９、Ｗ０４／ＬＢＡ７、Ｗ１５／ＬＢＡ１０、Ｗｎ６／ＬＢＡ１１、Ｗ０７／ＬＢＡ５、Ｗ１８／ＬＢＡ４、Ｗｎ９／ＬＢＡ８、Ｗ０１０／ＬＢＡ２、Ｗ１１１／ＬＢＡ３、Ｗｎ１２／ＬＢＡ１の順に提供される。上のＬＢＡ値は単なる例示であり、本発明を制限するためのものではない。
【００５４】
順序変更ロジック部１６５は書込み入出力が臨時書込みホールディングバッファ１６０内でＷｎ１２／ＬＢＡ１、Ｗ０１０／ＬＢＡ２、Ｗ１１１／ＬＢＡ３、Ｗ１８／ＬＢＡ４、Ｗ０７／ＬＢＡ５、Ｗ０１／ＬＢＡ６、Ｗ０４／ＬＢＡ７、Ｗｎ９／ＬＢＡ８、Ｗｎ３／ＬＢＡ９、Ｗ１５／ＬＢＡ１０、Ｗｎ６／ＬＢＡ１１、Ｗ１２／ＬＢＡ１２の順序を有するように書込み入出力の順序を変更することができる。このような方式に、ＬＢＡが昇順又は降順に配列される。したがって、結合された書込み入出力ＣＷを１つ以上の不揮発性ストレージ装置１３５（図１及び図２参照）にさらに効率的に書き込むことができる。
【００５５】
図４は図１及び図２の入出力インターセプタロジック部に含まれる順序変更ロジック部、及び再マッピングメモリ部を示す概念図である。再マッピングメモリ部４０５はシステムメモリから割当されるか、或いは本発明の実施形態による入出力インターセプタロジック部１２０（図１参照）内に割当される。一般的にＬＢＡは広く分散されるので、ＬＢＡを昇順、降順、又は連続されたグループに再整列することは単純ではない。例として、書込み入出力は最初にＷ０１／ＬＢＡ５０、Ｗ１２／ＬＢＡ１１、Ｗｎ３／ＬＢＡ１８、Ｗ０４／ＬＢＡ６５、Ｗ１５／ＬＢＡ９９、Ｗｎ６／ＬＢＡ１０、Ｗ０７／ＬＢＡ４１、Ｗ１８／ＬＢＡ３４、Ｗｎ９／ＬＢＡ７７、Ｗ０１０／ＬＢＡ１９、Ｗ１１１／ＬＢＡ５５、Ｗｎ１２／ＬＢＡ１００の順に提供される。上のＬＢＡ値は単なる例示であり、本発明を制限するためのものではない。
【００５６】
順序変更ロジック部１６５はヘッダＨＤＲ及びフッタＦＴＲを前後に連結し、書込み入出力を再マッピングメモリ部４０５に再マッピングすることによって書込み入出力の順序を変更する。言い換えれば、順序変更ロジック部１６５は書込み入出力、ヘッダＨＤＲ、及びフッタＦＴＲをコピーして結合された書込み入出力ＣＷを生成する。したがって、結合された書込み入出力ＣＷの様々な書込み入出力に各々対応する様々なＬＢＡは昇順又は降順に配列される。さらに、結合された書込み入出力ＣＷの書込み入出力の各々は再マッピングメモリ部４０５で他の書込み入出力と物理的に隣接するように配列される。順序変更ロジック部１６５はランダムの書込み入出力を順次的な書込み入出力に変換する。
【００５７】
例として、再マッピングメモリ部４０５の結合された書込み入出力ＣＷはヘッダ／ＬＢＡ０、Ｗｎ１２／ＬＢＡ１、Ｗ０１０／ＬＢＡ２、Ｗ１１１／ＬＢＡ３、Ｗ１８／ＬＢＡ４、Ｗ０７／ＬＢＡ５、Ｗ０１／ＬＢＡ６、Ｗ０４／ＬＢＡ７、Ｗｎ９／ＬＢＡ８、Ｗｎ３／ＬＢＡ９、Ｗ１５／ＬＢＡ１０、Ｗｎ６／ＬＢＡ１１、Ｗ１２／ＬＢＡ１２、フッタ／ＬＢＡ１３の順に再マッピングされて配列された書込み入出力を含む。このような方式に、ＬＢＡが連続される形式に配列される。したがって、結合された書込み入出力ＣＷを１つ以上の不揮発性ストレージ装置１３５（図１及び図２参照）にさらに効率的に書き込むことができる。
【００５８】
幾つかの実施形態で、再マッピングメモリ部４０５は入出力インターセプタロジック部１２０のみによって認識される。ヘッダＨＤＲ及び／又はフッタＦＴＲは再マッピング変換情報を含む。ヘッダＨＤＲ及び／又はフッタＦＴＲは結合された書込み入出力ＣＷが有効であることを示す情報を含む。１つ以上の不揮発性ストレージ装置１３５にヘッダＨＤＲを含むが、フッタＦＴＲを含まなく、結合された書込み入出力ＣＷは有効でないものとして取り扱われる。このような場合は伝達されたフラッシュＣＦｎに関する動作が遂行される間に、急な電力損失が発生する場合が生ずることがある。このような場合、結合された書込み入出力ＣＷは有効でないと決定され、廃棄（Ｄｉｓｃａｒｄ）される。有効な結合された書込み入出力ＣＷを読出し入出力動作で読み出すために有効な結合された書込み入出力ＣＷが１つ以上の不揮発性ストレージ装置１３５から読み出される場合、ヘッダＨＤＲ及び／又はフッタＦＴＲに格納された再マッピング変換情報は予想されるデータ及び／又はＬＢＡ情報をアプリケーション１３２に提供するために入出力インターセプタロジック部１２０によって利用される。
【００５９】
フラッシュ制御ロジック部１７０は選択されたＮ番目のフラッシュ要請又は他の基準に応答して、物理的に連続する結合された書込み入出力ＣＷが１つ以上の不揮発性ストレージ装置１３５に書き込まれるようにする。
図５は図１及び図２の入出力インターセプタロジック部に含まれるフラッシュ制御ロジック部及び臨時書込みホールディングバッファを示す概念図である。
【００６０】
順序変更ロジック部１６５は入出力インターセプタロジック部１２０に含まれる必要はない。代わりに、実施形態として、フラッシュ制御ロジック部１７０がバッファ０、バッファ１、バッファ２、及びバッファＮのような複数の臨時書込みホールディングバッファ１６０を管理する。臨時書込みホールディングバッファ１６０は図１及び図２の入出力インターフェイス１５５から書込み入出力を受信し、その書込み入出力を格納する。マルチバッファホールディングキュー（Ｍｕｌｔｉ−Ｂｕｆｆｅｒ  Ｈｏｌｄｉｎｇ  Ｑｕｅｕｅ）５０５は臨時書込みホールディングバッファをホールド（Ｈｏｌｄ）する。
【００６１】
フラッシュ制御ロジック部１７０は入出力インターフェイス１５５から複数のフラッシュ要請（例えば、Ｆ０、Ｆ１、Ｆ２等）を受信する。書込み入出力が図１及び図２の１つ以上の不揮発性ストレージ装置１３５に書き込まれなくとも、フラッシュ制御ロジック部１７０は書込み入出力に関する入出力完了のメッセージ（例えば、図２のＣＭ０、ＣＭ１、ＣＭ２、ＣＭ３、及びＣＭｎ）をアプリケーション（例えば、図１及び図２のアプリケーション１３２）に伝達する。言い換えれば、書込み入出力が１つ以上の不揮発性ストレージ装置１３５の中でどこかに実際に書き込まれる前に、フラッシュ制御ロジック部１７０は書込み入出力に関する書込み入出力完了をアプリケーション１３２に通知する。
【００６２】
フラッシュ制御ロジック部１７０はデータ書込み入出力の第１サブセット（例えば、図２のＤ１）が臨時書込みホールディングバッファ１６０のバッファ０（Ｂ０）に格納されるようにし、メタデータ書込み入出力の第１サブセット（例えば、図２のＭ１）が臨時書込みホールディングバッファ１６０のバッファ１（Ｂ１）に格納されるようにし、データ書込み入出力の第２サブセット（例えば、図２のＤ２）が臨時書込みホールディングバッファ１６０のバッファ２（Ｂ２）に格納されるようにし、メタデータ書込み入出力の第２サブセット（例えば、図２のＭ２）が臨時書込みホールディングバッファ１６０のバッファＮ（ＢＮ）に格納されるようにする。
【００６３】
フラッシュ制御ロジック部１７０は選択されたＮ番目のフラッシュ要請に応答して、マルチバッファホールディングキュー５０５が書込み入出力が伝達された順に臨時書込みホールディングバッファ１６０から１つ以上の不揮発性ストレージ装置１３５に伝達するようにする。この実施形態で、書込み入出力の順序変更及び再マッピングが遂行されなく、追加のヘッダ又はフッタが必要としない。反面、上述の実施形態に比べ、性能は大きく向上されない。なぜならば、ＬＢＡが事実上にランダムの順に１つ以上の不揮発性ストレージ装置１３５に伝達されるためである。急な電力損失が発生した場合には、アプリケーション１３２がデータを書き込もうとした順序が保存されたので、データの一貫性は相変わらず維持される。
【００６４】
図６は図１及び図２の入出力インターセプタロジック部に含まれるフラッシュ制御ロジック部及び臨時書込みホールディングバッファを示す他の概念図である。
図６は図５と類似であるが、図６ではＬＢＡが広く分布するという差異点がある。しかも、この実施形態の動作は図５を参照して説明したのと同一であるか、或いは類似である。したがって、重複する説明は省略する。ＬＢＡが広く分布することを示す図６の実施形態もやはり本発明の実施形態に含まれ、図５を参照して説明したのと同一であるか、或いは類似に具現することができる。
【００６５】
図７乃至図１２は本発明の実施形態による図１の入出力インターセプタロジック部が内装できる多様な装置を示す概念図である。
例として、図７に示したように、スマートフォン７０５は上述した入出力インターセプタロジック部１２０を含む。類似に、図８に示したタブレット８０５、図９に示したノート型コンピュータ９０５、図１０に示した移動式電話機１００５、図１１に示したカメラ１１０５、及び図１２に示したデスクトップコンピュータ１２０５は上述した入出力インターセプタロジック部１２０を含む。不揮発性ストレージを利用する装置は上から説明された入出力インターセプタロジック部１２０を含み、それを利用して動作する。
【００６６】
図１３は本発明の実施形態による入出力インターセプタロジック部を利用してアプリケーションから入出力をインターセプトする方法を説明するフローチャートである。
図１３の方法はＳ１３０５段階で開始される。Ｓ１３０５段階で、入出力インターセプタロジック部の入出力インターフェイスによって、アプリケーションから複数の書込み入出力及び複数のフラッシュ要請がインターセプトされる。
Ｓ１３１０段階で、入出力インターフェイスによって、インターセプトされた複数の書込み入出力が１つ以上の臨時書込みホールディングバッファに格納される。
Ｓ１３１５段階で、順序変更ロジック部は１つ以上の臨時書込みホールディングバッファに格納された複数の書込み入出力の順序を変更する。
Ｓ１３２０段階で、順序変更ロジック部は変更された順序の書込み入出力を結合して結合された書込み入出力を生成する。
【００６７】
Ｓ１３２５段階で、フラッシュ制御ロジック部は入出力インターフェイスから複数のフラッシュ要請を受信する。
Ｓ１３３０段階で、複数の書込み入出力を不揮発性ストレージ装置に格納しなく、フラッシュ制御ロジック部は複数の書込み入出力に関する書込み入出力完了をアプリケーションに通知する。言い換えれば、書込み入出力が１つ以上の不揮発性ストレージ装置の中でどこかに実際に書き込まれる前に、フラッシュ制御ロジック部は書込み入出力に関する書込み入出力完了をアプリケーションに通知する。
Ｓ１３３５段階で、フラッシュ制御ロジック部は複数のフラッシュ要請の中で選択されたＮ番目のフラッシュ要請、累積されたデータの閾値、及び設定された時間の満了の中で少なくとも１つに応答して、結合された書込み入出力が不揮発性ストレージ装置に書き込まれるようにする。
【００６８】
図１４は本発明の実施形態による入出力インターセプタロジック部を利用してアプリケーションから入出力をインターセプトする他の方法を説明するフローチャートである。
図１４の方法はＳ１４０５段階で開始される。Ｓ１４０５段階で、入出力インターセプタロジック部の入出力インターフェイスによって、アプリケーションから複数の書込み入出力及び複数のフラッシュ要請がインターセプトされる。
【００６９】
Ｓ１４１０段階で、入出力インターフェイスによってインターセプトされた複数の書込み入出力が複数の臨時書込みホールディングバッファに格納される。
Ｓ１４１５段階で、マルチバッファホールディングキューは複数の臨時書込みホールディングバッファをホールドする。
Ｓ１４２０段階で、フラッシュ制御ロジック部は入出力インターフェイスから複数のフラッシュ要請を受信する。
【００７０】
Ｓ１４２５段階で、複数の書込み入出力を不揮発性ストレージ装置に格納しなく、フラッシュ制御ロジック部は複数の書込み入出力に関する書込み入出力完了をアプリケーションに通知する。言い換えれば、書込み入出力が１つ以上の不揮発性ストレージ装置の中でとこかに実際に書き込まれる前に、フラッシュ制御ロジック部は書込み入出力に関する書込み入出力完了をアプリケーションに通知する。
【００７１】
Ｓ１４３０段階で、フラッシュ制御ロジック部は複数のフラッシュ要請の中で選択されたＮ番目のフラッシュ要請、累積されたデータの閾値、及び設定された時間の満了の中で少なくとも１つに応答して、マルチバッファホールディングキューが複数の書込み入出力を複数の臨時書込みホールディングバッファから不揮発性ストレージ装置に伝達するようにする。
【００７２】
図１５は本発明の実施形態による入出力インターセプタロジック部を含むコンピューティングシステムを示すブロック図である。図１５を参照すれば、コンピューティングシステム１５００はクロック１５１０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１５１５、ユーザインターフェイス（Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）１５２０、基底帯域チップセット（Ｂａｓｅｂａｎｄ  Ｃｈｉｐｓｅｔ）のようなモデム１５２５、ＳＳＤ１５４０、メモリコントローラ１５４５、及びバッテリ１５３５を含む。図１５には図示しなかったが、コンピューティングシステム１５００はＡＰ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｃｅｓｓｏｒ）チップセット、ＣＩＳ（Ｃａｍｅｒａ  Ｉｍａｇｅ  Ｓｅｎｓｏｒ）、移動式ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）等をさらに含む。
【００７３】
クロック１５１０、ＲＡＭ１５１５、ユーザインターフェイス１５２０、基底帯域チップセット１５２５、ＳＳＤ１５４０、メモリコントローラ１５４５、及びバッテリ１５３５の一部又は全部はシステムバス１５０５に電気的に連結される。入出力インターセプタロジック部１５３０は図１乃至図１２の入出力インターセプタロジック部１２０に対応する。入出力インターセプタロジック部１５３０もやはりシステムバス１５０５に電気的に連結される。
【００７４】
コンピューティングシステム１５００が移動式装置である場合、バッテリ１５３５はコンピューティングシステム１５００に電力を供給する。上から説明された本発明の実施形態が具現されれば、ストレージ１５４０（例えば、ＳＳＤ）にデータをさらに効率的に書き込むことができるので、バッテリ消費が減少することができる。
【００７５】
実施形態として、コンピューティングシステム１５００はコンピュータ、携帯用コンピュータ、ＵＭＰＣ（Ｕｌｔｒａ  Ｍｏｂｉｌｅ  Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、ワークステーション（Ｗｏｒｋｓｔａｔｉｏｎ）、ネットブック（Ｎｅｔ−ｂｏｏｋ）、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、ウェブタブレット、無線電話機、移動式電話機、スマートフォン、電子本（Ｅｌｅｃｔｒｏｎｉｃ  Ｂｏｏｋ）、ＰＭＰ（Ｐｏｒｔａｂｌｅ  Ｍｕｌｔｉｍｅｄｉａ  Ｐｌａｙｅｒ）、デジタルカメラ、デジタルオーディオレコーダ／プレーヤ、デジタル映像／ビデオレコーダ／プレーヤ、携帯用ゲーム機、ナビゲーションシステム、ブラックボックス、３次元テレビジョン、無線環境で情報を送受信できる装置、ホームネットワークを構成する様々な電子装置の中で１つ、コンピュータネットワークを構成する様々な電子装置の中で１つ、テレマティクス（Ｔｅｌｅｍａｔｉｃｓ）ネットワークを構成する様々な電子装置の中で１つ、ＲＦＩＤ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）、又はコンピューティングシステムを構成する様々な電子装置の中で１つに利用されることができる。
【００７６】
以下の説明は本発明の実施形態が具現できる適当な機器に関して簡略に一般的な説明を提供するためのものである。機器はプロセッサ、メモリ（例えば、ＲＡＭ、ＲＯＭ（Ｒｅａｄ−ｏｎｌｙ  Ｍｅｍｏｒｙ）、又はその他の状態を保存できる媒体）、ストレージ装置、ビデオインターフェイス、入出力インターフェイスポート（Ｐｏｒｔ）が連結されたシステムバスを含む。機器はキーボード、マウス等のような入力装置から提供される入力はもちろん、他の機器、仮想現実（Ｖｉｒｔｕａｌ  Ｒｅａｌｉｔｙ）環境との相互作用（Ｉｎｔｅｒａｃｔｉｏｎ）、生体（Ｂｉｏｍｅｔｒｉｃ）信号、又はその他の入力信号を通じて提供される入力によって制御することができる。
【００７７】
ここで、“機器”という用語は単一の機器、バーチャルマシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）、互いに通信するように連結された機器やバーチャルマシンのシステム、又は共に動作する装置等を幅広く含むために利用された。例として、機器は個人用コンピュータ、ワークステーション、サーバ、携帯用コンピュータ、小型装置、電話機、タブレット等のようなコンピューティング装置はもちろん、個人用の（Ｐｒｉｖａｔｅ）又は公用の（Ｐｕｂｌｉｃ）交通手段（例えば、自動車、汽車、タクシ等）のような移動手段を含む。
【００７８】
機器はプログラム可能である（Ｐｒｏｇｒａｍｍａｂｌｅ）又はプログラムされない（Ｎｏｎ−ｐｒｏｇｒａｍｍａｂｌｅ）論理装置又はアレイ（Ａｒｒａｙ）、ＡＳＩＣｓ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｓ）等のような内装型（Ｅｍｂｅｄｄｅｄ）コントローラを含む。機器はネットワークインターフェイス、モデム、又はその他の通信用連結を通じて１つ以上の遠隔機器との連結を活用することができる。機器はイントラネット（Ｉｎｔｒａｎｅｔ）、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のような物理的な及び／又は論理的なネットワークを利用して他の機器と連結される。ネットワーク通信は  ＲＦ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ）、衛星、マイクロ波（Ｍｉｃｒｏｗａｖｅ）、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃｓ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）  ５４５．１１、ブルートゥース（Ｂｌｕｅｔｏｏｔｈ（登録商標））、光（Ｏｐｔｉｃｓ）、赤外光（Ｉｎｆｒａｒｅｄ）、ケーブル、レーザー等のような短距離又は長距離の有無線キャリヤ（Ｃａｒｒｉｅｒ）又はプロトコル（Ｐｒｏｔｏｃｏｌ）を活用して具現することができる。
【００７９】
本発明の実施形態は関数（Ｆｕｎｃｔｉｏｎ）、プロシージャ（Ｐｒｏｃｅｄｕｒｅ）、データ構造（Ｄａｔａ  Ｓｔｒｕｃｔｕｒｅ）、応用プログラム（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ）等を含むデータ形態で具現されることができる。本発明の実施形態を具現したデータが機器によって接近される場合、機器は本発明の実施形態に対応する作業を遂行するか、或いは、抽象データ型（Ａｂｓｔｒａｃｔ  Ｄａｔａ  Ｔｙｐｅ）又は下位レベルハードウェアコンテキスト（Ｌｏｗ−ｌｅｖｅｌ  Ｈａｒｄｗａｒｅ  Ｃｏｎｔｅｘｔ）を定義することができる。
【００８０】
本発明の実施形態を具現したデータは、例として、ＲＡＭ、ＲＯＭ等のような揮発性及び／又は不揮発性メモリ、又はハードドライブ、フロッピー（登録商標）ディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、生体ストレージ等のようなストレージ装置に格納されることができる。本発明の実施形態を具現したデータは物理的な及び／又は論理的なネットワーク等のような通信環境を通じてパケット（Ｐａｃｋｅｔ）、直列データ（Ｓｅｒｉａｌ  Ｄａｔａ）、並列データ（Ｐａｒａｌｌｅｌ  Ｄａｔａ）、電波信号（Ｐｒｏｐａｇａｔｅｄ  Ｓｉｇｎａｌ）等の形態に伝送されて、圧縮された（Ｃｏｍｐｒｅｓｓｅｄ）又は暗号化された（Ｅｎｃｒｙｐｔｅｄ）形態に利用されることができる。本発明の実施形態を具現したデータは分散（Ｄｉｓｔｒｉｂｕｔｅｄ）環境で利用されることができ、機器の接近のためにローカル（Ｌｏｃａｌ）及び／又は遠隔（Ｒｅｍｏｔｅ）の位置に格納することができる。
【００８１】
本発明の実施形態は１つ以上のプロセッサによって実行可能である（Ｅｘｃｕｔａｂｌｅ）命令語（Ｉｎｓｔｒｕｃｔｉｏｎ）を含む非一時的に（Ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）機械で読み出される媒体（Ｍａｃｈｉｎｅ−ｒｅａｄａｂｌｅ  Ｍｅｄｉｕｍ）に具現されることができる。この命令語は上から説明された本発明の実施形態の過程を遂行するための命令を含む。
【００８２】
各々の概念図に示した構成は単なる概念的な観点で理解しなければならない。本発明の理解を助けるために、概念図に示した構成要素各々の形態、構造、大きさ等は誇張又は縮小されて表現された。実際に具現される構成は各々の概念図に示したことと異なる物理的形状を有することができる。各々の概念図は構成要素の物理的形状を制限するためのものではない。
各々のブロック図に示した装置構成は発明の理解を助けるためのものである。各々のブロックは機能によってさらに小さい単位のブロックに形成することができる。又は、複数のブロックは機能によってさらに大きい単位のブロックを形成することができる。即ち、本発明の技術思想はブロック図として図示された構成によって限定されない。
【００８３】
以上で本発明に対する実施形態を中心に本発明を説明した。但し、本発明が属する技術分野の特徴上、本発明が解決しようとする目的は本発明の要旨を含みながらも上の実施形態と他の形態に達成されることができる。したがって、上の実施形態は限定的なものではなく、説明の側面で理解しなければならない。即ち、本発明の要旨を包含しながら、本発明のような目的を達成できる技術思想は本発明の技術思想に含まれることと解釈されなければならない。
したがって、本発明の本質的な特性を逸脱しない範囲内で修正又は変形された技術思想は本発明が請求する保護範囲に含まれるものである。また、本発明の保護範囲は上の実施形態に限定されるものではない。
【符号の説明】
【００８４】
１００  システムスタック
１０５  アプリケーションスペース
１１０  カーネルスペース
１１５  物理的なハードウェア装置
１２０  入出力インターセプタロジック部
１２５  ストレージスタック
１３０  １つ以上のアプリケーション
１３２  アプリケーション
１３５  １つ以上の不揮発性ストレージ装置
１４０  ＳＳＤ
１４５  フラッシュメモリ
１５０  ＨＤＤ
１５５  入出力インターフェイス
１６０  臨時書込みホールディングバッファ
１６５  順序変更ロジック部
１７０  フラッシュ制御ロジック部
４０５  再マッピングメモリ部
５０５  マルチバッファホールディングキュー
７０５  スマートフォン
８０５  タブレット
９０５  ノート型コンピュータ
１００５  移動式電話機
１１０５  カメラ    
１２０５  デスクトップコンピュータ
１５００  コンピューティングシステム
１５０５  システムバス
１５１０  クロック
１５１５  ＲＡＭ
１５２０  ユーザインターフェイス
１５２５  モデム
１５３０  入出力インターセプタロジック部
１５３５  バッテリ
１５４０  ＳＳＤ
１５４５  メモリコントローラ
【図１】
0006594057.tif 000002
【図２】
0006594057.tif 000003
【図３】
0006594057.tif 000004
【図４】
0006594057.tif 000005
【図５】
0006594057.tif 000006
【図６】
0006594057.tif 000007
【図７】
0006594057.tif 000008
【図８】
0006594057.tif 000009
【図９】
0006594057.tif 000010
【図１０】
0006594057.tif 000011
【図１１】
0006594057.tif 000012
【図１２】
0006594057.tif 000013
【図１３】
0006594057.tif 000014
【図１４】
0006594057.tif 000015
【図１５】
0006594057.tif 000016