CN113434082A - Media interface controller and storage controller for read command fusion - Google Patents

Media interface controller and storage controller for read command fusion Download PDF

Info

Publication number
CN113434082A
CN113434082A CN202010207004.2A CN202010207004A CN113434082A CN 113434082 A CN113434082 A CN 113434082A CN 202010207004 A CN202010207004 A CN 202010207004A CN 113434082 A CN113434082 A CN 113434082A
Authority
CN
China
Prior art keywords
command
media interface
hit
queue
read command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010207004.2A
Other languages
Chinese (zh)
Inventor
孙明浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Starblaze Technology Co ltd
Original Assignee
Beijing Starblaze Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Starblaze Technology Co ltd filed Critical Beijing Starblaze Technology Co ltd
Priority to CN202010207004.2A priority Critical patent/CN113434082A/en
Publication of CN113434082A publication Critical patent/CN113434082A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Abstract

A media interface controller and a storage controller for read command fusion are disclosed. The disclosed media interface controller includes: the system comprises a hit checking unit, a command queue updating unit, a command processing unit and a medium interface; the hit checking unit is coupled with the command queue, the command queue updating unit and the command processing unit, checks whether the media interface read command acquired from the command queue hits the media interface read command in the command queue, and provides the index of the hit media interface command in the command queue to the command queue updating unit; the command queue updating unit fuses the acquired media interface read command and the hit media interface read command; the command processing unit operates the media interface to issue a storage media access command according to the media interface read command.

Description

Media interface controller and storage controller for read command fusion
Technical Field
The present application relates to storage device technology, and more particularly, to a method of fusing a read command to be transmitted to a nonvolatile storage medium in a storage device and a controller implementing the method.
Background
FIG. 1 illustrates a block diagram of a solid-state storage device. The solid-state storage device 102 is coupled to a host for providing storage capabilities to the host. The host and the solid-state storage device 102 may be coupled by various methods, including but not limited to, connecting the host and the solid-state storage device 102 by, 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, fiber channel, wireless communication network, etc. The host may be an information processing device, such as a personal computer, tablet, server, portable computer, network switch, router, cellular telephone, personal digital assistant, etc., capable of communicating with the storage device in the manner described above. The Memory device 102 includes an interface 103, a control section 104, one or more NVM chips 105, and a DRAM (Dynamic Random Access Memory) 110.
NAND flash Memory, phase change Memory, FeRAM (Ferroelectric RAM), MRAM (magnetoresistive Memory), RRAM (Resistive Random Access Memory), XPoint Memory, and the like are common NVM.
The interface 103 may be adapted to exchange data with a host by means such as SATA, IDE, USB, PCIE, NVMe, SAS, ethernet, fibre channel, etc.
The control unit 104 is used to control data transfer between the interface 103, the NVM chip 105, and the DRAM 110, and also used for memory management, host logical address to flash physical address mapping, erase leveling, bad block management, and the like. The control component 104 can be implemented in various manners of software, hardware, firmware, or a combination thereof, for example, the control component 104 can be in the form of an FPGA (Field-programmable gate array), an ASIC (Application-Specific Integrated Circuit), or a combination thereof. The control component 104 may also include a processor or controller in which software is executed to manipulate the hardware of the control component 104 to process IO (Input/Output) commands. The control component 104 may also be coupled to the DRAM 110 and may access data of the DRAM 110. FTL tables and/or cached IO command data may be stored in the DRAM.
Control section 104 includes a flash interface controller (or referred to as a media interface controller, a flash channel controller) that is coupled to NVM chip 105 and issues commands to NVM chip 105 in a manner that conforms to an interface protocol of NVM chip 105 to operate NVM chip 105 and receive command execution results output from NVM chip 105. Known NVM chip interface protocols include "Toggle", "ONFI", etc.
An NVM chip includes one or more Logical Units (LUNs). One or more dies (Die) may be included within the NVM chip package. Typically, a logic cell corresponds to a single die. The logical unit may include a plurality of planes (planes). Multiple planes within a logic unit may be accessed in parallel, while multiple logic units within an NVM chip may execute commands and report status independently of each other. At the time of being available from
The meaning of target, logical unit, Plane (Plane) is provided in "Open NAND Flash Interface Specification (resolution 3.0)" obtained from http:// www.micron.com// media/Documents/Products/Other% 20Documents/ONFI3_0gold. as hx, which is part of the prior art.
NVM chips typically store and read data on a page basis. And data is erased in blocks. A block (also referred to as a physical block) contains a plurality of pages (also referred to as physical pages). The physical page has a fixed size, e.g., 17664 bytes. Physical pages may also have other sizes.
In the storage device, mapping information from logical addresses to physical addresses is maintained by using a Flash Translation Layer (FTL). The logical addresses constitute storage space of the storage device as perceived by upper level software, such as an operating system. The physical address is an address for accessing a physical memory location of the memory device. Address mapping may also be implemented using an intermediate address modality in the related art. E.g. mapping the logical address to an intermediate address, which in turn is further mapped to a physical address.
A table structure storing mapping information from logical addresses to physical addresses is called an FTL table. FTL tables are important metadata in storage devices. Usually, the data entry of the FTL table records the address mapping relationship in the unit of data page in the storage device.
The FTL of some memory devices is provided by a host to which the memory device is coupled, the FTL table is stored by a memory of the host, and the FTL is provided by software executed by a processor of the host. Still other storage management devices disposed between hosts and storage devices provide FTLs.
Fig. 2 shows a detailed block diagram of the control part of the storage device.
Hosts access storage devices with IO commands that follow a storage protocol. The control component generates one or more storage commands according to the IO commands from the host and provides the storage commands to the media interface controller. The media interface controller generates storage media access commands (e.g., program commands, read commands, erase commands) in accordance with the interface protocol of the NVM chip in accordance with the storage commands. The control unit also tracks that all storage commands generated from one IO command are executed and indicates the processing result of the IO command to the host.
Referring to fig. 2, the control means includes, for example, a host interface, a host command processing unit, a storage command processing unit, a media interface controller, and a storage media management unit. The host interface acquires the IO command provided by the host, generates a storage command and provides the storage command to the storage command processing unit. The storage command accesses, for example, a storage space of the same size, for example, 4 KB. A data unit recorded in the NVM chip corresponding to data accessed by one storage command is referred to as a data frame. A physical page records one or more frames of data. For example, a physical page is 17664 bytes in size, and a data frame is 4KB in size, then one physical page can store 4 data frames.
The storage medium management unit maintains a logical to physical address translation for each storage command. For example, the storage medium management unit includes an FTL table. For a read command, the storage medium management unit outputs a physical address corresponding to a logical address accessed by the storage command, for a write command, the storage medium management unit allocates an available physical address to the storage medium management unit, and records a mapping relation between the accessed logical address and the allocated physical address. The storage medium management unit also maintains functions such as garbage collection, wear leveling, etc. required to manage the NVM chips.
The storage command processing unit operates the media interface controller to send a storage media access command to the NVM chip according to the physical address provided by the storage media management unit. For clarity, commands sent by the storage command processing unit to the media interface controller are referred to as media interface commands, while commands sent by the media interface controller to the NVM chip are referred to as storage media access commands. The storage medium access commands follow the interface protocol of the NVM chip. Taking read commands as an example, the read commands supported by the NVM chip are divided into multiple types according to the size of the data to be read, such as a read command to read a complete physical page, a read command to read, for example, one, two or more data frames, a read command to read multiple planes, a read command to read multiple physical pages of wordlines, etc.
The media interface command corresponds to a storage media access command such that the media interface controller determines the type of storage media access command generated based on the type of media interface command. Typically, the storage command processing unit generates a media interface command for each storage command accessing, for example, 4KB of storage space. Upon recognizing a continuous read scenario to read large blocks of data, the storage command processing unit fuses a plurality of storage commands to generate a media interface command to access, for example, a full physical page data size.
Disclosure of Invention
In the storage medium access command, the data read by the read command for reading the entire physical page is the same as the data read by the multiple read commands for reading each data frame of the physical page, and obviously, when the data is read by the read commands, the media interface controller and the NVM chip need to pay more overhead (time, power consumption, and processing capacity). It is advantageous to use a media interface access command that fuses multiple storage commands.
The prior art control component sends various types of media interface commands to the media interface controller. While read IO commands that a host accesses a storage device are typically random and low latency in the processing of IO commands is desirable. The control unit thus does not spend too long waiting for one or more storage commands to be merged in order to merge the storage commands, but rather wants to process the storage commands as soon as possible and send the media interface commands to the media interface controller in accordance with the storage commands. The media interface command provided by the control unit to the media interface controller is thus in most cases a media interface command that accesses the data frame size. This conflicts with the need to merge multiple storage commands.
It is desirable to send corresponding media access commands to the media interface controller with low latency processing of the storage commands, it is also desirable for the media interface controller to reduce the number of storage media access read commands issued to the NVM chip, and it is also desirable to keep the technical complexity low for the introduction of new functionality.
According to a first aspect of the present application, there is provided a first command processing method according to the first aspect of the present application, including: generating a media interface command, wherein the media interface command comprises an address field and a data frame bitmap field; and generating one or more storage media access commands according to the media interface commands; wherein the address field indicates an operation unit of the storage medium accessible with a single storage medium access command; and the data frame bitmap field indicates one or more data frames which need to be accessed in the plurality of data frames accommodated by the operation unit indicated by the address field.
According to a first command processing method of a first aspect of the present application, there is provided a second command processing method of the first aspect of the present application, wherein if a data frame bitmap field indicates that all data frames accommodated by an operation unit indicated by an address field need to be accessed, a single access storage medium access command is generated to access a complete operation unit indicated by the address field; and/or if the data frame bitmap field indicates that one or more, but not all, data frames accommodated by the operation unit indicated by the address field are accessed, generating a plurality of storage medium access commands to access the one or more data frames of the operation unit indicated by the address field.
According to the first or second command processing method of the first aspect of the present application, there is provided the third command processing method of the first aspect of the present application, wherein the operation unit is a physical page, a word line, or a multi-plane physical page of the nonvolatile storage medium.
According to one of the first to third command processing methods of the first aspect of the present application, there is provided the fourth command processing method according to the first aspect of the present application, further comprising: if the generated media interface command hits the media interface command in the command queue, updating a data frame bitmap of the hit media interface command according to the generated media interface command; and discarding the generated media interface command.
According to a fourth command processing method of the first aspect of the present application, there is provided the fifth command processing method of the first aspect of the present application, further comprising: and if the generated media interface command does not hit the media interface command in the command queue, adding the generated media interface command to the tail of the command queue.
According to a fourth or fifth command processing method of the first aspect of the present application, there is provided the sixth command processing method of the first aspect of the present application, wherein whether the generated media interface command hits the media interface command in the command queue is identified according to whether an operation unit indicated by an address field of the generated media interface command is the same as an operation unit indicated by an address field of the media interface command in the command queue.
According to one of the first to sixth command processing methods of the first aspect of the present application, there is provided a seventh command processing method according to the first aspect of the present application, further comprising: acquiring a media interface command from the head of the command queue; if the obtained media interface command hits one or more media interface commands in the command queue, removing the hit media interface command from the command queue, updating the data frame bitmap of the obtained media interface command according to the hit media interface command, and processing the obtained media interface command.
According to a seventh command processing method of the first aspect of the present application, there is provided the eighth command processing method of the first aspect of the present application, further comprising: and if the acquired media interface command does not hit the media interface command in the command queue, processing the acquired media interface command.
According to a seventh or eighth command processing method of the first aspect of the present application, there is provided the ninth command processing method of the first aspect of the present application, further comprising: caching the removed media interface commands; and releasing the cached media interface command in response to a successful processing of the retrieved media interface command.
According to a ninth command processing method of the first aspect of the present application, there is provided the tenth command processing method of the first aspect of the present application, further comprising: processing the cached media interface command in response to a failure to process the retrieved media interface command.
According to one of the first to third command processing methods of the first aspect of the present application, there is provided the eleventh command processing method according to the first aspect of the present application, further comprising: if the generated media interface command is a media interface read command, the generated media interface command expansion hits a media interface read command in a command queue, and the generated media interface command does not expand a media interface write command in the command queue, updating a data frame bitmap of the hit media interface command according to the generated media interface command; and discarding the generated media interface command.
According to an eleventh command processing method of the first aspect of the present application, there is provided the twelfth command processing method of the first aspect of the present application, further comprising: if the generated media interface command is a media interface read command, the generated media interface command expansion hits a media interface read command in a command queue, the generated media interface command expansion hits a media interface write command in the command queue, and the hit media interface write command is located in front of the hit media interface read command in the command queue, a data frame bitmap of the hit media interface command is updated according to the generated media interface command; and discarding the generated media interface command.
According to an eleventh or twelfth command processing method of the first aspect of the present application, there is provided the thirteenth command processing method of the first aspect of the present application, further comprising: if the generated media interface command is a media interface read command, the generated media interface command expansion hits a media interface read command in a command queue, the generated media interface command expansion hits a media interface write command in the command queue, and the hit media interface write command is located behind the hit media interface read command in the command queue, then removing the hit media interface read command from the command queue, updating a data frame bitmap of the generated media interface command according to the removed media interface command, and adding the generated media interface read command to the tail of the command queue.
According to one of the first to third, eleventh to thirteenth command processing methods of the first aspect of the present application, there is provided the fourteenth command processing method according to the first aspect of the present application, further comprising: acquiring a media interface command from the head of the command queue; if the obtained media interface command is a media interface read command, the obtained media interface command expansion hits a media interface read command in a command queue, and the obtained media interface command does not expand a media interface write command in the command queue, updating a data frame bitmap of the obtained media interface read command according to the hit media interface read command, and removing the hit media interface read command from the command queue.
According to a fourteenth command processing method of the first aspect of the present application, there is provided the fifteenth command processing method of the first aspect of the present application, further comprising: if the obtained media interface command is a media interface read command, the obtained media interface command is expanded to hit a media interface read command in the command queue, and is also expanded to hit a media interface write command in the command queue, and the hit media interface write command is positioned behind the hit media interface read command in the command queue, the data frame bitmap of the obtained media interface read command is updated according to the hit media interface read command, and the hit media interface read command is removed from the command queue.
According to a fourteenth or fifteenth command processing method of the first aspect of the present application, there is provided the sixteenth command processing method according to the first aspect of the present application, further comprising: if the obtained media interface command is a media interface read command, the obtained media interface command is expanded to hit a media interface read command in the command queue, and is also expanded to hit a media interface write command in the command queue, and the hit media interface write command is positioned in front of the hit media interface read command in the command queue, the data frame bitmap of the hit media interface read command is updated according to the obtained media interface read command, and the obtained media interface read command is discarded.
According to one of the fourteenth to sixteenth command processing methods of the first aspect of the present application, there is provided the seventeenth command processing method of the first aspect of the present application, further comprising: if the obtained media interface command is a media interface read command, the obtained media interface command is expanded to hit a first media interface read command and a second media interface read command in a command queue, and the obtained media interface command is also expanded to hit a media interface write command in the command queue, and the hit media interface write command is positioned before the first media interface read command and behind the second media interface read command in the command queue, the data frame bitmap of the first media interface read command is updated according to the obtained media interface read command and the second media interface read command, the second media interface read command is removed from the command queue, and the obtained media interface read command is discarded.
According to one of the fourteenth to seventeenth command processing methods of the first aspect of the present application, there is provided the eighteenth command processing method of the first aspect of the present application, further comprising: caching the removed media interface read command with the discarded media interface read command; and releasing the cached one or more media interface read commands fused to the successfully processed media interface read command in response to the successfully processed media interface command.
According to an eighteenth command processing method of the first aspect of the present application, there is provided the nineteenth command processing method of the first aspect of the present application, further comprising: processing the cached one or more media interface read commands fused to the successfully processed media interface read command in response to a failure to process the media interface command.
According to one of the first to third command processing methods of the first aspect of the present application, there is provided the twentieth command processing method according to the first aspect of the present application, further comprising: if the generated media interface command is a media interface read command, and the generated media interface command hits the media interface read command in the command queue in a non-expansion mode, updating a data frame bitmap of the hit media interface command according to the generated media interface command; and discarding the generated media interface command.
According to a twentieth command processing method of the first aspect of the present application, there is provided the twenty-first command processing method of the first aspect of the present application, further comprising: if the generated media interface command is a media interface read command, the generated media interface command does not hit a media interface read command in the command queue in a non-expansion manner, the generated media interface command hits a media interface read command in the command queue in an expansion manner, and the generated media interface command does not hit a media interface write command in the command queue in an expansion manner, updating a data frame bitmap of the hit media interface command according to the generated media interface command; and discarding the generated media interface command.
According to a twentieth or twenty-first command processing method of the first aspect of the present application, there is provided a twenty-second command processing method according to the first aspect of the present application, further comprising: if the generated media interface command is a media interface read command, the generated media interface command does not hit a media interface read command in the command queue in a non-expanded manner, the generated media interface command hits a media interface read command in the command queue in an expanded manner, the generated media interface command hits a media interface write command in the command queue in an expanded manner, and the hit media interface write command is located in the command queue before the hit media interface read command, updating a data frame bitmap of the hit media interface command according to the generated media interface command; and discarding the generated media interface command.
According to one of the twentieth to twenty-second command processing methods of the first aspect of the present application, there is provided a twenty-third command processing method according to the first aspect of the present application, further comprising: if the generated media interface command is a media interface read command, the generated media interface command does not hit a media interface read command in the command queue in a non-expanded manner, the generated media interface command hits a media interface read command in the command queue in an expanded manner, the generated media interface command hits a media interface write command in the command queue in an expanded manner, and the hit media interface write command is located behind the hit media interface read command in the command queue, removing the hit media interface read command from the command queue, updating a data frame bitmap of the generated media interface command according to the removed media interface command, and adding the generated media interface read command to the tail of the command queue.
According to one of the twentieth to twenty-third command processing methods of the first aspect of the present application, there is provided a twenty-fourth command processing method according to the first aspect of the present application, further comprising: if the generated media interface command is a media interface read command, the generated media interface command does not hit a media interface read command in the command queue in a non-expanded manner, the generated media interface command hits a first media interface read command and a second media interface read command in the command queue in an expanded manner, the generated media interface command hits a media interface write command in the command queue in an expanded manner, and the hit media interface write command is located before the first media interface read command and behind the second media interface read command in the command queue, a data frame bitmap of the first media interface read command is updated according to the generated media interface read command and the second media interface read command, the second media interface read command is removed from the command queue, and the generated media interface read command is discarded.
According to one of the first to third, twentieth to twenty-fourth command processing methods of the first aspect of the present application, there is provided a twenty-fifth command processing method according to the first aspect of the present application, further comprising: acquiring a media interface command from the head of the command queue; and if the acquired media interface command is a media interface read command, and the acquired media interface command hits the media interface read command in the command queue in a non-expansion mode, updating a data frame bitmap of the acquired media interface read command according to the hit media interface read command, and removing the hit media interface read command from the command queue.
According to a twenty-fifth command processing method of the first aspect of the present application, there is provided the twenty-sixth command processing method of the first aspect of the present application, further comprising: if the obtained media interface command is a media interface read command, the obtained media interface command does not hit a media interface read command in the command queue in a non-expanded manner, the obtained media interface command hits a media interface read command in the command queue in an expanded manner, and the obtained media interface command does not hit a media interface write command in the command queue in an expanded manner, updating a data frame bitmap of the obtained media interface read command according to the hit media interface read command, and removing the hit media interface read command from the command queue.
According to a twenty-fifth or twenty-sixth command processing method of the first aspect of the present application, there is provided a twenty-seventh command processing method of the first aspect of the present application, further comprising: if the obtained media interface command is a media interface read command, the obtained media interface command does not hit a media interface read command in the command queue in a non-expanded manner, the obtained media interface command hits a media interface read command in the command queue in an expanded manner, the obtained media interface command also hits a media interface write command in the command queue in an expanded manner, and the hit media interface write command is positioned behind the hit media interface read command in the command queue, the data frame bitmap of the obtained media interface read command is updated according to the hit media interface read command, and the hit media interface read command is removed from the command queue.
According to one of the twenty-fifth to twenty-seventh command processing methods of the first aspect of the present application, there is provided the twenty-eighth command processing method of the first aspect of the present application, further comprising: if the obtained media interface command is a media interface read command, the obtained media interface command does not hit a media interface read command in the command queue in a non-expanded manner, the obtained media interface command hits a media interface read command in the command queue in an expanded manner, the obtained media interface command also hits a media interface write command in the command queue in an expanded manner, and the hit media interface write command is located in front of the hit media interface read command in the command queue, updating a data frame bitmap of the hit media interface read command according to the obtained media interface read command, and discarding the obtained media interface read command.
According to one of the twenty-fifth to twenty-eighth command processing methods of the first aspect of the present application, there is provided a twenty-ninth command processing method according to the first aspect of the present application, further comprising: if the obtained media interface command is a media interface read command, the obtained media interface command does not hit a media interface read command in the command queue in a non-expanded manner, the obtained media interface command hits a first media interface read command and a second media interface read command in the command queue in an expanded manner, the obtained media interface command also hits a media interface write command in the command queue in an expanded manner, and the hit media interface write command is located before the first media interface read command and behind the second media interface read command in the command queue, a data frame bitmap of the first media interface read command is updated according to the obtained media interface read command and the second media interface read command, the second media interface read command is removed from the command queue, and the obtained media interface read command is discarded.
According to one of the twenty-fifth to twenty-ninth command processing methods of the first aspect of the present application, there is provided the thirtieth command processing method of the first aspect of the present application, further comprising: caching the removed media interface read command with the discarded media interface read command; and releasing the cached one or more media interface read commands fused to the successfully processed media interface read command in response to the successfully processed media interface command.
According to a thirtieth command processing method of the first aspect of the present application, there is provided the thirty-first command processing method of the first aspect of the present application, further comprising: processing the cached one or more media interface read commands fused to the successfully processed media interface read command in response to a failure to process the media interface command.
According to a second aspect of the present application, there is provided a first media interface controller according to the second aspect of the present application, comprising: the system comprises a hit checking unit, a command queue updating unit, a command processing unit and a medium interface; the hit checking unit is coupled with the command queue, the command queue updating unit and the command processing unit, checks whether the media interface read command acquired from the command queue hits the media interface read command in the command queue, and provides the index of the hit media interface command in the command queue to the command queue updating unit; the command queue updating unit fuses the acquired media interface read command and the hit media interface read command; the command processing unit operates the media interface to issue a storage media access command according to the media interface read command.
According to a second aspect of the present application, there is provided the first media interface controller according to the second aspect of the present application, wherein the hit check unit provides the acquired media interface read command to the command processing unit if the acquired media interface read command misses a media interface read command in the command queue.
According to the first or second media interface controller of the second aspect of the present application, there is provided the third media interface controller of the second aspect of the present application, wherein the command queue updating unit removes the hit media interface read command from the command queue, updates the data frame bitmap of the acquired media interface read command with the hit media interface read command, and provides the updated media interface read command to the command processing unit.
According to a third media interface controller of the second aspect of the present application, there is provided the fourth media interface controller of the second aspect of the present application, wherein the command queue updating unit moves the removed media interface read command to the cache.
The fourth media interface controller according to the second aspect of the present application provides the fifth media interface controller according to the second aspect of the present application, further comprising a cache management unit; the medium interface provides the processing result of the storage medium access command to the cache management unit; in response to the processing result indicating that the first media interface read command processing failed, the cache management unit provides the cached one or more media interface read commands corresponding to the first media interface read command to the command processing unit.
According to one of the first to fifth media interface controllers of the second aspect of the present application, there is provided the sixth media interface controller of the second aspect of the present application, wherein the hit checking unit provides the index of the media interface command that is hit and needs to be fused in the command queue to the command queue updating unit, and instructs the command queue updating unit to fuse the interface command that needs to be fused with the acquired media interface command.
According to a sixth media interface controller of the second aspect of the present application, there is provided the seventh media interface controller of the second aspect of the present application, wherein the hit checking unit recognizes that the retrieved media interface read command has extended to hit one or more media interface read commands in the command queue and also extended to hit a media interface write command, and the hit media interface read command precedes the hit media interface write command, and in response, the hit checking unit provides the retrieved media interface read command and an index of the hit media interface read command in the command queue to the command queue updating unit.
According to a sixth or seventh media interface controller of the second aspect of the present application, there is provided the eighth media interface controller of the second aspect of the present application, wherein the hit checking unit recognizes that the obtained media interface read command has extended and hit the media interface read command in the command queue, and also extended and hit the media interface write command, and in response to the hit media interface read command following the hit media interface write command, the hit checking unit provides the obtained media interface read command and an index of the hit media interface read command in the command queue to the command queue updating unit; the command queue updating unit updates the data frame bitmap of the hit media interface read command with the acquired media interface read command, and buffers the acquired media interface read command without transmitting it to the command processing unit.
According to one of the sixth to eighth media interface controllers of the second aspect of the present application, there is provided the ninth media interface controller of the second aspect of the present application, wherein the hit checking unit recognizes that the obtained media interface read command has extended and hit the first media interface read command and the second media interface read command in the command queue, and also extended and hit the media interface write command, and in response, the hit media interface write command is located before the first media interface read command in the command queue and after the second media interface read command, and the hit checking unit provides the obtained media interface read command, the index of the first media interface read command in the command queue, and the index of the second media interface read command in the command queue to the command queue updating unit, respectively; the command queue updating unit updates the data frame bitmap of the first media interface read command according to the acquired media interface read command and the second media interface read command, removes the second media interface read command from the command queue, caches the acquired media interface read command and the second media interface read command, and does not send the acquired media interface read command to the command processing unit.
According to a third aspect of the present application, there is provided the control section of the first storage device according to the third aspect of the present application, including the control section and the nonvolatile memory, the control section executing one of the first to thirty-first command processing methods according to the first aspect of the present application.
According to a fourth aspect of the present application, there is provided the control section of the first storage apparatus according to the fourth aspect of the present application, comprising the control section and the nonvolatile memory, the control section further comprising one of the first to ninth media interface controllers according to the first aspect of the present application.
Drawings
In order to more clearly illustrate the embodiments of the present application or the technical solutions in the prior art, the drawings needed to be used in the description of the embodiments or the prior art will be briefly described below, it is obvious that the drawings in the following description are only some embodiments described in the present application, and other drawings can be obtained by those skilled in the art according to the drawings.
FIG. 1 illustrates a block diagram of a prior art storage device;
FIG. 2 illustrates a detailed block diagram of a control component of the storage device;
FIG. 3 illustrates a schematic diagram of delivering media interface commands to a media interface controller according to an embodiment of the present application;
FIG. 4A illustrates a schematic diagram of delivering media interface commands to a media interface controller according to yet another embodiment of the present application;
FIG. 4B illustrates a flow diagram of a storage command processing unit fusing media interface commands according to an embodiment of the present application;
FIG. 4C illustrates a flow diagram of a media interface controller fusing media interface commands according to an embodiment of the present application;
FIG. 5 illustrates a command queue where there are multiple media interface commands that access the same address;
FIG. 6 shows an architecture diagram of a 3D NAND storage medium;
7A-7C illustrate a command queue where there are multiple media interface commands accessing the same extended operating unit;
FIG. 8A illustrates a flow diagram of a storage command processing unit fusing media interface commands according to yet another embodiment of the present application;
FIG. 8B illustrates a flow diagram of a media interface controller fusing media interface commands according to yet another embodiment of the present application;
FIG. 9A illustrates a flow diagram of a storage command processing unit fusing media interface commands according to yet another embodiment of the present application;
FIG. 9B illustrates a flow diagram of a media interface controller fusing media interface commands according to yet another embodiment of the present application; and
FIG. 10 illustrates a block diagram of a media interface controller according to yet another embodiment of the present application.
Detailed Description
The technical solutions in the embodiments of the present application are clearly and completely described below with reference to the drawings in the embodiments of the present application, and it is obvious that the described embodiments are some, but not all, embodiments of the present application. All other embodiments, which can be derived by a person skilled in the art from the embodiments given herein without making any creative effort, shall fall within the protection scope of the present application.
FIG. 3 illustrates a schematic diagram of delivering media interface commands to a media interface controller according to an embodiment of the application.
The storage command processing unit delivers the media interface command to the media interface controller via the command queue 320. Each entry of the command queue is one of the media interface commands.
A media interface command according to an embodiment of the present application includes a plurality of fields indicating, for example, the type of media interface command, the data frame bitmap, and the address to be accessed. By way of example, FIG. 3 illustrates 3 media interface commands (310, 312, and 314). The type field of the media interface command indicates, for example, a read command, a write command, or an erase command. For a read command, the address field to be accessed of the media interface command indicates, for example, the physical page address of the NVM chip. One physical page can carry one or more data frames. The data frame bitmap field indicates one or more data frames to be accessed in the physical page indicated by the address field. For example, a physical page includes N data frames (N is a positive integer, e.g., N-4), and a data frame bitmap field includes N bits, each bit indicating whether one of the N data frames of the physical page is accessed. Thus, a media interface command according to embodiments of the present application may indicate different types of storage media access commands. For example, the data frame bitmap field of the media interface command indicates that all N data frames of a physical page are accessed, then the media interface controller generates a storage media access command to access the full physical page accordingly. As yet another example, if the data frame bitmap field of the media interface command indicates that a single data frame of the physical page is accessed, the media interface controller generates a storage media access command to access the single data frame. In yet another example, if the data frame bitmap field of the media interface command indicates that 3 data frames of a physical page are accessed, a storage media access command to access a single data frame and a storage media access command to access two data frames are generated, or a storage media access command to access a physical page is generated, and data frames not indicated by the data frame bitmap field of the media interface command are discarded from the read data.
Referring to fig. 3, the media interface command 310 accesses data frame 1 and data frame 3 of physical page 1, whose 1 st and 3 rd bits (from right to left) of the data frame bitmap field are "1" to indicate access to these data frames. Media interface command 312 accesses data frame 1 of physical page 2 and media interface command 314 accesses all four data frames of physical page 3.
The media interface controller obtains the media interface command from the head of the command queue 320. And generating a storage medium access command according to the medium interface command and providing the storage medium access command to the NVM chip. For example, according to the media interface command 310, two storage media access commands for accessing a single data frame are generated and sent to the NVM chip; generating a storage medium access command for accessing a single data frame according to the medium interface command 312 and sending the storage medium access command to the NVM chip; and generates a storage medium access command for accessing the complete physical page according to the medium interface command 314 and sends the storage medium access command to the NVM chip. Thus, according to the control section of the embodiment of the present application, reading of 7 data frames is completed by 4 storage medium access commands.
It is also desirable to further fuse media interface commands to reduce the number of storage media access commands issued to the NVM chip.
FIG. 4A illustrates a schematic diagram of delivering media interface commands to a media interface controller according to yet another embodiment of the present application.
The storage command processing unit 450 submits the media interface command to the media interface controller 460 through the command queue 420.
In an alternative implementation, in addition to submitting media interface commands to the end of queue of command queue 420, command processing unit 450 couples each entry of command queue 420 to update media interface commands (including media interface commands that are not end of queue entries) in command queue 420 as necessary, according to the illustrated embodiment of FIG. 4A. By way of example, storage command processing unit 450 couples the address field of each entry of command queue 420 that accommodates a media interface command. Thus, before adding a new media interface command to command queue 420, storage command processing unit 450 identifies whether the new media interface command hits in a media interface command in command queue 420. A "hit" is understood to mean that the address field of the new media interface command is the same, or at least some bits are the same, as the address field of the media interface command of command queue 420. It will be appreciated that only whether a read command in command queue 420 hits is identified. If the new media interface command misses any media interface command in command queue 420, storage command processing unit 420 adds the new media interface command to the end of queue of command queue 420. If the new media interface command hits in a media interface command in command queue 420, the hit media interface command is updated with the data frame bitmap field of the new media interface command without adding the new media interface command to command queue 420. The hit media interface command is updated with the data frame bitmap field of the new media interface command such that the data frame bitmap field of the updated media interface command indicates all data frames to be accessed by both the new media interface command and the hit media interface command. For example, the data frame bitmap field of the new media interface command and the data frame bitmap field of the hit media interface command are used for executing an OR operation, and the hit media interface command is updated by the operation result.
Thus, storage command processing unit 450 may utilize command queue 420 to perform further fusion of media interface commands to reduce the media interface commands processed by media interface controller 480 and increase the probability that media interface controller 480 will generate storage media access commands that access a full physical page. It is also not necessary for the memory command processing unit 450 to wait for more memory commands to implement the fusion.
With continued reference to FIG. 4A, in another alternative embodiment, the command processing unit 450 simply adds media interface commands to the tail of the command queue 420 without performing fusion. The media interface commands in the command queue 420 are fused by the media interface controller 460. By way of example, the media interface controller 460 fetches and processes media interface commands from the head of the command queue 420. Media interface controller 460 also couples the address field of each entry of command queue 420 that accommodates the media interface command. Thus, when a media interface command is fetched from the head of the command queue 420, the media interface processor 460 identifies whether the fetched media interface command hits in a media interface command in the command queue 420. If the retrieved media interface command misses any media interface command in command queue 420, media interface controller 460 processes the retrieved media interface command, e.g., generates a storage media access command from the media interface command. If the fetched media interface command hits in one or more media interface commands in command queue 420, the data frame bitmap field of the fetched media interface command is updated with the data frame bitmap field of the hit one or more media commands. And also removes the hit media interface hit from the command queue 420 without further processing. The data frame bitmap field of the updated media interface command indicates all data frames to be accessed by the fetched media interface command and the hit one or more media interface commands. The media interface controller 460 generates a storage media access command from the updated media interface command. For example, if the data frame bitmap of the updated media interface command indicates that all data frames of a physical page are accessed, then a storage media access command is generated that accesses the full physical page, thereby reducing the number of storage media access commands generated.
Thus, media interface controller 460 may utilize command queue 420 to perform further fusion of media interface commands to reduce the media interface commands processed by media interface controller 480 and increase the probability that media interface controller 480 will generate storage media access commands that access a full physical page. It is also not necessary for the memory command processing unit 450 to wait for more memory commands to implement the fusion.
FIG. 4B shows a flowchart of a storage command processing unit fusing media interface commands according to an embodiment of the present application. The flow shown in FIG. 4B is implemented by the storage command processing unit 450 in FIG. 4A.
Storage command processing unit 450 obtains a media interface read command to be sent to media interface controller 460 (470). The media interface command in the command queue 420 is checked for hits using, for example, the address field of the retrieved media interface command (472). If the retrieved media interface command misses the media interface command in the command queue 420 (472), the retrieved media interface command is added to the tail of the command queue 420 (476). If the retrieved media interface command hits in a media interface command in the command queue 420 (472), the data frame bitmap of the hit media interface command is updated with the retrieved media interface command (478).
FIG. 4C illustrates a flow diagram of a media interface controller fusing media interface commands according to an embodiment of the application. The process shown in FIG. 4C is implemented by the media interface controller 460 in FIG. 4A.
The media interface controller 460 retrieves the media interface read command to be processed from the command queue 420 (480). The media interface command in the command queue 420 is checked for hits using, for example, the address field of the retrieved media interface command (482). If the retrieved media interface command misses any media interface command in command queue 420 (482), the retrieved media interface command is processed (484). If the retrieved media interface command hits (482) one or more media interface commands in the command queue 420, then all media interface commands that hit are removed from the command queue 420 (486), the data frame bitmap of the retrieved media interface command is updated with all media interface commands that hit (488), and the retrieved media interface command is processed (490).
Optionally, media interface controller 460 also buffers all media interface commands that are hit from command queue 420 and releases all media interface commands that are buffered in response to processing of the media interface command in step 490 being completed. If the media interface command processing fails in step 490, all cached media interface commands are fetched and processed in addition to indicating to the storage command processing unit that the media interface command processing failed.
According to the illustrated embodiment of FIGS. 4A-4C of the present application, the order of processing of media interface commands in the command queue 420 is changed. This does not typically cause read and write collisions. A read-write collision caused by a change in the order of command processing exists, for example, in a case where a read command to access the same address exists after a write command. A write command will change the data of the accessed address, while a subsequent read command should read the changed written data. When the processing order of a read command and a write command accessing the same address is changed so that the read command may occur before the write command, it may result in the read command reading data that is not written by the write command. FIG. 5 illustrates a command queue where there are multiple media interface commands that access the same address.
Referring to FIG. 5, the command queue includes a media interface read command (510) accessing physical page P1 and a media interface write command (520) accessing physical page P1, as well as a media interface read command (530) accessing physical page P1 to be added to the command queue. The downward arrow indicates the direction of the queue, with the head of the queue below and the tail of the queue above. When the storage command processing unit adds a media interface read command to the command queue (530), the data frame bitmap field of the media interface read command 510 is updated with the media interface read command 530 because the media interface read command 530 hits the media interface read command 510, and the media interface read command 530 is not added to the command queue. Such fusion, however, will result in the media interface read command 530, which would otherwise occur after the media interface write command 520, being preemptively processed such that the media interface read command 510 captures erroneous data for the media interface read command 530 when reading a data frame. However, according to embodiments of the present application, this situation does not occur. Taking NAND flash memory as an example, NVM chips have the characteristics of programming first and then reading and cannot be programmed repeatedly. So that the storage command processing unit does not issue a media interface command to read physical page P1 before writing data to physical page P1; and after writing data to physical page P1, no media interface command to write data to physical page P1 will be issued. Thus, in FIG. 5, because the presence of media interface command 510 means that physical page P1 has been written with data, no media interface command to write data to physical page P1 occurs after media interface command 510 (before physical page P1 is erased).
In some cases, an erase command is included in the command queue, thereby violating the constraints described above. Thus, in an alternative embodiment, the storage command processing unit, upon identifying whether a media interface command to be added to the command queue hits in a media interface command in the queue, also checks whether the hit erase command is included in the command queue. If the command queue has the hit erasing command, the storage command processing unit only adds the medium interface command to be added to the tail of the command queue, and does not try to merge the medium interface command. Similarly, in embodiments where the merging is performed by the next interface controller, the media interface controller also, upon recognizing that there is a hit in the command queue for the erase command, simply fetches the media interface command processing from the end of the command queue without performing the merging of the media interface commands.
NVM chips are also rapidly evolving and 3D NAND storage media have emerged that store 1 bit (SLC), 2 bit (MLC), 3 bit (TLC) or even more bits of data per memory cell. The 3D NAND includes multiple layers in the Z-direction (direction perpendicular to the wafer plane) of the wafer on which it is carried. Each layer of the physical block includes a word line.
FIG. 6 shows an architecture diagram of a 3D NAND storage medium.
The 3D NAND flash memory chip includes a plurality of physical blocks (block 0 and block 600 are shown in fig. 6) arranged in the X-Y direction. The physical block includes a plurality of layers, shown in fig. 6 as layer L3, layer L4, layer L30, and layer L31, each of which includes a plurality of segments (segment 0 to segment 3 are shown). Each sector includes a word line. Taking TLC storage media as an example, a word line includes 3 physical pages, and each physical page of the same word line is referred to as LSB (least significant bit) page, CSB (middle significant bit) page, and MSB (most significant bit) page. Each physical page has a unique physical address. The physical page in the NVM chip is accessed by a physical address. Optionally, the physical address represents or does not represent a location of the physical page in a physical space of the storage medium.
For some NVM chips, a wordline or a wordline carrying two or more physical pages instead of a single physical page becomes the smallest unit of operation for a storage medium access command that indicates a program operation. Although the minimum operating unit of the storage medium access commands to these NVM chips indicating a read operation is still a data frame, these NVM chips also support storage medium access commands indicating a read operation with (all physical pages of) the word line as the maximum operating unit. In this case, in the fused media interface command according to the embodiment of the present application, the determination manner of "hit" is adjusted to achieve further fusion of the media interface command by using such a storage media access command indicating a read operation. If the address fields of two media interface commands indicate the same word line, one of the media interface commands may hit the other media interface command.
Similarly, some NVM chips also support Multi-Plane (Multi-Plane) operation. The multiple planes of the NVM chip are accessed simultaneously through a single storage medium access command, so that the data of the used storage medium access command is reduced, and the data transmission bandwidth of the NVM chip is increased. In this case, the determination of "hits" in the fused media interface commands according to embodiments of the present application may be optionally or further adjusted to achieve further fusion of media interface commands with such storage media access commands indicating a multi-plane read operation. If the addresses indicated by the address fields of the two media interface commands are overrideable by a single storage media access command indicating a multi-plane operation, one of the media interface commands may hit the other media interface command.
The unit of operation beyond the size of a single physical page (optionally, the largest) that can be accessed by a storage medium access command that indicates a read operation is referred to as an extended unit of operation. The extended operation unit is the largest operation unit that can be accessed by a storage medium access command, such as a wordline or a single multi-plane read operation.
7A-7C illustrate a command queue where there are multiple media interface commands accessing the same extended operating unit.
P1 indicates an extended operation unit. By way of example, P1 indicates a wordline that accommodates two physical pages of MLCs. In another example, P1 indicates two physical pages (D1, D2) belonging to two planes respectively, which are accessible by a storage medium access command for a multi-plane read operation (D1 and D2). The address P1D1 accessed by the media interface command indicates the address of the physical page D1 of the extended operating unit P1. Optionally, the address field of the media interface command indicates a data frame accommodated by the extended operation unit.
The downward arrow indicates the direction of the queue, with the head of the queue below and the tail of the queue above.
Referring to FIG. 7A, the command queue includes a media interface read command (710) accessing address P1D2, a media interface read command (712) accessing address P1D1, and a media interface write command (714) accessing address P1D1 to be added to the command queue. The physical page D2 of the extended operating unit P1 has been written with data, while the physical page D1 has not been written with data. After the media interface write command (714) accessing the address P1D1 is processed, the two physical pages (D1 and D2) of the extended operating unit P1 are fully written with data, so that the data of the physical page D1 and the physical page D2 can be read out by one storage media access (read) command accessing the extended operating unit P1.
According to an embodiment of the present application, when the storage command processing unit adds a media interface read command (710) to the command queue, the media interface read command 710 "extension hit" the media interface read command 712 is recognized because the media interface read command 710 accesses the same extension operation unit P1 but a different physical page than the media interface read command 712. For the sake of clarity, in the embodiment according to the present application, "extension hit" refers to that two media interface commands access the same extension operation unit, and "non-extension hit" refers to that two media interface commands access the same physical page. It will be appreciated that "non-extended hits" also belong to "extended hits".
The media interface write command 714 is at the head of the command queue and has no effect on the media interface read command 710 and the media interface read command 712. Upon recognizing that the media interface read command 710 extension hits the media interface read command 712, the storage command processing unit updates the media interface read command 712 with the data frame bitmap of the media interface read command 710 without adding the media interface read command 710 to the command queue.
Thus, when the media interface write command 714 is processed, the extended operating unit P1 is fully written, so that data can be read from the extended operating unit P1 by a single storage media access (read) command. The media interface controller, when processing the media access command 712, has the opportunity to read data from the extended operating unit P1 with a single storage media access (read) command, as indicated by its data frame bitmap.
Referring to FIG. 7B, the command queue includes a media interface read command (724) accessing address P1D1, a media interface write command (722) accessing address P1D2, and a media interface read command (720) accessing address P1D2 to be added to the command queue. The physical page D1 of the extended operating unit P1 has been written with data, while the physical page D2 has not been written with data. The media interface write command (722) accessing address P1D2 should be processed after the media interface read command (724) and before the media interface command (720).
According to an embodiment of the present application, when the storage command processing unit adds a media interface read command (720) to the command queue, it recognizes that media interface read command 720 "extended hits" media interface read command 724 and that non-extended hits media interface write command 722. In one embodiment, media interface read command 720 and media interface read command 724 are not fused. Since fusing these two media interface read commands directly will result in the data being read before being written to physical page P1D2, which violates the access constraints of the NVM chip. Instead, the storage command processing unit adds the media interface read command 720 to the end of the command queue. In yet another embodiment, a media interface read command (724) is removed from the command queue, the removed media interface read command (724) is merged with the media interface read command (720), and the media interface read command (720) is added to the command queue. Thereby reprocessing the media interface read command (720) after the media interface write command (722) is processed.
Referring to FIG. 7C, the command queue includes a media interface read command (730) accessing address P1D2, a media interface read command (734) accessing address P1D1, and a media interface write command (732) accessing address P1D 2. The physical page D1 of the extended operating unit P1 has been written with data, while the physical page D2 has not been written with data. The media interface write command (732) accessing address P1D2 should be processed after the media interface read command (734) and before the media interface command (730).
According to the illustrated embodiment of fig. 7C, when the media interface controller fetches the media interface read command from the command queue (734), it recognizes that the media interface read command 734 "extended hits" the media interface read command 730, and that the non-extended hits the media interface write command 732. In one implementation, media interface read command 730 is not fused with media interface read command 734. Instead, the media interface controller fetches the media interface read command 734 from the command queue and processes it. In yet another embodiment, the retrieved media interface read command (734) is deleted, the deleted media interface read command (734) is fused with the media interface read command (730) and the media interface read command (730) is updated. The media interface controller then continues to fetch other media interface commands from the command queue and process them. Thereby reprocessing the media interface read command (730) after the media interface write command (732) is processed.
FIG. 8A illustrates a flow diagram of a storage command processing unit fusing media interface commands according to yet another embodiment of the present application.
The storage command processing unit obtains a media interface read command to be sent to the media interface controller (810). A check is made with, for example, an address field of the retrieved media interface command whether the extension hits one or more media interface read commands in the command queue (820). If the media interface command to be sent does not have any media interface read commands in the command queue that are "extended hits" (other than "non-extended hits") (820), the media interface command to be sent is added to the tail of the command queue (825).
If the media interface command extension to be sent hits a media interface read command in the command queue (820), it is further identified whether the media interface command extension to be sent hits a media interface write command in the command queue (830). If the media interface hit that is expanded to hit only reads and not writes (830), the data frame bitmap field of the media interface read hit is updated with the media interface command to be sent (835) without adding the media interface command to be sent to the command queue. If the media interface hit by the extension hit is both the media interface read command and the media interface write command (830), and the position of the media interface write command by the extension hit is between the media interface read command by the extension hit and the media interface read command to be sent in the command queue, the media interface read command by the extension hit is removed from the command queue (840), the data frame bitmap of the media interface read command to be sent is updated by the removed media interface read command (842), and the media interface read command to be sent is added to the tail of the command queue (844).
The media interface command "ahead" in the command queue is located closer to the head of the queue than the media interface command "behind".
Optionally, if the media interface hit by the extension hit is both the media interface read command and the media interface write command (830), and the position of the media interface write command by the extension hit in the command queue is before the media interface read command by the extension hit, the data frame bitmap field of the media interface read command by the to-be-sent media interface command is updated.
FIG. 8B illustrates a flow diagram of a media interface controller fusing media interface commands according to yet another embodiment of the present application.
The media interface controller retrieves the media interface read command to be processed from the command queue (850). A check is made with, for example, an address field of the retrieved media interface read command whether the extension hits in one or more media interface read commands in the command queue (860). If the retrieved media interface command does not have an "extended hit" (other than a "non-extended hit") any media interface read command in the command queue (860), the retrieved media interface command is processed (865).
If the retrieved media interface command extension hits a media interface read command in the command queue (860), it is further identified whether the retrieved media interface read command extension hits a media interface write command in the command queue (870). If the media interface hit that is expanded to hit is a read command only and no write command (870), the hit media interface read command is removed from the command queue and the removed media interface read command is also cached (880). The media interface controller also updates the data frame bitmap (882) of the retrieved media interface read commands with the removed one or more media interface read commands and then processes the retrieved media interface read commands (884).
If there are both media interface read commands and media interface write commands in the extended hit media interface command (870), if there is a media interface read command of the extended command that is located after the hit media interface write command in the command queue, then delete and cache the retrieved media interface read command and the extended hit media interface read command (if any) that is located before the hit media interface write command in the command queue (890), and update the data frame bitmap of the extended hit media interface read command that is prior to the extended hit media interface write command in the command queue with the deleted media interface read command (892). Since the updated media interface read command is located in the command queue rather than the head of the queue, the media interface controller does not process the media interface read command, but returns to step 850 to continue fetching pending commands from the head of the command queue.
If the media interface command hit by the extension is both a media interface read command and a media interface write command (870), if all of the media interface read commands of the extended command are located in the command queue before the media interface write command hit, then the media interface read command hit by the extension is removed from the command queue and the removed media interface read command is cached. The media interface controller also updates the data frame bitmap of the retrieved media interface read command with the removed one or more media interface read commands and processes the retrieved media interface read command.
For a cached media interface read command, it has been fused to other media interface read commands. The media interface controller releases the cached media interface commands fused by the other media interface read commands in response to completion of processing of the other media interface read commands. If the other media interface read command fails to be processed, the cached media interface command fused by the other media interface read command is obtained and processed in addition to indicating the media interface command processing failure to the storage command processing unit.
FIG. 9A illustrates a flow diagram of a storage command processing unit fusing media interface commands according to yet another embodiment of the present application.
The storage command processing unit obtains a media interface read command to be sent to the media interface controller (910). The retrieved media interface command's address field, for example, is used to check if the media interface read command in the command queue is a "non-extended hit" (912). If the media interface command to be sent "non-expansion hit" any media interface read command in the command queue (912), the data frame bitmap of the hit media interface read command is updated with the media interface command to be sent (914), so as to fuse the media interface read command to be sent and the media interface read command of the non-expansion command.
If the media interface command to be sent does not have any media interface read command in the "non-extended hit" command queue (912), checking whether the media interface read command to be sent extends and hits the media interface read command in the command queue (920). If the media interface command to be sent does not have any media interface read commands in the command queue that are "extended hits" (other than "non-extended hits") (920), the media interface command to be sent is added to the tail of the command queue (925).
If the media interface command extension to be sent hits a media interface read command in the command queue (920), it is further identified whether the media interface command extension to be sent hits a media interface write command in the command queue (930). If the media interface hit of the extended hit is only a read command and no write command (930), the data frame bitmap field of the hit media interface read command is updated with the media interface command to be sent (935), without adding the media interface command to be sent to the command queue. If the media interface hit by the extension hit is both the media interface read command and the media interface write command (930), and the position of the media interface write command by the extension hit in the command queue is between the media interface read command by the extension hit and the media interface read command to be sent, the media interface read command by the extension hit is removed from the command queue (940), the data frame bitmap of the media interface read command to be sent is updated by the removed media interface read command (942), and the media interface read command to be sent is added to the tail of the command queue (944).
FIG. 9B illustrates a flow diagram of a media interface controller fusing media interface commands according to yet another embodiment of the present application.
The media interface controller retrieves the media interface read command to process from the command queue (950). The retrieved media interface command's address field, for example, is used to check if the media interface read command in the command queue is a "non-extended hit" (952). If the retrieved media interface command "non-expansion hits" a media interface read command in the command queue (952), the hit media interface read command is removed from the command queue (954), the data frame bitmap of the retrieved media interface command is updated with the hit media interface command (956), and the retrieved media interface command is processed (958).
If the media interface command to be sent does not have any media interface read command in the "non-extended hit" command queue (952), it is checked whether the retrieved media interface read command has an extended hit of the media interface read command in the command queue (960). If the retrieved media interface command does not have any media interface read commands in the "extended hit" (other than a "non-extended hit") command queue (960), the retrieved media interface command is processed (965).
If the retrieved media interface command extension hits a media interface read command in the command queue (960), it is further identified whether the retrieved media interface read command extension hits a media interface write command in the command queue (970). If the media interface hit that is expanded to hit is a read command only and no write command (970), then the hit media interface read command is removed from the command queue and the removed media interface read command is also cached (980). The media interface controller also updates the data frame bitmap (982) of the retrieved media interface read commands with the removed one or more media interface read commands, and processes the retrieved media interface read commands (984).
If there are both media interface read commands and media interface write commands in the extended hit media interface commands (970), if there is a media interface read command of the extended command after the hit media interface write command in the command queue, deleting and buffering the retrieved media interface read command and the extended hit media interface read command (if any) preceding the hit media interface write command in the command queue (990), and updating the data frame bitmap of the extended hit media interface read command preceding the extended hit media interface write command in the command queue with the deleted media interface read command (992). Since the updated media interface read command is located in the command queue rather than the head of the queue, the media interface controller does not process the media interface read command, but returns to step 950 to continue to obtain the pending command from the head of the command queue.
If the media interface command hit by the expansion has both a media interface read command and a media interface write command (970), if all the media interface read commands of the expanded command are located in the command queue before the media interface write command hit by the expansion command, removing the media interface read command hit by the expansion command from the command queue, and caching the removed media interface read command. The media interface controller also updates the data frame bitmap of the retrieved media interface read command with the removed one or more media interface read commands and processes the retrieved media interface read command.
FIG. 10 illustrates a block diagram of a media interface controller according to yet another embodiment of the present application.
The media interface controller is coupled to the command queue. The media interface controller comprises a hit checking unit, a command queue updating unit, a command processing unit, a command cache management unit and a media interface. The medium interface is coupled to the NVM chip for sending a storage medium access command to the NVM chip.
The storage command processing unit of the control unit adds the medium access command to the end of the command queue, and the medium interface controller acquires the medium access command from the head of the command queue.
The hit checking unit is coupled with the command queue, the command queue updating unit and the command processing unit. The command checking unit acquires a media interface command to be processed from the end of the command queue. The command checking unit is further coupled to entries of the command queue and checks whether a media interface read command to be processed hits in a media interface read command in the command queue and determines whether a fusion of two or more media interface commands is to be implemented.
Information of the media interface command that needs to implement the fusion due to the hit is provided to the command queue updating unit. The media interface command that misses or does not require fusion to be implemented is provided to the command processing unit. The command processing unit generates one or more storage medium access commands according to the content of the medium interface command and operates the medium interface to send the storage medium access commands to the NVM chip.
By way of example, a media interface read command to be processed that non-extensively hits one or more media interface read commands in the command queue requires a merge to be performed. The hit checking unit provides the media interface read command to be processed and the index of all the hit media interface read commands in the command queue to the command queue updating unit and instructs the command queue updating unit to merge the media interface read commands.
As yet another example, a media interface read command extension to be processed hits one or more media interface read commands in the command queue. The command checking unit also identifies whether the media interface write command hit by expansion exists in the command queue and the relationship between the media interface write command hit by expansion and the media interface read command hit by expansion. If the media interface read command which is subjected to the expansion hit is before the media interface write command which is subjected to the expansion hit, the hit checking unit provides the media interface read command to be processed and indexes of all the media interface read commands which are subjected to the hit in the command queue to the command queue updating unit, and instructs the command queue updating unit to fuse the media interface read commands. If the media interface read command hit by the expansion is behind the media interface write command hit by the expansion, the hit checking unit respectively provides the media interface read command hit before the media interface write command hit by the expansion and the index of the media interface read command hit after the media interface write command hit by the expansion to the command queue updating unit in the command queue, and instructs the command queue updating unit to fuse the media interface read commands.
The command queue updating unit identifies a fusion mode of the media interface read commands provided by the hit check unit. In one example, the command queue updating unit removes the media interface read commands indicated by the indexes from the command queue according to the received indexes, updates the media interface commands to be processed currently by using the indexes of the removed media interface read commands, and provides the updated media interface read commands to be processed currently to the data frame bitmap of the command processing unit. The command queue update unit also moves the media interface read command removed from the command queue to the command cache.
In yet another example, the hit check unit indicates separate indices of the command queue (one or more indices ahead in the command queue, and indices behind in the command queue). The command queue updating unit removes the media interface read commands corresponding to the indexes from the command queue according to all the received indexes in the command queue, and updates the data frame bitmap of the media interface read command indicated in the command queue by the subsequent index by using the removed commands and the media interface read command to be processed currently. The command queue updating unit also moves the media interface read command currently to be processed and the media interface read command removed from the command queue to the command cache, and does not provide the media interface read command currently to be processed to the command processing unit.
The results of the processing of the media interface to obtain the storage media access (read) command from the NVM chip are also provided to the command cache management unit. The command cache management unit identifies whether a storage media access (read) command successfully processed has a corresponding media interface read command cached, and deletes the cached media interface read command in response. If the command cache management unit identifies that the storage medium access (read) command processing fails, the cached media interface read command corresponding to the storage medium access (read) command is provided to the command processing unit for processing.
While the preferred embodiments of the present application have been described, additional variations and modifications in those embodiments may occur to those skilled in the art once they learn of the basic inventive concepts. Therefore, it is intended that the appended claims be interpreted as including preferred embodiments and all alterations and modifications as fall within the scope of the application. It will be apparent to those skilled in the art that various changes and modifications may be made in the present application without departing from the spirit and scope of the application. Thus, if such modifications and variations of the present application fall within the scope of the claims of the present application and their equivalents, the present application is intended to include such modifications and variations as well.

Claims (10)

1. A media interface controller comprising:
the system comprises a hit checking unit, a command queue updating unit, a command processing unit and a medium interface;
the hit checking unit is coupled with the command queue, the command queue updating unit and the command processing unit, checks whether the media interface read command acquired from the command queue hits the media interface read command in the command queue, and provides the index of the hit media interface command in the command queue to the command queue updating unit;
the command queue updating unit fuses the acquired media interface read command and the hit media interface read command;
the command processing unit operates the media interface to issue a storage media access command according to the media interface read command.
2. The media interface controller of claim 1, wherein the hit check unit provides the retrieved media interface read command to the command processing unit if the retrieved media interface read command misses a media interface read command in the command queue.
3. The media interface controller according to claim 1 or 2, wherein the command queue updating unit removes the hit media interface read command from the command queue, updates a data frame bitmap of the acquired media interface read command with the hit media interface read command, and supplies the updated media interface read command to the command processing unit.
4. The media interface controller of claim 3, wherein the command queue update unit moves the removed media interface read command to the cache.
5. The media interface controller of claim 4, further comprising a cache management unit;
the medium interface provides the processing result of the storage medium access command to the cache management unit;
in response to the processing result indicating that the first media interface read command processing failed, the cache management unit provides the cached one or more media interface read commands corresponding to the first media interface read command to the command processing unit.
6. The media interface controller of one of claims 1 to 5, wherein the hit checking unit provides the index of the media interface command that is hit and needs to be fused in the command queue to the command queue updating unit, and instructs the command queue updating unit to fuse the interface command that needs to be fused with the acquired media interface command.
7. The media interface controller of claim 6, wherein the hit check unit identifies that the retrieved media interface read commands extend to hit one or more media interface read commands in the command queue and also extend to hit media interface write commands, the hit media interface read commands preceding the hit media interface write commands, and in response, the hit check unit provides the retrieved media interface read commands and an index of the hit media interface read commands in the command queue to the command queue update unit.
8. The media interface controller according to claim 6 or 7, providing an eighth media interface controller according to the second aspect of the present application, wherein the hit checking unit recognizes that the retrieved media interface read command has extended to hit a media interface read command in the command queue and also extended to hit a media interface write command, the hit media interface read command following the hit media interface write command, and in response, the hit checking unit provides the retrieved media interface read command and an index of the hit media interface read command in the command queue to the command queue updating unit;
the command queue updating unit updates the data frame bitmap of the hit media interface read command with the acquired media interface read command, and buffers the acquired media interface read command without transmitting it to the command processing unit.
9. The media interface controller of any of claims 6 to 8, wherein the hit check unit recognizes that the retrieved media interface read command has an extended hit on the first media interface read command and the second media interface read command in the command queue and an extended hit on the media interface write command, the media interface write command being located before the first media interface read command in the command queue and after the second media interface read command in the command queue, and in response, the hit check unit provides the retrieved media interface read command, the index of the first media interface read command in the command queue, and the index of the second media interface read command in the command queue to the command queue update unit, respectively;
the command queue updating unit updates the data frame bitmap of the first media interface read command according to the acquired media interface read command and the second media interface read command, removes the second media interface read command from the command queue, caches the acquired media interface read command and the second media interface read command, and does not send the acquired media interface read command to the command processing unit.
10. A control section of a storage device comprising a control section and a nonvolatile memory, the control section comprising the media interface controller of one of claims 1 to 9.
CN202010207004.2A 2020-03-23 2020-03-23 Media interface controller and storage controller for read command fusion Pending CN113434082A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010207004.2A CN113434082A (en) 2020-03-23 2020-03-23 Media interface controller and storage controller for read command fusion

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010207004.2A CN113434082A (en) 2020-03-23 2020-03-23 Media interface controller and storage controller for read command fusion

Publications (1)

Publication Number Publication Date
CN113434082A true CN113434082A (en) 2021-09-24

Family

ID=77752667

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010207004.2A Pending CN113434082A (en) 2020-03-23 2020-03-23 Media interface controller and storage controller for read command fusion

Country Status (1)

Country Link
CN (1) CN113434082A (en)

Similar Documents

Publication Publication Date Title
US20200242021A1 (en) Logical to physical mapping management using low-latency non-volatile memory
US9235346B2 (en) Dynamic map pre-fetching for improved sequential reads of a solid-state media
US8321639B2 (en) Command tracking for direct access block storage devices
US11042305B2 (en) Memory system and method for controlling nonvolatile memory
CN107797759B (en) Method, device and driver for accessing cache information
CN107797760B (en) Method and device for accessing cache information and solid-state drive
US11157399B2 (en) Data storage devices and data processing methods with dynamic programming scheme
WO2020248798A1 (en) Method and device for intelligently identifying unreliable block in non-volatile storage medium
CN115427935A (en) Sequential read optimization in a sequentially programmed memory subsystem
US20220138096A1 (en) Memory system
CN111352865B (en) Write caching for memory controllers
CN111290975A (en) Method for processing read command and pre-read command by using unified cache and storage device thereof
CN111290974A (en) Cache elimination method for storage device and storage device
EP4170506A1 (en) Systems, methods, and devices for ordered access of data in block modified memory
CN110968527A (en) FTL provided caching
CN109815157B (en) Programming command processing method and device
CN113434082A (en) Media interface controller and storage controller for read command fusion
CN113434083A (en) Storage device read command fusion method and device
CN110096452A (en) Non-volatile random access memory and its providing method
CN104425039A (en) Dynamic map pre-fetching for improved sequential reads of a solid-state media
CN113254363A (en) Non-volatile memory controller with partial logical to physical address translation table
CN110532199B (en) Pre-reading method and memory controller thereof
CN113051187A (en) Lock-free access to FTL tables of storage device
CN112947845A (en) Thermal data identification method and storage device thereof
CN111858623A (en) Optimizing database performance using heterogeneous namespaces

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination