TW201816620A - 用於多資料串流允許的固態式硬碟之合併資料串流方法、固態式硬碟及驅動器 - Google Patents

用於多資料串流允許的固態式硬碟之合併資料串流方法、固態式硬碟及驅動器 Download PDF

Info

Publication number
TW201816620A
TW201816620A TW106130577A TW106130577A TW201816620A TW 201816620 A TW201816620 A TW 201816620A TW 106130577 A TW106130577 A TW 106130577A TW 106130577 A TW106130577 A TW 106130577A TW 201816620 A TW201816620 A TW 201816620A
Authority
TW
Taiwan
Prior art keywords
software
streams
criterion
stream
value
Prior art date
Application number
TW106130577A
Other languages
English (en)
Other versions
TWI718337B (zh
Inventor
慶鈞 禤
崔昌皓
Original Assignee
南韓商三星電子股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 南韓商三星電子股份有限公司 filed Critical 南韓商三星電子股份有限公司
Publication of TW201816620A publication Critical patent/TW201816620A/zh
Application granted granted Critical
Publication of TWI718337B publication Critical patent/TWI718337B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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
    • 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/7207Details relating to flash memory management management of metadata or control data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Debugging And Monitoring (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本發明揭露了一種固態式硬碟(SSD)。SSD可包含用以儲存資料的快閃記憶體及對數個裝置串流的支援。SSD亦可包含SSD控制器,SSD控制器用以管理自快閃記憶體讀取資料及將資料寫入至快閃記憶體。SSD亦可包含主機介面邏輯,主機介面邏輯可包含:接收器,其用以自主機接收與軟體串流相關聯的命令;計時器,其用以對視窗進行計時;統計收集器,其用以自命令判定軟體串流的至少一個準則的值;分級器,其用以根據值而對軟體串流進行分級;以及映射器,其用以建立軟體串流與裝置串流之間的映射。

Description

用於多資料串流允許的固態式硬碟之合併資料串流方法
本發明概念大體上是關於固態式硬碟(Solid State Drive;SSD),且更特定言之,是關於管理多資料串流SSD中的串流。
多串流固態式硬碟(SSD)允許智慧地置放傳入資料,以將內部廢棄項目收集(garbage collection;GC)的影響減至最小以及減少寫入放大(write amplification)。可藉由將簡單標籤(串流ID)添加至自主機發送至SSD的寫入請求中的每一者來達成多串流傳輸。基於此標籤,SSD可將資料分組成共同區塊(common block)。
在大型電腦系統中,應用程式可同時打開許多檔案。理想上,每一檔案類型應在執行串流寫入時指派其自有串流ID。然而,SSD僅僅支援有限數目個將一次性可用的主動寫入串流,此常常不足以覆蓋由系統打開的所有檔案。
仍需要管理自主機機器向SSD映射串流的方式。
本發明概念的實例實施例提供一種固態式硬碟(SSD)。所述SSD包括:快閃記憶體,其用以儲存資料;所述SSD中的對多個裝置串流的支援;SSD控制器,其用以回應於多個命令而管理自所述快閃記憶體讀取資料及將資料寫入至所述快閃記憶體;以及主機介面邏輯,其包含:接收器,其用以自主機接收所述多個命令,所述多個命令與多個軟體串流相關聯;計時器,其用以對視窗進行計時;統計收集器,其用以回應於所述多個命令而在所述視窗期間判定所述多個軟體串流中的每一者的至少一個準則的至少一個值;分級器,其用以根據所述多個軟體串流中的每一者的所述至少一個準則的所述至少一個值而對所述多個軟體串流進行分級;以及映射器,其用以建立映射,所述映射可操作以將所述多個軟體串流的第一子集中的每一軟體串流映射至所述SSD中的所述多個裝置串流中的唯一裝置串流,及將所述多個軟體串流的第二子集中的所有所述軟體串流映射至所述SSD中的所述多個裝置串流中的合併裝置串流。
本發明概念的實例實施例提供一種供在電腦系統中使用的驅動器。所述驅動器包括:接收器,其用以自主機接收多個命令,所述多個命令與多個軟體串流相關聯;計時器,其用以對視窗進行計時;統計收集器,其用以回應於所述多個命令而在所述視窗期間判定所述多個軟體串流中的每一者的至少一個準則的至少一個值;分級器,其用以根據所述多個軟體串流中的每一者的所述至少一個準則的所述至少一個值而對所述多個軟體串流進行分級;映射器,其用以建立映射,所述映射可操作以將所述多個軟體串流的第一子集中的每一軟體串流映射至固態式硬碟(SSD)中的多個裝置串流中的唯一裝置串流(unique device stream),及將所述多個軟體串流的第二子集中的所有所述軟體串流映射至所述SSD中的所述多個裝置串流中的合併裝置串流(consolidated device stream);裝置串流標識符(identifier;ID)新增器,其用以新增對應於與所述多個命令中的每一者相關聯的軟體串流的裝置串流的裝置串流ID至額外多個命令中的每一者;以及傳輸器,其用以將所述額外多個命令中的每一者傳輸至所述SSD。
本發明概念的實例實施例提供一種方法,所述方法包括:接收與多個軟體串流相關聯的多個命令,將使用包含多個裝置串流的固態式硬碟(SSD)來處理所述多個命令;回應於所述多個命令而判定所述多個軟體串流中的每一者的至少一個準則的至少一個值;回應於所述至少一個準則的所述至少一個值而識別所述多個軟體串流的第一子集及第二子集;產生映射,所述映射可操作以將所述多個軟體串流的所述第一子集中的每一軟體串流映射至所述SSD中的所述多個裝置串流中的唯一裝置串流,及將所述多個軟體串流的所述第二子集中的所有所述軟體串流映射至所述SSD中的所述多個裝置串流中的合併裝置串流;在產生所述映射之後接收與所述多個軟體串流相關聯的第二多個命令;回應於所述映射而將所述第二多個命令中的每一者指派至所述多個裝置串流中的一者;以及使用所述所指派裝置串流而處理所述SSD上的所述第二多個命令中的每一者。
現在將詳細參考本發明概念的實施例,其實例在附圖中予以說明。在以下詳細描述中,闡述大量特定細節以使得能夠透徹理解本發明概念。然而,應理解,所屬領域中具通常知識者可在無此等特定細節的情況下實踐本發明概念。在其他情況下,尚未詳細描述眾所周知的方法、程序、組件、電路以及網路,以免不必要地混淆實施例的態樣。
應理解,儘管在本文中可使用術語第一、第二等來描述各種元件,但此等元件不應受限於此等術語。此等術語僅用以將一元件與另一元件區分。舉例而言,第一模組可稱為第二模組,且類似地,第二模組可稱為第一模組,而不會背離本發明概念的範疇。
本文中本發明概念的描述中所使用的術語僅是出於描述特定實施例的目的且並不意欲限制本發明概念。如對本發明概念及所附申請專利範圍的描述中所使用,除非上下文另有清晰指示,否則單數形式「一」及「所述」亦意欲包含複數形式。亦應理解,如本文所使用的術語「及/或」指代且涵蓋相關聯的所列項目中的一或多者的任何及所有可能組合。應進一步理解,術語「包括」在用於本說明書中時指定所敍述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。圖式的組件及特徵未必按比例繪製。
藉由多串流傳輸技術,來自應用程式的寫入串流ID的數目常常超出由固態式硬碟(SSD)支援的串流的最大數目。為了解決問題,SSD可評估每一檔案類型/串流ID的寫入模式,且基於主機串流特性(諸如寫入頻率、累積資料大小、寫入序列、服務品質(Quality of Service;QoS)要求、閒置時間等)之間的類似性及差異性而將實際(裝置)串流指派至檔案/主機串流。
不同於傳統資料集,串流資料連續地且按變化的更新速率在電腦系統內外流動。由於資料串流的極大的資料量,不可能儲存整個資料串流或多次掃描資料串流。另一方面,保持資料串流以供處理可在系統中產生巨大的瓶頸。本發明概念的實施例可使用對串流的單次掃描且在線地支援串流管理。
傳統上在一或多個佇列中,在主電腦系統中抑或在SSD的韌體內部管理輸入/輸出(input/output;I/O)請求。可在任一位置中實施本發明概念的實施例。在多資料串流允許的系統中,佇列中的每一請求可包含應用程式指派的串流ID。為了將應用程式指派的串流ID轉譯成SSD支援的串流ID,可實施模組以監測佇列中的請求的視窗。可選擇視窗大小,使得視窗中的資料集表示由主機機器上的工作負荷產生的資料的分佈,或視窗大小可設定成任何所要大小。舉例而言,若SSD處理來自任何數目個機器的命令,如可在分散式資料庫中發生,則經設計以擷取包含SSD的主機機器上的工作負荷的視窗大小可不表示命令來自的其他機器上的工作負荷。在彼狀況下,不同視窗大小可用以(希望)較佳地表示向SSD發送請求的所有機器上的工作負荷。當命令進入視窗時,可基於命令而計算統計,例如每一應用程式指派的串流ID的計數器或累積資料大小。一旦填充了視窗,則可基於計數器值而將應用程式指派的串流ID映射至SSD支援的串流ID。
舉例而言,假定SSD可支援n 個串流。具有n -1個最大計數器值的應用程式指派的串流ID可分別映射至SSD支援的串流ID 1至n -1。視窗中的剩餘請求,不論應用程式指派的串流ID,可使用最後的SSD支援的串流ID(SSD支援的串流IDn )。
為了處置資料請求的動態性,可將佇列視窗作為先入先出(First In, First Out;FIFO或滑動)視窗加以管理。當每一請求退出視窗時,可基於退出的請求而減小統計,諸如對應於相關聯應用程式指派的串流ID計數器或累積資料大小。以此方式,可僅針對視窗內的請求而維持統計。可週期性地更新應用程式指派的串流ID至SSD支援的串流ID映射以適應於資料負載的改變。
圖1展示根據本發明概念的實施例的具有固態式硬碟(SSD)的機器。在圖1中,展示了機器105。機器105可以是任何所要機器,包含但不限於桌上型或膝上型電腦、伺服器(獨立伺服器抑或機架伺服器),或可受益於本發明概念的實施例的任何其他裝置。機器105亦可包含專用攜帶型計算裝置、平板電腦、智慧型電話以及其他計算裝置。機器105可執行任何所要應用程式:資料庫應用程式是良好實例,但本發明概念的實施例可延伸至任何所要應用程式。
不論其特定形式,機器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控制。
SSD 120可以是任何種類的SSD,且甚至可延伸以包含執行廢棄項目收集(即使在未使用快閃記憶體時)的其他類型的儲存器。SSD 120可由儲存控制器130控制,儲存控制器130可整合至處理器110中抑或成為機器105的部分。
圖2展示圖1的機器的額外細節。參考圖2,通常,機器105包含一或多個處理器110,所述處理器可包含記憶體控制器125及時鐘205,時鐘205可用以協調機器105的組件的操作。處理器110亦可耦接至記憶體115,作為實例,記憶體115可包含隨機存取記憶體(random access memory;RAM)、唯讀記憶體(read-only memory;ROM)或其他狀態保持媒體。處理器110亦可耦接至儲存裝置120且耦接至網路連接器210,網路連接器210可以是例如乙太網路連接器或無線連接器。處理器110亦可連接至匯流排215,使用者介面220及可使用輸入/輸出引擎225管理的輸入/輸出介面埠以及其他組件可附接至匯流排215。
圖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。
雖然圖3將SSD 120展示為包含組織成四個通道320-1至320-4的八個快閃記憶體晶片315-1至315-8,但本發明概念的實施例可支援組織成任何數目個通道的任何數目個快閃記憶體晶片。
圖4展示與各種軟體串流映射至圖1的SSD 120中的裝置串流相關聯的各種命令。在圖4中,展示了各種命令405-1至405-k 。命令405-1至405-k 可源自圖1的機器105上的任何軟體源:典型的實例來源包含在圖1的機器105上執行的應用程式及在圖1的機器105上執行的作業系統,但命令405-1至405-k 的其他來源是可能的。
命令405-1至405-k 可組織成軟體串流410-1至410-n 。術語「軟體串流」用以區分此等串流與SSD 120內部的被稱為「裝置串流」的串流;「軟體串流」意欲涵蓋任何可能的串流源,包含應用程式及作業系統。通常,軟體串流410-1至410-n 由命令405-1至405-k 的來源定義。對於特定來源可打開的串流的數目不存在限制。舉例而言,應用程式可針對正自圖1的SSD 120讀取或寫入至SSD 120的每一檔案而打開單個串流。因此,串流的數目n 可超出向圖1的SSD 120發出命令的應用程式及作業系統的數目。以相同的方式,因為應用程式可按每個軟體串流發佈多個命令,所以命令的數目k 可超出軟體串流的數目n
每一命令可包含標籤415。標籤415可指定命令與哪一軟體串流410-1至405-n 相關聯。以此方式,每一命令源(不論其是應用程式、作業系統執行緒還是某一其他來源)可以似乎最適於來源的方式管理其自有命令。
但雖然軟體串流的數目n 可僅受可用記憶體限制,但裝置串流420-1至420-m 的數目通常有限:亦即,圖1的SSD 120可支援多達固定數目個裝置串流,且不大於彼預定數目。若軟體串流的數目n 不大於裝置串流的數目m ,則可按與裝置串流一對一的關係指派軟體串流。但若軟體串流比裝置串流更多(數學上,若nm ),則會產生困難:至少一個裝置串流需要處置與多個軟體串流相關聯的命令。映射425可儲存軟體串流410-1至410-n 是如何映射至裝置串流420-1至420-m 。圖5至圖9B展示可如何產生映射425。
圖5展示圖3的主機介面邏輯305的細節。在圖5中,圖3的主機介面邏輯305展示為負責產生圖4的映射425。但在本發明概念的其他實施例中,圖5中所展示的組件可以軟體實施且包含為例如圖1的記憶體控制器125、圖1的儲存控制器130的部分,或實施為可攔截寫入請求且在發出寫入命令之前組合串流的庫常式(library routines),或在圖1的SSD 120內抑或機器105內的其他處,實施為單獨的專用硬體。出於此論述的目的,對圖4的映射425的產生的任何引用意欲涵蓋任何特定位置處的實施,即使伴隨圖5至圖9B的描述集中在圖3的主機介面邏輯305內的實施亦如此。
在圖5中,主機介面邏輯305可包含接收器505、計時器510、統計收集器515、分級器520以及映射器525。按適於實施,可以軟體抑或硬體實施此等組件。舉例而言,對於實施於圖3的主機介面邏輯305內的本發明概念的實施例,實施可包含電路,而對於實施於圖1的記憶體控制器125或圖1的儲存控制器130內的本發明概念的實施例,實施可包含軟體。
接收器505可自各種軟體源接收圖4的命令405-1至405-k 。在此提醒,圖4的每一命令405-1至405-k 可包含圖4的標籤415,標籤415可識別命令與圖4的哪一軟體串流410-1至410-n 相關聯。
計時器510可用以量測視窗何時打開及關閉。藉由在時間間隔內使用視窗,統計收集器515可計算關於圖4的串流410-1至410-n 的表示圖1的機器105上的工作負荷的統計,此可支援將圖4的軟體串流410-1至410-n 映射至圖4的裝置串流420-1至420-m
圖6給出此視窗的實例。在圖6中,視窗605展示跨越命令405-1至405-k 中的一些:具體言之,命令405-1至405-3。基於對在視窗605期間發出的命令的統計分析,可(希望)判定對圖1的機器105上的工作負荷的代表性分析。如圖6中所展示的三個命令不太可能提供圖1的機器105上的工作負荷的代表性樣本,但本發明概念的實施例可支援特定視窗內的任何數目個命令:若視窗605展示為涵蓋較合理數目個命令,則圖6將有可能雜亂至不可閱讀的程度。
視窗605的大小(如由圖5的計時器510量測)可變化,此取決於圖1的機器105投入的用途。舉例而言,考慮兩個機器,兩個機器皆具有按時間單位發出的相同平均數目的命令,但具有廣泛變化的標準差。具有數個命令的小標準差的機器將使其命令相當均勻地跨越時間分佈,此意謂較小視窗605將有可能擷取命令的代表性樣本。另一方面,具有數個命令的大標準差的機器可具有相對低活動性與高活動性的混合間隔。若視窗605是狹窄視窗且將擷取相對低活動性的時間段,則對彼等命令的統計分析可能無法整體上表示機器上的工作負荷。因此,視窗605將需要成為比具有數個命令的小標準差的機器上使用的視窗相對更大的視窗。
視窗605可以是滑動視窗抑或離散視窗。顧名思義,滑動視窗是四處滑動的視窗。通常,滑動視窗涵蓋固定的時間間隔,且隨時間流逝而在時間上前進。舉例而言,滑動視窗可在時間T0 時開始。滑動視窗可保持打開直至時間T1 為止。在時間T1 時開始的情況下,視窗可前進以使得視窗始終在當前時間時結束。隨著滑動視窗前進,新資訊可進入視窗,且滑動視窗的開始處的資訊(亦即,最接近時間T0 的資訊)可退出視窗。
另一方面,離散視窗在時間上涵蓋固定間隔,且不移動。舉例而言,離散視窗可在時間T0 至時間T1 的間隔內收集統計;一旦到達時間T1 ,則對彼視窗的統計的收集結束(但新視窗可在任何時間,諸如時間T1 時開始)。
統計收集器515可收集關於任何所要準則的統計。在7圖中展示實例準則。準則705的實例可包含: · 頻率710:在圖6的視窗605期間發出了多少與特定軟體串流相關聯的命令(讀取、寫入或兩者)。具有較高數目個命令的軟體串流將比具有較低數目個命令的軟體串流具有更高的分級。 · 累積資料大小715:在圖6的視窗605期間針對特定軟體串流寫入了多少資料。具有較大累積資料大小的軟體串流將比具有較小累積資料大小的軟體串流具有更高的分級。 · 依序寫入的數目720:在圖6的視窗605期間在特定軟體串流內出現了對依序(或經依序圖案化)邏輯區塊位址(logical block address;LBA)的多少寫入。具有較高數目個依序寫入的軟體串流將比具有較低數目個依序寫入的軟體串流具有更高的分級。 · 服務品質725:特定軟體串流是否已請求特定服務品質(特定服務品質可給予彼軟體串流先於其他軟體串流的優先級)。不同服務品質特性的實例可存在於2016年5月27日申請的美國專利申請案第15/167,974號中,所述美國專利申請案主張2016年3月16日申請的美國臨時專利申請案第62/309,446號的權益,所述專利申請案兩者皆出於所有目的而以引用的方式併入本文中。具有較高服務品質要求的軟體串流將比具有較低服務品質要求的軟體串流具有更高的分級。 · 閒置時間730:對於特定軟體串流的命令之間耗費多久時間。具有較短閒置時間的軟體串流將比具有較長閒置時間的軟體串流具有更高的分級。
圖5的統計收集器515可以任何所要方式收集統計。舉例而言,當圖6的視窗605是離散視窗時,圖5的統計收集器515可在圖6的視窗605開始處將所有統計重設成零。接著,當遇到觸發串流的統計的改變的命令時,圖5的統計收集器515可在適當時調整統計。
舉例而言,考慮將頻率710用作準則。只要接收到命令,則圖5的統計收集器515可判定命令與何種軟體串流相關聯。圖5的統計收集器515可接著遞增彼軟體串流的頻率計數器(值)。圖5的統計收集器515可收集其他準則的類似值:將針對累積資料大小715寫入的資料量求和,針對依序寫入的數目720對依序寫入的數目進行計數,針對服務品質725指派值以表示特定服務品質,或將特定軟體串流在閒置時間730內不具有待決命令期間的時間量求和。
另一方面,若圖6的視窗605是滑動視窗,則圖5的統計收集器515可在命令進入及退出圖6的視窗605時調整統計。再次將頻率710用作實例,當與特定軟體串流相關聯的命令進入圖6的視窗605時,圖5的統計收集器515可遞增與彼軟體串流相關聯的計數器,且當與特定軟體串流相關聯的命令退出圖6的視窗605時,圖5的統計收集器515可遞減與彼軟體串流相關聯的計數器。以彼方式,由圖5的統計收集器515收集的統計可始終表示圖6的視窗605中的餓命令。圖5的統計收集器515可針對其他準則而類似地操作。
在本發明概念的一些實施例中,當視窗605是離散視窗時,可使用視窗605的當前統計來建立映射425,即使在視窗605仍打開的情況下亦如此(且因此並未出於統計目的而處理了所有命令405-1至405-k )。但在本發明概念的其他實施例中,在一個視窗期間產生的統計實際上用以在視窗605關閉之後在一段時間內建立映射425。因此,若視窗605用以在自時間T0 至時間T1 的時間跨度期間收集統計,則彼等統計可用以針對在時間T1 之後接收到的命令405-1至405-k 而建立映射425。若離散視窗605是重複的離散視窗——亦即,視窗605具有固定大小,且當一個視窗關閉且另一視窗自動地打開時,則在每一視窗中收集到的統計用以針對下一視窗而建立映射425。因此,舉例而言,時間T0 與及時間T1 之間收集到的統計可用以在時間T1 與及時間T2之間產生映射425,時間T1 與及時間T2之間收集到的統計可用以在時間T2 與及時間T3之間產生映射425,等等。
在本發明概念的其他實施例中,當視窗605是離散視窗時,圖5的統計收集器515進行操作以僅在受到機器105的使用者的機器105指令時收集統計。亦即,可針對新統計收集而手動地打開視窗605。一旦收集到新統計,則可產生映射425,隨後無限保持映射425直至圖3的主機介面邏輯305接收到產生新映射425的指令為止,隨後打開新視窗605,且圖5的統計收集器515基於在新視窗605期間接收到的命令而收集新統計。
當視窗605是滑動視窗時,可按任何所要排程調整映射425。舉例而言,每當由圖5的統計收集器515收集到的統計改變時,可改變映射425。舉例而言,每當命令進入視窗605時,可遞增對應應用程式指派的串流ID的圖7的頻率710,且每當命令退出視窗605時,可遞減對應應用程式指派的串流ID的圖7的頻率710。或者,可按某些間隔(例如在時間T1 或其倍數時)調整映射425。本發明概念的實施例可支援根據任何其他所要排程而更新映射425。
不論視窗605是滑動視窗還是離散視窗,可能會出現關於如何在初始視窗605期間處置軟體串流410-1至410-n至裝置串流420-1至420-m的映射的問題。在初始視窗605期間,當先前尚未收集到統計時,可使用任何映射(這是因為任何預定映射不大可能將在所有情境下最佳)。但一旦圖5的統計收集器515已收集到一些統計,則有可能產生用於將來命令的映射425。
返回至圖5,一旦已針對視窗605收集到統計,則分級器520可使用彼等統計以對圖4的軟體串流410-1至410-n 進行分級。通常,較低值將引起較高分級,但本發明概念的實施例可支援指示較高分級的較高值。對於給定準則,應用程式指派的串流ID可根據彼準則的其值的經分類位置而指派分級。舉例而言,若頻率705用作準則,則具有最高頻率的應用程式指派的串流ID可指派給分級1,具有第二最高頻率的應用程式指派的串流ID可指派給分級2,等等,直至具有最低頻率的應用程式指派的串流ID。進一步參考下文的表1至表2而論述分級。一旦圖4的軟體串流410-1至410-n 已分級,則映射器525可將圖4的軟體串流410-1至410-n 至裝置串流420-1至420-m
映射器525可藉由將圖4的軟體串流410-1至410-n 劃分成兩個子集來產生圖4的映射425。第一子集中的軟體串流可在一對一映射中指派給裝置串流;第二子集中的軟體串流可全部指派給單個合併裝置串流。換言之,第一子集中的軟體串流被指派唯一裝置串流,而第二子集中的軟體串流全部共用單個裝置串流。由於第二子集中的所有軟體串流共用單個裝置串流,因此意謂著第一子集可包含多達m -1個軟體串流,其中m是由圖1的SSD 120支援的圖4的裝置串流420-1至420-m 的數目。
可基於如由分級器520判定的圖4的軟體串流410-1至410-n 的等級而判定圖4的軟體串流410-1至410-n 的子集。舉例而言,假定存在由圖1的SSD 120支援的圖4的m 個裝置串流420-1至420-m ,則m -1個最高分級軟體串流(如根據選定的準則所分級)可包含於第一子集中,且所有較低分級軟體串流可包含於第二子集中。此分配引起具有最高分級的軟體串流各自被指派唯一裝置串流,且所有最低分級軟體串流共用合併裝置串流。
m -1個特定軟體串流可不經識別為包含於第一子集中時(例如在存在分級m -1的連結的情況下),任何所要解析度可用以選擇第一子集的最終軟體串流(這是因為選擇全部具有相等分級)。舉例而言,假定對於最高分級(在不大可能的情況下有可能的情境)存在全部連結的m 個軟體串流。由於m 個軟體串流全部具有相等分級,因此可針對第一子集選擇m 個軟體串流中的任何m -1個,其中一個未經選擇的串流變成第二子集的部分(且因此歸入共用合併裝置串流)。
若所有裝置串流皆相等,則哪一裝置串流用作第二子集中的軟體串流的合併串流或第一子集中的m -1個軟體串流如何映射至m -1個裝置串流沒有差別。但若裝置串流是可區分的,則映射可能重要。舉例而言,最高優先權裝置串流可用作合併裝置串流(這是因為跨越任何數目個軟體串流共用裝置串流),且剩餘裝置串流可基於所使用準則(最高分級軟體串流接收可用的最高優先級裝置串流,第二最高分級軟體串流接收可用的第二最高優先權裝置串流等等)來根據其分級而指派給第一子集中的軟體串流。或者,由於合併裝置串流根據準則而在具有低分級的任何數目個軟體串流當中被共用,因此可將合併裝置串流選擇為可用的最低優先級裝置串流,其中第一子集中的軟體串流根據根據準則的軟體串流的分級而映射至最高優先級裝置串流。本發明概念的實施例可支援自軟體串流至裝置串流的任何所要映射技術。
雖然以上描述建議僅一個裝置串流作為合併裝置串流操作,但本發明概念的其他實施例是有可能的。舉例而言,可能存在用作合併裝置串流的多個裝置串流。本發明概念的此實施例可在以下情況下是有用的:圖4的軟體串流410-1至410-n 的數目極大地超出圖4的裝置串流420-1至420-m 的數目:將圖4的大部分軟體串流410-1至410-n 合併成單個合併裝置串流可引起所有彼等軟體串流的不佳效能。藉由使用多個合併裝置串流,可增強合併的軟體串流的效能(但以降低可被指派唯一裝置串流的軟體串流的數目為代價)。
可使用任何所要機制來判定多少裝置串流用作合併裝置串流。舉例而言,當將圖7的頻率710用作準則時,可設定待指派給單個合併裝置串流的軟體串流的數目的上限。若第二子集中的軟體串流的數目大於此上限,則額外裝置串流可用作合併裝置串流:需將指派給任何合併裝置串流的軟體串流的數目保持為低於此上限。可應用使用圖7的其他準則705的相同概念。舉例而言,當將圖7的累積資料大小715用作準則時,可指派將使用單個合併裝置串流寫入的累積資料的量的上限。或者,當將圖7的服務品質725用作準則時,可(例如,基於圖6的視窗605的持續時間)針對任何合併裝置串流而設定最大總潛時。若指派給合併裝置串流的命令的總數目將意謂合併裝置串流的總潛時大於此最大總潛時,則可使用額外合併裝置串流。
另外,可選擇任何所要裝置串流以用作合併裝置串流。舉例而言,由於合併裝置串流可處理與任何數目個軟體源相關聯的命令,因此預計合併裝置串流將比處理與單個軟體串流相關聯的命令的其他裝置串流具有更多命令是合理的。因此,將具有較高優先級的裝置串流選作合併裝置串流可以是有利的(以補償以下事實:在處理命令上,合併裝置串流可比處理與僅一個軟體串流相關聯的命令的裝置串流相對更慢)。此選擇可在串流提供QoS保證時尤其有利(儘管QoS可能不是將較高優先級裝置串流選擇為合併裝置串流的唯一原因)。
亦有可能混合準則。舉例而言,儘管用以對圖4的映射425的串流進行分級的準則可使用閒置時間730,但用以判定將使用多少合併裝置串流的準則可以是在視窗605期間指派給合併裝置串流的命令的最大數目。本發明概念的實施例可支援對用以判定將使用多少合併裝置串流的任何準則的使用。(亦有可能使用多個準則來對軟體串流410-1至410-n 進行分級,如下文參考下文的圖8至圖9B所描述)。
如上文所提及,本發明概念的實施例可實施於圖3的主機介面邏輯305內。在本發明概念的此類實施例中,實施是在圖1的SSD 120內。由於SSD 120可直接管理圖4的映射425,因此知曉特定軟體串流應指派給哪一裝置串流不存在難度。在本發明概念的此類實施例中,不需要傳輸器530及裝置串流標識符(ID)新增器535。(技術上,主機介面邏輯305可包含傳輸器530以將資訊傳輸返回至請求資料的應用程式或作業系統執行緒,但傳輸器530將在圖1的SSD 120內作為習知傳輸器操作。)
但當本發明概念的實施例實施於圖1的記憶體控制器125、圖1的儲存控制器130中或實施為庫常式時,圖1的SSD 120未必能夠存取圖4的映射425。在本發明概念的一些實施例中,傳輸器530可傳輸圖4的映射425,以使得圖1的SSD 120可執行如由映射器525判定的映射。但本發明概念的其他實施例可向圖1的SSD 120告知應藉由使用裝置串流ID新增器535來將特定命令指派給哪一裝置串流,而非將圖4的映射425發送至圖1的SSD 120。裝置串流ID新增器535可包含指定圖4的相關聯裝置串流420-1至420-m 的額外標籤,其類似於圖4的標籤415。以彼方式,圖1的SSD 120可知曉將使用圖4的哪一裝置串流420-1至420-m 來處理特定命令。
不論本發明概念的實施例在何處實施,可自動地抑或手動地再生圖4的映射425。舉例而言,可在命令進入及退出圖6的視窗605時更新圖4的映射425,進入及退出影響關於軟體串流410-1至410-n 的統計,此又可觸發圖4的映射425的自動再生。或者,若圖6的視窗605是按有規律間隔使用的離散視窗,則只要圖6的離散視窗605關閉,則圖4的映射425可自動地再生以反映由統計收集器515收集到的新統計。
另一方面,可保持圖4的映射425直至觸發了手動再生為止。為了達成手動再生,圖3的主機介面邏輯305、圖1的記憶體控制器125、圖1的儲存控制器130或庫常式可包含支援以接收觸發手動再生、清除統計以及收集新統計的命令。用以處理此等命令的支援可以韌體(圖3的主機介面邏輯305中未展示)或以軟體(圖1的記憶體控制器125、圖1的儲存控制器130或庫常式中)予以實施。
圖8展示圖5的分級器520的細節。如上文所描述,分級器520可基於所選準則而對軟體串流410-1至410-n 進行分級。在圖8中,分級器520展示為包含準則805、臨限值810以及比較器815。準則805可識別將用於對軟體串流進行分級的準則。若圖5的統計收集器515僅針對單個準則收集統計,則分級器520可不需要知曉使用了哪一準則,在此狀況下可省略準則805,此乃準則805以虛線展示的原因。但即使圖5的統計收集器515僅針對單個準則收集統計,分級器520亦可需要知曉使用了哪一準則,這是因為此資訊可影響分級次序。舉例而言,圖7的頻率710將建議對應較高 頻率的軟體串流的較高分級;但圖7的閒置時間730將建議對應較小 閒置時間的軟體串流的較高分級。
若分級器520僅使用單個準則來操作,則所有分級器520需要按次序置放圖4的軟體串流410-1至410-n ,此取決於對應於每一軟體串流的準則的值。但分級器520可使用多於一個準則來對圖4的軟體串流410-1至410-n 進行分級。
在本發明概念的一個實施例中,分級器520可使用兩個(或更多個)準則以對圖4的軟體串流410-1至410-n 進行分級。在本發明概念的此實施例中,分級器520可包含臨限值810及比較器815。可在值超出臨限值810時使用一個準則;可在第一準則的值不超出臨限值810時使用另一準則。比較器815可用以判定哪一準則將用於對軟體串流進行分級。
圖9A說明此程序。在圖9A中,比較器815可接收臨限值810及用以對圖4的軟體串流410-1至410-n 進行分級的兩個準則的值905-1及905-2。比較器815可接著比較臨限值810與值905-1(在此處任意地選作與臨限值810相關聯的準則的值)。若值905-1大於臨限值810,則比較器815可選擇值905-1(選作所選值910)以供用來對圖4的軟體串流410-1至410-n 進行分級。
實例可有助於在此情境下說明圖5的分級器520的操作。假定所選的第一準則是圖7的累積資料大小715,且第二準則是圖7的頻率710。進一步假定圖4的軟體串流410-1至410-n 產生下文在表1中展示的此等準則的統計。 1
若臨限值810設定成1 MB,則四個軟體串流將以下次序分級:4、1、3以及2。軟體串流1及4各自具有超出1 MB的累積資料大小,且軟體串流4具有更大的累積資料大小(以下事實不相關:軟體串流1比軟體串流4具有更多相關聯命令)。另一方面,軟體串流2及3具有小於1 MB的累積資料大小,因此此等串流基於其頻率而分級:軟體串流3具有更多相關聯命令,而不管寫入最小累積資料,且因此軟體串流3的分級高於軟體串流2的分級。
雖然以上論述以使用兩個準則為中心,但本發明概念的實施例可支援使用任何數目個準則來判定軟體串流的最終分級。亦即,第一準則可用以對其彼準則的值超出第一臨限值的軟體串流進行分級,接著,若剩餘軟體串流的第二準則的值大於第二臨限值,則第二準則可用以對剩餘軟體串流(亦即,其第一準則的值並不超出第一臨限值的彼等軟體串流)進行分級,等等。另外,雖然此描述集中於具有超出特定臨限值的值的軟體串流,但本發明概念的實施例可支援出於分級目的而將一或多個臨限值用作上限(而非下限)。舉例而言,若閒置時間例如小於100 ms,則圖7的閒置時間730可用作分級準則,同時圖7的頻率710用作其閒置時間是至少100 ms的軟體串流的分級準則。
返回至圖8,在本發明概念的另一實施例中,分級器520可藉由執行加權和來使用多個準則。在本發明概念的此實施例中,分級器520可包含算術邏輯單元(arithmetic logic unit;ALU)820及加權825-1至825-l 。加權825-1至825-l 可表示待應用於包含於加權和中的每一單獨準則的加權,且ALU 820可執行計算加權和需要的算術。換言之,加權825-1至825-l 指示所述用來計算加權和的準則的相對重要性。當愈低的分級指示愈高的重要性時,加權825-1至825-l 可類似地使用更小值以指示加權和中的彼準則的更高重要性。
為了計算加權和,分級器520可首先單獨地根據每一準則而對圖4的軟體串流410-1至410-n 進行分級。接著加權可乘以每一軟體串流的分級以產生最終加權和。應注意,由於愈低的數字指示愈高的分級(分級1是最高分級),因此應使用更小的加權以指示更重要的準則。加權825-1至825-l 共計1.0是有幫助的(但不需要)。應注意,根據單個準則而對圖4的軟體串流410-1至410-n 進行分級相當於根據多個準則而對圖4的軟體串流410-1至410-n 進行分級,但其中加權825-1至825-l 中僅一者具有正非零值,且所有其他加權825-1至825-l 具有零值。應注意,加權和可能不會產生整數結果:此結果是可接受的,這是因為加權和的結果接著再次經分級以產生圖4的軟體串流410-1至410-n 的最終分級。
圖9B說明此程序。在圖9B中,圖8的ALU 820可接收用以對圖4的軟體串流410-1至410-n 進行分級的兩個準則的值905-1及905-2,連同加權825-1及825-2。圖8的ALU 820可接著將所選值910作為值905-1與加權825-1的乘積計算,與值905-2與加權910-2的乘積相加。所選值910接著變成用來對圖4的軟體串流410-1至410-n 進行分級的值。
再次,實例可有助於在此情境下說明圖5的分級器520的操作。假定所選的第一準則是圖7的累積資料大小715,且第二準則是圖7的頻率710。進一步假定圖4的軟體串流410-1至410-n 產生下文在表2中展示的此等準則的統計。 2
為了簡單化,在表2中分別相對於其累積資料大小及頻率而展示了四個軟體串流的分級。
應注意,若與圖7的累積資料大小715相關聯的加權設定成1且與圖7的頻率710相關聯的加權設定成0,則分級將是如標籤為分級1的行中所展示;若此等加權互換,則分級將是如標籤為分級2的行中所展示。
現在,假定累積資料大小被視為比頻率重要3倍。所得加權可接著對於累積資料大小是0.25,且對於頻率是0.75(前已述及,這是因為數字愈低意謂分級愈高,權重的值愈小意謂顯著性愈大)。軟體串流的分級的加權和將分別是1.25、3、2.5以及3.25,此將意謂軟體串流將按在以下次序分級:1、3、2以及4。應注意,此與標籤為分級2的行是相同分級,但此事實是巧合。
圖8至圖9B解釋如何使用兩個準則來執行分級。本發明概念的實施例可支援藉由對所展示程序的簡單一般化使用多於兩個準則。舉例而言,圖8的加權825-1至825-l 中的三者或多於三者可被給定非零值,或可設定圖8的多個臨限值810以判定應在對圖4的軟體串流410-1至410-n 進行分級時使用哪一準則。
圖10A至圖10B展示根據本發明概念的實施例的用於產生圖4的映射425的實例程序的流程圖。在圖10A中,在區塊1005處,圖3的主機介面邏輯305可識別待使用的圖6的視窗605以收集關於圖4的軟體串流410-1至410-n 的統計。(在下文的圖10A至圖13中,對圖3的主機介面邏輯305的任何引用可由對圖1的記憶體控制器125或圖1的儲存控制器130的引用替換,此取決於本發明概念的實施例在何處實施)。在區塊1010處,主機介面邏輯305可接收圖4的多個命令405-1至405-k ,可在圖6的視窗605打開時接收到所述多個命令中的一些。在區塊1015處,統計收集器515可基於圖4的多個命令405-1至405-k (至少是在圖6的視窗605打開時接收到的彼等命令)而判定圖7的準則705的值。
在區塊1020處,圖5的分級器520可基於由圖5的統計收集器515判定的值而識別圖4的軟體串流410-1至410-n 的子集。在區塊1025處,圖5的映射器525可產生圖4的映射425,從而將圖4的軟體串流410-1至410-n 映射至圖4的裝置串流420-1至420-m
在區塊1030處,圖3的主機介面邏輯305可接收圖4的額外命令405-1至405-k 。在區塊1035處,圖5的映射器525可使用圖4的映射425來將圖4的彼等額外命令405-1至405-k 中的每一者指派給圖4的裝置串流420-1至420-m
在區塊1040(圖10B)處,圖1的SSD 120可使用圖4的經指派裝置串流420-1至420-m 來處理圖4的額外命令405-1至405-k 。在區塊1045處,圖1的SSD 120可返回處理圖4的此等額外命令405-1至405-k 的結果。
在區塊1050處,圖3的主機介面邏輯305可判定其是否應自動地再生圖4的映射425(這是因為圖6的視窗605是滑動視窗抑或因為SSD 120已經組態以在圖6的有規律離散視窗605中反覆地收集新統計)。若是,則控制可返回至圖10A的區塊1005以重新開始產生圖4的映射425的程序。否則,在區塊1055處,圖3的主機介面邏輯305可判定其是否已接收再生映射的命令,如可由圖1的機器105或圖1的機器105的使用者發出。若是,則控制可返回至圖10A的區塊1005以重新開始產生圖4的映射425的程序。否則,在區塊1060處,圖3的主機介面邏輯305可保持圖4的映射425,隨後處理可返回至圖10A的區塊1030(或替代地,若將不會接收到圖4的額外命令405-1至405-k ,則處理可僅在此時結束)。
圖11展示根據本發明概念的實施例的圖5的統計收集器515判定圖7的準則705的值的實例程序的流程圖。在圖11中,在區塊1105處,圖5的統計收集器515可在命令進入及退出圖6的視窗605時調整圖4的軟體串流410-1至410-n 的值。亦即,當命令進入圖6的視窗605時,圖5的統計收集器515可增大圖4的軟體串流410-1至410-n 的值,且當命令退出圖6的視窗605時,圖5的統計收集器515可減小圖4的軟體串流410-1至410-n 的值。
替代地,在區塊1110處,圖5的統計收集器515可重設圖4的軟體串流410-1至410-n 的值。接著在區塊1115處,圖5的統計收集器515可通過圖6的視窗605收集圖4的軟體串流410-1至410-n 的新統計。
圖12展示根據本發明概念的實施例的圖5的分級器520判定圖4的哪些軟體串流410-1至410-n 將映射至圖4的哪些裝置串流420-1至420-m 的實例程序的流程圖。在圖12中,在區塊1205處,圖5的分級器520可根據由圖5的統計收集器515收集到的統計而對圖4的軟體串流410-1至410-n 進行分級。在區塊1210處,圖5的分級器520可針對各種準則而判定圖8的加權825-1至825-l 。在區塊1215處,分級器520可使用初始分級及圖8的加權825-1至825-l 來判定圖4的軟體串流410-1至410-n 的最終分級。如由虛線1220展示,可省略區塊1210及1215;而且,如上文參考圖8所論述,若圖8的僅一個加權825-1至825-l 經給定正非零值,則可甚至藉由區塊1210及1215有效地實現根據單個準則的分級。
替代地,若圖5的分級器520使用圖8的臨限值810及比較器815,則在區塊1225處,圖5的分級器520可針對第一準則(且針對額外準則,在使用圖8的多於一個臨限值810的情況下)判定圖8的臨限值810。在區塊1230處,可根據其第一準則的值超出圖8的臨限值810的軟體串流的第一準則而對圖4的軟體串流410-1至410-n 進行分級。在區塊1235處,可根據其第一準則的值並不超出圖8的臨限值810的軟體串流的第二準則而對圖4的軟體串流410-1至410-n 進行分級。
不論圖5的分級器520如何達成最終分級,在區塊1240處,圖5的分級器520針對第一子集而選擇最高分級軟體串流,且在區塊1245處圖5的分級器520針對第二子集而選擇所有剩餘軟體串流。
圖13展示根據本發明概念的實施例的圖5的映射器525將圖4的軟體串流410-1至410-n 映射至圖4的裝置串流420-1至420-m 的實例程序的流程圖。在圖13中,在區塊1305處,圖5的映射器525可將第一子集中的每一軟體串流映射至唯一裝置串流。在區塊1310處,圖5的映射器525可將第二子集中的每一軟體串流映射至合併裝置串流。如上文參考圖5所描述,視需要,可能存在多於一個合併裝置串流。
在圖10A至圖13中,展示了本發明概念的一些實施例。然而,所屬領域中具通常知識者將認識到,藉由改變區塊的次序、藉由省略區塊或藉由包含圖式中未展示的鏈路,本發明概念的其他實施例亦是有可能的。流程圖的所有此等變化被視為本發明概念的實施例,無論是否明確地描述。
以下論述意欲提供對合適機器或可實施本發明概念的某些態樣的機器的簡要的大體描述。可至少部分地由來自諸如鍵盤、滑鼠等習知輸入裝置的輸入以及由自另一機器(與虛擬現實(virtual reality;VR)環境相互作用)接收的指引、生物測定回饋或其他輸入信號來控制機器。如本文中所使用,術語「機器」意欲廣泛地涵蓋單個機器、虛擬機器,或通信耦接機器、虛擬機器或共同操作的裝置的系統。例示性機器包含計算裝置,諸如個人電腦、工作站、伺服器、攜帶型電腦、手持型裝置、電話、平板電腦等等;以及運輸裝置,諸如私用或公共交通,例如汽車、火車、出租車等等。
機器可包含嵌入式控制器,諸如可程式化或非可程式化邏輯裝置或陣列、特殊應用積體電路(Application Specific Integrated Circuit;ASIC)、嵌入式電腦、智慧卡以及類似物。機器可利用至一或多個遠端機器的一或多個連接,諸如經由網路介面、數據機或其他通信耦接。可藉助於實體及/或邏輯網路(諸如企業內部網路、網際網路、局域網路、廣域網路等)互連機器。所屬領域中具通常知識者將瞭解,網路通信可利用各種有線及/或無線的短程或長程載體及協定,包含射頻(radio frequency;RF)、衛星、微波、電機電子工程師學會(Institute of Electrical and Electronics Engineers;IEEE)802.11、Bluetooth® 、光學、紅外線、纜線、雷射等。
可藉由參考或結合相關聯資料來描述本發明概念的實施例,所述資料包含功能、程序、資料結構、應用程式等,其在由機器存取時使得機器執行任務或定義抽象的資料類型或低級硬體上下文。相關聯資料可儲存於例如揮發性及/或非揮發性記憶體,例如RAM、ROM等中,或儲存於其他儲存裝置及其相關聯儲存媒體中,包含硬碟機、軟碟、光學儲存器、磁帶、快閃記憶體、記憶棒、數位視訊磁碟、生物儲存器等。可以封包、串列資料、並列資料、經傳播信號等的形式經由傳輸環境,包含實體及/或邏輯網路傳遞相關聯資料,且可以壓縮或加密格式使用相關聯資料。相關聯資料可用於分散式環境中,且儲存於本端及/或遠端以用於機器存取。
本發明概念的實施例可包含有形的非暫時性機器可讀媒體,其包括可由一或多個處理器執行的指令,所述指令包括用以執行如本文中所描述的本發明概念的要素的指令。
已參考所說明的實施例描述及說明本發明概念的原理,將認識到,所說明的實施例可修改配置及細節而不會脫離此類原理,且可以任何所要方式組合。又,儘管前述論述已集中於特定實施例,但涵蓋其他組態。特定而言,儘管本文中使用諸如「根據本發明概念的實施例」或類似者的表達,但此等片語通常意欲大體上參考實施例可能性,且並不意欲將本發明概念限制於特定實施例組態。如本文中所使用,此等術語可參考組合至其他實施例中的相同或不同實施例。
前述說明性實施例並不應被解釋為限制其發明概念。儘管已描述了幾個實施例,但所屬領域中具通常知識者將易於瞭解,在不實質上脫離本揭露內容的新穎教示及優點的情況下,對彼等實施例的許多修改是可能的。因此,所有此等修改皆意欲包含於如在申請專利範圍中定義的本發明概念的範疇內。
本發明概念的實施例可非限制性地延伸至以下敍述: 敍述1. 本發明概念的實施例包含一種固態式硬碟(SSD),其包括: 快閃記憶體,其用以儲存資料; 所述SSD中的對多個裝置串流的支援; SSD控制器,其用以回應於多個命令而管理自所述快閃記憶體讀取資料及將資料寫入至所述快閃記憶體;以及 主機介面邏輯,其包含: 接收器,其用以自主機接收所述多個命令,所述多個命令與多個軟體串流相關聯; 計時器,其用以對視窗進行計時; 統計收集器,其用以回應於所述多個命令而在所述視窗期間判定所述多個軟體串流中的每一者的至少一個準則的至少一個值; 分級器,其用以根據所述多個軟體串流中的每一者的所述至少一個準則的所述至少一個值而對所述多個軟體串流進行分級;以及 映射器,其用以建立映射,所述映射可操作以將所述多個軟體串流的第一子集中的每一軟體串流映射至所述SSD中的所述多個裝置串流中的唯一裝置串流,及將所述多個軟體串流的第二子集中的所有所述軟體串流映射至所述SSD中的所述多個裝置串流中的合併裝置串流。 敍述2. 本發明概念的實施例包含如敍述第1項所述的SSD,其中: 所述多個命令中的每一者包含識別所述多個軟體串流中的對應一者的軟體串流標識符(ID)標籤,可回應於所述映射而將對應裝置串流指派至所述多個裝置串流;且 所述多個命令中的每一者的結果包含識別所述多個軟體串流中的所述對應一者的所述軟體串流ID標籤。 敍述3. 本發明概念的實施例包含如敍述第1項所述的SSD,其中所述SSD可操作以自所述多個軟體串流接收額外多個命令,及根據所述映射而將所述額外多個命令指派至所述多個裝置串流。 敍述4. 本發明概念的實施例包含如敍述第1項所述的SSD,其中: 所述視窗是滑動視窗;且 所述統計收集器可操作以在所述多個命令中的每一者進入及退出所述視窗時在所述視窗內調整所述至少一個準則的所述至少一個值。 敍述5. 本發明概念的實施例包含如敍述第1項所述的SSD,其中所述視窗是離散視窗。 敍述6. 本發明概念的實施例包含如敍述第5項所述的SSD,其中: 所述主機介面邏輯可操作以保持所述映射直至另外受到指令為止;且 所述接收器進一步可操作以接收將所述多個軟體串流重新映射至所述多個裝置串流的命令。 敍述7. 本發明概念的實施例包含如敍述第5項所述的SSD,其中所述主機介面邏輯可操作以針對多個依序離散視窗而將所述多個軟體串流迭代地重新映射至所述多個裝置串流。 敍述8. 本發明概念的實施例包含如敍述第1項所述的SSD,其中: 所述多個軟體串流的所述第一子集包含具有最高分級的數個軟體串流,其中具有最高分級的軟體串流的數目比所述多個裝置串流的數目小了一;且 所述多個軟體串流的所述第二子集包含不包含於所述多個軟體串流的所述第一子集中的所有軟體串流。 敍述9. 本發明概念的實施例包含如敍述第1項所述的SSD,其中所述統計收集器可操作以判定所述多個軟體串流中的每一者的第一準則的第一值及第二準則的第二值。 敍述10. 本發明概念的實施例包含如敍述第9項所述的SSD,其中: 所述分級器包含所述第一準則的第一加權及所述第二準則的第二加權;且 所述分級器可操作以根據所述第一值的使用所述第一加權的第一分級與所述第二值的使用所述第二加權的第二分級的加權和而對所述多個軟體串流進行分級。 敍述11. 本發明概念的實施例包含如敍述第9項所述的SSD,其中: 所述分級器包含所述第一準則的臨限值;且 所述分級器可操作以根據其第一值大於所述第一準則的所述臨限值的軟體串流的第一準則且根據其第一值小於所述第一準則的所述臨限值的軟體串流的第二準則而對所述多個軟體串流進行分級。 敍述12. 本發明概念的實施例包含一種供在電腦系統中使用的驅動器,其包括: 接收器,其用以自主機接收多個命令,所述多個命令與多個軟體串流相關聯; 計時器,其用以對視窗進行計時; 統計收集器,其用以回應於所述多個命令而在所述視窗期間判定所述多個軟體串流中的每一者的至少一個準則的至少一個值; 分級器,其用以根據所述多個軟體串流中的每一者的所述至少一個準則的所述至少一個值而對所述多個軟體串流進行分級; 映射器,其用以建立映射,所述映射可操作以將所述多個軟體串流的第一子集中的每一軟體串流映射至固態式硬碟(SSD)中的多個裝置串流中的唯一裝置串流,及將所述多個軟體串流的第二子集中的所有所述軟體串流映射至所述SSD中的所述多個裝置串流中的合併裝置串流; 裝置串流標識符(ID)新增器,其用以新增對應於與所述多個命令中的每一者相關聯的軟體串流的裝置串流的裝置串流ID至額外多個命令中的每一者;以及 傳輸器,其用以將所述額外多個命令中的每一者傳輸至所述SSD。 敍述13. 本發明概念的實施例包含如敍述第12項所述的驅動器,其中所述驅動器可操作以自所述多個軟體串流接收額外多個命令,及根據所述映射而將所述額外多個命令指派至所述多個裝置串流。 敍述14. 本發明概念的實施例包含如敍述第12項所述的驅動器,其中: 所述視窗是滑動視窗;且 所述統計收集器可操作以在所述多個命令中的每一者進入及退出所述視窗時在所述視窗內調整所述至少一個準則的所述至少一個值。 敍述15. 本發明概念的實施例包含如敍述第12項所述的驅動器,其中所述視窗是離散視窗。 敍述16. 本發明概念的實施例包含如敍述第15項所述的驅動器,其中: 所述驅動器可操作以保持所述映射直至另外受到指令為止;且 所述接收器可操作以接收將所述多個軟體串流重新映射至所述多個裝置串流的命令。 敍述17. 本發明概念的實施例包含如敍述第15項所述的驅動器,其中所述驅動器可操作以針對多個依序離散視窗而將所述多個軟體串流迭代地重新映射至所述多個裝置串流。 敍述18. 本發明概念的實施例包含如敍述第12項所述的驅動器,其中: 所述多個軟體串流的所述第一子集包含具有最高分級的數個軟體串流,其中具有最高分級的軟體串流的數目比所述多個裝置串流的數目小了一;且 所述多個軟體串流的所述第二子集包含不包含於所述多個軟體串流的所述第一子集中的所有軟體串流。 敍述19. 本發明概念的實施例包含如敍述第12項所述的驅動器,其中所述統計收集器可操作以判定所述多個軟體串流中的每一者的第一準則的第一值及第二準則的第二值。 敍述20. 本發明概念的實施例包含如敍述第19項所述的驅動器,其中: 所述分級器包含所述第一準則的第一加權及所述第二準則的第二加權;且 所述分級器可操作以根據所述第一值的使用所述第一加權的第一分級與所述第二值的使用所述第二加權的第二分級的加權和而對所述多個軟體串流進行分級。 敍述21. 本發明概念的實施例包含如敍述第19項所述的驅動器,其中: 所述分級器包含所述第一準則的臨限值;且 所述分級器可操作以根據其第一值大於所述第一準則的所述臨限值的軟體串流的第一準則且根據其第一值小於所述第一準則的所述臨限值的軟體串流的第二準則而對所述多個軟體串流進行分級。 敍述22. 本發明概念的實施例包含一種方法,其包括: 接收與多個軟體串流相關聯的多個命令,將使用包含多個裝置串流的固態式硬碟(SSD)來處理所述多個命令; 回應於所述多個命令而判定所述多個軟體串流中的每一者的至少一個準則的至少一個值; 回應於所述至少一個準則的所述至少一個值而識別所述多個軟體串流的第一子集及第二子集; 產生映射,所述映射可操作以將所述多個軟體串流的所述第一子集中的每一軟體串流映射至所述SSD中的所述多個裝置串流中的唯一裝置串流,及將所述多個軟體串流的所述第二子集中的所有所述軟體串流映射至所述SSD中的所述多個裝置串流中的合併裝置串流; 在產生所述映射之後接收與所述多個軟體串流相關聯的第二多個命令; 回應於所述映射而將所述第二多個命令中的每一者指派至所述多個裝置串流中的一者;以及 使用所述所指派裝置串流而處理所述SSD上的所述第二多個命令中的每一者。 敍述23. 本發明概念的實施例包含如敍述第22項所述的方法,其另外包括回應於對與所述多個軟體串流相關聯的所述多個命令的所述處理而返回來自所述SSD的結果。 敍述24. 本發明概念的實施例包含如敍述第22項所述的方法,其中: 與所述多個軟體串流相關聯的所述多個命令中的每一者包含軟體串流標識符(ID)標籤;且 來自所述SSD的所述結果中的每一者包含來自與所述多個軟體串流相關聯的的所述多個命令中的對應一者的軟體串流ID標籤。 敍述25. 本發明概念的實施例包含如敍述第22項所述的方法,回應於所述至少一個準則的所述至少一個值而識別所述多個軟體串流的第一子集及第二子集包含:在視窗內回應於所述至少一個準則的所述至少一個值而識別所述多個軟體串流的所述第一子集及所述第二子集。 敍述26. 本發明概念的實施例包含如敍述第25項所述的方法,其中所述視窗是滑動視窗。 敍述27. 本發明概念的實施例包含如敍述第26項所述的方法,其中判定所述多個軟體串流中的每一者的至少一個準則的至少一個值包含在所述多個命令中的每一者進入及退出所述視窗時在所述視窗內調整所述至少一個準則的所述至少一個值。 敍述28. 本發明概念的實施例包含如敍述第25項所述的方法,其中所述視窗是離散視窗。 敍述29. 本發明概念的實施例包含如敍述第28項所述的方法,其另外包括: 識別第二離散視窗,所述第二離散視窗包含所述第二多個命令; 在所述第二離散視窗期間回應於所述第二多個命令而判定用於所述至少一個準則的至少一個第二值; 回應於所述至少一個準則的所述至少一個第二值而識別所述多個軟體串流的第三子集及第四子集;以及 產生映射,所述映射可操作以將所述多個軟體串流的所述第三子集中的每一軟體串流映射至所述SSD中的所述多個裝置串流中的唯一裝置串流,及將所述多個軟體串流的所述第四子集中的所有所述軟體串流映射至所述SSD中的所述多個裝置串流中的合併裝置串流。 敍述30. 本發明概念的實施例包含如敍述第28項所述的方法,其另外包括: 在所述離散視窗關閉之後保持所述映射; 接收將所述多個軟體串流重新映射至所述多個裝置串流的請求;以及 執行回應於將所述多個軟體串流重新映射至所述多個裝置串流的所述請求而識別第二離散視窗、判定至少一個第二值、識別第三及第四子集以及產生第二映射的步驟。 敍述31. 本發明概念的實施例包含如敍述第22項所述的方法,其中回應於所述至少一個準則的所述至少一個值而識別所述多個軟體串流的第一子集及第二子集包含: 根據所述至少一個準則的所述至少一個值而對所述多個軟體串流進行分級; 選擇所述多個軟體串流的含有具有最高分級的數個軟體串流的所述第一子集,其中具有最高分級的軟體串流的數目比所述多個裝置串流的數目小了一;且 選擇所述多個軟體串流的所述第二子集,所述第二子集含有所述多個軟體串流中的不包含於所述多個軟體串流的所述第一子集中的所有軟體串流。 敍述32. 本發明概念的實施例包含如敍述第31項所述的方法,其中: 回應於所述多個命令而判定所述多個軟體串流中的每一者的至少一個準則的至少一個值包含:判定所述多個軟體串流中的每一者的第一準則的第一值及第二準則的第二值;且 根據所述至少一個準則的所述至少一個值而對所述多個軟體串流進行分級包含:根據所述多個軟體串流中的每一者的所述第一準則的所述第一值及所述第二準則的所述第二值而對所述多個軟體串流進行分級。 敍述33. 本發明概念的實施例包含如敍述第32項所述的方法,其中根據所述第一準則的所述第一值及所述第二準則的所述第二值而對所述多個軟體串流進行分級包含: 判定所述第一準則的第一加權及所述第二準則的第二加權;以及 根據所述第一值的使用所述第一加權的第一分級與所述第二值的使用所述第二加權的第二分級的加權和而對所述多個軟體串流進行分級。 敍述34. 本發明概念的實施例包含如敍述第32項所述的方法,其中根據所述第一準則的所述第一值及所述第二準則的所述第二值而對所述多個軟體串流進行分級包含: 判定所述第一準則的臨限值;以及 根據其第一值大於所述第一準則的所述臨限值的軟體串流的第一準則且根據其第一值小於所述第一準則的所述臨限值的軟體串流的第二準則而對所述多個軟體串流進行分級。 敍述35. 本發明概念的實施例包含一種包括有形儲存媒體的物品,所述有形儲存媒體在其上儲存有在由機器執行時引起以下操作的非暫時性指令: 接收與多個軟體串流相關聯的多個命令,將使用包含多個裝置串流的固態式硬碟(SSD)來處理所述多個命令; 回應於所述多個命令而判定所述多個軟體串流中的每一者的至少一個準則的至少一個值; 回應於所述至少一個準則的所述至少一個值而識別所述多個軟體串流的第一子集及第二子集; 產生映射,所述映射可操作以將所述多個軟體串流的所述第一子集中的每一軟體串流映射至所述SSD中的所述多個裝置串流中的唯一裝置串流,及將所述多個軟體串流的所述第二子集中的所有所述軟體串流映射至所述SSD中的所述多個裝置串流中的合併裝置串流; 在產生所述映射之後接收與所述多個軟體串流相關聯的第二多個命令; 回應於所述映射而將所述第二多個命令中的每一者指派至所述多個裝置串流中的一者;以及 使用所述所指派裝置串流而處理所述SSD上的所述第二多個命令中的每一者。 敍述36. 本發明概念的實施例包含如敍述第35項所述的物品,所述有形儲存媒體在其上儲存有其他非暫時性指令,所述指令在由所述機器執行時引起:回應於對與所述多個軟體串流相關聯的所述多個命令的所述處理而返回來自所述SSD的結果。 敍述37. 本發明概念的實施例包含如敍述第35項所述的物品,其中: 與所述多個軟體串流相關聯的所述多個命令中的每一者包含軟體串流標識符(ID)標籤;且 來自所述SSD的所述結果中的每一者包含來自與所述多個軟體串流相關聯的的所述多個命令中的對應一者的軟體串流ID標籤。 敍述38. 本發明概念的實施例包含如敍述第35項所述的物品,回應於所述至少一個準則的所述至少一個值而識別所述多個軟體串流的第一子集及第二子集包含:在視窗內回應於所述至少一個準則的所述至少一個值而識別所述多個軟體串流的所述第一子集及所述第二子集。 敍述39. 本發明概念的實施例包含如敍述第38項所述的物品,其中所述視窗是滑動視窗。 敍述40. 本發明概念的實施例包含如敍述第39項所述的物品,其中判定所述多個軟體串流中的每一者的至少一個準則的至少一個值包含在所述多個命令中的每一者進入及退出所述視窗時在所述視窗內調整所述至少一個準則的所述至少一個值。 敍述41. 本發明概念的實施例包含如敍述第38項所述的物品,其中所述視窗是離散視窗。 敍述42. 本發明概念的實施例包含如敍述第41項所述的物品,所述有形儲存媒體在其上儲存有在由機器執行時引起以下操作的其他非暫時性指令: 識別第二離散視窗,所述第二離散視窗包含所述第二多個命令; 在所述第二離散視窗期間回應於所述第二多個命令而判定用於所述至少一個準則的至少一個第二值; 回應於所述至少一個準則的所述至少一個第二值而識別所述多個軟體串流的第三子集及第四子集;以及 產生映射,所述映射可操作以將所述多個軟體串流的所述第三子集中的每一軟體串流映射至所述SSD中的所述多個裝置串流中的唯一裝置串流,及將所述多個軟體串流的所述第四子集中的所有所述軟體串流映射至所述SSD中的所述多個裝置串流中的合併裝置串流。 敍述43. 本發明概念的實施例包含如敍述第41項所述的物品,所述有形儲存媒體在其上儲存有在由機器執行時引起以下操作的其他非暫時性指令: 在所述離散視窗關閉之後保持所述映射; 接收將所述多個軟體串流重新映射至所述多個裝置串流的請求;以及 執行回應於將所述多個軟體串流重新映射至所述多個裝置串流的所述請求而識別第二離散視窗、判定至少一個第二值、識別第三及第四子集以及產生第二映射的步驟。 敍述44. 本發明概念的實施例包含如敍述第35項所述的物品,其中回應於所述至少一個準則的所述至少一個值而識別所述多個軟體串流的第一子集及第二子集包含: 根據所述至少一個準則的所述至少一個值而對所述多個軟體串流進行分級; 選擇所述多個軟體串流的含有具有最高分級的數個軟體串流的所述第一子集,其中具有最高分級的軟體串流的數目比所述多個裝置串流的數目小了一;且 選擇所述多個軟體串流的所述第二子集,所述第二子集含有所述多個軟體串流中的不包含於所述多個軟體串流的所述第一子集中的所有軟體串流。 敍述45. 本發明概念的實施例包含如敍述第44項所述的物品,其中: 回應於所述多個命令而判定所述多個軟體串流中的每一者的至少一個準則的至少一個值包含:判定所述多個軟體串流中的每一者的第一準則的第一值及第二準則的第二值;且 根據所述至少一個準則的所述至少一個值而對所述多個軟體串流進行分級包含:根據所述多個軟體串流中的每一者的所述第一準則的所述第一值及所述第二準則的所述第二值而對所述多個軟體串流進行分級。 敍述46. 本發明概念的實施例包含如敍述第45項所述的物品,其中根據所述第一準則的所述第一值及所述第二準則的所述第二值而對所述多個軟體串流進行分級包含: 判定所述第一準則的第一加權及所述第二準則的第二加權;以及 根據所述第一值的使用所述第一加權的第一分級與所述第二值的使用所述第二加權的第二分級的加權和而對所述多個軟體串流進行分級。 敍述47. 本發明概念的實施例包含如敍述第45項所述的物品,其中根據所述第一準則的所述第一值及所述第二準則的所述第二值而對所述多個軟體串流進行分級包含: 判定所述第一準則的臨限值;以及 根據其第一值大於所述第一準則的所述臨限值的軟體串流的第一準則且根據其第一值小於所述第一準則的所述臨限值的軟體串流的第二準則而對所述多個軟體串流進行分級。
因此,考慮到本文中所描述的實施例的廣泛多種改變,此詳細描述及隨附材料僅意欲是說明性的,而不應被視為限制本發明概念的範疇。所主張的本發明概念因此是可在以下申請專利範圍及其等效物的範疇及精神內的所有此等修改。
105‧‧‧機器
110‧‧‧處理器
115‧‧‧記憶體
120‧‧‧固態式硬碟(SSD)/儲存裝置
125‧‧‧記憶體控制器
130‧‧‧儲存控制器
205‧‧‧時鐘
210‧‧‧網路連接器
215‧‧‧匯流排
220‧‧‧使用者介面
225‧‧‧輸入/輸出引擎
305‧‧‧主機介面邏輯
310‧‧‧固態式硬碟(SSD)控制器
315-1、315-2、315-3、315-4、315-5、315-6、315-7、315-8‧‧‧快閃記憶體晶片
320-1、320-2、320-3、320-4‧‧‧通道
325‧‧‧快閃轉譯層
405-1、405-2、405-3、405-4、405-5、405-k‧‧‧命令
410-1、410-2、410-3、410-4、410-n‧‧‧軟體串流
415‧‧‧標籤
420-1、420-2、420-3、420-m‧‧‧裝置串流
425‧‧‧映射
505‧‧‧接收器
510‧‧‧計時器
515‧‧‧統計收集器
520‧‧‧分級器
525‧‧‧映射器
530‧‧‧傳輸器
535‧‧‧裝置串流標識符(ID)新增器
605‧‧‧視窗
705、805‧‧‧準則
710‧‧‧頻率
715‧‧‧累積資料大小
720‧‧‧依序寫入的數目
725‧‧‧服務品質
730‧‧‧閒置時間
810‧‧‧臨限值
815‧‧‧比較器
820‧‧‧算術邏輯單元(ALU)
825-1、825-2、825-3、825-l‧‧‧加權
905-1、905-2‧‧‧值
910‧‧‧所選值
1005、1010、1015、1020、1025、1030、1035、1040、1045、1050、1055、1060、1105、1110、1115、1205、1210、1215、1225、1230、1235、1240、1245、1305、1310‧‧‧區塊
1220‧‧‧虛線
圖1展示根據本發明概念的實施例的具有固態式硬碟(SSD)的機器。 圖2展示圖1的機器的額外細節。 圖3展示圖1的SSD的細節。 圖4展示與各種軟體串流映射至圖1的SSD中的裝置串流相關聯的各種命令。 圖5展示圖3的主機介面邏輯的細節。 圖6展示用於計算圖4的多個命令的統計的視窗,以支援在圖1的SSD中將圖4的軟體串流映射至圖4的裝置串流。 圖7展示可用於產生圖3的映射的各種準則。 圖8展示圖5的分級器的細節。 圖9A至圖9B展示根據本發明概念的實施例的圖5的分級器對軟體串流進行分級的不同方式。 圖10A至圖10B展示根據本發明概念的實施例的用於產生圖4的映射的實例程序的流程圖。 圖11展示根據本發明概念的實施例的圖5的統計收集器判定準則的值的實例程序的流程圖。 圖12展示根據本發明概念的實施例的圖5的分級器判定哪些軟體串流將映射至哪些裝置串流的實例程序的流程圖。 圖13展示根據本發明概念的實施例的圖5的映射器將軟體串流映射至裝置串流的實例程序的流程圖。

Claims (20)

  1. 一種固態式硬碟(SSD),包括: 快閃記憶體,用以儲存資料; 所述SSD中的對多個裝置串流的支援; SSD控制器,用以回應於多個命令而管理自所述快閃記憶體讀取資料及將資料寫入至所述快閃記憶體;以及 主機介面邏輯,包含: 接收器,用以自主機接收所述多個命令,所述多個命令與多個軟體串流相關聯; 計時器,用以對視窗進行計時; 統計收集器,用以回應於所述多個命令而在所述視窗期間判定所述多個軟體串流中的每一者的至少一個準則的至少一個值; 分級器,用以根據所述多個軟體串流中的每一者的所述至少一個準則的所述至少一個值而對所述多個軟體串流進行分級;以及 映射器,用以建立映射,所述映射可操作以將所述多個軟體串流的第一子集中的每一軟體串流映射至所述SSD中的所述多個裝置串流中的唯一裝置串流,及將所述多個軟體串流的第二子集中的所有所述軟體串流映射至所述SSD中的所述多個裝置串流中的合併裝置串流。
  2. 如申請專利範圍第1項所述的SSD,其中所述SSD可操作以自所述多個軟體串流接收額外多個命令,及根據所述映射而將所述額外多個命令指派至所述多個裝置串流。
  3. 如申請專利範圍第1項所述的SSD,其中: 所述視窗是滑動視窗;且 所述統計收集器可操作以在所述多個命令中的每一者進入及退出所述視窗時在所述視窗內調整所述至少一個準則的所述至少一個值。
  4. 如申請專利範圍第1項所述的SSD,其中所述視窗是離散視窗。
  5. 如申請專利範圍第1項所述的SSD,其中: 所述多個軟體串流的所述第一子集包含具有最高分級的軟體串流,其中具有最高分級的軟體串流的數目比所述多個裝置串流的數目小了一;且 所述多個軟體串流的所述第二子集包含不包含於所述多個軟體串流的所述第一子集中的所有軟體串流。
  6. 如申請專利範圍第1項所述的SSD,其中所述統計收集器可操作以判定所述多個軟體串流中的每一者的第一準則的第一值及第二準則的第二值。
  7. 如申請專利範圍第6項所述的SSD,其中: 所述分級器包含所述第一準則的第一加權及所述第二準則的第二加權;且 所述分級器可操作以根據所述第一值的使用所述第一加權的第一分級與所述第二值的使用所述第二加權的第二分級的加權和而對所述多個軟體串流進行分級。
  8. 如申請專利範圍第6項所述的SSD,其中: 所述分級器包含所述第一準則的臨限值;且 所述分級器可操作以根據其第一值大於所述第一準則的所述臨限值的軟體串流的第一準則且根據其第一值小於所述第一準則的所述臨限值的軟體串流的第二準則而對所述多個軟體串流進行分級。
  9. 一種供在電腦系統中使用的驅動器,包括: 接收器,用以自主機接收多個命令,所述多個命令與多個軟體串流相關聯; 計時器,用以對視窗進行計時; 統計收集器,用以回應於所述多個命令而在所述視窗期間判定所述多個軟體串流中的每一者的至少一個準則的至少一個值; 分級器,用以根據所述多個軟體串流中的每一者的所述至少一個準則的所述至少一個值而對所述多個軟體串流進行分級; 映射器,用以建立映射,所述映射可操作以將所述多個軟體串流的第一子集中的每一軟體串流映射至固態式硬碟(SSD)中的多個裝置串流中的唯一裝置串流,及將所述多個軟體串流的第二子集中的所有所述軟體串流映射至所述SSD中的所述多個裝置串流中的合併裝置串流; 裝置串流標識符(ID)新增器,用以新增對應於與所述多個命令中的每一者相關聯的軟體串流的裝置串流的裝置串流ID至額外多個命令中的每一者;以及 傳輸器,用以將所述額外多個命令中的每一者傳輸至所述SSD。
  10. 如申請專利範圍第9項所述的驅動器,其中: 所述視窗是滑動視窗;且 所述統計收集器可操作以在所述多個命令中的每一者進入及退出所述視窗時在所述視窗內調整所述至少一個準則的所述至少一個值。
  11. 如申請專利範圍第9項所述的驅動器,其中所述視窗是離散視窗。
  12. 如申請專利範圍第9項所述的驅動器,其中: 所述多個軟體串流的所述第一子集包含具有最高分級的數個軟體串流,其中具有最高分級的軟體串流的數目比所述多個裝置串流的數目小了一;且 所述多個軟體串流的所述第二子集包含不包含於所述多個軟體串流的所述第一子集中的所有軟體串流。
  13. 如申請專利範圍第9項所述的驅動器,其中所述統計收集器可操作以判定所述多個軟體串流中的每一者的第一準則的第一值及第二準則的第二值。
  14. 如申請專利範圍第13項所述的驅動器,其中: 所述分級器包含所述第一準則的第一加權及所述第二準則的第二加權;且 所述分級器可操作以根據所述第一值的使用所述第一加權的第一分級與所述第二值的使用所述第二加權的第二分級的加權和而對所述多個軟體串流進行分級。
  15. 如申請專利範圍第13項所述的驅動器,其中: 所述分級器包含所述第一準則的臨限值;且 所述分級器可操作以根據其第一值大於所述第一準則的所述臨限值的軟體串流的第一準則且根據其第一值小於所述第一準則的所述臨限值的軟體串流的第二準則而對所述多個軟體串流進行分級。
  16. 一種方法,包括: 接收與多個軟體串流相關聯的多個命令,將使用包含多個裝置串流的固態式硬碟(SSD)來處理所述多個命令; 回應於所述多個命令而判定所述多個軟體串流中的每一者的至少一個準則的至少一個值; 回應於所述至少一個準則的所述至少一個值而識別所述多個軟體串流的第一子集及第二子集; 產生映射,所述映射可操作以將所述多個軟體串流的所述第一子集中的每一軟體串流映射至所述SSD中的所述多個裝置串流中的唯一裝置串流,及將所述多個軟體串流的所述第二子集中的所有所述軟體串流映射至所述SSD中的所述多個裝置串流中的合併裝置串流; 在產生所述映射之後接收與所述多個軟體串流相關聯的第二多個命令; 回應於所述映射而將所述第二多個命令中的每一者指派至所述多個裝置串流中的一者;以及 使用所述所指派裝置串流而處理所述SSD上的所述第二多個命令中的每一者。
  17. 如申請專利範圍第16項所述的方法,其中回應於所述至少一個準則的所述至少一個值而識別所述多個軟體串流的第一子集及第二子集包含: 根據所述至少一個準則的所述至少一個值而對所述多個軟體串流進行分級; 選擇所述多個軟體串流的含有具有最高分級的數個軟體串流的所述第一子集,其中具有最高分級的軟體串流的數目比所述多個裝置串流的數目小了一;且 選擇所述多個軟體串流的所述第二子集,所述第二子集含有所述多個軟體串流中的不包含於所述多個軟體串流的所述第一子集中的所有軟體串流。
  18. 如申請專利範圍第17項所述的方法,其中: 回應於所述多個命令而判定所述多個軟體串流中的每一者的至少一個準則的至少一個值包含:判定所述多個軟體串流中的每一者的第一準則的第一值及第二準則的第二值;且 根據所述至少一個準則的所述至少一個值而對所述多個軟體串流進行分級包含:根據所述多個軟體串流中的每一者的所述第一準則的所述第一值及所述第二準則的所述第二值而對所述多個軟體串流進行分級。
  19. 如申請專利範圍第18項所述的方法,其中根據所述第一準則的所述第一值及所述第二準則的所述第二值而對所述多個軟體串流進行分級包含: 判定所述第一準則的第一加權及所述第二準則的第二加權;以及 根據所述第一值的使用所述第一加權的第一分級與所述第二值的使用所述第二加權的第二分級的加權和而對所述多個軟體串流進行分級。
  20. 如申請專利範圍第18項所述的方法,其中根據所述第一準則的所述第一值及所述第二準則的所述第二值而對所述多個軟體串流進行分級包含: 判定所述第一準則的臨限值;以及 根據其第一值大於所述第一準則的所述臨限值的軟體串流的第一準則且根據其第一值小於所述第一準則的所述臨限值的軟體串流的第二準則而對所述多個軟體串流進行分級。
TW106130577A 2016-10-26 2017-09-07 固態式硬碟以及管理串流的物品及方法 TWI718337B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201662413177P 2016-10-26 2016-10-26
US62/413,177 2016-10-26
US201762448958P 2017-01-20 2017-01-20
US62/448,958 2017-01-20
US15/458,968 US10216417B2 (en) 2016-10-26 2017-03-14 Method of consolidate data streams for multi-stream enabled SSDs
US15/458,968 2017-03-14

Publications (2)

Publication Number Publication Date
TW201816620A true TW201816620A (zh) 2018-05-01
TWI718337B TWI718337B (zh) 2021-02-11

Family

ID=61969550

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106130577A TWI718337B (zh) 2016-10-26 2017-09-07 固態式硬碟以及管理串流的物品及方法

Country Status (5)

Country Link
US (3) US10216417B2 (zh)
JP (1) JP6851951B2 (zh)
KR (1) KR102267480B1 (zh)
CN (1) CN107992266B (zh)
TW (1) TWI718337B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018088137A (ja) 2016-11-29 2018-06-07 東芝メモリ株式会社 半導体記憶装置
US10877691B2 (en) * 2017-12-29 2020-12-29 Intel Corporation Stream classification based on logical regions
CN112352216B (zh) * 2018-06-30 2022-06-14 华为技术有限公司 数据存储方法及数据存储装置
US11182101B2 (en) * 2018-12-03 2021-11-23 Western Digital Technologies, Inc. Storage system and method for stream management in a multi-host virtualized storage system
KR20200088563A (ko) * 2019-01-15 2020-07-23 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20200145151A (ko) 2019-06-20 2020-12-30 삼성전자주식회사 맵핑 정보를 축약하는 플래시 변환 계층 구조를 이용하여 메모리 리소스를 관리하는 데이터 저장 장치
US11481150B2 (en) * 2020-04-01 2022-10-25 Western Digital Technologies, Inc. Read modify write optimization for video performance
US11301173B2 (en) * 2020-04-20 2022-04-12 Alibaba Group Holding Limited Method and system for facilitating evaluation of data access frequency and allocation of storage device resources
KR20210156190A (ko) 2020-06-17 2021-12-24 삼성전자주식회사 스토리지 장치 지원 실시간 가상 머신 마이그레이션
US11863623B2 (en) * 2020-09-11 2024-01-02 Western Digital Technologies, Inc. Variable QoS management of multiple data streams
KR102652396B1 (ko) * 2021-05-31 2024-03-28 한국항공대학교산학협력단 멀티스트림을 활용한 분산 병렬 시스템의 데이터 분리 저장 장치 및 방법
CN117806986B (zh) * 2023-12-29 2024-10-15 深圳大普微电子股份有限公司 应用数据的多流管理方法及闪存设备

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006235960A (ja) 2005-02-24 2006-09-07 Fujitsu Ltd ガーベッジコレクション高速化方法
US20090119352A1 (en) 2007-11-05 2009-05-07 Steven Joseph Branda Method for Optimizing Generational Garbage Collection Through Object Life Heuristics
US8429658B2 (en) 2008-10-16 2013-04-23 International Business Machines Corporation Lock deferral for real-time garbage collection
CN102473140B (zh) 2009-07-17 2015-05-13 株式会社东芝 存储器管理装置
US8688894B2 (en) 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
WO2012020544A1 (ja) 2010-08-11 2012-02-16 日本電気株式会社 データ処理システム、データ処理方法、およびプログラム
US20150121003A1 (en) * 2010-09-07 2015-04-30 Daniel L. Rosenband Storage controllers
JP2012084127A (ja) 2010-09-15 2012-04-26 Toshiba Corp 半導体装置
US20120110239A1 (en) * 2010-10-27 2012-05-03 Seagate Technology Llc Causing Related Data to be Written Together to Non-Volatile, Solid State Memory
WO2013035295A1 (en) 2011-09-07 2013-03-14 Nec Corporation Storage system
US10203881B2 (en) * 2011-12-19 2019-02-12 Apple Inc. Optimized execution of interleaved write operations in solid state drives
JP5723812B2 (ja) 2012-03-16 2015-05-27 株式会社 日立産業制御ソリューションズ ファイルサーバ、データ入出力方法、i/oフックモジュールプログラム及びi/o代行デーモンプログラム
US8886880B2 (en) 2012-05-29 2014-11-11 Dot Hill Systems Corporation Write cache management method and apparatus
US9395924B2 (en) * 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
US9158687B2 (en) * 2013-03-04 2015-10-13 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
US9367353B1 (en) * 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
WO2015005634A1 (ko) 2013-07-08 2015-01-15 주식회사 윌러스표준기술연구소 메모리 시스템 및 이의 제어 방법
CN105659143B (zh) * 2013-07-31 2019-03-22 加州理工学院 孔径扫描傅立叶重叠关联成像
KR102074329B1 (ko) * 2013-09-06 2020-02-06 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법
US9854270B2 (en) 2013-12-19 2017-12-26 Qualcomm Incorporated Device and method for scalable coding of video information
US9459810B2 (en) 2013-12-30 2016-10-04 Sandisk Technologies Llc Storage module and method for configuring command attributes
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
KR101544309B1 (ko) 2014-02-26 2015-08-12 한양대학교 산학협력단 스트림 기반의 비휘발성 메모리 제어 방법 및 장치
TWI554944B (zh) 2014-06-20 2016-10-21 慧榮科技股份有限公司 快閃記憶體控制裝置、快閃記憶體控制系統以及快閃記憶體控制方法
EP3021208B1 (en) * 2014-11-14 2019-01-09 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
US9519429B2 (en) 2014-12-09 2016-12-13 Intel Corporation Techniques to manage multiple sequential write streams to a solid state drive
US10409526B2 (en) 2014-12-17 2019-09-10 Violin Systems Llc Adaptive garbage collection
KR20160105624A (ko) 2015-02-27 2016-09-07 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그것의 동작 방법
JP2016170583A (ja) 2015-03-12 2016-09-23 株式会社東芝 メモリシステムおよび情報処理システム
US20160283124A1 (en) 2015-03-25 2016-09-29 Kabushiki Kaisha Toshiba Multi-streamed solid state drive
US9760281B2 (en) 2015-03-27 2017-09-12 Intel Corporation Sequential write stream management
US9996302B2 (en) * 2015-04-03 2018-06-12 Toshiba Memory Corporation Storage device writing data on the basis of stream
US10261725B2 (en) * 2015-04-10 2019-04-16 Toshiba Memory Corporation Storage system capable of invalidating data stored in a storage device thereof
US10013177B2 (en) 2015-04-20 2018-07-03 Hewlett Packard Enterprise Development Lp Low write amplification in solid state drive
US9696935B2 (en) 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
US9594513B1 (en) * 2015-06-29 2017-03-14 EMC IP Holding Company LLC Data storage system with file system stream detection
KR102381343B1 (ko) 2015-07-27 2022-03-31 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
JP6403164B2 (ja) 2015-09-11 2018-10-10 東芝メモリ株式会社 メモリシステム
US9880780B2 (en) 2015-11-30 2018-01-30 Samsung Electronics Co., Ltd. Enhanced multi-stream operations
JP2018022275A (ja) 2016-08-02 2018-02-08 東芝メモリ株式会社 半導体記憶装置
JP2018160195A (ja) 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステムおよび不揮発性メモリの制御方法

Also Published As

Publication number Publication date
KR102267480B1 (ko) 2021-06-22
US20180113642A1 (en) 2018-04-26
JP2018073412A (ja) 2018-05-10
US10739995B2 (en) 2020-08-11
US20190129617A1 (en) 2019-05-02
US11048411B2 (en) 2021-06-29
US10216417B2 (en) 2019-02-26
US20200264774A1 (en) 2020-08-20
KR20180045786A (ko) 2018-05-04
CN107992266A (zh) 2018-05-04
JP6851951B2 (ja) 2021-03-31
CN107992266B (zh) 2022-01-28
TWI718337B (zh) 2021-02-11

Similar Documents

Publication Publication Date Title
TW201816620A (zh) 用於多資料串流允許的固態式硬碟之合併資料串流方法、固態式硬碟及驅動器
US10007461B1 (en) Redistributing data in a distributed storage system based on attributes of the data
US11507326B2 (en) Multistreaming in heterogeneous environments
EP3285187B1 (en) Optimized merge-sorting of data retrieved from parallel storage units
US10387038B1 (en) Storage space allocation for logical disk creation
TW201248405A (en) Selective data storage in LSB and MSB pages
US10067683B2 (en) Systems and methods for classifying data in solid state drives
US20200409874A1 (en) Data storage system data access arbitration
US20240037067A1 (en) File system provisioning for workload
US7953705B2 (en) Autonomic retention classes
CN109766056A (zh) 一种存储阵列控制器io队列调度方法与装置
WO2018130222A1 (zh) 一种写入日志的方法、系统、介质和设备
CN109783006B (zh) 计算系统及操作计算系统的方法
CN114168084A (zh) 文件合并方法、文件合并装置、电子设备以及存储介质
RU2679546C2 (ru) Устройство и способ прогона множества потоков
US20230185457A1 (en) Optimizing Data Placement Based on Data Temperature and Lifetime Prediction
Alfares et al. IaaS Procurement by Simulated Annealing
CN111580742B (zh) 使用加速器处理读(Get)/Put(写)请求的方法及其信息处理系统