WO2015196378A1 - 读写闪存中数据的方法、装置及用户设备 - Google Patents

读写闪存中数据的方法、装置及用户设备 Download PDF

Info

Publication number
WO2015196378A1
WO2015196378A1 PCT/CN2014/080686 CN2014080686W WO2015196378A1 WO 2015196378 A1 WO2015196378 A1 WO 2015196378A1 CN 2014080686 W CN2014080686 W CN 2014080686W WO 2015196378 A1 WO2015196378 A1 WO 2015196378A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
flash memory
cache
data area
size
Prior art date
Application number
PCT/CN2014/080686
Other languages
English (en)
French (fr)
Inventor
李志刚
施国军
赵迎春
Original Assignee
华为技术有限公司
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 华为技术有限公司 filed Critical 华为技术有限公司
Priority to PCT/CN2014/080686 priority Critical patent/WO2015196378A1/zh
Priority to JP2016575098A priority patent/JP2017527877A/ja
Priority to US15/319,166 priority patent/US10152274B2/en
Priority to EP14895589.1A priority patent/EP3142014B1/en
Priority to CN201480036355.4A priority patent/CN105393228B/zh
Priority to KR1020167035646A priority patent/KR20170010810A/ko
Publication of WO2015196378A1 publication Critical patent/WO2015196378A1/zh

Links

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

Definitions

  • the present invention relates to the field of data processing, and in particular, to a method, device, and user equipment for reading and writing data in a flash memory. Background technique
  • eMMC embedded Mul t i Med ia Card
  • NAND Flash non-volatile flash
  • NAND Flash non-volatile flash
  • the first page of NAND f la sh is 512 bytes, and with the development of NAND Flash technology, the capacity of NAND Flash is getting bigger and bigger, and the page size is also increased to 8 ki lo byte (referred to as 8KB, or 8K) or 16K.
  • eMMC is a standard unified protocol with a defined read/write unit of 512 bytes. Therefore, the increase of the write amplification factor is caused, which affects the operational efficiency and service life of the e-solid C.
  • the e-solid C driver unifies the size of the physical block, for example, 512 bytes, so that since the read/write unit of the NAND Flash is a page, 8K or 16K, so even if e Li C reads and writes 512 bytes, the operation of the NAND Fla sh part has been enlarged to 8K or 16K, resulting in low read/write efficiency and short service life of e-solid C.
  • the embodiment of the invention provides a method, a device and a user equipment for reading and writing data in a flash memory, which can solve the problem of low reading and writing efficiency of the flash memory and short service life.
  • a method of reading data in a flash memory comprising:
  • the instruction to read the data includes: a size and a physical address of the data to be read on the flash memory;
  • the cache data area is divided from the memory according to the size of the data to be read and the actual physical block size of the flash memory;
  • a size of the cache data area is greater than a size of the data to be read, and a size of the cache data area is an actual physical block of the flash memory. An integer multiple of the size.
  • a size of the cache data area is equal to a size of the data to be read, and a size of the cache data area is an actual physical block of the flash memory. An integer multiple of the size.
  • the method further includes:
  • the information includes the address and size of the cache data area.
  • the actual physical block size in the flash memory is based on the identifier of the flash memory
  • the information CID is obtained from the drive layer of the flash memory from the correspondence table between the identification information CID of the flash memory and the actual physical block size of the flash memory.
  • the method before the receiving the instruction for reading data, the method further includes: receiving, by the driver layer of the flash memory, sending by using a block device layer of the flash memory The actual physical block size of the flash.
  • a method for writing data to a flash memory comprising: receiving an instruction to write data, wherein the instruction to write data includes: data to be written, size of the data to be written And a physical address of the data to be written on the flash memory;
  • the method further includes: adding identifier information to the cache data area, where data in the cache data area is inconsistent with data in the flash memory Identifying the identification information as information indicating dirty data;
  • the identifier information is written into the flash memory in the cache data area corresponding to the information indicating the dirty data;
  • the identification information is written into the flash memory in the cache data area corresponding to the information indicating the dirty data.
  • an apparatus for reading data in a flash memory comprising: a receiving unit, a searching unit, a dividing unit, and a buffering unit;
  • the receiving unit is configured to receive an instruction for reading data, where the instruction for reading data includes: a size of data to be read and a physical address of the data to be read on the flash memory;
  • the searching unit is configured to search the cache for the physical address received by the receiving unit, and the dividing unit is configured to: when the searching unit does not find the physical address from the cache, according to the Describe the size of the read data and the actual physical block size of the flash memory, and divide the cache data area from the memory;
  • the buffer unit is configured to read the data to be read from the flash memory according to the physical address, and cache the data to be read in the cache data area divided by the dividing unit.
  • the dividing unit is further configured to: divide a cache header corresponding to the cache data area from the memory, and use the cache data area Attribute information and the physical address are cached in the cache header, where the attribute information of the cache data area includes an address and a size of the cache data area;
  • the size of the cache data area is larger than the size of the data to be read, and the size of the cache data area is an integer multiple of the actual physical block size of the flash memory; or
  • the size of the cache data area is equal to the size of the data to be read, and the size of the cache data area is an integer multiple of the actual physical block size of the flash memory;
  • the actual physical block size of the flash memory is obtained from the drive layer of the flash memory from the correspondence between the identification information CID of the flash memory and the actual physical block size of the flash memory according to the identification information CID of the flash memory.
  • the receiving unit is further configured to: receive a driving layer of the flash memory through a block device layer of the flash memory The actual physical block size of the flash that was sent.
  • a fourth aspect provides an apparatus for writing data to a flash memory, the apparatus comprising: a receiving unit, a dividing unit, a buffer unit, and a writing unit;
  • the receiving unit is configured to receive an instruction for writing data, where the instruction for writing data includes: data to be written, a size of the data to be written, and a physicality of the data to be written on the flash memory Address
  • the dividing unit is configured to divide a cache data area from the memory according to the size of the data to be written and the actual physical block size of the flash memory received by the receiving unit, and divide the buffer data area with the cache data area Corresponding cache header;
  • the buffer unit is configured to cache the data to be written in the cache data area divided by the dividing unit, and cache attribute information of the cache data area and the physical address in the dividing unit.
  • the cache header where the attribute information of the cache data area includes a logical address and a size of the cache data area;
  • the writing unit is configured to write the data to be written into the flash memory according to the physical address.
  • the device further includes: an adding unit, configured to add identifier information to the cache data area, where the data in the cache data area is When the data in the flash memory is inconsistent, the identifier information is identified as information indicating dirty data; and the writing unit is further configured to: when the memory usage ratio is greater than a preset first threshold, the adding The identification information added by the unit is written into the flash memory by the data in the cache data area corresponding to the information indicating the dirty data; or
  • the identifier information added by the adding unit is written into the flash memory as data in a cache data area corresponding to information indicating dirty data.
  • a user equipment comprising:
  • One or more processors are One or more processors;
  • the memory including a memory and a flash memory
  • One or more programs are stored in the memory and configured to be executed by one or more processors, the one or more programs comprising:
  • the instruction to read data includes: a size of data to be read and a physical address of the data to be read on the flash memory;
  • the cache data area is divided from the memory according to the size of the data to be read and the actual physical block size of the flash memory;
  • a size of the cache data area is greater than a size of the data to be read, and a size of the cache data area is a real An integer multiple of the physical block size.
  • a size of the cache data area is equal to a size of the data to be read, and a size of the cache data area is an actual physical block of the flash memory. An integer multiple of the size.
  • the one or more programs further includes: dividing the memory from the memory a cache header corresponding to the cache data area, the attribute information of the cache data area and the physical address are cached in the cache header, where the attribute information of the cache data area includes the cache data area Address and size.
  • the actual physical block size of the flash memory is the identification information CID of the flash memory. And obtained by the drive layer of the flash memory from a correspondence table between the identification information CID of the flash memory and the actual physical block size of the flash memory.
  • the one or more programs further include: receiving an actual physical of the flash memory sent by a driving layer of the flash memory through a block device layer of the flash memory Block size.
  • a user equipment comprising:
  • One or more processors are One or more processors;
  • the memory including a memory and a flash memory
  • One or more programs are stored in the memory and configured to be executed by one or more processors, the one or more programs comprising:
  • the instruction to write data includes: data to be written, a size of the data to be written, and a physical address of the data to be written on the flash memory;
  • the one or more programs further includes:
  • identification information to the cache data area, and when the data in the cache data area is inconsistent with the data in the flash memory, identifying the identification information as information indicating dirty data;
  • the identifier information is written into the flash memory in the cache data area corresponding to the information indicating the dirty data;
  • the identification information is written into the flash memory in the cache data area corresponding to the information indicating the dirty data.
  • the method, device and user equipment for reading and writing data in a flash memory provided by embodiments of the present invention.
  • the cache data area is applied, and the purpose of dynamically adjusting the cache data area is achieved, that is, the unit for reading and writing data in the flash memory and the unit for reading and writing data in the flash memory are unified, thereby solving the reading of the flash memory. Low writing efficiency and short service life.
  • FIG. 1 is a flowchart of a method for reading data in a flash memory according to Embodiment 1 of the present invention
  • FIG. 1 is a schematic diagram of a cache of the present invention
  • FIG. 3 is a flowchart of a method for writing data to a flash memory according to Embodiment 2 of the present invention
  • FIG. 4 is a schematic diagram of a cache after adding identifier information according to the present invention
  • FIG. 5 is a schematic diagram of an apparatus for reading data in a flash memory according to Embodiment 3 of the present invention.
  • FIG. 6 is a schematic diagram of an apparatus for writing data to a flash memory according to Embodiment 4 of the present invention
  • FIG. 7 is a schematic diagram of a user equipment according to Embodiment 5 of the present invention
  • FIG. 8 is a schematic diagram of a user equipment according to Embodiment 6 of the present invention. detailed description
  • FIG. 1 is a flowchart of a method for reading data in a flash memory according to Embodiment 1 of the present invention. As shown in FIG. 1 , the method specifically includes:
  • the user equipment receives an instruction to read data, where the instruction to read data includes: a size of data to be read and a physical address of the data to be read on the flash memory.
  • the execution body of S110 may be a processor of the user equipment.
  • Flash memory is a form of electronically erasable programmatic read-only memory that allows multiple erases or writes during operation and is a non-volatile memory. Flash memory is a storage medium used by user devices to permanently store data. In this specification, the flash memory is described as NAND Flash, and the NAND Flash is embedded in the e solid C. When the user equipment reads data from the flash memory, the data in the flash memory needs to be cached in the memory first; or, when the user equipment writes data to the flash memory, the data needs to be cached in the memory and then transferred to the flash memory. data input.
  • the actual physical block size (Block size) of the corresponding flash memory of the eMMC of different manufacturers is different.
  • the actual physical block sizes of the corresponding flash memories of different types of eMMCs are also different.
  • the actual physical block size of the flash memory is used to indicate the unit of read and write data inside the E solid C. The larger the value, the better the performance of the internal read and write data of the e solid C.
  • the user equipment searches for the physical address from the cache.
  • the execution body of S120 may be a processor of the user equipment.
  • the cache buffer-cache is part of the memory. In the l inux system, all free memory can be used as a cache.
  • the cache is used to store data in the flash, which speeds up processor access to data in the flash.
  • FIG. 1 is a schematic diagram of a cache of the present invention.
  • the cache mainly includes two parts: a buffer head (buffer_head) and a cache data area (buffer_da ta ), and the cache header contains all the information required by the processor to operate the cache. .
  • the cache header includes: a physical address pointer (b_blocknr), a pointer to the next cache (b-reqnext), and a buffer data area pointer (b_da ta), where b_blocknr is used to store data in the cache data area in the flash memory.
  • the physical address above, b-reqnext is used to store the address of the next cache
  • b_da ta is used to store the address and size of the cached data area.
  • the buffer_da ta is a buffer data area corresponding to the cache header, and is used for storing data, and the data in the buffer data area corresponds to a block on the flash memory.
  • the size of each buffer_da ta is not fixed.
  • the cache header and the cache data area are dynamically established in the process of reading data, and the information of the cache header and the data cached in the cache data area are also dynamically filled.
  • the processor needs to process multiple different instructions for reading data (that is, multiple reads of different data are required), multiple caches need to be created. Therefore, when the processor first receives an instruction to read data, there is no cache in memory.
  • each cache includes a cache header and a cache data area. If the processor receives the instruction to read the data again, it scans the established cache header in turn, and compares the physical address cached in the established cache header with the physical address in the newly received instruction to read the data. If the comparison result is the same, the data in the cache data area corresponding to the cache header is directly returned; if the comparison result is different, it means that the physical address is not found from the established cache header.
  • the cache data area is divided from the memory according to the size of the data to be read and the actual physical block size of the flash memory.
  • the execution body of S130 may be a processor of the user equipment.
  • the actual physical block size of the flash memory is based on the identification information of the flash memory (Card IDent ty,
  • the correspondence table between the identification information CID of the flash memory and the actual physical block size of the flash memory is pre-established.
  • the specific establishment process is: obtaining the preset identification information of the flash memory from the manufacturer's data sheet (Da ta sheet) by using a standard command, and then obtaining the manufacturer ID from the preset identification information of the obtained flash memory, and obtaining the manufacturer ID.
  • the manufacturer ID further obtain the model of the flash memory from the CID, and then determine whether the model of the flash memory is in the lookup table (Look_Up_Tab le , LUT ), and if so, return the actual physical block size of the flash memory in the LUT table; otherwise, the default is returned.
  • the value is 512 bytes.
  • the driving layer of the flash memory feeds back the actual physical block size of the obtained flash memory to the block layer of the flash memory, and finally passes the block device layer to the flash memory.
  • the actual physical block size is sent to the processor via the submi t _bio interface function.
  • the cache data area is divided from the memory, that is, the cache data area is established. Specifically, a part of the space in the memory is used as a cache data area, and the space is represented by a start address and an end address. For example, if the size of the memory is 4G, and the data is not stored between 2000KB and 4000KB, the processor can divide 2000KB-2008KB from the above space, and a total of 8KB space is used as the cache data area.
  • the processor when the physical address is not found in the cache, the processor does not read the data to be read before, that is, the data to be read is not cached in the cache data area.
  • the processor needs to establish a cache, wherein the size of the cached data area of the cache is greater than the size of the data to be read, and the size of the cached data area is an integer multiple of the actual physical block size of the flash memory.
  • the size of the cache data area is equal to the size of the data to be read, and the size of the cache data area is an integer multiple of the actual physical block size of the flash memory.
  • the actual physical block size of the flash memory is 8K, and if the size of the data to be read is 2K, the size of the cache data area divided from the memory is 8K, and the size of the cache data area is the actual size of the flash memory. 1 times the size of the physical block; If the size of the data to be read is 22K, the size of the buffer data area divided from the memory is 24 ⁇ , and the size of the cache data area is 3 times the actual physical block size of the flash memory.
  • the method further includes:
  • the information includes the address and size of the cache data area. For example, if the first address of the cache data area is 200 ⁇ and the size is 24 ⁇ , the first address 200 ⁇ and the size 24 ⁇ are stored in the cache header corresponding to the cache data area.
  • the user equipment reads the data to be read from the flash memory according to the physical address, and caches the data to be read in the cache data area.
  • the execution body of S140 may be a processor of the user equipment.
  • the processor sends a block device read request to the driver layer of the flash memory through the submi t_b io interface function, and the read request includes the physical address.
  • the block device layer of the flash memory receives the block device read request through the mmc-reques t interface function, and after receiving the block device read request, the block device layer of the flash memory sends a read command to the driver layer of the flash memory, where the read command includes a physical address.
  • the drive layer of the flash memory acquires the data to be read from the flash memory according to a physical address in the received read command.
  • the data to be read is sent to the block device layer of the flash memory; after receiving the data to be read, the block device layer of the flash memory caches the data to be read in the physical In the cache, and forwarded to the processor; after receiving the data to be read, the processor caches in the divided cache data area, and returns the data to be read to the upper application.
  • the method for reading data in the flash memory applies for the cache data area according to the actual physical block size of the flash memory, thereby achieving the purpose of dynamically adjusting the cache data area, that is, unifying the data of the processor reading the flash memory.
  • the unit and the unit of reading data inside the flash memory can solve the problem of low reading efficiency and short service life of the flash memory.
  • FIG. 3 is a flowchart of a method for writing data to a flash memory according to Embodiment 2 of the present invention, as shown in FIG. 3 As shown, the method specifically includes:
  • the user equipment receives an instruction to write data, where the instruction for writing data includes: data to be written, a size of the data to be written, and a physical address of the data to be written on the flash memory.
  • the execution body of S 310 may be a processor of the user equipment.
  • Flash memory is a form of electronically erasable programmatic read-only memory that allows multiple erases or writes during operation and is a non-volatile memory. Flash memory is a storage medium used by user devices to permanently store data. In this specification, the flash memory is described as NAND F la sh, and the NAND F la sh is embedded in the e solid C. When the user equipment reads data from the flash memory, the data in the flash memory needs to be cached in the memory first; or, when the user equipment writes data to the flash memory, the data needs to be cached in the memory and then transferred to the flash memory. data input.
  • S320 The user equipment divides the cache data area from the memory according to the size of the data to be written and the actual physical block size of the flash memory, and divides a cache header corresponding to the cache data area.
  • the execution body of S 320 may be a processor of the user equipment.
  • the cache header and the cache data area are dynamically established in the process of writing data to the flash memory, and the information of the cache header and the data cached in the cache data area are also dynamically filled.
  • the processor needs to process multiple different instructions for writing data (that is, multiple writes of different data need to be completed)
  • multiple caches need to be created. Therefore, when the processor first receives an instruction to write data, there is no cache in memory.
  • multiple caches are created, each of which includes a cache header and a cache data area.
  • the size of the cache data area is larger than the size of the data to be read, and the size of the cache data area is an integer multiple of the actual physical block size of the flash memory.
  • the size of the cache data area is equal to the size of the data to be read, and the size of the cache data area is an integer multiple of the actual physical block size of the flash memory.
  • the user equipment caches the to-be-written data in the cache data area, where the The attribute information of the data area and the physical address are cached in the cache header, and the attribute information of the cache data area includes an address and a size of the cache data area.
  • the execution body of S 330 may be a processor of the user equipment.
  • the first address of the cache data area is 200K and the size is 24K
  • the first address 200K and the size 24K are saved in the cache header corresponding to the cache data area.
  • the user equipment writes the to-be-written data into the flash memory according to the physical address.
  • the execution body of the S 340 may be a processor of the user equipment.
  • the device writes the data to be written into the flash memory according to the physical address, where the processor sends a block device write request to the driver layer of the flash memory through a submi t_b io interface function, where the write request includes a physical address.
  • the block device layer of the flash memory receives the block device write request through the mmc-reques t interface function, and after receiving the block device write request, the block device layer of the flash device forwards the block device write request to the driver layer of the flash memory, and finally
  • the flash-related driver layer writes the data to be written into the flash memory according to the physical address, and returns information of successful writing to the block device layer of the flash memory.
  • the block device layer of the flash memory After receiving the above successful write information, the block device layer of the flash memory forwards the successfully written information to the processor; finally, the processor returns the successfully written information to the upper layer application, and waits to receive the next write data. instruction.
  • the method for writing data to the flash memory applies the cache data area according to the actual physical block size of the flash memory, thereby achieving the purpose of dynamically adjusting the cache data area, that is, unifying the processor to write to the flash memory.
  • the unit of data input and the unit of writing data inside the flash memory can solve the problem of low writing efficiency and short service life of the flash memory.
  • the method may further include the following steps:
  • the identifier information is added to the cache data area, and the schematic diagram of the cache after the identifier information is added is shown in FIG. 4 .
  • FIG. 4 there are three caches, each of which includes a buffer header (buffer-head) and a buffer data area (buffer-data).
  • the cache header includes b-blocknr . b.reqnext .
  • Identification information (dirty ) and b_data , b_blocknr is used to store the physical address of the data in the corresponding cache data area on the flash memory, b-reqnext is used to store the address of the next cache, dirty is the newly added identification information, when the identification information is 0, The data in the corresponding cache data area is normal data. When the identification information is 1, it indicates that the data in the corresponding cache data area is dirty data; b_data is used to store the address and size of the corresponding cache data area.
  • Buffer-data is the corresponding buffer data area for storing data. The size of each buf fer_data is not fixed, but the buffer_data is in the actual physical block size of the flash memory.
  • the adding the identifier information to the cache data area is specifically: adding the identifier information to the cache data area in units of the actual physical block size of the flash memory. As shown in Figure 4, it is assumed that the actual physical block size of the flash memory is 8K, because 8K is twice the actual physical block size of the flash memory, so an identification information is added; 16K is twice the actual physical block size of the flash memory, then two are added. Identification information; 24K is 3 times the actual physical block size of the flash memory, and 3 identification information is added.
  • the identification information is written into the flash memory in the cache data area corresponding to the information indicating the dirty data.
  • the identifier information is written into the flash memory in the cache data area corresponding to the information indicating the dirty data.
  • the refresh daemon (F lush daemon) can uniformly detect the cache data area of the cache header identified as information indicating dirty data, thereby writing the data in the cache data area to the flash memory.
  • FIG. 5 is a schematic diagram of an apparatus for reading data in a flash memory according to Embodiment 3 of the present invention.
  • the apparatus can be used to perform the method described in Figure 1.
  • the apparatus includes: a receiving unit 501, a searching unit 502, a dividing unit 503, and a buffer unit 504.
  • the receiving unit 501 is configured to receive an instruction for reading data, where the instruction for reading the data includes: a size of the data to be read and a physical address of the data to be read on the flash memory.
  • the searching unit 502 is configured to search the cache for the physical address received by the receiving unit 501.
  • a dividing unit 503, configured to: when the searching unit 502 does not find the physical address from the cache, divide the cached data from the memory according to the size of the data to be read and the actual physical block size of the flash memory. Area.
  • the buffer unit 504 is configured to read the data to be read from the flash memory according to the physical address, and cache the data to be read in the cache data area divided by the dividing unit 503.
  • the dividing unit 503 is further configured to:
  • the information includes an address and a size of the cache data area
  • the size of the cache data area is larger than the size of the data to be read, and the size of the cache data area is an integer multiple of the actual physical block size of the flash memory; or
  • the size of the cache data area is equal to the size of the data to be read, and the size of the cache data area is an integer multiple of the actual physical block size of the flash memory;
  • the actual physical block size of the flash memory is the identification information C ID of the flash memory, and is obtained by the driving layer of the flash memory from the correspondence table between the identification information CID of the flash memory and the actual physical block size of the flash memory. Taken.
  • the receiving unit 501 is further configured to: receive an actual physical block size of the flash memory sent by a driving layer of the flash memory through a block device layer of the flash memory.
  • FIG. 6 is a schematic diagram of an apparatus for writing data to a flash memory according to Embodiment 4 of the present invention.
  • the apparatus can be used to perform the method described in FIG.
  • the apparatus includes: a receiving unit 601, a dividing unit 602, a buffer unit 603, and a writing unit 604.
  • the receiving unit 601 is configured to receive an instruction for writing data, where the instruction for writing data includes: data to be written, a size of the data to be written, and a physical address of the data to be written on the flash memory .
  • the dividing unit 602 is configured to divide a cache data area from the memory according to the size of the data to be written and the actual physical block size of the flash memory received by the receiving unit 601, and divide the buffer data area corresponding to the cache data area. Cache the header.
  • the buffer unit 603 is configured to cache the data to be written in the cache data area divided by the dividing unit 602, and cache the attribute information of the cache data area and the physical address in the partition of the dividing unit.
  • the cache header wherein the attribute information of the cache data area includes a logical address and a size of the cache data area.
  • the writing unit 604 is configured to write the to-be-written data into the flash memory according to the physical address.
  • the device further includes: an adding unit 605, configured to add identifier information to the cache data area, where the identifier information is inconsistent with data in the flash memory, and the identifier information is Identified as information indicating dirty data.
  • an adding unit 605 configured to add identifier information to the cache data area, where the identifier information is inconsistent with data in the flash memory, and the identifier information is Identified as information indicating dirty data.
  • the writing unit 604 is further configured to: when the occupancy of the memory is greater than a preset first threshold, the identifier information added by the adding unit is data in a cache data area corresponding to information indicating dirty data. Write to the flash memory; or,
  • the identifier information added by the adding unit is a data write station in a cache data area corresponding to information indicating dirty data.
  • the flash memory In the flash memory.
  • the device for reading data in the flash memory and the device for writing data to the flash memory provided by the embodiment of the present invention apply for the cache data area according to the actual physical block size of the flash memory, thereby achieving the purpose of dynamically adjusting the cache data area, that is, unified processing
  • the unit reads and writes data in the flash memory and the unit of reading and writing data in the flash memory, thereby solving the problem of low read/write efficiency and short service life of the flash memory.
  • FIG. 7 is a schematic diagram of a user equipment according to Embodiment 5 of the present invention.
  • the device includes: a network interface 701, one or more processors 702, a memory 703, and a system bus 704 for connecting the network interface 701, the processor 702, and the memory 703.
  • processor 702 can be a CPU.
  • Network interface 701 is used to communicate with other devices.
  • Memory 703 includes: memory and flash memory, one or more programs stored in memory 703 and configured to be executed by one or more processors 702, one or more programs including:
  • the instruction to read data includes: a size of data to be read and a physical address of the data to be read on the flash memory;
  • the cache data area is divided from the memory according to the size of the data to be read and the actual physical block size of the flash memory;
  • the size of the cache data area is larger than the size of the data to be read, and the size of the cache data area is an integer multiple of an actual physical block size of the flash memory.
  • the size of the cache data area is equal to the size of the data to be read, and the size of the cache data area is an integer multiple of an actual physical block size of the flash memory.
  • the one or more programs further include: dividing, from the memory, a cache header corresponding to the cache data area, and buffering attribute information of the cache data area and the physical address in the a cache header, where the attribute information of the cache data area includes the cache data area Address and size.
  • the actual physical block size of the flash memory is obtained according to the identification information CID of the flash memory, and is obtained by a driving layer of the flash memory from a correspondence table between the identification information CID of the flash memory and the actual physical block size of the flash memory. Arrived.
  • the one or more programs further include: receiving a driving layer of the flash memory through the user equipment provided in Embodiment 6 of the present invention.
  • the device includes: a network interface 801, one or more processors 802, a memory 803, and a system bus 804 for connecting the network interface 801, the processor 802, and the memory 803.
  • processor 802 can be a CPU.
  • Network interface 801 is used to communicate with other devices.
  • Memory 803 includes: memory and flash memory, one or more programs stored in memory 803 and configured to be executed by one or more processors 802, one or more programs including:
  • the instruction to write data includes: data to be written, a size of the data to be written, and a physical address of the data to be written on the flash memory;
  • the one or more programs further include:
  • identification information to the cache data area, and when the data in the cache data area is inconsistent with the data in the flash memory, identifying the identification information as information indicating dirty data;
  • the identifier information is written into the flash memory in the cache data area corresponding to the information indicating the dirty data; or When the time in which the cache data area resides is greater than a preset second threshold, the identifier information is written into the flash memory in the cache data area corresponding to the information indicating the dirty data.
  • the user equipment provided by the embodiment of the present invention applies the cache data area according to the actual physical block size of the flash memory, thereby achieving the purpose of dynamically adjusting the cache data area, that is, unifying the unit of the processor to read and write data in the flash memory and the internal read/write data of the flash memory.
  • the unit can solve the problem of low reading and writing efficiency of flash memory and short service life.
  • RAM random access memory
  • ROM read-only memory
  • EEPROM electrically programmable ROM
  • EEPROM electrically erasable programmable ROM
  • registers hard disk, removable disk, CD-ROM, or technical field Any other form of storage medium known.

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 Mul t i Med ia Card , eMMC)作为手机的 主要存储介质广为使用, e固 C 内部存储器件是非线性闪存(NAND Flash ) , 简称闪存。 NAND f lash 以页为单位读写数据, 而以块为单位擦除数据。 最初 NAND f la sh的一个页是 512字节,而随之 NAND F lash工艺的发展, NAND Flash 的容量越来越大, 页大小也增大到 8 ki lo byte (简称 8KB, 或者 8K )或者 16K。 eMMC是一个标准的统一的协议, 规定的读写单位是 512字节。 因此造成 了写放大系数的增大, 影响 e固 C的操作效率和使用寿命。
现有技术中, 为了兼容不同厂家和类型的 e丽 C , l inux系统中, e固 C驱 动统一了物理块的大小, 举例为 512字节, 这样由于 NAND Flash的读写单位 是页, 即 8K或者 16K, 因此即使 e丽 C读写 512字节, 对 NAND Fla sh部分而 言操作都已经放大到了 8K或者 16K,从而导致 e固 C的读写效率低, 使用寿命 短的问题。 发明内容
本发明实施例提供了一种读写闪存中数据的方法、 装置及用户设备, 可 以解决闪存的读写效率低, 使用寿命短的问题。
第一方面, 提供了一种读取闪存中数据的方法, 该方法包括:
接收读取数据的指令, 其中, 所述读取数据的指令包括: 待读取数据的 大小和所述待读取数据在所述闪存上的物理地址;
从緩存中查找所述物理地址;
当未从所述緩存中查找到所述物理地址时, 根据所述待读取数据的大小 和所述闪存的实际物理块大小, 从内存中划分出緩存数据区;
根据所述物理地址, 从所述闪存中读取所述待读取数据, 将所述待读取 数据緩存在所述緩存数据区中。
结合第一方面, 在第一方面的第一种实现方式中, 所述緩存数据区的大 小大于所述待读取数据的大小, 并且所述緩存数据区的大小为所述闪存的实 际物理块大小的整数倍。
结合第一方面, 在第一方面的第二种实现方式中, 所述緩存数据区的大 小等于所述待读取数据的大小, 并且所述緩存数据区的大小为所述闪存的实 际物理块大小的整数倍。
结合第一方面的第一种实现方式或者第一方面的第二种实现方式, 在第 一方面的第三种实现方式中, 在所述从内存中划分出緩存数据区之后, 在所 述根据所述物理地址, 从所述闪存中读取所述待读取数据之前, 所述方法还 包括:
从所述内存中划分出与所述緩存数据区对应的緩存头部 ,将所述緩存数据 区的属性信息和所述物理地址緩存在所述緩存头部, 其中, 所述緩存数据区 的属性信息包括所述緩存数据区的地址和大小。
结合第一方面或者第一方面的上述三种实现方式中的任一种实现方式, 在第一方面的第四种实现方式中, 在所述闪存的实际物理块大小是根据所述 闪存的标识信息 CID,由所述闪存的驱动层从闪存的标识信息 CID与闪存的实 际物理块大小的对应关系表中获取到的。
结合第一方面,在第一方面的第五种实现方式中,在所述接收读取数据的 指令之前, 所述方法还包括: 接收所述闪存的驱动层经过所述闪存的块设备 层发送的所述闪存的实际物理块大小。 第二方面, 提供了一种向闪存中写入数据的方法, 该方法包括: 接收写数据的指令, 其中, 所述写数据的指令包括: 待写入数据、 所述 待写入数据的大小和所述待写入数据在所述闪存上的物理地址;
根据所述待写入数据的大小和所述闪存的实际物理块大小, 从内存中划 分出緩存数据区, 并划分出与所述緩存数据区对应的緩存头部;
将所述待写入数据緩存在所述緩存数据区中, 将所述緩存数据区的属性 信息和所述物理地址緩存在所述緩存头部, 其中, 所述緩存数据区的属性信 息包括所述緩存数据区的地址和大小;
根据所述物理地址, 将所述待写入数据写入所述闪存中。
结合第二方面, 在第二方面的第一种实现方式中, 所述方法还包括: 为所述緩存数据区添加标识信息, 当所述緩存数据区中的数据与所述闪 存中的数据不一致时, 将所述标识信息标识为表示脏数据的信息;
当所述内存的占用率大于预设的第一阔值时, 将所述标识信息为表示脏 数据的信息对应的緩存数据区中的数据写入所述闪存中; 或者,
当所述緩存数据区驻留的时间大于预设的第二阔值时, 将所述标识信息 为表示脏数据的信息对应的緩存数据区中的数据写入所述闪存中。
第三方面, 提供了一种读取闪存中数据的装置, 该装置包括: 接收单元、 查找单元、 划分单元和緩存单元;
所述接收单元, 用于接收读取数据的指令, 其中, 所述读取数据的指令 包括: 待读取数据的大小和所述待读取数据在所述闪存上的物理地址;
所述查找单元, 用于从緩存中查找所述接收单元接收的所述物理地址; 所述划分单元, 用于当所述查找单元未从所述緩存中查找到所述物理地 址时, 根据所述待读取数据的大小和所述闪存的实际物理块大小, 从内存中 划分出緩存数据区;
所述緩存单元, 用于根据所述物理地址, 从所述闪存中读取所述待读取 数据, 将所述待读取数据緩存在所述划分单元划分的所述緩存数据区中。 结合第三方面, 在第三方面的第一种实现方式中, 所述划分单元还用于: 从所述内存中划分出与所述緩存数据区对应的緩存头部, 将所述緩存数 据区的属性信息和所述物理地址緩存在所述緩存头部, 其中, 所述緩存数据 区的属性信息包括所述緩存数据区的地址和大小;
所述緩存数据区的大小大于所述待读取数据的大小, 并且所述緩存数据 区的大小为所述闪存的实际物理块大小的整数倍; 或者,
所述緩存数据区的大小等于所述待读取数据的大小, 并且所述緩存数据 区的大小为所述闪存的实际物理块大小的整数倍;
所述闪存的实际物理块大小是才艮据所述闪存的标识信息 CID, 由所述闪存 的驱动层从闪存的标识信息 CID与闪存的实际物理块大小的对应关系表中获 取到的。
结合第三方面或第三方面的第一种实现方式,在第三方面的第二种实现方 式中, 所述接收单元还用于: 接收所述闪存的驱动层经过所述闪存的块设备 层发送的所述闪存的实际物理块大小。
第四方面,提供了一种向闪存中写入数据的装置,该装置包括:接收单元、 划分单元、 緩存单元和写入单元;
所述接收单元, 用于接收写数据的指令, 其中, 所述写数据的指令包括: 待写入数据、 所述待写入数据的大小和所述待写入数据在所述闪存上的物理 地址;
所述划分单元, 用于根据所述接收单元接收的所述待写入数据的大小和 所述闪存的实际物理块大小, 从内存中划分出緩存数据区, 并划分出与所述 緩存数据区对应的緩存头部;
所述緩存单元, 用于将所述待写入数据緩存在所述划分单元划分的所述 緩存数据区中, 将所述緩存数据区的属性信息和所述物理地址緩存在所述划 分单元划分的所述緩存头部, 其中, 所述緩存数据区的属性信息包括所述緩 存数据区的逻辑地址和大小; 所述写入单元,用于根据所述物理地址,将所述待写入数据写入所述闪存 中。
结合第四方面, 在第四方面的第一种实现方式中, 所述装置还包括: 添 加单元, 用于为所述緩存数据区添加标识信息, 当所述緩存数据区中的数据 与所述闪存中的数据不一致时, 将所述标识信息标识为表示脏数据的信息; 所述写入单元, 还用于当所述内存的占用率大于预设的第一阔值时, 将 所述添加单元添加的所述标识信息为表示脏数据的信息对应的緩存数据区中 的数据写入所述闪存中; 或者,
当所述緩存数据区驻留的时间大于预设的第二阈值时, 将所述添加单元 添加的所述标识信息为表示脏数据的信息对应的緩存数据区中的数据写入所 述闪存中。
第五方面, 提供了一种用户设备, 该设备包括:
网络接口;
一个或多个处理器;
存储器, 所述存储器包括内存和闪存;
一个或多个程序存储在存储器中, 并被配置为由一个或多个处理器执行, 一个或多个程序包括:
接收读取数据的指令, 其中, 所述读取数据的指令包括: 待读取数据的 大小和所述待读取数据在所述闪存上的物理地址;
从緩存中查找所述物理地址;
当未从所述緩存中查找到所述物理地址时, 根据所述待读取数据的大小 和所述闪存的实际物理块大小, 从所述内存中划分出緩存数据区;
根据所述物理地址, 从所述闪存中读取所述待读取数据, 将所述待读取 数据緩存在所述緩存数据区中。
结合第五方面, 在第五方面的第一种实现方式中, 所述緩存数据区的大 小大于所述待读取数据的大小, 并且所述緩存数据区的大小为所述闪存的实 际物理块大小的整数倍。
结合第五方面, 在第五方面的第二种实现方式中, 所述緩存数据区的大 小等于所述待读取数据的大小, 并且所述緩存数据区的大小为所述闪存的实 际物理块大小的整数倍。
结合第五方面的第一种实现方式或者第五方面的第二种实现方式,在第五 方面的第三种实现方式中, 所述一个或多个程序还包括: 从所述内存中划分 出与所述緩存数据区对应的緩存头部, 将所述緩存数据区的属性信息和所述 物理地址緩存在所述緩存头部, 其中, 所述緩存数据区的属性信息包括所述 緩存数据区的地址和大小。
结合第五方面或者第五方面的上述三种实现方式中任一种实现方式,在第 五方面的第四种实现方式中, 所述闪存的实际物理块大小是 居所述闪存的 标识信息 CID,由所述闪存的驱动层从闪存的标识信息 CID与闪存的实际物理 块大小的对应关系表中获取到的。
结合第五方面,在第五方面的第五种实现方式中,所述一个或多个程序还 包括: 接收所述闪存的驱动层经过所述闪存的块设备层发送的所述闪存的实 际物理块大小。
第六方面, 提供了一种用户设备, 该设备包括:
网络接口;
一个或多个处理器;
存储器, 所述存储器包括内存和闪存;
一个或多个程序存储在存储器中, 并被配置为由一个或多个处理器执行, 一个或多个程序包括:
接收写数据的指令, 其中, 所述写数据的指令包括: 待写入数据、 所述 待写入数据的大小和所述待写入数据在所述闪存上的物理地址;
根据所述待写入数据的大小和所述闪存的实际物理块大小, 从内存中划 分出緩存数据区, 并划分出与所述緩存数据区对应的緩存头部; 将所述待写入数据緩存在所述緩存数据区中, 将所述緩存数据区的属性 信息和所述物理地址緩存在所述緩存头部, 其中, 所述緩存数据区的属性信 息包括所述緩存数据区的地址和大小;
根据所述物理地址, 将所述待写入数据写入所述闪存中。
结合第六方面, 在第六方面的第一种实现方式中, 所述一个或多个程序 还包括:
为所述緩存数据区添加标识信息, 当所述緩存数据区中的数据与所述闪 存中的数据不一致时, 将所述标识信息标识为表示脏数据的信息;
当所述内存的占用率大于预设的第一阔值时, 将所述标识信息为表示脏 数据的信息对应的緩存数据区中的数据写入所述闪存中; 或者,
当所述緩存数据区驻留的时间大于预设的第二阔值时, 将所述标识信息 为表示脏数据的信息对应的緩存数据区中的数据写入所述闪存中。
本发明实施例提供的读写闪存中数据的方法、 装置及用户设备。 根据闪 存的实际物理块大小申请緩存数据区, 达到了动态调整緩存数据区的目的, 也即统一了处理器读写闪存中数据的单位和闪存内部读写数据的单位, 从而 可以解决闪存的读写效率低, 使用寿命短的问题。 附图说明
图 1为本发明实施例一提供的读取闪存中数据的方法流程图;
图 1为本发明的緩存的逻辑示意图;
图 3为本发明实施例二提供的向闪存中写入数据的方法流程图; 图 4为本发明添加标识信息之后的緩存的逻辑示意图;
图 5为本发明实施例三提供的读取闪存中数据的装置示意图;
图 6为本发明实施例四提供的向闪存中写入数据的装置示意图; 图 7为本发明实施例五提供的用户设备示意图;
图 8为本发明实施例六提供的用户设备示意图。 具体实施方式
为使本发明实施例的目的、 技术方案和优点更加清楚, 下面将结合本发 明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完整地描述, 显然, 所描述的实施例是本发明一部分实施例, 而不是全部的实施例。 基于 本发明中的实施例, 本领域普通技术人员在没有做出创造性劳动前提下所获 得的所有其他实施例, 都属于本发明保护的范围。
为便于对本发明实施例的理解, 下面将结合附图以具体实施例做进一步 的解释说明, 实施例并不构成对本发明实施例的限定。
图 1为本发明实施例一提供的读取闪存中数据的方法流程图。 如图 1所 示, 所述方法具体包括:
S110, 用户设备接收读取数据的指令, 其中, 所述读取数据的指令包括: 待读取数据的大小和所述待读取数据在所述闪存上的物理地址。
具体地, S110的执行主体可以是用户设备的处理器。
闪存是一种电子式可清除程序化只读存储器的形式, 允许在操作中被多 次擦或写, 是一种非易失性的存储器。 闪存是用户设备用来永久性存储数据 的存储介质。 在此说明书中, 以闪存为 NAND Flash进行说明, NAND F lash内 嵌在 e固 C中。 当用户设备从闪存中读取数据时, 需要先将闪存中的数据緩存 在内存中; 或者, 当用户设备向闪存中写入数据时, 也需要将该数据緩存在 内存中, 然后再向闪存写入数据。
需要说明的是,不同厂家的 eMMC,其对应的闪存的实际物理块大小(Block s ize)是不同的。 另外, 不同类型的 eMMC, 其对应的闪存的实际物理块大小也 是不同的。 闪存的实际物理块大小用来表示 e固 C内部读写数据的单位, 该值 越大, e固 C内部读写数据的性能越好。
S120, 用户设备从緩存中查找所述物理地址。
具体地, S120的执行主体可以是用户设备的处理器。 需要说明的是, 緩存 buffer-cache是内存的一部分, 在 l inux系统中, 所有空闲内存都可以作为緩存。 緩存用于存储闪存中的数据, 从而可以加快 处理器对闪存中数据的访问。 图 1 为本发明的緩存的逻辑示意图, 緩存主要 包括两部分: 緩存头部 (buffer—head ) 和緩存数据区 (buffer—da ta ) , 緩 存头部包含了处理器操作緩存所需要的全部信息。 具体地, 緩存头部包括: 物理地址指针(b_blocknr ) 、 指向下一个緩存的指针(b-reqnext)和緩存数 据区指针(b_da ta) , 其中, b_blocknr用于存储緩存数据区中的数据在闪存上 的物理地址, b-reqnext 用于存储下一个緩存的地址, b_da ta 用于存储緩存 数据区的地址和大小。 buffer_da ta为緩存头部对应的緩存数据区, 用于存储 数据, 緩存数据区中的数据对应闪存上的一个块。 每个 buffer_da ta 的大小 是不固定的。 需要说明的是, 上述緩存头部和緩存数据区是在读取数据的的 过程中动态建立的, 緩存头部的信息和緩存数据区中緩存的数据也是动态填 充的。 当处理器需要处理多个不同的读取数据的指令(也即需要完成多次不 同数据的读取) 时, 就需要建立多个緩存。 因此, 在处理器第一次接收读取 数据的指令时, 内存中是不存在緩存的。
需要说明的是, 当处理器已经读取了多个不同的数据时, 则会建立多个 緩存, 每个緩存都包括緩存头部和緩存数据区。 若处理器再次接收到读取数 据的指令, 则依次扫描已建立的緩存头部, 并将已建立的緩存头部中緩存的 物理地址与新接收的读取数据的指令中的物理地址进行比较, 如果比较结果 为两者相同, 则直接返回与上述緩存头部对应的緩存数据区中的数据; 如果 比较结果不同, 则表示未从已建立的緩存头部中查找到物理地址。
S130 , 当用户设备未从所述緩存中查找到所述物理地址时, 根据所述待 读取数据的大小和所述闪存的实际物理块大小, 从内存中划分出緩存数据区。
具体地, S130的执行主体可以是用户设备的处理器。
所述闪存的实际物理块大小是才艮据所述闪存的标识信息(Card IDent i ty,
CID ) , 由所述闪存的驱动层(Hos t Layer )从闪存的标识信息 CID与闪存的 实际物理块大小的对应关系表中获取到的。 其中, 闪存的标识信息 CID与闪 存的实际物理块大小的对应关系表是预先建立好的。 具体建立过程为: 通过 标准命令从厂家的数据表(Da ta sheet ) 中获取闪存的预设的标识信息, 然 后从获取到的闪存的预设的标识信息中获取厂家 ID, 在获取到厂家 ID之后, 根据厂家 ID, 从 CID中进一步获取闪存的型号, 之后判断闪存的型号是否在 查找表(Look_Up_Tab le , LUT ) 中, 若是, 则返回 LUT表中闪存的实际物理 块大小; 否则返回缺省值 512 字节。 在获取到闪存的实际物理块大小或者缺 省值之后, 就可以建立闪存的标识信息 CID与闪存的实际物理块大小的对应 关系表。
可选地, 闪存的驱动层在获取到闪存的实际物理块大小之后, 将获取到 的闪存的实际物理块大小反馈到闪存的块设备层(Block Layer ) , 最后经过 块设备层将该闪存的实际物理块大小通过 submi t _bio接口函数发送给处理 器。
其中, 从内存中划分出緩存数据区, 也即建立緩存数据区。 具体为, 将 内存中的部分空间作为緩存数据区, 上述空间通过起始地址和结束地址表示。 举例来说, 内存的大小为 4G , 其中, 地址 2000KB-4000KB之间没有存放数据, 则处理器可以从上述空间中划分出 2000KB-2008KB,共 8KB空间作为緩存数据 区。
具体地, 当未从緩存中查找到物理地址时, 说明处理器之前并没有读取 过该待读取的数据, 即该待读取的数据没有緩存在緩存数据区中。 处理器需 要建立一个緩存, 其中, 緩存的緩存数据区的大小大于所述待读取数据的大 小, 并且所述緩存数据区的大小为所述闪存的实际物理块大小的整数倍。 或 者, 緩存数据区的大小等于所述待读取数据的大小, 并且所述緩存数据区的 大小为所述闪存的实际物理块大小的整数倍。 举例来说, 闪存的实际物理块 大小为 8K , 而如果待读取数据的大小为 2K时, 则从内存中划分出的緩存数据 区的大小为 8K, 该緩存数据区的大小为闪存的实际物理块大小的 1倍; 而如 果待读取数据的大小为 22K时,则从内存中划分出的緩存数据区的大小为 24Κ , 该緩存数据区的大小为闪存的实际物理块大小的 3倍。
可选地, 在所述从内存中划分出緩存数据区之后, 在所述根据所述物理 地址, 从所述闪存中读取所述待读取数据之前, 所述方法还包括:
从所述内存中划分出与所述緩存数据区对应的緩存头部, 将所述緩存数 据区的属性信息和所述物理地址緩存在所述緩存头部, 其中, 所述緩存数据 区的属性信息包括所述緩存数据区的地址和大小。 举例来说, 假如緩存数据 区的首地址为 200Κ , 大小为 24Κ , 则将上述首地址 200Κ和大小 24Κ保存在与 緩存数据区对应的緩存头部中。
S140 , 用户设备根据所述物理地址, 从所述闪存中读取所述待读取数据, 将所述待读取数据緩存在所述緩存数据区中。
具体地, S140的执行主体可以是用户设备的处理器。
具体地,处理器通过 submi t _b io接口函数向闪存的驱动层发送块设备读 请求, 该读请求中包括所述物理地址。 闪存的块设备层通过 mmc- reques t接 口函数接收上述块设备读请求, 闪存的块设备层接收到上述块设备读请求之 后, 向闪存的驱动层发送读命令, 该读命令中包括物理地址, 闪存的驱动层 根据接收到的读命令中的物理地址, 从所述闪存中获取所述待读取数据。
闪存的驱动层获取到上述待读取数据之后, 将该待读取数据发送给闪存 的块设备层; 闪存的块设备层接收到该待读取数据之后, 将该待读取数据緩 存在物理緩存中, 并转发给处理器; 处理器接收到该待读取数据之后緩存在 已划分出的緩存数据区中, 并将该待读取的数据返回给上层应用。
综上, 本发明实施例提供的读取闪存中数据的方法, 根据闪存的实际物 理块大小申请緩存数据区, 达到了动态调整緩存数据区的目的, 也即统一了 处理器读取闪存中数据的单位和闪存内部读取数据的单位, 从而可以解决闪 存的读取效率低, 使用寿命短的问题。
图 3为本发明实施例二提供的向闪存中写入数据的方法流程图, 如图 3 所示, 所述方法具体包括:
S 310 , 用户设备接收写数据的指令, 其中, 所述写数据的指令包括: 待 写入数据、 所述待写入数据的大小和所述待写入数据在所述闪存上的物理地 址。
具体地, S 310的执行主体可以是用户设备的处理器。
闪存是一种电子式可清除程序化只读存储器的形式, 允许在操作中被多 次擦或写, 是一种非易失性的存储器。 闪存是用户设备用来永久性存储数据 的存储介质。 在此说明书中, 以闪存为 NAND F la sh进行说明, NAND F la sh内 嵌在 e固 C中。 当用户设备从闪存中读取数据时, 需要先将闪存中的数据緩存 在内存中; 或者, 当用户设备向闪存中写入数据时, 也需要将该数据緩存在 内存中, 然后再向闪存写入数据。
S 320 , 用户设备根据所述待写入数据的大小和所述闪存的实际物理块大 小, 从内存中划分出緩存数据区, 并划分出与所述緩存数据区对应的緩存头 部。
具体地, S 320的执行主体可以是用户设备的处理器。
需要说明的是, 緩存头部和緩存数据区是在向闪存中写入数据的的过程 中动态建立的, 緩存头部的信息和緩存数据区中緩存的数据也是动态填充的。 当处理器需要处理多个不同的写入数据的指令(也即需要完成多次不同数据 的写入) 时, 就需要建立多个緩存。 因此, 在处理器第一次接收写数据的指 令时, 内存中是不存在緩存的。 当处理器已经向闪存中写入了多个不同的数 据时, 则会建立多个緩存, 每个緩存都包括緩存头部和緩存数据区。
需要说明的是, 所述緩存数据区的大小大于所述待读取数据的大小, 并 且所述緩存数据区的大小为所述闪存的实际物理块大小的整数倍。 或者, 所 述緩存数据区的大小等于所述待读取数据的大小, 并且所述緩存数据区的大 小为所述闪存的实际物理块大小的整数倍。
S 330 , 用户设备将所述待写入数据緩存在所述緩存数据区中, 将所述緩 存数据区的属性信息和所述物理地址緩存在所述緩存头部, 其中, 所述緩存 数据区的属性信息包括所述緩存数据区的地址和大小。
具体地, S 330的执行主体可以是用户设备的处理器。
举例来说, 假如緩存数据区的首地址为 200K , 大小为 24K , 则将上述首 地址 200K和大小 24K保存在与緩存数据区对应的緩存头部中。
S 340 , 用户设备根据所述物理地址, 将所述待写入数据写入所述闪存中。 具体地, S 340的执行主体可以是用户设备的处理器。
其中, 根据所述物理地址, 将所述待写入数据写入所述闪存中具体为: 处理器通过 submi t _b io接口函数向闪存的驱动层发送块设备写请求,该 写请求中包括物理地址。 闪存的块设备层通过 mmc - reques t接口函数接收上 述块设备写请求, 闪存的块设备层接收到上述块设备写请求之后, 将该块设 备写请求转发给闪存的驱动层, 最后再由与闪存相关的驱动层, 根据所述物 理地址, 将所述待写入数据写入闪存中, 并向闪存的块设备层返回写成功的 信息。
闪存的块设备层接收到上述写成功的信息之后, 将该写成功的信息转发 给处理器; 最后再由处理器将该写成功的信息返回给上层应用, 并等待接收 下一个写入数据的指令。
综上, 本发明实施例提供的向闪存中写入数据的方法, 根据闪存的实际 物理块大小申请緩存数据区, 达到了动态调整緩存数据区的目的, 也即统一 了处理器向闪存中写入数据的单位和闪存内部写数据的单位, 从而可以解决 闪存的写效率低, 使用寿命短的问题。
可选地, 所述方法还可以包括以下步骤:
S 350 , 为所述緩存数据区添加标识信息, 当所述緩存数据区中的数据与 所述闪存中的数据不一致时, 将所述标识信息标识为表示脏数据的信息。
由于緩存的緩存作用, 写数据的操作实际上会被延迟, 当緩存数据区中 的数据比闪存中的数据更新时, 那么该数据就称为脏数据。 在本发明的一种 具体实现方式中, 为所述緩存数据区添加标识信息, 参见图 4 所示的添加标 识信息之后的緩存的逻辑示意图。 图 4 中, 包括三个緩存, 每个緩存包括緩 存头部 ( buffer—head ) 和緩存数据区 ( buffer—data ) , 緩存头部包括 b-blocknr . b.reqnext . 标识信息 (dirty )和 b_data, 其中, b_blocknr用 于存储对应的緩存数据区中的数据在闪存上的物理地址, b-reqnext用于存储 下一个緩存的地址, dirty为新添加的标识信息, 当标识信息为 0时, 表示对 应的緩存数据区中的数据为正常数据, 当标识信息为 1 时, 表示对应的緩存 数据区中的数据为脏数据; b_data用于存储对应的緩存数据区的地址和大小。 buffer-data为对应的緩存数据区, 用于存储数据, 每个 buf fer_data的大小 是不固定的, 但是 buffer_data均以闪存的实际物理块大小为单位。
其中, 为所述緩存数据区添加标识信息具体为: 以闪存的实际物理块大 小为单位, 为所述緩存数据区添加标识信息。 如图 4 中, 假设闪存的实际物 理块大小为 8K, 因为 8K为闪存的实际物理块大小的 1倍, 所以添加一个标识 信息; 16K为闪存的实际物理块大小的 2倍, 则添加两个标识信息; 24K为闪 存的实际物理块大小的 3倍, 则添加 3个标识信息。
S360, 当所述内存的占用率大于预设的第一阔值时, 将所述标识信息为 表示脏数据的信息对应的緩存数据区中的数据写入所述闪存中; 或者,
当所述緩存数据区驻留的时间大于预设的第二阔值时, 将所述标识信息 为表示脏数据的信息对应的緩存数据区中的数据写入所述闪存中。
图 4 中, 当緩存数据区被标识为表示脏数据的信息时, 也即当緩存数据 区的 dirty值为 0时, 緩存数据区中的数据被写回闪存存在两种情况:
1 )当所述内存的占用率大于预设的第一阔值时, 将所述标识信息为表示 脏数据的信息对应的緩存数据区中的数据写入所述闪存中。
2)当所述緩存数据区在内存中驻留的时间大于预设的第二阔值时, 将所 述标识信息为表示脏数据的信息对应的緩存数据区中的数据写入所述闪存 中。 通过上述两种方式, 可以确保緩存数据区中的数据不会无限期的驻留在 内存中。
需要说明的是, 刷新守护进程(F lush daemon )可以统一检测緩存头部 中标识为表示脏数据的信息的緩存数据区, 从而将上述緩存数据区中的数据 写入闪存中。
图 5为本发明实施例三提供的读取闪存中数据的装置示意图。 所述装置 可以用于执行图 1所述的方法。 图 5中, 该装置包括: 接收单元 501、 查找 单元 502、 划分单元 503和緩存单元 504。
接收单元 501 , 用于接收读取数据的指令, 其中, 所述读取数据的指令包 括: 待读取数据的大小和所述待读取数据在所述闪存上的物理地址。
查找单元 502 , 用于从緩存中查找接收单元 501接收的所述物理地址。 划分单元 503 ,用于当查找单元 502未从所述緩存中查找到所述物理地址 时, 根据所述待读取数据的大小和所述闪存的实际物理块大小, 从内存中划 分出緩存数据区。
緩存单元 504 , 用于根据所述物理地址, 从所述闪存中读取所述待读取数 据, 将所述待读取数据緩存在划分单元 503划分的所述緩存数据区中。
可选地, 划分单元 503还用于:
从所述内存中划分出与所述緩存数据区对应的緩存头部, 将所述緩存数 据区的属性信息和所述物理地址緩存在所述緩存头部, 其中, 所述緩存数据 区的属性信息包括所述緩存数据区的地址和大小;
所述緩存数据区的大小大于所述待读取数据的大小, 并且所述緩存数据 区的大小为所述闪存的实际物理块大小的整数倍; 或者,
所述緩存数据区的大小等于所述待读取数据的大小, 并且所述緩存数据 区的大小为所述闪存的实际物理块大小的整数倍;
所述闪存的实际物理块大小是 居所述闪存的标识信息 C ID,由所述闪存 的驱动层从闪存的标识信息 CID与闪存的实际物理块大小的对应关系表中获 取到的。
可选地, 接收单元 501 还用于: 接收所述闪存的驱动层经过所述闪存的 块设备层发送的所述闪存的实际物理块大小。
图 6为本发明实施例四提供的向闪存中写入数据的装置示意图。 所述装 置可以用于执行图 3所述的方法。 图 6中, 该装置包括: 接收单元 601、 划 分单元 602、 緩存单元 603和写入单元 604。
接收单元 601 , 用于接收写数据的指令, 其中, 所述写数据的指令包括: 待写入数据、 所述待写入数据的大小和所述待写入数据在所述闪存上的物理 地址。
划分单元 602 ,用于根据接收单元 601接收的所述待写入数据的大小和所 述闪存的实际物理块大小, 从内存中划分出緩存数据区, 并划分出与所述緩 存数据区对应的緩存头部。
緩存单元 603 ,用于将所述待写入数据緩存在划分单元 602划分的所述緩 存数据区中, 将所述緩存数据区的属性信息和所述物理地址緩存在所述划分 单元划分的所述緩存头部, 其中, 所述緩存数据区的属性信息包括所述緩存 数据区的逻辑地址和大小。
写入单元 604 , 用于根据所述物理地址, 将所述待写入数据写入所述闪存 中。
可选地, 所述装置还包括: 添加单元 605 , 用于为所述緩存数据区添加标 识信息, 当所述緩存数据区中的数据与所述闪存中的数据不一致时, 将所述 标识信息标识为表示脏数据的信息。
写入单元 604 ,还用于当所述内存的占用率大于预设的第一阔值时, 将所 述添加单元添加的所述标识信息为表示脏数据的信息对应的緩存数据区中的 数据写入所述闪存中; 或者,
当所述緩存数据区驻留的时间大于预设的第二阈值时, 将所述添加单元 添加的所述标识信息为表示脏数据的信息对应的緩存数据区中的数据写入所 述闪存中。
本发明实施例提供的读取闪存中数据的装置和向闪存中写入数据的装 置, 根据闪存的实际物理块大小申请緩存数据区, 达到了动态调整緩存数据 区的目的, 也即统一了处理器读写闪存中数据的单位和闪存内部读写数据的 单位, 从而可以解决闪存的读写效率低, 使用寿命短的问题。
图 7为本发明实施例五提供的用户设备示意图。 如图 7所示, 所述设备 包括: 网络接口 701 , —个或多个处理器 702 , 存储器 703 , 系统总线 704用 于连接网络接口 701、 处理器 702和存储器 703。
举例来说, 处理器 702可以是 CPU。
网络接口 701用于与其它设备通信。
存储器 703 包括: 内存和闪存, 一个或多个程序存储在存储器 703中, 并被配置为由一个或多个处理器 702执行, 一个或多个程序包括:
接收读取数据的指令, 其中, 所述读取数据的指令包括: 待读取数据的 大小和所述待读取数据在所述闪存上的物理地址;
从緩存中查找所述物理地址;
当未从所述緩存中查找到所述物理地址时, 根据所述待读取数据的大小 和所述闪存的实际物理块大小, 从所述内存中划分出緩存数据区;
根据所述物理地址, 从所述闪存中读取所述待读取数据, 将所述待读取 数据緩存在所述緩存数据区中。
可选地, 所述緩存数据区的大小大于所述待读取数据的大小, 并且所述 緩存数据区的大小为所述闪存的实际物理块大小的整数倍。
可选地, 所述緩存数据区的大小等于所述待读取数据的大小, 并且所述 緩存数据区的大小为所述闪存的实际物理块大小的整数倍。
进一步的, 所述一个或多个程序还包括: 从所述内存中划分出与所述緩 存数据区对应的緩存头部, 将所述緩存数据区的属性信息和所述物理地址緩 存在所述緩存头部, 其中, 所述緩存数据区的属性信息包括所述緩存数据区 的地址和大小。
可选地, 所述闪存的实际物理块大小是才艮据所述闪存的标识信息 CID, 由 所述闪存的驱动层从闪存的标识信息 CID与闪存的实际物理块大小的对应关 系表中获取到的。
进一步的, 所述一个或多个程序还包括: 接收所述闪存的驱动层经过所 图 8为本发明实施例六提供的用户设备示意图。 如图 8所示, 所述设备 包括: 网络接口 801 , —个或多个处理器 802 , 存储器 803 , 系统总线 804用 于连接网络接口 801、 处理器 802和存储器 803。
举例来说, 处理器 802可以是 CPU。
网络接口 801用于与其它设备通信。
存储器 803 包括: 内存和闪存, 一个或多个程序存储在存储器 803中, 并被配置为由一个或多个处理器 802执行, 一个或多个程序包括:
接收写数据的指令, 其中, 所述写数据的指令包括: 待写入数据、 所述 待写入数据的大小和所述待写入数据在所述闪存上的物理地址;
根据所述待写入数据的大小和所述闪存的实际物理块大小, 从内存中划 分出緩存数据区, 并划分出与所述緩存数据区对应的緩存头部;
将所述待写入数据緩存在所述緩存数据区中, 将所述緩存数据区的属性 信息和所述物理地址緩存在所述緩存头部, 其中, 所述緩存数据区的属性信 息包括所述緩存数据区的地址和大小;
根据所述物理地址, 将所述待写入数据写入所述闪存中。
进一步的, 所述一个或多个程序还包括:
为所述緩存数据区添加标识信息, 当所述緩存数据区中的数据与所述闪 存中的数据不一致时, 将所述标识信息标识为表示脏数据的信息;
当所述内存的占用率大于预设的第一阔值时, 将所述标识信息为表示脏 数据的信息对应的緩存数据区中的数据写入所述闪存中; 或者, 当所述緩存数据区驻留的时间大于预设的第二阔值时, 将所述标识信息 为表示脏数据的信息对应的緩存数据区中的数据写入所述闪存中。
本发明实施例提供的用户设备, 根据闪存的实际物理块大小申请緩存数 据区, 达到了动态调整緩存数据区的目的, 也即统一了处理器读写闪存中数 据的单位和闪存内部读写数据的单位, 从而可以解决闪存的读写效率低, 使 用寿命短的问题。
专业人员应该还可以进一步意识到, 结合本文中所公开的实施例描述的 各示例的单元及算法步骤, 能够以电子硬件、 计算机软件或者二者的结合来 实现, 为了清楚地说明硬件和软件的可互换性, 在上述说明中已经按照功能 一般性地描述了各示例的组成及步骤。 这些功能究竟以硬件还是软件方式来 执行, 取决于技术方案的特定应用和设计约束条件。 专业技术人员可以对每 个特定的应用来使用不同方法来实现所描述的功能, 但是这种实现不应认为 超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器 执行的软件模块, 或者二者的结合来实施。 软件模块可以置于随机存储器 ( RAM ) 、 内存、 只读存储器(ROM ) 、 电可编程 R0M、 电可擦除可编程 R0M、 寄存器、 硬盘、 可移动磁盘、 CD-R0M、 或技术领域内所公知的任意其它形式 的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了 进一步详细说明, 所应理解的是, 以上所述仅为本发明的具体实施方式而已, 并不用于限定本发明的保护范围, 凡在本发明的精神和原则之内, 所做的任 何修改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。

Claims

权 利 要 求 书
1、 一种读取闪存中数据的方法, 其特征在于, 所述方法包括: 接收读取数据的指令, 其中, 所述读取数据的指令包括: 待读取数据的 大小和所述待读取数据在所述闪存上的物理地址;
从緩存中查找所述物理地址;
当未从所述緩存中查找到所述物理地址时, 根据所述待读取数据的大小 和所述闪存的实际物理块大小, 从内存中划分出緩存数据区;
根据所述物理地址, 从所述闪存中读取所述待读取数据, 将所述待读取 数据緩存在所述緩存数据区中。
2、 根据权利要求 1所述的方法, 其特征在于, 所述緩存数据区的大小大 于所述待读取数据的大小, 并且所述緩存数据区的大小为所述闪存的实际物 理块大小的整数倍。
3、 根据权利要求 1所述的方法, 其特征在于, 所述緩存数据区的大小等 于所述待读取数据的大小, 并且所述緩存数据区的大小为所述闪存的实际物 理块大小的整数倍。
4、 根据权利要求 2或 3所述的方法, 其特征在于, 在所述从内存中划分 出緩存数据区之后, 在所述根据所述物理地址, 从所述闪存中读取所述待读 取数据之前, 所述方法还包括:
从所述内存中划分出与所述緩存数据区对应的緩存头部, 将所述緩存数 据区的属性信息和所述物理地址緩存在所述緩存头部, 其中, 所述緩存数据 区的属性信息包括所述緩存数据区的地址和大小。
5、 根据权利要求 1-4任一所述的方法, 其特征在于, 所述闪存的实际物 理块大小是才艮据所述闪存的标识信息 CID,由所述闪存的驱动层从闪存的标识 信息 CID与闪存的实际物理块大小的对应关系表中获取到的。
6、 根据权利要求 1所述的方法, 其特征在于, 在所述接收读取数据的指 令之前, 所述方法还包括: 接收所述闪存的驱动层经过所述闪存的块设备层 发送的所述闪存的实际物理块大小。
7、 一种向闪存中写入数据的方法, 其特征在于, 所述方法包括: 接收写数据的指令, 其中, 所述写数据的指令包括: 待写入数据、 所述 待写入数据的大小和所述待写入数据在所述闪存上的物理地址;
根据所述待写入数据的大小和所述闪存的实际物理块大小, 从内存中划 分出緩存数据区, 并划分出与所述緩存数据区对应的緩存头部;
将所述待写入数据緩存在所述緩存数据区中, 将所述緩存数据区的属性 信息和所述物理地址緩存在所述緩存头部, 其中, 所述緩存数据区的属性信 息包括所述緩存数据区的地址和大小;
根据所述物理地址, 将所述待写入数据写入所述闪存中。
8、 根据权利要求 7所述的方法, 其特征在于, 所述方法还包括: 为所述緩存数据区添加标识信息, 当所述緩存数据区中的数据与所述闪 存中的数据不一致时, 将所述标识信息标识为表示脏数据的信息;
当所述内存的占用率大于预设的第一阔值时, 将所述标识信息为表示脏 数据的信息对应的緩存数据区中的数据写入所述闪存中; 或者,
当所述緩存数据区驻留的时间大于预设的第二阔值时, 将所述标识信息 为表示脏数据的信息对应的緩存数据区中的数据写入所述闪存中。
9、 一种读取闪存中数据的装置, 其特征在于, 所述装置包括: 接收单元、 查找单元、 划分单元和緩存单元;
所述接收单元, 用于接收读取数据的指令, 其中, 所述读取数据的指令 包括: 待读取数据的大小和所述待读取数据在所述闪存上的物理地址;
所述查找单元, 用于从緩存中查找所述接收单元接收的所述物理地址; 所述划分单元, 用于当所述查找单元未从所述緩存中查找到所述物理地 址时, 根据所述待读取数据的大小和所述闪存的实际物理块大小, 从内存中 划分出緩存数据区;
所述緩存单元, 用于根据所述物理地址, 从所述闪存中读取所述待读取 数据, 将所述待读取数据緩存在所述划分单元划分的所述緩存数据区中。
10、 根据权利要求 9所述的装置, 其特征在于, 所述划分单元还用于: 从所述内存中划分出与所述緩存数据区对应的緩存头部, 将所述緩存数 据区的属性信息和所述物理地址緩存在所述緩存头部, 其中, 所述緩存数据 区的属性信息包括所述緩存数据区的地址和大小;
所述緩存数据区的大小大于所述待读取数据的大小, 并且所述緩存数据 区的大小为所述闪存的实际物理块大小的整数倍; 或者,
所述緩存数据区的大小等于所述待读取数据的大小, 并且所述緩存数据 区的大小为所述闪存的实际物理块大小的整数倍;
所述闪存的实际物理块大小是 居所述闪存的标识信息 CID,由所述闪存 的驱动层从闪存的标识信息 CID与闪存的实际物理块大小的对应关系表中获 取到的。
11、 根据权利要求 9或 10所述的装置, 其特征在于, 所述接收单元还用 于: 接收所述闪存的驱动层经过所述闪存的块设备层发送的所述闪存的实际 物理块大小。
12、 一种向闪存中写入数据的装置, 其特征在于, 所述装置包括: 接收单 元、 划分单元、 緩存单元和写入单元;
所述接收单元, 用于接收写数据的指令, 其中, 所述写数据的指令包括: 待写入数据、 所述待写入数据的大小和所述待写入数据在所述闪存上的物理 地址;
所述划分单元, 用于根据所述接收单元接收的所述待写入数据的大小和 所述闪存的实际物理块大小, 从内存中划分出緩存数据区, 并划分出与所述 緩存数据区对应的緩存头部;
所述緩存单元, 用于将所述待写入数据緩存在所述划分单元划分的所述 緩存数据区中, 将所述緩存数据区的属性信息和所述物理地址緩存在所述划 分单元划分的所述緩存头部, 其中, 所述緩存数据区的属性信息包括所述緩 存数据区的逻辑地址和大小;
所述写入单元, 用于根据所述物理地址, 将所述待写入数据写入所述闪 存中。
1 3、 根据权利要求 12所述的装置, 其特征在于, 所述装置还包括: 添加 单元, 用于为所述緩存数据区添加标识信息, 当所述緩存数据区中的数据与 所述闪存中的数据不一致时, 将所述标识信息标识为表示脏数据的信息; 所述写入单元, 还用于当所述内存的占用率大于预设的第一阔值时, 将 所述添加单元添加的所述标识信息为表示脏数据的信息对应的緩存数据区中 的数据写入所述闪存中; 或者,
当所述緩存数据区驻留的时间大于预设的第二阔值时,将所述添加单元添 加的所述标识信息为表示脏数据的信息对应的緩存数据区中的数据写入所述 闪存中。
14、 一种用户设备, 其特征在于, 所述设备包括: 网络接口;
一个或多个处理器;
存储器, 所述存储器包括内存和闪存;
一个或多个程序存储在存储器中, 并被配置为由一个或多个处理器执行, 一个或多个程序包括:
接收读取数据的指令, 其中, 所述读取数据的指令包括: 待读取数据的 大小和所述待读取数据在所述闪存上的物理地址;
从緩存中查找所述物理地址;
当未从所述緩存中查找到所述物理地址时, 根据所述待读取数据的大小 和所述闪存的实际物理块大小, 从所述内存中划分出緩存数据区;
根据所述物理地址, 从所述闪存中读取所述待读取数据, 将所述待读取 数据緩存在所述緩存数据区中。
15、 根据权利要求 14所述的设备, 其特征在于, 所述緩存数据区的大小 大于所述待读取数据的大小, 并且所述緩存数据区的大小为所述闪存的实际 物理块大小的整数倍。
16、 根据权利要求 14所述的设备, 其特征在于, 所述緩存数据区的大小 等于所述待读取数据的大小, 并且所述緩存数据区的大小为所述闪存的实际 物理块大小的整数倍。
17、 根据权利要求 15或 16所述的设备, 其特征在于, 所述一个或多个 程序还包括: 从所述内存中划分出与所述緩存数据区对应的緩存头部, 将所 述緩存数据区的属性信息和所述物理地址緩存在所述緩存头部, 其中, 所述 緩存数据区的属性信息包括所述緩存数据区的地址和大小。
18、 根据权利要求 14-17任一所述的设备, 其特征在于, 所述闪存的实 际物理块大小是根据所述闪存的标识信息 CID,由所述闪存的驱动层从闪存的 标识信息 C I D与闪存的实际物理块大小的对应关系表中获取到的。
19、 根据权利要求 14所述的设备, 其特征在于, 所述一个或多个程序还 包括: 接收所述闪存的驱动层经过所述闪存的块设备层发送的所述闪存的实 际物理块大小。
20、 一种用户设备, 其特征在于, 所述设备包括:
网络接口;
一个或多个处理器;
存储器, 所述存储器包括内存和闪存;
一个或多个程序存储在存储器中, 并被配置为由一个或多个处理器执行, 一个或多个程序包括:
接收写数据的指令, 其中, 所述写数据的指令包括: 待写入数据、 所述 待写入数据的大小和所述待写入数据在所述闪存上的物理地址;
根据所述待写入数据的大小和所述闪存的实际物理块大小, 从内存中划 分出緩存数据区, 并划分出与所述緩存数据区对应的緩存头部;
将所述待写入数据緩存在所述緩存数据区中, 将所述緩存数据区的属性 信息和所述物理地址緩存在所述緩存头部, 其中, 所述緩存数据区的属性信 息包括所述緩存数据区的地址和大小;
根据所述物理地址, 将所述待写入数据写入所述闪存中。
21、 根据权利要求 20所述的设备, 其特征在于, 所述一个或多个程序还 包括:
为所述緩存数据区添加标识信息, 当所述緩存数据区中的数据与所述闪 存中的数据不一致时, 将所述标识信息标识为表示脏数据的信息; 当所述内存的占用率大于预设的第一阔值时, 将所述标识信息为表示脏 数据的信息对应的緩存数据区中的数据写入所述闪存中; 或者,
当所述緩存数据区驻留的时间大于预设的第二阔值时, 将所述标识信息 为表示脏数据的信息对应的緩存数据区中的数据写入所述闪存中。
PCT/CN2014/080686 2014-06-25 2014-06-25 读写闪存中数据的方法、装置及用户设备 WO2015196378A1 (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
PCT/CN2014/080686 WO2015196378A1 (zh) 2014-06-25 2014-06-25 读写闪存中数据的方法、装置及用户设备
JP2016575098A JP2017527877A (ja) 2014-06-25 2014-06-25 フラッシュメモリから/フラッシュメモリへデータを読み取る/書き込むための方法および装置、ならびにユーザ機器
US15/319,166 US10152274B2 (en) 2014-06-25 2014-06-25 Method and apparatus for reading/writing data from/into flash memory, and user equipment
EP14895589.1A EP3142014B1 (en) 2014-06-25 2014-06-25 Method, device and user equipment for reading/writing data in nand flash
CN201480036355.4A CN105393228B (zh) 2014-06-25 2014-06-25 读写闪存中数据的方法、装置及用户设备
KR1020167035646A KR20170010810A (ko) 2014-06-25 2014-06-25 플래시 메모리 내에 데이터를 판독/기록하기 위한 방법, 장치 및 사용자 장비

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
WO2015196378A1 true WO2015196378A1 (zh) 2015-12-30

Family

ID=54936449

Family Applications (1)

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

Country Status (6)

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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3358456A4 (en) * 2016-12-05 2018-08-08 Huawei Technologies Co., Ltd. Control method, storage device and system for data read/write command in nvme over fabric architecture
CN112131144A (zh) * 2020-09-27 2020-12-25 深圳市芯天下技术有限公司 串行接口nand存储芯片及从其中读取数据的方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10769075B2 (en) * 2018-05-10 2020-09-08 Sap Se Storage of database dictionary 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 浪潮(北京)电子信息产业有限公司 一种数据信息的读写方法、装置、设备及存储介质
TWI761983B (zh) * 2020-07-16 2022-04-21 慧榮科技股份有限公司 主機效能加速模式的資料讀取方法及裝置
US11977485B2 (en) 2021-05-13 2024-05-07 Samsung Electronics Co., Ltd. Method of cache management based on file attributes, and cache management device operating based on file attributes
CN115766627A (zh) * 2022-11-09 2023-03-07 上海航天计算机技术研究所 一种星载高速交换存储一体化缓存控制方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101533662A (zh) * 2009-04-09 2009-09-16 成都市华为赛门铁克科技有限公司 一种闪存读写方法与闪存设备
CN103064803A (zh) * 2012-12-10 2013-04-24 华为技术有限公司 一种NAND Flash存储设备的数据读写方法和装置
US20130117497A1 (en) * 2011-11-07 2013-05-09 Peking University Buffer management strategies for flash-based storage systems
CN103425602A (zh) * 2013-08-15 2013-12-04 深圳市江波龙电子有限公司 一种闪存存储设备数据读写的方法、装置及主机系统
CN103559146A (zh) * 2013-11-05 2014-02-05 山东大学 一种提高NAND flash控制器读写速度的方法
US8688900B2 (en) * 2010-05-28 2014-04-01 International Business Machines Corporation Cache memory management in a flash cache architecture

Family Cites Families (6)

* 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 情報処理装置および方法、記録媒体、プログラム、並びにコンテンツ関連データ
US7173863B2 (en) 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US7383375B2 (en) 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
EP2225643B1 (en) * 2007-12-28 2020-05-06 Toshiba Memory Corporation Semiconductor storage device
JP5756622B2 (ja) 2010-11-30 2015-07-29 株式会社日立製作所 半導体装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101533662A (zh) * 2009-04-09 2009-09-16 成都市华为赛门铁克科技有限公司 一种闪存读写方法与闪存设备
US8688900B2 (en) * 2010-05-28 2014-04-01 International Business Machines Corporation Cache memory management in a flash cache architecture
US20130117497A1 (en) * 2011-11-07 2013-05-09 Peking University Buffer management strategies for flash-based storage systems
CN103064803A (zh) * 2012-12-10 2013-04-24 华为技术有限公司 一种NAND Flash存储设备的数据读写方法和装置
CN103425602A (zh) * 2013-08-15 2013-12-04 深圳市江波龙电子有限公司 一种闪存存储设备数据读写的方法、装置及主机系统
CN103559146A (zh) * 2013-11-05 2014-02-05 山东大学 一种提高NAND flash控制器读写速度的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3142014A4 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3358456A4 (en) * 2016-12-05 2018-08-08 Huawei Technologies Co., Ltd. Control method, storage device and system for data read/write command in nvme over fabric architecture
CN110119248A (zh) * 2016-12-05 2019-08-13 华为技术有限公司 数据读写命令的控制方法、存储设备和系统
CN110119248B (zh) * 2016-12-05 2021-10-15 华为技术有限公司 数据读写命令的控制方法、存储设备和系统
CN112131144A (zh) * 2020-09-27 2020-12-25 深圳市芯天下技术有限公司 串行接口nand存储芯片及从其中读取数据的方法
CN112131144B (zh) * 2020-09-27 2023-09-26 芯天下技术股份有限公司 串行接口nand存储芯片及从其中读取数据的方法

Also Published As

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

Similar Documents

Publication Publication Date Title
WO2015196378A1 (zh) 读写闪存中数据的方法、装置及用户设备
US11644994B2 (en) Data migration method, host, and solid state disk
US10042576B2 (en) Method and apparatus for compressing addresses
US8560778B2 (en) Accessing data blocks with pre-fetch information
JP4628750B2 (ja) バッファメモリを内蔵したフラッシュメモリ装置及びフラッシュメモリシステム
EP3608790B1 (en) Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests
WO2019090493A1 (zh) 内存块回收方法和装置
TW201237624A (en) Two-level system main memory
WO2013107029A1 (zh) 一种基于块存储的数据处理方法、装置及系统
US20150143045A1 (en) Cache control apparatus and method
US10521389B2 (en) Method and apparatus for accessing non-volatile memory as byte addressable memory
WO2015180598A1 (zh) 对存储设备的访问信息处理方法和装置、系统
WO2015180513A1 (zh) 一种数据传输方法及计算机
WO2017157158A1 (zh) 写数据的方法及装置、计算机存储介质
WO2014100954A1 (zh) 数据控制方法及系统
US20240086113A1 (en) Synchronous write method and device, storage system and electronic device
TWI227830B (en) Method and apparatus for optimizing data streaming in a computer system utilizing random access memory in a system logic device
WO2016206070A1 (zh) 一种文件更新方法及存储设备
US20090262739A1 (en) Network device of processing packets efficiently and method thereof
WO2016049808A1 (zh) 多核处理器系统的缓存目录处理方法和目录控制器
CN118605797A (zh) 访问固态硬盘的方法及装置
US20170192690A1 (en) Method, electronic device and computer program product for data processing

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201480036355.4

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14895589

Country of ref document: EP

Kind code of ref document: A1

REEP Request for entry into the european phase

Ref document number: 2014895589

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2014895589

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 15319166

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 1020167035646

Country of ref document: KR

ENP Entry into the national phase

Ref document number: 2016575098

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE