本發(fā)明的領(lǐng)域是數(shù)據(jù)處理,并且更具體地是用于使用混和控制器來管理存儲裝置的方法、設(shè)備和計算機程序產(chǎn)品。
背景技術(shù):基于固態(tài)存儲器的外圍部件互連高速(PCIe)裝置正在獲得普及。PCIe是未考慮到存儲應(yīng)用而設(shè)計的協(xié)議,結(jié)果,缺少一些由諸如SAS和SATA的其他協(xié)議提供的管理和服務(wù)特征。
技術(shù)實現(xiàn)要素:提供了用于使用混和控制器來管理存儲裝置的方法、設(shè)備和計算機程序產(chǎn)品,其中,所述存儲裝置包括內(nèi)部外圍部件互連高速(PCIe)接口,以控制在所述存儲裝置內(nèi)的固態(tài)存儲器。在特定實施例中,所述存儲裝置包括:第一外部接口,被配置為建立外部PCIe鏈路;以及第二外部接口,被配置為建立外部串行附接小型計算機系統(tǒng)接口(SAS)鏈路和外部串行高級技術(shù)附接(SATA)鏈路中的至少一個。實施例包括:所述混和控制器在所述第一外部接口從外部資源接收第一命令,并且在所述第二外部接口從外部資源接收第二命令;并且,所述混和控制器同時使用PCIe協(xié)議實現(xiàn)所述第一命令,使用SAS協(xié)議和SATA協(xié)議之一實現(xiàn)所述第二命令。通過下面更具體地描述在附圖中圖示的本發(fā)明的示例性實施例,本發(fā)明的上述和其他目的、特征和優(yōu)點將清楚,其中,同樣的附圖標號一般表示本發(fā)明的示例性實施例的同樣的部分。附圖說明圖1給出了根據(jù)本發(fā)明實施例的包括混和控制器的存儲裝置的圖,該混和控制器包括有益于管理存儲裝置的自動化計算機器。圖2給出了圖示根據(jù)本發(fā)明實施例的用于使用混和控制器來管理存儲裝置的示例性方法的流程圖。圖3給出了圖示根據(jù)本發(fā)明實施例的用于使用混和控制器來管理存儲裝置的另一種示例性方法的流程圖。圖4給出了圖示根據(jù)本發(fā)明實施例的用于使用混和控制器來管理存儲裝置的另一種示例性方法的流程圖。圖5給出了圖示根據(jù)本發(fā)明實施例的用于使用混和控制器來管理存儲裝置的另一種示例性方法的流程圖。具體實施方式從圖1開始,參考附圖描述根據(jù)本發(fā)明的、用于使用混和控制器來管理存儲裝置的示例性方法、設(shè)備和計算機程序產(chǎn)品。一般使用計算機,即使用自動化計算機器來實現(xiàn)根據(jù)本發(fā)明使用混和控制器來管理存儲裝置。圖1給出了根據(jù)本發(fā)明的實施例的系統(tǒng)的圖,該系統(tǒng)包括存儲裝置(102),存儲裝置(102)包含混和控制器(108),混和控制器(108)包括有益于管理存儲裝置(102)的自動化計算機器。在一特定實施例中,圖1的系統(tǒng)是計算機的一部分。在圖1的示例中,混和控制器(108)促進對位于存儲裝置(102)內(nèi)的固態(tài)存儲器芯片(104)的訪問。固態(tài)存儲器芯片可以包括用于數(shù)據(jù)的存儲的非易失性或易失性存儲器部件。固態(tài)存儲器裝置的示例包括基于與非(NAND)的快閃存儲器和DRAM易失性存儲器?;旌涂刂破鳎?08)包括至少一個處理器(156)以及隨機存取存儲器(RAM)(190),該兩者都連接到處理器本地總線(PLB)(176)。PLB是高性能總線,該高性能總線在存儲裝置、處理器(156)和RAM(190)的高性能外圍裝置之間的高帶寬低延遲連接。通過PLB控制器(174)控制對于PLB(176)的訪問。高性能外圍裝置的示例包括內(nèi)部外圍部件互連高速(PCIe)接口(106)、第一外部接口(112)和第二外部接口(114)。內(nèi)部PCIe接口包括將固態(tài)存儲器芯片(104)經(jīng)由PLB(176)與混和控制器(108)的其他部件耦合的路徑。內(nèi)部PCIe接口的路徑被配置為在PCIe協(xié)議(198)和PLB協(xié)議之間轉(zhuǎn)換數(shù)據(jù),以用于在混和控制器(108)和固態(tài)存儲器芯片(104)之間的通信。PCIe協(xié)議是用于指示實現(xiàn)計算機擴展總線的細節(jié)的標準。在圖1的示例中,第一外部接口(112)也是PCIe接口,并且用于在PCIe協(xié)議(198)和PLB協(xié)議之間轉(zhuǎn)換數(shù)據(jù),以用于在外部資源(130)和混和控制器(108)之間的通信。第二外部接口(114)是輔助總線接口,用于在PLB協(xié)議和諸如SAS協(xié)議(194)和SATA協(xié)議(196)的輔助總線協(xié)議之間轉(zhuǎn)換數(shù)據(jù)。SAS協(xié)議和SATA協(xié)議都是用于指示實現(xiàn)計算機總線和計算機總線接口的細節(jié)的標準。即,圖1的混和控制器(108)包括用于與外部資源(130)進行通信的至少兩個不同的外部接口。外部資源可以是諸如處理器的計算系統(tǒng)的任何部件。在圖1的示例中,混和控制器(108)還包括芯片上外圍總線(OPB),用于低性能外圍部件,諸如定時器(171)和中斷控制器(172)。通過OLB控制器(175)控制對于OCB(177)的訪問。在PLB(176)和OCB(177)之間設(shè)置電橋(173),以使能在PLB(176)和OCB(177)的部件之間的數(shù)據(jù)傳送?;旌涂刂破鳎?08)的部件僅是示例。根據(jù)本發(fā)明的實施例,混和控制器可以包括另外的外圍部件、替代總線和外圍連接與另外的總線(例如,裝置控制寄存器(DCR)總線)。在RAM(190)中存儲了根據(jù)本發(fā)明的實施例的、用于管理存儲裝置的混和控制模塊(192)。混和控制模塊(192)包括計算機程序指令,該計算機程序指令當被處理器(156)執(zhí)行時,使得混和控制器(108)對于與固態(tài)存儲器芯片(104)對應(yīng)的數(shù)據(jù)執(zhí)行常規(guī)存儲器控制器功能。存儲器控制器功能的示例包括糾錯(ECC)、磨損均衡(wearleveling)、差塊(badblock)映射、讀取清洗和讀取干擾管理、讀取和寫入高速緩存、垃圾收集、以及加密。另外,混和控制模塊(192)還包括計算機程序指令,該計算機程序指令當被處理器(156)執(zhí)行時,使得混和控制器(108)執(zhí)行步驟:混和控制器(108)從外部資源(130)在第一外部接口(112)接收第一命令(120),并且在第二外部接口(114)接收第二命令(122);并且,混和控制器(108)同時使用PCIe協(xié)議(198)來實現(xiàn)第一命令(120),并且使用SAS協(xié)議(194)和SATA協(xié)議(196)之一來實現(xiàn)第二命令(122)。即,混和控制器(108)可以使用兩個不同的協(xié)議來處理命令。例如,第一命令(120)可以包括PCIeI/O命令,并且第二命令(122)可以包括管理命令?;旌涂刂破鳎?08)可以使用PCIe協(xié)議來處理PCIeI/O命令,并且使用SATA協(xié)議和SAS協(xié)議之一來處理該管理命令。在這個示例中,處理PCIeI/O命令可以包括從固態(tài)存儲器芯片(104)讀取和向固態(tài)存儲器芯片(104)寫入數(shù)據(jù),并且處理管理命令可以包括在混和控制器(108)中的管理數(shù)據(jù)寄存器(199)內(nèi)檢索和寫入管理數(shù)據(jù)。在圖1的示例中,管理數(shù)據(jù)寄存器(199)存儲與固態(tài)存儲器(104)對應(yīng)的管理數(shù)據(jù)(197)。管理數(shù)據(jù)的示例包括:向存儲裝置的多個使用期限寫入;平均寫入放大;以及,已經(jīng)被標注為被損壞的存儲器芯片內(nèi)的單元的數(shù)量。使得兩個外部接口使用不同的協(xié)議允許混和控制器(108)同時處理I/O管理命令和管理命令,如在圖2中所述;經(jīng)由第二鏈路向外部資源通知第一鏈路故障,如在圖3中進一步所述;響應(yīng)于鏈路的故障來執(zhí)行存儲裝置的優(yōu)美(graceful)關(guān)斷,如在圖4中進一步所述;并且,在兩個協(xié)議模式之間轉(zhuǎn)換,如在圖5中所述。為了進一步說明,圖2給出了圖示根據(jù)本發(fā)明的實施例的用于使用混和控制器(108)來管理存儲裝置的示例性方法的流程圖。圖2的方法包括:通過混和控制器(108)從存儲裝置(102)外部的資源(130),在第一外部接口(112)接收(202)第一命令(120)。可以通過下述方式來執(zhí)行混和控制器(108)從存儲裝置(102)外部的資源(130)、在第一外部接口(112)接收(202)第一命令(120):接收用于訪問數(shù)據(jù)或向固態(tài)存儲器芯片寫入數(shù)據(jù)的PCIe輸入/輸出命令。圖2的方法包括:混和控制器(108)從外部資源(130)在第二外部接口(114)接收(204)第二命令(122)。可以通過下述方式來執(zhí)行混和控制器(108)從外部資源(130)、在第二外部接口(114)接收(204)第二命令(122):接收SAS管理命令或SATA管理命令內(nèi),用于訪問與固態(tài)存儲器芯片對應(yīng)的管理數(shù)據(jù)。管理數(shù)據(jù)的示例包括:向存儲裝置的多個使用期限寫入;平均寫入放大;以及已經(jīng)被標注為被損壞的存儲器芯片內(nèi)的單元的數(shù)量。圖2的方法包括:混和控制器(108)同時地使用PCIe協(xié)議(198)來實現(xiàn)(206)第一命令(120),使用SAS協(xié)議(194)和SATA協(xié)議(196)之一來實現(xiàn)(206)第二命令(122)。可以通過下述方式來執(zhí)行混和控制器(108)同時地使用PCIe協(xié)議(198)來實現(xiàn)(206)第一命令(120),使用SAS協(xié)議(194)和SATA協(xié)議(196)之一來實現(xiàn)(206)第二命令(122):響應(yīng)于接收到PCIe命令來訪問在存儲器芯片上存儲的數(shù)據(jù),并且響應(yīng)于接收到SAS命令或SATA命令來訪問在混和控制器中的管理數(shù)據(jù)寄存器中存儲的管理數(shù)據(jù)。即,混和控制器(108)可以被配置為同時使用兩個協(xié)議來處理命令。為了進一步說明,圖3給出了圖示根據(jù)本發(fā)明的實施例的用于使用混和控制器來管理存儲裝置的另一種示例性方法的流程圖。圖3的方法與圖2的方法的類似在于圖3的方法包括:從存儲裝置(102)外部的資源(130)在第一外部接口(112)接收(202)第一命令(120);從外部資源(130)在第二外部接口(114)接收(204)第二命令(122);并且,同時使用PCIe協(xié)議(198)來實現(xiàn)(206)第一命令(120),使用SAS協(xié)議(194)和SATA協(xié)議(196)之一來實現(xiàn)(206)第二命令(122)。圖3的方法還包括:混和控制器(108)檢測(302)在第一外部接口(112)和外部資源(130)之間的外部PCIe鏈路(116)的故障。通過下述方式來執(zhí)行混和控制器(108)檢測(302)在第一外部接口(112)和外部資源(130)之間的外部PCIe鏈路(116)的故障:從第一外部接口接收指示(indication)。指示的示例可以包括:超時;壞數(shù)據(jù);以及,壞數(shù)據(jù)或破壞數(shù)據(jù)的指示。圖3的方法還包括:響應(yīng)于檢測到外部PCIe鏈路(116)的故障,使用第二外部接口(114)、通過外部SAS鏈路(118)和外部SATA鏈路(118)之一與外部資源(130)進行通信??梢酝ㄟ^下述方式來執(zhí)行使用第二外部接口(114)、通過外部SAS鏈路(118)和外部SATA鏈路(118)之一與外部資源(130)進行通信:移位經(jīng)由第一外部接口向第二外部接口發(fā)送的通信和命令。在圖3的示例中,使用第二外部接口(114)、通過外部SAS鏈路(118)和外部SATA鏈路(118)之一與外部資源(130)進行通信可選地包括:經(jīng)由第二外部接口(114)向外部資源(130)發(fā)送(306)消息(320)。在圖3的示例中,該消息指示外部PCIe鏈路(116)的故障??梢酝ㄟ^下述方式來執(zhí)行經(jīng)由第二外部接口(114)向外部資源(130)發(fā)送(306)消息(320):將故障通知數(shù)據(jù)置于消息內(nèi);并且發(fā)送該消息。為了進一步說明,圖4給出了圖示根據(jù)本發(fā)明的實施例的用于使用混和控制器來管理存儲裝置的另一種示例性方法的流程圖。圖4的方法與圖3的方法的類似在于圖4的方法包括:在第一外部接口(112)從存儲裝置(102)外部的資源(130)接收(202)第一命令(120);在第二外部接口(114)從外部資源(130)接收(204)第二命令(122);同時使用PCIe協(xié)議(198)來實現(xiàn)(206)第一命令(120),使用SAS協(xié)議(194)和SATA協(xié)議(196)之一來實現(xiàn)(206)第二命令(122);檢測(302)在第一外部接口(112)和外部資源(130)之間的外部PCIe鏈路(116)的故障;并且,響應(yīng)于檢測到外部PCIe鏈路(116)的故障,使用第二外部接口(114)、通過外部SAS鏈路(118)和外部SATA鏈路(118)之一與外部資源(130)進行通信。圖4的方法還包括:混和控制器(108)暫停(402)在第一外部接口(112)處的處理。可以通過防止在第一外部接口處發(fā)送或接收命令或數(shù)據(jù)來執(zhí)行混和控制器(108)暫停(402)在第一外部接口(112)處的處理。圖4的方法還包括:混和控制器(108)清除(404)從第一外部接口(112)接收的任何未決命令(422)。通過下述方式來執(zhí)行混和控制器(108)清除(404)從第一外部接口(112)接收的任何未決命令(422):識別未決命令;并且丟棄未決命令。圖4的方法還包括:響應(yīng)于清除來自第一外部接口(112)的未決命令(422),通過混和控制器(108)來關(guān)斷(406)存儲裝置(102)。通過執(zhí)行關(guān)斷過程來執(zhí)行通過混和控制器(108)關(guān)斷(406)存儲裝置(102),該關(guān)斷過程包括關(guān)斷存儲裝置的一個或多個部件。為了進一步說明,圖5給出了圖示根據(jù)本發(fā)明的實施例的用于使用混和控制器來管理存儲裝置的另一種示例性方法的流程圖。圖5的方法與圖4的方法的類似在于圖5的方法包括:在第一外部接口(112)從存儲裝置(102)外部的資源(130)接收(202)第一命令(120);在第二外部接口(114)從外部資源(130)接收(204)第二命令(122);同時使用PCIe協(xié)議(198)來實現(xiàn)(206)第一命令(120),使用SAS協(xié)議(194)和SATA協(xié)議(196)之一來實現(xiàn)(206)第二命令(122);檢測(302)在第一外部接口(112)和外部資源(130)之間的外部PCIe鏈路(116)的故障;并且,響應(yīng)于檢測到外部PCIe鏈路(116)的故障,使用第二外部接口(114)、通過外部SAS鏈路(118)和外部SATA鏈路(118)之一與外部資源(130)進行通信。圖5的方法包括:混和控制器(108)從PCIe模式轉(zhuǎn)換(502)到SAS模式和SATA模式之一。在PCIe模式中,混和控制器(108)可以作為PCIe裝置,而在SAS模式或SATA模式中,混和控制器(108)可以分別作為SAS裝置或SATA裝置。例如,在PCIe模式中,混和控制器可以僅允許具有PCIe協(xié)議格式的I/O命令,而在SATA模式中,混和控制器可以允許具有SATA協(xié)議格式的I/O命令。可以通過關(guān)斷第一外部接口來執(zhí)行混和控制器(108)從PCIe模式轉(zhuǎn)換(502)到SAS模式和SATA模式之一。圖5的方法包括:響應(yīng)于向SAS模式和SATA模式之一轉(zhuǎn)換,混和控制器(108)經(jīng)由第二外部接口(114)從外部資源(130)接收(504)輸入/輸出(I/O)命令(522)??梢酝ㄟ^接收SAS協(xié)議格式或SATA協(xié)議格式的I/O命令來執(zhí)行混和控制器(108)經(jīng)由第二外部接口(114)從外部資源(130)接收輸入/輸出(I/O)命令(522)。主要在用于使用混和控制器管理存儲裝置的全功能計算機系統(tǒng)的上下文中描述了本發(fā)明的示例性實施例。然而,本領(lǐng)域的技術(shù)人員可以認識到,也可以以在用于任何適當?shù)臄?shù)據(jù)處理系統(tǒng)的計算機可讀存儲介質(zhì)上布置的計算機程序產(chǎn)品來體現(xiàn)本發(fā)明。這樣的計算機可讀存儲介質(zhì)可以是用于機器可讀信息的任何存儲介質(zhì),包括磁介質(zhì)、光介質(zhì)或其他適當?shù)慕橘|(zhì)。這樣的介質(zhì)的示例包括在硬盤驅(qū)動器或盤中的磁盤、用于光學(xué)驅(qū)動器的致密盤、磁盤和對于本領(lǐng)域的技術(shù)人員明顯的其他介質(zhì)。本領(lǐng)域內(nèi)的技術(shù)人員可以立即認識到具有適當?shù)木幊滩考娜魏斡嬎銠C系統(tǒng)能夠執(zhí)行用計算機程序產(chǎn)品實現(xiàn)的本發(fā)明的方法的步驟。本領(lǐng)域的技術(shù)人員也可以認識到,雖然在本說明書中描述的一些示例性實施例面向在計算機硬件上安裝和執(zhí)行的軟件,但是盡管如此,被實現(xiàn)為固件或硬件的替代實施例也在本發(fā)明的范圍內(nèi)。本領(lǐng)域的技術(shù)人員可以明白,本發(fā)明的各個方面可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本發(fā)明的各個方面可以采用以下形式:完全硬件實施例、完全軟件實施例(包括固件、駐留軟件、微代碼等)或組合軟件和硬件方面的實施例,它們可以一般地全部在此稱為“電路”、“模塊”或“系統(tǒng)”。此外,本發(fā)明的各個方面可以采用在其中包含計算機可讀程序代碼的一個或多個計算機可讀介質(zhì)中包含的計算機程序產(chǎn)品的形式??梢圆捎靡粋€或多個計算機可讀介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是但不限于電、磁、光、電磁、紅外線或半導(dǎo)體的系統(tǒng)、設(shè)備或裝置或者以上的任意合適組合。計算機可讀存儲介質(zhì)的更具體的示例(非窮盡的列表)包括下述部分:具有一條或多條導(dǎo)線的電連接、便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦除可編程只讀存儲器(EPROM或閃存)、光纖、便攜式致密盤只讀存儲器(CD-ROM)、光存儲裝置、磁存儲裝置或者上述的任意合適的組合。在本文的上下文中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、設(shè)備或者裝置使用或者與其結(jié)合使用。計算機可讀的信號介質(zhì)可以包括例如在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計算機可讀的程序代碼。這種傳播的信號可以采用多種形式的任何一種,包括但不限于電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質(zhì)可以是非計算機可讀存儲介質(zhì)的任何計算機可讀介質(zhì),該計算機可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、設(shè)備或者裝置使用或者與其結(jié)合使用的程序。在計算機可讀介質(zhì)上包含的程序代碼可以用任何適當?shù)慕橘|(zhì)傳輸,包括但不限于無線、有線、光纜線纜、RF等等或者上述的任意合適的組合。可以以一種或多種編程語言的組合來編寫用于執(zhí)行本發(fā)明的方面的操作的計算機程序代碼,所述編程語言包括:面向?qū)ο蟮木幊陶Z言,諸如Java、Smalltalk或C++等;以及,常規(guī)的過程式編程語言,諸如“C”編程語言或類似的編程語言。程序代碼可以完全在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上并且部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務(wù)器上執(zhí)行。在后一種情形中,遠程計算機可以通過包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)的任意種類的網(wǎng)絡(luò)連接到用戶的計算機,或者,可以建立到外部計算機的連接(例如,利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。上面參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的各方面。應(yīng)當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生機器,使得通過計算機或其它可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令創(chuàng)建實現(xiàn)流程圖和/或框圖的一個或多個方框中規(guī)定的功能/操作的裝置。也可以把這些計算機程序指令存儲在能使計算機、其它可編程數(shù)據(jù)處理設(shè)備或其他裝置以特定方式工作的計算機可讀介質(zhì)中,使得存儲在計算機可讀介質(zhì)中的指令產(chǎn)生包括實現(xiàn)流程圖和/或框圖的一個或多個方框中規(guī)定的功能/操作的指令的產(chǎn)品。也可以把計算機程序指令加載到計算機、其它可編程數(shù)據(jù)處理設(shè)備或其它裝置上,以使得在計算機、其它可編程數(shù)據(jù)處理設(shè)備或其它裝置上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的方法,使得在計算機或其它可編程設(shè)備上執(zhí)行的指令能夠提供實現(xiàn)流程圖和/或框圖的一個或多個方框中規(guī)定的功能/操作的方法。附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)??梢詮纳鲜稣f明明白,在不偏離本發(fā)明的真實精神的情況下,可以在本發(fā)明的各個實施例中進行修改和改變。在本說明書中的描述僅用于說明的目的,并且不以限制的意義被解釋。本發(fā)明的范圍僅被所附的權(quán)利要求的語言限制。