TWI771396B - 儲存裝置、儲存管理器與多重串流方法 - Google Patents
儲存裝置、儲存管理器與多重串流方法 Download PDFInfo
- Publication number
- TWI771396B TWI771396B TW107110792A TW107110792A TWI771396B TW I771396 B TWI771396 B TW I771396B TW 107110792 A TW107110792 A TW 107110792A TW 107110792 A TW107110792 A TW 107110792A TW I771396 B TWI771396 B TW I771396B
- Authority
- TW
- Taiwan
- Prior art keywords
- storage device
- storage
- streaming
- stream
- streams
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B1/00—Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
- H04B1/02—Transmitters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B1/00—Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
- H04B1/06—Receivers
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)
Abstract
本發明揭露一種儲存裝置。所述儲存裝置可包括用於儲
存資料的儲存器,所述儲存器可包括第一類型的第一儲存器及第二類型的第二儲存器。所述儲存裝置可支援多個裝置串流,所述多個裝置串流中的一些裝置串流與所述第一儲存器相關聯,且所述多個裝置串流中的一些裝置串流與所述第二儲存器相關聯。所述儲存裝置亦可包括串流能力分析器,所述串流能力分析器可羅列所述儲存裝置的串流能力。最後,所述儲存裝置可包括傳送器以將所述儲存裝置的所述串流能力傳送至儲存管理器。
Description
本發明概念大體而言是有關於固態驅動機(Solid State Drive,SSD),且更具體而言,是有關於利用具有不同效能能力的固態驅動機來管理串流。
多重串流是使得系統能夠向資料指派「串流」的最近的固態驅動機(SSD)特徵。每一串流在固態驅動機上保持實體分離,藉此改善垃圾收集(Garbage Collection)行為及寫入放大因數(Write Amplification Factor)行為。已預期具有類似使用壽命的資料可被集合在一起成為串流,藉此(理想地)使得在抹除區塊(Erase block)中的所有資料大約同時失效。因此,在對抹除區塊進行抹除之前,垃圾收集將需要對來自所述抹除區塊的較少有效資料(或不對來自所述抹除區塊的有效資料)進行編程,藉此減小固態驅動機的寫入放大因數。
若系統中的每一儲存裝置在各方面均完全相同,則多重串流將易於實作。無論將選擇何串流來寫入具體資料,目標儲存
裝置的預期效能將相同(或足夠接近);幾乎任意資料可被指派至幾乎任意串流及指派至任意驅動機。
但系統中的此種均質性是少見的。通常,系統包括各式儲存裝置的混合:不同類型的裝置(例如,硬碟驅動機(Hard disk drive)對固態驅動機)、不同的效能水準(例如,不同的讀取及/或寫入延遲、或不同的垃圾收集特性)及/或不同的連接件(例如,串列附接小型電腦系統介面(Serial Attached Small Computer Systems Interface,SAS)對乙太網路)。即使在製造及連接方面完全相同的裝置仍可能會具有不同表現。舉例而言,考量兩個以完全相同的方式連接至主機機器的固態驅動機儲存裝置。若所述兩個固態驅動機中的一者接收由主機機器發出的命令中顯著多於50%的命令,則所述固態驅動機可以較另一固態驅動機顯著更多的垃圾收集及更大的寫入放大率結束,更不必提因輸入/輸出(I/O)隊列中的更多命令而導致效能更慢。
仍需要一種確定異質儲存裝置的管理串流的方式。
根據實施例,一種儲存裝置可包括:用於儲存資料的儲存器,包括第一儲存器及第二儲存器,所述第一儲存器為第一類型且所述第二儲存器為第二類型,其中所述第一類型不同於所述第二類型;多個裝置串流,用於將所述資料寫入至所述儲存器,由所述儲存裝置支援的所述多個裝置串流中的第一裝置串流與所
述第一儲存器相關聯,由所述儲存裝置支援的所述多個裝置串流中的第二裝置串流與所述第二儲存器相關聯;串流能力分析器,羅列所述儲存裝置的串流能力;以及傳送器,將所述儲存裝置的所述串流能力傳送至至少一個儲存管理器。
根據實施例,一種儲存管理器可包括:接收器,接收至少一個儲存裝置的至少一個串流能力、對至少一個軟體串流的要求、以及來自所述至少一個軟體串流的請求;裝置串流選擇器,因應於對所述至少一個軟體串流的所述要求以及所述至少一個儲存裝置的所述至少一個串流能力而選擇由所述至少一個儲存裝置支援的多個裝置串流中的一者;以及傳送器,將所述請求傳送至所述至少一個儲存裝置中的第一儲存裝置,所述第一儲存裝置支援所述多個裝置串流中的所述所選擇的一者。
根據實施例,一種方法可包括:接收至少一個儲存裝置的至少兩個串流能力,所述至少一個儲存裝置支援多個裝置串流;自至少一個軟體串流接收請求;確定所述至少一個軟體串流的至少一個要求;因應於對所述至少一個軟體串流的所述至少一個要求及所述至少一個儲存裝置的所述至少一個串流能力而選擇由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者;以及使用所述多個裝置串流中所選擇的所述至少一者將所述請求自所述至少一個軟體串流發送至所述至少一個儲存裝置。
105:機器/主機機器
110:處理器
115:記憶體
120:儲存裝置
120-1:儲存裝置/疊瓦式硬碟驅動機
120-2:較新的快閃記憶體儲存裝置/固態驅動機
120-3:混合媒體儲存裝置
120-4:較舊的快閃記憶體儲存裝置
120-5:跨結構快速非揮發性記憶體(NVMeoF)儲存裝置
125:記憶體控制器
130:裝置驅動器
135:儲存管理器/串流管理器
205:時鐘
210:網路連接件
215:匯流排
220:使用者介面
225:輸入/輸出引擎
305-1、305-2、305-3、305-4、305-5:協定
405:主機介面邏輯
410:固態驅動機控制器
415-1、415-2、415-3、415-4、415-5、415-6、415-7、415-8:快閃記憶體晶片
420-1、420-2、420-3、420-4:通道
425-1、425-2、425-3:裝置串流
430:快閃轉換層
435:嵌式微處理器
505:接收器
510:串流能力分析器
515:傳送器
520:更新偵測器
605:串流能力
605-1、605-2、605-k:串流能力
610:裝置串流的數目
615:抹除區塊大小
620:物理異質性
625:自動串流能力
630:最佳串流寫入大小
635:儲存器內計算
640:編程/抹除速度參數
645:緩衝器大小
650:吞吐量限制
655:韌體版本
705:請求
805:應用程式
810-1、810-2、810-3:軟體串流
815:請求
905:接收器
910:裝置串流選擇器
915:傳送器
920:擴充器
925:儲存器
930:串流能力資料結構
935:映射資料結構
1005:表
1010:表
1105:與儲存裝置不相關的考量因素
1110:服務品質要求
1115:分類裝置串流
1120:軟體串流要求
1125:選擇裝置串流
1130:使用裝置串流
1205:映射器
1210:映射更新器
1215:權重指派器
1305:裝置串流分類器
1310:軟體串流分類器
1405、1410、1415、1420、1425、1430、1435、1440:方塊
1505、1510、1515、1520、1525:方塊
1605、1610、1615、1620、1625、1630、1635、1640:方塊
1705、1710、1715、1720、1725、1730:方塊
1805、1810、1815:方塊
圖1示出根據本發明概念的實施例的具有儲存裝置的機器。
圖2示出圖1所示機器的額外細節。
圖3示出圖1所示的儲存管理器與具有不同類型及能力的儲存裝置通訊。
圖4示出圖3所示固態驅動機的細節。
圖5示出圖1所示儲存裝置的控制器的細節。
圖6示出可由圖1所示的儲存裝置報告至圖1所示的儲存管理器的各種串流能力。
圖7示出圖1所示的儲存裝置將圖6所示的串流能力傳遞至圖1所示的儲存管理器。
圖8示出在圖1所示的機器上運行且經由軟體串流發送請求的應用程式。
圖9示出圖1所示儲存管理器的細節。
圖10A至圖10B示出用以儲存圖1所示儲存裝置的串流能力以及相關資訊的示例性資料結構。
圖11示出示例性機制的操作的流程圖,圖1所示的儲存管理器可藉由所述示例性機制向應用程式指派串流。
圖12示出圖9所示裝置串流選擇器的細節。
圖13示出圖12所示映射器的細節。
圖14示出根據本發明概念的實施例,其中示出圖1所示的儲存裝置自羅列其串流能力並將此資訊發送至圖1所示儲存管理器
的示例性程序的流程圖。
圖15示出根據本發明概念的實施例,其中示出圖1所示的儲存裝置判斷其串流能力何時已改變的示例性程序的流程圖。
圖16示出根據本發明概念的實施例,其中示出圖1所示的儲存管理器向圖1所示的儲存裝置中的裝置串流指派請求的示例性程序的流程圖。
圖17示出根據本發明概念的實施例,其中示出圖1所示的儲存管理器將軟體串流映射至裝置串流的示例性程序的流程圖。
圖18示出根據本發明概念的實施例,其中示出圖1所示的儲存管理器為軟體串流選擇裝置串流的示例性程序的流程圖。
現在將詳細參照本發明概念的實施例,所述實施例的實例示出於附圖中。在以下詳細說明中,闡述諸多具體細節以使得能夠透徹地理解本發明概念。然而,應理解,此項技術中具有通常知識者無需該些具體細節即可實踐本發明概念。在其他情形中,未對眾所習知的方法、程序、組件、電路、及網路予以詳細闡述,以避免使實施例的態樣不必要地模糊不清。
應理解,儘管本文中可能使用「第一」、「第二」等用語來闡述各種元件,然而該些元件不應受該些用語限制。該些用語僅用於區分各個元件。舉例而言,在不背離本發明概念的範圍的條件下,可將第一模組稱為第二模組,且類似地,可將第二模組
稱為第一模組。
本文中在對本發明概念的說明中所使用的術語僅用於闡述具體實施例,而並非旨在限制本發明概念。除非上下文中清楚地指明,否則在對本發明概念的說明及隨附申請專利範圍中所使用的單數形式「一(a/an)」及「所述(the)」旨在亦包含複數形式。亦應理解,本文所用用語「及/或(and/or)」指代且囊括相關聯所列項其中一或多個項的任意及所有可能組合。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件、及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件、及/或其群組的存在或添加。圖式中的組件及特徵未必按比例繪製。
本申請案是有關於在2016年2月17日提出申請、序列號為15/046,439的未決美國專利申請案,所述美國專利申請案主張於2015年11月30日提出申請、序列號為62/261,303的美國臨時專利申請案的權利,所述美國專利申請案及所述美國臨時專利申請案二者均出於全部目的併入本案供參考。
本申請案是有關於在2016年4月1日提出申請、序列號為15/089,237的未決美國專利申請案,所述美國專利申請案主張於2015年12月30日提出申請、序列號為62/273,323的美國臨時專利申請案的權利,所述美國專利申請案及所述美國臨時專利申請案二者均出於全部目的併入本案供參考。
本申請案是有關於在2016年5月4日提出申請、序列號為15/146,708的未決美國專利申請案,所述美國專利申請案是於2016年2月17日提出申請、序列號為15/046,239的未決美國專利申請案的部分接續案,且主張於2015年11月30日提出申請、序列號為62/261,303的美國臨時專利申請案的權利,所述美國專利申請案及所述美國臨時專利申請案均出於全部目的併入本案供參考;於2016年5月4日提出申請、序列號為15/146,708的美國專利申請案亦主張於2016年3月1日提出申請、序列號為62/302,162的美國臨時專利申請案的權利,所述美國臨時專利申請案出於全部目的併入本案供參考。
本申請案是有關於在2016年5月20日提出申請、序列號為15/161,144的未決美國專利申請案,所述美國專利申請案主張於2016年3月29日提出申請、序列號為62/314,920的美國臨時專利申請案的權利,所述美國專利申請案及所述美國臨時專利申請案二者均出於全部目的併入本案供參考。
本申請案是有關於在2016年5月27日提出申請、序列號為15/167,974的未決美國專利申請案,所述美國專利申請案主張於2016年3月16日提出申請、序列號為62/309,446的美國臨時專利申請案的權利,所述美國專利申請案及所述美國臨時專利申請案二者均出於全部目的併入本案供參考。
本申請案是有關於在2017年7月18日提出申請、序列號為15/653,479的未決美國專利申請案,所述美國專利申請案主
張於2017年4月11日提出申請、序列號為62/484,387的美國臨時專利申請案的權利,所述美國專利申請案及所述美國臨時專利申請案二者均出於全部目的併入本案供參考。
在「多重串流」的背景下,存在感興趣的兩種類型的串流。第一種類型的串流是軟體串流(有時稱為應用程式串流)。軟體串流是取決於正在界定串流的應用程式的軟體概念。應用程式可界定任意數目的串流供其自身使用。舉例而言,應用程式或作業系統可界定具有長壽命的一個資料串流、僅暫時儲存的另一資料串流等。此外,應用程式可使用其他標準在串流之間進行區分:使用資料使用壽命僅為一種示例性方式。
第二種類型的串流是裝置串流。裝置串流是硬體概念,用於表示經由儲存裝置進行資料儲存的個別「路徑」。每一裝置能夠支援特定數目的裝置串流。由於裝置串流的數目受硬體限制的約束,因此裝置串流的數目通常會被提前知曉。
儲存裝置可與主機溝通有關於與整個驅動機及其潛在串流兩者相關聯的特定物理屬性及邏輯屬性(或作為另一選擇,此資訊的一些抽象概念)。利用所述資訊,主機將能夠基於應用程式(及其個別串流)可能提出的任何服務品質(Quality of Service,QoS)要求向所述應用程式指派串流。藉由通知主機與每一驅動機及其裝置串流相關聯的能力,(主機可利用串流外因素對其進行補充)主機可最高效地使用多重串流容量。
作為實例,想像一種具有單層式儲存單元(Single-Level
Cell,SLC)及三層式儲存單元(Triple-Level Cell)快閃兩者且能夠支援八個串流的簡單乙太網路附接固態驅動機(SSD)。此驅動機可向主機報告以下內容:
1)驅動機類型(例如,驅動機為乙太網路固態驅動機的事實)。
2)與所述主機進行通訊的任何網路延遲的經驗。
3)單層式儲存單元及三層式儲存單元的延遲(或相對延遲)。
4)向單層式儲存單元對(vs)三層式儲存單元指派串流方面的任何限制。
其他驅動機同樣將向主機報告其必要的串流指標。此後,主機將能夠分析應用程式(或個別串流)的任意服務品質要求,並將所述應用程式(或串流)指派至最適合所述應用程式(或串流)的驅動機。
在儲存裝置啟動時(且此後週期性地進行),儲存裝置自羅列(self-inventory)其串流能力。在本發明概念的實施例中,則串流能力可包括:支援的硬體串流的數目、抹除區塊的大小、內部物理異質性、自動串流能力及參數、以及與潛在串流相關聯的編程及抹除速度參數等等。
亦應注意,本發明使得應用程式能夠利用多個串流,所述多個串流中的每一者可具有不同的服務品質要求(相較於資料使用壽命要求)。傳統多重串流系統已假定每一串流提供類似的效能:本發明概念的實施例捨棄此種假定。因此,本發明概念的實施例應藉由創建更精細的服務品質粒度來減小系統的整體「服務
品質」負擔。亦即,在多重串流的背景下,本發明概念的實施例使得應用程式的小的高要求服務品質部分能夠僅被給予一個高服務品質串流且可將所述應用程式的其他串流給予低服務品質資源,而非因應用程式的某一小部分要求高要求服務品質水準便給予所述應用程式所有的高要求服務品質資源。
圖1示出根據本發明概念的實施例具有儲存裝置的機器。在圖1中,示出了機器105。機器105可為任意所需的機器,包括(但並非僅限於)桌上型電腦或膝上型電腦、伺服器(獨立伺服器或機架伺服器)、或可自本發明概念的實施例獲益的任意其他裝置。機器105亦可包括專門化的可攜式計算裝置、平板電腦、智慧型手機及其他計算裝置。機器105可運行任何所需的應用程式:資料庫應用程式是很好的實例,但本發明概念的實施例可延伸至任意所需的應用程式。
不管機器105的具體形式如何,機器105可包括處理器110、記憶體115及儲存裝置120。處理器110可為任一種處理器:例如,英特爾至強(Intel Xeon)、賽揚(Celeron)、安騰(Itanium)或淩動(Atom)處理器、超微皓龍(AMD Opteron)處理器、ARM處理器等。儘管圖1示出單個處理器,但機器105可包括任意數目的處理器,所述處理器中的每一者可為單核或多核處理器。記憶體115可為任一種記憶體,例如快閃記憶體、靜態隨機存取記憶體(Static Random Access Memory,SRAM)、持久性隨機存取記憶體(Persistent Random Access Memory,PRAM)、鐵電隨機存
取記憶體(Ferroelectric Random Access Memory,FRAM)或非揮發性隨機存取記憶體(Non-Volatile Random Access Memory,NVRAM)(例如,磁阻式隨機存取記憶體(Magnetoresistive Random Access Memory,MRAM)等),但通常為動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)。記憶體115亦可為不同記憶體類型的任何所需組合。記憶體115可由同樣作為機器105的一部分的記憶體控制器125控制。
儲存裝置120可為可支援多重串流的任一種儲存裝置。儲存裝置120可由可位於記憶體115內的裝置驅動器130控制。
最後,機器105可包括儲存管理器135。儲存管理器135可將來自應用程式或其他軟體源的請求引導至恰當的目的地。在本發明概念的實施例中,儲存管理器135可基於儲存裝置120的串流能力而將請求指派至與儲存裝置120相關聯的裝置串流。儘管圖1僅示出一個儲存裝置120,但本發明概念的實施例可支援任意數目的儲存裝置。此外,儲存裝置120可位於機器105內或位於機器105外:可能可經由網路(圖1中未示出)進行存取。儲存管理器135可被實作為硬體、硬體與軟體的組合、或僅被實作為在處理器110上運行的軟體。在此文件通篇中,對「儲存管理器135」的任意提及亦可被更廣泛地理解為闡述機器105。
圖2示出圖1所示機器105的額外細節。參照圖2,通常,機器105包括一或多個處理器110,所述一或多個處理器110可包括記憶體控制器125及時鐘205,記憶體控制器125及時鐘
205可用於協調機器105的組件的運作。處理器110亦可耦合至記憶體115,記憶體115可例如包括隨機存取記憶體(random access memory,RAM)、唯讀記憶體(read-only memory,ROM)、或其他狀態保持媒體(state preserving media)。處理器110亦可耦合至儲存裝置120及網路連接件210,網路連接件210可為例如乙太網路連接件或無線連接件。處理器110亦可連接至匯流排215,匯流排215可附接有使用者介面220及可使用輸入/輸出引擎225來管理的輸入/輸出介面埠以及其他組件。
圖3示出圖1所示的儲存管理器135與具有不同類型及能力的儲存裝置通訊。在圖3中,儲存管理器135被示出為利用各種通訊協定與五種不同類型的儲存裝置進行通訊。儲存管理器135可利用較舊的協定305-1與疊瓦式硬碟驅動機120-1進行通訊,所述較舊的協定305-1可為串列AT附接(Serial AT Attachment,SATA)、小型電腦系統介面(Small Computer Systems Interface,SCSI)或其他恰當的協定。儲存管理器135可利用協定305-2與可為多重串流固態驅動機的較新的快閃記憶體儲存裝置120-2進行通訊,協定305-2可為經由四線外圍組件互連交換(Peripheral Component Interconnect Exchange,PCIe)連接。儲存管理器135可利用協定305-3與混合媒體儲存裝置102-3進行通訊,協定305-3可為串列附接小型電腦系統介面。儲存管理器135可利用協定305-4與較舊的快閃記憶體儲存裝置120-4進行通訊,協定305-4可為經由二線PCIe連接。且儲存管理器135可利用協
定305-5與跨結構快速非揮發性記憶體(Non-Volatile Memory Express Over Fabric,NVMeoF)儲存裝置120-5進行通訊,協定305-5可為乙太網路連接。
儘管快閃記憶體儲存裝置120-2及120-4以及NVMeoF儲存裝置120-5的概念被很好地理解,但關於疊瓦式硬碟驅動機120-1及混合媒體儲存裝置120-3的額外闡釋可為有用的。在傳統硬碟驅動機中,每一資料磁道是分離的:所述磁道不交疊。此簡化了對硬碟驅動機的資料管理:當欲改變資料時,可對原始磁道進行重寫,而不會影響硬碟驅動機上的任意其他資料。疊瓦式硬碟驅動機120-1使用疊瓦式磁記錄(Shingled Magnetic Recording,SMR),其中硬碟驅動機上的相鄰磁道彼此部分交疊。此方式具有增大硬碟驅動機的資料密度的優點(磁道越窄,便可寫入更多的資料),但其使得寫入資料的過程複雜化。具體而言,在將資料寫入硬碟驅動機時,所述寫入過程會影響相鄰的交疊磁道。因此,當疊瓦式硬碟驅動機120-1寫入資料時,其不將資料寫入原始磁道。相反,疊瓦式硬碟驅動機120-1將資料寫入新的磁道並使舊的磁道經受垃圾收集,很像快閃記憶體儲存裝置120-2及120-4以及NVMeoF儲存裝置120-5。
混合媒體儲存裝置120-3是包括多於一種類型的儲存媒體的儲存裝置。舉例而言,混合媒體儲存裝置120-3可包括多個不同類型的快閃記憶體,例如單層式儲存單元(SLC)、多層式儲存單元(Multi-Level Cell,MLC)、三層式儲存單元等。或者,混
合媒體儲存裝置120-3可包括一些快閃記憶體及一些其他儲存格式,例如硬碟驅動機。本發明概念的實施例可支援包括任意不同類型的儲存媒體的混合媒體儲存裝置120-3,對此並無限制。
儘管圖3示出儲存管理器135利用五種不同的協定與五種不同的儲存裝置進行通訊,但本發明概念的實施例可支援經由任意數目的協定與任意數目的儲存裝置進行通訊。儲存裝置120可包括類型的任意混合,且可使用協定305的任意混合來與儲存管理器135通訊。
圖4示出圖3所示的固態驅動機120-2的細節。在圖4中,固態驅動機120-2可包括主機介面邏輯405、固態驅動機控制器410以及可被組織入各種通道420-1至420-4中的各種快閃記憶體晶片415-1至415-8。主機介面邏輯405可管理固態驅動機120-2與圖1所示的儲存管理器135或機器105之間的通訊。固態驅動機120-2可使用裝置串流425-1至425-3來與圖1所示的儲存管理器135或主機機器105進行通訊。(固態驅動機120-2及圖1所示的主機機器105亦可被理解為經由應用程式串流進行通訊,如以下參照圖8所述:一般而言,歸屬於裝置串流425-1至425-3或應用程式串流的性質可被歸屬於其他類型的串流。)固態驅動機控制器410可管理對快閃記憶體晶片415-1至415-8的讀取操作及寫入操作以及垃圾收集操作。固態驅動機控制器410可包括快閃轉換層430以及嵌式微處理器435以執行一些此種管理。
儘管圖4將固態驅動機120-2示出為包括被組織入四個
通道420-1至420-4中的八個快閃記憶體晶片415-1至415-8,但本發明概念的實施例可支援被組織入任意數目的通道中的任意數目的快閃記憶體晶片。此外,本發明概念的實施例可支援任意數目的裝置串流425-1至425-3。
快閃記憶體晶片415-1至415-8可全部具有相同的類型,抑或快閃記憶體晶片415-1至415-8可具有不同的類型。舉例而言,在圖4中,快閃記憶體晶片415-1、415-2、415-5及415-6被示出為單層式儲存單元,而快閃記憶體晶片415-3、415-4、415-7及415-8被示出為多層式儲存單元。單層式儲存單元可僅儲存一個位元(0或1),且通常較多層式儲存單元更昂貴,但通常具有更快的寫入速度且可多次寫入及抹除。多層式儲存單元可以較低的成本儲存多於一個位元(取決於多層式儲存單元的種類而儲存二個、三個或更多個位元的資料),但通常寫入較慢且可讀取及抹除的次數較單層式儲存單元少。
儘管如圖4所示的固態驅動機120-2示出專用於固態驅動機120-2的細節,但圖4中表示的概念可被一般化至其他儲存裝置。舉例而言,圖3所示的疊瓦式硬碟驅動機120-1可使用具有讀取及寫入磁頭的磁性媒體而非使用快閃記憶體來儲存資料。但圖3所示的疊瓦式硬碟驅動機120-1可提供裝置串流425-1至425-3。舉例而言,圖1所示的疊瓦式硬碟驅動機120-1可以不同於固態驅動機120-2的方式管理其讀取操作及寫入操作,且可利用除固態驅動機控制器以外的組件來管理讀取操作及寫入操作。
但整體的功能-讀取及寫入資料、支援多重裝置串流等-是類似的。因此,儘管圖1所示的儲存裝置120的具體實施方式可變化,但圖3所示的其他儲存裝置120可支援相同的操作。
圖5示出圖1所示儲存裝置120的控制器410的細節。在圖5中,控制器410可包括接收器505、串流能力分析器510、傳送器515以及更新偵測器520。接收器505可自圖1所示的儲存管理器135接收對圖1所示儲存裝置120的串流能力的請求。由於控制器410可自動地將圖1所示的儲存裝置120的串流能力發送至圖1所示的儲存管理器135(亦即,無需來自圖1所示儲存管理器135的提示),因此接收器505是可選的。一些儲存裝置可被動地運作,從而僅在接收對資訊(例如,其串流能力)的請求之後才發送此資訊。或者一些儲存管理器可未被設立成接收未經請求的資訊,而是可能僅能夠在自儲存裝置請求串流能力之後才對所述儲存裝置的串流能力進行處理。在本發明概念的此種實施例中,接收器505可在控制器410執行對圖1所示儲存裝置120的自羅列之前自圖1所示的儲存管理器135接收請求。(接收器505可用於其他目的-例如自應用程式接收讀取請求及寫入請求-且因此無論如何均將可能為控制器410的一部分。但在本發明概念的所有實施例中,接收器505對於串流能力管理而言是非必要的)。
串流能力分析器510可確定圖1所示的儲存裝置120的串流能力。亦即,串流能力分析器510可羅列圖1所示的儲存裝置120並確定圖1所示的儲存裝置120具有何能力及限制。以下
參照圖6進一步論述可被羅列的能力及限制的實例。此資訊隨後可經由傳送器515被提供至圖1所示的儲存管理器135,藉此使得圖1所示的儲存管理器135能夠為來自應用程式的具體請求選擇最佳的裝置串流/儲存裝置。
更新偵測器520可偵測圖1所示的儲存裝置120的串流能力何時已改變。當圖1所示的儲存裝置120的串流能力已改變時,串流能力分析器510及傳送器515可重新執行其功能以將經更新的串流能力提供至圖1所示的儲存管理器135。
圖1所示的儲存裝置120的串流能力可因任意數目的原因而改變。舉例而言,圖1所示的儲存裝置120可將其圖4所示的裝置串流425-1至425-3中的一者分配至特定的應用程式或軟體串流,在此種情形中所述裝置串流一般不再可用。圖1所示的儲存裝置120隨後可向儲存管理器135更新其所報告的串流能力,藉此指示出圖1所示的儲存裝置120現在提供的裝置串流較之前少一個。
作為圖1所示的儲存裝置120可更新其串流能力的原因的另一實例,考量具有內置自動串流能力的儲存裝置:亦即,執行其自身(內部)串流的儲存裝置。對於此種儲存裝置而言,圖1所示的儲存管理器135可能不需要為發送至所述儲存裝置的請求指定特定的串流,而相反的可僅依賴於所述儲存裝置的自動串流能力來管理串流指派。若控制儲存裝置如何執行自動串流的參數改變,則此改變將影響圖1所示的儲存管理器135是否將想要依
賴於儲存裝置的自動串流能力。藉由報告此改變,圖1所示的儲存管理器135瞭解儲存裝置的當前串流能力情況,藉此使得儲存管理器135為請求更佳地選擇恰當的裝置串流/儲存裝置。舉例而言,儲存裝置的自動串流能力的改變可指圖1所示的儲存管理器135不應再依賴於儲存裝置的自動串流能力且相反應自身指派串流。
圖1所示的儲存裝置120可更新其串流能力的原因的其他實例可為實體裝置自身的變化或其與圖1所示的主機機器105的連接的變化。舉例而言,若圖1所示的儲存裝置120是使用乙太網路進行主要連接且使用快速外圍組件互連作為次要連接(例如,作為命令平面(command plane))的乙太網路固態驅動機且乙太網路連接失敗,則圖1所示的儲存裝置120可切換至PCIe連接用於資料通訊。與圖1所示的主機機器105的連接的此種變化可影響可如何使用圖1所示的儲存裝置120(例如減小帶寬)。
注意,未論述關於串流能力是如何被報告至圖1所示的儲存管理器135的具體細節。此是藉由設計決定。本發明概念的實施例與自圖1所示的儲存裝置120被報告至圖1所示的儲存管理器135的資訊相關;與資料以何種格式被呈現至圖1所示的儲存管理器135不太相關。於2017年7月18日提出申請、序列號為15/653,479的未決美國專利申請案闡述一種圖1所示的儲存裝置120可向圖1所示的儲存管理器135報告其串流能力的方式,但本發明概念的實施例可支援圖1所示的儲存裝置120可藉由其
向圖1所示的儲存管理器135報告其串流能力的其他機制,所述美國專利申請案主張於2017年4月11日提出申請、序列號為62/484,387的美國臨時專利申請案的權利,所述美國專利申請案及所述美國臨時專利申請案二者均出於全部目的併入本案供參考。提供某種方式以向圖1所示的儲存管理器135報告所述資訊,用於做出所述報告的具體方式是不相關的。
控制器410可在啟動時執行對圖1所示的儲存裝置120的自羅列。如上所述的更新偵測器520的存在,控制器410亦可在其他時間執行對圖1所示的儲存裝置120的自羅列,例如在偵測到更新時。即使在未偵測到變化時,控制器410亦可執行對圖1所示的儲存裝置120的自羅列。控制器410可執行對圖1所示的儲存裝置120的週期性自羅列:例如,每天一次(或以任何其他所需的間隔)。此週期可利用定時器(圖5中未示出)進行量測,當定時器已完成對所述週期的量測時,定時器便可觸發串流能力分析器510及傳送器515的操作。
圖6示出可由圖1所示的儲存裝置120報告至圖1所示的儲存管理器135的各種串流能力。在圖6中,串流能力605包括各種能力。該些能力包括:
˙裝置串流的數目610:圖1所示的儲存裝置120支援多少圖4所示的裝置串流425。
˙抹除區塊大小615:圖1所示的儲存裝置120中的抹除區塊的大小(假定圖1所示的儲存裝置120執行垃圾收集或類似操
作)。
˙物理異質性620:在圖1所示的儲存裝置120內可獲得何種不同類型的儲存器。舉例而言,在圖4中,快閃記憶體晶片415-1、415-2、415-5及415-6是單層式儲存單元,而快閃記憶體晶片415-3、415-4、415-7及415-8是多層式儲存單元。若圖1所示的儲存裝置120內的所有儲存器均相同,則無論資料被寫入圖1所示的儲存裝置120中的何處,均存在較少差異或不存在差異。但若圖1所示的儲存裝置120支援不同類型的儲存器,則資料實際被寫入何處可對圖1所示的儲存裝置120的效能產生影響。
˙自動串流能力625:圖1所示的儲存裝置120是否支援自動串流,以及由圖1所示的儲存裝置120支援的自動串流的參數。若圖1所示的儲存裝置120支援自動串流且自動串流參數是有用的,則圖1所示的儲存管理器135可遵從圖1所示的儲存裝置120以執行內部自動串流而非自外部施加所選擇的裝置串流。
˙最佳串流寫入大小630:圖1所示的儲存裝置120是否具有最佳或實質上最佳的串流寫入大小。最佳串流寫入大小630可與儲存裝置120的各種約束條件相關,所述約束條件例如為:快閃區塊頁面大小、緩衝器大小、在儲存裝置120上同時運作的串流的數目以及該些串流消耗的帶寬、以及其他因素。
˙儲存器內計算635:圖1所示的儲存裝置120是否提供儲存
器內計算,且若提供,則儲存器內計算能力包括例如處理器的數目、每一處理器每秒的指令數目、被在儲存器內計算處理器上運行的應用程式用來儲存資料的可用記憶體的量等。
˙編程/抹除速度參數640:關於圖1所示的儲存裝置120如何執行垃圾收集的參數(假定圖1所示的儲存裝置120執行垃圾收集)。該些參數可包括:對抹除區塊進行抹除所需的時間、對來自抹除區塊的有效資料進行編程所需的平均時間等。注意,該些參數可包括抹除區塊大小615。
˙緩衝器大小645:儲存裝置120中所包括的緩衝器的大小。注意,緩衝器大小645可包括額外的相關緩衝器資訊:例如,緩衝器是否在圖4所示的所提供裝置串流425(或名稱空間)中進行劃分,或緩衝器是否在圖4所示的裝置串流425(或名稱空間)上共享。
˙吞吐量(throughput)限制650:圖1所示的儲存裝置120的限制:例如,可用帶寬或延遲。
˙韌體版本655:圖1所示的儲存裝置120的韌體的版本(此對圖4所示的裝置串流425-1至425-3的操作具有影響)。
圖6中所示的因素僅代表可影響圖1所示儲存裝置120的串流能力的多個因素的小的子集。舉例而言,圖1所示的儲存裝置120的自由區塊計數(或相關地,指示圖1所示的儲存裝置120的滿載率的百分比)可指示圖1所示的儲存裝置120是否將需要在不遠的將來執行垃圾收集以及在何種程度上執行垃圾收集,
此亦可影響(至少在短期內)圖1所示的儲存裝置120的串流能力。於2017年7月18日提出申請、序列號為15/653,479的未決美國專利申請案列舉可被報告的關於圖1所示的儲存裝置120的眾多其他資訊,所述資訊可影響圖1所示的儲存裝置120的效能(且因此影響圖1所示的儲存裝置120的串流能力),其中所述美國專利申請案主張於2017年4月11日提出申請、序列號為62/484,387的美國臨時專利申請案的權利,所述美國專利申請案及所述美國臨時專利申請案二者均出於全部目的併入本案供參考。所有該些因素均被視為圖6所示的串流能力605的一部分,且因此可被報告至圖1所示的儲存管理器135。
圖7示出圖1所示的儲存裝置120將圖6所示的串流能力605傳遞至圖1所示的儲存管理器135。在圖7中,儲存管理器135可發送請求705至儲存裝置120,藉此自儲存裝置120請求串流能力605;作為回應,儲存裝置120隨後可將串流能力605發回至儲存管理器135。注意,儲存裝置120可在無需提示的情況下將串流能力605發送至儲存管理器135:請求705可為可選的,此闡釋了為何請求705示出於括弧中。
在以上論述中,假定儲存管理器135想要知曉圖1所示的儲存裝置120的所有串流能力。儘管此假定是合理的,因為如此便給予了儲存管理器135最大的資訊供儲存管理器135為軟體請求選擇裝置串流/儲存裝置,但儲存管理器135可僅依賴於圖1所示的儲存裝置120的一些串流能力。在彼種情景中,請求705
可載明儲存管理器135具體對哪些串流能力感興趣,且圖1所示的儲存裝置120隨後可僅將該些感興趣的串流能力報告至儲存管理器135。
圖8示出在圖1所示的機器105上運行且經由軟體串流發送請求的應用程式。在圖8中,示出了應用程式805。應用程式805可指定任意數目的軟體串流:圖8示出三個軟體串流810-1至810-3。與每一串流相關聯的可為請求,例如請求815。
圖9示出圖1所示的儲存管理器135的細節。在圖9中,儲存管理器135可包括接收器905、裝置串流選擇器910以及傳送器915。接收器905可自圖1所示的儲存裝置120接收圖6所示的串流能力605。接收器905亦可自圖1所示的機器105上的應用程式接收圖8所示的請求815。裝置串流選擇器910可為圖8所示的請求815自裝置串流425選擇裝置串流。傳送器915隨後可將圖8所示的請求815傳送至圖1所示的所選擇儲存裝置120,藉此指定所選擇的裝置串流。
儘管圖6所示的串流能力605提供關於圖1所示的儲存裝置120的能力的有用資訊,但圖1所示的儲存裝置120未必知曉可影響串流的某些因素。舉例而言,與儲存裝置120進行通訊所需的時間(若圖1所示的儲存裝置120不位於圖1所示的機器105內)不是圖1所示的儲存裝置120將知曉的內容。因此,儲存管理器135亦可包括擴充器(augmenter)920。擴充器920可以與儲存裝置不相關的考量因素擴充圖6所示的串流能力605,儲存管
理器135(或圖1所示的機器105內的一些其他組件)可量測所述與儲存裝置不相關的考量因素。擴充器920可量測在儲存管理器135與圖1所示的儲存裝置120之間進行通訊所需的時間、或沿圖1所示的處理器110與圖1所示的儲存裝置120之間的連接的帶寬、以及其他可能性。儲存管理器135然後可將由擴充器920確定的此資訊添加至圖6所示的串流能力605中,以提供關於圖1所示的儲存裝置120的額外資訊。
最後,儲存管理器135可包括儲存器925。儲存器925可儲存例如串流能力資料結構930等資訊,串流能力資料結構930可儲存來自圖1所示的每一儲存裝置120的圖6所示的串流能力605。
在本發明概念的一些實施例中,在儲存管理器135接收每一請求時,裝置串流選擇器910可自應用程式接收個別請求並選擇恰當的裝置串流。但在本發明概念的其他實施例中,裝置串流選擇器910可提前確定哪一裝置串流應被用於與個別軟體串流相關聯的請求。在本發明概念的此種實施例中,儲存器925可儲存映射資料結構935,映射資料結構935將軟體串流映射至裝置串流。
圖10A至圖10B示出用以儲存圖1所示儲存裝置120的圖6所示串流能力605以及相關資訊的圖9所示示例性資料結構930及935。在圖10A中,示出了表1005;且在圖10B中,示出了表1010。
表1005是可儲存圖1所示儲存裝置120的圖6所示串流能力605的資料結構930的實例。在表1005中示出的資訊僅為實例:本發明概念的實施例可支援任意數目的儲存裝置、每一儲存裝置(或每一媒體類型)任意數目的串流、以及每一儲存裝置(或每一媒體類型)任意其他參數。
在圖10A所示的表1005中,裝置可藉由裝置辨識符(ID)進行辨識,且相關聯的串流辨識符亦可被儲存。注意,儘管具有裝置辨識符1及裝置辨識符2的儲存裝置在物理上是均質的-具有裝置辨識符1的儲存裝置僅提供疊瓦式磁記錄(SMR),而具有裝置辨識符2的儲存裝置僅提供多層式儲存單元(MLC)-具有裝置辨識符3的儲存裝置在物理上是異質的:亦即,所述儲存裝置具有多種不同的媒體類型:具體而言,單層式儲存單元(SLC)媒體及多層式儲存單元(MLC)媒體。因此,不同的媒體類型可得到在表1005中具有其自身單獨的表項。
除具有裝置辨識符3的儲存裝置包括多個媒體類型此一事實以外,表1005亦指示在為串流選擇儲存裝置時的其他相關因素。具有裝置辨識符3的儲存裝置支援儲存器內計算;具有裝置辨識符1及裝置辨識符2的儲存裝置不支援儲存器內計算。具有裝置辨識符2及裝置辨識符3的儲存裝置支援尾延遲管理(tail latency management);具有裝置辨識符1的儲存裝置不支援尾延遲管理。具有裝置辨識符1的儲存裝置使用6十億位元組(GB)的SAS連接;具有裝置辨識符2的儲存裝置使用10十億位元組的乙
太網路連接;具有裝置辨識符3的儲存裝置使用四道PCIe連接。具有裝置辨識符1的儲存裝置具有64百萬位元組(MB)的垃圾收集抹除區塊大小;具有裝置辨識符2及裝置辨識符3的提供多層式儲存單元(MLC)媒體的儲存裝置具有4百萬位元組的垃圾收集抹除區塊大小;具有裝置辨識符3的提供單層式儲存單元(SLC)媒體的儲存裝置具有1百萬位元組的垃圾收集抹除區塊大小。三個儲存裝置均具有變化的垃圾收集延遲,介於對具有裝置辨識符3的儲存裝置的單層式儲存單元(SLC)媒體而言為低與對具有裝置辨識符1的儲存裝置而言為極高之間(注意,可使用延遲數值來代替使用例如「低」、「中等」、「高」及「極高」等武斷的描述語)。三個儲存裝置亦均提供不同的緩衝器大小:具有裝置辨識符3的儲存裝置在單層式儲存單元(SLC)媒體與多層式儲存單元(MLC)媒體之間共享其1GB的緩衝器。
在本發明概念的一些實施例中,儲存裝置可與名稱空間相關聯。儘管在圖10A至圖10B中未示出,但本發明概念的此種實施例允許在表1005中具有更精細的資訊粒度。
圖10B所示的表1010是可儲存串流相關資訊的資料結構935的實例,如可在自圖8所示的軟體串流810-1至810-3至圖4所示的裝置串流425-1至425-3的映射中使用。在表1010中,示出了各種使用情形:長期儲存(其中不期望資料頻繁變化)、儲存器內計算操作(此可能需要對頻繁變化的資料進行快速存取)、以及高吞吐量(其中存取速度被認為是重要的)。與每一使用情形
相關聯的是自各種儲存裝置選擇的串流、以及針對每一使用情形辨識所選擇的串流時使用的權重,其中所述權重對應於表1010中的各欄。
一般而言,權重可被指派位於0與1之間的值,藉此反映所述串流能力相對於根據所述串流能力的儲存裝置的等級的相對優先權(儘管本發明概念的實施例可使用具有任意所需值及/或範圍的權重)。對於任一給定串流能力而言,權重愈靠近0,則所述串流能力被視為愈重要。
每一儲存裝置可根據每一串流能力進行排名。使用垃圾收集延遲作為實例,具有裝置辨識符3的儲存裝置的單層式儲存單元媒體可被指派等級1,而具有裝置辨識符1的儲存裝置可被指派等級4。由於較低的數字被視為較佳,因此權重愈靠近0,則所述串流能力被視為愈重要。
一些串流能力(如垃圾收集延遲)可在所有的使用情形中以同樣的方式被排名。舉例而言,執行垃圾收集所需的時間量愈大,儲存裝置(對於所述能力)的效能愈差。對於一些使用情形而言,此種考量因素可能不是重要的;對於其他使用情形而言,此種考量因素可能是極重要的。但無論所述能力如何重要,儲存裝置均可根據所述能力以同樣的方式被排名。
另一方面,一些串流能力可隨著使用情形變化。舉例而言,考量圖10A所示的表1005中所示的儲存裝置中的每一者的媒體類型。具有裝置辨識符1的儲存裝置提供疊瓦式磁記錄,具有
裝置辨識符2的儲存裝置提供多層式儲存單元,且具有裝置辨識符3的儲存裝置提供單層式儲存單元及多層式儲存單元兩者。該些不同的媒體具有不同的特性,此影響其對於在不同情景中儲存資料而言是好的選擇還是不好的選擇。儘管可使用任一媒體類型來儲存任一使用情形的資料,但在不同的使用情形中,某些媒體類型有可能較其他媒體類型為更佳的「適配」:任一特定媒體類型不可能被視為對於所有使用情形而言均為最佳的(儘管在特定的環境中端視所需的使用情形,單一媒體類型可能對所有使用情形而言均為最佳的)。因此,對於長期資料儲存而言,疊瓦式磁記錄可能相較於單層式儲存單元或多層式儲存單元而言為較佳的,而對於儲存器內計算使用情形及高吞吐量使用情形而言,單層式儲存單元可為較佳的。
為根據媒體類型對儲存裝置恰當地分配權重,因此需要一種與單純對儲存裝置進行排名不同的方式。一種可能性是基於所論述的使用情形確定儲存裝置的排名。舉例而言,儲存裝置針對長期儲存使用情形而言可以裝置辨識符1、裝置辨識符2以及裝置辨識符3的次序進行排名,且針對其他使用情形而言可以裝置辨識符3、裝置辨識符2以及裝置辨識符1的次序進行排名。另一種可能性是簡單地將所有儲存裝置視為具有相等的「排名」且對不同的媒體類型應用不同的權重。舉例而言,在長期儲存使用情形中,可為疊瓦式磁記錄提供指示較高權重的較低的值(例如,0.25),且單層式儲存單元及多層式儲存單元可被給予以較高的值
(即,較低的權重),例如0.5及/或0.75。相反,單層式儲存單元針對儲存器內計算使用情形及高吞吐量使用情形而言可被給予以較低的值(較高的權重),例如0.25,且多層式儲存單元及疊瓦式磁記錄可被給予以較高的值(即,較低的權重),例如0.5及/或0.75。(針對各種媒體類型所示的值僅為示例性值,且可任意地使用所需的值)。藉由將媒體類型如何與使用情形相互作用作為考量因素進行考量,無論使用哪一種方式,均可確定用於具體使用情形的最佳儲存裝置。
一旦針對每一使用情形已知了儲存裝置對於每一能力的所有的權重及排名,便可計算每一儲存裝置對於每一串流能力的排名的加權總和。然後可針對具體的使用情形選擇具有最低加權總和的儲存裝置作為最佳的儲存裝置。
注意,儲存裝置針對具體的串流能力進行排名的方式可對如何指派權重產生影響。舉例而言,若儲存裝置自最低垃圾收集延遲至最高垃圾收集延遲進行排名,則具有正值的較低權重有利於快速垃圾收集。若儲存裝置自最高垃圾收集延遲至最低垃圾收集延遲進行排名,則快速垃圾收集可能需要具有較大絕對值的負權重。
對於長期儲存使用情形而言,已自具有裝置辨識符1的儲存裝置選擇了裝置串流0至3。SMR媒體相較於多層式儲存單元媒體或單層式儲存單元媒體為有利的,儲存器內計算及尾延遲管理被視為具有低優先權,而垃圾收集延遲被視為具有高優先
權。注意連接、垃圾收集抹除區塊大小及緩衝器大小的權重0:該些標準被視為一點也不重要,且可針對此使用情形被忽略。
對於儲存器內計算使用情形而言,已自具有裝置辨識符3的儲存裝置選擇了裝置串流12至13。注意使用-100作為儲存器內計算能力的權重:此「大的」負值強調此串流能力是「必須具有」的標準。畢竟,若儲存裝置不具有儲存器內計算能力,則所述儲存裝置可能不支援儲存器內計算使用情形。但若有多於一個儲存裝置提供儲存器內計算,則其他串流能力的權重仍可有影響。因此,剩餘的權重示出單層式儲存單元媒體較多層式儲存單元媒體有利,多層式儲存單元媒體較SMR媒體有利,尾延遲管理及垃圾收集延遲被認為是重要的,垃圾收集抹除區塊大小及緩衝器大小被認為具有低的重要性,且連接類型被認為不相關。
對於高吞吐量使用情形而言,已自具有裝置辨識符2的儲存裝置選擇了裝置串流4-11。權重指示出儲存器內計算及垃圾收集延遲被認為是重要的,垃圾收集抹除區塊大小及連接類型被認為具有中等重要性,且尾延遲管理及緩衝器大小具有低重要性。
在為具體軟體串流辨識恰當的儲存裝置(直接辨識或經由如上所述的使用情形進行辨識)時使用的權重可由圖1所示的儲存管理器135確定或由圖8所示的應用程式805確定。亦即,圖8所示的應用程式805可指定用於對軟體串流的具體要求的權重,抑或圖1所示的儲存管理器135可選擇恰當的權重以用於基於被執行的操作而選擇裝置串流。舉例而言,若資料被寫入用於
長期儲存,則相較於資料需要快速存取及頻繁變化的情形,可應用不同組的權重。亦可基於額外的資訊設定(或調整)權重。舉例而言,圖8所示的應用程式805可設定其所需的權重,但基於由圖1所示的機器105提供的應許服務品質(或基於圖8所示的應用程式805的應付內容),可將所述權重上調或下調以反映目標服務品質。若權重是由圖8所示的應用程式805提供,則若多個應用程式串流810-1至810-3(或不同應用程式805的應用程式串流)各自自圖1所示的同一儲存裝置120請求相同的裝置串流(或自串流池請求足夠的裝置串流至超過串流池的容量,如下所述),則具有較佳加權總和的應用程式串流可被分配所請求的裝置串流,而其他應用程式串流被分配次佳的裝置串流:例如,與次佳裝置或次佳串流池相關聯的裝置串流。
可確定應用程式所提供權重的另一種方式是藉由考量為每一衝突的應用程式串流分配所請求的裝置串流的結果:具體而言,將被指派次佳裝置串流的其他應用程式串流的結果。舉例而言,考量其中一個應用程式需要極低延遲裝置串流且另一個應用程式僅偏好單層式儲存單元儲存的情景。使用圖10A所示的表1005,所述兩個應用程式串流均將被指向具有裝置辨識符3、串流辨識符12-13的儲存裝置。雖然第二應用程式串流偏好單層式儲存單元,其可利用串流辨識符4-11或14-17以多層式儲存單元勉強應對。但僅串流辨識符12-13提供第一應用程式串流所需的低延遲。若第一應用程式串流未被分配串流辨識符12至13中的一
者,則第一應用程式串流可顯著地受到不利影響。因此,藉由比較對未被指派其偏好的串流的應用程式串流的影響的大小,應用程式串流可被分配至其偏好的裝置串流,即使基於加權總和,另一應用程式應被分配所述裝置串流。
注意,通常僅儲存表1005及1010中的一者。鑒於所述表中的一者中的資訊,可(至少部分地)得出在另一個表中的資訊。
圖11示出示例性機制的操作的流程圖,圖1所示的儲存管理器135可藉由所述示例性機制向應用程式指派串流。在圖11中,圖3所示的儲存管理器135可自圖1所示的儲存裝置120接收串流能力605-1至605-3。結合與儲存裝置不相關的考量因素1105-例如不位於圖1所示的機器105內的儲存裝置的網路延遲-以及圖8所示的軟體串流810-1至810-3的服務品質要求1110,圖1所示的儲存管理器135可將裝置串流1115分類成提供不同能力的串流類別(或池)。舉例而言,一些裝置串流可被分類為高效能串流,在所述高效能串流中響應較快(例如,在圖1所示的儲存裝置120內所述串流被指派較高的優先權進行處理,抑或所述串流以較高的帶寬或以較低的延遲運作,以及其他可能性),而其他串流可被分類為較低的效能串流(例如,所述串流由較舊的儲存裝置提供,抑或所述串流由使用較慢的連接或可靠性較低的連接的儲存裝置支援)。
可存在任意數目的類別:本發明概念的實施例不限制裝
置串流被分類為「較高效能」或「較低效能」。圖1所示的儲存管理器135可建立任意所需數目的類別,但通常存在較不同儲存裝置及媒體類型的數目少的類別。類別未必互相排除:由儲存裝置支援的具體串流可根據其可能的使用而被指派至多於一個類別(舉例而言,高效能串流亦可為支援儲存器內計算的串流)。當然,若串流被指派至多於一個類別,則若所述串流被分配至特定用途,則所述串流將需要被自所有類別移除(以避免嘗試再次使用所述串流)。
一旦圖4所示的裝置串流425-1至425-3被分類,則因應於軟體串流要求1120,圖1所示的儲存管理器135可為圖8所示的軟體串流810-1至810-3選擇裝置串流1125。圖1所示的儲存管理器135可使用1130圖4所示的裝置串流425-1至425-3。使用1130圖4所示的裝置串流425-1至425-3隨後可產生影響串流能力605-1至605-3的回饋,所述回饋然後可被再次提供至圖1所示的串流管理器135,藉此可能改變圖1所示的串流管理器135在將來可如何使用圖4所示的裝置串流425-1至425-3。
注意,對串流1115進行分類是可選的。在未首先對圖4所示的裝置串流425-1至425-3進行分類的情況下,圖1所示的儲存管理器135可為圖8所示的軟體串流810-1至810-3選擇圖4所示的裝置串流425-1至425-3。
圖12示出圖9所示的裝置串流選擇器910的細節。在圖12中,裝置串流選擇器910可包括映射器1205、映射更新器
1210以及權重指派器1215。映射器1205可採用圖6所示的串流能力605並使串流能力605與圖8所示的軟體串流810-1至810-3進行匹配。映射更新器1210可判斷圖6所示的串流能力605已改變並相應地更新串流能力605。(作為另一選擇,當圖6所示的串流能力605已改變時,映射器1205可僅被重新調用以針對圖1所示的儲存裝置120重建圖6所示的串流能力605。)且權重指派器1215可為對圖8所示的軟體串流810-1至810-3的軟體串流要求1120指派權重,以用於為圖8所示的軟體串流810-1至810-3選擇圖4所示的裝置串流425-1至425-3。權重指派器1215可自任意源指派權重。舉例而言,權重可來自特定使用情形的使用者,或來自儲存有各種使用情形的串流能力的權重的檔案。
圖13示出圖12所示的映射器1205的細節。如以上所論述,在本發明概念的一些實施例中,圖1所示的儲存管理器135可對圖4所示的裝置串流425-1至425-3以及圖8所示的軟體串流810-1至810-3進行分類。圖13代表在本發明概念的此種實施例中映射器1205的操作。映射器1205可包括裝置串流分類器1305及軟體串流分類器1310。裝置串流分類器1305可將圖4所示的裝置串流425-1至425-3分類成類別或池,且軟體串流分類器1310可類似地將圖8所示的軟體串流810-1至810-3分類成類別。此容許映射器1205基於對應的類別將圖8所示的軟體串流810-1至810-3與圖4所示的裝置串流425-1至425-3進行匹配。
本發明概念的實施例相較於傳統系統提供若干技術優
點。首先,藉由向圖1所示的儲存管理器135提供關於圖1所示的儲存裝置120的串流能力的更多資訊,圖1所示的儲存管理器135可甚至跨越多個媒體類型來管理串流(在儲存裝置內或跨越儲存裝置)。其次,圖1所示的儲存管理器135可更好地利用圖1所示的儲存裝置120。舉例而言,圖8所示的應用程式805可向不同串流指派不同配置(profile)。在傳統系統中,來自圖8所示的應用程式805的資料最終將存至圖3所示的儲存裝置120-1至120-5上,但不具有任何有組織的放置且不考量圖3所示的儲存裝置120-1至120-5的串流特性。但在本發明概念的實施例中,與圖8所示的不同軟體串流810-1至810-3相關聯的資料可被發送至特定的不同儲存裝置。此結果避免在低效能串流中的資料上浪費高效能資源。舉例而言,預定進行長期儲存的資料可被儲存於硬碟驅動機而非快閃記憶體儲存裝置上。
圖14示出根據本發明概念的實施例,圖1所示的儲存裝置120自羅列其圖6所示串流能力605並將此資訊發送至圖1所示儲存管理器135的示例性程序的流程圖。在圖14中,在方塊1405處,圖5所示的接收器505可自圖1所示的儲存管理器135接收圖7所示的請求705。方塊1405是可選的,如由虛線箭頭1410所示。在方塊1415處,圖5所示的串流能力分析器510可羅列圖1所示的儲存裝置120的圖6所示的串流能力605。在方塊1420處,圖1所示的儲存裝置120可辨識使用圖1所示的儲存裝置120的圖1所示的儲存管理器135。方塊1420是可選的,如由虛線1425
所示。在方塊1430處,圖5所示的傳送器515可將圖6所示的串流能力605報告至圖1所示的儲存管理器135。
若圖1所示的儲存裝置120僅自羅列圖6所示的串流能力605一次,則流程可結束。但如上所述,存在其中圖1所示的儲存裝置120可自羅列圖6所示的串流能力605多於一次的情景。在一個實例中,圖1所示的儲存裝置120可週期性地重複自羅列以確定圖6所示的最正確的串流能力605,所述最正確的串流能力然後可被報告至圖1所示的儲存管理器135。在第二實例中,圖1所示的儲存裝置120可偵測到圖6所示的串流能力605已改變,此將證明重複自羅列並向圖1所示的儲存管理器135進行報告是合理的。對方塊1415、1420及1430的重複執行可為特別重要的,其中圖1所示的儲存裝置120將圖6所示的串流能力605報告至圖1所示的多個儲存管理器135:圖1所示的一個儲存管理器135的動作可影響其他儲存管理器,但若無圖1所示的儲存裝置120向所述其他儲存管理器報告圖6所示的串流能力605的變化,則所述其他儲存管理器可能並不知曉所述變化。在第三實例中,雖然方塊1415、1420及1430闡述向圖1所示的單個儲存管理器135報告圖6所示的串流能力605,但圖1所示的儲存裝置120可能需要向圖1所示的多於一個儲存管理器135報告串流能力。(儘管可藉由僅重複方塊1420及1430而未必多次執行方塊1415來完成向圖1所示的多個儲存管理器135報告圖6所示的串流能力605,但可能存在其中方塊1415也需要被重複的情景:例如,若圖1所示
的不同儲存管理器135想要圖6所示的不同串流能力605被報告。)
若圖1所示的儲存裝置120執行對圖6所示的串流能力605的週期性報告,或若圖1所示的儲存裝置120需要向圖1所示的多個儲存管理器135報告圖6所示的串流能力605,則可跟隨虛線1435來執行額外的報告。作為另一選擇,若圖1所示的儲存裝置120可判斷圖6所示的串流能力605是否已改變,則在方塊1440處,圖5所示的更新偵測器520可執行此種檢查。若所述檢查指示出圖6所示的串流能力605已改變,則控制可返回至方塊1415以重複對圖6所示的串流能力605的自羅列並將此資訊報告至圖1所示的儲存管理器135。
圖15示出根據本發明概念的實施例,圖1所示的儲存裝置120判斷其圖6所示的串流能力605何時已改變的示例性程序的流程圖。在圖15中,在方塊1505處,圖5所示的更新偵測器520可進行檢查以查看其圖4所示的裝置串流425中的任一者是否已被分配至特定用途(且因此一般而言為不可用的)。若結果為否,則在方塊1510處,圖5所示的更新偵測器520可進行檢查以查看其自動串流能力是否已改變。自動串流可為適應性過程,因圖1所示的儲存裝置120判斷如何最佳地管理其所接收的資料,且因此自動串流可隨時變化。若結果為否,則在方塊1515處,圖5所示的更新偵測器520可進行檢查以查看是否任意其他串流能力已改變:例如,儲存裝置吞吐量、儲存裝置讀取/寫入/抹除延遲、串流被分配或解除分配、大的儲存器內計算工作開始、以及
其他可能性。若該些檢查中的任一者返回肯定結果,則在方塊1520處,圖1所示的儲存裝置120知曉其圖6所示的串流能力605已改變。否則,在方塊1525處,圖1所示的儲存裝置120知曉其圖6所示的串流能力605未改變。
圖16示出根據本發明概念的實施例,圖1所示儲存管理器135向圖1所示儲存裝置120中的圖4所示裝置串流425指派請求的示例性程序的流程圖。在圖16中,在方塊1605處,圖9所示的接收器905可自圖6所示的儲存裝置120接收圖6所示的串流能力605。若圖9所示的接收器905自圖1所示多於一個儲存裝置120接收圖6所示的串流能力605,則方塊1605可被重複,如由虛線1610所示。在方塊1615處,圖9所示的擴充器920可以與儲存裝置不相關的考量因素擴充圖6所示的串流能力605。方塊1615可被省略,如由虛線1620所示。在方塊1625處,圖9所示的接收器905可自圖8所示的軟體串流810接收圖8所示的請求815。在方塊1630處,圖1所示的儲存管理器135可確定圖11所示的軟體串流要求1120。在方塊1635處,圖9所示的裝置串流選擇器910可選擇圖4所示的裝置串流425以自圖8所示的軟體串流810接收請求。在方塊1640處,圖9所示的傳送器915可將圖8所示的請求815發送至圖4所示所選擇的裝置串流425。
圖17示出根據本發明概念的實施例,圖1所示的儲存管理器135將圖8所示的軟體串流810映射至圖4所示的裝置串流425的示例性程序的流程圖。在圖17中,在方塊1705處,圖
13所示的裝置串流分類器1305可將圖4所示的每一裝置串流425指派至類別。在方塊1710處,圖13所示的軟體串流分類器1310可將圖8所示的每一軟體串流810指派至類別。在方塊1715處,圖12所示的映射器1205可將圖8所示的軟體串流810映射至圖4所示的裝置串流425。在方塊1720處,圖9所示的裝置串流選擇器910可為圖8所示的具體軟體串流810選擇圖4所示的裝置串流425。
在方塊1725處,圖9所示的接收器905可自圖1所示的儲存裝置120接收圖6所示的經更新的串流能力605。在彼種情形中,在方塊1730處,圖1所示的映射更新器1210可基於圖6所示的經更新的串流能力605更新自圖8所示的軟體串流810至圖4所示的裝置串流425的映射。
圖18示出根據本發明概念的實施例,圖1所示的儲存管理器135為圖8所示的軟體串流810選擇圖4所示的裝置串流425的示例性程序的流程圖。在圖18中,在方塊1805處,圖12所示的權重指派器1215可將權重指派至圖11所示的服務品質要求1110。在方塊1810處,圖1所示的儲存管理器135可基於個別的串流能力對圖4所示的裝置串流425進行排名。在方塊1815處,圖1所示的儲存管理器135可基於串流能力的權重及排名利用加權總和為圖8所示的軟體串流810選擇圖4所示的裝置串流425。
在圖14至圖18中,示出本發明概念的一些實施例。但熟習此項技術者將認識到,藉由改變所述方塊的次序、藉由省略
方塊、或藉由包括圖式中所未示出的鏈接,本發明概念亦可具有其他實施例。所述流程圖的所有此類變型應被視為本發明概念的實施例,而無論是否明確地如此闡述。
以下論述旨在提供對可在其中實作本發明概念某些態樣的一或多個適當的機器的簡短總體說明。所述一或多個機器可至少部分地藉由以下來控制:來自例如鍵盤、滑鼠等傳統輸入裝置的輸入;以及自另一機器接收到的指令、與虛擬實境(virtual reality,VR)環境、生物統計回饋(biometric feedback)、或其他輸入訊號的交互作用。本文中所用用語「機器」旨在廣泛地囊括單一機器、虛擬機器、或由以通訊方式耦合的一起運作的機器、虛擬機器、或集體作業的多個裝置。示例性機器包括:運算裝置,例如個人電腦、工作站、伺服器、可攜式電腦、手持式裝置、電話、平板(tablet)等;以及運輸裝置,例如私人或公共運輸(例如汽車、火車、計程車等)。
所述一或多個機器可包括嵌式控制器,例如可程式化或非可程式化邏輯裝置或陣列、特殊應用積體電路(Application Specific Integrated Circuit,ASIC)、嵌式電腦、智慧卡等。所述一或多個機器可利用連接至一或多個遠端機器(例如藉由網路介面、數據機、或其他通訊性耦合)的一或多個連接。機器可以例如內部網路(intranet)、網際網路、局域網路、廣域網路等實體及/或邏輯網路的方式進行互連。熟習此項技術者將理解,網路通訊可利用各種有線及/或無線短程或長程載體及協定,所述載體及協
定包括射頻(radio frequency,RF)、衛星、微波、電氣及電子工程師學會(Institute of Electrical and Electronics Engineers,IEEE)802.11、藍牙、光學的、紅外的、纜線、雷射等。
可藉由參照或結合相關聯資料來闡述本發明概念的實施例,所述相關聯資料包括當由機器存取時使得所述機器執行任務或定義抽象資料類型或低層階硬體相關的功能、程序、資料結構、應用程式等。相關聯資料可儲存於例如揮發性及/或非揮發性記憶體(例如,隨機存取記憶體、唯讀記憶體等)中,或儲存於包括硬驅動機、軟磁碟(floppy disk)、光學儲存器、磁帶(tapes)、快閃記憶體、記憶條(memory stick)、數位視訊碟、生物儲存器等其他儲存裝置及其相關聯儲存媒體中。相關聯資料可以藉由封包、串列資料、平行資料、傳播訊號等形式經由包括實體及/或邏輯網路在內的傳輸環境而遞送,且可以壓縮或加密格式使用。相關聯資料可用於分佈式環境中,且可在本地及/或遠程地儲存以供機器存取。
本發明概念的實施例可包括包含可由一或多個處理器執行的指令的有形非暫時性機器可讀媒體(machine-readable medium),所述指令包括用於執行本文所述本發明概念的要素的指令。
已參照所示實施例闡述並示出了本發明概念的原理,應認識到,在不背離此類原理的條件下,可在排列及細節上對所示實施例加以潤飾,且可以任何所需方式加以組合。並且,儘管以
上論述著重於具體實施例,然而預期存在其他配置。具體而言,儘管本文中使用例如「根據本發明概念的實施例」或類似詞句,然而該些片語意在籠統地提及實施例可能性,而並非旨在將本發明概念限制為具體實施例配置。本文所用的該些用語可提及可組合成其他實施例的相同或不同的實施例。
前述說明性實施例不應被視為限制本發明概念。儘管已闡述若干實施例,然而熟習此項技術者將易於理解,可對該些實施例作出諸多潤飾,而此並不實質上背離本發明的新穎教示內容及優點。因此,所有此類潤飾皆旨在包含於由申請專利範圍所界定的本發明概念的範圍內。
本發明概念的實施例可擴展至以下聲明,且並不限定於此:
聲明1。本發明概念的實施例包括一種儲存裝置,所述儲存裝置包括:用於儲存資料的儲存器;多個裝置串流,用於將所述資料寫入至所述儲存器;串流能力分析器,羅列所述儲存裝置的串流能力;以及傳送器,將所述儲存裝置的所述串流能力傳送至至少一個儲存管理器。
聲明2。本發明概念的實施例包括根據聲明1的儲存裝置,其中所述儲存裝置支援以下格式中的一者:跨結構快速非揮發性記憶體儲存裝置、疊瓦式硬碟驅動機、快閃記憶體儲存裝置以及
混合媒體儲存裝置。
聲明3。本發明概念的實施例包括根據聲明2的儲存裝置,其中所述快閃記憶體儲存裝置包括快閃記憶體固態驅動機。
聲明4。本發明概念的實施例包括根據聲明2的儲存裝置,其中所述混合媒體儲存裝置包括混合媒體固態驅動機。
聲明5。本發明概念的實施例包括根據聲明1的儲存裝置,所述儲存裝置更包括包括串流能力分析器及傳送器的控制器。
聲明6。本發明概念的實施例包括根據聲明1的儲存裝置,其中:所述儲存裝置更包括更新偵測器,所述更新偵測器能夠操作以偵測在所述儲存裝置的所述串流能力中何時已出現更新;所述串流能力分析器能夠操作以重新羅列所述儲存裝置的經更新的所述串流能力;以及所述傳送器能夠操作以將所述儲存裝置的經更新的所述串流能力傳送至所述至少一個儲存管理器。
聲明7。本發明概念的實施例包括根據聲明1的儲存裝置,其中:所述串流能力分析器能夠操作以週期性地羅列所述儲存裝置的所述串流能力;且在每一次羅列之後,所述傳送器能夠操作以將所述儲存裝置的所述串流能力傳送至所述至少一個儲存管理器。
聲明8。本發明概念的實施例包括根據聲明1的儲存裝置,
其中所述串流能力是自包括以下各者的集合中提取:由所述儲存裝置支援的所述多個裝置串流的數目、所述儲存裝置上的抹除區塊的大小、對所述儲存裝置的物理異質性的描述、所述儲存裝置的自動串流能力、所述儲存裝置的最佳串流寫入大小、由所述儲存裝置支援的儲存器內計算(ISC)、所述儲存裝置的編程及抹除速度參數,所述儲存裝置的緩衝器大小,對由所述儲存裝置支援的所述裝置串流的吞吐量限制,以及所述儲存裝置的韌體版本。
聲明9。本發明概念的實施例包括根據聲明1的儲存裝置,其中用於儲存資料的儲存器包括第一儲存器及第二儲存器,所述第一儲存器為第一類型且所述第二儲存器為第二類型,其中所述第一類型不同於所述第二類型;由所述儲存裝置支援的所述多個裝置串流中的第一裝置串流與所述第一儲存器相關聯;且由所述儲存裝置支援的所述多個裝置串流中的第二裝置串流與所述第二儲存器相關聯。
聲明10。本發明概念的實施例包括根據聲明1的儲存裝置,所述儲存裝置更包括:接收器,自所述至少一個儲存管理器接收對所述儲存裝置的所述串流能力的請求。
聲明11。本發明概念的實施例包括一種儲存管理器,所述儲存管理器包括:接收器,接收至少一個儲存裝置的至少一個串流能力、對至
少一個軟體串流的要求、以及來自所述至少一個軟體串流的請求;裝置串流選擇器,因應於對所述至少一個軟體串流的所述要求以及所述至少一個儲存裝置的所述至少一個串流能力而選擇由所述至少一個儲存裝置支援的多個裝置串流中的一者;以及傳送器,將所述請求傳送至所述至少一個儲存裝置中的第一儲存裝置,所述第一儲存裝置支援所述多個裝置串流中的所述所選擇的一者。
聲明12。本發明概念的實施例包括根據聲明11的儲存管理器,所述儲存管理器更包括擴充器以利用與儲存裝置不相關的考量因素擴充所述至少一個儲存裝置的所述至少一個串流能力。
聲明13。本發明概念的實施例包括根據聲明11的儲存管理器,其中所述儲存管理器利用在處理器或主機機器上運行的軟體進行實作。
聲明14。本發明概念的實施例包括根據聲明11的儲存管理器,其中所述儲存管理器被實作為主機機器內的硬體模組。
聲明15。本發明概念的實施例包括根據聲明11的儲存管理器,其中所述串流能力是自包括以下各者的集合中提取:由所述儲存裝置支援的所述多個裝置串流的數目,所述儲存裝置上的抹除區塊的大小,對所述儲存裝置的物理異質性的描述,所述儲存裝置的自動串流能力,所述儲存裝置的最佳串流寫入大小,由所述儲存裝置支援的儲存器內計算,所述儲存裝置的編程及抹除速度參數,所述儲存裝置的緩衝器大小,對由所述儲存裝置支援的
所述裝置串流的吞吐量限制,以及所述儲存裝置的韌體版本。
聲明16。本發明概念的實施例包括根據聲明11的儲存管理器,其中所述裝置串流選擇器包括:映射器,因應於對所述至少一個軟體串流的所述至少一個要求以及所述至少一個儲存裝置的所述至少一個串流能力而產生自所述至少一個軟體串流至由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者的映射。
聲明17。本發明概念的實施例包括根據聲明16的儲存管理器,其中:所述接收器能夠操作以接收所述至少一個儲存裝置的至少一個經更新的串流能力;且所述裝置串流選擇器更包括映射更新器,以因應於所述至少一個儲存裝置的所述至少一個經更新的串流能力而更新所述映射。
聲明18。本發明概念的實施例包括根據聲明16的儲存管理器,其中所述映射器包括:裝置串流分類器,將由所述至少一個儲存裝置支援的所述多個裝置串流中的每一者指派至至少兩個類別中的一者;以及軟體串流分類器,將所述至少一個軟體串流中的每一者指派至所述至少兩個類別中的一者,其中所述裝置串流選擇器能夠操作以選擇由所述至少一個儲存裝置支援的所述多個裝置串流中與所述至少一個軟體串流處於
同一類別中的一者。
聲明19。本發明概念的實施例包括根據聲明16的儲存管理器,所述儲存管理器更包括儲存器,用於對儲存所述映射的資料結構進行儲存。
聲明20。本發明概念的實施例包括根據聲明11的儲存管理器,所述儲存管理器更包括儲存器,用於對儲存所述至少一個儲存裝置的所述至少一個串流能力的資料結構進行儲存。
聲明21。本發明概念的實施例包括根據聲明11的儲存管理器,其中所述至少一個儲存裝置的所述至少一個串流能力載明所述至少一個儲存裝置包括第一類型的第一儲存器及第二類型的第二儲存器,其中所述第一類型不同於所述第二類型。
聲明22。本發明概念的實施例包括根據聲明11的儲存管理器,其中所述至少一個儲存裝置包括第一儲存裝置及第二儲存裝置,其中所述第一儲存裝置與所述第二儲存裝置支援不同的串流能力。
聲明23。本發明概念的實施例包括根據聲明22的儲存管理器,其中:第一儲存裝置支援第一類型的儲存器;以及第二儲存裝置支援第二類型的儲存器,所述第二類型的儲存器不同於所述第一類型的儲存器。
聲明24。本發明概念的實施例包括根據聲明22的儲存管理器,其中所述不同的串流能力包括:不同數目的裝置串流、不同
的抹除區塊大小、不同的儲存容量、不同的自動串流能力、不同的最佳串流寫入大小、不同的儲存器內計算能力、不同的編程及抹除速度參數、不同的緩衝器大小、不同的吞吐量限制及不同的韌體版本。
聲明25。本發明概念的實施例包括根據聲明11的儲存管理器,其中:對所述至少一個軟體串流的所述要求包括所述至少一個軟體串流需有至少兩個要求;所述裝置串流選擇器包括權重指派器,所述權重指派器為對所述至少一個軟體串流的所述至少兩個要求指派權重;以及所述裝置串流選擇器能夠操作以因應於所述權重及所述至少一個儲存裝置的所述至少一個串流能力而選擇由所述至少一個儲存裝置支援的所述多個裝置串流中的所述至少一者。
聲明26。本發明概念的實施例包括一種方法,所述方法包括:由儲存裝置確定所述儲存裝置的串流能力;辨識與所述儲存裝置進行通訊的至少一個儲存管理器;以及將所述串流能力自所述儲存裝置報告至所述至少一個儲存管理器。
聲明27。本發明概念的實施例包括根據聲明26的方法,所述方法更包括:在稍後的時間確定所述儲存裝置的第二串流能力;以及將所述第二串流能力報告至所述至少一個儲存管理器。
聲明28。本發明概念的實施例包括根據聲明26的方法,其中:由儲存裝置確定所述儲存裝置的串流能力包括由所述儲存裝置週期性地確定所述儲存裝置的所述串流能力;以及將所述串流能力自所述儲存裝置報告至所述至少一個儲存管理器包括週期性地將所述串流能力自所述儲存裝置報告至所述至少一個儲存管理器。
聲明29。本發明概念的實施例包括根據聲明26的方法,所述方法更包括:辨識出所述儲存裝置的所述串流能力已改變;在辨識出所述儲存裝置的所述串流能力已改變之後確定所述儲存裝置的第二串流能力;以及將所述第二串流能力報告至所述至少一個儲存管理器。
聲明30。本發明概念的實施例包括根據聲明29的方法,其中辨識出所述儲存裝置的所述串流能力已改變包括將由所述儲存裝置支援的多個裝置串流中的一者分配至所述至少一個儲存管理器中的一者。
聲明31。本發明概念的實施例包括根據聲明29的方法,其中辨識出所述儲存裝置的所述串流能力已改變包括改變所述儲存裝置的自動串流能力。
聲明32。本發明概念的實施例包括根據聲明26的方法,其中所述串流能力是自包括以下各者的集合中提取:由所述儲存裝
置支援的多個裝置串流的數目、所述儲存裝置上的抹除區塊的大小、對所述儲存裝置的物理異質性的描述、所述儲存裝置的自動串流能力、所述儲存裝置的最佳串流寫入大小、由所述儲存裝置支援的儲存器內計算、所述儲存裝置的編程及抹除速度參數、所述儲存裝置的緩衝器大小、對由所述儲存裝置支援的所述裝置串流的吞吐量限制、以及所述儲存裝置的韌體版本。
聲明33。本發明概念的實施例包括根據聲明32的方法,其中:所述儲存裝置的所述物理異質性包括第一儲存器及第二儲存器,所述第一儲存器為第一類型且所述第二儲存器為第二類型,其中所述第一類型不同於所述第二類型;由所述儲存裝置支援的所述多個裝置串流中的第一裝置串流與所述第一儲存器相關聯;且由所述儲存裝置支援的所述多個裝置串流中的第二裝置串流與所述第二儲存器相關聯。
聲明34。本發明概念的實施例包括根據聲明26的方法,其中所述儲存裝置是自包括以下各者的集合中提取:跨結構快速非揮發性記憶體儲存裝置、疊瓦式硬碟驅動機、快閃記憶體儲存裝置以及混合媒體儲存裝置。
聲明35。本發明概念的實施例包括根據聲明34的方法,其中所述快閃記憶體儲存裝置包括快閃記憶體固態驅動機。
聲明36。本發明概念的實施例包括根據聲明34的方法,其
中所述混合媒體儲存裝置包括混合媒體固態驅動機。
聲明37。本發明概念的實施例包括根據聲明26的方法,其中:所述方法更包括自所述至少一個儲存管理器接收對所述儲存裝置的所述串流能力的請求;由儲存裝置確定所述儲存裝置的串流能力包括:因應於自所述至少一個儲存管理器對所述儲存裝置的所述串流能力的請求而確定所述儲存裝置的所述串流能力;以及將所述串流能力報告至所述至少一個儲存管理器包括:因應於自所述至少一個儲存管理器對所述儲存裝置的所述串流能力的請求而將所述串流能力報告至所述至少一個儲存管理器。
聲明38。本發明概念的實施例包括一種方法,所述方法包括:接收至少一個儲存裝置的至少兩個串流能力,所述至少一個儲存裝置支援多個裝置串流;自至少一個軟體串流接收請求;確定所述至少一個軟體串流的至少一個要求;因應於所述至少一個軟體串流的所述至少一個要求及所述至少一個儲存裝置的所述至少一個串流能力而選擇由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者;以及使用所述多個裝置串流中所選擇的所述至少一者將所述請求自所述至少一個軟體串流發送至所述至少一個儲存裝置。
聲明39。本發明概念的實施例包括根據聲明38的方法,其
中所述至少兩個串流能力在以下中的至少一者方面不同:裝置串流的數目、抹除區塊大小、儲存容量、自動串流能力、最佳串流寫入大小、儲存器內計算能力、編程及抹除速度參數、緩衝器大小、吞吐量限制、以及韌體版本。
聲明40。本發明概念的實施例包括根據聲明38的方法,其中所述串流能力是自包括以下各者的集合中提取:由所述儲存裝置支援的所述多個裝置串流的數目、所述儲存裝置上的抹除區塊的大小、對所述儲存裝置的物理異質性的描述、所述儲存裝置的自動串流能力、所述儲存裝置的最佳串流寫入大小、由所述儲存裝置支援的儲存器內計算、所述儲存裝置的編程及抹除速度參數、所述儲存裝置的緩衝器大小、對由所述儲存裝置支援的所述裝置串流的吞吐量限制、以及所述儲存裝置的韌體版本。
聲明41。本發明概念的實施例包括根據聲明38的方法,所述方法更包括:以與儲存裝置不相關的考量因素擴充所述至少一個儲存裝置的所述至少一個串流能力。
聲明42。本發明概念的實施例包括根據聲明38的方法,其中因應於對所述至少一個軟體串流的所述至少一個要求及所述至少一個儲存裝置的所述至少一個串流能力而選擇由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者包括:因應於對所述至少一個軟體串流的所述至少一個要求及所述至少一個儲存裝置的所述至少一個串流能力而產生自所述至少一個軟體串流至由所述至少一個儲存裝置支援的所述多個裝置串流
中的至少一者的映射;以及因應於所述至少一個軟體串流利用所述映射來選擇由所述至少一個儲存裝置支援的所述多個裝置串流中的所述至少一者。
聲明43。本發明概念的實施例包括根據聲明42的方法,所述方法更包括:接收所述至少一個儲存裝置的至少一個經更新的串流能力;以及因應於所述至少一個儲存裝置的所述至少一個經更新的串流能力而更新自所述至少一個軟體串流至由所述至少一個儲存裝置支援的所述多個裝置串流中的所述至少一者的映射。
聲明44。本發明概念的實施例包括根據聲明42的方法,其中因應於所述至少一個軟體串流的所述至少一個要求及所述至少一個儲存裝置的所述至少一個串流能力而產生自所述至少一個軟體串流至由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者的映射包括:利用所述至少一個儲存裝置的所述至少一個串流能力將由所述至少一個儲存裝置支援的所述多個裝置串流中的每一者指派至至少兩種類別中的一者;將所述至少一個軟體串流指派至所述至少兩種類別中的一者;以及藉由將所述至少一個軟體串流指派至由所述至少一個儲存裝置支援的所述多個裝置串流中具有相同類別的至少一個裝置串流
而產生所述映射。
聲明45。本發明概念的實施例包括根據聲明38的方法,其中接收至少一個儲存裝置的至少兩個串流能力,所述至少一個儲存裝置支援多個裝置串流包括:接收至少第一儲存裝置的至少第一串流能力,所述第一儲存裝置支援至少第一類型的儲存器;以及接收至少第二儲存裝置的至少第二串流能力,所述第二儲存裝置支援至少第二類型的儲存器,所述第二類型的儲存器不同於所述第一類型的儲存器。
聲明46。本發明概念的實施例包括根據聲明38的方法,其中所述至少一個儲存裝置包括第一儲存器及第二儲存器,所述第一儲存器為第一類型且所述第二儲存器為第二類型,其中所述第一類型不同於所述第二類型。
聲明47。本發明概念的實施例包括根據聲明38的方法,其中:確定所述至少一個軟體串流的至少一個要求包括:確定所述至少一個軟體串流的至少兩個要求,其中所述至少兩個要求代表所述至少一個儲存裝置的所述至少一個串流能力的子集;且因應於對所述至少一個軟體串流的所述至少一個要求及所述至少一個儲存裝置的所述至少一個串流能力而選擇由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者包括:對所述至少一個軟體串流的所述至少兩個要求指派權
重;以及因應於所述權重及所述至少一個儲存裝置的所述至少一個串流能力而選擇由所述至少一個儲存裝置支援的所述多個裝置串流中的所述至少一者。
聲明48。本發明概念的實施例包括一種製品,所述製品包括非暫時性儲存媒體,所述非暫時性儲存媒體上儲存有指令,所述指令在由機器執行時使得:由儲存裝置確定所述儲存裝置的串流能力;辨識與所述儲存裝置進行通訊的至少一個儲存管理器;以及將所述串流能力自所述儲存裝置報告至所述至少一個儲存管理器。
聲明49。本發明概念的實施例包括根據聲明48的製品,所述非暫時性儲存媒體上儲存有進一步的指令,所述指令在由機器執行時使得:在稍後的時間確定所述儲存裝置的第二串流能力;以及將所述第二串流能力報告至所述至少一個儲存管理器。
聲明50。本發明概念的實施例包括根據聲明48的製品,所述非暫時性儲存媒體上儲存有進一步的指令,所述指令在由機器執行時使得:辨識出所述儲存裝置的所述串流能力已改變;在辨識出所述儲存裝置的所述串流能力已改變之後確定所述儲存裝置的第二串流能力;以及
將所述第二串流能力報告至所述至少一個儲存管理器。
聲明51。本發明概念的實施例包括根據聲明50的製品,其中辨識出所述儲存裝置的所述串流能力已改變包括將由所述儲存裝置支援的多個裝置串流中的一者分配至所述至少一個儲存管理器中的一者。
聲明52。本發明概念的實施例包括根據聲明50的製品,其中辨識出所述儲存裝置的所述串流能力已改變包括改變所述儲存裝置的自動串流能力。
聲明53。本發明概念的實施例包括根據聲明48的製品,其中所述串流能力是自包括以下各者的集合中提取:由所述儲存裝置支援的多個裝置串流的數目、所述儲存裝置上的抹除區塊的大小、對所述儲存裝置的物理異質性的描述、所述儲存裝置的自動串流能力,所述儲存裝置的最佳串流寫入大小、由所述儲存裝置支援的儲存器內計算、所述儲存裝置的編程及抹除速度參數、所述儲存裝置的緩衝器大小、對由所述儲存裝置支援的所述裝置串流的吞吐量限制、以及所述儲存裝置的韌體版本。
聲明54。本發明概念的實施例包括根據聲明53的製品,其中:所述儲存裝置的所述物理異質性包括第一儲存器及第二儲存器,所述第一儲存器為第一類型且所述第二儲存器為第二類型,其中所述第一類型不同於所述第二類型;由所述儲存裝置支援的所述多個裝置串流中的第一裝置串流
與所述第一儲存器相關聯;且由所述儲存裝置支援的所述多個裝置串流中的第二裝置串流與所述第二儲存器相關聯。
聲明55。本發明概念的實施例包括根據聲明48的製品,其中所述儲存裝置是自包括以下各者的集合中提取:跨結構快速非揮發性記憶體儲存裝置、疊瓦式硬碟驅動機、快閃記憶體儲存裝置以及混合媒體儲存裝置。
聲明56。本發明概念的實施例包括根據聲明55的製品,其中所述快閃記憶體儲存裝置包括快閃記憶體固態驅動機。
聲明57。本發明概念的實施例包括根據聲明55的製品,其中所述混合媒體儲存裝置包括混合媒體固態驅動機。
聲明58。本發明概念的實施例包括根據聲明48的製品,其中:所述方法更包括自所述至少一個儲存管理器接收對所述儲存裝置的所述串流能力的請求;由儲存裝置確定所述儲存裝置的串流能力包括:因應於自所述至少一個儲存管理器對所述儲存裝置的所述串流能力的請求而確定所述儲存裝置的所述串流能力;以及將所述串流能力報告至所述至少一個儲存管理器包括:因應於自所述至少一個儲存管理器對所述儲存裝置的所述串流能力的請求而將所述串流能力報告至所述至少一個儲存管理器。
聲明59。本發明概念的實施例包括一種製品,所述製品包括
非暫時性儲存媒體,所述非暫時性儲存媒體上儲存有指令,所述指令在由機器執行時使得:接收至少一個儲存裝置的至少兩個串流能力,所述至少一個儲存裝置支援多個裝置串流;自至少一個軟體串流接收請求;確定所述至少一個軟體串流的至少一個要求;因應於對所述至少一個軟體串流的所述至少一個要求及所述至少一個儲存裝置的所述至少一個串流能力而選擇由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者;以及使用所述多個裝置串流中所選擇的所述至少一者將所述請求自所述至少一個軟體串流發送至所述至少一個儲存裝置。
聲明60。本發明概念的實施例包括根據聲明59的製品,其中所述至少兩個串流能力在以下中的至少一者方面不同:裝置串流的數目、抹除區塊大小、儲存容量、自動串流能力、最佳串流寫入大小、儲存器內計算能力、編程及抹除速度參數、緩衝器大小、吞吐量限制、以及韌體版本。
聲明61。本發明概念的實施例包括根據聲明59的製品,其中所述串流能力是自包括以下各者的集合中提取:由所述儲存裝置支援的多個裝置串流的數目、所述儲存裝置上的抹除區塊的大小、對所述儲存裝置的物理異質性的描述、所述儲存裝置的自動串流能力、所述儲存裝置的最佳串流寫入大小、由所述儲存裝置支援的儲存器內計算、所述儲存裝置的編程及抹除速度參數、所
述儲存裝置的緩衝器大小、對由所述儲存裝置支援的所述裝置串流的吞吐量限制、以及所述儲存裝置的韌體版本。
聲明62。本發明概念的實施例包括根據聲明59的製品,所述非暫時性儲存媒體上儲存有進一步的指令,所述指令在由機器執行時使得:以與儲存裝置不相關的考量因素擴充所述至少一個儲存裝置的所述至少一個串流能力。
聲明63。本發明概念的實施例包括根據聲明59的製品,其中因應於所述至少一個軟體串流的所述至少一個要求及所述至少一個儲存裝置的所述至少一個串流能力而選擇由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者包括:因應於所述至少一個軟體串流的所述至少一個要求及所述至少一個儲存裝置的所述至少一個串流能力而產生自所述至少一個軟體串流至由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者的映射;以及因應於所述至少一個軟體串流利用所述映射來選擇由所述至少一個儲存裝置支援的所述多個裝置串流中的所述至少一者。
聲明64。本發明概念的實施例包括根據聲明63的製品,所述非暫時性儲存媒體上儲存有進一步的指令,所述指令在由機器執行時使得:接收所述至少一個儲存裝置的至少一個經更新的串流能力;以及因應於所述至少一個儲存裝置的所述至少一個經更新的串流
能力而更新自所述至少一個軟體串流至由所述至少一個儲存裝置支援的所述多個裝置串流中的所述至少一者的映射。
聲明65。本發明概念的實施例包括根據聲明63的製品,其中因應於所述至少一個軟體串流的所述至少一個要求及所述至少一個儲存裝置的所述至少一個串流能力而產生自所述至少一個軟體串流至由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者的映射包括:利用所述至少一個儲存裝置的所述至少一個串流能力將由所述至少一個儲存裝置支援的所述多個裝置串流中的每一者指派至至少兩種類別中的一者;將所述至少一個軟體串流指派至所述至少兩種類別中的一者;以及藉由將所述至少一個軟體串流指派至由所述至少一個儲存裝置支援的所述多個裝置串流中具有相同類別的至少一個裝置串流而產生所述映射。
聲明66。本發明概念的實施例包括根據聲明59的製品,其中接收至少一個儲存裝置的至少兩個串流能力,所述至少一個儲存裝置支援多個裝置串流包括:接收至少第一儲存裝置的至少第一串流能力,所述第一儲存裝置支援至少第一類型的儲存器;以及接收至少第二儲存裝置的至少第二串流能力,所述第二儲存裝置支援至少第二類型的儲存器,所述第二類型的儲存器不同於
所述第一類型的儲存器。
聲明67。本發明概念的實施例包括根據聲明59的製品,其中所述至少一個儲存裝置包括第一儲存器及第二儲存器,所述第一儲存器為第一類型且所述第二儲存器為第二類型,其中所述第一類型不同於所述第二類型。
聲明68。本發明概念的實施例包括根據聲明59的製品,其中:確定所述至少一個軟體串流的至少一個要求包括:確定所述至少一個軟體串流的至少兩個要求,其中所述至少兩個要求代表所述至少一個儲存裝置的所述至少一個串流能力的子集;且因應於所述至少一個軟體串流的所述至少一個要求及所述至少一個儲存裝置的所述至少一個串流能力而選擇由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者包括:對所述至少一個軟體串流的所述至少兩個要求指派權重;以及因應於所述權重及所述至少一個儲存裝置的所述至少一個串流能力而選擇由所述至少一個儲存裝置支援的所述多個裝置串流中的所述至少一者。
因此,考量到本文描述的實施例的各種變更,此詳細描述及隨附材料僅旨在為說明性的,並且不應被視為限定本發明概念的範圍。藉此,作為本發明概念所主張的權利範圍是上述所有修改,而上述修改可以落在下列申請專利範圍及其等同形式的範
圍及精神內。
120-2:較新的快閃記憶體儲存裝置/固態驅動機
135:儲存管理器/串流管理器
405:主機介面邏輯
410:固態驅動機控制器
415-1、415-2、415-3、415-4、415-5、415-6、415-7、415-8:快閃記憶體晶片
420-1、420-2、420-3、420-4:通道
425-1、425-2、425-3:裝置串流
430:快閃轉換層
435:嵌式微處理器
Claims (20)
- 一種儲存裝置,包括:用於儲存資料的儲存器,包括第一儲存器及第二儲存器,所述第一儲存器為第一類型且所述第二儲存器為第二類型,其中所述第一類型不同於所述第二類型;多個裝置串流,用於將所述資料寫入至所述儲存器,由所述儲存裝置支援的所述多個裝置串流中的第一裝置串流與所述第一儲存器相關聯,由所述儲存裝置支援的所述多個裝置串流中的第二裝置串流與所述第二儲存器相關聯;串流能力分析器,識別所述儲存裝置的串流能力,其中識別所述儲存裝置的所述串流能力至少包括使用所述串流能力分析器來識別所述儲存裝置上的抹除區塊的大小;以及傳送器,將所述儲存裝置的所述串流能力傳送至至少一個儲存管理器,使得所述至少一個儲存管理器依據所述儲存裝置的所述串流能力將多個串流請求分別指派至所述儲存裝置的所述多個裝置串流。
- 如申請專利範圍第1項所述的儲存裝置,其中識別所述儲存裝置的所述串流能力還包括識別以下其中之一:由所述儲存裝置支援的所述多個裝置串流的數目、對所述儲存裝置的物理異質性的描述、所述儲存裝置的自動串流能力、所述儲存裝置的最佳串流寫入大小、由所述儲存裝置支援的儲存器內計算、所述儲存裝置的編程及抹除速度參數、所述儲存裝置的緩衝器大小、對由所述 儲存裝置支援的所述裝置串流的吞吐量限制、以及所述儲存裝置的韌體版本。
- 如申請專利範圍第1項所述的儲存裝置,其中:所述儲存裝置更包括更新偵測器,所述更新偵測器能夠操作以偵測在所述儲存裝置的所述串流能力中何時已出現更新;所述串流能力分析器能夠操作以重新羅列所述儲存裝置的經更新的所述串流能力;以及所述傳送器能夠操作以將所述儲存裝置的經更新的所述串流能力傳送至所述至少一個儲存管理器。
- 一種儲存管理器,包括:接收器,接收至少一個儲存裝置的至少一個串流能力、接收對至少一個軟體串流所指派的要求、以及接收來自所述至少一個軟體串流的請求;裝置串流選擇器,因應於對所述至少一個軟體串流所指派的所述要求以及所述至少一個儲存裝置的所述至少一個串流能力而選擇由所述至少一個儲存裝置支援的多個裝置串流中的一者;以及傳送器,將所述至少一個軟體串流的所述請求傳送至所述至少一個儲存裝置中的第一儲存裝置,所述第一儲存裝置支援所述多個裝置串流中所選擇的一者。
- 如申請專利範圍第4項所述的儲存管理器,更包括擴充器,所述擴充器以與儲存裝置不相關的考量因素擴充所述至少一 個儲存裝置的所述至少一個串流能力。
- 如申請專利範圍第4項所述的儲存管理器,其中所述至少一個串流能力是自包括以下各者的集合中提取:由所述儲存裝置支援的所述多個裝置串流的數目、所述儲存裝置上的抹除區塊的大小、對所述儲存裝置的物理異質性的描述、所述儲存裝置的自動串流能力、所述儲存裝置的最佳串流寫入大小、由所述儲存裝置支援的儲存器內計算(ISC)、所述儲存裝置的編程及抹除速度參數、所述儲存裝置的緩衝器大小、對由所述儲存裝置支援的所述裝置串流的吞吐量限制、以及所述儲存裝置的韌體版本。
- 如申請專利範圍第4項所述的儲存管理器,其中所述裝置串流選擇器包括映射器,所述映射器因應於對所述至少一個軟體串流的至少一個要求以及所述至少一個儲存裝置的所述至少一個串流能力而產生自所述至少一個軟體串流至由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者的映射。
- 如申請專利範圍第7項所述的儲存管理器,更包括用於對儲存所述映射的資料結構進行儲存的儲存器。
- 如申請專利範圍第4項所述的儲存管理器,更包括用於對儲存所述至少一個儲存裝置的所述至少一個串流能力的資料結構進行儲存的儲存器。
- 如申請專利範圍第4項所述的儲存管理器,其中所述至少一個儲存裝置的所述至少一個串流能力載明所述至少一個儲存裝置包括第一類型的第一儲存器及第二類型的第二儲存器,其 中所述第一類型不同於所述第二類型。
- 如申請專利範圍第4項所述的儲存管理器,其中所述至少一個儲存裝置包括第一儲存裝置及第二儲存裝置,其中所述第一儲存裝置與所述第二儲存裝置支援不同的串流能力。
- 如申請專利範圍第4項所述的儲存管理器,其中所述至少一個儲存裝置包括:第一儲存裝置,支援第一類型的儲存器;以及第二儲存裝置,支援第二類型的儲存器,所述第二類型的儲存器不同於所述第一類型的儲存器。
- 如申請專利範圍第11項所述的儲存管理器,其中所述不同的串流能力包括不同數目的裝置串流、不同的抹除區塊大小、不同的儲存容量、不同的自動串流能力、不同的最佳串流寫入大小、不同的儲存器內計算能力、不同的編程及抹除速度參數、不同的緩衝器大小、不同的吞吐量限制及不同的韌體版本。
- 如申請專利範圍第4項所述的儲存管理器,其中:接收對所述至少一個軟體串流所指派的所述要求包括接收對所述至少一個軟體串流所指派的至少兩個要求;所述裝置串流選擇器包括權重指派器,所述權重指派器為對所述至少一個軟體串流所指派的所述至少兩個要求指派權重;以及所述裝置串流選擇器能夠操作以因應於所述權重及所述至少一個儲存裝置的所述至少一個串流能力而選擇由所述至少一個儲 存裝置支援的所述多個裝置串流中的至少一者。
- 一種多重串流方法,包括:接收至少一個儲存裝置的至少兩種串流能力,且所述至少一個儲存裝置支援多個裝置串流;接收來自至少一個軟體串流的請求;確定指派給所述至少一個軟體串流的至少一個要求;因應於指派給所述至少一個軟體串流的所述至少一個要求及所述至少一個儲存裝置的所述至少兩種串流能力而選擇由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者;以及使用所述多個裝置串流中所選擇的至少一者將所述至少一個軟體串流的所述請求自所述至少一個軟體串流發送至所述至少一個儲存裝置。
- 如申請專利範圍第15項所述的方法,更包括使用與儲存裝置不相關的考量因素來擴充所述至少一個儲存裝置的所述至少一個串流能力。
- 如申請專利範圍第15項所述的方法,其中所述因應於指派給所述至少一個軟體串流的所述至少一個要求及所述至少一個儲存裝置的所述至少兩種串流能力而選擇由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者包括:因應於指派給所述至少一個軟體串流的所述至少一個要求以及所述至少一個儲存裝置的所述至少兩種串流能力而產生自所述至少一個軟體串流至由所述至少一個儲存裝置支援的所述多個裝 置串流中的至少一者的映射;以及因應於所述至少一個軟體串流而使用所述映射來選擇由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者。
- 如申請專利範圍第17項所述的方法,其中所述因應於指派給所述至少一個軟體串流的所述至少一個要求以及所述至少一個儲存裝置的所述至少兩種串流能力而產生自所述至少一個軟體串流至由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者的映射包括:利用所述至少一個儲存裝置的所述至少兩種串流能力將由所述至少一個儲存裝置支援的所述多個裝置串流中的每一者指派至至少兩種類別中的一者;將所述至少一個軟體串流指派至所述至少兩種類別中的一者;以及藉由將所述至少一個軟體串流指派至由所述至少一個儲存裝置支援的所述多個裝置串流中具有相同類別的至少一個裝置串流而產生所述映射。
- 如申請專利範圍第15項所述的方法,其中所述接收至少一個儲存裝置的至少兩種串流能力,且所述至少一個儲存裝置支援多個裝置串流包括:接收至少一個第一儲存裝置的至少一個第一串流能力,且所述至少一個第一儲存裝置支援至少一個第一類型的儲存器;以及接收至少一個第二儲存裝置的至少一個第二串流能力,且所 述至少一個第二儲存裝置支援至少一個第二類型的儲存器,所述至少一個第二類型的儲存器不同於所述至少一個第一類型的儲存器。
- 如申請專利範圍第15項所述的方法,其中:確定指派給所述至少一個軟體串流的至少一個要求包括:確定指派給所述至少一個軟體串流的至少兩個要求,其中所述至少兩個要求代表所述至少一個儲存裝置的所述至少兩種串流能力的子集;且因應於指派給所述至少一個軟體串流的所述至少一個要求及所述至少一個儲存裝置的所述至少兩種串流能力而選擇由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者包括:對指派給所述至少一個軟體串流的所述至少兩個要求指派權重;以及因應於所述權重及所述至少一個儲存裝置的所述至少兩種串流能力而選擇由所述至少一個儲存裝置支援的所述多個裝置串流中的至少一者。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762501087P | 2017-05-03 | 2017-05-03 | |
US62/501,087 | 2017-05-03 | ||
US201762511957P | 2017-05-26 | 2017-05-26 | |
US62/511,957 | 2017-05-26 | ||
US15/690,270 US20180321855A1 (en) | 2017-05-03 | 2017-08-29 | Multistreaming in heterogeneous environments |
US15/690,270 | 2017-08-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201843591A TW201843591A (zh) | 2018-12-16 |
TWI771396B true TWI771396B (zh) | 2022-07-21 |
Family
ID=64014700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107110792A TWI771396B (zh) | 2017-05-03 | 2018-03-28 | 儲存裝置、儲存管理器與多重串流方法 |
Country Status (5)
Country | Link |
---|---|
US (3) | US20180321855A1 (zh) |
JP (1) | JP6993929B2 (zh) |
KR (1) | KR102559022B1 (zh) |
CN (1) | CN108806750B (zh) |
TW (1) | TWI771396B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11024390B1 (en) * | 2017-10-31 | 2021-06-01 | Pure Storage, Inc. | Overlapping RAID groups |
US11262942B2 (en) * | 2018-07-16 | 2022-03-01 | ScaleFlux, Inc. | Integrating host-side storage device management with host-side non-volatile memory |
WO2020067966A1 (en) * | 2018-09-27 | 2020-04-02 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for interworking between wireless and wired communication networks |
TWI710904B (zh) * | 2019-02-18 | 2020-11-21 | 宏碁股份有限公司 | 資料寫入方法與儲存裝置 |
CN109979508A (zh) * | 2019-03-15 | 2019-07-05 | 合肥沛睿微电子股份有限公司 | 固态硬盘装置与相关的固态硬盘控制电路 |
TWI701552B (zh) * | 2019-03-22 | 2020-08-11 | 群聯電子股份有限公司 | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |
US11500587B2 (en) * | 2020-11-20 | 2022-11-15 | Samsung Electronics Co., Ltd. | System and method for in-SSD data processing engine selection based on stream IDs |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8639871B2 (en) * | 2009-04-08 | 2014-01-28 | Google Inc. | Partitioning a flash memory data storage device |
US9158461B1 (en) * | 2012-01-18 | 2015-10-13 | Western Digital Technologies, Inc. | Measuring performance of data storage systems |
US20160313943A1 (en) * | 2015-04-24 | 2016-10-27 | Kabushiki Kaisha Toshiba | Storage device that secures a block for a stream or namespace and system having the storage device |
US20160364173A1 (en) * | 2015-06-09 | 2016-12-15 | Ultrata Llc | Infinite memory fabric hardware implementation with router |
US9542293B2 (en) * | 2014-01-14 | 2017-01-10 | Netapp, Inc. | Method and system for collecting and pre-processing quality of service data in a storage system |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8078794B2 (en) * | 2000-01-06 | 2011-12-13 | Super Talent Electronics, Inc. | Hybrid SSD using a combination of SLC and MLC flash memory arrays |
US7296124B1 (en) * | 2004-06-29 | 2007-11-13 | National Semiconductor Corporation | Memory interface supporting multi-stream operation |
JP2006235960A (ja) | 2005-02-24 | 2006-09-07 | Fujitsu Ltd | ガーベッジコレクション高速化方法 |
JP4524703B2 (ja) * | 2008-02-29 | 2010-08-18 | ソニー株式会社 | 情報処理装置および方法、並びにプログラム |
WO2011007599A1 (ja) | 2009-07-17 | 2011-01-20 | 株式会社 東芝 | メモリ管理装置 |
JP2011175615A (ja) | 2010-01-27 | 2011-09-08 | Toshiba Corp | ホスト装置およびメモリデバイス |
JPWO2012020544A1 (ja) | 2010-08-11 | 2013-10-28 | 日本電気株式会社 | データ処理システム、データ処理方法、およびプログラム |
JP2012084127A (ja) | 2010-09-15 | 2012-04-26 | Toshiba Corp | 半導体装置 |
US8682639B2 (en) | 2010-09-21 | 2014-03-25 | Texas Instruments Incorporated | Dedicated memory window for emulation address |
US20120290786A1 (en) | 2011-05-11 | 2012-11-15 | Mesnier Michael P | Selective caching in a storage system |
KR102079339B1 (ko) * | 2011-08-31 | 2020-02-19 | 삼성전자주식회사 | 클라우드 시스템상의 컨텐츠를 디엘엔에이로 연결된 디바이스로 전달하는 전자 장치 및 방법 |
US8788658B2 (en) * | 2012-02-03 | 2014-07-22 | International Business Machines Corporation | Allocation and balancing of storage resources |
JP5723812B2 (ja) | 2012-03-16 | 2015-05-27 | 株式会社 日立産業制御ソリューションズ | ファイルサーバ、データ入出力方法、i/oフックモジュールプログラム及びi/o代行デーモンプログラム |
WO2015005634A1 (ko) | 2013-07-08 | 2015-01-15 | 주식회사 윌러스표준기술연구소 | 메모리 시스템 및 이의 제어 방법 |
US8874835B1 (en) | 2014-01-16 | 2014-10-28 | Pure Storage, Inc. | Data placement based on data properties in a tiered storage device system |
US9740574B2 (en) * | 2014-05-09 | 2017-08-22 | Commvault Systems, Inc. | Load balancing across multiple data paths |
US20160044077A1 (en) | 2014-08-06 | 2016-02-11 | Dell Products L.P. | Policy use in a data mover employing different channel protocols |
US10963126B2 (en) | 2014-12-10 | 2021-03-30 | D2L Corporation | Method and system for element navigation |
JP2016170583A (ja) | 2015-03-12 | 2016-09-23 | 株式会社東芝 | メモリシステムおよび情報処理システム |
US10261725B2 (en) | 2015-04-10 | 2019-04-16 | Toshiba Memory Corporation | Storage system capable of invalidating data stored in a storage device thereof |
US9552384B2 (en) * | 2015-06-19 | 2017-01-24 | HGST Netherlands B.V. | Apparatus and method for single pass entropy detection on data transfer |
KR102381343B1 (ko) | 2015-07-27 | 2022-03-31 | 삼성전자주식회사 | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US9582250B1 (en) | 2015-08-28 | 2017-02-28 | International Business Machines Corporation | Fusion recommendation for performance management in streams |
KR102401600B1 (ko) | 2015-08-31 | 2022-05-25 | 삼성전자주식회사 | 데이터 양에 기초하여 복수의 데이터 스트림을 관리하도록 구성되는 스토리지 장치 |
US10681110B2 (en) | 2016-05-04 | 2020-06-09 | Radware, Ltd. | Optimized stream management |
JP2018022275A (ja) | 2016-08-02 | 2018-02-08 | 東芝メモリ株式会社 | 半導体記憶装置 |
US10768829B2 (en) * | 2017-02-15 | 2020-09-08 | Microsoft Technology Licensing, Llc | Opportunistic use of streams for storing data on a solid state device |
US10298649B2 (en) | 2017-02-15 | 2019-05-21 | Microsoft Technology Licensing, Llc | Guaranteeing stream exclusivity in a multi-tenant environment |
-
2017
- 2017-08-29 US US15/690,270 patent/US20180321855A1/en not_active Abandoned
-
2018
- 2018-02-21 KR KR1020180020493A patent/KR102559022B1/ko active IP Right Grant
- 2018-03-28 TW TW107110792A patent/TWI771396B/zh active
- 2018-04-09 CN CN201810309840.4A patent/CN108806750B/zh active Active
- 2018-05-07 JP JP2018089023A patent/JP6993929B2/ja active Active
-
2021
- 2021-04-13 US US17/229,857 patent/US11507326B2/en active Active
-
2022
- 2022-10-25 US US17/973,529 patent/US11847355B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8639871B2 (en) * | 2009-04-08 | 2014-01-28 | Google Inc. | Partitioning a flash memory data storage device |
US9158461B1 (en) * | 2012-01-18 | 2015-10-13 | Western Digital Technologies, Inc. | Measuring performance of data storage systems |
US9542293B2 (en) * | 2014-01-14 | 2017-01-10 | Netapp, Inc. | Method and system for collecting and pre-processing quality of service data in a storage system |
US20160313943A1 (en) * | 2015-04-24 | 2016-10-27 | Kabushiki Kaisha Toshiba | Storage device that secures a block for a stream or namespace and system having the storage device |
US20160364173A1 (en) * | 2015-06-09 | 2016-12-15 | Ultrata Llc | Infinite memory fabric hardware implementation with router |
Also Published As
Publication number | Publication date |
---|---|
CN108806750A (zh) | 2018-11-13 |
KR102559022B1 (ko) | 2023-07-24 |
US20230042833A1 (en) | 2023-02-09 |
US11507326B2 (en) | 2022-11-22 |
KR20180122546A (ko) | 2018-11-13 |
CN108806750B (zh) | 2023-11-07 |
JP2018190425A (ja) | 2018-11-29 |
US11847355B2 (en) | 2023-12-19 |
TW201843591A (zh) | 2018-12-16 |
US20210232321A1 (en) | 2021-07-29 |
US20180321855A1 (en) | 2018-11-08 |
JP6993929B2 (ja) | 2022-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI771396B (zh) | 儲存裝置、儲存管理器與多重串流方法 | |
US10996863B1 (en) | Nonvolatile memory with configurable zone/namespace parameters and host-directed copying of data across zones/namespaces | |
US11868247B1 (en) | Storage system with multiplane segments and cooperative flash management | |
US10474397B2 (en) | Unified indirection in a multi-device hybrid storage unit | |
TWI699654B (zh) | 租戶感知儲存共享平台、其方法與其製品 | |
US9519578B1 (en) | Multi-array operation support and related devices, systems and software | |
KR102533072B1 (ko) | 블록의 상태에 따라 사용 여부를 결정하는 메모리 시스템 및 메모리 시스템의 동작 방법 | |
US9335927B1 (en) | Storage space allocation for logical disk creation | |
US11740801B1 (en) | Cooperative flash management of storage device subdivisions | |
CN110058808B (zh) | 减少在存储分级层之间重排数据的数据迁移时间的装置 | |
JP2020123041A (ja) | メモリシステムおよび制御方法 | |
KR20140113211A (ko) | 비휘발성 메모리 시스템, 이를 포함하는 시스템 및 상기 비휘발성 메모리 시스템의 적응적 사용자 저장 영역 조절 방법 | |
CN113396566B (zh) | 分布式存储系统中基于全面i/o监测的资源分配 | |
KR20220063756A (ko) | 저장 장치 내의 호스트 인터페이스 계층 및 그에 의해 서브미션 큐들로부터의 요청들을 처리하는 방법 | |
US11307768B2 (en) | Namespace auto-routing data storage system | |
US20210019276A1 (en) | Link selection protocol in a replication setup | |
US20220276804A1 (en) | Information processing apparatus | |
KR102484073B1 (ko) | 스토리지 시스템 | |
EP4202631A1 (en) | Storage device including memory controller and operating method of the same | |
US20210191774A1 (en) | Controlling quality-of-service for input/output streams associated with key-value database |