本發(fā)明是有關(guān)于一種存儲器裝置與其操作方法,且特別是有關(guān)于一種具有錯誤校正碼的存儲器裝置與其操作方法。
背景技術(shù):
近年來,相變化存儲器(Phase-change memory)因具有低電壓、低耗能且制程整合度高...等優(yōu)點,已成為最具有發(fā)展?jié)摿Φ姆且资源鎯ζ骷夹g(shù)。一般而言,為了確保相變化存儲器中的數(shù)據(jù)的正確性,現(xiàn)有的存儲器裝置都會因應(yīng)相變化存儲器中的每一筆數(shù)據(jù),來儲存相對應(yīng)的一筆錯誤校正碼(Error Correction Code,簡稱ECC)。因此,在現(xiàn)有的存儲器裝置中,相變化存儲器中的每一筆數(shù)據(jù)都對應(yīng)一筆錯誤校正碼,進而導(dǎo)致現(xiàn)有的存儲器裝置必須耗費龐大的存儲器空間來儲存錯誤校正碼,從而限縮存儲器裝置在微型化上的發(fā)展。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種存儲器裝置與其操作方法,依據(jù)第一存儲器陣列中的原始數(shù)據(jù)的驗證結(jié)果,來決定是否將相應(yīng)于原始數(shù)據(jù)的錯誤校正碼寫入至第二存儲器陣列,進而可有效地縮減用以儲存錯誤校正碼的存儲器空間。
本發(fā)明的存儲器裝置的操作方法,包括下列步驟。執(zhí)行編程操作以將原始數(shù)據(jù)寫入至存儲器裝置中的第一存儲器陣列。驗證第一存儲器陣列中的原始數(shù)據(jù),并依據(jù)驗證結(jié)果而決定是否產(chǎn)生寫入訊號。依據(jù)原始數(shù)據(jù)產(chǎn)生錯誤校正碼,并將錯誤校正碼與寫入地址暫存在存儲器裝置中的緩沖電路。以及,當寫入訊號被產(chǎn)生時,將緩沖電路中的錯誤校正碼與寫入地址寫入至存儲器裝置中的第二存儲器陣列。
另一方面,本發(fā)明的存儲器裝置包括第一存儲器陣列、緩沖電路與第二存儲器陣列。存儲器裝置執(zhí)行編程操作,以將原始數(shù)據(jù)寫入至第一存儲 器陣列,且存儲器裝置驗證第一存儲器陣列中的原始數(shù)據(jù),并依據(jù)驗證結(jié)果而決定是否產(chǎn)生寫入訊號。此外,存儲器裝置依據(jù)原始數(shù)據(jù)產(chǎn)生錯誤校正碼,并將錯誤校正碼與寫入地址暫存在緩沖電路中。再者,當寫入訊號被產(chǎn)生時,存儲器裝置將緩沖電路中的錯誤校正碼與寫入地址寫入至第二存儲器陣列。
另一方面,本發(fā)明的存儲器裝置包括第一存儲器陣列與第二存儲器陣列。該存儲器裝置執(zhí)行第一編程操作與第二編程操作,以將第一原始數(shù)據(jù)與第二原始數(shù)據(jù)寫入至第一存儲器陣列。存儲器裝置驗證第一存儲器陣列中的第一原始數(shù)據(jù)與第二原始數(shù)據(jù),并依據(jù)驗證結(jié)果而決定是否產(chǎn)生第一寫入訊號與第二寫入訊號。存儲器裝置依據(jù)第一原始數(shù)據(jù)與第二原始數(shù)據(jù)產(chǎn)生第一錯誤校正碼與第二錯誤校正碼,且第一錯誤校正碼的位數(shù)不同于第二錯誤校正碼的位數(shù)。當?shù)谝粚懭胗嵦柵c第二寫入訊號被產(chǎn)生時,存儲器裝置將第一錯誤校正碼與第二錯誤校正碼寫入至第二存儲器陣列。
基于上述,本發(fā)明依據(jù)第一存儲器陣列中的原始數(shù)據(jù)的驗證結(jié)果,來決定是否將相應(yīng)于原始數(shù)據(jù)的錯誤校正碼寫入至第二存儲器陣列。藉此,將可有效地縮減用以儲存錯誤校正碼的存儲器空間,從而有助于存儲器裝置在微型化上的發(fā)展。
為讓本發(fā)明的上述特征和優(yōu)點能更明顯易懂,下文特舉實施例,并配合所附圖式作詳細說明如下。
附圖說明
圖1為依據(jù)本發(fā)明一實施例的存儲器裝置的示意圖。
圖2為依據(jù)本發(fā)明一實施例的存儲器裝置的操作方法流程圖。
圖3為依據(jù)本發(fā)明一實施例的相變化存儲單元的示意圖。
圖4為依據(jù)本發(fā)明另一實施例的存儲器裝置的操作方法流程圖。
圖5為依據(jù)本發(fā)明一實施例的存儲器陣列的示意圖。
【符號說明】
100:存儲器裝置
111、112:存儲器陣列
121、122:緩沖電路
130:編碼電路
140:錯誤校正電路
200:外部電路
ADD1、ADD2:寫入地址
DA1、DA2:原始數(shù)據(jù)
S1、S2:寫入訊號
S210~S240:圖2中的各步驟
310:場效晶體管
320:相變化存儲元件
BL、BL51、BL52:位線
WL:字線
GND:接地端
S410、S420、S421、S422:圖4中的各步驟
510、520:記憶區(qū)塊
511、521:存儲單元
530:感測電路
531:比較器
C1:校正位
C1B:校正位的補碼
V51、V52:感測電壓
Dout:輸出位
具體實施方式
圖1為依據(jù)本發(fā)明一實施例的存儲器裝置的示意圖。參照圖1,存儲器裝置100包括存儲器陣列111與112、緩沖電路121與122、編碼電路130以及錯誤校正電路140。其中,存儲器陣列111可用以儲存原始數(shù)據(jù),且存儲器陣列112可用以儲存相應(yīng)于原始數(shù)據(jù)的錯誤校正碼(Error Correction Code,簡稱ECC)。值得注意的是,存儲器裝置100是依據(jù)原始數(shù)據(jù)的編程操作的驗證結(jié)果,來決定是否將相應(yīng)于原始數(shù)據(jù)的錯誤校正碼寫入至存儲器陣列112。藉此,存儲器裝置100將無須耗費龐大的存儲器 空間來儲存錯誤校正碼,進而有助于縮減用以儲存錯誤校正碼的存儲器陣列112的尺寸,并有助于存儲器裝置100的微型化。
圖2為依據(jù)本發(fā)明一實施例的存儲器裝置的操作方法流程圖,且以下將參照圖1與圖2來說明存儲器裝置100的編程程序的細部操作。如圖1所示,外部電路200(例如,中央處理器或是其它訊號處理電路)可依據(jù)寫入地址ADD1選取存儲器陣列111中的記憶區(qū)塊,并將原始數(shù)據(jù)DA1儲存至所述的記憶區(qū)塊中。
具體而言,如步驟S210所示,存儲器裝置100會執(zhí)行一編程操作,以將一原始數(shù)據(jù)DA1寫入至存儲器陣列111(亦即,第一存儲器陣列)。其中,存儲器裝置100可先將原始數(shù)據(jù)DA1暫存至緩沖電路121中,之后再將暫存在緩沖電路121中的原始數(shù)據(jù)DA1寫入至存儲器陣列111中。此外,存儲器陣列111可例如是一相變化存儲器陣列(phase-change memory array)。亦即,在一實施例中,存儲器陣列111包括多個相變化存儲單元(phase-change memory cell),且每一相變化存儲單元包括一場效晶體管(或是其它存取裝置,例如二極管或是雙載子結(jié)晶體管)以及一相變化存儲元件。
舉例來說,圖3為依據(jù)本發(fā)明一實施例的相變化存儲單元的示意圖。如圖3所示,相變化存儲單元包括場效晶體管310與相變化存儲元件320。其中,相變化存儲元件320的第一端電性連接位線BL,相變化存儲元件320的第二端透過場效晶體管310電性連接至接地端GND,且場效晶體管310的控制端電性連接字線WL。此外,相變化存儲元件320的儲存狀態(tài)包括低電阻狀態(tài)(例如,邏輯0)與高電阻狀態(tài)(例如,邏輯1)。在編程操作中,存儲器裝置100可依據(jù)寫入地址ADD1選取到相變化存儲元件320,并可依據(jù)原始數(shù)據(jù)DA1中的一數(shù)據(jù)位提供相應(yīng)的電壓至位線BL與字線WL。例如,當數(shù)據(jù)位為邏輯1時,存儲器裝置100可利用字線WL上的電壓導(dǎo)通(turn on)場效晶體管310,并可透過位線BL提供一復(fù)位(reset)電壓至相變化存儲元件320。藉此,相變化存儲元件320將可從低電阻狀態(tài)轉(zhuǎn)變?yōu)楦唠娮锠顟B(tài)。
再者,如步驟S220所示,存儲器裝置100會對寫入至存儲器陣列111中的原始數(shù)據(jù)DA1進行驗證,并會依據(jù)驗證結(jié)果而決定是否產(chǎn)生一寫入訊號S1。就步驟S220的細部流程而言,存儲器裝置100會執(zhí)行一驗證操 作,以判別原始數(shù)據(jù)DA1的編程操作是否失敗。此外,當判別結(jié)果為編程操作失敗時,存儲器裝置100會重復(fù)執(zhí)行編程操作與驗證操作,直到原始數(shù)據(jù)DA1的編程操作成功為止。此外,當重復(fù)執(zhí)行原始數(shù)據(jù)DA1的編程操作的次數(shù)大于或是等于1時,存儲器裝置100將產(chǎn)生寫入訊號S1。換言之,在原始數(shù)據(jù)DA1的編程程序中,倘若原始數(shù)據(jù)DA1的編程操作有出現(xiàn)過失敗的情況,則存儲器裝置100就會產(chǎn)生寫入訊號S1。
另一方面,如步驟S230所示,存儲器裝置100會依據(jù)原始數(shù)據(jù)DA1產(chǎn)生錯誤校正碼,并將錯誤校正碼與寫入地址ADD1暫存在緩沖電路122。其中,存儲器裝置100可在執(zhí)行步驟S210或是步驟S220的過程中同時執(zhí)行步驟S230,或是存儲器裝置100也可在執(zhí)行步驟S210或是步驟S220之前執(zhí)行步驟S230。再者,如步驟S240所示,當寫入訊號S1被產(chǎn)生時,存儲器裝置100會將緩沖電路122中的錯誤校正碼與寫入地址ADD1寫入至存儲器陣列112(亦即,第二存儲器陣列)。
換言之,存儲器裝置100會先透過緩沖電路122暫存相應(yīng)于原始數(shù)據(jù)DA1的錯誤校正碼與寫入地址ADD1。此外,當原始數(shù)據(jù)DA1的編程操作有出現(xiàn)過失敗的情況時,存儲器裝置100會將相應(yīng)于原始數(shù)據(jù)DA1的錯誤校正碼與寫入地址ADD1寫入至存儲器陣列112。相對地,當原始數(shù)據(jù)DA1的編程操作并未出現(xiàn)失敗的情況時,亦即當寫入訊號S1不被產(chǎn)生時,存儲器裝置100則不會將相應(yīng)于原始數(shù)據(jù)DA1的錯誤校正碼與寫入地址ADD1寫入至存儲器陣列112。
存儲器裝置100可重復(fù)執(zhí)行步驟S210~S240,以將另一原始數(shù)據(jù)寫入至存儲器陣列111,并選擇性地將所述另一原始數(shù)據(jù)的錯誤校正碼寫入至存儲器陣列112。藉此,存儲器裝置100將可透過存儲器陣列111來儲存多筆原始數(shù)據(jù),并可透過存儲器陣列112來儲存部分原始數(shù)據(jù)所對應(yīng)的錯誤校正碼。此外,儲存在存儲器陣列112的錯誤校正碼的位數(shù)可以是部分不同或完全不相同。
舉例來說,存儲器裝置100可重復(fù)執(zhí)行步驟S210,以透過另一編程操作將原始數(shù)據(jù)DA2寫入至存儲器陣列111。再者,存儲器裝置100可重復(fù)執(zhí)行步驟S220,以對寫入至存儲器陣列111中的原始數(shù)據(jù)DA2進行驗證,并依據(jù)驗證結(jié)果而決定是否產(chǎn)生一寫入訊號S2。例如,存儲器裝置100 可執(zhí)行另一驗證操作,以判別原始數(shù)據(jù)DA2的編程操作是否失敗。當原始數(shù)據(jù)DA2的編程操作失敗時,存儲器裝置100會重復(fù)執(zhí)行原始數(shù)據(jù)DA2的編程操作與驗證操作,直到原始數(shù)據(jù)DA2的編程操作成功為止。此外,當重復(fù)執(zhí)行原始數(shù)據(jù)DA2的編程操作的次數(shù)大于或是等于1時,存儲器裝置100將產(chǎn)生寫入訊號S2。
再者,存儲器裝置100可重復(fù)執(zhí)行步驟S230,以依據(jù)原始數(shù)據(jù)DA2產(chǎn)生對應(yīng)的錯誤校正碼,并將原始數(shù)據(jù)DA2所對應(yīng)的錯誤校正碼與寫入地址ADD2暫存在緩沖電路122。此外,存儲器裝置100可重復(fù)執(zhí)行步驟S240,以在寫入訊號S2被產(chǎn)生時,將原始數(shù)據(jù)DA2所對應(yīng)的錯誤校正碼與寫入地址ADD2寫入至存儲器陣列112。其中,原始數(shù)據(jù)DA2所對應(yīng)的錯誤校正碼的位數(shù)可不同于原始數(shù)據(jù)DA1所對應(yīng)的錯誤校正碼的位數(shù)。
值得注意的是,相變化存儲器陣列不具有讀取擾動(read disturb)的效應(yīng),因此相變化存儲器產(chǎn)生錯誤位的起因主要是取決于相變化存儲器的編程操作。因此,存儲器裝置100利用每一筆原始數(shù)據(jù)的編程操作的驗證結(jié)果,來決定是否將相應(yīng)于原始數(shù)據(jù)的錯誤校正碼寫入至存儲器陣列112。如此一來,存儲器裝置100將無須針對每一筆原始數(shù)據(jù)都儲存相對應(yīng)的一筆錯誤校正碼。亦即,存儲器裝置100僅需針對存儲器陣列111中的部分原始數(shù)據(jù)都儲存相對應(yīng)的錯誤校正碼。藉此,將可利用錯誤校正碼來確保原始數(shù)據(jù)的正確性,并可有效地縮減用來儲存錯誤校正碼的存儲器空間。
值得一提的是,當寫入訊號S1被產(chǎn)生時,錯誤校正碼與寫入地址ADD1會被寫入至存儲器陣列112(亦即,第二存儲器陣列),且寫入地址ADD1會被設(shè)定為相應(yīng)于錯誤校正碼的預(yù)設(shè)地址。換言之,存儲器陣列112可儲存多個錯誤校正碼與多個預(yù)設(shè)地址,且每一個錯誤校正碼具有相對應(yīng)的一個預(yù)設(shè)地址。亦即,存儲器裝置100具有可尋址(addressable)的錯誤校正碼。因此,當外部電路200傳送一讀取地址時,存儲器裝置100可依據(jù)讀取地址來查詢存儲器陣列112中的多個預(yù)設(shè)地址。此外,當從存儲器陣列112中搜尋到相應(yīng)的預(yù)設(shè)地址時,存儲器裝置100將可利用存儲器陣列112中的錯誤校正碼來校正讀取數(shù)據(jù),并據(jù)以輸出校正后的讀取數(shù)據(jù)。相對地,當沒有搜尋到相應(yīng)的預(yù)設(shè)地址時,存儲器裝置100則可直接輸出讀取數(shù)據(jù)。
舉例來說,圖4為依據(jù)本發(fā)明另一實施例的存儲器裝置的操作方法流程圖,且以下將參照圖1與圖4來說明存儲器裝置100的讀取程序的細部操作。在操作上,存儲器裝置100可接收一讀取地址,且所述讀取地址可相同于寫入地址ADD1。據(jù)此,如步驟S410所示,存儲器裝置100將可依據(jù)讀取地址讀取儲存在存儲器陣列111中的原始數(shù)據(jù)DA1,以取得一讀取數(shù)據(jù)。此外,如步驟S420所示,存儲器裝置100可依據(jù)讀取地址而決定是否校正讀取數(shù)據(jù)。
舉例來說,就步驟S420的細部步驟而言,如步驟S421所示,存儲器裝置100會將讀取地址與存儲器陣列112(亦即,第二存儲器陣列)中的多個預(yù)設(shè)地址逐一進行比對,以判別原始數(shù)據(jù)DA1的寫入地址是否被儲存在存儲器陣列112中。此外,當讀取地址與所述多個預(yù)設(shè)地址的其一相同時,則代表原始數(shù)據(jù)DA1的寫入地址被儲存在存儲器陣列112中。此時,如步驟S422所示,存儲器裝置100將可從存儲器陣列112中讀取出原始數(shù)據(jù)DA1的錯誤校正碼,并利用所讀取到的錯誤校正碼來校正讀取數(shù)據(jù)。另一方面,當讀取地址不同于所述多個預(yù)設(shè)地址時,則代表原始數(shù)據(jù)DA1的錯誤校正碼并未寫入至存儲器陣列112。因此,此時的存儲器裝置100會直接輸出讀取數(shù)據(jù)。
存儲器裝置100也可重復(fù)執(zhí)行步驟S410~S420。舉例來說,存儲器裝置100可重復(fù)執(zhí)行步驟S410,以依據(jù)另一讀取地址讀取儲存在存儲器陣列111中的原始數(shù)據(jù)DA2,進而取得另一讀取數(shù)據(jù)。再者,存儲器裝置100可重復(fù)執(zhí)行步驟S420,以依據(jù)所述另一讀取地址而決定是否校正所述另一讀取數(shù)據(jù)。
值得注意的是,存儲器裝置100可利用存儲器陣列112中的兩記憶區(qū)塊來分別儲存錯誤校正碼與錯誤校正碼的補碼,以確保從存儲器陣列112中所讀取出的數(shù)據(jù)的正確性。
舉例來說,圖5為依據(jù)本發(fā)明一實施例的存儲器陣列的示意圖。如圖5所示,存儲器陣列112包括記憶區(qū)塊510、記憶區(qū)塊520與感測電路530。其中,記憶區(qū)塊510用以儲存錯誤校正碼,且記憶區(qū)塊520用以儲存錯誤校正碼的補碼。例如,在一實施例中,錯誤校正碼包括多個校正位。此外,以所述多個校正位中的一個校正位C1為例來看,記憶區(qū)塊510中的存儲 單元511用以儲存校正位C1,且記憶區(qū)塊520中的存儲單元521用以儲存校正位C1的補碼C1B。再者,存儲單元511電性連接位線BL51,且存儲單元521電性連接位線BL52。
感測電路530包括多個比較器,例如比較器531。此外,所述多個比較器可透過行譯碼器(未繪示出)分別電性連接到記憶區(qū)塊510中的多個位線與記憶區(qū)塊520中的多個位線。例如,當存儲器裝置100要讀取存儲單元511中的數(shù)據(jù)時,比較器531的兩輸入端將分別電性連接到位線BL51與位線BL52,以接收來自位線BL51的感測電壓V51與來自位線BL52的感測電壓V52。
在一實施例中,存儲器陣列112也可例如是一相變化存儲器陣列。因此,當存儲單元511所儲存的校正位C1為邏輯0(例如,低電阻狀態(tài))時,來自位線BL51上的感測電壓V51將相對應(yīng)地變小。此外,由于存儲單元521是用以儲存校正位C1的補碼C1B,因此來自位線BL52上的感測電壓V52將相對應(yīng)地變大。據(jù)此,比較器531將可響應(yīng)于感測電壓V51與V52產(chǎn)生具有低準位的輸出訊號,亦即比較器531所產(chǎn)生的輸出位Dout將為邏輯0。
相對地,當存儲單元511所儲存的校正位C1為邏輯1(例如,高電阻狀態(tài))時,來自位線BL51上的感測電壓V51將相對應(yīng)地變大。此外,由于存儲單元521是用以儲存校正位C1的補碼C1B,因此來自位線BL52上的感測電壓V52將相對應(yīng)地變小。據(jù)此,比較器531將可響應(yīng)于感測電壓V51與V52產(chǎn)生具有高準位的輸出訊號,亦即比較器531所產(chǎn)生的輸出位Dout將為邏輯1。
換言之,感測電路530不是以一固定的參考電壓來比對錯誤校正碼的感測電壓,進而可確保從存儲器陣列112中所讀取出的數(shù)據(jù)的正確性。
此外,參照圖5實施例來看,本案的利用第二存儲器陣列中的錯誤校正碼來校正讀取數(shù)據(jù)的步驟包括:透過多個第一位線(例如,位線BL51為所述多個第一位線的其中之一)電性連接至用以儲存錯誤校正碼的第一記憶區(qū)塊(例如,記憶區(qū)塊510),并透過多個第二位線(例如,位線BL52為所述多個第二位線的其中之一)電性連接至用以儲存錯誤校正碼的補碼的第二記憶區(qū)塊(例如,記憶區(qū)塊520);依據(jù)來自所述多個第一位線的多個 第一感測電壓(例如,感測電壓V51為所述多個第一感測電壓的其中之一)與來自所述多個第二位線的多個第二感測電壓(例如,感測電壓V52為所述多個第二感測電壓的其中之一)來產(chǎn)生多個輸出位(例如,輸出位Dout為所述多個輸出位的其中之一);以及,利用所述多個輸出位來校正讀取數(shù)據(jù)。
綜上所述,本發(fā)明透過編程操作將原始數(shù)據(jù)寫入至存儲器陣列,并利用緩沖電路來暫存相應(yīng)于原始數(shù)據(jù)的錯誤校正碼與寫入地址。此外,當原始數(shù)據(jù)的編程操作有出現(xiàn)過失敗的情況時,相應(yīng)于原始數(shù)據(jù)的錯誤校正碼與寫入地址將被寫入至另一存儲器陣列。如此一來,存儲器裝置將無須針對每一筆原始數(shù)據(jù)都儲存相對應(yīng)的一筆錯誤校正碼,進而可有效地縮減用以儲存錯誤校正碼的存儲器空間,從而有助于存儲器裝置在微型化上的發(fā)展。
雖然本發(fā)明已以實施例揭露如上,然其并非用以限定本發(fā)明,任何所屬技術(shù)領(lǐng)域中具有通常知識者,在不脫離本發(fā)明的精神和范圍內(nèi),當可作些許的更動與潤飾,故本發(fā)明的保護范圍當視隨附的權(quán)利要求范圍所界定的為準。