非易失性分級存儲系統(tǒng)中的協(xié)同管理的方法及其控制器的制造方法
【技術(shù)領(lǐng)域】
[0001] 本公開涉及數(shù)據(jù)處理和存儲,并且更具體地涉及存儲系統(tǒng)中的協(xié)同健康(health) 管理。
【背景技術(shù)】
[0002] 閃存是作為晶體管的浮動?xùn)艠O上的電荷的每個存儲元件存儲數(shù)據(jù)的一個或更多 比特的非易失性存儲器技術(shù)。因為閃存中元件密度以及每個元件存儲的比特數(shù)目在后續(xù)幾 代快閃技術(shù)中繼續(xù)增加,所以存儲元件中存儲的數(shù)據(jù)將變得更易受到由讀取干擾、電荷俘 獲、高環(huán)境溫度、長存儲持續(xù)時間和其它因素引起的比特錯誤影響。因此,即使在數(shù)據(jù)的存 儲密度和每單位成本不斷提高時,閃存額定的讀取/寫入周期的數(shù)目也普遍地不斷下降。
[0003] 為了從給定閃存獲得最長使用壽命,已經(jīng)提出了各種技術(shù)。一般而言,已經(jīng)假設(shè)通 過所謂的"耗損均衡(wear leveling)"獲得最長使用壽命,其中"耗損均衡"被定義為均衡 閃存陣列中的所有物理存儲器塊中的編程/擦除周期的數(shù)目。如這里進(jìn)一步討論的,本公 開意識到僅僅依賴于損耗均衡未實現(xiàn)最佳存儲器壽命。
【發(fā)明內(nèi)容】
[0004] 本公開認(rèn)識到,在編程/擦除(P/E)周期的數(shù)目可以被認(rèn)為是確定非易失性存儲 器陣列中的哪些物理存儲器塊要被選擇用于編程時的一個因素的同時,當(dāng)考慮諸如錯誤指 標(biāo)(metrics)(例如,錯誤率和錯誤率的變化率)的其它"健康"因素時,實現(xiàn)更長的有用存 儲器壽命。
[0005] 在至少一個實施例中,多個控制器實施非易失性分級存儲系統(tǒng)的協(xié)同管理。在存 儲系統(tǒng)中,第一控制器從至少第二和第三控制器接收關(guān)于在第二和第三控制器的控制下的 物理存儲裝置的多個存儲單元的健康狀況的健康報告,并維護(hù)健康報告中接收的信息的健 康數(shù)據(jù)庫。響應(yīng)于健康事件并基于健康數(shù)據(jù)庫中的信息,第一控制器修改在其控制下的多 個存儲單元中的一個或多個的邏輯至物理地址映射,使得具有較大訪問熱度的數(shù)據(jù)被映射 至相對較健康的存儲單元,以及具有較小訪問熱度的數(shù)據(jù)被映射至相對較不健康的存儲單 元。此后,第一控制器根據(jù)經(jīng)修改的邏輯至物理地址映射,將寫入請求引導(dǎo)(direct)至在 其控制下的存儲單元。
【附圖說明】
[0006] 圖1是根據(jù)一個實施例的數(shù)據(jù)處理環(huán)境的高級框圖;
[0007] 圖2-5圖示了根據(jù)本公開的NAND閃存陣列內(nèi)的物理存儲器的示例性布置;
[0008] 圖6A描繪了根據(jù)本公開的塊條(stripe)的示例性實施方式;
[0009] 圖6B描繪了根據(jù)本公開的頁條的示例性實施方式;
[0010] 圖7圖示了根據(jù)本公開的示例性數(shù)據(jù)頁;
[0011] 圖8描繪了根據(jù)本公開的示例性數(shù)據(jù)保護(hù)頁;
[0012] 圖9是根據(jù)一個實施例的、快閃控制器配置健康等級和熱度面元(heatbin)的示 例性處理的高級邏輯流程圖;
[0013] 圖IOA是根據(jù)一個實施例的、快閃控制器將健康等級與物理存儲器塊關(guān)聯(lián)的示例 性處理的高級邏輯流程圖;
[0014] 圖IOB是根據(jù)一個實施例的、快閃控制器將具有給定健康等級的物理存儲器塊放 置到ABQ中的示例性處理的高級邏輯流程圖;
[0015] 圖11是數(shù)據(jù)頁被寫入至非易失性存儲器陣列的數(shù)據(jù)寫入處理的示例性實施例的 高級邏輯流程圖;
[0016] 圖12是從非易失性存儲器陣列讀取數(shù)據(jù)的數(shù)據(jù)讀取處理的示例性實施例的高級 邏輯流程圖;
[0017] 圖13是圖示由健康等級劃分實現(xiàn)的非易失性存儲器系統(tǒng)的使用壽命的延長的 圖;
[0018] 圖14描繪了包括多個控制點的分級存儲系統(tǒng)的示例性實施例;
[0019] 圖15圖示了具有在其之下的至少一級控制的控制器維護(hù)關(guān)聯(lián)的健康數(shù)據(jù)庫的一 個優(yōu)選實施例;
[0020] 圖16是在存儲系統(tǒng)中維護(hù)健康數(shù)據(jù)庫的方法的示例性實施例的高級邏輯流程 圖;
[0021] 圖17是存儲系統(tǒng)中的協(xié)同健康管理的方法的示例性實施例的高級邏輯流程圖;
[0022] 圖18是云計算節(jié)點的示例的示意圖;
[0023] 圖19描繪了說明性云計算環(huán)境;
[0024] 圖20示出了由圖19的云計算環(huán)境提供的功能抽象層集。
【具體實施方式】
[0025] 所屬技術(shù)領(lǐng)域的技術(shù)人員知道,本發(fā)明的各個方面可以實現(xiàn)為系統(tǒng)、方法或計算 機程序產(chǎn)品。因此,本發(fā)明的各個方面可以具體實現(xiàn)為以下形式,即:可以是完全的硬件、也 可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本 文一般稱為"電路"、"模塊"或"系統(tǒng)"。此外,在一些實施例中,本發(fā)明的各個方面還可以實 現(xiàn)為在一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)中包含 計算機可讀的程序代碼。
[0026] 可以采用一個或多個計算機可讀介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算 機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是--但不限 于--電、磁、光、電磁、紅外線、或半導(dǎo)體系統(tǒng)、裝置或器件,或者任意以上的組合。計算機 可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便攜 式計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器 (EPROM或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或 者上述的任意合適的組合。在本文件中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序 的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0027] 計算機可讀的信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號, 其中承載了計算機可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括--但 不限于一電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質(zhì)還可以是 計算機可讀存儲介質(zhì)以外的任何計算機可讀介質(zhì),該計算機可讀介質(zhì)可以發(fā)送、傳播或者 傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0028] 計算機可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限 于一無線、電線、光纜、RF等等,或者上述的任意合適的組合。
[0029] 可以以一種或多種程序設(shè)計語言或其組合來編寫用于執(zhí)行本發(fā)明的各個方面的 操作的計算機程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言一諸如Java、 Smalltalk、C++,還包括常規(guī)的過程式程序設(shè)計語言一諸如" C"語言或類似的程序設(shè)計語 言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立 的軟件包執(zhí)行、部分在用戶計算機上部分在遠(yuǎn)程計算機上執(zhí)行、或者完全在遠(yuǎn)程計算機或 服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計算機的情形中,遠(yuǎn)程計算機可以通過任意種類的網(wǎng)絡(luò)--包 括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)-連接到用戶計算機,或者,可以連接到外部計算機(例如 利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
[0030] 下面將參照本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/ 或框圖描述本發(fā)明的各個方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/ 或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給 通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,這些 計算機程序指令通過計算機或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實現(xiàn)流程圖和/或框 圖中的方框中規(guī)定的功能/操作的裝置。
[0031] 也可以把這些計算機程序指令存儲在能使得計算機或其它可編程數(shù)據(jù)處理裝置 以特定方式工作的計算機可讀介質(zhì)中,這樣,存儲在計算機可讀介質(zhì)中的指令就產(chǎn)生出一 個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令的制造品。
[0032] 也可以把計算機程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備 上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計 算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖 和/或框圖中的方框中規(guī)定的功能/操作的過程。
[0033] 現(xiàn)在參考附圖并且具體參考圖1,圖示了包括具有如這里進(jìn)一步描述的非易失性 存儲器陣列的數(shù)據(jù)存儲系統(tǒng)的示例性數(shù)據(jù)處理環(huán)境100的高級框圖。如所示的,數(shù)據(jù)處理 環(huán)境100包括至少一個處理器系統(tǒng)102,其具有處理指令和數(shù)據(jù)的一個或多個處理器104。 處理器系統(tǒng)102可以額外地包括本地存儲裝置106 (例如,動態(tài)隨機存取存儲器(DRAM)或 盤),其可以存儲由處理器104執(zhí)行的處理的程序代碼、操作數(shù)和/或執(zhí)行結(jié)果。在各個實 施例中,處理器系統(tǒng)102可以是例如移動計算設(shè)備(諸如智能電話或平板電腦)、膝上型或 桌上型個人計算機系統(tǒng)、服務(wù)器計算機系統(tǒng)(諸如可從國際商業(yè)機器公司獲得的POWER系 列之一)、或大型計算機系統(tǒng)。處理器系統(tǒng)102還可以是使用諸如ARM、PowerPC、Intel X86 或任何其它與存儲器高速緩存、存儲器控制器、本地存儲裝置、I/O總線集線器等結(jié)合的處 理器的各種處理器的嵌入式處理器系統(tǒng)。
[0034] 處理器系統(tǒng)102還包括輸入/輸出(I/O)適配器108,其經(jīng)由I/O信道110直接 (即,沒有任何介入設(shè)備)或間接(即,通過至少一個中間設(shè)備)耦接至數(shù)據(jù)存儲系統(tǒng)120。 在各個實施例中,I/O信道可以采用已知或未來開發(fā)的通信協(xié)議中的任何一個或組合,所述 通信協(xié)議例如包括光纖信道(FC)、以太網(wǎng)FC(FCoE)、因特網(wǎng)小型計算機系統(tǒng)接口(iSCSI)、 傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)、高速外圍組件互連(PCIe)等。經(jīng)由I/O信道110傳 遞的I/O操作(IOP)包括處理器系統(tǒng)102從數(shù)據(jù)存儲系統(tǒng)120請求數(shù)據(jù)的讀取I0P、以及處 理器系統(tǒng)102請求數(shù)據(jù)在數(shù)據(jù)存儲系統(tǒng)120中的存儲的寫入Ι0Ρ。
[0035] 在所圖示的實施例中,數(shù)據(jù)存儲系統(tǒng)120包括接口 122,通過接口 122,數(shù)據(jù)存儲系 統(tǒng)120經(jīng)由I/O信道110接收IOP 102并對其做出反應(yīng)。接口 122耦接至具有關(guān)聯(lián)的快閃 控制器存儲器126 (例如,動態(tài)隨機存取存儲器(DRAM))的快閃控制器124 (例如,專用集成 電路(ASIC)或現(xiàn)場可編程門陣列(FPGA))??扉W控制器124還耦接至具有關(guān)聯(lián)的CPU存 儲器130 (例如,DRAM)的CPU 128,并且還耦接至諸如NAND閃存陣列140的非易失性存儲 器陣列。在利用FPGA實施快閃控制器124的實施例中,CPU 128可以在數(shù)據(jù)存儲系統(tǒng)120 的啟動期間編程并配置快閃控制器124。在啟動之后,在一般操作中,快閃控制器124經(jīng)由 I/O信道110和接口 122接收讀取和寫入Ι0Ρ,以讀取存儲在NAND閃存陣列140中的數(shù)據(jù) 和/或?qū)?shù)據(jù)存儲在NAND閃存陣列140中??扉W控制器124例如通過訪問NAND閃存陣列 140以從NAND閃存陣列140讀取所請求的數(shù)據(jù)或?qū)⑺埱蟮臄?shù)據(jù)寫入NAND閃存陣列140、 或者通過訪問與NAND閃存陣列140關(guān)聯(lián)的存儲器高速緩存(未圖示),來服務(wù)這些Ι0Ρ。
[0036] 快閃控制器124實施提供邏輯至物理地址轉(zhuǎn)換的快閃轉(zhuǎn)換層(FTL),以使得能夠 訪問NAND閃存陣列140內(nèi)的特定存儲器位置。一般而言,由快閃控制器124從諸如處理 器系統(tǒng)102的主機設(shè)備接收的IOP包含數(shù)據(jù)要被訪問(讀取或?qū)懭耄┧诘倪壿媺K地址 (LBA)、以及要被存儲至數(shù)據(jù)存儲系統(tǒng)120的寫入數(shù)據(jù)(在寫入IOP的情況下)。IOP還可 以指定要被訪問的數(shù)據(jù)的量(或尺寸)。也可以根據(jù)數(shù)據(jù)存儲系統(tǒng)120所支持的協(xié)議和特 征而傳遞其它信息。如本領(lǐng)域技術(shù)人員已知的,諸如NAND閃存陣列140中采用的NAND閃 存的NAND閃存被其構(gòu)造所限制,使得將可通過讀取或?qū)懭隝OP訪問的數(shù)據(jù)的最小顆粒固定 在單個閃存頁的尺寸,例如16千字節(jié)(kB)。由主機設(shè)備提供的LBA因此對應(yīng)于邏輯地址空 間內(nèi)的頁??扉W轉(zhuǎn)換層將此LBA轉(zhuǎn)換為被分配至NAND閃存陣列140中的對應(yīng)物理位置的 物理地址??扉W控制器124可以執(zhí)行地址轉(zhuǎn)換和/或在諸如轉(zhuǎn)換表(TT) 150的邏輯至物理 轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)中存儲邏輯與物理地址之間的映射,所述轉(zhuǎn)換表(TT) 150可以方便地存儲在 快閃控制器存儲器126中。
[0037] 如圖1中進(jìn)一步所示的,快閃控制器124可以維護(hù)一個或多個額外的數(shù)據(jù)結(jié)構(gòu),以 追蹤關(guān)于NAND閃存陣列140的信息,也可以在快閃控制器存儲器126中緩沖該數(shù)據(jù)結(jié)構(gòu)。 例如,這些數(shù)據(jù)結(jié)構(gòu)可以包括:擦除塊列表(EBL) 152,其識別NAND閃存陣列140中的已經(jīng) 被擦除的物理存儲器塊;一個或多個可用塊隊列(ABQ) 154,其識別NAND閃存陣列140中可 用于編程的物理存儲器塊;以及一個或多個塊條隊列(BSQ) 160,其包括保持具有適合于垃 圾收集的寫入數(shù)據(jù)的塊的塊條的一個或多個占用塊條隊列(OBSQ) 161、識別被選擇用于垃 圾收集的塊條的再定位(relocation)塊條隊列(RBSQ) 162、以及用于當(dāng)前沒有被分配數(shù)據(jù) 塊的塊條的自由塊條隊列(FBSQ) 163。在優(yōu)選實施例中,對于每個物理存儲器塊,所述一個 或多個ABQ 154識別該塊的健康等級,其中"健康"或"健康