基於寫入頻率將數據寫入不同的存儲設備的製作方法
2023-11-06 23:53:22 2
專利名稱:基於寫入頻率將數據寫入不同的存儲設備的製作方法
技術領域:
本發明涉及一種存儲器,更具體地涉及一種具有有限壽命的存儲器。
背景技術:
存儲器是制約現代企業計算系統的性能的重要方面之一。制約存儲器的一個方面 是許多類型的存儲器呈現出有限壽命的事實。例如,諸如快閃記憶體的非易失性存儲器的壽命隨 著每次被擦除和重寫而減少。經過長時間的使用以及數以千計的擦除和重寫,這樣的快閃記憶體 會變得越來越不可靠。一種用於減緩存儲器壽命減少的通用的現有技術是均衡損耗(wear leveling)。 均衡損耗使得存儲設備內的塊以粗略相等的次數被擦除和寫入。這避免了一個塊被頻繁地 使用、達到壽命末期而必須停止使用的情形。這樣會減小整個設備的存儲容量。儘管存儲 設備可以具有備用的塊,但是這些備用的塊會被用盡而使設備的存儲容量降低,這會使得 存儲設備不可以使用。存儲器供應商通常會保證存儲器一定百分比的預期壽命。例如,快閃記憶體供應商可以 保證在100,000個編程和擦除周期(即,耐久性)之後,根據超出的錯誤校正要求(error correction requirement),小於的塊將不能使用。在這種情況下,錯誤校正要求可以 被設置為校正快閃記憶體設備的每512位元組的單比特錯誤。一些近來開發的設備具有更低的耐久 性。這些設備需要更大的錯誤校正要求。此外,存儲器的塊的壽命可以變化。因此,使用均衡多個程序擦除周期的損耗均 衡,存儲設備只在特定百分比(例如,1%)的塊運作不良時才達到壽命末期。然而,包含在 存儲設備中的大多數塊仍是可用的。因此,我們需要解決與現有技術相關聯的這些和/或其他的問題。
發明內容
本發明提供了一種用於基於寫入頻率將數據寫入不同存儲設備的系統、方法以及 電腦程式產品。在操作中,確定寫入數據的頻率。此外,基於該頻率從多個不同類型的存 儲設備中選擇要寫入數據的存儲設備。
圖1示出了根據一個實施例的用於增加存儲器的多個塊的壽命的方法。圖2示出了根據另一實施例的用於增加存儲器的多個塊的壽命的技術。圖3示出了根據另一實施例的用於增加存儲器的多個塊的壽命的方法。圖4示出了根據一個實施例的用於基於寫入頻率將數據寫入不同存儲設備的方 法。圖5示出了實施有前述各個實施例的各個體系結構和/或功能(functionality) 的示例性系統。
具體實施例方式圖1示出了根據一個實施例的用於增加存儲器的多個塊的壽命的方法100。如圖 所示,確定影響存儲器的多個塊的壽命的至少一個因子。參見操作102。另外,基於該至少 一個因子選擇多個塊中要進行寫入的塊。參見操作104。在本說明書的上下文中,存儲器的壽命可以包括任意的持續時間,在該持續時間 期間內,存儲器呈現出任意期望的可用性的等級。例如,在各個實施例中,這種壽命可以包 括,但不限於,期望的壽命、實際的壽命、估計的壽命等。此外,可用性的等級可以指任何與 可用性有關的參數,例如仍能使用的組件(例如,塊、單元等)的百分比、存儲器或其組件的 可靠性、和/或有關該問題的其他任何參數。此外,在各個實施例中,存儲器可以包括但不限於機械存儲設備(例如,磁碟驅 動器等)、固態存儲設備(例如,動態隨機存取存儲器(DRAM)、快閃記憶體等)、和/或其他的任何 存儲設備。在存儲器包含快閃記憶體的情況下,該快閃記憶體可以包括但不限於單層單 元(SLC)設備、 多層單元(MLC)設備、NOR快閃記憶體、NAND快閃記憶體、MLC NAND快閃記憶體、SLC NAND快閃記憶體等。在一個實施 例中,非易失性存儲設備可以包括每單元單比特的NOR快閃記憶體、每單元多比特的NOR快閃記憶體、每 單元單比特的NAND快閃記憶體以及每單元多比特的NAND快閃記憶體中的至少一個。此外,在本說明書的上下文中,因子可以包括能夠直接或間接地影響存儲器的塊 的壽命的任意因子。例如,在各個實施例中,因子可以包括但不限於在涉及存儲器的至少 一個塊的讀取操作期間的錯誤(如,檢測到的、被校正的等)數量、在涉及存儲器的至少一 個塊的編程操作與讀取操作之間的持續時間、對存儲器的至少一個塊進行擦除的次數、擦 除存儲器的至少一個塊所需要的持續時間、對存儲器的至少一個塊進行編程所需要的持續 時間、對存儲器的至少一個塊進行編程所需要的重試次數、存儲器的至少一個塊的頁的插 入讀取(intervening read)的數量、存儲器的相鄰頁、結構和組織中的插入讀取的數量、和 /或符合上述定義的其他任何因子。作為選擇,可存儲存儲器的塊的使用歷史。在這種情況 下,可以利用該使用歷史來確定因子。現在,將闡述關於各個可選體系結構和特徵的更具說明性的信息,前述的架構可 以利用這些體系結構和特徵而根據用戶的期望決定實施或不實施。應當特別注意,所闡述 的以下信息是出於示例性目的的,而不應解釋為以任何方式進行限定。以下特徵中的任何 一個可以選擇性地與所描述的其他特徵之外的特徵進行結合或不結合。圖2示出了根據另一實施例的用於增加存儲器的多個塊的壽命的技術200。作為 選擇,本技術200可以在圖1的詳細內容的背景下實施。當然,技術200還可以在任何期望 的環境下實施。還應當注意,在本說明書中可以應用前述的定義。如圖所示,可以監控存儲器的多個塊204的耐久性202。在這種情況下,圖2中的 條形表示對特定塊204的寫入數量。在本說明書的上下文中,耐久性202指的是對存儲器 的每個塊204的寫入和擦除周期的數量。因而,耐久性202對應於存儲器的塊204的使用。 在一個實施例中,可以監控並記錄寫入和/或擦除的數量。通過監控塊204的寫入數量,可以確定哪個塊被利用得更頻繁。在一個實施例中, 可以使用該監控來確定任何一個塊204的寫入數量是否超過閾值206。另外,這樣的監控可 以使使用均等,從而當某些塊的寫入數量達到閾值206時,可以利用低於閾值206的其他塊進行寫入。例如,可以改變塊被寫入和重複利用的順序,以將塊之間的耐久值的任意差值最 小化。在操作中,可以確定和/或監控影響存儲器的多個塊204的壽命的至少一個因子。 然後,可以基於該至少一個因子從多個塊中選擇要進行寫入的塊。在各個實施例中,從壽命 觀點來看,可存在指示塊204的狀態的多個因子。在一個實施例中,因子可以包括與每個塊 204相關聯的校正錯誤的數量。例如,這種校正錯誤可以對應於數據的讀取。在各種情況下,該因子可以受多個其他因子影響。例如,校正錯誤的數量會受從編 程操作到讀取的過程中逝去的時間的多少影響,以及會受執行了多少次讀取影響。另外,對 塊進行擦除和編程的次數也會影響校正錯誤的數量。當然,許多其他的因子也會影響校正錯誤的數量。在各個實施例中,因子可以對應 於塊204的使用時段、寫入的頻率、操作的速率、允許的操作的總數量以及壽命的持續時間 等。當然,闡述這些示例性方面只是為了示意性目的,因為因子可以對應於會影響存儲器的 塊的預期壽命的任何方面。在一個實施例中,可以利用分數來確定是否改變塊204被寫入和重複利用的順 序。例如,每個塊204均可以具有基於至少一個因子的對應的分數函數。可以利用該分數 函數來確定每個塊204的分數。可以利用該分數將塊204的分數函數的值之間的差最小化。作為選擇,該分數可 以基於影響塊204的壽命的一個因子。作為另一種選擇,該分數可以基於影響塊204的壽 命的多個因子。例如,在兩個存儲器的塊的情況下,一個存儲器的塊可能具有高於閾值206的分 數,而一個可能具有低於閾值206的分數。在這種情況下,每個分數均可以對應於影響塊的 壽命的至少一個因子。應當注意,分數可以對應於任何數量的因子,如以上所提到的。在一個實施例中,分數可以表現為對應於與塊的預期壽命相關的至少一個因子的 值。在這種情況下,值之間的差會影響塊的預期壽命之間的差。因而,可以將兩個塊均等化。在一個實施例中,上述均等化可以包括利用(例如,寫入)低於閾值206的塊,而 不利用高於閾值206的塊。該均等化會一直進行,直到兩個塊對應於相等的或接近相等的 值的點。在該點處,可以增加閾值206,從而可以利用任一存儲塊。初始,所有的塊均低於閾值206。當塊超過閾值206時,其可以被標記或以其他方 式被確定為超過閾值206的塊。然後,可以利用低於閾值206的塊204,直到他們達到或超 過閾值206。該操作可以一直繼續,直到所有低於閾值206的塊204均被用盡。在該點處,可以 設置新的閾值,使得所有現有的塊204均低於該新的閾值。這種操作可以在塊204的整個
壽命中重複。作為選擇,在對塊204之間的變化進行均等化期間,可以利用自由空間(free space)的計數百分比(count percentage),以將被擦除和寫入的塊204的總數最小化。另外,可以利用各種其他的技術來將被擦除和寫入的塊的總數最小化,並對塊之間的變化進 行均等化(即,塊收回(block reclamation))。此外,可以利用各種其他的均等化技術來對 塊204之間的變化進行均等化。在一個實施例中,可以在系統中利用多個存儲器模塊。在這種情況下,存儲器模塊可以包括具有不同壽命的存儲器模塊。這樣,系統的總的存儲器壽命可以達到多個存儲器的壽命的總和,與受限於最小壽命的存儲器模塊相反。在一個實施例中,壽命估計器模塊可以用於經由存儲器總線接收通信至系統控制 器的命令。假定執行通過總線接收到的命令,則壽命估計器模塊可以計算估計的壽命。在 一個實施例中,可以利用壽命估計器來監控寫入的次數和/或影響存儲器塊204的壽命的 其他因子。嚴格地講,作為選擇,可以利用壽命估計器模塊設置閾值206。當然,可以使用各種技術來設置閾值206。在一個實施例中,閾值206可以是預定 的閾值。在另一實施例中,閾值206可以是動態設置的。作為選擇,閾值可以直接相關於與 至少一個存儲器的塊204相關聯的設備的壽命(例如,預期的、期望的等)。在一個實施例中,可以利用內部存儲設備多餘的容量,以降低成本並提高性能。在 這樣的實施例中,基於與其壽命相關聯的任何因子,數據可以在獨立的存儲設備之間移動。 例如,可以涉及一種情形,多個存儲設備中的第一存儲設備包含一組數據,該數據相對於多 個存儲設備中的第二存儲設備的數據被更頻繁地重寫。在這種情況下,在超過與壽命相關 聯的至少一個因子的閾值之後,這樣的數據可以從第一存儲設備移動到第二存儲設備,因 此第一存儲設備或其一個或多個塊/模塊可以用於存儲較不頻繁寫入的數據或從進一步 的使用中收回。所以,可以恰當地分布存儲設備壽命,以避免一個存儲設備或存儲設備的一部分 在相對於一組的其他存儲設備的過早的時間點出現故障。當然,本技術不但可以應用在不 同存儲設備之間,還可以應用在其部分中。因此,任何存儲組件的壽命均可以以這種方式管理。圖3示出了根據另一實施例的用於增加存儲器的多個塊的壽命的方法300。作為 選擇,本方法300可以在圖1 圖2的功能的背景下實施。當然,方法300還可以在任何期 望的環境下執行。還應當注意,在本說明書中可以應用前述的定義。如圖所示,閾值被定義成使得存儲器的所有塊均低於閾值。參見操作302。在一個 實施例中,閾值可以對應於塊的使用。例如,當使用塊時,與塊相關聯的使用值可以接近閾 值。在另一實施例中,閾值可以對應於與一組塊的預期壽命相關聯的至少一個其他因子。例如,閾值可以對應於塊的校正錯誤的數量。在這種情況下,當塊被使用時,與塊 相關聯的校正錯誤的數量的值可以接近閾值。當然,閾值可以對應於影響塊的壽命的任意 數目的因子。一旦初始閾值被確定(其中塊低於該閾值),就確定塊是否需要被收回。參見操作 304。例如,如果因子指示一個塊或一組塊高於閾值或已經不勻稱地用於其他的塊,則可以 確定該塊或該多個塊需要被收回。在本說明書的上下文中,塊收回(block reclaiming)(該動作可以由無用單元收 集、讀取幹擾、擦去、校正錯誤的數量或其他事件觸發)指的是基於至少一個因子對塊之間 的變化進行均等化。例如,在各個實施例中,塊收回可以包括基於在讀/寫過程中檢測 到的錯誤的數量、在讀/寫過程中校正的錯誤的數量、擦除塊的時間長度、對塊進行編程的 時間長度、在編程過程中利用的條目(entry)的數量、頁的插入讀取的數量、鄰近頁的插入 讀取的數量、塊的擦除和編程周期的數量、和/或任何其他因子,對塊之間的變化進行均等 化。
如果確定塊需要被收回,則將塊的集合中低於閾值的塊分配為被寫入。參見操作 306。例如,可以在存儲器操作中利用低於閾值的塊,這與塊的集合中高於閾值的塊或多個 塊相反。一旦將塊的集合中低於閾值的(多個)塊分配為被寫入,就確定了任意塊是否超 過閾值。參見操作308。例如,塊的集合中低於閾值的塊可以被寫入,直到確定該塊超過閾 值。如果確定塊超過閾值,則將該塊放置在對應於超過閾值的塊的塊集合中。參見操 作310。如果該塊沒有超過閾值,則該塊可以保留在低於閾值的塊的集合中並可以繼續利用。然後,確定所有低於閾值的塊是否均已用盡。參見操作312。換言之,確定對應於 低於閾值的塊的塊集合中的所有塊是否已經包含在對應於高於閾值的塊的塊集合中。如果所有低於閾值的塊均已用盡,則設置新的閾值,並且所有現有的塊均被定義 為低於新的閾值。參見操作314。一旦設置了新的閾值,就可以再次確定塊是否需要被收 回。作為選擇,這可以在存儲器的塊的整個壽命期間內繼續。應注意,可以基於各種標準設置新的閾值和初始閾值。例如,可以基於塊的預期使 用來設置閾值。在一個實施例中,該閾值可以是預定的閾值。在另一實施例中,可以基於存 儲器的塊的使用來確定該閾值。圖4示出了根據一個實施例的用於基於寫入頻率將數據寫入不同存儲設備的方 法400。作為選擇,本方法400可以在圖1 圖3的功能和體系結構的背景下實施。當然, 方法400還可以在任何期望的環境下執行。還應當注意,在本說明書中可以應用前述的定 義。如圖所示,確定寫入數據的頻率。參見操作402。此外,基於該頻率從多個不同類 型的存儲設備中選擇要寫入數據的存儲設備。參見操作404。在一個實施例中,該選擇可以是基於閾值進行的。例如,如果寫入數據的頻率超過 閾值,則可以選擇特定存儲設備來寫入數據。作為選擇,不同類型的存儲設備可以包括SLC 設備和MLC設備、具有不同耐久性的兩個MLC、SLC和DRAM、MLC和DRAM。當然,在各種其他 的實施例中,不同類型的存儲設備可以包括任意數目的設備,包括各種不同類型的存儲器。在另一實施例中,至少兩個不同類型的存儲器可以集成在一個設備中。例如,快閃記憶體 MLC和SLC可以組合在一個設備上。作為另一示例,兩種不同類型的快閃記憶體MLC可以集成在一 個設備中。在又一示例中,可以以編程方式確定一個設備中的存儲器類型的混合。在一種 情況下,可以確定與SLC快閃記憶體相關聯的存儲設備的一部分,並且可以確定與MLC快閃記憶體相關聯 的存儲設備的一部分。作為具體的示例,可以確定來自特定應用或程序的數據以高頻率寫入。在這種情 況下,可以選擇SLC設備來寫入數據。另一方面,來自特定應用或程序、或磁碟的特定位置、 或來自特定存取模式的數據以低頻率寫入。在這種情況下,可以選擇MLC設備來寫入數據。 當然,這僅僅是示例,因為基於確定的頻率可以選擇任意數量的設備。在一個實施例中,壽命估計器模塊可以用於經由存儲器總線接收通信至系統控制 器的命令。假定通過總線接收到的(多個)命令被執行,則壽命估計器模塊可以監控頻率 並計算估計的壽命。當然,頻率可以以各種方式進行確定,並且不局限於由壽命估計器模塊進行確定。
應當注意,在各個實施例中,前述實施例中所提到的存儲器可以包括機械存儲設 備(例如磁碟驅動器,包括SATA磁碟驅動器、SAS磁碟驅動器、光纖通道磁碟驅動器、IDE磁 盤驅動器、ATA磁碟驅動器、CE磁碟驅動器、USB磁碟驅動器、智慧卡磁碟驅動器、MMC磁碟 驅動器等)和/或非機械存儲設備(例如,基於半導體的存儲器等)。例如,這樣的非機械 存儲器可以包括易失性或非易失性存儲器。在各個實施例中,非易失性存儲設備可以包括 快閃記憶體(例如,每單元單比特的NOR快閃記憶體、每單元多比特的NOR快閃記憶體、每單元單比特的NAND閃 存、每單元多比特的NAND快閃記憶體、每單元多層(level)和/或多比特的NAND快閃記憶體、大塊快閃記憶體、 阻性存儲器(resistive memory)、相變存儲器、磁性存儲器等)。儘管本文闡述了存儲器的 多個示例,但是應當注意,各種原理可以應用於任何類型的存儲器,存儲器的壽命會由於在 其上執行各種操作而減少。圖5示出了實施有前述各個實施例的各個體系結構和/或功能的示例性系統500。 例如,示例性系統500可以代表在上述一些實施例中闡述的計算機。此外,上述各個裝置均 可以是系統500的組件。如圖所示,提供了一種系統500,包括連接至通信總線502的至少一個主機處理器 501。系統500還包括主存儲器504。控制邏輯(軟體)和數據存儲在主存儲器504中,主 存儲器可以採取隨機存取存儲器(RAM)的形式。系統500還可以包括圖像處理器506和顯示器508 (即,計算機監視器)。系統500 還可以包括輔助存儲器510。輔助存儲器510包括例如硬碟驅動器和/或以軟盤驅動器、磁 帶驅動器、光碟驅動器等為代表的可移動存儲驅動器。可移動存儲驅動器以已知的方式從 可移動存儲模塊讀取數據和/或將數據寫入可移動存儲模塊。電腦程式、或計算機控制邏輯算法可以存儲在主存儲器504和/或輔助存儲器 510中。當執行這種電腦程式時,使能系統500以執行各個功能。主存儲器504、輔助存 儲器510和/或任何其他的存儲器是計算機可讀介質的可行性示例。在一個實施例中,之前各圖的體系結構和/或功能可以在主機處理器501、圖像處 理器506、輔助存儲器510、能夠容納主處理器501和圖像處理器506的至少一部分的集成 電路(未示出)、晶片組(即,被設計用於運行並作為用於執行相關功能的模塊進行銷售的 一組集成電路等)、和/或用於該問題的任何其他的集成電路的上下文中實施。進一步地,之前各圖的體系結構和/或功能可以在通用計算機系統、電路板系統、 專用於娛樂目的的遊戲控制臺系統、專用系統、和/或其他任何期望的系統的上下文中實 施。例如,系統500可以採取桌上型計算機、膝上型計算機、和/或其他任何類型的邏輯電 路的形式。進一步地,系統500可以採取其他各種設備的形式,包括但不限於個人數字助 理(PDA)設備、行動電話設備、電視等。此外,儘管未示出,但是為了通信的目的,系統500可以連接至網絡(例如,電信 網、區域網(LAN)、無線網、諸如網際網路的廣域網(WAN)、對等網路、電纜網絡等)。儘管上文已經描述了各個實施例,但是應理解,這些實施例只是以示例的方式給 出,而並不進行限定。因此,優選實施例的寬度和範圍不應局限於任何上述的示例性實施 例,而應當只根據以下的權利要求及其等同替換物對其進行限定。
權利要求
一種方法,包括確定數據寫入的頻率;以及基於所述頻率從多個不同類型的存儲設備中做出選擇以寫入所述數據。
2.根據權利要求1所述的方法,其中,所述選擇進一步基於閾值。
3.根據權利要求1所述的方法,其中,所述方法進一步包括確定閾值。
4.根據權利要求3所述的方法,其中,如果所述頻率超過所述閾值,則將所述數據寫入 到第一類型的存儲設備。
5.根據權利要求4所述的方法,其中,所述第一類型的存儲設備包括單層單元(SLC)存 儲設備。
6.根據權利要求4所述的方法,其中,如果所述頻率沒有超過所述閾值,則將所述數據 寫入到第二類型的存儲設備。
7.根據權利要求4所述的方法,其中,所述第一類型的存儲設備包括多層單元(MLC)存 儲設備。
8.根據權利要求1所述的方法,其中,所述頻率由壽命估計器模塊監控。
9.根據權利要求8所述的方法,其中,所述壽命估計器模塊計算所述存儲設備的估計壽命ο
10.根據權利要求8所述的方法,其中,所述壽命估計器模塊基於存儲命令計算所述存 儲設備的估計壽命。
11.根據權利要求1所述的方法,其中,所述存儲設備包括機械存儲設備。
12.根據權利要求11所述的方法,其中,所述機械存儲設備包括磁碟驅動器。
13.根據權利要求1所述的方法,其中,所述存儲設備包括固態存儲設備。
14.根據權利要求13所述的方法,其中,所述固態存儲設備包括快閃記憶體。
15.根據權利要求14所述的方法,其中,所述快閃記憶體包括NAND快閃記憶體。
16.根據權利要求1所述的方法,其中,所述存儲設備中的至少一個存儲設備包括位於 同一存儲設備上的單層單元(SLC)快閃記憶體和多層單元(MLC)快閃記憶體。
17.根據權利要求16所述的方法,其中,所述方法進一步包括確定所述至少一個存儲 設備的與所述單層單元(SLC)快閃記憶體相關聯的部分和所述至少一個存儲設備的與所述多層 單元(MLC)快閃記憶體相關聯的部分。
18.根據權利要求1所述的方法,其中,所述存儲設備中的至少一個存儲設備包括位於 同一存儲設備上的兩種不同類型的單層單元(SLC)快閃記憶體設備。
19.根據權利要求1所述的方法,其中,所述存儲設備包括易失性存儲器。
20.根據權利要求1所述的方法,其中,所述存儲設備包括非易失性存儲器。
21.一種在計算機可讀介質上實施的電腦程式產品,包括用於確定數據寫入的頻率的計算機代碼;以及基於所述頻率從多個不同類型的存儲設備中做出選擇以寫入所述數據的計算機代碼。
22.一種裝置,包括電路,用於確定數據寫入的頻率,並且基於所述頻率從多個不同類型的存儲設備中做 出選擇以寫入所述數據。
23.根據權利要求22所述的裝置,其中,所述電路連接在系統與存儲器之間。
全文摘要
本發明提供了一種用於基於寫入頻率將數據寫入不同的存儲設備的系統、方法以及電腦程式產品。在操作中,確定寫入數據的頻率。此外,基於頻率從多個不同類型的存儲設備中選擇要寫入數據的存儲設備。
文檔編號G06F12/00GK101874239SQ200880116826
公開日2010年10月27日 申請日期2008年10月23日 優先權日2007年11月19日
發明者拉多斯拉夫·達尼拉克 申請人:三德動力有限公司