TWI714800B - Solid state drive, non-transitory storage medium and method for operating solid state drive - Google Patents

Solid state drive, non-transitory storage medium and method for operating solid state drive Download PDF

Info

Publication number
TWI714800B
TWI714800B TW106125834A TW106125834A TWI714800B TW I714800 B TWI714800 B TW I714800B TW 106125834 A TW106125834 A TW 106125834A TW 106125834 A TW106125834 A TW 106125834A TW I714800 B TWI714800 B TW I714800B
Authority
TW
Taiwan
Prior art keywords
block
stream
logic
lba
queue
Prior art date
Application number
TW106125834A
Other languages
Chinese (zh)
Other versions
TW201812591A (en
Inventor
楊靜珮
崔昌皓
拉吉尼凱斯 潘德倫根
維傑 巴拉科利斯南
拉姆拉杰 派迪恩
Original Assignee
南韓商三星電子股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
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 南韓商三星電子股份有限公司 filed Critical 南韓商三星電子股份有限公司
Publication of TW201812591A publication Critical patent/TW201812591A/en
Application granted granted Critical
Publication of TWI714800B publication Critical patent/TWI714800B/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/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/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

A Solid State Drive (SSD) is disclosed. The SSD may include flash memory to store data and may support a plurality of device streams. A SSD controller may manage reading and writing data to the flash memory, and may store a submission queue and a chunk-to-stream mapper. A flash translation layer may include a receiver to receive a write command, an LBA mapper to map an LBA to a chunk identifier (ID), stream selection logic to select a stream ID based on the chunk ID, a stream ID adder to add the stream ID to the write command, a queuer to place the chunk ID in the submission queue, and background logic to update the chunk-to-stream mapper after the chunk ID is removed from the submission queue.

Description

固態硬碟、非暫時性儲存媒體以及操作固態硬 碟的方法 Solid state drives, non-transitory storage media, and operating solid state drives Dish method

本發明概念大體上是有關於固態硬碟(Solid State Drive;SSD),且更特定言之,是有關於管理多串流SSD中的串流。 The concept of the present invention is generally related to solid state drives (Solid State Drive; SSD), and more specifically, is about managing streams in a multi-stream SSD.

多串流固態硬碟(SSD)允許智慧地置放傳入資料,以將內部廢棄項目收集(garbage collection;GC)的影響減至最小以及減少寫入放大。多串流可藉由將簡單標籤(串流ID)添加至自主機發送至SSD的寫入命令中的每一者來達成。基於此標籤,SSD可將資料分組成共同區塊(comman blocks)。 Multi-stream solid state drives (SSD) allow intelligent placement of incoming data to minimize the impact of internal garbage collection (GC) and reduce write amplification. Multiple streams can be achieved by adding a simple tag (stream ID) to each of the write commands sent from the host to the SSD. Based on this tag, the SSD can group data into comman blocks.

然而,為了利用多串流裝置,應用程式必須察覺,SSD支援多串流,以使得軟體源可將共同串流指定至具有類似性質(諸如資料壽命)的資料。實現軟體多串流察覺需要修改軟體。然而,修改任何軟體會帶有對軟體的操作作出非預期改變的風險。已知市場上有非常大量的不同軟體產品,預期即使少數此等軟體產品經修改以支援多串流充其量似乎是不太可能的命題。 However, in order to utilize a multi-stream device, the application must be aware that the SSD supports multiple streams so that the software source can assign a common stream to data with similar properties (such as data lifetime). Realization of software multi-stream detection requires software modification. However, modifying any software carries the risk of making unexpected changes to the operation of the software. Knowing that there are a very large number of different software products on the market, it is expected that even if a few of these software products are modified to support multiple streams, it seems an unlikely proposition at best.

仍然需要無需修改軟體而支援多串流的方法。 There is still a need to support multiple streams without modifying the software.

考慮到以上問題,本發明提供一種固態硬碟(SSD),其包括:用以儲存資料的快閃記憶體;所述SSD中對多個裝置串流的支援;SSD控制器,用以管理回應於多個寫入命令將資料寫入至所述快閃記憶體,所述SSD控制器包含用於提交佇列及區塊(chunk)至串流映射器的儲存器;以及快閃轉譯層。所述快閃轉譯層包含:接收器,用以接收包含邏輯區塊位址(logical block address;LBA)的寫入命令;LBA映射器,用以將所述LBA映射至區塊識別符(ID);串流選擇邏輯,用以使用所述區塊至串流映射器基於所述區塊ID來選擇串流ID;串流ID新增器,用以將所述串流ID添加至所述寫入命令;佇列器,用以將所述區塊ID置放於所述提交佇列中;以及背景邏輯,用以自所述提交佇列移除所述區塊ID及更新所述區塊至串流映射器。 Considering the above problems, the present invention provides a solid state drive (SSD), which includes: flash memory for storing data; support for streaming of multiple devices in the SSD; and an SSD controller for managing responses Write data to the flash memory in multiple write commands. The SSD controller includes a storage for submitting queues and chunks to a stream mapper; and a flash translation layer. The flash translation layer includes: a receiver for receiving a write command including a logical block address (LBA); an LBA mapper for mapping the LBA to a block identifier (ID ); Stream selection logic to use the block-to-stream mapper to select a stream ID based on the block ID; Stream ID adder to add the stream ID to the Write command; a queuer to place the block ID in the commit queue; and background logic to remove the block ID from the commit queue and update the area Block-to-stream mapper.

105:機器 105: Machine

110:處理器 110: processor

115:記憶體 115: memory

120:固態硬碟(SSD) 120: Solid State Drive (SSD)

125:記憶體控制器 125: Memory Controller

130:裝置驅動器 130: device driver

205:時鐘 205: Clock

210:網路連接器 210: network connector

215:匯流排 215: Bus

220:使用者介面 220: User Interface

225:輸入/輸出引擎 225: input/output engine

305:主機介面邏輯 305: host interface logic

310:SSD控制器 310: SSD controller

315-1、315-2、315-3、315-4、315-5、315-6、315-7、315-8:快閃記憶體晶片 315-1, 315-2, 315-3, 315-4, 315-5, 315-6, 315-7, 315-8: Flash memory chip

320-1、320-2、320-3、320-4:通道 320-1, 320-2, 320-3, 320-4: channels

325:快閃轉譯層 325: Flash Translation Layer

330:儲存器 330: Storage

335:提交佇列 335: Submit Queue

340:區塊至串流映射器 340: block to stream mapper

405:接收器 405: receiver

410:邏輯區塊位址(LBA)映射器 410: Logical Block Address (LBA) Mapper

415:串流選擇邏輯 415: Stream selection logic

420:串流ID新增器 420: Stream ID Adder

425:傳輸器 425: Transmitter

430:佇列器 430: Queue

435:背景邏輯 435: background logic

505-1、505-2、505-3:寫入命令 505-1, 505-2, 505-3: write command

510-1、510-2、510-3:LBA 510-1, 510-2, 510-3: LBA

515-1、515-2、515-3、515-4:區塊識別符(ID) 515-1, 515-2, 515-3, 515-4: block identifier (ID)

520:算術邏輯單元(ALU) 520: Arithmetic Logic Unit (ALU)

525:位址遮罩 525: address mask

530-1、530-2、530-3、530-4、1035:串流識別符(ID) 530-1, 530-2, 530-3, 530-4, 1035: Streaming identifier (ID)

705:區塊大小 705: block size

805:順序、頻率、新近度(SFR)表 805: Sequence, frequency, recency (SFR) table

810-1、810-2、810-3、810-4:當前存取時間 810-1, 810-2, 810-3, 810-4: current access time

815-1、815-2、815-3、815-4:先前存取時間 815-1, 815-2, 815-3, 815-4: previous access time

820-1、820-2、820-3、820-4:存取計數 820-1, 820-2, 820-3, 820-4: Access count

905:順序性邏輯 905: sequential logic

910:新近度邏輯 910: Recency logic

915:存取計數調整器 915: Access count adjuster

920:串流ID調整器 920: Streaming ID adjuster

1005:儲存器 1005: storage

1010:比較器 1010: Comparator

1015:視窗 1015: Windows

1020-1、1020-2、1020-3、1020-4、1020-5、1020-6、1020-7、1020-8:輸入項 1020-1, 1020-2, 1020-3, 1020-4, 1020-5, 1020-6, 1020-7, 1020-8: input items

1025:佇列 1025: Queue

1030:結尾邏輯區塊位址 1030: End logical block address

1040:視窗大小 1040: Window size

1105:新近度權重 1105: recency weight

1110:衰減週期 1110: Decay period

1205:經調整存取計數 1205: Adjusted access count

1405-1、1405-2、1405-3:節點 1405-1, 1405-2, 1405-3: Node

1410:期滿時間 1410: Expiry time

1505:提昇邏輯 1505: boost logic

1510:第二佇列器 1510: Second Queue

1515:儲存器 1515: Storage

1520-1、1520-2、1520-3:佇列 1520-1, 1520-2, 1520-3: Queue

1525:降級邏輯 1525: downgrade logic

1605:提交佇列的頂部 1605: Top of the submission queue

1610、1615、1630:虛線箭頭 1610, 1615, 1630: dotted arrow

1620:佇列的輸入項 1620: Queue entry

1625-1、1625-2、1625-3:佇列的頂部 1625-1, 1625-2, 1625-3: the top of the queue

1705:增量器 1705: Incrementer

1710:串流ID調整器 1710: Streaming ID adjuster

1715:區塊期滿邏輯 1715: Block expiry logic

1720:最熱區塊邏輯 1720: Hottest block logic

1905:裝置壽命 1905: Device life

2005:比較器 2005: Comparator

2010:減量器 2010: Decreaser

2105、2110、2115、2120、2125、2130、2135、2140、2145、2205、2210、2305、2310、2315、2320、2325、2330、2335、2405、2410、2415、2420、2505、2510、2515、2520、2525、2530、2535、2540、2545、2550、2555、2560、2565:區塊 2105, 2110, 2115, 2120, 2125, 2130, 2135, 2140, 2145, 2205, 2210, 2305, 2310, 2315, 2320, 2325, 2330, 2335, 2405, 2410, 2415, 2420, 2505, 2510, 2515, 2520, 2525, 2530, 2535, 2540, 2545, 2550, 2555, 2560, 2565: block

圖1根據本發明概念的實施例繪示具有固態硬碟(SSD)的機器。 FIG. 1 illustrates a machine with a solid state drive (SSD) according to an embodiment of the inventive concept.

圖2繪示圖1的機器的額外細節。 Figure 2 shows additional details of the machine of Figure 1.

圖3繪示圖1的SSD的細節。 FIG. 3 shows the details of the SSD of FIG. 1.

圖4繪示圖3的快閃轉譯層的細節。 FIG. 4 shows the details of the flash translation layer of FIG. 3.

圖5繪示各種命令的邏輯區塊位址(LBA)經映射至區塊識 別符(ID)、接著映射至串流ID以供圖1的SSD使用。 Figure 5 shows the logical block address (LBA) of various commands mapped to the block identification The ID is then mapped to the stream ID for use by the SSD in Figure 1.

圖6繪示圖5的各種命令經修改以包含圖5的串流ID且經傳輸至圖1的SSD。 FIG. 6 shows that various commands of FIG. 5 are modified to include the stream ID of FIG. 5 and transmitted to the SSD of FIG. 1.

圖7繪示算術邏輯單元(ALU)將圖5的LBA映射至圖5的區塊ID。 FIG. 7 shows the arithmetic logic unit (ALU) mapping the LBA of FIG. 5 to the block ID of FIG. 5.

圖8根據本發明概念的第一實施例繪示可用以將區塊ID映射至串流ID的順序、頻率、新近度(Sequential,Frequency,Recency;SFR)表。 FIG. 8 illustrates a sequence, frequency, and recency (Sequential, Frequency, Recency; SFR) table that can be used to map block IDs to stream IDs according to the first embodiment of the inventive concept.

圖9根據本發明概念的第一實施例繪示圖3的快閃轉譯層及圖4的背景邏輯的額外細節。 FIG. 9 illustrates additional details of the flash translation layer of FIG. 3 and the background logic of FIG. 4 according to the first embodiment of the inventive concept.

圖10繪示圖9的順序性邏輯的細節。 FIG. 10 shows the details of the sequential logic of FIG. 9.

圖11繪示使用圖9的新近度邏輯來計算新近度權重。 Fig. 11 shows the recency logic of Fig. 9 used to calculate recency weights.

圖12繪示在圖9的存取計數調整器中使用圖11的新近度權重來調整存取計數。 FIG. 12 illustrates the use of the recency weight of FIG. 11 in the access count adjuster of FIG. 9 to adjust the access count.

圖13繪示使用圖9的串流ID調整器根據圖12的經調整存取計數來計算串流ID。 FIG. 13 illustrates the use of the stream ID adjuster of FIG. 9 to calculate the stream ID according to the adjusted access count of FIG. 12.

圖14根據本發明概念的第二實施例繪示可用以將區塊ID映射至串流ID的節點。 FIG. 14 illustrates a node that can be used to map a block ID to a stream ID according to a second embodiment of the inventive concept.

圖15根據本發明概念的第二實施例繪示圖4的背景邏輯的細節。 FIG. 15 illustrates the details of the background logic of FIG. 4 according to the second embodiment of the inventive concept.

圖16繪示圖15的佇列中的區塊ID的提昇及降級。 FIG. 16 shows the promotion and demotion of the block ID in the queue of FIG. 15.

圖17繪示圖15的提昇邏輯的細節。 FIG. 17 shows the details of the lifting logic of FIG. 15.

圖18根據本發明概念的第二實施例繪示根據經調整存取計數來計算串流ID。 FIG. 18 illustrates the calculation of the stream ID according to the adjusted access count according to the second embodiment of the inventive concept.

圖19繪示圖17的區塊期滿邏輯的細節。 FIG. 19 shows the details of the block expiration logic of FIG. 17.

圖20繪示圖15的降級邏輯的細節。 FIG. 20 shows the details of the downgrade logic of FIG. 15.

圖21A至圖21B根據本發明概念的實施例繪示圖5的用於判定用於寫入命令的串流ID的實例程序的流程圖。 21A to 21B show a flowchart of the example program of FIG. 5 for determining a stream ID used for a write command according to an embodiment of the inventive concept.

圖22根據本發明概念的實施例繪示圖4的LBA映射器用於將圖5的LBA映射至圖5的區塊ID的實例程序的流程圖。 FIG. 22 illustrates a flowchart of an example program of the LBA mapper of FIG. 4 for mapping the LBA of FIG. 5 to the block ID of FIG. 5 according to an embodiment of the inventive concept.

圖23A至圖23B根據本發明概念的第一實施例繪示用於使用順序性邏輯更新針對區塊的串流ID的實例程序的流程圖。 FIGS. 23A to 23B illustrate a flowchart of an example program for updating the stream ID for a block using sequential logic according to the first embodiment of the inventive concept.

圖24根據本發明概念的第一實施例繪示用於執行圖8的SFR表的背景更新的實例程序的流程圖。 FIG. 24 illustrates a flowchart of an example program for performing background update of the SFR table of FIG. 8 according to the first embodiment of the inventive concept.

圖25A至圖25C根據本發明概念的第二實施例繪示用於執行圖14的節點的背景更新的實例程序的流程圖。 25A to 25C show a flowchart of an example program for performing background update of the node in FIG. 14 according to a second embodiment of the inventive concept.

現將詳細參考本發明概念的實施例,其實例說明於附圖中。在以下詳細描述中,闡述大量特定細節以使得能夠透徹理解本發明概念。然而,應理解,一般熟習此項技術者可在沒有此等特定細節的情況下實踐本發明概念。在其他個例中,尚未詳細描述熟知方法、程序、組件、電路以及網路,以免不必要地混淆實施例的態樣。 Reference will now be made in detail to the embodiments of the concept of the present invention, examples of which are illustrated in the accompanying drawings. In the following detailed description, numerous specific details are set forth to enable a thorough understanding of the concept of the present invention. However, it should be understood that those skilled in the art can practice the concept of the present invention without these specific details. In other cases, well-known methods, procedures, components, circuits, and networks have not been described in detail so as not to unnecessarily obscure the aspect of the embodiments.

應理解,儘管在本文中可使用術語第一、第二等來描述各種元件,但此等元件不應受此等術語限制。此等術語僅用以區分一個元件與另一元件。舉例而言,第一模組可稱為第二模組,且類似地,第二模組可稱為第一模組,而不背離本發明概念的範 疇。 It should be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, the first module may be called the second module, and similarly, the second module may be called the first module without departing from the scope of the concept of the present invention. Domain.

本文中的本發明概念的描述中所使用的術語僅出於描述特定實施例的目的且並不意欲限制本發明概念。如對本發明概念 及所附申請專利範圍的描述中所使用,單數形式「一」及「所述」 亦意欲包含複數形式,除非上下文另有清晰指示。亦將理解,如本文中所使用的術語「及/或」是指且涵蓋相關聯的所列項目中的一或多者的任何及所有可能組合。應進一步理解,術語「包括」在用於本說明書中時規定所陳述的特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。圖式的組件及特徵未必按比例繪製。 The terms used in the description of the inventive concept herein are only for the purpose of describing specific embodiments and are not intended to limit the inventive concept. As for the concept of the invention And used in the description of the scope of the attached application, the singular forms "one" and "the said" It is also intended to include the plural form, unless the context clearly dictates otherwise. It will also be understood that the term "and/or" as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It should be further understood that the term "including" when used in this specification specifies the existence of the stated features, integers, steps, operations, elements and/or components, but does not exclude one or more other features, integers, steps, operations , The existence or addition of elements, components and/or groups thereof. The components and features of the diagram are not necessarily drawn to scale.

提出用於獨立於應用層而執行自動串流偵測及指定的設備及方法。串流指定可基於執行運行工作負荷偵測且可獨立於應用程式。串流指定可應用於具備多串流功能的固態硬碟(SSD)。 A device and method for performing automatic stream detection and designation independent of the application layer are proposed. Streaming designation can be based on running workload detection and can be independent of the application. Streaming designation can be applied to solid state drives (SSDs) with multi-streaming capabilities.

串流指定協定的實施具有若干優點。第一,應用程式完全不必修改。然而,可在方法中考慮指定其自身串流優先權的應用程式。舉例而言,串流指定協定可完全遵從應用程式指定的串流優先權。或者,串流指定協定可使用任何所要的權重值來執行組合應用程式指定的串流優先權與所計算的串流指定的加權和。 The implementation of the streaming designation protocol has several advantages. First, the application does not need to be modified at all. However, an application that specifies its own streaming priority can be considered in the method. For example, the stream designation protocol can completely comply with the stream priority designated by the application. Alternatively, the stream designation protocol can use any desired weight value to perform a combination of the stream priority designated by the application program and the weighted sum of the calculated stream designation.

第二,另外使用具備多串流功能的裝置的任何應用程式可利用自動串流偵測及指定。第三,應用程式無需知道來自硬體的串流相關資訊。第四,串流指定協定可單獨地管理每一具備多串流功能的SSD,從而使得應用程式能夠使用多個SSD,甚至混合具備多串流功能的SSD與不具備多串流功能的SSD。第五,串 流指定可在系統的任何所要層處(諸如,在檔案系統中、在區塊層中、在裝置驅動器中、在SSD內部(例如,在快閃轉譯層內)等)執行,只要可識別寫入命令的開始位址(或檔案偏移,在串流指定協定實施於檔案系統層中的情況下)。 Second, any application that uses a device with multi-streaming capabilities can use automatic stream detection and designation. Third, the application does not need to know the streaming-related information from the hardware. Fourth, the streaming designation protocol can individually manage each SSD with multi-streaming capabilities, so that applications can use multiple SSDs, and even mix SSDs with multi-streaming capabilities and SSDs without multi-streaming capabilities. Fifth, string Stream designation can be performed at any desired layer of the system (such as in the file system, in the block layer, in the device drive, in the SSD (for example, in the flash translation layer), etc.), as long as the write can be recognized The start address of the import command (or file offset, in the case that the stream specification protocol is implemented in the file system layer).

SSD的整個位址空間可被劃分成數個固定大小區塊(chunk)。此區塊大小可為任何所要大小:例如,512位元組磁區的倍數。藉由將LBA除以每個區塊的磁區的數目,或更一般地,除以區塊大小,請求的起始邏輯區塊位址(starting LBA)可轉換為區塊識別符(ID)。 The entire address space of the SSD can be divided into several fixed-size chunks. The block size can be any desired size: for example, a multiple of a 512-byte sector. By dividing the LBA by the number of sectors in each block, or more generally, by the block size, the requested starting logical block address (starting LBA) can be converted into a block identifier (ID) .

在本發明概念的第一實施例中,順序、頻率以及新近度(SFR)方法可用以判定串流指定: In the first embodiment of the inventive concept, the sequence, frequency, and recency (SFR) method can be used to determine the stream designation:

●順序性:若新請求的起始LBA鄰近於先前請求的結尾LBA(即,寫入命令涉及順序寫入),則第二寫入命令可被指定與較早寫入命令相同的串流ID。此方法假設一組順序請求具有類似壽命,在所述請求時短時間段內發出的情況下。由於寫入命令可由不同源(應用程式、檔案系統、虛擬機等)發出且可互混,因此自SSD的視角看,寫入命令可不遵循嚴格的順序模式。考慮此可能性,順序性可相對於視窗(其大小可改變)內的數個先前命令來判定。舉例而言,視窗尺寸四將檢查傳入請求是否接續先前四個請求中的任一者。 ●Sequence: If the start LBA of the new request is adjacent to the end LBA of the previous request (ie, the write command involves sequential write), the second write command can be assigned the same stream ID as the earlier write command . This method assumes that a group of sequential requests have a similar life span, when the requests are issued within a short period of time. Since write commands can be issued by different sources (applications, file systems, virtual machines, etc.) and can be mixed with each other, from the perspective of SSD, write commands may not follow a strict sequential pattern. Considering this possibility, the order can be determined with respect to several previous commands in the window (the size of which can be changed). For example, the window size four will check whether the incoming request continues any of the previous four requests.

●頻率:頻率指起始LBA已被存取的次數。頻率可量測為存取計數。只要區塊經存取(經寫入),該區塊的存取計數即遞增1。較高的存取計數指示該區塊的較短壽命。頻率因此反映資料區塊(data chunk)的溫度。 ●Frequency: Frequency refers to the number of times the initial LBA has been accessed. Frequency can be measured as access count. As long as a block is accessed (written), the access count of the block is incremented by one. A higher access count indicates the shorter life of the block. The frequency therefore reflects the temperature of the data chunk.

●新近度:新近度指示資料區塊的時間局部性。舉例而言,一個區塊在某一時間段中可為較頻繁地存取且累積高存取計數,但之後會停用。在此情形下,不需要使區塊長時間地保持在熱串流中。區塊僅在其在最近時間段內被頻繁存取時才被認為熱。在本發明概念的一個實施例中,衰減週期可針對所有區塊來預定義。若區塊在最近的N個衰減週期內未被存取,則存取計數將會除以2N●Recency: The recency indicates the temporal locality of the data block. For example, a block may be accessed more frequently and accumulate a high access count in a certain period of time, but will be disabled afterwards. In this case, there is no need to keep the block in the hot stream for a long time. A block is considered hot only when it has been frequently accessed in the most recent time period. In an embodiment of the inventive concept, the decay period can be predefined for all blocks. If the block has not been accessed in the last N decay periods, the access count will be divided by 2 N.

針對區塊的串流ID可藉由頻率及新近度兩者(以及順序性,若適用)來判定。若區塊經頻繁存取,則頻率將所述區塊提昇至較熱串流,而若區塊在最後衰減週期期間停用,則新近度使所述區塊降級至較冷串流。在本發明概念的一個實施例中,對數尺度可用以將存取計數轉換至串流ID,其可反映裝置串流的數目遠小於存取計數的值範圍的事實。因此,舉例而言:新近度權重=2((當前時間-最後存取時間)/衰減週期) The stream ID for a block can be determined by both frequency and recency (and sequence, if applicable). If a block is accessed frequently, the frequency will boost the block to a hotter stream, and if the block is disabled during the last decay period, the recency will downgrade the block to a colder stream. In an embodiment of the inventive concept, the logarithmic scale can be used to convert the access count to the stream ID, which can reflect the fact that the number of device streams is much smaller than the value range of the access count. So, for example: recency weight=2 ((current time-last access time)/decay period)

串流ID=log(存取計數/新近度權重) Stream ID=log (access count/recency weight)

針對區塊的串流ID的更新可執行為背景任務,從而將對輸入/輸出(I/O)效能的影響減至最小。 The update of the stream ID of the block can be performed as a background task, thereby minimizing the impact on input/output (I/O) performance.

在本發明概念的第二實施例中,可使用多佇列方法。針對每一裝置串流,可定義佇列:由於存在多個裝置串流,因此將存在多個佇列。多佇列演算法可劃分成兩個不同功能模組。一個模組負責將每一區塊自較低佇列提昇至較高佇列;另一模組處置啟用或停用區塊自較高佇列至較低佇列的降級。區塊的存取計數愈高,認為所述區塊愈熱,且因此將所述區塊置放於更高佇列中。提昇及降級兩者可執行為背景任務,從而將對I/O效能的影響減 至最小。 In the second embodiment of the inventive concept, a multi-queue method can be used. For each device stream, a queue can be defined: since there are multiple device streams, there will be multiple queues. The multi-queue algorithm can be divided into two different functional modules. One module is responsible for elevating each block from the lower queue to the higher queue; the other module handles the degrading of the enabled or disabled block from the higher queue to the lower queue. The higher the access count of a block, the hotter the block is considered, and therefore the block is placed in a higher queue. Both promotion and demotion can be performed as background tasks, thereby reducing the impact on I/O performance To the smallest.

當區塊第一次被存取時,其被指定至串流0(最低串流)且置放於對應佇列中。否則,將所述區塊自當前佇列移除,更新所述區塊的存取計數,且將所述區塊置放於(潛在的)新佇列中。 任何方法可用以基於存取計數來判定適當佇列:例如,存取計數的對數可計算為新串流ID(其識別對應佇列)。提昇模組亦可檢查以查看所述區塊是否為目前最熱區塊(基於存取計數)。若是目前最熱區塊,則裝置壽命可基於此區塊的存取之間的間隔而設定。 最後,提昇邏輯可基於裝置壽命及所述區塊的最後存取時間來判定區塊的期滿時間(expiration time)。 When the block is accessed for the first time, it is assigned to stream 0 (lowest stream) and placed in the corresponding queue. Otherwise, the block is removed from the current queue, the access count of the block is updated, and the block is placed in the (potentially) new queue. Any method can be used to determine the appropriate queue based on the access count: for example, the logarithm of the access count can be calculated as the new stream ID (its identification corresponds to the queue). The promotion module can also check to see if the block is currently the hottest block (based on the access count). If it is currently the hottest block, the device lifetime can be set based on the interval between accesses of this block. Finally, the promotion logic can determine the expiration time of the block based on the device lifetime and the last access time of the block.

為了使區塊降級,降級模組在區塊到達其佇列的頂部時檢查區塊。若該區塊的期滿時間尚未過去,則所述區塊可留下。 否則,可將所述區塊自其當前佇列移除,指定新的期滿時間,且降級至較低佇列(即,指定較低串流ID)。 In order to degrade a block, the downgrade module checks the block when it reaches the top of its queue. If the expiration time of the block has not passed, the block can be left. Otherwise, the block can be removed from its current queue, specify a new expiration time, and downgrade to a lower queue (ie, specify a lower stream ID).

另外,若降級的區塊是最熱區塊,則所述區塊有段時間未被存取(如期滿時間所判定)。因此,所述區塊不再熱,且可選擇來自該佇列的另一區塊作為最熱區塊(具有關於裝置壽命的適當分支)。此新選擇的最熱區塊可為該佇列中的下一區塊,或其可為進入該佇列的最後區塊。 In addition, if the degraded block is the hottest block, the block has not been accessed for a period of time (as determined by the expiry time). Therefore, the block is no longer hot, and another block from the queue can be selected as the hottest block (with an appropriate branch regarding the life of the device). The newly selected hottest block may be the next block in the queue, or it may be the last block to enter the queue.

圖1根據本發明概念的實施例繪示具有固態硬碟(SSD)的機器。在圖1中,繪示了機器105。機器105可為任何所要機器,包含(但不限於)桌上型或膝上型電腦、伺服器(獨立伺服器或機架伺服器),或可受益於本發明概念的實施例的任何其他裝置。機器105亦可包含特殊化攜帶型計算裝置、平板電腦、智慧型電 話以及其他計算裝置。機器105可執行任何所要應用程式:資料庫應用程式為良好實例,但本發明概念的實施例可延伸至任何所要應用程式。 FIG. 1 illustrates a machine with a solid state drive (SSD) according to an embodiment of the inventive concept. In Figure 1, the machine 105 is shown. The machine 105 can be any desired machine, including (but not limited to) a desktop or laptop computer, a server (standalone server or rack server), or any other device that can benefit from embodiments of the inventive concept . The machine 105 can also include specialized portable computing devices, tablets, and smart phones. Words and other computing devices. The machine 105 can execute any desired application program: the database application program is a good example, but the embodiment of the inventive concept can be extended to any desired application program.

機器105(與其特定形式無關)可包含處理器110、記憶體115以及固態硬碟(SSD)120。處理器110可為任何種類的處理器:例如,Intel Xeon、Celeron、Itanium,或Atom處理器、AMD Opteron處理器、ARM處理器等。雖然圖1繪示單個處理器,但機器105可包含任何數目個處理器。記憶體115可為任何種類的記憶體,諸如快閃記憶體、靜態隨機存取記憶體(Static Random Access Memory;SRAM)、持續性隨機存取記憶體(Persistent Random Access Memory)、鐵電隨機存取記憶體(Ferroelectric Random Access Memory;FRAM)或非揮發性隨機存取記憶體(Non-Volatile Random Access Memory;NVRAM)(諸如,磁阻式隨機存取記憶體(Magnetoresistive Random Access Memory;MRAM)等,但其通常為DRAM。記憶體115亦可為不同記憶體類型的任何所要組合。記憶體115可由亦作為機器105的部分的記憶體控制器125來控制。 The machine 105 (regardless of its specific form) may include a processor 110, a memory 115, and a solid state drive (SSD) 120. The processor 110 may be any type of processor: for example, Intel Xeon, Celeron, Itanium, or Atom processor, AMD Opteron processor, ARM processor, etc. Although Figure 1 shows a single processor, the machine 105 may include any number of processors. The memory 115 may be any kind of memory, such as flash memory, static random access memory (Static Random Access Memory; SRAM), persistent random access memory (Persistent Random Access Memory), and ferroelectric random access memory. Take memory (Ferroelectric Random Access Memory; FRAM) or non-volatile random access memory (Non-Volatile Random Access Memory; NVRAM) (such as magnetoresistive random access memory (Magnetoresistive Random Access Memory; MRAM)), etc. , But it is usually DRAM. The memory 115 can also be any desired combination of different memory types. The memory 115 can be controlled by the memory controller 125 which is also part of the machine 105.

SSD 120可為任何種類的SSD,且甚至可延伸以包含執行廢棄項目收集(即使在未使用快閃記憶體時)的其他類型的儲存器。SSD 120可由裝置驅動器130(其可駐存於記憶體115內)來控制。 The SSD 120 can be any type of SSD, and can even be extended to include other types of storage that perform waste item collection (even when flash memory is not used). The SSD 120 can be controlled by the device driver 130 (which can reside in the memory 115).

圖2繪示圖1的機器105的額外細節。參看圖2,通常,機器105包含一或多個處理器110,所述處理器可包含記憶體控制器125及時鐘205,所述時鐘可用以協調機器105的組件的操作。 處理器110亦可耦接至記憶體115,作為實例,所述記憶體可包含隨機存取記憶體(random access memory;RAM)、唯讀記憶體(read-only memory;ROM)或其他狀態保持媒體。處理器110亦可耦接至固態硬碟120且耦接至網路連接器210,所述網路連接器可為(例如)乙太網路連接器或無線連接器。處理器110亦可連接至匯流排215,使用者介面220及可使用輸入/輸出引擎225管理的輸入/輸出介面埠以及其他組件可附接至所述匯流排。 FIG. 2 shows additional details of the machine 105 of FIG. 1. Referring to FIG. 2, in general, a machine 105 includes one or more processors 110, and the processor may include a memory controller 125 and a clock 205, and the clock may be used to coordinate the operation of the components of the machine 105. The processor 110 may also be coupled to a memory 115. As an example, the memory may include random access memory (RAM), read-only memory (ROM), or other state retention media. The processor 110 may also be coupled to the solid state drive 120 and to the network connector 210, which may be, for example, an Ethernet connector or a wireless connector. The processor 110 can also be connected to the bus 215 to which the user interface 220 and the input/output interface ports that can be managed using the input/output engine 225 and other components can be attached to the bus.

圖3繪示圖1的SSD 120的細節。在圖3中,SSD 120可包含主機介面邏輯305、SSD控制器310以及各種快閃記憶體晶片315-1至315-8,所述快閃記憶體晶片可組織成各種通道320-1至320-4。主機介面邏輯305可管理圖1的SSD 120與機器105之間的通信。SSD控制器310可管理快閃記憶體晶片315-1至315-8上的讀取及寫入操作以及廢棄項目收集操作。SSD控制器310可包含用以執行此管理中的一些的快閃轉譯層325。在使SSD 120負責將寫入命令指定至串流的本發明概念的實施例中,SSD控制器310可包含用以支援串流指定的儲存器330。儲存器330可包含提交佇列335及區塊至串流映射器340。提交佇列335可用以儲存關於受各種寫入命令影響的區塊的資訊。當接收到寫入命令時,可將與該等寫入命令相關聯的區塊(或實際上,此等區塊的識別符(ID))置放於提交佇列335中。接著,作為背景處理程序(其用以將對前景操作的影響減至最小)的部分,可將區塊自提交佇列335移除,且可更新針對此等區塊的串流指定。區塊至串流映射器340可儲存關於何種串流目前被指定至各種區塊的資訊:作為提交佇列335中的區塊ID的結果,此資訊可更新(或提交佇列 335中沒有區塊ID-不在使用中的區塊可由於未使用而指定至較低優先權串流)。區塊的概念將參看下文的圖5及圖7加以進一步論述。 FIG. 3 shows the details of the SSD 120 in FIG. 1. In FIG. 3, the SSD 120 may include a host interface logic 305, an SSD controller 310, and various flash memory chips 315-1 to 315-8, and the flash memory chips may be organized into various channels 320-1 to 320 -4. The host interface logic 305 can manage the communication between the SSD 120 and the machine 105 of FIG. 1. The SSD controller 310 can manage the read and write operations on the flash memory chips 315-1 to 315-8 and the discarded item collection operations. The SSD controller 310 may include a flash translation layer 325 to perform some of this management. In an embodiment of the inventive concept that makes the SSD 120 responsible for assigning a write command to a stream, the SSD controller 310 may include a storage 330 to support stream assignment. The storage 330 may include a submission queue 335 and a block-to-stream mapper 340. The submission queue 335 can be used to store information about blocks affected by various write commands. When a write command is received, the blocks associated with the write commands (or actually, the identifiers (ID) of these blocks) can be placed in the commit queue 335. Then, as part of the background processing procedure (which is used to minimize the impact on the foreground operation), blocks can be removed from the submission queue 335, and the stream assignments for these blocks can be updated. The block-to-stream mapper 340 can store information about which stream is currently assigned to various blocks: as a result of the block ID in the submission queue 335, this information can be updated (or the submission queue There is no block ID in 335-blocks not in use can be assigned to lower priority streams because they are not in use). The concept of blocks will be further discussed with reference to Figure 5 and Figure 7 below.

雖然圖3將SSD 120繪示為包含組織成四個通道320-1至320-4的八個快閃記憶體晶片315-1至315-8,但本發明概念的實施例可支援組織成任何數目個通道的任何數目個快閃記憶體晶片。 Although FIG. 3 illustrates the SSD 120 as including eight flash memory chips 315-1 to 315-8 organized into four channels 320-1 to 320-4, the embodiment of the inventive concept can support the organization into any Any number of flash memory chips of number of channels.

圖4繪示圖3的快閃轉譯層325的細節。在圖4中,快閃轉譯層325經繪示為包含接收器405、邏輯區塊位址(LBA)映射器410、串流選擇邏輯415、串流ID新增器420、傳輸器425、佇列器430以及背景邏輯435。接收器405可自各種軟體源(諸如,作業系統、應用程式、檔案系統、遠端機器以及其他此等源)接收寫入命令。對於給定寫入命令,LBA映射器410可將寫入命令中所使用的LBA映射至圖1的SSD 120上的特定區塊。串流選擇邏輯415接著可選擇適於區塊的串流。串流選擇邏輯415可使用圖3的區塊至串流映射器340來完成此串流選擇,且可包含用以搜尋圖3的區塊至串流映射器340以找到對應於選定區塊的輸入項(entry)的邏輯。替代地,串流選擇邏輯415可使用其他方法:例如,藉由根據區塊的存取計數來計算串流ID(類似於在下文參看圖13所描述的操作),或藉由以循環方法來指定串流(從而在所有裝置串流中均勻地分散寫入命令)。串流ID新增器420接著可使用用以將資料寫入至寫入命令中的邏輯將選定串流ID添加至寫入命令。一旦串流ID已附加至寫入命令,傳輸器425即可向圖1的SSD 120傳輸寫入命令(具有附加的串流ID)以用於執行。 FIG. 4 shows the details of the flash translation layer 325 of FIG. 3. In FIG. 4, the flash translation layer 325 is shown as including a receiver 405, a logical block address (LBA) mapper 410, a stream selection logic 415, a stream ID adder 420, a transmitter 425, and a queue Lister 430 and background logic 435. The receiver 405 can receive write commands from various software sources (such as operating systems, applications, file systems, remote machines, and other such sources). For a given write command, the LBA mapper 410 can map the LBA used in the write command to a specific block on the SSD 120 of FIG. 1. The stream selection logic 415 then selects a stream suitable for the block. The stream selection logic 415 may use the block-to-stream mapper 340 of FIG. 3 to complete the stream selection, and may include searching for the block-to-stream mapper 340 of FIG. 3 to find the corresponding block to the selected block. The logic of the entry. Alternatively, the stream selection logic 415 can use other methods: for example, by calculating the stream ID based on the access count of the block (similar to the operation described below with reference to FIG. 13), or by using a round-robin method. Specify the stream (so that write commands are evenly distributed among all device streams). The stream ID adder 420 can then add the selected stream ID to the write command using the logic used to write data to the write command. Once the stream ID has been attached to the write command, the transmitter 425 can transmit the write command (with the additional stream ID) to the SSD 120 of FIG. 1 for execution.

佇列器430可取得針對寫入命令的經識別區塊ID,且可將該區塊ID添加至圖3的提交佇列335。佇列器430可使用用以將區塊ID添加至圖3的提交佇列335的邏輯。舉例而言,佇列器430可包含至圖3的提交佇列335的尾部的指標(pointer),且可將區塊ID寫入至圖3的提交佇列335的尾部,此後,可更新至圖3的提交佇列335的尾部的指標,從而指向圖3的提交佇列335中的下一個槽。最終,區塊ID將自圖3的提交佇列335退出佇列,此後,背景邏輯435可對退出佇列的區塊ID進行運算。背景邏輯435將參看下文的圖9及圖15加以進一步論述。 The queuer 430 can obtain the identified block ID for the write command, and can add the block ID to the commit queue 335 of FIG. 3. The queuer 430 can use the logic to add the block ID to the commit queue 335 of FIG. 3. For example, the queuer 430 may include a pointer to the end of the submission queue 335 of FIG. 3, and may write the block ID to the end of the submission queue 335 of FIG. 3, and thereafter, it may be updated to The indicator at the end of the submission queue 335 in FIG. 3 thus points to the next slot in the submission queue 335 in FIG. 3. Finally, the block ID will exit the queue from the submission queue 335 in FIG. 3, and after that, the background logic 435 may perform operations on the block ID that exits the queue. The background logic 435 will be further discussed with reference to FIGS. 9 and 15 below.

背景邏輯435可以任何所要方式來實施。舉例而言,背景邏輯435可簡單地操作為每當存取區塊時使該區塊遞增(所述操作差不多涉及用以在儲存區塊ID及串流ID的資料結構中執行查找的邏輯及用以使如此定位的串流ID遞增的增量器)。然而,此簡單實施將意謂,最終,每個區塊可使用最高編號的串流,而較低編號的串流不被使用。更多有關實施可考慮區塊是否不被常用且可降低區塊的串流優先權以匹配。以不同方式實施背景邏輯435以達成此結果的本發明概念的兩個實施例將在下文參看圖8至圖13及圖14至圖20來描述。 The background logic 435 can be implemented in any desired way. For example, the background logic 435 can simply operate to increment the block each time the block is accessed (the operation almost involves the logic used to perform a lookup in the data structure storing the block ID and stream ID and An incrementer used to increment the stream ID thus positioned). However, this simple implementation will mean that, eventually, each block can use the highest numbered stream, while the lower numbered stream is not used. For more implementation, consider whether the block is not commonly used and the streaming priority of the block can be reduced to match. Two embodiments of the inventive concept that implement the background logic 435 in different ways to achieve this result will be described below with reference to FIGS. 8-13 and 14-20.

儘管背景邏輯435經描述為在「背景」(由此命名)中操作,但在背景中執行串流指定更新便於將對至圖1的SSD 120的讀取及寫入的影響減至最小。假定串流指定可經更新而不影響圖1的SSD 120的效能,背景邏輯435沒有理由不能在「前景」中操作。舉例而言,若圖1的SSD 120包含處理器(亦即,圖1的SSD 120提供儲存器中計算(In-Storage Computing;ISC)),則圖1的 SSD 120中的此處理器可能潛在地專用於即時地更新串流指定,而不影響圖1的SSD 120的讀取及寫入效能。在此情形中,背景邏輯435可立即操作以執行串流指定更新,而無需將區塊ID置放於圖3的提交佇列335中或等到背景邏輯435可不影響前景操作而操作時的時間。 Although the background logic 435 is described as operating in the "background" (hence the name), performing stream-specific updates in the background facilitates minimizing the impact on reading and writing to the SSD 120 of FIG. Assuming that the stream designation can be updated without affecting the performance of the SSD 120 in FIG. 1, there is no reason why the background logic 435 cannot operate in the "foreground". For example, if the SSD 120 in FIG. 1 includes a processor (that is, the SSD 120 in FIG. 1 provides In-Storage Computing (ISC)), then the SSD 120 in FIG. 1 This processor in the SSD 120 may potentially be dedicated to updating stream assignments in real time without affecting the read and write performance of the SSD 120 in FIG. 1. In this case, the background logic 435 can operate immediately to perform stream-specific updates without placing the block ID in the commit queue 335 of FIG. 3 or waiting until the time when the background logic 435 can operate without affecting the foreground operation.

在圖4中,快閃轉譯層325經繪示為負責執行串流指定及串流ID更新。但在本發明概念的其他實施例中,圖4中所示的組件中的一或多個可以軟體來實施且可被包含以作為(例如)圖1的記憶體控制器125、圖1的裝置驅動器130的部分,或實施為可攔截寫入請求且在發佈寫入命令之前將串流組合的程式庫程序(library routines),或實施為單獨專用硬體(在圖1的SSD 120內,或在機器105內的別處)。對於此論述而言,對由圖4的組件執行的串流指定的任何參考意欲涵蓋任何特定位置處的實施,即使伴隨圖4至圖20的描述聚焦於在快閃轉譯層325內的實施。 In FIG. 4, the flash translation layer 325 is shown as responsible for performing stream designation and stream ID update. However, in other embodiments of the inventive concept, one or more of the components shown in FIG. 4 may be implemented by software and may be included as, for example, the memory controller 125 of FIG. 1 and the device of FIG. 1 Part of the drive 130 may be implemented as library routines that can intercept write requests and combine streams before issuing write commands, or implemented as a separate dedicated hardware (in SSD 120 in FIG. 1, or Elsewhere in machine 105). For this discussion, any reference specified to the stream performed by the components of FIG. 4 is intended to encompass implementation at any particular location, even if the description accompanying FIGS. 4-20 focuses on implementation within the flash translation layer 325.

雖然圖4將LBA映射器410及串流選擇邏輯415繪示為單獨組件,但在邏輯上,此等組件的結構可組合成單個組件。更一般而言,本發明概念的實施例可將圖4至圖6、圖9至圖13以及圖15至圖20中繪示與描述為單獨的任何組件組合成整體組件。 Although FIG. 4 shows the LBA mapper 410 and the stream selection logic 415 as separate components, logically, the structure of these components can be combined into a single component. More generally, the embodiments of the inventive concept can combine any components shown and described in FIGS. 4-6, 9-13, and 15-20 as a single unit into an integral component.

圖5繪示各種命令的邏輯區塊位址(LBA)經映射至區塊識別符(ID)且接著映射至串流ID以供圖1的SSD使用。在圖5中,繪示了寫入命令505-1、505-2以及505-3,但本發明概念的實施例可支援任何數目個寫入命令。另外,雖然圖5僅繪示了寫入命令,但本發明概念的實施例亦可同樣適用於讀取命令。寫入命令505-1至505-3可包含LBA 510-1至510-3,其指定寫入命 令505-1至505-3的起始LBA。 FIG. 5 shows that the logical block address (LBA) of various commands is mapped to a block identifier (ID) and then to a stream ID for use by the SSD of FIG. 1. In FIG. 5, write commands 505-1, 505-2, and 505-3 are shown, but embodiments of the inventive concept can support any number of write commands. In addition, although FIG. 5 only shows the write command, the embodiment of the inventive concept can also be applied to the read command. The write commands 505-1 to 505-3 may include LBA 510-1 to 510-3, which specify the write command Let the starting LBA of 505-1 to 505-3.

LBA映射器410可自寫入命令505-1至505-3存取LBA 510-1至510-3。一旦LBA 510-1至510-3已自寫入命令505-1至505-3讀取,LBA映射器410即可判定對應的區塊ID 515-1至515-3。區塊可被視為SSD 120的邏輯子分割(但不需要區塊與SSD 120的其他邏輯子分割(諸如,區塊(block)及分頁)對準)。區塊的數目可以任何所要方式判定:例如,藉由為區塊選取所要大小且將SSD 120的大小除以該區塊大小,或藉由選擇已證實會提供足夠效用而無需由圖4的背景邏輯435執行過多處理的數目(且將SSD 120分割成如此多的區塊)。區塊不必具有相同大小,但大小的均勻性可簡化LBA映射器410的運算。因此,舉例而言,一個區塊可包含SSD 120中的128 KB的資料,而另一區塊可包含SSD 120中的512 KB的資料。作為二的冪的區塊大小特別地有利,是因為自LBA判定區塊可使用移位運算來執行,但本發明概念的實施例可支援任何所要大小的區塊。 The LBA mapper 410 can access the LBA 510-1 to 510-3 from the write commands 505-1 to 505-3. Once the LBA 510-1 to 510-3 have been read from the write commands 505-1 to 505-3, the LBA mapper 410 can determine the corresponding block IDs 515-1 to 515-3. A block can be regarded as a logical sub-division of the SSD 120 (but the block does not need to be aligned with other logical sub-divisions of the SSD 120 (such as block and page)). The number of blocks can be determined in any desired way: for example, by selecting the desired size for the block and dividing the size of the SSD 120 by the block size, or by selecting that has proven to provide sufficient utility without the need for the background of Figure 4 The logic 435 performs an excessive number of processes (and divides the SSD 120 into so many blocks). The blocks need not have the same size, but the uniformity of the size can simplify the operation of the LBA mapper 410. Therefore, for example, one block may include 128 KB of data in SSD 120, and another block may include 512 KB of data in SSD 120. A block size that is a power of two is particularly advantageous because the decision block from the LBA can be performed using a shift operation, but the embodiment of the inventive concept can support any block of any desired size.

LBA映射器410可以任何數目個方式來判定區塊ID 515-1至515-3。舉例而言,LBA映射器410可包含用以根據LBA 510-1至510-3以數學方式計算區塊ID 515-1至515-3的算術邏輯單元(arithmetic logic unit;ALU)520。或者,LBA映射器410可包含位址遮罩525,其可遮蔽來自LBA 510-1至510-3的各種位元,從而留下區塊ID 515-1至515-3。 The LBA mapper 410 can determine the block IDs 515-1 to 515-3 in any number of ways. For example, the LBA mapper 410 may include an arithmetic logic unit (ALU) 520 for mathematically calculating the block IDs 515-1 to 515-3 according to the LBAs 510-1 to 510-3. Alternatively, the LBA mapper 410 may include an address mask 525, which may mask various bits from the LBA 510-1 to 510-3, thereby leaving the block IDs 515-1 to 515-3.

一旦區塊ID 515-1至515-3已判定,串流選擇邏輯415即可判定待用於該區塊的串流。串流選擇邏輯415可使用區塊ID 515-1至515-3以自區塊至串流映射器340判定對應的串流ID 530-1至530-3。 Once the block IDs 515-1 to 515-3 have been determined, the stream selection logic 415 can determine the stream to be used for the block. The stream selection logic 415 can use the block IDs 515-1 to 515-3 to determine the corresponding stream ID from the block to the stream mapper 340 530-1 to 530-3.

圖6繪示圖5的命令505-1及505-2經修改以包含圖5的串流ID 530-1及530-2且經傳輸至圖1的SSD 120。(由於空間原因,圖6僅繪示了來自圖5的三個寫入命令及相關聯資料中的兩者。然而,圖6以與圖5相同的方式概括。)在圖6中,串流ID新增器420可將串流ID 530-1及530-2寫入至寫入命令505-1及505-2中。以此方式,圖1的SSD 120可知道在處理寫入命令505-1及505-2時將使用哪個裝置串流。傳輸器425可將經修改的寫入命令505-1及505-2傳輸至圖1的SSD 120。 6 shows that the commands 505-1 and 505-2 of FIG. 5 are modified to include the stream IDs 530-1 and 530-2 of FIG. 5 and transmitted to the SSD 120 of FIG. 1. (Due to space reasons, Figure 6 only shows two of the three write commands and associated data from Figure 5. However, Figure 6 is summarized in the same way as Figure 5.) In Figure 6, streaming The ID adder 420 can write the stream IDs 530-1 and 530-2 into the write commands 505-1 and 505-2. In this way, the SSD 120 of FIG. 1 can know which device will be used to stream when processing the write commands 505-1 and 505-2. The transmitter 425 may transmit the modified write commands 505-1 and 505-2 to the SSD 120 of FIG. 1.

圖5至圖6中未繪示圖4的佇列器430的操作。一旦圖5的區塊ID 515-1至515-3已判定,圖4的佇列器430即可將圖5的區塊ID 515-1至515-3在圖3的提交佇列335中排隊,以供圖4的背景邏輯435稍後處理。圖4的佇列器430可在圖5的區塊ID 515-1至515-3已判定之後的任何時間將圖5的區塊ID 515-1至515-3排隊。舉例而言,在圖5的區塊ID515-1至515-3已由圖4的LBA映射器410判定之後,在經修改寫入命令505-1至505-3已由傳輸器425發送至圖1的SSD 120之後,或在其間的任何時間,圖4的佇列器430可將圖5的區塊ID 515-1至515-3排隊。 The operation of the queuer 430 of FIG. 4 is not shown in FIGS. 5 to 6. Once the block IDs 515-1 to 515-3 of FIG. 5 have been determined, the queuer 430 of FIG. 4 can queue the block IDs 515-1 to 515-3 of FIG. 5 in the submission queue 335 of FIG. 3 , For the background logic 435 of FIG. 4 to process later. The queuer 430 of FIG. 4 can queue the block IDs 515-1 to 515-3 of FIG. 5 at any time after the block IDs 515-1 to 515-3 of FIG. 5 have been determined. For example, after the block IDs 515-1 to 515-3 of FIG. 5 have been determined by the LBA mapper 410 of FIG. 4, the modified write commands 505-1 to 505-3 have been sent to the graph by the transmitter 425. After the SSD 120 of 1 or at any time in between, the queuer 430 of FIG. 4 can queue the block IDs 515-1 to 515-3 of FIG. 5.

圖7繪示圖5的算術邏輯單元(ALU)520將圖5的LBA 510-1映射至圖5的區塊ID 515-1。在圖7中,ALU 520可接收LBA 510-1及區塊大小705。藉由將LBA 510-1除以區塊大小705(及捨棄計算的任何分數部分),可計算區塊ID 515-1。 FIG. 7 shows that the arithmetic logic unit (ALU) 520 of FIG. 5 maps the LBA 510-1 of FIG. 5 to the block ID 515-1 of FIG. 5. In FIG. 7, ALU 520 can receive LBA 510-1 and block size 705. By dividing the LBA 510-1 by the block size 705 (and discarding any fractional part of the calculation), the block ID 515-1 can be calculated.

如上文參看圖4所描述,圖4的背景邏輯435可以變化的方式實施。圖8至圖13描述本發明概念的一個實施例,且圖14 至圖20描述本發明概念的另一實施例。本發明概念的此等實施例並不意欲為互相排除的:本發明概念的兩個實施例的組合是可能的。另外,本發明概念的其他實施例亦為可能的,無論是否在本文中明確地描述。 As described above with reference to FIG. 4, the background logic 435 of FIG. 4 can be implemented in various ways. Figures 8 to 13 describe an embodiment of the concept of the present invention, and Figure 14 To FIG. 20, another embodiment of the inventive concept is described. These embodiments of the inventive concept are not intended to be mutually exclusive: a combination of two embodiments of the inventive concept is possible. In addition, other embodiments of the inventive concept are also possible, regardless of whether they are explicitly described herein.

在針對圖4的背景邏輯435的本發明概念的第一實施例中,圖3的區塊至串流映射器340可包含順序、頻率、新近度(SFR)表。「順序、頻率、新近度」指可用來判定及更新待指定至區塊的串流ID的方式。「順序」指一個寫入命令接續另一寫入命令的情形,亦即,第二寫入命令將資料寫入至較早寫入命令之後的下一個LBA。在兩個寫入命令順序的情況下,兩個命令應指定至同一串流ID是合理的。 In the first embodiment of the inventive concept for the background logic 435 of FIG. 4, the block-to-stream mapper 340 of FIG. 3 may include a sequence, frequency, and recency (SFR) table. "Sequence, frequency, recency" refers to methods that can be used to determine and update the stream ID to be assigned to a block. "Sequence" refers to a situation where one write command is followed by another write command, that is, the second write command writes data to the next LBA after the earlier write command. In the case of two write command sequences, it is reasonable that the two commands should be assigned to the same stream ID.

如下文參看圖10所描述,「順序」在此上下文中不應完全從字面上理解,是因為寫入命令可自任何數目個不同的軟體源發出。若來自單個軟體源(例如,資料庫應用程式)的兩個「順序」寫入命令碰巧由來自某一其他軟體源(例如,檔案系統)的寫入命令分開,則介入寫入命令不應消除來自資料庫應用程式的兩個寫入命令的順序性。實際上,本文中提供了機制以阻止介入寫入命令阻斷順序性。 As described below with reference to FIG. 10, "sequence" should not be understood completely literally in this context, because the write command can be issued from any number of different software sources. If two "sequential" write commands from a single software source (for example, a database application) happen to be separated by a write command from some other software source (for example, a file system), the intervening write command should not be eliminated The sequence of the two write commands from the database application. In fact, this article provides a mechanism to prevent intervening write commands from blocking sequentiality.

「頻率」指區塊隔多久被存取。區塊存取愈頻繁,則認為區塊「較熱」(其中溫度充當優先權的類比:區塊的「溫度」愈高,區塊的優先權應愈高)。因此,隨著區塊愈來愈多地被存取,區塊應被指定較高的串流優先權。 "Frequency" refers to how often the block is accessed. The more frequently the block is accessed, the block is considered to be "hotter" (the analogy of the temperature as the priority: the higher the "temperature" of the block, the higher the priority of the block). Therefore, as more and more blocks are accessed, the blocks should be assigned a higher streaming priority.

「新近度」指區塊自上次被存取之後經過了多久。「新近度」充當「頻率」的平衡:區塊自上次被存取之後經過的跨度愈 長,則認為區塊「較冷」,且因此,區塊應被指定較低優先權。因此,雖然「頻率」使區塊的相關聯串流增大,但「新近度」使區塊的相關聯串流減小。「順序性」、「頻率」以及「新近度」將參看下文的圖10至圖13加以進一步論述。 "Recency" refers to how long a block has passed since it was last accessed. "Recency" acts as a balance of "frequency": the span of the block since the last access Longer, the block is considered to be "colder", and therefore, the block should be assigned a lower priority. Therefore, although the "frequency" increases the associated stream of the block, the "recency" reduces the associated stream of the block. "Sequence", "frequency" and "recency" will be further discussed with reference to Figure 10 to Figure 13 below.

現在轉而參考圖8中所示的本發明概念的實施例,圖8根據本發明概念的此實施例繪示了一實例SFR表,其可用以將圖5的區塊ID515-1至515-3映射至圖5的串流ID530-1至530-3。 在圖8中,SFR表805可儲存各種資料。舉例而言,SFR表805可儲存各種區塊ID 515-1至515-4,及針對每一區塊ID 515-1至515-4的SFR對應串流ID 530-1至530-4。 Turning now to the embodiment of the inventive concept shown in FIG. 8, FIG. 8 illustrates an example SFR table according to this embodiment of the inventive concept, which can be used to combine the block IDs 515-1 to 515- of FIG. 3 is mapped to stream IDs 530-1 to 530-3 in FIG. 5. In Figure 8, the SFR table 805 can store various data. For example, the SFR table 805 can store various block IDs 515-1 to 515-4, and SFR corresponding stream IDs 530-1 to 530-4 for each block ID 515-1 to 515-4.

除了串流ID 530-1至530-4之外,SFR表805亦可儲存額外資料。舉例而言,針對每一區塊ID 515-1至515-4,SFR表805可儲存該區塊的當前(即,最近)存取時間810-1至810-4。 當前存取時間810-1至810-4可為區塊的任何類型(例如,讀取或寫入)的最後存取,或僅為最近寫入命令的時間。SFR表805亦可儲存先前存取時間815-1至815-4,其可表示區塊先前被存取時的時間。最後,SFR表805可儲存存取計數820-1至820-4,其可表示區塊的存取的數目。如上所述,存取計數820-1至820-4可表示區塊的存取(讀取及寫入兩者)或僅區塊的寫入存取的總數目。 In addition to stream ID 530-1 to 530-4, SFR table 805 can also store additional data. For example, for each block ID 515-1 to 515-4, the SFR table 805 can store the current (ie, most recent) access time of the block 810-1 to 810-4. The current access time 810-1 to 810-4 may be the last access of any type (for example, read or write) of the block, or only the time of the most recent write command. The SFR table 805 can also store previous access times 815-1 to 815-4, which can indicate the time when the block was previously accessed. Finally, the SFR table 805 can store access counts 820-1 to 820-4, which can indicate the number of accesses to the block. As described above, the access counts 820-1 to 820-4 may represent the total number of block accesses (both read and write) or only block write access.

雖然圖8繪示了本發明概念的一個可能實施例,但本發明概念的其他實施例可儲存比圖8所示更多或更少的資料。另外,除表以外的資料結構可用以儲存資訊。本發明概念的實施例意欲涵蓋所有此等變化。 Although FIG. 8 illustrates a possible embodiment of the inventive concept, other embodiments of the inventive concept may store more or less data than shown in FIG. 8. In addition, data structures other than tables can be used to store information. The embodiments of the inventive concept are intended to cover all such variations.

圖9根據本發明概念的第一實施例繪示圖3的快閃轉譯 層325及圖4的背景邏輯435的額外細節。在圖9中,快閃轉譯層325亦可包含順序性邏輯905。為了與較早寫入命令使用相同串流指定,順序性邏輯905可判定圖5的寫入命令505-1是否接續某一較早寫入命令。順序性邏輯905將參看下文的圖10加以進一步論述。 Figure 9 illustrates the flash translation of Figure 3 according to the first embodiment of the inventive concept Additional details of layer 325 and background logic 435 of FIG. 4. In FIG. 9, the flash translation layer 325 may also include sequential logic 905. In order to use the same stream designation as the earlier write command, the sequential logic 905 can determine whether the write command 505-1 of FIG. 5 is followed by an earlier write command. The sequential logic 905 will be further discussed with reference to Figure 10 below.

背景邏輯435可包含新近度邏輯910、存取計數調整器915以及串流ID調整器920。新近度邏輯910可計算區塊的新近度權重。存取計數調整器915可基於新近度權重來調整針對串流的存取計數。且串流ID調整器920可基於經調整存取計數來計算將用於區塊的新串流ID。新近度邏輯910、存取計數調整器915以及串流ID調整器920可全部使用一個(或多個)單獨或共用ALU來實施,是因為前述組件執行算術計算。替代地,新近度邏輯910、存取計數調整器915以及串流ID調整器920可使用經設計以僅計算所描述的特定函數且僅此而已的專用硬體來實施。 The background logic 435 may include the recency logic 910, the access count adjuster 915, and the stream ID adjuster 920. The recency logic 910 may calculate the recency weight of the block. The access count adjuster 915 may adjust the access count for the stream based on the recency weight. And the stream ID adjuster 920 may calculate a new stream ID to be used for the block based on the adjusted access count. The recency logic 910, the access count adjuster 915, and the stream ID adjuster 920 can all be implemented using one (or more) separate or shared ALUs because the aforementioned components perform arithmetic calculations. Alternatively, the recency logic 910, the access count adjuster 915, and the stream ID adjuster 920 may be implemented using dedicated hardware designed to calculate only the specific function described and nothing more.

圖10繪示圖9的順序性邏輯905的細節。在圖10中,順序性邏輯905經繪示為包含儲存器1005及比較器1010。出於實用起見,儲存器1005可為圖3的儲存器330的部分,而不是順序性邏輯905內的單獨儲存器。儲存器1005可儲存視窗1015,其為關於一組新近寫入命令的資訊,所述新近寫入命令中的每一者可具有指定至其的串流ID。舉例而言,圖10繪示了輸入項1020-1至1020-8,其中,輸入項1020-1至1020-4在視窗1015內。輸入項1020-1至1020-8可在佇列1025中管理。佇列1025可採用任何所要形式:例如,列舉兩個實例實施,具有至佇列1025的頂部的指標的陣列,或連結清單。每一輸入項1020-1至1020-8可包含較 早寫入命令的結尾LBA 1030及串流ID 1035。視窗1015可包含視窗大小1040,其可指定多少個新近輸入項包含於視窗1015中:在圖10中,視窗大小1040經繪示為包含四個輸入項,但本發明概念的實施例可支援視窗1015中的任何數目個輸入項。視窗大小1040可取決於數個因素,包括(例如)圖1的處理器110中的核心的數目,或在圖1的處理器110上執行的可發出寫入命令的軟體源(作業系統、檔案系統、應用程式以及其類似者)的數目。 本發明概念的實施例亦可支援基於其他因素所判定的視窗大小。 另外,視窗大小1040可靜態地設定,或可為隨著圖1的機器105內的條件改變而動態地變化。 FIG. 10 shows the details of the sequential logic 905 of FIG. 9. In FIG. 10, the sequential logic 905 is shown as including a storage 1005 and a comparator 1010. For practical purposes, the storage 1005 may be part of the storage 330 in FIG. 3 instead of a separate storage in the sequential logic 905. The storage 1005 may store a window 1015, which is information about a set of newly written commands, each of which may have a stream ID assigned to it. For example, FIG. 10 shows the input items 1020-1 to 1020-8, wherein the input items 1020-1 to 1020-4 are in the window 1015. Input items 1020-1 to 1020-8 can be managed in the queue 1025. The queue 1025 can take any desired form: for example, two example implementations, an array with indicators to the top of the queue 1025, or a linked list. Each entry 1020-1 to 1020-8 can contain Write the end of the command LBA 1030 and stream ID 1035 early. The window 1015 may include a window size 1040, which can specify how many recent input items are included in the window 1015: in FIG. 10, the window size 1040 is shown as including four input items, but the embodiment of the inventive concept can support windows Any number of entries in 1015. The window size 1040 may depend on several factors, including, for example, the number of cores in the processor 110 of FIG. 1, or the software source (operating system, file) that can issue write commands executed on the processor 110 of FIG. The number of systems, applications and the like). Embodiments of the inventive concept can also support window sizes determined based on other factors. In addition, the window size 1040 may be statically set, or may be dynamically changed as the conditions in the machine 105 of FIG. 1 change.

當接收到圖5的新寫入命令505-1時,比較器1010可比較圖5的LBA 510-1與視窗1015中的輸入項1020-1至1020-4的結尾LBA 1030。若圖5的LBA 510-1是較早寫入命令的結尾LBA 1030之後的下一個位址,則圖5的LBA 510-1可被視為接續較早寫入命令的結尾LBA 1030。替代地,若較早寫入命令的結尾LBA 1030與圖5的LBA 510-1之間不存在可使用的啟用LBA,則圖5的LBA 510-1可被視為接續較早寫入命令的結尾LBA 1030。(請注意,結尾LBA 1030不必在字面上是藉由較早寫入命令所寫入至的最後位址,其條件為不存在資料可能已寫入至的可能介入位址。)若圖5的LBA 510-1接續視窗1015中的任何輸入項1020-1至1020-4的結尾LBA 1030,則輸入項1020-1至1020-4中的串流ID 1035用於圖5的寫入命令505-1。 When receiving the new write command 505-1 of FIG. 5, the comparator 1010 can compare the LBA 510-1 of FIG. 5 with the end LBA 1030 of the input items 1020-1 to 1020-4 in the window 1015. If LBA 510-1 in FIG. 5 is the next address after the end LBA 1030 of the earlier write command, then LBA 510-1 in FIG. 5 can be regarded as the end LBA 1030 following the earlier write command. Alternatively, if there is no available enabling LBA between the end LBA 1030 of the earlier write command and the LBA 510-1 of FIG. 5, the LBA 510-1 of FIG. 5 can be regarded as a continuation of the earlier write command. End of LBA 1030. (Please note that the ending LBA 1030 does not have to be literally the last address written to by the earlier write command. The condition is that there is no possible intervention address to which data may have been written.) If the one in Figure 5 LBA 510-1 is connected to the end of any entry 1020-1 to 1020-4 in the window 1015. LBA 1030, then the stream ID 1035 in the entry 1020-1 to 1020-4 is used for the write command 505- in Figure 5 1.

儘管識別順序LBA是判定順序性何時發生的一種方法,但本發明概念的實施例可支援其他實施以偵測順序性。舉例而 言,順序性邏輯905可使用模式匹配器在重複模式中偵測針對特定軟體源何時存取LBA。 Although recognizing sequential LBA is a method to determine when sequentiality occurs, embodiments of the inventive concept can support other implementations to detect sequentiality. For example In other words, the sequential logic 905 can use a pattern matcher to detect when to access the LBA for a specific software source in a repeating pattern.

不管圖5的LBA 510-1是否接續視窗1015中的任何輸入項1020-1至1020-4的結尾LBA 1030,視窗1015中的最舊輸入項可被「推出」且可將圖5的寫入命令505-1添加至視窗1015。舉例而言,假定輸入項1020-1是視窗1015中針對最近寫入命令的輸入項,且輸入項1020-4是視窗1015中的最舊輸入項。可自視窗1015移除輸入項1020-4,且可將圖5的LBA 510-1及串流ID 530-1兩者添加至視窗1015以作為新輸入項。視窗1015可以任何所要方式實施。舉例而言,視窗1015可包含具有至最舊輸入項的指標的環形清單(諸如,陣列)。當新輸入項將添加至視窗1015時,藉由指標所指向的最舊輸入項可由新輸入項覆寫,且指標可經調整以指向視窗1015中的下一最舊輸入項。本發明概念的實施例可支援用以儲存關於視窗1015的資訊的任何所要結構:環形清單僅為一個此種可能資料結構。 Regardless of whether the LBA 510-1 in Figure 5 continues any entry 1020-1 to the end of 1020-4 in the window 1015 LBA 1030, the oldest entry in the window 1015 can be "pushed out" and the entry in Figure 5 can be written Command 505-1 was added to Windows 1015. For example, assume that the input item 1020-1 is the input item for the most recently written command in the window 1015, and the input item 1020-4 is the oldest input item in the window 1015. The input item 1020-4 can be removed from the window 1015, and both the LBA 510-1 and the stream ID 530-1 of FIG. 5 can be added to the window 1015 as new input items. The window 1015 can be implemented in any desired way. For example, the window 1015 may include a circular list (such as an array) with pointers to the oldest entry. When a new input item is to be added to the window 1015, the oldest input item pointed to by the pointer can be overwritten by the new input item, and the pointer can be adjusted to point to the next oldest input item in the window 1015. Embodiments of the inventive concept can support any desired structure for storing information about the window 1015: the ring list is only one such possible data structure.

圖11繪示使用圖9的新近度邏輯910來計算新近度權重。在圖11中,新近度邏輯910經繪示為計算新近度權重1105。 圖11中所示的方程式計算新近度權重1105為二的(區塊的當前(即,最近)存取時間810-1與先前存取時間815-1之間的差除以衰減週期1110)次冪。衰減週期1110表示可控制區塊多麼快速地降級至較低優先權串流的可調變數。衰減週期1110可指定至當圖1的機器105啟動時的初始值,且可視需要進行調整(藉由系統管理員手動進行,或基於系統工作負荷自動進行)。希望阻止區塊提昇過快(過快將導致大部分區塊使用同一高優先權串流)或過慢 (過慢將導致大部分區塊同一低優先權串流)。換言之,希望以相當均勻的方式將區塊指定至串流:個別串流不應過於大量或過於輕度地利用。衰減週期1110表示管理串流提昇及降級以達成此目標的方式。 FIG. 11 illustrates using the recency logic 910 of FIG. 9 to calculate the recency weight. In FIG. 11, the recency logic 910 is depicted as calculating a recency weight 1105. The equation shown in FIG. 11 calculates a recency weight 1105 of two (the difference between the current (ie, most recent) access time of the block 810-1 and the previous access time 815-1 divided by the decay period 1110) times power. The decay period 1110 represents an adjustable variable that can control how quickly the block degrades to a lower priority stream. The decay period 1110 can be assigned to the initial value when the machine 105 of FIG. 1 is started, and can be adjusted as needed (manually by the system administrator or automatically based on the system workload). Want to prevent blocks from being promoted too fast (too fast will cause most blocks to use the same high priority stream) or too slow (Too slow will cause most blocks to stream with the same low priority). In other words, it is desirable to assign blocks to streams in a fairly uniform manner: individual streams should not be used too much or too lightly. The decay period 1110 represents the way to manage stream upgrades and downgrades to achieve this goal.

請注意,新近度權重1105可針對每一區塊改變。另一方面,衰減週期1110在針對新近度權重1105的所有計算中應為均勻的(但此並不意謂衰減週期1110不可隨時間變化)。 Please note that the recency weight 1105 can be changed for each block. On the other hand, the decay period 1110 should be uniform in all calculations for the recency weight 1105 (but this does not mean that the decay period 1110 cannot change with time).

圖12繪示在圖9的存取計數調整器915中使用圖11的新近度權重1105來調整存取計數。在圖12中,存取計數調整器915經繪示在計算經調整存取計數1205。經調整存取計數1205可計算為存取計數820-1加一,再除以新近度權重1105。經調整存取計數1205接著可替代存取計數820-1而返回儲存(例如)於圖8的SFR表805中。 FIG. 12 shows that the access count adjuster 915 of FIG. 9 uses the recency weight 1105 of FIG. 11 to adjust the access count. In FIG. 12, the access count adjuster 915 is shown calculating the adjusted access count 1205. The adjusted access count 1205 can be calculated as the access count 820-1 plus one, and then divided by the recency weight 1105. The adjusted access count 1205 can then replace the access count 820-1 and return to storage (for example) in the SFR table 805 of FIG. 8.

圖13繪示使用圖9的串流ID調整器920根據圖12的經調整存取計數1205來計算串流ID。在圖13中,串流ID調整器920經繪示在計算串流ID 530-1。串流ID 530-1可計算為經調整存取計數1205的對數,且可替代串流ID 530-1而返回儲存(例如)於圖8的SFR表805中。雖然數學術語「對數」在關於電腦使用時通常意謂log2或log10,但可選擇使用任何所要底數的對數函數。用於對數函數的所選擇底數提供另一機制,本發明概念的實施例可藉由所述機制來避免區塊提昇過快或過慢(且因此,避免一或多個裝置串流的過度使用及其他裝置串流的使用不足)。視經調整存取計數1205變得有多大,串流ID調整器920亦可使用多於一種對數函數。舉例而言,若經調整存取計數1205低於某一臨 限值,則串流ID調整器920可使用log2來計算串流ID 530-1,且若經調整存取計數1205大於所述臨限值,則串流ID調整器920可使用log10來計算串流ID 530-1。 FIG. 13 illustrates the use of the stream ID adjuster 920 of FIG. 9 to calculate the stream ID according to the adjusted access count 1205 of FIG. 12. In FIG. 13, the stream ID adjuster 920 is shown calculating the stream ID 530-1. The stream ID 530-1 can be calculated as the logarithm of the adjusted access count 1205, and can be substituted for the stream ID 530-1 and stored back in the SFR table 805 of FIG. 8, for example. Although the mathematical term "logarithm" usually means log 2 or log 10 when it comes to computer use, you can choose to use any logarithmic function of the desired base. The selected base for the logarithmic function provides another mechanism by which the embodiment of the inventive concept can avoid too fast or too slow block promotion (and therefore, avoid excessive use of one or more device streams Insufficient use of streaming and other devices). Depending on how large the adjusted access count 1205 becomes, the stream ID adjuster 920 may also use more than one logarithmic function. For example, if the adjusted access count 1205 is lower than a certain threshold, the stream ID adjuster 920 can use log 2 to calculate the stream ID 530-1, and if the adjusted access count 1205 is greater than the If the threshold is reached, the stream ID adjuster 920 can use log 10 to calculate the stream ID 530-1.

值得作出關於圖11至圖13的一些註解。第一,圖11至圖13繪示了用於計算圖11的新近度權重1105、圖12的經調整存取計數1205以及串流ID 530-1的特定計算。然而,本發明概念的實施例可支援以任何所要方式計算此等各項(或其他值)。由於終極目標是能夠調整圖8的串流ID 530-1(向上或向下)以適於圖8的區塊ID 515-1,因此可使用達成此結果的任何所要方法。圖11至圖13僅繪示一個此種方法。 It is worthwhile to make some notes about Figures 11-13. First, FIGS. 11 to 13 illustrate specific calculations for calculating the recency weight 1105 of FIG. 11, the adjusted access count 1205 of FIG. 12, and the stream ID 530-1. However, embodiments of the inventive concept can support the calculation of these items (or other values) in any desired manner. Since the ultimate goal is to be able to adjust the stream ID 530-1 (up or down) of FIG. 8 to fit the block ID 515-1 of FIG. 8, any desired method to achieve this result can be used. Figures 11 to 13 show only one such method.

第二,在圖11至圖13中,存取時間(諸如,圖11的當前存取時間810-1及先前存取時間815-1)可基於所發出的請求的數目(而非基於特定時鐘)來判定。舉例而言,假定圖5的寫入命令505-1至505-3是連續地發出。圖5的寫入命令505-1可為第四寫入命令,圖5的寫入命令505-2可為第五寫入命令,且圖5的寫入命令505-3可為第六寫入命令。在此實例中,各種寫入命令的「存取時間」可分別為「4」、「5」以及「6」。 Second, in FIGS. 11-13, the access time (such as the current access time 810-1 and the previous access time 815-1 of FIG. 11) may be based on the number of requests issued (rather than based on a specific clock ) To determine. For example, assume that the write commands 505-1 to 505-3 of FIG. 5 are issued continuously. The write command 505-1 of FIG. 5 may be the fourth write command, the write command 505-2 of FIG. 5 may be the fifth write command, and the write command 505-3 of FIG. 5 may be the sixth write command. In this example, the "access time" of various write commands can be "4", "5" and "6" respectively.

判定存取時間的此選擇具有如下後果:若所有軟體源停止發送寫入命令歷時某一時間間隔(諸如,1秒,或1分鐘,或1小時),則區塊的「溫度」可無變化,即使區塊在大量時間中在技術上尚未被存取。因此,即使區塊在大量時間中可尚未被存取,但若在該時間期間無其他區塊被存取,則區塊的「溫度」可能無變化。自實用觀點看,所有軟體源可同時停止發送寫入命令不太可能。然而,若同時停止發送寫入命令發生,則本發明概念的實 施例將能夠處置所述情形。另外,本發明概念的實施例可支援使用時鐘時間而非命令編號,此可導致區塊冷卻,即使沒有軟體源在發出寫入命令。 This choice to determine the access time has the following consequences: if all software sources stop sending write commands for a certain time interval (such as 1 second, or 1 minute, or 1 hour), the block's "temperature" may not change , Even if the block has not been technically accessed in a large amount of time. Therefore, even if a block has not been accessed for a large amount of time, if no other blocks are accessed during this time, the "temperature" of the block may not change. From a practical point of view, it is unlikely that all software sources can stop sending write commands at the same time. However, if the sending of the write command is stopped at the same time, the embodiment of the inventive concept will be able to handle the situation. In addition, the embodiment of the inventive concept can support the use of clock time instead of command number, which can lead to block cooling even if no software source is issuing a write command.

與圖8至圖13相比,圖14至圖20繪示了本發明概念的另一實施例。如同圖8至圖13中所示的本發明概念的實施例,圖14至圖20可包含用以將圖5的區塊ID 515-1至515-3映射至圖5的串流ID 530-1至530-3的資料結構,及圖4的背景邏輯435的實施。 Compared with FIGS. 8 to 13, FIGS. 14 to 20 illustrate another embodiment of the concept of the present invention. Like the embodiment of the inventive concept shown in FIGS. 8-13, FIGS. 14-20 may include a method for mapping the block IDs 515-1 to 515-3 of FIG. 5 to the stream ID 530- of FIG. 5. The data structure of 1 to 530-3, and the implementation of the background logic 435 in FIG. 4.

圖14根據本發明概念的第二實施例繪示可用以將圖5的區塊ID 515-1至515-3映射至圖5的串流ID 530-1至530-3的節點。在圖14中,繪示了節點1405-1至1405-3,其中節點1405-1經詳細繪示。節點1405-1至1405-3可以任何所要方式(諸如,陣列、連結清單以及其他資料結構)來儲存。針對圖1的SSD 120中的每一區塊,可存在一個節點。 FIG. 14 illustrates a second embodiment according to the inventive concept that can map the block IDs 515-1 to 515-3 of FIG. 5 to the nodes of the stream IDs 530-1 to 530-3 of FIG. 5. In FIG. 14, nodes 1405-1 to 1405-3 are shown, and node 1405-1 is shown in detail. The nodes 1405-1 to 1405-3 can be stored in any desired manner (such as arrays, link lists, and other data structures). For each block in the SSD 120 of FIG. 1, there may be one node.

節點1405-1可包含多種資料,包含區塊ID 515-1、串流ID 530-1、存取計數820-1以及期滿時間1410。區塊ID 515-1、串流ID 530-1以及存取計數820-1儲存類似於本發明概念的第一實施例中的該等元素的資料。期滿時間1410表示區塊由於沒有被寫入命令存取而被視為期滿時的「時間」。如同本發明概念的第一個實施例,「時間」可關於所有寫入命令的序列中的特定寫入命令的數目進行量測,並非對時鐘的量測。 The node 1405-1 may include various data, including a block ID 515-1, a stream ID 530-1, an access count 820-1, and an expiration time 1410. The block ID 515-1, stream ID 530-1, and access count 820-1 store data similar to those elements in the first embodiment of the inventive concept. The expiration time 1410 represents the "time" when the block is deemed to expire because it is not accessed by the write command. Like the first embodiment of the concept of the present invention, "time" can be measured with respect to the number of specific write commands in a sequence of all write commands, not a measurement of the clock.

圖15根據本發明概念的第二實施例繪示圖4的背景邏輯435的細節。在圖15中,背景邏輯435可包含提昇邏輯1505、第二佇列器1510、用於佇列1520-1至1520-3的儲存器1515以及降 級邏輯1525。提昇邏輯1505可在適當時將區塊提昇至較高優先級串流。第二佇列器1510(如此命名以區分其與圖4的佇列器430,但其操作類似)可將圖5的區塊ID 515-1至515-3置放於佇列1520-1至1520-3中。第二佇列器1510可具有類似於圖4的佇列器430的結構。如同圖10的儲存器1005,儲存器1515可實際上是圖3的儲存器330的部分,而不是背景邏輯435內的單獨儲存器。本發明概念的實施例可支援任何數目個佇列:三個佇列1520-1至1520-3僅為實例。另外,針對圖5的每一串流ID 530-1至530-3可存在一個佇列:佇列1520-1至1520-3的數目與同時發生的圖3的區塊ID 515-1至515-3的數目相同。當圖5的區塊ID 515-1至515-3到達佇列1520-1至1520-3的頂部時,降級邏輯1525可判定是否使圖5的區塊ID 515-1至515-3降級。 FIG. 15 illustrates details of the background logic 435 of FIG. 4 according to the second embodiment of the inventive concept. In FIG. 15, the background logic 435 may include a boost logic 1505, a second queuer 1510, a storage 1515 for queues 1520-1 to 1520-3, and a down Level logic 1525. The promotion logic 1505 can promote the block to a higher priority stream when appropriate. The second queuer 1510 (so named to distinguish it from the queuer 430 of FIG. 4, but its operation is similar) can place the block IDs 515-1 to 515-3 of FIG. 5 in the queues 1520-1 to In 1520-3. The second queuer 1510 may have a structure similar to that of the queuer 430 of FIG. 4. Like the storage 1005 of FIG. 10, the storage 1515 may actually be part of the storage 330 of FIG. 3, rather than a separate storage in the background logic 435. The embodiment of the inventive concept can support any number of queues: the three queues 1520-1 to 1520-3 are just examples. In addition, there may be one queue for each stream ID 530-1 to 530-3 in FIG. 5: the number of queues 1520-1 to 1520-3 and the block IDs 515-1 to 515 in FIG. 3 that occur simultaneously The number of -3 is the same. When the block IDs 515-1 to 515-3 of FIG. 5 reach the top of the queues 1520-1 to 1520-3, the downgrade logic 1525 can determine whether to downgrade the block IDs 515-1 to 515-3 of FIG.

圖16繪示區塊ID在圖15的佇列1520-1至1520-3中的提昇及降級。在圖16中,使用字母ad表示圖3的區塊ID 515-1至515-3。佇列1520-1至1520-3中的未標註輸入項未使用於圖16中所示的實例中,且可儲存所述實例中另外未使用的任何區塊ID。 FIG. 16 shows the promotion and demotion of the block ID in the queues 1520-1 to 1520-3 in FIG. 15. In FIG. 16, letters a to d are used to indicate the block IDs 515-1 to 515-3 of FIG. 3. The unlabeled entries in the queues 1520-1 to 1520-3 are not used in the example shown in FIG. 16, and any block IDs that are not used in the example can be stored.

第一,在圖16中,提交佇列335經繪示具有在提交佇列335的頂部1605處的區塊ID a。區塊ID a可識別之前先前尚未存取的區塊。因此,如虛線箭頭1610所示,區塊ID a可添加至佇列1520-1(針對「最冷」串流的佇列)的尾部,此後,區塊ID a可自提交佇列335移除。 First, in FIG. 16, the submission queue 335 is shown with the block ID a at the top 1605 of the submission queue 335. Block ID a can identify blocks that have not been accessed before. Therefore, as shown by the dashed arrow 1610, the block ID a can be added to the end of the queue 1520-1 (the queue for the "coldest" stream), after which the block ID a can be removed from the submission queue 335 .

第二,在圖16中,提交佇列335可包含區塊ID b(其可在區塊ID a經處理之後移動至提交佇列335的頂部1605中)。作為針對區塊ID b的圖14的存取計數820-1增大的結果,區塊ID b 可提昇至「較熱」串流。如虛線箭頭1615所示,區塊ID b可自佇列1520-1的輸入項1620移動至佇列1520-2的尾部,此後,區塊ID b可自提交佇列335移除。 Second, in FIG. 16, the submission queue 335 may include the block ID b (which may move to the top 1605 of the submission queue 335 after the block ID a is processed). As a result of the increase in the access count 820-1 of FIG. 14 for the block ID b , the block ID b can be promoted to the "hotter" stream. As shown by the dotted arrow 1615, the block ID b can be moved from the entry 1620 of the queue 1520-1 to the end of the queue 1520-2, after which the block ID b can be removed from the submission queue 335.

第三,圖5的降級邏輯1525可依次檢查佇列1520-1至1520-3的頂部1625-1至1625-3。舉例而言,圖15的降級邏輯1525可檢查佇列1520-3的頂部1625-3處的區塊ID c。若區塊ID c快要降級,則區塊ID c可自佇列1520-3的頂部1625-3移動至佇列1520-2(針對下一個「最熱」串流的佇列)的尾部。作為區塊ID c降級的結果,佇列1520-3中的區塊ID d可變為最熱區塊,如下文參看圖17所描述。 Third, the degrading logic 1525 of FIG. 5 can sequentially check the tops 1625-1 to 1625-3 of the queues 1520-1 to 1520-3. For example, the downgrade logic 1525 of FIG. 15 may check the block ID c at the top 1625-3 of the queue 1520-3. If the block ID c is about to be degraded, the block ID c can be moved from the top 1625-3 of the queue 1520-3 to the end of the queue 1520-2 (the queue for the next "hottest" stream). As a result of the degradation of the block ID c , the block ID d in the queue 1520-3 can become the hottest block, as described below with reference to FIG. 17.

圖17繪示圖15的提昇邏輯1505的細節。在圖17中,提昇邏輯1505可包含增量器1705、串流ID調整器1710、區塊期滿邏輯1715以及最熱區塊邏輯1720。增量器1705可使圖14的存取計數820-1遞增,從而產生經調整存取計數。串流ID調整器1710可根據經調整存取計數來計算圖5的串流ID 530-1,如圖18中所示。串流ID調整器1710在結構上可類似於圖9的串流ID調整器920。 FIG. 17 shows details of the lifting logic 1505 of FIG. 15. In FIG. 17, the promotion logic 1505 may include an incrementer 1705, a stream ID adjuster 1710, a block expiration logic 1715, and a hottest block logic 1720. The incrementer 1705 can increment the access count 820-1 of FIG. 14 to generate an adjusted access count. The stream ID adjuster 1710 may calculate the stream ID 530-1 of FIG. 5 according to the adjusted access count, as shown in FIG. 18. The stream ID adjuster 1710 may be similar in structure to the stream ID adjuster 920 of FIG. 9.

返回圖17,區塊期滿邏輯1715可判定區塊的期滿時間。區塊的期滿時間可判定為區塊ID的當前存取時間加上裝置壽命。裝置壽命是隨後將論述的取決於何種區塊為最熱區塊的時間間隔。圖19將此繪示為方程式:期滿時間1410是存取計數820-1(如上文所論述,其可為圖5的區塊ID 515-1的當前存取時間)與裝置壽命1905的總和。 Returning to Figure 17, the block expiration logic 1715 can determine the expiration time of the block. The expiration time of the block can be determined as the current access time of the block ID plus the device lifetime. Device life is the time interval that depends on which block is the hottest block, which will be discussed later. Figure 19 illustrates this as an equation: the expiration time 1410 is the sum of the access count 820-1 (as discussed above, it can be the current access time of the block ID 515-1 of Figure 5) and the device lifetime 1905 .

最後,再次返回圖17,最熱區塊邏輯1720可判定圖5 的區塊ID 515-1現在是否表示最熱區塊。最熱區塊可定義為具有最高串流優先權的區塊ID。若存在具有最高串流優先權的多個區塊ID,則任何選擇演算法可用以選擇具有最高串流優先權的特定區塊ID作為最熱區塊。舉例而言,處於佇列的頂部的表示最高串流優先權的區塊ID可經選擇作為最熱區塊。或者,具有最近存取(即,最高當前存取時間)的區塊ID可經選擇作為最熱區塊。或者,處於佇列的尾部的表示最高串流優先權的區塊ID可經選擇作為最熱區塊。若圖5的區塊ID 515-1現在是最熱區塊,則圖19的裝置壽命1905可計算為圖5的區塊ID 515-1的當前存取時間與圖5的區塊ID 515-1的先前存取時間之間的差。圖19的裝置壽命1905可表示對特定區塊的兩個寫入命令之間的預期的最大間隔,且可基於針對最熱區塊的最近兩個寫入命令之間的間隔來定義。 圖19的裝置壽命1905接著可用以判定圖14的期滿時間1410,其可影響圖14的區塊ID 515-1何時降級。 Finally, return to Figure 17 again, the hottest block logic 1720 can determine Figure 5 Does the block ID 515-1 now represent the hottest block? The hottest block can be defined as the block ID with the highest streaming priority. If there are multiple block IDs with the highest streaming priority, any selection algorithm can be used to select the specific block ID with the highest streaming priority as the hottest block. For example, the block ID representing the highest streaming priority at the top of the queue can be selected as the hottest block. Alternatively, the block ID with the most recent access (ie, the highest current access time) can be selected as the hottest block. Alternatively, the block ID indicating the highest streaming priority at the end of the queue can be selected as the hottest block. If the block ID 515-1 in FIG. 5 is now the hottest block, the device lifetime 1905 in FIG. 19 can be calculated as the current access time of the block ID 515-1 in FIG. 5 and the block ID 515- in FIG. The difference between the previous access time of 1. The device lifetime 1905 of FIG. 19 may represent the expected maximum interval between two write commands for a particular block, and may be defined based on the interval between the most recent two write commands for the hottest block. The device life 1905 of FIG. 19 can then be used to determine the expiration time 1410 of FIG. 14, which can affect when the block ID 515-1 of FIG. 14 is degraded.

圖20繪示圖15的降級邏輯1525的細節。在圖20中,降級邏輯1525經繪示為包含比較器2005及減量器2010。比較器2005可比較當前時間(其同樣可為最近寫入請求的數目,而不是時鐘時間)與圖14的期滿時間1410。若當前時間超過圖14的期滿時間1410,則區塊可被視為比之前更冷,是因為區塊已在沒有任何寫入命令的情況下經過一時間間隔(其可量測為圖19的裝置壽命1905)。換言之,若圖19的裝置壽命1905表示至任何給定區塊的寫入之間的預期數目個寫入命令,則圖14的期滿時間1410(其可計算為圖14的區塊ID 515-1的最近存取時間加上圖19的裝置壽命1905)可表示圖14的區塊ID 515-1可被寫入且不被認為 已經變冷時的最新時間。若圖14的期滿時間1410已過去,則圖14的區塊ID 515-1已有些變冷且可降級。在該情況下,減量器2010可使圖5的串流ID 530-1遞減以降低圖5的區塊ID 515-1的優先權,從而與圖5的區塊ID 515-1的降低「溫度」對應。 FIG. 20 shows details of the downgrade logic 1525 of FIG. 15. In FIG. 20, the degrading logic 1525 is shown as including a comparator 2005 and a decrementer 2010. The comparator 2005 can compare the current time (which can also be the number of recent write requests instead of the clock time) with the expiration time 1410 of FIG. 14. If the current time exceeds the expiration time 1410 in Figure 14, the block can be considered colder than before, because the block has passed a time interval without any write command (which can be measured as Figure 19 The life of the device is 1905). In other words, if the device lifetime 1905 of FIG. 19 represents the expected number of write commands between writes to any given block, the expiration time 1410 of FIG. 14 (which can be calculated as the block ID 515- of FIG. 14) 1 plus the device lifetime 1905 in Figure 19) can indicate that the block ID 515-1 in Figure 14 can be written and is not considered The latest time when it has become cold. If the expiration time 1410 in FIG. 14 has passed, the block ID 515-1 in FIG. 14 has become somewhat colder and can be degraded. In this case, the decrementer 2010 can decrement the stream ID 530-1 of FIG. 5 to reduce the priority of the block ID 515-1 of FIG. 5, which is consistent with the decrease of the block ID 515-1 of FIG. "correspond.

若圖14的期滿時間1410尚未過去,則圖14的區塊ID 515-1尚未變冷,且圖14的區塊ID 515-1可留在其佇列的頂部處。 請注意,此並不意謂該佇列中的其他區塊ID會不被降級。因為區塊ID是按藉以存取區塊的次序置放於佇列中,所以圖14的區塊ID 515-1是最長時間之前所存取的(該佇列中的該等區塊ID的)區塊ID,且因此可為將期滿的第一區塊ID。若圖14的區塊ID 515-1再次經存取(且因此保持「熱」),則圖14的區塊ID 515-1可移動至佇列的尾部,從而將另一區塊id留在佇列的頂部且因此潛在地經受降級。 If the expiration time 1410 of FIG. 14 has not passed, the block ID 515-1 of FIG. 14 has not yet become cold, and the block ID 515-1 of FIG. 14 may remain at the top of its queue. Please note that this does not mean that other block IDs in the queue will not be downgraded. Because the block IDs are placed in the queue in the order in which the blocks are accessed, the block ID 515-1 in Figure 14 is the one accessed the longest time ago (the block IDs in the queue are ) Block ID, and therefore can be the first block ID that will expire. If the block ID 515-1 of Figure 14 is accessed again (and therefore remains "hot"), the block ID 515-1 of Figure 14 can be moved to the end of the queue, leaving another block id The top of the queue is therefore potentially subject to degradation.

圖21A至圖21B根據本發明概念的實施例繪示用於判定用於圖5的寫入命令505-1的圖5的串流ID 530-1的實例程序的流程圖。在圖21A中,在區塊2105處,圖4的接收器405可自軟體源接收寫入命令505-1。在區塊2110處,可自圖5的寫入命令505-1讀取圖5的LBA 510-1。在區塊2115處,圖4的LBA映射器410可將圖5的LBA 510-1映射至圖5的區塊ID 515-1。如上所述,圖5的LBA映射器410可以任何所要方式判定圖5的區塊ID 515-1:例如,藉由遮蔽來自圖5的LBA 510-1的某些位元,或藉由將圖5的LBA 510-1除以圖7的區塊大小705。在區塊2120處,圖5的串流選擇邏輯415可選擇待用於圖5的區塊ID 515-1的圖5的串流ID 530-1。如上所述,圖5的串流選擇邏輯415可 以任何所要方式操作:例如,藉由自圖3的區塊至串流映射器340查找圖5的串流ID 530-1,藉由自圖8的存取計數820-1計算圖5的串流ID 530-1,藉由以循環方式來指定裝置串流,或任何其他所要方法。在區塊2125處,圖4的串流ID新增器420可將圖5的串流ID 530-1添加至圖5的寫入命令505-1。最後,在區塊2130處,可由圖1的SSD 120處理圖5的寫入命令505-1以執行所指示的寫入操作,其可包含圖4的傳輸器425將圖5的寫入命令505-1傳輸至圖1的SSD 120。 21A to 21B illustrate a flowchart of an example program for determining the stream ID 530-1 of FIG. 5 for the write command 505-1 of FIG. 5 according to an embodiment of the inventive concept. In FIG. 21A, at block 2105, the receiver 405 of FIG. 4 may receive the write command 505-1 from the software source. At block 2110, the LBA 510-1 of FIG. 5 can be read from the write command 505-1 of FIG. 5. At block 2115, the LBA mapper 410 of FIG. 4 may map the LBA 510-1 of FIG. 5 to the block ID 515-1 of FIG. 5. As mentioned above, the LBA mapper 410 of FIG. 5 can determine the block ID 515-1 of FIG. 5 in any desired manner: for example, by masking certain bits from the LBA 510-1 of FIG. The LBA 510-1 of 5 is divided by the block size 705 of FIG. At block 2120, the stream selection logic 415 of FIG. 5 may select the stream ID 530-1 of FIG. 5 to be used for the block ID 515-1 of FIG. 5. As mentioned above, the stream selection logic 415 of FIG. 5 can Operate in any desired way: for example, by looking up the stream ID 530-1 of FIG. 5 from the block of FIG. 3 to the stream mapper 340, and calculating the string of FIG. 5 by the access count 820-1 from FIG. 8 Stream ID 530-1, by specifying device streaming in a round-robin manner, or any other desired method. At block 2125, the stream ID adder 420 of FIG. 4 may add the stream ID 530-1 of FIG. 5 to the write command 505-1 of FIG. 5. Finally, at block 2130, the write command 505-1 of FIG. 5 may be processed by the SSD 120 of FIG. 1 to perform the indicated write operation, which may include the transmitter 425 of FIG. 4 sending the write command 505 of FIG. 5 -1 is transmitted to the SSD 120 in FIG. 1.

此時,圖5的寫入命令505-1已完全經處理。然而,仍然可執行其他處理,諸如,以更新指定至圖5的區塊ID 515-1的圖5的串流ID 530-1。在區塊2135處(圖21B),圖4的佇列器430可將圖5的區塊ID 515-1添加至圖3的提交佇列335以供進一步處理。在區塊2140處,當圖5的區塊ID 515-1到達圖3的提交佇列335的頂部時,可將圖5的區塊ID 515-1自圖3的的提交佇列335移除。最後,在區塊2145處,圖4的背景邏輯435可更新用於圖5的區塊ID 515-1的圖5的串流ID 530-1。圖4的背景邏輯435用來更新用於圖5的區塊ID 515-1的圖5的串流ID 530-1的各種方法將參看下文的圖24及圖25A至圖25C加以描述。 At this time, the write command 505-1 of FIG. 5 has been completely processed. However, other processing can still be performed, such as to update the stream ID 530-1 of FIG. 5 assigned to the block ID 515-1 of FIG. 5. At block 2135 (FIG. 21B), the queuer 430 of FIG. 4 may add the block ID 515-1 of FIG. 5 to the submission queue 335 of FIG. 3 for further processing. At block 2140, when the block ID 515-1 of FIG. 5 reaches the top of the submission queue 335 of FIG. 3, the block ID 515-1 of FIG. 5 can be removed from the submission queue 335 of FIG. 3 . Finally, at block 2145, the background logic 435 of FIG. 4 may update the stream ID 530-1 of FIG. 5 for the block ID 515-1 of FIG. 5. Various methods used by the background logic 435 of FIG. 4 to update the stream ID 530-1 of FIG. 5 for the block ID 515-1 of FIG. 5 will be described with reference to FIG. 24 and FIGS. 25A to 25C below.

圖22根據本發明概念的實施例繪示圖4的LBA映射器410用於將圖5的LBA 510-1映射至圖5的區塊ID 515-1的實例程序的流程圖。在圖22中,在區塊2205處,圖4的LBA映射器410可使用圖5的位址遮罩525遮蔽來自圖1的LBA 510-1的位元,從而留下圖5的區塊ID 515-1。替代地,在區塊2210處,圖4的LBA映射器410可將圖5的LBA 510-1除以圖7的區塊大小 705以判定圖5的區塊ID 515-1。 FIG. 22 illustrates a flowchart of an example program of the LBA mapper 410 of FIG. 4 for mapping the LBA 510-1 of FIG. 5 to the block ID 515-1 of FIG. 5 according to an embodiment of the inventive concept. In FIG. 22, at block 2205, the LBA mapper 410 of FIG. 4 can use the address mask 525 of FIG. 5 to mask the bits from the LBA 510-1 of FIG. 1, thereby leaving the block ID of FIG. 5. 515-1. Alternatively, at block 2210, the LBA mapper 410 of FIG. 4 may divide LBA 510-1 of FIG. 5 by the block size of FIG. 7 705 to determine the block ID 515-1 in FIG. 5.

圖23A至圖23B根據本發明概念的第一實施例繪示用於使用順序性邏輯來判定針對圖5的區塊ID 515-1的圖5的串流ID 530-1的實例程序的流程圖。在圖23A中,在區塊2305處,圖4的串流選擇邏輯415可決定其是否對寫入命令505-1至505-3中的順序LBA進行測試。舉例而言,在使用多佇列方法的本發明概念的實施例中,圖4的串流選擇邏輯415可不考慮圖5的寫入命令505-1是否接續較早寫入命令。若圖4的串流選擇邏輯415未對順序寫入命令進行測試,則在區塊2310處,圖4的串流選擇邏輯415可判定目前與圖5的區塊ID 515-1相關聯的圖5的串流ID 530-1:例如,藉由自圖3的區塊至串流映射器340存取圖5的串流ID 530-1。圖4的串流選擇邏輯415如何判定圖5的串流ID 530-1的特點可取決於圖3的的區塊至串流映射器340如何實施:若區塊至串流映射器340包含圖8的SFR表805,則圖4的串流選擇邏輯415可執行表查找;若區塊至串流映射器340包含圖14的節點1405-1至1405-3,則圖4的串流選擇邏輯415將必須搜尋所述節點,以在判定圖5的串流ID 530-1之前找到圖5的區塊ID 515-1。 FIGS. 23A to 23B illustrate a flowchart of an example program for using sequential logic to determine the stream ID 530-1 of FIG. 5 for the block ID 515-1 of FIG. 5 according to the first embodiment of the inventive concept . In FIG. 23A, at block 2305, the stream selection logic 415 of FIG. 4 may determine whether to test the sequential LBAs in the write commands 505-1 to 505-3. For example, in an embodiment of the inventive concept using a multi-queue method, the stream selection logic 415 of FIG. 4 may not consider whether the write command 505-1 of FIG. 5 is followed by an earlier write command. If the stream selection logic 415 of FIG. 4 does not test the sequential write command, then at block 2310, the stream selection logic 415 of FIG. 4 can determine the diagram currently associated with the block ID 515-1 of FIG. 5 Stream ID 530-1 of 5: For example, access the stream ID 530-1 of FIG. 5 from the block to stream mapper 340 in FIG. 3. How the stream selection logic 415 of FIG. 4 determines the characteristics of the stream ID 530-1 of FIG. 5 may depend on how the block-to-stream mapper 340 of FIG. 3 is implemented: if the block-to-stream mapper 340 includes a graph 8 SFR table 805, the stream selection logic 415 of FIG. 4 can perform a table lookup; if the block-to-stream mapper 340 includes the nodes 1405-1 to 1405-3 of FIG. 14, the stream selection logic of FIG. 4 415 will have to search for the node to find the block ID 515-1 of FIG. 5 before determining the stream ID 530-1 of FIG. 5.

另一方面,若圖4的串流選擇邏輯415對順序寫入命令進行測試,則在區塊2315處,圖4的串流選擇邏輯415可識別圖10的輸入項1020-1至1020-8的圖10的視窗1015。在區塊2320處,圖4的串流選擇邏輯415可判定圖5的LBA 510-1是否接續圖10的視窗1015中的圖10的任何輸入項1020-1至1020-8的圖10的結尾LBA 1030。若圖5的LBA 515-1不接續圖10的視窗1015中的圖10的任何輸入項1020-1至1020-8的圖10的結尾LBA 1030,則如上所述,在區塊2310處,圖4的串流選擇邏輯415可判定目前與圖5的區塊ID 515-1相關聯的圖5的串流ID 530-1。 On the other hand, if the stream selection logic 415 of FIG. 4 tests the sequential write command, at block 2315, the stream selection logic 415 of FIG. 4 can identify the input items 1020-1 to 1020-8 of FIG. The window 1015 of FIG. 10. At block 2320, the stream selection logic 415 of FIG. 4 can determine whether the LBA 510-1 of FIG. 5 is connected to any input item 1020-1 to 1020-8 of FIG. 10 in the window 1015 of FIG. 10 LBA 1030. If the LBA 515-1 of FIG. 5 does not follow any input items 1020-1 to 1020-8 of FIG. 10 in the window 1015 of FIG. 10, the end LBA of FIG. 10 1030, as described above, at block 2310, the stream selection logic 415 of FIG. 4 can determine the stream ID 530-1 of FIG. 5 that is currently associated with the block ID 515-1 of FIG. 5.

若圖4的串流選擇邏輯415對順序寫入命令進行測試且圖5的LBA 510-1接續圖10的視窗1015中的圖10的任何輸入項1020-1至1020-8,則在區塊2325處(圖23B),圖4的串流選擇邏輯415可判定指定至先前寫入命令的圖5的串流ID 530-1。在區塊2125(圖21A至圖21B的部分,且因此在圖23B中以虛線繪示以用於說明性目的)處,可將指定至先前寫入命令的圖5的串流ID 530-1指定至圖5的寫入命令505-1。在區塊2330處,圖4的串流選擇邏輯415可識別圖10的輸入項1020-1至1020-8,其為圖10的視窗1015中的最舊輸入項。最後,在區塊2335處,圖4的串流選擇邏輯415可移除圖10的視窗1015中的最舊輸入項且添加對應於圖5的寫入命令505-1的新輸入項。圖4的串流選擇邏輯415如何執行此刪除及添加的機制取決於用於圖10的視窗1015的結構。若圖10的視窗1015儲存圖10的輸入項1020-1至1020-8的陣列或連結清單,則刪除及添加可差不多涉及用新值覆寫最舊輸入項及更新至陣列或連結清單的頂部的指標。另一方面,將不同結構用於圖10的視窗1015,刪除及添加可涉及針對最舊輸入項刪除及解除配置記憶體目標及針對圖5的寫入命令505-1分配新的記憶體目標。 If the stream selection logic 415 of FIG. 4 tests the sequential write command and the LBA 510-1 of FIG. 5 continues any of the input items 1020-1 to 1020-8 of FIG. 10 in the window 1015 of FIG. 10, then the block At 2325 (FIG. 23B), the stream selection logic 415 of FIG. 4 can determine the stream ID 530-1 of FIG. 5 assigned to the previous write command. At block 2125 (part of FIGS. 21A-21B, and therefore shown in dashed lines in FIG. 23B for illustrative purposes), the stream ID 530-1 of FIG. 5 assigned to the previous write command may be assigned Assign to the write command 505-1 of FIG. 5. At block 2330, the stream selection logic 415 of FIG. 4 can identify the input items 1020-1 to 1020-8 of FIG. 10, which are the oldest input items in the window 1015 of FIG. 10. Finally, at block 2335, the stream selection logic 415 of FIG. 4 may remove the oldest input item in the window 1015 of FIG. 10 and add a new input item corresponding to the write command 505-1 of FIG. 5. The mechanism of how the stream selection logic 415 of FIG. 4 performs this deletion and addition depends on the structure used for the window 1015 of FIG. 10. If the window 1015 of FIG. 10 stores the array or link list of input items 1020-1 to 1020-8 in FIG. 10, deleting and adding can almost involve overwriting the oldest input item with a new value and updating to the top of the array or link list index of. On the other hand, using a different structure for the window 1015 of FIG. 10, deletion and addition may involve deleting and de-allocating the memory object for the oldest entry and allocating a new memory object for the write command 505-1 of FIG. 5.

圖24根據本發明概念的第一實施例繪示用於執行圖8的SFR表805的背景更新的實例程序的流程圖。在圖24中,在區塊2405處,圖9的存取計數調整器905可使圖8的存取計數820-1遞增(例如,使用增量器或ALU)。在區塊2410處,圖9的新近 度邏輯910可計算(例如,使用ALU)圖11的新近度權重1105。 在區塊2415處,圖9的存取計數調整器905可將圖8的存取計數820-1(在區塊2405中遞增)除以(例如,使用ALU)圖11的新近度權重1105。最後,在區塊2420處,圖9的串流ID調整器920可判定與圖5區塊ID 515-1相關聯的新串流ID。舉例而言,圖9的串流ID調整器920可使用ALU來計算圖12的經調整存取計數1205的對數。 FIG. 24 illustrates a flowchart of an example program for performing background update of the SFR table 805 of FIG. 8 according to the first embodiment of the inventive concept. In FIG. 24, at block 2405, the access count adjuster 905 of FIG. 9 may increment the access count 820-1 of FIG. 8 (for example, using an incrementer or ALU). At block 2410, the recent The degree logic 910 can calculate (eg, using ALU) the recency weight 1105 of FIG. 11. At block 2415, the access count adjuster 905 of FIG. 9 may divide the access count 820-1 of FIG. 8 (incremented in block 2405) by (eg, using ALU) the recency weight 1105 of FIG. 11. Finally, at block 2420, the stream ID adjuster 920 of FIG. 9 can determine the new stream ID associated with the block ID 515-1 of FIG. 5. For example, the stream ID adjuster 920 of FIG. 9 may use ALU to calculate the logarithm of the adjusted access count 1205 of FIG. 12.

圖25A至圖25C根據本發明概念的第二實施例繪示用於執行圖14的節點1405-1的背景更新的實例程序的流程圖。在圖25A中,在區塊2505處,圖17的增量器1705可使圖14的存取計數820-1遞增。在區塊2510處,圖17的區塊期滿邏輯1715可判定圖14的區塊ID 515-1的圖14的期滿時間1410。在區塊2515處,圖17的串流ID調整器1710可判定針對圖14的區塊ID 515-1的圖14的串流ID 530-1。圖17的串流ID調整器1710可藉由(例如)自圖14的節點1405-1存取圖14的串流ID 530-1來判定圖14的串流ID 530-1。在區塊2520處,圖15的第二佇列器1510可將圖14的區塊ID 515-1置放於圖15的佇列1520-1至1520-3中對應於圖14的串流ID 530-1的佇列中。 25A to 25C are flowcharts of an example program for performing background update of the node 1405-1 in FIG. 14 according to the second embodiment of the inventive concept. In FIG. 25A, at block 2505, the incrementer 1705 of FIG. 17 may increment the access count 820-1 of FIG. 14. At block 2510, the block expiration logic 1715 of FIG. 17 can determine the expiration time 1410 of FIG. 14 for the block ID 515-1 of FIG. 14. At block 2515, the stream ID adjuster 1710 of FIG. 17 can determine the stream ID 530-1 of FIG. 14 for the block ID 515-1 of FIG. 14. The stream ID adjuster 1710 of FIG. 17 can determine the stream ID 530-1 of FIG. 14 by, for example, accessing the stream ID 530-1 of FIG. 14 from the node 1405-1 of FIG. 14. At block 2520, the second queuer 1510 of FIG. 15 can place the block ID 515-1 of FIG. 14 in the queues 1520-1 to 1520-3 of FIG. 15 corresponding to the stream ID of FIG. 14 530-1 in the queue.

在區塊2525處(圖25B),圖17的最熱區塊邏輯1720可比較圖14的區塊ID 515-1的圖14的存取計數820-1與最熱區塊的存取計數。若圖14的區塊ID 515-1的圖14的存取計數820-1大於最熱區塊的存取計數,則圖14的區塊ID 515-1現在是最熱區塊。因此,在區塊2530處,圖17的最熱區塊邏輯1720可將圖14的區塊ID 515-1識別為新的最熱區塊,且在區塊2535處,圖17 的最熱區塊邏輯1720可判定圖19的裝置壽命1905為圖14的區塊ID 515-1的兩次最近存取之間的時間差。 At block 2525 (FIG. 25B), the hottest block logic 1720 of FIG. 17 can compare the access count 820-1 of FIG. 14 of the block ID 515-1 of FIG. 14 with the access count of the hottest block. If the access count 820-1 of FIG. 14 of the block ID 515-1 of FIG. 14 is greater than the access count of the hottest block, the block ID 515-1 of FIG. 14 is now the hottest block. Therefore, at block 2530, the hottest block logic 1720 of FIG. 17 can identify the block ID 515-1 of FIG. 14 as the new hottest block, and at block 2535, FIG. 17 The hottest block logic 1720 can determine that the device lifetime 1905 of FIG. 19 is the time difference between the two most recent accesses of the block ID 515-1 of FIG. 14.

不管圖14的區塊ID 515-1是否為最熱區塊,在區塊2540處,圖20的比較器2005可在圖14的區塊ID 515-1處於圖15的佇列1520-1至1520-3中的一者的頂部時判定圖14的期滿時間1410是否已過去。若未過去,則圖4的背景邏輯435可等待(同時進行其他操作)且在區塊2540處再次檢查,直至圖14的區塊ID 515-1的圖14的期滿時間1410已過去。屆時,在區塊2545處,圖15的降級邏輯1525可自圖15的佇列1520-1至1520-3移除圖14的區塊ID 515-1。接著,在區塊2550處,圖20的減量器2010可使圖14的串流ID 530-1遞減。 Regardless of whether the block ID 515-1 of FIG. 14 is the hottest block, at block 2540, the comparator 2005 of FIG. 20 can be in the queue of FIG. 15 with the block ID 515-1 of FIG. At the top of one of 1520-3, it is determined whether the expiration time 1410 of FIG. 14 has passed. If it has not passed, the background logic 435 of FIG. 4 may wait (while performing other operations) and check again at the block 2540 until the expiration time 1410 of FIG. 14 of the block ID 515-1 of FIG. 14 has passed. At that time, at block 2545, the degrading logic 1525 of FIG. 15 can remove the block ID 515-1 of FIG. 14 from the queues 1520-1 to 1520-3 of FIG. 15. Next, at block 2550, the decrementer 2010 of FIG. 20 can decrement the stream ID 530-1 of FIG. 14.

在區塊2555處(圖25C),圖15的第二佇列器1510可將圖14的區塊ID 515-1置放於圖15的佇列1520-1至1520-3中對應於新串流ID的另一佇列中。在區塊2560處,圖15的降級邏輯1525可判定圖14的區塊ID 515-1是否為最熱區塊。若是,則在區塊2565處,圖15的降級邏輯1525可選擇另一區塊ID作為新的最熱區塊。舉例而言,可選擇(在區塊2560中的遞減之前)指定至圖14的串流ID 530-1的另一區塊,諸如處於佇列的頂部或尾部的區塊ID。如前所述,圖15的降級邏輯1525亦可基於選定的新最熱區塊來計算圖19的裝置壽命1905。 At block 2555 (FIG. 25C), the second queuer 1510 of FIG. 15 can place the block ID 515-1 of FIG. 14 in the queues 1520-1 to 1520-3 of FIG. 15 corresponding to the new string In another queue of the stream ID. At block 2560, the downgrade logic 1525 of FIG. 15 can determine whether the block ID 515-1 of FIG. 14 is the hottest block. If so, at block 2565, the downgrade logic 1525 of FIG. 15 can select another block ID as the new hottest block. For example, another block assigned to the stream ID 530-1 of FIG. 14 may be selected (before the decrement in block 2560), such as the block ID at the top or end of the queue. As mentioned above, the downgrade logic 1525 of FIG. 15 can also calculate the device lifetime 1905 of FIG. 19 based on the selected new hottest block.

在圖21A至圖25C中,繪示了本發明概念的一些實施例。 然而,熟習此項技術者將認識到,藉由改變區塊的次序、藉由省略區塊或藉由包含圖式中未圖示的連結,本發明概念的其他實施例亦為可能的。流程圖的所有此等變化被認為本發明概念的實施 例,無論是否明確地描述。 In FIGS. 21A to 25C, some embodiments of the inventive concept are illustrated. However, those familiar with the art will recognize that other embodiments of the inventive concept are also possible by changing the order of the blocks, by omitting blocks, or by including links not shown in the drawings. All such changes in the flowchart are considered to be the implementation of the concept of the invention Example, whether or not explicitly described.

以下論述意欲提供對合適機器或可實施本發明概念的某些態樣的機器的簡要的、大體的描述。機器可至少部分地由來自習知輸入裝置(諸如,鍵盤、滑鼠等)的輸入以及由自另一機器(與虛擬現實(virtual reality;VR)環境交互)接收的指引、生物測定回饋或其他輸入信號來控制。如本文中所使用,術語「機器」意欲廣泛地涵蓋單個機器、虛擬機器,或共同操作的通信耦接的機器、虛擬機器或裝置的系統。例示性機器包含計算裝置,諸如個人電腦、工作站、伺服器、攜帶型電腦、手持型裝置、電話、平板電腦等;以及運輸裝置,諸如私人或公共交通,例如汽車、火車、出租車等。 The following discussion is intended to provide a brief, general description of suitable machines or certain aspects of machines that can implement the inventive concept. The machine can be at least partially driven by input from conventional input devices (such as keyboards, mice, etc.), as well as guidance, biometric feedback, or other input received from another machine (interacting with a virtual reality (VR) environment) Signal to control. As used herein, the term "machine" is intended to broadly cover a single machine, a virtual machine, or a system of co-operating and communicatively coupled machines, virtual machines, or devices. Exemplary machines include computing devices, such as personal computers, workstations, servers, portable computers, handheld devices, phones, tablets, etc.; and transportation devices, such as private or public transportation, such as cars, trains, taxis, etc.

機器可包含嵌入式控制器,諸如可程式化或非可程式化邏輯裝置或陣列、特殊應用積體電路(Application Specific Integrated Circuit;ASIC)、嵌入式電腦、智慧卡及其類似物。機器可利用至一或多個遠端機器的一或多個連接,諸如經由網路介面、數據機或其他通信耦接。機器可藉助於實體及/或邏輯網路(諸如,企業內部網路、網際網路、局域網路、廣域網路等)而互連。 熟習此項技術者將瞭解,網路通信可利用各種有線及/或無線的短程或長程載體及協定,包含射頻(radio frequency;RF)、衛星、微波、電機電子工程師學會(Institute of Electrical and Electronics Engineers;IEEE)802.11、Bluetooth®、光學、紅外線、纜線、雷射等。 The machine may include embedded controllers, such as programmable or non-programmable logic devices or arrays, application specific integrated circuits (ASICs), embedded computers, smart cards, and the like. The machine can utilize one or more connections to one or more remote machines, such as via a network interface, modem, or other communication coupling. Machines can be interconnected by means of physical and/or logical networks (such as corporate intranet, Internet, local area network, wide area network, etc.). Those familiar with this technology will understand that network communications can utilize various wired and/or wireless short-range or long-range carriers and protocols, including radio frequency (RF), satellite, microwave, and Institute of Electrical and Electronics Engineers (Institute of Electrical and Electronics). Engineers; IEEE) 802.11, Bluetooth®, optics, infrared, cables, lasers, etc.

本發明概念的實施例可藉由參考或結合相關聯資料來描述,所述資料包含功能、程序、資料結構、應用程式等,其在由 機器存取時使得機器執行任務或定義抽象的資料類型或低級硬體上下文。相關聯資料可儲存於(例如)揮發性及/或非揮發性記憶體(例如,RAM、ROM等)中,或儲存於其他儲存裝置及其相關聯儲存媒體中,包含硬碟機、軟碟、光學儲存器、磁帶、快閃記憶體、記憶棒、數位視訊磁碟、生物儲存器等。相關聯資料可以封包、串列資料、並列資料、經傳播信號等的形式經由傳輸環境(包含實體及/或邏輯網路)傳遞,且可以壓縮或加密格式使用。相關聯資料可用於分散式環境中,且儲存在本端及/或遠端以用於機器存取。 The embodiments of the concept of the present invention can be described by reference or in combination with related data, which includes functions, procedures, data structures, applications, etc. When the machine is accessed, the machine performs tasks or defines abstract data types or low-level hardware contexts. Related data can be stored in (for example) volatile and/or non-volatile memory (for example, RAM, ROM, etc.), or stored in other storage devices and their associated storage media, including hard drives, floppy disks , Optical storage, magnetic tape, flash memory, memory stick, digital video disk, biological storage, etc. The associated data can be transmitted through the transmission environment (including physical and/or logical networks) in the form of packets, serial data, parallel data, propagated signals, etc., and can be used in compressed or encrypted formats. The associated data can be used in a distributed environment and stored locally and/or remotely for machine access.

本發明概念的實施例可包含有形的非暫時性機器可讀媒體,其包括可由一或多個處理器執行的指令,所述指令包括用以執行如本文中所描述的本發明概念的要素的指令。 Embodiments of the inventive concept may include a tangible non-transitory machine-readable medium that includes instructions executable by one or more processors, the instructions including instructions for executing elements of the inventive concept as described herein instruction.

已參考所說明實施例描述及說明了本發明概念的原理,將認識到,所說明實施例可修改配置及細節而不會脫離此等原理,且可以任何所要方式組合。且儘管前述論述集中於特定實施例,但涵蓋其他組態。特定而言,儘管本文中使用了諸如「根據本發明概念的實施例」或其類似者的表達,但此等片語意謂通常參考實施例可能性,且並不意欲將本發明概念限於特定實施例組態。如本文中所使用,此等術語可參考組合至其他實施例中的相同或不同實施例。 Having described and illustrated the principles of the inventive concept with reference to the illustrated embodiments, it will be appreciated that the illustrated embodiments can be modified in configuration and details without departing from these principles, and can be combined in any desired manner. And although the foregoing discussion focuses on specific embodiments, other configurations are covered. In particular, although expressions such as "an embodiment according to the concept of the present invention" or the like are used herein, these phrases mean generally referring to the embodiment possibilities, and are not intended to limit the concept of the present invention to specific implementations Example configuration. As used herein, these terms may refer to the same or different embodiments combined into other embodiments.

前述說明性實施例不應被解釋為限制其發明概念。儘管已描述了幾個實施例,但熟習此項技術者將易於瞭解,在不實質上脫離本揭露內容的新穎教示及優點的情況下,對該等實施例的許多修改是可能的。因此,所有此等修改意欲包含於如在申請專 利範圍中所界定的本發明概念的範疇內。 The foregoing illustrative embodiments should not be construed as limiting the inventive concept thereof. Although several embodiments have been described, those skilled in the art will easily understand that many modifications to these embodiments are possible without materially departing from the novel teachings and advantages of the present disclosure. Therefore, all such modifications are intended to be included in the Within the scope of the inventive concept defined in the scope of interest.

本發明概念的實施例可非限制性地延伸以下敍述: The embodiments of the concept of the present invention can extend the following description without limitation:

敍述1.本發明概念的實施例包含一種固態硬碟(SSD),其包括:用以儲存資料的快閃記憶體;所述SSD中對多個裝置串流的支援;SSD控制器,用以管理回應於多個寫入命令將資料寫入至所述快閃記憶體,所述SSD控制器包含用於提交佇列及區塊至串流映射器的儲存器;以及快閃轉譯層,其包含:接收器,用以接收包含邏輯區塊位址(LBA)的寫入命令;LBA映射器,用以將所述LBA映射至區塊識別符(ID);串流選擇邏輯,用以使用所述區塊至串流映射器基於所述區塊ID來選擇串流ID;串流ID新增器,用以將所述串流ID添加至所述寫入命令;佇列器,用以將所述區塊ID置放於所述提交佇列中;以及背景邏輯,用以自所述提交佇列移除所述區塊ID及更新所述區塊至串流映射器。 Description 1. Embodiments of the concept of the present invention include a solid state drive (SSD), which includes: flash memory for storing data; support for streaming of multiple devices in the SSD; and an SSD controller for The management responds to a plurality of write commands to write data to the flash memory, the SSD controller includes a storage for submitting queues and blocks to the stream mapper; and a flash translation layer, which Contains: a receiver to receive a write command including a logical block address (LBA); an LBA mapper to map the LBA to a block identifier (ID); stream selection logic to use The block-to-stream mapper selects a stream ID based on the block ID; a stream ID adder for adding the stream ID to the write command; a queuer for Placing the block ID in the submission queue; and background logic for removing the block ID from the submission queue and updating the block to the stream mapper.

敍述2.本發明概念的實施例包含根據敍述1的SSD,更包括用以將具有所述串流ID的所述寫入命令傳輸至所述SSD的傳輸器。 Narration 2. An embodiment of the inventive concept includes the SSD according to Narration 1, and further includes a transmitter for transmitting the write command with the stream ID to the SSD.

敍述3.本發明概念的實施例包含根據敍述1的SSD,其中所述LBA映射器包含用以遮蔽所述LBA的部分以判定所述區塊ID的位址遮罩。 Statement 3. An embodiment of the inventive concept includes the SSD according to Statement 1, wherein the LBA mapper includes an address mask for masking a portion of the LBA to determine the block ID.

敍述4.本發明概念的實施例包含根據敍述1的SSD,其中所述LBA映射器包含用以將所述LBA除以區塊大小以識別所述區塊ID的算術邏輯單元(ALU)。 Statement 4. An embodiment of the inventive concept includes the SSD according to Statement 1, wherein the LBA mapper includes an arithmetic logic unit (ALU) to divide the LBA by a block size to identify the block ID.

敍述5.本發明概念的實施例包含根據敍述1的SSD,其中所述區塊至串流映射器包含順序、頻率、新近度(SFR)表,所述SFR表包含所述區塊ID及針對所述區塊ID的所述串流ID。 Statement 5. An embodiment of the inventive concept includes the SSD according to Statement 1, wherein the block-to-stream mapper includes a sequence, frequency, recency (SFR) table, and the SFR table includes the block ID and target The stream ID of the block ID.

敍述6.本發明概念的實施例包含根據敍述5的SSD,其中所述背景邏輯包含用以在所述LBA接續先前寫入命令的第二LBA的情況下選擇先前串流的順序性邏輯。 Statement 6. An embodiment of the inventive concept includes the SSD according to Statement 5, wherein the background logic includes sequential logic to select a previous stream if the LBA is followed by a second LBA of a previous write command.

敍述7.本發明概念的實施例包含根據敍述6的SSD,其中所述先前寫入命令處於先於所述寫入命令的視窗中,所述視窗包含視窗大小。 Statement 7. An embodiment of the inventive concept includes the SSD according to Statement 6, wherein the previous write command is in a window prior to the write command, and the window includes a window size.

敍述8.本發明概念的實施例包含根據敍述7的SSD,其中所述視窗大小是回應於以下各者中的至少一者而判定:主機電腦系統中的處理器中的核心的數目,及在所述主機電腦系統中的所述處理器上執行的軟體源的數目。 Statement 8. An embodiment of the inventive concept includes the SSD according to Statement 7, wherein the window size is determined in response to at least one of the following: the number of cores in the processor in the host computer system, and The number of software sources running on the processor in the host computer system.

敍述9.本發明概念的實施例包含根據敍述7的SSD,其中所述SSD控制器更包含用於包含所述先前寫入命令的先前寫入命令佇列的儲存器,所述佇列包含所述先前寫入命令中的每一者的結尾LBA及對應串流ID。 Statement 9. An embodiment of the inventive concept includes the SSD according to Statement 7, wherein the SSD controller further includes a storage for a previous write command queue including the previous write command, the queue including all The last LBA and corresponding stream ID of each of the previous write commands are described.

敍述10.本發明概念的實施例包含根據敍述5的SSD,其中所述背景邏輯包含:新近度邏輯,用以基於針對所述區塊ID的當前存取時間、針對所述區塊ID的先前存取時間以及衰減週期來計算新近度權重; 存取計數調整器,用以基於所述新近度權重來調整所述區塊ID的存取計數,從而產生經調整存取計數;以及串流ID調整器,用以基於針對所述區塊ID的所述經調整存取計數來調整所述串流ID。 Statement 10. An embodiment of the inventive concept includes the SSD according to Statement 5, wherein the background logic includes: recency logic to be based on the current access time for the block ID and the previous for the block ID Access time and decay period to calculate recency weight; An access count adjuster for adjusting the access count of the block ID based on the recency weight to generate an adjusted access count; and a stream ID adjuster for adjusting the access count for the block ID based on The adjusted access count of to adjust the stream ID.

敍述11.本發明概念的實施例包含根據敍述10的SSD,其中所述SFR表更包含所述區塊ID的所述當前存取時間、所述區塊ID的所述先前存取時間以及所述區塊ID的所述存取計數。 Statement 11. The embodiment of the inventive concept includes the SSD according to Statement 10, wherein the SFR table further includes the current access time of the block ID, the previous access time of the block ID, and all The access count of the block ID.

敍述12.本發明概念的實施例包含根據敍述10的SSD,其中所述新近度邏輯將所述新近度權重計算為二的(所述區塊ID的所述當前存取時間與所述區塊ID的所述先前存取時間之間的差除以所述衰減週期)次冪。 Statement 12. An embodiment of the inventive concept includes the SSD according to Statement 10, wherein the recency logic calculates the recency weight as two (the current access time of the block ID and the block The difference between the previous access times of IDs is divided by the power of the decay period).

敍述13.本發明概念的實施例包含根據敍述10的SSD,其中所述存取計數調整器將針對所述區塊ID的所述經調整存取計數計算為(所述區塊ID的所述存取計數加一)除以所述新近度權重。 Statement 13. An embodiment of the inventive concept includes the SSD according to Statement 10, wherein the access count adjuster calculates the adjusted access count for the block ID as (the block ID The access count plus one) is divided by the recency weight.

敍述14.本發明概念的實施例包含根據敍述10的SSD,其中所述串流ID調整器將所述串流ID計算為針對所述區塊ID的所述經調整存取計數的對數。 Statement 14. An embodiment of the inventive concept includes the SSD according to Statement 10, wherein the stream ID adjuster calculates the stream ID as the logarithm of the adjusted access count for the block ID.

敍述15.本發明概念的實施例包含根據敍述1的SSD,其中所述區塊至串流映射器包含節點輸入項(node entry),所述節點輸入項包含所述區塊ID及針對所述區塊ID的所述串流ID。 Statement 15. An embodiment of the inventive concept includes the SSD according to Statement 1, wherein the block-to-stream mapper includes a node entry, and the node entry includes the block ID and addresses the The stream ID of the block ID.

敍述16.本發明概念的實施例包含根據敍述15的SSD,其中所述背景邏輯包含:提昇邏輯,用以基於所述區塊ID來判定何時提昇所述串流ID; 第二佇列器,用以回應於針對所述區塊ID的所述串流ID,將所述區塊ID置放於對應於多個串流ID的多個佇列中的第一佇列中;以及降級邏輯,用以基於所述區塊ID來判定何時將所述串流ID降級。 Narration 16. An embodiment of the inventive concept includes the SSD according to Narration 15, wherein the background logic includes: promotion logic for determining when to promote the stream ID based on the block ID; The second queuer is used to respond to the stream ID for the block ID and place the block ID in the first queue of the plurality of queues corresponding to the plurality of stream IDs Medium; and a downgrade logic to determine when to downgrade the stream ID based on the block ID.

敍述17.本發明概念的實施例包含根據敍述16的SSD,其中所述提昇邏輯包含:增量器,用以使所述區塊ID的存取計數遞增;以及串流ID調整器,用以回應於所述區塊ID的所述存取計數來判定所述串流ID。 Statement 17. An embodiment of the inventive concept includes the SSD according to Statement 16, wherein the boost logic includes: an incrementer to increment the access count of the block ID; and a stream ID adjuster The stream ID is determined in response to the access count of the block ID.

敍述18.本發明概念的實施例包含根據敍述17的SSD,其中所述串流ID調整器是操作性的以將所述串流ID判定為所述區塊ID的所述存取計數的對數。 Narration 18. An embodiment of the inventive concept includes the SSD according to Narration 17, wherein the stream ID adjuster is operative to determine the stream ID as the logarithm of the access count of the block ID .

敍述19.本發明概念的實施例包含根據敍述17的SSD,其中所述提昇邏輯更包含用以計算所述區塊ID的期滿時間的區塊期滿邏輯。 Statement 19. An embodiment of the inventive concept includes the SSD according to Statement 17, wherein the promotion logic further includes block expiration logic for calculating the expiration time of the block ID.

敍述20.本發明概念的實施例包含根據敍述19的SSD,其中所述區塊期滿邏輯是操作性的以將所述區塊ID的所述期滿時間計算為所述區塊ID的所述存取計數與裝置壽命的總和。 Statement 20. An embodiment of the inventive concept includes the SSD according to Statement 19, wherein the block expiration logic is operative to calculate the expiration time of the block ID as all of the block ID The sum of the access count and the life of the device.

敍述21.本發明概念的實施例包含根據敍述20的SSD,其中所述裝置壽命為最熱區塊的最後存取時間與所述最熱區塊的先前存取時間之間的差。 Statement 21. An embodiment of the inventive concept includes the SSD according to Statement 20, wherein the device lifetime is the difference between the last access time of the hottest block and the previous access time of the hottest block.

敍述22.本發明概念的實施例包含根據敍述21的SSD,其中所述提昇邏輯更包含最熱區塊邏輯,其用以在所述區塊ID的所述 存取計數大於所述最熱區塊的所述最後存取計數的情況下,將所述區塊ID識別為所述最熱區塊。 Statement 22. The embodiment of the inventive concept includes the SSD according to Statement 21, wherein the promotion logic further includes the hottest block logic, which is used in the block ID If the access count is greater than the last access count of the hottest block, the block ID is identified as the hottest block.

敍述23.本發明概念的實施例包含根據敍述21的SSD,其中所述節點輸入項更包含所述區塊ID的所述存取計數及所述區塊ID的所述期滿時間。 Statement 23. An embodiment of the inventive concept includes the SSD according to Statement 21, wherein the node entry further includes the access count of the block ID and the expiration time of the block ID.

敍述24.本發明概念的實施例包含根據敍述16的SSD,其中:所述降級邏輯包含:比較器,用以判定所述區塊ID的期滿時間是否已過去;以及在所述區塊ID的所述期滿時間已過去的情況下,用以使所述串流ID遞減的減量器;且所述第二佇列器是操作性的以回應於所述區塊ID的所述已遞減串流ID,將所述區塊ID置放於對應於所述多個串流ID的所述多個佇列中的第二佇列中。 Statement 24. An embodiment of the inventive concept includes the SSD according to Statement 16, wherein: the degradation logic includes: a comparator to determine whether the expiration time of the block ID has passed; and the block ID A decrementer used to decrement the stream ID when the expiration time of the elapsed time; and the second queuer is operative to respond to the decrement of the block ID Stream ID, placing the block ID in the second queue of the plurality of queues corresponding to the plurality of stream IDs.

敍述25.本發明概念的實施例包含根據敍述24的SSD,其中所述降級邏輯是操作性的,以基於當所述區塊ID處於所述多個佇列中的所述第一佇列的頂部時的所述區塊ID來判定何時將所述串流ID降級。 Statement 25. Embodiments of the inventive concept include the SSD according to Statement 24, wherein the downgrade logic is operative to be based on when the block ID is in the first queue of the plurality of queues The block ID at the top is used to determine when to downgrade the stream ID.

敍述26.本發明概念的實施例包含根據敍述24的SSD,其中所述降級邏輯是操作性的,以基於在所述區塊ID處於所述多個佇列中的所述第一佇列的頂部的情況下的所述區塊ID來判定何時將所述串流ID降級。 Statement 26. An embodiment of the inventive concept includes the SSD according to Statement 24, wherein the downgrading logic is operative to be based on the first queue of the plurality of queues where the block ID is The block ID in the top case is used to determine when to downgrade the stream ID.

敍述27.本發明概念的實施例包含一種供在電腦系統中使用的驅動器,其包括:接收器,用以接收針對固態硬碟(SSD)的寫入命令,所述 寫入命令包含邏輯區塊位址(LBA);LBA映射器,用以將所述LBA映射至區塊識別符(ID);串流選擇邏輯,用以使用儲存於主機電腦系統中的記憶體中的區塊至串流映射器,基於所述區塊ID來選擇串流ID;串流ID新增器,用以將所述串流ID添加至所述寫入命令;佇列器,用以將所述區塊ID置放於儲存於所述記憶體中的提交佇列中;以及背景邏輯,用以自所述提交佇列移除所述區塊ID及更新所述區塊至串流映射器。 Description 27. Embodiments of the inventive concept include a drive for use in a computer system, which includes: a receiver for receiving a write command for a solid state drive (SSD), the The write command includes a logical block address (LBA); an LBA mapper to map the LBA to a block identifier (ID); stream selection logic to use the memory stored in the host computer system The block-to-stream mapper in, selects the stream ID based on the block ID; the stream ID adder, which adds the stream ID to the write command; the queuer, uses To place the block ID in the commit queue stored in the memory; and background logic to remove the block ID from the commit queue and update the block to the string Stream mapper.

敍述28.本發明概念的實施例包含根據敍述27的驅動器,更包括用以將具有所述串流ID的所述寫入命令傳輸至所述SSD的傳輸器。 Narration 28. An embodiment of the inventive concept includes the drive according to Narration 27, and further includes a transmitter for transmitting the write command with the stream ID to the SSD.

敍述29.本發明概念的實施例包含根據敍述27的驅動器,其中所述LBA映射器包含用以遮蔽所述LBA的部分以識別所述區塊ID的位址遮罩。 Statement 29. An embodiment of the inventive concept includes the driver according to Statement 27, wherein the LBA mapper includes an address mask for masking a portion of the LBA to identify the block ID.

敍述30.本發明概念的實施例包含根據敍述27的驅動器,其中所述LBA映射器包含用以將所述LBA除以區塊大小以識別所述區塊ID的算術邏輯單元(ALU)。 Statement 30. An embodiment of the inventive concept includes the driver according to Statement 27, wherein the LBA mapper includes an arithmetic logic unit (ALU) to divide the LBA by a block size to identify the block ID.

敍述31.本發明概念的實施例包含根據敍述27的驅動器,其中所述區塊至串流映射器包含順序、頻率、新近度(SFR)表,所述SFR表包含所述區塊ID及針對所述區塊ID的所述串流ID。 Statement 31. An embodiment of the inventive concept includes a driver according to Statement 27, wherein the block-to-stream mapper includes a sequence, frequency, recency (SFR) table, and the SFR table includes the block ID and target The stream ID of the block ID.

敍述32.本發明概念的實施例包含根據敍述31的驅動器,其中所述背景邏輯包含用以在所述LBA接續先前寫入命令的第二LBA的情況下選擇先前串流的順序性邏輯。 Narration 32. An embodiment of the inventive concept includes the drive according to Narration 31, wherein the background logic includes sequential logic to select a previous stream if the LBA is followed by a second LBA of a previous write command.

敍述33.本發明概念的實施例包含根據敍述32的驅動器,其中所述先前寫入命令處於先於所述寫入命令的視窗中,所述視窗包含視窗大小。 Statement 33. An embodiment of the inventive concept includes the drive according to Statement 32, wherein the previous write command is in a window prior to the write command, the window including the window size.

敍述34.本發明概念的實施例包含根據敍述33的驅動器,其中所述視窗大小是回應於以下各者中的至少一者而判定:主機電腦系統中的處理器中的核心的數目,及在所述主機電腦系統中的所述處理器上執行的軟體源的數目。 Statement 34. An embodiment of the inventive concept includes a driver according to Statement 33, wherein the window size is determined in response to at least one of the following: the number of cores in the processor in the host computer system, and The number of software sources running on the processor in the host computer system.

敍述35.本發明概念的實施例包含根據敍述31的驅動器,其中所述背景邏輯包含:新近度邏輯,用以基於針對所述區塊ID的當前存取時間、針對所述區塊ID的先前存取時間以及衰減週期來計算新近度權重;存取計數調整器,用以基於所述新近度權重來調整所述區塊ID的存取計數,從而產生經調整存取計數;以及串流ID調整器,用以基於針對所述區塊ID的所述經調整存取計數來調整所述串流ID。 Narrative 35. An embodiment of the inventive concept includes the driver according to Narrative 31, wherein the background logic includes: recency logic to be based on the current access time for the block ID, the previous for the block ID The access time and the decay period are used to calculate the recency weight; the access count adjuster is used to adjust the access count of the block ID based on the recency weight to generate the adjusted access count; and the stream ID An adjuster to adjust the stream ID based on the adjusted access count for the block ID.

敍述36.本發明概念的實施例包含根據敍述35的驅動器,其中所述SFR表更包含所述區塊ID的所述當前存取時間、所述區塊ID的所述先前存取時間以及所述區塊ID的所述存取計數。 Narration 36. An embodiment of the inventive concept includes the drive according to Narration 35, wherein the SFR table further includes the current access time of the block ID, the previous access time of the block ID, and all The access count of the block ID.

敍述37.本發明概念的實施例包含根據敍述35的驅動器,其中所述新近度邏輯將所述新近度權重計算為二的(所述區塊ID的所述當前存取時間與所述區塊ID的所述先前存取時間之間的差除以所述衰減週期)次冪。 Narrative 37. An embodiment of the inventive concept includes the driver according to Narrative 35, wherein the recency logic calculates the recency weight as two (the current access time of the block ID and the block The difference between the previous access times of IDs is divided by the power of the decay period).

敍述38.本發明概念的實施例包含根據敍述35的驅動器,其中所述存取計數調整器將針對所述區塊ID的所述經調整存取計數 計算為(所述區塊ID的所述存取計數加一)除以所述新近度權重。 Narration 38. An embodiment of the inventive concept includes a driver according to Narration 35, wherein the access count adjuster adjusts the adjusted access count for the block ID It is calculated as (the access count of the block ID plus one) divided by the recency weight.

敍述39.本發明概念的實施例包含根據敍述35的驅動器,其中所述串流ID調整器將所述串流ID計算為針對所述區塊ID的所述經調整存取計數的對數。 Narration 39. An embodiment of the inventive concept includes the driver according to Narration 35, wherein the stream ID adjuster calculates the stream ID as the logarithm of the adjusted access count for the block ID.

敍述40.本發明概念的實施例包含根據敍述27的驅動器,其中所述區塊至串流映射器包含節點輸入項,所述節點輸入項包含所述區塊ID及針對所述區塊ID的所述串流ID。 Narrative 40. An embodiment of the inventive concept includes a driver according to Narrative 27, wherein the block-to-stream mapper includes a node entry, and the node entry includes the block ID and a reference to the block ID The stream ID.

敍述41.本發明概念的實施例包含根據敍述40的驅動器,其中所述背景邏輯包含:提昇邏輯,用以基於所述區塊ID來判定何時提昇所述串流ID;第二佇列器,用以回應於針對所述區塊ID的所述串流ID,將所述區塊ID置放於對應於多個串流ID的多個佇列中的第一佇列中;以及降級邏輯,用以基於所述區塊ID來判定何時將所述串流ID降級。 Narrative 41. An embodiment of the inventive concept includes a driver according to Narrative 40, wherein the background logic includes: promotion logic for determining when to promote the stream ID based on the block ID; a second queuer, In response to the stream ID for the block ID, placing the block ID in the first queue of the plurality of queues corresponding to the plurality of stream IDs; and the downgrade logic, It is used to determine when to downgrade the stream ID based on the block ID.

敍述42.本發明概念的實施例包含根據敍述41的驅動器,其中所述提昇邏輯包含:增量器,用以使所述區塊ID的存取計數遞增;以及串流ID調整器,用以回應於所述區塊ID的存取計數來判定所述串流ID。 Statement 42. An embodiment of the inventive concept includes the driver according to Statement 41, wherein the boost logic includes: an incrementer to increment the access count of the block ID; and a stream ID adjuster to The stream ID is determined in response to the access count of the block ID.

敍述43.本發明概念的實施例包含根據敍述42的驅動器,其中所述串流ID調整器是操作性的以將所述串流ID判定為所述區塊ID的所述存取計數的對數。 Narration 43. An embodiment of the inventive concept includes the driver according to Narration 42, wherein the stream ID adjuster is operative to determine the stream ID as the logarithm of the access count of the block ID .

敍述44.本發明概念的實施例包含根據敍述42的驅動器,其中所述提昇邏輯更包含用以計算所述區塊ID的期滿時間的區塊期滿邏輯。 Statement 44. An embodiment of the inventive concept includes the driver according to Statement 42, wherein the promotion logic further includes block expiration logic for calculating the expiration time of the block ID.

敍述45.本發明概念的實施例包含根據敍述44的驅動器,其中所述區塊期滿邏輯是操作性的以將所述區塊ID的所述期滿時間計算為所述區塊ID的所述存取計數與裝置壽命的總和。 Narrative 45. An embodiment of the inventive concept includes a driver according to Narrative 44, wherein the block expiration logic is operative to calculate the expiration time of the block ID as all of the block ID The sum of the access count and the life of the device.

敍述46.本發明概念的實施例包含根據敍述45的驅動器,其中所述裝置壽命為最熱區塊的最後存取時間與所述最熱區塊的先前存取時間之間的差。 Statement 46. An embodiment of the inventive concept includes the drive according to Statement 45, wherein the device lifetime is the difference between the last access time of the hottest block and the previous access time of the hottest block.

敍述47.本發明概念的實施例包含根據敍述46的驅動器,其中所述提昇邏輯更包含最熱區塊邏輯,其用以在所述區塊ID的所述存取計數大於所述最熱區塊的所述最後存取計數的情況下,將所述區塊ID識別為所述最熱區塊。 Narrative 47. An embodiment of the inventive concept includes the driver according to Narrative 46, wherein the promotion logic further includes the hottest block logic, which is used when the access count of the block ID is greater than the hottest zone In the case of the last access count of the block, the block ID is identified as the hottest block.

敍述48.本發明概念的實施例包含根據敍述46的驅動器,其中所述節點輸入項更包含所述區塊ID的所述存取計數及所述區塊ID的所述期滿時間。 Statement 48. An embodiment of the inventive concept includes the driver according to Statement 46, wherein the node entry further includes the access count of the block ID and the expiration time of the block ID.

敍述49.本發明概念的實施例包含根據敍述41的驅動器,其中:所述降級邏輯包含:比較器,用以判定所述區塊ID的期滿時間是否已過去;以及在所述區塊ID的所述期滿時間已過去的情況下,用以使所述串流ID遞減的減量器;且所述第二佇列器是操作性的以回應於所述區塊ID的所述已遞減串流ID,將所述區塊ID置放於對應於所述多個串流ID的所 述多個佇列中的第二佇列中。 Narration 49. An embodiment of the inventive concept includes the driver according to Narration 41, wherein: the downgrade logic includes: a comparator for determining whether the expiration time of the block ID has passed; and the block ID A decrementer used to decrement the stream ID when the expiration time of the elapsed time; and the second queuer is operative to respond to the decrement of the block ID Stream ID, and place the block ID in all corresponding to the multiple stream IDs In the second queue of the multiple queues.

敍述50.本發明概念的實施例包含根據敍述49的驅動器,其中所述降級邏輯是操作性的,以基於當所述區塊ID處於所述多個佇列中的所述第一佇列的頂部時的所述區塊ID來判定何時將所述串流ID降級。 Narration 50. An embodiment of the inventive concept includes the driver according to Narration 49, wherein the downgrading logic is operative to be based on when the block ID is in the first queue of the plurality of queues The block ID at the top is used to determine when to downgrade the stream ID.

敍述51.本發明概念的實施例包含根據敍述49的驅動器,其中所述降級邏輯是操作性的,以基於在所述區塊ID處於所述多個佇列中的所述第一佇列的頂部的情況下的所述區塊ID來判定何時將所述串流ID降級。 Statement 51. An embodiment of the inventive concept includes the driver according to Statement 49, wherein the downgrading logic is operative to be based on the first queue in the plurality of queues where the block ID is The block ID in the top case is used to determine when to downgrade the stream ID.

敍述52.本發明概念的實施例包含一種方法,其包括:自軟體源接收寫入命令;判定所述寫入命令中的邏輯區塊位址(LBA);識別固態硬碟(SSD)上包含所述LBA的區塊的區塊識別符(ID);存取與所述區塊ID相關聯的串流ID;將所述串流ID指定至所述寫入命令;在所述SSD上處理使用所述指定串流ID的所述寫入命令;以及執行與所述區塊ID相關聯的所述串流ID的背景更新。 Description 52. An embodiment of the concept of the present invention includes a method including: receiving a write command from a software source; determining the logical block address (LBA) in the write command; identifying that a solid state drive (SSD) contains The block identifier (ID) of the block of the LBA; access the stream ID associated with the block ID; assign the stream ID to the write command; process on the SSD Use the write command of the specified stream ID; and perform background update of the stream ID associated with the block ID.

敍述53.本發明概念的實施例包含根據敍述52的方法,其中所述方法實施於主機電腦系統上的檔案系統層、區塊層或裝置驅動器層中的一者中。 Statement 53. Embodiments of the inventive concept include the method according to Statement 52, wherein the method is implemented in one of a file system layer, a block layer, or a device driver layer on the host computer system.

敍述54.本發明概念的實施例包含根據敍述52的方法,其中所述方法實施於所述SSD的快閃轉譯層中。 Narrative 54. Embodiments of the inventive concept include the method according to Narrative 52, wherein the method is implemented in the flash translation layer of the SSD.

敍述55.本發明概念的實施例包含根據敍述52的方法,其中識別固態硬碟(SSD)上包含所述LBA的區塊的區塊識別符(ID)包含對所述LBA使用位址遮罩以識別所述區塊ID。 Statement 55. An embodiment of the inventive concept includes a method according to Statement 52, wherein a block identifier (ID) that identifies a block on a solid state drive (SSD) that contains the LBA includes using an address mask for the LBA To identify the block ID.

敍述56.本發明概念的實施例包含根據敍述52的方法,其中識別固態硬碟(SSD)上包含所述LBA的區塊的區塊識別符(ID)包含將所述LBA除以所述區塊中的磁區的數目。 Statement 56. An embodiment of the inventive concept includes the method according to Statement 52, wherein the block identifier (ID) that identifies the block on a solid state drive (SSD) that contains the LBA includes dividing the LBA by the zone The number of sectors in the block.

敍述57.本發明概念的實施例包含根據敍述52的方法,其中將所述串流ID指定至所述寫入命令包含將所述串流ID添加至所述寫入命令以作為標籤。 Narration 57. An embodiment of the inventive concept includes the method according to Narration 52, wherein assigning the stream ID to the write command includes adding the stream ID to the write command as a tag.

敍述58.本發明概念的實施例包含根據敍述52的方法,更包括:判定所述邏輯區塊位址是否接續第二寫入命令中的第二LBA;以及在所述邏輯區塊位址接續所述第二寫入命令中的所述第二LBA的情況下:判定指定至所述第二寫入命令的第二串流ID;以及將所述第二串流ID指定至所述寫入命令。 Narration 58. The embodiment of the inventive concept includes the method according to Narration 52, further comprising: determining whether the logical block address is connected to the second LBA in the second write command; and connecting to the logical block address In the case of the second LBA in the second write command: determine the second stream ID assigned to the second write command; and assign the second stream ID to the write command.

敍述59.本發明概念的實施例包含根據敍述58的方法,其中所述第二寫入命令處於先於所述寫入命令的視窗中。 Narration 59. An embodiment of the inventive concept includes the method according to Narration 58, wherein the second write command is in a window prior to the write command.

敍述60.本發明概念的實施例包含根據敍述59的方法,更包括識別所述視窗。 Narration 60. Embodiments of the inventive concept include the method according to Narration 59, and further include identifying the window.

敍述61.本發明概念的實施例包含根據敍述60的方法,其中識別所述視窗包含回應於以下各者中的至少一者來識別視窗大小:包含所述SSD的主機電腦系統中的處理器中的核心的數目, 及在包含所述SSD的所述主機電腦系統中的所述處理器上執行的軟體源的數目。 Statement 61. An embodiment of the inventive concept includes the method according to Statement 60, wherein identifying the window includes identifying the window size in response to at least one of the following: in a processor in a host computer system that includes the SSD The number of cores, And the number of software sources executed on the processor in the host computer system including the SSD.

敍述62.本發明概念的實施例包含根據敍述59的方法,更包括:識別所述視窗中的最舊寫入命令;以及用所述寫入命令替換所述視窗中的所述最舊寫入命令。 Narration 62. The embodiment of the inventive concept includes the method according to Narration 59, further comprising: identifying the oldest write command in the window; and replacing the oldest write command in the window with the write command command.

敍述63.本發明概念的實施例包含根據敍述52的方法,其中執行與所述區塊ID相關聯的所述串流ID的背景更新包含:將所述區塊ID添加至提交佇列;以及在所述區塊ID處於所述提交佇列的頂部時,自所述提交佇列移除所述區塊ID。 Narration 63. An embodiment of the inventive concept includes the method according to Narration 52, wherein performing a background update of the stream ID associated with the block ID includes: adding the block ID to a submission queue; and When the block ID is at the top of the submission queue, the block ID is removed from the submission queue.

敍述64.本發明概念的實施例包含根據敍述52的方法,其中執行與所述區塊ID相關聯的所述串流ID的背景更新包含:增大所述區塊ID的存取計數;回應於所述區塊ID的當前存取時間及先前存取時間來計算所述區塊ID的新近度權重;回應於所述新近度權重來更新所述區塊ID的所述存取計數;以及回應於所述經更新的存取計數來判定針對所述區塊ID的所述串流ID。 Statement 64. An embodiment of the inventive concept includes the method according to Statement 52, wherein performing a background update of the stream ID associated with the block ID includes: increasing the access count of the block ID; responding Calculating the recency weight of the block ID based on the current access time and the previous access time of the block ID; updating the access count of the block ID in response to the recency weight; and The stream ID for the block ID is determined in response to the updated access count.

敍述65.本發明概念的實施例包含根據敍述64的方法,其中回應於所述區塊ID的當前存取時間及先前存取時間來計算所述區塊ID的新近度權重包含,將所述新近度權重計算為二的(所述區塊ID的所述當前存取時間與所述先前存取時間之間的差除以衰減 週期)次冪。 Statement 65. An embodiment of the inventive concept includes the method according to Statement 64, wherein calculating the recency weight of the block ID in response to the current access time and the previous access time of the block ID includes: The recency weight is calculated as two (the difference between the current access time and the previous access time of the block ID divided by the attenuation Period) power.

敍述66.本發明概念的實施例包含根據敍述65的方法,其中回應於所述新近度權重來更新所述區塊ID的所述存取計數包含,將所述存取計數除以所述新近度權重。 Statement 66. An embodiment of the inventive concept includes the method according to Statement 65, wherein updating the access count of the block ID in response to the recency weight includes dividing the access count by the recency Degree weight.

敍述67.本發明概念的實施例包含根據敍述64的方法,其中回應於所述經更新的存取計數來判定針對所述區塊ID的所述串流ID包含,將針對所述區塊ID的所述串流ID計算為所述經更新的存取計數的對數。 Statement 67. An embodiment of the inventive concept includes the method according to Statement 64, wherein determining that the stream ID for the block ID is included in response to the updated access count The stream ID of is calculated as the logarithm of the updated access count.

敍述68.本發明概念的實施例包含根據敍述52的方法,其中執行與所述區塊ID相關聯的所述串流ID的背景更新包含:將所述區塊ID置放於對應於所述串流ID的佇列中,其中對應於所述串流ID的所述佇列是多個佇列中的其中之一;以及在所述區塊ID到達所述佇列的頂部時判定是否將所述區塊ID降級。 Narration 68. An embodiment of the inventive concept includes the method according to Narration 52, wherein performing a background update of the stream ID associated with the block ID includes: placing the block ID corresponding to the In the queue of stream IDs, the queue corresponding to the stream ID is one of a plurality of queues; and when the block ID reaches the top of the queue, it is determined whether to The block ID is degraded.

敍述69.本發明概念的實施例包含根據敍述68的方法,其中將所述區塊ID置放於對應於所述串流ID的佇列中包含:使所述區塊ID的存取計數遞增;以及回應於所述區塊ID的所述存取計數來判定針對所述區塊ID的所述串流ID。 Statement 69. Embodiments of the inventive concept include the method according to Statement 68, wherein placing the block ID in a queue corresponding to the stream ID includes: incrementing the access count of the block ID And in response to the access count of the block ID to determine the stream ID for the block ID.

敍述70.本發明概念的實施例包含根據敍述69的方法,其中回應於所述區塊ID的所述存取計數來判定針對所述區塊ID的所述串流ID包含,將針對區塊ID的所述串流ID計算為所述區塊ID的所述存取計數的對數。 Statement 70. Embodiments of the inventive concept include the method according to Statement 69, wherein in response to the access count of the block ID, it is determined that the stream ID for the block ID includes, and the stream ID for the block ID The stream ID of the ID is calculated as the logarithm of the access count of the block ID.

敍述71.本發明概念的實施例包含根據敍述69的方法,其中 將所述區塊ID置放於對應於所述串流ID的佇列中更包含,在所述區塊ID的所述存取計數超過最熱區塊的第二存取計數的情況下,將所述區塊ID識別為新的最熱區塊。 Narration 71. Embodiments of the inventive concept include the method according to Narration 69, wherein Placing the block ID in a queue corresponding to the stream ID further includes, in the case where the access count of the block ID exceeds the second access count of the hottest block, Identify the block ID as the new hottest block.

敍述72.本發明概念的實施例包含根據敍述71的方法,其中將所述區塊ID識別為新的最熱區塊包含,將裝置壽命判定為所述區塊ID的當前存取時間與所述區塊ID的先前存取時間之間的差。 Statement 72. Embodiments of the inventive concept include the method according to Statement 71, wherein identifying the block ID as the new hottest block includes determining the device life as the current access time of the block ID and all The difference between the previous access time of the block ID.

敍述73.本發明概念的實施例包含根據敍述68的方法,其中:執行與所述區塊ID相關聯的所述串流ID的背景更新更包含回應於所述存取計數及裝置壽命來判定所述區塊ID的期滿時間;且在所述區塊ID到達所述佇列的頂部時判定是否將所述區塊ID降級包含,在所述區塊ID的所述期滿時間已過去的情況下:自對應於所述串流ID的所述佇列移除所述區塊ID;使所述串流ID遞減;以及將所述區塊ID置放於對應於所述遞減的串流ID的第二佇列中。 Statement 73. An embodiment of the inventive concept includes the method according to Statement 68, wherein: performing a background update of the stream ID associated with the block ID further includes determining in response to the access count and device lifetime The expiration time of the block ID; and determining whether to include the block ID downgrade when the block ID reaches the top of the queue, when the expiration time of the block ID has passed In the case of: removing the block ID from the queue corresponding to the stream ID; decrementing the stream ID; and placing the block ID in the string corresponding to the decrement In the second queue of the stream ID.

敍述74.本發明概念的實施例包含根據敍述73的方法,其中回應於所述存取計數及裝置壽命來判定所述區塊ID的期滿時間包含,將裝置壽命判定為最熱區塊的最後存取時間與所述最熱區塊的先前存取時間之間的差。 Statement 74. Embodiments of the inventive concept include the method according to Statement 73, wherein determining the expiration time of the block ID in response to the access count and device life includes determining the device life as the hottest block The difference between the last access time and the previous access time of the hottest block.

敍述75.本發明概念的實施例包含根據敍述73的方法,其中在所述區塊ID到達所述佇列的頂部時判定是否將所述區塊ID降級更包含,在所述區塊ID的所述期滿時間已過去的情況下且在所述區塊ID為最熱區塊的情況下,選擇對應於所述串流ID的所述 佇列中的第二區塊ID作為新的最熱區塊。 Statement 75. The embodiment of the inventive concept includes the method according to Statement 73, wherein it is determined whether to degrade the block ID to include more when the block ID reaches the top of the queue. When the expiration time has passed and when the block ID is the hottest block, select the one corresponding to the stream ID The second block ID in the queue is used as the new hottest block.

敍述76.本發明概念的實施例包含一種包括非暫時性儲存媒體的物件,所述非暫時性儲存媒體於其上儲存有在由機器執行時引起如下操作的指令:自軟體源接收寫入命令;判定所述寫入命令中的邏輯區塊位址(LBA);識別固態硬碟(SSD)上包含所述LBA的區塊的區塊識別符(ID);存取與所述區塊ID相關聯的串流ID;將所述串流ID指定至所述寫入命令;在所述SSD上處理使用所述指定串流ID的所述寫入命令;以及執行與所述區塊ID相關聯的所述串流ID的背景更新。 Description 76. An embodiment of the inventive concept includes an object including a non-transitory storage medium on which is stored instructions that when executed by a machine cause the following operations: receiving a write command from a software source ; Determine the logical block address (LBA) in the write command; identify the block identifier (ID) of the block containing the LBA on the solid state drive (SSD); access and the block ID The associated stream ID; assign the stream ID to the write command; process the write command using the designated stream ID on the SSD; and perform execution related to the block ID The background update of the linked stream ID.

敍述77.本發明概念的實施例包含根據敍述76的物件,其中所述方法實施於主機電腦系統上的檔案系統層、區塊層或裝置驅動器層中的一者中。 Statement 77. An embodiment of the inventive concept includes an object according to Statement 76, wherein the method is implemented in one of a file system layer, a block layer, or a device driver layer on a host computer system.

敍述78.本發明概念的實施例包含根據敍述76的物件,其中所述方法實施於所述SSD的快閃轉譯層中。 Narration 78. Embodiments of the inventive concept include the object according to Narration 76, wherein the method is implemented in the flash translation layer of the SSD.

敍述79.本發明概念的實施例包含根據敍述76的物件,其中識別固態硬碟(SSD)上包含所述LBA的區塊的區塊識別符(ID)包含對所述LBA使用位址遮罩以識別所述區塊ID。 Statement 79. An embodiment of the inventive concept includes an object according to Statement 76, wherein a block identifier (ID) that identifies a block on a solid state drive (SSD) that contains the LBA includes using an address mask for the LBA To identify the block ID.

敍述80.本發明概念的實施例包含根據敍述76的物件,其中識別固態硬碟(SSD)上包含所述LBA的區塊的區塊識別符(ID)包含將所述LBA除以所述區塊中的磁區的數目。 Statement 80. An embodiment of the inventive concept includes an object according to Statement 76, wherein a block identifier (ID) that identifies a block on a solid state drive (SSD) that contains the LBA includes dividing the LBA by the area The number of sectors in the block.

敍述81.本發明概念的實施例包含根據敍述76的物件,其中將所述串流ID指定至所述寫入命令包含將所述串流ID添加至所述寫入命令以作為標籤。 Narrative 81. An embodiment of the inventive concept includes an item according to Narrative 76, wherein assigning the stream ID to the write command includes adding the stream ID to the write command as a tag.

敍述82.本發明概念的實施例包含根據敍述76的物件,所述非暫時性儲存媒體於其上儲存有在由所述機器執行時引起如下操作的其他指令:判定所述邏輯區塊位址是否接續第二寫入命令中的第二LBA;以及在所述邏輯區塊位址接續所述第二寫入命令中的所述第二LBA的情況下:判定指定至所述第二寫入命令的第二串流ID;以及將所述第二串流ID指定至所述寫入命令。 Narration 82. An embodiment of the inventive concept includes an object according to Narration 76, on which the non-transitory storage medium stores other instructions that cause the following operations when executed by the machine: Determine the logical block address Whether to continue the second LBA in the second write command; and in the case where the logical block address is continued with the second LBA in the second write command: determine whether to assign to the second write The second stream ID of the command; and assign the second stream ID to the write command.

敍述83.本發明概念的實施例包含根據敍述82的物件,其中所述第二寫入命令處於先於所述寫入命令的視窗中。 Narrative 83. An embodiment of the inventive concept includes an object according to Narrative 82, wherein the second write command is in a window prior to the write command.

敍述84.本發明概念的實施例包含根據敍述83的物件,所述非暫時性儲存媒體於其上儲存有在由所述機器執行時引起識別所述視窗的其他指令。 Narrative 84. An embodiment of the inventive concept includes an object according to Narrative 83, on which the non-transitory storage medium stores other instructions that cause the window to be recognized when executed by the machine.

敍述85.本發明概念的實施例包含根據敍述84的物件,其中識別所述視窗包含回應於以下各者中的至少一者來識別所述視窗的視窗大小:包含所述SSD的主機電腦系統中的處理器中的核心的數目,及在包含所述SSD的所述主機電腦系統中的所述處理器上執行的軟體源的數目。 Statement 85. An embodiment of the inventive concept includes an object according to Statement 84, wherein identifying the window includes identifying the window size of the window in response to at least one of the following: In a host computer system that includes the SSD The number of cores in the processor, and the number of software sources running on the processor in the host computer system that includes the SSD.

敍述86.本發明概念的實施例包含根據敍述83的物件,所述非暫時性儲存媒體於其上儲存有在由所述機器執行時引起如下操 作的其他指令:識別所述視窗中的最舊寫入命令;以及用所述寫入命令替換所述視窗中的所述最舊寫入命令。 Narrative 86. An embodiment of the inventive concept includes an object according to Narrative 83, on which the non-transitory storage medium stores the following operations when executed by the machine Other instructions performed: identify the oldest write command in the window; and replace the oldest write command in the window with the write command.

敍述87.本發明概念的實施例包含根據敍述76的物件,其中執行與所述區塊ID相關聯的所述串流ID的背景更新包含:將所述區塊ID添加至提交佇列;以及在所述區塊ID處於所述提交佇列的頂部時,自所述提交佇列移除所述區塊ID。 Narrative 87. An embodiment of the inventive concept includes an object according to narrative 76, wherein performing a background update of the stream ID associated with the block ID includes: adding the block ID to a submission queue; and When the block ID is at the top of the submission queue, the block ID is removed from the submission queue.

敍述88.本發明概念的實施例包含根據敍述76的物件,其中執行與所述區塊ID相關聯的所述串流ID的背景更新包含:增大所述區塊ID的存取計數;回應於所述區塊ID的當前存取時間及先前存取時間來計算所述區塊ID的新近度權重;回應於所述新近度權重來更新所述區塊ID的所述存取計數;以及回應於所述經更新的存取計數來判定針對所述區塊ID的所述串流ID。 Narrative 88. An embodiment of the inventive concept includes an object according to Narrative 76, wherein performing a background update of the stream ID associated with the block ID includes: increasing the access count of the block ID; responding Calculating the recency weight of the block ID based on the current access time and the previous access time of the block ID; updating the access count of the block ID in response to the recency weight; and The stream ID for the block ID is determined in response to the updated access count.

敍述89.本發明概念的實施例包含根據敍述88的物件,其中回應於所述區塊ID的當前存取時間及先前存取時間來計算所述區塊ID的新近度權重包含,將所述新近度權重計算為二的(所述區塊ID的所述當前存取時間與所述先前存取時間之間的差除以衰減週期)次冪。 Statement 89. An embodiment of the inventive concept includes an object according to Statement 88, wherein calculating the recency weight of the block ID in response to the current access time and the previous access time of the block ID includes: The recency weight is calculated as the power of two (the difference between the current access time and the previous access time of the block ID divided by the decay period).

敍述90.本發明概念的實施例包含根據敍述89的物件,其中回應於所述新近度權重來更新所述區塊ID的所述存取計數包含, 將所述存取計數除以所述新近度權重。 Statement 90. An embodiment of the inventive concept includes an object according to Statement 89, wherein updating the access count of the block ID in response to the recency weight includes, The access count is divided by the recency weight.

敍述91.本發明概念的實施例包含根據敍述88的物件,其中回應於所述經更新的存取計數來判定針對所述區塊ID的所述串流ID包含,將針對所述區塊ID的所述串流ID計算為所述經更新的存取計數的對數。 Narrative 91. An embodiment of the inventive concept includes an object according to Narrative 88, wherein in response to the updated access count, it is determined that the stream ID for the block ID includes, and the block ID is The stream ID of is calculated as the logarithm of the updated access count.

敍述92.本發明概念的實施例包含根據敍述76的物件,其中執行與所述區塊ID相關聯的所述串流ID的背景更新包含:將所述區塊ID置放於對應於所述串流ID的佇列中,其中對應於所述串流ID的所述佇列是多個佇列中的其中之一;以及在所述區塊ID到達所述佇列的頂部時判定是否將所述區塊ID降級。 Narrative 92. An embodiment of the inventive concept includes an object according to narrative 76, wherein performing a background update of the stream ID associated with the block ID includes: placing the block ID corresponding to the In the queue of stream IDs, the queue corresponding to the stream ID is one of a plurality of queues; and when the block ID reaches the top of the queue, it is determined whether to The block ID is degraded.

敍述93.本發明概念的實施例包含根據敍述92的物件,其中將所述區塊ID置放於對應於所述串流ID的佇列中包含:使所述區塊ID的存取計數遞增;以及回應於所述區塊ID的所述存取計數來判定針對所述區塊ID的所述串流ID。 Statement 93. An embodiment of the inventive concept includes the object according to Statement 92, wherein placing the block ID in a queue corresponding to the stream ID includes: incrementing the access count of the block ID And in response to the access count of the block ID to determine the stream ID for the block ID.

敍述94.本發明概念的實施例包含根據敍述93的物件,其中回應於所述區塊ID的所述存取計數來判定針對所述區塊ID的所述串流ID包含,將針對區塊ID的所述串流ID計算為所述區塊ID的所述存取計數的對數。 Statement 94. An embodiment of the inventive concept includes an object according to Statement 93, wherein in response to the access count of the block ID, it is determined that the stream ID for the block ID contains The stream ID of the ID is calculated as the logarithm of the access count of the block ID.

敍述95.本發明概念的實施例包含根據敍述93的物件,其中將所述區塊ID置放於對應於所述串流ID的佇列中更包含,在所述區塊ID的所述存取計數超過最熱區塊的第二存取計數的情況下,將所述區塊ID識別為新的最熱區塊。 Narration 95. The embodiment of the inventive concept includes the object according to Narration 93, wherein placing the block ID in a queue corresponding to the stream ID is further included in the storage of the block ID If the second access count exceeds the hottest block, the block ID is identified as the new hottest block.

敍述96.本發明概念的實施例包含根據敍述95的物件,其中將所述區塊ID識別為新的最熱區塊包含,將裝置壽命判定為所述區塊ID的當前存取時間與所述區塊ID的先前存取時間之間的差。 Narrative 96. The embodiment of the inventive concept includes an object according to Narrative 95, wherein identifying the block ID as the new hottest block includes determining the device life as the current access time of the block ID and all The difference between the previous access time of the block ID.

敍述97.本發明概念的實施例包含根據敍述92的物件,其中:執行與所述區塊ID相關聯的所述串流ID的背景更新更包含回應於所述存取計數及裝置壽命來判定所述區塊ID的期滿時間;且在所述區塊ID到達所述佇列的頂部時判定是否將所述區塊ID降級包含,在所述區塊ID的所述期滿時間已過去的情況下:自對應於所述串流ID的所述佇列移除所述區塊ID;使所述串流ID遞減;以及將所述區塊ID置放於對應於所述遞減的串流ID的第二佇列中。 Narrative 97. An embodiment of the inventive concept includes an object according to Narrative 92, wherein: performing the background update of the stream ID associated with the block ID further includes determining in response to the access count and device lifetime The expiration time of the block ID; and determining whether to include the block ID downgrade when the block ID reaches the top of the queue, when the expiration time of the block ID has passed In the case of: removing the block ID from the queue corresponding to the stream ID; decrementing the stream ID; and placing the block ID in the string corresponding to the decrement In the second queue of the stream ID.

敍述98.本發明概念的實施例包含根據敍述97的物件,其中回應於所述存取計數及裝置壽命來判定所述區塊ID的期滿時間包含,將裝置壽命判定為最熱區塊的最後存取時間與所述最熱區塊的先前存取時間之間的差。 Statement 98. The embodiment of the inventive concept includes the object according to Statement 97, wherein determining the expiration time of the block ID in response to the access count and device life includes determining the device life as the hottest block The difference between the last access time and the previous access time of the hottest block.

敍述99.本發明概念的實施例包含根據敍述97的物件,其中在所述區塊ID到達所述佇列的頂部時判定是否將所述區塊ID降級更包含,在所述區塊ID的所述期滿時間已過去的情況下且在所述區塊ID為最熱區塊的情況下,選擇對應於所述串流ID的所述佇列中的第二區塊ID作為新的最熱區塊。 Narrative 99. The embodiment of the inventive concept includes an object according to Narrative 97, in which it is determined whether to degrade the block ID to include more when the block ID reaches the top of the queue. When the expiration time has passed and the block ID is the hottest block, the second block ID in the queue corresponding to the stream ID is selected as the new hottest block. Hot block.

因此,考慮到本文中所描述的實施例的廣泛多種改變,此詳細描述及伴隨的材料僅意欲為說明性的,而不應被視為限制 本發明概念的範疇。所主張的本發明概念因此是可在以下申請專利範圍及其等效物的範疇及精神內的所有此等修改。 Therefore, in view of the wide variety of changes in the embodiments described herein, this detailed description and accompanying materials are only intended to be illustrative and should not be considered as limiting The scope of the inventive concept. The claimed concept of the invention is therefore capable of all such modifications within the scope and spirit of the following patent applications and their equivalents.

120:固態硬碟(SSD) 120: Solid State Drive (SSD)

305:主機介面邏輯 305: host interface logic

310:SSD控制器 310: SSD controller

315-1、315-2、315-3、315-4、315-5、315-6、315-7、315-8:快閃記憶體晶片 315-1, 315-2, 315-3, 315-4, 315-5, 315-6, 315-7, 315-8: Flash memory chip

320-1、320-2、320-3、320-4:通道 320-1, 320-2, 320-3, 320-4: channels

325:快閃轉譯層 325: Flash Translation Layer

330:儲存器 330: Storage

335:提交佇列 335: Submit Queue

340:區塊至串流映射器 340: block to stream mapper

Claims (20)

一種固態硬碟(SSD),包括:用以儲存資料的快閃記憶體;固態硬碟控制器,用以管理回應於多個寫入命令將資料寫入至所述快閃記憶體,所述固態硬碟控制器包含用於提交佇列及區塊至串流映射器的儲存器,所述固態硬碟控制器使得所述固態硬碟中支援對多個裝置串流;以及快閃轉譯層,包含:接收器,用以接收包含邏輯區塊位址(LBA)的寫入命令;LBA映射器,用以將所述LBA映射至區塊識別符(ID);串流選擇邏輯,用以使用所述區塊至串流映射器基於所述區塊ID來選擇串流ID;串流ID新增器,用以將所述串流ID添加至所述寫入命令;佇列器,用以將所述區塊ID置放於所述提交佇列中;以及背景邏輯,用以自所述提交佇列移除所述區塊ID及更新所述區塊至串流映射器。 A solid state drive (SSD) includes: a flash memory for storing data; a solid state hard disk controller for managing writing data to the flash memory in response to a plurality of write commands, the The solid-state drive controller includes storage for submitting queues and blocks to a stream mapper, the solid-state drive controller enables the solid-state drive to support streaming to multiple devices; and a flash translation layer , Including: a receiver to receive a write command including a logical block address (LBA); an LBA mapper to map the LBA to a block identifier (ID); stream selection logic to Use the block-to-stream mapper to select a stream ID based on the block ID; a stream ID adder to add the stream ID to the write command; a queuer to use To place the block ID in the submission queue; and background logic to remove the block ID from the submission queue and update the block-to-stream mapper. 如申請專利範圍第1項所述的固態硬碟,其中所述區塊至串流映射器包含順序、頻率、新近度(SFR)表,所述SFR表包含所述區塊ID及針對所述區塊ID的所述串流ID。 The solid state drive described in claim 1, wherein the block-to-stream mapper includes a sequence, frequency, and recency (SFR) table, and the SFR table includes the block ID and the The stream ID of the block ID. 如申請專利範圍第2項所述的固態硬碟,其中所述背景邏輯包含用以在所述LBA接續先前寫入命令的第二LBA的情況下選擇先前串流ID的順序性邏輯。 The solid-state drive described in claim 2, wherein the background logic includes sequential logic for selecting the previous stream ID when the LBA is followed by the second LBA of the previous write command. 如申請專利範圍第2項所述的固態硬碟,其中所述背景邏輯包含: 新近度邏輯,用以基於針對所述區塊ID的當前存取時間、針對所述區塊ID的先前存取時間以及衰減週期來計算新近度權重;存取計數調整器,用以基於所述新近度權重來調整所述區塊ID的存取計數,從而產生經調整存取計數;以及串流ID調整器,用以基於針對所述區塊ID的所述經調整存取計數來調整所述串流ID。 The solid state drive described in item 2 of the scope of patent application, wherein the background logic includes: The recency logic is used to calculate the recency weight based on the current access time for the block ID, the previous access time for the block ID, and the decay period; an access count adjuster is used to calculate the recency weight based on the The recency weight is used to adjust the access count of the block ID to generate an adjusted access count; and a stream ID adjuster is used to adjust the access count based on the adjusted access count for the block ID The stream ID. 如申請專利範圍第1項所述的固態硬碟,其中所述區塊至串流映射器包含節點輸入項,所述節點輸入項包含所述區塊ID及針對所述區塊ID的所述串流ID。 The solid-state drive described in claim 1, wherein the block-to-stream mapper includes a node input item, and the node input item includes the block ID and the block ID Stream ID. 如申請專利範圍第5項所述的固態硬碟,其中所述背景邏輯包含:提昇邏輯,用以基於所述區塊ID來判定何時提昇所述串流ID;第二佇列器,用以回應於針對所述區塊ID的所述串流ID,將所述區塊ID置放於對應於多個串流ID的多個佇列中的第一佇列中;以及降級邏輯,用以基於所述區塊ID來判定何時將所述串流ID降級。 The solid state drive according to claim 5, wherein the background logic includes: promotion logic to determine when to promote the stream ID based on the block ID; and a second queuer to In response to the stream ID for the block ID, the block ID is placed in the first queue of the plurality of queues corresponding to the plurality of stream IDs; and the downgrade logic is used for Based on the block ID, it is determined when to downgrade the stream ID. 如申請專利範圍第6項所述的固態硬碟,其中:所述降級邏輯包含:比較器,用以判定所述區塊ID的期滿時間是否已過去;以及在所述區塊ID的所述期滿時間已過去的情況下,用以使所述串流ID遞減的減量器;且所述第二佇列器是操作性的以回應於所述區塊ID的已遞減 的所述串流ID,將所述區塊ID置放於對應於所述多個串流ID的所述多個佇列中的第二佇列中。 The solid-state hard disk described in item 6 of the scope of patent application, wherein: the downgrade logic includes: a comparator for determining whether the expiration time of the block ID has passed; When the expiration time has passed, a decrementer used to decrement the stream ID; and the second queuer is operative to respond to the decrement of the block ID The block ID is placed in the second queue of the plurality of queues corresponding to the plurality of stream IDs. 一種非暫時性儲存媒體,所述非暫時性儲存媒體儲存有指令,在由機器執行所述指令時,使得:接收器接收針對固態硬碟(SSD)的寫入命令,所述寫入命令包含邏輯區塊位址(LBA);LBA映射器將所述LBA映射至區塊識別符(ID);串流選擇邏輯使用儲存於主機電腦系統中的記憶體中的區塊至串流映射器,基於所述區塊ID來選擇串流ID;串流ID新增器將所述串流ID添加至所述寫入命令;佇列器將所述區塊ID置放於儲存於所述記憶體中的提交佇列中;以及背景邏輯自所述提交佇列移除所述區塊ID及更新所述區塊至串流映射器。 A non-transitory storage medium, the non-transitory storage medium stores instructions. When the instructions are executed by a machine, a receiver receives a write command for a solid state drive (SSD), and the write command includes Logical block address (LBA); the LBA mapper maps the LBA to a block identifier (ID); the stream selection logic uses the block-to-stream mapper stored in the memory of the host computer system, The stream ID is selected based on the block ID; the stream ID adder adds the stream ID to the write command; the queuer stores the block ID in the memory And the background logic removes the block ID from the commit queue and updates the block to the stream mapper. 如申請專利範圍第8項所述的非暫時性儲存媒體,其中所述區塊至串流映射器包含順序、頻率、新近度(SFR)表,所述SFR表包含所述區塊ID及針對所述區塊ID的所述串流ID。 The non-transitory storage medium described in claim 8, wherein the block-to-stream mapper includes a sequence, frequency, and recency (SFR) table, and the SFR table includes the block ID and target The stream ID of the block ID. 如申請專利範圍第9項所述的非暫時性儲存媒體,其中所述背景邏輯包含用以在所述LBA接續先前寫入命令的第二LBA的情況下選擇先前串流ID的順序性邏輯。 The non-transitory storage medium according to claim 9, wherein the background logic includes sequential logic for selecting the previous stream ID when the LBA continues the second LBA of the previous write command. 如申請專利範圍第9項所述的非暫時性儲存媒體,其中所述背景邏輯包含:新近度邏輯,用以基於針對所述區塊ID的當前存取時間、針對所述區塊ID的先前存取時間以及衰減週期來計算新近度權重; 存取計數調整器,用以基於所述新近度權重來調整所述區塊ID的存取計數,從而產生經調整存取計數;以及串流ID調整器,用以基於針對所述區塊ID的所述經調整存取計數來調整所述串流ID。 The non-transitory storage medium according to claim 9, wherein the background logic includes: recency logic to be based on the current access time for the block ID, and for the previous Access time and decay period to calculate recency weight; An access count adjuster for adjusting the access count of the block ID based on the recency weight to generate an adjusted access count; and a stream ID adjuster for adjusting the access count for the block ID based on The adjusted access count of to adjust the stream ID. 如申請專利範圍第8項所述的非暫時性儲存媒體,其中所述區塊至串流映射器包含節點輸入項,所述節點輸入項包含所述區塊ID及針對所述區塊ID的所述串流ID。 The non-transitory storage medium as described in claim 8, wherein the block-to-stream mapper includes a node input item, and the node input item includes the block ID and information for the block ID The stream ID. 如申請專利範圍第12項所述的非暫時性儲存媒體,其中所述背景邏輯包含:提昇邏輯,用以基於所述區塊ID來判定何時提昇所述串流ID;第二佇列器,用以回應於針對所述區塊ID的所述串流ID,將所述區塊ID置放於對應於多個串流ID的多個佇列中的第一佇列中;以及降級邏輯,用以基於所述區塊ID來判定何時將所述串流ID降級。 The non-transitory storage medium described in claim 12, wherein the background logic includes: promotion logic for determining when to promote the stream ID based on the block ID; a second queuer, In response to the stream ID for the block ID, placing the block ID in the first queue of the plurality of queues corresponding to the plurality of stream IDs; and the downgrade logic, It is used to determine when to downgrade the stream ID based on the block ID. 如申請專利範圍第13項所述的非暫時性儲存媒體,其中:所述降級邏輯包含:比較器,用以判定所述區塊ID的期滿時間是否已過去;以及在所述區塊ID的所述期滿時間已過去的情況下,用以使所述串流ID遞減的減量器;且所述第二佇列器是操作性的以回應於所述區塊ID的已遞減的所述串流ID,將所述區塊ID置放於對應於所述多個串流ID的 所述多個佇列中的第二佇列中。 The non-transitory storage medium as described in item 13 of the scope of patent application, wherein: the downgrade logic includes: a comparator for determining whether the expiration time of the block ID has passed; and in the block ID When the expiration time of the block ID has passed, a decrementer used to decrement the stream ID; and the second queuer is operative to respond to the decrement of the block ID The stream ID, the block ID is placed in the corresponding to the plurality of stream ID In the second queue of the plurality of queues. 一種操作固態硬碟(SSD)的方法,其包括:自軟體源接收寫入命令;判定所述寫入命令中的邏輯區塊位址(LBA);識別固態硬碟(SSD)上包含所述LBA的區塊的區塊識別符(ID);存取與所述區塊ID相關聯的串流ID;將所述串流ID指定至所述寫入命令;在所述固態硬碟上處理使用經指定的所述串流ID的所述寫入命令;以及執行與所述區塊ID相關聯的所述串流ID的背景更新。 A method for operating a solid state drive (SSD), which includes: receiving a write command from a software source; determining a logical block address (LBA) in the write command; identifying that the solid state drive (SSD) contains the The block identifier (ID) of the block of the LBA; access the stream ID associated with the block ID; assign the stream ID to the write command; process on the solid state drive The write command using the specified stream ID; and the background update of the stream ID associated with the block ID is performed. 如申請專利範圍第15項所述的方法,更包括:判定所述邏輯區塊位址是否接續第二寫入命令中的第二LBA;以及在所述邏輯區塊位址接續所述第二寫入命令中的所述第二LBA的情況下:判定指定至所述第二寫入命令的第二串流ID;以及將所述第二串流ID指定至所述寫入命令。 The method described in item 15 of the scope of patent application further includes: determining whether the logical block address is connected to the second LBA in the second write command; and connecting the second LBA in the logical block address In the case of the second LBA in the write command: determine the second stream ID assigned to the second write command; and assign the second stream ID to the write command. 如申請專利範圍第15項所述的方法,其中執行與所述區塊ID相關聯的所述串流ID的背景更新包含:將所述區塊ID添加至提交佇列;以及在所述區塊ID處於所述提交佇列的頂部時,自所述提交佇列移除所述區塊ID。 The method according to claim 15, wherein performing the background update of the stream ID associated with the block ID includes: adding the block ID to a submission queue; and in the area When the block ID is at the top of the submission queue, the block ID is removed from the submission queue. 如申請專利範圍第15項所述的方法,其中執行與所述 區塊ID相關聯的所述串流ID的背景更新包含:增大所述區塊ID的存取計數;回應於所述區塊ID的當前存取時間及先前存取時間來計算所述區塊ID的新近度權重;回應於所述新近度權重來更新所述區塊ID的所述存取計數;以及回應於經更新的所述存取計數來判定針對所述區塊ID的所述串流ID。 The method described in item 15 of the scope of the patent application, wherein the implementation is The background update of the stream ID associated with the block ID includes: increasing the access count of the block ID; calculating the zone in response to the current access time and the previous access time of the block ID The recency weight of the block ID; the access count of the block ID is updated in response to the recency weight; and the access count for the block ID is determined in response to the updated access count Stream ID. 如申請專利範圍第15項所述的方法,其中執行與所述區塊ID相關聯的所述串流ID的背景更新包含:將所述區塊ID置放於對應於所述串流ID的佇列中,其中對應於所述串流ID的所述佇列是多個佇列中的其中之一;以及在所述區塊ID到達所述佇列的頂部時判定是否將所述區塊ID降級。 The method according to claim 15, wherein performing background update of the stream ID associated with the block ID includes: placing the block ID in the corresponding stream ID In the queue, the queue corresponding to the stream ID is one of a plurality of queues; and when the block ID reaches the top of the queue, it is determined whether to transfer the block ID is downgraded. 如申請專利範圍第19項所述的方法,其中:執行與所述區塊ID相關聯的所述串流ID的背景更新更包含回應於存取計數及裝置壽命來判定所述區塊ID的期滿時間;且在所述區塊ID到達所述佇列的頂部時判定是否將所述區塊ID降級包含,在所述區塊ID的所述期滿時間已過去的情況下:自對應於所述串流ID的所述佇列移除所述區塊ID;使所述串流ID遞減;以及將所述區塊ID置放於對應於已遞減的所述串流ID的第二佇列中。 The method according to claim 19, wherein: performing the background update of the stream ID associated with the block ID further includes determining the block ID in response to the access count and device lifetime Expiration time; and when the block ID reaches the top of the queue, it is determined whether to include the block ID in a downgrade; in the case that the expiration time of the block ID has passed: self-correspondence Remove the block ID from the queue of the stream ID; decrement the stream ID; and place the block ID in the second corresponding to the decremented stream ID In the queue.
TW106125834A 2016-09-02 2017-08-01 Solid state drive, non-transitory storage medium and method for operating solid state drive TWI714800B (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 2016-11-04
US15/344,422 US10282324B2 (en) 2015-07-13 2016-11-04 Smart I/O stream detection based on multiple attributes
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
TW201812591A TW201812591A (en) 2018-04-01
TWI714800B true TWI714800B (en) 2021-01-01

Family

ID=61531626

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106125834A TWI714800B (en) 2016-09-02 2017-08-01 Solid state drive, non-transitory storage medium and method for operating solid state drive

Country Status (4)

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

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10761775B2 (en) * 2018-02-09 2020-09-01 Samsung Electronics Co., Ltd. System and method for NVMe inter command association in SSD storage using a bridge device
CN108563585A (en) * 2018-03-27 2018-09-21 深圳忆联信息系统有限公司 A method of it reducing SSD and writes amplification
KR102656172B1 (en) 2018-03-28 2024-04-12 삼성전자주식회사 Storage device for mapping virtual streams and physical streams and method thereof
US10963394B2 (en) * 2018-04-16 2021-03-30 Samsung Electronics Co., Ltd. System and method for optimizing performance of a solid-state drive using a deep neural network
CN109032505A (en) * 2018-06-26 2018-12-18 深圳忆联信息系统有限公司 Data read-write method, device, computer equipment and storage medium with timeliness
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 (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120072662A1 (en) * 2010-09-21 2012-03-22 Lsi Corporation Analyzing sub-lun granularity for dynamic storage tiering
TW201227297A (en) * 2010-12-10 2012-07-01 Sandisk Technologies Inc Method and system for hijacking writes to a non-volatile memory
US20120254524A1 (en) * 2010-01-27 2012-10-04 Akihisa Fujimoto Memory device and host device
TW201308074A (en) * 2011-05-17 2013-02-16 Sandisk Technologies Inc Non-volatile memory and method having block management with hot/cold data sorting
TW201324150A (en) * 2011-10-05 2013-06-16 Lsi Corp Self-journaling and hierarchical consistency for non-volatile storage
US20140281302A1 (en) * 2013-03-15 2014-09-18 Western Digital Technologies, Inc. Multiple stream compression and formatting of data for data storage systems
TW201604688A (en) * 2012-06-19 2016-02-01 Toshiba Kk Storage medium storing control program, method of controlling information processing device, information processing system, and information processing device

Family Cites Families (14)

* 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
JP5825261B2 (en) * 2010-09-24 2015-12-02 日本電気株式会社 Information processing apparatus, method and program thereof
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
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
US9158687B2 (en) 2013-03-04 2015-10-13 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
CN105446890B (en) * 2014-09-18 2020-08-25 三星电子株式会社 Intelligent data deployment
KR102214028B1 (en) * 2014-09-22 2021-02-09 삼성전자주식회사 Application processor including reconfigurable scaler and device including the same
US9519429B2 (en) * 2014-12-09 2016-12-13 Intel Corporation Techniques to manage multiple sequential write streams to a solid state drive
CN104461393B (en) * 2014-12-09 2017-05-17 华中科技大学 Mixed mapping method of flash memory
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
CN104809075B (en) * 2015-04-20 2017-09-12 电子科技大学 A kind of solid state record device and method for accessing real-time parallel processing
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 (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120254524A1 (en) * 2010-01-27 2012-10-04 Akihisa Fujimoto Memory device and host device
US20120072662A1 (en) * 2010-09-21 2012-03-22 Lsi Corporation Analyzing sub-lun granularity for dynamic storage tiering
TW201227297A (en) * 2010-12-10 2012-07-01 Sandisk Technologies Inc Method and system for hijacking writes to a non-volatile memory
TW201308074A (en) * 2011-05-17 2013-02-16 Sandisk Technologies Inc Non-volatile memory and method having block management with hot/cold data sorting
TW201324150A (en) * 2011-10-05 2013-06-16 Lsi Corp Self-journaling and hierarchical consistency for non-volatile storage
TW201604688A (en) * 2012-06-19 2016-02-01 Toshiba Kk Storage medium storing control program, method of controlling information processing device, information processing system, and information processing device
US20140281302A1 (en) * 2013-03-15 2014-09-18 Western Digital Technologies, Inc. Multiple stream compression and formatting of data for data storage systems

Also Published As

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

Similar Documents

Publication Publication Date Title
TWI714800B (en) Solid state drive, non-transitory storage medium and method for operating solid state drive
US11392297B2 (en) Automatic stream detection and assignment algorithm
US10380035B2 (en) Using an access increment number to control a duration during which tracks remain in cache
US9819603B2 (en) Adaptive bandwidth throttling
US10108552B2 (en) Using cache lists for processors to determine tracks to demote from a cache
CN110502452B (en) Method and device for accessing mixed cache in electronic equipment
JP5305621B2 (en) System that manages data in the cache using multiple data structures
EP3605347B1 (en) Systems and methods for i/o prioritization in nvme-compliant storage devices
US10114753B2 (en) Using cache lists for multiple processors to cache and demote tracks in a storage system
US9501419B2 (en) Apparatus, systems, and methods for providing a memory efficient cache
US9658957B2 (en) Systems and methods for managing data input/output operations
US9921974B2 (en) Assigning cache control blocks and cache lists to multiple processors to cache and demote tracks in a storage system
JP6106028B2 (en) Server and cache control method
EP4220419B1 (en) Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests
CN110226158B (en) Data prefetching method and device and storage equipment
US9535844B1 (en) Prioritization for cache systems
WO2015039352A1 (en) Data caching method and storage system
GB2493243A (en) Determining hot data in a storage system using counting bloom filters
US10146783B2 (en) Using file element accesses to select file elements in a file system to defragment
WO2021008301A1 (en) Method and apparatus for accessing hybrid cache in electronic device
KR20230037333A (en) Storage device and memory system