WO2015196378A1 - 读写闪存中数据的方法、装置及用户设备 - Google Patents
读写闪存中数据的方法、装置及用户设备 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements 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
Claims
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)
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)
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)
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)
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 | 株式会社日立製作所 | 半導体装置 |
-
2014
- 2014-06-25 WO PCT/CN2014/080686 patent/WO2015196378A1/zh active Application Filing
- 2014-06-25 KR KR1020167035646A patent/KR20170010810A/ko not_active Application Discontinuation
- 2014-06-25 US US15/319,166 patent/US10152274B2/en active Active
- 2014-06-25 EP EP14895589.1A patent/EP3142014B1/en active Active
- 2014-06-25 JP JP2016575098A patent/JP2017527877A/ja active Pending
- 2014-06-25 CN CN201480036355.4A patent/CN105393228B/zh active Active
Patent Citations (6)
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)
Title |
---|
See also references of EP3142014A4 * |
Cited By (5)
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 |