欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

存儲設備的制作方法

文檔序號:6762636閱讀:248來源:國知局
專利名稱:存儲設備的制作方法
技術領域
本申請涉及存儲設備,比如硬盤驅動器裝置或者閃存卡,尤其涉及有效應用于將存儲介質比如非易失性存儲器的存儲信息預讀到緩沖存儲器中的技術的發(fā)明。
背景技術
在包括控制器、緩沖存儲器和存儲介質等的存儲設備中,當來自主設備的讀請求到達時,控制器在讀請求到達前從存儲介質讀取希望稍后使用的數(shù)據(jù),將其存儲到緩沖存儲器中。這種技術稱為預讀技術。例如,在專利公開說明書1中描述的硬盤驅動器(HDD)裝置具有磁盤高速緩存,預先將所要的數(shù)據(jù)緩存到所述磁盤高速緩存中,以盡量減小對磁盤的訪問緩慢的問題。硬盤控制器預讀存儲在磁盤中的部分數(shù)據(jù),并將其存儲到磁盤高速緩存中。
專利公開說明書1日本待審專利公開說明書No.2001-125829(第24到27段)。

發(fā)明內容
從存儲介質比如磁盤和閃存讀出的數(shù)據(jù)容量不能沿著高速主機接口。因此,有必要在來自主設備的讀請求期間減少從存儲介質的讀操作。為此,預先從存儲介質預讀數(shù)據(jù)以將其存儲到緩沖存儲器中是有效的辦法。但是,要預讀的數(shù)據(jù)是由存儲設備的控制器決定的,用戶不能夠使用預讀功能。簡言之,如果控制器根據(jù)預定的算法決定要預讀的數(shù)據(jù),就不容易將預計要頻繁使用的數(shù)據(jù)預先預讀到緩沖存儲器中,從而難以最大化通過預讀達到的縮短訪問時間的效果。
本發(fā)明的一個目的是提供一種存儲設備,其能夠靈活地決定要預讀的數(shù)據(jù)。
本發(fā)明的另一個目的是提供一種存儲設備,其能夠容易地最大化通過預讀縮短訪問時間的效果。
前述目的以及其它目的和本發(fā)明的新特征將通過閱讀下面的說明和附圖而更為清楚。
下面簡要描述在本專利申請中公開的發(fā)明的代表性實施例所獲得的效果[1]本發(fā)明的存儲設備包括非易失性存儲器(2);比非易失性存儲器具有更高的訪問速度的緩沖存儲器(4);以及控制電路(5)。所述控制電路建立一個預讀數(shù)據(jù)管理表(Ti),該表將外部輸入的預讀命令指定的預讀數(shù)據(jù)的邏輯地址與存儲預讀數(shù)據(jù)的緩沖存儲器地址關聯(lián)起來。另外,控制電路從非易失性存儲器讀出所述命令指定的數(shù)據(jù),并將其作為預讀數(shù)據(jù)存儲到所述緩沖存儲器中。當外部輸入的讀命令指定的邏輯地址與所述預讀數(shù)據(jù)管理表所關聯(lián)的邏輯地址匹配時,控制電路就從所述緩沖存儲器輸出相應的預讀數(shù)據(jù)。
根據(jù)上述手段,可以從存儲設備的外部由預讀命令指定預讀數(shù)據(jù)。因此,可以靈活地決定要預讀的數(shù)據(jù),以將通過預讀縮短訪問時間的效果最大化。存儲設備的讀出性能取決于作為存儲介質的非易失性存儲器本身的讀出性能。因此,收到來自外部的讀取請求時,通過增加來自緩沖存儲器的預讀數(shù)據(jù)的輸出,而不是從存儲介質讀出,可以提高系統(tǒng)性能。只要緩沖存儲器的容量允許,可以用多個預讀命令指定多塊預讀數(shù)據(jù)。
作為本發(fā)明的一個實施例,預讀命令用邏輯地址指定預讀數(shù)據(jù)。以主引導記錄或者FAT(文件分配表)為例,由于存在用戶容易跟蹤邏輯地址的情況,用邏輯地址指定的好處是可以直接指定預讀數(shù)據(jù)。
預讀命令可以用文件名指定預讀數(shù)據(jù)。通常,存在這樣的情況存儲設備的用戶無法跟蹤OS(操作系統(tǒng))管理的閃存2的邏輯地址。用戶能夠方便地用文件名跟蹤數(shù)據(jù),從而能夠獲得對數(shù)據(jù)預讀的令人滿意的可操作性。
控制電路可以在執(zhí)行預讀命令期間傳輸預讀數(shù)據(jù)。同樣,在預先建立預讀數(shù)據(jù)管理表后,可以將預讀數(shù)據(jù)以預定的定時傳輸?shù)骄彌_存儲器。借此,控制電路能夠在預讀命令的執(zhí)行結束后的命令等待狀態(tài)將預讀數(shù)據(jù)傳輸?shù)骄彌_存儲器。預讀數(shù)據(jù)傳輸處理防止發(fā)生這樣的情況,比如讀取訪問延遲,以及由于預讀數(shù)據(jù)傳輸處理而造成的其它操作。
作為本發(fā)明的一個實施例,預讀數(shù)據(jù)管理表可以包括用于保持預讀數(shù)據(jù)(30)的起始邏輯地址、存儲預讀數(shù)據(jù)的區(qū)域的起始存儲器地址(31)以及預讀數(shù)據(jù)的數(shù)據(jù)計數(shù)器(data count)(32)的區(qū)域。
預讀數(shù)據(jù)管理表可以包括一個指示相應的預讀數(shù)據(jù)的有效性的標記(33)。
預讀數(shù)據(jù)管理表可以包括一個用于保存包含預讀數(shù)據(jù)的文件名的區(qū)域(35)。例如,在FAT文件系統(tǒng)中,當一個文件被碎片化時,由于一片文件數(shù)據(jù)由多個割裂的預讀數(shù)據(jù)管理表管理,用于保存文件名的區(qū)域對于使用指定的文件名進行訪問的響應處理是有用的。也就是說,相應的預讀數(shù)據(jù)管理表能夠用文件名進行搜索,從而進一步提高對緩沖存儲器上的所要的預讀數(shù)據(jù)的訪問速度。
所述預讀數(shù)據(jù)管理表可以包括一個用于保存預讀數(shù)據(jù)訪問計數(shù)器(access count)的區(qū)域(34)。當在緩沖存儲器中沒有未使用的用于存儲預讀數(shù)據(jù)的區(qū)域時,卡控制器5基于保存在所述預讀數(shù)據(jù)管理表中的訪問計數(shù)值搜索不被頻繁訪問的緩沖存儲器地址,并能夠將被定位到的緩沖存儲器地址的一個區(qū)域分配到一個保存預讀數(shù)據(jù)的新區(qū)域。這確保了被頻繁訪問的預讀數(shù)據(jù)的有效使用。
控制電路可以將預讀數(shù)據(jù)管理表按照預定的定時保存到所述非易失性存儲器的一個預讀數(shù)據(jù)管理表保存區(qū)。當預讀數(shù)據(jù)管理表正在緩沖存儲器或者控制電路內的存儲器上使用時,由于操作預讀數(shù)據(jù)的預讀數(shù)據(jù)管理表被保存了,即使由于斷電或者類似事故導致丟失的緩沖存儲器上的預讀數(shù)據(jù)也能在以后恢復。例如,響應于電源的接通,控制電路從非易失性存儲器讀出一個預讀數(shù)據(jù)管理表,并從所述非易失性存儲器將所述預讀數(shù)據(jù)管理表所定位的預讀數(shù)據(jù)傳輸給所述緩沖存儲器。
根據(jù)本發(fā)明的另一方面,一種存儲設備包括非易失性存儲器;比該非易失性存儲器具有更高的訪問速度的緩沖存儲器;以及控制電路。響應于從外部輸入的讀命令,控制電路查閱將預讀數(shù)據(jù)的邏輯地址與用于存儲預讀數(shù)據(jù)的緩沖存儲器地址關聯(lián)起來的可重寫預讀數(shù)據(jù)管理表。然后,控制電路判斷緩沖存儲器是否保存有該命令所指定的數(shù)據(jù),如果緩沖存儲器保存有所述數(shù)據(jù),就將從緩沖存儲器讀出的數(shù)據(jù)輸出到外部;否則將從非易失性存儲器讀出的數(shù)據(jù)輸出到外部。
根據(jù)上述手段,通過使用可重寫預讀數(shù)據(jù)管理表,可以靈活地決定要預讀的數(shù)據(jù),以最大化通過預讀縮短訪問時間的效果。響應于讀命令,增加從緩沖存儲器輸出的預讀數(shù)據(jù),而不是從非易失性存儲器讀出,這樣改善了系統(tǒng)的性能。
作為本發(fā)明的一個實施例,所述控制電路響應于電源的接通而從非易失性存儲器讀出預讀數(shù)據(jù)管理表,并從非易失性存儲器將該預讀數(shù)據(jù)管理表定位的預讀數(shù)據(jù)傳輸給緩沖存儲器。借此,在電源斷開之前已經(jīng)被操作的預讀數(shù)據(jù)容易在后來在緩沖存儲器上恢復。
根據(jù)本發(fā)明的另一方面,一種存儲設備包括非易失性存儲器;比該非易失性存儲器具有更高的訪問速度的緩沖存儲器;以及控制電路。響應于從外部輸入的預讀命令,控制電路建立將該命令指定的預讀數(shù)據(jù)的邏輯地址與用于存儲預讀數(shù)據(jù)的緩沖存儲器地址關聯(lián)起來的預讀數(shù)據(jù)管理表。另外,控制電路從非易失性存儲器讀出該命令指定的數(shù)據(jù),將其存儲到所述緩沖存儲器中作為預讀數(shù)據(jù),從而存儲在該緩沖存儲器中的預讀數(shù)據(jù)能夠被輸出到外部。這樣,可以用預讀命令從存儲設備外部指定預讀數(shù)據(jù)。相應地,能夠靈活地決定要被預讀的數(shù)據(jù),從而能夠最大化通過預讀而縮短訪問時間的效果。
作為本發(fā)明的一個實施例,當緩沖存儲器中沒有用于存儲預讀數(shù)據(jù)的未使用區(qū)域時,所述控制電路執(zhí)行如下處理。也就是,控制電路允許在下面兩種情況之間作出選擇允許和禁止蓋寫已經(jīng)保存了預讀數(shù)據(jù)的區(qū)域。選擇前者便于動態(tài)交換預讀數(shù)據(jù)。選擇后者使得易于確保被頻繁訪問的預讀數(shù)據(jù)的有效使用。當選擇后者時,當沒有未使用的區(qū)域時,會向預讀命令發(fā)出者返回一個出錯響應,以警告用戶。前述的允許蓋寫的情況可以是允許完全蓋寫已經(jīng)保存了預讀數(shù)據(jù)的區(qū)域,或者是允許部分蓋寫訪問不頻繁的區(qū)域。允許部分蓋寫便于同時滿足預讀數(shù)據(jù)的動態(tài)互換性和被頻繁訪問的預讀數(shù)據(jù)的有效使用性。
響應于從外部輸入的讀命令,控制電路查閱所述預讀數(shù)據(jù)管理表以判斷所述緩沖存儲器是否保存有該命令指定的數(shù)據(jù)。如果緩沖存儲器保存有該數(shù)據(jù),控制電路就將從緩沖存儲器讀出的數(shù)據(jù)輸出到外部;否則,它將從非易失性存儲器讀出的數(shù)據(jù)輸出到外部。
響應于從外部輸入的寫命令,控制電路查閱所述預讀數(shù)據(jù)管理表,以判斷緩沖存儲器是否保存有該命令指定的寫地址的數(shù)據(jù)。如果緩沖存儲器保存有該數(shù)據(jù),控制電路就用寫數(shù)據(jù)連同所述非易失性存儲器的數(shù)據(jù)更新緩沖存儲器的數(shù)據(jù);否則其用寫數(shù)據(jù)更新非易失性存儲器的數(shù)據(jù)。


圖1的方框圖示出了一種閃存卡,是本發(fā)明的存儲設備的一個例子;圖2的示意示了緩沖存儲器的地址映射的細節(jié);圖3的示意示了閃存的存儲區(qū)的結構和預讀數(shù)據(jù)管理表的細節(jié);圖4的示意示了預讀命令的主要指定;圖5的流程示了預讀命令響應處理的控制流程;圖6的流程示了主機指定地址獲取處理(S2)的具體例子;
圖7的示意示了在緩沖存儲器中沒有用于存儲預讀數(shù)據(jù)的未使用區(qū)域時的處理模式(預讀數(shù)據(jù)更新模式);圖8的流程示了讀命令響應處理的控制流程;圖9的流程示了寫命令響應處理的控制流程。
具體實施例方式
<閃存卡>
圖1圖示了一種閃存卡,是本發(fā)明的存儲設備的一個例子。圖示的閃存卡1包括裝在安裝板上的下列部件可電擦除和可編程快閃存儲器2(是非易失性存儲器),包括DRAM(動態(tài)隨機存取存儲器)、SRAM(靜態(tài)隨機存取存儲器)或者類似存儲器的緩沖存儲器4,以及執(zhí)行存儲器控制和外部接口控制的卡控制器(控制電路)5。該閃存卡1由主計算機6作為一個文件存儲設備而加以控制。也就是說,當訪問文件時,主計算機6查閱形成在閃存卡1中的FAT(文件分配表),獲取構成該文件的扇區(qū)的邏輯地址,使用這些邏輯地址向閃存卡1發(fā)出訪問命令。響應于該訪問命令,閃存卡1控制對快閃存儲器2和緩沖存儲器4的訪問。
卡控制器5根據(jù)主計算機給出的讀命令、寫命令、預讀命令或者類似命令控制對緩沖存儲器4和快閃存儲器2的訪問。讀命令指定讀扇區(qū)的起始邏輯地址以及要讀取數(shù)據(jù)的扇區(qū)的數(shù)量。寫命令指定寫扇區(qū)的起始邏輯地址以及要寫入數(shù)據(jù)的扇區(qū)的數(shù)量。預讀命令創(chuàng)建一個將要預讀的數(shù)據(jù)的邏輯地址與存儲要預讀的數(shù)據(jù)的緩沖存儲器地址關聯(lián)起來的預讀數(shù)據(jù)管理表,并從快閃存儲器2讀取要預讀的數(shù)據(jù),將其存儲到緩沖存儲器4中作為預讀數(shù)據(jù)。后面將詳細描述各命令的處理。
緩沖存儲器4的一個存儲區(qū)包括一個臨時保存主計算機6提供的寫數(shù)據(jù)的區(qū)域(寫數(shù)據(jù)保存區(qū)10)、一個臨時保存從快閃存儲器2讀出并輸出到主計算機6的數(shù)據(jù)的區(qū)域(讀數(shù)據(jù)保存區(qū)11)、一個工作區(qū)12以及一個響應于預讀命令將從快閃存儲器2讀出的數(shù)據(jù)保存為預讀數(shù)據(jù)的區(qū)域(預讀數(shù)據(jù)保存區(qū)13)。圖2圖示了緩沖存儲器4的地址映射的細節(jié)。預讀數(shù)據(jù)總是置于緩沖存儲器中,占據(jù)該緩沖存儲器的一個存儲區(qū)。因此,從通常用于寫和讀的緩沖區(qū)10和11單獨管理緩沖存儲器。
快閃存儲器2的存儲區(qū)包括一個數(shù)據(jù)部分14、一個內部信息存儲部分15和一個預讀數(shù)據(jù)管理表存儲部分,這些部分中的每一個都有一個管理部分。內部信息存儲部分15存儲可由主計算機6的OS(操作系統(tǒng))訪問的存儲卡1的ID、RD(根目錄)、FAT(文件分配表)等。預讀數(shù)據(jù)管理表存儲部分16存儲響應于預讀命令創(chuàng)建的預讀數(shù)據(jù)管理表。
快閃存儲器2具有一個存儲器陣列ARY(圖中未示出),其中以矩陣形式排布了大量可電擦除的、可編程的非易失性存儲單元晶體管。存儲單元晶體管(也稱為快閃存儲單元)未被圖示,具有多層柵極結構,多層柵極結構包括形成在半導體板或者阱上的源極和漏極,通過溝道氧化物膜形成在源極和漏極之間的溝道區(qū)中的浮動柵,以及通過層間絕緣膜疊在該浮動柵上的控制柵極。控制柵極連接到相應的字線,漏極連接到相應的位線、源極連接到源極線。當電子注入到浮動柵中時,存儲單元晶體管的閾電壓升高。另一方面,當電子從浮動柵中抽離時,閾電壓降低。存儲單元晶體管根據(jù)閾電壓相對于用于讀取數(shù)據(jù)的字線電壓(控制柵極被施加的電壓)的升降來存儲信息。盡管沒有特別的限制,本說明書將存儲單元晶體管的閾電壓低的狀態(tài)稱為擦除狀態(tài),將閾電壓高的狀態(tài)稱為寫狀態(tài)。
在圖1中,卡控制器5包括一個主機接口電路20、一個作為操作控制裝置的微處理器(MPU)21、一個閃存控制器22和一個緩存控制器23。閃存控制器22包括一個ECC電路(圖中未示出)。
所述MPU21包括一個CPU(中央處理器)25、一個程序存儲器(PGM)26和一個工作RAM(WRAM)27等,控制整個卡控制器5。所述程序存儲器26保存CPU25的操作程序等。
主機接口電路20根據(jù)預定的程序建立與主計算機6比如個人計算機或者工作站的接口,比如ATA(ATAttachment,高級技術配件)接口、IDE(集成電路設備)接口、SCSI(小型計算機系統(tǒng)接口)接口、MMC(MultiMediaCard,注冊商標)接口以及PCMCIA(個人計算機存儲器卡國際聯(lián)合會)接口。
緩存控制器23根據(jù)MPU21給出的訪問命令控制對緩沖存儲器4的訪問。
閃存控制器22根據(jù)MPU21給出的訪問命令控制在快閃存儲器上進行的讀操作、擦除操作以及寫操作。ECC電路(圖中未示出)根據(jù)MPU21給出的命令為要寫到快閃存儲器2上的數(shù)據(jù)產(chǎn)生糾錯碼,并將其添加到寫數(shù)據(jù)上。ECC電路還利用添加到讀數(shù)據(jù)上的糾錯碼對從快閃存儲器2讀出的數(shù)據(jù)進行檢錯、糾錯處理,在糾錯能力范圍內糾正錯誤,如果有錯誤的話。
圖3圖示了快閃存儲器2的存儲區(qū)的結構以及預讀管理表的細節(jié)。如圖所示,快閃存儲器2的存儲區(qū)(存儲器陣列)具有編號為0到4n+3的存儲扇區(qū),以及構成管理部分的從M0到Mn的n塊。每一個存儲扇區(qū)和每一個管理部分各具有一個物理地址,每個存儲扇區(qū)被分配一個邏輯地址。邏輯地址例如是一個文件的扇區(qū)號(文件扇區(qū)號)。在下面的說明中,存儲扇區(qū)地址將被簡單地稱為物理地址或者物理扇區(qū)地址。需要注意,邏輯地址是從外部指定的地址,物理地址是用于通過邏輯地址訪問內部的地址。存儲扇區(qū)對應于作為諸如HDD(硬盤驅動器)之類的存儲設備的一個重寫單元的512B(字節(jié))存儲扇區(qū)。塊的有效標記(valid flag)、代換標記(substitution flag)等存儲在所述管理區(qū)中。為每一個存儲扇區(qū)提供ECC碼。一個字線或者一類字線選擇信號選擇構成一個塊的非易失性存儲單元。這樣,擦除處理和寫處理以存儲單元為單位進行。例如,以字線為單位施加擦除處理和寫處理所需的高電壓。
存儲扇區(qū)4n到4n+3構成前述預讀數(shù)據(jù)管理表存儲部分16。該預讀數(shù)據(jù)管理表存儲部分16的每一個存儲扇區(qū)存儲多個預讀數(shù)據(jù)管理表Ti(T0、T1、T2……)以及ECC碼。由于在針對一個預讀命令執(zhí)行響應處理時就添加一個預讀數(shù)據(jù)管理表,因此可能存在多個預讀數(shù)據(jù)管理表。
一個預讀數(shù)據(jù)管理表Ti包括一個起始邏輯地址區(qū)30、一個起始存儲器地址區(qū)31、一個扇區(qū)號區(qū)32、一個有效標記區(qū)33、一個訪問計數(shù)區(qū)34以及一個文件名區(qū)35。起始邏輯地址區(qū)30存儲預讀數(shù)據(jù)的起始邏輯地址(邏輯扇區(qū)地址)。起始存儲器地址區(qū)31存儲在緩沖存儲器上保存預讀數(shù)據(jù)的區(qū)的起始存儲器地址。扇區(qū)號區(qū)32存儲預讀數(shù)據(jù)的扇區(qū)號。有效標記區(qū)33存儲指示預讀數(shù)據(jù)管理表是否有效的標記。訪問計數(shù)區(qū)34存儲由主計算機6對寫管理表管理的預讀數(shù)據(jù)訪問的次數(shù)。文件名區(qū)35保存預讀數(shù)據(jù)所屬的文件名。
預讀數(shù)據(jù)管理表可以在快閃存儲器2或者在緩沖存儲器4上進行管理。在在快閃存儲器2上管理的情況下,每一次創(chuàng)建或者刪除預讀數(shù)據(jù)管理表時,就執(zhí)行對預讀數(shù)據(jù)管理表16的擦除操作和寫操作。結果,處理變得緩慢。在在緩沖存儲器4上管理的情況下,它們被快速地創(chuàng)建或者刪除。但是,在斷電時,預讀數(shù)據(jù)管理表必須被保存到快閃存儲器2中。希望在接通電源時,從快閃存儲器2讀出預讀數(shù)據(jù)管理表,并從快閃存儲器將被讀出的預讀數(shù)據(jù)管理表定位的預讀數(shù)據(jù)傳輸?shù)骄彌_存儲器4。
<預讀命令響應處理>
圖4示出了預讀命令的主要指定。必須通過指定一個地址或者文件名來指定預讀數(shù)據(jù)。當用地址指定預讀數(shù)據(jù)時,存儲卡1的用戶用邏輯地址指定一個預讀數(shù)據(jù)區(qū)。當用文件名指定預讀數(shù)據(jù)時,用戶指定存儲預讀數(shù)據(jù)的文件名。如果文件名被規(guī)定為包含指示文件位置的絕對路徑名,則容易指定相同的文件名,便于文件搜索。
通常,存儲設備的用戶可能不能跟蹤OS管理的閃存卡上的邏輯地址。對于用戶來說,方便的是利用文件名跟蹤數(shù)據(jù)。因此,通過指定文件名,可以實現(xiàn)對預讀數(shù)據(jù)的令人滿意的可操作性??赡苡羞@樣的情況OS不能管理快閃存儲器的邏輯地址。即使在這樣的情況下,也能用文件名指定預讀數(shù)據(jù)。
當發(fā)出預讀命令時,或者在命令等待狀態(tài)下的后臺方式中已經(jīng)預先創(chuàng)建了預讀數(shù)據(jù)管理表之后,從快閃存儲器2將預讀數(shù)據(jù)存儲到緩沖存儲器4中。在命令等待狀態(tài)下存儲預讀數(shù)據(jù)可以防止發(fā)生下述情況由于預讀數(shù)據(jù)從快閃存儲器2到緩沖存儲器4的傳輸,讀取訪問或者別的操作被延遲。
圖5圖示了預讀命令響應處理的控制過程。收到主計算機6發(fā)出的預讀命令(S1)后,卡控制器獲得由命令以邏輯地址或者文件名指定的預讀數(shù)據(jù)物理地址(S2)?;陬A讀命令指定的預讀數(shù)據(jù)邏輯地址和對應于邏輯地址的物理地址等,創(chuàng)建預讀數(shù)據(jù)管理表(S3)。例如在緩沖存儲器4的工作區(qū)12中創(chuàng)建所述預讀數(shù)據(jù)管理表。判斷所創(chuàng)建的預讀數(shù)據(jù)管理表中所限定的預讀數(shù)據(jù)是否能被實際讀取(S4)。這樣做是為了檢測不存在指定的文件的情況,或者指定的邏輯地址沒有與快閃存儲器的塊相關聯(lián)的情況。如果不能讀取預讀數(shù)據(jù),則向主計算機6返回一個錯誤代碼。如果能夠讀取預讀數(shù)據(jù),則判斷能否接到下一個命令。否則,也就是,如果沒有別的訪問命令從主計算機6發(fā)出,則從快閃存儲器2讀出預讀數(shù)據(jù),并寫到緩沖存儲器4中(S6),在相應預讀數(shù)據(jù)管理表的有效標記區(qū)33中置有效標記(S7)。如果預讀數(shù)據(jù)的扇區(qū)數(shù)是兩個或者更多,則控制過程返回步驟S6和S7,對隨后的扇區(qū)重復同樣的處理(S8)。通過微處理器11的地址計算,可以相繼獲得預讀隨后的扇區(qū)數(shù)據(jù)所需的快閃存儲器預讀地址以及緩沖存儲器的預讀數(shù)據(jù)寫地址。當已經(jīng)預讀了在步驟S3創(chuàng)建的預讀數(shù)據(jù)管理表所限定的所有扇區(qū)數(shù)據(jù)時,由于接受當前的預讀命令而導致的繁忙狀態(tài)被釋放(S9),從而能夠接收和執(zhí)行下一個命令。
不用說,步驟S5中的判斷處理可以取消,以采用一個在步驟S6之后自動繼續(xù)處理的處理過程。作為該情況(判斷是否執(zhí)行步驟S5的處理)下的處理切換的方法,卡控制器5本身可以具有一個設置切換功能,或者可以為預讀命令提供用于進行切換的控制信息。
當從主計算機提供了訪問命令時,檢查預讀數(shù)據(jù)管理表的有效標記33。結果,僅搜索設置了有效標記33的預讀數(shù)據(jù)管理表,以獲得要使用的預讀數(shù)據(jù)的位置。
圖6圖示了前述主機指定的地址獲取處理(S2)的一個實施例。圖中所示的處理是在下述情況下的響應處理預讀數(shù)據(jù)是由主計算機6提供的預讀命令用文件名指定的。從預讀命令獲得保存預讀數(shù)據(jù)的文件名(S21)。下一步,讀快閃存儲器2的主引導記錄區(qū)(MBR)的分區(qū)ID,以識別要使用的文件系統(tǒng)(S22)。判斷是否能識別要使用的文件系統(tǒng)(S23)。如果能夠識別,則用快閃存儲器2上的FAT等分析文件系統(tǒng),獲得保存文件的邏輯地址。即使文件是碎片化的,也以同樣的方式獲取保存文件的邏輯地址。在確認相關數(shù)據(jù)存在于文件系統(tǒng)上之后(S25的“是”),計算快閃存儲器的存儲地址。在快閃存儲器2的邏輯地址和物理地址之間的關聯(lián)可變的系統(tǒng)中,通過訪問地址轉換表來計算快閃存儲器2的物理地址,該地址轉換表定義邏輯地址和物理地址之間的關系,被保存在快閃存儲器2的預定區(qū)域中。
用戶不能在文件系統(tǒng)上管理邏輯地址。因此,用文件名指定使得用戶能夠管理預讀數(shù)據(jù)。
當文件碎片化時,由于預讀數(shù)據(jù)管理表具有圖3所示的結構,需要為每一個碎片部分創(chuàng)建一個預讀數(shù)據(jù)管理表,在碎片部分中,邏輯地址是鄰接的。即使同一個數(shù)據(jù)文件存在多個預讀數(shù)據(jù)管理表,在響應訪問命令的過程中也不會導致對搜索處理的干擾,因為每一個預讀數(shù)據(jù)管理表在其文件名區(qū)35中具有一個文件名。
由于可能在快閃存儲器2上存在多個相同的文件名,要保存在預讀數(shù)據(jù)管理表中的文件名最好也包含絕對路徑名?;蛘?,由于在文件系統(tǒng)中即使相同的文件名也具有不同的邏輯地址,要保存在預讀數(shù)據(jù)管理表中的文件名可以包含一個邏輯地址。
圖7圖示了緩沖存儲器4沒有存儲預讀數(shù)據(jù)的未使用區(qū)域時的處理模式(預讀數(shù)據(jù)更新模式)。
緩沖存儲器4沒有存儲預讀數(shù)據(jù)的未使用區(qū)域時的處理模式包括允許蓋寫已經(jīng)保存有預讀數(shù)據(jù)的區(qū)域,禁止蓋寫已經(jīng)保存有預讀數(shù)據(jù)的區(qū)域。
采用蓋寫禁止模式可以確保被頻繁訪問的預讀數(shù)據(jù)的有效使用。當采用蓋寫禁止模式時,如果沒有未使用區(qū)域,則向預讀命令發(fā)出者返回一個出錯響應,以警告用戶。蓋寫允許模式的采用可以允許動態(tài)交換預讀數(shù)據(jù)。
蓋寫允許模式包括完全允許蓋寫已保存有預讀數(shù)據(jù)的區(qū)域,或者部分允許蓋寫被訪問得不頻繁的區(qū)域。在完全允許蓋寫的情況下,卡控制器5允許按照FIFO(先進先出)的順序相繼蓋寫預讀數(shù)據(jù)保存區(qū)13中的預讀數(shù)據(jù)較舊的數(shù)據(jù)較早被蓋寫。
在基于訪問頻率部分允許蓋寫的情況下,可以基于預讀數(shù)據(jù)管理表的訪問計數(shù)區(qū)34的值判斷一個給定區(qū)域是否是不被頻繁訪問的區(qū)域。例如,如果將訪問計數(shù)值1作為判斷標準,則搜索訪問計數(shù)值為1的預讀數(shù)據(jù)管理表,如果被找到,則可以使用在該預讀數(shù)據(jù)管理表中使用的緩沖存儲器地址。同樣,可以使用搜索任意數(shù)據(jù)的預讀數(shù)據(jù)管理表得到的具有最小訪問計數(shù)值的預讀數(shù)據(jù)管理表中管理的緩沖存儲器地址。
前述部分允許方便地滿足了預讀數(shù)據(jù)的動態(tài)互換性以及被頻繁訪問的預讀數(shù)據(jù)的可用性。
可以以控制數(shù)據(jù)或者模式信號的形式在卡控制器5中設置前述預讀數(shù)據(jù)更新模式?;蛘?,在每一次,一個預讀命令可以指定一種預讀數(shù)據(jù)更新模式。
<讀命令響應處理>
圖8圖示了讀命令響應處理的控制流程。收到主計算機6發(fā)出的讀命令后(S30),卡控制器5判斷該讀命令中指定的邏輯地址相對應的預讀數(shù)據(jù)管理表是否存在(S31)。如果對于所有指定的邏輯地址都不存在預讀數(shù)據(jù)管理表,卡控制器就計算對應于一個用于讀出的邏輯地址的快閃存儲器物理扇區(qū)地址(S32)。然后,卡控制器5從該物理扇區(qū)地址讀出數(shù)據(jù),將其傳送到緩沖存儲器的讀出數(shù)據(jù)保存區(qū)(S33),并將傳送到該讀出數(shù)據(jù)保存區(qū)的數(shù)據(jù)輸出到主計算機6(S34)。
在步驟S31,當判斷出對于指定的邏輯地址存在預讀數(shù)據(jù)管理表時,判斷是否所有的數(shù)據(jù)都已被預讀(S35)。簡言之,判斷在該讀命令中指定的所有邏輯地址是否與預讀數(shù)據(jù)管理表所關聯(lián)的邏輯地址匹配。如果判斷出部分預讀數(shù)據(jù)不存在,則計算不存在預讀數(shù)據(jù)的邏輯地址對應的快閃存儲器物理扇區(qū)地址(S36),從所述物理扇區(qū)地址讀出數(shù)據(jù)并傳送到緩沖存儲器4的讀出數(shù)據(jù)保存區(qū)(S33)。對于存在部分預讀數(shù)據(jù)的邏輯地址,將相應預讀數(shù)據(jù)管理表的訪問計數(shù)值增一(S37)。在步驟S33中傳送到讀出數(shù)據(jù)保存區(qū)的數(shù)據(jù)和預讀數(shù)據(jù)保存區(qū)13中剩余的預讀數(shù)據(jù)被輸出到主計算機6(S34)。如果所有的邏輯地址都存在預讀數(shù)據(jù),則將對應于邏輯地址的預讀數(shù)據(jù)管理表的訪問計數(shù)值增一(S37),并將預讀數(shù)據(jù)保存區(qū)13中相應的預讀數(shù)據(jù)輸出到主計算機6(S34)。
在圖8的處理中,當預讀數(shù)據(jù)未完成時,在被傳輸?shù)街饔嬎銠C6之前,缺少的數(shù)據(jù)被從快閃存儲器2傳輸?shù)骄彌_存儲器4。在從快閃存儲器2將缺少的數(shù)據(jù)讀到緩沖存儲器4之前,可以將預讀數(shù)據(jù)傳送到主計算機6。
<寫命令響應處理>
圖9圖示了寫命令響應處理的控制流程。收到從主計算機6發(fā)出的寫命令后(S40),卡控制器5將主計算機6提供的寫數(shù)據(jù)臨時存儲到寫數(shù)據(jù)保存區(qū)10中(S41)??ù鎯ζ?計算寫命令中指定的邏輯地址對應的快閃存儲器2物理扇區(qū)地址(S42)。然后,它向快閃存儲器2發(fā)出寫命令,指導向快閃存儲器2的寫動作(S43)。與快閃存儲器2上的寫操作同時,卡控制器5判斷是否存在關于寫數(shù)據(jù)的預讀數(shù)據(jù)管理表(S44)。如果寫數(shù)據(jù)中涉及的有效預讀數(shù)據(jù)存在,則由寫數(shù)據(jù)在緩沖存儲器4上更新預讀數(shù)據(jù)(S47),更新預讀數(shù)據(jù)管理表的內容(S48)。例如,將訪問計數(shù)值增一。在步驟S48的處理結束后,或者如果步驟S44的處理的結果是沒有相應的預讀數(shù)據(jù),則卡控制器5等待向快閃存儲器的寫動作結束。然后,其釋放由所述寫命令設置的繁忙標記(S46)。這樣,處理結束。
當更新預讀數(shù)據(jù)時,緩沖存儲器上預讀數(shù)據(jù)保存區(qū)中的數(shù)據(jù)必須與快閃存儲器上的數(shù)據(jù)同時更新。因此,盡管無論何時都需要在寫請求期間監(jiān)視地址,性能也不會受大的影響,因為對緩沖存儲器4的更新比向快閃存儲器進行存儲要快得多。
<保存預讀數(shù)據(jù)管理表>
當正在非易失性存儲器比如緩沖存儲器4上的工作區(qū)12上使用預讀數(shù)據(jù)管理表時,卡存儲器5將預讀數(shù)據(jù)管理表按照預定的定時保存到快閃存儲器2的數(shù)據(jù)管理表保存區(qū)。所述預定定時指斷電時間或者在預定時間段后的命令等待狀態(tài)。通過保存操作預讀數(shù)據(jù)的預讀數(shù)據(jù)管理表,即使由于斷電或者類似事故導致緩沖存儲器4上的預讀數(shù)據(jù)丟失,數(shù)據(jù)隨后也能恢復。響應于電源的接通,卡控制器5從快閃存儲器2讀預讀數(shù)據(jù)管理表,從快閃存儲器2將預讀數(shù)據(jù)管理表定位的預讀數(shù)據(jù)傳輸?shù)骄彌_存儲器4。
從上面的描述可以看到,通過閃存卡1可以獲得下述效果[1]主計算機6能夠通過預讀命令為閃存卡1指定預讀數(shù)據(jù)。因此,可以靈活地確定要預讀的數(shù)據(jù),從而最大化通過預讀縮短訪問時間的效果。閃存卡1的讀取性能取決于作為存儲介質的快閃存儲器2本身的讀取性能。這樣,收到來自主計算機6的讀請求時,通過增加來自緩沖存儲器4的預讀數(shù)據(jù)的輸出而不是從快閃存儲器2讀取,可以改善系統(tǒng)性能。
預讀命令可以用任何邏輯地址和文件名指定預讀數(shù)據(jù)。例如,預讀命令有一個邏輯地址指定字段和文件名指定字段。以主引導記錄或者FAT(文件分配表)為代表,由于存在用戶容易跟蹤邏輯地址的情況,用邏輯地址指定比較好,因為可以直接指定預讀數(shù)據(jù)。
存在閃存卡的用戶不能跟蹤OS管理的快閃存儲器2上的邏輯地址的情況。用戶可以方便地利用文件名跟蹤數(shù)據(jù),從而獲得令人滿意的對預讀的數(shù)據(jù)的可操作性。
卡控制器5不僅在執(zhí)行預讀命令期間,而且在預先創(chuàng)建預讀數(shù)據(jù)管理表之后的預定時刻,將預讀數(shù)據(jù)傳輸?shù)骄彌_存儲器4。從而,卡控制器5能夠在預讀命令的執(zhí)行終止后的命令等待狀態(tài)將預讀數(shù)據(jù)傳輸?shù)骄彌_存儲器4。預讀處理防止由于預讀處理而使讀取訪問和其他操作延遲,從而導致數(shù)據(jù)處理效率下降。
預讀數(shù)據(jù)管理表具有用于保存含預讀數(shù)據(jù)的文件名的區(qū)域,以及用于保存預讀數(shù)據(jù)的起始邏輯地址、存儲預讀數(shù)據(jù)的區(qū)域的起始存儲器地址以及預讀數(shù)據(jù)的數(shù)據(jù)計數(shù)器的區(qū)域。由于預讀數(shù)據(jù)管理表的這種結構,在文件系統(tǒng)中,當一個文件碎片化時,一片文件數(shù)據(jù)由多個分離的預讀數(shù)據(jù)管理表管理。因此,在讀取訪問等的響應處理中,可以用文件名搜索相應的預讀數(shù)據(jù)管理表,從而進一步提高緩沖存儲器上對所需的預讀數(shù)據(jù)的訪問速度。
預讀數(shù)據(jù)管理表具有用于保存主計算機6對預讀數(shù)據(jù)的訪問次數(shù)的區(qū)域34。因此,當緩沖存儲器4中沒有用于存儲預讀數(shù)據(jù)的未使用的區(qū)域時,卡控制器5基于保存在預讀數(shù)據(jù)管理表中的訪問計數(shù)值搜索不被頻繁訪問的緩沖存儲器地址,能夠將定位到的緩沖存儲器地址的一個區(qū)域分配到一個新的用于保存預讀數(shù)據(jù)的區(qū)域。這確保了被頻繁訪問的預讀數(shù)據(jù)的有效使用。
卡控制器5按照預定的定時將預讀數(shù)據(jù)管理表保存到快閃存儲器2的預讀數(shù)據(jù)管理表保存區(qū)。從而,當預讀數(shù)據(jù)管理表正在緩沖存儲器4或者工作RAM26上被使用時,由于保存了操作預讀數(shù)據(jù)的預讀數(shù)據(jù)管理表,即使由于斷電等事故而丟失的緩沖存儲器上的預讀數(shù)據(jù)也能在以后恢復。
盡管上面結合優(yōu)選實施例詳細描述了本發(fā)明,本發(fā)明不限于這些實施例。不用說,本發(fā)明可以以各種方式加以修改,而不脫離其實質和范圍。
例如,文件系統(tǒng)可以是NTFS或者其他文件系統(tǒng),盡管在上面的描述中使用的是FAT系統(tǒng)。盡管在上面的說明中使用非易失性存儲器作為快閃存儲器,但也可以使用其他半導體存儲器,比如鐵電存儲器。另外,非易失性存儲器可以是記錄盤比如硬盤,而不限于半導體存儲器。本發(fā)明可應用于硬盤驅動器而不限于存儲卡比如閃存卡。在這種情況下,存儲設備可以固定地置于一個安裝系統(tǒng)中,而不限于可移除的設備。
快閃存儲器不限于多層柵極結構,可應用分離柵極(split gate)結構,其中,串聯(lián)形成一個選擇MOS晶體管和一個存儲MOS晶體管,其間不設置擴散層。同樣,類似于氮化硅膜,可以應用這樣的存儲單元結構其中電荷被局部保存在阱區(qū)(trap area)中。半導體非易失性存儲器可以在一個存儲單元中存儲2個比特或者更多的信息,也可以在一個存儲單元中存儲1比特信息。
本發(fā)明也應用于具有控制電路比如卡控制器的存儲卡,該卡控制器不包括主接口電路比如IDE,但是是標準化的,將其功能留給主計算機。
取決于文件系統(tǒng)的配置,在預讀命令中指定的預讀數(shù)據(jù)邏輯地址可以基本上與非易失性存儲器的物理地址匹配。
下面簡要說明在本申請中公開的本發(fā)明的代表實施例的效果。
可以從存儲設備的外部用預讀命令指定預讀數(shù)據(jù)。因此,能夠靈活地決定要預讀的數(shù)據(jù),以最大化通過預讀縮短訪問時間的效果。在來自外部的讀請求期間,從緩沖存儲器輸出要預讀的數(shù)據(jù)比從存儲設備讀出數(shù)據(jù)更為頻繁。結果,可以提高使用該存儲設備的系統(tǒng)的數(shù)據(jù)處理性能。
權利要求
1.一種存儲設備,包括非易失性存儲器;比該非易失性存儲器具有更高的訪問速度的緩沖存儲器;以及控制電路(5),其中,所述控制電路建立一個預讀數(shù)據(jù)管理表,該表將外部輸入的預讀命令指定的預讀數(shù)據(jù)的邏輯地址與存儲預讀數(shù)據(jù)的緩沖存儲器地址關聯(lián)起來,該控制電路從非易失性存儲器讀出所述命令指定的數(shù)據(jù),并將其作為預讀數(shù)據(jù)存儲到所述緩沖存儲器中,當外部輸入的讀命令指定的邏輯地址與所述預讀數(shù)據(jù)管理表所關聯(lián)的邏輯地址匹配時,控制電路從所述緩沖存儲器輸出相應的預讀數(shù)據(jù)。
2.如權利要求1所述的存儲設備,其中,所述預讀命令用邏輯地址指定預讀數(shù)據(jù)。
3.如權利要求1所述的存儲設備,其中,所述預讀命令用文件名指定預讀數(shù)據(jù)。
4.如權利要求1所述的存儲設備,其中,所述控制電路在執(zhí)行預讀命令期間將預讀數(shù)據(jù)傳輸?shù)骄彌_存儲器。
5.如權利要求1所述的存儲設備,其中,所述控制電路在將預讀數(shù)據(jù)傳輸?shù)骄彌_存儲器之前創(chuàng)建預讀數(shù)據(jù)管理表。
6.如權利要求5所述的存儲設備,其中,在預讀命令的執(zhí)行終止后的命令等待狀態(tài)中,所述控制電路將預讀數(shù)據(jù)傳輸?shù)骄彌_存儲器。
7.如權利要求1所述的存儲設備,其中,所述預讀數(shù)據(jù)管理表包括用于存儲預讀數(shù)據(jù)起始邏輯地址、存儲預讀數(shù)據(jù)的區(qū)域的起始存儲器地址以及預讀數(shù)據(jù)的數(shù)據(jù)計數(shù)值的區(qū)域。
8.如權利要求6所述的存儲設備,其中,所述預讀數(shù)據(jù)管理表包括一個用于保存指示相應預讀數(shù)據(jù)有效性的標記的區(qū)域。
9.如權利要求3所述的存儲設備,其中,所述預讀數(shù)據(jù)管理表包括一個用于保存含預讀數(shù)據(jù)的文件名的區(qū)域。
10.如權利要求1所述的存儲設備,其中,所述預讀數(shù)據(jù)管理表包括一個用于保存預讀數(shù)據(jù)的訪問計數(shù)值的區(qū)域。
11.如權利要求10所述的存儲設備,其中,當緩沖存儲器中不存在用于存儲預讀數(shù)據(jù)的未使用的區(qū)域時,所述控制電路基于保存在所述預讀數(shù)據(jù)管理表中的訪問計數(shù)值搜索一個不被頻繁訪問的緩沖存儲器,并將所定位到的緩沖存儲器地址的一個區(qū)域分配到一個用于存儲預讀數(shù)據(jù)的新區(qū)域。
12.如權利要求1所述的存儲設備,其中,所述控制電路按照預定的定時將預讀數(shù)據(jù)管理表保存到所述非易失性存儲器的預讀數(shù)據(jù)管理表保存區(qū)中。
13.如權利要求12所述的存儲設備,其中,響應于電源的接通,所述控制電路從所述非易失性存儲器讀出一個預讀數(shù)據(jù)管理表,并將該預讀數(shù)據(jù)管理表所定位的預讀數(shù)據(jù)從所述非易失性存儲器傳輸?shù)剿鼍彌_存儲器。
14.一種存儲設備,包括非易失性存儲器;比該非易失性存儲器具有更高的訪問速度的緩沖存儲器;以及控制電路,其中,響應于從外部輸入的讀命令,所述控制電路查閱將預讀數(shù)據(jù)的邏輯地址與用于存儲預讀數(shù)據(jù)的緩沖存儲器地址關聯(lián)起來的可重寫預讀數(shù)據(jù)管理表,判斷緩沖存儲器是否保存有該命令所指定的數(shù)據(jù),如果緩沖存儲器保存有所述數(shù)據(jù),就將從緩沖存儲器讀出的數(shù)據(jù)輸出到外部,否則將從非易失性存儲器讀出的數(shù)據(jù)輸出到外部。
15.如權利要求14所述的存儲設備,其中,所述控制電路響應于電源的接通而從非易失性存儲器讀出預讀數(shù)據(jù)管理表,并從非易失性存儲器將該預讀數(shù)據(jù)管理表定位的預讀數(shù)據(jù)傳輸給緩沖存儲器。
16.一種存儲設備,包括非易失性存儲器;比該非易失性存儲器具有更高的訪問速度的緩沖存儲器;以及控制電路,其中,響應于從外部輸入的預讀命令,該控制電路建立將該命令指定的預讀數(shù)據(jù)的邏輯地址與用于存儲預讀數(shù)據(jù)的緩沖存儲器地址關聯(lián)起來的預讀數(shù)據(jù)管理表,從非易失性存儲器讀出該命令指定的數(shù)據(jù),將其存儲到所述緩沖存儲器中作為預讀數(shù)據(jù),從而存儲在該緩沖存儲器中的預讀數(shù)據(jù)能夠被輸出到外部。
17.如權利要求16所述的存儲設備,其中當緩沖存儲器中沒有用于存儲預讀數(shù)據(jù)的未使用區(qū)域時,所述控制電路允許在下面兩種情況之間作出選擇允許和禁止蓋寫已經(jīng)保存了預讀數(shù)據(jù)的區(qū)域。
18.如權利要求17所述的存儲設備,其中,前述的允許蓋寫是完全允許蓋寫已經(jīng)保存了預讀數(shù)據(jù)的區(qū)域,或者是部分允許蓋寫不被頻繁訪問的區(qū)域。
19.如權利要求16所述的存儲設備,其中,響應于從外部輸入的讀命令,所述控制電路查閱所述預讀數(shù)據(jù)管理表以判斷所述緩沖存儲器是否保存有該命令指定的數(shù)據(jù),如果緩沖存儲器保存有該數(shù)據(jù),控制電路就將從緩沖存儲器讀出的數(shù)據(jù)輸出到外部,否則控制電路將從非易失性存儲器讀出的數(shù)據(jù)輸出到外部。
20.如權利要求16或19所述的存儲設備,其中,響應于從外部輸入的寫命令,控制電路查閱所述預讀數(shù)據(jù)管理表,以判斷緩沖存儲器是否保存有該命令指定的寫地址的數(shù)據(jù),如果緩沖存儲器保存有該數(shù)據(jù),控制電路就用寫數(shù)據(jù)連同所述非易失性存儲器的數(shù)據(jù)更新緩沖存儲器的數(shù)據(jù),否則其用寫數(shù)據(jù)更新非易失性存儲器的數(shù)據(jù)。
全文摘要
本申請公開了一種存儲設備,其能夠靈活地確定要預讀的數(shù)據(jù)。該存儲設備包括非易失性存儲器;比該非易失性存儲器具有更高的訪問速度的緩沖存儲器;以及控制電路。所述控制電路建立一個預讀數(shù)據(jù)管理表,該表將外部輸入的預讀命令指定的預讀數(shù)據(jù)的邏輯地址與存儲預讀數(shù)據(jù)的緩沖存儲器地址關聯(lián)起來,該控制電路從非易失性存儲器讀出所述命令指定的數(shù)據(jù),并將其作為預讀數(shù)據(jù)存儲到所述緩沖存儲器中。當外部輸入的讀命令指定的邏輯地址與所述預讀數(shù)據(jù)管理表所關聯(lián)的邏輯地址匹配時,控制電路從所述緩沖存儲器輸出相應的預讀數(shù)據(jù)。
文檔編號G11B20/14GK1538284SQ20041003482
公開日2004年10月20日 申請日期2004年4月14日 優(yōu)先權日2003年4月14日
發(fā)明者原郁夫, 鹽田茂雅, 后藤啟之, 澀谷洋文, 之, 文, 雅 申請人:株式會社瑞薩科技
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
且末县| 康保县| 丹寨县| 买车| 温州市| 林芝县| 巴中市| 韩城市| 巴中市| 武邑县| 望奎县| 昭通市| 苗栗市| 荣昌县| 屏南县| 惠州市| 岳阳市| 梨树县| 临澧县| 河曲县| 湖州市| 遵化市| 灵台县| 孝感市| 河源市| 张家川| 峡江县| 伊宁县| 江城| 富阳市| 琼海市| 呼伦贝尔市| 白朗县| 视频| 客服| 陵水| 博罗县| 诸城市| 巫溪县| 鹿邑县| 通海县|