轉(zhuǎn)換映射并將其發(fā)送到數(shù)據(jù)存儲(chǔ)裝置,其中數(shù)據(jù)存儲(chǔ)裝置使用并更新映射。當(dāng)發(fā)出新的寫入命令時(shí),主機(jī)裝置產(chǎn)生物理地址并將其作為寫入命令的部分發(fā)送到數(shù)據(jù)存儲(chǔ)裝置。主機(jī)裝置維持位圖,其指示數(shù)據(jù)存儲(chǔ)裝置上的存儲(chǔ)器裝置中的可用及被占用的頁(yè)。
[0022]此外,在主機(jī)裝置上運(yùn)行的應(yīng)用程序可在對(duì)數(shù)據(jù)存儲(chǔ)裝置的命令中使用虛擬存儲(chǔ)器地址,其中虛擬存儲(chǔ)器地址引用可被分配給應(yīng)用程序的主機(jī)存儲(chǔ)器。主機(jī)裝置可產(chǎn)生虛擬到物理存儲(chǔ)器地址轉(zhuǎn)換映射,且將映射傳達(dá)到數(shù)據(jù)存儲(chǔ)裝置以存儲(chǔ)在數(shù)據(jù)存儲(chǔ)裝置上且在其上使用。以此方式,在主機(jī)裝置上運(yùn)行的應(yīng)用程序可將命令直接發(fā)送到數(shù)據(jù)存儲(chǔ)裝置且繞過(guò)主機(jī)裝置上的驅(qū)動(dòng)器/內(nèi)核空間。數(shù)據(jù)存儲(chǔ)裝置上的存儲(chǔ)器控制器可使用存儲(chǔ)在數(shù)據(jù)存儲(chǔ)裝置上的映射將命令中所使用的虛擬存儲(chǔ)器地址轉(zhuǎn)換為物理存儲(chǔ)器地址,其中物理存儲(chǔ)器地址引用主機(jī)存儲(chǔ)器的實(shí)際物理地址。通過(guò)使得用戶空間應(yīng)用程序能夠直接與數(shù)據(jù)存儲(chǔ)裝置通信,可減小主機(jī)裝置上的中央處理單元(CPU)處理開銷且可減小應(yīng)用程序與數(shù)據(jù)存儲(chǔ)裝置之間的通信延遲。
[0023]在一個(gè)實(shí)例實(shí)施方案中,主機(jī)裝置可包含多個(gè)隊(duì)列。在主機(jī)裝置上運(yùn)行的應(yīng)用程序可使用隊(duì)列中的一或多者以將命令直接傳達(dá)到數(shù)據(jù)存儲(chǔ)裝置。隊(duì)列可共享虛擬到物理地址轉(zhuǎn)換映射。此外或替代地,主機(jī)可產(chǎn)生被傳達(dá)且存儲(chǔ)在數(shù)據(jù)存儲(chǔ)裝置上的多個(gè)虛擬到物理地址轉(zhuǎn)換映射,且隊(duì)列中的每一者可使用映射中的一者。
[0024]圖1是說(shuō)明根據(jù)實(shí)例實(shí)施方案的計(jì)算系統(tǒng)100的方框圖。計(jì)算系統(tǒng)100包含主機(jī)計(jì)算裝置110及數(shù)據(jù)存儲(chǔ)裝置120。主機(jī)計(jì)算裝置110及數(shù)據(jù)存儲(chǔ)裝置120可使用本文中描述的技術(shù)來(lái)實(shí)施。在此實(shí)例中,主機(jī)110可為可操作地與數(shù)據(jù)存儲(chǔ)裝置120耦合的電子裝置,且可發(fā)出各種類型的命令及/或請(qǐng)求到數(shù)據(jù)存儲(chǔ)裝置。主機(jī)110可呈現(xiàn)多種形式。作為一些實(shí)例,主機(jī)110可被實(shí)施為個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)、服務(wù)器、平板計(jì)算機(jī)或上網(wǎng)本計(jì)算機(jī)。在其它實(shí)施方案中,主機(jī)I1還可呈現(xiàn)其它形式。數(shù)據(jù)存儲(chǔ)裝置120還可呈現(xiàn)多種形式。數(shù)據(jù)存儲(chǔ)裝置120可被實(shí)施為可結(jié)合主機(jī)裝置(例如主機(jī)裝置110)工作以存儲(chǔ)及/或檢索電子數(shù)據(jù)的多個(gè)適當(dāng)裝置。例如,作為一些實(shí)例,數(shù)據(jù)存儲(chǔ)裝置可為固態(tài)驅(qū)動(dòng)器(SSD)(例如基于快閃存儲(chǔ)器的SSD)、磁盤驅(qū)動(dòng)器或光盤驅(qū)動(dòng)器。
[0025]如圖1中所示,主機(jī)110包含存儲(chǔ)器111、至少一個(gè)處理器117、在主機(jī)110上運(yùn)行的至少一個(gè)應(yīng)用程序113及驅(qū)動(dòng)器/內(nèi)核115。存儲(chǔ)器111可為任何類型的存儲(chǔ)器。存儲(chǔ)器111可用以存儲(chǔ)由至少一個(gè)處理器117執(zhí)行及/或經(jīng)分配以供至少一個(gè)應(yīng)用程序113使用的指令。應(yīng)用程序113可包含用戶空間應(yīng)用程序。應(yīng)用程序113可為任何類型的應(yīng)用程序。例如,應(yīng)用程序113可從數(shù)據(jù)存儲(chǔ)裝置120請(qǐng)求數(shù)據(jù),其中所請(qǐng)求數(shù)據(jù)將被讀取到存儲(chǔ)器111中。類似地,應(yīng)用程序113可將要寫入的數(shù)據(jù)從存儲(chǔ)器111發(fā)送到數(shù)據(jù)存儲(chǔ)裝置120。處理器117可為執(zhí)行可存儲(chǔ)在存儲(chǔ)器111中的指令以執(zhí)行各種動(dòng)作的任何類型的處理器。驅(qū)動(dòng)器/內(nèi)核115可為用于管理主機(jī)計(jì)算裝置110的處理、存儲(chǔ)器及輸入/輸出資源的操作系統(tǒng)的組件。驅(qū)動(dòng)器/內(nèi)核115可用于管理應(yīng)用程序113與硬件元件(例如存儲(chǔ)器111及處理器117)之間的資源。一或多個(gè)驅(qū)動(dòng)器可被實(shí)施為驅(qū)動(dòng)器/內(nèi)核115的部分。
[0026]如圖1中所示,數(shù)據(jù)存儲(chǔ)裝置120包含存儲(chǔ)器控制器130、存儲(chǔ)器裝置信道接口140 (也稱作存儲(chǔ)器裝置信道)及存儲(chǔ)器裝置150。存儲(chǔ)器裝置150可使用多種不同類型的存儲(chǔ)器裝置實(shí)施。例如,存儲(chǔ)器裝置150可使用快閃存儲(chǔ)器裝置(例如,NAND快閃存儲(chǔ)器裝置)或其它類型的非易失性存儲(chǔ)器裝置實(shí)施。在某些實(shí)施方案中,可使用易失性存儲(chǔ)器裝置,例如隨機(jī)存取存儲(chǔ)器裝置。為了本發(fā)明目的,本文中描述的各個(gè)實(shí)施方案將原則上被討論為使用快閃存儲(chǔ)器裝置實(shí)施。然而,將明白,其它方法是可能的且可使用其它類型的存儲(chǔ)器裝置以實(shí)施本文中描述的實(shí)施方案。
[0027]在計(jì)算系統(tǒng)100中以及在本文中描述的其它實(shí)施方案中,存儲(chǔ)器控制器130可從主機(jī)計(jì)算裝置110獲得存儲(chǔ)器操作命令。當(dāng)將快閃存儲(chǔ)器裝置用作存儲(chǔ)器裝置150來(lái)實(shí)施數(shù)據(jù)存儲(chǔ)裝置120時(shí),由存儲(chǔ)器控制器130獲自主機(jī)計(jì)算裝置110的存儲(chǔ)器操作命令可包含快閃存儲(chǔ)器讀取命令、快閃存儲(chǔ)器寫入命令及快閃存儲(chǔ)器擦除命令以及其它類型的快閃存儲(chǔ)器命令(例如移動(dòng)命令及/或復(fù)制命令)。為了本發(fā)明目的,術(shù)語(yǔ)存儲(chǔ)器操作命令、存儲(chǔ)器操作及存儲(chǔ)器命令可交換使用以描述用于執(zhí)行數(shù)據(jù)存儲(chǔ)裝置中的一或多個(gè)數(shù)據(jù)存儲(chǔ)功能的機(jī)器可讀指令(例如從主機(jī)計(jì)算裝置到數(shù)據(jù)存儲(chǔ)裝置)。
[0028]在計(jì)算系統(tǒng)100中,存儲(chǔ)器裝置150可包含被組織到多個(gè)存儲(chǔ)器信道中的多個(gè)存儲(chǔ)器裝置,例如快閃存儲(chǔ)器裝置。在此方法中,存儲(chǔ)器信道中的每一者可包含一或多個(gè)個(gè)別存儲(chǔ)器裝置。取決于特定實(shí)施方案,給定的存儲(chǔ)器信道的個(gè)別存儲(chǔ)器裝置可在個(gè)別裝置封裝中實(shí)施,或替代地,給定的存儲(chǔ)器信道的多個(gè)存儲(chǔ)器裝置可包含于單個(gè)裝置封裝中。
[0029]例如,在實(shí)例實(shí)施方案中,數(shù)據(jù)存儲(chǔ)裝置120可包含多個(gè)存儲(chǔ)器信道。在此方法中,存儲(chǔ)器控制器130可使用單獨(dú)存儲(chǔ)器裝置信道接口 140與每一存儲(chǔ)器信道的存儲(chǔ)器裝置150通信。每一存儲(chǔ)器裝置信道接口 140可包含經(jīng)配置以促進(jìn)相應(yīng)存儲(chǔ)器信道的存儲(chǔ)器裝置150與存儲(chǔ)器控制器130之間的通信的相應(yīng)信道控制器。例如,此類信道控制器可經(jīng)配置以管理存儲(chǔ)器控制器130與給定的存儲(chǔ)器信道的存儲(chǔ)器裝置150之間的共享總線,包含傳達(dá)存儲(chǔ)器操作命令、芯片選擇信息以及管理存儲(chǔ)器控制器130與存儲(chǔ)器裝置150之間通過(guò)對(duì)應(yīng)存儲(chǔ)器裝置信道接口 140進(jìn)行的其它數(shù)據(jù)及控制信息的通信。
[0030]在一個(gè)示范性實(shí)施方案中,存儲(chǔ)器控制器130及其它組件可安置在印刷電路板上,且存儲(chǔ)器裝置150可安置在一或多個(gè)其它印刷電路板上。印刷電路板可組裝在一起。
[0031]在一個(gè)示范性實(shí)施方案中,可使用高速鏈路155以連接主機(jī)計(jì)算裝置110及數(shù)據(jù)存儲(chǔ)裝置120。鏈路155可為物理連接器或其可為邏輯連接器。例如,鏈路155可為PC1-e鏈路以連接在主機(jī)計(jì)算裝置110與數(shù)據(jù)存儲(chǔ)裝置120之間并路由主機(jī)計(jì)算裝置110及數(shù)據(jù)存儲(chǔ)裝置120之間的信號(hào)。
[0032]在一個(gè)實(shí)例實(shí)施方案中,存儲(chǔ)器控制器130可直接從在主機(jī)110上運(yùn)行的至少一個(gè)應(yīng)用程序113獲得存儲(chǔ)器操作命令。以此方式,應(yīng)用程序113可繞過(guò)主機(jī)110上的驅(qū)動(dòng)器/內(nèi)核115且將命令直接傳達(dá)到數(shù)據(jù)存儲(chǔ)裝置120上的存儲(chǔ)器控制器130。為了使得應(yīng)用程序113能夠直接與存儲(chǔ)器控制器通信,存儲(chǔ)器控制器103可包含存儲(chǔ)器模塊160。在一個(gè)實(shí)例實(shí)施方案中,存儲(chǔ)器模塊160可為動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。在其它實(shí)例實(shí)施方案中,存儲(chǔ)器模塊160可包含其它類型的存儲(chǔ)器。
[0033]主機(jī)110可產(chǎn)生虛擬到物理存儲(chǔ)器地址轉(zhuǎn)換映射,其在此文檔中可稱作映射或表。虛擬存儲(chǔ)器地址可在應(yīng)用程序113的空間中,且主機(jī)110將此類虛擬存儲(chǔ)器地址映射到主機(jī)110上的存儲(chǔ)器111的物理存儲(chǔ)器地址。具體地說(shuō),應(yīng)用程序113可選擇應(yīng)用程序113的由主機(jī)110指派給所述應(yīng)用程序113的虛擬存儲(chǔ)器的范圍,應(yīng)用程序113的輸入-輸出(1)緩沖器將駐留在所述范圍中。應(yīng)用程序113可將此地址范圍傳遞到主機(jī)110上的驅(qū)動(dòng)器/內(nèi)核115。主機(jī)110上的驅(qū)動(dòng)器/內(nèi)核115可標(biāo)記存儲(chǔ)器位置,因此所分配的存儲(chǔ)器不會(huì)被移動(dòng)或改變,且可為所述存儲(chǔ)器范圍建立映射,且主機(jī)110可將映射傳達(dá)到數(shù)據(jù)存儲(chǔ)裝置120。
[0034]數(shù)據(jù)存儲(chǔ)裝置120可從主機(jī)110接收映射165,且可將映射165存儲(chǔ)在存儲(chǔ)器模塊160中。存儲(chǔ)器控制器130可直接從應(yīng)用程序113接收命令,其中所接收的命令包含虛擬存儲(chǔ)器地址。存儲(chǔ)器控制器130可使用映射165將虛擬存儲(chǔ)器地址轉(zhuǎn)換為物理存儲(chǔ)器地址。以此方式,視具體情況而定,與直接從應(yīng)用程序113接收的命令有關(guān)的數(shù)據(jù)可存儲(chǔ)在主機(jī)110上的存儲(chǔ)器111中的適當(dāng)物理存儲(chǔ)器位置中或被從所述適當(dāng)物理存儲(chǔ)器位置檢索。通過(guò)在數(shù)據(jù)存儲(chǔ)裝置120上的存儲(chǔ)器控制器130中執(zhí)行虛擬地址到物理地址轉(zhuǎn)換,可繞過(guò)主機(jī)上的驅(qū)動(dòng)器/內(nèi)核115,因?yàn)轵?qū)動(dòng)器/內(nèi)核115及處理器117無(wú)需使用處理能力來(lái)執(zhí)行轉(zhuǎn)換中的任一者以將虛擬地址映射到存儲(chǔ)器111的物理存儲(chǔ)器地址。
[0035]主機(jī)110可使用將映射165寫入到存儲(chǔ)器模塊160的寫入命令將映射165傳達(dá)到數(shù)據(jù)存儲(chǔ)裝置120。寫入命令可指定在存儲(chǔ)器模塊160中的何處存儲(chǔ)映射165??捎纱鎯?chǔ)器控制器130執(zhí)行對(duì)映射的更新。主機(jī)110可將映射165從存儲(chǔ)器模塊160讀回到主機(jī)110以存儲(chǔ)在例如存儲(chǔ)器111中。以此方式,主機(jī)110可控制映射165的產(chǎn)生及映射165在主機(jī)110與存儲(chǔ)器控制器130之間的傳達(dá)。
[0036]主機(jī)110還可產(chǎn)生邏輯地址到物理地址轉(zhuǎn)換映射,其可在此文檔中稱作映射或表。邏輯地址及物理地址是指數(shù)據(jù)存儲(chǔ)裝置120上的存儲(chǔ)器裝置150的地址。當(dāng)發(fā)送引用存儲(chǔ)器裝置150上的數(shù)據(jù)的命令到數(shù)據(jù)存儲(chǔ)裝置時(shí),邏輯地址可由例如主機(jī)110上的應(yīng)用程序113使用。邏輯地址需要被轉(zhuǎn)換為實(shí)際物理地址(例如存儲(chǔ)器裝置150上的存儲(chǔ)器塊中的特定頁(yè))以在由邏輯地址在命令中引用的正確位置處執(zhí)行動(dòng)作。主機(jī)110產(chǎn)生邏輯地址到物理地址轉(zhuǎn)換映射且將映射167傳達(dá)到數(shù)據(jù)存儲(chǔ)裝置120上的存儲(chǔ)器控制器130。
[0037]在一個(gè)實(shí)施方案中,主機(jī)110可對(duì)數(shù)據(jù)存儲(chǔ)裝置120上的存儲(chǔ)器裝置150中的每一者產(chǎn)生邏輯地址到物理地址轉(zhuǎn)換映射。以此方式,數(shù)據(jù)存儲(chǔ)裝置上的每一存儲(chǔ)器裝置具有其自身的相應(yīng)轉(zhuǎn)換映射。主機(jī)110可將映射中的每一者傳達(dá)到存儲(chǔ)器控制器130。
[0038]存儲(chǔ)器控制器130從主機(jī)110接收映射167且將映射167存儲(chǔ)在存儲(chǔ)器模塊160中。在多個(gè)映射的情況中,當(dāng)每一存儲(chǔ)器裝置存在一個(gè)映射時(shí),存儲(chǔ)器控制器130將多個(gè)映射存儲(chǔ)在存儲(chǔ)器模塊160中。存儲(chǔ)器控制器130可直接從應(yīng)用程序113接收命令