WO2018024214A1 - Procédé et dispositif de réglage de flux e/s - Google Patents
Procédé et dispositif de réglage de flux e/s Download PDFInfo
- Publication number
- WO2018024214A1 WO2018024214A1 PCT/CN2017/095662 CN2017095662W WO2018024214A1 WO 2018024214 A1 WO2018024214 A1 WO 2018024214A1 CN 2017095662 W CN2017095662 W CN 2017095662W WO 2018024214 A1 WO2018024214 A1 WO 2018024214A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- command
- logical unit
- unit group
- processing
- logical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
Definitions
- the present application relates to solid state drives and, in particular, to methods and apparatus for processing multiple write request streams in a solid state drive.
- the solid state storage device 102 is coupled to the host for providing storage capabilities to the host.
- the host and the solid-state storage device 102 can be coupled in various manners, including but not limited to, for example, SATA (Serial Advanced Technology Attachment), SCSI (Small Computer System Interface). , SAS (Serial Attached SCSI), IDE (Integrated Drive Electronics), USB (Universal Serial Bus), PCIE (Peripheral Component Interconnect Express, PCIe, High Speed Peripheral Component Interconnect) NVMe (NVM Express, high speed nonvolatile storage), Ethernet, Fibre Channel, wireless communication network, etc. are connected to the host and solid state storage device 102.
- SATA Serial Advanced Technology Attachment
- SCSI Serial Attached SCSI
- IDE Integrated Drive Electronics
- USB Universal Serial Bus
- PCIE Peripheral Component Interconnect Express
- PCIe High Speed Peripheral Component Interconnect
- NVMe High Speed nonvolatile storage
- Ethernet Fibre Channel
- Fibre Channel
- the host may be an information processing device capable of communicating with the storage device in the manner described above, such as a personal computer, tablet, server, portable computer, network switch, router, cellular telephone, personal digital assistant, and the like.
- the storage device 102 includes an interface 103, a control unit 104, one or more NVM (Non-Volatile Memory) chips 105, and a DRAM (Dynamic Random Access Memory) 110.
- NVM Non-Volatile Memory
- DRAM Dynamic Random Access Memory
- the interface 103 can be adapted to exchange data with the host via, for example, SATA, IDE, USB, PCIE, NVMe, SAS, Ethernet, Fibre Channel, and the like.
- Control component 104 is used to control data transfers between interface 103, NVM chip 105, and firmware memory 110, as well as for storage management, host logical address to flash physical address mapping, erase equalization, bad block management, and the like.
- Control component 104 can be implemented in a variety of ways, including software, hardware, firmware, or a combination thereof.
- the control unit 104 may be in the form of an FPGA (Field-programmable gate array), an ASIC (Application Specific Integrated Circuit), or a combination thereof.
- Control component 104 may also include a processor or controller that executes software in the processor or controller to manipulate the hardware of control component 104 to process IO commands.
- Control component 104 is also coupled to DRAM 110 and can access data from DRAM 110.
- the DRAM can store data for FTL tables and/or cached IO commands.
- a memory target is one or more Logic Units of a shared chip enable (CE, Chip Enable) signal within a NAND flash package.
- Each logical unit has a LUN (Logic Unit Number).
- One or more dies (Die) may be included in the NAND flash package.
- the logic unit corresponds to a single die.
- the logic unit can include a plurality of planes. Multiple planes within a logical unit can be accessed in parallel, while multiple logical units within a NAND flash chip can execute command and report states independently of each other.
- Data is typically stored and read on a page by NVM storage media. And erase the data by block.
- a block contains multiple pages.
- a page on a storage medium (referred to as a physical page) has a fixed size, such as 17,664 bytes. Physical pages can also have other sizes.
- FTL Flash Translation Layer
- the logical address constitutes the storage space of the solid-state storage device perceived by the upper layer software such as the operating system.
- the physical address is the address of the physical storage unit used to access the solid state storage device. Address mapping can also be implemented in the prior art using intermediate address patterns. For example, a logical address is mapped to an intermediate address, and the intermediate address is further mapped to a physical address.
- FTL tables are important metadata in solid state storage devices. Usually, the data items of the FTL table record the address mapping relationship in units of data pages in the solid state storage device.
- the FTL table includes multiple FTL table entries (or tables).
- a correspondence between a logical page address and a physical page is recorded in each FTL table entry.
- a correspondence between consecutive multiple logical page addresses and consecutive multiple physical pages is recorded in each FTL table entry.
- a correspondence between a logical block address and a physical block address is recorded in each FTL table entry.
- the mapping relationship between the logical block address and the physical block address, and/or the logical page address and the physical page address are recorded in the FTL table.
- the write command processing bandwidth of the SSD is limited by the number of flash channels and the backup battery, it is necessary to process multiple IO commands with limited bandwidth and achieve good performance, user experience or quality of service.
- a method of processing a first IO command comprising: acquiring a first logical unit group; acquiring a first IO having a first label based on the first logical unit group a command, wherein the first set of logical units is associated with the first tag; and writing data to the first set of logical units in response to the first IO command.
- a method of processing a first processing IO command according to the first aspect of the present application further comprising: acquiring a second logical unit group; based on the second logical unit group, Obtaining a second IO command having a second tag, wherein the second set of logical units is associated with the second tag; and writing data to the second set of logical units in response to the second IO command.
- a method for processing a third processing IO command according to the first aspect of the present application, further comprising: based on the first logical unit group, if there is no waiting Processing the first IO command having the first tag, acquiring a third IO command having the second tag; and writing data to the first logical unit group in response to the third IO command.
- a method of processing a fourth IO command according to the first aspect of the present application further comprising: based on the second logical unit group, if there is no pending a second IO command of the second tag, acquiring a fourth IO command having a third tag; and writing data to the second logical unit group in response to the fourth IO command.
- a method of processing a fifth IO command according to the first aspect of the present application further comprising: before writing data to the logical unit group, The physical address is assigned to the IO command from the logical unit group; and the FTL table is updated with the logical address and physical address of the IO command.
- a method for processing a first or second processing IO command according to the first aspect of the present application further comprising: if the first logical unit group has responded to the first a first number of IO commands, based on the first set of logical units, obtaining a fifth IO command having a second tag; and writing data to the first set of logical units in response to the fifth IO command.
- a method of processing a IO command according to the seventh aspect of the first aspect of the present application further comprising: if the second logical unit group has responded to the second number of Two
- the IO command acquires a sixth IO command having a third tag based on the second logical unit group; and writes data to the second logical unit group in response to the sixth IO command.
- a ninth processing IO command according to the first aspect of the present application, further comprising: changing a correspondence relationship between the logical unit group and the label The first logical unit group is associated with the second label.
- a ninth method of processing an IO command of the first aspect of the present application there is provided a method for processing a tenth IO command according to the first aspect of the present application, further comprising: acquiring, based on the first logical unit group, the first logical unit An associated IO command having a second tag; and writing data to the first set of logical units in response to the IO command.
- a method for processing an IO command according to the eleventh aspect of the first aspect of the present application further comprising: changing a correspondence relationship between the logical unit group and the label such that the first The logical unit group is associated with the second label with a first priority, and the first logical unit group is associated with the third label with a second priority, wherein the first priority is higher than the second priority.
- a method of the twelfth processing IO command according to the first aspect of the present application further comprising: obtaining, according to the priority based on the first logical unit group An IO command having a second tag or an IO command having a third tag associated with a logical group unit; and writing data to the first logical unit group in response to the IO command.
- a thirteenth processing IO command according to the first aspect of the present application, wherein the writing is based on the first logical unit group
- the specified amount of data is changed, and the correspondence between the first logical unit group and the label is changed such that the first logical unit group is associated with the second label.
- a method of the fourteenth processing IO command according to the first aspect of the present application wherein the change is based on the lapse of the specified time interval A correspondence between a logical unit group and a tag, such that the first logical unit group is associated with the second label.
- the method of processing the IO command according to the first aspect of the present application further comprising: changing the logical unit group and the label Corresponding relationship, the second logical unit group is associated with the third label.
- the first label indicates a sequential write stream
- the second tag indicates a random write stream
- the third tag indicates a command stream from a garbage collection operation.
- a method of processing a IO command according to the seventeenth aspect of the first aspect of the present application further comprising: receiving an IO command.
- a seventeenth method of processing an IO command of the first aspect of the present application there is provided a method of processing an IO command according to the eighteenth aspect of the first aspect of the present application, further comprising: setting a label for the IO command.
- a method for processing an IO command according to the seventeenth or eighteenth aspect of the first aspect of the present application the method for processing a tenth processing IO command according to the first aspect of the present application, further comprising: adjusting according to the number of idle large blocks Processing bandwidth of IO commands for different tags.
- a twentieth method of processing an IO command according to the first aspect of the present application wherein if the number of idle large blocks is lower than a threshold, the reduction has a first The processing bandwidth of the IO command of the tag and/or the second tag increases the processing bandwidth of the IO command with the third tag.
- the nineteenth or twentieth method of processing an IO command of the first aspect of the present application there is provided a method for processing an IO command according to the twenty-first aspect of the first aspect of the present application, wherein the number of free large blocks is not lower than Threshold, increasing the processing bandwidth of the IO command with the first tag and/or the second tag, reducing the IO command with the third tag Processing bandwidth.
- a twenty-second method of processing an IO command according to the first aspect of the present application wherein a processing bandwidth of the IO command is The number of IO commands with the specified label processed per unit time.
- apparatus for a first processing IO command comprising: a module for acquiring a first logical unit group; and for acquiring based on the first logical unit group a module of a first IO command of a tag, wherein the first set of logical units is associated with the first tag; and a module for writing data to the first set of logical units in response to the first IO command.
- An apparatus for processing a first processing IO command according to the second aspect of the present application further comprising: a module for acquiring a second logical unit group; a second logical unit group, a module for acquiring a second IO command having a second label, wherein the second logical unit group is associated with the second label; and for writing data to the second logical unit group in response to the second Module for IO commands.
- An apparatus for processing a first or second IO command according to the second aspect of the present application the apparatus for processing a third processing IO command according to the second aspect of the present application, further comprising: for using the first logical unit group, if not There is a first IO command with a first tag to be processed, a module for acquiring a third IO command with a second tag, and a module for writing data to the first logical unit group in response to the third IO command.
- An apparatus for processing a second IO command according to the second aspect of the present application the apparatus for processing a fourth processing IO command according to the second aspect of the present application, further comprising: for using the second logical unit group, if there is no pending a second IO command having a second tag, a module for acquiring a fourth IO command having a third tag; and a module for writing data to the second logical unit group in response to the fourth IO command.
- apparatus for processing a fifth processing IO command further comprising: for writing data to the logical unit group Previously, a module that assigns a physical address to a IO command from a logical unit group; and a module for updating an FTL table with a logical address and a physical address of the IO command.
- An apparatus for processing a first or second IO command according to the second aspect of the present application the apparatus for processing a sixth processing IO command according to the second aspect of the present application, further comprising: if the first logical unit group has responded a first number of first IO commands, based on the first set of logical units, acquiring a module having a fifth IO command of the second tag; and means for writing data to the first logical unit group in response to the fifth IO command Module.
- the apparatus for processing a IO command according to the second aspect of the present application further comprising: if the second logical unit group has responded to the second quantity And a second IO command, based on the second logical unit group, acquiring a module of the sixth IO command having the third label; and means for writing data to the second logical unit group in response to the sixth IO command.
- an apparatus for processing an IO command according to the second aspect of the present application wherein the writing of the data to the logical unit group is a logical The active chunks of the unit group are sequentially written to the data.
- an apparatus for processing a ninth IO command according to the second aspect of the present application further comprising: for changing a logical unit group and a label Corresponding relationship, a module that associates the first logical unit group with the second label.
- An apparatus for processing a IO command according to a ninth aspect of the present application the apparatus for processing a tenth processing IO command according to the second aspect of the present application, further comprising: acquiring and the first logic based on the first logical unit group a module associated with the IO command of the second tag associated with the cell; and a module for writing data to the first set of logical cells in response to the IO command.
- the apparatus for processing an IO command according to the second aspect of the present application further comprising: changing a correspondence relationship between the logical unit group and the label, such that The first logical unit group is associated with the second label with a first priority, and the first logical unit group has a second priority A module associated with a third tag, wherein the first priority is higher than the second priority.
- An apparatus for processing a tenth command according to the tenth aspect of the present application the apparatus for the twelfth processing IO command according to the second aspect of the present application, further comprising: for acquiring based on the priority based on the first logical unit group a module having an IO command of a second tag or an IO command having a third tag associated with the first logical group unit; and a module for writing data to the first logical unit group in response to the IO command.
- an apparatus for processing a thirteenth processing IO command according to the second aspect of the present application wherein the writing is based on writing to the first logical unit group The specified amount of data is changed, and the correspondence between the first logical unit group and the label is changed such that the first logical unit group is associated with the second label.
- an apparatus for processing a fourteenth processing IO command according to the second aspect of the present application wherein the change is based on the lapse of a specified time interval A correspondence between a logical unit group and a tag, such that the first logical unit group is associated with the second label.
- an apparatus for processing a fifteenth processing IO command according to the second aspect of the present application further comprising: for changing a logical unit group and The correspondence of the labels, such that the second logical unit group is associated with the third label.
- the apparatus for processing a sixteenth processing IO command wherein the first label indicates a sequential write stream, The second tag indicates a random write stream and the third tag indicates a command stream from a garbage collection operation.
- an apparatus for processing a seventeenth IO command according to the second aspect of the present application, further comprising: a module for receiving an IO command .
- an apparatus for processing an IO command an apparatus for processing an IO command according to the eighteenth aspect of the present application, a module for setting a label for an IO command.
- An apparatus for processing an IO command according to the seventeenth or eighteenth aspect of the second aspect of the present application the apparatus for processing a tenth processing IO command according to the second aspect of the present application, further comprising: for the number of free blocks according to A module that adjusts the processing bandwidth of IO commands with different labels.
- the apparatus for processing an IO command the apparatus for processing a twentieth IO command according to the second aspect of the present application, wherein if the number of idle large blocks is lower than a threshold, the reduction has the first The processing bandwidth of the IO command of the tag and/or the second tag, the module that increases the processing bandwidth of the IO command with the third tag.
- the apparatus for processing an IO command according to the nineteenth aspect of the second aspect of the present application the apparatus for processing an IO command according to the twenty-first aspect of the second aspect of the present application, wherein if the number of idle large blocks is not lower than a threshold, the improvement has The processing bandwidth of the IO command of the first tag and/or the second tag reduces the processing bandwidth of the IO command with the third tag.
- An apparatus for processing an IO command according to the nineteenth to twenty-firstth aspects of the second aspect of the present application the apparatus for processing a twenty-second processing IO command according to the second aspect of the present application, wherein a processing bandwidth of the IO command is The number of IO commands with tags generated per unit time.
- a solid state storage device according to the first processing IO command of the third aspect of the present application, comprising: a controller and a nonvolatile memory; the nonvolatile memory comprising a plurality of memory cell groups; Selecting a first logical unit group, based on the first logical unit group, acquiring a first IO command having a first label, wherein the first logical unit group is associated with the first label, and writing data to the first logical unit group in response The first IO command.
- a solid state storage device according to the first processing IO command of the third aspect of the present application, the solid state storage device according to the second processing IO command of the third aspect of the present application, wherein: the controller further selects the second logical unit group Acquiring, based on the second set of logical units, a second IO command having a second tag, wherein the second set of logical units is associated with the second tag; and writing data to the second set of logical units in response to the second IO command .
- a solid state storage device according to the first or second processing IO command of the third aspect of the present application, the solid state storage device according to the third processing IO command of the third aspect of the present application, the controller including a host interface, front end processing The component and the back-end processing component, the host interface receives the IO command and forwards it to the front-end processing component; the front-end processing component sets the label for the IO command and forwards it to the back-end processing component; the back-end processing component selects the first logical unit group, based on the a logical unit group that acquires a first IO command having a first label, wherein the first logical unit group is associated with the first label and writes data to the first logical unit group in response to the first IO command.
- a solid state storage device according to a third processing IO command of the third aspect of the present application, the solid state storage device according to the fourth processing IO command of the third aspect of the present application, wherein the backend processing component is further based on an idle chunk
- the amount of adjustment adjusts the processing bandwidth of IO commands with different labels.
- a solid state storage device according to the third or fourth processing IO command of the third aspect of the present application, the solid state storage device according to the fifth processing IO command of the third aspect of the present application, wherein the backend processing component further adjusts The relationship between a logical unit group and a label.
- a program comprising an instruction code according to the fourth aspect of the present application, when loaded into a solid state storage device and executed on a controller of the solid state storage device, the program code The controller performs the method according to the first aspect of the application.
- a solid state storage device comprising a controller and a nonvolatile memory, the nonvolatile memory comprising a plurality of memory cell groups; the controller executing by executing a program According to the method according to the first aspect of the application.
- a first solid state storage device comprising a controller and a nonvolatile memory, the nonvolatile memory comprising a plurality of memory cell groups; the controller by executing a program: Acquiring a first logical unit group; acquiring, according to the first logical unit group, a first IO command having a first label, wherein the first logical unit group is associated with the first label; and writing data to the first logical unit group in response The first IO command.
- a second solid-state storage device according to the sixth aspect of the present application, wherein the controller further selects a second logical unit group; based on the second logical unit group, Obtaining a second IO command having a second tag, wherein the second set of logical units is associated with the second tag; and writing data to the second set of logical units in response to the second IO command.
- a third solid-state storage device according to the sixth aspect of the present application, wherein the controller: receives an IO command; sets a label for an IO command; a logical unit group, based on the first logical unit group, acquiring a first IO command having a first label, wherein the first logical unit group is associated with the first label; and writing data to the first logical unit group in response to the The first IO command.
- a fourth solid-state storage device according to the sixth aspect of the present application, wherein the controller further adjusts processing of IO commands having different tags according to the number of idle chunks bandwidth.
- a fifth solid-state storage device according to the sixth aspect of the present application, wherein the controller further adjusts an association relationship of the logical unit group with the tag.
- Figure 1 shows a block diagram of a solid state storage device
- Figure 2 shows a schematic view of a block in accordance with an embodiment of the present application
- FIG. 3 shows a schematic diagram of a logical unit group according to an embodiment of the present application
- FIG. 4 is a schematic diagram of processing an IO command by a solid state storage device according to an embodiment of the present application
- 5A is a schematic diagram of a mapping of a write command flow to a logical unit group in accordance with an embodiment of the present application
- 5B is a mapping table of a write command stream and a logical unit group according to an embodiment of the present application
- 5C is a mapping table of a write command stream and a logical unit group according to another embodiment of the present application.
- FIG. 6 is a flow chart of processing an IO command in accordance with an embodiment of the present application.
- FIG. 7 is a schematic diagram of a mapping of a write command flow to a logical unit group according to still another embodiment of the present application.
- FIG. 8 is a flow chart of processing an IO command in accordance with yet another embodiment of the present application.
- a plurality of NVM chips are included in the solid state storage device.
- Each NVM chip includes one or more logic units.
- a chunk includes a physical block from each of a plurality of logical units.
- Preferably, each logical unit provides one physical block for the large block.
- a chunk is constructed on every 16 logical units (LUNs).
- Each chunk consists of 16 physical blocks from each of the 16 logical units (LUNs).
- chunk 0 includes physical block 0 from each of 16 logical units (LUNs)
- chunk 1 includes physical block 1 from each logical unit (LUN).
- a page strip is constructed in chunks, and the physical pages of the same physical address within each logical unit (LUN) constitute a "page strip.”
- LUN logical unit
- physical page 0-0, physical page 0-1, ... and physical page 0-x form a page strip 0, where physical page 0-0, physical page 0-1, ... physical page 0-14 User data is stored, while physical pages 0-15 are used to store parity data calculated from all user data within the stripe.
- page physical page 2-0, physical page 2-1, ... and physical page 2-x constitute page strip 2.
- the physical page used to store the verification data can be located anywhere in the page strip.
- FIG. 3 a schematic diagram of a logical unit group in accordance with an embodiment of the present application is shown.
- a large block is constructed on every 16 logical units, and 16 logical units for constructing a large block constitute a logical unit group.
- logical unit 0 (LUN 0) to logical unit 15 (LUN 15) constitute logical unit group 1 (LUN group 1)
- logical unit 16 (LUN 16) to logical unit 31 (LUN 31) constitute a logical unit.
- LUN group 2 logical unit 32 (LUN 32) to logical unit 47 (LUN 47) constitute logical unit group 3 (LUN group 3), logical unit 48 (LUN 48) to logical unit 63 (LUN 63) Logical unit group 4 (LUN group 4).
- LUN group 3 logical unit group 3
- logical unit 48 LUN 48
- LUN 63 Logical unit group 4
- each logical unit group shown in Figure 3 has 16 logical units, it is apparent that other configurations may be employed to provide different numbers of logical units in a logical unit group.
- the number of LUN groups reflects the ability of solid-state storage devices to process IO commands in parallel. At most one large block at the same time in each logical unit group is being written with data. A large chunk of a logical unit group that can currently be written to is called an active chunk.
- Solid state storage devices are used to process IO commands.
- the IO command includes a variety of attributes.
- the attribute indicates whether the IO command is a read command or a write command.
- the attributes also indicate the frequency, order, randomness, subsequent IO commands, time/space affinity, etc. of the IO commands.
- the properties of the IO command are defined.
- an application can set attributes in an IO command based on application characteristics, user scenarios, and the like.
- the operating system/storage driver or protocol can set properties for IO commands, such as which virtual machine or operating system the IO command comes from, or convert the attributes noted by the application in the IO command to a protocol-defined form.
- the storage device can also set properties for IO commands. For example, in the Chinese patent application entitled "Sequence Flow Detection Method and Apparatus" (Application No. CN201610169011.1), the storage device marks the IO command with attributes indicating sequence and/or randomness based on the logical address accessed by the IO command. This is incorporated herein by reference in its entirety.
- the storage device can also classify and set attributes for IO commands based on historical information, rules, or machine learning results.
- the attributes of the IO command can be indicated by the tag carried in the IO command.
- Applications, drivers, operating systems, and storage devices can also convert attributes in IO commands to labels.
- Labels have a limited or diverse meaning.
- the tags include T1, T2, T3, T4, and T5, while T1 to T3 represent one of three sequential write streams, respectively, while T4 represents a random write stream and T5 represents a GC (garbage collection) write stream.
- Other tags can be provided to indicate other meanings of IO commands.
- the processing of IO commands can be optimized according to the tags in the IO commands.
- FIG. 4 illustrates a schematic diagram of processing an IO command by a solid state storage device in accordance with an embodiment of the present application.
- the control component 104 of the solid state storage device includes a host interface 410, a front end processing module 420, and a back end processing module 440.
- the host interface 410 is used to exchange commands and data with the host.
- the host communicates with the storage device through the NVMe/PCIe protocol, and the host interface 410 processes the PCIe protocol data packet, extracts the NVMe protocol command, and returns the processing result of the NVMe protocol command to the host.
- Host interface 410 receives a plurality of IO commands (shown as A1, B1, C2, B2, A3, B4, C1, and B1 in Figure 4) that access the solid state storage device.
- the front end processing module 420 labels the IO commands received from the host interface 410. In FIG.
- the IO command carrying the tag T1 constitutes the write command stream S1
- the IO command carrying the tag T2 constitutes the write command stream S2
- the IO command carrying the tag T3 constitutes the write command stream S3
- the IO command carrying the tag T5 constitutes the write.
- the write command stream S5 is a sequential stream in which the IO commands write data to a contiguous logical address space in general
- the write command stream S2 is another sequential stream in which the IO commands are written substantially to a contiguous logical address space.
- the write command stream S3 is a command stream from a garbage collection (GC) task
- the write command stream S4 is a command stream from another garbage collection task.
- the front-end module 420 generates a write command stream S1 and/or a write command stream S2 using a scheme disclosed in Chinese Patent Application No. CN201610169011.1 (the name of the invention is "Sequence Flow Detection Method and Apparatus"), optionally, a front-end module
- the 420 sets a label for the IO command to classify the IO command into a plurality of write command streams using prior art or in a manner that can be implemented in the future and known to those skilled in the art.
- the command stream labeled by the front-end module can have different numbers, and a label is set in the IO command to distinguish the command stream.
- the backend processing module 440 receives the write command stream and accesses one or more NVM chips.
- a plurality of NVM chips constitute a logical unit group including a logical unit group 401, a logical unit group 403, a logical unit group 405, and a logical unit group 407.
- the backend processing module assigns the write command stream to different logical unit groups.
- write commands belonging to the same write command stream are assigned to the same logical unit group to enhance spatial locality of data in the NVM chip 105.
- the write command stream S1 is assigned to the logical unit group 401
- the write command stream S2 is assigned to the logical unit group 403
- the write command stream S3 is assigned to the logical unit group 405
- the write command stream S4 is assigned to the logical unit 407.
- the correspondence between the logical address of the write command that writes the command stream and the physical address to which the write command is written is also recorded in the FTL table.
- the FTL table may be updated by the backend processing module 440, or may be updated by other components of the control component 104.
- 5A is a schematic diagram of a mapping of a write command flow to a logical unit group in accordance with an embodiment of the present application.
- the logical unit group assignment module 510 in the backend processing module (see FIG. 4, backend processing module 440) distributes the write command stream to the logical unit group. Maintain a mapping table to record the mapping relationship between the write command stream and the logical unit.
- FIG. 5B is a mapping table of a write command stream and a logical unit group according to an embodiment of the present application.
- the write command stream S1 is mapped to the logical unit group 1
- the write command stream S2 is mapped to the logical unit group 2
- the write command stream S3 is mapped to the logical unit group 3
- the write command stream S4 is mapped to the logical unit group. 4.
- the logical unit group assignment module 510 assigns a logical unit group to the write command stream according to the mapping table.
- the logical unit group assignment module 510 acquires a write command, identifies a write command stream (eg, S1) to which the write command belongs from a label (eg, T1) in the write command, and from the mapping table according to the label (T1) A corresponding logical unit group (for example, logical unit group 1) is obtained.
- the backend processing module 440 (see FIG. 4) also assigns a physical address belonging to the logical unit group 1 to the write command. To execute a write command, based on the assigned physical address The data corresponding to the write command is written to the logical unit group 1. And the FTL table is also updated, and the correspondence between the logical address of the write command and the physical address of the assigned logical unit group 1 is recorded in the FTL table.
- logical unit group assignment module 510 selects a logical unit group and assigns a write command to it.
- logical unit group allocation module 510 in turn distributes commands for each of a plurality of logical unit groups in a solid state storage device.
- the logical unit group selects the logical unit group 2, and it is determined by the mapping table (see Fig. 5B) that the logical unit group 2 is associated with the write command stream S2 identified by the tag T2.
- the logical unit group assignment module 510 acquires a write command belonging to the write command stream S2.
- the logical unit group allocation module 510 or the back end processing module 440 also assigns a physical address belonging to the logical unit group 2 to the write command. To execute the write command, the data corresponding to the write command is written to the logical unit group 2 according to the assigned physical address.
- logical unit group allocation module 510 allocates write commands to a plurality of logical unit groups in parallel.
- the write command stream S1 is a sequential write stream
- the write command stream S2 is a random write stream
- the write command stream S3 is a command stream from a garbage collection task
- the write command stream S4 is from another garbage collection.
- the command stream for the task By mapping the write command stream to a particular set of logical units, data belonging to the same write command stream (eg, write command stream S1) is stored in the same set of storage units (eg, logical unit group 1), thereby enhancing the data at Spatial locality in solid state storage devices, and in turn, write amplification of solid state storage devices. Free storage space is freed for a storage unit group by performing a garbage collection operation in a logical unit group.
- adjust the mapping relationship between the logical unit group and the write command stream For example, after writing a specified amount of data to a logical unit group, changing a mapping relationship between the logical unit group and the write command stream; and/or changing a mapping relationship between the logical unit group and the write command stream at a specified time interval; And/or changing the mapping relationship between the logical unit group and the write command stream based on the number of free storage spaces of the logical unit group; and/or changing the mapping relationship between the logical unit group and the write command stream according to the user's instruction.
- the mapping table shown in FIG. 5B is modified.
- FIG. 5C is a mapping table of a write command stream and a logical unit group according to another embodiment of the present application.
- a write command for writing the command stream S1 is assigned with a high priority for the logical unit group 1 (LUN group 1), and a write command for the write command stream S2 is assigned with a low priority; for the logical unit group 2 (LUN group 2)
- the write command of the write command stream S2 is assigned with a high priority
- the write command of the write command stream S3 is assigned with a low priority
- the write command of the write command stream S3 is assigned with a high priority for the logical unit group 3 (LUN group 3)
- the write command of the write command stream S4 is assigned with a low priority
- the write command of the write command stream S4 is assigned with a high priority for the logical unit group 4 (LUN group 4)
- the write command for the write command stream S1 is assigned with a low priority.
- logical unit group allocation module 510 in turn distributes commands for each of a plurality of logical unit groups in a solid state storage device.
- logical unit group selects logical unit group 1, and it is determined by the mapping table (see Fig. 5C) that logical unit group 1 is associated with high priority with write command stream S1 identified by tag T1.
- the logical unit group assignment module 510 acquires a write command belonging to the write command stream S1.
- the logical unit group assignment module 510 or the backend processing module 440 also allocates a physical address belonging to the logical unit group 1 for the write command, and writes a write command corresponding to the logical unit group 1 according to the assigned physical address. data.
- the logical unit group assignment module 510 determines from the mapping table shown in FIG. 5C that the logical unit group 1 is associated with the write command stream identified by the tag T2 with a low priority. S2, and acquires a write command belonging to the write command S2 and performs processing.
- the logical unit group selects the logical unit group 2, and through the mapping table (see Fig. 5C), determines that the logical unit group 2 is associated with the write command stream S2 identified by the tag T1 with a high priority.
- the logical unit group assignment module 510 acquires and processes a write command belonging to the write command stream S2.
- the logical unit group allocation module 510 also maintains a direction The number of data or write commands belonging to the command stream S2 written by the logical unit group 2, if the number of data or write commands belonging to the command stream S2 written to the logical unit group 2 exceeds the threshold, the mapping table is obtained (see FIG. 5C).
- Another write command stream (write command stream S3) associated with the logical unit group 2 is acquired, and a write command belonging to the write command stream S3 is acquired and processed.
- the backend processing module 440 selects one of a plurality of logical unit groups (eg, logical unit group 3) in the solid state storage device (610).
- a write command (620) of the write command stream S3 indicated by the tag T3 is obtained.
- the tag T3 or write command stream S3 associated with the logical unit group 3 is obtained by a mapping table (see FIG. 5B or FIG. 5C) or other means.
- a physical address is also assigned to the write command from logical unit group 3.
- a physical address is allocated from the active chunk of logical unit group 3. Specifically, the current write location of the active chunk is used as the assigned physical address, and the current write location of the active chunk is directed to the next idle location of the active chunk.
- the assigned physical address is recorded in the FTL table in association with the logical address indicated by the write command, so that the physical address at which the written data is stored can be acquired through the FTL table and the written data can be accessed.
- the backend processing module 440 (see FIG. 4) or the logical unit group assignment module 510 (see FIG. 5) alternately selects one of the plurality of logical unit groups and performs the method shown in FIG. 6 to the logical unit. The group assigns a write command.
- the backend processing module 440 (see FIG. 4) or the logical unit group allocation module 510 (see FIG. 5) and acts as a plurality of logical unit groups to allocate write commands.
- backend processing module 440 (see FIG. 4) or logical unit group allocation module 510 (see FIG. 5) may include multiple processing components (eg, processors, threads, or tasks), each processing component being a logical unit group Assign a write command.
- the backend processing module (see FIG. 4, backend processing 440) includes a logical unit group allocation module 510 and a write command stream conditioning module 710.
- the logical unit group assignment module 510 assigns a write command stream to the logical unit group.
- the write command stream adjustment module 710 adjusts the processing bandwidth of each write command stream.
- the processing bandwidth of the write command stream can be described by the number of write commands that belong to a write command stream passed in a unit time.
- write command flow adjustment module 710 provides the maximum processing bandwidth for write command stream S2, providing the next largest processing bandwidth for write command stream S1, and lower or for write command stream S3 and write command stream S4. 0 processing bandwidth.
- the write command stream adjustment module 710 adjusts the processing bandwidth of each write command stream based on the size of the free storage space (or the number of free chunks) in the solid state storage device. For example, when the free storage of the solid state storage device is sufficiently free (eg, greater than a threshold), the write command stream S1 and/or the write command stream S2 formed by the write command from the user are preferentially processed, for the write command stream S1 and/or the write command stream.
- S2 provides high processing bandwidth, while limiting write command stream S3 and/or write command stream S4 from garbage collection operations, setting low processing bandwidth for write command stream S3 and/or write command stream S4 or not allowing write command stream S3 and / Or write the command stream S4 through.
- the storage space of the storage solid-state storage device is insufficient (for example, not larger or smaller than the threshold)
- the write command flow from the garbage collection operation is preferentially processed to release the storage space, and the write command flow from the user is restricted to slow down the free storage space. Consumption.
- limit write command stream S1 and/or write command stream S2 set low processing bandwidth for write command stream S1 and/or write command stream S2, and write command stream S3 and/or write command stream S4 from garbage collection operation. Set high processing bandwidth.
- Backend processing module 440 (see Referring to Figure 4) or logical unit group assignment module 710 (see Figure 7) adjusts the processing bandwidth of the write command stream (810).
- the backend processing module 440 selects one of a plurality of logical unit groups (eg, logical unit group 4) in the solid state storage device (820).
- a write command (830) of the write command stream S4 indicated by the tag T4 is obtained.
- a physical address is also assigned to the write command from logical unit group 4.
- the assigned physical address is recorded in the FTL table in association with the logical address indicated by the write command, so that the written data can be accessed.
- the backend processing module 440 (see FIG. 4) or the logical unit group allocation module 510 (see FIG. 7) also updates the association relationship (850) of the logical unit group with the write command stream. For example, after writing a specified number of data from the write command stream S4 to the logical unit group 4, the logical unit group 4 is modified to be preferentially associated with the write command stream 1 (eg, modifying the mapping provided by FIG. 5B or FIG. 5C) Table) to distribute the write command stream 1 more to the logical unit group 4, so that the logical unit group 4 carries the data of the write command stream 1. In another example, the association of the logical unit group with the write command stream is modified based on the lapse of the specified time period.
- the logical unit group in the mapping table is rotated to replace the logical unit group with the next logical unit group adjacent to a logical unit group number.
- the logical unit group 2 is the next logical unit group adjacent to the logical unit group number numbering, and when the association relationship provided by the mapping table of FIG. 5B or FIG. 5C is modified, the logical unit group 1 is replaced with the logical unit group 2.
- logical unit group 2 is replaced with logical unit group 3
- logical unit group 4 is replaced with logical unit group 1.
- the embodiment of the present application further provides a program including a program code that, when loaded into a host CPU and executed in a CPU, causes the CPU to execute the above method executed by the host.
- Embodiments of the present application also provide a program including program code that, when loaded into a storage device and executed on a storage device, causes the processor of the storage device to perform one of the methods performed by the device above.
- the computer program instructions can also be stored in a computer readable memory that can be booted by a computer or other programmable data control device to function in a particular manner, such that it can be manufactured using instructions stored in the computer readable memory, including for implementing one Or an article of computer readable instructions of a plurality of functions specified in the flowchart box.
- the computer program instructions can also be loaded onto a computer or other programmable data control device to cause a series of operational operations to be performed on a computer or other programmable data control device to produce a computer-implemented process, which in the computer or other programmable data.
- the instructions executed on the control device provide operations for implementing the functions specified in one or more of the flowchart blocks.
- blocks of the block diagrams and flowcharts support combinations of means for performing the specified functions, combinations of operations for performing the specified functions, and combinations of program instruction means for performing the specified functions. It will also be understood that each block of the block diagrams and flowcharts, and combinations of blocks of the block diagrams and flowcharts can be implemented by a hardware-based, special-purpose computer system that performs the specified function or operation, or by a combination of special purpose hardware and computer.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
Selon la présente invention, un procédé et un dispositif de réglage de flux E/S sont prévus pour régler, par traitement d'une commande E/S, un flux E/S. Le procédé de réglage de flux E/S consiste : à acquérir un premier ensemble d'unités logiques ; à acquérir, sur la base du premier ensemble d'unités logiques, une première commande E/S ayant une première étiquette, le premier ensemble d'unités logiques étant associé à la première étiquette ; et en réponse à la première commande E/S, à écrire des données dans le premier ensemble d'unités logiques.
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201610633214.1 | 2016-08-04 | ||
| CN201610633214 | 2016-08-04 | ||
| CN201610836522.4 | 2016-09-21 | ||
| CN201610836522.4A CN107688435B (zh) | 2016-08-04 | 2016-09-21 | Io流调节方法与装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2018024214A1 true WO2018024214A1 (fr) | 2018-02-08 |
Family
ID=61072508
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/CN2017/095662 Ceased WO2018024214A1 (fr) | 2016-08-04 | 2017-08-02 | Procédé et dispositif de réglage de flux e/s |
Country Status (1)
| Country | Link |
|---|---|
| WO (1) | WO2018024214A1 (fr) |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110554833A (zh) * | 2018-05-31 | 2019-12-10 | 北京忆芯科技有限公司 | 存储设备中并行处理io命令 |
| CN110955609A (zh) * | 2018-09-26 | 2020-04-03 | 北京忆恒创源科技有限公司 | 用于多流、开放通道存储设备的演进的自动流跟踪(east) |
| CN110955613A (zh) * | 2018-09-26 | 2020-04-03 | 北京忆恒创源科技有限公司 | 存储设备的智能数据分流与流跟踪 |
| CN110968528A (zh) * | 2018-09-30 | 2020-04-07 | 北京忆恒创源科技有限公司 | 应用统一缓存架构为非易失存储介质组装数据 |
| CN112115065A (zh) * | 2019-06-20 | 2020-12-22 | 北京忆芯科技有限公司 | 存储设备的统一地址空间 |
| CN116048427A (zh) * | 2023-03-31 | 2023-05-02 | 北京忆恒创源科技股份有限公司 | 一种管理ssd闪存资源的方法及存储设备 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN102799487A (zh) * | 2012-06-29 | 2012-11-28 | 记忆科技(深圳)有限公司 | 基于阵列/lun的io调度方法及装置 |
| CN103250143A (zh) * | 2012-12-28 | 2013-08-14 | 华为技术有限公司 | 数据存储方法和存储设备 |
| CN104182701A (zh) * | 2014-08-15 | 2014-12-03 | 华为技术有限公司 | 一种阵列控制器、阵列和数据处理方法 |
| CN104423889A (zh) * | 2013-08-26 | 2015-03-18 | 国际商业机器公司 | 一种多路径管理方法和系统 |
-
2017
- 2017-08-02 WO PCT/CN2017/095662 patent/WO2018024214A1/fr not_active Ceased
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN102799487A (zh) * | 2012-06-29 | 2012-11-28 | 记忆科技(深圳)有限公司 | 基于阵列/lun的io调度方法及装置 |
| CN103250143A (zh) * | 2012-12-28 | 2013-08-14 | 华为技术有限公司 | 数据存储方法和存储设备 |
| CN104423889A (zh) * | 2013-08-26 | 2015-03-18 | 国际商业机器公司 | 一种多路径管理方法和系统 |
| CN104182701A (zh) * | 2014-08-15 | 2014-12-03 | 华为技术有限公司 | 一种阵列控制器、阵列和数据处理方法 |
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110554833A (zh) * | 2018-05-31 | 2019-12-10 | 北京忆芯科技有限公司 | 存储设备中并行处理io命令 |
| CN110554833B (zh) * | 2018-05-31 | 2023-09-19 | 北京忆芯科技有限公司 | 存储设备中并行处理io命令 |
| CN110955609A (zh) * | 2018-09-26 | 2020-04-03 | 北京忆恒创源科技有限公司 | 用于多流、开放通道存储设备的演进的自动流跟踪(east) |
| CN110955613A (zh) * | 2018-09-26 | 2020-04-03 | 北京忆恒创源科技有限公司 | 存储设备的智能数据分流与流跟踪 |
| CN110968528A (zh) * | 2018-09-30 | 2020-04-07 | 北京忆恒创源科技有限公司 | 应用统一缓存架构为非易失存储介质组装数据 |
| CN110968528B (zh) * | 2018-09-30 | 2024-05-28 | 北京忆恒创源科技股份有限公司 | 应用统一缓存架构为非易失存储介质组装数据 |
| CN112115065A (zh) * | 2019-06-20 | 2020-12-22 | 北京忆芯科技有限公司 | 存储设备的统一地址空间 |
| CN116048427A (zh) * | 2023-03-31 | 2023-05-02 | 北京忆恒创源科技股份有限公司 | 一种管理ssd闪存资源的方法及存储设备 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12001359B2 (en) | Identification and classification of write stream priority | |
| US10564872B2 (en) | System and method for dynamic allocation to a host of memory device controller memory resources | |
| CN107885456B (zh) | 减少io命令访问nvm的冲突 | |
| US11263149B2 (en) | Cache management of logical-physical translation metadata | |
| US9009397B1 (en) | Storage processor managing solid state disk array | |
| WO2018024214A1 (fr) | Procédé et dispositif de réglage de flux e/s | |
| US12360697B2 (en) | Method for selecting a data block to be collected in GC and storage device thereof | |
| CN110447009A (zh) | 用于自适应命令获取聚合的系统和方法 | |
| US10896131B2 (en) | System and method for configuring a storage device based on prediction of host source | |
| CN110554833B (zh) | 存储设备中并行处理io命令 | |
| CN103902475B (zh) | 一种基于队列管理机制的固态硬盘并行访问方法及装置 | |
| US20110016261A1 (en) | Parallel processing architecture of flash memory and method thereof | |
| CN104750433A (zh) | 一种基于scst的缓存设计方法 | |
| CN109783404B (zh) | 具有非对称通道的固态存储设备 | |
| CN114253461A (zh) | 混合通道存储设备 | |
| US11907123B2 (en) | Flash memory garbage collection | |
| CN110096452B (zh) | 非易失随机访问存储器及其提供方法 | |
| WO2018041258A1 (fr) | Procédé de traitement de commande de désattribution, et dispositif de mémoire | |
| CN213338708U (zh) | 一种控制部件及存储设备 | |
| CN110515861B (zh) | 处理刷写命令的存储设备及其方法 | |
| CN107688435B (zh) | Io流调节方法与装置 | |
| CN107885667B (zh) | 降低读命令处理延迟的方法与装置 | |
| JP6100927B2 (ja) | 情報処理装置 | |
| CN110968525B (zh) | Ftl提供的缓存、其优化方法与存储设备 | |
| CN112181274A (zh) | 提升存储设备性能稳定性的大块的组织方法及其存储设备 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 17836396 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 17836396 Country of ref document: EP Kind code of ref document: A1 |