1.技術(shù)領(lǐng)域
本申請涉及固態(tài)存儲器,并且具體地涉及在固態(tài)存儲器中的部分壞塊。
2.相關(guān)技術(shù)
由于固態(tài)存儲器的裸片經(jīng)受應(yīng)力和掩蔽,所以固態(tài)存儲器的各個塊可能由于故障而被標(biāo)記為壞塊。這樣的壞塊可以被稱為出廠標(biāo)記壞塊。為了滿足容量和性能要求,有限數(shù)量的塊可以是出廠標(biāo)記壞塊以便通過品質(zhì)測試。
在運行過程中,如果在對塊寫入時固態(tài)存儲器報告了寫入錯誤(如程序故障),則所述塊可能被舍棄并且添加到壞塊列表中。固態(tài)存儲器可以具有多個單獨可擦除段,如頁或塊。所述可擦除段各自可以在變得不可靠并且被標(biāo)記為壞塊之前完成有限數(shù)量的擦除循環(huán)。壞塊不再能用于存儲數(shù)據(jù)。
技術(shù)實現(xiàn)要素:
可以提供一種存儲系統(tǒng),所述存儲系統(tǒng)包括固態(tài)存儲器、復(fù)制模塊、寫入后讀取模塊、和錯誤恢復(fù)模塊。所述固態(tài)存儲器可以包括第一存儲器和第二存儲器。所述復(fù)制模塊可以將數(shù)據(jù)從所述第一存儲器的塊復(fù)制到所述第二存儲器的塊上。所述寫入后讀取模塊可以檢測在被復(fù)制到所述第二存儲器的塊上的數(shù)據(jù)中的任何寫入后讀取錯誤。所述錯誤恢復(fù)模塊可以響應(yīng)于在被復(fù)制到所述第二存儲器的所述塊上的所述數(shù)據(jù)的第一部分中檢測到寫入后讀取錯誤并且在被復(fù)制到所述第二存儲器的所述塊上的所述數(shù)據(jù)的第二部分中沒有檢測到寫入后讀取錯誤而確定所述第二存儲器的所述塊是可用于存儲的部分壞塊。
可以提供一種存儲設(shè)備,所述存儲設(shè)備包括固態(tài)存儲器、復(fù)制模塊、寫入后讀取模塊、和錯誤恢復(fù)模塊。所述固態(tài)存儲器可以包括第一存儲器和第二存儲器。所述復(fù)制模塊可以將數(shù)據(jù)從所述第一存儲器的塊復(fù)制到所述第二存儲器的塊上。所述寫入后讀取模塊可以檢測在被復(fù)制到所述第二存儲器的所述塊上的所述數(shù)據(jù)中的任何寫入后讀取錯誤。所述錯誤恢復(fù)模塊可以響應(yīng)于在所述數(shù)據(jù)的第一部分中檢測到寫入后讀取錯誤并且在所述數(shù)據(jù)的第二部分中沒有檢測到寫入后讀取錯誤而確定所述第二存儲器的所述塊是部分壞塊。盡管檢測到寫入后讀取錯誤,所述部分壞塊可以仍然可用于數(shù)據(jù)存儲。
可以提供一種用于部分壞塊再使用的方法??梢詫?shù)據(jù)從第一存儲器的塊復(fù)制到第二存儲器的塊上??梢栽诒粡?fù)制到所述第二存儲器的所述塊上的所述數(shù)據(jù)的第一部分中檢測寫入后讀取錯誤,而不在被復(fù)制到所述第二存儲器的所述塊上的所述數(shù)據(jù)的第二部分中檢測寫入后讀取錯誤。響應(yīng)于在所述數(shù)據(jù)的所述第一部分中而沒有在所述數(shù)據(jù)的所述第二部分中檢測到寫入后讀取錯誤,可以確定所述第二存儲器的所述塊是可用于存儲的部分壞塊。
附圖說明
參照以下附圖和說明可以更好地理解各個實施例。附圖中的部件不一定是按比例繪制的。而且在這些附圖中,相似的參考號遍及所有不同的視圖指代相應(yīng)的零件。
圖1展示了用于再使用存儲系統(tǒng)的部分壞塊的系統(tǒng)的示例;
圖2展示了檢測部分壞塊的示例;
圖3展示了用于折疊數(shù)據(jù)的邏輯的示例的流程圖;并且
圖4展示了EPWR邏輯與缺陷處理的示例的流程圖。
具體實施方式
如果在將塊寫入固態(tài)存儲器中時出現(xiàn)寫入錯誤,則所述塊可以被視為是壞塊。然而,所述塊實際上可能是部分壞塊。例如,故障的原因可能是所述塊的僅一個字線上的缺陷,并且所述塊的其余部分可能仍可用于存儲。通過將所述塊添加至壞塊列表中來舍棄所述塊可能不必要地限制所述固態(tài)存儲器的產(chǎn)品壽命。替代性地或另外地,如果出廠標(biāo)記壞塊的數(shù)量超過閾值量,則所述固態(tài)存儲器可能必須以一半容量或某個其他減小的容量來出售。因此,不使用部分壞塊可能導(dǎo)致較低的生產(chǎn)產(chǎn)量。
下文描述了可以依賴于寫入后讀取(PWR)或增強型寫入后讀取(EPWR)來檢測并使用部分壞塊的系統(tǒng)和方法。可以在運輸固態(tài)存儲器之前檢測或者在運行時間過程中檢測所述部分壞塊。寫入后讀取可以是在將數(shù)據(jù)寫入塊中之后從所述塊讀取數(shù)據(jù)以便驗證所讀取的數(shù)據(jù)與寫入所述塊的數(shù)據(jù)相匹配的任何操作。增強型寫入后讀取(EPWR)可以是即使在所讀取的數(shù)據(jù)的子集中可能存在錯誤時仍然使用糾錯碼來重建原始寫入數(shù)據(jù)的一種寫入后讀取操作。所述系統(tǒng)和方法可以改善產(chǎn)品產(chǎn)量、存儲器可靠性和/或產(chǎn)品壽命。
可以提供一種系統(tǒng),在所述系統(tǒng)中,PWR可以檢測部分壞塊并且在故障恢復(fù)序列之后使用所述部分壞塊。塊的缺陷部分可以用另一個現(xiàn)有的塊來邏輯地更換。當(dāng)遇到由于存儲器缺陷造成的故障時,所述系統(tǒng)可以將原本將要存儲在存儲器缺陷位置處的數(shù)據(jù)復(fù)制到另一個塊或存儲器(如二進制緩存器)上。所述系統(tǒng)可以更新固件數(shù)據(jù)結(jié)構(gòu)以便將其反映出來。對塊的缺陷部分的邏輯更換對所述存儲器的用戶可以是透明的。指向存儲器缺陷位置的任何讀取操作都可以自動地重新指向新位置。
在一個示例中,可以提供一種存儲系統(tǒng),所述存儲系統(tǒng)包括固態(tài)存儲器、復(fù)制模塊、寫入后讀取模塊、和錯誤恢復(fù)模塊。所述固態(tài)存儲器可以包括第一存儲器和第二存儲器,如單級存儲單元(SLC)閃存和多級存儲單元(MLC)閃存。作為折疊操作的一部分,所述復(fù)制模塊可以將數(shù)據(jù)從所述第一存儲器的塊復(fù)制到所述第二存儲器的塊上,以便將所述數(shù)據(jù)從所述SLC上移動至所述MLC閃存上。所述寫入后讀取模塊可以檢測在被復(fù)制到所述第二存儲器的所述塊上的所述數(shù)據(jù)中的任何寫入后讀取錯誤。所述錯誤恢復(fù)模塊可以響應(yīng)于在被復(fù)制到所述第二存儲器的所述塊上的所述數(shù)據(jù)的第一部分中檢測到寫入后讀取錯誤而在被復(fù)制到所述第二存儲器的所述塊上的所述數(shù)據(jù)的第二部分中沒有檢測到寫入后讀取錯誤而確定所述第二存儲器的所述塊是可用于存儲的部分壞塊。
圖1展示了用于再使用存儲系統(tǒng)102的部分壞塊的系統(tǒng)100的示例。所述存儲系統(tǒng)102可以包括存儲接口104、處理器106、存儲器108、存儲控制器110、和固態(tài)存儲器112。
所述存儲系統(tǒng)102可以是將數(shù)據(jù)存儲在固態(tài)存儲器112中的設(shè)備或設(shè)備組合。例如,所述存儲系統(tǒng)102可以是包括提供對數(shù)據(jù)的塊級訪問的設(shè)備或設(shè)備組合的塊設(shè)備。塊設(shè)備通過采用邏輯數(shù)據(jù)塊(LDA)形式讀取和寫入數(shù)據(jù)來提供塊級訪問。所述存儲系統(tǒng)102可以采用任何形式,如閃存驅(qū)動器、固態(tài)驅(qū)動器、硬盤驅(qū)動器、存儲區(qū)域網(wǎng)絡(luò)(SAN)、或包括固態(tài)存儲器的任何其他可讀取/寫入的計算機可讀存儲介質(zhì)。
所述存儲系統(tǒng)102可以是主機系統(tǒng)(未示出)的一部分、或者與之物理地分開。例如,所述存儲系統(tǒng)102可以是采用可以在多個主機設(shè)備之間所攜帶的便攜式存儲器卡的形式的存儲設(shè)備。在另一個示例中,所述存儲系統(tǒng)102可以是嵌入所述主機系統(tǒng)中的固態(tài)盤(SSD)。替代性地或另外地,所述存儲系統(tǒng)102可以是即使在所述存儲系統(tǒng)102與所述主機系統(tǒng)進行通信時仍與所述主機系統(tǒng)物理地分開的分立存儲設(shè)備。
所述存儲接口104可以是被配置成用于向和/或從所述主機系統(tǒng)傳遞數(shù)據(jù)的任何基于硬件的部件。所述存儲接口104可以是串行高級技術(shù)附接(也稱為串行ATA或SATA)接口、SCSI(小型計算機系統(tǒng)接口)接口、通用串行總線(USB)電路、以太網(wǎng)接口、或存儲系統(tǒng)發(fā)送和/或接收數(shù)據(jù)所通過的任何其他類型物理接口。
所述存儲控制器110可以是以下任何基于硬件的部件:所述部件將從主機系統(tǒng)接收到的邏輯地址(如邏輯塊地址(LBA))轉(zhuǎn)譯成合適的信令以訪問固態(tài)存儲器112中的塊122或塊的子集(如,頁或字線)的相應(yīng)物理位置114。存儲控制器110的示例可以包括存儲器控制器、NAND控制器、NOR控制器、磁盤控制器、SCSI(小型計算機系統(tǒng)接口)控制器、光纖通道控制器、控制器(INFINIBAND是俄勒岡州比弗頓市的System I/O公司的注冊商標(biāo))、串行連接SCSI控制器、PATA(IDE)控制器、以及串行ATA控制器。
所述固態(tài)存儲器112可以是包括一個或多個集成電路組件作為存儲器的任何存儲器。所述固態(tài)存儲器112可以包括第一存儲器116和/或第二存儲器118。所述固態(tài)存儲器112的示例可以包括NAND型閃存、NOR型閃存、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)存儲器、電可擦除可編程只讀存儲器(EEPROM)、或者任何其他類型的固態(tài)存儲器。
所述第一存儲器116和所述第二存儲器118可以各自包括構(gòu)成所述固態(tài)存儲器112的一部分半導(dǎo)體材料。所述第一存儲器116和所述第二存儲器118可以各自是同一存儲器的多個部分。替代性地或另外地,所述第一存儲器116可以包含集成電路,所述集成電路與包含所述第二存儲器118的集成電路物理上不同。替代性地,所述第一存儲器116可以被包括在包括所述第二存儲器118的同一個集成電路中。在一些示例中,所述第一存儲器116可以是與所述第二存儲器116不同類型的存儲器。例如,所述第一存儲器116可以包括單級存儲單元閃存,而所述第二存儲器118可以包括多級存儲單元閃存。所述第一存儲器116的大小可以與所述第二存儲器118的大小相同或不同。
所述固態(tài)存儲器112可以包括多個附加部件。例如,所述固態(tài)存儲器112可以包括緩存器120。所述緩存器120可以在數(shù)據(jù)被寫入所述第一存儲器116和/或所述第二存儲器118中之前暫時存儲所述數(shù)據(jù)。例如,所述緩存器120可以通過沒有大到足以填充整個塊122的存儲接口104來存儲從主機系統(tǒng)接收到的數(shù)據(jù)。一旦從主機系統(tǒng)接收到足夠的數(shù)據(jù)來至少填充整個塊122,所述數(shù)據(jù)就可以從所述緩存器120復(fù)制到所述固態(tài)存儲器112中的不同物理位置,如在第一存儲器116和/或所述第二存儲器118中的某個位置處。在一些示例中,所述緩存器120可以是二進制緩存器。
除了所述固態(tài)存儲器112之外,所述存儲系統(tǒng)102可以包括存儲器108,所述存儲器包括邏輯到物理映射124和/或多個模塊,如寫入后讀取(PWR)模塊126、復(fù)制模塊128、錯誤恢復(fù)模塊130和/或映射模塊132。所述存儲器108可以是用于存儲和檢索數(shù)據(jù)的任何設(shè)備或其組合。所述存儲器108可以包括非易失性和/或易失性存儲器,如隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦除可編程只讀存儲器(EPROM)或閃存。替代性地或另外地,所述存儲器108可以包括任何其他形式的數(shù)據(jù)存儲部件。
所述邏輯到物理映射124可以是數(shù)據(jù)結(jié)構(gòu)(如表格)和/或模塊(如查找模塊),所述數(shù)據(jù)結(jié)構(gòu)和/或模塊確定和/或存儲在固態(tài)存儲器112的多個塊122的邏輯地址與物理位置114之間的映射。例如,所述邏輯到物理映射124可以包括文件系統(tǒng)的邏輯數(shù)據(jù)塊與固態(tài)存儲器112的所述塊122或塊122的子集的物理位置114之間的映射。在將所述邏輯地址轉(zhuǎn)譯成適當(dāng)?shù)男帕钜栽L問塊122的相應(yīng)物理位置114時,所述存儲控制器110可以依賴于所述邏輯到物理映射124。
所述物理位置114可以是所述固態(tài)存儲器112中的存儲有所述塊122的位置。所述塊112中的每一個塊都可以具有相應(yīng)的物理位置114。物理位置114可以是識別相應(yīng)的塊122在所述固態(tài)存儲器112中被存儲的位置的塊號或其他標(biāo)識符。所述物理位置114可以包括其他存儲單元(如頁)的位置。頁可以小于塊122。
PWR模塊126可以是執(zhí)行寫入后讀取的任何部件。寫入后讀取可以是在將數(shù)據(jù)寫入塊122中之后從所述塊122讀取所述數(shù)據(jù)以便驗證讀取的數(shù)據(jù)與寫入所述塊122的數(shù)據(jù)相匹配的任何操作。所述寫入后讀取可以是增強型寫入后讀取(EPWR)。EPWR可以是即使在所讀取的數(shù)據(jù)的子集中可能存在錯誤時仍然使用糾錯來重建原始寫入的數(shù)據(jù)的一種寫入后讀取操作。相應(yīng)地,在一些示例中,PWR模塊126可以包括EPWR模塊。所述EPWR模塊可以是執(zhí)行EPWR的任何部件。
所述復(fù)制模塊128可以是將數(shù)據(jù)從第一存儲器116復(fù)制到第二存儲器118上的任何部件。所復(fù)制的數(shù)據(jù)可以初始地存儲在第一存儲器116的子集上或者在整個第一存儲器116上。所述復(fù)制模塊128可以將所述數(shù)據(jù)從第一存儲器116的一組塊122復(fù)制到所述第二存儲器116的一組塊122上。
在一些示例中,所述復(fù)制模塊128可以是折疊模塊。所述折疊模塊可以是將數(shù)據(jù)折疊到所述固態(tài)存儲器112的目標(biāo)塊中的任何部件。當(dāng)數(shù)據(jù)從所述固態(tài)存儲器112中其他地方的一個或多個源塊移動至目標(biāo)塊時,所述數(shù)據(jù)可以被認為是被折疊到所述目標(biāo)塊中。在折疊過程中,例如,所述折疊模塊可以將數(shù)據(jù)從多個源塊移動至所述目標(biāo)塊。所述源塊可以在所述第一存儲器116中并且所述目標(biāo)塊可以在所述第二存儲器118中。例如,所述第一存儲器116可以包括單級存儲單元閃存,并且所述第二存儲器118可以包括多級存儲單元閃存。因此這種折疊可以提高單級存儲單元閃存的可用性。在一些情形下,提高單級存儲單元閃存的可用性可以是有利的,因為單級存儲單元閃存可以具有比多級存儲單元閃存更快的寫入時間。
在其他示例中,所述復(fù)制模塊128可以是磨損均衡模塊的一部分。所述磨損均衡模塊可以將數(shù)據(jù)從一個物理位置復(fù)制到另一個物理位置以便延長所述固態(tài)存儲器112的使用壽命。例如,任何塊122中的沒有發(fā)生改變(或者相對靜態(tài))的數(shù)據(jù)可以周期性地移動,使得可以使用所述塊的低使用率存儲單元來存儲其他更加動態(tài)的數(shù)據(jù)。在又其他示例中,所述復(fù)制模塊128可以包括將數(shù)據(jù)從第一存儲器116復(fù)制到第二存儲器118上的任何其他類型的部件。
在系統(tǒng)100再使用部分壞塊的操作過程中,寫入后讀取(PWR)、如增強型寫入后讀取(EPWR)可以檢測部分壞塊。參見圖1和圖2二者,系統(tǒng)100可以檢測并再使用部分壞塊122-2,如在下文中更詳細地描述的。
所述第一存儲器116中的塊122-1可以包括數(shù)據(jù)。所述邏輯到物理映射124-1(在復(fù)制所述數(shù)據(jù)之前)可以將邏輯地址202映射到所述第一存儲器116中的塊122-1中的相應(yīng)位置上。
所述復(fù)制模塊128可以將所述數(shù)據(jù)從第一存儲器116中的塊122-1復(fù)制到所述第二存儲器118中的塊122-2上。所述寫入后讀取模塊126可以通過從所述第二存儲器118中的塊122-2讀取數(shù)據(jù)并且與從所述第一存儲器116中的塊122-1讀取的數(shù)據(jù)進行比較來執(zhí)行寫入后讀取(PWR),如增強型寫入后讀取(EPWR)。如果在所述數(shù)據(jù)的第一部分204中檢測到、但是在所述數(shù)據(jù)的第二部分206中沒有檢測到寫入后讀取錯誤,則所述第二存儲器118中的塊122-2可能是部分壞塊。雖然所述數(shù)據(jù)的第一部分204沒有被成功地存儲在所述部分壞塊122-2中,但是所述數(shù)據(jù)的第二部分206被成功地存儲在所述第二存儲器118的部分壞塊122-2中。
基于在所述數(shù)據(jù)的第一部分204中檢測到寫入后讀取錯誤,錯誤恢復(fù)模塊130可以將所述數(shù)據(jù)的第一部分204從所述第一存儲器116的塊122-1復(fù)制到緩存器120上。映射模塊132可以改變邏輯地址202的映射以便考慮所述數(shù)據(jù)的新的物理位置。通過將所述數(shù)據(jù)的第一部分204復(fù)制到緩存器120上,所述第一存儲器116的塊122-1可以被添加至空閑塊列表中或者以其他方式被釋放,因為不再需要塊122-1來存儲所述數(shù)據(jù)的第一部分204和第二部分206。
在復(fù)制所述數(shù)據(jù)并且檢測寫入后讀取錯誤之前,邏輯地址202的第一子集208被映射到第一存儲器116中的存儲有所述數(shù)據(jù)的第一部分204的一個或多個位置上。類似地,邏輯地址202的第二子集210被映射到第一存儲器116中的存儲有所述數(shù)據(jù)的第二部分206的一個或多個位置上。圖2中所展示的邏輯到物理映射124-1(在復(fù)制之前)示出了這樣的映射。
所述映射模塊132可以改變所述邏輯到物理映射124-1,使得邏輯地址202的第一子集208被映射到所述緩存器120中的存儲有所述數(shù)據(jù)的第一部分204的一個或多個位置上。此外,所述映射模塊132可以改變所述邏輯到物理映射124-1,使得邏輯地址202的第二子集210被映射到所述第二存儲器118的部分壞塊122-2中的存儲有所述數(shù)據(jù)的第二部分206的一個或多個位置上。圖2中所展示的邏輯到物理映射124-2(在復(fù)制之后)示出了這樣的映射。
所述存儲控制器110例如可以隨后將所述數(shù)據(jù)的第一部分204與從主機系統(tǒng)接收到的附加數(shù)據(jù)一起從緩存器120移動至固態(tài)存儲器112的第一存儲器116、第二存儲器118、和/或其他部分中。所述邏輯到物理映射124可以相應(yīng)地被更新。例如,所述緩存器120可以包括以下數(shù)據(jù):所述數(shù)據(jù)被主機系統(tǒng)寫入所述存儲系統(tǒng)100中,但是沒有大到足以被寫入所述第一存儲器116、所述第二存儲器118、和/或其他存儲存儲器的任何塊中。在一個示例中,所述緩存器120可以包括一組SLC塊,在這里所述存儲系統(tǒng)100存儲了來自主機系統(tǒng)的零散數(shù)據(jù)。一旦足夠的數(shù)據(jù)被寫入緩存器120中,則所述緩存器120中的數(shù)據(jù)的塊可以被寫入更新塊中,如MLC塊或不同的SLC塊。通過將所述數(shù)據(jù)的第一部分204復(fù)制到緩存器120上,所述數(shù)據(jù)的第一部分204可以被放置在隊列中以便稍后與足以填充一個塊的數(shù)據(jù)一起復(fù)制。
當(dāng)所述復(fù)制模塊128將數(shù)據(jù)從第一存儲器116中的塊122-1復(fù)制到所述第二存儲器118中的塊上時,可能已經(jīng)發(fā)生了寫入錯誤。例如,所述寫入錯誤可以是程序故障。所述程序故障可以是慢編程位或某種其他缺陷的結(jié)果。只要PWR指示全部數(shù)據(jù)或至少所述數(shù)據(jù)的第二部分206被成功寫入所述第二存儲器118的塊122-2上,系統(tǒng)100就可以忽略所述寫入錯誤。
將所述第一存儲器116的塊122-1復(fù)制到所述第二存儲器118的塊122-2上可以是指復(fù)制一個或多個塊。例如,可以將所述第一存儲器116的多個塊122復(fù)制到所述第二存儲器118的這一個塊122-2上。替代性地或另外地,可以將第一存儲器116的這一個塊122-1復(fù)制到所述第二存儲器118的多個塊122上。在又其他示例中,可以將所述第一存儲器116的多個塊122復(fù)制到所述第二存儲器的多個塊122上。所述第二存儲器118的塊122可以是與所述第一存儲器116的塊122大小相同或不同的。所述第一存儲器116的大小可以是與所述第二存儲器118的大小相同或不同的。
如果所述數(shù)據(jù)的未能被復(fù)制到第二存儲器118的塊122-2上的第一部分204相對于所述數(shù)據(jù)的第二部分206而言太大,則所述第二存儲器118的塊122-2可以被視為壞塊而不是部分壞塊。例如,這種判定可以基于未能被復(fù)制的塊122-2的頁數(shù)是否超過閾值頁數(shù)。在替代性示例中,可以使用一組不同的指標(biāo)來判定所述塊是壞塊還是部分壞塊。
如果塊122-2被確定為壞塊,則可以觸發(fā)恢復(fù)序列。例如,所述恢復(fù)序列可以涉及將數(shù)據(jù)從NAND鎖存器、BRAM(塊RAM)和/或其他結(jié)構(gòu)復(fù)制到新的塊上。所述第二存儲器118的塊122-2可以被丟棄到壯大的壞塊列表中,從而減少了系統(tǒng)100中的可用備用件。
圖3展示了系統(tǒng)100的用于折疊數(shù)據(jù)的邏輯的示例的流程圖。所述示例中的邏輯是用于將所述第一存儲器116(單級存儲單元(SLC)閃存)的塊122-1折疊至所述第二存儲器118(多級存儲單元(MLC)閃存)的塊122-2上。
所述折疊有時可以一次以一頁、一個字線(WL)、或某個其他存儲單位來執(zhí)行。例如,在折疊開始(302)時,可以將標(biāo)識頁號和/或字線的索引設(shè)置(304)為零??梢詫⑼ㄟ^所述索引所標(biāo)識的頁和/或字線從第一存儲器116的塊122-1復(fù)制(306)到第二存儲器118的塊122-2上。
如果當(dāng)復(fù)制通過所述索引所標(biāo)識的頁和/或字線時沒有檢測(308)到程序故障(寫入失敗),則可以判定(312)是否仍需要復(fù)制塊122-1中的更多頁和/或字線。如果需要更多復(fù)制,則將索引加一(314),并且操作可以返回到復(fù)制(306)通過所述索引所標(biāo)識的頁和/或字線。替代性地,如果不需要更多復(fù)制,則折疊可以完成(318)。
另一方面,如果檢測到(308)程序故障(或任何類型的寫入失敗),則可以將程序故障計數(shù)加一(310)。所述程序故障計數(shù)可以指示當(dāng)將第一存儲器116的塊122-1復(fù)制到所述第二存儲器118的塊122-2上時所檢測到的程序故障或?qū)懭脲e誤的數(shù)量。
可以判定(316)所述程序故障計數(shù)是否超過閾值。如果所述程序故障計數(shù)沒有超過所述閾值,則操作可以進行到判定(312)是否仍需要復(fù)制塊122-1中的更多頁和/或字線。換言之,所述第二存儲器118的塊122-2仍可能潛在地是部分壞塊而不是壞塊。替代性地,如果超過了所述閾值,則可以將所述第二存儲器118的塊122-2添加至壞塊列表或壯大的缺陷列表中,并且可以從空閑塊列表中選擇(318)第二存儲器118中的新的MLC塊。所述系統(tǒng)100可以返回至開始(302)將第一存儲器116的塊122-1折疊到第二存儲器118中的新的MLC塊上而不是折疊到第二存儲器118的塊122-2上。
換言之,雖然可能檢測到程序故障或其他寫入錯誤,所述系統(tǒng)100仍可以繼續(xù)嘗試使用所述第二存儲器118的塊122-2。不一定啟動程序故障/數(shù)據(jù)恢復(fù)。除非在復(fù)制到所述第二存儲器118的塊122-2上時所檢測到的程序故障的數(shù)量超過所述閾值,否則將不丟棄所述塊122-2。
在所述第一存儲器116的塊122-1被折疊到第二存儲器118的塊122-2中之后,可以在所述第二存儲器118的塊122-2上執(zhí)行寫入后讀取操作,如EPWR。替代性地,可以在所述第一存儲器116的塊122-1被完全折疊到所述第二存儲器118的塊122-2中之前,在所述第二存儲器118的塊122-2的每個部分上執(zhí)行寫入后讀取操作。
圖4展示了EPWR邏輯與缺陷處理的示例的流程圖。例如可以在折疊完成(318)之后開始多個操作。
EPWR操作可以一次一頁地執(zhí)行。例如,可以將頁索引設(shè)置(402)為零??梢詮牡诙鎯ζ?18的塊122-2中讀取(404)通過所述頁索引所標(biāo)識的頁。
由于在這個示例中所述寫入后讀取操作是EPWR操作,所以判定(406)是否在從所述第二存儲器118的塊122-2中讀取到的頁中是否檢測到糾錯碼(ECC)錯誤。如果沒有檢測到ECC錯誤,則可以判定(408)是否已經(jīng)檢測了塊122-2中的所有頁的錯誤。替代性地,如果檢測到ECC錯誤,則可以將EPWR故障計數(shù)加一(410)。所述EPWR故障計數(shù)可以指示第二存儲器118的塊122-2中遭遇寫入后讀取錯誤的頁數(shù)。
如果所述EPWR故障計數(shù)被加一,則可以判定(412)所述EPWR故障計數(shù)是否超過閾值。如果超過了所述閾值,則可以從空閑塊列表中選擇(318)第二存儲器118中的新的MLC塊,并且系統(tǒng)100可以返回至開始(302)將所述第一存儲器116的塊122-1折疊到所述第二存儲器118中的新的MLC塊中??梢詫⑺龅诙鎯ζ鞯膲K122-2添加至壞塊列表(如壯大的缺陷列表)中。替代性地,如果所述EPWR故障計數(shù)沒有超過所述閾值,則所述系統(tǒng)100仍可以嘗試使用第二存儲器118的塊122-2來存儲數(shù)據(jù)。相應(yīng)地,如果所述EPWR故障計數(shù)沒有超過所述閾值,則操作可以進行到判定(408)是否已經(jīng)檢查了塊122-2中的全部頁的寫入后讀取錯誤。如果還沒有檢查全部頁,則可以將所述頁索引加一(413),并且操作可以返回至讀取(404)通過所述頁索引所標(biāo)識的頁。
一旦已經(jīng)檢查了塊122-2中的全部頁的寫入后讀取錯誤,則可以判定(414)所述EPWR故障計數(shù)是否非零。如果所述EPWR故障計數(shù)為零,則所述EPWR檢查可以完成(416)。替代性地,如果所述EPWR故障計數(shù)為非零,則所述數(shù)據(jù)的原本要被復(fù)制到故障頁或字線上的部分(換言之,所述數(shù)據(jù)的第一部分204)被復(fù)制(418)到緩存器120上。接著可以更新固件數(shù)據(jù)結(jié)構(gòu)(如二進制緩存器索引)來反映所述數(shù)據(jù)的第一部分204將從所述緩存器120中讀取。
在圖3和圖4中所展示的寫入和讀取對應(yīng)地可以每頁、每字線、或每個任何其他存儲單位地執(zhí)行。提及SLC和MLC閃存僅僅是對第一和第二存儲器116和118的說明。
提及塊122卻可以更廣義地指代存儲單元。每個存儲單元可以是存儲控制器110可以讀取或?qū)懭氲臄?shù)據(jù)單元。存儲單元可以是物理塊、頁、字線、扇區(qū)、或存儲控制器110可以讀取或?qū)懭氲娜魏纹渌麛?shù)據(jù)單元。
在一個示例中,邏輯地址202(LBA A至Y)在第一存儲器116的塊122-1(塊M)中所存儲的數(shù)據(jù)折疊之前被映射到所述數(shù)據(jù)上。在將所述數(shù)據(jù)折疊到第二存儲器118的塊122-2(塊N)中之后,寫入后讀取將檢測第二存儲器118的塊122-2(塊N)是部分壞塊,并且與LBA A至B相對應(yīng)的數(shù)據(jù)(所述數(shù)據(jù)的第一部分204)未能進行寫入后讀取。與LBA A至B相對應(yīng)的數(shù)據(jù)(所述數(shù)據(jù)的第一部分204)被復(fù)制到緩存器120上。二進制緩存器索引(邏輯到物理映射124)被更新。第一組邏輯地址208(LBA A至B)被映射到所述緩存器120中的相應(yīng)物理位置114上。第二組邏輯地址210(LBA C至Y)被映射到所述第二存儲器118的塊122-2(塊N)中的相應(yīng)物理位置114上。表1展示了在折疊之前和之后的映射。
表1
系統(tǒng)100可以保護一種包括所述固態(tài)存儲器112的產(chǎn)品免于由于慢編程位而導(dǎo)致的寫入錯誤。針對慢編程位而言,EPWR可以通過(如果寫入錯誤是邊緣故障),從而促進所述系統(tǒng)繼續(xù),而不對包括慢編程位的塊進行附加垃圾收集。此外,所述系統(tǒng)100可以防止所述部分壞塊被丟棄,從而延長所述產(chǎn)品的壽命。
在生產(chǎn)中,將被確定為壞塊的全部塊122(但是其實際上可能是壞塊或部分壞塊)標(biāo)識為出廠標(biāo)記壞塊。所述系統(tǒng)102可以通過將所述出廠標(biāo)記壞塊添加至空閑塊列表中來將所述出廠標(biāo)記壞塊作為好塊對待。換言之,所述空閑塊列表可以包括出廠標(biāo)記壞塊和好塊(好塊是在生產(chǎn)過程中沒有被標(biāo)記為壞的塊)。在運行過程中,當(dāng)數(shù)據(jù)被寫入所述固態(tài)存儲器112中時,從所述空閑塊列表中選擇塊,并且將所述數(shù)據(jù)寫入所選擇的塊中。系統(tǒng)100的PWR模塊126接著可以判定所選擇的塊是好塊、部分壞塊、還是壞塊,如上文所描述的。如果所選擇的塊是好塊或部分壞塊,所述則所述系統(tǒng)100可以使用所述所選擇的塊。如果所選擇的塊是壞塊,則可以通過例如將所述所選擇的塊添加至壯大的缺陷列表中而丟棄所述所選擇的塊。
換言之,出廠標(biāo)記壞塊可以首先被添加至空閑塊列表中并且接著隨后在從所述空閑塊列表中選擇以便進行寫入的運行過程中進行測試。如果所選擇的塊是部分壞塊,則可以將所選擇的塊用作部分壞塊,或者如果所選擇的塊是壞塊(例如,由于太多有缺陷的字線),則可以將其添加至壯大的缺陷列表中。在可能的情況下將塊122用作部分壞塊可以導(dǎo)致產(chǎn)品產(chǎn)量有效地增大。在對所述塊進行第一次寫入時,將所選擇的壞塊添加至壯大的缺陷列表中導(dǎo)致所選擇的塊不被用于存儲。
替代性地,所述復(fù)制模塊128可以被包含在測試模塊中、或者在生產(chǎn)過程中被測試模塊調(diào)用以避免所述部分壞塊初始地被添加至出廠標(biāo)記壞塊中。所述測試模塊可以執(zhí)行一個或多個測試來確定所述固態(tài)存儲器112的哪些塊將是出廠標(biāo)記壞塊。如果塊被確定為壞塊,則所述測試模塊可以將所述塊添加至出廠標(biāo)記壞塊的列表中。然而,如果所述塊被確定為部分壞塊,則所述測試模塊可以不將所述塊添加至出廠標(biāo)記壞塊的列表中。而是,可以將所述塊添加至空閑塊列表中,例如表明所述塊可用于存儲數(shù)據(jù)(如主機數(shù)據(jù))。第一存儲器116可以包括被寫入所述第二存儲器118中的測試數(shù)據(jù)。在PWR模塊126識別出部分壞塊之后,則所述數(shù)據(jù)的未能成功復(fù)制的第一部分204可能不需要被復(fù)制到緩存器120上,因為所述數(shù)據(jù)只是測試數(shù)據(jù)。類似地,如果只是確定出廠標(biāo)記壞塊,則所述邏輯到物理映射124可能不需要被映射模塊132更新。
系統(tǒng)100和102可以用附加的、不同的、或更少的部件來實施。例如,系統(tǒng)100和102可以包括主機系統(tǒng)。替代性地或另外地,系統(tǒng)100和102可以僅包括集成電路,所述集成電路包括在圖1中展示的所述部件的子集,如固體存儲器112和存儲控制器110。
每個部件可以包括附加的、不同的、或更少的部件。在第一示例中,存儲器108可以包括與所展示的相比附加的、不同的、或更少的模塊。在第二示例中,固態(tài)存儲器112可以包括多個附加存儲器部分。在第三示例中,緩存器120可以不被包含在包括第一存儲器116和第二存儲器118的固態(tài)存儲器112中。
所述流程圖中所展示的邏輯可以包括與所展示的相比附加的、更少的或不同的操作。例如,用于折疊數(shù)據(jù)的邏輯可以包括僅將數(shù)據(jù)從第一存儲器116的塊122-1復(fù)制到第二存儲器118的塊122-2上。在另一個示例中,EPWR邏輯可以包括:僅在被復(fù)制到所述第二存儲器118的塊122-2上的數(shù)據(jù)的第一部分204中檢測到寫入后讀取錯誤,但是在被復(fù)制到所述第二存儲器118的塊122-2上的數(shù)據(jù)的第二部分206中沒有檢測到寫入后讀取錯誤;并且響應(yīng)于在所述數(shù)據(jù)的第一部分204中而沒有在所述數(shù)據(jù)的第二部分206中檢測到寫入后讀取錯誤,確定所述第二存儲器118的塊122-2是可用于存儲的部分壞塊。此外,所述流程圖中所展示的操作可以按不同于所展示的順序來執(zhí)行。
處理器106可以是與存儲器108和存儲接口104通信。所述處理器106可以是微處理器、通用處理器、中央處理單元、專用集成電路(ASIC)、數(shù)字信號處理器、現(xiàn)場可編程門陣列(FPGA)、數(shù)字電路、模擬電路、和/或任何類型的處理器。
處理器106可以是可操作來執(zhí)行邏輯的一個或多個設(shè)備。所述邏輯可以包括嵌入存儲器108或其他存儲器中的在被所述處理器106執(zhí)行時致使所述處理器106執(zhí)行所述邏輯的多個計算機可執(zhí)行指令或計算機代碼。所述計算機代碼可以包括由所述處理器106可執(zhí)行的多個指令。
系統(tǒng)100可以采用許多不同的方式來實施。每個模塊,如PWR模塊126、復(fù)制模塊128、錯誤恢復(fù)模塊130、和映射模塊132,可以是硬件、或硬件與軟件的組合。例如,每個模塊可以包括專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、電路、數(shù)字邏輯電路、模擬電路、離散電路的組合、門、或任何其他類型的硬件或其組合。替代性地或另外地,每個模塊可以包括存儲器硬件,如存儲器112的例如包括由所述處理器106或其他處理器(如,存儲控制器110)可執(zhí)行來實施所述模塊的一個或多個特征的多個指令的這部分。當(dāng)所述模塊中的任一個包括所述存儲器的、包括由所述處理器可執(zhí)行的多個指令的這部分時,所述模塊可以包括或不包括所述處理器。在一些示例中,每個模塊可能僅是存儲器108或其他物理存儲器的、包括由處理器106或其他處理器可執(zhí)行來實施相應(yīng)模塊的特征的指令的這部分,而所述模塊不包括任何其他硬件。由于每個模塊包括至少一些硬件,即使在所包含的硬件包括軟件時仍是如此,因此每個模塊可以互換地被稱為硬件模塊,如PWR硬件模塊126、復(fù)制硬件模塊128、錯誤恢復(fù)硬件模塊130、和映射硬件模塊132。類似地,由于存儲器可以是電路,所以每個模塊可以互換地被稱為電路,即使在相應(yīng)的模塊只包括所述存儲器的、包括可執(zhí)行指令的這部分時仍是如此。
一些特征被示為存儲在計算機可讀存儲介質(zhì)中(例如,作為被實施為計算機可執(zhí)行指令的邏輯、或者作為存儲器中的數(shù)據(jù)結(jié)構(gòu))。邏輯和數(shù)據(jù)結(jié)構(gòu)可以被存儲在、分布在一種或多種類型的計算機可讀存儲介質(zhì)上、或從中讀取。計算機可讀存儲介質(zhì)的示例可以包括硬盤、軟盤、CD-ROM、閃存驅(qū)動器、緩存器、易失性存儲器、非易失性存儲器、RAM、閃存、或任何其他類型的計算機可讀存儲介質(zhì)或存儲介質(zhì)。所述計算機可讀存儲介質(zhì)可以包括任何類型的非暫時性計算機可讀介質(zhì),如CD-ROM、易失性存儲器、非易失性存儲器、ROM、RAM、或任何其他適合的存儲設(shè)備。
系統(tǒng)100的處理能力可以分布在多個實體之間,如在多個處理器和存儲器之間,可選地包括多個分布式處理系統(tǒng)。多個參數(shù)、數(shù)據(jù)庫和其他數(shù)據(jù)結(jié)構(gòu)可以被分開存儲和管理,可以被結(jié)合到單一存儲器或數(shù)據(jù)庫中,可以用許多不同的方式被邏輯地和物理地組織,并且可以用不同類型的數(shù)據(jù)結(jié)構(gòu)(如鏈表、哈希表、或隱式存儲機制)來實現(xiàn)。程序或電路等邏輯可以在多個模塊之間組合或拆分,分布在若干個存儲器和處理器上,并且可以在如共享庫的庫中實現(xiàn)。
存儲系統(tǒng)102可以是包括固態(tài)存儲器112的半導(dǎo)體存儲器設(shè)備。半導(dǎo)體存儲器設(shè)備包括易失性存儲器設(shè)備(如動態(tài)隨機存取存儲器(“DRAM”)或靜態(tài)隨機存取存儲器(“SRAM”))、非易失性存儲器設(shè)備(如電阻式隨機存取存儲器(“ReRAM”)、電可擦除可編程只讀存儲器(“EEPROM”)、閃存(其還可以被考慮為EEPROM的子集)、鐵電隨機存取存儲器(“FRAM”)、和磁阻隨機存取存儲器(“MRAM”))、以及能夠存儲信息的其他半導(dǎo)體元件。。每種類型的存儲器設(shè)備可以具有多種不同的配置。例如,閃存設(shè)備可以被配置成NAND或NOR配置。
存儲器設(shè)備可以由無源和/或有源元件以任何組合來形成。通過非限制性示例的方式,無源半導(dǎo)體存儲器元件包括ReRAM設(shè)備元件,在一些實施例中,所述元件包括如反熔絲相變材料等電阻率切換存儲元件以及(可選地)如二極管等操控元件。進一步通過非限制性示例的方式,有源半導(dǎo)體存儲器元件包括EEPROM和閃存設(shè)備元件,在一些實施例中,所述元件包括如浮柵、導(dǎo)電納米顆粒、或電荷存儲介電材料等包含了電荷存儲區(qū)域的元件。
多個存儲器元件可以被配置為使得它們串聯(lián)或使得每個元件是可單獨訪問的。通過非限制性示例的方式,NAND配置(NAND存儲器)中的閃存設(shè)備通常包含串聯(lián)的存儲器元件。NAND存儲器陣列可以被配置為使得陣列包括多個存儲器串,其中,串包括共享單個位線并作為群組被訪問的多個存儲器元件。替代性地,存儲器元件可以被配置為使得每一個元件是可單獨訪問的(例如,NOR存儲器陣列)。NAND和NOR存儲器配置是示例性的,并且存儲器元件可以以其他方式配置。
位于基板內(nèi)和/或上方的半導(dǎo)體存儲器元件可以被安排在兩個或三個維度(如二維存儲器結(jié)構(gòu)或三維存儲器結(jié)構(gòu))中。
在二維存儲器結(jié)構(gòu)中,半導(dǎo)體存儲器元件被安排在單個平面或單個存儲器設(shè)備級中。通常,在二維存儲器結(jié)構(gòu)中,存儲器元件被安排在基本上平行于支撐存儲器元件的基板的主要表面而延伸的平面中(例如,在x-z方向平面中)?;蹇梢允窃谄渖戏交蛟谄渲行纬纱鎯ζ髟拥木蛘咂淇梢允窃谛纬纱鎯ζ髟蟾浇又疗渖系妮d體基板。作為非限制性示例,基板可以包括如硅等半導(dǎo)體。
可以在單個存儲器設(shè)備級中將存儲器元件安排成有序陣列,如在多個行和/或列中。然而,可以在非規(guī)則或非正交配置中排列存儲器元件。存儲器元件中的每個存儲器元件可以具有兩個或更多個電極或接觸線,如位線和字線。
三維存儲器陣列被安排成使得存儲器元件占據(jù)多個平面或多個存儲器設(shè)備級,由此在三個維度(即,在x方向、y方向和z方向上,其中,y方向基本上垂直于并且x和z方向基本上平行于基板的主表面)中形成結(jié)構(gòu)。
作為非限制性示例,三維存儲器結(jié)構(gòu)可以被垂直地安排成多個二維存儲器設(shè)備級的堆疊。作為另一個非限制性示例,三維存儲器陣列可以被安排成多個垂直列(例如,基本上垂直于基板的主表面延伸的列,即,在y方向上),每列在每列中具有多個存儲器元件??梢栽诙S配置中(例如,在x-z平面中)安排所述列,導(dǎo)致存儲器元件的三維安排,元件位于多個垂直堆疊的存儲器平面上。存儲器元件在三個維度中的其他配置也可以構(gòu)成三維存儲器陣列。
通過非限制性示例的方式,在三維NAND存儲器陣列中,存儲器元件可以被耦合在一起,以便在單個水平(例如,x-z)存儲器設(shè)備級內(nèi)形成NAND串。替代性地,存儲器元件可以被耦合在一起,以便形成橫跨多個水平存儲器設(shè)備級的垂直NAND串??梢栽O(shè)想其他三維配置,其中,一些NAND串包含單個存儲器級中的存儲器元件,而其他串包含跨越多個存儲器級的存儲器元件。還可以在NOR配置中和在ReRAM配置中設(shè)計三維存儲器陣列。
通常,在單片式三維存儲器陣列中,在單個基板上方形成一個或多個存儲器設(shè)備級??蛇x地,單片式三維存儲器陣列還可以具有至少部分地位于單個基板內(nèi)的一個或多個存儲器層。作為非限制性示例,基板可以包括如硅等半導(dǎo)體。在單片式三維陣列中,構(gòu)成陣列的每個存儲器設(shè)備級的層通常在陣列的基礎(chǔ)存儲器設(shè)備級的層上形成。然而,單片式三維存儲器陣列的鄰近存儲器設(shè)備級的層可以被共享或在存儲器設(shè)備級之間存在中間層。
然后,再次,二維陣列可以被單獨地形成并且然后被封裝在一起,以便形成具有多個存儲器層的非單片式存儲器設(shè)備。例如,非單片式堆疊存儲器可以通過在單獨地基板上形成存儲器級然后將存儲器級堆疊在彼此頂上來構(gòu)造??梢詼p薄基板或者可以在堆疊之前將其從存儲器設(shè)備級中移除,但是因為存儲器設(shè)備級最初地在單獨的基板上方形成,所以所產(chǎn)生的存儲器陣列不是單片式三位存儲器陣列。此外,多個二維存儲器陣列或三維存儲器陣列(單片式或非單片式)可以在單獨的芯片上形成然后被封裝在一起,以便形成堆疊芯片存儲器設(shè)備。
存儲器元件的操作以及與存儲器元件的通信通常需要相關(guān)聯(lián)的電路。作為非限制性示例,存儲器設(shè)備可以具有用于控制和驅(qū)動存儲器元件完成如編程和讀取等功能的電路。此相關(guān)聯(lián)的電路可以位于與存儲器元件相同的基板上和/或位于單獨的基板上。例如,用于存儲器讀-寫操作的控制器可以位于單獨的控制器芯片上和/或位于與存儲器元件相同的基板上。
本領(lǐng)域的技術(shù)人員將意識到,本發(fā)明不限于所描述的二維和三維示例性結(jié)構(gòu),但涵蓋了如此處描述的本發(fā)明的精神和范圍內(nèi)的和如本領(lǐng)域的技術(shù)人員理解的所有相關(guān)存儲器結(jié)構(gòu)。
無論所描述的具體實施方式怎樣,所有的討論本質(zhì)上都是示例性的,而非限制性的。可以在計算機可讀存儲介質(zhì)上提供用于實現(xiàn)上文所討論的過程、方法和/或技術(shù)的相應(yīng)邏輯、軟件或指令??梢皂憫?yīng)于存儲在計算機可讀介質(zhì)中或其上的一個或多個邏輯或指令集來執(zhí)行圖中所展示的或在此所描述的功能、動作或任務(wù)。所述功能、動作或任務(wù)獨立于指令集、存儲介質(zhì)、處理器或處理策略的具體類型、并且可以由單獨地或組合地運行的軟件、硬件、集成電路、固件、微代碼等來執(zhí)行。同樣,處理策略可以包括多重處理、多任務(wù)處理、并行處理等。在一個實施例中,所述指令被存儲在可移動介質(zhì)設(shè)備上以供本地或遠程系統(tǒng)讀取。在其他實施例中,所述邏輯或指令被存儲在遠程位置中,以便通過計算機網(wǎng)絡(luò)或通過電話線傳輸。在另外的其他實施例中,所述邏輯或指令被存儲在給定計算機、中央處理單元(“CPU”)、圖形處理單元(“GPU”)或系統(tǒng)內(nèi)。
此外,雖然上文描述了特定部件,但是在此所描述的方法、系統(tǒng)和制品可以包括附加的、更少的或不同的部件。例如,處理器可以被實現(xiàn)為微處理器、微控制器、專用集成電路(ASIC)、離散邏輯、或其他類型的電路或邏輯的組合。類似地,存儲器可以是DRAM、SRAM、閃存或任何其他類型的存儲器。標(biāo)志、數(shù)據(jù)、數(shù)據(jù)庫、表格、實體和其他數(shù)據(jù)結(jié)構(gòu)可以被分開地存儲和管理、可以被結(jié)合到單一存儲器或數(shù)據(jù)庫中、可以被分布、或者可以以許多不同的方式被邏輯地和物理地組織。所述部件可以獨立運行或者是相同程序或裝置的一部分。所述部件可以位于分開的硬件(如分開的可移除電路板)上、或共享共用硬件、如相同存儲器和用于實現(xiàn)來自存儲器的指令的處理器。程序可以是單一程序的部分、是多個分開的程序、或者被分布在若干存儲器和處理器上。
為了清楚以下短語的使用并且由此向公眾告知,短語“<A>、<B>、...和<N>中的至少一個”、或“<A>、<B>、...<N>中的至少一個或其組合”、或“<A>、<B>、...和/或<N>”是由申請人在最廣的意義上定義的,除非申請人明確地相反聲明,否則取代了上下文中的任何其他暗示的定義,是指選自包括A、B、...和N的組中的一個或多個元素。換言之,所述短語是指元素A、B、...或N中的一個或多個元素的任何組合,包括:單獨的任何一個元素或所述一個元素與其他元素中的一個或多個的組合,所述其他元素也可以包括其他未列出元素的組合。
雖然已經(jīng)描述了不同實施例,但是本領(lǐng)域普通技術(shù)人員應(yīng)了解的是,更多的實施例和實現(xiàn)方式也是可能的。相應(yīng)地,在此所描述的所述實施例是示例、而不是唯一可能的實施例和實現(xiàn)方式。