記憶體系統
本發明的實施形態係關於記憶體系統。
公知有可非揮發性記憶資料的NAND型快閃記憶體。
實施形態係使記憶體系統的動作高速化。
實施形態的記憶體系統,係包含半導體記憶裝置與記憶體控制器。記憶體控制器,係控制半導體記憶裝置與外部的主機機器之間的資料傳送,具有指令緩衝區與描述符緩衝區。記憶體控制器,係將從外部接收之第1指令儲存於前述指令緩衝區,依據所儲存的前述第1指令,從前述主機機器提取第1描述符,將提取的前述第1描述符,儲存於前述描述符緩衝區,將從外部接收之第2指令儲存於前述指令緩衝區,從前述描述符緩衝區捨棄未使用之前述第1描述符的一部分,依據所儲存的前述第2指令,從前述主機機器提取第2描述符,於儲存已捨棄之前述第1描述符的一部分的位址,儲存所提取之前述第2描述符。
以下,針對實施形態參照圖面進行說明。實施形態係例示用以具體化發明之技術思想的裝置及方法。圖面為模式圖或概念性者,各圖面的尺寸及比率等不一定與現實者相同。於本說明書中,"連接"係表示電性連接,不排除中間存在其他元件。
再者,於以下說明中,針對具有大略相同之功能及構造的構成要素,附加相同符號。構成參照符號的文字之後的數字,係根據具有相同文字的參照符號以參照,且為了區別具有相同的構造的要素彼此所使用。同樣地,構成參照符號的數字之後的文字,係根據具有相同數字的參照符號以參照,且為了區別具有相同的構造的要素彼此所使用。在沒有必要相互區別包含相同文字或數字的參照符號所示之要素時,該等要素根據分別僅包含文字或數字的參照符號以參照。
[實施形態]
以下,針對實施形態的記憶體系統1進行說明。
[1] 構造
[1-1] 記憶體系統1的整體構造
圖1係揭示實施形態的記憶體系統1的構造例。實施形態的記憶體系統1係例如SSD(Solid State Drive),可非揮發性保持資料。實施形態的記憶體系統1係與外部的主機機器2進行通訊,可因應來自主機機器2的命令,執行各種動作。實施形態的記憶體系統1係例如包含半導體記憶裝置10A及10B、DRAM(Dynamic Random Access Memory)20、以及記憶體控制器30。
半導體記憶裝置10A及10B個別係非揮發性記憶資料的NAND型快閃記憶體。包含於記憶體系統1之半導體記憶裝置10的個數可設計成任意個數。關於半導體記憶裝置10的詳細構造,於後敘述。
DRAM20係作記憶體控制器30的記憶區域所使用之揮發性記憶體。DRAM20係例如暫時性記憶從主機機器2接收之已寫入資料。DRAM20係內藏於記憶體控制器30或主機機器2等亦可。
記憶體控制器30係例如SoC(System on Chip),回應來自主機機器2的命令,對於半導體記憶裝置10A及10B個別命令讀取、寫入、及消除等。又,記憶體控制器30係例如包含CPU(Central Processing Unit)31、RAM(Random Access Memory)32、主機介面電路(主機I/F)33、NAND介面電路(NAND I/F)34、及DRAM介面電路(DRAM I/F)35。
CPU31係控制記憶體控制器30整體動作的中央運算處理裝置。CPU31係例如回應從主機機器2接收之寫入命令,發派寫入指令。又,CPU31係執行例如寫入平衡等,用以管理半導體記憶裝置10的記憶體空間的各種處理。
RAM32係例如SRAM(Static Random Access Memory)等的揮發性記憶體。RAM32係使用來作為CPU31的作業區域,例如保持用以管理半導體記憶裝置10的韌體及各種管理表等。
主機介面電路33係透過主機匯流排與主機機器2連接,發送接收記憶體控制器30及主機機器2之間的資料、指令、及位址的電路。主機介面電路33係可支援例如SATA(Serial Advanced Technology Attachment)、SAS (Serial Attached SCSI)、PCIe(PCI Express)(註冊商標)、NVMe(NVM Express)等的通訊介面規格。關於主機介面電路33的詳細構造,於後敘述。
NAND介面電路34係發送接收記憶體控制器30及半導體記憶裝置10之間的資料、指令、及位址的電路。NAND介面電路34係支援NAND介面規格。
DRAM介面電路35係連接於DRAM20,進行記憶體控制器30與DRAM20之間的通訊的電路。DRAM介面電路35係支援DRAM介面規格。
連接於以上所說明之記憶體系統1的主機機器2,係包含例如提交佇列SQ、描述符記憶體DM、及傳送區域TA。
提交佇列SQ係能以所謂佇列的形式,保持主機機器2使記憶體系統1執行的動作的記憶部。描述符記憶體DM係保持藉由記憶體系統1所使用之複數描述符的記憶部。傳送區域TA係半導體記憶裝置10與主機機器2之間的資料的傳送所使用的暫時記憶區域。
[1-2] 半導體記憶裝置10的構造
圖2係揭示實施形態的記憶體系統1所包含之半導體記憶裝置10的構造例。半導體記憶裝置10係例如包含記憶體單元陣列11、指令暫存器12、位址暫存器13、序列器14、驅動器模組15、行解碼器模組16、以及感測放大器模組17。
記憶體單元陣列11係包含複數區塊BLK0~BLK(k-1) (k為1以上的整數)。區塊BLK係可非揮發性記憶資料之複數記憶體單元的集合,例如使用來作為資料的消除單位。又,於記憶體單元陣列11,設置有複數位元線及複數字元線。各記憶體單元係例如與1條位元線和1條字元線建立關聯。
指令暫存器12係保持半導體記憶裝置10從記憶體控制器30接收的指令CMD。指令CMD係例如包含使序列器14執行讀取動作、寫入動作、消除動作等的命令。
位址暫存器13係保持半導體記憶裝置10從記憶體控制器30接收的位址資訊ADD。位址資訊ADD係例如包含區塊位址BA、頁位址PA、及欄位址CA。例如,區塊位址BA、頁位址PA、及欄位址CA係分別使用於區塊BLK、字元線、及位元線的選擇。
序列器14係控制半導體記憶裝置10整體的動作。例如,序列器14係依據被指令暫存器12保持的指令CMD,控制驅動器模組15、行解碼器模組16、及感測放大器模組17等,執行讀取動作、寫入動作、消除動作等。
驅動器模組15係生成讀取動作、寫入動作、消除動作等中所使用的電壓。然後,驅動器模組15係例如依據位址暫存器13所保持的頁位址PA,對與所選擇之字元線對應的訊號線施加生成的電壓。
行解碼器模組16係依據位址暫存器13所保持的區塊位址BA,選擇所對應之記憶體單元陣列11的1個區塊BLK。然後,行解碼器模組16係例如將施加於與所選擇之字元線對應的訊號線的電壓,傳送至所選擇之區塊BLK內的被選擇之字元線。
感測放大器模組17係於寫入動作中,因應從記憶體控制器30接收的寫入資料DAT,對各位元線施加所希望的電壓。又,感測放大器模組17係於讀取動作中,依據位元線的電壓來判定記憶於記憶體單元的資料,將判定結果作為讀取資料DAT傳送至記憶體控制器30。
[1-3] 記憶體單元陣列11的電路構造
圖3係抽出記憶體單元陣列11所包含之複數區塊BLK中之1個區塊BLK,揭示實施形態的半導體記憶裝置10所包含之記憶體單元陣列11的電路構造之一例。區塊BLK係例如包含4個字串單元SU0~SU3。
各字串單元SU係包含分別與位元線BL0~BL(L-1)(L為1以上的整數)建立關聯之複數NAND字串NS。各NAND字串NS係例如包含記憶體單元電晶體MT0~MT7,以及選擇電晶體ST1及ST2。記憶體單元電晶體MT係包含控制閘極及電荷積存層,非揮發性保持資料。選擇電晶體ST1及ST2個別使用於各種動作時之字串單元SU的選擇。
於各NAND字串NS中,記憶體單元電晶體MT0~MT7係串聯連接。選擇電晶體ST1的汲極係連接於建立關聯的位元線BL,選擇電晶體ST1的源極係連接於串聯連接之記憶體單元電晶體MT0~MT7的一端。選擇電晶體ST2的汲極係連接於串聯連接之記憶體單元電晶體MT0~MT7的另一端。選擇電晶體ST2的源極連接於源極線SL。
於相同區塊BLK中,記憶體單元電晶體MT0~MT7的控制閘極分別共通連接於字元線WL0~WL7。字串單元SU0~SU3內的選擇電晶體ST1的閘極分別共通連接於選擇閘極線SGS0~SGS3。字串單元SU0~SU3內的選擇電晶體ST2的閘極分別共通連接於選擇閘極線SGS0~SGS3。
於以上所說明之記憶體單元陣列11的電路構造中,位元線BL係藉由各字串單元SU中被分派相同欄位址的NAND字串NS共有。源極線SL係例如在複數區塊BLK之間共有。
1個字串單元SU內連接於共通的字元線WL之複數記憶體單元電晶體MT的集合例如稱為格單元CU。例如,個別包含記憶1位元資料之記憶體單元電晶體MT的格單元CU的記憶容量界定為「1頁資料」。格單元CU係因應記憶體單元電晶體MT所記憶之資料的位元數,可具有2頁資料以上的記憶容量。
再者,實施形態的半導體記憶裝置10所包含之記憶體單元陣列11的電路構造,並不限定於以上所說明的構造。例如,各NAND字串NS包含之記憶體單元電晶體MT以及選擇電晶體ST1及ST2的個數可設計成任意個數。各區塊BLK所包含的字串單元SU的個數,可設定成任意個數。
[1-4] 主機介面電路33的構造
圖4係揭示實施形態的記憶體控制器30所包含之主機介面電路33的構造例。主機介面電路33係例如包含指令緩衝區40、描述符緩衝區41、快取記憶體42、及DMA(Direct Memory Access)控制器43。
指令緩衝區40係保持依據主機機器2的提交佇列SQ的指令。指令緩衝區40係例如包含緩衝區域CB0~CB(m-1) (m為以上的整數)。例如緩衝區域CB個別保持1個指令。記憶體系統1係依據被指令緩衝區40保持的指令,執行讀取動作、寫入動作、消除動作等。指令的大小係例如64byte。
描述符緩衝區41係保持依據被指令緩衝區40保持的指令的描述符。描述符緩衝區41係例如包含緩衝區域DB0~DB(n-1)(n為以上的整數)。例如緩衝區域DB個別保持1描述符。記憶體系統1係依據被描述符緩衝區41保持的描述符,將記憶體系統1及主機機器2之間的資料傳送所使用的記憶區域,分派至主機機器2的傳送區域TA內。
快取記憶體42係例如SRAM等的揮發性記憶體。快取記憶體42係例如使用來作為記憶體系統1與主機機器2之間的資料的傳送中之暫時性記憶區域。DMA控制器43係控制記憶體系統1及主機機器2之間的資料傳送。使用DMA控制器43的資料傳送,係不透過CPU31所致之控制來執行。
再者,實施形態的記憶體控制器30所包含之主機介面電路33的構造,並不限定於以上所說明的構造。例如,快取記憶體42或DMA控制器43係至少包含於記憶體控制器30內即可。又,省略DMA控制器43亦可。此時,記憶體控制器30及主機機器2之間的資料傳送藉由CPU31控制。
[2] 動作
[2-1] 記憶體系統1的動作執行序列
以下,使用圖5,針對實施形態的記憶體系統1的動作執行序列進行說明。圖5係揭示實施形態的記憶體系統1的動作執行序列之一例的流程圖。
與記憶體系統1執行之所定動作對應的至少1個指令儲存於提交佇列SQ時,主機機器2係將儲存指令的狀況通知記憶體系統1(步驟S10)。記憶體控制器30係被通知指令儲存於提交佇列SQ時,對主機機器2要求指令的傳送(步驟S11)。
被要求指令的傳送時,主機機器2將儲存於提交佇列SQ的指令傳送至記憶體控制器30(步驟S12)。記憶體控制器30係從主機機器2接收指令時,將該指令儲存於指令緩衝區40(步驟S13)。
接著,記憶體控制器30係因應必要,執行緩衝區解放動作(步驟S14)。步驟S14之緩衝區解放動作係例如在描述符緩衝區41的空位區域不足時執行。另一方面,描述符緩衝區41的空位區域足夠時,則跳過步驟S14之緩衝區解放動作。關於緩衝區解放動作,於後詳細敘述。
之後,記憶體控制器30係在步驟S13的處理中依據儲存於指令緩衝區40的指令,對主機機器2要求描述符的傳送(步驟S15)。記憶體控制器30係使用藉由緩衝區解放動作而空出的區域,提取與滿足所定條件之指令對應的描述符。也就是說,CPU31係將與滿足所定條件之指令對應的描述符,代替優先度低的描述符,儲存於描述符緩衝區41。被要求描述符的傳送時,主機機器2將儲存於描述符記憶體DM複數描述符中被記憶體控制器30要求的描述符,傳送至記憶體控制器30(步驟S16)。記憶體控制器30係從主機機器2接收描述符時,將該描述符儲存於描述符緩衝區41(步驟S17)。
然後,記憶體控制器30係執行依據儲存於描述符緩衝區41的描述符的動作(步驟S18)。於步驟S18中,記憶體控制器30係依據儲存於描述符緩衝區41的描述符,對主機機器2指示記憶體系統1及主機機器2之間的資料傳送所使用的記憶區域(傳送區域TA內的資料區域)的分派。
之後,記憶體控制器30係執行依據儲存於指令緩衝區40的指令與儲存於描述符緩衝區41的描述符的動作。換句話說,記憶體控制器30係使用根據儲存於描述符緩衝區41的描述符分派至傳送區域TA內的資料區域,執行依據儲存於指令緩衝區40的指令的動作(例如讀取動作、寫入動作等)(步驟S19)。
例如,於步驟S19中執行讀取動作時,記憶體控制器30係將從半導體記憶裝置10讀取出的資料,發送至對應儲存於描述符緩衝區41的描述符的傳送區域TA。於步驟S19中執行寫入動作時,記憶體控制器30係接收與儲存於描述符緩衝區41的描述符對應之傳送區域TA所保持的資料,使半導體記憶裝置10進行寫入。亦即,記憶體控制器30係中繼半導體記憶裝置10與主機機器2之間的資料傳送。
於以上所說明的動作執行序列中,記憶體控制器30係執行依據NVMe規格的動作時,資料傳送所使用之記憶區域的分派,使用PRP(Physical Region Page)或SGL(Scatter Gather List)。使用PRP及SGL任一方係依據被指令緩衝區40保持的指令來決定。以下,簡潔說明實施形態的記憶體系統1中,使用PRP時之動作列,與使用SGL時之動作序列的概要。
(使用PRP時之動作序列)
在PRP中,對於除了開頭與末端的描述符之一,一律分派相同大小的記憶區域。於使用PRP時之動作序列中,記憶體控制器30依據描述符分派給傳送區域TA之資料區域的大小,係例如一律指定為頁大小。圖6係揭示實施形態的記憶體系統1中使用PRP時之動作序列之一例的模式圖。圖6所示之"S12"及"S16"係分別對應使用圖5說明之步驟S12及S16的處理。
圖6之指令係包含指示PRP的使用的指令,與資料指標PRP1及PRP2。
再者,在PRP中,步驟S18的處理之前,資料指標PRP1所包含的描述符,從指令緩衝區40傳送至描述符緩衝區41。結果,描述符緩衝區41係儲存從指令緩衝區40傳送的PRP條目ENT0,與依據資料指標PRP2,從描述符記憶體DM傳送的PRP列表。
PRP條目及PRP列表係指定資料傳送所使用的記憶區域的描述符。PRP條目ENT0係包含分派給傳送區域TA的資料區域之開頭的位址資訊。PRP列表係包含分派給傳送區域TA的資料區域之接續的位址資訊。PRP列表係例如對應的指令之資料的傳送量在PRP條目ENT0中不足時使用。PRP列表係例如包含表示接續於PRP條目ENT0之位址資訊的PRP條目ENT1及ENT2。
然後,PRP條目ENT0、PRP條目ENT1及PRP條目ENT2係分別指定傳送區域TA的位址"A"、位址"B"、及位址"C"。於傳送區域TA,分派依據PRP條目ENT0之4KB的資料區域A、依據PRP條目ENT1之4KB的資料區域B、依據PRP條目ENT2之4KB的資料區域C。
再者,在以上的說明中,已針對PRP列表具有兩個PRP條目的狀況進行說明,但並不限定於此。PRP列表所包含的PRP條目的數量,可設定成任意數。PRP列表係在1個PRP列表中無法確保傳送區域TA所需的資料區域時,包含指定下個PRP列表的資訊亦可。
(使用SGL時之動作序列)
在SGL中,對於描述符之一,分派任意大小的記憶區域。於使用SGL時之動作序列中,記憶體控制器30依據描述符分派給傳送區域TA之資料區域的大小,可分別針對個別指定。圖7係揭示實施形態的記憶體系統1中使用SGL時之動作序列之一例的模式圖。圖7所示之"S12"及"S16"係分別對應使用圖5說明之步驟S12及S16的處理。
依據資料指標SGL1的描述符係包含SGL區段SEG0。SGL區段係指定資料傳送所使用之區域的描述符。SGL區段SEG0係包含分派給傳送區域TA的資料區域之開頭的位址資訊,與傳送區域TA中確保之資料長度的資訊(例如3KB)。SGL區段SEG0有包含表示下個SGL區段SEG1的資訊的狀況。
SGL區段SEG0包含表示下個SGL區段SEG1的資訊時,記憶體控制器30係對主機機器2指示對應SGL區段SEG1之描述符的傳送。SGL區段SEG1係例如包含指定接續於SGL區段SEG0之位址的位址資訊、傳送區域TA中確保之資料長度的資訊(例如16KB)、表示下個SGL區段SEG2的資訊。
SGL區段SEG1包含表示下個SGL區段SEG2的資訊時,記憶體控制器30係對主機機器2指示對應SGL區段SEG2之描述符的傳送。SGL區段SEG2係例如包含指定接續於SGL區段SEG1之位址的位址資訊,與傳送區域TA中確保之資料長度的資訊(例如4KB)。記憶體控制器30所接收之SGL區段SEG1及SEG2個別儲存於描述符緩衝區41。
在圖7的範例中,SGL區段SEG2相當於與資料指標SGL1建立關聯之最後的SGL區段SEG。SGL區段SEG0、SRG1及SEG2係分別指定傳送區域TA的位址"A"、位址"B"、及位址"C"。於傳送區域TA,例如分派依據SGL區段SEG0之3KB的資料區域A、依據SGL區段SEG1之16KB的資料區域B、依據SGL區段SEG2之4KB的資料區域C。
再者,在以上的說明中,已針對依據資料指標SGL1傳送SGL區段SEG1,依據SGL區段SEG1傳送SGL區段SEG2的狀況進行例示,但並不限定於此。依據資料指標SGL1傳送之SGL區段SEG的數量,可依據該指令中所需之資料大小,設定為任意數量。
[2-2] 緩衝區解放動作
實施形態的記憶體系統1係有於指令緩衝區40儲存複數指令時,相對於對應該等指令的描述符的總數,描述符緩衝區41的容量不足的狀況。相對於此,實施形態的記憶體系統1可執行緩衝區解放動作。緩衝區解放動作係從已儲存於描述符緩衝區41的複數描述符中,捨棄滿足所定條件的描述符的動作。
圖8係揭示實施形態的記憶體系統1之緩衝區解放動作之一例的流程圖。再者,在以下的說明中,將依據儲存於指令緩衝區40的指令,儲存於描述符緩衝區41的描述符,稱為已提取的描述符。將依據儲存於描述符緩衝區41的描述符,傳送區域TA所確保的記憶區域,稱為已提取的資料區域。
記憶體控制器30係判斷描述符緩衝區41是否有空位(步驟S20)。
在判斷為描述符緩衝區41有空位時(步驟S20,YES),記憶體控制器30則結束緩衝區解放動作(END)。在判斷為描述符緩衝區41沒有空位時(步驟S20,NO),記憶體控制器30係確認最近接收之指令的屬性(步驟S21)。指令的屬性係包含後述之所定條件所使用的參數及資訊。
記憶體控制器30係判斷最近接收之指令的屬性是否滿足所定條件(步驟S22)。在判斷為最近接收之指令的屬性並未滿足所定條件時(步驟S22,NO),記憶體控制器30係待機到描述符緩衝區41有空位為止(步驟S23),結束緩衝區解放動作(END)。在判斷為最近接收之指令的屬性滿足所定條件時(步驟S22,YES),記憶體控制器30係捨棄已提取的描述符中優先度低之描述符的組(步驟S24)。關於步驟S22之所定條件,於後詳述。
圖9係揭示實施形態的記憶體系統1之完成處理之一例的流程圖。藉由步驟S19的處理,對應1個指令的動作完成的話,記憶體控制器30係執行完成處理。
記憶體控制器30係捨棄儲存於指令緩衝區40之動作已完成的指令(步驟S30)。
步驟S30的處理之後,記憶體控制器30係判斷儲存於指令緩衝區40之所有指令的處理是否已完成(步驟S31)。
於步驟S31的處理中,判斷為儲存於指令緩衝區40之所有指令的處理完成時(步驟S31,YES),記憶體控制器30則結束完成處理,轉移至閒置狀態(END)。
於步驟S31的處理中,判斷為儲存於指令緩衝區40之所有指令的處理未完成時(步驟S31,NO),記憶體控制器30係判斷儲存於指令緩衝區40的指令是否包含設為緩衝區解放動作的對象(步驟S32)。
於步驟S32的處理中,判斷為未包含設為緩衝區解放動作的對象的指令時(步驟S32,NO),記憶體控制器30係轉移至步驟S19的處理。
判斷為有包含設為緩衝區解放動作的對象的指令時(步驟S32,YES),記憶體控制器30則判斷描述符緩衝區41是否空出必要量(步驟S33)。也就是說,記憶體控制器30係判斷是否可將藉由緩衝區解放動作所捨棄之描述符相同的描述符,儲存於藉由最近的步驟S30的處理所形成之描述符緩衝區41的空位區域。
於步驟S33的處理中,判斷為描述符緩衝區41並未空出必要量時(步驟S33,NO),記憶體控制器30係轉移至步驟S19的處理。
於步驟S33的處理中,判斷為描述符緩衝區41有空出必要量時(步驟S33,YES),記憶體控制器30係提取與捨棄之描述符相同的描述符。具體來說,主機機器2依據記憶體控制器30的要求,從儲存於描述符記憶體DM複數描述符,將藉由該指令所指示之位址保持的描述符,再次傳送至記憶體控制器30。換句話說,主機機器2係將對應某指令而已傳送的描述符,再次傳送至記憶體控制器30。
如上所述,於實施形態的記憶體系統1中,對應成為緩衝區解放動作的對象之指令的描述符,可從主機機器2傳送複數次至記憶體控制器30。然後,記憶體控制器30係依序執行步驟S16之後的動作。之後,記憶體控制器30係於步驟S31的處理中,重複執行上述之動作到儲存於指令緩衝區40之所有指令的處理全部完成為止。
以下,針對步驟S22之所定條件的一例進行說明。作為步驟S22之所定條件,例如可舉出描述符數量、NLB (Number of Logical Blocks)、指令種別、優先度資訊。
(依據描述符數量的緩衝區解放動作)
首先,針對依據描述符數量的緩衝區解放動作進行說明。實施形態的記憶體系統1係執行依據描述符數量的緩衝區解放動作時,將已提取的描述符數量多的指令,作為緩衝區解放動作的對象。
圖10及圖11係揭示實施形態的記憶體系統1中,依據描述符數量的緩衝區解放動作之一例的模式圖。再者,在以下的說明所參照之相同的圖面中,為了便利說明,假設為描述符緩衝區41僅具有緩衝區域DB1~DB7。又,在圖10及圖11所示的一例中,適用PRP。
記憶體控制器30係藉由步驟S13的處理,依據儲存於指令緩衝區40的指令,提取描述符時,有描述符緩衝區41變成容量滿的狀況(步驟S20,NO)。在圖10(1)所示的範例中,對應指令CMD0的描述符CMD0_D0~CMD0_D4分別儲存於緩衝區域DB0~DB4,對應指令CMD1的描述符CMD1_D0~CMD1_D2分別儲存於緩衝區域DB5~DB7。又,各描述符的傳送量固定為4KB。
記憶體控制器30係接收指令CMD2時(圖10(2)),藉由步驟S21的處理,確認所接收之指令的屬性(在本範例中為描述符數量)。然後,記憶體控制器30係作為所定條件,例如確認依據指令CMD2的描述符數量,是否比對應之描述符數量最多的指令的描述符數量還少(步驟S22)。再者,於本處理中是否滿足所定條件,係至少依據描述符數量來判斷即可。
之後,記憶體控制器30係在滿足所定條件時(步驟S22,YES),藉由步驟S24的處理,捨棄對應已提取的描述符數量多的指令之描述符的一部分。在圖10(3)所示的範例中,儲存於緩衝區域DB3及DB4的指令CMD0之描述符的一部分即CMD0_D3及CMD_D4被捨棄。
接下來,記憶體控制器30係藉由步驟S15的處理,對主機機器2要求依據指令CMD2之描述符的傳送,主機機器2係藉由步驟S16的處理,將被要求的描述符,傳送至記憶體控制器30(圖10(4))。然後,記憶體控制器30係藉由步驟S17的處理,將對應指令CMD2的描述符CMD2_D0及CMD2_D1,分別儲存於緩衝區域DB3及DB4。接著,記憶體控制器30係藉由步驟S18的處理,對主機機器2指示對應描述符CMD2_D0及CMD2_D1的資料區域的分派。之後,記憶體控制器30係藉由步驟S19的處理,執行依據指令CMD2及描述符CMD2_D0~D1的動作,亦即使用根據描述符CMD2_D0及CMD2_D1分派至傳送區域TA內的資料區域,執行依據指令CMD2的動作(圖10(5))。
依據指令CMD2及描述符CMD2_D0~D1的動作完成時,記憶體控制器30係執行步驟S30的處理之動作的完成處理(圖11(6))。此時,儲存於緩衝區域DB3及DB4的指令CMD2之描述符CMD2_D0及CMD_D1被捨棄。藉此,描述符緩衝區41空出空位,故記憶體控制器30係提取與捨棄之描述符相同的描述符(圖11(7))。具體來說,記憶體控制器30係依據指令CMD0以及未被捨棄而留下之指令CMD0的描述符CMD0_D0~2,對於主機機器2再次要求CMD0_D3及CMD0_D4的傳送。換句話說,記憶體控制器30係從主機機器2提取與藉由緩衝區解放動作所捨棄之描述符的一部分相同的描述符。然後,將所接收的描述符CMD2_D3及CMD_D4,再儲存於緩衝區域DB3及DB4。之後,記憶體控制器30係開始依據指令CMD0及描述符CMD0_D0~4的動作,亦即使用根據描述符CMD0_D0~CMD0_D4分派至傳送區域TA內的資料區域,依據指令CMD0的動作的執行(圖11(8))。
再者,在以上的說明中,已針對藉由緩衝區解放動作所捨棄之描述符相同的描述符,儲存於在描述符緩衝區41內與捨棄前相同的位址的狀況進行例示,但並不限定於此。儲存與捨棄之描述符相同的描述符的位址,只要是描述符緩衝區41內的空位位址,設為任何位址亦可。
(依據NLB的緩衝區解放動作)
接者,針對依據NLB的緩衝區解放動作進行說明。NLB係表示藉由已提取的描述符所傳送的資料量。實施形態的記憶體系統1係執行依據NLB的緩衝區解放動作時,將已提取的描述符中NLB大的指令,作為緩衝區解放動作的對象。
圖12係揭示實施形態的記憶體系統1中,依據NLB的緩衝區解放動作之一例的模式圖。又,在圖12所示的一例中,適用SGL。記憶體控制器30係藉由步驟S13的處理,依據儲存於指令緩衝區40的指令,提取描述符時,有描述符緩衝區41變成容量滿的狀況(步驟S20,NO)。在圖12(1)所示範例中,描述符CMD0_D0~CMD0_D4個別的傳送量設定為1KB,描述符CMD1_D0~CMD1_D2的傳送量分別設定為32KB、4KB、4KB。
記憶體控制器30係接收指令CMD2時(圖12(2)),藉由步驟S21的處理,確認所接收之指令的屬性(在本範例中為NLB)。然後,記憶體控制器30係作為所定條件,例如確認依據指令CMD2的NLB,是否比對應之NLB最大的指令的NLB還小(步驟S22)。再者,於本處理中是否滿足所定條件,係至少依據NLB來判斷即可。
之後,記憶體控制器30係在滿足所定條件時(步驟S22,YES),藉由步驟S24的處理,捨棄對應NLB大的指令之描述符的一部分(緩衝區解放動作)。在圖12(3)所示的範例中,儲存於緩衝區域DB6及DB7的指令CMD1之描述符CMD1_D1及CMD1_D2被捨棄。
接下來,記憶體控制器30係藉由步驟S15的處理,對主機機器2要求依據指令CMD2之描述符的傳送,主機機器2係藉由步驟S16的處理,將被要求的描述符,傳送至記憶體控制器30(圖12(4))。然後,記憶體控制器30係藉由步驟S17的處理,將對應指令CMD2的描述符CMD2_D0及CMD2_D1,分別儲存於緩衝區域DB6及DB7。描述符CMD2_D0及CMD2_D1的資料傳送量分別設定為16KB、8KB,資料傳送量大於被捨棄的描述符。接著,記憶體控制器30係藉由步驟S18的處理,對主機機器2指示對應描述符CMD2_D0及CMD2_D1的資料區域的分派。之後,記憶體控制器30係藉由步驟S19的處理,執行依據指令CMD2及描述符CMD2_D0~D1的動作,亦即使用根據描述符CMD2_D0及CMD2_D1分派至傳送區域TA內的資料區域,執行依據指令CMD2的動作(圖12(5))。其他動作與依據描述符數量的緩衝區解放動作相同,故省略說明。
(依據指令種別的緩衝區解放動作)
接者,針對依據指令種別的緩衝區解放動作進行說明。指令種別係表示依據該指令所執行之動作的種類。例如指令種別係對應讀取動作、寫入動作等中任一動作。
實施形態的記憶體系統1係執行依據指令種別的緩衝區解放動作時,將已提取的描述符中依據與優先度低的指令種別對應之指令的描述符,作為緩衝區解放動作的對象。
圖13係揭示實施形態的記憶體系統1中,依據NLB的緩衝區解放動作之一例的模式圖。記憶體控制器30係藉由步驟S13的處理,依據儲存於指令緩衝區40的指令,提取描述符時,有描述符緩衝區41變成容量滿的狀況(步驟S20,NO)。在圖13(1)所示範例中,描述符CMD0_D0~CMD0_D4的指令種別設定為寫入(Write),描述符CMD1_D0~CMD1_D2的指令種別設定為讀取(Read)。又,寫入(Write)設定為優先度低,讀取(Read)設定為優先度高。
記憶體控制器30係接收指令CMD2時(圖13(2)),藉由步驟S21的處理,確認所接收之指令的屬性(在本範例中為指令種別)。然後,記憶體控制器30係作為所定條件,例如確認依據指令CMD2的指令種別的優先度,是否比已提取之指令COM0及COM1的指令種別還高(步驟S22)。再者,於本處理中是否滿足所定條件,係至少依據指令種別來判斷即可。
之後,記憶體控制器30係在滿足所定條件時(步驟S22,YES),藉由步驟S24的處理,記憶體控制器30係捨棄依據屬於優先度低之指令種別的指令所提取之描述符的一部分(緩衝區解放動作)。在圖10(3)所示的範例中,儲存於緩衝區域DB3及DB4的指令CMD0之描述符CMD0_D3及CMD_D4被捨棄。
接下來,記憶體控制器30係藉由步驟S15的處理,對主機機器2要求依據指令CMD2之描述符的傳送,主機機器2係藉由步驟S16的處理,將被要求的描述符,傳送至記憶體控制器30(圖13(4))。然後,記憶體控制器30係藉由步驟S17的處理,將對應指令CMD2的描述符CMD2_D0及CMD2_D1,分別儲存於緩衝區域DB6及DB7。描述符CMD2_D0及CMD2_D1的指令種別設定為讀取。接著,記憶體控制器30係藉由步驟S18的處理,對主機機器2指示對應描述符CMD2_D0及CMD2_D1的資料區域的分派。之後,記憶體控制器30係藉由步驟S19的處理,執行依據指令CMD2及描述符CMD2_D0~D1的動作,亦即使用根據描述符CMD2_D0及CMD2_D1分派至傳送區域TA內的資料區域,執行依據指令CMD2的動作(圖13(5))。其他動作與依據描述符數量的緩衝區解放動作相同,故省略說明。
(依據優先度資訊的緩衝區解放動作)
接者,針對依據優先度資訊的緩衝區解放動作進行說明。作為優先度資訊,例如可利用寫入的優先度設定、資料的傳送方法、延遲資訊、Data Set Management之值等,所有的參數。
在此,針對優先度資訊之優先度的設定方法之一例進行說明。記憶體系統1有可藉由描述符緩衝區41保持分別對應複數指令CMD的複數組的描述符,進行對於複數半導體記憶裝置10的同步處理的狀況。然後,記憶體系統1係保持必要之描述符數量少的指令CMD,可進行同步處理的可能性,比保持必要之描述符數量多的指令CMD高。因此,作為優先度的設定方法,可考量將保持必要之描述符數量少的指令CMD的優先度,設定為高於保持必要之描述符數量多的指令CMD。
作為具體範例,針對資料的傳送方法使用來作為優先度資訊時之優先度的設定例簡潔說明。作為資料的傳送方法,可舉出序列式傳送與隨機傳送。然後,序列式傳送係指定之位址的數量少於隨機傳送,故描述符數量有少於隨機傳送的傾向。因此,作為優先度資訊使用資料的傳送方法時,例如序列式傳送的優先度設定為高(High),隨機傳送設定為低(Low)。
實施形態的記憶體系統1係執行依據優先度資訊的緩衝區解放動作時,將已提取的描述符中依據與優先度低的動作對應之指令的描述符,作為緩衝區解放動作的對象。
圖14係揭示實施形態的記憶體系統1中,依據優先度的緩衝區解放動作之一例的模式圖。記憶體控制器30係藉由步驟S13的處理,依據儲存於指令緩衝區40的指令,提取描述符時,有描述符緩衝區41變成容量滿的狀況(步驟S20,NO)。在圖14(1)所示範例中,描述符CMD0_D0~CMD0_D4的優先度設定為Low,描述符CMD1_D0~CMD1_D2的優先度設定為High。具體來說,例如優先度為Low的描述符CMD0_D0~CMD0_D4對應隨機傳送,優先度為High的描述符CMD1_D0~CMD1_D2對應序列式傳送。
之後,記憶體控制器30係接收指令CMD2時(圖14(2)),藉由步驟S21的處理,確認所接收之指令的屬性(在本範例中為優先度資訊)。然後,記憶體控制器30係作為所定條件,例如確認依據指令CMD2的優先度資訊的優先度,是否比已提取之指令COM0及COM1還高(步驟S22)。再者,於本處理中是否滿足所定條件,係至少依據優先度資訊來判斷即可。
之後,記憶體控制器30係在滿足所定條件時(步驟S22,YES),藉由步驟S24的處理,捨棄對應優先度為Low的指令之描述符的一部分。在圖14(3)所示的範例中,儲存於緩衝區域DB3及DB4的指令CMD0之描述符CMD0_D3及CMD_D4被捨棄。
接下來,記憶體控制器30係對主機機器2要求依據指令CMD2之描述符的傳送(圖14(4))。然後,記憶體控制器30係將對應指令CMD2的描述符CMD2_D0及CMD2_D1,分別儲存於緩衝區域DB6及DB7。描述符CMD2_D0及CMD2_D1設定為優先度High,優先度設定為高於被捨棄的描述符。接著,記憶體控制器30係執行依據指令CMD2及描述符CMD2_D0~D1的動作,亦即使用根據描述符CMD2_D0及CMD2_D1分派至傳送區域TA內的資料區域,執行依據指令CMD2的動作(圖14(5))。其他動作與依據描述符數量的緩衝區解放動作相同,故省略說明。
[3] 實施形態的效果
依據實施形態的記憶體系統1,可使記憶體系統1的動作高速化。以下,針對實施形態的記憶體系統1的詳細效果進行說明。
SSD等的記憶體系統1係執行依據主機機器2的指示的動作時,對主機機器2要求依據所執行之指令的描述符的傳送。然後,主機機器2將被記憶體系統1要求的描述符,傳送至記憶體系統。在NVMe中,作為此種依據指令的描述符的傳送方式,使用PRP及SGL。PRP及SGL個別可進行Scatter/Gather傳送,故構成描述符鏈。
對應PRP及SGL的描述符被儲存於主機機器2的描述符記憶體DM。因此,記憶體控制器30係在進行主機機器2與記憶體系統1之間的資料傳送之前,需要進行儲存於描述符記憶體DM之描述符的提取(預先提取)。記憶體控制器30係將預先提取的資料,儲存於例如描述符緩衝區41。
對於描述符緩衝區41,例如對於各指令分派固定區域。此時,容易進行描述符緩衝區41之區域的管理,可同時執行的指令數量常為一定(可儲存於描述符緩衝區41的最大指令數量)。
另一方面,於需要比固定區域還大的區域的指令,對於1個指令分派複數固定區域。此時,所分派的固定區域內可能發生不被使用的區域。又,於分派複數固定區域的指令中,對應之描述符的傳送大小較小時,儲存於描述符緩衝區41的描述符所致之合計的傳送大小會變小。也就是說,記憶體系統1及主機機器2之間的資料傳送量變少,有記憶體系統1的傳送性能降低之虞。又,需要複數固定區域的指令變多的話,記憶體系統1可進行預先提取的指令的數量會變少。此時,於記憶體系統1可能會有無法預先提取可同步處理的指令的可能性。
又,對於描述符緩衝區41,可考量對應各指令分派必要的區域。此時,對於描述符緩衝區41的使用區域較大的指令,分派適切的區域。因此,記憶體控制器30係能以空位區域變少之方式管理描述符緩衝區41的區域,可抑制預先提取的指令的數量變少之狀況。另一方面,也考量描述符緩衝區41的使用區域較大,且無法同步處理的複數指令被預先提取的狀況。此時,記憶體系統1及主機機器2之間的資料傳送量變少,有記憶體系統1的傳送性能降低之虞。
為了對於以上的記憶體分派方法,抑制傳送性能的降低來說,可考量增加描述符緩衝區41的容量。然而,增加描述符緩衝區41的容量的狀況中,需要大的電路面積,記憶體系統1的製造成本可能變高。
因此,實施形態的記憶體系統1係動態解放描述符緩衝區41,執行再分派。換句話說,實施形態的記憶體系統1係藉由暫時捨棄優先度低之動作的描述符,優先處理優先度高的動作。
具體來說,實施形態的記憶體系統1係接收新的指令,在描述符緩衝區41的空位足夠時,執行描述符的提取。然後,實施形態的記憶體系統1係接收新的指令,在描述符緩衝區41的空位不足時,從描述符緩衝區41暫時捨棄未使用的描述符,將該區域使用於新的指令之描述符的提取。
於實施形態的記憶體系統1中,儲存於描述符緩衝區41的描述符之再分派的運算法,可使用各種方法。例如,實施形態的記憶體系統1係描述符數量、NLB、指令種別、優先度資訊等,執行描述符緩衝區41的緩衝區解放動作。
例如,讀取動作係內部延遲較大,故可對於複數半導體記憶裝置10同步執行的指令數量也比寫入動作還多。因此,新的指令對應讀取動作,已提取的描述符包含對應寫入動作者時,捨棄對應寫入動作之已提取的描述符,提取對應讀取動作的描述符是有效方法。
結果,實施形態的記憶體系統1係可柔軟地最佳化傳送性能,在有限的記憶體容量下有效率地導引出傳送性能。亦即,實施形態的記憶體系統1可提升複數半導體記憶裝置10的利用效率。再者,實施形態的記憶體系統1於利用其他演算法的狀況中,也可獲得相同的效果。各演算法係適當客製化,可提升對於使用者來說最佳的性能。
[4] 變形例等
實施形態的記憶體系統,係包含半導體記憶裝置與記憶體控制器。記憶體控制器,係控制半導體記憶裝置與外部的主機機器之間的資料傳送,具有指令緩衝區與描述符緩衝區。記憶體控制器,係將從外部接收之第1指令儲存於前述指令緩衝區,依據所儲存的前述第1指令,從前述主機機器提取第1描述符,將提取的前述第1描述符,儲存於前述描述符緩衝區,將從外部接收之第2指令儲存於前述指令緩衝區,從前述描述符緩衝區捨棄未使用之前述第1描述符的一部分,依據所儲存的前述第2指令,從前述主機機器提取第2描述符,於儲存已捨棄之前述第1描述符的一部分的位址,儲存所提取之前述第2描述符。藉此,依據實施形態的記憶體系統可高速化動作。
在實施形態的記憶體系統1的動作說明中,已針對在描述符緩衝區41變成容量滿的狀態下記憶體控制器30重新接收1個指令的狀況進行例示,但並不限定於此。記憶體控制器30係可適當接收指令緩衝區40有空位之容量的新的指令。然後,記憶體控制器30可適當執行緩衝區解放動作。
在實施形態的記憶體系統1的動作說明中,作為一例已舉出NVMe,但是,於其他介面規格中,也可同樣地動作。實施形態的記憶體系統1,係至少執行記憶體控制器30捨棄已提取且對應之動作未完成的描述符,再次提取儲存於描述符記憶體DM的相同位址的描述符的動作即可。
於本說明書中"相同描述符"係表示描述符記憶體DM中儲存於相同位址的描述符。於實施形態中,緩衝區解放動作之描述符緩衝區41的緩衝區域的解放大小,可適當變更。實施形態的記憶體系統1係至少解放緩衝區域DB之可提取對應新的指令的描述符的容量即可。
在實施形態中,作為緩衝區解放動作的演算法已說明複數種類,但是,該等演算法組合亦可。記憶體系統1係例如考慮描述符數輛與NLB雙方,執行緩衝區解放動作亦可。關於其他演算法也可同樣地組合,使用3種以上的運算法,複合性決定緩衝區解放動作之優先度亦可。
在實施形態中,已針對藉由緩衝區解放動作,捨棄動作未完成之描述符的狀況進行例示,但並不限定於此。例如,記憶體控制器30係於緩衝區解放動作的對象即儲存描述符的位址,覆寫依據新的指令的描述符亦可。此時,被覆寫的描述符係與實施形態中所說明之各緩衝區解放動作中被捨棄之描述符同樣地處理。又,記憶體控制器30係從主機機器2再次提取被覆寫的描述符時,執行描述符的覆寫亦可。於此種狀況中,記憶體系統也可獲得相同的效果。
已說明本發明的幾個實施形態,但是,該等實施形態係作為範例而提示者,並無意圖限定發明的範圍。該等新穎的實施形態係可利用其他各種形態來實施,在不脫離發明之要旨的範圍內,可進行各種省略、置換、變更。該等實施形態及其變形係包含於變形的範圍及要旨,並且包含於申請專利範圍所記載之發明與其均等的範圍。
[相關申請案]
本申請案係享受以日本專利申請案2019-50674號(申請日:2019年3月19日)為基礎申請案的優先權。本申請案係藉由參照該基礎申請案,包含基礎申請案的所有內容。
1:記憶體系統
2:主機機器
10:半導體記憶裝置
11:記憶體單元陣列
12:指令暫存器
13:位址暫存器
14:序列器
15:驅動器模組
16:行解碼器模組
17:感測放大器模組
30:記憶體控制器
31:CPU
32:RAM
33:主機介面電路
34:NAND介面電路
35:DRAM介面電路
40:指令緩衝區
41:描述符緩衝區
42:快取記憶體
43:DMA控制器
BLK:區塊
SU:字串單元
BL:位元線
WL:字元線
SGD:選擇閘極線
SGS:選擇閘極線
MT:記憶體單元電晶體
ST1:選擇電晶體
ST2:選擇電晶體
[圖1] 揭示實施形態的記憶體系統的區塊圖。
[圖2] 揭示實施形態的記憶體系統具備之半導體記憶裝置的區塊圖。
[圖3] 揭示實施形態的記憶體系統具備之半導體記憶裝置所包含之記憶體單元陣列的電路圖。
[圖4] 揭示實施形態的記憶體系統具備之記憶體控制器所包含之主機介面電路的區塊圖。
[圖5] 揭示實施形態的記憶體系統的動作執行序列之一例的流程圖。
[圖6] 揭示實施形態的記憶體系統中使用PRP (Physical Region Page)時之動作序列之一例的模式圖。
[圖7] 揭示實施形態的記憶體系統中使用SGL(Scatter Gather List)時之動作序列之一例的模式圖。
[圖8] 揭示實施形態的記憶體系統之緩衝區解放動作之一例的流程圖。
[圖9] 揭示實施形態的記憶體系統之緩衝區解放動作之一例的流程圖。
[圖10] 揭示實施形態的記憶體系統的依據描述符數量的緩衝區解放動作之一例的模式圖。
[圖11] 揭示實施形態的記憶體系統中,依據描述符數量的緩衝區解放動作之一例的模式圖。
[圖12] 揭示實施形態的記憶體系統中,依據NLB (Number of Logical Blocks)的緩衝區解放動作之一例的模式圖。
[圖13] 揭示實施形態的記憶體系統中,依據指令種別的緩衝區解放動作之一例的模式圖。
[圖14] 揭示實施形態的記憶體系統中,依據優先度的緩衝區解放動作之一例的模式圖。