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