欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于在多個獨立主機之間共享的設(shè)備的裝置、系統(tǒng)、以及方法

文檔序號:6457082閱讀:509來源:國知局
專利名稱:用于在多個獨立主機之間共享的設(shè)備的裝置、系統(tǒng)、以及方法
技術(shù)領(lǐng)域
本發(fā)明涉及設(shè)備管理,更具體地,涉及在多個從屬主機之間共享設(shè)備。
背景技術(shù)
傳統(tǒng)上,諸如網(wǎng)絡(luò)接口 (網(wǎng)絡(luò)接口卡或"NIC")、存儲設(shè)備、圖形卡等 的計算機部件通過系統(tǒng)總線連接到主機的處理器上。傳統(tǒng)的系統(tǒng)總線在可以 連接的設(shè)備的數(shù)量上受限而且起到的作用有點像物理連接到有限數(shù)量的設(shè)備 上的一組電線。 一些系統(tǒng)總線協(xié)議使得外部設(shè)備可以連接,這些系統(tǒng)總線比 如小型計算機系統(tǒng)接口 ( "SCST")、電氣和電子工程師協(xié)會("IEEE") 1394 (火線)、光纖通道、通用串行總線("USB")、外圍組件互連快速 ("PCI-e")總線、串行高級技術(shù)附件("串行ATA")總線、或者類似總 線。
許多現(xiàn)代的系統(tǒng)總線(比如PCIe)使用點對點連接和切換芯片將多個設(shè) 備互連,而保持傳統(tǒng)系統(tǒng)總線的功能性。然而,當連接到系統(tǒng)總線上的設(shè)備 比如存儲設(shè)備、網(wǎng)絡(luò)接口 (網(wǎng)絡(luò)接口卡或"NIC")等等在多個設(shè)備之間共享 時,共享的設(shè)備通常通過單個主機來控制。來自想要訪問該共享設(shè)備的其他 主機的數(shù)據(jù)和命令通過該主機傳送到該共享設(shè)備并從該共享設(shè)備通過控制主
8機回到其他主機。因為請求主機沒有能力與共享主機直接通信進行數(shù)據(jù)轉(zhuǎn)移, 所以這種方法是沒有效率的。這阻止了請求主機和共享設(shè)備之間的直接存儲
器存取("DMA")傳送和遠程DMA ( "RDMA")傳送。

發(fā)明內(nèi)容
從上述論述中,應(yīng)當理解的是存在對允許在多個主機之間共享設(shè)備的一 種裝置、系統(tǒng)以及方法的需要,在此數(shù)據(jù)可以在系統(tǒng)總線上主機和共享設(shè)備 之間獨立于連接到系統(tǒng)總線上的其他主機而轉(zhuǎn)移。有利的是,這樣的裝置、 系統(tǒng)以及方法會使命令代理主機得以在共享設(shè)備和請求主機之間建立數(shù)據(jù)3各 徑,并得以在此后作為所選擇的用來建立數(shù)據(jù)轉(zhuǎn)移的命令的代理。
本發(fā)明是針對現(xiàn)有技術(shù)的現(xiàn)況開發(fā)出來的,具體地,是針對現(xiàn)有技術(shù)中 目前可以得到的用于在多個主機之間共享設(shè)備的系統(tǒng)并未完全解決的問題和 需要。因此,本發(fā)明已經(jīng)被開發(fā)出來以提供克服現(xiàn)有技術(shù)中的上述多數(shù)或全 部缺陷的 一種在多個主機之間共享設(shè)備的裝置、系統(tǒng)以及方法。
在一種實施方式中,該裝置被提供有用于實現(xiàn)多個主機之間設(shè)備共享的 多個模塊,包括代理請求接收器模塊和代理請求命令模塊。典型的是代理請 求接收器模塊在指定的命令代理主機上執(zhí)行并且從請求主機接收代理請求。 典型的是該請求主才幾是兩個或更多個主機之一,而且該兩個或更多個主機中 每一個都執(zhí)行獨立于其他主機和共享設(shè)備的操作系統(tǒng)。指定這兩個或更多個 主機中的 一個主機為命令代理主機,而且兩個或更多個主機和共享設(shè)備可以 通過系統(tǒng)總線連接。
代理請求可以包括要由共享設(shè)備執(zhí)行的控制請求。典型的是該控制請求 足以配置該共享設(shè)備以在發(fā)送該代理請求的請求主機和共享設(shè)備之間進行數(shù) 據(jù)轉(zhuǎn)移。該數(shù)據(jù)轉(zhuǎn)移獨立于該命令代理主機執(zhí)行,而且典型的是該控制請求 大體上沒有要在請求主機和共享設(shè)備之間轉(zhuǎn)移的數(shù)據(jù)。典型的是該代理請求 命令模塊在該命令代理主機上執(zhí)行并且向該共享設(shè)備發(fā)送控制請求,以作為 對代理請求接收器模塊接收控制請求的響應(yīng)。
在一種實施方式中,該裝置包括中斷接收器模塊和中斷發(fā)送;f莫塊。典型 的是該中斷接收器模塊在命令代理主機上執(zhí)行并且從共享設(shè)備接收中斷。該 中斷可以包括如下信息共享設(shè)備具有要向主機發(fā)送的數(shù)據(jù)或者已經(jīng)將數(shù)據(jù)發(fā)送給主機。中斷發(fā)送模塊將中斷中所包括的信息發(fā)送給主機。該信息對于 接收該信息的主機來說足以繼續(xù)進行接收該數(shù)據(jù)傳輸?shù)倪^程。在又一種實施 方式中,除了命令代理主機之外的主機都能夠接收中斷。
在該裝置的一種實施方式中,該裝置包括典型地在命令代理主機中執(zhí)行 的路徑模塊。該路徑模塊確定在主機和共享設(shè)備之間是否存在通信路徑。該
通信路徑可以包括數(shù)據(jù)路徑或命令路徑。路徑模塊創(chuàng)建通信路徑以作為確定 通信路徑不存在的響應(yīng),而且數(shù)據(jù)路徑足以在主機和共享設(shè)備之間轉(zhuǎn)移數(shù)據(jù) 或控制請求。在又一種實施方式中,通信路徑模塊可以確定通信路徑是否存 在以響應(yīng)來自主機的代理請求或者來自共享設(shè)備的中斷。
在一種附加實施方式中,該共享設(shè)備可以是如下配置的網(wǎng)絡(luò)接口將通
過計算機網(wǎng)絡(luò)從兩個或更多個主機之一接收的數(shù)據(jù)轉(zhuǎn)移到一個設(shè)備并將通過 計算機網(wǎng)絡(luò)接收的數(shù)據(jù)從一個設(shè)備轉(zhuǎn)移到兩個或更多個主機之一 。在另 一種 實施方式中,該共享設(shè)備可以包括存儲設(shè)備和存儲控制器中的一個或多個。 在又一種實施方式中,該存儲設(shè)備進一步可以是固態(tài)存儲設(shè)備,而且該存儲 控制器可以是固態(tài)存儲控制器。
在一種實施方式中,系統(tǒng)總線可以是外圍組件互連快速("PCI-e")。 在又一種實施方式中,PCI-e總線和共享設(shè)備支持PCI-e輸入/輸出虛擬化 ("PCIe-IOV")。在另一種實施方式中,在這兩個或多于兩個主才幾中兩個 或多于兩個主機在單一的設(shè)備場境內(nèi)共享該共享設(shè)備。
在該裝置的一種實施方式中,命令代理主機在根段執(zhí)行。在另一種實施 方式中,命令代理主機在兩個或多于兩個主機中執(zhí)行。在又一種實施方式中, 命令代理主機在共享設(shè)備中執(zhí)行。在另一種實施方式中,命令代理主機在給 共享設(shè)備的第三方組件管理命令中執(zhí)行,該共享設(shè)備獨立于這兩個或兩個以 上主機。在又一種實施方式中,命令代理主機在將一個或多個根、 一個主機、 共享設(shè)備、以及第三方組件結(jié)合起來的設(shè)備中執(zhí)行。
在一種實施方式中,獨立的操作系統(tǒng)包括一個虛擬機層,該虛擬機層具 有在該虛擬機層之上運行的一個或多個操作系統(tǒng)。在另一種實施方式中,該 共用設(shè)備使用直接存儲器存取("DMA")和遠程直接存儲器存取("RDMA") 中的一個在控制請求中識別的主機和共享設(shè)備之間轉(zhuǎn)移數(shù)據(jù)。在又一種實施 方式中,該裝置包括典型地在命令代理總線上執(zhí)行的標準設(shè)備;f莫擬模塊。該
10標準設(shè)備模擬模塊在給一個或多個主機裝載對于該設(shè)備操作來說特定的代碼 之前將通到一個或多個主機的設(shè)備模擬成附著到系統(tǒng)總線上的標準設(shè)備。在 又一種實施方式中,用于標準設(shè)備的標準設(shè)備模擬模塊支持I/O虛擬化。
在裝置的 一 種實施方式中,該系統(tǒng)總線包括具有非透明端口的系統(tǒng)總線 切換。在主機上執(zhí)行的第一初始化進程至少發(fā)現(xiàn)對該主機的所述命令代理主 機且不能發(fā)現(xiàn)該共享設(shè)備。所發(fā)現(xiàn)的命令代理主機作為第一初始化進程的結(jié) 果被識別是用來與至少執(zhí)行該第 一初始化進程的主機通信。在又一種實施方 式中,在命令代理主機上執(zhí)行的第二初始化進程發(fā)現(xiàn)至少對所述命令代理主 機的所述共享設(shè)備,而且作為初始化進程的結(jié)果該共享設(shè)備被識別是用來與 至少該命令代理主機通信。
在裝置的一種替代實施方式中,該裝置可以包括共享設(shè)備控制請求接收 器模塊和控制請求響應(yīng)模塊。典型的是該共享設(shè)備控制請求接收器模塊在該 共享設(shè)備上執(zhí)行并且從指定為命令代理主機的主機接收控制請求。命令代理 主才幾是兩個或更多個主機中的一個,而且兩個或兩個以上主機中的每一個都 4丸行獨立于其他主才幾和共享i殳備的才喿作系統(tǒng)。這兩個或兩個以上的主才幾和共 享設(shè)備通過系統(tǒng)總線連接。命令代理主機發(fā)送控制請求作為對從請求主機接 收代理請求的響應(yīng),而且請求主機是兩個或更多個主機中的一個。典型的是 控制請求響應(yīng)模塊在共享設(shè)備上執(zhí)行并且配置該共享設(shè)備用于在請求主機和 共享設(shè)備之間的數(shù)據(jù)轉(zhuǎn)移。該控制請求大體上無數(shù)據(jù)轉(zhuǎn)移的數(shù)據(jù),而且數(shù)據(jù) 轉(zhuǎn)移獨立于命令代理主機而執(zhí)行。
在一種實施方式中,中斷發(fā)送^t塊向命令代理主機發(fā)送中斷。該中斷可 以包括共享設(shè)備之一有要向主機發(fā)送的數(shù)據(jù)或共享設(shè)備有已轉(zhuǎn)移給主機的數(shù) 據(jù)。典型的是這些信息對主機來說足以繼續(xù)該接收數(shù)據(jù)的進程。命令代理主 機向主機發(fā)送這些信息。
在裝置的另 一種替代實施方式中,該裝置可以包括代理請求發(fā)送器模塊 和主機數(shù)據(jù)發(fā)送器模塊。代理請求發(fā)送器模塊從請求主機向指定的命令代理 主機發(fā)送代理請求。請求主機和命令代理主機每一個都可以是連接到系統(tǒng)總 線上的兩個或兩個以上主機之一或共享設(shè)備。這兩個或兩個以上主才幾中每一 個都獨立于其他主機和共享設(shè)備來執(zhí)行操作系統(tǒng),而且該代理請求包括由該 共享設(shè)備執(zhí)行的控制請求。該命令代理主機將控制請求發(fā)送給共享設(shè)備,而
11且該控制請求足以配置該共享設(shè)備用于在共享設(shè)備和發(fā)送代理請求的請求主 機之間的數(shù)據(jù)轉(zhuǎn)移??刂普埱蠡旧蠜]有要在請求主機和共享設(shè)備之間轉(zhuǎn)移 的數(shù)據(jù)。典型的是主機數(shù)據(jù)發(fā)送器模塊在請求主機上執(zhí)行并啟動請求主機和 共享設(shè)備之間的數(shù)據(jù)轉(zhuǎn)移。該轉(zhuǎn)移獨立于命令代理主機而執(zhí)行。
在一種實施方式中,該裝置可以包括主機中斷接收器模塊和主機數(shù)據(jù)接 收器模塊。典型的是主機中斷接收器模塊在主機上執(zhí)行并且從命令代理主機
接收如下信息共享設(shè)備具有要向主機發(fā)送的數(shù)據(jù)或已經(jīng)將數(shù)據(jù)發(fā)送給主機。 這些信息可以源于命令代理主機從共享設(shè)備接收的中斷。主機數(shù)據(jù)接收器模 塊繼續(xù)接收數(shù)據(jù)傳輸?shù)倪M程,而且數(shù)據(jù)傳輸獨立于命令代理主機執(zhí)行。
還提出一種本發(fā)明的系統(tǒng)。該系統(tǒng)基本上包括上面就該裝置描述的模塊 和實施方式。在一種實施方式中,該系統(tǒng)包括系統(tǒng)總線、連接到該系統(tǒng)總線 上的共享設(shè)備、以及連接到該系統(tǒng)總線上的兩個或兩個以上的主機。兩個或
兩個以上的主機中每一個都執(zhí)行獨立于其他主機和共享設(shè)備的操作系統(tǒng),而 且這兩個或兩個以上的主機中有一個是指定的命令代理主機。該系統(tǒng)還可以 包括代理請求接收器模塊和代理請求命令模塊。代理請求接收器模塊可以在 該命令代理主機上執(zhí)行。該代理接收器模塊接收來自請求主機的代理請求, 而且該代理請求足以配置共享設(shè)備以用于在發(fā)送代理請求的請求主機和共享 設(shè)備之間的數(shù)據(jù)轉(zhuǎn)移。該數(shù)據(jù)轉(zhuǎn)移獨立于命令代理主機執(zhí)行,而且該控制請 求可以大體上沒有要在請求主機和共享設(shè)備之間轉(zhuǎn)移的數(shù)據(jù)。代理請求命令 模塊可以在命令代理主機上執(zhí)行而且向共享設(shè)備發(fā)送控制請求,以作為對代 理請求接收器模塊接收控制請求的響應(yīng)。
還提出一種本發(fā)明的方法用于多個主機之間共享設(shè)備。在公開的實施方 式中該方法基本上包括執(zhí)行上面對于所述裝置和系統(tǒng)的操作提出的功能必需 的步驟。在一種實施方式中,該方法包括接收來自請求主機的代理請求并且 向共享設(shè)備發(fā)送控制請求作為對代理請求接收器模塊接收控制請求的響應(yīng)。 該請求主機可以是兩個或兩個以上主機中的一個,而且兩個或兩個以上主機 中每一個都可以獨立于其他主機和共享設(shè)備執(zhí)行操作系統(tǒng)。兩個或更多個主 機中的一個被指定為命令代理主機,而且這兩個或兩個以上的主機和共享設(shè) 備通過系統(tǒng)總線連接。該代理請求可以包括要由共享設(shè)備執(zhí)行的控制請求。 典型的是該控制請求足以配置該共享設(shè)備用于發(fā)送代理請求的請求主機和共享設(shè)備之間的數(shù)據(jù)轉(zhuǎn)移。該數(shù)據(jù)轉(zhuǎn)移獨立于命令代理主機而執(zhí)行,而且該控 制請求可以大體上沒有要在請求主機和共享設(shè)備之間轉(zhuǎn)移的數(shù)據(jù)。
在一種替代實施方式中,該方法可以包括從指定為命令代理主機的主機 接收控制請求并且配置共享設(shè)備用于請求主機和共享設(shè)備之間的數(shù)據(jù)轉(zhuǎn)移。
理主一幾而執(zhí)4亍。
在又一種實施方式中,該方法可以包括從請求主;^幾向指定的命令代理主 機發(fā)送代理請求并且啟動請求主機和共享設(shè)備之間的數(shù)據(jù)轉(zhuǎn)移,該轉(zhuǎn)移獨立 于命令代理主機而執(zhí)行。在這樣一種實施方式中,請求主機和命令代理主機 可以每一個都是連接到系統(tǒng)總線上的兩個或兩個以上主機中的 一個或共享設(shè) 備。這兩個或兩個以上主機中每一個都獨立于其他主機和共享設(shè)備來執(zhí)行操 作系統(tǒng),而且該代理請求包括要由共享設(shè)備執(zhí)行的控制請求。命令代理主機 向共享設(shè)備發(fā)送控制請求,而且該控制請求足以配置共享設(shè)備以用于共享設(shè) 備和發(fā)送代理請求的請求主機之間的數(shù)據(jù)轉(zhuǎn)移。該控制請求可以大體上沒有 要在請求主機和共享設(shè)備之間轉(zhuǎn)移的數(shù)據(jù)。
本說明書全文所提到的特征、優(yōu)點或者類似措辭并不意味著可在本發(fā)明 包含在本發(fā)明的任一單獨的實施方式中的情況下實現(xiàn)所有的特征和優(yōu)點。當
然,涉及特征和優(yōu)點的措辭被理解為意味著與實施方式一起描述的特定的 特征、優(yōu)點或者特點包括在本發(fā)明的至少一種實施方式中。因此,在本說明 書全文中,關(guān)于特征、優(yōu)點和類似措辭的討論可(但未必)涉及同一實施方 式。
此外,描述的本發(fā)明的特征、優(yōu)點和特點可釆用任何合適的方式與一個 或多個實施方式結(jié)合。相關(guān)領(lǐng)域的技術(shù)人員可意識到本發(fā)明可在不具備特定 實施方式的一個或多個具體特征或優(yōu)點的情況下被實施。在其他例子中,可 意識到附加特征和優(yōu)點出現(xiàn)在某些實施方式中,而不是在本發(fā)明的所有實施 方式中都出現(xiàn)。
通過下面的說明和附加的權(quán)利要求,本發(fā)明的這些特征和優(yōu)點將變得更 加充分的顯而易見,或者可以通過按下文所闡述的實施本發(fā)明的方法而獲悉。


為了使本發(fā)明的優(yōu)點更加容易理解,會參考附圖中示出的特定實施方式 給出上面簡要描述的本發(fā)明的更具體的說明。在理解到這些附圖僅描述了本 發(fā)明的一般實施方式并且并不因此認為本發(fā)明限于此范圍的情況下,將通過
使用附圖并結(jié)合更多的具體特征和細節(jié)描述和解釋本發(fā)明,附圖中
圖1A是示意性框圖,示出了根據(jù)本發(fā)明的用于固態(tài)存儲設(shè)備內(nèi)的數(shù)據(jù)管 理的系統(tǒng)的 一 種實施方式;
圖1B是示意性框圖,示出了根據(jù)本發(fā)明的用于存儲設(shè)備內(nèi)的對象管理的 系統(tǒng)的一種實施方式;
圖1C是示意性框圖,示出了根據(jù)本發(fā)明的用于服務(wù)器內(nèi)存儲區(qū)域網(wǎng)的系 統(tǒng)的一種實施方式;
圖2A是示意性框圖,示出了根據(jù)本發(fā)明的用于存儲設(shè)備內(nèi)的對象管理的 裝置的一種實施方式;
圖2B是示意性框圖,示出了根據(jù)本發(fā)明的位于固態(tài)存儲設(shè)備內(nèi)的固態(tài)存 儲設(shè)備控制器的 一種實施方式;
圖3是示出了根據(jù)本發(fā)明的位于固態(tài)存儲設(shè)備內(nèi)的固態(tài)存儲設(shè)備控制器 的一種實施方式的示意性框圖,該固態(tài)存儲設(shè)備控制器具有寫入數(shù)據(jù)管道和 讀取數(shù)據(jù)管道;
圖4A是示意性框圖,示出了根據(jù)本發(fā)明的在固態(tài)存儲控制器內(nèi)的存儲體 交錯控制器的 一 種實施方式;
圖4B是示意性框圖,示出了根據(jù)本發(fā)明的在固態(tài)存儲控制器內(nèi)的存儲體 交錯控制器的 一個替代實施方式;
圖5A是示意性流程圖,示出了根據(jù)本發(fā)明使用數(shù)據(jù)管道管理固態(tài)存儲設(shè) 備內(nèi)的數(shù)據(jù)的方法的一種實施方式;
圖5B是示意性流程圖,示出了根據(jù)本發(fā)明的用于服務(wù)器內(nèi)SAN的方法 的一種實施方式;
圖6是示意性流程圖,示出根據(jù)本發(fā)明使用數(shù)據(jù)管道管理固態(tài)存儲設(shè)備 內(nèi)的數(shù)據(jù)的方法的另一種實施方式;
圖7是示意性流程圖,示出根據(jù)本發(fā)明使用存儲體交錯來管理固態(tài)存儲 設(shè)備內(nèi)的數(shù)據(jù)的方法的另一種實施方式;
14圖8是示意性框圖,示出根據(jù)本發(fā)明的用于固態(tài)存儲設(shè)備中垃圾收集的
裝置的一種實施方式;
圖9是示意性流程圖,示出根據(jù)本發(fā)明的用于固態(tài)存儲設(shè)備中垃圾收集 的方法的一種實施方式;
圖10是示意性框圖,示出根據(jù)本發(fā)明的系統(tǒng)的一種實施方式,該系統(tǒng)用 于在多個主機之間共享的設(shè)備;
圖ll是示意性框圖,示出根據(jù)本發(fā)明的命令代理主機中的一個裝置的一 種實施方式,該裝置用于在多個主機之間共享的設(shè)備;
圖12是示意性框圖,示出根據(jù)本發(fā)明的共享設(shè)備中的一個裝置的一種實 施方式,該裝置用于在多個主機之間共享的設(shè)備;
圖13是示意性框圖,示出根據(jù)本發(fā)明的請求主機中的一個裝置的一種實 施方式,該裝置用于在多個主機之間共享的設(shè)備;
圖14是示意性流程圖,示出根據(jù)本發(fā)明的方法的第一實施方式,該方法 用于在多個主機之間共享的設(shè)備;
圖15是示意性流程圖,示出根據(jù)本發(fā)明的方法的第二實施方式,該方法 用于在多個主機之間共享的設(shè)備;以及
圖16是示意性流程圖,示出根據(jù)本發(fā)明的方法的第三實施方式,該方法 用于在多個主機之間共享的設(shè)備。
具體實施例方式
為了更顯著地強調(diào)功能性單元運行的獨立性,在本說明書中描述的許多 功能性單元已被標示為模塊。例如,模塊可作為硬件電路來實施,所述硬件 電路包括自定義VLSI電路、門陣列或成品半導(dǎo)體(例如邏輯芯片、晶體管或 其他分立元件)。;漠塊也可在可編程硬件i殳備(如現(xiàn)場可編程門陣列、可編程 陣列邏輯、可編程邏輯設(shè)備或類似設(shè)備)內(nèi)實施。
模塊還可在由不同類型的處理器運行的軟件中實施。例如,可執(zhí)行代碼 的識別模塊可以包括一個或多個計算機指令物理塊或邏輯塊,該計算機指令 被作為對象、程序或函數(shù)來組織。然而,識別模塊的可執(zhí)行文件不必在物理 上位于一起,但是可包括存儲在不同位置的不同命令,當這些命令在邏輯上 連接在一起時,所述命令包括所述模塊并實現(xiàn)所述模塊的指定目標。
15當然,可執(zhí)行代碼的^^莫塊可以為一個或許多指令,并且甚至可以分布在 若千不同的代碼段中、分布在不同的程序中并可分布在多個存儲設(shè)備中。類 似地,可以在此在模塊內(nèi)識別并示出運算數(shù)據(jù),并且可以以任何合適的形式 體現(xiàn)所述運算數(shù)據(jù)并在任意合適類型的數(shù)據(jù)結(jié)構(gòu)中組織所迷運算數(shù)據(jù)。所述 運算數(shù)據(jù)可作為單數(shù)據(jù)集收集,或者可以分布在不同的位置(包括不同的存 儲設(shè)備),并且可在系統(tǒng)或網(wǎng)絡(luò)中至少部分地僅作為電信號存在。當模塊或模 塊的部分在軟件中實施時,軟件部分被存儲在一個或多個計算機可讀媒體上。
本說明書全文所提到的"一種實施方式"、"實施方式"或類似的措辭意味著 與實施方式一起描述的特定的特征、結(jié)構(gòu)或特點包括在本發(fā)明的至少一種實 施方式中。因此,在本說明書全文中,短語"在一種實施方式中"、"在實施方 式中"及類似措辭的出現(xiàn)可(但未必)涉及同一實施方式。
提及信號承載媒介可采取任何能夠生成信號、導(dǎo)致信號生成或者導(dǎo)致在 數(shù)字處理設(shè)備上執(zhí)行機器可讀命令程序的形式。信號承載媒介可通過下述設(shè)
備體現(xiàn)傳輸線、光盤、數(shù)字視頻光盤、磁帶、伯努利驅(qū)動器、磁盤、穿孔 卡、閃存、集成電路或其他數(shù)字處理裝置存儲設(shè)備。
此外,描述的本發(fā)明的特征、結(jié)構(gòu)或特點可以以任何合適的方式合并在 一種或多種實施方式中。在下文的說明中,提供了大量的具體細節(jié)以全面理 解本發(fā)明的實施方式,所述具體細節(jié)比如編程、軟件^t塊、用戶選擇、網(wǎng)絡(luò) 事務(wù)、數(shù)據(jù)庫查詢、數(shù)據(jù)庫結(jié)構(gòu)、硬件模塊、硬件電路、硬件芯片等等的實 例。然而,相關(guān)技術(shù)領(lǐng)域的技術(shù)人員可認識到本發(fā)明可在不具備一個或多 個具體實施方式
的具體細節(jié)的情況下被實施,或者本發(fā)明可結(jié)合其他方法、 組件、材料等實施。在其他例子中,并沒有顯示或描迷公知的結(jié)構(gòu)、材料或 操作以使本發(fā)明變得清晰。
此處包括的示意性流程圖大體上是作為邏輯流程圖來列舉的。就這點而 言,描述的順序和標記的步驟是本方法的一種實施方式的指示性說明??稍O(shè) 想其他在功能上、邏輯上或效果上與圖示方法的一個或多個步驟(或其中部 分)相同的步驟和方法。此外,使用的格式和符號被用于解釋方法的邏輯步 驟并^f皮理解為不限制本方法的范圍。盡管在流程圖中可使用不同的箭頭類型 和線條類型,但這些箭頭類型和線條類型被理解為不限制相應(yīng)方法的范圍。 的確, 一些箭頭或其他連接器可用于僅表示方法的邏輯流程。例如,箭頭可表示描述的方法的列舉的步驟之間的未指明間期的等待或監(jiān)測時期。此外,特定方法的步驟的順序可或可不嚴格依照所示的對應(yīng)步驟的順序。固態(tài)存儲系統(tǒng)
圖1A是示意性框圖,示出了根據(jù)本發(fā)明的用于固態(tài)存儲設(shè)備內(nèi)的數(shù)據(jù)管理的系統(tǒng)100的一種實施方式。系統(tǒng)100包括固態(tài)存儲設(shè)備102、固態(tài)存儲控制器104、寫入數(shù)據(jù)管道106、讀取數(shù)據(jù)管道108、固態(tài)存儲器IIO、計算機112、客戶端114和計算機網(wǎng)絡(luò)116,這些裝置描述如下。
系統(tǒng)100包括至少一個固態(tài)存儲設(shè)備102。在另一種實施方式中,系統(tǒng)100包括兩個或更多個固態(tài)存儲設(shè)備102,每個固態(tài)存儲設(shè)備102可包括非易失性的、固態(tài)的存儲器IIO,所述非易失性的、固態(tài)的存儲器例如納米隨機存取存儲器("納米RAM"或者"NRAM")、磁電阻式RAM ("MRAM")、動態(tài)RAM ("DRAM")、相變RAM ("PRAM")閃存等等。結(jié)合圖2和圖3更詳細地描述了固態(tài)存儲設(shè)備102。固態(tài)存儲設(shè)備102被描述成位于通過計算機網(wǎng)絡(luò)116與客戶端114相連的計算機112內(nèi)。在一種實施方式中,固態(tài)存儲設(shè)備102位于計算機112內(nèi)部并且采用系統(tǒng)總線連接,所述系統(tǒng)總線例如快速外圍組件互連("PCI-e")總線、串行高級技術(shù)附件("串行ATA,,)總線或類似總線。在另一種實施方式吧,固態(tài)存儲設(shè)備102位于計算機112外部,并且通過通用串行總線("USB")、電氣與電子工程師協(xié)會("正EE") 1394總線("火線")或類似總線連接。在其他實施方式中,固態(tài)存儲設(shè)備102采用下述方式與計算機112相連接外圍組件互連("PCI") express總線、外部電或光總線擴展或者總線網(wǎng)絡(luò)解決方案,所述總線網(wǎng)絡(luò)解決方案例如無限帶寬或快速PCI高級交換("PCIe-AS,,)或類似技術(shù)。
在不同的實施方式中,固態(tài)存儲設(shè)備102可以是雙列直插式內(nèi)存模塊("DIMM")、子卡或微型模塊的形式。在另一種實施方式中,固態(tài)存儲設(shè)備102是位于機架式刀片內(nèi)的元件。在另一種實施方式中,固態(tài)存儲設(shè)備102包含在直接集成到高級集成裝置(如主板、筆記本電腦、圖形處理器)的封裝內(nèi)。在另一種實施方式中,包括固態(tài)存儲設(shè)備102的單獨元件直接集成到高級集成裝置上而不經(jīng)過中間封裝。
固態(tài)存儲設(shè)備102包括一個或多個固態(tài)存儲控制器104,每個固態(tài)存儲控制器104可包括寫入數(shù)據(jù)管道106和讀取數(shù)據(jù)管道108,而且,每個固態(tài)存儲
17控制器104還包括固態(tài)存儲器110,這將在下文中結(jié)合圖2和圖3詳細說明。系統(tǒng)100包括一臺或多臺連接到固態(tài)存儲設(shè)備102的計算機112。計算機112可以是主機、服務(wù)器、存儲區(qū)域網(wǎng)絡(luò)("SAN")的存儲控制器、工作站、個人計算機、筆記本電腦、手持式計算機、超級計算機、計算機集群、網(wǎng)絡(luò)交換機、路由器或設(shè)備、數(shù)據(jù)庫或存儲設(shè)備、數(shù)據(jù)采集或數(shù)據(jù)釆集系統(tǒng)、診斷系統(tǒng)、測試系統(tǒng)、機器人、便攜式電子設(shè)備、無線設(shè)備或類似設(shè)備。在另一種實施方式中,計算機112可以是客戶端,并且固態(tài)存儲設(shè)備102自主運行以應(yīng)答發(fā)送自計算機112的數(shù)據(jù)請求。在這種實施方式中,計算機112和固態(tài)存儲設(shè)備102可采用下列方式連接計算機網(wǎng)絡(luò)、系統(tǒng)總線或其他適于在計算機112和自主固態(tài)存儲設(shè)備102之間連接的通信手段。
在一種實施方式中,系統(tǒng)100包括一個或多個客戶端114,所述一個或多個客戶端114通過一個或多個計算機網(wǎng)絡(luò)116連接到一臺或多臺計算機112??蛻舳?14可以是主機、服務(wù)器、SAN的存儲控制器、工作站、個人計算機、筆記本電腦、手持式計算機、超級計算機、計算機集群、網(wǎng)絡(luò)交換機、路由器或設(shè)備、數(shù)據(jù)庫或存儲設(shè)備、數(shù)據(jù)采集或數(shù)據(jù)采集系統(tǒng)、診斷系統(tǒng)、測試系統(tǒng)、機器人、便攜式電子設(shè)備、無線設(shè)備或類似設(shè)備。計算機網(wǎng)絡(luò)116可包括因特網(wǎng)、廣域網(wǎng)("WAN")、城域網(wǎng)("MAN")、局域網(wǎng)("LAN")、令牌環(huán)網(wǎng)、無線網(wǎng)絡(luò)、光纖通道網(wǎng)絡(luò)、SAN、網(wǎng)絡(luò)附屬存儲("NAS")、 ESCON或類似網(wǎng)絡(luò)、或者是網(wǎng)絡(luò)的任意組合。計算機網(wǎng)絡(luò)116還可包括來自IEEE802系列網(wǎng)絡(luò)技術(shù)中的網(wǎng)絡(luò),如以太網(wǎng)、令牌環(huán)網(wǎng)、WiFi、 WiMax及類似網(wǎng)絡(luò)。
計算機網(wǎng)絡(luò)116可包括服務(wù)器、交換機、路由器、電纜、無線電和其他用于促進計算機112和客戶端114的網(wǎng)絡(luò)連接的設(shè)備。在一種實施方式中,系統(tǒng)100包括通過計算機網(wǎng)絡(luò)116進行對等通信的多臺計算機112。在另一種實施方式中,系統(tǒng)100包括通過計算機網(wǎng)絡(luò)116進行對等通信的多個固態(tài)存儲設(shè)備102。本領(lǐng)域技術(shù)人員可認識到其他計算機網(wǎng)絡(luò)116可包括一個或多個計算機網(wǎng)絡(luò)116以及相關(guān)設(shè)備,所述相關(guān)設(shè)備具有一個或多個客戶端114、其他計算機或與一臺或多臺計算機112相連的一個或多個固態(tài)存儲設(shè)備102之間的單個或冗余連接,所述其他計算機具有一個或多個固態(tài)存儲設(shè)備102。在一種實施方式中,系統(tǒng)100包括兩個或更多個通過計算機網(wǎng)絡(luò)118連接到客戶端116的固態(tài)存儲設(shè)備102,而不包括計算機112。存儲控制器管理的對象
圖1B是示意性框圖,示出了根據(jù)本發(fā)明的用于存儲"i殳備內(nèi)的對象管理的系統(tǒng)101的一種實施方式。系統(tǒng)101包括一個或多個存儲設(shè)備150 (每一個存儲設(shè)備150都具有存儲控制器152和一個或多個數(shù)據(jù)存儲設(shè)備154 )和一個或多個請求設(shè)備155。存儲設(shè)備152聯(lián)網(wǎng)在一起并與一個或多個請求設(shè)備155連接。請求設(shè)備155將對象請求發(fā)給存儲設(shè)備150a。對象請求可以是創(chuàng)建對象的請求、向?qū)ο髮懭霐?shù)據(jù)的請求、從對象讀取數(shù)據(jù)的請求、刪除對象的請求、檢查對象的請求、復(fù)制對象的請求及類似請求。本領(lǐng)域技術(shù)人員會認識到其他對象請求。
在一種實施方式中,存儲控制器152和數(shù)據(jù)存儲設(shè)備154是分離的設(shè)備。在另一種實施方式中,存儲控制器152和數(shù)據(jù)存儲設(shè)備154集成到一個存儲設(shè)備]50上。在另一種實施方式中,數(shù)據(jù)存儲設(shè)備154為固態(tài)存儲器110,而存儲控制器為固態(tài)存儲設(shè)備控制器202。在其他實施方式中,數(shù)據(jù)存儲設(shè)備154可以為硬盤驅(qū)動器、光驅(qū)動器、磁帶存儲器或類似存儲設(shè)備。在另一種實施方式中,存儲設(shè)備150可包括兩個或更多個不同類型的數(shù)據(jù)存儲設(shè)備154。
在一種實施方式中,數(shù)據(jù)存儲設(shè)備154為固態(tài)存儲器110,并且被布置為固態(tài)存儲元件216、 218、 220的陣列。在另一種實施方式中,固態(tài)存儲器IIO被布置在兩個或更多個內(nèi)存庫(bank) 214a-n內(nèi)。下文結(jié)合圖2B更詳細地描述了固態(tài)存儲器110。
存儲設(shè)備150a-n可聯(lián)網(wǎng)在一起并且可作為分布式存儲設(shè)備運行。與請求設(shè)備155連接的存儲設(shè)備150a控制發(fā)送到所述分布式存儲設(shè)備的對象請求。在一種實施方式中,存儲設(shè)備150和關(guān)聯(lián)的存儲控制器152管理對象并對請求設(shè)備155來說表現(xiàn)為分布式對象文件系統(tǒng)。在這種情況下, 一類分布式對象文件系統(tǒng)的實例是并行對象文件系統(tǒng)。在另一種實施方式中,存儲設(shè)備150和關(guān)聯(lián)的存儲控制器152管理對象并對請求設(shè)備155來說表現(xiàn)為分布式對象文件服務(wù)器。在這種情況下, 一類分布式對象文件服務(wù)器的實例是并行對象文件服務(wù)器。在這些和其他實施方式中,請求設(shè)備155可只管理對象或者與存儲設(shè)備150結(jié)合而參與管理對象,這通常并不將存儲設(shè)備150的功能限制在為其他客戶端114充分管理對象的范圍內(nèi)。在退化情況下,每個分布式存儲設(shè)備、分布式對象文件系統(tǒng)和分布式對象文件服務(wù)器能作為單個設(shè)備獨立
19運行。聯(lián)網(wǎng)的存儲設(shè)備150a-n可作為分布式存儲設(shè)備、分布式對象文件系統(tǒng)、 分布式對象文件服務(wù)器和它們的任意組合運行,所述組合具有一個或多個為 一個或多個請求設(shè)備155配置的這些功能。例如,存儲設(shè)備150可配置為 為第一請求設(shè)備155a作為分布式存儲設(shè)備運行,而請求設(shè)備155b作為分布 式存儲設(shè)備和分布式對象文件系統(tǒng)為運行。當系統(tǒng)101包括一個存儲設(shè)備150a 時,存儲設(shè)備150a的存儲控制器152a管理對象并對請求設(shè)備155來說表現(xiàn)為 對象文件系統(tǒng)或?qū)ο笪募?wù)器。
在一種實施方式中,其中,存儲設(shè)備150作為分布式存儲設(shè)備聯(lián)網(wǎng)在一 起,存儲設(shè)備150充當由一個或多個分布式存儲控制器152管理的獨立驅(qū)動 器冗余陣列("RAID")。例如,寫入對象數(shù)據(jù)段的請求導(dǎo)致所述數(shù)據(jù)段根據(jù) RAID級別在數(shù)據(jù)存儲設(shè)備154a-n中被條帶化為具有奇偶校驗條帶的條帶。 這種布置的一個好處是這種對象管理系統(tǒng)可在單獨的存儲設(shè)備150(無論是存 儲控制器152、數(shù)據(jù)存儲設(shè)備154或存儲設(shè)備150的其他組件)出現(xiàn)故障時繼 續(xù)使用。
當冗余網(wǎng)絡(luò)用于互連存儲設(shè)備150和請求設(shè)備155時,所述對象管理系 統(tǒng)可在出現(xiàn)網(wǎng)絡(luò)故障的情況下(只要網(wǎng)絡(luò)中的一個仍在運行)繼續(xù)使用。具 有一個存儲設(shè)備150a的系統(tǒng)101還可包括多個數(shù)據(jù)存儲設(shè)備154a,而存儲設(shè) 備150a的存儲控制器152a可作為RAID控制器運行并在存儲設(shè)備150a的數(shù) 據(jù)存儲設(shè)備154a間分割數(shù)據(jù)段,存儲設(shè)備150a的存儲控制器152a可包括根 據(jù)RAID級別的奇偶校驗條帶。
在一種實施方式中,其中, 一個或多個存儲設(shè)備150a-n是具有固態(tài)存儲 設(shè)備控制器202和固態(tài)存儲器110的固態(tài)存儲設(shè)備102,固態(tài)存儲設(shè)備102可 配置為DIMM配置、子卡、微型模塊等,并保留在計算機112內(nèi)。計算機112 可以是服務(wù)器或具有固態(tài)存儲設(shè)備102的類似設(shè)備,固態(tài)存儲設(shè)備102聯(lián)網(wǎng) 在一起并作為分布式RAID控制器運行。有利地是,存儲設(shè)備102可采用PCI-e、 PCIe-AS、無限帶寬或其他高性能總線、交換總線、網(wǎng)絡(luò)總線或網(wǎng)絡(luò)連接,并 且可提供極致密型、高性能的RAID存儲系統(tǒng),在該系統(tǒng)中,單獨的或分布 式固態(tài)存儲控制器202自主地在固態(tài)存儲器110a-n間條帶化數(shù)據(jù)段。
在一種實施方式中,請求設(shè)備155用于與存儲設(shè)備150通信的同一網(wǎng)絡(luò) 可被對等存儲設(shè)備150a使用,以與對等存儲設(shè)備150b-n通信以實現(xiàn)RAID功能。在另一種實施方式中,可為了 RAID的目的而在存儲設(shè)備150間使用單 獨的網(wǎng)絡(luò)。在另一種實施方式中,請求設(shè)備155可通過向存儲設(shè)備150發(fā)送 冗余請求而參與RAID進程。例如,請求設(shè)備155可向第一存儲設(shè)備150a發(fā) 送第一對象寫入請求,而向第二存儲設(shè)備150b發(fā)送具有相同數(shù)據(jù)段的第二對 象寫入請求以實現(xiàn)簡單的鏡像。
當具有在存儲設(shè)備102內(nèi)進行對象處理的能力時,只有存儲控制器152 具有采用 一個RAID級別存儲一個數(shù)據(jù)段或?qū)ο蟮哪芰?,而采用不同的RAID 級別或不采用RAID條帶化來存儲另 一數(shù)據(jù)段或?qū)ο?。這些多個RAID群組可 與存儲設(shè)備150內(nèi)的多個分區(qū)相關(guān)聯(lián)??赏瑫r在各種RAID群組間支持 RAIDO、 RAIDl 、 RAID5、 RAID6和復(fù)合RAID類型10、 50、 60,所述RAID 群組包括數(shù)據(jù)存儲設(shè)備154a-n。本領(lǐng)域技術(shù)人員可認識到還可同時支持的其 他RATD類型和配置。
而且,由于存儲控制器152像RAID控制器一樣自主運行,所述RAID控 制器能夠執(zhí)行漸進式RAID并能夠?qū)⒃跀?shù)據(jù)存儲設(shè)備154間條帶化的具有一 個RAID級別的對象或?qū)ο蟮哪承┎糠洲D(zhuǎn)換為另一 RAID級別,轉(zhuǎn)換時請求設(shè) 備155不受影響、不參與或者甚至不探測RAID級別的變化。在優(yōu)選實施方 式中,促進RAID配置從一個級別變?yōu)榱硪患墑e可在對象或甚至在包基上自 主實現(xiàn),并且可由運行在存儲設(shè)備150或存儲控制器152中的一個上的分布 式RAID控制模塊初始化。通常,RAID漸進是從高性能和低效率的存儲配置 (如RAIDl )轉(zhuǎn)換為低性能和高存儲效率的存儲配置(如RAID5 ),其中,轉(zhuǎn) 換l基于讀取頻率纟皮動態(tài)地初始化。但是,可以發(fā)現(xiàn),從RAID5到RAIDl 的漸進也是可能的。可配置其他用于初始化RAID漸進的進程,或者可由客 戶端或外部代理(如存儲系統(tǒng)管理服務(wù)器請求)請求該進程。本領(lǐng)域技術(shù)人 員可認識到具有存儲控制器152的存儲設(shè)備102的其他特征和優(yōu)點,該存儲 控制器152自主管理對象。
具有服務(wù)器內(nèi)SAN的固態(tài)存儲設(shè)備
圖1C是示意性框圖,示出了根據(jù)本發(fā)明的用于服務(wù)器內(nèi)存儲區(qū)域網(wǎng)絡(luò) ("SAN")的系統(tǒng)103的一種實施方式。系統(tǒng)103包括計算機112,計算機 112通常被配置為服務(wù)器("服務(wù)器112")。每個服務(wù)器112包括一個或多存儲 設(shè)備150,其中,服務(wù)器112和存儲設(shè)備150分別連接到共享網(wǎng)絡(luò)接口 155。
21每個存儲設(shè)備150包括存儲控制器152和相應(yīng)的數(shù)據(jù)存儲設(shè)備154。系統(tǒng)103 包括客戶端114、 114a、 114b,客戶端114、 114a、 114b位于服務(wù)器112的內(nèi) 部或者外部??蛻舳?14、 114a、 114b可通過一個或多個計算機網(wǎng)絡(luò)116與每 個服務(wù)器112和每個存儲設(shè)備150通信,所述一個或多個計算機網(wǎng)絡(luò)116大 體上與上述的計算機網(wǎng)絡(luò)類似。
存儲設(shè)備150包括DAS模塊158、 NAS模塊160、存儲通信模塊162、 服務(wù)器內(nèi)SAN模塊164、通用接口模塊166、網(wǎng)絡(luò)代理模塊170、虛擬總線模 塊172、前端RAID模塊174及后端RAID模塊176,這些模塊將在下文中描 述。模塊158-176圖示為位于存儲設(shè)備150內(nèi),模塊158-176中的每一個的全 部或部分可位于存儲設(shè)備150、服務(wù)器112、存儲控制器152內(nèi)或位于其他位 置。
服務(wù)器112 (如與服務(wù)器內(nèi)SAN結(jié)合使用的)是具有服務(wù)器功能的計算 機。服務(wù)器112至少包括一項服務(wù)器功能(如文件服務(wù)器功能),而且還可包 括其他服務(wù)器功能。服務(wù)器112可以是服務(wù)器群的一部分并可服務(wù)其他客戶 端114。在其他實施方式中,服務(wù)器112還可以是個人計算機、工作站或其他 包括存儲設(shè)備150的計算機。服務(wù)器112可像訪問直接附加存儲("DAS,,)、 SAN附加存儲或者網(wǎng)絡(luò)附加存儲("NAS")那樣訪問服務(wù)器112內(nèi)的一個或 多個存儲設(shè)備150。參與服務(wù)器內(nèi)SAN或NAS的存儲控制器150可位于服務(wù) 器112的內(nèi)部或外部。
在一種實施方式中,服務(wù)器內(nèi)SAN裝置包括DAS模塊158,該DAS模 塊158將由服務(wù)器112的存儲控制器152控制的至少一個數(shù)據(jù)存儲設(shè)備154 的至少一部分配置為附屬于服務(wù)器112的DAS設(shè)備,以服務(wù)從至少一個客戶 端114傳送到服務(wù)器112的存儲請求。在一種實施方式中,第一數(shù)據(jù)存儲設(shè) 備154a被配置為第一服務(wù)器112a的DAS,而且,第一數(shù)據(jù)存儲設(shè)備154a還 被配置為第一服務(wù)器112a的服務(wù)器內(nèi)SAN存儲設(shè)備。在另一種實施方式中, 第一數(shù)據(jù)存儲設(shè)備154a被分割,以使得一個分區(qū)為DAS而另一個分區(qū)為服 務(wù)器內(nèi)SAN。在另一種實施方式中,第一數(shù)據(jù)存儲設(shè)備154a內(nèi)的存儲空間的 至少一部分被配置為第一服務(wù)器112a的DAS,而第一服務(wù)器112a的存儲空 間的同一部分被配置為第一服務(wù)器112a的服務(wù)器內(nèi)SAN。
在另一種實施方式中,服務(wù)器內(nèi)SAN裝置包括NAS模塊160,該NAS
22模塊160將存儲控制器152配置為用于至少一個客戶端114的NAS設(shè)備并服 務(wù)來自客戶端114的文件請求。存儲控制器152還可被配置為用于笫一服務(wù) 器112a的服務(wù)器內(nèi)SAN設(shè)備。存儲設(shè)備150可通過共享網(wǎng)絡(luò)接口 155直接 連接到計算機網(wǎng)絡(luò)116,共享網(wǎng)絡(luò)接口 155獨立于存儲設(shè)備150位于其內(nèi)的服 務(wù)器112。
在一種基本的形式中,用于服務(wù)器內(nèi)SAN的裝置包括第一服務(wù)器112a 內(nèi)的第一存儲控制器152a,其中,第一存儲控制器152a控制至少一個存儲設(shè) 備154a。第一服務(wù)器112a包括由第一服務(wù)器112a和第一存儲控制器152a共 享的網(wǎng)絡(luò)接口 156,所述服務(wù)器內(nèi)SAN裝置包括存儲通信;漠塊162,該存儲 通信才莫塊162促進第一存儲控制器152a和位于第一服務(wù)器112a外部的至少一 個設(shè)備之間的通信,以使得第一存儲控制器152a和外部設(shè)備之間的所述通信 獨立于第一服務(wù)器112a。存儲通信才莫塊162可允許第一存儲控制器152a獨立 地訪問網(wǎng)絡(luò)4妄口 156a以進行外部通信。在一種實施方式中,存儲通信才莫塊162 訪問網(wǎng)絡(luò)接口 156a中的交換機以管理第 一存儲控制器152a和外部設(shè)備之間的 網(wǎng)絡(luò)流量。
服務(wù)器內(nèi)SAN裝置還包括服務(wù)器內(nèi)SAN模塊164,該服務(wù)器內(nèi)SAN模 塊164利用網(wǎng)絡(luò)協(xié)議和總線協(xié)議中的一個或兩個服務(wù)存儲請求。服務(wù)器內(nèi)SAN 模塊164服務(wù)獨立于第一服務(wù)器112a的所述存儲請求,并且所述服務(wù)請求接 收自內(nèi)部或外部客戶端114a、 114。
在一種實施方式中,位于第一服務(wù)器112a外部的設(shè)備是第二存儲控制器 152b。第二存儲控制器152b控制至少一個數(shù)據(jù)存儲設(shè)備154b。服務(wù)器內(nèi)SAN 模塊164利用第一和第二存儲控制器152a、 152b之間、通過網(wǎng)絡(luò)接口 156a 的通信服務(wù)所述存儲請求,第一和第二存儲控制器152a、 152b獨立于第一服 務(wù)器112a。第二存儲控制器152b可位于第二服務(wù)器112b內(nèi)或位于一些其他 設(shè)備內(nèi)。
在另一種實施方式中,第一服務(wù)器112a外部的設(shè)備是客戶端114,并且 所述存儲請求源于外部客戶端114,其中,第一存儲控制器被配置為SAN的 至少一部分,并且服務(wù)器內(nèi)SAN模塊164通過獨立于第一服務(wù)器112a的網(wǎng) 絡(luò)接口 156a服務(wù)所述存儲請求。外部客戶端114可位于第二服務(wù)器112b內(nèi)或 可位于第二服務(wù)器112b的外部。在一種實施方式中,即使當?shù)谝环?wù)器112a不可用時,服務(wù)器內(nèi)SAN模塊164也能夠服務(wù)來自外部客戶端114的存儲請求。
在另一種實施方式中,生成所述存儲請求的客戶端114a位于第一服務(wù)器 112a的內(nèi)部,其中,第一存儲控制器152a^^皮配置為SAN的至少一部分,并 且服務(wù)器內(nèi)SAN模塊164通過一個或多個網(wǎng)絡(luò)接口 156a和系統(tǒng)總線服務(wù)所 述存儲請求。
傳統(tǒng)的SAN配置允許像按直接附加存儲("DAS")訪問服務(wù)器112內(nèi)的 存儲設(shè)備一樣訪問遠離服務(wù)器112的存儲設(shè)備,以使得遠離服務(wù)器112的所 述存儲設(shè)備表現(xiàn)為塊存儲設(shè)備。通常,按SAN連接的存儲設(shè)備需要SAN協(xié) 議,所述SAN協(xié)議例如光纖通道、互聯(lián)網(wǎng)小型計算機系統(tǒng)接口 ("iSCSI")、 HyperSCSI、光纖連通性("FICON")、通過以太網(wǎng)的高級技術(shù)附件("ATA") 等。服務(wù)器內(nèi)SAN包括服務(wù)器112內(nèi)的存儲控制器152,同時仍然允許存儲 控制器152a和遠程存儲控制器152b或外部客戶端之間利用網(wǎng)絡(luò)協(xié)議和/或總 線協(xié)議的網(wǎng)絡(luò)連接。
通常,SAN協(xié)議是網(wǎng)絡(luò)協(xié)議的形式,并且,出現(xiàn)了更多的網(wǎng)絡(luò)協(xié)議,例 如可允許存儲控制器150a和關(guān)聯(lián)的數(shù)據(jù)存儲設(shè)備154a被配置為SAN并與外 部外部客戶端114或第二存儲控制器152b通信的無限帶寬。在另 一種實例中, 第 一存儲控制器152a可利用以太網(wǎng)與外部客戶端114或第二存儲控制器152b 通信。
存儲控制器152可通過總線與內(nèi)部存儲控制器152或客戶端114a通信。 例如,存儲控制器152可通過使用PCI-e的總線通信,所述PCI-e可支持PCI 快速輸入/輸出虛擬化("PCIe-IOV")。其他新出現(xiàn)的總線協(xié)議允許系統(tǒng)總線擴 展超出計算機或服務(wù)器112并可允許存儲控制器152a被配置為SAN。 一種這 樣的總線協(xié)議是PCIe-AS。本發(fā)明并不僅限于SAN協(xié)議,還可利用新出現(xiàn)的 網(wǎng)絡(luò)和總線協(xié)議服務(wù)存儲請求。外部設(shè)備(無論是客戶端114的形式還是外 部存儲控制器152b的形式)可通過擴展系統(tǒng)總線或計算機網(wǎng)絡(luò)116通信。正 如此處所使用的,存儲請求包括寫入數(shù)據(jù)、讀取數(shù)據(jù)、擦除數(shù)據(jù)、查詢數(shù)據(jù) 的請求等等,并且所述存儲請求可包括對象數(shù)據(jù)、元數(shù)據(jù)、管理請求以及塊 數(shù)據(jù)請求。
傳統(tǒng)的服務(wù)器112通常具有控制訪問服務(wù)器112內(nèi)的設(shè)備的根聯(lián)合體。
24通常,服務(wù)器112的所迷根聯(lián)合體具有網(wǎng)絡(luò)接口 156,從而使得服務(wù)器112控 制任何通過網(wǎng)絡(luò)接口 156的通信。然而,在服務(wù)器內(nèi)SAN裝置的優(yōu)選實施方 式中,存儲控制器152能夠獨立地訪問網(wǎng)絡(luò)接口 156,從而使得客戶端114可 直接地與形成SAN的第一服務(wù)器內(nèi)112a內(nèi)的一個或多個存儲控制器152a通 信,或者使得一個或多個第一存儲控制器152a可與第二存儲控制器152b或 其他遠程存儲控制器152聯(lián)網(wǎng)在一起以形成SAN。在這種優(yōu)選實施方式中, 遠離第一服務(wù)器112a的設(shè)備可通過單獨的、共享的網(wǎng)絡(luò)地址訪問第一服務(wù)器 112a或第一存儲控制器152a。在一種實施方式中,服務(wù)器內(nèi)SAN裝置包括通 用接口模塊166,該通用接口模塊166配置網(wǎng)絡(luò)接口 156、存儲控制器152和 服務(wù)器112,以使得可使用共享網(wǎng)絡(luò)地址訪問服務(wù)器112和存儲控制器152。
在其他實施方式中,服務(wù)器112包括兩個或更多個網(wǎng)絡(luò)接口 156。例如, 服務(wù)器112可通過一個網(wǎng)絡(luò)接口 156通信,而存儲設(shè)備150可通過另一個接 口通信。在另一個實例中,服務(wù)器112包括多個存儲設(shè)備150,每個存儲設(shè)備 150具有網(wǎng)絡(luò)接口 156。本領(lǐng)域技術(shù)人員會認識到具有一個或多個存儲設(shè)備150 和一個或多個網(wǎng)絡(luò)接口 156的服務(wù)器112的其他配置,其中, 一個或多個存 儲設(shè)備150訪問獨立于服務(wù)器112的網(wǎng)絡(luò)接口 156。本領(lǐng)域技術(shù)人員還可認識 到擴展這些不同的配置的方法以支持網(wǎng)絡(luò)冗余并提高可用性。
有利地是,服務(wù)器內(nèi)SAN裝置大大降低了傳統(tǒng)SAN的復(fù)雜性和花費。 例如,典型的SAN需要具有外部存儲控制器152和關(guān)聯(lián)的數(shù)據(jù)存儲設(shè)備154 的服務(wù)器112。這占用了機架上的額外空間并且需要電纜、交換機等。配置傳 統(tǒng)的SAN所需的電纜、交換機和其他的開銷占用了空間、降低了帶寬并且昂 貴。服務(wù)器內(nèi)SAN裝置允許存儲控制器152和關(guān)聯(lián)的存儲器154適合服務(wù)器 112的形體尺寸,并因此減少了需要的空間和費用。服務(wù)器內(nèi)SAN還允許通 過內(nèi)部和外部高速數(shù)據(jù)總線使用相對高速的通信的連接。
在一種實施方式中,存儲設(shè)備150為固態(tài)存儲設(shè)備102,存儲控制器152 為固態(tài)存儲控制器104,而數(shù)據(jù)存儲設(shè)備154為固態(tài)存儲器110。由于此處所 述的固態(tài)存儲設(shè)備102的速度,這種實施方式是有利的。此外,固態(tài)存儲設(shè) 備102可被配置為位于DIMM中,所述DIMM可方便地裝配在服務(wù)器112內(nèi) 并僅需要少量的空間。
服務(wù)器112中的一個或多個內(nèi)部客戶端114a還可通過服務(wù)器的網(wǎng)絡(luò)接口
25156連接到計算機網(wǎng)絡(luò)116,并且服務(wù)器112通??刂扑钥蛻舳说倪B接。這 種方法具有一些好處。客戶端114a可直接地本地訪問或遠程訪問存儲設(shè)備 150,并且客戶端114a可初始化客戶端114a的存儲器和存儲設(shè)備150之間的 本地或遠程直接存儲器存取("DMA", "RDMA")數(shù)據(jù)的傳送。
在另一種實施方式中,當利用本地連接的存儲:^備150作為DAS設(shè)備、 網(wǎng)絡(luò)連接的存儲設(shè)備150、網(wǎng)絡(luò)連接的固態(tài)存儲設(shè)備102 (這些設(shè)備作為服務(wù) 器內(nèi)SAN、外部SAN和混合SAN的一部分)時,位于服務(wù)器112內(nèi)部或外 部的客戶端114、 114a可通過一個或多個網(wǎng)絡(luò)116對客戶端114起文件服務(wù)器 的作用。存儲設(shè)備150可同時參與DAS、服務(wù)器內(nèi)SAN、 SAN、 NAS等(及 其中的任意的組合)。此外,每個存儲設(shè)備150可以以如下方式被分割第一 分區(qū)使存儲設(shè)備150作為DAS可用,第二分區(qū)使存儲設(shè)備150作為服務(wù)器內(nèi) SAN內(nèi)的元件可用,第三分區(qū)使存儲設(shè)備150作為NAS可用,第四分區(qū)使存 儲設(shè)備150作為SAN的元件可用,等等。類似地,存儲設(shè)備150可被分割為 符合安全性和存取控制要求。本領(lǐng)域技術(shù)人員會認識到可以構(gòu)建和支持下述 設(shè)備或系統(tǒng)的任意組合和排列存儲設(shè)備、虛擬存儲設(shè)備、存儲網(wǎng)絡(luò)、虛擬 存儲網(wǎng)絡(luò)、專用存儲器、共享存儲器、平行文件系統(tǒng)、平行對象文件系統(tǒng)、 塊存儲設(shè)備、對象存儲設(shè)備、存儲裝置、網(wǎng)絡(luò)裝置及類似設(shè)備。
此外,通過將存儲設(shè)備150直接地連接到計算機網(wǎng)絡(luò)116,存儲設(shè)備150 彼此之間能夠互相通信并能夠起服務(wù)器內(nèi)SAN的作用。通過計算機網(wǎng)絡(luò)116
設(shè)備150。通過將存儲設(shè)備150移到服務(wù)器112內(nèi)并使其具備將存儲設(shè)備150 配置為SAN的能力,服務(wù)器112/存儲設(shè)備150的結(jié)合使得在常規(guī)SAN中不 需要專用的存儲控制器、光纖通道網(wǎng)絡(luò)和其他設(shè)備。服務(wù)器內(nèi)SAN系統(tǒng)103 具有能夠使存儲設(shè)備150與客戶端114和計算機112共享共用的資源(如電 源、制冷、管理和物理空間)的優(yōu)點。例如,存儲設(shè)備150可插在服務(wù)器112 的空的插槽中并提供SAN或NAS的所有工作性能、可靠性和可用性。本領(lǐng) 域技術(shù)人員會認識到服務(wù)器內(nèi)SAN系統(tǒng)103的其他特征和優(yōu)點。
在另一種配置中,多個服務(wù)器內(nèi)SAN存儲設(shè)備150a被布置在單獨的服 務(wù)器112a基礎(chǔ)架構(gòu)內(nèi)。在一種實施方式中,服務(wù)器112a由一個或多個利用 PCI快速IOV互連的內(nèi)部刀片服務(wù)器客戶端114a組成,而沒有外部網(wǎng)絡(luò)156、外部客戶端114、 114b或外部存儲設(shè)備150b。
此外,服務(wù)器內(nèi)SAN存儲設(shè)備150可通過一個或多個計算機網(wǎng)絡(luò)116與 對等存儲設(shè)備150通信,所述對等存儲設(shè)備150位于計算機112 (圖1中的每 一臺計算機)內(nèi),或者不通過計算機112而直接連接到計算機網(wǎng)絡(luò)116以形 成同時具有SAN和服務(wù)器內(nèi)SAN的全部功能的的混合SAN。這種靈活性具 有以下優(yōu)點簡化了擴展性和在不同的可能的固態(tài)存儲網(wǎng)絡(luò)實施方案之間的 移植。本領(lǐng)域技術(shù)人員會認識到放置和互連固態(tài)控制器104的其他組合、配 置、實施方案和布局。
當網(wǎng)絡(luò)接口 156a僅能^皮運行在服務(wù)器112a內(nèi)的一個代理控制時,運行在 所述代理中的鏈路建立模塊168能夠通過連接到外部存儲設(shè)備150b和客戶端 114、 114b的網(wǎng)絡(luò)接口 156a建立內(nèi)部客戶端114a和存儲設(shè)備150a/第一存儲 控制器152a之間的通信通路。在優(yōu)選的實施方式中, 一旦建立了所述通信通 路,單獨的內(nèi)部存儲設(shè)備150a和內(nèi)部客戶端114a能夠建立和管理它們自己的 命令隊列,并通過網(wǎng)絡(luò)接口 156a和獨立于控制網(wǎng)絡(luò)接口 156a的網(wǎng)絡(luò)代理或代 理的RDMA將命令和數(shù)據(jù)同時雙向地直接傳送給外部存儲設(shè)備150b和客戶 端114、 114b。在一種實施方式中,鏈路建立模塊168在初始化過程(如硬件 的啟動或初始化)期間建立通信鏈路。
在另一種實施方式中,網(wǎng)絡(luò)代理模塊170指令至少一部分用于通過第一 服務(wù)器112服務(wù)存儲請求的命令,而至少與所述存儲請求關(guān)聯(lián)的數(shù)據(jù)(也可 能是其他命令)在第一存儲控制器和獨立于第一服務(wù)器的外部存儲設(shè)備之間 通信。在另一種實施方式中,網(wǎng)絡(luò)代理模塊170代表內(nèi)部存儲設(shè)備150a和客 戶端114a轉(zhuǎn)發(fā)命令或數(shù)據(jù)。
在一種實施方式中,第一服務(wù)器lla包括位于第一服務(wù)器112a內(nèi)的一個 或多個服務(wù)器,并包括虛擬總線模塊172,該虛擬總線模塊172允許第一服務(wù) 器112a內(nèi)的所述一個或多個服務(wù)器通過分享的虛擬總線獨立地訪問一個或多 個存儲控制器152a。所述虛擬總線可利用高級總線協(xié)議(如PCIe-IOV )建立。 支持IOV的網(wǎng)絡(luò)接口 156a可允許所述一個或多個服務(wù)器和所述一個或多個存 儲控制器獨立地控制一個或多個網(wǎng)絡(luò)接口 156a。
在不同的實施方式中,服務(wù)器內(nèi)SAN裝置允許兩個或更多個存儲設(shè)備150 被配置在RAID中。在一種實施方式中,服務(wù)器內(nèi)SAN裝置包括將兩個或更
27多個存儲控制器配置為RAID的前端RAID模塊174。當來自客戶端114、 114a 的存儲請求包括存儲數(shù)據(jù)的請求時,前端RAID模塊174通過將所述數(shù)據(jù)以 符合特定應(yīng)用的RAID級的形式寫入所述RAID服務(wù)所述存儲請求。第二存儲 控制器152可位于第一服務(wù)器112a的內(nèi)部或者外部。前端RAID模塊174允 許將存儲控制器152配置成RAID,從而使得存儲控制器對發(fā)送所述存儲請求 的客戶端114、 114a可見。這種方法允許被指定為主機的存儲控制器152或客 戶端114 、 114a管理條紋和沖交驗信息。
在另一種實施方式中,服務(wù)器內(nèi)SAN裝置包括后端RAID模塊176,該 后端RAID模塊176將由存儲控制器控制的兩個或更多個數(shù)據(jù)存儲設(shè)備154 配置為RA1D。當來自所述客戶端的存儲請求包括存儲數(shù)據(jù)的請求時,后端 RAID模塊176通過將所述數(shù)據(jù)以符合應(yīng)用的RAID級的形式寫入所迷RAID 服務(wù)所述存儲請求,從而使得客戶端"4、 1]4a像訪問由第一存儲控制器152 控制的單個數(shù)據(jù)存儲設(shè)備154那樣訪問被配置為RAID的存儲設(shè)備154。這種 RAID應(yīng)用允許以如下方式將由存儲控制器152控制的數(shù)據(jù)存儲設(shè)備配置成 RAID:配置成RAID的過程對任何訪問數(shù)據(jù)存儲設(shè)備154的客戶端114、 114a 來說是透明的。在另一種實施方式中,前端RAID和后端RAID都具有多級 RAID。本領(lǐng)域技術(shù)人員會認識到將存儲設(shè)備152以符合此處所述的固態(tài)存儲 控制器104和關(guān)聯(lián)的固態(tài)存儲器110的形式配置為RAID的其他方法。
用于存儲控制器管理的對象的裝置
圖2A是示意性框圖,示出了根據(jù)本發(fā)明的用于存儲設(shè)備內(nèi)的對象管理的 裝置200的一種實施方式。裝置200包括存儲控制器152,該存儲控制器152 具有對象請求接收器模塊260、解析模塊262、命令執(zhí)行模塊264、對象索 引模塊266、對象請求排隊模塊268、具有消息模塊270的封包器302、及對 象索引重建模塊272,上述模塊描述如下。
存儲控制器152大體上與圖1B中的系統(tǒng)102描述的存儲控制器152類似, 并且可以是圖2描述的固態(tài)存儲設(shè)備控制器202。裝置200包括對象請求接收 器模塊260,該對象請求接收器模塊260接收來自 一個或多個請求設(shè)備155的 對象請求。例如,對于存儲對象數(shù)據(jù)請求,存儲控制器152在數(shù)據(jù)存儲設(shè)備 154中以數(shù)據(jù)包的形式存儲數(shù)據(jù)段,該數(shù)據(jù)存儲設(shè)備154與存儲控制器152相 連接。所述對象請求通常由存儲在或?qū)⒁淮鎯υ谝粋€或多個對象數(shù)據(jù)包中
28的數(shù)據(jù)段指令存儲控制器管理的對象。對象請求可請求存儲控制器152創(chuàng)建
對象,該對象隨后會通過可利用本地或遠程直接內(nèi)存讀取("DMA"、 "RDMA") 轉(zhuǎn)換的稍后的對象請求來填充數(shù)據(jù)。
在一種實施方式中,對象請求為將對象的全部或一部分寫入先前創(chuàng)建的 對象的寫入請求。在一個實例中,所述寫入請求用于對象的數(shù)據(jù)段??蓪⑺?述對象的其他數(shù)據(jù)段寫入存儲設(shè)備150或者寫入其他存儲設(shè)備152。在另一個 實例中,所述寫入請求用于整個對象。在另一個實例中,所述對象請求為從 由存儲控制器152管理的數(shù)據(jù)段中讀取數(shù)據(jù)。在又一種實施方式中,所述對 象請求為刪除請求,以刪除數(shù)據(jù)段或?qū)ο蟆?br> 有利地是,存儲控制器152能接受不僅僅寫新對象或為已存在的對象添 加數(shù)據(jù)的寫入請求。例如,由對象請求接收器模塊260接收的寫入請求可包 括在由存儲控制器152存儲的數(shù)據(jù)前添加數(shù)據(jù)的請求、在已存儲的數(shù)據(jù)中 插入數(shù)據(jù)的請求或者替換數(shù)據(jù)的一段的請求。由存儲控制器152保持的對象 索引提供了這些復(fù)雜寫操作所需要的靈活性,所述寫操作在其他存儲控制器 內(nèi)不可用,但是目前僅在服務(wù)器和其他計算機文件系統(tǒng)內(nèi)的存儲控制器外可 用。
裝置200包括解析^f莫塊262,該解析^^莫塊262將所述對象請求解析為一條 或多條命令。通常,解析模塊262將所述對象請求解析為一個或多個緩存。 例如,所述對象請求中的一條或多條命令可被解析為命令緩存。通常,解析 模塊262準備對象請求,以使得所述對象請求中的信息可以被存儲控制器152 理解并執(zhí)行。本領(lǐng)域技術(shù)人員會認識到將對象請求解析為一條或多條命令的 解析模塊262的其他功能。
裝置200包括命令執(zhí)行模塊264,該命令執(zhí)行模塊264執(zhí)行從所述對象請 求解析出的命令。在一種實施方式中,命令執(zhí)行模塊264執(zhí)行一條命令。在 另一種實施方式中,命令執(zhí)行模塊264執(zhí)行多條命令。通常,命令執(zhí)行模塊 264解釋解析自所述對象請求的命令(如寫入命令),然后創(chuàng)建、排列并且執(zhí) 行子命令。例如,解析自對象請求的寫入命令可指令存儲控制器152存儲多 個數(shù)據(jù)段。所述對象請求還可包括必要屬性(如加密、壓縮等)。命令執(zhí)行模 塊264可命令存儲控制器152壓縮所述數(shù)據(jù)段、加密所述數(shù)據(jù)段、創(chuàng)建一個 或多個數(shù)據(jù)包并為每個數(shù)據(jù)包關(guān)聯(lián)包頭、使用媒體加密密鑰加密所述數(shù)據(jù)包、添加錯誤修正碼并將所述數(shù)據(jù)包存儲在指定位置。在指定位置存儲所述數(shù)據(jù) 包,并且其他子命令還可被分解為其他更低級別的子命令。本領(lǐng)域技術(shù)人員
會認識到命令執(zhí)行模塊264能執(zhí)行一條或多條解析自對象請求的命令的其他方法。
裝置200包括對象索引模塊266 ,該對象索引模塊266在對象索引中創(chuàng)建 對象項,以響應(yīng)創(chuàng)建對象或存儲所述對象數(shù)據(jù)段的存儲控制器152。通常,存 儲控制器152從所述數(shù)據(jù)段中創(chuàng)建數(shù)據(jù)包,并且在存儲所述數(shù)據(jù)段時,所述 數(shù)據(jù)包存儲的位置即被指定。同數(shù)據(jù)段一起接收的或作為對象請求的一部分 接收的對象元數(shù)據(jù)可采用類似方法存儲。
對象索引模塊266在存儲所述數(shù)據(jù)包和分配所迷數(shù)據(jù)包的物理地址時創(chuàng) 建進入對象索引的對象項。所述對象項包括所述對象的邏輯標識符和一個或 多個物理地址之間的映射,所述一個或多個物理地址對應(yīng)于存儲控制器152 存儲一個或多個數(shù)據(jù)包和任何對象元數(shù)據(jù)包的位置。在另一種實施方式中, 在存儲所述對象的數(shù)據(jù)包之前在所述對象索引中創(chuàng)建項。例如,如果存儲控 制器152較早地確定存儲所述數(shù)據(jù)包的物理地址,則對象索引模塊266可較 早地在所述對象索引中創(chuàng)建項。
通常,當對象請求或?qū)ο笳埱蠼M導(dǎo)致對象或數(shù)據(jù)段被修改時(可能在讀 修改寫操作期間),所述對象索引模塊266更新所述對象索引中的項以符合修 改的對象。在一種實施方式中,所述對象索引創(chuàng)建新對象并在所述對象索引 為所述修改的對象創(chuàng)建新項。通常,當僅有對象的一部分被修改時,所述對 象包括修改過的數(shù)據(jù)包和一些保持不變的數(shù)據(jù)包。在這種情況下,所述新項 包括到未變的數(shù)據(jù)包(與最初寫入它們的位置相同)的映射和到寫入新位置 的修改后的對象的映射。
在另一種實施方式中,對象請求接收器模塊260接收對象請求,該對象 請求包括擦除數(shù)據(jù)塊或其他對象元的命令,存儲控制器152可至少存儲一個 包(如擦除包,該擦除包具有對象的引用、與對象的關(guān)系和擦除的數(shù)據(jù)塊的 大小的信息)。此外,這可進一步表明擦除的對象元素被填充為0。因此,擦 除對象請求可用于仿真^皮擦除的實際的內(nèi)存或存儲器,并且,所述實際的內(nèi)
存或存儲器實際上具有合適的內(nèi)存/存儲器的一部分,所述合適的內(nèi)存/存儲器 實際上以0存儲在所述內(nèi)存/存儲器的單元中。有利地是,創(chuàng)建具有項(該項表明了數(shù)據(jù)段和對象元數(shù)據(jù)之間的映射)
的對象索引允許存儲控制器152自主的處理和管理對象。這種能力允許在存 儲設(shè)備150中十分靈活地存儲數(shù)據(jù)。 一旦創(chuàng)建了對象的索引項,存儲控制器 152可有效地處理后繼關(guān)于所述對象的對象請求。
在一種實施方式中,存儲控制器152包括對象請求排隊模塊,該對象請 求排隊模塊在解析模塊262解析之前將一個或多個由對象請求接收器模塊260 接收到的對象排隊。對象請求排隊模塊268允許在接收對象請求時和在執(zhí)行 所述對象請時之間的靈活性。
在另一種實施方式中,存儲控制器152包括封包器302,該封包器302根 據(jù)一個或多個數(shù)據(jù)段創(chuàng)建一個或多個數(shù)據(jù)包,其中,數(shù)據(jù)包的大小適于存儲 在數(shù)據(jù)存儲設(shè)備154內(nèi)。在下文中結(jié)合圖3更詳細地描述封包器302。在一種 實施方式中,封包器302包括為每個包創(chuàng)建包頭的消息模塊270。所述包頭包 括包標識符和包長度。所述包標識符把所述包與對象(為該對象生成所述包) 聯(lián)系起來。
在一種實施方式中,由于包標識符包含足夠的信息以確定對象和在對象 內(nèi)的包含在包內(nèi)的對象元素之間的關(guān)系,因此每個包包括自包含的包標識符。 然而,更有效的優(yōu)選實施方式是在容器中存儲包。
容器是一種數(shù)據(jù)結(jié)構(gòu),這種數(shù)據(jù)結(jié)構(gòu)有助于更有效的存儲數(shù)據(jù)包并幫助 建立對象和數(shù)據(jù)包、元數(shù)據(jù)包和其他與存儲在容器內(nèi)的對象有關(guān)的包之間的 關(guān)系。注意到存儲控制器152通常以處理作為對象的一部分接收的對象元數(shù) 據(jù)的類似方式處理數(shù)據(jù)段。通常,"包"可指包含數(shù)據(jù)的數(shù)據(jù)包、包含元數(shù)據(jù)的 元數(shù)據(jù)包或其他包類型的其他包。對象可存儲在一個或多個容器中,并且容 器通常包括僅用于一個唯一的對象的包。對象可分布在多個容器之間。容器 通常存儲在單個邏輯擦除塊內(nèi)(存儲部)并且通常不分散在邏輯擦除塊間。
在一個實例中,容器可分散在兩個或更多個邏輯/虛擬頁間。通過將容器 與對象關(guān)聯(lián)起來的容器標簽確定容器。容器可包含0個到許多個包并且容器 內(nèi)的這些包通常來自一個對象。包可以有許多對象元素類型(包括對象屬性 元、對象數(shù)據(jù)元、對象索引元和類似的元素類型)??梢詣?chuàng)建包括不止一個對 象元類型的混合包。每個包可包含0個到許多個同一類型的元。容器內(nèi)的每 個包通常都包含標識與對象關(guān)系的唯一標識符。
31每個包與一個容器相關(guān)聯(lián)。在優(yōu)選實施方式中,容器被限于擦除塊,以 使得在每個擦除塊的起始部分或在擦除塊的起始部分附近能發(fā)現(xiàn)容器包。這 有助于將數(shù)據(jù)丟失限制在具有損壞的包頭的擦除塊范圍內(nèi)。在這種實施方式 中,如果對象索引不可用并且擦除塊內(nèi)的包頭損壞,由于可能沒有可靠的機 制確定后繼包的位置,從損壞的包頭到擦除塊尾的內(nèi)容可能會丟失。在另一 種實施方式中,更可靠的方法是采用限于頁的邊界的容器。這種實施方式需 要更多包頭開銷。在另一種實施方式中,容器可流經(jīng)頁面和擦除塊邊界。這 種方法需要較少的包頭開銷,但是,如果包頭損壞,則有可能會丟失更多部
分的數(shù)據(jù)。對這些實施方式來說,使用一些類型的RAID以進一步保證數(shù)據(jù) 完整性是可以預(yù)期的。
在一種實施方式中,裝置200包括對象索引重建模塊272,該對象索引重 建模塊272采用來自存儲在數(shù)據(jù)存儲設(shè)備154中的包頭的信息重建所述對象 索引中的項。在一種實施方式中,對象索引重建沖莫塊272通過讀取包頭(以 確定每個包所屬的對象)和序列信息(以確定數(shù)據(jù)或元數(shù)據(jù)在對象中所屬的 位置)來重建所述對象索引的項。對象索引重建模塊272采用每個包的物理 地址信息和時間戳或序列信息以創(chuàng)建包的物理地址和對象標識符和數(shù)據(jù)段序 列間的映射。對象索引重建模塊272使用時間戳或序列信息以再現(xiàn)索引變更 的順序并通常因此重建最近的狀態(tài)。
在另一種實施方式中,對象索引重建模塊272采用包頭信息以及容器包 信息^L置包以識別包的物理位置、對象標識符和每個包的序列號,從而在所 述對象索引中重建項。在一種實施方式中,在寫入數(shù)據(jù)包時,擦除塊被戳記 上時間,或者賦給擦除塊序列號,并且擦除塊的時間戳或序列信息和來自容 器頭和包頭的信息一起使用以重建對象索引。在另一種實施方式中,當擦除 塊恢復(fù)時,時間戳或序列信息被寫入該擦除塊。
當對象索引存儲在易失性存儲器中時,如果不能重建所述對象索引,錯 誤、失電、或其他導(dǎo)致存儲控制器152未存儲所述對象索引而停工的因素可 能會成為問題。對象索引重建模塊272允許所述對象索引存儲在具有易失性 存儲體優(yōu)點(如快速存取)的易失性存儲體中。對象索引重建模塊272允許 自主地快速重建所述對象索引,而并不需要依靠位于存儲設(shè)備150外的設(shè)備。
在一種實施方式中,易失性存儲體中的所述對象索引周期性地存儲在數(shù)
32據(jù)存儲設(shè)備154內(nèi)。在具體的實例中,所述對象索引或"索引元數(shù)據(jù)"周期性地
存儲固態(tài)存儲器110中。在另一種實施方式中,所述索引元數(shù)據(jù)存儲在固態(tài) 存儲器110n(與固態(tài)存儲器110a-110n-l存儲包分離)中。獨立于數(shù)據(jù)和對象 元數(shù)據(jù)管理所述索引元數(shù)據(jù),所述數(shù)據(jù)和對象元數(shù)據(jù)傳送自請求設(shè)備155并 且由存儲控制器152/固態(tài)存儲控制器202管理。管理和存儲與其他來自對象 的數(shù)據(jù)和元數(shù)據(jù)分離的索引元數(shù)據(jù)允許有效的數(shù)據(jù)流,同時存儲控制器152/ 固態(tài)存儲設(shè)備控制器202并不會不必要地處理對象元數(shù)據(jù)。
在一種實施方式中,其中,由對象請求接收器模塊260接收到的對象請 求包括寫入請求,存儲控制器152通過本地或遠程直接存儲器存取("DMA"、 "RDMA")操作接收來自請求設(shè)備155的內(nèi)存的一個或多個對象數(shù)據(jù)段。在優(yōu) 選實例中,存儲控制器152在一次或多次DMA或RDMA操作中從請求設(shè)備 155的內(nèi)存中讀取數(shù)據(jù)。在另一實例中,請求設(shè)備155在一次或多次DMA或 RDMA操作中將所述數(shù)據(jù)段寫入存儲控制器152。在另一種實施方式中,其 中,所述對象請求包括讀請求,存儲控制器152在一次或多次DMA或RDMA 操作中將對象的一個或多個數(shù)據(jù)段傳送給請求設(shè)備155的內(nèi)存。在優(yōu)選實例 中,存儲控制器152在一次或多次DMA或RDMA操作中將數(shù)據(jù)寫入請求設(shè) 備155的內(nèi)存。在另一實例中,請求設(shè)備在一次或多次DMA或RDMA操作 中從存儲控制器152中讀取數(shù)據(jù)。在另一實施方式中,存儲控制器152在一 次或多次DMA或RDMA操作中從請求設(shè)備155的內(nèi)存中讀取對象命令請求 集。在另 一實例中,請求設(shè)備155在一次或多次DMA或RDMA操作中將對 象命令請求集寫入存儲控制器152。
在一種實施方式中,存儲控制器152仿真塊存儲,并且在請求設(shè)備155 和存儲控制器152之間通信的對象包括一個或多個數(shù)據(jù)塊。在一種實施方式 中,請求設(shè)備155包括驅(qū)動器,以使得存儲設(shè)備150表現(xiàn)為塊存儲設(shè)備。例 如請求設(shè)備155可與請求設(shè)備155期望數(shù)據(jù)存儲的物理地址一起發(fā)送特定大 小的一組數(shù)據(jù)。存儲控制器152接收所述數(shù)據(jù)塊,并將與所述數(shù)據(jù)塊一起傳 送的物理塊地址或者將物理塊地址的轉(zhuǎn)化形式作為對象標識符。然后,存儲 控制器152通過隨意地封包所述數(shù)據(jù)塊和存儲數(shù)據(jù)塊將所迷數(shù)據(jù)塊存儲為對 象或?qū)ο蟮臄?shù)據(jù)段。然后,對象索引模塊266利用基于物理塊的對象標識符 和存儲控制器152存儲所述數(shù)據(jù)包的實際物理位置在所述對象索引中創(chuàng)建項,所述數(shù)據(jù)包包括來自所述數(shù)據(jù)塊的數(shù)據(jù)。
在另一種實施方式中,存儲控制器152通過接收塊對象仿真塊存儲。塊 對象可包括塊結(jié)構(gòu)中的一個或多個數(shù)據(jù)塊。在一種實施方式中,存儲控制器
152像處理任意其他對象一樣處理所述塊對象。在另一種實施方式中,對象可
代表整個塊設(shè)備、塊設(shè)備的分區(qū)或塊設(shè)備的一些其他邏輯子元件或物理子元 件,所述塊設(shè)備包括磁道、扇區(qū)、通道及類似設(shè)備。值得特別注意的是將塊
設(shè)備RAID群組重映射到支持不同RAID構(gòu)建(如漸進式RAID )的對象。本 固態(tài)存儲設(shè)備
圖2B是示出了根據(jù)本發(fā)明的位于固態(tài)存儲設(shè)備102內(nèi)的固態(tài)存儲設(shè)備控 制器202的一種實施方式201的示意性框圖,該固態(tài)存儲設(shè)備控制器202包 括寫入數(shù)據(jù)管道106和讀取數(shù)據(jù)管道108。固態(tài)存儲設(shè)備控制器202可包括若 干固態(tài)存儲控制器O-N, 104a-n,每個固態(tài)存儲控制器都控制固態(tài)存儲器110。 在描述的實施方式中,示出了兩個固態(tài)控制器固態(tài)控制器0104a和固態(tài)控 制器N104n,并且它們中的每一個都控制固態(tài)存儲器110a-n。在描述的實施 方式中,固態(tài)存儲控制器0 104a控制數(shù)據(jù)通道,以使得附屬固態(tài)存儲器U0a 存儲數(shù)據(jù)。固態(tài)存儲控制器N 104n控制與存儲的數(shù)據(jù)關(guān)聯(lián)的索引元數(shù)據(jù)通道, 以使得關(guān)聯(lián)的固態(tài)存儲器110n存儲索引元數(shù)據(jù)。在替代的實施方式中,固態(tài) 存儲設(shè)備控制器202包括具有單個固態(tài)存儲器110a的單個固態(tài)控制器104a。 在另一種實施方式中,存在大量的固態(tài)存儲控制器104a-n和關(guān)聯(lián)的固態(tài)存儲 器110a-n。在一種實施方式中, 一個或多個固態(tài)控制器104a-104n-l (與它們 的關(guān)聯(lián)固態(tài)存儲器110a-110n-l連接)控制數(shù)據(jù),而至少一個固態(tài)存儲控制器 104n (與其關(guān)聯(lián)固態(tài)存儲器110n連接)控制索引元數(shù)據(jù)。
在一種實施方式中,至少一個固態(tài)控制器104是現(xiàn)場可編程門陣列 ("FPGA")并且控制器功能被編入FPGA。在特定的實施方式中,F(xiàn)PGA是 Xilinx⑧公司的FPGA。在另一種實施方式中,固態(tài)存儲控制器104包括專門 設(shè)計為固態(tài)存儲控制器104的組件(如專用集成電路("ASIC")或自定義邏 輯解決方案)。每個固態(tài)存儲控制器104通常包括寫入數(shù)據(jù)管道106和讀取數(shù) 據(jù)管道108,結(jié)合圖3進一步描述了這兩個管道。在另一種實施方式中,至少 一個固態(tài)存儲控制器104由FPGA、 ASIC和自定義邏輯組件的組合組成。
34固態(tài)存儲器
固態(tài)存儲器110是非易失性固態(tài)存儲元件216、 218、 220的陣列,該陣 列布置在內(nèi)存庫214中并且通過雙向存儲輸入輸出(I/O )總線210并行訪問。 在一種實施方式中,存儲I/O總線210能夠在任何一個時刻進行單向通信。例 如,當將數(shù)據(jù)寫入固態(tài)存儲器110時,不能從固態(tài)存儲器110中讀取數(shù)據(jù)。 在另一種實施方式中,數(shù)據(jù)可同時雙向地流動。然而,雙向(如此處4十對數(shù) 據(jù)總線使用的)指在同一時間數(shù)據(jù)僅在一個方向流動的數(shù)據(jù)通路,但是,當 在雙向數(shù)據(jù)總線上流動的數(shù)據(jù)被阻止時,數(shù)據(jù)可在所述雙向總線上沿相反方 向流動。
固態(tài)存^f諸元件(如SSS0.0 216a)通常^f皮配置為芯片(一個或多個小片的 封裝)或電路板上的小片。正如所描述的那樣,固態(tài)存儲元件(如216a)獨 立于或半獨立于其他固態(tài)存儲元件(如218a)運行,即使這些元件被一起封 裝在芯片包、芯片包的堆?;蛞恍┢渌獍?nèi)。正如所描述的, 一列固 態(tài)存儲元件216、 218、 220被指定為內(nèi)存庫214。正如所描述的,可以有"n" 個內(nèi)存庫214a-n并且每個內(nèi)存庫可以有"m"個固態(tài)存儲元件216a-m, 218a-m, 220a-m,從而在固態(tài)存儲器110中成為固態(tài)存儲元件216、 218、 220的n*m 陣列。在一種實施方式中,固態(tài)存儲器110a在每個內(nèi)存庫214 (有8個內(nèi)存 庫214)中包括20個固態(tài)存儲元件216、 218、 220,并且,固態(tài)存儲器110n 在每個內(nèi)存庫214中(只有一個內(nèi)存庫214 )包括兩個固態(tài)存儲元件216、 218。 在一種實施方式中,每個固態(tài)存儲元件216、 218、 220由單層單元("SLC") 設(shè)備組成。在另一種實施方式中,每個固態(tài)存儲元件216、 218、 220由多層 單元("MLC")設(shè)備組成。
在一種實施方式中,用于多個內(nèi)存庫的固態(tài)存儲元件被封包在一起,所 述多個內(nèi)存庫共享公用存儲I/O總線210a行(如216b、 218b、 220b)。在一 種實施方式中,固態(tài)存儲元件216、 218、 220的每個芯片可具有一個或多個 小片,而一個或多個芯片垂直堆疊且每個小片可被獨立存取。在另一種實施 方式中,固態(tài)存儲元件(如SSS0.0 216a)的每個小片可具有一個或多個虛擬 小片,每個芯片可具有一個或多個小片,而一個或多個小片中的一些或全部 垂直堆疊且每個虛擬小片可被獨立存取。
在一種實施方式中,每組有四個堆,每堆有兩個小片垂直堆疊,從而形成8個存儲元件(如SSS O.O-SSS 0.8 ) 216a-220a,每個存儲元件位于分離的 內(nèi)存庫214a-n內(nèi)。在另 一種實施方式中,20個存儲元件(如SSS O.O-SSS 20.0 ) 216形成虛擬內(nèi)存庫214a,因此八個虛擬內(nèi)存庫中的每一個都具有20個存儲 元件(如SSS0.0-SSS20.8) 216、 218、 220。通過存儲I/O總線210將數(shù)據(jù)發(fā) 送到固態(tài)存儲器IIO,并發(fā)送到存儲元件(SSS O.O-SSS 0.8) 216a、 218a、 220a 的特定組的所有存儲元件。存儲控制總線212a用于選擇特定的內(nèi)存庫(如內(nèi) 存庫-O 214a ),從而通過連接到所有內(nèi)存庫214的存儲I/O總線210接收到的 數(shù)據(jù)僅被寫入選定的內(nèi)存庫214a。
在優(yōu)選實施方式中,存儲1/0總線210由一個或多個獨立I/O總線(包括 210a.a-m, 210n.a-m的"IIOBa-m")組成,其中,每一行內(nèi)的固態(tài)存儲元件共享 獨立I/O總線中的一條,所述獨立I/O總線中的一條平行訪問每個固態(tài)存儲元 件26、 218、 220, ^v而4吏得同時訪問所有的內(nèi)存庫214。例如,存卡者I/O總 線210的一個通道可同時訪問每個內(nèi)存庫214a-n的第一固態(tài)存儲元件216a、 218a、 220a。存儲I/O總線210的第二通道可同時訪問每個內(nèi)存庫214a-n的 第二固態(tài)存儲元件216b、 218b、 220b。固態(tài)存儲元件216、 218、 220的每一 行都被同時訪問。在一種實施方式中,其中,固態(tài)存儲元件216、 218、 220 是多層的(物理堆疊的),固態(tài)存儲元件216、 218、 220的所有物理層被同時 訪問。正如此處所使用的,"同時"還包括幾乎同時的訪問,其中,以略有不同 的時間間隔訪問設(shè)備以避免切換噪聲。在這種情況下,同時被用于與連續(xù)的 或系列的訪問相區(qū)別,其中,命令和/或數(shù)據(jù)被單獨地并相繼地發(fā)送。
通常,采用存儲控制總線212獨立地選擇內(nèi)存庫214a-n。在一種實施方 式中,采用芯片選通或芯片選擇來選擇內(nèi)存庫214。當芯片選擇和芯片使能均 可用時,存儲控制總線212可選擇多層固態(tài)存儲元件216、 218、 220中的一 層。在其他實施方式中,存儲控制總線212使用其他命令來單獨地選擇多層 固態(tài)存儲元件216、 218、 220中的一層。還可通過控制和地址信息的結(jié)合來 選擇固態(tài)存儲元件216、 218、 220,所述控制和地址信息在存儲l/0總線210 和存儲控制總線212上傳輸。
在一種實施方式中,每個固態(tài)存儲元件216、 218、 220被分割成擦除塊, 并且每個擦除塊被分割成頁。典型的頁的容量為2000字節(jié)("2kB")。在一個 實例中,固態(tài)存儲元件(如SSS0.0)包括兩個寄存器并能編程為兩頁,從而
36雙寄存器固態(tài)存儲元件216、 218、 220具有4kB的容量。20個固態(tài)存儲元件 216、 218、 220的內(nèi)存庫214就會有80kB的頁訪問容量,同時同一地址流出 存儲1/0總線210的通道。
在固態(tài)存儲元件216、 218、 220的內(nèi)存庫214中的這一組80kB大小的頁 可稱為虛擬頁。類似地,內(nèi)存庫214a的每個存儲元件216a-m的擦除塊可被 分組以形成虛擬塊。在優(yōu)選實施方式中,當在固態(tài)存儲元件216、 218、 220 中接收到擦除命令時,擦除位于固態(tài)存儲元件216、 218、 220內(nèi)的頁擦除塊。 然而,在固態(tài)存儲元件216、 218、 220內(nèi)的擦除塊、頁、平面層或其他邏輯 和物理部分的大小和數(shù)量預(yù)計會隨著技術(shù)的進步而變化,可以預(yù)期的是,與 新配置一致的許多實施例是可能的并與本文的一般描述相一致。
通常,當將包寫入固態(tài)存儲元件216、 218、 220內(nèi)的特定位置時,其中, 擬將所述包寫入特定頁內(nèi)的位置,所述特定頁對應(yīng)于特定內(nèi)存庫的特定元件 的特定擦除塊的頁,在發(fā)送所述包之后通過存儲I/O總線210發(fā)送物理地址。 所述物理地址包含足夠的信息,以使得固態(tài)存儲元件216、 218、 220將所述 包導(dǎo)入頁內(nèi)的指定位置。由于存儲元件行(如SSS0.0-SSS0.N216a、 218a、 220a)上的存儲元件通過存儲I/O總線210a.a內(nèi)的合適總線同時^皮訪問,為 了到達合適的頁并將所述數(shù)據(jù)包寫入在存儲元件行(SSS 0.0-SSS O.N 216a、 218a、 220a)中具有相似地址的頁,存儲控制總線212同時選擇內(nèi)存庫214a (包括具有要將所述數(shù)據(jù)包寫入其內(nèi)的正確頁的固態(tài)存儲元件SSS 0.0 216a)。
類似地,在存儲I/O總線210上傳輸?shù)淖x命令需要同時在存儲控制總線 212上傳輸?shù)拿?,以選擇單個的內(nèi)存庫214a和內(nèi)存庫214內(nèi)的合適頁。在 優(yōu)選實施方式中,讀命令讀取整個頁,并且由于在內(nèi)存庫214內(nèi)存在許多并 行的固態(tài)存儲元件216、 218、 220,讀命令讀取整個虛擬頁。然而,所述讀命 令可分割為子命令,這將在下文中結(jié)合內(nèi)存庫交錯進行解釋。還可以在寫操 作中訪問虛擬頁。
可通過存儲I/O總線210發(fā)出的擦除塊擦除命令以擦除擦除塊,該擦除塊 具有特定的擦除塊地址以擦除特定的擦除塊。通常,可通過存儲I/0總線210 的并行通路發(fā)送擦除塊擦除命令以擦除虛擬擦除塊,每個虛擬擦除塊具有特 定的擦除塊地址以擦除特定的擦除塊。同時,通過存儲控制總線212選擇特
37定的內(nèi)存庫(如內(nèi)存庫-0 214a)以防止擦除所有的內(nèi)存庫(內(nèi)存庫l-N 214b-n) 中的具有類似地址的擦除塊。還可采用存儲I/0總線210和存儲控制總線212 的結(jié)合將其他命令發(fā)送到特定位置。本領(lǐng)域技術(shù)人員會認識到采用雙向存儲 I/O總線210和存儲控制總線212選擇特定存儲單元的其他方法。
在一種實施方式中,將包順序地寫入固態(tài)存儲器110。例如,包流到存儲 元件216的內(nèi)存庫214a的存儲寫入緩沖器,并且當所述緩沖器飽和時,所述 包被編程入指定的虛擬頁。然后所述包再次填充所述存儲寫入緩沖器,并且 當所述存儲緩沖器再次飽和時,所述包被寫入下一虛擬頁。所述下一個虛擬 頁可位于同一個內(nèi)存庫214a內(nèi)或可位于另一個內(nèi)存庫(如214b)內(nèi)。這個過 程(一個虛擬頁接一個虛擬頁)通常一直持續(xù)到虛擬塊被填滿時。在另一種 實施方式中,當這個過程(一個虛擬擦除塊接一個虛擬擦除塊)持續(xù)時,數(shù) 據(jù)流可繼續(xù)越過虛擬擦除塊邊界。
在讀、修改、寫操作中,在讀操作中定位并讀取與所述對象關(guān)聯(lián)的數(shù)據(jù) 包。已被修改的修改對象的數(shù)據(jù)段并不寫入讀取它們的位置。取而代之,修 改的數(shù)據(jù)段再次被轉(zhuǎn)化為數(shù)據(jù)包并隨后被寫入正在被寫入的虛擬頁中的下一 個可用位置。各個數(shù)據(jù)包的所述對象索引項被修改為指向包含已修改的數(shù)據(jù) 段的包。所述對象索引中用于與同一對象(未被修改)關(guān)聯(lián)的數(shù)據(jù)包的項(或 多個項)會包括指向未被修改的數(shù)據(jù)包的源位置的指針。因此,如果源對象 保持不變(例如保持所述對象的先前版本不變),所述源對象將在所述對象索 引中具有指向所有與最初寫入的一樣的數(shù)據(jù)包的指針。新對象將在所述對象 索引中具有指向一些源數(shù)據(jù)包的指針和指向正在被寫入的虛擬頁中的修改的 數(shù)據(jù)包的指針。
在復(fù)制操作中,所述對象索引包括用于源對象的項,該源對象映射到若 干存儲在固態(tài)存儲器110中的包。當復(fù)制完拷貝時,創(chuàng)建了新對象并在所述 對象索引中創(chuàng)建將所述新對象映射到源包的新項。還將所述新對象寫入固態(tài) 存儲器110,且所述新對象的地址映射到所述對象索引中的新項。新對象包可 用于確定在源對象中的包,該包被引用以防在未復(fù)制的源對象中發(fā)生改變并 以防對象索引丟失或損壞。
有利地是,順序地寫入包有助于更平滑地使用固態(tài)存儲器110并允許固 態(tài)存儲設(shè)備控制器202監(jiān)測固態(tài)存儲器110內(nèi)的存儲熱點和不同虛擬頁的層使用狀況。相繼地寫入包還可有助于建立強大、高效的垃圾收集系統(tǒng),這將 在下文中詳細描述。本領(lǐng)域技術(shù)人員會認識到順序地存儲數(shù)據(jù)包的其他好處。
固態(tài)存^f^i殳備控制器
在不同的實施方式中,固態(tài)存儲設(shè)備控制器202還可包括數(shù)據(jù)總線204、 局部總線206、緩沖控制器208、緩沖器O-N 222a-n,主控制器224、直接存 儲器存取("DMA")控制器226、存儲器控制器228、動態(tài)存儲器陣列230、 靜態(tài)隨機存儲器陣列232、管理控制器234、管理總線236、連接系統(tǒng)總線240 的網(wǎng)橋238和雜項邏輯塊242,這些將在下文中描述。在其他實施方式中,系 統(tǒng)總線240與一個或多個網(wǎng)絡(luò)接口卡("NIC") 244相連接,這些網(wǎng)絡(luò)接口卡 中的一些可包括遠程DMA ("RDMA")控制器246、 一個或多個中央處理器 ("CPU") 248、 一個或多個外部存儲器控制器250和關(guān)聯(lián)的外部存儲器陣列 252、 一個或多個存儲控制器254、對等控制器256和專用處理器258,這將 在下文描述。連接到系統(tǒng)總線240的組件244-258可位于計算內(nèi)112內(nèi)或者可 以為其他i殳備。
通常,固態(tài)存儲控制器104通過存儲I/O總線210與固態(tài)存儲器110進行 數(shù)據(jù)通信。在典型的實施方式中,固態(tài)存儲器布置在內(nèi)存庫214內(nèi),且每個 內(nèi)存庫214包括多個并行訪問的存儲元件216、 218、 220,存儲1/0總線210 是多條總線的陣列,每一條總線用于內(nèi)存庫214內(nèi)的存儲元件216、 218、 220 的每一行。正如此處所使用的,術(shù)語"存儲I/O總線"可指一條存儲I/O總線210 或多條獨立的數(shù)據(jù)總線204的陣列。在優(yōu)選實施方式中,訪問存儲元件的行 (如216、 218a、 220a)的每條存儲I/O總線210可包括在存儲元件216、 218a、 220a的行中訪問的存儲部(如擦除塊)的邏輯-物理映射。如果第一存儲部失 效、部分失效、不可訪問或出現(xiàn)一些其他問題時,這種映射允許映射到存儲 部的物理地址的邏輯地址重映射到不同的存儲部。相對于圖3中重映射模塊 314進一步解釋了重映射。
還可通過系統(tǒng)總線240、網(wǎng)橋238、局部總線206、緩沖器22并最終通過 數(shù)據(jù)總線204將數(shù)據(jù)從請求設(shè)備155傳送到固態(tài)存儲控制器104。數(shù)據(jù)總線 204通常連接到一個或多個由緩沖控制器208控制的緩沖器222a-n。緩沖控制 器208通??刂茢?shù)據(jù)從局部總線206傳遞到緩沖器222并通過數(shù)據(jù)總線204 傳遞到管道輸入緩沖器306和輸出緩沖器330。為了解決時鐘域差異、防止數(shù)
39據(jù)沖突等等,緩沖控制器208通常控制在緩沖器222中暫時存儲來自請求設(shè)備的數(shù)據(jù)的方式,并控制此后傳送給數(shù)據(jù)總線204 (或相反)的方式。緩沖控制器208通常與主控制器224結(jié)合使用以協(xié)調(diào)數(shù)據(jù)流。當數(shù)據(jù)到達時,所述數(shù)據(jù)會到達系統(tǒng)總線240并通過網(wǎng)橋238傳遞給局部總線206.
通常,數(shù)據(jù)在主控制器224和緩沖控制器208的控制下從局部總線206傳遞給一個或多個數(shù)據(jù)緩沖器222。然后,所述數(shù)據(jù)通過固態(tài)控制器104從緩沖器222流向數(shù)據(jù)總線204并到達固態(tài)存儲器110 (如NAND閃存或其他存儲媒體)。在優(yōu)選實施方式中,數(shù)據(jù)與與所述數(shù)據(jù)一起到達的關(guān)聯(lián)的帶外元數(shù)據(jù)("對象元數(shù)據(jù)")采用 一個或多個的數(shù)據(jù)通道被送達,所述數(shù)據(jù)通道包括一個或多個固態(tài)存儲控制器104a-104n-l和關(guān)聯(lián)的固態(tài)存儲器110a-110n-l,而至少一個通道(固態(tài)存儲控制器104n、固態(tài)存儲器110n)用于帶內(nèi)元數(shù)據(jù)(如索引信息和其他固態(tài)存儲設(shè)備102內(nèi)部生成的元數(shù)據(jù))。
局部總線206通常為雙向總線或總線組,所述雙向總線或總線組允許數(shù)據(jù)和命令在固態(tài)存儲設(shè)備控制器202內(nèi)部的設(shè)備間通信,也允許命令和數(shù)據(jù)在固態(tài)存儲設(shè)備102內(nèi)部的設(shè)備和與系統(tǒng)總線240連接的設(shè)備244-258之間通信。網(wǎng)橋238有助于在局部總線206和系統(tǒng)總線240之間的通信。本領(lǐng)域技術(shù)人員會認識到其他實施方式,如總線240、 206、 204、 210和網(wǎng)橋238的環(huán)結(jié)構(gòu)或交換式星形配置和功能。
系統(tǒng)總線240通常是計算機、安裝有或連接有固態(tài)存儲設(shè)備102的其他設(shè)備的總線。在一種實施方式中,系統(tǒng)總線240可以為PCI-e總線、串行高級技術(shù)附件("串行ATA")總線、并行ATA或類似總線。在另一種實施方式中,
系統(tǒng)總線24o為外部總線,例如小型計算機系統(tǒng)接口 ("scsr)、防火墻、光
纖通道、USB、 PCIe-As或類似總線。固態(tài)存儲設(shè)備102可被封裝為適于置于設(shè)備內(nèi)部或被封裝為外部連接設(shè)備。
固態(tài)存儲設(shè)備控制器202包括在固態(tài)存儲設(shè)備102內(nèi)控制較高級別功能的主控制器224。在不同的實施方式中,主控制器224通過解釋對象請求和其他請求來控制數(shù)據(jù)流,指導(dǎo)創(chuàng)建索引,該索引將與數(shù)據(jù)關(guān)聯(lián)的對象標識符映射到關(guān)聯(lián)的數(shù)據(jù)(或協(xié)調(diào)的DMA請求等)的物理地址。主控制器224完全地或部分地控制此處描述的許多功能。
在一種實施方式中,主控制器224采用嵌入式控制器。在另一種實施方
40式中,主控制器224采用局部存儲器,如動態(tài)存儲器陣列230 (動態(tài)隨才幾存取存儲器"DRAM")、靜態(tài)存儲器陣列323 (靜態(tài)隨機存取存儲器"SRAM")等。在一種實施方式中,采用主控制器224控制局部存儲器。在另一實施方式中,主控制器通過存儲器控制器228訪問局部存儲器。在另一種實施方式中,所述主控制器運行Linux服務(wù)器并可支持各種常用服務(wù)器接口,如萬維網(wǎng)、超文本標記語言("HTML")等。在另一種實施方式中,主控制器224釆用納米處理器。可采用可編程或標準邏輯或上述控制器類型的任意組合來構(gòu)建主控制器224。本領(lǐng)域技術(shù)人員會認識到主控制器的許多實施方式。
在一種實施方式中,其中,存儲設(shè)備152/固態(tài)存儲設(shè)備控制器202管理多個數(shù)據(jù)存儲設(shè)備/固態(tài)存儲器110a-n,主控制器224在內(nèi)部控制器(如固態(tài)存儲控制器104a-n)之間分配工作負載。例如,主控制器224可分割將要^皮寫入數(shù)據(jù)存儲設(shè)備(如固態(tài)存儲器110a-n)中的對象,使得每個附屬的數(shù)據(jù)存儲設(shè)備存儲所述對象的一部分。這種特征是允許更快地存儲和訪問對象的性能增強。在一種實施方式中,主控制器224利用FPGA實施。在另一種實施方式中,位于主控制器224內(nèi)的固件可通過管理總線236、通過網(wǎng)絡(luò)連接到NIC244的系統(tǒng)總線240或其他連接到系統(tǒng)總線240的設(shè)備更新。
在一種實施方式中,管理對象的主控制器224仿真塊存儲,從而使得計算機102或其他連接到存儲設(shè)備152/固態(tài)存儲設(shè)備102的設(shè)備將存儲設(shè)備152/固態(tài)存儲設(shè)備102視為塊存儲設(shè)備并將數(shù)據(jù)發(fā)送給存儲設(shè)備152/固態(tài)存儲設(shè)備120中的特定物理地址。然后,主控制器224分配塊并像存儲對象一樣存儲數(shù)據(jù)塊。然后,主控制器224將塊和與塊一起發(fā)送的物理地址映射到由主控制器224確定的實際位置。映射存儲在對象索引中。通常,對于塊仿真來說在計算機112、客戶端114或其他希望將存儲設(shè)備152/固態(tài)存儲設(shè)備102當成塊存儲設(shè)備來使用的設(shè)備中提供有塊設(shè)備應(yīng)用程序接口 ( "API")。
在另一種實施方式中,主控制器224與NIC控制器244和嵌入式RDMA控制器246協(xié)同運行以提供準時的RDMA數(shù)據(jù)和命令集傳輸。NIC控制器244可隱藏在非透明端口后以使得能夠使用自定義的驅(qū)動器。同樣地,客戶端114
訪問計算機網(wǎng)絡(luò)118。
在一種實施方式中,主控制器224也是獨立驅(qū)動器冗余陣列("RAID")控制器。當數(shù)據(jù)存儲設(shè)備/固態(tài)存儲設(shè)備120與一個或多個其他數(shù)據(jù)存儲設(shè)備/固態(tài)存儲設(shè)備120聯(lián)網(wǎng)時,主控制器224可以是用于單層RAID、多層RAID、漸進式RAID等的RAID控制器。主控制器224還允許一些對象存儲在RAID陣列內(nèi)而其他對象不通過RAID存儲。在另一種實施方式中,主控制器224可以是分布式RAID控制器元件。在另一種實施方式中,主控制器224可包括許多RAID、分布式RAID和另行描述的其他功能。
在一種實施方式中,主控制器224與單個或多個網(wǎng)絡(luò)管理器(如交換機)協(xié)同運行以建立路由、平衡帶寬使用率、故障轉(zhuǎn)移等。在另一種實施方式中,主控制器224與集成專用邏輯器件(通過局部總線206 )和關(guān)聯(lián)的驅(qū)動器軟件協(xié)同運行。在另一種實施方式中,主控制器224與附屬專用處理器258或邏輯器件(通過外部系統(tǒng)總線240)和關(guān)聯(lián)的驅(qū)動器軟件協(xié)同運行。在另一種實施方式中,主控制器224與遠程專用邏輯器件(通過計算機網(wǎng)絡(luò)118)和關(guān)聯(lián)的驅(qū)動器軟件協(xié)同運行。在另一種實施方式中,主控制器224與局部總線206或附屬于硬盤驅(qū)動器("HDD")存儲控制器的外部總線協(xié)同運行。
在一種實施方式中,主控制器224與一個或多個存儲控制器254通信,其中存儲設(shè)備/固態(tài)存儲設(shè)備120可表現(xiàn)為通過SCSI總線、因特網(wǎng)SCSI("iSCSr)、光纖通道等連接的存儲設(shè)備。同時,存儲設(shè)備/固態(tài)存儲設(shè)備120可自主地管理對象并可表現(xiàn)為對象文件系統(tǒng)或分布式對象文件系統(tǒng)。還可通過對等控制器256和/或?qū)S锰幚砥?58訪問主控制器224。
在另一種實施方式中,主控制器224與自主集成管理控制器協(xié)同運行以周期性地驗證FPGA碼和/或控制器軟件、在運行(復(fù)位)時驗證FPGA碼和/或在通電(復(fù)位)期間驗證控制器軟件、支持外部復(fù)位請求、支持由于檢查包而超時的復(fù)位請求,并支持電壓、電流、功率、溫度及其他環(huán)境測量和閾值中斷設(shè)置。在另一種實施方式中,主控制器224管理垃圾收集以釋放擦除塊用于再次使用。在另一種實施方式中,主控制器224管理耗損均衡。在另一種實施方式中,主控制器224允許數(shù)據(jù)存儲設(shè)備/固態(tài)存儲設(shè)備102被分割成多個虛擬設(shè)備并允許基于分區(qū)的媒體加密。在又一種實施方式中,主控制器224支持具有高級的、多位的ECC修正的固態(tài)存儲控制器104。本領(lǐng)域技術(shù)人員會認識到位于存儲控制器152內(nèi)(或更具體地說位于固態(tài)存儲設(shè)備102內(nèi))的主控制器224的其他特征和功能。
42在一種實施方式中,固態(tài)存儲設(shè)備控制器202包括存儲器控制器228,該存儲器控制器228控制動態(tài)隨機存儲器陣列230和/或靜態(tài)隨機存儲器陣列232。如上所述,存儲器控制器228可獨立于主控制器224使用或與主控制器224集成使用。存儲器控制器228通常控制驗證一些存儲器類型,如DRAM(動態(tài)隨機存儲器陣列230)和SRAM (靜態(tài)隨機存儲器陣列232)。在其他實例中,存儲器控制器228還控制其他存儲器類型,如電可擦可編程序只讀存儲器("EEPROM")等。在其他實施方式中,存儲器控制器228控制兩種或更多種存儲器類型且存儲器控制器228可包括不止一個控制器。通常,存儲器控制器228在可行情況下控制盡可能多的SRAM232,并且通過DRAM230補足SRAM232。
在一種實施方式中,所述對象索引存儲在存儲器230、 232中并周期性的被卸載到固態(tài)存儲器HOn或其他非易失性存儲器的通道內(nèi)。本領(lǐng)域技術(shù)人員會認識到存儲器控制器228、動態(tài)存儲器陣列230、靜態(tài)存儲器陣列232的其他運用和配置。
在一種實施方式中,固態(tài)存儲設(shè)備控制器202包括DMA控制器226,該DMA控制器226控制在下列設(shè)備之間的DMA操作存儲設(shè)備/固態(tài)存儲設(shè)備102、 一個或多個外部存儲器控制器250、關(guān)聯(lián)的外部存儲器陣列252和CPU248。應(yīng)該注意到,外部存儲器控制器250和外部存儲器陣列252之所以被稱為外部是因為它們位于存儲設(shè)備/固態(tài)存儲設(shè)備102的外部。此外,DMA控制器226還可通過NIC244和關(guān)聯(lián)的RDMA控制器246控制請求設(shè)備的RDMA操作。DMA和RDMA在下文中有詳細說明。
在一種實施方式中,固態(tài)存儲設(shè)備控制器202包括連接到管理總線236的管理控制器234。通常管理控制器234管理存儲設(shè)備/固態(tài)存儲設(shè)備102的環(huán)境指標和狀態(tài)。管理控制器234可通過管理總線236監(jiān)測設(shè)備溫度、風(fēng)扇轉(zhuǎn)速、電力供應(yīng)設(shè)置等。管理控制器可支持電可擦可編程序只讀存儲器("EEPROM,,)以存儲FPGA碼和控制器軟件。通常,管理總線236連接到存儲設(shè)備/固態(tài)存儲設(shè)備102內(nèi)的不同組件。管理控制器234可通過局部總線206進行警報、中斷等的通信或可包括單獨的到系統(tǒng)總線240或其他總線的連接。在一種實施方式中,管理總線236為內(nèi)部集成電路("I2C")總線。本領(lǐng)域技術(shù)人員會認識到通過管理總線236連接到存儲設(shè)備/固態(tài)存儲設(shè)備102的組件的管理控制器234的其他功能和運用。
在一種實施方式中,固態(tài)存儲設(shè)備控制器202包括雜項邏輯塊242,該雜項邏輯塊242可被定制為專用。通常,當固態(tài)設(shè)備控制器202或主控制器224被配置為使用FPGA或其他可配置控制器時,可基于特定應(yīng)用、用戶需求、存儲需求等而包括定制邏輯。
數(shù)據(jù)管道
圖3是示出了根據(jù)本發(fā)明的位于固態(tài)存儲設(shè)備102內(nèi)的固態(tài)存儲設(shè)備控制器104的一種實施方式300的示意性框圖,該固態(tài)存儲設(shè)備控制器具有寫入數(shù)據(jù)管道106和讀取數(shù)據(jù)管道108。實施方式300包括數(shù)據(jù)總線204、局部總線206和緩沖控制器208,這些設(shè)備大體上類似于相對于圖2中固態(tài)存儲設(shè)備控制器202描述的設(shè)備。所述寫入數(shù)據(jù)管道包括封包器302和糾錯碼("ECC")發(fā)生器304。在其他實施方式中,所述寫入數(shù)據(jù)管道包括輸入緩沖器306、寫入同步緩沖器308、寫入程序模塊310、壓縮模塊312、加密模塊314、垃圾收集器旁路316 (部分位于所述讀取數(shù)據(jù)管道內(nèi))、媒體加密模塊318和寫入緩沖器320。讀取數(shù)據(jù)管道108包括讀取同步緩沖器328、 ECC糾錯模塊322、解包器324、對齊模塊326和輸出緩沖器330。在另一種實施方式中,讀取數(shù)據(jù)管道108可包括i(某體解密模塊332、垃圾收集器旁路316的一部分、解密模塊334、解壓縮模塊336和讀取程序模塊338。固態(tài)存儲控制器104還可包括控制與狀態(tài)寄存器340和控制隊列342、內(nèi)存庫交錯控制器344、同步緩沖器346、存儲總線控制器348及多路轉(zhuǎn)換器("MUX") 350。固態(tài)控制器104的組件和關(guān)聯(lián)的寫入數(shù)據(jù)管道106和讀取數(shù)據(jù)管道108描述如下。在其他實施方式中,可采用同步固態(tài)存儲器110并且可不使用同步緩沖器308、328。
寫入數(shù)據(jù)管道
寫入數(shù)據(jù)管道106包括封包器302,該封包器直接地或間接地通過另一寫入數(shù)據(jù)管道106的級接收將要被寫入固態(tài)存儲器的數(shù)據(jù)或元數(shù)據(jù)段,并創(chuàng)建一個或多個大小適于固態(tài)存儲器110的包。所述數(shù)據(jù)或元數(shù)據(jù)段通常是對象的一部分,但也可包括整個對象。在另一種實施方式中,所述數(shù)據(jù)段是數(shù)據(jù)塊的一部分,但也可包括整個數(shù)據(jù)塊。通常,對象接收自計算機112、客戶端114或其他計算機或設(shè)備并被以流向固態(tài)存儲設(shè)備102或計算機112的數(shù)據(jù)段
44的形式傳送給固態(tài)存儲設(shè)備102。數(shù)據(jù)段也可被稱為另一名稱(如數(shù)據(jù)包裹),本文所提及的數(shù)據(jù)段包括對象或數(shù)據(jù)塊的全部或一部分。
每個對象被存為一個或多個包。每個對象可具有一個或多個容器包。每個包包含包頭。所述包頭可包括包頭類型字段。類型字段可包括數(shù)據(jù)、對象屬性、元數(shù)據(jù)、數(shù)據(jù)段定界符(多包)、對象結(jié)構(gòu)、對象連接及類似物。所述包頭還可包括關(guān)于包的大小的信息(如包內(nèi)的數(shù)據(jù)的字節(jié)數(shù))。所述包的長度可由包類型確實。
一個實例可能是利用數(shù)據(jù)包包頭的偏移值來確定對象內(nèi)數(shù)
據(jù)段的位置。本領(lǐng)域技術(shù)人員會認識到其他包含在由封包器302添加到數(shù)據(jù)上的包頭內(nèi)的信息和其他添加到數(shù)據(jù)包的信息。
每個包包括包頭,還可能包括來自所述數(shù)據(jù)和元數(shù)據(jù)段的數(shù)據(jù)。每個包的包頭包括用于將包與包所屬對象聯(lián)系起來的相關(guān)信息。例如,所述包頭可包括對象標識符和偏移值,該偏移值表明了用于數(shù)據(jù)包形成的數(shù)據(jù)段、對象或數(shù)據(jù)塊。所述包頭還可包括存儲總線控制器348用以存儲包的邏輯地址。所述包頭還可包括關(guān)于包的大小的信息(如包內(nèi)字節(jié)數(shù))。所述包頭還可包括序列號,當生建數(shù)據(jù)段或?qū)ο髸r,該序列號識別數(shù)據(jù)段相對于對象內(nèi)的其他包所屬的位置。所迷包頭可包括包頭類型字段。類型字段可包括數(shù)據(jù)、對象屬性、元數(shù)據(jù)、數(shù)據(jù)段定界符(多包)、對象結(jié)構(gòu)、對象連接及類似物。本領(lǐng)域技術(shù)人員會認識到其他包含在由封包器302加到數(shù)據(jù)上的包頭內(nèi)的信息和其他添加到數(shù)據(jù)包的信息。
寫入數(shù)據(jù)管道106包括ECC發(fā)生器304,該ECC發(fā)生器為一個或多個接收自封包器302的包生成一個或多個糾錯碼("ECC")。 ECC發(fā)生器304通常采用糾錯算法生成ECC,該ECC與包一起存儲。與包一起存儲的ECC通常用于探測和糾正由于傳送和存儲而引起的錯誤。在一種實施方式中,包作為長度為N的未編碼塊流入ECC發(fā)生器304。計算并添加長度為S的并發(fā)位,并作為長度為N+S的編碼塊輸出。N和S的值依賴于算法的特點,該算法被選擇用于實現(xiàn)特定的性能、效率和魯棒性指標。在優(yōu)選實施方式中,在ECC塊和包之間并沒有固定關(guān)系;包可包括不止一個ECC塊;ECC塊可包括不止一個包;且第一包可在ECC塊內(nèi)的任何位置終止而第二包可始于同一 ECC塊內(nèi)的第一包終止的位置。在優(yōu)選實施方式中,ECC算法不能^L動態(tài)修改。在優(yōu)選實施方式中,與數(shù)據(jù)包一起存儲的ECC足夠穩(wěn)健以在兩個以上的位內(nèi)
45糾正錯誤。
有利地是,采用允許不止一位的修正或甚至是兩位修正的穩(wěn)健ECC算法
允許延長固態(tài)存儲器110的使用壽命。例如,如果固態(tài)存儲器110內(nèi)使用閃存作為存儲媒體,閃存在每個擦除周期內(nèi)可被寫入大約100000次不出現(xiàn)錯誤。這種使用期限可通過穩(wěn)健ECC算法延長。固態(tài)存儲設(shè)備102板載有ECC發(fā)生器304和相應(yīng)的ECC糾錯模塊322,固態(tài)存儲設(shè)備102可在其內(nèi)部糾正錯誤并具有比采用不甚穩(wěn)健的ECC算法(如單位錯誤修正)更長的使用壽命。然而,在其他實施方式中,ECC發(fā)生器304可采用不甚穩(wěn)健的算法并可修正單位或雙位錯誤。在另一種實施方式中,固態(tài)存儲設(shè)備110可包括不甚可靠的存儲器以增加容量,所述不甚可靠的存儲器例如多級單元("MLC")閃存,所述不甚可靠的存儲器在沒有穩(wěn)健ECC算法的情況下可以不充分可靠。
在一種實施方式中,寫入數(shù)據(jù)管道包括輸入緩沖器306,該輸入緩沖器接收將要被寫入固態(tài)存儲器110的數(shù)據(jù)段并存儲輸入的數(shù)據(jù)段直到寫入數(shù)據(jù)管道106的下一級,例如封包器302(或其他更復(fù)雜寫入數(shù)據(jù)管道106的其他級)準備處理下一個數(shù)據(jù)段。通過使用適當容量的數(shù)據(jù)緩沖器,輸入緩沖器306通常允許寫入數(shù)據(jù)管道106接收和處理數(shù)據(jù)段之間存在速率差異。輸入緩沖器306還允許數(shù)據(jù)總線204將數(shù)據(jù)傳送給寫入數(shù)據(jù)管道106的速率大于寫入數(shù)據(jù)管道106能支持的速率,從而改進數(shù)據(jù)總線204運行的效率。通常,當寫入數(shù)據(jù)管道106不包括輸入緩沖器306時,緩沖功能在別處(如固態(tài)存儲設(shè)備102)實現(xiàn),但所述別處位于寫入數(shù)據(jù)管道106外、位于計算機內(nèi),例如當使用遠程直接存儲器讀取("RMDA")時,如在網(wǎng)絡(luò)接口卡("NIC")內(nèi)或其他設(shè)備上。
在另一種實施方式中,寫入數(shù)據(jù)管道106還包括寫入同步緩沖器308,該寫入同步緩沖器308在將包寫入固態(tài)存儲器IIO之前緩沖接收自ECC發(fā)生器
上,并且提供緩沖以解決時鐘域差異。在其他實施方式中,可采用同步固態(tài)存儲器110而移除同步緩沖器308、 328。
在一種實施方式中,寫入數(shù)據(jù)管道106還包括媒體加密模塊318,該媒體加密模塊318直接地或間接地從封包器302接收一個或多個包,并在將包發(fā)送給ECC發(fā)生器304之前利用對固態(tài)存儲設(shè)備102唯一的加密密鑰加密所述一個或多個包。通常,整個包(包括包頭)都被加密。在另一種實施方式中, 并不加密包頭。在本文中,在一種實施方式中,加密密鑰被理解為意味著在 外部管理的秘密加密密鑰,這種密鑰將固態(tài)存儲器110和需要加密保護的設(shè)
備集成在一起。媒體加密模塊318和相應(yīng)的媒體解密模塊332為存儲在固態(tài) 存儲器110中數(shù)據(jù)提供安全等級。例如,當數(shù)據(jù)利用媒體加密模塊加密時, 如果固態(tài)存儲器110連接到不同的固態(tài)存儲控制器104、固態(tài)存儲設(shè)備102或 計算機112,通常,在不使用同一加密密鑰(在將數(shù)據(jù)寫入固態(tài)存儲器110期 間使用)時,如果不經(jīng)過合理的努力,則不能讀取固態(tài)存儲器110的內(nèi)容。
在典型的實施方式中,固態(tài)存儲設(shè)備102不將所述加密密鑰存儲在非易 失性存儲器中并且不允許從外部訪問所述加密密鑰。在初始化期間為固態(tài)存 儲控制器104提供加密密鑰。固態(tài)存儲設(shè)備102可使用并存儲非秘密性加密 臨時值,該非秘密性加密臨時值與加密密鑰結(jié)合使用。不同的臨時值可與每 個包一起存儲。為了加強保護,加密算法可利用唯一臨時值在多個包之間分 割數(shù)據(jù)段。所述加密密鑰可接收自客戶端114、計算機112、密鑰管理器或其 他管理固態(tài)存儲控制器104使用的加密密鑰的設(shè)備。在另一種實施方式中, 固態(tài)存儲器110可具有兩個或更多個分區(qū),并且固態(tài)存儲控制器104顯得就 像有兩個或更多個固態(tài)存儲控制器104,每一個固態(tài)存儲控制器104在固態(tài)存 儲器110內(nèi)的單個分區(qū)上運行。在這種實施方式中,唯一的々某體加密密鑰可 與每個分區(qū)一起使用。
在另一種實施方式中,寫入數(shù)據(jù)管道106還包括加密模塊314,該加密模 塊314在將數(shù)據(jù)段發(fā)送給封包器302之前直接地或間接地加密接收自輸入緩 沖器306的數(shù)據(jù)或元數(shù)據(jù)段,利用與數(shù)據(jù)段一同接收的加密密鑰來加密數(shù)據(jù) 段。加密模塊314與媒體加密模塊318不同,這是由于加密模塊318用以 加密數(shù)據(jù)的加密密鑰對存儲在固態(tài)存儲設(shè)備102內(nèi)的數(shù)據(jù)來說不是共同的并 在對象基礎(chǔ)上可能不同,并且加密密鑰可不與數(shù)據(jù)段一起接收(如下所述)。 例如,加密模塊318用以加密數(shù)據(jù)段的加密密鑰可與數(shù)據(jù)段一起被接收或可 作為將對象寫入數(shù)據(jù)段所屬位置的命令的一部分被接收。固態(tài)存儲設(shè)備102 可在每個與加密密鑰結(jié)合使用的對象包中使用并存儲非秘密性加密臨時值。 不同的臨時值可與每個包一起存儲。為了通過加密算法加強保護,可利用唯 一臨時值在多個包之間分割數(shù)據(jù)段。在一種實施方式中,媒體加密模塊318
47使用的臨時值與加密模塊314使用的臨時值相同。
加密密鑰可接收自客戶端114、計算機112、密鑰管理器或其他保存用于
加密數(shù)據(jù)段的加密密鑰的設(shè)備。在一種實施方式中,加密密鑰被從固態(tài)存儲
設(shè)備102、計算機112、客戶端114或其他外部代理中的一個傳送到固態(tài)存儲
控制器104,所述外部代理能夠執(zhí)行工業(yè)標準方法以安全地傳送并保護私有密 鑰和/>共密鑰。
在一種實施方式中,加密模塊318利用與第一包一起接收的第一加密密 鑰加密第一包,并利用與第二包一起接收的第二加密密鑰加密第二包。在另 一種實施方式中,加密;f莫塊318利用與第一包一起"t妾收的第一加密密鑰加密 第一包,而將第二數(shù)據(jù)包傳遞給下一級(未經(jīng)加密)。有利地是,包括在固態(tài) 存儲設(shè)備102的寫入數(shù)據(jù)管道106內(nèi)的加密模塊318允許對象接對象或段接 段的數(shù)據(jù)加密,而不需要單獨的文件系統(tǒng)或其他外部系統(tǒng)來追蹤不同的用于 存儲相應(yīng)對象或數(shù)據(jù)段的加密密鑰。每個請求設(shè)備155或相關(guān)密鑰管理器獨 立地管理加密密鑰,該加密密鑰僅用于加密請求設(shè)備155發(fā)送的對象或數(shù)據(jù) 段。
在另一種實施方式中,寫入數(shù)據(jù)管道i06包括壓縮;溪塊312,該壓縮;漠塊 312在將數(shù)據(jù)段發(fā)送給封包器302之前為元數(shù)據(jù)段壓縮數(shù)據(jù)。壓縮模塊312通 常利用本領(lǐng)域技術(shù)人員熟知的壓縮程序來壓縮數(shù)據(jù)或元數(shù)據(jù)段以減少段占用 的的存儲空間大小。例如,如果數(shù)據(jù)段包括一串512個0位,壓縮模塊312 可用表明512個0位的編碼或令牌來替4灸這512個0位,其中,所述編碼所 占的空間比512個0位所占的空間要小得多。
在一種實施方式中,壓縮模塊312利用第一壓縮程序壓縮第一段,而輸 送第二段(未經(jīng)壓縮)。在另一種實施方式中,壓縮;漠塊312利用第一壓縮程 序壓縮第一段并利用第二壓縮程序壓縮第二段。在固態(tài)存儲設(shè)備102內(nèi)具有 這種靈活性是有利的,以便客戶端或其他將數(shù)據(jù)寫入固態(tài)存儲設(shè)備102內(nèi)的 設(shè)備中每一個都可指定壓縮程序或以便一個設(shè)備指定壓縮程序而另一個設(shè)備 指定無壓縮。還可根據(jù)每個對象類型或?qū)ο箢惢A(chǔ)的默認設(shè)置來選擇壓縮程 序。例如,特定對象的第一對象可以能夠廢除默認壓縮程序設(shè)置,同一對象 類和對象類型的第二對象可采用默認壓縮程序,而同 一對象類和對象類型的 第三對象可不壓縮。
48在一種實施方式中,寫入數(shù)據(jù)管道106包括垃圾收集器旁路316,該垃圾 收集器旁路316接收來自讀取數(shù)據(jù)管道的108(在垃圾收集系統(tǒng)中作為數(shù)據(jù)旁 路的一部分)的數(shù)據(jù)段。垃圾收集系統(tǒng)通常標記不再有效的包,不再有效的 原因通常是由于包被標記為刪除或包已被修改且修改過的數(shù)據(jù)存儲在不同的 位置。在某一時刻,垃圾收集系統(tǒng)確定存儲器的某個區(qū)域可被恢復(fù)。之所以 確定某個區(qū)域可被恢復(fù)可能是由于缺乏可用的存儲空間、標記為無效的的 數(shù)據(jù)百分比達到閾值、有效數(shù)據(jù)的合并、存儲器的該區(qū)域錯誤檢出率達到閾 值或基于數(shù)據(jù)分布提高性能等。垃圾收集算法可考慮大量的因素以確定何時 存儲器的區(qū)域?qū)⒁换謴?fù)。
一旦存儲器的區(qū)域被標記為恢復(fù),該區(qū)域內(nèi)的有效包通常必須被重新存 放。垃圾收集器旁路316允許將包讀入讀取數(shù)據(jù)管道108,并允許然后將包直 接傳送給寫入數(shù)據(jù)管道106而不會將包路由出固態(tài)存儲控制器104。在優(yōu)選實 施方式中,垃圾收集器旁路316是運行在固態(tài)存儲設(shè)備102內(nèi)的自主垃圾收 集系統(tǒng)的一部分。這允許固態(tài)存儲設(shè)備102管理數(shù)據(jù),從而數(shù)據(jù)系統(tǒng)地傳播 到整個固態(tài)存儲器110以提升性能、數(shù)據(jù)可靠性并避免過度使用和不充分使 用固態(tài)存儲器110的任何一個位置或區(qū)域,并且延長了固態(tài)存儲器110的使 用壽命。
垃圾收集器旁路316協(xié)調(diào)將數(shù)據(jù)段插入寫入數(shù)據(jù)管道106而其他數(shù)據(jù)段 由客戶端116或其他設(shè)備寫入。在描述的實施方式中,垃圾收集器旁路316 位于寫入數(shù)據(jù)管道106內(nèi)的封包器302之前、讀取數(shù)據(jù)管道內(nèi)的解包器314 之后,但也可位于寫入和讀取數(shù)據(jù)管道106、 108內(nèi)的其他位置??稍谇逑磳?入數(shù)據(jù)管道106期間使用垃圾收集器旁路316,以填充虛擬頁的剩余部分,從 而提升固態(tài)存儲器110內(nèi)的存儲效率并因此減少垃圾收集的頻率。
在一種實施方式中,寫入數(shù)據(jù)管道106包括寫入緩沖器320,該寫入緩沖 器320為了高效的寫操作而緩沖數(shù)據(jù)。通常,寫入緩沖器320包括用于包的 足夠容量,以填充固態(tài)存儲器110內(nèi)的至少一個虛擬頁。這允許寫操作將數(shù) 據(jù)的整個頁沒有中斷地發(fā)送給固態(tài)存儲器110。通過選擇寫入數(shù)據(jù)管道106的 寫入緩沖器320的容量并將讀取數(shù)據(jù)管道108內(nèi)的緩沖器的容量選為同樣大 小容量或比固態(tài)存儲器110內(nèi)存儲寫入緩沖器的容量大,由于單個寫入命令 可被設(shè)計為將數(shù)據(jù)的整個虛擬頁發(fā)送給固態(tài)存儲器110,從而以單條命令替代
49多條命令,寫入和讀取數(shù)據(jù)的效率更高。
當填充寫入緩沖器320時,固態(tài)存儲器110可用于其他讀操作。這是有 利的,原因是當將數(shù)據(jù)寫入存儲寫入緩沖器時和注入數(shù)據(jù)緩沖器的數(shù)據(jù)失 速時,具有更小容量的寫入緩沖器的或不具有寫入緩沖器的其他固態(tài)設(shè)備可 綁定固態(tài)存儲器。讀操作會被攔截直到整個存儲寫入緩沖器被填充或被編程。 用于不具寫入緩沖器或具有小容量的寫入緩沖器的系統(tǒng)的另一種方法是清洗 未滿的存儲寫入緩沖器以使得能進行讀操作。同樣地,由于需要多寫7v/編程 周期來填充頁,因此這種方法的效率低下。
對于描述的具有容量比虛擬頁容量大的寫入緩沖器320的實施方式,單 個的寫入命令(包括大量子命令)的后續(xù)命令可以是單個程序命令,以將來 自每個固態(tài)存儲元件216、 218、 220中的存儲寫入緩沖器的數(shù)據(jù)頁傳遞給每 個固態(tài)存儲元件216、 218、 220中的指定頁。這種技術(shù)帶來的好處是減少 了部分頁編程,眾所周知,這降低了數(shù)據(jù)的可靠性和穩(wěn)定性并在當緩沖器填 充時,為讀命令和其他命令釋放了目標內(nèi)存庫。
在一種實施方式中,寫入緩沖器320為交替緩沖器,其中,所述交替緩 沖器的一側(cè)被填充,然后當所述交替緩沖器的另一側(cè)被填充時,所述交替緩 沖器的一側(cè)被指定為在適當?shù)臅r間傳送數(shù)據(jù)。在另一種實施方式中,寫入緩 沖器320包括先進先出("FIFO")寄存器,該FIFO寄存器的容量比數(shù)據(jù)段虛 擬頁的容量大。本領(lǐng)域技術(shù)人員會認識到允許在將數(shù)據(jù)寫入固態(tài)存儲器110 之前存儲數(shù)據(jù)虛擬頁的其他寫入緩沖器320配置。
在另一種實施方式中,寫入緩沖器320的容量比虛擬頁小,從而少于一 頁的信息可被寫入固態(tài)存儲器110內(nèi)的存儲寫入緩沖器。在這種實施方式中, 為了防止寫入數(shù)據(jù)管道106的失速阻止讀操作,釆用需要從一個位置移動到 另一個位置的垃圾收集系統(tǒng)將數(shù)據(jù)排隊,這個過程是蛀圾收集進程的一部分。 為了防止寫入數(shù)據(jù)管道106中的數(shù)據(jù)失速,可通過垃圾收集器旁路316將所 述數(shù)據(jù)供應(yīng)給寫入緩沖器320并然后將所述數(shù)據(jù)供應(yīng)給固態(tài)存儲器110中的 存儲寫入緩沖器,從而在編程所述數(shù)據(jù)之前填充虛擬頁的頁面。這樣,寫入 數(shù)據(jù)管道106中的數(shù)據(jù)失速不會使讀取自固態(tài)存儲設(shè)備102的數(shù)據(jù)失速。
在另一種實施方式中,寫入數(shù)據(jù)管道106包括寫入程序模塊310,該寫入 程序模塊310具有寫入數(shù)據(jù)管道106內(nèi)的一個或多個用戶可定義的功能。寫
50入程序模塊310允許用戶自定義寫入數(shù)據(jù)管道106。用戶可基于特定數(shù)據(jù)請求 或應(yīng)用自定義寫入數(shù)據(jù)管道106。當固態(tài)存儲控制器104為FPGA時,用戶可 相對輕;松地編程具有自定義命令和功能的寫入數(shù)據(jù)管道106。用戶還可利用寫 入程序模塊310以使ASIC包括自定義功能,然而自定義ASIC可能比使用 FPGA時更困難。寫入程序模塊310可包括緩沖器和旁路機制,以允許第一數(shù) 據(jù)段在寫入程序;f莫塊310中執(zhí)行,而第二數(shù)據(jù)段通過寫入數(shù)據(jù)管道106可繼 續(xù)傳送。在另一種實施方式中,寫入程序^^莫塊310可包括能通過軟件編程的 處理器內(nèi)核。
應(yīng)注意,寫入程序才莫塊310被示為位于輸入緩沖器306和壓縮模塊312 之間,然而寫入程序才莫塊310可位于寫入數(shù)據(jù)管道106內(nèi)的任何位置,并且 可分布在不同的級302-320之間。此外,在不同的、已編程的且獨立運行的級 302-320之間可分布有多個寫入程序^^莫塊310。此外,級302-320的順序可以 改t本領(lǐng)域技術(shù)人員會認識到基于特定用戶需求的級302-320的順序的可行 改變。
讀取數(shù)據(jù)管道
讀取數(shù)據(jù)管道108包括ECC糾錯模塊322,該ECC糾錯模塊322通過使 用與請求包中的每個ECC塊一起存儲的ECC來確定接收自固態(tài)存儲器110 的請求包的ECC塊中是否存在錯誤。然后,如果存在任何錯誤并且所述錯誤 可使用ECC修正,則ECC糾錯模塊322修正請求包中的任何錯誤。例如,如 果ECC能夠探測6位的錯誤但只能修正3位的錯誤,那么ECC糾錯模塊322 修正具有3位錯誤的請求包ECC塊。ECC糾錯模塊322通過把出錯的位改變 為正確的1或0狀態(tài)來修正出錯的位,從而請求數(shù)據(jù)包與其被寫入固態(tài)存儲 器110并且為包生成ECC時一致。
如果ECC糾錯模塊322確定請求包包含了比ECC能修正的位數(shù)多的出錯 位,則ECC糾錯模塊322不能修正請求包毀壞的ECC塊的錯誤并發(fā)送中斷。 在一種實施方式中,ECC糾錯模塊322發(fā)送中斷以及指示請求包出錯的消息。 所迷消息可包括指出ECC糾錯模塊322不能修正錯誤或ECC糾錯模塊322 沒有能力修正錯誤的信息。在另一種實施方式中,ECC糾錯模塊322與所述 中斷和/或消息一起發(fā)送請求包中毀壞的ECC塊。
在優(yōu)選的實施方式中,請求包中毀壞的ECC塊或毀壞的ECC塊的一部分
51(不能被ECC糾錯模塊322修正)由主控制器224讀取,并被修正和返回給 ECC糾錯^莫塊322以被讀取數(shù)據(jù)管道108進一步處理。在一種實施方式中, 請求包中毀壞的ECC塊或毀壞的ECC塊的一部分被發(fā)送給請求數(shù)據(jù)的設(shè)備。 請求設(shè)備155可修正所述ECC塊或用另一拷貝替換數(shù)據(jù)(如備份或鏡像拷 貝),然后可使用請求數(shù)據(jù)包的替換的數(shù)據(jù)或?qū)⑺鎏鎿Q的數(shù)據(jù)返回給讀取數(shù) 據(jù)管道108。請求設(shè)備155可使用出錯請求包中的包頭信息以識別替換毀壞請 求包或替換包所屬的對象所需的數(shù)據(jù)。在另一種優(yōu)選實施方式中,固態(tài)存儲 控制器104采用一些類型的RAID存儲數(shù)據(jù)并能夠恢復(fù)毀壞的數(shù)據(jù)。在另一 種實施方式中,ECC糾錯模塊322發(fā)送中斷和/或消息,并且接收設(shè)備停止與 請求數(shù)據(jù)包關(guān)聯(lián)的讀操作。本領(lǐng)域技術(shù)人員會認識到ECC糾錯模塊322確定 請求包的一個或多個ECC塊為毀壞的且ECC糾錯模塊322不能修正錯誤后采 取的其他選擇和操作。
讀取數(shù)據(jù)管道108包括解包器324,該解包器324直接地或間接地接收來 自ECC修正模塊322的請求包ECC塊,并檢查和刪除一個或多個包頭。解包 器324可通過檢查包頭內(nèi)的包標識符、數(shù)據(jù)長度、數(shù)據(jù)位置等驗證包頭。在 一種實施方式中,所述包頭包括散列碼,該散列碼可用于驗證傳遞給讀取數(shù) 據(jù)管道108的包為請求包。解包器324還從請求包中刪除由封包器302添加 的包頭。解包器324可被指定為不對某些包起作用而將這些包未經(jīng)修改地向 前傳送。 一個實例可以是容器標簽,當對象索引重建^t塊272需要包頭信息 時,該容器標簽在重建進程期間被請求。另外的實例包括傳送不同類型的包 (預(yù)定在固態(tài)存儲設(shè)備102內(nèi)使用)。在另一種實施方式中,解包器324操作 可以依賴于包的類型。
讀取數(shù)據(jù)管道326包括對齊模塊326,該對齊模塊326接收來自解包器 324的數(shù)據(jù)并刪除多余的數(shù)據(jù)。在一種實施方式中,發(fā)送給固態(tài)存儲器110的 讀命令恢復(fù)數(shù)據(jù)包。請求數(shù)據(jù)的設(shè)備可不需要恢復(fù)的數(shù)據(jù)包內(nèi)的所有數(shù)據(jù), 并且對齊模塊326刪除多余的數(shù)據(jù)。如果恢復(fù)頁內(nèi)的所有數(shù)據(jù)都是請求的數(shù) 據(jù),對齊模塊326不刪除任何數(shù)據(jù)。
對齊模塊326在數(shù)據(jù)段傳輸?shù)较乱患壷耙耘c請求數(shù)據(jù)段的設(shè)備兼容的 形式按對象的數(shù)據(jù)段重新格式化數(shù)據(jù)。通常,由于數(shù)據(jù)由讀取數(shù)據(jù)管道108 處理,數(shù)據(jù)段或包的大小在不同級間改變。對齊模塊326使用接收到的數(shù)據(jù)以將數(shù)據(jù)格式化為適于發(fā)送給請求設(shè)備155的數(shù)據(jù)段,該數(shù)據(jù)段還適于連接 在一起以形成響應(yīng)。例如,來自第一數(shù)據(jù)包的一部分的數(shù)據(jù)可與來自第二數(shù) 據(jù)包的一部分的數(shù)據(jù)結(jié)合。如果數(shù)據(jù)段比由請求設(shè)備請求的數(shù)據(jù)大,對齊模 塊326可丟棄不需要的數(shù)據(jù)。
在一種實施方式中,讀取數(shù)據(jù)管道108包括讀取同步緩沖器328,該讀取 同步緩沖器328在讀取數(shù)據(jù)管道108處理之前緩沖一個或多個讀取自固態(tài)存 儲器110的請求包。讀取同步緩沖器328位于固態(tài)存儲時鐘域和本地總線時 鐘域之間的邊界上并提供緩沖以解決時鐘域差異。
在另一種實施方式中,讀取數(shù)據(jù)管道108包括輸出緩沖器330,該輸出緩 沖器330接收來自對齊模塊326的請求包并在數(shù)據(jù)包傳送到所迷請求設(shè)備前 存儲該包。輸出緩沖器330解決當從讀取數(shù)據(jù)管道108接收數(shù)據(jù)段時和當將 數(shù)據(jù)段傳送給固態(tài)存儲控制器104的其他部分或傳送給請求設(shè)備時之間的差 異。輸出緩沖器330還允許數(shù)據(jù)總線以比讀取數(shù)據(jù)管道108能夠支持的速率 高的速率接收來自讀取數(shù)據(jù)管道108的數(shù)據(jù),以提升數(shù)據(jù)總線204運行的效 率。
在一種實施方式中,讀取數(shù)據(jù)管道108包括媒體解密模塊332,該媒體解 密模塊332接收一個或多個來自ECC糾錯模塊322的加密過的請求包并在將 一個或多個所述請求包發(fā)送給解包器324之前利用對于固態(tài)存儲設(shè)備102唯 一的加密密鑰解密一個或多個所述請求包。通常,媒體解密模塊332用以解 密數(shù)據(jù)的加密密鑰與媒體加密模塊318使用的加密密鑰一致。在另一種實施 方式中,固態(tài)存儲器110可具有兩個或更多個分區(qū)且固態(tài)存儲控制器104表 現(xiàn)得好像有兩個或更多個固態(tài)存儲控制器104(每個都在固態(tài)存儲器110內(nèi)的 單獨分區(qū)內(nèi)運行)一樣。在這種實施方式中,可對每個分區(qū)使用唯一的媒體 加密密鑰。
在另一種實施方式中,讀取數(shù)據(jù)管道108包括解密模塊334,該解密模塊 334在將數(shù)據(jù)段發(fā)送給輸出緩沖器330之前解密由解包器324格式化的所述數(shù) 據(jù)段。采用與讀請求一起接收的加密密鑰解密所述數(shù)據(jù)段,所述讀請求初始 化恢復(fù)由讀取同步緩沖器328接收的請求包。解密模塊334可利用與用于第 一包的讀請求一起接收的加密密鑰解密第一包,然后可利用不同的加密密鑰 解密第二包或可將第二包未經(jīng)解密地傳送給讀取數(shù)據(jù)管道108的下一級。通
53常,解密模塊334使用與媒體解密模塊332用以解密請求數(shù)據(jù)包的加密密鑰 不同的加密密鑰解密數(shù)據(jù)段。當包與非秘密性加密臨時值一起存儲時,該臨 時值與加密密鑰一起使用以解密數(shù)據(jù)包。加密密鑰可接收自客戶端114、計算 機112、密鑰管理器或管理固態(tài)存儲控制器104使用的加密密鑰的其他設(shè)備。
在另一種實施方式中,讀取數(shù)據(jù)管道108包括解壓縮模塊336,該解壓縮 模塊336解壓縮由解包器324格式化的數(shù)據(jù)段。在優(yōu)選實施方式中,解壓縮 模塊336使用存儲在包頭和容器標簽中的一個或兩個中的壓縮信息以選擇補 充程序,壓縮;漠塊312使用該補充程序來壓縮數(shù)據(jù)。在另一種實施方式中, 解壓縮模塊336所使用的解壓縮程序由請求解壓縮的數(shù)據(jù)段確定。在另一種 實施方式中,解壓縮模塊336根據(jù)每個對象類型或?qū)ο箢惢A(chǔ)的默認設(shè)置選 擇解壓縮程序。第一對象的第一包可以能夠廢除默認解壓縮程序設(shè)置,具有 相對的對象類和對象類型的第二對象的第二包可釆用默認解壓縮程序,而具 有相同的對象類和對象類型的第三對象的第三包可不經(jīng)過解壓縮。
在另一種實施方式中,讀取數(shù)據(jù)管道108包括讀取程序才莫塊338,該讀取 程序模塊338包括一個或多個在讀取數(shù)據(jù)管道108內(nèi)的用戶可定義功能。讀 取程序才莫塊338具有與寫入程序模塊310類似的特點并允許用戶提供自定義 功能給讀取數(shù)據(jù)管道108。讀取程序^^塊338可位于圖3中所示的位置、可位 于讀取數(shù)據(jù)管道108內(nèi)的其他位置、或者可包括讀取數(shù)據(jù)管道108內(nèi)多個位 置的多個部分。此外,在讀取數(shù)據(jù)管道108內(nèi)的多個不同位置可有多個獨立 運行的讀取程序模塊338。本領(lǐng)域技術(shù)人員會認識到讀取數(shù)據(jù)管道108內(nèi)的讀 取程序^f莫塊338的其他形式。正如寫入數(shù)據(jù)管道,讀取數(shù)據(jù)管道108的級可 重新排序,本領(lǐng)域技術(shù)人員會認識到讀取數(shù)據(jù)管道108內(nèi)的級的其他排列順 序。
固態(tài)存儲控制器104包括控制和狀態(tài)寄存器340和相應(yīng)的控制隊列342。 控制和狀態(tài)寄存器340和控制隊列342有助于控制并按順序排列與在寫入和 讀取數(shù)據(jù)管道106、 108內(nèi)處理的數(shù)據(jù)相關(guān)聯(lián)的命令和子命令。例如,封包器 302中的數(shù)據(jù)段可具有一個或多個在與ECC發(fā)生器關(guān)聯(lián)的控制隊列342內(nèi)的 相應(yīng)控制命令或指令。當數(shù)據(jù)段被封包時,可在封包器302內(nèi)執(zhí)行一些指令 或命令中。當從數(shù)據(jù)段建立的、最新形成的數(shù)據(jù)包^史傳送給下一級時,其他 命令或指令可通過控制和狀態(tài)寄存器340直接傳送給下一個控制隊列342。
54可同時將命令和指令加載到控制隊列342上以將包轉(zhuǎn)發(fā)給寫入數(shù)據(jù)管道 106,同時,由于每個管道級要執(zhí)行各自的包,因此每個管道級讀取合適的命 令或指令。類似地,可同時將命令和指令加載到控制隊列342上以從讀取數(shù) 據(jù)管道108請求包,而且,由于每個管道級要執(zhí)行各自的包,因此每個管道 級讀取合適的命令或指示。本領(lǐng)域技術(shù)人員會認識到控制和狀態(tài)寄存器340 和控制隊列342的其他特征和功能。
固態(tài)存儲控制器104和/或固態(tài)存儲設(shè)備102還可包括內(nèi)存庫交錯控制器 344、同步緩沖器346、存儲總線控制器348及多路轉(zhuǎn)換器("MUX") 350, 這些設(shè)備相對于圖4A和圖4B描述。
內(nèi)存庫交錯
圖4A是根據(jù)本發(fā)明的位于固態(tài)存儲控制器104內(nèi)的內(nèi)存庫交錯控制器 344 —種實施方式400的示意性框圖。內(nèi)存庫交錯控制器344連接到控制和狀 態(tài)寄存器340并通過MUX350、存儲總線控制器348和同步緩沖器346連接 到存儲I/O總線210和存儲控制總線212上,這在下文中有所描述。內(nèi)存庫交 錯控制器包括讀取代理402、寫入代理404、擦除代理406、管理代理408、 讀取隊列410a-n、寫入隊列412a-n、擦除隊列414a-n、用于固態(tài)存儲器110 中的內(nèi)存庫214的管理隊列416a-n、內(nèi)存庫控制器418a-n、總線仲裁器420 和狀態(tài)MUX422,這些設(shè)備在下文中描述。存儲總線控制器348包括具有重 映射模塊430的映射模塊424、狀態(tài)捕捉模塊426和NAND總線控制器438, 這些設(shè)備在下文中描述。
內(nèi)存庫交錯控制器344將一條或多條命令送往內(nèi)存庫交錯控制器344中 的兩個或更多個隊列,并在固態(tài)存儲器110的內(nèi)存庫214之間協(xié)調(diào)存儲在隊 列中的命令的執(zhí)行,以使得第一類型的命令在一個內(nèi)存庫241a上執(zhí)行而第二 類型的命令在第二內(nèi)存庫214b上執(zhí)行。所述一條或多條命令按命令類型分別 送入隊列中。固態(tài)存儲器110的每個內(nèi)存庫214在內(nèi)存庫交錯控制器344內(nèi) 具有相應(yīng)的隊列集,且每個隊列集包括每個命令類型的隊列。
內(nèi)存庫交錯控制器344在固態(tài)存儲器110的內(nèi)存庫214之間協(xié)調(diào)存儲在 隊列中的命令的執(zhí)行。例如,第一類型的命令在在一個內(nèi)存庫241a上執(zhí)行而 第二類型的命令在第二內(nèi)存庫214b上執(zhí)行。通常,命令類型和隊列類型包括 讀取和寫入命令和隊列410、 412,但是還可包括存儲々某介指定的其他命令和
55隊列。例如,在圖4A所描述的實施方式中,擦除和管理隊列414、 416被包 括在其中且適于閃存、NRAM、 MRAM、 DRAM、 PRAM等。
對于其他類型的固態(tài)存儲器110,可包括其他類型的命令和相應(yīng)的隊列而 不脫離本發(fā)明的范圍。FPGA固態(tài)存儲控制器104的靈活性質(zhì)允許存儲媒介的 靈活性。如果將閃存換成另 一種固態(tài)存儲類型,可改變內(nèi)存庫交錯控制器344、 存儲總線控制器348和MUX350以適應(yīng)媒介類型而不顯著地影響數(shù)據(jù)管道 106、 108和其他固態(tài)存儲控制器104運行。
在圖4A所描述的實施方式中,對每個內(nèi)存庫214來說,內(nèi)存庫交錯控制 器344包括用于從固態(tài)存儲器110讀取數(shù)據(jù)的讀取隊列410、用于將命令寫 入固態(tài)存儲器110的寫入隊列412、用于擦除固態(tài)存儲器中的擦除塊的擦除隊 列414、用于管理命令的管理隊列416。內(nèi)存庫交錯控制器344還包括相應(yīng)的 讀取、寫入、擦除和管理代理402、 404、 406、 408。在另一種實施方式中, 控制和狀態(tài)寄存器340和控制隊列342或類似元件在沒有內(nèi)存庫交錯控制器 344的情況為了發(fā)送給固態(tài)存儲器110的內(nèi)存庫214的數(shù)據(jù)而將命令排隊。
在一種實施方式中,代理402、 404、 406、 408將預(yù)定用于特定內(nèi)存庫214a 的合適類型的命令送到內(nèi)存庫214a的修正隊列。例如,讀取代理402可接收 用于內(nèi)存庫-1 214b的讀命令并將所述讀命令送到內(nèi)存庫-1讀取隊列410b。寫 入代理404可接收將數(shù)據(jù)寫入固態(tài)存儲器110的內(nèi)存庫-0 214a的寫入命令并 然后會將所述寫入命令發(fā)送給內(nèi)存庫-0寫入隊列412a。類似地,擦除代理406 可接收擦除命令以擦除內(nèi)存庫-1 214b中的擦除塊并然后會將所述擦除命令傳 送給內(nèi)存庫-1擦除隊列414b。管理代理408通常接收管理命令、狀態(tài)請求及 其類似消息,如復(fù)位命令或讀取內(nèi)存庫214 (如內(nèi)存庫-0 214a)的配置寄存器 的請求。管理代理408將所述管理命令發(fā)送給內(nèi)存庫-0管理隊列416a。
代理402、 404、 406、 408通常還監(jiān)測隊列410、 412、 414、 416的狀態(tài) 并當隊列402、 404、 406、 408滿、接近滿、喪失功能時,發(fā)送狀態(tài)、中斷或 其他消息。在一種實施方式中,代理402、 404、 406、 408^矣收命令并生成相 應(yīng)的子命令。在一種實施方式中,代理402、 404、 406、 408通過控制和狀態(tài) 寄存器340接收命令并生成相應(yīng)的子命令,所述子命令^皮轉(zhuǎn)發(fā)給隊列410、412、 414、 416。本領(lǐng)域技術(shù)人員會認識到代理402、 404、 406、 408的其他功能。
隊列410、 412、 414、 416通常接收命令并存儲所述命令直到所述命令被
56要求傳送給固態(tài)存儲器內(nèi)存庫214。在典型的實施方式中,隊列410、 412、 414、 416是先進先出("FIFO")寄存器或以FIFO運行的類似組件。在另一 種實施方式中,隊列410、 412、 414、 4166按與數(shù)據(jù)、重要性或其他標準相 匹配的順序來存儲命令。
內(nèi)存庫控制器418通常接收來自隊列410、 412、 414、 416的命令并生成 合適的子命令。例如,內(nèi)存庫-0寫入隊列412a可接收將數(shù)據(jù)包的頁寫入內(nèi)存 庫-0 214a的命令。內(nèi)存庫-0控制器418a可在合適的時間接收寫入命令并可為 每個存儲在寫入緩沖器320中的數(shù)據(jù)包生成一個或多個寫入子命令(將要^皮 寫入內(nèi)存庫-0 214a的頁中)。例如,內(nèi)存庫-0控制器418a可生成驗證內(nèi)存庫 -0 214a和固態(tài)存儲陣列216狀態(tài)的命令、選擇寫入一個或多個數(shù)據(jù)包的合適 位置的命令、清除位于固態(tài)存儲陣列216內(nèi)的輸入緩沖器的命令、將一個或 多個數(shù)據(jù)包傳送所述輸入緩沖器的命令、將輸入緩沖器放到選定位置中的命 令、檢驗數(shù)據(jù)被正確編程的命令,并且如果發(fā)生程序故障,則一次或多次地 中斷主控制器、重試寫入同一物理地址并重試寫入不同的物理地址。此外, 與實例中的寫入命令一起,存儲總線控制器348會將一條或多條命令乘以每 條存儲I/O總線210a-n從而翻倍,而所述命令的邏輯地址映射到用于存儲I/O 總線210a的第一物理地址,并映射到用于存儲I/O總線210a的第二物理地址, 下面將詳細描述。
通常,總線仲裁器420選自內(nèi)存庫控制器418并從內(nèi)存庫控制器418的 輸出隊列提取子命令,并且將這些子命令以最優(yōu)化內(nèi)存庫214性能的序列形 式發(fā)-給存儲總線控制器348。在另一種實施方式中,總線仲裁器420可響應(yīng)高 級中斷并修改普通選擇標準。在另一種實施方式中,主控制器224可通過控 制和狀態(tài)寄存器340控制總線仲裁器420。本領(lǐng)域技術(shù)人員會認識到總線控制 器420可控制和交錯從內(nèi)存庫控制器418傳送到固態(tài)存儲器110的命令序列。
通常,總線仲裁器420協(xié)調(diào)來自內(nèi)存庫控制器418適當?shù)拿詈兔铑?型所需的相應(yīng)數(shù)據(jù)的選擇,并將所述命令和數(shù)據(jù)發(fā)送給存儲總線控制器348。 總線仲裁器420通常還將命令發(fā)送給存儲控制總線212以選擇合適的內(nèi)存庫 214。對于閃存或其他具有異步、雙向串行的存儲I/O總線210的固態(tài)存儲器 110而言, 一次只能傳送一條命令(控制信息)或數(shù)據(jù)集。例如,當將寫入命 令或數(shù)據(jù)通過存儲I/O總線210傳送給固態(tài)存儲器110時,讀取命令、讀取的
57數(shù)據(jù)、擦除命令、管理命令或其他狀態(tài)命令不能在存儲I/O總線210上傳輸。 例如,當從存儲I/O總線210讀取數(shù)據(jù)時,不能向固態(tài)存儲器110寫入數(shù)據(jù)。
例如,在內(nèi)存庫-0的寫操作期間,總線仲裁器420選擇在其隊列頂部具 有寫入命令或一系列寫入子命令的內(nèi)存庫-0控制器418a,所述一系列寫入子 命令使得存儲總線控制器348執(zhí)行后繼的序列??偩€仲裁器420將寫入命令 轉(zhuǎn)發(fā)給存儲總線控制器348,該存儲總線控制器348通過下列方式建立了寫入 命令通過存儲控制總線212選擇內(nèi)存庫-0 214a、發(fā)送清除與內(nèi)存庫-0 214a 關(guān)聯(lián)的固態(tài)存儲元件110的輸入緩沖器的命令、發(fā)送驗證與內(nèi)存庫-0 214a關(guān) 聯(lián)的固態(tài)存儲元件216、 218、 220的狀態(tài)的命令。然后,存儲總線控制器348 通過包含了物理地址存儲I/O總線210傳送寫入命令,該物理地址如同映射自 邏輯4f除塊地址一樣包括用于每個單獨的物理擦除固態(tài)存儲元件216a-m的邏 輯擦除塊地址。然后,存儲總線控制器348通過多路轉(zhuǎn)換器350將寫入緩沖 器經(jīng)寫入同步緩沖器多路復(fù)用到存儲I/O總線210并使寫入數(shù)據(jù)流向合適的 頁。當所述頁寫滿時,然后,存儲總線控制器348促使與內(nèi)存庫-0 214a關(guān)聯(lián) 的固態(tài)存儲元件216a-m將輸入緩沖器編入固態(tài)存儲元件216a-m的內(nèi)存單元。 最終,存儲總線控制器348驗證狀態(tài)以確保所述頁被正確編程。
讀操作與上文的寫操作實例類似。在讀操作期間,通常,總線仲裁器420 或內(nèi)存庫交錯控制器344的其他組件接收數(shù)據(jù)和相應(yīng)的狀態(tài)信息并將數(shù)據(jù)發(fā) 送給讀取數(shù)據(jù)管道108,同時將狀態(tài)信息發(fā)送給控制和狀態(tài)寄存器340。通常, 從總線仲裁器420傳送給存儲總線控制器348的讀數(shù)據(jù)命令會促使多路轉(zhuǎn)換 器350將讀數(shù)據(jù)通過存儲I/O總線210傳送給讀取數(shù)據(jù)管道108并通過狀態(tài)多 路轉(zhuǎn)換器422向控制和狀態(tài)寄存器340發(fā)送狀態(tài)信息。
總線仲裁器420協(xié)調(diào)不同的命令類型和數(shù)據(jù)存取模式,使得在任意給定 的時間內(nèi),在總線上只有合適的命令類型或?qū)?yīng)數(shù)據(jù)。如果總線仲裁器420 已選擇了寫入命令,且寫入子命令和對應(yīng)數(shù)據(jù)正在被寫入固態(tài)存儲器110,總 線仲裁器420不會允許在存儲I/O總線210存在其他命令類型。有利地是,總 線仲裁器420使用定時信息(如預(yù)定的命令執(zhí)行時間)以及接收到的關(guān)于內(nèi) 存庫214狀態(tài)的信息,以協(xié)調(diào)總線上不同命令的執(zhí)行,這樣做的目標是最小 化或消除總線的停工時間。
通過總線仲裁器420的主控制器224通常使用存儲在隊列410、 412、414、
58416中的命令的預(yù)定完成時間以及狀態(tài)信息,使得在一個內(nèi)存庫214a上執(zhí)行 與命令關(guān)聯(lián)的子命令時,而在其他內(nèi)存庫241b-n上執(zhí)行其他命令的其他子命 令。當內(nèi)存庫214a完全執(zhí)行完一條命令時,總線仲裁器420將其他命令傳給 內(nèi)存庫214a??偩€仲裁器420還可與協(xié)調(diào)存儲在隊列410、 412、 414、 416的 命令一起協(xié)調(diào)不存儲在隊列410、 412、 414、 416的其他命令。
例如,可發(fā)出擦除命令以擦除固態(tài)存儲器110內(nèi)的一組擦除塊。執(zhí)行擦 除命令可消耗比執(zhí)行寫入或讀取命令多10到1000倍的時間,或消耗比執(zhí)行 程序命令多io到100倍的時間。對于N個內(nèi)存庫214,內(nèi)存庫交錯控制器可 將擦除命令分割為N條命令,每條命令擦除內(nèi)存庫214a的虛擬擦除塊。當內(nèi) 存庫-0 214a執(zhí)行擦除命令時,總線仲裁器420可選擇在其他內(nèi)存庫214b-n上 執(zhí)行的其他命令??偩€仲裁器420還可與其他組件(如存儲總線控制器348、 主控制器224等) 一起工作以在總線之間協(xié)調(diào)命令的執(zhí)行。利用總線仲裁器 420、內(nèi)存庫控制器418、隊列410、 412、 414、 416、和內(nèi)存庫交錯控制器的 代理402、 404、 406、 408協(xié)調(diào)命令的執(zhí)行可顯著的提升性能(相比于其他沒 有內(nèi)存庫交錯功能的固態(tài)存儲系統(tǒng))。
在一種實施方式中,固態(tài)控制器104包括一個內(nèi)存庫交錯控制器344,該 內(nèi)存庫交錯控制器344為固態(tài)存儲器110的所有存儲元件216、 218、 220提 供服務(wù)。在另一種實施方式中,固態(tài)控制器104內(nèi)存庫包括用于每個存儲元 件行216a-m、 218a-m、 220a-m的交錯控制器344。例如一個內(nèi)存庫交錯控制 器344服務(wù)存儲元件的一行SSS0.0-SSS0.N216a、 218a、 220a,第二內(nèi)存庫 交錯控制器344服務(wù)存儲元件的第二行SSS1.0-SSSl.N216b、 218b、 220b, 等等。
圖4B是示出了根據(jù)本發(fā)明的位于固態(tài)存儲設(shè)備內(nèi)的內(nèi)存庫交錯控制器 的一種替代實施方式401的示意性框圖。圖4B所示實施方式中描述的組件 210、 212、 340、 346、 348、 350、 402-430大體上與相對于圖4A描述的 內(nèi)存庫交錯裝置400類似,除了下述不同點每個內(nèi)存庫214包括單獨的隊 列432a-n及用于內(nèi)存庫的(如內(nèi)存庫-0 214a)讀取命令、寫入命令、擦除命 令、管理命令等被傳送給內(nèi)存庫214的單獨隊列432a。在一種實施方式中, 隊列432是F1F0。在另一種實施方式中,隊列432可具有以不同于存儲的順 序的順序從隊列432中提取的命令。在另一種替代實施方式(未示出)中,
59讀取代理402、寫入代理404、擦除代理406和管理代理408可結(jié)合成單個代 理,所迷單個代理將命令分配給合適的隊列432a-n。
在另一種替代的實施方式(未示出)中,命令存儲在單獨的隊列中,其 中,可以以不同于存儲的順序的順序從隊列中提取命令,從而使得內(nèi)存庫交 錯控制器344在余下的內(nèi)存庫214b-n上執(zhí)行。本領(lǐng)域技術(shù)人員會輕易地認識 到其他能夠在一個內(nèi)存庫214a上執(zhí)行命令而在其他內(nèi)存庫214b-n上執(zhí)行其他 命令的隊列配置和類型。
特定存儲組件
固態(tài)存儲控制器104包括同步緩沖器346,該同步緩沖器346從固態(tài)存儲 器110發(fā)送和接收的命令和狀態(tài)消息。同步緩沖器346位于固態(tài)存儲時鐘域 和本地總線時鐘域之間的邊界上,并提供緩沖以解決時鐘域差異。同步緩沖 器346、寫入同步緩沖器308和讀取同步緩沖器328可獨立地或共同運作以緩 沖數(shù)據(jù)、命令、狀態(tài)消息等等。在優(yōu)選實施方式中,同步緩沖器346所處的 位置使得跨越時鐘域的信號數(shù)量最少。本領(lǐng)域技術(shù)人員會認識到時鐘域間 的同步可任意運行在固態(tài)存儲設(shè)備102的其他位置,以優(yōu)化設(shè)計實施方案的 某些方面。
固態(tài)存儲控制器104包括存儲總線控制器348,該存儲總線控制器348解 釋和翻譯用于發(fā)送給或讀取自固態(tài)存儲器110的數(shù)據(jù)的命令并基于固態(tài)存儲 器110的類型接收自固態(tài)存儲器110的狀態(tài)消息。例如,存儲總線控制器348 可針對不同的存儲類型、不同性能特點、不同制造商的存儲器等而具有不同 的定時要求。存儲總線控制器348還將控制命令發(fā)送給存儲控制總線212。
在優(yōu)選實施方式中,固態(tài)存儲控制器104包括MUX350,該MUX350包 括多路轉(zhuǎn)換器350a-n的陣列,其中,每個多路轉(zhuǎn)換器用于固態(tài)存儲陣列110 的一行。例如,多路轉(zhuǎn)換器350a與固態(tài)存儲元件216a、 218a、 220a關(guān)聯(lián)。 MUX350通過存儲總線控制器348、同步緩沖器346和內(nèi)存庫交錯控制器344 將來自寫入數(shù)據(jù)管道106的數(shù)據(jù)和來自存儲總線控制器348的命令經(jīng)存儲I/O 總線210路由至固態(tài)存儲器110,并將來自固態(tài)存儲器110的數(shù)據(jù)和狀態(tài)消息 經(jīng)存儲I/O總線210路由至讀取數(shù)據(jù)管道108和控制和狀態(tài)寄存器340。
在優(yōu)選實施方式中,固態(tài)存儲控制器104包括用于固態(tài)存儲元件的每一 行的(如SSS0.1 216a、 SSS0.2 218a、 SSS0.N220a)的MUX350。 MUX350
60將來自寫入數(shù)據(jù)管道106的數(shù)據(jù)和發(fā)送給固態(tài)存儲器110的命令通過存儲I/O 總線210結(jié)合起來,并將需要由讀取數(shù)據(jù)管道108處理的數(shù)據(jù)從命令中分離 出來。存儲在寫入緩沖器320中的包通過用于固態(tài)存儲元件的每一行(SSS x.O toSSSx.N216、 218、 220)的寫入緩沖器308由寫入緩沖器外的總線傳給用 于固態(tài)存儲元件的每一行(SSSx.0toSSSx.N216、 218、 220)的MUX350。 MUX350從存儲I/O總線210接收命令和讀取數(shù)據(jù)。MUX350還將狀態(tài)消息 傳給存儲總線控制器348。
存儲總線控制器348包括映射模塊424。映射模塊424將擦除塊的邏輯地 址映射到擦除塊的一個或多個物理地址。例如,每個內(nèi)存庫214a具有20個 存儲元件的陣列(如SSS0.0至SSSM.0 216)的固態(tài)存儲器110可具有映射 到擦除塊的20個物理地址的特定擦除塊的邏輯地址(每個存儲元件有一個物 理地址)。由于平行訪問存儲元件,所以位于存儲元件216a、 218a、 220a的行 中的每個存儲元件中的同 一位置的擦除塊會分享物理地址。為了選擇一個擦 除塊(如在存儲元件SSS 0.0 216a中)代替行(如在存儲元件SSS 0.0、 0,1,... 0.N216a、 2]8a、 220a中)中的所有擦除塊,可選擇一個內(nèi)存庫(在這種情況 下為內(nèi)存庫-0 214a)。
這種用于擦除塊的邏輯到物理的映射是有好處的,這是由于如果一個擦 除塊已損壞或不可訪問,所述映射可改為映射到另一擦除塊。當一個元件的 擦除塊出錯時,這種方法減少了失去整個虛擬擦除塊的損失。重映射^t塊430 將擦除塊的邏輯地址的映射改為虛擬擦除塊的一個或多個物理地址(遍布存 儲元件的陣列)。例如,虛擬擦除塊l可映射到存儲元件SSS 0.0 216a的擦除 塊1、映射到存儲元件SSS 1.0 216b的擦除塊1、...和映射到存儲元件M.O 216m,虛擬擦除塊2可映射到存儲元件SSS 0.1 218a的擦除塊2、映射到存儲 元件SSS1.1218b的擦除塊2、...和映射到存儲元件M.l 218m,等等。
如果存儲元件SSS 0.0 216a的擦除塊1損壞、由于損耗遇到錯誤或由于一 些原因不能被使用,重映射模塊可將從邏輯到物理的映射改為指向虛擬擦除 塊1的擦除塊1的邏輯地址的映射。如果存儲元件SSS 0.0 216a的空閑擦除塊 (將其稱為擦除塊221)可用且當前并未被映射,重映射模塊可改變虛擬擦除 塊1的映射為映射到指向存儲元件SSS 0.0 216的擦除塊221,而繼續(xù)指向存 儲元件SSS 1.0 216b的擦除塊1、存儲元件SSS2.0(未示出)的擦除塊l、...
61和指向存儲元件M.O 216m。映射模塊424或重映射模塊430可按固定順序映 射擦除塊(虛擬擦除塊1到存儲元件的擦除塊1,虛擬擦除塊2到存儲元件的 擦除塊2,等等)或可按基于其他一些標準的順序映射存儲元件216、 218、 220的擦除塊。
在一種實施方式中,可按訪問時間分組擦除塊。按訪問時間分組、均衡 命令執(zhí)行的時間(如將數(shù)據(jù)編入或?qū)懭胫付ú脸龎K的頁)可平均命令補齊, 從而使得在虛擬擦除塊的擦除塊之間執(zhí)行的命令不會由于最慢的擦除塊而被 限制。在另一種實施方式中,可按損耗程度、運行狀況來分組擦除塊。本領(lǐng) 域技術(shù)人員會認識到當映射或重映射擦除塊時需要考慮的其他問題。
在一種實施方式中,存儲總線控制器348包括狀態(tài)捕捉;f莫塊426,該狀態(tài) 捕捉模塊426接收來自固態(tài)存儲器110的狀態(tài)消息并將該狀態(tài)消息發(fā)送給狀 態(tài)MUX422。在另一種實施方式中,當固態(tài)存儲器110為閃存時,存儲總線 控制器348包括NAND總線控制器428。 NAND總線控制器428將命令從讀 取和寫入數(shù)據(jù)管道106、 108傳送給固態(tài)存儲器110中的正確位置,并根據(jù)所 述閃存的特點協(xié)調(diào)命令執(zhí)行的時間,等等。如果固態(tài)存儲器110為另一種類 型的固態(tài)存儲器,則將NAND總線控制器428替換為針對存儲類型的總線控 制器。本領(lǐng)域技術(shù)人員會認識到NAND總線控制器428的其他功能。
流程圖
圖5 A是根據(jù)本發(fā)明的在固態(tài)存儲設(shè)備102內(nèi)釆用數(shù)據(jù)管道管理數(shù)據(jù)的方 法500的一種實施方式的示意性流程圖。方法500始于步驟502,輸入緩沖器306 接收一個或多個將要被寫入固態(tài)存儲器110的數(shù)據(jù)段(步驟504)。封包器302 可創(chuàng)建一個或多個對象指定包以及對象。通常來說,所述一個或多個數(shù)據(jù)段 包括對象的至少一部分,但也可以是整個對象。封包器302為每個包添加包頭, 所述包頭通常包括包的長度和對象內(nèi)包的序列號。封包器302接收一個或多個 存儲在輸入緩沖器306的數(shù)據(jù)或元數(shù)據(jù)段(步驟504),并通過創(chuàng)建一個或多 個大小適于固態(tài)存儲器110的包來封包所述一個或多個數(shù)據(jù)或元數(shù)據(jù)段(步驟 506),其中,每個包包括一個包頭和來自一個或個段的數(shù)據(jù)。
通常,第一包包括對象標識符,該對象標識符確定對象,為了該對象而 創(chuàng)建包。第二包可包括具有信息的包頭,該信息由固態(tài)存儲設(shè)備102用于關(guān) 聯(lián)第二包和第一包中確定的對象,該包頭還具有在對象內(nèi)定位第二包的偏移
62信息和數(shù)據(jù)。固態(tài)存儲設(shè)備控制器202管理存儲體214和包流向的物理區(qū)域。 ECC發(fā)生器304接收來自封包器302的包并為數(shù)據(jù)包生成ECC (步驟 508 )。通常,在包和ECC塊之間沒有固定關(guān)系。ECC塊可包括一個或多個包。 包可包括一個或多個ECC塊。包可始于ECC塊內(nèi)的任意位置并可在ECC塊 內(nèi)的任意位置結(jié)束。包可始于第一 ECC塊內(nèi)的任意位置并可在相繼的ECC 塊中的任意位置結(jié)束。
寫入同步緩沖器308在將ECC塊寫入固態(tài)存儲器110之前緩沖分布在對 應(yīng)ECC塊中的包(步驟510),然后固態(tài)存儲控制器104在考慮到時鐘域差異 的適當?shù)臅r間寫入數(shù)據(jù)(步驟512),方法500終止于步驟514。寫入同步緩 沖器308位于本地時鐘域和固態(tài)存儲器110時鐘域的邊界上。注意到為方便 起見,方法500描迷了接收一個或多個數(shù)據(jù)段并寫入一個或多個數(shù)據(jù)包,但 通常接收數(shù)據(jù)段流或組。通常,若千包括完整固態(tài)存儲器110的虛擬頁的ECC 塊被寫入固態(tài)存儲器110。通常,封包器302接收某個大小的數(shù)據(jù)段并生成另 一大小的包。這必然需要數(shù)據(jù)或元數(shù)據(jù)段或數(shù)據(jù)或元數(shù)據(jù)段的部分結(jié)合起來,
以形成將段的所有數(shù)據(jù)捕捉進包的數(shù)據(jù)包。
圖5B是示出了根據(jù)本發(fā)明的用于服務(wù)器內(nèi)SAN的方法的一種實施方式 的示意性流程圖。方法500開始于522,并且存儲通信模塊162促進第一存儲 控制器152a和位于第一服務(wù)器112a外部的至少一個設(shè)備之間的通信(步驟 554)。第一存儲控制器152a和外部設(shè)備之間的通信獨立于第一服務(wù)器112a。 第一存儲控制器112a位于第一服務(wù)器112a內(nèi)部,并且第一存儲控制器152a 控制至少一個存儲設(shè)備154a。第一服務(wù)器112a包括與第一服務(wù)器112a和第 一存儲控制器152a搭配使用的網(wǎng)絡(luò)接口 156a。服務(wù)器內(nèi)SAN模塊164應(yīng)答 存儲請求(步驟556 )并且方法501終止于558。服務(wù)器內(nèi)SAN模塊164使 用網(wǎng)絡(luò)協(xié)議和/或總線協(xié)議應(yīng)答存儲請求(步驟556 )。服務(wù)器內(nèi)SAN模塊164 獨立于第一服務(wù)器112a應(yīng)答存儲請求(步驟556 )并且從客戶端114、 114a 接收服務(wù)請求。
圖6是根據(jù)本發(fā)明的在固態(tài)存儲設(shè)備102內(nèi)采用數(shù)據(jù)管道管理數(shù)據(jù)的方 法600的再一種實施方式的示意性流程圖。方法600始于步驟602,輸入緩沖 器306接收一個或多個將要被寫入固態(tài)存儲器110的數(shù)據(jù)或元數(shù)據(jù)段(步驟 604)。封包器302為每個包添加包頭,所述包頭通常包括對象內(nèi)包的長度。
63封包器302接收一個或多個存儲在輸入緩沖器306中的段(步驟604),并通 過創(chuàng)建一個或多個大小適于固態(tài)存儲器110的包來封包一個或多個,爻(步驟 606),其中每個包包括包頭和來自一個或多個段的數(shù)據(jù)。
ECC發(fā)生器304接收來自封包器302的包并生成一個或多個用于包的 ECC塊(步驟608)。寫入同步緩沖器308在將ECC塊寫入固態(tài)存儲器110 之前緩沖分布在對應(yīng)ECC塊中的包(步驟610 ),然后固態(tài)存儲控制器104在 考慮到時鐘域差異的合適的時間寫入數(shù)據(jù)(步驟612)。當從固態(tài)存儲器110 請求數(shù)據(jù)時,包括一個或多個數(shù)據(jù)包的ECC塊^皮讀入讀取同步緩沖器328并 被緩沖(步驟614)。通過存儲I/O總線210接收包的ECC塊。由于存儲I/0 總線210是雙向,當讀取數(shù)據(jù)時,寫操作、命令操作等被停止。
ECC糾錯模塊322接收暫存在讀取同步緩沖器328中的請求包的ECC塊, 并在必要時修正每個ECC塊中的錯誤(步驟616 )。如果ECC糾錯^^塊322 確定在ECC塊中存在一個或多個錯誤并且錯誤可利用ECC —并修正,ECC 糾錯模塊322修正ECC塊中的錯誤(步驟616 )。如果ECC糾錯模塊322確 定探測到的錯誤不可用ECC修正,則ECC糾錯;漠塊322發(fā)送中斷。
解包器324在ECC糾錯;漠塊322修正任何錯誤之后接收請求包(步驟618 ) 并通過檢查和刪除每個包的包頭解包所述包(步驟618)。對齊模塊326接收 經(jīng)過解包的包、刪除多余的數(shù)據(jù)、并采用與請求數(shù)據(jù)段的設(shè)備兼容的形式按 對象的數(shù)據(jù)段重新格式化所述數(shù)據(jù)(步驟620 )。輸入緩沖器330接收經(jīng)過解 包的請求包,并在包傳送給請求設(shè)備之前緩沖包(步驟622),方法600終止 于步驟624。
圖7是示意性流程圖,示出根據(jù)本發(fā)明使用存儲體交錯來管理固態(tài)存儲 設(shè)備內(nèi)的數(shù)據(jù)的方法700的一種實施方式。方法600在602開始而且存儲體 交錯控制器344將一個或多個命令在604指向兩個或更多個隊列410、 412、 414、 416。典型的是4妻口進程402、 404、 406、 408將這些命令通過命令類型 在604指向隊列410、 412、 414、 416。隊列410、 412、 414、 416中每個集合 都包括用于每種命令類型的隊列。存儲體交錯控制器344在606在存儲體214 之間協(xié)調(diào)隊列410、 412、 414、 416中保存的命令的執(zhí)行,以便第一類型的命 令在存儲體214a上執(zhí)行,而第二類型的命令在第二類型存儲體214b上執(zhí)行, 而且方法600在608結(jié)束。
64存儲空間恢復(fù)
圖8是示出了根據(jù)本發(fā)明的用于固態(tài)存儲設(shè)備102中無用存儲單元收集 的裝置800的一種實施方式的示意性框圖。裝置800包括順序存儲^t塊802、 存儲部選擇模塊804、數(shù)據(jù)恢復(fù)模塊806、和存儲部恢復(fù)模塊808,這些模塊 描述如下。在其他實施方式中,裝置800包括無用存儲單元標記^f莫塊812和 擦除模塊810。
裝置800包括順序存儲才莫塊802,該順序存儲模塊802將數(shù)據(jù)包順序地寫 入存儲部內(nèi)的頁。無論是新的包還是修改過的包,這些包都按順序存儲。在 這種實施方式中,通常不將修改過的包寫回其先前存儲的位置。在一種實施 方式中,順序存儲模塊802將包寫入存儲部的頁中的第一位置,然后寫入該 頁中的下一個位置,并繼續(xù)寫入下一個位置和再下一個位置,直到該頁被寫 滿。然后,順序存儲模塊802開始填充所述存儲部中的下一頁。這個過程一 直持續(xù)到所述存儲部被寫滿。
在優(yōu)選實施方式中,順序存儲模塊802開始將包寫入內(nèi)存庫(內(nèi)存庫-0 214a)的存儲元件(如SSSO.O到SSSM.0 216)中的存儲寫入緩沖器。當所 述存儲寫入緩沖器寫滿時,固態(tài)存儲控制器104使得所述存儲寫入緩沖器中 的數(shù)據(jù)被編入內(nèi)存庫214a的存儲元件216中的指定頁。然后,另一個內(nèi)存庫 (如內(nèi)存庫-l 214b)被選定,并且當一個內(nèi)存庫-O編程所述指定頁時,順序 存儲模塊802開始將包寫入內(nèi)存庫214b的存儲元件218的存儲寫入緩沖器。 當內(nèi)存庫214b的存儲寫入緩沖器寫滿時,該存儲寫入緩沖器中的內(nèi)容被編入 每個存儲元件218中的另一指定頁。這個過程是有效率的,這是因為當一個 內(nèi)存庫214a編程頁時,可填充另一個內(nèi)存庫214b的存儲寫入緩沖器。
存儲部包括固態(tài)存儲設(shè)備102中的固態(tài)存儲器110的一部分。通常,存 儲部是擦除塊。對于閃存來說,擦除塊上的擦除操作通過充電每個單元來將 一寫入擦除塊中的每個位。相比于以都是1的位置開始的編程操作,這是冗 長的過程,并且隨著數(shù)據(jù)寫入,通過放電用O寫入的單元將某些位改變?yōu)?。 然而,在固態(tài)存儲器110不是閃存或具有其中擦除周期花費與其他操作,例 如讀取或編程類似的時間量的閃存的情況下,可能不需要擦除存儲部。
正如此處所使用的,存儲部在大小上與擦除塊等同,但可(或可不)被 擦除。當在此處使用擦除塊時,擦除塊可指存儲元件(如SSS0.0 216a)內(nèi)指
65定大小的特定區(qū)域,并通常包括一定數(shù)量的頁。當"擦除塊"與閃存結(jié)合使 用時,擦除塊通常是在寫入之前被擦除的存儲部。當"擦除塊"與"固態(tài)存 儲器,, 一起使用時,擦除塊可(或可不)被擦除。正如此處所使用的,擦除
塊可包括一個擦除塊或擦除塊組,存儲元件(如SSS 0.0到SSS M.O 216a-n) 的每一行都具有該擦除塊組中的一個擦除塊,擦除塊或擦除塊組在此處還可 被稱為虛擬擦除塊。當擦除塊指與所述虛擬擦除塊關(guān)聯(lián)的邏輯構(gòu)建時,所述 擦除塊在此處可被稱為邏輯擦除塊("LEB")。
通常,按照處理的順序順序地存儲所述包。在一種實施方式中,當使用 寫入數(shù)據(jù)管道106時,順序存儲模塊802按照包從寫入數(shù)據(jù)管道106出來的 順序存儲包。這種順序可能是由于下述原因來自請求設(shè)備155的數(shù)據(jù)段與 讀取自另一存儲部的有效數(shù)據(jù)包(正如在下述的恢復(fù)操作期間從存儲部恢復(fù) 數(shù)據(jù)一樣)混合。將恢復(fù)的、有效的數(shù)據(jù)包重路由到寫入數(shù)據(jù)管道可包括如 上文中相對于圖3的固態(tài)存儲控制器104描述的垃圾收集器旁路316。
裝置800包括選擇恢復(fù)的存儲部的存儲部選擇模塊804。選擇恢復(fù)的存儲 部可以使順序存儲模塊802將所述存儲部重新用于寫入數(shù)據(jù),因此將所述恢 復(fù)的存儲部添加到存儲池中,或者所述存儲部被重新用于在確定下述條件后 從所述存儲部中恢復(fù)有效數(shù)據(jù)所述存儲部失效、不可靠、應(yīng)該^皮刷新、或 其他將所述存儲部暫時地或永久地移出所述存儲池的理由。在另一種實施方 式中,存儲部選擇才莫塊804通過識別具有大量無效數(shù)據(jù)的存儲部或擦除塊來 選擇恢復(fù)的存儲部。
在另一種實施方式中,存儲部選擇^t塊804通過識別具有低額損耗的存 儲部或擦除塊來選擇恢復(fù)的存儲部。例如,識別具有低額損耗的存儲部或擦 除塊可包括識別無效數(shù)據(jù)少、擦除重復(fù)的次數(shù)少、位出錯率低或程序計數(shù)低 (緩沖器中 一頁數(shù)據(jù)寫入所述存儲部中的頁的次數(shù)少;程序計數(shù)可從下列情 況開始被測量制造設(shè)備時、所述存儲部最近一次被擦除時、其他任意事件 發(fā)生時及這些情況的組合)的存儲部。存儲部選擇模塊804還可使用上述參 數(shù)中的任意組合或其他參數(shù)以確定具有低額損耗的存儲部。通過確定具有低 額損耗的存儲部來選擇恢復(fù)的存儲部可有助于發(fā)現(xiàn)未充分利用的存儲部,還 可由于損耗均衡而被恢復(fù),等等。
在另一種實施方式中,存儲部選擇模塊804通過識別具有高額損耗的存儲部或擦除塊來選擇恢復(fù)的存儲部。例如,識別具有高額損耗的存儲部或擦 除塊來選擇恢復(fù)的存儲部包括識別擦除重復(fù)次數(shù)多、位出錯率高、具有不可
恢復(fù)的ECC塊或程序計數(shù)高的存儲部。存儲部選擇模塊804還可使用上述參 數(shù)的任意組合或其他參數(shù)以確定具有高額損耗的存儲部。通過確定具有高額 損耗的存儲部來選擇恢復(fù)的存儲部可有助于發(fā)現(xiàn)被過度使用的存儲部,還可 通過利用擦除周期刷新所述存儲部而被恢復(fù)等等,或者使所述存儲部像不能 使用那樣不提供服務(wù)。
裝置800包括數(shù)據(jù)恢復(fù)模塊806,該數(shù)據(jù)恢復(fù)模塊806從選定為恢復(fù)的存 儲部中讀取有效數(shù)據(jù)包、將所述有效數(shù)據(jù)包與其他將要由順序存儲模塊802 順序地寫入的數(shù)據(jù)包排隊并更新具有由順序存儲模塊802寫入的有效數(shù)據(jù)的 新物理地址的索引。通常,所述索引為對象索引,該對象索引將對象的數(shù)據(jù) 對象標識符映射到形成包的位置的物理地址,所述數(shù)據(jù)對象存儲在固態(tài)存儲 器110中。
在一種實施方式中,裝置800包括存儲部恢復(fù)模塊808,該存儲部恢復(fù)模 塊808為使用或再使用而準備所述存儲部并將所述存儲部標記為對順序存儲 模塊802可用,以在數(shù)據(jù)恢復(fù)模塊806完成從所述存儲部中復(fù)制有效數(shù)據(jù)之 后順序地寫入數(shù)據(jù)包。在另一種實施方式中,裝置800包括存儲部恢復(fù)模塊 808,該存儲部恢復(fù)模塊808將選定為恢復(fù)的存儲部標記為無法存儲數(shù)據(jù)。通 常,這是由于存儲部選擇模塊804識別具有高額損耗的存儲部或擦除塊來選 擇恢復(fù)的存儲部,從而使得所述存儲部或擦除塊沒有條件被用于可靠的數(shù)據(jù) 存儲。
在一種實施方式中,裝置800位于固態(tài)存儲設(shè)備102的固態(tài)存儲設(shè)備控 制器202內(nèi)。在另一種實施方式中,裝置800控制固態(tài)存儲設(shè)備控制器202。 在另一種實施方式中,裝置800的一部分位于固態(tài)存儲設(shè)備控制器202內(nèi)。 在另一種實施方式中,由數(shù)據(jù)恢復(fù)模塊806更新的對象索引也位于固態(tài)存儲 設(shè)備控制器202內(nèi)。
在一種實施方式中,所述存儲部為擦除塊,并且裝置800包括擦除模塊 810,該擦除模塊810在數(shù)據(jù)恢復(fù)模塊806完成從所述選定的擦除塊中復(fù)制有 效數(shù)據(jù)包之后并在存儲部恢復(fù)模塊808將所述擦除塊標記為可用之前,擦除 選定為恢復(fù)的擦除塊。對于閃存和其他擦除操作消耗的時間比讀取或?qū)懭氩?作消耗的時間長得多的固態(tài)存儲器來說,在使數(shù)據(jù)塊可以寫入新數(shù)據(jù)之前擦
67除所述數(shù)據(jù)塊有助于高效的操作。當固態(tài)存儲器110布置在內(nèi)存庫214內(nèi)時, 擦除^f莫塊810的擦除操作可在一個內(nèi)存庫上執(zhí)行,而另一個內(nèi)存庫可執(zhí)行讀 取、寫入或其他操作。
在一種實施方式中,裝置800包括垃圾標記才莫塊812,該垃圾標記模塊 812將存儲部中的數(shù)據(jù)包識別為無效,以響應(yīng)指示所述數(shù)據(jù)包不再有效的操 作。例如,如果數(shù)據(jù)包被刪除,垃圾標記模塊812可將所述數(shù)據(jù)包識別為無 效。讀-修改-寫操作是用于將數(shù)據(jù)包識別為無效的另一種方法。在一種實施方 式中,垃圾標記^t塊812可通過更新索引將所述數(shù)據(jù)包識別為無效纟在另一 種實施方式中,垃圾標記模塊812可通過存儲另一數(shù)據(jù)包將所述數(shù)據(jù)包識別 為無效,所述另一數(shù)據(jù)包指示無效的數(shù)據(jù)包已經(jīng)被刪除。這種方法是有利的, 這是由于在固態(tài)存儲器110中存儲所述數(shù)據(jù)包已被刪除的信息允許對象索引 重建才莫塊262或類似;溪塊重建具有項的對象索引,所述項指示所述無效的數(shù) 據(jù)包已經(jīng)被刪除。
在一種實施方式中,裝置800可被用于在清洗命令之后填充數(shù)據(jù)的虛擬 頁中的剩余部分,以提升整體的性能,其中,所述清洗命令使數(shù)據(jù)停止流入 寫入數(shù)據(jù)管道106,直到寫入數(shù)據(jù)管道106為空且所有的包已被永久地寫入非 易失性固態(tài)存儲器IIO。這具有以下好處降低了需要的垃圾收集的量、減少 了用于擦除存儲部的時間并減少了編程虛擬頁所需的時間。例如,可僅在準 備將一個小包寫入固態(tài)存儲器100的虛擬頁內(nèi)時,接收清洗命令。編程這個 幾乎為空的頁可能會引起下述結(jié)果需要立即恢復(fù)浪費的空間;導(dǎo)致所述存 儲部內(nèi)的有效數(shù)據(jù)被當作垃圾不必要的收集;及擦除、恢復(fù)所述存儲空間并 將所述存儲空間返回到可用空間池以被順序存儲模塊802寫入。
將所述數(shù)據(jù)包標記為無效而不是實際上擦除無效的數(shù)據(jù)包是有效率的, 這是因為,如上所述,對于閃存和其他類似存儲器來說,擦除操作消耗相當 長的時間。允許垃圾收集系統(tǒng)(如裝置800中所述的)在固態(tài)存儲器110內(nèi) 自主地運行提供了 一種將擦除操作與讀取、寫入或其他更快的操作分開的方 法,從而使得固態(tài)存儲設(shè)備102能比其他許多固態(tài)存儲系統(tǒng)或數(shù)據(jù)存儲設(shè)備 運行得快得多。
圖9是示意性流程圖,示出了根據(jù)本發(fā)明的用于存儲恢復(fù)的方法900的 一種實施方式。方法900始于步驟902,順序存儲才莫塊802將數(shù)據(jù)包順序地寫 入存儲部(步驟904)。所述存儲部是固態(tài)存儲設(shè)備102中的固態(tài)存儲器110
68的一部分。通常,存儲部為擦除塊。所述數(shù)據(jù)包源于對象,而且所述數(shù)據(jù)包 按處理的順序被順序地存儲。
存儲部選擇模塊804選擇恢復(fù)的存儲部(步驟906 ),并且數(shù)據(jù)恢復(fù)模塊 806從選定為恢復(fù)的存儲部中讀取有效的數(shù)據(jù)包(步驟908)。通常,有效的 數(shù)據(jù)包為未被標記為擦除、刪除或其他一些無效數(shù)據(jù)標識符的數(shù)據(jù)包,所述 數(shù)據(jù)包被視為有效或"好,,的數(shù)據(jù)。數(shù)據(jù)恢復(fù)模塊806將有效的數(shù)據(jù)包與其 他預(yù)定由順序存儲模塊802順序地寫入的數(shù)據(jù)包排隊(步驟910 )。數(shù)據(jù)恢復(fù) 模塊806更新具有由順序存儲模塊802所寫入的數(shù)據(jù)的新物理地址的索引(步 驟912)。所迷索引包括從數(shù)據(jù)包的物理地址到對象標識符的映射。這些數(shù)據(jù) 包存儲在固態(tài)存儲器110中,并且所述對象標識符對應(yīng)于所述數(shù)據(jù)包。
在數(shù)據(jù)恢復(fù)模塊806完成從所述存儲部復(fù)制有效數(shù)據(jù)后,存儲部恢復(fù)模 塊將選定為恢復(fù)的存儲部標記為對順序存儲模塊802可用(步驟914 ),以順 序地寫入數(shù)據(jù)包,方法900結(jié)束于步驟916。
多個獨立主機之間共享的設(shè)備
圖IO是示意性框圖,示出了根據(jù)本發(fā)明的用于在多個主機之間共享的設(shè) 備的系統(tǒng)2500的一種實施方式。所述系統(tǒng)包括通過系統(tǒng)總線2508連接的命 令代理主機2502、 一個或多個其他主機2504以及共享設(shè)備2506,下面對這 些設(shè)備進行描述。該系統(tǒng)還包括計算機網(wǎng)絡(luò)116、服務(wù)器112、客戶端114、 以及存儲設(shè)備150、它們基本上與上述設(shè)備類似。
命令代理主機2502和其他主機2504通常每一個都包括一個操作系統(tǒng)的 分立圖1象,所以每個主才幾2502、 2504才丸行獨立于其他主機2502、 2504的操 作系統(tǒng)。在一種實施方式中, 一個或多個主機可以包括具有在虛擬機層之上 運行的一個或多個操作系統(tǒng)的獨立虛擬機。主機2502、 2504包括一個或多個 處理器而且可以被包括在服務(wù)器112、計算機或能夠運行操作系統(tǒng)的其他設(shè)備 中。在一種實施方式中, 一個或多個主機2502、 2504在一臺計算機中,比如 主機計算機。在另一種實施方式中,至少一個主機2502、 2504是與其他主機 2502、 2504在物理上分開的。
在一種實施方式中,命令代理主機2502包含根端口。在另一種實施方式 中,命令代理主機2502在這兩個或更多個主機2504之一中執(zhí)行。在另一種 實施方式中,命令代理主機2502在傳送給獨立于主機2504的共享設(shè)備2506
69的第三方元件管理命令中執(zhí)行。在又一種實施方式中,命令代理主機2502在 將根端口 、主機2602之一、共享設(shè)備2506以及第三方元件管理命令組合起 來的設(shè)備中執(zhí)行。根和根端口在此可互換使用并且包括根端口和相關(guān)聯(lián)的處 理、處理器等等。本領(lǐng)域技術(shù)人員將認識到通過系統(tǒng)總線2508連接到共享設(shè) 備2506上的兩個或兩個以上主機2502、 2504的其他形式。
對于特定的共享設(shè)備2506,主機2502、 2504之一被指定為既能夠與其他 主機2504又能夠與共享設(shè)備2506通信的命令代理主機2502。典型的是,命 令代理主機2502能夠為來自共享設(shè)備2506的中斷提供服務(wù)。中斷可以采取 多種本領(lǐng)域技術(shù)人員所知的形式。在一種實施方式中,中斷可以包括具有要 向主機2504轉(zhuǎn)移的或者有已經(jīng)轉(zhuǎn)移給主機2504的數(shù)據(jù)的共享設(shè)備2506。命 令代理主機2052能夠與主機2504和共享設(shè)備2506通信。該通信可以是控制 請求和/或數(shù)據(jù)轉(zhuǎn)移。本領(lǐng)域技術(shù)人員將認識到指定的命令代理主機2502共有 的其他特征和功能。
系統(tǒng)2500包含連接到系統(tǒng)總線2508上的至少一個共享設(shè)備2506。共享 設(shè)備2506可以是存儲設(shè)備150、網(wǎng)絡(luò)接口 156,圖形顯示驅(qū)動器、輸入/輸出 ("I/O")適配器或其他能夠連接到系統(tǒng)總線2508上并能夠在主機2502、 2504之間共享的設(shè)備。除共享設(shè)備2506之外,其他設(shè)備也可以連接到系統(tǒng)總 線2506上。
在一種實施方式中,共享設(shè)備2506是連接到對其他設(shè)備(比如客戶端 114 、服務(wù)器112、存儲設(shè)備150等等)的計算機網(wǎng)絡(luò)116的網(wǎng)絡(luò)接口 156。 共享設(shè)備2506 (作為網(wǎng)絡(luò)接口 156)典型的是在主機2502、 2504和另一設(shè) 備(比如客戶端114、服務(wù)器112或存儲設(shè)備150)之間轉(zhuǎn)移數(shù)據(jù)并控制請求, 而且典型的是用作在計算機網(wǎng)絡(luò)116上運行的網(wǎng)絡(luò)協(xié)議和系統(tǒng)總線2508之間 的橋接。本領(lǐng)域技術(shù)人員將認識到其他合適的共享設(shè)備2506和配置。
系統(tǒng)2500包括連接到主機2502、 2504和共享設(shè)備2508上的系統(tǒng)總線 2508。系統(tǒng)總線2508可以是單系統(tǒng)總線2508或多總線。系統(tǒng)總線2508能夠 在主機2502、 2504之間并且在主機2502、 2504和共享設(shè)備2506之間傳輸控 制命令,而且能夠使直接數(shù)據(jù)轉(zhuǎn)移得以獨立于命令代理主機2502在主機2504 和共享設(shè)備2506之間進行??梢允褂酶呒壪到y(tǒng)總線協(xié)議,比如PCI-e、 PCI-e 高級交換("PCIe-AS,,)、無限帶寬以及類似協(xié)議。在系統(tǒng)總線2508是PCI-e總線的情況下,在一種實施方式中,共享設(shè)備2506支持PCI-e輸入/輸出虛擬 化("PCIe隱IOV")。在共享設(shè)備2506支持PCIe-IOV的情況下,主機2602、 2604可以在一個或多個設(shè)備場境中單設(shè)備場境內(nèi)共享該共享設(shè)備2506。本領(lǐng) 域技術(shù)人員將認識到其他系統(tǒng)總線2508配置和類型使控制請求并使直接數(shù)據(jù) 轉(zhuǎn)移得以獨立于命令代理主機2502在主機2504和共享設(shè)備2506之間進行。
在一種實施方式中,共享設(shè)備2506是第一存儲設(shè)備150a,指定的命令代 理主機2502是第 一服務(wù)器112a,其他主機2504是在服務(wù)器112a上運行的客 戶端114a或其他客戶端114。在另一種實施方式中,共享設(shè)備2506是第一網(wǎng) 絡(luò)接口 156a,命令代理主機2502是第一存儲設(shè)備150a,而且其他主機2504 可以是包括第一存儲設(shè)備150a、或另一客戶端114a、114或第二存儲設(shè)備150b 的第一服務(wù)器112a。這些實施方式可以配置為與上文中相對于圖1C描述的服 務(wù)器內(nèi)SAN系統(tǒng)103相類似。第一存儲設(shè)備150a可以是如上所述具有固態(tài) 存儲控制器104的固態(tài)存儲設(shè)備102,或者可以是硬盤驅(qū)動、光驅(qū)等等。
圖11是示意性框圖,示出根據(jù)本發(fā)明的命令代理主機中的一個裝置2600 的一種實施方式,該裝置用于在多個主機之間共享的設(shè)備。在不同的實施方 式中,裝置2600包括代理請求接收器模塊2602、代理請求命令模塊2604、 中斷接收器模塊2606、中斷發(fā)送模塊2608、通信路徑模塊2610以及標準設(shè) 備模擬模塊2612,下面對這些模塊進行描述。
在一種實施方式中,如所描繪的,裝置2600的所有才莫塊2602-2612或其 中一部分包括在命令代理主機2502中。在另一種實施方式中,裝置2600的 所有模塊2602-2612或其中 一部分在控制命令代理主機2502的另一臺計算機、 主機2604、服務(wù)器112、設(shè)備等等中。
裝置2600包括接收來自請求主機(如2504a)的代理請求的代理請求接 收器模塊2602。代理請求包括要由共享設(shè)備2506執(zhí)行的控制請求。該控制請 求包括足夠的信息以便命令代理主機2502能夠配置共享設(shè)備2506用于在發(fā) 送代理請求的請求主機2504a和共享設(shè)備2506之間進行數(shù)據(jù)轉(zhuǎn)移。這些信息 可以包括請求主機2504a或共享設(shè)備2506的地址信息、數(shù)據(jù)標識符、數(shù)據(jù)長 度、數(shù)據(jù)源和目的信息、中間緩沖器標識或其他使命令代理主機2502得以配 置共享設(shè)備2506用于數(shù)據(jù)轉(zhuǎn)移的相關(guān)設(shè)備。代理請求可以是中斷請求的形式, 包括全部或部分代理請求。
71在一種實施方式中,代理請求包括足夠的信息來建立在共享設(shè)備2506和 請求主機2504a之間的DMA或RDMA轉(zhuǎn)移。在另一種實施方式中,代理請 求包括足夠的信息來建立數(shù)據(jù)的廣播或組播。本領(lǐng)域技術(shù)人員將認識到代理 請求中其他相關(guān)信息來建立用于數(shù)據(jù)轉(zhuǎn)移的共享設(shè)備2506。該代理請求包括 對命令代理主機2502來說足夠的信息來建立用于數(shù)據(jù)轉(zhuǎn)移,該數(shù)據(jù)轉(zhuǎn)移獨立 于命令代理主機2502而執(zhí)行。
代理請求接收器模塊2602使用代理請求中的信息生成控制請求,該控制 請求將要被發(fā)送給共享設(shè)備2506并在其上執(zhí)行以建立數(shù)據(jù)轉(zhuǎn)移。該控制請求 基本上沒有要在主機和共享設(shè)備之間轉(zhuǎn)移的數(shù)據(jù),但是作為替代的是,該控 制請求通常包括要在共享設(shè)備2506上執(zhí)行的控制信息。在一種實施方式中, 共享設(shè)備2506執(zhí)行所述控制請求一次,以便共享設(shè)備2506可以是與請求主 機2504a間不止一個數(shù)據(jù)轉(zhuǎn)移的一部分。例如,該控制請求可以在初始化進 程期間執(zhí)行,該初始化進程使共享設(shè)備2506和請求主機2504a能夠獨立于命 令代理主機2502隨意進行數(shù)據(jù)轉(zhuǎn)移。
在另一種實施方式中,必須發(fā)送控制請求用于與數(shù)據(jù)轉(zhuǎn)移相關(guān)聯(lián)的每個 代理請求。例如,系統(tǒng)總線2508可以連接有比共享設(shè)備2506上可用的虛擬 端口更多的設(shè)備,所以發(fā)送給共享設(shè)備2506的控制請求為每個數(shù)據(jù)轉(zhuǎn)移配置 或驗證共享設(shè)備2506和請求主機2504a之間的通信路徑。本領(lǐng)域普通技術(shù)人 員將認識到可以生成其他控制請求用于要由共享設(shè)備2506執(zhí)行的代理請求, 從而使數(shù)據(jù)轉(zhuǎn)移能夠在共享設(shè)備2506和請求主機2504a之間進行。
裝置2600包括代理請求命令模塊2604,用于將控制請求發(fā)送給共享設(shè)備 以作為對代理請求接收器模塊2602接收控制請求的響應(yīng)。代理請求命令模塊 2604通?;谧R別共享設(shè)備2506的代理請求中的地址信息或其他識別信息來 發(fā)送控制請求。代理請求接收器模塊2602和代理請求命令模塊2604合作來 建立共享主機2506,以用于由請求主機2504a初始化的數(shù)據(jù)轉(zhuǎn)移。
中斷接收器模塊2606和中斷發(fā)送模塊2608合作使由共享設(shè)備2506通過 中斷方式初始化的直接數(shù)據(jù)轉(zhuǎn)移能夠在共享設(shè)備2506和主機2504之間進行。 中斷接收器模塊2606接收來自共享設(shè)備2606的中斷。該中斷包括如下信息 共享設(shè)備具有要向主機2504發(fā)送的數(shù)據(jù)和/或具已經(jīng)將數(shù)據(jù)發(fā)送給主機2504。 例如,如果共享設(shè)備2506接收要轉(zhuǎn)移給主機2504的數(shù)據(jù)或初始化向主機2504
72的數(shù)據(jù)轉(zhuǎn)移,則共享設(shè)備2506具有要轉(zhuǎn)移的數(shù)據(jù)。在另一個例子中,如果主 機2504正等待數(shù)據(jù)(有可能是由于主機2504初始化的數(shù)據(jù)請求),則共享 設(shè)備2506可以將數(shù)據(jù)轉(zhuǎn)移到主機2504中的特定存儲緩沖器,共享設(shè)備2506 將在數(shù)據(jù)轉(zhuǎn)移之后發(fā)送中斷,表示轉(zhuǎn)移完成。
中斷發(fā)送模塊2608向主機發(fā)送中斷中所包括的信息。這些信息對接收信 息的主機2504來說足以繼續(xù)接收數(shù)據(jù)傳輸?shù)倪M程。在一種實施方式中,這些 信息使主機2504得以準備接收數(shù)據(jù)轉(zhuǎn)移的數(shù)據(jù)。在另一種實施方式中,這些 信息使得主機2504得以認識到來自請求設(shè)備2506的數(shù)據(jù)轉(zhuǎn)移完成而且得以 在之后必要時使用這些數(shù)據(jù)。在一種實施方式中,這些信息使得主機2504識 別新的內(nèi)存緩沖器位置并將這通過命令代理主機直接或間接傳達給共享設(shè)備 2506。在一種實施方式中,這些信息源自該中斷并被發(fā)送給主機2504。在另 一種實施方式中,將該中斷轉(zhuǎn)交給主機2504。本領(lǐng)域技術(shù)人員將想到可以被 包括在要由中斷傳輸模塊2608傳輸?shù)闹袛嘀幸岳^續(xù)接收數(shù)據(jù)傳輸?shù)倪M程的信 息。
命令代理主機2502能夠服務(wù)所述中斷。在一種實施方式中,命令代理主 機2502可以為來自共享設(shè)備2506的中斷提供服務(wù),其他主機2504能夠為來 自共享設(shè)備2506的中斷提供服務(wù)。在另一種實施方式中,命令代理主機2502 和其他主機2504能夠為中斷提供服務(wù),但是將命令代理主機2502指定為來 自共享設(shè)備2506的中斷提供服務(wù)。
在優(yōu)選實施方式中,在主機2504和共享設(shè)備2506之間的數(shù)據(jù)轉(zhuǎn)移獨立 于命令代理主機2502。在一個事實例中,數(shù)據(jù)轉(zhuǎn)移是主機2504和共享設(shè)備 2506之間的DMA轉(zhuǎn)移。在另 一種實施方式中,由主機2504初始化數(shù)據(jù)轉(zhuǎn)移, 或者直接將數(shù)據(jù)轉(zhuǎn)移到共享設(shè)備2506或者轉(zhuǎn)移來自共享設(shè)備2506的數(shù)據(jù)或 者建立DMA或RDMA。在其他實施方式中,數(shù)據(jù)轉(zhuǎn)移是廣播或組播的一部 分。在任何一種情況下,數(shù)據(jù)轉(zhuǎn)移都獨立于命令代理主機2502。
在一種實施方式中,裝置2600包括確定主機2504和共享設(shè)備2506之間 是否存在通信路徑的路徑模塊2610。通信路徑可以是數(shù)據(jù)路徑或命令路徑或 既是通信路徑又是命令路徑。如果通信路徑不存在,則路徑;漠塊2610還創(chuàng)建 通信路徑。例如,如果系統(tǒng)總線2508連接有比虛擬端口更多的設(shè)備,則路徑 才莫塊2610首先確定是否有期望的通信路徑在主機2504和共享設(shè)備2506之間
73存在,而且如果系統(tǒng)總線2508端口未配置有主機2504和共享設(shè)備2506之間 的通信路徑,則創(chuàng)建通信途徑。
通常,路徑模塊2610確定是否由通信路徑存在作為對代理請求接收器模 塊2602從請求主機2504a接收代理請求或從共享設(shè)備2506接收中斷的響應(yīng)。 由路徑模塊2610創(chuàng)建的通信路徑足以將數(shù)據(jù)或控制請求或兩者在主機2504 和共享設(shè)備2506之間轉(zhuǎn)移。在另一種實施方式中,路徑模塊2610在初始化 期間接收代理請求或中斷并且創(chuàng)建一次通信路徑。在另一種實施方式中,才莫 塊2610在每個代理請求或中斷之后確定通信路徑是否存在。本領(lǐng)域技術(shù)人員 將認識到當路徑模塊2610可以確定通信路徑是否存在,然后如果它不存在則 創(chuàng)建通信路徑時有其他次數(shù)。
在一種實施方式中,裝置2600包括標準設(shè)備模擬模塊2612,在用對于設(shè) 備的操作特定的代碼裝載主機2504之前將通到一個或多個主機2504的設(shè)備 模擬成附著到系統(tǒng)總線2508上的標準設(shè)備。該標準設(shè)備被工業(yè)標準BIOS支 持。在一種優(yōu)選實施方式中,由標準設(shè)備模擬模塊2612模擬的設(shè)備是共享設(shè) 備2506。例如,如果共享設(shè)備2506包括不被標準驅(qū)動器支持的功能性,該標 準驅(qū)動器被主機2504支持,標準設(shè)備模擬模塊2612仿真由主機2504支持的 標準設(shè)備是在初始化時或直到標準設(shè)備模擬模塊2612可以裝載對于共享設(shè)備 2506有特定功能性的特定驅(qū)動器。這個自舉電路操作使主機2504得以用受限 方式查看并訪問共享設(shè)備2506直到用于共享設(shè)備2506的驅(qū)動器載入主機 2504。在一種實施方式中,標準設(shè)備模擬模塊2612支持I/O虛擬化。
系統(tǒng)總線2508可以包括非透明端口 。非透明端口能夠在初始化和設(shè)備發(fā) 現(xiàn)操作期間阻塞附著到非透明端口上的設(shè)備,以便執(zhí)行發(fā)現(xiàn)/初始化的設(shè)備不 能接入連接到非透明端口上的設(shè)備。在一種實施方式中,系統(tǒng)總線2508包括 有非透明端口的系統(tǒng)總線交換。在這種實施方式中,在主機2504上執(zhí)行的第 一初始化進程發(fā)現(xiàn)至少命令代理主機2502通到主機2504而且不能夠發(fā)現(xiàn)共 享設(shè)備2506。在這種實施方式中,所發(fā)現(xiàn)的命令代理主機2602被識別用來與 至少主機2504通信作為第一初始化進程的結(jié)果,主機2504執(zhí)行第一初始化 進程的。
在另 一種實施方式中,在共享設(shè)備2506被識別用來與至少命令代理主機 2602通信以作為初始化進程的結(jié)果的情況,在命令代理主機2502上執(zhí)行的第
74二初始化進程至少發(fā)現(xiàn)通到命令代理主機2502的共享設(shè)備2506。
例如,在存儲設(shè)備150訪問獨立于服務(wù)器112的網(wǎng)絡(luò)接口 156的情況, 非透明端口會在由服務(wù)器112 (用作命令代理主機2502 )執(zhí)行的初始化進程 期間隱藏網(wǎng)絡(luò)接口 156,卻會使存儲設(shè)備150可以被發(fā)現(xiàn)用于進行通信。在這 種情況下,存儲設(shè)備150用作通到第一服務(wù)器112a的共享設(shè)備2506,其他服 務(wù)器112能夠基于第一服務(wù)器112a所完成的發(fā)現(xiàn)來訪問存儲設(shè)備150。
在第二初始化進程中,網(wǎng)絡(luò)接口 156用作共享設(shè)備2506,存儲設(shè)備150 用作命令代理主機2502,所以在由作為命令代理主機2502和根的存儲設(shè)備 150執(zhí)行的第二初始化進程中,然后存儲設(shè)備150發(fā)現(xiàn)網(wǎng)絡(luò)接口 156用于通信。 然后存儲設(shè)備150可以向獨立于服務(wù)器112的網(wǎng)絡(luò)接口 156傳達。在另一種 實施方式中,服務(wù)器112用作命令代理主機2502,以使存儲設(shè)備150和網(wǎng)絡(luò) 接口 156之間能夠進行直接通信。
圖12是示意性框圖,示出根據(jù)本發(fā)明與共享設(shè)備2506相關(guān)聯(lián)的一個裝 置2700的一種實施方式,該設(shè)備用于在多個主機2502、 2504之間共享的設(shè) 備。在不同的實施方式中,裝置2700包括共享設(shè)備控制請求接收器模塊2702、 控制請求響應(yīng)^^塊2704以及中斷發(fā)送模塊2706,下面對這些;f莫塊進行描述。 裝置2700的模塊2702-2706中每一個的所有或部分可以在共享設(shè)備2506中或 在控制該共享設(shè)備2506的另一個設(shè)備中執(zhí)行。
裝置2700包括共享設(shè)備控制請求接收器模塊2702,該模塊在命令代理主 機2502從請求主機2504a接收代理請求之后接收來自命令代理主機2502的 控制請求。控制請求響應(yīng)模塊2704配置共享設(shè)備2506以在請求主機2504a 和共享設(shè)備之間進行數(shù)據(jù)轉(zhuǎn)移。該控制請求不包括數(shù)據(jù)轉(zhuǎn)移的數(shù)據(jù),卻可以
包括足以在主機2504a和共享設(shè)備2506之間建立DMA或其他數(shù)據(jù)轉(zhuǎn)移操作 的信息。該控制請求可以設(shè)置共享設(shè)備2506中的控制寄存器,或者可以配置 共享設(shè)備2506和請求主機2504a之間的通信路徑。
裝置2700包括向命令代理主機2502發(fā)送中斷的中斷發(fā)送模塊2706。該 中斷隨后被發(fā)送到主機2504并且包括用于主機2504繼續(xù)進行接收數(shù)據(jù)轉(zhuǎn)移 的數(shù)據(jù)的進程的足夠信息。在一種實施方式中,該中斷發(fā)送^^莫塊2706在共享 設(shè)備2506從另一設(shè)備(比如存儲設(shè)備150或客戶端114)接收數(shù)據(jù)之后發(fā)送 中斷。在另 一種實施方式中,中斷發(fā)送模塊2706發(fā)送中斷以響應(yīng)來自主機2504的請求。主機2504可以請求數(shù)據(jù),然后繼續(xù)其他任務(wù),然后共享設(shè)備2506 可以命令中斷發(fā)送模塊2706在所請求的數(shù)據(jù)準備好進行轉(zhuǎn)移時發(fā)送中斷。本 領(lǐng)域技術(shù)人員將認識到中斷發(fā)送^^塊2706發(fā)送中斷的其他理由。
圖13是示意性框圖,示出根據(jù)本發(fā)明與請求主機2504a結(jié)合操作的裝置 2800的一種實施方式,該設(shè)備用于在多個主機之間共享的設(shè)備。裝置2800包 括代理請求發(fā)送器模塊2802、主機數(shù)據(jù)發(fā)送器模塊2804、主機中斷接收器模 塊2806以及主機數(shù)據(jù)接收器模塊2808,下面對這些模塊進行描述。裝置2800 的才莫塊2802-2808中每一個的所有或部分可以在主機2504中或在控制該主機 2504的另 一個設(shè)備中執(zhí)行。
裝置2800包括從請求主機2504a至所指定的命令代理主機2502發(fā)送代 理請求的代理請求發(fā)送器模塊2802。然后命令代理主機2502基于代理請求向 共享設(shè)備2506發(fā)送控制請求。該控制請求在共享設(shè)備2506上執(zhí)行以建立用 于請求主機2504a和共享設(shè)備2506之間的直接數(shù)據(jù)轉(zhuǎn)移的共享設(shè)備2506。
裝置2800包括在請求主機2504a上執(zhí)行的主機數(shù)據(jù)發(fā)送器模塊2804,啟 動請求主機2504a和共享設(shè)備2506之間的數(shù)據(jù)轉(zhuǎn)移。數(shù)據(jù)轉(zhuǎn)移獨立于命令代 理主機2502而執(zhí)行。請求主機2504a可以轉(zhuǎn)移這些數(shù)據(jù)或者可以直接或通 過代理請求建立DMA或RDMA轉(zhuǎn)移。數(shù)據(jù)轉(zhuǎn)移會通到共享設(shè)備2506或者會 通到可通過共享設(shè)備2506接入的另 一個設(shè)備。本領(lǐng)域技術(shù)人員將認識到請求 主機2504a初始化數(shù)據(jù)轉(zhuǎn)移的其他方式,其中,數(shù)據(jù)轉(zhuǎn)移獨立于命令代理主 機2502。
在一種實施方式中,裝置2800包括在主機上執(zhí)行的主機2504中斷接收 器模塊2806,用于接收來自命令代理主機2502的信息,共享設(shè)備2506具有 要向主機2504發(fā)送的數(shù)據(jù)和/或已經(jīng)發(fā)送給主機2504的數(shù)據(jù)。這些信息源自 命令代理主機2502從共享設(shè)備2506接收的中斷。然后主機數(shù)據(jù)接收器^^莫塊 2808繼續(xù)接收數(shù)據(jù)傳輸?shù)倪M程。該數(shù)據(jù)傳輸獨立于命令代理主機2506執(zhí)行。 在共享設(shè)備2506具有要轉(zhuǎn)移的數(shù)據(jù)的情況下,主機數(shù)據(jù)接收器模塊2808可 以建立緩沖器、向共享設(shè)備2506發(fā)送主機2504準備好進行數(shù)據(jù)傳輸?shù)鹊鹊?信號,以繼續(xù)數(shù)據(jù)轉(zhuǎn)移進程。在共享設(shè)備2506已經(jīng)轉(zhuǎn)移這些數(shù)據(jù)的情況,主 機數(shù)據(jù)接收器^t塊2808可以發(fā)送轉(zhuǎn)移完成的信號、可以移動數(shù)據(jù)等等,以繼 續(xù)并完成數(shù)據(jù)傳輸。
76圖14是示意性流程圖,示出根據(jù)本發(fā)明的方法2900的第一實施方式,
該方法用于在多個主機之間共享的設(shè)備。方法2900始于步驟2902,代理請求 接收器模塊2602接收來自請求主機2504a的代理請求(步驟2904 )。代理請 求命令模塊2604向共享設(shè)備2506發(fā)送控制請求(步驟2906 ),方法2900在 步驟2908結(jié)束。該控制請求由共享設(shè)備2506執(zhí)行。該控制請求從代理請求 中生成并且足以配置共享設(shè)備2506用于共享設(shè)備2506和請求主機2504a之 間的數(shù)據(jù)轉(zhuǎn)移。數(shù)據(jù)轉(zhuǎn)移獨立于命令代理主機2502來執(zhí)行。
圖15是示意性流程圖,示出根據(jù)本發(fā)明的方法3000的第二實施方式, 該方法用于在多個主機之間共享的設(shè)備。方法3000始于步驟3002,共享設(shè)備 控制請求模塊2702接收來自命令代理主機2502的控制請求(步驟3004 )。 該控制請求在命令代理主機2502上由從請求主機2504a接收的代理請求中生 成??刂普埱箜憫?yīng)模塊2704配置共享設(shè)備2506用于請求主機2504a和共享 設(shè)備2506之間的數(shù)據(jù)轉(zhuǎn)移(步驟3006 ),方法3000在步驟3008結(jié)束。該控 制請求不包含數(shù)據(jù)轉(zhuǎn)移的數(shù)據(jù),該數(shù)據(jù)轉(zhuǎn)移獨立于命令代理主機2502執(zhí)行。
圖16是示意性流程圖,示出根據(jù)本發(fā)明的方法3100的第三實施方式, 該方法用于在多個主機之間共享的設(shè)備。方法3100始于步驟3102,代理請求 發(fā)送器模塊2802從請求主機2504a向所指定的命令代理主機2502傳輸代理 請求(步驟3104 )。然后命令代理主機2502將從代理請求中生成的控制請求 發(fā)送給共享設(shè)備2506。主機數(shù)據(jù)發(fā)送器才莫塊2804初始化獨立于命令代理主機 2502的在請求主機2504a和共享設(shè)備2506之間的數(shù)據(jù)轉(zhuǎn)移(步驟3106 ), 方法3100在步驟3108結(jié)束。該代理請求不包括數(shù)據(jù)轉(zhuǎn)移的數(shù)據(jù)。
本發(fā)明可釆用其他特定形式實施而不脫離本發(fā)明的宗旨或本質(zhì)特點。描
明的范圍由附屬的權(quán)利要求確定,而不是由上述說明書確定。在本發(fā)明的權(quán) 利要求的含義和等價范圍內(nèi)的所有改變被包含在本發(fā)明的保護范圍內(nèi)。
7權(quán)利要求
1.一種用于在多個主機之間共享設(shè)備的裝置,該裝置包括在指定的命令代理主機上執(zhí)行的代理請求接收器模塊,用于從請求主機接收代理請求,該請求主機包括兩個或更多個主機之一,其中該兩個或更多個主機中每一個都執(zhí)行獨立于其他主機和共享設(shè)備的操作系統(tǒng),而且其中指定所述兩個或更多個主機中的一個主機為命令代理主機,所述兩個或更多個主機和所述共享設(shè)備通過系統(tǒng)總線連接,所述代理請求包括要由所述共享設(shè)備執(zhí)行的控制請求,該控制請求足以配置該共享設(shè)備以在發(fā)送該代理請求的所述請求主機和所述共享設(shè)備之間進行數(shù)據(jù)轉(zhuǎn)移,該數(shù)據(jù)轉(zhuǎn)移獨立于該命令代理主機執(zhí)行,該控制請求大體上沒有要在所述請求主機和所述共享設(shè)備之間轉(zhuǎn)移的數(shù)據(jù);以及在所述命令代理主機上執(zhí)行的代理請求命令模塊,用于向所述共享設(shè)備發(fā)送控制請求,以作為對代理請求接收器模塊接收控制請求的響應(yīng)。
2. 權(quán)利要求1的裝置,還包括在所述命令代理主機上執(zhí)行的中斷接收器模塊,用于從所述共享設(shè)備接 收中斷,該中斷包括如下信息所述共享設(shè)備具有要向主機發(fā)送的一個或多 個數(shù)據(jù)或者已經(jīng)將數(shù)據(jù)發(fā)送給主機;以及中斷發(fā)送模塊,將中斷中所包括的信息發(fā)送給主機,該信息對于接收該 信息的主機來說足以繼續(xù)進行接收該數(shù)據(jù)傳輸?shù)倪^程。
3. 權(quán)利要求2的裝置,其中,除了命令代理主機之外的所述主機都能夠 接收所述中斷。
4. 權(quán)利要求l的裝置,還包括在命令代理主機中執(zhí)行的路徑模塊,該路 徑^=莫塊確定在主機和所述共享設(shè)備之間是否存在通信路徑,該通信路徑包括 數(shù)據(jù)路徑和命令路徑中的一個或多個,該路徑模塊還創(chuàng)建通信路徑以作為確 定所述通信路徑不存在的響應(yīng),該數(shù)據(jù)路徑足以在所述主機和所迷共享設(shè)備 之間轉(zhuǎn)移一個或多個數(shù)據(jù)和控制請求。
5. 權(quán)利要求4的裝置,其中,所述通信路徑模塊確定通信路徑是否存在 以響應(yīng)來自所述主機的代理請求和來自所述共享設(shè)備的中斷中的一個。
6. 權(quán)利要求l的裝置,其中,所述共享設(shè)備包括如下配置的網(wǎng)絡(luò)接口將通過計算機網(wǎng)絡(luò)從所述兩個或更多個主機之一接收的數(shù)據(jù)轉(zhuǎn)移到一個設(shè)備并將通過計算機網(wǎng)絡(luò)接收的數(shù)據(jù)從一個設(shè)備轉(zhuǎn)移到所述兩個或更多個主機之
7. 權(quán)利要求l的裝置,其中,所述共享設(shè)備包括存儲設(shè)備和存儲控制器中的一個或多個。
8. 權(quán)利要求7的裝置,其中,所述存儲設(shè)備進還包括固態(tài)存儲設(shè)備,所述存儲控制器包括固態(tài)存儲控制器。
9. 權(quán)利要求1的裝置,其中,所述系統(tǒng)總線包括外圍組件互連快速("PCl-e")。
10. 權(quán)利要求9的裝置,其中,PCI-e總線和所述共享設(shè)備支持PCI-e輸入/輸出虛擬化("PCIe-IOV")。
11. 權(quán)利要求10的裝置,其中,所述兩個或更多個主機中的兩個或更多個在單一的設(shè)備場境內(nèi)共享該共享設(shè)備。
12. 權(quán)利要求1的裝置,其中,所述命令代理主機在如下設(shè)備之一上執(zhí)行根;所述兩個或更多個主機之一;所迷共享設(shè)備;對共享設(shè)備的第三方元件管理命令,該共享設(shè)備獨立于所述兩個或更多個主機;以及將如下設(shè)備中一個或多個的結(jié)合起來的設(shè)備根;所迷兩個或更多個主機之一;所述共享設(shè)備;以及所迷第三方組件管理命令。
13. 權(quán)利要求1的裝置,其中,獨立的操作系統(tǒng)包括一個虛擬機層,該虛擬機層具有在該虛擬機層之上運行的一個或多個操作系統(tǒng)。
14. 權(quán)利要求1的裝置,其中,該共享設(shè)備使用直接存儲器存取("DMA")和遠程直接存儲器存取("RDMA")中的一個在控制請求中識別的主機和共享設(shè)備之間轉(zhuǎn)移數(shù)據(jù)。
15. 權(quán)利要求1的裝置,還包括在命令代理總線上執(zhí)行的標準設(shè)備模擬模塊,該標準設(shè)備模擬模塊在給一個或多個主機裝載對于該設(shè)備操作來說特定的代碼之前將通到一個或多個主機的設(shè)備^^莫擬成附著到系統(tǒng)總線上的標準設(shè)備,該標準設(shè)備由工業(yè)標準BIOS所支持。
16. 權(quán)利要求15的裝置,其中,由所述標準設(shè)備模擬模塊模擬的設(shè)備包括所述共享設(shè)備。
17. 權(quán)利要求15的裝置,其中,用于標準設(shè)備的所述標準設(shè)備模擬模塊支持1/0虛擬化。
18. 權(quán)利要求1的裝置,其中,該系統(tǒng)總線還包括具有非透明端口的系統(tǒng)總線切換,其中,在主機上執(zhí)行的第一初始化進程至少發(fā)現(xiàn)對該主機的所述命令代理主機且不能發(fā)現(xiàn)該共享設(shè)備,其中,所發(fā)現(xiàn)的命令代理主機作為第 一初始化進程的結(jié)果被識別用來與至少執(zhí)行該第 一初始化進程的主機通信。
19. 權(quán)利要求18的裝置,其中,在命令代理主機上執(zhí)行的第二初始化進程至少發(fā)現(xiàn)對所述命令代理主機的所述共享設(shè)備,其中,該共享設(shè)備作為初始化進程的結(jié)果被識別用來與至少該命令代理主機通信。
20. —種用于在多個主機之間共享設(shè)備的裝置,該裝置包括在所述共享設(shè)備上執(zhí)行的共享設(shè)備控制請求接收器模塊,用于從指定為命令代理主機的主機接收控制請求,該命令代理主機包括兩個或更多個主機中的一個,其中所述兩個或更多個主機中每一個都執(zhí)行獨立于其他主機和共享設(shè)備的操作系統(tǒng),所述兩個或更多個主機和共享設(shè)備通過系統(tǒng)總線連接,該命令代理主機發(fā)送所述控制請求,以作為對從請求主機接收代理請求的響應(yīng),所述請求主才幾是兩個或更多個主機中的一個;以及在共享設(shè)備上執(zhí)行的控制請求響應(yīng)模塊,用于配置所述共享設(shè)備以在請求主機和共享設(shè)備之間的進行數(shù)據(jù)轉(zhuǎn)移,該控制請求大體上無數(shù)據(jù)轉(zhuǎn)移的數(shù)據(jù),而且數(shù)據(jù)轉(zhuǎn)移獨立于命令代理主機執(zhí)行。
21. 權(quán)利要求20的裝置,還包括在共享設(shè)備上執(zhí)行的中斷發(fā)送模塊,用于向命令代理主機發(fā)送中斷,該中斷包括如下信息所述共享設(shè)備之一有要向主機發(fā)送的數(shù)據(jù)和所述共享已將數(shù)據(jù)轉(zhuǎn)移給主機,所述信息對主機來說足以繼續(xù)該接收數(shù)據(jù)的進程,其中命令代理主機向主機發(fā)送所述信息。
22. —種用于在多個主機之間共享設(shè)備的裝置,該裝置包括代理請求發(fā)送器模塊,用于從請求主機向指定的命令代理主機發(fā)送代理請求,所述請求主機和所述命令代理主機中的每一個都包括連接到系統(tǒng)總線上的兩個或更多個主機之一和共享設(shè)備,其中所述兩個或更多個主機中每一個都執(zhí)行獨立于其他主機和共享設(shè)備的操作系統(tǒng),該代理請求包括要由該共享設(shè)備執(zhí)行的控制請求,該命令代理主機將所述控制請求發(fā)送給所述共享設(shè)備,該控制請求足以配置該共享設(shè)備以用于共享設(shè)備和發(fā)送代理請求的請求主機之間的數(shù)據(jù)轉(zhuǎn)移,該控制請求大體上沒有要在請求主機和共享設(shè)備之間轉(zhuǎn)移的數(shù)據(jù);以及在請求主機上執(zhí)行的主機數(shù)據(jù)發(fā)送器模塊,用于初始化請求主機和共享設(shè)備之間的數(shù)據(jù)轉(zhuǎn)移,該轉(zhuǎn)移獨立于所迷命令代理主機執(zhí)行。
23. 權(quán)利要求22的裝置,還包括在主機上執(zhí)行的主機中斷接收器模塊,用于從命令代理主機接收如下信所述信息源于所述命令代理主機從所述共享設(shè)備接收的中斷;主機數(shù)據(jù)接收器模塊繼續(xù)接收數(shù)據(jù)傳輸?shù)倪M程,該數(shù)據(jù)傳輸獨立于命令代理主一幾纟丸行。
24. —種用于在多個主機之間共享設(shè)備的系統(tǒng),該系統(tǒng)包括系統(tǒng)總線;連接到該系統(tǒng)總線上的共享設(shè)備;連接到該系統(tǒng)總線上的兩個或更多個主機,其中,所述兩個或更多個主機中每一個都執(zhí)行獨立于其他主機和共享設(shè)備的操作系統(tǒng),而且其中所述兩個或更多個主機中有一個是指定的命令代理主機;在該命令代理主機上執(zhí)行的代理請求接收器模塊,用于接收來自請求主機的代理請求,該代理請求足以配置共享設(shè)備以用于在發(fā)送代理請求的請求主機和共享設(shè)備之間的數(shù)據(jù)轉(zhuǎn)移,該數(shù)據(jù)轉(zhuǎn)移獨立于命令代理主機執(zhí)行,該控制請求大體上沒有要在所述請求主機和所述共享設(shè)備之間轉(zhuǎn)移的數(shù)據(jù);以及在所述命令代理主機上執(zhí)行的代理請求命令模塊,用于向共享設(shè)備發(fā)送控制請求,以作為對代理請求接收器模塊接收控制請求的響應(yīng)。
25. 權(quán)利要求24的系統(tǒng),還包括在命令代理主機上執(zhí)行的中斷接收器模塊,用于從共享設(shè)備接收中斷,該中斷包括如下信息共享設(shè)備具有要向主機發(fā)送的數(shù)據(jù)或者已經(jīng)將數(shù)據(jù)發(fā)送給主機;以及中斷發(fā)送才莫塊,用于將來自所述中斷的信息發(fā)送給主機,該信息對于接收該信息的主機來說足以繼續(xù)進行接收該數(shù)據(jù)傳輸?shù)倪M程。
26. —種計算機程序制品,包括具有計算機可用程序代碼的計算機可讀介質(zhì),可執(zhí)行所述程序代碼以完成在多個主機之間共享設(shè)備的操作,該計算機程序制品的操作包括4妄收來自請求主機的代理請求,該請求主機包括兩個或更多個主機中之一,其中所述兩個或更多個主機中的每一個都執(zhí)行獨立于其他主機和共享設(shè)備的操作系統(tǒng),而且其中所述兩個或更多個主機中的一個被指定為命令代理主機,所述兩個或更多個主機和共享設(shè)備通過系統(tǒng)總線連接,該代理請求包括要由所述共享設(shè)備執(zhí)行的控制請求,該控制請求足以配置該共享設(shè)備以用于發(fā)送所述代理請求的所述請求主機和所述共享設(shè)備之間的數(shù)據(jù)轉(zhuǎn)移,該數(shù)據(jù)轉(zhuǎn)移獨立于命令代理主機而執(zhí)行,該控制請求基本上沒有要在所述請求主機和所述共享設(shè)備之間轉(zhuǎn)移的數(shù)據(jù);及將該控制請求發(fā)送給共享設(shè)備,以作為對代理請求接收器模塊接收控制請求的響應(yīng)。
27. —種計算機程序制品,包括具有計算機可用程序代碼的計算機可讀介質(zhì),可執(zhí)行所述程序代碼以完成在多個主機之間共享設(shè)備的操作,該計算機程序制品的操作包括從指定為命令代理主機的主機接收控制請求,該命令代理主機包括兩個或更多個主機中的一個,其中所述兩個或更多個主機中每一個都執(zhí)行獨立于其他主機和共享設(shè)備的操作系統(tǒng),所述兩個或更多個主機和共享設(shè)備通過系統(tǒng)總線連接,該命令代理主機發(fā)送控制請求,以作為從請求主機接收代理請求的響應(yīng),該請求主才幾包括兩個或更多個主才幾;及配置該共享設(shè)備以用于請求主機和共享設(shè)備之間的數(shù)據(jù)轉(zhuǎn)移,該控制請 求大體上沒有數(shù)據(jù)轉(zhuǎn)移的數(shù)據(jù),該數(shù)據(jù)轉(zhuǎn)移獨立于命令代理主機執(zhí)行。
28. —種計算機程序制品,包括具有計算機可用程序代碼的計算機可讀 介質(zhì),可執(zhí)行所述程序代碼以完成在多個主機之間共享設(shè)備的操作,該計算 機程序制品的操作包括從請求主機向指定的命令代理主機發(fā)送代理請求,該請求主機和所述命 令代理主機的每一個都包括連接到系統(tǒng)總線上的兩個或更多個主機中的一個 和所述共享設(shè)備,其中所述兩個或更多個主機中的每一個都執(zhí)行獨立于其他 主機和共享設(shè)備的操作系統(tǒng),該代理請求包括要由共享設(shè)備執(zhí)行的控制請求, 該命令代理主機向共享設(shè)備發(fā)送控制請求,該控制請求足以配置共享設(shè)備以 用于所述共享設(shè)備和發(fā)送代理請求的所述請求主機之間的數(shù)據(jù)轉(zhuǎn)移,該控制 請求大體上沒有要在所迷請求主機和所述共享設(shè)備之間轉(zhuǎn)移的數(shù)據(jù);及初始化所述請求主機和所述共享設(shè)備之間的數(shù)據(jù)轉(zhuǎn)移,該轉(zhuǎn)移獨立于命 令^理主一A4丸行。
全文摘要
本發(fā)明公開了允許在多個主機之間共享設(shè)備的裝置、系統(tǒng)和方法,其中,能夠在主機和共享的設(shè)備之間通過系統(tǒng)總線轉(zhuǎn)移數(shù)據(jù),共享的設(shè)備獨立于連接到系統(tǒng)總線上的其他主機。命令代理主機建立共享的設(shè)備和請求主機之間的數(shù)據(jù)路徑,并然后充當被選擇用于建立數(shù)據(jù)轉(zhuǎn)移的命令的代理。
文檔編號G06F3/06GK101690068SQ200780051023
公開日2010年3月31日 申請日期2007年12月6日 優(yōu)先權(quán)日2006年12月6日
發(fā)明者喬納森·撒切爾, 大衛(wèi)·弗林, 約翰·斯特拉瑟 申請人:弗森多系統(tǒng)公司(dba弗森-艾奧)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
宿迁市| 海林市| 台前县| 东兴市| 长顺县| 静宁县| 那坡县| 保德县| 五指山市| 沿河| 成武县| 千阳县| 临桂县| 湘阴县| 贵定县| 华亭县| 石林| 甘孜县| 济源市| 宣城市| 资中县| 兴国县| 夏河县| 林西县| 麻阳| 乌兰浩特市| 繁昌县| 米泉市| 辽宁省| 吴桥县| 嘉鱼县| 西充县| 任丘市| 黄石市| 盐津县| 阿拉尔市| 营山县| 米易县| 巴楚县| 民县| 安达市|