CN107797763A - Solid-state drive, driver and the method for controlling solid-state drive - Google Patents

Solid-state drive, driver and the method for controlling solid-state drive Download PDF

Info

Publication number
CN107797763A
CN107797763A CN201710749551.1A CN201710749551A CN107797763A CN 107797763 A CN107797763 A CN 107797763A CN 201710749551 A CN201710749551 A CN 201710749551A CN 107797763 A CN107797763 A CN 107797763A
Authority
CN
China
Prior art keywords
block
stream
queue
lba
logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710749551.1A
Other languages
Chinese (zh)
Other versions
CN107797763B (en
Inventor
杨静珮
崔昌皓
拉吉尼坎塔·潘杜兰甘
卫杰·巴拉克里什楠
拉玛瑞吉·潘第安
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/344,422 external-priority patent/US10282324B2/en
Priority claimed from US15/499,877 external-priority patent/US10656838B2/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN107797763A publication Critical patent/CN107797763A/en
Application granted granted Critical
Publication of CN107797763B publication Critical patent/CN107797763B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

A kind of solid-state drive, driver and the method for controlling solid-state drive are disclosed.The SSD may include the flash memory for data storage and can support multiple device streams in SSD.SSD controller can manage the reading and write-in of the data for flash memory, and can store the memory for submitting queue and block stream mapper.Flash translation layer (FTL) may include:Receiver, logical block address LBA writing commands are included for receiving;LBA mappers, for LBA to be mapped into block-identified symbol (ID);Stream selection logic, for being based on block ID selection stream IDs using block stream mapper;Stream ID adder, for stream ID to be added into said write order;Queue circuit, submitted for block ID to be placed in queue;Background logic, for removing more new block stream mapper after Except block ID from submission queue.

Description

Solid-state drive, driver and the method for controlling solid-state drive
This application claims No. 62/383,302 U.S. Provisional Patent Application submitted for 2nd in September in 2016,2016 years 11 No. 15/344,422 U.S. Patent application that the moon is submitted on the 4th, No. 62/458,566 U.S. submitting for 13 days 2 months for 2017 face When patent application, on March 14th, 2017 No. 62/471,350 U.S. Provisional Patent Application submitting and on April 27th, 2017 The rights and interests for the 15/499th, No. 877 U.S. Patent application submitted, the application are contained in by reference for all purposes This.
Technical field
Present inventive concept relates in general to solid-state drive (SSD), relates more specifically to manage multithread SSD (multi- Stream SSD) in stream.
Background technology
Multithread solid-state drive (SSD) allows the intelligent layout of input data (incoming data), to minimize inside The influence of garbage reclamation (GC) simultaneously reduces write-in amplification.SSD can be sent to by the way that single label (stream ID) is added to from main frame Each writing commands realize multithread.Based on the label, SSD can be by packet to public same block.
But in order to utilize multithread device, support multithread using must be known by SSD so that software source can distribute to public cocurrent flow Data with like attribute (such as, archival life).Needed to carry out software multithread understanding (multi-stream-aware) Change software.But change the risk that accidental change is made in the operation that any software is carried to software.And, it is assumed that city Substantial amounts of different software product be present on, it is expected that these a small amount of software products of modification seem to be not necessarily most to support multithread Good countermeasure.
There are still the demand for the method that multithread is supported in the case of to that need not be changed in software.
The content of the invention
According to one embodiment of present inventive concept, there is provided a kind of solid-state drive SSD, the SSD include:Flash memory, use In data storage and support multiple device streams in SSD;SSD controller, for managing response in multiple writing commands and by number According to flash memory is written to, the SSD controller includes being used to store the memory for submitting queue and block stream mapper, wherein, institute Stating SSD controller includes flash translation layer (FTL), and the flash translation layer (FTL) includes:Receiver, reception include writing for logical block address LBA Enter order;LBA mappers, LBA is mapped to block-identified symbol ID;Stream selection logic, area is based on using block stream mapper Block ID selects stream ID;Stream ID adder, stream ID is added to said write order;Queue circuit, block ID is placed in submission queue In;Background logic, Except block ID is gone to carry out more new block stream mapper from queue is submitted.
Block stream mapper may include succession, frequency, immediate cause SFR tables, and the SFR tables include block ID and for block ID stream ID.
Background logic may include:Succession logic, the choosing if LBA and the 2nd LBA orders of previously written order Select previous stream.
Background logic may include:Immediate cause logic, for based on the current accessed time for block ID, for block ID's Previously visited time and degradation period calculate immediate cause weight;Access count adjuster, the visit based on immediate cause weight regulation block ID Number receive customers to produce the access count of regulation;Stream ID adjuster, stream is adjusted based on the access count of the regulation for block ID ID。
Block stream mapper may include node entries, and the node entries include block ID and the stream ID for block ID.
Background logic may include:Upgrade logic, determine when to upgrade stream ID based on block ID;Second queue circuit, response In block ID being placed in for block ID stream ID and multiple stream IDs first queue in corresponding multiple queues respectively;Degrade Logic, determine when to degrade stream ID based on block ID.
Degradation logic may include comparator and decrement device, wherein, comparator determine for block ID out-of-service time whether Pass by, and if block ID out-of-service time passes by, be then reduced device and reduce stream ID;Second queue circuit can be grasped Make to be placed in block ID corresponding described more respectively with the multiple stream ID come the stream ID in response to the reduction for block ID Second queue in individual queue.
According to another embodiment of present inventive concept, there is provided a kind of driver used in computer systems, the drive Dynamic device includes:Receiver, for receiving the writing commands for solid-state drive SSD, said write order is with including logical block Location LBA;LBA mappers, for LBA to be mapped into block-identified symbol ID;Stream selection logic, Framework computing is stored in for use Block stream mapper in memory in machine system, to be based on block ID selection stream IDs;Stream ID adder, for stream ID to be added It is added to said write order;Queue circuit, for block ID to be placed in the submission queue of storage in memory;Background logic, For removing Except block ID and more new block stream mapper from submission queue.
Block stream mapper may include succession, frequency, immediate cause SFR tables, and the SFR tables include block ID and for block ID stream ID.
Background logic may include:Succession logic, the choosing if LBA and the 2nd LBA orders of previously written order Select previous stream.
Background logic may include:Immediate cause logic, based on the current accessed time for block ID, for the previous of block ID Access time and degradation period calculate immediate cause weight;Access count adjuster, the visit based on immediate cause weight metering needle to block ID Number receive customers to produce the access count of regulation;Stream ID adjuster, stream is adjusted based on the access count of the regulation for block ID ID。
Block stream mapper may include node entries, and the node entries include block ID and the stream ID for block ID.
Background logic may include:Upgrade logic, determine when to upgrade stream ID based on block ID;Second queue circuit, response In block ID being placed in for block ID stream ID and multiple stream IDs first queue in corresponding multiple queues respectively;Degrade Logic, determine when to degrade stream ID based on block ID.
Degradation logic may include comparator and decrement device, wherein, comparator be used for determine block ID out-of-service time whether Pass by, if block ID out-of-service time passes by, decrement device is used to reduce stream ID;Second queue circuit can be grasped Make that block ID is placed in into the multiple team corresponding with the multiple stream ID difference come the stream ID of the reduction in response to block ID Second queue in row.
According to another embodiment of present inventive concept, there is provided a kind of method for controlling solid-state drive SSD, methods described bag Include:Writing commands are received from software source;Determine the logical block address LBA in said write order;Identification is for including the LBA Solid-state drive SSD on block block-identified symbol ID;Access the stream ID associated with block ID;Stream ID is distributed into write-in Order;The stream ID processing writing commands of distribution are used on SSD;Perform the background update with the block ID stream IDs associated.
Methods described may also include:Determine whether the 2nd LBA in the LBA and the second writing commands is order;Such as The 2nd LBA in LBA described in fruit and the second writing commands is order, then:It is determined that distribute to the second of the second writing commands ID;Second ID is distributed into said write order.
Execution may include with the step of background update of the block ID stream IDs associated:Block ID is added to submission queue; When block ID is submitting the head of queue, Except block ID is removed from queue is submitted.
Execution may include with the step of background update of the block ID stream IDs associated:Access meter of the increase for block ID Number;The immediate cause weight for block ID is calculated in response to the current accessed time for block ID and previously visited time;Ring The access count for block ID should be updated in immediate cause weight;Determined in response to the access count of renewal for block ID's Stream ID.
Execution may include with the step of background update of the block ID stream IDs associated:Block ID is placed in corresponding with stream ID In queue, wherein, the queue corresponding with stream ID is one in multiple queues;When block ID reaches the head of queue, Determine whether to degrade block ID.
Perform with also including the step of the background update of the block ID stream IDs associated in response to access count and device lifetime And determine the out-of-service time for block ID;The step of determining whether to degrade block ID when block ID reaches the head of queue Including:If block ID out-of-service time passes by,:Except block ID is removed from queue corresponding with stream ID;Reduce stream ID;Will Block ID is placed in second queue corresponding with the stream ID of reduction.
Brief description of the drawings
Fig. 1 shows the machine with solid-state drive (SSD) of one embodiment according to present inventive concept.
Fig. 2 shows the additional detail of Fig. 1 machine.
Fig. 3 shows Fig. 1 SSD details.
Fig. 4 shows the details of Fig. 3 flash translation layer (FTL).
Fig. 5 shows to be mapped to block-identified symbol (ID) and then is mapped to the various orders of stream ID used in Fig. 1 SSD Logical block address (LBA).
Fig. 6 shows the Fig. 5 for the SSD for being modified to the stream ID for including Fig. 5 and being transferred to Fig. 1 various orders.
Fig. 7 shows for Fig. 5 LBA to be mapped to Fig. 5 block ID ALU (ALU).
Fig. 8 show according to the first embodiment of present inventive concept can be used for by block ID be mapped to stream ID succession, Frequency and immediate cause (Sequential, Frequency, Recency;SFR) table.
Fig. 9 shows the attached of Fig. 3 of the first embodiment according to present inventive concept flash translation layer (FTL) and Fig. 4 background logic Refinement section.
Figure 10 shows the details of Fig. 9 succession logic.
Figure 11 is shown with Fig. 9 immediate cause logical calculated immediate cause weight.
Figure 12 shows to adjust access count using Figure 11 immediate cause weight in Fig. 9 access count adjuster.
The stream ID adjuster that Figure 13 is shown with Fig. 9 calculates stream ID from the access count of Figure 12 regulation.
Figure 14 shows the node that can be used for block ID being mapped to stream ID of the second embodiment according to present inventive concept.
Figure 15 shows the details of Fig. 4 of the second embodiment according to present inventive concept background logic.
Figure 16 shows upgrading and the degradation of the block ID in Figure 15 queue.
Figure 17 shows the details of Figure 15 upgrade logic.
Figure 18 shows to calculate stream ID according to the access count from regulation of the second embodiment of present inventive concept.
Figure 19 shows the details of Figure 17 block inactive logic (chunk expiration logic).
Figure 20 shows the details of Figure 15 degradation logic.
Figure 21 A- Figure 21 B show the writing commands for being used to determine to be used for Fig. 5 of one embodiment according to present inventive concept Stream ID instantiation procedure flow chart.
Figure 22 shows that Fig. 5 LBA is mapped to Fig. 5 by Fig. 4 of one embodiment according to present inventive concept LBA mappers Block ID instantiation procedure flow chart.
Figure 23 A- Figure 23 B show to be used to be used for using succession logical renewal according to the first embodiment of present inventive concept The flow chart of the instantiation procedure of the stream ID of block.
Figure 24 shows showing for the background update for being used to perform Fig. 8 SFR tables of the first embodiment according to present inventive concept The flow chart of example process.
Figure 25 A- Figure 25 C show the example of the background update of Figure 14 of the second embodiment according to present inventive concept node The flow chart of process.
Embodiment
The embodiment of present inventive concept will be made now referring in detail to, wherein, present inventive concept is shown in the drawings The example of embodiment.In following embodiment, substantial amounts of detail is set forth, to ensure to present inventive concept Comprehensive understanding.It will be appreciated, however, that those of ordinary skill in the art can put into practice this hair in the case of these no details Bright design.In other instances, known method, process, main frame, circuit and network are not described in detail, so that will not Necessarily obscure the aspect of embodiment.
It will be understood that although the grade of term first, second can be used to describe various elements herein, these elements should not Limited by these terms.These terms are only used for making a distinction an element with another element.For example, this hair is not being departed from In the case of the scope of bright design, the first module is referred to alternatively as the second module, and similarly, the second module is referred to alternatively as the first mould Block.
The term used in the description of present inventive concept is only for describing herein the purpose of specific embodiment, without It is intended to limitation present inventive concept.Unless the context clearly dictates otherwise, otherwise such as the described and claimed of present inventive concept Singulative used in book is also intended to include plural form.It will also be understood that represent as used herein the term " and/or " simultaneously Include one or more related any and all possible combinations listd.It will also be understood that art ought be used in this manual When language " comprising " and/or "comprising", show feature, entirety, step, operation, element and/or component in the presence of narration, but do not arrange Except presence or addition one or more other features, entirety, step, operation, element, component and/or their groups.The group of accompanying drawing What part and feature were not necessarily drawn to scale.
Propose a kind of apparatus and method for being used to perform automatic stream detection and distribution independent of application layer.Flowing distribution can Workload detection (runtime workload detection) during based on operation, and can be independent of application.Stream distribution can be answered Use the solid-state drive (SSD) of usable multithread.
The realization of stream distributorship agreement has some advantages.First, using need not at all be changed.But distribution applies oneself The application of flow priority can be included in this method as factor.For example, stream distributorship agreement can thoroughly postpone the stream using distribution Priority.Or any desired weighted value can be used in stream distributorship agreement, to perform the flow priority and meter of combination application distribution The weighted sum of the stream distribution of calculation.
Second, it can utilize automatic stream detection and distribution using any application for the device that multithread can be used in addition.3rd, should With stream relevant information need not be known from hardware.4th, stream distributorship agreement can individually manage the SSD of each usable multithread, make Using multiple SSD can be used, or even it is used in mixed way the SSD of usable multithread and the SSD of unusable multithread.5th, if The initial address (or if stream distributorship agreement is implemented in file system layer, document misregistration) of writing commands can be true It is fixed, then stream distribution can system any desired layer (such as, in file system, in block layer, in device driver, In SSD (for example, in flash translation layer (FTL)) etc.) it is performed.
SSD whole address space is divided into the block of some fixed sizes.These block sizes can be any Desired size:For example, the multiple of 512 sections.The starting logic block address (LBA) of request can be by by LBA divided by per area The section quantity of block or more generally by LBA divided by block size, and it is converted into block-identified symbol (ID).
In the first embodiment of present inventive concept, succession, frequency and immediate cause (SFR) method can be used for determining flow point Match somebody with somebody:
● succession:If the starting LBA and the end LBA of previous Request that newly ask are neighbouring, (that is, writing commands include suitable Sequence writes), the second writing commands can be allocated the stream ID as writing commands earlier.This method is assumed:If one group The request of order is issued in short time period, then they have the similar life-span.Because writing commands (can be answered by different sources With file system, virtual machine etc.) send, and can be mixed, so in terms of SSD visual angle, writing commands can not follow strict Orderly pattern.To illustrate this possibility, succession can be relevant with the quantity of the previous commands in window (its size is variable) Ground is determined.For example, the window that size is 4 can check whether input request is order with any one in previous four requests 's.
● frequency:Frequency represents the number that starting LBA has been accessed.Frequency can be measured as access count.Whenever block When accessed (writing), the access count increase by 1 of the block.Higher access count indicates the relatively short life of the block.Frequency is therefore Reflect the temperature of data block.
● immediate cause:Immediate cause indicates the temporal locality of block.For example, a block can be frequent in special time period Ground accesses, and accumulates high access count, and inactive afterwards.In this case, it is undesirable to be maintained at block for a long time In hot-fluid.Only when block is accessed frequently within the nearest period, it is hot just to think block.In present inventive concept In one embodiment, whole blocks can be directed to and predefine degradation period.If block is in last N number of degradation period without interviewed Ask, then access count will be divided by 2N
It can be determined for the stream ID of block by both frequency and immediate cause (if it is available, also succession).If area Block is frequently accessed, then frequency can upgrade to block hotter stream;And if block is not lived during last degradation period Jump, then the block can be downgraded to colder stream by immediate cause.In one embodiment of present inventive concept, logarithmic scale can be used for will Access count is converted to stream ID, and this can reflect the fact that the quantity of device stream is much smaller than the value for access count.Therefore, example Such as:
Immediate cause weight=2((current time-last access time)/degradation period)
Stream ID=log (access count/immediate cause weight)
Renewal for the stream ID of block can be run as background task, be minimized to input/output (I/O) performance Influence.
In the second embodiment of present inventive concept, more queuing methods can be used.For each device stream, queue can be determined Justice:Due to multiple device streams be present, so there will be multiple queues.More Queue Algorithms are divided into two different function moulds Block.One module is responsible for each block being upgraded to compared with high queue from relatively low queue;Another mould block processes will it is active less or Sluggish block is downgraded to relatively low queue from compared with high queue.The access count of block is higher, block be regarded as it is hotter, because This, the block is placed in compared with high queue.Upgrading and degradation are run both as background task, are minimized to I/O performances Influence.
When block is accessed for the first time, it is assigned to stream 0 (lowest stream) and is placed in corresponding queue.Otherwise, Block is removed from current queue, and its access count is updated, and block is placed in (possibly) new queue.Any side Method can be used for determining suitable queue based on access count:For example, the logarithm of access count can be calculated as new stream ID (it Identify corresponding queue).Upgraded module can be also checked (based on access count) to check whether block is current most hot Block.If it is, device lifetime can be set based on the interval between the access of this block.Finally, upgrade logic can Last access time based on device lifetime and block, to determine the out-of-service time of block.
To make block degrade, degradation module checks block when the head of their queue is reached in block.If that area Block does not spend his out-of-service time also, then the block can individually be left.Otherwise, block can be gone from its current queue Remove, be allocated the new out-of-service time, and be lowered to relatively low queue (that is, being allocated relatively low stream ID).
If in addition, it is most hot block just in degraded block, the block is (true by the out-of-service time in a period of time It is fixed) it is interior also without accessed.Therefore, the block is no longer hot that another block from that queue can be selected as most hot The block suitable branch of device lifetime (have).The most hot block of this new selection can be next area in that queue Block, or it can be the last block into that queue.
Fig. 1 shows the machine with solid-state drive (SSD) of one embodiment according to present inventive concept.In Fig. 1, Show machine 105.Machine 105 can be that any desired machine (includes but is not limited to desktop computer or calculating on knee Machine, server (separate server or rack server)) or can be from any other dress that the embodiment of present inventive concept is benefited Put.Machine 105 may also include special portable formula computing device, tablet PC, smart phone and other computing devices.Machine 105 can run any desired application:The example that database application has been, but the embodiment of present inventive concept extend to it is any Desired application.
No matter the concrete form of machine 105, it may include processor 110, memory 115 and solid-state drive (SSD) 120.Processor 110 can be various processors:For example, Intel's Xeon, Celeron, Itanium or Atom processor, AMD Opteron processors and arm processor etc..Although Fig. 1 shows single processor, machine 105 may include any quantity Processor.Memory 115 can be any kind of memory, such as, flash memory, static RAM (SRAM), Lasting random access memory, Ferroelectric Random Access Memory (FRAM) or nonvolatile RAM (NVRAM) are (such as, Magnetoresistive RAM (MRAM) etc., but usually DRAM.Storage 115 can also be any phase of different memory type The combination of prestige.Memory 115 can be by being also that the Memory Controller 125 of part of machine 105 controls.
SSD 120 can be any kind of SSD, and can even be extended to including (even if when not using flash memory) Perform the other kinds of memory of garbage reclamation.SSD 120 can be by can control in the device driver 130 in memory 115.
Fig. 2 shows the additional detail of Fig. 1 machine 105.Reference picture 2, typically, machine 105 are included at one or more Device 110 is managed, wherein, processor 110 may include Memory Controller 125 and clock 205, and it can be used for coordinating machine 105 The operation of component.Processor 110 is also connected to memory 115, wherein, as an example, memory 115 may include arbitrary access Memory (RAM), read-only storage (ROM) or other state preserving mediums.Processor 110 be also connected to SSD 120 and Network connector 210, wherein, network connector 210 can be such as ethernet connector or wireless connector.Processor 110 Bus 215 is also connected to, wherein, bus 215 attaches user interface 220 in other assemblies and input/defeated can be used Go out the input/output interface port of the management of engine 225.
Fig. 3 shows Fig. 1 SSD 120 details.In figure 3, SSD 120 may include host interface logic 305, SSD controls Device 310 processed and various flash chip 315-1 to 315-8, wherein, flash chip 315-1 to flash chip 315-8 can be organized into Various passage 320-1 are into passage 320-4.Host interface logic 305 can manage logical between Fig. 1 SSD 120 and machine 105 Letter.SSD controller 310 can be managed to flash chip 315-1 to flash chip 315-8 read operation and write operation and rubbish Rubbish reclaimer operation.SSD controller 310 may include for performing the flash translation layer (FTL) 325 of some in these management.In the present invention Design has in SSD 120 embodiment for being responsible for that writing commands are distributed to stream, and SSD controller 310 may include to be used for branch Hold the memory 330 of stream distribution.Memory 330 may include to submit queue 335 and block stream mapper 340.Submit queue 335 can It is used for storage on the information of the block influenceed by various writing commands.When writing commands are received, ordered with these write-ins Make the block (or not equal to, the identifier (ID) of these blocks) of association to be placed in submit in queue 335.Then, as rear A part (to minimize the influence to foregrounding) for platform processing, block can remove from submitting in queue 335, for these areas The stream distribution of block can be updated.Block stream mapper 340 can store the information what stream to be presently allocated to various blocks on: This information can be updated to submit queue 335 in block ID result (or submit queue 335 in block ID lack The block lack-not being being used can be assigned to lower priority stream as untapped result).Various flash chip 315-1 Multiple device streams in SSD 120 can be supported to flash chip 315-8.Will be below in reference to Fig. 5 and Fig. 7 blocks discussed further Concept.
Although SSD 120 is shown as including eight sudden strains of a muscle being organized into four passage 320-1 to passage 320-4 by Fig. 3 Chip 315-1 to flash chip 315-8 is deposited, but the embodiment of present inventive concept can be supported to be organized into any amount of passage In any amount of flash chip.
Fig. 4 shows the details of Fig. 3 flash translation layer (FTL) 325.In Fig. 4, flash translation layer (FTL) 325 is shown as including receiving Device 405, logical block address (LBA) mapper 410, stream selection logic 415, stream ID adder 420, transmitter 425, queue circuit (queuer) 430 and background logic 435.Receiver 405 can from various software sources (such as, operating system, application, file system, Remote machine and other such sources) receive writing commands.For given writing commands, LBA mappers 410 will can write The LBA used in order is mapped to the particular block on Fig. 1 SSD 120.Then, stream selection logic 415 may be selected to be suitable to be somebody's turn to do The stream of block.Fig. 3 block stream mapper 340 can be used to be selected to complete this stream for stream selection logic 415, and may include to be used for The block stream mapper 340 of search graph 3 is with the logic of the corresponding entry (entry) of the block for finding with selecting.Alternatively, stream choosing Select logic 425 and other method can be used:For example, by calculating stream ID (with being described referring to Figure 13 from the access count of block Content it is similar), or by circulate (round robin) method distribution stream (to be uniformly distributed and write on the device stream of whole Enter order).Then, stream ID of the logic by selection for writing data into writing commands can be used in stream ID adder 420 It is added to writing commands.Once stream ID has been affixed to writing commands, then transmitter 425 can be sent to Fig. 1 SSD 120 Writing commands (have additional stream ID) are to perform.
Queue circuit 430 can take the block ID for the identification of writing commands, and that block ID can be added into Fig. 3's Submit queue 335.The logic of the submission queue 335 for block ID to be added to Fig. 3 can be used in queue circuit 430.For example, it is lined up Device 430 may include the pointer of the afterbody for the submission queue 335 for pointing to Fig. 3, and can be in the afterbody for the submission queue 335 for pointing to Fig. 3 The pointer submission queue 335 that can be updated to point to Fig. 3 the next position after block ID is written to Fig. 3 submission queue In 335 afterbody.Finally, block ID will be lined up from Fig. 3 submission queue 335 by solution, and hereafter, background logic 435 can be arranged solution The block ID of team (de-queued) is operated.Background logic 435 is further described below with reference to Fig. 9 and Figure 15.
Background logic 435 can be realized in any desired way.For example, background logic 435 can be accessed whenever block Come simple operations as far as possible, (this will be related to the block being almost used in data structure storage device for the access count of Shi Zengjia blocks The logic of lookup is performed in ID and stream ID and for increasing the stream ID positioned by that way).But so simple realize will Mean the stream that final each block will be numbered using highest, and the stream of relatively low numbering is not used.More relevant realization can examine Consider whether block is not widely used, and the flow priority of block can be reduced to be matched.Referring to Fig. 8-Figure 13 and What Figure 14-Figure 20 described present inventive concept realizes background logic 435 to obtain the two of this result embodiments by different way.
Although background logic 435 is described as running by " backstage " (hence obtaining one's name), stream distribution is performed on backstage more The new influence for being easy to minimize the SSD 120 of reading and write-in to(for) Fig. 1.Assuming that stream distribution can not influence Fig. 1 SSD It is updated in the case of 120 performance, then the reasons why not allowing background logic 435 to be operated on " foreground ".If for example, Fig. 1 SSD 120 includes processor, and (in other words, Fig. 1 SSD 120, which is provided, calculates (In-Storage in memory Computing, ISC)), then this processor in Fig. 1 SSD 120 can potentially be directed to not influenceing Fig. 1 SSD Real-time update stream distributes in the case of 120 reading and write performance.It that case, background logic 435 can be immediately Operation updates to perform stream distribution, without block ID to be placed in in Fig. 3 submission queue 335 or waited background logic 435 The time that foregrounding can not be influenceed and operated.
In Fig. 4, flash translation layer (FTL) 325 is shown as being responsible for performing stream distribution and stream ID renewal.But in present inventive concept Other embodiment in, the one or more assemblies shown in Fig. 4 can be implemented with software, and can be included as example scheming The part of 1 Memory Controller 125, Fig. 1 device driver 130, or the one or more assemblies shown in Fig. 4 can quilt It is embodied as that write request can be intercepted and the library (library routine) of stream is combined before writing commands are sent, or can The single specialized hardware interior elsewhere being implemented as in Fig. 1 SSD 120 or machine 105.For the mesh of this discussion , even if the realization concentrated on Fig. 4-Figure 12 description in flash translation layer (FTL) 325, to the flow point of the component execution by Fig. 4 Any description matched somebody with somebody is also intended to the realization for being included in any ad-hoc location.
Although LBA mappers 410 and stream selection logic 415 are shown as stand-alone assembly by Fig. 4, the structure of these components Single component can be logically combined in logic means into.More generally useful, the embodiment of present inventive concept can be by Fig. 4-Fig. 6, Fig. 9-Figure 13 and figure The 15 any independent assemblies for showing and describing into Figure 20 are combined into unification component.
Fig. 5 shows to be mapped to block-identified symbol (ID) and then is mapped to the various orders of stream ID used in Fig. 1 SSD Logical block address (LBA).Although the embodiment of present inventive concept can support any amount of writing commands, in Figure 5, Show writing commands 505-1,505-2 and 505-3.In addition, although Fig. 5 illustrate only writing commands, present inventive concept Embodiment can also be applied equally to reading order.Writing commands 505-1 to writing commands 505-3 may include to specify writing commands 505-1 to writing commands 505-3 starting LBA LBA 510-1 to LBA 510-3.
LBA mappers 410 may access to the LBA 510-1 to LBA 510-3 from writing commands 505-1 to 505-3.Once LBA 510-1 to LBA 510-3 are read from writing commands 505-1 to 505-3, and LBA mappers 410 just can determine that accordingly Block ID 515-1 to 515-3.Block can be considered as that SSD 120 logical subdivision (but does not need block and SSD 120 Other logical subdivisions (such as, block and page) are alignd).The quantity of block can be determined in any desired way:For example, by choosing The desired size of constituency block has simultaneously been proved to by SSD 120 size divided by that block size, or by selection The quantity of enough effectiveness is provided in the case of the too many processing that need not be performed by Fig. 4 background logic 435 (and by SSD 120 divided by that quantity).Block may not have identical size, but unified big I simplifies the behaviour of LBA mappers 410 Make.Thus, for example, a block may include the 128KB data in SSD 120, and another block may include in SSD 120 512KB data.Block is determined due to shifting function can be used to perform from LBA, so size is particularly advantageous for the block of 2 power, But the embodiment of present inventive concept can support the block of any desired size.
LBA mappers 410 can determine block ID 515-1 to block ID 515-3 with any various ways.For example, LBA Mapper 410 may include to be used for from LBA 510-1 to LBA 510-3 mathematically calculation block ID 515-1 to block ID 515-3 ALU (ALU) 520.Or LBA mappers 410 may include address mask 525, wherein, address mask 525 can Various positions are masked out from LBA 510-1 to LBA 510-3, are left block ID 515-1 to block ID 515-3.
Once block ID 515-1 to block ID 515-3 have been determined, stream selection logic 415 just can determine that by for The stream of that block.Block ID 515-1 to 515-3 can be used to be determined accordingly from block map device 340 in stream selection logic 415 Stream ID 530-1 to 530-3.
Fig. 6 shows to be modified to the stream ID 530-1 to 530-3 for including Fig. 5 and is transferred to Fig. 1 SSD Fig. 5 life Make 505-1 and 505-2.(for space reasons, Fig. 6 illustrate only three writing commands and three data associated from Fig. 5 In two writing commands and two data associated.But Fig. 6 is summarized in a manner of with Fig. 5 identicals).In figure 6, flow Stream ID 530-1 and 530-2 can be written in writing commands 505-1 and 505-2 by ID adders 420.By this way, Fig. 1 SSD 120 may know which device stream used when handling writing commands 505-1 and 505-2.Transmitter 325 can writing modification Enter the SSD 120 that order 505-1 and 505-2 are sent to Fig. 1.
What Fig. 5 was not shown into Fig. 6 is the operation of Fig. 4 queue circuit 430.Once Fig. 5 block ID 515-1 are extremely 515-3 has been determined, and Fig. 4 queue circuit 430 can make Fig. 5 block ID 515-1 to 515-3 in Fig. 3 submission queue It is lined up in 335, is handled later for Fig. 4 background logic 435.Fig. 4 queue circuit 430 can be in the block ID 515-1 in Fig. 5 Any time after being determined to 515-3 ranks to block ID 515-1 to 515-3.For example, Fig. 4 queue circuit 430 can after being determined in Fig. 5 block ID 515-1 to 515-3 by Fig. 4 LBA mappers 410, in the write-in of modification Order 505-1 to writing commands 505-3 has been sent to after Fig. 1 SSD 120 or any time between them, Block ID 515-1 to 515-3 are ranked.
Fig. 7 shows for Fig. 5 LBA 510-1 to be mapped to Fig. 5 block ID 515-1 Fig. 5 ALU (ALU)520.In the figure 7, ALU 520 can receive LBA 510-1 and block size 705.By by LBA 510-1 divided by block Size 705 (and abandoning any fractional part of calculating), can calculation block ID 515-1.
As described above with reference to Figure 4, Fig. 4 background logic 435 can be realized in a different manner.Fig. 8 to Figure 13 is retouched One embodiment of present inventive concept is stated, Figure 14 to Figure 20 describes another embodiment of present inventive concept.Present inventive concept These embodiments are not intended to mutually exclusive:The combination of two embodiments of present inventive concept is feasible.In addition, regardless of whether Here clearly describe, the other embodiment of present inventive concept is also feasible.
In the first embodiment for the present inventive concept of Fig. 4 background logic 435, Fig. 3 block stream mapper 340 It may include succession, frequency and immediate cause (SFR) table." succession, frequency and immediate cause " represents to can determine that and update and will be assigned to The mode of the stream ID of block." succession " represents that a writing commands are the situation of order for another writing commands, in other words, Second writing commands write data into next LBA after writing commands earlier.It is the feelings of order in two writing commands Under condition, two orders should be allocated same flow ID and hold water.
As described in following reference picture 10, because writing commands can be sent from any number of different software source, so this Shen " succession " in context please should not be completely from literal upper understanding.If from single software source (for example, database should With) two " order " writing commands by chance by writing commands from some other software sources (for example, file system) point Separate, then writing commands between should not eliminate the succession of two writing commands from database application.It is true On, the mechanism that the writing commands for avoiding between interrupt succession is provided here.
" frequency " represents how frequently to access block.Block is accessed more frequent, is considered as block and gets over " heat " (using warm Degree serves as the analogy to priority:" temperature " of block is higher, and its priority should be higher).Therefore, when block is by increasingly When accessing more, it should be allocated higher flow priority.
" immediate cause " represent since block last time is accessed had been subjected to how long." immediate cause " plays balanced action to " frequency ":From It is longer that span was accessed from block last time, it is believed that block gets over " cold ", and therefore, block is allocated lower priority.Therefore, " frequency The stream of the association of degree " increase block, and " immediate cause " reduces the stream of the association of block.It is discussed further referring to Figure 10 to Figure 13 " succession ", " frequency " and " immediate cause ".
Turning now to the embodiment of the present inventive concept shown in Fig. 8, Fig. 8 shows this implementation according to present inventive concept The example SFR tables that can be used for Fig. 5 block ID 515-1 to 515-3 being mapped to Fig. 5 stream ID 530-1 to 530-3 of example. In fig. 8, SFR tables 805 can the various data of memory.For example, SFR tables 805 can the various block ID 515-1 to 515-4 of memory And the SFR corresponding stream ID 530-1 to stream ID 530-4 for each block ID 515-1 to 515-4.
In addition to stream ID 530-1 to stream ID 530-4, SFR tables 805 can store other data.For example, for each Access time 810-1 is extremely for current (that is, recently) that block ID 515-1 to 515-4, SFR table 805 can store for that block 810-4.Current accessed time 810-1 to 810-4 can be the time of the last access of any kind of block (for example, reading Or write-in), or only it is the most recently written the time of order.SFR tables 805, which can also store, can represent block by the previously visited time Previously visited time 815-1 to 815-4.Finally, SFR tables 805 can memory can represent block access number access Count 820-1 to 820-4.As described above, access count 820-1 to 820-4 can represent that the access of block (reads and write two Person) total degree, or only represent block write-access total degree.
Although Fig. 8 shows a possible embodiments of present inventive concept, the other embodiment of present inventive concept can deposit Storage is more or less than the data of the data shown in Fig. 8.In addition, the data structure in addition to the table can be used for storage letter Breath.The embodiment of present inventive concept is intended to covering all such changes.
Fig. 9 shows Fig. 3 of the first embodiment according to present inventive concept flash translation layer (FTL) 325 and Fig. 4 background logic 435 additional detail.In fig.9, flash translation layer (FTL) 325 may also include succession logic 905.Ordered for use and relatively early write-in Make identical stream distribute, succession logic 905 can determine that Fig. 5 writing commands 505-1 and some more early writing commands whether be Order.Referring to Figure 10 succession logics 905 discussed further.
Background logic 435 may include immediate cause logic 910, access count adjuster 915 and stream ID adjuster 920.Immediate cause is patrolled Volumes 910 can calculation block immediate cause weight.Access count adjuster 915 can adjust the access count of block based on immediate cause weight. Stream ID adjuster can calculate the new stream ID for block based on the access count of regulation.Due to immediate cause logic 910, access count Adjuster 915 and stream ID adjuster 920 perform algorithm calculations, so they can be used one (or multiple) independent or shared ALU is all realized.Selectively, immediate cause logic 910, access count adjuster 915 and stream ID adjuster 920 can be used and set It is calculated as only calculating and describes to realize with the specialized hardware of specific function not much else.
Figure 10 shows the details of Fig. 9 succession logic 905.In Fig. 10, succession logic 905 is shown as including depositing Reservoir 1005 and comparator 1010.For practical purpose, memory 1005 can be a part for Fig. 3 memory 330, and Not as the SAM Stand Alone Memory in succession logic 905.Memory 1005 can memory be used as and on one group be most recently written life The window 1015 of the information of order, wherein, one group be most recently written in order it is each be most recently written order and can have distribute to its Stream ID.For example, Figure 10 shows entry 1020-1 to entry 1020-8, wherein, entry 1020-1 to entry 1020-4 is in window In 1015.Entry 1020-1 to entry 1020-8 can be managed by queue 1025.Queue 1025 can use any desired form:Example Such as, listing two example embodiments is, has the array of the pointer on the head for pointing to queue 1025, or chained list.Each bar Mesh 1020-1 to entry 1020-8 may include the end LBA 1030 and stream ID 1035 of more early writing commands.Window 1015 can wrap Include the window size 1040 that may specify that window 1015 includes how many nearest entries:In Fig. 10, window size 1040 is shown It is to include four entries to go out, but any amount of entry that the embodiment of present inventive concept can be in support window 1015.Window is big Small 1040 can be dependent on many factors, and many factors include the quantity of the core in such as Fig. 1 processor 110 or schemed Run on 1 processor 110 send writing commands software source (operating system, file system, using etc.) quantity.This The embodiment of inventive concept can equally support the window size determined based on other factors.In addition, window size 1040 can be quiet State is set, or can be dynamically varied as the condition in Fig. 1 machine 105 changes.
When Fig. 5 new writing commands 505-1 is received, comparator 1010 can be by Fig. 5 LBA 510-1 and window The end LBA 1030 of entry 1020-1 to entry 1020-4 in 1015 is compared.If Fig. 5 LBA 510-1 be compared with Next address after the end LBA 1030 of early writing commands, then Fig. 5 LBA 510-1 can be considered orders with relatively early write-in The end LBA 1030 of order is order.Alternatively, if there is no the end LBA 1030 available for more early writing commands with Effective LBA between Fig. 5 LBA 510-1, then Fig. 5 LBA 510-1 can be considered as with the end LBA of more early writing commands 1030 be order.(it is to be noted that:Assuming that without the possible address between that can write data, terminate LBA 1030 need not be the literal FA final address that will be write by more early writing commands).If Fig. 5 LBA 510-1 and window The end LBA 1030 of any entry 1020-1 to entry 1020-4 in 1015 is order, then entry 1020-1 to entry Stream ID 1035 in 1020-4 is used for Fig. 5 writing commands 505-1.
Although the LBA of determination order is a kind of for determining the mode when succession has occurred and that, structure of the present invention The embodiment of think of can support the other embodiment for detection ordering.For example, succession logic 905 can be used for detecting When specific software source accesses LBA pattern matcher in a repetitive pattern.
No matter Fig. 5 LBA 510-1 and any entry 1020-1 to entry 1020-4 in window 1015 end LBA Whether 1030 be order, and the oldest entry in window 1015 can be by " ejection ", and Fig. 5 writing commands 505-1 can quilt It is added to window 1015.For example, it is assumed that entry 1020-1 is the entry for being most recently written order in window 1015, then entry 1020-4 is the oldest entry in window 1015.Entry 1020-4 can remove from window 1015, Fig. 5 LBA 510-1 and stream ID 530-1 are added to window 1015 both as new entry.Window 1015 can be realized in any desired way. For example, window 1015 may include the circular list (such as, array) with the pointer for pointing to oldest entry.When new entry will be by When being added to window 1015, the oldest entry that pointer points to can be override by new entry, and pointer can be adjusted to point to Next oldest entry in window 1015.The embodiment of present inventive concept can be supported for storing the information on window 1015 Any desired structure:Circular list is only a so feasible data structure.
The immediate cause logic 910 that Figure 11 is shown with Fig. 9 calculates immediate cause weight.In fig. 11, immediate cause logic 910 is shown as Calculate immediate cause weight 1105.The formula shown in Figure 11 by immediate cause weight 1105 be calculated as two by for block it is current (i.e., Difference divided by the power of degradation period 1110 between access time 810-1 and previously visited time 815-1 recently).The table of degradation period 1110 Show how soon controllable block is downgraded to the regulated variable of lower priority stream.Degradation period 1110 can be when Fig. 1 machine 105 starts Initial value is allocated, and undesirably (manually or automatic based on system workload by system manager) can be conditioned.Prevent area Block upgrades too fast (this can cause most of blocks to use same high priority flows) or (this can cause most of blocks to use too slowly Same low priority flows) it is desirable.In other words, the block with the allocated stream in a manner of relatively uniform is desirable:Not yet There is single stream excessively or slightly to be used.Degradation period 1110 represents to be used to manage stream upgrading and degrade to realize this target A kind of mode.
It is to be noted that:Immediate cause weight 1015 can be directed to each block and change.On the other hand, degradation period 1110 is near Because that should be uniform (it is not intended that degradation period 1110 can not change over time) between whole calculating of weight 1105.
Figure 12 shows to access meter using Figure 11 immediate cause weight 1105 to adjust in Fig. 9 access count adjuster 915 Number.In fig. 12, access count adjuster 915 is shown as calculating the access count 1205 of regulation.The access count of regulation 1205 can be calculated as one plus access count 820-1 and then divided by immediate cause weight 1105.Then the access count 1205 of regulation can be Replace access count 820-1 and be stored in such as Fig. 8 SFR tables 805.
The stream ID adjuster 920 that Figure 13 is shown with Fig. 9 calculates stream ID from the access count 1205 of Figure 12 regulation.Scheming In 13, stream ID adjuster 920 is shown as calculating stream ID 530-1.Stream ID 530-1 can be calculated as the access count of regulation 1205 logarithm, and adjust access count 1205 the replaceable stream ID 530-1 of logarithm and be stored in such as Fig. 8 SFR In table 805.Although the mathematical term " logarithm " used when being related to computer typicallys mean that log2Or log10, but it is optional Select the logarithmic function using any desired bottom.The embodiment that the bottom selected for logarithmic function provides present inventive concept can be kept away Exempt from block upgrading it is too fast or too it is slow (and thus one or more device streams transition use and other device streams using deficiency) Another mechanism.Stream ID adjuster 920 can also become to have much come using more than one according to the access count 1205 of regulation Logarithmic function.For example, if the access count 1205 of regulation is less than a certain threshold value, log can be used in stream ID adjuster 9202 To calculate stream ID 530-1;If the access count 1205 of regulation is more than threshold value, log can be used in stream ID adjuster 92010To count Calculate stream ID 530-1.
It is worth making several comments on Figure 11 to Figure 13.First, Figure 11 are shown for calculating the near of Figure 11 to Figure 13 Because of the stream ID 530-1 of weight 1105, the access count 1205 of Figure 12 regulation and Figure 13 specific calculation.But structure of the present invention The embodiment of think of can be supported to calculate in any desired way these (or other values).Because final goal can be by Fig. 8 Stream ID 530-1 is adjusted to the block 515-1 suitable for Fig. 8 (up or down), so any of result as realization can be used Desired method.Figure 11 to Figure 13 only shows such method.
Second, in Figure 11 into Figure 13, access time (such as, Figure 11 current accessed time 810-1 and it is previously visited when Between 815-1) can the quantity based on the request sent and be determined, rather than be determined based on specific clock.For example, it is assumed that figure 5 writing commands 505-1 to writing commands 505-3 is continuously sent.Fig. 5 writing commands 505-1 can be the 4th write-in life Order, Fig. 5 writing commands 505-2 can be the 5th writing commands, and Fig. 5 writing commands 505-3 can be the 6th writing commands. In this illustration, " access time " for various writing commands will be " 4 ", " 5 " and " 6 " respectively.
Determining this selection of access time has following influence:If whole software sources will be in some time intervals Stop sending writing commands in (such as, 1 second or 1 minute or 1 hour), even if then block does not have also within considerable time Technically accessed, " temperature " of block also will not change.Therefore, even if block may may be gone back within considerable time It is not accessed, if be also accessed during that time without other blocks, " temperature " of block will not change.From From the point of view of practicality, whole software sources can stop transmission writing commands simultaneously and be unlikely that.But if there occurs this Kind of situation, then the embodiment of present inventive concept can handle such case.In addition, the embodiment of present inventive concept can be supported to make With clock time rather than order numbering, this can be caused:Even if no software source sends writing commands, block can also cool down.
Different from Fig. 8-Figure 13, Figure 14-Figure 20 shows another embodiment of present inventive concept.Shown with Fig. 8 into Figure 13 Present inventive concept embodiment it is the same, Figure 14 to Figure 20 may include for by Fig. 5 block ID 515-1 to block ID 515- 3 are mapped to the embodiment of Fig. 5 stream ID 530-1 to stream ID 530-3 data structure and Fig. 4 background logic 435.
Figure 14 shows to can be used for Fig. 5 block ID 515-1 to 515-3 according to the second embodiment of present inventive concept It is mapped to Fig. 5 stream ID 530-1 to 530-3 node.In fig. 14 it is shown that node 1405-1 is to 1405-3, and show in detail Egress 1405-1.Can (such as, array, chained list or other data structures) memory node in any desired way 1405-1 to node 1405-3.Each block in Fig. 1 SSD 120 can have a node.
Node 1405-1 may include various data, wherein, various data include block ID 515-1, stream ID 530-1, visited Receive customers several 820-1 and out-of-service time 1410.Block ID 515-1, stream ID 530-1 and access count 820-1 memories and this hair The similar data of those elements in the first embodiment of bright design.Out-of-service time 1410 represents the visit due to lacking writing commands Ask and be considered as the time of failure.As the first embodiment of present inventive concept, " time " can be according to by whole writing commands The quantity of specific writing commands of order be measured, rather than the measurement as clock.
Figure 15 shows the details of Fig. 4 of the second embodiment according to present inventive concept background logic 435.In fig.15, Background logic 435 may include upgrade logic 1505, the second queue circuit 1510, the storage for queue 1520-1 to queue 1520-3 Device 1515 and degradation logic 1525.Block can be upgraded to higher priority flows suitable when by upgrade logic 1505.The Two queue circuits 1510 (so naming to distinguish the queue circuit 430 of it and Fig. 4, but its operation is similar) can be by block ID 515-1 to block 515-3 is placed in queue 1520-1 into queue 1520-3.Second queue circuit 1510 can have the queuing with Fig. 4 The similar structure of device 430.The memory 1515 similar with Figure 10 memory 1005 can be effective as Fig. 3 memory 330 A part, not as the SAM Stand Alone Memory in background logic 435.The embodiment of present inventive concept can support any quantity Queue:Three queue 1520-1 to 1520-3 are only examples.In addition, Fig. 5 each stream ID 530-1 to stream ID 530-3 can There is a queue:The number of queue 1520-1 to queue 1520-3 quantity and Fig. 5 block ID 515-1 to block ID 515-3 It is accidental to measure identical.When Fig. 5 block ID 515-1 to block ID 515-3 reach queue 1520-1 to queue 1520-3's During head, degradation logic 1525 can be determined whether to degrade Fig. 5 block ID 515-1 to block ID 515-3.
Figure 16 shows upgrading and the degradation of the block ID in Figure 15 queue 1520-1 to queue 1520-3.In figure 16, Fig. 5 block ID 515-1 to block ID 515-3 are represented using alphabetical a to d.Not not having in queue 1520-1 to queue 1520-3 Markd entry not figure 16 illustrates example in use, and be storable in any block not used in addition in this example ID。
First, in figure 16, queue 335 is submitted to be shown as with the block ID on the head 1605 for submitting queue 335 a.Also without previously visited block before block ID a are recognizable.Correspondingly, can be gone in block ID a from submission queue 335 Except afterwards, as shown in dotted arrow 1610, block ID a can be added to the tail of queue 1520-1 (queue for being directed to " most cold " stream) Portion.
Next, in figure 16, submitting queue 335 to may include block ID b, (block ID b can be processed it in block ID a It is moved to afterwards in the head 1605 for submitting queue 335).As increase for block ID b Figure 14 access count 820-1's As a result, block ID b can be upgraded to " hotter " stream.In block ID b after submitting queue 335 to be removed, such as dotted arrow Shown in 1615, block ID b can be moved to queue 1520-2 afterbody from queue 1520-1 entry 1620.
Again, Figure 15 degradation logic 1525 can be examined in queue 1520-1 to queue 1520-3 head 1625-1 extremely Head 1625-3.For example, Figure 15 degradation logic 1525 can check the block ID c in queue 1520-3 head 1625-3.Such as Fruit block ID c should be degraded, then block ID c can be moved to queue 1520-2 from queue 1520-3 head 1625-3 The afterbody of (queue for being directed to next " most hot-fluid ").As described in following reference picture 17, as the degraded results of block ID c, team Block ID d in row 1520-3 become most hot block.
Figure 17 shows the details of Figure 15 upgrade logic 1505.In fig. 17, upgrade logic 1505 may include incrementer 1705th, stream ID adjuster 1710, block inactive logic 1715 and most hot block logic 1720.Incrementer 1705 can increase Figure 14's Access count 820-1, produce the access count of regulation.As shown in figure 18, stream ID adjuster 1710 can be from the access count of regulation Calculate Fig. 5 stream ID 530-1.Stream ID adjuster 1710 can be similar with Fig. 9 structure of stream ID adjuster 920.
Figure 17 is returned to, block inactive logic 1715 can determine that the out-of-service time of block.The out-of-service time of block can be determined Device lifetime is added for the block ID current accessed time.Device lifetime is between the time which block to be most hot block according to Every this is discussed below.This is shown as equation by Figure 19:Out-of-service time 1410 is access count 820-1 (such as institutes above Can be Fig. 5 block ID 515-1 current accessed time with stating) with device lifetime 1905 and.
Finally, Figure 17 is turned again to, most hot block logic 1720 can determine that Fig. 5 block ID 515-1 are indicated whether now Most hot block.Most hot block can be defined as the block ID of highest flow priority.If there is excellent with highest stream Multiple block ID of first level, then any selection algorithm can be used for the particular block ID with highest flow priority being selected as Most hot block.For example, it is selectable as most hot block in the block ID of the expression highest flow priority on the head of queue. Or it is selectable as most hot block with the block ID of (that is, highest read access time) is accessed recently.Or The block ID of the expression highest flow priority of the afterbody of queue is selectable as most hot block.If Fig. 5 block ID 515-1 is most hot block now, then Figure 19 device lifetime 1905 can be calculated as Fig. 5 block ID 515-1 current visit Ask the difference between time and Fig. 5 block ID 515-1 previously visited time.Figure 19 device lifetime 1905 can represent specific Desired largest interval between two writing commands on block, and can be based on two nearest write-ins for most hot block Interval between order and be defined.Figure 19 device lifetime 1905 can be then used to the out-of-service time 1410 for determining Figure 14, Wherein, the out-of-service time 1410 can influence when Figure 14 block ID 515-1 to degrade.
Figure 20 shows the details of Figure 15 degradation logic 1525.In fig. 20, degradation logic 1525 be shown as including than Compared with device 2005 and decrement device 2010.Current time (can be the most recently written the quantity of request, Er Feishi by comparator 2005 again Clock time) compared with Figure 14 out-of-service time 1410.If it's Figure 14 out-of-service time 1410 has past current time, because Block have passed through interval of time in the case of no any writing commands, and (time interval can be measured as Figure 19 dress Put the life-span 1905), so block can be considered as colder than before.In other words, if Figure 19 device lifetime 1905 represents to be directed to The desired quantity of writing commands between the write-in of any given block, then Figure 14 out-of-service time 1410 can represent Figure 14's Block ID 515-1 can be written into the nearest time for being not to be regarded as having cooled down, wherein, Figure 14 out-of-service time 1410 can quilt The last access time for being calculated as Figure 14 block ID 515-1 adds Figure 19 device lifetime 1905.If during Figure 14 failure Between 1410 pass by, then Figure 14 block ID 515-1 have been cooled down, and can be downgraded.It that case, decrement Device 2010 can reduce Fig. 5 stream ID 530-1, and Fig. 5 block ID 515-1 priority is reduced to the area corresponding to Fig. 5 " temperature " of block ID 515-1 reduction.
If Figure 14 out-of-service time 1410 does not pass by also, Figure 14 block ID 515-1 are not cooled down also, and Figure 14 block ID 515-1 can be left on the head of its queue.It is to be noted that:It is not intended that other in that queue Block ID will not be downgraded.Because the order that block ID is accessed by block is placed in queue, Figure 14 block ID 515-1 is that maximum duration accesses block ID (in those blocks ID in that queue) in the past, and therefore will be failure First block ID.If Figure 14 block ID 515-1 are accessed again (and therefore keeping " heat "), Figure 14 block ID 515-1 will be moved to the afterbody of queue, another block ID be stayed in the head of queue, and therefore may obey and degrade.
Figure 21 A- Figure 21 B show the writing commands for being used to determine to be directed to Fig. 5 of one embodiment according to present inventive concept The flow chart of 505-1 stream ID 530-1 instantiation procedure.In Figure 21 A, in block 2105, Fig. 4 receiver 405 can be from software Source receives writing commands 505-1.In block 2110, Fig. 5 LBA 510-1 can be read from Fig. 5 writing commands 505-1.In block Fig. 5 LBA 510-1 can be mapped to Fig. 5 block ID 515-1 by 2115, Fig. 4 LBA mappers 410.As described above, Fig. 5 LBA mappers 410 can determine Fig. 5 block ID 515-1 in any desired way:For example, pass through the LBA from Fig. 5 510-1 masks out some positions, or by by Fig. 5 LBA 510-1 divided by Fig. 7 block size 705.In block 2120, Fig. 5's Stream selection logic 415 can select Fig. 5 stream ID 530-1 for the block ID 515-1 for Fig. 5.As described above, Fig. 5 stream Selection logic 415 can be operated in any desired way:For example, by searching figure from Fig. 3 block stream mapper 340 5 stream ID 530-1, by calculating Fig. 5 stream ID 530-1 from Fig. 8 access count 810-1, by dividing in a circulating manner With device stream, or any other desired method.In block 2125, Fig. 4 stream ID adder 420 can be by Fig. 5 stream ID 530- 1 is added to Fig. 5 writing commands 505-1.Finally, in block 2130, Fig. 5 writing commands 505-1 can be by Fig. 1 SSD 120 Manage to perform the write operation of instruction, wherein, the write operation of instruction may include Fig. 4 writing commands of the transmitter by Fig. 5 505-1 is sent to Fig. 1 SSD 120.
Now, Fig. 5 writing commands 505-1 is completely processed.But still the executable area for being such as more newly assigned to Fig. 5 Block ID 515-1 Fig. 5 stream ID 530-1 other processing.At block 2135 (Figure 21 B), Fig. 4 queue circuit 430 can be by Fig. 5's Block ID 515-1 are added to Fig. 3 submission queue 335 with for further processing.In block 2140, as Fig. 5 block ID 515-1 , can be from Fig. 3 block ID 515-1 for submitting the removal of queue 335 Fig. 5 when reaching Fig. 3 head of submission queue 335.Finally, In block 2145, Fig. 5 of the block ID 515-1 for Fig. 5 stream ID 530-1 may be updated in Fig. 4 background logic 435.Join below Fig. 5 of the block ID 515-1 for Fig. 5 stream ID is updated to Fig. 4 background logic 435 according to Figure 24 and Figure 25 A- Figure 25 C 530-1 various methods are described.
Figure 22 shows Fig. 4 of one embodiment according to present inventive concept LBA 510-1 of the LBA mappers 410 by Fig. 5 It is mapped to the flow chart of Fig. 5 block ID 515-1 instantiation procedure.In fig. 22, in block 2205, Fig. 4 LBA mappers 410 Fig. 5 address mask 525 can be used to mask out position from Fig. 5 LBA 510-1, leave Fig. 5 block ID 515-1.It is optional Ground, in block 2210, Fig. 4 LBA mappers 410 can be by by Fig. 5 LBA 510-1 divided by Fig. 7 block size 705, coming true Determine Fig. 5 block ID 515-1.
Figure 23 A- Figure 23 B show according to the first embodiment of present inventive concept be used for determine to be directed to using succession logic The flow chart of Fig. 5 block ID 515-1 Fig. 5 stream ID 530-1 instantiation procedure.In Figure 23 A, in block 2305, Fig. 4's Stream selection logic 415 can determine whether it is being tested the LBA of the order in writing commands 505-1 to 505-3.Example Such as, in the embodiment using the present inventive concept of more queuing methods, Fig. 4 stream selection logic 415 can not consider Fig. 5 write-in Order whether 505-1 and more early writing commands are orders.If Fig. 4 stream selection logic 415 is not that order is being write Enter order to be tested, then in block 2310, Fig. 4 stream selection logic 415 can determine that currently to be associated with Fig. 5 block ID 515-1 Fig. 5 stream ID 530-1:For example, Fig. 5 stream ID 530-1 is accessed by the block from Fig. 3-stream mapper 340.Fig. 4 stream How selection logic 415 determines that how Fig. 5 stream ID 530-1 details can be dependent on Fig. 3 block stream mapper 340 by reality It is existing:If block stream mapper 340 includes Fig. 8 SFR tables 805, Fig. 4 stream selection logic 415 can perform table search;If Block stream mapper 340 includes Figure 14 node 1405-1 to node 1405-3, then Fig. 4 stream selection logic 415 will have to It is determined that search node is to find Fig. 5 block ID 515-1 before Fig. 5 stream ID 530-1.
On the other hand, if Fig. 4 stream selection logic 415 can be tested the writing commands of order, in block 2315, Fig. 4 recognizable entry 1020-1 to entry 1020-4 with Figure 10 of stream selection logic 415 Figure 10 window 1015.In block 2320, Fig. 4 stream selection logic 415 can determine that Fig. 5 LBA 510-1 with being directed in Figure 10 window 1015 Whether Figure 10 any entry 1020-1 to entry 1020-4 Figure 10 end LBA 1030 is order.If Fig. 5 LBA The Figure 10 of 510-1 and any entry 1020-1 for Figure 10 in Figure 10 window 1015 to entry 1020-4 end LBA 1030 be not order, then as described above, in block 2310, Fig. 4 stream selection logic 415 can determine that the block ID 515- with Fig. 5 1 Fig. 5 currently associated stream ID 530-1.
If Fig. 4 stream selection logic 415 can be tested the writing commands of order, and Fig. 5 LBA The Figure 10 of any entry 1020-1 of Figure 10 in 510-1 and Figure 10 window 1015 to entry 1020-4 end LBA 1030 It is order, then at block 2325 (Figure 23 B), Fig. 4 stream selection logic 415 can determine that the Fig. 5's for distributing to previously written order Stream ID 530-1.In (Figure 21 A to Figure 21 B part, and therefore for illustration purposes and with void in Figure 23 B of block 2125 Line is shown), Fig. 5 writing commands 505-1 can be assigned to by distributing to Fig. 5 of previously written order stream ID 530-1.In block 2330, Fig. 4 stream selection logic 415 can determine that Figure 10 entry 1020-1 is in Figure 10 window 1015 into entry 1020-8 Oldest entry entry.Finally, in block 2335, Fig. 4's flows in the window 1015 for selecting logic 415 to can remove Figure 10 most Old entry, and add new entry corresponding with Fig. 5 writing commands 505-1.How Fig. 4 stream selection logic 415 performs This is deleted and the mechanism of addition is dependent on structure used in Figure 10 window 1015.If Figure 10 storage tool of window 1015 There is Figure 10 entry 1020-1 to the array or chained list of entry 1020, then delete and add only to include and come pair using new value Oldest entry is override and updates the pointer on the head for pointing to array or chained list.On the other hand, using Figure 10 window 1015 different structure, deletion and addition, which can include, to be deleted and de-assigns for the memory object of oldest entry and to scheme 5 writing commands 505-1 distributes new memory object.
Figure 24 shows the background update for being used to perform Fig. 8 SFR tables 805 of the first embodiment according to present inventive concept The flow chart of instantiation procedure.In fig. 24, in block 2405, Fig. 9 access count adjuster 905 can (for example, using incrementer or ALU Fig. 8 access count 820-1) is increased.In block 2410, Fig. 9 immediate cause logic 910 can (for example, using ALU) calculating Figure 11 Immediate cause weight 1105.In block 2415, Fig. 9 access count adjuster 905 can (for example, using ALU) (will increase in block 2405 Add) Fig. 8 access count 820-1 divided by Figure 11 immediate cause weight 1105.Finally, in block 2420, Fig. 9 stream ID adjuster 920 can determine that the new stream ID associated with Fig. 5 block ID 515-1.For example, Fig. 9 stream ID adjuster 920 is calculated using ALU The logarithm of the access count 1205 of Figure 12 regulation.
Figure 25 A- Figure 25 C show Figure 14 of the second embodiment according to present inventive concept node 1405-1 background update Instantiation procedure flow chart.In Figure 25 A, in block 2505, Figure 17 incrementer 1705 can increase Figure 14 access count 820-1.In block 2510, Figure 17 block inactive logic 1715 can determine that Figure 14 of the block ID 515-1 for Figure 14 failure Time 1410.In block 2515, Figure 17 stream ID adjuster 1710 can determine that Figure 14 of the block ID 515-1 for Figure 14 stream ID 530-1.Figure 17 stream ID adjuster 1710 can be for example, by the stream ID of Figure 14 to the node 1405-1 from Figure 14 530-1 has access to determine Figure 14 stream ID 530-1.In block 2520, Figure 15 the second queue circuit 1510 can be by Figure 14 area The queue corresponding with Figure 14 stream ID 530-1 that block ID 515-1 are placed in Figure 15 queue 1520-1 to 1520-3.
At block 2525 (Figure 25 B), Figure 17 most hot block logic 1720 can be by for Figure 14 block ID 515-1 figure 14 access count 820-1 is compared with the access count of most hot block.If for Figure 14 block ID 515-1 Figure 14 access count 820-1 is more than the access count of most hot block, then Figure 14 block ID 515-1 are most hot now Block.So in block 2530, Figure 14 block ID 515-1 can be identified as new most hot by Figure 17 most hot block logic 1720 Block;In block 2535, Figure 19 device lifetime 1905 can be defined as Figure 14 block by Figure 17 most hot block logic 1720 Time difference between the access recently of two of ID 515-1.
No matter whether Figure 14 block ID 515-1 are most hot blocks, in block 2540, Figure 20 comparator 2005 can be true It is fixed:When the head of a queues of Figure 14 block ID 515-1 in Figure 15 queue 1520-1 to queue 1520-3, figure Whether 14 out-of-service time 1410 passes by.If it is not, Fig. 4 background logic 435 may wait for (doing other in the meantime Thing), and checked again in block 2540, it has been in the past until Figure 14 block ID 515-1 Figure 14 out-of-service time 1410 Only.At that time, in block 2545, Figure 15 degradation logic 1525 can remove Figure 14 area from Figure 15 queue 1520-1 to 1520-3 Block ID 515-1.Then, in block 2550, Figure 20 decrement device 2010 can reduce Figure 14 stream ID 530-1.
At block 2555 (Figure 25 C), Figure 14 block ID 515-1 can be placed in Figure 15's by Figure 15 the second queue circuit 1510 Another queue corresponding with new stream ID in queue 1520-1 to 1520-3.In block 2560, Figure 15 degradation logic 1525 can Whether the block ID 515-1 for determining Figure 14 are most hot blocks.If it is, then in block 2565, Figure 15 degradation logic 1525 can be selected as another block ID new most hot block.For example, distribute to figure (before being reduced in block 2560) 14 stream ID 530-1 another block can be chosen (such as, in the head of queue or the block of afterbody).As before, scheme 15 degradation logic 1525 can also calculate Figure 19 device lifetime 1905 based on the new most hot block of selection.
In Figure 21 A into 25C, some embodiments of present inventive concept are shown.But those skilled in the art will recognize that Arrive, by changing the order of block, by omitting block or by including the link not shown in accompanying drawing, other realities of present inventive concept It is also feasible to apply example.Regardless of whether being explicitly described, all such change of flow chart are considered as present inventive concept Embodiment.
Following discussion is intended to provide the succinct and overall of the suitable machine of the particular aspects to present inventive concept can be achieved Description.Can by the input from conventional input devices (such as, keyboard, mouse etc.) and from another machine receive instruction, With the interacting of virtual reality (VR) environment, biofeedback or other input signals, carry out control machine at least in part.Such as institute here Use, term " machine " is intended to broadly comprising individual machine, the machine of virtual machine or communication connection, virtual machine or together The system of the device of operation.Example machine includes computing device (such as, personal computer, work station, server, portable Computer, handheld device, phone, flat board etc.) and conveying arrangement (such as, the private or public vehicles, for example, automobile, fire Car, taxi etc.).
Machine may include embedded controller, such as, programmable or non-programmable logical device or array, special integrated electricity Road (ASIC), embedded computer, smart card etc..Machine can such as pass through network interface, modem or other communication links Fetch and one or more is connected to one or more remote-control devices.Machine can be by physically and/or logically network (such as, In-house network, internet, LAN, wide area network etc.) mode interconnect.It will be understood by those skilled in the art that network service is available Including radio frequency (RF), satellite, microwave, Institute of Electrical and Electric Engineers (IEEE) 802.11, bluetooth, optics, infrared, cable, The various wiredly and/or wirelessly short distances or long-range carrier wave and agreement of laser etc..
Can by referring to or combine and include the associated data of function, process, data structure and application program etc. to retouch The embodiment of present inventive concept is stated, wherein, associated data are when being accessed by the machine so that machine performing tasks or restriction are taken out Image data type or low-level hardware context.Associated data are storable in, for example, volatibility and/or non-volatile memories Device (for example, RAM, ROM etc.) is stored in other storage devices and their associated storage medium, wherein, it is related The storage medium of connection includes hard disk drive, floppy disk, optical storage, tape, flash memory, memory stick, digital video disks, biometric storage Deng.Associated data can be in the form of bag, serial data, parallel data, transmitting signal etc. including physically and/or logically It is passed on the transmission environment of network, and associated data can be used with the form for compressing or encrypting.Associated number According to can be used for distributed environment, and it is stored locally and/or remotely, so that machine accesses.
The embodiment of present inventive concept may include tangible non-transitory machine readable media, wherein, tangible nonvolatile Property machine readable media include one or more processors can perform instruction, instruction include be used for perform sheet as described herein The instruction of the element of inventive concept.
The principle of present inventive concept has been described and illustrated in the embodiment with reference to shown in, it will be recognized that:It can not depart from The embodiment shown is changed in the case of such principle in arrangement and details, and can in any desired way combine and show The embodiment gone out.In addition, although discussed above have concentrated on specific embodiment, other configurations are considered.Especially, even if The statement of " according to the embodiment of present inventive concept " etc. is used herein, but these phrases generally mean that reference implementation Example possibility, and be not intended to present inventive concept being limited to specific embodiment configuration.As used herein, these terms refer to The identical or different embodiment that can be combined in other embodiment.
The embodiment of foregoing illustrative is not construed as limiting their inventive concept.Although it have been described that some are implemented Example, the person skilled in the art will easily understand, can be right in the case where not departing from the new teachings and advantages of the disclosure substantially Those embodiments make many modifications.Therefore, all such modification is intended to be included in the structure of the present invention that claim is limited In the range of think of.
Without limitation, the embodiment of present inventive concept may extend into following statement:
Statement 1:One embodiment of present inventive concept includes a kind of solid-state drive (SSD), and the SSD includes:
Flash memory, for data storage;
Support multiple device streams in SSD;
SSD controller, flash memory is write data into multiple writing commands for managing response, the SSD controller Including the memory for submitting queue and block stream mapper;
Flash translation layer (FTL), including:Receiver, logical block address (LBA) writing commands are included for receiving;LBA maps Device, for LBA to be mapped into block-identified symbol (ID);Stream selection logic, for being based on block ID using block stream mapper Select stream ID;Stream ID adder, for stream ID to be added into said write order;Queue circuit, for block ID to be placed in into submission In queue;Background logic, for removing Except block ID and more new block stream mapper from submission queue.
Statement 2:One embodiment of present inventive concept includes the SSD according to statement 1, and the SSD also includes:Transmitter, For the said write order with stream ID to be sent into SSD.
Statement 3, one embodiment of present inventive concept include the SSD according to statement 1, wherein, LBA mappers include:Ground Location mask, for covering LBA part to determine block ID.
Statement 4, one embodiment of present inventive concept include the SSD according to statement 1, wherein, LBA mappers include:Calculate Art logic unit (ALU), for LBA divided by block size to be identified into block ID.
Statement 5, one embodiment of present inventive concept include the SSD according to statement 1, wherein, block stream mapper includes Succession, frequency, immediate cause (SFR) table, the SFR tables include block ID and the stream ID for block ID.
Statement 6, one embodiment of present inventive concept include the SSD according to statement 5, wherein, background logic includes:Sequentially Property logic, for if LBA with the 2nd LBA orders of previously written order if selection previously flowed.
Statement 7, one embodiment of present inventive concept include the SSD according to statement 6, wherein, the previously written order It is in the window before said write order, the window includes window size.
Statement 8, one embodiment of present inventive concept include the SSD according to statement 7, wherein, window size is in response to master The quantity of the core in processor in machine computer system and operate in the software source on the processor in host computer system Quantity in it is at least one and be determined.
Statement 9, one embodiment of present inventive concept include the SSD according to statement 7, wherein, SSD controller also includes using In the memory of the queue with multiple previously written orders including the previously written order, the queue is for described more Each writing commands in individual writing commands and including terminating LBA and corresponding stream ID.
Statement 10, one embodiment of present inventive concept include the SSD according to statement 5, wherein, background logic includes:
Immediate cause logic, for based on the current accessed time for block ID, for block ID the previously visited time and Degradation period calculates immediate cause weight;
Access count adjuster, for producing the visit of regulation based on access count of the immediate cause weight metering needle to block ID Receive customers number;
Stream ID adjuster, stream ID is adjusted for the access count based on the regulation for block ID.
Statement 11, one embodiment of present inventive concept include the SSD according to statement 10, wherein, SFR tables also include being directed to Block ID current accessed time, the previously visited time for block ID and the access count for block ID.
Statement 12, one embodiment of present inventive concept include the SSD according to statement 10, wherein, immediate cause logic is by immediate cause Weight calculation is two (to remove the difference between the current accessed time for block ID and the previously visited time for block ID With degradation period) power.
Statement 13, one embodiment of present inventive concept include the SSD according to statement 10, wherein, access time adjuster Access count for block ID regulation is calculated as (block ID access count adds 1) divided by immediate cause weight.
Statement 14, one embodiment of present inventive concept include the SSD according to statement 10, wherein, stream ID adjuster will flow ID is calculated as the logarithm of the access count of block ID regulation.
Statement 15, one embodiment of present inventive concept include the SSD according to statement 1, wherein, block stream mapper includes Node entries, the node entries include block ID and the stream ID for block ID.
Statement 16, one embodiment of present inventive concept include the SSD according to statement 15, wherein, background logic includes:
Upgrade logic, for determining when to upgrade stream ID based on block ID;
Second queue circuit, for being placed in block ID corresponding with multiple stream IDs more in response to the stream ID for block ID First queue in individual queue;
Degradation logic, for determining when to degrade stream ID based on block ID.
Statement 17, one embodiment of present inventive concept include the SSD according to statement 16, wherein, upgrade logic includes:
Incrementer, for increasing the access count for block ID;
Stream ID adjuster, for determining stream ID in response to the access count for block ID.
Statement 18, one embodiment of present inventive concept include the SSD according to statement 17, wherein, stream ID adjuster is carried out Stream ID is defined as the logarithm of the access count for block ID by operation.
Statement 19, one embodiment of present inventive concept include the SSD according to statement 17, wherein, upgrade logic also includes: Block inactive logic, for calculating the out-of-service time for block ID.
Statement 20, one embodiment of present inventive concept include the SSD according to statement 19, wherein, block inactive logic enters Out-of-service time for block ID is calculated as the access count for block ID and device lifetime sum by row operation.
Statement 21, one embodiment of present inventive concept include the SSD according to statement 20, wherein, device lifetime is most hot Block last access time and most hot block the previously visited time difference.
Statement 22, one embodiment of present inventive concept include the SSD according to statement 21, wherein, upgrade logic also includes: Most hot block logic, if block ID access count is more than the last access time of most hot block, block ID is determined For most hot block.
Statement 23, one embodiment of present inventive concept include the SSD according to statement 21, wherein, node entries also include Access time for block ID and the out-of-service time for block ID.
Statement 24, one embodiment of present inventive concept include the SSD according to statement 16, wherein:
Degradation logic includes comparator and decrement device, wherein, comparator is used for determination is for block ID out-of-service time No to pass by, if pass by for block ID out-of-service time, decrement device is used to reduce stream ID;
Second queue circuit be operable to the stream ID in response to the reduction for block ID and by block ID be placed in it is described Second queue in the multiple queue corresponding to multiple stream IDs.
Statement 25, one embodiment of present inventive concept include the SSD according to statement 24, wherein, degradation logic is grasped Come:When the head of first queues of the block ID in the multiple queue, determine when to degrade stream ID based on block ID.
Statement 26, one embodiment of present inventive concept include the SSD according to statement 24, wherein, degradation logic is grasped Come:If the head of first queues of the block ID in the multiple queue, determines when to drop stream ID based on block ID Level.
Statement 27, one embodiment of present inventive concept are included with driver in computer systems, the driver Including:
Receiver, for receiving the writing commands for solid-state drive (SSD), said write order is with including logical block Location (LBA);
LBA mappers, for LBA to be mapped into block-identified symbol (ID);
Stream selection logic, for using the block stream mapper in the memory being stored in host computer system, coming Stream ID is selected based on block ID;
Stream ID adder, for stream ID to be added into said write order;
Queue circuit, for block ID to be placed in the submission queue of storage in memory;
Background logic, for removing Except block ID and more new block stream mapper from submission queue.
Statement 28, one embodiment of present inventive concept include the driver according to statement 27, in addition to:Transmitter, use In the said write order with stream ID is sent into SSD.
Statement 29, one embodiment of present inventive concept include the driver according to statement 27, wherein, LBA mapper bags Include:Address mask, for covering LBA part to identify block ID.
Statement 30, one embodiment of present inventive concept include the driver according to statement 27, wherein, LBA mapper bags Include:ALU (ALU), for LBA divided by block size to be identified into block.
Statement 31, one embodiment of present inventive concept include the driver according to statement 27, wherein, block stream mapper Including succession, frequency, immediate cause (SFR) table, the SFR tables include block ID and the stream ID for block ID.
Statement 32, one embodiment of present inventive concept include the driver according to statement 31, wherein, background logic bag Include:Succession logic, if LBA is with the 2nd LBA orders of previously written order selection previously flowed.
Statement 33, one embodiment of present inventive concept include the driver according to statement 32, wherein, it is described previously written Order is in the window before said write order, and the window includes window size.
Statement 34, one embodiment of present inventive concept include the driver according to statement 33, wherein, window size response The quantity of the core in processor in host computer system and operate in it is soft on the processor in host computer system At least one in the quantity in part source and be determined.
Statement 35, one embodiment of present inventive concept include the driver according to statement 31, wherein, background logic bag Include:
Immediate cause logic, for based on the current accessed time for block ID, for block ID the previously visited time and Degradation period calculates immediate cause weight;
Access count adjuster, for producing the visit of regulation based on access count of the immediate cause weight metering needle to block ID Receive customers number;
Stream ID adjuster, stream ID is adjusted for the access count based on the regulation for block ID.
Statement 36, one embodiment of present inventive concept include the driver according to statement 35, wherein, SFR tables also include Current accessed time for block ID, the previously visited time for block ID and the access count for block ID.
Statement 37, one embodiment of present inventive concept include the driver according to statement 35, wherein, immediate cause logic is nearly Because weight calculation be two (by for the block ID current accessed time be directed to block ID the previously visited time difference divided by Degradation period) power.
Statement 38, one embodiment of present inventive concept include the driver according to statement 35, wherein, access time regulation Access count for block ID regulation is calculated as (block ID access count adds 1) divided by immediate cause weight by device.
Statement 39, one embodiment of present inventive concept include the driver according to statement 35, wherein, stream ID adjuster will Stream ID is calculated as the logarithm of the access count of the regulation for block ID.
Statement 40, one embodiment of present inventive concept include the driver according to statement 27, wherein, block stream mapper Including node entries, the node entries include block ID and the stream ID for block ID.
Statement 41, one embodiment of present inventive concept include the driver according to statement 40, wherein, background logic bag Include:
Upgrade logic, for determining when to upgrade stream ID based on block ID;
Second queue circuit, for being placed in block ID corresponding with multiple stream IDs more in response to the stream ID for block ID First queue in individual queue;
Degradation logic, for determining when to degrade stream ID based on block ID.
Statement 42, one embodiment of present inventive concept include the driver according to statement 41, wherein, upgrade logic bag Include:
Incrementer, for increasing the access count for block ID;
Stream ID adjuster, for determining stream ID in response to the access count for block ID.
Statement 43, one embodiment of present inventive concept include the driver according to statement 42, wherein, stream ID adjuster enters Stream ID is defined as the logarithm of the access count for block ID by row operation.
Statement 44, one embodiment of present inventive concept include the driver according to statement 42, wherein, upgrade logic also wraps Include:Block inactive logic, for calculating the out-of-service time for block ID.
Statement 45, one embodiment of present inventive concept include the driver according to statement 44, wherein, block inactive logic It is operable to the out-of-service time for block ID being calculated as the access count for block ID and device lifetime sum.
Statement 46, one embodiment of present inventive concept include the driver according to statement 45, wherein, device lifetime is most The last access time of the block of heat and the difference of the previously visited time of most hot block.
Statement 47, one embodiment of present inventive concept include the driver according to statement 46, wherein, upgrade logic also wraps Include:Most hot block logic, if the access count for block ID is more than the last access time of most hot block, by block ID is defined as most hot block.
Statement 48, one embodiment of present inventive concept include the driver according to statement 46, wherein, node entries also wrap Include the access time for block ID and the out-of-service time for block ID.
Statement 49, one embodiment of present inventive concept include the driver according to statement 41, wherein,
Degradation logic includes comparator and decrement device, wherein, comparator is used for determination is for block ID out-of-service time No to pass by, if block ID out-of-service time passes by, decrement device reduces stream ID;
Second queue circuit be operable to the stream ID in response to the reduction for block ID and by block ID be placed in it is described Second queue in the multiple queue corresponding to multiple stream IDs.
Statement 50, one embodiment of present inventive concept include the driver according to statement 49, wherein, degradation logic is carried out Operation comes:When the head of first queues of the block ID in the multiple queue, determine when to drop stream ID based on block ID Level.
Statement 51, one embodiment of present inventive concept include the driver according to statement 49, wherein, degradation logic is carried out Operation comes:If the head of first queues of the block ID in the multiple queue, is determined when stream ID based on block ID Degrade.
Statement 52, one embodiment of present inventive concept include a kind of method, and methods described includes:
Writing commands are received from software source;
Determine the logical block address (LBA) in said write order;
Identification includes the block-identified symbol (ID) for block on LBA solid-state drive (SSD);
Access the stream ID associated with block ID;
Stream ID is distributed into writing commands;
The stream ID processing writing commands of distribution are used on SSD;
Perform the background update with the block ID stream IDs associated.
Statement 53, one embodiment of present inventive concept include the method according to statement 52, wherein, methods described is implemented In a layer in the file system layer on host computer system, block layer or device driver layer.
Statement 54, one embodiment of present inventive concept include the method according to statement 52, wherein, methods described is implemented In SSD flash translation layer (FTL).
Statement 55, one embodiment of present inventive concept include the method according to statement 52, wherein, identification includes LBA's On solid-state drive (SSD) for block block-identified symbol (ID) the step of include:Known using the address mask on LBA Other block ID.
Statement 56, one embodiment of present inventive concept include the method according to statement 52, wherein, identification includes LBA's On solid-state drive (SSD) for block block-identified symbol ID the step of include:By the way that LBA is removed into the area thought in block The quantity of section.
Statement 57, one embodiment of present inventive concept include the method according to statement 52, wherein, stream ID is distributed to and write The step of entering order includes being added to said write order using stream ID as label.
Statement 58, one embodiment of present inventive concept include the method according to statement 52, in addition to:
Determine whether the 2nd LBA in logical block address and the second writing commands is order;
If logical block address is order with the 2nd LBA in the second writing commands,:
It is determined that distribute to the second ID of the second writing commands;
Second ID is distributed into said write order.
Statement 59, one embodiment of present inventive concept include the method according to statement 58, wherein, the second writing commands are In the window before said write order.
Statement 60, one embodiment of present inventive concept include the method according to statement 59, in addition to:Identification window.
Statement 61, one embodiment of present inventive concept include the method according to statement 60, wherein, the step of identification window Including:In response to the core in the processor in the host computer system including SSD quantity and operate in the main frame including SSD Window size that is at least one and determining window in the quantity of the software source on processor in computer system.
Statement 62, one embodiment of present inventive concept include the method according to statement 59, in addition to:
Oldest writing commands in identification window;
The oldest writing commands in window are replaced using said write order.
Statement 63, one embodiment of present inventive concept include the method according to statement 52, wherein, perform and closed with block ID The step of background update of the stream ID of connection, includes:
Block ID is added to submission queue;
When block ID is submitting the head of queue, Except block ID is removed from queue is submitted.
Statement 64, one embodiment of present inventive concept include the method according to statement 52, wherein, perform and closed with block ID The step of background update of the stream ID of connection, includes:
Access count of the increase for block ID;
The immediate cause power for block ID is calculated in response to the current accessed time for block ID and previously visited time Weight;
The access count for block ID is updated in response to immediate cause weight;
The stream ID for block ID is determined in response to the access count of renewal.
Statement 65, one embodiment of present inventive concept include the method according to statement 64, wherein, in response to for block ID current accessed time and previously visited time and include the step of calculate the immediate cause weight for block ID:By immediate cause weight Be calculated as two it is secondary (by for the difference divided by degradation period of block ID current accessed time and block ID previously visited time) Power.
Statement 66, one embodiment of present inventive concept include the method according to statement 65, wherein, in response to immediate cause weight And the step of updating the access count for block ID, includes:By access count divided by immediate cause weight.
Statement 67, one embodiment of present inventive concept include the method according to statement 64, wherein, in response to the visit of renewal The step of the counting and determining block ID stream ID that receive customers includes:Stream ID for block ID is calculated as to pair of the access count of renewal Number.
Statement 68, one embodiment of present inventive concept include the method according to statement 52, wherein, perform and closed with block ID The step of background update of the stream ID of connection, includes:
Block ID is placed in queue corresponding with stream ID, wherein, queue corresponding with stream ID is one in multiple queues It is individual;
When block ID reaches the head of queue, it is determined whether block ID is degraded.
Statement 69, one embodiment of present inventive concept include the method according to statement 68, wherein, by block ID be placed in Step in queue corresponding to stream ID includes:
Access count of the increase for block ID;
The stream ID for block ID is determined in response to the access count for block ID.
Statement 70, one embodiment of present inventive concept include the method according to statement 69, wherein, in response to for block ID access count and include the step of determine the stream ID for block ID:Stream ID for block ID is calculated as to be directed to block The logarithm of ID access count.
Statement 71, one embodiment of present inventive concept include the method according to statement 69, wherein, by block ID be placed in Step in queue corresponding to stream ID also includes:If block ID access count exceedes the second access meter of most hot block Block ID, then be defined as new most hot block by number.
Statement 72, one embodiment of present inventive concept include the method according to statement 71, wherein, block ID is identified as The step of new most hot block, includes:Device lifetime is defined as the current accessed time for block ID with being directed to block ID The previously visited time difference.
Statement 73, one embodiment of present inventive concept include the method according to statement 68, wherein:
Execution also includes with the step of background update of the block ID stream IDs associated:In response to access count and device lifetime And determine the out-of-service time for block ID;
The step of determining whether and block ID degrades when block ID reaches the head of queue includes:If block ID mistake The effect time passes by, then:Except block ID is removed from queue corresponding with stream ID;Reduce stream ID;Block ID is placed in and reduction In second queue corresponding to stream ID.
Statement 74, one embodiment of present inventive concept include the method according to statement 73, wherein, in response to access count Include with device lifetime the step of determine the out-of-service time for block ID:Device lifetime is defined as most hot block most The difference of access time and the previously visited time of most hot block afterwards.
Statement 75, one embodiment of present inventive concept include the method according to statement 73, wherein, when block ID reaches team Determine whether also to include the step of block ID is degraded during the head of row:If block ID out-of-service time passes by, and If block ID is most hot block, the second block ID in queue corresponding with stream ID is selected as new most hot area Block.
Statement 76, one embodiment of present inventive concept include a kind of article for including non-transitory storage medium, described Non-transitory storage medium has the instruction being stored thereon, and the instruction causes when executed by a machine:
Writing commands are received from software source;
Determine the logical block address (LBA) in said write order;
It is determined that the block-identified symbol (ID) for block on the solid-state drive (SSD) including LBA;
Access the stream ID associated with block ID;
Stream ID is distributed into writing commands;
The stream ID processing writing commands of distribution are used on SSD;
Perform the background update with the block ID stream IDs associated.
Statement 77, one embodiment of present inventive concept include the article according to statement 76, wherein, methods described is implemented In one in the file system layer on host computer system, block layer or device driver layer.
Statement 78, one embodiment of present inventive concept include the article according to statement 76, wherein, methods described is implemented In SSD flash translation layer (FTL).
Statement 79, one embodiment of present inventive concept include the article according to statement 76, wherein, identification includes LBA's On solid-state drive (SSD) for block block-identified symbol ID the step of include:Identified using the address mask on LBA Block ID.
Statement 80, one embodiment of present inventive concept include the article according to statement 76, wherein, identification includes LBA's The step of block-identified symbol ID for block on solid-state drive (SSD), includes:By by the section in LBA divided by block Quantity.
Statement 81, one embodiment of present inventive concept include the article according to statement 76, wherein, stream ID is distributed to and write The step of entering order includes being added to said write order using stream ID as label.
Statement 82, one embodiment of present inventive concept include the article according to statement 76, and the non-transitory storage is situated between Matter has the other instruction being stored thereon, and the instruction in addition causes when executed by a machine:
Determine whether the 2nd LBA in logical block address and the second writing commands is order;
If logical block address is order with the 2nd LBA in the second writing commands,:It is determined that distribute to the second write-in The second ID of order;Second ID is distributed into said write order.
Statement 83, one embodiment of present inventive concept include the article according to statement 82, wherein, the second writing commands are In the window before said write order.
Statement 84, one embodiment of present inventive concept include the article according to statement 83, and the non-transitory storage is situated between Matter has the other instruction being stored thereon, and the instruction in addition causes when executed by a machine:Determine window.
Statement 85, one embodiment of present inventive concept include the article according to statement 84, wherein it is determined that the step of window Including:In response to the core in the processor in the host computer system including SSD quantity and operate in the main frame including SSD Window size that is at least one and determining window in the quantity of the software source on processor in computer system.
Statement 86, one embodiment of present inventive concept include the article according to statement 83, and the non-transitory storage is situated between Matter has the other instruction being stored thereon, and the instruction in addition causes when executed by a machine:
Oldest writing commands in identification window;
The oldest writing commands in window are replaced using said write order.
Statement 87, one embodiment of present inventive concept include the article according to statement 76, wherein, perform and closed with block ID The step of background update of the stream ID of connection, includes:
Block ID is added to submission queue;
When block ID is submitting the head of queue, Except block ID is removed from queue is submitted.
Statement 88, one embodiment of present inventive concept include the article according to statement 76, wherein, perform and closed with block ID The step of background update of the stream ID of connection, includes:
Access count of the increase for block ID;
Current accessed time and previously visited time in response to block ID and calculate the immediate cause weight for block ID;
The access count for block ID is updated in response to immediate cause weight;
The stream ID for block ID is determined in response to the access count of renewal.
Statement 89, one embodiment of present inventive concept include the article according to statement 88, wherein, in response to for block ID current accessed time and previously visited time and include the step of calculate the immediate cause weight for block ID:By immediate cause weight Be calculated as two it is secondary (by for the difference divided by degradation period of block ID current accessed time and block ID previously visited time) Power.
Statement 90, one embodiment of present inventive concept include the article according to statement 89, wherein, in response to immediate cause weight And the step of updating the access count for block ID, includes:By access count divided by immediate cause weight.
Statement 91, one embodiment of present inventive concept include the article according to statement 88, wherein, in response to the visit of renewal The step of stream ID for counting and determining for block ID that receives customers, includes:Block ID stream ID is calculated as to pair of the access count of renewal Number.
Statement 92, one embodiment of present inventive concept include the article according to statement 76, wherein, perform and closed with block ID The step of background update of the stream ID of connection, includes:
Block ID is placed in queue corresponding with stream ID, wherein, queue corresponding with stream ID is one in multiple queues It is individual;
When block ID reaches the head of queue, it is determined whether block ID is degraded.
Statement 93, one embodiment of present inventive concept include the article according to statement 92, wherein, by block ID be placed in Step in queue corresponding to stream ID includes:
Access count of the increase for block ID;
The stream ID for block ID is determined in response to the access count for block ID.
Statement 94, one embodiment of present inventive concept include the article according to statement 93, wherein, in response to for block ID access count and include the step of determine the stream ID for block ID:Stream ID for block ID is calculated as to be directed to block The logarithm of ID access count.
Statement 95, one embodiment of present inventive concept include the article according to statement 93, wherein, by block ID be placed in Step in queue corresponding to stream ID also includes:If the access count for block ID exceedes the second access of most hot block Count, then block ID is defined as to new most hot block.
Statement 96, one embodiment of present inventive concept include the article according to statement 95, wherein, block ID is defined as The step of new most hot block, includes:Device lifetime is defined as to block ID current accessed time and block ID previous visit Ask the difference of time.
Statement 97, one embodiment of present inventive concept include the article according to statement 91, wherein:
Perform with also including the step of the background update of the block ID stream IDs associated in response to access count and device lifetime And determine block ID out-of-service time;
The step of determining whether and block ID degrades when block ID reaches the head of queue includes:If block ID mistake The effect time passes by, then:Except block ID is removed from queue corresponding with stream ID;Reduce stream ID;Block ID is placed in and reduction In second queue corresponding to stream ID.
Statement 98, one embodiment of present inventive concept include the article according to statement 97, wherein, in response to access count The step of determining block ID out-of-service time with device lifetime includes:Device lifetime is defined as to the last visit of most hot block Ask the difference of time and the previously visited time of most hot block.
Statement 99, one embodiment of present inventive concept include the article according to statement 97, wherein, when block ID reaches team Determine whether also to include the step of block ID is degraded during the head of row:If block ID out-of-service time passes by, and If block ID is most hot block, the second block ID in queue corresponding with stream ID is selected as new most hot area Block.
Accordingly, it is considered to the various displacements of the embodiments described herein, present embodiment and annex are intended to It is only schematical, and should not be considered limiting the scope of present inventive concept.It is therefore desirable to the inventive concept of protection is to weigh All such modifications in the spirit and scope of sharp claim and its equivalent.

Claims (20)

1. a kind of solid-state drive SSD, the SSD include:
Flash memory, data storage simultaneously support multiple device streams in SSD;
SSD controller, managing response write data into flash memory in multiple writing commands, and the SSD controller includes being used for The memory of queue and block stream mapper is submitted,
Wherein, the SSD controller includes flash translation layer (FTL), and the flash translation layer (FTL) includes:
Receiver, receive the writing commands for including logical block address LBA;
LBA mappers, LBA is mapped to block-identified symbol ID;
Stream selection logic, block ID selection stream IDs are based on using block stream mapper;
Stream ID adder, stream ID is added to said write order;
Queue circuit, block ID is placed in and submitted in queue;
Background logic, Except block ID is gone to carry out more new block stream mapper from queue is submitted.
2. SSD as claimed in claim 1, wherein, block stream mapper includes succession, frequency, immediate cause SFR tables, the SFR Table includes block ID and the stream ID for block ID.
3. SSD as claimed in claim 2, wherein, background logic includes:Succession logic, if LBA and previously written order The 2nd LBA orders then selection was previously flowed.
4. SSD as claimed in claim 2, wherein, background logic includes:
Immediate cause logic, based on the current accessed time for block ID, for block ID the previously visited time and degradation period come Calculate immediate cause weight;
Access count adjuster, the access count based on immediate cause weight regulation block ID is to produce the access count of regulation;
Stream ID adjuster, stream ID is adjusted based on the access count of the regulation for block ID.
5. SSD as claimed in claim 1, wherein, block stream mapper includes node entries, and the node entries include block ID and the stream ID for block ID.
6. SSD as claimed in claim 5, wherein, background logic includes:
Upgrade logic, determine when to upgrade stream ID based on block ID;
Second queue circuit, block ID is placed in multiple teams corresponding with multiple stream IDs difference in response to the stream ID for block ID In first queue in row;
Degradation logic, determine when to degrade stream ID based on block ID.
7. SSD as claimed in claim 6, wherein:
Degradation logic includes comparator and decrement device, wherein, comparator determines whether have been subjected to for block ID out-of-service time Go, and if pass by for block ID out-of-service time, be then reduced device and reduce stream ID;
Second queue circuit be operable to the stream ID in response to the reduction for block ID and by block ID be placed in it is the multiple In second queue in the multiple queue corresponding to stream ID difference.
8. a kind of driver used in computer systems, the driver include:
Receiver, receives the writing commands for solid-state drive SSD, and said write order includes logical block address LBA;
LBA mappers, LBA is mapped to block-identified symbol ID;
Stream selection logic, using the block stream mapper being stored in the memory in host computer system, to be based on block ID selects stream ID;
Stream ID adder, stream ID is added to said write order;
Queue circuit, block ID is placed in the submission queue of storage in memory;
Background logic, Except block ID is gone to carry out more new block stream mapper from queue is submitted.
9. driver as claimed in claim 8, wherein, block stream mapper includes succession, frequency, immediate cause SFR tables, described SFR tables include block ID and the stream ID for block ID.
10. driver as claimed in claim 9, wherein, background logic includes:Succession logic, if LBA with it is previously written 2nd LBA orders of order then previously flowed by selection.
11. driver as claimed in claim 9, wherein, background logic includes:
Immediate cause logic, based on the current accessed time for block ID, for block ID the previously visited time and degradation period come Calculate immediate cause weight;
Access count adjuster, access count based on immediate cause weight metering needle to block ID is to produce the access count of regulation;
Stream ID adjuster, stream ID is adjusted based on the access count of the regulation for block ID.
12. driver as claimed in claim 8, wherein, block stream mapper includes node entries, and the node entries include Block ID and the stream ID for block ID.
13. driver as claimed in claim 12, wherein, background logic includes:
Upgrade logic, determine when to upgrade stream ID based on block ID;
Second queue circuit, block ID is placed in multiple teams corresponding with multiple stream IDs difference in response to the stream ID for block ID In first queue in row;
Degradation logic, determine when to degrade stream ID based on block ID.
14. driver as claimed in claim 13, wherein:
Degradation logic includes comparator and decrement device, wherein, comparator determines whether have been subjected to for block ID out-of-service time Go, if pass by for block ID out-of-service time, decrement device reduces stream ID;
Second queue circuit be operable to the stream ID in response to the reduction for block ID and by block ID be placed in it is the multiple In second queue in the multiple queue corresponding to stream ID difference.
15. a kind of method for controlling solid-state drive SSD, methods described include:
Writing commands are received from software source;
Determine the logical block address LBA in said write order;
Identification is directed to the block-identified symbol ID of the block included on the solid-state drive SSD of the LBA;
Access the stream ID associated with block ID;
Stream ID is distributed into writing commands;
The stream ID processing writing commands of distribution are used on SSD;
Perform the background update with the block ID stream IDs associated.
16. method as claimed in claim 15, in addition to:
Determine whether the 2nd LBA in the LBA and the second writing commands is order;
If the 2nd LBA in the LBA and the second writing commands is order,:It is determined that distribute to the second writing commands Second ID;Second ID is distributed into said write order.
17. method as claimed in claim 15, wherein, execution is wrapped with the step of background update of the block ID stream IDs associated Include:
Block ID is added to submission queue;
When block ID is submitting the head of queue, Except block ID is removed from queue is submitted.
18. method as claimed in claim 15, wherein, execution is wrapped with the step of background update of the block ID stream IDs associated Include:
Access count of the increase for block ID;
The immediate cause weight for block ID is calculated in response to the current accessed time for block ID and previously visited time;
The access count for block ID is updated in response to immediate cause weight;
The stream ID for block ID is determined in response to the access count of renewal.
19. method as claimed in claim 15, wherein, execution is wrapped with the step of background update of the block ID stream IDs associated Include:
Block ID is placed in queue corresponding with stream ID, wherein, queue corresponding with stream ID is one in multiple queues;
When block ID reaches the head of queue, it is determined whether block ID is degraded.
20. method as claimed in claim 19, wherein:
Perform with the step of the background update of the block ID stream IDs associated also including in response to access count and device lifetime it is true Surely it is directed to block ID out-of-service time;
The step of determining whether and block ID degrades when block ID reaches the head of queue includes:If for block ID mistake The effect time passes by, then:Except block ID is removed from queue corresponding with stream ID;Reduce stream ID;Block ID is placed in and reduction In second queue corresponding to stream ID.
CN201710749551.1A 2016-09-02 2017-08-28 Solid state drive, drive and method of controlling solid state drive Active CN107797763B (en)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US201662383302P 2016-09-02 2016-09-02
US62/383,302 2016-09-02
US15/344,422 US10282324B2 (en) 2015-07-13 2016-11-04 Smart I/O stream detection based on multiple attributes
US15/344,422 2016-11-04
US201762458566P 2017-02-13 2017-02-13
US62/458,566 2017-02-13
US201762471350P 2017-03-14 2017-03-14
US62/471,350 2017-03-14
US15/499,877 US10656838B2 (en) 2015-07-13 2017-04-27 Automatic stream detection and assignment algorithm
US15/499,877 2017-04-27

Publications (2)

Publication Number Publication Date
CN107797763A true CN107797763A (en) 2018-03-13
CN107797763B CN107797763B (en) 2022-05-10

Family

ID=61531626

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710749551.1A Active CN107797763B (en) 2016-09-02 2017-08-28 Solid state drive, drive and method of controlling solid state drive

Country Status (4)

Country Link
JP (1) JP6775475B2 (en)
KR (1) KR102229013B1 (en)
CN (1) CN107797763B (en)
TW (1) TWI714800B (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108563585A (en) * 2018-03-27 2018-09-21 深圳忆联信息***有限公司 A method of it reducing SSD and writes amplification
CN109032505A (en) * 2018-06-26 2018-12-18 深圳忆联信息***有限公司 Data read-write method, device, computer equipment and storage medium with timeliness
CN110147335A (en) * 2018-02-09 2019-08-20 三星电子株式会社 For associated system and method between NVME order in SSD reservoir
CN110389909A (en) * 2018-04-16 2019-10-29 三星电子株式会社 Use the system and method for the performance of deep neural network optimization solid state drive

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102656172B1 (en) 2018-03-28 2024-04-12 삼성전자주식회사 Storage device for mapping virtual streams and physical streams and method thereof
US10623329B2 (en) 2018-06-27 2020-04-14 Juniper Networks, Inc. Queuing system to predict packet lifetime in a computing device
TWI730454B (en) 2019-07-10 2021-06-11 慧榮科技股份有限公司 Apparatus and method and computer program product for executing host input-output commands
KR20220049329A (en) 2020-10-14 2022-04-21 삼성전자주식회사 Storage controller, storage device, and operation method of storage device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461393A (en) * 2014-12-09 2015-03-25 华中科技大学 Mixed mapping method of flash memory
CN104809075A (en) * 2015-04-20 2015-07-29 电子科技大学 Solid recording device and method for accessing in real time and parallel processing
CN105446890A (en) * 2014-09-18 2016-03-30 三星电子株式会社 Intelligent data placement
CN105446938A (en) * 2014-09-22 2016-03-30 三星电子株式会社 Application processor including reconfigurable scaler and devices including the processor
US20160162203A1 (en) * 2014-12-09 2016-06-09 Knut S. Grimsrud Techniques to Manage Multiple Sequential Write Streams to a Solid State Drive

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006235960A (en) * 2005-02-24 2006-09-07 Fujitsu Ltd Method for increasing speed of garbage collection
JP2011175615A (en) * 2010-01-27 2011-09-08 Toshiba Corp Host device and memory device
US8341350B2 (en) * 2010-09-21 2012-12-25 Lsi Corporation Analyzing sub-LUN granularity for dynamic storage tiering
WO2012039216A1 (en) * 2010-09-24 2012-03-29 日本電気株式会社 Information processing device, method therefor and program therefor
US8615638B2 (en) * 2010-10-08 2013-12-24 Qualcomm Incorporated Memory controllers, systems and methods for applying page management policies based on stream transaction information
US8966201B2 (en) * 2010-12-10 2015-02-24 Sandisk Technologies Inc. Method and system for hijacking writes to a non-volatile memory
US9176864B2 (en) * 2011-05-17 2015-11-03 SanDisk Technologies, Inc. Non-volatile memory and method having block management with hot/cold data sorting
WO2013052562A1 (en) * 2011-10-05 2013-04-11 Lsi Corporation Self-journaling and hierarchical consistency for non-volatile storage
JP5723812B2 (en) * 2012-03-16 2015-05-27 株式会社 日立産業制御ソリューションズ File server, data input / output method, I / O hook module program, and I / O proxy daemon program
JP5586718B2 (en) * 2012-06-19 2014-09-10 株式会社東芝 CONTROL PROGRAM, HOST DEVICE CONTROL METHOD, INFORMATION PROCESSING DEVICE, AND HOST DEVICE
US9158687B2 (en) * 2013-03-04 2015-10-13 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
US9335950B2 (en) * 2013-03-15 2016-05-10 Western Digital Technologies, Inc. Multiple stream compression and formatting of data for data storage systems
US10409526B2 (en) * 2014-12-17 2019-09-10 Violin Systems Llc Adaptive garbage collection
JP2016170583A (en) * 2015-03-12 2016-09-23 株式会社東芝 Memory system and information processing system
US10324832B2 (en) * 2016-05-25 2019-06-18 Samsung Electronics Co., Ltd. Address based multi-stream storage device access
US10289309B2 (en) * 2016-09-12 2019-05-14 Toshiba Memory Corporation Automatic detection of multiple streams

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105446890A (en) * 2014-09-18 2016-03-30 三星电子株式会社 Intelligent data placement
CN105446938A (en) * 2014-09-22 2016-03-30 三星电子株式会社 Application processor including reconfigurable scaler and devices including the processor
CN104461393A (en) * 2014-12-09 2015-03-25 华中科技大学 Mixed mapping method of flash memory
US20160162203A1 (en) * 2014-12-09 2016-06-09 Knut S. Grimsrud Techniques to Manage Multiple Sequential Write Streams to a Solid State Drive
CN104809075A (en) * 2015-04-20 2015-07-29 电子科技大学 Solid recording device and method for accessing in real time and parallel processing

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110147335A (en) * 2018-02-09 2019-08-20 三星电子株式会社 For associated system and method between NVME order in SSD reservoir
CN110147335B (en) * 2018-02-09 2022-04-26 三星电子株式会社 System and method for association between NVME commands in SSD storage
CN108563585A (en) * 2018-03-27 2018-09-21 深圳忆联信息***有限公司 A method of it reducing SSD and writes amplification
CN110389909A (en) * 2018-04-16 2019-10-29 三星电子株式会社 Use the system and method for the performance of deep neural network optimization solid state drive
CN109032505A (en) * 2018-06-26 2018-12-18 深圳忆联信息***有限公司 Data read-write method, device, computer equipment and storage medium with timeliness

Also Published As

Publication number Publication date
KR102229013B1 (en) 2021-03-17
JP6775475B2 (en) 2020-10-28
KR20180026327A (en) 2018-03-12
TWI714800B (en) 2021-01-01
CN107797763B (en) 2022-05-10
TW201812591A (en) 2018-04-01
JP2018037088A (en) 2018-03-08

Similar Documents

Publication Publication Date Title
CN107797763A (en) Solid-state drive, driver and the method for controlling solid-state drive
US11392297B2 (en) Automatic stream detection and assignment algorithm
JP7046669B2 (en) Hardware-based map acceleration with inverse cache table
US10922287B2 (en) Intelligent layout of composite data structures in tiered storage
CN104115134B (en) For managing the method and system to be conducted interviews to complex data storage device
US8719508B2 (en) Near neighbor data cache sharing
CN104145252B (en) Adaptable caching in two levels of cache system is lifted
CN105373342B (en) Isomery Unified Memory
CN108874694A (en) Space memories crossfire prefetches device and method, manufacture and the test method of engine
CA3101214C (en) Modifying machine learning models to improve locality
US20120198172A1 (en) Cache Partitioning in Virtualized Environments
CN103207839B (en) Cache management method and system that track in the high-speed cache of storage is removed
TWI627534B (en) Method, computer readable storage medium and system for data caching
CN106537360A (en) Method and apparatus for shared cache with dynamic partitioning
US9557801B2 (en) Cache device, cache system and control method
CN106537361A (en) Method and apparatus for flexible cache partitioning by sets and ways into component caches
US20170123979A1 (en) Systems, devices, and methods for handling partial cache misses
CN106339181A (en) Method and system for processing data in storage system
CN106133707A (en) Cache management
KR102617154B1 (en) Snoop filter with stored replacement information, method for same, and system including victim exclusive cache and snoop filter shared replacement policies
US9971534B2 (en) Authoritative power management
US20160179580A1 (en) Resource management based on a process identifier
CN104750637B (en) Expansible input/output data mechanism for accelerator
US11042483B2 (en) Efficient eviction of whole set associated cache or selected range of addresses
US10289558B2 (en) Apparatus and method for reducing storage class memory write-backs

Legal Events

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