[相關申請]
本申請享有以日本專利申請2016-38942號(申請日:2016年3月1日)為基礎申請的優先權。本申請通過參照該基礎申請而包含基礎申請的全部內容。
實施方式涉及一種半導體存儲裝置及存儲器系統。
背景技術:
已知有如下存儲器系統:具備半導體存儲裝置及控制器,所述半導體存儲裝置具有使用存儲1比特的數據的存儲器單元的高速緩存區域與使用存儲2比特以上的存儲器單元的存儲區域。
技術實現要素:
本發明的實施方式提供一種能夠使動作高速化的半導體存儲裝置及存儲器系統。
實施方式的半導體存儲裝置具備:第1存儲器單元,能夠存儲n比特(n為1以上的自然數)的數據;第2存儲器單元,能夠存儲m比特(m為2以上的自然數,m>n)的數據;以及讀出放大器,對第1及第2存儲器單元進行數據的讀取及寫入。在半導體存儲裝置從控制器接收到第1命令時,讀出放大器將第1數據寫入至第1存儲器單元。然后,讀出放大器在寫入后從第1存儲器單元讀取第1數據,并將第1數據與所讀取出的第1數據進行比較。在半導體存儲裝置從控制器接收到第2命令的情況下,讀出放大器將從第1存儲器單元讀取出的第1數據或從控制器接收到的第2數據寫入至第2存儲器單元。
附圖說明
圖1是第1實施方式的存儲器系統的框圖。
圖2是第1實施方式的存儲器系統所具備的半導體存儲裝置的框圖。
圖3是第1實施方式的存儲器系統所具備的半導體存儲裝置所包含的存儲器單元陣列及讀出放大器模塊的電路圖。
圖4是第1實施方式的存儲器系統中的寫入動作的流程圖。
圖5是第1實施方式的存儲器系統中的第1寫入動作的流程圖。
圖6是第1實施方式的存儲器系統中的第1寫入動作時的狀態讀取結果。
圖7是存儲在第1實施方式的存儲器系統所具備的控制器中的錯誤訂正標記信息的數據表。
圖8是第1實施方式的存儲器系統中的第1寫入動作的時序圖。
圖9是第1實施方式的存儲器系統中的第1寫入動作的指令順序。
圖10是第1實施方式的存儲器系統中的第2寫入動作的流程圖。
圖11是第1實施方式的存儲器系統中的第2寫入動作的指令順序。
圖12是第1實施方式的存儲器系統中的第2寫入動作的說明圖。
圖13是第1實施方式的存儲器系統中的第2寫入動作的說明圖。
圖14是說明第2實施方式的存儲器系統所具備的半導體存儲裝置所包含的存儲器單元晶體管的閾值分布的圖。
圖15是第2實施方式的存儲器系統中的第1寫入動作的流程圖。
圖16是第2實施方式的存儲器系統中的第1寫入動作時的狀態讀取結果。
圖17是第2實施方式的存儲器系統中的第2寫入動作的流程圖。
圖18是第1實施方式的存儲器系統中的第2寫入動作的指令順序。
具體實施方式
以下,參照附圖對實施方式進行說明。此外,在以下的說明中,對于具有相同功能及構成的要素標注共通的參照符號。
[1]第1實施方式
以下,對第1實施方式的半導體存儲裝置及存儲器系統進行說明。
[1-1]存儲器系統1的構成
首先,使用圖1對存儲器系統的構成進行說明。在圖1中示出存儲器系統的框圖。如圖1所示,存儲器系統1具備半導體存儲裝置10及控制器20。
半導體存儲裝置10是非易失地存儲數據的nand(notand,與非)型閃存。在下文中對半導體存儲裝置10的構成的詳細內容進行敘述。
控制器20響應來自外部的主機機器的命令而命令半導體存儲裝置10執行讀取、寫入及刪除等。另外,控制器20對半導體存儲裝置10中的存儲器空間進行管理。如圖1所示,控制器20具備處理器(cpu)21、內置存儲器(ram)22、寄存器23、ecc(errorcheckingandcorrecting,錯誤檢查與訂正)電路24、nand接口電路25、緩沖存儲器26及主機接口電路27。
處理器21對控制器20整體的動作進行控制。例如,處理器21響應從主機機器接收的寫入命令,發布基于nand接口的寫入命令。該動作在讀取及刪除的情況下也同樣。
內置存儲器22及寄存器23例如為dram(dynamicrandomaccessmemory,動態隨機存取存儲器)等半導體存儲器,且被用作處理器21的作業區域。內置存儲器22保存用來管理半導體存儲裝置10的固件或各種管理表等。寄存器23保存在高速緩存寫入動作時從半導體存儲裝置10接收的錯誤訂正標記。
ecc電路24進行數據的錯誤訂正(ecc:errorcheckingandcorrecting)處理。具體來說,ecc電路24在寫入數據時基于寫入數據而產生奇偶校驗(parity)。然后,ecc電路24在讀取數據時根據奇偶校驗產生校驗子來檢測錯誤,并對所檢測出的錯誤進行訂正。
nand接口電路25與半導體存儲裝置10連接,并負責與半導體存儲裝置10的通信。例如,nand接口電路25根據處理器21的指示將指令cmd、地址信息add及數據dat發送至半導體存儲裝置10。另外,nand接口電路25從半導體存儲裝置10接收狀態信息sts及數據dat。該狀態信息sts例如包含錯誤訂正標記或待命/忙碌信息。錯誤訂正標記及待命/忙碌信息的詳細內容在下文中進行敘述。
緩沖存儲器26暫時保存控制器20從半導體存儲裝置10及主機機器接收的數據等。
主機接口電路27經由未圖示的主機總線與主機機器連接,并負責與主機機器的通信。例如,主機接口電路27將從主機機器接收的命令及數據分別傳輸至處理器21及緩沖存儲器26。
此外,也可為在所述構成中未設置ecc電路24,處理器21具有ecc電路24的功能。另外,內置存儲器22及寄存器23也可由1個半導體存儲器構成。另外,nand總線所含之信號線dq的條數并不限定于此,可以進行各種變更。
[1-1-1]半導體存儲裝置10的構成
接下來,使用圖2對半導體存儲裝置10的構成進行說明。在圖2中示出半導體存儲裝置10的框圖。如圖2所示,半導體存儲裝置10具備存儲器單元陣列11、讀出放大器模塊12、行解碼器13、輸入輸出電路14、寄存器15、邏輯控制電路16、定序器17、待命/忙碌控制電路18及電壓產生電路19。
存儲器單元陣列11具備多個區塊blk,在圖2中例示多個區塊blk中的區塊blk0~blk3。區塊blk是與比特線及字線建立關聯的多個非易失性存儲器單元的集合,例如成為數據的刪除單位。在半導體存儲裝置10中,例如區塊blk0被用作高速緩存區域,區塊blk1~blk3被用作存儲區域。
高速緩存區域是暫時保存寫入數據的存儲區域。該高速緩存區域應用使存儲器單元存儲1比特的數據的slc(single-levelcell,單級單元)方式。相對于此,存儲區域是每單位面積的存儲容量大于高速緩存區域的存儲區域,是數據的保存區域。該存儲區域應用使存儲器單元存儲2比特以上的數據的mlc(multi-levelcell,多級單元)方式。因此,關于高速地寫入數據,高速緩存區域比存儲區域更優異。相對于此,就保存大容量的數據的方面來說,存儲區域比高速緩存區域更優異。
因此,在從控制器20接收數據的寫入命令時,數據首先被暫時寫入至高速緩存區域。其后,在任意時間點(例如空白時間)將寫入至高速緩存區域的數據傳輸至存儲區域。由此,能夠兼顧數據的高速寫入與大容量化。
本實施方式是以應用使存儲區域的存儲器單元存儲3比特的數據的tlc(triple-levelcell,三級單元)方式的情況為例進行說明。
讀出放大器模塊12從存儲器單元陣列11讀取數據dat,并視需要經由輸入輸出電路14將所讀取出的數據dat輸出至控制器20。另外,讀出放大器模塊12將從控制器20經由輸入輸出電路14接收的寫入數據dat傳輸至存儲器單元陣列11。
行解碼器13選擇與進行讀取及寫入的對象的存儲器單元對應的字線。然后,行解碼器13對所選擇的字線及非選擇的字線分別施加所需的電壓。
輸入輸出電路14從控制器20接收指令cmd、地址信息add及寫入數據dat,并分別傳輸至指令寄存器15c、地址寄存器15b及讀出放大器模塊12。另外,輸入輸出電路14將從狀態寄存器15a及讀出放大器模塊12傳輸的狀態信息sts及讀出數據dat發送至控制器20。所述多個輸入輸出信號例如經由8比特寬的輸入輸出端子i/o1~i/o8而被收發。以下,將收發該8比特的數據的各條信號線稱為信號線dq0~dq7。
寄存器15包含狀態寄存器15a、地址寄存器15b、指令寄存器15c。狀態寄存器15a保存狀態信息sts。另外,狀態寄存器15a根據定序器17的指示而將該狀態信息sts傳輸至輸入輸出電路14。地址寄存器15b保存地址信息add。并且,地址寄存器15b將地址信息add所包含之列地址信號ca及行地址信號ra分別傳輸至讀出放大器模塊12及行解碼器13。指令寄存器15c保存指令cmd。并且,指令寄存器15c將指令cmd傳輸至定序器17。
邏輯控制電路16從控制器20接收各種控制信號以控制輸入輸出電路14及定序器17。作為該控制信號,例如使用芯片使能信號/ce、指令鎖存使能信號cle、地址鎖存使能信號ale、寫入使能信號/we、讀取使能信號/re及寫入保護信號/wp。信號/ce是用來使半導體存儲裝置10使能的信號。信號cle及ale分別是將輸入信號為指令及地址信號通知給輸入輸出電路14的信號。信號/we及/re分別是例如對輸入輸出電路14指示經由輸入輸出端子i/o1~i/o8輸入及輸出信號的信號。信號/wp例如是用來在接通/斷開電源時使半導體存儲裝置10為保護狀態的信號。
定序器17控制半導體存儲裝置10整體的動作。具體來說,定序器17基于從指令寄存器15c傳輸的指令cmd來控制讀出放大器模塊12、行解碼器13、電壓產生電路19等,而執行數據的寫入、讀取動作等。
待命/忙碌控制電路18基于定序器17的動作狀態產生待命/忙碌信號ry/(/by),并將該信號發送至控制器20。信號ry/(/by)是將半導體存儲裝置10為待命狀態(受理來自控制器20的命令的狀態)抑或是忙碌狀態(未受理來自控制器20的命令的狀態)通知給控制器20的信號。另外,信號ry/(/by)是通過由待命/忙碌控制電路18控制連接在其輸出的晶體管tr的接通斷開而產生。例如,信號ry/(/by)在半導體存儲裝置10讀取數據等的動作中被設為“l”電平(忙碌狀態),當這些動作結束時被設為“h”電平(待命狀態)。
電壓產生電路19產生適合于存儲器單元陣列11、讀出放大器模塊12及行解碼器13的電壓。
此外,存儲器單元陣列11所具備的區塊blk數并不限定于此,可以設為任意的數量。另外,在多個區塊blk中,被分配至高速緩存區域的區塊blk的個數與被分配至存儲區域的區塊blk的個數也并不限定于此,可以分別設為任意的數量。
另外,作為控制器20獲知半導體存儲裝置10的動作狀態的機構,也可以不使用待命/忙碌控制電路18。在該情況下,定序器17將與待命/忙碌信號對應的待命/忙碌信息存儲至狀態寄存器15a。因此,如果控制器20發布狀態讀取指令,那么該信息從狀態寄存器15a被讀出,并從輸入輸出電路14被輸出。由此,控制器20能夠獲知半導體存儲裝置10的動作狀態。
[1-1-2]區塊blk的構成
接下來,使用圖3對區塊blk的構成進行說明。在圖3中示出區塊blk及讀出放大器模塊12的電路圖。如圖3所示,區塊blk具備多個nand串ns。
各nand串ns與比特線bl0~bl(l-1)((l-1)為1以上的自然數)對應地設置,例如包含8個存儲器單元晶體管mt(mt0~mt7)及選擇晶體管st1、st2。
存儲器單元晶體管mt具備控制柵極及電荷儲存層,且非易失地保存數據。另外,存儲器單元晶體管mt串聯連接在選擇晶體管st1的源極與選擇晶體管st2的漏極之間。同一區塊內的選擇晶體管st1及st2的柵極分別共通地連接在選擇柵極線sgd及sgs。同樣地,同一區塊內的存儲器單元晶體管mt0~mt7的控制柵極分別共通地連接在字線wl0~wl7。
另外,在存儲器單元陣列11內位于同一列的nand串ns的選擇晶體管st1的漏極共通地連接在比特線bl。也就是說,比特線bl將多個區塊blk間位于同一列的nand串ns共通地連接。進而,多個選擇晶體管st2的源極共通地連接在源極線sl。
在以上構成中,將連接在共通的字線wl的多個存儲器單元所保存的1比特數據的集合稱為“頁”。因此,在應用slc方式的情況下,在連接在1條字線wl的多個存儲器單元的集合中存儲1頁量的數據。另一方面,在應用tlc方式的情況下,各存儲器單元能夠保存3比特數據,因此在連接在1條字線wl的多個存儲器單元的集合中存儲了3頁量的數據(作為3比特中的上位比特數據的集合的上位頁、作為中位比特數據的集合的中位頁、及作為下位比特數據的集合的下位頁這3頁)。
換句話說,所謂“頁”,也可以定義為由連接在同一字線的存儲器單元所形成的存儲器空間的一部分。數據的寫入及讀取可以針對每一該頁進行(將該方式稱為page-by-pagereading/writing(逐頁讀取/寫入))。在該情況下,每次寫入或讀取1頁數據時,控制器20均對半導體存儲裝置10發布指令。
或者,數據的寫入及讀取也可以針對每條字線wl進行。在該情況下,應用slc方式時的動作與針對每頁進行的情況相同,但在應用tlc方式的情況下,通過1次指令輸入而統括地寫入或讀取被分配至1條字線wl的3頁量的數據(將該方式稱為sequentialreading/writing(順序讀取/寫入))。
以下,以page-by-pagereading/writing的情況為例進行說明,但在sequentialreading/writing的情況下也可以應用。
此外,在所述構成中,1個nand串ns所包含的存儲器單元晶體管mt的數量并不限定于此,可以設為任意的數量。
[1-1-3]讀出放大器模塊12的構成
接下來,接著使用圖3對讀出放大器模塊12的構成進行說明。如圖3所示,讀出放大器模塊12具備設置在每條比特線bl的讀出放大器單元sau(sau0~sau(l-1))。并且,各讀出放大器單元sau具備讀出放大器部sa、鎖存電路sdl、dl1、dl2及xdl、以及運算部op。這些讀出放大器部sa、鎖存電路sdl、dl1、dl2及xdl、以及運算部op是以能夠相互收發數據的方式連接。
讀出放大器部sa在讀取時讀出已被讀取至對應的比特線bl的數據,并判斷讀取數據是“0”還是“1”。另外,在寫入時,基于寫入數據對比特線bl施加電壓。
鎖存電路sdl、dl1及dl2暫時保存讀取數據及寫入數據。讀取時讀出放大器部sa所確定的讀取數據、及寫入時被傳輸至鎖存電路xdl的寫入數據例如被傳輸至鎖存電路sdl、dl1及dl2的任一個。
鎖存電路xdl用于讀出放大器單元sau與控制器20之間的數據的輸入輸出。也就是說,從控制器20接收的數據經由鎖存電路xdl傳輸至鎖存電路sdl、dl1或者dl2、或讀出放大器部sa。另外,鎖存電路sdl、dl1或者dl2、或讀出放大器部sa的數據經由鎖存電路xdl傳輸至控制器20。
運算部op基于保存在鎖存電路sdl、dl1及dl2的數據進行與門(and)運算、與非門(nand)運算、或門(or)運算、或非門(nor)運算、及異或非門(xnor)運算等各種邏輯運算。
此外,讀出放大器單元sau所具備的鎖存電路的個數并不限定于此。例如,基于1個存儲器單元所存儲的比特數進行設定。另外,也可以不在讀出放大器單元sau設置運算部op。在該情況下,運算部op的功能是通過鎖存電路sdl、dl1及dl2間的數據傳輸而實現。
[1-2]寫入動作
[1-2-1]寫入動作的概略
接下來,使用圖4對存儲器系統1的寫入動作的概略進行說明。在圖4中示出存儲器系統1中的寫入動作的流程圖。
首先,半導體存儲裝置10將從控制器20傳輸的輸入數據以slc方式寫入至高速緩存區域(步驟s10)。接下來,半導體存儲裝置10將在步驟s10中寫入至高速緩存區域的3頁量的數據從該高速緩存區域讀取出(步驟s11)。此處從高速緩存區域讀取出的頁數是基于應用于存儲區域的寫入方式而設定,且與在存儲區域中1個存儲器單元能夠存儲的數據的比特數對應。在本例的情況下,存儲區域應用tlc方式,因此從高速緩存區域讀取3頁量的數據。
接下來,半導體存儲裝置10將從高速緩存區域讀取出的3頁量的數據以tlc方式寫入至存儲區域(步驟s12)。
接下來,半導體存儲裝置10確認從控制器20傳輸的全部輸入數據是否被寫入至存儲區域(步驟s13)。在全部輸入數據未被寫入至存儲區域的情況下(步驟s13、no(否)),返回至步驟s11,半導體存儲裝置10進行剩余輸入數據的寫入處理。此處,在剩余輸入數據量小于3頁的情況下,將剩余的1頁或2頁量的數據從高速緩存區域讀出,并將讀出的數據的1比特或2比特量以tlc方式寫入至存儲區域。另一方面,在全部輸入數據已被寫入至存儲區域的情況下(步驟s13、yes(是)),存儲器系統1結束寫入動作。
如上所述,在存儲器系統1的寫入動作中,半導體存儲裝置10將從控制器20輸入的數據首先寫入至高速緩存區域。接下來,半導體存儲裝置10在結束對高速緩存區域的寫入后,將寫入的數據從高速緩存區域讀取并寫回至存儲區域。
在以上的動作中,將步驟s10中的數據的寫入稱作第1寫入動作,將步驟s11及s12稱作第2寫入動作,以下對這些動作的詳細內容進行說明。
[1-2-2]第1寫入動作
[1-2-2-1]第1寫入動作的詳細內容
首先,使用圖5對第1寫入動作的詳細內容進行說明。在圖5中示出第1寫入動作的流程圖。
如圖5所示,首先,控制器20將寫入指令、地址及1頁量的數據發送至半導體存儲裝置10(步驟s30)。那么,在接收了這些信號的半導體存儲裝置10中,定序器17控制讀出放大器模塊12及行解碼器13等,并將所接收的1頁量的數據以slc方式寫入至高速緩存區域的存儲器單元(步驟s20)。該slc方式的寫入動作也包含寫入數據后的錯誤確認動作。所謂錯誤確認動作是指通過讀取所寫入的數據并將其與保存在讀出放大器內的寫入數據進行比較而判斷是否產生寫入錯誤的動作。錯誤確認動作的詳細內容在下文中進行敘述。
在步驟s20之后,如果半導體存儲裝置從忙碌狀態轉變成待命狀態,那么控制器發布狀態讀取指令“xxh”(步驟s31),并將其保存在半導體存儲裝置10的指令寄存器15c。指令“xxh”是命令包含錯誤訂正標記的狀態信息的讀取的指令。當指令“xxh”被儲存至寄存器15c時,定序器17從狀態寄存器15a讀取包含錯誤訂正標記的狀態信息(步驟s21)。
使用圖6對在所述步驟s21中讀取的狀態信息進行說明。如圖示那樣,狀態信息例如為8比特的數據,且包含錯誤訂正標記及待命/忙碌信息。也就是說,錯誤訂正標記保存在8比特數據的最上位比特,待命/忙碌信息保存在最下位比特。在本例中,未使用第2比特至第7比特,但這些比特中也可以包含其它信息。
錯誤訂正標記例如在不需要進行對象頁的錯誤訂正的情況下變成“0”,在需要進行對象頁的錯誤訂正的情況下變成“1”。待命/忙碌信息表示半導體存儲裝置10能否從控制器20接收指令,例如在半導體存儲裝置10為忙碌狀態的情況下變成“0”,在待命狀態的情況下變成“1”。
并且,所述8比特數據從最上位比特依序與信號線dq0~dq7配對,并使用這些信號線將其輸出至控制器20(步驟s22)。然后,控制器20將所接收的狀態信息所含的錯誤訂正標記以表的形式保存在寄存器23(步驟s32)。
使用圖7對所述步驟s32中由錯誤訂正標記而產生的表進行說明。圖7是表的概念圖,存儲器單元陣列11的高速緩存區域具備分別包含n(n為1以上的自然數)頁pg的m個(m為1以上的自然數)區塊blk,并將該高速緩存區域的錯誤訂正標記制成表。
如圖示那樣,表是(n×m)的矩陣,列表示字線wl的位置(頁pg0~pg(n-1)),行表示區塊blk的位置(區塊blk0~blk(m-1))。
例如,在區塊blk0中不包含需要錯誤訂正的頁的情況下,如圖7所示,與區塊blk0對應的列中全部保存“0”。另一方面,在區塊blk1中第(n-2)頁pg(n-2)中需要錯誤訂正的情況下,如圖7所示,與區塊blk1的頁pg(n-2)對應的單元中保存“1”,與其它不需要錯誤訂正的頁pg對應的單元中保存“0”。以下的區塊blk也同樣。
該表例如是通過處理器21的處理而制作。具體來說,首先,nand接口電路25將從半導體存儲裝置10接收的狀態信息傳輸至緩沖存儲器26。接下來,處理器21從存儲在緩沖存儲器26中的狀態信息中提取錯誤訂正標記。接下來,處理器21將所提取的錯誤訂正標記與對應的字線wl及區塊blk建立關聯而制成表,并將其保存在寄存器23。
并且,通過參照該表,處理器21能夠獲得哪一區塊的哪一頁中需要錯誤訂正的信息。
在步驟s22之后,在已寫入的數據并非為最后1頁量的情況下(步驟s23、否),返回至步驟s20,半導體存儲裝置10進行剩余輸入數據的寫入處理。另一方面,在已寫入的數據為最后1頁量的情況下(步驟s23、是),存儲器系統1結束第1寫入動作。
[1-2-2-2]錯誤確認動作
接下來,使用圖8對錯誤確認動作的詳細內容進行說明。在圖8中示出第1寫入動作的時序圖,且示出各動作的處理狀態與保存在鎖存電路sdl、dl1及xdl的數據。
如圖8所示,第1寫入動作大體包含寫入動作與錯誤確認動作。以下,為了與包含第1寫入動作及第2寫入動作的“廣義的寫入動作”進行區分,將第1寫入動作所含的寫入動作稱為“狹義的寫入動作”。
首先,在時刻t0,開始進行基于slc方式的狹義的寫入動作。該寫入例如包含3次編程循環操作及在3次編程循環操作后進行的檢測動作。編程循環操作是編程動作與編程驗證動作的組合,所述編程動作是將電子注入至電荷儲存層而使閾值電壓變動(如果是非寫入對象單元,那么例如通過自升壓技術等而抑制閾值電壓的變動),所述編程驗證動作判斷通過該編程動作而變動后的閾值電壓是否處于適當的電平。另外,檢測動作是如下動作:對第3次編程循環操作中的驗證動作結果進行確認,并判斷驗證失敗的比特數(失敗比特數)是否變成某閾值以上。
如圖示那樣,在重復進行編程循環操作的期間,鎖存電路sdl保存驗證結果,鎖存電路dl1保存對所選擇的頁的寫入數據,鎖存電路xdl保存寫入至下一頁的數據。
接下來,在時刻t1,定序器17參照讀出放大器模塊的鎖存電路sdl確認失敗比特數。此處,在失敗比特數變成閾值以上的情況下,返回至時刻t0,并再次進行編程循環操作。另一方面,在失敗比特數小于閾值的情況下,移行至時刻t2的動作。此外,確認該失敗比特數的動作可以在每次編程循環操作中執行,也可以在規定次數的編程循環操作后執行。另外,在執行了規定次數的該確認動作后失敗比特數小于閾值的情況下,定序器17將對象頁的寫入設為失敗,并將表示該頁的寫入失敗的信息保存在狀態寄存器15a。
接下來,在時刻t2,定序器17開始進行錯誤確認動作。錯誤確認動作大體包含讀取動作、數據運算動作及檢測動作這3個步驟。以下,對它們的詳細內容進行說明。
如圖示那樣,首先,在時刻t2,定序器17開始進行讀取動作。也就是說,各讀出放大器單元sau將寫入數據保存在鎖存電路dl1,并直接將剛寫入的數據(在時刻t0~t1寫入的數據)從存儲器單元陣列11讀出。從存儲器單元陣列11讀出的數據被保存在鎖存電路sdl。
接下來,在時刻t3,開始進行數據運算動作。也就是說,各讀出放大器單元sau的運算部op進行保存在鎖存電路sdl的數據與保存在鎖存電路dl1的數據的xnor運算。也就是說,運算部op判定寫入數據與來自寫入對象頁的讀取數據是否一致。該運算結果被保存在鎖存電路dl1,此處,表示運算結果不一致的比特表示在讀取時被作為錯誤而檢測出的可能性高。
接下來,在時刻t4,開始進行檢測動作。也就是說,定序器17對表示xnor運算結果不一致的讀出放大器單元sau的數量(錯誤比特數)進行確認。具體來說,定序器17在該錯誤比特數小于閾值的情況下,將錯誤訂正標記設為“0”(無需對象頁的錯誤訂正),在錯誤比特數超過閾值的情況下,將錯誤訂正標記設為“1”(必需對象頁的錯誤訂正)。該錯誤訂正標記如上所述那樣存儲在狀態寄存器15a。
此外,在所述動作中保存各數據的鎖存電路并不限定于此,可以進行各種變更。例如,也可以使xnor運算結果保存在未圖示的鎖存電路dl2。
[1-2-2-3]第1寫入動作的指令順序
接下來,使用圖9對第1寫入動作的指令順序進行說明。在圖9中示出第1寫入動作的指令順序的一例。以下,以將3頁量的數據寫入至高速緩存區域的情況為例進行說明。此外,在以下的說明中,由控制器20發布的地址及指令分別被存儲在地址寄存器15b及指令寄存器15c。
如圖9所示,首先控制器20發布指令“a2h”,并發送至半導體存儲裝置10。指令“a2h”是對半導體存儲裝置10命令以slc方式進行處理的指令。接下來,控制器20發布寫入指令“80h”,并發送至半導體存儲裝置10。指令“80h”是命令寫入的指令。
接下來,控制器20例如跨及5個循環發布地址信息add,并發送至半導體存儲裝置10。該地址信息add是指定高速緩存區域的地址的信息。接下來,控制器20跨及多個循環將寫入數據din輸出至半導體存儲裝置10(圖5、步驟s30)。此處所輸出的數據din合計相當于1頁量的數據,例如被保存在讀出放大器模塊12的鎖存電路xdl。
接下來,控制器20發布指令“10h”,并發送至半導體存儲裝置10。指令“10h”是基于剛發送來的地址信息及數據din而用來使半導體存儲裝置10執行數據寫入的指令。如果指令“10h”被保存至寄存器15c,那么定序器17控制讀出放大器模塊12及行解碼器13等,并開始進行包含錯誤確認動作的slc方式的寫入動作(圖5、步驟s20)。此時,讀出放大器模塊12對寄存器內的地址信息中的列地址信號ca進行解碼,并將保存在鎖存電路xdl的數據din傳輸至各比特線bl。另外,行解碼器13對寄存器內的地址信息中的行地址信息ra進行解碼,并對選擇字線及非選擇字線施加所需的電壓。此時,待命/忙碌控制電路18將待命/忙碌信號設為“l”電平,并將半導體存儲裝置10為忙碌狀態通知給控制器20。接下來,如果半導體存儲裝置10結束寫入動作,那么待命/忙碌控制電路18將待命/忙碌信號設為“h”電平,并將半導體存儲裝置10為待命狀態通知給控制器20。圖示的tprog(slc)表示進行該slc方式的寫入動作的期間。
接下來,控制器20發布指令“xxh”,并將其發送至半導體存儲裝置10(圖5、步驟s31)。指令“xxh”是用來從狀態寄存器15a讀取狀態信息的指令。如果指令“xxh”被保存至寄存器15c,那么定序器17讀取存儲在寄存器15a的包含錯誤訂正標記的狀態信息(圖5、步驟s21),并將包含狀態信息的數據dout輸出至控制器20(圖5、步驟s22)。當控制器20接收數據dout時,從數據dout提取錯誤訂正標記并將其存儲在寄存器23(圖5、步驟s32)。
以上的動作與將1頁量的數據寫入至高速緩存區域相對應。關于以下的第2頁及第3頁的數據的寫入,僅地址信息add及數據din、dout的內容不同,指令順序相同,因此省略說明。
[1-2-3]第2寫入動作
[1-2-3-1]第2寫入動作的詳細內容
接下來,使用圖10對第2寫入動作的詳細內容進行說明。在圖10中示出第2寫入動作的流程圖。
如圖10所示,首先控制器20發布讀取指令,并將其發送至半導體存儲裝置10(步驟s40)。該讀取指令是命令半導體存儲裝置10從存儲器單元陣列11向讀出放大器模塊讀取1頁量的指令。接下來,控制器20發送成為讀取對象的區域的地址。該地址相當于存儲器單元陣列11的高速緩存區域的任一頁。
定序器17基于所接收的讀取指令,從存儲器單元陣列11的高速緩存區域讀取1頁量的數據(步驟s41)。具體來說,行解碼器13對寄存器15內的地址信息中的行地址信息ra進行解碼,并對選擇字線及非選擇字線施加所需的電壓。然后,讀出放大器模塊12讀出已被讀取至比特線的數據。此時所讀出的數據例如保存在各讀出放大器單元sau的鎖存電路sdl。
接下來,控制器20的例如處理器21參照存儲在寄存器23的表,對與剛將數據讀出后的頁對應的錯誤訂正標記進行確認(步驟s42)。
此處,在所參照的錯誤訂正標記為“1”的情況下(步驟s43、是)、也就是對象數據為必需錯誤訂正的數據的情況下,控制器20發布數據輸出指令,并將其發送至半導體存儲裝置10(步驟s44)。該數據輸出指令是命令從讀出放大器模塊12向控制器20輸出數據的指令。接下來,控制器20發送成為讀取對象的讀出放大器單元的地址。
定序器17基于所接收的數據輸出指令,從由地址指定的讀出放大器單元sau的鎖存電路sdl經由鎖存電路xdl傳輸至控制器20(步驟s45)。該數據例如保存在緩沖存儲器26。
接下來,控制器20的ecc電路24執行所接收到的讀取數據的錯誤訂正處理(步驟s46)。
接下來,控制器20發布指令“80h”并將其發送至半導體存儲裝置10,接著將作為寫入數據的錯誤訂正后的讀取數據傳輸至半導體存儲裝置10(步驟s47)。
另一方面,在步驟s43中所參照的錯誤訂正標記為“0”的情況下(步驟s43、否)、也就是對象數據為無需錯誤訂正的數據的情況下,控制器20發布指令“80h”并將其發送至半導體存儲裝置10(步驟s48)。此時,未從控制器20向半導體存儲裝置10發送寫入數據。
在步驟s47或s48之后,控制器20判定從高速緩存區域讀取出的數據是否達到以tlc方式寫入至在存儲區域中連接在同一字線的存儲器單元的3頁量(步驟s49)。
在從高速緩存區域讀取出的數據未達到3頁量的情況下(步驟s49、否),控制器20以將讀取數據傳輸至并未保存從高速緩存區域讀取出的數據的鎖存電路dl1或dl2的方式對半導體存儲裝置10進行命令(步驟s50),并返回至步驟s40的動作。
另一方面,在從高速緩存區域讀出的數據達到3頁量的情況下(步驟s49、是),控制器20發布寫入指令并將其發送至半導體存儲裝置10(步驟s51)。該寫入指令是用來使半導體存儲裝置10開始實際地對存儲器單元寫入數據的指令。
于是,定序器17根據步驟s51中所接收到的寫入指令,將保存在各讀出放大器單元sau的鎖存電路sdl、dl1及dl2的3比特量的數據以tlc方式寫入至在存儲區域連接在同一字線wl的存儲器單元(步驟s52)。具體來說,行解碼器13對寄存器15內的地址信息中的行地址信息ra進行解碼,并對選擇字線及非選擇字線施加所需的電壓。另外,讀出放大器模塊12將保存在鎖存電路sdl、dl1及dl2的數據傳輸至各比特線bl。更具體來說,將與這些數據對應的電壓施加至比特線bl。以此方式,當3比特量的數據寫入結束時,存儲器系統1結束第2寫入動作。
在以上的說明中,步驟s40至步驟s50的動作與圖4所示的步驟s11的動作對應,步驟s51及步驟s52的動作與圖4所示的步驟s12的動作對應。
此外,在進行對存儲區域的數據寫入之前,保存在各讀出放大器單元sau的數據的頁數基于存儲區域所應用的寫入方式而變化。也就是說,基于存儲區域的存儲器單元所存儲的數據的比特數,各讀出放大器單元所必需的鎖存電路dl的個數也會發生變化。
[1-2-3-2]第2寫入動作的指令順序
接下來,使用圖11~圖13對第2寫入動作的指令順序進行說明。在圖11中示出第2寫入動作的指令順序的一例,在圖12及圖13中分別示出錯誤訂正標記為“1”及“0”的情況下的數據的傳輸路徑的一例。以下,以在從高速緩存區域讀出的3頁量的數據中第1頁的錯誤訂正標記為“1”、第2頁及第3頁的錯誤訂正標記為“0”的情況為例進行說明。
如圖11所示,首先,控制器20持續發布指令“a2h”及“00h”,并分別發送至半導體存儲裝置10(圖10、步驟s40)。指令“00h”相當于步驟s40中所說明的用于讀取的地址輸入受理指令,是命令半導體存儲裝置10讀取數據的指令。接下來,控制器20例如跨及5個循環發布地址信息add,并將其發送至半導體存儲裝置10。該地址信息add是指定高速緩存區域的地址的信息。接下來,控制器20發布指令“30h”,并將其發送至半導體存儲裝置10。指令“30h”是基于剛發送來的地址信息而用來使半導體存儲裝置10執行數據讀取的指令。如果指令“30h”被儲存至寄存器15c,那么定序器17控制讀出放大器模塊12及行解碼器13等,并開始進行讀取動作(圖10、步驟s41)。此時,待命/忙碌控制電路18將待命/忙碌信號設為“l”電平,并將半導體存儲裝置10為忙碌狀態通知給控制器20。并且,當半導體存儲裝置10結束讀出動作時,待命/忙碌控制電路18將待命/忙碌信號設為“h”電平,并將半導體存儲裝置10為待命狀態通知給控制器20。圖示的tread表示進行該讀取動作的期間。
在數據訂正標記為“1”的情況下(圖10、步驟s43、是),控制器20在結束讀取動作后發布指令“05h”,并將其發送至半導體存儲裝置10(圖10、步驟s44)。指令“5h”相當于步驟s44中說明的數據輸出指令,是命令從半導體存儲裝置10向控制器20輸出數據的指令。并且,控制器20例如跨及5個循環發布地址信息add后發布指令“e0h”,并分別發送至半導體存儲裝置10。該地址信息add與剛進行讀取的數據的地址對應。指令“e0h”是基于剛發送來的地址信息而用來使半導體存儲裝置10執行向控制器20輸出數據的指令。如果指令“e0h”被儲存至寄存器15c,那么儲存在讀出放大器模塊12的包含錯誤的讀出數據dout被輸出至控制器20(圖10、步驟s45)。然后,控制器20使用ecc電路24對所輸出的讀取數據dout的錯誤進行訂正(圖10、步驟s46)。
接下來,控制器20持續發布指令“01h”及“80h”,并分別發送至半導體存儲裝置10(圖10、步驟s47)。指令“01h”表示為第1頁的寫入數據,是命令向對應的鎖存電路傳輸數據的指令。然后,控制器20例如跨及5個循環發布地址信息add,并將其發送至半導體存儲裝置10。該地址信息add是指定存儲區域的地址的信息。進而,控制器20將對錯誤進行了訂正后的讀取數據din輸出至半導體存儲裝置10,接著發布指令“1ah”并將其發送至半導體存儲裝置10。如果指令“1ah”被儲存至寄存器15c,那么定序器17將所輸入的讀取數據din傳輸至對應的讀出放大器單元sau的鎖存電路dl1(圖10、步驟s50)。此時,待命/忙碌控制電路18將待命/忙碌信號設為“l”電平,并將半導體存儲裝置10為忙碌狀態通知給控制器20。接下來,當數據傳輸結束時,待命/忙碌控制電路18將待命/忙碌信號設為“h”電平,并將半導體存儲裝置10為待命狀態通知給控制器20。圖示的tdltrans表示進行數據傳輸的期間。
以上的說明與在第1頁的數據讀取中錯誤訂正標記為“1”的情況下的指令順序對應。圖12圖示了該動作中的讀取數據的傳輸路徑。
在第2頁以后的數據讀取中錯誤訂正標記為“0”的情況下的指令順序相對于錯誤訂正標記為“1”的情況的不同點是未發布與錯誤訂正處理相關的指令。以下,關于第2頁以后的數據讀取及數據寫入,對與錯誤訂正標記為“1”的情況的不同點詳細地進行說明。
如圖11所示,在第2頁數據讀取中,首先控制器20發布指令“a2h”至結束數據讀取(直至tread的期間結束)與錯誤訂正標記為“1”的情況同樣。
接下來,控制器20持續發布指令“02h”及“80h”,并分別發送至半導體存儲裝置10(圖10、步驟s48)。指令“02h”表示為第2頁的寫入數據,是命令向對應的鎖存電路傳輸數據的指令。然后,控制器20例如跨及5個循環發布地址信息add,并將其發送至半導體存儲裝置10。進而,控制器20發布指令“1ah”,并將其發送至半導體存儲裝置10。如果半導體存儲裝置10接收到指令“1ah”,那么將讀取數據傳輸至鎖存電路dl2。
圖13圖示了在該第2頁的數據讀取中錯誤訂正標記為“0”的情況下的讀取數據的傳輸路徑。如圖13所示,錯誤訂正標記為“0”的情況下的動作并不經由讀出放大器單元sau與控制器20之間的數據傳輸。
第3頁的數據讀取與相對于如圖11所示在第2頁的數據讀取中發布指令“02h”及“1ah”而發布指令“03h”及“10h”的情況相同。指令“03h”是表示為第3頁的寫入數據的指令,指令“10h”是命令tlc方式的寫入的指令。
如果指令“10h”被儲存至寄存器15c,那么定序器17控制讀出放大器模塊12及行解碼器13等,并進行tlc方式的寫入動作(圖10、步驟s44)。此時,待命/忙碌控制電路18將待命/忙碌信號設為“l”電平,并將半導體存儲裝置10為忙碌狀態通知給控制器20。然后,當半導體存儲裝置10結束寫入動作時,待命/忙碌控制電路18將待命/忙碌信號設為“h”電平,并將半導體存儲裝置10為待命狀態通知給控制器20。圖示的tprog(tlc)表示進行該tlc方式的寫入動作的期間。
通過以上的動作,從高速緩存區域讀出的3頁量的數據被寫入至在存儲區域連接在同一字線wl的存儲器單元。
[1-3]第1實施方式的效果
接下來,對第1實施方式的效果進行說明。根據第1實施方式的半導體存儲裝置10,能夠一邊維持數據的可靠性,一邊使寫入動作高速化。以下,對該效果的詳細內容進行說明。
在具備使用存儲1比特的數據的存儲器單元的高速緩存區域與使用存儲2比特以上的存儲器單元的存儲區域的半導體存儲裝置中,首先將寫入數據寫入至高速緩存區域后寫回至存儲區域,由此比直接將數據寫入至存儲區域的情況更能使寫入速度高速化。
然而,如果因微細化等的影響而導致從高速緩存區域讀出的數據所包含的錯誤比特數增加,那么必需錯誤訂正處理。并且,在進行錯誤訂正處理的情況下,會在半導體存儲裝置與控制器之間產生數據的交換,進而錯誤訂正處理本身耗費時間,因此寫入速度減慢。
因此,第1實施方式的半導體存儲裝置10在進行對高速緩存區域的寫入時進行錯誤確認動作,并根據該確認結果判斷是否需要寫回時的錯誤訂正處理。
具體來說,在錯誤確認動作中,半導體存儲裝置10在剛對高速緩存區域寫入后,確認所寫入的數據是否被正確地讀取。然后,半導體存儲裝置10在錯誤比特數達到指定值以上的情況下確立錯誤訂正標記,并將該標記信息發送至控制器20。控制器20根據所接收的標記信息制作表,并將其保存在控制器20內的寄存器23。由此控制器20能夠獲知存儲器單元陣列11內必需錯誤訂正的頁的地址。
進而,控制器20在寫回數據時,基于錯誤訂正標記進行錯誤訂正。具體來說,當在錯誤訂正標記為“1”的頁寫回時,控制器20將數據從半導體存儲裝置10讀出,并通過ecc電路24對錯誤進行訂正。接下來,將經訂正后的數據發送至半導體存儲裝置10,且半導體存儲裝置10將該數據寫回至存儲器單元陣列11。另一方面,當在錯誤訂正標記為“0”的頁寫回時,控制器20并不特別讀取數據,而由半導體存儲裝置10將已讀取至讀出放大器模塊12的數據直接寫回至存儲器單元陣列11。
由此,第1實施方式的半導體存儲裝置10在為了寫回至存儲區域而從高速緩存區域讀出的數據的錯誤比特數多的情況下進行錯誤訂正,因此能夠提高數據的可靠性。另外,在寫回至存儲區域時,僅在必需的情況下進行錯誤訂正處理,因此能夠使寫入動作高速化。
[2]第2實施方式
接下來,對第2實施方式的存儲器系統1進行說明。第2實施方式將所述第1實施方式中說明的錯誤訂正標記變更為移位讀取(shiftread)標記。并且,在第2寫入動作中的從高速緩存區域讀取數據時,基于移位讀取標記進行移位讀取。以下,對與第1實施方式的不同點進行說明。
[2-1]關于移位讀取
首先,使用圖14對移位讀取進行說明。在圖14中示出存儲1比特的數據的存儲器單元的閾值分布,圖14的縱軸及橫軸分別與存儲器單元的數量及閾值電壓vth對應。
如圖14所示,存儲1比特的數據的存儲器單元能夠獲取2個閾值的任一個。圖14所示的低閾值分布“er”為刪除狀態,例如被分配數據“1”。另一方面,高閾值分布“a”為寫入狀態,例如被分配數據“0”。在讀取這種存儲在存儲器單元的數據的情況下,通過將讀取電壓vr設定在閾值分布“er”與閾值分布“a”之間,而判定存儲在存儲器單元的數據。
然而,在存儲器單元劣化的情況下或具有不良的情況下,如圖14的虛線所示,存在閾值分布擴大的情況。例如,如圖14所示,如果擴大后的閾值分布“er”的下擺超過讀取電壓vr,那么存在在預先設定的讀取電壓vr下讀取數據的錯誤比特數增加的情況。
因此,對錯誤比特數增加后的頁進行變更用于數據讀取的電壓的移位讀取。具體來說,在移位讀取中,例如,如圖14所示,用于讀取數據的電壓從讀取電壓vr變更為向增高的方向移位后的讀取電壓vr'。該讀取電壓vr的移位量被最佳化為擴大后的閾值分布。
使用如所述那樣最佳化后的讀取電壓vr'的移位讀取在讀取劣化或具有不良的存儲器單元的數據的情況下,能夠降低讀取數據的錯誤比特數。
在第2實施方式的存儲器系統1中,進行基于移位讀取標記的移位讀取。移位讀取標記是基于第1實施方式中說明的錯誤確認動作的結果而設定,例如在錯誤確認動作中,在錯誤比特數小于閾值的情況下將移位讀取標記設為“0”,在錯誤比特數超過閾值的情況下將移位讀取標記設為“1”。在該情況下,移位讀取標記“0”表示無需對象頁的移位讀取,移位讀取標記“1”表示必需對象頁的移位讀取。
此外,使讀取電壓vr'從讀取電壓vr移位的量及方向能夠適當進行變更。例如,在擴大后的閾值分布“a”的下擺小于讀取電壓vr的情況下,讀取電壓vr向降低的方向移位。
[2-2]寫入動作
接下來,對第2實施方式的存儲器系統1的寫入動作進行說明。寫入動作的概略與第1實施方式相同,第1及第2寫入動作的詳細內容的一部分與第1實施方式不同。以下,對第2實施方式的存儲器系統1的第1及第2寫入動作與第1實施方式的不同點進行說明。
[2-2-1]第1寫入動作的詳細內容
首先,使用圖15及圖16對第1寫入動作進行說明。在圖15中示出高速緩存區域寫入動作的流程圖,在圖16中示出高速緩存寫入動作時的狀態讀取結果。第2實施方式的存儲器系統1的第1寫入動作是在第1實施方式中說明的圖5中,將與錯誤訂正標記相關的動作替換成與移位讀取標記相關的動作。
如圖15所示,首先,半導體存儲裝置10及控制器20分別進行所述步驟s20及步驟s30的動作。此外,在步驟s20中的錯誤確認動作中,基于錯誤確認結果的移位讀取標記被儲存在狀態寄存器15a。
接下來,半導體存儲裝置10接收控制器20所發布的狀態讀取指令“yyh”(步驟s70),并將所接收到的指令“yyh”存儲至指令寄存器15c。指令“yyh”是命令讀取包含移位讀取標記的狀態信息的指令。如果指令“yyh”儲存至指令寄存器15c,那么定序器17將包含移位讀取標記的狀態信息從狀態寄存器15a讀出(步驟s60)。
然后,所讀出的狀態信息經由信號線dq0~dq7被輸出至控制器20(步驟s61),控制器20將所接收到的狀態信息所包含的移位讀取標記以表的形式保存至寄存器23(步驟s71)。以下的動作與第1實施方式中說明的圖5相同,因此省略說明。
此外,在所述步驟s61中從半導體存儲裝置10輸出的狀態信息成為例如圖16所示的信息。如圖16所示,包含移位讀取標記的狀態信息與相對于圖6中說明的包含錯誤訂正標記的狀態信息而將錯誤訂正標記替換成移位讀取標記的情況相同。
另外,保存在寄存器23的移位讀取標記的表的構成及制作方法與例如圖7中說明的錯誤訂正標記的表相同。
[2-2-2]第2寫入動作
[2-2-2-1]第2寫入動作的詳細內容
接下來,使用圖17對第2寫入動作進行說明。在圖17中示出第2寫入動作的流程圖。第2實施方式的存儲器系統1的第2寫入動作是在第1實施方式中說明的圖10中,將與錯誤訂正標記相關的動作替換成與移位讀取標記相關的動作。
如圖17所示,首先,控制器20的例如處理器21參照存儲在寄存器23的表,對與此后讀取的頁對應的移位讀取標記進行確認(步驟s80)。
此處,在所參照的移位讀取標記為“1”的情況下(步驟s81、是)、也就是此后讀取對象的頁中必需移位讀取的情況下,控制器20發布移位讀取指令,并將其發送至半導體存儲裝置10(步驟s82)。該移位讀取指令是命令半導體存儲裝置10從存儲器單元陣列11向讀出放大器模塊12利用移位讀取來讀取1頁量的指令。
另一方面,在步驟s81中所參照的移位讀取標記為“0”的情況下(步驟s81、否)、也就是在讀取對象的頁中無需移位讀取的情況下,控制器20發布通常的讀取指令并將其發送至半導體存儲裝置10(步驟s83)。
在步驟s82或s83之后,控制器20發送成為讀取對象的區域的地址。該地址相當于存儲器單元陣列11的高速緩存區域的任一頁。
定序器17基于所接收到的移位讀取指令或讀取指令,將1頁量的數據從存儲器單元陣列11的高速緩存區域讀出(步驟s84)。也就是說,在步驟s84中,在經由步驟s82的情況下進行移位讀取,在經由步驟s83的情況下進行通常讀取。在該移位讀取與通常讀取中,讀取動作時施加至字線wl的電壓不同。
在步驟s84之后,存儲器系統1的動作移行至所述步驟s48。以下的動作與第1實施方式中說明的圖10相同,僅圖17中從步驟s50移行至步驟s80的方面不同。
[2-2-2-2]第2寫入動作的指令順序
接下來,使用圖18對第2寫入動作的指令順序進行說明。在圖18中示出第2寫入動作的指令順序的一例。以下,以在從高速緩存區域讀取的3頁量的數據中第1頁的移位讀取標記為“1”、第2頁及第3頁的移位讀取標記為“0”的情況為例進行說明。
如圖18所示,首先,控制器20持續發布指令“a2h”及移位讀取指令“zzh”,并分別發送至半導體存儲裝置10(圖17、步驟s82)。指令“zzh”相當于步驟s82中說明的移位讀取指令。
接下來,控制器20例如跨及5個循環發布地址信息add,并將其發送至半導體存儲裝置10。該地址信息add是指定高速緩存區域的地址的信息。接下來,控制器20發布指令“30h”,并將其發送至半導體存儲裝置10。如果指令“30h”被儲存至寄存器15c,那么定序器17控制讀出放大器模塊12及行解碼器13等,并開始進行移位讀取。當進行移位讀取時,數據被讀取至各讀出放大器單元sau的讀出放大器部sa,且所讀出的數據從讀出放大器部sa被傳輸至鎖存電路sdl。
接下來,控制器20持續發布指令“01h”及“80h”,并分別發送至半導體存儲裝置10。然后,控制器20例如跨及5個循環發布地址信息add,并將其發送至半導體存儲裝置10。接下來,控制器20發布指令“1ah”,并將其發送至半導體存儲裝置10。當半導體存儲裝置10接收到指令“1ah”時,將讀取數據傳輸至鎖存電路dl1(圖17、步驟s50)。
以下的動作與第1實施方式中說明的圖11相同,因此省略說明。也就是說,移位讀取標記為“0”的情況下的指令順序與在第1實施方式中說明的圖11中錯誤訂正標記為“0”的情況下的指令順序相同。
[2-3]第2實施方式的效果
接下來,對第2實施方式的效果進行說明。根據第2實施方式的半導體存儲裝置10,能夠比第1實施方式更提高寫入速度。以下,對該詳細內容進行說明。
在半導體存儲裝置中,存在能夠通過進行移位讀取而降低從高速緩存區域讀取數據時所產生的錯誤比特數的情況。
因此,第2實施方式的半導體存儲裝置10是在第1實施方式中的錯誤確認動作中,在錯誤比特數成為特定值以上的情況下確立移位讀取標記,并基于該移位讀取標記制作表。該表是表示在存儲器單元陣列11內哪一頁中必需移位讀取的信息。然后,通過將該表發送至控制器20,控制器20能夠獲得必需移位讀取的地址。
進而,控制器20在寫回數據時,當從高速緩存區域讀取數據時,基于移位讀取標記發布移位讀取指令。具體來說,當在移位讀取標記為“1”的頁寫回時發布移位讀取指令,接收到移位讀取指令的半導體存儲裝置10通過移位讀取從高速緩存區域讀取數據。另一方面,當在移位讀取標記為“0”的頁寫回時發布通常的讀取指令,接收到通常的讀取指令的半導體存儲裝置10通過通常的讀取動作從高速緩存區域讀取數據。然后,所讀出的數據被寫入至存儲區域。
由此,第2實施方式的半導體存儲裝置10與第1實施方式同樣地能夠提高數據的可靠性。另外,移位讀取不會像進行錯誤訂正處理的情況那樣在半導體存儲裝置10與控制器20之間產生數據的交換,因此比第1實施方式更能使寫入動作高速化。
[3]變化例等
所述實施方式的半導體存儲裝置《10、圖1》具備:第1存儲器單元《高速緩存區域、圖2》,能夠存儲n比特(n為1以上的自然數)的數據;第2存儲器單元《存儲區域、圖2》,能夠存儲m比特(m為2以上的自然數,m>n)的數據;以及讀出放大器《12、圖2》,對第1及第2存儲器單元進行數據的讀取及寫入。當半導體存儲裝置從外部的控制器《20、圖1》接收到第1命令《80h、圖9》時,讀出放大器將第1數據寫入至所述第1存儲器單元《program、圖8》。然后,讀出放大器在寫入后從第1存儲器單元讀取第1數據《read、圖8》,并將第1數據與所讀出的第1數據進行比較《xnor、圖8》。當半導體存儲裝置接收第1命令后接收到與第1命令不同的第2命令《80h、圖11》時,基于所述比較結果,讀出放大器將從第1存儲器單元讀出的第1數據寫入至第2存儲器單元或將從控制器接收的第2數據寫入至第2存儲器單元。
另外,所述實施方式的存儲器系統具備所述半導體存儲裝置、及能夠輸出第1及第2命令的控制器。
由此,能夠提供一種能使動作高速化的半導體存儲裝置及存儲器系統。
此外,實施方式并不限定于所述第1及第2實施方式,可以進行各種變化。例如關于所述實施方式,使用具備1個平面的半導體存儲裝置10進行了說明,所述1個平面設置著1個存儲器單元陣列11及與其對應的讀出放大器模塊12及行解碼器13,但并不限定于此。也就是說,半導體存儲裝置10也可以具備由1個定序器17控制的2個以上的平面。在該情況下,錯誤訂正標記及移位讀取標記針對各平面分別設定,狀態信息所包含的各平面的各標記根據狀態讀取指令而經由不同的信號線dq輸出。
另外,所述第1及第2實施方式通過將在錯誤確認動作中確立標記的錯誤比特數的閾值在錯誤訂正標記與移位讀取標記中設為不同的值而能夠同時地應用。例如關于確立標記的閾值,將錯誤訂正標記設定為比移位讀取標記高。在該情況下,在錯誤確認動作中檢測出的錯誤比特數少而期待由移位讀取改善的情況下能夠應用移位讀取,在錯誤確認動作中檢測出的錯誤比特數多而必需錯誤訂正的情況下能夠應用錯誤訂正。由此,能夠一邊維持數據的可靠性,一邊比第1實施方式更提高寫入速度。此外,在進行此種處理的情況下,半導體存儲裝置10也可以根據1次狀態讀取指令將錯誤訂正標記與移位讀取標記同時地輸出至控制器20。
另外,控制器20分別在圖5所示的步驟s31中發布狀態讀取指令“xxh”,在圖15所示的步驟s70中發布狀態讀取指令“yyh”,相對于此,也可以發布狀態讀取指令“70h”。也就是說,半導體存儲裝置10也可以將在接收到狀態讀取指令“70h”的情況下讀取的寫入通過/失敗信息與錯誤訂正標記及移位讀取標記一起讀取。
另外,表示了在所述實施方式中分別對高速緩存區域及存儲區域的存儲器單元應用slc方式及tlc方式的寫入的例,但并不限定于此,只要存儲在高速緩存區域的存儲器單元的比特數比存儲在存儲區域的存儲器單元的比特數少即可。
另外,在所述實施方式中輸出各狀態信息的信號線dq的分配并不限定于此,可以進行各種變更。另外,在所述實施方式中錯誤訂正標記及移位讀取標記的數字的分配并不限定于此,可以進行各種變更。
另外,在所述說明中,所謂“連接”表示電連接,不僅包含直接連接的情況,也包含經由任意的元件連接的情況。
此外,存儲器單元陣列11也可為存儲器單元晶體管mt三維積層在半導體襯底的上方而成的構成。關于此種構成,例如記載在名為“三次元積層非易失性半導體存儲器”且在2009年3月19日申請的美國專利申請12/407,403號。另外,記載在名為“三次元積層非易失性半導體存儲器”且在2009年3月18日申請的美國專利申請12/406,524號、名為“非易失性半導體存儲裝置及其制造方法”且在2010年3月25日申請的美國專利申請12/679,991號、名為“半導體存儲器及其制造方法”且在2009年3月23日申請的美國專利申請12/532,030號。這些專利申請的整體通過參照而引用在本說明書中。
另外,在所述實施方式中,區塊blk也可以不成為數據的刪除單位。例如其它刪除動作記載在名為“非易失性半導體存儲裝置”且在2011年9月18日申請的美國專利申請13/235,389號、名為“非易失性半導體存儲裝置”且在2010年1月27日申請的美國專利申請12/694,690號。這些專利申請的整體通過參照而引用在本說明書中。
此外,對本發明的若干實施方式進行了說明,但這些實施方式是作為例子而提出的,并不意圖限定發明的范圍。這些實施方式能夠以其它各種方式實施,且能夠在不脫離發明主旨的范圍內進行各種省略、替換、變更。這些實施方式或其變化包含在發明的范圍或主旨中,并且包含在權利要求書所記載的發明與其均等的范圍內。
[符號的說明]
1存儲器系統
10半導體存儲裝置
11存儲器單元陣列
12讀出放大器模塊
13行解碼器
14輸入輸出電路
15寄存器
16邏輯控制電路
17定序器
18待命/忙碌控制電路
19電壓產生電路
20控制器
21處理器
22內置存儲器
23寄存器
24ecc電路
25nand接口電路
26緩沖存儲器
27主機接口電路