TWI608352B - 資料管理方法以及具有快閃記憶體的裝置 - Google Patents
資料管理方法以及具有快閃記憶體的裝置 Download PDFInfo
- Publication number
- TWI608352B TWI608352B TW106123017A TW106123017A TWI608352B TW I608352 B TWI608352 B TW I608352B TW 106123017 A TW106123017 A TW 106123017A TW 106123017 A TW106123017 A TW 106123017A TW I608352 B TWI608352 B TW I608352B
- Authority
- TW
- Taiwan
- Prior art keywords
- location
- address
- space
- marked
- addresses
- Prior art date
Links
Classifications
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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/7202—Allocation control and policies
-
- 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/7204—Capacity control, e.g. partitioning, end-of-life degradation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Description
本發明係關於一種快閃記憶體裝置,特別係關於將快閃記憶體的位址映射到其他位址。
現今的快閃記憶體在”抹除”操作花費較多的時間並且影響相較於例如位元或位元組大的記憶體區域。因此,即使只在一資料陣列中更新一單一位址(entry),通常需要將整個陣列複製到其他的位置,並且在這個複製的陣列中對該位址更新,猶如在原始陣列更新該位址,並且將新的位置關聯於陣列的位址作為陣列的一映射位址。隨後,原始陣列可以被抹除以作為之後使用。
假如每一物理位置只可以被映射到一邏輯位址,雖然記憶體管理會相當的簡單,但是資料可被重寫的次數就會受限。舉例來說,假如每個邏輯位址具有兩個備用位置,那麼備用陣列的尺寸會是原本原始陣列的兩倍,且原始陣列位址只可以重寫或更新兩次。
值得注意的是,因為一般來說整個陣列中的變化是不可預測的,當採用上述的方式時,可能會發生大部分的備用陣列維持在沒有使用的狀態,直到對要求的位址無法再做出更多的修改。
將快閃記憶體的多個區域映射到一替代的或一邏輯的位址是習知技術,舉例來說,如http://web.stanford.edu/~ouster/cgi-bin/cs140-winter13/lecture.php?topic=flash。
一般來說,在各式各樣的案例中,映射一原始物理位址到一虛擬或一替代的位置必須要消耗儲存空間來使得該原始位址可以保留或維持以保存映射軌跡。
本發明之標的揭露一個示範性的實施例,其為一種資料管理方法,應用在具有一快閃記憶體的一裝置,該資料管理方法可以多重寫入而不需抹除,並且操作在該快閃記憶體的一位址空間中,該位址空間係形成個別地對應於多個位址的多個位置的一陣列,每一位置具有一狀態且可被標記為一空的狀態、一使用中狀態與一拒絕的狀態的其中之一者,並且完全地初始化為該空的狀態,該方法包含:(1)在該位址空間中個別地指定一主要空間以及一替代空間,該主要空間與該替代空間是彼此互斥(exclusively),其中個別地對應於在該替代空間中之多個位址的多個位置是作為在該主要空間中之多個位址的多個替代位置;(2)提供一函數,用以為在該主要空間中的每個位址產生該替代空間中一位址序列,每一位址序列包含該主要空間中所述的位址且由該主要空間中所述的位址作為開頭,該位址序列可稱為一路徑(path),該函數進一步使得為了該主要空間中的不同位址所產生的多個路徑不需要是彼此隔離的,而使得某些
路徑具有某些共享的位置;(3)當試圖要讀取該主要空間中之一位址所對應的一位置的值時,在由所述位址所產生的一路徑上搜尋沒有被標記為該拒絕的狀態的一第一位置,搜尋到的該第一位置係做為所述位址的一目前替代位置,並且回傳儲存在該目前替代位置中的值作為該主要空間中的所述位址的值;(4)當試圖要更新該主要空間中之一位址所對應的一位置的值時,標記關於該位址的該目前替代位置為該拒絕的狀態,且進一步沿著該路徑在該替代空間中搜尋一新的替代位置,並且如果直到找到標記為該空的狀態的位置前沒有遇到標記為該使用中狀態的位置,則寫入一更新值到所找到標記為該空的狀態的該位置,並且將所找到標記為該空的狀態的該位置標記為該使用中狀態,使得所找到標記為該空的狀態的該位置作為該主要空間中的所述位址的該目前替代位置;(5)如果在搜尋過程中遇到標記為使用中的位置時,決定關於所遇到的該位置在主要空間中的該位址,所遇到的該位置作為該現有替代位置,並且暫時地清除所遇到的該位置上儲存的資料但保留所決定的該位址以及所遇到的該位置的資料以便後續處理,並且標記所遇到的該位置為該拒絕的狀態,並且繼續沿該路徑進行搜尋,之後替所有被清除的位址以及資料開始搜尋一新的替代位置以及資料;(6)該裝置提供在替代空間中由一主要空間中的一位址所開頭的該路徑,該路徑係由標記為該使用中狀態的一位置所組成,標記為該使用中狀態的該位置可能在一連串標記為該拒
絕的狀態的位置之前,其中標記為該使用中狀態的該位置是作為一唯一的替代位置,該唯一的替代位置係個別地對應於在該路徑中開頭之該主要空間的該位址;其中,該資料管理方法是藉由嵌入在該裝置中的至少一處理元件被連續地執行。
100‧‧‧佈局
102‧‧‧主要空間
104‧‧‧替代空間
112、114、116‧‧‧原始位置
122a、122y‧‧‧映射位置
124a、124b、124c‧‧‧箭頭
200、201、202、204、206、208、210、212、214、216、218、220、224、226、228、230、232、234‧‧‧操作
A~C‧‧‧位置
a~y‧‧‧位置
L‧‧‧長度
本發明的標的的一些非限制的示範性例子或特徵是以接下來的附圖來說明。相同或重複或相等或相似的結構、元件或部件會以相同的元件符號標示於一或多個圖示中,或選擇性地用一額外的字母或字來區別兩個相似的實體或實體的差異,並且可能不會重複的標示或描述。
第1圖為根據本發明標的之一示範性實施例所描述的在一快閃記憶體中映射的安排方式的示意圖;以及第2A至2C圖為根據本發明標的之一示範性實施例所描述的一快閃記憶體的一裝置內的位址映射管理的操作流程圖。
在本發明的內文中,在記憶體裡的一第一位址到第二位址的映射指的是分配該第二位址作為替代位置來替代該第一位址。
在本發明中的某些實施例的內文中,一原始位址或是一原始位置指的是一記憶體中之一物理位址,或一區域內中還未被映射到其他地址及/或可進一步映射到一不同區域內的其他位址的位置,而不是已作為一原始位址或原始位置之一替代位址或一交替位址之一映射後的位址或位置,然非用以限
制於此。
為了簡潔與清楚,在本發明中,除了有特別指明以外,所提到的一記憶體都代表為一快閃記憶體,但非用以限定本發明。在本發明的內文中,所提及一記憶體的一區段(segment),或者簡稱為一區段,指的是一記憶體資料的一集合或一陣列,例如在快閃記憶體領域中所習知的一區塊或一物理頁,但非用以限定本發明。為了簡潔與清楚,可根據區段所扮演的角色及/或其所應用的操作來假設其為區塊或物理頁,但非用以限定本發明。
在本發明的內文中,所提及的一位置(如記憶體中的一位置),指的是記憶體中一特定的位址所對應的一資料項目,其係,如此一來,在本文中位址以及位置可互換地代表,但非用以限定本發明。
在本發明的內文中,一標誌(flag)指的是用以代表狀態的一資料單元,但非用以限定本發明。一般來說,一標誌是以一位元實現,然而在資料尺寸並沒有限制或禁止的情況下,標誌可以半位元組(nibble)或一位元組實現。標誌可以嵌入於及/或關聯於及/或連結於或其他耦合於記憶體的區段。一般來說,可以多個標誌的狀態或其組合來代表一位置的狀態。設定一位置的狀態也稱為將一位置標誌(flagging)或標註(marking)到一狀態。
在本發明的內文中,所提及的一連續處理(continuous process)指的是該處理是連續或反覆地的操作及/或被操作而非一單一次處理,但非用以限定本發明。
本發明所處理的一個技術上的問題是建立以及維持一快閃記憶體裝置中之一記憶體的原始位址對其他位址的映射,而不需要複製位址。
本發明所處理的另一個技術問題是多次地更新在一快閃記憶體裝置中之記憶體內的值。
本發明標的所處理的其他技術問題是在記憶體中決定由複數個原始位址映射而來的位置,以減少將原始位址映射到相同位置所產生的映射衝突的可能。
根據本發明標的所提出的解決一技術問題的方法是將一記憶體的位址空間分割為一原始位址空間(在本文中也稱作是一主要空間)以及一其他位址空間(在本文中也稱作是一替代空間)。
記憶體中的每一區段是藉由如共同儲存器或一連結而關聯於兩個標誌。一標誌代表著”使用中”,而另一個的標誌代表著”拒絕的”。當代表”使用中”的標誌處在”開啟(on)”狀態,其表示該區段目前正被用來儲存寫入的資料。當代表”拒絕的”的標誌處在開啟狀態,表示該區段目前是不能被使用,例如不能被用來實行映射位址或儲存值。在最初所提供的記憶體中,兩個標誌可都是在”關閉”狀態,其代表該區段是空的且可以用來寫入。
當主要空間中的一原始位置需要被映射到替代空間中的一位置時,例如因為需要為了更新而被抹除,將藉由一方式或一機制評估在替代空間中的一位址,以稀疏地分配這個被評估的位址,進而避免或減少在替代空間中,該些原始位址
發生相同映射(duplicating mapping)的可能性。舉例來說,利用地點分離技術(positions separation technique)或其他合適的技術、或例如一線性回饋移位暫存器(LFDR)的機制而藉由反轉或重建構其操作來辨識一位置來自於哪一個原始位置。為了將主要空間中的位址映射到替代空間中,地點分離技術或函數會對原始位址產生或評估一或多個在替代空間中用來讓原始位址映射的位置。其中,各原始位址關聯到在替代空間中的各位置也可稱為一路徑。
之後,假如在替代空間中找到一可使用的(free)區段或一位置,也就是代表”使用中”以及”拒絕的”標誌都是關閉的,則將更新的值寫入這個可使用的位置,並且將代表”使用中”的標誌設定為開啟狀態,將代表”拒絕的”標誌維持在關閉狀態,並且在主要空間中,其值曾被更新的該區段是被標記為”拒絕的”狀態,且在一情況或其他情況下是可以被抹除的。
除此之外,假如在替代空間中所評估的位址被一值所佔據,也就是代表”使用中”的標誌是開啟的,意思是在替代空間中這個所評估的位址已經被主要空間所映射,這樣一來映射衝突或牴觸便即將發生。因此,將對在替代空間中的後續位址進行如上所述的評估直到找到一個可使用的位置,並且在發生衝突的位置中的值會被複製到新找到之可使用的位置,並且發生衝突的區段會標記為”拒絕的”。
此外,之前要被更新的位置是寫入或排程來寫入一空的位置,該空的位置係在替代空間中藉由如前所述的機制來評估。
上面所示範性的描述關於更新在主要空間中的值,並且相同原理亦可應用於更新在替代空間中的值。
於是,當反覆地更新在記憶體中的值時,在一個階段中,記憶體一般是由標記為空的位置、”使用中”的位置與”拒絕的”的位置所組成。這些標記為空的位置可用來做為寫入的候選者,標記為”使用中”的位置是已經被寫入的位置,並且”標記為拒絕的”的位置代表先前已被使用,且至少在目前不具有映射資格的位置。在評估的路徑中不同標記的位置可以被看作形成多個軌跡,其係嘗試尋找與其他路徑互斥的路徑,以避免在主要空間中的位址與在替代空間中實際上有限的位址空間之間的映射衝突。
如前所述的標誌是作為一非限制性的例子,用來標記或標誌記憶體中的一位置,也可以使用其他的方法。舉例來說,標誌的組合可以不同,或資料結構具有三個互斥的狀態,以表示空的,使用中的以及拒絕的狀態。或者也可以在靜態記憶體(如靜態隨機隨取記憶體(SRAM))的一區域中使用查找表,該靜態記憶體是嵌入或連結於該快閃記憶體。
本發明標的之一潛在技術效果是一個具有位址映射功能之多重可寫入處理器所控制的快閃記憶體裝置,其可避免映射衝突,以減少消除動作,並且因此能有效地使用記憶體中的有效空間。
實施本發明的一普通且非限制性的描述將於下面提出,其概述了本發明的實施例的示範性實施方式以及提供一建設性的基礎,用以對實施例進行變異、替換或分歧,其中的
某些實施例將會隨後描述。
第1圖根據本發明的標的之一示範性實施例所描述的用在一快閃記憶體中的映射管理的一佈局100。接下來關於佈局100的描述是以範例來傳達操作的原理,並不代表任何限定或是限制。
佈局100示範性的舉例了主要空間102,其在多個原始位址上具有多個原始位置,並且替代空間104具有由在主要空間102中的原始位址所映射及/或基本地可由主要空間102中的原始位址所映射之多個位址上的多個位置。
在主要空間102以及替代空間104中的所有位置都可以被標誌或標註,例如藉由旗標或其他建構方式,以作成三個互斥的狀態。這些狀態可以分別代表空的或使用中或被拒絕的,其中所有的位置被預設及/或初始化為空的狀態,也就是沒有被使用且接下來可以被寫入的狀態。
在主要空間102中的各個位置係由帶有大寫英文字母A、B、C的圓圈所表示,分別代表的是位置A到位置C,並且也可以分別標示作為原始位置112到原始位置116。同樣地,在替代空間104中的各個位置係由帶有小寫英文字母a到y的圓圈所表示,分別代表的是位置a到位置y,並且也可以表示為映射位置122a到映射位置122y,使得位置A到位置C以及位置a到位置y中的任一個代表記憶體中一個位置或該位置的一位址及/或一區段的一位址。
箭頭124a示例地說明了在替代空間104中的多個位置被連續地評估以決定讓主要空間102的位置A進行映射的
位置,如之後所進一步描述的。同樣地,箭頭124b以及箭頭124c示例地分別說明了在替代空間104中的多個位置係被連續地評估以決定讓位置B以及位置C進行映射的位置。箭頭124a、箭頭124b以及箭頭124c也可共同地稱為箭頭124,但不限定於此。
在一些實施例中可提供一演算法程序用以為主要空間102中的每一個位址產生與替代空間104的多個位置關聯之一位址序列。位址序列又可被稱為一路徑或一蹤跡(trail),其係關聯且起始於主要空間102中的一位址,並將替代空間104的多個位置相連接。舉例來說,由位置A、p、q、l、x、s以及b所構成的一位址序列係關聯且起始於位置A的一路徑。又或者舉例來說,由位置C、q、p、x、s、e以及l所構成的一位址序列係關聯且起始於位置C的一路徑。
此演算法程序也可標示為一路徑函數,且可特徵化為Path(A)=[p,q,l,x...],表示起始於位置A的路徑在替代空間104所關聯的多個連續性的位置。同樣地,起始於位置B以及位置C的路徑在替代空間104所關聯的多個連續性的位置可以根據佈局100的例子而特徵化為Path(B)=[i,r,p,m...]以及Path(C)=[q,p,x,s...]。其中,在函數中的省略符號(...)表示由主要空間102到替代空間104進一步的可能及/或其他的及/或替代的連續性評估結果。
這些路徑函數配置的目的在於產生有別於其他路徑的路徑,藉以避免或防止在主要空間102的任何位置的映射衝突(mapping conflicts)。然而,例如歸因於替代空間104的容量限制及/或為了簡化或增強處理程序,關聯於主要空間102中
不同位址的多個路徑間不需要彼此獨立,也就是在替代空間104中的一位址可以關聯於在主要空間102的相異位置。舉例來說,位置p皆係由位置A、B及C所產生,並且位置x皆係由位置A以及C所產生。
這些產生的路徑可以被反轉以及反向追蹤或重新建構來找尋或辨識每一個位置及先前進行的位置直到關聯於該路徑的該些原始位置,且辨識出該路徑係由在主要空間102中哪個位置開始的。
相反於簡化的例子(已被寫入在主要空間102中標誌為”空的”的位置的資料是完整的),一般來說或典型來說在主要空間102的資料是需要被更新的。
為了簡化,假設在一預備狀態(preliminary state)中,在替代空間104中還沒有位置被寫入資料,也就是,在替代空間104中的所有位置被標記為空的。如此一來,當要更新在主要空間102的一位置的值時,可以根據該位置所對應的路徑函數在替代空間104中找到一個位置以使該更新值寫入其中,該位置會被標記為使用中,因此在主要空間102中的該位置會被標記為拒絕的狀態。
之後,一般來說,寫入替代空間104中的該值會需要被更新,因此會根據該路徑函數於替代空間104中找到一位置並將該更新值寫入其中,而所找到的該位置會被標記為使用中,並且在替代空間104中先前的位置會被標記為拒絕的。
於是,在單純化的說明例子中,在主要空間102以及替代空間104中之位置更新大部分是類似的,該路徑函數不
會遇到任何位置是標記為拒絕的以及使用中。
在簡單預備安排的狀況下,大部分位置會被標記為空的,並且少數且分離的位置會被標記為使用中及拒絕的。然而,當記憶體不斷地更新下去時,將使簡單預備安排被破壞。記憶體的處理將會在下面詳細的說明。
於是為了更新在一路徑中的一位置的值,便在替代空間104中由該路徑函數所決定的連續性的多個位置實行搜尋,以找到被標記為空的位置。在搜尋中,如果遇到被標記為拒絕的位置就跳過,並且繼續搜尋直到遇到被標記為空的位置或使用中的位置。
假如找到一個被標記為空的位置,便將該更新值寫入這個找到的位置且該位置也被標記為使用中,而原來儲存欲更新之該值的該位置會被標記為拒絕的。
替代地,假如在搜尋過程中遇到一個被標記為使用中的位置,表示這個所遇到的位置已經被主要空間102的一位置所映射。這個所遇到的位置會被標記為拒絕的,並且所遇到的位置在主要空間102的相關位址與所遇到的這個位置中的值是一起被決定的,而在主要空間102的相關位址與所遇到的這個位置中的值是暫時地保存於如一備用儲存(auxiliary storage)中,並且隨後會如下所述地藉由這些保存的資料按照排程或排列來更新。接著,搜尋過程持續進行直到找到一個位置標記為空的,並且該更新值便寫入這個找到的位置且該位置也被標記為使用中,而原來儲存欲更新之該值的該位置會被標記為拒絕的。
接著,便根據關於主要空間102的保存位址的該路徑函數來進行排程或排列更新操作(跳過可能被標記為拒絕的位置)直到在替代空間104中找到被標記為空的位置。該保存的值是寫入這個找到的位置,且該位置也被標記為使用中。
然而,在執行搜尋過程中可能會遇到其他標記為使用中的位置,並且同時將這些所遇到的位置標記為拒絕的。這些所遇到的位置在主要空間102中的相關位址係與這些所遇到的位置中的值一起決定的,在主要空間102的這些相關位址與這些所遇到的位置中的值是暫時地保存起來。進一步來說,如上所述,隨後由這些保存的資料會按照排程或排列來更新。當搜尋到被標記為空的位置時,更新操作便會實行。同樣的原理也應用在如當在搜尋過程中執行更新操作時遇到標記為使用中的位置,並且當所有遇到標記為使用中的位置中的值以及在該路徑中要更新的值儲存於標示為空的位置時,更新操作便結束。
在某些實施例中,在主要空間102的這些位置並沒有被保存,因為這些位置可能如上所述的被決定了。
於是,在佈局100的例子之後,假設位置A到位置C中的任何一個被更新,也就是說,原始的位置A到位置C是分別映射到位置p、i以及q。舉例而言,接著,位置C所相關的資料要被更新,那就是映射自位置C的位置q要被更新。接著,藉由使用路徑函數可知,接下來的位置是位置p,然而,可更藉由路徑反轉(path reversal)得知位置p已被由位置A而來的資料所佔據。因此,位置p的資料便會排程較晚一點寫入,並且位
置p被標記為拒絕的。
根據該路徑函數,可得知在位置p之後的下一個位置是位置x,且位置x是可使用的(即空的),因此,位置C的資料就會由位置q移動到位置x,並且因此位置q被標記為拒絕的。
根據該路徑函數,當由位置A開始進行搜尋,將跳過被標記為拒絕的位置p以及位置q,因此找到位置1是一可使用的位置,並且位置A的資料(先前由位置p獲取的)被排程寫入位置1。
接著,再更舉一例,根據該路徑函數,當位置B所相關的資料要被更新時,將由位置B經由位置i映射到位置r,從而使得位置i被標記為拒絕的。相應地,為了進一步更新位置B,將根據該路徑函數實行由位置B到位置p的一搜尋,然而位置p是被識別為已經被標記為拒絕的並且因此跳過位置p,搜尋繼續到位置m時發現位置m是可以使用的,並且位置B所相關的資料為如同被更新地寫入位置m,從而將位置r標記為拒絕的。
值得注意與強調的是,路徑係以有助於利用其上之位址回溯或逆轉朝向主要空間102的原始位址的方式所產生。在某些實施例中,該路徑函數是配置用來反向使得在路徑中的一已知位置的前一個位置可以被重建或是反向產生。
在某些實施例中,該路徑函數係以前述的LFDR實現。LFDR一般而言可形成如:x=left_shift(right_shift(x))。於是,具有一長度(即位置的數量)的路徑可以藉由疊代結束在已知的位置且具有正在增加的長度的所有路徑來回溯或重建。
在某些實施例中,一路徑關聯至主要空間102的原始位置可藉由在路徑中連續的疊代來找到,並且當映射到記憶體時,是以一反向方式跳過標記為拒絕的位置。舉例來說,在主要空間102中的位址是藉由重複地檢查所有在主要空間102中的位址來辨識,關聯於主要空間102的路徑具有一連續地逐漸增加的長度,其係由位置1朝向位置s的末端。其中,這種檢查的步驟包含了查證該路徑上被標記為使用中的一位置是否處於一連串標記為拒絕的多個位置之後。
第2A至2C圖為根據本發明標的之一示範性實施例所描述的一快閃記憶體的一裝置內的位址映射管理的操作200的流程圖。
原則上操作200概述了一重複及/或疊代過程以說明其基本操作,其中可重複運作的部分將不會重複說明。
為了清楚起見,將以帶有字母的圓圈表示頁面之間的接續,並以帶有方塊的圓圈符號表示回到操作201。
在操作202中,將快閃記憶體的位址空間分別地指派為一主要空間以及一替代空間。
在操作204中,提供一函數(亦可稱之為一路徑函數)用來操作以對應主要空間102中的每一位址產生關聯至替代空間104的位址序列,並且每個位址序列是包含且由所述之主要空間102的位址作為開頭,位址序列為了清楚與便利的緣故亦可稱為一路徑。函數的進一步操作使關聯於在主要空間102中不同位址的路徑至少在某些程度上有別於其餘的路徑。
位置空間包含了可定址的位置,每一個位置可被
至少三種狀態(空的、使用中或拒絕的)作記號或標記。其中初始時所有的位置都被標記為空的。
在操作201中,檢查是否更新及/或是試圖更新儲存在一路徑上的一位置的值。假如不更新,操作201將在某些情況下再次開始進行。舉例來說,在一預定時間之後及/或響應於試圖存取或更新記憶體一位置的事件,操作201將再次開始進行。
否則,當在操作201中決定更新及/或是試圖更新一位置的值時,則在操作206中將所述位置標記為拒絕的。
接著,在操作208中,在替代空間104中沿著路徑函數所產生的路徑對其上的位置進行連續性的搜尋。
接著,在操作210中,檢查是否在搜尋中遇到被標記為使用中的位置直到找到被標記為空的位置。
假如於操作210的判斷結果為否,即沒有遇到被標記為使用中的位置,接著在操作212中,將該更新的值寫入被標記為空的位置。
舉例來說,該更新的值可以藉由讀取該路徑中的所述位置中的值以及儲存與更新於一暫時的儲存器而獲得,並且該更新的值接著寫入記憶體。可選擇地或替代地,也可使用其他方法例如在寫入記憶體之前使用暫存器或靜態儲存器來更新這個值。
接著,在操作214中,找到的位置標記為使用中,並且操作程序回到操作201。
另外,假如於操作210的判斷結果為是,即在搜尋
中遇到標記為使用中的一位置,那麼在操作216中,決定關於所述位置在主要空間102的位址。
接著,在操作218中,暫時保留在所述所過到的位置中所儲存的資料。
在操作220中,將所述所遇到的位置標記為拒絕的。
之後,在操作224中,持續地沿著由路徑函數決定的路徑在替代空間104中搜尋,直到找到被標記為空的位置。
值得注意的是,在搜尋的過程中,可能會遇到一或多個位置是被標記為使用中,但如前所述,這種複雜性在此並不描述,並且處理的方式可以直接地及/或間接地由處理一被標記為使用中的位置而推導出。
接著,在操作226中,將該更新的值寫入所找到的標記為空的位置。注意的是,關於寫入更新的值的操作已在操作212中被說明。
在操作228中,將該找到的位置標記為使用中。
在操作230中,開始沿著開頭為先前在主要空間102中所決定的位址的路徑進行搜尋直到找到被標記為空的一新的位置。
值得注意的是,在搜尋的過程中,可能會遇到一或多個位置是標記為使用中,但如前所述,在此並不管理這問題,並且處理的方式可以直接地及/或間接地由處理一標記為使用中的位置而推導出。
在操作232中,將前述所保留的資料寫入於標記為
空的位置,並且在操作234中,將新找到的位置標記為使用中,並且操作程序回到操作201。
關於記憶體管理的一些注意事項如下文所介紹。
將記憶體分割為一主要空間以及一替代空間並不代表沒有剩餘的空間被留存下來。相反地,在某些實施例中,部分的記憶體空間被分配用來管理快閃記憶體,選擇地與快閃記憶體的一控制器共同合作,無論在其內部及/或外部地。
要強調的是,將記憶體分割為一主要空間以及一替代空間並不必定是在物理上的及/或機構上的及/或電氣上的或電子上的分割,但相反地,記憶體的部分可以任何適當的形式彼此連結。舉例來說,藉由連接器或藉由電磁感應。
在某些實施例中,在替代空間中的多個連續性位置係由如路徑函數所決定。然而,其他的技術也可以用來尋找連續性的多個位置或位址,無論是解析地或是啟發地,關聯於主要空間中的一位址的替代空間中的多個位址是設置為有別於關聯於在主要空間的一第二位址的多個位址,藉以避免映射衝突或牴觸,並且這些位址可以被回溯如找到前一個位置直到原始的那一個位置。舉例來說,如藉由索引或散列表(hash table)來反轉分析的流程或持續追蹤記憶體空間。
值得注意與強調的是,快閃記憶體包含電子電路並且一般也包含一處理器嵌入於其中以作為一控制器,並且根據前述所揭露之內容藉由該嵌入的處理器及/或一外部處理器實行記憶體管理。
注意的是,被標示為拒絕的位置可改正為在之後
使用。舉例來說,在區段或區塊中的被標記為拒絕的位置可以被抹除於是改正為可以寫入。
為了清楚的緣故,值得注意的是,關於在路徑內或路徑上的一位置表示為沿著一個包含在主要空間中之該位置的一個路徑上的一位置,而且該路徑由在主要空間中的該位置起頭。
本發明揭露在具一快閃記憶體的一裝置中的資料管理的一方法,並且可以重複寫入而不需要抹除,並且操作在快閃記憶體的一位址空間,其係形成為關於多個位址的一位置陣列。其中的每個位置具有可以標記為空的、使用中的與拒絕的狀態中的任一種,且可完全地被初始化為該空的狀態。這個方法包含了在該位址空間中個別地指定一主要空間以及一替代空間,該主要空間與該替代空間是彼此互斥。其中個別地對應於在替代空間中之多個位址的多個位置是作為在該主要空間中之多個位址的多個替代位置。提供一函數,用以為在該主要空間中的每個位址產生關聯至替代空間的一位址序列。每一位址序列包含且起始於該主要空間中所述之位址,該位址序列亦可稱為一路徑。該函數進一步使得為了該主要空間中的不同位址所產生的複數個路徑不需要與其他路徑彼此隔離的,而使得某些路徑之間具有某些共享的位置。當試圖要讀取該主要空間中之一位址所對應的一位置的值時,在由所述位址所產生的一路徑上搜尋沒有被標記為拒絕的狀態的一第一位置,搜尋到的該第一位置是做為所述位址的一目前替代位置,並且回傳儲存在該目前替代位置中的值作為該主要空間中的所述位址的
該值。當試圖要更新該主要空間中之一位址所對應的一位置的值時,標記關於這個位址的該目前替代位置為拒絕的狀態,且進一步沿著該路徑在該替代空間中搜尋一新的替代位置,並且如果沒有遇到被標記為該使用中狀態的一位置即找到標記為該空的狀態的一位置,則寫入一更新值到所找到被標記為該空的狀態的該位置,並且將所找到被標記為該空的狀態的該位置標記為該使用中狀態,使得所找到被標記為該空的狀態的該位置作為該主要空間中的所述位址的該目前替代位置。除此之外,假如在前述搜尋過程中遇到被標記為使用中的一位置時,決定關於所遇到的該位置在主要空間中的該位址,所遇到的位置作為該現有替代位置,並且暫時地清除所遇到的該位置上儲存的資料但保留所決定的該位址以及所遇到的該位置的資料以便後續處理,並且標記所遇到的位置為該拒絕的狀態,並且繼續沿該路徑進行搜尋,之後替所有被清除的位址以及資料開始搜尋新的替代位置,並且之後快閃記憶體裝置提供在替代空間中由一主要空間中的一位址所開頭的該路徑,該路徑係包括被標記為該使用中狀態的一位置,且被標記為該使用中狀態的該位置可能在一連串標記為該拒絕的狀態的位置之後。其中被標記為該使用中狀態的該位置是作為一唯一的替代位置,該唯一的替代位置係個別地對應於在該路徑中開頭之該主要空間的該位址。其中,該方法是藉由嵌入在裝置中的至少一處理元件連續地執行。
在某些實施例中,這些路徑係藉由函數以一可反轉的方式所產生,其允許為在替代空間中的一路徑的每一個位
置進行計算,以得到在主要空間中帶領該路徑的一位址。
在某些實施例中,這些路徑係由所述提供的函數所產生,使得結束於位置s的一長度L的路徑在主要空間中的位址可以計算出來。
在某些實施例中,辨識一路徑在主要空間中的起始位址的步驟是藉由重複地檢查在主要空間中的所有帶領一路徑的位址來辨識,該路徑具有一連續地逐漸增加的長度,其係由位置1朝向位置s的末端。其中,上述檢查包含了查證該路徑上的被標記為該使用中狀態的一位置是否處於一連串標記為該拒絕的狀態的多個位置之後。
要注意的是,使用”空的”、”使用中”、”拒絕的”這些用詞是為了清楚的緣故,並且任何其他可用來區別狀態的用詞或指示或構詞也可以使用。進一步來說,一個狀態可由其他狀態來指示。舉例來說,假如兩個狀態是個別地被標記為”非拒絕的”以及”非使用中”,那麼一空的狀態就被暗示出來,使得表示為”空的”的獨立狀態變為多餘的或不需要的。
在本發明的某些實施例的內文中,藉由舉例的方式並且並非用以限制,”操作”、”執行”這些用詞也可以指的是能力,例如分別為”可操作的”、”可執行的”。
”處理器”、”電腦”或其系統等用詞在此是用來作為本領域中的普通的背景,例如一通用目的處理器或一微處理器,RISC處理器或DSP,可能包含額外的元件例如記憶體或通訊埠。選擇地或額外地,”處理器”、”電腦”或其衍生的用詞代表一裝置,其是可以實行所提供或協作的程式及/或可以控制
及/或存取資料儲存裝置及/或其他裝置如輸入輸出埠。”處理器”、”電腦”這些用詞也代表複數個處理器或相連的電腦,及/或連結的及/或其餘通訊的,可能的分享一或多個資源(如一記憶體)。
”軟體”、”程式”、”軟體程序”或”程序”或”軟體碼”或”碼”或”應用程式”可以根據其內文而互相交換使用,並且代表用來執行一操作序列的一或多個命令或指令或電路,該操作序列一般代表的是演算法及/或其他程序或方法。程式是儲存一媒體的裡面或上面,例如隨機存取記憶體、唯讀記憶體或光碟或嵌入在電路中可藉由一裝置如處理器或其他電路存取且執行的。
處理器以及程式可建構相同的裝置(至少部分地),例如電子閘的一陣列,例如FPGA或ASIC,設計用來執行一程式化的序列操作,選擇地包含或連結於一處理器或其他電路。
如在本文中所使用的,且沒有用來限制的,一模組代表一系統的一部分,例如一程式的一部份與一或多個其餘在相同單元或不同單元的部分進行操作或互動,或一電子元件或組件,用以與一或多個其他元件互動。
用於一目標或其變化的用詞如”配置”及/或”採用”,指的是使用至少一軟體及/或電子電路及/或輔助裝置,其是設計及/或實現及/或可操作或操作以達成該目標。
一裝置儲存及/或包含一程式及/或資料建構了一製造產品。除了其他特別指定以外,程式及/或資料是儲存在
一非揮發性媒體內或上。
假如有揭露電氣的或電子的裝置的話,其是假設一適當的電源供應器用來供應其操作。
流程圖或方塊圖是根據本發明不同實施例來描述架構、功能或系統可能實現的操作、方法以及電腦程式化產品。在這方面,在流程圖中的每一個方塊或方塊圖可以代表一模組、一區段或程式碼的一部分,其係包含一或多個可執行的指令,用以實現特定的邏輯功能。值得注意的是,在某些替代性的實施中,可以用不同的順序或組合或同時操作來取代順序操作,以達成相同或等效的效果。
相對應的結構、材料、動作、或所有裝置的等效或步驟功能元件在下方的權利要求中,是用以包含任何結構、材料或動作以執行結合於其他所要求的元件的功能,當特別要求時。如同在本文中所使用的,除了文中特別指示以外,單數形式的”一”或”該”也是用來包含複述形式。可以進一步了解的是,當在說明書中使用”包含”及/或”具有”這些用詞時,其係具體指明了狀態特徵、整體、步驟、操作、元件及/或零件的呈現,但不排除一或多個狀態特徵、整體、步驟、操作、元件、零件及/或其群體的呈現或加入。
如文中所使用的,在兩個實體或值之間的省略符號(...)個自地代表實體或值的一範圍。舉例來說,A...Z指的是從A到Z中間所包含的所有字母。
在文中使用的術語不應被認為是限制,除了特別指明以外,並且只是為了描述特定實施例,並且並非意圖限制
本發明之標的。當本發明標的之某些實施例被說明或描述時,可以清楚的知道所揭露的內容並非用來限制文中所描述的實施例。並沒有排除許多的修改、改變、變異、替代或等效置換。
附錄
作為本發明之附錄,下面呈現了一組用假程式碼(pseudo code)的程序,可實際地使該領域之技藝者根據本發明標的所揭露之示範性實施例而能自我了解到概括記憶體管理以及某些輔助的操作。
1. 編碼取決於尚未被決定的變數n_bits_in_the_address且定義兩個長度為2 n_bits_in_the_address 的陣列(其中一陣列為主要記憶體陣列,另一個陣列為替代記憶體陣列)。在本例子中,兩陣列的長度為一樣的,但在其他實施例中,兩陣列長度也可以不一樣。
main_memory=['empty']*(1<<n_bits_in_the_address)
subs_memory=['empty']*(1<<n_bits_in_the_address)
2. 可利用由多項式p所定義的LFSR使路徑為偽隨機的,且避免兩路徑相撞的情況。
p=(1<<n_bits_in_the_address)| 0x13
def left_shift(x):x<<=1 if x &(1<<n_bits_in_the_address):x ^=p return x def right_shift(x):if x & 1:x ^=p x>>=1 return x
3. path_from為返回在替代空間中的位址序列的函數,所述
位址序列起始自主要空間的已知位址(address)。
def path_from(address,length=MAX_LEN):for index in range(length):yield address address=right_shift(address)^ index
4. path_to為返回主要空間中的位址以及它在替代空間的路徑的函數,其係藉由已知的長度(length)與替代空間中的已知的地址(address)來定義。
def path_to(address,length):path=[]for index in reversed(range(length-1)):address=left_shift(address ^ index)path.append(address)path.reverse()#the path starts in the main_memory at 'address' return address,path def read(address):data=main_memory[address]if data=='rejected':for addr in path_from(address):data=subs_memory[addr]if data!='rejected':break return data def origins(address):# we are looking for all possible start addresses in # main_memory that now map to the 'address' # namely,they pass through annuled rejected locations only path_len=0 while True:path_len+=1 start_addr,path=path_to(address,path_len)if main_memory[start_addr]!='rejected':continue if all(subs_memory[addr]=='rejected' for addr in path):yield start_addr def write(queue): # queue is a dictionary of(address:data)to be written.# the algorithm assumes that all addresses in the queue # are already deleted from the memory if not queue:return address,data=queue.popitem()if main_memory[address]=='empty':main_memory[address]=data return write(queue)else:main_memory[address]='rejected' for addr in path_from(address):other_data=subs_memory[addr]if other_data=='empty':# program the data in the subs_memory subs_memory[addr]=data return write(queue)if other_data=='rejected':continue #The addr contains other_data.Find its origin,delete it # and put(origin:other_data)to the queue,# proceed along the path for origin in origins(addr):# the address and all other addresses in the queue can # look as an origin,but they are not if origin!=address and origin not in queue:subs_memory[addr]='rejected' queue[origin]=other_data queue[address]=data break #如果達到這裡,代表在路徑中已沒有更多的空的位置,即返回隊列(queue)
100‧‧‧佈局
102‧‧‧主要空間
104‧‧‧替代空間
112、114、116‧‧‧原始位置
122a、122y‧‧‧映射位置
124a、124b、124c‧‧‧箭頭
A~C‧‧‧位置
a~y‧‧‧位置
Claims (13)
- 一種資料管理方法,應用在具有一快閃記憶體的一裝置,該資料管理方法可以多重寫入而不需抹除,並且操作在該快閃記憶體的一位址空間中,該位址空間係形成對應於多個位址的多個位置的一陣列,各該位置被標記為一空的狀態、一使用中狀態與一拒絕的狀態的其中之一者,並且各該位置在初始時都被標記為該空的狀態,該方法包含:在該位址空間中個別地指定一主要空間以及一替代空間,該主要空間與該替代空間是彼此互斥,其中對應於在該替代空間中之多個位址的多個位置是作為在該主要空間中之多個位址的多個替代位置;提供一函數,用以為在該主要空間中的該等位址產生關聯至該替代空間的多個位址序列,各該位址序列包含該主要空間中該等位址的其中一者及該替代空間中的該多個位址,且各該位址序列的一起始位址為該主要空間中該等位址的其中一者;判斷是否更新該位址序列的該等位址的其中一者所對應的一位置的值;當決定更新該位置的值時,標記該位置為該拒絕的狀態;以及沿著該位址序列在該替代空間中搜尋被標記為該空的狀態的一位置以作為一新的替代位置;其中,如果在搜尋到被標記為該空的狀態的該位置之前沒有遇到被標記為該使用中狀態的一位置,則寫入一更新值 到所找到被標記為該空的狀態的該位置,並且將所找到標記為該空的狀態的該位置標記為該使用中狀態;其中,如果在搜尋到被標記為該空的狀態的該位置之前遇到被標記為使用中的該位置時,決定關聯於所過到的該位置在該主要空間中的該位址,並且暫時地保留所決定的該位址以及所遇到的該位置上儲存的值,並且標記所遇到的該位置為該拒絕的狀態,並且繼續沿該位址序列進行搜尋。
- 如申請專利範圍第1項所述之資料管理方法,其中該函數進一步被配置為使該等位址序列的其中一者與該等位址序列的另一者在該替代空間具有一共享的位置。
- 如申請專利範圍第2項所述之資料管理方法,其中在判斷是否更新該位置的值的該步驟中,該位置是該位址序列所關聯的該主要空間中之該些位址的其中一者所對應的一位置,且該資料管理方法更包括:在判斷是否更新該位置的值的該步驟之前,讀取該主要空間的該位置的值,且在起始自該主要空間的該位置的該位址序列上搜尋沒有被標記為該拒絕的狀態的一第一位置,所搜尋到的該第一位置係做為該主要空間的該位置的一目前替代位置,並且回傳儲存在該目前替代位置中的值作為該主要空間的該位置的該值;其中,在更新該位置的值的該步驟中更包括標記該目前替代位置為該拒絕的狀態;其中,所找到被標記為該空的狀態的該位置被標記為該使用中狀態後係作為該目前替代位置; 其中,所遇到的該位置係作為該目前替代位置,並且暫時地清除所遇到的該位置的值,之後替所有被清除的所遇到的該位置搜尋新的替代位置。
- 如申請專利範圍第3項所述之資料管理方法,其中該裝置提供該位址序列,該位址序列係包括被標記為該使用中狀態的一位置,且在被標記為該使用中狀態的該位置之前還包括一連串標記為該拒絕的狀態的位置,其中被標記為該使用中狀態的該位置是作為該起始位址的一唯一的替代位置。
- 如申請專利範圍第1項所述之資料管理方法,其中該等位址序列係由該函數以該等位址序列是可反轉的方式所產生,允許為在該替代空間中的該位址序列上的各該位置進行計算,以得到該起始位址。
- 如申請專利範圍第5項所述之資料管理方法,其中該位址序列係由該函數所產生,使得結束於一最後位置且具有一長度的該等位址序列在該主要空間的該等位址可以計算出來。
- 如申請專利範圍第6項所述之資料管理方法,其中藉由重複地檢查在該主要空間中的該等位址來判斷該起始位址,該位址序列具有一連續地逐漸增加的長度,其係由一位置朝向該最後位置的末端,其中,上述檢查步驟包含了查證該位址序列上被標記為該使用中狀態的該位置是否處於一連串標記為該拒絕的狀態的多個位置之後。
- 一種具有一快閃記憶體的裝置,可以多重寫入而不需抹 除,並且操作在該快閃記憶體的一位址空間中,該位址空間係形成對應於多個位址的多個位置的一陣列,各該位置被標記為一空的狀態、一使用中狀態與一拒絕的狀態的其中之一者,並且各該位置在初始時都被標記為該空的狀態,該裝置包含一嵌入式處理元件,該嵌入式處理元件係被配置為用以執行下列操作:在該位址空間中個別地指定一主要空間以及一替代空間,主要空間與該替代空間是彼此互斥,其中對應於在該替代空間中之多個位址的多個位置是作為在該主要空間中之多個位址的多個替代位置;提供一函數,用以為在該主要空間中的該等位址產生關聯至該替代空間的多個位址序列,各該位址序列包含該主要空間中該等位址的其中一者及該替代空間中的該多個位址,且各該位址序列的一起始位址為該主要空間中該等位址的其中一者;判斷是否更新該位址序列的該等位址的其中一者所對應的一位置的值;當決定更新該位置的值時,標記該位置為該拒絕的狀態;以及沿著該位址序列在該替代空間中搜尋被標記為該空的狀態的一位置以作為一新的替代位置;其中,如果在搜尋到被標記為該空的狀態的該位置之前沒有遇到被標記為該使用中狀態的一位置,則寫入一更新值到所找到被標記為該空的狀態的該位置,並且將所找到標 記為該空的狀態的該位置標記為該使用中狀態;其中,如果在搜尋到被標記為該空的狀態的該位置之前遇到被標記為使用中的該位置時,決定關聯於所遇到的該位置在該主要空間中的該位址,並且暫時地保留所決定的該位址以及所遇到的該位置上儲存的值,並且標記所遇到的該位置為該拒絕的狀態,並且繼續沿該位址序列進行搜尋。
- 如申請專利範圍第8項所述之具有該快閃記憶體的裝置,其中該函數進一步被配置為使該等位址序列的其中一者與該等位址序列的另一者在該替代空間具有一共享的位置。
- 如申請專利範圍第9項所述之具有該快閃記憶體的裝置,其中在判斷是否更新該位置的值的該步驟中,該位置是該位址序列所關聯的該主要空間中之該些位址的其中一者所對應的一位置,且該嵌入式處理元件更被配置為:在判斷是否更新該位置的值的該步驟之前,讀取該主要空間的該位置的值,且在起始自該主要空間的該位置的該位址序列上搜尋沒有被標記為該拒絕的狀態的一第一位置,所搜尋到的該第一位置係做為該主要空間的該位置的一目前替代位置,並且回傳儲存在該目前替代位置中的值作為該主要空間的該位置的該值;其中,在更新該位置的值的該步驟中更包括標記該目前替代位置為該拒絕的狀態;其中,所找到被標記為該空的狀態的該位置被標記為該使用中狀態後係作為該目前替代位置;其中,所遇到的該位置係作為該目前替代位置,並且暫時 地清除所遇到的該位置的值,之後替所有被清除的所遇到的該位置搜尋新的替代位置。
- 如申請專利範圍第10項所述之具有該快閃記憶體的裝置,其中該位址序列係包括被標記為該使用中狀態的一位置,且在被標記為該使用中狀態的該位置之前還包括一連串標記為該拒絕的狀態的位置,其中被標記為該使用中狀態的該位置是作為該起始位址的一唯一的替代位置。
- 如申請專利範圍第8項所述之具有該快閃記憶體的裝置,其中該等位址序列係由該函數以該等位址序列是可反轉的方式所產生,允許為在該替代空間中的該位址序列上的各該位置進行計算,以得到該起始位址。
- 如申請專利範圍第12項所述之具有該快閃記憶體的裝置,其中該嵌入式處理元件藉由重複地檢查在該主要空間中的該等位址來判斷該起始位址,該位址序列具有一連續地逐漸增加的長度,其中,上述檢查步驟包含了查證該位址序列上被標記為該使用中狀態的該位置是否處於一連串標記為該拒絕的狀態的多個位置之後。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/206,277 US9857988B1 (en) | 2016-07-10 | 2016-07-10 | Data management in multiply-writeable flash memories |
US15/206,277 | 2016-07-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI608352B true TWI608352B (zh) | 2017-12-11 |
TW201810047A TW201810047A (zh) | 2018-03-16 |
Family
ID=60788899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106123017A TWI608352B (zh) | 2016-07-10 | 2017-07-10 | 資料管理方法以及具有快閃記憶體的裝置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9857988B1 (zh) |
CN (1) | CN107590081B (zh) |
TW (1) | TWI608352B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI694449B (zh) * | 2019-09-16 | 2020-05-21 | 旺宏電子股份有限公司 | 記憶體系統以及記憶體操作方法 |
US11194515B2 (en) | 2019-09-16 | 2021-12-07 | Macronix International Co., Ltd. | Memory system, method of operating memory, and non-transitory computer readable storage medium |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200280582A1 (en) * | 2019-02-08 | 2020-09-03 | Interbit Data Inc. | Systems, methods and machine readable programs for isolation of data |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7302518B2 (en) * | 2005-01-20 | 2007-11-27 | Atmel Corporation | Method and system for managing a suspend request in a flash memory |
US20090077306A1 (en) * | 2006-06-08 | 2009-03-19 | Bitmicro Networks, Inc. | Optimizing memory operations in an electronic storage device |
TW201122812A (en) * | 2009-09-03 | 2011-07-01 | 248 Solidstate Inc | Page based management of flash storage |
TW201324144A (zh) * | 2011-12-01 | 2013-06-16 | Silicon Motion Inc | 快閃記憶體儲存陣列控制方法、與快閃記憶體 |
TW201423402A (zh) * | 2012-12-12 | 2014-06-16 | Paneve Llc | 通用目的數位資料處理器、系統及方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101346702B (zh) * | 2005-12-21 | 2012-09-05 | Nxp股份有限公司 | 具有可块擦除单元的存储器 |
US9213627B2 (en) * | 2005-12-21 | 2015-12-15 | Nxp B.V. | Non-volatile memory with block erasable locations |
WO2007072313A2 (en) * | 2005-12-22 | 2007-06-28 | Nxp B.V. | Memory with block-erasable locations and a linked chain of pointers to locate blocks with pointer information |
JP5032371B2 (ja) * | 2008-03-01 | 2012-09-26 | 株式会社東芝 | メモリシステム |
TWI467369B (zh) * | 2008-10-01 | 2015-01-01 | A Data Technology Co Ltd | 混合密度記憶體系統及其控制方法 |
US9442846B2 (en) * | 2009-03-17 | 2016-09-13 | Cisco Technology, Inc. | High speed memory systems and methods for designing hierarchical memory systems |
TWI426528B (zh) * | 2009-09-30 | 2014-02-11 | Phison Electronics Corp | 用於快閃記憶體的區塊管理方法、控制器與儲存系統 |
CN102737068B (zh) * | 2011-04-15 | 2018-06-05 | 北京百度网讯科技有限公司 | 一种用于对检索数据进行缓存管理的方法与设备 |
CN103176912B (zh) * | 2011-12-26 | 2016-01-27 | 中国移动通信集团公司 | 随机写的方法和转换器 |
US9116793B2 (en) * | 2012-06-12 | 2015-08-25 | International Business Machines Corporation | Maintaining versions of data in solid state memory |
US9213634B2 (en) * | 2013-11-22 | 2015-12-15 | Apple Inc. | Efficient reuse of segments in nonoverwrite storage systems |
-
2016
- 2016-07-10 US US15/206,277 patent/US9857988B1/en active Active
-
2017
- 2017-07-10 TW TW106123017A patent/TWI608352B/zh active
- 2017-07-10 CN CN201710555655.9A patent/CN107590081B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7302518B2 (en) * | 2005-01-20 | 2007-11-27 | Atmel Corporation | Method and system for managing a suspend request in a flash memory |
US20090077306A1 (en) * | 2006-06-08 | 2009-03-19 | Bitmicro Networks, Inc. | Optimizing memory operations in an electronic storage device |
TW201122812A (en) * | 2009-09-03 | 2011-07-01 | 248 Solidstate Inc | Page based management of flash storage |
TW201510722A (zh) * | 2009-09-03 | 2015-03-16 | Pioneer Chip Technology Ltd | 以頁面為基礎管理快閃儲存裝置 |
TW201324144A (zh) * | 2011-12-01 | 2013-06-16 | Silicon Motion Inc | 快閃記憶體儲存陣列控制方法、與快閃記憶體 |
TW201423402A (zh) * | 2012-12-12 | 2014-06-16 | Paneve Llc | 通用目的數位資料處理器、系統及方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI694449B (zh) * | 2019-09-16 | 2020-05-21 | 旺宏電子股份有限公司 | 記憶體系統以及記憶體操作方法 |
US11194515B2 (en) | 2019-09-16 | 2021-12-07 | Macronix International Co., Ltd. | Memory system, method of operating memory, and non-transitory computer readable storage medium |
Also Published As
Publication number | Publication date |
---|---|
CN107590081A (zh) | 2018-01-16 |
TW201810047A (zh) | 2018-03-16 |
CN107590081B (zh) | 2020-05-29 |
US9857988B1 (en) | 2018-01-02 |
US20180011632A1 (en) | 2018-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI470429B (zh) | 記憶體裝置及記憶體存取方法 | |
US9229644B2 (en) | Targeted copy of data relocation | |
JP4926982B2 (ja) | フラッシュメモリ内でコピー操作を管理する方法 | |
KR100843135B1 (ko) | 비휘발성 메모리 관리 방법 및 장치 | |
CN113196260B (zh) | 能够选择性使用键部分的键值存储树 | |
US10725930B2 (en) | Logical to physical memory address mapping tree | |
CN101673226B (zh) | Nand错误管理 | |
TWI608352B (zh) | 資料管理方法以及具有快閃記憶體的裝置 | |
EP1988548B1 (fr) | Mémoire non volatile à écriture rapide | |
JP2014038593A (ja) | オンチップのnand型フラッシュメモリおよびその不良ブロック管理方法 | |
WO2007000862A1 (ja) | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法 | |
JP2012173778A5 (zh) | ||
TWI237759B (en) | Method for data accessing in a computer and the computer thereof | |
JP4460967B2 (ja) | メモリカード、不揮発性半導体メモリ、及び半導体メモリの制御方法 | |
US7822940B2 (en) | Apparatus and method for managing mapping information of nonvolatile memory | |
US10248526B2 (en) | Data storage device and data maintenance method thereof | |
US20160267012A1 (en) | Storage device and memory system | |
JP4501881B2 (ja) | メモリコントローラ及びフラッシュメモリシステム | |
CN110231914B (zh) | 数据存储装置及其操作方法 | |
US20080294837A1 (en) | Memory controller for controlling a non-volatile semiconductor memory and memory system | |
US20130080690A1 (en) | Method to emulate eeprom using flash memory | |
CN112466371B (zh) | 一种循环利用闪存模拟字节擦除功能的方法 | |
JP7153435B2 (ja) | 不揮発性メモリのデータ書換方法及び半導体装置 | |
JP4468342B2 (ja) | データ管理方法 | |
JP4866114B2 (ja) | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及びメモリ制御方法 |