(57)【要約】本発明は、フラッシュメモリから／へデータを読み取る／書き込むための方法および装置、ならびにユーザ機器に関する。この方法は、データ読み取り命令を受信するステップであって、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む、ステップと、物理アドレスを求めてバッファを検索するステップと、物理アドレスがバッファにおいて発見されなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するステップと、物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングするステップとを含む。したがって、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題が解決されることができる。
2017527877.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリからデータを読み取るための方法であって、
データ読み取り命令を受信するステップであって、前記データ読み取り命令は、読み取られるべきデータのサイズ、および前記フラッシュメモリにおける前記読み取られるべきデータの物理アドレスを含む、ステップと、
前記物理アドレスを求めてバッファを検索するステップと、
前記物理アドレスが前記バッファにおいて発見されなかったとき、前記読み取られるべきデータの前記サイズ、および前記フラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するステップと、
前記物理アドレスに従って、前記フラッシュメモリから前記読み取られるべきデータを読み取り、前記読み取られるべきデータを前記バッファデータ領域内にバッファリングするステップと
を含むことを特徴とする方法。
【請求項２】
前記バッファデータ領域のサイズは、前記読み取られるべきデータの前記サイズよりも大きく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であることを特徴とする請求項１に記載の方法。
【請求項３】
前記バッファデータ領域のサイズは、前記読み取られるべきデータの前記サイズと等しく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であることを特徴とする請求項１に記載の方法。
【請求項４】
内部メモリからバッファデータ領域を前記分割するステップの後に、かつ前記物理アドレスに従って、前記フラッシュメモリから前記読み取られるべきデータを前記読み取るステップの前に、
前記内部メモリから、前記バッファデータ領域に対応するバッファヘッダを分割し、前記バッファデータ領域の属性情報と前記物理アドレスとを前記バッファヘッダ内にバッファリングするステップであって、前記バッファデータ領域の前記属性情報は、前記バッファデータ領域のアドレスおよび前記サイズを含む、ステップをさらに含むことを特徴とする請求項２または３に記載の方法。
【請求項５】
前記フラッシュメモリの前記実際の物理ブロックサイズは、前記フラッシュメモリの識別子情報ＣＩＤと、前記フラッシュメモリの前記識別子情報ＣＩＤに従った前記フラッシュメモリの前記実際の物理ブロックサイズとの間の対応テーブルから、前記フラッシュメモリのドライバ層によって取得されることを特徴とする請求項１乃至４のいずれか一項に記載の方法。
【請求項６】
データ読み取り命令を前記受信するステップの前に、前記フラッシュメモリのブロックデバイス層を使用することによって、前記フラッシュメモリのドライバ層により送信された前記フラッシュメモリの前記実際の物理ブロックサイズを受信するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
フラッシュメモリ内にデータを書き込むための方法であって、
データ書き込み命令を受信するステップであって、前記データ書き込み命令は、書き込まれるべきデータ、前記書き込まれるべきデータのサイズ、および前記フラッシュメモリにおける前記書き込まれるべきデータの物理アドレスを含む、ステップと、
前記書き込まれるべきデータの前記サイズ、および前記フラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、前記バッファデータ領域に対応するバッファヘッダを分割するステップと、
前記書き込まれるべきデータを前記バッファデータ領域内にバッファリングし、前記バッファデータ領域の属性情報と前記物理アドレスとを前記バッファヘッダ内にバッファリングするステップであって、前記バッファデータ領域の前記属性情報は、前記バッファデータ領域のアドレスおよびサイズを含む、ステップと、
前記物理アドレスに従って、前記書き込まれるべきデータを前記フラッシュメモリ内に書き込むステップと
を含むことを特徴とする方法。
【請求項８】
識別子情報を前記バッファデータ領域に追加し、前記バッファデータ領域におけるデータが前記フラッシュメモリにおけるデータと一致しないとき、前記識別子情報をダーティデータを示す情報として識別するステップと、
前記内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、前記フラッシュメモリ内に、ダーティデータを示す前記情報である前記識別子情報に対応する前記バッファデータ領域におけるデータを書き込むステップ、または
前記バッファデータ領域が存在する時間が、予め設定された第２の閾値よりも大きいとき、前記フラッシュメモリ内に、ダーティデータを示す前記情報である前記識別子情報に対応する前記バッファデータ領域におけるデータを書き込むステップと
をさらに含むことを特徴とする請求項７に記載の方法。
【請求項９】
フラッシュメモリからデータを読み取るための装置であって、受信ユニット、検索ユニット、分割ユニット、およびバッファリングユニットを備え、
前記受信ユニットは、データ読み取り命令を読み取るように構成され、前記データ読み取り命令は、読み取られるべきデータのサイズ、および前記フラッシュメモリにおける前記読み取られるべきデータの物理アドレスを含み、
前記検索ユニットは、前記受信ユニットにより受信された前記物理アドレスを求めてバッファを検索するように構成され、
前記分割ユニットは、前記検索ユニットが前記バッファにおいて前記物理アドレスを発見しないとき、前記読み取られるべきデータの前記サイズ、および前記フラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するように構成され、
前記バッファリングユニットは、前記物理アドレスに従って、前記フラッシュメモリから前記読み取られるべきデータを読み取り、前記読み取られるべきデータを、前記分割ユニットにより分割された前記バッファデータ領域内にバッファリングするように構成されたことを特徴とする装置。
【請求項１０】
前記分割ユニットは、
前記内部メモリから、前記バッファデータ領域に対応するバッファヘッダを分割し、前記バッファデータ領域の属性情報と前記物理アドレスとを前記バッファヘッダにバッファリングするようにさらに構成され、前記バッファデータ領域の前記属性情報は、前記バッファデータ領域のアドレスおよびサイズを含み、
前記バッファデータ領域の前記サイズは、前記読み取られるべきデータの前記サイズよりも大きく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であり、または
前記バッファデータ領域の前記サイズは、前記読み取られるべきデータの前記サイズと等しく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であり、
前記フラッシュメモリの前記実際の物理ブロックサイズは、前記フラッシュメモリの識別子情報ＣＩＤと、前記フラッシュメモリの前記識別子情報ＣＩＤに従った前記フラッシュメモリの前記実際の物理ブロックサイズとの間の対応テーブルから、前記フラッシュメモリのドライバ層によって取得される
ことを特徴とする請求項９に記載の装置。
【請求項１１】
前記受信ユニットは、前記フラッシュメモリのブロックデバイス層を使用することによって、前記フラッシュメモリのドライバ層により送信された前記フラッシュメモリの前記実際の物理ブロックサイズを受信するようにさらに構成されたことを特徴とする請求項９または１０に記載の装置。
【請求項１２】
フラッシュメモリ内にデータを書き込むための装置であって、受信ユニット、分割ユニット、バッファリングユニット、および書き込みユニットを備え、
前記受信ユニットは、データ書き込み命令を受信するように構成され、前記データ書き込み命令は、書き込まれるべきデータ、前記書き込まれるべきデータのサイズ、および前記フラッシュメモリにおける前記書き込まれるべきデータの物理アドレスを含み、
前記分割ユニットは、前記受信ユニットにより受信された前記書き込まれるべきデータの前記サイズおよび前記フラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、前記バッファデータ領域に対応するバッファヘッダを分割するように構成され、
前記バッファリングユニットは、前記書き込まれるべきデータを、前記分割ユニットにより分割された前記バッファデータ領域内にバッファリングし、前記バッファデータ領域の属性情報と前記物理アドレスとを、前記分割ユニットにより分割された前記バッファヘッダ内にバッファリングするように構成され、前記バッファデータ領域の前記属性情報は、前記バッファデータ領域の論理アドレスおよびサイズを含み、
前記書き込みユニットは、前記物理アドレスに従って、前記書き込まれるべきデータを前記フラッシュメモリ内に書き込むように構成されたことを特徴とする装置。
【請求項１３】
識別子情報を前記バッファデータ領域に追加し、前記バッファデータ領域におけるデータが前記フラッシュメモリにおけるデータと一致しないとき、前記識別子情報をダーティデータを示す情報として識別するように構成された追加ユニットをさらに備え、
前記書き込みユニットは、前記内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、前記フラッシュメモリ内に、前記追加ユニットにより追加されたダーティデータを示す前記情報である前記識別子情報に対応する前記バッファデータ領域におけるデータを書き込む、または
前記バッファデータ領域が存在する時間が、予め設定された第２の閾値よりも大きいとき、前記フラッシュメモリ内に、前記追加ユニットにより追加されたダーティデータを示す前記情報である前記識別子情報に対応する前記バッファデータ領域におけるデータを書き込むようにさらに構成されたことを特徴とする請求項１２に記載の装置。
【請求項１４】
ユーザ機器であって、
ネットワークインターフェースと、
１または複数のプロセッサと、
記憶装置であって、内部メモリおよびフラッシュメモリを含む、該記憶装置と、
前記記憶装置に記憶され、前記１または複数のプロセッサによって実行されるように構成された１または複数のプログラムと
を備え、前記１または複数のプログラムは、
データ読み取り命令を受信することであって、前記データ読み取り命令は、読み取られるべきデータのサイズ、および前記フラッシュメモリにおける前記読み取られるべきデータの物理アドレスを含む、受信することと、
前記物理アドレスを求めてバッファを検索することと、
前記物理アドレスが前記バッファにおいて発見されなかったとき、前記読み取られるべきデータの前記サイズ、および前記フラッシュメモリの実際の物理ブロックサイズに従って、前記内部メモリからバッファデータ領域を分割することと、
前記物理アドレスに従って、前記フラッシュメモリから前記読み取られるべきデータを読み取り、前記読み取られるべきデータを前記バッファデータ領域内にバッファリングすることと
を含むことを特徴とするユーザ機器。
【請求項１５】
前記バッファデータ領域のサイズは、前記読み取られるべきデータの前記サイズよりも大きく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であることを特徴とする請求項１４に記載の機器。
【請求項１６】
前記バッファデータ領域のサイズは、前記読み取られるべきデータの前記サイズと等しく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であることを特徴とする請求項１４に記載の機器。
【請求項１７】
前記１または複数のプログラムは、前記内部メモリから、前記バッファデータ領域に対応するバッファヘッダを分割し、前記バッファデータ領域の属性情報と前記物理アドレスとを前記バッファヘッダ内にバッファリングすることをさらに含み、前記バッファデータ領域の前記属性情報は、前記バッファデータ領域のアドレスおよび前記サイズを含むことを特徴とする請求項１５または１６に記載の機器。
【請求項１８】
前記フラッシュメモリの前記実際の物理ブロックサイズは、前記フラッシュメモリの識別子情報ＣＩＤと、前記フラッシュメモリの前記識別子情報ＣＩＤに従った前記フラッシュメモリの前記実際の物理ブロックサイズとの間の対応テーブルから、前記フラッシュメモリのドライバ層によって取得されることを特徴とする請求項１４乃至１７のいずれか一項に記載の機器。
【請求項１９】
前記１または複数のプログラムは、前記フラッシュメモリのブロックデバイス層を使用することによって、前記フラッシュメモリのドライバ層により送信された前記フラッシュメモリの前記実際の物理ブロックサイズを受信することをさらに含むことを特徴とする請求項１４に記載の機器。
【請求項２０】
ユーザ機器であって、
ネットワークインターフェースと、
１または複数のプロセッサと、
記憶装置であって、内部メモリおよびフラッシュメモリを含む、該記憶装置と、
前記記憶装置に記憶され、前記１または複数のプロセッサによって実行されるように構成された１または複数のプログラムと
を備え、前記１または複数のプログラムは、
データ書き込み命令を受信することであって、前記データ書き込み命令は、書き込まれるべきデータ、前記書き込まれるべきデータのサイズ、および前記フラッシュメモリにおける前記書き込まれるべきデータの物理アドレスを含む、受信することと、
前記書き込まれるべきデータの前記サイズ、および前記フラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、前記バッファデータ領域に対応するバッファヘッダを分割することと、
前記書き込まれるべきデータを前記バッファデータ領域内にバッファリングし、前記バッファデータ領域の属性情報と前記物理アドレスとを前記バッファヘッダ内にバッファリングすることであって、前記バッファデータ領域の前記属性情報は、前記バッファデータ領域のアドレスおよびサイズを含む、バッファリングすることと、
前記物理アドレスに従って、前記書き込まれるべきデータを前記フラッシュメモリ内に書き込むことと
を含むことを特徴とするユーザ機器。
【請求項２１】
前記１または複数のプログラムは、
識別子情報を前記バッファデータ領域に追加し、前記バッファデータ領域におけるデータが前記フラッシュメモリにおけるデータと一致しないとき、前記識別子情報をダーティデータを示す情報として識別することと、
前記内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、前記フラッシュメモリ内に、ダーティデータを示す前記情報である前記識別子情報に対応する前記バッファデータ領域におけるデータを書き込むこと、または
前記バッファデータ領域が存在する時間が、予め設定された第２の閾値よりも大きいとき、前記フラッシュメモリ内に、ダーティデータを示す前記情報である前記識別子情報に対応する前記バッファデータ領域におけるデータを書き込むことと
をさらに含むことを特徴とする請求項２０に記載の機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理の分野に関し、特に、フラッシュメモリから／フラッシュメモリへデータを読み取る／書き込むための方法および装置、ならびにユーザ機器に関する。
【背景技術】
【０００２】
現在、組み込まれたマルチメディアカード（ｅｍｂｅｄｄｅｄ  Ｍｕｌｔｉ  Ｍｅｄｉａ  Ｃａｒｄ（ｅＭＭＣ））が、携帯電話の主記憶媒体として広く使用されており、ｅＭＭＣの内部ストレージ（ｓｔｏｒａｇｅ）デバイスは、略してフラッシュメモリと呼ばれる非線形フラッシュメモリ（ＮＡＮＤ  ｆｌａｓｈ）である。ＮＡＮＤフラッシュは、ページ単位でデータを読み取りおよび書き込み、ブロック単位でデータを消去する。当初は、ＮＡＮＤフラッシュのページは５１２バイトである。しかしながら、ＮＡＮＤフラッシュ工程の進歩により、ＮＡＮＤフラッシュの容量がますます大きくなり、ページのサイズも８キロバイト（略して８ＫＢもしくは８Ｋ）または１６Ｋに増大されている。ｅＭＭＣは、標準的で均一なプロトコルであり、読み取り／書き込みの指定された単位は５１２バイトである。結果として、書き込み増幅率が増大され、ｅＭＭＣの動作効率および耐用寿命が影響を受ける。
【０００３】
従来技術では、異なる製造者および種類のｅＭＭＣに対応するために、Ｌｉｎｕｘシステムにおいて物理ブロックは、ｅＭＭＣドライバを使用することによりサイズが均一であり、たとえば５１２バイトである。このように、ｅＭＭＣは５１２バイトを読み取る／書き込むが、ＮＡＮＤフラッシュの読み取り／書き込みの単位は、ページすなわち８ＫＢまたは１６ＫＢであるので、動作がＮＡＮＤフラッシュに対して８Ｋまたは１６Ｋに増幅され、ｅＭＭＣの低い読み取りおよび書き込み効率ならびにｅＭＭＣの短い耐用寿命の問題が生じる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明では、フラッシュメモリから／フラッシュメモリへデータを読み取る／書き込むための改善された方法および装置、ならびにユーザ機器を提供する。
【課題を解決するための手段】
【０００５】
本発明の実施形態は、フラッシュメモリから／フラッシュメモリへデータを読み取る／書き込むための方法および装置、ならびにユーザ機器を提供し、それにより、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題を解決することができる。
【０００６】
第１の態様によれば、フラッシュメモリからデータを読み取るための方法が提供され、方法は、
データ読み取り命令を受信するステップであって、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む、ステップと、
物理アドレスを求めてバッファを検索するステップと、
物理アドレスがバッファにおいて発見されなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するステップと、
物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングするステップと
を含む。
【０００７】
第１の態様を参照して、第１の態様の第１の実装手法において、バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
【０００８】
第１の態様を参照して、第１の態様の第２の実装手法において、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
【０００９】
第１の態様の第１の実装手法または第１の態様の第２の実装手法を参照して、第１の態様の第３の実装手法において、内部メモリからバッファデータ領域を分割するステップの後に、かつ物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取るステップの前に、方法は、
内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングするステップであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、ステップをさらに含む。
【００１０】
第１の態様、または第１の態様の上記３つの実装手法のいずれかの実装手法を参照して、第１の態様の第４の実装手法において、フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報ＣＩＤと、フラッシュメモリの識別子情報ＣＩＤに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
【００１１】
第１の態様を参照して、第１の態様の第５の実装手法において、データ読み取り命令を受信するステップの前に、方法は、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信するステップをさらに含む。
【００１２】
第２の態様によれば、フラッシュメモリ内にデータを書き込むための方法が提供され、方法は、
データ書き込み命令を受信するステップであって、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含む、ステップと、
書き込まれるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割するステップと、
書き込まれるべきデータをバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングするステップであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、ステップと、
物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むステップと
を含む。
【００１３】
第２の態様を参照して、第２の態様の第１の実装手法において、方法は、
識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別するステップと、
内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むステップ、または
バッファデータ領域が存在する時間が、予め設定された第２の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むステップと
をさらに含む。
【００１４】
第３の態様によれば、フラッシュメモリからデータを読み取るための装置が提供され、装置は、受信ユニット、検索ユニット、分割ユニット、およびバッファリングユニットを備え、
受信ユニットは、データ読み取り命令を受信するように構成され、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含み、
検索ユニットは、受信ユニットにより受信された物理アドレスを求めてバッファを検索するように構成され、
分割ユニットは、検索ユニットがバッファにおいて物理アドレスを発見しなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するように構成され、
バッファリングユニットは、物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータを、分割ユニットにより分割されたバッファデータ領域内にバッファリングするように構成される。
【００１５】
第３の態様を参照して、第３の態様の第１の実装手法において、分割ユニットは、
内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダにバッファリングするようにさらに構成され、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含み、
バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であり、または
バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であり、
フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報ＣＩＤと、フラッシュメモリの識別子情報ＣＩＤに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
【００１６】
第３の態様または第３の態様の第１の実装手法を参照して、第３の態様の第２の実装手法において、受信ユニットは、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信するようにさらに構成される。
【００１７】
第４の態様によれば、フラッシュメモリ内にデータを書き込むための装置が提供され、装置は、受信ユニット、分割ユニット、バッファリングユニット、および書き込みユニットを備え、
受信ユニットは、データ書き込み命令を受信するように構成され、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含み、
分割ユニットは、受信ユニットにより受信された書き込まれるべきデータのサイズおよびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割するように構成され、
バッファリングユニットは、書き込まれるべきデータを、分割ユニットにより分割されたバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとを、分割ユニットにより分割されたバッファヘッダ内にバッファリングするように構成され、バッファデータ領域の属性情報は、バッファデータ領域の論理アドレスおよびサイズを含み、
書き込みユニットは、物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むように構成される。
【００１８】
第４の態様を参照して、第４の態様の第１の実装手法において、装置は、識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別するように構成された追加ユニットをさらに備え、
書き込みユニットは、内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、フラッシュメモリ内に、追加ユニットにより追加されたダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込む、または
バッファデータ領域が存在する時間が、予め設定された第２の閾値よりも大きいとき、フラッシュメモリ内に、追加ユニットにより追加されたダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むようにさらに構成される。
【００１９】
第５の態様によれば、ユーザ機器が提供され、この機器は、
ネットワークインターフェースと、
１または複数のプロセッサと、
記憶装置（ｓｔｏｒａｇｅ）であって、内部メモリおよびフラッシュメモリを含む、該記憶装置と、
記憶装置に記憶され、１または複数のプロセッサによって実行されるように構成された１または複数のプログラムと
を備え、１または複数のプログラムは、
データ読み取り命令を受信することであって、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む、受信することと、
物理アドレスを求めてバッファを検索することと、
物理アドレスがバッファにおいて発見されなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割することと、
物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングすることと
を含む。
【００２０】
第５の態様を参照して、第５の態様の第１の実装手法において、バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
【００２１】
第５の態様を参照して、第５の態様の第２の実装手法において、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
【００２２】
第５の態様の第１の実装手法または第５の態様の第２の実装手法を参照して、第５の態様の第３の実装手法において、１または複数のプログラムは、内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングすることをさらに含み、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む。
【００２３】
第５の態様、または第５の態様の上記３つの実装手法のいずれかの実装手法を参照して、第５の態様の第４の実装手法において、フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報ＣＩＤと、フラッシュメモリの識別子情報ＣＩＤに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
【００２４】
第５の態様を参照して、第５の態様の第５の実装手法において、１または複数のプログラムは、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信することをさらに含む。
【００２５】
第６の態様によれば、ユーザ機器が提供され、この機器は、
ネットワークインターフェースと、
１または複数のプロセッサと、
記憶装置であって、内部メモリおよびフラッシュメモリを含む、該記憶装置と、
記憶装置に記憶され、１または複数のプロセッサによって実行されるように構成された１または複数のプログラムと
を備え、１または複数のプログラムは、
データ書き込み命令を受信することであって、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含む、受信することと、
書き込まれるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割することと、
書き込まれるべきデータをバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングすることであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、バッファリングすることと、
物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むことと
を含む。
【００２６】
第６の態様を参照して、第６の態様の第１の実装手法において、１または複数のプログラムは、
識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別することと、
内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むこと、または
バッファデータ領域が存在する時間が、予め設定された第２の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むことと
をさらに含む。
【００２７】
本発明の実施形態によって提供される、フラッシュメモリから／へデータを読み取る／書き込むための方法および装置ならびにユーザ機器において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリから／へデータを読み取る／書き込む単位と、フラッシュメモリ内でデータを読み取る／書き込む単位とを統一し、それにより、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題を解決する。
【図面の簡単な説明】
【００２８】
【図１】本発明の実施形態１によるフラッシュメモリからデータを読み取るための方法のフローチャートである。
【図２】本発明によるバッファの論理概略図である。
【図３】本発明の実施形態２によるフラッシュメモリ内にデータを書き込むための方法のフローチャートである。
【図４】本発明による識別子情報が追加された後のバッファの論理概略図である。
【図５】本発明の実施形態３によるフラッシュメモリからデータを読み取るための装置の概略図である。
【図６】本発明の実施形態４によるフラッシュメモリ内にデータを書き込むための装置の概略図である。
【図７】本発明の実施形態５によるユーザ機器の概略図である。
【図８】本発明の実施形態６によるユーザ機器の概略図である。
【発明を実施するための形態】
【００２９】
本発明の実施形態の目的、技術的解決策、および利点をより明確にするために、以下では、本発明の実施形態において添付の図面を参照して本発明の実施形態で技術的解決策を明確かつ完全に説明する。明らかに、説明される実施形態は本発明の実施形態の一部であるが全部ではない。本発明の実施形態に基づき当業者によって創作的な努力なしに得られる他のすべての実施形態が、本発明の保護範囲内に入るものとする。
【００３０】
本発明の完全な理解を提供するために、以下でさらに添付の図面を参照して本発明の実施形態を詳細に説明する。上記の実施形態は、本発明の保護範囲を限定するように意図されていない。
【００３１】
図１は、本発明の実施形態１によるフラッシュメモリからデータを読み取るための方法のフローチャートである。図１に示されるように、方法は、具体的には以下を含む。
【００３２】
Ｓ１１０：ユーザ機器が、データ読み取り命令を受信し、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む。
【００３３】
具体的には、Ｓ１１０は、ユーザ機器のプロセッサによって行われることがある。
【００３４】
フラッシュメモリは、電気的に消去可能なプログラマブル読み取り専用メモリの形態であり、動作中に複数回にわたり消去または書き込みされることが可能にされ、フラッシュメモリは不揮発性メモリである。フラッシュメモリは、ユーザ機器が永続的にデータを記憶するために使用する記憶媒体である。この明細書では、フラッシュメモリがＮＡＮＤフラッシュである例が説明のために使用され、ＮＡＮＤフラッシュはｅＭＭＣに組み込まれる。ユーザ機器がフラッシュメモリからデータを読み取るとき、フラッシュメモリにおけるデータはまず内部メモリにバッファリングされる必要があり、または、ユーザ機器がデータをフラッシュメモリ内に書き込むとき、データはやはり内部メモリにバッファリングされる必要があり、次いでデータはフラッシュメモリ内に書き込まれる。
【００３５】
異なる製造者のｅＭＭＣでは、ｅＭＭＣに対応するフラッシュメモリの実際の物理ブロックサイズ（Ｂｌｏｃｋ  ｓｉｚｅｓ）が異なることに留意されたい。加えて、異なる種類のｅＭＭＣでは、ｅＭＭＣに対応するフラッシュメモリの実際の物理ブロックサイズがやはり異なる。フラッシュメモリの実際の物理ブロックサイズは、ｅＭＭＣ内でデータを読み取り／書き込む単位を示すために使用され、より大きな値は、ｅＭＭＣ内のデータの読み取り／書き込みのより良い性能を示す。
【００３６】
Ｓ１２０：ユーザ機器は、物理アドレスを求めてバッファを検索する。
【００３７】
具体的には、Ｓ１２０は、ユーザ機器のプロセッサによって行われることがある。
【００３８】
バッファｂｕｆｆｅｒ＿ｃａｃｈｅは、内部メモリの一部であり、Ｌｉｎｕｘシステムでは、空き内部メモリすべてがバッファとして使用されることがあることに留意されたい。バッファは、フラッシュメモリにデータを記憶するために使用され、そうすることにより、フラッシュメモリにおけるデータに対するプロセッサによるアクセスが加速される。図２は、本発明によるバッファの論理概略図であり、バッファは、主に２つの部分、すなわち、バッファヘッダ（ｂｕｆｆｅｒ＿ｈｅａｄ）およびバッファデータ領域（ｂｕｆｆｅｒ＿ｄａｔａ）を含み、バッファヘッダは、プロセッサによってバッファを操作するために必要とされるすべての情報を含む。具体的には、バッファヘッダは、物理アドレスポインタ（ｂ＿ｂｌｏｃｋｎｒ）、次のバッファを指し示すポインタ（ｂ＿ｒｅｑｎｅｘｔ）、およびバッファデータ領域ポインタ（ｂ＿ｄａｔａ）を含み、ｂ＿ｂｌｏｃｋｎｒは、バッファデータ領域におけるデータの物理アドレスをフラッシュメモリに記憶するために使用され、ｂ＿ｒｅｑｎｅｘｔは、次のバッファのアドレスを記憶するために使用され、ｂ＿ｄａｔａは、バッファデータ領域のアドレスおよびサイズを記憶するために使用される。ｂｕｆｆｅｒ＿ｄａｔａは、バッファヘッダに対応するバッファデータ領域であり、データを記憶するために使用され、バッファデータ領域におけるデータは、フラッシュメモリにおけるブロックに対応する。各ｂｕｆｆｅｒ＿ｄａｔａのサイズは固定されない。バッファヘッダおよびバッファデータ領域は、データを読み取るプロセスにおいて動的に確立され、バッファヘッダに関する情報、およびバッファデータ領域にバッファリングされるデータもやはり動的に充填されることに留意されたい。データを読み取るための複数の異なる命令をプロセッサが処理する必要がある（すなわち、複数回にわたり異なるデータを読み取る必要がある）場合、複数のバッファが確立される必要がある。したがって、プロセッサが初めてデータ読み取り命令を受信するとき、バッファは内部メモリに存在しない。
【００３９】
プロセッサが既に複数の異なるデータを読み取っている場合、複数のバッファが確立され、各バッファが、バッファヘッダおよびバッファデータ領域を含むことに留意されたい。プロセッサがデータ読み取り命令を再度受信した場合、プロセッサは、確立されたバッファヘッダを順次にスキャンし、確立されたバッファヘッダにバッファリングされた物理アドレスを、新しく受信されたデータ読み取り命令における物理アドレスと比較し、比較結果で２つが同じ場合、バッファヘッダに対応するバッファデータ領域におけるデータを直接返し、比較結果で２つが異なる場合、それは、確立されたバッファヘッダにおいて物理アドレスが発見されないことを示す。
【００４０】
Ｓ１３０：ユーザ機器がバッファにおいて物理アドレスを発見しなかったとき、ユーザ機器は、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割する。
【００４１】
具体的には、Ｓ１３０は、ユーザ機器のプロセッサによって行われることがある。
【００４２】
フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報ＣＩＤ（Ｃａｒｄ  ＩＤｅｎｔｉｔｙ、ＣＩＤ）と、フラッシュメモリの識別子情報ＣＩＤに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層（Ｈｏｓｔ  Ｌａｙｅｒ）によって取得される。フラッシュメモリの識別子情報ＣＩＤとフラッシュメモリの実際の物理ブロックサイズとの間の対応のテーブルは、予め確立される。特定の確立プロセスでは、フラッシュメモリの予め設定された識別子情報が、標準コマンドを使用することによって、製造者のデータシート（Ｄａｔａ  ｓｈｅｅｔ）から取得され、次いで、製造者ＩＤが、フラッシュメモリの取得された予め設定された識別子情報から取得され、製造者ＩＤが取得された後、フラッシュメモリのモデルが、製造者ＩＤに従ってＣＩＤからさらに取得され、次いで、フラッシュメモリのモデルがルックアップテーブル（Ｌｏｏｋ−Ｕｐ−Ｔａｂｌｅ、ＬＵＴ）内にあるかどうかが決定され、はいの場合、ＬＵＴテーブルにおけるフラッシュメモリの実際の物理ブロックサイズが返され；そうでない場合、デフォルト値５１２バイトが返される。フラッシュメモリの実際の物理ブロックサイズまたはデフォルト値が取得された後、フラッシュメモリの識別子情報ＣＩＤとフラッシュメモリの実際の物理ブロックサイズとの間の対応のテーブルが確立されることができる。
【００４３】
任意選択で、フラッシュメモリの実際の物理ブロックサイズを取得した後、フラッシュメモリのドライバ層は、フラッシュメモリの取得された実際の物理ブロックサイズをフラッシュメモリのブロックデバイス層（Ｂｌｏｃｋ  Ｌａｙｅｒ）にフィードバックし、最終的に、ブロックデバイス層を使用することにより、フラッシュメモリの実際の物理ブロックサイズを、ｓｕｂｍｉｔ＿ｂｉｏインターフェース関数を使用することによってプロセッサに対して送信する。
【００４４】
バッファデータ領域が内部メモリから分割され、すなわち、バッファデータ領域が確立される。具体的には、内部メモリにおける一部の空間がバッファデータ領域として使用され、開始アドレスおよび終了アドレスを使用することによって空間が示される。たとえば、内部メモリのサイズが４Ｇであり、そこでアドレス２０００ＫＢとアドレス４０００ＫＢとの間にデータが記憶されず、したがって、プロセッサは２０００ＫＢ乃至２００８ＫＢを空間から分割してよく、合計８ＫＢの空間がバッファデータ領域として使用される。
【００４５】
具体的には、物理アドレスがバッファにおいて発見されなかったとき、それは、プロセッサが読み取られるべきデータを以前に読み取っておらず、すなわち、読み取られるべきデータがバッファデータ領域にバッファリングされていないことを示す。プロセッサは、バッファを確立する必要があり、そこで、バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であるか、または、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。たとえば、フラッシュメモリの実際の物理ブロックサイズが８Ｋである。しかしながら、読み取られるべきデータのサイズは２Ｋである場合、内部メモリから分割されるバッファデータ領域のサイズは８Ｋであり、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの１倍であり；読み取られるべきデータのサイズが２２Ｋの場合、内部メモリから分割されるバッファデータ領域のサイズは２４Ｋであり、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの３倍である。
【００４６】
任意選択で、内部メモリからバッファデータ領域を分割するステップの後に、かつ物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取るステップの前に、方法は、
内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングするステップであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、ステップをさらに含む。たとえば、バッファデータ領域の開始アドレスが２００Ｋであってサイズが２４Ｋである場合、開始アドレス２００Ｋおよびサイズ２４Ｋが、バッファデータ領域に対応するバッファヘッダに記憶される。
【００４７】
Ｓ１４０：ユーザ機器が、物理アドレスに従ってフラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングする。
【００４８】
具体的には、Ｓ１４０は、ユーザ機器のプロセッサによって行われることがある。
【００４９】
具体的には、プロセッサは、ｓｕｂｍｉｔ＿ｂｉｏインターフェース関数を使用することによって、ブロックデバイス読み取り要求をフラッシュメモリのドライバ層に送信し、読み取り要求は物理アドレスを含んでいる。フラッシュメモリのブロックデバイス層が、ｍｍｃ＿ｒｅｑｕｅｓｔインターフェース関数を使用することによって、ブロックデバイス読み取り要求を受信し、ブロックデバイス読み取り要求を受信した後、フラッシュメモリのブロックデバイス層は、読み取りコマンドをフラッシュメモリのドライバ層に送信し、読み取りコマンドは物理アドレスを含んでおり、フラッシュメモリのドライバ層は、受信された読み取りコマンドにおける物理アドレスに従って、読み取られるべきデータをフラッシュメモリから取得する。
【００５０】
フラッシュメモリのドライバ層は、読み取られるべきデータを取得した後、読み取られるべきデータをフラッシュメモリのブロックデバイス層に送信し；フラッシュメモリのブロックデバイス層は、読み取られるべきデータを受信した後、読み取られるべきデータを物理バッファ内にバッファリングし、読み取られるべきデータをプロセッサに転送し；プロセッサは、読み取られるべきデータを受信した後、読み取られるべきデータを分割されたバッファデータ領域内にバッファリングし、読み取られるべきデータを上位層アプリケーションに対して返す。
【００５１】
要約すると、本発明のこの実施形態によって提供されるフラッシュメモリからデータを読み取るための方法において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリからデータを読み取る単位と、フラッシュメモリ内でデータを読み取る単位とを統一し、それにより、フラッシュメモリの低い読み取り効率およびフラッシュメモリの短い耐用寿命の問題を解決する。
【００５２】
図３は、本発明の実施形態２によるフラッシュメモリ内にデータを書き込むための方法のフローチャートである。図３に示されるように、方法は具体的には以下を含む。
【００５３】
Ｓ３１０：ユーザ機器が、データ書き込み命令を受信し、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含む。
【００５４】
具体的には、Ｓ３１０は、ユーザ機器のプロセッサによって行われることがある。
【００５５】
フラッシュメモリは、電気的に消去可能なプログラマブル読み取り専用メモリの形態であり、動作中に複数回にわたり消去または書き込みされることが可能にされ、フラッシュメモリは不揮発性メモリである。フラッシュメモリは、ユーザ機器が永続的にデータを記憶するために使用する記憶媒体である。この明細書では、フラッシュメモリがＮＡＮＤフラッシュである例が説明のために使用され、ＮＡＮＤフラッシュはｅＭＭＣに組み込まれる。ユーザ機器がフラッシュメモリからデータを読み取るとき、フラッシュメモリにおけるデータはまず内部メモリにバッファリングされる必要があり；または、ユーザ機器がデータをフラッシュメモリ内に書き込むとき、データはやはり内部メモリにバッファリングされる必要があり、次いでデータはフラッシュメモリ内に書き込まれる。
【００５６】
Ｓ３２０：ユーザ機器が、書き込まれるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割する。
【００５７】
具体的には、Ｓ３２０は、ユーザ機器のプロセッサによって行われることがある。
【００５８】
バッファヘッダおよびバッファデータ領域は、フラッシュメモリ内にデータを書き込むプロセスにおいて動的に確立され、バッファヘッダに関する情報、およびバッファデータ領域にバッファリングされるデータもやはり動的に充填されることに留意されたい。データを書き込むための複数の異なる命令をプロセッサが処理する必要がある（すなわち、複数回にわたり異なるデータを書き込む必要がある）場合、複数のバッファが確立される必要がある。したがって、プロセッサが初めてデータ書き込み命令を受信するとき、バッファは内部メモリに存在しない。プロセッサが既に複数の異なるデータをフラッシュメモリ内に書き込んでいる場合、複数のバッファが確立され、各バッファが、バッファヘッダおよびバッファデータ領域を含む。
【００５９】
バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であるか、または、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であることに留意されたい。
【００６０】
Ｓ３３０：ユーザ機器が、書き込まれるべきデータをバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングし、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む。
【００６１】
具体的には、Ｓ３３０は、ユーザ機器のプロセッサによって行われることがある。
【００６２】
たとえば、バッファデータ領域の開始アドレスが２００Ｋであってサイズが２４Ｋである場合、開始アドレス２００Ｋおよびサイズ２４Ｋが、バッファデータ領域に対応するバッファヘッダに記憶される。
【００６３】
Ｓ３４０：ユーザ機器が、物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込む。
【００６４】
具体的には、Ｓ３４０は、ユーザ機器のプロセッサによって行われることがある。
【００６５】
物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むことは、具体的には以下のようである。
【００６６】
プロセッサは、ｓｕｂｍｉｔ＿ｂｉｏインターフェース関数を使用することによって、ブロックデバイス書き込み要求をフラッシュメモリのドライバ層に送信し、書き込み要求は物理アドレスを含んでいる。フラッシュメモリのブロックデバイス層が、ｍｍｃ＿ｒｅｑｕｅｓｔインターフェース関数を使用することによって、ブロックデバイス書き込み要求を受信し、ブロックデバイス書き込み要求を受信した後、フラッシュメモリのブロックデバイス層は、ブロックデバイス書き込み要求をフラッシュメモリのドライバ層に転送し、最後に、フラッシュメモリに関係付けられたドライバ層が、物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込み、書き込みが成功したことを示す情報をフラッシュメモリのブロックデバイス層に対して返す。
【００６７】
書き込みが成功したことを示す情報を受信した後、フラッシュメモリのブロックデバイス層は、書き込みが成功したことを示す情報をプロセッサに転送し；最後に、プロセッサは、書き込みが成功したことを示す情報を上位層アプリケーションに対して返し、次のデータ書き込み命令の受信を待機する。
【００６８】
要約すると、本発明のこの実施形態によって提供されるフラッシュメモリ内にデータを書き込むための方法において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリ内へデータを書き込む単位と、フラッシュメモリ内でデータを書き込む単位とを統一し、それにより、フラッシュメモリの低い書き込み効率およびフラッシュメモリの短い耐用寿命の問題を解決する。
【００６９】
任意選択で、方法は、以下のステップをさらに含むことがある。
【００７０】
Ｓ３５０：識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別する。
【００７１】
バッファのバッファリング機能により、データ書き込みの動作は実際に遅延され、バッファデータ領域におけるデータがフラッシュメモリにおけるデータよりも新しいとき、データはダーティデータと呼ばれる。本発明の特定の実装手法において、バッファデータ領域に識別子情報を追加することに関して、図４に示される識別子情報が追加された後のバッファの論理概略図を参照する。図４では、３つのバッファが含まれ、各バッファは、バッファヘッダ（ｂｕｆｆｅｒ＿ｈｅａｄ）およびバッファデータ領域（ｂｕｆｆｅｒ＿ｄａｔａ）を含み、バッファヘッダは、ｂ＿ｂｌｏｃｋｎｒ、ｂ＿ｒｅｑｎｅｘｔ、識別子情報（ｄｉｒｔｙ）、およびｂ＿ｄａｔａを含み、ｂ＿ｂｌｏｃｋｎｒは、対応するバッファデータ領域におけるデータの物理アドレスをフラッシュメモリに記憶するために使用され、ｂ＿ｒｅｑｎｅｘｔは、次のバッファのアドレスを記憶するために使用され、ｄｉｒｔｙは、新しく追加された識別子情報であり、識別子情報が０である場合、それは、対応するバッファデータ領域におけるデータが通常のデータであることを示し、識別子情報が１である場合、それは、対応するバッファデータ領域におけるデータがダーティデータであることを示し；ｂ＿ｄａｔａは、対応するバッファデータ領域のアドレスおよびサイズを記憶するために使用され；ｂｕｆｆｅｒ＿ｄａｔａは、対応するバッファデータ領域であり、データを記憶するために使用され、各ｂｕｆｆｅｒ＿ｄａｔａのサイズは固定されないが、ｂｕｆｆｅｒ＿ｄａｔａは、フラッシュメモリの実際の物理ブロックサイズを単位として使用する。
【００７２】
識別子情報をバッファデータ領域に追加することは、具体的には、フラッシュメモリの実際の物理ブロックサイズを単位として使用することによって、識別子情報をバッファデータ領域に追加することである。図４に示されるように、フラッシュメモリの実際の物理ブロックサイズが８Ｋであることが仮定され、８Ｋはフラッシュメモリの実際の物理ブロックサイズの１倍であるので、１つの識別子情報が追加され；１６Ｋはフラッシュメモリの実際の物理ブロックサイズの２倍であるので、２つの識別子情報が追加され；２４Ｋはフラッシュメモリの実際の物理ブロックサイズの３倍であるので、３つの識別子情報が追加される。
【００７３】
Ｓ３６０：内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込み；または、
バッファデータ領域が存在する時間が、予め設定された第２の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込む。
【００７４】
図４において、バッファデータ領域がダーティデータを示す情報として識別されるとき、すなわちバッファデータ領域のダーティ値が０であるとき、バッファデータにおけるデータがフラッシュメモリへと書き込まれる２つの場合がある。すなわち、
１）内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータが、フラッシュメモリ内に書き込まれる場合と；
２）バッファデータ領域が内部メモリに存在する時間が、予め設定された第２の閾値よりも大きいとき、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータが、フラッシュメモリ内に書き込まれる場合とがある。
【００７５】
上記２つの手法によって、バッファデータ領域におけるデータが無期限に内部メモリに存在しないことが保証されることができる。
【００７６】
フラッシュデーモン（Ｆｌｕｓｈ  ｄａｅｍｏｎ）が、同時にバッファヘッダにおけるダーティデータを示す情報として識別されるすべてのバッファデータ領域を検出し、したがって、それらのバッファデータ領域におけるデータがフラッシュメモリ内に書き込まれることがあることに留意されたい。
【００７７】
図５は、本発明の実施形態３によるフラッシュメモリからデータを読み取るための装置の概略図である。装置は、図１に示された方法を行うために使用されることがある。図５において、装置は、受信ユニット５０１、検索ユニット５０２、分割ユニット５０３、およびバッファリングユニット５０４を備え、
受信ユニット５０１は、データ読み取り命令を受信するように構成され、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含み；
検索ユニット５０２は、受信ユニット５０１により受信された物理アドレスを求めてバッファを検索するように構成され；
分割ユニット５０３は、検索ユニット５０２がバッファにおいて物理アドレスを発見しなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するように構成され；
バッファリングユニット５０４は、物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータを、分割ユニット５０３により分割されたバッファデータ領域内にバッファリングするように構成される。
【００７８】
任意選択で、分割ユニット５０３は、
内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域のバッファ属性情報と物理アドレスとをバッファヘッダにバッファリングするようにさらに構成され、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含み、
バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であり；または
バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であり；
フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報ＣＩＤと、フラッシュメモリの識別子情報ＣＩＤに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
【００７９】
任意選択で、受信ユニット５０１は、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信するようにさらに構成される。
【００８０】
図６は、本発明の実施形態４によるフラッシュメモリ内にデータを書き込むための装置の概略図である。装置は、図３に示された方法を行うために使用されることがある。図６において、装置は、受信ユニット６０１、分割ユニット６０２、バッファリングユニット６０３、および書き込みユニット６０４を備え、
受信ユニット６０１は、データ書き込み命令を受信するように構成され、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含み；
分割ユニット６０２は、受信ユニット６０１により受信された書き込まれるべきデータのサイズおよびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割するように構成され；
バッファリングユニット６０３は、書き込まれるべきデータを、分割ユニット６０２により分割されたバッファデータ領域内にバッファリングし、バッファデータ領域のバッファ属性情報と物理アドレスとを、分割ユニットにより分割されたバッファヘッダ内にバッファリングするように構成され、バッファデータ領域の属性情報は、バッファデータ領域の論理アドレスおよびサイズを含み；
書き込みユニット６０４は、物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むように構成される。
【００８１】
任意選択で、装置は、識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別するように構成された追加ユニット６０５をさらに備える。
【００８２】
書き込みユニット６０４は、内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、フラッシュメモリ内に、追加ユニットにより追加されたダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込む；または
バッファデータ領域が存在する時間が、予め設定された第２の閾値よりも大きいとき、フラッシュメモリ内に、追加ユニットにより追加されたダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むようにさらに構成される。
【００８３】
本発明の実施形態によって提供される、フラッシュメモリからデータを読み取るための装置およびフラッシュメモリ内へデータを書き込む装置において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリから／へデータを読み取る／書き込む単位と、フラッシュメモリ内でデータを読み取る／書き込む単位とを統一し、それにより、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題を解決する。
【００８４】
図７は、本発明の実施形態５によるユーザ機器の概略図である。図７に示されるように、機器は、ネットワークインターフェース７０１と、１または複数のプロセッサ７０２と、記憶装置（ｓｔｏｒａｇｅ）７０３と、ネットワーク７０１、プロセッサ７０２、およびメモリ７０３に接続するように構成されたシステムバス７０４とを備える。
【００８５】
たとえば、プロセッサ７０２はＣＰＵであることがある。
【００８６】
ネットワークインターフェース７０１は、別のデバイスと通信するように構成される。
【００８７】
記憶装置７０３は、内部メモリおよびフラッシュメモリを備える。１または複数のプログラムは、記憶装置７０３に記憶され、１または複数のプロセッサ７０２によって実行されるように構成され、１または複数のプログラムは、
データ読み取り命令を受信することであって、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む、受信することと；
物理アドレスを求めてバッファを検索することと；
物理アドレスがバッファにおいて発見されなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割することと；
物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングすることとを含む。
【００８８】
任意選択で、バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
【００８９】
任意選択で、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
【００９０】
さらに、１または複数のプログラムは、内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングすることをさらに含み、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む。
【００９１】
任意選択で、フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報ＣＩＤと、フラッシュメモリの識別子情報ＣＩＤに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
【００９２】
さらに、１または複数のプログラムは、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信することをさらに含む。
【００９３】
図８は、本発明の実施形態６によるユーザ機器の概略図である。図８に示されるように、機器は、ネットワークインターフェース８０１と、１または複数のプロセッサ８０２と、メモリ８０３と、ネットワークインターフェース８０１、プロセッサ８０２、および記憶装置８０３に接続するように構成されたシステムバス８０４とを備える。
【００９４】
たとえば、プロセッサ８０２はＣＰＵであることがある。
【００９５】
ネットワークインターフェース８０１は、別のデバイスと通信するように構成される。
【００９６】
記憶装置８０３は、内部メモリおよびフラッシュメモリを備える。１または複数のプログラムは、記憶装置８０３に記憶され、１または複数のプロセッサ８０２によって実行されるように構成され、１または複数のプログラムは、
データ書き込み命令を受信することであって、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含む、受信することと；
書き込まれるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割することと；
書き込まれるべきデータをバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングすることであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、バッファリングすることと；
物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むことと
を含む。
【００９７】
さらに、１または複数のプログラムは、
識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別することと；
内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むこと；または
バッファデータ領域が存在する時間が、予め設定された第２の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むことと
をさらに含む。
【００９８】
本発明の実施形態によって提供されるユーザ機器において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリから／フラッシュメモリへデータを読み取る／書き込む単位と、フラッシュメモリ内でデータを読み取る／書き込む単位とを統一し、それにより、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題を解決する。
【００９９】
さらに、当業者が認識し得るように、この明細書に開示された実施形態に説明される例と組み合わせて、ユニットおよびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、またはそれらの組合せによって実装されることがある。ハードウェアとソフトウェアの交換可能性を明確に説明するために、上記では概して機能に従って各例の構成およびステップを説明している。機能がハードウェアによって実行されるかまたはソフトウェアによって実行されるかは、技術的解決策の特定の適用および設計制約条件に依存する。当業者は、特定の適用ごとに説明された機能を実装するために異なる方法を使用し得るが、それらの実装が本発明の範囲を超えるとみなされるべきではない。
【０１００】
この明細書で開示された実施形態において説明された方法またはアルゴリズムのステップは、ハードウェア、プロセッサによって実行されるソフトウェアモジュール、またはそれらの組合せによって実装されることがある。ソフトウェアモジュールは、ランダムアクセスメモリ（ＲＡＭ）、メモリ、読み取り専用メモリ（ＲＯＭ）、電気的にプログラマブルなＲＯＭ、電気的に消去可能なプログラマブルＲＯＭ、レジスタ、ハードディスク、取り外し可能なディスク、ＣＤ−ＲＯＭ、または当技術分野で知られる任意の他の形態の記憶媒体において存在することがある。
【０１０１】
上記の特定の実装手法において、本発明の目的、技術的解決策、および利益がさらに詳細に説明されている。上記の説明は本発明の特定の実装手法にすぎず、本発明の保護範囲を限定するように意図されていないことを理解されたい。本発明の趣旨および原理から逸脱することなく行われる任意の修正、等価置換、または改良は、本発明の保護範囲内に入るものとする。
【図１】
2017527877.tif 000003
【図２】
2017527877.tif 000004
【図３】
2017527877.tif 000005
【図４】
2017527877.tif 000006
【図５】
2017527877.tif 000007
【図６】
2017527877.tif 000008
【図７】
2017527877.tif 000009
【図８】
2017527877.tif 000010
【手続補正書】
【提出日】平成29年1月5日(2017.1.5)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理の分野に関し、特に、フラッシュメモリから／フラッシュメモリへデータを読み取る／書き込むための方法および装置、ならびにユーザ機器に関する。
【背景技術】
【０００２】
現在、組み込まれたマルチメディアカード（ｅＭＭＣ）が、携帯電話の主記憶媒体として広く使用されており、ｅＭＭＣの内部ストレージ（ｓｔｏｒａｇｅ）デバイスは、略してフラッシュメモリと呼ばれる非線形フラッシュメモリ（ＮＡＮＤ  ｆｌａｓｈ）である。ＮＡＮＤフラッシュは、ページ単位でデータを読み取りおよび書き込み、ブロック単位でデータを消去する。当初は、ＮＡＮＤフラッシュのページは５１２バイトである。しかしながら、ＮＡＮＤフラッシュ工程の進歩により、ＮＡＮＤフラッシュの容量がますます大きくなり、ページのサイズも８キロバイト（略して８ＫＢもしくは８Ｋ）または１６Ｋに増大されている。ｅＭＭＣは、標準的で均一なプロトコルであり、読み取り／書き込みの指定された単位は５１２バイトである。結果として、書き込み増幅率が増大され、ｅＭＭＣの動作効率および耐用寿命が影響を受ける。
【０００３】
従来技術では、異なる製造者および種類のｅＭＭＣに対応するために、Ｌｉｎｕｘシステムにおいて物理ブロックは、ｅＭＭＣドライバを使用することによりサイズが均一であり、たとえば５１２バイトである。このように、ｅＭＭＣは５１２バイトを読み取る／書き込むが、ＮＡＮＤフラッシュの読み取り／書き込みの単位は、ページすなわち８ＫＢまたは１６ＫＢであるので、動作がＮＡＮＤフラッシュに対して８Ｋまたは１６Ｋに増幅され、ｅＭＭＣの低い読み取りおよび書き込み効率ならびにｅＭＭＣの短い耐用寿命の問題が生じる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明では、フラッシュメモリから／フラッシュメモリへデータを読み取る／書き込むための改善された方法および装置、ならびにユーザ機器を提供する。
【課題を解決するための手段】
【０００５】
本発明の実施形態は、フラッシュメモリから／フラッシュメモリへデータを読み取る／書き込むための方法および装置、ならびにユーザ機器を提供し、それにより、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題を解決することができる。
【０００６】
第１の態様によれば、フラッシュメモリからデータを読み取るための方法が提供され、方法は、
データ読み取り命令を受信するステップであって、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む、ステップと、
物理アドレスを求めてバッファを検索するステップと、
物理アドレスがバッファにおいて発見されなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するステップと、
物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングするステップと
を含む。
【０００７】
第１の態様を参照して、第１の態様の第１の実装手法において、バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
【０００８】
第１の態様を参照して、第１の態様の第２の実装手法において、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
【０００９】
第１の態様の第１の実装手法または第１の態様の第２の実装手法を参照して、第１の態様の第３の実装手法において、内部メモリからバッファデータ領域を分割するステップの後に、かつ物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取るステップの前に、方法は、
内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングするステップであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、ステップをさらに含む。
【００１０】
第１の態様、または第１の態様の上記３つの実装手法のいずれかの実装手法を参照して、第１の態様の第４の実装手法において、フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報ＣＩＤと、フラッシュメモリの識別子情報ＣＩＤに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
【００１１】
第１の態様を参照して、第１の態様の第５の実装手法において、データ読み取り命令を受信するステップの前に、方法は、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信するステップをさらに含む。
【００１２】
第２の態様によれば、フラッシュメモリ内にデータを書き込むための方法が提供され、方法は、
データ書き込み命令を受信するステップであって、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含む、ステップと、
書き込まれるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割するステップと、
書き込まれるべきデータをバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングするステップであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、ステップと、
物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むステップと
を含む。
【００１３】
第２の態様を参照して、第２の態様の第１の実装手法において、方法は、
識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別するステップと、
内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むステップ、または
バッファデータ領域が存在する時間が、予め設定された第２の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むステップと
をさらに含む。
【００１４】
第３の態様によれば、フラッシュメモリからデータを読み取るための装置が提供され、装置は、受信ユニット、検索ユニット、分割ユニット、およびバッファリングユニットを備え、
受信ユニットは、データ読み取り命令を受信するように構成され、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含み、
検索ユニットは、受信ユニットにより受信された物理アドレスを求めてバッファを検索するように構成され、
分割ユニットは、検索ユニットがバッファにおいて物理アドレスを発見しなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するように構成され、
バッファリングユニットは、物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータを、分割ユニットにより分割されたバッファデータ領域内にバッファリングするように構成される。
【００１５】
第３の態様を参照して、第３の態様の第１の実装手法において、分割ユニットは、
内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダにバッファリングするようにさらに構成され、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含み、
バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であり、または
バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であり、
フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報ＣＩＤと、フラッシュメモリの識別子情報ＣＩＤに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
【００１６】
第３の態様または第３の態様の第１の実装手法を参照して、第３の態様の第２の実装手法において、受信ユニットは、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信するようにさらに構成される。
【００１７】
第４の態様によれば、フラッシュメモリ内にデータを書き込むための装置が提供され、装置は、受信ユニット、分割ユニット、バッファリングユニット、および書き込みユニットを備え、
受信ユニットは、データ書き込み命令を受信するように構成され、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含み、
分割ユニットは、受信ユニットにより受信された書き込まれるべきデータのサイズおよびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割するように構成され、
バッファリングユニットは、書き込まれるべきデータを、分割ユニットにより分割されたバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとを、分割ユニットにより分割されたバッファヘッダ内にバッファリングするように構成され、バッファデータ領域の属性情報は、バッファデータ領域の論理アドレスおよびサイズを含み、
書き込みユニットは、物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むように構成される。
【００１８】
第４の態様を参照して、第４の態様の第１の実装手法において、装置は、識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別するように構成された追加ユニットをさらに備え、
書き込みユニットは、内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、フラッシュメモリ内に、追加ユニットにより追加されたダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込む、または
バッファデータ領域が存在する時間が、予め設定された第２の閾値よりも大きいとき、フラッシュメモリ内に、追加ユニットにより追加されたダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むようにさらに構成される。
【００１９】
第５の態様によれば、ユーザ機器が提供され、この機器は、
ネットワークインターフェースと、
１または複数のプロセッサと、
記憶装置（ｓｔｏｒａｇｅ）であって、内部メモリおよびフラッシュメモリを含む、該記憶装置と、
記憶装置に記憶され、１または複数のプロセッサによって実行されるように構成された１または複数のプログラムと
を備え、１または複数のプログラムは、
データ読み取り命令を受信することであって、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む、受信することと、
物理アドレスを求めてバッファを検索することと、
物理アドレスがバッファにおいて発見されなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割することと、
物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングすることと
を含む。
【００２０】
第５の態様を参照して、第５の態様の第１の実装手法において、バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
【００２１】
第５の態様を参照して、第５の態様の第２の実装手法において、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
【００２２】
第５の態様の第１の実装手法または第５の態様の第２の実装手法を参照して、第５の態様の第３の実装手法において、１または複数のプログラムは、内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングすることをさらに含み、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む。
【００２３】
第５の態様、または第５の態様の上記３つの実装手法のいずれかの実装手法を参照して、第５の態様の第４の実装手法において、フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報ＣＩＤと、フラッシュメモリの識別子情報ＣＩＤに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
【００２４】
第５の態様を参照して、第５の態様の第５の実装手法において、１または複数のプログラムは、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信することをさらに含む。
【００２５】
第６の態様によれば、ユーザ機器が提供され、この機器は、
ネットワークインターフェースと、
１または複数のプロセッサと、
記憶装置であって、内部メモリおよびフラッシュメモリを含む、該記憶装置と、
記憶装置に記憶され、１または複数のプロセッサによって実行されるように構成された１または複数のプログラムと
を備え、１または複数のプログラムは、
データ書き込み命令を受信することであって、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含む、受信することと、
書き込まれるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割することと、
書き込まれるべきデータをバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングすることであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、バッファリングすることと、
物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むことと
を含む。
【００２６】
第６の態様を参照して、第６の態様の第１の実装手法において、１または複数のプログラムは、
識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別することと、
内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むこと、または
バッファデータ領域が存在する時間が、予め設定された第２の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むことと
をさらに含む。
【００２７】
本発明の実施形態によって提供される、フラッシュメモリから／へデータを読み取る／書き込むための方法および装置ならびにユーザ機器において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリから／へデータを読み取る／書き込む単位と、フラッシュメモリ内でデータを読み取る／書き込む単位とを統一し、それにより、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題を解決する。
【図面の簡単な説明】
【００２８】
【図１】本発明の実施形態１によるフラッシュメモリからデータを読み取るための方法のフローチャートである。
【図２】本発明によるバッファの論理概略図である。
【図３】本発明の実施形態２によるフラッシュメモリ内にデータを書き込むための方法のフローチャートである。
【図４】本発明による識別子情報が追加された後のバッファの論理概略図である。
【図５】本発明の実施形態３によるフラッシュメモリからデータを読み取るための装置の概略図である。
【図６】本発明の実施形態４によるフラッシュメモリ内にデータを書き込むための装置の概略図である。
【図７】本発明の実施形態５によるユーザ機器の概略図である。
【図８】本発明の実施形態６によるユーザ機器の概略図である。
【発明を実施するための形態】
【００２９】
本発明の実施形態の目的、技術的解決策、および利点をより明確にするために、以下では、本発明の実施形態において添付の図面を参照して本発明の実施形態で技術的解決策を明確かつ完全に説明する。明らかに、説明される実施形態は本発明の実施形態の一部であるが全部ではない。本発明の実施形態に基づき当業者によって創作的な努力なしに得られる他のすべての実施形態が、本発明の保護範囲内に入るものとする。
【００３０】
本発明の完全な理解を提供するために、以下でさらに添付の図面を参照して本発明の実施形態を詳細に説明する。上記の実施形態は、本発明の保護範囲を限定するように意図されていない。
【００３１】
図１は、本発明の実施形態１によるフラッシュメモリからデータを読み取るための方法のフローチャートである。図１に示されるように、方法は、具体的には以下を含む。
【００３２】
Ｓ１１０：ユーザ機器が、データ読み取り命令を受信し、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む。
【００３３】
具体的には、Ｓ１１０は、ユーザ機器のプロセッサによって行われることがある。
【００３４】
フラッシュメモリは、電気的に消去可能なプログラマブル読み取り専用メモリの形態であり、動作中に複数回にわたり消去または書き込みされることが可能にされ、フラッシュメモリは不揮発性メモリである。フラッシュメモリは、ユーザ機器が永続的にデータを記憶するために使用する記憶媒体である。この明細書では、フラッシュメモリがＮＡＮＤフラッシュである例が説明のために使用され、ＮＡＮＤフラッシュはｅＭＭＣに組み込まれる。ユーザ機器がフラッシュメモリからデータを読み取るとき、フラッシュメモリにおけるデータはまず内部メモリにバッファリングされる必要があり、または、ユーザ機器がデータをフラッシュメモリ内に書き込むとき、データはやはり内部メモリにバッファリングされる必要があり、次いでデータはフラッシュメモリ内に書き込まれる。
【００３５】
異なる製造者のｅＭＭＣでは、ｅＭＭＣに対応するフラッシュメモリの実際の物理ブロックサイズ（Ｂｌｏｃｋ  ｓｉｚｅｓ）が異なることに留意されたい。加えて、異なる種類のｅＭＭＣでは、ｅＭＭＣに対応するフラッシュメモリの実際の物理ブロックサイズがやはり異なる。フラッシュメモリの実際の物理ブロックサイズは、ｅＭＭＣ内でデータを読み取り／書き込む単位を示すために使用され、より大きな値は、ｅＭＭＣ内のデータの読み取り／書き込みのより良い性能を示す。
【００３６】
Ｓ１２０：ユーザ機器は、物理アドレスを求めてバッファを検索する。
【００３７】
具体的には、Ｓ１２０は、ユーザ機器のプロセッサによって行われることがある。
【００３８】
バッファｂｕｆｆｅｒ＿ｃａｃｈｅは、内部メモリの一部であり、Ｌｉｎｕｘシステムでは、空き内部メモリすべてがバッファとして使用されることがあることに留意されたい。バッファは、フラッシュメモリにデータを記憶するために使用され、そうすることにより、フラッシュメモリにおけるデータに対するプロセッサによるアクセスが加速される。図２は、本発明によるバッファの論理概略図であり、バッファは、主に２つの部分、すなわち、バッファヘッダ（ｂｕｆｆｅｒ＿ｈｅａｄ）およびバッファデータ領域（ｂｕｆｆｅｒ＿ｄａｔａ）を含み、バッファヘッダは、プロセッサによってバッファを操作するために必要とされるすべての情報を含む。具体的には、バッファヘッダは、物理アドレスポインタ（ｂ＿ｂｌｏｃｋｎｒ）、次のバッファを指し示すポインタ（ｂ＿ｒｅｑｎｅｘｔ）、およびバッファデータ領域ポインタ（ｂ＿ｄａｔａ）を含み、ｂ＿ｂｌｏｃｋｎｒは、バッファデータ領域におけるデータの物理アドレスをフラッシュメモリに記憶するために使用され、ｂ＿ｒｅｑｎｅｘｔは、次のバッファのアドレスを記憶するために使用され、ｂ＿ｄａｔａは、バッファデータ領域のアドレスおよびサイズを記憶するために使用される。ｂｕｆｆｅｒ＿ｄａｔａは、バッファヘッダに対応するバッファデータ領域であり、データを記憶するために使用され、バッファデータ領域におけるデータは、フラッシュメモリにおけるブロックに対応する。各ｂｕｆｆｅｒ＿ｄａｔａのサイズは固定されない。バッファヘッダおよびバッファデータ領域は、データを読み取るプロセスにおいて動的に確立され、バッファヘッダに関する情報、およびバッファデータ領域にバッファリングされるデータもやはり動的に充填されることに留意されたい。データを読み取るための複数の異なる命令をプロセッサが処理する必要がある（すなわち、複数回にわたり異なるデータを読み取る必要がある）場合、複数のバッファが確立される必要がある。したがって、プロセッサが初めてデータ読み取り命令を受信するとき、バッファは内部メモリに存在しない。
【００３９】
プロセッサが既に複数の異なるデータを読み取っている場合、複数のバッファが確立され、各バッファが、バッファヘッダおよびバッファデータ領域を含むことに留意されたい。プロセッサがデータ読み取り命令を再度受信した場合、プロセッサは、確立されたバッファヘッダを順次にスキャンし、確立されたバッファヘッダにバッファリングされた物理アドレスを、新しく受信されたデータ読み取り命令における物理アドレスと比較し、比較結果で２つが同じ場合、バッファヘッダに対応するバッファデータ領域におけるデータを直接返し、比較結果で２つが異なる場合、それは、確立されたバッファヘッダにおいて物理アドレスが発見されないことを示す。
【００４０】
Ｓ１３０：ユーザ機器がバッファにおいて物理アドレスを発見しなかったとき、ユーザ機器は、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割する。
【００４１】
具体的には、Ｓ１３０は、ユーザ機器のプロセッサによって行われることがある。
【００４２】
フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報ＣＩＤ（Ｃａｒｄ  ＩＤｅｎｔｉｔｙ、ＣＩＤ）と、フラッシュメモリの識別子情報ＣＩＤに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層（Ｈｏｓｔ  Ｌａｙｅｒ）によって取得される。フラッシュメモリの識別子情報ＣＩＤとフラッシュメモリの実際の物理ブロックサイズとの間の対応のテーブルは、予め確立される。特定の確立プロセスでは、フラッシュメモリの予め設定された識別子情報が、標準コマンドを使用することによって、製造者のデータシート（Ｄａｔａ  ｓｈｅｅｔ）から取得され、次いで、製造者ＩＤが、フラッシュメモリの取得された予め設定された識別子情報から取得され、製造者ＩＤが取得された後、フラッシュメモリのモデルが、製造者ＩＤに従ってＣＩＤからさらに取得され、次いで、フラッシュメモリのモデルがルックアップテーブル（Ｌｏｏｋ−Ｕｐ−Ｔａｂｌｅ、ＬＵＴ）内にあるかどうかが決定され、はいの場合、ＬＵＴテーブルにおけるフラッシュメモリの実際の物理ブロックサイズが返され；そうでない場合、デフォルト値５１２バイトが返される。フラッシュメモリの実際の物理ブロックサイズまたはデフォルト値が取得された後、フラッシュメモリの識別子情報ＣＩＤとフラッシュメモリの実際の物理ブロックサイズとの間の対応のテーブルが確立されることができる。
【００４３】
任意選択で、フラッシュメモリの実際の物理ブロックサイズを取得した後、フラッシュメモリのドライバ層は、フラッシュメモリの取得された実際の物理ブロックサイズをフラッシュメモリのブロックデバイス層にフィードバックし、最終的に、ブロックデバイス層を使用することにより、フラッシュメモリの実際の物理ブロックサイズを、ｓｕｂｍｉｔ＿ｂｉｏインターフェース関数を使用することによってプロセッサに対して送信する。
【００４４】
バッファデータ領域が内部メモリから分割され、すなわち、バッファデータ領域が確立される。具体的には、内部メモリにおける一部の空間がバッファデータ領域として使用され、開始アドレスおよび終了アドレスを使用することによって空間が示される。たとえば、内部メモリのサイズが４Ｇであり、そこでアドレス２０００ＫＢとアドレス４０００ＫＢとの間にデータが記憶されず、したがって、プロセッサは２０００ＫＢ乃至２００８ＫＢを空間から分割してよく、合計８ＫＢの空間がバッファデータ領域として使用される。
【００４５】
具体的には、物理アドレスがバッファにおいて発見されなかったとき、それは、プロセッサが読み取られるべきデータを以前に読み取っておらず、すなわち、読み取られるべきデータがバッファデータ領域にバッファリングされていないことを示す。プロセッサは、バッファを確立する必要があり、そこで、バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であるか、または、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。たとえば、フラッシュメモリの実際の物理ブロックサイズが８Ｋである。しかしながら、読み取られるべきデータのサイズは２Ｋである場合、内部メモリから分割されるバッファデータ領域のサイズは８Ｋであり、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの１倍であり；読み取られるべきデータのサイズが２２Ｋの場合、内部メモリから分割されるバッファデータ領域のサイズは２４Ｋであり、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの３倍である。
【００４６】
任意選択で、内部メモリからバッファデータ領域を分割するステップの後に、かつ物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取るステップの前に、方法は、
内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングするステップであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、ステップをさらに含む。たとえば、バッファデータ領域の開始アドレスが２００Ｋであってサイズが２４Ｋである場合、開始アドレス２００Ｋおよびサイズ２４Ｋが、バッファデータ領域に対応するバッファヘッダに記憶される。
【００４７】
Ｓ１４０：ユーザ機器が、物理アドレスに従ってフラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングする。
【００４８】
具体的には、Ｓ１４０は、ユーザ機器のプロセッサによって行われることがある。
【００４９】
具体的には、プロセッサは、ｓｕｂｍｉｔ＿ｂｉｏインターフェース関数を使用することによって、ブロックデバイス読み取り要求をフラッシュメモリのドライバ層に送信し、読み取り要求は物理アドレスを含んでいる。フラッシュメモリのブロックデバイス層が、ｍｍｃ＿ｒｅｑｕｅｓｔインターフェース関数を使用することによって、ブロックデバイス読み取り要求を受信し、ブロックデバイス読み取り要求を受信した後、フラッシュメモリのブロックデバイス層は、読み取りコマンドをフラッシュメモリのドライバ層に送信し、読み取りコマンドは物理アドレスを含んでおり、フラッシュメモリのドライバ層は、受信された読み取りコマンドにおける物理アドレスに従って、読み取られるべきデータをフラッシュメモリから取得する。
【００５０】
フラッシュメモリのドライバ層は、読み取られるべきデータを取得した後、読み取られるべきデータをフラッシュメモリのブロックデバイス層に送信し；フラッシュメモリのブロックデバイス層は、読み取られるべきデータを受信した後、読み取られるべきデータを物理バッファ内にバッファリングし、読み取られるべきデータをプロセッサに転送し；プロセッサは、読み取られるべきデータを受信した後、読み取られるべきデータを分割されたバッファデータ領域内にバッファリングし、読み取られるべきデータを上位層アプリケーションに対して返す。
【００５１】
要約すると、本発明のこの実施形態によって提供されるフラッシュメモリからデータを読み取るための方法において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリからデータを読み取る単位と、フラッシュメモリ内でデータを読み取る単位とを統一し、それにより、フラッシュメモリの低い読み取り効率およびフラッシュメモリの短い耐用寿命の問題を解決する。
【００５２】
図３は、本発明の実施形態２によるフラッシュメモリ内にデータを書き込むための方法のフローチャートである。図３に示されるように、方法は具体的には以下を含む。
【００５３】
Ｓ３１０：ユーザ機器が、データ書き込み命令を受信し、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含む。
【００５４】
具体的には、Ｓ３１０は、ユーザ機器のプロセッサによって行われることがある。
【００５５】
フラッシュメモリは、電気的に消去可能なプログラマブル読み取り専用メモリの形態であり、動作中に複数回にわたり消去または書き込みされることが可能にされ、フラッシュメモリは不揮発性メモリである。フラッシュメモリは、ユーザ機器が永続的にデータを記憶するために使用する記憶媒体である。この明細書では、フラッシュメモリがＮＡＮＤフラッシュである例が説明のために使用され、ＮＡＮＤフラッシュはｅＭＭＣに組み込まれる。ユーザ機器がフラッシュメモリからデータを読み取るとき、フラッシュメモリにおけるデータはまず内部メモリにバッファリングされる必要があり；または、ユーザ機器がデータをフラッシュメモリ内に書き込むとき、データはやはり内部メモリにバッファリングされる必要があり、次いでデータはフラッシュメモリ内に書き込まれる。
【００５６】
Ｓ３２０：ユーザ機器が、書き込まれるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割する。
【００５７】
具体的には、Ｓ３２０は、ユーザ機器のプロセッサによって行われることがある。
【００５８】
バッファヘッダおよびバッファデータ領域は、フラッシュメモリ内にデータを書き込むプロセスにおいて動的に確立され、バッファヘッダに関する情報、およびバッファデータ領域にバッファリングされるデータもやはり動的に充填されることに留意されたい。データを書き込むための複数の異なる命令をプロセッサが処理する必要がある（すなわち、複数回にわたり異なるデータを書き込む必要がある）場合、複数のバッファが確立される必要がある。したがって、プロセッサが初めてデータ書き込み命令を受信するとき、バッファは内部メモリに存在しない。プロセッサが既に複数の異なるデータをフラッシュメモリ内に書き込んでいる場合、複数のバッファが確立され、各バッファが、バッファヘッダおよびバッファデータ領域を含む。
【００５９】
バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であるか、または、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であることに留意されたい。
【００６０】
Ｓ３３０：ユーザ機器が、書き込まれるべきデータをバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングし、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む。
【００６１】
具体的には、Ｓ３３０は、ユーザ機器のプロセッサによって行われることがある。
【００６２】
たとえば、バッファデータ領域の開始アドレスが２００Ｋであってサイズが２４Ｋである場合、開始アドレス２００Ｋおよびサイズ２４Ｋが、バッファデータ領域に対応するバッファヘッダに記憶される。
【００６３】
Ｓ３４０：ユーザ機器が、物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込む。
【００６４】
具体的には、Ｓ３４０は、ユーザ機器のプロセッサによって行われることがある。
【００６５】
物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むことは、具体的には以下のようである。
【００６６】
プロセッサは、ｓｕｂｍｉｔ＿ｂｉｏインターフェース関数を使用することによって、ブロックデバイス書き込み要求をフラッシュメモリのドライバ層に送信し、書き込み要求は物理アドレスを含んでいる。フラッシュメモリのブロックデバイス層が、ｍｍｃ＿ｒｅｑｕｅｓｔインターフェース関数を使用することによって、ブロックデバイス書き込み要求を受信し、ブロックデバイス書き込み要求を受信した後、フラッシュメモリのブロックデバイス層は、ブロックデバイス書き込み要求をフラッシュメモリのドライバ層に転送し、最後に、フラッシュメモリに関係付けられたドライバ層が、物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込み、書き込みが成功したことを示す情報をフラッシュメモリのブロックデバイス層に対して返す。
【００６７】
書き込みが成功したことを示す情報を受信した後、フラッシュメモリのブロックデバイス層は、書き込みが成功したことを示す情報をプロセッサに転送し；最後に、プロセッサは、書き込みが成功したことを示す情報を上位層アプリケーションに対して返し、次のデータ書き込み命令の受信を待機する。
【００６８】
要約すると、本発明のこの実施形態によって提供されるフラッシュメモリ内にデータを書き込むための方法において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリ内へデータを書き込む単位と、フラッシュメモリ内でデータを書き込む単位とを統一し、それにより、フラッシュメモリの低い書き込み効率およびフラッシュメモリの短い耐用寿命の問題を解決する。
【００６９】
任意選択で、方法は、以下のステップをさらに含むことがある。
【００７０】
Ｓ３５０：識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別する。
【００７１】
バッファのバッファリング機能により、データ書き込みの動作は実際に遅延され、バッファデータ領域におけるデータがフラッシュメモリにおけるデータよりも新しいとき、データはダーティデータと呼ばれる。本発明の特定の実装手法において、バッファデータ領域に識別子情報を追加することに関して、図４に示される識別子情報が追加された後のバッファの論理概略図を参照する。図４では、３つのバッファが含まれ、各バッファは、バッファヘッダ（ｂｕｆｆｅｒ＿ｈｅａｄ）およびバッファデータ領域（ｂｕｆｆｅｒ＿ｄａｔａ）を含み、バッファヘッダは、ｂ＿ｂｌｏｃｋｎｒ、ｂ＿ｒｅｑｎｅｘｔ、識別子情報（ｄｉｒｔｙ）、およびｂ＿ｄａｔａを含み、ｂ＿ｂｌｏｃｋｎｒは、対応するバッファデータ領域におけるデータの物理アドレスをフラッシュメモリに記憶するために使用され、ｂ＿ｒｅｑｎｅｘｔは、次のバッファのアドレスを記憶するために使用され、ｄｉｒｔｙは、新しく追加された識別子情報であり、識別子情報が０である場合、それは、対応するバッファデータ領域におけるデータが通常のデータであることを示し、識別子情報が１である場合、それは、対応するバッファデータ領域におけるデータがダーティデータであることを示し；ｂ＿ｄａｔａは、対応するバッファデータ領域のアドレスおよびサイズを記憶するために使用され；ｂｕｆｆｅｒ＿ｄａｔａは、対応するバッファデータ領域であり、データを記憶するために使用され、各ｂｕｆｆｅｒ＿ｄａｔａのサイズは固定されないが、ｂｕｆｆｅｒ＿ｄａｔａは、フラッシュメモリの実際の物理ブロックサイズを単位として使用する。
【００７２】
識別子情報をバッファデータ領域に追加することは、具体的には、フラッシュメモリの実際の物理ブロックサイズを単位として使用することによって、識別子情報をバッファデータ領域に追加することである。図４に示されるように、フラッシュメモリの実際の物理ブロックサイズが８Ｋであることが仮定され、８Ｋはフラッシュメモリの実際の物理ブロックサイズの１倍であるので、１つの識別子情報が追加され；１６Ｋはフラッシュメモリの実際の物理ブロックサイズの２倍であるので、２つの識別子情報が追加され；２４Ｋはフラッシュメモリの実際の物理ブロックサイズの３倍であるので、３つの識別子情報が追加される。
【００７３】
Ｓ３６０：内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込み；または、
バッファデータ領域が存在する時間が、予め設定された第２の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込む。
【００７４】
図４において、バッファデータ領域がダーティデータを示す情報として識別されるとき、すなわちバッファデータ領域のダーティ値が０であるとき、バッファデータにおけるデータがフラッシュメモリへと書き込まれる２つの場合がある。すなわち、
１）内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータが、フラッシュメモリ内に書き込まれる場合と；
２）バッファデータ領域が内部メモリに存在する時間が、予め設定された第２の閾値よりも大きいとき、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータが、フラッシュメモリ内に書き込まれる場合とがある。
【００７５】
上記２つの手法によって、バッファデータ領域におけるデータが無期限に内部メモリに存在しないことが保証されることができる。
【００７６】
フラッシュデーモン（Ｆｌｕｓｈ  ｄａｅｍｏｎ）が、同時にバッファヘッダにおけるダーティデータを示す情報として識別されるすべてのバッファデータ領域を検出し、したがって、それらのバッファデータ領域におけるデータがフラッシュメモリ内に書き込まれることがあることに留意されたい。
【００７７】
図５は、本発明の実施形態３によるフラッシュメモリからデータを読み取るための装置の概略図である。装置は、図１に示された方法を行うために使用されることがある。図５において、装置は、受信ユニット５０１、検索ユニット５０２、分割ユニット５０３、およびバッファリングユニット５０４を備え、
受信ユニット５０１は、データ読み取り命令を受信するように構成され、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含み；
検索ユニット５０２は、受信ユニット５０１により受信された物理アドレスを求めてバッファを検索するように構成され；
分割ユニット５０３は、検索ユニット５０２がバッファにおいて物理アドレスを発見しなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するように構成され；
バッファリングユニット５０４は、物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータを、分割ユニット５０３により分割されたバッファデータ領域内にバッファリングするように構成される。
【００７８】
任意選択で、分割ユニット５０３は、
内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域のバッファ属性情報と物理アドレスとをバッファヘッダにバッファリングするようにさらに構成され、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含み、
バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であり；または
バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であり；
フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報ＣＩＤと、フラッシュメモリの識別子情報ＣＩＤに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
【００７９】
任意選択で、受信ユニット５０１は、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信するようにさらに構成される。
【００８０】
図６は、本発明の実施形態４によるフラッシュメモリ内にデータを書き込むための装置の概略図である。装置は、図３に示された方法を行うために使用されることがある。図６において、装置は、受信ユニット６０１、分割ユニット６０２、バッファリングユニット６０３、および書き込みユニット６０４を備え、
受信ユニット６０１は、データ書き込み命令を受信するように構成され、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含み；
分割ユニット６０２は、受信ユニット６０１により受信された書き込まれるべきデータのサイズおよびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割するように構成され；
バッファリングユニット６０３は、書き込まれるべきデータを、分割ユニット６０２により分割されたバッファデータ領域内にバッファリングし、バッファデータ領域のバッファ属性情報と物理アドレスとを、分割ユニットにより分割されたバッファヘッダ内にバッファリングするように構成され、バッファデータ領域の属性情報は、バッファデータ領域の論理アドレスおよびサイズを含み；
書き込みユニット６０４は、物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むように構成される。
【００８１】
任意選択で、装置は、識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別するように構成された追加ユニット６０５をさらに備える。
【００８２】
書き込みユニット６０４は、内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、フラッシュメモリ内に、追加ユニットにより追加されたダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込む；または
バッファデータ領域が存在する時間が、予め設定された第２の閾値よりも大きいとき、フラッシュメモリ内に、追加ユニットにより追加されたダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むようにさらに構成される。
【００８３】
本発明の実施形態によって提供される、フラッシュメモリからデータを読み取るための装置およびフラッシュメモリ内へデータを書き込む装置において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリから／へデータを読み取る／書き込む単位と、フラッシュメモリ内でデータを読み取る／書き込む単位とを統一し、それにより、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題を解決する。
【００８４】
図７は、本発明の実施形態５によるユーザ機器の概略図である。図７に示されるように、機器は、ネットワークインターフェース７０１と、１または複数のプロセッサ７０２と、記憶装置（ｓｔｏｒａｇｅ）７０３と、ネットワーク７０１、プロセッサ７０２、およびメモリ７０３に接続するように構成されたシステムバス７０４とを備える。
【００８５】
たとえば、プロセッサ７０２はＣＰＵであることがある。
【００８６】
ネットワークインターフェース７０１は、別のデバイスと通信するように構成される。
【００８７】
記憶装置７０３は、内部メモリおよびフラッシュメモリを備える。１または複数のプログラムは、記憶装置７０３に記憶され、１または複数のプロセッサ７０２によって実行されるように構成され、１または複数のプログラムは、
データ読み取り命令を受信することであって、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む、受信することと；
物理アドレスを求めてバッファを検索することと；
物理アドレスがバッファにおいて発見されなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割することと；
物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングすることとを含む。
【００８８】
任意選択で、バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
【００８９】
任意選択で、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
【００９０】
さらに、１または複数のプログラムは、内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングすることをさらに含み、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む。
【００９１】
任意選択で、フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報ＣＩＤと、フラッシュメモリの識別子情報ＣＩＤに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
【００９２】
さらに、１または複数のプログラムは、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信することをさらに含む。
【００９３】
図８は、本発明の実施形態６によるユーザ機器の概略図である。図８に示されるように、機器は、ネットワークインターフェース８０１と、１または複数のプロセッサ８０２と、メモリ８０３と、ネットワークインターフェース８０１、プロセッサ８０２、および記憶装置８０３に接続するように構成されたシステムバス８０４とを備える。
【００９４】
たとえば、プロセッサ８０２はＣＰＵであることがある。
【００９５】
ネットワークインターフェース８０１は、別のデバイスと通信するように構成される。
【００９６】
記憶装置８０３は、内部メモリおよびフラッシュメモリを備える。１または複数のプログラムは、記憶装置８０３に記憶され、１または複数のプロセッサ８０２によって実行されるように構成され、１または複数のプログラムは、
データ書き込み命令を受信することであって、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含む、受信することと；
書き込まれるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割することと；
書き込まれるべきデータをバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングすることであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、バッファリングすることと；
物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むことと
を含む。
【００９７】
さらに、１または複数のプログラムは、
識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別することと；
内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むこと；または
バッファデータ領域が存在する時間が、予め設定された第２の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むことと
をさらに含む。
【００９８】
本発明の実施形態によって提供されるユーザ機器において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリから／フラッシュメモリへデータを読み取る／書き込む単位と、フラッシュメモリ内でデータを読み取る／書き込む単位とを統一し、それにより、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題を解決する。
【００９９】
さらに、当業者が認識し得るように、この明細書に開示された実施形態に説明される例と組み合わせて、ユニットおよびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、またはそれらの組合せによって実装されることがある。ハードウェアとソフトウェアの交換可能性を明確に説明するために、上記では概して機能に従って各例の構成およびステップを説明している。機能がハードウェアによって実行されるかまたはソフトウェアによって実行されるかは、技術的解決策の特定の適用および設計制約条件に依存する。当業者は、特定の適用ごとに説明された機能を実装するために異なる方法を使用し得るが、それらの実装が本発明の範囲を超えるとみなされるべきではない。
【０１００】
この明細書で開示された実施形態において説明された方法またはアルゴリズムのステップは、ハードウェア、プロセッサによって実行されるソフトウェアモジュール、またはそれらの組合せによって実装されることがある。ソフトウェアモジュールは、ランダムアクセスメモリ（ＲＡＭ）、メモリ、読み取り専用メモリ（ＲＯＭ）、電気的にプログラマブルなＲＯＭ、電気的に消去可能なプログラマブルＲＯＭ、レジスタ、ハードディスク、取り外し可能なディスク、ＣＤ−ＲＯＭ、または当技術分野で知られる任意の他の形態の記憶媒体において存在することがある。
【０１０１】
上記の特定の実装手法において、本発明の目的、技術的解決策、および利益がさらに詳細に説明されている。上記の説明は本発明の特定の実装手法にすぎず、本発明の保護範囲を限定するように意図されていないことを理解されたい。本発明の趣旨および原理から逸脱することなく行われる任意の修正、等価置換、または改良は、本発明の保護範囲内に入るものとする。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
フラッシュメモリからデータを読み取るための方法であって、
データ読み取り命令を受信するステップであって、前記データ読み取り命令は、読み取られるべきデータのサイズ、および前記フラッシュメモリにおける前記読み取られるべきデータの物理アドレスを含む、該ステップと、
前記物理アドレスを求めてバッファを検索するステップと、
前記物理アドレスが前記バッファにおいて発見されなかったとき、前記読み取られるべきデータの前記サイズ、および前記フラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するステップと、
前記内部メモリから、前記バッファデータ領域に対応するバッファヘッダを分割し、前記バッファデータ領域の属性情報と前記物理アドレスとを前記バッファヘッダ内にバッファリングするステップであって、前記バッファデータ領域の前記属性情報は、前記バッファデータ領域のアドレスおよび前記サイズを含む、該ステップと、
前記物理アドレスに従って、前記フラッシュメモリから前記読み取られるべきデータを読み取り、前記読み取られるべきデータを前記バッファデータ領域内にバッファリングするステップと
を含むことを特徴とする方法。
【請求項２】
前記バッファデータ領域のサイズは、前記読み取られるべきデータの前記サイズよりも大きく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であることを特徴とする請求項１に記載の方法。
【請求項３】
前記バッファデータ領域のサイズは、前記読み取られるべきデータの前記サイズと等しく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であることを特徴とする請求項１に記載の方法。
【請求項４】
前記フラッシュメモリの前記実際の物理ブロックサイズは、前記フラッシュメモリの識別子情報ＣＩＤと、前記フラッシュメモリの前記識別子情報ＣＩＤに従った前記フラッシュメモリの前記実際の物理ブロックサイズとの間の対応テーブルから、前記フラッシュメモリのドライバ層によって取得されることを特徴とする請求項１ないし３のいずれか１つに記載の方法。
【請求項５】
データ読み取り命令を前記受信するステップの前に、前記フラッシュメモリのブロックデバイス層を使用することによって、前記フラッシュメモリのドライバ層により送信された前記フラッシュメモリの前記実際の物理ブロックサイズを受信するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項６】
フラッシュメモリ内にデータを書き込むための方法であって、
データ書き込み命令を受信するステップであって、前記データ書き込み命令は、書き込まれるべきデータ、前記書き込まれるべきデータのサイズ、および前記フラッシュメモリにおける前記書き込まれるべきデータの物理アドレスを含む、該ステップと、
前記書き込まれるべきデータの前記サイズ、および前記フラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、前記バッファデータ領域に対応するバッファヘッダを分割するステップと、
前記書き込まれるべきデータを前記バッファデータ領域内にバッファリングし、前記バッファデータ領域の属性情報と前記物理アドレスとを前記バッファヘッダ内にバッファリングするステップであって、前記バッファデータ領域の前記属性情報は、前記バッファデータ領域のアドレスおよびサイズを含む、ステップと、
前記物理アドレスに従って、前記書き込まれるべきデータを前記フラッシュメモリ内に書き込むステップと
を含むことを特徴とする方法。
【請求項７】
識別子情報を前記バッファデータ領域に追加し、前記バッファデータ領域におけるデータが前記フラッシュメモリにおけるデータと一致しないとき、前記識別子情報をダーティデータを示す情報として識別するステップと、
前記内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、前記フラッシュメモリ内に、ダーティデータを示す前記情報である前記識別子情報に対応する前記バッファデータ領域におけるデータを書き込むステップ、または
前記バッファデータ領域が存在する時間が、予め設定された第２の閾値よりも大きいとき、前記フラッシュメモリ内に、ダーティデータを示す前記情報である前記識別子情報に対応する前記バッファデータ領域におけるデータを書き込むステップと
をさらに含むことを特徴とする請求項６に記載の方法。
【請求項８】
フラッシュメモリからデータを読み取るための装置であって、受信ユニット、検索ユニット、分割ユニット、およびバッファリングユニットを備え、
前記受信ユニットは、データ読み取り命令を読み取るように構成され、前記データ読み取り命令は、読み取られるべきデータのサイズ、および前記フラッシュメモリにおける前記読み取られるべきデータの物理アドレスを含み、
前記検索ユニットは、前記受信ユニットにより受信された前記物理アドレスを求めてバッファを検索するように構成され、
前記分割ユニットは、前記検索ユニットが前記バッファにおいて前記物理アドレスを発見しないとき、前記読み取られるべきデータの前記サイズ、および前記フラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するように構成され、
前記バッファリングユニットは、前記物理アドレスに従って、前記フラッシュメモリから前記読み取られるべきデータを読み取り、前記読み取られるべきデータを、前記分割ユニットにより分割された前記バッファデータ領域内にバッファリングするように構成されたことを特徴とする装置。
【請求項９】
前記分割ユニットは、
前記内部メモリから、前記バッファデータ領域に対応するバッファヘッダを分割し、前記バッファデータ領域の属性情報と前記物理アドレスとを前記バッファヘッダにバッファリングするようにさらに構成され、前記バッファデータ領域の前記属性情報は、前記バッファデータ領域のアドレスおよびサイズを含み、
前記バッファデータ領域の前記サイズは、前記読み取られるべきデータの前記サイズよりも大きく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であり、または
前記バッファデータ領域の前記サイズは、前記読み取られるべきデータの前記サイズと等しく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であり、
前記フラッシュメモリの前記実際の物理ブロックサイズは、前記フラッシュメモリの識別子情報ＣＩＤと、前記フラッシュメモリの前記識別子情報ＣＩＤに従った前記フラッシュメモリの前記実際の物理ブロックサイズとの間の対応テーブルから、前記フラッシュメモリのドライバ層によって取得される
ことを特徴とする請求項８に記載の装置。
【請求項１０】
前記受信ユニットは、前記フラッシュメモリのブロックデバイス層を使用することによって、前記フラッシュメモリのドライバ層によって送信された前記フラッシュメモリの前記実際の物理ブロックサイズを受信するようにさらに構成されたことを特徴とする請求項８または９に記載の装置。
【請求項１１】
ユーザ機器であって、
ネットワークインターフェースと、
１または複数のプロセッサと、
記憶装置であって、内部メモリおよびフラッシュメモリを含む、該記憶装置と、
前記記憶装置に記憶され、前記１または複数のプロセッサによって実行されるように構成された１または複数のプログラムと
を備え、前記１または複数のプログラムは、
データ読み取り命令を受信することであって、前記データ読み取り命令は、読み取られるべきデータのサイズ、および前記フラッシュメモリにおける前記読み取られるべきデータの物理アドレスを含む、受信することと、
前記物理アドレスを求めてバッファを検索することと、
前記物理アドレスが前記バッファにおいて発見されなかったとき、前記読み取られるべきデータの前記サイズ、および前記フラッシュメモリの実際の物理ブロックサイズに従って、前記内部メモリからバッファデータ領域を分割することと、
前記物理アドレスに従って、前記フラッシュメモリから前記読み取られるべきデータを読み取り、前記読み取られるべきデータを前記バッファデータ領域内にバッファリングすることと、
前記フラッシュメモリのブロックデバイス層を使用することによって、前記フラッシュメモリのドライバ層によって送信された前記フラッシュメモリの前記実際の物理ブロックサイズを受信することと
を含むことを特徴とするユーザ機器。
【請求項１２】
前記バッファデータ領域のサイズは、前記読み取られるべきデータの前記サイズよりも大きく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であることを特徴とする請求項１１に記載のユーザ機器。
【請求項１３】
前記バッファデータ領域のサイズは、前記読み取られるべきデータの前記サイズと等しく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であることを特徴とする請求項１１に記載のユーザ機器。
【請求項１４】
前記１または複数のプログラムは、前記内部メモリから、前記バッファデータ領域に対応するバッファヘッダを分割し、前記バッファデータ領域の属性情報と前記物理アドレスとを前記バッファヘッダ内にバッファリングすることをさらに含み、前記バッファデータ領域の前記属性情報は、前記バッファデータ領域のアドレスおよび前記サイズを含むことを特徴とする請求項１２または１３に記載のユーザ機器。
【請求項１５】
前記フラッシュメモリの前記実際の物理ブロックサイズは、前記フラッシュメモリの識別子情報ＣＩＤと、前記フラッシュメモリの前記識別子情報ＣＩＤに従った前記フラッシュメモリの前記実際の物理ブロックサイズとの間の対応テーブルから、前記フラッシュメモリのドライバ層によって取得されることを特徴とする請求項１１ないし１４のいずれか１つに記載のユーザ機器。
【請求項１６】
ユーザ機器であって、
ネットワークインターフェースと、
１または複数のプロセッサと、
記憶装置であって、内部メモリおよびフラッシュメモリを含む、該記憶装置と、
前記記憶装置に記憶され、前記１または複数のプロセッサによって実行されるように構成された１または複数のプログラムと
を備え、前記１または複数のプログラムは、
データ書き込み命令を受信することであって、前記データ書き込み命令は、書き込まれるべきデータ、前記書き込まれるべきデータのサイズ、および前記フラッシュメモリにおける前記書き込まれるべきデータの物理アドレスを含む、受信することと、
前記書き込まれるべきデータの前記サイズ、および前記フラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、前記バッファデータ領域に対応するバッファヘッダを分割することと、
前記書き込まれるべきデータを前記バッファデータ領域内にバッファリングし、前記バッファデータ領域の属性情報と前記物理アドレスとを前記バッファヘッダ内にバッファリングすることであって、前記バッファデータ領域の前記属性情報は、前記バッファデータ領域のアドレスおよびサイズを含む、バッファリングすることと、
前記物理アドレスに従って、前記書き込まれるべきデータを前記フラッシュメモリ内に書き込むことと
を含むことを特徴とするユーザ機器。
【請求項１７】
前記１または複数のプログラムは、
識別子情報を前記バッファデータ領域に追加し、前記バッファデータ領域におけるデータが前記フラッシュメモリにおけるデータと一致しないとき、前記識別子情報をダーティデータを示す情報として識別することと、
前記内部メモリの占有率が、予め設定された第１の閾値よりも大きいとき、前記フラッシュメモリ内に、ダーティデータを示す前記情報である前記識別子情報に対応する前記バッファデータ領域におけるデータを書き込むこと、または
前記バッファデータ領域が存在する時間が、予め設定された第２の閾値よりも大きいとき、前記フラッシュメモリ内に、ダーティデータを示す前記情報である前記識別子情報に対応する前記バッファデータ領域におけるデータを書き込むことと
をさらに含むことを特徴とする請求項１６に記載のユーザ機器。
【国際調査報告】
2017527877.tif 000011
2017527877.tif 000012
2017527877.tif 000013
2017527877.tif 000014