JP2017527877A - フラッシュメモリから/フラッシュメモリへデータを読み取る/書き込むための方法および装置、ならびにユーザ機器 - Google Patents

フラッシュメモリから/フラッシュメモリへデータを読み取る/書き込むための方法および装置、ならびにユーザ機器 Download PDF

Info

Publication number
JP2017527877A
JP2017527877A JP2016575098A JP2016575098A JP2017527877A JP 2017527877 A JP2017527877 A JP 2017527877A JP 2016575098 A JP2016575098 A JP 2016575098A JP 2016575098 A JP2016575098 A JP 2016575098A JP 2017527877 A JP2017527877 A JP 2017527877A
Authority
JP
Japan
Prior art keywords
data
flash memory
buffer
data area
size
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016575098A
Other languages
English (en)
Inventor
志▲剛▼ 李
志▲剛▼ 李
国▲軍▼ 施
国▲軍▼ 施
迎春 ▲趙▼
迎春 ▲趙▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2017527877A publication Critical patent/JP2017527877A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Microelectronics & Electronic Packaging (AREA)

Abstract

本発明は、フラッシュメモリから/へデータを読み取る/書き込むための方法および装置、ならびにユーザ機器に関する。この方法は、データ読み取り命令を受信するステップであって、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む、ステップと、物理アドレスを求めてバッファを検索するステップと、物理アドレスがバッファにおいて発見されなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するステップと、物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングするステップとを含む。したがって、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題が解決されることができる。

Description

本発明は、データ処理の分野に関し、特に、フラッシュメモリから/フラッシュメモリへデータを読み取る/書き込むための方法および装置、ならびにユーザ機器に関する。
現在、組み込まれたマルチメディアカード(embedded Multi Media Card(eMMC))が、携帯電話の主記憶媒体として広く使用されており、eMMCの内部ストレージ(storage)デバイスは、略してフラッシュメモリと呼ばれる非線形フラッシュメモリ(NAND flash)である。NANDフラッシュは、ページ単位でデータを読み取りおよび書き込み、ブロック単位でデータを消去する。当初は、NANDフラッシュのページは512バイトである。しかしながら、NANDフラッシュ工程の進歩により、NANDフラッシュの容量がますます大きくなり、ページのサイズも8キロバイト(略して8KBもしくは8K)または16Kに増大されている。eMMCは、標準的で均一なプロトコルであり、読み取り/書き込みの指定された単位は512バイトである。結果として、書き込み増幅率が増大され、eMMCの動作効率および耐用寿命が影響を受ける。
従来技術では、異なる製造者および種類のeMMCに対応するために、Linuxシステムにおいて物理ブロックは、eMMCドライバを使用することによりサイズが均一であり、たとえば512バイトである。このように、eMMCは512バイトを読み取る/書き込むが、NANDフラッシュの読み取り/書き込みの単位は、ページすなわち8KBまたは16KBであるので、動作がNANDフラッシュに対して8Kまたは16Kに増幅され、eMMCの低い読み取りおよび書き込み効率ならびにeMMCの短い耐用寿命の問題が生じる。
本発明では、フラッシュメモリから/フラッシュメモリへデータを読み取る/書き込むための改善された方法および装置、ならびにユーザ機器を提供する。
本発明の実施形態は、フラッシュメモリから/フラッシュメモリへデータを読み取る/書き込むための方法および装置、ならびにユーザ機器を提供し、それにより、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題を解決することができる。
第1の態様によれば、フラッシュメモリからデータを読み取るための方法が提供され、方法は、
データ読み取り命令を受信するステップであって、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む、ステップと、
物理アドレスを求めてバッファを検索するステップと、
物理アドレスがバッファにおいて発見されなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するステップと、
物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングするステップと
を含む。
第1の態様を参照して、第1の態様の第1の実装手法において、バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
第1の態様を参照して、第1の態様の第2の実装手法において、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
第1の態様の第1の実装手法または第1の態様の第2の実装手法を参照して、第1の態様の第3の実装手法において、内部メモリからバッファデータ領域を分割するステップの後に、かつ物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取るステップの前に、方法は、
内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングするステップであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、ステップをさらに含む。
第1の態様、または第1の態様の上記3つの実装手法のいずれかの実装手法を参照して、第1の態様の第4の実装手法において、フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報CIDと、フラッシュメモリの識別子情報CIDに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
第1の態様を参照して、第1の態様の第5の実装手法において、データ読み取り命令を受信するステップの前に、方法は、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信するステップをさらに含む。
第2の態様によれば、フラッシュメモリ内にデータを書き込むための方法が提供され、方法は、
データ書き込み命令を受信するステップであって、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含む、ステップと、
書き込まれるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割するステップと、
書き込まれるべきデータをバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングするステップであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、ステップと、
物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むステップと
を含む。
第2の態様を参照して、第2の態様の第1の実装手法において、方法は、
識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別するステップと、
内部メモリの占有率が、予め設定された第1の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むステップ、または
バッファデータ領域が存在する時間が、予め設定された第2の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むステップと
をさらに含む。
第3の態様によれば、フラッシュメモリからデータを読み取るための装置が提供され、装置は、受信ユニット、検索ユニット、分割ユニット、およびバッファリングユニットを備え、
受信ユニットは、データ読み取り命令を受信するように構成され、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含み、
検索ユニットは、受信ユニットにより受信された物理アドレスを求めてバッファを検索するように構成され、
分割ユニットは、検索ユニットがバッファにおいて物理アドレスを発見しなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するように構成され、
バッファリングユニットは、物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータを、分割ユニットにより分割されたバッファデータ領域内にバッファリングするように構成される。
第3の態様を参照して、第3の態様の第1の実装手法において、分割ユニットは、
内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダにバッファリングするようにさらに構成され、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含み、
バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であり、または
バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であり、
フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報CIDと、フラッシュメモリの識別子情報CIDに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
第3の態様または第3の態様の第1の実装手法を参照して、第3の態様の第2の実装手法において、受信ユニットは、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信するようにさらに構成される。
第4の態様によれば、フラッシュメモリ内にデータを書き込むための装置が提供され、装置は、受信ユニット、分割ユニット、バッファリングユニット、および書き込みユニットを備え、
受信ユニットは、データ書き込み命令を受信するように構成され、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含み、
分割ユニットは、受信ユニットにより受信された書き込まれるべきデータのサイズおよびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割するように構成され、
バッファリングユニットは、書き込まれるべきデータを、分割ユニットにより分割されたバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとを、分割ユニットにより分割されたバッファヘッダ内にバッファリングするように構成され、バッファデータ領域の属性情報は、バッファデータ領域の論理アドレスおよびサイズを含み、
書き込みユニットは、物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むように構成される。
第4の態様を参照して、第4の態様の第1の実装手法において、装置は、識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別するように構成された追加ユニットをさらに備え、
書き込みユニットは、内部メモリの占有率が、予め設定された第1の閾値よりも大きいとき、フラッシュメモリ内に、追加ユニットにより追加されたダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込む、または
バッファデータ領域が存在する時間が、予め設定された第2の閾値よりも大きいとき、フラッシュメモリ内に、追加ユニットにより追加されたダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むようにさらに構成される。
第5の態様によれば、ユーザ機器が提供され、この機器は、
ネットワークインターフェースと、
1または複数のプロセッサと、
記憶装置(storage)であって、内部メモリおよびフラッシュメモリを含む、該記憶装置と、
記憶装置に記憶され、1または複数のプロセッサによって実行されるように構成された1または複数のプログラムと
を備え、1または複数のプログラムは、
データ読み取り命令を受信することであって、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む、受信することと、
物理アドレスを求めてバッファを検索することと、
物理アドレスがバッファにおいて発見されなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割することと、
物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングすることと
を含む。
第5の態様を参照して、第5の態様の第1の実装手法において、バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
第5の態様を参照して、第5の態様の第2の実装手法において、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
第5の態様の第1の実装手法または第5の態様の第2の実装手法を参照して、第5の態様の第3の実装手法において、1または複数のプログラムは、内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングすることをさらに含み、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む。
第5の態様、または第5の態様の上記3つの実装手法のいずれかの実装手法を参照して、第5の態様の第4の実装手法において、フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報CIDと、フラッシュメモリの識別子情報CIDに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
第5の態様を参照して、第5の態様の第5の実装手法において、1または複数のプログラムは、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信することをさらに含む。
第6の態様によれば、ユーザ機器が提供され、この機器は、
ネットワークインターフェースと、
1または複数のプロセッサと、
記憶装置であって、内部メモリおよびフラッシュメモリを含む、該記憶装置と、
記憶装置に記憶され、1または複数のプロセッサによって実行されるように構成された1または複数のプログラムと
を備え、1または複数のプログラムは、
データ書き込み命令を受信することであって、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含む、受信することと、
書き込まれるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割することと、
書き込まれるべきデータをバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングすることであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、バッファリングすることと、
物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むことと
を含む。
第6の態様を参照して、第6の態様の第1の実装手法において、1または複数のプログラムは、
識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別することと、
内部メモリの占有率が、予め設定された第1の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むこと、または
バッファデータ領域が存在する時間が、予め設定された第2の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むことと
をさらに含む。
本発明の実施形態によって提供される、フラッシュメモリから/へデータを読み取る/書き込むための方法および装置ならびにユーザ機器において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリから/へデータを読み取る/書き込む単位と、フラッシュメモリ内でデータを読み取る/書き込む単位とを統一し、それにより、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題を解決する。
本発明の実施形態1によるフラッシュメモリからデータを読み取るための方法のフローチャートである。 本発明によるバッファの論理概略図である。 本発明の実施形態2によるフラッシュメモリ内にデータを書き込むための方法のフローチャートである。 本発明による識別子情報が追加された後のバッファの論理概略図である。 本発明の実施形態3によるフラッシュメモリからデータを読み取るための装置の概略図である。 本発明の実施形態4によるフラッシュメモリ内にデータを書き込むための装置の概略図である。 本発明の実施形態5によるユーザ機器の概略図である。 本発明の実施形態6によるユーザ機器の概略図である。
本発明の実施形態の目的、技術的解決策、および利点をより明確にするために、以下では、本発明の実施形態において添付の図面を参照して本発明の実施形態で技術的解決策を明確かつ完全に説明する。明らかに、説明される実施形態は本発明の実施形態の一部であるが全部ではない。本発明の実施形態に基づき当業者によって創作的な努力なしに得られる他のすべての実施形態が、本発明の保護範囲内に入るものとする。
本発明の完全な理解を提供するために、以下でさらに添付の図面を参照して本発明の実施形態を詳細に説明する。上記の実施形態は、本発明の保護範囲を限定するように意図されていない。
図1は、本発明の実施形態1によるフラッシュメモリからデータを読み取るための方法のフローチャートである。図1に示されるように、方法は、具体的には以下を含む。
S110:ユーザ機器が、データ読み取り命令を受信し、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む。
具体的には、S110は、ユーザ機器のプロセッサによって行われることがある。
フラッシュメモリは、電気的に消去可能なプログラマブル読み取り専用メモリの形態であり、動作中に複数回にわたり消去または書き込みされることが可能にされ、フラッシュメモリは不揮発性メモリである。フラッシュメモリは、ユーザ機器が永続的にデータを記憶するために使用する記憶媒体である。この明細書では、フラッシュメモリがNANDフラッシュである例が説明のために使用され、NANDフラッシュはeMMCに組み込まれる。ユーザ機器がフラッシュメモリからデータを読み取るとき、フラッシュメモリにおけるデータはまず内部メモリにバッファリングされる必要があり、または、ユーザ機器がデータをフラッシュメモリ内に書き込むとき、データはやはり内部メモリにバッファリングされる必要があり、次いでデータはフラッシュメモリ内に書き込まれる。
異なる製造者のeMMCでは、eMMCに対応するフラッシュメモリの実際の物理ブロックサイズ(Block sizes)が異なることに留意されたい。加えて、異なる種類のeMMCでは、eMMCに対応するフラッシュメモリの実際の物理ブロックサイズがやはり異なる。フラッシュメモリの実際の物理ブロックサイズは、eMMC内でデータを読み取り/書き込む単位を示すために使用され、より大きな値は、eMMC内のデータの読み取り/書き込みのより良い性能を示す。
S120:ユーザ機器は、物理アドレスを求めてバッファを検索する。
具体的には、S120は、ユーザ機器のプロセッサによって行われることがある。
バッファbuffer_cacheは、内部メモリの一部であり、Linuxシステムでは、空き内部メモリすべてがバッファとして使用されることがあることに留意されたい。バッファは、フラッシュメモリにデータを記憶するために使用され、そうすることにより、フラッシュメモリにおけるデータに対するプロセッサによるアクセスが加速される。図2は、本発明によるバッファの論理概略図であり、バッファは、主に2つの部分、すなわち、バッファヘッダ(buffer_head)およびバッファデータ領域(buffer_data)を含み、バッファヘッダは、プロセッサによってバッファを操作するために必要とされるすべての情報を含む。具体的には、バッファヘッダは、物理アドレスポインタ(b_blocknr)、次のバッファを指し示すポインタ(b_reqnext)、およびバッファデータ領域ポインタ(b_data)を含み、b_blocknrは、バッファデータ領域におけるデータの物理アドレスをフラッシュメモリに記憶するために使用され、b_reqnextは、次のバッファのアドレスを記憶するために使用され、b_dataは、バッファデータ領域のアドレスおよびサイズを記憶するために使用される。buffer_dataは、バッファヘッダに対応するバッファデータ領域であり、データを記憶するために使用され、バッファデータ領域におけるデータは、フラッシュメモリにおけるブロックに対応する。各buffer_dataのサイズは固定されない。バッファヘッダおよびバッファデータ領域は、データを読み取るプロセスにおいて動的に確立され、バッファヘッダに関する情報、およびバッファデータ領域にバッファリングされるデータもやはり動的に充填されることに留意されたい。データを読み取るための複数の異なる命令をプロセッサが処理する必要がある(すなわち、複数回にわたり異なるデータを読み取る必要がある)場合、複数のバッファが確立される必要がある。したがって、プロセッサが初めてデータ読み取り命令を受信するとき、バッファは内部メモリに存在しない。
プロセッサが既に複数の異なるデータを読み取っている場合、複数のバッファが確立され、各バッファが、バッファヘッダおよびバッファデータ領域を含むことに留意されたい。プロセッサがデータ読み取り命令を再度受信した場合、プロセッサは、確立されたバッファヘッダを順次にスキャンし、確立されたバッファヘッダにバッファリングされた物理アドレスを、新しく受信されたデータ読み取り命令における物理アドレスと比較し、比較結果で2つが同じ場合、バッファヘッダに対応するバッファデータ領域におけるデータを直接返し、比較結果で2つが異なる場合、それは、確立されたバッファヘッダにおいて物理アドレスが発見されないことを示す。
S130:ユーザ機器がバッファにおいて物理アドレスを発見しなかったとき、ユーザ機器は、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割する。
具体的には、S130は、ユーザ機器のプロセッサによって行われることがある。
フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報CID(Card IDentity、CID)と、フラッシュメモリの識別子情報CIDに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層(Host Layer)によって取得される。フラッシュメモリの識別子情報CIDとフラッシュメモリの実際の物理ブロックサイズとの間の対応のテーブルは、予め確立される。特定の確立プロセスでは、フラッシュメモリの予め設定された識別子情報が、標準コマンドを使用することによって、製造者のデータシート(Data sheet)から取得され、次いで、製造者IDが、フラッシュメモリの取得された予め設定された識別子情報から取得され、製造者IDが取得された後、フラッシュメモリのモデルが、製造者IDに従ってCIDからさらに取得され、次いで、フラッシュメモリのモデルがルックアップテーブル(Look−Up−Table、LUT)内にあるかどうかが決定され、はいの場合、LUTテーブルにおけるフラッシュメモリの実際の物理ブロックサイズが返され;そうでない場合、デフォルト値512バイトが返される。フラッシュメモリの実際の物理ブロックサイズまたはデフォルト値が取得された後、フラッシュメモリの識別子情報CIDとフラッシュメモリの実際の物理ブロックサイズとの間の対応のテーブルが確立されることができる。
任意選択で、フラッシュメモリの実際の物理ブロックサイズを取得した後、フラッシュメモリのドライバ層は、フラッシュメモリの取得された実際の物理ブロックサイズをフラッシュメモリのブロックデバイス層(Block Layer)にフィードバックし、最終的に、ブロックデバイス層を使用することにより、フラッシュメモリの実際の物理ブロックサイズを、submit_bioインターフェース関数を使用することによってプロセッサに対して送信する。
バッファデータ領域が内部メモリから分割され、すなわち、バッファデータ領域が確立される。具体的には、内部メモリにおける一部の空間がバッファデータ領域として使用され、開始アドレスおよび終了アドレスを使用することによって空間が示される。たとえば、内部メモリのサイズが4Gであり、そこでアドレス2000KBとアドレス4000KBとの間にデータが記憶されず、したがって、プロセッサは2000KB乃至2008KBを空間から分割してよく、合計8KBの空間がバッファデータ領域として使用される。
具体的には、物理アドレスがバッファにおいて発見されなかったとき、それは、プロセッサが読み取られるべきデータを以前に読み取っておらず、すなわち、読み取られるべきデータがバッファデータ領域にバッファリングされていないことを示す。プロセッサは、バッファを確立する必要があり、そこで、バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であるか、または、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。たとえば、フラッシュメモリの実際の物理ブロックサイズが8Kである。しかしながら、読み取られるべきデータのサイズは2Kである場合、内部メモリから分割されるバッファデータ領域のサイズは8Kであり、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの1倍であり;読み取られるべきデータのサイズが22Kの場合、内部メモリから分割されるバッファデータ領域のサイズは24Kであり、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの3倍である。
任意選択で、内部メモリからバッファデータ領域を分割するステップの後に、かつ物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取るステップの前に、方法は、
内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングするステップであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、ステップをさらに含む。たとえば、バッファデータ領域の開始アドレスが200Kであってサイズが24Kである場合、開始アドレス200Kおよびサイズ24Kが、バッファデータ領域に対応するバッファヘッダに記憶される。
S140:ユーザ機器が、物理アドレスに従ってフラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングする。
具体的には、S140は、ユーザ機器のプロセッサによって行われることがある。
具体的には、プロセッサは、submit_bioインターフェース関数を使用することによって、ブロックデバイス読み取り要求をフラッシュメモリのドライバ層に送信し、読み取り要求は物理アドレスを含んでいる。フラッシュメモリのブロックデバイス層が、mmc_requestインターフェース関数を使用することによって、ブロックデバイス読み取り要求を受信し、ブロックデバイス読み取り要求を受信した後、フラッシュメモリのブロックデバイス層は、読み取りコマンドをフラッシュメモリのドライバ層に送信し、読み取りコマンドは物理アドレスを含んでおり、フラッシュメモリのドライバ層は、受信された読み取りコマンドにおける物理アドレスに従って、読み取られるべきデータをフラッシュメモリから取得する。
フラッシュメモリのドライバ層は、読み取られるべきデータを取得した後、読み取られるべきデータをフラッシュメモリのブロックデバイス層に送信し;フラッシュメモリのブロックデバイス層は、読み取られるべきデータを受信した後、読み取られるべきデータを物理バッファ内にバッファリングし、読み取られるべきデータをプロセッサに転送し;プロセッサは、読み取られるべきデータを受信した後、読み取られるべきデータを分割されたバッファデータ領域内にバッファリングし、読み取られるべきデータを上位層アプリケーションに対して返す。
要約すると、本発明のこの実施形態によって提供されるフラッシュメモリからデータを読み取るための方法において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリからデータを読み取る単位と、フラッシュメモリ内でデータを読み取る単位とを統一し、それにより、フラッシュメモリの低い読み取り効率およびフラッシュメモリの短い耐用寿命の問題を解決する。
図3は、本発明の実施形態2によるフラッシュメモリ内にデータを書き込むための方法のフローチャートである。図3に示されるように、方法は具体的には以下を含む。
S310:ユーザ機器が、データ書き込み命令を受信し、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含む。
具体的には、S310は、ユーザ機器のプロセッサによって行われることがある。
フラッシュメモリは、電気的に消去可能なプログラマブル読み取り専用メモリの形態であり、動作中に複数回にわたり消去または書き込みされることが可能にされ、フラッシュメモリは不揮発性メモリである。フラッシュメモリは、ユーザ機器が永続的にデータを記憶するために使用する記憶媒体である。この明細書では、フラッシュメモリがNANDフラッシュである例が説明のために使用され、NANDフラッシュはeMMCに組み込まれる。ユーザ機器がフラッシュメモリからデータを読み取るとき、フラッシュメモリにおけるデータはまず内部メモリにバッファリングされる必要があり;または、ユーザ機器がデータをフラッシュメモリ内に書き込むとき、データはやはり内部メモリにバッファリングされる必要があり、次いでデータはフラッシュメモリ内に書き込まれる。
S320:ユーザ機器が、書き込まれるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割する。
具体的には、S320は、ユーザ機器のプロセッサによって行われることがある。
バッファヘッダおよびバッファデータ領域は、フラッシュメモリ内にデータを書き込むプロセスにおいて動的に確立され、バッファヘッダに関する情報、およびバッファデータ領域にバッファリングされるデータもやはり動的に充填されることに留意されたい。データを書き込むための複数の異なる命令をプロセッサが処理する必要がある(すなわち、複数回にわたり異なるデータを書き込む必要がある)場合、複数のバッファが確立される必要がある。したがって、プロセッサが初めてデータ書き込み命令を受信するとき、バッファは内部メモリに存在しない。プロセッサが既に複数の異なるデータをフラッシュメモリ内に書き込んでいる場合、複数のバッファが確立され、各バッファが、バッファヘッダおよびバッファデータ領域を含む。
バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であるか、または、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であることに留意されたい。
S330:ユーザ機器が、書き込まれるべきデータをバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングし、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む。
具体的には、S330は、ユーザ機器のプロセッサによって行われることがある。
たとえば、バッファデータ領域の開始アドレスが200Kであってサイズが24Kである場合、開始アドレス200Kおよびサイズ24Kが、バッファデータ領域に対応するバッファヘッダに記憶される。
S340:ユーザ機器が、物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込む。
具体的には、S340は、ユーザ機器のプロセッサによって行われることがある。
物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むことは、具体的には以下のようである。
プロセッサは、submit_bioインターフェース関数を使用することによって、ブロックデバイス書き込み要求をフラッシュメモリのドライバ層に送信し、書き込み要求は物理アドレスを含んでいる。フラッシュメモリのブロックデバイス層が、mmc_requestインターフェース関数を使用することによって、ブロックデバイス書き込み要求を受信し、ブロックデバイス書き込み要求を受信した後、フラッシュメモリのブロックデバイス層は、ブロックデバイス書き込み要求をフラッシュメモリのドライバ層に転送し、最後に、フラッシュメモリに関係付けられたドライバ層が、物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込み、書き込みが成功したことを示す情報をフラッシュメモリのブロックデバイス層に対して返す。
書き込みが成功したことを示す情報を受信した後、フラッシュメモリのブロックデバイス層は、書き込みが成功したことを示す情報をプロセッサに転送し;最後に、プロセッサは、書き込みが成功したことを示す情報を上位層アプリケーションに対して返し、次のデータ書き込み命令の受信を待機する。
要約すると、本発明のこの実施形態によって提供されるフラッシュメモリ内にデータを書き込むための方法において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリ内へデータを書き込む単位と、フラッシュメモリ内でデータを書き込む単位とを統一し、それにより、フラッシュメモリの低い書き込み効率およびフラッシュメモリの短い耐用寿命の問題を解決する。
任意選択で、方法は、以下のステップをさらに含むことがある。
S350:識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別する。
バッファのバッファリング機能により、データ書き込みの動作は実際に遅延され、バッファデータ領域におけるデータがフラッシュメモリにおけるデータよりも新しいとき、データはダーティデータと呼ばれる。本発明の特定の実装手法において、バッファデータ領域に識別子情報を追加することに関して、図4に示される識別子情報が追加された後のバッファの論理概略図を参照する。図4では、3つのバッファが含まれ、各バッファは、バッファヘッダ(buffer_head)およびバッファデータ領域(buffer_data)を含み、バッファヘッダは、b_blocknr、b_reqnext、識別子情報(dirty)、およびb_dataを含み、b_blocknrは、対応するバッファデータ領域におけるデータの物理アドレスをフラッシュメモリに記憶するために使用され、b_reqnextは、次のバッファのアドレスを記憶するために使用され、dirtyは、新しく追加された識別子情報であり、識別子情報が0である場合、それは、対応するバッファデータ領域におけるデータが通常のデータであることを示し、識別子情報が1である場合、それは、対応するバッファデータ領域におけるデータがダーティデータであることを示し;b_dataは、対応するバッファデータ領域のアドレスおよびサイズを記憶するために使用され;buffer_dataは、対応するバッファデータ領域であり、データを記憶するために使用され、各buffer_dataのサイズは固定されないが、buffer_dataは、フラッシュメモリの実際の物理ブロックサイズを単位として使用する。
識別子情報をバッファデータ領域に追加することは、具体的には、フラッシュメモリの実際の物理ブロックサイズを単位として使用することによって、識別子情報をバッファデータ領域に追加することである。図4に示されるように、フラッシュメモリの実際の物理ブロックサイズが8Kであることが仮定され、8Kはフラッシュメモリの実際の物理ブロックサイズの1倍であるので、1つの識別子情報が追加され;16Kはフラッシュメモリの実際の物理ブロックサイズの2倍であるので、2つの識別子情報が追加され;24Kはフラッシュメモリの実際の物理ブロックサイズの3倍であるので、3つの識別子情報が追加される。
S360:内部メモリの占有率が、予め設定された第1の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込み;または、
バッファデータ領域が存在する時間が、予め設定された第2の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込む。
図4において、バッファデータ領域がダーティデータを示す情報として識別されるとき、すなわちバッファデータ領域のダーティ値が0であるとき、バッファデータにおけるデータがフラッシュメモリへと書き込まれる2つの場合がある。すなわち、
1)内部メモリの占有率が、予め設定された第1の閾値よりも大きいとき、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータが、フラッシュメモリ内に書き込まれる場合と;
2)バッファデータ領域が内部メモリに存在する時間が、予め設定された第2の閾値よりも大きいとき、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータが、フラッシュメモリ内に書き込まれる場合とがある。
上記2つの手法によって、バッファデータ領域におけるデータが無期限に内部メモリに存在しないことが保証されることができる。
フラッシュデーモン(Flush daemon)が、同時にバッファヘッダにおけるダーティデータを示す情報として識別されるすべてのバッファデータ領域を検出し、したがって、それらのバッファデータ領域におけるデータがフラッシュメモリ内に書き込まれることがあることに留意されたい。
図5は、本発明の実施形態3によるフラッシュメモリからデータを読み取るための装置の概略図である。装置は、図1に示された方法を行うために使用されることがある。図5において、装置は、受信ユニット501、検索ユニット502、分割ユニット503、およびバッファリングユニット504を備え、
受信ユニット501は、データ読み取り命令を受信するように構成され、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含み;
検索ユニット502は、受信ユニット501により受信された物理アドレスを求めてバッファを検索するように構成され;
分割ユニット503は、検索ユニット502がバッファにおいて物理アドレスを発見しなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するように構成され;
バッファリングユニット504は、物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータを、分割ユニット503により分割されたバッファデータ領域内にバッファリングするように構成される。
任意選択で、分割ユニット503は、
内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域のバッファ属性情報と物理アドレスとをバッファヘッダにバッファリングするようにさらに構成され、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含み、
バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であり;または
バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であり;
フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報CIDと、フラッシュメモリの識別子情報CIDに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
任意選択で、受信ユニット501は、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信するようにさらに構成される。
図6は、本発明の実施形態4によるフラッシュメモリ内にデータを書き込むための装置の概略図である。装置は、図3に示された方法を行うために使用されることがある。図6において、装置は、受信ユニット601、分割ユニット602、バッファリングユニット603、および書き込みユニット604を備え、
受信ユニット601は、データ書き込み命令を受信するように構成され、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含み;
分割ユニット602は、受信ユニット601により受信された書き込まれるべきデータのサイズおよびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割するように構成され;
バッファリングユニット603は、書き込まれるべきデータを、分割ユニット602により分割されたバッファデータ領域内にバッファリングし、バッファデータ領域のバッファ属性情報と物理アドレスとを、分割ユニットにより分割されたバッファヘッダ内にバッファリングするように構成され、バッファデータ領域の属性情報は、バッファデータ領域の論理アドレスおよびサイズを含み;
書き込みユニット604は、物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むように構成される。
任意選択で、装置は、識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別するように構成された追加ユニット605をさらに備える。
書き込みユニット604は、内部メモリの占有率が、予め設定された第1の閾値よりも大きいとき、フラッシュメモリ内に、追加ユニットにより追加されたダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込む;または
バッファデータ領域が存在する時間が、予め設定された第2の閾値よりも大きいとき、フラッシュメモリ内に、追加ユニットにより追加されたダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むようにさらに構成される。
本発明の実施形態によって提供される、フラッシュメモリからデータを読み取るための装置およびフラッシュメモリ内へデータを書き込む装置において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリから/へデータを読み取る/書き込む単位と、フラッシュメモリ内でデータを読み取る/書き込む単位とを統一し、それにより、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題を解決する。
図7は、本発明の実施形態5によるユーザ機器の概略図である。図7に示されるように、機器は、ネットワークインターフェース701と、1または複数のプロセッサ702と、記憶装置(storage)703と、ネットワーク701、プロセッサ702、およびメモリ703に接続するように構成されたシステムバス704とを備える。
たとえば、プロセッサ702はCPUであることがある。
ネットワークインターフェース701は、別のデバイスと通信するように構成される。
記憶装置703は、内部メモリおよびフラッシュメモリを備える。1または複数のプログラムは、記憶装置703に記憶され、1または複数のプロセッサ702によって実行されるように構成され、1または複数のプログラムは、
データ読み取り命令を受信することであって、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む、受信することと;
物理アドレスを求めてバッファを検索することと;
物理アドレスがバッファにおいて発見されなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割することと;
物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングすることとを含む。
任意選択で、バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
任意選択で、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
さらに、1または複数のプログラムは、内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングすることをさらに含み、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む。
任意選択で、フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報CIDと、フラッシュメモリの識別子情報CIDに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
さらに、1または複数のプログラムは、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信することをさらに含む。
図8は、本発明の実施形態6によるユーザ機器の概略図である。図8に示されるように、機器は、ネットワークインターフェース801と、1または複数のプロセッサ802と、メモリ803と、ネットワークインターフェース801、プロセッサ802、および記憶装置803に接続するように構成されたシステムバス804とを備える。
たとえば、プロセッサ802はCPUであることがある。
ネットワークインターフェース801は、別のデバイスと通信するように構成される。
記憶装置803は、内部メモリおよびフラッシュメモリを備える。1または複数のプログラムは、記憶装置803に記憶され、1または複数のプロセッサ802によって実行されるように構成され、1または複数のプログラムは、
データ書き込み命令を受信することであって、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含む、受信することと;
書き込まれるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割することと;
書き込まれるべきデータをバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングすることであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、バッファリングすることと;
物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むことと
を含む。
さらに、1または複数のプログラムは、
識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別することと;
内部メモリの占有率が、予め設定された第1の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むこと;または
バッファデータ領域が存在する時間が、予め設定された第2の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むことと
をさらに含む。
本発明の実施形態によって提供されるユーザ機器において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリから/フラッシュメモリへデータを読み取る/書き込む単位と、フラッシュメモリ内でデータを読み取る/書き込む単位とを統一し、それにより、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題を解決する。
さらに、当業者が認識し得るように、この明細書に開示された実施形態に説明される例と組み合わせて、ユニットおよびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、またはそれらの組合せによって実装されることがある。ハードウェアとソフトウェアの交換可能性を明確に説明するために、上記では概して機能に従って各例の構成およびステップを説明している。機能がハードウェアによって実行されるかまたはソフトウェアによって実行されるかは、技術的解決策の特定の適用および設計制約条件に依存する。当業者は、特定の適用ごとに説明された機能を実装するために異なる方法を使用し得るが、それらの実装が本発明の範囲を超えるとみなされるべきではない。
この明細書で開示された実施形態において説明された方法またはアルゴリズムのステップは、ハードウェア、プロセッサによって実行されるソフトウェアモジュール、またはそれらの組合せによって実装されることがある。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、メモリ、読み取り専用メモリ(ROM)、電気的にプログラマブルなROM、電気的に消去可能なプログラマブルROM、レジスタ、ハードディスク、取り外し可能なディスク、CD−ROM、または当技術分野で知られる任意の他の形態の記憶媒体において存在することがある。
上記の特定の実装手法において、本発明の目的、技術的解決策、および利益がさらに詳細に説明されている。上記の説明は本発明の特定の実装手法にすぎず、本発明の保護範囲を限定するように意図されていないことを理解されたい。本発明の趣旨および原理から逸脱することなく行われる任意の修正、等価置換、または改良は、本発明の保護範囲内に入るものとする。
本発明は、データ処理の分野に関し、特に、フラッシュメモリから/フラッシュメモリへデータを読み取る/書き込むための方法および装置、ならびにユーザ機器に関する。
現在、組み込まれたマルチメディアカード(eMMC)が、携帯電話の主記憶媒体として広く使用されており、eMMCの内部ストレージ(storage)デバイスは、略してフラッシュメモリと呼ばれる非線形フラッシュメモリ(NAND flash)である。NANDフラッシュは、ページ単位でデータを読み取りおよび書き込み、ブロック単位でデータを消去する。当初は、NANDフラッシュのページは512バイトである。しかしながら、NANDフラッシュ工程の進歩により、NANDフラッシュの容量がますます大きくなり、ページのサイズも8キロバイト(略して8KBもしくは8K)または16Kに増大されている。eMMCは、標準的で均一なプロトコルであり、読み取り/書き込みの指定された単位は512バイトである。結果として、書き込み増幅率が増大され、eMMCの動作効率および耐用寿命が影響を受ける。
従来技術では、異なる製造者および種類のeMMCに対応するために、Linuxシステムにおいて物理ブロックは、eMMCドライバを使用することによりサイズが均一であり、たとえば512バイトである。このように、eMMCは512バイトを読み取る/書き込むが、NANDフラッシュの読み取り/書き込みの単位は、ページすなわち8KBまたは16KBであるので、動作がNANDフラッシュに対して8Kまたは16Kに増幅され、eMMCの低い読み取りおよび書き込み効率ならびにeMMCの短い耐用寿命の問題が生じる。
本発明では、フラッシュメモリから/フラッシュメモリへデータを読み取る/書き込むための改善された方法および装置、ならびにユーザ機器を提供する。
本発明の実施形態は、フラッシュメモリから/フラッシュメモリへデータを読み取る/書き込むための方法および装置、ならびにユーザ機器を提供し、それにより、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題を解決することができる。
第1の態様によれば、フラッシュメモリからデータを読み取るための方法が提供され、方法は、
データ読み取り命令を受信するステップであって、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む、ステップと、
物理アドレスを求めてバッファを検索するステップと、
物理アドレスがバッファにおいて発見されなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するステップと、
物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングするステップと
を含む。
第1の態様を参照して、第1の態様の第1の実装手法において、バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
第1の態様を参照して、第1の態様の第2の実装手法において、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
第1の態様の第1の実装手法または第1の態様の第2の実装手法を参照して、第1の態様の第3の実装手法において、内部メモリからバッファデータ領域を分割するステップの後に、かつ物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取るステップの前に、方法は、
内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングするステップであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、ステップをさらに含む。
第1の態様、または第1の態様の上記3つの実装手法のいずれかの実装手法を参照して、第1の態様の第4の実装手法において、フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報CIDと、フラッシュメモリの識別子情報CIDに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
第1の態様を参照して、第1の態様の第5の実装手法において、データ読み取り命令を受信するステップの前に、方法は、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信するステップをさらに含む。
第2の態様によれば、フラッシュメモリ内にデータを書き込むための方法が提供され、方法は、
データ書き込み命令を受信するステップであって、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含む、ステップと、
書き込まれるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割するステップと、
書き込まれるべきデータをバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングするステップであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、ステップと、
物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むステップと
を含む。
第2の態様を参照して、第2の態様の第1の実装手法において、方法は、
識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別するステップと、
内部メモリの占有率が、予め設定された第1の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むステップ、または
バッファデータ領域が存在する時間が、予め設定された第2の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むステップと
をさらに含む。
第3の態様によれば、フラッシュメモリからデータを読み取るための装置が提供され、装置は、受信ユニット、検索ユニット、分割ユニット、およびバッファリングユニットを備え、
受信ユニットは、データ読み取り命令を受信するように構成され、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含み、
検索ユニットは、受信ユニットにより受信された物理アドレスを求めてバッファを検索するように構成され、
分割ユニットは、検索ユニットがバッファにおいて物理アドレスを発見しなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するように構成され、
バッファリングユニットは、物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータを、分割ユニットにより分割されたバッファデータ領域内にバッファリングするように構成される。
第3の態様を参照して、第3の態様の第1の実装手法において、分割ユニットは、
内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダにバッファリングするようにさらに構成され、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含み、
バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であり、または
バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であり、
フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報CIDと、フラッシュメモリの識別子情報CIDに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
第3の態様または第3の態様の第1の実装手法を参照して、第3の態様の第2の実装手法において、受信ユニットは、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信するようにさらに構成される。
第4の態様によれば、フラッシュメモリ内にデータを書き込むための装置が提供され、装置は、受信ユニット、分割ユニット、バッファリングユニット、および書き込みユニットを備え、
受信ユニットは、データ書き込み命令を受信するように構成され、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含み、
分割ユニットは、受信ユニットにより受信された書き込まれるべきデータのサイズおよびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割するように構成され、
バッファリングユニットは、書き込まれるべきデータを、分割ユニットにより分割されたバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとを、分割ユニットにより分割されたバッファヘッダ内にバッファリングするように構成され、バッファデータ領域の属性情報は、バッファデータ領域の論理アドレスおよびサイズを含み、
書き込みユニットは、物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むように構成される。
第4の態様を参照して、第4の態様の第1の実装手法において、装置は、識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別するように構成された追加ユニットをさらに備え、
書き込みユニットは、内部メモリの占有率が、予め設定された第1の閾値よりも大きいとき、フラッシュメモリ内に、追加ユニットにより追加されたダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込む、または
バッファデータ領域が存在する時間が、予め設定された第2の閾値よりも大きいとき、フラッシュメモリ内に、追加ユニットにより追加されたダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むようにさらに構成される。
第5の態様によれば、ユーザ機器が提供され、この機器は、
ネットワークインターフェースと、
1または複数のプロセッサと、
記憶装置(storage)であって、内部メモリおよびフラッシュメモリを含む、該記憶装置と、
記憶装置に記憶され、1または複数のプロセッサによって実行されるように構成された1または複数のプログラムと
を備え、1または複数のプログラムは、
データ読み取り命令を受信することであって、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む、受信することと、
物理アドレスを求めてバッファを検索することと、
物理アドレスがバッファにおいて発見されなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割することと、
物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングすることと
を含む。
第5の態様を参照して、第5の態様の第1の実装手法において、バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
第5の態様を参照して、第5の態様の第2の実装手法において、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
第5の態様の第1の実装手法または第5の態様の第2の実装手法を参照して、第5の態様の第3の実装手法において、1または複数のプログラムは、内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングすることをさらに含み、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む。
第5の態様、または第5の態様の上記3つの実装手法のいずれかの実装手法を参照して、第5の態様の第4の実装手法において、フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報CIDと、フラッシュメモリの識別子情報CIDに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
第5の態様を参照して、第5の態様の第5の実装手法において、1または複数のプログラムは、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信することをさらに含む。
第6の態様によれば、ユーザ機器が提供され、この機器は、
ネットワークインターフェースと、
1または複数のプロセッサと、
記憶装置であって、内部メモリおよびフラッシュメモリを含む、該記憶装置と、
記憶装置に記憶され、1または複数のプロセッサによって実行されるように構成された1または複数のプログラムと
を備え、1または複数のプログラムは、
データ書き込み命令を受信することであって、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含む、受信することと、
書き込まれるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割することと、
書き込まれるべきデータをバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングすることであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、バッファリングすることと、
物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むことと
を含む。
第6の態様を参照して、第6の態様の第1の実装手法において、1または複数のプログラムは、
識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別することと、
内部メモリの占有率が、予め設定された第1の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むこと、または
バッファデータ領域が存在する時間が、予め設定された第2の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むことと
をさらに含む。
本発明の実施形態によって提供される、フラッシュメモリから/へデータを読み取る/書き込むための方法および装置ならびにユーザ機器において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリから/へデータを読み取る/書き込む単位と、フラッシュメモリ内でデータを読み取る/書き込む単位とを統一し、それにより、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題を解決する。
本発明の実施形態1によるフラッシュメモリからデータを読み取るための方法のフローチャートである。 本発明によるバッファの論理概略図である。 本発明の実施形態2によるフラッシュメモリ内にデータを書き込むための方法のフローチャートである。 本発明による識別子情報が追加された後のバッファの論理概略図である。 本発明の実施形態3によるフラッシュメモリからデータを読み取るための装置の概略図である。 本発明の実施形態4によるフラッシュメモリ内にデータを書き込むための装置の概略図である。 本発明の実施形態5によるユーザ機器の概略図である。 本発明の実施形態6によるユーザ機器の概略図である。
本発明の実施形態の目的、技術的解決策、および利点をより明確にするために、以下では、本発明の実施形態において添付の図面を参照して本発明の実施形態で技術的解決策を明確かつ完全に説明する。明らかに、説明される実施形態は本発明の実施形態の一部であるが全部ではない。本発明の実施形態に基づき当業者によって創作的な努力なしに得られる他のすべての実施形態が、本発明の保護範囲内に入るものとする。
本発明の完全な理解を提供するために、以下でさらに添付の図面を参照して本発明の実施形態を詳細に説明する。上記の実施形態は、本発明の保護範囲を限定するように意図されていない。
図1は、本発明の実施形態1によるフラッシュメモリからデータを読み取るための方法のフローチャートである。図1に示されるように、方法は、具体的には以下を含む。
S110:ユーザ機器が、データ読み取り命令を受信し、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む。
具体的には、S110は、ユーザ機器のプロセッサによって行われることがある。
フラッシュメモリは、電気的に消去可能なプログラマブル読み取り専用メモリの形態であり、動作中に複数回にわたり消去または書き込みされることが可能にされ、フラッシュメモリは不揮発性メモリである。フラッシュメモリは、ユーザ機器が永続的にデータを記憶するために使用する記憶媒体である。この明細書では、フラッシュメモリがNANDフラッシュである例が説明のために使用され、NANDフラッシュはeMMCに組み込まれる。ユーザ機器がフラッシュメモリからデータを読み取るとき、フラッシュメモリにおけるデータはまず内部メモリにバッファリングされる必要があり、または、ユーザ機器がデータをフラッシュメモリ内に書き込むとき、データはやはり内部メモリにバッファリングされる必要があり、次いでデータはフラッシュメモリ内に書き込まれる。
異なる製造者のeMMCでは、eMMCに対応するフラッシュメモリの実際の物理ブロックサイズ(Block sizes)が異なることに留意されたい。加えて、異なる種類のeMMCでは、eMMCに対応するフラッシュメモリの実際の物理ブロックサイズがやはり異なる。フラッシュメモリの実際の物理ブロックサイズは、eMMC内でデータを読み取り/書き込む単位を示すために使用され、より大きな値は、eMMC内のデータの読み取り/書き込みのより良い性能を示す。
S120:ユーザ機器は、物理アドレスを求めてバッファを検索する。
具体的には、S120は、ユーザ機器のプロセッサによって行われることがある。
バッファbuffer_cacheは、内部メモリの一部であり、Linuxシステムでは、空き内部メモリすべてがバッファとして使用されることがあることに留意されたい。バッファは、フラッシュメモリにデータを記憶するために使用され、そうすることにより、フラッシュメモリにおけるデータに対するプロセッサによるアクセスが加速される。図2は、本発明によるバッファの論理概略図であり、バッファは、主に2つの部分、すなわち、バッファヘッダ(buffer_head)およびバッファデータ領域(buffer_data)を含み、バッファヘッダは、プロセッサによってバッファを操作するために必要とされるすべての情報を含む。具体的には、バッファヘッダは、物理アドレスポインタ(b_blocknr)、次のバッファを指し示すポインタ(b_reqnext)、およびバッファデータ領域ポインタ(b_data)を含み、b_blocknrは、バッファデータ領域におけるデータの物理アドレスをフラッシュメモリに記憶するために使用され、b_reqnextは、次のバッファのアドレスを記憶するために使用され、b_dataは、バッファデータ領域のアドレスおよびサイズを記憶するために使用される。buffer_dataは、バッファヘッダに対応するバッファデータ領域であり、データを記憶するために使用され、バッファデータ領域におけるデータは、フラッシュメモリにおけるブロックに対応する。各buffer_dataのサイズは固定されない。バッファヘッダおよびバッファデータ領域は、データを読み取るプロセスにおいて動的に確立され、バッファヘッダに関する情報、およびバッファデータ領域にバッファリングされるデータもやはり動的に充填されることに留意されたい。データを読み取るための複数の異なる命令をプロセッサが処理する必要がある(すなわち、複数回にわたり異なるデータを読み取る必要がある)場合、複数のバッファが確立される必要がある。したがって、プロセッサが初めてデータ読み取り命令を受信するとき、バッファは内部メモリに存在しない。
プロセッサが既に複数の異なるデータを読み取っている場合、複数のバッファが確立され、各バッファが、バッファヘッダおよびバッファデータ領域を含むことに留意されたい。プロセッサがデータ読み取り命令を再度受信した場合、プロセッサは、確立されたバッファヘッダを順次にスキャンし、確立されたバッファヘッダにバッファリングされた物理アドレスを、新しく受信されたデータ読み取り命令における物理アドレスと比較し、比較結果で2つが同じ場合、バッファヘッダに対応するバッファデータ領域におけるデータを直接返し、比較結果で2つが異なる場合、それは、確立されたバッファヘッダにおいて物理アドレスが発見されないことを示す。
S130:ユーザ機器がバッファにおいて物理アドレスを発見しなかったとき、ユーザ機器は、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割する。
具体的には、S130は、ユーザ機器のプロセッサによって行われることがある。
フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報CID(Card IDentity、CID)と、フラッシュメモリの識別子情報CIDに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層(Host Layer)によって取得される。フラッシュメモリの識別子情報CIDとフラッシュメモリの実際の物理ブロックサイズとの間の対応のテーブルは、予め確立される。特定の確立プロセスでは、フラッシュメモリの予め設定された識別子情報が、標準コマンドを使用することによって、製造者のデータシート(Data sheet)から取得され、次いで、製造者IDが、フラッシュメモリの取得された予め設定された識別子情報から取得され、製造者IDが取得された後、フラッシュメモリのモデルが、製造者IDに従ってCIDからさらに取得され、次いで、フラッシュメモリのモデルがルックアップテーブル(Look−Up−Table、LUT)内にあるかどうかが決定され、はいの場合、LUTテーブルにおけるフラッシュメモリの実際の物理ブロックサイズが返され;そうでない場合、デフォルト値512バイトが返される。フラッシュメモリの実際の物理ブロックサイズまたはデフォルト値が取得された後、フラッシュメモリの識別子情報CIDとフラッシュメモリの実際の物理ブロックサイズとの間の対応のテーブルが確立されることができる。
任意選択で、フラッシュメモリの実際の物理ブロックサイズを取得した後、フラッシュメモリのドライバ層は、フラッシュメモリの取得された実際の物理ブロックサイズをフラッシュメモリのブロックデバイス層にフィードバックし、最終的に、ブロックデバイス層を使用することにより、フラッシュメモリの実際の物理ブロックサイズを、submit_bioインターフェース関数を使用することによってプロセッサに対して送信する。
バッファデータ領域が内部メモリから分割され、すなわち、バッファデータ領域が確立される。具体的には、内部メモリにおける一部の空間がバッファデータ領域として使用され、開始アドレスおよび終了アドレスを使用することによって空間が示される。たとえば、内部メモリのサイズが4Gであり、そこでアドレス2000KBとアドレス4000KBとの間にデータが記憶されず、したがって、プロセッサは2000KB乃至2008KBを空間から分割してよく、合計8KBの空間がバッファデータ領域として使用される。
具体的には、物理アドレスがバッファにおいて発見されなかったとき、それは、プロセッサが読み取られるべきデータを以前に読み取っておらず、すなわち、読み取られるべきデータがバッファデータ領域にバッファリングされていないことを示す。プロセッサは、バッファを確立する必要があり、そこで、バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であるか、または、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。たとえば、フラッシュメモリの実際の物理ブロックサイズが8Kである。しかしながら、読み取られるべきデータのサイズは2Kである場合、内部メモリから分割されるバッファデータ領域のサイズは8Kであり、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの1倍であり;読み取られるべきデータのサイズが22Kの場合、内部メモリから分割されるバッファデータ領域のサイズは24Kであり、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの3倍である。
任意選択で、内部メモリからバッファデータ領域を分割するステップの後に、かつ物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取るステップの前に、方法は、
内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングするステップであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、ステップをさらに含む。たとえば、バッファデータ領域の開始アドレスが200Kであってサイズが24Kである場合、開始アドレス200Kおよびサイズ24Kが、バッファデータ領域に対応するバッファヘッダに記憶される。
S140:ユーザ機器が、物理アドレスに従ってフラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングする。
具体的には、S140は、ユーザ機器のプロセッサによって行われることがある。
具体的には、プロセッサは、submit_bioインターフェース関数を使用することによって、ブロックデバイス読み取り要求をフラッシュメモリのドライバ層に送信し、読み取り要求は物理アドレスを含んでいる。フラッシュメモリのブロックデバイス層が、mmc_requestインターフェース関数を使用することによって、ブロックデバイス読み取り要求を受信し、ブロックデバイス読み取り要求を受信した後、フラッシュメモリのブロックデバイス層は、読み取りコマンドをフラッシュメモリのドライバ層に送信し、読み取りコマンドは物理アドレスを含んでおり、フラッシュメモリのドライバ層は、受信された読み取りコマンドにおける物理アドレスに従って、読み取られるべきデータをフラッシュメモリから取得する。
フラッシュメモリのドライバ層は、読み取られるべきデータを取得した後、読み取られるべきデータをフラッシュメモリのブロックデバイス層に送信し;フラッシュメモリのブロックデバイス層は、読み取られるべきデータを受信した後、読み取られるべきデータを物理バッファ内にバッファリングし、読み取られるべきデータをプロセッサに転送し;プロセッサは、読み取られるべきデータを受信した後、読み取られるべきデータを分割されたバッファデータ領域内にバッファリングし、読み取られるべきデータを上位層アプリケーションに対して返す。
要約すると、本発明のこの実施形態によって提供されるフラッシュメモリからデータを読み取るための方法において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリからデータを読み取る単位と、フラッシュメモリ内でデータを読み取る単位とを統一し、それにより、フラッシュメモリの低い読み取り効率およびフラッシュメモリの短い耐用寿命の問題を解決する。
図3は、本発明の実施形態2によるフラッシュメモリ内にデータを書き込むための方法のフローチャートである。図3に示されるように、方法は具体的には以下を含む。
S310:ユーザ機器が、データ書き込み命令を受信し、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含む。
具体的には、S310は、ユーザ機器のプロセッサによって行われることがある。
フラッシュメモリは、電気的に消去可能なプログラマブル読み取り専用メモリの形態であり、動作中に複数回にわたり消去または書き込みされることが可能にされ、フラッシュメモリは不揮発性メモリである。フラッシュメモリは、ユーザ機器が永続的にデータを記憶するために使用する記憶媒体である。この明細書では、フラッシュメモリがNANDフラッシュである例が説明のために使用され、NANDフラッシュはeMMCに組み込まれる。ユーザ機器がフラッシュメモリからデータを読み取るとき、フラッシュメモリにおけるデータはまず内部メモリにバッファリングされる必要があり;または、ユーザ機器がデータをフラッシュメモリ内に書き込むとき、データはやはり内部メモリにバッファリングされる必要があり、次いでデータはフラッシュメモリ内に書き込まれる。
S320:ユーザ機器が、書き込まれるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割する。
具体的には、S320は、ユーザ機器のプロセッサによって行われることがある。
バッファヘッダおよびバッファデータ領域は、フラッシュメモリ内にデータを書き込むプロセスにおいて動的に確立され、バッファヘッダに関する情報、およびバッファデータ領域にバッファリングされるデータもやはり動的に充填されることに留意されたい。データを書き込むための複数の異なる命令をプロセッサが処理する必要がある(すなわち、複数回にわたり異なるデータを書き込む必要がある)場合、複数のバッファが確立される必要がある。したがって、プロセッサが初めてデータ書き込み命令を受信するとき、バッファは内部メモリに存在しない。プロセッサが既に複数の異なるデータをフラッシュメモリ内に書き込んでいる場合、複数のバッファが確立され、各バッファが、バッファヘッダおよびバッファデータ領域を含む。
バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であるか、または、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であることに留意されたい。
S330:ユーザ機器が、書き込まれるべきデータをバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングし、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む。
具体的には、S330は、ユーザ機器のプロセッサによって行われることがある。
たとえば、バッファデータ領域の開始アドレスが200Kであってサイズが24Kである場合、開始アドレス200Kおよびサイズ24Kが、バッファデータ領域に対応するバッファヘッダに記憶される。
S340:ユーザ機器が、物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込む。
具体的には、S340は、ユーザ機器のプロセッサによって行われることがある。
物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むことは、具体的には以下のようである。
プロセッサは、submit_bioインターフェース関数を使用することによって、ブロックデバイス書き込み要求をフラッシュメモリのドライバ層に送信し、書き込み要求は物理アドレスを含んでいる。フラッシュメモリのブロックデバイス層が、mmc_requestインターフェース関数を使用することによって、ブロックデバイス書き込み要求を受信し、ブロックデバイス書き込み要求を受信した後、フラッシュメモリのブロックデバイス層は、ブロックデバイス書き込み要求をフラッシュメモリのドライバ層に転送し、最後に、フラッシュメモリに関係付けられたドライバ層が、物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込み、書き込みが成功したことを示す情報をフラッシュメモリのブロックデバイス層に対して返す。
書き込みが成功したことを示す情報を受信した後、フラッシュメモリのブロックデバイス層は、書き込みが成功したことを示す情報をプロセッサに転送し;最後に、プロセッサは、書き込みが成功したことを示す情報を上位層アプリケーションに対して返し、次のデータ書き込み命令の受信を待機する。
要約すると、本発明のこの実施形態によって提供されるフラッシュメモリ内にデータを書き込むための方法において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリ内へデータを書き込む単位と、フラッシュメモリ内でデータを書き込む単位とを統一し、それにより、フラッシュメモリの低い書き込み効率およびフラッシュメモリの短い耐用寿命の問題を解決する。
任意選択で、方法は、以下のステップをさらに含むことがある。
S350:識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別する。
バッファのバッファリング機能により、データ書き込みの動作は実際に遅延され、バッファデータ領域におけるデータがフラッシュメモリにおけるデータよりも新しいとき、データはダーティデータと呼ばれる。本発明の特定の実装手法において、バッファデータ領域に識別子情報を追加することに関して、図4に示される識別子情報が追加された後のバッファの論理概略図を参照する。図4では、3つのバッファが含まれ、各バッファは、バッファヘッダ(buffer_head)およびバッファデータ領域(buffer_data)を含み、バッファヘッダは、b_blocknr、b_reqnext、識別子情報(dirty)、およびb_dataを含み、b_blocknrは、対応するバッファデータ領域におけるデータの物理アドレスをフラッシュメモリに記憶するために使用され、b_reqnextは、次のバッファのアドレスを記憶するために使用され、dirtyは、新しく追加された識別子情報であり、識別子情報が0である場合、それは、対応するバッファデータ領域におけるデータが通常のデータであることを示し、識別子情報が1である場合、それは、対応するバッファデータ領域におけるデータがダーティデータであることを示し;b_dataは、対応するバッファデータ領域のアドレスおよびサイズを記憶するために使用され;buffer_dataは、対応するバッファデータ領域であり、データを記憶するために使用され、各buffer_dataのサイズは固定されないが、buffer_dataは、フラッシュメモリの実際の物理ブロックサイズを単位として使用する。
識別子情報をバッファデータ領域に追加することは、具体的には、フラッシュメモリの実際の物理ブロックサイズを単位として使用することによって、識別子情報をバッファデータ領域に追加することである。図4に示されるように、フラッシュメモリの実際の物理ブロックサイズが8Kであることが仮定され、8Kはフラッシュメモリの実際の物理ブロックサイズの1倍であるので、1つの識別子情報が追加され;16Kはフラッシュメモリの実際の物理ブロックサイズの2倍であるので、2つの識別子情報が追加され;24Kはフラッシュメモリの実際の物理ブロックサイズの3倍であるので、3つの識別子情報が追加される。
S360:内部メモリの占有率が、予め設定された第1の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込み;または、
バッファデータ領域が存在する時間が、予め設定された第2の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込む。
図4において、バッファデータ領域がダーティデータを示す情報として識別されるとき、すなわちバッファデータ領域のダーティ値が0であるとき、バッファデータにおけるデータがフラッシュメモリへと書き込まれる2つの場合がある。すなわち、
1)内部メモリの占有率が、予め設定された第1の閾値よりも大きいとき、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータが、フラッシュメモリ内に書き込まれる場合と;
2)バッファデータ領域が内部メモリに存在する時間が、予め設定された第2の閾値よりも大きいとき、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータが、フラッシュメモリ内に書き込まれる場合とがある。
上記2つの手法によって、バッファデータ領域におけるデータが無期限に内部メモリに存在しないことが保証されることができる。
フラッシュデーモン(Flush daemon)が、同時にバッファヘッダにおけるダーティデータを示す情報として識別されるすべてのバッファデータ領域を検出し、したがって、それらのバッファデータ領域におけるデータがフラッシュメモリ内に書き込まれることがあることに留意されたい。
図5は、本発明の実施形態3によるフラッシュメモリからデータを読み取るための装置の概略図である。装置は、図1に示された方法を行うために使用されることがある。図5において、装置は、受信ユニット501、検索ユニット502、分割ユニット503、およびバッファリングユニット504を備え、
受信ユニット501は、データ読み取り命令を受信するように構成され、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含み;
検索ユニット502は、受信ユニット501により受信された物理アドレスを求めてバッファを検索するように構成され;
分割ユニット503は、検索ユニット502がバッファにおいて物理アドレスを発見しなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するように構成され;
バッファリングユニット504は、物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータを、分割ユニット503により分割されたバッファデータ領域内にバッファリングするように構成される。
任意選択で、分割ユニット503は、
内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域のバッファ属性情報と物理アドレスとをバッファヘッダにバッファリングするようにさらに構成され、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含み、
バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であり;または
バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍であり;
フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報CIDと、フラッシュメモリの識別子情報CIDに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
任意選択で、受信ユニット501は、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信するようにさらに構成される。
図6は、本発明の実施形態4によるフラッシュメモリ内にデータを書き込むための装置の概略図である。装置は、図3に示された方法を行うために使用されることがある。図6において、装置は、受信ユニット601、分割ユニット602、バッファリングユニット603、および書き込みユニット604を備え、
受信ユニット601は、データ書き込み命令を受信するように構成され、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含み;
分割ユニット602は、受信ユニット601により受信された書き込まれるべきデータのサイズおよびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割するように構成され;
バッファリングユニット603は、書き込まれるべきデータを、分割ユニット602により分割されたバッファデータ領域内にバッファリングし、バッファデータ領域のバッファ属性情報と物理アドレスとを、分割ユニットにより分割されたバッファヘッダ内にバッファリングするように構成され、バッファデータ領域の属性情報は、バッファデータ領域の論理アドレスおよびサイズを含み;
書き込みユニット604は、物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むように構成される。
任意選択で、装置は、識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別するように構成された追加ユニット605をさらに備える。
書き込みユニット604は、内部メモリの占有率が、予め設定された第1の閾値よりも大きいとき、フラッシュメモリ内に、追加ユニットにより追加されたダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込む;または
バッファデータ領域が存在する時間が、予め設定された第2の閾値よりも大きいとき、フラッシュメモリ内に、追加ユニットにより追加されたダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むようにさらに構成される。
本発明の実施形態によって提供される、フラッシュメモリからデータを読み取るための装置およびフラッシュメモリ内へデータを書き込む装置において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリから/へデータを読み取る/書き込む単位と、フラッシュメモリ内でデータを読み取る/書き込む単位とを統一し、それにより、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題を解決する。
図7は、本発明の実施形態5によるユーザ機器の概略図である。図7に示されるように、機器は、ネットワークインターフェース701と、1または複数のプロセッサ702と、記憶装置(storage)703と、ネットワーク701、プロセッサ702、およびメモリ703に接続するように構成されたシステムバス704とを備える。
たとえば、プロセッサ702はCPUであることがある。
ネットワークインターフェース701は、別のデバイスと通信するように構成される。
記憶装置703は、内部メモリおよびフラッシュメモリを備える。1または複数のプログラムは、記憶装置703に記憶され、1または複数のプロセッサ702によって実行されるように構成され、1または複数のプログラムは、
データ読み取り命令を受信することであって、データ読み取り命令は、読み取られるべきデータのサイズ、およびフラッシュメモリにおける読み取られるべきデータの物理アドレスを含む、受信することと;
物理アドレスを求めてバッファを検索することと;
物理アドレスがバッファにおいて発見されなかったとき、読み取られるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割することと;
物理アドレスに従って、フラッシュメモリから読み取られるべきデータを読み取り、読み取られるべきデータをバッファデータ領域内にバッファリングすることとを含む。
任意選択で、バッファデータ領域のサイズは、読み取られるべきデータのサイズよりも大きく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
任意選択で、バッファデータ領域のサイズは、読み取られるべきデータのサイズと等しく、バッファデータ領域のサイズは、フラッシュメモリの実際の物理ブロックサイズの整数倍である。
さらに、1または複数のプログラムは、内部メモリから、バッファデータ領域に対応するバッファヘッダを分割し、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングすることをさらに含み、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む。
任意選択で、フラッシュメモリの実際の物理ブロックサイズは、フラッシュメモリの識別子情報CIDと、フラッシュメモリの識別子情報CIDに従ったフラッシュメモリの実際の物理ブロックサイズとの間の対応テーブルから、フラッシュメモリのドライバ層によって取得される。
さらに、1または複数のプログラムは、フラッシュメモリのブロックデバイス層を使用することによって、フラッシュメモリのドライバ層により送信されたフラッシュメモリの実際の物理ブロックサイズを受信することをさらに含む。
図8は、本発明の実施形態6によるユーザ機器の概略図である。図8に示されるように、機器は、ネットワークインターフェース801と、1または複数のプロセッサ802と、メモリ803と、ネットワークインターフェース801、プロセッサ802、および記憶装置803に接続するように構成されたシステムバス804とを備える。
たとえば、プロセッサ802はCPUであることがある。
ネットワークインターフェース801は、別のデバイスと通信するように構成される。
記憶装置803は、内部メモリおよびフラッシュメモリを備える。1または複数のプログラムは、記憶装置803に記憶され、1または複数のプロセッサ802によって実行されるように構成され、1または複数のプログラムは、
データ書き込み命令を受信することであって、データ書き込み命令は、書き込まれるべきデータ、書き込まれるべきデータのサイズ、およびフラッシュメモリにおける書き込まれるべきデータの物理アドレスを含む、受信することと;
書き込まれるべきデータのサイズ、およびフラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、バッファデータ領域に対応するバッファヘッダを分割することと;
書き込まれるべきデータをバッファデータ領域内にバッファリングし、バッファデータ領域の属性情報と物理アドレスとをバッファヘッダ内にバッファリングすることであって、バッファデータ領域の属性情報は、バッファデータ領域のアドレスおよびサイズを含む、バッファリングすることと;
物理アドレスに従って、書き込まれるべきデータをフラッシュメモリ内に書き込むことと
を含む。
さらに、1または複数のプログラムは、
識別子情報をバッファデータ領域に追加し、バッファデータ領域におけるデータがフラッシュメモリにおけるデータと一致しないとき、識別子情報をダーティデータを示す情報として識別することと;
内部メモリの占有率が、予め設定された第1の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むこと;または
バッファデータ領域が存在する時間が、予め設定された第2の閾値よりも大きいとき、フラッシュメモリ内に、ダーティデータを示す情報である識別子情報に対応するバッファデータ領域におけるデータを書き込むことと
をさらに含む。
本発明の実施形態によって提供されるユーザ機器において、フラッシュメモリの実際の物理ブロックサイズに従ってバッファデータ領域が適用され、そうすることで、バッファデータ領域を動的に調整する目的を達成し、すなわち、プロセッサによってフラッシュメモリから/フラッシュメモリへデータを読み取る/書き込む単位と、フラッシュメモリ内でデータを読み取る/書き込む単位とを統一し、それにより、フラッシュメモリの低い読み取りおよび書き込み効率ならびにフラッシュメモリの短い耐用寿命の問題を解決する。
さらに、当業者が認識し得るように、この明細書に開示された実施形態に説明される例と組み合わせて、ユニットおよびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、またはそれらの組合せによって実装されることがある。ハードウェアとソフトウェアの交換可能性を明確に説明するために、上記では概して機能に従って各例の構成およびステップを説明している。機能がハードウェアによって実行されるかまたはソフトウェアによって実行されるかは、技術的解決策の特定の適用および設計制約条件に依存する。当業者は、特定の適用ごとに説明された機能を実装するために異なる方法を使用し得るが、それらの実装が本発明の範囲を超えるとみなされるべきではない。
この明細書で開示された実施形態において説明された方法またはアルゴリズムのステップは、ハードウェア、プロセッサによって実行されるソフトウェアモジュール、またはそれらの組合せによって実装されることがある。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、メモリ、読み取り専用メモリ(ROM)、電気的にプログラマブルなROM、電気的に消去可能なプログラマブルROM、レジスタ、ハードディスク、取り外し可能なディスク、CD−ROM、または当技術分野で知られる任意の他の形態の記憶媒体において存在することがある。
上記の特定の実装手法において、本発明の目的、技術的解決策、および利益がさらに詳細に説明されている。上記の説明は本発明の特定の実装手法にすぎず、本発明の保護範囲を限定するように意図されていないことを理解されたい。本発明の趣旨および原理から逸脱することなく行われる任意の修正、等価置換、または改良は、本発明の保護範囲内に入るものとする。

Claims (21)

  1. フラッシュメモリからデータを読み取るための方法であって、
    データ読み取り命令を受信するステップであって、前記データ読み取り命令は、読み取られるべきデータのサイズ、および前記フラッシュメモリにおける前記読み取られるべきデータの物理アドレスを含む、ステップと、
    前記物理アドレスを求めてバッファを検索するステップと、
    前記物理アドレスが前記バッファにおいて発見されなかったとき、前記読み取られるべきデータの前記サイズ、および前記フラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するステップと、
    前記物理アドレスに従って、前記フラッシュメモリから前記読み取られるべきデータを読み取り、前記読み取られるべきデータを前記バッファデータ領域内にバッファリングするステップと
    を含むことを特徴とする方法。
  2. 前記バッファデータ領域のサイズは、前記読み取られるべきデータの前記サイズよりも大きく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であることを特徴とする請求項1に記載の方法。
  3. 前記バッファデータ領域のサイズは、前記読み取られるべきデータの前記サイズと等しく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であることを特徴とする請求項1に記載の方法。
  4. 内部メモリからバッファデータ領域を前記分割するステップの後に、かつ前記物理アドレスに従って、前記フラッシュメモリから前記読み取られるべきデータを前記読み取るステップの前に、
    前記内部メモリから、前記バッファデータ領域に対応するバッファヘッダを分割し、前記バッファデータ領域の属性情報と前記物理アドレスとを前記バッファヘッダ内にバッファリングするステップであって、前記バッファデータ領域の前記属性情報は、前記バッファデータ領域のアドレスおよび前記サイズを含む、ステップをさらに含むことを特徴とする請求項2または3に記載の方法。
  5. 前記フラッシュメモリの前記実際の物理ブロックサイズは、前記フラッシュメモリの識別子情報CIDと、前記フラッシュメモリの前記識別子情報CIDに従った前記フラッシュメモリの前記実際の物理ブロックサイズとの間の対応テーブルから、前記フラッシュメモリのドライバ層によって取得されることを特徴とする請求項1乃至4のいずれか一項に記載の方法。
  6. データ読み取り命令を前記受信するステップの前に、前記フラッシュメモリのブロックデバイス層を使用することによって、前記フラッシュメモリのドライバ層により送信された前記フラッシュメモリの前記実際の物理ブロックサイズを受信するステップをさらに含むことを特徴とする請求項1に記載の方法。
  7. フラッシュメモリ内にデータを書き込むための方法であって、
    データ書き込み命令を受信するステップであって、前記データ書き込み命令は、書き込まれるべきデータ、前記書き込まれるべきデータのサイズ、および前記フラッシュメモリにおける前記書き込まれるべきデータの物理アドレスを含む、ステップと、
    前記書き込まれるべきデータの前記サイズ、および前記フラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、前記バッファデータ領域に対応するバッファヘッダを分割するステップと、
    前記書き込まれるべきデータを前記バッファデータ領域内にバッファリングし、前記バッファデータ領域の属性情報と前記物理アドレスとを前記バッファヘッダ内にバッファリングするステップであって、前記バッファデータ領域の前記属性情報は、前記バッファデータ領域のアドレスおよびサイズを含む、ステップと、
    前記物理アドレスに従って、前記書き込まれるべきデータを前記フラッシュメモリ内に書き込むステップと
    を含むことを特徴とする方法。
  8. 識別子情報を前記バッファデータ領域に追加し、前記バッファデータ領域におけるデータが前記フラッシュメモリにおけるデータと一致しないとき、前記識別子情報をダーティデータを示す情報として識別するステップと、
    前記内部メモリの占有率が、予め設定された第1の閾値よりも大きいとき、前記フラッシュメモリ内に、ダーティデータを示す前記情報である前記識別子情報に対応する前記バッファデータ領域におけるデータを書き込むステップ、または
    前記バッファデータ領域が存在する時間が、予め設定された第2の閾値よりも大きいとき、前記フラッシュメモリ内に、ダーティデータを示す前記情報である前記識別子情報に対応する前記バッファデータ領域におけるデータを書き込むステップと
    をさらに含むことを特徴とする請求項7に記載の方法。
  9. フラッシュメモリからデータを読み取るための装置であって、受信ユニット、検索ユニット、分割ユニット、およびバッファリングユニットを備え、
    前記受信ユニットは、データ読み取り命令を読み取るように構成され、前記データ読み取り命令は、読み取られるべきデータのサイズ、および前記フラッシュメモリにおける前記読み取られるべきデータの物理アドレスを含み、
    前記検索ユニットは、前記受信ユニットにより受信された前記物理アドレスを求めてバッファを検索するように構成され、
    前記分割ユニットは、前記検索ユニットが前記バッファにおいて前記物理アドレスを発見しないとき、前記読み取られるべきデータの前記サイズ、および前記フラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割するように構成され、
    前記バッファリングユニットは、前記物理アドレスに従って、前記フラッシュメモリから前記読み取られるべきデータを読み取り、前記読み取られるべきデータを、前記分割ユニットにより分割された前記バッファデータ領域内にバッファリングするように構成されたことを特徴とする装置。
  10. 前記分割ユニットは、
    前記内部メモリから、前記バッファデータ領域に対応するバッファヘッダを分割し、前記バッファデータ領域の属性情報と前記物理アドレスとを前記バッファヘッダにバッファリングするようにさらに構成され、前記バッファデータ領域の前記属性情報は、前記バッファデータ領域のアドレスおよびサイズを含み、
    前記バッファデータ領域の前記サイズは、前記読み取られるべきデータの前記サイズよりも大きく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であり、または
    前記バッファデータ領域の前記サイズは、前記読み取られるべきデータの前記サイズと等しく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であり、
    前記フラッシュメモリの前記実際の物理ブロックサイズは、前記フラッシュメモリの識別子情報CIDと、前記フラッシュメモリの前記識別子情報CIDに従った前記フラッシュメモリの前記実際の物理ブロックサイズとの間の対応テーブルから、前記フラッシュメモリのドライバ層によって取得される
    ことを特徴とする請求項9に記載の装置。
  11. 前記受信ユニットは、前記フラッシュメモリのブロックデバイス層を使用することによって、前記フラッシュメモリのドライバ層により送信された前記フラッシュメモリの前記実際の物理ブロックサイズを受信するようにさらに構成されたことを特徴とする請求項9または10に記載の装置。
  12. フラッシュメモリ内にデータを書き込むための装置であって、受信ユニット、分割ユニット、バッファリングユニット、および書き込みユニットを備え、
    前記受信ユニットは、データ書き込み命令を受信するように構成され、前記データ書き込み命令は、書き込まれるべきデータ、前記書き込まれるべきデータのサイズ、および前記フラッシュメモリにおける前記書き込まれるべきデータの物理アドレスを含み、
    前記分割ユニットは、前記受信ユニットにより受信された前記書き込まれるべきデータの前記サイズおよび前記フラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、前記バッファデータ領域に対応するバッファヘッダを分割するように構成され、
    前記バッファリングユニットは、前記書き込まれるべきデータを、前記分割ユニットにより分割された前記バッファデータ領域内にバッファリングし、前記バッファデータ領域の属性情報と前記物理アドレスとを、前記分割ユニットにより分割された前記バッファヘッダ内にバッファリングするように構成され、前記バッファデータ領域の前記属性情報は、前記バッファデータ領域の論理アドレスおよびサイズを含み、
    前記書き込みユニットは、前記物理アドレスに従って、前記書き込まれるべきデータを前記フラッシュメモリ内に書き込むように構成されたことを特徴とする装置。
  13. 識別子情報を前記バッファデータ領域に追加し、前記バッファデータ領域におけるデータが前記フラッシュメモリにおけるデータと一致しないとき、前記識別子情報をダーティデータを示す情報として識別するように構成された追加ユニットをさらに備え、
    前記書き込みユニットは、前記内部メモリの占有率が、予め設定された第1の閾値よりも大きいとき、前記フラッシュメモリ内に、前記追加ユニットにより追加されたダーティデータを示す前記情報である前記識別子情報に対応する前記バッファデータ領域におけるデータを書き込む、または
    前記バッファデータ領域が存在する時間が、予め設定された第2の閾値よりも大きいとき、前記フラッシュメモリ内に、前記追加ユニットにより追加されたダーティデータを示す前記情報である前記識別子情報に対応する前記バッファデータ領域におけるデータを書き込むようにさらに構成されたことを特徴とする請求項12に記載の装置。
  14. ユーザ機器であって、
    ネットワークインターフェースと、
    1または複数のプロセッサと、
    記憶装置であって、内部メモリおよびフラッシュメモリを含む、該記憶装置と、
    前記記憶装置に記憶され、前記1または複数のプロセッサによって実行されるように構成された1または複数のプログラムと
    を備え、前記1または複数のプログラムは、
    データ読み取り命令を受信することであって、前記データ読み取り命令は、読み取られるべきデータのサイズ、および前記フラッシュメモリにおける前記読み取られるべきデータの物理アドレスを含む、受信することと、
    前記物理アドレスを求めてバッファを検索することと、
    前記物理アドレスが前記バッファにおいて発見されなかったとき、前記読み取られるべきデータの前記サイズ、および前記フラッシュメモリの実際の物理ブロックサイズに従って、前記内部メモリからバッファデータ領域を分割することと、
    前記物理アドレスに従って、前記フラッシュメモリから前記読み取られるべきデータを読み取り、前記読み取られるべきデータを前記バッファデータ領域内にバッファリングすることと
    を含むことを特徴とするユーザ機器。
  15. 前記バッファデータ領域のサイズは、前記読み取られるべきデータの前記サイズよりも大きく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であることを特徴とする請求項14に記載の機器。
  16. 前記バッファデータ領域のサイズは、前記読み取られるべきデータの前記サイズと等しく、前記バッファデータ領域の前記サイズは、前記フラッシュメモリの前記実際の物理ブロックサイズの整数倍であることを特徴とする請求項14に記載の機器。
  17. 前記1または複数のプログラムは、前記内部メモリから、前記バッファデータ領域に対応するバッファヘッダを分割し、前記バッファデータ領域の属性情報と前記物理アドレスとを前記バッファヘッダ内にバッファリングすることをさらに含み、前記バッファデータ領域の前記属性情報は、前記バッファデータ領域のアドレスおよび前記サイズを含むことを特徴とする請求項15または16に記載の機器。
  18. 前記フラッシュメモリの前記実際の物理ブロックサイズは、前記フラッシュメモリの識別子情報CIDと、前記フラッシュメモリの前記識別子情報CIDに従った前記フラッシュメモリの前記実際の物理ブロックサイズとの間の対応テーブルから、前記フラッシュメモリのドライバ層によって取得されることを特徴とする請求項14乃至17のいずれか一項に記載の機器。
  19. 前記1または複数のプログラムは、前記フラッシュメモリのブロックデバイス層を使用することによって、前記フラッシュメモリのドライバ層により送信された前記フラッシュメモリの前記実際の物理ブロックサイズを受信することをさらに含むことを特徴とする請求項14に記載の機器。
  20. ユーザ機器であって、
    ネットワークインターフェースと、
    1または複数のプロセッサと、
    記憶装置であって、内部メモリおよびフラッシュメモリを含む、該記憶装置と、
    前記記憶装置に記憶され、前記1または複数のプロセッサによって実行されるように構成された1または複数のプログラムと
    を備え、前記1または複数のプログラムは、
    データ書き込み命令を受信することであって、前記データ書き込み命令は、書き込まれるべきデータ、前記書き込まれるべきデータのサイズ、および前記フラッシュメモリにおける前記書き込まれるべきデータの物理アドレスを含む、受信することと、
    前記書き込まれるべきデータの前記サイズ、および前記フラッシュメモリの実際の物理ブロックサイズに従って、内部メモリからバッファデータ領域を分割し、前記バッファデータ領域に対応するバッファヘッダを分割することと、
    前記書き込まれるべきデータを前記バッファデータ領域内にバッファリングし、前記バッファデータ領域の属性情報と前記物理アドレスとを前記バッファヘッダ内にバッファリングすることであって、前記バッファデータ領域の前記属性情報は、前記バッファデータ領域のアドレスおよびサイズを含む、バッファリングすることと、
    前記物理アドレスに従って、前記書き込まれるべきデータを前記フラッシュメモリ内に書き込むことと
    を含むことを特徴とするユーザ機器。
  21. 前記1または複数のプログラムは、
    識別子情報を前記バッファデータ領域に追加し、前記バッファデータ領域におけるデータが前記フラッシュメモリにおけるデータと一致しないとき、前記識別子情報をダーティデータを示す情報として識別することと、
    前記内部メモリの占有率が、予め設定された第1の閾値よりも大きいとき、前記フラッシュメモリ内に、ダーティデータを示す前記情報である前記識別子情報に対応する前記バッファデータ領域におけるデータを書き込むこと、または
    前記バッファデータ領域が存在する時間が、予め設定された第2の閾値よりも大きいとき、前記フラッシュメモリ内に、ダーティデータを示す前記情報である前記識別子情報に対応する前記バッファデータ領域におけるデータを書き込むことと
    をさらに含むことを特徴とする請求項20に記載の機器。
JP2016575098A 2014-06-25 2014-06-25 フラッシュメモリから/フラッシュメモリへデータを読み取る/書き込むための方法および装置、ならびにユーザ機器 Pending JP2017527877A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/080686 WO2015196378A1 (zh) 2014-06-25 2014-06-25 读写闪存中数据的方法、装置及用户设备

Publications (1)

Publication Number Publication Date
JP2017527877A true JP2017527877A (ja) 2017-09-21

Family

ID=54936449

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016575098A Pending JP2017527877A (ja) 2014-06-25 2014-06-25 フラッシュメモリから/フラッシュメモリへデータを読み取る/書き込むための方法および装置、ならびにユーザ機器

Country Status (6)

Country Link
US (1) US10152274B2 (ja)
EP (1) EP3142014B1 (ja)
JP (1) JP2017527877A (ja)
KR (1) KR20170010810A (ja)
CN (1) CN105393228B (ja)
WO (1) WO2015196378A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107003943B (zh) * 2016-12-05 2019-04-12 华为技术有限公司 NVMe over Fabric架构中数据读写命令的控制方法、存储设备和系统
US10628325B2 (en) * 2018-05-10 2020-04-21 Sap Se Storage of data structures in non-volatile memory
CN109614048B (zh) * 2018-12-10 2022-11-11 深圳市硅格半导体有限公司 基于闪存的数据读写方法、装置及计算机可读存储介质
CN111694769A (zh) * 2019-03-15 2020-09-22 上海寒武纪信息科技有限公司 数据读取方法及装置
CN111857578A (zh) * 2020-06-30 2020-10-30 浪潮(北京)电子信息产业有限公司 一种数据信息的读写方法、装置、设备及存储介质
CN112131144B (zh) * 2020-09-27 2023-09-26 芯天下技术股份有限公司 串行接口nand存储芯片及从其中读取数据的方法
CN113268201A (zh) 2021-05-13 2021-08-17 三星(中国)半导体有限公司 基于文件属性的缓存管理方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007528079A (ja) * 2004-03-08 2007-10-04 サンディスク コーポレイション フラッシュコントローラのキャッシュ構造
WO2009084724A1 (en) * 2007-12-28 2009-07-09 Kabushiki Kaisha Toshiba Semiconductor storage device
US20120134203A1 (en) * 2010-11-30 2012-05-31 Hitachi, Ltd. Semiconductor Device and Data Processing System

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6016472A (en) * 1997-09-29 2000-01-18 Lucent Technologies Inc. System and method for interfacing a digital audio processor to a low-speed serially addressable storage device
JP2005128596A (ja) 2003-10-21 2005-05-19 Sony Corp 情報処理装置および方法、記録媒体、プログラム、並びにコンテンツ関連データ
US7383375B2 (en) 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
CN101533662B (zh) 2009-04-09 2011-08-10 成都市华为赛门铁克科技有限公司 一种闪存读写方法与闪存设备
US8688897B2 (en) 2010-05-28 2014-04-01 International Business Machines Corporation Cache memory management in a flash cache architecture
US9122631B2 (en) * 2011-11-07 2015-09-01 Peking University Buffer management strategies for flash-based storage systems
CN103064803B (zh) 2012-12-10 2015-11-25 华为技术有限公司 一种NAND Flash存储设备的数据读写方法和装置
CN103425602B (zh) * 2013-08-15 2017-09-08 深圳市江波龙电子有限公司 一种闪存存储设备数据读写的方法、装置及主机系统
CN103559146B (zh) * 2013-11-05 2016-03-30 山东大学 一种提高NAND flash控制器读写速度的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007528079A (ja) * 2004-03-08 2007-10-04 サンディスク コーポレイション フラッシュコントローラのキャッシュ構造
WO2009084724A1 (en) * 2007-12-28 2009-07-09 Kabushiki Kaisha Toshiba Semiconductor storage device
US20100037009A1 (en) * 2007-12-28 2010-02-11 Hirokuni Yano Semiconductor storage device, method of controlling the same, controller and information processing apparatus
JP2010250845A (ja) * 2007-12-28 2010-11-04 Toshiba Corp 半導体記憶装置
US20120134203A1 (en) * 2010-11-30 2012-05-31 Hitachi, Ltd. Semiconductor Device and Data Processing System

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HEESEUNG JO, ET AL.: ""FAB: Flash-Aware Buffer Management Policy for Portable Media Players"", IEEE TRANSACTIONS ON CONSUMER ELECTRONICS, vol. 52, no. 2, JPN6018006789, 2006, US, pages 485 - 493, XP008116208, ISSN: 0003898648, DOI: 10.1109/TCE.2006.1649669 *

Also Published As

Publication number Publication date
KR20170010810A (ko) 2017-02-01
EP3142014A1 (en) 2017-03-15
US20170153850A1 (en) 2017-06-01
US10152274B2 (en) 2018-12-11
CN105393228B (zh) 2019-09-03
WO2015196378A1 (zh) 2015-12-30
CN105393228A (zh) 2016-03-09
EP3142014A4 (en) 2017-06-28
EP3142014B1 (en) 2023-05-17

Similar Documents

Publication Publication Date Title
US8417901B2 (en) Combining write commands to overlapping addresses or to a specific page
JP2017527877A (ja) フラッシュメモリから/フラッシュメモリへデータを読み取る/書き込むための方法および装置、ならびにユーザ機器
TWI650644B (zh) 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置
US10409502B2 (en) Method and apparatus for writing metadata into cache
EP2732374B1 (en) Mobile memory cache read optimization
US10042576B2 (en) Method and apparatus for compressing addresses
KR20170097609A (ko) 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법
KR20100081880A (ko) 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법
US20190042153A1 (en) Mass storage device capable of fine grained read and/or write operations
KR20140093505A (ko) 단말기의 메모리 확장 장치 및 방법
CN106170757A (zh) 一种数据存储方法及装置
US20100131699A1 (en) Methods, apparatuses, and computer program products for enhancing memory erase functionality
US20140219041A1 (en) Storage device and data processing method thereof
CN103229150A (zh) 数据控制方法及系统
US20240086113A1 (en) Synchronous write method and device, storage system and electronic device
US9996296B2 (en) Electronic control unit and method for rewriting data
CN108427648B (zh) 存储系统页内脏数据索引方法和装置
CN108519860B (zh) 一种ssd读命中的处理方法和装置
CN116340198A (zh) 固态硬盘的数据写入方法、其装置及固态硬盘
KR101101324B1 (ko) Hdd를 제어하는 스토리지 제어 장치를 포함하는 모바일 장치 및 스토리지 제어 방법
WO2022021337A1 (zh) 闪存控制方法和装置
TWI693517B (zh) 用來進行儲存空間管理之方法以及資料儲存裝置及其控制器
TW202034170A (zh) 用來進行儲存空間管理之方法以及資料儲存裝置及其控制器

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180227

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20180511

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20180511

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180528

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20181016

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20181207