專利名稱:數(shù)據(jù)存儲(chǔ)裝置以及數(shù)據(jù)存儲(chǔ)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對(duì)從計(jì)算機(jī)等主機(jī)裝置傳送的數(shù)據(jù)進(jìn)行存儲(chǔ)的技術(shù)。
背景技術(shù):
近年來(lái),提出了將多個(gè)硬盤驅(qū)動(dòng)器或閃存等存儲(chǔ)設(shè)備組合起來(lái)記錄數(shù) 據(jù),由此提高所記錄的數(shù)據(jù)的可靠性的各種技術(shù)(參考日本專利文獻(xiàn)特開
2000-207137號(hào)公報(bào))。例如,在被稱為鏡像的技術(shù)中,向物理或邏輯分 離的兩個(gè)存儲(chǔ)區(qū)域中寫入相同內(nèi)容的數(shù)據(jù)。由此,即使一個(gè)存儲(chǔ)區(qū)域發(fā)生 了故障,也能夠通過(guò)另一個(gè)存儲(chǔ)區(qū)域使系統(tǒng)繼續(xù)工作。
但是,在鏡像技術(shù)中,由于向兩個(gè)存儲(chǔ)區(qū)域?qū)懭胂嗤瑑?nèi)容的數(shù)據(jù),因 此存在實(shí)際上存儲(chǔ)容量減少一半的問(wèn)題。
發(fā)明內(nèi)容
考慮到上述的問(wèn)題,本發(fā)明要解決的問(wèn)題是在使用多個(gè)存儲(chǔ)區(qū)域存儲(chǔ) 數(shù)據(jù)時(shí)使得在提高數(shù)據(jù)的可靠性的同時(shí)能夠有效地利用原來(lái)的存儲(chǔ)容量。
根據(jù)上述問(wèn)題,本發(fā)明一個(gè)方面的數(shù)據(jù)存儲(chǔ)裝置是一種存儲(chǔ)從主機(jī)裝 置傳送的數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)裝置,其包括
第一存儲(chǔ)部,具有預(yù)定的存儲(chǔ)區(qū)域;
第二存儲(chǔ)部,具有預(yù)定的存儲(chǔ)區(qū)域;
監(jiān)視單元,至少監(jiān)視所述第一存儲(chǔ)部的使用區(qū)域;以及
寫入控制單元,當(dāng)從所述主機(jī)裝置傳送了所述數(shù)據(jù)時(shí),如果使用所述 監(jiān)視單元判斷出所述第一存儲(chǔ)部的存儲(chǔ)區(qū)域有剩余,則將該數(shù)據(jù)寫入所述 第一存儲(chǔ)部,并將用于校正該數(shù)據(jù)的校正用數(shù)據(jù)寫入所述第二存儲(chǔ)部,如 果判斷出所述第一存儲(chǔ)部的存儲(chǔ)區(qū)域沒有剩余,則擦除所述第二存儲(chǔ)部中 已存儲(chǔ)的所述校正用數(shù)據(jù),并將該數(shù)據(jù)寫入所述第二存儲(chǔ)部。
5根據(jù)具有上述結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)裝置,如果第一存儲(chǔ)部的存儲(chǔ)區(qū)域有剩 余,則將從主機(jī)裝置傳送的數(shù)據(jù)寫入第一存儲(chǔ)部,并將用于校正該數(shù)據(jù)的 數(shù)據(jù)寫入第二存儲(chǔ)部。因此,假使存儲(chǔ)在第一存儲(chǔ)部中的數(shù)據(jù)以某些原因 發(fā)生損壞,也能夠通過(guò)使用寫入第二存儲(chǔ)部中的校正用數(shù)據(jù)來(lái)校正該損壞 的數(shù)據(jù)。
并且,在具有上述結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)裝置中,如果第一存儲(chǔ)部的存儲(chǔ)區(qū) 域沒有剩余,則擦除第二存儲(chǔ)部中已寫入的校正用數(shù)據(jù),并向該第二存儲(chǔ) 部也寫入從主機(jī)裝置傳送的數(shù)據(jù)。因此,能夠有效地利用第一存儲(chǔ)部和第 二存儲(chǔ)部的存儲(chǔ)容量。即,根據(jù)上述結(jié)構(gòu),可通過(guò)平衡數(shù)據(jù)的可靠性與存 儲(chǔ)容量的有效利用來(lái)提供功能性的數(shù)據(jù)存儲(chǔ)裝置。另外,第一存儲(chǔ)部與第 二存儲(chǔ)部既可以是物理上分離的存儲(chǔ)設(shè)備,也可以是將一個(gè)存儲(chǔ)設(shè)備中的 存儲(chǔ)區(qū)域在邏輯上進(jìn)行分離而形成的存儲(chǔ)部。
在具有上述結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)裝置中,所述寫入控制可以包括單元編碼 單元,該編碼單元基于從所述主機(jī)裝置傳送的數(shù)據(jù)來(lái)生成糾錯(cuò)碼,作為所 述校正用數(shù)據(jù)。
根據(jù)上述結(jié)構(gòu),可使用存儲(chǔ)在第二存儲(chǔ)部中的糾錯(cuò)碼來(lái)容易地對(duì)存儲(chǔ) 在第一存儲(chǔ)部中的數(shù)據(jù)進(jìn)行糾正。糾錯(cuò)碼例如可使用漢明編碼、循環(huán)編
碼、里德-索洛蒙(Reed-Solomon)編碼等各種編碼技術(shù)來(lái)生成。糾錯(cuò)碼一 般被稱為ECC數(shù)據(jù)。
在具有上述結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)裝置中,所述編碼單元可以其比特?cái)?shù)等于 或少于從所述主機(jī)裝置傳送的數(shù)據(jù)的比特?cái)?shù)的糾錯(cuò)碼。
在這種結(jié)構(gòu)中,如果生成與從主機(jī)裝置傳送的數(shù)據(jù)相同比特?cái)?shù)的糾錯(cuò) 碼,則從主機(jī)傳送的數(shù)據(jù)與由該數(shù)據(jù)生成的校正用數(shù)據(jù)具有相同的數(shù)據(jù)長(zhǎng) 度,因此可將它們存儲(chǔ)在第一存儲(chǔ)部和第二存儲(chǔ)部的相同地址中,從而能 夠容易地進(jìn)行地址管理。另外,如果生成其比特?cái)?shù)少于從主機(jī)傳送的數(shù)據(jù) 的比特?cái)?shù)的糾錯(cuò)碼,則能夠削減向第二存儲(chǔ)部存儲(chǔ)的校正用數(shù)據(jù)的容量。
在具有上述結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)裝置中,所述寫入控制單元可以具有生成 與從所述主機(jī)裝置傳送的數(shù)據(jù)相同的數(shù)據(jù)或者將構(gòu)成從所述主機(jī)裝置傳送 的數(shù)據(jù)的每個(gè)比特反轉(zhuǎn)后的數(shù)據(jù)來(lái)作為所述校正用數(shù)據(jù)的單元。根據(jù)這樣的結(jié)構(gòu),由于生成與從主機(jī)裝置傳送的數(shù)據(jù)相同的數(shù)據(jù)或者 將構(gòu)成從主機(jī)裝置傳送的數(shù)據(jù)的每個(gè)比特反轉(zhuǎn)后的數(shù)據(jù)來(lái)作為校正用數(shù) 據(jù),因此校正用數(shù)據(jù)的生成變得容易,可減輕處理負(fù)擔(dān)。另外,當(dāng)在讀出 數(shù)據(jù)時(shí)進(jìn)行檢錯(cuò)的時(shí)候也由于單純地對(duì)兩數(shù)據(jù)進(jìn)行比較即可,因此可減輕 處理的負(fù)擔(dān),從而能夠防止處理速度下降。
在具有上述結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)裝置中,所述寫入控制單元可以在將從所 述主機(jī)裝置傳送的數(shù)據(jù)寫入所述第二存儲(chǔ)部時(shí),根據(jù)將所述第一存儲(chǔ)部的 物理最終地址和所述第二存儲(chǔ)部的物理最終地址連接起來(lái)的虛擬地址空間 來(lái)向所述第二存儲(chǔ)部寫入數(shù)據(jù)。
根據(jù)這樣的結(jié)構(gòu),在向第二存儲(chǔ)部寫入通常的數(shù)據(jù)的動(dòng)作狀態(tài)下,可 以不區(qū)分第一存儲(chǔ)部和第二存儲(chǔ)部的存儲(chǔ)區(qū)域而無(wú)縫地指定地址。
在具有上述結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)裝置中,還可以包括讀取控制單元,該讀 取控制單元在從所述主機(jī)裝置接收到數(shù)據(jù)的讀出請(qǐng)求時(shí),如果作為該讀出 請(qǐng)求的對(duì)象的數(shù)據(jù)的存儲(chǔ)目的地是所述第一存儲(chǔ)部,并且基于該數(shù)據(jù)生成 的校正用數(shù)據(jù)存在于所述第二存儲(chǔ)部中,則從所述第一存儲(chǔ)部讀取該數(shù) 據(jù),從所述第二存儲(chǔ)部讀取該校正用數(shù)據(jù),基于該校正用數(shù)據(jù)來(lái)校正該數(shù) 據(jù),并向所述主機(jī)裝置傳送該數(shù)據(jù)。
根據(jù)這樣的結(jié)構(gòu),能夠基于存儲(chǔ)在第一存儲(chǔ)部的數(shù)據(jù)和存儲(chǔ)在第二存 儲(chǔ)部的校正用數(shù)據(jù)對(duì)作為從主機(jī)裝置給出讀取請(qǐng)求的對(duì)象的數(shù)據(jù)進(jìn)行檢錯(cuò) 和糾錯(cuò)。因此,能夠提高數(shù)據(jù)的可靠性。
在具有上述結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)裝置中,所述讀入控制單元可以具有如下 單元所述單元在作為所述讀出請(qǐng)求的對(duì)象的數(shù)據(jù)的存儲(chǔ)目的地是所述第 一存儲(chǔ)部、并且基于該數(shù)據(jù)生成的校正用數(shù)據(jù)不存在于所述第二存儲(chǔ)部的 情況下,從所述第一存儲(chǔ)部讀取該數(shù)據(jù),并將該數(shù)據(jù)直接傳送給所述主機(jī) 裝置。
根據(jù)這樣的結(jié)構(gòu),即使在第二存儲(chǔ)部中存儲(chǔ)的校正用數(shù)據(jù)己被完全擦 除的情況下,也能夠從第一存儲(chǔ)部適當(dāng)?shù)刈x出數(shù)據(jù)并將該數(shù)據(jù)傳送給主機(jī) 裝置。
在具有上述結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)裝置中,所述讀入控制單元可以具有如下
7單元,該單元在作為所述讀出請(qǐng)求的對(duì)象的數(shù)據(jù)的存儲(chǔ)目的地是所述第二 存儲(chǔ)部并且是該第二存儲(chǔ)部的記錄有通常的數(shù)據(jù)的區(qū)域的情況下,從該第 二存儲(chǔ)部讀取該數(shù)據(jù),并將該數(shù)據(jù)直接傳送給所述主機(jī)裝置。
根據(jù)這樣的結(jié)構(gòu),在向第二存儲(chǔ)部存儲(chǔ)通常的數(shù)據(jù)的動(dòng)作狀態(tài)下,能 夠從第二存儲(chǔ)部適當(dāng)?shù)刈x出數(shù)據(jù)并將該數(shù)據(jù)傳送給主機(jī)裝置。
在具有上述結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)裝置中,所述讀入控制單元可以具有如下 單元,該單元在作為所述讀出請(qǐng)求的對(duì)象的數(shù)據(jù)的存儲(chǔ)目的地是所述第二 存儲(chǔ)部的存儲(chǔ)有所述校正用數(shù)據(jù)的區(qū)域的情況下,不從所述第二存儲(chǔ)部進(jìn) 行數(shù)據(jù)的讀取,而是將預(yù)定的數(shù)據(jù)作為偽數(shù)據(jù)傳送給所述主機(jī)裝置。
在向第二存儲(chǔ)部寫入通常的數(shù)據(jù)的動(dòng)作狀態(tài)下,第二存儲(chǔ)部中存儲(chǔ)有 校正用數(shù)據(jù)的區(qū)域本來(lái)是被主機(jī)裝置識(shí)別為空區(qū)域的區(qū)域。因此,通過(guò)上 述結(jié)構(gòu),當(dāng)從這樣的區(qū)域讀取數(shù)據(jù)時(shí),即使將預(yù)定的數(shù)據(jù)作為偽數(shù)據(jù)傳送 給主機(jī)裝置,主機(jī)裝置也應(yīng)當(dāng)識(shí)別出該區(qū)域是無(wú)效數(shù)據(jù)。偽數(shù)據(jù)例如可以
是以16進(jìn)制表示的"00" 、 "FF" 、 "55" 、 "AA"等數(shù)據(jù)。
在具有上述結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)裝置中,所述寫入控制單元可以在將從所 述主機(jī)傳送的數(shù)據(jù)寫入到所述第二存儲(chǔ)部的情況下,存儲(chǔ)表示寫入該數(shù)據(jù) 的最大地址的地址指針,所述讀入控制單元可以基于所述地址指針來(lái)判斷 與作為所述讀出請(qǐng)求的對(duì)象的數(shù)據(jù)相對(duì)應(yīng)的校正用數(shù)據(jù)是否被存儲(chǔ)在所述 第二存儲(chǔ)部、或者作為所述讀出請(qǐng)求的對(duì)象的數(shù)據(jù)的存儲(chǔ)目的地是否為所 述第二存儲(chǔ)部的存儲(chǔ)有所述校正用數(shù)據(jù)的區(qū)域。
根據(jù)這樣的結(jié)構(gòu),能夠通過(guò)上述的地址指針明確地辨別第二存儲(chǔ)部中 的存儲(chǔ)有通常數(shù)據(jù)的區(qū)域以及存儲(chǔ)有校正用數(shù)據(jù)的區(qū)域。因此,如果使用 該地址指針,則能夠容易地判斷與作為所述讀出請(qǐng)求的對(duì)象的數(shù)據(jù)相對(duì)應(yīng) 的校正用數(shù)據(jù)是否被存儲(chǔ)在第二存儲(chǔ)部、或者作為所述讀出請(qǐng)求的對(duì)象的 數(shù)據(jù)的存儲(chǔ)目的地是否為第二存儲(chǔ)部中存儲(chǔ)有校正用數(shù)據(jù)的區(qū)域。
另外,在具有上述結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)裝置中,所述寫入控制單元可以在 將從所述主機(jī)傳送的數(shù)據(jù)寫入到所述第二存儲(chǔ)部的情況下,存儲(chǔ)表示對(duì)該 第二存儲(chǔ)部的各個(gè)地址是否寫入了數(shù)據(jù)的預(yù)定的表,所述讀入控制單元可 以基于所述表來(lái)判斷與作為所述讀出請(qǐng)求的對(duì)象的數(shù)據(jù)相對(duì)應(yīng)的校正用數(shù)據(jù)是否被存儲(chǔ)在所述第二存儲(chǔ)部、或者作為所述讀出請(qǐng)求的對(duì)象的數(shù)據(jù)的 存儲(chǔ)目的地是否為所述第二存儲(chǔ)部的存儲(chǔ)有所述校正用數(shù)據(jù)的區(qū)域。
根據(jù)上述結(jié)構(gòu),通過(guò)使用表示對(duì)第二存儲(chǔ)部的各個(gè)地址是否寫入了數(shù) 據(jù)的預(yù)定的表,也能夠容易地進(jìn)行上述的各種判斷。
在具有上述結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)裝置中,可以包括如下單元,該單元不管 所述第一存儲(chǔ)部的存儲(chǔ)區(qū)域是否有剩余,都響應(yīng)于預(yù)定的設(shè)定操作而禁止 所述寫入控制單元向所述第二存儲(chǔ)部寫入通常的數(shù)據(jù)。
根據(jù)這樣的結(jié)構(gòu),由于能夠任意地限制對(duì)第二存儲(chǔ)部寫入通常的數(shù) 據(jù),因此能夠提高用戶的便利性。這樣的設(shè)定操作可通過(guò)設(shè)置在數(shù)據(jù)存儲(chǔ) 裝置中的物理開關(guān)、或者在與數(shù)據(jù)存儲(chǔ)裝置連接的主機(jī)上運(yùn)行的應(yīng)用程序 來(lái)進(jìn)行。
在具有上述結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)裝置中,所述第一存儲(chǔ)部和所述第二存儲(chǔ) 部可以具有相同的存儲(chǔ)容量。
根據(jù)這樣的結(jié)構(gòu),能夠?qū)⒌谝淮鎯?chǔ)部與第二存儲(chǔ)部的地址一對(duì)一地對(duì) 應(yīng)起來(lái)存儲(chǔ)數(shù)據(jù)和校正用數(shù)據(jù)。由此,能夠容易地進(jìn)行地址管理。另外, 在這樣的結(jié)構(gòu)中,第一以及第二存儲(chǔ)部可采用相同類型的設(shè)備,因此可減 少制造成本。另外,第一存儲(chǔ)部與第二存儲(chǔ)部不一定必須具有相同的容 量,也可以使第二存儲(chǔ)部具有比第一存儲(chǔ)部大的存儲(chǔ)容量。另外,如果校 正用數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度短于從主機(jī)傳送的數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度,則可使第二存儲(chǔ) 部的容量少于第一存儲(chǔ)部的容量。
在具有上述結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)裝置中,所述數(shù)據(jù)可以是從所述主機(jī)裝置
經(jīng)由USB接口傳送的。
如果是這樣的結(jié)構(gòu),則只將本發(fā)明的數(shù)據(jù)存儲(chǔ)裝置連接到計(jì)算機(jī)等主 機(jī)裝置所具有的USB端口上,就能容易地利用本發(fā)明的數(shù)據(jù)存儲(chǔ)裝置。因 此,能夠提高用戶的便利性。
在具有上述結(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)裝置中,所述第一存儲(chǔ)部以及所述第二存 儲(chǔ)部是非易失性半導(dǎo)體存儲(chǔ)器。非易失性半導(dǎo)體存儲(chǔ)器例如可使用NAND 型或NOR型的各種閃存、EEPROM、自備電池的DRAM等。
根據(jù)這樣的結(jié)構(gòu),能夠提供攜帶性優(yōu)異的小型數(shù)據(jù)存儲(chǔ)裝置。另外,
9第一以及第二存儲(chǔ)部除半導(dǎo)體存儲(chǔ)器之外,例如還可以采用硬盤驅(qū)動(dòng)器或 可改寫的光盤等。另外,第一存儲(chǔ)部與第二存儲(chǔ)部也可以采用完全不同類 型的設(shè)備。
另外,本發(fā)明除了可作為上述的數(shù)據(jù)存儲(chǔ)裝置來(lái)實(shí)現(xiàn)之外,也能夠作 為如下的數(shù)據(jù)存儲(chǔ)方法來(lái)實(shí)現(xiàn)。即該數(shù)據(jù)存儲(chǔ)方法是一種由數(shù)據(jù)存儲(chǔ)裝置 存儲(chǔ)從主機(jī)裝置傳送的數(shù)據(jù)的方法,其中,所述數(shù)據(jù)存儲(chǔ)裝置包括第一存 儲(chǔ)部和第二存儲(chǔ)部,所述第一存儲(chǔ)部和所述第二存儲(chǔ)部具有預(yù)定的存儲(chǔ)區(qū) 域,所述數(shù)據(jù)存儲(chǔ)方法的特征在于,
監(jiān)視所述第一存儲(chǔ)部的使用區(qū)域,
當(dāng)從所述主機(jī)裝置傳送了所述數(shù)據(jù)時(shí),如果所述監(jiān)視的結(jié)果是判斷出 所述第一存儲(chǔ)部的存儲(chǔ)區(qū)域有剩余,則將該數(shù)據(jù)寫入所述第一存儲(chǔ)部,并 將用于校正該數(shù)據(jù)的校正用數(shù)據(jù)寫入所述第二存儲(chǔ)部,
如果所述監(jiān)視的結(jié)果是判斷出所述第一存儲(chǔ)部的存儲(chǔ)區(qū)域沒有剩余, 則擦除所述第二存儲(chǔ)部中已存儲(chǔ)的所述校正用數(shù)據(jù),并將該數(shù)據(jù)寫入該第 二存儲(chǔ)部。
根據(jù)這樣的數(shù)據(jù)存儲(chǔ)方法,也能夠獲得與上述各種效果相同的效果。
圖l是示出數(shù)據(jù)存儲(chǔ)裝置的概要結(jié)構(gòu)的說(shuō)明圖2是示出數(shù)據(jù)保障模式時(shí)的數(shù)據(jù)存儲(chǔ)裝置的內(nèi)部存儲(chǔ)器映射的說(shuō)明
圖3是示出容量?jī)?yōu)先模式時(shí)的數(shù)據(jù)存儲(chǔ)裝置的內(nèi)部存儲(chǔ)器映射的說(shuō)明
圖4是示出閃存控制器使用的虛擬地址與可由主機(jī)識(shí)別的地址空間的 說(shuō)明圖5是主處理的流程圖6是指針設(shè)定處理的流程圖7是寫處理的流程圖8是示出總線開關(guān)的內(nèi)部結(jié)構(gòu)的說(shuō)明圖;圖9是示出總線開關(guān)的內(nèi)部結(jié)構(gòu)的說(shuō)明圖; 圖IO是示出總線開關(guān)的內(nèi)部結(jié)構(gòu)的說(shuō)明圖; 圖ll是讀處理的流程圖12是示出總線開關(guān)的內(nèi)部結(jié)構(gòu)的說(shuō)明圖; 圖13是示出總線開關(guān)的內(nèi)部結(jié)構(gòu)的說(shuō)明圖; 圖14是示出總線開關(guān)的內(nèi)部結(jié)構(gòu)的說(shuō)明圖; 圖15是示出總線開關(guān)的內(nèi)部結(jié)構(gòu)的說(shuō)明圖16是示出表示第二閃存內(nèi)的數(shù)據(jù)存儲(chǔ)狀態(tài)的表的一個(gè)例子的說(shuō)明圖。
具體實(shí)施例方式
下面,為了清楚上述的本發(fā)明的作用以及效果,根據(jù)實(shí)施例以下面的 順序說(shuō)明本發(fā)明的實(shí)施方式。
A. 數(shù)據(jù)存儲(chǔ)裝置的概要結(jié)構(gòu)
B. 數(shù)據(jù)存儲(chǔ)裝置的動(dòng)作概要
C. 各種處理 (Cl)主處理 (C2)指針設(shè)定處理 (C3)寫處理 (C4)讀處理
D. 效果
E. 變形例
A.數(shù)據(jù)存儲(chǔ)裝置的概要結(jié)構(gòu)
圖1是示出作為實(shí)施例的數(shù)據(jù)存儲(chǔ)裝置IO的概要結(jié)構(gòu)的說(shuō)明圖。如圖
l所示,本實(shí)施例的數(shù)據(jù)存儲(chǔ)裝置IO在內(nèi)部具有兩個(gè)閃存(第一閃存FL1 和第二閃存FL2)。作為閃存的類型例如可利用NAND (與非)型閃存或 者NOR (或非)型閃存。
數(shù)據(jù)存儲(chǔ)裝置IO具有以下功能在通常動(dòng)作時(shí),向第一閃存FL1寫入 數(shù)據(jù),向第二閃存FL2寫入用于對(duì)寫入第一閃存FL1中的數(shù)據(jù)進(jìn)行校正的ECC數(shù)據(jù)。下面,將這樣的動(dòng)作狀態(tài)稱為"數(shù)據(jù)保障模式"。另外,數(shù)據(jù) 存儲(chǔ)裝置10具有以下功能當(dāng)?shù)谝婚W存FL1的剩余容量變?yōu)榱銜r(shí), 一邊
擦除已寫入第二閃存FL2的ECC數(shù)據(jù), 一邊向該第二閃存中也寫入通常 的數(shù)據(jù)。下面,將這樣的動(dòng)作狀態(tài)稱為"容量?jī)?yōu)先模式"。
如圖1所示,本實(shí)施例的數(shù)據(jù)存儲(chǔ)裝置10包括USB連接器110、 USB控制電路120、閃存控制器130、第一閃存FL1、以及第二閃存 FL2。
USB連接器110暴露在數(shù)據(jù)存儲(chǔ)裝置10的殼體(圖中的虛線部分) 上,并可與個(gè)人計(jì)算機(jī)或打印機(jī)等主機(jī)設(shè)備(下面,簡(jiǎn)稱為"主機(jī)")所 具有的USB接口連接。
USB控制電路120與USB連接器110以及閃存控制器130連接。USB 控制電路120是使該數(shù)據(jù)存儲(chǔ)裝置10作為USB大容量存儲(chǔ)類設(shè)備進(jìn)行動(dòng) 作的電路,并且是基于USB協(xié)議控制與主機(jī)之間的通信的電路。該USB 控制電路120還具有將從主機(jī)接收的USB指令轉(zhuǎn)換為ATA指令或SCSI 指令、或者將從閃存控制器130所接收的狀態(tài)信號(hào)或數(shù)據(jù)轉(zhuǎn)換成USB指令 的功能。ATA指令是指由ANSI (American National Standard Institute,美 國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì))標(biāo)準(zhǔn)化的指令,是除了本實(shí)施例的數(shù)據(jù)存儲(chǔ)裝置10以 外還用于對(duì)硬盤或PC卡型存儲(chǔ)器等各種數(shù)據(jù)存儲(chǔ)裝置進(jìn)行數(shù)據(jù)讀寫控制 的具有通用性的指令。SCSI指令比ATA指令通用性高,是除硬盤等存儲(chǔ) 裝置之外還能控制掃描器等的指令。
閃存控制器130是用于解釋從USB控制電路120傳送的ATA指令 (或者SCSI指令)、并且控制針對(duì)經(jīng)總線開關(guān)150連接的第一閃存FL1 和第二閃存FL2的數(shù)據(jù)讀寫的集成電路。閃存控制器130為了進(jìn)行所述控 制而在內(nèi)部具有CPU、 ROM、或RAM等。在該ROM中記錄有用于控制 數(shù)據(jù)存儲(chǔ)裝置IO的動(dòng)作的程序。CPU通過(guò)將RAM用作工作區(qū)域并通過(guò)執(zhí) 行該程序來(lái)控制數(shù)據(jù)存儲(chǔ)裝置10的總體動(dòng)作。
閃存控制器130包括地址轉(zhuǎn)換電路140和總線開關(guān)150。地址轉(zhuǎn)換電路 140是將可對(duì)兩個(gè)閃存的數(shù)據(jù)存儲(chǔ)區(qū)域進(jìn)行連續(xù)存取的虛擬地址轉(zhuǎn)換成第 一閃存FL1或第二閃存FL2的實(shí)際地址的電路。在該地址轉(zhuǎn)換中使用存儲(chǔ)
12在寄存器145中的地址指針的值。如上所述,本實(shí)施例的數(shù)據(jù)存儲(chǔ)裝置10 具有數(shù)據(jù)保障模式和容量?jī)?yōu)先模式這兩種動(dòng)作狀態(tài),其中,在容量?jī)?yōu)先模
式下,對(duì)第二閃存FL2也寫入通常的數(shù)據(jù)。因此,閃存控制器130使用可 連續(xù)存取兩個(gè)閃存的數(shù)據(jù)存儲(chǔ)區(qū)域的虛擬地址,地址轉(zhuǎn)換電路140將該虛 擬地址轉(zhuǎn)換為各個(gè)閃存的實(shí)際地址。由此,閃存控制器130能夠不考慮閃 存的種類而進(jìn)行數(shù)據(jù)的讀寫。
總線開關(guān)150與閃存控制器130、第一閃存FL1、以及第二閃存FL2連 接。總線開關(guān)150根據(jù)從閃存控制器130輸出的指令(寫指令或讀指令) 以及存取目的地的閃存的地址,進(jìn)行成為數(shù)據(jù)輸入輸出目的地的閃存的切 換。在該總線開關(guān)150的內(nèi)部具有ECC編碼器160、 ECC解碼器170、以 及偽數(shù)據(jù)輸出電路180。
ECC編碼器160是在數(shù)據(jù)保障模式時(shí)將由主機(jī)給出寫入指示的數(shù)據(jù)進(jìn) 行漢明(hamming)編碼來(lái)生成ECC數(shù)據(jù)的電路。所生成的ECC數(shù)據(jù)被 寫入第二閃存FL2中。在本實(shí)施例中,針對(duì)l個(gè)字節(jié)的數(shù)據(jù),生成l個(gè)字 節(jié)的ECC數(shù)據(jù)。另外,ECC數(shù)據(jù)除漢明編碼之外也可以通過(guò)循環(huán)編碼或 里德-索洛蒙編碼等其他的編碼技術(shù)來(lái)生成。
另一方面,ECC解碼器170是如下一種電路在數(shù)據(jù)保障模式或者容 量?jī)?yōu)先模式時(shí),基于從第一閃存FL1讀出的通常的數(shù)據(jù)對(duì)從第二閃存FL2 讀出的ECC數(shù)據(jù)進(jìn)行解碼,并對(duì)所讀出的數(shù)據(jù)進(jìn)行檢錯(cuò)和校正。
偽數(shù)據(jù)輸出電路180是如下一種電路在容量?jī)?yōu)先模式時(shí),當(dāng)主機(jī)想 要從第二閃存FL2中的記錄有ECC數(shù)據(jù)(確切地說(shuō)是用于校正第一閃存 FL1中的數(shù)據(jù)的ECC數(shù)據(jù))的區(qū)域讀出數(shù)據(jù)時(shí),輸出偽數(shù)據(jù)(例如 "00")。關(guān)于該偽數(shù)據(jù)輸出電路180的動(dòng)作,將在后面進(jìn)行詳細(xì)說(shuō)明。
總線開關(guān)150根據(jù)數(shù)據(jù)存儲(chǔ)裝置10的動(dòng)作狀態(tài)來(lái)改變上述的ECC編 碼器160、 ECC解碼器170、偽數(shù)據(jù)輸出電路180、第一閃存FL1、以及第 二閃存FL2的連接狀態(tài)。關(guān)于所述的改變方式,將在后面的各種處理的說(shuō) 明中一并進(jìn)行說(shuō)明。
B.數(shù)據(jù)存儲(chǔ)裝置的動(dòng)作概要
圖2是示出數(shù)據(jù)保障模式時(shí)的數(shù)據(jù)存儲(chǔ)裝置10的內(nèi)部存儲(chǔ)器映射的說(shuō)明圖。在圖2的左側(cè)示出了第一閃存FL1通過(guò)FAT形式被格式化而形成 了一個(gè)分區(qū)(partition)的例子。
在FAT形式的格式化中,第一閃存FL1的存儲(chǔ)區(qū)域被分離為管理區(qū)域 MA和用戶數(shù)據(jù)區(qū)域DA。管理區(qū)域MA由被稱為主引導(dǎo)區(qū)(Master Boot Record )(以下稱為"MBR區(qū)域")、BIOS參數(shù)塊(BIOS Parameter Block)(以下稱為"BPB區(qū)域")、FAT1、 FAT2 、根目錄(root directory)等的區(qū)域構(gòu)成。FAT的數(shù)據(jù)結(jié)構(gòu)由于是周知的,因此下面對(duì)這 些各個(gè)區(qū)域簡(jiǎn)單地進(jìn)行說(shuō)明。
MBR區(qū)域是在數(shù)據(jù)存儲(chǔ)裝置10與主機(jī)連接時(shí)最初被讀入的區(qū)域。在 該主引導(dǎo)區(qū)中記錄有引導(dǎo)代碼(bootstrap code)和分區(qū)表等。在分區(qū)表中 記錄有所生成的分區(qū)的數(shù)目、各分區(qū)的起始扇區(qū)及結(jié)束扇區(qū)、偏移量 (offset)、總扇區(qū)數(shù)目等的信息。
BPB區(qū)域被提供于各個(gè)分區(qū)的首扇區(qū),并記錄有該扇區(qū)的格式化形式 和扇區(qū)數(shù)目、FAT的數(shù)目等。
在FAT1以及FAT2中,記錄有構(gòu)成記錄在用戶數(shù)據(jù)區(qū)域DA的各個(gè)文 件的簇鏈(Cluster chain)的信息。在FAT1和FAT2中記錄相同的信息。
在根目錄中記錄有處于根目錄上的文件的文件名、擴(kuò)展名、屬性、以 及構(gòu)成該文件的首簇號(hào)等。
如圖2的右側(cè)所示,在數(shù)據(jù)保障模式時(shí),在第二閃存FL2中記錄有由 ECC編碼器160基于寫入到第一閃存FL1中的數(shù)據(jù)而生成的ECC數(shù)據(jù)。 如上所述,在本實(shí)施例中,由于針對(duì)1個(gè)字節(jié)的數(shù)據(jù),生成1個(gè)字節(jié)的 ECC數(shù)據(jù),因此,第一閃存FL1和第二閃存FL2的地址以一對(duì)一的方式相 對(duì)應(yīng)。S卩,與第一閃存FL1的某個(gè)地址中記錄的數(shù)據(jù)相對(duì)應(yīng)的ECC數(shù)據(jù) 被記錄在第二閃存FL2的相同地址中。
在數(shù)據(jù)保障模式時(shí),如果由主機(jī)給出了寫入數(shù)據(jù)的指示,則數(shù)據(jù)記錄 裝置10只要第一閃存FL1的用戶數(shù)據(jù)區(qū)域DA還有剩余,就將該數(shù)據(jù)以 從高位地址向低位地址的順序?qū)懭氲谝婚W存FL1的用戶數(shù)據(jù)區(qū)域DA中的 特定地址中。并且,由該數(shù)據(jù)生成的ECC數(shù)據(jù)被寫入第二閃存FL2的相 同地址中。另一方面,如果由主機(jī)給出了讀取數(shù)據(jù)的指示,則從第一閃存FL1的指定地址讀出數(shù)據(jù)并且從第二閃存FL2的相同地址讀出ECC數(shù)據(jù)。 并且,ECC解碼器170根據(jù)這些數(shù)據(jù)進(jìn)行檢錯(cuò)和數(shù)據(jù)的校正。
圖3是示出容量?jī)?yōu)先模式時(shí)的數(shù)據(jù)存儲(chǔ)裝置10的內(nèi)部存儲(chǔ)器映射的說(shuō) 明圖。如圖3所示,當(dāng)?shù)谝婚W存FL1的用戶數(shù)據(jù)區(qū)域DA的剩余區(qū)域變?yōu)?零、并且數(shù)據(jù)存儲(chǔ)裝置10的動(dòng)作狀態(tài)從數(shù)據(jù)保障模式切換到容量?jī)?yōu)先模 式時(shí),數(shù)據(jù)存儲(chǔ)裝置lO將由主機(jī)給出寫入指示的數(shù)據(jù)從最終地址Bn逆行 寫入到第二閃存FL2的用戶數(shù)據(jù)區(qū)域DA中。此時(shí),當(dāng)寫入目的地中存在 ECC數(shù)據(jù)時(shí),在擦除該ECC數(shù)據(jù)的基礎(chǔ)上進(jìn)行數(shù)據(jù)的寫入。在該容量?jī)?yōu) 先模式時(shí),數(shù)據(jù)存儲(chǔ)裝置10不進(jìn)行ECC數(shù)據(jù)的生成。
當(dāng)數(shù)據(jù)存儲(chǔ)裝置10在容量?jī)?yōu)先模式下進(jìn)行動(dòng)作的期間,在第二閃存 FL2的用戶數(shù)據(jù)區(qū)域DA中存在兩種區(qū)域,S卩存儲(chǔ)有在數(shù)據(jù)保障模式時(shí) 寫入的ECC數(shù)據(jù)的區(qū)域、以及存儲(chǔ)有在動(dòng)作狀態(tài)切換為容量?jī)?yōu)先模式之后 寫入的通常數(shù)據(jù)的區(qū)域。因此,數(shù)據(jù)存儲(chǔ)裝置10為了識(shí)別這兩種區(qū)域的 邊界而準(zhǔn)備了表示該邊界的地址的地址指針AP3,并將該地址指針AP3存 儲(chǔ)在寄存器145中。當(dāng)向第二閃存FL2中依次寫入數(shù)據(jù)時(shí),該地址指針 AP3從第二閃存FL2的最終地址Bn朝著該用戶數(shù)據(jù)區(qū)域DA的首地址B5 移動(dòng)。
數(shù)據(jù)存儲(chǔ)裝置10即使在容量?jī)?yōu)先模式下,當(dāng)從第一閃存FL1讀取與第 二閃存FL2的剩有ECC數(shù)據(jù)的區(qū)域相對(duì)應(yīng)的數(shù)據(jù)時(shí),也能夠與數(shù)據(jù)保障 模式時(shí)一樣地進(jìn)行使用ECC數(shù)據(jù)的數(shù)據(jù)校正和檢錯(cuò)。因此,數(shù)據(jù)存儲(chǔ)裝置 10為了辨別第一閃存FL1中的所述區(qū)域,將與第二閃存FL2的地址指針 AP3相對(duì)應(yīng)的第一閃存FL1的地址作為地址指針AP2存儲(chǔ)在寄存器145 中。當(dāng)向第二閃存FL2中依次寫入數(shù)據(jù)時(shí),該地址指針AP2從第一閃存 FL1的最終地址An朝著用戶數(shù)據(jù)區(qū)域DA的首地址A5移動(dòng)。
該地址指針AP2還被用于由閃存控制器130就第一閃存FL1中是否剩 有存儲(chǔ)區(qū)域進(jìn)行的判斷中。SP,閃存控制器130監(jiān)視該地址指針AP,如 果地址指針AP2表示第一閃存FL1的最終地址An,則能夠判斷為第一閃 存FL1中剩有存儲(chǔ)容量。因此,此時(shí),閃存控制器130向第一閃存FL1寫 入數(shù)據(jù)。另一方面,如果地址指針AP2表示比最終地址An低的地址,則閃存控制器130能夠判斷為第一閃存FL1的存儲(chǔ)容量沒有剩余。此時(shí),閃 存控制器B0進(jìn)行向第二閃存FL2寫入數(shù)據(jù)。
并且,數(shù)據(jù)存儲(chǔ)裝置IO為了識(shí)別第一閃存FLI的管理區(qū)域MA與用戶 數(shù)據(jù)區(qū)域DA的邊界,準(zhǔn)備了表示該邊界的地址的地址指針AP1,并將該 地址指針AP1存儲(chǔ)在寄存器145中。在后述的寫處理和讀處理中,通過(guò)使 用上述的地址指針AP1 AP3,來(lái)進(jìn)行成為數(shù)據(jù)的讀寫目的地的閃存的識(shí) 別和有無(wú)生成ECC數(shù)據(jù)的判斷等。
圖4是示出由閃存控制器130使用的虛擬地址與可由主機(jī)識(shí)別的地址 空間的說(shuō)明圖。如圖4所示,數(shù)據(jù)存儲(chǔ)裝置10當(dāng)動(dòng)作狀態(tài)切換到容量?jī)?yōu) 先模式時(shí),將第一閃存FL1的最終實(shí)際地址An和第二閃存FL2的最終實(shí) 際地址Bn連接起來(lái)作為一個(gè)存儲(chǔ)區(qū)域而進(jìn)行動(dòng)作。此時(shí),由于第一閃存 FL1的最終實(shí)際地址是"An",因此第二閃存FL的最終實(shí)際地址Bn成為 虛擬地址"An+l"。另外,由于第一閃存FL1和第二閃存FL2具有相同 的容量,因此第二閃存FL2的用戶數(shù)據(jù)區(qū)域DA的首實(shí)際地址B5成為虛 擬地址"2An—APl"。艮卩,在容量?jī)?yōu)先模式下,通過(guò)地址轉(zhuǎn)換電路140 的工作,主機(jī)將虛擬地址AO至虛擬地址(2An—APl)作為數(shù)據(jù)存儲(chǔ)裝置 10的實(shí)際地址來(lái)識(shí)別,,并可對(duì)所述連續(xù)的區(qū)域無(wú)縫(seamless)地進(jìn)行 存取。另外,虛擬地址A0 An的地址值取與第一閃存FL1的實(shí)際地址相 同的地址值(A0 An)。
C.各種處理 (Cl)主處理
圖5是由數(shù)據(jù)存儲(chǔ)裝置IO執(zhí)行的主處理的流程圖。該處理是在數(shù)據(jù)存 儲(chǔ)裝置10連接到主機(jī)上并被提供電源的同時(shí),由閃存控制器130開始執(zhí) 行的處理。
當(dāng)開始該處理時(shí),首先,閃存控制器130基于已存儲(chǔ)在兩個(gè)閃存中的 數(shù)據(jù)的位置,進(jìn)行用于設(shè)定地址指針AP1 AP3的值的指針設(shè)定處理(步 驟SIO)。關(guān)于該指針設(shè)定處理,將在后面進(jìn)行詳細(xì)說(shuō)明。
接著,閃存控制器130判斷是否經(jīng)由USB連接器110以及USB控制電 路120從主機(jī)接收了任何指令(步驟S20)。當(dāng)沒有接收指令時(shí)(步驟S20:否),通過(guò)循環(huán)該處理來(lái)進(jìn)行等待,直到接收到指令為止。另一方 面,當(dāng)接收到指令時(shí)(步驟S20:是),辨別該指令的類型(步驟
S30)。
當(dāng)在上述步驟S30中判斷為所接收的指令是進(jìn)行數(shù)據(jù)寫入的寫指令時(shí) (步驟S30:"寫"),閃存控制器130進(jìn)行后述的寫處理(步驟 S40)。另一方面,當(dāng)判斷為所接收的指令是進(jìn)行數(shù)據(jù)讀取的讀指令時(shí) (步驟S30:"讀"),進(jìn)行后述的讀處理(步驟S50)。并且,在完成 這些處理后,將處理返回到上述步驟S20。根據(jù)以上說(shuō)明的主處理,直到 停止供電,重復(fù)執(zhí)行響應(yīng)于從主機(jī)裝置接收的指令的處理。 (C2)指針設(shè)定處理
圖6是在上述主處理的步驟S10中執(zhí)行的指針設(shè)定處理的流程圖。該 指針設(shè)定處理是用來(lái)基于已存儲(chǔ)在兩個(gè)閃存中的數(shù)據(jù)的位置而求出地址指 針的初始值的處理。在下面的說(shuō)明中,在沒有特別指明的情況下,"地 址"指圖4所示的虛擬地址。
當(dāng)執(zhí)行該處理時(shí),首先,閃存控制器130讀取第一閃存FL1的MBR區(qū) 域與BPB區(qū)域(步驟S100)。并且,判斷這些區(qū)域中是否已寫入MBR信 息和BPB信息(步驟S110)。
當(dāng)在上述步驟S110中判斷為沒有寫入MBR信息和BPB信息時(shí)(步驟 S110:否),數(shù)據(jù)存儲(chǔ)裝置10處于尚未被格式化的狀態(tài),因此閃存控制 器130如下設(shè)定地址指針AP1 AP3的值。即,將地址指針API以及AP2 的值設(shè)定為與第一閃存FL1的物理最終地址對(duì)應(yīng)的地址An,并將地址指 針AP3的值設(shè)定為與第二閃存FL2的物理最終地址對(duì)應(yīng)的地址(An+ 1)。在數(shù)據(jù)存儲(chǔ)裝置10尚未格式化的情況下,通過(guò)該處理來(lái)結(jié)束該指針 設(shè)定處理。
當(dāng)在上述步驟S110中判斷出在MBR區(qū)域與BPB區(qū)域中分別記錄有 MBR信息與BPB信息時(shí)(步驟S110:是),閃存控制器130基于記錄在 MBR區(qū)域和BPB區(qū)域中的分區(qū)表和扇區(qū)數(shù)目等信息來(lái)計(jì)算用戶數(shù)據(jù)區(qū)域 DA的首地址A5 (步驟S130)。這樣,當(dāng)算出地址A5時(shí),閃存控制器 130將地址指針AP1的值設(shè)定為該地址"A5"(步驟S140)。
17接著,閃存控制器130解析記錄在FAT區(qū)域中的信息來(lái)求出已寫入用 戶數(shù)據(jù)區(qū)域DA中的數(shù)據(jù)的最大地址(下面稱為"最大寫入地址EA") (步驟S150)。由于在FAT區(qū)域中記錄有與記錄在用戶數(shù)據(jù)區(qū)域DA中 的文件的簇鏈有關(guān)的信息,因此通過(guò)追蹤所有文件的簇鏈,能夠求出最大 寫入地址EA。另外,由于在FAT1和FAT2中記錄有相同的信息,因此可 以解析任一個(gè)的信息。
在求出最大寫入地址EA后,閃存控制器130對(duì)該最大寫入地址EA與 作為第一閃存FL1的最終地址的地址An進(jìn)行比較,判斷最大寫入地址EA 是否超過(guò)了地址An (步驟S160)。作為該判斷結(jié)果,如果最大寫入地址 EA超過(guò)了地址An (步驟S160:是),則能夠判斷為用戶數(shù)據(jù)已經(jīng)被寫入 到第二閃存FL2中,并且動(dòng)作模式是容量?jī)?yōu)先模式(參見圖4)。因此, 閃存控制器130如下設(shè)定地址指針AP2、 AP3的值。g卩,將地址指針AP3 的值設(shè)定為最大寫入地址EA,將地址指針AP2的值設(shè)定為從地址An的2 倍的地址值中減去最大寫入地址EA的地址(2An—EA)(步驟S170)。 這樣求出的地址指針AP2和地址指針AP3表示第一閃存FL1和第二閃存 FL2的實(shí)際地址中相同的地址(參見圖3、圖4)。
當(dāng)在上述步驟S160中判斷為最大寫入地址EA是地址An以下時(shí)(步 驟S160:否),能夠判斷出在第一閃存FL1中還剩有用戶數(shù)據(jù)區(qū)域DA, 并且動(dòng)作模式是數(shù)據(jù)保障模式。因此,閃存控制器130將地址指針AP2的 值設(shè)定為地址An,將地址指針AP3的值設(shè)定為地址(An+1)(步驟 S180)(參見圖2)。
在通過(guò)以上的處理來(lái)設(shè)定地址指針AP1 AP3的值之后,閃存控制器 130將這些值記錄在寄存器145中(步驟S190),結(jié)束一系列的指針設(shè)定 處理,并將處理返回到主處理。 (C3)寫處理
圖7是在上述寫處理的步驟S40中執(zhí)行的寫處理的流程圖。該寫處理 是用于將從主機(jī)接收的寫數(shù)據(jù)寫入閃存中的處理。
當(dāng)執(zhí)行該處理時(shí),首先,閃存控制器130解析經(jīng)由USB控制電路120 從主機(jī)接收的寫指令,求出寫入目的地的地址(下面稱為"寫地址WA")(步驟S200)。
接著,閃存控制器130參考寄存器145來(lái)判斷寫地址WA是否是比地 址指針API所示的地址低的地址(步驟S210)。進(jìn)行所述判斷的結(jié)果, 如果寫地址WA是比地址指針API所示的地址低的地址(步驟S210: 是),則能夠判斷出是對(duì)于第一閃存FL1的管理區(qū)域MA的寫入(參見圖 3、 4)。因此,閃存控制器130向第一閃存FL1的寫地址WA寫入寫數(shù) 據(jù),并且,向第二閃存FL2的實(shí)際地址WA (圖3的實(shí)際地址B0 B5中 的任一個(gè))寫入由寫數(shù)據(jù)生成的ECC數(shù)據(jù)(步驟S220)。
圖8是示出在上述步驟S220中進(jìn)行數(shù)據(jù)寫入時(shí)的總線開關(guān)150的內(nèi)部 結(jié)構(gòu)的說(shuō)明圖。如圖8所示,此時(shí),總線開關(guān)150將閃存控制器130分別 連接在內(nèi)部緩存BF1和ECC編碼器160上,同時(shí)連接緩存BF1和第一閃 存FL1 ,并連接ECC編碼器160和第二閃存FL2。根據(jù)總線開關(guān)150的這 種結(jié)構(gòu),能夠向第一閃存FL1輸出寫數(shù)據(jù),并能夠向第二閃存FL2輸出由 該數(shù)據(jù)生成的ECC數(shù)據(jù)。
在通過(guò)上述步驟S220完成向?qū)芾韰^(qū)域MA的寫數(shù)據(jù)的寫入以及ECC 數(shù)據(jù)的寫入后,閃存控制器130執(zhí)行利用圖6進(jìn)行說(shuō)明的指針設(shè)定處理 (步驟S230)。由此,即使不是數(shù)據(jù)存儲(chǔ)裝置10的電源剛接通之后,在 數(shù)據(jù)存儲(chǔ)裝置10完成格式化時(shí),也能夠適當(dāng)?shù)卦O(shè)定地址指針AP1 AP3 的值。
當(dāng)在上述步驟S210中判斷為寫地址WA是比地址指針API所示的地 址高的地址時(shí)(步驟S210:否),閃存控制器130接著參考寄存器145來(lái) 判斷寫地址WA是否是比地址指針AP2所示的地址低的地址(步驟 S240)。進(jìn)行所述判斷的結(jié)果,如果判斷出寫地址WA是比地址指針AP2 所示的地址低的地址(步驟S240:是),則寫地址WA存在于地址指針 AP所示的地址與地址指針AP2所示的地址之間的區(qū)域。此時(shí),無(wú)論數(shù)據(jù) 存儲(chǔ)裝置10的動(dòng)作狀態(tài)是數(shù)據(jù)保障模式還是容量?jī)?yōu)先模式,都向與第二 閃存FL2的寫地址WA相對(duì)應(yīng)的地址寫入ECC數(shù)據(jù)(參見圖2、 3)。從 而,閃存控制器130向第一閃存控制器FL1的寫地址WA寫入寫數(shù)據(jù),向 第二閃存FL2的同一地址WA (實(shí)際地址)寫入由寫數(shù)據(jù)生成的ECC數(shù)
19據(jù)(步驟S250)。此時(shí)的總線開關(guān)的內(nèi)部結(jié)構(gòu)與圖8所示的結(jié)構(gòu)相同。
當(dāng)上述步驟S240中判斷為寫地址WA是比地址指針AP2高的地址時(shí) (步驟S240:否),閃存控制器130接著判斷寫地址WA是否是比第一閃 存FL1的最終地址An低的地址(步驟S260)。進(jìn)行所述判斷的結(jié)果,如 果判斷出寫地址WA是比地址An低的地址(步驟S260:是),則寫地址 WA存在于地址指針AP2所示的地址與地址An之間。即,此時(shí)由于地址 指針AP2是比地址An低的地址,因此能夠判斷出當(dāng)前的動(dòng)作狀態(tài)是容量 優(yōu)先模式,并且能夠判斷出在與寫地址WA相對(duì)應(yīng)的第二閃存FL2的地址 中不存在ECC數(shù)據(jù)(參見圖3)。因此,閃存控制器130不對(duì)第二閃存 FL2進(jìn)行ECC數(shù)據(jù)的寫入,而是向第一閃存FL1的寫地址WA寫入寫數(shù) 據(jù)(步驟S270)。
圖9是示出在上述步驟S270中寫入寫數(shù)據(jù)時(shí)的總線開關(guān)150的內(nèi)部結(jié) 構(gòu)的說(shuō)明圖。如圖9所示,此時(shí),總線開關(guān)150連接閃存控制器130與內(nèi) 部的緩沖器BF1,并將該緩沖器BF1與第一閃存FL1連接。另一方面,總 線開關(guān)150不連接閃存控制器130與第二閃存FL2。根據(jù)總線開關(guān)150的 這種結(jié)構(gòu),能夠只向第一閃存FL1寫入寫數(shù)據(jù)。
當(dāng)在上述步驟S260中判斷為寫地址WA是比第一閃存FL1的最終地址 An高的地址、即是第二閃存FL2中的地址時(shí)(步驟S260:否),閃存控 制器130接著判斷寫地址WA是否是比地址指針AP3所示的地址高的地址 (步驟S280)。進(jìn)行所述判斷的結(jié)果,如果判斷出寫地址WA是比地址 指針AP3高的地址(步驟S280:是),則能夠判斷出是對(duì)第二閃存FL2 中記錄有ECC數(shù)據(jù)的區(qū)域的寫入(參見圖4)。由此,閃存控制器130首 先擦除從地址指針AP3所示的地址到寫地址WA的數(shù)據(jù)(步驟S290)。 然后,將地址指針AP3重新設(shè)定為寫地址WA所示的地址,將地址指針 AP2的值重新設(shè)定為"2An—WA"(步驟S300),之后向第二閃存FL2 中的寫地址WA寫入寫數(shù)據(jù)(步驟S310)。在上述步驟S300中,當(dāng)?shù)刂?指針AP3的值首次超過(guò)地址(An+1)時(shí),數(shù)據(jù)存儲(chǔ)裝置10的動(dòng)作狀態(tài) 從數(shù)據(jù)保障模式轉(zhuǎn)移到容量?jī)?yōu)先模式。
圖10是示出在上述步驟S310中寫入寫數(shù)據(jù)時(shí)的總線開關(guān)150的內(nèi)部結(jié)構(gòu)的說(shuō)明圖。如圖10所示,此時(shí),總線開關(guān)150將閃存控制器130與內(nèi) 部緩沖器BF2連接,并將該緩沖器BF2與第二閃存FL2連接。另一方 面,總線開關(guān)150不連接閃存控制器130與第一閃存FL1。根據(jù)總線開關(guān) 150的這種結(jié)構(gòu),能夠只對(duì)第二閃存FL2寫入寫數(shù)據(jù)。
當(dāng)在上述步驟S280中判斷為寫地址WA是比地址指針AP3低的地址 時(shí)(步驟S280:否),能夠判斷出寫地址WA是第二閃存FL2中寫入通 常數(shù)據(jù)的區(qū)域中的地址。由此,閃存控制器130不進(jìn)行ECC數(shù)據(jù)的擦除, 而是向第二閃存FL2的寫地址WA (圖3的地址B5 Bn的范圍內(nèi)的實(shí)際 地址(2Bn—WA))寫入寫數(shù)據(jù)(步驟S310)。此時(shí)的總線開關(guān)150的 內(nèi)部結(jié)構(gòu)與圖IO所示的結(jié)構(gòu)相同。
根據(jù)以上說(shuō)明的寫處理,通過(guò)適當(dāng)?shù)貙?duì)寫地址WA與地址指針AP1 AP3等進(jìn)行比較,能夠恰當(dāng)?shù)貓?zhí)行與數(shù)據(jù)存儲(chǔ)裝置10的當(dāng)前動(dòng)作模式相 對(duì)應(yīng)的數(shù)據(jù)寫入。 (C4)讀處理
圖11是在上述主處理的步驟S50中執(zhí)行的讀處理的流程圖。該讀處理 是用于根據(jù)來(lái)自主機(jī)的請(qǐng)求而從閃存讀出數(shù)據(jù)的處理。
當(dāng)執(zhí)行該處理時(shí),首先,閃存控制器130解析經(jīng)由USB控制電路120 從主機(jī)接收的讀指令,求出讀入目的地的地址(下面稱為"讀地址 RA")(步驟S400)。
接著,閃存控制器130參考寄存器145來(lái)判斷讀地址RA是否是比地址 指針AP2所示的地址低的地址(步驟S410)。進(jìn)行所述判斷的結(jié)果,如 果讀地址RA是比地址指針AP2所示的地址低的地址(步驟S410:是), 則說(shuō)明在與讀地址RA相對(duì)應(yīng)的第二閃存FL2的地址中存在ECC數(shù)據(jù)(參 見圖3)。因此,閃存控制器130從第一閃存FL1的讀地址RA讀取數(shù) 據(jù),并從第二閃存FL2的讀地址RA (實(shí)際地址)讀取ECC數(shù)據(jù)(步驟 S420)。當(dāng)閃存控制器130讀取這些數(shù)據(jù)時(shí),在總線開關(guān)150中通過(guò)ECC 解碼器170進(jìn)行檢錯(cuò)以及糾錯(cuò)(步驟S430)。在執(zhí)行檢錯(cuò)和糾錯(cuò)之后,閃 存控制器130通過(guò)USB控制電路120向主機(jī)傳送所讀取的數(shù)據(jù)(步驟 S440)。圖12是示出在上述步驟S420中讀取數(shù)據(jù)時(shí)的總線開關(guān)150的內(nèi)部結(jié) 構(gòu)的說(shuō)明圖。如圖12所示,此時(shí),總線開關(guān)150連接閃存控制器130與內(nèi) 部的ECC解碼器170,并將第一閃存FL1和第二閃存FL2連接在ECC解 碼器170上。根據(jù)總線開關(guān)150的這種結(jié)構(gòu),能夠通過(guò)ECC解碼器170基 于從第一閃存FL1讀取的數(shù)據(jù)和從第二閃存FL2讀取的ECC數(shù)據(jù)來(lái)進(jìn)行 檢錯(cuò)和數(shù)據(jù)校正。在沒有發(fā)生錯(cuò)誤的情況下或者在數(shù)據(jù)已校正的情況下, 通過(guò)閃存控制器130向主機(jī)輸出該數(shù)據(jù)。與此相對(duì),在由于發(fā)生了錯(cuò)誤而 不能校正數(shù)據(jù)的情況下,通過(guò)閃存控制器130將其意思通知給主機(jī)。
當(dāng)在上述步驟S410中判斷為讀地址RA是比地址指針AP2所示的地址 高的地址時(shí)(步驟S410:否),閃存控制器130接著判斷讀地址RA是否 是比第一閃存FL1的最終地址An低的地址(步驟S450)。進(jìn)行所述判斷 的結(jié)果,如果判斷出讀地址RA是比地址An低的地址(步驟S450: 是),則讀地址RA存在于地址指針AP2所示的地址與地址An之間。 即,此時(shí)由于地址指針AP2是比地址An低的地址,因此能夠判斷出當(dāng)前 的動(dòng)作狀態(tài)是容量?jī)?yōu)先模式,并且能夠判斷出在與讀地址RA相對(duì)應(yīng)的第 二閃存FL2的地址中不存在ECC數(shù)據(jù)(參見圖3)。因此,閃存控制器 130只從第一閃存FL1的讀地址RA讀取數(shù)據(jù)(步驟S460),并將該數(shù)據(jù) 傳送給主機(jī)(步驟S440)。
圖13是示出在上述步驟S460中讀取數(shù)據(jù)時(shí)的總線開關(guān)150的內(nèi)部結(jié) 構(gòu)的說(shuō)明圖。如圖13所示,此時(shí),總線開關(guān)150連接閃存控制器130與內(nèi) 部的緩沖器BF3,并連接該緩沖器BF3與第一閃存FL1。另一方面,總線 開關(guān)150不連接閃存控制器130與第二閃存FL2。根據(jù)總線開關(guān)150的這 種結(jié)構(gòu),能夠只從第一閃存FL1讀取數(shù)據(jù)。
當(dāng)在上述步驟S450中判斷為讀地址RA是比第一閃存FL1的最終地址 An高的地址、即是第二閃存FL2中的地址時(shí)(步驟S450:否),閃存控 制器130接著判斷讀地址RA是否是比地址指針AP3所示的地址低的地址 (步驟S470)。進(jìn)行所述判斷的結(jié)果,如果判斷出讀地址RA是比地址指 針AP3低的地址(步驟S470:是),能夠判斷為從第二閃存FL2中的記 錄有通常數(shù)據(jù)的區(qū)域進(jìn)行讀取(參見圖3、 4)。由此,閃存控制器130從第二閃存FL2中的讀地址RA讀取數(shù)據(jù)(步驟S480),并將該數(shù)據(jù)傳送給 主機(jī)(步驟S440)。
圖14是示出在上述步驟S480中讀取數(shù)據(jù)時(shí)的總線開關(guān)150的內(nèi)部結(jié) 構(gòu)的說(shuō)明圖。如圖14所示,此時(shí),總線開關(guān)150將閃存控制器130連接在 內(nèi)部的緩沖器BF4上,并將該緩沖器BF4連接在第二閃存FL2上。另一 方面,總線開關(guān)150不連接閃存控制器130與第一閃存FL1。根據(jù)總線開 關(guān)150的這種結(jié)構(gòu),能夠只從第二閃存FL2讀取數(shù)據(jù)。
當(dāng)在上述步驟S470中判斷為讀地址RA是比地址指針AP3高的地址時(shí) (步驟S470:否),對(duì)第二閃存FL2的寫有ECC數(shù)據(jù)的區(qū)域進(jìn)行讀取 (參見圖4)。在容量?jī)?yōu)先模式下,由于該區(qū)域需要被主機(jī)識(shí)別為未使用 區(qū)域,因此閃存控制器130使用總線開關(guān)150中的偽數(shù)據(jù)輸出電路180生 成偽數(shù)據(jù)"00"(步驟S490),并將該偽數(shù)據(jù)傳送給主機(jī)(步驟 S440)。由此,主機(jī)識(shí)別出該區(qū)域中沒有記錄任何數(shù)據(jù)。另外,作為偽數(shù) 據(jù),除"00"之外,例如也可以生成"FF" 、 "AA"或"55"等數(shù)據(jù)。
圖15是示出在上述步驟S490中寫入偽數(shù)據(jù)時(shí)的總線開關(guān)150的內(nèi)部 結(jié)構(gòu)的說(shuō)明圖。如圖15所示,此時(shí),總線開關(guān)150將內(nèi)部的偽數(shù)據(jù)輸出 電路180連接在閃存控制器130上,并且不將第一閃存FL1或第二閃存 FL2連接在閃存控制器130上。根據(jù)總線開關(guān)150的這種結(jié)構(gòu),能夠只從 偽數(shù)據(jù)輸出電路180讀取偽數(shù)據(jù)。
根據(jù)以上說(shuō)明的讀處理,通過(guò)適當(dāng)?shù)貙?duì)讀地址RA與地址指針AP2、 AP3等進(jìn)行比較,能夠根據(jù)數(shù)據(jù)存儲(chǔ)裝置10的當(dāng)前動(dòng)作模式,從適當(dāng)?shù)?區(qū)域讀出通常的數(shù)據(jù)或ECC數(shù)據(jù)。
D.效果
以上對(duì)本實(shí)施例的數(shù)據(jù)存儲(chǔ)裝置10的詳細(xì)結(jié)構(gòu)及其處理進(jìn)行了說(shuō)明。 根據(jù)本實(shí)施例的數(shù)據(jù)存儲(chǔ)裝置10,如果第一閃存FL1的存儲(chǔ)區(qū)域有剩余, 則將從主機(jī)給出了寫入指示的數(shù)據(jù)寫入到第一閃存FL1中,并且將用于校 正該數(shù)據(jù)的ECC數(shù)據(jù)寫入到第二閃存FL2中。因此,假使記錄在第一閃 存FL1中的數(shù)據(jù)以某些原因而損壞,也能夠通過(guò)使用寫入到第二閃存FL2 中的ECC數(shù)據(jù)來(lái)校正該損壞的數(shù)據(jù)。IO如果第一閃存FL1的剩余容量變?yōu)?br>
零,則擦除已寫入第二閃存FL2中的ECC數(shù)據(jù),并向該第二閃存FL2中 也寫入從主機(jī)傳送的數(shù)據(jù)。由此,能夠有效地利用具有兩個(gè)閃存的數(shù)據(jù)存 儲(chǔ)裝置10的存儲(chǔ)容量。綜上,根據(jù)本實(shí)施例,通過(guò)平衡數(shù)據(jù)的可靠性與 存儲(chǔ)容量的有效利用,能夠提供功能性的數(shù)據(jù)存儲(chǔ)裝置。 E.變形例
以上對(duì)本發(fā)明的實(shí)施例進(jìn)行了說(shuō)明,但不用說(shuō)本發(fā)明不限定于這樣的 實(shí)施例,可在不脫離其主旨的范圍內(nèi)采用各種結(jié)構(gòu)。例如,通過(guò)硬件實(shí)現(xiàn) 的功能也可以通過(guò)軟件來(lái)實(shí)現(xiàn)。以外還可以進(jìn)行如下變形。
(El)變形例1:
上述實(shí)施例在數(shù)據(jù)保障模式下向第二閃存FL2中記錄ECC數(shù)據(jù)。與此 相對(duì),也可以向第二閃存FL2中寫入與寫入到第一閃存FL1中的內(nèi)容相同 的數(shù)據(jù)。根據(jù)這樣的結(jié)構(gòu),能夠提高數(shù)據(jù)的冗余度,因此能夠提高容錯(cuò)能 力。另外,根據(jù)這樣的結(jié)構(gòu),由于只對(duì)雙方的數(shù)據(jù)進(jìn)行對(duì)比就能進(jìn)行檢 錯(cuò),因此能夠減輕數(shù)據(jù)存儲(chǔ)裝置10的處理負(fù)擔(dān)。
在采用上述結(jié)構(gòu)的情況下,可通過(guò)使用閃存中標(biāo)準(zhǔn)記錄的ECC數(shù)據(jù)來(lái) 辨別記錄在第一閃存FL1中的數(shù)據(jù)與記錄在第二閃存FL2中的數(shù)據(jù)中哪個(gè) 是正常的數(shù)據(jù)。在具有通用的閃存控制器和NAND型閃存的數(shù)據(jù)存儲(chǔ)裝置 的情況下,在一個(gè)閃存中針對(duì)2048字節(jié)的數(shù)據(jù)標(biāo)準(zhǔn)地記錄了 64字節(jié)的 ECC數(shù)據(jù)。因此,使用該ECC數(shù)據(jù)對(duì)記錄在閃存中的數(shù)據(jù)進(jìn)行檢錯(cuò),并 且將從沒有發(fā)生錯(cuò)誤的那一個(gè)閃存中輸出的數(shù)據(jù)傳送給主機(jī),由此能夠輸 出正常的數(shù)據(jù)。
在本變形例中,向第二閃存FL2中寫入與第一閃存FL1相同內(nèi)容的數(shù) 據(jù),但除此以外,例如也可以向第二閃存FL2中寫入將寫入第二閃存FL1 中的數(shù)據(jù)的各位進(jìn)行反轉(zhuǎn)后的數(shù)據(jù)。 (E2)變形例2:
上述實(shí)施例是通過(guò)使用地址指針來(lái)進(jìn)行閃存中的管理區(qū)域MA和用戶 數(shù)據(jù)區(qū)域DA的辨別、或者寫有通常數(shù)據(jù)的區(qū)域與寫有ECC數(shù)據(jù)的區(qū)域的 辨別的。與此相對(duì),例如通過(guò)使用下述的表也能夠進(jìn)行與上述實(shí)施例相同
24的處理,其中所述表用于管理閃存中的各個(gè)地址中是否存儲(chǔ)有數(shù)據(jù)。
圖16是示出表示第二閃存FL2內(nèi)的數(shù)據(jù)存儲(chǔ)狀態(tài)的表的一個(gè)示例的說(shuō)
明圖。在該表TBL中,對(duì)于圖4所示第二閃存FL2中的虛擬地址(An十 1)至虛擬地址(2An—APl)中的每個(gè)地址,分別分配了 1比特的區(qū)域。 所述每個(gè)比特的比特狀態(tài)表示在與該比特相對(duì)應(yīng)的地址中是否存儲(chǔ)有數(shù) 據(jù)。S卩,在"1"的情況下,表示存儲(chǔ)有數(shù)據(jù),在"0"的情況下,表示沒 有存儲(chǔ)數(shù)據(jù)。
閃存控制器130在向第二閃存FL2中寫入ECC數(shù)據(jù)的數(shù)據(jù)保障模式 時(shí),對(duì)該表TBL不進(jìn)行任何寫入。g卩,在數(shù)據(jù)保障模式時(shí),表TBL的每 個(gè)比特維持"0"。
與此相對(duì),在向第二閃存FL2中寫入通常數(shù)據(jù)的容量?jī)?yōu)先模式下,如 果向第二閃存FL2中寫入了數(shù)據(jù),則將與該寫地址相對(duì)應(yīng)的表TBL中的 比特設(shè)置為"1"。通過(guò)以上操作,能夠容易地辨別向第二閃存FL2中的 哪個(gè)地址寫入了數(shù)據(jù)。
之后,閃存控制器130通過(guò)參考該表的比特狀態(tài),能夠容易地辨別是 否應(yīng)向第二閃存FL2中寫入ECC數(shù)據(jù)、或者是否應(yīng)從第二閃存FL2讀取 ECC數(shù)據(jù)。例如,當(dāng)向第一閃存FL1中寫入數(shù)據(jù)時(shí),如果與第一閃存FL1 中的寫地址相對(duì)應(yīng)的第二閃存FL2的地址的表TBL上的比特為"1",則 能夠判斷出在第二閃存FL2的該地址中己記錄有通常的數(shù)據(jù)。因此,在此 情況下,僅向第一閃存FL1寫入數(shù)據(jù)。另外,當(dāng)向第一閃存FL1中寫入數(shù) 據(jù)時(shí),如果與第一閃存FL1中的寫地址相對(duì)應(yīng)的第二閃存FL2的地址的表 上的比特為"0",則能夠判斷出第二閃存FL2中沒有寫入通常的數(shù)據(jù)。 因此,在此情況下,能夠在向第一閃存FL1中寫入數(shù)據(jù)的同時(shí)向第二閃存 FL2中寫入數(shù)據(jù)。
根據(jù)以上說(shuō)明的變形例,通過(guò)使用表TBL,能夠?qū)Φ诙W存FL2中的 寫入狀態(tài)進(jìn)行詳細(xì)的管理。因此,即使諸如在將小容量數(shù)據(jù)寫入隨機(jī)的地 址中的使用狀態(tài)下,也能夠恰當(dāng)?shù)剡M(jìn)行通常的數(shù)據(jù)和ECC數(shù)據(jù)的讀寫。 (E3)變形例3:
在上述實(shí)施例中,對(duì)于在第一閃存FL1的數(shù)據(jù)容量變?yōu)榱銜r(shí)數(shù)據(jù)存儲(chǔ)裝置10的動(dòng)作狀態(tài)自動(dòng)地從數(shù)據(jù)保障模式轉(zhuǎn)移為容量?jī)?yōu)先模式的場(chǎng)合進(jìn) 行說(shuō)明。與此相對(duì),也可以在數(shù)據(jù)存儲(chǔ)裝置10中設(shè)置模式切換開關(guān),并 通過(guò)該開關(guān)的設(shè)定來(lái)改變動(dòng)作狀態(tài)。由此,用戶可根據(jù)數(shù)據(jù)存儲(chǔ)裝置10 的使用方式靈活地設(shè)定動(dòng)作模式。例如,當(dāng)以保存重要數(shù)據(jù)為目的時(shí),通
過(guò)禁止向第二閃存FL2中寫入通常數(shù)據(jù),能夠強(qiáng)制性地將數(shù)據(jù)存儲(chǔ)裝置10 設(shè)定為數(shù)據(jù)保障模式。另外,當(dāng)以保存容量大的數(shù)據(jù)為目的時(shí),能夠強(qiáng)制 性地將數(shù)據(jù)存儲(chǔ)裝置IO設(shè)定為容量?jī)?yōu)先模式。在默認(rèn)狀態(tài)下,為了提高 數(shù)據(jù)的可靠性,可將數(shù)據(jù)存儲(chǔ)裝置IO強(qiáng)制性地設(shè)定為數(shù)據(jù)保障模式。
這種動(dòng)作模式的設(shè)定也可以不通過(guò)物理開關(guān)的操作而是以軟件方式進(jìn)
行。作為以軟件方式實(shí)現(xiàn)的方法,例如有如下方法將用于切換模式的專
用的應(yīng)用程序安裝在主機(jī)上,并通過(guò)由該應(yīng)用程序向數(shù)據(jù)存儲(chǔ)裝置10輸 出模式切換指令而由閃存控制器130或USB控制電路120解析該指令并切 換動(dòng)作模式。
(E4)變形例4:
在上述實(shí)施例中,寫入第一閃存FL1中的數(shù)據(jù)與寫入第二閃存FL2中 的ECC數(shù)據(jù)具有相同的數(shù)據(jù)容量。因此,對(duì)第一閃存FL1和第二閃存 FL2具有相同容量的場(chǎng)合進(jìn)行了說(shuō)明。但是,第二閃存FL2所需要的存儲(chǔ) 容量根據(jù)ECC數(shù)據(jù)的大小而發(fā)生變化,因此第一閃存FL1與第二閃存 FL2也可以具有不同的數(shù)據(jù)容量。例如,如果寫入第二閃存FL2的ECC數(shù) 據(jù)的數(shù)據(jù)長(zhǎng)度短于寫入第一閃存FL1的數(shù)據(jù)的的數(shù)據(jù)長(zhǎng)度,則可使第二閃 存FL2的數(shù)據(jù)容量少于第一閃存FL1的數(shù)據(jù)容量。
另外,即使寫入第一閃存FL1的數(shù)據(jù)與寫入第二閃存FL2的ECC數(shù)據(jù) 的數(shù)據(jù)長(zhǎng)度相同,也可以使第二閃存FL2具有更大的數(shù)據(jù)容量。在此情況 下,雖然在數(shù)據(jù)存儲(chǔ)裝置10以數(shù)據(jù)保障模式進(jìn)行動(dòng)作時(shí)不能有效地利用 第二閃存FL2的數(shù)據(jù)容量,但是在轉(zhuǎn)移到容量?jī)?yōu)先模式時(shí),如果第二閃存 FL2的數(shù)據(jù)容量較多,那么總的數(shù)據(jù)容量就增加相應(yīng)的量。 (E5)變形例5:
在上述實(shí)施例中,如圖4所示,在容量?jī)?yōu)先模式時(shí),進(jìn)行地址管理, 以將第一閃存FL1的最終實(shí)際地址與第二閃存FL2的最終實(shí)際地址連接起
26來(lái)。與此相對(duì),也可以進(jìn)行地址管理,以將第一閃存FL1的最終實(shí)際地址
與第二閃存FL2中的用戶數(shù)據(jù)區(qū)域的首實(shí)際地址連接起來(lái)。在這樣的結(jié)構(gòu) 下,當(dāng)動(dòng)作狀態(tài)轉(zhuǎn)移到容量?jī)?yōu)先模式時(shí),從第二閃存FL2中老的ECC數(shù) 據(jù)開始依次進(jìn)行擦除。 (E6)變形例6:
在上述實(shí)施例中沒有提及數(shù)據(jù)存儲(chǔ)裝置10的動(dòng)作狀態(tài)在從數(shù)據(jù)保障模 式轉(zhuǎn)移到容量?jī)?yōu)先模式之后又再次轉(zhuǎn)移到數(shù)據(jù)保障模式的情況。但是,通 過(guò)采取以下的方法,能夠再次轉(zhuǎn)移到數(shù)據(jù)保障模式。即,在轉(zhuǎn)移到容量?jī)?yōu) 先模式之后,當(dāng)從第一閃存FL1或者第二閃存FL2擦除數(shù)據(jù)從而所存儲(chǔ)的 數(shù)據(jù)的全部容量變?yōu)榈谝婚W存FL1的用戶數(shù)據(jù)區(qū)域DA以下時(shí),執(zhí)行碎片 整理(defragmentation),從而將所有的數(shù)據(jù)移動(dòng)到第一閃存FL1的用戶 數(shù)據(jù)區(qū)域中。在此基礎(chǔ)上,基于移動(dòng)到第一閃存FL1中的每個(gè)數(shù)據(jù)生成 ECC數(shù)據(jù),并將該ECC數(shù)據(jù)記錄在第二閃存FL2中。通過(guò)執(zhí)行以上的處 理,可將動(dòng)作狀態(tài)從容量?jī)?yōu)先模式再次轉(zhuǎn)移到數(shù)據(jù)保障模式。既可以將該 處理設(shè)定為在所存儲(chǔ)的數(shù)據(jù)的全部容量變?yōu)榈谝婚W存FL1的用戶數(shù)據(jù)區(qū)域 以下時(shí)自動(dòng)地執(zhí)行,也可以設(shè)定為通過(guò)設(shè)置在數(shù)據(jù)存儲(chǔ)裝置10中的物理 開關(guān)的操作或者利用安裝在主機(jī)中的專用的應(yīng)用程序進(jìn)行的操作來(lái)執(zhí)行。 (E7)變形例
在上述實(shí)施例中,即使數(shù)據(jù)存儲(chǔ)裝置10的動(dòng)作狀態(tài)處于容量?jī)?yōu)先模 式,只要第二閃存FL2中剩有ECC數(shù)據(jù),就使用該ECC數(shù)據(jù)來(lái)進(jìn)行糾錯(cuò) 等。與此相對(duì),也可以在動(dòng)作狀態(tài)切換為容量?jī)?yōu)先模式時(shí),擦除所有的 ECC數(shù)據(jù),或者當(dāng)作不存在來(lái)處理。在這種結(jié)構(gòu)下,在容量?jī)?yōu)先模式中不 需要判斷第二閃存FL2中是否存在ECC數(shù)據(jù),因此能夠減輕處理負(fù)擔(dān), 提高讀寫速度。
(E8)變形例8:
在上述實(shí)施例中,數(shù)據(jù)存儲(chǔ)裝置10具有閃存以作為存儲(chǔ)設(shè)備。與此相 對(duì),作為存儲(chǔ)設(shè)備,也可以具有硬盤驅(qū)動(dòng)器或可改寫的光盤等。另外,在 上述實(shí)施例中具有兩個(gè)閃存,但其數(shù)目不限于此,可具有偶數(shù)個(gè)閃存。在 此情況下,可將兩個(gè)閃存作為一組,并對(duì)各組的閃存執(zhí)行與實(shí)施例相同的處理。另外,在上述實(shí)施例中,具有在物理上不同的兩個(gè)閃存,但是也可 以將一個(gè)閃存中的存儲(chǔ)區(qū)域在邏輯上分割為兩個(gè)區(qū)域,并將所分割的一個(gè) 區(qū)域作為與上述實(shí)施例的第一閃存FL1,將另一個(gè)區(qū)域作為與上述實(shí)施例
的第二閃存FL2。 (E9)變形例9:
在上述實(shí)施例中,對(duì)數(shù)據(jù)存儲(chǔ)裝置10通過(guò)FAT形式被格式化的場(chǎng)合 進(jìn)行了說(shuō)明,但是格式化的形式不限于此。例如,也可以應(yīng)用NTFS、 HPFS、 Linux (注冊(cè)商標(biāo))EXT等各種形式。
另外,在上述實(shí)施例中,使用"地址"這一術(shù)語(yǔ)描述了第一閃存FL1 和第二閃存FL2中存儲(chǔ)數(shù)據(jù)的位置場(chǎng)所,但是所述術(shù)語(yǔ)可根據(jù)格式化的類 型、操作系統(tǒng)或存儲(chǔ)設(shè)備的類型而替換為"扇區(qū)(sector)"、"簇 (cluster)"、"塊(block)"、或"塊地址(block address)"等。
當(dāng)然,本發(fā)明不應(yīng)根據(jù)上述的實(shí)施例、變形例和其他方式而被作出任 何限制性的解釋,本發(fā)明的保護(hù)范圍應(yīng)當(dāng)根據(jù)權(quán)利要求書和本發(fā)明的基本 思想進(jìn)行解釋。
權(quán)利要求
1. 一種數(shù)據(jù)存儲(chǔ)裝置,其存儲(chǔ)從主機(jī)裝置傳送的數(shù)據(jù),所述數(shù)據(jù)存儲(chǔ)裝置的特征在于,包括第一存儲(chǔ)部,具有預(yù)定的存儲(chǔ)區(qū)域;第二存儲(chǔ)部,具有預(yù)定的存儲(chǔ)區(qū)域;監(jiān)視單元,至少監(jiān)視所述第一存儲(chǔ)部的使用區(qū)域;以及寫入控制單元,當(dāng)從所述主機(jī)裝置傳送了所述數(shù)據(jù)時(shí),如果使用所述監(jiān)視單元判斷出所述第一存儲(chǔ)部的存儲(chǔ)區(qū)域有剩余,則將該數(shù)據(jù)寫入所述第一存儲(chǔ)部,并將用于校正該數(shù)據(jù)的校正用數(shù)據(jù)寫入所述第二存儲(chǔ)部,如果判斷出所述第一存儲(chǔ)部的存儲(chǔ)區(qū)域沒有剩余,則擦除所述第二存儲(chǔ)部中已存儲(chǔ)的所述校正用數(shù)據(jù),并將該數(shù)據(jù)寫入所述第二存儲(chǔ)部。
2. 如權(quán)利要求1所述的數(shù)據(jù)存儲(chǔ)裝置,其中,所述寫入控制單元具有編碼單元,該編碼單元基于從所述主機(jī)裝置傳 送的數(shù)據(jù)來(lái)生成糾錯(cuò)碼,作為所述校正用數(shù)據(jù)。
3. 如權(quán)利要求2所述的數(shù)據(jù)存儲(chǔ)裝置,其中,所述編碼單元生成其比特?cái)?shù)等于或少于從所述主機(jī)裝置傳送的數(shù)據(jù)的 比特?cái)?shù)的糾錯(cuò)碼。
4. 如權(quán)利要求1所述的數(shù)據(jù)存儲(chǔ)裝置,其中,所述寫入控制單元具有生成與從所述主機(jī)裝置傳送的數(shù)據(jù)相同的數(shù)據(jù) 或者將構(gòu)成從所述主機(jī)裝置傳送的數(shù)據(jù)的每個(gè)比特反轉(zhuǎn)后的數(shù)據(jù)來(lái)作為所 述校正用數(shù)據(jù)的單元。
5. 如權(quán)利要求1所述的數(shù)據(jù)存儲(chǔ)裝置,其中,所述寫入控制單元在將從所述主機(jī)裝置傳送的數(shù)據(jù)寫入所述第二存儲(chǔ) 部時(shí),根據(jù)將所述第一存儲(chǔ)部的物理最終地址和所述第二存儲(chǔ)部的物理最 終地址連接起來(lái)的虛擬地址空間來(lái)向所述第二存儲(chǔ)部寫入數(shù)據(jù)。
6. 如權(quán)利要求1所述的數(shù)據(jù)存儲(chǔ)裝置,其中,還包括讀取控制單元,該讀取控制單元在從所述主機(jī)裝置接收到數(shù)據(jù) 的讀出請(qǐng)求時(shí),如果作為該讀出請(qǐng)求的對(duì)象的數(shù)據(jù)的存儲(chǔ)目的地是所述第一存儲(chǔ)部,并且基于該數(shù)據(jù)生成的校正用數(shù)據(jù)存在于所述第二存儲(chǔ)部中, 則從所述第一存儲(chǔ)部讀取該數(shù)據(jù),從所述第二存儲(chǔ)部讀取該校正用數(shù)據(jù), 基于該校正用數(shù)據(jù)來(lái)校正該數(shù)據(jù),并向所述主機(jī)裝置傳送該數(shù)據(jù)。
7. 如權(quán)利要求6所述的數(shù)據(jù)存儲(chǔ)裝置,其中,所述讀入控制單元具有如下單元所述單元在作為所述讀出請(qǐng)求的對(duì) 象的數(shù)據(jù)的存儲(chǔ)目的地是所述第一存儲(chǔ)部、并且基于該數(shù)據(jù)生成的校正用 數(shù)據(jù)不存在于所述第二存儲(chǔ)部的情況下,從所述第一存儲(chǔ)部讀取該數(shù)據(jù), 并將該數(shù)據(jù)直接傳送給所述主機(jī)裝置。
8. 如權(quán)利要求6或7所述的數(shù)據(jù)存儲(chǔ)裝置,其中,所述讀入控制單元具有如下單元,該單元在作為所述讀出請(qǐng)求的對(duì)象 的數(shù)據(jù)的存儲(chǔ)目的地是所述第二存儲(chǔ)部并且是該第二存儲(chǔ)部的記錄有通常 的數(shù)據(jù)的區(qū)域的情況下,從該第二存儲(chǔ)部讀取該數(shù)據(jù),并將該數(shù)據(jù)直接傳 送給所述主機(jī)裝置。
9. 如權(quán)利要求6至8中任一項(xiàng)所述的數(shù)據(jù)存儲(chǔ)裝置,其中, 所述讀入控制單元具有如下單元,該單元在作為所述讀出請(qǐng)求的對(duì)象的數(shù)據(jù)的存儲(chǔ)目的地是所述第二存儲(chǔ)部的存儲(chǔ)有所述校正用數(shù)據(jù)的區(qū)域的 情況下,不從所述第二存儲(chǔ)部進(jìn)行數(shù)據(jù)的讀取,而是將預(yù)定的數(shù)據(jù)作為偽 數(shù)據(jù)傳送給所述主機(jī)裝置。
10. 如權(quán)利要求6至9中任一項(xiàng)所述的數(shù)據(jù)存儲(chǔ)裝置,其中, 所述寫入控制單元在將從所述主機(jī)傳送的數(shù)據(jù)寫入到所述第二存儲(chǔ)部的情況下,存儲(chǔ)表示寫入該數(shù)據(jù)的最大地址的地址指針,所述讀入控制單元基于所述地址指針來(lái)判斷與作為所述讀出請(qǐng)求的對(duì) 象的數(shù)據(jù)相對(duì)應(yīng)的校正用數(shù)據(jù)是否被存儲(chǔ)在所述第二存儲(chǔ)部、或者作為所 述讀出請(qǐng)求的對(duì)象的數(shù)據(jù)的存儲(chǔ)目的地是否為所述第二存儲(chǔ)部的存儲(chǔ)有所 述校正用數(shù)據(jù)的區(qū)域。
11. 如權(quán)利要求6至9中任一項(xiàng)所述的數(shù)據(jù)存儲(chǔ)裝置,其中, 所述寫入控制單元在將從所述主機(jī)傳送的數(shù)據(jù)寫入到所述第二存儲(chǔ)部的情況下,存儲(chǔ)表示對(duì)該第二存儲(chǔ)部的各個(gè)地址是否寫入了數(shù)據(jù)的預(yù)定的 表,所述讀入控制單元基于所述表來(lái)判斷與作為所述讀出請(qǐng)求的對(duì)象的數(shù) 據(jù)相對(duì)應(yīng)的校正用數(shù)據(jù)是否被存儲(chǔ)在所述第二存儲(chǔ)部、或者作為所述讀出 請(qǐng)求的對(duì)象的數(shù)據(jù)的存儲(chǔ)目的地是否為所述第二存儲(chǔ)部的存儲(chǔ)有所述校正 用數(shù)據(jù)的區(qū)域。
12. 如權(quán)利要1至11中任一項(xiàng)所述的數(shù)據(jù)存儲(chǔ)裝置,其中, 包括以下單元,該單元不管所述第一存儲(chǔ)部的存儲(chǔ)區(qū)域是否有剩余,都響應(yīng)于預(yù)定的設(shè)定操作而禁止所述寫入控制單元向所述第二存儲(chǔ)部寫入 通常的數(shù)據(jù)。
13. 如權(quán)利要求1至12中任一項(xiàng)所述的數(shù)據(jù)存儲(chǔ)裝置,其中, 所述第一存儲(chǔ)部和所述第二存儲(chǔ)部具有相同的存儲(chǔ)容量。
14. 如權(quán)利要求1至13中任一項(xiàng)所述的數(shù)據(jù)存儲(chǔ)裝置,其中, 所述數(shù)據(jù)從所述主機(jī)裝置經(jīng)由USB接口被傳送。
15. 如權(quán)利要求1至14中任一項(xiàng)所述的數(shù)據(jù)存儲(chǔ)裝置,其中, 所述第一存儲(chǔ)部以及所述第二存儲(chǔ)部是非易失性半導(dǎo)體存儲(chǔ)器。
16. 如權(quán)利要求15所述的數(shù)據(jù)存儲(chǔ)裝置,其中 所述非易失性半導(dǎo)體存儲(chǔ)器是閃存。
17. —種由數(shù)據(jù)存儲(chǔ)裝置存儲(chǔ)從主機(jī)裝置傳送的數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)方 法,其中,所述數(shù)據(jù)存儲(chǔ)裝置包括第一存儲(chǔ)部和第二存儲(chǔ)部,所述第一存 儲(chǔ)部和所述第二存儲(chǔ)部具有預(yù)定的存儲(chǔ)區(qū)域,所述數(shù)據(jù)存儲(chǔ)方法的特征在 于,監(jiān)視所述第一存儲(chǔ)部的使用區(qū)域,當(dāng)從所述主機(jī)裝置傳送了所述數(shù)據(jù)時(shí),如果所述監(jiān)視的結(jié)果是判斷出 所述第一存儲(chǔ)部的存儲(chǔ)區(qū)域有剩余,則將該數(shù)據(jù)寫入所述第一存儲(chǔ)部,并 將用于校正該數(shù)據(jù)的校正用數(shù)據(jù)寫入所述第二存儲(chǔ)部,如果所述監(jiān)視的結(jié)果是判斷出所述第一存儲(chǔ)部的存儲(chǔ)區(qū)域沒有剩余, 則擦除所述第二存儲(chǔ)部中已存儲(chǔ)的所述校正用數(shù)據(jù),并將該數(shù)據(jù)寫入該第 二存儲(chǔ)部。
全文摘要
數(shù)據(jù)存儲(chǔ)裝置在進(jìn)行通常動(dòng)作時(shí)向第一閃存中寫入數(shù)據(jù),并向第二閃存中寫入用于校正寫入第一閃存中的數(shù)據(jù)的ECC數(shù)據(jù)。另外,當(dāng)?shù)谝婚W存的剩余容量變?yōu)榱銜r(shí),數(shù)據(jù)存儲(chǔ)裝置擦除第二閃存中已寫入的ECC數(shù)據(jù),并向該第二閃存中寫入通常的數(shù)據(jù)。由此,在使用多個(gè)存儲(chǔ)區(qū)域存儲(chǔ)數(shù)據(jù)時(shí),能夠提高數(shù)據(jù)的可靠性,同時(shí)還能夠有效地利用原有的存儲(chǔ)容量。
文檔編號(hào)G06F3/06GK101449234SQ20078001814
公開日2009年6月3日 申請(qǐng)日期2007年5月14日 優(yōu)先權(quán)日2006年5月18日
發(fā)明者河合昇, 荒川忠史 申請(qǐng)人:巴比祿股份有限公司