固態驅動器(SSD)是使用集成電路組件作為存儲器來持久地存儲數據的數據存儲設備。許多類型的SSD使用基于NAND或基于NOR的閃存,其在沒有電力的情況下保持數據并且是一種非易失性存儲技術。
可以將通信接口用來將SSD耦合到包括處理器的主機系統。這樣的通信接口可以包括外圍部件互連高速(PCIe)總線。PCIe的進一步細節可以在PCI-SIG在2010年11月10日出版的題為“PCI Express Base Specification Revision 3.0”的出版物中找到。經由PCI總線進行通信的SSD的最重要的益處是增加的性能,并且這樣的SSD被稱為PCIe SSD。
附圖說明
現在參考附圖,其中遍及以下附圖相同的參考標號表示相對應的部分:
圖1示出了其中固態盤通過PCIe總線耦合到主機的計算環境的框圖;
圖2示出了圖示根據某些實施例的仲裁器如何將傳入隊列中的讀取請求分配給固態驅動器的通道的另一框圖;
圖3示出了圖示根據某些實施例的在開始最輕填充的通道的優先化和主機命令的重新排序(reorder)之前在固態驅動器中的讀取請求的分配的框圖;
圖4示出了圖示根據某些實施例的在最輕填充的通道的優先化和主機命令的重新排序之后在固態驅動器中的讀取請求的分配的框圖;
圖5示出了根據某些實施例的用于防止固態驅動器中的不均勻通道加載的第一流程圖;
圖6示出了根據某些實施例的用于防止固態驅動器中的不均勻通道加載的第二流程圖;以及
圖7示出了根據某些實施例的計算設備的框圖。
具體實施方式
在下面的描述中,對形成其一部分并且示出了若干實施例的附圖進行參考。應當理解:可以利用其他實施例并且可以進行結構和操作改變。
PCIe SSD的增加的性能可能主要是由于PCIe SSD中實現的通道數量。例如,在某些實施例中,某些PCIe SSD可以通過擴展的18通道設計來提供改善的內部帶寬。
在基于PCIe的固態驅動器中,從主機到固態驅動器的PCIe總線可以具有高帶寬(例如,40吉字節/秒)。基于PCIe的固態驅動器可以具有多個通道,其中與PCIe總線的帶寬相比,每個通道具有相對較低的帶寬。例如,在具有18個通道的固態驅動器中,每個通道可以具有大約200兆字節/秒的帶寬。
在某些情況下,耦合到每個通道的NAND芯片的數量在數量上是相等的,并且在這種情況下,在來自主機的隨機但均一(uniform)的讀取請求的情形下,可以大致相等地對通道加載,即針對處理讀取請求大致相同量地在持續時間上利用每個通道。可以注意到,在許多情況下,從主機到固態驅動器的超過95%的請求可能是讀取請求,而從主機到固態驅動器的不到5%的請求可能是寫入請求,并且讀取請求到通道的適當分配可能在固態驅動器中是重要的。
然而,在某些情況下,與其他通道相比,通道中的至少一個可以具有耦合到通道的不同數量的NAND芯片。當NAND芯片的數量不是通道數量的倍數時,可能發生這種情況。例如,如果存在18個通道并且NAND芯片的數量不是18的倍數,那么與其他通道相比,通道中的至少一個必須具有耦合到通道的不同數量的NAND芯片。在這種情況下,耦合到較大數量的NAND芯片的通道可以比耦合到較少數量的NAND芯片的通道負載更重。假設固態驅動器中的每個NAND芯片是相同的結構并且具有相同的存儲容量。
在通道的不均勻加載的情況下,一些通道可能比其他通道積壓(backlog)得更多,并且在完成對主機的響應之前PCIe總線可能必須等待積壓清除。
某些實施例提供了即使當與其他通道相比通道中的至少一個具有耦合到通道的不同數量的NAND芯片時也防止通道的不均勻加載的機制。這通過用意圖用于最輕加載通道的讀取請求優先加載最輕加載通道并且通過對在固態驅動器中的隊列中等待執行的未決讀取請求的處理重新排序來實現。由于在將讀取請求加載到通道中時對資源進行分配,所以通過用讀取請求加載最輕加載的通道,僅在需要時才使用資源并且資源被有效地使用。因此,某些實施例改善了SSD的性能。
圖1示出了根據某些實施例的計算環境100的框圖,其中固態驅動器102通過PCIe總線106耦合到主機104。主機104可以至少包括處理器。
在某些實施例中,仲裁器108在固態驅動器102中以固件來實現。在其他實施例中,仲裁器108可以以硬件或軟件、以硬件、固件或軟件的任何組合來實現。仲裁器108將通過PCIe總線106從主機104接收的讀取請求分配給固態驅動器102的多個通道110a、110b、...、110n中的一個或多個通道。
在某些實施例中,將通道110a ... 110n耦合到多個非易失性存儲器芯片,諸如NAND芯片、NOR芯片或其他合適的非易失性存儲器芯片。在替代實施例中,也可以使用其他類型的存儲器芯片,諸如基于相變存儲器(PCM)、三維交叉點存儲器、電阻存儲器、納米線存儲器、鐵電晶體管隨機存取存儲器(FeTRAM)、并入憶阻器技術的磁阻隨機存取存儲器(MRAM)存儲器、自旋轉移力矩(STT)-MRAM或其他合適的存儲器的芯片。
例如,在某些實施例中,通道110a耦合到NAND芯片112a ... 112p,通道110b耦合到NAND芯片114a ...114q,以及通道110n耦合到NAND芯片114a ...114r。 NAND芯片112a ...112p、114a ...114q、114a ...114r中的每一個在構造上相同。與其他通道相比,多個通道110a ...110n中的通道中的至少一個具有耦合到通道的不同數量的NAND芯片,因此如果來自主機104的讀取請求是隨機和均一的,則存在多個通道110a...110n的不均勻加載的可能性。
在某些實施例中,固態驅動器102可能能夠存儲若干太字節(terabyte)的數據或更多,并且在固態驅動器102中可以找到多個NAND芯片112a ...112p、114a ...114q、116a ... 116r,其每一個存儲若干吉字節的數據或更多。PCIe總線106可以具有每秒4吉字節的最大帶寬(即,數據承載能力)。在某些實施例中,多個通道110a ...110n的數量可以是十八,并且每個通道可以具有每秒200兆字節的最大帶寬。
在某些實施例中,仲裁器108以序列逐個地檢驗多個通道110a ... 110n,并且在檢驗所有多個通道110a ...110n之后,在嘗試執行多個通道的均一加載中用意圖用于該通道的讀取請求加載最小加載通道以增加最小加載通道上的負載。
圖2示出了根據某些實施例的固態驅動器102的另一框圖200,其示出了仲裁器108如何將傳入隊列202中的讀取請求分配給固態驅動器102的通道110a ...110n。
仲裁器108保持傳入隊列202,其中傳入隊列202存儲通過PCIe總線106從主機104接收的讀取請求。讀取請求以傳入隊列202中的順序到達并且最初以與讀取請求到達傳入隊列202中的順序相同的順序保持。例如,首先到達的請求可以是針對存儲在耦合到通道110b的NAND芯片中的數據的,并且下一個到達的第二請求可以是針對存儲在耦合到通道110a的NAND芯片中的數據的。在這種情況下,首先到達的請求在傳入隊列202的頭部,并且下一個到達的請求是傳入隊列202中的下一個元素。
仲裁器108還為每個通道110a ...110b保持數據結構,在該數據結構中保持由通道正在處理的未完成的(outstanding)讀取請求的標識。例如,數據結構204a、204b、... 204n存儲由多個通道110a、110b、...110n正在處理的未完成的讀取的標識。針對通道的未完成的讀取請求是已經被加載到通道并且由通道正在處理的讀取請求,即,耦合到通道的NAND芯片正在用來檢索對應于已經加載到通道的讀取請求的數據。
固態驅動器102還保持在將讀取請求加載到通道時使用的多個硬件、固件或軟件資源,諸如緩沖器、鎖存器、存儲器、各種數據結構等(如通過參考標號206所示)。在某些實施例中,通過在最小加載通道上加載讀取請求時保留資源,仲裁器108防止不必要的資源鎖定。
因此,圖2示出了某些實施例,其中仲裁器108保持讀取請求的傳入隊列202,并且還保持與由固態驅動器102的每個通道110a ..110n正在處理的未完成的讀取對應的數據結構204a ... 204n。
圖3示出了圖示根據某些實施例的在開始最輕填充的通道的優先化和主機命令的重新排序之前在示例性固態驅動器300中的讀取請求的分配的框圖。與其他通道相比,最輕填充的通道具有經歷通道的處理的最少數量的讀取請求。
示例性固態驅動器300具有三個通道:通道A 302、通道B 304和通道C 306。通道A 302具有經由參考標號310、312、314指示的未完成讀取308,即,對于存儲在耦合到通道A 302的NAND芯片中的數據,存在三個讀取請求(稱為“讀取A”310、312、314)。通道B 304具有經由參考標號318指示的未完成讀取316,并且通道C 306具有由參考標號322、324指代的未完成讀取320。
讀取請求326的傳入隊列具有十個讀取命令328、330、332、334、336、338、340、342、344、346,其中在傳入隊列326的頭部的命令是“讀取A”命令328,并且在傳入隊列326的尾部的命令是 “讀取B”命令346。
圖4示出了圖示根據某些實施例的在最輕填充的通道的優先化和主機命令的重新排序之后在固態驅動器300中的讀取請求的分配的框圖。
在某些實施例中,仲裁器108檢驗讀取請求326的傳入隊列(如圖3所示)以及如數據結構308、316、318中所示的通道正在處理的未完成讀取。仲裁器108然后用從讀取請求326的傳入隊列中無序地(out of order)選擇的命令340、344(其是“讀取B”命令)加載最輕加載的通道B 304(其在圖3中只具有未完成的一個讀取請求318)(如圖3中所示)。
圖4示出了在最輕加載的通道B 304已經加載有命令340、344之后的情況。在圖4中,針對通道B 304正在處理的未完成讀取316中的參考標號402和404示出了圖3的現在已經被加載到通道B 304中用于處理的命令340、344。
因此,通過利用從讀取請求326的傳入隊列中無序地選擇的適當的讀取請求加載三個通道302、304、306中最輕加載的,可以更均勻地對通道302、304和306進行加載。應當注意:在傳入隊列326中的命令340之前的命令328、330、332、334、336、338中沒有一個可以被加載到通道B 304,因為命令328、330、332、334、336、338是針對經由通道A 302或通道C 306訪問的數據的讀取請求。還應注意:僅存在一個仲裁器108和多個通道,因此仲裁器108逐個地檢驗通道302、304、306上的未完成讀取308、316、320。通道302、304、306當然可以通知仲裁器108通道302、304、306何時完成某些讀取請求的處理,并且仲裁器108可以根據由通道302、304、306提供的信息來跟蹤通道302、304、306上的未完成讀取請求。
另外,當通過使用微控制器實現時,仲裁器108是串行化處理器。 NAND芯片(例如NAND芯片112a)具有對其僅允許一個讀取請求的固有性質。用于NAND芯片的通道(例如,通道110a)具有“忙”狀態,直到對NAND芯片的讀取請求完成。仲裁器108的責任是在通道忙時不調度新的讀取。一旦通道不忙,仲裁器108就需要向NAND芯片分派下一個命令。為了改善通道加載,在某些實施例中,相比于“重加載”通道(即,正在用于處理相對較少讀取請求的通道),仲裁器108更經常地輪詢“輕加載”通道(即,正在用于處理相對較少讀取請求的通道),使得重新排序的讀取命令被盡快分派給輕加載通道。這是重要的,因為完成新的讀取命令的時間大約是100微秒,而仲裁器108掃描所有18個通道并重新排序讀取命令大約花費相同量的時間。
圖5示出了根據某些實施例的用于防止固態驅動器中的不均勻通道加載的第一流程圖500。圖5中所示的操作可以由執行固態驅動器102內的操作的仲裁器108執行。
控制開始于框502,其中仲裁器108確定多個通道110a、110b、... 110n中的第一通道110a上的讀取處理負載(即,正在使用的帶寬)。控制進行到框504,其中仲裁器108確定是否已確定最后通道110n上的讀取處理負載。如果不是(“否”分支505),則仲裁器108確定下一個通道上的讀取處理負載,并且控制返回到框504。可以通過檢驗用于未完成讀取204a ... 204n的數據結構中的未決讀取請求的數量或者經由其他機制來確定讀取處理負載。
如果在框504處確定最后通道110n上的讀取處理負載已被確定(“是”分支507),則控制進行到框508,其中確定多個通道中的哪個具有最小處理負載,并且將具有最小處理負載的通道稱為通道X。
從框508,控制進行到框509,其中確定通道X是忙還是不忙,其中忙的通道不能處理附加的讀取請求,并且不忙的通道能夠處理附加的讀取請求。因為耦合到通道X的NAND芯片具有對其僅允許一個讀取請求的固有性質,所以需要確定通道X是忙還是不忙。用于NAND芯片的通道X具有“忙”狀態,直到對NAND芯片的讀取請求完成。
如果在框509處確定通道X不忙(參考標號509a),那么控制進行到框510,其中仲裁器108選擇在“讀取請求的傳入隊列”202中已經累積的意圖用于通道X的一個或多個讀取請求,使得通道X的可用帶寬盡可能接近被完全利用,其中選擇可導致“讀取請求的傳入隊列”202中的未決請求的重新排序。仲裁器108分配用于所選擇的一個或多個讀取請求的資源,并將一個或多個讀取請求發送(在框512處)到通道X以用于處理。
如果在框509處確定通道X忙(參考標號509b),那么過程進行等待,直到通道X不忙。
在替代實施例中,代替確定具有最小處理負載的通道,可以確定相對輕加載的通道(即,在多個通道中具有相對低處理負載的通道)。在某些實施例中,可以將讀取請求優先地發送到相對輕加載的通道。應當注意,仲裁器108不調度用于輕加載通道的另一個讀取請求,直到輕加載通道被確認為“不忙”。
可以注意到,當正在執行操作502、504、505、506、507、508、510、512時,主機讀取請求在“讀取請求的傳入隊列”數據結構202中保持累積(在框514處) 。
因此,圖5示出了用于選擇最輕加載的通道并且重新排序讀取請求的傳入隊列中的隊列項目以選擇適當的讀取請求來加載在最輕加載的通道中的某些實施例。
圖6示出了根據某些實施例的用于防止固態驅動器中的不均勻通道加載的第二流程圖600。圖6中所示的操作可以由執行固態驅動器102內的操作的仲裁器108執行。
控制開始于框602,其中固態驅動器102經由PCIe總線106從主機104接收多個讀取請求,其中固態驅動器中的多個通道110a ... 110n中的每一個具有相同的帶寬。雖然通道110a ... 110n可具有相同的帶寬,但是在實際狀況中,通道110a ... 110n中的一個或多個可能沒有完全利用帶寬。
固態驅動器102中的仲裁器108確定(在框604處)固態驅動器102中的多個通道110a ... 110n中的哪一個是輕加載通道(在某些實施例中,輕加載通道是最輕加載通道)。分配用于處理意圖用于所確定的輕加載通道的一個或多個讀取請求的資源(在框608處),其中已經從主機104接收到一個或多個讀取請求。
控制進行到框608,其中將一個或多個讀取請求放置在所確定的輕加載通道中以用于處理。在將一個或多個讀取請求放置在所確定的輕加載通道中以用于處理之后,所確定的輕通道在處理期間盡可能接近被完全利用。
因此,圖1-圖6示出了用于通過對來自傳入隊列的讀取請求的無序選擇來防止固態驅動器中的通道的不均勻加載,以及將讀取請求的無序選擇加載到相對輕加載或者最小加載的通道中的某些實施例。
所描述的操作可以被實現為使用標準編程和/或工程技術來產生軟件、固件、硬件或其任何組合的方法、裝置或計算機程序產品。所描述的操作可以被實現為保持在“計算機可讀存儲介質”中的代碼,其中處理器可以從計算機存儲可讀介質讀取和執行代碼。計算機可讀存儲介質包括電子電路、存儲材料、無機材料、有機材料、生物材料、殼體、外殼、涂層和硬件中的至少一個。計算機可讀存儲介質可以包括但不限于磁存儲介質(例如,硬盤驅動驅動器、軟盤、帶等)、光學記憶裝置(CD-ROM、DVD、光盤等)、易失性和非易失性存儲器設備(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、閃存、固件、可編程邏輯等)、固態設備(SSD)等。實現所描述的操作的代碼還可以在硬件設備(例如,集成電路芯片、可編程門陣列(PGA)、專用集成電路(ASIC)等)中實現的硬件邏輯中實現。此外,實現所描述的操作的代碼可以在“傳輸信號”中實現,其中傳輸信號可以通過空間或通過諸如光纖、銅線等的傳輸介質傳播。代碼或邏輯被編碼在其中的傳輸信號還可以包括無線信號、衛星傳輸、無線電波、紅外信號、藍牙等。嵌入在計算機可讀存儲介質上的程序代碼可以作為傳輸信號從傳輸站或計算機傳輸到接收站或計算機。計算機可讀存儲介質不僅包括傳輸信號。本領域技術人員將認識到,可以對該配置進行許多修改,并且制品可以包括本領域已知的合適的信息承載介質。
可以以一種或多種編程語言的任何組合來編寫用于執行某些實施例的方面的操作的計算機程序代碼。流程圖和框圖的框可以由計算機程序指令來實現。
圖7示出了根據某些實施例的包括主機104(主機104至少包括處理器)和固態驅動器102兩者的系統700的框圖。例如,在某些實施例中,系統700可以是具有包括在系統700中的主機104和固態驅動器102的計算機(例如,膝上型計算機、臺式計算機、平板計算機、蜂窩電話或任何其他合適的計算設備)。例如,在某些實施例中,系統700可以是包括固態驅動器102的膝上型計算機。
系統700可以包括電路702,電路702在某些實施例中可以至少包括處理器704。系統700還可以包括存儲器706(例如,易失性存儲器設備)和記憶裝置708。記憶裝置708可以包括固態驅動器102或包括非易失性存儲器設備(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、閃存、固件、可編程邏輯等)的其他驅動器或設備。記憶裝置708還可以包括磁盤驅動器、光盤驅動器、帶驅動器等。記憶裝置708可以包括內部存儲設備、附著存儲設備和/或網絡可訪問存儲設備。系統700可以包括程序邏輯710,其包括可以加載到存儲器706中并由處理器704或電路702執行的代碼712。在某些實施例中,包括代碼712的程序邏輯710可以存儲在記憶裝置708中。在某些其他實施例中,程序邏輯710可以在電路702中實現。因此,雖然圖7與其他元件分離地示出了程序邏輯710,但是程序邏輯710可以在存儲器706和/或電路702中實現。系統700還可以包括顯示器714(例如,液晶顯示器(LCD)、發光二極管(LED)顯示器、陰極射線管(CRT)顯示器、觸摸屏顯示器或任何其他合適的顯示器)。系統700還可以包括一個或多個輸入設備716,諸如鍵盤、鼠標、操縱桿、軌跡板或任何其他合適的輸入設備)。除了圖7中所示的組件或設備之外的其他組件或設備也可以在系統700中找到。
某些實施例可以涉及一種用于由人部署計算指令或將計算機可讀代碼集成到計算系統中的自動處理的方法,其中使得與計算系統組合的代碼能夠執行所描述的實施例的操作。
除非另有明確規定,否則術語“一實施例”、“實施例”、“多個實施例”、“該實施例”、“該多個實施例”、“一個或多個實施例”、“一些實施例”以及“一個實施例”意指“一個或多個(但是不是所有)實施例”。
除非另有明確規定,否則術語“包括”、“包含”、“具有”及其變體意指“包括但不限于”。
除非另有明確規定,否則列舉的項目列表并不意味著任何或所有項目是相互排斥的。
除非另有明確規定,否則術語“一”、“一個”和“該”意指“一個或多個”。
除非另有明確規定,否則彼此通信的設備不需要彼此連續通信。另外,彼此通信的設備可以直接進行通信或者通過一個或多個中介間接地進行通信。
具有彼此通信的若干部件的實施例的描述不意味著需要所有這樣的部件。相反,描述了各種可選的部件以示出各種各樣的可能實施例。
此外,盡管可以以順序次序描述處理步驟、方法步驟、算法等,但是這樣的處理、方法和算法可以被配置為以替代的順序工作。換句話說,可以描述的步驟的任何序列或順序不一定指示以該順序執行步驟的要求。本文描述的處理的步驟可以以實際的任何順序執行。此外,可以同時執行一些步驟。
當在本文中描述單個設備或物品時,將容易清楚的是:多于一個設備/物品(無論??它們是否協作)可以用來代替單個設備/物品。類似地,在本文中描述多于一個設備或物品(無論它們是否合作)情況下,將容易清楚的是:單個設備/物品可以用來代替該多于一個設備或物品或不同數量的設備/物品可以用來代替所示數量的設備或程序。設備的功能和/或特征可以可替代地由未明確描述為具有這樣的功能/特征的一個或多個其他設備來體現。因此,其他實施例不需要包括設備本身。
在附圖中已經示出的至少某些操作示出了以特定順序發生的某些事件。在替代實施例中,某些操作可以以不同的順序執行、修改或移除。此外,可以向上述邏輯添加步驟,并且步驟仍然符合所描述的實施例。此外,本文描述的操作可以順序地發生,或者可以并行地處理某些操作。此外,操作可以由單個處理單元或由分布式處理單元執行。
出于說明和描述的目的,已經呈現了各種實施例的前述描述。其并不旨在窮舉或將其限于所公開的精確形式。鑒于上述教導,許多修改和變化是可能的。
示例
以下示例涉及另外的實施例。
示例1是一種方法,其中固態驅動器中的仲裁器確定固態驅動器中的多個通道中的哪個通道與其他通道相比是輕加載通道。將資源分配用于處理意圖用于所確定的輕加載通道的一個或多個讀取請求,其中已經從主機接收所述一個或多個讀取請求。將所述一個或多個讀取請求放置在所確定的輕加載通道中以用于處理。
在示例2中,權利要求1的主題可以包括:所確定的輕加載通道是多個通道中的最輕加載通道,其中在將所述一個或多個讀取請求放置在所確定的最輕加載通道中以用于處理之后,所確定的最輕加載通道在處理期間盡可能接近被完全利用。
在示例3中,權利要求1的主題可以包括:將所述一個或多個讀取請求包括在意圖用于所述多個通道的多個讀取請求中,其中通過將所述一個或多個讀取請求放置在所確定的輕加載通道中以用于處理來修改所述多個讀取請求的處理的順序。
在示例4中,權利要求3的主題可以包括:修改所述多個請求的處理的順序相對于其他請求優先地處理意圖用于所確定的輕加載通道的所述一個或多個讀取請求。
在示例5中,權利要求1的主題可以包括:所述固態驅動器經由外圍部件互連高速(PCIe)總線從主機接收一個或多個讀取請求,其中所述固態驅動器中的所述多個通道中的每一個具有相同的帶寬。
在示例6中,權利要求5的主題可以包括:所述多個通道的帶寬的和等于PCIe總線的帶寬。
在示例7中,權利要求1的主題可以包括:與所述多個通道中的其他通道相比,所述多個通道中的至少一個通道耦合到不同數量的NAND芯片。
在示例8中,權利要求1的主題可以包括:如果未將所述一個或多個讀取請求放置在所確定的輕加載通道中以用于處理,那么在所述固態驅動器上的讀取性能與其中所有通道耦合到相同數量的NAND芯片的另一固態驅動器相比降低超過10%。
在示例9中,權利要求1的主題可以包括:在由所述固態驅動器中的仲裁器確定所述固態驅動器中的所述多個通道中的哪個是所述輕加載通道之后,執行用于處理的所述資源的分配。
在示例10中,權利要求1的主題可以包括:相比于相對重加載的通道所述仲裁器更經常地輪詢相對輕加載的通道,以將重新排序的讀取請求優先地分派到所述相對輕加載的通道。
在示例11中,權利要求1的主題可以包括:將所述多個通道中的每一個通道與保持由所述通道正在處理的未完成讀取的數據結構相關聯;以及將已經從所述主機接收的所述一個或多個讀取請求保持在從所述主機接收的讀取請求的傳入隊列中。
示例12是一種裝置,包括多個非易失性存儲器芯片、耦合到所述多個非易失性存儲器芯片的多個通道以及用于控制所述多個通道的仲裁器,其中所述仲裁器可操作用于:確定所述多個通道中的哪個與其他通道相比是輕加載通道;分配用于處理意圖用于所確定的輕加載通道的一個或多個讀取請求的資源,其中已經從主機接收所述一個或多個讀取請求;以及將所述一個或多個讀取請求放置在所確定的輕加載通道中以用于處理。
在示例13中,權利要求12的主題可以包括:所述非易失性存儲器芯片包括NAND芯片,其中所確定的輕加載通道是所述多個通道中的最輕加載通道,其中,在將所述一個或多個讀取請求放置在所確定的最輕加載通道中以用于處理之后,所確定的最輕加載通道在處理期間盡可能接近被完全利用。
在示例14中,權利要求12的主題可以包括:將所述一個或多個讀取請求包括在意圖用于所述多個通道的多個讀取請求中,其中,通過將所述一個或多個讀取請求放置在所確定的輕加載通道中以用于處理來修改所述多個讀取請求的處理的順序。
在示例15中,權利要求14的主題可以包括:修改所述多個請求的處理的順序相對于其他請求優先地處理意圖用于所確定的輕加載通道的一個或多個讀取請求。
在示例16中,權利要求12的主題可以包括:所述裝置經由外圍部件互連高速(PCIe)總線從所述主機接收所述一個或多個讀取請求,其中,所述裝置中的多個通道中的每一個具有相同的帶寬。
在示例17中,權利要求16的主題可以包括:所述多個通道的帶寬的和等于所述PCIe總線的帶寬。
在示例18中,權利要求12的主題可以包括:所述非易失性存儲器芯片包括NAND芯片,其中與多個通道中的其他通道相比,所述多個通道中的至少一個耦合到不同數量的NAND芯片。
在示例19中,權利要求12的主題可以包括可以包括:所述非易失性存儲器芯片包括NAND芯片,其中如果未將一個或多個讀取請求放置在所確定的輕加載通道中以用于處理,那么所述裝置上的讀取性能與其中所有通道耦合到相同數量的NAND芯片的另一裝置相比降低超過10%。
在示例20中,權利要求12的主題可以包括:在由裝置中的仲裁器確定裝置中的所述多個通道中的哪個是所述輕加載通道之后,執行用于處理的所述資源的分配。
在示例21中,權利要求12的主題可以包括:相比于相對重加載的通道,所述仲裁器更經常地輪詢相對輕加載的通道,以將重新排序的讀取請求優先地分派到所述相對輕加載的通道。
在示例22中,權利要求12的主題可以包括:將所述多個通道中的每一個與保持由所述通道正在處理的未完成讀取的數據結構相關聯;以及將已經從所述主機接收的所述一個或多個讀取請求保持在從所述主機接收的讀取請求的傳入隊列中。
示例23是一種系統,包括固態驅動器、顯示器和耦合到所述固態驅動器和所述顯示器的處理器,其中所述處理器向所述固態驅動器發送多個讀取請求,并且其中響應于所述多個讀取請求,所述固態驅動器執行操作,所述操作包括:確定所述固態驅動器中的多個通道中的哪個與所述固態驅動器中的其他通道相比是輕加載通道;分配用于處理從所述多個讀取請求中選擇的一個或多個讀取請求的資源,其中所述一個或多個讀取請求意圖用于所確定的輕加載通道;將所述一個或多個讀取請求放置在所確定的輕加載通道中以用于處理。
在示例24中,權利要求23的主題還包括:所述固態驅動器還包括多個非易失性存儲器芯片,所述多個非易失性存儲器芯片包括NAND或NOR芯片,其中所述輕加載通道是所述多個通道中的最輕加載通道,并且其中在將所述一個或多個讀取請求放置在所確定的最輕加載通道中以用于處理之后,所確定的最輕加載通道在處理期間盡可能接近被完全利用。
在示例25中,權利要求23的主題還包括:通過將所述一個或多個讀取請求放置在所確定的輕加載通道中以用于處理來修改所述多個請求的處理的順序。