數據儲存裝置以及快閃記憶體的檢測方法與流程
2024-03-29 09:21:05

本發明有關於一種數據儲存裝置,特別是有關於一種能檢測編程(program)操作的數據儲存裝置。
背景技術:
快閃記憶體(Flash Memory)為一種普遍的非揮發性數據儲存裝置,是以電性方式抹除與程序化。以非及閘型的快閃記憶體(即NAND FLASH)為例,常用作記憶卡(memory card)、通用串行總線快閃記憶體裝置(USB flash device)、固態硬碟(SSD)、嵌入式快閃記憶體模組(eMMC)…等使用。近年來,由於快閃記憶體具有數據非揮發性、省電、體積小以及無機械結構等的特性,因此適合使用在各種電子裝置上,尤其是可攜式電子產品。
快閃記憶體包括多個區塊(block),每一區塊包括多個頁(page)以供數據儲存。當快閃記憶體自控制器接收編程(寫入)命令時,便依控制器的指示以及編程地址將數據儲存至該等區塊的某些頁。當快閃記憶體自控制器收到讀取命令時,便依控制器的指示及讀取地址自該等區塊的某些頁讀出數據而回傳數據至控制器。然而,當數據在儲存至快閃記憶體的時候若有意外狀況發生,則可能造成編程操作失敗。假如控制器無法即時地得知編程操作為失敗,則可能導致後續所讀取到的數據為錯誤的。
因此,需要一種檢測方法,能判斷快閃記憶體的編程操作是否正常。
技術實現要素:
本發明提供一種數據儲存裝置。上述數據儲存裝置包括一快閃記憶體以及一控制器。上述快閃記憶體包括一存儲器陣列。上述控制器對上述快閃記憶進行一編程操作。當上述控制器發送上述編程操作的一編程命令至上述快閃記憶體之後,上述控制器在達到上述快閃記憶體的一頁面編程時間之前發送一第一讀取狀態命令至上述快閃記憶體,並根據上述快閃記憶體所回報的一第一存儲器狀態來判斷上述快閃記憶體是否執行上述編程操作。
再者,本發明提供一種檢測方法,用以檢測一快閃記憶體的一編程操作。藉由一控制器,發送上述編程操作的一編程命令至上述快閃記憶體。在達到上述快閃記憶體的一頁面編程時間之前,藉由上述控制器,發送一第一讀取狀態命令至上述快閃記憶體。根據上述快閃記憶體所回報的對應於上述第一讀取狀態命令的一第一存儲器狀態,判斷上述快閃記憶體是否執行上述編程操作。
附圖說明
圖1顯示了根據本發明一實施例所述的之數據儲存裝置;
圖2顯示了根據本發明一實施例所述的一示範波形圖,用以說明圖1中控制器與快閃記憶體之間所傳送的信號;以及
圖3顯示了根據本發明一實施例所述的檢測方法,用以檢測快閃記憶體的編程操作。
符號說明
100~數據儲存裝置;
110~控制器;
120~快閃記憶體;
130~數據暫存器;
140~存儲器陣列;
ALE、I、I/O、O~信號;以及
S310-S390~步驟。
具體實施方式
為讓本發明的上述和其他目的、特徵和優點能更明顯易懂,下文特舉出較佳實施例,並配合附附圖,作詳細說明如下:
圖1顯示了根據本發明一實施例所述的數據儲存裝置100。數據儲存裝置100包括控制器110以及快閃記憶體120,其中快閃記憶體120包括數據暫存器130以及由多個記憶單元所形成的存儲器陣列140。在一實施例中,數據暫存器130可以是快取暫存器。數據儲存裝置100可設置在不同電子裝置中,以便電子裝置內的不同元件能對數據儲存裝置100進行存取,以執行特定功能。相應於來自電子裝置內其他元件(例如主要(master)元件)的命令,控制器110可以對快閃記憶體120的存儲器陣列140進行數據存取。舉例來說,當主要元件欲將數據寫入至數據儲存裝置100時,控制 器110會相應於來自主要元件的寫入命令而執行編程操作(program operation),以便將來自主要元件的的數據儲存至存儲器陣列140中。若編程操作失敗,則數據儲存裝置100會通知主要元件,於是主要元件能重新將數據寫入至數據儲存裝置100或是進行後續操作。控制器110檢測快閃記憶體120的編程操作將詳細說明於後。
傳統上,控制器是透過快閃記憶體來得到快閃記憶體的狀態(status),以判斷快閃記憶體的編程操作是否成功。舉例來說,若快閃記憶體的狀態為E0h,則編程操作為成功,其中E0h是表示快閃記憶體為閒置,即快閃記憶體已完成編程操作並進入閒置(idle)模式。反之,若快閃記憶體的狀態為E1h,則編程操作為失敗。然而,在編程操作中,若發生無法預期的狀態,則會使快閃記憶體仍停留在閒置模式而沒有進入到忙碌(busy)模式。於是,控制器會得到快閃記憶體的狀態為E0h,進而誤判編程操作為成功。相較於傳統的控制器,圖1中的控制器110可以在編程操作中,檢測快閃記憶體是否進入至忙碌模式,以避免誤判的情況發生。
圖2是顯示根據本發明一實施例所述的一示範波形圖,用以說明圖1中控制器110與快閃記憶體120之間所傳送的信號。在此實施例中,ALE信號表示地址閂鎖致能(address latch enable)信號。I/O信號表示在輸入/輸出總線上所傳送的信號。為了方便說明,將I/O信號劃分為I信號與O信號,其中I信號表示在輸入/輸出總線上由控制器110傳送至快閃記憶體120的信號,而O信號表示在輸入/輸出總線上由快閃記憶體120傳送至控制器110的信號。在此實施例中,當執行編程操作時,控制器110會透過輸入/輸出總線而依序發送「80h」、「Addr」、「DIN」以及「10h」至快閃記憶體120。在此實施例中,「80h」表示序列數據輸入命令(serial data input command)、「Addr」表示編程地址、「DIN」表示編程數據、以及「10h」表示編程命令(program command)。此外,當控制器110發送編程地址Addr至快閃記憶體120時,控制器110亦會將ALE信號致能。在發送編程命令「10h」至快閃記憶體之後,控制器110會立即發送「70h」至快閃記憶體120,其中「70h」表示讀取狀態命令(read status command)。相應於讀取狀態命令,快閃記憶體120會提供目前的狀態S1至控制器110,即快閃記憶體120會回報狀態給控制器110。於是,控制器110便可判斷快閃記憶體120是否有執行編程操作,即檢測快閃記憶體120是否有進入忙碌模式。若快閃記憶體120沒有進入忙碌模式,則控制器110可判斷出編程操作為失敗(例如狀態S1為「E0h」),並進行後續處理。值得注意的是,控制器110在達到快閃記憶體120的頁面編程時間(page program time)tPROG之前,發送讀取狀態命令至快閃記憶體120並從快閃記憶體120接收到狀態S1。在快閃記憶體120中,頁面編程時間tPROG是表示數據暫存器130根據編程地址Addr而將編程數據DIN儲存至存儲器陣列140中所需要的最少時間。在一實施例中, 控制器110在發送編程命令之後使用計時器(timer)來計數時間,以便在頁面編程時間tPROG的期間內接收到狀態S1。反之,若快閃記憶體120進入忙碌模式(例如狀態S1為「80h」),則在達到頁面編程時間tPROG之後,控制器110會再次發送讀取狀態命令「70h」至快閃記憶體120。相應於讀取狀態命令,快閃記憶體120會提供目前的狀態S2至控制器110,即快閃記憶體120會回報狀態給控制器110。於是,控制器110便可檢測快閃記憶體120的編程操作是否成功,即檢測快閃記憶體120是否進入閒置模式。若快閃記憶體120沒有進入閒置模式(例如狀態S2為「E1h」),則控制器110可判斷出編程操作為失敗,並進行後續處理。反之,若快閃記憶體120已進入閒置模式(例如狀態S2為「E0h」),則控制器110可判斷出編程操作為成功。
圖顯示了根據本發明一實施例所述的檢測方法,用以檢測快閃記憶體的編程操作。在此實施例中,檢測方法由快閃記憶體的控制器所執行。首先,在步驟S310,控制器會依序發送數據輸入命令(例如「80h」)、編程地址、編程數據以及編程命令(例如「10h」)至快閃記憶體,以便控制快閃記憶體來執行編程操作。接著,在達到快閃記憶體的頁面編程時間tPROG之前,控制器會發送第一讀取狀態命令(例如「70h」)至快閃記憶體(步驟S320),以便從快閃記憶體得到所回報的快閃記憶體的狀態S1(步驟S330)。接著,在步驟S340,控制器會根據狀態S1來判斷快閃記憶體是否進入忙碌模式,即狀態S1是否為「80h」。若快閃記憶體沒有進入忙碌模式,則控制器會判定編程操作為失敗(步驟S380)。反之,若快閃記憶體進入忙碌模式,則在達到頁面編程時間tPROG之後,控制器110會發送第二讀取狀態命令(例如「70h」)至快閃記憶體(步驟S350),以便從快閃記憶體得到所回報的快閃記憶體的狀態S2(步驟S360)。接著,在步驟S370,控制器會根據狀態S2來判斷快閃記憶體是否進入閒置模式,即狀態S2是否為「E0h」。若快閃記憶體沒有進入閒置模式(例如狀態S2為「E1h」),則控制器會判定編程操作為失敗(步驟S380)。反之,若快閃記憶體進入閒置模式,則控制器會判定編程操作為成功(步驟S390)。
根據本發明的實施例,控制器可在頁面編程時間tPROG的期間內,得到快閃記憶體的狀態。於是,在編程操作中,當快閃記憶體發生不可預期的狀態時,控制器可在頁面編程時間tPROG的期間內正確地檢測到快閃記憶體是否有執行編程操作,並進一步判斷編程操作是否成功。
雖然本發明已以較佳實施例揭示如上,然其並非用以限定本發明,任何所屬技術領域中包括通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,因此本發明的保護範圍以權利要求書界定為準。