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

用于存儲和從閃存恢復數(shù)據(jù)的方法和系統(tǒng)與流程

文檔序號:11807767閱讀:210來源:國知局
用于存儲和從閃存恢復數(shù)據(jù)的方法和系統(tǒng)與流程

本申請要求2015年5月19日提交的美國臨時專利申請序號62/163,782的優(yōu)先權。美國臨時專利申請序號62/163,782被整體地通過引用結合到本文中。



背景技術:

系統(tǒng)可以向持久性儲存器寫入數(shù)據(jù)和從持久性儲存器讀取數(shù)據(jù)的速度常常是系統(tǒng)的總體性能中的關鍵因素。用以從持久性儲存器讀取數(shù)據(jù)和向其寫入數(shù)據(jù)的傳統(tǒng)方法要求在系統(tǒng)核中由多個層且在硬件中由多個實體進行處理。結果,從持久性儲存器讀取數(shù)據(jù)和向其寫入數(shù)據(jù)在系統(tǒng)中引入顯著的等待時間,并且因此降低了系統(tǒng)的總體性能。

附圖說明

圖1A—1E示出了根據(jù)本技術的一個或多個實施方式的系統(tǒng)。

圖2A—2D示出了根據(jù)本技術的一個或多個實施方式的存儲裝置。

圖3A和3B示出了根據(jù)本技術的一個或多個實施方式的存儲模塊。

圖4A示出了根據(jù)本技術的一個或多個實施方式的存儲模塊。

圖4B示出了根據(jù)本技術的一個或多個實施方式的塊。

圖4C示出了根據(jù)本技術的一個或多個實施方式的數(shù)據(jù)頁

圖4D示出了根據(jù)本技術的一個或多個實施方式的TOC頁。

圖4E示出了根據(jù)本技術的一個或多個實施方式的塊。

圖4F示出了根據(jù)本技術的一個或多個實施方式的內(nèi)容表(TOC)條目。

圖4G示出了根據(jù)本技術的一個或多個實施方式的安全(vaulted)存儲器內(nèi)容。

圖4H示出了根據(jù)本技術的一個或多個實施方式的開放TOC頁。

圖4I示出了根據(jù)本技術的一個或多個實施方式的開放數(shù)據(jù)頁。

圖5A和5B示出了根據(jù)本技術的一個或多個實施方式的各種數(shù)據(jù)結構。

圖6A—6C示出了根據(jù)本技術的一個或多個實施方式的流程圖。

圖7A—7G示出了根據(jù)本技術的一個或多個實施方式的示例。

圖8A—8B示出了根據(jù)本技術的一個或多個實施方式的流程圖。

具體實施方式

現(xiàn)在將參考附圖來詳細地描述本技術的特定實施方式。在本技術的實施方式的以下詳細描述中,闡述了許多特定細節(jié)以便提供本技術的更透徹理解。然而,對于本領域的技術人員而言將顯而易見的是可在沒有這些特定細節(jié)的情況下實施本技術。在其它情況下,并未詳細地描述眾所周知的特征以避免不必要地使本描述變得復雜。

在圖1A—8B的以下描述中,在本技術的各種實施方式中相對于圖所述的任何部件可等價于相對于任何其它圖所述的一個或多個相同名稱部件。為了簡便起見,將不會相對于每個圖重復這些部件的描述。因此,每個圖的部件的每個實施方式是通過引用而結合的,并且被假設為可選地存在于具有一個或多個相同命名的部件的每個其它圖內(nèi)。另外,根據(jù)本技術的各種實施方式,應將圖的部件的任何描述解釋為除相對于任何其它圖中的相應相同命名部件所描述的實施方式之外、與之相結合或作為其替代可實現(xiàn)的可選實施方式。

一般地,本技術的實施方式涉及存儲系統(tǒng)。更具體地,本技術的實施方式涉及包括自描述數(shù)據(jù)的存儲系統(tǒng)。此外,本技術的實施方式涉及其中訪問存儲在存儲系統(tǒng)中的用戶數(shù)據(jù)所需的所有元數(shù)據(jù)與其描述的用戶數(shù)據(jù)位于一起的存儲系統(tǒng)。另外,使用該元數(shù)據(jù)來填充存儲器內(nèi)數(shù)據(jù)結構,其允許存儲系統(tǒng)僅使用存儲器內(nèi)數(shù)據(jù)結構來直接地訪問用戶數(shù)據(jù)。另外,本技術的實施方式涉及在電源故障(或其它系統(tǒng)故障)的情況下將用戶數(shù)據(jù)和元數(shù)據(jù)存儲在持久性儲存器中,并且然后在電源恢復時恢復此類存儲數(shù)據(jù)和元數(shù)據(jù)。

圖1A—1E示出了根據(jù)本技術的一個或多個實施方式的系統(tǒng)。參考圖1A,該系統(tǒng)包括操作連接到存儲裝置102的一個或多個客戶端(客戶端A(100A)、客戶端M(100M))。

在本技術的一個實施方式中,客戶端100A、100M對應于包括用以向存儲裝置102發(fā)布讀請求和/或向存儲裝置102發(fā)布寫請求的功能的任何系統(tǒng)。雖 然在圖1A中未示出,客戶端100A、100M中的每一個可包括客戶端處理器和客戶端存儲器。在下面的圖1D中描述了關于客戶端中的部件的附加細節(jié)。在本技術的一個實施方式中,客戶端100A、100M被配置成使用以下協(xié)議中的一個或多個來與存儲裝置102通信:外圍部件互連(PCI)、快速PCI(PCIe)、擴展PCI(PCI-X)、快速非易失性存儲器(NVMe)、通過快速PCI結構的快速非易失性存儲器(NVMe)、通過以太網(wǎng)結構的快速非易失性存儲器(NVMe)以及通過Infiniband結構的快速非易失性存儲器(NVMe)。本領域的技術人員將認識到本技術不限于上述協(xié)議。

在本技術的一個或多個實施方式中,如果客戶端實現(xiàn)PCI、快速PCI或NVMe,則客戶端包括根復合體(未示出)。在本技術的一個實施方式中,根復合體是將客戶端處理器和客戶端存儲器連接到PCIe結構的設備。在本技術的一個實施方式中,根復合體被集成到客戶端處理器中。

在本技術的一個實施方式中,PCIe結構包括根復合體和端點,其經(jīng)由交換機(例如,圖1D中的客戶端交換機116和交換機結構(例如圖2A中的交換機結構206)內(nèi)的交換機)連接。在本技術的一個實施方式中,端點是除根復合體和交換機之外的設備,其可以發(fā)起PCI交易(例如,讀請求、寫請求)或者是PCI交易的目標。

在本技術的一個實施方式中,可將單個客戶端和單個存儲裝置視為單個PCIe結構的一部分。在本技術的另一實施方式中,可將一個或多個客戶端和一個或多個存儲裝置的任何組合視為單個PCIe結構的一部分。此外,如果存儲裝置內(nèi)的單獨部件使用PCIe進行通信,并且客戶端(參見圖1D)內(nèi)的單獨部件使用PCIe進行通信,則可將存儲設備和客戶端中的所有部件視為單個PCIe結構的一部分。本領域的技術人員將認識到在不脫離本技術的情況下可使用另一種結構來實現(xiàn)本技術的各種實施方式。

繼續(xù)圖1A,在本技術的一個實施方式中,存儲裝置102是包括易失性和持久性儲存器兩者且被配置成服務來自一個或多個客戶端100A、100M的讀請求和/或?qū)懻埱蟮南到y(tǒng)。下面在圖2A—2D中描述存儲裝置102的各種實施方式。

參考圖1B,圖1B示出了其中客戶端100A、100M被連接到以網(wǎng)格配置(在圖1B中表示為存儲裝置網(wǎng)格104)布置的多個存儲裝置104A、104B、104C、104D的系統(tǒng)。如圖1B中所示,以完全連接網(wǎng)格配置示出了存儲裝置網(wǎng)格104— 亦即,存儲裝置網(wǎng)格104中的每個存儲裝置104A、104B、104C、104D被直接地連接到存儲裝置網(wǎng)格104中的每個其它存儲裝置104A、104B、104C、104D。在本技術的一個實施方式中,客戶端100A、100M中的每一個可被直接地連接到存儲裝置網(wǎng)格104中的一個或多個存儲裝置104A、104B、104C、104D。本領域的技術人員將認識到的是在不脫離本技術的情況下可使用其它網(wǎng)格配置(例如,部分連接網(wǎng)格)來實現(xiàn)存儲裝置網(wǎng)格。

參考圖1C,圖1C示出了其中客戶端100A、100M被連接到以扇出配置布置的多個存儲裝置104A、104B、104C、104D的系統(tǒng)。在此配置中,每個客戶端100A、100M被連接到存儲裝置104A、104B、104C、104D中的一個或多個;然而,在單獨存儲裝置104A、104B、104C、104D之間不存在通信。

參考圖1D,圖1D示出了根據(jù)本技術的一個或多個實施方式的客戶端。如圖1D中所示,客戶端110包括客戶端處理器112、客戶端存儲器114以及客戶端交換機116。下面描述這些部件中的每一個。

在本技術的一個實施方式中,客戶端處理器112是具有被配置成執(zhí)行指令的單核或多個核的一組電子電路。在本技術的一個實施方式中,可使用復雜指令集(CISC)架構或精簡指令集(RISC)架構來實現(xiàn)客戶端處理器112。在本技術的一個或多個實施方式中,客戶端處理器112包括根復合體(由PCIe協(xié)議定義)(未示出)。在本技術的一個實施方式中,如果客戶端110包括根復合體(其可被集成到客戶端處理器112中),則客戶端存儲器114經(jīng)由根復合體連接到客戶端處理器112。替換地,客戶端存儲器114使用另一點到點連接機制而直接地連接到客戶端處理器112。在本技術的一個實施方式中,客戶端存儲器114對應于任何易失性存儲器,包括但不限于動態(tài)隨機存取存儲器(DRAM)、同步DRAM、SDR SDRAM以及DDR SDRAM。

在本技術的一個實施方式中,客戶端存儲器114包括以下各項中的一個或多個:用于客戶端處理器的提交隊列和用于客戶端處理器的完成隊列。在本技術的一個實施方式中,存儲裝置存儲器包括通過結構對客戶端可見的用于客戶端處理器的一個或多個提交隊列,并且客戶端存儲器包括通過結構對存儲裝置可見的用于客戶端處理器的一個或多個完成隊列。在本技術的一個實施方式中,使用用于客戶端處理器的提交隊列來向客戶端處理器發(fā)送命令(例如,讀請求、寫請求)。在本技術的一個實施方式中,使用用于客戶端處理器的完成 隊列來用信號通知客戶端處理器其向另一實體發(fā)布的命令已經(jīng)完成。在不脫離本技術的情況下可使用其它通知機制來實現(xiàn)本技術的各種實施方式。

在本技術的一個實施方式中,客戶端交換機116包括僅單個交換機。在本技術的另一實施方式中,客戶端交換機116包括多個互連交換機。如果客戶端交換機116包括多個交換機,則每個交換機可連接到每個其它交換機,可連接到交換機結構中的交換機子集,或者可僅連接到一個其它交換機。在本技術的一個實施方式中,客戶端交換機116中的每個交換機是被配置成允許在客戶端110與存儲裝置(未示出)之間傳輸數(shù)據(jù)和消息的硬件與邏輯的組合(例如使用集成電路來實現(xiàn))(由交換機結構實現(xiàn)的協(xié)議定義)。

在本技術的一個實施方式中,當客戶端100A、100M實現(xiàn)以下協(xié)議PCI、PCIe或PCI-X中的一個或多個時,客戶端交換機116是PCI交換機。

在此類實施方式中,客戶端交換機116包括許多端口,其中每個端口可被配置為透明橋接器或不透明橋接器。實現(xiàn)為透明橋接器的端口允許根復合體繼續(xù)發(fā)現(xiàn)被(直接地或間接地)連接到端口的設備(其可以是其它根復合體、交換機、PCI橋接器或端點)。相反地,當根復合體遇到被實現(xiàn)為不透明橋接器的端口時,根復合體不能繼續(xù)發(fā)現(xiàn)被連接到端口的設備—相反地,根復合體將此類端口視為端點。

當端口被實現(xiàn)為不透明橋接器時,在不透明橋接器的任一側的設備可僅使用郵箱系統(tǒng)和門鈴中斷(由客戶端交換機實現(xiàn))進行通信。門鈴中斷允許在不透明橋接器的一側的處理器向不透明橋接器的另一側的處理器發(fā)布中斷。此外,郵箱系統(tǒng)包括一個或多個寄存器,其可被在交換機結構的任一側的處理器讀和寫。上述寄存器使得在客戶端交換機的任一側的處理器能夠跨不透明橋接器傳遞控制和狀態(tài)信息。

在本技術的一個實施方式中,為了從在不透明橋接器的一側的設備向在不透明橋接器的另一側的設備發(fā)送PCI交易,必須將PCI交易發(fā)送到實現(xiàn)不透明橋接器的端口。在接收到PCI交易時,客戶端交換機執(zhí)行地址轉換(使用直接地址轉換機制或基于查找表的轉換機制)。結果得到的地址然后被用來將分組朝著在不透明橋接器的另一側的適當設備路由。

在本技術的一個實施方式中,客戶端交換機116被配置成使得客戶端存儲器114的至少一部分直接地可被存儲裝置訪問。換言之,在客戶端交換機的一 側的存儲裝置可經(jīng)由客戶端交換機直接地訪問在客戶端交換機的另一側的客戶端存儲器。

在本技術的一個實施方式中,客戶端交換機116包括DMA引擎118。在本技術的一個實施方式中,可由客戶端處理器或被連接到客戶端交換機的存儲裝置對DMA引擎118進行編程。如上文所討論的,客戶端交換機116被配置成客戶端存儲器114的至少一部分可被存儲裝置或存儲模塊訪問。因此,DMA引擎118可被編程為從可被存儲裝置訪問的客戶端存儲器部分中的地址讀取數(shù)據(jù)并直接地向存儲裝置或存儲模塊中的存儲器寫入此類數(shù)據(jù)的拷貝。此外,DMA引擎118可被編程為從存儲裝置讀取數(shù)據(jù)并向可被存儲裝置訪問的客戶端存儲器部分中的地址直接地寫入此類數(shù)據(jù)的拷貝。

在本技術的一個實施方式中,DMA引擎118支持多播。在此類實施方式中,存儲裝置中的處理器(參見圖2A)可創(chuàng)建多播群,其中,多播群的每個成員對應于存儲裝置上的存儲器中的唯一目的地地址。多播群的每個成員與描述符相關聯(lián),該描述符指定:(i)目的地地址;(ii)源地址;(iii)傳輸尺寸字段;以及(iv)控制字段。用于每個描述符的源地址保持恒定,而目的地地址針對每個描述符改變。一旦創(chuàng)建了多播群,則通過交換機的以多播群地址為目標的任何數(shù)據(jù)傳輸(包括由DMA引擎發(fā)起的傳輸)將數(shù)據(jù)的相同拷貝放置在與多播群相關聯(lián)的所有目的地地址上。在本技術的一個實施方式中,交換機并行地處理所有多播群描述符。

繼續(xù)圖1D的討論,本領域的技術人員將認識到雖然圖1D示出了位于客戶端110中的客戶端交換機116,但在不脫離本技術的情況下客戶端交換機116可定位在客戶端外部。此外,本領域的技術人員將認識到在不脫離本技術的情況下可將DMA引擎118定位在客戶端交換機116外部。

參考圖1E,圖1E示出了其中客戶端100A、100M經(jīng)由客戶端交換機108連接到以網(wǎng)格配置(在圖1E中表示為存儲裝置網(wǎng)格104)布置的多個存儲裝置104A、104B、104C、104D的系統(tǒng)。在圖1E中所示的實施方式中,每個客戶端100A、100M不包括其自己的客戶端交換機—相反地,所有客戶端共享客戶端交換機108。如圖1E中所示,以完全連接網(wǎng)格配置示出了存儲裝置網(wǎng)格104—亦即,存儲裝置網(wǎng)格104中的每個存儲裝置104A、104B、104C、104D被直接地連接到存儲裝置網(wǎng)格104中的每個其它存儲裝置104A、104B、104C、 104D。在本技術的一個實施方式中,客戶端交換機108可被直接地連接到存儲裝置網(wǎng)格104中的一個或多個存儲裝置104A、104B、104C、104D。本領域的技術人員將認識到的是在不脫離本技術的情況下可使用其它網(wǎng)格配置(例如,部分連接網(wǎng)格)來實現(xiàn)存儲裝置網(wǎng)格。

雖然在圖1E中未示出,但每個客戶端可包括其自己的客戶端交換機(如圖1D)中所示,但是可使用交換機結構(下文定義)連接到存儲裝置網(wǎng)格104。

本領域的技術人員將認識到雖然圖1A—1E示出了被連接到有限數(shù)目的客戶端的存儲裝置,但在不脫離本技術的情況下存儲裝置可連接到任何數(shù)目的客戶端。本領域的技術人員將認識到雖然圖1A—1E示出了各種系統(tǒng)配置,但本技術不限于上述系統(tǒng)配置。此外,本領域的技術人員將認識到的是在不脫離本技術的情況下客戶端(無論系統(tǒng)的配置如何)可使用交換機結構(未示出)(下面描述)連接到存儲裝置。

圖2A—2D示出了根據(jù)本技術的一個或多個實施方式的存儲裝置。參考圖2A,存儲裝置包括控制模塊200和存儲模塊組202。下面描述這些部件中的每一個。一般地,控制模塊200被配置成管理來自一個或多個客戶端的讀和寫請求的服務。特別地,控制模塊被配置成經(jīng)由IOM(下面討論)從一個或多個客戶端接收請求,處理該請求(其可包括向存儲模塊發(fā)送該請求),并在請求已被服務之后向客戶端提供響應。下面包括關于控制模塊中的部件的附加細節(jié)。此外,下面參考圖4A—7C來描述相對于執(zhí)行讀和寫請求的控制模塊的操作。

繼續(xù)圖2A的討論,在本技術的一個實施方式中,控制模塊200包括輸入/輸出模塊(IOM)204、交換機結構206、處理器208、存儲器210以及可選地現(xiàn)場可編程門陣列(FPGA)212。在本技術的一個實施方式中,IOM 204是客戶端(圖1A—1E中的100A、100M)與存儲裝置中的其它部件之間的物理接口。IOM支持以下協(xié)議中的一個或多個:PCI、PCIe、PCI-X、以太網(wǎng)(包括但不限于根據(jù)IEEE 802.3a—802.3bj定義的各種標準)、Infiniband以及融合以太網(wǎng)承載遠程直接存儲器訪問(RDMA)(RoCE)。本領域的技術人員將認識到在不脫離本技術的情況下可使用除上文列出的那些之外的協(xié)議來實現(xiàn)IOM。

繼續(xù)圖2A的討論,交換機結構206包括僅單個交換機。在本技術的另一實施方式中,交換機結構206包括多個互連交換機。如果交換機結構206包括 多個交換機,則每個交換機可連接到每個其它交換機,可連接到交換機結構中的交換機子集,或者可僅連接到交換機結構中的一個其它交換機。在本技術的一個實施方式中,交換機結構206中的每個交換機是被配置成在存儲裝置中將各種部件連接在一起并在各種連接部件之間路由分組(使用邏輯)的硬件與邏輯的組合(例如使用集成電路來實現(xiàn))(由交換機結構實現(xiàn)的協(xié)議定義)。在本技術的一個實施方式中,交換機結構206在物理上連接到IOM 204、處理器208、存儲模塊組202以及(如果存在的話)FPGA 212。在本技術的一個實施方式中,控制模塊200中的所有部件間通信(除處理器208與存儲器210之間的通信外)通過交換機結構206。此外,控制模塊200與存儲模塊組202之間的所有通信通過交換機結構206。在本技術的一個實施方式中,使用PCI協(xié)議(例如,PCI、PCIe、PCI-X或另一PCI協(xié)議)來實現(xiàn)交換機結構206。在此類實施方式中,通過交換機結構206的所有通信使用相應的PCI協(xié)議。

在本技術的一個實施方式中,如果交換機結構實現(xiàn)PCI協(xié)議,則交換機結構206包括用于處理器的端口(或者具體地用于集成在處理器208中的根復合體或用于連接到處理器的根復合體的端口)、用于存儲模塊組202中的存儲模塊214A、214N(參見圖3A—3B)的一個或多個端口、用于FPGA 212(如果存在的話)的端口以及用于IOM 204的端口。在本技術的一個或多個實施方式中,可將上述端口中的每一個配置為透明橋接器或不透明橋接器(如上文所討論的)。本領域的技術人員將認識到的是雖然相對于PCI實現(xiàn)方式來描述交換機結構206,但在不脫離本技術的情況下可使用其它協(xié)議來實現(xiàn)交換機結構206。

在本技術的一個實施方式中,交換機結構206中的至少一個交換機被配置成實現(xiàn)多播。更具體地,在本技術的一個實施方式中,處理器208被配置成產(chǎn)生多播組,其中,該多播組包括兩個或更多成員,每個成員指定存儲器210中和/或存儲模塊214A、214N中的地址。當創(chuàng)建多播組時,多播組與多播地址相關聯(lián)。為了實現(xiàn)多播,交換機結構中的至少一個交換機被配置成當接收到將多播地址指定為目的地地址的寫入時,交換機被配置成生成針對多播組中的每個成員的新寫入,并將該寫入發(fā)布到存儲裝置中的適當?shù)刂?。在本技術的一個實施方式中,通過向多播地址添加特定偏移來確定用于由交換機生成的每個寫入的地址。

繼續(xù)圖2A,處理器208是具有被配置執(zhí)行指令的單核或多個核的一組電子電路。在本技術的一個實施方式中,可使用復雜指令集(CISC)架構或精簡指令集(RISC)架構來實現(xiàn)處理器208。在本技術的一個或多個實施方式中,處理器208包括根復合體(由PCIe協(xié)議定義)。在本技術的一個實施方式中,如果控制模塊200包括根復合體(其可被集成到處理器208中),則存儲器210經(jīng)由根復合體連接到處理器208。替換地,存儲器210使用另一點到點連接機制而直接地連接到處理器208。在本技術的一個實施方式中,存儲器210對應于任何易失性存儲器,包括但不限于動態(tài)隨機存取存儲器(DRAM)、同步DRAM、SDR SDRAM以及DDR SDRAM。

在本技術的一個實施方式中,處理器208被配置成創(chuàng)建并更新存儲器內(nèi)數(shù)據(jù)結構(未示出),其中,該存儲器內(nèi)數(shù)據(jù)結構被存儲在存儲器210中。在本技術的一個實施方式中,存儲器內(nèi)數(shù)據(jù)結構包括存儲模塊組中的邏輯地址與物理存儲地址之間的(直接或間接)映射。在本技術的一個實施方式中,邏輯地址是從客戶端的觀點出發(fā)數(shù)據(jù)看起來常駐于該處的地址。在本技術的一個實施方式中,邏輯地址是(或包括)通過對n元組應用散列函數(shù)(例如SHA-1、MD-5等)而生成的散列值。在本技術的一個實施方式中,n元組是<對象ID,偏移ID>,其中,對象ID定義文件且偏移ID定義相對于該文件的起始地址的位置。在本技術的另一實施方式中,n元組是<對象ID,偏移ID,產(chǎn)生時間>,其中,產(chǎn)生時間對應于文件(使用對象ID識別)被創(chuàng)建時的時間。替換地,邏輯地址可包括邏輯對象ID和邏輯字節(jié)地址、或者邏輯對象ID和邏輯地址偏移。在本技術的另一實施方式中,邏輯地址包括對象ID和偏移ID。本領域的技術人員將認識到可將多個邏輯地址映射到單個物理地址,并且邏輯地址不限于上述實施方式。

在本技術的一個實施方式中,物理地址可對應于(i)存儲器210中的位置,(ii)安全存儲器(例如,圖3A中的326)中的位置,或者(iii)固態(tài)存儲器模塊(例如,圖3B中的330)中的位置。在本技術的一個實施方式中,存儲器內(nèi)數(shù)據(jù)結構可將單個散列值映射到多個物理地址,如果在存儲裝置中存在數(shù)據(jù)的多個拷貝的話。

在本技術的一個實施方式中,存儲器210包括以下各項中的一個或多個:用于處理器的提交隊列、用于處理器的完成隊列、用于存儲裝置中的每個存儲 模塊的提交隊列以及用于存儲裝置中的每個存儲模塊的完成隊列。在本技術的一個實施方式中,使用用于處理器的提交隊列來向處理器發(fā)送命令(例如,讀請求、寫請求)。在本技術的一個實施方式中,使用用于處理器的完成隊列來用信號通知客戶端處理器其向另一實體發(fā)布的命令已經(jīng)完成。用于存儲模塊的提交和完成隊列以類似方式運行。

在本技術的一個實施方式中,處理器(經(jīng)由交換機結構)被配置成將各種類型的處理卸載到FPGA 212中。在本技術的一個實施方式中,F(xiàn)PGA 212包括用以計算用于正被寫入到存儲模塊的數(shù)據(jù)和/或正在從存儲模塊讀取的數(shù)據(jù)的檢查和。此外,F(xiàn)PGA 212可包括用以出于使用RAID方案(例如,RAID 2—RAID 6)將數(shù)據(jù)存儲在存儲模塊中的目的計算P和/或Q奇偶信息的功能和/或用以執(zhí)行恢復使用RAID方案(例如,RAID 2—RAID 6)存儲的已損壞數(shù)據(jù)所需的各種計算的功能。在本技術的一個實施方式中,存儲模塊組202包括每個被配置成存儲數(shù)據(jù)的一個或多個存儲模塊214A、214N。下面在圖3A—3B中描述存儲模塊。

在本技術的一個實施方式中,處理器208被配置成將一個或多個DMA引擎編程在系統(tǒng)中。例如,處理器208被配置成將DMA引擎編程在客戶端交換機中(參見圖1D)。處理器208還可被配置成將DMA引擎編程在存儲模塊中(參見圖3A—3B)。在本技術的一個實施方式中,將DMA引擎編程在客戶端交換機中可包括創(chuàng)建多播組并針對多播組中的每個成員生成描述符。

轉到圖2B,圖2B示出了根據(jù)本技術的一個或多個實施方式的存儲裝置。該存儲裝置包括控制模塊216和至少兩個存儲模塊組236、238??刂颇K216包括交換機結構234,其被直接地連接到IOM A 218、IOM B 220、處理器A 222、處理器B 224、(如果存在的話)FPGA A 230、(如果存在的話)FPGA B 232、存儲模塊組A 236中的存儲模塊236A、236N和存儲模塊組B 238中的存儲模塊238A、238N。上述部件之間(除處理器A 222與處理器B 224之間的以外)的所有通信都通過交換機結構234。在本技術的一個實施方式中,控制模塊216內(nèi)的處理器222、224能夠直接地使用例如點到點互連(諸如QuickPath互連)進行通信。本領域的技術人員將認識到在本脫離本技術的情況下可使用其它點到點通信機制來許可處理器222、224之間的直接通信。

繼續(xù)圖2B,在本技術的一個實施方式中,控制模塊216基本上類似于圖2A中的控制模塊200。在本技術的一個實施方式中,交換機結構234基本上類似于圖2A中的交換機結構206。在本技術的一個實施方式中,每個處理器222、224基本上類似于圖2A中的處理器208。在本技術的一個實施方式中,存儲器226、228基本上類似于圖2A中的存儲器210。在本技術的一個實施方式中,IOM 218、220基本上類似于圖2A中的IOM 204。在本技術的一個實施方式中,F(xiàn)PGA 230、232基本上類似于圖2A中的FPGA 212。最后,存儲模塊組236、238基本上類似于圖2A中的存儲模塊組202。

在本技術的一個實施方式中,控制模塊216中的兩個IOM 218、220將用于控制模塊216的I/O帶寬加倍(相比于具有單個IOM的控制模塊的I/O帶寬)。此外,第二IOM(或附加IOM)的添加增加可連接到給定控制模塊的客戶端的數(shù)目以及(通過擴展)可以連接到存儲裝置的客戶端的數(shù)目。在本技術的一個實施方式中,使用交換機結構234來處理各種連接部件(上文所述)之間的通信允許每個處理器222、224直接地訪問(經(jīng)由交換機結構234)所有FPGA230、232和連接到交換機結構234的所有存儲模塊236A、236N、238A、238N。

參考圖2C,圖2C示出了包括連接(經(jīng)由交換機結構246)到存儲模塊組256、258、260、262中的多個存儲模塊(未示出)的控制模塊240。如圖2C中所示,控制模塊240包括兩個IOM 242、244、兩個處理器248、250以及存儲器252、254。在本技術的一個實施方式中,控制模塊240中的所有部件經(jīng)由交換機結構246進行通信。另外,處理器248、250使用交換機結構246或直接連接(如圖2C中所示)相互通信。在本技術的一個實施方式中,控制模塊240內(nèi)的處理器248、250能夠直接地使用例如點到點互連(諸如QuickPath互連)進行通信。本領域的技術人員將認識到在本脫離本技術的情況下可使用其它點到點通信機制來許可處理器248、250之間的直接通信。

在本技術的一個實施方式中,處理器A 248被配置成主要處理與來自存儲模塊組A和B 256、258的數(shù)據(jù)的存儲和檢索有關的請求,而處理器B 250被配置成主要處理與來自存儲模塊組C和D 260、262的數(shù)據(jù)的存儲和檢索有關的請求。然而,處理器248、250被配置成與所有存儲模塊組256、258、260、262通信(經(jīng)由交換機結構246)。此配置使得控制模塊240能夠在處理器之間擴散I/O請求的處理和/或提供內(nèi)置冗余以處理其中處理器中的一個失靈的情 形。

繼續(xù)圖2C,在本技術的一個實施方式中,控制模塊240基本上類似于圖2A中的控制模塊200。在本技術的一個實施方式中,交換機結構246基本上類似于圖2A中的交換機結構206。在本技術的一個實施方式中,每個處理器248、250基本上類似于圖2A中的處理器208。在本技術的一個實施方式中,存儲器252、254基本上類似于圖2A中的存儲器210。在本技術的一個實施方式中,IOM 242、244基本上類似于圖2A中的IOM 204。最后,存儲模塊組256、258、260、262基本上類似于圖2A中的存儲模塊組202。

參考圖2D,圖2D示出了包括兩個控制模塊264、266的存儲裝置。每個控制模塊包括IOM 296、298、300、302、處理器268、270、272、274、存儲器276、278、280、282以及(如果存在的話)FPGA 288、290、292、294??刂颇K264、266中的每一個包括控制模塊內(nèi)的部件通過其進行通信的交換機結構284、286。

在本技術的一個實施方式中,控制模塊內(nèi)的處理器268、270、272、274可直接地使用例如點到點互連(諸如QuickPath互連)相互通信。本領域的技術人員將認識到在本脫離本技術的情況下可使用其它點到點通信機制來許可處理器268、270、272、274之間的直接通信。另外,控制模塊A中的處理器268、270可經(jīng)由到控制模塊B中的交換機結構286的直接連接來與控制模塊B中的部件相互通信。同樣地,控制模塊B中的處理器272、274可經(jīng)由到控制模塊A中的交換機結構284的直接連接來與控制模塊A中的部件相互通信。

在本技術的一個實施方式中,每個控制模塊被連接到各種存儲模塊(用存儲模塊組304、306、308、310來表示)。如圖2D中所示,每個控制模塊可與被連接到控制模塊中的交換機結構的存儲模塊通信。此外,控制模塊A 264中的處理器可使用交換機結構B 286與被連接到控制模塊B 266的存儲模塊通信。同樣地,控制模塊B 266中的處理器可使用交換機結構A 284與被連接到控制模塊A 264的存儲模塊通信。

控制模塊之間的互連允許控制模塊將I/O負荷跨存儲裝置分布,無論哪個控制模塊接收到I/O請求。此外,控制模塊的互連使得存儲裝置能夠處理較大數(shù)目的I/O請求。此外,控制模塊的互連在控制模塊(或其中的一個或多個部 件)失靈的情況下提供內(nèi)置冗余。

相對于圖2B—2D,在本技術的一個或多個實施方式中,存儲器內(nèi)數(shù)據(jù)結構跨控制模塊中的存儲器被鏡像。在這種情況下,控制模塊中的處理器發(fā)布必要的命令以更新存儲裝置中的所有存儲器,使得存儲器內(nèi)數(shù)據(jù)結構跨所有存儲器被鏡像。以這種方式,任何處理器可使用其自己的存儲器來確定數(shù)據(jù)(由上文所討論的n元組定義)在存儲裝置中的位置。這種功能允許任何處理器服務關于存儲模塊內(nèi)的數(shù)據(jù)位置的任何I/O請求。此外,通過鏡像存儲器內(nèi)數(shù)據(jù)結構,存儲裝置可在存儲器中的一個失靈時繼續(xù)操作。

本領域的技術人員將認識到的是雖然圖2A—2D示出了被連接到有限數(shù)目的存儲模塊的控制模塊,但在不脫離本技術的情況下可將控制模塊連接到任何數(shù)目的存儲模塊。本領域的技術人員將認識到的是雖然圖2A—2D示出了存儲裝置的各種配置,但在不脫離本技術的情況下可使用其它配置來實現(xiàn)該存儲裝置。

圖3A—3B示出了根據(jù)本技術的一個或多個實施方式的存儲模塊。參考圖3A,存儲模塊320包括存儲模塊控制器322、存儲器324以及一個或多個固態(tài)存儲器模塊330A、330N。下面描述這些部件中的每一個。

在本技術的一個實施方式中,存儲模塊控制器322被配置成接收用以從一個或多個控制模塊讀取和/或向其寫入數(shù)據(jù)的請求。此外,存儲模塊控制器322被配置成使用存儲器324和/或固態(tài)存儲器模塊330A、330N來服務讀和寫請求。雖然在圖3A中未示出,存儲模塊控制器322可包括DMA引擎,其中,DMA引擎被配置成從存儲器324或者從固態(tài)存儲器模塊330A、330N中的一個讀取數(shù)據(jù)并向客戶端存儲器(圖1D中的114)中的物理地址寫入數(shù)據(jù)的拷貝。此外,DMA引擎可被配置成從存儲器324向固態(tài)存儲器模塊中的一個或多個寫入數(shù)據(jù)。在本技術的一個實施方式中,DMA引擎被配置成被處理器(例如,圖2A中的208)編程。本領域的技術人員將認識到的是在不脫離本技術的情況下存儲模塊可包括在存儲模塊控制器外部的DMA引擎。

在本技術的一個實施方式中,存儲器324對應于任何易失性存儲器,包括但不限于動態(tài)隨機存取存儲器(DRAM)、同步DRAM、SDR SDRAM以及DDR SDRAM。

在本技術的一個實施方式中,可將存儲器324在邏輯上或物理上分區(qū)成安 全存儲器326和高速緩存器328。在本技術的一個實施方式中,存儲模塊控制器322被配置成在有存儲模塊中的電源故障的通知的情況下(或其中存儲模塊可能失去電源的另一情況下)將安全存儲器326的全部內(nèi)容寫出到固態(tài)存儲器模塊330A、330N中的一個或多個。在本技術的一個實施方式中,存儲模塊控制器322被配置成在電源故障通知的時間與存儲模塊的實際失去電源之間將安全存儲器326的全部內(nèi)容寫出到固態(tài)存儲器模塊330A、330N中的一個或多個。相反地,高速緩存器328中的內(nèi)容在電源故障的情況下(或者在其中存儲模塊可能失去電源的另一情況下)丟失。

在本技術的一個實施方式中,固態(tài)存儲器模塊330A、330N對應于使用固態(tài)存儲器來存儲持久性數(shù)據(jù)的任何數(shù)據(jù)存儲設備。在本技術的一個實施方式中,固態(tài)存儲器可包括但不限于NAND閃存、NOR閃存、磁性RAM存儲器(M-RAM)、自旋扭曲磁性RAM存儲器(ST-MRAM)、相變存儲器(PCM)或被定義為非易失性存儲級存儲器(SCM)的任何其它存儲器。

參考圖3B,在本技術的一個實施方式中,如果固態(tài)存儲器模塊330包括閃存(例如,NAND閃存、NOR閃存等),則閃存的一部分可在單層單元(SLC)模式332下操作,并且閃存的另一部分可在多層單元(MLC)模式下操作。更具體地,在本技術的一個實施方式中,閃存是MLC閃存,并且存儲模塊控制器包括用以將某些塊指定為SLC塊(即,SLC模式部分332)并將其它塊指定為MLC塊(即,MLC模式部分334)的功能?;谏鲜鲋付?,存儲模塊控制器可與SLC塊相交互,如同存在SLC閃存一樣,即使該閃存事實上是MLC閃存。

與在MLC模式下操作的閃存的比例(即,MLC模式部分334的尺寸)相比較,在SLC模式下操作的閃存的比例(即,SLC模式部分332的尺寸)可基于技術的實施方式而改變。例如,在本技術的一個實施方式中,在SLC模式下操作的閃存的量至少等于安全存儲器326的尺寸(如圖3A中所示),閃存的其余部分在MLC模式下操作。

在本技術的一個實施方式中,以下存儲位置是統(tǒng)一地址空間的一部分:(i)可經(jīng)由客戶端交換機訪問的客戶端存儲器部分,(ii)控制模塊中的存儲器,(iii)存儲模塊中的存儲器,以及(iv)固態(tài)存儲器模塊。因此,從存儲裝置中的處理器的觀點出發(fā),上述存儲位置(雖然在物理上是分開的)表現(xiàn)為物理地 址的單個池。換言之,處理器可發(fā)布針對存儲在統(tǒng)一地址空間中的任何物理地址處的數(shù)據(jù)的讀和/或?qū)懻埱???蓪⑸鲜龃鎯ξ恢梅Q為存儲結構,其可使用統(tǒng)一地址空間來訪問。

在本技術的一個實施方式中,部分地由允許控制模塊中的處理器“看到”客戶端存儲器的一部分的客戶端交換機中的不透明橋接器創(chuàng)建統(tǒng)一地址空間。因此,控制模塊中的處理器可在其可以“看到”的客戶端存儲器部分中執(zhí)行讀和/或?qū)懻埱蟆?/p>

圖4A示出了根據(jù)本技術的一個或多個實施方式的存儲模塊。固態(tài)存儲器模塊400包括一個或多個塊。在本技術的一個實施方式中,塊是固態(tài)存儲器模塊400內(nèi)的最小可擦除存儲單元。

圖4B示出了根據(jù)本技術的一個或多個實施方式的塊。更具體地,每個塊402包括一個或多個頁。在本技術的一個實施方式中,頁是用于固態(tài)存儲器模塊中的讀和編程操作(包括到頁的初始寫入)的最小可尋址單元。在本技術的一個實施方式中,將塊內(nèi)的頁重寫要求將整個塊重寫。在本技術的一個實施方式中,塊內(nèi)的每個頁是碎片頁(參見圖4C)或內(nèi)容表(TOC)頁(參見圖4D)。

圖4C示出了根據(jù)本技術的一個或多個實施方式的數(shù)據(jù)頁404。在本技術的一個實施方式中,數(shù)據(jù)頁404包括一個或多個碎片。在本技術的一個實施方式中,碎片對應于有限量的用戶數(shù)據(jù)。此外,給定頁內(nèi)的碎片可以是均勻尺寸的或不均勻尺寸的。此外,給定塊內(nèi)的碎片可以是均勻尺寸的或不均勻尺寸的。在本技術的一個實施方式中,給定碎片可小于頁的尺寸,可精確地是頁的尺寸,或者可擴展超出一個或多個頁。在本技術的一個實施方式中,數(shù)據(jù)頁僅僅包括碎片。在本技術的一個實施方式中,每個碎片包括用戶數(shù)據(jù)(即,由客戶端提供的用于存儲在存儲裝置中的數(shù)據(jù))。出于本描述的目的,可互換地使用術語“碎片”和“用戶數(shù)據(jù)”。

圖4D示出了根據(jù)本技術的一個或多個實施方式的TOC頁。在本技術的一個實施方式中,TOC頁406包括一個或多個TOC條目,其中,每個TOC條目包括用于給定碎片的元數(shù)據(jù)。另外,TOC頁406可包括對塊402中的另一TOC頁的引用。在本技術的一個實施方式中,TOC頁僅包括TOC條目(以及可選地對塊中的另一TOC頁的引用),但是不包括任何碎片。在本技術的一個實施方式中,每個TOC條目對應于塊402中的碎片(參見圖4C)。TOC 條目僅僅對應于塊內(nèi)的碎片。換言之,TOC頁與塊相關聯(lián),并且僅包括用于該塊中的碎片的TOC條目。在本技術的一個實施方式中,每個固態(tài)存儲器模塊內(nèi)的每個塊中的無缺陷的最后一頁是TOC頁。

圖4E示出了根據(jù)本技術的一個或多個實施方式的塊。更具體地,圖4E示出了包括TOC頁420、424、431和數(shù)據(jù)頁416、418、422、428、428、430的塊408。在本技術的一個實施方式中,從“頂部”到“底部”在概念上填充塊408。此外,一旦用于數(shù)據(jù)頁中的碎片的TOC條目的累積尺寸等于頁的尺寸,則生成并存儲TOC頁。轉到圖4E,例如,數(shù)據(jù)頁0 416和數(shù)據(jù)頁1 418被存儲在塊408中。用于數(shù)據(jù)頁0 416和數(shù)據(jù)頁1 418中的碎片(未示出)的相應TOC條目(未示出)具有等于塊中的頁尺寸的總累積尺寸。因此,生成TOC頁414(使用對應于塊中的碎片的TOC條目)并存儲在塊408中。碎片頁2 420隨后被寫入到塊408。由于對應于數(shù)據(jù)頁2 420中的碎片(未示出)的TOC條目具有等于塊中的頁尺寸的總累積尺寸,所以創(chuàng)建TOC頁412并存儲在塊408中。此外,由于在塊408中已存在TOC頁,所以TOC頁412還包括對TOC頁414的引用。

重復此過程直至在塊408中僅剩下一個頁要填充為止。在這里,創(chuàng)建TOC頁410并存儲在塊408的最后一頁中。本領域的技術人員將認識到TOC頁410中的TOC條目的總累積尺寸可以小于頁的尺寸。在這種情況下,TOC頁可包括補位以解決TOC條目的累積尺寸與頁尺寸之間的差。最后,由于在塊408中存在其它TOC頁,所以TOC頁410包括對一個其它TOC頁412的引用。

如圖4E中所示,TOC頁被從塊的“底部”鏈接到頁的“頂部”,使得可通過遵循在TOC頁下面的來自TOC頁的引用而獲得TOC頁。例如,可使用TOC頁410中的引用來訪問TOC頁412。

本領域的技術人員將認識到雖然塊408僅包括數(shù)據(jù)頁和TOC頁,但在不脫離本技術的情況下塊408可包括除數(shù)據(jù)頁和TOC頁之外的頁(例如,包括奇偶數(shù)據(jù)的頁)。此類其它頁可位于塊內(nèi),并且根據(jù)實施方式,在TOC頁與數(shù)據(jù)頁之間交錯。

圖4F示出了根據(jù)本技術的一個或多個實施方式的TOC條目。在本技術的一個實施方式中,每個TOC條目430包括用于碎片(且特別是碎片中的用戶數(shù)據(jù))的元數(shù)據(jù),并且可包括以下字段中的一個或多個:

(i)對象ID 432,其識別到被存儲的對象(例如,文件);

(ii)產(chǎn)生時間434,其指定對應于TOC條目的碎片被寫入到安全存儲器的時間(例如,控制模塊中的處理器的處理器時鐘值);

(iii)偏移ID 436,其識別相對于對象(由對象ID識別)的開頭而言的碎片中的用戶數(shù)據(jù)的起始點;

(iv)碎片尺寸438,其指定碎片的尺寸;

(v)頁ID 440,其識別碎片被存儲在其中的塊中的頁;

(vi)字節(jié)442,其識別頁(由頁ID識別)中的碎片的起始位置;

(vii)邏輯長度444,其指定碎片中的用戶數(shù)據(jù)的未壓縮長度;

(viii)類型446,其指定碎片中的用戶數(shù)據(jù)的類型(例如,壞頁、數(shù)據(jù)、快照、池);

(ix)種類448,其指定碎片是否是有效用戶數(shù)據(jù)或整齊的(其指示當固態(tài)存儲器模塊執(zhí)行垃圾收集時該碎片可被擦除);以及

(x)預留450,其對應于可用來存儲其它用戶數(shù)據(jù)的TOC條目中的空間。

在本技術的一個實施方式中,<對象ID,偏移ID>或<對象ID,偏移ID,產(chǎn)生時間>識別由客戶端提供的用戶數(shù)據(jù)。此外,<對象ID,偏移ID>或<對象ID,偏移ID,產(chǎn)生時間>被客戶端用來識別特定用戶數(shù)據(jù),而存儲裝置使用物理地址來識別存儲裝置內(nèi)的用戶數(shù)據(jù)。本領域的技術人員將認識到客戶端可提供邏輯地址而不是對象ID和偏移ID。

本領域的技術人員將認識到的是在不脫離本技術的情況下TOC條目可包括與圖4F中所示的相比附加的字段或更少的字段。此外,在不脫離本技術的情況下,可將TOC條目中的字段按照不同順序布置和/或組合。另外,雖然圖4F中所示的TOC條目中的字段看起來全部是相同尺寸的,但TOC條目中的各種字段的尺寸可以是不均勻的,任何給定字段的尺寸基于TOC條目的實施方式而改變。

圖4G示出了根據(jù)本技術的一個或多個實施方式的安全存儲器內(nèi)容??蓪踩鎯ζ?60內(nèi)的存儲器部分分配為與最終存儲在持久性儲存器中的頁相同尺寸的段(參見例如圖4E)。在本技術的一個實施方式中,上述段可包括:(i)開放TOC頁462,(ii)開放數(shù)據(jù)頁464,以及(iii)寫入數(shù)據(jù)頁466。雖然以下小節(jié)相對于單個開放TOC頁、單個開放數(shù)據(jù)頁以及單個寫入數(shù)據(jù)頁來描述 本技術,但在不脫離本技術的情況下可使用多個開放TOC頁、多個開放數(shù)據(jù)頁和/或多個寫入頁來實現(xiàn)本技術的實施方式。在不脫離本技術的情況下,安全存儲器可包括其它段。

開放TOC頁462是被用來在TOC條目被寫入到適當固態(tài)存儲器模塊之前存儲此類TOC條目的存儲器的一部分。更具體地,TOC條目被存儲在安全存儲器內(nèi)的開放TOC頁中,并且在某個時間點,開放TOC頁變成滿的(即,其不能再存儲任何額外的TOC條目)。當這發(fā)生時,開放TOC頁的內(nèi)容被寫入到存儲存儲器模塊中的適當塊作為TOC頁(參見例如圖4D)。在圖4H中示出了關于開放TOC頁的附加細節(jié)。

開放數(shù)據(jù)頁464是被用來在碎片被寫入到適當固態(tài)存儲器模塊之前存儲此類碎片的存儲器的一部分。在圖4H中示出了關于開放數(shù)據(jù)頁的附加細節(jié)。寫入數(shù)據(jù)頁466是包括當前被寫入到適當固態(tài)存儲器模塊的碎片的存儲器的一部分。存儲器的上述部分的指定可隨時間而變。例如,存儲器的某個部分最初可被指定為開放數(shù)據(jù)頁。一旦存儲器的此部分已滿(即,不能在該存儲器部分中再存儲碎片),則該存儲器部分的指定變成寫入數(shù)據(jù)頁。寫入數(shù)據(jù)頁的內(nèi)容然后被寫入到固態(tài)存儲器模塊中的適當塊作為數(shù)據(jù)頁(參見例如圖4C)。在下面的圖6A—7G中可找到關于開放TOC頁、開放數(shù)據(jù)頁以及寫入數(shù)據(jù)的附加細節(jié)。

圖4H示出了根據(jù)本技術的一個或多個實施方式的開放TOC頁。開放TOC頁470包括TOC位476,其中,TOC位的狀態(tài)(例如,0或1)反映該存儲器部分是TOC頁。開放TOC頁470還包括臨時物理地址478,其對應于TOC頁最終將被存儲在該處的塊中(固態(tài)存儲器模塊中)的位置,但是不一定對應于TOC頁將被存儲在該處的塊中的實際位置。更具體地,根據(jù)圖6C來確定TOC頁被存儲在給定塊中的位置。因此,在產(chǎn)生TOC頁時(即,在TOC條目被存儲在開放TOC頁中時),未示出TOC頁的最終位置。然而,TOC頁將被存儲在其中的塊是已知的。因此,臨時物理地址被選作TOC頁將被存儲在其中的塊內(nèi)的地址。TOC位476和臨時物理地址478可統(tǒng)稱為標簽472。標簽472在其它內(nèi)容被存儲在開放TOC頁之前被存儲在開放TOC頁中。參考圖4H,開放TOC頁還包括一個或多個TOC條目,其可共同地稱為有效負荷。

圖4I示出了根據(jù)本技術的一個或多個實施方式的開放數(shù)據(jù)頁。開放數(shù)據(jù)頁 480包括TOC位486,其中,TOC位的狀態(tài)(例如,0或1)反映該存儲器部分是數(shù)據(jù)頁。開放數(shù)據(jù)頁480還包括物理地址488,其對應于數(shù)據(jù)頁最終將其存儲在該處的塊中(在固態(tài)存儲器模塊中)的位置。TOC位486和物理地址488可統(tǒng)稱為標簽482。標簽482在其它內(nèi)容被存儲在開放數(shù)據(jù)頁之前被存儲在開放數(shù)據(jù)頁中。參考圖4I,開放數(shù)據(jù)頁還包括一個或多個碎片,其可統(tǒng)稱為有效負荷484。

圖5A示出了根據(jù)本技術的一個或多個實施方式的數(shù)據(jù)結構。如上文所討論的,控制模塊中的存儲器包括存儲器內(nèi)數(shù)據(jù)結構。在本技術的一個實施方式中,存儲器內(nèi)數(shù)據(jù)結構包括n元組(例如,<對象ID,偏移ID>500,<對象ID,偏移ID,產(chǎn)生時間>(未示出))與固態(tài)存儲器模塊中的碎片的物理地址502之間的映射。在本技術的一個實施方式中,該映射是在n元組的散列值與物理地址之間。在本技術的一個實施方式中,將用于碎片的物理地址定義為以下n元組:<存儲模塊,通道,芯片啟用,LUN,平面,塊,頁,字節(jié)>。上述元組對應于物理地址的內(nèi)容的邏輯表示??蓪⑸鲜鰞?nèi)容編碼成例如被存儲裝置中的各種部件(參見例如圖1A—3B)使用的48位物理地址。

圖5B示出了根據(jù)本技術的一個或多個實施方式的數(shù)據(jù)結構。在本技術的一個實施方式中,控制模塊跟蹤每個塊504的TOC條目506的數(shù)目。更具體地,每當碎片被寫入到安全存儲器時,創(chuàng)建用于碎片的TOC條目??刂颇K跟蹤新創(chuàng)建的TOC條目與哪個塊相關聯(lián)并使用此信息來生成TOC頁。例如,控制模塊使用上述信息來確定與給定塊相關聯(lián)的未被寫入到TOC塊的所有TOC條目的累積尺寸是否等于塊中的頁尺寸。如果與給定塊相關聯(lián)的未被寫入到TOC塊的所有TOC條目的累積尺寸等于塊中的頁尺寸,則控制模塊可使用上述條目來生成TOC頁,并發(fā)起TOC頁到存儲模塊的寫入(參見例如圖6C)。

圖6A—6C示出了根據(jù)本技術的一個或多個實施方式的流程圖。更具體地,圖6A—6C示出了根據(jù)本技術的一個或多個實施方式的用于將用戶數(shù)據(jù)存儲在存儲裝置中的方法。雖然連續(xù)地提出并描述了流程圖中的各種步驟,但本領域的技術人員將認識到某些或所有步驟可按照不同順序執(zhí)行,可被組合或省略,并且某些或所有步驟可并行地執(zhí)行。在本技術的一個實施方式中,圖6A中所示的步驟可與圖6B中所示的步驟和圖6C中所示的步驟并行地執(zhí)行。此外,圖6B中所示的步驟可與圖6C中所示的步驟并行地執(zhí)行。

參考圖6A,在步驟600中,客戶端向控制模塊(圖2A中的208)中的處理器的提交隊列(SQ)寫入寫命令(寫請求)。在本技術的一個實施方式中,寫命令指定客戶端存儲器中的用戶數(shù)據(jù)的邏輯地址(其也可稱為“源地址”)。在本技術的一個實施方式中,寫命令可使用<對象ID,偏移ID>來指定用戶數(shù)據(jù)。在本技術的一個實施方式中,寫命令在到達處理器的SQ之前通過至少客戶端交換機和交換機結構。

在步驟602中,客戶端向SQ尾端門鈴寄存器寫入新的SQ尾端。在本技術的一個實施方式中,通過向SQ尾端門鈴寄存器進行寫入,客戶端通知處理器在其SQ中存在要處理的新命令。

在步驟604中,處理器從SQ獲得寫命令。在步驟606中,處理器確定要寫入用戶數(shù)據(jù)(作為碎片的一部分)的物理地址。在本技術的一個實施方式中,物理地址對應于固態(tài)存儲器模塊中的位置。在本技術的一個實施方式中,處理器選擇要在其中寫入用戶數(shù)據(jù)的拷貝的兩個物理地址,其中,每個物理地址在單獨的固態(tài)存儲器模塊中。

如上文所討論的,碎片在被寫入到固態(tài)存儲器模塊之前被寫入到安全存儲器中的開放數(shù)據(jù)頁,并且可將每個物理地址指定為<存儲模塊,通道,芯片啟用,LUN,平面,塊,頁,字節(jié)>。因此,用于存儲在開放數(shù)據(jù)頁中的每個碎片的物理地址可針對物理地址的所有部分(除<字節(jié)>值之外)具有相同的值。因此,在本技術的一個實施方式中,可使用開放數(shù)據(jù)頁的標簽482中的物理地址486來確定在步驟606中選擇的物理地址。換言之,一旦進行了給定碎片將被寫入到特定固態(tài)存儲器模塊的確定,可基于安全存儲器中的開放數(shù)據(jù)頁中的標簽的物理地址來確定將在該處存儲碎片的物理地址。在這種情況下,通過獲得標簽中的物理地址且然后修改此物理地址的<字節(jié)>部分來確定將在該處寫入碎片的物理地址。(參見例如圖7A—7G)。

在步驟608中,處理器將DAM引擎編程為向多播地址發(fā)布寫。在本技術的一個實施方式中,多播地址與多播組相關聯(lián),其中,多播組指定控制模塊中的存儲器中的第一存儲器位置、第一安全存儲器中的開放數(shù)據(jù)頁中的第二存儲器位置以及第二安全存儲器中的開放數(shù)據(jù)頁中的第三存儲器位置。在本技術的一個實施方式中國,第一安全存儲器位于與包括由處理器指定的物理地址的固態(tài)存儲器模塊相同的存儲模塊中。在本技術的一個實施方式中,第二安全存儲 器位于不同的存儲模塊中以便針對第一存儲模塊的故障進行保護。在本技術的一個實施方式中,針對由處理器在步驟606中識別的每個物理地址選擇一個存儲器位置。

在步驟610中,DMA引擎從客戶端存儲器中的源地址讀取用戶數(shù)據(jù),并按照控制模塊的指揮將數(shù)據(jù)寫入到多播地址。在本技術的一個實施方式中,交換機結構中的交換機與多播地址相關聯(lián)。在接收到地址時,交換機對多播地址執(zhí)行所需轉換以獲得三個地址(上述存儲器位置的每一個對應一個地址)。交換機隨后將用戶數(shù)據(jù)的拷貝發(fā)送到三個存儲器位置。本領域的技術人員將認識到實現(xiàn)多播的特定交換機可基于交換機結構的實施方式而改變。在本實施方式中,在客戶端與存儲裝置之間僅發(fā)布一個寫。

在本技術的另一實施方式中,在步驟608中,處理器將DMA引擎編程為并行地發(fā)布三個寫請求(上述存儲器位置的每一個對應一個寫請求)。在本實施方式中,在步驟610中,DMA引擎并行地發(fā)布三個寫請求。在本實施方式中,在客戶端與存儲裝置之間發(fā)布三個寫。

繼續(xù)圖6A,在步驟612中,針對存儲在安全存儲器中的用戶數(shù)據(jù)的每個拷貝創(chuàng)建TOC條目。此外,在每個TOC條目中指定的頁和字節(jié)對應于在步驟606中識別的相應物理地址的頁和字節(jié)部分。因此,雖然在創(chuàng)建相應TOC條目時碎片未被寫入到固態(tài)存儲器模塊中的物理地址,但碎片(作為數(shù)據(jù)頁的一部分)意圖在稍后的時間點被寫入到物理地址。如上文所討論的,每個TOC條目被存儲在TOC頁,并且該TOC頁最后被寫入到固態(tài)存儲器模塊。然而,在創(chuàng)建TOC頁之前,創(chuàng)建TOC條目并臨時地存儲在控制模塊中的存儲器中和固態(tài)存儲器模塊上的安全存儲器中。

繼續(xù)圖6A,在步驟614中,將在步驟612中創(chuàng)建的TOC條目被存儲在安全存儲器中。更具體地,每個TOC條目被存儲在存儲模塊的安全存儲器中的開放TOC頁面中,并包括在稍后的時間點將在該處寫入相應碎片的網(wǎng)絡地址。

在步驟616中,處理器更新存儲器內(nèi)數(shù)據(jù)結構以反映用戶數(shù)據(jù)的三個拷貝被存儲在存儲裝置中。處理器還可更新每個塊跟蹤TOC條目的數(shù)據(jù)結構(參見圖5)。在步驟618中,處理器將SQ標識符(其識別處理器的SQ)和寫命令標識符(其識別客戶端向處理器發(fā)布的特定寫命令)寫入到客戶端的完成隊列(CQ)。

在步驟620中,處理器生成用于客戶端處理器的中斷。在本技術的一個實施方式中,處理器使用由不透明橋接器提供的門鈴中斷來向客戶端處理器發(fā)布中斷。在步驟622中,客戶端處理在其CQ中的數(shù)據(jù)。在此階段,已經(jīng)通知客戶端該寫請求已被服務。在步驟624中,一旦客戶端已處理在完成隊列頭端處的數(shù)據(jù),客戶端將新CQ頭端寫入到CQ頭端門鈴。這向處理器表示在給客戶端的未來通知中將使用CQ中的下一位置。

參考圖6B,當安全存儲器中的開發(fā)數(shù)據(jù)頁面(參見例如圖4G、464)不能再存儲任何附加碎片(即,開放數(shù)據(jù)頁已滿)時,然后開放數(shù)據(jù)頁變成寫入數(shù)據(jù)頁。在步驟626中,控制模塊中的處理器向適當位置(即,與標簽482中的物理地址486相對應的固態(tài)存儲器模塊中的位置)發(fā)起寫入數(shù)據(jù)頁的內(nèi)容。在本技術的一個實施方式中,控制模塊中的處理器將存儲模塊控制器中的DMA引擎編程為將該寫入數(shù)據(jù)頁(或?qū)懭霐?shù)據(jù)頁的內(nèi)容)寫入到固態(tài)存儲器模塊。在本技術的另一實施方式中,存儲模塊控制器可發(fā)起寫入數(shù)據(jù)頁到固態(tài)存儲器模塊的寫入。一旦寫入完成,則存儲模塊控制器可通知控制模塊。

在步驟628中,在步驟626之后,控制模塊中的處理器請求去除與在步驟626中被寫入到固態(tài)存儲器模塊的用戶數(shù)據(jù)相對應的安全存儲器中的用戶數(shù)據(jù)的所有拷貝。換言之,處理器可請求從安全存儲器擦除寫入數(shù)據(jù)頁的內(nèi)容。在步驟630中,由包括被擦除的寫入數(shù)據(jù)頁的每個存儲模塊向控制模塊中的處理器發(fā)送去除的確認。

參考圖6C,圖6C示出了每當創(chuàng)建TOC條目時執(zhí)行的方法。在步驟632中,進行關于在塊中是否有超過一個空頁的確定。換言之,進行關于是否數(shù)據(jù)頁和TOC頁已被寫入到除塊中的最后一頁之外的所有其它頁的確定。如果在塊中剩下超過一個空頁,則過程前進至步驟634;否則,過程前進至步驟636。如上文所討論的,如果在塊中僅存在將被寫入數(shù)據(jù)頁或TOC頁的一個空頁,則必須向塊中的最后一頁寫入TOC頁。

在步驟634中,進行關于開放TOC頁是否已滿(即,是否TOC條目的累積尺寸阻止附加TOC條目被存儲在開放TOC頁中)的確定。如果開放TOC頁已滿,則過程前進至步驟636;否則過程結束。

在步驟636中,開放TOC頁中的臨時物理地址478變成最終物理地址(即,其中將存儲TOC頁(或TOC頁的內(nèi)容)的塊中的實際位置)。在本技術的一 個實施方式中,如果在塊中僅存在將被寫入用戶數(shù)據(jù)的一個空頁且TOC頁未滿,則可向開放TOC頁添加補位以便填充TOC頁。在步驟638中,進行關于塊是否包括另一TOC頁的確定。如果塊包括另一TOC頁,則過程前進至步驟640;否則過程前進至步驟642。在步驟640中,將對塊中的最近存儲TOC頁的引用包括在已在步驟636中創(chuàng)建的TOC頁(例如,圖4E中的TOC頁410引用TOC頁412中。

在步驟642中,處理器發(fā)起滿TOC頁到固態(tài)存儲器模塊(或者,更具體地,到在TOC頁中指定的最終物理地址)的寫入。

在步驟644中,處理器請求包括被包括在在步驟642中寫入到固態(tài)存儲器模塊的TOC頁中的TOC條目的所有存儲模塊將此類TOC條目從其各自的安全存儲器去除。換言之,處理器請求從安全存儲器擦除開放TOC頁的內(nèi)容。在步驟646中,處理器從存儲模塊接收上述TOC條目已被去除的確認。

圖7A—7G示出了根據(jù)本技術的一個或多個實施方式的在存儲裝置中存儲用戶數(shù)據(jù)的示例。本示例并不意圖限制本技術的范圍。

轉到圖7A,考慮其中安全存儲器包括開放TOC頁、數(shù)據(jù)頁A(最初被指定為開放數(shù)據(jù)頁)和數(shù)據(jù)頁B(最初被指定為寫入數(shù)據(jù)頁)的情形。僅僅出于本示例的目的而包括頁作為“數(shù)據(jù)頁A”和“數(shù)據(jù)頁B”的命名,并且其并不意圖暗示數(shù)據(jù)頁A與高于數(shù)據(jù)頁B的塊數(shù)目相關聯(lián)(或者相反);相反地,頁被這樣命名是為了解釋本技術的各種實施方式。開放TOC頁包括設定TOC位(這指示其為TOC頁)、臨時物理地址,這對應于其最終將被存儲于其中的固態(tài)儲存器(未示出)中的塊的物理位置。開放TOC頁還包括TOC條目TE1。TE1是存儲在數(shù)據(jù)頁A中的用于碎片1的TOC條目。

如圖7A中所示,數(shù)據(jù)頁A包括未被設定的TOC位(指示其為數(shù)據(jù)頁)。數(shù)據(jù)頁A還包括物理地址PA2,其對應于數(shù)據(jù)頁最后將在該處被寫入的固態(tài)儲存器中的物理位置。最后,數(shù)據(jù)頁A包括存儲在數(shù)據(jù)頁A內(nèi)的<字節(jié)>值處的碎片1,其中,<字節(jié)>值對應于在TE 1中指定的<字節(jié)>值(參見例如圖4F、442)。

參見圖7B,在某個稍后的時間點,第二碎片(碎片2)和第二TOC條目TE 2被寫入到安全存儲器。圖7B示出了碎片2被存儲在數(shù)據(jù)頁A中且TE2被存儲在開放TOC頁中的安全存儲器的狀態(tài)。

在此階段,數(shù)據(jù)頁A是滿的,并且同樣地,其命名變成寫入數(shù)據(jù)頁。由于 此命名變化,數(shù)據(jù)頁B的命名頁也改變。具體地,數(shù)據(jù)頁B的命名從寫入數(shù)據(jù)頁轉變成開放數(shù)據(jù)頁。因此,可將隨后接收到的碎片存儲在數(shù)據(jù)頁B中。圖7C示出了數(shù)據(jù)頁的上述命名變化之后的安全存儲器的狀態(tài)。如圖7C中所示,一旦數(shù)據(jù)頁B的命名已變成開放數(shù)據(jù)頁,TOC位(其被設置成0)和物理地址PA 3(其對應于固態(tài)存儲器模塊中的物理位置)被存儲在數(shù)據(jù)頁B中。一旦標簽(即,TOC位和物理地址)已被存儲在數(shù)據(jù)頁B中,則可將碎片存儲在數(shù)據(jù)頁B中。

在某個稍后的時間點,數(shù)據(jù)頁A的內(nèi)容被寫入到固態(tài)存儲器模塊中的PA1,然后,數(shù)據(jù)頁A的內(nèi)容被從安全存儲器中的數(shù)據(jù)頁A擦除。此外,碎片3和碎片4被寫入到數(shù)據(jù)頁B,并且相應TOC條目(TE 3和TE 4)被寫入到開放TOC頁。圖7D示出了上述事件已發(fā)生之后的安全存儲器的狀態(tài)。

在此階段,開放TOC頁已滿(即,在開放TOC頁中不可再存儲TOC條目)。因此,確定用于開放TOC頁(或開放TOC頁的內(nèi)容)的最終物理地址??蓪㈤_放TOC頁中的標簽更新成包括該最終物理地址。圖7E示出了上述事件已發(fā)生之后的安全存儲器的狀態(tài)。

如圖7E中所示,開放TOC頁和數(shù)據(jù)頁B兩者都已滿。因此,控制模塊或存儲模塊控制器可發(fā)起開放TOC頁的內(nèi)容和數(shù)據(jù)頁B的內(nèi)容到固態(tài)存儲器模塊中的適當位置的寫入。

如果開放TOC頁的內(nèi)容到固態(tài)存儲器模塊的寫入成功,則固態(tài)存儲器模塊將在對應于最終物理地址的位置上包括TOC頁。此外,如果數(shù)據(jù)頁B的內(nèi)容到固態(tài)存儲器模塊的寫入成功,則固態(tài)存儲器模塊將在對應于PA 2的位置上包括數(shù)據(jù)頁。此外,可使用適當?shù)腗LC命令將上述內(nèi)容寫入到固態(tài)存儲器模塊的MLC模式部分。圖7F示出了上述事件已發(fā)生之后的固態(tài)存儲器模塊的狀態(tài)。

然而,如果在TOC頁(參見圖7E)的內(nèi)容和數(shù)據(jù)頁B的內(nèi)容(參見圖7E)被寫入到固態(tài)存儲器模塊之前接收到電源故障的通知,則使用適當?shù)腟LC命令將TOC頁(參見圖7E)的內(nèi)容和數(shù)據(jù)頁B的內(nèi)容(參見圖7E)寫入到固態(tài)存儲器模塊的SLC模式部分。上述頁(例如,數(shù)據(jù)頁和TOC頁)被存儲的位置并不對應于存在于被存儲在上述頁中的標簽中的物理地址。上述內(nèi)容可僅被存儲在固態(tài)存儲器模塊的SLC模式部分內(nèi)的最低有效位(LSB)頁中。在 這種情況下,SLC模式部分的尺寸可大于安全存儲器的尺寸(例如,是其兩倍大)。圖7G示出了上述事件已發(fā)生之后的安全存儲器的狀態(tài)。

在本技術的一個實施方式中,當控制模塊重新啟動時,可使用固態(tài)存儲器模塊中的TOC條目來產(chǎn)生適當?shù)拇鎯ζ鲀?nèi)數(shù)據(jù)結構(參見例如圖5)以便允許客戶端訪問存儲在存儲裝置中的用戶數(shù)據(jù)。圖8A示出了根據(jù)本技術的一個或多個實施方式的用于使用存儲在固態(tài)存儲器模塊的MLC模式部分中的TOC條目來產(chǎn)生存儲器內(nèi)數(shù)據(jù)結構的方法。圖8B示出了根據(jù)本技術的一個或多個實施方式的用于使用存儲在固態(tài)存儲器模塊的SLC模式部分中的TOC條目來產(chǎn)生存儲器內(nèi)數(shù)據(jù)結構的方法。雖然連續(xù)地提出并描述了上述流程圖中的各種步驟,但本領域的技術人員將認識到某些或所有步驟可按照不同順序執(zhí)行,可被組合或省略,并且某些或所有步驟可并行地執(zhí)行。

轉到圖8A,在步驟800中,選擇塊。在步驟802中,獲得塊中的最后一頁。例如,處理器讀取最后一頁的內(nèi)容。如上文所討論的,存儲裝置內(nèi)的固態(tài)存儲器模塊中的每個塊的最后一頁是TOC頁。在步驟804中,從TOC頁提取TOC條目。

在步驟806中,處理在步驟804中獲得的每個TOC條目以填充存儲器內(nèi)數(shù)據(jù)結構。更具體地,處理每個TOC條目可包括以下各項中的一個或多個:

(i)從TOC條目提取頁ID和字節(jié)信息;

(ii)將(i)中的信息與<存儲模塊,通道,芯片啟用,LUN,平面,塊>組合以獲得物理地址;

(iii)從TOC條目提取對象ID和偏移ID(和可選地產(chǎn)生時間);

(iv)對<對象ID,偏移ID>(或者可選地<對象ID,偏移ID,產(chǎn)生時間)應用散列函數(shù)以產(chǎn)生散列值;以及

(v)用散列值和物理地址的映射來填充存儲器內(nèi)數(shù)據(jù)結構。

在本技術的一個實施方式中,處理器包括關于<存儲模塊,通道,芯片啟用,LUN,平面,塊>的信息,因為處理器需要此信息以獲得塊的最后一頁。在本技術的一個實施方式中,處理器可使用TOC條目中的類型字段來確定碎片是否在壞頁中。如果碎片被存儲在壞頁中,則處理器可產(chǎn)生用于TOC條目的存儲器內(nèi)數(shù)據(jù)結構中的映射。

在步驟808中,一旦TOC頁中的所有TOC條目都已被處理,進行關于 TOC頁是否包括對塊(即,在步驟800中選擇的塊)中的另一TOC頁的引用的確定。如果TOC頁包括對塊中的另一TOC頁的引用,則過程前進至步驟810;否則,過程結束。在步驟810中,獲得被引用的TOC頁。在步驟812中,從TOC頁提取TOC條目。該過程然后前進至步驟806。

轉到圖8B,在步驟820中,將來自固態(tài)存儲器模塊的SLC模式部分的內(nèi)容加載到控制模塊中的存儲器中。該內(nèi)容可包括一個或多個開放TOC頁、一個或多個開放數(shù)據(jù)頁以及一個或多個寫入數(shù)據(jù)頁。在本技術的一個實施方式中,當系統(tǒng)失去功率時常駐于安全存儲器中的所有數(shù)據(jù)現(xiàn)在已被拷貝到控制模塊的存儲器中。由于存儲裝置實現(xiàn)多播寫入機制(參見例如圖6A—6C),所以在安全存儲器中可存在數(shù)據(jù)的多個拷貝。無論固態(tài)存儲器模塊的任何給定SLC模式部分中的特定內(nèi)容如何,存儲在SLC模式部分中的每個頁包括標簽(參見例如圖7G)。

在步驟822中,從在步驟820中獲得的內(nèi)容識別TOC頁。識別TOC頁可包括搜索上述獲得內(nèi)容中的包括用將指示頁是TOC頁的狀態(tài)設定的TOC位的頁。例如,可將包括TOC位=1的頁識別為TOC頁。

在步驟824中,獲得來自在步驟822中識別的TOC頁的TOC條目。在本技術的一個實施方式中,如果在控制模塊存儲器中存在TOC頁的多個拷貝,則驗證TOC頁的每個拷貝以確定在TOC頁的每個拷貝中特定TOC條目(即,在步驟824中獲得的TOC條目)是相同的。

在步驟826中,使用TOC頁中的標簽中的物理地址和TOC條目的內(nèi)容來確定對應于在步驟824中獲得的TOC條目的碎片的物理地址。例如,TOC頁的臨時物理地址可以是<存儲模塊1,通道1,芯片啟用1,LUN 1,平面1,塊2,頁2,字節(jié)0>,并且來自所選TOC條目的<頁面,字節(jié)>信息可以是<頁面2,字節(jié)5>(參見例如圖4F、440、442)。因此,對應于TOC條目的碎片的物理地址可以是<存儲模塊1,通道1,芯片啟用1,LUN 1,平面1,塊2,頁2,字節(jié)5>。本領域的技術人員將認識到雖然上述物理地址被表示為n元組,但上述物理地址可以是例如48位物理地址。

在步驟828中,將控制模塊中的存儲器內(nèi)數(shù)據(jù)結構更新成包括<對象ID,偏移ID>(其是從TOC條目獲得的)的映射和在步驟826中確定的物理地址。在不脫離本技術的情況下可將基于上述信息的其它映射存儲在存儲器內(nèi)數(shù)據(jù) 結構中(參見圖5)。

在步驟830中,然后搜索控制模塊中的存儲器以便對與在步驟826中確定的物理地址相對應的碎片進行定位。如果碎片存在于存儲器中,則過程前進至步驟834;否則,過程前進至步驟832。

下面是用于對控制模塊的存儲器中的相應碎片進行定位的非限制性示例??紤]其中在步驟826中確定的用于碎片的物理地址是<存儲模塊1,通道1,芯片啟用1,LUN 1,平面1,塊2,頁2,字節(jié)5>的情形,然后控制模塊可在其存儲器中進行搜索以對包括包含TOC位=0的標簽和包含<存儲模塊1,通道1,芯片啟用1,LUN 1,平面1,塊2,頁2>的物理地址的頁進行定位。如果此類頁被定位,則確定碎片在存儲器中;否則,確定碎片在固態(tài)存儲器模塊中。

在步驟832中,使用在步驟826中獲得的物理地址從固態(tài)存儲器模塊獲得碎片。

在步驟834中,將碎片(在步驟832中獲得或在步驟830中被識別為存在)寫入到根據(jù)圖6A—6C的存儲模塊中的新位置。

在本技術的一個實施方式中,如果碎片未存在于存儲器中(即,碎片存在于固態(tài)存儲器模塊中),則作為當根據(jù)圖8B來處理TOC條目時將相應碎片拷貝到存儲器中的替代,可將碎片標記為用于垃圾收集。更具體地,可將碎片標記為使得其將被重新定位到固態(tài)存儲器模塊中的其它位置作為垃圾收集操作的一部分。

繼續(xù)圖8B的討論,在步驟836中,進行關于是否存在要處理的附加TOC條目的確定。如果存在要處理的附加TOC條目,則該方法前進至步驟824;否則,過程結束。

在本技術的一個實施方式中,可對存儲在存儲器中的每個開放TOC頁執(zhí)行圖8B中所示的方法。此外,當系統(tǒng)被通電時可針對存儲器中的所有TOC頁并行地執(zhí)行圖8B中的方法。

在本技術的一個實施方式中,可在系統(tǒng)被通電時針對存儲裝置內(nèi)的所有塊(或塊的子集)并行地執(zhí)行圖8A中的方法。此外,可與圖8B中所示的方法并行地執(zhí)行圖8A中的方法。在此過程之后,可隨著新的用戶數(shù)據(jù)被寫入到存儲裝置而由處理器來更新結果得到的存儲器內(nèi)數(shù)據(jù)結構。

雖然上述討論表明可將TOC頁、開放數(shù)據(jù)頁以及寫入數(shù)據(jù)頁寫入到固態(tài)存儲器的SLC模式部分,但可在固態(tài)存儲器模塊不具有SLC模式部分和MLC模式部分的情況下實現(xiàn)本技術。

例如,可使用使用例如MLC模式進行操作且包括預留部分和非預留部分的固態(tài)存儲器模塊來實現(xiàn)本技術,其中,根據(jù)圖6B和圖6C,預留部分對應于固態(tài)存儲器模塊的一部分,其被用來在電源故障(或電源故障通知)的情況下存儲來自開發(fā)TOC頁、開放數(shù)據(jù)頁以及寫入數(shù)據(jù)頁的內(nèi)容,并且固態(tài)存儲器模塊的非預留部分被用來存儲來自TOC頁和寫入數(shù)據(jù)頁的內(nèi)容。

在另一示例中,可使用使用例如SLC模式進行操作且包括預留部分和非預留部分的固態(tài)存儲器模塊來實現(xiàn)本技術,其中,根據(jù)圖6B和圖6C,預留部分對應于固態(tài)存儲器模塊的一部分,其被用來在電源故障(或電源故障通知)的情況下存儲來自TOC頁、開放數(shù)據(jù)頁以及寫入數(shù)據(jù)頁的內(nèi)容,并且固態(tài)存儲器模塊的非預留部分被用來存儲來自TOC頁和寫入數(shù)據(jù)頁的內(nèi)容。

本領域的技術人員將認識到雖然已相對于在固態(tài)存儲器模塊中實現(xiàn)本技術而描述了本技術,但可使用其它類型的非易失性存儲介質(zhì)來實現(xiàn)本技術的實施方式。

本領域的技術人員將認識到雖然已相對于將安全存儲器與持久性儲存器(例如,固態(tài)存儲器模塊)共同定位于相同位置上描述了本技術,但可實現(xiàn)其中安全存儲器并未與持久性儲存器共同定位的本技術的實施方式。

本領域的技術人員將認識到雖然已相對于每個塊中的最后一頁被預留為TOC頁而描述了本技術,但在不脫離本技術的情況下可通過將塊中的另一頁設定為預留TOC頁來實現(xiàn)本技術的實施方式。

在本技術的一個實施方式中,在對存儲在固態(tài)存儲器模塊中的任何數(shù)據(jù)執(zhí)行任何操作(例如,讀操作、寫操作和/或擦除操作)之前產(chǎn)生存儲器內(nèi)數(shù)據(jù)結構。

本技術的一個或多個實施方式提供了其中存儲在存儲裝置中的所有用戶數(shù)據(jù)與其元數(shù)據(jù)共同定位的系統(tǒng)和方法。以這種方式,存儲在存儲裝置中的所有用戶數(shù)據(jù)都是自描述的。通過根據(jù)本技術的各種實施方式來布置用戶數(shù)據(jù)和相應元數(shù)據(jù),針對給定固態(tài)存儲器模塊(或其子集)的故障更好地保護了存儲裝置。換言之,如果給定固態(tài)存儲器模塊(或其子集)失靈,則系統(tǒng)中的其它 固態(tài)存儲器模塊中的用戶數(shù)據(jù)仍是可訪問的,因為訪問另一固態(tài)存儲器模塊中的用戶數(shù)據(jù)所需的元數(shù)據(jù)本身位于其它固態(tài)存儲器模塊中。

此外,本技術的實施方式使得能夠創(chuàng)建存儲器內(nèi)數(shù)據(jù)結構,其允許控制模塊在單個查找步驟中訪問用戶數(shù)據(jù)。換言之,控制模塊可使用存儲器內(nèi)數(shù)據(jù)結構來直接地確定存儲裝置中的用戶數(shù)據(jù)的物理地址。使用此信息,控制模塊能夠直接地訪問用戶數(shù)據(jù),并且不需要穿過任何中間元數(shù)據(jù)分級結構以獲得用戶數(shù)據(jù)。

可使用由系統(tǒng)中的一個或多個處理器執(zhí)行的指令來實現(xiàn)本技術的一個或多個實施方式。此外,此類指令可對應于存儲在一個或多個非臨時計算機可讀介質(zhì)上的計算機可讀指令。

雖然已相對于有限數(shù)目的實施方式描述了本技術,但受益于本公開的本領域的技術人員將認識到可以設計不脫離如在本文中公開的本技術的范圍的其它實施方式。因此,本技術的范圍將僅僅受到所附權利要求的限制。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
郯城县| 安溪县| 肥西县| 湘潭市| 周口市| 太原市| 海城市| 晋江市| 南平市| 石城县| 沙河市| 蓬溪县| 卢氏县| 肇源县| 牡丹江市| 土默特右旗| 安徽省| 孟村| 无极县| 福清市| 上蔡县| 蚌埠市| 新绛县| 出国| 浦城县| 郑州市| 丹江口市| 南充市| 资阳市| 长葛市| 房产| 青龙| 永康市| 沧州市| 齐河县| 巢湖市| 阜平县| 高碑店市| 和政县| 攀枝花市| 洮南市|