TW201812591A - 使用自動串流偵測以及指定演算法的固態硬碟、驅動器及方法 - Google Patents
使用自動串流偵測以及指定演算法的固態硬碟、驅動器及方法 Download PDFInfo
- Publication number
- TW201812591A TW201812591A TW106125834A TW106125834A TW201812591A TW 201812591 A TW201812591 A TW 201812591A TW 106125834 A TW106125834 A TW 106125834A TW 106125834 A TW106125834 A TW 106125834A TW 201812591 A TW201812591 A TW 201812591A
- Authority
- TW
- Taiwan
- Prior art keywords
- block
- stream
- logic
- queue
- lba
- Prior art date
Links
Classifications
-
- 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/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
揭露一種固態硬碟(SSD)。SSD可包含用以儲存資料的快閃記憶體,且可支援多個裝置串流。SSD控制器可管理讀取資料以及將資料寫入至快閃記憶體,且可儲存提交佇列及區塊至串流映射器。快閃轉譯層可包含:接收器,用以接收寫入命令;LBA映射器,用以將LBA映射至區塊識別符(ID);串流選擇邏輯,用以基於區塊ID來選擇串流ID;串流ID新增器,用以將串流ID添加至寫入命令;佇列器,用以將區塊ID置放於提交佇列中;以及背景邏輯,用以在區塊ID自提交佇列移除之後,更新區塊至串流映射器。
Description
本發明概念大體上是有關於固態硬碟(Solid State Drive;SSD),且更特定言之,是有關於管理多串流SSD中的串流。
多串流固態硬碟(SSD)允許智慧地置放傳入資料,以將內部廢棄項目收集(garbage collection;GC)的影響減至最小以及減少寫入放大。多串流可藉由將簡單標籤(串流ID)添加至自主機發送至SSD的寫入命令中的每一者來達成。基於此標籤,SSD可將資料分組成共同區塊(comman blocks)。
然而,為了利用多串流裝置,應用程式必須察覺,SSD支援多串流,以使得軟體源可將共同串流指定至具有類似性質(諸如資料壽命)的資料。實現軟體多串流察覺需要修改軟體。然而,修改任何軟體會帶有對軟體的操作作出非預期改變的風險。已知市場上有非常大量的不同軟體產品,預期即使少數此等軟體產品經修改以支援多串流充其量似乎是不太可能的命題。
仍然需要無需修改軟體而支援多串流的方法。
考慮到以上問題,本發明提供一種固態硬碟(SSD),其包括:用以儲存資料的快閃記憶體;所述SSD中對多個裝置串流的支援;SSD控制器,用以管理回應於多個寫入命令將資料寫入至所述快閃記憶體,所述SSD控制器包含用於提交佇列及區塊(chunk)至串流映射器的儲存器;以及快閃轉譯層。所述快閃轉譯層包含:接收器,用以接收包含邏輯區塊位址(logical block address;LBA)的寫入命令;LBA映射器,用以將所述LBA映射至區塊識別符(ID);串流選擇邏輯,用以使用所述區塊至串流映射器基於所述區塊ID來選擇串流ID;串流ID新增器,用以將所述串流ID添加至所述寫入命令;佇列器,用以將所述區塊ID置放於所述提交佇列中;以及背景邏輯,用以自所述提交佇列移除所述區塊ID及更新所述區塊至串流映射器。
現將詳細參考本發明概念的實施例,其實例說明於附圖中。在以下詳細描述中,闡述大量特定細節以使得能夠透徹理解本發明概念。然而,應理解,一般熟習此項技術者可在沒有此等特定細節的情況下實踐本發明概念。在其他個例中,尚未詳細描述熟知方法、程序、組件、電路以及網路,以免不必要地混淆實施例的態樣。
應理解,儘管在本文中可使用術語第一、第二等來描述各種元件,但此等元件不應受此等術語限制。此等術語僅用以區分一個元件與另一元件。舉例而言,第一模組可稱為第二模組,且類似地,第二模組可稱為第一模組,而不背離本發明概念的範疇。
本文中的本發明概念的描述中所使用的術語僅出於描述特定實施例的目的且並不意欲限制本發明概念。如對本發明概念及所附申請專利範圍的描述中所使用,單數形式「一」及「所述」亦意欲包含複數形式,除非上下文另有清晰指示。亦將理解,如本文中所使用的術語「及/或」是指且涵蓋相關聯的所列項目中的一或多者的任何及所有可能組合。應進一步理解,術語「包括」在用於本說明書中時規定所陳述的特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。圖式的組件及特徵未必按比例繪製。
提出用於獨立於應用層而執行自動串流偵測及指定的設備及方法。串流指定可基於執行運行工作負荷偵測且可獨立於應用程式。串流指定可應用於具備多串流功能的固態硬碟(SSD)。
串流指定協定的實施具有若干優點。第一,應用程式完全不必修改。然而,可在方法中考慮指定其自身串流優先權的應用程式。舉例而言,串流指定協定可完全遵從應用程式指定的串流優先權。或者,串流指定協定可使用任何所要的權重值來執行組合應用程式指定的串流優先權與所計算的串流指定的加權和。
第二,另外使用具備多串流功能的裝置的任何應用程式可利用自動串流偵測及指定。第三,應用程式無需知道來自硬體的串流相關資訊。第四,串流指定協定可單獨地管理每一具備多串流功能的SSD,從而使得應用程式能夠使用多個SSD,甚至混合具備多串流功能的SSD與不具備多串流功能的SSD。第五,串流指定可在系統的任何所要層處(諸如,在檔案系統中、在區塊層中、在裝置驅動器中、在SSD內部(例如,在快閃轉譯層內)等)執行,只要可識別寫入命令的開始位址(或檔案偏移,在串流指定協定實施於檔案系統層中的情況下)。
SSD的整個位址空間可被劃分成數個固定大小區塊(chunk)。此區塊大小可為任何所要大小:例如,512位元組磁區的倍數。藉由將LBA除以每個區塊的磁區的數目,或更一般地,除以區塊大小,請求的起始邏輯區塊位址(starting LBA)可轉換為區塊識別符(ID)。
在本發明概念的第一實施例中,順序、頻率以及新近度(SFR)方法可用以判定串流指定: ● 順序性:若新請求的起始LBA鄰近於先前請求的結尾LBA(即,寫入命令涉及順序寫入),則第二寫入命令可被指定與較早寫入命令相同的串流ID。此方法假設一組順序請求具有類似壽命,在所述請求時短時間段內發出的情況下。由於寫入命令可由不同源(應用程式、檔案系統、虛擬機等)發出且可互混,因此自SSD的視角看,寫入命令可不遵循嚴格的順序模式。考慮此可能性,順序性可相對於視窗(其大小可改變)內的數個先前命令來判定。舉例而言,視窗尺寸四將檢查傳入請求是否接續先前四個請求中的任一者。 ● 頻率:頻率指起始LBA已被存取的次數。頻率可量測為存取計數。只要區塊經存取(經寫入),該區塊的存取計數即遞增1。較高的存取計數指示該區塊的較短壽命。頻率因此反映資料區塊(data chunk)的溫度。 ● 新近度:新近度指示資料區塊的時間局部性。舉例而言,一個區塊在某一時間段中可為較頻繁地存取且累積高存取計數,但之後會停用。在此情形下,不需要使區塊長時間地保持在熱串流中。區塊僅在其在最近時間段內被頻繁存取時才被認為熱。在本發明概念的一個實施例中,衰減週期可針對所有區塊來預定義。若區塊在最近的N個衰減週期內未被存取,則存取計數將會除以2N
。
針對區塊的串流ID可藉由頻率及新近度兩者(以及順序性,若適用)來判定。若區塊經頻繁存取,則頻率將所述區塊提昇至較熱串流,而若區塊在最後衰減週期期間停用,則新近度使所述區塊降級至較冷串流。在本發明概念的一個實施例中,對數尺度可用以將存取計數轉換至串流ID,其可反映裝置串流的數目遠小於存取計數的值範圍的事實。因此,舉例而言: 新近度權重 = 2(( 當前時間 - 最後存取時間 )/ 衰減週期 )
串流ID = log (存取計數/新近度權重) 針對區塊的串流ID的更新可執行為背景任務,從而將對輸入/輸出(I/O)效能的影響減至最小。
在本發明概念的第二實施例中,可使用多佇列方法。針對每一裝置串流,可定義佇列:由於存在多個裝置串流,因此將存在多個佇列。多佇列演算法可劃分成兩個不同功能模組。一個模組負責將每一區塊自較低佇列提昇至較高佇列;另一模組處置啟用或停用區塊自較高佇列至較低佇列的降級。區塊的存取計數愈高,認為所述區塊愈熱,且因此將所述區塊置放於更高佇列中。提昇及降級兩者可執行為背景任務,從而將對I/O效能的影響減至最小。
當區塊第一次被存取時,其被指定至串流0(最低串流)且置放於對應佇列中。否則,將所述區塊自當前佇列移除,更新所述區塊的存取計數,且將所述區塊置放於(潛在的)新佇列中。任何方法可用以基於存取計數來判定適當佇列:例如,存取計數的對數可計算為新串流ID(其識別對應佇列)。提昇模組亦可檢查以查看所述區塊是否為目前最熱區塊(基於存取計數)。若是目前最熱區塊,則裝置壽命可基於此區塊的存取之間的間隔而設定。最後,提昇邏輯可基於裝置壽命及所述區塊的最後存取時間來判定區塊的期滿時間(expiration time)。
為了使區塊降級,降級模組在區塊到達其佇列的頂部時檢查區塊。若該區塊的期滿時間尚未過去,則所述區塊可留下。否則,可將所述區塊自其當前佇列移除,指定新的期滿時間,且降級至較低佇列(即,指定較低串流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(其可駐存於記憶體115內)來控制。
圖2繪示圖1的機器105的額外細節。參看圖2,通常,機器105包含一或多個處理器110,所述處理器可包含記憶體控制器125及時鐘205,所述時鐘可用以協調機器105的組件的操作。處理器110亦可耦接至記憶體115,作為實例,所述記憶體可包含隨機存取記憶體(random access memory;RAM)、唯讀記憶體(read-only memory;ROM)或其他狀態保持媒體。處理器110亦可耦接至固態硬碟120且耦接至網路連接器210,所述網路連接器可為(例如)乙太網路連接器或無線連接器。處理器110亦可連接至匯流排215,使用者介面220及可使用輸入/輸出引擎225管理的輸入/輸出介面埠以及其他組件可附接至所述匯流排。
圖3繪示圖1的SSD 120的細節。在圖3中,SSD 120可包含主機介面邏輯305、SSD控制器310以及各種快閃記憶體晶片315-1至315-8,所述快閃記憶體晶片可組織成各種通道320-1至320-4。主機介面邏輯305可管理圖1的SSD 120與機器105之間的通信。SSD控制器310可管理快閃記憶體晶片315-1至315-8上的讀取及寫入操作以及廢棄項目收集操作。SSD控制器310可包含用以執行此管理中的一些的快閃轉譯層325。在使SSD 120負責將寫入命令指定至串流的本發明概念的實施例中,SSD控制器310可包含用以支援串流指定的儲存器330。儲存器330可包含提交佇列335及區塊至串流映射器340。提交佇列335可用以儲存關於受各種寫入命令影響的區塊的資訊。當接收到寫入命令時,可將與該等寫入命令相關聯的區塊(或實際上,此等區塊的識別符(ID))置放於提交佇列335中。接著,作為背景處理程序(其用以將對前景操作的影響減至最小)的部分,可將區塊自提交佇列335移除,且可更新針對此等區塊的串流指定。區塊至串流映射器340可儲存關於何種串流目前被指定至各種區塊的資訊:作為提交佇列335中的區塊ID的結果,此資訊可更新(或提交佇列335中沒有區塊ID—不在使用中的區塊可由於未使用而指定至較低優先權串流)。區塊的概念將參看下文的圖5及圖7加以進一步論述。
雖然圖3將SSD 120繪示為包含組織成四個通道320-1至320-4的八個快閃記憶體晶片315-1至315-8,但本發明概念的實施例可支援組織成任何數目個通道的任何數目個快閃記憶體晶片。
圖4繪示圖3的快閃轉譯層325的細節。在圖4中,快閃轉譯層325經繪示為包含接收器405、邏輯區塊位址(LBA)映射器410、串流選擇邏輯415、串流ID新增器420、傳輸器425、佇列器430以及背景邏輯435。接收器405可自各種軟體源(諸如,作業系統、應用程式、檔案系統、遠端機器以及其他此等源)接收寫入命令。對於給定寫入命令,LBA映射器410可將寫入命令中所使用的LBA映射至圖1的SSD 120上的特定區塊。串流選擇邏輯415接著可選擇適於區塊的串流。串流選擇邏輯415可使用圖3的區塊至串流映射器340來完成此串流選擇,且可包含用以搜尋圖3的區塊至串流映射器340以找到對應於選定區塊的輸入項(entry)的邏輯。替代地,串流選擇邏輯415可使用其他方法:例如,藉由根據區塊的存取計數來計算串流ID(類似於在下文參看圖13所描述的操作),或藉由以循環方法來指定串流(從而在所有裝置串流中均勻地分散寫入命令)。串流ID新增器420接著可使用用以將資料寫入至寫入命令中的邏輯將選定串流ID添加至寫入命令。一旦串流ID已附加至寫入命令,傳輸器425即可向圖1的SSD 120傳輸寫入命令(具有附加的串流ID)以用於執行。
佇列器430可取得針對寫入命令的經識別區塊ID,且可將該區塊ID添加至圖3的提交佇列335。佇列器430可使用用以將區塊ID添加至圖3的提交佇列335的邏輯。舉例而言,佇列器430可包含至圖3的提交佇列335的尾部的指標(pointer),且可將區塊ID寫入至圖3的提交佇列335的尾部,此後,可更新至圖3的提交佇列335的尾部的指標,從而指向圖3的提交佇列335中的下一個槽。最終,區塊ID將自圖3的提交佇列335退出佇列,此後,背景邏輯435可對退出佇列的區塊ID進行運算。背景邏輯435將參看下文的圖9及圖15加以進一步論述。
背景邏輯435可以任何所要方式來實施。舉例而言,背景邏輯435可簡單地操作為每當存取區塊時使該區塊遞增(所述操作差不多涉及用以在儲存區塊ID及串流ID的資料結構中執行查找的邏輯及用以使如此定位的串流ID遞增的增量器)。然而,此簡單實施將意謂,最終,每個區塊可使用最高編號的串流,而較低編號的串流不被使用。更多有關實施可考慮區塊是否不被常用且可降低區塊的串流優先權以匹配。以不同方式實施背景邏輯435以達成此結果的本發明概念的兩個實施例將在下文參看圖8至圖13及圖14至圖20來描述。
儘管背景邏輯435經描述為在「背景」(由此命名)中操作,但在背景中執行串流指定更新便於將對至圖1的SSD 120的讀取及寫入的影響減至最小。假定串流指定可經更新而不影響圖1的SSD 120的效能,背景邏輯435沒有理由不能在「前景」中操作。舉例而言,若圖1的SSD 120包含處理器(亦即,圖1的SSD 120提供儲存器中計算(In-Storage Computing;ISC)),則圖1的SSD 120中的此處理器可能潛在地專用於即時地更新串流指定,而不影響圖1的SSD 120的讀取及寫入效能。在此情形中,背景邏輯435可立即操作以執行串流指定更新,而無需將區塊ID置放於圖3的提交佇列335中或等到背景邏輯435可不影響前景操作而操作時的時間。
在圖4中,快閃轉譯層325經繪示為負責執行串流指定及串流ID更新。但在本發明概念的其他實施例中,圖4中所示的組件中的一或多個可以軟體來實施且可被包含以作為(例如)圖1的記憶體控制器125、圖1的裝置驅動器130的部分,或實施為可攔截寫入請求且在發佈寫入命令之前將串流組合的程式庫程序(library routines),或實施為單獨專用硬體(在圖1的SSD 120內,或在機器105內的別處)。對於此論述而言,對由圖4的組件執行的串流指定的任何參考意欲涵蓋任何特定位置處的實施,即使伴隨圖4至圖20的描述聚焦於在快閃轉譯層325內的實施。
雖然圖4將LBA映射器410及串流選擇邏輯415繪示為單獨組件,但在邏輯上,此等組件的結構可組合成單個組件。更一般而言,本發明概念的實施例可將圖4至圖6、圖9至圖13以及圖15至圖20中繪示與描述為單獨的任何組件組合成整體組件。
圖5繪示各種命令的邏輯區塊位址(LBA)經映射至區塊識別符(ID)且接著映射至串流ID以供圖1的SSD使用。在圖5中,繪示了寫入命令505-1、505-2以及505-3,但本發明概念的實施例可支援任何數目個寫入命令。另外,雖然圖5僅繪示了寫入命令,但本發明概念的實施例亦可同樣適用於讀取命令。寫入命令505-1至505-3可包含LBA 510-1至510-3,其指定寫入命令505-1至505-3的起始LBA。
LBA映射器410可自寫入命令505-1至505-3存取LBA 510-1至510-3。一旦LBA 510-1至510-3已自寫入命令505-1至505-3讀取,LBA映射器410即可判定對應的區塊ID 515-1至515-3。區塊可被視為SSD 120的邏輯子分割(但不需要區塊與SSD 120的其他邏輯子分割(諸如,區塊(block)及分頁)對準)。區塊的數目可以任何所要方式判定:例如,藉由為區塊選取所要大小且將SSD 120的大小除以該區塊大小,或藉由選擇已證實會提供足夠效用而無需由圖4的背景邏輯435執行過多處理的數目(且將SSD 120分割成如此多的區塊)。區塊不必具有相同大小,但大小的均勻性可簡化LBA映射器410的運算。因此,舉例而言,一個區塊可包含SSD 120中的128 KB的資料,而另一區塊可包含SSD 120中的512 KB的資料。作為二的冪的區塊大小特別地有利,是因為自LBA判定區塊可使用移位運算來執行,但本發明概念的實施例可支援任何所要大小的區塊。
LBA映射器410可以任何數目個方式來判定區塊ID 515-1至515-3。舉例而言,LBA映射器410可包含用以根據LBA 510-1至510-3以數學方式計算區塊ID 515-1至515-3的算術邏輯單元(arithmetic logic unit;ALU)520。或者,LBA映射器410可包含位址遮罩525,其可遮蔽來自LBA 510-1至510-3的各種位元,從而留下區塊ID 515-1至515-3。
一旦區塊ID 515-1至515-3已判定,串流選擇邏輯415即可判定待用於該區塊的串流。串流選擇邏輯415可使用區塊ID 515-1至515-3以自區塊至串流映射器340判定對應的串流ID 530-1至530-3。
圖6繪示圖5的命令505-1及505-2經修改以包含圖5的串流ID 530-1及530-2且經傳輸至圖1的SSD 120。(由於空間原因,圖6僅繪示了來自圖5的三個寫入命令及相關聯資料中的兩者。然而,圖6以與圖5相同的方式概括。)在圖6中,串流ID新增器420可將串流ID 530-1及530-2寫入至寫入命令505-1及505-2中。以此方式,圖1的SSD 120可知道在處理寫入命令505-1及505-2時將使用哪個裝置串流。傳輸器425可將經修改的寫入命令505-1及505-2傳輸至圖1的SSD 120。
圖5至圖6中未繪示圖4的佇列器430的操作。一旦圖5的區塊ID 515-1至515-3已判定,圖4的佇列器430即可將圖5的區塊ID 515-1至515-3在圖3的提交佇列335中排隊,以供圖4的背景邏輯435稍後處理。圖4的佇列器430可在圖5的區塊ID 515-1至515-3已判定之後的任何時間將圖5的區塊ID 515-1至515-3排隊。舉例而言,在圖5的區塊ID515-1至515-3已由圖4的LBA映射器410判定之後,在經修改寫入命令505-1至505-3已由傳輸器425發送至圖1的SSD 120之後,或在其間的任何時間,圖4的佇列器430可將圖5的區塊ID 515-1至515-3排隊。
圖7繪示圖5的算術邏輯單元(ALU)520將圖5的LBA 510-1映射至圖5的區塊ID 515-1。在圖7中,ALU 520可接收LBA 510-1及區塊大小705。藉由將LBA 510-1除以區塊大小705(及捨棄計算的任何分數部分),可計算區塊ID 515-1。
如上文參看圖4所描述,圖4的背景邏輯435可以變化的方式實施。圖8至圖13描述本發明概念的一個實施例,且圖14至圖20描述本發明概念的另一實施例。本發明概念的此等實施例並不意欲為互相排除的:本發明概念的兩個實施例的組合是可能的。另外,本發明概念的其他實施例亦為可能的,無論是否在本文中明確地描述。
在針對圖4的背景邏輯435的本發明概念的第一實施例中,圖3的區塊至串流映射器340可包含順序、頻率、新近度(SFR)表。「順序、頻率、新近度」指可用來判定及更新待指定至區塊的串流ID的方式。「順序」指一個寫入命令接續另一寫入命令的情形,亦即,第二寫入命令將資料寫入至較早寫入命令之後的下一個LBA。在兩個寫入命令順序的情況下,兩個命令應指定至同一串流ID是合理的。
如下文參看圖10所描述,「順序」在此上下文中不應完全從字面上理解,是因為寫入命令可自任何數目個不同的軟體源發出。若來自單個軟體源(例如,資料庫應用程式)的兩個「順序」寫入命令碰巧由來自某一其他軟體源(例如,檔案系統)的寫入命令分開,則介入寫入命令不應消除來自資料庫應用程式的兩個寫入命令的順序性。實際上,本文中提供了機制以避免阻止介入寫入命令阻斷順序性。
「頻率」指區塊隔多久被存取。區塊存取愈頻繁,則認為區塊「較熱」(其中溫度充當優先權的類比:區塊的「溫度」愈高,區塊的優先權應愈高)。因此,隨著區塊愈來愈多地被存取,區塊應被指定較高的串流優先權。
「新近度」指區塊自上次被存取之後經過了多久。「新近度」充當「頻率」的平衡:區塊自上次被存取之後經過的跨度愈長,則認為區塊「較冷」,且因此,區塊應被指定較低優先權。因此,雖然「頻率」使區塊的相關聯串流增大,但「新近度」使區塊的相關聯串流減小。「順序性」、「頻率」以及「新近度」將參看下文的圖10至圖13加以進一步論述。
現在轉而參考圖8中所示的本發明概念的實施例,圖8根據本發明概念的此實施例繪示了一實例SFR表,其可用以將圖5的區塊ID515-1至515-3映射至圖5的串流ID530-1至530-3。在圖8中,SFR表805可儲存各種資料。舉例而言,SFR表805可儲存各種區塊ID 515-1至515-4,及針對每一區塊ID 515-1至515-4的SFR對應串流ID 530-1至530-4。
除了串流ID 530-1至530-4之外,SFR表805亦可儲存額外資料。舉例而言,針對每一區塊ID 515-1至515-4,SFR表805可儲存該區塊的當前(即,最近)存取時間810-1至810-4。當前存取時間810-1至810-4可為區塊的任何類型(例如,讀取或寫入)的最後存取,或僅為最近寫入命令的時間。SFR表805亦可儲存先前存取時間815-1至815-4,其可表示區塊先前被存取時的時間。最後,SFR表805可儲存存取計數820-1至820-4,其可表示區塊的存取的數目。如上所述,存取計數820-1至820-4可表示區塊的存取(讀取及寫入兩者)或僅區塊的寫入存取的總數目。
雖然圖8繪示了本發明概念的一個可能實施例,但本發明概念的其他實施例可儲存比圖8所示更多或更少的資料。另外,除表以外的資料結構可用以儲存資訊。本發明概念的實施例意欲涵蓋所有此等變化。
圖9根據本發明概念的第一實施例繪示圖3的快閃轉譯層325及圖4的背景邏輯435的額外細節。在圖9中,快閃轉譯層325亦可包含順序性邏輯905。為了與較早寫入命令使用相同串流指定,順序性邏輯905可判定圖5的寫入命令505-1是否接續某一較早寫入命令。順序性邏輯905將參看下文的圖10加以進一步論述。
背景邏輯435可包含新近度邏輯910、存取計數調整器915以及串流ID調整器920。新近度邏輯910可計算區塊的新近度權重。存取計數調整器915可基於新近度權重來調整針對串流的存取計數。且串流ID調整器920可基於經調整存取計數來計算將用於區塊的新串流ID。新近度邏輯910、存取計數調整器915以及串流ID調整器920可全部使用一個(或多個)單獨或共用ALU來實施,是因為前述組件執行算術計算。替代地,新近度邏輯910、存取計數調整器915以及串流ID調整器920可使用經設計以僅計算所描述的特定函數且僅此而已的專用硬體來實施。
圖10繪示圖9的順序性邏輯905的細節。在圖10中,順序性邏輯905經繪示為包含儲存器1005及比較器1010。出於實用起見,儲存器1005可為圖3的儲存器330的部分,而不是順序性邏輯905內的單獨儲存器。儲存器1005可儲存視窗1015,其為關於一組新近寫入命令的資訊,所述新近寫入命令中的每一者可具有指定至其的串流ID。舉例而言,圖10繪示了輸入項1020-1至1020-8,其中,輸入項1020-1至1020-4在視窗1015內。輸入項1020-1至1020-8可在佇列1025中管理。佇列1025可採用任何所要形式:例如,列舉兩個實例實施,具有至佇列1025的頂部的指標的陣列,或連結清單。每一輸入項1020-1至1020-8可包含較早寫入命令的結尾LBA 1030及串流ID 1035。視窗1015可包含視窗大小1040,其可指定多少個新近輸入項包含於視窗1015中:在圖10中,視窗大小1040經繪示為包含四個輸入項,但本發明概念的實施例可支援視窗1015中的任何數目個輸入項。視窗大小1040可取決於數個因素,包括(例如)圖1的處理器110中的核心的數目,或在圖1的處理器110上執行的可發出寫入命令的軟體源(作業系統、檔案系統、應用程式以及其類似者)的數目。本發明概念的實施例亦可支援基於其他因素所判定的視窗大小。另外,視窗大小1040可靜態地設定,或可為隨著圖1的機器105內的條件改變而動態地變化。
當接收到圖5的新寫入命令505-1時,比較器1010可比較圖5的LBA 510-1與視窗1015中的輸入項1020-1至1020-4的結尾LBA 1030。若圖5的LBA 510-1是較早寫入命令的結尾LBA 1030之後的下一個位址,則圖5的LBA 510-1可被視為接續較早寫入命令的結尾LBA 1030。替代地,若較早寫入命令的結尾LBA 1030與圖5的LBA 510-1之間不存在可使用的啟用LBA,則圖5的LBA 510-1可被視為接續較早寫入命令的結尾LBA 1030。(請注意,結尾LBA 1030不必在字面上是藉由較早寫入命令所寫入至的最後位址,其條件為不存在資料可能已寫入至的可能介入位址。)若圖5的LBA 510-1接續視窗1015中的任何輸入項1020-1至1020-4的結尾LBA 1030,則輸入項1020-1至1020-4中的串流ID 1035用於圖5的寫入命令505-1。
儘管識別順序LBA是判定順序性何時發生的一種方法,但本發明概念的實施例可支援其他實施以偵測順序性。舉例而言,順序性邏輯905可使用模式匹配器在重複模式中偵測針對特定軟體源何時存取LBA。
不管圖5的LBA 510-1是否接續視窗1015中的任何輸入項1020-1至1020-4的結尾LBA 1030,視窗1015中的最舊輸入項可被「推出」且可將圖5的寫入命令505-1添加至視窗1015。舉例而言,假定輸入項1020-1是視窗1015中針對最近寫入命令的輸入項,且輸入項1020-4是視窗1015中的最舊輸入項。可自視窗1015移除輸入項1020-4,且可將圖5的LBA 510-1及串流ID 530-1兩者添加至視窗1015以作為新輸入項。視窗1015可以任何所要方式實施。舉例而言,視窗1015可包含具有至最舊輸入項的指標的環形清單(諸如,陣列)。當新輸入項將添加至視窗1015時,藉由指標所指向的最舊輸入項可由新輸入項覆寫,且指標可經調整以指向視窗1015中的下一最舊輸入項。本發明概念的實施例可支援用以儲存關於視窗1015的資訊的任何所要結構:環形清單僅為一個此種可能資料結構。
圖11繪示使用圖9的新近度邏輯910來計算新近度權重。在圖11中,新近度邏輯910經繪示為計算新近度權重1105。圖11中所示的方程式計算新近度權重1105為二的(區塊的當前(即,最近)存取時間810-1與先前存取時間815-1之間的差除以衰減週期1110)次冪。衰減週期1110表示可控制區塊多麼快速地降級至較低優先權串流的可調變數。衰減週期1110可指定至當圖1的機器105啟動時的初始值,且可視需要進行調整(藉由系統管理員手動進行,或基於系統工作負荷自動進行)。希望阻止區塊提昇過快(過快將導致大部分區塊使用同一高優先權串流)或過慢(過慢將導致大部分區塊同一低優先權串流)。換言之,希望以相當均勻的方式將區塊指定至串流:個別串流不應過於大量或過於輕度地利用。衰減週期1110表示管理串流提昇及降級以達成此目標的方式。
請注意,新近度權重1105可針對每一區塊改變。另一方面,衰減週期1110在針對新近度權重1105的所有計算中應為均勻的(但此並不意謂衰減週期1110不可隨時間變化)。
圖12繪示在圖9的存取計數調整器915中使用圖11的新近度權重1105來調整存取計數。在圖12中,存取計數調整器915經繪示在計算經調整存取計數1205。經調整存取計數1205可計算為存取計數820-1加一,再除以新近度權重1105。經調整存取計數1205接著可替代存取計數820-1而返回儲存(例如)於圖8的SFR表805中。
圖13繪示使用圖9的串流ID調整器920根據圖12的經調整存取計數1205來計算串流ID。在圖13中,串流ID調整器920經繪示在計算串流ID 530-1。串流ID 530-1可計算為經調整存取計數1205的對數,且可替代串流ID 530-1而返回儲存(例如)於圖8的SFR表805中。雖然數學術語「對數」在關於電腦使用時通常意謂log2
或log10
,但可選擇使用任何所要底數的對數函數。用於對數函數的所選擇底數提供另一機制,本發明概念的實施例可藉由所述機制來避免區塊提昇過快或過慢(且因此,避免一或多個裝置串流的過度使用及其他裝置串流的使用不足)。視經調整存取計數1205變得有多大,串流ID調整器920亦可使用多於一種對數函數。舉例而言,若經調整存取計數1205低於某一臨限值,則串流ID調整器920可使用log2
來計算串流ID 530-1,且若經調整存取計數1205大於所述臨限值,則串流ID調整器920可使用log10
來計算串流ID 530-1。
值得作出關於圖11至圖13的一些註解。第一,圖11至圖13繪示了用於計算圖11的新近度權重1105、圖12的經調整存取計數1205以及串流ID 530-1的特定計算。然而,本發明概念的實施例可支援以任何所要方式計算此等各項(或其他值)。由於終極目標是能夠調整圖8的串流ID 530-1(向上或向下)以適於圖8的區塊515-1,因此可使用達成此結果的任何所要方法。圖11至圖13僅繪示一個此種方法。
第二,在圖11至圖13中,存取時間(諸如,圖11的當前存取時間810-1及先前存取時間815-1)可基於所發出的請求的數目(而非基於特定時鐘)來判定。舉例而言,假定圖5的寫入命令505-1至505-3是連續地發出。圖5的寫入命令505-1可為第四寫入命令,圖5的寫入命令505-2可為第五寫入命令,且圖5的寫入命令505-3可為第六寫入命令。在此實例中,各種寫入命令的「存取時間」可分別為「4」、「5」以及「6」。
判定存取時間的此選擇具有如下後果:若所有
軟體源停止發送寫入命令歷時某一時間間隔(諸如,1秒,或1分鐘,或1小時),則區塊的「溫度」可無變化,即使區塊在大量時間中在技術上尚未被存取。因此,即使區塊在大量時間中可尚未被存取,但若在該時間期間無其他區塊被存取,則區塊的「溫度」可能無變化。自實用觀點看,所有軟體源可同時停止發送寫入命令不太可能。然而,若同時停止發送寫入命令發生,則本發明概念的實施例將能夠處置所述情形。另外,本發明概念的實施例可支援使用時鐘時間而非命令編號,此可導致區塊冷卻,即使沒有軟體源在發出寫入命令。
與圖8至圖13相比,圖14至圖20繪示了本發明概念的另一實施例。如同圖8至圖13中所示的本發明概念的實施例,圖14至圖20可包含用以將圖5的區塊ID 515-1至515-3映射至圖5的串流ID 530-1至530-3的資料結構,及圖4的背景邏輯435的實施。
圖14根據本發明概念的第二實施例繪示可用以將圖5的區塊ID 515-1至515-3映射至圖5的串流ID 530-1至530-3的節點。在圖14中,繪示了節點1405-1至1405-3,其中節點1405-1經詳細繪示。節點1405-1至1405-3可以任何所要方式(諸如,陣列、連結清單以及其他資料結構)來儲存。針對圖1的SSD 120中的每一區塊,可存在一個節點。
節點1405-1可包含多種資料,包含區塊ID 515-1、串流ID 530-1、存取計數820-1以及期滿時間1410。區塊ID 515-1、串流ID 530-1以及存取計數820-1儲存類似於本發明概念的第一實施例中的該等元素的資料。期滿時間1410表示區塊由於沒有被寫入命令存取而被視為期滿時的「時間」。如同本發明概念的第一個實施例,「時間」可關於所有寫入命令的序列中的特定寫入命令的數目進行量測,並非對時鐘的量測。
圖15根據本發明概念的第二實施例繪示圖4的背景邏輯435的細節。在圖15中,背景邏輯435可包含提昇邏輯1505、第二佇列器1510、用於佇列1520-1至1520-3的儲存器1515以及降級邏輯1525。提昇邏輯1505可在適當時將區塊提昇至較高優先級串流。第二佇列器1510(如此命名以區分其與圖4的佇列器430,但其操作類似)可將圖5的區塊ID 515-1至515-3置放於佇列1520-1至1520-3中。第二佇列器1510可具有類似於圖4的佇列器430的結構。如同圖10的儲存器1005,儲存器1515可實際上是圖3的儲存器330的部分,而不是背景邏輯435內的單獨儲存器。本發明概念的實施例可支援任何數目個佇列:三個佇列1520-1至1520-3僅為實例。另外,針對圖5的每一串流ID 530-1至530-3可存在一個佇列:佇列1520-1至1520-3的數目與同時發生的圖3的區塊ID 515-1至515-3的數目相同。當圖5的區塊ID 515-1至515-3到達佇列1520-1至1520-3的頂部時,降級邏輯1525可判定是否使圖5的區塊ID 515-1至515-3降級。
圖16繪示區塊ID在圖15的佇列1520-1至1520-3中的提昇及降級。在圖16中,使用字母a
至d
表示圖3的區塊ID 515-1至515-3。佇列1520-1至1520-3中的未標註輸入項未使用於圖16中所示的實例中,且可儲存所述實例中另外未使用的任何區塊ID。
第一,在圖16中,提交佇列335經繪示具有在提交佇列335的頂部1605處的區塊IDa
。區塊IDa
可識別之前先前尚未存取的區塊。因此,如虛線箭頭1610所示,區塊IDa
可添加至佇列1520-1(針對「最冷」串流的佇列)的尾部,此後,區塊IDa
可自提交佇列335移除。
第二,在圖16中,提交佇列335可包含區塊IDb
(其可在區塊IDa
經處理之後移動至提交佇列335的頂部1605中)。作為針對區塊IDb
的圖14的存取計數820-1增大的結果,區塊IDb
可提昇至「較熱」串流。如虛線箭頭1615所示,區塊ID b可自佇列1520-1的輸入項1620移動至佇列1520-2的尾部,此後,區塊IDb
可自提交佇列335移除。
第三,圖5的降級邏輯1525可依次檢查佇列1520-1至1520-3的頂部1625-1至1625-3。舉例而言,圖15的降級邏輯1525可檢查佇列1520-3的頂部1625-3處的區塊IDc
。若區塊IDc
快要降級,則區塊IDc
可自佇列1520-3的頂部1625-3移動至佇列1520-2(針對下一個「最熱」串流的佇列)的尾部。作為區塊IDc
降級的結果,佇列1520-3中的區塊IDd
可變為最熱區塊,如下文參看圖17所描述。
圖17繪示圖15的提昇邏輯1505的細節。在圖17中,提昇邏輯1505可包含增量器1705、串流ID調整器1710、區塊期滿邏輯1715以及最熱區塊邏輯1720。增量器1705可使圖14的存取計數820-1遞增,從而產生經調整存取計數。串流ID調整器1710可根據經調整存取計數來計算圖5的串流ID 530-1,如圖18中所示。串流ID調整器1710在結構上可類似於圖9的串流ID調整器920。
返回圖17,區塊期滿邏輯1715可判定區塊的期滿時間。區塊的期滿時間可判定為區塊ID的當前存取時間加上裝置壽命。裝置壽命是隨後將論述的取決於何種區塊為最熱區塊的時間間隔。圖19將此繪示為方程式:期滿時間1410是存取計數820-1(如上文所論述,其可為圖5的區塊ID 515-1的當前存取時間)與裝置壽命1905的總和。
最後,再次返回圖17,最熱區塊邏輯1720可判定圖5的區塊ID 515-1現在是否表示最熱區塊。最熱區塊可定義為具有最高串流優先權的區塊ID。若存在具有最高串流優先權的多個區塊ID,則任何選擇演算法可用以選擇具有最高串流優先權的特定區塊ID作為最熱區塊。舉例而言,處於佇列的頂部的表示最高串流優先權的區塊ID可經選擇作為最熱區塊。或者,具有最近存取(即,最高當前存取時間)的區塊ID可經選擇作為最熱區塊。或者,處於佇列的尾部的表示最高串流優先權的區塊ID可經選擇作為最熱區塊。若圖5的區塊ID 515-1現在是最熱區塊,則圖19的裝置壽命1905可計算為圖5的區塊ID 515-1的當前存取時間與圖5的區塊ID 515-1的先前存取時間之間的差。圖19的裝置壽命1905可表示對特定區塊的兩個寫入命令之間的預期的最大間隔,且可基於針對最熱區塊的最近兩個寫入命令之間的間隔來定義。圖19的裝置壽命1905接著可用以判定圖14的期滿時間1410,其可影響圖14的區塊ID 515-1何時降級。
圖20繪示圖15的降級邏輯1525的細節。在圖20中,降級邏輯1525經繪示為包含比較器2005及減量器2010。比較器2005可比較當前時間(其同樣可為最近寫入請求的數目,而不是時鐘時間)與圖14的期滿時間1410。若當前時間超過圖14的期滿時間1410,則區塊可被視為比之前更冷,是因為區塊已在沒有任何寫入命令的情況下經過一時間間隔(其可量測為圖19的裝置壽命1905)。換言之,若圖19的裝置壽命1905表示至任何給定區塊的寫入之間的預期數目個寫入命令,則圖14的期滿時間1410(其可計算為圖14的區塊ID 515-1的最近存取時間加上圖19的裝置壽命1905)可表示圖14的區塊ID 515-1可被寫入且不被認為已經變冷時的最新時間。若圖14的期滿時間1410已過去,則圖14的區塊ID 515-1已有些變冷且可降級。在該情況下,減量器2010可使圖5的串流ID 530-1遞減以降低圖5的區塊ID 515-1的優先權,從而與圖5的區塊ID 515-1的降低「溫度」對應。
若圖14的期滿時間1410尚未過去,則圖14的區塊ID 515-1尚未變冷,且圖14的區塊ID 515-1可留在其佇列的頂部處。請注意,此並不意謂該佇列中的其他區塊ID會不被降級。因為區塊ID是按藉以存取區塊的次序置放於佇列中,所以圖14的區塊ID 515-1是最長時間之前所存取的(該佇列中的該等區塊ID的)區塊ID,且因此可為將期滿的第一區塊ID。若圖14的區塊ID 515-1再次經存取(且因此保持「熱」),則圖14的區塊ID 515-1可移動至佇列的尾部,從而將另一區塊id留在佇列的頂部且因此潛在地經受降級。
圖21A至圖21B根據本發明概念的實施例繪示用於判定用於圖5的寫入命令505-1的圖5的串流ID 530-1的實例程序的流程圖。在圖21A中,在區塊2105處,圖4的接收器405可自軟體源接收寫入命令505-1。在區塊2110處,可自圖5的寫入命令505-1讀取圖5的LBA 510-1。在區塊2115處,圖4的LBA映射器410可將圖5的LBA 510-1映射至圖5的區塊ID 515-1。如上所述,圖5的LBA映射器410可以任何所要方式判定圖5的區塊ID 515-1:例如,藉由遮蔽來自圖5的LBA 510-1的某些位元,或藉由將圖5的LBA 510-1除以圖7的區塊大小705。在區塊2120處,圖5的串流選擇邏輯415可選擇待用於圖5的區塊ID 515-1的圖5的串流ID 530-1。如上所述,圖5的串流選擇邏輯415可以任何所要方式操作:例如,藉由自圖3的區塊至串流映射器340查找圖5的串流ID 530-1,藉由自圖8的存取計數820-1計算圖5的串流ID 530-1,藉由以循環方式來指定裝置串流,或任何其他所要方法。在區塊2125處,圖4的串流ID新增器420可將圖5的串流ID 530-1添加至圖5的寫入命令505-1。最後,在區塊2130處,可由圖1的SSD 120處理圖5的寫入命令505-1以執行所指示的寫入操作,其可包含圖4的傳輸器425將圖5的寫入命令505-1傳輸至圖1的SSD 120。
此時,圖5的寫入命令505-1已完全經處理。然而,仍然可執行其他處理,諸如,以更新指定至圖5的區塊ID 515-1的圖5的串流ID 530-1。在區塊2135處(圖21B),圖4的佇列器430可將圖5的區塊ID 515-1添加至圖3的提交佇列335以供進一步處理。在區塊2140處,當圖5的區塊ID 515-1到達圖3的提交佇列335的頂部時,可將圖5的區塊ID 515-1自圖3的的提交佇列335移除。最後,在區塊2145處,圖4的背景邏輯435可更新用於圖5的區塊ID 515-1的圖5的串流ID 530-1。圖4的背景邏輯435用來更新用於圖5的區塊ID 515-1的圖5的串流ID 530-1的各種方法將參看下文的圖24及圖25A至圖25C加以描述。
圖22根據本發明概念的實施例繪示圖4的LBA映射器410用於將圖5的LBA 510-1映射至圖5的區塊ID 515-1的實例程序的流程圖。在圖22中,在區塊2205處,圖4的LBA映射器410可使用圖5的位址遮罩525遮蔽來自圖1的LBA 510-1的位元,從而留下圖5的區塊ID 515-1。替代地,在區塊2210處,圖4的LBA映射器410可將圖5的LBA 510-1除以圖7的區塊大小705以判定圖5的區塊ID 515-1。
圖23A至圖23B根據本發明概念的第一實施例繪示用於使用順序性邏輯來判定針對圖5的區塊ID 515-1的圖5的串流ID 530-1的實例程序的流程圖。在圖23A中,在區塊2305處,圖4的串流選擇邏輯415可決定其是否對寫入命令505-1至505-3中的順序LBA進行測試。舉例而言,在使用多佇列方法的本發明概念的實施例中,圖4的串流選擇邏輯415可不考慮圖5的寫入命令505-1是否接續較早寫入命令。若圖4的串流選擇邏輯415未對順序寫入命令進行測試,則在區塊2310處,圖4的串流選擇邏輯415可判定目前與圖5的區塊ID 515-1相關聯的圖5的串流ID 530-1:例如,藉由自圖3的區塊至串流映射器340存取圖5的串流ID 530-1。圖4的串流選擇邏輯415如何判定圖5的串流ID 530-1的特點可取決於圖3的的區塊至串流映射器340如何實施:若區塊至串流映射器340包含圖8的SFR表805,則圖4的串流選擇邏輯415可執行表查找;若區塊至串流映射器340包含圖14的節點1405-1至1405-3,則圖4的串流選擇邏輯415將必須搜尋所述節點,以在判定圖5的串流ID 530-1之前找到圖5的區塊ID 515-1。
另一方面,若圖4的串流選擇邏輯415對順序寫入命令進行測試,則在區塊2315處,圖4的串流選擇邏輯415可識別圖10的輸入項1020-1至1020-8的圖10的視窗1015。在區塊2320處,圖4的串流選擇邏輯415可判定圖5的LBA 510-1是否接續圖10的視窗1015中的圖10的任何輸入項1020-1至1020-8的圖10的結尾LBA 1030。若圖5的LBA 515-1不接續圖10的視窗1015中的圖10的任何輸入項1020-1至1020-8的圖10的結尾LBA 1030,則如上所述,在區塊2310處,圖4的串流選擇邏輯415可判定目前與圖5的區塊ID 515-1相關聯的圖5的串流ID 530-1。
若圖4的串流選擇邏輯415對順序寫入命令進行測試且圖5的LBA 510-1接續圖10的視窗1015中的圖10的任何輸入項1020-1至1020-8,則在區塊2325處(圖23B),圖4的串流選擇邏輯415可判定指定至先前寫入命令的圖5的串流ID 530-1。在區塊2125(圖21A至圖21B的部分,且因此在圖23B中以虛線繪示以用於說明性目的)處,可將指定至先前寫入命令的圖5的串流ID 530-1指定至圖5的寫入命令505-1。在區塊2330處,圖4的串流選擇邏輯415可識別圖10的輸入項1020-1至1020-8,其為圖10的視窗1015中的最舊輸入項。最後,在區塊2335處,圖4的串流選擇邏輯415可移除圖5的視窗1015中的最舊輸入項且添加對應於圖5的寫入命令505-1的新輸入項。圖4的串流選擇邏輯415如何執行此刪除及添加的機制取決於用於圖10的視窗1015的結構。若圖10的視窗1015儲存圖10的輸入項1020-1至1020-8的陣列或連結清單,則刪除及添加可差不多涉及用新值覆寫最舊輸入項及更新至陣列或連結清單的頂部的指標。另一方面,將不同結構用於圖10的視窗1015,刪除及添加可涉及針對最舊輸入項刪除及解除配置記憶體目標及針對圖5的寫入命令505-1分配新的記憶體目標。
圖24根據本發明概念的第一實施例繪示用於執行圖8的SFR表805的背景更新的實例程序的流程圖。在圖24中,在區塊2405處,圖9的存取計數調整器905可使圖8的存取計數820-1遞增(例如,使用增量器或ALU)。在區塊2410處,圖9的新近度邏輯910可計算(例如,使用ALU)圖11的新近度權重1105。在區塊2415處,圖9的存取計數調整器905可將圖8的存取計數820-1(在區塊2405中遞增)除以(例如,使用ALU)圖11的新近度權重1105。最後,在區塊2420處,圖9的串流ID調整器920可判定與圖5區塊ID 515-1相關聯的新串流ID。舉例而言,圖9的串流ID調整器920可使用ALU來計算圖12的經調整存取計數1205的對數。
圖25A至圖25C根據本發明概念的第二實施例繪示用於執行圖14的節點1405-1的背景更新的實例程序的流程圖。在圖25A中,在區塊2505處,圖17的增量器1705可使圖14的存取計數820-1遞增。在區塊2510處,圖17的區塊期滿邏輯1715可判定圖14的區塊ID 515-1的圖14的期滿時間1410。在區塊2515處,圖17的串流ID調整器1710可判定針對圖14的區塊ID 515-1的圖14的串流ID 530-1。圖17的串流ID調整器1710可藉由(例如)自圖14的節點1405-1存取圖14的串流ID 530-1來判定圖14的串流ID 530-1。在區塊2520處,圖15的第二佇列器1510可將圖14的區塊ID 515-1置放於圖15的佇列1520-1至1520-3中對應於圖14的串流ID 530-1的佇列中。
在區塊2525處(圖25B),圖17的最熱區塊邏輯1720可比較圖14的區塊ID 515-1的圖14的存取計數820-1與最熱區塊的存取計數。若圖14的區塊ID515-1的圖14的存取計數820-1大於最熱區塊的存取計數,則圖14的區塊ID 515-1現在是最熱區塊。因此,在區塊2530處,圖17的最熱區塊邏輯1720可將圖14的區塊ID 515-1識別為新的最熱區塊,且在區塊2535處,圖17的最熱區塊邏輯1720可判定圖19的裝置壽命1905為圖14的區塊ID 515-1的兩次最近存取之間的時間差。
不管圖14的區塊ID 515-1是否為最熱區塊,在區塊2540處,圖20的比較器2005可在圖14的區塊ID 515-1處於圖15的佇列1520-1至1520-3中的一者的頂部時判定圖14的期滿時間1410是否已過去。若未過去,則圖4的背景邏輯435可等待(同時進行其他操作)且在區塊2540處再次檢查,直至圖14的區塊ID 515-1的圖14的期滿時間1410已過去。屆時,在區塊2545處,圖15的降級邏輯1525可自圖15的佇列1520-1至1520-3移除圖14的區塊ID 515-1。接著,在區塊2550處,圖20的減量器2010可使圖14的串流ID 530-1遞減。
在區塊2555處(圖25C),圖15的第二佇列器1510可將圖14的區塊ID 515-1置放於圖15的佇列1520-1至1520-3中對應於新串流ID的另一佇列中。在區塊2560處,圖15的降級邏輯1525可判定圖14的區塊ID 515-1是否為最熱區塊。若是,則在區塊2565處,圖15的降級邏輯1525可選擇另一區塊ID作為新的最熱區塊。舉例而言,可選擇(在區塊2560中的遞減之前)指定至圖14的串流ID 530-1的另一區塊,諸如處於佇列的頂部或尾部的區塊ID。如前所述,圖15的降級邏輯1525亦可基於選定的新最熱區塊來計算圖19的裝置壽命1905。
在圖21A至圖25C中,繪示了本發明概念的一些實施例。然而,熟習此項技術者將認識到,藉由改變區塊的次序、藉由省略區塊或藉由包含圖式中未圖示的連結,本發明概念的其他實施例亦為可能的。流程圖的所有此等變化被認為本發明概念的實施例,無論是否明確地描述。
以下論述意欲提供對合適機器或可實施本發明概念的某些態樣的機器的簡要的、大體的描述。機器可至少部分地由來自習知輸入裝置(諸如,鍵盤、滑鼠等)的輸入以及由自另一機器(與虛擬現實(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控制器包含用於提交佇列及區塊至串流映射器的儲存器;以及 快閃轉譯層,其包含: 接收器,用以接收包含邏輯區塊位址(LBA)的寫入命令; LBA映射器,用以將所述LBA映射至區塊識別符(ID); 串流選擇邏輯,用以使用所述區塊至串流映射器基於所述區塊ID來選擇串流ID; 串流ID新增器,用以將所述串流ID添加至所述寫入命令; 佇列器,用以將所述區塊ID置放於所述提交佇列中;以及 背景邏輯,用以自所述提交佇列移除所述區塊ID及更新所述區塊至串流映射器。 敍述2. 本發明概念的實施例包含根據敍述1的SSD,更包括用以將具有所述串流ID的所述寫入命令傳輸至所述SSD的傳輸器。 敍述3. 本發明概念的實施例包含根據敍述1的SSD,其中所述LBA映射器包含用以遮蔽所述LBA的部分以判定所述區塊ID的位址遮罩。 敍述4. 本發明概念的實施例包含根據敍述1的SSD,其中所述LBA映射器包含用以將所述LBA除以區塊大小以識別所述區塊ID的算術邏輯單元(ALU)。 敍述5. 本發明概念的實施例包含根據敍述1的SSD,其中所述區塊至串流映射器包含順序、頻率、新近度(SFR)表,所述SFR表包含所述區塊ID及針對所述區塊ID的所述串流ID。 敍述6. 本發明概念的實施例包含根據敍述5的SSD,其中所述背景邏輯包含用以在所述LBA接續先前寫入命令的第二LBA的情況下選擇先前串流的順序性邏輯。 敍述7. 本發明概念的實施例包含根據敍述6的SSD,其中所述先前寫入命令處於先於所述寫入命令的視窗中,所述視窗包含視窗大小。 敍述8. 本發明概念的實施例包含根據敍述7的SSD,其中所述視窗大小是回應於以下各者中的至少一者而判定:主機電腦系統中的處理器中的核心的數目,及在所述主機電腦系統中的所述處理器上執行的軟體源的數目。 敍述9. 本發明概念的實施例包含根據敍述7的SSD,其中所述SSD控制器更包含用於包含所述先前寫入命令的先前寫入命令佇列的儲存器,所述佇列包含所述先前寫入命令中的每一者的結尾LBA及對應串流ID。 敍述10. 本發明概念的實施例包含根據敍述5的SSD,其中所述背景邏輯包含: 新近度邏輯,用以基於針對所述區塊ID的當前存取時間、針對所述區塊ID的先前存取時間以及衰減週期來計算新近度權重; 存取計數調整器,用以基於所述新近度權重來調整所述區塊ID的存取計數,從而產生經調整存取計數;以及 串流ID調整器,用以基於針對所述區塊ID的所述經調整存取計數來調整所述串流ID。 敍述11. 本發明概念的實施例包含根據敍述10的SSD,其中所述SFR表更包含所述區塊ID的所述當前存取時間、所述區塊ID的所述先前存取時間以及所述區塊ID的所述存取計數。 敍述12. 本發明概念的實施例包含根據敍述10的SSD,其中所述新近度邏輯將所述新近度權重計算為二的(所述區塊ID的所述當前存取時間與所述區塊ID的所述先前存取時間之間的差除以所述衰減週期)次冪。 敍述13. 本發明概念的實施例包含根據敍述10的SSD,其中所述存取計數調整器將針對所述區塊ID的所述經調整存取計數計算為(所述區塊ID的所述存取計數加一)除以所述新近度權重。 敍述14. 本發明概念的實施例包含根據敍述10的SSD,其中所述串流ID調整器將所述串流ID計算為針對所述區塊ID的所述經調整存取計數的對數。 敍述15. 本發明概念的實施例包含根據敍述1的SSD,其中所述區塊至串流映射器包含節點輸入項(node entry),所述節點輸入項包含所述區塊ID及針對所述區塊ID的所述串流ID。 敍述16. 本發明概念的實施例包含根據敍述15的SSD,其中所述背景邏輯包含: 提昇邏輯,用以基於所述區塊ID來判定何時提昇所述串流ID; 第二佇列器,用以回應於針對所述區塊ID的所述串流ID,將所述區塊ID置放於對應於多個串流ID的多個佇列中的第一佇列中;以及 降級邏輯,用以基於所述區塊ID來判定何時將所述串流ID降級。 敍述17. 本發明概念的實施例包含根據敍述16的SSD,其中所述提昇邏輯包含: 增量器,用以使所述區塊ID的存取計數遞增;以及 串流ID調整器,用以回應於所述區塊ID的所述存取計數來判定所述串流ID。 敍述18. 本發明概念的實施例包含根據敍述17的SSD,其中所述串流ID調整器是操作性的以將所述串流ID判定為所述區塊ID的所述存取計數的對數。 敍述19. 本發明概念的實施例包含根據敍述17的SSD,其中所述提昇邏輯更包含用以計算所述區塊ID的期滿時間的區塊期滿邏輯。 敍述20. 本發明概念的實施例包含根據敍述19的SSD,其中所述區塊期滿邏輯是操作性的以將所述區塊ID的所述期滿時間計算為所述區塊ID的所述存取計數與裝置壽命的總和。 敍述21. 本發明概念的實施例包含根據敍述20的SSD,其中所述裝置壽命為最熱區塊的最後存取時間與所述最熱區塊的先前存取時間之間的差。 敍述22. 本發明概念的實施例包含根據敍述21的SSD,其中所述提昇邏輯更包含最熱區塊邏輯,其用以在所述區塊ID的所述存取計數大於所述最熱區塊的所述最後存取計數的情況下,將所述區塊ID識別為所述最熱區塊。 敍述23. 本發明概念的實施例包含根據敍述21的SSD,其中所述節點輸入項更包含所述區塊ID的所述存取計數及所述區塊ID的所述期滿時間。 敍述24. 本發明概念的實施例包含根據敍述16的SSD,其中: 所述降級邏輯包含: 比較器,用以判定所述區塊ID的期滿時間是否已過去;以及 在所述區塊ID的所述期滿時間已過去的情況下,用以使所述串流ID遞減的減量器;且 所述第二佇列器是操作性的以回應於所述區塊ID的所述已遞減串流ID,將所述區塊ID置放於對應於所述多個串流ID的所述多個佇列中的第二佇列中。 敍述25. 本發明概念的實施例包含根據敍述24的SSD,其中所述降級邏輯是操作性的,以基於當所述區塊ID處於所述多個佇列中的所述第一佇列的頂部時的所述區塊ID來判定何時將所述串流ID降級。 敍述26. 本發明概念的實施例包含根據敍述24的SSD,其中所述降級邏輯是操作性的,以基於在所述區塊ID處於所述多個佇列中的所述第一佇列的頂部的情況下的所述區塊ID來判定何時將所述串流ID降級。 敍述27. 本發明概念的實施例包含一種供在電腦系統中使用的驅動器,其包括: 接收器,用以接收針對固態硬碟(SSD)的寫入命令,所述寫入命令包含邏輯區塊位址(LBA); LBA映射器,用以將所述LBA映射至區塊識別符(ID); 串流選擇邏輯,用以使用儲存於主機電腦系統中的記憶體中的區塊至串流映射器,基於所述區塊ID來選擇串流ID; 串流ID新增器,用以將所述串流ID添加至所述寫入命令; 佇列器,用以將所述區塊ID置放於儲存於所述記憶體中的提交佇列中;以及 背景邏輯,用以自所述提交佇列移除所述區塊ID及更新所述區塊至串流映射器。 敍述28. 本發明概念的實施例包含根據敍述27的驅動器,更包括用以將具有所述串流ID的所述寫入命令傳輸至所述SSD的傳輸器。 敍述29. 本發明概念的實施例包含根據敍述27的驅動器,其中所述LBA映射器包含用以遮蔽所述LBA的部分以識別所述區塊的位址遮罩。 敍述30. 本發明概念的實施例包含根據敍述27的驅動器,其中所述LBA映射器包含用以將所述LBA除以區塊大小以識別所述區塊的算術邏輯單元(ALU)。 敍述31. 本發明概念的實施例包含根據敍述27的驅動器,其中所述區塊至串流映射器包含順序、頻率、新近度(SFR)表,所述SFR表包含所述區塊ID及針對所述區塊ID的所述串流ID。 敍述32. 本發明概念的實施例包含根據敍述31的驅動器,其中所述背景邏輯包含用以在所述LBA接續先前寫入命令的第二LBA的情況下選擇先前串流的順序性邏輯。 敍述33. 本發明概念的實施例包含根據敍述32的驅動器,其中所述先前寫入命令處於先於所述寫入命令的視窗中,所述視窗包含視窗大小。 敍述34. 本發明概念的實施例包含根據敍述33的驅動器,其中所述視窗大小是回應於以下各者中的至少一者而判定:主機電腦系統中的處理器中的核心的數目,及在所述主機電腦系統中的所述處理器上執行的軟體源的數目。 敍述35. 本發明概念的實施例包含根據敍述31的驅動器,其中所述背景邏輯包含: 新近度邏輯,用以基於針對所述區塊ID的當前存取時間、針對所述區塊ID的先前存取時間以及衰減週期來計算新近度權重; 存取計數調整器,用以基於所述新近度權重來調整所述區塊ID的存取計數,從而產生經調整存取計數;以及 串流ID調整器,用以基於針對所述區塊ID的所述經調整存取計數來調整所述串流ID。 敍述36. 本發明概念的實施例包含根據敍述35的驅動器,其中所述SFR表更包含所述區塊ID的所述當前存取時間、所述區塊ID的所述先前存取時間以及所述區塊ID的所述存取計數。 敍述37. 本發明概念的實施例包含根據敍述35的驅動器,其中所述新近度邏輯將所述新近度權重計算為二的(所述區塊ID的所述當前存取時間與所述區塊ID的所述先前存取時間之間的差除以所述衰減週期)次冪。 敍述38. 本發明概念的實施例包含根據敍述35的驅動器,其中所述存取計數調整器將針對所述區塊ID的所述經調整存取計數計算為(所述區塊ID的所述存取計數加一)除以所述新近度權重。 敍述39. 本發明概念的實施例包含根據敍述35的驅動器,其中所述串流ID調整器將所述串流ID計算為針對所述區塊ID的所述經調整存取計數的對數。 敍述40. 本發明概念的實施例包含根據敍述27的驅動器,其中所述區塊至串流映射器包含節點輸入項,所述節點輸入項包含所述區塊ID及針對所述區塊ID的所述串流ID。 敍述41. 本發明概念的實施例包含根據敍述40的驅動器,其中所述背景邏輯包含: 提昇邏輯,用以基於所述區塊ID來判定何時提昇所述串流ID; 第二佇列器,用以回應於針對所述區塊ID的所述串流ID,將所述區塊ID置放於對應於多個串流ID的多個佇列中的第一佇列中;以及 降級邏輯,用以基於所述區塊ID來判定何時將所述串流ID降級。 敍述42. 本發明概念的實施例包含根據敍述41的驅動器,其中所述提昇邏輯包含: 增量器,用以使所述區塊ID的存取計數遞增;以及 串流ID調整器,用以回應於所述區塊ID的存取計數來判定所述串流ID。 敍述43. 本發明概念的實施例包含根據敍述42的驅動器,其中所述串流ID調整器是操作性的以將所述串流ID判定為所述區塊ID的所述存取計數的對數。 敍述44. 本發明概念的實施例包含根據敍述42的驅動器,其中所述提昇邏輯更包含用以計算所述區塊ID的期滿時間的區塊期滿邏輯。 敍述45. 本發明概念的實施例包含根據敍述44的驅動器,其中所述區塊期滿邏輯是操作性的以將所述區塊ID的所述期滿時間計算為所述區塊ID的所述存取計數與裝置壽命的總和。 敍述46. 本發明概念的實施例包含根據敍述45的驅動器,其中所述裝置壽命為最熱區塊的最後存取時間與所述最熱區塊的先前存取時間之間的差。 敍述47. 本發明概念的實施例包含根據敍述46的驅動器,其中所述提昇邏輯更包含最熱區塊邏輯,其用以在所述區塊ID的所述存取計數大於所述最熱區塊的所述最後存取計數的情況下,將所述區塊ID識別為所述最熱區塊。 敍述48. 本發明概念的實施例包含根據敍述46的驅動器,其中所述節點輸入項更包含所述區塊ID的所述存取計數及所述區塊ID的所述期滿時間。 敍述49. 本發明概念的實施例包含根據敍述41的驅動器,其中: 所述降級邏輯包含: 比較器,用以判定所述區塊ID的期滿時間是否已過去;以及 在所述區塊ID的所述期滿時間已過去的情況下,用以使所述串流ID遞減的減量器;且 所述第二佇列器是操作性的以回應於所述區塊ID的所述已遞減串流ID,將所述區塊ID置放於對應於所述多個串流ID的所述多個佇列中的第二佇列中。 敍述50. 本發明概念的實施例包含根據敍述49的驅動器,其中所述降級邏輯是操作性的,以基於當所述區塊ID處於所述多個佇列中的所述第一佇列的頂部時的所述區塊ID來判定何時將所述串流ID降級。 敍述51. 本發明概念的實施例包含根據敍述49的驅動器,其中所述降級邏輯是操作性的,以基於在所述區塊ID處於所述多個佇列中的所述第一佇列的頂部的情況下的所述區塊ID來判定何時將所述串流ID降級。 敍述52. 本發明概念的實施例包含一種方法,其包括: 自軟體源接收寫入命令; 判定所述寫入命令中的邏輯區塊位址(LBA); 識別固態硬碟(SSD)上包含所述LBA的區塊的區塊識別符(ID); 存取與所述區塊ID相關聯的串流ID; 將所述串流ID指定至所述寫入命令; 在所述SSD上處理使用所述指定串流ID的所述寫入命令;以及 執行與所述區塊ID相關聯的所述串流ID的背景更新。 敍述53. 本發明概念的實施例包含根據敍述52的方法,其中所述方法實施於主機電腦系統上的檔案系統層、區塊層或裝置驅動器層中的一者中。 敍述54. 本發明概念的實施例包含根據敍述52的方法,其中所述方法實施於所述SSD的快閃轉譯層中。 敍述55. 本發明概念的實施例包含根據敍述52的方法,其中識別固態硬碟(SSD)上包含所述LBA的區塊的區塊識別符(ID)包含對所述LBA使用位址遮罩以識別所述區塊ID。 敍述56. 本發明概念的實施例包含根據敍述52的方法,其中識別固態硬碟(SSD)上包含所述LBA的區塊的區塊識別符(ID)包含將所述LBA除以所述區塊中的磁區的數目。 敍述57. 本發明概念的實施例包含根據敍述52的方法,其中將所述串流ID指定至所述寫入命令包含將所述串流ID添加至所述寫入命令以作為標籤。 敍述58. 本發明概念的實施例包含根據敍述52的方法,更包括: 判定所述邏輯區塊位址是否接續第二寫入命令中的第二LBA;以及 在所述邏輯區塊位址接續所述第二寫入命令中的所述第二LBA的情況下: 判定指定至所述第二寫入命令的第二串流ID;以及 將所述第二串流ID指定至所述寫入命令。 敍述59. 本發明概念的實施例包含根據敍述58的方法,其中所述第二寫入命令處於先於所述寫入命令的視窗中。 敍述60. 本發明概念的實施例包含根據敍述59的方法,更包括識別所述視窗。 敍述61. 本發明概念的實施例包含根據敍述60的方法,其中識別所述視窗包含回應於以下各者中的至少一者來識別視窗大小:包含所述SSD的主機電腦系統中的處理器中的核心的數目,及在包含所述SSD的所述主機電腦系統中的所述處理器上執行的軟體源的數目。 敍述62. 本發明概念的實施例包含根據敍述59的方法,更包括: 識別所述視窗中的最舊寫入命令;以及 用所述寫入命令替換所述視窗中的所述最舊寫入命令。 敍述63. 本發明概念的實施例包含根據敍述52的方法,其中執行與所述區塊ID相關聯的所述串流ID的背景更新包含: 將所述區塊ID添加至提交佇列;以及 在所述區塊ID處於所述提交佇列的頂部時,自所述提交佇列移除所述區塊ID。 敍述64. 本發明概念的實施例包含根據敍述52的方法,其中執行與所述區塊ID相關聯的所述串流ID的背景更新包含: 增大所述區塊ID的存取計數; 回應於所述區塊ID的當前存取時間及先前存取時間來計算所述區塊ID的新近度權重; 回應於所述新近度權重來更新所述區塊ID的所述存取計數;以及 回應於所述經更新的存取計數來判定針對所述區塊ID的所述串流ID。 敍述65. 本發明概念的實施例包含根據敍述64的方法,其中回應於所述區塊ID的當前存取時間及先前存取時間來計算所述區塊ID的新近度權重包含,將所述新近度權重計算為二的(所述區塊ID的所述當前存取時間與所述先前存取時間之間的差除以衰減週期)次冪。 敍述66. 本發明概念的實施例包含根據敍述65的方法,其中回應於所述新近度權重來更新所述區塊ID的所述存取計數包含,將所述存取計數除以所述新近度權重。 敍述67. 本發明概念的實施例包含根據敍述64的方法,其中回應於所述經更新的存取計數來判定針對所述區塊ID的所述串流ID包含,將針對所述區塊ID的所述串流ID計算為所述經更新的存取計數的對數。 敍述68. 本發明概念的實施例包含根據敍述52的方法,其中執行與所述區塊ID相關聯的所述串流ID的背景更新包含: 將所述區塊ID置放於對應於所述串流ID的佇列中,其中對應於所述串流ID的所述佇列是多個佇列中的其中之一;以及 在所述區塊ID到達所述佇列的頂部時判定是否將所述區塊ID降級。 敍述69. 本發明概念的實施例包含根據敍述68的方法,其中將所述區塊ID置放於對應於所述串流ID的佇列中包含: 使所述區塊ID的存取計數遞增;以及 回應於所述區塊ID的所述存取計數來判定針對所述區塊ID的所述串流ID。 敍述70. 本發明概念的實施例包含根據敍述69的方法,其中回應於所述區塊ID的所述存取計數來判定針對所述區塊ID的所述串流ID包含,將針對區塊ID的所述串流ID計算為所述區塊ID的所述存取計數的對數。 敍述71. 本發明概念的實施例包含根據敍述69的方法,其中將所述區塊ID置放於對應於所述串流ID的佇列中更包含,在所述區塊ID的所述存取計數超過最熱區塊的第二存取計數的情況下,將所述區塊ID識別為新的最熱區塊。 敍述72. 本發明概念的實施例包含根據敍述71的方法,其中將所述區塊ID識別為新的最熱區塊包含,將裝置壽命判定為所述區塊ID的當前存取時間與所述區塊ID的先前存取時間之間的差。 敍述73. 本發明概念的實施例包含根據敍述68的方法,其中: 執行與所述區塊ID相關聯的所述串流ID的背景更新更包含回應於所述存取計數及裝置壽命來判定所述區塊ID的期滿時間;且 在所述區塊ID到達所述佇列的頂部時判定是否將所述區塊ID降級包含,在所述區塊ID的所述期滿時間已過去的情況下: 自對應於所述串流ID的所述佇列移除所述區塊ID; 使所述串流ID遞減;以及 將所述區塊ID置放於對應於所述遞減的串流ID的第二佇列中。 敍述74. 本發明概念的實施例包含根據敍述73的方法,其中回應於所述存取計數及裝置壽命來判定所述區塊ID的期滿時間包含,將裝置壽命判定為最熱區塊的最後存取時間與所述最熱區塊的先前存取時間之間的差。 敍述75. 本發明概念的實施例包含根據敍述73的方法,其中在所述區塊ID到達所述佇列的頂部時判定是否將所述區塊ID降級更包含,在所述區塊ID的所述期滿時間已過去的情況下且在所述區塊ID為最熱區塊的情況下,選擇對應於所述串流ID的所述佇列中的第二區塊ID作為新的最熱區塊。 敍述76. 本發明概念的實施例包含一種包括非暫時性儲存媒體的物件,所述非暫時性儲存媒體於其上儲存有在由機器執行時引起如下操作的指令: 自軟體源接收寫入命令; 判定所述寫入命令中的邏輯區塊位址(LBA); 識別固態硬碟(SSD)上包含所述LBA的區塊的區塊識別符(ID); 存取與所述區塊ID相關聯的串流ID; 將所述串流ID指定至所述寫入命令; 在所述SSD上處理使用所述指定串流ID的所述寫入命令;以及 執行與所述區塊ID相關聯的所述串流ID的背景更新。 敍述77. 本發明概念的實施例包含根據敍述76的物件,其中所述方法實施於主機電腦系統上的檔案系統層、區塊層或裝置驅動器層中的一者中。 敍述78. 本發明概念的實施例包含根據敍述76的物件,其中所述方法實施於所述SSD的快閃轉譯層中。 敍述79. 本發明概念的實施例包含根據敍述76的物件,其中識別固態硬碟(SSD)上包含所述LBA的區塊的區塊識別符(ID)包含對所述LBA使用位址遮罩以識別所述區塊ID。 敍述80. 本發明概念的實施例包含根據敍述76的物件,其中識別固態硬碟(SSD)上包含所述LBA的區塊的區塊識別符(ID)包含將所述LBA除以所述區塊中的磁區的數目。 敍述81. 本發明概念的實施例包含根據敍述76的物件,其中將所述串流ID指定至所述寫入命令包含將所述串流ID添加至所述寫入命令以作為標籤。 敍述82. 本發明概念的實施例包含根據敍述76的物件,所述非暫時性儲存媒體於其上儲存有在由所述機器執行時引起如下操作的其他指令: 判定所述邏輯區塊位址是否接續第二寫入命令中的第二LBA;以及 在所述邏輯區塊位址接續所述第二寫入命令中的所述第二LBA的情況下: 判定指定至所述第二寫入命令的第二串流ID;以及 將所述第二串流ID指定至所述寫入命令。 敍述83. 本發明概念的實施例包含根據敍述82的物件,其中所述第二寫入命令處於先於所述寫入命令的視窗中。 敍述84. 本發明概念的實施例包含根據敍述83的物件,所述非暫時性儲存媒體於其上儲存有在由所述機器執行時引起識別所述視窗的其他指令。 敍述85. 本發明概念的實施例包含根據敍述84的物件,其中識別所述視窗包含回應於以下各者中的至少一者來識別所述視窗的視窗大小:包含所述SSD的主機電腦系統中的處理器中的核心的數目,及在包含所述SSD的所述主機電腦系統中的所述處理器上執行的軟體源的數目。 敍述86. 本發明概念的實施例包含根據敍述83的物件,所述非暫時性儲存媒體於其上儲存有在由所述機器執行時引起如下操作的其他指令: 識別所述視窗中的最舊寫入命令;以及 用所述寫入命令替換所述視窗中的所述最舊寫入命令。 敍述87. 本發明概念的實施例包含根據敍述76的物件,其中執行與所述區塊ID相關聯的所述串流ID的背景更新包含: 將所述區塊ID添加至提交佇列;以及 在所述區塊ID處於所述提交佇列的頂部時,自所述提交佇列移除所述區塊ID。 敍述88. 本發明概念的實施例包含根據敍述76的物件,其中執行與所述區塊ID相關聯的所述串流ID的背景更新包含: 增大所述區塊ID的存取計數; 回應於所述區塊ID的當前存取時間及先前存取時間來計算所述區塊ID的新近度權重; 回應於所述新近度權重來更新所述區塊ID的所述存取計數;以及 回應於所述經更新的存取計數來判定針對所述區塊ID的所述串流ID。 敍述89. 本發明概念的實施例包含根據敍述88的物件,其中回應於所述區塊ID的當前存取時間及先前存取時間來計算所述區塊ID的新近度權重包含,將所述新近度權重計算為二的(所述區塊ID的所述當前存取時間與所述先前存取時間之間的差除以衰減週期)次冪。 敍述90. 本發明概念的實施例包含根據敍述89的物件,其中回應於所述新近度權重來更新所述區塊ID的所述存取計數包含,將所述存取計數除以所述新近度權重。 敍述91. 本發明概念的實施例包含根據敍述88的物件,其中回應於所述經更新的存取計數來判定針對所述區塊ID的所述串流ID包含,將針對所述區塊ID的所述串流ID計算為所述經更新的存取計數的對數。 敍述92. 本發明概念的實施例包含根據敍述76的物件,其中執行與所述區塊ID相關聯的所述串流ID的背景更新包含: 將所述區塊ID置放於對應於所述串流ID的佇列中,其中對應於所述串流ID的所述佇列是多個佇列中的其中之一;以及 在所述區塊ID到達所述佇列的頂部時判定是否將所述區塊ID降級。 敍述93. 本發明概念的實施例包含根據敍述92的物件,其中將所述區塊ID置放於對應於所述串流ID的佇列中包含: 使所述區塊ID的存取計數遞增;以及 回應於所述區塊ID的所述存取計數來判定針對所述區塊ID的所述串流ID。 敍述94. 本發明概念的實施例包含根據敍述93的物件,其中回應於所述區塊ID的所述存取計數來判定針對所述區塊ID的所述串流ID包含,將針對區塊ID的所述串流ID計算為所述區塊ID的所述存取計數的對數。 敍述95. 本發明概念的實施例包含根據敍述93的物件,其中將所述區塊ID置放於對應於所述串流ID的佇列中更包含,在所述區塊ID的所述存取計數超過最熱區塊的第二存取計數的情況下,將所述區塊ID識別為新的最熱區塊。 敍述96. 本發明概念的實施例包含根據敍述95的物件,其中將所述區塊ID識別為新的最熱區塊包含,將裝置壽命判定為所述區塊ID的當前存取時間與所述區塊ID的先前存取時間之間的差。 敍述97. 本發明概念的實施例包含根據敍述92的物件,其中: 執行與所述區塊ID相關聯的所述串流ID的背景更新更包含回應於所述存取計數及裝置壽命來判定所述區塊ID的期滿時間;且 在所述區塊ID到達所述佇列的頂部時判定是否將所述區塊ID降級包含,在所述區塊ID的所述期滿時間已過去的情況下: 自對應於所述串流ID的所述佇列移除所述區塊ID; 使所述串流ID遞減;以及 將所述區塊ID置放於對應於所述遞減的串流ID的第二佇列中。 敍述98. 本發明概念的實施例包含根據敍述97的物件,其中回應於所述存取計數及裝置壽命來判定所述區塊ID的期滿時間包含,將裝置壽命判定為最熱區塊的最後存取時間與所述最熱區塊的先前存取時間之間的差。 敍述99. 本發明概念的實施例包含根據敍述97的物件,其中在所述區塊ID到達所述佇列的頂部時判定是否將所述區塊ID降級更包含,在所述區塊ID的所述期滿時間已過去的情況下且在所述區塊ID為最熱區塊的情況下,選擇對應於所述串流ID的所述佇列中的第二區塊ID作為新的最熱區塊。
因此,考慮到本文中所描述的實施例的廣泛多種改變,此詳細描述及伴隨的材料僅意欲為說明性的,而不應被視為限制本發明概念的範疇。所主張的本發明概念因此是可在以下申請專利範圍及其等效物的範疇及精神內的所有此等修改。
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‧‧‧快閃轉譯層
330‧‧‧儲存器
335‧‧‧提交佇列
340‧‧‧區塊至串流映射器
405‧‧‧接收器
410‧‧‧邏輯區塊位址(LBA)映射器
415‧‧‧串流選擇邏輯
420‧‧‧串流ID新增器
425‧‧‧傳輸器
430‧‧‧佇列器
435‧‧‧背景邏輯
505-1、505-2、505-3‧‧‧寫入命令
510-1、510-2、510-3‧‧‧LBA
515-1、515-2、515-3‧‧‧區塊識別符(ID)
520‧‧‧算術邏輯單元(ALU)
525‧‧‧位址遮罩
530-1、530-2、530-3、1035‧‧‧串流識別符(ID)
705‧‧‧區塊大小
805‧‧‧順序、頻率、新近度(SFR)表
810-1、810-2、810-3、810-4‧‧‧當前存取時間
815-1、815-2、815-3、815-4‧‧‧先前存取時間
820-1、820-2、820-3、820-4‧‧‧存取計數
905‧‧‧順序性邏輯
910‧‧‧新近度邏輯
915‧‧‧存取計數調整器
920‧‧‧串流ID調整器
1005‧‧‧儲存器
1010‧‧‧比較器
1015‧‧‧視窗
1020-1、1020-2、1020-3、1020-4、1020-5、1020-6、1020-7、1020-8‧‧‧輸入項
1025‧‧‧佇列
1030‧‧‧結尾邏輯區塊位址
1040‧‧‧視窗大小
1105‧‧‧新近度權重
1110‧‧‧衰減週期
1205‧‧‧經調整存取計數
1405-1、1405-2、1405-3‧‧‧節點
1410‧‧‧期滿時間
1505‧‧‧提昇邏輯
1510‧‧‧第二佇列器
1515‧‧‧儲存器
1520-1、1520-2、1520-3‧‧‧佇列
1525‧‧‧降級邏輯
1605‧‧‧提交佇列的頂部
1610、1615、1630‧‧‧虛線箭頭
1620‧‧‧佇列的輸入項
1625-1、1625-2、1625-3‧‧‧佇列的頂部
1705‧‧‧增量器
1710‧‧‧串流ID調整器
1715‧‧‧區塊期滿邏輯
1720‧‧‧最熱區塊邏輯
1905‧‧‧裝置壽命
2005‧‧‧比較器
2010‧‧‧減量器
2105、2110、2115、2120、2125、2130、2135、2140、2145、2205、2210、2305、2310、2315、2320、2325、2330、2335、2405、2410、2415、2420、2505、2510、2515、2520、2525、2530、2535、2540、2545、2550、2555、2560、2565‧‧‧區塊
圖1根據本發明概念的實施例繪示具有固態硬碟(SSD)的機器。 圖2繪示圖1的機器的額外細節。 圖3繪示圖1的SSD的細節。 圖4繪示圖3的快閃轉譯層的細節。 圖5繪示各種命令的邏輯區塊位址(LBA)經映射至區塊識別符(ID)、接著映射至串流ID以供圖1的SSD使用。 圖6繪示圖5的各種命令經修改以包含圖5的串流ID且經傳輸至圖1的SSD。 圖7繪示算術邏輯單元(ALU)將圖5的LBA映射至圖5的區塊ID。 圖8根據本發明概念的第一實施例繪示可用以將區塊ID映射至串流ID的順序、頻率、新近度(Sequential,Frequency,Recency;SFR)表。 圖9根據本發明概念的第一實施例繪示圖3的快閃轉譯層及圖4的背景邏輯的額外細節。 圖10繪示圖9的順序性邏輯的細節。 圖11繪示使用圖9的新近度邏輯來計算新近度權重。 圖12繪示在圖9的存取計數調整器中使用圖11的新近度權重來調整存取計數。 圖13繪示使用圖9的串流ID調整器根據圖12的經調整存取計數來計算串流ID。 圖14根據本發明概念的第二實施例繪示可用以將區塊ID映射至串流ID的節點。 圖15根據本發明概念的第二實施例繪示圖4的背景邏輯的細節。 圖16繪示圖15的佇列中的區塊ID的提昇及降級。 圖17繪示圖15的提昇邏輯的細節。 圖18根據本發明概念的第二實施例繪示根據經調整存取計數來計算串流ID。 圖19繪示圖17的區塊期滿邏輯的細節。 圖20繪示圖15的降級邏輯的細節。 圖21A至圖21B根據本發明概念的實施例繪示圖5的用於判定用於寫入命令的串流ID的實例程序的流程圖。 圖22根據本發明概念的實施例繪示圖4的LBA映射器用於將圖5的LBA映射至圖5的區塊ID的實例程序的流程圖。 圖23A至圖23B根據本發明概念的第一實施例繪示用於使用順序性邏輯更新針對區塊的串流ID的實例程序的流程圖。 圖24根據本發明概念的第一實施例繪示用於執行圖8的SFR表的背景更新的實例程序的流程圖。 圖25A至圖25C根據本發明概念的第二實施例繪示用於執行圖14的節點的背景更新的實例程序的流程圖。
Claims (20)
- 一種固態硬碟(SSD),包括: 用以儲存資料的快閃記憶體; 所述固態硬碟中對多個裝置串流的支援; 固態硬碟控制器,用以管理回應於多個寫入命令將資料寫入至所述快閃記憶體,所述固態硬碟控制器包含用於提交佇列及區塊至串流映射器的儲存器;以及 快閃轉譯層,包含: 接收器,用以接收包含邏輯區塊位址(LBA)的寫入命令; LBA映射器,用以將所述LBA映射至區塊識別符(ID); 串流選擇邏輯,用以使用所述區塊至串流映射器基於所述區塊ID來選擇串流ID; 串流ID新增器,用以將所述串流ID添加至所述寫入命令; 佇列器,用以將所述區塊ID置放於所述提交佇列中;以及 背景邏輯,用以自所述提交佇列移除所述區塊ID及更新所述區塊至串流映射器。
- 如申請專利範圍第1項所述的固態硬碟,其中所述區塊至串流映射器包含順序、頻率、新近度(SFR)表,所述SFR表包含所述區塊ID及針對所述區塊ID的所述串流ID。
- 如申請專利範圍第2項所述的固態硬碟,其中所述背景邏輯包含用以在所述LBA接續先前寫入命令的第二LBA的情況下選擇先前串流的順序性邏輯。
- 如申請專利範圍第2項所述的固態硬碟,其中所述背景邏輯包含: 新近度邏輯,用以基於針對所述區塊ID的當前存取時間、針對所述區塊ID的先前存取時間以及衰減週期來計算新近度權重; 存取計數調整器,用以基於所述新近度權重來調整所述區塊ID的存取計數,從而產生經調整存取計數;以及 串流ID調整器,用以基於針對所述區塊ID的所述經調整存取計數來調整所述串流ID。
- 如申請專利範圍第1項所述的固態硬碟,其中所述區塊至串流映射器包含節點輸入項,所述節點輸入項包含所述區塊ID及針對所述區塊ID的所述串流ID。
- 如申請專利範圍第5項所述的固態硬碟,其中所述背景邏輯包含: 提昇邏輯,用以基於所述區塊ID來判定何時提昇所述串流ID; 第二佇列器,用以回應於針對所述區塊ID的所述串流ID,將所述區塊ID置放於對應於多個串流ID的多個佇列中的第一佇列中;以及 降級邏輯,用以基於所述區塊ID來判定何時將所述串流ID降級。
- 如申請專利範圍第6項所述的固態硬碟,其中: 所述降級邏輯包含: 比較器,用以判定所述區塊ID的期滿時間是否已過去;以及 在所述區塊ID的所述期滿時間已過去的情況下,用以使所述串流ID遞減的減量器;且 所述第二佇列器是操作性的以回應於所述區塊ID的所述已遞減串流ID,將所述區塊ID置放於對應於所述多個串流ID的所述多個佇列中的第二佇列中。
- 一種供在電腦系統中使用的驅動器,其包括: 接收器,用以接收針對固態硬碟(SSD)的寫入命令,所述寫入命令包含邏輯區塊位址(LBA); LBA映射器,用以將所述LBA映射至區塊識別符(ID); 串流選擇邏輯,用以使用儲存於主機電腦系統中的記憶體中的區塊至串流映射器,基於所述區塊ID來選擇串流ID; 串流ID新增器,用以將所述串流ID添加至所述寫入命令; 佇列器,用以將所述區塊ID置放於儲存於所述記憶體中的提交佇列中;以及 背景邏輯,用以自所述提交佇列移除所述區塊ID及更新所述區塊至串流映射器。
- 如申請專利範圍第8項所述的驅動器,其中所述區塊至串流映射器包含順序、頻率、新近度(SFR)表,所述SFR表包含所述區塊ID及針對所述區塊ID的所述串流ID。
- 如申請專利範圍第9項所述的驅動器,其中所述背景邏輯包含用以在所述LBA接續先前寫入命令的第二LBA的情況下選擇先前串流的順序性邏輯。
- 如申請專利範圍第9項所述的驅動器,其中所述背景邏輯包含: 新近度邏輯,用以基於針對所述區塊ID的當前存取時間、針對所述區塊ID的先前存取時間以及衰減週期來計算新近度權重; 存取計數調整器,用以基於所述新近度權重來調整所述區塊ID的存取計數,從而產生經調整存取計數;以及 串流ID調整器,用以基於針對所述區塊ID的所述經調整存取計數來調整所述串流ID。
- 如申請專利範圍第8項所述的驅動器,其中所述區塊至串流映射器包含節點輸入項,所述節點輸入項包含所述區塊ID及針對所述區塊ID的所述串流ID。
- 如申請專利範圍第12項所述的驅動器,其中所述背景邏輯包含: 提昇邏輯,用以基於所述區塊ID來判定何時提昇所述串流ID; 第二佇列器,用以回應於針對所述區塊ID的所述串流ID,將所述區塊ID置放於對應於多個串流ID的多個佇列中的第一佇列中;以及 降級邏輯,用以基於所述區塊ID來判定何時將所述串流ID降級。
- 如申請專利範圍第13項所述的驅動器,其中: 所述降級邏輯包含: 比較器,用以判定所述區塊ID的期滿時間是否已過去;以及 在所述區塊ID的所述期滿時間已過去的情況下,用以使所述串流ID遞減的減量器;且 所述第二佇列器是操作性的以回應於所述區塊ID的所述已遞減串流ID,將所述區塊ID置放於對應於所述多個串流ID的所述多個佇列中的第二佇列中。
- 一種方法,其包括: 自軟體源接收寫入命令; 判定所述寫入命令中的邏輯區塊位址(LBA); 識別固態硬碟(SSD)上包含所述LBA的區塊的區塊識別符(ID); 存取與所述區塊ID相關聯的串流ID; 將所述串流ID指定至所述寫入命令; 在所述固態硬碟上處理使用所述指定串流ID的所述寫入命令;以及 執行與所述區塊ID相關聯的所述串流ID的背景更新。
- 如申請專利範圍第15項所述的方法,更包括: 判定所述邏輯區塊位址是否接續第二寫入命令中的第二LBA;以及 在所述邏輯區塊位址接續所述第二寫入命令中的所述第二LBA的情況下: 判定指定至所述第二寫入命令的第二串流ID;以及 將所述第二串流ID指定至所述寫入命令。
- 如申請專利範圍第15項所述的方法,其中執行與所述區塊ID相關聯的所述串流ID的背景更新包含: 將所述區塊ID添加至提交佇列;以及 在所述區塊ID處於所述提交佇列的頂部時,自所述提交佇列移除所述區塊ID。
- 如申請專利範圍第15項所述的方法,其中執行與所述區塊ID相關聯的所述串流ID的背景更新包含: 增大所述區塊ID的存取計數; 回應於所述區塊ID的當前存取時間及先前存取時間來計算所述區塊ID的新近度權重; 回應於所述新近度權重來更新所述區塊ID的所述存取計數;以及 回應於所述經更新的存取計數來判定針對所述區塊ID的所述串流ID。
- 如申請專利範圍第15項所述的方法,其中執行與所述區塊ID相關聯的所述串流ID的背景更新包含: 將所述區塊ID置放於對應於所述串流ID的佇列中,其中對應於所述串流ID的所述佇列是多個佇列中的其中之一;以及 在所述區塊ID到達所述佇列的頂部時判定是否將所述區塊ID降級。
- 如申請專利範圍第19項所述的方法,其中: 執行與所述區塊ID相關聯的所述串流ID的背景更新更包含回應於存取計數及裝置壽命來判定所述區塊ID的期滿時間;且 在所述區塊ID到達所述佇列的頂部時判定是否將所述區塊ID降級包含,在所述區塊ID的所述期滿時間已過去的情況下: 自對應於所述串流ID的所述佇列移除所述區塊ID; 使所述串流ID遞減;以及 將所述區塊ID置放於對應於所述遞減的串流ID的第二佇列中。
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662383302P | 2016-09-02 | 2016-09-02 | |
US62/383,302 | 2016-09-02 | ||
US15/344,422 | 2016-11-04 | ||
US15/344,422 US10282324B2 (en) | 2015-07-13 | 2016-11-04 | Smart I/O stream detection based on multiple attributes |
US201762458566P | 2017-02-13 | 2017-02-13 | |
US62/458,566 | 2017-02-13 | ||
US201762471350P | 2017-03-14 | 2017-03-14 | |
US62/471,350 | 2017-03-14 | ||
US15/499,877 | 2017-04-27 | ||
US15/499,877 US10656838B2 (en) | 2015-07-13 | 2017-04-27 | Automatic stream detection and assignment algorithm |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201812591A true TW201812591A (zh) | 2018-04-01 |
TWI714800B TWI714800B (zh) | 2021-01-01 |
Family
ID=61531626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106125834A TWI714800B (zh) | 2016-09-02 | 2017-08-01 | 固態硬碟、非暫時性儲存媒體以及操作固態硬碟的方法 |
Country Status (4)
Country | Link |
---|---|
JP (1) | JP6775475B2 (zh) |
KR (1) | KR102229013B1 (zh) |
CN (1) | CN107797763B (zh) |
TW (1) | TWI714800B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10623329B2 (en) | 2018-06-27 | 2020-04-14 | Juniper Networks, Inc. | Queuing system to predict packet lifetime in a computing device |
US10936513B2 (en) | 2019-07-10 | 2021-03-02 | Silicon Motion, Inc. | Apparatus and method for executing from a host side through a frontend interface input-output commands using a slot bit table |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10761775B2 (en) * | 2018-02-09 | 2020-09-01 | Samsung Electronics Co., Ltd. | System and method for NVMe inter command association in SSD storage using a bridge device |
CN108563585A (zh) * | 2018-03-27 | 2018-09-21 | 深圳忆联信息系统有限公司 | 一种降低ssd写放大的方法 |
KR102656172B1 (ko) | 2018-03-28 | 2024-04-12 | 삼성전자주식회사 | 가상 스트림들과 물리 스트림들을 맵핑하기 위한 스토리지 장치 및 그것의 동작 방법 |
US10963394B2 (en) * | 2018-04-16 | 2021-03-30 | Samsung Electronics Co., Ltd. | System and method for optimizing performance of a solid-state drive using a deep neural network |
CN109032505A (zh) * | 2018-06-26 | 2018-12-18 | 深圳忆联信息系统有限公司 | 带时效的数据读写方法、装置、计算机设备及存储介质 |
KR20220049329A (ko) | 2020-10-14 | 2022-04-21 | 삼성전자주식회사 | 스토리지 컨트롤러, 스토리지 장치, 및 스토리지 장치의 동작 방법 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006235960A (ja) * | 2005-02-24 | 2006-09-07 | Fujitsu Ltd | ガーベッジコレクション高速化方法 |
JP2011175615A (ja) * | 2010-01-27 | 2011-09-08 | Toshiba Corp | ホスト装置およびメモリデバイス |
US8341350B2 (en) * | 2010-09-21 | 2012-12-25 | Lsi Corporation | Analyzing sub-LUN granularity for dynamic storage tiering |
WO2012039216A1 (ja) * | 2010-09-24 | 2012-03-29 | 日本電気株式会社 | 情報処理装置、その方法及びそのプログラム |
US8615638B2 (en) * | 2010-10-08 | 2013-12-24 | Qualcomm Incorporated | Memory controllers, systems and methods for applying page management policies based on stream transaction information |
US8966201B2 (en) * | 2010-12-10 | 2015-02-24 | Sandisk Technologies Inc. | Method and system for hijacking writes to a non-volatile memory |
US9176864B2 (en) * | 2011-05-17 | 2015-11-03 | SanDisk Technologies, Inc. | Non-volatile memory and method having block management with hot/cold data sorting |
EP2764516A4 (en) * | 2011-10-05 | 2015-07-08 | Lsi Corp | SELF-HISTORIZATION AND HIERARCHICAL CONSISTENCY FOR NON-VOLATILE STORES |
JP5723812B2 (ja) * | 2012-03-16 | 2015-05-27 | 株式会社 日立産業制御ソリューションズ | ファイルサーバ、データ入出力方法、i/oフックモジュールプログラム及びi/o代行デーモンプログラム |
JP5586718B2 (ja) * | 2012-06-19 | 2014-09-10 | 株式会社東芝 | 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置 |
US9158687B2 (en) * | 2013-03-04 | 2015-10-13 | Dot Hill Systems Corporation | Method and apparatus for processing fast asynchronous streams |
US9335950B2 (en) * | 2013-03-15 | 2016-05-10 | Western Digital Technologies, Inc. | Multiple stream compression and formatting of data for data storage systems |
US9851909B2 (en) * | 2014-09-18 | 2017-12-26 | Samsung Electronics Co., Ltd. | Intelligent data placement |
KR102214028B1 (ko) * | 2014-09-22 | 2021-02-09 | 삼성전자주식회사 | 가변구조형 스케일러를 포함하는 애플리케이션 프로세서와 이를 포함하는 장치들 |
CN104461393B (zh) * | 2014-12-09 | 2017-05-17 | 华中科技大学 | 一种闪存存储器的混合映射方法 |
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 |
JP2016170583A (ja) * | 2015-03-12 | 2016-09-23 | 株式会社東芝 | メモリシステムおよび情報処理システム |
CN104809075B (zh) * | 2015-04-20 | 2017-09-12 | 电子科技大学 | 一种存取实时并行处理的固态记录装置及方法 |
US10324832B2 (en) * | 2016-05-25 | 2019-06-18 | Samsung Electronics Co., Ltd. | Address based multi-stream storage device access |
US10289309B2 (en) * | 2016-09-12 | 2019-05-14 | Toshiba Memory Corporation | Automatic detection of multiple streams |
-
2017
- 2017-07-19 KR KR1020170091654A patent/KR102229013B1/ko active IP Right Grant
- 2017-08-01 TW TW106125834A patent/TWI714800B/zh active
- 2017-08-28 CN CN201710749551.1A patent/CN107797763B/zh active Active
- 2017-09-01 JP JP2017168704A patent/JP6775475B2/ja active Active
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10623329B2 (en) | 2018-06-27 | 2020-04-14 | Juniper Networks, Inc. | Queuing system to predict packet lifetime in a computing device |
TWI700912B (zh) * | 2018-06-27 | 2020-08-01 | 美商瞻博網路公司 | 運算裝置中預測封包壽命之佇列系統 |
US10936513B2 (en) | 2019-07-10 | 2021-03-02 | Silicon Motion, Inc. | Apparatus and method for executing from a host side through a frontend interface input-output commands using a slot bit table |
TWI734220B (zh) * | 2019-07-10 | 2021-07-21 | 慧榮科技股份有限公司 | 主機輸出入命令的執行裝置及方法及電腦程式產品 |
US11086805B2 (en) | 2019-07-10 | 2021-08-10 | Silicon Motion, Inc. | Apparatus and method and computer program product for executing host input-output commands |
US11308007B2 (en) | 2019-07-10 | 2022-04-19 | Silicon Motion, Inc. | Apparatus and method and computer program product for executing host input-output commands |
US11977500B2 (en) | 2019-07-10 | 2024-05-07 | Silicon Motion, Inc. | Apparatus and method and computer program product for executing host input-output commands |
Also Published As
Publication number | Publication date |
---|---|
JP6775475B2 (ja) | 2020-10-28 |
CN107797763B (zh) | 2022-05-10 |
JP2018037088A (ja) | 2018-03-08 |
KR20180026327A (ko) | 2018-03-12 |
KR102229013B1 (ko) | 2021-03-17 |
CN107797763A (zh) | 2018-03-13 |
TWI714800B (zh) | 2021-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11392297B2 (en) | Automatic stream detection and assignment algorithm | |
TWI714800B (zh) | 固態硬碟、非暫時性儲存媒體以及操作固態硬碟的方法 | |
US9819603B2 (en) | Adaptive bandwidth throttling | |
US10380035B2 (en) | Using an access increment number to control a duration during which tracks remain in cache | |
JP5305621B2 (ja) | 複数のデータ構造を用いてキャッシュ内のデータを管理するシステム | |
WO2021008311A1 (zh) | 访问电子设备中的混合缓存的方法及装置 | |
US10430347B2 (en) | Power savings via dynamic page type selection | |
US9817765B2 (en) | Dynamic hierarchical memory cache awareness within a storage system | |
US11263149B2 (en) | Cache management of logical-physical translation metadata | |
US11354230B2 (en) | Allocation of distributed data structures | |
US9658957B2 (en) | Systems and methods for managing data input/output operations | |
JP6106028B2 (ja) | サーバ及びキャッシュ制御方法 | |
WO2014094419A1 (zh) | 数据缓存处理方法、装置以及系统 | |
KR20150081424A (ko) | 순응적 존속을 위한 시스템, 방법 및 인터페이스 | |
WO2015039352A1 (zh) | 缓存数据的方法和存储系统 | |
WO2019127487A1 (zh) | 一种数据预取方法、装置和存储设备 | |
GB2493243A (en) | Determining hot data in a storage system using counting bloom filters | |
WO2021008301A1 (zh) | 访问电子设备中的混合缓存的方法及装置 | |
US10599340B1 (en) | Policy driven IO scheduler to improve read IO performance in hybrid storage systems | |
KR101523469B1 (ko) | 식별 번호를 기록하여 블록 간의 시간적 선후 관계를 추출하는 캐시 방법 및 시스템 |