TWI406295B - 快閃記憶體系統中內務作業之排程 - Google Patents
快閃記憶體系統中內務作業之排程 Download PDFInfo
- Publication number
- TWI406295B TWI406295B TW095102267A TW95102267A TWI406295B TW I406295 B TWI406295 B TW I406295B TW 095102267 A TW095102267 A TW 095102267A TW 95102267 A TW95102267 A TW 95102267A TW I406295 B TWI406295 B TW I406295B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- block
- blocks
- memory
- command
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Stored Programmes (AREA)
- Supply, Installation And Extraction Of Printed Sheets Or Plates (AREA)
- Manufacture Of Iron (AREA)
- Luminescent Compositions (AREA)
- General Factory Administration (AREA)
Description
本發明一般係關於非揮發性快閃記憶體系統之作業,而更明確言之係關於在此類記憶體系統中實施諸如磨損平衡之類內務作業之技術。本文所引用的一切專利案、專利申請案、文章及其他公告案之全部內容皆出於各種目的而以引用的方式併入於此。
如今有許多商業上成功的非揮發性記憶體產品供使用,尤其係以小型的可移除卡或嵌入模組為形式,其採用形成於一或多個積體電路晶片上的快閃EEPROM(電子可抹除可程式化唯讀記憶體)單元之一陣列。該記憶體系統內包括一記憶體控制器(一般但並不一定處於一單獨的積體電路晶片上)以與該系統所連接之一主機介接並控制該卡片內該系統陣列之作業。此一控制器一般包括一微處理器、某一非揮發性唯讀記憶體(ROM)、一揮發性隨機存取記憶體(RAM)以及一或多個特殊電路,例如在程式化與讀取資料期間當資料通過該控制器時,依據資料來計算一錯誤校正碼(ECC)的特殊電路。其他記憶卡及嵌入模組不包括此一控制器,但與其連接的主機包括提供該控制器功能之軟體。卡片形式的記憶體系統包括一與該主機外側上一插座匹配之連接器。另一方面,不希望移除嵌入主機內的記憶體系統。
市售記憶卡中有些包括一控制器的記憶卡,其售賣商標如下:CompactFlash(CF)、多媒體(MMC)、安全數位(SD)卡、MiniSD、MicroSD、及TransFlash。不包括一控制器之一記憶體系統之一範例係SmartMedia卡。所有此等卡皆可從SanDisk公司(本專利案之受讓人)購得。此等卡中每一卡皆與其所連接(但可移除)的主機裝置形成特定的機械及電性介接。另一類小的手持式快閃記憶體裝置包括經由一標準的通用串列匯流排(USB)連接器與一主機介接之快閃驅動器。SanDisk公司提供的此類裝置之商標為Cruzer。用於卡片的主機包括個人電腦、筆記型電腦、個人數位助理(PDA)、各種資料通信裝置、數位相機、蜂巢式電話、可攜式聲頻播放器、汽車聲音系統及同類設備。快閃驅動器與任何具有一USB插座之主機(例如,個人及筆記型電腦)一同工作。
有兩個一般的記憶體單元陣列架構已應用到商業中,即非或(NOR)與非與(NAND)。在典型的非或陣列中,記憶體單元係連接於相鄰的位元線源極與汲極擴散區之間,該等擴散區沿行方向延伸,且控制閘極係連接至沿單元列延伸的字元線。一記憶體單元包括至少一儲存元件,該元件係定位於該源極與汲極之間的單元通道區域之至少一部分之上。因而,該等儲存元件上已程式化的電荷位準控制該等單元之一作業特徵,於是可藉由向已定址的記憶體單元施加適當的電壓來讀取該等單元。美國專利案第5,070,032、5,095,344、5,313,421、5,315,541、5,343,063、5,661,053及6,222,762號中說明此類單元、其在記憶體系統中的應用及其製造方法之範例。
非與陣列利用兩個以上記憶體單元(例如16或32個)之串列串,其連同一或多個選擇電晶體連接在個別位元線與一參考電位之間,以形成單元行。字元線延伸橫跨大量此等行內的單元。在程式化期間讀取與驗證一行內之一個別單元,此係藉由將該串內的其餘單元硬開啟而使得流過一串的電流取決於該已定址單元中所儲存電荷之位準來實行。美國專利案第5,570,315、5,774,397、6,046,935、6,373,746、6,456,528、6,522,580、6,771,536及6,781,877號中提出非與架構陣列之範例及其作為一記憶體系統之部分的作業。
目前快閃EEPROM陣列的電荷儲存元件,如先前所引用的專利案中所述,最常見的係導電浮閘,其通常係由導電摻雜的多晶矽材料形成。可用於快閃EEPROM系統之一替代類型之記憶體單元利用一非導電介電材料替代該導電浮閘來以非揮發性方式儲存電荷。由氧化矽、氮化矽與氧化矽(ONO)形成的三層介電質係夾入一導電控制閘極與該記憶體單元通道上一半導電基板的一表面之間。藉由將電子從該單元通道注入該氮化物(在該氮化物中該等電子受到截獲並儲存於一受限區域中)而程式化該單元,而藉由將熱電洞注入該氮化物來抹除該單元。Harari等人的美國專利申請公告案第2003/0109093號中說明採用介電儲存元件的數個特定單元結構與陣列。
如同在大多數積體電路應用中一樣,對於快閃EEPROM記憶體單元陣列,亦存在縮小用於實施特定積體電路功能所需的矽基板面積之壓力。一直需要增加一矽基板之給定面積中可儲存的數位資料量,以便增加給定尺寸記憶卡及其它類型封裝的儲存容量,或同時增加容量而縮小尺寸。用於增加資料儲存密度之一方式係每一記憶體單元及/或每一儲存單元或元件儲存多個位元的資料。此係藉由將一儲存元件電荷位準電壓範圍之一視窗分成兩個以上的狀態而實現。使用四個此類狀態允許每個單元儲存兩位元資料,八個狀態允許每個儲存元件儲存三位元資料,以此類推。美國專利案第5,043,940及5,172,338號中說明使用浮閘的多狀態快閃EEPROM結構及其作業,而前面提到的美國專利申請公告案第US 2003/0109093號中說明使用介電浮閘之結構。一多狀態記憶體單元陣列之選定部分亦可基於各種原因在二狀態(二進制)中作業,其作業方式如美國專利案第5,930,167及6,456,528號中之說明。
典型快閃EEPROM陣列的記憶體單元係分成一起抹除的單元之離散區塊。即,區塊係抹除單元,即可同時抹除的最小數目之單元。每個區塊一般儲存一或多個頁面的資料,該頁面係程式化與讀取的最小單元,但是在不同的子陣列或平面中可對多個頁面平行地加以程式化或讀取。每個頁面一般儲存一或多個區段的資料,該區段的尺寸係由該主機系統定義。遵循針對磁碟驅動器而建立之一標準,一範例性區段包括512個位元組的使用者資料,還加上特定數目位元組的關於使用者資料及/或該等使用者資料儲存區塊之管理資訊。此類記憶體一般係配置為在每個區塊內有16、32或更多頁面,且每個頁面儲存一或僅數個主機區段的資料。
為了增加將使用者資料程式化入該記憶體陣列中以及從其讀取使用者資料期間的平行度,一般將該陣列分成子陣列(常稱為平面),該等子陣列包含其自己的資料暫存器與其他電路以允許平行作業,從而可將多個區段的資料同時程式化到數個或所有平面中的每一平面或從數個或所有平面中的每一平面同時讀取多個區段的資料。單一積體電路上之一陣列可在實體上分成多個平面,或每個平面可由一單獨的一或多個積體電路晶片形成。美國專利案第5,798,968及5,890,192號中說明此一記憶體實施方案之範例。
為了進一步有效地管理記憶體,可將區塊鏈接在一起,以形成虛擬的區塊或元區塊。即,將每一元區塊定義為包括來自每一平面的一區塊。美國專利案第6,763,424號中說明該元區塊之使用。藉由從一邏輯塊位址進行轉換來建立一元區塊之實體位址,作為用於程式化及讀取資料之一目的位址。同樣,一元區塊的所有區塊係一起抹除。採用此類大區塊及/或元區塊來進行作業的記憶體系統中的控制器執行若干功能,包括從一主機接收的邏輯塊位址(LBA)與該記憶體單元陣列內的實體塊號碼(PBN)之間的轉換。一般藉由該區塊位址內的偏移來識別該等區塊內的個別頁面。位址轉換常常包括使用邏輯塊號碼(LBN)與邏輯頁面的中間項。
通常的做法係,將某些額外的區塊保持於一已抹除區塊集區中來操作大區塊或元區塊系統。當更新小於一區塊容量的一或多頁資料時,通常將已更新的頁面從該集區寫入一抹除區塊,並接著將未改變頁面之資料從原始區塊複製到抹除集區區塊。前面提到的美國專利案第6,763,424號中說明此技術之變化。隨時間過去,由於重新寫入及更新主機資料檔案,因此許多區塊在終結時會有數目相對較少的頁面包含有效的資料而其餘頁面則包含不再具現時性的資料。為了能夠有效地使用該陣列的資料儲存容量,有效資料之邏輯上相關的頁面會不時地從多個區塊中的各片段聚集在一起,並且結合在一起成為較少數目的區塊。此程序通常稱為「廢料收集」。
當區塊內有相當數量的資料變成廢料時,亦可精簡一單一區塊或元區塊內的資料。此舉包括將該區塊之其餘有效資料複製進一空白的抹除區塊並接著抹除該原始區塊。因此該複製區塊包含來自該原始區塊之有效資料還加上已抹除的儲存容量(先前為作廢資料所佔據)。該有效資料一般亦係以邏輯順序配置於該複製區塊內,從而使得該資料之讀取更加容易。
用於該記憶體系統作業的控制資料一般係儲存於一或多個保留區塊或元區塊中。此類控制資料包括作業參數,例如程式化及抹除電壓、檔案目錄資訊及區塊分配資訊。在一給定時間該控制器操作該記憶體系統所需要數量的資訊亦係儲存於RAM中,並接著在更新時寫入回到該快閃記憶體。該等控制資料之頻繁更新引起該等保留區塊之頻繁精簡/或廢料收集。若有多個保留區塊,則可同時觸發二或多個保留區塊之廢料收集。為避免此一耗時作業,在該主機可容納該等保留區塊時,自動啟動保留區塊之廢料收集以應付後面的需要。2004年8月13日申請的序列號為10/917,725之美國專利申請案中說明此類佔先資料重新定位技術。亦可在使用者資料更新區塊變得接近填滿時在該區塊上實施廢料收集,而並非一直等到其變成完全填滿以致觸發一必須在能將該主機所提供的資料寫入該記憶體之前即完成之廢料收集作業。
在某些記憶體系統中,亦將實體的記憶體單元分組成二或多個區域。一區域可為該實體記憶體或記憶體系統之任何已分割的子集,會有一特定範圍的邏輯塊位址映射到該子集中。例如,可將能夠儲存64百萬位元組資料的記憶體系統分成四個區域,並且每個區域儲存16百萬位元組的資料。接著,亦可將邏輯塊位址的範圍分成四個群組,向該等四個區域中每一區域之實體塊指派一群組。在一典型的實施方案中,邏輯塊位址受到限制,以至於絕不會將每一區塊位址的資料寫入到該等邏輯塊位址所映射到之一單一實體區域的外部。在一分成多個平面(子陣列)(各具有其自己的定址、程式化與讀取電路)的記憶體單元陣列中,每個區域較佳的係包括來自多個平面的區塊,一般係來自每一平面之數目相同的區塊。區域主要係用來簡化諸如邏輯至實體轉換之位址管理,從而得到較小的變換表,用於保存此等表格所需的較少RAM記憶體,以及用於定址記憶體之目前活動區域之較快存取時間,但因為其限制性質而可能導致磨損平衡達不到最佳。
個別快閃EEPROM單元將一定數量的電荷儲存於一電荷儲存元件或單元中(該單元表示一或多個位元的資料)。儲存元件的電荷位準控制其記憶體單元的臨界電壓(一般表示為VT
),其係用作讀取該單元的儲存狀態之一依據。通常將一臨界電壓視窗分成若干範圍,該記憶體單元之二或多個儲存狀態之每一狀態對應一範圍。此等範圍係由保護帶分開,該等保護帶包括一標稱感測位準,此位準允許決定個別單元的儲存狀態。因電荷對相鄰或其他相關記憶體單元、頁面或區塊中執行的程式化、讀取或抹除作業之干擾而使得此等儲存位準偏移。因此,一般藉由該控制器來計算錯誤校正碼(ECC),並將錯誤校正碼與所程式化的主機資料一起儲存,且係在讀取期間用來驗證資料並視需要執行一定位準的資料校正。而且,偏移電荷位準在干擾作業使其完全偏移出其已定義的範圍並因此引起讀取錯誤資料之前,可不時地恢復回到其狀態範圍的中心。例如,美國專利案第5,532,962、5,909,449及2003年10月3日申請的序列號為10/678,345之美國專利申請案中說明此程序,其係稱為資料再新或擦除。
快閃記憶體單元之回應性一般隨時間與該等單元之抹除及重新程式化次數成函數關係而變化。認為此情形係由於每一抹除及/或重新程式化作業期間截獲於一儲存元件介電層內的少量電荷(其隨時間而累積)而產生。此舉一般導致該等記憶體單元變得不太可靠,並且隨著該等記憶體單元老化而可能需要更高的電壓來抹除及程式化。該有效臨界電壓視窗(可透過其而將該記憶體狀態程式化)亦可因該電荷保留而減小。例如,美國專利案第5,268,870號中對此進行了說明。結果,該等記憶體單元之有效使用期受限制,即記憶體單元區塊在其係映射出該系統之前僅經歷一預設數目之抹除及重新程式化循環。快閃記憶體區塊所經歷的理想循環數目取決於該等記憶體單元之特定結構、用於該等儲存狀態之臨界視窗數目、一般隨著每一單元的儲存狀態數目增加而增加的該臨界視窗之範圍。依據此等及其他因素,使用期循環數目可能低至10,000而高至100,000甚或數十萬。
若認為需要不斷追蹤該等個別區塊的記憶體單元所經歷的循環數目,則可保存針對每一區塊或針對一組區塊中每一區塊之一計數,每該計數會在每次抹除該區塊時遞增,如前面提到的美國專利案第5,268,870號中所說明。可將此計數儲存於每一區塊中,如該案之說明,或與其他管理資訊一起儲存於一單獨的區塊中,如美國專利案第6,426,893號中所說明。除用於在一區塊達到一最大的使用期循環計數時將該區塊映射出該系統外,隨著該等記憶體單元區塊老化,該計數還可較早地用於控制抹除及程式化參數。而且,並不保存該循環數目之一精確計數,美國專利案第6,345,001號說明一種在發生一隨機或假亂數情況時更新該循環數目之一壓縮計數之技術。
該循環計數亦可用於讓一系統之記憶體單元區塊在其使用期屆滿前的使用變均勻。美國專利案第6,230,233號、美國專利申請公告案第US 2004/0083335號以及下列申請於2002年10月28日的美國專利申請案中說明若干不同的磨損平衡技術:序列號為10/281,739(現公佈為WO 2004/040578)、10/281,823(現公佈為US 2004/0177212)、10/281,670(現公佈為WO 2004/040585)及10/281,824(現公佈為WO 2004/040459)。磨損平衡之主要優點係防止某些區塊達到其最大循環計數,而因此須映射出該系統,然而其他區塊鮮少使用。藉由將該循環數目合理地均勻散佈於該系統的所有區塊,可令該記憶體之完全容量維持一延長的週期且具有良好的性能特徵。亦可在不保持記憶體區塊循環計數之條件下實施磨損平衡,如2004年11月15日申請的序列號為10/990,189之美國專利申請案所說明。
在磨損平衡之另一方法中,藉由讓該等邏輯至實體區塊位址轉換一次遞增一或數個區塊,來讓區塊的實體區域之間的邊界橫跨該記憶體單元陣列而逐漸遷移。美國專利申請公告案第2004/0083335號中對此進行了說明。
記憶體單元的若干區塊經歷的抹除及重新程式化循環數目遠遠多於該記憶體系統中的其他區塊,此一主要原因係該主機在一相對較少的邏輯塊位址不斷重新寫入資料區段。此發生於該記憶體系統的許多應用中,在此等應用中該主機不斷更新該記憶體中所儲存的內務資料(例如,檔案分配表(FAT)及類似資料)之特定區段。該主機之特定使用亦能導致對若干邏輯塊之使用者資料重新寫入比對其他區塊之寫入要頻繁得多。回應從該主機接受一命令以將資料寫入一指定的邏輯塊位址,該等資料係寫入一抹除區塊集區之若干區塊之一區塊。即,重新寫入該資料之實體塊與同一邏輯塊位址的原始資料所駐留之實體塊並不相同,該邏輯塊位址係重新映射進該抹除區塊集區之一區塊。然後立即(或者作為一後面的廢料收集作業之部分)抹除包含該原始資料(現為有效資料)之區塊,並接著將該區塊放進該抹除區塊集區。結果,當處於僅若干邏輯塊位址的資料更新得比其他區塊快得多時,該系統之相對較少的實體塊以更高的速度循環。當然,需要在該記憶體系統內提供讓該等實體塊在遇到此類很不均勻的邏輯塊位址時所受磨損變均勻之能力,原因如上所述。
在執行從該主機系統(該記憶體系統係可操作性地連接至該主機系統)接收之一命令期間而且在一設定用於執行該命令的時間預算內實施內務作業。除讓該記憶體系統能夠執行該命令而需要的任何內務作業外,還可實施一與所接收命令的執行無直接關係或非該命令實施所必需的內務作業。不必在每次執行一命令時實施此類無關的內務作業,而實際上可僅限於在僅某些命令執行期間實施此等內務作業。例如,要用過長時間來完成之一無關的內務作業可能會等到接收一命令才開始實施,在此情況下有必要的時間可用,因為不需要實施一與該命令相關的內務作業來執行該命令。由於內務功能係作為主機命令執行之部分來實施,因此對於該主機是否將允許完成該等內務作業,只要其係完成於該主機所設定的已知時間預算內,便存在不確定性。
無關的內務作業之範例包括磨損平衡、擦除、資料精簡及廢物收集,包括佔先的廢料收集。除廢料收集或執行一命令所需要的任何其他內務作業外,該記憶體系統可實施一執行該命令所不需要的內務作業。例如,磨損平衡對於執行一寫入命令而言並非必需作業,但係方便地實施於執行此一命令期間,只要此時該預算內有時間實施此舉即可。藉由針對執行一命令(例如,資料寫入)之一主機逾時或類似方式,或藉由在該記憶體系統可能投入的應用中的寫入或讀取期間一特定的最小所需資料傳輸速度之存在,來建立該時間預算。在一特定範例中,在無足夠時間來實施多個內務作業之情況下,在此等寫入命令執行期間實施磨損平衡,其中不需要進行廢料收集。
本發明之額外方面、優點及特徵包括於下面關於其示例性範例之說明中,此說明應結合附圖。
首先參考圖1A,一快閃記憶體包括一記憶體單元陣列與一控制器。在圖示範例中,二個積體電路裝置(晶片)11與13包括一記憶體單元陣列15與各種邏輯電路17。該等邏輯電路17透過資料、命令及狀態電路而與一單獨晶片上之一控制器19介接,且還向該陣列13提供定址、資料傳輸與感測、以及其他支援。記憶體陣列晶片之數目可從一至許多個,此取決於所提供的儲存容量。該控制器與部分或整個陣列可替代地組合到一單一積體電路晶片上,但此做法目前並非一經濟的替代方案。依賴主機來提供該控制器功能之一快閃記憶體裝置包含的組件比該記憶體積體電路裝置11及13略多一點。
一典型控制器19包括:一微處理器21;一唯續記憶體(ROM)23,其主要用於儲存韌體;以及一緩衝器記憶體(RAM)25,其主要用於暫時儲存寫入該等記憶體晶片11及13或從該等記憶體晶片11及13讀取之使用者資料。透過連接31,電路27與該(等)記憶體晶片介接,而電路29與一主機介接。此範例中藉由採用專用於計算代碼的電路33來計算一ECC來決定資料之完整性。當使用者資料從主機傳輸至快閃記憶體陣列以作儲存時,該電路根據資料計算一ECC,並將該代碼儲存於記憶體中。當隨後從記憶體讀取該等使用者資料時,該等使用者資料再次通過電路33,該電路藉由相同的演算法計算ECC,並將該代碼與已計算出且與資料一起儲存的ECC作比較。如果其相符,則可確認資料的完整性。如果其不同,則根據所用的特定ECC演算法,可識別並校正該等錯誤位元,最高達該演算法所支援的數目。
圖1A之記憶體之連接31與一主機系統(圖1B給出其一範例)之連接31'匹配。圖1A之主機與記憶體之間透過介面電路35來進行資料傳輸。一典型的主機還包括一微處理器37、一用於儲存韌體碼之ROM 39以及RAM 41。其他電路及子系統43常包括一高容量資料儲存磁碟機、用於一鍵盤之介面電路、一監視器等,此取決於特定的主機系統。此類主機之一些範例包括桌上型電腦、膝上型電腦、手持式電腦、掌上型電腦、個人數位助理(PDA)、MP3及其他聲頻播放器、數位相機、視訊攝影機、電子遊戲機、無線及有線電話裝置、答錄機、語音記錄器、網路路由器等等。
圖1A之記憶體可實施為一小型封閉記憶卡或快閃驅動器,其包含的控制器及其所有記憶體陣列電路裝置形式上可與圖1B之主機以可移除方式連接。即,匹配的連接31與31'允許一卡斷開並移動至另一主機,或藉由將另一卡連接至主機而加以取代。或者,該等記憶體陣列裝置11及13可以係封閉於一單獨的卡內,該卡可以電性及機械方式與另一包含該控制器與連接31之卡連接。作為另一替代方案,圖1A之記憶體可以係嵌入圖1B之主機內,其中永久地形成該等連接31及31'。在此情形下,通常可將該記憶體連同其他組件包含於該主機之一外殼內。
本文之發明技術可實施於具有各種特定組態之系統中,圖2至6中給出該等系統組態之範例。圖2說明一記憶體陣列之一部分,該部分中的記憶體單元係分組成若干區塊,每一區塊中的單元皆可作為單一抹除作業之部分而一起抹除,且一般係同時抹除。一區塊係最小的抹除單元。
圖2之個別記憶體單元區塊之尺寸可變化,但一商業上實用的形式在一個別區塊中包括一單一的資料區段。圖3說明此一資料區段之內容。使用者資料51一般係512位元組。除使用者資料51之外,還有管理資料,其包括依據使用者資料計算出的ECC 53、與該區段資料及/或該等區段程式化於其中的區塊相關的參數55以及依據該等參數55計算出之一ECC 57以及任何其他可能包括的管理資料。或者,可從所有該等使用者資料51與參數55來計算單一的ECC。
該等參數55可包括與區塊所經歷的程式化/抹除循環之數目相關的一數量,此數量在每一循環或某一循環數目之後得以更新。但將此經歷數量用在磨損平衡演算法時,規則地將邏輯塊位址重新映射至不同的實體塊位址,以使所有該等區塊的使用量(磨損)均勻。經歷數量的另一用法係根據不同區塊所經歷的循環數目來改變電壓以及其他程式化、讀取及/或抹除參數。
該等參數55亦可包括指派給該等記憶體單元的每一儲存狀態之位元值之指示,稱為其「旋轉」。此點亦會對磨損平衡產生有利的影響。亦可將一或多個旗標包括於指示狀況或狀態的參數55中。亦可將用於程式化及/或抹除該區塊的電壓位準之指示儲存於該等參數55內,此等電壓會隨著該區塊所經歷的循環數目與其他因素的變化而得以更新。該等參數55之其他範例包括該區塊內任何有缺陷單元之識別、映射進此實體塊的該區塊之邏輯位址以及在主要區塊有缺陷的情形下任何替代區塊的位址。用在任何記憶體系統中的參數55之特定組合將依據設計而變化。而且,可將部分或全部管理資料儲存於專用於此一功能的區塊中,而非儲存於包含使用者資料的區塊或管理資料所屬的區塊中。
圖4所示之一多區段區塊與圖2之單一資料區段區塊不同。一範例性區塊59仍然係最小的抹除單元,其包含四個頁面0至3,其中每一頁面係最小的程式化單元。一或多個主機區段資料係儲存於每一頁面中,通常還一同儲存至少包括依據該區段之資料計算出的ECC之管理資料,並且可能以圖3之資料區段為形式。
重新寫入整個區塊的資料通常包括將新的資料程式化於一抹除區塊集區之一抹除區塊中,接著抹除原始區塊並將其放置於該抹除集區中。當已更新之資料少於區塊之全部頁面時,通常將已更新的資料儲存於已抹除區塊集區中一抹除區塊之一頁面中,並將其餘未改變頁面中的資料從原始區塊複製到新的區塊中。接著抹除該原始區塊。或者,可將新資料寫入一更新區塊(其與資料正接受更新的區塊相關),並讓該更新區塊盡可能長時間地保持開啟以接收對該區塊的任何其他更新。當該更新區塊必須關閉時,在一廢料收集作業中將其與該原始區塊中的有效資料複製進一單一的複製區塊。此等大區塊管理技術常包括將已更新的資料寫入另一區塊之一頁面,而不從該原始區塊移動資料或抹除資料。由此產生具有相同邏輯位址的多個資料頁面。藉由某一方便的技術來識別最近的資料頁面,例如作為區段或頁面管理資料中的一欄位而記錄的程式化時間。
圖5說明另一多區段區塊配置。在此,整個記憶體單元陣列係在實體上分成二個或更多平面,圖中說明四個平面0至3。每一平面係一記憶體單元子陣列,其具有本身的資料暫存器、感測放大器、定址解碼器等,以便很大程度上可獨立於其他平面而作業。所有該等平面皆可提供於一單一的積體電路裝置上或多個裝置上。圖5之範例性系統中的每一區塊皆包含16個頁面P0至P15,每一頁面具有一、二或多個主機資料區段以及一定管理資料之容量。該等平面可以係形成於一單一的積體電路晶片上或多個晶片上。例如,若形成於多個晶片上,則該等平面之二平面可形成於一晶片上而另二平面形成於另一晶片上。或者,一晶片上的記憶體單元可提供該等記憶體平面之一,而將四個此類晶片一起使用。
圖6說明另一記憶體單元配置。每一平面皆包含大量單元區塊。為增加作業的平行度,邏輯上鏈接不同平面內的區塊,以形成元區塊。圖6將一此類元區塊說明為由平面0之區塊3、平面1之區塊1、平面2之區塊1及平面3之區塊2形成。可邏輯定址每一元區塊,而該記憶體控制器指派並不斷追蹤形成該等個別元區塊之區塊。該主機系統較佳的係與該記憶體系統介接,其資料單元等於該等個別元區塊之容量。舉例而言,圖6之此一邏輯資料區塊61係藉由一邏輯塊位址(LBA)來識別,該位址係藉由該控制器而映射成組成該元區塊的各區塊之實體塊號碼(PBN)。將該元區塊之所有區塊一起抹除,而來自每一區塊之頁面較佳的係同時程式化及讀取。
有許多不同的記憶體陣列架構、組態及特定單元結構可用於實施上面結合圖2至6所說明的記憶體。圖7顯示該非與類型之一記憶體陣列之一區塊。串聯連接的記憶體單元之大量的行定向串係連接於一電壓VSS的一共用源極65與位元線中BL0至BLN的一位元線之間,該等位元線進而與電路67(包含位址解碼器、驅動器、讀取感測放大器及類似裝置)連接。明確言之,一此類串包含串聯連接於選擇電晶體77與79(處於該等串之相反端)之間的電荷儲存電晶體70、71、72及74。在此範例中,每一串皆包含16個儲存電晶體,但亦可以為其他數目。字元線WL0至WL15延伸橫跨每一串之一儲存電晶體且係連接至電路81(包含該等字元線之位址解碼器及電壓源驅動器)。線83及84上的電壓控制該區塊中所有串一起經由其選擇電晶體與該電壓源65及/或該等位元線BL0至BLN之連接。資料及位址來自該記憶體控制器。
該區塊之每一列電荷儲存電晶體(記憶體單元)皆包含一或多個頁面,每一頁面之資料係一起程式化及讀取。向該字元線(WL)施加一適當電壓以程式化或讀取沿該字元線的記憶體單元之資料。還向其與該等感興趣的單元連接之位元線(BL)施加適當的電壓。圖7之電路顯示沿一列的所有單元係一起程式化及讀取,但一般係沿一列(作為一單元)每隔一單元進行程式化及讀取。在此情況下,一次採用(未顯示)二組選擇電晶體來形成每隔一單元的可操作之連接,每隔一單元形成一頁面。向其餘字元線施加的電壓係選擇成使其個別儲存電晶體變成導電。在程式化或讀取一列中的記憶體單元之進程中,在未選定列上先前儲存的電荷位準可能受到干擾,因為向位元線施加的電壓可能影響與其連接的串中所有的單元。
圖8中概括性地說明上述類型的記憶體系統之一特定架構及其作業。一記憶體單元陣列213(為便於說明而大大簡化)包含區塊或元區塊(PBN)P1至Pm,此取決於該架構。該記憶體系統從該主機接收的資料之邏輯位址係一起分組成具有一個別邏輯塊位址(LBA)之邏輯群組或區塊L1至Ln。即,該記憶體系統之整個連續的邏輯位址空間係分成多個位址群組。該等邏輯群組L1至Ln中每一群組所定址之資料數量與該等實體塊或元區塊中每一區塊之儲存容量相同。該記憶體系統控制器包括一功能215,該功能215將該等群組L1至Ln中每一群組之邏輯位址映射進該等實體塊P1至Pm中之一不同的區塊。
包括的記憶體實體塊比該記憶體系統位址空間中存在的邏輯群組更多。在圖8所示範例中,包括四個此類額外的實體塊。在所提供之此簡化說明中基於說明本發明應用之目的,該等額外區塊中的二區塊在寫入資料期間係用作資料更新區塊,而另二個額外區塊組成一抹除區塊集區。一般基於各種目的而包括其他額外區塊,若一區塊變成有缺陷,則將一區塊作為一冗餘區塊。一般使用一或多個其他區塊來儲存供該記憶體系統控制器用來操作該記憶體的控制資料。一般不針對任何特定目的而指定任何特定區塊。實際上,該映射215常常改變個別邏輯群組的資料所映射到的實體塊,此等實體塊在該等區塊P1至Pm之任何區塊之中。該等實體塊中該些充當更新及抹除集區區塊之實體塊亦在該記憶體系統作業期間在該等實體塊P1至Pm中到處遷移。該等實體塊中該些當前指定為更新及抹除集區區塊之區塊識別項係由該控制器來加以保存。
現在將說明將新資料寫入圖8所表示的記憶體系統。假定邏輯群組L4之資料係映射進實體塊P(m-2)。還假定區塊P2係指定為一更新區塊且係完全抹除而可供自由使用。在此情況下,當該主機命令將資料寫入該群組L4內之一邏輯位址或多個連續的邏輯位址時,將該資料寫入該更新區塊P2。然後,將儲存於該區塊P(m-2)中具有與該新資料相同邏輯位址之資料作廢並以儲存於該更新區塊L4中的新資料來取代。
在一隨後時間,可將來自該等P(m-2)與P2區塊之此等資料結合(廢料收集)成一單一的實體塊。此係藉由將來自區塊P(m-2)之其餘有效資料與來自該更新區塊P2之新資料寫入該抹除區塊集區中另一區塊(例如,區塊P5)來實現。然後抹除該等區塊P(m-2)及P2,以便接下來充當更新或抹除集區區塊。或者,可將該原始區塊P(m-2)中的其餘有效資料與該新資料一起寫入該區塊P2,若此舉可行,則由此抹除該區塊P(m-2)。
為了讓獲得一給定資料儲存容量所必需達到的記憶體陣列尺寸最小化,將額外區塊之數目保持為一最小值。該記憶體系統控制器一般允許同時存在一有限數目(此範例中為二個)的更新區塊。進一步,將來自一更新區塊的資料與來自原始實體塊的其餘有效資料結合之廢料收集一般會延遲盡可能長時間,因為隨後該主機可能將其他新資料寫入該更新區塊之相關實體塊。然後由同一更新區塊接收額外資料。由於廢料收集要花時間而且若因此延遲另一作業則可能會對該記憶體系統之性能產生不利影響,因此並非在其每次可以實施時皆予以實施。從該等二區塊將資料複製進另一區塊可能花相當大數量的時間,尤其係在該等個別區塊之資料儲存容量很大之情況下(此係一趨勢)。因此,當該主機命令寫入資料時,常常會發生無閒置或空置的可用更新區塊來接收該資料之情形。在此情況下,回應該寫入命令而對一現有的更新區塊作廢料收集,以便接下來能夠接收來自該主機的新資料。已達到該廢料收集所能延遲時間之限制。
圖9說明當二個更新區塊皆未閒置及抹除而正在更新與其中任一更新區塊皆不相關之一區塊的資料時一記憶體系統之作業。在此情況下必須對其中一更新區塊作廢料收集,以使得有一已抹除的空白更新區塊可用來接收來自該主機的新資料。在圖9之範例中,正在寫入二個區段或其他單元1及2的資料。該主機寫入命令包括該資料傳輸長度,在此情況下為二單元,接續其後的係該資料。如圖9之時序圖之第二線中所示,在接收到一命令後,立即將此等二資料單元一個接一個連續地傳輸給該記憶體系統控制器緩衝器(圖9之第一線),因為在此等資料單元之間未保持記憶體系統忙碌信號(圖9之第三線)。若獲得判定,則該記憶體系統忙碌信號促使該主機在其與該記憶體系統進行通信時暫停。
若該記憶體系統在時間t4與t5之間判定該忙碌信號,如圖所示,則允許該記憶體系統在必要時實施廢料收集以執行該寫入命令,並接著寫入所接收的資料。該主機在其忙碌信號活動時不向該記憶體系統傳送另一命令或任何其他資料。如圖9中最後的線中所示,此點使得在需要建立一新的更新區塊時有時間進行廢料收集。該控制器使用資料單元1及2之傳輸用時來啟動廢料收集,但此時間並不足以完成此舉。因此該記憶體系統拖延該主機直至完成該廢料收集及該更新區塊之資料寫入。在完成該等資料寫入後於時間t5結束該忙碌信號,然後允許該主機與該記憶體系統進一步通信。
但是,該記憶體系統可判定的忙碌信號之長度受限制,因為大多數主機允許該記憶體系統在傳輸一資料單元後使用一有限而固定數量之時間來執行一寫入命令。若該忙碌信號保持活動的時間比此時間更長,則某些主機可重複該資料命令而其他主機可完全放棄該程序。該記憶體系統之作業方式不超過主機之此逾時週期,該記憶體係設計成採用此逾時週期來發揮功能。一普通的主機逾時週期係250毫秒。在任何情況下,皆可因該記憶體系統對該忙碌信號之判定而延遲一主機與連接該主機之一記憶體系統之間命令及資料的傳輸,因此需要將其應用限制於延遲對於該記憶體系統的總良好性能而言很重要之情況。
除該主機逾時週期外,該記憶體系統之作業在許多應用中亦受一必須加以保持的最小資料流動速度之限制。此點可能需要讓該記憶體系統所判定的個別忙碌信號之持續時間小於該主機逾時所允許的最大持續時間。
同樣,磨損平衡作業較佳的係排程為避免過度影響其他作業及總記憶體系統性能。如上面提到的專利案及申請案中所說明,磨損平衡包括改變邏輯群組位址至實體記憶體區塊之映射,以便令該磨損(抹除循環之數目)變均勻。將不斷重新寫入的一系列邏輯位址從一實體塊(其循環速度高於該平均速度)重新定向成另一實體塊(其具有一較低速度之循環歷史)。有許多磨損平衡演算法,其中某些演算法監視該邏輯群組重新寫入或個別實體塊使用之循環計數,而其中另一些演算法不使用此類計數但以其他方式分配該等記憶體區塊所經歷的磨損。
一般地,一磨損平衡作業還包括在各區塊之間的資料傳輸(交換),而此係該作業中最耗時的部分。藉由該記憶體系統控制器來不時地啟動磨損平衡交換,以校正該等記憶體區塊使用中一不斷累積的失衡情形。磨損平衡之目的係藉由避免一或數個區塊循環的次數超出該記憶體之有用使用期以延長該記憶體之使用期。若失去對數個(有時僅係一個)記憶體區塊之使用,記憶體區塊便可令該記憶體系統變得無法操作。
磨損平衡一般係後台實施。即,區塊的重新映射及任何資料傳輸發生於該主機閒置時。此情形之優點係不會對該記憶體系統之性能產生不利影響,但其缺點係不會防止該主機在該記憶體系統正在實施磨損平衡時傳送一命令,而甚至可能會在磨損平衡交換期間斷開該記憶體系統之電源。因此,在本文所說明的範例中,不時地實施前台的磨損平衡,以作為資料寫入的部分。
再次參考圖9,取代廢料收集的係,當不需要經由廢料收集來執行該寫入命令時,可替代地實施磨損平衡。由於廢料收集與磨損平衡皆包括一區塊資料之傳輸,因此該等二作業可能花費同樣數量的時間。當然,如上所述,在必要時將實行廢料收集以獲得一更新區塊,以便能夠執行當前的寫入命令。但是,若有一更新區塊可用於該新資料,而不需要實施廢料收集,則可替代地利用該時間來實施磨損平衡。在一特定技術中,每次需要實施一磨損平衡交換時該磨損平衡演算法便會作出指示,而在不需要廢料收集之下一寫入作業期間發生該交換。
圖10說明採用圖9之時序在圖8之記憶體系統中進行廢料收集及寫入資料之一範例。存在二個更新區塊1與2,但是當任一區塊皆不可用於寫入當前資料單元時,關閉其中之一而開啟來自該抹除區塊集區之另一區塊以接收該資料。此係由於在此範例中僅允許二個更新區塊。若更新區塊1係藉由僅接收一普通邏輯群組內的資料更新而鏈結至區塊A,則更新區塊1不可用於儲存某一其他邏輯群組之資料。更新區塊2可具有相同的限制。因此,藉由圖10所說明的廢料收集作業來關閉更新區塊1,其中將該區塊A與其更新區塊1中每一區塊中的有效資料複製到一抹除區塊B。然後抹除區塊A及更新區塊1,從而又提供二個抹除集區區塊。然後,可開啟其中之一區塊作為新的第二更新區塊(標注為更新區塊3),然後將來自該記憶體控制器緩衝器之資料儲存於該區域中。
但是,在圖8之記憶體系統中執行一寫入命令並不總需要實行該廢料收集。例如,在可將該資料寫入一開啟的更新區塊時不需要實施此作業。在此一情況下,可實施一磨損平衡作業來替代廢料收集,如圖9所示,此時還存在一更新區塊可供該磨損平衡作業期間使用。圖11進一步說明此情況。在此範例中,磨損平衡包括將資料從一源區塊A複製到一更新區塊1。然後將來自該控制器緩衝器之資料寫入更新區塊2。然後抹除該源區塊A,而該源區塊A變成可用作一抹除集區區塊。圖11之範例假定儲存於源區塊A中的邏輯塊已接受指派給其的更新區塊1。由於使用中的系統更新區塊一般很少,因而此係一特例。更一般的係,在該源區塊A中的資料可能經歷一磨損平衡交換之前,需開啟一新的更新區塊。在此情況下,開啟一新的更新區塊一般包括關閉另一更新區塊,此舉一般還包括廢料收集。
藉由圖12之一操作性流程圖來說明依據圖9所示時序圖之一作業之一特定範例,其中若無需實行廢料收集來允許實施該寫入作業,則替代地實施磨損平衡。作為對從該主機接收一寫入命令(在一步驟225中)之回應,在一步驟227中從該主機接收欲寫入的資料,並將該資料儲存於該記憶體系統控制器緩衝器記憶體內。在一步驟229中,決定是否需要廢料收集來釋放一更新區塊以用於當前的寫入作業,而若回答為肯定,則實施廢料收集。該等步驟227與229之順序可以反向,或者如圖9所示可針對該時間之一部分而同時實施。步驟229還包括在實施廢料收集之情況下遞增一廢料收集計數器。該計數器先前已經重新設定,而後面參考此計數來決定是否發生廢料收集。
在下一步驟231中,詢問一磨損平衡交換是否正等待處理。即,決定是否存在啟動磨損平衡所必需的條件。如上面引用的專利案及專利申請案所示,有大量不同的磨損平衡演算法,而其作業係由不同事件來觸發。在本文所說明的磨損平衡具體實施例中,每隔記憶體區塊或元區塊的N個抹除循環便啟動磨損平衡。舉例而言,數字N可約為50。儘管此係起點,但如下所述,當磨損平衡必須延遲相當長的時間週期時該決定變得略更複雜。例如,當大量連續的寫入作業中每一作業皆需要廢料收集時,可發生此類延遲。在此情況下,不存在任何可用於磨損平衡的記憶體系統忙碌週期。例如,此情形發生於若干次連續寫入不同邏輯群組中各單一資料單元之時。
若磨損平衡正等待處理,則下一步驟233檢查該廢料收集計數器之計數。若該計數非零,則此指示在該步驟229中實施一廢料收集作業,而因此沒有足夠的時間來同時實施磨損平衡。因此跳過磨損平衡。但若該計數為零,則此指示不發生廢料收集,因此可有足夠的時間來實施磨損平衡。但首先,藉由一步驟235來決定是否有一閒置或空置的更新區塊用於該磨損平衡。若無,則跳過磨損平衡,因為將不會有足夠的時間在實施獲得一更新區塊所必需的廢料收集之同時實施該磨損平衡。但若有一可用的更新區塊,則在一步驟237中,依據上面識別的磨損平衡專利案及專利申請案中的一者所說明或下面所說明之一演算法,來實施磨損平衡。一般地,一磨損平衡作業包括開啟用於磨損平衡之可用更新區塊、將來自一源區塊之所有資料複製進開啟的更新區塊,然後關閉該更新區塊並更新該位址變換表以將該邏輯群組之資料從該源區塊重新映射到該更新區塊(目的區塊)。
然後,在一步驟239中,將接收進入該記憶體系統控制器緩衝器之資料寫入該快閃記憶體之一區塊或元區塊。然後,在一步驟241中將該廢料收集計數器設定回為零,以供圖12流程圖之程序在下一資料寫入期間使用。
現在將說明啟動一磨損平衡交換之範例性方法。此係圖12的步驟231之部分。基本上,每隔N次抹除該系統之一區塊,便啟動磨損平衡。為監視此點,在該系統層級保持區塊抹除次數之一計數。但藉由此技術,不必個別地針對該等區塊而保持該抹除循環數目之計數。
如圖12之流程圖所反映,在一給定的資料寫入循環期間可能不執行一等待處理的磨損平衡交換,因為此時沒有足夠的時間來實行此舉。在圖9及12之範例中,若需要實行廢料收集來執行該寫入命令,則將跳過一等待處理的磨損平衡。若該記憶體系統經歷對每一單一區段之一系列資料寫入,其中該等區段具有不連續的邏輯位址,則在每一寫入期間實施廢料收集。在此情況及其他情況下,延遲一等待處理的磨損平衡作業。此類延遲是否發生取決於該記憶體系統之使用方式。但若其經常發生,則該磨損平衡變得不太有效。較佳的係,磨損平衡以系統區塊抹除之規則間隔發生,以產生最有利的效果。
因此,當磨損平衡已延遲任何相當長時間時,需要對磨損平衡交換之間的間隔作出不同於標稱的N區塊抹除間隔之改變。保持已錯過的磨損平衡作業數目,而然後可以比隔開N區塊抹除更短的間隔將其個別地提交等待處理。圖13A、13B及13C之曲線顯示在磨損平衡之延遲已明顯超過N個抹除循環後再「追上」的三個不同方式。此等曲線之水平軸顯示總區塊系統抹除計數,且每隔N個計數便有一垂直標記。該等垂直軸指示從最後一磨損平衡作業起系統抹除循環之數目(WL計數)。在此等範例中,圖13A、13B及13C中的每一圖皆指示「交換已完成」以標注可發生一磨損平衡交換之週期。名義上,隨著WL計數數目增加到N(橫跨該等曲線之虛線),將發生磨損平衡而該WL計數回到零。例如,此係顯示於圖13A之271。
在圖13A之一抹除計數273處,當該WL計數到達N後,所排程的磨損平衡不會發生。對於遠遠更多抹除循環(約為N的一半)而言,不會發生磨損平衡,直至達到抹除計數275(此時條件允許發生磨損平衡)。然後,在經過一小於N(約N的一半)的間隔後,再次於抹除計數277實施磨損平衡,以便能夠追上。但因此會有一很長的週期,在此週期中磨損平衡無法發生。由於該很長的週期,因此在允許的條件,所有(在此情況下為四)錯過的磨損平衡交換皆會儘快發生,其開始於抹除計數279而此後每一寫入命令期間繼續進行。此技術之一優點係簡單,但若其過去經歷了大量錯過的磨損平衡交換,則可能對該記憶體系統之性能產生不利影響。
圖13B說明用於處置有很長一段時間不發生磨損平衡的情況之一改良方式。在此範例中,在該段較長週期後,第一磨損平衡交換發生於281,並進行N的一半抹除計數之連續作業。在此範例中還彌補錯過的磨損平衡交換,但並非一旦可再次實行磨損平衡便儘快地實施此等磨損平衡交換(如圖13A),圖13B之技術係藉由某一手段將所彌補的磨損平衡交換分離開至少一半N。此技術使得磨損平衡交換的分佈更均勻。
圖13C中說明一較佳技術。實際上並不彌補所有錯過的磨損平衡交換,該等交換之間的間隔略有減小,但其中另一些交換根本未獲補償。283處的磨損平衡之發生抹除計數為N的一半(從最後一計數算起),從而彌補該延遲以便能夠執行最後的磨損平衡,正如圖13A及13B之範例一樣。但是,若此後在相同的較長週期中無磨損平衡交換,則繼287處的第一磨損平衡交換之後,在此週期過後於285處發生之一第二磨損平衡交換經歷N的一半之抹除循環,但後續的交換以正常的N個抹除循環間隔發生。錯過的磨損平衡交換中僅有數個交換未獲彌補。藉由此技術來發起一磨損平衡交換之一特定標準係,當該WL計數已累加超過N後發生一磨損平衡交換時,後來的第二交換發生之抹除計數為N的一半。但此後的磨損平衡交換發生於正常的N抹除計數間隔,而無論錯過多少交換。
圖13A、13B及13C提供針對不能夠實施磨損平衡的延長週期之三個不同處理方式,但並非此處理之唯一方式。
圖14至16說明用於實施一無需預先存在一更新區塊之一磨損平衡作業之一替代技術。如上所述,圖9之方法跳過該步驟235中在存在一閒置或空置的更新區塊之必備條件下對一等待處理的磨損平衡作業之執行。另一方面,在圖14之技術中,藉由一對應步驟235'所作出的無可用更新區塊之決定不會導致跳過一等待處理的磨損平衡作業。實際上,等待處理的磨損平衡作業係以一方式開始於當前寫入命令的執行期間,而此方式使其可在隨後一時間自動完成。在當前寫入命令期間花極少的時間開始該磨損平衡作業,從而允許在該忙碌週期期間亦實施廢料收集或另一耗時的內務功能。而且,無需實行其他任何作業,便可確保在一後續寫入命令執行期間完成已啟動的磨損平衡作業,因為其替代的係藉由一正常的廢料收集作業來完成。
若有一可用的更新區塊(步驟235'中的「是」,圖14),則在該當前寫入命令執行期間發生磨損平衡237',此對應於圖9之磨損平衡239。但是,若有限數目的記憶體系統更新區塊中無任何可用區塊,則圖14之步驟301至304將該磨損平衡作業設定為在一隨後時間完成。為在一記憶體系統中開啟一用於該磨損平衡交換(其限制一次可開啟的更新區塊數目)之一更新區塊,必須首先關閉一現有的更新區塊。此舉實行於步驟301,其中關閉一系統更新區塊,例如較佳的係關閉該等系統更新區塊中最近最少使用的區塊(LRU)。在下一步驟302中,開啟一抹除區塊作為用於此磨損平衡作業之一更新區塊。在下一步驟303中,將一第一頁面或元頁面(取決於該記憶體架構)的資料複製進來自該源區塊之剛開啟的更新區塊。在當前寫入命令執行期間僅需要複製此一頁面或元頁面,但若有可用時間則可複製的頁面或元頁面會更多。將來自該源區塊的所有資料複製到新的更新區塊所需要的時間量可能比在該當前寫入命令執行期間的可用時間更多,尤其係在區塊很大之情況下。因此,所實行的作業已足以將該磨損平衡交換設定成在該當前寫入命令執行後某一時間完成,較佳的係藉由從該源區塊複製最小數量的資料(較佳的係不超過該源區塊中資料的四分之一)。
作為一可選的最佳化方法,下一步驟304可迫使將具有該一頁面或元頁面資料之新的更新區塊識別為該等系統更新區塊中最近最少使用的區塊(LRU)。此更新區塊當然並非最近最少使用的區塊,因為其剛剛開啟。但是,由於將其指定為該LRU更新區塊,因此在下次需要開啟另一更新區塊時其將會關閉。該關閉程序包括將會發生的廢料收集,其係十分方便地藉由將來自該源區塊的其餘頁面複製進此區塊來執行。然後關閉此區塊,而開啟所需要的新更新區塊。因此,在該記憶體系統正常作業期間已完成該磨損平衡交換。一旦已設定該磨損平衡交換,便無需進行任何特殊的作業來完成該磨損平衡交換。
圖15藉由一時序圖來說明此程序。針對範例性資料單元1及2之當前寫入命令的執行發生於一間隔307期間。在一初始間隔309期間發生廢料收集(為使得一更新區塊可用於執行該寫入命令,此係必要之舉),接下來係一間隔311,在此間隔311期間如上面結合圖14之步驟301至304之說明而設定該磨損平衡作業。然後,在一間隔313期間將從該主機接收進該控制器緩衝器記憶體之資料單元1及2寫入該快閃記憶體。
在一後續間隔315期間,當下一寫入命令之執行發生而需要廢料收集以便提供一開啟的更新區塊時,該廢料收集317完成該磨損平衡交換。然後,在此範例中,在一間隔319期間將資料單元3及4寫入該快閃記憶體。
圖16中以一不同方式說明圖14及15之程序。從指定用於磨損平衡之源區塊複製一頁面或元頁面之資料,並將其複製進新開啟的更新區塊3(資料複製1)。假定一記憶體系統允許任一時間僅開啟二個更新區塊,則關閉更新區塊2以便能夠開啟更新區塊3。此係藉由圖14之步驟301至304在圖15之時間間隔307期間執行。然後,在圖15之時間間隔315期間,將來自該源區塊的其餘資料複製進該更新區塊3(資料複製2)。因此,已成為執行隨後寫入命令所必需作業之廢料收集317已完成早先設定的磨損平衡交換。
將一或多個頁面的資料複製進新的更新區塊,從而將該新的更新區塊設定用於隨後的廢料收集,而不必修改該廢料收集程序。該磨損平衡交換係以相當自動化的方式完成。或者,最初無需將任何資料複製進新更新區塊,而可以一旗標來標記該新更新區塊,該旗標還識別欲複製進該新更新區塊中的源資料區塊。然後可促使隨後發生該資料交換以回應該旗標。
圖17之時序圖說明完成相同的資料寫入及磨損平衡作業之一替代方法。在執行一單一的寫入命令期間於每一資料單元1、2及3傳輸後判定該記憶體忙碌信號。如上所述,對於此範例假定需要該廢料收集來獲得一更新區塊以執行該寫入命令,並接著需要另一廢料收集來實施磨損平衡。此舉不會採取圖14之區塊235'之「否」路徑,而所處置情況與其中所示情況不同。為寫入該資料而需實施的廢料收集321(圖17)發生於該第一忙碌信號期間。然後廢料收集323在該第二忙碌信號期間建立用於一磨損平衡交換之一更新區塊。然後在該第三忙碌信號期間發生完整的磨損平衡交換325,而隨後將該等資料單元1、2及3(未顯示)寫入該快閃記憶體。
在圖17之範例中發生與圖14至16之範例中相同的功能,但前者需要一額外的忙碌信號週期才能完成。因此,圖14至16之範例由於利用該廢料收集作業319來執行一寫入命令與實施大部分磨損平衡交換,因而獲得更佳的記憶體性能。
藉由圖14至16之範例,每次有一區塊等待處理時便可啟動一磨損平衡交換。因此,磨損平衡可每隔N個記憶體系統抹除循環而規則地發生,無須如其在上面第一項具體實施例中一樣跳過。因此,不需要如圖13A、13B及13C中所示者之類的程序。
圖18之一作業流程圖類似於圖12所示者,但一或多個內務任務之實施係實施於多個連續的忙碌週期期間。在一步驟243中接收一寫入命令後,在下一步驟245中計算一時間預算。即,此寫入作業中可用於實施內務作業之時間量一開始便已決定。此舉主要包括以下二項之相乘:(1)該記憶體系統忙碌信號之最大持續時間,其可以係判定於每一單元資料傳輸後,但不超過該主機逾時;(2)該資料傳輸之長度,表示為藉由當前寫入命令來傳輸的資料單元數目。此係由於該控制器可用於實施內務的時間與每一資料單元的傳輸一致且發生於每一資料單元傳輸後,在下述圖19及20中顯示得最清楚。
藉由下一步驟247,將該多個單元資料中之一第一單元資料接收進該控制器緩衝器記憶體,並且在需要有能力執行該寫入命令之情況下,在一步驟249中開始廢料收集。然後,可藉由一計數器或類似物之遞減,而從該步驟245所決定的時間預算中減去實施該廢料收集(未顯示)所要花費的時間量。
在一步驟251中,接收一第二單元資料,並接著決定是否亦可以在當前的資料寫入作業期間實施磨損平衡。藉由一步驟253,決定是否有一等待處理的磨損平衡交換;即是否存在依據正在使用的特定磨損平衡演算法來啟動磨損平衡之條件。若回答為肯定,則在下一步驟255中,決定存在一用於磨損平衡之閒置或空置的更新區塊。若存在此一區塊,便實施磨損平衡(步驟257),接下來接收當前寫入命令之任何其他資料單元(步驟259),並將當前寫入命令之資料單元寫入快閃記憶體(步驟261)。當然,若藉由該步驟253決定無任何等待處理的磨損平衡交換,則該處理直接由此進入該步驟259。
回到該步驟255,若無任何更新區塊準備好可供磨損平衡期間使用,則下一步驟263確認是否有時間實施必要的廢料收集來獲得此一更新區塊。由於在此範例中,廢料收集與磨損平衡皆係在從該主機接收一單元資料後來自該記憶體系統之一忙碌信號期間實施,因而此詢問係關於是否有一第三資料單元。若回答係肯定的,則接收該第三資料單元(步驟265)並實施必要的廢料收集(步驟267)。然後實施該步驟257之磨損平衡。但若沒有時間實施此額外的廢料收集,則該程序直接進行到步驟261。
作為圖18所示程序之一變化,可在該時間預算步驟245之後立即選擇該等廢料收集與磨損平衡交換中有時間來實施之作業。然後,可將其中有時間來實施之作業一起排程。在接收一寫入命令後,便立即獲得實施此舉所需要的所有資訊。若在一記憶體系統忙碌週期中不能完成一特定作業,則可將此作業排程為延伸跨度到另一忙碌週期。以此方式,此等及其他內務作業所用的最大時間量可獲得很高效率的利用。
圖19之時序圖顯示一特定的作業方法,其中廢料收集與磨損平衡皆發生於一寫入二資料單元1及2之單一作業期間。該記憶體系統在傳輸該第一資料單元後將其忙碌信號保持一足以實施必要的廢料收集之時間。一旦完成該廢料收集,便移除該忙碌信號,而該主機傳送該第二資料單元。然後,該記憶體系統在傳輸該第二資料單元後再次針對一足以實施磨損平衡之時間而判定該忙碌信號。然後將二個資料單元皆從該控制器緩衝器記憶體寫入該快閃記憶體之一區塊,此後停用該忙碌信號以向該主機指示該記憶體系統已準備好接收一新命令。圖19中,將一額外的忙碌週期插入該主機向該記憶體系統緩衝器之單元1與2的傳輸之間。此在上述圖17中亦係實際情況。
儘管二個不同的內務作業(即廢料收集與磨損平衡)係實施於連續的記憶體系統忙碌週期期間,但在圖19中的每一記憶體系統忙碌週期期間僅實施一此類作業。或者,尤其係在廢料收集及磨損平衡情況下,由於大部分時間係用於進行區塊之間的資料傳輸,因此廢料收集或磨損平衡交換皆可能分割於二個連續的週期之間。在該情況下,該資料複製之一部分係實行於該第一記憶體系統忙碌週期期間,並接著完成於該第二忙碌週期期間。
資料寫入作業常常包括傳輸遠遠多於二個單元(圖9及19所說明)的資料。此點為在該記憶體系統內實施廢料收集、磨損平衡或其他內務功能提供額外的機會。圖20就此舉出一範例,其中一主機寫入命令係針對四個資料單元1、2、3及4。該記憶體系統在需要或理想的情況下可於連續週期217、219及221實施一或多個廢料收集、磨損平衡或其他內務作業。為實施此舉並寫入該資料,該記憶體系統在每次資料傳輸後插入一忙碌信號週期。此舉之一優點係能夠於多個記憶體系統忙碌週期散佈地執行該內務功能,以便能減小或完全利用該等個別忙碌週期之持續時間。
在圖20之範例中,每一內務週期217、219及221之結束皆使得該忙碌信號變成不活動,進而促使該主機傳送下一單元資料。或者,取消對該忙碌信號之判定不必與該等週期217、219及221之結束同步。實際上,可以某一其他方式來控制該忙碌信號之持續時間以便能將包括該等週期217、219及221在內的時間用作一單一週期。在此情況下控制該忙碌信號判定之一方式係使其在每一實例中盡可能長直至完成所需作業,然後按需要以盡可能短的時間判定該忙碌信號。控制該忙碌信號之另一方式係使得每一忙碌信號皆具有或多或少相同的持續時間。一旦接收到該寫入命令便依據完成該(等)作業之所需時間除以藉由當前寫入命令來傳輸的資料單元數目來決定此相同的持續時間。
現在將說明可在圖12之步驟237及圖18之步驟257中執行之一特定的磨損平衡演算法。選擇一源區塊及一目的區塊。對於該等邏輯群組(圖8之211),一指標會始終遞增,以便選擇該源區塊。在一區塊經歷磨損平衡後,該指標按順序移動到下一邏輯群組,而該群組所映射進的實體塊係選擇為該源區塊。或者,對於該等實體塊,該指標可直接遞增。
若達到特定的額外標準,則將所指向的區塊選擇為該源區塊。該區塊需要包含主機資料,而若其係一包含記憶體系統控制資料之保留區塊(除結合圖8所說明者外)則其將不會被選中。此係由於保留區塊之使用性質導致其循環於整個記憶體而無須對其實施磨損平衡。該區塊在其具有一與其相關的開啟的更新區塊之條件下亦不會被選作一源區塊。一更新區塊之存在表示關於映射進該區塊的邏輯群組之資料兼含於該區塊與該更新區塊中。而且,當然,已由於有缺陷而映射出去之一區塊將不會被選作一源區塊。
若所指向的區塊基於此等或某些其他原因而不適合用作一源區塊,則令該指標按順序遞增至下一邏輯群組或實體塊,而同樣對照上述標準來測試此下一區塊。若此第二區塊未通過該測試,則指向並測試另一區塊。較佳的係將最大數目設置於在未找到一合適區塊時所考慮的區塊數目。然後放棄當前的磨損平衡交換,而在下一磨損平衡交換期間恢復搜尋。
從該等已抹除的集區區塊中選擇該目的區塊,一般係為了用來儲存來自該主機的資料而設置之下一區塊。但是替代儲存主機資料的係,將來自該源區塊之資料複製到此目的區塊。然後更新該對映表(215),以便將此等資料所屬的邏輯群組映射到該新區塊。然後抹除該源區塊,並將其放入該抹除集區。
圖21之時序圖顯示一範例,其中在執行二或多個寫入命令時發生一單一的內務作業。該內務作業之一部分331發生於一寫入命令之執行期間,而另一部分333發生於下一寫入命令實施期間。可讓該內務作業散佈於二次以上的寫入命令執行期間,而無需實施於連續的寫入執行期間,但實際上可進一步隨時間散佈。具有此能力之一優點係實施特定內務作業之所需時間可與特定的寫入循環記憶體忙碌信號持續時間解耦。確切的說,可讓該記憶體系統忙碌信號在連續的寫入命令執行期間具有一均勻的持續時間,並可於若干此類忙碌信號週期實施一個別的內務作業。
可從延長的忙碌週期受益之另一內務功能係儲存於該等記憶體單元中的電荷位準之再新(擦除),如上面所提到。在執行所接收命令時未涉及到之一或多個區塊或元區塊中的記憶體單元得到再新。另一內務功能係佔先廢料收集,上面亦已提到。亦對在執行所接收命令時未涉及到之區塊或元區塊中的資料實施此類廢料收集。對於執行所接收命令而言同樣不必要的或不需要的其他管理作業亦可實施於該記憶體系統所判定的忙碌週期期間。此點對於需要複製大量資料之內務作業而言尤其有用,因為此類複製耗時量相當大。在一主機命令執行期間實施的磨損平衡、擦除、佔先廢料收集或其他類似作業中,無一作業係該命令執行之一關鍵部分。其與所接收命令既無直接關係亦非由該命令所觸發。除實施此類作業之時間量受限制外,對於在一主機命令執行期間可實行的作業之限制極少。
進一步,除在寫入命令執行期間實施此類無關作業外,亦可在其他主機命令執行期間實施此類作業,其中該記憶體系統可進行作業以藉由判定一忙碌信號或以其他方式來延遲另一主機命令。一此類其他命令係該讀取命令。圖22顯示在時間間隔341期間從該快閃記憶體讀取進入該控制器記憶體之資料單元。該記憶體忙碌信號在此週期期間係主動的。但是,實際上並不在此後立即停止該忙碌信號,而延伸此信號來為一內務作業或一內務作業之部分在時間間隔343期間發生提供時間。當該忙碌信號確實停止時,將資料單元1及2傳輸給該主機。該內務作業亦可延伸貫穿此週期,如圖所示。上述用於在寫入命令執行期間實施內務之技術中有許多技術亦可同樣在讀取命令執行期間應用於實施內務。
雖然已經針對本發明之範例性具體實施例來說明本發明之各方面,但是應瞭解,本發明有權在隨附申請專利範圍的完整範疇內受到保護。
11...積體電路裝置(晶片)/記憶體晶片/記憶體陣列裝置
13...積體電路裝置(晶片)/記憶體晶片/記憶體陣列裝置
15...記憶體單元陣列
17...邏輯電路
19...控制器
21...微處理器
23...唯讀記憶體(ROM)
25...緩衝器記憶體(RAM)
27...電路
29...電路
31...連接
31'...連接
33...電路
35...介面電路
37...微處理器
39...ROM
41...RAM
43...其他電路及子系統
51...使用者資料
53...ECC
55...參數
57...ECC
59...範例性區塊
61...邏輯資料區塊
65...共用源極/電壓源
67...電路
70...電荷儲存電晶體
71...電荷儲存電晶體
72...電荷儲存電晶體
74...電荷儲存電晶體
77...選擇電晶體
79...選擇電晶體
81...電路
83...線
84...線
211...邏輯群組
213...記憶體單元陣列
215...功能/對映表
217...內務週期
219...內務週期
221...內務週期
237'...磨損平衡
239...磨損平衡
307...間隔
309...初始間隔
311...間隔
313...間隔
315...間隔
317...廢料收集
319...廢料收集作業
321...廢料收集
323...廢料收集
325...磨損平衡交換
341...間隔
343...間隔
圖1A與1B分別係一起作業之一非揮發性記憶體與一主機系統之方塊圖;圖2說明圖1A之記憶體陣列之第一範例性組織;圖3顯示具有圖1A之記憶體陣列中所儲存之管理資料之一範例性主機資料區段;圖4說明圖1A之記憶體陣列之一第二範例性組織;圖5說明圖1A之記憶體陣列之一第三範例性組織;圖6顯示圖1A之記憶體陣列之第三範例性組織之一延伸。圖7係一項特定具體實施例中圖1A之陣列之一組記憶體單元之一電路圖;圖8說明圖1A之記憶體陣列之一範例性組織及使用。圖9係提供依據一第一項具體實施例該記憶體系統為執行一寫入命令而進行之一範例性作業之一時序圖;圖10及11說明採用圖9之時序的該記憶體系統作業之不同方面;圖12係顯示圖9至11所示寫入作業之一特定執行之一作業流程圖。
圖13A、13B及13C係說明用於圖12所示磨損平衡作業的不同時序之曲線;圖14係顯示依據一第二具體實施例該記憶體系統回應一寫入命令而進行之作業,其係顯示為圖12之流程圖之一修改;圖15係圖14之流程圖中所說明的作業之一範例性執行之一時序圖;圖16說明採用圖15之時序之該記憶體系統作業之一方面;圖17係顯示作為圖15中記憶體系統作業之一替代方案的記憶體系統作業之一時序圖;圖18係說明依據一第三項具體實施例在執行一寫入命令期間該記憶體系統作業之一流程圖;圖19係顯示依據圖18之流程圖該記憶體系統之一範例性作業之一時序圖;圖20及21係說明該記憶體系統作業之其他具體實施例之時序圖;以及圖22之時序圖係說明在執行一讀取命令期間本發明各方面之應用之一時序圖。
Claims (27)
- 一種用以操作一可抹除且可重新程式化的非揮發性記憶體系統之方法,其包含回應從該記憶體系統外部接收一具有供其執行所用的時間預算之命令而進行以下作業:實施任何必需的功能來執行該命令,針對延長超過實施該任何必需的功能所用時間但保持處於該時間預算內之一段時間,判定該記憶體系統外部存在一忙碌信號,以及在該延長的忙碌信號時間期間,實施該記憶體系統內並非該所接收命令執行所必需之一內務作業之至少一部分。
- 如請求項1之方法,其中所接收的命令包括一寫入命令,其後接續一或多個欲寫入該記憶體系統之一或多個單元的資料。
- 如請求項2之方法,其中接收欲寫入該記憶體系統之複數個單元資料,而其中在該等單元資料的各次接收之間的至少二間隔內判定該忙碌信號,在此時間期間藉由完成至少一該內務作業來實施一內務作業之該至少一部分。
- 如請求項3之方法,其中在該等至少二間隔中的多於一個間隔期間實施該至少一內務作業。
- 如請求項4之方法,其中該命令執行所必需的該任何必需的功能包括一廢料收集作業以及將該所接收資料寫入該記憶體系統。
- 如請求項1之方法,其中該內務作業包括將一定數量的資 料從該記憶體系統內的一位置傳輸到另一位置,而且其中在該延長的忙碌信號時間內,該內務作業之至少一部分之實施包括傳輸該一定數量資料中的僅一部分。
- 如請求項6之方法,其中隨後在與該內務作業的實施無明確關係之一廢料收集作業的執行期間,傳輸該一定數量資料之其餘部分。
- 如請求項1之方法,其中至少一該內務作業包括在該命令之該執行中不涉及的該記憶體之一部分中實施之一磨損平衡作業。
- 如請求項1之方法,其中至少一該內務作業包括在該命令之該執行中不涉及的該記憶體之一部分中儲存的再新資料。
- 如請求項1之方法,其中至少一該內務作業包括在該命令之該執行中不涉及的該記憶體之一部分中實施之一廢料收集作業。
- 一種操作一可抹除且可重新程式化的非揮發性記憶體系統之方法,其包含回應一命令之接收而在一給定的時間預算內傳輸一或多個單元的資料:決定為了能夠傳輸一或多個單元的資料,是否需要實施任何內務作業,若為了能夠傳輸該一或多個單元的資料而需要實施任何內務作業,則在該給定的時間預算內至少實施該必需的內務作業,決定一或多個單元資料的該傳輸所不需要之一內務作 業是否正等待處理,若該資料傳輸所不需要之該內務作業正等待處理,則決定該時間預算內是否有任何其餘時間足以用於實施該資料傳輸所不需要的至少一部分等待處理之內務作業,若該時間預算內留有足夠的時間,便在該所接收命令之執行期間實施該資料傳輸所不需要的該等待處理之內務作業之至少一部分,以及在該給定時間預算內傳輸該一或多個單元資料。
- 如請求項11之方法,其中關於為了能夠寫入該一或多個單元資料是否需要實施任何內務作業之決定包括決定該記憶體之二或多個位置內的資料是否需要結合成一單一位置,而若回答係肯定,則在該給定時間預算內將此類資料結合。
- 如請求項11之方法,其中關於該資料傳輸所不需要之一內務作業是否正等待處理之決定包括識別一正等待處理的磨損平衡交換,而其中該資料傳輸所不需要的該等待處理之內務作業之實施包括在該給定時間預算內實施該等待處理的磨損平衡交換之至少一部分。
- 如請求項13之方法,其中該資料傳輸所不需要的該等待處理之內務作業之實施包括在該給定時間預算內實施該等待處理的磨損平衡交換之全部。
- 如請求項11之方法,其中關於該資料傳輸所不需要之一內務作業是否正等待處理之決定包括識別一用於對該記憶體系統之與一執行該所接收的資料傳輸命令時所涉及 部分不同的一部分中所儲存的指定資料進行再新之作業,而且其中該資料傳輸所不需要之該等待處理的內務作業之實施包括在該給定時間預算內再新該指定資料之至少一部分。
- 如請求項15之方法,其中該資料傳輸所不需要的該等待處理之內務作業之實施包括在該給定時間預算內再新所有該等指定資料。
- 如請求項11之方法,其中關於該資料傳輸所不需要之一內務作業是否正等待處理之決定包括識別一用於在該記憶體系統之與一執行該所接收的寫入命令時所涉及部分不同的一部分中實施廢料收集之作業,以及此後在該給定時間預算內實施此類廢料收集之至少一部分。
- 如請求項17之方法,其中該資料傳輸所不需要的該等待處理之內務作業之實施包括在該給定時間預算內實施所有此類資料傳輸。
- 如請求項11之方法,其額外地包含連續接收二或多個單元之資料,而且其中由於決定該時間預算內用於實施該資料傳輸所不需要的該內務作業之任何其餘時間量,而產生關於留有足夠時間之決定,而且額外地包含判定該資料傳輸命令之執行完成所不需要的至少一忙碌週期。
- 如請求項11之方法,其中若該資料傳輸所不需要之一內務作業正等待處理且在該時間預算內沒有足夠的時間來實施該資料傳輸所不需要的該等待處理之內務作業之至少一部分,則在此類未實施作業之一計數中添加該未實 施的內務作業。
- 如請求項20之方法,回應該計數中所包括的多個未實施的內務作業,促使將每一作業按順序提交為等待處理的作業以供執行於所有後續的資料寫入命令執行期間,直至該計數為零。
- 如請求項20之方法,其中,回應該計數中所包括的多個未實施的內務作業,促使將每一未實施的內務作業按順序提交為某一時間等待處理的作業以供執行於所有後續的資料傳輸命令執行期間,直至該計數為零。
- 如請求項20之方法,其中與該資料傳輸命令的執行無關之內務作業一般係以一預定義的間隔來提交,並且其中回應該計數中所包括之多個未實施的內務作業,而促使將該等未實施的內務作業按順序提交為某一時間等待處理的作業,以供在後續的資料傳輸命令執行期間以小於該預定義間隔之間隔來實施,直至該計數為零。
- 如請求項20之方法,其中與該資料傳輸命令的執行無關之內務作業一般係以一預定義的間隔來提交,而且其中回應該計數中所包括之多個未實施的內務作業,促使將該等未實施的內務作業中的至少一作業提交為等待處理的作業,以供在一後續的資料傳輸命令執行期間以小於該預定義間隔之間隔來實施,而同時該等未實施的內務作業中至少有另一作業並不實施。
- 一種操作一可抹除且可重新程式化的非揮發性記憶體單元系統之方法,該等記憶體單元係組織成可同時抹除的 若干記憶體單元之複數個實體塊,而且其中將邏輯群組位址內的資料映射進該等實體塊,該方法包含回應接收一向該等邏輯群組中的一群組寫入資料之一命令以及該欲寫入的資料而進行以下作業:決定該邏輯群組內的資料是否係映射至該等實體塊中的多於一個區塊,決定在該複數個區塊中的二個區塊之間是否有一等待處理的磨損平衡交換,以及(a)若該邏輯群組內的資料係映射到該等實體塊中的多於一個區塊,將該等實體塊中的該等多個區塊之該資料結合成一單一區塊,以及將該所接收的資料寫入與該邏輯群組相關之一更新區塊,或者(b)若該邏輯群組內的資料不映射到該等實體塊中的多個區塊,但存在一等待處理的磨損平衡交換,在該等實體塊中的該等二區塊之間實施一磨損平衡交換,以及將該所接收的資料寫入與該邏輯群組相關之一更新區塊。
- 一種操作一可抹除且可重新程式化的非揮發性記憶體單元系統之方法,該等記憶體單元係組織成可同時抹除的若干記憶體單元之複數個實體塊,而且其中將邏輯群組位址內映射進該等實體塊中一區塊的輸入資料程式化成 一邏輯鏈結至該一區塊之一更新實體塊,該方法包含回應接收一寫入命令以及欲寫入的資料而進行以下作業:決定是否有一更新區塊可用於接收該欲寫入的資料,(a)如果一更新區塊不可用,將複數個更新區塊中一區塊之資料與邏輯鏈接至該更新區塊的資料之一實體塊的資料結合,從而形成一可用的更新區塊,以及然後將資料寫入該可用的更新區塊,或者(b)如果一更新區塊可用,在該等實體塊中的二區塊之間實施一磨損平衡交換,以及然後將資料寫入該可用的更新區塊。
- 一種操作可抹除且可重新程式化的非揮發性記憶體單元的一系統之方法,該等記憶體單元係組織成可同時抹除的若干記憶體單元之複數個實體塊,而且其中邏輯群組位址內映射進一特定實體塊中的輸入資料係反而(instead)經程式化成邏輯鏈接至該特定實體塊之一更新實體塊,其中將該複數個區塊中一有限數目的區塊指定為更新區塊,並藉由將來自至少二區塊的資料結合成一區塊之廢料收集來建立新的更新區塊,該方法包含回應接收一寫入命令以及欲寫入的資料而進行以下作業:決定該寫入命令之執行所不需要之一內務作業是否正等待處理,而且包括決定將複數個單元資料從該複數個區塊中一區塊複製到一更新區塊之該必要性, 若有必要,則在該寫入命令執行期間將該複數個單元資料中一或多個單元但少於其中四分之一單元的資料從該區塊複製進該等更新區塊中的一區塊,將該更新區塊識別為下一區塊,以便將其資料結合,以及在執行該寫入命令後,對該更新區塊實施廢料收集,從而將該更新區塊內該複數個單元資料中的其餘(remaining)資料與該一或多個複製單元一起放進一共用區塊。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/040,325 US20060161724A1 (en) | 2005-01-20 | 2005-01-20 | Scheduling of housekeeping operations in flash memory systems |
US11/312,985 US7315917B2 (en) | 2005-01-20 | 2005-12-19 | Scheduling of housekeeping operations in flash memory systems |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200632935A TW200632935A (en) | 2006-09-16 |
TWI406295B true TWI406295B (zh) | 2013-08-21 |
Family
ID=36384406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW095102267A TWI406295B (zh) | 2005-01-20 | 2006-01-20 | 快閃記憶體系統中內務作業之排程 |
Country Status (9)
Country | Link |
---|---|
US (3) | US7315917B2 (zh) |
EP (2) | EP2112599B1 (zh) |
JP (2) | JP4362534B2 (zh) |
KR (1) | KR101304254B1 (zh) |
AT (2) | ATE499648T1 (zh) |
DE (2) | DE602006009081D1 (zh) |
IL (1) | IL184675A0 (zh) |
TW (1) | TWI406295B (zh) |
WO (1) | WO2006078531A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI715409B (zh) * | 2020-01-08 | 2021-01-01 | 點序科技股份有限公司 | 記憶體管理方法及儲存控制器 |
Families Citing this family (228)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6506770B1 (en) * | 1996-06-06 | 2003-01-14 | Anormed, Inc. | Antiviral compounds |
US6426893B1 (en) * | 2000-02-17 | 2002-07-30 | Sandisk Corporation | Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks |
US7108975B2 (en) * | 2001-09-21 | 2006-09-19 | Regents Of The University Of Michigan | Atlastin |
US7975306B2 (en) * | 2004-06-04 | 2011-07-05 | Hewlett-Packard Development Company, L.P. | Apparatus and method for monitoring secure software |
US7441067B2 (en) * | 2004-11-15 | 2008-10-21 | Sandisk Corporation | Cyclic flash memory wear leveling |
US7315917B2 (en) * | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
US7877539B2 (en) | 2005-02-16 | 2011-01-25 | Sandisk Corporation | Direct data file storage in flash memories |
US9104315B2 (en) | 2005-02-04 | 2015-08-11 | Sandisk Technologies Inc. | Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage |
US20060184718A1 (en) * | 2005-02-16 | 2006-08-17 | Sinclair Alan W | Direct file data programming and deletion in flash memories |
US20060184719A1 (en) * | 2005-02-16 | 2006-08-17 | Sinclair Alan W | Direct data file storage implementation techniques in flash memories |
US7949845B2 (en) * | 2005-08-03 | 2011-05-24 | Sandisk Corporation | Indexing of file data in reprogrammable non-volatile memories that directly store data files |
US7409489B2 (en) * | 2005-08-03 | 2008-08-05 | Sandisk Corporation | Scheduling of reclaim operations in non-volatile memory |
US7669003B2 (en) * | 2005-08-03 | 2010-02-23 | Sandisk Corporation | Reprogrammable non-volatile memory systems with indexing of directly stored data files |
JP4394047B2 (ja) * | 2005-08-05 | 2010-01-06 | 信越ポリマー株式会社 | キーフレームおよび押釦スイッチ用カバー部材 |
US7814262B2 (en) | 2005-10-13 | 2010-10-12 | Sandisk Corporation | Memory system storing transformed units of data in fixed sized storage blocks |
US7877540B2 (en) * | 2005-12-13 | 2011-01-25 | Sandisk Corporation | Logically-addressed file storage methods |
US7747837B2 (en) | 2005-12-21 | 2010-06-29 | Sandisk Corporation | Method and system for accessing non-volatile storage devices |
US7769978B2 (en) | 2005-12-21 | 2010-08-03 | Sandisk Corporation | Method and system for accessing non-volatile storage devices |
US7793068B2 (en) | 2005-12-21 | 2010-09-07 | Sandisk Corporation | Dual mode access for non-volatile storage devices |
US7702935B2 (en) * | 2006-01-25 | 2010-04-20 | Apple Inc. | Reporting flash memory operating voltages |
US20070174641A1 (en) * | 2006-01-25 | 2007-07-26 | Cornwell Michael J | Adjusting power supplies for data storage devices |
US7861122B2 (en) * | 2006-01-27 | 2010-12-28 | Apple Inc. | Monitoring health of non-volatile memory |
US7436708B2 (en) * | 2006-03-01 | 2008-10-14 | Micron Technology, Inc. | NAND memory device column charging |
CN100485681C (zh) * | 2006-03-23 | 2009-05-06 | 北京握奇数据系统有限公司 | 智能卡存储系统及该系统中文件创建管理的方法 |
JP4863749B2 (ja) * | 2006-03-29 | 2012-01-25 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム |
KR100922308B1 (ko) | 2006-08-04 | 2009-10-21 | 쌘디스크 코포레이션 | 페이징된 가비지 콜렉션 |
US7451265B2 (en) * | 2006-08-04 | 2008-11-11 | Sandisk Corporation | Non-volatile memory storage systems for phased garbage collection |
US7444461B2 (en) * | 2006-08-04 | 2008-10-28 | Sandisk Corporation | Methods for phased garbage collection |
US7444462B2 (en) * | 2006-09-28 | 2008-10-28 | Sandisk Corporation | Methods for phased garbage collection using phased garbage collection block or scratch pad block as a buffer |
TWI376600B (en) * | 2006-09-28 | 2012-11-11 | Sandisk Corp | Memory systems and method for phased garbage collection using phased garbage collection block or scratch pad block as a buffer |
US7441071B2 (en) | 2006-09-28 | 2008-10-21 | Sandisk Corporation | Memory systems for phased garbage collection using phased garbage collection block or scratch pad block as a buffer |
US8949555B1 (en) | 2007-08-30 | 2015-02-03 | Virident Systems, Inc. | Methods for sustained read and write performance with non-volatile memory |
US7444463B2 (en) * | 2006-09-29 | 2008-10-28 | Sandisk Corporation | System for phased garbage collection with state indicators |
US7464216B2 (en) * | 2006-09-29 | 2008-12-09 | Sandisk Corporation | Method for phased garbage collection with state indicators |
WO2008042592A2 (en) * | 2006-09-29 | 2008-04-10 | Sandisk Corporation | Phased garbage collection |
US20080091901A1 (en) * | 2006-10-12 | 2008-04-17 | Alan David Bennett | Method for non-volatile memory with worst-case control data management |
US20080091871A1 (en) * | 2006-10-12 | 2008-04-17 | Alan David Bennett | Non-volatile memory with worst-case control data management |
KR100789406B1 (ko) * | 2006-11-03 | 2007-12-28 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법 |
JP4751814B2 (ja) * | 2006-11-28 | 2011-08-17 | 富士通東芝モバイルコミュニケーションズ株式会社 | 携帯端末 |
KR100881669B1 (ko) * | 2006-12-18 | 2009-02-06 | 삼성전자주식회사 | 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치 |
US7739444B2 (en) | 2006-12-26 | 2010-06-15 | Sandisk Corporation | System using a direct data file system with a continuous logical address space interface |
US8046522B2 (en) * | 2006-12-26 | 2011-10-25 | SanDisk Technologies, Inc. | Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks |
US20080155175A1 (en) * | 2006-12-26 | 2008-06-26 | Sinclair Alan W | Host System That Manages a LBA Interface With Flash Memory |
US8166267B2 (en) * | 2006-12-26 | 2012-04-24 | Sandisk Technologies Inc. | Managing a LBA interface in a direct data file memory system |
US8209461B2 (en) | 2006-12-26 | 2012-06-26 | Sandisk Technologies Inc. | Configuration of host LBA interface with flash memory |
US7917686B2 (en) | 2006-12-26 | 2011-03-29 | Sandisk Corporation | Host system with direct data file interface configurability |
JP5266250B2 (ja) | 2006-12-26 | 2013-08-21 | サンディスク テクノロジィース インコーポレイテッド | 連続論理アドレス空間インターフェイスを備えるダイレクトデータファイルシステムの使用 |
KR100884239B1 (ko) * | 2007-01-02 | 2009-02-17 | 삼성전자주식회사 | 메모리 카드 시스템 및 그것의 백그라운드 정보 전송 방법 |
US7657701B2 (en) * | 2007-01-03 | 2010-02-02 | The General Electric Company | System and method of flash memory wear leveling using distributed write cycles |
CN100504814C (zh) * | 2007-01-17 | 2009-06-24 | 忆正存储技术(深圳)有限公司 | 闪存的区块管理方法 |
KR100877609B1 (ko) * | 2007-01-29 | 2009-01-09 | 삼성전자주식회사 | 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법 |
US7669092B2 (en) | 2007-02-26 | 2010-02-23 | Micron Technology, Inc. | Apparatus, method, and system of NAND defect management |
JP2008257773A (ja) * | 2007-04-02 | 2008-10-23 | Toshiba Corp | 不揮発性半導体記憶装置、不揮発性半導体記憶装置の制御方法、不揮発性半導体記憶システム、及びメモリカード |
US7913032B1 (en) * | 2007-04-25 | 2011-03-22 | Apple Inc. | Initiating memory wear leveling |
US20080288712A1 (en) | 2007-04-25 | 2008-11-20 | Cornwell Michael J | Accessing metadata with an external host |
JP4410271B2 (ja) * | 2007-04-25 | 2010-02-03 | 株式会社東芝 | メモリ制御装置 |
US7689762B2 (en) * | 2007-05-03 | 2010-03-30 | Atmel Corporation | Storage device wear leveling |
US20080294813A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Managing Housekeeping Operations in Flash Memory |
WO2008147752A1 (en) * | 2007-05-24 | 2008-12-04 | Sandisk Corporation | Managing housekeeping operations in flash memory |
US20080294814A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Flash Memory System with Management of Housekeeping Operations |
US7788415B2 (en) * | 2007-05-28 | 2010-08-31 | Sandisk Il Ltd. | Management of internal operations by a storage device |
US8429352B2 (en) * | 2007-06-08 | 2013-04-23 | Sandisk Technologies Inc. | Method and system for memory block flushing |
US8504784B2 (en) * | 2007-06-27 | 2013-08-06 | Sandisk Technologies Inc. | Scheduling methods of phased garbage collection and housekeeping operations in a flash memory system |
TWI369633B (en) * | 2007-06-27 | 2012-08-01 | Sandisk Corp | Phased garbage collection and house keeping operations in a flash memory system |
KR101447188B1 (ko) * | 2007-07-31 | 2014-10-08 | 삼성전자주식회사 | 플래시 메모리에 최적화된 입출력 제어 방법 및 장치 |
US8099632B2 (en) * | 2007-08-08 | 2012-01-17 | Sandisk Technologies Inc. | Urgency and time window manipulation to accommodate unpredictable memory operations |
WO2009021176A2 (en) * | 2007-08-08 | 2009-02-12 | Sandisk Corporation | Urgency and time window manipulation to accommodate unpredictable memory operations |
US11237956B2 (en) * | 2007-08-13 | 2022-02-01 | Digital Kiva, Inc. | Apparatus and system for object-based storage solid-state device |
US9824006B2 (en) * | 2007-08-13 | 2017-11-21 | Digital Kiva, Inc. | Apparatus and system for object-based storage solid-state device |
US7970919B1 (en) * | 2007-08-13 | 2011-06-28 | Duran Paul A | Apparatus and system for object-based storage solid-state drive and method for configuring same |
US20090100214A1 (en) * | 2007-10-12 | 2009-04-16 | Bei-Chuan Chen | Management Platform For Extending Lifespan Of Memory In Storage Devices |
JP4554660B2 (ja) * | 2007-11-01 | 2010-09-29 | 株式会社コナミデジタルエンタテインメント | 記憶処理装置、情報提供サーバ、動作方法、ならびに、プログラム |
TWI381383B (zh) * | 2007-11-14 | 2013-01-01 | Netac Technology Co Ltd | 快閃記憶體的資料儲存方法 |
US9183133B2 (en) * | 2007-11-28 | 2015-11-10 | Seagate Technology Llc | System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory |
US7966445B2 (en) * | 2007-12-24 | 2011-06-21 | Telefonaktiebolaget L M Ericsson (Publ) | Read status controller |
EP2077559B1 (en) * | 2007-12-27 | 2012-11-07 | Hagiwara Solutions Co., Ltd. | Refresh method of a flash memory |
US8332572B2 (en) * | 2008-02-05 | 2012-12-11 | Spansion Llc | Wear leveling mechanism using a DRAM buffer |
US8275945B2 (en) | 2008-02-05 | 2012-09-25 | Spansion Llc | Mitigation of flash memory latency and bandwidth limitations via a write activity log and buffer |
US8352671B2 (en) | 2008-02-05 | 2013-01-08 | Spansion Llc | Partial allocate paging mechanism using a controller and a buffer |
US20090271562A1 (en) * | 2008-04-25 | 2009-10-29 | Sinclair Alan W | Method and system for storage address re-mapping for a multi-bank memory device |
US7957187B2 (en) | 2008-05-09 | 2011-06-07 | Sandisk Corporation | Dynamic and adaptive optimization of read compare levels based on memory cell threshold voltage distribution |
US8275928B2 (en) * | 2008-05-15 | 2012-09-25 | Silicon Motion, Inc. | Memory module and method for performing wear-leveling of memory module using remapping, link, and spare area tables |
US8880775B2 (en) * | 2008-06-20 | 2014-11-04 | Seagate Technology Llc | System and method of garbage collection in a memory device |
US8560762B2 (en) * | 2008-06-25 | 2013-10-15 | Microsoft Corporation | Limited memory power |
TWI389125B (zh) * | 2008-07-18 | 2013-03-11 | A Data Technology Co Ltd | 記憶體儲存裝置及其控制方法 |
JP2010055247A (ja) * | 2008-08-27 | 2010-03-11 | Hitachi Ltd | ストレージシステム及び構成管理方法 |
US8671327B2 (en) * | 2008-09-28 | 2014-03-11 | Sandisk Technologies Inc. | Method and system for adaptive coding in flash memories |
EP2335245B1 (en) * | 2008-09-28 | 2015-01-07 | Ramot at Tel-Aviv University Ltd. | Method and system for adaptive coding in flash memories |
US8230185B2 (en) * | 2008-10-08 | 2012-07-24 | International Business Machines Corporation | Method for optimizing cleaning of maps in FlashCopy cascades containing incremental maps |
US8825940B1 (en) | 2008-12-02 | 2014-09-02 | Siliconsystems, Inc. | Architecture for optimizing execution of storage access commands |
US8700840B2 (en) | 2009-01-05 | 2014-04-15 | SanDisk Technologies, Inc. | Nonvolatile memory with write cache having flush/eviction methods |
US8244960B2 (en) | 2009-01-05 | 2012-08-14 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partition management methods |
US8094500B2 (en) * | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
US8040744B2 (en) * | 2009-01-05 | 2011-10-18 | Sandisk Technologies Inc. | Spare block management of non-volatile memories |
US20100174845A1 (en) * | 2009-01-05 | 2010-07-08 | Sergey Anatolievich Gorobets | Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques |
US9176859B2 (en) * | 2009-01-07 | 2015-11-03 | Siliconsystems, Inc. | Systems and methods for improving the performance of non-volatile memory operations |
US10079048B2 (en) * | 2009-03-24 | 2018-09-18 | Western Digital Technologies, Inc. | Adjusting access of non-volatile semiconductor memory based on access time |
US8051241B2 (en) | 2009-05-07 | 2011-11-01 | Seagate Technology Llc | Wear leveling technique for storage devices |
US8732389B2 (en) * | 2009-06-23 | 2014-05-20 | Seagate Technology Llc | Memory wear control |
US8639877B2 (en) * | 2009-06-30 | 2014-01-28 | International Business Machines Corporation | Wear leveling of solid state disks distributed in a plurality of redundant array of independent disk ranks |
US20110002169A1 (en) | 2009-07-06 | 2011-01-06 | Yan Li | Bad Column Management with Bit Information in Non-Volatile Memory Systems |
KR101662824B1 (ko) * | 2009-07-08 | 2016-10-06 | 삼성전자주식회사 | 고체 상태 드라이브 장치 및 그것의 구동 방법 |
US20110010512A1 (en) * | 2009-07-09 | 2011-01-13 | Mediatek Inc. | Method for controlling storage system having multiple non-volatile memory units and storage system using the same |
US8209450B2 (en) * | 2009-08-26 | 2012-06-26 | Seagate Technologies Llc | Maintenance operations using configurable parameters |
US8234520B2 (en) | 2009-09-16 | 2012-07-31 | International Business Machines Corporation | Wear leveling of solid state disks based on usage information of data and parity received from a raid controller |
US20110082599A1 (en) * | 2009-10-06 | 2011-04-07 | Makarand Shinde | Optimizing Utility Usage by Smart Monitoring |
US8013762B2 (en) * | 2009-11-03 | 2011-09-06 | Seagate Technology Llc | Evaluating alternative encoding solutions during data compression |
US9110594B2 (en) * | 2009-11-04 | 2015-08-18 | Seagate Technology Llc | File management system for devices containing solid-state media |
US8473669B2 (en) * | 2009-12-07 | 2013-06-25 | Sandisk Technologies Inc. | Method and system for concurrent background and foreground operations in a non-volatile memory array |
US8468294B2 (en) * | 2009-12-18 | 2013-06-18 | Sandisk Technologies Inc. | Non-volatile memory with multi-gear control using on-chip folding of data |
US20110153912A1 (en) * | 2009-12-18 | 2011-06-23 | Sergey Anatolievich Gorobets | Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory |
US8725935B2 (en) | 2009-12-18 | 2014-05-13 | Sandisk Technologies Inc. | Balanced performance for on-chip folding of non-volatile memories |
US9959209B1 (en) | 2010-03-23 | 2018-05-01 | Western Digital Technologies, Inc. | Data storage device adjusting command rate profile based on operating mode |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
WO2011128928A1 (en) * | 2010-04-12 | 2011-10-20 | Hitachi, Ltd. | Storage device |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US8452937B2 (en) | 2010-05-14 | 2013-05-28 | Sandisk Il Ltd. | Moving executable code from a first region of a non-volatile memory to a second region of the non-volatile memory to reduce read disturb |
JP5464066B2 (ja) * | 2010-06-10 | 2014-04-09 | ソニー株式会社 | 通信装置、及び、通信方法 |
US8543757B2 (en) | 2010-06-23 | 2013-09-24 | Sandisk Technologies Inc. | Techniques of maintaining logical to physical mapping information in non-volatile memory systems |
US8417876B2 (en) | 2010-06-23 | 2013-04-09 | Sandisk Technologies Inc. | Use of guard bands and phased maintenance operations to avoid exceeding maximum latency requirements in non-volatile memory systems |
US8521972B1 (en) | 2010-06-30 | 2013-08-27 | Western Digital Technologies, Inc. | System and method for optimizing garbage collection in data storage |
US8683148B2 (en) | 2010-06-30 | 2014-03-25 | Sandisk Il Ltd. | Status indication when a maintenance operation is to be performed at a memory device |
US8626986B2 (en) * | 2010-06-30 | 2014-01-07 | Sandisk Technologies Inc. | Pre-emptive garbage collection of memory blocks |
US9741436B2 (en) * | 2010-07-09 | 2017-08-22 | Seagate Technology Llc | Dynamically controlling an operation execution time for a storage device |
US8949506B2 (en) | 2010-07-30 | 2015-02-03 | Apple Inc. | Initiating wear leveling for a non-volatile memory |
US20120036301A1 (en) * | 2010-08-03 | 2012-02-09 | Caspole Eric R | Processor support for filling memory regions |
US10445226B2 (en) | 2010-08-10 | 2019-10-15 | Rambus Inc. | Verify before program resume for memory devices |
JP4910064B2 (ja) * | 2010-08-31 | 2012-04-04 | 株式会社東芝 | 記憶制御装置、記憶装置、及びデータ移動制御方法 |
US9021192B1 (en) | 2010-09-21 | 2015-04-28 | Western Digital Technologies, Inc. | System and method for enhancing processing of memory access requests |
US9164886B1 (en) | 2010-09-21 | 2015-10-20 | Western Digital Technologies, Inc. | System and method for multistage processing in a memory storage subsystem |
JP2012068936A (ja) * | 2010-09-24 | 2012-04-05 | Toshiba Corp | メモリシステム |
US8452911B2 (en) | 2010-09-30 | 2013-05-28 | Sandisk Technologies Inc. | Synchronized maintenance operations in a multi-bank storage system |
US8271692B1 (en) | 2010-10-01 | 2012-09-18 | Western Digital Technologies, Inc. | Throttled command completion time |
JP5535128B2 (ja) * | 2010-12-16 | 2014-07-02 | 株式会社東芝 | メモリシステム |
TWI428743B (zh) * | 2010-12-24 | 2014-03-01 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
US8819328B2 (en) | 2010-12-30 | 2014-08-26 | Sandisk Technologies Inc. | Controller and method for performing background operations |
US8521948B2 (en) | 2011-01-03 | 2013-08-27 | Apple Inc. | Handling dynamic and static data for a system having non-volatile memory |
CN102592670B (zh) * | 2011-01-07 | 2015-09-30 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
KR20120084906A (ko) * | 2011-01-21 | 2012-07-31 | 에스케이하이닉스 주식회사 | 비휘발성 메모리 시스템 및 그 관리 방법 |
JP5917163B2 (ja) * | 2011-01-27 | 2016-05-11 | キヤノン株式会社 | 情報処理装置、その制御方法及びプログラム並びに記憶媒体 |
US8560922B2 (en) | 2011-03-04 | 2013-10-15 | International Business Machines Corporation | Bad block management for flash memory |
US10338947B2 (en) * | 2011-03-15 | 2019-07-02 | Microsoft Technology Licensing, Llc | Extent virtualization |
JP2012203443A (ja) | 2011-03-23 | 2012-10-22 | Toshiba Corp | メモリシステムおよびメモリシステムの制御方法 |
US9342446B2 (en) | 2011-03-29 | 2016-05-17 | SanDisk Technologies, Inc. | Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache |
JP2012234482A (ja) * | 2011-05-09 | 2012-11-29 | Canon Inc | 記憶制御装置及びその制御方法、並びにプログラム |
US9158670B1 (en) | 2011-06-30 | 2015-10-13 | Western Digital Technologies, Inc. | System and method for dynamically adjusting garbage collection policies in solid-state memory |
US9189392B1 (en) | 2011-06-30 | 2015-11-17 | Western Digital Technologies, Inc. | Opportunistic defragmentation during garbage collection |
US9417803B2 (en) | 2011-09-20 | 2016-08-16 | Apple Inc. | Adaptive mapping of logical addresses to memory devices in solid state drives |
US8819375B1 (en) | 2011-11-30 | 2014-08-26 | Western Digital Technologies, Inc. | Method for selective defragmentation in a data storage device |
US8762627B2 (en) | 2011-12-21 | 2014-06-24 | Sandisk Technologies Inc. | Memory logical defragmentation during garbage collection |
US8924636B2 (en) | 2012-02-23 | 2014-12-30 | Kabushiki Kaisha Toshiba | Management information generating method, logical block constructing method, and semiconductor memory device |
US8681548B2 (en) | 2012-05-03 | 2014-03-25 | Sandisk Technologies Inc. | Column redundancy circuitry for non-volatile memory |
TWI454916B (zh) * | 2012-05-08 | 2014-10-01 | Phison Electronics Corp | 儲存單元管理方法、記憶體控制器與記憶體儲存裝置 |
US8788778B1 (en) | 2012-06-04 | 2014-07-22 | Western Digital Technologies, Inc. | Garbage collection based on the inactivity level of stored data |
US20140032820A1 (en) * | 2012-07-25 | 2014-01-30 | Akinori Harasawa | Data storage apparatus, memory control method and electronic device with data storage apparatus |
US8750045B2 (en) | 2012-07-27 | 2014-06-10 | Sandisk Technologies Inc. | Experience count dependent program algorithm for flash memory |
TWI479489B (zh) * | 2012-08-13 | 2015-04-01 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
US8897080B2 (en) | 2012-09-28 | 2014-11-25 | Sandisk Technologies Inc. | Variable rate serial to parallel shift register |
US9490035B2 (en) | 2012-09-28 | 2016-11-08 | SanDisk Technologies, Inc. | Centralized variable rate serializer and deserializer for bad column management |
US9076506B2 (en) | 2012-09-28 | 2015-07-07 | Sandisk Technologies Inc. | Variable rate parallel to serial shift register |
US20140129758A1 (en) * | 2012-11-06 | 2014-05-08 | Spansion Llc | Wear leveling in flash memory devices with trim commands |
US9411718B2 (en) * | 2012-12-21 | 2016-08-09 | Seagate Technology Llc | Method to apply fine grain wear leveling and garbage collection |
US20140181368A1 (en) * | 2012-12-26 | 2014-06-26 | Unisys Corporation | Equalizing wear on storage devices with write counters |
US9465731B2 (en) | 2012-12-31 | 2016-10-11 | Sandisk Technologies Llc | Multi-layer non-volatile memory system having multiple partitions in a layer |
US8873284B2 (en) | 2012-12-31 | 2014-10-28 | Sandisk Technologies Inc. | Method and system for program scheduling in a multi-layer memory |
US9336133B2 (en) * | 2012-12-31 | 2016-05-10 | Sandisk Technologies Inc. | Method and system for managing program cycles including maintenance programming operations in a multi-layer memory |
US9223693B2 (en) | 2012-12-31 | 2015-12-29 | Sandisk Technologies Inc. | Memory system having an unequal number of memory die on different control channels |
US9734911B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for asynchronous die operations in a non-volatile memory |
US9734050B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for managing background operations in a multi-layer memory |
US9348746B2 (en) | 2012-12-31 | 2016-05-24 | Sandisk Technologies | Method and system for managing block reclaim operations in a multi-layer memory |
US9063967B2 (en) * | 2013-01-10 | 2015-06-23 | Pure Storage, Inc. | Performing copies in a storage system |
US9076545B2 (en) | 2013-01-17 | 2015-07-07 | Sandisk Tecnologies Inc. | Dynamic adjustment of read voltage levels based on memory cell threshold voltage distribution |
US9489297B2 (en) * | 2013-01-21 | 2016-11-08 | Sandisk Technologies Llc | Pregroomer for storage array |
US9153331B2 (en) * | 2013-03-13 | 2015-10-06 | Sandisk Technologies Inc. | Tracking cell erase counts of non-volatile memory |
US20140359181A1 (en) * | 2013-05-31 | 2014-12-04 | Hewlett-Packard Development Company, L.P. | Delaying Bus Activity To Accomodate Memory Device Processing Time |
EP3014454A4 (en) * | 2013-06-25 | 2017-06-21 | Micron Technology, Inc. | On demand block management |
SG11201507090PA (en) * | 2013-08-19 | 2015-10-29 | Toshiba Kk | Memory system |
US10013280B2 (en) * | 2013-09-30 | 2018-07-03 | Dell Products, Lp | System and method for host-assisted background media scan (BMS) |
US9218282B2 (en) | 2013-10-31 | 2015-12-22 | Micron Technology, Inc. | Memory system data management |
US9727249B1 (en) * | 2014-02-06 | 2017-08-08 | SK Hynix Inc. | Selection of an open block in solid state storage systems with multiple open blocks |
JP6260395B2 (ja) * | 2014-03-27 | 2018-01-17 | Tdk株式会社 | メモリコントローラ、メモリシステム及びメモリ制御方法 |
CN104951241B (zh) * | 2014-03-31 | 2018-02-27 | 群联电子股份有限公司 | 存储器管理方法、存储器存储装置及存储器控制电路单元 |
US9710176B1 (en) * | 2014-08-22 | 2017-07-18 | Sk Hynix Memory Solutions Inc. | Maintaining wear spread by dynamically adjusting wear-leveling frequency |
US10725668B1 (en) * | 2014-08-29 | 2020-07-28 | SK Hynix Inc. | Data separation during garbage collection and wear leveling |
KR20160049200A (ko) * | 2014-10-27 | 2016-05-09 | 삼성전자주식회사 | 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법 |
US9934872B2 (en) | 2014-10-30 | 2018-04-03 | Sandisk Technologies Llc | Erase stress and delta erase loop count methods for various fail modes in non-volatile memory |
US10338817B2 (en) * | 2014-12-30 | 2019-07-02 | Sandisk Technologies Llc | Systems and methods for storage recovery |
KR101614107B1 (ko) * | 2015-01-09 | 2016-04-20 | 성균관대학교산학협력단 | 비용 효율적인 선택적 메모리 중복 제거 방법 및 장치 |
US9224502B1 (en) | 2015-01-14 | 2015-12-29 | Sandisk Technologies Inc. | Techniques for detection and treating memory hole to local interconnect marginality defects |
US10032524B2 (en) | 2015-02-09 | 2018-07-24 | Sandisk Technologies Llc | Techniques for determining local interconnect defects |
US9564219B2 (en) | 2015-04-08 | 2017-02-07 | Sandisk Technologies Llc | Current based detection and recording of memory hole-interconnect spacing defects |
US20160299844A1 (en) * | 2015-04-08 | 2016-10-13 | Sandisk Enterprise Ip Llc | Mapping Logical Groups of Data to Physical Locations In Memory |
US9269446B1 (en) | 2015-04-08 | 2016-02-23 | Sandisk Technologies Inc. | Methods to improve programming of slow cells |
US9772777B2 (en) | 2015-04-27 | 2017-09-26 | Southwest Research Institute | Systems and methods for improved access to flash memory devices |
US10289327B2 (en) | 2015-06-05 | 2019-05-14 | Western Digital Technologies, Inc. | Scheduling scheme(s) for a multi-die storage device |
US9875053B2 (en) | 2015-06-05 | 2018-01-23 | Western Digital Technologies, Inc. | Scheduling scheme(s) for a multi-die storage device |
US10324833B2 (en) * | 2015-10-27 | 2019-06-18 | Toshiba Memory Corporation | Memory controller, data storage device, and memory control method |
US10120613B2 (en) | 2015-10-30 | 2018-11-06 | Sandisk Technologies Llc | System and method for rescheduling host and maintenance operations in a non-volatile memory |
US10042553B2 (en) | 2015-10-30 | 2018-08-07 | Sandisk Technologies Llc | Method and system for programming a multi-layer non-volatile memory having a single fold data path |
US9778855B2 (en) | 2015-10-30 | 2017-10-03 | Sandisk Technologies Llc | System and method for precision interleaving of data writes in a non-volatile memory |
US10133490B2 (en) * | 2015-10-30 | 2018-11-20 | Sandisk Technologies Llc | System and method for managing extended maintenance scheduling in a non-volatile memory |
US20170139826A1 (en) * | 2015-11-17 | 2017-05-18 | Kabushiki Kaisha Toshiba | Memory system, memory control device, and memory control method |
US10318163B2 (en) * | 2016-03-30 | 2019-06-11 | EMC IP Holding Company LLC | Balancing SSD wear in data storage systems |
US10338825B2 (en) * | 2016-03-31 | 2019-07-02 | EMC IP Holding Company LLC | Managing SSD wear rate in hybrid storage arrays |
US10324633B2 (en) * | 2016-03-31 | 2019-06-18 | EMC IP Holding Company LLC | Managing SSD write quotas in data storage systems |
US10318185B2 (en) * | 2016-07-01 | 2019-06-11 | Intel Corporation | Method and apparatus to provide both storage mode and memory mode access to non-volatile memory within a solid state drive |
US10739996B1 (en) | 2016-07-18 | 2020-08-11 | Seagate Technology Llc | Enhanced garbage collection |
KR20190073451A (ko) | 2016-10-17 | 2019-06-26 | 바스프 에스이 | 3d 스페이서 패브릭 강화 pu 복합재료 및 이의 용도 |
TWI612473B (zh) * | 2017-03-22 | 2018-01-21 | 慧榮科技股份有限公司 | 垃圾回收方法以及使用該方法的裝置 |
JP2018160194A (ja) * | 2017-03-23 | 2018-10-11 | 東芝メモリ株式会社 | メモリシステムおよび方法 |
JP2018181213A (ja) * | 2017-04-20 | 2018-11-15 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム |
JP6785205B2 (ja) | 2017-09-21 | 2020-11-18 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP6982468B2 (ja) * | 2017-10-27 | 2021-12-17 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP2019079464A (ja) | 2017-10-27 | 2019-05-23 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
KR102491068B1 (ko) | 2017-11-17 | 2023-01-19 | 에스케이하이닉스 주식회사 | 메모리 장치에 대한 태스크들을 스케줄링하는 반도체 장치 및 이를 포함하는 시스템 |
KR20190120573A (ko) * | 2018-04-16 | 2019-10-24 | 에스케이하이닉스 주식회사 | 메모리 시스템, 데이터 처리 시스템 및 메모리 시스템의 동작 방법 |
US11016693B2 (en) | 2018-06-21 | 2021-05-25 | International Business Machines Corporation | Block health estimation for wear leveling in non-volatile memories |
US10884889B2 (en) | 2018-06-22 | 2021-01-05 | Seagate Technology Llc | Allocating part of a raid stripe to repair a second raid stripe |
US10761739B2 (en) | 2018-08-23 | 2020-09-01 | Micron Technology, Inc. | Multi-level wear leveling for non-volatile memory |
US11537307B2 (en) | 2018-08-23 | 2022-12-27 | Micron Technology, Inc. | Hybrid wear leveling for in-place data replacement media |
US10860219B2 (en) * | 2018-10-05 | 2020-12-08 | Micron Technology, Inc. | Performing hybrid wear leveling operations based on a sub-total write counter |
JP2020155182A (ja) * | 2019-03-20 | 2020-09-24 | キオクシア株式会社 | メモリシステム及び不揮発性メモリ |
US11636173B2 (en) | 2019-03-28 | 2023-04-25 | SK Hynix Inc. | Method for candidate selection and accelerator for performing candidate selection |
KR20200115102A (ko) | 2019-03-28 | 2020-10-07 | 에스케이하이닉스 주식회사 | 유사도에 따라 후보 선택을 가속하는 방법 및 후보 선택을 수행하는 가속기 |
KR20210006664A (ko) * | 2019-07-09 | 2021-01-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20210027563A (ko) * | 2019-08-28 | 2021-03-11 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US11894060B2 (en) | 2022-03-25 | 2024-02-06 | Western Digital Technologies, Inc. | Dual performance trim for optimization of non-volatile memory performance, endurance, and reliability |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5640529A (en) * | 1993-07-29 | 1997-06-17 | Intel Corporation | Method and system for performing clean-up of a solid state disk during host command execution |
US20020099904A1 (en) * | 2001-01-19 | 2002-07-25 | Conley Kevin M. | Partial block data programming and reading operations in a non-volatile memory |
US20020184432A1 (en) * | 2001-06-01 | 2002-12-05 | Amir Ban | Wear leveling of static areas in flash memory |
US20030046487A1 (en) * | 2001-08-30 | 2003-03-06 | Shuba Swaminathan | Refresh algorithm for memories |
US20040083335A1 (en) * | 2002-10-28 | 2004-04-29 | Gonzalez Carlos J. | Automated wear leveling in non-volatile storage systems |
US20040177212A1 (en) * | 2002-10-28 | 2004-09-09 | Sandisk Corporation | Maintaining an average erase count in a non-volatile storage system |
Family Cites Families (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4012835A (en) * | 1974-09-17 | 1977-03-22 | E. I. Du Pont De Nemours And Co. | Method of forming a dual in-line package |
US5043940A (en) * | 1988-06-08 | 1991-08-27 | Eliyahou Harari | Flash EEPROM memory systems having multistate storage cells |
US5095344A (en) * | 1988-06-08 | 1992-03-10 | Eliyahou Harari | Highly compact eprom and flash eeprom devices |
US5268870A (en) * | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Flash EEPROM system and intelligent programming and erasing methods therefor |
US5070032A (en) * | 1989-03-15 | 1991-12-03 | Sundisk Corporation | Method of making dense flash eeprom semiconductor memory structures |
US5172338B1 (en) * | 1989-04-13 | 1997-07-08 | Sandisk Corp | Multi-state eeprom read and write circuits and techniques |
US5343063A (en) * | 1990-12-18 | 1994-08-30 | Sundisk Corporation | Dense vertical programmable read only memory cell structure and processes for making them |
GB9111524D0 (en) * | 1991-05-29 | 1991-07-17 | Hewlett Packard Co | Data storage method and apparatus |
JP3134819B2 (ja) * | 1997-06-04 | 2001-02-13 | ソニー株式会社 | データ処理装置 |
US6230233B1 (en) * | 1991-09-13 | 2001-05-08 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
TW261687B (zh) * | 1991-11-26 | 1995-11-01 | Hitachi Seisakusyo Kk | |
US6222762B1 (en) * | 1992-01-14 | 2001-04-24 | Sandisk Corporation | Multi-state memory |
US5313421A (en) * | 1992-01-14 | 1994-05-17 | Sundisk Corporation | EEPROM with split gate source side injection |
US5532962A (en) * | 1992-05-20 | 1996-07-02 | Sandisk Corporation | Soft errors handling in EEPROM devices |
JP3328321B2 (ja) * | 1992-06-22 | 2002-09-24 | 株式会社日立製作所 | 半導体記憶装置 |
US5315541A (en) * | 1992-07-24 | 1994-05-24 | Sundisk Corporation | Segmented column memory array |
US5341339A (en) * | 1992-10-30 | 1994-08-23 | Intel Corporation | Method for wear leveling in a flash EEPROM memory |
US5479633A (en) * | 1992-10-30 | 1995-12-26 | Intel Corporation | Method of controlling clean-up of a solid state memory disk storing floating sector data |
US5479638A (en) * | 1993-03-26 | 1995-12-26 | Cirrus Logic, Inc. | Flash memory mass storage architecture incorporation wear leveling technique |
US5485595A (en) * | 1993-03-26 | 1996-01-16 | Cirrus Logic, Inc. | Flash memory mass storage architecture incorporating wear leveling technique without using cam cells |
US5388083A (en) * | 1993-03-26 | 1995-02-07 | Cirrus Logic, Inc. | Flash memory mass storage architecture |
US5555204A (en) * | 1993-06-29 | 1996-09-10 | Kabushiki Kaisha Toshiba | Non-volatile semiconductor memory device |
KR0169267B1 (ko) * | 1993-09-21 | 1999-02-01 | 사토 후미오 | 불휘발성 반도체 기억장치 |
US5661053A (en) * | 1994-05-25 | 1997-08-26 | Sandisk Corporation | Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers |
US5696929A (en) * | 1995-10-03 | 1997-12-09 | Intel Corporation | Flash EEPROM main memory in a computer system |
US5903495A (en) * | 1996-03-18 | 1999-05-11 | Kabushiki Kaisha Toshiba | Semiconductor device and memory system |
US5768192A (en) * | 1996-07-23 | 1998-06-16 | Saifun Semiconductors, Ltd. | Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping |
US5798968A (en) * | 1996-09-24 | 1998-08-25 | Sandisk Corporation | Plane decode/virtual sector architecture |
US5890192A (en) * | 1996-11-05 | 1999-03-30 | Sandisk Corporation | Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM |
US6412023B1 (en) * | 1998-05-21 | 2002-06-25 | Sony Corporation | System for communicating status via first signal line in a period of time in which control signal via second line is not transmitted |
US5930167A (en) * | 1997-07-30 | 1999-07-27 | Sandisk Corporation | Multi-state non-volatile flash memory capable of being its own two state write cache |
US6768165B1 (en) * | 1997-08-01 | 2004-07-27 | Saifun Semiconductors Ltd. | Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping |
US5956743A (en) * | 1997-08-25 | 1999-09-21 | Bit Microsystems, Inc. | Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations |
US6000006A (en) * | 1997-08-25 | 1999-12-07 | Bit Microsystems, Inc. | Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage |
US5909449A (en) * | 1997-09-08 | 1999-06-01 | Invox Technology | Multibit-per-cell non-volatile memory with error detection and correction |
US5871890A (en) * | 1997-11-14 | 1999-02-16 | Eastman Kodak Company | Method for processing roomlight handleable radiographic films using two-stage development |
US6233644B1 (en) * | 1998-06-05 | 2001-05-15 | International Business Machines Corporation | System of performing parallel cleanup of segments of a lock structure located within a coupling facility |
US6286016B1 (en) * | 1998-06-09 | 2001-09-04 | Sun Microsystems, Inc. | Incremental heap expansion in a real-time garbage collector |
JP3544476B2 (ja) * | 1998-09-11 | 2004-07-21 | 富士通株式会社 | メモリ管理テーブル作成方法 |
GB9903490D0 (en) | 1999-02-17 | 1999-04-07 | Memory Corp Plc | Memory system |
JP3351398B2 (ja) * | 1999-08-09 | 2002-11-25 | 株式会社村田製作所 | データ通信装置 |
JP3863330B2 (ja) * | 1999-09-28 | 2006-12-27 | 株式会社東芝 | 不揮発性半導体メモリ |
US20050204187A1 (en) * | 2004-03-11 | 2005-09-15 | Lee Charles C. | System and method for managing blocks in flash memory |
US6426893B1 (en) * | 2000-02-17 | 2002-07-30 | Sandisk Corporation | Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks |
US6567307B1 (en) * | 2000-07-21 | 2003-05-20 | Lexar Media, Inc. | Block management for mass storage |
US6345001B1 (en) | 2000-09-14 | 2002-02-05 | Sandisk Corporation | Compressed event counting technique and application to a flash memory system |
US20020161850A1 (en) * | 2001-01-29 | 2002-10-31 | Ulrich Thomas R. | Data path accelerator for storage systems |
US6990547B2 (en) * | 2001-01-29 | 2006-01-24 | Adaptec, Inc. | Replacing file system processors by hot swapping |
US6522580B2 (en) * | 2001-06-27 | 2003-02-18 | Sandisk Corporation | Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states |
JP4042359B2 (ja) * | 2001-07-10 | 2008-02-06 | 日本電気株式会社 | キャッシュ制御方法及びキャッシュ装置 |
US6973535B2 (en) * | 2001-09-14 | 2005-12-06 | Cornice, Inc. | Digital device configuration and method |
US6456528B1 (en) * | 2001-09-17 | 2002-09-24 | Sandisk Corporation | Selective operation of a multi-state non-volatile memory system in a binary mode |
GB0123415D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
US6925007B2 (en) | 2001-10-31 | 2005-08-02 | Sandisk Corporation | Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements |
JP3928500B2 (ja) | 2002-02-26 | 2007-06-13 | 株式会社日立製作所 | メモリ装置 |
US6771536B2 (en) * | 2002-02-27 | 2004-08-03 | Sandisk Corporation | Operating techniques for reducing program and read disturbs of a non-volatile memory |
US6895464B2 (en) * | 2002-06-03 | 2005-05-17 | Honeywell International Inc. | Flash memory management system and method utilizing multiple block list windows |
US6781877B2 (en) * | 2002-09-06 | 2004-08-24 | Sandisk Corporation | Techniques for reducing effects of coupling between storage elements of adjacent rows of memory cells |
US6973531B1 (en) | 2002-10-28 | 2005-12-06 | Sandisk Corporation | Tracking the most frequently erased blocks in non-volatile memory systems |
US7096313B1 (en) | 2002-10-28 | 2006-08-22 | Sandisk Corporation | Tracking the least frequently erased blocks in non-volatile memory systems |
US6985992B1 (en) | 2002-10-28 | 2006-01-10 | Sandisk Corporation | Wear-leveling in non-volatile storage systems |
US7121639B2 (en) * | 2002-12-02 | 2006-10-17 | Silverbrook Research Pty Ltd | Data rate equalisation to account for relatively different printhead widths |
US7012835B2 (en) | 2003-10-03 | 2006-03-14 | Sandisk Corporation | Flash memory data correction and scrub techniques |
US7139864B2 (en) | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
US20050144516A1 (en) * | 2003-12-30 | 2005-06-30 | Gonzalez Carlos J. | Adaptive deterministic grouping of blocks into multi-block units |
US7433993B2 (en) * | 2003-12-30 | 2008-10-07 | San Disk Corportion | Adaptive metablocks |
KR100654429B1 (ko) * | 2004-03-03 | 2006-12-06 | 삼성전자주식회사 | 무선 스테이션의 트래픽을 동적으로 제어하는 방법 및 장치 |
KR100568115B1 (ko) | 2004-06-30 | 2006-04-05 | 삼성전자주식회사 | 점진적 머지 방법 및 그것을 이용한 메모리 시스템 |
DE102004036488A1 (de) * | 2004-07-28 | 2006-03-23 | Siemens Ag | Verfahren, Vorrichtung und System zur adaptiven Optimierung von Transportprotokollen bei der Übertragung von Bildern |
US7398348B2 (en) * | 2004-08-24 | 2008-07-08 | Sandisk 3D Llc | Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory |
US20060053247A1 (en) * | 2004-09-08 | 2006-03-09 | Hugo Cheung | Incremental erasing of flash memory to improve system performance |
US7441067B2 (en) * | 2004-11-15 | 2008-10-21 | Sandisk Corporation | Cyclic flash memory wear leveling |
US7386655B2 (en) * | 2004-12-16 | 2008-06-10 | Sandisk Corporation | Non-volatile memory and method with improved indexing for scratch pad and update blocks |
JP2006195736A (ja) | 2005-01-13 | 2006-07-27 | Sony Corp | 半導体記憶装置及びその制御方法 |
US20060161724A1 (en) * | 2005-01-20 | 2006-07-20 | Bennett Alan D | Scheduling of housekeeping operations in flash memory systems |
US7315917B2 (en) * | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
US9104315B2 (en) | 2005-02-04 | 2015-08-11 | Sandisk Technologies Inc. | Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage |
US7827141B2 (en) * | 2005-03-10 | 2010-11-02 | Oracle International Corporation | Dynamically sizing buffers to optimal size in network layers when supporting data transfers related to database applications |
JP5162846B2 (ja) * | 2005-07-29 | 2013-03-13 | ソニー株式会社 | 記憶装置、コンピュータシステム、および記憶システム |
US7409489B2 (en) * | 2005-08-03 | 2008-08-05 | Sandisk Corporation | Scheduling of reclaim operations in non-volatile memory |
US7779056B2 (en) | 2006-09-15 | 2010-08-17 | Sandisk Corporation | Managing a pool of update memory blocks based on each block's activity and data order |
US20080091871A1 (en) * | 2006-10-12 | 2008-04-17 | Alan David Bennett | Non-volatile memory with worst-case control data management |
US20080091901A1 (en) * | 2006-10-12 | 2008-04-17 | Alan David Bennett | Method for non-volatile memory with worst-case control data management |
-
2005
- 2005-12-19 US US11/312,985 patent/US7315917B2/en active Active
-
2006
- 2006-01-11 DE DE602006009081T patent/DE602006009081D1/de active Active
- 2006-01-11 JP JP2007552175A patent/JP4362534B2/ja not_active Expired - Fee Related
- 2006-01-11 AT AT09008986T patent/ATE499648T1/de not_active IP Right Cessation
- 2006-01-11 WO PCT/US2006/001070 patent/WO2006078531A2/en active Application Filing
- 2006-01-11 AT AT06718177T patent/ATE442627T1/de not_active IP Right Cessation
- 2006-01-11 EP EP09008986A patent/EP2112599B1/en not_active Not-in-force
- 2006-01-11 KR KR1020077017713A patent/KR101304254B1/ko active IP Right Grant
- 2006-01-11 EP EP06718177A patent/EP1856616B1/en not_active Not-in-force
- 2006-01-11 DE DE602006020363T patent/DE602006020363D1/de active Active
- 2006-01-20 TW TW095102267A patent/TWI406295B/zh not_active IP Right Cessation
-
2007
- 2007-07-17 IL IL184675A patent/IL184675A0/en unknown
- 2007-12-03 US US11/949,618 patent/US7565478B2/en active Active
-
2009
- 2009-06-16 JP JP2009142857A patent/JP5222232B2/ja not_active Expired - Fee Related
- 2009-06-29 US US12/493,500 patent/US8364883B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5640529A (en) * | 1993-07-29 | 1997-06-17 | Intel Corporation | Method and system for performing clean-up of a solid state disk during host command execution |
US20020099904A1 (en) * | 2001-01-19 | 2002-07-25 | Conley Kevin M. | Partial block data programming and reading operations in a non-volatile memory |
US6763424B2 (en) * | 2001-01-19 | 2004-07-13 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
US20020184432A1 (en) * | 2001-06-01 | 2002-12-05 | Amir Ban | Wear leveling of static areas in flash memory |
US6732221B2 (en) * | 2001-06-01 | 2004-05-04 | M-Systems Flash Disk Pioneers Ltd | Wear leveling of static areas in flash memory |
US20030046487A1 (en) * | 2001-08-30 | 2003-03-06 | Shuba Swaminathan | Refresh algorithm for memories |
US20040083335A1 (en) * | 2002-10-28 | 2004-04-29 | Gonzalez Carlos J. | Automated wear leveling in non-volatile storage systems |
US20040177212A1 (en) * | 2002-10-28 | 2004-09-09 | Sandisk Corporation | Maintaining an average erase count in a non-volatile storage system |
Non-Patent Citations (1)
Title |
---|
Park, Chanik et al., "Cost-Efficient Memory Architecture Design of NAND Flash Memory Embedded Systems", Proceedings of the 21st International Conference on Computer Design. 13-15 Oct. 2003 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI715409B (zh) * | 2020-01-08 | 2021-01-01 | 點序科技股份有限公司 | 記憶體管理方法及儲存控制器 |
Also Published As
Publication number | Publication date |
---|---|
EP2112599B1 (en) | 2011-02-23 |
DE602006020363D1 (de) | 2011-04-07 |
KR101304254B1 (ko) | 2013-09-05 |
WO2006078531A3 (en) | 2006-11-23 |
EP1856616A2 (en) | 2007-11-21 |
EP1856616B1 (en) | 2009-09-09 |
IL184675A0 (en) | 2007-12-03 |
ATE499648T1 (de) | 2011-03-15 |
EP2112599A1 (en) | 2009-10-28 |
US8364883B2 (en) | 2013-01-29 |
WO2006078531A2 (en) | 2006-07-27 |
US20090265508A1 (en) | 2009-10-22 |
US20080091872A1 (en) | 2008-04-17 |
KR20070111470A (ko) | 2007-11-21 |
JP2008529130A (ja) | 2008-07-31 |
JP4362534B2 (ja) | 2009-11-11 |
JP5222232B2 (ja) | 2013-06-26 |
DE602006009081D1 (de) | 2009-10-22 |
JP2009282989A (ja) | 2009-12-03 |
US7315917B2 (en) | 2008-01-01 |
TW200632935A (en) | 2006-09-16 |
US20060161728A1 (en) | 2006-07-20 |
ATE442627T1 (de) | 2009-09-15 |
US7565478B2 (en) | 2009-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI406295B (zh) | 快閃記憶體系統中內務作業之排程 | |
US20060161724A1 (en) | Scheduling of housekeeping operations in flash memory systems | |
US7441067B2 (en) | Cyclic flash memory wear leveling | |
US20080294814A1 (en) | Flash Memory System with Management of Housekeeping Operations | |
US20080294813A1 (en) | Managing Housekeeping Operations in Flash Memory | |
JP4643711B2 (ja) | 状況依存メモリ性能 | |
TWI393140B (zh) | 在一非揮發性記憶體中儲存資料之方法 | |
US7451264B2 (en) | Cycle count storage methods | |
US8593866B2 (en) | Systems and methods for operating multi-bank nonvolatile memory | |
US7882299B2 (en) | System and method for use of on-chip non-volatile memory write cache | |
US7120729B2 (en) | Automated wear leveling in non-volatile storage systems | |
US7467253B2 (en) | Cycle count storage systems | |
KR100983212B1 (ko) | 데이터 런 프로그래밍 | |
US9244631B2 (en) | Lower page only host burst writes | |
US9465732B2 (en) | Binning of blocks for dynamic linking | |
US9195584B2 (en) | Dynamic block linking with individually configured plane parameters | |
WO2008147752A1 (en) | Managing housekeeping operations in flash memory | |
JP2002318729A (ja) | ファイルシステムおよびその制御方法 | |
US8081517B2 (en) | Solid state storage system for uniformly using memory area and method controlling the same | |
US8995183B2 (en) | Data retention in nonvolatile memory with multiple data storage formats |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |