間。分配塊的大小可以由NVSM控制模塊27確定、設(shè)置和/或調(diào)整。下面 進(jìn)一步描述分配塊、分配塊大小和分配塊的傳送。
[0067] 主機(jī)控制模塊16經(jīng)由主機(jī)接口 18向NVSM驅(qū)動(dòng)器14傳輸主機(jī)數(shù)據(jù)并且從NVSM 驅(qū)動(dòng)器14接收主機(jī)數(shù)據(jù)。這可以包括讀、寫(或編程)和擦除訪問事件。主機(jī)12可以基 于接收的數(shù)據(jù)對(duì)象生成HDS和/或從NVSM驅(qū)動(dòng)器14請(qǐng)求主機(jī)數(shù)據(jù)扇區(qū)(HDS)。HDS可以 是從主機(jī)12向NVSM驅(qū)動(dòng)器14傳輸?shù)淖钚¢L度數(shù)據(jù)元素。HDS在接口 18、20的相應(yīng)端口 之間傳輸。例如,接口 18、20可以是串行高級(jí)技術(shù)附件(SATA)接口、小型計(jì)算機(jī)系統(tǒng)接口 (SCSI)、串行附接的SCSI (SAS)、光纖通道接口、通用串行總線(USB)接口等。
[0068] 主機(jī)控制模塊16還可以生成諸如數(shù)據(jù)編程信號(hào)、數(shù)據(jù)讀信號(hào)、數(shù)據(jù)擦除信號(hào)等之 類的訪問請(qǐng)求信號(hào)30。訪問請(qǐng)求信號(hào)30可以由NVSM控制模塊27和/或由NVSM驅(qū)動(dòng)器 14的其它模塊經(jīng)由NVSM驅(qū)動(dòng)器接口 20接收。NVSM控制模塊27基于訪問請(qǐng)求信號(hào)30來 控制對(duì)NVSM 28的訪問。NVSM驅(qū)動(dòng)器14經(jīng)由NVSM驅(qū)動(dòng)器接口 20接收HDS。NVSM控制模 塊27可以基于訪問請(qǐng)求信號(hào)30訪問和/或請(qǐng)求來自NVSM 28的驅(qū)動(dòng)器數(shù)據(jù)扇區(qū)(DDS)。 [0069] 接收路徑22包括壓縮模塊40、加密模塊42、緩沖器管理模塊44、驅(qū)動(dòng)器數(shù)據(jù)扇區(qū) (DDS)生成模塊46、錯(cuò)誤糾正碼(ECC)模塊48、接口管理模塊50和NVSM 28。傳輸路徑24 包括NVSM 28、接口管理模塊50、ECC模塊48、HDS生成模塊52、緩沖器管理模塊44、解密模 塊54和解壓縮模塊56。緩沖器管理模塊44以及DDS生成模塊46和HDS生成模塊52可以 組合以形成單個(gè)模塊。接口管理控制系統(tǒng)26包括NVSM控制模塊27、命令管理模塊60、ECC 模塊48和接口管理模塊50。NVSM驅(qū)動(dòng)器14的模塊可以稱為NVSM存儲(chǔ)系統(tǒng)。
[0070] NVSM驅(qū)動(dòng)器接口 20可以從主機(jī)接口 18接收單個(gè)數(shù)據(jù)流或者多個(gè)并發(fā)并行數(shù)據(jù) 流。數(shù)據(jù)流可被傳送向壓縮模塊40。當(dāng)主機(jī)接口 18和NVSM接口 20是例如SAS接口時(shí),可 以接收多個(gè)并發(fā)并行數(shù)據(jù)流。
[0071] 當(dāng)可能時(shí)并且在HDS由緩沖器管理模塊44接收之前,壓縮模塊40壓縮從主機(jī)接 口 18接收的HDS。壓縮針對(duì)與從主機(jī)接口 18接收的HDS相同長度的HDS執(zhí)行。壓縮模塊 40可以使用有損和/或無損壓縮方法。有損壓縮和解壓縮在壓縮和解壓縮之后提供與原始 數(shù)據(jù)接近但不相同的數(shù)據(jù)。繼壓縮和解壓縮后,無損壓縮和解壓縮提供與原始數(shù)據(jù)相同的 數(shù)據(jù)重構(gòu)。無損數(shù)據(jù)壓縮包括檢測(cè)重復(fù)比特模式并且移除冗余。
[0072] 當(dāng)可能時(shí),壓縮模塊40壓縮從主機(jī)12接收的主機(jī)數(shù)據(jù)扇區(qū)(HDS)。當(dāng)被接收時(shí), HDS可以是未壓縮的、部分壓縮的、和/或完全壓縮的。HDS可以是從主機(jī)12向NVSM驅(qū)動(dòng) 器14傳輸?shù)淖钚¢L度數(shù)據(jù)元素。某些HDS可能不是可壓縮的,例如當(dāng)使用無損壓縮并且對(duì) 應(yīng)數(shù)據(jù)模式不包括冗余時(shí)。
[0073] 加密模塊42對(duì)壓縮的HDS進(jìn)行加密。加密模塊42加密從壓縮模塊40接收的數(shù) 據(jù)。加密可以包括一個(gè)或多個(gè)公共和私有密鑰。加密還可以包括特定于NVSM驅(qū)動(dòng)器14或 者NVSM驅(qū)動(dòng)器14的部件的一個(gè)或多個(gè)密鑰,諸如特定于NVSM控制模塊27和/或NVSM 28 的密鑰。
[0074] 緩沖器管理模塊44將HDS存儲(chǔ)在緩沖器70中,并且向DDS生成模塊46轉(zhuǎn)發(fā)HDS。 緩沖器70可以包括諸如RAM、動(dòng)態(tài)RAM(DRAM)和/或靜態(tài)RAM(SRAM)之類的易失性存儲(chǔ)器。 在存儲(chǔ)在NVSM 28中之前,緩沖器管理模塊44可收集并儲(chǔ)存一個(gè)或多個(gè)HDS。
[0075] 緩沖器管理模塊44可以:當(dāng)可能時(shí)將從加密模塊42接收的DDS轉(zhuǎn)換為HDS ;從在 緩沖器管理模塊44下游(在緩沖器管理模塊44和NVSM 28之間)的部件接收HDS ;和/或 向解壓縮模塊56傳送HDS。DDS中的每個(gè)DDS可以大于或等于HDS的大小。解壓縮的HDS 被傳輸向主機(jī)12。緩沖器管理模塊44可以以預(yù)定順序組合和存儲(chǔ)壓縮和/或加密的HDS, 而不管接收HDS的順序。
[0076] 例如,HDS可以以數(shù)字順序來接收,或者可以以不同順序來接收。按序列接收的 HDS可以存儲(chǔ)在不同HDS寄存器72中,以允許以數(shù)字順序或預(yù)定順序?qū)DS重新排序。因 而,HDS寄存器72可以用于提供針對(duì)相應(yīng)DDS的HDS集74 (示出HDS寄存器I-N和HDS集 1-N)。在HDS寄存器被充滿和/或滿足預(yù)定DDS長度限制時(shí),HDS集可以從緩沖器管理模 塊44被釋放,并且被傳遞向DDS生成模塊46。例如,當(dāng)沒有其它HDS可以和/或要與當(dāng)前 DDS的其它HDS組合時(shí),滿足預(yù)定DDS長度限制。
[0077] 基于HDS寄存器72中組合和/或存儲(chǔ)的一個(gè)或多個(gè)HDS,以及基于HDS和DDS信 息,DDS生成模塊46生成DDS。在存儲(chǔ)在NVSM 28中之前,DDS生成模塊46將HDS轉(zhuǎn)換為 DDS??梢詮木彌_器管理模塊44接收HDS和DDS信息。HDS和DDS信息可以包括HDS信息 比特以及諸如DDS長度、DDS比特槽可用性等之類的DDS信息。
[0078] DDS生成模塊46可以生成每個(gè)DDS以具有相同的比特長度。滋擾(nuisance)數(shù) 據(jù)指的是向一個(gè)或多個(gè)HDS添加使得生成的DDS具有預(yù)定比特長度的數(shù)據(jù)。壓縮的HDS可 以具有不同的比特長度。不同量的滋擾數(shù)據(jù)被添加,以組合壓縮的HDS,以生成相等長度的 DDS。NVSM控制模塊27通過添加滋擾數(shù)據(jù)來防止HDS在兩個(gè)DDS之間被分割。代替存儲(chǔ) HDS與兩個(gè)或更多其它HDS的部分,滋擾數(shù)據(jù)被附接。例如,滋擾數(shù)據(jù)可以包括全0、全1、空 狀態(tài)、和/或冗余數(shù)據(jù),以最小化NVSM控制模塊27的編程和/或處理。
[0079] ECC模塊48和接口管理模塊50可以基于來自命令管理模塊60的參數(shù)信號(hào)進(jìn)行操 作。基于從NVSM控制模塊27接收的命令和/或工作描述符84 (統(tǒng)稱為描述符),命令管理 模塊60生成第一參數(shù)信號(hào)80和第二參數(shù)信號(hào)82。
[0080] 在數(shù)據(jù)傳送事件期間,NVSM控制模塊27或者NVSM驅(qū)動(dòng)器14的其它模塊之一接 收訪問請(qǐng)求信號(hào)30。NVSM控制模塊27可以包括或訪問第一非易失性存儲(chǔ)器90。第一非易 失性存儲(chǔ)器90存儲(chǔ)由NVSM控制模塊27執(zhí)行的固件92。在執(zhí)行固件92中,NVSM控制模塊 27基于訪問請(qǐng)求信號(hào)30生成描述符84。描述符84被存儲(chǔ)在第二非易失性存儲(chǔ)器94中。 第二非易失性存儲(chǔ)器94可以是命令管理模塊60的部分,或者如示出的與命令管理模塊60 分離。第二非易失性存儲(chǔ)器94可以存儲(chǔ)描述符84和參數(shù)信息96,參數(shù)信息96用于解譯從 NVSM控制模塊27接收的描述符84,以確定參數(shù)和生成參數(shù)信號(hào)80、82,如下面描述的。
[0081] 在生成描述符84中,NVSM控制模塊27可以確定:基于訪問請(qǐng)求信號(hào)的數(shù)據(jù)的分 配塊的大小、使數(shù)據(jù)塊的大小與其它參數(shù)相關(guān)的表、使用的應(yīng)用等。數(shù)據(jù)的分配塊的大小可 以稱為分配單元(AU)大小或分配塊大小。例如,使用的應(yīng)用可以指示主機(jī)的類型、NVSM驅(qū) 動(dòng)器的類型、以及主機(jī)和NVSM驅(qū)動(dòng)器的速度。NVSM控制模塊27生成描述符84以指示分配 塊大小。描述符84可以均包括:分配塊大小;緩沖器寄存器位置;NVSM地址;NVSM通道標(biāo) 識(shí)符(ID) ;NVSM設(shè)備標(biāo)識(shí)符(例如,存儲(chǔ)器芯片ID);數(shù)據(jù)格式;要傳送的數(shù)據(jù)量;操作比特 的類型(例如,讀、編程和/或擦除比特)等。
[0082] 分配塊大小中的每個(gè)可以基于頁、基于子頁、或基于非頁。當(dāng)分配塊大小等于一 個(gè)或多個(gè)數(shù)據(jù)頁的大小時(shí),分配塊大小基于頁。作為示例,單個(gè)數(shù)據(jù)頁可以等于8千字節(jié) (KB)。其它示例頁大小是4KB、16KB和32KB。當(dāng)兩個(gè)或更多數(shù)據(jù)分配塊的大小等于1個(gè)數(shù) 據(jù)頁的大小時(shí),分配塊大小基于子頁。當(dāng)分配塊大小不是1頁的整數(shù)倍并且分配塊大小的 整數(shù)倍不等于1個(gè)數(shù)據(jù)頁的大小時(shí),分配塊大小基于非頁。分配塊可以包括任何數(shù)據(jù)量。
[0083] 數(shù)據(jù)分配塊可以向NVSM 28的通道100傳送和從NVSM 28的通道100傳送。一個(gè) 或多個(gè)數(shù)據(jù)分配塊("數(shù)據(jù)塊")的傳送可以稱為數(shù)據(jù)傳送事件。例如,數(shù)據(jù)傳送事件還可 以發(fā)生在與通道串聯(lián)和/或通信的設(shè)備之間。示例設(shè)備和/或模塊之間的示例數(shù)據(jù)傳送事 件示出在圖7、圖14和圖15中。
[0084] 基于描述符84,命令管理模塊60可以確定:分配塊大小、ECC糾正功率(每數(shù)據(jù) 塊糾正的比特錯(cuò)誤的數(shù)目);緩沖器寄存器位置;NVSM地址;數(shù)據(jù)格式;要傳送的數(shù)據(jù)量; 獨(dú)立磁盤冗余陣列(RAID)操作;讀、編程和/或擦除比特等。命令管理模塊60執(zhí)行描述符 84,和/或基于描述符84來生成第一參數(shù)信號(hào)80和第二參數(shù)信號(hào)82。
[0085] 第一參數(shù)信號(hào)80可以包括:ECC糾正功率比特;緩沖器寄存器位置比特;NVSM地 址比特;數(shù)據(jù)格式比特;要傳送的數(shù)據(jù)量比特;要傳送的數(shù)據(jù)塊數(shù)目比特;獨(dú)立磁盤冗余陣 列(RAID)操作比特;讀、編程和/或擦除比特等。第二參數(shù)信號(hào)82可以包括:NVSM地址比 特;分配塊大小比特;要傳送的數(shù)據(jù)塊數(shù)目比特;讀、編程和/或擦除比特等。
[0086] ECC模塊48執(zhí)行錯(cuò)誤糾正,并且編碼和解碼從NVSM 28接收的DDS和數(shù)據(jù)?;?第一參數(shù)信號(hào)80, ECC模塊48向接口管理模塊50傳送DDS并且從接口管理模塊50接收 DDS。基于第二參數(shù)信號(hào)82,接口管理模塊50訪問NVSM 28。接口管理模塊50向NVSM 28 傳輸指令信號(hào)102,以控制對(duì)NVSM 28的訪問?;诤?或根據(jù)指令信號(hào)102, NVSM 28經(jīng) 由通道100向接口管理模塊50傳輸數(shù)據(jù)信號(hào)和/或從接口管理模塊50接收數(shù)據(jù)信號(hào)。例 如,指令信號(hào)102可以包括循環(huán)類型信號(hào)CT、時(shí)序選通信號(hào)DQx、以及狀態(tài)寄存器比特信號(hào) SR[6],它們的示例示出在圖4至圖6和圖8至圖13中。
[0087] ECC模塊48和/或其它ECC模塊可以被連接:在壓縮模塊40和加密模塊42之間 以編碼經(jīng)壓縮的HDS ;在加密模塊42和緩沖器管理模塊44之間以編碼經(jīng)加密的HDS ;在緩 沖器管理模塊44和DDS生成模塊46之間;和/或如示出的在DDS生成模塊46和NVSM 28 之間。然后DDS被存儲(chǔ)在NVSM 28中。
[0088] ECC模塊48可以使用一個(gè)或多個(gè)ECC方法來防止當(dāng)向NVSM 28寫數(shù)據(jù)和從NVSM 28讀數(shù)據(jù)時(shí)的錯(cuò)誤。奇偶校驗(yàn)比特可以被生成并且在被存儲(chǔ)在NVSM 28中之前添加到DDS, 和/或可以與DDS分開存儲(chǔ)在NVSM 28中。
[0089] 接口管理模塊50可以將DDS存儲(chǔ)在NVSM 28中的物理塊地址(PBA)處。DDS的 PBA可以存儲(chǔ)在一個(gè)或多個(gè)位置中,并且由接口管理模塊50在訪問NVSM 28中的DDS的存 儲(chǔ)位置時(shí)獲取。例如,PBA可以存儲(chǔ)在第一非易失性存儲(chǔ)器90和/或NVSM 28中。第一非 易失性存儲(chǔ)器90或NVSM 28可以存儲(chǔ)PBA的映射表104,這可以基于分配塊大小。例如, 與分配塊相關(guān)聯(lián)的一個(gè)或多個(gè)PBA可以被標(biāo)識(shí)在映射表104中。這不同于基于數(shù)據(jù)頁的大 小來存儲(chǔ)PBA。分配塊大小可以基于或者獨(dú)立于數(shù)據(jù)頁的大小來設(shè)置。由于固件92基于 分配塊大小來存儲(chǔ)PBA,分配塊大小的改變不要求固件指令的改變,而是簡單的分配塊大小 設(shè)置調(diào)整。映射表104可以使邏輯塊地址(LBA)與PBA相關(guān)。映射表104可以由接收路徑 22和傳輸路徑24中的模塊中的任何模塊來訪問。
[0090] 在將DDS轉(zhuǎn)發(fā)向ECC模塊48之前,接口管理模塊50可以訪問NVSM 28中的DDS。 基于訪問命令信號(hào)和/或與DDS相關(guān)聯(lián)的奇偶校驗(yàn)信息,ECC模塊48可以解碼從NVSM 28 訪問的DDS。訪問命令信號(hào)可以由NVSM控制模塊27和/或命令管理模塊60生成,并且包 括第一參數(shù)信號(hào)80。訪問命令信號(hào)可以包括一個(gè)或多個(gè)PBA。訪問命令信號(hào)可以由NVSM 控制模塊27生成,并且基于LBA和/或從主機(jī)12接收的訪問請(qǐng)求信號(hào)?;诶鐝木彌_ 器管理模塊44接收的數(shù)據(jù)請(qǐng)求信號(hào),HDS生成模塊52從ECC模塊48訪問或接收DDS。
[0091] HDS生成模塊52和/或緩沖器管理模塊44將接收的DDS分成HDS?;趶腅CC 模塊48接收的經(jīng)解密的DDS,HDS生成模塊52生成一個(gè)或多個(gè)HDS?;贖DS標(biāo)識(shí)信息和 /或數(shù)據(jù)請(qǐng)求信號(hào),HDS生成模塊52生成HDS。數(shù)據(jù)請(qǐng)求信號(hào)可以包括一個(gè)或多個(gè)LBA。解 密模塊54解密來自ECC模塊48的經(jīng)解碼的DDS。加密模塊42所使用的密鑰可以由解密模 塊54共享、訪問和/或生成。
[0092] 雖然接收路徑22和傳輸路徑24的模塊以特定順序示出,但是它們可以以不同順 序重新布置。例如,加密模塊42可以位于壓縮模塊40的上游。換言之,加密模塊42可以 連接在NVSM驅(qū)動(dòng)器接口 20和壓縮模塊40之間。又例如,解密模塊54可以連接在NVSM驅(qū) 動(dòng)器接口 20和解壓縮模塊56之間。
[0093] 以下的圖2至圖11圖示NVSM存儲(chǔ)系統(tǒng)10的實(shí)施方式的其它示例。
[0094] 圖2示出接口管理控制系統(tǒng)26的部分120,其包括ECC模塊48、接口管理模塊50 和NVSM 28。ECC模塊48包括編碼器122和解碼器124。編碼器122編碼DDS,并且將經(jīng)編 碼的DDS以數(shù)據(jù)分配塊的形式轉(zhuǎn)發(fā)向接口管理模塊50。編碼器122可以組合DDS的整數(shù)倍, 以形成數(shù)據(jù)的分配塊。解碼器124解碼來自接口管理模塊50的數(shù)據(jù)分配塊,以生成DDS。
[0095] 對(duì)于示出的示例,接口管理模塊50包括第一系列FIFO寄存器126和第二系列 FIFO寄存器128。第一系列FIFO寄存器126與編程事件相關(guān)聯(lián),并且用于緩沖從ECC模塊 48向NVSM 28傳送的數(shù)據(jù)。第二系列FIFO寄存器128與讀事件相關(guān)聯(lián),并且用于緩沖從 NVSM 28向ECC模塊48傳送的數(shù)據(jù)。雖然FIFO寄存器系列被示出用于編碼器122和解碼 器124中的每個(gè),但是接口管理模塊50可以包括由編碼器122和解碼器124共享的單個(gè)系 列的FIFO寄存器。第一 FIFO寄存器126和第二FIFO寄存器128可以包括例如SRAM或者 其它適合存儲(chǔ)器設(shè)備。
[0096] FIFO寄存器126、128中的每個(gè)FIFO寄存器的大小可以大于或等于NVSM控制模塊 27設(shè)置的分配塊大小。FIFO寄存器126、128中的每個(gè)FIFO寄存器的大小可以大于、等于 或小于數(shù)據(jù)頁的大小,因?yàn)榉峙鋲K大小可以大于、等于或小于數(shù)據(jù)頁的大小。大小等于數(shù)據(jù) 頁的大小的FIFO寄存器的示例示出在圖7中。大小小于數(shù)據(jù)頁的大小的FIFO寄存器的示 例示出在圖14中。
[0097] 接口管理模塊50通過通道IOO1 ,與NVSM 28通信。FIFO寄存器126、128中的每 個(gè)FIFO寄存器與通道IOO1 N中的相應(yīng)通道相關(guān)聯(lián)。在數(shù)據(jù)被存儲(chǔ)在NVSM 28中之前和/ 或在數(shù)據(jù)被傳送向緩沖器管理模塊44 (示出在圖1中)之前,F(xiàn)IFO寄存器126、128臨時(shí)存 儲(chǔ)數(shù)據(jù)。NVSM 28可以包括用于通道IOO1 ,中的每個(gè)通道的緩沖器130。FIFO寄存器126、 128和/或緩沖器130可以用于平衡在編碼器122和NVSM 28之前和/或在解碼器124和 NVSM 28之間的不同帶寬(或速度)。
[0098] ECC模塊48的帶寬可以不同于NVSM 28的帶寬。編碼器122和解碼器124的速度 可以快于通道IOO1N中的每個(gè)通道的速度。例如,編碼器122和解碼器124中的每個(gè)的速 度可以是通道IOO1。中的每個(gè)通道的速度的8-16倍快。由于例如通道IOO1N中的一個(gè)或多 個(gè)通道中的數(shù)據(jù)流"瓶頸"或延遲(這可以是由于接口管理模塊50和NVSM 28的操作),也 可以導(dǎo)致速度差異。FIFO寄存器126、128和緩沖器130幫助平衡掉速度差異。編碼器122 的速度可以被設(shè)置為使通道IOO1N的操作保持在峰值操作速度。解碼器124的速度可以被 設(shè)置為防止第二組FIFO寄存器128填滿,并且使通道IOO1 ,的輸出保持在峰值操作速度。
[0099] 在以下的圖3至圖6和圖8至圖13中,示出多個(gè)時(shí)序圖。時(shí)序圖包括可以從圖1 的接口管理模塊50向NVSM 28傳輸?shù)亩鄠€(gè)指令信號(hào)。指令信號(hào)102包括循環(huán)類型信號(hào)C