(58)【調査した分野】(Int.Cl.,DB名)
ストレージスタックと通信するように連結され、アプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトするように構成される入出力インターフェイスと、
前記入出力インターフェイスから前記複数の書込み入出力を受信し、前記複数の書込み入出力を格納するように構成される1つ以上の臨時書込みホールディングバッファと、
前記1つ以上の臨時書込みホールディングバッファと通信するように連結され、前記1つ以上の臨時書込みホールディングバッファに格納された前記複数の書込み入出力の順序を変更し、前記変更された順序の複数の書込み入出力を結合して結合された書込み入出力を生成するように構成される順序変更ロジック部と、
前記入出力インターフェイスから前記複数のフラッシュ要請を受信し、前記複数の書込み入出力を不揮発性ストレージ装置に格納せず、前記複数の書込み入出力に関する書込み入出力完了を前記アプリケーションに通知し、前記複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して前記結合された書込み入出力が前記不揮発性ストレージ装置に格納されるように構成されるフラッシュ制御ロジック部と、を含む入出力インターセプタロジック。
ストレージスタックと通信するように連結され、アプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトするように構成される入出力インターフェイスと、
前記入出力インターフェイスから前記複数の書込み入出力を受信し、前記複数の書込み入出力を格納するように構成される複数の臨時書込みホールディングバッファと、
前記複数の臨時書込みホールディングバッファをホールドするように構成されるマルチバッファホールディングキューと、
前記入出力インターフェイスから前記複数のフラッシュ要請を受信し、前記複数の書込み入出力を不揮発性ストレージ装置に格納されなく、前記複数の書込み入出力に関する書込み入出力完了を前記アプリケーションに通知し、前記複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して前記マルチバッファホールディングキューが前記複数の書込み入出力を前記複数の臨時書込みホールディングバッファから前記不揮発性ストレージ装置に伝達するように構成されるフラッシュ制御ロジック部と、を含む入出力インターセプタロジック。
前記複数の臨時書込みホールディングバッファは、第1臨時書込みホールディングバッファ、第2臨時書込みホールディングバッファ、第3臨時書込みホールディングバッファ、及び第4臨時書込みホールディングバッファを含み、
前記フラッシュ制御ロジック部は、
前記データ書込み入出力の第1サブセットが前記第1臨時書込みホールディングバッファに格納されるようにし、前記メタデータ書込み入出力の第1サブセットが前記第2臨時書込みホールディングバッファに格納されるようにし、前記データ書込み入出力の第2サブセットが前記第3臨時書込みホールディングバッファに格納されるようにし、前記メタデータ書込み入出力の第2サブセットが前記第4臨時書込みホールディングバッファに格納されるように構成される請求項12に記載の入出力インターセプタロジック。
前記複数の臨時書込みホールディングバッファは、第1臨時書込みホールディングバッファ、第2臨時書込みホールディングバッファ、第3臨時書込みホールディングバッファ、及び第4臨時書込みホールディングバッファを含み、
前記格納する段階は、
前記フラッシュ制御ロジック部によって、前記データ書込み入出力の第1サブセットが前記第1臨時書込みホールディングバッファに格納されるようにし、前記メタデータ書込み入出力の第1サブセットが前記第2臨時書込みホールディングバッファに格納されるようにし、前記データ書込み入出力の第2サブセットが前記第3臨時書込みホールディングバッファに格納されるようにし、前記メタデータ書込み入出力の第2サブセットが前記第4臨時書込みホールディングバッファに格納されるようにする段階を含む請求項24に記載の方法。
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のような問題を解決するために、フラッシュコントロールロジックを利用する入出力インターセプタロジックを設ける。本発明の実施形態で、フラッシュコントロールロジックはアプリケーション(Application)から発生する書込み入出力を不揮発性ストレージ装置に格納する前に書込み入出力完了をアプリケーションに通知することができる。書込み入出力はアプリケーションのフラッシュ要請の中で選択されたN番目のフラッシュ要請が発生する時まで臨時書込みホールディングバッファに累積され、1つの書込み入出力に結合することができる。フラッシュコントロールロジックは選択されたN番目のフラッシュ要請に応答して、結合された書込み入出力を不揮発性ストレージ装置に伝達することができる。
【課題を解決するための手段】
【0005】
本発明の一実施形態による入出力インターセプタロジックは、ストレージスタックと通信するように連結され、アプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトするように構成される入出力インターフェイスと、入出力インターフェイスから複数の書込み入出力を受信し、複数の書込み入出力を格納するように構成される1つ以上の臨時書込みホールディングバッファと、1つ以上の臨時書込みホールディングバッファと通信するように連結され、1つ以上の臨時書込みホールディングバッファに格納された複数の書込み入出力の順序を変更し、変更された順序の複数の書込み入出力を結合して、結合された書込み入出力を生成するように構成される順序変更ロジック部と、入出力インターフェイスから複数のフラッシュ要請を受信し、複数の書込み入出力を不揮発性ストレージ装置に格納せず、複数の書込み入出力に関する書込み入出力完了をアプリケーションに通知し、複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して結合された書込み入出力が不揮発性ストレージ装置に格納されるように構成されるフラッシュ制御ロジック部と、を含むことができる。
【0006】
実施形態として、選択されたフラッシュ要請は、複数のフラッシュ要請の中でN番目のフラッシュ要請に対応し、Nは、予め選択された正の整数値を有することができる。
実施形態として、選択されたフラッシュ要請は、複数のフラッシュ要請の中でN番目のフラッシュ要請に対応し、Nは、3以上の整数であってもよい。
実施形態として、入出力インターフェイスは、複数の書込み入出力の中でデータ書込み入出力の第1サブセット、複数のフラッシュ要請の中で、第1フラッシュ要請、複数の書込み入出力の中でメタデータ書込み入出力の第1サブセット、複数のフラッシュ要請の中で第2フラッシュ要請、複数の書込み入出力の中でデータ書込み入出力の第2サブセット、複数のフラッシュ要請の中で第3フラッシュ要請、複数の書込み入出力の中でメタデータ書込み入出力の第2サブセット、及び複数のフラッシュ要請の中で選択されたフラッシュ要請をインターセプトするように構成することができる。
【0007】
実施形態として、順序変更ロジック部は、データ書込み入出力の第1サブセット、メタデータ書込み入出力の第1サブセット、データ書込み入出力の第2サブセット、及びメタデータ書込み入出力の第2サブセットに含まれる複数の書込み入出力の順序を変更して複数の書込み入出力と関連する論理ブロックアドレスを昇順又は降順に配列し、データ書込み入出力の第1サブセット、メタデータ書込み入出力の第1サブセット、データ書込み入出力の第2サブセット、及びメタデータ書込み入出力の第2サブセットに含まれる変更された順序の複数の書込み入出力を結合して結合された書込み入出力を生成するように構成することができる。
【0008】
実施形態として、順序変更ロジック部は、複数の書込み入出力、ヘッダ、及びフッタを再マッピングメモリ部にコピーして結合された書込み入出力を生成するように構成され、結合された書込み入出力に含まれる複数の書込み入出力に各々対応する複数の論理ブロックアドレスは、昇順又は降順に配列され、結合された書込み入出力に含まれる複数の書込み入出力の各々は、再マッピングメモリ部で物理的に互いに隣接することができる。
【0009】
実施形態として、フラッシュ制御ロジック部は、選択されたフラッシュ要請に応答して、各々が物理的に互いに隣接する複数の書込み入出力を含む結合された書込み入出力が不揮発性ストレージ装置に格納されるように構成することができる。
実施形態として、順序変更ロジック部は、複数の書込み入出力に含まれるランダムの書込み入出力を順次的な書込み入出力に変換するように構成することができる。
【0010】
本発明の他の実施形態による入出力インターセプタロジックは、ストレージスタックと通信するように連結され、アプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトするように構成される入出力インターフェイスと、入出力インターフェイスから複数の書込み入出力を受信し、複数の書込み入出力を格納するように構成される複数の臨時書込みホールディングバッファと、複数の臨時書込みホールディングバッファをホールドするように構成されるマルチバッファホールディングキューと、入出力インターフェイスから複数のフラッシュ要請を受信し、複数の書込み入出力を不揮発性ストレージ装置に格納せず、複数の書込み入出力に関する書込み入出力完了をアプリケーションに通知し、複数のフラッシュ要請の中で選択されたフラッシュ要請に応答してマルチバッファホールディングキューが複数の書込み入出力を複数の臨時書込みホールディングバッファから不揮発性ストレージ装置に伝達するように構成されるフラッシュ制御ロジック部と、を含むことができる。
【0011】
実施形態として、入出力インターフェイスは、複数の書込み入出力の中でデータ書込み入出力の第1サブセット、複数のフラッシュ要請の中で第1フラッシュ要請、複数の書込み入出力の中でメタデータ書込み入出力の第1サブセット、複数のフラッシュ要請の中で第2フラッシュ要請、複数の書込み入出力の中でデータ書込み入出力の第2サブセット、複数のフラッシュ要請の中で第3フラッシュ要請、複数の書込み入出力の中でメタデータ書込み入出力の第2サブセット、及び複数のフラッシュ要請の中で選択されたフラッシュ要請をインターセプトするように構成することができる。
【0012】
実施形態として、複数の臨時書込みホールディングバッファは、第1臨時書込みホールディングバッファ、第2臨時書込みホールディングバッファ、第3臨時書込みホールディングバッファ、及び第4臨時書込みホールディングバッファを含み、フラッシュ制御ロジック部は、データ書込み入出力の第1サブセットが第1臨時書込みホールディングバッファに格納されるようにし、メタデータ書込み入出力の第1サブセットが第2臨時書込みホールディングバッファに格納されるようにし、データ書込み入出力の第2サブセットが第3臨時書込みホールディングバッファに格納されるようにし、メタデータ書込み入出力の第2サブセットが第4臨時書込みホールディングバッファに格納されるように構成することができる。
【0013】
本発明のその他の実施形態にしたがって入出力インターセプタロジックを利用してアプリケーションから入出力をインターセプトするためにコンピュータで具現される方法は、入出力インターセプタロジックの入出力インターフェイスによって、アプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトする段階と、入出力インターフェイスによってインターセプトされた複数の書込み入出力を1つ以上の臨時書込みホールディングバッファに格納する段階と、入出力インターセプタロジックの順序変更ロジック部によって、1つ以上の臨時書込みホールディングバッファに格納された複数の書込み入出力の順序を変更する段階と、順序変更ロジック部によって、変更された順序の複数の書込み入出力を結合して結合された書込み入出力を生成する段階と、入出力インターセプタロジックのフラッシュ制御ロジック部によって、入出力インターフェイスから複数のフラッシュ要請を受信する段階と、複数の書込み入出力を不揮発性ストレージ装置に格納せず、フラッシュ制御ロジック部によって、複数の書込み入出力に関する書込み入出力完了をアプリケーションに通知する段階と、複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して、フラッシュ制御ロジック部によって、結合された書込み入出力が不揮発性ストレージ装置に格納されるようにする段階と、を含むことができる。
【0014】
実施形態として、インターセプトする段階は、入出力インターフェイスによって、複数の書込み入出力の中でデータ書込み入出力の第1サブセット、複数のフラッシュ要請の中で第1フラッシュ要請、複数の書込み入出力の中でメタデータ書込み入出力の第1サブセット、複数のフラッシュ要請の中で第2フラッシュ要請、複数の書込み入出力の中でデータ書込み入出力の第2サブセット、複数のフラッシュ要請の中で第3フラッシュ要請、複数の書込み入出力の中でメタデータ書込み入出力の第2サブセット、及び複数のフラッシュ要請の中で選択されたフラッシュ要請をインターセプトする段階を含むことができる。
【0015】
実施形態として、変更する段階は、順序変更ロジック部によって、データ書込み入出力の第1サブセット、メタデータ書込み入出力の第1サブセット、データ書込み入出力の第2サブセット、及びメタデータ書込み入出力の第2サブセットに含まれる複数の書込み入出力の順序を変更する段階を含むことができる。さらに、生成する段階は、順序変更ロジック部によって、データ書込み入出力の第1サブセット、メタデータ書込み入出力の第1サブセット、データ書込み入出力の第2サブセット、及びメタデータ書込み入出力の第2サブセットに含まれる変更された順序の複数の書込み入出力を結合して結合された書込み入出力を生成することができる。
【0016】
実施形態として、生成する段階は、順序変更ロジック部によって、複数の書込み入出力、ヘッダ、及びフッタを再マッピングメモリ部にコピーして結合された書込み入出力を生成する段階を含み、結合された書込み入出力に含まれる複数の書込み入出力に各々対応する複数の論理ブロックアドレスは、昇順又は降順に配列され、結合された書込み入出力に含まれる複数の書込み入出力の各々は、再マッピングメモリ部で物理的に互いに隣接することができる。
実施形態として、格納されるようにする段階は、選択されたフラッシュ要請に応答して、フラッシュ制御ロジック部によって、各々が物理的に互いに隣接する複数の書込み入出力を含む結合された書込み入出力が不揮発性ストレージ装置に格納されるようにする段階を含むことができる。
【0017】
本発明のその他の実施形態による非一時的にコンピュータで読み出される格納媒体は、コンピューティング装置及び入出力インターセプタロジックを利用して処理される命令語を格納することができる。 格納された命令語は、入出力インターセプタロジックの入出力インターフェイスによって、コンピューティング装置で実行されるアプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトする段階と、 入出力インターフェイスによってインターセプトされた複数の書込み入出力を1つ以上の臨時書込みホールディングバッファに格納する段階と、 入出力インターセプタロジックの順序変更ロジック部によって、1つ以上の臨時書込みホールディングバッファに格納された複数の書込み入出力の順序を変更する段階と、順序変更ロジック部によって、変更された順序の複数の書込み入出力を結合して結合された書込み入出力を生成する段階と、 入出力インターセプタロジックのフラッシュ制御ロジック部によって、入出力インターフェイスから複数のフラッシュ要請を受信する段階と、 複数の書込み入出力を不揮発性ストレージ装置に格納せず、フラッシュ制御ロジック部によって、複数の書込み入出力に関する書込み入出力完了をアプリケーションに通知する段階と、複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して、フラッシュ制御ロジック部によって、結合された書込み入出力が不揮発性ストレージ装置に格納されるようにする段階と、をコンピューティング装置で実行するように構成することができる。
【0018】
本発明のその他の実施形態にしたがって入出力インターセプタロジックを利用してアプリケーションから入出力をインターセプトするためにコンピュータで具現される方法は、入出力インターセプタロジックの入出力インターフェイスによって、アプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトする段階と、入出力インターフェイスによってインターセプトされた複数の書込み入出力を複数の臨時書込みホールディングバッファに格納する段階と、入出力インターセプタロジックのマルチバッファホールディングキューによって、複数の臨時書込みホールディングバッファをホールドする段階と、入出力インターセプタロジックのフラッシュ制御ロジック部によって、入出力インターフェイスから複数のフラッシュ要請を受信する段階と、複数の書込み入出力を不揮発性ストレージ装置に格納せず、フラッシュ制御ロジック部によって、複数の書込み入出力に関する書込み入出力完了をアプリケーションに通知する段階と、複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して、フラッシュ制御ロジック部によって、マルチバッファホールディングキューが複数の書込み入出力を複数の臨時書込みホールディングバッファから不揮発性ストレージ装置に伝達するようにする段階と、を含むことができる。
【0019】
実施形態として、インターセプトする段階は、入出力インターフェイスによって、複数の書込み入出力の中でデータ書込み入出力の第1サブセット、複数のフラッシュ要請の中で第1フラッシュ要請、複数の書込み入出力の中でメタデータ書込み入出力の第1サブセット、複数のフラッシュ要請の中で第2フラッシュ要請、複数の書込み入出力の中でデータ書込み入出力の第2サブセット、複数のフラッシュ要請の中で第3フラッシュ要請、複数の書込み入出力の中でメタデータ書込み入出力の第2サブセット、及び複数のフラッシュ要請の中で選択されたフラッシュ要請をインターセプトする段階を含むことができる。
【0020】
実施形態として、複数の臨時書込みホールディングバッファは、第1臨時書込みホールディングバッファ、第2臨時書込みホールディングバッファ、第3臨時書込みホールディングバッファ、及び第4臨時書込みホールディングバッファを含むことができる。さらに格納する段階は、フラッシュ制御ロジック部によって、データ書込み入出力の第1サブセットが第1臨時書込みホールディングバッファに格納されるようにし、メタデータ書込み入出力の第1サブセットが第2臨時書込みホールディングバッファに格納されるようにし、データ書込み入出力の第2サブセットが第3臨時書込みホールディングバッファに格納されるようにし、メタデータ書込み入出力の第2サブセットが第4臨時書込みホールディングバッファに格納されるようにする段階を含むことができる。
【0021】
本発明のその他の実施形態による非一時的にコンピュータで読み出される格納媒体は、コンピューティング装置及び入出力インターセプタロジックを利用して処理される命令語を格納することができる。格納された命令語は、入出力インターセプタロジックの入出力インターフェイスによって、コンピューティング装置で実行されるアプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトする段階と、 入出力インターフェイスによってインターセプトされた複数の書込み入出力を複数の臨時書込みホールディングバッファに格納する段階と、入出力インターセプタロジックのマルチバッファホールディングキューによって、複数の臨時書込みホールディングバッファをホールドする段階と、入出力インターセプタロジックのフラッシュ制御ロジック部によって、入出力インターフェイスから複数のフラッシュ要請を受信する段階と、複数の書込み入出力を不揮発性ストレージ装置に格納せず、フラッシュ制御ロジック部によって、複数の書込み入出力に関する書込み入出力完了をアプリケーションに通知する段階と、複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して、フラッシュ制御ロジック部によって、マルチバッファホールディングキューが複数の書込み入出力を複数の臨時書込みホールディングバッファから不揮発性ストレージ装置に伝達するようにする段階と、をコンピューティング装置で実行するように構成することができる。
【0022】
本発明のその他の実施形態によるシステムはアプリケーションスペース、カーネルスペース、及び1つ以上の物理的なハードウェア装置を含む移動式装置、及びカーネルスペースで動作するように構成される入出力インターセプタロジック部を含むことができる。この実施形態で、入出力インターセプタロジックは、ストレージスタックと通信するように連結され、アプリケーションスペースのアプリケーションから複数の書込み入出力及び複数のフラッシュ要請をインターセプトするように構成される入出力インターフェイスと、入出力インターフェイスから複数の書込み入出力を受信し、複数の書込み入出力を格納するように構成される1つ以上の臨時書込みホールディングバッファと、1つ以上の臨時書込みホールディングバッファと通信するように連結され、1つ以上の臨時書込みホールディングバッファに格納された複数の書込み入出力の順序を変更し変更された順序の複数の書込み入出力を結合して、結合された書込み入出力を生成するように構成される順序変更ロジック部と、入出力インターフェイスから複数のフラッシュ要請を受信し、複数の書込み入出力を1つ以上の物理的なハードウェア装置に含まれる不揮発性ストレージ装置に格納せず、複数の書込み入出力に関する書込み入出力完了を通知し、複数のフラッシュ要請の中で選択されたフラッシュ要請に応答して結合された書込み入出力が不揮発性ストレージ装置に格納されるように構成されるフラッシュ制御ロジック部と、を含むことができる。
【発明の効果】
【0023】
本発明の実施形態によれば、個別的な書込み入出力の各々が独立的に不揮発性ストレージ装置に転送されることによって発生するオーバーヘッド(Overhead)を減らし、データ格納の性能を向上させることができる。さらに、データがさらに効率的に書き込まれるので、電力消費(例えば、移動式装置に含まれるバッテリの消費)を減少させることができる。
【発明を実施するための形態】
【0025】
前述した特性及び以下詳細な説明は全てが本発明の説明及び理解を助けるための例示的な事項である。即ち、本発明はこのような実施形態に限定されず、他の形態に具体化することができる。以下の実施形態は単なる本発明を完全に開示するための例示に過ぎず、本発明が属する技術分野の通常の技術者に本発明を伝達するための説明である。したがって、本発明の構成要素を具現するための方法が様々である場合には、これらの方法の中で特定なこと又はこれと同一性がある範囲内で、何らかのことであっても本発明の具現が可能であることを明確にする必要がある。
【0026】
本明細書で所定の構成が特定要素を含むと言及されている場合又は所定の過程が特定段階を含むと言及された場合は、その他の要素又はその他の段階をさらに含むことができることを意味する。即ち、本明細書で使用される用語は特定実施形態を説明するためのものであり、本発明の概念を限定するためのものではない。さらに、発明の理解を助けるために説明した例示はそれの相補的な実施形態をも含む。
【0027】
本明細書で使用される用語は本発明が属する技術分野の通常の技術者が一般的に理解する意味を有する。普遍的に使用される用語は本明細書の脈絡にしたがって一貫的な意味として解釈されなければならない。また本明細書で使用される用語は、その意味が明確に定義された場合でなければ、あまりにも理想的であるか、或いは形式的な意味として解釈してはならない。
【0028】
本発明の実施形態はARMプロセッサのようなプロセッサによって具現することができる。他の種類のプロセッサ又はASICs(Application Specific Integrated Circuits)及び/又はファームウェア(Firmware)もやはり本発明の実施形態を具現するために利用することができる。本発明の実施形態はスマートフォン、タブレット、ノート型コンピュータ等のような多様な移動式装置、又はデスクトップコンピュータ、ルータ等のような多様な固定式の装置のプロセッサ及び/又はメモリモジュール内に具現することができる。以下、添付された図面を通じて本発明の実施形態を説明する。
【0029】
図1は本発明の実施形態によるシステムスタック(System Stack)を示すブロック図である。システムスタック100はアプリケーションスペース(Application Space)105、カーネルスペース110(Kernal Space)及び物理的なハードウェア装置115を含む。本発明の一実施形態によれば、カーネルスペース110内で入出力インターセプタ(Interceptor)ロジック部120が動作する。他の実施形態で、入出力インターセプタロジック部120はアプリケーションスペース105内で動作するか、或いは他の適当なコンピューティング装置の他の部分又はスペースに内装されて動作する。システムスタック100は、例として、スマートフォン、タブレット、カメラ、ラップトップ、コンピュータ等のような移動式の装置に含まれるが、これの詳細は後述する。
【0030】
図1に示したように、システムスタック100はストレージスタック(Storage Stack)125を含む。ストレージスタック125はアプリケーションスペース105の1つ以上のアプリケーション130(例えば、アプリケーション132)と物理的なハードウェア装置115の1つ以上の不揮発性ストレージ装置135との間で入出力の送信及び受信を可能にする。1つ以上の不揮発性ストレージ装置135はSSD(Solid State Drive)140、フラッシュメモリ(Flash Memory)145、HDD(Hard Disk Drive)150等を含む。
【0031】
入出力インターセプタロジック部120は入出力インターフェイス(Input/Output Interface)155、1つ以上の臨時書込みホールディングバッファ(Temporary Write Holding Buffers)160、順序変更(Re−order)ロジック部165、及びフラッシュ(Flush)制御ロジック部170を含む。入出力インターフェイス155はストレージスタック125と連結されて通信する。入出力インターセプタロジック部120はフラッシュ要請を含んで、アプリケーション130(例えば、アプリケーション132)から発生するすべての入出力をインターセプトする。例として、入出力インターフェイス155はアプリケーション130(例えば、アプリケーション132)から発生する書込み入出力、読出し入出力、及びフラッシュ要請をインターセプトする。
【0032】
1つ以上の臨時書込みホールディングバッファ160は入出力インターフェイス155から書込み入出力を受信し、その書込み入出力を格納する。1つ以上の臨時書込みホールディングバッファ160はシステムメモリの余分の空間から予め割当される。
順序変更ロジック部165は1つ以上の臨時書込みホールディングバッファ160と連結されて通信する。順序変更ロジック部165は1つ以上の臨時書込みホールディングバッファ160に格納された書込み入出力の順序を変更する。順序変更ロジック部165は変更された順序の書込み入出力を結合して、結合された書込み入出力を生成するが、これの詳細は後述する。
【0033】
フラッシュ制御ロジック部170は入出力インターフェイス155からフラッシュ要請を受信する。書込み入出力が1つ以上の不揮発性ストレージ装置135の中でどこかに実際に書き込まれなくとも、フラッシュ制御ロジック部170は書込み入出力に関する書込み入出力完了をアプリケーション130(例えば、アプリケーション132)に通知する。実際には書込み入出力が特定時点で1つ以上の不揮発性ストレージ装置135に伝達されないうちに、アプリケーション132は書込み入出力が完了されたと認識する。言い換えれば、書込み入出力が1つ以上の不揮発性ストレージ装置135の中のどこかに実際に書き込まれる前に、フラッシュ制御ロジック部170は書込み入出力に関する書込み入出力完了をアプリケーション132に通知する。フラッシュ制御ロジック部170はフラッシュ要請の中で選択されたN番目のフラッシュ要請に応答して(又は、他の基準にしたがって)、結合された書込み入出力が1つ以上の不揮発性ストレージ装置135に書き込まれるようにするが、これの詳細は後述する。
【0034】
図2は
図1のシステムスタックに含まれる様々な構成要素を示す概念図である。
図2は本発明の実施形態にしたがって時間の流れに対して発生する一連のイベントを示す。
入出力インターフェイス155は、例として、アプリケーション132から発生するデータ書込み入出力D1(即ち、W0
1乃至Wn
3)、メタデータ(Metadata)書込み入出力M1(即ち、W0
4乃至Wn
6)、データ書込み入出力D2(即ち、W0
7乃至Wn
9)、メタデータ書込み入出力M2(即ち、W0
10乃至Wn
12)、及びフラッシュ要請F0、F1、F2、F3、Fnを含む書込み入出力をインターセプトする。1つ以上の臨時書込みホールディングバッファ160は入出力インターフェイス155から書込み入出力を受信し、その書込み入出力を格納する。1つ以上の臨時書込みホールディングバッファ160にデータが格納されている間に、アプリケーション132から読出し入出力を受信した場合、入出力インターセプタロジック部120は1つ以上の臨時書込みホールディングバッファ160に格納されているデータのコピーを利用して読出し入出力要請を処理するか、又は再マッピングされた(Re−mapped)メモリ位置を利用するが、これの詳細は後述する。
【0035】
順序変更ロジック部165は1つ以上の臨時書込みホールディングバッファ160に格納された書込み入出力の順序を変更するが、これの詳細は後述する。順序変更ロジック部165はランダムの(Random)書込み入出力を順次的な(Sequential)書込み入出力に変換する。順序変更ロジック部165は変更された順序の書込み入出力(例えば、D1、M1、D2、及びM2)を結合して、結合された書込み入出力CWを生成する。
【0036】
フラッシュ制御ロジック部170は入出力インターフェイス155からフラッシュ要請F0、F1、F2、F3、Fnを受信する。書込み入出力が1つ以上の不揮発性ストレージ装置135の中でどこかに実際に書き込まれなくとも、フラッシュ制御ロジック部170は書込み入出力に対応する完了メッセージCM0、CM1、CM2、CM3、CMnを利用して書込み入出力完了をアプリケーション132に通知する。言い換えれば、フラッシュ制御ロジック部170はフラッシュ要請の各々に対して概ね直ちに応答することができる。したがって、アプリケーション132は、不揮発性ストレージ装置135の中の1つに対してフラッシュ要請が実際に完了されるのを待つ必要がなく、追加の書込み入出力を引き続き伝送することができる。したがって、アプリケーション132の性能を顕著に向上させることができる。言い換えれば、書込み入出力が1つ以上の不揮発性ストレージ装置135の中でどこかに実際に書き込まれる前に、フラッシュ制御ロジック部170は書込み入出力に対応する完了メッセージCM0、CM1、CM2、CM3、CMnを利用して書込み入出力に関する書込み入出力完了をアプリケーション132に通知する。
【0037】
書込み入出力が1つ以上の臨時書込みホールディングバッファ160に格納されるので、フラッシュ制御ロジック部170は時間が僅かに過ぎた後に、結合された書込み入出力CWが1つ以上の不揮発性ストレージ装置135に伝達されたフラッシュCFnに実際に書き込まれるようにすることができる。言い換えれば、フラッシュ制御ロジック部170は選択的なフラッシュ技法を具現することができる。伝達されたフラッシュCFnは同期式の(Synchronous)動作である。
【0038】
結合された書込み入出力CWの大きさは個別的な書込み入出力の大きさより大きいので、個別的な書込み入出力の各々が独立的に不揮発性ストレージ装置135に伝送されることにより発生するオーバーヘッド(Overhead)を減らすことによって、ストレージの性能が向上する。さらに、書込み入出力が不揮発性ストレージ装置135より顕著に高い性能(即ち、高い処理量及び低いレイテンシ(Latency))を有するシステムメモリで完了させることができるので、アプリケーションの性能が顕著に向上する。
【0039】
その上に、結合された書込み入出力CWの伝達されたフラッシュCFnはフラッシュバウンダリ(Flush Boundary)Fnと共に又はフラッシュバウンダリFnより僅かに後に(例えば、選択されたN番目のフラッシュFnに応答して)発生するので、データは一貫性を維持することができる。急な(Sudden)電力損失が発生してデータが損失しても、不揮発性ストレージ装置135のデータは一貫性を維持することができる。アプリケーションはデータの損失を容認することができる。なぜならば、アプリケーションは不揮発性ストレージ装置135に格納されたデータを読み出すことができ、その格納されたデータに基づいてアプリケーションの状態を複旧するか、或は異なる方式にロールバック(Roll Back)できるためである。
【0040】
しかし、データの非一貫性(Inconsistency)は普通アアプリケーションによって容認されず、予測し難い行為を発生させるか、甚だしくはアプリケーションが動作できなくなるようにする可能性がある。本発明の実施形態によれば、伝達されたフラッシュ(例えば、CF0乃至CFn)の間に書込み入出力を累積した後、結合された書込み入出力のデータを不揮発性ストレージ装置135にフラッシュすることによって、データの一貫性が保障される。
【0041】
1つ以上の不揮発性ストレージ装置135はフラッシュ確認メッセージCFM0、CFMnを返還(Return)する。フラッシュ確認メッセージCFM0、CFMnは入出力インターセプタロジック部120に提供されて、不揮発性ストレージ装置135に伝達されたフラッシュCF0、CFnの各々のトランザクション(Transaction)が完了したことを確認するために利用される。そのため、同期式のフラッシュ動作を提供することができる。言い換えれば、特定の同期式のフラッシュ動作の間に、書込み入出力D1、M1、D2、M2及びその特定のフラッシュ動作を構成せず、伝達されないフラッシュ要請F1、F2、F3はその特定のフラッシュ動作に繋がる他の同期式のフラッシュ動作が遂行される前まで累積されるが、不揮発性ストレージ装置135に実際にフラッシュされない。
【0042】
ある時点で急な電力損失が発生しても、データは一貫性を維持することができる。言い換えれば、データと対をなすメタデータがいつも1つ以上の不揮発性ストレージ装置135に格納されている。言い換えれば、メタデータがそれに対応するデータ無しで1つ以上の不揮発性ストレージ装置135に格納される場合は発生しない。結果的に、本発明の実施形態によれば、アプリケーション及びストレージスタックの性能を顕著に向上させながらも、データの一貫性を維持させることができる。
【0043】
さらに、元の伝達されるフラッシュ要請(例えば、F1、F2、及びF3)が伝達されないフラッシュ要請に変換される可能性があるので、書込み入出力の順序を変更するための機会の幅が拡張される。普通、書込み入出力の順序はフラッシュバウンダリの間(例えば、F0とF1との間)のみで変更される。しかし、本発明の実施形態で、普通のフラッシュ要請(例えば、F1、F2、及びF3)は伝達されないフラッシュ要請に変更され、書込み入出力の順序は伝達されないフラッシュ要請のバウンダリに亘って(即ち、F1、F2、及びF3に亘ってF0とFnとの間で)変更される。実際に伝達されるフラッシュ(例えば、CF0及びCFn)は拡張された時間の幅で発生するためである。
【0044】
言い換えれば、2つの伝達されたフラッシュ(例えば、CF0及びCFn)の間の書込み入出力の数はさらに短い時間の幅で頻繁に発生する2つの伝達されないフラッシュ要請の間(例えば、F0とF1との間、F1とF2との間、F2とF3との間等)の書込み入出力の数より多い。書込み入出力の順序を変更する機会の幅を拡張することによって、性能をさらに向上させることができる。なぜならば、書込み入出力が不揮発性ストレージ装置135にさらに効率的に書き込まれるように、及びさらに大きい大きさの1つの書込み入出力に結合できるように、書込み入出力の順序が変更できるためである。
【0045】
フラッシュ制御ロジック部170はフラッシュ要請の中で選択されたN番目のフラッシュ要請(例えば、Fn)に応答して結合された書込み入出力CWが1つ以上の不揮発性ストレージ装置135に書き込まれるようにすることができる。例として、選択されるN番目のフラッシュ要請は予め定まられ、Nは予め定まれた正の整数である。例として、Nは3以上の整数である。例として、Nは4、5、8、10、16、20、32、64、100等のような整数である。Nは正の整数の中で適当ないずれかの値に設定されてもよい。伝達されたフラッシュCFnが発生する前に累積されたN個のフラッシュ要請の数は動作の前に予め定まられる。又は、伝達されたフラッシュCFnが発生する前に累積されたN個のフラッシュ要請の数は使用者又はシステム管理者によって修正されるように設定可能である値を有する。
【0046】
又は、フラッシュ制御ロジック部170は累積されたデータの閾値(Threshold Amount)に応答して伝達されたフラッシュCFnが結合された書込み入出力CWを1つ以上の不揮発性ストレージ装置135に書き込まれるようにすることができる。言い換えれば、累積されたデータの量が閾値に到達した場合、フラッシュ制御ロジック部170は伝達されるフラッシュCFnを発生させることができる。
【0047】
又は、フラッシュ制御ロジック部170は設定された時間の満了に応答して伝達されたフラッシュCFnが結合された書込み入出力CWを1つ以上の不揮発性ストレージ装置135に書き込むようにすることができる。設定された時間は、例として、5秒、10秒、30秒、60秒等のように秒単位で設定されてもよい。これは急な電力損失が発生した時、データが損失される可能性を減少させながらも、性能を向上させデータの一貫性を維持させるようにする。
【0048】
又は、フラッシュ制御ロジック部170は累積されたデータの閾値に関する第1基準(Criteria)の満足及びそれに続いて選択されたN番目のフラッシュ要請に関する第2基準の満足に応答して伝達されたフラッシュCFnが結合された書込み入出力CWを1つ以上の不揮発性ストレージ装置135に書き込むようにすることができる。言い換えれば、2つの基準が全て満足された場合、伝達されたフラッシュCFnが発生することができる。
【0049】
入出力インターセプタロジック部120の入出力インターフェイス155は、データ書込み入出力の第1サブセットD1、第1フラッシュ要請F1、メタデータ書込み入出力の第1サブセットM1、第2フラッシュ要請F2、データ書込み入出力の第2サブセットD2、第3フラッシュ要請F3、メタデータ書込み入出力の第2サブセットM2、及び選択されたN番目のフラッシュ要請Fnを受信することができる。
【0050】
順序変更ロジック部165はデータ書込み入出力の第1サブセットD1、メタデータ書込み入出力の第1サブセットM1、データ書込み入出力の第2サブセットD2、及びメタデータ書込み入出力の第2サブセットM2に含まれる書込み入出力の順序を変更することができる。言い換えれば、順序変更ロジック部165は各々のサブセットに含まれる書込み入出力の順序を変更するか、或は様々なサブセットに亘って書込み入出力の順序を変更することができる。順序変更ロジック部165はデータ書込み入出力の第1サブセットD1、メタデータ書込み入出力の第1サブセットM1、データ書込み入出力の第2サブセットD2、及びメタデータ書込み入出力の第2サブセットM2を結合して結合された書込み入出力CWを生成することができる。順序変更ロジック部165は結合された書込み入出力225にヘッダ(Header;HDR)及びフッタ(Footer;FTR)を挿入するが、これの詳細は後述する。
【0051】
図3は
図1及び
図2の入出力インターセプタロジック部に含まれる順序変更ロジック部及び臨時書込みホールディングバッファを示す概念図である。上から説明されたことのように、順序変更ロジック部165は各々のサブセットに含まれる書込み入出力の順序を変更するか、或は様々なサブセットに亘って書込み入出力の順序を変更することができる。
【0052】
図3の実施形態で、書込み入出力W0
1は論理ブロックアドレス(Logical Block Address、以下、“LBA”)6に対応し、書込み入出力W1
2はLBA2に対応し、書込み入出力Wn
3はLBA9に対応し、書込み入出力W0
4はLBA7に対応し、書込み入出力W1
5はLBA10に対応し、書込み入出力Wn
6はLBA11に対応し、書込み入出力W0
7はLBA5に対応し、書込み入出力W1
8はLBA4に対応し、書込み入出力Wn
9はLBA8に対応し、書込み入出力W0
10はLBA2に対応し、書込み入出力W1
11はLBA3に対応し、書込み入出力Wn1
12はLBA1に対応する。LBAは複数の書込み入出力が1つ以上の不揮発性ストレージ装置135に格納された論理的な位置に各々対応する。
【0053】
順序変更ロジック部165は様々な書込み入出力の順序を変更することができる。したがって、書込み入出力は結合された書込み入出力CWの書込み入出力に各々対応するLBAが昇順又は降順に整列されるように結合された書込み入出力CWに配列される。例として、書込み入出力は最初にW0
1/LBA6、W1
2/LBA12、Wn
3/LBA9、W0
4/LBA7、W1
5/LBA10、Wn
6/LBA11、W0
7/LBA5、W1
8/LBA4、Wn
9/LBA8、W0
10/LBA2、W1
11/LBA3、Wn
12/LBA1の順に提供される。上のLBA値は単なる例示であり、本発明を制限するためのものではない。
【0054】
順序変更ロジック部165は書込み入出力が臨時書込みホールディングバッファ160内でWn
12/LBA1、W0
10/LBA2、W1
11/LBA3、W1
8/LBA4、W0
7/LBA5、W0
1/LBA6、W0
4/LBA7、Wn
9/LBA8、Wn
3/LBA9、W1
5/LBA10、Wn
6/LBA11、W1
2/LBA12の順序を有するように書込み入出力の順序を変更することができる。このような方式に、LBAが昇順又は降順に配列される。したがって、結合された書込み入出力CWを1つ以上の不揮発性ストレージ装置135(
図1及び
図2参照)にさらに効率的に書き込むことができる。
【0055】
図4は
図1及び
図2の入出力インターセプタロジック部に含まれる順序変更ロジック部、及び再マッピングメモリ部を示す概念図である。再マッピングメモリ部405はシステムメモリから割当されるか、或いは本発明の実施形態による入出力インターセプタロジック部120(
図1参照)内に割当される。一般的にLBAは広く分散されるので、LBAを昇順、降順、又は連続されたグループに再整列することは単純ではない。例として、書込み入出力は最初にW0
1/LBA50、W1
2/LBA11、Wn
3/LBA18、W0
4/LBA65、W1
5/LBA99、Wn
6/LBA10、W0
7/LBA41、W1
8/LBA34、Wn
9/LBA77、W0
10/LBA19、W1
11/LBA55、Wn
12/LBA100の順に提供される。上のLBA値は単なる例示であり、本発明を制限するためのものではない。
【0056】
順序変更ロジック部165はヘッダHDR及びフッタFTRを前後に連結し、書込み入出力を再マッピングメモリ部405に再マッピングすることによって書込み入出力の順序を変更する。言い換えれば、順序変更ロジック部165は書込み入出力、ヘッダHDR、及びフッタFTRをコピーして結合された書込み入出力CWを生成する。したがって、結合された書込み入出力CWの様々な書込み入出力に各々対応する様々なLBAは昇順又は降順に配列される。さらに、結合された書込み入出力CWの書込み入出力の各々は再マッピングメモリ部405で他の書込み入出力と物理的に隣接するように配列される。順序変更ロジック部165はランダムの書込み入出力を順次的な書込み入出力に変換する。
【0057】
例として、再マッピングメモリ部405の結合された書込み入出力CWはヘッダ/LBA0、Wn
12/LBA1、W0
10/LBA2、W1
11/LBA3、W1
8/LBA4、W0
7/LBA5、W0
1/LBA6、W0
4/LBA7、Wn
9/LBA8、Wn
3/LBA9、W1
5/LBA10、Wn
6/LBA11、W1
2/LBA12、フッタ/LBA13の順に再マッピングされて配列された書込み入出力を含む。このような方式に、LBAが連続される形式に配列される。したがって、結合された書込み入出力CWを1つ以上の不揮発性ストレージ装置135(
図1及び
図2参照)にさらに効率的に書き込むことができる。
【0058】
幾つかの実施形態で、再マッピングメモリ部405は入出力インターセプタロジック部120のみによって認識される。ヘッダHDR及び/又はフッタFTRは再マッピング変換情報を含む。ヘッダHDR及び/又はフッタFTRは結合された書込み入出力CWが有効であることを示す情報を含む。1つ以上の不揮発性ストレージ装置135にヘッダHDRを含むが、フッタFTRを含まなく、結合された書込み入出力CWは有効でないものとして取り扱われる。このような場合は伝達されたフラッシュCFnに関する動作が遂行される間に、急な電力損失が発生する場合が生ずることがある。このような場合、結合された書込み入出力CWは有効でないと決定され、廃棄(Discard)される。有効な結合された書込み入出力CWを読出し入出力動作で読み出すために有効な結合された書込み入出力CWが1つ以上の不揮発性ストレージ装置135から読み出される場合、ヘッダHDR及び/又はフッタFTRに格納された再マッピング変換情報は予想されるデータ及び/又はLBA情報をアプリケーション132に提供するために入出力インターセプタロジック部120によって利用される。
【0059】
フラッシュ制御ロジック部170は選択されたN番目のフラッシュ要請又は他の基準に応答して、物理的に連続する結合された書込み入出力CWが1つ以上の不揮発性ストレージ装置135に書き込まれるようにする。
図5は
図1及び
図2の入出力インターセプタロジック部に含まれるフラッシュ制御ロジック部及び臨時書込みホールディングバッファを示す概念図である。
【0060】
順序変更ロジック部165は入出力インターセプタロジック部120に含まれる必要はない。代わりに、実施形態として、フラッシュ制御ロジック部170がバッファ0、バッファ1、バッファ2、及びバッファNのような複数の臨時書込みホールディングバッファ160を管理する。臨時書込みホールディングバッファ160は
図1及び
図2の入出力インターフェイス155から書込み入出力を受信し、その書込み入出力を格納する。マルチバッファホールディングキュー(Multi−Buffer Holding Queue)505は臨時書込みホールディングバッファをホールド(Hold)する。
【0061】
フラッシュ制御ロジック部170は入出力インターフェイス155から複数のフラッシュ要請(例えば、F0、F1、F2等)を受信する。書込み入出力が
図1及び
図2の1つ以上の不揮発性ストレージ装置135に書き込まれなくとも、フラッシュ制御ロジック部170は書込み入出力に関する入出力完了のメッセージ(例えば、
図2のCM0、CM1、CM2、CM3、及びCMn)をアプリケーション(例えば、
図1及び
図2のアプリケーション132)に伝達する。言い換えれば、書込み入出力が1つ以上の不揮発性ストレージ装置135の中でどこかに実際に書き込まれる前に、フラッシュ制御ロジック部170は書込み入出力に関する書込み入出力完了をアプリケーション132に通知する。
【0062】
フラッシュ制御ロジック部170はデータ書込み入出力の第1サブセット(例えば、
図2のD1)が臨時書込みホールディングバッファ160のバッファ0(B0)に格納されるようにし、メタデータ書込み入出力の第1サブセット(例えば、
図2のM1)が臨時書込みホールディングバッファ160のバッファ1(B1)に格納されるようにし、データ書込み入出力の第2サブセット(例えば、
図2のD2)が臨時書込みホールディングバッファ160のバッファ2(B2)に格納されるようにし、メタデータ書込み入出力の第2サブセット(例えば、
図2のM2)が臨時書込みホールディングバッファ160のバッファN(BN)に格納されるようにする。
【0063】
フラッシュ制御ロジック部170は選択されたN番目のフラッシュ要請に応答して、マルチバッファホールディングキュー505が書込み入出力が伝達された順に臨時書込みホールディングバッファ160から1つ以上の不揮発性ストレージ装置135に伝達するようにする。この実施形態で、書込み入出力の順序変更及び再マッピングが遂行されなく、追加のヘッダ又はフッタが必要としない。反面、上述の実施形態に比べ、性能は大きく向上されない。なぜならば、LBAが事実上にランダムの順に1つ以上の不揮発性ストレージ装置135に伝達されるためである。急な電力損失が発生した場合には、アプリケーション132がデータを書き込もうとした順序が保存されたので、データの一貫性は相変わらず維持される。
【0064】
図6は
図1及び
図2の入出力インターセプタロジック部に含まれるフラッシュ制御ロジック部及び臨時書込みホールディングバッファを示す他の概念図である。
図6は
図5と類似であるが、
図6ではLBAが広く分布するという差異点がある。しかも、この実施形態の動作は
図5を参照して説明したのと同一であるか、或いは類似である。したがって、重複する説明は省略する。LBAが広く分布することを示す
図6の実施形態もやはり本発明の実施形態に含まれ、
図5を参照して説明したのと同一であるか、或いは類似に具現することができる。
【0065】
図7乃至
図12は本発明の実施形態による
図1の入出力インターセプタロジック部が内装できる多様な装置を示す概念図である。
例として、
図7に示したように、スマートフォン705は上述した入出力インターセプタロジック部120を含む。類似に、
図8に示したタブレット805、
図9に示したノート型コンピュータ905、
図10に示した移動式電話機1005、
図11に示したカメラ1105、及び
図12に示したデスクトップコンピュータ1205は上述した入出力インターセプタロジック部120を含む。不揮発性ストレージを利用する装置は上から説明された入出力インターセプタロジック部120を含み、それを利用して動作する。
【0066】
図13は本発明の実施形態による入出力インターセプタロジック部を利用してアプリケーションから入出力をインターセプトする方法を説明するフローチャートである。
図13の方法はS1305段階で開始される。S1305段階で、入出力インターセプタロジック部の入出力インターフェイスによって、アプリケーションから複数の書込み入出力及び複数のフラッシュ要請がインターセプトされる。
S1310段階で、入出力インターフェイスによって、インターセプトされた複数の書込み入出力が1つ以上の臨時書込みホールディングバッファに格納される。
S1315段階で、順序変更ロジック部は1つ以上の臨時書込みホールディングバッファに格納された複数の書込み入出力の順序を変更する。
S1320段階で、順序変更ロジック部は変更された順序の書込み入出力を結合して結合された書込み入出力を生成する。
【0067】
S1325段階で、フラッシュ制御ロジック部は入出力インターフェイスから複数のフラッシュ要請を受信する。
S1330段階で、複数の書込み入出力を不揮発性ストレージ装置に格納しなく、フラッシュ制御ロジック部は複数の書込み入出力に関する書込み入出力完了をアプリケーションに通知する。言い換えれば、書込み入出力が1つ以上の不揮発性ストレージ装置の中でどこかに実際に書き込まれる前に、フラッシュ制御ロジック部は書込み入出力に関する書込み入出力完了をアプリケーションに通知する。
S1335段階で、フラッシュ制御ロジック部は複数のフラッシュ要請の中で選択されたN番目のフラッシュ要請、累積されたデータの閾値、及び設定された時間の満了の中で少なくとも1つに応答して、結合された書込み入出力が不揮発性ストレージ装置に書き込まれるようにする。
【0068】
図14は本発明の実施形態による入出力インターセプタロジック部を利用してアプリケーションから入出力をインターセプトする他の方法を説明するフローチャートである。
図14の方法はS1405段階で開始される。S1405段階で、入出力インターセプタロジック部の入出力インターフェイスによって、アプリケーションから複数の書込み入出力及び複数のフラッシュ要請がインターセプトされる。
【0069】
S1410段階で、入出力インターフェイスによってインターセプトされた複数の書込み入出力が複数の臨時書込みホールディングバッファに格納される。
S1415段階で、マルチバッファホールディングキューは複数の臨時書込みホールディングバッファをホールドする。
S1420段階で、フラッシュ制御ロジック部は入出力インターフェイスから複数のフラッシュ要請を受信する。
【0070】
S1425段階で、複数の書込み入出力を不揮発性ストレージ装置に格納しなく、フラッシュ制御ロジック部は複数の書込み入出力に関する書込み入出力完了をアプリケーションに通知する。言い換えれば、書込み入出力が1つ以上の不揮発性ストレージ装置の中でとこかに実際に書き込まれる前に、フラッシュ制御ロジック部は書込み入出力に関する書込み入出力完了をアプリケーションに通知する。
【0071】
S1430段階で、フラッシュ制御ロジック部は複数のフラッシュ要請の中で選択されたN番目のフラッシュ要請、累積されたデータの閾値、及び設定された時間の満了の中で少なくとも1つに応答して、マルチバッファホールディングキューが複数の書込み入出力を複数の臨時書込みホールディングバッファから不揮発性ストレージ装置に伝達するようにする。
【0072】
図15は本発明の実施形態による入出力インターセプタロジック部を含むコンピューティングシステムを示すブロック図である。
図15を参照すれば、コンピューティングシステム1500はクロック1510、RAM(Random Access Memory)1515、ユーザインターフェイス(User Interface)1520、基底帯域チップセット(Baseband Chipset)のようなモデム1525、SSD1540、メモリコントローラ1545、及びバッテリ1535を含む。
図15には図示しなかったが、コンピューティングシステム1500はAP(Application Processor)チップセット、CIS(Camera Image Sensor)、移動式DRAM(Dynamic RAM)等をさらに含む。
【0073】
クロック1510、RAM1515、ユーザインターフェイス1520、基底帯域チップセット1525、SSD1540、メモリコントローラ1545、及びバッテリ1535の一部又は全部はシステムバス1505に電気的に連結される。入出力インターセプタロジック部1530は
図1乃至
図12の入出力インターセプタロジック部120に対応する。入出力インターセプタロジック部1530もやはりシステムバス1505に電気的に連結される。
【0074】
コンピューティングシステム1500が移動式装置である場合、バッテリ1535はコンピューティングシステム1500に電力を供給する。上から説明された本発明の実施形態が具現されれば、ストレージ1540(例えば、SSD)にデータをさらに効率的に書き込むことができるので、バッテリ消費が減少することができる。
【0075】
実施形態として、コンピューティングシステム1500はコンピュータ、携帯用コンピュータ、UMPC(Ultra Mobile Personal Computer)、ワークステーション(Workstation)、ネットブック(Net−book)、PDA(Personal Digital Assistant)、ウェブタブレット、無線電話機、移動式電話機、スマートフォン、電子本(Electronic Book)、PMP(Portable Multimedia Player)、デジタルカメラ、デジタルオーディオレコーダ/プレーヤ、デジタル映像/ビデオレコーダ/プレーヤ、携帯用ゲーム機、ナビゲーションシステム、ブラックボックス、3次元テレビジョン、無線環境で情報を送受信できる装置、ホームネットワークを構成する様々な電子装置の中で1つ、コンピュータネットワークを構成する様々な電子装置の中で1つ、テレマティクス(Telematics)ネットワークを構成する様々な電子装置の中で1つ、RFID(Radio Frequency Identification)、又はコンピューティングシステムを構成する様々な電子装置の中で1つに利用されることができる。
【0076】
以下の説明は本発明の実施形態が具現できる適当な機器に関して簡略に一般的な説明を提供するためのものである。機器はプロセッサ、メモリ(例えば、RAM、ROM(Read−only Memory)、又はその他の状態を保存できる媒体)、ストレージ装置、ビデオインターフェイス、入出力インターフェイスポート(Port)が連結されたシステムバスを含む。機器はキーボード、マウス等のような入力装置から提供される入力はもちろん、他の機器、仮想現実(Virtual Reality)環境との相互作用(Interaction)、生体(Biometric)信号、又はその他の入力信号を通じて提供される入力によって制御することができる。
【0077】
ここで、“機器”という用語は単一の機器、バーチャルマシン(Virtual Machine)、互いに通信するように連結された機器やバーチャルマシンのシステム、又は共に動作する装置等を幅広く含むために利用された。例として、機器は個人用コンピュータ、ワークステーション、サーバ、携帯用コンピュータ、小型装置、電話機、タブレット等のようなコンピューティング装置はもちろん、個人用の(Private)又は公用の(Public)交通手段(例えば、自動車、汽車、タクシ等)のような移動手段を含む。
【0078】
機器はプログラム可能である(Programmable)又はプログラムされない(Non−programmable)論理装置又はアレイ(Array)、ASICs(Application Specific Integrated Circuits)等のような内装型(Embedded)コントローラを含む。機器はネットワークインターフェイス、モデム、又はその他の通信用連結を通じて1つ以上の遠隔機器との連結を活用することができる。機器はイントラネット(Intranet)、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等のような物理的な及び/又は論理的なネットワークを利用して他の機器と連結される。ネットワーク通信は RF(Radio Frequency)、衛星、マイクロ波(Microwave)、IEEE(Institute of Electrics and Electronics Engineers) 545.11、ブルートゥース(Bluetooth(登録商標))、光(Optics)、赤外光(Infrared)、ケーブル、レーザー等のような短距離又は長距離の有無線キャリヤ(Carrier)又はプロトコル(Protocol)を活用して具現することができる。
【0079】
本発明の実施形態は関数(Function)、プロシージャ(Procedure)、データ構造(Data Structure)、応用プログラム(Application Program)等を含むデータ形態で具現されることができる。本発明の実施形態を具現したデータが機器によって接近される場合、機器は本発明の実施形態に対応する作業を遂行するか、或いは、抽象データ型(Abstract Data Type)又は下位レベルハードウェアコンテキスト(Low−level Hardware Context)を定義することができる。
【0080】
本発明の実施形態を具現したデータは、例として、RAM、ROM等のような揮発性及び/又は不揮発性メモリ、又はハードドライブ、フロッピー(登録商標)ディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、生体ストレージ等のようなストレージ装置に格納されることができる。本発明の実施形態を具現したデータは物理的な及び/又は論理的なネットワーク等のような通信環境を通じてパケット(Packet)、直列データ(Serial Data)、並列データ(Parallel Data)、電波信号(Propagated Signal)等の形態に伝送されて、圧縮された(Compressed)又は暗号化された(Encrypted)形態に利用されることができる。本発明の実施形態を具現したデータは分散(Distributed)環境で利用されることができ、機器の接近のためにローカル(Local)及び/又は遠隔(Remote)の位置に格納することができる。
【0081】
本発明の実施形態は1つ以上のプロセッサによって実行可能である(Excutable)命令語(Instruction)を含む非一時的に(Non−transitory)機械で読み出される媒体(Machine−readable Medium)に具現されることができる。この命令語は上から説明された本発明の実施形態の過程を遂行するための命令を含む。
【0082】
各々の概念図に示した構成は単なる概念的な観点で理解しなければならない。本発明の理解を助けるために、概念図に示した構成要素各々の形態、構造、大きさ等は誇張又は縮小されて表現された。実際に具現される構成は各々の概念図に示したことと異なる物理的形状を有することができる。各々の概念図は構成要素の物理的形状を制限するためのものではない。
各々のブロック図に示した装置構成は発明の理解を助けるためのものである。各々のブロックは機能によってさらに小さい単位のブロックに形成することができる。又は、複数のブロックは機能によってさらに大きい単位のブロックを形成することができる。即ち、本発明の技術思想はブロック図として図示された構成によって限定されない。
【0083】
以上で本発明に対する実施形態を中心に本発明を説明した。但し、本発明が属する技術分野の特徴上、本発明が解決しようとする目的は本発明の要旨を含みながらも上の実施形態と他の形態に達成されることができる。したがって、上の実施形態は限定的なものではなく、説明の側面で理解しなければならない。即ち、本発明の要旨を包含しながら、本発明のような目的を達成できる技術思想は本発明の技術思想に含まれることと解釈されなければならない。
したがって、本発明の本質的な特性を逸脱しない範囲内で修正又は変形された技術思想は本発明が請求する保護範囲に含まれるものである。また、本発明の保護範囲は上の実施形態に限定されるものではない。