国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種降低讀延時(shí)的方法及裝置的制作方法

      文檔序號(hào):6367562閱讀:205來(lái)源:國(guó)知局
      專(zhuān)利名稱(chēng):一種降低讀延時(shí)的方法及裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,涉及一種降低讀延時(shí)的方法及裝置。
      背景技術(shù)
      存儲(chǔ)領(lǐng)域常用的數(shù)據(jù)載體是機(jī)械硬盤(pán)和固態(tài)硬盤(pán)(SSD),由于SSD具有高性能、低延遲、低功耗、環(huán)境適應(yīng)性強(qiáng)等優(yōu)點(diǎn),同時(shí)成本也在不斷降低,因此目前應(yīng)用的越來(lái)越普遍。SSD 一般由NAND flash芯片組成,它存在固有的比特跳變、讀干擾等問(wèn)題,會(huì)導(dǎo)致讀出的數(shù)據(jù)出錯(cuò),同時(shí)還有擦寫(xiě)次數(shù)的限制,因此在NAND flash芯片的結(jié)構(gòu)和SSD設(shè)計(jì)上都采取了保證可靠性的措施。例如NAND flash內(nèi)部包括一個(gè)或多個(gè)晶片,每個(gè)晶片包括多個(gè)平面,每個(gè)平面包括多個(gè)塊,每個(gè)塊包括多個(gè)頁(yè)。其中頁(yè)是讀、寫(xiě)數(shù)據(jù)的基本單元,包括多個(gè)字節(jié)(例如2048+64字節(jié)),其中每512字節(jié)+16字節(jié)為一個(gè)檢錯(cuò)/糾錯(cuò)單元,512字節(jié)用來(lái)保存數(shù)據(jù),16字節(jié)用來(lái)保存檢錯(cuò)/糾錯(cuò)碼。當(dāng)讀取數(shù)據(jù)時(shí),每個(gè)512+16字節(jié)的單元會(huì)進(jìn)行校驗(yàn),如果出錯(cuò)的位數(shù)較少可以被糾正,如果出錯(cuò)的位數(shù)太多無(wú)法糾正就需要利用上層的糾錯(cuò)機(jī)制例如RAID算法來(lái)解決。NAND flash的塊是基本的擦除單元,每個(gè)塊包括多個(gè)頁(yè)(例如64個(gè))。為了修改flash中已經(jīng)寫(xiě)入的數(shù)據(jù),必須先將該數(shù)據(jù)所在的塊擦除,然后才能寫(xiě)入新數(shù)據(jù),這是flash的基本特征。SSD在工作過(guò)程中需要不斷執(zhí)行擦除或?qū)懖僮鳎鴉lash芯片在執(zhí)行這兩種操作的時(shí)候處于忙狀態(tài)(通過(guò)芯片的硬件管腳R/B#來(lái)表示,高電平表示準(zhǔn)備好,低電平表示忙),不能再響應(yīng)讀操作,只有等待擦除或?qū)懖僮魍瓿珊蟛拍芾^續(xù)執(zhí)行讀操作。由于NANDflash芯片的塊擦除一般需要3ms,寫(xiě)操作一般需要900us,而讀操作一般只需要50us,這樣擦除和寫(xiě)操作會(huì)阻塞讀操作,造成較大的讀延時(shí),影響存儲(chǔ)系統(tǒng)的性能,在擦除或?qū)懖僮魈貏e頻繁的場(chǎng)景下這種現(xiàn)象更為明顯。

      發(fā)明內(nèi)容
      本發(fā)明為解決現(xiàn)有的基于flash芯片的存儲(chǔ)設(shè)備在讀、寫(xiě)、擦除同時(shí)存在的情況下,讀操作被擦除和寫(xiě)操作阻塞,從而造成較大讀延時(shí)的問(wèn)題,提供了一種降低讀延時(shí)的方法及裝置。本發(fā)明的實(shí)施例提供了一種降低讀延時(shí)的方法,包括當(dāng)讀命令對(duì)應(yīng)的一個(gè)或多個(gè)flash芯片處于忙狀態(tài)時(shí),將處于忙狀態(tài)的一個(gè)或多個(gè)flash上讀取到的數(shù)據(jù)置為錯(cuò)誤的數(shù)據(jù);根據(jù)所述錯(cuò)誤的數(shù)據(jù)以及從其它flash芯片上讀取的數(shù)據(jù)獲得重建后的正確數(shù)據(jù),并將所述正確數(shù)據(jù)上報(bào)。本發(fā)明的實(shí)施例還提供了一種降低讀延時(shí)的裝置,包括 置錯(cuò)單元,用于當(dāng)讀命令對(duì)應(yīng)的一個(gè)或多個(gè)flash芯片處于忙狀態(tài)時(shí),將處于忙狀態(tài)的一個(gè)或多個(gè)flash上讀取到的數(shù)據(jù)置為錯(cuò)誤的數(shù)據(jù);
      重建上報(bào)單元,用于根據(jù)所述錯(cuò)誤的數(shù)據(jù)以及從其它flash芯片上讀取的數(shù)據(jù)獲得重建后的正確數(shù)據(jù),并將所述正確數(shù)據(jù)上報(bào)。由上述本發(fā)明的實(shí)施例提供的技術(shù)方案可以看出,通過(guò)從flash芯片上讀取到的數(shù)據(jù)置為錯(cuò)誤的數(shù)據(jù),并根據(jù)錯(cuò)誤的數(shù)據(jù)以及從其它flash芯片上讀取的數(shù)據(jù)獲得重建后的正確數(shù)據(jù),使flash芯片處于忙狀態(tài)時(shí)能夠避免讀操作被擦除和寫(xiě)操作阻塞,從而有效減少延時(shí),提高了存儲(chǔ)系統(tǒng)的性能。


      為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明的實(shí)施例提供的結(jié)合具體硬件的SSD設(shè)備的結(jié)構(gòu)示意圖;圖2為本發(fā)明的實(shí)施例提供的SSD控制器的結(jié)構(gòu)示意圖;圖3為本發(fā)明的實(shí)施例提供的降低讀延時(shí)的方法的整體流程框圖;圖4為本發(fā)明的實(shí)施例提供的降低讀延時(shí)的方法的流程示意圖;圖5為本發(fā)明的實(shí)施例提供的基于RAID控制器的結(jié)合具體硬件的SSD設(shè)備的結(jié) 構(gòu)示意圖;圖6為本發(fā)明的實(shí)施例提供的基于RAID控制器的SSD控制器的結(jié)構(gòu)示意圖;圖7為本發(fā)明的實(shí)施例提供的降低讀延時(shí)的裝置的結(jié)構(gòu)示意圖。
      具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本實(shí)施例提供了一種降低讀延時(shí)的方法,包括當(dāng)讀命令對(duì)應(yīng)的一個(gè)或多個(gè)flash芯片處于忙狀態(tài)時(shí),將處于忙狀態(tài)的一個(gè)或多個(gè)flash上讀取到的數(shù)據(jù)置為錯(cuò)誤的數(shù)據(jù);根據(jù)所述錯(cuò)誤的數(shù)據(jù)以及從其它flash芯片上讀取的數(shù)據(jù)獲得重建后的正確數(shù)據(jù),并將所述正確數(shù)據(jù)上報(bào)。本實(shí)施例提供的技術(shù)方案主要應(yīng)用在由主機(jī)、SSD控制器以及多個(gè)通道的flash組成的SSD設(shè)備中,相應(yīng)的主機(jī)通過(guò)SSD控制器讀寫(xiě)flash中的數(shù)據(jù)。其中,SSD設(shè)備的硬件結(jié)構(gòu)包括一個(gè)服務(wù)器機(jī)框,在服務(wù)器機(jī)框中設(shè)有一塊底板,底板上安裝有CPU、內(nèi)存、南橋等芯片,用于對(duì)其它擴(kuò)展卡進(jìn)行控制,實(shí)現(xiàn)主機(jī)的功能;SSD控制器(對(duì)SSD內(nèi)部的flash進(jìn)行控制)也可采用芯片,如FPGA、ASIC等,通過(guò)對(duì)這個(gè)芯片進(jìn)行編程來(lái)完成接收主機(jī)的讀寫(xiě)請(qǐng)求,并對(duì)SSD設(shè)備中的flash芯片進(jìn)行各種訪(fǎng)問(wèn)及控制;SSD控制器對(duì)應(yīng)的芯片可以與各個(gè)flash都設(shè)置在一個(gè)PCB板上,通過(guò)PCB走線(xiàn)相連,最后呈現(xiàn)的形式是一個(gè)硬盤(pán)盒,通過(guò)SATA或SAS接口與底板相連,或者也可以將flash芯片和SSD控制器做成一個(gè)擴(kuò)展卡,通過(guò)PCIe接口與底板相連。一個(gè)結(jié)合具體硬件的SSD設(shè)備的結(jié)構(gòu)如圖I所示。其中的SSD控制器的結(jié)構(gòu)如圖2所示,包括主機(jī)接口、檢錯(cuò)/糾錯(cuò)模塊、收發(fā)模塊幾個(gè)部分。相應(yīng)的主機(jī)接口用來(lái)從主機(jī)接收各種命令及其對(duì)應(yīng)的地址、數(shù)據(jù),例如讀某個(gè)地址的數(shù)據(jù)或?qū)?shù)據(jù)寫(xiě)入某個(gè)地址等,目前常見(jiàn)的接口是SATA、SAS、PCIe ;收發(fā)模塊用來(lái)完成數(shù)據(jù)或命令的收發(fā);檢錯(cuò)/糾錯(cuò)模塊用于保證來(lái)自flash數(shù)據(jù)的正確性,然后將數(shù)據(jù)上報(bào)給主機(jī),主要完成兩個(gè)功能1、將每個(gè)flash通道的數(shù)據(jù)及其校驗(yàn)碼進(jìn)行檢錯(cuò)和糾錯(cuò),如果超出糾錯(cuò)能力則調(diào)用RAID算法恢復(fù)數(shù)據(jù),2、執(zhí)行RAID算法,當(dāng)某個(gè)通道的數(shù)據(jù)有錯(cuò)且無(wú)法糾正時(shí),利用其他通道的正確數(shù)據(jù)恢復(fù)該通道數(shù)據(jù);收發(fā)模塊用于接收來(lái)自多個(gè)通道的flash數(shù)據(jù)或狀態(tài),其中數(shù)據(jù)再轉(zhuǎn)發(fā)給檢錯(cuò)/糾錯(cuò)模塊而狀態(tài)一般不會(huì)返回主機(jī)(如果主機(jī)需要的話(huà)也會(huì)返回給主機(jī),例如SATA接口也可以查詢(xún)SSD的忙狀態(tài)),而是由收發(fā)模塊自己使用,或者將來(lái)自主機(jī)的命令轉(zhuǎn)換為flash可以識(shí)別的命令,或者將來(lái)自主機(jī)的數(shù)據(jù)寫(xiě)入多個(gè)通道的flash,同時(shí)還要滿(mǎn)足RAID算法對(duì)數(shù)據(jù)排列方式的要求(即條帶方式)。圖3所示的是本實(shí)施例提供的降低讀延時(shí)的方法的整體流程框圖,下面結(jié)合說(shuō)明書(shū)附圖對(duì)本實(shí)施例作詳細(xì)說(shuō)明,如圖4所示,該方法包括
      步驟41,當(dāng)讀命令對(duì)應(yīng)的一個(gè)或多個(gè)flash芯片處于忙狀態(tài)時(shí),將處于忙狀態(tài)的一個(gè)或多個(gè)flash上讀取到的數(shù)據(jù)置為錯(cuò)誤的數(shù)據(jù)。當(dāng)主機(jī)下發(fā)讀取flash芯片數(shù)據(jù)的讀命令時(shí),根據(jù)讀命令中包含的地址信息,確定該地址信息對(duì)應(yīng)的flash芯片,即對(duì)應(yīng)于哪些flash芯片組成的條帶。另外,還查詢(xún)上述地址信息對(duì)應(yīng)的flash芯片的當(dāng)前狀態(tài),即是否處于忙狀態(tài)。如果某個(gè)flash芯片的當(dāng)前狀態(tài)為空閑,則將讀取的該flash芯片的數(shù)據(jù)直接上報(bào)給SSD設(shè)備的檢錯(cuò)/糾錯(cuò)模塊;如果其中某個(gè)flash芯片處于忙狀態(tài),則將來(lái)自該flash芯片的數(shù)據(jù)進(jìn)行置錯(cuò)處理,使轉(zhuǎn)發(fā)給檢錯(cuò)/糾錯(cuò)模塊的數(shù)據(jù)不符合flash芯片內(nèi)部的校驗(yàn)規(guī)則。例如,假設(shè)校驗(yàn)規(guī)則為偶校驗(yàn),那么收發(fā)模塊構(gòu)造一個(gè)不滿(mǎn)足偶校驗(yàn)要求的數(shù)據(jù),并且讓檢錯(cuò)/糾錯(cuò)模塊能夠發(fā)現(xiàn)這個(gè)錯(cuò)誤,從而觸發(fā)該模塊執(zhí)行RAID算法來(lái)糾正這個(gè)通道flash芯片的錯(cuò)誤數(shù)據(jù)。其中,各通道flash芯片的忙/閑狀態(tài)可以通過(guò)軟件方式、硬件方式或者軟硬件結(jié)合的方式來(lái)實(shí)現(xiàn),具體為①、軟件方式NAND flash的內(nèi)部提供了一個(gè)狀態(tài)寄存器,通過(guò)芯片狀態(tài)讀取命令(read status)可以得到該寄存器的值,根據(jù)指定位的O、I狀態(tài)就能知道flash芯片的忙/閑狀態(tài)。當(dāng)主機(jī)下發(fā)讀數(shù)據(jù)的命令時(shí),需要將該命令對(duì)應(yīng)的所有flash芯片狀態(tài)都讀取一遍。②、硬件方式NAND flash芯片還提供了一個(gè)R/B#信號(hào),可以將它們都接入SSD控制器,通過(guò)查詢(xún)對(duì)應(yīng)信號(hào)的電平狀態(tài)就能知道flash芯片的忙/閑狀態(tài)。③、軟硬件結(jié)合方式R/B#信號(hào)是漏級(jí)開(kāi)路輸出,可以支持線(xiàn)與的連接方式,可以將同一個(gè)通道所有flash芯片的該信號(hào)連接起來(lái),然后接入控制器,這樣信號(hào)線(xiàn)總數(shù)會(huì)減少很多。SSD控制器通過(guò)檢測(cè)這個(gè)線(xiàn)與信號(hào)的電平可以知道是否某個(gè)通道有flash芯片處于忙狀態(tài),然后再通過(guò)read status命令來(lái)區(qū)分該通道下是哪一個(gè)flash芯片處于忙狀態(tài)。如果要讀取數(shù)據(jù)所在的flash芯片處于空閑狀態(tài),可以直接讀取數(shù)據(jù);如果所在的flash芯片處于忙狀態(tài),則讀取到的數(shù)據(jù)置為錯(cuò)誤的數(shù)據(jù)。并且,flash芯片的狀態(tài)查詢(xún)命令(read status)的發(fā)起不受芯片忙/閑狀態(tài)影響,如果這個(gè)狀態(tài)查詢(xún)命令是主機(jī)下發(fā)的,則當(dāng)收發(fā)模塊取得對(duì)應(yīng)通道上的flash芯片狀態(tài)之后,不經(jīng)過(guò)檢錯(cuò)/糾錯(cuò)模塊的處理而是直接上報(bào)給主機(jī),因?yàn)闋顟B(tài)信息沒(méi)有經(jīng)過(guò)RAID
      算法處理。
      另外,flash芯片內(nèi)部的校驗(yàn)規(guī)則還可以采用具有檢錯(cuò)和糾錯(cuò)能力的漢明碼,而且產(chǎn)生的錯(cuò)誤數(shù)據(jù)可以有很多選擇,可以在設(shè)計(jì)控制器的時(shí)候事先確定下來(lái)。這是因?yàn)閒lash芯片處于忙狀態(tài)時(shí)不能響應(yīng)讀數(shù)據(jù)的命令,該命令會(huì)被忽略,這樣SSD控制器讀到的數(shù)據(jù)是不確定的,可能通過(guò)檢錯(cuò)/糾錯(cuò)模塊的校驗(yàn),也可能通不過(guò),如果前一種情況發(fā)生就會(huì)把無(wú)效數(shù)據(jù)當(dāng)成正確數(shù)據(jù)上報(bào)了,所以為了確??煽啃员仨毴藶闃?gòu)造錯(cuò)誤數(shù)據(jù)。步驟42,根據(jù)所述錯(cuò)誤的數(shù)據(jù)以及從其它flash芯片上讀取的數(shù)據(jù)獲得重建后的正確數(shù)據(jù),并將所述正確數(shù)據(jù)上報(bào)。具體的,SSD設(shè)備的檢錯(cuò)/糾錯(cuò)模塊會(huì)將每個(gè)通道的數(shù)據(jù)分別做校驗(yàn),如果檢測(cè)到有錯(cuò)誤的數(shù)據(jù),則通過(guò)RAID算法糾正,否則直接上報(bào)給主機(jī)。當(dāng)檢錯(cuò)/糾錯(cuò)模塊檢測(cè)到從處于忙狀態(tài)的flash讀取的數(shù)據(jù)存在錯(cuò)誤時(shí),會(huì)通過(guò)相應(yīng)的RAID算法糾正,然后結(jié)合從其它通道得到的重建數(shù)據(jù)一起上報(bào)給主機(jī),以完成相應(yīng)的讀操作。檢錯(cuò)/糾錯(cuò)模塊在發(fā)現(xiàn)某個(gè)通道的數(shù)據(jù)出錯(cuò)并將其糾正之后,一般會(huì)做錯(cuò)誤統(tǒng)計(jì),當(dāng)超出某個(gè)門(mén)限時(shí)會(huì)上報(bào)給主機(jī),要求更換整個(gè)SSD (對(duì)于flash芯片無(wú)法單獨(dú)更換的場(chǎng)合,例如焊接在底板上)或者更換某個(gè)通道上的flash芯片(對(duì)于flash芯片可以單獨(dú)更換的場(chǎng)合,例如每個(gè)通道上的flash芯片組成一個(gè)可更換的模塊)。由于本實(shí)施例是將處于忙狀態(tài)的flash芯片的通道數(shù)據(jù)當(dāng)作錯(cuò)誤數(shù)據(jù)處理的,而該通道的flash芯片并未發(fā)生故障,因此需要區(qū)分這種情況避免誤判。可以在收發(fā)模塊中定義一個(gè)標(biāo)識(shí)位,缺省為0,每次當(dāng)該模塊有意構(gòu)造錯(cuò)誤數(shù)據(jù)上報(bào)給檢錯(cuò)/糾錯(cuò)模塊時(shí),標(biāo)識(shí)位設(shè)置為1,否則為0,于是檢錯(cuò)/糾錯(cuò)模塊可以根據(jù)這個(gè)標(biāo)識(shí)位來(lái)決定是否給錯(cuò)誤計(jì)數(shù)器增值。在重建數(shù)據(jù)的過(guò)程中,由于各通道flash芯片的擦除、寫(xiě)命令都是由收發(fā)模塊發(fā)出來(lái)的,而RAID算法的數(shù)據(jù)重建能力有限,例如RAID5只能糾正一個(gè)通道上的錯(cuò)誤,因此必須根據(jù)具體的RAID算法來(lái)限制任意時(shí)刻每個(gè)條帶上處于忙狀態(tài)的flash芯片的數(shù)量,這是由收發(fā)模塊完成的。它可以通過(guò)控制每次向各通道上flash芯片發(fā)出的擦除、寫(xiě)命令數(shù)量,并實(shí)時(shí)查詢(xún)各通道上flash芯片的忙/閑狀態(tài),來(lái)保證每個(gè)條帶上處于忙狀態(tài)的flash芯片數(shù)量不會(huì)超出RAID算法重建數(shù)據(jù)的能力。由于步驟42中糾正的是人為制造的錯(cuò)誤數(shù)據(jù),目的都是為了重建數(shù)據(jù),可以將來(lái)源不同的問(wèn)題統(tǒng)一處理,相應(yīng)的問(wèn)題可以是flash芯片的數(shù)據(jù)錯(cuò)誤,也可以是flash芯片處于忙狀態(tài),有利于模塊的重用。本實(shí)施例還提供了一種通過(guò)RAID控制器降低讀延時(shí)的方法,為了進(jìn)一步提高容錯(cuò)能力同時(shí)提高性能,SSD控制器通常支持多個(gè)通道,每個(gè)通道上連接多個(gè)flash芯片,而且按照RAID模式工作。另外,多個(gè)flash芯片按照RAID算法將數(shù)據(jù)和校驗(yàn)碼按條帶方式保存,當(dāng)某個(gè)flash芯片不可用時(shí)可以通過(guò)條帶上其他flash芯片讀取的數(shù)據(jù)恢復(fù)出來(lái),從而提高了可靠性。RAID有多種類(lèi)別,SSD中常用的是RAID4和RAID5,其中RAID4是將校驗(yàn)碼固定保存在某個(gè)通道的所有flash芯片上,而RAID5是將校驗(yàn)碼逐一保存在多個(gè)通道的所有flash芯片上。與上述SSD控制器的情形類(lèi)似,RAID控制器也是一種常用的提高存儲(chǔ)系統(tǒng)性能和可靠性的器件,它與主機(jī)一般通過(guò)PCI或PCIe接口相連,然后通過(guò)多個(gè)通道(例如8個(gè))與硬盤(pán)相連(可以是機(jī)械硬盤(pán)或SSD),每個(gè)通道采用SAS或FC接口并且只能連接一個(gè)硬盤(pán),如圖5所示。一個(gè)具體的應(yīng)用場(chǎng)景示例如圖6所示,機(jī)架服務(wù)器當(dāng)中其中一個(gè)擴(kuò)展卡為RAID卡,RAID卡中有RAID控制器,與多個(gè)SSD硬盤(pán)盒(包括SSD控制器及多個(gè)Flash)中的SSD控制器相連;多個(gè)擴(kuò)展卡仍然通過(guò)PCIe接口與底板相連。RAID控制器按照RAID算法將數(shù)據(jù)以條帶方式保存在多個(gè)SSD上,當(dāng)主機(jī)通過(guò)PCI/PCIe接口向RAID控制器下發(fā)讀數(shù)據(jù)請(qǐng)求時(shí),如果某個(gè)SSD正在執(zhí)行NAND flash的擦除及寫(xiě)操作并且不具備相應(yīng)的數(shù)據(jù)重建功能,那么在RAID控制器和SSD之間必須按照上述實(shí)施例中SSD控制器和NAND flash芯片那種方式來(lái)重建數(shù)據(jù),即RAID控制器通過(guò)命令查詢(xún)各通道SSD的忙/閑狀態(tài),對(duì)處于忙狀態(tài)的SSD,RAID控制器內(nèi)部的數(shù)據(jù)收發(fā)模塊將該通道的數(shù)據(jù)置為錯(cuò)誤,結(jié)合其它通道得到的有效數(shù)據(jù)一起上報(bào)給RAI D控制器內(nèi)部的檢錯(cuò)/糾錯(cuò)模塊,RAID控制器內(nèi)部的檢錯(cuò)/糾錯(cuò)模塊先對(duì)各通道的數(shù)據(jù)進(jìn)行檢測(cè),發(fā)現(xiàn)上述忙狀態(tài)的通道數(shù)據(jù)有誤,則按照RAID算法通過(guò)其他通道的數(shù)據(jù)重建該錯(cuò)誤數(shù)據(jù),然后通過(guò)PCI/PCIe接口統(tǒng)一上報(bào)給主機(jī)。
      采用本實(shí)施例提供的技術(shù)方案,通過(guò)從flash芯片上讀取到的數(shù)據(jù)置為錯(cuò)誤的數(shù)據(jù),并根據(jù)錯(cuò)誤的數(shù)據(jù)以及從其它flash芯片上讀取的數(shù)據(jù)獲得重建后的正確數(shù)據(jù),使flash芯片處于忙狀態(tài)時(shí)能夠避免讀操作被擦除和寫(xiě)操作阻塞,從而有效減少延時(shí),提高了存儲(chǔ)系統(tǒng)的性能。需要說(shuō)明的是,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述各方法實(shí)施例中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,相應(yīng)的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤(pán)或光盤(pán)等。本發(fā)明的實(shí)施例還提供了一種降低讀延時(shí)的裝置,如圖7所示,包括置錯(cuò)單元71,用于當(dāng)讀命令對(duì)應(yīng)的一個(gè)或多個(gè)flash芯片處于忙狀態(tài)時(shí),將處于忙狀態(tài)的一個(gè)或多個(gè)flash上讀取到的數(shù)據(jù)置為錯(cuò)誤的數(shù)據(jù);重建上報(bào)單元72,用于根據(jù)所述錯(cuò)誤的數(shù)據(jù)以及從其它flash芯片上讀取的數(shù)據(jù)獲得重建后的正確數(shù)據(jù),并將所述正確數(shù)據(jù)上報(bào)。本實(shí)施例可以對(duì)SSD控制器(如FPGA或類(lèi)似的硬件芯片)或RAID控制器進(jìn)行相應(yīng)的編程,制得能夠完成相應(yīng)的功能的單元模塊。其中,降低讀延時(shí)的裝置的各單元模塊可設(shè)置在如圖2所示的SSD控制器中,也可以設(shè)置在如圖5所示的RAID控制器中??蛇x的,在置錯(cuò)單元71中可以包括判斷子單元,用于通過(guò)檢測(cè)每個(gè)flash芯片的忙/閑信號(hào)電平、通過(guò)下發(fā)讀狀態(tài)命令、或者同時(shí)檢測(cè)每個(gè)flash芯片的忙/閑信號(hào)電平及下發(fā)讀狀態(tài)命令確定flash芯片是否處于忙狀態(tài)。可選的,在置錯(cuò)單元71中,讀取flash芯片數(shù)據(jù)的讀命令通過(guò)SATA、SAS或PCIe接口接收??蛇x的,在置錯(cuò)單元71中還可以包括讀取子單元,用于根據(jù)讀命令報(bào)文攜帶的地址字段與SSD內(nèi)部的flash芯片地址的對(duì)應(yīng)關(guān)系確定所述讀命令與flash芯片的對(duì)應(yīng)關(guān)系??蛇x的,在置錯(cuò)單元71中,置為錯(cuò)誤的數(shù)據(jù)包括將讀取的數(shù)據(jù)置為任何不符合flash數(shù)據(jù)校驗(yàn)規(guī)則的數(shù)據(jù)組合??蛇x的,在重建上報(bào)單元72中可以包括重建子單元,用于SSD控制器接收到發(fā)送來(lái)的錯(cuò)誤的數(shù)據(jù)并檢測(cè)到數(shù)據(jù)錯(cuò)誤后,啟動(dòng)糾錯(cuò)功能,利用多組flash存儲(chǔ)單元之間存在的數(shù)據(jù)約束關(guān)系,獲得重建后的正確數(shù)據(jù)??蛇x的,該裝置還可以包括錯(cuò)誤計(jì)數(shù)單元,用于當(dāng)檢測(cè)到讀數(shù)據(jù)錯(cuò)誤并且標(biāo)識(shí)位是0時(shí),錯(cuò)誤計(jì)數(shù)器加I ;當(dāng)檢測(cè)到讀數(shù)據(jù)錯(cuò)誤并且標(biāo)識(shí)位是I時(shí),錯(cuò)誤計(jì)數(shù)器不變。采用本實(shí)施例的方案,通過(guò)從flash芯片上讀取到的數(shù)據(jù)置為錯(cuò)誤的數(shù)據(jù),并根據(jù)錯(cuò)誤的數(shù)據(jù)以及從其它flash芯片上讀取的數(shù)據(jù)獲得重建后的正確數(shù)據(jù),使flash芯片處于忙狀態(tài)時(shí)能夠避免讀操作被擦除和寫(xiě)操作阻塞,從而有效減少延時(shí),提高了存儲(chǔ)系統(tǒng)的性能。上述降低讀延時(shí)的裝置中包含的各單元的處理功能的具體實(shí)施方式
      在之前的方法實(shí)施方式中已經(jīng)描述,在此不再重復(fù)描述。本發(fā)明方案可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序單元。一般地,程序單元包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類(lèi)型的例程、程序、對(duì) 象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本發(fā)明方案,在這些分布式計(jì)算環(huán)境中,由通過(guò)通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序單元可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述得比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開(kāi)的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來(lái)實(shí)現(xiàn)。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專(zhuān)業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)、裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以?xún)蓚€(gè)或兩個(gè)以上單元集成在一個(gè)單元中。所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM, Random Access Memory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。通過(guò)以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來(lái)實(shí)現(xiàn),通用硬件包括通用集成電路、通用CPU、通用存儲(chǔ)器、通用元器件等,當(dāng)然也可以通過(guò)專(zhuān)用硬件包括專(zhuān)用集成電路、專(zhuān)用CPU、專(zhuān)用存儲(chǔ)器、專(zhuān)用元器件等來(lái)實(shí)現(xiàn),但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,如計(jì)算機(jī)的軟盤(pán),硬盤(pán)或光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例的方法。以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
      ,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換, 都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
      權(quán)利要求
      1.一種降低讀延時(shí)的方法,其特征在于,包括 當(dāng)讀命令對(duì)應(yīng)的一個(gè)或多個(gè)flash芯片處于忙狀態(tài)時(shí),將處于忙狀態(tài)的一個(gè)或多個(gè)flash上讀取到的數(shù)據(jù)置為錯(cuò)誤的數(shù)據(jù); 根據(jù)所述錯(cuò)誤的數(shù)據(jù)以及從其它fla sh芯片上讀取的數(shù)據(jù)獲得重建后的正確數(shù)據(jù),并將所述正確數(shù)據(jù)上報(bào)。
      2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述判斷flash芯片處于忙狀態(tài)包括 通過(guò)檢測(cè)每個(gè)flash芯片的忙/閑信號(hào)電平、通過(guò)下發(fā)讀狀態(tài)命令、或者同時(shí)檢測(cè)每個(gè)flash芯片的忙/閑信號(hào)電平及下發(fā)讀狀態(tài)命令確定flash芯片是否處于忙狀態(tài)。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述讀取flash芯片數(shù)據(jù)的讀命令通過(guò)SATA, SAS 或 PCIe 接口接收。
      4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,該方法還包括根據(jù)讀命令報(bào)文攜帶的地址字段與SSD內(nèi)部的flash芯片地址的對(duì)應(yīng)關(guān)系確定所述讀命令與flash芯片的對(duì)應(yīng)關(guān)系。
      5.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述置為錯(cuò)誤的數(shù)據(jù)包括將讀取的數(shù)據(jù)置為任何不符合flash數(shù)據(jù)校驗(yàn)規(guī)則的數(shù)據(jù)組合。
      6.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述獲得重建后的正確數(shù)據(jù)包括 SSD控制器接收到發(fā)送來(lái)的錯(cuò)誤的數(shù)據(jù)并檢測(cè)到數(shù)據(jù)錯(cuò)誤后,啟動(dòng)糾錯(cuò)功能,利用多組flash存儲(chǔ)單元之間存在的數(shù)據(jù)約束關(guān)系,獲得重建后的正確數(shù)據(jù)。
      7.根據(jù)權(quán)利要求I所述的控制方法,其特征在于,該方法還包括 當(dāng)檢測(cè)到讀數(shù)據(jù)錯(cuò)誤并且標(biāo)識(shí)位是O時(shí),錯(cuò)誤計(jì)數(shù)器加I ;當(dāng)檢測(cè)到讀數(shù)據(jù)錯(cuò)誤并且標(biāo)識(shí)位是I時(shí),錯(cuò)誤計(jì)數(shù)器不變。
      8.一種降低讀延時(shí)的裝置,其特征在于,包括 置錯(cuò)單元,用于當(dāng)讀命令對(duì)應(yīng)的一個(gè)或多個(gè)flash芯片處于忙狀態(tài)時(shí),將處于忙狀態(tài)的一個(gè)或多個(gè)flash上讀取到的數(shù)據(jù)置為錯(cuò)誤的數(shù)據(jù); 重建上報(bào)單元,用于根據(jù)所述錯(cuò)誤的數(shù)據(jù)以及從其它flash芯片上讀取的數(shù)據(jù)獲得重建后的正確數(shù)據(jù),并將所述正確數(shù)據(jù)上報(bào)。
      9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,在置錯(cuò)單元中包括 判斷子單元,用于通過(guò)檢測(cè)每個(gè)flash芯片的忙/閑信號(hào)電平、通過(guò)下發(fā)讀狀態(tài)命令、或者同時(shí)檢測(cè)每個(gè)flash芯片的忙/閑信號(hào)電平及下發(fā)讀狀態(tài)命令確定flash芯片是否處于忙狀態(tài)。
      10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,在置錯(cuò)單元中,所述讀取flash芯片數(shù)據(jù)的讀命令通過(guò)SATA、SAS或PCIe接口接收。
      11.根據(jù)權(quán)利要求9或10所述的裝置,其特征在于,在置錯(cuò)單元中還包括 讀取子單元,用于根據(jù)讀命令報(bào)文攜帶的地址字段與SSD內(nèi)部的flash芯片地址的對(duì)應(yīng)關(guān)系確定所述讀命令與flash芯片的對(duì)應(yīng)關(guān)系。
      12.根據(jù)權(quán)利要求8所述的裝置,其特征在于,在置錯(cuò)單元中,所述置為錯(cuò)誤的數(shù)據(jù)包括將讀取的數(shù)據(jù)置為任何不符合flash數(shù)據(jù)校驗(yàn)規(guī)則的數(shù)據(jù)組合。
      13.根據(jù)權(quán)利要求8所述的裝置,其特征在于,在重建上報(bào)單元中包括 重建子單元,用于SSD控制器接收到發(fā)送來(lái)的錯(cuò)誤的數(shù)據(jù)并檢測(cè)到數(shù)據(jù)錯(cuò)誤后,啟動(dòng)糾錯(cuò)功能,利用多組flash存儲(chǔ)單元之間存在的數(shù)據(jù)約束關(guān)系,獲得重建后的正確數(shù)據(jù)。
      14.根據(jù)權(quán)利要求8所述的裝置,其特征在于,該裝置還包括 錯(cuò)誤計(jì)數(shù)單元,用于當(dāng)檢測(cè)到讀數(shù)據(jù)錯(cuò)誤并且標(biāo)識(shí)位是O時(shí),錯(cuò)誤計(jì)數(shù)器加I ;當(dāng)檢測(cè)到讀數(shù)據(jù)錯(cuò)誤并且標(biāo)識(shí)位是I時(shí),錯(cuò)誤計(jì)數(shù)器不變。
      全文摘要
      一種降低讀延時(shí)的方法及裝置,相應(yīng)的方法包括當(dāng)讀命令對(duì)應(yīng)的一個(gè)或多個(gè)flash芯片處于忙狀態(tài)時(shí),將處于忙狀態(tài)的一個(gè)或多個(gè)flash上讀取到的數(shù)據(jù)置為錯(cuò)誤的數(shù)據(jù);根據(jù)所述錯(cuò)誤的數(shù)據(jù)以及從其它flash芯片上讀取的數(shù)據(jù)獲得重建后的正確數(shù)據(jù),并將所述正確數(shù)據(jù)上報(bào)。本發(fā)明通過(guò)從flash芯片上讀取到的數(shù)據(jù)置為錯(cuò)誤的數(shù)據(jù),并根據(jù)錯(cuò)誤的數(shù)據(jù)以及從其它flash芯片上讀取的數(shù)據(jù)獲得重建后的正確數(shù)據(jù),使flash芯片處于忙狀態(tài)時(shí)能夠避免讀操作被擦除和寫(xiě)操作阻塞,從而有效減少延時(shí),提高了存儲(chǔ)系統(tǒng)的性能。
      文檔編號(hào)G06F3/06GK102662608SQ20121009590
      公開(kāi)日2012年9月12日 申請(qǐng)日期2012年3月30日 優(yōu)先權(quán)日2012年3月30日
      發(fā)明者李延松 申請(qǐng)人:華為技術(shù)有限公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1