提供硬件中的數(shù)據(jù)幀段的選擇性合并的高性能系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本公開內(nèi)容涉及用于計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)儲(chǔ)存系統(tǒng)。更具體來說,本公開內(nèi)容涉及向儲(chǔ)存介質(zhì)寫入經(jīng)選擇的數(shù)據(jù)。
【背景技術(shù)】
[0002]數(shù)據(jù)儲(chǔ)存系統(tǒng)為主機(jī)系統(tǒng)的數(shù)據(jù)提供儲(chǔ)存。將數(shù)據(jù)分組以用于儲(chǔ)存在被稱為邏輯塊的預(yù)定大小的單元(其被寫入到儲(chǔ)存介質(zhì))中。當(dāng)向儲(chǔ)存介質(zhì)寫入數(shù)據(jù)的邏輯塊時(shí)(例如,在固態(tài)驅(qū)動(dòng)器(SSD)或混合驅(qū)動(dòng)器中),數(shù)據(jù)可以被寫入由多個(gè)邏輯塊構(gòu)成的較大的單元(例如邏輯頁面(L頁面))中。有時(shí),在跨越儲(chǔ)存介質(zhì)中的若干邏輯頁面的大量邏輯塊中寫入相同的新數(shù)據(jù)、或者僅向包括在儲(chǔ)存介質(zhì)中的邏輯頁面中的邏輯塊的其中某些邏輯塊寫入新的不同的數(shù)據(jù)變得有利。
【附圖說明】
[0003]通過參照附圖描述示例實(shí)施例,本發(fā)明構(gòu)思的方面和特征將變得更加清晰,在附圖中:
[0004]圖1是根據(jù)本發(fā)明構(gòu)思的示例實(shí)施例,例示了用于在大量邏輯塊中寫入相同的新數(shù)據(jù)的數(shù)據(jù)儲(chǔ)存裝置的框圖;
[0005]圖2是根據(jù)本發(fā)明構(gòu)思的示例實(shí)施例,例示了用于實(shí)現(xiàn)寫相同操作(write-sameoperat1n)的方法的流程圖;
[0006]圖3是根據(jù)本發(fā)明構(gòu)思的示例實(shí)施例,例示了用于實(shí)現(xiàn)跳寫操作(skip-writeoperat1n)的數(shù)據(jù)儲(chǔ)存裝置的框圖;
[0007]圖4是根據(jù)本發(fā)明構(gòu)思的示例實(shí)施例,例示了實(shí)現(xiàn)跳寫操作的方法的流程圖;
[0008]圖5A是根據(jù)本發(fā)明構(gòu)思的示例實(shí)施例,例示了寫掩碼的圖示;
[0009]圖5B是根據(jù)本發(fā)明構(gòu)思的示例實(shí)施例,例示了劃分成與包含在邏輯頁面中的邏輯塊的數(shù)量相對(duì)應(yīng)的部分的寫掩碼的圖示;以及
[0010]圖6是根據(jù)本發(fā)明構(gòu)思的示例實(shí)施例,例示了使用寫掩碼的對(duì)應(yīng)部分來合并第一邏輯頁面和第二邏輯頁面的方法的圖示。
【具體實(shí)施方式】
[0011 ] 盡管描述了某些實(shí)施例,但這些實(shí)施例僅通過示例的方式來呈現(xiàn),而并不旨在限制保護(hù)范圍。本文中所描述的方法和裝置可以以多種其它形式體現(xiàn)。此外,可以在不脫離保護(hù)范圍的情況下,以本文中所描述的示例方法和裝置的形式進(jìn)行各種省略、替代、以及變化。
[0012]概述
[0013]固態(tài)驅(qū)動(dòng)器(SSD)被用作用于計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)儲(chǔ)存系統(tǒng)。為了修改儲(chǔ)存在這種數(shù)據(jù)儲(chǔ)存系統(tǒng)的存儲(chǔ)位置中的數(shù)據(jù),數(shù)據(jù)可以被寫入由多個(gè)邏輯塊構(gòu)成的較大單元(例如邏輯頁面)中。例如,4千字節(jié)(kB)的邏輯頁面可以由8個(gè)512字節(jié)的邏輯塊組成。有時(shí),將相同的數(shù)據(jù)寫入一系列連續(xù)的邏輯塊中或?qū)σ幌盗羞B續(xù)的邏輯塊內(nèi)的非連續(xù)的邏輯塊中的數(shù)據(jù)進(jìn)行修改變得有利。
[0014]系統(tǒng)概述
[0015]本發(fā)明構(gòu)思的一個(gè)方面涉及將相同的數(shù)據(jù)寫入連續(xù)的多個(gè)邏輯塊中的寫相同裝置和方法。在寫相同裝置的一個(gè)示例實(shí)施例中,裝置接收包括起始邏輯塊地址(LBA)、LBA的范圍(即,指示數(shù)據(jù)將被寫入其中的邏輯塊的數(shù)量的值)、以及將寫入到邏輯塊中的數(shù)據(jù)塊的命令。
[0016]寫相同裝置操作為將接收到的數(shù)據(jù)塊寫入從起始LBA開始的LBA的指定范圍內(nèi)的每個(gè)邏輯塊中。如果第一寫操作并不在邏輯頁面邊界開始或者最后的寫操作并不在邏輯頁面邊界結(jié)束,則寫相同裝置執(zhí)行讀-改-寫操作(RMW),即時(shí)(on-the-fly)合并邏輯頁面塊并執(zhí)行適當(dāng)?shù)奈恍薷摹?br>[0017]本發(fā)明構(gòu)思的另一個(gè)方面涉及跳寫裝置和方法。在跳寫裝置的一個(gè)示例實(shí)施例中,該裝置接收包括起始邏輯塊地址、指示邏輯塊地址的范圍的值、以及寫掩碼的命令。通過基于寫掩碼的對(duì)應(yīng)部分將邏輯塊合并成邏輯頁面來生成輸出邏輯頁面。
[0018]跳寫裝置對(duì)如由寫掩碼確定的邏輯頁面進(jìn)行操作,將硬件優(yōu)化應(yīng)用于以前是軟件過程的部分。跳寫裝置即時(shí)合并邏輯頁面塊并基于寫掩碼來執(zhí)行適當(dāng)?shù)奈恍薷摹?br>[0019]寫相同
[0020]圖1是根據(jù)本發(fā)明構(gòu)思的示例實(shí)施例,例示了用于將相同的新數(shù)據(jù)寫入大量邏輯塊中的數(shù)據(jù)儲(chǔ)存裝置的框圖。參考圖1,在本發(fā)明構(gòu)思的一個(gè)示例實(shí)施例中,數(shù)據(jù)儲(chǔ)存裝置100可以包括命令輸入設(shè)備110、第一暫時(shí)性儲(chǔ)存裝置120、處理器130、第二暫時(shí)性儲(chǔ)存裝置140、循環(huán)冗余校驗(yàn)(CRC)生成電路150、比較電路160、寫電路170、計(jì)數(shù)器180、以及儲(chǔ)存介質(zhì)190。儲(chǔ)存介質(zhì)可以包括諸如固態(tài)半導(dǎo)體存儲(chǔ)器(例如,NAND)之類的非易失性存儲(chǔ)器。
[0021]數(shù)據(jù)儲(chǔ)存裝置100的元件可以集成在一個(gè)半導(dǎo)體芯片上或可以是集成到一個(gè)半導(dǎo)體封裝體中的分開的管芯。本領(lǐng)域普通技術(shù)人員將理解,其它配置是可能的并包括在本發(fā)明構(gòu)思的范圍內(nèi)。例如,由所描述的元件執(zhí)行的功能可以由其它元件來執(zhí)行,并且這些元件可以被組合成較少的元件和/或被細(xì)分成較大數(shù)量的元件。
[0022]在一個(gè)實(shí)施例中,命令輸入設(shè)備110接收包括起始邏輯塊地址(LBA)、指示LBA的范圍的值、以及將被寫入到LBA的范圍內(nèi)的邏輯塊中的數(shù)據(jù)的邏輯塊的命令。例如,可以從連接到數(shù)據(jù)儲(chǔ)存裝置100的主機(jī)接收命令。接收到的數(shù)據(jù)的邏輯塊被傳送到第一暫時(shí)性儲(chǔ)存裝置120。第一暫時(shí)性儲(chǔ)存裝置120對(duì)于處理器130可以是內(nèi)部的或外部的。處理器130對(duì)接收到的數(shù)據(jù)的邏輯塊進(jìn)行復(fù)制來生成邏輯頁面,其中,每個(gè)邏輯塊都具有與接收到的數(shù)據(jù)的邏輯塊相同的數(shù)據(jù)。例如,對(duì)于包含八個(gè)邏輯塊的邏輯頁面,處理器130將接收到的邏輯塊復(fù)制七次來生成包含八個(gè)邏輯塊(每個(gè)都包含相同數(shù)據(jù))的邏輯頁面。
[0023]每個(gè)邏輯塊例如可以包括但不限于,大約512字節(jié)的數(shù)據(jù)、大約1024字節(jié)的數(shù)據(jù)、大約2048字節(jié)的數(shù)據(jù)、或者大約4096字節(jié)的數(shù)據(jù)。在某些情形下,例如當(dāng)儲(chǔ)存介質(zhì)被擦除或者被重新格式化時(shí),接收到的數(shù)據(jù)的邏輯塊可以包含全一或全零,并且指示邏輯塊地址的范圍的值可以指示儲(chǔ)存介質(zhì)的邏輯塊地址中的所有地址。
[0024]處理器130使得所生成的邏輯頁面被傳送到第二暫時(shí)性儲(chǔ)存裝置140。第二暫時(shí)性儲(chǔ)存裝置140可以是包括在(RMff)模塊195中的隊(duì)列。處理器130可以使得第二暫時(shí)性儲(chǔ)存裝置140在傳送所生成的邏輯頁面之前就被預(yù)留(reserve)。如示出的,RMW模塊195可以另外包括CRC電路150和寫電路170。
[0025]在一個(gè)實(shí)施例中,CRC電路150基于每個(gè)邏輯塊中的至少數(shù)據(jù)和LBA來生成CRC值,并將準(zhǔn)備寫的邏輯塊數(shù)據(jù)的CRC與如接收到的邏輯塊數(shù)據(jù)的CRC進(jìn)行比較。如果CRC并不匹配,則將要寫的邏輯塊數(shù)據(jù)被標(biāo)記為無效。盡管在本公開內(nèi)容中的示例實(shí)施例提及了 CRC,但在某些實(shí)施例中使用其它錯(cuò)誤檢測(cè)機(jī)制(例如但不限于,校驗(yàn)和以及散列函數(shù)、等等)是可能的。
[0026]在一個(gè)實(shí)施例中,寫電路170向儲(chǔ)存介質(zhì)190輸出有效數(shù)據(jù)。計(jì)數(shù)器180對(duì)寫入儲(chǔ)存介質(zhì)190的邏輯塊的數(shù)量進(jìn)行計(jì)數(shù)并生成計(jì)數(shù)值。比較電路170將計(jì)數(shù)值與指示將要寫的LBA的范圍的值進(jìn)行比較。如果值是匹配的,則比較電路160生成指示寫相同操作完成的信號(hào)。在某些實(shí)施例中,寫相同操作從屬于其它(RMW)操作,因此寫電路將邏輯頁面從第二暫時(shí)性儲(chǔ)存裝置寫入儲(chǔ)存介質(zhì)中,作為對(duì)于涉及合并的其它寫操作的后臺(tái)任務(wù)。
[0027]在某些情形下,第一寫操作并不在邏輯頁面邊界開始和/或最后的寫操作并不在邏輯頁面邊界結(jié)束。在這些情形下,(RMW)模塊195執(zhí)行RMW操作來僅對(duì)于對(duì)應(yīng)的邏輯頁面修改針對(duì)寫掩碼所指定的邏輯塊。
[0028]在RMW操作中,所生成的邏輯頁面可以儲(chǔ)存在第二暫時(shí)性儲(chǔ)存裝置140中。由RMff模塊195從儲(chǔ)存介質(zhì)190獲取包括多個(gè)塊的第二邏輯頁面。經(jīng)由多個(gè)數(shù)據(jù)路徑和復(fù)用器來合并所生成的邏輯頁面和第二邏輯頁面的區(qū)段,以生成合并的輸出邏輯頁面。此外,通過在逐塊的基礎(chǔ)上對(duì)被合并以生成合并的輸出邏輯頁面的所生成的邏輯頁面和第二邏輯頁面塊的CRC數(shù)據(jù)進(jìn)行計(jì)算和累加,來生成對(duì)于合并的輸出邏輯頁面的CRC。
[0029]在正在生成合并的輸出邏輯頁面時(shí),將所生成的邏輯頁面和第二邏輯頁面中的至少一個(gè)的塊重新構(gòu)建成校驗(yàn)數(shù)據(jù)邏輯頁面?;蛘?,在正在生成合并的輸出邏輯頁面時(shí),將所生成的邏輯頁面和第二邏輯頁面兩者都重新構(gòu)建成校驗(yàn)數(shù)據(jù)邏輯頁面。
[0030]在逐塊的基礎(chǔ)上針對(duì)校驗(yàn)數(shù)據(jù)邏輯頁面來計(jì)算和累加CRC,并且在包括與所生成的邏輯頁面和第二邏輯頁面的塊相對(duì)應(yīng)的塊的至少一個(gè)校驗(yàn)數(shù)據(jù)邏輯頁面上執(zhí)行錯(cuò)誤校驗(yàn),來驗(yàn)證合并的