專(zhuān)利名稱(chēng):固態(tài)盤(pán)設(shè)備及其編程失敗處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電子設(shè)備,并且更具 體地,涉及固態(tài)盤(pán)設(shè)備和固態(tài)盤(pán)設(shè)備的編程失敗 處理方法。
背景技術(shù):
隨著以信息為中心的社會(huì)的來(lái)臨,個(gè)人存儲(chǔ)和攜帶的數(shù)據(jù)量已經(jīng)增長(zhǎng)。已開(kāi)發(fā)出 各種個(gè)人數(shù)據(jù)存儲(chǔ)設(shè)備以處理這樣的增長(zhǎng)。在數(shù)據(jù)存儲(chǔ)設(shè)備中,硬盤(pán)驅(qū)動(dòng)器(hard disk drive,HDD)由于高記錄密度、高數(shù)據(jù) 傳輸速度、快速數(shù)據(jù)存取時(shí)間、低成本等原因而得到了廣泛使用。然而,因?yàn)橛脖P(pán)驅(qū)動(dòng)器的 移動(dòng)機(jī)械部件的復(fù)雜結(jié)構(gòu),所以它容易因?yàn)樾〉臎_擊和振動(dòng)而損壞。開(kāi)發(fā)了使用閃存存儲(chǔ)器的固態(tài)盤(pán)(solid state disk, SSD)作為可以取代硬盤(pán)驅(qū) 動(dòng)器的數(shù)據(jù)存儲(chǔ)設(shè)備。不像硬盤(pán)驅(qū)動(dòng)器,SSD不具有移動(dòng)機(jī)械結(jié)構(gòu)。因此,相較于硬盤(pán)驅(qū)動(dòng) 器,SSD可以減少等待時(shí)間和驅(qū)動(dòng)時(shí)間,并且可以高速執(zhí)行讀/編程操作。因?yàn)镾SD可以減 少由等待時(shí)間和機(jī)械摩擦引起的錯(cuò)誤,所以它可以改善讀/編程操作的可靠性。而且,因?yàn)?在SSD的操作期間很少發(fā)熱和出現(xiàn)噪聲并且SDD對(duì)外部沖擊具有較強(qiáng)抵抗力,所以相較于 已知的HDD,SSD被認(rèn)為適于便攜式設(shè)備。
發(fā)明內(nèi)容
根據(jù)本發(fā)明構(gòu)思的實(shí)施例,一種固態(tài)盤(pán)設(shè)備包括至少一個(gè)非易失性存儲(chǔ)器;以 及控制器,用于在非易失性存儲(chǔ)器中發(fā)生編程失敗時(shí)向主機(jī)報(bào)告錯(cuò)誤代碼,以請(qǐng)求先前接 收的數(shù)據(jù)和相應(yīng)于該數(shù)據(jù)的命令。在該情況下,錯(cuò)誤代碼是在由控制器支持的接口或由非 易失性存儲(chǔ)器支持的數(shù)據(jù)傳輸協(xié)議中定義的多個(gè)錯(cuò)誤代碼之一。在一些實(shí)施例中,錯(cuò)誤代碼可以是在接口或數(shù)據(jù)傳輸協(xié)議中定義的用于處理除了 編程失敗之外的錯(cuò)誤。在一些實(shí)施例中,固態(tài)盤(pán)設(shè)備還可以包括閃存?zhèn)鬏攲?,用于監(jiān)控在非易失性存儲(chǔ) 器中是否發(fā)生了編程失敗,并且當(dāng)發(fā)生編程失敗時(shí)向主機(jī)報(bào)告錯(cuò)誤代碼。在一些實(shí)施例中,錯(cuò)誤代碼可以包括CRC (循環(huán)冗余校驗(yàn))錯(cuò)誤代碼。在一些實(shí)施例中,數(shù)據(jù)傳輸協(xié)議可以包括超DMA(直接存儲(chǔ)器存取)協(xié)議。在一些實(shí)施例中,接口可以包括ATA(AT嵌入式接口)接口。在一些實(shí)施例中,每當(dāng)在非易失性存儲(chǔ)器中檢測(cè)到編程失敗時(shí),控制器都向主機(jī) 報(bào)告錯(cuò)誤代碼,而無(wú)需將先前接收的數(shù)據(jù)和命令存儲(chǔ)到額外的存儲(chǔ)器。根據(jù)本發(fā)明構(gòu)思的實(shí)施例,一種固態(tài)盤(pán)設(shè)備的編程失敗處理方法包括響應(yīng)于從主機(jī)接收的編程命令和數(shù)據(jù),對(duì)至少一個(gè)非易失性存儲(chǔ)器編程;當(dāng)在非易失性存儲(chǔ)器中發(fā) 生編程失敗時(shí),向主機(jī)報(bào)告錯(cuò)誤代碼來(lái)請(qǐng)求數(shù)據(jù)和編程命令,該數(shù)據(jù)和該編程命令是先前 接收的;從主機(jī)重新接收與報(bào)告的錯(cuò)誤代碼相應(yīng)的數(shù)據(jù)和命令;以及將從主機(jī)重新接收的數(shù)據(jù)重新編程到非易失性存儲(chǔ)器。在一些實(shí)施例中,錯(cuò)誤代碼可以是在由固態(tài)盤(pán)設(shè)備支持的接口或數(shù)據(jù)傳輸協(xié)議中定義的用以處理除了編程失敗之外的錯(cuò)誤的多個(gè)錯(cuò)誤代碼之一。在一些實(shí)施例中,錯(cuò)誤代碼可以包括CRC (循環(huán)冗余校驗(yàn))錯(cuò)誤代碼。在一些實(shí)施例中,數(shù)據(jù)傳輸協(xié)議可以包括超DMA(直接存儲(chǔ)器存取)協(xié)議。在一些實(shí)施例中,接口可以包括ATA(AT嵌入式接口)接口。在一些實(shí)施例中,編程和重新編程執(zhí)行對(duì)電連接到多個(gè)通道的多個(gè)非易失性存儲(chǔ)器進(jìn)行連續(xù)編程的交織編程操作。在一些實(shí)施例中,報(bào)告錯(cuò)誤代碼可以包括當(dāng)在多個(gè)閃存存儲(chǔ)器的任何一個(gè)中檢測(cè)到編程失敗時(shí),向主機(jī)報(bào)告錯(cuò)誤代碼。在一些實(shí)施例中,執(zhí)行向主機(jī)報(bào)告錯(cuò)誤代碼而無(wú)需將先前接收的數(shù)據(jù)和編程命令存儲(chǔ)到額外的存儲(chǔ)器。根據(jù)本發(fā)明構(gòu)思的實(shí)施例,一種計(jì)算系統(tǒng)包括主機(jī);以及固態(tài)盤(pán)設(shè)備,用于通過(guò) 主機(jī)的請(qǐng)求來(lái)寫(xiě)或讀出數(shù)據(jù)。在該情況下,固態(tài)盤(pán)設(shè)備包括至少一個(gè)非易失性存儲(chǔ)器;以 及控制器,用于在非易失性存儲(chǔ)器中發(fā)生編程失敗時(shí)向主機(jī)報(bào)告錯(cuò)誤代碼,以請(qǐng)求先前接 收的數(shù)據(jù)和相應(yīng)于該數(shù)據(jù)的命令,以及錯(cuò)誤代碼是在由控制器支持的接口或由非易失性存 儲(chǔ)器支持的數(shù)據(jù)傳輸協(xié)議中定義的多個(gè)錯(cuò)誤代碼之一。在一些實(shí)施例中,每當(dāng)在非易失性存儲(chǔ)器中發(fā)生編程失敗時(shí),控制器都向主機(jī)報(bào) 告錯(cuò)誤代碼,而無(wú)需將先前接收的數(shù)據(jù)和命令存儲(chǔ)到額外的存儲(chǔ)器。
附圖被包括在內(nèi)以提供對(duì)本發(fā)明構(gòu)思的進(jìn)一步理解,并且被合并于本說(shuō)明書(shū)中并 組成本說(shuō)明書(shū)的一部分。附示了本發(fā)明構(gòu)思的示范性實(shí)施例。在附圖中圖1是圖示根據(jù)本發(fā)明構(gòu)思的實(shí)施例的固態(tài)盤(pán)系統(tǒng)的示意性配置的框圖;圖2是更全面圖示圖1的控制器的配置的視圖;圖3是說(shuō)明沒(méi)有應(yīng)用CRC錯(cuò)誤代碼的編程失敗處理方法的時(shí)序圖;圖4是說(shuō)明應(yīng)用CRC錯(cuò)誤代碼的、根據(jù)本發(fā)明構(gòu)思的實(shí)施例的編程失敗處理方法 的時(shí)序圖;圖5是圖示根據(jù)本發(fā)明構(gòu)思的實(shí)施例的編程失敗處理方法的流程圖;以及圖6是圖示根據(jù)本發(fā)明構(gòu)思的實(shí)施例的計(jì)算系統(tǒng)的視圖。
具體實(shí)施例方式下面將參考附圖更詳細(xì)描述本發(fā)明構(gòu)思的示范性實(shí)施例。然而,本發(fā)明構(gòu)思的實(shí) 施例可以以許多不同形式具體體現(xiàn),并且不應(yīng)該被解釋為限制于在此闡述的實(shí)施例。而是, 提供實(shí)施例以使得本公開(kāi)將是詳盡和完整的并且將全面向本領(lǐng)域技術(shù)人員傳達(dá)本發(fā)明構(gòu) 思的范圍,以及將僅僅由所附權(quán)利要求限定本發(fā)明構(gòu)思的實(shí)施例。貫穿于本說(shuō)明書(shū),相似的參考標(biāo)記表示相似的元件。每當(dāng)發(fā)生編程失敗時(shí),根據(jù)本發(fā)明構(gòu)思的實(shí)施例的固態(tài)盤(pán)設(shè)備都將規(guī)定的錯(cuò)誤代 碼人工報(bào)告給主機(jī)。響應(yīng)于由固態(tài)盤(pán)設(shè)備報(bào)告的錯(cuò)誤代碼,主機(jī)向固態(tài)盤(pán)設(shè)備重新發(fā)送其 中發(fā)生編程失敗的相應(yīng)命令和數(shù)據(jù)(編程失敗的數(shù)據(jù))。為了重新發(fā)送編程失敗的數(shù)據(jù)的 目的而將要發(fā)送到主機(jī)的錯(cuò)誤代碼可以利用在總線的數(shù)據(jù)傳輸協(xié)議中或者在固態(tài)盤(pán)設(shè)備 的接口中所定義的多個(gè)錯(cuò)誤代碼之一,盡管這些錯(cuò)誤代碼是在沒(méi)有考慮閃存的編程失敗的 條件下初始定義的。根據(jù)本發(fā)明構(gòu)思的實(shí)施例的編程失敗處理方法,對(duì)于編程失敗的數(shù)據(jù), 可以在不定義用于處理編程失敗的特定錯(cuò)誤代碼和特定流程的條件下重新執(zhí)行編程操作。 因此,固態(tài)盤(pán)設(shè)備可以存儲(chǔ)先前編程的數(shù)據(jù)或先前接收的編程數(shù)據(jù)而無(wú)需額外的存儲(chǔ)器。圖1是圖示根據(jù)本發(fā)明構(gòu)思的實(shí)施例的固態(tài)盤(pán)系統(tǒng)1000的示意性配置的框圖。參考圖1,可以將固態(tài)盤(pán)(SSD)設(shè)備500分為控制器100和數(shù)據(jù)存儲(chǔ)單元300。數(shù) 據(jù)存儲(chǔ)單元300是使用例如半導(dǎo)體芯片存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)介質(zhì)。優(yōu)選地,可以為數(shù)據(jù)存儲(chǔ)單元300提供諸如閃存存儲(chǔ)器之類(lèi)的非易失性存儲(chǔ)器。 可以在控制器100和數(shù)據(jù)存儲(chǔ)單元300之間提供N個(gè)通道(其中N是1或大于1的整數(shù))。 多個(gè)閃存存儲(chǔ)器310至330可以電連接到各個(gè)通道CHO至CH(N-I)。連接到各個(gè)通道CHO 至CH(N-I)的多個(gè)閃存存儲(chǔ)器310至330可以組成多個(gè)數(shù)據(jù)通路。通道CHO至CH(N-I)可以包含向相應(yīng)的閃存存儲(chǔ)器310至330發(fā)送命令和數(shù)據(jù)的 獨(dú)立總線。閃存存儲(chǔ)器310至330可以分別連接到不同的通道,并且可以獨(dú)立操作。多頁(yè) 可以包含共同占據(jù)一個(gè)通道的閃存存儲(chǔ)器的集合。根據(jù)相應(yīng)的通道和頁(yè),可以區(qū)分各個(gè)閃 存存儲(chǔ)器芯片。從主機(jī)900發(fā)送的邏輯塊地址(LBA)可以確定任意通道的任意頁(yè)的哪個(gè)閃 存存儲(chǔ)器芯片執(zhí)行從主機(jī)900提供的命令。本發(fā)明構(gòu)思的實(shí)施例將示意性地描述可以用閃存存儲(chǔ)器實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)單元300 的情況。然而,數(shù)據(jù)存儲(chǔ)單元300的非易失性存儲(chǔ)器不限于特定種類(lèi)和特定類(lèi)型,而是可 以以各種類(lèi)型配置。例如,數(shù)據(jù)存儲(chǔ)單元300的非易失性存儲(chǔ)器310至330可以包括諸如 MRAM或PRAM以及閃存存儲(chǔ)器之類(lèi)的非易失性存儲(chǔ)器。另外,可以由諸如DRAM或SRAM之類(lèi) 的易失性存儲(chǔ)器組成數(shù)據(jù)存儲(chǔ)單元300??梢砸愿鞣N類(lèi)型實(shí)現(xiàn)存儲(chǔ)在組成數(shù)據(jù)存儲(chǔ)單元300的閃存存儲(chǔ)器310至 330的每個(gè)存儲(chǔ)單元中的數(shù)據(jù)比特?cái)?shù)量。例如,可以用每單元存儲(chǔ)1比特?cái)?shù)據(jù)的單層 (single-level)閃存存儲(chǔ)單元和每單元存儲(chǔ)多比特?cái)?shù)據(jù)的多層(multi-level)閃存存儲(chǔ) 單元來(lái)實(shí)現(xiàn)閃存存儲(chǔ)器310至330。另外,閃存存儲(chǔ)器310至330可以被實(shí)現(xiàn)為單層閃存存 儲(chǔ)單元和多層閃存存儲(chǔ)單元的混合類(lèi)型??梢圆煌貙?shí)現(xiàn)組成閃存存儲(chǔ)器310至330的存 儲(chǔ)單元。例如,可以用NAND (與非)閃存存儲(chǔ)單元或NOR(或非)閃存存儲(chǔ)單元來(lái)實(shí)現(xiàn)閃存 存儲(chǔ)器310至330,并且閃存存儲(chǔ)器310至330可以被實(shí)現(xiàn)為NAND閃存存儲(chǔ)單元或NOR閃 存存儲(chǔ)單元的混合類(lèi)型。而且,閃存存儲(chǔ)器310至330可以是One-NAND閃存存儲(chǔ)器,其中 閃存存儲(chǔ)器核心和存儲(chǔ)器控制邏輯在一個(gè)芯片中形成??梢杂镁哂幸愿鞣N各樣類(lèi)型配置的電荷存儲(chǔ)層的存儲(chǔ)單元來(lái)實(shí)現(xiàn)閃存存儲(chǔ)器310 至330。例如,電荷存儲(chǔ)層可以由導(dǎo)電多晶硅(conductiv印olycrystalline silicon)形 成,以及使用諸如Si3N4、Al203、HfA10和HfSiO之類(lèi)的絕緣層形成。將諸如Si3N4、Al203、HfA10 和HfSiO之類(lèi)的絕緣層用作電荷存儲(chǔ)層的閃存存儲(chǔ)器也被稱(chēng)作電荷捕獲閃存(Charge TrapFlash, CTF)存儲(chǔ)器??刂破?00可以通過(guò)諸如如下的各種接口之一與主機(jī)900交換數(shù)據(jù)通用串行總線(USB)、多媒體卡(MMC)、PCIExpress (PCIE)、AT 嵌入式接口(AT Attachment,ΑΤΑ)、串行 AT嵌入式接口(SATA)、并行AT嵌入式接口(PATA)、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)、串行連接 SCSI (SAS)、增強(qiáng)型小型硬盤(pán)接口(Enhanced Small Disk Interface,ESDI)、集成驅(qū)動(dòng)電子設(shè)備(Integrated Drive Electronics, IDE)等??梢栽诳刂破?00的主機(jī)接口(參見(jiàn)圖 2的參考標(biāo)記140)中執(zhí)行主機(jī)900和控制器100之間的接口。響應(yīng)于從主機(jī)900輸入的命令,控制器100可以控制數(shù)據(jù)存儲(chǔ)單元300的編程、擦除和讀操作。具體地,控制器100可以使用閃存?zhèn)鬏攲?TranslationLayer,在下文中被稱(chēng) 作FTL) 50來(lái)處理編程失敗。在本發(fā)明構(gòu)思的實(shí)施例中,當(dāng)在組成數(shù)據(jù)存儲(chǔ)單元300的多個(gè) 閃存存儲(chǔ)器的任意一個(gè)中發(fā)生編程失敗時(shí),F(xiàn)TL 50可以向主機(jī)900人工報(bào)告錯(cuò)誤代碼。響 應(yīng)于從FTL 50報(bào)告的錯(cuò)誤代碼,主機(jī)900可以向固態(tài)盤(pán)設(shè)備500重傳與編程失敗的數(shù)據(jù)相 應(yīng)的命令和數(shù)據(jù)。為了處理編程失敗的目的而向主機(jī)900發(fā)送的錯(cuò)誤代碼可以利用在固態(tài)盤(pán)設(shè)備 500和主機(jī)900之間提供的接口或者由固態(tài)盤(pán)設(shè)備500內(nèi)的總線支持的傳輸協(xié)議中初始定 義的多個(gè)錯(cuò)誤代碼的一個(gè),盡管這些錯(cuò)誤代碼是在沒(méi)有考慮閃存的編程失敗的條件下而初 始定義的。在本發(fā)明構(gòu)思的實(shí)施例中,在接口或數(shù)據(jù)傳輸協(xié)議中初始定義的錯(cuò)誤代碼的一 個(gè)(例如,CRC錯(cuò)誤)可以代替用于閃存存儲(chǔ)器的特定錯(cuò)誤代碼以處理編程失敗。用于處 理CRC錯(cuò)誤的錯(cuò)誤代碼被稱(chēng)為CRC錯(cuò)誤代碼。本發(fā)明構(gòu)思的實(shí)施例將示意性地描述不同的情況。例如,可以在固態(tài)盤(pán)設(shè)備500 和主機(jī)900之間提供ATA接口,并且可以為數(shù)據(jù)存儲(chǔ)單元300提供支持超DMA協(xié)議的閃存 存儲(chǔ)器。然而,可以改變和修改接口和數(shù)據(jù)傳輸協(xié)議而不限于特定類(lèi)型。根據(jù)本發(fā)明構(gòu)思的實(shí)施例的編程失敗處理方法可以用接口或協(xié)議中初始定義的 錯(cuò)誤代碼(例如,CRC錯(cuò)誤代碼)替代用于閃存存儲(chǔ)器的特定錯(cuò)誤代碼。因此,可以執(zhí)行根 據(jù)本發(fā)明構(gòu)思的實(shí)施例的編程失敗處理方法而無(wú)需定義用于處理編程失敗的特定流程和 特定錯(cuò)誤代碼。所以,編程失敗處理方法可以通過(guò)遵循在接口或協(xié)議中初始定義的錯(cuò)誤處 理流程(例如,CRC錯(cuò)誤處理流程)來(lái)執(zhí)行關(guān)于編程失敗的數(shù)據(jù)的重新編程,而無(wú)需用于處 理編程失敗的特定內(nèi)部操作。因?yàn)榭梢詧?zhí)行重新編程,所以固態(tài)盤(pán)設(shè)備500不要求用于存 儲(chǔ)先前接收的編程數(shù)據(jù)或先前編程的數(shù)據(jù)的額外的存儲(chǔ)器。根據(jù)本發(fā)明構(gòu)思的實(shí)施例,可 以將編程失敗處理應(yīng)用到如下情況中當(dāng)同時(shí)編程數(shù)據(jù)或連續(xù)執(zhí)行多個(gè)編程操作時(shí),例如, 當(dāng)執(zhí)行用于同時(shí)編程兩頁(yè)數(shù)據(jù)或N路(Niay)交織編程的雙面頁(yè)面(two-plane page)編 程時(shí)。圖2是圖示圖1中所示的控制器100的示范性配置的視圖。參考圖2,控制器100可以包括中央處理單元(CPU) 110、CPU總線130、主機(jī)接口 140、緩存存儲(chǔ)器控制單元160、緩存存儲(chǔ)器170和閃存接口 180。CPU 110、主機(jī)接口 140、緩 存存儲(chǔ)器控制單元160、緩存存儲(chǔ)器170和閃存接口 180可以通過(guò)CPU總線130互連。CPU 110可以控制固態(tài)盤(pán)設(shè)備500的各種操作。主機(jī)接口140可以根據(jù)CPU 110的 控制,與主機(jī)900交換命令、地址和數(shù)據(jù)。緩存存儲(chǔ)器170可以臨時(shí)存儲(chǔ)從主機(jī)900輸入的 數(shù)據(jù)或者將通過(guò)主機(jī)接口 140向主機(jī)900發(fā)送的數(shù)據(jù)??梢韵蜷W存存儲(chǔ)器310至330或主機(jī)900發(fā)送臨時(shí)存儲(chǔ)的數(shù)據(jù)。本發(fā)明構(gòu)思的實(shí)施例將示意性地描述主機(jī)接口 140支持ATA 接口的情況。然而,除了ATA接口之外,各種接口技術(shù)可以被應(yīng)用到主機(jī)接口 140。例如,只 要接口定義了用于請(qǐng)求先前接收的數(shù)據(jù)和相應(yīng)于該數(shù)據(jù)的命令的錯(cuò)誤代碼,就可以將它應(yīng)用到固態(tài)盤(pán)設(shè)備500及其編程失敗處理方法。組成數(shù)據(jù)存儲(chǔ)單元300的閃存存儲(chǔ)器310至330是可能不能被重寫(xiě)的存儲(chǔ)器。因此,在編程操作之前,在閃存存儲(chǔ)器310至330中執(zhí)行擦除操作。在閃存存儲(chǔ)器310至330 中的每一個(gè)中,編程操作的數(shù)據(jù)單元不同于擦除操作的數(shù)據(jù)單元。例如,編程操作的數(shù)據(jù)單 元小于擦除操作的數(shù)據(jù)單元。為了隱藏閃存存儲(chǔ)器310至330的寫(xiě)前擦除特性,可以將FTL 50部署在文件系統(tǒng)(未示出)和閃存存儲(chǔ)器310至330之間。通常,文件系統(tǒng)以面向主機(jī) 的軟件的形式存儲(chǔ)。對(duì)于閃存存儲(chǔ)器310至330,在編程操作期間,F(xiàn)TL 50可以執(zhí)行地址 映射功能,將由文件系統(tǒng)生成的邏輯塊地址(LBA)映射為閃存存儲(chǔ)器310至330的物理塊 地址(PBA)。由于FTL 50的地址映射功能,主機(jī)900可以將提供有閃存存儲(chǔ)器310至330 的固態(tài)盤(pán)設(shè)備500識(shí)別為硬盤(pán)驅(qū)動(dòng)器,并且可以以與硬盤(pán)驅(qū)動(dòng)器相同的方式存取閃存存儲(chǔ) 器。另外,F(xiàn)TL 50可以執(zhí)行壞塊管理功能、由于電源中斷的數(shù)據(jù)備份管理功能以及耗損均衡(wear-level)管理功能。進(jìn)一步地,在本發(fā)明構(gòu)思的實(shí)施例中,F(xiàn)TL 50可以執(zhí)行閃存存 儲(chǔ)器310至330的編程失敗處理。例如,F(xiàn)TL 50可以監(jiān)控在編程操作期間在閃存存儲(chǔ)器310至330中是否發(fā)生了編 程失敗,并且可以控制重新執(zhí)行針對(duì)編程失敗的數(shù)據(jù)的編程操作??梢詮脑诿總€(gè)閃存存儲(chǔ) 器內(nèi)提供的控制邏輯(未示出)來(lái)報(bào)告編程失敗的發(fā)生或未發(fā)生。關(guān)于FTL 50中執(zhí)行的編程失敗處理功能,將在下面更全面的進(jìn)行描述。響應(yīng)于CPU 110的控制,緩存存儲(chǔ)器控制單元160可以控制閃存存儲(chǔ)器170的存 取操作(例如,讀/寫(xiě)/擦除操作)。閃存存儲(chǔ)器170可以具體實(shí)施為易失性存儲(chǔ)器(例 如,SRAM或DRAM)。緩存存儲(chǔ)器170可以臨時(shí)存儲(chǔ)在閃存存儲(chǔ)器和主機(jī)900之間發(fā)送的數(shù) 據(jù),并且可以存儲(chǔ)執(zhí)行FTL 50的功能所需要的軟件和將由CPU 110操作的程序。例如,執(zhí) 行FTL 50的功能所需要的軟件可以被存儲(chǔ)在閃存存儲(chǔ)器310至330或者相應(yīng)的數(shù)據(jù)存儲(chǔ) 區(qū)域(例如,引導(dǎo)代碼(boot code)區(qū)域)中,并且可以在加電(power-up)操作期間被載 入緩存存儲(chǔ)器170上。另外,緩存存儲(chǔ)器170可以存儲(chǔ)由FTL 50處理的額外的信息,例如, 閃存存儲(chǔ)器的地址映射信息。閃存接口 180可以通過(guò)多個(gè)通道CHO至CH(N-I)與多個(gè)閃存存儲(chǔ)器交換數(shù)據(jù)。多 個(gè)閃存存儲(chǔ)器可以分別與多個(gè)通道CHO至CH(N-I)電連接。本發(fā)明構(gòu)思的實(shí)施例將示意性 地描述在閃存接口 180和數(shù)據(jù)存儲(chǔ)單元300之間支持超DMA協(xié)議的情況。然而,可以以各種類(lèi)型改變和修改數(shù)據(jù)傳輸協(xié)議而不局限于本發(fā)明構(gòu)思的實(shí)施例中的特定類(lèi)型。例如,在 數(shù)據(jù)傳輸協(xié)議定義了用于請(qǐng)求先前接收的數(shù)據(jù)和相應(yīng)于該數(shù)據(jù)的命令的錯(cuò)誤代碼(例如, CRC錯(cuò)誤代碼)的情況下,數(shù)據(jù)傳輸協(xié)議可以被用于固態(tài)盤(pán)設(shè)備500及其編程失敗處理方 法。超DMA (Direct Memory Access,直接存儲(chǔ)器存取)可以支持作為用于在數(shù)據(jù)存儲(chǔ) 單元300和緩存存儲(chǔ)器170 (例如RAM)之間通過(guò)總線發(fā)送數(shù)據(jù)的協(xié)議的ΑΤΑ/IDE接口。超 DMA/33協(xié)議可以以相較于DMA協(xié)議大約快兩倍的33. 3MBps (兆字節(jié)每秒)的速率來(lái)發(fā)送數(shù)據(jù)。
超DMA可以利用CRC(循環(huán)冗余校驗(yàn))功能來(lái)保護(hù)將在數(shù)據(jù)發(fā)送單元(例如,主機(jī) 900)和數(shù)據(jù)接收單元(例如,固態(tài)盤(pán)設(shè)備500)之間發(fā)送的數(shù)據(jù)。CRC功能是用于驗(yàn)證在接 收的數(shù)據(jù)中是否存在錯(cuò)誤的一種技術(shù)。例如,數(shù)據(jù)發(fā)送單元(例如,主機(jī)900)可以通過(guò)將 16位或32位多項(xiàng)式應(yīng)用到數(shù)據(jù)塊來(lái)獲得CRC碼,并且可以將CRC碼與數(shù)據(jù)塊一起發(fā)送。數(shù) 據(jù)接收單元(例如,固態(tài)盤(pán)設(shè)備500)可以通過(guò)將如應(yīng)用到數(shù)據(jù)發(fā)送單元那樣相同的多項(xiàng)式 應(yīng)用到數(shù)據(jù)來(lái)生成CRC碼,并且可以將所生成的CRC碼與從數(shù)據(jù)發(fā)送單元發(fā)送的CRC碼相 比較。當(dāng)兩個(gè)CRC碼彼此相符時(shí),確定成功接收了這些數(shù)據(jù)。當(dāng)兩個(gè)CRC碼彼此不相符時(shí), 數(shù)據(jù)接收單元可以向數(shù)據(jù)發(fā)送單元報(bào)告CRC錯(cuò)誤代碼。這時(shí),響應(yīng)于所報(bào)告的CRC錯(cuò)誤代 碼,數(shù)據(jù)發(fā)送單元可以向數(shù)據(jù)接收單元重新發(fā)送數(shù)據(jù)塊和相應(yīng)的命令。根據(jù)本發(fā)明構(gòu)思的實(shí)施例,固態(tài)盤(pán)設(shè)備500可以利用上述的CRC錯(cuò)誤代碼處理特性來(lái)處理編程失敗。在本發(fā)明構(gòu)思的實(shí)施例中,在超DMA協(xié)議中初始定義的CRC錯(cuò)誤代碼 可以用于處理編程失敗。例如,在將從主機(jī)900接收的數(shù)據(jù)編程到數(shù)據(jù)存儲(chǔ)單元300中時(shí)發(fā)生編程失敗的 情況下,當(dāng)編程失敗發(fā)生時(shí),固態(tài)盤(pán)設(shè)備500可以使用FTL 50來(lái)向主機(jī)900人工報(bào)告CRC 錯(cuò)誤代碼而不管CRC校驗(yàn)結(jié)果為何。也就是說(shuō),盡管CRC錯(cuò)誤沒(méi)有發(fā)生,但是只要編程失敗 發(fā)生,F(xiàn)TL 50就可以向主機(jī)900報(bào)告CRC錯(cuò)誤代碼。主機(jī)900可以向固態(tài)盤(pán)設(shè)備500重新 發(fā)送與所報(bào)告的CRC錯(cuò)誤代碼相應(yīng)的命令(也就是編程命令)和編程失敗的數(shù)據(jù)。這個(gè)配 置使得可以將編程失敗的數(shù)據(jù)和相應(yīng)的命令重新發(fā)送給固態(tài)設(shè)備500而無(wú)需額外的部件。 重新發(fā)送給固態(tài)盤(pán)設(shè)備500的數(shù)據(jù)可以被重新編程到數(shù)據(jù)存儲(chǔ)單元300中。如果僅僅報(bào)告錯(cuò)誤的出現(xiàn)以處理閃存存儲(chǔ)器的編程失敗而不利用如上所述的預(yù) 定的錯(cuò)誤代碼(例如,CRC錯(cuò)誤代碼),則主機(jī)900可能花費(fèi)時(shí)間來(lái)找出在閃存存儲(chǔ)器中發(fā) 生了什么錯(cuò)誤。這是因?yàn)?,?yīng)用到計(jì)算機(jī)系統(tǒng)或許多便攜式數(shù)據(jù)設(shè)備的接口不是針對(duì)現(xiàn)有 的硬盤(pán)驅(qū)動(dòng)器而設(shè)計(jì)的,和/或因?yàn)榛阱e(cuò)誤代碼的閃存存儲(chǔ)器并非針對(duì)諸如閃存存儲(chǔ)器 之類(lèi)的半導(dǎo)體存儲(chǔ)器的編程/擦除特性而存在。也就是說(shuō),被定義用于處理在編程閃存存 儲(chǔ)器中發(fā)生的編程失敗的特定錯(cuò)誤代碼并不存在于應(yīng)用到計(jì)算機(jī)系統(tǒng)或便攜式數(shù)據(jù)設(shè)備 的數(shù)據(jù)傳輸協(xié)議和接口中。在下文中,將描述在與閃存存儲(chǔ)器的編程/擦除特性沒(méi)有關(guān)系的接口或數(shù)據(jù)傳輸 協(xié)議下的編程失敗處理方法。舉例來(lái)說(shuō),存在不應(yīng)用CRC錯(cuò)誤代碼的編程失敗處理方法。再 舉例來(lái)說(shuō),存在應(yīng)用CRC錯(cuò)誤代碼的根據(jù)本發(fā)明構(gòu)思的實(shí)施例的編程失敗處理方法。圖3是說(shuō)明沒(méi)有應(yīng)用CRC錯(cuò)誤代碼的編程失敗處理方法的時(shí)序圖。圖3圖示了在 不應(yīng)用CRC錯(cuò)誤代碼來(lái)處理編程失敗的情況下,緩存存儲(chǔ)器170和閃存存儲(chǔ)器310至330 的編程時(shí)序和數(shù)據(jù)傳輸時(shí)序。參考圖2和圖3,在編程操作期間在閃存存儲(chǔ)器310至330中發(fā)生編程失敗。這 時(shí),F(xiàn)TL 50可以將對(duì)編程失敗的數(shù)據(jù)進(jìn)行編程的存儲(chǔ)器塊標(biāo)記為壞塊,并且可以將存儲(chǔ)在 壞塊中的數(shù)據(jù)移動(dòng)到另一存儲(chǔ)器塊中。FTL 50可以管理壞塊的物理地址以及將數(shù)據(jù)從壞塊 移動(dòng)到其中的存儲(chǔ)器塊的邏輯地址和/或物理地址。FTL 50可以具有壞塊管理功能以處理 包括在壞塊中的數(shù)據(jù)。當(dāng)CRC錯(cuò)誤代碼沒(méi)被應(yīng)用來(lái)處理編程失敗時(shí),可以由FTL 50的壞塊管理功能來(lái)處 理編程失敗。為了將壞塊的數(shù)據(jù)寫(xiě)到另一存儲(chǔ)器塊上,在正常完成編程操作之前,應(yīng)該將全部的編程數(shù)據(jù)保持在緩存存儲(chǔ)器170中。例如,根據(jù)所實(shí)施的閃存存儲(chǔ)器310至330的類(lèi) 型,被編程到閃存存儲(chǔ)器310至330中的每一個(gè)的數(shù)據(jù)單元可以具有2kB至SkB存儲(chǔ)空間。 在交織編程以連續(xù)編程多個(gè)閃存存儲(chǔ)器的情況下,緩存存儲(chǔ)器170應(yīng)當(dāng)存儲(chǔ)將在交織編程中被編程到多個(gè)閃存存儲(chǔ)器的全部數(shù)據(jù)。例如,如圖3所示,當(dāng)由SkB組成一頁(yè)并且執(zhí)行最多4路交織編程時(shí),緩存存儲(chǔ)器 170應(yīng)該具有能夠存儲(chǔ)與4頁(yè)相關(guān)的全部編程數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)容量。在該情況下,緩存存 儲(chǔ)器170可以要求至少32kB(8kB*4頁(yè)=32kB)的數(shù)據(jù)存儲(chǔ)容量以管理壞塊。在應(yīng)用2平面頁(yè)面編程來(lái)將兩頁(yè)的數(shù)據(jù)一次性編程到閃存存儲(chǔ)器310至330中的情況下,緩存存儲(chǔ)器 170可以要求至少64kB(2*8kB*4 = 32kB)的數(shù)據(jù)存儲(chǔ)容量以管理壞塊。另外,當(dāng)在交織編 程中所用的通道數(shù)量增加時(shí),緩存存儲(chǔ)器中所需要的數(shù)據(jù)存儲(chǔ)容量可能進(jìn)一步增加。在全部完成針對(duì)多頁(yè)的交織編程P11、P12、P13和P14之后,可以執(zhí)行FTL 50的壞 塊管理操作。因此,可以?xún)H在完成第四頁(yè)數(shù)據(jù)Data3的編程之后,識(shí)別在第一頁(yè)數(shù)據(jù)DataO 的編程間隔Pll處發(fā)生的編程失敗。圖3中示出的符號(hào)Δ Tl表示從完成包含編程失敗的 交織編程時(shí)到重新開(kāi)始相關(guān)的交織編程時(shí)的時(shí)間延遲。而且,圖3中示出的符號(hào)ΔΤ2表示 從完成包括編程失敗的頁(yè)的編程Pll時(shí)到重新開(kāi)始相關(guān)頁(yè)的編程時(shí)的時(shí)間延遲。在時(shí)間延遲ΔΤ1期間,F(xiàn)TL 50將在其中發(fā)生編程失敗的存儲(chǔ)器塊標(biāo)記為壞塊,并 且重新執(zhí)行包括編程失敗的數(shù)據(jù)的交織編程。在重新執(zhí)行的交織編程中,存儲(chǔ)在緩存存儲(chǔ) 器170中的數(shù)據(jù)可以使用4頁(yè)。如圖3所示,當(dāng)CRC錯(cuò)誤代碼沒(méi)被應(yīng)用來(lái)處理編程失敗時(shí), 從完成在其中發(fā)生實(shí)際編程錯(cuò)誤的頁(yè)的編程時(shí)到重新開(kāi)始相關(guān)頁(yè)的編程時(shí),延遲時(shí)間Δ Τ2 較長(zhǎng)。另外,緩存存儲(chǔ)器170應(yīng)該具有可以全部存儲(chǔ)與4頁(yè)相應(yīng)的編程數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)容 量。由于緩存存儲(chǔ)器170的數(shù)據(jù)存儲(chǔ)容量增加,因此固態(tài)盤(pán)設(shè)備500的大小和制造成本可 能增加。圖4是說(shuō)明應(yīng)用CRC錯(cuò)誤代碼的根據(jù)本發(fā)明構(gòu)思的實(shí)施例的編程失敗處理方法的 時(shí)序圖。圖4圖示了根據(jù)本發(fā)明構(gòu)思的實(shí)施例,在編程失敗處理期間緩存存儲(chǔ)器170和閃 存存儲(chǔ)器310至330的數(shù)據(jù)發(fā)送時(shí)序和編程時(shí)序。參考圖2和圖4,閃存存儲(chǔ)器310至330的編程失敗可能隨機(jī)發(fā)生。在CRC錯(cuò)誤代 碼被應(yīng)用來(lái)處理編程失敗的情況下,每當(dāng)完成每頁(yè)數(shù)據(jù)的編程時(shí),F(xiàn)TL 50都可以檢查在每 個(gè)閃存存儲(chǔ)器中是否發(fā)生了編程失敗。每當(dāng)各個(gè)閃存存儲(chǔ)器接收了編程數(shù)據(jù)(例如,至少 一頁(yè)單元的數(shù)據(jù))時(shí),都可以執(zhí)行由ATA接口或超DMA協(xié)議支持的CRC錯(cuò)誤校驗(yàn)操作。因 此,當(dāng)CRC錯(cuò)誤代碼用于處理編程失敗時(shí),每當(dāng)在每頁(yè)中完成編程時(shí),都可以執(zhí)行編程失敗 校驗(yàn)和重新編程操作。例如,如圖4所示,當(dāng)由SkB組成一頁(yè)并且執(zhí)行最多4路交織編程、同時(shí)關(guān)于第一 頁(yè)數(shù)據(jù)DataO的編程P21完成時(shí),可以檢查編程失敗。也就是說(shuō),當(dāng)?shù)谝豁?yè)數(shù)據(jù)DataO的編 程完成時(shí)可以檢查編程失敗,而無(wú)需一直等到相應(yīng)于4頁(yè)的交織編程操作P21、P22、P23和 P24被全部執(zhí)行。當(dāng)在第一頁(yè)數(shù)據(jù)DataO的編程間隔P21處檢測(cè)到編程失敗時(shí),F(xiàn)TL 50可以向主機(jī) 900報(bào)告CRC錯(cuò)誤代碼,并且固態(tài)盤(pán)設(shè)備500可以再次從主機(jī)900接收相應(yīng)于第一頁(yè)數(shù)據(jù) DataO的命令和數(shù)據(jù)。當(dāng)交織編程對(duì)于編程失敗的數(shù)據(jù)前進(jìn)時(shí),可以由固態(tài)盤(pán)設(shè)備500再次 連續(xù)接收將從編程失敗的數(shù)據(jù)開(kāi)始交織的多頁(yè)數(shù)據(jù)。在該情況下,固態(tài)盤(pán)設(shè)備500可以使用從主機(jī)900再次接收的命令和數(shù)據(jù),依次重新執(zhí)行(以P21、P22、P23和P24的順序)多 個(gè)數(shù)據(jù)DataO、DataU Data2和Data3的交織編程。因此,不需要組成或考慮另外的錯(cuò)誤代 碼和另外的編程失敗處理算法來(lái)重新對(duì)編程失敗的數(shù)據(jù)進(jìn)行編程。在該情況下,響應(yīng)于CRC 錯(cuò)誤代碼,可以從主機(jī)900接收重新執(zhí)行編程所需要的數(shù)據(jù)DataCKDatal、Data2和Data3。 結(jié)果是,無(wú)需將先前編程的數(shù)據(jù)存儲(chǔ)在固態(tài)盤(pán)設(shè)備500的緩存存儲(chǔ)器170中。圖4中示出的符號(hào)ΔΤ3表示從在第一頁(yè)數(shù)據(jù)DataO中檢測(cè)到編程失敗時(shí)到重新 執(zhí)行第一頁(yè)數(shù)據(jù)DataO的編程時(shí)的時(shí)間延遲。根據(jù)圖4中圖示的本發(fā)明構(gòu)思的實(shí)施例的編 程失敗處理方法,從檢測(cè)到編程失敗時(shí)到重新執(zhí)行編程時(shí)的延遲時(shí)間△ T3相較于圖3的延遲時(shí)間較短。而且,根據(jù)圖4中圖示的本發(fā)明構(gòu)思的實(shí)施例的編程失敗處理方法,在多個(gè)閃 存存儲(chǔ)器中連續(xù)執(zhí)行編程的交織編程的情況下,在發(fā)生編程失敗之后,可以重新執(zhí)行交織 編程。結(jié)果是,總體編程時(shí)間會(huì)變短。另外,因?yàn)椴恍枰~外的數(shù)據(jù)存儲(chǔ)容量來(lái)存儲(chǔ)先前編 程的數(shù)據(jù),所以可以縮減固態(tài)盤(pán)設(shè)備500的大小和制造成本。圖5是圖示根據(jù)本發(fā)明構(gòu)思的實(shí)施例的編程失敗處理方法的流程圖。參考圖5,固 態(tài)盤(pán)設(shè)備500可以主要從主機(jī)900接收編程命令和數(shù)據(jù)以執(zhí)行編程(S1000)。在塊S1000 處,從主機(jī)900接收的數(shù)據(jù)可以包括編程數(shù)據(jù)和該編程數(shù)據(jù)的邏輯塊地址LBA。可以通過(guò)在控制器100中提供的FTL 50,將從主機(jī)900接收的LBA轉(zhuǎn)換為物理塊地址PBA??梢酝ㄟ^(guò) 緩存存儲(chǔ)器170和閃存接口 180,向相應(yīng)的閃存存儲(chǔ)器310至330提供轉(zhuǎn)換的PBA。響應(yīng)于 從主機(jī)900提供的編程命令和數(shù)據(jù)(例如,編程數(shù)據(jù)和該編程數(shù)據(jù)的地址),每個(gè)閃存存儲(chǔ) 器執(zhí)行編程(SllOO)。這時(shí),所執(zhí)行的編程可以是非交織模式或交織模式。響應(yīng)于從主機(jī)900提供的命令和數(shù)據(jù)(例如,編程數(shù)據(jù)和該編程數(shù)據(jù)的地址),在 閃存存儲(chǔ)器310至330中提供控制邏輯(未示出)來(lái)控制閃存存儲(chǔ)器310至330的諸如編 程、擦除和讀操作之類(lèi)的全部操作。例如,在閃存存儲(chǔ)器310至330中提供的控制邏輯可以 在編程操作期間控制施加到所選擇字線的編程電壓的電平和時(shí)序(timing)。可以通過(guò)遞增 階躍脈沖編程(Incremental Step Pulse Programming,ISPP)方案生成施加到所選擇的字 線的編程電壓Vpgm。當(dāng)編程循環(huán)重復(fù)時(shí),可以通過(guò)規(guī)定的電壓增量Δν來(lái)逐漸增加編程電 壓Vpgm的電平。基于每頁(yè)的編程級(jí),可以通過(guò)外部設(shè)備(例如,固態(tài)盤(pán)設(shè)備的控制器、存儲(chǔ) 器控制器等)的控制或在閃存存儲(chǔ)器內(nèi)提供的控制邏輯來(lái)改變和修改編程循環(huán)的次數(shù)、編 程電壓Vpgm的電平和編程電壓Vpmg的時(shí)序。閃存存儲(chǔ)器310至330的控制邏輯(未示出)可以控制編程操作并且可以?xún)?nèi)部地 檢測(cè)編程失敗。例如,當(dāng)編程失敗發(fā)生至少規(guī)定的次數(shù)時(shí)或者當(dāng)發(fā)生不可恢復(fù)的錯(cuò)誤時(shí),控 制邏輯可以向FTL 50報(bào)告編程失敗。響應(yīng)于由閃存存儲(chǔ)器310至330的控制邏輯報(bào)告的 結(jié)果,F(xiàn)TL 50可以確定在閃存存儲(chǔ)器310至330中是否發(fā)生了編程失敗(S1200)。在塊S1200處,如果確定沒(méi)有發(fā)生編程失敗,則可以正常完成編程操作(S1300)。 然而,在塊S1200處,如果確定發(fā)生編程失敗,則FTL 50可以向主機(jī)900報(bào)告CRC錯(cuò)誤代碼 (S1400)。在該情況下,即使沒(méi)有發(fā)生CRC錯(cuò)誤,只要發(fā)生編程失敗,F(xiàn)TL 50就可以向主機(jī) 900報(bào)告CRC錯(cuò)誤代碼。在報(bào)告CRC錯(cuò)誤代碼之后,過(guò)程返回到塊S1000,并且在接口或數(shù) 據(jù)傳輸協(xié)議中初始定義的CRC錯(cuò)誤處理流程下,主機(jī)900向固態(tài)盤(pán)設(shè)備500重新發(fā)送與CRC 錯(cuò)誤代碼相應(yīng)的命令和數(shù)據(jù)。在塊S1000處,固態(tài)盤(pán)設(shè)備500可以從主機(jī)重新接收命令和 數(shù)據(jù),其中該數(shù)據(jù)觸發(fā)了對(duì)在先前編程操作中編程失敗的檢測(cè),并且在塊SllOO處,對(duì)于重新接收的數(shù)據(jù)重新執(zhí)行編程。如上所述,根據(jù)本發(fā)明構(gòu)思的實(shí)施例的編程失敗處理方法,當(dāng)在閃存存儲(chǔ)器310 至330中發(fā)生編程失敗時(shí),可以向主機(jī)900報(bào)告CRC錯(cuò)誤代碼。所以,甚至當(dāng)發(fā)生編程失敗 時(shí),主機(jī)900也可以向固態(tài)盤(pán)設(shè)備500重新發(fā)送相應(yīng)的命令和數(shù)據(jù),例如當(dāng)CRC錯(cuò)誤發(fā)生 時(shí)。圖6是圖示根據(jù)本發(fā)明構(gòu)思的實(shí)施例的計(jì)算系統(tǒng)2000的視圖。參考圖6,計(jì)算系統(tǒng)2000可以包括控制器100、微處理器200、數(shù)據(jù)存儲(chǔ)單元300、 諸如基帶芯片組的調(diào)制解調(diào)器600和用戶(hù)接口 800,它們分別與總線400電連接。圖6中圖 示的控制器100和數(shù)據(jù)存儲(chǔ)單元300可以組成固態(tài)盤(pán)設(shè)備(SSD)和存儲(chǔ)器卡和/或存儲(chǔ)器 卡系統(tǒng)??刂破?00和數(shù)據(jù)存儲(chǔ)單元300的細(xì)節(jié)配置可以基本上與上述相同。因此,相同 的參考標(biāo)記可以代表相同的部件,并且將省略其描述。
將由微處理器200處理的N比特?cái)?shù)據(jù)(N是等于或大于1的整數(shù))可以通過(guò)控制 器100存儲(chǔ)在數(shù)據(jù)存儲(chǔ)單元300中??梢杂芍С侄嗤ǖ篮投囗?yè)的非易失性存儲(chǔ)器組成數(shù)據(jù) 存儲(chǔ)單元300,并且作為優(yōu)選的例子,通過(guò)非易失性存儲(chǔ)器中的閃存存儲(chǔ)器來(lái)組成。然而,可 以將除了閃存存儲(chǔ)器之外的非易失性存儲(chǔ)器應(yīng)用到本發(fā)明構(gòu)思的實(shí)施例。控制器100可以控制數(shù)據(jù)存儲(chǔ)單元300的讀/寫(xiě)/擦除操作??刂破?00可以提 供有FTL 50。FTL 50可以管理數(shù)據(jù)存儲(chǔ)單元300的映射信息,使得數(shù)據(jù)存儲(chǔ)單元300用作 自由執(zhí)行讀/編程操作的諸如硬盤(pán)驅(qū)動(dòng)器或SRAM之類(lèi)的存儲(chǔ)介質(zhì)??梢砸栽獢?shù)據(jù)的形式 來(lái)存儲(chǔ)由FTL 50執(zhí)行的映射結(jié)果。而且,每當(dāng)在數(shù)據(jù)存儲(chǔ)單元300中發(fā)生編程失敗時(shí),F(xiàn)TL 50都可以向主機(jī)或微處 理器200人工報(bào)告在接口或數(shù)據(jù)傳輸協(xié)議中初始定義的錯(cuò)誤代碼,以便用在接口或數(shù)據(jù)傳 輸協(xié)議中初始定義的錯(cuò)誤代碼之一代替用于閃存存儲(chǔ)器的特定錯(cuò)誤代碼。主機(jī)和微處理器 200可以向固態(tài)盤(pán)設(shè)備500重新發(fā)送相應(yīng)的命令和編程失敗的數(shù)據(jù)??梢员话l(fā)送到主機(jī)和 微處理器200以便重新發(fā)送編程失敗的數(shù)據(jù)的錯(cuò)誤代碼可以是在固態(tài)盤(pán)設(shè)備500的接口中 或者在總線的數(shù)據(jù)傳輸協(xié)議中提前初始定義的多個(gè)錯(cuò)誤代碼之一。當(dāng)計(jì)算系統(tǒng)2000是移動(dòng)設(shè)備時(shí),可以另外提供電池700以提供計(jì)算系統(tǒng)2000的 操作電壓。盡管未在圖中示出,計(jì)算系統(tǒng)還可以包括應(yīng)用芯片組、相機(jī)圖像處理器(Camera Image Processor,CIS)、移動(dòng)DRAM等。使用不同類(lèi)型的非易失性存儲(chǔ)器的數(shù)據(jù)存儲(chǔ)單元可 以被實(shí)現(xiàn)在筆記本計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)和服務(wù)器中。在這些市場(chǎng)條件下,根據(jù)本發(fā)明構(gòu)思的 實(shí)施例,可以改善現(xiàn)有的性能限制以及擴(kuò)展數(shù)據(jù)存儲(chǔ)單元的基數(shù)(base)。根據(jù)本發(fā)明構(gòu)思的上述實(shí)施例,即便沒(méi)有另外的存儲(chǔ)器,對(duì)于編程失敗的數(shù)據(jù)仍 可以執(zhí)行編程操作。所以,可以增加固態(tài)盤(pán)設(shè)備的編程失敗處理性能,并且可以減少尺寸和 制造成本。在說(shuō)明書(shū)中,參考附圖描述了優(yōu)選實(shí)施例。在此使用的術(shù)語(yǔ)是為了描述本發(fā)明構(gòu) 思的實(shí)施例的目的,而不意在限制意思或者限制在所附權(quán)利要求中描述的本發(fā)明構(gòu)思的范 圍。因此,上面公開(kāi)的主題應(yīng)被視作示意性的而非限制性的,并且所附權(quán)利要求試圖覆蓋所 有這樣的修改、增強(qiáng)和落入真實(shí)精神的其他實(shí)施例,并且由下面的權(quán)利要求及其等價(jià)物的 最寬允許解釋來(lái)確定本發(fā)明構(gòu)思的范圍,而不由前述的詳細(xì)描述來(lái)局限或限制。
權(quán)利要求
一種固態(tài)盤(pán)設(shè)備,包括至少一個(gè)非易失性存儲(chǔ)器;以及控制器,用于在所述非易失性存儲(chǔ)器中發(fā)生編程失敗時(shí)向主機(jī)報(bào)告錯(cuò)誤代碼,以請(qǐng)求先前接收的數(shù)據(jù)和相應(yīng)于該數(shù)據(jù)的命令,其中所述錯(cuò)誤代碼是在由所述控制器支持的接口或由所述非易失性存儲(chǔ)器支持的數(shù)據(jù)傳輸協(xié)議中定義的多個(gè)錯(cuò)誤代碼之一。
2.根據(jù)權(quán)利要求1所述的固態(tài)盤(pán)設(shè)備,其中,所述錯(cuò)誤代碼是在所述接口或所述數(shù)據(jù) 傳輸協(xié)議中定義用于處理除了所述編程失敗之外的錯(cuò)誤。
3.根據(jù)權(quán)利要求1所述的固態(tài)盤(pán)設(shè)備,還包括閃存?zhèn)鬏攲樱糜诒O(jiān)控在所述非易失性 存儲(chǔ)器中是否發(fā)生了所述編程失敗,并且當(dāng)發(fā)生所述編程失敗時(shí)向所述主機(jī)報(bào)告所述錯(cuò)誤 代碼。
4.根據(jù)權(quán)利要求1所述的固態(tài)盤(pán)設(shè)備,其中,所述錯(cuò)誤代碼包括循環(huán)冗余校驗(yàn)CRC錯(cuò)誤 代碼。
5.根據(jù)權(quán)利要求1所述的固態(tài)盤(pán)設(shè)備,其中,所述數(shù)據(jù)傳輸協(xié)議包括超直接存儲(chǔ)器存 取DMA協(xié)議。
6.根據(jù)權(quán)利要求1所述的固態(tài)盤(pán)設(shè)備,其中,所述接口包括AT嵌入式接口ATA接口。
7.根據(jù)權(quán)利要求1所述的固態(tài)盤(pán)設(shè)備,其中,每當(dāng)在所述非易失性存儲(chǔ)器中檢測(cè)到所 述編程失敗時(shí),所述控制器都向所述主機(jī)報(bào)告所述錯(cuò)誤代碼,而無(wú)需將所述先前接收的數(shù) 據(jù)和命令存儲(chǔ)到額外的存儲(chǔ)器。
8.一種固態(tài)盤(pán)設(shè)備的編程失敗處理方法,所述方法包括響應(yīng)于從主機(jī)接收的編程命令和數(shù)據(jù),對(duì)至少一個(gè)非易失性存儲(chǔ)器編程;當(dāng)在所述非易失性存儲(chǔ)器中發(fā)生編程失敗時(shí),向所述主機(jī)報(bào)告錯(cuò)誤代碼來(lái)請(qǐng)求所述數(shù) 據(jù)和所述編程命令,所述數(shù)據(jù)和所述編程命令是先前接收的;從所述主機(jī)重新接收與報(bào)告的錯(cuò)誤代碼相應(yīng)的數(shù)據(jù)和命令;以及將從所述主機(jī)重新接收的數(shù)據(jù)重新編程到所述非易失性存儲(chǔ)器。
9.根據(jù)權(quán)利要求8所述的方法,其中,所述錯(cuò)誤代碼是在由所述固態(tài)盤(pán)設(shè)備支持的接 口或數(shù)據(jù)傳輸協(xié)議中定義的用以處理除了所述編程失敗之外的錯(cuò)誤的多個(gè)錯(cuò)誤代碼之一。
10.根據(jù)權(quán)利要求8所述的方法,其中,所述錯(cuò)誤代碼包括循環(huán)冗余校驗(yàn)CRC錯(cuò)誤代碼。
11.根據(jù)權(quán)利要求8所述的方法,其中,所述數(shù)據(jù)傳輸協(xié)議包括超直接存儲(chǔ)器存取DMA 協(xié)議。
12.根據(jù)權(quán)利要求8所述的方法,其中,所述接口包括AT嵌入式接口ATA接口。
13.根據(jù)權(quán)利要求8所述的方法,其中,所述編程和所述重新編程執(zhí)行對(duì)電連接到多個(gè) 通道的多個(gè)非易失性存儲(chǔ)器進(jìn)行連續(xù)編程的交織編程操作。
14.根據(jù)權(quán)利要求13所述的方法,其中,所述報(bào)告錯(cuò)誤代碼包括當(dāng)在多個(gè)閃存存儲(chǔ)器 的任何一個(gè)中檢測(cè)到所述編程失敗時(shí),向所述主機(jī)報(bào)告所述錯(cuò)誤代碼。
15.根據(jù)權(quán)利要求8所述的方法,其中,執(zhí)行所述向所述主機(jī)報(bào)告錯(cuò)誤代碼而無(wú)需將所 述先前接收的數(shù)據(jù)和編程命令存儲(chǔ)到額外的存儲(chǔ)器。
16.一種計(jì)算系統(tǒng),包括主機(jī);以及固態(tài)盤(pán)設(shè)備,用于通過(guò)所述主機(jī)的請(qǐng)求來(lái)寫(xiě)或讀出數(shù)據(jù), 其中所述固態(tài)盤(pán)設(shè)備包括 至少一個(gè)非易失性存儲(chǔ)器;以及控制器,用于在所述非易失性存儲(chǔ)器中發(fā)生編程失敗時(shí)向所述主機(jī)報(bào)告錯(cuò)誤代碼,以 請(qǐng)求先前接收的數(shù)據(jù)和相應(yīng)于所述數(shù)據(jù)的命令,所述錯(cuò)誤代碼是在由所述控制器支持的接口或由所述非易失性存儲(chǔ)器支持的數(shù)據(jù)傳 輸協(xié)議中定義的多個(gè)錯(cuò)誤代碼之一。
17.根據(jù)權(quán)利要求16所述的計(jì)算系統(tǒng),其中,每當(dāng)在所述非易失性存儲(chǔ)器中發(fā)生所述 編程失敗時(shí),所述控制器都向所述主機(jī)報(bào)告所述錯(cuò)誤代碼,而無(wú)需將所述先前接收的數(shù)據(jù) 和命令存儲(chǔ)到額外的存儲(chǔ)器。
全文摘要
一種固態(tài)盤(pán)設(shè)備包括至少一個(gè)非易失性存儲(chǔ)器;以及控制器,用于在非易失性存儲(chǔ)器中發(fā)生編程失敗時(shí)向主機(jī)報(bào)告錯(cuò)誤代碼,以請(qǐng)求先前接收的數(shù)據(jù)和相應(yīng)于該數(shù)據(jù)的命令。錯(cuò)誤代碼是在由控制器支持的接口或由非易失性存儲(chǔ)器支持的數(shù)據(jù)傳輸協(xié)議中定義的多個(gè)錯(cuò)誤代碼之一。
文檔編號(hào)G11C7/10GK101800071SQ20101010624
公開(kāi)日2010年8月11日 申請(qǐng)日期2010年1月29日 優(yōu)先權(quán)日2009年2月10日
發(fā)明者朱原撤, 李斗基 申請(qǐng)人:三星電子株式會(huì)社