本發(fā)明是有關于存儲器裝置,特別是有關于存儲器裝置的存儲器區(qū)塊使用方法。
背景技術:
隨著快閃存儲器工藝規(guī)格持續(xù)演進,更加微縮導致快閃存儲器越來越難達到應有的元件特性。這導致快閃存儲器執(zhí)行編程(program)操作/抹除(erase)操作的效率低落而使數(shù)據(jù)流失??扉W存儲器芯片的讀寫耐用度隨之下滑。有鑒于此,本發(fā)明提出一種存儲器電路及存儲器區(qū)塊使用方法以增加快閃存儲器芯片的讀寫耐用度。
技術實現(xiàn)要素:
本發(fā)明的一實施例提供一種存儲器裝置。該存儲器裝置包括一存儲器、一快閃存儲器陣列、一區(qū)塊解碼器以及一控制邏輯電路。該存儲器用以存儲一旗標和多個模式位。該快閃存儲器陣列包括多個存儲器區(qū)塊。該區(qū)塊解碼器連接至該存儲器和該快閃存儲器陣列,用以依據(jù)該等模式位設定該等存儲器區(qū)塊被該存儲器裝置使用的先后順序。該控制邏輯電路包括至少一計數(shù)器,并連接至該存儲器、該區(qū)塊解碼器和該快閃存儲器陣列,其中該至少一計數(shù)器用以計數(shù)使用中的該存儲器區(qū)塊的一操作次數(shù);其中當該至少一計數(shù)器的該操作次數(shù)大于一既定次數(shù)時,該控制邏輯電路設定該存儲器中的該旗標在一第一狀態(tài);以及其中在該快閃存儲器陣列的該等存儲器區(qū)塊被全部抹除之后,該控制邏輯電路檢測該旗標是否在該第一狀態(tài),若是則該控制邏輯電路在該等模式位之中選取未被選取過的該模式位,使該區(qū)塊解碼器依據(jù)該未被選取過的該模式位設定該等存儲器區(qū)塊被該存儲器裝置使用的先后順序。
本發(fā)明的一實施例一種存儲器區(qū)塊使用方法,包括設定一存儲器所存儲的一旗標和多個模式位;計數(shù)一快閃存儲器陣列的多個存儲器區(qū)塊的每一個對應的一操作次數(shù);檢測該等存儲器區(qū)塊之一對應的該操作次數(shù)是否大于一既定次數(shù);當該等計數(shù)器之一的該操作次數(shù)大于該既定次數(shù)時,設定該存儲器中的該旗標在一第一狀態(tài);在該快閃 存儲器陣列的該等存儲器區(qū)塊被全部抹除之后,檢測該旗標是否在該第一狀態(tài);以及若檢測到該旗標在該第一狀態(tài),則在該等模式位之中選取未被選取過的該模式位,以設定該等存儲器區(qū)塊被使用的先后順序。
本發(fā)明的有益效果在于,通過實施本發(fā)明,可進一步增加產(chǎn)品附加價值,使消費者在固定存儲區(qū)域當中享有集成電路的長效壽命。
附圖說明
圖1是依據(jù)本發(fā)明的一第一實施例實現(xiàn)的一存儲器裝置10的區(qū)塊圖。
圖2是依據(jù)本發(fā)明的一第二實施例舉例說明區(qū)塊解碼器130如何設定該等存儲器區(qū)塊被使用的先后順序。
圖3是依據(jù)本發(fā)明的一第三實施例實現(xiàn)區(qū)塊解碼器130的區(qū)塊圖。
圖4a和圖4b是依據(jù)本發(fā)明的一第四實施例舉例說明如何設定旗標位alarm-flag的一流程圖。
圖5是依據(jù)本發(fā)明的一第五實施例舉例說明如何設定旗標位alarm-flag的一流程圖。
圖6是依據(jù)本發(fā)明的一第六實施例實現(xiàn)一種存儲器區(qū)塊使用方法的一流程圖。
附圖標號
10~存儲器裝置
11~快閃存儲器陣列
12~存儲器
121、122~迷你存儲器陣列
13~x解碼器
130~區(qū)塊解碼器
131~控制邏輯電路
132~地址解碼器
133、134、135、136~與門
14~地址邏輯電路
15~y多工器
16~感測放大器
17~輸入緩沖器
18~輸出緩沖器
a<18:0>、x<18:8>、y<7:0>、a<18:16>~地址數(shù)據(jù)
iq<7:0>~寫入數(shù)據(jù)
sa0-sa7~存儲器區(qū)塊
alarm-flag~旗標位
mode0-mode3~模式位
sa<7:0>~區(qū)塊地址數(shù)據(jù)
scramble0-scramble3~地址轉(zhuǎn)換模式
具體實施方式
本發(fā)明所附圖示的實施例或例子將如以下說明。本發(fā)明的范疇并非以此為限。本領域技術人員應能知悉在不脫離本發(fā)明的精神和架構(gòu)的前提下,當可作些許更動、替換和置換。在本發(fā)明的實施例中,元件符號可能被重復地使用,本發(fā)明的多種實施例可能共用相同的元件符號,但為一實施例所使用的特征元件不必然為另一實施例所使用。
一般或非門快閃存儲器(norflash)主要應用于存儲基本輸入輸出系統(tǒng)(bios)的存儲器裝置。終端產(chǎn)品在開機時,中央處理器會載入bios里的開機碼,以初始化終端產(chǎn)品的硬件和軟件設定。從各領域消費型電子應用中得知,客戶端會對快閃存儲器執(zhí)行編程操作/抹除操作,但快閃存儲器之中不是每個存儲器區(qū)塊都會被大量執(zhí)行編程操作/抹除操作。往往只有幾個存儲器區(qū)塊的小區(qū)域進行編程/抹除動作。因此,本發(fā)明新提出存儲器區(qū)塊使用方法以附予新功能在芯片抹除(erase)指令中,以將快閃存儲器的扇區(qū)(sector)或是區(qū)塊(block)的地址進行重新配置,進而提供健康存儲器區(qū)域作為預定執(zhí)行編程操作/抹除操作的區(qū)域。本發(fā)明新提出存儲器區(qū)塊使用方法亦將劣化區(qū)域轉(zhuǎn)去其他位置,以提升可能數(shù)倍于原先的編程操作次數(shù)/抹除操作次數(shù)。本發(fā)明新提出存儲器區(qū)塊使用方法進一步增加產(chǎn)品附加價值,使消費者在固定存儲區(qū)域當中享有集成電路的長效壽命。
圖1是依據(jù)本發(fā)明的一第一實施例實現(xiàn)的一存儲器裝置10的區(qū)塊圖。在本發(fā)明第一實施例中,存儲器裝置10包括一快閃存儲器陣列11、一存儲器12、一x解碼器13、一地址邏輯電路14、一y多工器15、一感測放大器16、一輸入緩沖器17和一輸出緩沖器18。存儲器裝置10接收地址數(shù)據(jù)a<18:0>、信號輸入
在本發(fā)明第一實施例中,快閃存儲器陣列11包括多個存儲器區(qū)塊(未圖示),其中每一存儲器區(qū)塊各自的p型阱互不相連。因此,每一存儲器區(qū)塊各自為獨立的存儲器區(qū)塊,但本發(fā)明并不限定于此。在本發(fā)明第一實施例中,存儲器12是另一尺寸比快閃存儲器陣列11小的快閃存儲器陣列,但本發(fā)明并不限定于此。存儲器12用以存儲一旗標和多個模式位,其中每一模式位分別對應至這些存儲器區(qū)塊被存儲器裝置10的x解碼器13使用的不同先后順序。x解碼器13包括一區(qū)塊解碼器130和一控制邏輯電路131。區(qū)塊解碼器130分別連接至快閃存儲器陣列11和存儲器12,并用以設定這些存儲器區(qū)塊被存儲器裝置10的x解碼器13使用的先后順序??刂七壿嬰娐?31分別連接至快閃存儲器陣列11、存儲器12和區(qū)塊解碼器130??刂七壿嬰娐?31包括至少一計數(shù)器,其中至少一計數(shù)器用以計數(shù)使用中的存儲器區(qū)塊的一操作次數(shù)。區(qū)塊解碼器130和控制邏輯電路131并不限定于設置于x解碼器13之中。在另一實施例中,區(qū)塊解碼器130和控制邏輯電路131被設置于x解碼器13的外部。
在本發(fā)明第一實施例中,當至少一計數(shù)器的操作次數(shù)大于一既定次數(shù)(例如,28=256次)時,控制邏輯電路131設定存儲器12中的旗標在一第一狀態(tài)(例如,設定旗標的位值為0)。
在本發(fā)明第一實施例中,在快閃存儲器陣列11的這些存儲器區(qū)塊被全部抹除之后,控制邏輯電路131檢測存儲器12中的旗標是否在第一狀態(tài)。若控制邏輯電路131 檢測旗標在第一狀態(tài),則控制邏輯電路131在這些模式位之中選取未被選取過的模式位,以設定這些存儲器區(qū)塊被存儲器裝置10的x解碼器13使用的先后順序。在本發(fā)明第一實施例中,控制邏輯電路131在這些模式位之中選取未被選取過的模式位之后,設定存儲器12中的旗標在一第二狀態(tài)(例如,設定旗標的位值為1)。
在本發(fā)明第一實施例中,前述操作次數(shù)可為存儲器裝置10對存儲器區(qū)塊執(zhí)行抹除操作的操作次數(shù)、執(zhí)行編程操作的操作次數(shù)或是執(zhí)行后編程操作的操作次數(shù)??刂七壿嬰娐?31可分別具有不同的計數(shù)器,以分別統(tǒng)計上述抹除操作次數(shù)、編程操作次數(shù)或是后編程操作次數(shù)。在本發(fā)明另一實施例中,控制邏輯電路131亦可采用單一個計數(shù)器分別統(tǒng)計上述抹除操作次數(shù)、編程操作次數(shù)和后編程操作次數(shù)。
圖2是依據(jù)本發(fā)明的一第二實施例舉例說明區(qū)塊解碼器130如何設定這些存儲器區(qū)塊被使用的先后順序。在本發(fā)明第二實施例中,快閃存儲器陣列11被劃分為存儲器區(qū)塊sa0、存儲器區(qū)塊sa1、存儲器區(qū)塊sa2、存儲器區(qū)塊sa3、存儲器區(qū)塊sa4、存儲器區(qū)塊sa5、存儲器區(qū)塊sa6和存儲器區(qū)塊sa7。存儲器12包括一迷你存儲器陣列121和一迷你存儲器陣列122。迷你存儲器陣列121用以存儲一旗標位alarm-flag,而迷你存儲器陣列122用以存儲多個模式位mode0、mode1、mode2和mode3。區(qū)塊解碼器130接收模式位mode0~mode3和地址數(shù)據(jù)a<18:16>,并依此輸出區(qū)塊地址數(shù)據(jù)sa<7:0>至快閃存儲器陣列11,其中地址數(shù)據(jù)a<18:16>和存儲器區(qū)塊sa0~sa7的對應關系表示于表一如下:
表一
在本發(fā)明第二實施例中,控制邏輯電路131分別連接至迷你存儲器陣列121和迷你存儲器陣列122。控制邏輯電路131依據(jù)接收自迷你存儲器陣列121中的旗標位alarm-flag設定迷你存儲器陣列122中的模式位mode0~mode3。
在本發(fā)明第二實施例中,若存儲器裝置10是一并列式(parallel)快閃存儲器,則這些存儲器區(qū)塊sa0~sa7以扇區(qū)(sector)的不同進行劃分,亦即快閃存儲器陣列11所具有的8個扇區(qū)進行劃分;若存儲器裝置10是一序列式(serial)快閃存儲器,則這些存儲器區(qū)塊sa0~sa7以區(qū)塊(block)的不同進行劃分,亦即快閃存儲器陣列11所具有的8個區(qū)塊進行劃分。在區(qū)塊解碼器130未對快閃存儲器陣列11做任何設定的情形下,快閃存儲器陣列11的這些存儲器區(qū)塊sa0~sa7被存儲器裝置10的x解碼器13使用的預設順序為:sa0→sa1→sa2→sa3→sa4→sa5→sa6→sa7。
同前述第一實施例,在本發(fā)明第二實施例中,存儲器區(qū)塊sa0~sa7的每一個皆具有統(tǒng)計上述抹除操作次數(shù)、編程操作次數(shù)和后編程操作次數(shù)的三個計數(shù)器。當這些計數(shù)器之一的操作次數(shù)大于一既定次數(shù)(例如,28=256次)時,存儲器12中的旗標位alarm-flag被控制邏輯電路131設定在一第一狀態(tài)(例如,設定旗標位alarm-flag的位值為0)。
在本發(fā)明第二實施例中,存儲器12所存儲的多個模式位分別為mode0、mode1、mode2和mode3。每一模式位mode0~mode3分別對應至這些存儲器區(qū)塊sa0~sa7被存儲器裝置10的x解碼器13使用/讀取的不同先后順序,并表示于表二如下:
表二
由表二可知,當區(qū)塊解碼器130采用模式位mode1時,快閃存儲器陣列11的這些存儲器區(qū)塊sa0~sa7被存儲器裝置10的x解碼器13使用/讀取的先后順序為: sa1→sa0→sa3→sa2→sa5→sa4→sa7→sa6。再者由表二可知,對于不同的模式位mode0~mode3而言,第一個被使用的存儲器區(qū)塊皆不相同,且存儲器區(qū)塊的更換順序亦皆不相同。
在本發(fā)明第二實施例中,在快閃存儲器陣列11的這些存儲器區(qū)塊sa0~sa7被全部抹除之后,區(qū)塊解碼器130先判斷旗標位alarm-flag是否被設定在第一狀態(tài)(例如,旗標位alarm-flag的位值是否為0)。若是,則區(qū)塊解碼器130讀取存儲器12目前所存儲的模式位mode0~mode3,并依據(jù)模式位mode0~mode3和地址數(shù)據(jù)a<18:16>改變區(qū)塊地址數(shù)據(jù)sa<7:0>。區(qū)塊解碼器130再輸出區(qū)塊地址數(shù)據(jù)sa<7:0>至快閃存儲器陣列11,以決定這些存儲器區(qū)塊sa0~sa7被存儲器裝置10的x解碼器13使用/讀取的不同先后順序。
在本發(fā)明第二實施例中,若區(qū)塊解碼器130判斷旗標位alarm-flag并未被設定在第一狀態(tài)(例如,旗標位alarm-flag的位值為1時),則區(qū)塊解碼器130并未讀取存儲器12目前所存儲的模式位mode0~mode3,即是依據(jù)先前所使用的模式位mode0~mode3和地址數(shù)據(jù)a<18:16>改變區(qū)塊地址數(shù)據(jù)sa<7:0>。區(qū)塊解碼器130再輸出區(qū)塊地址數(shù)據(jù)sa<7:0>至快閃存儲器陣列11,以決定這些存儲器區(qū)塊sa0~sa7被存儲器裝置10的x解碼器13使用/讀取的不同先后順序。
圖3是依據(jù)本發(fā)明的一第三實施例實現(xiàn)區(qū)塊解碼器130的區(qū)塊圖。在本發(fā)明第三實施例中,區(qū)塊解碼器130包括地址解碼器132和與門133~136。地址解碼器132接收與門133~136輸出的多個地址轉(zhuǎn)換模式scramble0~scramble3和地址數(shù)據(jù)a<18:16>,并依此輸出區(qū)塊地址數(shù)據(jù)sa<7:0>至快閃存儲器陣列11。與門133~136分別讀取存儲在迷你存儲器陣列122的模式位mode0~mode3。
在本發(fā)明第三實施例中,在快閃存儲器陣列11的這些存儲器區(qū)塊sa0~sa7被全部抹除之后,控制邏輯電路131判斷旗標位alarm-flag是否被設定在這些一狀態(tài)(例如,旗標位alarm-flag的位值是否為0)。若是,則控制邏輯電路131在這些模式位mode0~mode3之中選取(設定)一個未被選取過(未被設定過)的模式位。例如,模式位mode0~mode3的位值分別為0、1、1、1,其中0代表已被使用過,1代表尚未被使用過。此時,控制邏輯電路131依據(jù)與門133~136的輸入信號設計將未被設定的模式位mode1~mode3之一的位值依序設定為0(每次僅將一個未被選取過的模式位設定為0),并將新的設定值寫入存儲器12的迷你存儲器陣列122。因此,控制 邏輯電路131將模式位mode1的位值設定為0(在本發(fā)明另一實施例中,亦可依據(jù)與門133~136的不同的輸入信號設計將模式位mode2的位值或模式位mode3的位值設定為0)。
接著,地址解碼器132才會讀取與門133~136輸出的這些地址轉(zhuǎn)換模式scramble0~scramble3得知哪一個的值為1,其中這些地址轉(zhuǎn)換模式scramble0~scramble3分別對應至表二所示mode0~mode3。最后,地址解碼器132使用選取地址轉(zhuǎn)換模式scramble1(例如,當?shù)刂忿D(zhuǎn)換模式scramble1為1時)和地址數(shù)據(jù)a<18:16>改變區(qū)塊地址數(shù)據(jù)sa<7:0>。區(qū)塊解碼器130再輸出區(qū)塊地址數(shù)據(jù)sa<7:0>至快閃存儲器陣列11,以決定這些存儲器區(qū)塊sa0~sa7被存儲器裝置10的x解碼器13使用/讀取的先后順序(例如,地址轉(zhuǎn)換模式scramble1(mode1)所對應的使用順序sa1→sa0→sa3→sa2→sa5→sa4→sa7→sa6)。
在本發(fā)明第三實施例中,若旗標位alarm-flag并未被設定在第一狀態(tài)(例如,旗標位alarm-flag的位值為1時),此時,地址解碼器132維持原先這些存儲器區(qū)塊sa0~sa7被存儲器裝置10的x解碼器13使用/讀取的先后順序,亦即依據(jù)上一次設定過的地址轉(zhuǎn)換模式scramble0~scramble3的其中一個(例如,繼續(xù)使用地址轉(zhuǎn)換模式scramble1)和地址數(shù)據(jù)a<18:16>改變區(qū)塊地址數(shù)據(jù)sa<7:0>。
此外值得注意的是圖3所示控制邏輯電路131和與門133~136僅為特定邏輯電路。本領域普通技術人員可以知道控制邏輯電路131和與門133~136亦可以為其他邏輯電路。因此,任何可實現(xiàn)圖3所示控制邏輯電路131和與門133~136邏輯功能的邏輯電路皆不脫離本發(fā)明的專利保護范圍。
圖4a和圖4b是依據(jù)本發(fā)明的一第四實施例舉例說明如何設定旗標位alarm-flag的一流程圖。在步驟s401中,一存儲器區(qū)塊接收到一抹除指令。在步驟s402中,存儲器裝置10對存儲器區(qū)塊執(zhí)行一預編程(pre-program)操作。在步驟s403中,存儲器裝置10對存儲器區(qū)塊執(zhí)行一抹除操作,控制邏輯電路131的一抹除計數(shù)器計數(shù)執(zhí)行抹除操作的一區(qū)塊抹除操作次數(shù),并進入步驟s404。在步驟s404中,控制邏輯電路131判定區(qū)塊抹除操作次數(shù)是否大于一最大次數(shù)(例如,1024次)。若是進入步驟s405;反之則進入步驟s406。在步驟s405中,存儲器裝置10判定快閃存儲器陣列11已經(jīng)損壞。在步驟s406中,控制邏輯電路131判定區(qū)塊抹除操作次數(shù)是否大于一既定次數(shù)(例如,256次)。若是進入步驟s407;反之則進入步驟s408。在步驟 s407中,控制邏輯電路131設定存儲器12中的旗標位alarm-flag在一第一狀態(tài)(例如,設定旗標位alarm-flag的位值為0),并進入步驟s408。
在步驟s408中,存儲器裝置10對存儲器區(qū)塊執(zhí)行一后編程(post-program)操作,控制邏輯電路131的一后編程計數(shù)器計數(shù)執(zhí)行后編程操作的一區(qū)塊后編程操作次數(shù),并進入步驟s409。在步驟s409中,控制邏輯電路131判定區(qū)塊后編程操作次數(shù)是否大于一最大次數(shù)(例如,1024次)。若是進入步驟s410;反之則進入步驟s411。在步驟s410中,存儲器裝置10判定快閃存儲器陣列11已經(jīng)損壞。在步驟s411中,控制邏輯電路131判定區(qū)塊后編程操作次數(shù)是否大于一既定次數(shù)(例如,256次)。若是進入步驟s412;反之則進入步驟s413。在步驟s412中,控制邏輯電路131設定存儲器12中的旗標位alarm-flag在一第一狀態(tài)(例如,設定旗標位alarm-flag的位值為0),并進入步驟s413。若旗標位alarm-flag已經(jīng)在第一狀態(tài),則直接進入步驟s413。在步驟s413中,存儲器裝置10對存儲器區(qū)塊執(zhí)行一再新(refresh)操作。值得注意的是,上述步驟s413的執(zhí)行僅限定于存儲器裝置10是一串列周邊接口或非門(spi-nor)快閃存儲器。若存儲器裝置10并非為串列周邊接口或非門快閃存儲器,則跳過上述步驟s413。
圖5是依據(jù)本發(fā)明的一第五實施例舉例說明如何設定旗標位alarm-flag的一流程圖。在步驟s501中,一存儲器區(qū)塊接收到一編程(program)指令。在步驟s502中,存儲器裝置10對存儲器區(qū)塊執(zhí)行一編程操作。在步驟s503中,控制邏輯電路131的一編程計數(shù)器計數(shù)執(zhí)行編程操作的一編程操作次數(shù),并進入步驟s504。在步驟s504中,控制邏輯電路131判定編程操作次數(shù)是否大于一最大次數(shù)(例如,1024次)。若是進入步驟s505;反之則進入步驟s506。在步驟s505中,存儲器裝置10判定快閃存儲器陣列11已經(jīng)損壞。在步驟s506中,控制邏輯電路131判定編程操作次數(shù)是否大于一既定次數(shù)(例如,256次)。若是進入步驟s507;反之則流程結(jié)束。在步驟s507中,控制邏輯電路131設定存儲器12中的旗標位alarm-flag在一第一狀態(tài)(例如,設定旗標位alarm-flag的位值為0)。
圖6是依據(jù)本發(fā)明的一第六實施例實現(xiàn)一種存儲器區(qū)塊使用方法的一流程圖。在步驟s601中,存儲器裝置10在接收一全抹除指令后,將快閃存儲器陣列11的這些存儲器區(qū)塊全部抹除。在步驟s602中,控制邏輯電路131判定存儲器12存儲的旗標位alarm-flag是否被設定在一第一狀態(tài)(例如,判定旗標位alarm-flag的位值是否為 0)。若是進入步驟s603,反之則進入步驟s606。在步驟s603中,控制邏輯電路131檢查這些模式位是否皆已被選取過(已被設定過)。若是進入步驟s606,反之則進入步驟s604。在步驟s604中,控制邏輯電路131在這些模式位之中選取(設定)未被選取過(未被設定過)的模式位,設定所選取的模式位并將所選取的模式位存儲至存儲器12的迷你存儲器陣列122,進入步驟s605。在步驟s605中,控制邏輯電路131設定存儲器12中的旗標位alarm-flag在一第二狀態(tài)(例如,將旗標位alarm-flag的位值設定為1),進入步驟s606。在步驟s606中,控制邏輯電路131判定上述抹除計數(shù)器、上述后編程計數(shù)器或是上述編程計數(shù)器是否大于一最大次數(shù)(例如,1024次)。若是進入步驟s607;反之流程結(jié)束。在步驟s607中,存儲器裝置10判定快閃存儲器陣列11已經(jīng)損壞。
本發(fā)明雖以較佳實施例揭露如上,使得本領域普通技術人員能夠更清楚地理解本發(fā)明的內(nèi)容。然而,本領域普通技術人員應理解到他們可輕易地以本發(fā)明作為基礎,設計或修改流程以及操作不同的存儲器裝置及存儲器區(qū)塊使用方法進行相同的目的和/或達到這里介紹的實施例的相同優(yōu)點。因此本發(fā)明的保護范圍當視權利要求所界定者為準。