WO2013170731A1 - 将数据写入存储设备的方法与存储设备 - Google Patents

将数据写入存储设备的方法与存储设备 Download PDF

Info

Publication number
WO2013170731A1
WO2013170731A1 PCT/CN2013/075524 CN2013075524W WO2013170731A1 WO 2013170731 A1 WO2013170731 A1 WO 2013170731A1 CN 2013075524 W CN2013075524 W CN 2013075524W WO 2013170731 A1 WO2013170731 A1 WO 2013170731A1
Authority
WO
WIPO (PCT)
Prior art keywords
dma
address
buffer memory
data
memory
Prior art date
Application number
PCT/CN2013/075524
Other languages
English (en)
French (fr)
Inventor
路向峰
Original Assignee
北京忆恒创源科技有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 北京忆恒创源科技有限公司 filed Critical 北京忆恒创源科技有限公司
Priority to US14/400,467 priority Critical patent/US9395921B2/en
Priority to EP13790266.4A priority patent/EP2849077B1/en
Publication of WO2013170731A1 publication Critical patent/WO2013170731A1/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Definitions

  • the present invention relates to a solid state storage device (SSD) and, more particularly, to a method and apparatus for writing data to a random access memory in a solid state storage device.
  • SSD solid state storage device
  • Solid-state storage devices are also high-capacity, non-volatile storage devices for computer systems.
  • Solid-state storage devices generally use flash memory as a storage medium.
  • a solid state storage device as shown in Fig. 13 is disclosed in Chinese Patent Publication No. CN102043689A. As shown in Figure 13, it is a functional block diagram of the current general-purpose solid-state storage device.
  • the main components include a host system 1301 and a solid state storage device 1302.
  • the solid state storage device 1302 includes an interface module 1303, a solid state storage processor 1304, and a flash array 1306 composed of Flash particles 1305.
  • the interface module 1303 is mainly used to implement an interface that is consistent with the host system, such as SATA (Serial Advanced Technology Attachment), USB (Universal Serial Bus), and PCIE (Periphe ral). Component Interconnect Express, SCSI (Small Computer System Interface), IDE (Integrated Drive Electronics), etc.
  • SATA Serial Advanced Technology Attachment
  • USB Universal Serial Bus
  • PCIE Periphe ral
  • Component Interconnect Express SCSI (Small Computer System Interface)
  • IDE Integrated Drive Electronics
  • the solid state storage processor 1304 is the control core of the entire storage device, and is mainly responsible for the control signal and data transmission between the interface module 1303 and the flash array 1306, the Flash management, the conversion or mapping of the host logical address to the Flash physical address, and the wear leveling ( Mapping logical addresses to different physical addresses to prevent a single Flash from being prematurely operated in an excessively centralized operation), bad block management, and the like.
  • Solid state storage processor 1304 can be implemented in a variety of ways, including software, hardware, firmware, or a combination thereof.
  • 1305 is a single Flash granule, and multiple Flash granules 1305 form a Flash Array 1306.
  • a random access memory such as DRAM or SRAM or other types of memory suitable for high-speed read/write operations may be set in the solid-state storage device as a cache for reading and writing data with the flash memory. Flash memory.
  • the computer issues a SCSI (Small Computer System Interface) command to the storage device, and the storage device receives and processes the SCSI command to perform the corresponding storage medium read and write process according to the operation indicated by the SCSI command.
  • the SCSI command does not directly operate the cache. That is, the cache is "transparent" to the computer or user.
  • the allocation and management of the cache will be a burden on the controller on the solid state storage device.
  • the cache memory is fully occupied, if the solid state storage device receives a new access request from the host system, it is also necessary to perform a replacement operation on the cache memory. This increases the complexity of the controller and allows the host to experience bumps in read/write performance.
  • DMA Direct Memory Access
  • a method and apparatus for performing DMA transmission are disclosed in Chinese Patent Document CN101221544A.
  • a typical process for DMA transfers is the Scatter/Gather operation. In the scatter/gather operation, to be transmitted
  • the plurality of data blocks are stored in discrete address locations of the system (host) memory.
  • the processor does not need to program the DMA controller for each block of data that is to be moved from a source to a certain destination. Instead, the processor builds a descriptor table or descriptor link table in system memory. A set of descriptors is included in the descriptor table or descriptor link table.
  • Each descriptor describes the direction of movement of the block, the source address, the destination address, and the number of bytes that can be transferred.
  • the data of the agreed length can be transmitted by DMA.
  • a method of writing data to a storage device including a buffer memory and a flash memory, the storage device being communicably coupled to the information processing device, the method Includes:
  • a first DMA descriptor Receiving, from an information processing device, a first DMA descriptor, the DMA descriptor including an address for the information processing device, an address for the flash memory, and an address for the buffer memory;
  • the first DMA descriptor indicates a DMA write operation, writing the first data from the information processing device in a DMA transfer manner based on an address for the information processing device and an address for the buffer memory Entering into the buffer memory;
  • the first data in the buffer memory is written to the flash memory based on an address for the flash memory and an address for the buffer memory.
  • the first DMA descriptor includes a first DMA descriptor command and first DMA descriptor data, the first DMA descriptor data including an address for the information processing device And an address for the buffer memory, the DMA descriptor command includes an address for the flash memory; the method further includes:
  • the first DMA microinstruction indicates a DMA write operation, based on an address for the information processing device and an address for the buffer memory, the first is from the information processing device in a DMA transfer manner Data is written to the buffer memory;
  • the first data in the buffer memory is written to the flash memory based on an address for the flash memory and an address for the buffer memory.
  • the first DMA descriptor includes a first DMA descriptor command, first DMA descriptor data, and second DMA descriptor data, the first DMA descriptor data including the first An address for the information processing device and an address for the buffer memory, the second DMA descriptor data including a second address for the information processing device and a second for the An address of the flush memory, the DMA descriptor command including an address for the flash memory; the method further comprising: converting the first DMA descriptor data into a first DMA ⁇ instruction, the second Converting DMA descriptor data into a second DMA microinstruction, the first DMA microinstruction indicating a first address for the flash memory, an address for the information processing device, and a first The address of the flush memory, The second DMA microinstruction indicates a second address for the flash memory, a second address for the information processing device, and a second address for the buffer memory, wherein the second flash memory An address is offset from the first
  • the information is processed in the DMA transfer manner based on the first address for the information processing device and the first address for the buffer memory.
  • the device writes the first data to the buffer memory;
  • the second DMA microinstruction indicates a DMA write operation, based on the second address for the information processing device and the second for the buffer memory Address, the second data is written from the information processing device to the buffer memory in a D MA transmission manner;
  • a message is sent to the information processing device to indicate that the same is used for the buffer memory The release of the storage space of the corresponding buffer memory of the address.
  • a message is sent to the information processing device to indicate that the operation of the first DMA descriptor is completed .
  • a message is sent to the information processing device to indicate that the operation of the first DMA descriptor is completed, And indicating release of a storage space of the buffer memory corresponding to the address for the buffer memory.
  • a storage device including a buffer memory, a flash memory, an information processing device interface, and a control circuit, the storage device being communicably connected to the information processing device, wherein :
  • the information processing device interface receives a first DMA descriptor from an information processing device, the DMA descriptor including an address for the information processing device, an address for the flash memory, and a buffer memory Address
  • the control circuit When the control circuit recognizes that the first DMA descriptor indicates a DMA write operation, processing from the information in a DMA transfer manner based on an address for the information processing device and an address for the buffer memory The device writes the first data to the buffer memory;
  • the control circuit writes the first data in the buffer memory to the flash memory based on an address for the flash memory and an address for the buffer memory.
  • control circuit further transmits a message to the information processing device to indicate that the same applies to the The release of the storage space of the buffer memory corresponding to the address of the buffer memory.
  • control circuit further transmits a message to the information processing device to indicate to the first DMA The operation of the descriptor is completed.
  • the first DMA descriptor includes a first DMA descriptor command and first DMA descriptor data, the first DMA descriptor data including for the information processing An address of the device and an address for the buffer memory, the DMA descriptor command including an address for the flash memory;
  • the storage device further includes a DMA instruction analyzer, a DMA write operation controller, and a flash interface control Device:
  • the DMA instruction analyzer converting the first DMA descriptor data into a first DMA instruction, the first DMA microinstruction indicating an address for the flash memory, an address for the information processing device, and An address for the buffer memory;
  • the DMA write operation controller is based on an address for the information processing device and an address for the buffer memory, in a DMA transfer manner
  • the information processing device writes the first data to the buffer memory
  • the flash interface controller writes the first data in the buffer memory to the flash memory based on an address for the flash memory and an address for the buffer memory.
  • the first DMA descriptor includes a first DMA descriptor command, first DMA descriptor data, and second DMA descriptor data
  • the first DMA descriptor data A first address for the information processing device and an address for the buffer memory
  • the second DMA descriptor data including a second address for the information processing device and a second for An address of the buffer memory
  • the DMA descriptor command includes an address for the flash memory
  • the storage device further includes a DMA instruction analyzer, a DMA write operation controller, and a flash interface controller:
  • the DMA instruction analyzer converts the first DMA descriptor data into a first DMA instruction, and converts the second DMA descriptor data into a second DMA ⁇ instruction, where the first DMA ⁇ instruction indicates An address for the flash memory, an address for the information processing device, and an address for the buffer memory, the second DMA microinstruction indicating a second for the flash memory Address, second address for the information processing device, and second address for the buffer memory, wherein the second flash memory address is offset from the first flash memory address by a predetermined offset value;
  • the DMA write operation controller transmits the DMA according to the first address for the information processing device and the first address for the buffer memory. Transmitting, by the information processing device, first data to the buffer memory; when the second DMA microinstruction indicates a DMA write operation, the DMA write operation controller is based on the second for the information processing An address of the device and a second address for the buffer memory, and the second data is written from the information processing device to the buffer memory in a DMA transfer manner;
  • the flash interface controller writes the first data in the buffer memory to the flash memory based on an address for the flash memory and an address for the buffer memory a memory; writing the second data in the buffer memory to the flash memory based on a second address for the flash memory and a second address for the buffer memory.
  • the control circuit further sends an interrupt to the information processing device to indicate a pair Release of the storage space of the buffer memory corresponding to the first address for the buffer memory and the second address for the buffer memory, and indicating to the first The operation of the DM A descriptor is completed.
  • a method of writing data to a storage device including a buffer memory and a flash memory, the storage device being communicably coupled to the information processing device, Methods include: Receiving a first write command from the information processing device, the first write command including data to be written, an address for the flash memory, and an address for the buffer memory;
  • the data to be written in the buffer memory is written to the flash memory based on an address for the flash memory and an address for the buffer memory.
  • a message is sent to the information processing device to indicate that the operation of the first write command is completed.
  • a message is sent to the information processing device to indicate that the same is used for the buffer memory
  • the corresponding address of the buffer memory is released from the storage space.
  • a message is sent to the information processing device to indicate that the operation of the first write command is completed and Release of the storage space of the buffer memory corresponding to the address for the buffer memory.
  • a storage device including a buffer memory, a flash memory, an information processing device interface, and a control circuit, the storage device being communicably connected to the information processing device, wherein :
  • the information processing device interface receives a first write command from the information processing device, the first write command including data to be written, an address for the flash memory, and an address for the buffer memory;
  • the control circuit writes the data to be written to the buffer memory based on the address for the buffer memory
  • the control circuit writes the data to be written in the buffer memory to the flash memory based on an address for the flash memory and an address for the buffer memory.
  • control circuit further transmits a message to the information processing device to indicate to the first The operation of writing the command is completed.
  • the control circuit further transmits a message to the information processing device to indicate that the same is used for the same The corresponding storage address of the buffer memory of the buffer memory is released.
  • the control circuit further sends a message to the information processing device to indicate the first write The operation of the command is completed and the release of the storage space of the buffer memory corresponding to the address for the buffer memory.
  • FIG. 1 is a block diagram showing the structure of a storage device according to an embodiment of the present invention.
  • FIGS. 2A, 2B are schematic diagrams of write commands in accordance with an embodiment of the present invention.
  • FIG. 3 is a flowchart of a method for a storage device to execute a write command according to an embodiment of the present invention
  • FIG. 4 is a schematic diagram of a host in accordance with an embodiment of the present invention
  • FIG. 5 is a flowchart of a host performing a write operation according to an embodiment of the present invention
  • FIG. 6 is a schematic diagram of a second write command according to an embodiment of the present invention.
  • FIGS. 7A, 7B are flowcharts of a second write command executed by a memory device in accordance with an embodiment of the present invention
  • FIG. 7C is a block diagram showing hardware of a memory device for implementing the second write command of FIGS. 7A, 7B. ;
  • FIG. 8 is a software block diagram of a host in accordance with an embodiment of the present invention.
  • FIG. 9A is a flowchart of a host creating and executing a second write command according to an embodiment of the present invention
  • FIG. 9B is a flowchart of a host creating and executing a second write command according to another embodiment of the present invention
  • FIG. 10B is a flow chart of creating a linked list in a buffer memory of a storage device according to an embodiment of the present invention.
  • Figure 10C is a flow diagram of a memory device executing a DMA descriptor using a linked list created in a buffer memory, in accordance with an embodiment of the present invention
  • Figures 11A-11F show various states of the buffer memory associated with Figures 10B, 10C;
  • Figure 12 is a hardware block diagram of a memory device in accordance with yet another embodiment of the present invention.
  • Figure 13 is a block diagram of a prior art solid state storage device.
  • FIG. 1 is a block diagram showing the structure of a memory device in accordance with an embodiment of the present invention.
  • the embodiment shown in Figure 1 includes a host 101 and a storage device 102 coupled to the host 101.
  • the host 101 and the storage device 102 can be coupled in a plurality of manners, including but not limited to connecting the host 101 and the storage device through, for example, SATA, IDE, USB, PCIE, SCSI, Ethernet, Fibre Channel, wireless communication network, and the like.
  • the host 101 may be an information processing device capable of communicating with the storage device in the above manner, for example, a personal computer, a tablet, a server, a portable computer, a network switch, a router, a cellular phone, a personal digital assistant, or the like.
  • the storage device 102 includes a host interface 103, a control circuit 104, one or more flash chips 105, and a buffer memory 106.
  • Host interface 103 can be adapted to exchange data with host 101 via, for example, SATA, IDE, USB, PCIE, SCSI, Ethernet, Fibre Channel, and the like.
  • Control circuitry 104 is used to control data transfers between host interface 103, flash chip 105, and buffer memory 106, as well as for flash management, host logical address to flash physical address mapping, erase equalization, bad block management, and the like.
  • Control circuit 104 can be implemented in a variety of ways, including software, hardware, firmware, or a combination thereof.
  • the control circuit 104 may be in the form of an FPGA (Field-programmable gate array), an ASIC (Application Specific Integrated Circuit), or a combination thereof.
  • Control circuitry 104 may also include a processor or controller.
  • host 101 issues a read command or a write command to storage device 102.
  • Control circuit 104 receives the read command or write command via host interface 103.
  • the first write command 200 as an example is described in detail in FIG.
  • FIG. 2A is a schematic diagram of a write command in accordance with an embodiment of the present invention.
  • the write command 20 0 includes fields 201, 202, 203, and 204.
  • Field 201 indicates that the command is a write command
  • field 202 is a flash address
  • field 203 is data
  • the write command 200 instructs storage device 102 to write data in data field 203 to the flash chip based on the flash address indicated by field 202.
  • the field 204 is a buffer memory address.
  • the buffer memory address indicated by 204 is written to the buffer memory 106, and the data in the data field 203 is written to the flash memory chip 105 based on the flash address indicated by the field 202.
  • storage device 102 reads the data in data field 203 from the buffer memory 106 based on the buffer memory address indicated by field 204, and then reads the data from buffer memory 106, which in turn The data is written to the flash chip 105.
  • the operation of writing data to the buffer memory 106, and the operation of reading out and writing another data in the memory 106 to the flash chip 105 can be performed concurrently, thereby causing the concurrency of the write operation of the host 101 to the storage device 102.
  • field 204 may be the full address of buffer memory 106, while in another embodiment, field 204 is an offset value relative to a certain base address.
  • field 203 carries data to be written to flash memory 105. In yet another embodiment, field 203 can carry a pointer to the data to be written to storage device 102, and the data can be stored in the memory of host 101, in which case storage device 102 passes The DMA transfer process obtains the data from the host 101.
  • field 203 can carry a pointer to data to be written to storage device 102, and the data can be stored in a buffer memory of storage device 102.
  • Field 202 may be the physical address or logical address of flash chip 105 to which data is to be written.
  • Field 202 can also be a pointer to buffer memory 106 in which is stored a physical or logical address for flash chip 105. The process of converting a logical address to a physical address can be implemented by looking up an address mapping table.
  • a write command can have a variety of specific encoding modes and field ordering.
  • the field 214 indicating that the write command 210 is of a write operation may be at the end of the write command 210 or elsewhere.
  • the field 211 carries the buffer memory address
  • the field 212 carries data or a pointer to the storage location of the data.
  • the flash address is stored in field 213, or a pointer to a flash address, which may be a logical address or a physical address.
  • step 30 1 storage device 102 receives a write command 200 from host 101.
  • the control circuit 104 of the storage device 102 extracts a field 201 included in the write command 200 for indicating that the operation type is a write operation for indicating the flash memory to be written.
  • step 302 in response to the write command 200, the control circuit 104 derives an address for the buffer memory 106 based on the field 204, and obtains data to be written based on the field 203, and writes the data to be written to the buffer. The location in memory 106 indicated by field 204.
  • the storage device 102 can send a message to the host to indicate that execution of the write command 200 is complete, although the data has not actually been written into the flash chip 105 at this time. In this manner, in the view of the host 101, after the execution of step 302 is completed, the write command 200 has been executed, thereby improving the performance of the storage device 102 executing the write command 200.
  • the message sent to the host may be included in the interrupt request sent by the storage device 102 to the host 101, or may be based on the coupling mode between the host 101 and the storage device 102 (SATA, IDE, USB, PCIE, SCSI, Ethernet, Fibre Channel, wireless communication networks, etc.) and choose the appropriate way to send other messages.
  • the data to be written is written to the buffer memory 106
  • the data to be written indicated by the field 203 is written to the flash memory chip based on the flash address indicated by the field 202 under the control of the control circuit 104. 105 (step 303).
  • the storage device 102 can also send a message to the host to indicate the completion of the execution of the write command 200, in particular, the host can now specify to write the data again in the write command 200.
  • the address of the buffer memory 106 is indicated without data errors due to overwriting of data at the address.
  • the field 202 indicates a logical address for the flash chip 105
  • the logical address is converted to a physical address for the flash chip 105.
  • the manner in which logical addresses to physical addresses are translated is known to those skilled in the art.
  • the written data is retrieved from the buffer memory 106 and written to the flash memory chip 105.
  • the operation of writing data to the buffer memory 106 in step 302 and the operation of writing data to the flash memory 105 in step 303 may be performed in parallel under the control of the control circuit 104.
  • a plurality of write commands can be processed simultaneously in the storage device 102, wherein, at one time, based on a write command, the control circuit 104 writes the first data into the buffer memory 106; and based on the other write
  • the control circuit 104 writes the second data present in the buffer memory 106 to the flash memory chip 105.
  • the buffer memory 106 may be a dual port memory such that the second data can be read from the buffer memory 106 from the second port while the first data is written to the buffer memory 106 via the first port.
  • Other embodiments of buffer memory 106 will be appreciated by those skilled in the art to support simultaneous read and/or write operations on multiple copies of data.
  • the operation of the maintenance buffer memory 106 is removed from the control circuit 104 by carrying a field 204 for indicating the address of the buffer memory 106 in the write command, and the host 101 has the ability to more flexibly control the storage device 102. .
  • FIG. 4 is a schematic diagram of a host in accordance with an embodiment of the present invention.
  • 4 is a block diagram showing the software composition of the host 400.
  • Host 400 can be a personal computer, a server computer, or other computing capable device.
  • Host 400 includes one or more user applications 401, 402, and 403, and an operating system 404.
  • the operating system 404 has a storage device driver 405.
  • the driver 405 includes a buffer control block 406 for controlling the buffer memory 106 of the storage device 102 in the host 400.
  • the buffer control block 406 is composed of a plurality of memory cells (411, 412 ... 41n), and each of the memory cells (411, 412 ...
  • the storage unit stores and records the operating status of the corresponding storage unit in the buffer memory 106.
  • a plurality of memory locations, e.g., two, in the buffer memory are involved in a read/write command sent to the memory device 102.
  • the two storage units (411, 412) in the buffer control block 406 are associated together, and the association relationship between the storage units 411 and 412 is also recorded in the storage units 411, 412, for example.
  • One or more pointers to the storage unit 412 are recorded in the storage unit 411.
  • one or more pointers to memory unit 411 are also recorded in storage unit 412.
  • FIG. 5 is a flow chart of a host performing a write operation in accordance with an embodiment of the present invention.
  • An application or other program sends a write request when a user application or other program requests an operation to write data to the storage device.
  • the storage device driver 405 in FIG. 4 receives the write request (step 501), and the write request includes an address provided by the application or other program to be written for the storage device, and an address for the storage device. It can be a file path and an offset value and is further converted to a logical address for the storage device.
  • the logical address is a logical address for a flash chip on a storage device that writes data to the flash chip based on the logical address.
  • storage device driver 405 allocates an idle buffer for the write request.
  • the buffer control block 406 is traversed to find a storage unit in which the idle state is, for example, the storage unit 411.
  • the storage unit 411 is in an idle state, indicating a buffer in the storage device 102.
  • the corresponding memory location in memory 106 is in an idle state and can receive written data.
  • the storage device driver 405 sends a write command to the storage device 102, where the data to be written and the address for the storage device 102 are included in the write command, and the write command further includes the storage unit 411.
  • the address used to buffer memory 106 Those skilled in the art will appreciate that there are multiple ways to obtain a correspondence between the memory cells 411 and corresponding ones of the buffer memories 106.
  • the buffer control block 406 has n memory cells (411, 412, ..., 41n), and the buffer memory 106 also includes n memory cells, and the memory cells 411 correspond to the buffer memory 106.
  • the first storage unit, and the storage unit 4 12 corresponds to the second storage unit in the buffer memory 106, and similarly, the storage unit 41n corresponds to the nth storage unit in the buffer memory 106, so that the storage is based on
  • the location of unit 411 in buffer control block 406 can calculate the address of the corresponding memory location in buffer memory 106.
  • the address of the corresponding memory location in the buffer memory 106 can also be stored in the memory locations (411, 412 ... 412).
  • the write command carries a sequence number that indicates both the location of the memory location 411 in the buffer control block 406 and the location of the corresponding memory location in the buffer memory 106.
  • a message from storage device 102 is received.
  • the message is an interrupt request indicating that the write command sent in step 503 has been executed.
  • control circuitry 104 in storage device 102 writes data in a write command to buffer memory 106 (in particular, writes to buffer memory 106 and buffers).
  • the storage device transmits a interrupt indicating that the execution of the write command is completed.
  • control circuit 104 writes data to flash chip 105
  • storage device 102 sends an interrupt to host 101.
  • the interrupt request further includes information indicating the location of the buffer control block 406 associated with the write command sent in step 503. The information may be the address of one or more of the storage units (411, 412 ... 41n), the serial number of one or more of the storage units (411, 412 ).
  • step 505 in response to the interrupt request received in step 504, and based on the information of the memory location of the buffer control block 406 associated with the write command indicated in the interrupt request, release is associated with the write command
  • the buffer control block 406 has memory cells (411, 412 ... 41n).
  • the release of the memory cells (411, 412 ... 41n) may specifically be such that the corresponding memory cells in the buffer memory 106 are set to be in an idle state in the memory cells (411, 412, ..., 41n).
  • the write command in step 503 involves two memory locations 41 1 and 412 of the buffer control block 406, and the pointers pointing to each other are recorded in the storage units 411 and 412, respectively, to represent the two stores.
  • Units 411, 412 are associated with the same write command.
  • the interrupt request received in step 504 either the storage unit 411 or the storage unit 412 may be indicated.
  • step 505 based on the pointer indicating one of the storage units 41 1 and 412, two storage units 411 and 412 are obtained and released.
  • three or more memory cells (411, 412 ... 41n) can also be associated in a write command in this manner.
  • the second write command instructs the storage device 102 to obtain data from the host 101 in DMA mode and write it into the flash chip 105.
  • the second write command can be a DMA descriptor 600.
  • the DMA Descriptor 600 includes a DMA command 610 and one or more DMA data (620, 630).
  • the DMA command 610 includes a field 611 for indicating the DMA mode, i.e., the operation indicated by the DMA descriptor 600, which may be a flash read, write, erase, or other operation.
  • Field 612 indicates the logical address of the storage device.
  • Field 613 indicates the length of the DMA Descriptor 600, ie, the DMA Descriptor 60
  • the number of DMA data (620, 630) included in 0 may be one or more.
  • Field 614 indicates the address of buffer memory 106.
  • the DMA data 620, 630 includes fields 621, 631, respectively, for indicating the host address in the DMA transfer.
  • the DMA data 620, 630 also includes fields 622, 632, respectively, for indicating the address of the buffer memory 106.
  • the logical address of the storage device of field 612 in DMA command 610 is available for DMA data 620, 630.
  • the storage device 102 initiates a DMA transfer between the host 101 and the storage device 102 based on the host address indicated by field 621 and the buffer memory address indicated by field 622.
  • the received data is eventually stored in the flash chip 105 as indicated by field 612.
  • the DMA descriptor 600 includes DMA data 620 and 630
  • the data obtained by the storage device 102 from performing DMA transfer according to the DMA data 620 is finally stored in the flash chip 105 indicated by the field 612, and the storage device 102 also
  • the data resulting from the DMA transfer in accordance with the DMA data 630 is ultimately stored in the flash chip 105 indicated by the field 612 plus a predetermined offset value.
  • the DM A descriptor 600 can indicate multiple DMA transfers between the host 101 and the storage device 102, each time the DM A transmission corresponds to one of the DMA data 620, 630, the same transmission per DMA transfer A quantity of data (for example, 4 Kbytes), and the logical address of the DMA-transferred storage device corresponding to the DMA data 620 and the DMA data 630 is continuous (for example, a predetermined offset value, the offset value can be transmitted with the DMA) The amount of data corresponds to).
  • only one storage device logical address (field 612) can be carried in the DMA Descriptor 600.
  • the two DMA host addresses (fields 621, 631) of the DMA transfer corresponding to the DMA data 620 and the DMA data 630 may be discontinuous, which supports scatter-gather DMA transfer.
  • the data from the DMA host address indicated by the field 621 is written to the buffer memory 106 indicated by the field 622, and then written to the flash chip 105.
  • the data from the DMA host address indicated by the field 631 is written to the buffer memory 106 indicated by the field 632, and then written to the flash memory chip 105.
  • Field 614 is optional. At the buffer memory address corresponding to field 614, as an example, the length of the DMA descriptor 600 indicated by field 613 may be saved. Thus, it is possible to record how many DMA transfers corresponding to the DMA plurality of data 62 0, 630 have been executed, or how many have not yet been executed.
  • the storage device 102 sends an interrupt to the host 101. , to indicate completion of execution of the DMA descriptor 600.
  • the DMA Descriptor 600 although it corresponds to the 2 DMA transfer process, only an interrupt is sent to the host 101. Reducing the number of interrupt requests will help reduce the workload on the host 101.
  • FIG. 7A, 7B are flow diagrams of a memory device executing a second write command in accordance with an embodiment of the present invention.
  • the second write command may be the descriptor 600 as shown in FIG.
  • storage device 102 receives DMA descriptor 600.
  • Addresses for the host e.g., DMA host addresses 621, 631
  • addresses for flash chip 105 e.g., storage device logical address 612
  • addresses for buffer memory 106 are included in DMA descriptor 600 (e.g., , buffer memory addresses 622, 632).
  • the DMA descriptor 600 in FIG. 6 includes the DMA command 610, DMA data 620, 630, this is for the purpose of clarity only.
  • the DMA command 610, DMA data 620, 630 can also be combined.
  • Storage device 102 from DMA The address for the host is extracted from the descriptor 600, the address for the flash chip 105, and the address for the buffer memory 106.
  • the storage device 102 writes data from the host 101 to the buffer memory 106 in a D MA transfer manner based on the address for the host and the address for the buffer memory.
  • the data written in the buffer memory in step 702 is written to the flash chip 105 based on the address for the flash memory and the buffer memory.
  • an interrupt is sent to the host 101 to indicate completion of execution of the DMA transfer. If only the D MA transfer is included in the DMA Descriptor 600 (e.g., the DMA description 600 includes only the DMA command 610 and the DMA data 620), the interrupt also indicates completion of execution of the DMA Descriptor 600. In one example, after the data is written to the flash chip 105 at step 703, an interrupt is sent to the host 101 to indicate completion of execution of the DMA transfer.
  • DMA Descriptor 600 containing a plurality of DMA data (620, 630) is shown.
  • storage device 102 receives DMA descriptor 600, which includes DMA command 610, DMA data 620, and DMA data 630.
  • DMA data 620 is converted to a first DMA instruction based on DMA descriptor 600, and DMA data 630 is converted to a second DMA instruction.
  • the first DMA instruction includes a DMA host address 621 and a buffer memory address 622. Based on the first DMA microinstruction, a logical address 612, a DMA operation type, and a DMA descriptor length 613 of the storage device corresponding thereto can also be obtained.
  • the logical address 612 and the DMA operation type of the storage device may be part of the first DMA microinstruction, or may be stored in the buffer memory 106 and accessed through an index in the first DMA ⁇ : instruction, and may also pass
  • the first DMA: instruction is placed in a particular operational queue (read, write, erase, other) to identify the type of operation of the first DMA microinstruction.
  • a pointer stored in the buffer memory 106 is obtained based on the buffer memory address 622 and a predetermined offset value, based on which the logical address 612 and/or of the storage device are obtained. Or DMA descriptor length 613.
  • a pointer stored in the buffer memory 106 is obtained based on the buffer memory address 632 and a predetermined offset value, based on which the logical address 612 and/or DMA of the storage device is obtained. Descriptor length 613.
  • DMA descriptor length 613 is stored in buffer memory 106 based on buffer memory address 614, where the DMA descriptor length is equivalent to the number of DMA data in DMA descriptor 600 (or DMA description)
  • the total number of DMA commands and DMA data in the character 600, from which the number of DMA data can be obtained, and the DMA descriptor length 613 are accessed by the index in the first DMA microinstruction.
  • the order of execution of the first DMA ⁇ instruction and the second DMA ⁇ instruction becomes unimportant.
  • the length of the DMA descriptor in the buffer memory 106 is decremented (for example, by 1 or minus the unit length). When the length of the DMA descriptor in the buffer memory 106 becomes 0, it indicates that All DMA operations of the D MA descriptor 600 are all performed.
  • step 713 for the first DMA microinstruction, data is written to the corresponding buffer memory 106 in a DMA transfer manner based on the DMA host address 621 and the buffer memory address 622.
  • the corresponding data is written to the buffer memory 106 in a DMA transfer manner based on the DMA host address 631 and the buffer memory address 632.
  • step 715 an interrupt is sent to the host to indicate completion of the operation of the DMA descriptor 600.
  • step 713 also includes writing data written to the buffer memory 106 corresponding to the first DMA microinstruction to the flash memory chip 105 based on the storage device logical address 612.
  • step 714 also includes writing data written to buffer memory 106 corresponding to the second DMA microinstruction to the flash memory chip 105 based on the sum of the storage device logical address 612 plus a predetermined offset value.
  • the DMA stored in the buffer memory is also accessed based on the indices in the first and second microinstructions.
  • the descriptor length is 613 and the DMA descriptor length 613 is decremented (eg, minus 1 or minus the unit length).
  • the DMA descriptor length 613 becomes 0, it means that the operation on the DMA descriptor 600 is completed.
  • a plurality of DMA descriptors 600 can be simultaneously processed in the storage device 102, and the order of execution of the first DMA ⁇ command and the second DMA instruction is also unimportant.
  • DMA Descriptor 600 can also be performed. For example, a flag is provided for each DMA data of each D MA descriptor 600 in a buffer memory or a register, and a corresponding flag is set each time a DMA data (DMA microinstruction) is executed. It is also possible to sequentially execute each DMA data (DMA microinstruction) in the DMA descriptor 600, and when the last DMA data (DMA microinstruction) is executed, it means that the execution of the D MA descriptor 600 is completed.
  • DMA microinstruction DMA microinstruction
  • an interrupt is sent to the host 101, and the host driver analyzes whether the execution of the DMA Descriptor 600 has been completed.
  • the analysis method is similar to the process of identifying whether a plurality of DMA data in the DMA descriptor 600 are both executed in the storage device 102 described above.
  • FIG. 7C A hardware block diagram of a memory device for implementing the second write command of Figures 7A, 7B is shown in Figure 7C.
  • host 101 includes a PCIE controller 721 and a host memory 722.
  • the host memory 722 can be a random access memory (RAM), and the PCIE controller 721 is used to communicate with the storage device via the PCIE bus.
  • the storage device 102 includes a PCIE interface 731, a DMA command analyzer 732, a microinstruction FIFO (first in first out buffer) 733, a DMA write operation controller 734, a DMA write interface 735, a logical address to physical address conversion circuit 736, and a Flash.
  • the PCIE interface 731 receives the DMA descriptor 600 transmitted by the host 101 through the PCIE controller 721.
  • the connection between the host computer 101 and the storage device 102 is not limited to the PCIE mode, and the host 101 and the storage device 102 can also be connected through SATA, IDE, USB, PCIE, SCSI, Ethernet, Fibre Channel, and the like.
  • the DMA command analyzer 7 32 converts the DMA descriptor 600 received by the PCIE interface 731 into a DMA microinstruction.
  • the DMA instruction analyzer converts it into a first DMA instruction corresponding to the DMA data 620 and corresponds to the second DMA data 6 30.
  • the second DMA microinstruction The structure of the first DMA microinstruction and the second DMA microinstruction has been described in detail above.
  • the DMA command parser 732 also extracts the DM A descriptor length from the DMA command 610 of the DMA Descriptor 600 and saves it, which can be stored in the buffer memory 106, a register or the like.
  • the DMA descriptor length indicates the number of DMA data included in the DMA descriptor 600, and also indicates the number of DMA microinstructions obtained from the DMA descriptor 600.
  • the DMA command analyzer 732 stores the first DMA instruction and the second DMA ⁇ : instruction in the ⁇ : instruction FIFO 733.
  • Microinstruction FIFO 733 is capable of buffering DMA microinstructions and providing DMA microinstructions to DMA write operation controller 734 in a first in first out manner.
  • the write operation is taken as an example here, it is described that the DMA microinstruction corresponding to the DMA write operation is cached in the microinstruction FIF0733, and those skilled in the art will recognize that The DMA microinstruction corresponding to the DMA read operation is mixed with the DMA microinstruction corresponding to the DMA write operation in the ⁇ : instruction FIF0733.
  • the ⁇ : instruction FIF0733 can also be configured in two or more parts, one part dedicated to storing the DMA ⁇ : instruction corresponding to the DMA read operation and the other part dedicated to storing the DMA microinstruction corresponding to the DMA write operation.
  • DMA write operation controller 734 performs DM A write operations based on these DMA microinstructions.
  • the first DMA microinstruction includes a DMA host address 621 and a buffer memory address 622.
  • the DMA write operation controller 734 initiates a DMA write operation between the host 101 and the storage device 102 through the DMA write interface 735 using the DMA host address 621 and the buffer memory address 622, and transfers the data stored at the DMA host address 621 to the DMA host.
  • the transmitted data may have a predetermined length (e.g., 4K bytes).
  • the DMA write operation controller 734 performs a similar operation to transfer the data stored at the DMA host address 631 to the location indicated by the buffer memory address 632.
  • a logical address for the respective storage device is available from the first DMA microinstruction and the second DMA microinstruction.
  • the logical address of the storage device for each DMA microinstruction is translated to the physical address for flash memory chip 105.
  • the Flash interface controller 737 writes the data written to the buffer memory 106 to the flash memory chip 105 based on the physical address provided by the physical address to physical address translation circuit 736.
  • the Flash interface controller 737 also extracts the DMA descriptor length from the saved DMA command 610 of the DMA descriptor 600 based on the index in the first and second microinstructions, and decrements the DMA descriptor (eg, subtracts 1 or minus the unit length). Thus, when the length of the DMA descriptor becomes 0, it means that the operation on the DMA descriptor 600 is completed. In turn, an interrupt can be sent to the host to indicate completion of the operation of the DMA Descriptor 600.
  • the DMA write operation controller also accesses the saved DMA descriptor length and determines whether all data corresponding to the DMA descriptor 600 has been written to the buffer memory 106 and sends an indication to the host. All data has been written to the interrupt of buffer memory 106.
  • Figure 8 is a software block diagram of a host in accordance with an embodiment of the present invention.
  • Figure 8 is a block diagram showing the software of the host 800, which is similar to the software block diagram of the host shown in Figure 4. The difference is that the buffer control block 406 in Fig. 8 further includes a 10 request list 801.
  • the 10 request linked list 801 is a linked list composed of the storage units (411, 412, ..., 41n) in the buffer control block 460.
  • the 10 request list 801 can be a singly linked list, a doubly linked list, or a circular linked list.
  • a corresponding 10 request linked list 801 is created, which includes the DMA command 610, the DMA data 620, and the DMA data 630, respectively.
  • step 901 a request is received by the storage device driver 405 of the host.
  • the 10 request indicates that a plurality of data blocks dispersed at different physical addresses of the host memory are written into the storage device 102, for which a scatter-gather DMA operation is performed between the host and the storage device.
  • the following describes the host to storage by way of example. The operation of writing data to the device.
  • step 902 in conjunction with FIG. 8, an empty state storage unit, such as storage unit 411, is fetched from buffer control block 406.
  • a DMA command 610 of the DMA descriptor 600 is created, based on the content of the 10 request, populating the DMA mode field 611 in the DMA command 610 (in this example, a write operation), the storage device logical address field 612 (from 10) This information is available in the request), DMA Descriptor Length field 613 (this information is available from 10 requests), and Buffer Memory Address field 614 (corresponding to the memory location 411 assigned in step 902).
  • the created DMA command 610 is then sent to the storage device 102.
  • the storage unit 411 is taken as the starting node (e.g., storage unit 811) of the 10 request list 801 for the 10 request.
  • a 10 request chain table 801 is created for returning the occupied storage unit to the buffer control block 406 after the storage device 102 executes the DMA descriptor 600, and notifying the application software or other upper layer software about the execution completion of the 10 request. .
  • a pointer corresponding to the 10 request is also stored in the storage unit 411.
  • the remaining length of the DMA data portion can also be obtained. Before the first D MA data is generated, the remaining length of the DMA data portion is the number of DMA data (620, 630) in the DMA descriptor 600, which is an example of which the DMA descriptor length is decremented by one.
  • an empty state storage unit e.g., storage unit 412
  • the DMA data 620 of the DMA descriptor 600 is created, the DMA host address field 621 in the D MA data 620 is populated (this information is available from the 10 request), and the buffer memory address 622 (with the allocated storage) Unit 412 corresponds to, for example, the offset value or sequence number of storage unit 412 in buffer control block 406).
  • the created DMA data 620 is then sent to the storage device 102.
  • the storage unit 412 is taken as a node (e.g., storage unit 812) for the 10 request list 801 for the 10 request.
  • the remaining length of the DMA data portion is decremented to obtain the number of DMA data that has not been sent to the storage device in the DMA descriptor 600.
  • step 909 if the remaining length of the DMA data portion is 0, it indicates that the generation of the DMA descriptor 600 has been completed, and in step 910, the storage device driver 405 will wait for the processing of the DMA descriptor 600 returned by the storage device 102 to be completed.
  • the interrupt is interrupted, and the corresponding 10 request list 801 is found according to the interrupt, and the storage units (811, 812) in the 10 request list 801 are released.
  • the state of the memory cells (811, 812) in the 10 request list 801 is set to idle, so that the state of the memory cells 411, 412 can be learned to be free by the buffer control block 406.
  • the CPU associated with the DMA host address (621, 631) of the DMA descriptor 600 is also notified to be slow.
  • the flush memory performs a coherency process to reflect that the data at the DMA host address (621, 631) may have changed due to a read DMA read operation.
  • the interrupt returned by the storage device 102 includes content indicating one of the plurality of storage units (811, 812) (or one of the buffer memory addresses 622, 632) in the request list 80 1 according to the content.
  • the memory cells (811, 812) are released by the 10 request list 801.
  • step 909 if the remaining length of the DMA data portion is greater than 0, it indicates that the generation of the DMA descriptor 60 0 has not been completed, and one or more DMA data needs to be generated for the 10 request, then the process returns to step 906 and the steps are repeated. 906, 908 and 909.
  • FIG. 9B is a flow diagram of a host creating and executing a second write command in accordance with another embodiment of the present invention.
  • the free storage units in the buffer control block 406 are further organized into a pool of free storage units, To facilitate the creation process of DMA Descriptor 600.
  • the pool of free memory cells is formed by organizing the memory cells (411, 412, . . . , . . . , 41n) in the buffer control block 406 into a linked list.
  • the memory location can be fetched from the pool of free memory cells, thereby eliminating the overhead of looking up the free memory location in the buffer control block 406.
  • step 921 the host device's storage device driver 405 receives 10 requests.
  • the 10 request indicates that a plurality of data blocks dispersed at different physical addresses of the host memory are written into the storage device 102, for which a scatter-collect DMA operation is performed between the host and the storage device.
  • the length of the DM A descriptor (e.g., the number of DMA commands and the number of DMA data) corresponding to the same 10 request is calculated. It is noted that in the embodiment disclosed in FIG. 9A, the DMA descriptor length is obtained during the process of creating the DMA command 610 in step 904, and those skilled in the art will appreciate that the various steps are not necessarily performed in the order disclosed in this embodiment.
  • step 923 it is determined whether the free storage unit pool is empty. If the pool of free memory cells is not empty, i.e., there is a memory location in the buffer control block 406 that is in an idle state, then proceed to step 924 and a free memory location (e.g., memory location 411) is fetched from the pool of free memory cells. If the free storage unit pool is empty, it means that there are no free storage units in the buffer control block 406. Then, in step 925, the idle storage unit pool is waited for to appear an empty storage unit. When the execution of the DMA descriptor is completed, the associated memory cells are released, causing free memory cells to appear in the free memory cell pool. This will be described in detail later.
  • a free memory location e.g., memory location 4111
  • DMA Descriptor 600 includes a DMA command and one or more DMA data.
  • processing proceeds to step 927, and based on the contents of the 10 request, a DMA command 610 of the DM A descriptor 600 is created, populating the fields (611, 612, 613, 614) in the DMA command 610.
  • a pointer corresponding to the 10 request is also stored in the storage unit 411 so that after the execution of the 10 request is completed, the 10 request can be identified and notified to the application software or other upper layer software.
  • the processing proceeds to step 928, and based on the contents of the 10 request, the DMA data 620 of the DMA descriptor 600 is created, and the fields (621, 622) of the DMA data 620 are filled.
  • step 929 the generated DMA command or DMA data is transmitted to the storage device 102.
  • the storage unit 411 obtained in step 924 is set in the 10 request list 801.
  • the first storage unit that enters the 10 request list 801 will serve as the head node of the 10 request list 801, but it will also be appreciated that when the 10 request list 801 is organized as a circular list, it does not exist. Head node".
  • the DMA descriptor length is also decremented.
  • step 931 if the DMA descriptor length is 0, meaning that the generation of the DMA descriptor 600 has been completed, and in step 932 the storage device driver 405 will wait for the processing returned by the storage device 102 to indicate that the processing of the DM A descriptor 600 has been completed.
  • Interrupt and find the corresponding 10 request linked list 80 1 according to the interrupt, and release the storage unit (811, 812) in the 10 request linked list 801.
  • the state of the memory cells (811, 812) in the 10 request list 801 is set to idle, so that the state of the memory cells 411, 412 can be learned to be free by the buffer control block 406, and the memory cell 411 is , 412 is placed in the pool of free storage units.
  • the interrupt returned by the storage device 102 includes content indicating one of the plurality of storage units (811, 812) in the request list 80 1 , according to which the storage unit is accessed by the 10 request list 801 (811, 812) Released.
  • step 931 if the DMA descriptor length is greater than 0, it indicates the generation of the DMA descriptor 600. Not yet completed, one or more DMA data needs to be generated for the 10 request, then the process will return to step 92 3 and steps 923-931 will be repeated.
  • the generation process of the DMA descriptor 600 is described above in conjunction with Figs. 9A, 9B.
  • the DMA Descriptor 600 is used to describe a plurality of DMA operations to be performed in a Decentralized-Collected DMA, the data of which is derived from being stored in a continuous or unconnected storage space.
  • the manner in which the DMA descriptor 600 is generated includes, but is not limited to, the specific manners described above in Figures 9A, 9B.
  • FIG 10A is a flow diagram of creating a linked list in a buffer memory of a storage device, in accordance with an embodiment of the present invention.
  • the DMA Descriptor 600 is converted to one or more microinstructions.
  • storage device 102 is responsive to DMA descriptors transmitted by host 101. 600, also in the buffer memory 106, a linked list that associates multiple microinstructions corresponding to the same DMA descriptor 600.
  • DMA Descriptor 600 includes DMA commands 610 and DMA data 620, 630.
  • An example of the process by which host 101 transmits DMA descriptor 600 to storage device 102 has been previously described in connection with Figures 9A and 9B.
  • creating a linked list in the buffer memory of the storage device will facilitate storage device execution of 10 operations, particularly concurrent/out-of-order execution of multiple 10 operations, multiple access operations may be accessed by The linked list is linked together. Such 10 operations that do not have an associated relationship can be executed concurrently in the storage device.
  • step 1004 it is determined whether the DMA command 610 or the DMA data 620, 630 is received. If the DMA command 610 is received, in step 1006, the buffer memory address for the DMA command 610 is extracted from the buffer memory address field 610 therein, and based on the buffer memory address, the DMA command 610 is slowed down. The storage space is allocated in the flush memory 106. Next, in step 1008, the buffer memory address assigned to the DMA command 610 is saved for use in allocating buffer memory addresses for the DMA data 620, 630.
  • step 1010 the buffer memory address for the DMA data 620 is extracted from the buffer memory address field 622 of the D MA data 620, and based on the The memory address is allocated for the DMA data 620 in the buffer memory 106.
  • step 1012 the buffer memory address of the DMA command 610 held in step 1008 is stored in the memory space of the buffer memory allocated for the DMA data 620.
  • the storage space allocated for the DMA command 610 and the DMA data 620 forms a linked list, wherein the storage space allocated for the D MA command 610 is the head node of the linked list, which is allocated for the DMA data 620.
  • the storage space is connected to the head node of the linked list.
  • the storage space is allocated in the buffer memory 106 for the DMA data 630 based on the buffer memory address 632 in the DMA data 630 through the step 1010 and the step 1 012, and
  • the buffer memory address of the DMA command 610 is stored in the memory space of the buffer memory allocated for the DMA data 630.
  • the buffer memory address for DMA data 620 may also be stored in the memory space of buffer memory 106 allocated for DMA data 630 to form a different type of linked list.
  • the buffer memory 106 will be DMA.
  • the storage space allocated by the command 610, the DMA data 620, 630 is created as a circular linked list or a doubly linked list.
  • the memory device 102 generates DMA instructions based on the DMA data (620, 63 0 ) and is stored in the instruction FIFO 733.
  • the operation of the DMA data (620, 630) to generate the D MA i instruction may occur after step 1012 and carry the buffer memory address allocated for the DMA data (620, 630) in the DMA instruction.
  • Figure 10B is a flow diagram of creating a linked list in a buffer memory of a storage device, in accordance with an embodiment of the present invention.
  • information related to the processing or execution of the DMA descriptor is also stored in the created linked list.
  • Figure 10C is a flow diagram of a memory device executing a DMA Descriptor using a linked list created in a buffer memory, in accordance with an embodiment of the present invention.
  • Figures 11A-11F illustrate various states of the buffer memory associated with Figures 10B and 10C. In Figs. 11A-11F, 1100 indicates the storage space in the buffer memory 106.
  • step 1020 host 101 transmits DMA descriptor 600 to storage device 102.
  • step 1022 it is determined whether the DMA command 610 or the DMA data 620, 630 is received. If the DMA command 610 is received, in step 1024, the buffer memory address is extracted from the buffer memory address field 610, and based on the buffer memory address, the memory space is allocated in the buffer memory 106 for the DMA command 610. Referring to Figure 11A, memory space 1101 is allocated for DMA command 610.
  • the DMA Descriptor Length field 613 is also extracted from the D MA command 610, and the length of the DMA data portion of the DMA Descriptor 600 (e.g., the DMA Descriptor Length minus 1) is obtained from the DMA Descriptor Length 613.
  • the buffer memory address assigned to the DMA command 610 is saved for use in allocating buffer addresses for the DM A data 620, 630.
  • the length of the DMA data portion is recorded in the buffer memory allocated for the D MA command 610. Referring to Fig. 11A, the length of the DMA data portion is stored in the memory space 1101 (in this example, the length of the DMA data portion is 2).
  • step 1028 the buffer memory address for the DMA data 620 is extracted from the buffer memory address field 622 of the D MA data 620, and based on the The memory address is allocated for the DMA data 620 in the buffer memory 106. Referring to Figure 11B, memory space 1112 is allocated for DMA data 620. And in step 1030, the buffer memory address of the DMA command 610 saved in step 1026 is stored in the memory space 1112 of the buffer memory allocated for the DMA data 620.
  • the storage spaces (1101 and 1112) allocated for the DMA command 6 10 and the DMA data 620 form a linked list, wherein the storage space 1101 allocated for the DMA command 610 is the head node of the linked list, The storage space 1112 allocated by the DMA data 620 is connected to the head node of the linked list.
  • the DMA host address corresponding to the DMA data 620 is also stored in the storage space 1112.
  • the storage space 1123 is allocated in the buffer memory 106 for the DMA data 630 based on the buffer memory address 632 in the DMA data 630 by step 1028 and step 1 030 (see Fig. 11C), and in the storage space 1123, the buffer memory address of the DMA command 61 0 is saved. And the DM A host address corresponding to the DMA data 630 is also stored in the storage space 1123.
  • a linked list corresponding to the DMA descriptor 600 is formed in the buffer memory 106, wherein the storage space 1101 is the head node of the linked list, and the storage spaces 1112 and 1123 are nodes of the linked list and point to the head node of the linked list.
  • buffers allocated for DMA data 630 may also be stored.
  • the buffer memory addresses for the DMA data 620 are saved, thereby forming different types of linked lists.
  • the storage space allocated to the DMA command 610, DMA data 620, 630 in the buffer memory 106 is created as a circular linked list or a doubly linked list.
  • FIG 10C is a flow diagram of a memory device executing a DMA Descriptor using a linked list created in a buffer memory, in accordance with an embodiment of the present invention. It has been described above in connection with Figures 7A, 7B, 7C that memory device 102 generates DMA microinstructions based on DMA data (620, 630) and is stored in microinstruction FIFO 733. In the execution of the DMA microinstruction by the storage device 102, in one example, the linked list in the buffer memory 106 is utilized.
  • the DMA microinstruction includes a buffer memory address by which a storage space in the buffer memory 106 allocated to the DMA data corresponding to the DMA microinstruction can be obtained, and the DMA can be obtained.
  • the DMA microinstruction corresponding to the DMA data 620 is indicated by the first DMA microinstruction, and the DMA instruction corresponding to the DMA data 630 is indicated by the second DMA instruction.
  • the first DMA instruction is obtained from the ⁇ : instruction FIF0733.
  • step 1042 the address of the memory space 1112 of the buffer memory 106 allocated for the DMA data 620 is included in the first DMA microinstruction, and the DMA host address is obtained from the storage space 1112.
  • the DMA host address is provided by the DMA Host Address field 621 in DMA Data 620.
  • DMA transfer is performed between the host 101 and the storage device 102, and data of a predetermined length (for example, 4 KB) at the DMA host address of the host 101 is transferred to the buffer memory of the storage device 102 in a DMA manner. in.
  • a similar operation is performed to transfer the data at the DMA host address provided by the DMA host address field 632 of the DMA data 630 of the host 101 to the buffer memory of the storage device 102 in DMA mode.
  • Fig. 1 1D the storage space 1112 and the storage space 1123 in which data transferred in the DMA mode is stored after the execution of the first DMA microinstruction and the second DMA microinstruction are shown.
  • the execution of the first DM A microinstruction continues.
  • a predetermined length of data is fetched from the storage space by the address of the storage space 1112 in the first DMA microinstruction, and the data is transferred from the host 101 to the storage space 1112 of the buffer memory 106 by the DMA operation in step 1042.
  • the data is written to the flash chip 105 based on the address for the flash memory included in the first DMA microinstruction via a flash interface controller (e.g., the Flash interface controller 737 in Fig. 7C).
  • the address for the flash memory is obtained by the storage device logical address field 612 in the DMA command 610.
  • the second DMA microinstruction is executed in a similar manner.
  • the address is written to the flash chip 105.
  • the address for the flash memory included in the second DMA microinstruction is added by a storage device logical address field 612 in the DMA command 610 to a predetermined value (e.g., the length of the data corresponding to the DMA transfer, in this example, 4KB) obtained.
  • the storage device logical address in DMA command 610 is translated to the physical address of the storage device and data is written to flash memory chip 105 based on the physical address.
  • the mapping process from the logical address of the storage device to the physical address is well known to those skilled in the art.
  • execution of the first DM A microinstruction continues. Obtaining the address of the storage space 1101 allocated for the DMA command 610 by the address of the storage space 1112 in the first DMA microinstruction, and The DMA data portion length is obtained in the storage space 1101, and the DMA data portion length stored in the storage 1101 is decremented (for example, minus 1 or minus the unit length). Referring to Fig. 11E, for the first DMA microinstruction, after the length of the DMA data portion in the memory space 1101 is decremented, its value is changed from 2 to 1. Also, the address of the storage space 1101 is no longer stored in the storage space 1112 for indicating that the execution of the DMA data 620 has been completed. At step 1048, since the length of the DMA data portion is not 0, it means that the operation on the DMA descriptor 600 has not been completed because it also contains another DMA data 630, at which time no further processing is performed.
  • the address of the storage space 1101 allocated for the DMA command 610 is obtained by the address of the storage space 1123 in the second DMA microinstruction, and the DMA data is obtained in the storage space 1101.
  • the partial length, and the length of the DMA data portion stored in the storage 1101 is decremented (for example, minus 1 or minus the unit length).
  • the length of the DMA data portion in the memory space 1101 is decremented, and its value is changed from 1 to 0.
  • the address of the storage space 1101 is no longer stored in the storage space 1 123, indicating that the execution of the DMA data 630 has been completed.
  • step 1048 since the length of the DMA data portion is 0, it means that the execution of the DMA descriptor 600 has been completed.
  • step 1050 an interrupt is sent to the host 101 to indicate that execution of the DMA description 600 has been completed.
  • the storage spaces 1112 and 1123 no longer hold the address of the storage space 1101.
  • the value of the length of the DMA data portion in the storage space 1101 is 0. In this case, it means that the execution of the DMA descriptor 600 has been completed, and the storage spaces 1101, 1112, and 1123 are no longer used, and these storage spaces can be freed for execution of other DMA descriptors.
  • the release and reuse of the respective memory space is controlled by the host 101, and the release of the memory space in the linked list 801 has been described above in connection with Figures 9A and 9B.
  • the release of the storage space in the request list 801 means that Release of storage spaces 1101, 1112, and 1123 in the buffer memory.
  • the scheme of storing the DMA host addresses corresponding to the first and second instructions in the buffer memory 106 is described above with reference to FIGS. 10B, 10C, 11A-11F, so that the DMA ⁇ instruction does not have to carry the DMA host address.
  • the use of circuit resources is reduced and the first and second DMA microinstructions corresponding to the same DMA descriptor 600 are associated together by buffer memory 106.
  • storage device logical addresses and/or DMA host addresses corresponding to the first and second microinstructions may also be stored in the buffer memory, thereby further reducing the length of the DMA microinstructions and their The occupation of resources.
  • FIG. 12 is a hardware block diagram of a memory device in accordance with yet another embodiment of the present invention.
  • the host 101 includes a PCIE controller 721 and a host memory 722.
  • the storage device 102 includes a PC IE interface 731, a DMA command analyzer 732, an instruction first in first out buffer (FIFO) 733, a DMA write operation controller 734, a DMA write interface 735, a logical address to physical address conversion circuit 736, and a buffer.
  • the memory 106 is flushed.
  • the storage device 102 further includes a DMA read/write micro-instruction determining circuit 1210, a DMA read interface 1212, flash controllers 1221, 1222, 1223, flash interfaces 1231, 1232, 1233, a completion control circuit 1242, a multiplexer 1241, and a multi-channel. Sharer 1243.
  • the flash interfaces 1231, 1232, 1233 are integrated with the flash chip 105.
  • the PCIE interface 731 receives the DMA descriptor 600 transmitted by the host 101 through the PCIE controller 721.
  • the connection between the host 101 and the storage device 102 is not limited to the PCIE mode.
  • the DMA command analyzer 732 converts the DMA descriptor 600 received by the PCI E interface 731 into a DMA microinstruction.
  • the DMA instruction parser converts it into a first DMA microinstruction corresponding to DMA data 620 and a second DMA microinstruction corresponding to DMA data 630.
  • the first and second DMA microinstructions respectively include a field indicating the microinstruction type (read/write/erase/other), and a field indicating the address of the storage unit in the buffer memory 106 corresponding thereto. , a field indicating the logical address of the storage device.
  • DMA command analyzer 732 also allocates memory locations in buffer memory 106 for DMA commands 610 and stores therein the length of the DMA data portion.
  • the DMA instruction analyzer also allocates memory locations in buffer memory 106 for DMA data 620, stores therein the address of the memory location allocated by DMA command 610, and stores the DMA host address in DMA data 620.
  • the DMA instruction parser also allocates memory locations in buffer memory 106 for DMA data 630, stores therein the address of the memory location allocated for DMA command 610, and stores the D MA host address in DMA data 630.
  • the DMA command analyzer 732 stores the first DMA instruction and the second DMA ⁇ : instruction in the ⁇ : instruction F IFO 733.
  • the microinstruction FIFO 733 is capable of buffering DMA microinstructions and providing DMA microinstructions to the DMA read and write microinstruction decision circuit 1210 in a first in first out manner.
  • DMA read/write ⁇ instruction judging circuit 1210, the type of the obtained DMA instruction is judged.
  • DMA write operation controller 734 performs DMA write operations based on these DMA microinstructions.
  • the D MA write operation controller 734 obtains the DMA host address from the buffer memory 106 using the field in the first DMA microinstruction indicating the address of the memory cell in its corresponding buffer memory 106, and is passed through the DMA write interface 735.
  • a DMA write operation is initiated between the host 101 and the storage device 102, and the data stored in the DMA host address is transferred to the storage unit of the buffer memory 106 corresponding to the first DMA microinstruction, and the transmitted data may have a predetermined schedule.
  • the length (for example 4K bytes).
  • the DMA write operation controller 734 obtains the DMA host address from the buffer memory 106 using the field of the address of the memory cell in its corresponding buffer memory 106, and is at the host 101 and the storage device 102.
  • a DMA write operation is initiated to transfer the data stored in the DMA host address to the memory location of the buffer memory 106 corresponding to the second DMA microinstruction.
  • a logical address for the respective storage device is obtained from fields of the first DMA microinstruction and the second DMA microinstruction indicating the logical address of the storage device.
  • the logical address of the storage device of each D MA microinstruction is converted to the physical address for the flash memory chip 105.
  • the Flash controllers 1221, 1222, 1223 will write the data written to the buffer memory 106 via the flash interfaces 1231, 1232, 1233 based on the physical address provided by the physical address to physical address translation circuit 73 6 .
  • the flash controller 1221 is coupled to the flash interface 1231
  • the flash controller 1222 is coupled to the flash interface 1232
  • the flash controller 1223 is coupled to the flash interface 1233.
  • the flash interfaces 1231, 1232, 1233 are each coupled to a respective flash chip.
  • the physical address indicates a particular flash chip
  • the flash chip is associated with a particular one of the flash interfaces 1231, 1232, 1233 Coupling.
  • the flash interfaces 1231, 1232, 1233 are also coupled to the buffer memory by a multiplexer 1241. Based on the object The multiplexer 1241 transfers data from the buffer memory 106 to a particular one of the flash interfaces 1231, 1232, 1233.
  • the completion control circuit 1242 After the flash interfaces 1231, 1232, 1233 write data into the flash chip 105, the completion control circuit 1242 also determines a field based on the address of the memory cell in the buffer memory 106 corresponding thereto in the first and second microinstructions. Accessing the buffer memory 106, and in turn accessing the memory locations allocated to the DMA command 610 in the buffer memory, obtaining the length of the DMA data portion therefrom, and decrementing the length of the DMA data portion (eg, subtracting 1 or subtracting the unit length) ). Thus, when the length of the DMA data portion in the memory location allocated for the DMA command 610 becomes 0, it means that the operation on the DMA descriptor 600 is completed. In turn, an interrupt can be sent to the host to indicate completion of the operation of the DMA Descriptor 600.
  • Flash controllers 1221, 1222, 1223 and three flash interfaces 1231, 1232, 1233 are illustrated by way of example in FIG. 12, those skilled in the art will recognize that a variety of different amounts of Flash can be used.
  • the controller interfaces with the flash memory to match the number of flash memory chips.
  • the DMA read/write ⁇ : instruction judging circuit 1210 transfers it directly to the logical address to the physical address conversion circuit 736, and obtains the physical address for the flash chip 105.
  • Flash controllers 1221, 1222, 1223 read data from flash memory chip 105 via flash interfaces 1231, 1232, 1 233 based on the physical address.
  • a DMA transfer is initiated between the host 101 and the storage device 102, and the read data is transferred to the host RAM 722 of the host 101 at the location indicated by the DMA host address.
  • the flash interfaces 1231, 1232, 1233 are coupled to the DMA read interface 1212 via the multiplexer 1243 such that data obtained from the flash interfaces 1231, 1232, 1233 can be transferred to the host RAM 722 via the DMA read interface 1212.
  • the completion control circuit 1242 After the flash interfaces 1231, 1232, 1233 read data from the flash chip 105, the completion control circuit 1242 also accesses the buffer memory based on the field of the address of the memory cell in the buffer memory 106 corresponding thereto in the DMA microinstruction. 106, and in turn obtain the length of the DMA data portion, and decrement the length of the DMA data portion (eg, minus 1 or minus the unit length). Thus, when the length of the DMA data portion becomes 0, it means that the operation of the DMA descriptor is completed. In turn, an interrupt can be sent to the host to indicate that the operation of the DMA descriptor is complete.
  • DMA data corresponding to one DMA descriptor 600 is associated by a linked list created in the buffer memory 106, so that the operation sequence for the plurality of DMA instructions becomes not important.
  • the storage device can also perform read operations from the present disclosure.
  • the flash chip address and the buffer memory address can be specified in the read command, and the buffer memory can be used as a buffer for reading data.
  • the buffer memory address can also be described in the DMA descriptor associated with the read operation, and after the data is read from the flash chip, the buffer memory can be utilized as a buffer for reading the data.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Bus Control (AREA)

Abstract

提供了将数据写入存储设备的方法与存储设备。所述存储设备包括緩冲存储器和闪存存储器,所述存储设备与主机可通信地连接,所述方法包括:从主机接收第一写入命令,所述第一写入命令包括要写入的数据、用于所述闪存存储器的地址以及用于所述緩冲存储器的地址;基于所述用于所述緩冲存储器的地址,将所述要写入的数据写入到所述緩冲存储器;基于用于所述闪存存储器的地址和用于所述緩冲存储器的地址,将所述緩冲存储器中的所述要写入的数据,写入到所述闪存存储器。

Description

将数据写入存储设备的方法与存储设备
技术领域
本发明涉及固态存储设备( Solid Storage Device, SSD ) , 更具体地, 本发明涉 及将数据写入固态存储设备中的随机访问存储器的方法及装置。
背景技术
同机械式硬盘相类似, 固态存储设备( SSD )也是用于计算机系统的大容量、 非 易失性存储设备。 固态存储设备一般以闪存(Flash )作为存储介质。 在中国专利文献 CN102043689A中公开了如图 13所示的固态存储设备。 如图 13所示, 为目前一般的 固态存储设备的功能框图。 其中主要包括主机系统 1301 和固态存储设备 1302。 其 中, 固态存储设备 1302 包括接口模块 1303 , 固态存储处理器 1304, 以及以 Flash 颗粒 1305为单位组成的 Flash 阵列 1306。 其中, 接口模块 1303 主要用于实现与 主机系统一致的接口十办议, 例如 SATA ( Serial Advanced Technology Attachment , 串行高级技术附件) 、 USB ( Universal Serial Bus , 通用串行总线) 、 PCIE ( Periphe ral Component Interconnect Express , †央速夕卜围组件互连) 、 SCSI ( Small Computer System Interface , 小型计算机系统接口) 、 IDE ( Integrated Drive Electronics , 集成 驱动器电子)等。 通过接口模块 1303 , 固态存储设备呈现给主机系统的是一个拥有一 定逻辑空间的标准存储设备。 固态存储处理器 1304是整个存储设备的控制核心, 主 要负责接口模块 1303 以及闪存阵列 1306之间的控制信号及数据的传输、 Flash管理、 主机逻辑地址到 Flash 物理地址的转换或映射、损耗均衡(将逻辑地址映射到不同的 物理地址从而防止单个 Flash被过于集中地操作而提前失效) 、 坏块管理等。 可由软 件、 硬件、 固件或者其组合的多种方式实现固态存储处理器 1304。 1305为单个 Flash 颗粒, 多个 Flash 颗粒 1305组成 Flash 阵列 1306。
为提高固态存储设备的读、 写速度, 可以在固态存储设备中设置诸如 DRAM或 SRAM的随机访问存储器或其他类型的适于高速读 /写操作的存储器, 作为同闪存读 写数据时的高速緩冲存储器。 在存储设备访问过程中, 作为一个例子, 计算机向存储 设备发出 SCSI (小型计算机系统接口)命令, 存储设备接收并处理 SCSI命令, 依据 SCSI命令所指示的操作执行相应的存储介质读写过程。 在这一过程中, SCSI命令并 不直接操作高速緩冲存储器。 即, 高速緩冲存储器对计算机或者用户是 "透明" 的。 也有一些存储设备提供了高速緩冲存储器的 "清洗" 机制, 计算机或用户可使用预定 的命令强制存储设备将高速緩冲存储器中的数据写入到非易失性存储介质(例如, 磁 盘或者闪存) 中。
然而, 对高速緩冲存储器的分配和管理将成为固态存储设备上的控制器的工作 负担。 而且当高速緩冲存储器被完全占用后, 如果固态存储设备接收到来自主机系统 的新的访问请求, 则还需要执行对高速緩冲存储器的替换操作。 这样既增加了控制器 的复杂度, 又会让主机经历在读 /写性能上的颠簸。
在主机与设备之间还可以进行 DMA ( Direct Memory Access , 直接存储器访问) 传输。 在中国专利文献 CN101221544A中公开了执行 DMA传输的方法和设备。 DMA 传输的一个典型过程是分散 /收集 (Scatter/Gather ) 操作。 分散 /收集操作中, 待传输 的多个数据块存储在系统(主机)存储器的不连续的多个地址位置。 处理器不需要为 要从某一源移动到某一目的地的每个数据块对 DMA控制器进行编程的操作。 而是, 处理器在系统存储器中建立描述符表或描述符链接表。描述符表或描述符链接表中包 括一组描述符。 每个描述符都描述了数据块移动方向、 源地址、 目的地地址以及可选 的传输的字节数。 在一个描述符中不包括传输字节数的情况下, 可通过 DMA方式传 输约定长度的数据。
发明内容
因而, 分担存储设备上的控制器的工作负担是有益的。 通过将与存储设备的緩 冲存储器有关的维护工作转移给主机, 既减轻了存储设备的控制器的负载, 也向主机 提供了更灵活控制存储设备的能力。
在本发明的一个实施例中, 提供了一种将数据写入存储设备的方法, 所述存储 设备包括緩冲存储器和闪存存储器, 所述存储设备与信息处理设备可通信地连接, 所 述方法包括:
从信息处理设备接收第一 DMA描述符, 所述 DMA描述符包括用于所述信息处 理设备的地址、 用于所述闪存存储器的地址以及用于所述緩冲存储器的地址;
当所述第一 DMA描述符指示 DMA写操作时, 基于用于所述信息处理设备的地 址和用于所述緩冲存储器的地址, 以 DMA传输方式从所述信息处理设备将第一数据 写入到所述緩冲存储器;
基于用于所述闪存存储器的地址和用于所述緩冲存储器的地址, 将所述緩冲存 储器中的所述第一数据, 写入到所述闪存存储器。
根据本发明的第一实施例, 其中所述第一 DMA描述符包括第一 DMA描述符命 令和第一 DMA描述符数据, 所述第一 DMA描述符数据包括用于所述信息处理设备 的地址和用于所述緩冲存储器的地址, 所述 DMA描述符命令包括用于所述闪存存储 器的地址; 所述方法还包括:
将所述第一 DMA描述符数据变换为第一 DMA微指令, 所述第一 DMA微指令 指示用于所述闪存存储器的地址、用于所述信息处理设备的地址以及用于所述緩冲存 储器的地址;
其中, 当所述第一 DMA微指令指示 DMA写操作时, 基于用于所述信息处理设 备的地址和用于所述緩冲存储器的地址, 以 DMA传输方式从所述信息处理设备将第 一数据写入到所述緩冲存储器;
基于用于所述闪存存储器的地址和用于所述緩冲存储器的地址, 将所述緩冲存 储器中的所述第一数据, 写入到所述闪存存储器。
根据本发明的第一实施例, 其中所述第一 DMA描述符包括第一 DMA描述符命 令、 第一 DMA描述符数据以及第二 DMA描述符数据, 所述第一 DMA描述符数据 包括第一用于所述信息处理设备的地址和第一用于所述緩冲存储器的地址, 所述第二 DMA描述符数据包括第二用于所述信息处理设备的地址和第二用于所述緩冲存储器 的地址, 所述 DMA描述符命令包括用于所述闪存存储器的地址; 所述方法还包括: 将所述第一 DMA描述符数据变换为第一 DMA ^敫指令, 将所述第二 DMA描述 符数据变换为第二 DMA微指令, 所述第一 DMA微指令指示第一用于所述闪存存储 器的地址、 第一用于所述信息处理设备的地址以及第一用于所述緩冲存储器的地址, 所述第二 DMA微指令指示第二用于所述闪存存储器的地址、 第二用于所述信息处理 设备的地址以及第二用于所述緩冲存储器的地址, 其中所述第二闪存存储器地址与所 述第一闪存存储器地址相距预定偏移值;
其中, 当所述第一 DMA微指令指示 DMA写操作时, 基于第一用于所述信息处 理设备的地址和第一用于所述緩冲存储器的地址, 以 DMA传输方式从所述信息处理 设备将第一数据写入到所述緩冲存储器; 当所述第二 DMA微指令指示 DMA写操作 时, 基于第二用于所述信息处理设备的地址和第二用于所述緩冲存储器的地址, 以 D MA传输方式从所述信息处理设备将第二数据写入到所述緩冲存储器;
基于第一用于所述闪存存储器的地址和第一用于所述緩冲存储器的地址, 将所 述緩冲存储器中的所述第一数据, 写入到所述闪存存储器; 基于第二用于所述闪存存 储器的地址和第二用于所述緩冲存储器的地址, 将所述緩冲存储器中的所述第二数 据, 写入到所述闪存存储器。
根据本发明的第一实施例, 其中: 当将所述第一数据写入到所述闪存存储器之 后, 向所述信息处理设备发送消息, 以指示对同所述用于所述緩冲存储器的地址的相 对应的所述緩冲存储器的存储空间的释放。
根据本发明的第一实施例, 其中: 当将所述第一数据写入到所述緩冲存储器之 后, 向所述信息处理设备发送消息, 以指示对所述第一 DMA描述符的操作完成。
根据本发明的第一实施例, 其中: 当将所述第一数据写入到所述闪存存储器之 后, 向所述信息处理设备发送消息, 以指示对所述第一 DMA描述符的操作完成, 以 及指示对同所述用于所述緩冲存储器的地址的相对应的所述緩冲存储器的存储空间 的释放。
在本发明的第二实施例中提供了一种存储设备, 所述存储设备包括緩冲存储器、 闪存存储器、 信息处理设备接口以及控制电路, 所述存储设备与信息处理设备可通信 地连接, 其中:
所述信息处理设备接口从信息处理设备接收第一 DMA描述符, 所述 DMA描述 符包括用于所述信息处理设备的地址、用于所述闪存存储器的地址以及用于所述緩冲 存储器的地址;
当所述控制电路识别出所述第一 DMA描述符指示 DMA写操作时, 基于用于所 述信息处理设备的地址和用于所述緩冲存储器的地址, 以 DMA传输方式从所述信息 处理设备将第一数据写入到所述緩冲存储器;
所述控制电路基于用于所述闪存存储器的地址和用于所述緩冲存储器的地址, 将所述緩冲存储器中的所述第一数据, 写入到所述闪存存储器。
根据根据本发明的第二实施例, 其中当将所述第一数据写入到所述闪存存储器 之后, 所述控制电路还向所述信息处理设备发送消息, 以指示对同所述用于所述緩冲 存储器的地址的相对应的所述緩冲存储器的存储空间的释放。
根据根据本发明的第二实施例, 其中当将所述第一数据写入到所述緩冲存储器 之后, 所述控制电路还向所述信息处理设备发送消息, 以指示对所述第一 DMA描述 符的操作完成。
#居 #居本发明的第二实施例, 其中所述第一 DMA描述符包括第一 DMA描述 符命令和第一 DMA描述符数据, 所述第一 DMA描述符数据包括用于所述信息处理 设备的地址和用于所述緩冲存储器的地址, 所述 DMA描述符命令包括用于所述闪存 存储器的地址; 所述存储设备还包括 DMA指令分析器、 DMA写操作控制器和闪存 接口控制器:
所述 DMA指令分析器,将所述第一 DMA描述符数据变换为第一 DMA 指令, 所述第一 DMA微指令指示用于所述闪存存储器的地址、 用于所述信息处理设备的地 址以及用于所述緩冲存储器的地址;
其中, 当所述第一 DMA 指令指示 DMA写操作时, 所述 DMA写操作控制器 基于用于所述信息处理设备的地址和用于所述緩冲存储器的地址, 以 DMA传输方式 从所述信息处理设备将第一数据写入到所述緩冲存储器;
所述闪存接口控制器基于用于所述闪存存储器的地址和用于所述緩冲存储器的 地址, 将所述緩冲存储器中的所述第一数据, 写入到所述闪存存储器。
#居 #居本发明的第二实施例, 其中所述第一 DMA描述符包括第一 DMA描述 符命令、 第一 DMA描述符数据以及第二 DMA描述符数据, 所述第一 DMA描述符 数据包括第一用于所述信息处理设备的地址和第一用于所述緩冲存储器的地址, 所述 第二 DMA描述符数据包括第二用于所述信息处理设备的地址和第二用于所述緩冲存 储器的地址, 所述 DMA描述符命令包括用于所述闪存存储器的地址; 所述存储设备 还包括 DMA指令分析器、 DMA写操作控制器和闪存接口控制器:
所述 DMA指令分析器将所述第一 DMA描述符数据变换为第一 DMA 指令, 将所述第二 DMA描述符数据变换为第二 DMA ^敫指令, 所述第一 DMA ^敫指令指示 第一用于所述闪存存储器的地址、 第一用于所述信息处理设备的地址以及第一用于所 述緩冲存储器的地址, 所述第二 DMA微指令指示第二用于所述闪存存储器的地址、 第二用于所述信息处理设备的地址以及第二用于所述緩冲存储器的地址, 其中所述第 二闪存存储器地址与所述第一闪存存储器地址相距预定偏移值;
其中, 当所述第一 DMA 指令指示 DMA写操作时, 所述 DMA写操作控制器 基于第一用于所述信息处理设备的地址和第一用于所述緩冲存储器的地址, 以 DMA 传输方式从所述信息处理设备将第一数据写入到所述緩冲存储器; 当所述第二 DMA 微指令指示 DMA写操作时, 所述 DMA写操作控制器基于第二用于所述信息处理设 备的地址和第二用于所述緩冲存储器的地址, 以 DMA传输方式从所述信息处理设备 将第二数据写入到所述緩冲存储器;
所述闪存接口控制器基于第一用于所述闪存存储器的地址和第一用于所述緩冲 存储器的地址, 将所述緩冲存储器中的所述第一数据, 写入到所述闪存存储器; 基于 第二用于所述闪存存储器的地址和第二用于所述緩冲存储器的地址, 将所述緩冲存储 器中的所述第二数据, 写入到所述闪存存储器。
根据根据本发明的第二实施例, 其中当将所述第一数据与所述第二数据写入到 所述闪存存储器之后, 所述控制电路还向所述信息处理设备发送中断, 以指示对同所 述第一用于所述緩冲存储器的地址和所述第二用于所述緩冲存储器的地址的相对应 的所述緩冲存储器的存储空间的释放,以及指示对所述第一 DM A描述符的操作完成。
在本发明的第三实施例中, 提供了一种将数据写入存储设备的方法, 所述存储 设备包括緩冲存储器和闪存存储器, 所述存储设备与信息处理设备可通信地连接, 所 述方法包括: 从信息处理设备接收第一写入命令, 所述第一写入命令包括要写入的数据、 用 于所述闪存存储器的地址以及用于所述緩冲存储器的地址;
基于所述用于所述緩冲存储器的地址, 将所述要写入的数据写入到所述緩冲存 储器;
基于用于所述闪存存储器的地址和用于所述緩冲存储器的地址, 将所述緩冲存 储器中的所述要写入的数据, 写入到所述闪存存储器。
根据本发明的第三实施例, 其中将所述要写入的数据写入到所述緩冲存储器后, 向所述信息处理设备发送消息, 以指示对所述第一写入命令的操作完成。
根据本发明的第三实施例, 其中当将所述要写入的数据写入到所述闪存存储器 之后, 向所述信息处理设备发送消息, 以指示对同所述用于所述緩冲存储器的地址的 相对应的所述緩冲存储器的存储空间的释放。
根据本发明的第三实施例, 其中将所述要写入的数据写入到所述闪存存储器后, 向所述信息处理设备发送消息, 以指示对所述第一写入命令的操作完成以及对同所述 用于所述緩冲存储器的地址的相对应的所述緩冲存储器的存储空间的释放。
在本发明的第四实施例中提供了一种存储设备, 所述存储设备包括緩冲存储器、 闪存存储器、 信息处理设备接口以及控制电路, 所述存储设备与信息处理设备可通信 地连接, 其中:
所述信息处理设备接口从信息处理设备接收第一写入命令, 第一写入命令包括 要写入的数据、 用于所述闪存存储器的地址以及用于所述緩冲存储器的地址;
所述控制电路基于所述用于所述緩冲存储器的地址, 将所述要写入的数据写入 到所述緩冲存储器;
所述控制电路基于用于所述闪存存储器的地址和用于所述緩冲存储器的地址, 将所述緩冲存储器中的所述要写入的数据, 写入到所述闪存存储器。
根据本发明的第四实施例, 其中当将所述要写入的数据写入到所述緩冲存储器 后, 所述控制电路还向所述信息处理设备发送消息, 以指示对所述第一写入命令的操 作完成。
根据本发明的第四实施例, 其中当将所述要写入的数据写入到所述闪存存储器 之后, 所述控制电路还向所述信息处理设备发送消息, 以指示对同所述用于所述緩冲 存储器的地址的相对应的所述緩冲存储器的存储空间的释放。
根据本发明的第四实施例, 其中将所述要写入的数据写入到所述闪存存储器后, 所述控制电路还向所述信息处理设备发送消息, 以指示对所述第一写入命令的操作完 成以及对同所述用于所述緩冲存储器的地址的相对应的所述緩冲存储器的存储空间 的释放。
附图说明
当连同附图阅读时, 通过参考后面对示出性的实施例的详细描述, 将最佳地理 解本发明以及优选的使用模式和其进一步的目的和优点, 其中附图包括:
图 1是根据本发明实施例的存储设备的结构框图;
图 2A、 2B是根据本发明实施例的写入命令的示意图;
图 3是根据本发明实施例的存储设备执行写入命令的方法的流程图;
图 4是根据本发明实施例的主机的示意图; 图 5是根据本发明实施例的主机执行写入操作的流程图;
图 6是根据本发明实施例的第二写入命令的示意图;
图 7 A、 7B是根据本发明实施例的存储设备执行第二写入命令的流程图; 图 7C中展示了用于实施图 7A、 7B中的执行第二写入命令的存储设备的硬件方 框图;
图 8是根据本发明实施例的主机的软件方框图;
图 9 A是根据本发明实施例的主机创建并执行第二写入命令的流程图; 图 9B是根据本发明另一实施例的主机创建并执行第二写入命令的流程图; 图 10A是根据本发明的一实施例的在存储设备的緩冲存储器中创建链表的流程 图;
图 10B是根据本发明的一实施例的在存储设备的緩冲存储器中创建链表的流程 图;
图 10C是根据本发明的一实施例的存储设备利用在緩冲存储器中创建的链表执 行 DMA描述符的流程图;
图 11A-11F展示出了与图 10B、 图 10C相关联的緩冲存储器的多种状态; 图 12是根据本发明的又一实施例的存储设备的硬件方框图;
图 13是现有技术中的固态存储设备的框图。
具体实施方式
图 1是根据本发明实施例的存储设备的结构框图。 如图 1所示的实施例包括主 机 101以及同主机 101相耦合的存储设备 102。 主机 101同存储设备 102之间可通过 多种方式相耦合, 耦合方式包括但不限于通过例如 SATA、 IDE, USB、 PCIE、 SCSI, 以太网、 光纤通道、 无线通信网络等连接主机 101与存储设备 102。 主机 101可以是 能够通过上述方式同存储设备相通信的信息处理设备, 例如, 个人计算机、平板电脑、 服务器、 便携式计算机、 网络交换机、 路由器、 蜂窝电话、 个人数字助理等。 存储设 备 102包括主机接口 103、控制电路 104、 一个或多个闪存芯片 105以及緩冲存储器 1 06。 主机接口 103可适配于通过例如 SATA、 IDE, USB、 PCIE、 SCSI, 以太网、 光 纤通道等方式与主机 101交换数据。 控制电路 104用于控制在主机接口 103、 闪存芯 片 105以及緩冲存储器 106之间的数据传输, 还用于闪存管理、 主机逻辑地址到闪存 物理地址映射、 擦除均衡、 坏块管理等。 可通过软件、 硬件、 固件或其组合的多种方 式实现控制电路 104。 控制电路 104可以是 FPGA ( Field-programmable gate array, 现场可编程门阵列 ) 、 ASIC ( Application Specific Integrated Circuit , 应用专用集成 电路) 或者其组合的形式。 控制电路 104也可以包括处理器或者控制器。
根据本发明的一个实施例, 主机 101向存储设备 102发出读出命令或者写入命 令。 控制电路 104经由主机接口 103接收到该读出命令或写入命令。 在附图 2中详细 描述了作为例子的第一写入命令 200。
参看图 2A、 2B , 图 2A是根据本发明实施例的写入命令的示意图。 写入命令 20 0包括字段 201、 202、 203和 204。 字段 201指示该命令为写入命令, 字段 202为闪 存地址, 字段 203为数据, 该写入命令 200指示存储设备 102将数据字段 203中的数 据基于由字段 202所指示的闪存地址写入闪存芯片 105。字段 204为緩冲存储器地址, 存储设备 102接收到该写入命令 200时, 先将数据字段 203中的数据基于写入由字段 204所指示緩冲存储器地址写入緩冲存储器 106 , 再将数据字段 203中的数据基于由 字段 202所指示的闪存地址写入闪存芯片 105。 在一个例子中, 存储设备 102将数据 字段 203中的数据基于写入由字段 204所指示緩冲存储器地址写入緩冲存储器 106后, 再从緩冲存储器 106中读出该数据, 继而将该数据写入到闪存芯片 105。 将数据写入 到緩冲存储器 106的操作, 同将存储器 106中的另一数据读出并写入到闪存芯片 105 的操作可以并发执行, 从而使得主机 101向存储设备 102的写入操作的并发性能得到 提升, 并且不会显著增加控制电路 104的复杂度, 因为控制电路 104无需处理緩冲存 储器 106的空间分配任务。 在一个实施例中, 字段 204中可以是緩冲存储器 106的完 整地址, 而在另一个实施例中, 字段 204是相对某一基地址的偏移值。 在一个实施例 中, 字段 203中携带要写入闪存 105的数据。 而在另一个实施例中, 字段 203中可携 带一个指针, 该指针指向要写入存储设备 102的数据, 而该数据可以存储在主机 101 的存储器中, 在此情况下, 存储设备 102通过随后的 DMA传输过程从主机 101获得 该数据。 在依然另一个实施例中, 字段 203可携带一个指针, 该指针指向要写入存储 设备 102的数据, 而该数据可以存储在存储设备 102的緩冲存储器中。 字段 202可以 是要将数据写入的闪存芯片 105的物理地址或逻辑地址。字段 202也可以是一个指针, 指向緩冲存储器 106, 在其中存储有用于闪存芯片 105的物理地址或逻辑地址。 逻辑 地址到物理地址的转换过程, 可以通过查找地址映射表的方式实现。
所属领域技术人员将容易意识到, 写入命令可以具有多种具体编码方式和字段 顺序。 例如, 参看图 2B , 指示写入命令 210的类型是写操作的字段 214可以在写入 命令 210的末尾或者其他位置。 而在字段 211中携带緩冲存储器地址, 在字段 212中 携带数据或指向数据的存放位置的指针。 在字段 213中存放闪存地址, 或者指向存放 闪存地址的指针, 闪存地址可以是逻辑地址或物理地址。
图 3是根据本发明实施例的存储设备执行写入命令的方法的流程图。 在步骤 30 1 , 存储设备 102从主机 101接收到写入命令 200。存储设备 102的控制电路 104通过 主机接口 103接收到写入命令 200后, 提取出包含于写入命令 200中的用于指示操作 类型为写操作的字段 201 , 用于指示要写入的闪存的地址的字段 202, 用于指示要写 入的数据的字段 203 , 以及用于指示緩冲存储器 106的地址的字段 204。 在步骤 302, 响应于该写入命令 200,控制电路 104基于字段 204得到用于緩冲存储器 106的地址, 并基于字段 203得到要写入的数据, 以及将要写入的数据写入到緩冲存储器 106中由 字段 204所指示的位置。 当将数据写入到緩冲存储器 106中后, 存储设备 102可向主 机发送消息以指示写入命令 200的执行完成, 虽然数据此时尚未被实际写入到闪存芯 片 105之中。 以此方式, 在主机 101看来, 在步骤 302执行完成后, 写入命令 200已 经执行完成, 从而提升了存储设备 102的执行写入命令 200的性能。 向主机发送的消 息可以包含于存储设备 102向主机 101所发送的中断请求之中, 也可以基于主机 101 与存储设备 102之间的耦合方式 (SATA、 IDE, USB、 PCIE、 SCSI, 以太网、 光纤 通道、 无线通信网络等) 而选择适当的其他消息发送方式。 在将要写入的数据写入到 緩冲存储器 106之后, 在控制电路 104的控制下, 将由字段 203所指示的要写入的数 据, 基于由字段 202所指示的闪存地址, 写入到闪存芯片 105中 (步骤 303 ) 。 当将 数据写入到闪存芯片 105中后, 存储设备 102也可向主机发送消息以指示写入命令 2 00的执行完成,特别地, 此时主机可以在写入命令 200中再次指定将数据写入该用于 指示緩冲存储器 106的地址, 而不会因对该地址处的数据的重写而导致数据错误。 在 一个例子中, 如果字段 202所指示的是用于闪存芯片 105的逻辑地址, 则将该逻辑地 址转换为用于闪存芯片 105的物理地址。逻辑地址到物理地址的转换方式是所属领域 技术人员所了解的。 在一个例子中, 在步骤 303 , 从緩冲存储器 106中重新取得所写 入的数据, 并将该数据写入到闪存芯片 105。 所属领域技术人员将意识到, 在控制电 路 104的控制下, 步骤 302中将数据写入到緩冲存储器 106的操作, 与步骤 303中将 数据写入到闪存存储器 105的操作, 可以并行执行。 这样, 在存储设备 102中可以同 时处理多个写入命令, 其中, 在一个时刻, 基于一个写入命令, 控制电路 104将第一 数据写入到緩冲存储器 106中; 而基于另一个写入命令, 控制电路 104将存在于緩冲 存储器 106中的第二数据写入到闪存芯片 105中。緩冲存储器 106可以是双端口存储 器, 使得在经由第一端口向緩冲存储器 106写入第一数据的同时, 可以从第二端口从 緩冲存储器 106读出第二数据。 所属领域技术人员可意识到緩冲存储器 106的其他实 施方式, 以支持对多份数据的同时读出和 /或写入操作。
通过在写入命令中携带用于指示緩冲存储器 106的地址的字段 204,将维护緩冲 存储器 106的工作从控制电路 104移除了, 并且使主机 101拥有了更灵活控制存储设 备 102的能力。
图 4是根据本发明实施例的主机的示意图。 图 4是示出了主机 400的软件组成 的方框图。主机 400可以是个人计算机、服务器计算机或者其他具有计算能力的设备。 主机 400包括一个或多个用户应用程序 401、 402和 403 , 以及操作系统 404。 操作系 统 404中具有存储设备驱动程序 405。 在根据本发明的实施例中, 驱动程序 405中包 括緩冲区控制块 406, 用以在主机 400中控制存储设备 102的緩冲存储器 106。 緩冲 区控制块 406由多个存储单元 (411、 412…… 41η ) 组成, 緩冲区控制块 406中的每 个存储单元 (411、 412…… 41η ) 对应于緩冲存储器 106中的一个存储单元, 并记录 緩冲存储器 106中的对应存储单元的工作状态。 在一个实施例中, 緩冲区控制块 406 中的存储单元 (411、 412…… 41η ) 的每一个, 记录緩冲存储器 106中的对应存储单 元是空闲的还是已经被占用。 在进一步的一个实施例中, 在发送给存储设备 102的一 个读 /写命令中涉及緩冲存储器中的多个存储单元, 例如 2个。 在此情况下, 将緩冲 区控制块 406中的 2个存储单元 (411、 412 ) 关联在一起, 在存储单元 411、 412中 还记录存储单元 411与 412之间的这种关联关系, 例如, 在存储单元 411中记录指向 存储单元 412的一个或多个指针。 在依然进一步的实施例中, 在存储单元 412中还记 录指向存储单元 411的一个或多个指针。
图 5是根据本发明实施例的主机执行写入操作的流程图。 当用户应用程序或者 其他程序请求执行将数据写入到存储设备的操作时,应用程序或其他程序会发送写请 求。 图 4中的存储设备驱动程序 405接收该写请求 (步骤 501 ) , 该写请求中包括应 用程序或其他程序所提供的要写入的数据已经用于存储设备的地址, 用于存储设备的 地址可以是文件路径及偏移值, 并进一步被转换为用于存储设备的逻辑地址。 在一个 例子中, 该逻辑地址是用于存储设备上的闪存芯片的逻辑地址, 该写请求要将数据基 于该逻辑地址写入到闪存芯片中。 在步骤 502, 存储设备驱动程序 405为该写请求分 配空闲的緩冲存储器。 具体地, 遍历緩冲区控制块 406, 找到其中为空闲状态的存储 单元, 例如, 存储单元 411。 存储单元 411为空闲状态, 表示在存储设备 102的緩冲 存储器 106中的对应存储单元为空闲状态, 可以接收写入的数据。
在步骤 503中, 存储设备驱动程序 405向存储设备 102发送写命令, 在写命令 中包括要写入的数据以及用于存储设备 102的地址, 在该写命令中还包括同存储单元 411相对应的用于緩冲存储器 106的地址。 所属领域技术人员将意识到, 有多种方式 获得存储单元 411与緩冲存储器 106中的对应存储单元的对应关系。 例如, 緩冲区控 制块 406中有 n个存储单元 ( 411、 412 ··· ··· 41η ) , 而緩冲存储器 106中也包括 η个 存储单元, 存储单元 411对应于緩冲存储器 106中的第一个存储单元, 而存储单元 4 12对应于緩冲存储器 106中的第二个存储单元, 以及类似地,存储单元 41η对应于緩 冲存储器 106中的第 η个存储单元, 使得基于存储单元 411在緩冲区控制块 406中的 位置可计算出緩冲存储器 106中的对应存储单元的地址。 依然作为一个例子, 还可以 在存储单元 (411、 412…… 412 ) 中存储緩冲存储器 106中的对应存储单元的地址。 在依然另一个例子中, 在写命令中携带一个序号, 该序号既指示存储单元 411在緩冲 区控制块 406中的位置, 又指示在緩冲存储器 106中的对应存储单元的位置。
在步骤 504, 接收到来自存储设备 102的消息。 在一个例子中, 该消息是中断请 求, 该中断请求指示在步骤 503中发送的写命令已经执行完毕。 如前面所述的, 在一 个例子中, 存储设备 102中的控制电路 104在将写命令中的数据写入到緩冲存储器 1 06 (特别地, 写入到緩冲存储器 106中与緩冲区控制块 406的存储单元 411相对应的 存储单元)之后, 存储设备即发送中断, 指示该写命令执行完成。 在一个例子中, 控 制电路 104将数据写入到闪存芯片 105之后, 存储设备 102向主机 101发送中断。 在 一个例子中, 该中断请求中还包括指示步骤 503中发送的写命令相关的緩冲区控制块 406的存储单元的信息。 该信息可以是一个或多个存储单元(411、 412…… 41η )的地 址, 一个或多个存储单元 (411、 412 ··· ··· 41η ) 的序号。
在步骤 505 , 响应于在步骤 504中接收到的该中断请求, 并基于该中断请求中所 指示的与该写命令相关的緩冲区控制块 406的存储单元的信息, 释放与该写命令相关 的緩冲区控制块 406的存储单元( 411、 412…… 41η )。 释放存储单元(411、 412…… 41η )具体可以是在存储单元(411、 412 ··· ··· 41η ) 中设置緩冲存储器 106中的对应存 储单元是空闲状态。
在一个例子中, 步骤 503中的写命令涉及緩冲区控制块 406的两个存储单元 41 1与 412, 并且, 存储单元 411与 412中分别记录了指向彼此的指针, 以表示这两个 存储单元 411、 412关联于同一个写命令。 在步骤 504中接收到的中断请求中, 既可 以指示存储单元 411也可以指示存储单元 412。 在步骤 505中, 基于指示存储单元 41 1与 412之一的指针, 可获得两个存储单元 411与 412, 并将其释放。 类似地, 所属 领域技术人员可意识到以此方式还可以在写命令中关联三个或更多的存储单元(411、 412…… 41η ) 。
图 6是根据本发明实施例的第二写入命令的示意图。 第二写入命令指示存储设 备 102以 DMA方式从主机 101获得数据并写入到闪存芯片 105中。 第二写入命令可 以是 DMA描述符 600。 DMA描述符 600包括 DMA命令 610以及一个或多个 DMA 数据 ( 620、 630 ) 。 DMA命令 610包括字段 611 , 用于指示 DMA方式, 即该 DMA 描述符 600指示的操作, 其可以为闪存读、 写、 擦除或者其他操作。 字段 612指示存 储设备的逻辑地址。 字段 613指示该 DMA描述符 600的长度, 即该 DMA描述符 60 0所包括的 DMA数据 ( 620、 630 ) 的个数, 其可以为 1个或多个。 字段 614指示緩 冲存储器 106的地址。 DMA数据 620、 630分别包括字段 621、 631 , 用于指示 DMA 传输中的主机地址。 DMA数据 620、 630还分别包括字段 622、 632, 用于指示緩冲存 储器 106的地址。
DMA命令 610中的字段 612的存储设备的逻辑地址可用于 DMA数据 620、 630。 在 DMA描述符 600中仅包括一个 DMA数据 620的情况下,存储设备 102根据字段 6 21指示的主机地址和字段 622指示的緩冲存储器地址, 在主机 101和存储设备 102 之间发起 DMA传输, 并最终将接收到的数据存储到由字段 612所指示的闪存芯片 10 5中。在 DMA描述符 600包括 DMA数据 620与 630的情况下,存储设备 102将根据 DMA数据 620而执行 DMA传输所得的数据, 最终存储在由字段 612所指示的闪存 芯片 105中, 而存储设备 102还将根据 DMA数据 630而执行 DMA传输所得的数据, 最终存储在由字段 612加上一预定偏移值所指示的闪存芯片 105中。 换句话说, DM A描述符 600可以指示在主机 101和存储设备 102之间的多次 DMA传输, 每次 DM A传输同 DMA数据 620、 630中的一个相对应, 每次 DMA传输中传输相同数量的数 据(例如 4K字节) , 并且 DMA数据 620与 DMA数据 630所对应的 DMA传输的存 储设备的逻辑地址是连续的 (例如, 相距预定的偏移值, 该偏移值可以与 DMA传输 的数据量相对应) 。 这样, 可以在 DMA描述符 600中仅携带一个存储设备逻辑地址 (字段 612 ) 。 而 DMA数据 620与 DMA数据 630所对应的 DMA传输的两个 DMA 主机地址 (字段 621、 631 ) 可以是不连续的, 这样可以支持分散 -收集 ( Scatter-Gath er ) 方式的 DMA传输。
在对应于 DMA数据 620的 DMA传输中, 将来自字段 621所指示的 DMA主机 地址的数据, 写入到字段 622所指示的緩冲存储器 106中, 继而再写入到闪存芯片 1 05中。 在对应于 DMA数据 630的 DMA传输中, 将来自字段 631所指示的 DMA主 机地址的数据, 写入到字段 632所指示的緩冲存储器 106中, 继而再写入到闪存芯片 105中。
字段 614是可选的。 在字段 614所对应的緩冲存储器地址处, 作为一个例子, 可保存字段 613所指示的 DMA描述符 600的长度。 从而可以记录 DMA多个数据 62 0、 630所对应的 DMA传输有多少已经得到执行, 或者有多少尚未被执行。 对于 DM A描述符 600 , 当其全部 DMA数据 620、 630所对应的 DMA传输均已执行完毕后, 例如,所对应的数据均写入到闪存芯片 105中后,存储设备 102向主机 101发送中断, 以指示对 DMA描述符 600的执行完成。 这样, 对于 DMA描述符 600 , 虽然其对应 于 2次 DMA传输过程, 但仅向主机 101发送一次中断。 减少中断请求次数, 将有助 于降低主机 101的工作负荷。
图 7A、 7B是根据本发明实施例的存储设备执行第二写入命令的流程图。 第二写 入命令可以是如图 6所示的描述符 600。 参看图 7A, 在步骤 701 , 存储设备 102接收 DMA描述符 600。 在 DMA描述符 600中包括用于主机的地址 (例如, DMA主机地 址 621、 631 ) , 用于闪存芯片 105的地址 (例如, 存储设备逻辑地址 612 ) 以及用于 緩冲存储器 106的地址 (例如, 緩冲存储器地址 622、 632 ) 。 虽然在图 6中的 DMA 描述符 600包括 DMA命令 610、 DMA数据 620、 630 , 但这仅是为了清楚表达的目 的。 DMA命令 610、 DMA数据 620、 630也可以组合在一起。 存储设备 102从 DMA 描述符 600中提取出用于主机的地址, 用于闪存芯片 105的地址以及用于緩冲存储器 106的地址。
在步骤 702, 存储设备 102基于用于主机的地址和用于緩冲存储器的地址, 以 D MA传输方式从主机 101将数据写入到緩冲存储器 106。 在步骤 703 , 基于用于闪存 存储器的地址和用于緩冲存储器, 将在步骤 702中写入到緩冲存储器中的数据, 写入 到闪存芯片 105。
在一个例子中, 在步骤 702, 将数据写入到緩冲存储器 106之后, 向主机 101发 送中断, 以指示对 DMA传输的执行完成。 如果 DMA描述符 600中仅包括这一次 D MA传输 (例如, DMA描述 600仅包括 DMA命令 610与 DMA数据 620 ) , 则该中 断也表示对 DMA描述符 600的执行完成。 在一个例子中, 在步骤 703 , 将数据写入 到闪存芯片 105之后, 向主机 101发送中断, 以指示对 DMA传输的执行完成。
参看图 7B , 其示出了对包含多个 DMA数据 ( 620、 630 ) 的 DMA描述符 600 的更详细的处理过程。 在步骤 711 , 存储设备 102接收 DMA描述符 600 , DMA描述 符 600包括 DMA命令 610、 DMA数据 620以及 DMA数据 630。
在步骤 712,基于 DMA描述符 600,将 DMA数据 620变换为第一 DMA 指令, 将 DMA数据 630变换为第二 DMA 指令。第一 DMA 指令中包括 DMA主机地址 621和緩冲存储器地址 622。基于第一 DMA微指令,还可以获得与其对应的存储设备 的逻辑地址 612、 DMA操作类型以及 DMA描述符长度 613。 该存储设备的逻辑地址 612和 DMA操作类型可以是第一 DMA微指令的一部分, 也可以是存储在緩冲存储 器 106中, 并通过在第一 DMA ^:指令中的索引来访问, 还可以通过将第一 DMA : 指令放置在特定的操作队列 (读、 写、 擦除、 其他) 中, 以标识第一 DMA微指令的 操作类型。
作为依然另一个例子, 对于第一 DMA微指令, 根据緩冲存储器地址 622与一预 定的偏移值得到存储在緩冲存储器 106中的指针, 基于该指针, 获得存储设备的逻辑 地址 612和 /或 DMA描述符长度 613。 通过类似的方式, 对于第二 DMA微指令, 根 据緩冲存储器地址 632与一预定偏移值得到存储在緩冲存储器 106中的指针,基于该 指针, 获得存储设备的逻辑地址 612和 /或 DMA描述符长度 613。
在优选的实施例中, 基于緩冲存储器地址 614, 将 DMA描述符长度 613存储在 緩冲存储器 106中, 其中 DMA描述符长度等同于 DMA描述符 600中的 DMA数据 的个数 (或者 DMA描述符 600中的 DMA命令与 DMA数据的总计个数, 从中可以 得到 DMA数据的个数) , 并通过在第一 DMA微指令中的索引来访问 DMA描述符 长度 613。 这样, 第一 DMA ^敫指令与第二 DMA ^敫指令的执行顺序变得不重要。 每 执行一个 DMA微指令, 将緩冲存储器 106中的 DMA描述符长度递减 (例如, 减 1 或减去单位长度) , 当緩冲存储器 106中的 DMA描述符长度变为 0时, 表示对该 D MA描述符 600的所有 DMA操作全都执行完成。
在步骤 713 , 对于第一 DMA微指令, 基于 DMA主机地址 621和緩冲存储器地 址 622, 以 DMA传输方式将数据写入到相应緩冲存储器 106中。
在步骤 714, 对于第二 DMA微指令, 基于 DMA主机地址 631和緩冲存储器地 址 632, 以 DMA传输方式将相应数据写入到緩冲存储器 106中。
在步骤 715 , 向主机发送中断, 以指示对 DMA描述符 600的操作完成。 在一个例子中, 步骤 713 , 还包括将同第一 DMA微指令相对应的写入到緩冲存 储器 106中的数据, 基于存储设备逻辑地址 612, 写入到闪存芯片 105中。 步骤 714 还包括将同第二 DMA微指令相对应的写入到緩冲存储器 106中的数据, 基于存储设 备逻辑地址 612加上预定偏移值的和, 写入到闪存芯片 105中。
在优选的实施例中, 在步骤 713、 714中, 将相应数据写入到緩冲存储器 106中 之后, 还基于在第一、 第二微指令中的索引, 访问存储在緩冲存储器中的 DMA描述 符长度 613 , 并将 DMA描述符长度 613递减 (例如, 减 1或减去单位长度) 。 这样, 当该 DMA描述符长度 613变为 0时, 意味着对 DMA描述符 600的操作完成。 以此 方式, 可以在存储设备 102中同时处理多个 DMA描述符 600 , 并且第一 DMA ^敫指 令与第二 DMA 指令的执行顺序也是不重要的。 还可以釆用其他方式来识别 DMA 描述符 600中的多个 DMA数据均被执行。 例如, 在緩冲存储器或寄存器中为每个 D MA描述符 600的每个 DMA数据提供标志, 每当一个 DMA数据 ( DMA微指令)被 执行后, 将相应的标志置位。 还可以顺序执行 DMA描述符 600中的每个 DMA数据 ( DMA微指令) , 当最后一个 DMA数据 ( DMA微指令) 被执行后, 意味着对该 D MA描述符 600的执行完成。
在依然另一个实施例中,当 DMA描述符 600中的每一个 DMA ^敫指令被执行后, 向主机 101发送中断, 并由主机驱动程序来分析对 DMA描述符 600的执行是否已完 成。 分析方法同上面所描述的存储设备 102中识别 DMA描述符 600中的多个 DMA 数据是否均被执行的过程相类似。
图 7C中展示了用于实施图 7A、 7B中的执行第二写入命令的存储设备的硬件方 框图。 图 7C中, 主机 101包括 PCIE控制器 721和主机存储器 722。 主机存储器 722 可以是随机访问存储器( RAM ) , PCIE控制器 721用于同存储设备经由 PCIE总线进 行通信。存储设备 102中包括 PCIE接口 731、 DMA指令分析器 732、微指令 FIFO (先 进先出緩冲器) 733、 DMA写操作控制器 734、 DMA写接口 735、 逻辑地址到物理地 址转换电路 736、 Flash接口控制器 737、 闪存芯片 105以及緩冲存储器 106。
PCIE接口 731接收主机 101通过 PCIE控制器 721发送的 DMA描述符 600。 主 机 101与存储设备 102之间的连接不限于 PCIE方式,还可以通过 SATA、 IDE, USB、 PCIE, SCSI, 以太网、 光纤通道等连接主机 101与存储设备 102。 DMA指令分析器 7 32将 PCIE接口 731接收到的 DMA描述符 600变换为 DMA微指令。 对于如图 6所 示的 DMA描述符 600, 其中包括 DMA数据 620和 DMA数据 630, 则 DMA指令分 析器将其变换为对应于 DMA数据 620的第一 DMA 指令和对应于第二 DMA数据 6 30的第二 DMA微指令。 第一 DMA微指令与第二 DMA微指令的结构已在上文中详 细介绍。 DMA指令分析器 732还从 DMA描述符 600的 DMA命令 610中提取出 DM A描述符长度, 并对其加以保存, 可以保存在緩冲存储器 106、 一个寄存器或者类似 物中。 DMA描述符长度指示了 DMA描述符 600所包括的 DMA数据的数量, 也指示 了从该 DMA描述符 600所得到的 DMA微指令的个数。 DMA指令分析器 732将第一 DMA 指令与第二 DMA ^:指令存储在^:指令 FIFO 733中。
微指令 FIFO 733能够緩存 DMA微指令, 并按照先进先出的方式向 DMA写 操作控制器 734提供 DMA微指令。 虽然这里仅以写操作为例, 描述了将与 DMA写 操作对应的 DMA微指令緩存在微指令 FIF0733中, 所属领域技术人员将意识到可以 将与 DMA读操作对应的 DMA微指令同与 DMA写操作对应的 DMA微指令混合緩存 在^:指令 FIF0733。 还可以将^:指令 FIF0733配置为两部分或多个部分, 其中一部分 专用于存储与 DMA读操作对应的 DMA ^:指令, 而将另一部分专用于存储与 DMA 写操作对应的 DMA微指令。
对于与 DMA写操作对应的 DMA微指令, 例如, 前面所提到的第一 DMA微 指令与第二 DMA微指令, DMA写操作控制器 734基于这些 DMA微指令来执行 DM A写操作。 如同前面所提到的, 第一 DMA微指令中包括, DMA主机地址 621和緩冲 存储器地址 622。 DMA写操作控制器 734利用 DMA主机地址 621和緩冲存储器地址 622, 通过 DMA写接口 735在主机 101和存储设备 102之间发起 DMA写操作, 将存 储在 DMA主机地址 621处的数据, 传输到緩冲存储器地址 622所指示的位置, 所传 输的数据可以具有预定的长度(例如 4K字节) 。 对于第二 DMA微指令, DMA写操 作控制器 734执行类似的操作, 将存储在 DMA主机地址 631处的数据, 传输到緩冲 存储器地址 632所指示的位置。
从第一 DMA微指令和第二 DMA微指令可获得用于各自的存储设备的逻辑地 址。 在逻辑地址到物理地址转换电路 736, 为每条 DMA微指令的存储设备的逻辑地 址转换为用于闪存芯片 105的物理地址。对于每一条 DMA微指令, Flash接口控制器 737将写入到緩冲存储器 106的数据, 基于逻辑地址到物理地址转换电路 736所提供 的物理地址, 写入到闪存芯片 105中。
Flash接口控制器 737还基于在第一、 第二微指令中的索引, 访问所保存的从 DMA描述符 600的 DMA命令 610中提取出 DMA描述符长度, 并将 DMA描述符递 减 (例如, 减 1或减去单位长度) 。 这样, 当该 DMA描述符长度变为 0时, 意味着 对 DMA描述符 600的操作完成。 继而, 可向主机发送中断, 以指示对 DMA描述符 600的操作完成。 在一个例子中, DMA写操作控制器也访问所保存的 DMA描述符长 度, 并确定是否已将与 DMA描述符 600相对应的所有数据均写入到緩冲存储器 106 中, 并向主机发送指示所有数据已写入到緩冲存储器 106的中断。
图 8是根据本发明实施例的主机的软件方框图。 图 8是示出了主机 800的软 件的方框图, 其同图 4中展示的主机的软件方框图相类似。 不同之处在于, 图 8中的 緩冲区控制块 406中还包括 10请求链表 801。 10请求链表 801是利用緩冲区控制块 4 06中的存储单元( 411、 412…… 41η )组成的链表。 10请求链表 801可以是单向链表、 双向链表或循环链表。 在生成如图 6所示的 DMA描述符 600时, 对于一个 DMA描 述符 600, 创建一个与之相对应的 10请求链表 801 , 其中包括分别与 DMA命令 610、 DMA数据 620、 DMA数据 630分别相对应的存储单元 (811、 812、 813 ) 。 需要指 出的是, 存储单元(811、 812、 813 )是緩冲区控制块 406的存储单元(411、 412…… 41η ) 中的三个存储单元, 并通过设置相应的指针, 形成 10请求链表 801。 在图 8中, 将存储单元 (811、 812、 813 ) 与存储单元 (411、 412 ··· ··· 41η )分开展示, 仅仅是为 了清楚地描述的需要。
图 9 Α是根据本发明实施例的主机创建并执行第二写入命令的流程图。在一个 实施例中, 步骤 901 , 由主机的存储设备驱动程序 405接收 10请求。 该 10请求指示 将分散在主机存储器的不同物理地址的多个数据块写入到存储设备 102中, 为此将在 主机与存储设备之间执行分散 -收集 DMA操作。下面将以举例的方式描述主机向存储 器写入数据的操作过程。
在步骤 902,结合图 8 ,从緩冲区控制块 406中取出一个空闲状态的存储单元, 例如存储单元 411。
在步骤 904, 根据 10请求的内容, 创建 DMA描述符 600的 DMA命令 610 , 填充 DMA命令 610中的 DMA方式字段 611 (在该例子中, 是写操作) 、 存储设备 逻辑地址字段 612 (从 10请求中可获得该信息) 、 DMA描述符长度字段 613 (从 10 请求中可获得该信息) 以及緩冲存储器地址字段 614 (与步骤 902中所分配的存储单 元 411相对应) 。 继而将所创建的 DMA命令 610发送给存储设备 102。 并将存储单 元 411作为用于该 10请求的 10请求链表 801的起始节点 (例如存储单元 811 ) 。 创 建 10请求链表 801 , 用于在存储设备 102执行完 DMA描述符 600之后, 将所占用的 存储单元归还给緩冲区控制块 406,并就该 10请求的执行完成通知应用软件或其他上 层软件。 为此目的, 在一个例子中, 还在存储单元 411中存储对应于该 10请求的指 针。 基于 DMA描述符长度, 还可获得 DMA数据部分的剩余长度。 在生成第一个 D MA数据之前, DMA数据部分的剩余长度是 DMA描述符 600中的 DMA数据( 620、 630 ) 的个数, 作为一个例子, 其为 DMA描述符长度减 1。
在步骤 906, 从緩冲区控制块 406中取出一个空闲状态的存储单元, 例如, 存 储单元 412。 根据 10请求的内容, 创建 DMA描述符 600的 DMA数据 620 , 填充 D MA数据 620中的 DMA主机地址字段 621 (从 10请求中可获得该信息) 以及緩冲存 储器地址 622 (与所分配的存储单元 412相对应, 例如, 存储单元 412在緩冲区控制 块 406中的偏移值或序号) 。 继而将所创建的 DMA数据 620发送给存储设备 102。 并将存储单元 412作为用于该 10请求的 10请求链表 801的节点(例如存储单元 812 )。
在步骤 908 , 将 DMA数据部分剩余长度递减, 得到 DMA描述符 600中尚未 发送给存储设备的 DMA数据的个数。
在步骤 909, 如果 DMA数据部分的剩余长度为 0 , 则表示 DMA描述符 600 的生成已经完成, 进而在步骤 910存储设备驱动程序 405将等待存储设备 102返回的 表示 DMA描述符 600的处理已经完成的中断, 并依据该中断找到与之对应的 10请 求链表 801 , 以及将 10请求链表 801中的存储单元( 811、 812 )释放。 换句话说, 将 由 10请求链表 801中的存储单元 (811、 812 ) 的状态设置为空闲, 从而使得通过緩 冲区控制块 406可以获知存储单元 411、 412的状态为空闲。 在一个例子中, 在 DMA 描述符 600指示读操作, 且主机 101的 CPU包括高速緩冲存储器的情况下, 还通知 同 DMA描述符 600的 DMA主机地址( 621、 631 )相关联的 CPU高速緩冲存储器执 行一致性处理, 以反映出 DMA主机地址 ( 621、 631 ) 处的数据可能因读 DMA读操 作而发生变化。 在一个例子中, 存储设备 102返回的中断中包括指示 10请求链表 80 1中的多个存储单元( 811、 812 )之一(或者緩冲存储器地址 622、 632之一)的内容, 依据该内容, 通过 10请求链表 801将存储单元 (811、 812 ) 释放。
在步骤 909, 如果 DMA数据部分的剩余长度大于 0 , 则表示 DMA描述符 60 0的生成尚未完成, 还需要为 10请求生成一个或多个 DMA数据, 那么处理将返回到 步骤 906并重复执行步骤 906、 908和 909。
图 9B是根据本发明另一实施例的主机创建并执行第二写入命令的流程图。在 该实施例中, 将緩冲区控制块 406中的空闲存储单元进一步组织为空闲存储单元池, 以有助于 DMA描述符 600的创建过程。 通过将緩冲区控制块 406中状态为空闲的存 储单元 (411、 412 ··· ··· 41η ) 组织成链表来形成空闲存储单元池。 当需要从緩冲区控 制块 406中获得空闲存储单元时, 可以从空闲存储单元池中取出存储单元, 从而省去 了在緩冲区控制块 406中查找空闲存储单元的开销。
在一个实施例中, 步骤 921 , 由主机的存储设备驱动程序 405接收 10请求。 同图 9Α相类似,该 10请求指示将分散在主机存储器的不同物理地址的多个数据块写 入到存储设备 102中, 为此将在主机与存储设备之间执行分散 -收集 DMA操作。
在步骤 922, 根据 10请求的内容, 计算出用于与相同该 10请求相对应的 DM A描述符的长度(例如, DMA命令以及 DMA数据的个数) 。 注意到在图 9A公开的 实施例中, 是在步骤 904创建 DMA命令 610的过程中获得 DMA描述符长度, 所属 领域技术人员将意识到各个步骤并非必然以本实施例中所公开的顺序执行。
在步骤 923 , 判断空闲存储单元池中是否为空。 如果空闲存储单元池非空, 即 緩冲区控制块 406中存在处于空闲状态的存储单元, 则进行到步骤 924, 并从空闲存 储单元池中取出一个空闲存储单元(例如存储单元 411 )。 如果空闲存储单元池为空, 意味着緩冲区控制块 406中没有空闲的存储单元。 则在步骤 925 , 等待空闲存储单元 池被更新, 以出现空闲的存储单元。 当 DMA描述符的执行完成后, 与之相关的存储 单元会被释放,从而在空闲存储单元池中出现空闲的存储单元。后面对此会详细介绍。
在步骤 926, 确定当前要生成用于 DMA描述符 600的 DMA命令字段还是 D MA数据字段。 一般而言, DMA描述符 600包括一个 DMA命令和一个或多个 DMA 数据。 当要生成 DMA命令时, 处理转向步骤 927 , 并根据 10请求的内容, 创建 DM A描述符 600的 DMA命令 610, 填充 DMA命令 610中的各个字段( 611、 612、 613、 614 ) 。 在一个例子中, 还在存储单元 411中存储对应于该 10请求的指针, 以便在该 10请求的执行完成后, 可识别该 10请求并通知应用软件或其他上层软件。 当要生成 DMA数据时, 处理转向步骤 928 , 并根据 10请求的内容, 创建 DMA描述符 600的 DMA数据 620, 填充 DMA数据 620的各个字段 (621、 622 ) 。
接下来, 在步骤 929, 将所生成的 DMA命令或 DMA数据发送给存储设备 10 2。 并在步骤 930 , 将在步骤 924中获得的存储单元 411设置在 10请求链表 801中。 作为一个例子, 第一个进入到 10请求链表 801的存储单元, 将作为 10请求链表 801 的头节点, 但是, 也将意识到当 10请求链表 801被组织为环形链表时, 其中并不存 在 "头节点" 。 在步骤 930, 还将 DMA描述符长度递减。
在步骤 931 , 如果 DMA描述符长度为 0 , 意味着 DMA描述符 600的生成已 经完成, 进而在步骤 932存储设备驱动程序 405将等待存储设备 102返回的表示 DM A描述符 600的处理已经完成的中断, 并依据该中断找到与之对应的 10请求链表 80 1 , 以及将 10请求链表 801中的存储单元 ( 811、 812 ) 释放。 换句话说, 将由 10请 求链表 801中的存储单元(811、 812 ) 的状态设置为空闲, 从而使得通过緩冲区控制 块 406可以获知存储单元 411、 412的状态为空闲, 并将存储单元 411、 412放入空闲 存储单元池中。 在一个例子中, 存储设备 102返回的中断中包括指示 10请求链表 80 1中的多个存储单元 ( 811、 812 ) 之一的内容, 依据该内容, 通过 10请求链表 801 将存储单元 (811、 812 ) 释放。
在步骤 931 , 如果 DMA描述符长度大于 0 , 则表示 DMA描述符 600的生成 尚未完成, 还需要为 10请求生成一个或多个 DMA数据, 那么处理将返回到步骤 92 3并重复执行步骤 923-931。
上面结合图 9A、 9B描述了 DMA描述符 600的生成过程。 DMA描述符 600 用于在分散-收集 DMA中描述要执行的多个 DMA操作, 该多个 DMA操作的数据来 源于存储在连续或不联系的存储空间中。 所属领域技术人员将容易意识到, DMA描 述符 600的生成方式包括但不限于上面图 9A、 9B中描述的具体方式。
图 10A是根据本发明的实施例的在存储设备的緩冲存储器中创建链表的流程 图。 在如图 7A-7C所公开的存储设备处理 DMA描述符 600的过程中, 将 DMA描述 符 600转换为一个或多个微指令。 在进一步的实施例中, 为了有效处理一个或多个微 指令之间的关联关系 (例如, 这些微指令均同 DMA描述符 600相关联) , 存储设备 102响应于主机 101所传输的 DMA描述符 600,还在緩冲存储器 106中建立链表, 该 链表将对应于同一 DMA描述符 600的多个微指令关联起来。
如图 10A所示, 在步骤 1002, 主机 101向存储设备 102发送 DMA描述符 60 0。 DMA描述符 600包括 DMA命令 610与 DMA数据 620、 630。 前面已经结合图 9 A与图 9B而描述了主机 101向存储设备 102发送 DMA描述符 600的过程的例子。 还应当意识到, 在存储设备的緩冲存储器中创建链表, 将有助于存储设备对 10操作 的执行, 特别是对多个 10操作的并发 /乱序执行, 多个 10操作可通过访问各自的链 表而关联在一起。 这样不具备关联关系的 10操作可以在存储设备中并发执行。 因而, 还可以响应除 DMA命令之外的其他类型的 10命令或其他命令, 以在存储设备中创 建链表。
在步骤 1004, 判断所接收到的是 DMA命令 610还是 DMA数据 620、 630。 如果接收到 DMA命令 610, 在步骤 1006, 从其中的緩冲存储器地址字段 610 中提取出用于该 DMA命令 610的緩冲存储器地址, 并基于该緩冲存储器地址, 为该 DMA命令 610在緩冲存储器 106中分配存储空间。 接下来, 在步骤 1008 , 保存为该 DMA命令 610所分配的緩冲存储器地址, 用来在为 DMA数据 620、 630分配緩冲存 储器地址时使用。
如果在步骤 1004判断出所接收到的是 DMA数据 620, 则在步骤 1010, 从 D MA数据 620的緩冲存储器地址字段 622从提取出用于该 DMA数据 620的緩冲存储 器地址, 并基于该緩冲存储器地址, 为该 DMA数据 620在緩冲存储器 106中分配存 储空间。并在步骤 1012中,在为该 DMA数据 620所分配的緩冲存储器的存储空间中, 存储在步骤 1008中保存的 DMA命令 610的緩冲存储器地址。 这样, 在緩冲存储器 1 06中, 为 DMA命令 610和 DMA数据 620所分配的存储空间形成了链表, 其中为 D MA命令 610所分配的存储空间是链表的头节点, 为 DMA数据 620所分配的存储空 间连接到链表的头节点。
在 DMA描述符 600还包括 DMA数据 630的情况下,通过步骤 1010和步骤 1 012, 基于 DMA数据 630中的緩冲存储器地址 632为 DMA数据 630在緩冲存储器 1 06中分配存储空间, 并在为 DMA数据 630所分配的緩冲存储器的存储空间中, 保存 DMA命令 610的緩冲存储器地址。 所属领域技术人员将意识到, 也可以在为 DMA 数据 630所分配的緩冲存储器 106的存储空间中, 保存用于 DMA数据 620的緩冲存 储器地址, 从而形成不同类型的链表。 在其他例子中, 将緩冲存储器 106中为 DMA 命令 610、 DMA数据 620、 630所分配的存储空间创建为循环链表或双向链表。
上面结合图 7A、 7B、 7C已经描述了存储设备 102基于 DMA数据 ( 620、 63 0 )生成 DMA 指令, 并保存在 指令 FIFO 733中。 DMA数据( 620、 630 )生成 D MA i指令的操作可以发生于步骤 1012之后, 并在 DMA 指令中携带为 DMA数据 ( 620、 630 ) 所分配的緩冲存储器地址。
图 10B是根据本发明的一实施例的在存储设备的緩冲存储器中创建链表的流 程图。 同图 10A所提供的实施例相比, 图 10B的实施例中, 还将与 DMA描述符的处 理或执行相关的信息存储在所创建的链表中。图 10C是根据本发明的一实施例的存储 设备利用在緩冲存储器中创建的链表执行 DMA描述符的流程图。 图 11A-11F展示出 了与图 10B与图 10C相关联的緩冲存储器的多种状态。 在图 11A-11F中, 1100指示 緩冲存储器 106中的存储空间。
具体地, 在步骤 1020 , 主机 101向存储设备 102发送 DMA描述符 600。 在步骤 1022, 判断所接收到的是 DMA命令 610还是 DMA数据 620、 630。 如果接收到 DMA命令 610, 在步骤 1024, 从緩冲存储器地址字段 610中提取 出緩冲存储器地址, 并基于该緩冲存储器地址, 为该 DMA命令 610在緩冲存储器 10 6中分配存储空间。 参看图 11A, 为 DMA命令 610分配存储空间 1101。 以及还从 D MA命令 610中提取出 DMA描述符长度字段 613 ,从 DMA描述符长度 613可以得到 该 DMA描述符 600的 DMA数据部分的长度 (例如, DMA描述符长度减 1 ) 。 接下 来, 在步骤 1026 , 保存为该 DMA命令 610所分配的緩冲存储器地址, 用来在为 DM A数据 620、 630分配緩冲地址时使用。 并且, 将 DMA数据部分的长度记录在为该 D MA命令 610所分配的緩冲存储器中。 参看图 11A, 在存储空间 1101中保存了 DMA 数据部分的长度 (在这个例子中, DMA数据部分的长度为 2 ) 。
如果在步骤 1022判断出所接收到的是 DMA数据 620, 则在步骤 1028 , 从 D MA数据 620的緩冲存储器地址字段 622从提取出用于该 DMA数据 620的緩冲存储 器地址, 并基于该緩冲存储器地址, 为该 DMA数据 620在緩冲存储器 106中分配存 储空间。 参看图 11B , 为 DMA数据 620分配存储空间 1112。 并在步骤 1030中, 在 为该 DMA数据 620所分配的緩冲存储器的存储空间 1112中, 存储在步骤 1026中保 存的 DMA命令 610的緩冲存储器地址。 这样, 在緩冲存储器 106中, 为 DMA命令 6 10和 DMA数据 620所分配的存储空间 ( 1101与 1112 ) 形成了链表, 其中为 DMA 命令 610所分配的存储空间 1101是链表的头节点,为 DMA数据 620所分配的存储空 间 1112连接到链表的头节点。 还在存储空间 1112中存储同 DMA数据 620相对应的 DMA主机地址。
在 DMA描述符 600还包括 DMA数据 630的情况下,通过步骤 1028和步骤 1 030, 基于 DMA数据 630中的緩冲存储器地址 632为 DMA数据 630在緩冲存储器 1 06中分配存储空间 1123 (参看图 11C ) , 并在存储空间 1123中, 保存 DMA命令 61 0的緩冲存储器地址。 以及还在存储空间 1123中存储同 DMA数据 630相对应的 DM A主机地址。
因而, 在緩冲存储器 106中形成了同 DMA描述符 600相对应的链表, 其中存 储空间 1101是链表的头节点, 存储空间 1112和 1123是链表的节点, 并指向该链表 的头节点。 所属领域技术人员将意识到, 也可以在为 DMA数据 630所分配的緩冲存 储器 106的存储空间 1123中,保存用于 DMA数据 620的緩冲存储器地址,从而形成 不同类型的链表。 在其他例子中, 将緩冲存储器 106中为 DMA命令 610、 DMA数据 620、 630所分配的存储空间创建为循环链表或双向链表。
图 10C是根据本发明的一实施例的存储设备利用在緩冲存储器中创建的链表 执行 DMA描述符的流程图。 上面结合图 7A、 7B、 7C已经描述了存储设备 102基于 DMA数据( 620、 630 ) 生成 DMA微指令, 并保存在微指令 FIFO 733中。 在存储设 备 102对 DMA微指令的执行中, 在一个例子中, 利用在緩冲存储器 106中的链表。 在 DMA微指令中, 包括緩冲存储器地址, 通过该緩冲存储器地址, 可以获得为同该 DMA微指令相对应的 DMA数据所分配的緩冲存储器 106中的存储空间, 进而可以 获得与该 DMA数据所对应的 DMA主机地址以及与该 DMA数据所对应的 DMA描述 符中的 DMA数据部分长度或 DMA数据的个数。
在下面的描述中, 将对应于 DMA数据 620的 DMA微指令用第一 DMA微指 令指示, 将对应于 DMA数据 630的 DMA 指令用第二 DMA 指令指示。
在步骤 1040 , 从^:指令 FIF0733中获得将第一 DMA 指令。
在步骤 1042,第一 DMA微指令中包括为 DMA数据 620所分配的緩冲存储器 106的存储空间 1112的地址, 并从存储空间 1112中获得 DMA主机地址。 该 DMA 主机地址是由 DMA数据 620中的 DMA主机地址字段 621所提供的。 基于 DMA主 机地址, 在主机 101和存储设备 102之间进行 DMA传输, 将主机 101的该 DMA主 机地址处的预定长度 (例如, 4KB ) 的数据, 以 DMA方式传输到存储设备 102的緩 冲存储器中。 对于第二 DMA微指令, 执行类似的操作, 将主机 101的由 DMA数据 630的 DMA主机地址字段 632所提供的 DMA主机地址处的数据, 以 DMA方式传输 到存储设备 102的緩冲存储器的为 DMA数据 632所分配的存储空间 1123处。在图 1 1D中, 示出了执行完第一 DMA微指令与第二 DMA微指令后, 存储了以 DMA方式 传输的数据的存储空间 1112和存储空间 1123。
在步骤 1044 , 继续对第一 DM A微指令加以执行。 通过第一 DMA微指令中的 存储空间 1112的地址,从存储空间中取出预定长度的数据,该数据是在步骤 1042中, 通过 DMA操作从主机 101传输到緩冲存储器 106的存储空间 1112的。并通过闪存接 口控制器 (例如, 图 7C中的 Flash接口控制器 737 ) 将该数据基于第一 DMA微指令 中所包括的用于闪存存储器的地址, 写入到闪存芯片 105。 该用于闪存存储器的地址 是通过 DMA命令 610中的存储设备逻辑地址字段 612所得到的。 对第二 DMA微指 令以类似的方式加以执行。通过第二 DMA微指令中包括的存储空间 1123的地址,从 存储空间中取出预定长度的数据, 并将该数据通过闪存接口控制器, 基于第二 DMA 微指令中所包括的用于闪存存储器的地址, 写入到闪存芯片 105。 第二 DMA微指令 中所包括的用于闪存存储器的地址, 是通过 DMA命令 610中的存储设备逻辑地址字 段 612加上预定值(例如对应于 DMA传输的数据的长度, 在该例子中, 是 4KB ) 所 得到的。 在一个例子中, 将 DMA命令 610中的存储设备逻辑地址转换为存储设备的 物理地址, 并基于该物理地址将数据写入到闪存芯片 105中。 从存储设备的逻辑地址 到物理地址的映射过程, 是所属领域技术人员所熟知的。
在步骤 1046 , 继续对第一 DM A微指令加以执行。 通过第一 DMA微指令中的 存储空间 1112的地址, 获得为 DMA命令 610所分配的存储空间 1101的地址, 并在 存储空间 1101中获得 DMA数据部分长度, 以及将存储 1101中存储的 DMA数据部 分长度递减(例如, 减 1或者减去单位长度) 。 参看图 11E, 对于第一 DMA微指令, 将存储空间 1101中的 DMA数据部分长度递减后, 其值由 2变为 1。 并且, 存储空间 1112中不再保存存储空间 1101的地址, 用于表明对 DMA数据 620的执行已经完成。 在步骤 1048 , 由于 DMA数据部分的长度不为 0, 意味着对 DMA描述符 600的操作 尚未完成, 因为其还包含另一个 DMA数据 630, 此时, 不进行进一步的处理。
当第二 DMA微指令在步骤 1046被执行时, 通过第二 DMA微指令中的存储 空间 1123的地址, 获得为 DMA命令 610所分配的存储空间 1101的地址, 并在存储 空间 1101中获得 DMA数据部分长度, 以及将存储 1101中存储的 DMA数据部分长 度递减 (例如, 减 1或者减去单位长度) 。 参看图 11F, 对于第二 DMA ^敫指令, 将 存储空间 1101中的 DMA数据部分长度递减后, 其值由 1变为 0。 并且, 存储空间 1 123中不再保存存储空间 1101的地址, 用于表明对 DMA数据 630的执行已经完成。
此时, 当第二 DMA描述符在步骤 1048被执行时, 由于 DMA数据部分的长 度为 0, 意味着对 DMA描述符 600的执行已经完成。 接下来, 在步骤 1050 , 向主机 101发送中断, 以指示对 DMA描述 600的执行已经完成。
再次参看图 11F, 存储空间 1112与 1123均不再保存存储空间 1101的地址。 存储空间 1101中的 DMA数据部分长度的值为 0。 在此情况下, 意味着对 DMA描述 符 600的执行已经完成, 对存储空间 1101、 1112与 1123均不会再加以使用, 这些存 储空间可以被释放以用于对其他 DMA描述符的执行。 在一个例子中, 由主机 101控 制对相应存储空间的释放和再利用, 在上面已结合图 9A与图 9B对 10请求链表 801 中的存储空间的释放。 由于緩冲区控制块 406中的存储单元 (411、 412 ··· ··· 41η ) 与 緩冲存储器 106中的存储空间相对应, 因而对 10请求链表 801中的存储空间的释放, 意味着对緩冲存储器中的存储空间 1101、 1112与 1123的释放。
上面结合图 10B、 10C、 11A-11F而描述了在緩冲存储器 106中存储对应于第 一与第二^:指令的 DMA主机地址的方案, 从而使得 DMA ^敫指令中不必携带 DMA 主机地址而减少了对电路资源的占用, 并通过緩冲存储器 106将对应于同一 DMA描 述符 600的第一、第二 DMA微指令关联在一起的方案。所属领域技术人员将意识到, 还可以将对应于第一与第二微指令的存储设备逻辑地址和 /或 DMA主机地址存储在 緩冲存储器中, 从而进一步减少 DMA微指令的长度及其对电路资源的占用。
图 12是根据本发明的又一实施例的存储设备的硬件方框图。 与图 7C中公开 的相似, 主机 101包括 PCIE控制器 721和主机存储器 722。 存储设备 102中包括 PC IE接口 731、 DMA指令分析器 732、 指令先进先出緩冲器 (FIFO ) 733、 DMA写 操作控制器 734、 DMA写接口 735、 逻辑地址到物理地址转换电路 736以及緩冲存储 器 106。 存储设备 102中还包括 DMA读写微指令判断电路 1210 , DMA读接口 1212, 闪存控制器 1221、 1222、 1223 , 闪存接口 1231、 1232、 1233 , 完成控制电路 1242、 多路选择器 1241以及多路共享器 1243。 闪存接口 1231、 1232、 1233 合于闪存芯片 105。
PCIE接口 731接收主机 101通过 PCIE控制器 721发送的 DMA描述符 600。 主机 101与存储设备 102之间的连接不限于 PCIE方式。 DMA指令分析器 732将 PCI E接口 731接收到的 DMA描述符 600变换为 DMA微指令。 对于如图 6所示的 DMA 描述符 600,则 DMA指令分析器将其变换为对应于 DMA数据 620的第一 DMA微指 令和对应于 DMA数据 630的第二 DMA微指令。 在一个例子中, 第一与第二 DMA 微指令中分别包括指示该微指令类型 (读 /写 /擦除 /其他) 的字段、 指示与其对应的緩 冲存储器 106中的存储单元的地址的字段、 指示存储设备的逻辑地址的字段。
参看图 10B与图 11C, DMA指令分析器 732还针对 DMA命令 610, 在緩冲 存储器 106中分配存储单元, 并在其中存储 DMA数据部分的长度。 DMA指令分析 器还针对 DMA数据 620, 在緩冲存储器 106中分配存储单元, 并在其中存储为 DMA 命令 610所分配的存储单元的地址, 以及存储 DMA数据 620中的 DMA主机地址。 D MA指令分析器还针对 DMA数据 630 , 在緩冲存储器 106中分配存储单元, 并在其 中存储为 DMA命令 610所分配的存储单元的地址, 以及存储 DMA数据 630中的 D MA主机地址。
DMA指令分析器 732将第一 DMA 指令与第二 DMA ^:指令存储在^:指令 F IFO 733中。
微指令 FIFO 733能够緩存 DMA微指令, 并按照先进先出的方式向 DMA读 写微指令判断电路 1210提供 DMA微指令。
在 DMA读写^:指令判断电路 1210 , 判断所获得的 DMA 指令的类型。 对于 与 DMA写操作对应的 DMA微指令,例如, 前面所提到的第一 DM A微指令与第二 D MA微指令, DMA写操作控制器 734基于这些 DMA微指令来执行 DMA写操作。 D MA写操作控制器 734利用第一 DMA微指令中的指示与其对应的緩冲存储器 106中 的存储单元的地址的字段, 从緩冲存储器 106中获得 DMA主机地址, 并通过 DMA 写接口 735在主机 101和存储设备 102之间发起 DMA写操作, 将存储在 DMA主机 地址中的数据, 传输到与第一 DMA微指令相对应的緩冲存储器 106的存储单元中, 所传输的数据可以具有预定的长度 (例如 4K字节) 。 对于第二 DMA微指令, DMA 写操作控制器 734利用与其对应的緩冲存储器 106中的存储单元的地址的字段, 从緩 冲存储器 106中获得 DMA主机地址, 并在主机 101和存储设备 102之间发起 DMA 写操作, 将存储在 DMA主机地址中的数据, 传输到与第二 DMA微指令相对应的緩 冲存储器 106的存储单元中。
从第一 DMA微指令和第二 DMA微指令的指示存储设备的逻辑地址的字段获 得用于各自的存储设备的逻辑地址。 在逻辑地址到物理地址转换电路 736, 将每条 D MA微指令的存储设备的逻辑地址转换为用于闪存芯片 105的物理地址。 对于每一条 DMA微指令, Flash控制器 1221、 1222、 1223基于逻辑地址到物理地址转换电路 73 6所提供的物理地址, 通过闪存接口 1231、 1232、 1233将写入到緩冲存储器 106的数 据, 写入到闪存芯片 105中, 其中, Flash控制器 1221同闪存接口 1231相 禹合, Fla sh控制器 1222同闪存接口 1232相耦合, Flash控制器 1223同闪存接口 1233相耦合。 而闪存接口 1231、 1232、 1233分别耦合到各自的闪存芯片。 因而对于从 DMA微指令 中的存储设备的逻辑地址转换得到的用于闪存芯片 105的物理地址, 该物理地址指示 了特定的闪存芯片, 并且该闪存芯片与闪存接口 1231、 1232、 1233的特定一个相耦 合。 因而, 基于该物理地址, 可以确定使用闪存接口 1231、 1232、 1233中的哪一个 将数据写入闪存芯片, 也可以确定使用 Flash控制器 1221、 1222、 1223中的哪一个。 闪存接口 1231、 1232、 1233还通过多路选择器 1241与緩冲存储器相耦合。 基于该物 理地址, 多路选择器 1241将数据从緩冲存储器 106传送给闪存接口 1231、 1232、 12 33中的特定一个。
闪存接口 1231、 1232、 1233将数据写入到闪存芯片 105中之后, 完成控制电 路 1242还基于在第一、 第二微指令中的指示与其对应的緩冲存储器 106中的存储单 元的地址的字段, 访问緩冲存储器 106, 并进而访问緩冲存储器中为 DMA命令 610 所分配的存储单元, 从中获得 DMA数据部分的长度, 并将 DMA数据部分的长度递 减 (例如, 减 1或减去单位长度) 。 这样, 当为 DMA命令 610所分配的存储单元中 的该 DMA数据部分的长度变为 0时, 意味着对 DMA描述符 600的操作完成。 继而, 可向主机发送中断, 以指示对 DMA描述符 600的操作完成。
虽然图 12中以举例的方式展示了包括三个 Flash控制器 1221、 1222、 1223以 及三个闪存接口 1231、 1232、 1233的实施例, 所属领域技术人员将意识到可以使用 多种不同数量的 Flash控制器与闪存接口, 以同闪存芯片的数量相适应。
对于与 DMA读操作对应的 DMA 指令, DMA读写^:指令判断电路 1210将 其直接传送给逻辑地址到物理地址转换电路 736, 并得到用于闪存芯片 105的物理地 址。 Flash控制器 1221、 1222、 1223基于该物理地址, 通过闪存接口 1231、 1232、 1 233将从闪存芯片 105中读出数据。 并基于 DMA微指令中的指示与其对应的緩冲存 储器 106中的存储单元的地址的字段, 从緩冲存储器 106中获得与该 DMA微指令相 对应的 DMA主机地址, 以及经由 DMA读接口 1212在主机 101与存储设备 102之间 发起 DMA传输, 将读出数据传输到主机 101的主机 RAM 722中由该 DMA主机地 址所指示的位置处。 闪存接口 1231、 1232、 1233经由多路共享器 1243与 DMA读接 口 1212相耜合, 使得从闪存接口 1231、 1232、 1233获得的数据均可以通过 DMA读 接口 1212传输到主机 RAM 722。 当闪存接口 1231、 1232、 1233从闪存芯片 105读 出数据后,完成控制电路 1242也基于在 DMA微指令中的指示与其对应的緩冲存储器 106中的存储单元的地址的字段,访问緩冲存储器 106 , 并进而获得 DMA数据部分的 长度, 并将 DMA数据部分的长度递减 (例如, 减 1或减去单位长度) 。 这样, 当该 DMA数据部分的长度变为 0时, 意味着对该 DMA描述符的操作完成。 继而, 可向 主机发送中断, 以指示对该 DMA描述符的操作完成。
在图 12所公开的存储设备中,可以支持对多个 DMA描述符 600的并发操作。 对于多个 DMA描述符 600的每一个, 通过在緩冲存储器 106中创建的链表, 将与一 个 DMA描述符 600相对应的 DMA数据关联在一起, 使得对多个 DMA 指令的操 作顺序变得不重要。
上面已经详细描述了存储设备执行数据写入操作或与写操作相关的 DMA描 述符的执行。 显然, 存储设备执行读操作也可以从本发明公开中获益。 例如, 可以在 读取命令中同时指定闪存芯片地址和緩冲存储器地址, 并利用緩冲存储器作为读出数 据的緩冲。 也可以在与读操作相关的 DMA描述符中描述緩冲存储器地址, 在将数据 从闪存芯片中读出后, 可利用緩冲存储器作为读出数据的緩存。
已经为了示出和描述的目的而展现了对本发明的描述, 并且不旨在以所公开 的形式穷尽或限制本发明。 对所属领域技术人员, 许多调整和变化是显而易见的。

Claims

权 利 要 求 书
1. 一种将数据写入存储设备的方法, 所述存储设备包括緩冲存储器和闪存存储 器, 所述存储设备与信息处理设备可通信地连接, 所述方法包括:
从信息处理设备接收第一 DMA描述符, 所述 DMA描述符包括用于所述信息处 理设备的地址、 用于所述闪存存储器的地址以及用于所述緩冲存储器的地址;
当所述第一 DMA描述符指示 DMA写操作时, 基于用于所述信息处理设备的地 址和用于所述緩冲存储器的地址, 以 DMA传输方式从所述信息处理设备将第一数据 写入到所述緩冲存储器;
基于用于所述闪存存储器的地址和用于所述緩冲存储器的地址,将所述緩冲存储 器中的所述第一数据, 写入到所述闪存存储器。
2. 根据权利要求 1所述的方法, 其中所述第一 DMA描述符包括第一 DMA描述 符命令和第一 DMA描述符数据, 所述第一 DMA描述符数据包括用于所述信息处理 设备的地址和用于所述緩冲存储器的地址, 所述第一 DMA描述符命令包括用于所述 闪存存储器的地址; 所述方法还包括:
将所述第一 DMA描述符数据变换为第一 DMA微指令, 所述第一 DMA微指令 指示用于所述闪存存储器的地址、用于所述信息处理设备的地址以及用于所述緩冲存 储器的地址;
其中, 当所述第一 DMA微指令指示 DMA写操作时, 基于用于所述信息处理设 备的地址和用于所述緩冲存储器的地址, 以 DMA传输方式从所述信息处理设备将第 一数据写入到所述緩冲存储器;
基于用于所述闪存存储器的地址和用于所述緩冲存储器的地址,将所述緩冲存储 器中的所述第一数据, 写入到所述闪存存储器。
3. 根据权利要求 1所述的方法, 其中所述第一 DMA描述符包括第一 DMA描述 符命令、 第一 DMA描述符数据以及第二 DMA描述符数据, 所述第一 DMA描述符 数据包括第一用于所述信息处理设备的地址和第一用于所述緩冲存储器的地址, 所述 第二 DMA描述符数据包括第二用于所述信息处理设备的地址和第二用于所述緩冲存 储器的地址, 所述第一 DMA描述符命令包括用于所述闪存存储器的地址; 所述方法 还包括:
将所述第一 DMA描述符数据变换为第一 DMA ^敫指令, 将所述第二 DMA描述 符数据变换为第二 DMA微指令, 所述第一 DMA微指令指示第一用于所述闪存存储 器的地址、 第一用于所述信息处理设备的地址以及第一用于所述緩冲存储器的地址, 所述第二 DMA微指令指示第二用于所述闪存存储器的地址、 第二用于所述信息处理 设备的地址以及第二用于所述緩冲存储器的地址, 其中所述第二闪存存储器地址与所 述第一闪存存储器地址相距预定偏移值;
其中, 当所述第一 DMA微指令指示 DMA写操作时, 基于第一用于所述信息处 理设备的地址和第一用于所述緩冲存储器的地址, 以 DMA传输方式从所述信息处理 设备将第一数据写入到所述緩冲存储器; 当所述第二 DMA微指令指示 DMA写操作 时, 基于第二用于所述信息处理设备的地址和第二用于所述緩冲存储器的地址, 以 DMA传输方式从所述信息处理设备将第二数据写入到所述緩冲存储器;
基于第一用于所述闪存存储器的地址和第一用于所述緩冲存储器的地址,将所述 緩冲存储器中的所述第一数据, 写入到所述闪存存储器; 基于第二用于所述闪存存储 器的地址和第二用于所述緩冲存储器的地址, 将所述緩冲存储器中的所述第二数据, 写入到所述闪存存储器。
4. 根据权利要求 1、 2中的任何一项所述的方法, 其中:
当将所述第一数据写入到所述闪存存储器之后, 向所述信息处理设备发送消息, 以指示对同所述用于所述緩冲存储器的地址的相对应的所述緩冲存储器的存储空间 的释放。
5. 根据权利要求 1、 2、 4中的任何一项所述的方法, 其中:
当将所述第一数据写入到所述緩冲存储器之后, 向所述信息处理设备发送消息, 以指示对所述第一 DMA描述符的操作完成。
6. 根据权利要求 3所述的方法, 其中:
当将所述第一数据与所述第二数据写入到所述闪存存储器之后,向所述信息处理 设备发送中断, 以指示对同所述第一用于所述緩冲存储器的地址和所述第二用于所述 緩冲存储器的地址的相对应的所述緩冲存储器的存储空间的释放。
7. 根据权利要求 3或 6所述的方法, 其中:
当将所述第一数据与所述第二数据写入到所述緩冲存储器之后,向所述信息处理 设备发送消息, 以指示对所述第一 DMA描述符的操作完成。
8. 一种存储设备, 所述存储设备包括緩冲存储器、 闪存存储器、 信息处理设备 接口以及控制电路, 所述存储设备与信息处理设备可通信地连接, 其中:
所述信息处理设备接口从信息处理设备接收第一 DMA描述符, 所述第一 DMA 描述符包括用于所述信息处理设备的地址、用于所述闪存存储器的地址以及用于所述 緩冲存储器的地址;
当所述控制电路识别出所述第一 DMA描述符指示 DMA写操作时, 基于用于所 述信息处理设备的地址和用于所述緩冲存储器的地址, 以 DMA传输方式从所述信息 处理设备将第一数据写入到所述緩冲存储器;
所述控制电路基于用于所述闪存存储器的地址和用于所述緩冲存储器的地址,将 所述緩冲存储器中的所述第一数据, 写入到所述闪存存储器。
9. 一种将数据写入存储设备的方法, 所述存储设备包括緩冲存储器和闪存存储 器, 所述存储设备与信息处理设备可通信地连接, 所述方法包括:
从信息处理设备接收第一写入命令, 所述第一写入命令包括要写入的数据、用于 所述闪存存储器的地址以及用于所述緩冲存储器的地址;
基于所述用于所述緩冲存储器的地址,将所述要写入的数据写入到所述緩冲存储 器;
基于用于所述闪存存储器的地址和用于所述緩冲存储器的地址,将所述緩冲存储 器中的所述要写入的数据, 写入到所述闪存存储器。
10. 根据权利要求 9所述的方法, 其中将所述要写入的数据写入到所述緩冲存储 器后, 向所述信息处理设备发送消息, 以指示对所述第一写入命令的操作完成。
11. 根据权利要求 9、 10所述的方法, 其中当将所述要写入的数据写入到所述闪 存存储器之后, 向所述信息处理设备发送消息, 以指示对同所述用于所述緩冲存储器 的地址的相对应的所述緩冲存储器的存储空间的释放。
12. 根据权利要求 9所述的方法, 其中将所述要写入的数据写入到所述闪存存储 器后, 向所述信息处理设备发送消息, 以指示对所述第一写入命令的操作完成以及对 同所述用于所述緩冲存储器的地址的相对应的所述緩冲存储器的存储空间的释放。
13. 一种存储设备, 所述存储设备包括緩冲存储器、 闪存存储器、 信息处理设备 接口以及控制电路, 所述存储设备与信息处理设备可通信地连接, 其中:
所述信息处理设备接口从信息处理设备接收第一写入命令,第一写入命令包括要 写入的数据、 用于所述闪存存储器的地址以及用于所述緩冲存储器的地址;
所述控制电路基于所述用于所述緩冲存储器的地址,将所述要写入的数据写入到 所述緩冲存储器;
所述控制电路基于用于所述闪存存储器的地址和用于所述緩冲存储器的地址,将 所述緩冲存储器中的所述要写入的数据, 写入到所述闪存存储器。
PCT/CN2013/075524 2012-05-12 2013-05-11 将数据写入存储设备的方法与存储设备 WO2013170731A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/400,467 US9395921B2 (en) 2012-05-12 2013-05-11 Writing data using DMA by specifying a buffer address and a flash memory address
EP13790266.4A EP2849077B1 (en) 2012-05-12 2013-05-11 Method for writing data into storage device and storage device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201210150077.8 2012-05-12
CN201210150077.8A CN102681952B (zh) 2012-05-12 2012-05-12 将数据写入存储设备的方法与存储设备

Publications (1)

Publication Number Publication Date
WO2013170731A1 true WO2013170731A1 (zh) 2013-11-21

Family

ID=46813910

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2013/075524 WO2013170731A1 (zh) 2012-05-12 2013-05-11 将数据写入存储设备的方法与存储设备

Country Status (4)

Country Link
US (1) US9395921B2 (zh)
EP (1) EP2849077B1 (zh)
CN (1) CN102681952B (zh)
WO (1) WO2013170731A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170013319A (ko) * 2014-05-30 2017-02-06 후아웨이 테크놀러지 컴퍼니 리미티드 데이터 관리 방법, 노드, 그리고 데이터베이스 클러스터를 위한 시스템
CN110716934A (zh) * 2019-10-09 2020-01-21 宁波三星医疗电气股份有限公司 数据存储方法、装置和电子设备

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105897859B (zh) * 2016-03-25 2021-07-30 北京书生云科技有限公司 一种存储系统
CN102681952B (zh) * 2012-05-12 2015-02-18 北京忆恒创源科技有限公司 将数据写入存储设备的方法与存储设备
US20140281194A1 (en) * 2013-03-15 2014-09-18 Seagate Technology Llc Dynamically-sizeable granule storage
US20160092118A1 (en) * 2014-09-26 2016-03-31 Intel Corporation Memory write management in a computer system
CN106257434B (zh) * 2015-06-16 2019-04-30 深圳市中兴微电子技术有限公司 一种基于增强型外设互连协议总线的数据传输方法及装置
CN106469119B (zh) * 2015-08-10 2020-07-07 北京忆恒创源科技有限公司 一种基于nvdimm的数据写缓存方法及其装置
US20170116117A1 (en) * 2015-10-26 2017-04-27 Sandisk Technologies Inc. Identifying storage descriptors based on a metric
US20170147517A1 (en) * 2015-11-23 2017-05-25 Mediatek Inc. Direct memory access system using available descriptor mechanism and/or pre-fetch mechanism and associated direct memory access method
US10423568B2 (en) * 2015-12-21 2019-09-24 Microsemi Solutions (U.S.), Inc. Apparatus and method for transferring data and commands in a memory management environment
CN107797759B (zh) * 2016-09-05 2021-05-18 北京忆恒创源科技有限公司 访问缓存信息的方法、装置与驱动器
CN107797760B (zh) * 2016-09-05 2021-06-11 北京忆恒创源科技有限公司 一种访问缓存信息的方法、装置与固态驱动器
TWI621946B (zh) * 2017-06-28 2018-04-21 緯創資通股份有限公司 排程方法、PCIe控制器及其相關電子系統
CN110212983B (zh) * 2018-02-28 2022-03-08 中航光电科技股份有限公司 一种fc信号和以太网信号的转换方法及装置
KR20190106228A (ko) * 2018-03-08 2019-09-18 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN108446009A (zh) * 2018-03-10 2018-08-24 北京联想核芯科技有限公司 掉电控制方法、装置、设备及介质
CN110647480B (zh) * 2018-06-26 2023-10-13 华为技术有限公司 数据处理方法、远程直接访存网卡和设备
CN109189759B (zh) * 2018-08-01 2021-11-19 华为技术有限公司 Kv存储系统中的数据读取方法、数据查询方法、装置及设备
CN110865952B (zh) * 2018-08-28 2022-07-29 上海忆芯实业有限公司 利用缓存优化dma传输
KR102691851B1 (ko) * 2018-08-29 2024-08-06 에스케이하이닉스 주식회사 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그 동작 방법
JP7326863B2 (ja) * 2019-05-17 2023-08-16 オムロン株式会社 転送装置、情報処理装置、および、データ転送方法
US11023400B1 (en) * 2020-01-20 2021-06-01 International Business Machines Corporation High performance DMA transfers in host bus adapters
US12079493B2 (en) 2021-11-17 2024-09-03 Samsung Electronics Co., Ltd. Storage devices and methods of operating storage devices
JP2023136082A (ja) * 2022-03-16 2023-09-29 キオクシア株式会社 メモリシステムおよび制御方法
US12056362B2 (en) 2022-09-28 2024-08-06 Kioxia Corporation Non-volatile storage device offloading of host tasks
US20240103765A1 (en) * 2022-09-28 2024-03-28 Kioxia Corporation Non-volatile storage device offloading of host tasks
CN115543219B (zh) * 2022-11-29 2023-04-18 苏州浪潮智能科技有限公司 一种对主机io处理的优化方法、装置、设备及介质
CN115904255B (zh) * 2023-01-19 2023-05-16 苏州浪潮智能科技有限公司 一种数据请求方法、装置、设备及存储介质
CN117421267B (zh) * 2023-10-09 2024-08-02 中科驭数(北京)科技有限公司 数据通道防死锁方法、装置、设备及介质
CN117991995B (zh) * 2024-03-26 2024-06-07 中国人民解放军海军潜艇学院 一种sd卡文件连续读或写控制方法、系统及存储设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1794214A (zh) * 2005-12-22 2006-06-28 北京中星微电子有限公司 一种对非易失性存储器进行直接存储访问的方法及其装置
US7380115B2 (en) * 2001-11-09 2008-05-27 Dot Hill Systems Corp. Transferring data using direct memory access
CN101221544A (zh) 2007-01-10 2008-07-16 国际商业机器公司 用于执行dma块移动的方法及dma设备
CN101963891A (zh) * 2010-09-25 2011-02-02 成都市华为赛门铁克科技有限公司 数据存储处理方法与装置、固态硬盘系统与数据处理系统
CN102043689A (zh) 2010-12-28 2011-05-04 武汉固捷联讯科技有限公司 一种用于固态存储设备的容错设计方法
CN102681952A (zh) * 2012-05-12 2012-09-19 北京忆恒创源科技有限公司 将数据写入存储设备的方法与存储设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8037234B2 (en) * 2003-12-02 2011-10-11 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
KR100598097B1 (ko) * 2003-12-29 2006-07-07 삼성전자주식회사 듀얼 칩 패키지
US7620748B1 (en) * 2006-04-06 2009-11-17 Bitmicro Networks, Inc. Hardware assisted non-volatile memory-to-input/output direct memory access (DMA) transfer
KR100904758B1 (ko) * 2007-02-08 2009-06-29 삼성전자주식회사 버퍼 메모리를 포함하는 플래쉬 메모리 장치 및 시스템,플래쉬 메모리 장치의 데이터 업데이트 방법
US8127089B1 (en) * 2007-02-14 2012-02-28 Marvell International Ltd. Hard disk controller which coordinates transmission of buffered data with a host
TWI385516B (zh) * 2008-08-12 2013-02-11 Phison Electronics Corp 快閃記憶體儲存系統及其資料寫入方法
US8447908B2 (en) * 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
US8583984B2 (en) * 2010-12-22 2013-11-12 Intel Corporation Method and apparatus for increasing data reliability for raid operations
WO2012106362A2 (en) * 2011-01-31 2012-08-09 Fusion-Io, Inc. Apparatus, system, and method for managing eviction of data

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7380115B2 (en) * 2001-11-09 2008-05-27 Dot Hill Systems Corp. Transferring data using direct memory access
CN1794214A (zh) * 2005-12-22 2006-06-28 北京中星微电子有限公司 一种对非易失性存储器进行直接存储访问的方法及其装置
CN101221544A (zh) 2007-01-10 2008-07-16 国际商业机器公司 用于执行dma块移动的方法及dma设备
CN101963891A (zh) * 2010-09-25 2011-02-02 成都市华为赛门铁克科技有限公司 数据存储处理方法与装置、固态硬盘系统与数据处理系统
CN102043689A (zh) 2010-12-28 2011-05-04 武汉固捷联讯科技有限公司 一种用于固态存储设备的容错设计方法
CN102681952A (zh) * 2012-05-12 2012-09-19 北京忆恒创源科技有限公司 将数据写入存储设备的方法与存储设备

Non-Patent Citations (1)

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

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170013319A (ko) * 2014-05-30 2017-02-06 후아웨이 테크놀러지 컴퍼니 리미티드 데이터 관리 방법, 노드, 그리고 데이터베이스 클러스터를 위한 시스템
US10379977B2 (en) 2014-05-30 2019-08-13 Huawei Technologies Co., Ltd. Data management method, node, and system for database cluster
KR101983208B1 (ko) * 2014-05-30 2019-08-28 후아웨이 테크놀러지 컴퍼니 리미티드 데이터 관리 방법, 노드, 그리고 데이터베이스 클러스터를 위한 시스템
US10860447B2 (en) 2014-05-30 2020-12-08 Huawei Technologies Co., Ltd. Database cluster architecture based on dual port solid state disk
CN110716934A (zh) * 2019-10-09 2020-01-21 宁波三星医疗电气股份有限公司 数据存储方法、装置和电子设备
CN110716934B (zh) * 2019-10-09 2022-07-26 宁波三星医疗电气股份有限公司 数据存储方法、装置和电子设备

Also Published As

Publication number Publication date
EP2849077A4 (en) 2015-12-09
US20150143031A1 (en) 2015-05-21
EP2849077A1 (en) 2015-03-18
US9395921B2 (en) 2016-07-19
EP2849077B1 (en) 2017-10-25
CN102681952B (zh) 2015-02-18
CN102681952A (zh) 2012-09-19

Similar Documents

Publication Publication Date Title
WO2013170731A1 (zh) 将数据写入存储设备的方法与存储设备
WO2013170730A1 (zh) Dma传输方法及系统
US11550477B2 (en) Processing host write transactions using a non-volatile memory express controller memory manager
US10838665B2 (en) Method, device, and system for buffering data for read/write commands in NVME over fabric architecture
US9785545B2 (en) Method and apparatus for providing dual memory access to non-volatile memory
US9696942B2 (en) Accessing remote storage devices using a local bus protocol
US9727503B2 (en) Storage system and server
US11467764B2 (en) NVMe-based data read method, apparatus, and system
US9563367B2 (en) Latency command processing for solid state drive interface protocol
WO2013185636A1 (zh) 控制数据传输过程中的中断的方法
WO2013185637A1 (zh) 存储设备及其中断控制方法
US10901624B1 (en) Dummy host command generation for supporting higher maximum data transfer sizes (MDTS)
WO2020000485A1 (zh) 一种基于NVMe的数据写入方法、装置及系统
CN112765055B (zh) 存储设备的控制部件
CN112764669B (zh) 一种硬件加速器
CN113485643B (zh) 用于数据存取的方法及数据写入的控制器
WO2020087931A1 (zh) 一种数据备份方法、装置及系统
CN113515234B (zh) 一种用于控制数据读出到主机的方法及控制器
CN102819511B (zh) 存储设备以及在该存储设备中创建链表的方法
US20240311291A1 (en) Memory system and method of controlling the memory system
US20240168876A1 (en) Solving submission queue entry overflow using metadata or data pointers
CN117369721A (zh) 一种数据读写处理系统和方法

Legal Events

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

Ref document number: 13790266

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 14400467

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

REEP Request for entry into the european phase

Ref document number: 2013790266

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2013790266

Country of ref document: EP